From e63345f53196b39f6068684016b000a370d07fa5 Mon Sep 17 00:00:00 2001 From: Jan Range Date: Sat, 22 Jun 2024 17:53:00 +0200 Subject: [PATCH 001/172] remove old workflows --- .github/workflows/build.yml | 34 -------------------------- .github/workflows/python-publish.yml | 36 ---------------------------- .github/workflows/stale.yml | 22 ----------------- 3 files changed, 92 deletions(-) delete mode 100644 .github/workflows/build.yml delete mode 100644 .github/workflows/python-publish.yml delete mode 100644 .github/workflows/stale.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index 0b32e23a..00000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: Build and Test - -on: [push] - -jobs: - build: - runs-on: ubuntu-latest - strategy: - max-parallel: 4 - matrix: - python-version: ['3.7', '3.8', '3.9', '3.10'] - - steps: - - name: Checkout - uses: actions/checkout@v2 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v1 - with: - python-version: ${{ matrix.python-version }} - - name: Install dependencies - run: | - python3 -m pip install --upgrade pip - pip3 install python-copasi - pip3 install -e .[test,dataverse] - - name: Test with pytest - run: | - python3 -m pytest - - name: Lint with flake8 - run: | - pip install flake8 - # stop the build if there are Python syntax errors or undefined names - flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics - # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide - flake8 . --count --exit-zero --max-complexity=13 --max-line-length=127 --statistics diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml deleted file mode 100644 index bc1a4f66..00000000 --- a/.github/workflows/python-publish.yml +++ /dev/null @@ -1,36 +0,0 @@ -# This workflow will upload a Python Package using Twine when a release is created -# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries - -# This workflow uses actions that are not certified by GitHub. -# They are provided by a third-party and are governed by -# separate terms of service, privacy policy, and support -# documentation. - -name: Upload Python Package - -on: - release: - types: [published] - -jobs: - deploy: - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - name: Set up Python - uses: actions/setup-python@v2 - with: - python-version: '3.9' - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install build - - name: Build package - run: python -m build - - name: Publish package - uses: pypa/gh-action-pypi-publish@27b31702a0e7fc50959f5ad993c78deac1bdfc29 - with: - user: __token__ - password: ${{ secrets.PYPI_API_TOKEN }} diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml deleted file mode 100644 index 246c34d3..00000000 --- a/.github/workflows/stale.yml +++ /dev/null @@ -1,22 +0,0 @@ -name: Close inactive issues -on: - schedule: - - cron: "30 1 * * *" - -jobs: - close-issues: - runs-on: ubuntu-latest - permissions: - issues: write - pull-requests: write - steps: - - uses: actions/stale@v3 - with: - days-before-issue-stale: 30 - days-before-issue-close: 14 - stale-issue-label: "stale" - stale-issue-message: "This issue is stale because it has been open for 30 days with no activity." - close-issue-message: "This issue was closed because it has been inactive for 14 days since being marked as stale." - days-before-pr-stale: -1 - days-before-pr-close: -1 - repo-token: ${{ secrets.GITHUB_TOKEN }} From 71db8a1d765c8d819cef810952fee3bc9a3cc2ba Mon Sep 17 00:00:00 2001 From: Jan Range Date: Sat, 22 Jun 2024 17:53:37 +0200 Subject: [PATCH 002/172] fix spelling --- docs/_examples/01_KineticModeling_PySCeS.ipynb | 14 +++++++------- docs/_examples/01_KineticModeling_PySCeS.rst | 18 +++++++++--------- docs/_getstarted/01_BasicUsage.ipynb | 12 ++++++------ docs/_getstarted/01_BasicUsage.rst | 16 ++++++++-------- docs/_getstarted/02_Validation.ipynb | 4 ++-- docs/_getstarted/02_Validation.rst | 4 ++-- docs/_getstarted/03_Visualisation.ipynb | 8 ++++---- docs/_getstarted/04_UploadToDataverse.ipynb | 2 +- docs/_getstarted/04_UploadToDataverse.rst | 2 +- .../EnzymeML_Validation_Template.yaml | 6 +++--- .../EnzymeML_Validation_Template_Example.yaml | 6 +++--- examples/Basic example/CreateEnzymeML.ipynb | 12 ++++++------ examples/Dataverse/UploadToDataverse.ipynb | 2 +- examples/ThinLayers/COPASI/Untitled.ipynb | 6 +++--- examples/ThinLayers/TL_BioCatNet.py | 2 +- .../EnzymeML_Validation_Template.yaml | 6 +++--- .../EnzymeML_Validation_Template_Example.yaml | 6 +++--- examples/Validation/ValidateEnzymeML.ipynb | 4 ++-- examples/Visualisation/Visualisation.ipynb | 8 ++++---- 19 files changed, 69 insertions(+), 69 deletions(-) diff --git a/docs/_examples/01_KineticModeling_PySCeS.ipynb b/docs/_examples/01_KineticModeling_PySCeS.ipynb index 291de8df..49f3dbb6 100644 --- a/docs/_examples/01_KineticModeling_PySCeS.ipynb +++ b/docs/_examples/01_KineticModeling_PySCeS.ipynb @@ -7,7 +7,7 @@ "source": [ "# Modeling a reaction by mass action cascades using PySCeS\n", "\n", - "This notebook is part of the publication \"EnzymeML at Work\" from Lauterbach et al. 2022 and adds a given micro-kinetic model to an EnzymeML document. Prior to this, experimental data was collected using the EnzymeML spreadsheet and converted to EnzymeML. The following notebook adresses the following key procedures using PyEnzyme:\n", + "This notebook is part of the publication \"EnzymeML at Work\" from Lauterbach et al. 2022 and adds a given micro-kinetic model to an EnzymeML document. Prior to this, experimental data was collected using the EnzymeML spreadsheet and converted to EnzymeML. The following notebook addresses the following key procedures using PyEnzyme:\n", "\n", "- Editing existing species\n", "- Adding new species from scratch or by DB-fetch\n", @@ -196,7 +196,7 @@ "\n", "```s0 * vmax / (Km + s0)```\n", "\n", - "which requires an equation string for each model. This can become quite tedious and for models, where most reactions share the same rate law quite error prone if done manually. Hence, the ```createGenerator```-initializer of the ```KineticModel``` offers a convinient way to generalize models and ensure consistency as well as re-usability.\n", + "which requires an equation string for each model. This can become quite tedious and for models, where most reactions share the same rate law quite error prone if done manually. Hence, the ```createGenerator```-initializer of the ```KineticModel``` offers a convenient way to generalize models and ensure consistency as well as re-usability.\n", "\n", "
" ] @@ -208,9 +208,9 @@ "source": [ "#### Excursion: Setting up a model generator\n", "\n", - "In order to set up a model generator it requires a ```name```, an ```equation``` and an explicit description of the used parameters occuring in the equation. For instance, lets set up an ```Example-Model``` with equation ```param * substrate``` and parameter ```param``` for simplicity.\n", + "In order to set up a model generator it requires a ```name```, an ```equation``` and an explicit description of the used parameters occurring in the equation. For instance, lets set up an ```Example-Model``` with equation ```param * substrate``` and parameter ```param``` for simplicity.\n", "\n", - "The algorithm will detect parameters based on the keyword arguments passed to the generator. In addtion, these keyword arguments should include a dicitonary that can optionally be equipped with all prossible attributes the ```KineticParameter``` class can hold." + "The algorithm will detect parameters based on the keyword arguments passed to the generator. In addition, these keyword arguments should include a dictionary that can optionally be equipped with all prossible attributes the ```KineticParameter``` class can hold." ] }, { @@ -276,7 +276,7 @@ "source": [ "### Adding rate laws\n", "\n", - "As previously discussed, all rate laws will be set up as generator objects that are assigned to each reaction using the corrsponding educts/products. In addition, parameters that occur in more than one reaction, are defined as gobal parameters.\n", + "As previously discussed, all rate laws will be set up as generator objects that are assigned to each reaction using the corresponding educts/products. In addition, parameters that occur in more than one reaction, are defined as global parameters.\n", "\n", "Finally, after that has been done, all reactions will be added to the ```EnzymeMLDocument``` object and an overview generated to control the assignment using the ```printReactionSchemes``` method of the EnzymeML document." ] @@ -548,9 +548,9 @@ "\n", "Now that the EnzymeMLDocument has been adapted to the micro-kinetic model, it can be modeled and optimized using PySCeS and COPASI. Since both modeling package interfaces are an integral part of PyEnzyme, called Thin Layer, a simple call to the corresponding Thin Layer object is necessary.\n", "\n", - "But before optimization, it might be necessary to define initial values. Since manipulating the KineticParameter initial_values attributes inside the script that generates the EnzymeMLDocument can get quite tedious, PyEnzyme offers an external data structure from within initial values can be applied. This way, the EnzymeML document is only modifed at optimization and remains untouched until then.\n", + "But before optimization, it might be necessary to define initial values. Since manipulating the KineticParameter initial_values attributes inside the script that generates the EnzymeMLDocument can get quite tedious, PyEnzyme offers an external data structure from within initial values can be applied. This way, the EnzymeML document is only modified at optimization and remains untouched until then.\n", "\n", - "The initialization file is in the YAML format and contains all reactions and their parameters. In addtion, PyEnzyme offers a method to generate such a YAML file, which can be edited manually with the initial parameter values for the optimization." + "The initialization file is in the YAML format and contains all reactions and their parameters. In addition, PyEnzyme offers a method to generate such a YAML file, which can be edited manually with the initial parameter values for the optimization." ] }, { diff --git a/docs/_examples/01_KineticModeling_PySCeS.rst b/docs/_examples/01_KineticModeling_PySCeS.rst index efb10974..7fc4d208 100644 --- a/docs/_examples/01_KineticModeling_PySCeS.rst +++ b/docs/_examples/01_KineticModeling_PySCeS.rst @@ -5,7 +5,7 @@ This notebook is part of the publication “EnzymeML at Work” from Lauterbach et al. 2022 and adds a given micro-kinetic model to an EnzymeML document. Prior to this, experimental data was collected using the EnzymeML spreadsheet and converted to EnzymeML. The following -notebook adresses the following key procedures using PyEnzyme: +notebook addresses the following key procedures using PyEnzyme: - Editing existing species - Adding new species from scratch or by DB-fetch @@ -184,20 +184,20 @@ which requires an equation string for each model. This can become quite tedious and for models, where most reactions share the same rate law quite error prone if done manually. Hence, the ``createGenerator``-initializer of the ``KineticModel`` offers a -convinient way to generalize models and ensure consistency as well as +convenient way to generalize models and ensure consistency as well as re-usability. Excursion: Setting up a model generator ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ In order to set up a model generator it requires a ``name``, an -``equation`` and an explicit description of the used parameters occuring +``equation`` and an explicit description of the used parameters occurring in the equation. For instance, lets set up an ``Example-Model`` with equation ``param * substrate`` and parameter ``param`` for simplicity. The algorithm will detect parameters based on the keyword arguments -passed to the generator. In addtion, these keyword arguments should -include a dicitonary that can optionally be equipped with all prossible +passed to the generator. In addition, these keyword arguments should +include a dictionary that can optionally be equipped with all prossible attributes the ``KineticParameter`` class can hold. .. code:: ipython3 @@ -238,9 +238,9 @@ Adding rate laws ~~~~~~~~~~~~~~~~ As previously discussed, all rate laws will be set up as generator -objects that are assigned to each reaction using the corrsponding +objects that are assigned to each reaction using the corresponding educts/products. In addition, parameters that occur in more than one -reaction, are defined as gobal parameters. +reaction, are defined as global parameters. Finally, after that has been done, all reactions will be added to the ``EnzymeMLDocument`` object and an overview generated to control the @@ -446,11 +446,11 @@ But before optimization, it might be necessary to define initial values. Since manipulating the KineticParameter initial_values attributes inside the script that generates the EnzymeMLDocument can get quite tedious, PyEnzyme offers an external data structure from within initial values -can be applied. This way, the EnzymeML document is only modifed at +can be applied. This way, the EnzymeML document is only modified at optimization and remains untouched until then. The initialization file is in the YAML format and contains all reactions -and their parameters. In addtion, PyEnzyme offers a method to generate +and their parameters. In addition, PyEnzyme offers a method to generate such a YAML file, which can be edited manually with the initial parameter values for the optimization. diff --git a/docs/_getstarted/01_BasicUsage.ipynb b/docs/_getstarted/01_BasicUsage.ipynb index cf58a66b..1b9b28fc 100644 --- a/docs/_getstarted/01_BasicUsage.ipynb +++ b/docs/_getstarted/01_BasicUsage.ipynb @@ -340,9 +340,9 @@ "source": [ "## Documenting measurement setups\n", "\n", - "Now that the theoretical foundation of the experiment has been layed out, it is time to specify the setup of teh measurement. PyEnzyme offers a lab-like system to document such setups. Typically, experiments involve multiple runs with varying initial concentrations of every element that occurs in the reaction network or/and varying conditions such as temperature and pH. Hence, PyEnzyme builts on top of a **measurement** system, where each of these represent a 'run'.\n", + "Now that the theoretical foundation of the experiment has been laid out, it is time to specify the setup of the measurement. PyEnzyme offers a lab-like system to document such setups. Typically, experiments involve multiple runs with varying initial concentrations of every element that occurs in the reaction network or/and varying conditions such as temperature and pH. Hence, PyEnzyme builts on top of a **measurement** system, where each of these represent a 'run'.\n", "\n", - "In this example, the following setups will be tracked including changing inital concentrations and temperatures:\n", + "In this example, the following setups will be tracked including changing initial concentrations and temperatures:\n", "\n", "| Measurement Name | Species | Initial concentration | Unit | Temperature | pH |\n", "|------------------|-----------|-----------------------|-----------|-------------|-----|\n", @@ -588,7 +588,7 @@ "source": [ "## Saving and distributing an EnzymeML document\n", "\n", - "Finally, the experiment has been finished and meta- as well as raw-data been documented. In order to make the data exchangable, PyEnzyme offers several options for data export. First and foremost, the complete experiment can be exported to EnzymeML which is SBML compatible and thus accessible by SBML-based modeling tools (e.g. COPASI, PySCeS). Furthermore, in regard of the web, PyEnzyme offers a JSON export too.\n", + "Finally, the experiment has been finished and meta- as well as raw-data been documented. In order to make the data exchangeable, PyEnzyme offers several options for data export. First and foremost, the complete experiment can be exported to EnzymeML which is SBML compatible and thus accessible by SBML-based modeling tools (e.g. COPASI, PySCeS). Furthermore, in regard of the web, PyEnzyme offers a JSON export too.\n", "\n", "Apart from raw exports, PyEnzyme can also interface with the federated databases system Dataverse by providing a simple upload method that automatically uploads and processes the document contents to a Dataverse compatible format. Please note, the Dataverse must support the 'EnzymeML' metadatablock for a successful upload.\n" ] @@ -676,7 +676,7 @@ "\n", "**Tips and hints:**\n", "\n", - "- PyEnzyme stores a history in the document, which keeps track of what has been changed and added in the course of an experiment. This is done, to spot potential errors and facilitate teh documentation of an experiment's lifeline." + "- PyEnzyme stores a history in the document, which keeps track of what has been changed and added in the course of an experiment. This is done, to spot potential errors and facilitate the documentation of an experiment's lifeline." ] }, { @@ -732,7 +732,7 @@ "source": [ "#### Special case: From the EnzymeML spreadsheet template\n", "\n", - "Apart from programmatic creation of an EnzymeML document, PyEnzyme offers a way to convert the 'EnzymeML spreadhseet template' to an OMEX file. Since spreadsheets are the bread and butter of current lab documentation, the template widely covers teh data model and thus provides an easy access to EnzymeML's capabilities." + "Apart from programmatic creation of an EnzymeML document, PyEnzyme offers a way to convert the 'EnzymeML spreadsheet template' to an OMEX file. Since spreadsheets are the bread and butter of current lab documentation, the template widely covers the data model and thus provides an easy access to EnzymeML's capabilities." ] }, { @@ -754,7 +754,7 @@ "source": [ "#### Adding a kinetic model\n", "\n", - "Building on top of the previous section about loading an EnzymeML document, this example will demonstrate how to interact with an already created EnzymeML document using the OMEX loader. Since the purpose of an experiment is to generate data from a theory, modeling takes care of the interpretation of an experiment outcome. However, PyEnzyme and EnzymeML are no modeling platforms, but provides a convinient way to interface to such. Hence, this example will demonstrate how such an interfacing could look like.\n", + "Building on top of the previous section about loading an EnzymeML document, this example will demonstrate how to interact with an already created EnzymeML document using the OMEX loader. Since the purpose of an experiment is to generate data from a theory, modeling takes care of the interpretation of an experiment outcome. However, PyEnzyme and EnzymeML are no modeling platforms, but provides a convenient way to interface to such. Hence, this example will demonstrate how such an interfacing could look like.\n", "\n", "The enzyme-catalyzed reaction that has been reported in the course of this example obviously follows a simple Michaelis-Menten-Kinetic and thus will be reported as such. But first of all, the next part will demonstrate how measurement data can be exported to be used by a modeling framework/platform.\n", "\n", diff --git a/docs/_getstarted/01_BasicUsage.rst b/docs/_getstarted/01_BasicUsage.rst index b25e2eb8..dd484dcd 100644 --- a/docs/_getstarted/01_BasicUsage.rst +++ b/docs/_getstarted/01_BasicUsage.rst @@ -238,8 +238,8 @@ Adding the reaction to the document Documenting measurement setups ------------------------------ -Now that the theoretical foundation of the experiment has been layed -out, it is time to specify the setup of teh measurement. PyEnzyme offers +Now that the theoretical foundation of the experiment has been laid +out, it is time to specify the setup of the measurement. PyEnzyme offers a lab-like system to document such setups. Typically, experiments involve multiple runs with varying initial concentrations of every element that occurs in the reaction network or/and varying conditions @@ -247,7 +247,7 @@ such as temperature and pH. Hence, PyEnzyme builts on top of a **measurement** system, where each of these represent a ‘run’. In this example, the following setups will be tracked including changing -inital concentrations and temperatures: +initial concentrations and temperatures: +------------------+-----------+-----------------------+-----------+-------------+-----+ | Measurement Name | Species | Initial concentration | Unit | Temperature | pH | @@ -427,7 +427,7 @@ Saving and distributing an EnzymeML document -------------------------------------------- Finally, the experiment has been finished and meta- as well as raw-data -been documented. In order to make the data exchangable, PyEnzyme offers +been documented. In order to make the data exchangeable, PyEnzyme offers several options for data export. First and foremost, the complete experiment can be exported to EnzymeML which is SBML compatible and thus accessible by SBML-based modeling tools (e.g. COPASI, PySCeS). @@ -499,7 +499,7 @@ In addition, it is also possible to use the aforementioned JSON - PyEnzyme stores a history in the document, which keeps track of what has been changed and added in the course of an experiment. This is - done, to spot potential errors and facilitate teh documentation of an + done, to spot potential errors and facilitate the documentation of an experiment’s lifeline. .. code:: ipython3 @@ -544,9 +544,9 @@ Special case: From the EnzymeML spreadsheet template ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Apart from programmatic creation of an EnzymeML document, PyEnzyme -offers a way to convert the ‘EnzymeML spreadhseet template’ to an OMEX +offers a way to convert the ‘EnzymeML spreadsheet template’ to an OMEX file. Since spreadsheets are the bread and butter of current lab -documentation, the template widely covers teh data model and thus +documentation, the template widely covers the data model and thus provides an easy access to EnzymeML’s capabilities. .. code:: ipython3 @@ -563,7 +563,7 @@ document, this example will demonstrate how to interact with an already created EnzymeML document using the OMEX loader. Since the purpose of an experiment is to generate data from a theory, modeling takes care of the interpretation of an experiment outcome. However, PyEnzyme and EnzymeML -are no modeling platforms, but provides a convinient way to interface to +are no modeling platforms, but provides a convenient way to interface to such. Hence, this example will demonstrate how such an interfacing could look like. diff --git a/docs/_getstarted/02_Validation.ipynb b/docs/_getstarted/02_Validation.ipynb index 92cd2954..e3f9a57b 100644 --- a/docs/_getstarted/02_Validation.ipynb +++ b/docs/_getstarted/02_Validation.ipynb @@ -70,7 +70,7 @@ "metadata": {}, "source": [ "### Using an example spreadsheet\n", - "Since the blank validation YAML wont demonstrate all types of checks, we are going to use an example that has been provided in this directory and convert it to YAML." + "Since the blank validation YAML won't demonstrate all types of checks, we are going to use an example that has been provided in this directory and convert it to YAML." ] }, { @@ -94,7 +94,7 @@ "source": [ "### Performing validation\n", "\n", - "Once the YAML file is ready, validation can be done for an example `EnzymeMLDocument` found in this directory. The validation for this example will fail by intention and thus return a report taht will be shown here. Such a report is returned as `Dict` and can be inspected either manually or programmatically. This was done to allow automation workflows to utilize validation." + "Once the YAML file is ready, validation can be done for an example `EnzymeMLDocument` found in this directory. The validation for this example will fail by intention and thus return a report that will be shown here. Such a report is returned as `Dict` and can be inspected either manually or programmatically. This was done to allow automation workflows to utilize validation." ] }, { diff --git a/docs/_getstarted/02_Validation.rst b/docs/_getstarted/02_Validation.rst index 82a84c50..f1df2dac 100644 --- a/docs/_getstarted/02_Validation.rst +++ b/docs/_getstarted/02_Validation.rst @@ -57,7 +57,7 @@ is extended, the spreadsheet will be updated too. Using an example spreadsheet ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Since the blank validation YAML wont demonstrate all types of checks, we +Since the blank validation YAML won't demonstrate all types of checks, we are going to use an example that has been provided in this directory and convert it to YAML. @@ -74,7 +74,7 @@ Performing validation Once the YAML file is ready, validation can be done for an example ``EnzymeMLDocument`` found in this directory. The validation for this -example will fail by intention and thus return a report taht will be +example will fail by intention and thus return a report that will be shown here. Such a report is returned as ``Dict`` and can be inspected either manually or programmatically. This was done to allow automation workflows to utilize validation. diff --git a/docs/_getstarted/03_Visualisation.ipynb b/docs/_getstarted/03_Visualisation.ipynb index d291abde..fe7ea148 100644 --- a/docs/_getstarted/03_Visualisation.ipynb +++ b/docs/_getstarted/03_Visualisation.ipynb @@ -52,7 +52,7 @@ "outputs": [ { "data": { - "image/png": "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Y4ryikj/lE9E+qd8IjJwkWHc13xgLvCsmQHMBJ4ysxPxS6pmFaw7E9g2jGkTERERERE5IMNWcuWce945V++cm+Ocm4MfUL3MObcDuAW4yMziZjYXWAg8NlxpExEREREROVDl7Ir9t8DDwOFmtsXM3tfbus65FcBNwAvAncDlzrlcudImIiIiIiJSamWrFuicu7if5XO6TV8FXFWu9IiIiIiIiJTTsPYWKCIiIiIiMlYpuBIRERERESkBBVciIiIiIiIloOBKRERERESkBBRciYiIiIiIlICCKxERERERkRJQcCUiIiIiIlICCq5ERERERERKQMGViIiIiIhICSi4EhERERERKQEFVyIiIiIiIiWg4EpERERERKQEFFyJiIiIiIiUQNmCKzP7mZk1mNnygnnfMrOVZvacmf3RzMYXLPusma01s1Vmdna50iUiIiIiIlIO5Sy5ug44p9u8u4AjnXNHA6uBzwKY2RLgImBp8J6rzSxcxrSJiIiIiIiUVNmCK+fc/cCebvP+5pzLBpOPADOD8QuAG5xzKefcBmAtcGK50iYiIiIiIlJqI9nm6r3AHcH4DOClgmVbgnk9mNmlZvaEmT3R2NhY5iSKjF7KKyL9Uz4R6Z/yicjAjUhwZWafB7LAr/Oziqzmir3XOXetc26Zc25ZXV1duZIoMuopr4j0T/lEpH/KJyIDFxnuHZrZJcC5wBnOuXwAtQWYVbDaTGDbcKdNRERERERkqIa15MrMzgE+A5zvnGsrWHQLcJGZxc1sLrAQeGw40yYiIiIiInIgylZyZWa/BU4DJpvZFuBL+L0DxoG7zAzgEefcB51zK8zsJuAF/OqClzvncuVKm4iIiIiISKmVLbhyzl1cZPZP+1j/KuCqcqVHRERERESknEayt0AREREREZExQ8GViIiIiIhICSi4EhERERERKQEFVyIiIiIiIiWg4EpERERERKQEFFyJiIiIiIiUgIIrERERERGRElBwJSIiIiIiUgIKrkREREREREpAwZWIiIiIiEgJKLgSEREREREpAQVXIiIiIiIiJaDgSkREREREpATKFlyZ2c/MrMHMlhfMm2hmd5nZmmA4oWDZZ81srZmtMrOzy5UuERERERGRcihnydV1wDnd5l0J3O2cWwjcHUxjZkuAi4ClwXuuNrNwGdMmIiIiIiJSUmULrpxz9wN7us2+ALg+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\n", + "image/png": "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Y4ryikj/lE9E+qd8IjJwkWHc13xgLvCsmQHMBJ4ysxPxS6pmFaw7E9g2jGkTERERERE5IMNWcuWce945V++cm+Ocm4MfUL3MObcDuAW4yMziZjYXWAg8NlxpExEREREROVDl7Ir9t8DDwOFmtsXM3tfbus65FcBNwAvAncDlzrlcudImIiIiIiJSamWrFuicu7if5XO6TV8FXFWu9IiIiIiIiJTTsPYWKCIiIiIiMlYpuBIRERERESkBBVciIiIiIiIloOBKRERERESkBBRciYiIiIiIlICCKxERERERkRJQcCUiIiIiIlICCq5ERERERERKQMGViIiIiIhICSi4EhERERERKQEFVyIiIiIiIiWg4EpERERERKQEFFyJiIiIiIiUQNmCKzP7mZk1mNnygnnfMrOVZvacmf3RzMYXLPusma01s1Vmdna50iUiIiIiIlIO5Sy5ug44p9u8u4AjnXNHA6uBzwKY2RLgImBp8J6rzSxcxrSJiIiIiIiUVNmCK+fc/cCebvP+5pzLBpOPADOD8QuAG5xzKefcBmAtcGK50iYiIiIiIlJqI9nm6r3AHcH4DOClgmVbgnk9mNmlZvaEmT3R2NhY5iSKjF7KKyL9Uz4R6Z/yicjAjUhwZWafB7LAr/Oziqzmir3XOXetc26Zc25ZXV1duZIoMuopr4j0T/lEpH/KJyIDFxnuHZrZJcC5wBnOuXwAtQWYVbDaTGDbcKdNRERERERkqIa15MrMzgE+A5zvnGsrWHQLcJGZxc1sLrAQeGw40yYiIiIiInIgylZyZWa/BU4DJpvZFuBL+L0DxoG7zAzgEefcB51zK8zsJuAF/OqClzvncuVKm4iIiIiISKmVLbhyzl1cZPZP+1j/KuCqcqVHRERERESknEayt0AREREREZExQ8GViIiIiIhICSi4EhERERERKQEFVyIiIiIiIiWg4EpERERERKQEFFyJiIiIiIiUgIIrERERERGRElBwJSIiIiIiUgIKrkREREREREpAwZWIiIiIiEgJKLgSEREREREpAQVXIiIiIiIiJaDgSkREREREpATKFlyZ2c/MrMHMlhfMm2hmd5nZmmA4oWDZZ81srZmtMrOzy5UuERERERGRcihnydV1wDnd5l0J3O2cWwjcHUxjZkuAi4ClwXuuNrNwGdMmIiIiIiJSUmULrpxz9wN7us2+ALg+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\n", "text/plain": [ "
" ] @@ -111,7 +111,7 @@ " * @author Feross Aboukhadijeh \n", " * @license MIT\n", " */\n", - "\"use strict\";var e=t(\"base64-js\"),n=t(\"ieee754\");r.Buffer=a,r.SlowBuffer=function(t){+t!=t&&(t=0);return a.alloc(+t)},r.INSPECT_MAX_BYTES=50;function i(t){if(t>2147483647)throw new RangeError('The value \"'+t+'\" is invalid for option \"size\"');var e=new Uint8Array(t);return e.__proto__=a.prototype,e}function a(t,e,r){if(\"number\"==typeof t){if(\"string\"==typeof e)throw new TypeError('The \"string\" argument must be of type string. Received type number');return l(t)}return o(t,e,r)}function o(t,e,r){if(\"string\"==typeof t)return function(t,e){\"string\"==typeof e&&\"\"!==e||(e=\"utf8\");if(!a.isEncoding(e))throw new TypeError(\"Unknown encoding: \"+e);var r=0|f(t,e),n=i(r),o=n.write(t,e);o!==r&&(n=n.slice(0,o));return n}(t,e);if(ArrayBuffer.isView(t))return c(t);if(null==t)throw TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof t);if(B(t,ArrayBuffer)||t&&B(t.buffer,ArrayBuffer))return function(t,e,r){if(e<0||t.byteLength=2147483647)throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+2147483647..toString(16)+\" bytes\");return 0|t}function f(t,e){if(a.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||B(t,ArrayBuffer))return t.byteLength;if(\"string\"!=typeof t)throw new TypeError('The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);var r=t.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;for(var i=!1;;)switch(e){case\"ascii\":case\"latin1\":case\"binary\":return r;case\"utf8\":case\"utf-8\":return D(t).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*r;case\"hex\":return r>>>1;case\"base64\":return R(t).length;default:if(i)return n?-1:D(t).length;e=(\"\"+e).toLowerCase(),i=!0}}function h(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return\"\";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return\"\";if((r>>>=0)<=(e>>>=0))return\"\";for(t||(t=\"utf8\");;)switch(t){case\"hex\":return M(this,e,r);case\"utf8\":case\"utf-8\":return T(this,e,r);case\"ascii\":return k(this,e,r);case\"latin1\":case\"binary\":return A(this,e,r);case\"base64\":return w(this,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return S(this,e,r);default:if(n)throw new TypeError(\"Unknown encoding: \"+t);t=(t+\"\").toLowerCase(),n=!0}}function p(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function d(t,e,r,n,i){if(0===t.length)return-1;if(\"string\"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),N(r=+r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if(\"string\"==typeof e&&(e=a.from(e,n)),a.isBuffer(e))return 0===e.length?-1:g(t,e,r,n,i);if(\"number\"==typeof e)return e&=255,\"function\"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):g(t,[e],r,n,i);throw new TypeError(\"val must be string, number or Buffer\")}function g(t,e,r,n,i){var a,o=1,s=t.length,l=e.length;if(void 0!==n&&(\"ucs2\"===(n=String(n).toLowerCase())||\"ucs-2\"===n||\"utf16le\"===n||\"utf-16le\"===n)){if(t.length<2||e.length<2)return-1;o=2,s/=2,l/=2,r/=2}function c(t,e){return 1===o?t[e]:t.readUInt16BE(e*o)}if(i){var u=-1;for(a=r;as&&(r=s-l),a=r;a>=0;a--){for(var f=!0,h=0;hi&&(n=i):n=i;var a=e.length;n>a/2&&(n=a/2);for(var o=0;o>8,i=r%256,a.push(i),a.push(n);return a}(e,t.length-r),t,r,n)}function w(t,r,n){return 0===r&&n===t.length?e.fromByteArray(t):e.fromByteArray(t.slice(r,n))}function T(t,e,r){r=Math.min(t.length,r);for(var n=[],i=e;i239?4:c>223?3:c>191?2:1;if(i+f<=r)switch(f){case 1:c<128&&(u=c);break;case 2:128==(192&(a=t[i+1]))&&(l=(31&c)<<6|63&a)>127&&(u=l);break;case 3:a=t[i+1],o=t[i+2],128==(192&a)&&128==(192&o)&&(l=(15&c)<<12|(63&a)<<6|63&o)>2047&&(l<55296||l>57343)&&(u=l);break;case 4:a=t[i+1],o=t[i+2],s=t[i+3],128==(192&a)&&128==(192&o)&&128==(192&s)&&(l=(15&c)<<18|(63&a)<<12|(63&o)<<6|63&s)>65535&&l<1114112&&(u=l)}null===u?(u=65533,f=1):u>65535&&(u-=65536,n.push(u>>>10&1023|55296),u=56320|1023&u),n.push(u),i+=f}return function(t){var e=t.length;if(e<=4096)return String.fromCharCode.apply(String,t);var r=\"\",n=0;for(;ne&&(t+=\" ... \"),\"\"},a.prototype.compare=function(t,e,r,n,i){if(B(t,Uint8Array)&&(t=a.from(t,t.offset,t.byteLength)),!a.isBuffer(t))throw new TypeError('The \"target\" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError(\"out of range index\");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(this===t)return 0;for(var o=(i>>>=0)-(n>>>=0),s=(r>>>=0)-(e>>>=0),l=Math.min(o,s),c=this.slice(n,i),u=t.slice(e,r),f=0;f>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n=\"utf8\")):(n=r,r=void 0)}var i=this.length-e;if((void 0===r||r>i)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");n||(n=\"utf8\");for(var a=!1;;)switch(n){case\"hex\":return m(this,t,e,r);case\"utf8\":case\"utf-8\":return v(this,t,e,r);case\"ascii\":return y(this,t,e,r);case\"latin1\":case\"binary\":return x(this,t,e,r);case\"base64\":return b(this,t,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return _(this,t,e,r);default:if(a)throw new TypeError(\"Unknown encoding: \"+n);n=(\"\"+n).toLowerCase(),a=!0}},a.prototype.toJSON=function(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};function k(t,e,r){var n=\"\";r=Math.min(t.length,r);for(var i=e;in)&&(r=n);for(var i=\"\",a=e;ar)throw new RangeError(\"Trying to access beyond buffer length\")}function L(t,e,r,n,i,o){if(!a.isBuffer(t))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError(\"Index out of range\")}function C(t,e,r,n,i,a){if(r+n>t.length)throw new RangeError(\"Index out of range\");if(r<0)throw new RangeError(\"Index out of range\")}function P(t,e,r,i,a){return e=+e,r>>>=0,a||C(t,0,r,4),n.write(t,e,r,i,23,4),r+4}function I(t,e,r,i,a){return e=+e,r>>>=0,a||C(t,0,r,8),n.write(t,e,r,i,52,8),r+8}a.prototype.slice=function(t,e){var r=this.length;(t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e>>=0,e>>>=0,r||E(t,e,this.length);for(var n=this[t],i=1,a=0;++a>>=0,e>>>=0,r||E(t,e,this.length);for(var n=this[t+--e],i=1;e>0&&(i*=256);)n+=this[t+--e]*i;return n},a.prototype.readUInt8=function(t,e){return t>>>=0,e||E(t,1,this.length),this[t]},a.prototype.readUInt16LE=function(t,e){return t>>>=0,e||E(t,2,this.length),this[t]|this[t+1]<<8},a.prototype.readUInt16BE=function(t,e){return t>>>=0,e||E(t,2,this.length),this[t]<<8|this[t+1]},a.prototype.readUInt32LE=function(t,e){return t>>>=0,e||E(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},a.prototype.readUInt32BE=function(t,e){return t>>>=0,e||E(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},a.prototype.readIntLE=function(t,e,r){t>>>=0,e>>>=0,r||E(t,e,this.length);for(var n=this[t],i=1,a=0;++a=(i*=128)&&(n-=Math.pow(2,8*e)),n},a.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||E(t,e,this.length);for(var n=e,i=1,a=this[t+--n];n>0&&(i*=256);)a+=this[t+--n]*i;return a>=(i*=128)&&(a-=Math.pow(2,8*e)),a},a.prototype.readInt8=function(t,e){return t>>>=0,e||E(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},a.prototype.readInt16LE=function(t,e){t>>>=0,e||E(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt16BE=function(t,e){t>>>=0,e||E(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt32LE=function(t,e){return t>>>=0,e||E(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},a.prototype.readInt32BE=function(t,e){return t>>>=0,e||E(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},a.prototype.readFloatLE=function(t,e){return t>>>=0,e||E(t,4,this.length),n.read(this,t,!0,23,4)},a.prototype.readFloatBE=function(t,e){return t>>>=0,e||E(t,4,this.length),n.read(this,t,!1,23,4)},a.prototype.readDoubleLE=function(t,e){return t>>>=0,e||E(t,8,this.length),n.read(this,t,!0,52,8)},a.prototype.readDoubleBE=function(t,e){return t>>>=0,e||E(t,8,this.length),n.read(this,t,!1,52,8)},a.prototype.writeUIntLE=function(t,e,r,n){(t=+t,e>>>=0,r>>>=0,n)||L(this,t,e,r,Math.pow(2,8*r)-1,0);var i=1,a=0;for(this[e]=255&t;++a>>=0,r>>>=0,n)||L(this,t,e,r,Math.pow(2,8*r)-1,0);var i=r-1,a=1;for(this[e+i]=255&t;--i>=0&&(a*=256);)this[e+i]=t/a&255;return e+r},a.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,1,255,0),this[e]=255&t,e+1},a.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},a.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},a.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},a.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},a.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var i=Math.pow(2,8*r-1);L(this,t,e,r,i-1,-i)}var a=0,o=1,s=0;for(this[e]=255&t;++a>0)-s&255;return e+r},a.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var i=Math.pow(2,8*r-1);L(this,t,e,r,i-1,-i)}var a=r-1,o=1,s=0;for(this[e+a]=255&t;--a>=0&&(o*=256);)t<0&&0===s&&0!==this[e+a+1]&&(s=1),this[e+a]=(t/o>>0)-s&255;return e+r},a.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},a.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},a.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},a.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},a.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},a.prototype.writeFloatLE=function(t,e,r){return P(this,t,e,!0,r)},a.prototype.writeFloatBE=function(t,e,r){return P(this,t,e,!1,r)},a.prototype.writeDoubleLE=function(t,e,r){return I(this,t,e,!0,r)},a.prototype.writeDoubleBE=function(t,e,r){return I(this,t,e,!1,r)},a.prototype.copy=function(t,e,r,n){if(!a.isBuffer(t))throw new TypeError(\"argument should be a Buffer\");if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n=this.length)throw new RangeError(\"Index out of range\");if(n<0)throw new RangeError(\"sourceEnd out of bounds\");n>this.length&&(n=this.length),t.length-e=0;--o)t[o+e]=this[o+r];else Uint8Array.prototype.set.call(t,this.subarray(r,n),e);return i},a.prototype.fill=function(t,e,r,n){if(\"string\"==typeof t){if(\"string\"==typeof e?(n=e,e=0,r=this.length):\"string\"==typeof r&&(n=r,r=this.length),void 0!==n&&\"string\"!=typeof n)throw new TypeError(\"encoding must be a string\");if(\"string\"==typeof n&&!a.isEncoding(n))throw new TypeError(\"Unknown encoding: \"+n);if(1===t.length){var i=t.charCodeAt(0);(\"utf8\"===n&&i<128||\"latin1\"===n)&&(t=i)}}else\"number\"==typeof t&&(t&=255);if(e<0||this.length>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),\"number\"==typeof t)for(o=e;o55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&a.push(239,191,189);continue}if(o+1===n){(e-=3)>-1&&a.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&a.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&a.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;a.push(r)}else if(r<2048){if((e-=2)<0)break;a.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;a.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error(\"Invalid code point\");if((e-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return a}function R(t){return e.toByteArray(function(t){if((t=(t=t.split(\"=\")[0]).trim().replace(O,\"\")).length<2)return\"\";for(;t.length%4!=0;)t+=\"=\";return t}(t))}function F(t,e,r,n){for(var i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function B(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function N(t){return t!=t}}).call(this)}).call(this,t(\"buffer\").Buffer)},{\"base64-js\":79,buffer:85,ieee754:230}],86:[function(t,e,r){e.exports=function(t,e,r){return er?r:t:te?e:t}},{}],87:[function(t,e,r){\"use strict\";var n=t(\"clamp\");function i(t,e){null==e&&(e=!0);var r=t[0],i=t[1],a=t[2],o=t[3];return null==o&&(o=e?1:255),e&&(r*=255,i*=255,a*=255,o*=255),16777216*(r=255&n(r,0,255))+((i=255&n(i,0,255))<<16)+((a=255&n(a,0,255))<<8)+(o=255&n(o,0,255))}e.exports=i,e.exports.to=i,e.exports.from=function(t,e){var r=(t=+t)>>>24,n=(16711680&t)>>>16,i=(65280&t)>>>8,a=255&t;return!1===e?[r,n,i,a]:[r/255,n/255,i/255,a/255]}},{clamp:86}],88:[function(t,e,r){\"use strict\";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},{}],89:[function(t,e,r){\"use strict\";var n=t(\"color-rgba\"),i=t(\"clamp\"),a=t(\"dtype\");e.exports=function(t,e){\"float\"!==e&&e||(e=\"array\"),\"uint\"===e&&(e=\"uint8\"),\"uint_clamped\"===e&&(e=\"uint8_clamped\");var r=new(a(e))(4),o=\"uint8\"!==e&&\"uint8_clamped\"!==e;return t.length&&\"string\"!=typeof t||((t=n(t))[0]/=255,t[1]/=255,t[2]/=255),function(t){return t instanceof Uint8Array||t instanceof Uint8ClampedArray||!!(Array.isArray(t)&&(t[0]>1||0===t[0])&&(t[1]>1||0===t[1])&&(t[2]>1||0===t[2])&&(!t[3]||t[3]>1))}(t)?(r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=null!=t[3]?t[3]:255,o&&(r[0]/=255,r[1]/=255,r[2]/=255,r[3]/=255),r):(o?(r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=null!=t[3]?t[3]:1):(r[0]=i(Math.floor(255*t[0]),0,255),r[1]=i(Math.floor(255*t[1]),0,255),r[2]=i(Math.floor(255*t[2]),0,255),r[3]=null==t[3]?255:i(Math.floor(255*t[3]),0,255)),r)}},{clamp:86,\"color-rgba\":91,dtype:127}],90:[function(t,e,r){(function(r){(function(){\"use strict\";var n=t(\"color-name\"),i=t(\"is-plain-obj\"),a=t(\"defined\");e.exports=function(t){var e,s,l=[],c=1;if(\"string\"==typeof t)if(n[t])l=n[t].slice(),s=\"rgb\";else if(\"transparent\"===t)c=0,s=\"rgb\",l=[0,0,0];else if(/^#[A-Fa-f0-9]+$/.test(t)){var u=(p=t.slice(1)).length;c=1,u<=4?(l=[parseInt(p[0]+p[0],16),parseInt(p[1]+p[1],16),parseInt(p[2]+p[2],16)],4===u&&(c=parseInt(p[3]+p[3],16)/255)):(l=[parseInt(p[0]+p[1],16),parseInt(p[2]+p[3],16),parseInt(p[4]+p[5],16)],8===u&&(c=parseInt(p[6]+p[7],16)/255)),l[0]||(l[0]=0),l[1]||(l[1]=0),l[2]||(l[2]=0),s=\"rgb\"}else if(e=/^((?:rgb|hs[lvb]|hwb|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms)a?)\\s*\\(([^\\)]*)\\)/.exec(t)){var f=e[1],h=\"rgb\"===f,p=f.replace(/a$/,\"\");s=p;u=\"cmyk\"===p?4:\"gray\"===p?1:3;l=e[2].trim().split(/\\s*,\\s*/).map((function(t,e){if(/%$/.test(t))return e===u?parseFloat(t)/100:\"rgb\"===p?255*parseFloat(t)/100:parseFloat(t);if(\"h\"===p[e]){if(/deg$/.test(t))return parseFloat(t);if(void 0!==o[t])return o[t]}return parseFloat(t)})),f===p&&l.push(1),c=h||void 0===l[u]?1:l[u],l=l.slice(0,u)}else t.length>10&&/[0-9](?:\\s|\\/)/.test(t)&&(l=t.match(/([0-9]+)/g).map((function(t){return parseFloat(t)})),s=t.match(/([a-z])/gi).join(\"\").toLowerCase());else if(isNaN(t))if(i(t)){var d=a(t.r,t.red,t.R,null);null!==d?(s=\"rgb\",l=[d,a(t.g,t.green,t.G),a(t.b,t.blue,t.B)]):(s=\"hsl\",l=[a(t.h,t.hue,t.H),a(t.s,t.saturation,t.S),a(t.l,t.lightness,t.L,t.b,t.brightness)]),c=a(t.a,t.alpha,t.opacity,1),null!=t.opacity&&(c/=100)}else(Array.isArray(t)||r.ArrayBuffer&&ArrayBuffer.isView&&ArrayBuffer.isView(t))&&(l=[t[0],t[1],t[2]],s=\"rgb\",c=4===t.length?t[3]:1);else s=\"rgb\",l=[t>>>16,(65280&t)>>>8,255&t];return{space:s,values:l,alpha:c}};var o={red:0,orange:60,yellow:120,green:180,blue:240,purple:300}}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"color-name\":88,defined:124,\"is-plain-obj\":236}],91:[function(t,e,r){\"use strict\";var n=t(\"color-parse\"),i=t(\"color-space/hsl\"),a=t(\"clamp\");e.exports=function(t){var e,r=n(t);return r.space?((e=Array(3))[0]=a(r.values[0],0,255),e[1]=a(r.values[1],0,255),e[2]=a(r.values[2],0,255),\"h\"===r.space[0]&&(e=i.rgb(e)),e.push(a(r.alpha,0,1)),e):[]}},{clamp:86,\"color-parse\":90,\"color-space/hsl\":92}],92:[function(t,e,r){\"use strict\";var n=t(\"./rgb\");e.exports={name:\"hsl\",min:[0,0,0],max:[360,100,100],channel:[\"hue\",\"saturation\",\"lightness\"],alias:[\"HSL\"],rgb:function(t){var e,r,n,i,a,o=t[0]/360,s=t[1]/100,l=t[2]/100;if(0===s)return[a=255*l,a,a];e=2*l-(r=l<.5?l*(1+s):l+s-l*s),i=[0,0,0];for(var c=0;c<3;c++)(n=o+1/3*-(c-1))<0?n++:n>1&&n--,a=6*n<1?e+6*(r-e)*n:2*n<1?r:3*n<2?e+(r-e)*(2/3-n)*6:e,i[c]=255*a;return i}},n.hsl=function(t){var e,r,n=t[0]/255,i=t[1]/255,a=t[2]/255,o=Math.min(n,i,a),s=Math.max(n,i,a),l=s-o;return s===o?e=0:n===s?e=(i-a)/l:i===s?e=2+(a-n)/l:a===s&&(e=4+(n-i)/l),(e=Math.min(60*e,360))<0&&(e+=360),r=(o+s)/2,[e,100*(s===o?0:r<=.5?l/(s+o):l/(2-s-o)),100*r]}},{\"./rgb\":93}],93:[function(t,e,r){\"use strict\";e.exports={name:\"rgb\",min:[0,0,0],max:[255,255,255],channel:[\"red\",\"green\",\"blue\"],alias:[\"RGB\"]}},{}],94:[function(t,e,r){e.exports={AFG:\"afghan\",ALA:\"\\\\b\\\\wland\",ALB:\"albania\",DZA:\"algeria\",ASM:\"^(?=.*americ).*samoa\",AND:\"andorra\",AGO:\"angola\",AIA:\"anguill?a\",ATA:\"antarctica\",ATG:\"antigua\",ARG:\"argentin\",ARM:\"armenia\",ABW:\"^(?!.*bonaire).*\\\\baruba\",AUS:\"australia\",AUT:\"^(?!.*hungary).*austria|\\\\baustri.*\\\\bemp\",AZE:\"azerbaijan\",BHS:\"bahamas\",BHR:\"bahrain\",BGD:\"bangladesh|^(?=.*east).*paki?stan\",BRB:\"barbados\",BLR:\"belarus|byelo\",BEL:\"^(?!.*luxem).*belgium\",BLZ:\"belize|^(?=.*british).*honduras\",BEN:\"benin|dahome\",BMU:\"bermuda\",BTN:\"bhutan\",BOL:\"bolivia\",BES:\"^(?=.*bonaire).*eustatius|^(?=.*carib).*netherlands|\\\\bbes.?islands\",BIH:\"herzegovina|bosnia\",BWA:\"botswana|bechuana\",BVT:\"bouvet\",BRA:\"brazil\",IOT:\"british.?indian.?ocean\",BRN:\"brunei\",BGR:\"bulgaria\",BFA:\"burkina|\\\\bfaso|upper.?volta\",BDI:\"burundi\",CPV:\"verde\",KHM:\"cambodia|kampuchea|khmer\",CMR:\"cameroon\",CAN:\"canada\",CYM:\"cayman\",CAF:\"\\\\bcentral.african.republic\",TCD:\"\\\\bchad\",CHL:\"\\\\bchile\",CHN:\"^(?!.*\\\\bmac)(?!.*\\\\bhong)(?!.*\\\\btai)(?!.*\\\\brep).*china|^(?=.*peo)(?=.*rep).*china\",CXR:\"christmas\",CCK:\"\\\\bcocos|keeling\",COL:\"colombia\",COM:\"comoro\",COG:\"^(?!.*\\\\bdem)(?!.*\\\\bd[\\\\.]?r)(?!.*kinshasa)(?!.*zaire)(?!.*belg)(?!.*l.opoldville)(?!.*free).*\\\\bcongo\",COK:\"\\\\bcook\",CRI:\"costa.?rica\",CIV:\"ivoire|ivory\",HRV:\"croatia\",CUB:\"\\\\bcuba\",CUW:\"^(?!.*bonaire).*\\\\bcura(c|\\xe7)ao\",CYP:\"cyprus\",CSK:\"czechoslovakia\",CZE:\"^(?=.*rep).*czech|czechia|bohemia\",COD:\"\\\\bdem.*congo|congo.*\\\\bdem|congo.*\\\\bd[\\\\.]?r|\\\\bd[\\\\.]?r.*congo|belgian.?congo|congo.?free.?state|kinshasa|zaire|l.opoldville|drc|droc|rdc\",DNK:\"denmark\",DJI:\"djibouti\",DMA:\"dominica(?!n)\",DOM:\"dominican.rep\",ECU:\"ecuador\",EGY:\"egypt\",SLV:\"el.?salvador\",GNQ:\"guine.*eq|eq.*guine|^(?=.*span).*guinea\",ERI:\"eritrea\",EST:\"estonia\",ETH:\"ethiopia|abyssinia\",FLK:\"falkland|malvinas\",FRO:\"faroe|faeroe\",FJI:\"fiji\",FIN:\"finland\",FRA:\"^(?!.*\\\\bdep)(?!.*martinique).*france|french.?republic|\\\\bgaul\",GUF:\"^(?=.*french).*guiana\",PYF:\"french.?polynesia|tahiti\",ATF:\"french.?southern\",GAB:\"gabon\",GMB:\"gambia\",GEO:\"^(?!.*south).*georgia\",DDR:\"german.?democratic.?republic|democratic.?republic.*germany|east.germany\",DEU:\"^(?!.*east).*germany|^(?=.*\\\\bfed.*\\\\brep).*german\",GHA:\"ghana|gold.?coast\",GIB:\"gibraltar\",GRC:\"greece|hellenic|hellas\",GRL:\"greenland\",GRD:\"grenada\",GLP:\"guadeloupe\",GUM:\"\\\\bguam\",GTM:\"guatemala\",GGY:\"guernsey\",GIN:\"^(?!.*eq)(?!.*span)(?!.*bissau)(?!.*portu)(?!.*new).*guinea\",GNB:\"bissau|^(?=.*portu).*guinea\",GUY:\"guyana|british.?guiana\",HTI:\"haiti\",HMD:\"heard.*mcdonald\",VAT:\"holy.?see|vatican|papal.?st\",HND:\"^(?!.*brit).*honduras\",HKG:\"hong.?kong\",HUN:\"^(?!.*austr).*hungary\",ISL:\"iceland\",IND:\"india(?!.*ocea)\",IDN:\"indonesia\",IRN:\"\\\\biran|persia\",IRQ:\"\\\\biraq|mesopotamia\",IRL:\"(^ireland)|(^republic.*ireland)\",IMN:\"^(?=.*isle).*\\\\bman\",ISR:\"israel\",ITA:\"italy\",JAM:\"jamaica\",JPN:\"japan\",JEY:\"jersey\",JOR:\"jordan\",KAZ:\"kazak\",KEN:\"kenya|british.?east.?africa|east.?africa.?prot\",KIR:\"kiribati\",PRK:\"^(?=.*democrat|people|north|d.*p.*.r).*\\\\bkorea|dprk|korea.*(d.*p.*r)\",KWT:\"kuwait\",KGZ:\"kyrgyz|kirghiz\",LAO:\"\\\\blaos?\\\\b\",LVA:\"latvia\",LBN:\"lebanon\",LSO:\"lesotho|basuto\",LBR:\"liberia\",LBY:\"libya\",LIE:\"liechtenstein\",LTU:\"lithuania\",LUX:\"^(?!.*belg).*luxem\",MAC:\"maca(o|u)\",MDG:\"madagascar|malagasy\",MWI:\"malawi|nyasa\",MYS:\"malaysia\",MDV:\"maldive\",MLI:\"\\\\bmali\\\\b\",MLT:\"\\\\bmalta\",MHL:\"marshall\",MTQ:\"martinique\",MRT:\"mauritania\",MUS:\"mauritius\",MYT:\"\\\\bmayotte\",MEX:\"\\\\bmexic\",FSM:\"fed.*micronesia|micronesia.*fed\",MCO:\"monaco\",MNG:\"mongolia\",MNE:\"^(?!.*serbia).*montenegro\",MSR:\"montserrat\",MAR:\"morocco|\\\\bmaroc\",MOZ:\"mozambique\",MMR:\"myanmar|burma\",NAM:\"namibia\",NRU:\"nauru\",NPL:\"nepal\",NLD:\"^(?!.*\\\\bant)(?!.*\\\\bcarib).*netherlands\",ANT:\"^(?=.*\\\\bant).*(nether|dutch)\",NCL:\"new.?caledonia\",NZL:\"new.?zealand\",NIC:\"nicaragua\",NER:\"\\\\bniger(?!ia)\",NGA:\"nigeria\",NIU:\"niue\",NFK:\"norfolk\",MNP:\"mariana\",NOR:\"norway\",OMN:\"\\\\boman|trucial\",PAK:\"^(?!.*east).*paki?stan\",PLW:\"palau\",PSE:\"palestin|\\\\bgaza|west.?bank\",PAN:\"panama\",PNG:\"papua|new.?guinea\",PRY:\"paraguay\",PER:\"peru\",PHL:\"philippines\",PCN:\"pitcairn\",POL:\"poland\",PRT:\"portugal\",PRI:\"puerto.?rico\",QAT:\"qatar\",KOR:\"^(?!.*d.*p.*r)(?!.*democrat)(?!.*people)(?!.*north).*\\\\bkorea(?!.*d.*p.*r)\",MDA:\"moldov|b(a|e)ssarabia\",REU:\"r(e|\\xe9)union\",ROU:\"r(o|u|ou)mania\",RUS:\"\\\\brussia|soviet.?union|u\\\\.?s\\\\.?s\\\\.?r|socialist.?republics\",RWA:\"rwanda\",BLM:\"barth(e|\\xe9)lemy\",SHN:\"helena\",KNA:\"kitts|\\\\bnevis\",LCA:\"\\\\blucia\",MAF:\"^(?=.*collectivity).*martin|^(?=.*france).*martin(?!ique)|^(?=.*french).*martin(?!ique)\",SPM:\"miquelon\",VCT:\"vincent\",WSM:\"^(?!.*amer).*samoa\",SMR:\"san.?marino\",STP:\"\\\\bs(a|\\xe3)o.?tom(e|\\xe9)\",SAU:\"\\\\bsa\\\\w*.?arabia\",SEN:\"senegal\",SRB:\"^(?!.*monte).*serbia\",SYC:\"seychell\",SLE:\"sierra\",SGP:\"singapore\",SXM:\"^(?!.*martin)(?!.*saba).*maarten\",SVK:\"^(?!.*cze).*slovak\",SVN:\"slovenia\",SLB:\"solomon\",SOM:\"somali\",ZAF:\"south.africa|s\\\\\\\\..?africa\",SGS:\"south.?georgia|sandwich\",SSD:\"\\\\bs\\\\w*.?sudan\",ESP:\"spain\",LKA:\"sri.?lanka|ceylon\",SDN:\"^(?!.*\\\\bs(?!u)).*sudan\",SUR:\"surinam|dutch.?guiana\",SJM:\"svalbard\",SWZ:\"swaziland\",SWE:\"sweden\",CHE:\"switz|swiss\",SYR:\"syria\",TWN:\"taiwan|taipei|formosa|^(?!.*peo)(?=.*rep).*china\",TJK:\"tajik\",THA:\"thailand|\\\\bsiam\",MKD:\"macedonia|fyrom\",TLS:\"^(?=.*leste).*timor|^(?=.*east).*timor\",TGO:\"togo\",TKL:\"tokelau\",TON:\"tonga\",TTO:\"trinidad|tobago\",TUN:\"tunisia\",TUR:\"turkey\",TKM:\"turkmen\",TCA:\"turks\",TUV:\"tuvalu\",UGA:\"uganda\",UKR:\"ukrain\",ARE:\"emirates|^u\\\\.?a\\\\.?e\\\\.?$|united.?arab.?em\",GBR:\"united.?kingdom|britain|^u\\\\.?k\\\\.?$\",TZA:\"tanzania\",USA:\"united.?states\\\\b(?!.*islands)|\\\\bu\\\\.?s\\\\.?a\\\\.?\\\\b|^\\\\s*u\\\\.?s\\\\.?\\\\b(?!.*islands)\",UMI:\"minor.?outlying.?is\",URY:\"uruguay\",UZB:\"uzbek\",VUT:\"vanuatu|new.?hebrides\",VEN:\"venezuela\",VNM:\"^(?!.*republic).*viet.?nam|^(?=.*socialist).*viet.?nam\",VGB:\"^(?=.*\\\\bu\\\\.?\\\\s?k).*virgin|^(?=.*brit).*virgin|^(?=.*kingdom).*virgin\",VIR:\"^(?=.*\\\\bu\\\\.?\\\\s?s).*virgin|^(?=.*states).*virgin\",WLF:\"futuna|wallis\",ESH:\"western.sahara\",YEM:\"^(?!.*arab)(?!.*north)(?!.*sana)(?!.*peo)(?!.*dem)(?!.*south)(?!.*aden)(?!.*\\\\bp\\\\.?d\\\\.?r).*yemen\",YMD:\"^(?=.*peo).*yemen|^(?!.*rep)(?=.*dem).*yemen|^(?=.*south).*yemen|^(?=.*aden).*yemen|^(?=.*\\\\bp\\\\.?d\\\\.?r).*yemen\",YUG:\"yugoslavia\",ZMB:\"zambia|northern.?rhodesia\",EAZ:\"zanzibar\",ZWE:\"zimbabwe|^(?!.*northern).*rhodesia\"}},{}],95:[function(t,e,r){e.exports=[\"xx-small\",\"x-small\",\"small\",\"medium\",\"large\",\"x-large\",\"xx-large\",\"larger\",\"smaller\"]},{}],96:[function(t,e,r){e.exports=[\"normal\",\"condensed\",\"semi-condensed\",\"extra-condensed\",\"ultra-condensed\",\"expanded\",\"semi-expanded\",\"extra-expanded\",\"ultra-expanded\"]},{}],97:[function(t,e,r){e.exports=[\"normal\",\"italic\",\"oblique\"]},{}],98:[function(t,e,r){e.exports=[\"normal\",\"bold\",\"bolder\",\"lighter\",\"100\",\"200\",\"300\",\"400\",\"500\",\"600\",\"700\",\"800\",\"900\"]},{}],99:[function(t,e,r){\"use strict\";e.exports={parse:t(\"./parse\"),stringify:t(\"./stringify\")}},{\"./parse\":101,\"./stringify\":102}],100:[function(t,e,r){\"use strict\";var n=t(\"css-font-size-keywords\");e.exports={isSize:function(t){return/^[\\d\\.]/.test(t)||-1!==t.indexOf(\"/\")||-1!==n.indexOf(t)}}},{\"css-font-size-keywords\":95}],101:[function(t,e,r){\"use strict\";var n=t(\"unquote\"),i=t(\"css-global-keywords\"),a=t(\"css-system-font-keywords\"),o=t(\"css-font-weight-keywords\"),s=t(\"css-font-style-keywords\"),l=t(\"css-font-stretch-keywords\"),c=t(\"string-split-by\"),u=t(\"./lib/util\").isSize;e.exports=h;var f=h.cache={};function h(t){if(\"string\"!=typeof t)throw new Error(\"Font argument must be a string.\");if(f[t])return f[t];if(\"\"===t)throw new Error(\"Cannot parse an empty string.\");if(-1!==a.indexOf(t))return f[t]={system:t};for(var e,r={style:\"normal\",variant:\"normal\",weight:\"normal\",stretch:\"normal\",lineHeight:\"normal\",size:\"1rem\",family:[\"serif\"]},h=c(t,/\\s+/);e=h.shift();){if(-1!==i.indexOf(e))return[\"style\",\"variant\",\"weight\",\"stretch\"].forEach((function(t){r[t]=e})),f[t]=r;if(-1===s.indexOf(e))if(\"normal\"!==e&&\"small-caps\"!==e)if(-1===l.indexOf(e)){if(-1===o.indexOf(e)){if(u(e)){var d=c(e,\"/\");if(r.size=d[0],null!=d[1]?r.lineHeight=p(d[1]):\"/\"===h[0]&&(h.shift(),r.lineHeight=p(h.shift())),!h.length)throw new Error(\"Missing required font-family.\");return r.family=c(h.join(\" \"),/\\s*,\\s*/).map(n),f[t]=r}throw new Error(\"Unknown or unsupported font token: \"+e)}r.weight=e}else r.stretch=e;else r.variant=e;else r.style=e}throw new Error(\"Missing required font-size.\")}function p(t){var e=parseFloat(t);return e.toString()===t?e:t}},{\"./lib/util\":100,\"css-font-stretch-keywords\":96,\"css-font-style-keywords\":97,\"css-font-weight-keywords\":98,\"css-global-keywords\":103,\"css-system-font-keywords\":104,\"string-split-by\":305,unquote:328}],102:[function(t,e,r){\"use strict\";var n=t(\"pick-by-alias\"),i=t(\"./lib/util\").isSize,a=g(t(\"css-global-keywords\")),o=g(t(\"css-system-font-keywords\")),s=g(t(\"css-font-weight-keywords\")),l=g(t(\"css-font-style-keywords\")),c=g(t(\"css-font-stretch-keywords\")),u={normal:1,\"small-caps\":1},f={serif:1,\"sans-serif\":1,monospace:1,cursive:1,fantasy:1,\"system-ui\":1},h=\"1rem\",p=\"serif\";function d(t,e){if(t&&!e[t]&&!a[t])throw Error(\"Unknown keyword `\"+t+\"`\");return t}function g(t){for(var e={},r=0;re?1:t>=e?0:NaN}function r(t){var r;return 1===t.length&&(r=t,t=function(t,n){return e(r(t),n)}),{left:function(e,r,n,i){for(null==n&&(n=0),null==i&&(i=e.length);n>>1;t(e[a],r)<0?n=a+1:i=a}return n},right:function(e,r,n,i){for(null==n&&(n=0),null==i&&(i=e.length);n>>1;t(e[a],r)>0?i=a:n=a+1}return n}}}var n=r(e),i=n.right,a=n.left;function o(t,e){return[t,e]}function s(t){return null===t?NaN:+t}function l(t,e){var r,n,i=t.length,a=0,o=-1,l=0,c=0;if(null==e)for(;++o1)return c/(a-1)}function c(t,e){var r=l(t,e);return r?Math.sqrt(r):r}function u(t,e){var r,n,i,a=t.length,o=-1;if(null==e){for(;++o=r)for(n=i=r;++or&&(n=r),i=r)for(n=i=r;++or&&(n=r),i=0?(a>=v?10:a>=y?5:a>=x?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(a>=v?10:a>=y?5:a>=x?2:1)}function _(t,e,r){var n=Math.abs(e-t)/Math.max(0,r),i=Math.pow(10,Math.floor(Math.log(n)/Math.LN10)),a=n/i;return a>=v?i*=10:a>=y?i*=5:a>=x&&(i*=2),e=1)return+r(t[n-1],n-1,t);var n,i=(n-1)*e,a=Math.floor(i),o=+r(t[a],a,t);return o+(+r(t[a+1],a+1,t)-o)*(i-a)}}function k(t,e){var r,n,i=t.length,a=-1;if(null==e){for(;++a=r)for(n=r;++ar&&(n=r)}else for(;++a=r)for(n=r;++ar&&(n=r);return n}function A(t){if(!(i=t.length))return[];for(var e=-1,r=k(t,M),n=new Array(r);++et?1:e>=t?0:NaN},t.deviation=c,t.extent=u,t.histogram=function(){var t=g,e=u,r=w;function n(n){var a,o,s=n.length,l=new Array(s);for(a=0;af;)h.pop(),--p;var d,g=new Array(p+1);for(a=0;a<=p;++a)(d=g[a]=[]).x0=a>0?h[a-1]:u,d.x1=a=r)for(n=r;++an&&(n=r)}else for(;++a=r)for(n=r;++an&&(n=r);return n},t.mean=function(t,e){var r,n=t.length,i=n,a=-1,o=0;if(null==e)for(;++a=0;)for(e=(n=t[i]).length;--e>=0;)r[--o]=n[e];return r},t.min=k,t.pairs=function(t,e){null==e&&(e=o);for(var r=0,n=t.length-1,i=t[0],a=new Array(n<0?0:n);r0)return[t];if((n=e0)for(t=Math.ceil(t/o),e=Math.floor(e/o),a=new Array(i=Math.ceil(e-t+1));++s=l.length)return null!=t&&n.sort(t),null!=e?e(n):n;for(var s,c,f,h=-1,p=n.length,d=l[i++],g=r(),m=a();++hl.length)return r;var i,a=c[n-1];return null!=e&&n>=l.length?i=r.entries():(i=[],r.each((function(e,r){i.push({key:r,values:t(e,n)})}))),null!=a?i.sort((function(t,e){return a(t.key,e.key)})):i}(u(t,0,a,o),0)},key:function(t){return l.push(t),s},sortKeys:function(t){return c[l.length-1]=t,s},sortValues:function(e){return t=e,s},rollup:function(t){return e=t,s}}},t.set=c,t.map=r,t.keys=function(t){var e=[];for(var r in t)e.push(r);return e},t.values=function(t){var e=[];for(var r in t)e.push(t[r]);return e},t.entries=function(t){var e=[];for(var r in t)e.push({key:r,value:t[r]});return e},Object.defineProperty(t,\"__esModule\",{value:!0})}))},{}],109:[function(t,e,r){!function(t,n){\"object\"==typeof r&&void 0!==e?n(r):n((t=t||self).d3=t.d3||{})}(this,(function(t){\"use strict\";function e(t,e,r){t.prototype=e.prototype=r,r.constructor=t}function r(t,e){var r=Object.create(t.prototype);for(var n in e)r[n]=e[n];return r}function n(){}var i=\"\\\\s*([+-]?\\\\d+)\\\\s*\",a=\"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",o=\"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",s=/^#([0-9a-f]{3,8})$/,l=new RegExp(\"^rgb\\\\(\"+[i,i,i]+\"\\\\)$\"),c=new RegExp(\"^rgb\\\\(\"+[o,o,o]+\"\\\\)$\"),u=new RegExp(\"^rgba\\\\(\"+[i,i,i,a]+\"\\\\)$\"),f=new RegExp(\"^rgba\\\\(\"+[o,o,o,a]+\"\\\\)$\"),h=new RegExp(\"^hsl\\\\(\"+[a,o,o]+\"\\\\)$\"),p=new RegExp(\"^hsla\\\\(\"+[a,o,o,a]+\"\\\\)$\"),d={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function g(){return this.rgb().formatHex()}function m(){return this.rgb().formatRgb()}function v(t){var e,r;return t=(t+\"\").trim().toLowerCase(),(e=s.exec(t))?(r=e[1].length,e=parseInt(e[1],16),6===r?y(e):3===r?new w(e>>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===r?x(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===r?x(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=l.exec(t))?new w(e[1],e[2],e[3],1):(e=c.exec(t))?new w(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=u.exec(t))?x(e[1],e[2],e[3],e[4]):(e=f.exec(t))?x(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=h.exec(t))?M(e[1],e[2]/100,e[3]/100,1):(e=p.exec(t))?M(e[1],e[2]/100,e[3]/100,e[4]):d.hasOwnProperty(t)?y(d[t]):\"transparent\"===t?new w(NaN,NaN,NaN,0):null}function y(t){return new w(t>>16&255,t>>8&255,255&t,1)}function x(t,e,r,n){return n<=0&&(t=e=r=NaN),new w(t,e,r,n)}function b(t){return t instanceof n||(t=v(t)),t?new w((t=t.rgb()).r,t.g,t.b,t.opacity):new w}function _(t,e,r,n){return 1===arguments.length?b(t):new w(t,e,r,null==n?1:n)}function w(t,e,r,n){this.r=+t,this.g=+e,this.b=+r,this.opacity=+n}function T(){return\"#\"+A(this.r)+A(this.g)+A(this.b)}function k(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?\"rgb(\":\"rgba(\")+Math.max(0,Math.min(255,Math.round(this.r)||0))+\", \"+Math.max(0,Math.min(255,Math.round(this.g)||0))+\", \"+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?\")\":\", \"+t+\")\")}function A(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?\"0\":\"\")+t.toString(16)}function M(t,e,r,n){return n<=0?t=e=r=NaN:r<=0||r>=1?t=e=NaN:e<=0&&(t=NaN),new L(t,e,r,n)}function S(t){if(t instanceof L)return new L(t.h,t.s,t.l,t.opacity);if(t instanceof n||(t=v(t)),!t)return new L;if(t instanceof L)return t;var e=(t=t.rgb()).r/255,r=t.g/255,i=t.b/255,a=Math.min(e,r,i),o=Math.max(e,r,i),s=NaN,l=o-a,c=(o+a)/2;return l?(s=e===o?(r-i)/l+6*(r0&&c<1?0:s,new L(s,l,c,t.opacity)}function E(t,e,r,n){return 1===arguments.length?S(t):new L(t,e,r,null==n?1:n)}function L(t,e,r,n){this.h=+t,this.s=+e,this.l=+r,this.opacity=+n}function C(t,e,r){return 255*(t<60?e+(r-e)*t/60:t<180?r:t<240?e+(r-e)*(240-t)/60:e)}e(n,v,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:g,formatHex:g,formatHsl:function(){return S(this).formatHsl()},formatRgb:m,toString:m}),e(w,_,r(n,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new w(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new w(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:T,formatHex:T,formatRgb:k,toString:k})),e(L,E,r(n,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new L(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new L(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*e,i=2*r-n;return new w(C(t>=240?t-240:t+120,i,n),C(t,i,n),C(t<120?t+240:t-120,i,n),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?\"hsl(\":\"hsla(\")+(this.h||0)+\", \"+100*(this.s||0)+\"%, \"+100*(this.l||0)+\"%\"+(1===t?\")\":\", \"+t+\")\")}}));var P=Math.PI/180,I=180/Math.PI,O=6/29,z=3*O*O;function D(t){if(t instanceof F)return new F(t.l,t.a,t.b,t.opacity);if(t instanceof q)return G(t);t instanceof w||(t=b(t));var e,r,n=U(t.r),i=U(t.g),a=U(t.b),o=B((.2225045*n+.7168786*i+.0606169*a)/1);return n===i&&i===a?e=r=o:(e=B((.4360747*n+.3850649*i+.1430804*a)/.96422),r=B((.0139322*n+.0971045*i+.7141733*a)/.82521)),new F(116*o-16,500*(e-o),200*(o-r),t.opacity)}function R(t,e,r,n){return 1===arguments.length?D(t):new F(t,e,r,null==n?1:n)}function F(t,e,r,n){this.l=+t,this.a=+e,this.b=+r,this.opacity=+n}function B(t){return t>.008856451679035631?Math.pow(t,1/3):t/z+4/29}function N(t){return t>O?t*t*t:z*(t-4/29)}function j(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function U(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function V(t){if(t instanceof q)return new q(t.h,t.c,t.l,t.opacity);if(t instanceof F||(t=D(t)),0===t.a&&0===t.b)return new q(NaN,0=0&&(r=t.slice(n+1),t=t.slice(0,n)),t&&!e.hasOwnProperty(t))throw new Error(\"unknown type: \"+t);return{type:t,name:r}}))}function a(t,e){for(var r,n=0,i=t.length;n0)for(var r,n,i=new Array(r),a=0;ah+c||np+c||au.index){var f=h-s.x-s.vx,m=p-s.y-s.vy,v=f*f+m*m;vt.r&&(t.r=t[e].r)}function h(){if(r){var e,i,a=r.length;for(n=new Array(a),e=0;e=c)){(t.data!==r||t.next)&&(0===f&&(d+=(f=o())*f),0===h&&(d+=(h=o())*h),d1?(null==r?u.remove(t):u.set(t,v(r)),e):u.get(t)},find:function(e,r,n){var i,a,o,s,l,c=0,u=t.length;for(null==n?n=1/0:n*=n,c=0;c1?(h.on(t,r),e):h.on(t)}}},t.forceX=function(t){var e,r,n,i=a(.1);function o(t){for(var i,a=0,o=e.length;a1?n[0]+n.slice(2):n,+t.slice(r+1)]}function r(t){return(t=e(Math.abs(t)))?t[1]:NaN}var n,i=/^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;function a(t){if(!(e=i.exec(t)))throw new Error(\"invalid format: \"+t);var e;return new o({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function o(t){this.fill=void 0===t.fill?\" \":t.fill+\"\",this.align=void 0===t.align?\">\":t.align+\"\",this.sign=void 0===t.sign?\"-\":t.sign+\"\",this.symbol=void 0===t.symbol?\"\":t.symbol+\"\",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?\"\":t.type+\"\"}function s(t,r){var n=e(t,r);if(!n)return t+\"\";var i=n[0],a=n[1];return a<0?\"0.\"+new Array(-a).join(\"0\")+i:i.length>a+1?i.slice(0,a+1)+\".\"+i.slice(a+1):i+new Array(a-i.length+2).join(\"0\")}a.prototype=o.prototype,o.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?\"0\":\"\")+(void 0===this.width?\"\":Math.max(1,0|this.width))+(this.comma?\",\":\"\")+(void 0===this.precision?\"\":\".\"+Math.max(0,0|this.precision))+(this.trim?\"~\":\"\")+this.type};var l={\"%\":function(t,e){return(100*t).toFixed(e)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+\"\"},d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString(\"en\").replace(/,/g,\"\"):t.toString(10)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},g:function(t,e){return t.toPrecision(e)},o:function(t){return Math.round(t).toString(8)},p:function(t,e){return s(100*t,e)},r:s,s:function(t,r){var i=e(t,r);if(!i)return t+\"\";var a=i[0],o=i[1],s=o-(n=3*Math.max(-8,Math.min(8,Math.floor(o/3))))+1,l=a.length;return s===l?a:s>l?a+new Array(s-l+1).join(\"0\"):s>0?a.slice(0,s)+\".\"+a.slice(s):\"0.\"+new Array(1-s).join(\"0\")+e(t,Math.max(0,r+s-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}};function c(t){return t}var u,f=Array.prototype.map,h=[\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"\\xb5\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];function p(t){var e,i,o=void 0===t.grouping||void 0===t.thousands?c:(e=f.call(t.grouping,Number),i=t.thousands+\"\",function(t,r){for(var n=t.length,a=[],o=0,s=e[0],l=0;n>0&&s>0&&(l+s+1>r&&(s=Math.max(1,r-l)),a.push(t.substring(n-=s,n+s)),!((l+=s+1)>r));)s=e[o=(o+1)%e.length];return a.reverse().join(i)}),s=void 0===t.currency?\"\":t.currency[0]+\"\",u=void 0===t.currency?\"\":t.currency[1]+\"\",p=void 0===t.decimal?\".\":t.decimal+\"\",d=void 0===t.numerals?c:function(t){return function(e){return e.replace(/[0-9]/g,(function(e){return t[+e]}))}}(f.call(t.numerals,String)),g=void 0===t.percent?\"%\":t.percent+\"\",m=void 0===t.minus?\"-\":t.minus+\"\",v=void 0===t.nan?\"NaN\":t.nan+\"\";function y(t){var e=(t=a(t)).fill,r=t.align,i=t.sign,c=t.symbol,f=t.zero,y=t.width,x=t.comma,b=t.precision,_=t.trim,w=t.type;\"n\"===w?(x=!0,w=\"g\"):l[w]||(void 0===b&&(b=12),_=!0,w=\"g\"),(f||\"0\"===e&&\"=\"===r)&&(f=!0,e=\"0\",r=\"=\");var T=\"$\"===c?s:\"#\"===c&&/[boxX]/.test(w)?\"0\"+w.toLowerCase():\"\",k=\"$\"===c?u:/[%p]/.test(w)?g:\"\",A=l[w],M=/[defgprs%]/.test(w);function S(t){var a,s,l,c=T,u=k;if(\"c\"===w)u=A(t)+u,t=\"\";else{var g=(t=+t)<0||1/t<0;if(t=isNaN(t)?v:A(Math.abs(t),b),_&&(t=function(t){t:for(var e,r=t.length,n=1,i=-1;n0&&(i=0)}return i>0?t.slice(0,i)+t.slice(e+1):t}(t)),g&&0==+t&&\"+\"!==i&&(g=!1),c=(g?\"(\"===i?i:m:\"-\"===i||\"(\"===i?\"\":i)+c,u=(\"s\"===w?h[8+n/3]:\"\")+u+(g&&\"(\"===i?\")\":\"\"),M)for(a=-1,s=t.length;++a(l=t.charCodeAt(a))||l>57){u=(46===l?p+t.slice(a+1):t.slice(a))+u,t=t.slice(0,a);break}}x&&!f&&(t=o(t,1/0));var S=c.length+t.length+u.length,E=S>1)+c+t+u+E.slice(S);break;default:t=E+c+t+u}return d(t)}return b=void 0===b?6:/[gprs]/.test(w)?Math.max(1,Math.min(21,b)):Math.max(0,Math.min(20,b)),S.toString=function(){return t+\"\"},S}return{format:y,formatPrefix:function(t,e){var n=y(((t=a(t)).type=\"f\",t)),i=3*Math.max(-8,Math.min(8,Math.floor(r(e)/3))),o=Math.pow(10,-i),s=h[8+i/3];return function(t){return n(o*t)+s}}}}function d(e){return u=p(e),t.format=u.format,t.formatPrefix=u.formatPrefix,u}d({decimal:\".\",thousands:\",\",grouping:[3],currency:[\"$\",\"\"],minus:\"-\"}),t.FormatSpecifier=o,t.formatDefaultLocale=d,t.formatLocale=p,t.formatSpecifier=a,t.precisionFixed=function(t){return Math.max(0,-r(Math.abs(t)))},t.precisionPrefix=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(r(e)/3)))-r(Math.abs(t)))},t.precisionRound=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,r(e)-r(t))+1},Object.defineProperty(t,\"__esModule\",{value:!0})}))},{}],113:[function(t,e,r){!function(n,i){\"object\"==typeof r&&void 0!==e?i(r,t(\"d3-geo\"),t(\"d3-array\")):i(n.d3=n.d3||{},n.d3,n.d3)}(this,(function(t,e,r){\"use strict\";var n=Math.abs,i=Math.atan,a=Math.atan2,o=Math.cos,s=Math.exp,l=Math.floor,c=Math.log,u=Math.max,f=Math.min,h=Math.pow,p=Math.round,d=Math.sign||function(t){return t>0?1:t<0?-1:0},g=Math.sin,m=Math.tan,v=1e-6,y=Math.PI,x=y/2,b=y/4,_=Math.SQRT1_2,w=L(2),T=L(y),k=2*y,A=180/y,M=y/180;function S(t){return t>1?x:t<-1?-x:Math.asin(t)}function E(t){return t>1?0:t<-1?y:Math.acos(t)}function L(t){return t>0?Math.sqrt(t):0}function C(t){return(s(t)-s(-t))/2}function P(t){return(s(t)+s(-t))/2}function I(t){var e=m(t/2),r=2*c(o(t/2))/(e*e);function i(t,e){var n=o(t),i=o(e),a=g(e),s=i*n,l=-((1-s?c((1+s)/2)/(1-s):-.5)+r/(1+s));return[l*i*g(t),l*a]}return i.invert=function(e,i){var s,l=L(e*e+i*i),u=-t/2,f=50;if(!l)return[0,0];do{var h=u/2,p=o(h),d=g(h),m=d/p,y=-c(n(p));u-=s=(2/m*y-r*m-l)/(-y/(d*d)+1-r/(2*p*p))*(p<0?.7:1)}while(n(s)>v&&--f>0);var x=g(u);return[a(e*x,l*o(u)),S(i*x/l)]},i}function O(t,e){var r=o(e),n=function(t){return t?t/Math.sin(t):1}(E(r*o(t/=2)));return[2*r*g(t)*n,g(e)*n]}function z(t){var e=g(t),r=o(t),i=t>=0?1:-1,s=m(i*t),l=(1+e-r)/2;function c(t,n){var c=o(n),u=o(t/=2);return[(1+c)*g(t),(i*n>-a(u,s)-.001?0:10*-i)+l+g(n)*r-(1+c)*e*u]}return c.invert=function(t,c){var u=0,f=0,h=50;do{var p=o(u),d=g(u),m=o(f),y=g(f),x=1+m,b=x*d-t,_=l+y*r-x*e*p-c,w=x*p/2,T=-d*y,k=e*x*d/2,A=r*m+e*p*y,M=T*k-A*w,S=(_*T-b*A)/M/2,E=(b*k-_*w)/M;n(E)>2&&(E/=2),u-=S,f-=E}while((n(S)>v||n(E)>v)&&--h>0);return i*f>-a(o(u),s)-.001?[2*u,f]:null},c}function D(t,e){var r=m(e/2),n=L(1-r*r),i=1+n*o(t/=2),a=g(t)*n/i,s=r/i,l=a*a,c=s*s;return[4/3*a*(3+l-3*c),4/3*s*(3+3*l-c)]}O.invert=function(t,e){if(!(t*t+4*e*e>y*y+v)){var r=t,i=e,a=25;do{var s,l=g(r),c=g(r/2),u=o(r/2),f=g(i),h=o(i),p=g(2*i),d=f*f,m=h*h,x=c*c,b=1-m*u*u,_=b?E(h*u)*L(s=1/b):s=0,w=2*_*h*c-t,T=_*f-e,k=s*(m*x+_*h*u*d),A=s*(.5*l*p-2*_*f*c),M=.25*s*(p*c-_*f*m*l),S=s*(d*u+_*x*h),C=A*M-S*k;if(!C)break;var P=(T*A-w*S)/C,I=(w*M-T*k)/C;r-=P,i-=I}while((n(P)>v||n(I)>v)&&--a>0);return[r,i]}},D.invert=function(t,e){if(e*=3/8,!(t*=3/8)&&n(e)>1)return null;var r=1+t*t+e*e,i=L((r-L(r*r-4*e*e))/2),s=S(i)/3,l=i?function(t){return c(t+L(t*t-1))}(n(e/i))/3:function(t){return c(t+L(t*t+1))}(n(t))/3,u=o(s),f=P(l),h=f*f-u*u;return[2*d(t)*a(C(l)*u,.25-h),2*d(e)*a(f*g(s),.25+h)]};var R=L(8),F=c(1+w);function B(t,e){var r=n(e);return rx){var l=a(s[1],s[0]),c=L(s[0]*s[0]+s[1]*s[1]),u=r*p((l-x)/r)+x,f=a(g(l-=u),2-o(l));l=u+S(y/c*g(f))-f,s[0]=c*o(l),s[1]=c*g(l)}return s}return s.invert=function(t,n){var s=L(t*t+n*n);if(s>x){var l=a(n,t),c=r*p((l-x)/r)+x,u=l>c?-1:1,f=s*o(c-l),h=1/m(u*E((f-y)/L(y*(y-2*f)+s*s)));l=c+2*i((h+u*L(h*h-3))/3),t=s*o(l),n=s*g(l)}return e.geoAzimuthalEquidistantRaw.invert(t,n)},s}function j(t,r){if(arguments.length<2&&(r=t),1===r)return e.geoAzimuthalEqualAreaRaw;if(r===1/0)return U;function n(n,i){var a=e.geoAzimuthalEqualAreaRaw(n/r,i);return a[0]*=t,a}return n.invert=function(n,i){var a=e.geoAzimuthalEqualAreaRaw.invert(n/t,i);return a[0]*=r,a},n}function U(t,e){return[t*o(e)/o(e/=2),2*g(e)]}function V(t,e,r){var i,a,o,s=100;r=void 0===r?0:+r,e=+e;do{(a=t(r))===(o=t(r+v))&&(o=a+v),r-=i=-1*v*(a-e)/(a-o)}while(s-- >0&&n(i)>v);return s<0?NaN:r}function H(t,e,r){return void 0===e&&(e=40),void 0===r&&(r=1e-12),function(i,a,o,s){var l,c,u;o=void 0===o?0:+o,s=void 0===s?0:+s;for(var f=0;fl)o-=c/=2,s-=u/=2;else{l=g;var m=(o>0?-1:1)*r,v=(s>0?-1:1)*r,y=t(o+m,s),x=t(o,s+v),b=(y[0]-h[0])/m,_=(y[1]-h[1])/m,w=(x[0]-h[0])/v,T=(x[1]-h[1])/v,k=T*b-_*w,A=(n(k)<.5?.5:1)/k;if(o+=c=(d*w-p*T)*A,s+=u=(p*_-d*b)*A,n(c)0&&(i[1]*=1+a/1.5*i[0]*i[0]),i}return e.invert=H(e),e}function G(t,e){var r,i=t*g(e),a=30;do{e-=r=(e+g(e)-i)/(1+o(e))}while(n(r)>v&&--a>0);return e/2}function Y(t,e,r){function n(n,i){return[t*n*o(i=G(r,i)),e*g(i)]}return n.invert=function(n,i){return i=S(i/e),[n/(t*o(i)),S((2*i+g(2*i))/r)]},n}B.invert=function(t,e){if((a=n(e))1e-12&&--u>0);return[t/(o(l)*(R-1/g(l))),d(e)*l]},U.invert=function(t,e){var r=2*S(e/2);return[t*o(r/2)/o(r),r]};var W=Y(w/x,w,y);var X=2.00276,Z=1.11072;function J(t,e){var r=G(y,e);return[X*t/(1/o(e)+Z/o(r)),(e+w*g(r))/X]}function K(t){var r=0,n=e.geoProjectionMutator(t),i=n(r);return i.parallel=function(t){return arguments.length?n(r=t*M):r*A},i}function Q(t,e){return[t*o(e),e]}function $(t){if(!t)return Q;var e=1/m(t);function r(r,n){var i=e+t-n,a=i?r*o(n)/i:i;return[i*g(a),e-i*o(a)]}return r.invert=function(r,n){var i=L(r*r+(n=e-n)*n),s=e+t-i;return[i/o(s)*a(r,n),s]},r}function tt(t){function e(e,r){var n=x-r,i=n?e*t*g(n)/n:n;return[n*g(i)/t,x-n*o(i)]}return e.invert=function(e,r){var n=e*t,i=x-r,o=L(n*n+i*i),s=a(n,i);return[(o?o/g(o):1)*s/t,x-o]},e}J.invert=function(t,e){var r,i,a=X*e,s=e<0?-b:b,l=25;do{i=a-w*g(s),s-=r=(g(2*s)+2*s-y*g(i))/(2*o(2*s)+2+y*o(i)*w*o(s))}while(n(r)>v&&--l>0);return i=a-w*g(s),[t*(1/o(i)+Z/o(s))/X,i]},Q.invert=function(t,e){return[t/o(e),e]};var et=Y(1,4/y,y);function rt(t,e,r,i,s,l){var c,u=o(l);if(n(t)>1||n(l)>1)c=E(r*s+e*i*u);else{var f=g(t/2),h=g(l/2);c=2*S(L(f*f+e*i*h*h))}return n(c)>v?[c,a(i*g(l),e*s-r*i*u)]:[0,0]}function nt(t,e,r){return E((t*t+e*e-r*r)/(2*t*e))}function it(t){return t-2*y*l((t+y)/(2*y))}function at(t,e,r){for(var n,i=[[t[0],t[1],g(t[1]),o(t[1])],[e[0],e[1],g(e[1]),o(e[1])],[r[0],r[1],g(r[1]),o(r[1])]],a=i[2],s=0;s<3;++s,a=n)n=i[s],a.v=rt(n[1]-a[1],a[3],a[2],n[3],n[2],n[0]-a[0]),a.point=[0,0];var l=nt(i[0].v[0],i[2].v[0],i[1].v[0]),c=nt(i[0].v[0],i[1].v[0],i[2].v[0]),u=y-l;i[2].point[1]=0,i[0].point[0]=-(i[1].point[0]=i[0].v[0]/2);var f=[i[2].point[0]=i[0].point[0]+i[2].v[0]*o(l),2*(i[0].point[1]=i[1].point[1]=i[2].v[0]*g(l))];return function(t,e){var r,n=g(e),a=o(e),s=new Array(3);for(r=0;r<3;++r){var l=i[r];if(s[r]=rt(e-l[1],l[3],l[2],a,n,t-l[0]),!s[r][0])return l.point;s[r][1]=it(s[r][1]-l.v[1])}var h=f.slice();for(r=0;r<3;++r){var p=2==r?0:r+1,d=nt(i[r].v[0],s[r][0],s[p][0]);s[r][1]<0&&(d=-d),r?1==r?(d=c-d,h[0]-=s[r][0]*o(d),h[1]-=s[r][0]*g(d)):(d=u-d,h[0]+=s[r][0]*o(d),h[1]+=s[r][0]*g(d)):(h[0]+=s[r][0]*o(d),h[1]-=s[r][0]*g(d))}return h[0]/=3,h[1]/=3,h}}function ot(t){return t[0]*=M,t[1]*=M,t}function st(t,r,n){var i=e.geoCentroid({type:\"MultiPoint\",coordinates:[t,r,n]}),a=[-i[0],-i[1]],o=e.geoRotation(a),s=at(ot(o(t)),ot(o(r)),ot(o(n)));s.invert=H(s);var l=e.geoProjection(s).rotate(a),c=l.center;return delete l.rotate,l.center=function(t){return arguments.length?c(o(t)):o.invert(c())},l.clipAngle(90)}function lt(t,e){var r=L(1-g(e));return[2/T*t*r,T*(1-r)]}function ct(t){var e=m(t);function r(t,r){return[t,(t?t/g(t):1)*(g(r)*o(t)-e*o(r))]}return r.invert=e?function(t,r){t&&(r*=g(t)/t);var n=o(t);return[t,2*a(L(n*n+e*e-r*r)-n,e-r)]}:function(t,e){return[t,S(t?e*m(t)/t:e)]},r}lt.invert=function(t,e){var r=(r=e/T-1)*r;return[r>0?t*L(y/r)/2:0,S(1-r)]};var ut=L(3);function ft(t,e){return[ut*t*(2*o(2*e/3)-1)/T,ut*T*g(e/3)]}function ht(t){var e=o(t);function r(t,r){return[t*e,g(r)/e]}return r.invert=function(t,r){return[t/e,S(r*e)]},r}function pt(t){var e=o(t);function r(t,r){return[t*e,(1+e)*m(r/2)]}return r.invert=function(t,r){return[t/e,2*i(r/(1+e))]},r}function dt(t,e){var r=L(8/(3*y));return[r*t*(1-n(e)/y),r*e]}function gt(t,e){var r=L(4-3*g(n(e)));return[2/L(6*y)*t*r,d(e)*L(2*y/3)*(2-r)]}function mt(t,e){var r=L(y*(4+y));return[2/r*t*(1+L(1-4*e*e/(y*y))),4/r*e]}function vt(t,e){var r=(2+x)*g(e);e/=2;for(var i=0,a=1/0;i<10&&n(a)>v;i++){var s=o(e);e-=a=(e+g(e)*(s+2)-r)/(2*s*(1+s))}return[2/L(y*(4+y))*t*(1+o(e)),2*L(y/(4+y))*g(e)]}function yt(t,e){return[t*(1+o(e))/L(2+y),2*e/L(2+y)]}function xt(t,e){for(var r=(1+x)*g(e),i=0,a=1/0;i<10&&n(a)>v;i++)e-=a=(e+g(e)-r)/(1+o(e));return r=L(2+y),[t*(1+o(e))/r,2*e/r]}ft.invert=function(t,e){var r=3*S(e/(ut*T));return[T*t/(ut*(2*o(2*r/3)-1)),r]},dt.invert=function(t,e){var r=L(8/(3*y)),i=e/r;return[t/(r*(1-n(i)/y)),i]},gt.invert=function(t,e){var r=2-n(e)/L(2*y/3);return[t*L(6*y)/(2*r),d(e)*S((4-r*r)/3)]},mt.invert=function(t,e){var r=L(y*(4+y))/2;return[t*r/(1+L(1-e*e*(4+y)/(4*y))),e*r/2]},vt.invert=function(t,e){var r=e*L((4+y)/y)/2,n=S(r),i=o(n);return[t/(2/L(y*(4+y))*(1+i)),S((n+r*(i+2))/(2+x))]},yt.invert=function(t,e){var r=L(2+y),n=e*r/2;return[r*t/(1+o(n)),n]},xt.invert=function(t,e){var r=1+x,n=L(r/2);return[2*t*n/(1+o(e*=n)),S((e+g(e))/r)]};var bt=3+2*w;function _t(t,e){var r=g(t/=2),n=o(t),a=L(o(e)),s=o(e/=2),l=g(e)/(s+w*n*a),u=L(2/(1+l*l)),f=L((w*s+(n+r)*a)/(w*s+(n-r)*a));return[bt*(u*(f-1/f)-2*c(f)),bt*(u*l*(f+1/f)-2*i(l))]}_t.invert=function(t,e){if(!(r=D.invert(t/1.2,1.065*e)))return null;var r,a=r[0],s=r[1],l=20;t/=bt,e/=bt;do{var h=a/2,p=s/2,d=g(h),m=o(h),y=g(p),b=o(p),T=o(s),k=L(T),A=y/(b+w*m*k),M=A*A,S=L(2/(1+M)),E=(w*b+(m+d)*k)/(w*b+(m-d)*k),C=L(E),P=C-1/C,I=C+1/C,O=S*P-2*c(C)-t,z=S*A*I-2*i(A)-e,R=y&&_*k*d*M/y,F=(w*m*b+k)/(2*(b+w*m*k)*(b+w*m*k)*k),B=-.5*A*S*S*S,N=B*R,j=B*F,U=(U=2*b+w*k*(m-d))*U*C,V=(w*m*b*k+T)/U,H=-w*d*y/(k*U),q=P*N-2*V/C+S*(V+V/E),G=P*j-2*H/C+S*(H+H/E),Y=A*I*N-2*R/(1+M)+S*I*R+S*A*(V-V/E),W=A*I*j-2*F/(1+M)+S*I*F+S*A*(H-H/E),X=G*Y-W*q;if(!X)break;var Z=(z*G-O*W)/X,J=(O*Y-z*q)/X;a-=Z,s=u(-x,f(x,s-J))}while((n(Z)>v||n(J)>v)&&--l>0);return n(n(s)-x)s){var d=L(h),m=a(f,u),b=i*p(m/i),_=m-b,w=t*o(_),T=(t*g(_)-_*g(w))/(x-w),k=Lt(_,T),A=(y-t)/Ct(k,w,y);u=d;var M,S=50;do{u-=M=(t+Ct(k,w,u)*A-d)/(k(u)*A)}while(n(M)>v&&--S>0);f=_*g(u),us){var u=L(c),f=a(l,r),h=i*p(f/i),d=f-h;r=u*o(d),l=u*g(d);for(var m=r-x,v=g(r),b=l/v,_=rv||n(p)>v)&&--x>0);return[d,m]},u}Tt.invert=function(t,e){var r=e/(1+wt);return[t&&t/(wt*L(1-r*r)),2*i(r)]},kt.invert=function(t,e){var r=i(e/T),n=o(r),a=2*r;return[t*T/2/(o(a)*n*n),a]};var It=Pt(2.8284,-1.6988,.75432,-.18071,1.76003,-.38914,.042555);var Ot=Pt(2.583819,-.835827,.170354,-.038094,1.543313,-.411435,.082742);var zt=Pt(5/6*y,-.62636,-.0344,0,1.3493,-.05524,0,.045);function Dt(t,e){var r=t*t,n=e*e;return[t*(1-.162388*n)*(.87-952426e-9*r*r),e*(1+n/12)]}Dt.invert=function(t,e){var r,i=t,a=e,o=50;do{var s=a*a;a-=r=(a*(1+s/12)-e)/(1+s/4)}while(n(r)>v&&--o>0);o=50,t/=1-.162388*s;do{var l=(l=i*i)*l;i-=r=(i*(.87-952426e-9*l)-t)/(.87-.00476213*l)}while(n(r)>v&&--o>0);return[i,a]};var Rt=Pt(2.6516,-.76534,.19123,-.047094,1.36289,-.13965,.031762);function Ft(t){var e=t(x,0)[0]-t(-x,0)[0];function r(r,n){var i=r>0?-.5:.5,a=t(r+i*y,n);return a[0]-=i*e,a}return t.invert&&(r.invert=function(r,n){var i=r>0?-.5:.5,a=t.invert(r+i*e,n),o=a[0]-i*y;return o<-y?o+=2*y:o>y&&(o-=2*y),a[0]=o,a}),r}function Bt(t,e){var r=d(t),i=d(e),s=o(e),l=o(t)*s,c=g(t)*s,u=g(i*e);t=n(a(c,u)),e=S(l),n(t-x)>v&&(t%=x);var f=function(t,e){if(e===x)return[0,0];var r,i,a=g(e),s=a*a,l=s*s,c=1+l,u=1+3*l,f=1-l,h=S(1/L(c)),p=f+s*c*h,d=(1-a)/p,m=L(d),b=d*c,_=L(b),w=m*f;if(0===t)return[0,-(w+s*_)];var T,k=o(e),A=1/k,M=2*a*k,E=(-p*k-(-3*s+h*u)*M*(1-a))/(p*p),C=-A*M,P=-A*(s*c*E+d*u*M),I=-2*A*(f*(.5*E/m)-2*s*m*M),O=4*t/y;if(t>.222*y||e.175*y){if(r=(w+s*L(b*(1+l)-w*w))/(1+l),t>y/4)return[r,r];var z=r,D=.5*r;r=.5*(D+z),i=50;do{var R=L(b-r*r),F=r*(I+C*R)+P*S(r/_)-O;if(!F)break;F<0?D=r:z=r,r=.5*(D+z)}while(n(z-D)>v&&--i>0)}else{r=v,i=25;do{var B=r*r,N=L(b-B),j=I+C*N,U=r*j+P*S(r/_)-O,V=j+(P-C*B)/N;r-=T=N?U/V:0}while(n(T)>v&&--i>0)}return[r,-w-s*L(b-r*r)]}(t>y/4?x-t:t,e);return t>y/4&&(u=f[0],f[0]=-f[1],f[1]=-u),f[0]*=r,f[1]*=-i,f}function Nt(t,e){var r,a,l,c,u,f;if(e=1-v)return r=(1-e)/4,l=1/(a=P(t)),[(c=((f=s(2*(f=t)))-1)/(f+1))+r*((u=a*C(t))-t)/(a*a),l-r*c*l*(u-t),l+r*c*l*(u+t),2*i(s(t))-x+r*(u-t)/a];var h=[1,0,0,0,0,0,0,0,0],p=[L(e),0,0,0,0,0,0,0,0],d=0;for(a=L(1-e),u=1;n(p[d]/h[d])>v&&d<8;)r=h[d++],p[d]=(r-a)/2,h[d]=(r+a)/2,a=L(r*a),u*=2;l=u*h[d]*t;do{l=(S(c=p[d]*g(a=l)/h[d])+l)/2}while(--d);return[g(l),c=o(l),c/o(l-a),l]}function jt(t,e){if(!e)return t;if(1===e)return c(m(t/2+b));for(var r=1,a=L(1-e),o=L(e),s=0;n(o)>v;s++){if(t%y){var l=i(a*m(t)/r);l<0&&(l+=y),t+=l+~~(t/y)*y}else t+=t;o=(r+a)/2,a=L(r*a),o=((r=o)-a)/2}return t/(h(2,s)*r)}function Ut(t,e){var r=(w-1)/(w+1),l=L(1-r*r),u=jt(x,l*l),f=c(m(y/4+n(e)/2)),h=s(-1*f)/L(r),p=function(t,e){var r=t*t,n=e+1,i=1-r-e*e;return[.5*((t>=0?x:-x)-a(i,2*t)),-.25*c(i*i+4*r)+.5*c(n*n+r)]}(h*o(-1*t),h*g(-1*t)),v=function(t,e,r){var a=n(t),o=C(n(e));if(a){var s=1/g(a),l=1/(m(a)*m(a)),c=-(l+r*(o*o*s*s)-1+r),u=(-c+L(c*c-4*((r-1)*l)))/2;return[jt(i(1/L(u)),r)*d(t),jt(i(L((u/l-1)/r)),1-r)*d(e)]}return[0,jt(i(o),1-r)*d(e)]}(p[0],p[1],l*l);return[-v[1],(e>=0?1:-1)*(.5*u-v[0])]}function Vt(t){var e=g(t),r=o(t),i=Ht(t);function s(t,a){var s=i(t,a);t=s[0],a=s[1];var l=g(a),c=o(a),u=o(t),f=E(e*l+r*c*u),h=g(f),p=n(h)>v?f/h:1;return[p*r*g(t),(n(t)>x?p:-p)*(e*c-r*l*u)]}return i.invert=Ht(-t),s.invert=function(t,r){var n=L(t*t+r*r),s=-g(n),l=o(n),c=n*l,u=-r*s,f=n*e,h=L(c*c+u*u-f*f),p=a(c*f+u*h,u*f-c*h),d=(n>x?-1:1)*a(t*s,n*o(p)*l+r*g(p)*s);return i.invert(d,p)},s}function Ht(t){var e=g(t),r=o(t);return function(t,n){var i=o(n),s=o(t)*i,l=g(t)*i,c=g(n);return[a(l,s*r-c*e),S(c*r+s*e)]}}Bt.invert=function(t,e){n(t)>1&&(t=2*d(t)-t),n(e)>1&&(e=2*d(e)-e);var r=d(t),i=d(e),s=-r*t,l=-i*e,c=l/s<1,u=function(t,e){var r=0,i=1,a=.5,s=50;for(;;){var l=a*a,c=L(a),u=S(1/L(1+l)),f=1-l+a*(1+l)*u,h=(1-c)/f,p=L(h),d=h*(1+l),g=p*(1-l),m=L(d-t*t),v=e+g+a*m;if(n(i-r)<1e-12||0==--s||0===v)break;v>0?r=a:i=a,a=.5*(r+i)}if(!s)return null;var x=S(c),b=o(x),_=1/b,w=2*c*b,T=(-f*b-(-3*a+u*(1+3*l))*w*(1-c))/(f*f);return[y/4*(t*(-2*_*(.5*T/p*(1-l)-2*a*p*w)+-_*w*m)+-_*(a*(1+l)*T+h*(1+3*l)*w)*S(t/L(d))),x]}(c?l:s,c?s:l),f=u[0],h=u[1],p=o(h);return c&&(f=-x-f),[r*(a(g(f)*p,-g(h))+y),i*S(o(f)*p)]},Ut.invert=function(t,e){var r,n,o,l,u,f,h=(w-1)/(w+1),p=L(1-h*h),d=jt(x,p*p),g=(n=-t,o=p*p,(r=.5*d-e)?(l=Nt(r,o),n?(f=(u=Nt(n,1-o))[1]*u[1]+o*l[0]*l[0]*u[0]*u[0],[[l[0]*u[2]/f,l[1]*l[2]*u[0]*u[1]/f],[l[1]*u[1]/f,-l[0]*l[2]*u[0]*u[2]/f],[l[2]*u[1]*u[2]/f,-o*l[0]*l[1]*u[0]/f]]):[[l[0],0],[l[1],0],[l[2],0]]):[[0,(u=Nt(n,1-o))[0]/u[1]],[1/u[1],0],[u[2]/u[1],0]]),m=function(t,e){var r=e[0]*e[0]+e[1]*e[1];return[(t[0]*e[0]+t[1]*e[1])/r,(t[1]*e[0]-t[0]*e[1])/r]}(g[0],g[1]);return[a(m[1],m[0])/-1,2*i(s(-.5*c(h*m[0]*m[0]+h*m[1]*m[1])))-x]};var qt=S(1-1/3)*A,Gt=ht(0);function Yt(t){var e=qt*M,r=lt(y,e)[0]-lt(-y,e)[0],i=Gt(0,e)[1],a=lt(0,e)[1],o=T-a,s=k/t,c=4/k,h=i+o*o*4/k;function p(p,d){var g,m=n(d);if(m>e){var v=f(t-1,u(0,l((p+y)/s)));(g=lt(p+=y*(t-1)/t-v*s,m))[0]=g[0]*k/r-k*(t-1)/(2*t)+v*k/t,g[1]=i+4*(g[1]-a)*o/k,d<0&&(g[1]=-g[1])}else g=Gt(p,d);return g[0]*=c,g[1]/=h,g}return p.invert=function(e,p){e/=c;var d=n(p*=h);if(d>i){var g=f(t-1,u(0,l((e+y)/s)));e=(e+y*(t-1)/t-g*s)*r/k;var m=lt.invert(e,.25*(d-i)*k/o+a);return m[0]-=y*(t-1)/t-g*s,p<0&&(m[1]=-m[1]),m}return Gt.invert(e,p)},p}function Wt(t,e){return[t,1&e?90-v:qt]}function Xt(t,e){return[t,1&e?-90+v:-qt]}function Zt(t){return[t[0]*(1-v),t[1]]}function Jt(t){var e,r=1+t,i=S(g(1/r)),s=2*L(y/(e=y+4*i*r)),l=.5*s*(r+L(t*(2+t))),c=t*t,u=r*r;function f(f,h){var p,d,m=1-g(h);if(m&&m<2){var v,b=x-h,_=25;do{var w=g(b),T=o(b),k=i+a(w,r-T),A=1+u-2*r*T;b-=v=(b-c*i-r*w+A*k-.5*m*e)/(2*r*w*k)}while(n(v)>1e-12&&--_>0);p=s*L(A),d=f*k/y}else p=s*(t+m),d=f*i/y;return[p*g(d),l-p*o(d)]}return f.invert=function(t,n){var o=t*t+(n-=l)*n,f=(1+u-o/(s*s))/(2*r),h=E(f),p=g(h),d=i+a(p,r-f);return[S(t/L(o))*y/d,S(1-2*(h-c*i-r*p+(1+u-2*r*f)*d)/e)]},f}function Kt(t,e){return e>-.7109889596207567?((t=W(t,e))[1]+=.0528035274542,t):Q(t,e)}function Qt(t,e){return n(e)>.7109889596207567?((t=W(t,e))[1]-=e>0?.0528035274542:-.0528035274542,t):Q(t,e)}function $t(t,e,r,n){var i=L(4*y/(2*r+(1+t-e/2)*g(2*r)+(t+e)/2*g(4*r)+e/2*g(6*r))),a=L(n*g(r)*L((1+t*o(2*r)+e*o(4*r))/(1+t+e))),s=r*c(1);function l(r){return L(1+t*o(2*r)+e*o(4*r))}function c(n){var i=n*r;return(2*i+(1+t-e/2)*g(2*i)+(t+e)/2*g(4*i)+e/2*g(6*i))/r}function u(t){return l(t)*g(t)}var f=function(t,e){var n=r*V(c,s*g(e)/r,e/y);isNaN(n)&&(n=r*d(e));var u=i*l(n);return[u*a*t/y*o(n),u/a*g(n)]};return f.invert=function(t,e){var n=V(u,e*a/i);return[t*y/(o(n)*i*a*l(n)),S(r*c(n/r)/s)]},0===r&&(i=L(n/y),(f=function(t,e){return[t*i,g(e)/i]}).invert=function(t,e){return[t/i,S(e*i)]}),f}function te(t,e,r,n,i){void 0===n&&(n=1e-8),void 0===i&&(i=20);var a=t(e),o=t(.5*(e+r)),s=t(r);return function t(e,r,n,i,a,o,s,l,c,u,f){if(f.nanEncountered)return NaN;var h,p,d,g,m,v,y,x,b,_;if(p=e(r+.25*(h=n-r)),d=e(n-.25*h),isNaN(p))f.nanEncountered=!0;else{if(!isNaN(d))return _=((v=(g=h*(i+4*p+a)/12)+(m=h*(a+4*d+o)/12))-s)/15,u>c?(f.maxDepthCount++,v+_):Math.abs(_)t?r=n:e=n,n=e+r>>1}while(n>e);var i=c[n+1]-c[n];return i&&(i=(t-c[n+1])/i),(n+1+i)/s}var p=2*f(1)/y*o/r,m=function(t,e){var r=f(n(g(e))),a=i(r)*t;return r/=p,[a,e>=0?r:-r]};return m.invert=function(t,e){var r;return n(e*=p)<1&&(r=d(e)*S(a(n(e))*o)),[t/i(n(e)),r]},m}function re(t,e){return n(t[0]-e[0])=0;--l)n=(e=t[1][l])[0][0],i=e[0][1],a=e[1][1],o=e[2][0],s=e[2][1],c.push(ne([[o-v,s-v],[o-v,a+v],[n+v,a+v],[n+v,i-v]],30));return{type:\"Polygon\",coordinates:[r.merge(c)]}}function ae(t,r,n){var i,a;function o(e,n){for(var i=n<0?-1:1,a=r[+(n<0)],o=0,s=a.length-1;oa[o][2][0];++o);var l=t(e-a[o][1][0],n);return l[0]+=t(a[o][1][0],i*n>i*a[o][0][1]?a[o][0][1]:n)[0],l}n?o.invert=n(o):t.invert&&(o.invert=function(e,n){for(var i=a[+(n<0)],s=r[+(n<0)],l=0,c=i.length;lo&&(r=a,a=o,o=r),[[n,a],[i,o]]}))})),s):r.map((function(t){return t.map((function(t){return[[t[0][0]*A,t[0][1]*A],[t[1][0]*A,t[1][1]*A],[t[2][0]*A,t[2][1]*A]]}))}))},null!=r&&s.lobes(r),s}Kt.invert=function(t,e){return e>-.7109889596207567?W.invert(t,e-.0528035274542):Q.invert(t,e)},Qt.invert=function(t,e){return n(e)>.7109889596207567?W.invert(t,e+(e>0?.0528035274542:-.0528035274542)):Q.invert(t,e)};var oe=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];var se=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];var le=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];var ce=[[[[-180,0],[-90,90],[0,0]],[[0,0],[90,90],[180,0]]],[[[-180,0],[-90,-90],[0,0]],[[0,0],[90,-90],[180,0]]]];var ue=[[[[-180,35],[-30,90],[0,35]],[[0,35],[30,90],[180,35]]],[[[-180,-10],[-102,-90],[-65,-10]],[[-65,-10],[5,-90],[77,-10]],[[77,-10],[103,-90],[180,-10]]]];var fe=[[[[-180,0],[-110,90],[-40,0]],[[-40,0],[0,90],[40,0]],[[40,0],[110,90],[180,0]]],[[[-180,0],[-110,-90],[-40,0]],[[-40,0],[0,-90],[40,0]],[[40,0],[110,-90],[180,0]]]];function he(t,e){return[3/k*t*L(y*y/3-e*e),e]}function pe(t){function e(e,r){if(n(n(r)-x)2)return null;var o=(e/=2)*e,s=(r/=2)*r,l=2*r/(1+o+s);return l=h((1+l)/(1-l),1/t),[a(2*e,1-o-s)/t,S((l-1)/(l+1))]},e}he.invert=function(t,e){return[k/3*t/L(y*y/3-e*e),e]};var de=y/w;function ge(t,e){return[t*(1+L(o(e)))/2,e/(o(e/2)*o(t/6))]}function me(t,e){var r=t*t,n=e*e;return[t*(.975534+n*(-.0143059*r-.119161+-.0547009*n)),e*(1.00384+r*(.0802894+-.02855*n+199025e-9*r)+n*(.0998909+-.0491032*n))]}function ve(t,e){return[g(t)/o(e),m(e)*o(t)]}function ye(t){var e=o(t),r=m(b+t/2);function i(i,a){var o=a-t,s=n(o)=0;)h=(f=t[u])[0]+l*(i=h)-c*p,p=f[1]+l*p+c*i;return[h=l*(i=h)-c*p,p=l*p+c*i]}return r.invert=function(r,s){var l=20,c=r,u=s;do{for(var f,h=e,p=t[h],d=p[0],m=p[1],v=0,y=0;--h>=0;)v=d+c*(f=v)-u*y,y=m+c*y+u*f,d=(p=t[h])[0]+c*(f=d)-u*m,m=p[1]+c*m+u*f;var x,b,_=(v=d+c*(f=v)-u*y)*v+(y=m+c*y+u*f)*y;c-=x=((d=c*(f=d)-u*m-r)*v+(m=c*m+u*f-s)*y)/_,u-=b=(m*v-d*y)/_}while(n(x)+n(b)>1e-12&&--l>0);if(l){var w=L(c*c+u*u),T=2*i(.5*w),k=g(T);return[a(c*k,w*o(T)),w?S(u*k/w):0]}},r}ge.invert=function(t,e){var r=n(t),i=n(e),a=v,s=x;iv||n(b)>v)&&--a>0);return a&&[r,i]},ve.invert=function(t,e){var r=t*t,n=e*e+1,i=r+n,a=t?_*L((i-L(i*i-4*r))/r):1/L(n);return[S(t*a),d(e)*E(a)]},xe.invert=function(t,e){return[t,2.5*i(s(.8*e))-.625*y]};var _e=[[.9972523,0],[.0052513,-.0041175],[.0074606,.0048125],[-.0153783,-.1968253],[.0636871,-.1408027],[.3660976,-.2937382]],we=[[.98879,0],[0,0],[-.050909,0],[0,0],[.075528,0]],Te=[[.984299,0],[.0211642,.0037608],[-.1036018,-.0575102],[-.0329095,-.0320119],[.0499471,.1223335],[.026046,.0899805],[7388e-7,-.1435792],[.0075848,-.1334108],[-.0216473,.0776645],[-.0225161,.0853673]],ke=[[.9245,0],[0,0],[.01943,0]],Ae=[[.721316,0],[0,0],[-.00881625,-.00617325]];function Me(t,r){var n=e.geoProjection(be(t)).rotate(r).clipAngle(90),i=e.geoRotation(r),a=n.center;return delete n.rotate,n.center=function(t){return arguments.length?a(i(t)):i.invert(a())},n}var Se=L(6),Ee=L(7);function Le(t,e){var r=S(7*g(e)/(3*Se));return[Se*t*(2*o(2*r/3)-1)/Ee,9*g(r/3)/Ee]}function Ce(t,e){for(var r,i=(1+_)*g(e),a=e,s=0;s<25&&(a-=r=(g(a/2)+g(a)-i)/(.5*o(a/2)+o(a)),!(n(r)1e-12&&--l>0);return[t/(.84719-.13063*(i=s*s)+(o=i*(a=i*i))*o*(.05494*i-.04515-.02326*a+.00331*o)),s]},Oe.invert=function(t,e){for(var r=e/2,i=0,a=1/0;i<10&&n(a)>v;++i){var s=o(e/2);e-=a=(e-m(e/2)-r)/(1-.5/(s*s))}return[2*t/(1+o(e)),e]};var ze=[[[[-180,0],[-90,90],[0,0]],[[0,0],[90,90],[180,0]]],[[[-180,0],[-90,-90],[0,0]],[[0,0],[90,-90],[180,0]]]];function De(t,e){var r=g(e),i=o(e),a=d(t);if(0===t||n(e)===x)return[0,e];if(0===e)return[t,0];if(n(t)===x)return[t*i,x*r];var s=y/(2*t)-2*t/y,l=2*e/y,c=(1-l*l)/(r-l),u=s*s,f=c*c,h=1+u/f,p=1+f/u,m=(s*r/c-s/2)/h,v=(f*r/u+c/2)/p,b=v*v-(f*r*r/u+c*r-1)/p;return[x*(m+L(m*m+i*i/h)*a),x*(v+L(b<0?0:b)*d(-e*s)*a)]}De.invert=function(t,e){var r=(t/=x)*t,n=r+(e/=x)*e,i=y*y;return[t?(n-1+L((1-n)*(1-n)+4*r))/(2*t)*x:0,V((function(t){return n*(y*g(t)-2*t)*y+4*t*t*(e-g(t))+2*y*t-i*e}),0)]};function Re(t,e){var r=e*e;return[t,e*(1.0148+r*r*(.23185+r*(.02406*r-.14499)))]}function Fe(t,e){if(n(e)=0;)if(n=e[s],r[0]===n[0]&&r[1]===n[1]){if(a)return[a,r];a=r}}}(e.face,r.face),i=Be(n.map(r.project),n.map(e.project));e.transform=r.transform?Ne(r.transform,i):i;for(var a=r.edges,o=0,s=a.length;o1.790857183?e=1.790857183:e<-1.790857183&&(e=-1.790857183);var r,i=e;do{var a=i*i;i-=r=(i*(1.0148+a*a*(.23185+a*(.02406*a-.14499)))-e)/(1.0148+a*a*(5*.23185+a*(.21654*a-1.01493)))}while(n(r)>v);return[t,i]},Fe.invert=function(t,e){if(n(e)v&&--s>0);return l=m(a),[(n(e)n^p>n&&r<(h-c)*(n-u)/(p-u)+c&&(i=!i)}return i}(t[0],r))return t.push(e),!0}))||t.push([e])})),nr=[],t.length?t.length>1?{type:\"MultiPolygon\",coordinates:t}:{type:\"Polygon\",coordinates:t[0]}:null}};function sr(t){var r=t(x,0)[0]-t(-x,0)[0];function i(e,i){var a=n(e)0?e-y:e+y,i),s=(o[0]-o[1])*_,l=(o[0]+o[1])*_;if(a)return[s,l];var c=r*_,u=s>0^l>0?-1:1;return[u*s-d(l)*c,u*l-d(s)*c]}return t.invert&&(i.invert=function(e,i){var a=(e+i)*_,o=(i-e)*_,s=n(a)<.5*r&&n(o)<.5*r;if(!s){var l=r*_,c=a>0^o>0?-1:1,u=-c*e+(o>0?1:-1)*l,f=-c*i+(a>0?1:-1)*l;a=(-u-f)*_,o=(u-f)*_}var h=t.invert(a,o);return s||(h[0]+=a>0?y:-y),h}),e.geoProjection(i).rotate([-90,-90,45]).clipAngle(179.999)}function lr(){return sr(Ut).scale(111.48)}function cr(t){var e=g(t);function r(r,n){var a=e?m(r*e/2)/e:r/2;if(!n)return[2*a,-t];var s=2*i(a*g(n)),l=1/m(n);return[g(s)*l,n+(1-o(s))*l-t]}return r.invert=function(r,a){if(n(a+=t)v&&--u>0);var d=r*(f=m(c)),x=m(n(a)0?x:-x)*(h+o*(d-c)/2+o*o*(d-2*h+c)/2)]}function hr(t,e){var r=function(t){function e(e,r){var n=o(r),i=(t-1)/(t-n*o(e));return[i*n*g(e),i*g(r)]}return e.invert=function(e,r){var n=e*e+r*r,i=L(n),o=(t-L(1-n*(t+1)/(t-1)))/((t-1)/i+i/(t-1));return[a(e*o,i*L(1-o*o)),i?S(r*o/i):0]},e}(t);if(!e)return r;var n=o(e),i=g(e);function s(e,a){var o=r(e,a),s=o[1],l=s*i/(t-1)+n;return[o[0]*n/l,s/l]}return s.invert=function(e,a){var o=(t-1)/(t-1-a*i);return r.invert(o*e,o*a*n)},s}ur.forEach((function(t){t[1]*=1.0144})),fr.invert=function(t,e){var r=e/x,i=90*r,a=f(18,n(i/5)),o=u(0,l(a));do{var s=ur[o][1],c=ur[o+1][1],h=ur[f(19,o+2)][1],p=h-s,d=h-2*c+s,g=2*(n(r)-c)/p,m=d/p,v=g*(1-m*g*(1-2*m*g));if(v>=0||1===o){i=(e>=0?5:-5)*(v+a);var y,b=50;do{v=(a=f(18,n(i)/5))-(o=l(a)),s=ur[o][1],c=ur[o+1][1],h=ur[f(19,o+2)][1],i-=(y=(e>=0?x:-x)*(c+v*(h-s)/2+v*v*(h-2*c+s)/2)-e)*A}while(n(y)>1e-12&&--b>0);break}}while(--o>=0);var _=ur[o][0],w=ur[o+1][0],T=ur[f(19,o+2)][0];return[t/(w+v*(T-_)/2+v*v*(T-2*w+_)/2),i*M]};var pr=-179.9999,dr=179.9999,gr=-89.9999;function mr(t){return t.length>0}function vr(t){return-90===t||90===t?[0,t]:[-180,(e=t,Math.floor(1e4*e)/1e4)];var e}function yr(t){var e=t[0],r=t[1],n=!1;return e<=pr?(e=-180,n=!0):e>=dr&&(e=180,n=!0),r<=gr?(r=-90,n=!0):r>=89.9999&&(r=90,n=!0),n?[e,r]:t}function xr(t){return t.map(yr)}function br(t,e,r){for(var n=0,i=t.length;n=dr||u<=gr||u>=89.9999){a[o]=yr(l);for(var f=o+1;fpr&&pgr&&d<89.9999)break}if(f===o+1)continue;if(o){var g={index:-1,polygon:e,ring:a.slice(0,o+1)};g.ring[g.ring.length-1]=vr(u),r[r.length-1]=g}else r.pop();if(f>=s)break;r.push({index:-1,polygon:e,ring:a=a.slice(f-1)}),a[0]=vr(a[0][1]),o=-1,s=a.length}}}}function _r(t){var e,r,n,i,a,o,s=t.length,l={},c={};for(e=0;e0?y-l:l)*A],u=e.geoProjection(t(s)).rotate(c),f=e.geoRotation(c),h=u.center;return delete u.rotate,u.center=function(t){return arguments.length?h(f(t)):f.invert(h())},u.clipAngle(90)}function Mr(t){var r=o(t);function n(t,n){var i=e.geoGnomonicRaw(t,n);return i[0]*=r,i}return n.invert=function(t,n){return e.geoGnomonicRaw.invert(t/r,n)},n}function Sr(t,e){return Ar(Mr,t,e)}function Er(t){if(!(t*=2))return e.geoAzimuthalEquidistantRaw;var r=-t/2,n=-r,i=t*t,s=m(n),l=.5/g(n);function c(e,a){var s=E(o(a)*o(e-r)),l=E(o(a)*o(e-n));return[((s*=s)-(l*=l))/(2*t),(a<0?-1:1)*L(4*i*l-(i-s+l)*(i-s+l))/(2*t)]}return c.invert=function(t,e){var i,c,u=e*e,f=o(L(u+(i=t+r)*i)),h=o(L(u+(i=t+n)*i));return[a(c=f-h,i=(f+h)*s),(e<0?-1:1)*E(L(i*i+c*c)*l)]},c}function Lr(t,e){return Ar(Er,t,e)}function Cr(t,e){if(n(e)v&&--l>0);return[d(t)*(L(a*a+4)+a)*y/4,x*s]};var Rr=4*y+3*L(3),Fr=2*L(2*y*L(3)/Rr),Br=Y(Fr*L(3)/y,Fr,Rr/6);function Nr(t,e){return[t*L(1-3*e*e/(y*y)),e]}function jr(t,e){var r=o(e),n=o(t)*r,i=1-n,s=o(t=a(g(t)*r,-g(e))),l=g(t);return[l*(r=L(1-n*n))-s*i,-s*r-l*i]}function Ur(t,e){var r=O(t,e);return[(r[0]+t/x)/2,(r[1]+e)/2]}Nr.invert=function(t,e){return[t/L(1-3*e*e/(y*y)),e]},jr.invert=function(t,e){var r=(t*t+e*e)/-2,n=L(-r*(2+r)),i=e*r+t*n,o=t*r-e*n,s=L(o*o+i*i);return[a(n*i,s*(1+r)),s?-S(n*o/s):0]},Ur.invert=function(t,e){var r=t,i=e,a=25;do{var s,l=o(i),c=g(i),u=g(2*i),f=c*c,h=l*l,p=g(r),d=o(r/2),m=g(r/2),y=m*m,b=1-h*d*d,_=b?E(l*d)*L(s=1/b):s=0,w=.5*(2*_*l*m+r/x)-t,T=.5*(_*c+i)-e,k=.5*s*(h*y+_*l*d*f)+.5/x,A=s*(p*u/4-_*c*m),M=.125*s*(u*m-_*c*h*p),S=.5*s*(f*d+_*y*l)+.5,C=A*M-S*k,P=(T*A-w*S)/C,I=(w*M-T*k)/C;r-=P,i-=I}while((n(P)>v||n(I)>v)&&--a>0);return[r,i]},t.geoNaturalEarth=e.geoNaturalEarth1,t.geoNaturalEarthRaw=e.geoNaturalEarth1Raw,t.geoAiry=function(){var t=x,r=e.geoProjectionMutator(I),n=r(t);return n.radius=function(e){return arguments.length?r(t=e*M):t*A},n.scale(179.976).clipAngle(147)},t.geoAiryRaw=I,t.geoAitoff=function(){return e.geoProjection(O).scale(152.63)},t.geoAitoffRaw=O,t.geoArmadillo=function(){var t=20*M,r=t>=0?1:-1,n=m(r*t),i=e.geoProjectionMutator(z),s=i(t),l=s.stream;return s.parallel=function(e){return arguments.length?(n=m((r=(t=e*M)>=0?1:-1)*t),i(t)):t*A},s.stream=function(e){var i=s.rotate(),c=l(e),u=(s.rotate([0,0]),l(e)),f=s.precision();return s.rotate(i),c.sphere=function(){u.polygonStart(),u.lineStart();for(var e=-180*r;r*e<180;e+=90*r)u.point(e,90*r);if(t)for(;r*(e-=3*r*f)>=-180;)u.point(e,r*-a(o(e*M/2),n)*A);u.lineEnd(),u.polygonEnd()},c},s.scale(218.695).center([0,28.0974])},t.geoArmadilloRaw=z,t.geoAugust=function(){return e.geoProjection(D).scale(66.1603)},t.geoAugustRaw=D,t.geoBaker=function(){return e.geoProjection(B).scale(112.314)},t.geoBakerRaw=B,t.geoBerghaus=function(){var t=5,r=e.geoProjectionMutator(N),n=r(t),i=n.stream,s=-o(.01*M),l=g(.01*M);return n.lobes=function(e){return arguments.length?r(t=+e):t},n.stream=function(e){var r=n.rotate(),c=i(e),u=(n.rotate([0,0]),i(e));return n.rotate(r),c.sphere=function(){u.polygonStart(),u.lineStart();for(var e=0,r=360/t,n=2*y/t,i=90-180/t,c=x;e=0;)t.point((e=r[i])[0],e[1]);t.lineEnd(),t.polygonEnd()},t},n.scale(79.4187).parallel(45).clipAngle(179.999)},t.geoHammerRetroazimuthalRaw=Vt,t.geoHealpix=function(){var t=4,n=e.geoProjectionMutator(Yt),i=n(t),a=i.stream;return i.lobes=function(e){return arguments.length?n(t=+e):t},i.stream=function(n){var o=i.rotate(),s=a(n),l=(i.rotate([0,0]),a(n));return i.rotate(o),s.sphere=function(){var n,i;e.geoStream((n=180/t,i=[].concat(r.range(-180,180+n/2,n).map(Wt),r.range(180,-180-n/2,-n).map(Xt)),{type:\"Polygon\",coordinates:[180===n?i.map(Zt):i]}),l)},s},i.scale(239.75)},t.geoHealpixRaw=Yt,t.geoHill=function(){var t=1,r=e.geoProjectionMutator(Jt),n=r(t);return n.ratio=function(e){return arguments.length?r(t=+e):t},n.scale(167.774).center([0,18.67])},t.geoHillRaw=Jt,t.geoHomolosine=function(){return e.geoProjection(Qt).scale(152.63)},t.geoHomolosineRaw=Qt,t.geoHufnagel=function(){var t=1,r=0,n=45*M,i=2,a=e.geoProjectionMutator($t),o=a(t,r,n,i);return o.a=function(e){return arguments.length?a(t=+e,r,n,i):t},o.b=function(e){return arguments.length?a(t,r=+e,n,i):r},o.psiMax=function(e){return arguments.length?a(t,r,n=+e*M,i):n*A},o.ratio=function(e){return arguments.length?a(t,r,n,i=+e):i},o.scale(180.739)},t.geoHufnagelRaw=$t,t.geoHyperelliptical=function(){var t=0,r=2.5,n=1.183136,i=e.geoProjectionMutator(ee),a=i(t,r,n);return a.alpha=function(e){return arguments.length?i(t=+e,r,n):t},a.k=function(e){return arguments.length?i(t,r=+e,n):r},a.gamma=function(e){return arguments.length?i(t,r,n=+e):n},a.scale(152.63)},t.geoHyperellipticalRaw=ee,t.geoInterrupt=ae,t.geoInterruptedBoggs=function(){return ae(J,oe).scale(160.857)},t.geoInterruptedHomolosine=function(){return ae(Qt,se).scale(152.63)},t.geoInterruptedMollweide=function(){return ae(W,le).scale(169.529)},t.geoInterruptedMollweideHemispheres=function(){return ae(W,ce).scale(169.529).rotate([20,0])},t.geoInterruptedSinuMollweide=function(){return ae(Kt,ue,H).rotate([-20,-55]).scale(164.263).center([0,-5.4036])},t.geoInterruptedSinusoidal=function(){return ae(Q,fe).scale(152.63).rotate([-20,0])},t.geoKavrayskiy7=function(){return e.geoProjection(he).scale(158.837)},t.geoKavrayskiy7Raw=he,t.geoLagrange=function(){var t=.5,r=e.geoProjectionMutator(pe),n=r(t);return n.spacing=function(e){return arguments.length?r(t=+e):t},n.scale(124.75)},t.geoLagrangeRaw=pe,t.geoLarrivee=function(){return e.geoProjection(ge).scale(97.2672)},t.geoLarriveeRaw=ge,t.geoLaskowski=function(){return e.geoProjection(me).scale(139.98)},t.geoLaskowskiRaw=me,t.geoLittrow=function(){return e.geoProjection(ve).scale(144.049).clipAngle(89.999)},t.geoLittrowRaw=ve,t.geoLoximuthal=function(){return K(ye).parallel(40).scale(158.837)},t.geoLoximuthalRaw=ye,t.geoMiller=function(){return e.geoProjection(xe).scale(108.318)},t.geoMillerRaw=xe,t.geoModifiedStereographic=Me,t.geoModifiedStereographicRaw=be,t.geoModifiedStereographicAlaska=function(){return Me(_e,[152,-64]).scale(1400).center([-160.908,62.4864]).clipAngle(30).angle(7.8)},t.geoModifiedStereographicGs48=function(){return Me(we,[95,-38]).scale(1e3).clipAngle(55).center([-96.5563,38.8675])},t.geoModifiedStereographicGs50=function(){return Me(Te,[120,-45]).scale(359.513).clipAngle(55).center([-117.474,53.0628])},t.geoModifiedStereographicMiller=function(){return Me(ke,[-20,-18]).scale(209.091).center([20,16.7214]).clipAngle(82)},t.geoModifiedStereographicLee=function(){return Me(Ae,[165,10]).scale(250).clipAngle(130).center([-165,-10])},t.geoMollweide=function(){return e.geoProjection(W).scale(169.529)},t.geoMollweideRaw=W,t.geoMtFlatPolarParabolic=function(){return e.geoProjection(Le).scale(164.859)},t.geoMtFlatPolarParabolicRaw=Le,t.geoMtFlatPolarQuartic=function(){return e.geoProjection(Ce).scale(188.209)},t.geoMtFlatPolarQuarticRaw=Ce,t.geoMtFlatPolarSinusoidal=function(){return e.geoProjection(Pe).scale(166.518)},t.geoMtFlatPolarSinusoidalRaw=Pe,t.geoNaturalEarth2=function(){return e.geoProjection(Ie).scale(175.295)},t.geoNaturalEarth2Raw=Ie,t.geoNellHammer=function(){return e.geoProjection(Oe).scale(152.63)},t.geoNellHammerRaw=Oe,t.geoInterruptedQuarticAuthalic=function(){return ae(j(1/0),ze).rotate([20,0]).scale(152.63)},t.geoNicolosi=function(){return e.geoProjection(De).scale(127.267)},t.geoNicolosiRaw=De,t.geoPatterson=function(){return e.geoProjection(Re).scale(139.319)},t.geoPattersonRaw=Re,t.geoPolyconic=function(){return e.geoProjection(Fe).scale(103.74)},t.geoPolyconicRaw=Fe,t.geoPolyhedral=Ve,t.geoPolyhedralButterfly=function(t){t=t||function(t){var r=e.geoCentroid({type:\"MultiPoint\",coordinates:t});return e.geoGnomonic().scale(1).translate([0,0]).rotate([-r[0],-r[1]])};var r=Ye.map((function(e){return{face:e,project:t(e)}}));return[-1,0,0,1,0,1,4,5].forEach((function(t,e){var n=r[t];n&&(n.children||(n.children=[])).push(r[e])})),Ve(r[0],(function(t,e){return r[t<-y/2?e<0?6:4:t<0?e<0?2:0:t0?[-r[0],0]:[180-r[0],180])};var r=Ye.map((function(e){return{face:e,project:t(e)}}));return[-1,0,0,1,0,1,4,5].forEach((function(t,e){var n=r[t];n&&(n.children||(n.children=[])).push(r[e])})),Ve(r[0],(function(t,e){return r[t<-y/2?e<0?6:4:t<0?e<0?2:0:t2||a[0]!=e[0]||a[1]!=e[1])&&(n.push(a),e=a)}return 1===n.length&&t.length>1&&n.push(r(t[t.length-1])),n}function a(t){return t.map(i)}function o(t){if(null==t)return t;var e;switch(t.type){case\"GeometryCollection\":e={type:\"GeometryCollection\",geometries:t.geometries.map(o)};break;case\"Point\":e={type:\"Point\",coordinates:r(t.coordinates)};break;case\"MultiPoint\":e={type:t.type,coordinates:n(t.coordinates)};break;case\"LineString\":e={type:t.type,coordinates:i(t.coordinates)};break;case\"MultiLineString\":case\"Polygon\":e={type:t.type,coordinates:a(t.coordinates)};break;case\"MultiPolygon\":e={type:\"MultiPolygon\",coordinates:t.coordinates.map(a)};break;default:return t}return null!=t.bbox&&(e.bbox=t.bbox),e}function s(t){var e={type:\"Feature\",properties:t.properties,geometry:o(t.geometry)};return null!=t.id&&(e.id=t.id),null!=t.bbox&&(e.bbox=t.bbox),e}if(null!=t)switch(t.type){case\"Feature\":return s(t);case\"FeatureCollection\":var l={type:\"FeatureCollection\",features:t.features.map(s)};return null!=t.bbox&&(l.bbox=t.bbox),l;default:return o(t)}return t},t.geoQuincuncial=sr,t.geoRectangularPolyconic=function(){return K(cr).scale(131.215)},t.geoRectangularPolyconicRaw=cr,t.geoRobinson=function(){return e.geoProjection(fr).scale(152.63)},t.geoRobinsonRaw=fr,t.geoSatellite=function(){var t=2,r=0,n=e.geoProjectionMutator(hr),i=n(t,r);return i.distance=function(e){return arguments.length?n(t=+e,r):t},i.tilt=function(e){return arguments.length?n(t,r=e*M):r*A},i.scale(432.147).clipAngle(E(1/t)*A-1e-6)},t.geoSatelliteRaw=hr,t.geoSinuMollweide=function(){return e.geoProjection(Kt).rotate([-20,-55]).scale(164.263).center([0,-5.4036])},t.geoSinuMollweideRaw=Kt,t.geoSinusoidal=function(){return e.geoProjection(Q).scale(152.63)},t.geoSinusoidalRaw=Q,t.geoStitch=function(t){if(null==t)return t;switch(t.type){case\"Feature\":return wr(t);case\"FeatureCollection\":var e={type:\"FeatureCollection\",features:t.features.map(wr)};return null!=t.bbox&&(e.bbox=t.bbox),e;default:return Tr(t)}},t.geoTimes=function(){return e.geoProjection(kr).scale(146.153)},t.geoTimesRaw=kr,t.geoTwoPointAzimuthal=Sr,t.geoTwoPointAzimuthalRaw=Mr,t.geoTwoPointAzimuthalUsa=function(){return Sr([-158,21.5],[-77,39]).clipAngle(60).scale(400)},t.geoTwoPointEquidistant=Lr,t.geoTwoPointEquidistantRaw=Er,t.geoTwoPointEquidistantUsa=function(){return Lr([-158,21.5],[-77,39]).clipAngle(130).scale(122.571)},t.geoVanDerGrinten=function(){return e.geoProjection(Cr).scale(79.4183)},t.geoVanDerGrintenRaw=Cr,t.geoVanDerGrinten2=function(){return e.geoProjection(Pr).scale(79.4183)},t.geoVanDerGrinten2Raw=Pr,t.geoVanDerGrinten3=function(){return e.geoProjection(Ir).scale(79.4183)},t.geoVanDerGrinten3Raw=Ir,t.geoVanDerGrinten4=function(){return e.geoProjection(Or).scale(127.16)},t.geoVanDerGrinten4Raw=Or,t.geoWagner=Dr,t.geoWagner7=function(){return Dr().poleline(65).parallels(60).inflation(0).ratio(200).scale(172.633)},t.geoWagnerRaw=zr,t.geoWagner4=function(){return e.geoProjection(Br).scale(176.84)},t.geoWagner4Raw=Br,t.geoWagner6=function(){return e.geoProjection(Nr).scale(152.63)},t.geoWagner6Raw=Nr,t.geoWiechel=function(){return e.geoProjection(jr).rotate([0,-90,45]).scale(124.75).clipAngle(179.999)},t.geoWiechelRaw=jr,t.geoWinkel3=function(){return e.geoProjection(Ur).scale(158.837)},t.geoWinkel3Raw=Ur,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{\"d3-array\":107,\"d3-geo\":114}],114:[function(t,e,r){!function(n,i){\"object\"==typeof r&&void 0!==e?i(r,t(\"d3-array\")):i((n=n||self).d3=n.d3||{},n.d3)}(this,(function(t,e){\"use strict\";function r(){return new n}function n(){this.reset()}n.prototype={constructor:n,reset:function(){this.s=this.t=0},add:function(t){a(i,t,this.t),a(this,i.s,this.s),this.s?this.t+=i.t:this.s=i.t},valueOf:function(){return this.s}};var i=new n;function a(t,e,r){var n=t.s=e+r,i=n-e,a=n-i;t.t=e-a+(r-i)}var o=1e-6,s=Math.PI,l=s/2,c=s/4,u=2*s,f=180/s,h=s/180,p=Math.abs,d=Math.atan,g=Math.atan2,m=Math.cos,v=Math.ceil,y=Math.exp,x=Math.log,b=Math.pow,_=Math.sin,w=Math.sign||function(t){return t>0?1:t<0?-1:0},T=Math.sqrt,k=Math.tan;function A(t){return t>1?0:t<-1?s:Math.acos(t)}function M(t){return t>1?l:t<-1?-l:Math.asin(t)}function S(t){return(t=_(t/2))*t}function E(){}function L(t,e){t&&P.hasOwnProperty(t.type)&&P[t.type](t,e)}var C={Feature:function(t,e){L(t.geometry,e)},FeatureCollection:function(t,e){for(var r=t.features,n=-1,i=r.length;++n=0?1:-1,i=n*r,a=m(e=(e*=h)/2+c),o=_(e),s=N*o,l=B*a+s*m(i),u=s*n*_(i);j.add(g(u,l)),F=t,B=a,N=o}function W(t){return[g(t[1],t[0]),M(t[2])]}function X(t){var e=t[0],r=t[1],n=m(r);return[n*m(e),n*_(e),_(r)]}function Z(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function J(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function K(t,e){t[0]+=e[0],t[1]+=e[1],t[2]+=e[2]}function Q(t,e){return[t[0]*e,t[1]*e,t[2]*e]}function $(t){var e=T(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=e,t[1]/=e,t[2]/=e}var tt,et,rt,nt,it,at,ot,st,lt,ct,ut,ft,ht,pt,dt,gt,mt,vt,yt,xt,bt,_t,wt,Tt,kt,At,Mt=r(),St={point:Et,lineStart:Ct,lineEnd:Pt,polygonStart:function(){St.point=It,St.lineStart=Ot,St.lineEnd=zt,Mt.reset(),V.polygonStart()},polygonEnd:function(){V.polygonEnd(),St.point=Et,St.lineStart=Ct,St.lineEnd=Pt,j<0?(tt=-(rt=180),et=-(nt=90)):Mt>o?nt=90:Mt<-o&&(et=-90),ct[0]=tt,ct[1]=rt},sphere:function(){tt=-(rt=180),et=-(nt=90)}};function Et(t,e){lt.push(ct=[tt=t,rt=t]),ent&&(nt=e)}function Lt(t,e){var r=X([t*h,e*h]);if(st){var n=J(st,r),i=J([n[1],-n[0],0],n);$(i),i=W(i);var a,o=t-it,s=o>0?1:-1,l=i[0]*f*s,c=p(o)>180;c^(s*itnt&&(nt=a):c^(s*it<(l=(l+360)%360-180)&&lnt&&(nt=e)),c?tDt(tt,rt)&&(rt=t):Dt(t,rt)>Dt(tt,rt)&&(tt=t):rt>=tt?(trt&&(rt=t)):t>it?Dt(tt,t)>Dt(tt,rt)&&(rt=t):Dt(t,rt)>Dt(tt,rt)&&(tt=t)}else lt.push(ct=[tt=t,rt=t]);ent&&(nt=e),st=r,it=t}function Ct(){St.point=Lt}function Pt(){ct[0]=tt,ct[1]=rt,St.point=Et,st=null}function It(t,e){if(st){var r=t-it;Mt.add(p(r)>180?r+(r>0?360:-360):r)}else at=t,ot=e;V.point(t,e),Lt(t,e)}function Ot(){V.lineStart()}function zt(){It(at,ot),V.lineEnd(),p(Mt)>o&&(tt=-(rt=180)),ct[0]=tt,ct[1]=rt,st=null}function Dt(t,e){return(e-=t)<0?e+360:e}function Rt(t,e){return t[0]-e[0]}function Ft(t,e){return t[0]<=t[1]?t[0]<=e&&e<=t[1]:es?t+Math.round(-t/u)*u:t,e]}function Qt(t,e,r){return(t%=u)?e||r?Jt(te(t),ee(e,r)):te(t):e||r?ee(e,r):Kt}function $t(t){return function(e,r){return[(e+=t)>s?e-u:e<-s?e+u:e,r]}}function te(t){var e=$t(t);return e.invert=$t(-t),e}function ee(t,e){var r=m(t),n=_(t),i=m(e),a=_(e);function o(t,e){var o=m(e),s=m(t)*o,l=_(t)*o,c=_(e),u=c*r+s*n;return[g(l*i-u*a,s*r-c*n),M(u*i+l*a)]}return o.invert=function(t,e){var o=m(e),s=m(t)*o,l=_(t)*o,c=_(e),u=c*i-l*a;return[g(l*i+c*a,s*r+u*n),M(u*r-s*n)]},o}function re(t){function e(e){return(e=t(e[0]*h,e[1]*h))[0]*=f,e[1]*=f,e}return t=Qt(t[0]*h,t[1]*h,t.length>2?t[2]*h:0),e.invert=function(e){return(e=t.invert(e[0]*h,e[1]*h))[0]*=f,e[1]*=f,e},e}function ne(t,e,r,n,i,a){if(r){var o=m(e),s=_(e),l=n*r;null==i?(i=e+n*u,a=e-l/2):(i=ie(o,i),a=ie(o,a),(n>0?ia)&&(i+=n*u));for(var c,f=i;n>0?f>a:f1&&e.push(e.pop().concat(e.shift()))},result:function(){var r=e;return e=[],t=null,r}}}function oe(t,e){return p(t[0]-e[0])=0;--a)i.point((f=u[a])[0],f[1]);else n(p.x,p.p.x,-1,i);p=p.p}u=(p=p.o).z,d=!d}while(!p.v);i.lineEnd()}}}function ce(t){if(e=t.length){for(var e,r,n=0,i=t[0];++n=0?1:-1,z=O*I,D=z>s,R=T*C;if(ue.add(g(R*O*_(z),k*P+R*m(z))),f+=D?I+O*u:I,D^b>=r^E>=r){var F=J(X(x),X(S));$(F);var B=J(a,F);$(B);var N=(D^I>=0?-1:1)*M(B[2]);(n>N||n===N&&(F[0]||F[1]))&&(h+=D^I>=0?1:-1)}}return(f<-o||f0){for(h||(a.polygonStart(),h=!0),a.lineStart(),t=0;t1&&2&i&&c.push(c.pop().concat(c.shift())),s.push(c.filter(de))}return p}}function de(t){return t.length>1}function ge(t,e){return((t=t.x)[0]<0?t[1]-l-o:l-t[1])-((e=e.x)[0]<0?e[1]-l-o:l-e[1])}var me=pe((function(){return!0}),(function(t){var e,r=NaN,n=NaN,i=NaN;return{lineStart:function(){t.lineStart(),e=1},point:function(a,c){var u=a>0?s:-s,f=p(a-r);p(f-s)0?l:-l),t.point(i,n),t.lineEnd(),t.lineStart(),t.point(u,n),t.point(a,n),e=0):i!==u&&f>=s&&(p(r-i)o?d((_(e)*(a=m(n))*_(r)-_(n)*(i=m(e))*_(t))/(i*a*s)):(e+n)/2}(r,n,a,c),t.point(i,n),t.lineEnd(),t.lineStart(),t.point(u,n),e=0),t.point(r=a,n=c),i=u},lineEnd:function(){t.lineEnd(),r=n=NaN},clean:function(){return 2-e}}}),(function(t,e,r,n){var i;if(null==t)i=r*l,n.point(-s,i),n.point(0,i),n.point(s,i),n.point(s,0),n.point(s,-i),n.point(0,-i),n.point(-s,-i),n.point(-s,0),n.point(-s,i);else if(p(t[0]-e[0])>o){var a=t[0]0,i=p(e)>o;function a(t,r){return m(t)*m(r)>e}function l(t,r,n){var i=[1,0,0],a=J(X(t),X(r)),l=Z(a,a),c=a[0],u=l-c*c;if(!u)return!n&&t;var f=e*l/u,h=-e*c/u,d=J(i,a),g=Q(i,f);K(g,Q(a,h));var m=d,v=Z(g,m),y=Z(m,m),x=v*v-y*(Z(g,g)-1);if(!(x<0)){var b=T(x),_=Q(m,(-v-b)/y);if(K(_,g),_=W(_),!n)return _;var w,k=t[0],A=r[0],M=t[1],S=r[1];A0^_[1]<(p(_[0]-k)s^(k<=_[0]&&_[0]<=A)){var C=Q(m,(-v+b)/y);return K(C,g),[_,W(C)]}}}function c(e,r){var i=n?t:s-t,a=0;return e<-i?a|=1:e>i&&(a|=2),r<-i?a|=4:r>i&&(a|=8),a}return pe(a,(function(t){var e,r,o,u,f;return{lineStart:function(){u=o=!1,f=1},point:function(h,p){var d,g=[h,p],m=a(h,p),v=n?m?0:c(h,p):m?c(h+(h<0?s:-s),p):0;if(!e&&(u=o=m)&&t.lineStart(),m!==o&&(!(d=l(e,g))||oe(e,d)||oe(g,d))&&(g[2]=1),m!==o)f=0,m?(t.lineStart(),d=l(g,e),t.point(d[0],d[1])):(d=l(e,g),t.point(d[0],d[1],2),t.lineEnd()),e=d;else if(i&&e&&n^m){var y;v&r||!(y=l(g,e,!0))||(f=0,n?(t.lineStart(),t.point(y[0][0],y[0][1]),t.point(y[1][0],y[1][1]),t.lineEnd()):(t.point(y[1][0],y[1][1]),t.lineEnd(),t.lineStart(),t.point(y[0][0],y[0][1],3)))}!m||e&&oe(e,g)||t.point(g[0],g[1]),e=g,o=m,r=v},lineEnd:function(){o&&t.lineEnd(),e=null},clean:function(){return f|(u&&o)<<1}}}),(function(e,n,i,a){ne(a,t,r,i,e,n)}),n?[0,-t]:[-s,t-s])}function ye(t,r,n,i){function a(e,a){return t<=e&&e<=n&&r<=a&&a<=i}function s(e,a,o,s){var c=0,f=0;if(null==e||(c=l(e,o))!==(f=l(a,o))||u(e,a)<0^o>0)do{s.point(0===c||3===c?t:n,c>1?i:r)}while((c=(c+o+4)%4)!==f);else s.point(a[0],a[1])}function l(e,i){return p(e[0]-t)0?0:3:p(e[0]-n)0?2:1:p(e[1]-r)0?1:0:i>0?3:2}function c(t,e){return u(t.x,e.x)}function u(t,e){var r=l(t,1),n=l(e,1);return r!==n?r-n:0===r?e[1]-t[1]:1===r?t[0]-e[0]:2===r?t[1]-e[1]:e[0]-t[0]}return function(o){var l,u,f,h,p,d,g,m,v,y,x,b=o,_=ae(),w={point:T,lineStart:function(){w.point=k,u&&u.push(f=[]);y=!0,v=!1,g=m=NaN},lineEnd:function(){l&&(k(h,p),d&&v&&_.rejoin(),l.push(_.result()));w.point=T,v&&b.lineEnd()},polygonStart:function(){b=_,l=[],u=[],x=!0},polygonEnd:function(){var r=function(){for(var e=0,r=0,n=u.length;ri&&(h-a)*(i-o)>(p-o)*(t-a)&&++e:p<=i&&(h-a)*(i-o)<(p-o)*(t-a)&&--e;return e}(),n=x&&r,a=(l=e.merge(l)).length;(n||a)&&(o.polygonStart(),n&&(o.lineStart(),s(null,null,1,o),o.lineEnd()),a&&le(l,c,r,s,o),o.polygonEnd());b=o,l=u=f=null}};function T(t,e){a(t,e)&&b.point(t,e)}function k(e,o){var s=a(e,o);if(u&&f.push([e,o]),y)h=e,p=o,d=s,y=!1,s&&(b.lineStart(),b.point(e,o));else if(s&&v)b.point(e,o);else{var l=[g=Math.max(-1e9,Math.min(1e9,g)),m=Math.max(-1e9,Math.min(1e9,m))],c=[e=Math.max(-1e9,Math.min(1e9,e)),o=Math.max(-1e9,Math.min(1e9,o))];!function(t,e,r,n,i,a){var o,s=t[0],l=t[1],c=0,u=1,f=e[0]-s,h=e[1]-l;if(o=r-s,f||!(o>0)){if(o/=f,f<0){if(o0){if(o>u)return;o>c&&(c=o)}if(o=i-s,f||!(o<0)){if(o/=f,f<0){if(o>u)return;o>c&&(c=o)}else if(f>0){if(o0)){if(o/=h,h<0){if(o0){if(o>u)return;o>c&&(c=o)}if(o=a-l,h||!(o<0)){if(o/=h,h<0){if(o>u)return;o>c&&(c=o)}else if(h>0){if(o0&&(t[0]=s+c*f,t[1]=l+c*h),u<1&&(e[0]=s+u*f,e[1]=l+u*h),!0}}}}}(l,c,t,r,n,i)?s&&(b.lineStart(),b.point(e,o),x=!1):(v||(b.lineStart(),b.point(l[0],l[1])),b.point(c[0],c[1]),s||b.lineEnd(),x=!1)}g=e,m=o,v=s}return w}}var xe,be,_e,we=r(),Te={sphere:E,point:E,lineStart:function(){Te.point=Ae,Te.lineEnd=ke},lineEnd:E,polygonStart:E,polygonEnd:E};function ke(){Te.point=Te.lineEnd=E}function Ae(t,e){xe=t*=h,be=_(e*=h),_e=m(e),Te.point=Me}function Me(t,e){t*=h;var r=_(e*=h),n=m(e),i=p(t-xe),a=m(i),o=n*_(i),s=_e*r-be*n*a,l=be*r+_e*n*a;we.add(g(T(o*o+s*s),l)),xe=t,be=r,_e=n}function Se(t){return we.reset(),z(t,Te),+we}var Ee=[null,null],Le={type:\"LineString\",coordinates:Ee};function Ce(t,e){return Ee[0]=t,Ee[1]=e,Se(Le)}var Pe={Feature:function(t,e){return Oe(t.geometry,e)},FeatureCollection:function(t,e){for(var r=t.features,n=-1,i=r.length;++n0&&(i=Ce(t[a],t[a-1]))>0&&r<=i&&n<=i&&(r+n-i)*(1-Math.pow((r-n)/i,2))<1e-12*i)return!0;r=n}return!1}function Re(t,e){return!!he(t.map(Fe),Be(e))}function Fe(t){return(t=t.map(Be)).pop(),t}function Be(t){return[t[0]*h,t[1]*h]}function Ne(t,r,n){var i=e.range(t,r-o,n).concat(r);return function(t){return i.map((function(e){return[t,e]}))}}function je(t,r,n){var i=e.range(t,r-o,n).concat(r);return function(t){return i.map((function(e){return[e,t]}))}}function Ue(){var t,r,n,i,a,s,l,c,u,f,h,d,g=10,m=g,y=90,x=360,b=2.5;function _(){return{type:\"MultiLineString\",coordinates:w()}}function w(){return e.range(v(i/y)*y,n,y).map(h).concat(e.range(v(c/x)*x,l,x).map(d)).concat(e.range(v(r/g)*g,t,g).filter((function(t){return p(t%y)>o})).map(u)).concat(e.range(v(s/m)*m,a,m).filter((function(t){return p(t%x)>o})).map(f))}return _.lines=function(){return w().map((function(t){return{type:\"LineString\",coordinates:t}}))},_.outline=function(){return{type:\"Polygon\",coordinates:[h(i).concat(d(l).slice(1),h(n).reverse().slice(1),d(c).reverse().slice(1))]}},_.extent=function(t){return arguments.length?_.extentMajor(t).extentMinor(t):_.extentMinor()},_.extentMajor=function(t){return arguments.length?(i=+t[0][0],n=+t[1][0],c=+t[0][1],l=+t[1][1],i>n&&(t=i,i=n,n=t),c>l&&(t=c,c=l,l=t),_.precision(b)):[[i,c],[n,l]]},_.extentMinor=function(e){return arguments.length?(r=+e[0][0],t=+e[1][0],s=+e[0][1],a=+e[1][1],r>t&&(e=r,r=t,t=e),s>a&&(e=s,s=a,a=e),_.precision(b)):[[r,s],[t,a]]},_.step=function(t){return arguments.length?_.stepMajor(t).stepMinor(t):_.stepMinor()},_.stepMajor=function(t){return arguments.length?(y=+t[0],x=+t[1],_):[y,x]},_.stepMinor=function(t){return arguments.length?(g=+t[0],m=+t[1],_):[g,m]},_.precision=function(e){return arguments.length?(b=+e,u=Ne(s,a,90),f=je(r,t,b),h=Ne(c,l,90),d=je(i,n,b),_):b},_.extentMajor([[-180,-90+o],[180,90-o]]).extentMinor([[-180,-80-o],[180,80+o]])}function Ve(t){return t}var He,qe,Ge,Ye,We=r(),Xe=r(),Ze={point:E,lineStart:E,lineEnd:E,polygonStart:function(){Ze.lineStart=Je,Ze.lineEnd=$e},polygonEnd:function(){Ze.lineStart=Ze.lineEnd=Ze.point=E,We.add(p(Xe)),Xe.reset()},result:function(){var t=We/2;return We.reset(),t}};function Je(){Ze.point=Ke}function Ke(t,e){Ze.point=Qe,He=Ge=t,qe=Ye=e}function Qe(t,e){Xe.add(Ye*t-Ge*e),Ge=t,Ye=e}function $e(){Qe(He,qe)}var tr=1/0,er=tr,rr=-tr,nr=rr,ir={point:function(t,e){trr&&(rr=t);enr&&(nr=e)},lineStart:E,lineEnd:E,polygonStart:E,polygonEnd:E,result:function(){var t=[[tr,er],[rr,nr]];return rr=nr=-(er=tr=1/0),t}};var ar,or,sr,lr,cr=0,ur=0,fr=0,hr=0,pr=0,dr=0,gr=0,mr=0,vr=0,yr={point:xr,lineStart:br,lineEnd:Tr,polygonStart:function(){yr.lineStart=kr,yr.lineEnd=Ar},polygonEnd:function(){yr.point=xr,yr.lineStart=br,yr.lineEnd=Tr},result:function(){var t=vr?[gr/vr,mr/vr]:dr?[hr/dr,pr/dr]:fr?[cr/fr,ur/fr]:[NaN,NaN];return cr=ur=fr=hr=pr=dr=gr=mr=vr=0,t}};function xr(t,e){cr+=t,ur+=e,++fr}function br(){yr.point=_r}function _r(t,e){yr.point=wr,xr(sr=t,lr=e)}function wr(t,e){var r=t-sr,n=e-lr,i=T(r*r+n*n);hr+=i*(sr+t)/2,pr+=i*(lr+e)/2,dr+=i,xr(sr=t,lr=e)}function Tr(){yr.point=xr}function kr(){yr.point=Mr}function Ar(){Sr(ar,or)}function Mr(t,e){yr.point=Sr,xr(ar=sr=t,or=lr=e)}function Sr(t,e){var r=t-sr,n=e-lr,i=T(r*r+n*n);hr+=i*(sr+t)/2,pr+=i*(lr+e)/2,dr+=i,gr+=(i=lr*t-sr*e)*(sr+t),mr+=i*(lr+e),vr+=3*i,xr(sr=t,lr=e)}function Er(t){this._context=t}Er.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._context.moveTo(t,e),this._point=1;break;case 1:this._context.lineTo(t,e);break;default:this._context.moveTo(t+this._radius,e),this._context.arc(t,e,this._radius,0,u)}},result:E};var Lr,Cr,Pr,Ir,Or,zr=r(),Dr={point:E,lineStart:function(){Dr.point=Rr},lineEnd:function(){Lr&&Fr(Cr,Pr),Dr.point=E},polygonStart:function(){Lr=!0},polygonEnd:function(){Lr=null},result:function(){var t=+zr;return zr.reset(),t}};function Rr(t,e){Dr.point=Fr,Cr=Ir=t,Pr=Or=e}function Fr(t,e){Ir-=t,Or-=e,zr.add(T(Ir*Ir+Or*Or)),Ir=t,Or=e}function Br(){this._string=[]}function Nr(t){return\"m0,\"+t+\"a\"+t+\",\"+t+\" 0 1,1 0,\"+-2*t+\"a\"+t+\",\"+t+\" 0 1,1 0,\"+2*t+\"z\"}function jr(t){return function(e){var r=new Ur;for(var n in t)r[n]=t[n];return r.stream=e,r}}function Ur(){}function Vr(t,e,r){var n=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=n&&t.clipExtent(null),z(r,t.stream(ir)),e(ir.result()),null!=n&&t.clipExtent(n),t}function Hr(t,e,r){return Vr(t,(function(r){var n=e[1][0]-e[0][0],i=e[1][1]-e[0][1],a=Math.min(n/(r[1][0]-r[0][0]),i/(r[1][1]-r[0][1])),o=+e[0][0]+(n-a*(r[1][0]+r[0][0]))/2,s=+e[0][1]+(i-a*(r[1][1]+r[0][1]))/2;t.scale(150*a).translate([o,s])}),r)}function qr(t,e,r){return Hr(t,[[0,0],e],r)}function Gr(t,e,r){return Vr(t,(function(r){var n=+e,i=n/(r[1][0]-r[0][0]),a=(n-i*(r[1][0]+r[0][0]))/2,o=-i*r[0][1];t.scale(150*i).translate([a,o])}),r)}function Yr(t,e,r){return Vr(t,(function(r){var n=+e,i=n/(r[1][1]-r[0][1]),a=-i*r[0][0],o=(n-i*(r[1][1]+r[0][1]))/2;t.scale(150*i).translate([a,o])}),r)}Br.prototype={_radius:4.5,_circle:Nr(4.5),pointRadius:function(t){return(t=+t)!==this._radius&&(this._radius=t,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push(\"Z\"),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._string.push(\"M\",t,\",\",e),this._point=1;break;case 1:this._string.push(\"L\",t,\",\",e);break;default:null==this._circle&&(this._circle=Nr(this._radius)),this._string.push(\"M\",t,\",\",e,this._circle)}},result:function(){if(this._string.length){var t=this._string.join(\"\");return this._string=[],t}return null}},Ur.prototype={constructor:Ur,point:function(t,e){this.stream.point(t,e)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var Wr=m(30*h);function Xr(t,e){return+e?function(t,e){function r(n,i,a,s,l,c,u,f,h,d,m,v,y,x){var b=u-n,_=f-i,w=b*b+_*_;if(w>4*e&&y--){var k=s+d,A=l+m,S=c+v,E=T(k*k+A*A+S*S),L=M(S/=E),C=p(p(S)-1)e||p((b*z+_*D)/w-.5)>.3||s*d+l*m+c*v2?t[2]%360*h:0,I()):[y*f,x*f,b*f]},C.angle=function(t){return arguments.length?(_=t%360*h,I()):_*f},C.reflectX=function(t){return arguments.length?(w=t?-1:1,I()):w<0},C.reflectY=function(t){return arguments.length?(k=t?-1:1,I()):k<0},C.precision=function(t){return arguments.length?(o=Xr(s,L=t*t),O()):T(L)},C.fitExtent=function(t,e){return Hr(C,t,e)},C.fitSize=function(t,e){return qr(C,t,e)},C.fitWidth=function(t,e){return Gr(C,t,e)},C.fitHeight=function(t,e){return Yr(C,t,e)},function(){return e=t.apply(this,arguments),C.invert=e.invert&&P,I()}}function tn(t){var e=0,r=s/3,n=$r(t),i=n(e,r);return i.parallels=function(t){return arguments.length?n(e=t[0]*h,r=t[1]*h):[e*f,r*f]},i}function en(t,e){var r=_(t),n=(r+_(e))/2;if(p(n)0?e<-l+o&&(e=-l+o):e>l-o&&(e=l-o);var r=i/b(fn(e),n);return[r*_(n*t),i-r*m(n*t)]}return a.invert=function(t,e){var r=i-e,a=w(n)*T(t*t+r*r),o=g(t,p(r))*w(r);return r*n<0&&(o-=s*w(t)*w(r)),[o/n,2*d(b(i/a,1/n))-l]},a}function pn(t,e){return[t,e]}function dn(t,e){var r=m(t),n=t===e?_(t):(r-m(e))/(e-t),i=r/n+t;if(p(n)o&&--i>0);return[t/(.8707+(a=n*n)*(a*(a*a*a*(.003971-.001529*a)-.013791)-.131979)),n]},Tn.invert=on(M),kn.invert=on((function(t){return 2*d(t)})),An.invert=function(t,e){return[-e,2*d(y(t))-l]},t.geoAlbers=nn,t.geoAlbersUsa=function(){var t,e,r,n,i,a,s=nn(),l=rn().rotate([154,0]).center([-2,58.5]).parallels([55,65]),c=rn().rotate([157,0]).center([-3,19.9]).parallels([8,18]),u={point:function(t,e){a=[t,e]}};function f(t){var e=t[0],o=t[1];return a=null,r.point(e,o),a||(n.point(e,o),a)||(i.point(e,o),a)}function h(){return t=e=null,f}return f.invert=function(t){var e=s.scale(),r=s.translate(),n=(t[0]-r[0])/e,i=(t[1]-r[1])/e;return(i>=.12&&i<.234&&n>=-.425&&n<-.214?l:i>=.166&&i<.234&&n>=-.214&&n<-.115?c:s).invert(t)},f.stream=function(r){return t&&e===r?t:(n=[s.stream(e=r),l.stream(r),c.stream(r)],i=n.length,t={point:function(t,e){for(var r=-1;++rDt(n[0],n[1])&&(n[1]=i[1]),Dt(i[0],n[1])>Dt(n[0],n[1])&&(n[0]=i[0])):a.push(n=i);for(o=-1/0,e=0,n=a[r=a.length-1];e<=r;n=i,++e)i=a[e],(s=Dt(n[1],i[0]))>o&&(o=s,tt=i[0],rt=n[1])}return lt=ct=null,tt===1/0||et===1/0?[[NaN,NaN],[NaN,NaN]]:[[tt,et],[rt,nt]]},t.geoCentroid=function(t){ut=ft=ht=pt=dt=gt=mt=vt=yt=xt=bt=0,z(t,Bt);var e=yt,r=xt,n=bt,i=e*e+r*r+n*n;return i<1e-12&&(e=gt,r=mt,n=vt,ft2?t[2]+90:90]):[(t=r())[0],t[1],t[2]-90]},r([0,0,90]).scale(159.155)},t.geoTransverseMercatorRaw=An,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{\"d3-array\":107}],115:[function(t,e,r){!function(t,n){\"object\"==typeof r&&void 0!==e?n(r):n((t=t||self).d3=t.d3||{})}(this,(function(t){\"use strict\";function e(t,e){return t.parent===e.parent?1:2}function r(t,e){return t+e.x}function n(t,e){return Math.max(t,e.y)}function i(t){var e=0,r=t.children,n=r&&r.length;if(n)for(;--n>=0;)e+=r[n].value;else e=1;t.value=e}function a(t,e){var r,n,i,a,s,u=new c(t),f=+t.value&&(u.value=t.value),h=[u];for(null==e&&(e=o);r=h.pop();)if(f&&(r.value=+r.data.value),(i=e(r.data))&&(s=i.length))for(r.children=new Array(s),a=s-1;a>=0;--a)h.push(n=r.children[a]=new c(i[a])),n.parent=r,n.depth=r.depth+1;return u.eachBefore(l)}function o(t){return t.children}function s(t){t.data=t.data.data}function l(t){var e=0;do{t.height=e}while((t=t.parent)&&t.height<++e)}function c(t){this.data=t,this.depth=this.height=0,this.parent=null}c.prototype=a.prototype={constructor:c,count:function(){return this.eachAfter(i)},each:function(t){var e,r,n,i,a=this,o=[a];do{for(e=o.reverse(),o=[];a=e.pop();)if(t(a),r=a.children)for(n=0,i=r.length;n=0;--r)i.push(e[r]);return this},sum:function(t){return this.eachAfter((function(e){for(var r=+t(e.data)||0,n=e.children,i=n&&n.length;--i>=0;)r+=n[i].value;e.value=r}))},sort:function(t){return this.eachBefore((function(e){e.children&&e.children.sort(t)}))},path:function(t){for(var e=this,r=function(t,e){if(t===e)return t;var r=t.ancestors(),n=e.ancestors(),i=null;t=r.pop(),e=n.pop();for(;t===e;)i=t,t=r.pop(),e=n.pop();return i}(e,t),n=[e];e!==r;)e=e.parent,n.push(e);for(var i=n.length;t!==r;)n.splice(i,0,t),t=t.parent;return n},ancestors:function(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e},descendants:function(){var t=[];return this.each((function(e){t.push(e)})),t},leaves:function(){var t=[];return this.eachBefore((function(e){e.children||t.push(e)})),t},links:function(){var t=this,e=[];return t.each((function(r){r!==t&&e.push({source:r.parent,target:r})})),e},copy:function(){return a(this).eachBefore(s)}};var u=Array.prototype.slice;function f(t){for(var e,r,n=0,i=(t=function(t){for(var e,r,n=t.length;n;)r=Math.random()*n--|0,e=t[n],t[n]=t[r],t[r]=e;return t}(u.call(t))).length,a=[];n0&&r*r>n*n+i*i}function g(t,e){for(var r=0;r(o*=o)?(n=(c+o-i)/(2*c),a=Math.sqrt(Math.max(0,o/c-n*n)),r.x=t.x-n*s-a*l,r.y=t.y-n*l+a*s):(n=(c+i-o)/(2*c),a=Math.sqrt(Math.max(0,i/c-n*n)),r.x=e.x+n*s-a*l,r.y=e.y+n*l+a*s)):(r.x=e.x+r.r,r.y=e.y)}function b(t,e){var r=t.r+e.r-1e-6,n=e.x-t.x,i=e.y-t.y;return r>0&&r*r>n*n+i*i}function _(t){var e=t._,r=t.next._,n=e.r+r.r,i=(e.x*r.r+r.x*e.r)/n,a=(e.y*r.r+r.y*e.r)/n;return i*i+a*a}function w(t){this._=t,this.next=null,this.previous=null}function T(t){if(!(i=t.length))return 0;var e,r,n,i,a,o,s,l,c,u,h;if((e=t[0]).x=0,e.y=0,!(i>1))return e.r;if(r=t[1],e.x=-r.r,r.x=e.r,r.y=0,!(i>2))return e.r+r.r;x(r,e,n=t[2]),e=new w(e),r=new w(r),n=new w(n),e.next=n.previous=r,r.next=e.previous=n,n.next=r.previous=e;t:for(s=3;sh&&(h=s),m=u*u*g,(p=Math.max(h/m,m/f))>d){u-=s;break}d=p}v.push(o={value:u,dice:l1?e:1)},r}(G);var X=function t(e){function r(t,r,n,i,a){if((o=t._squarify)&&o.ratio===e)for(var o,s,l,c,u,f=-1,h=o.length,p=t.value;++f1?e:1)},r}(G);t.cluster=function(){var t=e,i=1,a=1,o=!1;function s(e){var s,l=0;e.eachAfter((function(e){var i=e.children;i?(e.x=function(t){return t.reduce(r,0)/t.length}(i),e.y=function(t){return 1+t.reduce(n,0)}(i)):(e.x=s?l+=t(e,s):0,e.y=0,s=e)}));var c=function(t){for(var e;e=t.children;)t=e[0];return t}(e),u=function(t){for(var e;e=t.children;)t=e[e.length-1];return t}(e),f=c.x-t(c,u)/2,h=u.x+t(u,c)/2;return e.eachAfter(o?function(t){t.x=(t.x-e.x)*i,t.y=(e.y-t.y)*a}:function(t){t.x=(t.x-f)/(h-f)*i,t.y=(1-(e.y?t.y/e.y:1))*a})}return s.separation=function(e){return arguments.length?(t=e,s):t},s.size=function(t){return arguments.length?(o=!1,i=+t[0],a=+t[1],s):o?null:[i,a]},s.nodeSize=function(t){return arguments.length?(o=!0,i=+t[0],a=+t[1],s):o?[i,a]:null},s},t.hierarchy=a,t.pack=function(){var t=null,e=1,r=1,n=M;function i(i){return i.x=e/2,i.y=r/2,t?i.eachBefore(L(t)).eachAfter(C(n,.5)).eachBefore(P(1)):i.eachBefore(L(E)).eachAfter(C(M,1)).eachAfter(C(n,i.r/Math.min(e,r))).eachBefore(P(Math.min(e,r)/(2*i.r))),i}return i.radius=function(e){return arguments.length?(t=k(e),i):t},i.size=function(t){return arguments.length?(e=+t[0],r=+t[1],i):[e,r]},i.padding=function(t){return arguments.length?(n=\"function\"==typeof t?t:S(+t),i):n},i},t.packEnclose=f,t.packSiblings=function(t){return T(t),t},t.partition=function(){var t=1,e=1,r=0,n=!1;function i(i){var a=i.height+1;return i.x0=i.y0=r,i.x1=t,i.y1=e/a,i.eachBefore(function(t,e){return function(n){n.children&&O(n,n.x0,t*(n.depth+1)/e,n.x1,t*(n.depth+2)/e);var i=n.x0,a=n.y0,o=n.x1-r,s=n.y1-r;o0)throw new Error(\"cycle\");return a}return r.id=function(e){return arguments.length?(t=A(e),r):t},r.parentId=function(t){return arguments.length?(e=A(t),r):e},r},t.tree=function(){var t=B,e=1,r=1,n=null;function i(i){var l=function(t){for(var e,r,n,i,a,o=new H(t,0),s=[o];e=s.pop();)if(n=e._.children)for(e.children=new Array(a=n.length),i=a-1;i>=0;--i)s.push(r=e.children[i]=new H(n[i],i)),r.parent=e;return(o.parent=new H(null,0)).children=[o],o}(i);if(l.eachAfter(a),l.parent.m=-l.z,l.eachBefore(o),n)i.eachBefore(s);else{var c=i,u=i,f=i;i.eachBefore((function(t){t.xu.x&&(u=t),t.depth>f.depth&&(f=t)}));var h=c===u?1:t(c,u)/2,p=h-c.x,d=e/(u.x+h+p),g=r/(f.depth||1);i.eachBefore((function(t){t.x=(t.x+p)*d,t.y=t.depth*g}))}return i}function a(e){var r=e.children,n=e.parent.children,i=e.i?n[e.i-1]:null;if(r){!function(t){for(var e,r=0,n=0,i=t.children,a=i.length;--a>=0;)(e=i[a]).z+=r,e.m+=r,r+=e.s+(n+=e.c)}(e);var a=(r[0].z+r[r.length-1].z)/2;i?(e.z=i.z+t(e._,i._),e.m=e.z-a):e.z=a}else i&&(e.z=i.z+t(e._,i._));e.parent.A=function(e,r,n){if(r){for(var i,a=e,o=e,s=r,l=a.parent.children[0],c=a.m,u=o.m,f=s.m,h=l.m;s=j(s),a=N(a),s&&a;)l=N(l),(o=j(o)).a=e,(i=s.z+f-a.z-c+t(s._,a._))>0&&(U(V(s,e,n),e,i),c+=i,u+=i),f+=s.m,c+=a.m,h+=l.m,u+=o.m;s&&!j(o)&&(o.t=s,o.m+=f-u),a&&!N(l)&&(l.t=a,l.m+=c-h,n=e)}return n}(e,i,e.parent.A||n[0])}function o(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function s(t){t.x*=e,t.y=t.depth*r}return i.separation=function(e){return arguments.length?(t=e,i):t},i.size=function(t){return arguments.length?(n=!1,e=+t[0],r=+t[1],i):n?null:[e,r]},i.nodeSize=function(t){return arguments.length?(n=!0,e=+t[0],r=+t[1],i):n?[e,r]:null},i},t.treemap=function(){var t=W,e=!1,r=1,n=1,i=[0],a=M,o=M,s=M,l=M,c=M;function u(t){return t.x0=t.y0=0,t.x1=r,t.y1=n,t.eachBefore(f),i=[0],e&&t.eachBefore(I),t}function f(e){var r=i[e.depth],n=e.x0+r,u=e.y0+r,f=e.x1-r,h=e.y1-r;f=r-1){var u=s[e];return u.x0=i,u.y0=a,u.x1=o,void(u.y1=l)}var f=c[e],h=n/2+f,p=e+1,d=r-1;for(;p>>1;c[g]l-a){var y=(i*v+o*m)/n;t(e,p,m,i,a,y,l),t(p,r,v,y,a,o,l)}else{var x=(a*v+l*m)/n;t(e,p,m,i,a,o,x),t(p,r,v,i,x,o,l)}}(0,l,t.value,e,r,n,i)},t.treemapDice=O,t.treemapResquarify=X,t.treemapSlice=q,t.treemapSliceDice=function(t,e,r,n,i){(1&t.depth?q:O)(t,e,r,n,i)},t.treemapSquarify=W,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{}],116:[function(t,e,r){!function(n,i){\"object\"==typeof r&&void 0!==e?i(r,t(\"d3-color\")):i((n=n||self).d3=n.d3||{},n.d3)}(this,(function(t,e){\"use strict\";function r(t,e,r,n,i){var a=t*t,o=a*t;return((1-3*t+3*a-o)*e+(4-6*a+3*o)*r+(1+3*t+3*a-3*o)*n+o*i)/6}function n(t){var e=t.length-1;return function(n){var i=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),a=t[i],o=t[i+1],s=i>0?t[i-1]:2*a-o,l=i180||r<-180?r-360*Math.round(r/360):r):a(isNaN(t)?e:t)}function l(t){return 1==(t=+t)?c:function(e,r){return r-e?function(t,e,r){return t=Math.pow(t,r),e=Math.pow(e,r)-t,r=1/r,function(n){return Math.pow(t+n*e,r)}}(e,r,t):a(isNaN(e)?r:e)}}function c(t,e){var r=e-t;return r?o(t,r):a(isNaN(t)?e:t)}var u=function t(r){var n=l(r);function i(t,r){var i=n((t=e.rgb(t)).r,(r=e.rgb(r)).r),a=n(t.g,r.g),o=n(t.b,r.b),s=c(t.opacity,r.opacity);return function(e){return t.r=i(e),t.g=a(e),t.b=o(e),t.opacity=s(e),t+\"\"}}return i.gamma=t,i}(1);function f(t){return function(r){var n,i,a=r.length,o=new Array(a),s=new Array(a),l=new Array(a);for(n=0;na&&(i=e.slice(a,i),s[o]?s[o]+=i:s[++o]=i),(r=r[0])===(n=n[0])?s[o]?s[o]+=n:s[++o]=n:(s[++o]=null,l.push({i:o,x:y(r,n)})),a=_.lastIndex;return a180?e+=360:e-t>180&&(t+=360),a.push({i:r.push(i(r)+\"rotate(\",null,n)-2,x:y(t,e)})):e&&r.push(i(r)+\"rotate(\"+e+n)}(a.rotate,o.rotate,s,l),function(t,e,r,a){t!==e?a.push({i:r.push(i(r)+\"skewX(\",null,n)-2,x:y(t,e)}):e&&r.push(i(r)+\"skewX(\"+e+n)}(a.skewX,o.skewX,s,l),function(t,e,r,n,a,o){if(t!==r||e!==n){var s=a.push(i(a)+\"scale(\",null,\",\",null,\")\");o.push({i:s-4,x:y(t,r)},{i:s-2,x:y(e,n)})}else 1===r&&1===n||a.push(i(a)+\"scale(\"+r+\",\"+n+\")\")}(a.scaleX,a.scaleY,o.scaleX,o.scaleY,s,l),a=o=null,function(t){for(var e,r=-1,n=l.length;++r1e-6)if(Math.abs(f*l-c*u)>1e-6&&a){var p=n-o,d=i-s,g=l*l+c*c,m=p*p+d*d,v=Math.sqrt(g),y=Math.sqrt(h),x=a*Math.tan((e-Math.acos((g+h-m)/(2*v*y)))/2),b=x/y,_=x/v;Math.abs(b-1)>1e-6&&(this._+=\"L\"+(t+b*u)+\",\"+(r+b*f)),this._+=\"A\"+a+\",\"+a+\",0,0,\"+ +(f*p>u*d)+\",\"+(this._x1=t+_*l)+\",\"+(this._y1=r+_*c)}else this._+=\"L\"+(this._x1=t)+\",\"+(this._y1=r);else;},arc:function(t,i,a,o,s,l){t=+t,i=+i,l=!!l;var c=(a=+a)*Math.cos(o),u=a*Math.sin(o),f=t+c,h=i+u,p=1^l,d=l?o-s:s-o;if(a<0)throw new Error(\"negative radius: \"+a);null===this._x1?this._+=\"M\"+f+\",\"+h:(Math.abs(this._x1-f)>1e-6||Math.abs(this._y1-h)>1e-6)&&(this._+=\"L\"+f+\",\"+h),a&&(d<0&&(d=d%r+r),d>n?this._+=\"A\"+a+\",\"+a+\",0,1,\"+p+\",\"+(t-c)+\",\"+(i-u)+\"A\"+a+\",\"+a+\",0,1,\"+p+\",\"+(this._x1=f)+\",\"+(this._y1=h):d>1e-6&&(this._+=\"A\"+a+\",\"+a+\",0,\"+ +(d>=e)+\",\"+p+\",\"+(this._x1=t+a*Math.cos(s))+\",\"+(this._y1=i+a*Math.sin(s))))},rect:function(t,e,r,n){this._+=\"M\"+(this._x0=this._x1=+t)+\",\"+(this._y0=this._y1=+e)+\"h\"+ +r+\"v\"+ +n+\"h\"+-r+\"Z\"},toString:function(){return this._}},t.path=a,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{}],118:[function(t,e,r){!function(t,n){\"object\"==typeof r&&void 0!==e?n(r):n((t=t||self).d3=t.d3||{})}(this,(function(t){\"use strict\";function e(t,e,r,n){if(isNaN(e)||isNaN(r))return t;var i,a,o,s,l,c,u,f,h,p=t._root,d={data:n},g=t._x0,m=t._y0,v=t._x1,y=t._y1;if(!p)return t._root=d,t;for(;p.length;)if((c=e>=(a=(g+v)/2))?g=a:v=a,(u=r>=(o=(m+y)/2))?m=o:y=o,i=p,!(p=p[f=u<<1|c]))return i[f]=d,t;if(s=+t._x.call(null,p.data),l=+t._y.call(null,p.data),e===s&&r===l)return d.next=p,i?i[f]=d:t._root=d,t;do{i=i?i[f]=new Array(4):t._root=new Array(4),(c=e>=(a=(g+v)/2))?g=a:v=a,(u=r>=(o=(m+y)/2))?m=o:y=o}while((f=u<<1|c)==(h=(l>=o)<<1|s>=a));return i[h]=p,i[f]=d,t}function r(t,e,r,n,i){this.node=t,this.x0=e,this.y0=r,this.x1=n,this.y1=i}function n(t){return t[0]}function i(t){return t[1]}function a(t,e,r){var a=new o(null==e?n:e,null==r?i:r,NaN,NaN,NaN,NaN);return null==t?a:a.addAll(t)}function o(t,e,r,n,i,a){this._x=t,this._y=e,this._x0=r,this._y0=n,this._x1=i,this._y1=a,this._root=void 0}function s(t){for(var e={data:t.data},r=e;t=t.next;)r=r.next={data:t.data};return e}var l=a.prototype=o.prototype;l.copy=function(){var t,e,r=new o(this._x,this._y,this._x0,this._y0,this._x1,this._y1),n=this._root;if(!n)return r;if(!n.length)return r._root=s(n),r;for(t=[{source:n,target:r._root=new Array(4)}];n=t.pop();)for(var i=0;i<4;++i)(e=n.source[i])&&(e.length?t.push({source:e,target:n.target[i]=new Array(4)}):n.target[i]=s(e));return r},l.add=function(t){var r=+this._x.call(null,t),n=+this._y.call(null,t);return e(this.cover(r,n),r,n,t)},l.addAll=function(t){var r,n,i,a,o=t.length,s=new Array(o),l=new Array(o),c=1/0,u=1/0,f=-1/0,h=-1/0;for(n=0;nf&&(f=i),ah&&(h=a));if(c>f||u>h)return this;for(this.cover(c,u).cover(f,h),n=0;nt||t>=i||n>e||e>=a;)switch(s=(ep||(o=c.y0)>d||(s=c.x1)=y)<<1|t>=v)&&(c=g[g.length-1],g[g.length-1]=g[g.length-1-u],g[g.length-1-u]=c)}else{var x=t-+this._x.call(null,m.data),b=e-+this._y.call(null,m.data),_=x*x+b*b;if(_=(s=(d+m)/2))?d=s:m=s,(u=o>=(l=(g+v)/2))?g=l:v=l,e=p,!(p=p[f=u<<1|c]))return this;if(!p.length)break;(e[f+1&3]||e[f+2&3]||e[f+3&3])&&(r=e,h=f)}for(;p.data!==t;)if(n=p,!(p=p.next))return this;return(i=p.next)&&delete p.next,n?(i?n.next=i:delete n.next,this):e?(i?e[f]=i:delete e[f],(p=e[0]||e[1]||e[2]||e[3])&&p===(e[3]||e[2]||e[1]||e[0])&&!p.length&&(r?r[h]=p:this._root=p),this):(this._root=i,this)},l.removeAll=function(t){for(var e=0,r=t.length;e1?0:t<-1?u:Math.acos(t)}function d(t){return t>=1?f:t<=-1?-f:Math.asin(t)}function g(t){return t.innerRadius}function m(t){return t.outerRadius}function v(t){return t.startAngle}function y(t){return t.endAngle}function x(t){return t&&t.padAngle}function b(t,e,r,n,i,a,o,s){var l=r-t,c=n-e,u=o-i,f=s-a,h=f*l-u*c;if(!(h*h<1e-12))return[t+(h=(u*(e-a)-f*(t-i))/h)*l,e+h*c]}function _(t,e,r,n,i,a,s){var l=t-r,u=e-n,f=(s?a:-a)/c(l*l+u*u),h=f*u,p=-f*l,d=t+h,g=e+p,m=r+h,v=n+p,y=(d+m)/2,x=(g+v)/2,b=m-d,_=v-g,w=b*b+_*_,T=i-a,k=d*v-m*g,A=(_<0?-1:1)*c(o(0,T*T*w-k*k)),M=(k*_-b*A)/w,S=(-k*b-_*A)/w,E=(k*_+b*A)/w,L=(-k*b+_*A)/w,C=M-y,P=S-x,I=E-y,O=L-x;return C*C+P*P>I*I+O*O&&(M=E,S=L),{cx:M,cy:S,x01:-h,y01:-p,x11:M*(i/T-1),y11:S*(i/T-1)}}function w(t){this._context=t}function T(t){return new w(t)}function k(t){return t[0]}function A(t){return t[1]}function M(){var t=k,n=A,i=r(!0),a=null,o=T,s=null;function l(r){var l,c,u,f=r.length,h=!1;for(null==a&&(s=o(u=e.path())),l=0;l<=f;++l)!(l=f;--h)c.point(v[h],y[h]);c.lineEnd(),c.areaEnd()}m&&(v[u]=+t(p,u,r),y[u]=+i(p,u,r),c.point(n?+n(p,u,r):v[u],a?+a(p,u,r):y[u]))}if(d)return c=null,d+\"\"||null}function f(){return M().defined(o).curve(l).context(s)}return u.x=function(e){return arguments.length?(t=\"function\"==typeof e?e:r(+e),n=null,u):t},u.x0=function(e){return arguments.length?(t=\"function\"==typeof e?e:r(+e),u):t},u.x1=function(t){return arguments.length?(n=null==t?null:\"function\"==typeof t?t:r(+t),u):n},u.y=function(t){return arguments.length?(i=\"function\"==typeof t?t:r(+t),a=null,u):i},u.y0=function(t){return arguments.length?(i=\"function\"==typeof t?t:r(+t),u):i},u.y1=function(t){return arguments.length?(a=null==t?null:\"function\"==typeof t?t:r(+t),u):a},u.lineX0=u.lineY0=function(){return f().x(t).y(i)},u.lineY1=function(){return f().x(t).y(a)},u.lineX1=function(){return f().x(n).y(i)},u.defined=function(t){return arguments.length?(o=\"function\"==typeof t?t:r(!!t),u):o},u.curve=function(t){return arguments.length?(l=t,null!=s&&(c=l(s)),u):l},u.context=function(t){return arguments.length?(null==t?s=c=null:c=l(s=t),u):s},u}function E(t,e){return et?1:e>=t?0:NaN}function L(t){return t}w.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e)}}};var C=I(T);function P(t){this._curve=t}function I(t){function e(e){return new P(t(e))}return e._curve=t,e}function O(t){var e=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?e(I(t)):e()._curve},t}function z(){return O(M().curve(C))}function D(){var t=S().curve(C),e=t.curve,r=t.lineX0,n=t.lineX1,i=t.lineY0,a=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return O(r())},delete t.lineX0,t.lineEndAngle=function(){return O(n())},delete t.lineX1,t.lineInnerRadius=function(){return O(i())},delete t.lineY0,t.lineOuterRadius=function(){return O(a())},delete t.lineY1,t.curve=function(t){return arguments.length?e(I(t)):e()._curve},t}function R(t,e){return[(e=+e)*Math.cos(t-=Math.PI/2),e*Math.sin(t)]}P.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,e){this._curve.point(e*Math.sin(t),e*-Math.cos(t))}};var F=Array.prototype.slice;function B(t){return t.source}function N(t){return t.target}function j(t){var n=B,i=N,a=k,o=A,s=null;function l(){var r,l=F.call(arguments),c=n.apply(this,l),u=i.apply(this,l);if(s||(s=r=e.path()),t(s,+a.apply(this,(l[0]=c,l)),+o.apply(this,l),+a.apply(this,(l[0]=u,l)),+o.apply(this,l)),r)return s=null,r+\"\"||null}return l.source=function(t){return arguments.length?(n=t,l):n},l.target=function(t){return arguments.length?(i=t,l):i},l.x=function(t){return arguments.length?(a=\"function\"==typeof t?t:r(+t),l):a},l.y=function(t){return arguments.length?(o=\"function\"==typeof t?t:r(+t),l):o},l.context=function(t){return arguments.length?(s=null==t?null:t,l):s},l}function U(t,e,r,n,i){t.moveTo(e,r),t.bezierCurveTo(e=(e+n)/2,r,e,i,n,i)}function V(t,e,r,n,i){t.moveTo(e,r),t.bezierCurveTo(e,r=(r+i)/2,n,r,n,i)}function H(t,e,r,n,i){var a=R(e,r),o=R(e,r=(r+i)/2),s=R(n,r),l=R(n,i);t.moveTo(a[0],a[1]),t.bezierCurveTo(o[0],o[1],s[0],s[1],l[0],l[1])}var q={draw:function(t,e){var r=Math.sqrt(e/u);t.moveTo(r,0),t.arc(0,0,r,0,h)}},G={draw:function(t,e){var r=Math.sqrt(e/5)/2;t.moveTo(-3*r,-r),t.lineTo(-r,-r),t.lineTo(-r,-3*r),t.lineTo(r,-3*r),t.lineTo(r,-r),t.lineTo(3*r,-r),t.lineTo(3*r,r),t.lineTo(r,r),t.lineTo(r,3*r),t.lineTo(-r,3*r),t.lineTo(-r,r),t.lineTo(-3*r,r),t.closePath()}},Y=Math.sqrt(1/3),W=2*Y,X={draw:function(t,e){var r=Math.sqrt(e/W),n=r*Y;t.moveTo(0,-r),t.lineTo(n,0),t.lineTo(0,r),t.lineTo(-n,0),t.closePath()}},Z=Math.sin(u/10)/Math.sin(7*u/10),J=Math.sin(h/10)*Z,K=-Math.cos(h/10)*Z,Q={draw:function(t,e){var r=Math.sqrt(.8908130915292852*e),n=J*r,i=K*r;t.moveTo(0,-r),t.lineTo(n,i);for(var a=1;a<5;++a){var o=h*a/5,s=Math.cos(o),l=Math.sin(o);t.lineTo(l*r,-s*r),t.lineTo(s*n-l*i,l*n+s*i)}t.closePath()}},$={draw:function(t,e){var r=Math.sqrt(e),n=-r/2;t.rect(n,n,r,r)}},tt=Math.sqrt(3),et={draw:function(t,e){var r=-Math.sqrt(e/(3*tt));t.moveTo(0,2*r),t.lineTo(-tt*r,-r),t.lineTo(tt*r,-r),t.closePath()}},rt=-.5,nt=Math.sqrt(3)/2,it=1/Math.sqrt(12),at=3*(it/2+1),ot={draw:function(t,e){var r=Math.sqrt(e/at),n=r/2,i=r*it,a=n,o=r*it+r,s=-a,l=o;t.moveTo(n,i),t.lineTo(a,o),t.lineTo(s,l),t.lineTo(rt*n-nt*i,nt*n+rt*i),t.lineTo(rt*a-nt*o,nt*a+rt*o),t.lineTo(rt*s-nt*l,nt*s+rt*l),t.lineTo(rt*n+nt*i,rt*i-nt*n),t.lineTo(rt*a+nt*o,rt*o-nt*a),t.lineTo(rt*s+nt*l,rt*l-nt*s),t.closePath()}},st=[q,G,X,$,Q,et,ot];function lt(){}function ct(t,e,r){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+r)/6)}function ut(t){this._context=t}function ft(t){this._context=t}function ht(t){this._context=t}function pt(t,e){this._basis=new ut(t),this._beta=e}ut.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:ct(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:ct(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},ft.prototype={areaStart:lt,areaEnd:lt,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:ct(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},ht.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+t)/6,n=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(r,n):this._context.moveTo(r,n);break;case 3:this._point=4;default:ct(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},pt.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,r=t.length-1;if(r>0)for(var n,i=t[0],a=e[0],o=t[r]-i,s=e[r]-a,l=-1;++l<=r;)n=l/r,this._basis.point(this._beta*t[l]+(1-this._beta)*(i+n*o),this._beta*e[l]+(1-this._beta)*(a+n*s));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};var dt=function t(e){function r(t){return 1===e?new ut(t):new pt(t,e)}return r.beta=function(e){return t(+e)},r}(.85);function gt(t,e,r){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-r),t._x2,t._y2)}function mt(t,e){this._context=t,this._k=(1-e)/6}mt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:gt(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:gt(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var vt=function t(e){function r(t){return new mt(t,e)}return r.tension=function(e){return t(+e)},r}(0);function yt(t,e){this._context=t,this._k=(1-e)/6}yt.prototype={areaStart:lt,areaEnd:lt,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:gt(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var xt=function t(e){function r(t){return new yt(t,e)}return r.tension=function(e){return t(+e)},r}(0);function bt(t,e){this._context=t,this._k=(1-e)/6}bt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:gt(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var _t=function t(e){function r(t){return new bt(t,e)}return r.tension=function(e){return t(+e)},r}(0);function wt(t,e,r){var n=t._x1,i=t._y1,a=t._x2,o=t._y2;if(t._l01_a>1e-12){var s=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,l=3*t._l01_a*(t._l01_a+t._l12_a);n=(n*s-t._x0*t._l12_2a+t._x2*t._l01_2a)/l,i=(i*s-t._y0*t._l12_2a+t._y2*t._l01_2a)/l}if(t._l23_a>1e-12){var c=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,u=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*c+t._x1*t._l23_2a-e*t._l12_2a)/u,o=(o*c+t._y1*t._l23_2a-r*t._l12_2a)/u}t._context.bezierCurveTo(n,i,a,o,t._x2,t._y2)}function Tt(t,e){this._context=t,this._alpha=e}Tt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:wt(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var kt=function t(e){function r(t){return e?new Tt(t,e):new mt(t,0)}return r.alpha=function(e){return t(+e)},r}(.5);function At(t,e){this._context=t,this._alpha=e}At.prototype={areaStart:lt,areaEnd:lt,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:wt(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Mt=function t(e){function r(t){return e?new At(t,e):new yt(t,0)}return r.alpha=function(e){return t(+e)},r}(.5);function St(t,e){this._context=t,this._alpha=e}St.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:wt(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Et=function t(e){function r(t){return e?new St(t,e):new bt(t,0)}return r.alpha=function(e){return t(+e)},r}(.5);function Lt(t){this._context=t}function Ct(t){return t<0?-1:1}function Pt(t,e,r){var n=t._x1-t._x0,i=e-t._x1,a=(t._y1-t._y0)/(n||i<0&&-0),o=(r-t._y1)/(i||n<0&&-0),s=(a*i+o*n)/(n+i);return(Ct(a)+Ct(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(s))||0}function It(t,e){var r=t._x1-t._x0;return r?(3*(t._y1-t._y0)/r-e)/2:e}function Ot(t,e,r){var n=t._x0,i=t._y0,a=t._x1,o=t._y1,s=(a-n)/3;t._context.bezierCurveTo(n+s,i+s*e,a-s,o-s*r,a,o)}function zt(t){this._context=t}function Dt(t){this._context=new Rt(t)}function Rt(t){this._context=t}function Ft(t){this._context=t}function Bt(t){var e,r,n=t.length-1,i=new Array(n),a=new Array(n),o=new Array(n);for(i[0]=0,a[0]=2,o[0]=t[0]+2*t[1],e=1;e=0;--e)i[e]=(o[e]-i[e+1])/a[e];for(a[n-1]=(t[n]+i[n-1])/2,e=0;e1)for(var r,n,i,a=1,o=t[e[0]],s=o.length;a=0;)r[e]=e;return r}function Vt(t,e){return t[e]}function Ht(t){var e=t.map(qt);return Ut(t).sort((function(t,r){return e[t]-e[r]}))}function qt(t){for(var e,r=-1,n=0,i=t.length,a=-1/0;++ra&&(a=e,n=r);return n}function Gt(t){var e=t.map(Yt);return Ut(t).sort((function(t,r){return e[t]-e[r]}))}function Yt(t){for(var e,r=0,n=-1,i=t.length;++n=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var r=this._x*(1-this._t)+t*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,e)}}this._x=t,this._y=e}},t.arc=function(){var t=g,o=m,w=r(0),T=null,k=v,A=y,M=x,S=null;function E(){var r,g,m=+t.apply(this,arguments),v=+o.apply(this,arguments),y=k.apply(this,arguments)-f,x=A.apply(this,arguments)-f,E=n(x-y),L=x>y;if(S||(S=r=e.path()),v1e-12)if(E>h-1e-12)S.moveTo(v*a(y),v*l(y)),S.arc(0,0,v,y,x,!L),m>1e-12&&(S.moveTo(m*a(x),m*l(x)),S.arc(0,0,m,x,y,L));else{var C,P,I=y,O=x,z=y,D=x,R=E,F=E,B=M.apply(this,arguments)/2,N=B>1e-12&&(T?+T.apply(this,arguments):c(m*m+v*v)),j=s(n(v-m)/2,+w.apply(this,arguments)),U=j,V=j;if(N>1e-12){var H=d(N/m*l(B)),q=d(N/v*l(B));(R-=2*H)>1e-12?(z+=H*=L?1:-1,D-=H):(R=0,z=D=(y+x)/2),(F-=2*q)>1e-12?(I+=q*=L?1:-1,O-=q):(F=0,I=O=(y+x)/2)}var G=v*a(I),Y=v*l(I),W=m*a(D),X=m*l(D);if(j>1e-12){var Z,J=v*a(O),K=v*l(O),Q=m*a(z),$=m*l(z);if(E1e-12?V>1e-12?(C=_(Q,$,G,Y,v,V,L),P=_(J,K,W,X,v,V,L),S.moveTo(C.cx+C.x01,C.cy+C.y01),V1e-12&&R>1e-12?U>1e-12?(C=_(W,X,J,K,m,-U,L),P=_(G,Y,Q,$,m,-U,L),S.lineTo(C.cx+C.x01,C.cy+C.y01),U0&&(d+=f);for(null!=e?g.sort((function(t,r){return e(m[t],m[r])})):null!=n&&g.sort((function(t,e){return n(r[t],r[e])})),s=0,c=d?(y-p*b)/d:0;s0?f*c:0)+b,m[l]={data:r[l],index:s,value:f,startAngle:v,endAngle:u,padAngle:x};return m}return s.value=function(e){return arguments.length?(t=\"function\"==typeof e?e:r(+e),s):t},s.sortValues=function(t){return arguments.length?(e=t,n=null,s):e},s.sort=function(t){return arguments.length?(n=t,e=null,s):n},s.startAngle=function(t){return arguments.length?(i=\"function\"==typeof t?t:r(+t),s):i},s.endAngle=function(t){return arguments.length?(a=\"function\"==typeof t?t:r(+t),s):a},s.padAngle=function(t){return arguments.length?(o=\"function\"==typeof t?t:r(+t),s):o},s},t.pointRadial=R,t.radialArea=D,t.radialLine=z,t.stack=function(){var t=r([]),e=Ut,n=jt,i=Vt;function a(r){var a,o,s=t.apply(this,arguments),l=r.length,c=s.length,u=new Array(c);for(a=0;a0)for(var r,n,i,a,o,s,l=0,c=t[e[0]].length;l0?(n[0]=a,n[1]=a+=i):i<0?(n[1]=o,n[0]=o+=i):(n[0]=0,n[1]=i)},t.stackOffsetExpand=function(t,e){if((n=t.length)>0){for(var r,n,i,a=0,o=t[0].length;a0){for(var r,n=0,i=t[e[0]],a=i.length;n0&&(n=(r=t[e[0]]).length)>0){for(var r,n,i,a=0,o=1;o=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:mt,s:vt,S:H,u:q,U:G,V:Y,w:W,W:X,x:null,X:null,y:Z,Y:J,Z:K,\"%\":gt},Ct={a:function(t){return f[t.getUTCDay()]},A:function(t){return u[t.getUTCDay()]},b:function(t){return yt[t.getUTCMonth()]},B:function(t){return h[t.getUTCMonth()]},c:null,d:Q,e:Q,f:nt,H:$,I:tt,j:et,L:rt,m:it,M:at,p:function(t){return c[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:mt,s:vt,S:ot,u:st,U:lt,V:ct,w:ut,W:ft,x:null,X:null,y:ht,Y:pt,Z:dt,\"%\":gt},Pt={a:function(t,e,r){var n=Tt.exec(e.slice(r));return n?(t.w=kt[n[0].toLowerCase()],r+n[0].length):-1},A:function(t,e,r){var n=_t.exec(e.slice(r));return n?(t.w=wt[n[0].toLowerCase()],r+n[0].length):-1},b:function(t,e,r){var n=St.exec(e.slice(r));return n?(t.m=Et[n[0].toLowerCase()],r+n[0].length):-1},B:function(t,e,r){var n=At.exec(e.slice(r));return n?(t.m=Mt[n[0].toLowerCase()],r+n[0].length):-1},c:function(t,e,r){return zt(t,a,e,r)},d:A,e:A,f:P,H:S,I:S,j:M,L:C,m:k,M:E,p:function(t,e,r){var n=xt.exec(e.slice(r));return n?(t.p=bt[n[0].toLowerCase()],r+n[0].length):-1},q:T,Q:O,s:z,S:L,u:m,U:v,V:y,w:g,W:x,x:function(t,e,r){return zt(t,o,e,r)},X:function(t,e,r){return zt(t,l,e,r)},y:_,Y:b,Z:w,\"%\":I};function It(t,e){return function(r){var n,i,a,o=[],l=-1,c=0,u=t.length;for(r instanceof Date||(r=new Date(+r));++l53)return null;\"w\"in c||(c.w=1),\"Z\"in c?(l=(s=n(i(c.y,0,1))).getUTCDay(),s=l>4||0===l?e.utcMonday.ceil(s):e.utcMonday(s),s=e.utcDay.offset(s,7*(c.V-1)),c.y=s.getUTCFullYear(),c.m=s.getUTCMonth(),c.d=s.getUTCDate()+(c.w+6)%7):(l=(s=r(i(c.y,0,1))).getDay(),s=l>4||0===l?e.timeMonday.ceil(s):e.timeMonday(s),s=e.timeDay.offset(s,7*(c.V-1)),c.y=s.getFullYear(),c.m=s.getMonth(),c.d=s.getDate()+(c.w+6)%7)}else(\"W\"in c||\"U\"in c)&&(\"w\"in c||(c.w=\"u\"in c?c.u%7:\"W\"in c?1:0),l=\"Z\"in c?n(i(c.y,0,1)).getUTCDay():r(i(c.y,0,1)).getDay(),c.m=0,c.d=\"W\"in c?(c.w+6)%7+7*c.W-(l+5)%7:c.w+7*c.U-(l+6)%7);return\"Z\"in c?(c.H+=c.Z/100|0,c.M+=c.Z%100,n(c)):r(c)}}function zt(t,e,r,n){for(var i,a,o=0,l=e.length,c=r.length;o=c)return-1;if(37===(i=e.charCodeAt(o++))){if(i=e.charAt(o++),!(a=Pt[i in s?e.charAt(o++):i])||(n=a(t,r,n))<0)return-1}else if(i!=r.charCodeAt(n++))return-1}return n}return Lt.x=It(o,Lt),Lt.X=It(l,Lt),Lt.c=It(a,Lt),Ct.x=It(o,Ct),Ct.X=It(l,Ct),Ct.c=It(a,Ct),{format:function(t){var e=It(t+=\"\",Lt);return e.toString=function(){return t},e},parse:function(t){var e=Ot(t+=\"\",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=It(t+=\"\",Ct);return e.toString=function(){return t},e},utcParse:function(t){var e=Ot(t+=\"\",!0);return e.toString=function(){return t},e}}}var o,s={\"-\":\"\",_:\" \",0:\"0\"},l=/^\\s*\\d+/,c=/^%/,u=/[\\\\^$*+?|[\\]().{}]/g;function f(t,e,r){var n=t<0?\"-\":\"\",i=(n?-t:t)+\"\",a=i.length;return n+(a68?1900:2e3),r+n[0].length):-1}function w(t,e,r){var n=/^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(e.slice(r,r+6));return n?(t.Z=n[1]?0:-(n[2]+(n[3]||\"00\")),r+n[0].length):-1}function T(t,e,r){var n=l.exec(e.slice(r,r+1));return n?(t.q=3*n[0]-3,r+n[0].length):-1}function k(t,e,r){var n=l.exec(e.slice(r,r+2));return n?(t.m=n[0]-1,r+n[0].length):-1}function A(t,e,r){var n=l.exec(e.slice(r,r+2));return n?(t.d=+n[0],r+n[0].length):-1}function M(t,e,r){var n=l.exec(e.slice(r,r+3));return n?(t.m=0,t.d=+n[0],r+n[0].length):-1}function S(t,e,r){var n=l.exec(e.slice(r,r+2));return n?(t.H=+n[0],r+n[0].length):-1}function E(t,e,r){var n=l.exec(e.slice(r,r+2));return n?(t.M=+n[0],r+n[0].length):-1}function L(t,e,r){var n=l.exec(e.slice(r,r+2));return n?(t.S=+n[0],r+n[0].length):-1}function C(t,e,r){var n=l.exec(e.slice(r,r+3));return n?(t.L=+n[0],r+n[0].length):-1}function P(t,e,r){var n=l.exec(e.slice(r,r+6));return n?(t.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function I(t,e,r){var n=c.exec(e.slice(r,r+1));return n?r+n[0].length:-1}function O(t,e,r){var n=l.exec(e.slice(r));return n?(t.Q=+n[0],r+n[0].length):-1}function z(t,e,r){var n=l.exec(e.slice(r));return n?(t.s=+n[0],r+n[0].length):-1}function D(t,e){return f(t.getDate(),e,2)}function R(t,e){return f(t.getHours(),e,2)}function F(t,e){return f(t.getHours()%12||12,e,2)}function B(t,r){return f(1+e.timeDay.count(e.timeYear(t),t),r,3)}function N(t,e){return f(t.getMilliseconds(),e,3)}function j(t,e){return N(t,e)+\"000\"}function U(t,e){return f(t.getMonth()+1,e,2)}function V(t,e){return f(t.getMinutes(),e,2)}function H(t,e){return f(t.getSeconds(),e,2)}function q(t){var e=t.getDay();return 0===e?7:e}function G(t,r){return f(e.timeSunday.count(e.timeYear(t)-1,t),r,2)}function Y(t,r){var n=t.getDay();return t=n>=4||0===n?e.timeThursday(t):e.timeThursday.ceil(t),f(e.timeThursday.count(e.timeYear(t),t)+(4===e.timeYear(t).getDay()),r,2)}function W(t){return t.getDay()}function X(t,r){return f(e.timeMonday.count(e.timeYear(t)-1,t),r,2)}function Z(t,e){return f(t.getFullYear()%100,e,2)}function J(t,e){return f(t.getFullYear()%1e4,e,4)}function K(t){var e=t.getTimezoneOffset();return(e>0?\"-\":(e*=-1,\"+\"))+f(e/60|0,\"0\",2)+f(e%60,\"0\",2)}function Q(t,e){return f(t.getUTCDate(),e,2)}function $(t,e){return f(t.getUTCHours(),e,2)}function tt(t,e){return f(t.getUTCHours()%12||12,e,2)}function et(t,r){return f(1+e.utcDay.count(e.utcYear(t),t),r,3)}function rt(t,e){return f(t.getUTCMilliseconds(),e,3)}function nt(t,e){return rt(t,e)+\"000\"}function it(t,e){return f(t.getUTCMonth()+1,e,2)}function at(t,e){return f(t.getUTCMinutes(),e,2)}function ot(t,e){return f(t.getUTCSeconds(),e,2)}function st(t){var e=t.getUTCDay();return 0===e?7:e}function lt(t,r){return f(e.utcSunday.count(e.utcYear(t)-1,t),r,2)}function ct(t,r){var n=t.getUTCDay();return t=n>=4||0===n?e.utcThursday(t):e.utcThursday.ceil(t),f(e.utcThursday.count(e.utcYear(t),t)+(4===e.utcYear(t).getUTCDay()),r,2)}function ut(t){return t.getUTCDay()}function ft(t,r){return f(e.utcMonday.count(e.utcYear(t)-1,t),r,2)}function ht(t,e){return f(t.getUTCFullYear()%100,e,2)}function pt(t,e){return f(t.getUTCFullYear()%1e4,e,4)}function dt(){return\"+0000\"}function gt(){return\"%\"}function mt(t){return+t}function vt(t){return Math.floor(+t/1e3)}function yt(e){return o=a(e),t.timeFormat=o.format,t.timeParse=o.parse,t.utcFormat=o.utcFormat,t.utcParse=o.utcParse,o}yt({dateTime:\"%x, %X\",date:\"%-m/%-d/%Y\",time:\"%-I:%M:%S %p\",periods:[\"AM\",\"PM\"],days:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],shortDays:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],months:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],shortMonths:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"]});var xt=Date.prototype.toISOString?function(t){return t.toISOString()}:t.utcFormat(\"%Y-%m-%dT%H:%M:%S.%LZ\");var bt=+new Date(\"2000-01-01T00:00:00.000Z\")?function(t){var e=new Date(t);return isNaN(e)?null:e}:t.utcParse(\"%Y-%m-%dT%H:%M:%S.%LZ\");t.isoFormat=xt,t.isoParse=bt,t.timeFormatDefaultLocale=yt,t.timeFormatLocale=a,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{\"d3-time\":121}],121:[function(t,e,r){!function(t,n){\"object\"==typeof r&&void 0!==e?n(r):n((t=t||self).d3=t.d3||{})}(this,(function(t){\"use strict\";var e=new Date,r=new Date;function n(t,i,a,o){function s(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return s.floor=function(e){return t(e=new Date(+e)),e},s.ceil=function(e){return t(e=new Date(e-1)),i(e,1),t(e),e},s.round=function(t){var e=s(t),r=s.ceil(t);return t-e0))return o;do{o.push(a=new Date(+e)),i(e,n),t(e)}while(a=r)for(;t(r),!e(r);)r.setTime(r-1)}),(function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;i(t,-1),!e(t););else for(;--r>=0;)for(;i(t,1),!e(t););}))},a&&(s.count=function(n,i){return e.setTime(+n),r.setTime(+i),t(e),t(r),Math.floor(a(e,r))},s.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?s.filter(o?function(e){return o(e)%t==0}:function(e){return s.count(0,e)%t==0}):s:null}),s}var i=n((function(){}),(function(t,e){t.setTime(+t+e)}),(function(t,e){return e-t}));i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?n((function(e){e.setTime(Math.floor(e/t)*t)}),(function(e,r){e.setTime(+e+r*t)}),(function(e,r){return(r-e)/t})):i:null};var a=i.range,o=n((function(t){t.setTime(t-t.getMilliseconds())}),(function(t,e){t.setTime(+t+1e3*e)}),(function(t,e){return(e-t)/1e3}),(function(t){return t.getUTCSeconds()})),s=o.range,l=n((function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds())}),(function(t,e){t.setTime(+t+6e4*e)}),(function(t,e){return(e-t)/6e4}),(function(t){return t.getMinutes()})),c=l.range,u=n((function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds()-6e4*t.getMinutes())}),(function(t,e){t.setTime(+t+36e5*e)}),(function(t,e){return(e-t)/36e5}),(function(t){return t.getHours()})),f=u.range,h=n((function(t){t.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+e)}),(function(t,e){return(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/864e5}),(function(t){return t.getDate()-1})),p=h.range;function d(t){return n((function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+7*e)}),(function(t,e){return(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/6048e5}))}var g=d(0),m=d(1),v=d(2),y=d(3),x=d(4),b=d(5),_=d(6),w=g.range,T=m.range,k=v.range,A=y.range,M=x.range,S=b.range,E=_.range,L=n((function(t){t.setDate(1),t.setHours(0,0,0,0)}),(function(t,e){t.setMonth(t.getMonth()+e)}),(function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())}),(function(t){return t.getMonth()})),C=L.range,P=n((function(t){t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,e){t.setFullYear(t.getFullYear()+e)}),(function(t,e){return e.getFullYear()-t.getFullYear()}),(function(t){return t.getFullYear()}));P.every=function(t){return isFinite(t=Math.floor(t))&&t>0?n((function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),(function(e,r){e.setFullYear(e.getFullYear()+r*t)})):null};var I=P.range,O=n((function(t){t.setUTCSeconds(0,0)}),(function(t,e){t.setTime(+t+6e4*e)}),(function(t,e){return(e-t)/6e4}),(function(t){return t.getUTCMinutes()})),z=O.range,D=n((function(t){t.setUTCMinutes(0,0,0)}),(function(t,e){t.setTime(+t+36e5*e)}),(function(t,e){return(e-t)/36e5}),(function(t){return t.getUTCHours()})),R=D.range,F=n((function(t){t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+e)}),(function(t,e){return(e-t)/864e5}),(function(t){return t.getUTCDate()-1})),B=F.range;function N(t){return n((function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+7*e)}),(function(t,e){return(e-t)/6048e5}))}var j=N(0),U=N(1),V=N(2),H=N(3),q=N(4),G=N(5),Y=N(6),W=j.range,X=U.range,Z=V.range,J=H.range,K=q.range,Q=G.range,$=Y.range,tt=n((function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCMonth(t.getUTCMonth()+e)}),(function(t,e){return e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())}),(function(t){return t.getUTCMonth()})),et=tt.range,rt=n((function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)}),(function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()}),(function(t){return t.getUTCFullYear()}));rt.every=function(t){return isFinite(t=Math.floor(t))&&t>0?n((function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),(function(e,r){e.setUTCFullYear(e.getUTCFullYear()+r*t)})):null};var nt=rt.range;t.timeDay=h,t.timeDays=p,t.timeFriday=b,t.timeFridays=S,t.timeHour=u,t.timeHours=f,t.timeInterval=n,t.timeMillisecond=i,t.timeMilliseconds=a,t.timeMinute=l,t.timeMinutes=c,t.timeMonday=m,t.timeMondays=T,t.timeMonth=L,t.timeMonths=C,t.timeSaturday=_,t.timeSaturdays=E,t.timeSecond=o,t.timeSeconds=s,t.timeSunday=g,t.timeSundays=w,t.timeThursday=x,t.timeThursdays=M,t.timeTuesday=v,t.timeTuesdays=k,t.timeWednesday=y,t.timeWednesdays=A,t.timeWeek=g,t.timeWeeks=w,t.timeYear=P,t.timeYears=I,t.utcDay=F,t.utcDays=B,t.utcFriday=G,t.utcFridays=Q,t.utcHour=D,t.utcHours=R,t.utcMillisecond=i,t.utcMilliseconds=a,t.utcMinute=O,t.utcMinutes=z,t.utcMonday=U,t.utcMondays=X,t.utcMonth=tt,t.utcMonths=et,t.utcSaturday=Y,t.utcSaturdays=$,t.utcSecond=o,t.utcSeconds=s,t.utcSunday=j,t.utcSundays=W,t.utcThursday=q,t.utcThursdays=K,t.utcTuesday=V,t.utcTuesdays=Z,t.utcWednesday=H,t.utcWednesdays=J,t.utcWeek=j,t.utcWeeks=W,t.utcYear=rt,t.utcYears=nt,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{}],122:[function(t,e,r){arguments[4][121][0].apply(r,arguments)},{dup:121}],123:[function(t,e,r){!function(t,n){\"object\"==typeof r&&void 0!==e?n(r):n((t=t||self).d3=t.d3||{})}(this,(function(t){\"use strict\";var e,r,n=0,i=0,a=0,o=0,s=0,l=0,c=\"object\"==typeof performance&&performance.now?performance:Date,u=\"object\"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function f(){return s||(u(h),s=c.now()+l)}function h(){s=0}function p(){this._call=this._time=this._next=null}function d(t,e,r){var n=new p;return n.restart(t,e,r),n}function g(){f(),++n;for(var t,r=e;r;)(t=s-r._time)>=0&&r._call.call(null,t),r=r._next;--n}function m(){s=(o=c.now())+l,n=i=0;try{g()}finally{n=0,function(){var t,n,i=e,a=1/0;for(;i;)i._call?(a>i._time&&(a=i._time),t=i,i=i._next):(n=i._next,i._next=null,i=t?t._next=n:e=n);r=t,y(a)}(),s=0}}function v(){var t=c.now(),e=t-o;e>1e3&&(l-=e,o=t)}function y(t){n||(i&&(i=clearTimeout(i)),t-s>24?(t<1/0&&(i=setTimeout(m,t-c.now()-l)),a&&(a=clearInterval(a))):(a||(o=c.now(),a=setInterval(v,1e3)),n=1,u(m)))}p.prototype=d.prototype={constructor:p,restart:function(t,n,i){if(\"function\"!=typeof t)throw new TypeError(\"callback is not a function\");i=(null==i?f():+i)+(null==n?0:+n),this._next||r===this||(r?r._next=this:e=this,r=this),this._call=t,this._time=i,y()},stop:function(){this._call&&(this._call=null,this._time=1/0,y())}},t.interval=function(t,e,r){var n=new p,i=e;return null==e?(n.restart(t,e,r),n):(e=+e,r=null==r?f():+r,n.restart((function a(o){o+=i,n.restart(a,i+=e,r),t(o)}),e,r),n)},t.now=f,t.timeout=function(t,e,r){var n=new p;return e=null==e?0:+e,n.restart((function(r){n.stop(),t(r+e)}),e,r),n},t.timer=d,t.timerFlush=g,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{}],124:[function(t,e,r){e.exports=function(){for(var t=0;ts*l){var p=(h-f)/s;a[u]=1e3*p}}return a}function o(t){for(var e=[],r=t[0];r<=t[1];r++)for(var n=String.fromCharCode(r),i=t[0];i0)return function(t,e){var r,n;for(r=new Array(t),n=0;n80*r){n=l=t[0],s=c=t[1];for(var b=r;bl&&(l=u),p>c&&(c=p);d=0!==(d=Math.max(l-n,c-s))?1/d:0}return o(y,x,r,n,s,d),x}function i(t,e,r,n,i){var a,o;if(i===E(t,e,r,n)>0)for(a=e;a=e;a-=n)o=A(a,t[a],t[a+1],o);return o&&x(o,o.next)&&(M(o),o=o.next),o}function a(t,e){if(!t)return t;e||(e=t);var r,n=t;do{if(r=!1,n.steiner||!x(n,n.next)&&0!==y(n.prev,n,n.next))n=n.next;else{if(M(n),(n=e=n.prev)===n.next)break;r=!0}}while(r||n!==e);return e}function o(t,e,r,n,i,f,h){if(t){!h&&f&&function(t,e,r,n){var i=t;do{null===i.z&&(i.z=d(i.x,i.y,e,r,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next}while(i!==t);i.prevZ.nextZ=null,i.prevZ=null,function(t){var e,r,n,i,a,o,s,l,c=1;do{for(r=t,t=null,a=null,o=0;r;){for(o++,n=r,s=0,e=0;e0||l>0&&n;)0!==s&&(0===l||!n||r.z<=n.z)?(i=r,r=r.nextZ,s--):(i=n,n=n.nextZ,l--),a?a.nextZ=i:t=i,i.prevZ=a,a=i;r=n}a.nextZ=null,c*=2}while(o>1)}(i)}(t,n,i,f);for(var p,g,m=t;t.prev!==t.next;)if(p=t.prev,g=t.next,f?l(t,n,i,f):s(t))e.push(p.i/r),e.push(t.i/r),e.push(g.i/r),M(t),t=g.next,m=g.next;else if((t=g)===m){h?1===h?o(t=c(a(t),e,r),e,r,n,i,f,2):2===h&&u(t,e,r,n,i,f):o(a(t),e,r,n,i,f,1);break}}}function s(t){var e=t.prev,r=t,n=t.next;if(y(e,r,n)>=0)return!1;for(var i=t.next.next;i!==t.prev;){if(m(e.x,e.y,r.x,r.y,n.x,n.y,i.x,i.y)&&y(i.prev,i,i.next)>=0)return!1;i=i.next}return!0}function l(t,e,r,n){var i=t.prev,a=t,o=t.next;if(y(i,a,o)>=0)return!1;for(var s=i.xa.x?i.x>o.x?i.x:o.x:a.x>o.x?a.x:o.x,u=i.y>a.y?i.y>o.y?i.y:o.y:a.y>o.y?a.y:o.y,f=d(s,l,e,r,n),h=d(c,u,e,r,n),p=t.prevZ,g=t.nextZ;p&&p.z>=f&&g&&g.z<=h;){if(p!==t.prev&&p!==t.next&&m(i.x,i.y,a.x,a.y,o.x,o.y,p.x,p.y)&&y(p.prev,p,p.next)>=0)return!1;if(p=p.prevZ,g!==t.prev&&g!==t.next&&m(i.x,i.y,a.x,a.y,o.x,o.y,g.x,g.y)&&y(g.prev,g,g.next)>=0)return!1;g=g.nextZ}for(;p&&p.z>=f;){if(p!==t.prev&&p!==t.next&&m(i.x,i.y,a.x,a.y,o.x,o.y,p.x,p.y)&&y(p.prev,p,p.next)>=0)return!1;p=p.prevZ}for(;g&&g.z<=h;){if(g!==t.prev&&g!==t.next&&m(i.x,i.y,a.x,a.y,o.x,o.y,g.x,g.y)&&y(g.prev,g,g.next)>=0)return!1;g=g.nextZ}return!0}function c(t,e,r){var n=t;do{var i=n.prev,o=n.next.next;!x(i,o)&&b(i,n,n.next,o)&&T(i,o)&&T(o,i)&&(e.push(i.i/r),e.push(n.i/r),e.push(o.i/r),M(n),M(n.next),n=t=o),n=n.next}while(n!==t);return a(n)}function u(t,e,r,n,i,s){var l=t;do{for(var c=l.next.next;c!==l.prev;){if(l.i!==c.i&&v(l,c)){var u=k(l,c);return l=a(l,l.next),u=a(u,u.next),o(l,e,r,n,i,s),void o(u,e,r,n,i,s)}c=c.next}l=l.next}while(l!==t)}function f(t,e){return t.x-e.x}function h(t,e){if(e=function(t,e){var r,n=e,i=t.x,a=t.y,o=-1/0;do{if(a<=n.y&&a>=n.next.y&&n.next.y!==n.y){var s=n.x+(a-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(s<=i&&s>o){if(o=s,s===i){if(a===n.y)return n;if(a===n.next.y)return n.next}r=n.x=n.x&&n.x>=u&&i!==n.x&&m(ar.x||n.x===r.x&&p(r,n)))&&(r=n,h=l)),n=n.next}while(n!==c);return r}(t,e)){var r=k(e,t);a(e,e.next),a(r,r.next)}}function p(t,e){return y(t.prev,t,e.prev)<0&&y(e.next,t,t.next)<0}function d(t,e,r,n,i){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-r)*i)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-n)*i)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function g(t){var e=t,r=t;do{(e.x=0&&(t-o)*(n-s)-(r-o)*(e-s)>=0&&(r-o)*(a-s)-(i-o)*(n-s)>=0}function v(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){var r=t;do{if(r.i!==t.i&&r.next.i!==t.i&&r.i!==e.i&&r.next.i!==e.i&&b(r,r.next,t,e))return!0;r=r.next}while(r!==t);return!1}(t,e)&&(T(t,e)&&T(e,t)&&function(t,e){var r=t,n=!1,i=(t.x+e.x)/2,a=(t.y+e.y)/2;do{r.y>a!=r.next.y>a&&r.next.y!==r.y&&i<(r.next.x-r.x)*(a-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next}while(r!==t);return n}(t,e)&&(y(t.prev,t,e.prev)||y(t,e.prev,e))||x(t,e)&&y(t.prev,t,t.next)>0&&y(e.prev,e,e.next)>0)}function y(t,e,r){return(e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y)}function x(t,e){return t.x===e.x&&t.y===e.y}function b(t,e,r,n){var i=w(y(t,e,r)),a=w(y(t,e,n)),o=w(y(r,n,t)),s=w(y(r,n,e));return i!==a&&o!==s||(!(0!==i||!_(t,r,e))||(!(0!==a||!_(t,n,e))||(!(0!==o||!_(r,t,n))||!(0!==s||!_(r,e,n)))))}function _(t,e,r){return e.x<=Math.max(t.x,r.x)&&e.x>=Math.min(t.x,r.x)&&e.y<=Math.max(t.y,r.y)&&e.y>=Math.min(t.y,r.y)}function w(t){return t>0?1:t<0?-1:0}function T(t,e){return y(t.prev,t,t.next)<0?y(t,e,t.next)>=0&&y(t,t.prev,e)>=0:y(t,e,t.prev)<0||y(t,t.next,e)<0}function k(t,e){var r=new S(t.i,t.x,t.y),n=new S(e.i,e.x,e.y),i=t.next,a=e.prev;return t.next=e,e.prev=t,r.next=i,i.prev=r,n.next=r,r.prev=n,a.next=n,n.prev=a,n}function A(t,e,r,n){var i=new S(t,e,r);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function M(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function S(t,e,r){this.i=t,this.x=e,this.y=r,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function E(t,e,r,n){for(var i=0,a=e,o=r-n;a0&&(n+=t[i-1].length,r.holes.push(n))}return r}},{}],130:[function(t,e,r){var n=t(\"strongly-connected-components\");e.exports=function(t,e){var r,i=[],a=[],o=[],s={},l=[];function c(t){var e,n,i=!1;for(a.push(t),o[t]=!0,e=0;e=e}))}(e);for(var r,i=n(t).components.filter((function(t){return t.length>1})),a=1/0,o=0;o=55296&&y<=56319&&(w+=t[++r]),w=T?h.call(T,k,w,g):w,e?(p.value=w,d(m,g,p)):m[g]=w,++g;v=g}if(void 0===v)for(v=o(t.length),e&&(m=new e(v)),r=0;r0?1:-1}},{}],141:[function(t,e,r){\"use strict\";var n=t(\"../math/sign\"),i=Math.abs,a=Math.floor;e.exports=function(t){return isNaN(t)?0:0!==(t=Number(t))&&isFinite(t)?n(t)*a(i(t)):t}},{\"../math/sign\":138}],142:[function(t,e,r){\"use strict\";var n=t(\"./to-integer\"),i=Math.max;e.exports=function(t){return i(0,n(t))}},{\"./to-integer\":141}],143:[function(t,e,r){\"use strict\";var n=t(\"./valid-callable\"),i=t(\"./valid-value\"),a=Function.prototype.bind,o=Function.prototype.call,s=Object.keys,l=Object.prototype.propertyIsEnumerable;e.exports=function(t,e){return function(r,c){var u,f=arguments[2],h=arguments[3];return r=Object(i(r)),n(c),u=s(r),h&&u.sort(\"function\"==typeof h?a.call(h,r):void 0),\"function\"!=typeof t&&(t=u[t]),o.call(t,u,(function(t,n){return l.call(r,t)?o.call(c,f,r[t],t,r,n):e}))}}},{\"./valid-callable\":160,\"./valid-value\":162}],144:[function(t,e,r){\"use strict\";e.exports=t(\"./is-implemented\")()?Object.assign:t(\"./shim\")},{\"./is-implemented\":145,\"./shim\":146}],145:[function(t,e,r){\"use strict\";e.exports=function(){var t,e=Object.assign;return\"function\"==typeof e&&(e(t={foo:\"raz\"},{bar:\"dwa\"},{trzy:\"trzy\"}),t.foo+t.bar+t.trzy===\"razdwatrzy\")}},{}],146:[function(t,e,r){\"use strict\";var n=t(\"../keys\"),i=t(\"../valid-value\"),a=Math.max;e.exports=function(t,e){var r,o,s,l=a(arguments.length,2);for(t=Object(i(t)),s=function(n){try{t[n]=e[n]}catch(t){r||(r=t)}},o=1;o-1}},{}],166:[function(t,e,r){\"use strict\";var n=Object.prototype.toString,i=n.call(\"\");e.exports=function(t){return\"string\"==typeof t||t&&\"object\"==typeof t&&(t instanceof String||n.call(t)===i)||!1}},{}],167:[function(t,e,r){\"use strict\";var n=Object.create(null),i=Math.random;e.exports=function(){var t;do{t=i().toString(36).slice(2)}while(n[t]);return t}},{}],168:[function(t,e,r){\"use strict\";var n,i=t(\"es5-ext/object/set-prototype-of\"),a=t(\"es5-ext/string/#/contains\"),o=t(\"d\"),s=t(\"es6-symbol\"),l=t(\"./\"),c=Object.defineProperty;n=e.exports=function(t,e){if(!(this instanceof n))throw new TypeError(\"Constructor requires 'new'\");l.call(this,t),e=e?a.call(e,\"key+value\")?\"key+value\":a.call(e,\"key\")?\"key\":\"value\":\"value\",c(this,\"__kind__\",o(\"\",e))},i&&i(n,l),delete n.prototype.constructor,n.prototype=Object.create(l.prototype,{_resolve:o((function(t){return\"value\"===this.__kind__?this.__list__[t]:\"key+value\"===this.__kind__?[t,this.__list__[t]]:t}))}),c(n.prototype,s.toStringTag,o(\"c\",\"Array Iterator\"))},{\"./\":171,d:106,\"es5-ext/object/set-prototype-of\":157,\"es5-ext/string/#/contains\":163,\"es6-symbol\":175}],169:[function(t,e,r){\"use strict\";var n=t(\"es5-ext/function/is-arguments\"),i=t(\"es5-ext/object/valid-callable\"),a=t(\"es5-ext/string/is-string\"),o=t(\"./get\"),s=Array.isArray,l=Function.prototype.call,c=Array.prototype.some;e.exports=function(t,e){var r,u,f,h,p,d,g,m,v=arguments[2];if(s(t)||n(t)?r=\"array\":a(t)?r=\"string\":t=o(t),i(e),f=function(){h=!0},\"array\"!==r)if(\"string\"!==r)for(u=t.next();!u.done;){if(l.call(e,v,u.value,f),h)return;u=t.next()}else for(d=t.length,p=0;p=55296&&m<=56319&&(g+=t[++p]),l.call(e,v,g,f),!h);++p);else c.call(t,(function(t){return l.call(e,v,t,f),h}))}},{\"./get\":170,\"es5-ext/function/is-arguments\":135,\"es5-ext/object/valid-callable\":160,\"es5-ext/string/is-string\":166}],170:[function(t,e,r){\"use strict\";var n=t(\"es5-ext/function/is-arguments\"),i=t(\"es5-ext/string/is-string\"),a=t(\"./array\"),o=t(\"./string\"),s=t(\"./valid-iterable\"),l=t(\"es6-symbol\").iterator;e.exports=function(t){return\"function\"==typeof s(t)[l]?t[l]():n(t)?new a(t):i(t)?new o(t):new a(t)}},{\"./array\":168,\"./string\":173,\"./valid-iterable\":174,\"es5-ext/function/is-arguments\":135,\"es5-ext/string/is-string\":166,\"es6-symbol\":175}],171:[function(t,e,r){\"use strict\";var n,i=t(\"es5-ext/array/#/clear\"),a=t(\"es5-ext/object/assign\"),o=t(\"es5-ext/object/valid-callable\"),s=t(\"es5-ext/object/valid-value\"),l=t(\"d\"),c=t(\"d/auto-bind\"),u=t(\"es6-symbol\"),f=Object.defineProperty,h=Object.defineProperties;e.exports=n=function(t,e){if(!(this instanceof n))throw new TypeError(\"Constructor requires 'new'\");h(this,{__list__:l(\"w\",s(t)),__context__:l(\"w\",e),__nextIndex__:l(\"w\",0)}),e&&(o(e.on),e.on(\"_add\",this._onAdd),e.on(\"_delete\",this._onDelete),e.on(\"_clear\",this._onClear))},delete n.prototype.constructor,h(n.prototype,a({_next:l((function(){var t;if(this.__list__)return this.__redo__&&void 0!==(t=this.__redo__.shift())?t:this.__nextIndex__=this.__nextIndex__||(++this.__nextIndex__,this.__redo__?(this.__redo__.forEach((function(e,r){e>=t&&(this.__redo__[r]=++e)}),this),this.__redo__.push(t)):f(this,\"__redo__\",l(\"c\",[t])))})),_onDelete:l((function(t){var e;t>=this.__nextIndex__||(--this.__nextIndex__,this.__redo__&&(-1!==(e=this.__redo__.indexOf(t))&&this.__redo__.splice(e,1),this.__redo__.forEach((function(e,r){e>t&&(this.__redo__[r]=--e)}),this)))})),_onClear:l((function(){this.__redo__&&i.call(this.__redo__),this.__nextIndex__=0}))}))),f(n.prototype,u.iterator,l((function(){return this})))},{d:106,\"d/auto-bind\":105,\"es5-ext/array/#/clear\":131,\"es5-ext/object/assign\":144,\"es5-ext/object/valid-callable\":160,\"es5-ext/object/valid-value\":162,\"es6-symbol\":175}],172:[function(t,e,r){\"use strict\";var n=t(\"es5-ext/function/is-arguments\"),i=t(\"es5-ext/object/is-value\"),a=t(\"es5-ext/string/is-string\"),o=t(\"es6-symbol\").iterator,s=Array.isArray;e.exports=function(t){return!!i(t)&&(!!s(t)||(!!a(t)||(!!n(t)||\"function\"==typeof t[o])))}},{\"es5-ext/function/is-arguments\":135,\"es5-ext/object/is-value\":151,\"es5-ext/string/is-string\":166,\"es6-symbol\":175}],173:[function(t,e,r){\"use strict\";var n,i=t(\"es5-ext/object/set-prototype-of\"),a=t(\"d\"),o=t(\"es6-symbol\"),s=t(\"./\"),l=Object.defineProperty;n=e.exports=function(t){if(!(this instanceof n))throw new TypeError(\"Constructor requires 'new'\");t=String(t),s.call(this,t),l(this,\"__length__\",a(\"\",t.length))},i&&i(n,s),delete n.prototype.constructor,n.prototype=Object.create(s.prototype,{_next:a((function(){if(this.__list__)return this.__nextIndex__=55296&&e<=56319?r+this.__list__[this.__nextIndex__++]:r}))}),l(n.prototype,o.toStringTag,a(\"c\",\"String Iterator\"))},{\"./\":171,d:106,\"es5-ext/object/set-prototype-of\":157,\"es6-symbol\":175}],174:[function(t,e,r){\"use strict\";var n=t(\"./is-iterable\");e.exports=function(t){if(!n(t))throw new TypeError(t+\" is not iterable\");return t}},{\"./is-iterable\":172}],175:[function(t,e,r){\"use strict\";e.exports=t(\"./is-implemented\")()?t(\"ext/global-this\").Symbol:t(\"./polyfill\")},{\"./is-implemented\":176,\"./polyfill\":181,\"ext/global-this\":188}],176:[function(t,e,r){\"use strict\";var n=t(\"ext/global-this\"),i={object:!0,symbol:!0};e.exports=function(){var t,e=n.Symbol;if(\"function\"!=typeof e)return!1;t=e(\"test symbol\");try{String(t)}catch(t){return!1}return!!i[typeof e.iterator]&&(!!i[typeof e.toPrimitive]&&!!i[typeof e.toStringTag])}},{\"ext/global-this\":188}],177:[function(t,e,r){\"use strict\";e.exports=function(t){return!!t&&(\"symbol\"==typeof t||!!t.constructor&&(\"Symbol\"===t.constructor.name&&\"Symbol\"===t[t.constructor.toStringTag]))}},{}],178:[function(t,e,r){\"use strict\";var n=t(\"d\"),i=Object.create,a=Object.defineProperty,o=Object.prototype,s=i(null);e.exports=function(t){for(var e,r,i=0;s[t+(i||\"\")];)++i;return s[t+=i||\"\"]=!0,a(o,e=\"@@\"+t,n.gs(null,(function(t){r||(r=!0,a(this,e,n(t)),r=!1)}))),e}},{d:106}],179:[function(t,e,r){\"use strict\";var n=t(\"d\"),i=t(\"ext/global-this\").Symbol;e.exports=function(t){return Object.defineProperties(t,{hasInstance:n(\"\",i&&i.hasInstance||t(\"hasInstance\")),isConcatSpreadable:n(\"\",i&&i.isConcatSpreadable||t(\"isConcatSpreadable\")),iterator:n(\"\",i&&i.iterator||t(\"iterator\")),match:n(\"\",i&&i.match||t(\"match\")),replace:n(\"\",i&&i.replace||t(\"replace\")),search:n(\"\",i&&i.search||t(\"search\")),species:n(\"\",i&&i.species||t(\"species\")),split:n(\"\",i&&i.split||t(\"split\")),toPrimitive:n(\"\",i&&i.toPrimitive||t(\"toPrimitive\")),toStringTag:n(\"\",i&&i.toStringTag||t(\"toStringTag\")),unscopables:n(\"\",i&&i.unscopables||t(\"unscopables\"))})}},{d:106,\"ext/global-this\":188}],180:[function(t,e,r){\"use strict\";var n=t(\"d\"),i=t(\"../../../validate-symbol\"),a=Object.create(null);e.exports=function(t){return Object.defineProperties(t,{for:n((function(e){return a[e]?a[e]:a[e]=t(String(e))})),keyFor:n((function(t){var e;for(e in i(t),a)if(a[e]===t)return e}))})}},{\"../../../validate-symbol\":182,d:106}],181:[function(t,e,r){\"use strict\";var n,i,a,o=t(\"d\"),s=t(\"./validate-symbol\"),l=t(\"ext/global-this\").Symbol,c=t(\"./lib/private/generate-name\"),u=t(\"./lib/private/setup/standard-symbols\"),f=t(\"./lib/private/setup/symbol-registry\"),h=Object.create,p=Object.defineProperties,d=Object.defineProperty;if(\"function\"==typeof l)try{String(l()),a=!0}catch(t){}else l=null;i=function(t){if(this instanceof i)throw new TypeError(\"Symbol is not a constructor\");return n(t)},e.exports=n=function t(e){var r;if(this instanceof t)throw new TypeError(\"Symbol is not a constructor\");return a?l(e):(r=h(i.prototype),e=void 0===e?\"\":String(e),p(r,{__description__:o(\"\",e),__name__:o(\"\",c(e))}))},u(n),f(n),p(i.prototype,{constructor:o(n),toString:o(\"\",(function(){return this.__name__}))}),p(n.prototype,{toString:o((function(){return\"Symbol (\"+s(this).__description__+\")\"})),valueOf:o((function(){return s(this)}))}),d(n.prototype,n.toPrimitive,o(\"\",(function(){var t=s(this);return\"symbol\"==typeof t?t:t.toString()}))),d(n.prototype,n.toStringTag,o(\"c\",\"Symbol\")),d(i.prototype,n.toStringTag,o(\"c\",n.prototype[n.toStringTag])),d(i.prototype,n.toPrimitive,o(\"c\",n.prototype[n.toPrimitive]))},{\"./lib/private/generate-name\":178,\"./lib/private/setup/standard-symbols\":179,\"./lib/private/setup/symbol-registry\":180,\"./validate-symbol\":182,d:106,\"ext/global-this\":188}],182:[function(t,e,r){\"use strict\";var n=t(\"./is-symbol\");e.exports=function(t){if(!n(t))throw new TypeError(t+\" is not a symbol\");return t}},{\"./is-symbol\":177}],183:[function(t,e,r){\"use strict\";e.exports=t(\"./is-implemented\")()?WeakMap:t(\"./polyfill\")},{\"./is-implemented\":184,\"./polyfill\":186}],184:[function(t,e,r){\"use strict\";e.exports=function(){var t,e;if(\"function\"!=typeof WeakMap)return!1;try{t=new WeakMap([[e={},\"one\"],[{},\"two\"],[{},\"three\"]])}catch(t){return!1}return\"[object WeakMap]\"===String(t)&&(\"function\"==typeof t.set&&(t.set({},1)===t&&(\"function\"==typeof t.delete&&(\"function\"==typeof t.has&&\"one\"===t.get(e)))))}},{}],185:[function(t,e,r){\"use strict\";e.exports=\"function\"==typeof WeakMap&&\"[object WeakMap]\"===Object.prototype.toString.call(new WeakMap)},{}],186:[function(t,e,r){\"use strict\";var n,i=t(\"es5-ext/object/is-value\"),a=t(\"es5-ext/object/set-prototype-of\"),o=t(\"es5-ext/object/valid-object\"),s=t(\"es5-ext/object/valid-value\"),l=t(\"es5-ext/string/random-uniq\"),c=t(\"d\"),u=t(\"es6-iterator/get\"),f=t(\"es6-iterator/for-of\"),h=t(\"es6-symbol\").toStringTag,p=t(\"./is-native-implemented\"),d=Array.isArray,g=Object.defineProperty,m=Object.prototype.hasOwnProperty,v=Object.getPrototypeOf;e.exports=n=function(){var t,e=arguments[0];if(!(this instanceof n))throw new TypeError(\"Constructor requires 'new'\");return t=p&&a&&WeakMap!==n?a(new WeakMap,v(this)):this,i(e)&&(d(e)||(e=u(e))),g(t,\"__weakMapData__\",c(\"c\",\"$weakMap$\"+l())),e?(f(e,(function(e){s(e),t.set(e[0],e[1])})),t):t},p&&(a&&a(n,WeakMap),n.prototype=Object.create(WeakMap.prototype,{constructor:c(n)})),Object.defineProperties(n.prototype,{delete:c((function(t){return!!m.call(o(t),this.__weakMapData__)&&(delete t[this.__weakMapData__],!0)})),get:c((function(t){if(m.call(o(t),this.__weakMapData__))return t[this.__weakMapData__]})),has:c((function(t){return m.call(o(t),this.__weakMapData__)})),set:c((function(t,e){return g(o(t),this.__weakMapData__,c(\"c\",e)),this})),toString:c((function(){return\"[object WeakMap]\"}))}),g(n.prototype,h,c(\"c\",\"WeakMap\"))},{\"./is-native-implemented\":185,d:106,\"es5-ext/object/is-value\":151,\"es5-ext/object/set-prototype-of\":157,\"es5-ext/object/valid-object\":161,\"es5-ext/object/valid-value\":162,\"es5-ext/string/random-uniq\":167,\"es6-iterator/for-of\":169,\"es6-iterator/get\":170,\"es6-symbol\":175}],187:[function(t,e,r){var n=function(){if(\"object\"==typeof self&&self)return self;if(\"object\"==typeof window&&window)return window;throw new Error(\"Unable to resolve global `this`\")};e.exports=function(){if(this)return this;try{Object.defineProperty(Object.prototype,\"__global__\",{get:function(){return this},configurable:!0})}catch(t){return n()}try{return __global__||n()}finally{delete Object.prototype.__global__}}()},{}],188:[function(t,e,r){\"use strict\";e.exports=t(\"./is-implemented\")()?globalThis:t(\"./implementation\")},{\"./implementation\":187,\"./is-implemented\":189}],189:[function(t,e,r){\"use strict\";e.exports=function(){return\"object\"==typeof globalThis&&(!!globalThis&&globalThis.Array===Array)}},{}],190:[function(t,e,r){\"use strict\";var n=t(\"is-string-blank\");e.exports=function(t){var e=typeof t;if(\"string\"===e){var r=t;if(0===(t=+t)&&n(r))return!1}else if(\"number\"!==e)return!1;return t-t<1}},{\"is-string-blank\":237}],191:[function(t,e,r){var n=t(\"dtype\");e.exports=function(t,e,r){if(!t)throw new TypeError(\"must specify data as first parameter\");if(r=0|+(r||0),Array.isArray(t)&&t[0]&&\"number\"==typeof t[0][0]){var i,a,o,s,l=t[0].length,c=t.length*l;e&&\"string\"!=typeof e||(e=new(n(e||\"float32\"))(c+r));var u=e.length-r;if(c!==u)throw new Error(\"source length \"+c+\" (\"+l+\"x\"+t.length+\") does not match destination length \"+u);for(i=0,o=r;ie[0]-o[0]/2&&(h=o[0]/2,p+=o[1]);return r}},{\"css-font/stringify\":102}],193:[function(t,e,r){\"use strict\";function n(t,e){e||(e={}),(\"string\"==typeof t||Array.isArray(t))&&(e.family=t);var r=Array.isArray(e.family)?e.family.join(\", \"):e.family;if(!r)throw Error(\"`family` must be defined\");var s=e.size||e.fontSize||e.em||48,l=e.weight||e.fontWeight||\"\",c=(t=[e.style||e.fontStyle||\"\",l,s].join(\" \")+\"px \"+r,e.origin||\"top\");if(n.cache[r]&&s<=n.cache[r].em)return i(n.cache[r],c);var u=e.canvas||n.canvas,f=u.getContext(\"2d\"),h={upper:void 0!==e.upper?e.upper:\"H\",lower:void 0!==e.lower?e.lower:\"x\",descent:void 0!==e.descent?e.descent:\"p\",ascent:void 0!==e.ascent?e.ascent:\"h\",tittle:void 0!==e.tittle?e.tittle:\"i\",overshoot:void 0!==e.overshoot?e.overshoot:\"O\"},p=Math.ceil(1.5*s);u.height=p,u.width=.5*p,f.font=t;var d={top:0};f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillStyle=\"black\",f.fillText(\"H\",0,0);var g=a(f.getImageData(0,0,p,p));f.clearRect(0,0,p,p),f.textBaseline=\"bottom\",f.fillText(\"H\",0,p);var m=a(f.getImageData(0,0,p,p));d.lineHeight=d.bottom=p-m+g,f.clearRect(0,0,p,p),f.textBaseline=\"alphabetic\",f.fillText(\"H\",0,p);var v=p-a(f.getImageData(0,0,p,p))-1+g;d.baseline=d.alphabetic=v,f.clearRect(0,0,p,p),f.textBaseline=\"middle\",f.fillText(\"H\",0,.5*p);var y=a(f.getImageData(0,0,p,p));d.median=d.middle=p-y-1+g-.5*p,f.clearRect(0,0,p,p),f.textBaseline=\"hanging\",f.fillText(\"H\",0,.5*p);var x=a(f.getImageData(0,0,p,p));d.hanging=p-x-1+g-.5*p,f.clearRect(0,0,p,p),f.textBaseline=\"ideographic\",f.fillText(\"H\",0,p);var b=a(f.getImageData(0,0,p,p));if(d.ideographic=p-b-1+g,h.upper&&(f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.upper,0,0),d.upper=a(f.getImageData(0,0,p,p)),d.capHeight=d.baseline-d.upper),h.lower&&(f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.lower,0,0),d.lower=a(f.getImageData(0,0,p,p)),d.xHeight=d.baseline-d.lower),h.tittle&&(f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.tittle,0,0),d.tittle=a(f.getImageData(0,0,p,p))),h.ascent&&(f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.ascent,0,0),d.ascent=a(f.getImageData(0,0,p,p))),h.descent&&(f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.descent,0,0),d.descent=o(f.getImageData(0,0,p,p))),h.overshoot){f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.overshoot,0,0);var _=o(f.getImageData(0,0,p,p));d.overshoot=_-v}for(var w in d)d[w]/=s;return d.em=s,n.cache[r]=d,i(d,c)}function i(t,e){var r={};for(var n in\"string\"==typeof e&&(e=t[e]),t)\"em\"!==n&&(r[n]=t[n]-e);return r}function a(t){for(var e=t.height,r=t.data,n=3;n0;n-=4)if(0!==r[n])return Math.floor(.25*(n-3)/e)}e.exports=n,n.canvas=document.createElement(\"canvas\"),n.cache={}},{}],194:[function(t,e,r){e.exports=function(t,e){if(\"string\"!=typeof t)throw new TypeError(\"must specify type string\");if(e=e||{},\"undefined\"==typeof document&&!e.canvas)return null;var r=e.canvas||document.createElement(\"canvas\");\"number\"==typeof e.width&&(r.width=e.width);\"number\"==typeof e.height&&(r.height=e.height);var n,i=e;try{var a=[t];0===t.indexOf(\"webgl\")&&a.push(\"experimental-\"+t);for(var o=0;o halfCharStep + halfCharWidth ||\\n\\t\\t\\t\\t\\tfloor(uv.x) < halfCharStep - halfCharWidth) return;\\n\\n\\t\\t\\t\\tuv += charId * charStep;\\n\\t\\t\\t\\tuv = uv / atlasSize;\\n\\n\\t\\t\\t\\tvec4 color = fontColor;\\n\\t\\t\\t\\tvec4 mask = texture2D(atlas, uv);\\n\\n\\t\\t\\t\\tfloat maskY = lightness(mask);\\n\\t\\t\\t\\t// float colorY = lightness(color);\\n\\t\\t\\t\\tcolor.a *= maskY;\\n\\t\\t\\t\\tcolor.a *= opacity;\\n\\n\\t\\t\\t\\t// color.a += .1;\\n\\n\\t\\t\\t\\t// antialiasing, see yiq color space y-channel formula\\n\\t\\t\\t\\t// color.rgb += (1. - color.rgb) * (1. - mask.rgb);\\n\\n\\t\\t\\t\\tgl_FragColor = color;\\n\\t\\t\\t}\"});return{regl:t,draw:e,atlas:{}}},T.prototype.update=function(t){var e=this;if(\"string\"==typeof t)t={text:t};else if(!t)return;null!=(t=i(t,{position:\"position positions coord coords coordinates\",font:\"font fontFace fontface typeface cssFont css-font family fontFamily\",fontSize:\"fontSize fontsize size font-size\",text:\"text texts chars characters value values symbols\",align:\"align alignment textAlign textbaseline\",baseline:\"baseline textBaseline textbaseline\",direction:\"dir direction textDirection\",color:\"color colour fill fill-color fillColor textColor textcolor\",kerning:\"kerning kern\",range:\"range dataBox\",viewport:\"vp viewport viewBox viewbox viewPort\",opacity:\"opacity alpha transparency visible visibility opaque\",offset:\"offset positionOffset padding shift indent indentation\"},!0)).opacity&&(Array.isArray(t.opacity)?this.opacity=t.opacity.map((function(t){return parseFloat(t)})):this.opacity=parseFloat(t.opacity)),null!=t.viewport&&(this.viewport=f(t.viewport),this.viewportArray=[this.viewport.x,this.viewport.y,this.viewport.width,this.viewport.height]),null==this.viewport&&(this.viewport={x:0,y:0,width:this.gl.drawingBufferWidth,height:this.gl.drawingBufferHeight},this.viewportArray=[this.viewport.x,this.viewport.y,this.viewport.width,this.viewport.height]),null!=t.kerning&&(this.kerning=t.kerning),null!=t.offset&&(\"number\"==typeof t.offset&&(t.offset=[t.offset,0]),this.positionOffset=y(t.offset)),t.direction&&(this.direction=t.direction),t.range&&(this.range=t.range,this.scale=[1/(t.range[2]-t.range[0]),1/(t.range[3]-t.range[1])],this.translate=[-t.range[0],-t.range[1]]),t.scale&&(this.scale=t.scale),t.translate&&(this.translate=t.translate),this.scale||(this.scale=[1/this.viewport.width,1/this.viewport.height]),this.translate||(this.translate=[0,0]),this.font.length||t.font||(t.font=T.baseFontSize+\"px sans-serif\");var r,a=!1,o=!1;if(t.font&&(Array.isArray(t.font)?t.font:[t.font]).forEach((function(t,r){if(\"string\"==typeof t)try{t=n.parse(t)}catch(e){t=n.parse(T.baseFontSize+\"px \"+t)}else t=n.parse(n.stringify(t));var i=n.stringify({size:T.baseFontSize,family:t.family,stretch:_?t.stretch:void 0,variant:t.variant,weight:t.weight,style:t.style}),s=p(t.size),l=Math.round(s[0]*d(s[1]));if(l!==e.fontSize[r]&&(o=!0,e.fontSize[r]=l),!(e.font[r]&&i==e.font[r].baseString||(a=!0,e.font[r]=T.fonts[i],e.font[r]))){var c=t.family.join(\", \"),u=[t.style];t.style!=t.variant&&u.push(t.variant),t.variant!=t.weight&&u.push(t.weight),_&&t.weight!=t.stretch&&u.push(t.stretch),e.font[r]={baseString:i,family:c,weight:t.weight,stretch:t.stretch,style:t.style,variant:t.variant,width:{},kerning:{},metrics:v(c,{origin:\"top\",fontSize:T.baseFontSize,fontStyle:u.join(\" \")})},T.fonts[i]=e.font[r]}})),(a||o)&&this.font.forEach((function(r,i){var a=n.stringify({size:e.fontSize[i],family:r.family,stretch:_?r.stretch:void 0,variant:r.variant,weight:r.weight,style:r.style});if(e.fontAtlas[i]=e.shader.atlas[a],!e.fontAtlas[i]){var o=r.metrics;e.shader.atlas[a]=e.fontAtlas[i]={fontString:a,step:2*Math.ceil(e.fontSize[i]*o.bottom*.5),em:e.fontSize[i],cols:0,rows:0,height:0,width:0,chars:[],ids:{},texture:e.regl.texture()}}null==t.text&&(t.text=e.text)})),\"string\"==typeof t.text&&t.position&&t.position.length>2){for(var s=Array(.5*t.position.length),h=0;h2){for(var w=!t.position[0].length,k=u.mallocFloat(2*this.count),A=0,M=0;A1?e.align[r]:e.align[0]:e.align;if(\"number\"==typeof n)return n;switch(n){case\"right\":case\"end\":return-t;case\"center\":case\"centre\":case\"middle\":return.5*-t}return 0}))),null==this.baseline&&null==t.baseline&&(t.baseline=0),null!=t.baseline&&(this.baseline=t.baseline,Array.isArray(this.baseline)||(this.baseline=[this.baseline]),this.baselineOffset=this.baseline.map((function(t,r){var n=(e.font[r]||e.font[0]).metrics,i=0;return i+=.5*n.bottom,i+=\"number\"==typeof t?t-n.baseline:-n[t],i*=-1}))),null!=t.color)if(t.color||(t.color=\"transparent\"),\"string\"!=typeof t.color&&isNaN(t.color)){var q;if(\"number\"==typeof t.color[0]&&t.color.length>this.counts.length){var G=t.color.length;q=u.mallocUint8(G);for(var Y=(t.color.subarray||t.color.slice).bind(t.color),W=0;W4||this.baselineOffset.length>1||this.align&&this.align.length>1||this.fontAtlas.length>1||this.positionOffset.length>2){var J=Math.max(.5*this.position.length||0,.25*this.color.length||0,this.baselineOffset.length||0,this.alignOffset.length||0,this.font.length||0,this.opacity.length||0,.5*this.positionOffset.length||0);this.batch=Array(J);for(var K=0;K1?this.counts[K]:this.counts[0],offset:this.textOffsets.length>1?this.textOffsets[K]:this.textOffsets[0],color:this.color?this.color.length<=4?this.color:this.color.subarray(4*K,4*K+4):[0,0,0,255],opacity:Array.isArray(this.opacity)?this.opacity[K]:this.opacity,baseline:null!=this.baselineOffset[K]?this.baselineOffset[K]:this.baselineOffset[0],align:this.align?null!=this.alignOffset[K]?this.alignOffset[K]:this.alignOffset[0]:0,atlas:this.fontAtlas[K]||this.fontAtlas[0],positionOffset:this.positionOffset.length>2?this.positionOffset.subarray(2*K,2*K+2):this.positionOffset}}else this.count?this.batch=[{count:this.count,offset:0,color:this.color||[0,0,0,255],opacity:Array.isArray(this.opacity)?this.opacity[0]:this.opacity,baseline:this.baselineOffset[0],align:this.alignOffset?this.alignOffset[0]:0,atlas:this.fontAtlas[0],positionOffset:this.positionOffset}]:this.batch=[]},T.prototype.destroy=function(){},T.prototype.kerning=!0,T.prototype.position={constant:new Float32Array(2)},T.prototype.translate=null,T.prototype.scale=null,T.prototype.font=null,T.prototype.text=\"\",T.prototype.positionOffset=[0,0],T.prototype.opacity=1,T.prototype.color=new Uint8Array([0,0,0,255]),T.prototype.alignOffset=[0,0],T.maxAtlasSize=1024,T.atlasCanvas=document.createElement(\"canvas\"),T.atlasContext=T.atlasCanvas.getContext(\"2d\",{alpha:!1}),T.baseFontSize=64,T.fonts={},e.exports=T},{\"bit-twiddle\":81,\"color-normalize\":89,\"css-font\":99,\"detect-kerning\":125,\"es6-weak-map\":183,\"flatten-vertex-data\":191,\"font-atlas\":192,\"font-measure\":193,\"gl-util/context\":226,\"is-plain-obj\":236,\"object-assign\":247,\"parse-rect\":249,\"parse-unit\":251,\"pick-by-alias\":253,regl:283,\"to-px\":314,\"typedarray-pool\":327}],226:[function(t,e,r){(function(r){(function(){\"use strict\";var n=t(\"pick-by-alias\");function i(t){if(t.container)if(t.container==document.body)document.body.style.width||(t.canvas.width=t.width||t.pixelRatio*r.innerWidth),document.body.style.height||(t.canvas.height=t.height||t.pixelRatio*r.innerHeight);else{var e=t.container.getBoundingClientRect();t.canvas.width=t.width||e.right-e.left,t.canvas.height=t.height||e.bottom-e.top}}function a(t){return\"function\"==typeof t.getContext&&\"width\"in t&&\"height\"in t}function o(){var t=document.createElement(\"canvas\");return t.style.position=\"absolute\",t.style.top=0,t.style.left=0,t}e.exports=function(t){var e;if(t?\"string\"==typeof t&&(t={container:t}):t={},a(t)?t={container:t}:t=\"string\"==typeof(e=t).nodeName&&\"function\"==typeof e.appendChild&&\"function\"==typeof e.getBoundingClientRect?{container:t}:function(t){return\"function\"==typeof t.drawArrays||\"function\"==typeof t.drawElements}(t)?{gl:t}:n(t,{container:\"container target element el canvas holder parent parentNode wrapper use ref root node\",gl:\"gl context webgl glContext\",attrs:\"attributes attrs contextAttributes\",pixelRatio:\"pixelRatio pxRatio px ratio pxratio pixelratio\",width:\"w width\",height:\"h height\"},!0),t.pixelRatio||(t.pixelRatio=r.pixelRatio||1),t.gl)return t.gl;if(t.canvas&&(t.container=t.canvas.parentNode),t.container){if(\"string\"==typeof t.container){var s=document.querySelector(t.container);if(!s)throw Error(\"Element \"+t.container+\" is not found\");t.container=s}a(t.container)?(t.canvas=t.container,t.container=t.canvas.parentNode):t.canvas||(t.canvas=o(),t.container.appendChild(t.canvas),i(t))}else if(!t.canvas){if(\"undefined\"==typeof document)throw Error(\"Not DOM environment. Use headless-gl.\");t.container=document.body||document.documentElement,t.canvas=o(),t.container.appendChild(t.canvas),i(t)}return t.gl||[\"webgl\",\"experimental-webgl\",\"webgl-experimental\"].some((function(e){try{t.gl=t.canvas.getContext(e,t.attrs)}catch(t){}return t.gl})),t.gl}}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"pick-by-alias\":253}],227:[function(t,e,r){e.exports=function(t){\"string\"==typeof t&&(t=[t]);for(var e=[].slice.call(arguments,1),r=[],n=0;n>1,u=-7,f=r?i-1:0,h=r?-1:1,p=t[e+f];for(f+=h,a=p&(1<<-u)-1,p>>=-u,u+=s;u>0;a=256*a+t[e+f],f+=h,u-=8);for(o=a&(1<<-u)-1,a>>=-u,u+=n;u>0;o=256*o+t[e+f],f+=h,u-=8);if(0===a)a=1-c;else{if(a===l)return o?NaN:1/0*(p?-1:1);o+=Math.pow(2,n),a-=c}return(p?-1:1)*o*Math.pow(2,a-n)},r.write=function(t,e,r,n,i,a){var o,s,l,c=8*a-i-1,u=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:a-1,d=n?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,o=u):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),(e+=o+f>=1?h/l:h*Math.pow(2,1-f))*l>=2&&(o++,l/=2),o+f>=u?(s=0,o=u):o+f>=1?(s=(e*l-1)*Math.pow(2,i),o+=f):(s=e*Math.pow(2,f-1)*Math.pow(2,i),o=0));i>=8;t[r+p]=255&s,p+=d,s/=256,i-=8);for(o=o<0;t[r+p]=255&o,p+=d,o/=256,c-=8);t[r+p-d]|=128*g}},{}],231:[function(t,e,r){\"function\"==typeof Object.create?e.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:e.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}},{}],232:[function(t,e,r){e.exports=!0},{}],233:[function(t,e,r){\"use strict\";e.exports=\"undefined\"!=typeof navigator&&(/MSIE/.test(navigator.userAgent)||/Trident\\//.test(navigator.appVersion))},{}],234:[function(t,e,r){\"use strict\";e.exports=a,e.exports.isMobile=a,e.exports.default=a;var n=/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series[46]0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i,i=/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series[46]0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino|android|ipad|playbook|silk/i;function a(t){t||(t={});var e=t.ua;if(e||\"undefined\"==typeof navigator||(e=navigator.userAgent),e&&e.headers&&\"string\"==typeof e.headers[\"user-agent\"]&&(e=e.headers[\"user-agent\"]),\"string\"!=typeof e)return!1;var r=t.tablet?i.test(e):n.test(e);return!r&&t.tablet&&t.featureDetect&&navigator&&navigator.maxTouchPoints>1&&-1!==e.indexOf(\"Macintosh\")&&-1!==e.indexOf(\"Safari\")&&(r=!0),r}},{}],235:[function(t,e,r){\"use strict\";e.exports=function(t){var e=typeof t;return null!==t&&(\"object\"===e||\"function\"===e)}},{}],236:[function(t,e,r){\"use strict\";var n=Object.prototype.toString;e.exports=function(t){var e;return\"[object Object]\"===n.call(t)&&(null===(e=Object.getPrototypeOf(t))||e===Object.getPrototypeOf({}))}},{}],237:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e,r=t.length,n=0;n13)&&32!==e&&133!==e&&160!==e&&5760!==e&&6158!==e&&(e<8192||e>8205)&&8232!==e&&8233!==e&&8239!==e&&8287!==e&&8288!==e&&12288!==e&&65279!==e)return!1;return!0}},{}],238:[function(t,e,r){\"use strict\";e.exports=function(t){return\"string\"==typeof t&&(t=t.trim(),!!(/^[mzlhvcsqta]\\s*[-+.0-9][^mlhvzcsqta]+/i.test(t)&&/[\\dz]$/i.test(t)&&t.length>4))}},{}],239:[function(t,e,r){!function(t,n){\"object\"==typeof r&&void 0!==e?e.exports=n():(t=t||self).mapboxgl=n()}(this,(function(){\"use strict\";var t,e,r;function n(n,i){if(t)if(e){var a=\"var sharedChunk = {}; (\"+t+\")(sharedChunk); (\"+e+\")(sharedChunk);\",o={};t(o),(r=i(o)).workerUrl=window.URL.createObjectURL(new Blob([a],{type:\"text/javascript\"}))}else e=i;else t=i}return n(0,(function(t){function e(t,e){return t(e={exports:{}},e.exports),e.exports}var r=n;function n(t,e,r,n){this.cx=3*t,this.bx=3*(r-t)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*e,this.by=3*(n-e)-this.cy,this.ay=1-this.cy-this.by,this.p1x=t,this.p1y=n,this.p2x=r,this.p2y=n}n.prototype.sampleCurveX=function(t){return((this.ax*t+this.bx)*t+this.cx)*t},n.prototype.sampleCurveY=function(t){return((this.ay*t+this.by)*t+this.cy)*t},n.prototype.sampleCurveDerivativeX=function(t){return(3*this.ax*t+2*this.bx)*t+this.cx},n.prototype.solveCurveX=function(t,e){var r,n,i,a,o;for(void 0===e&&(e=1e-6),i=t,o=0;o<8;o++){if(a=this.sampleCurveX(i)-t,Math.abs(a)(n=1))return n;for(;ra?r=i:n=i,i=.5*(n-r)+r}return i},n.prototype.solve=function(t,e){return this.sampleCurveY(this.solveCurveX(t,e))};var i=a;function a(t,e){this.x=t,this.y=e}function o(t,e,n,i){var a=new r(t,e,n,i);return function(t){return a.solve(t)}}a.prototype={clone:function(){return new a(this.x,this.y)},add:function(t){return this.clone()._add(t)},sub:function(t){return this.clone()._sub(t)},multByPoint:function(t){return this.clone()._multByPoint(t)},divByPoint:function(t){return this.clone()._divByPoint(t)},mult:function(t){return this.clone()._mult(t)},div:function(t){return this.clone()._div(t)},rotate:function(t){return this.clone()._rotate(t)},rotateAround:function(t,e){return this.clone()._rotateAround(t,e)},matMult:function(t){return this.clone()._matMult(t)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(t){return this.x===t.x&&this.y===t.y},dist:function(t){return Math.sqrt(this.distSqr(t))},distSqr:function(t){var e=t.x-this.x,r=t.y-this.y;return e*e+r*r},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(t){return Math.atan2(this.y-t.y,this.x-t.x)},angleWith:function(t){return this.angleWithSep(t.x,t.y)},angleWithSep:function(t,e){return Math.atan2(this.x*e-this.y*t,this.x*t+this.y*e)},_matMult:function(t){var e=t[0]*this.x+t[1]*this.y,r=t[2]*this.x+t[3]*this.y;return this.x=e,this.y=r,this},_add:function(t){return this.x+=t.x,this.y+=t.y,this},_sub:function(t){return this.x-=t.x,this.y-=t.y,this},_mult:function(t){return this.x*=t,this.y*=t,this},_div:function(t){return this.x/=t,this.y/=t,this},_multByPoint:function(t){return this.x*=t.x,this.y*=t.y,this},_divByPoint:function(t){return this.x/=t.x,this.y/=t.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var t=this.y;return this.y=this.x,this.x=-t,this},_rotate:function(t){var e=Math.cos(t),r=Math.sin(t),n=e*this.x-r*this.y,i=r*this.x+e*this.y;return this.x=n,this.y=i,this},_rotateAround:function(t,e){var r=Math.cos(t),n=Math.sin(t),i=e.x+r*(this.x-e.x)-n*(this.y-e.y),a=e.y+n*(this.x-e.x)+r*(this.y-e.y);return this.x=i,this.y=a,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},a.convert=function(t){return t instanceof a?t:Array.isArray(t)?new a(t[0],t[1]):t};var s=o(.25,.1,.25,1);function l(t,e,r){return Math.min(r,Math.max(e,t))}function c(t,e,r){var n=r-e,i=((t-e)%n+n)%n+e;return i===e?r:i}function u(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];for(var n=0,i=e;n>e/4).toString(16):([1e7]+-[1e3]+-4e3+-8e3+-1e11).replace(/[018]/g,t)}()}function d(t){return!!t&&/^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(t)}function g(t,e){t.forEach((function(t){e[t]&&(e[t]=e[t].bind(e))}))}function m(t,e){return-1!==t.indexOf(e,t.length-e.length)}function v(t,e,r){var n={};for(var i in t)n[i]=e.call(r||this,t[i],i,t);return n}function y(t,e,r){var n={};for(var i in t)e.call(r||this,t[i],i,t)&&(n[i]=t[i]);return n}function x(t){return Array.isArray(t)?t.map(x):\"object\"==typeof t&&t?v(t,x):t}var b={};function _(t){b[t]||(\"undefined\"!=typeof console&&console.warn(t),b[t]=!0)}function w(t,e,r){return(r.y-t.y)*(e.x-t.x)>(e.y-t.y)*(r.x-t.x)}function T(t){for(var e=0,r=0,n=t.length,i=n-1,a=void 0,o=void 0;r@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)(?:\\=(?:([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)|(?:\\\"((?:[^\"\\\\]|\\\\.)*)\\\")))?/g,(function(t,r,n,i){var a=n||i;return e[r]=!a||a.toLowerCase(),\"\"})),e[\"max-age\"]){var r=parseInt(e[\"max-age\"],10);isNaN(r)?delete e[\"max-age\"]:e[\"max-age\"]=r}return e}var M=null;function S(t){if(null==M){var e=t.navigator?t.navigator.userAgent:null;M=!!t.safari||!(!e||!(/\\b(iPad|iPhone|iPod)\\b/.test(e)||e.match(\"Safari\")&&!e.match(\"Chrome\")))}return M}function E(t){try{var e=self[t];return e.setItem(\"_mapbox_test_\",1),e.removeItem(\"_mapbox_test_\"),!0}catch(t){return!1}}var L,C,P,I,O=self.performance&&self.performance.now?self.performance.now.bind(self.performance):Date.now.bind(Date),z=self.requestAnimationFrame||self.mozRequestAnimationFrame||self.webkitRequestAnimationFrame||self.msRequestAnimationFrame,D=self.cancelAnimationFrame||self.mozCancelAnimationFrame||self.webkitCancelAnimationFrame||self.msCancelAnimationFrame,R={now:O,frame:function(t){var e=z(t);return{cancel:function(){return D(e)}}},getImageData:function(t,e){void 0===e&&(e=0);var r=self.document.createElement(\"canvas\"),n=r.getContext(\"2d\");if(!n)throw new Error(\"failed to create canvas 2d context\");return r.width=t.width,r.height=t.height,n.drawImage(t,0,0,t.width,t.height),n.getImageData(-e,-e,t.width+2*e,t.height+2*e)},resolveURL:function(t){return L||(L=self.document.createElement(\"a\")),L.href=t,L.href},hardwareConcurrency:self.navigator.hardwareConcurrency||4,get devicePixelRatio(){return self.devicePixelRatio},get prefersReducedMotion(){return!!self.matchMedia&&(null==C&&(C=self.matchMedia(\"(prefers-reduced-motion: reduce)\")),C.matches)}},F={API_URL:\"https://api.mapbox.com\",get EVENTS_URL(){return this.API_URL?0===this.API_URL.indexOf(\"https://api.mapbox.cn\")?\"https://events.mapbox.cn/events/v2\":0===this.API_URL.indexOf(\"https://api.mapbox.com\")?\"https://events.mapbox.com/events/v2\":null:null},FEEDBACK_URL:\"https://apps.mapbox.com/feedback\",REQUIRE_ACCESS_TOKEN:!0,ACCESS_TOKEN:null,MAX_PARALLEL_IMAGE_REQUESTS:16},B={supported:!1,testSupport:function(t){if(N||!I)return;j?U(t):P=t}},N=!1,j=!1;function U(t){var e=t.createTexture();t.bindTexture(t.TEXTURE_2D,e);try{if(t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,I),t.isContextLost())return;B.supported=!0}catch(t){}t.deleteTexture(e),N=!0}self.document&&((I=self.document.createElement(\"img\")).onload=function(){P&&U(P),P=null,j=!0},I.onerror=function(){N=!0,P=null},I.src=\"data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=\");var V=\"01\";var H=function(t,e){this._transformRequestFn=t,this._customAccessToken=e,this._createSkuToken()};function q(t){return 0===t.indexOf(\"mapbox:\")}H.prototype._createSkuToken=function(){var t=function(){for(var t=\"\",e=0;e<10;e++)t+=\"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"[Math.floor(62*Math.random())];return{token:[\"1\",V,t].join(\"\"),tokenExpiresAt:Date.now()+432e5}}();this._skuToken=t.token,this._skuTokenExpiresAt=t.tokenExpiresAt},H.prototype._isSkuTokenExpired=function(){return Date.now()>this._skuTokenExpiresAt},H.prototype.transformRequest=function(t,e){return this._transformRequestFn&&this._transformRequestFn(t,e)||{url:t}},H.prototype.normalizeStyleURL=function(t,e){if(!q(t))return t;var r=X(t);return r.path=\"/styles/v1\"+r.path,this._makeAPIURL(r,this._customAccessToken||e)},H.prototype.normalizeGlyphsURL=function(t,e){if(!q(t))return t;var r=X(t);return r.path=\"/fonts/v1\"+r.path,this._makeAPIURL(r,this._customAccessToken||e)},H.prototype.normalizeSourceURL=function(t,e){if(!q(t))return t;var r=X(t);return r.path=\"/v4/\"+r.authority+\".json\",r.params.push(\"secure\"),this._makeAPIURL(r,this._customAccessToken||e)},H.prototype.normalizeSpriteURL=function(t,e,r,n){var i=X(t);return q(t)?(i.path=\"/styles/v1\"+i.path+\"/sprite\"+e+r,this._makeAPIURL(i,this._customAccessToken||n)):(i.path+=\"\"+e+r,Z(i))},H.prototype.normalizeTileURL=function(t,e){if(this._isSkuTokenExpired()&&this._createSkuToken(),t&&!q(t))return t;var r=X(t),n=R.devicePixelRatio>=2||512===e?\"@2x\":\"\",i=B.supported?\".webp\":\"$1\";r.path=r.path.replace(/(\\.(png|jpg)\\d*)(?=$)/,\"\"+n+i),r.path=r.path.replace(/^.+\\/v4\\//,\"/\"),r.path=\"/v4\"+r.path;var a=this._customAccessToken||function(t){for(var e=0,r=t;e=1&&self.localStorage.setItem(e,JSON.stringify(this.eventData))}catch(t){_(\"Unable to write to LocalStorage\")}},K.prototype.processRequests=function(t){},K.prototype.postEvent=function(t,e,r,n){var i=this;if(F.EVENTS_URL){var a=X(F.EVENTS_URL);a.params.push(\"access_token=\"+(n||F.ACCESS_TOKEN||\"\"));var o={event:this.type,created:new Date(t).toISOString(),sdkIdentifier:\"mapbox-gl-js\",sdkVersion:\"1.10.1\",skuId:V,userId:this.anonId},s=e?u(o,e):o,l={url:Z(a),headers:{\"Content-Type\":\"text/plain\"},body:JSON.stringify([s])};this.pendingRequest=bt(l,(function(t){i.pendingRequest=null,r(t),i.saveEventData(),i.processRequests(n)}))}},K.prototype.queueRequest=function(t,e){this.queue.push(t),this.processRequests(e)};var Q,$,tt=function(t){function e(){t.call(this,\"map.load\"),this.success={},this.skuToken=\"\"}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.postMapLoadEvent=function(t,e,r,n){this.skuToken=r,(F.EVENTS_URL&&n||F.ACCESS_TOKEN&&Array.isArray(t)&&t.some((function(t){return q(t)||Y(t)})))&&this.queueRequest({id:e,timestamp:Date.now()},n)},e.prototype.processRequests=function(t){var e=this;if(!this.pendingRequest&&0!==this.queue.length){var r=this.queue.shift(),n=r.id,i=r.timestamp;n&&this.success[n]||(this.anonId||this.fetchEventData(),d(this.anonId)||(this.anonId=p()),this.postEvent(i,{skuToken:this.skuToken},(function(t){t||n&&(e.success[n]=!0)}),t))}},e}(K),et=new(function(t){function e(e){t.call(this,\"appUserTurnstile\"),this._customAccessToken=e}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.postTurnstileEvent=function(t,e){F.EVENTS_URL&&F.ACCESS_TOKEN&&Array.isArray(t)&&t.some((function(t){return q(t)||Y(t)}))&&this.queueRequest(Date.now(),e)},e.prototype.processRequests=function(t){var e=this;if(!this.pendingRequest&&0!==this.queue.length){this.anonId&&this.eventData.lastSuccess&&this.eventData.tokenU||this.fetchEventData();var r=J(F.ACCESS_TOKEN),n=r?r.u:F.ACCESS_TOKEN,i=n!==this.eventData.tokenU;d(this.anonId)||(this.anonId=p(),i=!0);var a=this.queue.shift();if(this.eventData.lastSuccess){var o=new Date(this.eventData.lastSuccess),s=new Date(a),l=(a-this.eventData.lastSuccess)/864e5;i=i||l>=1||l<-1||o.getDate()!==s.getDate()}else i=!0;if(!i)return this.processRequests();this.postEvent(a,{\"enabled.telemetry\":!1},(function(t){t||(e.eventData.lastSuccess=a,e.eventData.tokenU=n)}),t)}},e}(K)),rt=et.postTurnstileEvent.bind(et),nt=new tt,it=nt.postMapLoadEvent.bind(nt),at=500,ot=50;function st(){self.caches&&!Q&&(Q=self.caches.open(\"mapbox-tiles\"))}function lt(t,e,r){if(st(),Q){var n={status:e.status,statusText:e.statusText,headers:new self.Headers};e.headers.forEach((function(t,e){return n.headers.set(e,t)}));var i=A(e.headers.get(\"Cache-Control\")||\"\");if(!i[\"no-store\"])i[\"max-age\"]&&n.headers.set(\"Expires\",new Date(r+1e3*i[\"max-age\"]).toUTCString()),new Date(n.headers.get(\"Expires\")).getTime()-r<42e4||function(t,e){if(void 0===$)try{new Response(new ReadableStream),$=!0}catch(t){$=!1}$?e(t.body):t.blob().then(e)}(e,(function(e){var r=new self.Response(e,n);st(),Q&&Q.then((function(e){return e.put(ct(t.url),r)})).catch((function(t){return _(t.message)}))}))}}function ct(t){var e=t.indexOf(\"?\");return e<0?t:t.slice(0,e)}function ut(t,e){if(st(),!Q)return e(null);var r=ct(t.url);Q.then((function(t){t.match(r).then((function(n){var i=function(t){if(!t)return!1;var e=new Date(t.headers.get(\"Expires\")||0),r=A(t.headers.get(\"Cache-Control\")||\"\");return e>Date.now()&&!r[\"no-cache\"]}(n);t.delete(r),i&&t.put(r,n.clone()),e(null,n,i)})).catch(e)})).catch(e)}var ft,ht=1/0;function pt(){return null==ft&&(ft=self.OffscreenCanvas&&new self.OffscreenCanvas(1,1).getContext(\"2d\")&&\"function\"==typeof self.createImageBitmap),ft}var dt={Unknown:\"Unknown\",Style:\"Style\",Source:\"Source\",Tile:\"Tile\",Glyphs:\"Glyphs\",SpriteImage:\"SpriteImage\",SpriteJSON:\"SpriteJSON\",Image:\"Image\"};\"function\"==typeof Object.freeze&&Object.freeze(dt);var gt=function(t){function e(e,r,n){401===r&&Y(n)&&(e+=\": you may have provided an invalid Mapbox access token. See https://www.mapbox.com/api-documentation/#access-tokens-and-token-scopes\"),t.call(this,e),this.status=r,this.url=n,this.name=this.constructor.name,this.message=e}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.toString=function(){return this.name+\": \"+this.message+\" (\"+this.status+\"): \"+this.url},e}(Error),mt=k()?function(){return self.worker&&self.worker.referrer}:function(){return(\"blob:\"===self.location.protocol?self.parent:self).location.href};function vt(t,e){var r,n=new self.AbortController,i=new self.Request(t.url,{method:t.method||\"GET\",body:t.body,credentials:t.credentials,headers:t.headers,referrer:mt(),signal:n.signal}),a=!1,o=!1,s=(r=i.url).indexOf(\"sku=\")>0&&Y(r);\"json\"===t.type&&i.headers.set(\"Accept\",\"application/json\");var l=function(r,n,a){if(!o){if(r&&\"SecurityError\"!==r.message&&_(r),n&&a)return c(n);var l=Date.now();self.fetch(i).then((function(r){if(r.ok){var n=s?r.clone():null;return c(r,n,l)}return e(new gt(r.statusText,r.status,t.url))})).catch((function(t){20!==t.code&&e(new Error(t.message))}))}},c=function(r,n,s){(\"arrayBuffer\"===t.type?r.arrayBuffer():\"json\"===t.type?r.json():r.text()).then((function(t){o||(n&&s&<(i,n,s),a=!0,e(null,t,r.headers.get(\"Cache-Control\"),r.headers.get(\"Expires\")))})).catch((function(t){o||e(new Error(t.message))}))};return s?ut(i,l):l(null,null),{cancel:function(){o=!0,a||n.abort()}}}var yt=function(t,e){if(r=t.url,!(/^file:/.test(r)||/^file:/.test(mt())&&!/^\\w+:/.test(r))){if(self.fetch&&self.Request&&self.AbortController&&self.Request.prototype.hasOwnProperty(\"signal\"))return vt(t,e);if(k()&&self.worker&&self.worker.actor){return self.worker.actor.send(\"getResource\",t,e,void 0,!0)}}var r;return function(t,e){var r=new self.XMLHttpRequest;for(var n in r.open(t.method||\"GET\",t.url,!0),\"arrayBuffer\"===t.type&&(r.responseType=\"arraybuffer\"),t.headers)r.setRequestHeader(n,t.headers[n]);return\"json\"===t.type&&(r.responseType=\"text\",r.setRequestHeader(\"Accept\",\"application/json\")),r.withCredentials=\"include\"===t.credentials,r.onerror=function(){e(new Error(r.statusText))},r.onload=function(){if((r.status>=200&&r.status<300||0===r.status)&&null!==r.response){var n=r.response;if(\"json\"===t.type)try{n=JSON.parse(r.response)}catch(t){return e(t)}e(null,n,r.getResponseHeader(\"Cache-Control\"),r.getResponseHeader(\"Expires\"))}else e(new gt(r.statusText,r.status,t.url))},r.send(t.body),{cancel:function(){return r.abort()}}}(t,e)},xt=function(t,e){return yt(u(t,{type:\"arrayBuffer\"}),e)},bt=function(t,e){return yt(u(t,{method:\"POST\"}),e)};var _t,wt;_t=[],wt=0;var Tt=function(t,e){if(B.supported&&(t.headers||(t.headers={}),t.headers.accept=\"image/webp,*/*\"),wt>=F.MAX_PARALLEL_IMAGE_REQUESTS){var r={requestParameters:t,callback:e,cancelled:!1,cancel:function(){this.cancelled=!0}};return _t.push(r),r}wt++;var n=!1,i=function(){if(!n)for(n=!0,wt--;_t.length&&wt0||this._oneTimeListeners&&this._oneTimeListeners[t]&&this._oneTimeListeners[t].length>0||this._eventedParent&&this._eventedParent.listens(t)},Et.prototype.setEventedParent=function(t,e){return this._eventedParent=t,this._eventedParentData=e,this};var Lt={$version:8,$root:{version:{required:!0,type:\"enum\",values:[8]},name:{type:\"string\"},metadata:{type:\"*\"},center:{type:\"array\",value:\"number\"},zoom:{type:\"number\"},bearing:{type:\"number\",default:0,period:360,units:\"degrees\"},pitch:{type:\"number\",default:0,units:\"degrees\"},light:{type:\"light\"},sources:{required:!0,type:\"sources\"},sprite:{type:\"string\"},glyphs:{type:\"string\"},transition:{type:\"transition\"},layers:{required:!0,type:\"array\",value:\"layer\"}},sources:{\"*\":{type:\"source\"}},source:[\"source_vector\",\"source_raster\",\"source_raster_dem\",\"source_geojson\",\"source_video\",\"source_image\"],source_vector:{type:{required:!0,type:\"enum\",values:{vector:{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.051129,180,85.051129]},scheme:{type:\"enum\",values:{xyz:{},tms:{}},default:\"xyz\"},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},attribution:{type:\"string\"},promoteId:{type:\"promoteId\"},\"*\":{type:\"*\"}},source_raster:{type:{required:!0,type:\"enum\",values:{raster:{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},tileSize:{type:\"number\",default:512,units:\"pixels\"},scheme:{type:\"enum\",values:{xyz:{},tms:{}},default:\"xyz\"},attribution:{type:\"string\"},\"*\":{type:\"*\"}},source_raster_dem:{type:{required:!0,type:\"enum\",values:{\"raster-dem\":{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},tileSize:{type:\"number\",default:512,units:\"pixels\"},attribution:{type:\"string\"},encoding:{type:\"enum\",values:{terrarium:{},mapbox:{}},default:\"mapbox\"},\"*\":{type:\"*\"}},source_geojson:{type:{required:!0,type:\"enum\",values:{geojson:{}}},data:{type:\"*\"},maxzoom:{type:\"number\",default:18},attribution:{type:\"string\"},buffer:{type:\"number\",default:128,maximum:512,minimum:0},tolerance:{type:\"number\",default:.375},cluster:{type:\"boolean\",default:!1},clusterRadius:{type:\"number\",default:50,minimum:0},clusterMaxZoom:{type:\"number\"},clusterProperties:{type:\"*\"},lineMetrics:{type:\"boolean\",default:!1},generateId:{type:\"boolean\",default:!1},promoteId:{type:\"promoteId\"}},source_video:{type:{required:!0,type:\"enum\",values:{video:{}}},urls:{required:!0,type:\"array\",value:\"string\"},coordinates:{required:!0,type:\"array\",length:4,value:{type:\"array\",length:2,value:\"number\"}}},source_image:{type:{required:!0,type:\"enum\",values:{image:{}}},url:{required:!0,type:\"string\"},coordinates:{required:!0,type:\"array\",length:4,value:{type:\"array\",length:2,value:\"number\"}}},layer:{id:{type:\"string\",required:!0},type:{type:\"enum\",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},\"fill-extrusion\":{},raster:{},hillshade:{},background:{}},required:!0},metadata:{type:\"*\"},source:{type:\"string\"},\"source-layer\":{type:\"string\"},minzoom:{type:\"number\",minimum:0,maximum:24},maxzoom:{type:\"number\",minimum:0,maximum:24},filter:{type:\"filter\"},layout:{type:\"layout\"},paint:{type:\"paint\"}},layout:[\"layout_fill\",\"layout_line\",\"layout_circle\",\"layout_heatmap\",\"layout_fill-extrusion\",\"layout_symbol\",\"layout_raster\",\"layout_hillshade\",\"layout_background\"],layout_background:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_fill:{\"fill-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_circle:{\"circle-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_heatmap:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},\"layout_fill-extrusion\":{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_line:{\"line-cap\":{type:\"enum\",values:{butt:{},round:{},square:{}},default:\"butt\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-join\":{type:\"enum\",values:{bevel:{},round:{},miter:{}},default:\"miter\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"line-miter-limit\":{type:\"number\",default:2,requires:[{\"line-join\":\"miter\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-round-limit\":{type:\"number\",default:1.05,requires:[{\"line-join\":\"round\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_symbol:{\"symbol-placement\":{type:\"enum\",values:{point:{},line:{},\"line-center\":{}},default:\"point\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-spacing\":{type:\"number\",default:250,minimum:1,units:\"pixels\",requires:[{\"symbol-placement\":\"line\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-avoid-edges\":{type:\"boolean\",default:!1,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"symbol-z-order\":{type:\"enum\",values:{auto:{},\"viewport-y\":{},source:{}},default:\"auto\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-allow-overlap\":{type:\"boolean\",default:!1,requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-ignore-placement\":{type:\"boolean\",default:!1,requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-optional\":{type:\"boolean\",default:!1,requires:[\"icon-image\",\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-rotation-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-size\":{type:\"number\",default:1,minimum:0,units:\"factor of the original icon size\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-text-fit\":{type:\"enum\",values:{none:{},width:{},height:{},both:{}},default:\"none\",requires:[\"icon-image\",\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-text-fit-padding\":{type:\"array\",value:\"number\",length:4,default:[0,0,0,0],units:\"pixels\",requires:[\"icon-image\",\"text-field\",{\"icon-text-fit\":[\"both\",\"width\",\"height\"]}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-image\":{type:\"resolvedImage\",tokens:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-rotate\":{type:\"number\",default:0,period:360,units:\"degrees\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-padding\":{type:\"number\",default:2,minimum:0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-keep-upright\":{type:\"boolean\",default:!1,requires:[\"icon-image\",{\"icon-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-offset\":{type:\"array\",value:\"number\",length:2,default:[0,0],requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-anchor\":{type:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},default:\"center\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotation-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-field\":{type:\"formatted\",default:\"\",tokens:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-font\":{type:\"array\",value:\"string\",default:[\"Open Sans Regular\",\"Arial Unicode MS Regular\"],requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-size\":{type:\"number\",default:16,minimum:0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-max-width\":{type:\"number\",default:10,minimum:0,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-line-height\":{type:\"number\",default:1.2,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-letter-spacing\":{type:\"number\",default:0,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-justify\":{type:\"enum\",values:{auto:{},left:{},center:{},right:{}},default:\"center\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-radial-offset\":{type:\"number\",units:\"ems\",default:0,requires:[\"text-field\"],\"property-type\":\"data-driven\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]}},\"text-variable-anchor\":{type:\"array\",value:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},requires:[\"text-field\",{\"symbol-placement\":[\"point\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-anchor\":{type:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},default:\"center\",requires:[\"text-field\",{\"!\":\"text-variable-anchor\"}],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-max-angle\":{type:\"number\",default:45,units:\"degrees\",requires:[\"text-field\",{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-writing-mode\":{type:\"array\",value:\"enum\",values:{horizontal:{},vertical:{}},requires:[\"text-field\",{\"symbol-placement\":[\"point\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotate\":{type:\"number\",default:0,period:360,units:\"degrees\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-padding\":{type:\"number\",default:2,minimum:0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-keep-upright\":{type:\"boolean\",default:!0,requires:[\"text-field\",{\"text-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-transform\":{type:\"enum\",values:{none:{},uppercase:{},lowercase:{}},default:\"none\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-offset\":{type:\"array\",value:\"number\",units:\"ems\",length:2,default:[0,0],requires:[\"text-field\",{\"!\":\"text-radial-offset\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-allow-overlap\":{type:\"boolean\",default:!1,requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-ignore-placement\":{type:\"boolean\",default:!1,requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-optional\":{type:\"boolean\",default:!1,requires:[\"text-field\",\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_raster:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_hillshade:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},filter:{type:\"array\",value:\"*\"},filter_operator:{type:\"enum\",values:{\"==\":{},\"!=\":{},\">\":{},\">=\":{},\"<\":{},\"<=\":{},in:{},\"!in\":{},all:{},any:{},none:{},has:{},\"!has\":{},within:{}}},geometry_type:{type:\"enum\",values:{Point:{},LineString:{},Polygon:{}}},function:{expression:{type:\"expression\"},stops:{type:\"array\",value:\"function_stop\"},base:{type:\"number\",default:1,minimum:0},property:{type:\"string\",default:\"$zoom\"},type:{type:\"enum\",values:{identity:{},exponential:{},interval:{},categorical:{}},default:\"exponential\"},colorSpace:{type:\"enum\",values:{rgb:{},lab:{},hcl:{}},default:\"rgb\"},default:{type:\"*\",required:!1}},function_stop:{type:\"array\",minimum:0,maximum:24,value:[\"number\",\"color\"],length:2},expression:{type:\"array\",value:\"*\",minimum:1},expression_name:{type:\"enum\",values:{let:{group:\"Variable binding\"},var:{group:\"Variable binding\"},literal:{group:\"Types\"},array:{group:\"Types\"},at:{group:\"Lookup\"},in:{group:\"Lookup\"},\"index-of\":{group:\"Lookup\"},slice:{group:\"Lookup\"},case:{group:\"Decision\"},match:{group:\"Decision\"},coalesce:{group:\"Decision\"},step:{group:\"Ramps, scales, curves\"},interpolate:{group:\"Ramps, scales, curves\"},\"interpolate-hcl\":{group:\"Ramps, scales, curves\"},\"interpolate-lab\":{group:\"Ramps, scales, curves\"},ln2:{group:\"Math\"},pi:{group:\"Math\"},e:{group:\"Math\"},typeof:{group:\"Types\"},string:{group:\"Types\"},number:{group:\"Types\"},boolean:{group:\"Types\"},object:{group:\"Types\"},collator:{group:\"Types\"},format:{group:\"Types\"},image:{group:\"Types\"},\"number-format\":{group:\"Types\"},\"to-string\":{group:\"Types\"},\"to-number\":{group:\"Types\"},\"to-boolean\":{group:\"Types\"},\"to-rgba\":{group:\"Color\"},\"to-color\":{group:\"Types\"},rgb:{group:\"Color\"},rgba:{group:\"Color\"},get:{group:\"Lookup\"},has:{group:\"Lookup\"},length:{group:\"Lookup\"},properties:{group:\"Feature data\"},\"feature-state\":{group:\"Feature data\"},\"geometry-type\":{group:\"Feature data\"},id:{group:\"Feature data\"},zoom:{group:\"Zoom\"},\"heatmap-density\":{group:\"Heatmap\"},\"line-progress\":{group:\"Feature data\"},accumulated:{group:\"Feature data\"},\"+\":{group:\"Math\"},\"*\":{group:\"Math\"},\"-\":{group:\"Math\"},\"/\":{group:\"Math\"},\"%\":{group:\"Math\"},\"^\":{group:\"Math\"},sqrt:{group:\"Math\"},log10:{group:\"Math\"},ln:{group:\"Math\"},log2:{group:\"Math\"},sin:{group:\"Math\"},cos:{group:\"Math\"},tan:{group:\"Math\"},asin:{group:\"Math\"},acos:{group:\"Math\"},atan:{group:\"Math\"},min:{group:\"Math\"},max:{group:\"Math\"},round:{group:\"Math\"},abs:{group:\"Math\"},ceil:{group:\"Math\"},floor:{group:\"Math\"},distance:{group:\"Math\"},\"==\":{group:\"Decision\"},\"!=\":{group:\"Decision\"},\">\":{group:\"Decision\"},\"<\":{group:\"Decision\"},\">=\":{group:\"Decision\"},\"<=\":{group:\"Decision\"},all:{group:\"Decision\"},any:{group:\"Decision\"},\"!\":{group:\"Decision\"},within:{group:\"Decision\"},\"is-supported-script\":{group:\"String\"},upcase:{group:\"String\"},downcase:{group:\"String\"},concat:{group:\"String\"},\"resolved-locale\":{group:\"String\"}}},light:{anchor:{type:\"enum\",default:\"viewport\",values:{map:{},viewport:{}},\"property-type\":\"data-constant\",transition:!1,expression:{interpolated:!1,parameters:[\"zoom\"]}},position:{type:\"array\",default:[1.15,210,30],length:3,value:\"number\",\"property-type\":\"data-constant\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]}},color:{type:\"color\",\"property-type\":\"data-constant\",default:\"#ffffff\",expression:{interpolated:!0,parameters:[\"zoom\"]},transition:!0},intensity:{type:\"number\",\"property-type\":\"data-constant\",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:[\"zoom\"]},transition:!0}},paint:[\"paint_fill\",\"paint_line\",\"paint_circle\",\"paint_heatmap\",\"paint_fill-extrusion\",\"paint_symbol\",\"paint_raster\",\"paint_hillshade\",\"paint_background\"],paint_fill:{\"fill-antialias\":{type:\"boolean\",default:!0,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"fill-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-outline-color\":{type:\"color\",transition:!0,requires:[{\"!\":\"fill-pattern\"},{\"fill-antialias\":!0}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"fill-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"}},\"paint_fill-extrusion\":{\"fill-extrusion-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"fill-extrusion-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"fill-extrusion-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"fill-extrusion-height\":{type:\"number\",default:0,minimum:0,units:\"meters\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-base\":{type:\"number\",default:0,minimum:0,units:\"meters\",transition:!0,requires:[\"fill-extrusion-height\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-vertical-gradient\":{type:\"boolean\",default:!0,transition:!1,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_line:{\"line-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"line-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"line-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-width\":{type:\"number\",default:1,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-gap-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-offset\":{type:\"number\",default:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-dasharray\":{type:\"array\",value:\"number\",minimum:0,transition:!0,units:\"line widths\",requires:[{\"!\":\"line-pattern\"}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"cross-faded\"},\"line-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"line-gradient\":{type:\"color\",transition:!1,requires:[{\"!\":\"line-dasharray\"},{\"!\":\"line-pattern\"},{source:\"geojson\",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:[\"line-progress\"]},\"property-type\":\"color-ramp\"}},paint_circle:{\"circle-radius\":{type:\"number\",default:5,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-blur\":{type:\"number\",default:0,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"circle-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-scale\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{}},default:\"viewport\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-stroke-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"}},paint_heatmap:{\"heatmap-radius\":{type:\"number\",default:30,minimum:1,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-weight\":{type:\"number\",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-intensity\":{type:\"number\",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"heatmap-color\":{type:\"color\",default:[\"interpolate\",[\"linear\"],[\"heatmap-density\"],0,\"rgba(0, 0, 255, 0)\",.1,\"royalblue\",.3,\"cyan\",.5,\"lime\",.7,\"yellow\",1,\"red\"],transition:!1,expression:{interpolated:!0,parameters:[\"heatmap-density\"]},\"property-type\":\"color-ramp\"},\"heatmap-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_symbol:{\"icon-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-color\":{type:\"color\",default:\"rgba(0, 0, 0, 0)\",transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"icon-image\",\"icon-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-color\":{type:\"color\",default:\"#000000\",transition:!0,overridable:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-color\":{type:\"color\",default:\"rgba(0, 0, 0, 0)\",transition:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"text-field\",\"text-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_raster:{\"raster-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-hue-rotate\":{type:\"number\",default:0,period:360,transition:!0,units:\"degrees\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-min\":{type:\"number\",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-max\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-saturation\":{type:\"number\",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-contrast\":{type:\"number\",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-resampling\":{type:\"enum\",values:{linear:{},nearest:{}},default:\"linear\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-fade-duration\":{type:\"number\",default:300,minimum:0,transition:!1,units:\"milliseconds\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_hillshade:{\"hillshade-illumination-direction\":{type:\"number\",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-illumination-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"viewport\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-exaggeration\":{type:\"number\",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-shadow-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-highlight-color\":{type:\"color\",default:\"#FFFFFF\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-accent-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_background:{\"background-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"background-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"background-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"cross-faded\"},\"background-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},transition:{duration:{type:\"number\",default:300,minimum:0,units:\"milliseconds\"},delay:{type:\"number\",default:0,minimum:0,units:\"milliseconds\"}},\"property-type\":{\"data-driven\":{type:\"property-type\"},\"cross-faded\":{type:\"property-type\"},\"cross-faded-data-driven\":{type:\"property-type\"},\"color-ramp\":{type:\"property-type\"},\"data-constant\":{type:\"property-type\"},constant:{type:\"property-type\"}},promoteId:{\"*\":{type:\"string\"}}},Ct=function(t,e,r,n){this.message=(t?t+\": \":\"\")+r,n&&(this.identifier=n),null!=e&&e.__line__&&(this.line=e.__line__)};function Pt(t){var e=t.key,r=t.value;return r?[new Ct(e,r,\"constants have been deprecated as of v8\")]:[]}function It(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];for(var n=0,i=e;n\":\"value\"===t.itemType.kind?\"array\":\"array<\"+e+\">\"}return t.kind}var Zt=[Ft,Bt,Nt,jt,Ut,Gt,Vt,Wt(Ht),Yt];function Jt(t,e){if(\"error\"===e.kind)return null;if(\"array\"===t.kind){if(\"array\"===e.kind&&(0===e.N&&\"value\"===e.itemType.kind||!Jt(t.itemType,e.itemType))&&(\"number\"!=typeof t.N||t.N===e.N))return null}else{if(t.kind===e.kind)return null;if(\"value\"===t.kind)for(var r=0,n=Zt;r255?255:t}function i(t){return t<0?0:t>1?1:t}function a(t){return\"%\"===t[t.length-1]?n(parseFloat(t)/100*255):n(parseInt(t))}function o(t){return\"%\"===t[t.length-1]?i(parseFloat(t)/100):i(parseFloat(t))}function s(t,e,r){return r<0?r+=1:r>1&&(r-=1),6*r<1?t+(e-t)*r*6:2*r<1?e:3*r<2?t+(e-t)*(2/3-r)*6:t}try{e.parseCSSColor=function(t){var e,i=t.replace(/ /g,\"\").toLowerCase();if(i in r)return r[i].slice();if(\"#\"===i[0])return 4===i.length?(e=parseInt(i.substr(1),16))>=0&&e<=4095?[(3840&e)>>4|(3840&e)>>8,240&e|(240&e)>>4,15&e|(15&e)<<4,1]:null:7===i.length&&(e=parseInt(i.substr(1),16))>=0&&e<=16777215?[(16711680&e)>>16,(65280&e)>>8,255&e,1]:null;var l=i.indexOf(\"(\"),c=i.indexOf(\")\");if(-1!==l&&c+1===i.length){var u=i.substr(0,l),f=i.substr(l+1,c-(l+1)).split(\",\"),h=1;switch(u){case\"rgba\":if(4!==f.length)return null;h=o(f.pop());case\"rgb\":return 3!==f.length?null:[a(f[0]),a(f[1]),a(f[2]),h];case\"hsla\":if(4!==f.length)return null;h=o(f.pop());case\"hsl\":if(3!==f.length)return null;var p=(parseFloat(f[0])%360+360)%360/360,d=o(f[1]),g=o(f[2]),m=g<=.5?g*(d+1):g+d-g*d,v=2*g-m;return[n(255*s(v,m,p+1/3)),n(255*s(v,m,p)),n(255*s(v,m,p-1/3)),h];default:return null}}return null}}catch(t){}})).parseCSSColor,te=function(t,e,r,n){void 0===n&&(n=1),this.r=t,this.g=e,this.b=r,this.a=n};te.parse=function(t){if(t){if(t instanceof te)return t;if(\"string\"==typeof t){var e=$t(t);if(e)return new te(e[0]/255*e[3],e[1]/255*e[3],e[2]/255*e[3],e[3])}}},te.prototype.toString=function(){var t=this.toArray(),e=t[0],r=t[1],n=t[2],i=t[3];return\"rgba(\"+Math.round(e)+\",\"+Math.round(r)+\",\"+Math.round(n)+\",\"+i+\")\"},te.prototype.toArray=function(){var t=this.r,e=this.g,r=this.b,n=this.a;return 0===n?[0,0,0,0]:[255*t/n,255*e/n,255*r/n,n]},te.black=new te(0,0,0,1),te.white=new te(1,1,1,1),te.transparent=new te(0,0,0,0),te.red=new te(1,0,0,1);var ee=function(t,e,r){this.sensitivity=t?e?\"variant\":\"case\":e?\"accent\":\"base\",this.locale=r,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:\"search\"})};ee.prototype.compare=function(t,e){return this.collator.compare(t,e)},ee.prototype.resolvedLocale=function(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale};var re=function(t,e,r,n,i){this.text=t,this.image=e,this.scale=r,this.fontStack=n,this.textColor=i},ne=function(t){this.sections=t};ne.fromString=function(t){return new ne([new re(t,null,null,null,null)])},ne.prototype.isEmpty=function(){return 0===this.sections.length||!this.sections.some((function(t){return 0!==t.text.length||t.image&&0!==t.image.name.length}))},ne.factory=function(t){return t instanceof ne?t:ne.fromString(t)},ne.prototype.toString=function(){return 0===this.sections.length?\"\":this.sections.map((function(t){return t.text})).join(\"\")},ne.prototype.serialize=function(){for(var t=[\"format\"],e=0,r=this.sections;e=0&&t<=255&&\"number\"==typeof e&&e>=0&&e<=255&&\"number\"==typeof r&&r>=0&&r<=255?void 0===n||\"number\"==typeof n&&n>=0&&n<=1?null:\"Invalid rgba value [\"+[t,e,r,n].join(\", \")+\"]: 'a' must be between 0 and 1.\":\"Invalid rgba value [\"+(\"number\"==typeof n?[t,e,r,n]:[t,e,r]).join(\", \")+\"]: 'r', 'g', and 'b' must be between 0 and 255.\"}function oe(t){if(null===t)return!0;if(\"string\"==typeof t)return!0;if(\"boolean\"==typeof t)return!0;if(\"number\"==typeof t)return!0;if(t instanceof te)return!0;if(t instanceof ee)return!0;if(t instanceof ne)return!0;if(t instanceof ie)return!0;if(Array.isArray(t)){for(var e=0,r=t;e2){var s=t[1];if(\"string\"!=typeof s||!(s in fe)||\"object\"===s)return e.error('The item type argument of \"array\" must be one of string, number, boolean',1);a=fe[s],n++}else a=Ht;if(t.length>3){if(null!==t[2]&&(\"number\"!=typeof t[2]||t[2]<0||t[2]!==Math.floor(t[2])))return e.error('The length argument to \"array\" must be a positive integer literal',2);o=t[2],n++}r=Wt(a,o)}else r=fe[i];for(var l=[];n1)&&e.push(n)}}return e.concat(this.args.map((function(t){return t.serialize()})))};var pe=function(t){this.type=Gt,this.sections=t};pe.parse=function(t,e){if(t.length<2)return e.error(\"Expected at least one argument.\");var r=t[1];if(!Array.isArray(r)&&\"object\"==typeof r)return e.error(\"First argument must be an image or text section.\");for(var n=[],i=!1,a=1;a<=t.length-1;++a){var o=t[a];if(i&&\"object\"==typeof o&&!Array.isArray(o)){i=!1;var s=null;if(o[\"font-scale\"]&&!(s=e.parse(o[\"font-scale\"],1,Bt)))return null;var l=null;if(o[\"text-font\"]&&!(l=e.parse(o[\"text-font\"],1,Wt(Nt))))return null;var c=null;if(o[\"text-color\"]&&!(c=e.parse(o[\"text-color\"],1,Ut)))return null;var u=n[n.length-1];u.scale=s,u.font=l,u.textColor=c}else{var f=e.parse(t[a],1,Ht);if(!f)return null;var h=f.type.kind;if(\"string\"!==h&&\"value\"!==h&&\"null\"!==h&&\"resolvedImage\"!==h)return e.error(\"Formatted text type must be 'string', 'value', 'image' or 'null'.\");i=!0,n.push({content:f,scale:null,font:null,textColor:null})}}return new pe(n)},pe.prototype.evaluate=function(t){return new ne(this.sections.map((function(e){var r=e.content.evaluate(t);return se(r)===Yt?new re(\"\",r,null,null,null):new re(le(r),null,e.scale?e.scale.evaluate(t):null,e.font?e.font.evaluate(t).join(\",\"):null,e.textColor?e.textColor.evaluate(t):null)})))},pe.prototype.eachChild=function(t){for(var e=0,r=this.sections;e-1),r},de.prototype.eachChild=function(t){t(this.input)},de.prototype.outputDefined=function(){return!1},de.prototype.serialize=function(){return[\"image\",this.input.serialize()]};var ge={\"to-boolean\":jt,\"to-color\":Ut,\"to-number\":Bt,\"to-string\":Nt},me=function(t,e){this.type=t,this.args=e};me.parse=function(t,e){if(t.length<2)return e.error(\"Expected at least one argument.\");var r=t[0];if((\"to-boolean\"===r||\"to-string\"===r)&&2!==t.length)return e.error(\"Expected one argument.\");for(var n=ge[r],i=[],a=1;a4?\"Invalid rbga value \"+JSON.stringify(e)+\": expected an array containing either three or four numeric values.\":ae(e[0],e[1],e[2],e[3])))return new te(e[0]/255,e[1]/255,e[2]/255,e[3])}throw new ue(r||\"Could not parse color from value '\"+(\"string\"==typeof e?e:String(JSON.stringify(e)))+\"'\")}if(\"number\"===this.type.kind){for(var o=null,s=0,l=this.args;s=e[2])&&(!(t[1]<=e[1])&&!(t[3]>=e[3])))}function Te(t,e){var r,n=(180+t[0])/360,i=(r=t[1],(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+r*Math.PI/360)))/360),a=Math.pow(2,e.z);return[Math.round(n*a*8192),Math.round(i*a*8192)]}function ke(t,e,r){return e[1]>t[1]!=r[1]>t[1]&&t[0]<(r[0]-e[0])*(t[1]-e[1])/(r[1]-e[1])+e[0]}function Ae(t,e){for(var r,n,i,a,o,s,l,c=!1,u=0,f=e.length;u0&&f<0||u<0&&f>0}function Ee(t,e,r){for(var n=0,i=r;nr[2]){var i=.5*n,a=t[0]-r[0]>i?-n:r[0]-t[0]>i?n:0;0===a&&(a=t[0]-r[2]>i?-n:r[2]-t[0]>i?n:0),t[0]+=a}_e(e,t)}function ze(t,e,r,n){for(var i=8192*Math.pow(2,n.z),a=[8192*n.x,8192*n.y],o=[],s=0,l=t;s=0)return!1;var r=!0;return t.eachChild((function(t){r&&!Ne(t,e)&&(r=!1)})),r}Re.parse=function(t,e){if(2!==t.length)return e.error(\"'within' expression requires exactly one argument, but found \"+(t.length-1)+\" instead.\");if(oe(t[1])){var r=t[1];if(\"FeatureCollection\"===r.type)for(var n=0;ne))throw new ue(\"Input is not a number.\");o=s-1}return 0}Ue.prototype.parse=function(t,e,r,n,i){return void 0===i&&(i={}),e?this.concat(e,r,n)._parse(t,i):this._parse(t,i)},Ue.prototype._parse=function(t,e){function r(t,e,r){return\"assert\"===r?new he(e,[t]):\"coerce\"===r?new me(e,[t]):t}if(null!==t&&\"string\"!=typeof t&&\"boolean\"!=typeof t&&\"number\"!=typeof t||(t=[\"literal\",t]),Array.isArray(t)){if(0===t.length)return this.error('Expected an array with at least one element. If you wanted a literal array, use [\"literal\", []].');var n=t[0];if(\"string\"!=typeof n)return this.error(\"Expression name must be a string, but found \"+typeof n+' instead. If you wanted a literal array, use [\"literal\", [...]].',0),null;var i=this.registry[n];if(i){var a=i.parse(t,this);if(!a)return null;if(this.expectedType){var o=this.expectedType,s=a.type;if(\"string\"!==o.kind&&\"number\"!==o.kind&&\"boolean\"!==o.kind&&\"object\"!==o.kind&&\"array\"!==o.kind||\"value\"!==s.kind)if(\"color\"!==o.kind&&\"formatted\"!==o.kind&&\"resolvedImage\"!==o.kind||\"value\"!==s.kind&&\"string\"!==s.kind){if(this.checkSubtype(o,s))return null}else a=r(a,o,e.typeAnnotation||\"coerce\");else a=r(a,o,e.typeAnnotation||\"assert\")}if(!(a instanceof ce)&&\"resolvedImage\"!==a.type.kind&&function t(e){if(e instanceof je)return t(e.boundExpression);if(e instanceof xe&&\"error\"===e.name)return!1;if(e instanceof be)return!1;if(e instanceof Re)return!1;var r=e instanceof me||e instanceof he,n=!0;if(e.eachChild((function(e){n=r?n&&t(e):n&&e instanceof ce})),!n)return!1;return Fe(e)&&Ne(e,[\"zoom\",\"heatmap-density\",\"line-progress\",\"accumulated\",\"is-supported-script\"])}(a)){var l=new ye;try{a=new ce(a.type,a.evaluate(l))}catch(t){return this.error(t.message),null}}return a}return this.error('Unknown expression \"'+n+'\". If you wanted a literal array, use [\"literal\", [...]].',0)}return void 0===t?this.error(\"'undefined' value invalid. Use null instead.\"):\"object\"==typeof t?this.error('Bare objects invalid. Use [\"literal\", {...}] instead.'):this.error(\"Expected an array, but found \"+typeof t+\" instead.\")},Ue.prototype.concat=function(t,e,r){var n=\"number\"==typeof t?this.path.concat(t):this.path,i=r?this.scope.concat(r):this.scope;return new Ue(this.registry,n,e||null,i,this.errors)},Ue.prototype.error=function(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];var n=\"\"+this.key+e.map((function(t){return\"[\"+t+\"]\"})).join(\"\");this.errors.push(new Dt(n,t))},Ue.prototype.checkSubtype=function(t,e){var r=Jt(t,e);return r&&this.error(r),r};var He=function(t,e,r){this.type=t,this.input=e,this.labels=[],this.outputs=[];for(var n=0,i=r;n=o)return e.error('Input/output pairs for \"step\" expressions must be arranged with input values in strictly ascending order.',l);var u=e.parse(s,c,i);if(!u)return null;i=i||u.type,n.push([o,u])}return new He(i,r,n)},He.prototype.evaluate=function(t){var e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);var n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);var i=e.length;return n>=e[i-1]?r[i-1].evaluate(t):r[Ve(e,n)].evaluate(t)},He.prototype.eachChild=function(t){t(this.input);for(var e=0,r=this.outputs;e0&&t.push(this.labels[e]),t.push(this.outputs[e].serialize());return t};var Ge=Object.freeze({__proto__:null,number:qe,color:function(t,e,r){return new te(qe(t.r,e.r,r),qe(t.g,e.g,r),qe(t.b,e.b,r),qe(t.a,e.a,r))},array:function(t,e,r){return t.map((function(t,n){return qe(t,e[n],r)}))}}),Ye=6/29,We=3*Ye*Ye,Xe=Math.PI/180,Ze=180/Math.PI;function Je(t){return t>.008856451679035631?Math.pow(t,1/3):t/We+4/29}function Ke(t){return t>Ye?t*t*t:We*(t-4/29)}function Qe(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function $e(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function tr(t){var e=$e(t.r),r=$e(t.g),n=$e(t.b),i=Je((.4124564*e+.3575761*r+.1804375*n)/.95047),a=Je((.2126729*e+.7151522*r+.072175*n)/1);return{l:116*a-16,a:500*(i-a),b:200*(a-Je((.0193339*e+.119192*r+.9503041*n)/1.08883)),alpha:t.a}}function er(t){var e=(t.l+16)/116,r=isNaN(t.a)?e:e+t.a/500,n=isNaN(t.b)?e:e-t.b/200;return e=1*Ke(e),r=.95047*Ke(r),n=1.08883*Ke(n),new te(Qe(3.2404542*r-1.5371385*e-.4985314*n),Qe(-.969266*r+1.8760108*e+.041556*n),Qe(.0556434*r-.2040259*e+1.0572252*n),t.alpha)}function rr(t,e,r){var n=e-t;return t+r*(n>180||n<-180?n-360*Math.round(n/360):n)}var nr={forward:tr,reverse:er,interpolate:function(t,e,r){return{l:qe(t.l,e.l,r),a:qe(t.a,e.a,r),b:qe(t.b,e.b,r),alpha:qe(t.alpha,e.alpha,r)}}},ir={forward:function(t){var e=tr(t),r=e.l,n=e.a,i=e.b,a=Math.atan2(i,n)*Ze;return{h:a<0?a+360:a,c:Math.sqrt(n*n+i*i),l:r,alpha:t.a}},reverse:function(t){var e=t.h*Xe,r=t.c;return er({l:t.l,a:Math.cos(e)*r,b:Math.sin(e)*r,alpha:t.alpha})},interpolate:function(t,e,r){return{h:rr(t.h,e.h,r),c:qe(t.c,e.c,r),l:qe(t.l,e.l,r),alpha:qe(t.alpha,e.alpha,r)}}},ar=Object.freeze({__proto__:null,lab:nr,hcl:ir}),or=function(t,e,r,n,i){this.type=t,this.operator=e,this.interpolation=r,this.input=n,this.labels=[],this.outputs=[];for(var a=0,o=i;a1})))return e.error(\"Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.\",1);n={name:\"cubic-bezier\",controlPoints:s}}if(t.length-1<4)return e.error(\"Expected at least 4 arguments, but found only \"+(t.length-1)+\".\");if((t.length-1)%2!=0)return e.error(\"Expected an even number of arguments.\");if(!(i=e.parse(i,2,Bt)))return null;var l=[],c=null;\"interpolate-hcl\"===r||\"interpolate-lab\"===r?c=Ut:e.expectedType&&\"value\"!==e.expectedType.kind&&(c=e.expectedType);for(var u=0;u=f)return e.error('Input/output pairs for \"interpolate\" expressions must be arranged with input values in strictly ascending order.',p);var g=e.parse(h,d,c);if(!g)return null;c=c||g.type,l.push([f,g])}return\"number\"===c.kind||\"color\"===c.kind||\"array\"===c.kind&&\"number\"===c.itemType.kind&&\"number\"==typeof c.N?new or(c,r,n,i,l):e.error(\"Type \"+Xt(c)+\" is not interpolatable.\")},or.prototype.evaluate=function(t){var e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);var n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);var i=e.length;if(n>=e[i-1])return r[i-1].evaluate(t);var a=Ve(e,n),o=e[a],s=e[a+1],l=or.interpolationFactor(this.interpolation,n,o,s),c=r[a].evaluate(t),u=r[a+1].evaluate(t);return\"interpolate\"===this.operator?Ge[this.type.kind.toLowerCase()](c,u,l):\"interpolate-hcl\"===this.operator?ir.reverse(ir.interpolate(ir.forward(c),ir.forward(u),l)):nr.reverse(nr.interpolate(nr.forward(c),nr.forward(u),l))},or.prototype.eachChild=function(t){t(this.input);for(var e=0,r=this.outputs;e=r.length)throw new ue(\"Array index out of bounds: \"+e+\" > \"+(r.length-1)+\".\");if(e!==Math.floor(e))throw new ue(\"Array index must be an integer, but found \"+e+\" instead.\");return r[e]},ur.prototype.eachChild=function(t){t(this.index),t(this.input)},ur.prototype.outputDefined=function(){return!1},ur.prototype.serialize=function(){return[\"at\",this.index.serialize(),this.input.serialize()]};var fr=function(t,e){this.type=jt,this.needle=t,this.haystack=e};fr.parse=function(t,e){if(3!==t.length)return e.error(\"Expected 2 arguments, but found \"+(t.length-1)+\" instead.\");var r=e.parse(t[1],1,Ht),n=e.parse(t[2],2,Ht);return r&&n?Kt(r.type,[jt,Nt,Bt,Ft,Ht])?new fr(r,n):e.error(\"Expected first argument to be of type boolean, string, number or null, but found \"+Xt(r.type)+\" instead\"):null},fr.prototype.evaluate=function(t){var e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!r)return!1;if(!Qt(e,[\"boolean\",\"string\",\"number\",\"null\"]))throw new ue(\"Expected first argument to be of type boolean, string, number or null, but found \"+Xt(se(e))+\" instead.\");if(!Qt(r,[\"string\",\"array\"]))throw new ue(\"Expected second argument to be of type array or string, but found \"+Xt(se(r))+\" instead.\");return r.indexOf(e)>=0},fr.prototype.eachChild=function(t){t(this.needle),t(this.haystack)},fr.prototype.outputDefined=function(){return!0},fr.prototype.serialize=function(){return[\"in\",this.needle.serialize(),this.haystack.serialize()]};var hr=function(t,e,r){this.type=Bt,this.needle=t,this.haystack=e,this.fromIndex=r};hr.parse=function(t,e){if(t.length<=2||t.length>=5)return e.error(\"Expected 3 or 4 arguments, but found \"+(t.length-1)+\" instead.\");var r=e.parse(t[1],1,Ht),n=e.parse(t[2],2,Ht);if(!r||!n)return null;if(!Kt(r.type,[jt,Nt,Bt,Ft,Ht]))return e.error(\"Expected first argument to be of type boolean, string, number or null, but found \"+Xt(r.type)+\" instead\");if(4===t.length){var i=e.parse(t[3],3,Bt);return i?new hr(r,n,i):null}return new hr(r,n)},hr.prototype.evaluate=function(t){var e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!Qt(e,[\"boolean\",\"string\",\"number\",\"null\"]))throw new ue(\"Expected first argument to be of type boolean, string, number or null, but found \"+Xt(se(e))+\" instead.\");if(!Qt(r,[\"string\",\"array\"]))throw new ue(\"Expected second argument to be of type array or string, but found \"+Xt(se(r))+\" instead.\");if(this.fromIndex){var n=this.fromIndex.evaluate(t);return r.indexOf(e,n)}return r.indexOf(e)},hr.prototype.eachChild=function(t){t(this.needle),t(this.haystack),this.fromIndex&&t(this.fromIndex)},hr.prototype.outputDefined=function(){return!1},hr.prototype.serialize=function(){if(null!=this.fromIndex&&void 0!==this.fromIndex){var t=this.fromIndex.serialize();return[\"index-of\",this.needle.serialize(),this.haystack.serialize(),t]}return[\"index-of\",this.needle.serialize(),this.haystack.serialize()]};var pr=function(t,e,r,n,i,a){this.inputType=t,this.type=e,this.input=r,this.cases=n,this.outputs=i,this.otherwise=a};pr.parse=function(t,e){if(t.length<5)return e.error(\"Expected at least 4 arguments, but found only \"+(t.length-1)+\".\");if(t.length%2!=1)return e.error(\"Expected an even number of arguments.\");var r,n;e.expectedType&&\"value\"!==e.expectedType.kind&&(n=e.expectedType);for(var i={},a=[],o=2;oNumber.MAX_SAFE_INTEGER)return c.error(\"Branch labels must be integers no larger than \"+Number.MAX_SAFE_INTEGER+\".\");if(\"number\"==typeof h&&Math.floor(h)!==h)return c.error(\"Numeric branch labels must be integer values.\");if(r){if(c.checkSubtype(r,se(h)))return null}else r=se(h);if(void 0!==i[String(h)])return c.error(\"Branch labels must be unique.\");i[String(h)]=a.length}var p=e.parse(l,o,n);if(!p)return null;n=n||p.type,a.push(p)}var d=e.parse(t[1],1,Ht);if(!d)return null;var g=e.parse(t[t.length-1],t.length-1,n);return g?\"value\"!==d.type.kind&&e.concat(1).checkSubtype(r,d.type)?null:new pr(r,n,d,i,a,g):null},pr.prototype.evaluate=function(t){var e=this.input.evaluate(t);return(se(e)===this.inputType&&this.outputs[this.cases[e]]||this.otherwise).evaluate(t)},pr.prototype.eachChild=function(t){t(this.input),this.outputs.forEach(t),t(this.otherwise)},pr.prototype.outputDefined=function(){return this.outputs.every((function(t){return t.outputDefined()}))&&this.otherwise.outputDefined()},pr.prototype.serialize=function(){for(var t=this,e=[\"match\",this.input.serialize()],r=[],n={},i=0,a=Object.keys(this.cases).sort();i=5)return e.error(\"Expected 3 or 4 arguments, but found \"+(t.length-1)+\" instead.\");var r=e.parse(t[1],1,Ht),n=e.parse(t[2],2,Bt);if(!r||!n)return null;if(!Kt(r.type,[Wt(Ht),Nt,Ht]))return e.error(\"Expected first argument to be of type array or string, but found \"+Xt(r.type)+\" instead\");if(4===t.length){var i=e.parse(t[3],3,Bt);return i?new gr(r.type,r,n,i):null}return new gr(r.type,r,n)},gr.prototype.evaluate=function(t){var e=this.input.evaluate(t),r=this.beginIndex.evaluate(t);if(!Qt(e,[\"string\",\"array\"]))throw new ue(\"Expected first argument to be of type array or string, but found \"+Xt(se(e))+\" instead.\");if(this.endIndex){var n=this.endIndex.evaluate(t);return e.slice(r,n)}return e.slice(r)},gr.prototype.eachChild=function(t){t(this.input),t(this.beginIndex),this.endIndex&&t(this.endIndex)},gr.prototype.outputDefined=function(){return!1},gr.prototype.serialize=function(){if(null!=this.endIndex&&void 0!==this.endIndex){var t=this.endIndex.serialize();return[\"slice\",this.input.serialize(),this.beginIndex.serialize(),t]}return[\"slice\",this.input.serialize(),this.beginIndex.serialize()]};var xr=yr(\"==\",(function(t,e,r){return e===r}),vr),br=yr(\"!=\",(function(t,e,r){return e!==r}),(function(t,e,r,n){return!vr(0,e,r,n)})),_r=yr(\"<\",(function(t,e,r){return e\",(function(t,e,r){return e>r}),(function(t,e,r,n){return n.compare(e,r)>0})),Tr=yr(\"<=\",(function(t,e,r){return e<=r}),(function(t,e,r,n){return n.compare(e,r)<=0})),kr=yr(\">=\",(function(t,e,r){return e>=r}),(function(t,e,r,n){return n.compare(e,r)>=0})),Ar=function(t,e,r,n,i){this.type=Nt,this.number=t,this.locale=e,this.currency=r,this.minFractionDigits=n,this.maxFractionDigits=i};Ar.parse=function(t,e){if(3!==t.length)return e.error(\"Expected two arguments.\");var r=e.parse(t[1],1,Bt);if(!r)return null;var n=t[2];if(\"object\"!=typeof n||Array.isArray(n))return e.error(\"NumberFormat options argument must be an object.\");var i=null;if(n.locale&&!(i=e.parse(n.locale,1,Nt)))return null;var a=null;if(n.currency&&!(a=e.parse(n.currency,1,Nt)))return null;var o=null;if(n[\"min-fraction-digits\"]&&!(o=e.parse(n[\"min-fraction-digits\"],1,Bt)))return null;var s=null;return n[\"max-fraction-digits\"]&&!(s=e.parse(n[\"max-fraction-digits\"],1,Bt))?null:new Ar(r,i,a,o,s)},Ar.prototype.evaluate=function(t){return new Intl.NumberFormat(this.locale?this.locale.evaluate(t):[],{style:this.currency?\"currency\":\"decimal\",currency:this.currency?this.currency.evaluate(t):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(t):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(t):void 0}).format(this.number.evaluate(t))},Ar.prototype.eachChild=function(t){t(this.number),this.locale&&t(this.locale),this.currency&&t(this.currency),this.minFractionDigits&&t(this.minFractionDigits),this.maxFractionDigits&&t(this.maxFractionDigits)},Ar.prototype.outputDefined=function(){return!1},Ar.prototype.serialize=function(){var t={};return this.locale&&(t.locale=this.locale.serialize()),this.currency&&(t.currency=this.currency.serialize()),this.minFractionDigits&&(t[\"min-fraction-digits\"]=this.minFractionDigits.serialize()),this.maxFractionDigits&&(t[\"max-fraction-digits\"]=this.maxFractionDigits.serialize()),[\"number-format\",this.number.serialize(),t]};var Mr=function(t){this.type=Bt,this.input=t};Mr.parse=function(t,e){if(2!==t.length)return e.error(\"Expected 1 argument, but found \"+(t.length-1)+\" instead.\");var r=e.parse(t[1],1);return r?\"array\"!==r.type.kind&&\"string\"!==r.type.kind&&\"value\"!==r.type.kind?e.error(\"Expected argument of type string or array, but found \"+Xt(r.type)+\" instead.\"):new Mr(r):null},Mr.prototype.evaluate=function(t){var e=this.input.evaluate(t);if(\"string\"==typeof e)return e.length;if(Array.isArray(e))return e.length;throw new ue(\"Expected value to be of type string or array, but found \"+Xt(se(e))+\" instead.\")},Mr.prototype.eachChild=function(t){t(this.input)},Mr.prototype.outputDefined=function(){return!1},Mr.prototype.serialize=function(){var t=[\"length\"];return this.eachChild((function(e){t.push(e.serialize())})),t};var Sr={\"==\":xr,\"!=\":br,\">\":wr,\"<\":_r,\">=\":kr,\"<=\":Tr,array:he,at:ur,boolean:he,case:dr,coalesce:lr,collator:be,format:pe,image:de,in:fr,\"index-of\":hr,interpolate:or,\"interpolate-hcl\":or,\"interpolate-lab\":or,length:Mr,let:cr,literal:ce,match:pr,number:he,\"number-format\":Ar,object:he,slice:gr,step:He,string:he,\"to-boolean\":me,\"to-color\":me,\"to-number\":me,\"to-string\":me,var:je,within:Re};function Er(t,e){var r=e[0],n=e[1],i=e[2],a=e[3];r=r.evaluate(t),n=n.evaluate(t),i=i.evaluate(t);var o=a?a.evaluate(t):1,s=ae(r,n,i,o);if(s)throw new ue(s);return new te(r/255*o,n/255*o,i/255*o,o)}function Lr(t,e){return t in e}function Cr(t,e){var r=e[t];return void 0===r?null:r}function Pr(t){return{type:t}}function Ir(t){return{result:\"success\",value:t}}function Or(t){return{result:\"error\",value:t}}function zr(t){return\"data-driven\"===t[\"property-type\"]||\"cross-faded-data-driven\"===t[\"property-type\"]}function Dr(t){return!!t.expression&&t.expression.parameters.indexOf(\"zoom\")>-1}function Rr(t){return!!t.expression&&t.expression.interpolated}function Fr(t){return t instanceof Number?\"number\":t instanceof String?\"string\":t instanceof Boolean?\"boolean\":Array.isArray(t)?\"array\":null===t?\"null\":typeof t}function Br(t){return\"object\"==typeof t&&null!==t&&!Array.isArray(t)}function Nr(t){return t}function jr(t,e,r){return void 0!==t?t:void 0!==e?e:void 0!==r?r:void 0}function Ur(t,e,r,n,i){return jr(typeof r===i?n[r]:void 0,t.default,e.default)}function Vr(t,e,r){if(\"number\"!==Fr(r))return jr(t.default,e.default);var n=t.stops.length;if(1===n)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[n-1][0])return t.stops[n-1][1];var i=Ve(t.stops.map((function(t){return t[0]})),r);return t.stops[i][1]}function Hr(t,e,r){var n=void 0!==t.base?t.base:1;if(\"number\"!==Fr(r))return jr(t.default,e.default);var i=t.stops.length;if(1===i)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[i-1][0])return t.stops[i-1][1];var a=Ve(t.stops.map((function(t){return t[0]})),r),o=function(t,e,r,n){var i=n-r,a=t-r;return 0===i?0:1===e?a/i:(Math.pow(e,a)-1)/(Math.pow(e,i)-1)}(r,n,t.stops[a][0],t.stops[a+1][0]),s=t.stops[a][1],l=t.stops[a+1][1],c=Ge[e.type]||Nr;if(t.colorSpace&&\"rgb\"!==t.colorSpace){var u=ar[t.colorSpace];c=function(t,e){return u.reverse(u.interpolate(u.forward(t),u.forward(e),o))}}return\"function\"==typeof s.evaluate?{evaluate:function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var r=s.evaluate.apply(void 0,t),n=l.evaluate.apply(void 0,t);if(void 0!==r&&void 0!==n)return c(r,n,o)}}:c(s,l,o)}function qr(t,e,r){return\"color\"===e.type?r=te.parse(r):\"formatted\"===e.type?r=ne.fromString(r.toString()):\"resolvedImage\"===e.type?r=ie.fromString(r.toString()):Fr(r)===e.type||\"enum\"===e.type&&e.values[r]||(r=void 0),jr(r,t.default,e.default)}xe.register(Sr,{error:[{kind:\"error\"},[Nt],function(t,e){var r=e[0];throw new ue(r.evaluate(t))}],typeof:[Nt,[Ht],function(t,e){return Xt(se(e[0].evaluate(t)))}],\"to-rgba\":[Wt(Bt,4),[Ut],function(t,e){return e[0].evaluate(t).toArray()}],rgb:[Ut,[Bt,Bt,Bt],Er],rgba:[Ut,[Bt,Bt,Bt,Bt],Er],has:{type:jt,overloads:[[[Nt],function(t,e){return Lr(e[0].evaluate(t),t.properties())}],[[Nt,Vt],function(t,e){var r=e[0],n=e[1];return Lr(r.evaluate(t),n.evaluate(t))}]]},get:{type:Ht,overloads:[[[Nt],function(t,e){return Cr(e[0].evaluate(t),t.properties())}],[[Nt,Vt],function(t,e){var r=e[0],n=e[1];return Cr(r.evaluate(t),n.evaluate(t))}]]},\"feature-state\":[Ht,[Nt],function(t,e){return Cr(e[0].evaluate(t),t.featureState||{})}],properties:[Vt,[],function(t){return t.properties()}],\"geometry-type\":[Nt,[],function(t){return t.geometryType()}],id:[Ht,[],function(t){return t.id()}],zoom:[Bt,[],function(t){return t.globals.zoom}],\"heatmap-density\":[Bt,[],function(t){return t.globals.heatmapDensity||0}],\"line-progress\":[Bt,[],function(t){return t.globals.lineProgress||0}],accumulated:[Ht,[],function(t){return void 0===t.globals.accumulated?null:t.globals.accumulated}],\"+\":[Bt,Pr(Bt),function(t,e){for(var r=0,n=0,i=e;n\":[jt,[Nt,Ht],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i>a}],\"filter-id->\":[jt,[Ht],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n>i}],\"filter-<=\":[jt,[Nt,Ht],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i<=a}],\"filter-id-<=\":[jt,[Ht],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n<=i}],\"filter->=\":[jt,[Nt,Ht],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i>=a}],\"filter-id->=\":[jt,[Ht],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n>=i}],\"filter-has\":[jt,[Ht],function(t,e){return e[0].value in t.properties()}],\"filter-has-id\":[jt,[],function(t){return null!==t.id()&&void 0!==t.id()}],\"filter-type-in\":[jt,[Wt(Nt)],function(t,e){return e[0].value.indexOf(t.geometryType())>=0}],\"filter-id-in\":[jt,[Wt(Ht)],function(t,e){return e[0].value.indexOf(t.id())>=0}],\"filter-in-small\":[jt,[Nt,Wt(Ht)],function(t,e){var r=e[0];return e[1].value.indexOf(t.properties()[r.value])>=0}],\"filter-in-large\":[jt,[Nt,Wt(Ht)],function(t,e){var r=e[0],n=e[1];return function(t,e,r,n){for(;r<=n;){var i=r+n>>1;if(e[i]===t)return!0;e[i]>t?n=i-1:r=i+1}return!1}(t.properties()[r.value],n.value,0,n.value.length-1)}],all:{type:jt,overloads:[[[jt,jt],function(t,e){var r=e[0],n=e[1];return r.evaluate(t)&&n.evaluate(t)}],[Pr(jt),function(t,e){for(var r=0,n=e;r0&&\"string\"==typeof t[0]&&t[0]in Sr}function Wr(t,e){var r=new Ue(Sr,[],e?function(t){var e={color:Ut,string:Nt,number:Bt,enum:Nt,boolean:jt,formatted:Gt,resolvedImage:Yt};if(\"array\"===t.type)return Wt(e[t.value]||Ht,t.length);return e[t.type]}(e):void 0),n=r.parse(t,void 0,void 0,void 0,e&&\"string\"===e.type?{typeAnnotation:\"coerce\"}:void 0);return n?Ir(new Gr(n,e)):Or(r.errors)}Gr.prototype.evaluateWithoutErrorHandling=function(t,e,r,n,i,a){return this._evaluator.globals=t,this._evaluator.feature=e,this._evaluator.featureState=r,this._evaluator.canonical=n,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=a,this.expression.evaluate(this._evaluator)},Gr.prototype.evaluate=function(t,e,r,n,i,a){this._evaluator.globals=t,this._evaluator.feature=e||null,this._evaluator.featureState=r||null,this._evaluator.canonical=n,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=a||null;try{var o=this.expression.evaluate(this._evaluator);if(null==o||\"number\"==typeof o&&o!=o)return this._defaultValue;if(this._enumValues&&!(o in this._enumValues))throw new ue(\"Expected value to be one of \"+Object.keys(this._enumValues).map((function(t){return JSON.stringify(t)})).join(\", \")+\", but found \"+JSON.stringify(o)+\" instead.\");return o}catch(t){return this._warningHistory[t.message]||(this._warningHistory[t.message]=!0,\"undefined\"!=typeof console&&console.warn(t.message)),this._defaultValue}};var Xr=function(t,e){this.kind=t,this._styleExpression=e,this.isStateDependent=\"constant\"!==t&&!Be(e.expression)};Xr.prototype.evaluateWithoutErrorHandling=function(t,e,r,n,i,a){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r,n,i,a)},Xr.prototype.evaluate=function(t,e,r,n,i,a){return this._styleExpression.evaluate(t,e,r,n,i,a)};var Zr=function(t,e,r,n){this.kind=t,this.zoomStops=r,this._styleExpression=e,this.isStateDependent=\"camera\"!==t&&!Be(e.expression),this.interpolationType=n};function Jr(t,e){if(\"error\"===(t=Wr(t,e)).result)return t;var r=t.value.expression,n=Fe(r);if(!n&&!zr(e))return Or([new Dt(\"\",\"data expressions not supported\")]);var i=Ne(r,[\"zoom\"]);if(!i&&!Dr(e))return Or([new Dt(\"\",\"zoom expressions not supported\")]);var a=function t(e){var r=null;if(e instanceof cr)r=t(e.result);else if(e instanceof lr)for(var n=0,i=e.args;nn.maximum?[new Ct(e,r,r+\" is greater than the maximum value \"+n.maximum)]:[]}function en(t){var e,r,n,i=t.valueSpec,a=Ot(t.value.type),o={},s=\"categorical\"!==a&&void 0===t.value.property,l=!s,c=\"array\"===Fr(t.value.stops)&&\"array\"===Fr(t.value.stops[0])&&\"object\"===Fr(t.value.stops[0][0]),u=Qr({key:t.key,value:t.value,valueSpec:t.styleSpec.function,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{stops:function(t){if(\"identity\"===a)return[new Ct(t.key,t.value,'identity function may not have a \"stops\" property')];var e=[],r=t.value;e=e.concat($r({key:t.key,value:r,valueSpec:t.valueSpec,style:t.style,styleSpec:t.styleSpec,arrayElementValidator:f})),\"array\"===Fr(r)&&0===r.length&&e.push(new Ct(t.key,r,\"array must have at least one stop\"));return e},default:function(t){return kn({key:t.key,value:t.value,valueSpec:i,style:t.style,styleSpec:t.styleSpec})}}});return\"identity\"===a&&s&&u.push(new Ct(t.key,t.value,'missing required property \"property\"')),\"identity\"===a||t.value.stops||u.push(new Ct(t.key,t.value,'missing required property \"stops\"')),\"exponential\"===a&&t.valueSpec.expression&&!Rr(t.valueSpec)&&u.push(new Ct(t.key,t.value,\"exponential functions not supported\")),t.styleSpec.$version>=8&&(l&&!zr(t.valueSpec)?u.push(new Ct(t.key,t.value,\"property functions not supported\")):s&&!Dr(t.valueSpec)&&u.push(new Ct(t.key,t.value,\"zoom functions not supported\"))),\"categorical\"!==a&&!c||void 0!==t.value.property||u.push(new Ct(t.key,t.value,'\"property\" property is required')),u;function f(t){var e=[],a=t.value,s=t.key;if(\"array\"!==Fr(a))return[new Ct(s,a,\"array expected, \"+Fr(a)+\" found\")];if(2!==a.length)return[new Ct(s,a,\"array length 2 expected, length \"+a.length+\" found\")];if(c){if(\"object\"!==Fr(a[0]))return[new Ct(s,a,\"object expected, \"+Fr(a[0])+\" found\")];if(void 0===a[0].zoom)return[new Ct(s,a,\"object stop key must have zoom\")];if(void 0===a[0].value)return[new Ct(s,a,\"object stop key must have value\")];if(n&&n>Ot(a[0].zoom))return[new Ct(s,a[0].zoom,\"stop zoom values must appear in ascending order\")];Ot(a[0].zoom)!==n&&(n=Ot(a[0].zoom),r=void 0,o={}),e=e.concat(Qr({key:s+\"[0]\",value:a[0],valueSpec:{zoom:{}},style:t.style,styleSpec:t.styleSpec,objectElementValidators:{zoom:tn,value:h}}))}else e=e.concat(h({key:s+\"[0]\",value:a[0],valueSpec:{},style:t.style,styleSpec:t.styleSpec},a));return Yr(zt(a[1]))?e.concat([new Ct(s+\"[1]\",a[1],\"expressions are not allowed in function stops.\")]):e.concat(kn({key:s+\"[1]\",value:a[1],valueSpec:i,style:t.style,styleSpec:t.styleSpec}))}function h(t,n){var s=Fr(t.value),l=Ot(t.value),c=null!==t.value?t.value:n;if(e){if(s!==e)return[new Ct(t.key,c,s+\" stop domain type must match previous stop domain type \"+e)]}else e=s;if(\"number\"!==s&&\"string\"!==s&&\"boolean\"!==s)return[new Ct(t.key,c,\"stop domain value must be a number, string, or boolean\")];if(\"number\"!==s&&\"categorical\"!==a){var u=\"number expected, \"+s+\" found\";return zr(i)&&void 0===a&&(u+='\\nIf you intended to use a categorical function, specify `\"type\": \"categorical\"`.'),[new Ct(t.key,c,u)]}return\"categorical\"!==a||\"number\"!==s||isFinite(l)&&Math.floor(l)===l?\"categorical\"!==a&&\"number\"===s&&void 0!==r&&l=2&&\"$id\"!==t[1]&&\"$type\"!==t[1];case\"in\":return t.length>=3&&(\"string\"!=typeof t[1]||Array.isArray(t[2]));case\"!in\":case\"!has\":case\"none\":return!1;case\"==\":case\"!=\":case\">\":case\">=\":case\"<\":case\"<=\":return 3!==t.length||Array.isArray(t[1])||Array.isArray(t[2]);case\"any\":case\"all\":for(var e=0,r=t.slice(1);ee?1:0}function cn(t){if(!t)return!0;var e,r=t[0];return t.length<=1?\"any\"!==r:\"==\"===r?un(t[1],t[2],\"==\"):\"!=\"===r?pn(un(t[1],t[2],\"==\")):\"<\"===r||\">\"===r||\"<=\"===r||\">=\"===r?un(t[1],t[2],r):\"any\"===r?(e=t.slice(1),[\"any\"].concat(e.map(cn))):\"all\"===r?[\"all\"].concat(t.slice(1).map(cn)):\"none\"===r?[\"all\"].concat(t.slice(1).map(cn).map(pn)):\"in\"===r?fn(t[1],t.slice(2)):\"!in\"===r?pn(fn(t[1],t.slice(2))):\"has\"===r?hn(t[1]):\"!has\"===r?pn(hn(t[1])):\"within\"!==r||t}function un(t,e,r){switch(t){case\"$type\":return[\"filter-type-\"+r,e];case\"$id\":return[\"filter-id-\"+r,e];default:return[\"filter-\"+r,t,e]}}function fn(t,e){if(0===e.length)return!1;switch(t){case\"$type\":return[\"filter-type-in\",[\"literal\",e]];case\"$id\":return[\"filter-id-in\",[\"literal\",e]];default:return e.length>200&&!e.some((function(t){return typeof t!=typeof e[0]}))?[\"filter-in-large\",t,[\"literal\",e.sort(ln)]]:[\"filter-in-small\",t,[\"literal\",e]]}}function hn(t){switch(t){case\"$type\":return!0;case\"$id\":return[\"filter-has-id\"];default:return[\"filter-has\",t]}}function pn(t){return[\"!\",t]}function dn(t){return an(zt(t.value))?rn(It({},t,{expressionContext:\"filter\",valueSpec:{value:\"boolean\"}})):function t(e){var r=e.value,n=e.key;if(\"array\"!==Fr(r))return[new Ct(n,r,\"array expected, \"+Fr(r)+\" found\")];var i,a=e.styleSpec,o=[];if(r.length<1)return[new Ct(n,r,\"filter array must have at least 1 element\")];switch(o=o.concat(nn({key:n+\"[0]\",value:r[0],valueSpec:a.filter_operator,style:e.style,styleSpec:e.styleSpec})),Ot(r[0])){case\"<\":case\"<=\":case\">\":case\">=\":r.length>=2&&\"$type\"===Ot(r[1])&&o.push(new Ct(n,r,'\"$type\" cannot be use with operator \"'+r[0]+'\"'));case\"==\":case\"!=\":3!==r.length&&o.push(new Ct(n,r,'filter array for operator \"'+r[0]+'\" must have 3 elements'));case\"in\":case\"!in\":r.length>=2&&\"string\"!==(i=Fr(r[1]))&&o.push(new Ct(n+\"[1]\",r[1],\"string expected, \"+i+\" found\"));for(var s=2;s=u[p+0]&&n>=u[p+1])?(o[h]=!0,a.push(c[h])):o[h]=!1}}},Dn.prototype._forEachCell=function(t,e,r,n,i,a,o,s){for(var l=this._convertToCellCoord(t),c=this._convertToCellCoord(e),u=this._convertToCellCoord(r),f=this._convertToCellCoord(n),h=l;h<=u;h++)for(var p=c;p<=f;p++){var d=this.d*p+h;if((!s||s(this._convertFromCellCoord(h),this._convertFromCellCoord(p),this._convertFromCellCoord(h+1),this._convertFromCellCoord(p+1)))&&i.call(this,t,e,r,n,d,a,o,s))return}},Dn.prototype._convertFromCellCoord=function(t){return(t-this.padding)/this.scale},Dn.prototype._convertToCellCoord=function(t){return Math.max(0,Math.min(this.d-1,Math.floor(t*this.scale)+this.padding))},Dn.prototype.toArrayBuffer=function(){if(this.arrayBuffer)return this.arrayBuffer;for(var t=this.cells,e=3+this.cells.length+1+1,r=0,n=0;n=0)){var f=t[u];c[u]=Bn[l].shallow.indexOf(u)>=0?f:Hn(f,e)}t instanceof Error&&(c.message=t.message)}if(c.$name)throw new Error(\"$name property is reserved for worker serialization logic.\");return\"Object\"!==l&&(c.$name=l),c}throw new Error(\"can't serialize object of type \"+typeof t)}function qn(t){if(null==t||\"boolean\"==typeof t||\"number\"==typeof t||\"string\"==typeof t||t instanceof Boolean||t instanceof Number||t instanceof String||t instanceof Date||t instanceof RegExp||Un(t)||Vn(t)||ArrayBuffer.isView(t)||t instanceof Rn)return t;if(Array.isArray(t))return t.map(qn);if(\"object\"==typeof t){var e=t.$name||\"Object\",r=Bn[e].klass;if(!r)throw new Error(\"can't deserialize unregistered class \"+e);if(r.deserialize)return r.deserialize(t);for(var n=Object.create(r.prototype),i=0,a=Object.keys(t);i=0?s:qn(s)}}return n}throw new Error(\"can't deserialize object of type \"+typeof t)}var Gn=function(){this.first=!0};Gn.prototype.update=function(t,e){var r=Math.floor(t);return this.first?(this.first=!1,this.lastIntegerZoom=r,this.lastIntegerZoomTime=0,this.lastZoom=t,this.lastFloorZoom=r,!0):(this.lastFloorZoom>r?(this.lastIntegerZoom=r+1,this.lastIntegerZoomTime=e):this.lastFloorZoom=128&&t<=255},Arabic:function(t){return t>=1536&&t<=1791},\"Arabic Supplement\":function(t){return t>=1872&&t<=1919},\"Arabic Extended-A\":function(t){return t>=2208&&t<=2303},\"Hangul Jamo\":function(t){return t>=4352&&t<=4607},\"Unified Canadian Aboriginal Syllabics\":function(t){return t>=5120&&t<=5759},Khmer:function(t){return t>=6016&&t<=6143},\"Unified Canadian Aboriginal Syllabics Extended\":function(t){return t>=6320&&t<=6399},\"General Punctuation\":function(t){return t>=8192&&t<=8303},\"Letterlike Symbols\":function(t){return t>=8448&&t<=8527},\"Number Forms\":function(t){return t>=8528&&t<=8591},\"Miscellaneous Technical\":function(t){return t>=8960&&t<=9215},\"Control Pictures\":function(t){return t>=9216&&t<=9279},\"Optical Character Recognition\":function(t){return t>=9280&&t<=9311},\"Enclosed Alphanumerics\":function(t){return t>=9312&&t<=9471},\"Geometric Shapes\":function(t){return t>=9632&&t<=9727},\"Miscellaneous Symbols\":function(t){return t>=9728&&t<=9983},\"Miscellaneous Symbols and Arrows\":function(t){return t>=11008&&t<=11263},\"CJK Radicals Supplement\":function(t){return t>=11904&&t<=12031},\"Kangxi Radicals\":function(t){return t>=12032&&t<=12255},\"Ideographic Description Characters\":function(t){return t>=12272&&t<=12287},\"CJK Symbols and Punctuation\":function(t){return t>=12288&&t<=12351},Hiragana:function(t){return t>=12352&&t<=12447},Katakana:function(t){return t>=12448&&t<=12543},Bopomofo:function(t){return t>=12544&&t<=12591},\"Hangul Compatibility Jamo\":function(t){return t>=12592&&t<=12687},Kanbun:function(t){return t>=12688&&t<=12703},\"Bopomofo Extended\":function(t){return t>=12704&&t<=12735},\"CJK Strokes\":function(t){return t>=12736&&t<=12783},\"Katakana Phonetic Extensions\":function(t){return t>=12784&&t<=12799},\"Enclosed CJK Letters and Months\":function(t){return t>=12800&&t<=13055},\"CJK Compatibility\":function(t){return t>=13056&&t<=13311},\"CJK Unified Ideographs Extension A\":function(t){return t>=13312&&t<=19903},\"Yijing Hexagram Symbols\":function(t){return t>=19904&&t<=19967},\"CJK Unified Ideographs\":function(t){return t>=19968&&t<=40959},\"Yi Syllables\":function(t){return t>=40960&&t<=42127},\"Yi Radicals\":function(t){return t>=42128&&t<=42191},\"Hangul Jamo Extended-A\":function(t){return t>=43360&&t<=43391},\"Hangul Syllables\":function(t){return t>=44032&&t<=55215},\"Hangul Jamo Extended-B\":function(t){return t>=55216&&t<=55295},\"Private Use Area\":function(t){return t>=57344&&t<=63743},\"CJK Compatibility Ideographs\":function(t){return t>=63744&&t<=64255},\"Arabic Presentation Forms-A\":function(t){return t>=64336&&t<=65023},\"Vertical Forms\":function(t){return t>=65040&&t<=65055},\"CJK Compatibility Forms\":function(t){return t>=65072&&t<=65103},\"Small Form Variants\":function(t){return t>=65104&&t<=65135},\"Arabic Presentation Forms-B\":function(t){return t>=65136&&t<=65279},\"Halfwidth and Fullwidth Forms\":function(t){return t>=65280&&t<=65519}};function Wn(t){for(var e=0,r=t;e=65097&&t<=65103)||(!!Yn[\"CJK Compatibility Ideographs\"](t)||(!!Yn[\"CJK Compatibility\"](t)||(!!Yn[\"CJK Radicals Supplement\"](t)||(!!Yn[\"CJK Strokes\"](t)||(!(!Yn[\"CJK Symbols and Punctuation\"](t)||t>=12296&&t<=12305||t>=12308&&t<=12319||12336===t)||(!!Yn[\"CJK Unified Ideographs Extension A\"](t)||(!!Yn[\"CJK Unified Ideographs\"](t)||(!!Yn[\"Enclosed CJK Letters and Months\"](t)||(!!Yn[\"Hangul Compatibility Jamo\"](t)||(!!Yn[\"Hangul Jamo Extended-A\"](t)||(!!Yn[\"Hangul Jamo Extended-B\"](t)||(!!Yn[\"Hangul Jamo\"](t)||(!!Yn[\"Hangul Syllables\"](t)||(!!Yn.Hiragana(t)||(!!Yn[\"Ideographic Description Characters\"](t)||(!!Yn.Kanbun(t)||(!!Yn[\"Kangxi Radicals\"](t)||(!!Yn[\"Katakana Phonetic Extensions\"](t)||(!(!Yn.Katakana(t)||12540===t)||(!(!Yn[\"Halfwidth and Fullwidth Forms\"](t)||65288===t||65289===t||65293===t||t>=65306&&t<=65310||65339===t||65341===t||65343===t||t>=65371&&t<=65503||65507===t||t>=65512&&t<=65519)||(!(!Yn[\"Small Form Variants\"](t)||t>=65112&&t<=65118||t>=65123&&t<=65126)||(!!Yn[\"Unified Canadian Aboriginal Syllabics\"](t)||(!!Yn[\"Unified Canadian Aboriginal Syllabics Extended\"](t)||(!!Yn[\"Vertical Forms\"](t)||(!!Yn[\"Yijing Hexagram Symbols\"](t)||(!!Yn[\"Yi Syllables\"](t)||!!Yn[\"Yi Radicals\"](t))))))))))))))))))))))))))))))}function Jn(t){return!(Zn(t)||function(t){return!(!Yn[\"Latin-1 Supplement\"](t)||167!==t&&169!==t&&174!==t&&177!==t&&188!==t&&189!==t&&190!==t&&215!==t&&247!==t)||(!(!Yn[\"General Punctuation\"](t)||8214!==t&&8224!==t&&8225!==t&&8240!==t&&8241!==t&&8251!==t&&8252!==t&&8258!==t&&8263!==t&&8264!==t&&8265!==t&&8273!==t)||(!!Yn[\"Letterlike Symbols\"](t)||(!!Yn[\"Number Forms\"](t)||(!(!Yn[\"Miscellaneous Technical\"](t)||!(t>=8960&&t<=8967||t>=8972&&t<=8991||t>=8996&&t<=9e3||9003===t||t>=9085&&t<=9114||t>=9150&&t<=9165||9167===t||t>=9169&&t<=9179||t>=9186&&t<=9215))||(!(!Yn[\"Control Pictures\"](t)||9251===t)||(!!Yn[\"Optical Character Recognition\"](t)||(!!Yn[\"Enclosed Alphanumerics\"](t)||(!!Yn[\"Geometric Shapes\"](t)||(!(!Yn[\"Miscellaneous Symbols\"](t)||t>=9754&&t<=9759)||(!(!Yn[\"Miscellaneous Symbols and Arrows\"](t)||!(t>=11026&&t<=11055||t>=11088&&t<=11097||t>=11192&&t<=11243))||(!!Yn[\"CJK Symbols and Punctuation\"](t)||(!!Yn.Katakana(t)||(!!Yn[\"Private Use Area\"](t)||(!!Yn[\"CJK Compatibility Forms\"](t)||(!!Yn[\"Small Form Variants\"](t)||(!!Yn[\"Halfwidth and Fullwidth Forms\"](t)||(8734===t||8756===t||8757===t||t>=9984&&t<=10087||t>=10102&&t<=10131||65532===t||65533===t)))))))))))))))))}(t))}function Kn(t){return t>=1424&&t<=2303||Yn[\"Arabic Presentation Forms-A\"](t)||Yn[\"Arabic Presentation Forms-B\"](t)}function Qn(t,e){return!(!e&&Kn(t))&&!(t>=2304&&t<=3583||t>=3840&&t<=4255||Yn.Khmer(t))}function $n(t){for(var e=0,r=t;e-1&&(ai=ni),ii&&ii(t)};function li(){ci.fire(new Mt(\"pluginStateChange\",{pluginStatus:ai,pluginURL:oi}))}var ci=new Et,ui=function(){return ai},fi=function(){if(ai!==ti||!oi)throw new Error(\"rtl-text-plugin cannot be downloaded unless a pluginURL is specified\");ai=ei,li(),oi&&xt({url:oi},(function(t){t?si(t):(ai=ri,li())}))},hi={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isLoaded:function(){return ai===ri||null!=hi.applyArabicShaping},isLoading:function(){return ai===ei},setState:function(t){ai=t.pluginStatus,oi=t.pluginURL},isParsed:function(){return null!=hi.applyArabicShaping&&null!=hi.processBidirectionalText&&null!=hi.processStyledBidirectionalText},getPluginURL:function(){return oi}},pi=function(t,e){this.zoom=t,e?(this.now=e.now,this.fadeDuration=e.fadeDuration,this.zoomHistory=e.zoomHistory,this.transition=e.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new Gn,this.transition={})};pi.prototype.isSupportedScript=function(t){return function(t,e){for(var r=0,n=t;rthis.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:e+(1-e)*r}:{fromScale:.5,toScale:1,t:1-(1-r)*e}};var di=function(t,e){this.property=t,this.value=e,this.expression=function(t,e){if(Br(t))return new Kr(t,e);if(Yr(t)){var r=Jr(t,e);if(\"error\"===r.result)throw new Error(r.value.map((function(t){return t.key+\": \"+t.message})).join(\", \"));return r.value}var n=t;return\"string\"==typeof t&&\"color\"===e.type&&(n=te.parse(t)),{kind:\"constant\",evaluate:function(){return n}}}(void 0===e?t.specification.default:e,t.specification)};di.prototype.isDataDriven=function(){return\"source\"===this.expression.kind||\"composite\"===this.expression.kind},di.prototype.possiblyEvaluate=function(t,e,r){return this.property.possiblyEvaluate(this,t,e,r)};var gi=function(t){this.property=t,this.value=new di(t,void 0)};gi.prototype.transitioned=function(t,e){return new vi(this.property,this.value,e,u({},t.transition,this.transition),t.now)},gi.prototype.untransitioned=function(){return new vi(this.property,this.value,null,{},0)};var mi=function(t){this._properties=t,this._values=Object.create(t.defaultTransitionablePropertyValues)};mi.prototype.getValue=function(t){return x(this._values[t].value.value)},mi.prototype.setValue=function(t,e){this._values.hasOwnProperty(t)||(this._values[t]=new gi(this._values[t].property)),this._values[t].value=new di(this._values[t].property,null===e?void 0:x(e))},mi.prototype.getTransition=function(t){return x(this._values[t].transition)},mi.prototype.setTransition=function(t,e){this._values.hasOwnProperty(t)||(this._values[t]=new gi(this._values[t].property)),this._values[t].transition=x(e)||void 0},mi.prototype.serialize=function(){for(var t={},e=0,r=Object.keys(this._values);ethis.end)return this.prior=null,i;if(this.value.isDataDriven())return this.prior=null,i;if(n=1)return 1;var e=t*t,r=e*t;return 4*(t<.5?r:3*(t-e)+r-.75)}(o))}return i};var yi=function(t){this._properties=t,this._values=Object.create(t.defaultTransitioningPropertyValues)};yi.prototype.possiblyEvaluate=function(t,e,r){for(var n=new _i(this._properties),i=0,a=Object.keys(this._values);in.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}},e.prototype.interpolate=function(t){return t},e}(Ti),Ai=function(t){this.specification=t};Ai.prototype.possiblyEvaluate=function(t,e,r,n){if(void 0!==t.value){if(\"constant\"===t.expression.kind){var i=t.expression.evaluate(e,null,{},r,n);return this._calculate(i,i,i,e)}return this._calculate(t.expression.evaluate(new pi(Math.floor(e.zoom-1),e)),t.expression.evaluate(new pi(Math.floor(e.zoom),e)),t.expression.evaluate(new pi(Math.floor(e.zoom+1),e)),e)}},Ai.prototype._calculate=function(t,e,r,n){return n.zoom>n.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}},Ai.prototype.interpolate=function(t){return t};var Mi=function(t){this.specification=t};Mi.prototype.possiblyEvaluate=function(t,e,r,n){return!!t.expression.evaluate(e,null,{},r,n)},Mi.prototype.interpolate=function(){return!1};var Si=function(t){for(var e in this.properties=t,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[],t){var r=t[e];r.specification.overridable&&this.overridableProperties.push(e);var n=this.defaultPropertyValues[e]=new di(r,void 0),i=this.defaultTransitionablePropertyValues[e]=new gi(r);this.defaultTransitioningPropertyValues[e]=i.untransitioned(),this.defaultPossiblyEvaluatedValues[e]=n.possiblyEvaluate({})}};Nn(\"DataDrivenProperty\",Ti),Nn(\"DataConstantProperty\",wi),Nn(\"CrossFadedDataDrivenProperty\",ki),Nn(\"CrossFadedProperty\",Ai),Nn(\"ColorRampProperty\",Mi);var Ei=function(t){function e(e,r){if(t.call(this),this.id=e.id,this.type=e.type,this._featureFilter={filter:function(){return!0},needGeometry:!1},\"custom\"!==e.type&&(e=e,this.metadata=e.metadata,this.minzoom=e.minzoom,this.maxzoom=e.maxzoom,\"background\"!==e.type&&(this.source=e.source,this.sourceLayer=e[\"source-layer\"],this.filter=e.filter),r.layout&&(this._unevaluatedLayout=new xi(r.layout)),r.paint)){for(var n in this._transitionablePaint=new mi(r.paint),e.paint)this.setPaintProperty(n,e.paint[n],{validate:!1});for(var i in e.layout)this.setLayoutProperty(i,e.layout[i],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new _i(r.paint)}}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getCrossfadeParameters=function(){return this._crossfadeParameters},e.prototype.getLayoutProperty=function(t){return\"visibility\"===t?this.visibility:this._unevaluatedLayout.getValue(t)},e.prototype.setLayoutProperty=function(t,e,r){if(void 0===r&&(r={}),null!=e){var n=\"layers.\"+this.id+\".layout.\"+t;if(this._validate(In,n,t,e,r))return}\"visibility\"!==t?this._unevaluatedLayout.setValue(t,e):this.visibility=e},e.prototype.getPaintProperty=function(t){return m(t,\"-transition\")?this._transitionablePaint.getTransition(t.slice(0,-\"-transition\".length)):this._transitionablePaint.getValue(t)},e.prototype.setPaintProperty=function(t,e,r){if(void 0===r&&(r={}),null!=e){var n=\"layers.\"+this.id+\".paint.\"+t;if(this._validate(Pn,n,t,e,r))return!1}if(m(t,\"-transition\"))return this._transitionablePaint.setTransition(t.slice(0,-\"-transition\".length),e||void 0),!1;var i=this._transitionablePaint._values[t],a=\"cross-faded-data-driven\"===i.property.specification[\"property-type\"],o=i.value.isDataDriven(),s=i.value;this._transitionablePaint.setValue(t,e),this._handleSpecialPaintPropertyUpdate(t);var l=this._transitionablePaint._values[t].value;return l.isDataDriven()||o||a||this._handleOverridablePaintPropertyUpdate(t,s,l)},e.prototype._handleSpecialPaintPropertyUpdate=function(t){},e.prototype._handleOverridablePaintPropertyUpdate=function(t,e,r){return!1},e.prototype.isHidden=function(t){return!!(this.minzoom&&t=this.maxzoom)||\"none\"===this.visibility)},e.prototype.updateTransitions=function(t){this._transitioningPaint=this._transitionablePaint.transitioned(t,this._transitioningPaint)},e.prototype.hasTransition=function(){return this._transitioningPaint.hasTransition()},e.prototype.recalculate=function(t,e){t.getCrossfadeParameters&&(this._crossfadeParameters=t.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(t,void 0,e)),this.paint=this._transitioningPaint.possiblyEvaluate(t,void 0,e)},e.prototype.serialize=function(){var t={id:this.id,type:this.type,source:this.source,\"source-layer\":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(t.layout=t.layout||{},t.layout.visibility=this.visibility),y(t,(function(t,e){return!(void 0===t||\"layout\"===e&&!Object.keys(t).length||\"paint\"===e&&!Object.keys(t).length)}))},e.prototype._validate=function(t,e,r,n,i){return void 0===i&&(i={}),(!i||!1!==i.validate)&&On(this,t.call(Ln,{key:e,layerType:this.type,objectKey:r,value:n,styleSpec:Lt,style:{glyphs:!0,sprite:!0}}))},e.prototype.is3D=function(){return!1},e.prototype.isTileClipped=function(){return!1},e.prototype.hasOffscreenPass=function(){return!1},e.prototype.resize=function(){},e.prototype.isStateDependent=function(){for(var t in this.paint._values){var e=this.paint.get(t);if(e instanceof bi&&zr(e.property.specification)&&((\"source\"===e.value.kind||\"composite\"===e.value.kind)&&e.value.isStateDependent))return!0}return!1},e}(Et),Li={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array},Ci=function(t,e){this._structArray=t,this._pos1=e*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8},Pi=function(){this.isTransferred=!1,this.capacity=-1,this.resize(0)};function Ii(t,e){void 0===e&&(e=1);var r=0,n=0;return{members:t.map((function(t){var i,a=(i=t.type,Li[i].BYTES_PER_ELEMENT),o=r=Oi(r,Math.max(e,a)),s=t.components||1;return n=Math.max(n,a),r+=a*s,{name:t.name,type:t.type,components:s,offset:o}})),size:Oi(r,Math.max(n,e)),alignment:e}}function Oi(t,e){return Math.ceil(t/e)*e}Pi.serialize=function(t,e){return t._trim(),e&&(t.isTransferred=!0,e.push(t.arrayBuffer)),{length:t.length,arrayBuffer:t.arrayBuffer}},Pi.deserialize=function(t){var e=Object.create(this.prototype);return e.arrayBuffer=t.arrayBuffer,e.length=t.length,e.capacity=t.arrayBuffer.byteLength/e.bytesPerElement,e._refreshViews(),e},Pi.prototype._trim=function(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())},Pi.prototype.clear=function(){this.length=0},Pi.prototype.resize=function(t){this.reserve(t),this.length=t},Pi.prototype.reserve=function(t){if(t>this.capacity){this.capacity=Math.max(t,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);var e=this.uint8;this._refreshViews(),e&&this.uint8.set(e)}},Pi.prototype._refreshViews=function(){throw new Error(\"_refreshViews() must be implemented by each concrete StructArray layout\")};var zi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var n=2*t;return this.int16[n+0]=e,this.int16[n+1]=r,t},e}(Pi);zi.prototype.bytesPerElement=4,Nn(\"StructArrayLayout2i4\",zi);var Di=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)},e.prototype.emplace=function(t,e,r,n,i){var a=4*t;return this.int16[a+0]=e,this.int16[a+1]=r,this.int16[a+2]=n,this.int16[a+3]=i,t},e}(Pi);Di.prototype.bytesPerElement=8,Nn(\"StructArrayLayout4i8\",Di);var Ri=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a){var o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,a)},e.prototype.emplace=function(t,e,r,n,i,a,o){var s=6*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.int16[s+2]=n,this.int16[s+3]=i,this.int16[s+4]=a,this.int16[s+5]=o,t},e}(Pi);Ri.prototype.bytesPerElement=12,Nn(\"StructArrayLayout2i4i12\",Ri);var Fi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a){var o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,a)},e.prototype.emplace=function(t,e,r,n,i,a,o){var s=4*t,l=8*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.uint8[l+4]=n,this.uint8[l+5]=i,this.uint8[l+6]=a,this.uint8[l+7]=o,t},e}(Pi);Fi.prototype.bytesPerElement=8,Nn(\"StructArrayLayout2i4ub8\",Fi);var Bi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l,c){var u=this.length;return this.resize(u+1),this.emplace(u,t,e,r,n,i,a,o,s,l,c)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,c,u){var f=9*t,h=18*t;return this.uint16[f+0]=e,this.uint16[f+1]=r,this.uint16[f+2]=n,this.uint16[f+3]=i,this.uint16[f+4]=a,this.uint16[f+5]=o,this.uint16[f+6]=s,this.uint16[f+7]=l,this.uint8[h+16]=c,this.uint8[h+17]=u,t},e}(Pi);Bi.prototype.bytesPerElement=18,Nn(\"StructArrayLayout8ui2ub18\",Bi);var Ni=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l,c,u,f){var h=this.length;return this.resize(h+1),this.emplace(h,t,e,r,n,i,a,o,s,l,c,u,f)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,c,u,f,h){var p=12*t;return this.int16[p+0]=e,this.int16[p+1]=r,this.int16[p+2]=n,this.int16[p+3]=i,this.uint16[p+4]=a,this.uint16[p+5]=o,this.uint16[p+6]=s,this.uint16[p+7]=l,this.int16[p+8]=c,this.int16[p+9]=u,this.int16[p+10]=f,this.int16[p+11]=h,t},e}(Pi);Ni.prototype.bytesPerElement=24,Nn(\"StructArrayLayout4i4ui4i24\",Ni);var ji=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=3*t;return this.float32[i+0]=e,this.float32[i+1]=r,this.float32[i+2]=n,t},e}(Pi);ji.prototype.bytesPerElement=12,Nn(\"StructArrayLayout3f12\",ji);var Ui=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){var r=1*t;return this.uint32[r+0]=e,t},e}(Pi);Ui.prototype.bytesPerElement=4,Nn(\"StructArrayLayout1ul4\",Ui);var Vi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l){var c=this.length;return this.resize(c+1),this.emplace(c,t,e,r,n,i,a,o,s,l)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,c){var u=10*t,f=5*t;return this.int16[u+0]=e,this.int16[u+1]=r,this.int16[u+2]=n,this.int16[u+3]=i,this.int16[u+4]=a,this.int16[u+5]=o,this.uint32[f+3]=s,this.uint16[u+8]=l,this.uint16[u+9]=c,t},e}(Pi);Vi.prototype.bytesPerElement=20,Nn(\"StructArrayLayout6i1ul2ui20\",Vi);var Hi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a){var o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,a)},e.prototype.emplace=function(t,e,r,n,i,a,o){var s=6*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.int16[s+2]=n,this.int16[s+3]=i,this.int16[s+4]=a,this.int16[s+5]=o,t},e}(Pi);Hi.prototype.bytesPerElement=12,Nn(\"StructArrayLayout2i2i2i12\",Hi);var qi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i){var a=this.length;return this.resize(a+1),this.emplace(a,t,e,r,n,i)},e.prototype.emplace=function(t,e,r,n,i,a){var o=4*t,s=8*t;return this.float32[o+0]=e,this.float32[o+1]=r,this.float32[o+2]=n,this.int16[s+6]=i,this.int16[s+7]=a,t},e}(Pi);qi.prototype.bytesPerElement=16,Nn(\"StructArrayLayout2f1f2i16\",qi);var Gi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)},e.prototype.emplace=function(t,e,r,n,i){var a=12*t,o=3*t;return this.uint8[a+0]=e,this.uint8[a+1]=r,this.float32[o+1]=n,this.float32[o+2]=i,t},e}(Pi);Gi.prototype.bytesPerElement=12,Nn(\"StructArrayLayout2ub2f12\",Gi);var Yi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=3*t;return this.uint16[i+0]=e,this.uint16[i+1]=r,this.uint16[i+2]=n,t},e}(Pi);Yi.prototype.bytesPerElement=6,Nn(\"StructArrayLayout3ui6\",Yi);var Wi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m){var v=this.length;return this.resize(v+1),this.emplace(v,t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m,v){var y=24*t,x=12*t,b=48*t;return this.int16[y+0]=e,this.int16[y+1]=r,this.uint16[y+2]=n,this.uint16[y+3]=i,this.uint32[x+2]=a,this.uint32[x+3]=o,this.uint32[x+4]=s,this.uint16[y+10]=l,this.uint16[y+11]=c,this.uint16[y+12]=u,this.float32[x+7]=f,this.float32[x+8]=h,this.uint8[b+36]=p,this.uint8[b+37]=d,this.uint8[b+38]=g,this.uint32[x+10]=m,this.int16[y+22]=v,t},e}(Pi);Wi.prototype.bytesPerElement=48,Nn(\"StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48\",Wi);var Xi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m,v,y,x,b,_,w,T,k,A,M,S){var E=this.length;return this.resize(E+1),this.emplace(E,t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m,v,y,x,b,_,w,T,k,A,M,S)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m,v,y,x,b,_,w,T,k,A,M,S,E){var L=34*t,C=17*t;return this.int16[L+0]=e,this.int16[L+1]=r,this.int16[L+2]=n,this.int16[L+3]=i,this.int16[L+4]=a,this.int16[L+5]=o,this.int16[L+6]=s,this.int16[L+7]=l,this.uint16[L+8]=c,this.uint16[L+9]=u,this.uint16[L+10]=f,this.uint16[L+11]=h,this.uint16[L+12]=p,this.uint16[L+13]=d,this.uint16[L+14]=g,this.uint16[L+15]=m,this.uint16[L+16]=v,this.uint16[L+17]=y,this.uint16[L+18]=x,this.uint16[L+19]=b,this.uint16[L+20]=_,this.uint16[L+21]=w,this.uint16[L+22]=T,this.uint32[C+12]=k,this.float32[C+13]=A,this.float32[C+14]=M,this.float32[C+15]=S,this.float32[C+16]=E,t},e}(Pi);Xi.prototype.bytesPerElement=68,Nn(\"StructArrayLayout8i15ui1ul4f68\",Xi);var Zi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){var r=1*t;return this.float32[r+0]=e,t},e}(Pi);Zi.prototype.bytesPerElement=4,Nn(\"StructArrayLayout1f4\",Zi);var Ji=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=3*t;return this.int16[i+0]=e,this.int16[i+1]=r,this.int16[i+2]=n,t},e}(Pi);Ji.prototype.bytesPerElement=6,Nn(\"StructArrayLayout3i6\",Ji);var Ki=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=2*t,a=4*t;return this.uint32[i+0]=e,this.uint16[a+2]=r,this.uint16[a+3]=n,t},e}(Pi);Ki.prototype.bytesPerElement=8,Nn(\"StructArrayLayout1ul2ui8\",Ki);var Qi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var n=2*t;return this.uint16[n+0]=e,this.uint16[n+1]=r,t},e}(Pi);Qi.prototype.bytesPerElement=4,Nn(\"StructArrayLayout2ui4\",Qi);var $i=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){var r=1*t;return this.uint16[r+0]=e,t},e}(Pi);$i.prototype.bytesPerElement=2,Nn(\"StructArrayLayout1ui2\",$i);var ta=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var n=2*t;return this.float32[n+0]=e,this.float32[n+1]=r,t},e}(Pi);ta.prototype.bytesPerElement=8,Nn(\"StructArrayLayout2f8\",ta);var ea=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)},e.prototype.emplace=function(t,e,r,n,i){var a=4*t;return this.float32[a+0]=e,this.float32[a+1]=r,this.float32[a+2]=n,this.float32[a+3]=i,t},e}(Pi);ea.prototype.bytesPerElement=16,Nn(\"StructArrayLayout4f16\",ea);var ra=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={anchorPointX:{configurable:!0},anchorPointY:{configurable:!0},x1:{configurable:!0},y1:{configurable:!0},x2:{configurable:!0},y2:{configurable:!0},featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0},anchorPoint:{configurable:!0}};return r.anchorPointX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorPointY.get=function(){return this._structArray.int16[this._pos2+1]},r.x1.get=function(){return this._structArray.int16[this._pos2+2]},r.y1.get=function(){return this._structArray.int16[this._pos2+3]},r.x2.get=function(){return this._structArray.int16[this._pos2+4]},r.y2.get=function(){return this._structArray.int16[this._pos2+5]},r.featureIndex.get=function(){return this._structArray.uint32[this._pos4+3]},r.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+8]},r.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+9]},r.anchorPoint.get=function(){return new i(this.anchorPointX,this.anchorPointY)},Object.defineProperties(e.prototype,r),e}(Ci);ra.prototype.size=20;var na=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new ra(this,t)},e}(Vi);Nn(\"CollisionBoxArray\",na);var ia=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={anchorX:{configurable:!0},anchorY:{configurable:!0},glyphStartIndex:{configurable:!0},numGlyphs:{configurable:!0},vertexStartIndex:{configurable:!0},lineStartIndex:{configurable:!0},lineLength:{configurable:!0},segment:{configurable:!0},lowerSize:{configurable:!0},upperSize:{configurable:!0},lineOffsetX:{configurable:!0},lineOffsetY:{configurable:!0},writingMode:{configurable:!0},placedOrientation:{configurable:!0},hidden:{configurable:!0},crossTileID:{configurable:!0},associatedIconIndex:{configurable:!0}};return r.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},r.glyphStartIndex.get=function(){return this._structArray.uint16[this._pos2+2]},r.numGlyphs.get=function(){return this._structArray.uint16[this._pos2+3]},r.vertexStartIndex.get=function(){return this._structArray.uint32[this._pos4+2]},r.lineStartIndex.get=function(){return this._structArray.uint32[this._pos4+3]},r.lineLength.get=function(){return this._structArray.uint32[this._pos4+4]},r.segment.get=function(){return this._structArray.uint16[this._pos2+10]},r.lowerSize.get=function(){return this._structArray.uint16[this._pos2+11]},r.upperSize.get=function(){return this._structArray.uint16[this._pos2+12]},r.lineOffsetX.get=function(){return this._structArray.float32[this._pos4+7]},r.lineOffsetY.get=function(){return this._structArray.float32[this._pos4+8]},r.writingMode.get=function(){return this._structArray.uint8[this._pos1+36]},r.placedOrientation.get=function(){return this._structArray.uint8[this._pos1+37]},r.placedOrientation.set=function(t){this._structArray.uint8[this._pos1+37]=t},r.hidden.get=function(){return this._structArray.uint8[this._pos1+38]},r.hidden.set=function(t){this._structArray.uint8[this._pos1+38]=t},r.crossTileID.get=function(){return this._structArray.uint32[this._pos4+10]},r.crossTileID.set=function(t){this._structArray.uint32[this._pos4+10]=t},r.associatedIconIndex.get=function(){return this._structArray.int16[this._pos2+22]},Object.defineProperties(e.prototype,r),e}(Ci);ia.prototype.size=48;var aa=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new ia(this,t)},e}(Wi);Nn(\"PlacedSymbolArray\",aa);var oa=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={anchorX:{configurable:!0},anchorY:{configurable:!0},rightJustifiedTextSymbolIndex:{configurable:!0},centerJustifiedTextSymbolIndex:{configurable:!0},leftJustifiedTextSymbolIndex:{configurable:!0},verticalPlacedTextSymbolIndex:{configurable:!0},placedIconSymbolIndex:{configurable:!0},verticalPlacedIconSymbolIndex:{configurable:!0},key:{configurable:!0},textBoxStartIndex:{configurable:!0},textBoxEndIndex:{configurable:!0},verticalTextBoxStartIndex:{configurable:!0},verticalTextBoxEndIndex:{configurable:!0},iconBoxStartIndex:{configurable:!0},iconBoxEndIndex:{configurable:!0},verticalIconBoxStartIndex:{configurable:!0},verticalIconBoxEndIndex:{configurable:!0},featureIndex:{configurable:!0},numHorizontalGlyphVertices:{configurable:!0},numVerticalGlyphVertices:{configurable:!0},numIconVertices:{configurable:!0},numVerticalIconVertices:{configurable:!0},useRuntimeCollisionCircles:{configurable:!0},crossTileID:{configurable:!0},textBoxScale:{configurable:!0},textOffset0:{configurable:!0},textOffset1:{configurable:!0},collisionCircleDiameter:{configurable:!0}};return r.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},r.rightJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+2]},r.centerJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+3]},r.leftJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+4]},r.verticalPlacedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+5]},r.placedIconSymbolIndex.get=function(){return this._structArray.int16[this._pos2+6]},r.verticalPlacedIconSymbolIndex.get=function(){return this._structArray.int16[this._pos2+7]},r.key.get=function(){return this._structArray.uint16[this._pos2+8]},r.textBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+9]},r.textBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+10]},r.verticalTextBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+11]},r.verticalTextBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+12]},r.iconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+13]},r.iconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+14]},r.verticalIconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+15]},r.verticalIconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+16]},r.featureIndex.get=function(){return this._structArray.uint16[this._pos2+17]},r.numHorizontalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+18]},r.numVerticalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+19]},r.numIconVertices.get=function(){return this._structArray.uint16[this._pos2+20]},r.numVerticalIconVertices.get=function(){return this._structArray.uint16[this._pos2+21]},r.useRuntimeCollisionCircles.get=function(){return this._structArray.uint16[this._pos2+22]},r.crossTileID.get=function(){return this._structArray.uint32[this._pos4+12]},r.crossTileID.set=function(t){this._structArray.uint32[this._pos4+12]=t},r.textBoxScale.get=function(){return this._structArray.float32[this._pos4+13]},r.textOffset0.get=function(){return this._structArray.float32[this._pos4+14]},r.textOffset1.get=function(){return this._structArray.float32[this._pos4+15]},r.collisionCircleDiameter.get=function(){return this._structArray.float32[this._pos4+16]},Object.defineProperties(e.prototype,r),e}(Ci);oa.prototype.size=68;var sa=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new oa(this,t)},e}(Xi);Nn(\"SymbolInstanceArray\",sa);var la=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getoffsetX=function(t){return this.float32[1*t+0]},e}(Zi);Nn(\"GlyphOffsetArray\",la);var ca=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getx=function(t){return this.int16[3*t+0]},e.prototype.gety=function(t){return this.int16[3*t+1]},e.prototype.gettileUnitDistanceFromAnchor=function(t){return this.int16[3*t+2]},e}(Ji);Nn(\"SymbolLineVertexArray\",ca);var ua=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0}};return r.featureIndex.get=function(){return this._structArray.uint32[this._pos4+0]},r.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+2]},r.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+3]},Object.defineProperties(e.prototype,r),e}(Ci);ua.prototype.size=8;var fa=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new ua(this,t)},e}(Ki);Nn(\"FeatureIndexArray\",fa);var ha=Ii([{name:\"a_pos\",components:2,type:\"Int16\"}],4).members,pa=function(t){void 0===t&&(t=[]),this.segments=t};function da(t,e){return 256*(t=l(Math.floor(t),0,255))+(e=l(Math.floor(e),0,255))}pa.prototype.prepareSegment=function(t,e,r,n){var i=this.segments[this.segments.length-1];return t>pa.MAX_VERTEX_ARRAY_LENGTH&&_(\"Max vertices per segment is \"+pa.MAX_VERTEX_ARRAY_LENGTH+\": bucket requested \"+t),(!i||i.vertexLength+t>pa.MAX_VERTEX_ARRAY_LENGTH||i.sortKey!==n)&&(i={vertexOffset:e.length,primitiveOffset:r.length,vertexLength:0,primitiveLength:0},void 0!==n&&(i.sortKey=n),this.segments.push(i)),i},pa.prototype.get=function(){return this.segments},pa.prototype.destroy=function(){for(var t=0,e=this.segments;t>>16)*o&65535)<<16)&4294967295)<<15|l>>>17))*s+(((l>>>16)*s&65535)<<16)&4294967295)<<13|i>>>19))+((5*(i>>>16)&65535)<<16)&4294967295))+((58964+(a>>>16)&65535)<<16);switch(l=0,r){case 3:l^=(255&t.charCodeAt(c+2))<<16;case 2:l^=(255&t.charCodeAt(c+1))<<8;case 1:i^=l=(65535&(l=(l=(65535&(l^=255&t.charCodeAt(c)))*o+(((l>>>16)*o&65535)<<16)&4294967295)<<15|l>>>17))*s+(((l>>>16)*s&65535)<<16)&4294967295}return i^=t.length,i=2246822507*(65535&(i^=i>>>16))+((2246822507*(i>>>16)&65535)<<16)&4294967295,i=3266489909*(65535&(i^=i>>>13))+((3266489909*(i>>>16)&65535)<<16)&4294967295,(i^=i>>>16)>>>0}})),va=e((function(t){t.exports=function(t,e){for(var r,n=t.length,i=e^n,a=0;n>=4;)r=1540483477*(65535&(r=255&t.charCodeAt(a)|(255&t.charCodeAt(++a))<<8|(255&t.charCodeAt(++a))<<16|(255&t.charCodeAt(++a))<<24))+((1540483477*(r>>>16)&65535)<<16),i=1540483477*(65535&i)+((1540483477*(i>>>16)&65535)<<16)^(r=1540483477*(65535&(r^=r>>>24))+((1540483477*(r>>>16)&65535)<<16)),n-=4,++a;switch(n){case 3:i^=(255&t.charCodeAt(a+2))<<16;case 2:i^=(255&t.charCodeAt(a+1))<<8;case 1:i=1540483477*(65535&(i^=255&t.charCodeAt(a)))+((1540483477*(i>>>16)&65535)<<16)}return i=1540483477*(65535&(i^=i>>>13))+((1540483477*(i>>>16)&65535)<<16),(i^=i>>>15)>>>0}})),ya=ma,xa=ma,ba=va;ya.murmur3=xa,ya.murmur2=ba;var _a=function(){this.ids=[],this.positions=[],this.indexed=!1};_a.prototype.add=function(t,e,r,n){this.ids.push(Ta(t)),this.positions.push(e,r,n)},_a.prototype.getPositions=function(t){for(var e=Ta(t),r=0,n=this.ids.length-1;r>1;this.ids[i]>=e?n=i:r=i+1}for(var a=[];this.ids[r]===e;){var o=this.positions[3*r],s=this.positions[3*r+1],l=this.positions[3*r+2];a.push({index:o,start:s,end:l}),r++}return a},_a.serialize=function(t,e){var r=new Float64Array(t.ids),n=new Uint32Array(t.positions);return function t(e,r,n,i){for(;n>1],o=n-1,s=i+1;;){do{o++}while(e[o]a);if(o>=s)break;ka(e,o,s),ka(r,3*o,3*s),ka(r,3*o+1,3*s+1),ka(r,3*o+2,3*s+2)}s-nGa.max||o.yGa.max)&&(_(\"Geometry exceeds allowed extent, reduce your vector tile buffer size\"),o.x=l(o.x,Ga.min,Ga.max),o.y=l(o.y,Ga.min,Ga.max))}return r}function Wa(t,e,r,n,i){t.emplaceBack(2*e+(n+1)/2,2*r+(i+1)/2)}var Xa=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((function(t){return t.id})),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new zi,this.indexArray=new Yi,this.segments=new pa,this.programConfigurations=new Ua(ha,t.layers,t.zoom),this.stateDependentLayerIds=this.layers.filter((function(t){return t.isStateDependent()})).map((function(t){return t.id}))};function Za(t,e){for(var r=0;r1){if($a(t,e))return!0;for(var n=0;n1?t.distSqr(r):t.distSqr(r.sub(e)._mult(i)._add(e))}function no(t,e){for(var r,n,i,a=!1,o=0;oe.y!=i.y>e.y&&e.x<(i.x-n.x)*(e.y-n.y)/(i.y-n.y)+n.x&&(a=!a);return a}function io(t,e){for(var r=!1,n=0,i=t.length-1;ne.y!=o.y>e.y&&e.x<(o.x-a.x)*(e.y-a.y)/(o.y-a.y)+a.x&&(r=!r)}return r}function ao(t,e,r){var n=r[0],i=r[2];if(t.xi.x&&e.x>i.x||t.yi.y&&e.y>i.y)return!1;var a=w(t,e,r[0]);return a!==w(t,e,r[1])||a!==w(t,e,r[2])||a!==w(t,e,r[3])}function oo(t,e,r){var n=e.paint.get(t).value;return\"constant\"===n.kind?n.value:r.programConfigurations.get(e.id).getMaxValue(t)}function so(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function lo(t,e,r,n,a){if(!e[0]&&!e[1])return t;var o=i.convert(e)._mult(a);\"viewport\"===r&&o._rotate(-n);for(var s=[],l=0;l=8192||u<0||u>=8192)){var f=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,t.sortKey),h=f.vertexLength;Wa(this.layoutVertexArray,c,u,-1,-1),Wa(this.layoutVertexArray,c,u,1,-1),Wa(this.layoutVertexArray,c,u,1,1),Wa(this.layoutVertexArray,c,u,-1,1),this.indexArray.emplaceBack(h,h+1,h+2),this.indexArray.emplaceBack(h,h+3,h+2),f.vertexLength+=4,f.primitiveLength+=2}}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,{},n)},Nn(\"CircleBucket\",Xa,{omit:[\"layers\"]});var co=new Si({\"circle-sort-key\":new Ti(Lt.layout_circle[\"circle-sort-key\"])}),uo={paint:new Si({\"circle-radius\":new Ti(Lt.paint_circle[\"circle-radius\"]),\"circle-color\":new Ti(Lt.paint_circle[\"circle-color\"]),\"circle-blur\":new Ti(Lt.paint_circle[\"circle-blur\"]),\"circle-opacity\":new Ti(Lt.paint_circle[\"circle-opacity\"]),\"circle-translate\":new wi(Lt.paint_circle[\"circle-translate\"]),\"circle-translate-anchor\":new wi(Lt.paint_circle[\"circle-translate-anchor\"]),\"circle-pitch-scale\":new wi(Lt.paint_circle[\"circle-pitch-scale\"]),\"circle-pitch-alignment\":new wi(Lt.paint_circle[\"circle-pitch-alignment\"]),\"circle-stroke-width\":new Ti(Lt.paint_circle[\"circle-stroke-width\"]),\"circle-stroke-color\":new Ti(Lt.paint_circle[\"circle-stroke-color\"]),\"circle-stroke-opacity\":new Ti(Lt.paint_circle[\"circle-stroke-opacity\"])}),layout:co},fo=\"undefined\"!=typeof Float32Array?Float32Array:Array;function ho(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function po(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3],s=e[4],l=e[5],c=e[6],u=e[7],f=e[8],h=e[9],p=e[10],d=e[11],g=e[12],m=e[13],v=e[14],y=e[15],x=r[0],b=r[1],_=r[2],w=r[3];return t[0]=x*n+b*s+_*f+w*g,t[1]=x*i+b*l+_*h+w*m,t[2]=x*a+b*c+_*p+w*v,t[3]=x*o+b*u+_*d+w*y,x=r[4],b=r[5],_=r[6],w=r[7],t[4]=x*n+b*s+_*f+w*g,t[5]=x*i+b*l+_*h+w*m,t[6]=x*a+b*c+_*p+w*v,t[7]=x*o+b*u+_*d+w*y,x=r[8],b=r[9],_=r[10],w=r[11],t[8]=x*n+b*s+_*f+w*g,t[9]=x*i+b*l+_*h+w*m,t[10]=x*a+b*c+_*p+w*v,t[11]=x*o+b*u+_*d+w*y,x=r[12],b=r[13],_=r[14],w=r[15],t[12]=x*n+b*s+_*f+w*g,t[13]=x*i+b*l+_*h+w*m,t[14]=x*a+b*c+_*p+w*v,t[15]=x*o+b*u+_*d+w*y,t}Math.hypot||(Math.hypot=function(){for(var t=arguments,e=0,r=arguments.length;r--;)e+=t[r]*t[r];return Math.sqrt(e)});var go=po;var mo,vo,yo=function(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t};mo=new fo(3),fo!=Float32Array&&(mo[0]=0,mo[1]=0,mo[2]=0),vo=mo;function xo(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3];return t[0]=r[0]*n+r[4]*i+r[8]*a+r[12]*o,t[1]=r[1]*n+r[5]*i+r[9]*a+r[13]*o,t[2]=r[2]*n+r[6]*i+r[10]*a+r[14]*o,t[3]=r[3]*n+r[7]*i+r[11]*a+r[15]*o,t}!function(){var t=function(){var t=new fo(4);return fo!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[3]=0),t}()}();var bo=function(t){var e=t[0],r=t[1];return e*e+r*r},_o=(function(){var t=function(){var t=new fo(2);return fo!=Float32Array&&(t[0]=0,t[1]=0),t}()}(),function(t){function e(e){t.call(this,e,uo)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.createBucket=function(t){return new Xa(t)},e.prototype.queryRadius=function(t){var e=t;return oo(\"circle-radius\",this,e)+oo(\"circle-stroke-width\",this,e)+so(this.paint.get(\"circle-translate\"))},e.prototype.queryIntersectsFeature=function(t,e,r,n,i,a,o,s){for(var l=lo(t,this.paint.get(\"circle-translate\"),this.paint.get(\"circle-translate-anchor\"),a.angle,o),c=this.paint.get(\"circle-radius\").evaluate(e,r)+this.paint.get(\"circle-stroke-width\").evaluate(e,r),u=\"map\"===this.paint.get(\"circle-pitch-alignment\"),f=u?l:function(t,e){return t.map((function(t){return wo(t,e)}))}(l,s),h=u?c*o:c,p=0,d=n;pt.width||i.height>t.height||r.x>t.width-i.width||r.y>t.height-i.height)throw new RangeError(\"out of range source coordinates for image copy\");if(i.width>e.width||i.height>e.height||n.x>e.width-i.width||n.y>e.height-i.height)throw new RangeError(\"out of range destination coordinates for image copy\");for(var o=t.data,s=e.data,l=0;l80*r){n=a=t[0],i=o=t[1];for(var d=r;da&&(a=s),l>o&&(o=l);c=0!==(c=Math.max(a-n,o-i))?1/c:0}return jo(h,p,r,n,i,c),p}function Bo(t,e,r,n,i){var a,o;if(i===ls(t,e,r,n)>0)for(a=e;a=e;a-=n)o=as(a,t[a],t[a+1],o);return o&&$o(o,o.next)&&(os(o),o=o.next),o}function No(t,e){if(!t)return t;e||(e=t);var r,n=t;do{if(r=!1,n.steiner||!$o(n,n.next)&&0!==Qo(n.prev,n,n.next))n=n.next;else{if(os(n),(n=e=n.prev)===n.next)break;r=!0}}while(r||n!==e);return e}function jo(t,e,r,n,i,a,o){if(t){!o&&a&&function(t,e,r,n){var i=t;do{null===i.z&&(i.z=Xo(i.x,i.y,e,r,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next}while(i!==t);i.prevZ.nextZ=null,i.prevZ=null,function(t){var e,r,n,i,a,o,s,l,c=1;do{for(r=t,t=null,a=null,o=0;r;){for(o++,n=r,s=0,e=0;e0||l>0&&n;)0!==s&&(0===l||!n||r.z<=n.z)?(i=r,r=r.nextZ,s--):(i=n,n=n.nextZ,l--),a?a.nextZ=i:t=i,i.prevZ=a,a=i;r=n}a.nextZ=null,c*=2}while(o>1)}(i)}(t,n,i,a);for(var s,l,c=t;t.prev!==t.next;)if(s=t.prev,l=t.next,a?Vo(t,n,i,a):Uo(t))e.push(s.i/r),e.push(t.i/r),e.push(l.i/r),os(t),t=l.next,c=l.next;else if((t=l)===c){o?1===o?jo(t=Ho(No(t),e,r),e,r,n,i,a,2):2===o&&qo(t,e,r,n,i,a):jo(No(t),e,r,n,i,a,1);break}}}function Uo(t){var e=t.prev,r=t,n=t.next;if(Qo(e,r,n)>=0)return!1;for(var i=t.next.next;i!==t.prev;){if(Jo(e.x,e.y,r.x,r.y,n.x,n.y,i.x,i.y)&&Qo(i.prev,i,i.next)>=0)return!1;i=i.next}return!0}function Vo(t,e,r,n){var i=t.prev,a=t,o=t.next;if(Qo(i,a,o)>=0)return!1;for(var s=i.xa.x?i.x>o.x?i.x:o.x:a.x>o.x?a.x:o.x,u=i.y>a.y?i.y>o.y?i.y:o.y:a.y>o.y?a.y:o.y,f=Xo(s,l,e,r,n),h=Xo(c,u,e,r,n),p=t.prevZ,d=t.nextZ;p&&p.z>=f&&d&&d.z<=h;){if(p!==t.prev&&p!==t.next&&Jo(i.x,i.y,a.x,a.y,o.x,o.y,p.x,p.y)&&Qo(p.prev,p,p.next)>=0)return!1;if(p=p.prevZ,d!==t.prev&&d!==t.next&&Jo(i.x,i.y,a.x,a.y,o.x,o.y,d.x,d.y)&&Qo(d.prev,d,d.next)>=0)return!1;d=d.nextZ}for(;p&&p.z>=f;){if(p!==t.prev&&p!==t.next&&Jo(i.x,i.y,a.x,a.y,o.x,o.y,p.x,p.y)&&Qo(p.prev,p,p.next)>=0)return!1;p=p.prevZ}for(;d&&d.z<=h;){if(d!==t.prev&&d!==t.next&&Jo(i.x,i.y,a.x,a.y,o.x,o.y,d.x,d.y)&&Qo(d.prev,d,d.next)>=0)return!1;d=d.nextZ}return!0}function Ho(t,e,r){var n=t;do{var i=n.prev,a=n.next.next;!$o(i,a)&&ts(i,n,n.next,a)&&ns(i,a)&&ns(a,i)&&(e.push(i.i/r),e.push(n.i/r),e.push(a.i/r),os(n),os(n.next),n=t=a),n=n.next}while(n!==t);return No(n)}function qo(t,e,r,n,i,a){var o=t;do{for(var s=o.next.next;s!==o.prev;){if(o.i!==s.i&&Ko(o,s)){var l=is(o,s);return o=No(o,o.next),l=No(l,l.next),jo(o,e,r,n,i,a),void jo(l,e,r,n,i,a)}s=s.next}o=o.next}while(o!==t)}function Go(t,e){return t.x-e.x}function Yo(t,e){if(e=function(t,e){var r,n=e,i=t.x,a=t.y,o=-1/0;do{if(a<=n.y&&a>=n.next.y&&n.next.y!==n.y){var s=n.x+(a-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(s<=i&&s>o){if(o=s,s===i){if(a===n.y)return n;if(a===n.next.y)return n.next}r=n.x=n.x&&n.x>=u&&i!==n.x&&Jo(ar.x||n.x===r.x&&Wo(r,n)))&&(r=n,h=l)),n=n.next}while(n!==c);return r}(t,e)){var r=is(e,t);No(e,e.next),No(r,r.next)}}function Wo(t,e){return Qo(t.prev,t,e.prev)<0&&Qo(e.next,t,t.next)<0}function Xo(t,e,r,n,i){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-r)*i)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-n)*i)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function Zo(t){var e=t,r=t;do{(e.x=0&&(t-o)*(n-s)-(r-o)*(e-s)>=0&&(r-o)*(a-s)-(i-o)*(n-s)>=0}function Ko(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){var r=t;do{if(r.i!==t.i&&r.next.i!==t.i&&r.i!==e.i&&r.next.i!==e.i&&ts(r,r.next,t,e))return!0;r=r.next}while(r!==t);return!1}(t,e)&&(ns(t,e)&&ns(e,t)&&function(t,e){var r=t,n=!1,i=(t.x+e.x)/2,a=(t.y+e.y)/2;do{r.y>a!=r.next.y>a&&r.next.y!==r.y&&i<(r.next.x-r.x)*(a-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next}while(r!==t);return n}(t,e)&&(Qo(t.prev,t,e.prev)||Qo(t,e.prev,e))||$o(t,e)&&Qo(t.prev,t,t.next)>0&&Qo(e.prev,e,e.next)>0)}function Qo(t,e,r){return(e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y)}function $o(t,e){return t.x===e.x&&t.y===e.y}function ts(t,e,r,n){var i=rs(Qo(t,e,r)),a=rs(Qo(t,e,n)),o=rs(Qo(r,n,t)),s=rs(Qo(r,n,e));return i!==a&&o!==s||(!(0!==i||!es(t,r,e))||(!(0!==a||!es(t,n,e))||(!(0!==o||!es(r,t,n))||!(0!==s||!es(r,e,n)))))}function es(t,e,r){return e.x<=Math.max(t.x,r.x)&&e.x>=Math.min(t.x,r.x)&&e.y<=Math.max(t.y,r.y)&&e.y>=Math.min(t.y,r.y)}function rs(t){return t>0?1:t<0?-1:0}function ns(t,e){return Qo(t.prev,t,t.next)<0?Qo(t,e,t.next)>=0&&Qo(t,t.prev,e)>=0:Qo(t,e,t.prev)<0||Qo(t,t.next,e)<0}function is(t,e){var r=new ss(t.i,t.x,t.y),n=new ss(e.i,e.x,e.y),i=t.next,a=e.prev;return t.next=e,e.prev=t,r.next=i,i.prev=r,n.next=r,r.prev=n,a.next=n,n.prev=a,n}function as(t,e,r,n){var i=new ss(t,e,r);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function os(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function ss(t,e,r){this.i=t,this.x=e,this.y=r,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function ls(t,e,r,n){for(var i=0,a=e,o=r-n;an;){if(i-n>600){var o=i-n+1,s=r-n+1,l=Math.log(o),c=.5*Math.exp(2*l/3),u=.5*Math.sqrt(l*c*(o-c)/o)*(s-o/2<0?-1:1),f=Math.max(n,Math.floor(r-s*c/o+u)),h=Math.min(i,Math.floor(r+(o-s)*c/o+u));t(e,r,f,h,a)}var p=e[r],d=n,g=i;for(us(e,n,r),a(e[i],p)>0&&us(e,n,i);d0;)g--}0===a(e[n],p)?us(e,n,g):(g++,us(e,g,i)),g<=r&&(n=g+1),r<=g&&(i=g-1)}}(t,e,r||0,n||t.length-1,i||fs)}function us(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function fs(t,e){return te?1:0}function hs(t,e){var r=t.length;if(r<=1)return[t];for(var n,i,a=[],o=0;o1)for(var l=0;l0&&(n+=t[i-1].length,r.holes.push(n))}return r},Do.default=Ro;var ms=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((function(t){return t.id})),this.index=t.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new zi,this.indexArray=new Yi,this.indexArray2=new Qi,this.programConfigurations=new Ua(zo,t.layers,t.zoom),this.segments=new pa,this.segments2=new pa,this.stateDependentLayerIds=this.layers.filter((function(t){return t.isStateDependent()})).map((function(t){return t.id}))};ms.prototype.populate=function(t,e,r){this.hasPattern=ds(\"fill\",this.layers,e);for(var n=this.layers[0].layout.get(\"fill-sort-key\"),i=[],a=0,o=t;a>3}if(a--,1===n||2===n)o+=t.readSVarint(),s+=t.readSVarint(),1===n&&(e&&l.push(e),e=[]),e.push(new i(o,s));else{if(7!==n)throw new Error(\"unknown command \"+n);e&&e.push(e[0].clone())}}return e&&l.push(e),l},ws.prototype.bbox=function(){var t=this._pbf;t.pos=this._geometry;for(var e=t.readVarint()+t.pos,r=1,n=0,i=0,a=0,o=1/0,s=-1/0,l=1/0,c=-1/0;t.pos>3}if(n--,1===r||2===r)(i+=t.readSVarint())s&&(s=i),(a+=t.readSVarint())c&&(c=a);else if(7!==r)throw new Error(\"unknown command \"+r)}return[o,l,s,c]},ws.prototype.toGeoJSON=function(t,e,r){var n,i,a=this.extent*Math.pow(2,r),o=this.extent*t,s=this.extent*e,l=this.loadGeometry(),c=ws.types[this.type];function u(t){for(var e=0;e>3;e=1===n?t.readString():2===n?t.readFloat():3===n?t.readDouble():4===n?t.readVarint64():5===n?t.readVarint():6===n?t.readSVarint():7===n?t.readBoolean():null}return e}(r))}function Es(t,e,r){if(3===t){var n=new As(r,r.readVarint()+r.pos);n.length&&(e[n.name]=n)}}Ms.prototype.feature=function(t){if(t<0||t>=this._features.length)throw new Error(\"feature index out of bounds\");this._pbf.pos=this._features[t];var e=this._pbf.readVarint()+this._pbf.pos;return new _s(this._pbf,e,this.extent,this._keys,this._values)};var Ls={VectorTile:function(t,e){this.layers=t.readFields(Es,{},e)},VectorTileFeature:_s,VectorTileLayer:As},Cs=Ls.VectorTileFeature.types,Ps=Math.pow(2,13);function Is(t,e,r,n,i,a,o,s){t.emplaceBack(e,r,2*Math.floor(n*Ps)+o,i*Ps*2,a*Ps*2,Math.round(s))}var Os=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((function(t){return t.id})),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new Ri,this.indexArray=new Yi,this.programConfigurations=new Ua(bs,t.layers,t.zoom),this.segments=new pa,this.stateDependentLayerIds=this.layers.filter((function(t){return t.isStateDependent()})).map((function(t){return t.id}))};function zs(t,e){return t.x===e.x&&(t.x<0||t.x>8192)||t.y===e.y&&(t.y<0||t.y>8192)}function Ds(t){return t.every((function(t){return t.x<0}))||t.every((function(t){return t.x>8192}))||t.every((function(t){return t.y<0}))||t.every((function(t){return t.y>8192}))}Os.prototype.populate=function(t,e,r){this.features=[],this.hasPattern=ds(\"fill-extrusion\",this.layers,e);for(var n=0,i=t;n=1){var y=d[m-1];if(!zs(v,y)){f.vertexLength+4>pa.MAX_VERTEX_ARRAY_LENGTH&&(f=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));var x=v.sub(y)._perp()._unit(),b=y.dist(v);g+b>32768&&(g=0),Is(this.layoutVertexArray,v.x,v.y,x.x,x.y,0,0,g),Is(this.layoutVertexArray,v.x,v.y,x.x,x.y,0,1,g),g+=b,Is(this.layoutVertexArray,y.x,y.y,x.x,x.y,0,0,g),Is(this.layoutVertexArray,y.x,y.y,x.x,x.y,0,1,g);var _=f.vertexLength;this.indexArray.emplaceBack(_,_+2,_+1),this.indexArray.emplaceBack(_+1,_+2,_+3),f.vertexLength+=4,f.primitiveLength+=2}}}}if(f.vertexLength+l>pa.MAX_VERTEX_ARRAY_LENGTH&&(f=this.segments.prepareSegment(l,this.layoutVertexArray,this.indexArray)),\"Polygon\"===Cs[t.type]){for(var w=[],T=[],k=f.vertexLength,A=0,M=s;A=2&&t[l-1].equals(t[l-2]);)l--;for(var c=0;c0;if(T&&v>c){var A=u.dist(p);if(A>2*f){var M=u.sub(u.sub(p)._mult(f/A)._round());this.updateDistance(p,M),this.addCurrentVertex(M,g,0,0,h),p=M}}var S=p&&d,E=S?r:s?\"butt\":n;if(S&&\"round\"===E&&(_i&&(E=\"bevel\"),\"bevel\"===E&&(_>2&&(E=\"flipbevel\"),_100)y=m.mult(-1);else{var L=_*g.add(m).mag()/g.sub(m).mag();y._perp()._mult(L*(k?-1:1))}this.addCurrentVertex(u,y,0,0,h),this.addCurrentVertex(u,y.mult(-1),0,0,h)}else if(\"bevel\"===E||\"fakeround\"===E){var C=-Math.sqrt(_*_-1),P=k?C:0,I=k?0:C;if(p&&this.addCurrentVertex(u,g,P,I,h),\"fakeround\"===E)for(var O=Math.round(180*w/Math.PI/20),z=1;z2*f){var j=u.add(d.sub(u)._mult(f/N)._round());this.updateDistance(u,j),this.addCurrentVertex(j,m,0,0,h),u=j}}}}},qs.prototype.addCurrentVertex=function(t,e,r,n,i,a){void 0===a&&(a=!1);var o=e.x+e.y*r,s=e.y-e.x*r,l=-e.x+e.y*n,c=-e.y-e.x*n;this.addHalfVertex(t,o,s,a,!1,r,i),this.addHalfVertex(t,l,c,a,!0,-n,i),this.distance>Hs/2&&0===this.totalDistance&&(this.distance=0,this.addCurrentVertex(t,e,r,n,i,a))},qs.prototype.addHalfVertex=function(t,e,r,n,i,a,o){var s=t.x,l=t.y,c=.5*this.scaledDistance;this.layoutVertexArray.emplaceBack((s<<1)+(n?1:0),(l<<1)+(i?1:0),Math.round(63*e)+128,Math.round(63*r)+128,1+(0===a?0:a<0?-1:1)|(63&c)<<2,c>>6);var u=o.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,u),o.primitiveLength++),i?this.e2=u:this.e1=u},qs.prototype.updateScaledDistance=function(){this.scaledDistance=this.totalDistance>0?(this.clipStart+(this.clipEnd-this.clipStart)*this.distance/this.totalDistance)*(Hs-1):this.distance},qs.prototype.updateDistance=function(t,e){this.distance+=t.dist(e),this.updateScaledDistance()},Nn(\"LineBucket\",qs,{omit:[\"layers\",\"patternFeatures\"]});var Gs=new Si({\"line-cap\":new wi(Lt.layout_line[\"line-cap\"]),\"line-join\":new Ti(Lt.layout_line[\"line-join\"]),\"line-miter-limit\":new wi(Lt.layout_line[\"line-miter-limit\"]),\"line-round-limit\":new wi(Lt.layout_line[\"line-round-limit\"]),\"line-sort-key\":new Ti(Lt.layout_line[\"line-sort-key\"])}),Ys={paint:new Si({\"line-opacity\":new Ti(Lt.paint_line[\"line-opacity\"]),\"line-color\":new Ti(Lt.paint_line[\"line-color\"]),\"line-translate\":new wi(Lt.paint_line[\"line-translate\"]),\"line-translate-anchor\":new wi(Lt.paint_line[\"line-translate-anchor\"]),\"line-width\":new Ti(Lt.paint_line[\"line-width\"]),\"line-gap-width\":new Ti(Lt.paint_line[\"line-gap-width\"]),\"line-offset\":new Ti(Lt.paint_line[\"line-offset\"]),\"line-blur\":new Ti(Lt.paint_line[\"line-blur\"]),\"line-dasharray\":new Ai(Lt.paint_line[\"line-dasharray\"]),\"line-pattern\":new ki(Lt.paint_line[\"line-pattern\"]),\"line-gradient\":new Mi(Lt.paint_line[\"line-gradient\"])}),layout:Gs},Ws=new(function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.possiblyEvaluate=function(e,r){return r=new pi(Math.floor(r.zoom),{now:r.now,fadeDuration:r.fadeDuration,zoomHistory:r.zoomHistory,transition:r.transition}),t.prototype.possiblyEvaluate.call(this,e,r)},e.prototype.evaluate=function(e,r,n,i){return r=u({},r,{zoom:Math.floor(r.zoom)}),t.prototype.evaluate.call(this,e,r,n,i)},e}(Ti))(Ys.paint.properties[\"line-width\"].specification);Ws.useIntegerZoom=!0;var Xs=function(t){function e(e){t.call(this,e,Ys)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._handleSpecialPaintPropertyUpdate=function(t){\"line-gradient\"===t&&this._updateGradient()},e.prototype._updateGradient=function(){var t=this._transitionablePaint._values[\"line-gradient\"].value.expression;this.gradient=Co(t,\"lineProgress\"),this.gradientTexture=null},e.prototype.recalculate=function(e,r){t.prototype.recalculate.call(this,e,r),this.paint._values[\"line-floorwidth\"]=Ws.possiblyEvaluate(this._transitioningPaint._values[\"line-width\"].value,e)},e.prototype.createBucket=function(t){return new qs(t)},e.prototype.queryRadius=function(t){var e=t,r=Zs(oo(\"line-width\",this,e),oo(\"line-gap-width\",this,e)),n=oo(\"line-offset\",this,e);return r/2+Math.abs(n)+so(this.paint.get(\"line-translate\"))},e.prototype.queryIntersectsFeature=function(t,e,r,n,a,o,s){var l=lo(t,this.paint.get(\"line-translate\"),this.paint.get(\"line-translate-anchor\"),o.angle,s),c=s/2*Zs(this.paint.get(\"line-width\").evaluate(e,r),this.paint.get(\"line-gap-width\").evaluate(e,r)),u=this.paint.get(\"line-offset\").evaluate(e,r);return u&&(n=function(t,e){for(var r=[],n=new i(0,0),a=0;a=3)for(var a=0;a0?e+2*t:t}var Js=Ii([{name:\"a_pos_offset\",components:4,type:\"Int16\"},{name:\"a_data\",components:4,type:\"Uint16\"},{name:\"a_pixeloffset\",components:4,type:\"Int16\"}],4),Ks=Ii([{name:\"a_projected_pos\",components:3,type:\"Float32\"}],4),Qs=(Ii([{name:\"a_fade_opacity\",components:1,type:\"Uint32\"}],4),Ii([{name:\"a_placed\",components:2,type:\"Uint8\"},{name:\"a_shift\",components:2,type:\"Float32\"}])),$s=(Ii([{type:\"Int16\",name:\"anchorPointX\"},{type:\"Int16\",name:\"anchorPointY\"},{type:\"Int16\",name:\"x1\"},{type:\"Int16\",name:\"y1\"},{type:\"Int16\",name:\"x2\"},{type:\"Int16\",name:\"y2\"},{type:\"Uint32\",name:\"featureIndex\"},{type:\"Uint16\",name:\"sourceLayerIndex\"},{type:\"Uint16\",name:\"bucketIndex\"}]),Ii([{name:\"a_pos\",components:2,type:\"Int16\"},{name:\"a_anchor_pos\",components:2,type:\"Int16\"},{name:\"a_extrude\",components:2,type:\"Int16\"}],4)),tl=Ii([{name:\"a_pos\",components:2,type:\"Float32\"},{name:\"a_radius\",components:1,type:\"Float32\"},{name:\"a_flags\",components:2,type:\"Int16\"}],4);Ii([{name:\"triangle\",components:3,type:\"Uint16\"}]),Ii([{type:\"Int16\",name:\"anchorX\"},{type:\"Int16\",name:\"anchorY\"},{type:\"Uint16\",name:\"glyphStartIndex\"},{type:\"Uint16\",name:\"numGlyphs\"},{type:\"Uint32\",name:\"vertexStartIndex\"},{type:\"Uint32\",name:\"lineStartIndex\"},{type:\"Uint32\",name:\"lineLength\"},{type:\"Uint16\",name:\"segment\"},{type:\"Uint16\",name:\"lowerSize\"},{type:\"Uint16\",name:\"upperSize\"},{type:\"Float32\",name:\"lineOffsetX\"},{type:\"Float32\",name:\"lineOffsetY\"},{type:\"Uint8\",name:\"writingMode\"},{type:\"Uint8\",name:\"placedOrientation\"},{type:\"Uint8\",name:\"hidden\"},{type:\"Uint32\",name:\"crossTileID\"},{type:\"Int16\",name:\"associatedIconIndex\"}]),Ii([{type:\"Int16\",name:\"anchorX\"},{type:\"Int16\",name:\"anchorY\"},{type:\"Int16\",name:\"rightJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"centerJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"leftJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"verticalPlacedTextSymbolIndex\"},{type:\"Int16\",name:\"placedIconSymbolIndex\"},{type:\"Int16\",name:\"verticalPlacedIconSymbolIndex\"},{type:\"Uint16\",name:\"key\"},{type:\"Uint16\",name:\"textBoxStartIndex\"},{type:\"Uint16\",name:\"textBoxEndIndex\"},{type:\"Uint16\",name:\"verticalTextBoxStartIndex\"},{type:\"Uint16\",name:\"verticalTextBoxEndIndex\"},{type:\"Uint16\",name:\"iconBoxStartIndex\"},{type:\"Uint16\",name:\"iconBoxEndIndex\"},{type:\"Uint16\",name:\"verticalIconBoxStartIndex\"},{type:\"Uint16\",name:\"verticalIconBoxEndIndex\"},{type:\"Uint16\",name:\"featureIndex\"},{type:\"Uint16\",name:\"numHorizontalGlyphVertices\"},{type:\"Uint16\",name:\"numVerticalGlyphVertices\"},{type:\"Uint16\",name:\"numIconVertices\"},{type:\"Uint16\",name:\"numVerticalIconVertices\"},{type:\"Uint16\",name:\"useRuntimeCollisionCircles\"},{type:\"Uint32\",name:\"crossTileID\"},{type:\"Float32\",name:\"textBoxScale\"},{type:\"Float32\",components:2,name:\"textOffset\"},{type:\"Float32\",name:\"collisionCircleDiameter\"}]),Ii([{type:\"Float32\",name:\"offsetX\"}]),Ii([{type:\"Int16\",name:\"x\"},{type:\"Int16\",name:\"y\"},{type:\"Int16\",name:\"tileUnitDistanceFromAnchor\"}]);function el(t,e,r){return t.sections.forEach((function(t){t.text=function(t,e,r){var n=e.layout.get(\"text-transform\").evaluate(r,{});return\"uppercase\"===n?t=t.toLocaleUpperCase():\"lowercase\"===n&&(t=t.toLocaleLowerCase()),hi.applyArabicShaping&&(t=hi.applyArabicShaping(t)),t}(t.text,e,r)})),t}var rl={\"!\":\"\\ufe15\",\"#\":\"\\uff03\",$:\"\\uff04\",\"%\":\"\\uff05\",\"&\":\"\\uff06\",\"(\":\"\\ufe35\",\")\":\"\\ufe36\",\"*\":\"\\uff0a\",\"+\":\"\\uff0b\",\",\":\"\\ufe10\",\"-\":\"\\ufe32\",\".\":\"\\u30fb\",\"/\":\"\\uff0f\",\":\":\"\\ufe13\",\";\":\"\\ufe14\",\"<\":\"\\ufe3f\",\"=\":\"\\uff1d\",\">\":\"\\ufe40\",\"?\":\"\\ufe16\",\"@\":\"\\uff20\",\"[\":\"\\ufe47\",\"\\\\\":\"\\uff3c\",\"]\":\"\\ufe48\",\"^\":\"\\uff3e\",_:\"\\ufe33\",\"`\":\"\\uff40\",\"{\":\"\\ufe37\",\"|\":\"\\u2015\",\"}\":\"\\ufe38\",\"~\":\"\\uff5e\",\"\\xa2\":\"\\uffe0\",\"\\xa3\":\"\\uffe1\",\"\\xa5\":\"\\uffe5\",\"\\xa6\":\"\\uffe4\",\"\\xac\":\"\\uffe2\",\"\\xaf\":\"\\uffe3\",\"\\u2013\":\"\\ufe32\",\"\\u2014\":\"\\ufe31\",\"\\u2018\":\"\\ufe43\",\"\\u2019\":\"\\ufe44\",\"\\u201c\":\"\\ufe41\",\"\\u201d\":\"\\ufe42\",\"\\u2026\":\"\\ufe19\",\"\\u2027\":\"\\u30fb\",\"\\u20a9\":\"\\uffe6\",\"\\u3001\":\"\\ufe11\",\"\\u3002\":\"\\ufe12\",\"\\u3008\":\"\\ufe3f\",\"\\u3009\":\"\\ufe40\",\"\\u300a\":\"\\ufe3d\",\"\\u300b\":\"\\ufe3e\",\"\\u300c\":\"\\ufe41\",\"\\u300d\":\"\\ufe42\",\"\\u300e\":\"\\ufe43\",\"\\u300f\":\"\\ufe44\",\"\\u3010\":\"\\ufe3b\",\"\\u3011\":\"\\ufe3c\",\"\\u3014\":\"\\ufe39\",\"\\u3015\":\"\\ufe3a\",\"\\u3016\":\"\\ufe17\",\"\\u3017\":\"\\ufe18\",\"\\uff01\":\"\\ufe15\",\"\\uff08\":\"\\ufe35\",\"\\uff09\":\"\\ufe36\",\"\\uff0c\":\"\\ufe10\",\"\\uff0d\":\"\\ufe32\",\"\\uff0e\":\"\\u30fb\",\"\\uff1a\":\"\\ufe13\",\"\\uff1b\":\"\\ufe14\",\"\\uff1c\":\"\\ufe3f\",\"\\uff1e\":\"\\ufe40\",\"\\uff1f\":\"\\ufe16\",\"\\uff3b\":\"\\ufe47\",\"\\uff3d\":\"\\ufe48\",\"\\uff3f\":\"\\ufe33\",\"\\uff5b\":\"\\ufe37\",\"\\uff5c\":\"\\u2015\",\"\\uff5d\":\"\\ufe38\",\"\\uff5f\":\"\\ufe35\",\"\\uff60\":\"\\ufe36\",\"\\uff61\":\"\\ufe12\",\"\\uff62\":\"\\ufe41\",\"\\uff63\":\"\\ufe42\"};var nl=function(t,e,r,n,i){var a,o,s=8*i-n-1,l=(1<>1,u=-7,f=r?i-1:0,h=r?-1:1,p=t[e+f];for(f+=h,a=p&(1<<-u)-1,p>>=-u,u+=s;u>0;a=256*a+t[e+f],f+=h,u-=8);for(o=a&(1<<-u)-1,a>>=-u,u+=n;u>0;o=256*o+t[e+f],f+=h,u-=8);if(0===a)a=1-c;else{if(a===l)return o?NaN:1/0*(p?-1:1);o+=Math.pow(2,n),a-=c}return(p?-1:1)*o*Math.pow(2,a-n)},il=function(t,e,r,n,i,a){var o,s,l,c=8*a-i-1,u=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:a-1,d=n?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,o=u):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),(e+=o+f>=1?h/l:h*Math.pow(2,1-f))*l>=2&&(o++,l/=2),o+f>=u?(s=0,o=u):o+f>=1?(s=(e*l-1)*Math.pow(2,i),o+=f):(s=e*Math.pow(2,f-1)*Math.pow(2,i),o=0));i>=8;t[r+p]=255&s,p+=d,s/=256,i-=8);for(o=o<0;t[r+p]=255&o,p+=d,o/=256,c-=8);t[r+p-d]|=128*g},al=ol;function ol(t){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(t)?t:new Uint8Array(t||0),this.pos=0,this.type=0,this.length=this.buf.length}ol.Varint=0,ol.Fixed64=1,ol.Bytes=2,ol.Fixed32=5;var sl=\"undefined\"==typeof TextDecoder?null:new TextDecoder(\"utf8\");function ll(t){return t.type===ol.Bytes?t.readVarint()+t.pos:t.pos+1}function cl(t,e,r){return r?4294967296*e+(t>>>0):4294967296*(e>>>0)+(t>>>0)}function ul(t,e,r){var n=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.floor(Math.log(e)/(7*Math.LN2));r.realloc(n);for(var i=r.pos-1;i>=t;i--)r.buf[i+n]=r.buf[i]}function fl(t,e){for(var r=0;r>>8,t[r+2]=e>>>16,t[r+3]=e>>>24}function wl(t,e){return(t[e]|t[e+1]<<8|t[e+2]<<16)+(t[e+3]<<24)}ol.prototype={destroy:function(){this.buf=null},readFields:function(t,e,r){for(r=r||this.length;this.pos>3,a=this.pos;this.type=7&n,t(i,e,this),this.pos===a&&this.skip(n)}return e},readMessage:function(t,e){return this.readFields(t,e,this.readVarint()+this.pos)},readFixed32:function(){var t=bl(this.buf,this.pos);return this.pos+=4,t},readSFixed32:function(){var t=wl(this.buf,this.pos);return this.pos+=4,t},readFixed64:function(){var t=bl(this.buf,this.pos)+4294967296*bl(this.buf,this.pos+4);return this.pos+=8,t},readSFixed64:function(){var t=bl(this.buf,this.pos)+4294967296*wl(this.buf,this.pos+4);return this.pos+=8,t},readFloat:function(){var t=nl(this.buf,this.pos,!0,23,4);return this.pos+=4,t},readDouble:function(){var t=nl(this.buf,this.pos,!0,52,8);return this.pos+=8,t},readVarint:function(t){var e,r,n=this.buf;return e=127&(r=n[this.pos++]),r<128?e:(e|=(127&(r=n[this.pos++]))<<7,r<128?e:(e|=(127&(r=n[this.pos++]))<<14,r<128?e:(e|=(127&(r=n[this.pos++]))<<21,r<128?e:function(t,e,r){var n,i,a=r.buf;if(i=a[r.pos++],n=(112&i)>>4,i<128)return cl(t,n,e);if(i=a[r.pos++],n|=(127&i)<<3,i<128)return cl(t,n,e);if(i=a[r.pos++],n|=(127&i)<<10,i<128)return cl(t,n,e);if(i=a[r.pos++],n|=(127&i)<<17,i<128)return cl(t,n,e);if(i=a[r.pos++],n|=(127&i)<<24,i<128)return cl(t,n,e);if(i=a[r.pos++],n|=(1&i)<<31,i<128)return cl(t,n,e);throw new Error(\"Expected varint not more than 10 bytes\")}(e|=(15&(r=n[this.pos]))<<28,t,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var t=this.readVarint();return t%2==1?(t+1)/-2:t/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var t=this.readVarint()+this.pos,e=this.pos;return this.pos=t,t-e>=12&&sl?function(t,e,r){return sl.decode(t.subarray(e,r))}(this.buf,e,t):function(t,e,r){var n=\"\",i=e;for(;i239?4:l>223?3:l>191?2:1;if(i+u>r)break;1===u?l<128&&(c=l):2===u?128==(192&(a=t[i+1]))&&(c=(31&l)<<6|63&a)<=127&&(c=null):3===u?(a=t[i+1],o=t[i+2],128==(192&a)&&128==(192&o)&&((c=(15&l)<<12|(63&a)<<6|63&o)<=2047||c>=55296&&c<=57343)&&(c=null)):4===u&&(a=t[i+1],o=t[i+2],s=t[i+3],128==(192&a)&&128==(192&o)&&128==(192&s)&&((c=(15&l)<<18|(63&a)<<12|(63&o)<<6|63&s)<=65535||c>=1114112)&&(c=null)),null===c?(c=65533,u=1):c>65535&&(c-=65536,n+=String.fromCharCode(c>>>10&1023|55296),c=56320|1023&c),n+=String.fromCharCode(c),i+=u}return n}(this.buf,e,t)},readBytes:function(){var t=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,t);return this.pos=t,e},readPackedVarint:function(t,e){if(this.type!==ol.Bytes)return t.push(this.readVarint(e));var r=ll(this);for(t=t||[];this.pos127;);else if(e===ol.Bytes)this.pos=this.readVarint()+this.pos;else if(e===ol.Fixed32)this.pos+=4;else{if(e!==ol.Fixed64)throw new Error(\"Unimplemented type: \"+e);this.pos+=8}},writeTag:function(t,e){this.writeVarint(t<<3|e)},realloc:function(t){for(var e=this.length||16;e268435455||t<0?function(t,e){var r,n;t>=0?(r=t%4294967296|0,n=t/4294967296|0):(n=~(-t/4294967296),4294967295^(r=~(-t%4294967296))?r=r+1|0:(r=0,n=n+1|0));if(t>=0x10000000000000000||t<-0x10000000000000000)throw new Error(\"Given varint doesn't fit into 10 bytes\");e.realloc(10),function(t,e,r){r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos]=127&t}(r,0,e),function(t,e){var r=(7&t)<<4;if(e.buf[e.pos++]|=r|((t>>>=3)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;e.buf[e.pos++]=127&t}(n,e)}(t,this):(this.realloc(4),this.buf[this.pos++]=127&t|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=t>>>7&127))))},writeSVarint:function(t){this.writeVarint(t<0?2*-t-1:2*t)},writeBoolean:function(t){this.writeVarint(Boolean(t))},writeString:function(t){t=String(t),this.realloc(4*t.length),this.pos++;var e=this.pos;this.pos=function(t,e,r){for(var n,i,a=0;a55295&&n<57344){if(!i){n>56319||a+1===e.length?(t[r++]=239,t[r++]=191,t[r++]=189):i=n;continue}if(n<56320){t[r++]=239,t[r++]=191,t[r++]=189,i=n;continue}n=i-55296<<10|n-56320|65536,i=null}else i&&(t[r++]=239,t[r++]=191,t[r++]=189,i=null);n<128?t[r++]=n:(n<2048?t[r++]=n>>6|192:(n<65536?t[r++]=n>>12|224:(t[r++]=n>>18|240,t[r++]=n>>12&63|128),t[r++]=n>>6&63|128),t[r++]=63&n|128)}return r}(this.buf,t,this.pos);var r=this.pos-e;r>=128&&ul(e,r,this),this.pos=e-1,this.writeVarint(r),this.pos+=r},writeFloat:function(t){this.realloc(4),il(this.buf,t,this.pos,!0,23,4),this.pos+=4},writeDouble:function(t){this.realloc(8),il(this.buf,t,this.pos,!0,52,8),this.pos+=8},writeBytes:function(t){var e=t.length;this.writeVarint(e),this.realloc(e);for(var r=0;r=128&&ul(r,n,this),this.pos=r-1,this.writeVarint(n),this.pos+=n},writeMessage:function(t,e,r){this.writeTag(t,ol.Bytes),this.writeRawMessage(e,r)},writePackedVarint:function(t,e){e.length&&this.writeMessage(t,fl,e)},writePackedSVarint:function(t,e){e.length&&this.writeMessage(t,hl,e)},writePackedBoolean:function(t,e){e.length&&this.writeMessage(t,gl,e)},writePackedFloat:function(t,e){e.length&&this.writeMessage(t,pl,e)},writePackedDouble:function(t,e){e.length&&this.writeMessage(t,dl,e)},writePackedFixed32:function(t,e){e.length&&this.writeMessage(t,ml,e)},writePackedSFixed32:function(t,e){e.length&&this.writeMessage(t,vl,e)},writePackedFixed64:function(t,e){e.length&&this.writeMessage(t,yl,e)},writePackedSFixed64:function(t,e){e.length&&this.writeMessage(t,xl,e)},writeBytesField:function(t,e){this.writeTag(t,ol.Bytes),this.writeBytes(e)},writeFixed32Field:function(t,e){this.writeTag(t,ol.Fixed32),this.writeFixed32(e)},writeSFixed32Field:function(t,e){this.writeTag(t,ol.Fixed32),this.writeSFixed32(e)},writeFixed64Field:function(t,e){this.writeTag(t,ol.Fixed64),this.writeFixed64(e)},writeSFixed64Field:function(t,e){this.writeTag(t,ol.Fixed64),this.writeSFixed64(e)},writeVarintField:function(t,e){this.writeTag(t,ol.Varint),this.writeVarint(e)},writeSVarintField:function(t,e){this.writeTag(t,ol.Varint),this.writeSVarint(e)},writeStringField:function(t,e){this.writeTag(t,ol.Bytes),this.writeString(e)},writeFloatField:function(t,e){this.writeTag(t,ol.Fixed32),this.writeFloat(e)},writeDoubleField:function(t,e){this.writeTag(t,ol.Fixed64),this.writeDouble(e)},writeBooleanField:function(t,e){this.writeVarintField(t,Boolean(e))}};function Tl(t,e,r){1===t&&r.readMessage(kl,e)}function kl(t,e,r){if(3===t){var n=r.readMessage(Al,{}),i=n.id,a=n.bitmap,o=n.width,s=n.height,l=n.left,c=n.top,u=n.advance;e.push({id:i,bitmap:new So({width:o+6,height:s+6},a),metrics:{width:o,height:s,left:l,top:c,advance:u}})}}function Al(t,e,r){1===t?e.id=r.readVarint():2===t?e.bitmap=r.readBytes():3===t?e.width=r.readVarint():4===t?e.height=r.readVarint():5===t?e.left=r.readSVarint():6===t?e.top=r.readSVarint():7===t&&(e.advance=r.readVarint())}function Ml(t){for(var e=0,r=0,n=0,i=t;n=0;h--){var p=o[h];if(!(f.w>p.w||f.h>p.h)){if(f.x=p.x,f.y=p.y,l=Math.max(l,f.y+f.h),s=Math.max(s,f.x+f.w),f.w===p.w&&f.h===p.h){var d=o.pop();h0&&N>A&&(A=N)}else{var j=r[S.fontStack],U=j&&j[L];if(U&&U.rect)I=U.rect,P=U.metrics;else{var V=e[S.fontStack],H=V&&V[L];if(!H)continue;P=H.metrics}C=24*(_-S.scale)}D?(t.verticalizable=!0,k.push({glyph:L,imageName:O,x:h,y:p+C,vertical:D,scale:S.scale,fontStack:S.fontStack,sectionIndex:E,metrics:P,rect:I}),h+=z*S.scale+c):(k.push({glyph:L,imageName:O,x:h,y:p+C,vertical:D,scale:S.scale,fontStack:S.fontStack,sectionIndex:E,metrics:P,rect:I}),h+=P.advance*S.scale+c)}if(0!==k.length){var q=h-c;d=Math.max(q,d),Vl(k,0,k.length-1,m,A)}h=0;var G=a*_+A;T.lineOffset=Math.max(A,w),p+=G,g=Math.max(G,g),++v}else p+=a,++v}var Y;var W=p- -17,X=Ul(o),Z=X.horizontalAlign,J=X.verticalAlign;(function(t,e,r,n,i,a,o,s,l){var c=(e-r)*i,u=0;u=a!==o?-s*n- -17:(-n*l+.5)*o;for(var f=0,h=t;f=0&&n>=t&&zl[this.text.charCodeAt(n)];n--)r--;this.text=this.text.substring(t,r),this.sectionIndex=this.sectionIndex.slice(t,r)},Il.prototype.substring=function(t,e){var r=new Il;return r.text=this.text.substring(t,e),r.sectionIndex=this.sectionIndex.slice(t,e),r.sections=this.sections,r},Il.prototype.toString=function(){return this.text},Il.prototype.getMaxScale=function(){var t=this;return this.sectionIndex.reduce((function(e,r){return Math.max(e,t.sections[r].scale)}),0)},Il.prototype.addTextSection=function(t,e){this.text+=t.text,this.sections.push(Pl.forText(t.scale,t.fontStack||e));for(var r=this.sections.length-1,n=0;n=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)};var zl={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},Dl={};function Rl(t,e,r,n,i,a){if(e.imageName){var o=n[e.imageName];return o?o.displaySize[0]*e.scale*24/a+i:0}var s=r[e.fontStack],l=s&&s[t];return l?l.metrics.advance*e.scale+i:0}function Fl(t,e,r,n){var i=Math.pow(t-e,2);return n?t=0,f=0,h=0;h-r/2;){if(--o<0)return!1;s-=t[o].dist(a),a=t[o]}s+=t[o].dist(t[o+1]),o++;for(var l=[],c=0;sn;)c-=l.shift().angleDelta;if(c>i)return!1;o++,s+=f.dist(h)}return!0}function Jl(t){for(var e=0,r=0;rc){var d=(c-l)/p,g=qe(f.x,h.x,d),m=qe(f.y,h.y,d),v=new ql(g,m,h.angleTo(f),u);return v._round(),!o||Zl(t,v,s,o,e)?v:void 0}l+=p}}function tc(t,e,r,n,i,a,o,s,l){var c=Kl(n,a,o),u=Ql(n,i),f=u*o,h=0===t[0].x||t[0].x===l||0===t[0].y||t[0].y===l;return e-f=0&&_=0&&w=0&&p+u<=f){var T=new ql(_,w,x,g);T._round(),i&&!Zl(e,T,o,i,a)||d.push(T)}}h+=y}l||d.length||s||(d=t(e,h/2,n,i,a,o,s,!0,c));return d}(t,h?e/2*s%e:(u/2+2*a)*o*s%e,e,c,r,f,h,!1,l)}function ec(t,e,r,n,a){for(var o=[],s=0;s=n&&h.x>=n||(f.x>=n?f=new i(n,f.y+(h.y-f.y)*((n-f.x)/(h.x-f.x)))._round():h.x>=n&&(h=new i(n,f.y+(h.y-f.y)*((n-f.x)/(h.x-f.x)))._round()),f.y>=a&&h.y>=a||(f.y>=a?f=new i(f.x+(h.x-f.x)*((a-f.y)/(h.y-f.y)),a)._round():h.y>=a&&(h=new i(f.x+(h.x-f.x)*((a-f.y)/(h.y-f.y)),a)._round()),c&&f.equals(c[c.length-1])||(c=[f],o.push(c)),c.push(h)))))}return o}function rc(t,e,r,n){var a=[],o=t.image,s=o.pixelRatio,l=o.paddedRect.w-2,c=o.paddedRect.h-2,u=t.right-t.left,f=t.bottom-t.top,h=o.stretchX||[[0,l]],p=o.stretchY||[[0,c]],d=function(t,e){return t+e[1]-e[0]},g=h.reduce(d,0),m=p.reduce(d,0),v=l-g,y=c-m,x=0,b=g,_=0,w=m,T=0,k=v,A=0,M=y;if(o.content&&n){var S=o.content;x=nc(h,0,S[0]),_=nc(p,0,S[1]),b=nc(h,S[0],S[2]),w=nc(p,S[1],S[3]),T=S[0]-x,A=S[1]-_,k=S[2]-S[0]-b,M=S[3]-S[1]-w}var E=function(n,a,l,c){var h=ac(n.stretch-x,b,u,t.left),p=oc(n.fixed-T,k,n.stretch,g),d=ac(a.stretch-_,w,f,t.top),v=oc(a.fixed-A,M,a.stretch,m),y=ac(l.stretch-x,b,u,t.left),S=oc(l.fixed-T,k,l.stretch,g),E=ac(c.stretch-_,w,f,t.top),L=oc(c.fixed-A,M,c.stretch,m),C=new i(h,d),P=new i(y,d),I=new i(y,E),O=new i(h,E),z=new i(p/s,v/s),D=new i(S/s,L/s),R=e*Math.PI/180;if(R){var F=Math.sin(R),B=Math.cos(R),N=[B,-F,F,B];C._matMult(N),P._matMult(N),O._matMult(N),I._matMult(N)}var j=n.stretch+n.fixed,U=l.stretch+l.fixed,V=a.stretch+a.fixed,H=c.stretch+c.fixed;return{tl:C,tr:P,bl:O,br:I,tex:{x:o.paddedRect.x+1+j,y:o.paddedRect.y+1+V,w:U-j,h:H-V},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:z,pixelOffsetBR:D,minFontScaleX:k/s/u,minFontScaleY:M/s/f,isSDF:r}};if(n&&(o.stretchX||o.stretchY))for(var L=ic(h,v,g),C=ic(p,y,m),P=0;P0&&(d=Math.max(10,d),this.circleDiameter=d)}else{var g=o.top*s-l,m=o.bottom*s+l,v=o.left*s-l,y=o.right*s+l,x=o.collisionPadding;if(x&&(v-=x[0]*s,g-=x[1]*s,y+=x[2]*s,m+=x[3]*s),u){var b=new i(v,g),_=new i(y,g),w=new i(v,m),T=new i(y,m),k=u*Math.PI/180;b._rotate(k),_._rotate(k),w._rotate(k),T._rotate(k),v=Math.min(b.x,_.x,w.x,T.x),y=Math.max(b.x,_.x,w.x,T.x),g=Math.min(b.y,_.y,w.y,T.y),m=Math.max(b.y,_.y,w.y,T.y)}t.emplaceBack(e.x,e.y,v,g,y,m,r,n,a)}this.boxEndIndex=t.length},lc=function(t,e){if(void 0===t&&(t=[]),void 0===e&&(e=cc),this.data=t,this.length=this.data.length,this.compare=e,this.length>0)for(var r=(this.length>>1)-1;r>=0;r--)this._down(r)};function cc(t,e){return te?1:0}function uc(t,e,r){void 0===e&&(e=1),void 0===r&&(r=!1);for(var n=1/0,a=1/0,o=-1/0,s=-1/0,l=t[0],c=0;co)&&(o=u.x),(!c||u.y>s)&&(s=u.y)}var f=o-n,h=s-a,p=Math.min(f,h),d=p/2,g=new lc([],fc);if(0===p)return new i(n,a);for(var m=n;my.d||!y.d)&&(y=b,r&&console.log(\"found best %d after %d probes\",Math.round(1e4*b.d)/1e4,x)),b.max-y.d<=e||(d=b.h/2,g.push(new hc(b.p.x-d,b.p.y-d,d,t)),g.push(new hc(b.p.x+d,b.p.y-d,d,t)),g.push(new hc(b.p.x-d,b.p.y+d,d,t)),g.push(new hc(b.p.x+d,b.p.y+d,d,t)),x+=4)}return r&&(console.log(\"num probes: \"+x),console.log(\"best distance: \"+y.d)),y.p}function fc(t,e){return e.max-t.max}function hc(t,e,r,n){this.p=new i(t,e),this.h=r,this.d=function(t,e){for(var r=!1,n=1/0,i=0;it.y!=u.y>t.y&&t.x<(u.x-c.x)*(t.y-c.y)/(u.y-c.y)+c.x&&(r=!r),n=Math.min(n,ro(t,c,u))}return(r?1:-1)*Math.sqrt(n)}(this.p,n),this.max=this.d+this.h*Math.SQRT2}lc.prototype.push=function(t){this.data.push(t),this.length++,this._up(this.length-1)},lc.prototype.pop=function(){if(0!==this.length){var t=this.data[0],e=this.data.pop();return this.length--,this.length>0&&(this.data[0]=e,this._down(0)),t}},lc.prototype.peek=function(){return this.data[0]},lc.prototype._up=function(t){for(var e=this.data,r=this.compare,n=e[t];t>0;){var i=t-1>>1,a=e[i];if(r(n,a)>=0)break;e[t]=a,t=i}e[t]=n},lc.prototype._down=function(t){for(var e=this.data,r=this.compare,n=this.length>>1,i=e[t];t=0)break;e[t]=o,t=a}e[t]=i};var pc=Number.POSITIVE_INFINITY;function dc(t,e){return e[1]!==pc?function(t,e,r){var n=0,i=0;switch(e=Math.abs(e),r=Math.abs(r),t){case\"top-right\":case\"top-left\":case\"top\":i=r-7;break;case\"bottom-right\":case\"bottom-left\":case\"bottom\":i=7-r}switch(t){case\"top-right\":case\"bottom-right\":case\"right\":n=-e;break;case\"top-left\":case\"bottom-left\":case\"left\":n=e}return[n,i]}(t,e[0],e[1]):function(t,e){var r=0,n=0;e<0&&(e=0);var i=e/Math.sqrt(2);switch(t){case\"top-right\":case\"top-left\":n=i-7;break;case\"bottom-right\":case\"bottom-left\":n=7-i;break;case\"bottom\":n=7-e;break;case\"top\":n=e-7}switch(t){case\"top-right\":case\"bottom-right\":r=-i;break;case\"top-left\":case\"bottom-left\":r=i;break;case\"left\":r=e;break;case\"right\":r=-e}return[r,n]}(t,e[0])}function gc(t){switch(t){case\"right\":case\"top-right\":case\"bottom-right\":return\"right\";case\"left\":case\"top-left\":case\"bottom-left\":return\"left\"}return\"center\"}function mc(t,e,r,n,a,o,s,l,c,u,f,h,p,d,g){var m=function(t,e,r,n,a,o,s,l){for(var c=n.layout.get(\"text-rotate\").evaluate(o,{})*Math.PI/180,u=[],f=0,h=e.positionedLines;f32640&&_(t.layerIds[0]+': Value for \"text-size\" is >= 255. Reduce your \"text-size\".'):\"composite\"===v.kind&&((y=[128*d.compositeTextSizes[0].evaluate(s,{},g),128*d.compositeTextSizes[1].evaluate(s,{},g)])[0]>32640||y[1]>32640)&&_(t.layerIds[0]+': Value for \"text-size\" is >= 255. Reduce your \"text-size\".'),t.addSymbols(t.text,m,y,l,o,s,u,e,c.lineStartIndex,c.lineLength,p,g);for(var x=0,b=f;x=0;o--)if(n.dist(a[o])0)&&(\"constant\"!==a.value.kind||a.value.value.length>0),c=\"constant\"!==s.value.kind||!!s.value.value||Object.keys(s.parameters).length>0,u=i.get(\"symbol-sort-key\");if(this.features=[],l||c){for(var f=e.iconDependencies,h=e.glyphDependencies,p=e.availableImages,d=new pi(this.zoom),g=0,m=t;g=0;for(var O=0,z=k.sections;O=0;s--)a[s]={x:e[s].x,y:e[s].y,tileUnitDistanceFromAnchor:i},s>0&&(i+=e[s-1].dist(e[s]));for(var l=0;l0},Mc.prototype.hasIconData=function(){return this.icon.segments.get().length>0},Mc.prototype.hasDebugData=function(){return this.textCollisionBox&&this.iconCollisionBox},Mc.prototype.hasTextCollisionBoxData=function(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0},Mc.prototype.hasIconCollisionBoxData=function(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0},Mc.prototype.addIndicesForPlacedSymbol=function(t,e){for(var r=t.placedSymbolArray.get(e),n=r.vertexStartIndex+4*r.numGlyphs,i=r.vertexStartIndex;i1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(t),this.sortedAngle=t,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(var r=0,n=this.symbolInstanceIndexes;r=0&&n.indexOf(t)===r&&e.addIndicesForPlacedSymbol(e.text,t)})),a.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,a.verticalPlacedTextSymbolIndex),a.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,a.placedIconSymbolIndex),a.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,a.verticalPlacedIconSymbolIndex)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}},Nn(\"SymbolBucket\",Mc,{omit:[\"layers\",\"collisionBoxArray\",\"features\",\"compareText\"]}),Mc.MAX_GLYPHS=65535,Mc.addDynamicAttributes=wc;var Sc=new Si({\"symbol-placement\":new wi(Lt.layout_symbol[\"symbol-placement\"]),\"symbol-spacing\":new wi(Lt.layout_symbol[\"symbol-spacing\"]),\"symbol-avoid-edges\":new wi(Lt.layout_symbol[\"symbol-avoid-edges\"]),\"symbol-sort-key\":new Ti(Lt.layout_symbol[\"symbol-sort-key\"]),\"symbol-z-order\":new wi(Lt.layout_symbol[\"symbol-z-order\"]),\"icon-allow-overlap\":new wi(Lt.layout_symbol[\"icon-allow-overlap\"]),\"icon-ignore-placement\":new wi(Lt.layout_symbol[\"icon-ignore-placement\"]),\"icon-optional\":new wi(Lt.layout_symbol[\"icon-optional\"]),\"icon-rotation-alignment\":new wi(Lt.layout_symbol[\"icon-rotation-alignment\"]),\"icon-size\":new Ti(Lt.layout_symbol[\"icon-size\"]),\"icon-text-fit\":new wi(Lt.layout_symbol[\"icon-text-fit\"]),\"icon-text-fit-padding\":new wi(Lt.layout_symbol[\"icon-text-fit-padding\"]),\"icon-image\":new Ti(Lt.layout_symbol[\"icon-image\"]),\"icon-rotate\":new Ti(Lt.layout_symbol[\"icon-rotate\"]),\"icon-padding\":new wi(Lt.layout_symbol[\"icon-padding\"]),\"icon-keep-upright\":new wi(Lt.layout_symbol[\"icon-keep-upright\"]),\"icon-offset\":new Ti(Lt.layout_symbol[\"icon-offset\"]),\"icon-anchor\":new Ti(Lt.layout_symbol[\"icon-anchor\"]),\"icon-pitch-alignment\":new wi(Lt.layout_symbol[\"icon-pitch-alignment\"]),\"text-pitch-alignment\":new wi(Lt.layout_symbol[\"text-pitch-alignment\"]),\"text-rotation-alignment\":new wi(Lt.layout_symbol[\"text-rotation-alignment\"]),\"text-field\":new Ti(Lt.layout_symbol[\"text-field\"]),\"text-font\":new Ti(Lt.layout_symbol[\"text-font\"]),\"text-size\":new Ti(Lt.layout_symbol[\"text-size\"]),\"text-max-width\":new Ti(Lt.layout_symbol[\"text-max-width\"]),\"text-line-height\":new wi(Lt.layout_symbol[\"text-line-height\"]),\"text-letter-spacing\":new Ti(Lt.layout_symbol[\"text-letter-spacing\"]),\"text-justify\":new Ti(Lt.layout_symbol[\"text-justify\"]),\"text-radial-offset\":new Ti(Lt.layout_symbol[\"text-radial-offset\"]),\"text-variable-anchor\":new wi(Lt.layout_symbol[\"text-variable-anchor\"]),\"text-anchor\":new Ti(Lt.layout_symbol[\"text-anchor\"]),\"text-max-angle\":new wi(Lt.layout_symbol[\"text-max-angle\"]),\"text-writing-mode\":new wi(Lt.layout_symbol[\"text-writing-mode\"]),\"text-rotate\":new Ti(Lt.layout_symbol[\"text-rotate\"]),\"text-padding\":new wi(Lt.layout_symbol[\"text-padding\"]),\"text-keep-upright\":new wi(Lt.layout_symbol[\"text-keep-upright\"]),\"text-transform\":new Ti(Lt.layout_symbol[\"text-transform\"]),\"text-offset\":new Ti(Lt.layout_symbol[\"text-offset\"]),\"text-allow-overlap\":new wi(Lt.layout_symbol[\"text-allow-overlap\"]),\"text-ignore-placement\":new wi(Lt.layout_symbol[\"text-ignore-placement\"]),\"text-optional\":new wi(Lt.layout_symbol[\"text-optional\"])}),Ec={paint:new Si({\"icon-opacity\":new Ti(Lt.paint_symbol[\"icon-opacity\"]),\"icon-color\":new Ti(Lt.paint_symbol[\"icon-color\"]),\"icon-halo-color\":new Ti(Lt.paint_symbol[\"icon-halo-color\"]),\"icon-halo-width\":new Ti(Lt.paint_symbol[\"icon-halo-width\"]),\"icon-halo-blur\":new Ti(Lt.paint_symbol[\"icon-halo-blur\"]),\"icon-translate\":new wi(Lt.paint_symbol[\"icon-translate\"]),\"icon-translate-anchor\":new wi(Lt.paint_symbol[\"icon-translate-anchor\"]),\"text-opacity\":new Ti(Lt.paint_symbol[\"text-opacity\"]),\"text-color\":new Ti(Lt.paint_symbol[\"text-color\"],{runtimeType:Ut,getOverride:function(t){return t.textColor},hasOverride:function(t){return!!t.textColor}}),\"text-halo-color\":new Ti(Lt.paint_symbol[\"text-halo-color\"]),\"text-halo-width\":new Ti(Lt.paint_symbol[\"text-halo-width\"]),\"text-halo-blur\":new Ti(Lt.paint_symbol[\"text-halo-blur\"]),\"text-translate\":new wi(Lt.paint_symbol[\"text-translate\"]),\"text-translate-anchor\":new wi(Lt.paint_symbol[\"text-translate-anchor\"])}),layout:Sc},Lc=function(t){this.type=t.property.overrides?t.property.overrides.runtimeType:Ft,this.defaultValue=t};Lc.prototype.evaluate=function(t){if(t.formattedSection){var e=this.defaultValue.property.overrides;if(e&&e.hasOverride(t.formattedSection))return e.getOverride(t.formattedSection)}return t.feature&&t.featureState?this.defaultValue.evaluate(t.feature,t.featureState):this.defaultValue.property.specification.default},Lc.prototype.eachChild=function(t){this.defaultValue.isConstant()||t(this.defaultValue.value._styleExpression.expression)},Lc.prototype.outputDefined=function(){return!1},Lc.prototype.serialize=function(){return null},Nn(\"FormatSectionOverride\",Lc,{omit:[\"defaultValue\"]});var Cc=function(t){function e(e){t.call(this,e,Ec)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.recalculate=function(e,r){if(t.prototype.recalculate.call(this,e,r),\"auto\"===this.layout.get(\"icon-rotation-alignment\")&&(\"point\"!==this.layout.get(\"symbol-placement\")?this.layout._values[\"icon-rotation-alignment\"]=\"map\":this.layout._values[\"icon-rotation-alignment\"]=\"viewport\"),\"auto\"===this.layout.get(\"text-rotation-alignment\")&&(\"point\"!==this.layout.get(\"symbol-placement\")?this.layout._values[\"text-rotation-alignment\"]=\"map\":this.layout._values[\"text-rotation-alignment\"]=\"viewport\"),\"auto\"===this.layout.get(\"text-pitch-alignment\")&&(this.layout._values[\"text-pitch-alignment\"]=this.layout.get(\"text-rotation-alignment\")),\"auto\"===this.layout.get(\"icon-pitch-alignment\")&&(this.layout._values[\"icon-pitch-alignment\"]=this.layout.get(\"icon-rotation-alignment\")),\"point\"===this.layout.get(\"symbol-placement\")){var n=this.layout.get(\"text-writing-mode\");if(n){for(var i=[],a=0,o=n;a\",targetMapId:n,sourceMapId:a.mapId})}}},qc.prototype.receive=function(t){var e=t.data,r=e.id;if(r&&(!e.targetMapId||this.mapId===e.targetMapId))if(\"\"===e.type){delete this.tasks[r];var n=this.cancelCallbacks[r];delete this.cancelCallbacks[r],n&&n()}else k()||e.mustQueue?(this.tasks[r]=e,this.taskQueue.push(r),this.invoker.trigger()):this.processTask(r,e)},qc.prototype.process=function(){if(this.taskQueue.length){var t=this.taskQueue.shift(),e=this.tasks[t];delete this.tasks[t],this.taskQueue.length&&this.invoker.trigger(),e&&this.processTask(t,e)}},qc.prototype.processTask=function(t,e){var r=this;if(\"\"===e.type){var n=this.callbacks[t];delete this.callbacks[t],n&&(e.error?n(qn(e.error)):n(null,qn(e.data)))}else{var i=!1,a=S(this.globalScope)?void 0:[],o=e.hasCallback?function(e,n){i=!0,delete r.cancelCallbacks[t],r.target.postMessage({id:t,type:\"\",sourceMapId:r.mapId,error:e?Hn(e):null,data:Hn(n,a)},a)}:function(t){i=!0},s=null,l=qn(e.data);if(this.parent[e.type])s=this.parent[e.type](e.sourceMapId,l,o);else if(this.parent.getWorkerSource){var c=e.type.split(\".\");s=this.parent.getWorkerSource(e.sourceMapId,c[0],l.source)[c[1]](l,o)}else o(new Error(\"Could not find function \"+e.type));!i&&s&&s.cancel&&(this.cancelCallbacks[t]=s.cancel)}},qc.prototype.remove=function(){this.invoker.remove(),this.target.removeEventListener(\"message\",this.receive,!1)};var Yc=function(t,e){t&&(e?this.setSouthWest(t).setNorthEast(e):4===t.length?this.setSouthWest([t[0],t[1]]).setNorthEast([t[2],t[3]]):this.setSouthWest(t[0]).setNorthEast(t[1]))};Yc.prototype.setNorthEast=function(t){return this._ne=t instanceof Wc?new Wc(t.lng,t.lat):Wc.convert(t),this},Yc.prototype.setSouthWest=function(t){return this._sw=t instanceof Wc?new Wc(t.lng,t.lat):Wc.convert(t),this},Yc.prototype.extend=function(t){var e,r,n=this._sw,i=this._ne;if(t instanceof Wc)e=t,r=t;else{if(!(t instanceof Yc)){if(Array.isArray(t)){if(4===t.length||t.every(Array.isArray)){var a=t;return this.extend(Yc.convert(a))}var o=t;return this.extend(Wc.convert(o))}return this}if(e=t._sw,r=t._ne,!e||!r)return this}return n||i?(n.lng=Math.min(e.lng,n.lng),n.lat=Math.min(e.lat,n.lat),i.lng=Math.max(r.lng,i.lng),i.lat=Math.max(r.lat,i.lat)):(this._sw=new Wc(e.lng,e.lat),this._ne=new Wc(r.lng,r.lat)),this},Yc.prototype.getCenter=function(){return new Wc((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)},Yc.prototype.getSouthWest=function(){return this._sw},Yc.prototype.getNorthEast=function(){return this._ne},Yc.prototype.getNorthWest=function(){return new Wc(this.getWest(),this.getNorth())},Yc.prototype.getSouthEast=function(){return new Wc(this.getEast(),this.getSouth())},Yc.prototype.getWest=function(){return this._sw.lng},Yc.prototype.getSouth=function(){return this._sw.lat},Yc.prototype.getEast=function(){return this._ne.lng},Yc.prototype.getNorth=function(){return this._ne.lat},Yc.prototype.toArray=function(){return[this._sw.toArray(),this._ne.toArray()]},Yc.prototype.toString=function(){return\"LngLatBounds(\"+this._sw.toString()+\", \"+this._ne.toString()+\")\"},Yc.prototype.isEmpty=function(){return!(this._sw&&this._ne)},Yc.prototype.contains=function(t){var e=Wc.convert(t),r=e.lng,n=e.lat,i=this._sw.lat<=n&&n<=this._ne.lat,a=this._sw.lng<=r&&r<=this._ne.lng;return this._sw.lng>this._ne.lng&&(a=this._sw.lng>=r&&r>=this._ne.lng),i&&a},Yc.convert=function(t){return!t||t instanceof Yc?t:new Yc(t)};var Wc=function(t,e){if(isNaN(t)||isNaN(e))throw new Error(\"Invalid LngLat object: (\"+t+\", \"+e+\")\");if(this.lng=+t,this.lat=+e,this.lat>90||this.lat<-90)throw new Error(\"Invalid LngLat latitude value: must be between -90 and 90\")};Wc.prototype.wrap=function(){return new Wc(c(this.lng,-180,180),this.lat)},Wc.prototype.toArray=function(){return[this.lng,this.lat]},Wc.prototype.toString=function(){return\"LngLat(\"+this.lng+\", \"+this.lat+\")\"},Wc.prototype.distanceTo=function(t){var e=Math.PI/180,r=this.lat*e,n=t.lat*e,i=Math.sin(r)*Math.sin(n)+Math.cos(r)*Math.cos(n)*Math.cos((t.lng-this.lng)*e);return 6371008.8*Math.acos(Math.min(i,1))},Wc.prototype.toBounds=function(t){void 0===t&&(t=0);var e=360*t/40075017,r=e/Math.cos(Math.PI/180*this.lat);return new Yc(new Wc(this.lng-r,this.lat-e),new Wc(this.lng+r,this.lat+e))},Wc.convert=function(t){if(t instanceof Wc)return t;if(Array.isArray(t)&&(2===t.length||3===t.length))return new Wc(Number(t[0]),Number(t[1]));if(!Array.isArray(t)&&\"object\"==typeof t&&null!==t)return new Wc(Number(\"lng\"in t?t.lng:t.lon),Number(t.lat));throw new Error(\"`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]\")};var Xc=2*Math.PI*6371008.8;function Zc(t){return Xc*Math.cos(t*Math.PI/180)}function Jc(t){return(180+t)/360}function Kc(t){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t*Math.PI/360)))/360}function Qc(t,e){return t/Zc(e)}function $c(t){var e=180-360*t;return 360/Math.PI*Math.atan(Math.exp(e*Math.PI/180))-90}var tu=function(t,e,r){void 0===r&&(r=0),this.x=+t,this.y=+e,this.z=+r};tu.fromLngLat=function(t,e){void 0===e&&(e=0);var r=Wc.convert(t);return new tu(Jc(r.lng),Kc(r.lat),Qc(e,r.lat))},tu.prototype.toLngLat=function(){return new Wc(360*this.x-180,$c(this.y))},tu.prototype.toAltitude=function(){return t=this.z,e=this.y,t*Zc($c(e));var t,e},tu.prototype.meterInMercatorCoordinateUnits=function(){return 1/Xc*(t=$c(this.y),1/Math.cos(t*Math.PI/180));var t};var eu=function(t,e,r){this.z=t,this.x=e,this.y=r,this.key=iu(0,t,t,e,r)};eu.prototype.equals=function(t){return this.z===t.z&&this.x===t.x&&this.y===t.y},eu.prototype.url=function(t,e){var r,n,i,a,o,s=(r=this.x,n=this.y,i=this.z,a=Gc(256*r,256*(n=Math.pow(2,i)-n-1),i),o=Gc(256*(r+1),256*(n+1),i),a[0]+\",\"+a[1]+\",\"+o[0]+\",\"+o[1]),l=function(t,e,r){for(var n,i=\"\",a=t;a>0;a--)i+=(e&(n=1<this.canonical.z?new nu(t,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new nu(t,this.wrap,t,this.canonical.x>>e,this.canonical.y>>e)},nu.prototype.calculateScaledKey=function(t,e){var r=this.canonical.z-t;return t>this.canonical.z?iu(this.wrap*+e,t,this.canonical.z,this.canonical.x,this.canonical.y):iu(this.wrap*+e,t,t,this.canonical.x>>r,this.canonical.y>>r)},nu.prototype.isChildOf=function(t){if(t.wrap!==this.wrap)return!1;var e=this.canonical.z-t.canonical.z;return 0===t.overscaledZ||t.overscaledZ>e&&t.canonical.y===this.canonical.y>>e},nu.prototype.children=function(t){if(this.overscaledZ>=t)return[new nu(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];var e=this.canonical.z+1,r=2*this.canonical.x,n=2*this.canonical.y;return[new nu(e,this.wrap,e,r,n),new nu(e,this.wrap,e,r+1,n),new nu(e,this.wrap,e,r,n+1),new nu(e,this.wrap,e,r+1,n+1)]},nu.prototype.isLessThan=function(t){return this.wrapt.wrap)&&(this.overscaledZt.overscaledZ)&&(this.canonical.xt.canonical.x)&&this.canonical.y=this.dim+1||e<-1||e>=this.dim+1)throw new RangeError(\"out of range source coordinates for DEM data\");return(e+1)*this.stride+(t+1)},au.prototype._unpackMapbox=function(t,e,r){return(256*t*256+256*e+r)/10-1e4},au.prototype._unpackTerrarium=function(t,e,r){return 256*t+e+r/256-32768},au.prototype.getPixels=function(){return new Eo({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))},au.prototype.backfillBorder=function(t,e,r){if(this.dim!==t.dim)throw new Error(\"dem dimension mismatch\");var n=e*this.dim,i=e*this.dim+this.dim,a=r*this.dim,o=r*this.dim+this.dim;switch(e){case-1:n=i-1;break;case 1:i=n+1}switch(r){case-1:a=o-1;break;case 1:o=a+1}for(var s=-e*this.dim,l=-r*this.dim,c=a;c=0&&u[3]>=0&&s.insert(o,u[0],u[1],u[2],u[3])}},uu.prototype.loadVTLayers=function(){return this.vtLayers||(this.vtLayers=new Ls.VectorTile(new al(this.rawTileData)).layers,this.sourceLayerCoder=new ou(this.vtLayers?Object.keys(this.vtLayers).sort():[\"_geojsonTileLayer\"])),this.vtLayers},uu.prototype.query=function(t,e,r,n){var a=this;this.loadVTLayers();for(var o=t.params||{},s=8192/t.tileSize/t.scale,l=sn(o.filter),c=t.queryGeometry,u=t.queryPadding*s,f=hu(c),h=this.grid.query(f.minX-u,f.minY-u,f.maxX+u,f.maxY+u),p=hu(t.cameraQueryGeometry),d=this.grid3D.query(p.minX-u,p.minY-u,p.maxX+u,p.maxY+u,(function(e,r,n,a){return function(t,e,r,n,a){for(var o=0,s=t;o=l.x&&a>=l.y)return!0}var c=[new i(e,r),new i(e,a),new i(n,a),new i(n,r)];if(t.length>2)for(var u=0,f=c;u=0)return!0;return!1}(a,f)){var h=this.sourceLayerCoder.decode(r),p=this.vtLayers[h].feature(n);if(i.filter(new pi(this.tileID.overscaledZ),p))for(var d=this.getId(p,h),g=0;gn)i=!1;else if(e)if(this.expirationTimeot&&(t.getActor().send(\"enforceCacheSizeLimit\",at),ht=0)},t.clamp=l,t.clearTileCache=function(t){var e=self.caches.delete(\"mapbox-tiles\");t&&e.catch(t).then((function(){return t()}))},t.clipLine=ec,t.clone=function(t){var e=new fo(16);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e},t.clone$1=x,t.clone$2=function(t){var e=new fo(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e},t.collisionCircleLayout=tl,t.config=F,t.create=function(){var t=new fo(16);return fo!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0),t[0]=1,t[5]=1,t[10]=1,t[15]=1,t},t.create$1=function(){var t=new fo(9);return fo!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[5]=0,t[6]=0,t[7]=0),t[0]=1,t[4]=1,t[8]=1,t},t.create$2=function(){var t=new fo(4);return fo!=Float32Array&&(t[1]=0,t[2]=0),t[0]=1,t[3]=1,t},t.createCommonjsModule=e,t.createExpression=Wr,t.createLayout=Ii,t.createStyleLayer=function(t){return\"custom\"===t.type?new Dc(t):new Rc[t.type](t)},t.cross=function(t,e,r){var n=e[0],i=e[1],a=e[2],o=r[0],s=r[1],l=r[2];return t[0]=i*l-a*s,t[1]=a*o-n*l,t[2]=n*s-i*o,t},t.deepEqual=function t(e,r){if(Array.isArray(e)){if(!Array.isArray(r)||e.length!==r.length)return!1;for(var n=0;n0&&(a=1/Math.sqrt(a)),t[0]=e[0]*a,t[1]=e[1]*a,t[2]=e[2]*a,t},t.number=qe,t.offscreenCanvasSupported=pt,t.ortho=function(t,e,r,n,i,a,o){var s=1/(e-r),l=1/(n-i),c=1/(a-o);return t[0]=-2*s,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*l,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*c,t[11]=0,t[12]=(e+r)*s,t[13]=(i+n)*l,t[14]=(o+a)*c,t[15]=1,t},t.parseGlyphPBF=function(t){return new al(t).readFields(Tl,[])},t.pbf=al,t.performSymbolLayout=function(t,e,r,n,i,a,o){t.createArrays();var s=512*t.overscaling;t.tilePixelRatio=8192/s,t.compareText={},t.iconsNeedLinear=!1;var l=t.layers[0].layout,c=t.layers[0]._unevaluatedLayout._values,u={};if(\"composite\"===t.textSizeData.kind){var f=t.textSizeData,h=f.minZoom,p=f.maxZoom;u.compositeTextSizes=[c[\"text-size\"].possiblyEvaluate(new pi(h),o),c[\"text-size\"].possiblyEvaluate(new pi(p),o)]}if(\"composite\"===t.iconSizeData.kind){var d=t.iconSizeData,g=d.minZoom,m=d.maxZoom;u.compositeIconSizes=[c[\"icon-size\"].possiblyEvaluate(new pi(g),o),c[\"icon-size\"].possiblyEvaluate(new pi(m),o)]}u.layoutTextSize=c[\"text-size\"].possiblyEvaluate(new pi(t.zoom+1),o),u.layoutIconSize=c[\"icon-size\"].possiblyEvaluate(new pi(t.zoom+1),o),u.textMaxSize=c[\"text-size\"].possiblyEvaluate(new pi(18));for(var v=24*l.get(\"text-line-height\"),y=\"map\"===l.get(\"text-rotation-alignment\")&&\"point\"!==l.get(\"symbol-placement\"),x=l.get(\"text-keep-upright\"),b=l.get(\"text-size\"),w=function(){var a=k[T],s=l.get(\"text-font\").evaluate(a,{},o).join(\",\"),c=b.evaluate(a,{},o),f=u.layoutTextSize.evaluate(a,{},o),h=u.layoutIconSize.evaluate(a,{},o),p={horizontal:{},vertical:void 0},d=a.text,g=[0,0];if(d){var m=d.toString(),w=24*l.get(\"text-letter-spacing\").evaluate(a,{},o),A=function(t){for(var e=0,r=t;e=8192||f.y<0||f.y>=8192||function(t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m,v,y,x,b,w,T,k,A){var M,S,E,L,C,P=t.addToLineVertexArray(e,r),I=0,O=0,z=0,D=0,R=-1,F=-1,B={},N=ya(\"\"),j=0,U=0;void 0===s._unevaluatedLayout.getValue(\"text-radial-offset\")?(M=s.layout.get(\"text-offset\").evaluate(b,{},k).map((function(t){return 24*t})),j=M[0],U=M[1]):(j=24*s.layout.get(\"text-radial-offset\").evaluate(b,{},k),U=pc);if(t.allowVerticalPlacement&&n.vertical){var V=s.layout.get(\"text-rotate\").evaluate(b,{},k)+90,H=n.vertical;L=new sc(l,e,c,u,f,H,h,p,d,V),o&&(C=new sc(l,e,c,u,f,o,m,v,d,V))}if(i){var q=s.layout.get(\"icon-rotate\").evaluate(b,{}),G=\"none\"!==s.layout.get(\"icon-text-fit\"),Y=rc(i,q,T,G),W=o?rc(o,q,T,G):void 0;E=new sc(l,e,c,u,f,i,m,v,!1,q),I=4*Y.length;var X=t.iconSizeData,Z=null;\"source\"===X.kind?(Z=[128*s.layout.get(\"icon-size\").evaluate(b,{})])[0]>32640&&_(t.layerIds[0]+': Value for \"icon-size\" is >= 255. Reduce your \"icon-size\".'):\"composite\"===X.kind&&((Z=[128*w.compositeIconSizes[0].evaluate(b,{},k),128*w.compositeIconSizes[1].evaluate(b,{},k)])[0]>32640||Z[1]>32640)&&_(t.layerIds[0]+': Value for \"icon-size\" is >= 255. Reduce your \"icon-size\".'),t.addSymbols(t.icon,Y,Z,x,y,b,!1,e,P.lineStartIndex,P.lineLength,-1,k),R=t.icon.placedSymbolArray.length-1,W&&(O=4*W.length,t.addSymbols(t.icon,W,Z,x,y,b,Cl.vertical,e,P.lineStartIndex,P.lineLength,-1,k),F=t.icon.placedSymbolArray.length-1)}for(var J in n.horizontal){var K=n.horizontal[J];if(!S){N=ya(K.text);var Q=s.layout.get(\"text-rotate\").evaluate(b,{},k);S=new sc(l,e,c,u,f,K,h,p,d,Q)}var $=1===K.positionedLines.length;if(z+=mc(t,e,K,a,s,d,b,g,P,n.vertical?Cl.horizontal:Cl.horizontalOnly,$?Object.keys(n.horizontal):[J],B,R,w,k),$)break}n.vertical&&(D+=mc(t,e,n.vertical,a,s,d,b,g,P,Cl.vertical,[\"vertical\"],B,F,w,k));var tt=S?S.boxStartIndex:t.collisionBoxArray.length,et=S?S.boxEndIndex:t.collisionBoxArray.length,rt=L?L.boxStartIndex:t.collisionBoxArray.length,nt=L?L.boxEndIndex:t.collisionBoxArray.length,it=E?E.boxStartIndex:t.collisionBoxArray.length,at=E?E.boxEndIndex:t.collisionBoxArray.length,ot=C?C.boxStartIndex:t.collisionBoxArray.length,st=C?C.boxEndIndex:t.collisionBoxArray.length,lt=-1,ct=function(t,e){return t&&t.circleDiameter?Math.max(t.circleDiameter,e):e};lt=ct(S,lt),lt=ct(L,lt),lt=ct(E,lt);var ut=(lt=ct(C,lt))>-1?1:0;ut&&(lt*=A/24);t.glyphOffsetArray.length>=Mc.MAX_GLYPHS&&_(\"Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907\");void 0!==b.sortKey&&t.addToSortKeyRanges(t.symbolInstances.length,b.sortKey);t.symbolInstances.emplaceBack(e.x,e.y,B.right>=0?B.right:-1,B.center>=0?B.center:-1,B.left>=0?B.left:-1,B.vertical||-1,R,F,N,tt,et,rt,nt,it,at,ot,st,c,z,D,I,O,ut,0,h,j,U,lt)}(t,f,s,r,n,i,h,t.layers[0],t.collisionBoxArray,e.index,e.sourceLayerIndex,t.index,v,w,A,l,x,T,M,d,e,a,c,u,o)};if(\"line\"===S)for(var P=0,I=ec(e.geometry,0,0,8192,8192);P1){var V=$l(U,k,r.vertical||g,n,24,y);V&&C(U,V)}}else if(\"Polygon\"===e.type)for(var H=0,q=hs(e.geometry,0);H=E.maxzoom))if(\"none\"!==E.visibility)o(S,this.zoom,n),(g[E.id]=E.createBucket({index:u.bucketLayerIDs.length,layers:S,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:b,sourceID:this.source})).populate(_,m,this.tileID.canonical),u.bucketLayerIDs.push(S.map((function(t){return t.id})))}}}var L=t.mapObject(m.glyphDependencies,(function(t){return Object.keys(t).map(Number)}));Object.keys(L).length?a.send(\"getGlyphs\",{uid:this.uid,stacks:L},(function(t,e){f||(f=t,h=e,I.call(l))})):h={};var C=Object.keys(m.iconDependencies);C.length?a.send(\"getImages\",{icons:C,source:this.source,tileID:this.tileID,type:\"icons\"},(function(t,e){f||(f=t,p=e,I.call(l))})):p={};var P=Object.keys(m.patternDependencies);function I(){if(f)return s(f);if(h&&p&&d){var e=new i(h),r=new t.ImageAtlas(p,d);for(var a in g){var l=g[a];l instanceof t.SymbolBucket?(o(l.layers,this.zoom,n),t.performSymbolLayout(l,h,e.positions,p,r.iconPositions,this.showCollisionBoxes,this.tileID.canonical)):l.hasPattern&&(l instanceof t.LineBucket||l instanceof t.FillBucket||l instanceof t.FillExtrusionBucket)&&(o(l.layers,this.zoom,n),l.addFeatures(m,this.tileID.canonical,r.patternPositions))}this.status=\"done\",s(null,{buckets:t.values(g).filter((function(t){return!t.isEmpty()})),featureIndex:u,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:e.image,imageAtlas:r,glyphMap:this.returnDependencies?h:null,iconMap:this.returnDependencies?p:null,glyphPositions:this.returnDependencies?e.positions:null})}}P.length?a.send(\"getImages\",{icons:P,source:this.source,tileID:this.tileID,type:\"patterns\"},(function(t,e){f||(f=t,d=e,I.call(l))})):d={},I.call(this)};var l=function(t,e,r,n){this.actor=t,this.layerIndex=e,this.availableImages=r,this.loadVectorData=n||s,this.loading={},this.loaded={}};l.prototype.loadTile=function(e,r){var n=this,i=e.uid;this.loading||(this.loading={});var o=!!(e&&e.request&&e.request.collectResourceTiming)&&new t.RequestPerformance(e.request),s=this.loading[i]=new a(e);s.abort=this.loadVectorData(e,(function(e,a){if(delete n.loading[i],e||!a)return s.status=\"done\",n.loaded[i]=s,r(e);var l=a.rawData,c={};a.expires&&(c.expires=a.expires),a.cacheControl&&(c.cacheControl=a.cacheControl);var u={};if(o){var f=o.finish();f&&(u.resourceTiming=JSON.parse(JSON.stringify(f)))}s.vectorTile=a.vectorTile,s.parse(a.vectorTile,n.layerIndex,n.availableImages,n.actor,(function(e,n){if(e||!n)return r(e);r(null,t.extend({rawTileData:l.slice(0)},n,c,u))})),n.loaded=n.loaded||{},n.loaded[i]=s}))},l.prototype.reloadTile=function(t,e){var r=this,n=this.loaded,i=t.uid,a=this;if(n&&n[i]){var o=n[i];o.showCollisionBoxes=t.showCollisionBoxes;var s=function(t,n){var i=o.reloadCallback;i&&(delete o.reloadCallback,o.parse(o.vectorTile,a.layerIndex,r.availableImages,a.actor,i)),e(t,n)};\"parsing\"===o.status?o.reloadCallback=s:\"done\"===o.status&&(o.vectorTile?o.parse(o.vectorTile,this.layerIndex,this.availableImages,this.actor,s):s())}},l.prototype.abortTile=function(t,e){var r=this.loading,n=t.uid;r&&r[n]&&r[n].abort&&(r[n].abort(),delete r[n]),e()},l.prototype.removeTile=function(t,e){var r=this.loaded,n=t.uid;r&&r[n]&&delete r[n],e()};var c=t.window.ImageBitmap,u=function(){this.loaded={}};u.prototype.loadTile=function(e,r){var n=e.uid,i=e.encoding,a=e.rawImageData,o=c&&a instanceof c?this.getImageData(a):a,s=new t.DEMData(n,o,i);this.loaded=this.loaded||{},this.loaded[n]=s,r(null,s)},u.prototype.getImageData=function(e){this.offscreenCanvas&&this.offscreenCanvasContext||(this.offscreenCanvas=new OffscreenCanvas(e.width,e.height),this.offscreenCanvasContext=this.offscreenCanvas.getContext(\"2d\")),this.offscreenCanvas.width=e.width,this.offscreenCanvas.height=e.height,this.offscreenCanvasContext.drawImage(e,0,0,e.width,e.height);var r=this.offscreenCanvasContext.getImageData(-1,-1,e.width+2,e.height+2);return this.offscreenCanvasContext.clearRect(0,0,this.offscreenCanvas.width,this.offscreenCanvas.height),new t.RGBAImage({width:r.width,height:r.height},r.data)},u.prototype.removeTile=function(t){var e=this.loaded,r=t.uid;e&&e[r]&&delete e[r]};var f=function t(e,r){var n,i=e&&e.type;if(\"FeatureCollection\"===i)for(n=0;n=0!=!!e&&t.reverse()}var d=t.vectorTile.VectorTileFeature.prototype.toGeoJSON,g=function(e){this._feature=e,this.extent=t.EXTENT,this.type=e.type,this.properties=e.tags,\"id\"in e&&!isNaN(e.id)&&(this.id=parseInt(e.id,10))};g.prototype.loadGeometry=function(){if(1===this._feature.type){for(var e=[],r=0,n=this._feature.geometry;r>31}function P(t,e){for(var r=t.loadGeometry(),n=t.type,i=0,a=0,o=r.length,s=0;s>1;!function t(e,r,n,i,a,o){for(;a>i;){if(a-i>600){var s=a-i+1,l=n-i+1,c=Math.log(s),u=.5*Math.exp(2*c/3),f=.5*Math.sqrt(c*u*(s-u)/s)*(l-s/2<0?-1:1),h=Math.max(i,Math.floor(n-l*u/s+f)),p=Math.min(a,Math.floor(n+(s-l)*u/s+f));t(e,r,n,h,p,o)}var d=r[2*n+o],g=i,m=a;for(z(e,r,i,n),r[2*a+o]>d&&z(e,r,i,a);gd;)m--}r[2*i+o]===d?z(e,r,i,m):(m++,z(e,r,m,a)),m<=n&&(i=m+1),n<=m&&(a=m-1)}}(t,e,o,n,i,a%2),O(t,e,r,n,o-1,a+1),O(t,e,r,o+1,i,a+1)}}function z(t,e,r,n){D(t,r,n),D(e,2*r,2*n),D(e,2*r+1,2*n+1)}function D(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function R(t,e,r,n){var i=t-r,a=e-n;return i*i+a*a}_.fromVectorTileJs=w,_.fromGeojsonVt=T,_.GeoJSONWrapper=k;var F=function(t){return t[0]},B=function(t){return t[1]},N=function(t,e,r,n,i){void 0===e&&(e=F),void 0===r&&(r=B),void 0===n&&(n=64),void 0===i&&(i=Float64Array),this.nodeSize=n,this.points=t;for(var a=t.length<65536?Uint16Array:Uint32Array,o=this.ids=new a(t.length),s=this.coords=new i(2*t.length),l=0;l=r&&s<=i&&l>=n&&l<=a&&u.push(t[d]);else{var g=Math.floor((p+h)/2);s=e[2*g],l=e[2*g+1],s>=r&&s<=i&&l>=n&&l<=a&&u.push(t[g]);var m=(f+1)%2;(0===f?r<=s:n<=l)&&(c.push(p),c.push(g-1),c.push(m)),(0===f?i>=s:a>=l)&&(c.push(g+1),c.push(h),c.push(m))}}return u}(this.ids,this.coords,t,e,r,n,this.nodeSize)},N.prototype.within=function(t,e,r){return function(t,e,r,n,i,a){for(var o=[0,t.length-1,0],s=[],l=i*i;o.length;){var c=o.pop(),u=o.pop(),f=o.pop();if(u-f<=a)for(var h=f;h<=u;h++)R(e[2*h],e[2*h+1],r,n)<=l&&s.push(t[h]);else{var p=Math.floor((f+u)/2),d=e[2*p],g=e[2*p+1];R(d,g,r,n)<=l&&s.push(t[p]);var m=(c+1)%2;(0===c?r-i<=d:n-i<=g)&&(o.push(f),o.push(p-1),o.push(m)),(0===c?r+i>=d:n+i>=g)&&(o.push(p+1),o.push(u),o.push(m))}}return s}(this.ids,this.coords,t,e,r,this.nodeSize)};var j={minZoom:0,maxZoom:16,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:function(t){return t}},U=function(t){this.options=X(Object.create(j),t),this.trees=new Array(this.options.maxZoom+1)};function V(t,e,r,n,i){return{x:t,y:e,zoom:1/0,id:r,parentId:-1,numPoints:n,properties:i}}function H(t,e){var r=t.geometry.coordinates,n=r[0],i=r[1];return{x:Y(n),y:W(i),zoom:1/0,index:e,parentId:-1}}function q(t){return{type:\"Feature\",id:t.id,properties:G(t),geometry:{type:\"Point\",coordinates:[(n=t.x,360*(n-.5)),(e=t.y,r=(180-360*e)*Math.PI/180,360*Math.atan(Math.exp(r))/Math.PI-90)]}};var e,r,n}function G(t){var e=t.numPoints,r=e>=1e4?Math.round(e/1e3)+\"k\":e>=1e3?Math.round(e/100)/10+\"k\":e;return X(X({},t.properties),{cluster:!0,cluster_id:t.id,point_count:e,point_count_abbreviated:r})}function Y(t){return t/360+.5}function W(t){var e=Math.sin(t*Math.PI/180),r=.5-.25*Math.log((1+e)/(1-e))/Math.PI;return r<0?0:r>1?1:r}function X(t,e){for(var r in e)t[r]=e[r];return t}function Z(t){return t.x}function J(t){return t.y}function K(t,e,r,n,i,a){var o=i-r,s=a-n;if(0!==o||0!==s){var l=((t-r)*o+(e-n)*s)/(o*o+s*s);l>1?(r=i,n=a):l>0&&(r+=o*l,n+=s*l)}return(o=t-r)*o+(s=e-n)*s}function Q(t,e,r,n){var i={id:void 0===t?null:t,type:e,geometry:r,tags:n,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return function(t){var e=t.geometry,r=t.type;if(\"Point\"===r||\"MultiPoint\"===r||\"LineString\"===r)$(t,e);else if(\"Polygon\"===r||\"MultiLineString\"===r)for(var n=0;n0&&(o+=n?(i*c-l*a)/2:Math.sqrt(Math.pow(l-i,2)+Math.pow(c-a,2))),i=l,a=c}var u=e.length-3;e[2]=1,function t(e,r,n,i){for(var a,o=i,s=n-r>>1,l=n-r,c=e[r],u=e[r+1],f=e[n],h=e[n+1],p=r+3;po)a=p,o=d;else if(d===o){var g=Math.abs(p-s);gi&&(a-r>3&&t(e,r,a,i),e[a+2]=o,n-a>3&&t(e,a,n,i))}(e,0,u,r),e[u+2]=1,e.size=Math.abs(o),e.start=0,e.end=e.size}function nt(t,e,r,n){for(var i=0;i1?1:r}function ot(t,e,r,n,i,a,o,s){if(n/=e,a>=(r/=e)&&o=n)return null;for(var l=[],c=0;c=r&&d=n)){var g=[];if(\"Point\"===h||\"MultiPoint\"===h)st(f,g,r,n,i);else if(\"LineString\"===h)lt(f,g,r,n,i,!1,s.lineMetrics);else if(\"MultiLineString\"===h)ut(f,g,r,n,i,!1);else if(\"Polygon\"===h)ut(f,g,r,n,i,!0);else if(\"MultiPolygon\"===h)for(var m=0;m=r&&o<=n&&(e.push(t[a]),e.push(t[a+1]),e.push(t[a+2]))}}function lt(t,e,r,n,i,a,o){for(var s,l,c=ct(t),u=0===i?ht:pt,f=t.start,h=0;hr&&(l=u(c,p,d,m,v,r),o&&(c.start=f+s*l)):y>n?x=r&&(l=u(c,p,d,m,v,r),b=!0),x>n&&y<=n&&(l=u(c,p,d,m,v,n),b=!0),!a&&b&&(o&&(c.end=f+s*l),e.push(c),c=ct(t)),o&&(f+=s)}var _=t.length-3;p=t[_],d=t[_+1],g=t[_+2],(y=0===i?p:d)>=r&&y<=n&&ft(c,p,d,g),_=c.length-3,a&&_>=3&&(c[_]!==c[0]||c[_+1]!==c[1])&&ft(c,c[0],c[1],c[2]),c.length&&e.push(c)}function ct(t){var e=[];return e.size=t.size,e.start=t.start,e.end=t.end,e}function ut(t,e,r,n,i,a){for(var o=0;oo.maxX&&(o.maxX=u),f>o.maxY&&(o.maxY=f)}return o}function xt(t,e,r,n){var i=e.geometry,a=e.type,o=[];if(\"Point\"===a||\"MultiPoint\"===a)for(var s=0;s0&&e.size<(i?o:n))r.numPoints+=e.length/3;else{for(var s=[],l=0;lo)&&(r.numSimplified++,s.push(e[l]),s.push(e[l+1])),r.numPoints++;i&&function(t,e){for(var r=0,n=0,i=t.length,a=i-2;n0===e)for(n=0,i=t.length;n24)throw new Error(\"maxZoom should be in the 0-24 range\");if(e.promoteId&&e.generateId)throw new Error(\"promoteId and generateId cannot be used together.\");var n=function(t,e){var r=[];if(\"FeatureCollection\"===t.type)for(var n=0;n=n;c--){var u=+Date.now();s=this._cluster(s,c),this.trees[c]=new N(s,Z,J,a,Float32Array),r&&console.log(\"z%d: %d clusters in %dms\",c,s.length,+Date.now()-u)}return r&&console.timeEnd(\"total time\"),this},U.prototype.getClusters=function(t,e){var r=((t[0]+180)%360+360)%360-180,n=Math.max(-90,Math.min(90,t[1])),i=180===t[2]?180:((t[2]+180)%360+360)%360-180,a=Math.max(-90,Math.min(90,t[3]));if(t[2]-t[0]>=360)r=-180,i=180;else if(r>i){var o=this.getClusters([r,n,180,a],e),s=this.getClusters([-180,n,i,a],e);return o.concat(s)}for(var l=this.trees[this._limitZoom(e)],c=[],u=0,f=l.range(Y(r),W(a),Y(i),W(n));u1?this._map(c,!0):null,m=(l<<5)+(e+1)+this.points.length,v=0,y=f;v>5},U.prototype._getOriginZoom=function(t){return(t-this.points.length)%32},U.prototype._map=function(t,e){if(t.numPoints)return e?X({},t.properties):t.properties;var r=this.points[t.index].properties,n=this.options.map(r);return e&&n===r?X({},n):n},_t.prototype.options={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,tolerance:3,extent:4096,buffer:64,lineMetrics:!1,promoteId:null,generateId:!1,debug:0},_t.prototype.splitTile=function(t,e,r,n,i,a,o){for(var s=[t,e,r,n],l=this.options,c=l.debug;s.length;){n=s.pop(),r=s.pop(),e=s.pop(),t=s.pop();var u=1<1&&console.time(\"creation\"),h=this.tiles[f]=yt(t,e,r,n,l),this.tileCoords.push({z:e,x:r,y:n}),c)){c>1&&(console.log(\"tile z%d-%d-%d (features: %d, points: %d, simplified: %d)\",e,r,n,h.numFeatures,h.numPoints,h.numSimplified),console.timeEnd(\"creation\"));var p=\"z\"+e;this.stats[p]=(this.stats[p]||0)+1,this.total++}if(h.source=t,i){if(e===l.maxZoom||e===i)continue;var d=1<1&&console.time(\"clipping\");var g,m,v,y,x,b,_=.5*l.buffer/l.extent,w=.5-_,T=.5+_,k=1+_;g=m=v=y=null,x=ot(t,u,r-_,r+T,0,h.minX,h.maxX,l),b=ot(t,u,r+w,r+k,0,h.minX,h.maxX,l),t=null,x&&(g=ot(x,u,n-_,n+T,1,h.minY,h.maxY,l),m=ot(x,u,n+w,n+k,1,h.minY,h.maxY,l),x=null),b&&(v=ot(b,u,n-_,n+T,1,h.minY,h.maxY,l),y=ot(b,u,n+w,n+k,1,h.minY,h.maxY,l),b=null),c>1&&console.timeEnd(\"clipping\"),s.push(g||[],e+1,2*r,2*n),s.push(m||[],e+1,2*r,2*n+1),s.push(v||[],e+1,2*r+1,2*n),s.push(y||[],e+1,2*r+1,2*n+1)}}},_t.prototype.getTile=function(t,e,r){var n=this.options,i=n.extent,a=n.debug;if(t<0||t>24)return null;var o=1<1&&console.log(\"drilling down to z%d-%d-%d\",t,e,r);for(var l,c=t,u=e,f=r;!l&&c>0;)c--,u=Math.floor(u/2),f=Math.floor(f/2),l=this.tiles[wt(c,u,f)];return l&&l.source?(a>1&&console.log(\"found parent tile z%d-%d-%d\",c,u,f),a>1&&console.time(\"drilling down\"),this.splitTile(l.source,c,u,f,t,e,r),a>1&&console.timeEnd(\"drilling down\"),this.tiles[s]?mt(this.tiles[s],i):null):null};var kt=function(e){function r(t,r,n,i){e.call(this,t,r,n,Tt),i&&(this.loadGeoJSON=i)}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.loadData=function(t,e){this._pendingCallback&&this._pendingCallback(null,{abandoned:!0}),this._pendingCallback=e,this._pendingLoadDataParams=t,this._state&&\"Idle\"!==this._state?this._state=\"NeedsLoadData\":(this._state=\"Coalescing\",this._loadData())},r.prototype._loadData=function(){var e=this;if(this._pendingCallback&&this._pendingLoadDataParams){var r=this._pendingCallback,n=this._pendingLoadDataParams;delete this._pendingCallback,delete this._pendingLoadDataParams;var i=!!(n&&n.request&&n.request.collectResourceTiming)&&new t.RequestPerformance(n.request);this.loadGeoJSON(n,(function(a,o){if(a||!o)return r(a);if(\"object\"!=typeof o)return r(new Error(\"Input data given to '\"+n.source+\"' is not a valid GeoJSON object.\"));f(o,!0);try{e._geoJSONIndex=n.cluster?new U(function(e){var r=e.superclusterOptions,n=e.clusterProperties;if(!n||!r)return r;for(var i={},a={},o={accumulated:null,zoom:0},s={properties:null},l=Object.keys(n),c=0,u=l;c=0?0:e.button},r.remove=function(t){t.parentNode&&t.parentNode.removeChild(t)};var h=function(e){function r(){e.call(this),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new t.RGBAImage({width:1,height:1}),this.dirty=!0}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.isLoaded=function(){return this.loaded},r.prototype.setLoaded=function(t){if(this.loaded!==t&&(this.loaded=t,t)){for(var e=0,r=this.requestors;e=0?1.2:1))}function v(t,e,r,n,i,a,o){for(var s=0;s65535)e(new Error(\"glyphs > 65535 not supported\"));else if(a.ranges[s])e(null,{stack:r,id:i,glyph:o});else{var l=a.requests[s];l||(l=a.requests[s]=[],x.loadGlyphRange(r,s,n.url,n.requestManager,(function(t,e){if(e){for(var r in e)n._doesCharSupportLocalGlyph(+r)||(a.glyphs[+r]=e[+r]);a.ranges[s]=!0}for(var i=0,o=l;i1&&(l=t[++s]);var u=Math.abs(c-l.left),f=Math.abs(c-l.right),h=Math.min(u,f),p=void 0,d=i/r*(n+1);if(l.isDash){var g=n-Math.abs(d);p=Math.sqrt(h*h+g*g)}else p=n-Math.sqrt(h*h+d*d);this.data[o+c]=Math.max(0,Math.min(255,p+128))}},T.prototype.addRegularDash=function(t){for(var e=t.length-1;e>=0;--e){var r=t[e],n=t[e+1];r.zeroLength?t.splice(e,1):n&&n.isDash===r.isDash&&(n.left=r.left,t.splice(e,1))}var i=t[0],a=t[t.length-1];i.isDash===a.isDash&&(i.left=a.left-this.width,a.right=i.right+this.width);for(var o=this.width*this.nextRow,s=0,l=t[s],c=0;c1&&(l=t[++s]);var u=Math.abs(c-l.left),f=Math.abs(c-l.right),h=Math.min(u,f),p=l.isDash?h:-h;this.data[o+c]=Math.max(0,Math.min(255,p+128))}},T.prototype.addDash=function(e,r){var n=r?7:0,i=2*n+1;if(this.nextRow+i>this.height)return t.warnOnce(\"LineAtlas out of space\"),null;for(var a=0,o=0;o=n&&e.x=i&&e.y0&&(l[new t.OverscaledTileID(e.overscaledZ,a,r.z,i,r.y-1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,e.wrap,r.z,r.x,r.y-1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,s,r.z,o,r.y-1).key]={backfilled:!1}),r.y+10&&(n.resourceTiming=e._resourceTiming,e._resourceTiming=[]),e.fire(new t.Event(\"data\",n))}}))},r.prototype.onAdd=function(t){this.map=t,this.load()},r.prototype.setData=function(e){var r=this;return this._data=e,this.fire(new t.Event(\"dataloading\",{dataType:\"source\"})),this._updateWorkerData((function(e){if(e)r.fire(new t.ErrorEvent(e));else{var n={dataType:\"source\",sourceDataType:\"content\"};r._collectResourceTiming&&r._resourceTiming&&r._resourceTiming.length>0&&(n.resourceTiming=r._resourceTiming,r._resourceTiming=[]),r.fire(new t.Event(\"data\",n))}})),this},r.prototype.getClusterExpansionZoom=function(t,e){return this.actor.send(\"geojson.getClusterExpansionZoom\",{clusterId:t,source:this.id},e),this},r.prototype.getClusterChildren=function(t,e){return this.actor.send(\"geojson.getClusterChildren\",{clusterId:t,source:this.id},e),this},r.prototype.getClusterLeaves=function(t,e,r,n){return this.actor.send(\"geojson.getClusterLeaves\",{source:this.id,clusterId:t,limit:e,offset:r},n),this},r.prototype._updateWorkerData=function(e){var r=this;this._loaded=!1;var n=t.extend({},this.workerOptions),i=this._data;\"string\"==typeof i?(n.request=this.map._requestManager.transformRequest(t.browser.resolveURL(i),t.ResourceType.Source),n.request.collectResourceTiming=this._collectResourceTiming):n.data=JSON.stringify(i),this.actor.send(this.type+\".loadData\",n,(function(t,i){r._removed||i&&i.abandoned||(r._loaded=!0,i&&i.resourceTiming&&i.resourceTiming[r.id]&&(r._resourceTiming=i.resourceTiming[r.id].slice(0)),r.actor.send(r.type+\".coalesce\",{source:n.source},null),e(t))}))},r.prototype.loaded=function(){return this._loaded},r.prototype.loadTile=function(e,r){var n=this,i=e.actor?\"reloadTile\":\"loadTile\";e.actor=this.actor;var a={type:this.type,uid:e.uid,tileID:e.tileID,zoom:e.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:t.browser.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};e.request=this.actor.send(i,a,(function(t,a){return delete e.request,e.unloadVectorData(),e.aborted?r(null):t?r(t):(e.loadVectorData(a,n.map.painter,\"reloadTile\"===i),r(null))}))},r.prototype.abortTile=function(t){t.request&&(t.request.cancel(),delete t.request),t.aborted=!0},r.prototype.unloadTile=function(t){t.unloadVectorData(),this.actor.send(\"removeTile\",{uid:t.uid,type:this.type,source:this.id})},r.prototype.onRemove=function(){this._removed=!0,this.actor.send(\"removeSource\",{type:this.type,source:this.id})},r.prototype.serialize=function(){return t.extend({},this._options,{type:this.type,data:this._data})},r.prototype.hasTransition=function(){return!1},r}(t.Evented),P=t.createLayout([{name:\"a_pos\",type:\"Int16\",components:2},{name:\"a_texture_pos\",type:\"Int16\",components:2}]),I=function(e){function r(t,r,n,i){e.call(this),this.id=t,this.dispatcher=n,this.coordinates=r.coordinates,this.type=\"image\",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(i),this.options=r}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.load=function(e,r){var n=this;this._loaded=!1,this.fire(new t.Event(\"dataloading\",{dataType:\"source\"})),this.url=this.options.url,t.getImage(this.map._requestManager.transformRequest(this.url,t.ResourceType.Image),(function(i,a){n._loaded=!0,i?n.fire(new t.ErrorEvent(i)):a&&(n.image=a,e&&(n.coordinates=e),r&&r(),n._finishLoading())}))},r.prototype.loaded=function(){return this._loaded},r.prototype.updateImage=function(t){var e=this;return this.image&&t.url?(this.options.url=t.url,this.load(t.coordinates,(function(){e.texture=null})),this):this},r.prototype._finishLoading=function(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new t.Event(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})))},r.prototype.onAdd=function(t){this.map=t,this.load()},r.prototype.setCoordinates=function(e){var r=this;this.coordinates=e;var n=e.map(t.MercatorCoordinate.fromLngLat);this.tileID=function(e){for(var r=1/0,n=1/0,i=-1/0,a=-1/0,o=0,s=e;or.end(0)?this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+this.id,null,\"Playback for this video can be set only between the \"+r.start(0)+\" and \"+r.end(0)+\"-second mark.\"))):this.video.currentTime=e}},r.prototype.getVideo=function(){return this.video},r.prototype.onAdd=function(t){this.map||(this.map=t,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))},r.prototype.prepare=function(){if(!(0===Object.keys(this.tiles).length||this.video.readyState<2)){var e=this.map.painter.context,r=e.gl;for(var n in this.boundsBuffer||(this.boundsBuffer=e.createVertexBuffer(this._boundsArray,P.members)),this.boundsSegments||(this.boundsSegments=t.SegmentVector.simpleSegment(0,0,4,2)),this.texture?this.video.paused||(this.texture.bind(r.LINEAR,r.CLAMP_TO_EDGE),r.texSubImage2D(r.TEXTURE_2D,0,0,0,r.RGBA,r.UNSIGNED_BYTE,this.video)):(this.texture=new t.Texture(e,this.video,r.RGBA),this.texture.bind(r.LINEAR,r.CLAMP_TO_EDGE)),this.tiles){var i=this.tiles[n];\"loaded\"!==i.state&&(i.state=\"loaded\",i.texture=this.texture)}}},r.prototype.serialize=function(){return{type:\"video\",urls:this.urls,coordinates:this.coordinates}},r.prototype.hasTransition=function(){return this.video&&!this.video.paused},r}(I),z=function(e){function r(r,n,i,a){e.call(this,r,n,i,a),n.coordinates?Array.isArray(n.coordinates)&&4===n.coordinates.length&&!n.coordinates.some((function(t){return!Array.isArray(t)||2!==t.length||t.some((function(t){return\"number\"!=typeof t}))}))||this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+r,null,'\"coordinates\" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+r,null,'missing required property \"coordinates\"'))),n.animate&&\"boolean\"!=typeof n.animate&&this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+r,null,'optional \"animate\" property must be a boolean value'))),n.canvas?\"string\"==typeof n.canvas||n.canvas instanceof t.window.HTMLCanvasElement||this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+r,null,'\"canvas\" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+r,null,'missing required property \"canvas\"'))),this.options=n,this.animate=void 0===n.animate||n.animate}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.load=function(){this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof t.window.HTMLCanvasElement?this.options.canvas:t.window.document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new t.ErrorEvent(new Error(\"Canvas dimensions cannot be less than or equal to zero.\"))):(this.play=function(){this._playing=!0,this.map.triggerRepaint()},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1)},this._finishLoading())},r.prototype.getCanvas=function(){return this.canvas},r.prototype.onAdd=function(t){this.map=t,this.load(),this.canvas&&this.animate&&this.play()},r.prototype.onRemove=function(){this.pause()},r.prototype.prepare=function(){var e=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,e=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,e=!0),!this._hasInvalidDimensions()&&0!==Object.keys(this.tiles).length){var r=this.map.painter.context,n=r.gl;for(var i in this.boundsBuffer||(this.boundsBuffer=r.createVertexBuffer(this._boundsArray,P.members)),this.boundsSegments||(this.boundsSegments=t.SegmentVector.simpleSegment(0,0,4,2)),this.texture?(e||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new t.Texture(r,this.canvas,n.RGBA,{premultiply:!0}),this.tiles){var a=this.tiles[i];\"loaded\"!==a.state&&(a.state=\"loaded\",a.texture=this.texture)}}},r.prototype.serialize=function(){return{type:\"canvas\",coordinates:this.coordinates}},r.prototype.hasTransition=function(){return this._playing},r.prototype._hasInvalidDimensions=function(){for(var t=0,e=[this.canvas.width,this.canvas.height];tthis.max){var o=this._getAndRemoveByKey(this.order[0]);o&&this.onRemove(o)}return this},N.prototype.has=function(t){return t.wrapped().key in this.data},N.prototype.getAndRemove=function(t){return this.has(t)?this._getAndRemoveByKey(t.wrapped().key):null},N.prototype._getAndRemoveByKey=function(t){var e=this.data[t].shift();return e.timeout&&clearTimeout(e.timeout),0===this.data[t].length&&delete this.data[t],this.order.splice(this.order.indexOf(t),1),e.value},N.prototype.getByKey=function(t){var e=this.data[t];return e?e[0].value:null},N.prototype.get=function(t){return this.has(t)?this.data[t.wrapped().key][0].value:null},N.prototype.remove=function(t,e){if(!this.has(t))return this;var r=t.wrapped().key,n=void 0===e?0:this.data[r].indexOf(e),i=this.data[r][n];return this.data[r].splice(n,1),i.timeout&&clearTimeout(i.timeout),0===this.data[r].length&&delete this.data[r],this.onRemove(i.value),this.order.splice(this.order.indexOf(r),1),this},N.prototype.setMaxSize=function(t){for(this.max=t;this.order.length>this.max;){var e=this._getAndRemoveByKey(this.order[0]);e&&this.onRemove(e)}return this},N.prototype.filter=function(t){var e=[];for(var r in this.data)for(var n=0,i=this.data[r];n1||(Math.abs(r)>1&&(1===Math.abs(r+i)?r+=i:1===Math.abs(r-i)&&(r-=i)),e.dem&&t.dem&&(t.dem.backfillBorder(e.dem,r,n),t.neighboringTiles&&t.neighboringTiles[a]&&(t.neighboringTiles[a].backfilled=!0)))}},r.prototype.getTile=function(t){return this.getTileByID(t.key)},r.prototype.getTileByID=function(t){return this._tiles[t]},r.prototype._retainLoadedChildren=function(t,e,r,n){for(var i in this._tiles){var a=this._tiles[i];if(!(n[i]||!a.hasData()||a.tileID.overscaledZ<=e||a.tileID.overscaledZ>r)){for(var o=a.tileID;a&&a.tileID.overscaledZ>e+1;){var s=a.tileID.scaledTo(a.tileID.overscaledZ-1);(a=this._tiles[s.key])&&a.hasData()&&(o=s)}for(var l=o;l.overscaledZ>e;)if(t[(l=l.scaledTo(l.overscaledZ-1)).key]){n[o.key]=o;break}}}},r.prototype.findLoadedParent=function(t,e){if(t.key in this._loadedParentTiles){var r=this._loadedParentTiles[t.key];return r&&r.tileID.overscaledZ>=e?r:null}for(var n=t.overscaledZ-1;n>=e;n--){var i=t.scaledTo(n),a=this._getLoadedTile(i);if(a)return a}},r.prototype._getLoadedTile=function(t){var e=this._tiles[t.key];return e&&e.hasData()?e:this._cache.getByKey(t.wrapped().key)},r.prototype.updateCacheSize=function(t){var e=(Math.ceil(t.width/this._source.tileSize)+1)*(Math.ceil(t.height/this._source.tileSize)+1),r=Math.floor(5*e),n=\"number\"==typeof this._maxTileCacheSize?Math.min(this._maxTileCacheSize,r):r;this._cache.setMaxSize(n)},r.prototype.handleWrapJump=function(t){var e=(t-(void 0===this._prevLng?t:this._prevLng))/360,r=Math.round(e);if(this._prevLng=t,r){var n={};for(var i in this._tiles){var a=this._tiles[i];a.tileID=a.tileID.unwrapTo(a.tileID.wrap+r),n[a.tileID.key]=a}for(var o in this._tiles=n,this._timers)clearTimeout(this._timers[o]),delete this._timers[o];for(var s in this._tiles){var l=this._tiles[s];this._setTileReloadTimer(s,l)}}},r.prototype.update=function(e){var n=this;if(this.transform=e,this._sourceLoaded&&!this._paused){var i;this.updateCacheSize(e),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used?this._source.tileID?i=e.getVisibleUnwrappedCoordinates(this._source.tileID).map((function(e){return new t.OverscaledTileID(e.canonical.z,e.wrap,e.canonical.z,e.canonical.x,e.canonical.y)})):(i=e.coveringTiles({tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled}),this._source.hasTile&&(i=i.filter((function(t){return n._source.hasTile(t)})))):i=[];var a=e.coveringZoomLevel(this._source),o=Math.max(a-r.maxOverzooming,this._source.minzoom),s=Math.max(a+r.maxUnderzooming,this._source.minzoom),l=this._updateRetainedTiles(i,a);if(It(this._source.type)){for(var c={},u={},f=0,h=Object.keys(l);fthis._source.maxzoom){var m=d.children(this._source.maxzoom)[0],v=this.getTile(m);if(v&&v.hasData()){n[m.key]=m;continue}}else{var y=d.children(this._source.maxzoom);if(n[y[0].key]&&n[y[1].key]&&n[y[2].key]&&n[y[3].key])continue}for(var x=g.wasRequested(),b=d.overscaledZ-1;b>=a;--b){var _=d.scaledTo(b);if(i[_.key])break;if(i[_.key]=!0,!(g=this.getTile(_))&&x&&(g=this._addTile(_)),g&&(n[_.key]=_,x=g.wasRequested(),g.hasData()))break}}}return n},r.prototype._updateLoadedParentTileCache=function(){for(var t in this._loadedParentTiles={},this._tiles){for(var e=[],r=void 0,n=this._tiles[t].tileID;n.overscaledZ>0;){if(n.key in this._loadedParentTiles){r=this._loadedParentTiles[n.key];break}e.push(n.key);var i=n.scaledTo(n.overscaledZ-1);if(r=this._getLoadedTile(i))break;n=i}for(var a=0,o=e;a0||(e.hasData()&&\"reloading\"!==e.state?this._cache.add(e.tileID,e,e.getExpiryTimeout()):(e.aborted=!0,this._abortTile(e),this._unloadTile(e))))},r.prototype.clearTiles=function(){for(var t in this._shouldReloadOnResume=!1,this._paused=!1,this._tiles)this._removeTile(t);this._cache.reset()},r.prototype.tilesIn=function(e,r,n){var i=this,a=[],o=this.transform;if(!o)return a;for(var s=n?o.getCameraQueryGeometry(e):e,l=e.map((function(t){return o.pointCoordinate(t)})),c=s.map((function(t){return o.pointCoordinate(t)})),u=this.getIds(),f=1/0,h=1/0,p=-1/0,d=-1/0,g=0,m=c;g=0&&v[1].y+m>=0){var y=l.map((function(t){return s.getTilePoint(t)})),x=c.map((function(t){return s.getTilePoint(t)}));a.push({tile:n,tileID:s,queryGeometry:y,cameraQueryGeometry:x,scale:g})}}},x=0;x=t.browser.now())return!0}return!1},r.prototype.setFeatureState=function(t,e,r){t=t||\"_geojsonTileLayer\",this._state.updateState(t,e,r)},r.prototype.removeFeatureState=function(t,e,r){t=t||\"_geojsonTileLayer\",this._state.removeFeatureState(t,e,r)},r.prototype.getFeatureState=function(t,e){return t=t||\"_geojsonTileLayer\",this._state.getState(t,e)},r.prototype.setDependencies=function(t,e,r){var n=this._tiles[t];n&&n.setDependencies(e,r)},r.prototype.reloadTilesForDependencies=function(t,e){for(var r in this._tiles){this._tiles[r].hasDependency(t,e)&&this._reloadTile(r,\"reloading\")}this._cache.filter((function(r){return!r.hasDependency(t,e)}))},r}(t.Evented);function Pt(t,e){var r=Math.abs(2*t.wrap)-+(t.wrap<0),n=Math.abs(2*e.wrap)-+(e.wrap<0);return t.overscaledZ-e.overscaledZ||n-r||e.canonical.y-t.canonical.y||e.canonical.x-t.canonical.x}function It(t){return\"raster\"===t||\"image\"===t||\"video\"===t}function Ot(){return new t.window.Worker(Zi.workerUrl)}Ct.maxOverzooming=10,Ct.maxUnderzooming=3;var zt=\"mapboxgl_preloaded_worker_pool\",Dt=function(){this.active={}};Dt.prototype.acquire=function(t){if(!this.workers)for(this.workers=[];this.workers.length0?(i-o)/s:0;return this.points[a].mult(1-l).add(this.points[r].mult(l))};var Kt=function(t,e,r){var n=this.boxCells=[],i=this.circleCells=[];this.xCellCount=Math.ceil(t/r),this.yCellCount=Math.ceil(e/r);for(var a=0;a=-e[0]&&r<=e[0]&&n>=-e[1]&&n<=e[1]}function ne(e,r,n,i,a,o,s,l){var c=i?e.textSizeData:e.iconSizeData,u=t.evaluateSizeForZoom(c,n.transform.zoom),f=[256/n.width*2+1,256/n.height*2+1],h=i?e.text.dynamicLayoutVertexArray:e.icon.dynamicLayoutVertexArray;h.clear();for(var p=e.lineVertexArray,d=i?e.text.placedSymbolArray:e.icon.placedSymbolArray,g=n.transform.width/n.transform.height,m=!1,v=0;vMath.abs(n.x-r.x)*i)return{useVertical:!0};return(e===t.WritingMode.vertical?r.yn.x)?{needsFlipping:!0}:null}function oe(e,r,n,i,a,o,s,l,c,u,f,h,p,d){var g,m=r/24,v=e.lineOffsetX*m,y=e.lineOffsetY*m;if(e.numGlyphs>1){var x=e.glyphStartIndex+e.numGlyphs,b=e.lineStartIndex,_=e.lineStartIndex+e.lineLength,w=ie(m,l,v,y,n,f,h,e,c,o,p);if(!w)return{notEnoughRoom:!0};var T=te(w.first.point,s).point,k=te(w.last.point,s).point;if(i&&!n){var A=ae(e.writingMode,T,k,d);if(A)return A}g=[w.first];for(var M=e.glyphStartIndex+1;M0?C.point:se(h,L,S,1,a),I=ae(e.writingMode,S,P,d);if(I)return I}var O=le(m*l.getoffsetX(e.glyphStartIndex),v,y,n,f,h,e.segment,e.lineStartIndex,e.lineStartIndex+e.lineLength,c,o,p);if(!O)return{notEnoughRoom:!0};g=[O]}for(var z=0,D=g;z0?1:-1,g=0;i&&(d*=-1,g=Math.PI),d<0&&(g+=Math.PI);for(var m=d>0?l+s:l+s+1,v=a,y=a,x=0,b=0,_=Math.abs(p),w=[];x+b<=_;){if((m+=d)=c)return null;if(y=v,w.push(v),void 0===(v=h[m])){var T=new t.Point(u.getx(m),u.gety(m)),k=te(T,f);if(k.signedDistanceFromCamera>0)v=h[m]=k.point;else{var A=m-d;v=se(0===x?o:new t.Point(u.getx(A),u.gety(A)),T,y,_-x+1,f)}}x+=b,b=y.dist(v)}var M=(_-x)/b,S=v.sub(y),E=S.mult(M)._add(y);E._add(S._unit()._perp()._mult(n*d));var L=g+Math.atan2(v.y-y.y,v.x-y.x);return w.push(E),{point:E,angle:L,path:w}}Kt.prototype.keysLength=function(){return this.boxKeys.length+this.circleKeys.length},Kt.prototype.insert=function(t,e,r,n,i){this._forEachCell(e,r,n,i,this._insertBoxCell,this.boxUid++),this.boxKeys.push(t),this.bboxes.push(e),this.bboxes.push(r),this.bboxes.push(n),this.bboxes.push(i)},Kt.prototype.insertCircle=function(t,e,r,n){this._forEachCell(e-n,r-n,e+n,r+n,this._insertCircleCell,this.circleUid++),this.circleKeys.push(t),this.circles.push(e),this.circles.push(r),this.circles.push(n)},Kt.prototype._insertBoxCell=function(t,e,r,n,i,a){this.boxCells[i].push(a)},Kt.prototype._insertCircleCell=function(t,e,r,n,i,a){this.circleCells[i].push(a)},Kt.prototype._query=function(t,e,r,n,i,a){if(r<0||t>this.width||n<0||e>this.height)return!i&&[];var o=[];if(t<=0&&e<=0&&this.width<=r&&this.height<=n){if(i)return!0;for(var s=0;s0:o},Kt.prototype._queryCircle=function(t,e,r,n,i){var a=t-r,o=t+r,s=e-r,l=e+r;if(o<0||a>this.width||l<0||s>this.height)return!n&&[];var c=[],u={hitTest:n,circle:{x:t,y:e,radius:r},seenUids:{box:{},circle:{}}};return this._forEachCell(a,s,o,l,this._queryCellCircle,c,u,i),n?c.length>0:c},Kt.prototype.query=function(t,e,r,n,i){return this._query(t,e,r,n,!1,i)},Kt.prototype.hitTest=function(t,e,r,n,i){return this._query(t,e,r,n,!0,i)},Kt.prototype.hitTestCircle=function(t,e,r,n){return this._queryCircle(t,e,r,!0,n)},Kt.prototype._queryCell=function(t,e,r,n,i,a,o,s){var l=o.seenUids,c=this.boxCells[i];if(null!==c)for(var u=this.bboxes,f=0,h=c;f=u[d+0]&&n>=u[d+1]&&(!s||s(this.boxKeys[p]))){if(o.hitTest)return a.push(!0),!0;a.push({key:this.boxKeys[p],x1:u[d],y1:u[d+1],x2:u[d+2],y2:u[d+3]})}}}var g=this.circleCells[i];if(null!==g)for(var m=this.circles,v=0,y=g;vo*o+s*s},Kt.prototype._circleAndRectCollide=function(t,e,r,n,i,a,o){var s=(a-n)/2,l=Math.abs(t-(n+s));if(l>s+r)return!1;var c=(o-i)/2,u=Math.abs(e-(i+c));if(u>c+r)return!1;if(l<=s||u<=c)return!0;var f=l-s,h=u-c;return f*f+h*h<=r*r};var ce=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function ue(t,e){for(var r=0;r=1;P--)C.push(E.path[P]);for(var I=1;I0){for(var R=C[0].clone(),F=C[0].clone(),B=1;B=A.x&&F.x<=M.x&&R.y>=A.y&&F.y<=M.y?[C]:F.xM.x||F.yM.y?[]:t.clipLine([C],A.x,A.y,M.x,M.y)}for(var N=0,j=D;N=this.screenRightBoundary||n<100||e>this.screenBottomBoundary},he.prototype.isInsideGrid=function(t,e,r,n){return r>=0&&t=0&&e0)return this.prevPlacement&&this.prevPlacement.variableOffsets[f.crossTileID]&&this.prevPlacement.placements[f.crossTileID]&&this.prevPlacement.placements[f.crossTileID].text&&(g=this.prevPlacement.variableOffsets[f.crossTileID].anchor),this.variableOffsets[f.crossTileID]={textOffset:m,width:r,height:n,anchor:t,textBoxScale:i,prevAnchor:g},this.markUsedJustification(h,t,f,p),h.allowVerticalPlacement&&(this.markUsedOrientation(h,p,f),this.placedOrientations[f.crossTileID]=p),{shift:v,placedGlyphBoxes:y}},we.prototype.placeLayerBucketPart=function(e,r,n){var i=this,a=e.parameters,o=a.bucket,s=a.layout,l=a.posMatrix,c=a.textLabelPlaneMatrix,u=a.labelToScreenMatrix,f=a.textPixelRatio,h=a.holdingForFade,p=a.collisionBoxArray,d=a.partiallyEvaluatedTextSize,g=a.collisionGroup,m=s.get(\"text-optional\"),v=s.get(\"icon-optional\"),y=s.get(\"text-allow-overlap\"),x=s.get(\"icon-allow-overlap\"),b=\"map\"===s.get(\"text-rotation-alignment\"),_=\"map\"===s.get(\"text-pitch-alignment\"),w=\"none\"!==s.get(\"icon-text-fit\"),T=\"viewport-y\"===s.get(\"symbol-z-order\"),k=y&&(x||!o.hasIconData()||v),A=x&&(y||!o.hasTextData()||m);!o.collisionArrays&&p&&o.deserializeCollisionBoxes(p);var M=function(e,a){if(!r[e.crossTileID])if(h)i.placements[e.crossTileID]=new me(!1,!1,!1);else{var p,T=!1,M=!1,S=!0,E=null,L={box:null,offscreen:null},C={box:null,offscreen:null},P=null,I=null,O=0,z=0,D=0;a.textFeatureIndex?O=a.textFeatureIndex:e.useRuntimeCollisionCircles&&(O=e.featureIndex),a.verticalTextFeatureIndex&&(z=a.verticalTextFeatureIndex);var R=a.textBox;if(R){var F=function(r){var n=t.WritingMode.horizontal;if(o.allowVerticalPlacement&&!r&&i.prevPlacement){var a=i.prevPlacement.placedOrientations[e.crossTileID];a&&(i.placedOrientations[e.crossTileID]=a,n=a,i.markUsedOrientation(o,n,e))}return n},B=function(r,n){if(o.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&a.verticalTextBox)for(var i=0,s=o.writingModes;i0&&(N=N.filter((function(t){return t!==j.anchor}))).unshift(j.anchor)}var U=function(t,r,n){for(var a=t.x2-t.x1,s=t.y2-t.y1,c=e.textBoxScale,u=w&&!x?r:null,h={box:[],offscreen:!1},p=y?2*N.length:N.length,d=0;d=N.length,k=i.attemptAnchorPlacement(m,t,a,s,c,b,_,f,l,g,v,e,o,n,u);if(k&&(h=k.placedGlyphBoxes)&&h.box&&h.box.length){T=!0,E=k.shift;break}}return h};B((function(){return U(R,a.iconBox,t.WritingMode.horizontal)}),(function(){var r=a.verticalTextBox,n=L&&L.box&&L.box.length;return o.allowVerticalPlacement&&!n&&e.numVerticalGlyphVertices>0&&r?U(r,a.verticalIconBox,t.WritingMode.vertical):{box:null,offscreen:null}})),L&&(T=L.box,S=L.offscreen);var V=F(L&&L.box);if(!T&&i.prevPlacement){var H=i.prevPlacement.variableOffsets[e.crossTileID];H&&(i.variableOffsets[e.crossTileID]=H,i.markUsedJustification(o,H.anchor,e,V))}}else{var q=function(t,r){var n=i.collisionIndex.placeCollisionBox(t,y,f,l,g.predicate);return n&&n.box&&n.box.length&&(i.markUsedOrientation(o,r,e),i.placedOrientations[e.crossTileID]=r),n};B((function(){return q(R,t.WritingMode.horizontal)}),(function(){var r=a.verticalTextBox;return o.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&r?q(r,t.WritingMode.vertical):{box:null,offscreen:null}})),F(L&&L.box&&L.box.length)}}if(T=(p=L)&&p.box&&p.box.length>0,S=p&&p.offscreen,e.useRuntimeCollisionCircles){var G=o.text.placedSymbolArray.get(e.centerJustifiedTextSymbolIndex),Y=t.evaluateSizeForFeature(o.textSizeData,d,G),W=s.get(\"text-padding\"),X=e.collisionCircleDiameter;P=i.collisionIndex.placeCollisionCircles(y,G,o.lineVertexArray,o.glyphOffsetArray,Y,l,c,u,n,_,g.predicate,X,W),T=y||P.circles.length>0&&!P.collisionDetected,S=S&&P.offscreen}if(a.iconFeatureIndex&&(D=a.iconFeatureIndex),a.iconBox){var Z=function(t){var e=w&&E?_e(t,E.x,E.y,b,_,i.transform.angle):t;return i.collisionIndex.placeCollisionBox(e,x,f,l,g.predicate)};M=C&&C.box&&C.box.length&&a.verticalIconBox?(I=Z(a.verticalIconBox)).box.length>0:(I=Z(a.iconBox)).box.length>0,S=S&&I.offscreen}var J=m||0===e.numHorizontalGlyphVertices&&0===e.numVerticalGlyphVertices,K=v||0===e.numIconVertices;if(J||K?K?J||(M=M&&T):T=M&&T:M=T=M&&T,T&&p&&p.box&&(C&&C.box&&z?i.collisionIndex.insertCollisionBox(p.box,s.get(\"text-ignore-placement\"),o.bucketInstanceId,z,g.ID):i.collisionIndex.insertCollisionBox(p.box,s.get(\"text-ignore-placement\"),o.bucketInstanceId,O,g.ID)),M&&I&&i.collisionIndex.insertCollisionBox(I.box,s.get(\"icon-ignore-placement\"),o.bucketInstanceId,D,g.ID),P&&(T&&i.collisionIndex.insertCollisionCircles(P.circles,s.get(\"text-ignore-placement\"),o.bucketInstanceId,O,g.ID),n)){var Q=o.bucketInstanceId,$=i.collisionCircleArrays[Q];void 0===$&&($=i.collisionCircleArrays[Q]=new ve);for(var tt=0;tt=0;--E){var L=S[E];M(o.symbolInstances.get(L),o.collisionArrays[L])}else for(var C=e.symbolInstanceStart;C=0&&(e.text.placedSymbolArray.get(c).crossTileID=a>=0&&c!==a?0:n.crossTileID)}},we.prototype.markUsedOrientation=function(e,r,n){for(var i=r===t.WritingMode.horizontal||r===t.WritingMode.horizontalOnly?r:0,a=r===t.WritingMode.vertical?r:0,o=0,s=[n.leftJustifiedTextSymbolIndex,n.centerJustifiedTextSymbolIndex,n.rightJustifiedTextSymbolIndex];o0||l>0,x=a.numIconVertices>0,b=i.placedOrientations[a.crossTileID],_=b===t.WritingMode.vertical,w=b===t.WritingMode.horizontal||b===t.WritingMode.horizontalOnly;if(y){var T=Pe(v.text),k=_?Ie:T;d(e.text,s,k);var A=w?Ie:T;d(e.text,l,A);var M=v.text.isHidden();[a.rightJustifiedTextSymbolIndex,a.centerJustifiedTextSymbolIndex,a.leftJustifiedTextSymbolIndex].forEach((function(t){t>=0&&(e.text.placedSymbolArray.get(t).hidden=M||_?1:0)})),a.verticalPlacedTextSymbolIndex>=0&&(e.text.placedSymbolArray.get(a.verticalPlacedTextSymbolIndex).hidden=M||w?1:0);var S=i.variableOffsets[a.crossTileID];S&&i.markUsedJustification(e,S.anchor,a,b);var E=i.placedOrientations[a.crossTileID];E&&(i.markUsedJustification(e,\"left\",a,E),i.markUsedOrientation(e,E,a))}if(x){var L=Pe(v.icon),C=!(h&&a.verticalPlacedIconSymbolIndex&&_);if(a.placedIconSymbolIndex>=0){var P=C?L:Ie;d(e.icon,a.numIconVertices,P),e.icon.placedSymbolArray.get(a.placedIconSymbolIndex).hidden=v.icon.isHidden()}if(a.verticalPlacedIconSymbolIndex>=0){var I=C?Ie:L;d(e.icon,a.numVerticalIconVertices,I),e.icon.placedSymbolArray.get(a.verticalPlacedIconSymbolIndex).hidden=v.icon.isHidden()}}if(e.hasIconCollisionBoxData()||e.hasTextCollisionBoxData()){var O=e.collisionArrays[n];if(O){var z=new t.Point(0,0);if(O.textBox||O.verticalTextBox){var D=!0;if(c){var R=i.variableOffsets[g];R?(z=be(R.anchor,R.width,R.height,R.textOffset,R.textBoxScale),u&&z._rotate(f?i.transform.angle:-i.transform.angle)):D=!1}O.textBox&&Te(e.textCollisionBox.collisionVertexArray,v.text.placed,!D||_,z.x,z.y),O.verticalTextBox&&Te(e.textCollisionBox.collisionVertexArray,v.text.placed,!D||w,z.x,z.y)}var F=Boolean(!w&&O.verticalIconBox);O.iconBox&&Te(e.iconCollisionBox.collisionVertexArray,v.icon.placed,F,h?z.x:0,h?z.y:0),O.verticalIconBox&&Te(e.iconCollisionBox.collisionVertexArray,v.icon.placed,!F,h?z.x:0,h?z.y:0)}}},m=0;mt},we.prototype.setStale=function(){this.stale=!0};var ke=Math.pow(2,25),Ae=Math.pow(2,24),Me=Math.pow(2,17),Se=Math.pow(2,16),Ee=Math.pow(2,9),Le=Math.pow(2,8),Ce=Math.pow(2,1);function Pe(t){if(0===t.opacity&&!t.placed)return 0;if(1===t.opacity&&t.placed)return 4294967295;var e=t.placed?1:0,r=Math.floor(127*t.opacity);return r*ke+e*Ae+r*Me+e*Se+r*Ee+e*Le+r*Ce+e}var Ie=0,Oe=function(t){this._sortAcrossTiles=\"viewport-y\"!==t.layout.get(\"symbol-z-order\")&&void 0!==t.layout.get(\"symbol-sort-key\").constantOr(1),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[]};Oe.prototype.continuePlacement=function(t,e,r,n,i){for(var a=this._bucketParts;this._currentTileIndex2};this._currentPlacementIndex>=0;){var s=r[e[this._currentPlacementIndex]],l=this.placement.collisionIndex.transform.zoom;if(\"symbol\"===s.type&&(!s.minzoom||s.minzoom<=l)&&(!s.maxzoom||s.maxzoom>l)){if(this._inProgressLayer||(this._inProgressLayer=new Oe(s)),this._inProgressLayer.continuePlacement(n[s.source],this.placement,this._showCollisionBoxes,s,o))return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0},ze.prototype.commit=function(t){return this.placement.commit(t),this.placement};var De=512/t.EXTENT/2,Re=function(t,e,r){this.tileID=t,this.indexedSymbolInstances={},this.bucketInstanceId=r;for(var n=0;nt.overscaledZ)for(var s in o){var l=o[s];l.tileID.isChildOf(t)&&l.findMatches(e.symbolInstances,t,i)}else{var c=o[t.scaledTo(Number(a)).key];c&&c.findMatches(e.symbolInstances,t,i)}}for(var u=0;u1?\"@2x\":\"\",l=t.getJSON(r.transformRequest(r.normalizeSpriteURL(e,s,\".json\"),t.ResourceType.SpriteJSON),(function(t,e){l=null,o||(o=t,i=e,u())})),c=t.getImage(r.transformRequest(r.normalizeSpriteURL(e,s,\".png\"),t.ResourceType.SpriteImage),(function(t,e){c=null,o||(o=t,a=e,u())}));function u(){if(o)n(o);else if(i&&a){var e=t.browser.getImageData(a),r={};for(var s in i){var l=i[s],c=l.width,u=l.height,f=l.x,h=l.y,p=l.sdf,d=l.pixelRatio,g=l.stretchX,m=l.stretchY,v=l.content,y=new t.RGBAImage({width:c,height:u});t.RGBAImage.copy(e,y,{x:f,y:h},{x:0,y:0},{width:c,height:u}),r[s]={data:y,pixelRatio:d,sdf:p,stretchX:g,stretchY:m,content:v}}n(null,r)}}return{cancel:function(){l&&(l.cancel(),l=null),c&&(c.cancel(),c=null)}}}(e,this.map._requestManager,(function(e,n){if(r._spriteRequest=null,e)r.fire(new t.ErrorEvent(e));else if(n)for(var i in n)r.imageManager.addImage(i,n[i]);r.imageManager.setLoaded(!0),r._availableImages=r.imageManager.listImages(),r.dispatcher.broadcast(\"setImages\",r._availableImages),r.fire(new t.Event(\"data\",{dataType:\"style\"}))}))},r.prototype._validateLayer=function(e){var r=this.sourceCaches[e.source];if(r){var n=e.sourceLayer;if(n){var i=r.getSource();(\"geojson\"===i.type||i.vectorLayerIds&&-1===i.vectorLayerIds.indexOf(n))&&this.fire(new t.ErrorEvent(new Error('Source layer \"'+n+'\" does not exist on source \"'+i.id+'\" as specified by style layer \"'+e.id+'\"')))}}},r.prototype.loaded=function(){if(!this._loaded)return!1;if(Object.keys(this._updatedSources).length)return!1;for(var t in this.sourceCaches)if(!this.sourceCaches[t].loaded())return!1;return!!this.imageManager.isLoaded()},r.prototype._serializeLayers=function(t){for(var e=[],r=0,n=t;r0)throw new Error(\"Unimplemented: \"+i.map((function(t){return t.command})).join(\", \")+\".\");return n.forEach((function(t){\"setTransition\"!==t.command&&r[t.command].apply(r,t.args)})),this.stylesheet=e,!0},r.prototype.addImage=function(e,r){if(this.getImage(e))return this.fire(new t.ErrorEvent(new Error(\"An image with this name already exists.\")));this.imageManager.addImage(e,r),this._availableImages=this.imageManager.listImages(),this._changedImages[e]=!0,this._changed=!0,this.fire(new t.Event(\"data\",{dataType:\"style\"}))},r.prototype.updateImage=function(t,e){this.imageManager.updateImage(t,e)},r.prototype.getImage=function(t){return this.imageManager.getImage(t)},r.prototype.removeImage=function(e){if(!this.getImage(e))return this.fire(new t.ErrorEvent(new Error(\"No image with this name exists.\")));this.imageManager.removeImage(e),this._availableImages=this.imageManager.listImages(),this._changedImages[e]=!0,this._changed=!0,this.fire(new t.Event(\"data\",{dataType:\"style\"}))},r.prototype.listImages=function(){return this._checkLoaded(),this.imageManager.listImages()},r.prototype.addSource=function(e,r,n){var i=this;if(void 0===n&&(n={}),this._checkLoaded(),void 0!==this.sourceCaches[e])throw new Error(\"There is already a source with this ID\");if(!r.type)throw new Error(\"The type property must be defined, but the only the following properties were given: \"+Object.keys(r).join(\", \")+\".\");if(!([\"vector\",\"raster\",\"geojson\",\"video\",\"image\"].indexOf(r.type)>=0)||!this._validate(t.validateStyle.source,\"sources.\"+e,r,null,n)){this.map&&this.map._collectResourceTiming&&(r.collectResourceTiming=!0);var a=this.sourceCaches[e]=new Ct(e,r,this.dispatcher);a.style=this,a.setEventedParent(this,(function(){return{isSourceLoaded:i.loaded(),source:a.serialize(),sourceId:e}})),a.onAdd(this.map),this._changed=!0}},r.prototype.removeSource=function(e){if(this._checkLoaded(),void 0===this.sourceCaches[e])throw new Error(\"There is no source with this ID\");for(var r in this._layers)if(this._layers[r].source===e)return this.fire(new t.ErrorEvent(new Error('Source \"'+e+'\" cannot be removed while layer \"'+r+'\" is using it.')));var n=this.sourceCaches[e];delete this.sourceCaches[e],delete this._updatedSources[e],n.fire(new t.Event(\"data\",{sourceDataType:\"metadata\",dataType:\"source\",sourceId:e})),n.setEventedParent(null),n.clearTiles(),n.onRemove&&n.onRemove(this.map),this._changed=!0},r.prototype.setGeoJSONSourceData=function(t,e){this._checkLoaded(),this.sourceCaches[t].getSource().setData(e),this._changed=!0},r.prototype.getSource=function(t){return this.sourceCaches[t]&&this.sourceCaches[t].getSource()},r.prototype.addLayer=function(e,r,n){void 0===n&&(n={}),this._checkLoaded();var i=e.id;if(this.getLayer(i))this.fire(new t.ErrorEvent(new Error('Layer with id \"'+i+'\" already exists on this map')));else{var a;if(\"custom\"===e.type){if(je(this,t.validateCustomStyleLayer(e)))return;a=t.createStyleLayer(e)}else{if(\"object\"==typeof e.source&&(this.addSource(i,e.source),e=t.clone$1(e),e=t.extend(e,{source:i})),this._validate(t.validateStyle.layer,\"layers.\"+i,e,{arrayIndex:-1},n))return;a=t.createStyleLayer(e),this._validateLayer(a),a.setEventedParent(this,{layer:{id:i}}),this._serializedLayers[a.id]=a.serialize()}var o=r?this._order.indexOf(r):this._order.length;if(r&&-1===o)this.fire(new t.ErrorEvent(new Error('Layer with id \"'+r+'\" does not exist on this map.')));else{if(this._order.splice(o,0,i),this._layerOrderChanged=!0,this._layers[i]=a,this._removedLayers[i]&&a.source&&\"custom\"!==a.type){var s=this._removedLayers[i];delete this._removedLayers[i],s.type!==a.type?this._updatedSources[a.source]=\"clear\":(this._updatedSources[a.source]=\"reload\",this.sourceCaches[a.source].pause())}this._updateLayer(a),a.onAdd&&a.onAdd(this.map)}}},r.prototype.moveLayer=function(e,r){if(this._checkLoaded(),this._changed=!0,this._layers[e]){if(e!==r){var n=this._order.indexOf(e);this._order.splice(n,1);var i=r?this._order.indexOf(r):this._order.length;r&&-1===i?this.fire(new t.ErrorEvent(new Error('Layer with id \"'+r+'\" does not exist on this map.'))):(this._order.splice(i,0,e),this._layerOrderChanged=!0)}}else this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be moved.\")))},r.prototype.removeLayer=function(e){this._checkLoaded();var r=this._layers[e];if(r){r.setEventedParent(null);var n=this._order.indexOf(e);this._order.splice(n,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[e]=r,delete this._layers[e],delete this._serializedLayers[e],delete this._updatedLayers[e],delete this._updatedPaintProps[e],r.onRemove&&r.onRemove(this.map)}else this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be removed.\")))},r.prototype.getLayer=function(t){return this._layers[t]},r.prototype.hasLayer=function(t){return t in this._layers},r.prototype.setLayerZoomRange=function(e,r,n){this._checkLoaded();var i=this.getLayer(e);i?i.minzoom===r&&i.maxzoom===n||(null!=r&&(i.minzoom=r),null!=n&&(i.maxzoom=n),this._updateLayer(i)):this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot have zoom extent.\")))},r.prototype.setFilter=function(e,r,n){void 0===n&&(n={}),this._checkLoaded();var i=this.getLayer(e);if(i){if(!t.deepEqual(i.filter,r))return null==r?(i.filter=void 0,void this._updateLayer(i)):void(this._validate(t.validateStyle.filter,\"layers.\"+i.id+\".filter\",r,null,n)||(i.filter=t.clone$1(r),this._updateLayer(i)))}else this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be filtered.\")))},r.prototype.getFilter=function(e){return t.clone$1(this.getLayer(e).filter)},r.prototype.setLayoutProperty=function(e,r,n,i){void 0===i&&(i={}),this._checkLoaded();var a=this.getLayer(e);a?t.deepEqual(a.getLayoutProperty(r),n)||(a.setLayoutProperty(r,n,i),this._updateLayer(a)):this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be styled.\")))},r.prototype.getLayoutProperty=function(e,r){var n=this.getLayer(e);if(n)return n.getLayoutProperty(r);this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style.\")))},r.prototype.setPaintProperty=function(e,r,n,i){void 0===i&&(i={}),this._checkLoaded();var a=this.getLayer(e);a?t.deepEqual(a.getPaintProperty(r),n)||(a.setPaintProperty(r,n,i)&&this._updateLayer(a),this._changed=!0,this._updatedPaintProps[e]=!0):this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be styled.\")))},r.prototype.getPaintProperty=function(t,e){return this.getLayer(t).getPaintProperty(e)},r.prototype.setFeatureState=function(e,r){this._checkLoaded();var n=e.source,i=e.sourceLayer,a=this.sourceCaches[n];if(void 0!==a){var o=a.getSource().type;\"geojson\"===o&&i?this.fire(new t.ErrorEvent(new Error(\"GeoJSON sources cannot have a sourceLayer parameter.\"))):\"vector\"!==o||i?(void 0===e.id&&this.fire(new t.ErrorEvent(new Error(\"The feature id parameter must be provided.\"))),a.setFeatureState(i,e.id,r)):this.fire(new t.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")))}else this.fire(new t.ErrorEvent(new Error(\"The source '\"+n+\"' does not exist in the map's style.\")))},r.prototype.removeFeatureState=function(e,r){this._checkLoaded();var n=e.source,i=this.sourceCaches[n];if(void 0!==i){var a=i.getSource().type,o=\"vector\"===a?e.sourceLayer:void 0;\"vector\"!==a||o?r&&\"string\"!=typeof e.id&&\"number\"!=typeof e.id?this.fire(new t.ErrorEvent(new Error(\"A feature id is requred to remove its specific state property.\"))):i.removeFeatureState(o,e.id,r):this.fire(new t.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")))}else this.fire(new t.ErrorEvent(new Error(\"The source '\"+n+\"' does not exist in the map's style.\")))},r.prototype.getFeatureState=function(e){this._checkLoaded();var r=e.source,n=e.sourceLayer,i=this.sourceCaches[r];if(void 0!==i){if(\"vector\"!==i.getSource().type||n)return void 0===e.id&&this.fire(new t.ErrorEvent(new Error(\"The feature id parameter must be provided.\"))),i.getFeatureState(n,e.id);this.fire(new t.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")))}else this.fire(new t.ErrorEvent(new Error(\"The source '\"+r+\"' does not exist in the map's style.\")))},r.prototype.getTransition=function(){return t.extend({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)},r.prototype.serialize=function(){return t.filterObject({version:this.stylesheet.version,name:this.stylesheet.name,metadata:this.stylesheet.metadata,light:this.stylesheet.light,center:this.stylesheet.center,zoom:this.stylesheet.zoom,bearing:this.stylesheet.bearing,pitch:this.stylesheet.pitch,sprite:this.stylesheet.sprite,glyphs:this.stylesheet.glyphs,transition:this.stylesheet.transition,sources:t.mapObject(this.sourceCaches,(function(t){return t.serialize()})),layers:this._serializeLayers(this._order)},(function(t){return void 0!==t}))},r.prototype._updateLayer=function(t){this._updatedLayers[t.id]=!0,t.source&&!this._updatedSources[t.source]&&\"raster\"!==this.sourceCaches[t.source].getSource().type&&(this._updatedSources[t.source]=\"reload\",this.sourceCaches[t.source].pause()),this._changed=!0},r.prototype._flattenAndSortRenderedFeatures=function(t){for(var e=this,r=function(t){return\"fill-extrusion\"===e._layers[t].type},n={},i=[],a=this._order.length-1;a>=0;a--){var o=this._order[a];if(r(o)){n[o]=a;for(var s=0,l=t;s=0;d--){var g=this._order[d];if(r(g))for(var m=i.length-1;m>=0;m--){var v=i[m].feature;if(n[v.layer.id] 0.5) {gl_FragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {gl_FragColor*=.1;}}\",\"attribute vec2 a_pos;attribute vec2 a_anchor_pos;attribute vec2 a_extrude;attribute vec2 a_placed;attribute vec2 a_shift;uniform mat4 u_matrix;uniform vec2 u_extrude_scale;uniform float u_camera_to_center_distance;varying float v_placed;varying float v_notUsed;void main() {vec4 projectedPoint=u_matrix*vec4(a_anchor_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);gl_Position=u_matrix*vec4(a_pos,0.0,1.0);gl_Position.xy+=(a_extrude+a_shift)*u_extrude_scale*gl_Position.w*collision_perspective_ratio;v_placed=a_placed.x;v_notUsed=a_placed.y;}\"),tr=yr(\"varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;void main() {float alpha=0.5*min(v_perspective_ratio,1.0);float stroke_radius=0.9*max(v_perspective_ratio,1.0);float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);gl_FragColor=color*alpha*opacity_t;}\",\"attribute vec2 a_pos;attribute float a_radius;attribute vec2 a_flags;uniform mat4 u_matrix;uniform mat4 u_inv_matrix;uniform vec2 u_viewport_size;uniform float u_camera_to_center_distance;varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;vec3 toTilePosition(vec2 screenPos) {vec4 rayStart=u_inv_matrix*vec4(screenPos,-1.0,1.0);vec4 rayEnd =u_inv_matrix*vec4(screenPos, 1.0,1.0);rayStart.xyz/=rayStart.w;rayEnd.xyz /=rayEnd.w;highp float t=(0.0-rayStart.z)/(rayEnd.z-rayStart.z);return mix(rayStart.xyz,rayEnd.xyz,t);}void main() {vec2 quadCenterPos=a_pos;float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(mix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;vec3 tilePos=toTilePosition(quadCenterPos);vec4 clipPos=u_matrix*vec4(tilePos,1.0);highp float camera_to_anchor_distance=clipPos.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_perspective_ratio=collision_perspective_ratio;v_collision=collision;gl_Position=vec4(clipPos.xyz/clipPos.w,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}\"),er=yr(\"uniform highp vec4 u_color;uniform sampler2D u_overlay;varying vec2 v_uv;void main() {vec4 overlay_color=texture2D(u_overlay,v_uv);gl_FragColor=mix(u_color,overlay_color,overlay_color.a);}\",\"attribute vec2 a_pos;varying vec2 v_uv;uniform mat4 u_matrix;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=u_matrix*vec4(a_pos*u_overlay_scale,0,1);}\"),rr=yr(\"#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float opacity\\ngl_FragColor=color*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float opacity\\ngl_Position=u_matrix*vec4(a_pos,0,1);}\"),nr=yr(\"varying vec2 v_pos;\\n#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 outline_color\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=outline_color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;uniform vec2 u_world;varying vec2 v_pos;\\n#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 outline_color\\n#pragma mapbox: initialize lowp float opacity\\ngl_Position=u_matrix*vec4(a_pos,0,1);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}\"),ir=yr(\"uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=mix(color1,color2,u_fade)*alpha*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;gl_Position=u_matrix*vec4(a_pos,0,1);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}\"),ar=yr(\"uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_fade)*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);}\"),or=yr(\"varying vec4 v_color;void main() {gl_FragColor=v_color;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec4 v_color;\\n#pragma mapbox: define highp float base\\n#pragma mapbox: define highp float height\\n#pragma mapbox: define highp vec4 color\\nvoid main() {\\n#pragma mapbox: initialize highp float base\\n#pragma mapbox: initialize highp float height\\n#pragma mapbox: initialize highp vec4 color\\nvec3 normal=a_normal_ed.xyz;base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);gl_Position=u_matrix*vec4(a_pos,t > 0.0 ? height : base,1);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal/16384.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}\"),sr=yr(\"uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float base\\n#pragma mapbox: initialize lowp float height\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);gl_FragColor=mixedColor*v_lighting;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float base\\n#pragma mapbox: initialize lowp float height\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);float z=t > 0.0 ? height : base;gl_Position=u_matrix*vec4(a_pos,z,1);vec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0\\n? a_pos\\n: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;}\"),lr=yr(\"#ifdef GL_ES\\nprecision highp float;\\n#endif\\nuniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform float u_maxzoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);float exaggeration=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;vec2 deriv=vec2((c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))/ pow(2.0,(u_zoom-u_maxzoom)*exaggeration+19.2562-u_zoom);gl_FragColor=clamp(vec4(deriv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}\"),cr=yr(\"uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent;\\n#define PI 3.141592653589793\\nvoid main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;}\"),ur=yr(\"uniform lowp float u_device_pixel_ratio;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);gl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_linesofar;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}\"),fr=yr(\"uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp float v_lineprogress;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture2D(u_image,vec2(v_lineprogress,0.5));gl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define MAX_LINE_DISTANCE 32767.0\\n#define scale 0.015873016\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_lineprogress;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_lineprogress=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0/MAX_LINE_DISTANCE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}\"),hr=yr(\"uniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture2D(u_image,pos_a),texture2D(u_image,pos_b),u_fade);gl_FragColor=color*alpha*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\n#define LINE_DISTANCE_SCALE 2.0\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}\"),pr=yr(\"uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform float u_sdfgamma;uniform float u_mix;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture2D(u_image,v_tex_a).a;float sdfdist_b=texture2D(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);alpha*=smoothstep(0.5-u_sdfgamma/floorwidth,0.5+u_sdfgamma/floorwidth,sdfdist);gl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\n#define LINE_DISTANCE_SCALE 2.0\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_patternscale_a;uniform float u_tex_y_a;uniform vec2 u_patternscale_b;uniform float u_tex_y_b;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_tex_a=vec2(a_linesofar*u_patternscale_a.x/floorwidth,normal.y*u_patternscale_a.y+u_tex_y_a);v_tex_b=vec2(a_linesofar*u_patternscale_b.x/floorwidth,normal.y*u_patternscale_b.y+u_tex_y_b);v_width2=vec2(outset,inset);}\"),dr=yr(\"uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);gl_FragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos0=(((a_texture_pos/8192.0)-0.5)/u_buffer_scale )+0.5;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}\"),gr=yr(\"uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity;\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\nlowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;varying vec2 v_tex;varying float v_fade_opacity;\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0),0.0,1.0);v_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;v_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));}\"),mr=yr(\"#define SDF_PX 8.0\\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nfloat EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;varying vec2 v_data0;varying vec3 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity);}\"),vr=yr(\"#define SDF_PX 8.0\\n#define SDF 1.0\\n#define ICON 0.0\\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nfloat fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\nreturn;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;varying vec4 v_data0;varying vec4 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}\");function yr(t,e){var r=/#pragma mapbox: ([\\w]+) ([\\w]+) ([\\w]+) ([\\w]+)/g,n={};return{fragmentSource:t=t.replace(r,(function(t,e,r,i,a){return n[a]=!0,\"define\"===e?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\nvarying \"+r+\" \"+i+\" \"+a+\";\\n#else\\nuniform \"+r+\" \"+i+\" u_\"+a+\";\\n#endif\\n\":\"\\n#ifdef HAS_UNIFORM_u_\"+a+\"\\n \"+r+\" \"+i+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\"})),vertexSource:e=e.replace(r,(function(t,e,r,i,a){var o=\"float\"===i?\"vec2\":\"vec4\",s=a.match(/color/)?\"color\":o;return n[a]?\"define\"===e?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\nuniform lowp float u_\"+a+\"_t;\\nattribute \"+r+\" \"+o+\" a_\"+a+\";\\nvarying \"+r+\" \"+i+\" \"+a+\";\\n#else\\nuniform \"+r+\" \"+i+\" u_\"+a+\";\\n#endif\\n\":\"vec4\"===s?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\n \"+a+\" = a_\"+a+\";\\n#else\\n \"+r+\" \"+i+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\":\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\n \"+a+\" = unpack_mix_\"+s+\"(a_\"+a+\", u_\"+a+\"_t);\\n#else\\n \"+r+\" \"+i+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\":\"define\"===e?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\nuniform lowp float u_\"+a+\"_t;\\nattribute \"+r+\" \"+o+\" a_\"+a+\";\\n#else\\nuniform \"+r+\" \"+i+\" u_\"+a+\";\\n#endif\\n\":\"vec4\"===s?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\n \"+r+\" \"+i+\" \"+a+\" = a_\"+a+\";\\n#else\\n \"+r+\" \"+i+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\":\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\n \"+r+\" \"+i+\" \"+a+\" = unpack_mix_\"+s+\"(a_\"+a+\", u_\"+a+\"_t);\\n#else\\n \"+r+\" \"+i+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\"}))}}var xr=Object.freeze({__proto__:null,prelude:Ye,background:We,backgroundPattern:Xe,circle:Ze,clippingMask:Je,heatmap:Ke,heatmapTexture:Qe,collisionBox:$e,collisionCircle:tr,debug:er,fill:rr,fillOutline:nr,fillOutlinePattern:ir,fillPattern:ar,fillExtrusion:or,fillExtrusionPattern:sr,hillshadePrepare:lr,hillshade:cr,line:ur,lineGradient:fr,linePattern:hr,lineSDF:pr,raster:dr,symbolIcon:gr,symbolSDF:mr,symbolTextAndIcon:vr}),br=function(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null};br.prototype.bind=function(t,e,r,n,i,a,o,s){this.context=t;for(var l=this.boundPaintVertexBuffers.length!==n.length,c=0;!l&&c>16,s>>16],u_pixel_coord_lower:[65535&o,65535&s]}}_r.prototype.draw=function(t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g){var m,v=t.gl;if(!this.failedToCreate){for(var y in t.program.set(this.program),t.setDepthMode(r),t.setStencilMode(n),t.setColorMode(i),t.setCullFace(a),this.fixedUniforms)this.fixedUniforms[y].set(o[y]);p&&p.setUniforms(t,this.binderUniforms,f,{zoom:h});for(var x=(m={},m[v.LINES]=2,m[v.TRIANGLES]=3,m[v.LINE_STRIP]=1,m)[e],b=0,_=u.get();b<_.length;b+=1){var w=_[b],T=w.vaos||(w.vaos={});(T[s]||(T[s]=new br)).bind(t,this,l,p?p.getPaintVertexBuffers():[],c,w.vertexOffset,d,g),v.drawElements(e,w.primitiveLength*x,v.UNSIGNED_SHORT,w.primitiveOffset*x*2)}}};var Tr=function(e,r,n,i){var a=r.style.light,o=a.properties.get(\"position\"),s=[o.x,o.y,o.z],l=t.create$1();\"viewport\"===a.properties.get(\"anchor\")&&t.fromRotation(l,-r.transform.angle),t.transformMat3(s,s,l);var c=a.properties.get(\"color\");return{u_matrix:e,u_lightpos:s,u_lightintensity:a.properties.get(\"intensity\"),u_lightcolor:[c.r,c.g,c.b],u_vertical_gradient:+n,u_opacity:i}},kr=function(e,r,n,i,a,o,s){return t.extend(Tr(e,r,n,i),wr(o,r,s),{u_height_factor:-Math.pow(2,a.overscaledZ)/s.tileSize/8})},Ar=function(t){return{u_matrix:t}},Mr=function(e,r,n,i){return t.extend(Ar(e),wr(n,r,i))},Sr=function(t,e){return{u_matrix:t,u_world:e}},Er=function(e,r,n,i,a){return t.extend(Mr(e,r,n,i),{u_world:a})},Lr=function(e,r,n,i){var a,o,s=e.transform;if(\"map\"===i.paint.get(\"circle-pitch-alignment\")){var l=pe(n,1,s.zoom);a=!0,o=[l,l]}else a=!1,o=s.pixelsToGLUnits;return{u_camera_to_center_distance:s.cameraToCenterDistance,u_scale_with_map:+(\"map\"===i.paint.get(\"circle-pitch-scale\")),u_matrix:e.translatePosMatrix(r.posMatrix,n,i.paint.get(\"circle-translate\"),i.paint.get(\"circle-translate-anchor\")),u_pitch_with_map:+a,u_device_pixel_ratio:t.browser.devicePixelRatio,u_extrude_scale:o}},Cr=function(t,e,r){var n=pe(r,1,e.zoom),i=Math.pow(2,e.zoom-r.tileID.overscaledZ),a=r.tileID.overscaleFactor();return{u_matrix:t,u_camera_to_center_distance:e.cameraToCenterDistance,u_pixels_to_tile_units:n,u_extrude_scale:[e.pixelsToGLUnits[0]/(n*i),e.pixelsToGLUnits[1]/(n*i)],u_overscale_factor:a}},Pr=function(t,e,r){return{u_matrix:t,u_inv_matrix:e,u_camera_to_center_distance:r.cameraToCenterDistance,u_viewport_size:[r.width,r.height]}},Ir=function(t,e,r){return void 0===r&&(r=1),{u_matrix:t,u_color:e,u_overlay:0,u_overlay_scale:r}},Or=function(t){return{u_matrix:t}},zr=function(t,e,r,n){return{u_matrix:t,u_extrude_scale:pe(e,1,r),u_intensity:n}};function Dr(e,r){var n=Math.pow(2,r.canonical.z),i=r.canonical.y;return[new t.MercatorCoordinate(0,i/n).toLngLat().lat,new t.MercatorCoordinate(0,(i+1)/n).toLngLat().lat]}var Rr=function(e,r,n){var i=e.transform;return{u_matrix:Ur(e,r,n),u_ratio:1/pe(r,1,i.zoom),u_device_pixel_ratio:t.browser.devicePixelRatio,u_units_to_pixels:[1/i.pixelsToGLUnits[0],1/i.pixelsToGLUnits[1]]}},Fr=function(e,r,n){return t.extend(Rr(e,r,n),{u_image:0})},Br=function(e,r,n,i){var a=e.transform,o=jr(r,a);return{u_matrix:Ur(e,r,n),u_texsize:r.imageAtlasTexture.size,u_ratio:1/pe(r,1,a.zoom),u_device_pixel_ratio:t.browser.devicePixelRatio,u_image:0,u_scale:[o,i.fromScale,i.toScale],u_fade:i.t,u_units_to_pixels:[1/a.pixelsToGLUnits[0],1/a.pixelsToGLUnits[1]]}},Nr=function(e,r,n,i,a){var o=e.transform,s=e.lineAtlas,l=jr(r,o),c=\"round\"===n.layout.get(\"line-cap\"),u=s.getDash(i.from,c),f=s.getDash(i.to,c),h=u.width*a.fromScale,p=f.width*a.toScale;return t.extend(Rr(e,r,n),{u_patternscale_a:[l/h,-u.height/2],u_patternscale_b:[l/p,-f.height/2],u_sdfgamma:s.width/(256*Math.min(h,p)*t.browser.devicePixelRatio)/2,u_image:0,u_tex_y_a:u.y,u_tex_y_b:f.y,u_mix:a.t})};function jr(t,e){return 1/pe(t,1,e.tileZoom)}function Ur(t,e,r){return t.translatePosMatrix(e.tileID.posMatrix,e,r.paint.get(\"line-translate\"),r.paint.get(\"line-translate-anchor\"))}var Vr=function(t,e,r,n,i){return{u_matrix:t,u_tl_parent:e,u_scale_parent:r,u_buffer_scale:1,u_fade_t:n.mix,u_opacity:n.opacity*i.paint.get(\"raster-opacity\"),u_image0:0,u_image1:1,u_brightness_low:i.paint.get(\"raster-brightness-min\"),u_brightness_high:i.paint.get(\"raster-brightness-max\"),u_saturation_factor:(o=i.paint.get(\"raster-saturation\"),o>0?1-1/(1.001-o):-o),u_contrast_factor:(a=i.paint.get(\"raster-contrast\"),a>0?1/(1-a):1+a),u_spin_weights:Hr(i.paint.get(\"raster-hue-rotate\"))};var a,o};function Hr(t){t*=Math.PI/180;var e=Math.sin(t),r=Math.cos(t);return[(2*r+1)/3,(-Math.sqrt(3)*e-r+1)/3,(Math.sqrt(3)*e-r+1)/3]}var qr,Gr=function(t,e,r,n,i,a,o,s,l,c){var u=i.transform;return{u_is_size_zoom_constant:+(\"constant\"===t||\"source\"===t),u_is_size_feature_constant:+(\"constant\"===t||\"camera\"===t),u_size_t:e?e.uSizeT:0,u_size:e?e.uSize:0,u_camera_to_center_distance:u.cameraToCenterDistance,u_pitch:u.pitch/360*2*Math.PI,u_rotate_symbol:+r,u_aspect_ratio:u.width/u.height,u_fade_change:i.options.fadeDuration?i.symbolFadeChange:1,u_matrix:a,u_label_plane_matrix:o,u_coord_matrix:s,u_is_text:+l,u_pitch_with_map:+n,u_texsize:c,u_texture:0}},Yr=function(e,r,n,i,a,o,s,l,c,u,f){var h=a.transform;return t.extend(Gr(e,r,n,i,a,o,s,l,c,u),{u_gamma_scale:i?Math.cos(h._pitch)*h.cameraToCenterDistance:1,u_device_pixel_ratio:t.browser.devicePixelRatio,u_is_halo:+f})},Wr=function(e,r,n,i,a,o,s,l,c,u){return t.extend(Yr(e,r,n,i,a,o,s,l,!0,c,!0),{u_texsize_icon:u,u_texture_icon:1})},Xr=function(t,e,r){return{u_matrix:t,u_opacity:e,u_color:r}},Zr=function(e,r,n,i,a,o){return t.extend(function(t,e,r,n){var i=r.imageManager.getPattern(t.from.toString()),a=r.imageManager.getPattern(t.to.toString()),o=r.imageManager.getPixelSize(),s=o.width,l=o.height,c=Math.pow(2,n.tileID.overscaledZ),u=n.tileSize*Math.pow(2,r.transform.tileZoom)/c,f=u*(n.tileID.canonical.x+n.tileID.wrap*c),h=u*n.tileID.canonical.y;return{u_image:0,u_pattern_tl_a:i.tl,u_pattern_br_a:i.br,u_pattern_tl_b:a.tl,u_pattern_br_b:a.br,u_texsize:[s,l],u_mix:e.t,u_pattern_size_a:i.displaySize,u_pattern_size_b:a.displaySize,u_scale_a:e.fromScale,u_scale_b:e.toScale,u_tile_units_to_pixels:1/pe(n,1,r.transform.tileZoom),u_pixel_coord_upper:[f>>16,h>>16],u_pixel_coord_lower:[65535&f,65535&h]}}(i,o,n,a),{u_matrix:e,u_opacity:r})},Jr={fillExtrusion:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_lightpos:new t.Uniform3f(e,r.u_lightpos),u_lightintensity:new t.Uniform1f(e,r.u_lightintensity),u_lightcolor:new t.Uniform3f(e,r.u_lightcolor),u_vertical_gradient:new t.Uniform1f(e,r.u_vertical_gradient),u_opacity:new t.Uniform1f(e,r.u_opacity)}},fillExtrusionPattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_lightpos:new t.Uniform3f(e,r.u_lightpos),u_lightintensity:new t.Uniform1f(e,r.u_lightintensity),u_lightcolor:new t.Uniform3f(e,r.u_lightcolor),u_vertical_gradient:new t.Uniform1f(e,r.u_vertical_gradient),u_height_factor:new t.Uniform1f(e,r.u_height_factor),u_image:new t.Uniform1i(e,r.u_image),u_texsize:new t.Uniform2f(e,r.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade),u_opacity:new t.Uniform1f(e,r.u_opacity)}},fill:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},fillPattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_image:new t.Uniform1i(e,r.u_image),u_texsize:new t.Uniform2f(e,r.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade)}},fillOutline:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_world:new t.Uniform2f(e,r.u_world)}},fillOutlinePattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_world:new t.Uniform2f(e,r.u_world),u_image:new t.Uniform1i(e,r.u_image),u_texsize:new t.Uniform2f(e,r.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade)}},circle:function(e,r){return{u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_scale_with_map:new t.Uniform1i(e,r.u_scale_with_map),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_extrude_scale:new t.Uniform2f(e,r.u_extrude_scale),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},collisionBox:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pixels_to_tile_units:new t.Uniform1f(e,r.u_pixels_to_tile_units),u_extrude_scale:new t.Uniform2f(e,r.u_extrude_scale),u_overscale_factor:new t.Uniform1f(e,r.u_overscale_factor)}},collisionCircle:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_inv_matrix:new t.UniformMatrix4f(e,r.u_inv_matrix),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_viewport_size:new t.Uniform2f(e,r.u_viewport_size)}},debug:function(e,r){return{u_color:new t.UniformColor(e,r.u_color),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_overlay:new t.Uniform1i(e,r.u_overlay),u_overlay_scale:new t.Uniform1f(e,r.u_overlay_scale)}},clippingMask:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},heatmap:function(e,r){return{u_extrude_scale:new t.Uniform1f(e,r.u_extrude_scale),u_intensity:new t.Uniform1f(e,r.u_intensity),u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},heatmapTexture:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_world:new t.Uniform2f(e,r.u_world),u_image:new t.Uniform1i(e,r.u_image),u_color_ramp:new t.Uniform1i(e,r.u_color_ramp),u_opacity:new t.Uniform1f(e,r.u_opacity)}},hillshade:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_image:new t.Uniform1i(e,r.u_image),u_latrange:new t.Uniform2f(e,r.u_latrange),u_light:new t.Uniform2f(e,r.u_light),u_shadow:new t.UniformColor(e,r.u_shadow),u_highlight:new t.UniformColor(e,r.u_highlight),u_accent:new t.UniformColor(e,r.u_accent)}},hillshadePrepare:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_image:new t.Uniform1i(e,r.u_image),u_dimension:new t.Uniform2f(e,r.u_dimension),u_zoom:new t.Uniform1f(e,r.u_zoom),u_maxzoom:new t.Uniform1f(e,r.u_maxzoom),u_unpack:new t.Uniform4f(e,r.u_unpack)}},line:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels)}},lineGradient:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels),u_image:new t.Uniform1i(e,r.u_image)}},linePattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_texsize:new t.Uniform2f(e,r.u_texsize),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_image:new t.Uniform1i(e,r.u_image),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade)}},lineSDF:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels),u_patternscale_a:new t.Uniform2f(e,r.u_patternscale_a),u_patternscale_b:new t.Uniform2f(e,r.u_patternscale_b),u_sdfgamma:new t.Uniform1f(e,r.u_sdfgamma),u_image:new t.Uniform1i(e,r.u_image),u_tex_y_a:new t.Uniform1f(e,r.u_tex_y_a),u_tex_y_b:new t.Uniform1f(e,r.u_tex_y_b),u_mix:new t.Uniform1f(e,r.u_mix)}},raster:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_tl_parent:new t.Uniform2f(e,r.u_tl_parent),u_scale_parent:new t.Uniform1f(e,r.u_scale_parent),u_buffer_scale:new t.Uniform1f(e,r.u_buffer_scale),u_fade_t:new t.Uniform1f(e,r.u_fade_t),u_opacity:new t.Uniform1f(e,r.u_opacity),u_image0:new t.Uniform1i(e,r.u_image0),u_image1:new t.Uniform1i(e,r.u_image1),u_brightness_low:new t.Uniform1f(e,r.u_brightness_low),u_brightness_high:new t.Uniform1f(e,r.u_brightness_high),u_saturation_factor:new t.Uniform1f(e,r.u_saturation_factor),u_contrast_factor:new t.Uniform1f(e,r.u_contrast_factor),u_spin_weights:new t.Uniform3f(e,r.u_spin_weights)}},symbolIcon:function(e,r){return{u_is_size_zoom_constant:new t.Uniform1i(e,r.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,r.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,r.u_size_t),u_size:new t.Uniform1f(e,r.u_size),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,r.u_pitch),u_rotate_symbol:new t.Uniform1i(e,r.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,r.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,r.u_fade_change),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,r.u_label_plane_matrix),u_coord_matrix:new t.UniformMatrix4f(e,r.u_coord_matrix),u_is_text:new t.Uniform1i(e,r.u_is_text),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_texsize:new t.Uniform2f(e,r.u_texsize),u_texture:new t.Uniform1i(e,r.u_texture)}},symbolSDF:function(e,r){return{u_is_size_zoom_constant:new t.Uniform1i(e,r.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,r.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,r.u_size_t),u_size:new t.Uniform1f(e,r.u_size),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,r.u_pitch),u_rotate_symbol:new t.Uniform1i(e,r.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,r.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,r.u_fade_change),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,r.u_label_plane_matrix),u_coord_matrix:new t.UniformMatrix4f(e,r.u_coord_matrix),u_is_text:new t.Uniform1i(e,r.u_is_text),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_texsize:new t.Uniform2f(e,r.u_texsize),u_texture:new t.Uniform1i(e,r.u_texture),u_gamma_scale:new t.Uniform1f(e,r.u_gamma_scale),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_is_halo:new t.Uniform1i(e,r.u_is_halo)}},symbolTextAndIcon:function(e,r){return{u_is_size_zoom_constant:new t.Uniform1i(e,r.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,r.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,r.u_size_t),u_size:new t.Uniform1f(e,r.u_size),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,r.u_pitch),u_rotate_symbol:new t.Uniform1i(e,r.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,r.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,r.u_fade_change),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,r.u_label_plane_matrix),u_coord_matrix:new t.UniformMatrix4f(e,r.u_coord_matrix),u_is_text:new t.Uniform1i(e,r.u_is_text),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_texsize:new t.Uniform2f(e,r.u_texsize),u_texsize_icon:new t.Uniform2f(e,r.u_texsize_icon),u_texture:new t.Uniform1i(e,r.u_texture),u_texture_icon:new t.Uniform1i(e,r.u_texture_icon),u_gamma_scale:new t.Uniform1f(e,r.u_gamma_scale),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_is_halo:new t.Uniform1i(e,r.u_is_halo)}},background:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_opacity:new t.Uniform1f(e,r.u_opacity),u_color:new t.UniformColor(e,r.u_color)}},backgroundPattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_opacity:new t.Uniform1f(e,r.u_opacity),u_image:new t.Uniform1i(e,r.u_image),u_pattern_tl_a:new t.Uniform2f(e,r.u_pattern_tl_a),u_pattern_br_a:new t.Uniform2f(e,r.u_pattern_br_a),u_pattern_tl_b:new t.Uniform2f(e,r.u_pattern_tl_b),u_pattern_br_b:new t.Uniform2f(e,r.u_pattern_br_b),u_texsize:new t.Uniform2f(e,r.u_texsize),u_mix:new t.Uniform1f(e,r.u_mix),u_pattern_size_a:new t.Uniform2f(e,r.u_pattern_size_a),u_pattern_size_b:new t.Uniform2f(e,r.u_pattern_size_b),u_scale_a:new t.Uniform1f(e,r.u_scale_a),u_scale_b:new t.Uniform1f(e,r.u_scale_b),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_tile_units_to_pixels:new t.Uniform1f(e,r.u_tile_units_to_pixels)}}};function Kr(e,r,n,i,a,o,s){for(var l=e.context,c=l.gl,u=e.useProgram(\"collisionBox\"),f=[],h=0,p=0,d=0;d0){var _=t.create(),w=y;t.mul(_,v.placementInvProjMatrix,e.transform.glCoordMatrix),t.mul(_,_,v.placementViewportMatrix),f.push({circleArray:b,circleOffset:p,transform:w,invTransform:_}),p=h+=b.length/4}x&&u.draw(l,c.LINES,At.disabled,Mt.disabled,e.colorModeForRenderPass(),Et.disabled,Cr(y,e.transform,m),n.id,x.layoutVertexBuffer,x.indexBuffer,x.segments,null,e.transform.zoom,null,null,x.collisionVertexBuffer)}}if(s&&f.length){var T=e.useProgram(\"collisionCircle\"),k=new t.StructArrayLayout2f1f2i16;k.resize(4*h),k._trim();for(var A=0,M=0,S=f;M=0&&(g[v.associatedIconIndex]={shiftedAnchor:S,angle:E})}else ue(v.numGlyphs,p)}if(f){d.clear();for(var C=e.icon.placedSymbolArray,P=0;P0){var s=t.browser.now(),l=(s-e.timeAdded)/o,c=r?(s-r.timeAdded)/o:-1,u=n.getSource(),f=a.coveringZoomLevel({tileSize:u.tileSize,roundZoom:u.roundZoom}),h=!r||Math.abs(r.tileID.overscaledZ-f)>Math.abs(e.tileID.overscaledZ-f),p=h&&e.refreshedUponExpiration?1:t.clamp(h?l:1-c,0,1);return e.refreshedUponExpiration&&l>=1&&(e.refreshedUponExpiration=!1),r?{opacity:1,mix:1-p}:{opacity:p,mix:0}}return{opacity:1,mix:0}}var un=new t.Color(1,0,0,1),fn=new t.Color(0,1,0,1),hn=new t.Color(0,0,1,1),pn=new t.Color(1,0,1,1),dn=new t.Color(0,1,1,1);function gn(t){var e=t.transform.padding;mn(t,t.transform.height-(e.top||0),3,un),mn(t,e.bottom||0,3,fn),vn(t,e.left||0,3,hn),vn(t,t.transform.width-(e.right||0),3,pn);var r=t.transform.centerPoint;!function(t,e,r,n){yn(t,e-1,r-10,2,20,n),yn(t,e-10,r-1,20,2,n)}(t,r.x,t.transform.height-r.y,dn)}function mn(t,e,r,n){yn(t,0,e+r/2,t.transform.width,r,n)}function vn(t,e,r,n){yn(t,e-r/2,0,r,t.transform.height,n)}function yn(e,r,n,i,a,o){var s=e.context,l=s.gl;l.enable(l.SCISSOR_TEST),l.scissor(r*t.browser.devicePixelRatio,n*t.browser.devicePixelRatio,i*t.browser.devicePixelRatio,a*t.browser.devicePixelRatio),s.clear({color:o}),l.disable(l.SCISSOR_TEST)}function xn(e,r,n){var i=e.context,a=i.gl,o=n.posMatrix,s=e.useProgram(\"debug\"),l=At.disabled,c=Mt.disabled,u=e.colorModeForRenderPass();i.activeTexture.set(a.TEXTURE0),e.emptyTexture.bind(a.LINEAR,a.CLAMP_TO_EDGE),s.draw(i,a.LINE_STRIP,l,c,u,Et.disabled,Ir(o,t.Color.red),\"$debug\",e.debugBuffer,e.tileBorderIndexBuffer,e.debugSegments);var f=r.getTileByID(n.key).latestRawTileData,h=f&&f.byteLength||0,p=Math.floor(h/1024),d=r.getTile(n).tileSize,g=512/Math.min(d,512)*(n.overscaledZ/e.transform.zoom)*.5,m=n.canonical.toString();n.overscaledZ!==n.canonical.z&&(m+=\" => \"+n.overscaledZ),function(t,e){t.initDebugOverlayCanvas();var r=t.debugOverlayCanvas,n=t.context.gl,i=t.debugOverlayCanvas.getContext(\"2d\");i.clearRect(0,0,r.width,r.height),i.shadowColor=\"white\",i.shadowBlur=2,i.lineWidth=1.5,i.strokeStyle=\"white\",i.textBaseline=\"top\",i.font=\"bold 36px Open Sans, sans-serif\",i.fillText(e,5,5),i.strokeText(e,5,5),t.debugOverlayTexture.update(r),t.debugOverlayTexture.bind(n.LINEAR,n.CLAMP_TO_EDGE)}(e,m+\" \"+p+\"kb\"),s.draw(i,a.TRIANGLES,l,c,St.alphaBlended,Et.disabled,Ir(o,t.Color.transparent,g),\"$debug\",e.debugBuffer,e.quadTriangleIndexBuffer,e.debugSegments)}var bn={symbol:function(e,r,n,i,a){if(\"translucent\"===e.renderPass){var o=Mt.disabled,s=e.colorModeForRenderPass();n.layout.get(\"text-variable-anchor\")&&function(e,r,n,i,a,o,s){for(var l=r.transform,c=\"map\"===a,u=\"map\"===o,f=0,h=e;f256&&this.clearStencil(),r.setColorMode(St.disabled),r.setDepthMode(At.disabled);var i=this.useProgram(\"clippingMask\");this._tileClippingMaskIDs={};for(var a=0,o=e;a256&&this.clearStencil();var t=this.nextStencilID++,e=this.context.gl;return new Mt({func:e.NOTEQUAL,mask:255},t,255,e.KEEP,e.KEEP,e.REPLACE)},_n.prototype.stencilModeForClipping=function(t){var e=this.context.gl;return new Mt({func:e.EQUAL,mask:255},this._tileClippingMaskIDs[t.key],0,e.KEEP,e.KEEP,e.REPLACE)},_n.prototype.stencilConfigForOverlap=function(t){var e,r=this.context.gl,n=t.sort((function(t,e){return e.overscaledZ-t.overscaledZ})),i=n[n.length-1].overscaledZ,a=n[0].overscaledZ-i+1;if(a>1){this.currentStencilSource=void 0,this.nextStencilID+a>256&&this.clearStencil();for(var o={},s=0;s=0;this.currentLayer--){var w=this.style._layers[i[this.currentLayer]],T=a[w.source],k=u[w.source];this._renderTileClippingMasks(w,k),this.renderLayer(this,T,w,k)}for(this.renderPass=\"translucent\",this.currentLayer=0;this.currentLayer0?e.pop():null},_n.prototype.isPatternMissing=function(t){if(!t)return!1;if(!t.from||!t.to)return!0;var e=this.imageManager.getPattern(t.from.toString()),r=this.imageManager.getPattern(t.to.toString());return!e||!r},_n.prototype.useProgram=function(t,e){this.cache=this.cache||{};var r=\"\"+t+(e?e.cacheKey:\"\")+(this._showOverdrawInspector?\"/overdraw\":\"\");return this.cache[r]||(this.cache[r]=new _r(this.context,xr[t],e,Jr[t],this._showOverdrawInspector)),this.cache[r]},_n.prototype.setCustomLayerDefaults=function(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault()},_n.prototype.setBaseState=function(){var t=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(t.FUNC_ADD)},_n.prototype.initDebugOverlayCanvas=function(){if(null==this.debugOverlayCanvas){this.debugOverlayCanvas=t.window.document.createElement(\"canvas\"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512;var e=this.context.gl;this.debugOverlayTexture=new t.Texture(this.context,this.debugOverlayCanvas,e.RGBA)}},_n.prototype.destroy=function(){this.emptyTexture.destroy(),this.debugOverlayTexture&&this.debugOverlayTexture.destroy()};var wn=function(t,e){this.points=t,this.planes=e};wn.fromInvProjectionMatrix=function(e,r,n){var i=Math.pow(2,n),a=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]].map((function(r){return t.transformMat4([],r,e)})).map((function(e){return t.scale$1([],e,1/e[3]/r*i)})),o=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]].map((function(e){var r=t.sub([],a[e[0]],a[e[1]]),n=t.sub([],a[e[2]],a[e[1]]),i=t.normalize([],t.cross([],r,n)),o=-t.dot(i,a[e[1]]);return i.concat(o)}));return new wn(a,o)};var Tn=function(e,r){this.min=e,this.max=r,this.center=t.scale$2([],t.add([],this.min,this.max),.5)};Tn.prototype.quadrant=function(e){for(var r=[e%2==0,e<2],n=t.clone$2(this.min),i=t.clone$2(this.max),a=0;a=0;if(0===o)return 0;o!==r.length&&(n=!1)}if(n)return 2;for(var l=0;l<3;l++){for(var c=Number.MAX_VALUE,u=-Number.MAX_VALUE,f=0;fthis.max[l]-this.min[l])return 0}return 1};var kn=function(t,e,r,n){if(void 0===t&&(t=0),void 0===e&&(e=0),void 0===r&&(r=0),void 0===n&&(n=0),isNaN(t)||t<0||isNaN(e)||e<0||isNaN(r)||r<0||isNaN(n)||n<0)throw new Error(\"Invalid value for edge-insets, top, bottom, left and right must all be numbers\");this.top=t,this.bottom=e,this.left=r,this.right=n};kn.prototype.interpolate=function(e,r,n){return null!=r.top&&null!=e.top&&(this.top=t.number(e.top,r.top,n)),null!=r.bottom&&null!=e.bottom&&(this.bottom=t.number(e.bottom,r.bottom,n)),null!=r.left&&null!=e.left&&(this.left=t.number(e.left,r.left,n)),null!=r.right&&null!=e.right&&(this.right=t.number(e.right,r.right,n)),this},kn.prototype.getCenter=function(e,r){var n=t.clamp((this.left+e-this.right)/2,0,e),i=t.clamp((this.top+r-this.bottom)/2,0,r);return new t.Point(n,i)},kn.prototype.equals=function(t){return this.top===t.top&&this.bottom===t.bottom&&this.left===t.left&&this.right===t.right},kn.prototype.clone=function(){return new kn(this.top,this.bottom,this.left,this.right)},kn.prototype.toJSON=function(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}};var An=function(e,r,n,i,a){this.tileSize=512,this.maxValidLatitude=85.051129,this._renderWorldCopies=void 0===a||a,this._minZoom=e||0,this._maxZoom=r||22,this._minPitch=null==n?0:n,this._maxPitch=null==i?60:i,this.setMaxBounds(),this.width=0,this.height=0,this._center=new t.LngLat(0,0),this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._edgeInsets=new kn,this._posMatrixCache={},this._alignedPosMatrixCache={}},Mn={minZoom:{configurable:!0},maxZoom:{configurable:!0},minPitch:{configurable:!0},maxPitch:{configurable:!0},renderWorldCopies:{configurable:!0},worldSize:{configurable:!0},centerOffset:{configurable:!0},size:{configurable:!0},bearing:{configurable:!0},pitch:{configurable:!0},fov:{configurable:!0},zoom:{configurable:!0},center:{configurable:!0},padding:{configurable:!0},centerPoint:{configurable:!0},unmodified:{configurable:!0},point:{configurable:!0}};An.prototype.clone=function(){var t=new An(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return t.tileSize=this.tileSize,t.latRange=this.latRange,t.width=this.width,t.height=this.height,t._center=this._center,t.zoom=this.zoom,t.angle=this.angle,t._fov=this._fov,t._pitch=this._pitch,t._unmodified=this._unmodified,t._edgeInsets=this._edgeInsets.clone(),t._calcMatrices(),t},Mn.minZoom.get=function(){return this._minZoom},Mn.minZoom.set=function(t){this._minZoom!==t&&(this._minZoom=t,this.zoom=Math.max(this.zoom,t))},Mn.maxZoom.get=function(){return this._maxZoom},Mn.maxZoom.set=function(t){this._maxZoom!==t&&(this._maxZoom=t,this.zoom=Math.min(this.zoom,t))},Mn.minPitch.get=function(){return this._minPitch},Mn.minPitch.set=function(t){this._minPitch!==t&&(this._minPitch=t,this.pitch=Math.max(this.pitch,t))},Mn.maxPitch.get=function(){return this._maxPitch},Mn.maxPitch.set=function(t){this._maxPitch!==t&&(this._maxPitch=t,this.pitch=Math.min(this.pitch,t))},Mn.renderWorldCopies.get=function(){return this._renderWorldCopies},Mn.renderWorldCopies.set=function(t){void 0===t?t=!0:null===t&&(t=!1),this._renderWorldCopies=t},Mn.worldSize.get=function(){return this.tileSize*this.scale},Mn.centerOffset.get=function(){return this.centerPoint._sub(this.size._div(2))},Mn.size.get=function(){return new t.Point(this.width,this.height)},Mn.bearing.get=function(){return-this.angle/Math.PI*180},Mn.bearing.set=function(e){var r=-t.wrap(e,-180,180)*Math.PI/180;this.angle!==r&&(this._unmodified=!1,this.angle=r,this._calcMatrices(),this.rotationMatrix=t.create$2(),t.rotate(this.rotationMatrix,this.rotationMatrix,this.angle))},Mn.pitch.get=function(){return this._pitch/Math.PI*180},Mn.pitch.set=function(e){var r=t.clamp(e,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==r&&(this._unmodified=!1,this._pitch=r,this._calcMatrices())},Mn.fov.get=function(){return this._fov/Math.PI*180},Mn.fov.set=function(t){t=Math.max(.01,Math.min(60,t)),this._fov!==t&&(this._unmodified=!1,this._fov=t/180*Math.PI,this._calcMatrices())},Mn.zoom.get=function(){return this._zoom},Mn.zoom.set=function(t){var e=Math.min(Math.max(t,this.minZoom),this.maxZoom);this._zoom!==e&&(this._unmodified=!1,this._zoom=e,this.scale=this.zoomScale(e),this.tileZoom=Math.floor(e),this.zoomFraction=e-this.tileZoom,this._constrain(),this._calcMatrices())},Mn.center.get=function(){return this._center},Mn.center.set=function(t){t.lat===this._center.lat&&t.lng===this._center.lng||(this._unmodified=!1,this._center=t,this._constrain(),this._calcMatrices())},Mn.padding.get=function(){return this._edgeInsets.toJSON()},Mn.padding.set=function(t){this._edgeInsets.equals(t)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,t,1),this._calcMatrices())},Mn.centerPoint.get=function(){return this._edgeInsets.getCenter(this.width,this.height)},An.prototype.isPaddingEqual=function(t){return this._edgeInsets.equals(t)},An.prototype.interpolatePadding=function(t,e,r){this._unmodified=!1,this._edgeInsets.interpolate(t,e,r),this._constrain(),this._calcMatrices()},An.prototype.coveringZoomLevel=function(t){var e=(t.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/t.tileSize));return Math.max(0,e)},An.prototype.getVisibleUnwrappedCoordinates=function(e){var r=[new t.UnwrappedTileID(0,e)];if(this._renderWorldCopies)for(var n=this.pointCoordinate(new t.Point(0,0)),i=this.pointCoordinate(new t.Point(this.width,0)),a=this.pointCoordinate(new t.Point(this.width,this.height)),o=this.pointCoordinate(new t.Point(0,this.height)),s=Math.floor(Math.min(n.x,i.x,a.x,o.x)),l=Math.floor(Math.max(n.x,i.x,a.x,o.x)),c=s-1;c<=l+1;c++)0!==c&&r.push(new t.UnwrappedTileID(c,e));return r},An.prototype.coveringTiles=function(e){var r=this.coveringZoomLevel(e),n=r;if(void 0!==e.minzoom&&re.maxzoom&&(r=e.maxzoom);var i=t.MercatorCoordinate.fromLngLat(this.center),a=Math.pow(2,r),o=[a*i.x,a*i.y,0],s=wn.fromInvProjectionMatrix(this.invProjMatrix,this.worldSize,r),l=e.minzoom||0;this.pitch<=60&&this._edgeInsets.top<.1&&(l=r);var c=function(t){return{aabb:new Tn([t*a,0,0],[(t+1)*a,a,0]),zoom:0,x:0,y:0,wrap:t,fullyVisible:!1}},u=[],f=[],h=r,p=e.reparseOverscaled?n:r;if(this._renderWorldCopies)for(var d=1;d<=3;d++)u.push(c(-d)),u.push(c(d));for(u.push(c(0));u.length>0;){var g=u.pop(),m=g.x,v=g.y,y=g.fullyVisible;if(!y){var x=g.aabb.intersects(s);if(0===x)continue;y=2===x}var b=g.aabb.distanceX(o),_=g.aabb.distanceY(o),w=Math.max(Math.abs(b),Math.abs(_)),T=3+(1<T&&g.zoom>=l)f.push({tileID:new t.OverscaledTileID(g.zoom===h?p:g.zoom,g.wrap,g.zoom,m,v),distanceSq:t.sqrLen([o[0]-.5-m,o[1]-.5-v])});else for(var k=0;k<4;k++){var A=(m<<1)+k%2,M=(v<<1)+(k>>1);u.push({aabb:g.aabb.quadrant(k),zoom:g.zoom+1,x:A,y:M,wrap:g.wrap,fullyVisible:y})}}return f.sort((function(t,e){return t.distanceSq-e.distanceSq})).map((function(t){return t.tileID}))},An.prototype.resize=function(t,e){this.width=t,this.height=e,this.pixelsToGLUnits=[2/t,-2/e],this._constrain(),this._calcMatrices()},Mn.unmodified.get=function(){return this._unmodified},An.prototype.zoomScale=function(t){return Math.pow(2,t)},An.prototype.scaleZoom=function(t){return Math.log(t)/Math.LN2},An.prototype.project=function(e){var r=t.clamp(e.lat,-this.maxValidLatitude,this.maxValidLatitude);return new t.Point(t.mercatorXfromLng(e.lng)*this.worldSize,t.mercatorYfromLat(r)*this.worldSize)},An.prototype.unproject=function(e){return new t.MercatorCoordinate(e.x/this.worldSize,e.y/this.worldSize).toLngLat()},Mn.point.get=function(){return this.project(this.center)},An.prototype.setLocationAtPoint=function(e,r){var n=this.pointCoordinate(r),i=this.pointCoordinate(this.centerPoint),a=this.locationCoordinate(e),o=new t.MercatorCoordinate(a.x-(n.x-i.x),a.y-(n.y-i.y));this.center=this.coordinateLocation(o),this._renderWorldCopies&&(this.center=this.center.wrap())},An.prototype.locationPoint=function(t){return this.coordinatePoint(this.locationCoordinate(t))},An.prototype.pointLocation=function(t){return this.coordinateLocation(this.pointCoordinate(t))},An.prototype.locationCoordinate=function(e){return t.MercatorCoordinate.fromLngLat(e)},An.prototype.coordinateLocation=function(t){return t.toLngLat()},An.prototype.pointCoordinate=function(e){var r=[e.x,e.y,0,1],n=[e.x,e.y,1,1];t.transformMat4(r,r,this.pixelMatrixInverse),t.transformMat4(n,n,this.pixelMatrixInverse);var i=r[3],a=n[3],o=r[0]/i,s=n[0]/a,l=r[1]/i,c=n[1]/a,u=r[2]/i,f=n[2]/a,h=u===f?0:(0-u)/(f-u);return new t.MercatorCoordinate(t.number(o,s,h)/this.worldSize,t.number(l,c,h)/this.worldSize)},An.prototype.coordinatePoint=function(e){var r=[e.x*this.worldSize,e.y*this.worldSize,0,1];return t.transformMat4(r,r,this.pixelMatrix),new t.Point(r[0]/r[3],r[1]/r[3])},An.prototype.getBounds=function(){return(new t.LngLatBounds).extend(this.pointLocation(new t.Point(0,0))).extend(this.pointLocation(new t.Point(this.width,0))).extend(this.pointLocation(new t.Point(this.width,this.height))).extend(this.pointLocation(new t.Point(0,this.height)))},An.prototype.getMaxBounds=function(){return this.latRange&&2===this.latRange.length&&this.lngRange&&2===this.lngRange.length?new t.LngLatBounds([this.lngRange[0],this.latRange[0]],[this.lngRange[1],this.latRange[1]]):null},An.prototype.setMaxBounds=function(t){t?(this.lngRange=[t.getWest(),t.getEast()],this.latRange=[t.getSouth(),t.getNorth()],this._constrain()):(this.lngRange=null,this.latRange=[-this.maxValidLatitude,this.maxValidLatitude])},An.prototype.calculatePosMatrix=function(e,r){void 0===r&&(r=!1);var n=e.key,i=r?this._alignedPosMatrixCache:this._posMatrixCache;if(i[n])return i[n];var a=e.canonical,o=this.worldSize/this.zoomScale(a.z),s=a.x+Math.pow(2,a.z)*e.wrap,l=t.identity(new Float64Array(16));return t.translate(l,l,[s*o,a.y*o,0]),t.scale(l,l,[o/t.EXTENT,o/t.EXTENT,1]),t.multiply(l,r?this.alignedProjMatrix:this.projMatrix,l),i[n]=new Float32Array(l),i[n]},An.prototype.customLayerMatrix=function(){return this.mercatorMatrix.slice()},An.prototype._constrain=function(){if(this.center&&this.width&&this.height&&!this._constraining){this._constraining=!0;var e,r,n,i,a=-90,o=90,s=-180,l=180,c=this.size,u=this._unmodified;if(this.latRange){var f=this.latRange;a=t.mercatorYfromLat(f[1])*this.worldSize,e=(o=t.mercatorYfromLat(f[0])*this.worldSize)-ao&&(i=o-m)}if(this.lngRange){var v=p.x,y=c.x/2;v-yl&&(n=l-y)}void 0===n&&void 0===i||(this.center=this.unproject(new t.Point(void 0!==n?n:p.x,void 0!==i?i:p.y))),this._unmodified=u,this._constraining=!1}},An.prototype._calcMatrices=function(){if(this.height){var e=this._fov/2,r=this.centerOffset;this.cameraToCenterDistance=.5/Math.tan(e)*this.height;var n=Math.PI/2+this._pitch,i=this._fov*(.5+r.y/this.height),a=Math.sin(i)*this.cameraToCenterDistance/Math.sin(t.clamp(Math.PI-n-i,.01,Math.PI-.01)),o=this.point,s=o.x,l=o.y,c=1.01*(Math.cos(Math.PI/2-this._pitch)*a+this.cameraToCenterDistance),u=this.height/50,f=new Float64Array(16);t.perspective(f,this._fov,this.width/this.height,u,c),f[8]=2*-r.x/this.width,f[9]=2*r.y/this.height,t.scale(f,f,[1,-1,1]),t.translate(f,f,[0,0,-this.cameraToCenterDistance]),t.rotateX(f,f,this._pitch),t.rotateZ(f,f,this.angle),t.translate(f,f,[-s,-l,0]),this.mercatorMatrix=t.scale([],f,[this.worldSize,this.worldSize,this.worldSize]),t.scale(f,f,[1,1,t.mercatorZfromAltitude(1,this.center.lat)*this.worldSize,1]),this.projMatrix=f,this.invProjMatrix=t.invert([],this.projMatrix);var h=this.width%2/2,p=this.height%2/2,d=Math.cos(this.angle),g=Math.sin(this.angle),m=s-Math.round(s)+d*h+g*p,v=l-Math.round(l)+d*p+g*h,y=new Float64Array(f);if(t.translate(y,y,[m>.5?m-1:m,v>.5?v-1:v,0]),this.alignedProjMatrix=y,f=t.create(),t.scale(f,f,[this.width/2,-this.height/2,1]),t.translate(f,f,[1,-1,0]),this.labelPlaneMatrix=f,f=t.create(),t.scale(f,f,[1,-1,1]),t.translate(f,f,[-1,-1,0]),t.scale(f,f,[2/this.width,2/this.height,1]),this.glCoordMatrix=f,this.pixelMatrix=t.multiply(new Float64Array(16),this.labelPlaneMatrix,this.projMatrix),!(f=t.invert(new Float64Array(16),this.pixelMatrix)))throw new Error(\"failed to invert matrix\");this.pixelMatrixInverse=f,this._posMatrixCache={},this._alignedPosMatrixCache={}}},An.prototype.maxPitchScaleFactor=function(){if(!this.pixelMatrixInverse)return 1;var e=this.pointCoordinate(new t.Point(0,0)),r=[e.x*this.worldSize,e.y*this.worldSize,0,1];return t.transformMat4(r,r,this.pixelMatrix)[3]/this.cameraToCenterDistance},An.prototype.getCameraPoint=function(){var e=this._pitch,r=Math.tan(e)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new t.Point(0,r))},An.prototype.getCameraQueryGeometry=function(e){var r=this.getCameraPoint();if(1===e.length)return[e[0],r];for(var n=r.x,i=r.y,a=r.x,o=r.y,s=0,l=e;s=3&&!t.some((function(t){return isNaN(t)}))){var e=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(t[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+t[2],+t[1]],zoom:+t[0],bearing:e,pitch:+(t[4]||0)}),!0}return!1},Sn.prototype._updateHashUnthrottled=function(){var e=this.getHashString();try{t.window.history.replaceState(t.window.history.state,\"\",e)}catch(t){}};var En={linearity:.3,easing:t.bezier(0,0,.3,1)},Ln=t.extend({deceleration:2500,maxSpeed:1400},En),Cn=t.extend({deceleration:20,maxSpeed:1400},En),Pn=t.extend({deceleration:1e3,maxSpeed:360},En),In=t.extend({deceleration:1e3,maxSpeed:90},En),On=function(t){this._map=t,this.clear()};function zn(t,e){(!t.duration||t.duration0&&r-e[0].time>160;)e.shift()},On.prototype._onMoveEnd=function(e){if(this._drainInertiaBuffer(),!(this._inertiaBuffer.length<2)){for(var r={zoom:0,bearing:0,pitch:0,pan:new t.Point(0,0),pinchAround:void 0,around:void 0},n=0,i=this._inertiaBuffer;n=this._clickTolerance||this._map.fire(new Rn(t.type,this._map,t))},Nn.prototype.dblclick=function(t){return this._firePreventable(new Rn(t.type,this._map,t))},Nn.prototype.mouseover=function(t){this._map.fire(new Rn(t.type,this._map,t))},Nn.prototype.mouseout=function(t){this._map.fire(new Rn(t.type,this._map,t))},Nn.prototype.touchstart=function(t){return this._firePreventable(new Fn(t.type,this._map,t))},Nn.prototype.touchmove=function(t){this._map.fire(new Fn(t.type,this._map,t))},Nn.prototype.touchend=function(t){this._map.fire(new Fn(t.type,this._map,t))},Nn.prototype.touchcancel=function(t){this._map.fire(new Fn(t.type,this._map,t))},Nn.prototype._firePreventable=function(t){if(this._map.fire(t),t.defaultPrevented)return{}},Nn.prototype.isEnabled=function(){return!0},Nn.prototype.isActive=function(){return!1},Nn.prototype.enable=function(){},Nn.prototype.disable=function(){};var jn=function(t){this._map=t};jn.prototype.reset=function(){this._delayContextMenu=!1,delete this._contextMenuEvent},jn.prototype.mousemove=function(t){this._map.fire(new Rn(t.type,this._map,t))},jn.prototype.mousedown=function(){this._delayContextMenu=!0},jn.prototype.mouseup=function(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new Rn(\"contextmenu\",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)},jn.prototype.contextmenu=function(t){this._delayContextMenu?this._contextMenuEvent=t:this._map.fire(new Rn(t.type,this._map,t)),this._map.listens(\"contextmenu\")&&t.preventDefault()},jn.prototype.isEnabled=function(){return!0},jn.prototype.isActive=function(){return!1},jn.prototype.enable=function(){},jn.prototype.disable=function(){};var Un=function(t,e){this._map=t,this._el=t.getCanvasContainer(),this._container=t.getContainer(),this._clickTolerance=e.clickTolerance||1};function Vn(t,e){for(var r={},n=0;nthis.numTouches)&&(this.aborted=!0),this.aborted||(void 0===this.startTime&&(this.startTime=e.timeStamp),n.length===this.numTouches&&(this.centroid=function(e){for(var r=new t.Point(0,0),n=0,i=e;n30)&&(this.aborted=!0)}}},Hn.prototype.touchend=function(t,e,r){if((!this.centroid||t.timeStamp-this.startTime>500)&&(this.aborted=!0),0===r.length){var n=!this.aborted&&this.centroid;if(this.reset(),n)return n}};var qn=function(t){this.singleTap=new Hn(t),this.numTaps=t.numTaps,this.reset()};qn.prototype.reset=function(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset()},qn.prototype.touchstart=function(t,e,r){this.singleTap.touchstart(t,e,r)},qn.prototype.touchmove=function(t,e,r){this.singleTap.touchmove(t,e,r)},qn.prototype.touchend=function(t,e,r){var n=this.singleTap.touchend(t,e,r);if(n){var i=t.timeStamp-this.lastTime<500,a=!this.lastTap||this.lastTap.dist(n)<30;if(i&&a||this.reset(),this.count++,this.lastTime=t.timeStamp,this.lastTap=n,this.count===this.numTaps)return this.reset(),n}};var Gn=function(){this._zoomIn=new qn({numTouches:1,numTaps:2}),this._zoomOut=new qn({numTouches:2,numTaps:1}),this.reset()};Gn.prototype.reset=function(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset()},Gn.prototype.touchstart=function(t,e,r){this._zoomIn.touchstart(t,e,r),this._zoomOut.touchstart(t,e,r)},Gn.prototype.touchmove=function(t,e,r){this._zoomIn.touchmove(t,e,r),this._zoomOut.touchmove(t,e,r)},Gn.prototype.touchend=function(t,e,r){var n=this,i=this._zoomIn.touchend(t,e,r),a=this._zoomOut.touchend(t,e,r);return i?(this._active=!0,t.preventDefault(),setTimeout((function(){return n.reset()}),0),{cameraAnimation:function(e){return e.easeTo({duration:300,zoom:e.getZoom()+1,around:e.unproject(i)},{originalEvent:t})}}):a?(this._active=!0,t.preventDefault(),setTimeout((function(){return n.reset()}),0),{cameraAnimation:function(e){return e.easeTo({duration:300,zoom:e.getZoom()-1,around:e.unproject(a)},{originalEvent:t})}}):void 0},Gn.prototype.touchcancel=function(){this.reset()},Gn.prototype.enable=function(){this._enabled=!0},Gn.prototype.disable=function(){this._enabled=!1,this.reset()},Gn.prototype.isEnabled=function(){return this._enabled},Gn.prototype.isActive=function(){return this._active};var Yn=function(t){this.reset(),this._clickTolerance=t.clickTolerance||1};Yn.prototype.reset=function(){this._active=!1,this._moved=!1,delete this._lastPoint,delete this._eventButton},Yn.prototype._correctButton=function(t,e){return!1},Yn.prototype._move=function(t,e){return{}},Yn.prototype.mousedown=function(t,e){if(!this._lastPoint){var n=r.mouseButton(t);this._correctButton(t,n)&&(this._lastPoint=e,this._eventButton=n)}},Yn.prototype.mousemoveWindow=function(t,e){var r=this._lastPoint;if(r&&(t.preventDefault(),this._moved||!(e.dist(r)0&&(this._active=!0);var i=Vn(n,r),a=new t.Point(0,0),o=new t.Point(0,0),s=0;for(var l in i){var c=i[l],u=this._touches[l];u&&(a._add(c),o._add(c.sub(u)),s++,i[l]=c)}if(this._touches=i,!(sMath.abs(t.x)}var ii=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.reset=function(){t.prototype.reset.call(this),this._valid=void 0,delete this._firstMove,delete this._lastPoints},e.prototype._start=function(t){this._lastPoints=t,ni(t[0].sub(t[1]))&&(this._valid=!1)},e.prototype._move=function(t,e,r){var n=t[0].sub(this._lastPoints[0]),i=t[1].sub(this._lastPoints[1]);if(this._valid=this.gestureBeginsVertically(n,i,r.timeStamp),this._valid){this._lastPoints=t,this._active=!0;return{pitchDelta:-.5*((n.y+i.y)/2)}}},e.prototype.gestureBeginsVertically=function(t,e,r){if(void 0!==this._valid)return this._valid;var n=t.mag()>=2,i=e.mag()>=2;if(n||i){if(!n||!i)return void 0===this._firstMove&&(this._firstMove=r),r-this._firstMove<100&&void 0;var a=t.y>0==e.y>0;return ni(t)&&ni(e)&&a}},e}(Kn),ai={panStep:100,bearingStep:15,pitchStep:10},oi=function(){var t=ai;this._panStep=t.panStep,this._bearingStep=t.bearingStep,this._pitchStep=t.pitchStep};function si(t){return t*(2-t)}oi.prototype.reset=function(){this._active=!1},oi.prototype.keydown=function(t){var e=this;if(!(t.altKey||t.ctrlKey||t.metaKey)){var r=0,n=0,i=0,a=0,o=0;switch(t.keyCode){case 61:case 107:case 171:case 187:r=1;break;case 189:case 109:case 173:r=-1;break;case 37:t.shiftKey?n=-1:(t.preventDefault(),a=-1);break;case 39:t.shiftKey?n=1:(t.preventDefault(),a=1);break;case 38:t.shiftKey?i=1:(t.preventDefault(),o=-1);break;case 40:t.shiftKey?i=-1:(t.preventDefault(),o=1);break;default:return}return{cameraAnimation:function(s){var l=s.getZoom();s.easeTo({duration:300,easeId:\"keyboardHandler\",easing:si,zoom:r?Math.round(l)+r*(t.shiftKey?2:1):l,bearing:s.getBearing()+n*e._bearingStep,pitch:s.getPitch()+i*e._pitchStep,offset:[-a*e._panStep,-o*e._panStep],center:s.getCenter()},{originalEvent:t})}}}},oi.prototype.enable=function(){this._enabled=!0},oi.prototype.disable=function(){this._enabled=!1,this.reset()},oi.prototype.isEnabled=function(){return this._enabled},oi.prototype.isActive=function(){return this._active};var li=function(e,r){this._map=e,this._el=e.getCanvasContainer(),this._handler=r,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=1/450,t.bindAll([\"_onWheel\",\"_onTimeout\",\"_onScrollFrame\",\"_onScrollFinished\"],this)};li.prototype.setZoomRate=function(t){this._defaultZoomRate=t},li.prototype.setWheelZoomRate=function(t){this._wheelZoomRate=t},li.prototype.isEnabled=function(){return!!this._enabled},li.prototype.isActive=function(){return!!this._active||void 0!==this._finishTimeout},li.prototype.isZooming=function(){return!!this._zooming},li.prototype.enable=function(t){this.isEnabled()||(this._enabled=!0,this._aroundCenter=t&&\"center\"===t.around)},li.prototype.disable=function(){this.isEnabled()&&(this._enabled=!1)},li.prototype.wheel=function(e){if(this.isEnabled()){var r=e.deltaMode===t.window.WheelEvent.DOM_DELTA_LINE?40*e.deltaY:e.deltaY,n=t.browser.now(),i=n-(this._lastWheelEventTime||0);this._lastWheelEventTime=n,0!==r&&r%4.000244140625==0?this._type=\"wheel\":0!==r&&Math.abs(r)<4?this._type=\"trackpad\":i>400?(this._type=null,this._lastValue=r,this._timeout=setTimeout(this._onTimeout,40,e)):this._type||(this._type=Math.abs(i*r)<200?\"trackpad\":\"wheel\",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,r+=this._lastValue)),e.shiftKey&&r&&(r/=4),this._type&&(this._lastWheelEvent=e,this._delta-=r,this._active||this._start(e)),e.preventDefault()}},li.prototype._onTimeout=function(t){this._type=\"wheel\",this._delta-=this._lastValue,this._active||this._start(t)},li.prototype._start=function(e){if(this._delta){this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);var n=r.mousePos(this._el,e);this._around=t.LngLat.convert(this._aroundCenter?this._map.getCenter():this._map.unproject(n)),this._aroundPoint=this._map.transform.locationPoint(this._around),this._frameId||(this._frameId=!0,this._handler._triggerRenderFrame())}},li.prototype.renderFrame=function(){return this._onScrollFrame()},li.prototype._onScrollFrame=function(){var e=this;if(this._frameId&&(this._frameId=null,this.isActive())){var r=this._map.transform;if(0!==this._delta){var n=\"wheel\"===this._type&&Math.abs(this._delta)>4.000244140625?this._wheelZoomRate:this._defaultZoomRate,i=2/(1+Math.exp(-Math.abs(this._delta*n)));this._delta<0&&0!==i&&(i=1/i);var a=\"number\"==typeof this._targetZoom?r.zoomScale(this._targetZoom):r.scale;this._targetZoom=Math.min(r.maxZoom,Math.max(r.minZoom,r.scaleZoom(a*i))),\"wheel\"===this._type&&(this._startZoom=r.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0}var o,s=\"number\"==typeof this._targetZoom?this._targetZoom:r.zoom,l=this._startZoom,c=this._easing,u=!1;if(\"wheel\"===this._type&&l&&c){var f=Math.min((t.browser.now()-this._lastWheelEventTime)/200,1),h=c(f);o=t.number(l,s,h),f<1?this._frameId||(this._frameId=!0):u=!0}else o=s,u=!0;return this._active=!0,u&&(this._active=!1,this._finishTimeout=setTimeout((function(){e._zooming=!1,e._handler._triggerRenderFrame(),delete e._targetZoom,delete e._finishTimeout}),200)),{noInertia:!0,needsRenderFrame:!u,zoomDelta:o-r.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}},li.prototype._smoothOutEasing=function(e){var r=t.ease;if(this._prevEase){var n=this._prevEase,i=(t.browser.now()-n.start)/n.duration,a=n.easing(i+.01)-n.easing(i),o=.27/Math.sqrt(a*a+1e-4)*.01,s=Math.sqrt(.0729-o*o);r=t.bezier(o,s,.25,1)}return this._prevEase={start:t.browser.now(),duration:e,easing:r},r},li.prototype.reset=function(){this._active=!1};var ci=function(t,e){this._clickZoom=t,this._tapZoom=e};ci.prototype.enable=function(){this._clickZoom.enable(),this._tapZoom.enable()},ci.prototype.disable=function(){this._clickZoom.disable(),this._tapZoom.disable()},ci.prototype.isEnabled=function(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()},ci.prototype.isActive=function(){return this._clickZoom.isActive()||this._tapZoom.isActive()};var ui=function(){this.reset()};ui.prototype.reset=function(){this._active=!1},ui.prototype.dblclick=function(t,e){return t.preventDefault(),{cameraAnimation:function(r){r.easeTo({duration:300,zoom:r.getZoom()+(t.shiftKey?-1:1),around:r.unproject(e)},{originalEvent:t})}}},ui.prototype.enable=function(){this._enabled=!0},ui.prototype.disable=function(){this._enabled=!1,this.reset()},ui.prototype.isEnabled=function(){return this._enabled},ui.prototype.isActive=function(){return this._active};var fi=function(){this._tap=new qn({numTouches:1,numTaps:1}),this.reset()};fi.prototype.reset=function(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,this._tap.reset()},fi.prototype.touchstart=function(t,e,r){this._swipePoint||(this._tapTime&&t.timeStamp-this._tapTime>500&&this.reset(),this._tapTime?r.length>0&&(this._swipePoint=e[0],this._swipeTouch=r[0].identifier):this._tap.touchstart(t,e,r))},fi.prototype.touchmove=function(t,e,r){if(this._tapTime){if(this._swipePoint){if(r[0].identifier!==this._swipeTouch)return;var n=e[0],i=n.y-this._swipePoint.y;return this._swipePoint=n,t.preventDefault(),this._active=!0,{zoomDelta:i/128}}}else this._tap.touchmove(t,e,r)},fi.prototype.touchend=function(t,e,r){this._tapTime?this._swipePoint&&0===r.length&&this.reset():this._tap.touchend(t,e,r)&&(this._tapTime=t.timeStamp)},fi.prototype.touchcancel=function(){this.reset()},fi.prototype.enable=function(){this._enabled=!0},fi.prototype.disable=function(){this._enabled=!1,this.reset()},fi.prototype.isEnabled=function(){return this._enabled},fi.prototype.isActive=function(){return this._active};var hi=function(t,e,r){this._el=t,this._mousePan=e,this._touchPan=r};hi.prototype.enable=function(t){this._inertiaOptions=t||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add(\"mapboxgl-touch-drag-pan\")},hi.prototype.disable=function(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove(\"mapboxgl-touch-drag-pan\")},hi.prototype.isEnabled=function(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()},hi.prototype.isActive=function(){return this._mousePan.isActive()||this._touchPan.isActive()};var pi=function(t,e,r){this._pitchWithRotate=t.pitchWithRotate,this._mouseRotate=e,this._mousePitch=r};pi.prototype.enable=function(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable()},pi.prototype.disable=function(){this._mouseRotate.disable(),this._mousePitch.disable()},pi.prototype.isEnabled=function(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())},pi.prototype.isActive=function(){return this._mouseRotate.isActive()||this._mousePitch.isActive()};var di=function(t,e,r,n){this._el=t,this._touchZoom=e,this._touchRotate=r,this._tapDragZoom=n,this._rotationDisabled=!1,this._enabled=!0};di.prototype.enable=function(t){this._touchZoom.enable(t),this._rotationDisabled||this._touchRotate.enable(t),this._tapDragZoom.enable(),this._el.classList.add(\"mapboxgl-touch-zoom-rotate\")},di.prototype.disable=function(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove(\"mapboxgl-touch-zoom-rotate\")},di.prototype.isEnabled=function(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()},di.prototype.isActive=function(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()},di.prototype.disableRotation=function(){this._rotationDisabled=!0,this._touchRotate.disable()},di.prototype.enableRotation=function(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable()};var gi=function(t){return t.zoom||t.drag||t.pitch||t.rotate},mi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(t.Event);function vi(t){return t.panDelta&&t.panDelta.mag()||t.zoomDelta||t.bearingDelta||t.pitchDelta}var yi=function(e,n){this._map=e,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new On(e),this._bearingSnap=n.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(n),t.bindAll([\"handleEvent\",\"handleWindowEvent\"],this);var i=this._el;this._listeners=[[i,\"touchstart\",{passive:!1}],[i,\"touchmove\",{passive:!1}],[i,\"touchend\",void 0],[i,\"touchcancel\",void 0],[i,\"mousedown\",void 0],[i,\"mousemove\",void 0],[i,\"mouseup\",void 0],[t.window.document,\"mousemove\",{capture:!0}],[t.window.document,\"mouseup\",void 0],[i,\"mouseover\",void 0],[i,\"mouseout\",void 0],[i,\"dblclick\",void 0],[i,\"click\",void 0],[i,\"keydown\",{capture:!1}],[i,\"keyup\",void 0],[i,\"wheel\",{passive:!1}],[i,\"contextmenu\",void 0],[t.window,\"blur\",void 0]];for(var a=0,o=this._listeners;aa?Math.min(2,_):Math.max(.5,_),w=Math.pow(m,1-e),T=i.unproject(x.add(b.mult(e*w)).mult(g));i.setLocationAtPoint(i.renderWorldCopies?T.wrap():T,d)}n._fireMoveEvents(r)}),(function(t){n._afterEase(r,t)}),e),this},r.prototype._prepareEase=function(e,r,n){void 0===n&&(n={}),this._moving=!0,r||n.moving||this.fire(new t.Event(\"movestart\",e)),this._zooming&&!n.zooming&&this.fire(new t.Event(\"zoomstart\",e)),this._rotating&&!n.rotating&&this.fire(new t.Event(\"rotatestart\",e)),this._pitching&&!n.pitching&&this.fire(new t.Event(\"pitchstart\",e))},r.prototype._fireMoveEvents=function(e){this.fire(new t.Event(\"move\",e)),this._zooming&&this.fire(new t.Event(\"zoom\",e)),this._rotating&&this.fire(new t.Event(\"rotate\",e)),this._pitching&&this.fire(new t.Event(\"pitch\",e))},r.prototype._afterEase=function(e,r){if(!this._easeId||!r||this._easeId!==r){delete this._easeId;var n=this._zooming,i=this._rotating,a=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,n&&this.fire(new t.Event(\"zoomend\",e)),i&&this.fire(new t.Event(\"rotateend\",e)),a&&this.fire(new t.Event(\"pitchend\",e)),this.fire(new t.Event(\"moveend\",e))}},r.prototype.flyTo=function(e,r){var n=this;if(!e.essential&&t.browser.prefersReducedMotion){var i=t.pick(e,[\"center\",\"zoom\",\"bearing\",\"pitch\",\"around\"]);return this.jumpTo(i,r)}this.stop(),e=t.extend({offset:[0,0],speed:1.2,curve:1.42,easing:t.ease},e);var a=this.transform,o=this.getZoom(),s=this.getBearing(),l=this.getPitch(),c=this.getPadding(),u=\"zoom\"in e?t.clamp(+e.zoom,a.minZoom,a.maxZoom):o,f=\"bearing\"in e?this._normalizeBearing(e.bearing,s):s,h=\"pitch\"in e?+e.pitch:l,p=\"padding\"in e?e.padding:a.padding,d=a.zoomScale(u-o),g=t.Point.convert(e.offset),m=a.centerPoint.add(g),v=a.pointLocation(m),y=t.LngLat.convert(e.center||v);this._normalizeCenter(y);var x=a.project(v),b=a.project(y).sub(x),_=e.curve,w=Math.max(a.width,a.height),T=w/d,k=b.mag();if(\"minZoom\"in e){var A=t.clamp(Math.min(e.minZoom,o,u),a.minZoom,a.maxZoom),M=w/a.zoomScale(A-o);_=Math.sqrt(M/k*2)}var S=_*_;function E(t){var e=(T*T-w*w+(t?-1:1)*S*S*k*k)/(2*(t?T:w)*S*k);return Math.log(Math.sqrt(e*e+1)-e)}function L(t){return(Math.exp(t)-Math.exp(-t))/2}function C(t){return(Math.exp(t)+Math.exp(-t))/2}var P=E(0),I=function(t){return C(P)/C(P+_*t)},O=function(t){return w*((C(P)*(L(e=P+_*t)/C(e))-L(P))/S)/k;var e},z=(E(1)-P)/_;if(Math.abs(k)<1e-6||!isFinite(z)){if(Math.abs(w-T)<1e-6)return this.easeTo(e,r);var D=Te.maxDuration&&(e.duration=0),this._zooming=!0,this._rotating=s!==f,this._pitching=h!==l,this._padding=!a.isPaddingEqual(p),this._prepareEase(r,!1),this._ease((function(e){var i=e*z,d=1/I(i);a.zoom=1===e?u:o+a.scaleZoom(d),n._rotating&&(a.bearing=t.number(s,f,e)),n._pitching&&(a.pitch=t.number(l,h,e)),n._padding&&(a.interpolatePadding(c,p,e),m=a.centerPoint.add(g));var v=1===e?y:a.unproject(x.add(b.mult(O(i))).mult(d));a.setLocationAtPoint(a.renderWorldCopies?v.wrap():v,m),n._fireMoveEvents(r)}),(function(){return n._afterEase(r)}),e),this},r.prototype.isEasing=function(){return!!this._easeFrameId},r.prototype.stop=function(){return this._stop()},r.prototype._stop=function(t,e){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){var r=this._onEaseEnd;delete this._onEaseEnd,r.call(this,e)}if(!t){var n=this.handlers;n&&n.stop()}return this},r.prototype._ease=function(e,r,n){!1===n.animate||0===n.duration?(e(1),r()):(this._easeStart=t.browser.now(),this._easeOptions=n,this._onEaseFrame=e,this._onEaseEnd=r,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))},r.prototype._renderFrameCallback=function(){var e=Math.min((t.browser.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(e)),e<1?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()},r.prototype._normalizeBearing=function(e,r){e=t.wrap(e,-180,180);var n=Math.abs(e-r);return Math.abs(e-360-r)180?-360:r<-180?360:0}},r}(t.Evented),bi=function(e){void 0===e&&(e={}),this.options=e,t.bindAll([\"_updateEditLink\",\"_updateData\",\"_updateCompact\"],this)};bi.prototype.getDefaultPosition=function(){return\"bottom-right\"},bi.prototype.onAdd=function(t){var e=this.options&&this.options.compact;return this._map=t,this._container=r.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-attrib\"),this._innerContainer=r.create(\"div\",\"mapboxgl-ctrl-attrib-inner\",this._container),e&&this._container.classList.add(\"mapboxgl-compact\"),this._updateAttributions(),this._updateEditLink(),this._map.on(\"styledata\",this._updateData),this._map.on(\"sourcedata\",this._updateData),this._map.on(\"moveend\",this._updateEditLink),void 0===e&&(this._map.on(\"resize\",this._updateCompact),this._updateCompact()),this._container},bi.prototype.onRemove=function(){r.remove(this._container),this._map.off(\"styledata\",this._updateData),this._map.off(\"sourcedata\",this._updateData),this._map.off(\"moveend\",this._updateEditLink),this._map.off(\"resize\",this._updateCompact),this._map=void 0,this._attribHTML=void 0},bi.prototype._updateEditLink=function(){var e=this._editLink;e||(e=this._editLink=this._container.querySelector(\".mapbox-improve-map\"));var r=[{key:\"owner\",value:this.styleOwner},{key:\"id\",value:this.styleId},{key:\"access_token\",value:this._map._requestManager._customAccessToken||t.config.ACCESS_TOKEN}];if(e){var n=r.reduce((function(t,e,n){return e.value&&(t+=e.key+\"=\"+e.value+(n=0)return!1;return!0}))).join(\" | \");o!==this._attribHTML&&(this._attribHTML=o,t.length?(this._innerContainer.innerHTML=o,this._container.classList.remove(\"mapboxgl-attrib-empty\")):this._container.classList.add(\"mapboxgl-attrib-empty\"),this._editLink=null)}},bi.prototype._updateCompact=function(){this._map.getCanvasContainer().offsetWidth<=640?this._container.classList.add(\"mapboxgl-compact\"):this._container.classList.remove(\"mapboxgl-compact\")};var _i=function(){t.bindAll([\"_updateLogo\"],this),t.bindAll([\"_updateCompact\"],this)};_i.prototype.onAdd=function(t){this._map=t,this._container=r.create(\"div\",\"mapboxgl-ctrl\");var e=r.create(\"a\",\"mapboxgl-ctrl-logo\");return e.target=\"_blank\",e.rel=\"noopener nofollow\",e.href=\"https://www.mapbox.com/\",e.setAttribute(\"aria-label\",this._map._getUIString(\"LogoControl.Title\")),e.setAttribute(\"rel\",\"noopener nofollow\"),this._container.appendChild(e),this._container.style.display=\"none\",this._map.on(\"sourcedata\",this._updateLogo),this._updateLogo(),this._map.on(\"resize\",this._updateCompact),this._updateCompact(),this._container},_i.prototype.onRemove=function(){r.remove(this._container),this._map.off(\"sourcedata\",this._updateLogo),this._map.off(\"resize\",this._updateCompact)},_i.prototype.getDefaultPosition=function(){return\"bottom-left\"},_i.prototype._updateLogo=function(t){t&&\"metadata\"!==t.sourceDataType||(this._container.style.display=this._logoRequired()?\"block\":\"none\")},_i.prototype._logoRequired=function(){if(this._map.style){var t=this._map.style.sourceCaches;for(var e in t){if(t[e].getSource().mapbox_logo)return!0}return!1}},_i.prototype._updateCompact=function(){var t=this._container.children;if(t.length){var e=t[0];this._map.getCanvasContainer().offsetWidth<250?e.classList.add(\"mapboxgl-compact\"):e.classList.remove(\"mapboxgl-compact\")}};var wi=function(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1};wi.prototype.add=function(t){var e=++this._id;return this._queue.push({callback:t,id:e,cancelled:!1}),e},wi.prototype.remove=function(t){for(var e=this._currentlyRunning,r=0,n=e?this._queue.concat(e):this._queue;re.maxZoom)throw new Error(\"maxZoom must be greater than or equal to minZoom\");if(null!=e.minPitch&&null!=e.maxPitch&&e.minPitch>e.maxPitch)throw new Error(\"maxPitch must be greater than or equal to minPitch\");if(null!=e.minPitch&&e.minPitch<0)throw new Error(\"minPitch must be greater than or equal to 0\");if(null!=e.maxPitch&&e.maxPitch>60)throw new Error(\"maxPitch must be less than or equal to 60\");var i=new An(e.minZoom,e.maxZoom,e.minPitch,e.maxPitch,e.renderWorldCopies);if(n.call(this,i,e),this._interactive=e.interactive,this._maxTileCacheSize=e.maxTileCacheSize,this._failIfMajorPerformanceCaveat=e.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=e.preserveDrawingBuffer,this._antialias=e.antialias,this._trackResize=e.trackResize,this._bearingSnap=e.bearingSnap,this._refreshExpiredTiles=e.refreshExpiredTiles,this._fadeDuration=e.fadeDuration,this._crossSourceCollisions=e.crossSourceCollisions,this._crossFadingFactor=1,this._collectResourceTiming=e.collectResourceTiming,this._renderTaskQueue=new wi,this._controls=[],this._mapId=t.uniqueId(),this._locale=t.extend({},Ti,e.locale),this._requestManager=new t.RequestManager(e.transformRequest,e.accessToken),\"string\"==typeof e.container){if(this._container=t.window.document.getElementById(e.container),!this._container)throw new Error(\"Container '\"+e.container+\"' not found.\")}else{if(!(e.container instanceof Ai))throw new Error(\"Invalid type: 'container' must be a String or HTMLElement.\");this._container=e.container}if(e.maxBounds&&this.setMaxBounds(e.maxBounds),t.bindAll([\"_onWindowOnline\",\"_onWindowResize\",\"_contextLost\",\"_contextRestored\"],this),this._setupContainer(),this._setupPainter(),void 0===this.painter)throw new Error(\"Failed to initialize WebGL.\");this.on(\"move\",(function(){return r._update(!1)})),this.on(\"moveend\",(function(){return r._update(!1)})),this.on(\"zoom\",(function(){return r._update(!0)})),void 0!==t.window&&(t.window.addEventListener(\"online\",this._onWindowOnline,!1),t.window.addEventListener(\"resize\",this._onWindowResize,!1)),this.handlers=new yi(this,e);var a=\"string\"==typeof e.hash&&e.hash||void 0;this._hash=e.hash&&new Sn(a).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:e.center,zoom:e.zoom,bearing:e.bearing,pitch:e.pitch}),e.bounds&&(this.resize(),this.fitBounds(e.bounds,t.extend({},e.fitBoundsOptions,{duration:0})))),this.resize(),this._localIdeographFontFamily=e.localIdeographFontFamily,e.style&&this.setStyle(e.style,{localIdeographFontFamily:e.localIdeographFontFamily}),e.attributionControl&&this.addControl(new bi({customAttribution:e.customAttribution})),this.addControl(new _i,e.logoPosition),this.on(\"style.load\",(function(){r.transform.unmodified&&r.jumpTo(r.style.stylesheet)})),this.on(\"data\",(function(e){r._update(\"style\"===e.dataType),r.fire(new t.Event(e.dataType+\"data\",e))})),this.on(\"dataloading\",(function(e){r.fire(new t.Event(e.dataType+\"dataloading\",e))}))}n&&(i.__proto__=n),i.prototype=Object.create(n&&n.prototype),i.prototype.constructor=i;var a={showTileBoundaries:{configurable:!0},showPadding:{configurable:!0},showCollisionBoxes:{configurable:!0},showOverdrawInspector:{configurable:!0},repaint:{configurable:!0},vertices:{configurable:!0},version:{configurable:!0}};return i.prototype._getMapId=function(){return this._mapId},i.prototype.addControl=function(e,r){if(void 0===r&&e.getDefaultPosition&&(r=e.getDefaultPosition()),void 0===r&&(r=\"top-right\"),!e||!e.onAdd)return this.fire(new t.ErrorEvent(new Error(\"Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.\")));var n=e.onAdd(this);this._controls.push(e);var i=this._controlPositions[r];return-1!==r.indexOf(\"bottom\")?i.insertBefore(n,i.firstChild):i.appendChild(n),this},i.prototype.removeControl=function(e){if(!e||!e.onRemove)return this.fire(new t.ErrorEvent(new Error(\"Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.\")));var r=this._controls.indexOf(e);return r>-1&&this._controls.splice(r,1),e.onRemove(this),this},i.prototype.resize=function(e){var r=this._containerDimensions(),n=r[0],i=r[1];this._resizeCanvas(n,i),this.transform.resize(n,i),this.painter.resize(n,i);var a=!this._moving;return a&&(this.stop(),this.fire(new t.Event(\"movestart\",e)).fire(new t.Event(\"move\",e))),this.fire(new t.Event(\"resize\",e)),a&&this.fire(new t.Event(\"moveend\",e)),this},i.prototype.getBounds=function(){return this.transform.getBounds()},i.prototype.getMaxBounds=function(){return this.transform.getMaxBounds()},i.prototype.setMaxBounds=function(e){return this.transform.setMaxBounds(t.LngLatBounds.convert(e)),this._update()},i.prototype.setMinZoom=function(t){if((t=null==t?-2:t)>=-2&&t<=this.transform.maxZoom)return this.transform.minZoom=t,this._update(),this.getZoom()=this.transform.minZoom)return this.transform.maxZoom=t,this._update(),this.getZoom()>t&&this.setZoom(t),this;throw new Error(\"maxZoom must be greater than the current minZoom\")},i.prototype.getMaxZoom=function(){return this.transform.maxZoom},i.prototype.setMinPitch=function(t){if((t=null==t?0:t)<0)throw new Error(\"minPitch must be greater than or equal to 0\");if(t>=0&&t<=this.transform.maxPitch)return this.transform.minPitch=t,this._update(),this.getPitch()60)throw new Error(\"maxPitch must be less than or equal to 60\");if(t>=this.transform.minPitch)return this.transform.maxPitch=t,this._update(),this.getPitch()>t&&this.setPitch(t),this;throw new Error(\"maxPitch must be greater than the current minPitch\")},i.prototype.getMaxPitch=function(){return this.transform.maxPitch},i.prototype.getRenderWorldCopies=function(){return this.transform.renderWorldCopies},i.prototype.setRenderWorldCopies=function(t){return this.transform.renderWorldCopies=t,this._update()},i.prototype.project=function(e){return this.transform.locationPoint(t.LngLat.convert(e))},i.prototype.unproject=function(e){return this.transform.pointLocation(t.Point.convert(e))},i.prototype.isMoving=function(){return this._moving||this.handlers.isMoving()},i.prototype.isZooming=function(){return this._zooming||this.handlers.isZooming()},i.prototype.isRotating=function(){return this._rotating||this.handlers.isRotating()},i.prototype._createDelegatedListener=function(t,e,r){var n,i=this;if(\"mouseenter\"===t||\"mouseover\"===t){var a=!1;return{layer:e,listener:r,delegates:{mousemove:function(n){var o=i.getLayer(e)?i.queryRenderedFeatures(n.point,{layers:[e]}):[];o.length?a||(a=!0,r.call(i,new Rn(t,i,n.originalEvent,{features:o}))):a=!1},mouseout:function(){a=!1}}}}if(\"mouseleave\"===t||\"mouseout\"===t){var o=!1;return{layer:e,listener:r,delegates:{mousemove:function(n){(i.getLayer(e)?i.queryRenderedFeatures(n.point,{layers:[e]}):[]).length?o=!0:o&&(o=!1,r.call(i,new Rn(t,i,n.originalEvent)))},mouseout:function(e){o&&(o=!1,r.call(i,new Rn(t,i,e.originalEvent)))}}}}return{layer:e,listener:r,delegates:(n={},n[t]=function(t){var n=i.getLayer(e)?i.queryRenderedFeatures(t.point,{layers:[e]}):[];n.length&&(t.features=n,r.call(i,t),delete t.features)},n)}},i.prototype.on=function(t,e,r){if(void 0===r)return n.prototype.on.call(this,t,e);var i=this._createDelegatedListener(t,e,r);for(var a in this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[t]=this._delegatedListeners[t]||[],this._delegatedListeners[t].push(i),i.delegates)this.on(a,i.delegates[a]);return this},i.prototype.once=function(t,e,r){if(void 0===r)return n.prototype.once.call(this,t,e);var i=this._createDelegatedListener(t,e,r);for(var a in i.delegates)this.once(a,i.delegates[a]);return this},i.prototype.off=function(t,e,r){var i=this;if(void 0===r)return n.prototype.off.call(this,t,e);return this._delegatedListeners&&this._delegatedListeners[t]&&function(n){for(var a=n[t],o=0;o180;){var s=n.locationPoint(e);if(s.x>=0&&s.y>=0&&s.x<=n.width&&s.y<=n.height)break;e.lng>n.center.lng?e.lng-=360:e.lng+=360}return e}Ii.prototype.down=function(t,e){this.mouseRotate.mousedown(t,e),this.mousePitch&&this.mousePitch.mousedown(t,e),r.disableDrag()},Ii.prototype.move=function(t,e){var r=this.map,n=this.mouseRotate.mousemoveWindow(t,e);if(n&&n.bearingDelta&&r.setBearing(r.getBearing()+n.bearingDelta),this.mousePitch){var i=this.mousePitch.mousemoveWindow(t,e);i&&i.pitchDelta&&r.setPitch(r.getPitch()+i.pitchDelta)}},Ii.prototype.off=function(){var t=this.element;r.removeEventListener(t,\"mousedown\",this.mousedown),r.removeEventListener(t,\"touchstart\",this.touchstart,{passive:!1}),r.removeEventListener(t,\"touchmove\",this.touchmove),r.removeEventListener(t,\"touchend\",this.touchend),r.removeEventListener(t,\"touchcancel\",this.reset),this.offTemp()},Ii.prototype.offTemp=function(){r.enableDrag(),r.removeEventListener(t.window,\"mousemove\",this.mousemove),r.removeEventListener(t.window,\"mouseup\",this.mouseup)},Ii.prototype.mousedown=function(e){this.down(t.extend({},e,{ctrlKey:!0,preventDefault:function(){return e.preventDefault()}}),r.mousePos(this.element,e)),r.addEventListener(t.window,\"mousemove\",this.mousemove),r.addEventListener(t.window,\"mouseup\",this.mouseup)},Ii.prototype.mousemove=function(t){this.move(t,r.mousePos(this.element,t))},Ii.prototype.mouseup=function(t){this.mouseRotate.mouseupWindow(t),this.mousePitch&&this.mousePitch.mouseupWindow(t),this.offTemp()},Ii.prototype.touchstart=function(t){1!==t.targetTouches.length?this.reset():(this._startPos=this._lastPos=r.touchPos(this.element,t.targetTouches)[0],this.down({type:\"mousedown\",button:0,ctrlKey:!0,preventDefault:function(){return t.preventDefault()}},this._startPos))},Ii.prototype.touchmove=function(t){1!==t.targetTouches.length?this.reset():(this._lastPos=r.touchPos(this.element,t.targetTouches)[0],this.move({preventDefault:function(){return t.preventDefault()}},this._lastPos))},Ii.prototype.touchend=function(t){0===t.targetTouches.length&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos)e.getEast()||r.latitudee.getNorth())},n.prototype._setErrorState=function(){switch(this._watchState){case\"WAITING_ACTIVE\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\");break;case\"ACTIVE_LOCK\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\");break;case\"BACKGROUND\":this._watchState=\"BACKGROUND_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\")}},n.prototype._onSuccess=function(e){if(this._map){if(this._isOutOfMapMaxBounds(e))return this._setErrorState(),this.fire(new t.Event(\"outofmaxbounds\",e)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=e,this._watchState){case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"BACKGROUND\":case\"BACKGROUND_ERROR\":this._watchState=\"BACKGROUND\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\")}this.options.showUserLocation&&\"OFF\"!==this._watchState&&this._updateMarker(e),this.options.trackUserLocation&&\"ACTIVE_LOCK\"!==this._watchState||this._updateCamera(e),this.options.showUserLocation&&this._dotElement.classList.remove(\"mapboxgl-user-location-dot-stale\"),this.fire(new t.Event(\"geolocate\",e)),this._finish()}},n.prototype._updateCamera=function(e){var r=new t.LngLat(e.coords.longitude,e.coords.latitude),n=e.coords.accuracy,i=this._map.getBearing(),a=t.extend({bearing:i},this.options.fitBoundsOptions);this._map.fitBounds(r.toBounds(n),a,{geolocateSource:!0})},n.prototype._updateMarker=function(e){if(e){var r=new t.LngLat(e.coords.longitude,e.coords.latitude);this._accuracyCircleMarker.setLngLat(r).addTo(this._map),this._userLocationDotMarker.setLngLat(r).addTo(this._map),this._accuracy=e.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()},n.prototype._updateCircleRadius=function(){var t=this._map._container.clientHeight/2,e=this._map.unproject([0,t]),r=this._map.unproject([1,t]),n=e.distanceTo(r),i=Math.ceil(2*this._accuracy/n);this._circleElement.style.width=i+\"px\",this._circleElement.style.height=i+\"px\"},n.prototype._onZoom=function(){this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()},n.prototype._onError=function(e){if(this._map){if(this.options.trackUserLocation)if(1===e.code){this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.disabled=!0;var r=this._map._getUIString(\"GeolocateControl.LocationNotAvailable\");this._geolocateButton.title=r,this._geolocateButton.setAttribute(\"aria-label\",r),void 0!==this._geolocationWatchID&&this._clearWatch()}else{if(3===e.code&&ji)return;this._setErrorState()}\"OFF\"!==this._watchState&&this.options.showUserLocation&&this._dotElement.classList.add(\"mapboxgl-user-location-dot-stale\"),this.fire(new t.Event(\"error\",e)),this._finish()}},n.prototype._finish=function(){this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},n.prototype._setupUI=function(e){var n=this;if(this._container.addEventListener(\"contextmenu\",(function(t){return t.preventDefault()})),this._geolocateButton=r.create(\"button\",\"mapboxgl-ctrl-geolocate\",this._container),r.create(\"span\",\"mapboxgl-ctrl-icon\",this._geolocateButton).setAttribute(\"aria-hidden\",!0),this._geolocateButton.type=\"button\",!1===e){t.warnOnce(\"Geolocation support is not available so the GeolocateControl will be disabled.\");var i=this._map._getUIString(\"GeolocateControl.LocationNotAvailable\");this._geolocateButton.disabled=!0,this._geolocateButton.title=i,this._geolocateButton.setAttribute(\"aria-label\",i)}else{var a=this._map._getUIString(\"GeolocateControl.FindMyLocation\");this._geolocateButton.title=a,this._geolocateButton.setAttribute(\"aria-label\",a)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this._watchState=\"OFF\"),this.options.showUserLocation&&(this._dotElement=r.create(\"div\",\"mapboxgl-user-location-dot\"),this._userLocationDotMarker=new Fi(this._dotElement),this._circleElement=r.create(\"div\",\"mapboxgl-user-location-accuracy-circle\"),this._accuracyCircleMarker=new Fi({element:this._circleElement,pitchAlignment:\"map\"}),this.options.trackUserLocation&&(this._watchState=\"OFF\"),this._map.on(\"zoom\",this._onZoom)),this._geolocateButton.addEventListener(\"click\",this.trigger.bind(this)),this._setup=!0,this.options.trackUserLocation&&this._map.on(\"movestart\",(function(e){var r=e.originalEvent&&\"resize\"===e.originalEvent.type;e.geolocateSource||\"ACTIVE_LOCK\"!==n._watchState||r||(n._watchState=\"BACKGROUND\",n._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\"),n._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),n.fire(new t.Event(\"trackuserlocationend\")))}))},n.prototype.trigger=function(){if(!this._setup)return t.warnOnce(\"Geolocate control triggered before added to a map\"),!1;if(this.options.trackUserLocation){switch(this._watchState){case\"OFF\":this._watchState=\"WAITING_ACTIVE\",this.fire(new t.Event(\"trackuserlocationstart\"));break;case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":case\"BACKGROUND_ERROR\":Ni--,ji=!1,this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this.fire(new t.Event(\"trackuserlocationend\"));break;case\"BACKGROUND\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new t.Event(\"trackuserlocationstart\"))}switch(this._watchState){case\"WAITING_ACTIVE\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"ACTIVE_LOCK\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"ACTIVE_ERROR\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\");break;case\"BACKGROUND\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\");break;case\"BACKGROUND_ERROR\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background-error\")}if(\"OFF\"===this._watchState&&void 0!==this._geolocationWatchID)this._clearWatch();else if(void 0===this._geolocationWatchID){var e;this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"true\"),++Ni>1?(e={maximumAge:6e5,timeout:0},ji=!0):(e=this.options.positionOptions,ji=!1),this._geolocationWatchID=t.window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,e)}}else t.window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return!0},n.prototype._clearWatch=function(){t.window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this.options.showUserLocation&&this._updateMarker(null)},n}(t.Evented),Vi={maxWidth:100,unit:\"metric\"},Hi=function(e){this.options=t.extend({},Vi,e),t.bindAll([\"_onMove\",\"setUnit\"],this)};function qi(t,e,r){var n=r&&r.maxWidth||100,i=t._container.clientHeight/2,a=t.unproject([0,i]),o=t.unproject([n,i]),s=a.distanceTo(o);if(r&&\"imperial\"===r.unit){var l=3.2808*s;if(l>5280)Gi(e,n,l/5280,t._getUIString(\"ScaleControl.Miles\"));else Gi(e,n,l,t._getUIString(\"ScaleControl.Feet\"))}else if(r&&\"nautical\"===r.unit){Gi(e,n,s/1852,t._getUIString(\"ScaleControl.NauticalMiles\"))}else s>=1e3?Gi(e,n,s/1e3,t._getUIString(\"ScaleControl.Kilometers\")):Gi(e,n,s,t._getUIString(\"ScaleControl.Meters\"))}function Gi(t,e,r,n){var i,a,o,s=(i=r,a=Math.pow(10,(\"\"+Math.floor(i)).length-1),o=(o=i/a)>=10?10:o>=5?5:o>=3?3:o>=2?2:o>=1?1:function(t){var e=Math.pow(10,Math.ceil(-Math.log(t)/Math.LN10));return Math.round(t*e)/e}(o),a*o),l=s/r;t.style.width=e*l+\"px\",t.innerHTML=s+\" \"+n}Hi.prototype.getDefaultPosition=function(){return\"bottom-left\"},Hi.prototype._onMove=function(){qi(this._map,this._container,this.options)},Hi.prototype.onAdd=function(t){return this._map=t,this._container=r.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-scale\",t.getContainer()),this._map.on(\"move\",this._onMove),this._onMove(),this._container},Hi.prototype.onRemove=function(){r.remove(this._container),this._map.off(\"move\",this._onMove),this._map=void 0},Hi.prototype.setUnit=function(t){this.options.unit=t,qi(this._map,this._container,this.options)};var Yi=function(e){this._fullscreen=!1,e&&e.container&&(e.container instanceof t.window.HTMLElement?this._container=e.container:t.warnOnce(\"Full screen control 'container' must be a DOM element.\")),t.bindAll([\"_onClickFullscreen\",\"_changeIcon\"],this),\"onfullscreenchange\"in t.window.document?this._fullscreenchange=\"fullscreenchange\":\"onmozfullscreenchange\"in t.window.document?this._fullscreenchange=\"mozfullscreenchange\":\"onwebkitfullscreenchange\"in t.window.document?this._fullscreenchange=\"webkitfullscreenchange\":\"onmsfullscreenchange\"in t.window.document&&(this._fullscreenchange=\"MSFullscreenChange\")};Yi.prototype.onAdd=function(e){return this._map=e,this._container||(this._container=this._map.getContainer()),this._controlContainer=r.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-group\"),this._checkFullscreenSupport()?this._setupUI():(this._controlContainer.style.display=\"none\",t.warnOnce(\"This device does not support fullscreen mode.\")),this._controlContainer},Yi.prototype.onRemove=function(){r.remove(this._controlContainer),this._map=null,t.window.document.removeEventListener(this._fullscreenchange,this._changeIcon)},Yi.prototype._checkFullscreenSupport=function(){return!!(t.window.document.fullscreenEnabled||t.window.document.mozFullScreenEnabled||t.window.document.msFullscreenEnabled||t.window.document.webkitFullscreenEnabled)},Yi.prototype._setupUI=function(){var e=this._fullscreenButton=r.create(\"button\",\"mapboxgl-ctrl-fullscreen\",this._controlContainer);r.create(\"span\",\"mapboxgl-ctrl-icon\",e).setAttribute(\"aria-hidden\",!0),e.type=\"button\",this._updateTitle(),this._fullscreenButton.addEventListener(\"click\",this._onClickFullscreen),t.window.document.addEventListener(this._fullscreenchange,this._changeIcon)},Yi.prototype._updateTitle=function(){var t=this._getTitle();this._fullscreenButton.setAttribute(\"aria-label\",t),this._fullscreenButton.title=t},Yi.prototype._getTitle=function(){return this._map._getUIString(this._isFullscreen()?\"FullscreenControl.Exit\":\"FullscreenControl.Enter\")},Yi.prototype._isFullscreen=function(){return this._fullscreen},Yi.prototype._changeIcon=function(){(t.window.document.fullscreenElement||t.window.document.mozFullScreenElement||t.window.document.webkitFullscreenElement||t.window.document.msFullscreenElement)===this._container!==this._fullscreen&&(this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle(\"mapboxgl-ctrl-shrink\"),this._fullscreenButton.classList.toggle(\"mapboxgl-ctrl-fullscreen\"),this._updateTitle())},Yi.prototype._onClickFullscreen=function(){this._isFullscreen()?t.window.document.exitFullscreen?t.window.document.exitFullscreen():t.window.document.mozCancelFullScreen?t.window.document.mozCancelFullScreen():t.window.document.msExitFullscreen?t.window.document.msExitFullscreen():t.window.document.webkitCancelFullScreen&&t.window.document.webkitCancelFullScreen():this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen&&this._container.webkitRequestFullscreen()};var Wi={closeButton:!0,closeOnClick:!0,className:\"\",maxWidth:\"240px\"},Xi=function(e){function n(r){e.call(this),this.options=t.extend(Object.create(Wi),r),t.bindAll([\"_update\",\"_onClose\",\"remove\",\"_onMouseMove\",\"_onMouseUp\",\"_onDrag\"],this)}return e&&(n.__proto__=e),n.prototype=Object.create(e&&e.prototype),n.prototype.constructor=n,n.prototype.addTo=function(e){return this._map&&this.remove(),this._map=e,this.options.closeOnClick&&this._map.on(\"click\",this._onClose),this.options.closeOnMove&&this._map.on(\"move\",this._onClose),this._map.on(\"remove\",this.remove),this._update(),this._trackPointer?(this._map.on(\"mousemove\",this._onMouseMove),this._map.on(\"mouseup\",this._onMouseUp),this._container&&this._container.classList.add(\"mapboxgl-popup-track-pointer\"),this._map._canvasContainer.classList.add(\"mapboxgl-track-pointer\")):this._map.on(\"move\",this._update),this.fire(new t.Event(\"open\")),this},n.prototype.isOpen=function(){return!!this._map},n.prototype.remove=function(){return this._content&&r.remove(this._content),this._container&&(r.remove(this._container),delete this._container),this._map&&(this._map.off(\"move\",this._update),this._map.off(\"move\",this._onClose),this._map.off(\"click\",this._onClose),this._map.off(\"remove\",this.remove),this._map.off(\"mousemove\",this._onMouseMove),this._map.off(\"mouseup\",this._onMouseUp),this._map.off(\"drag\",this._onDrag),delete this._map),this.fire(new t.Event(\"close\")),this},n.prototype.getLngLat=function(){return this._lngLat},n.prototype.setLngLat=function(e){return this._lngLat=t.LngLat.convert(e),this._pos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on(\"move\",this._update),this._map.off(\"mousemove\",this._onMouseMove),this._container&&this._container.classList.remove(\"mapboxgl-popup-track-pointer\"),this._map._canvasContainer.classList.remove(\"mapboxgl-track-pointer\")),this},n.prototype.trackPointer=function(){return this._trackPointer=!0,this._pos=null,this._update(),this._map&&(this._map.off(\"move\",this._update),this._map.on(\"mousemove\",this._onMouseMove),this._map.on(\"drag\",this._onDrag),this._container&&this._container.classList.add(\"mapboxgl-popup-track-pointer\"),this._map._canvasContainer.classList.add(\"mapboxgl-track-pointer\")),this},n.prototype.getElement=function(){return this._container},n.prototype.setText=function(e){return this.setDOMContent(t.window.document.createTextNode(e))},n.prototype.setHTML=function(e){var r,n=t.window.document.createDocumentFragment(),i=t.window.document.createElement(\"body\");for(i.innerHTML=e;r=i.firstChild;)n.appendChild(r);return this.setDOMContent(n)},n.prototype.getMaxWidth=function(){return this._container&&this._container.style.maxWidth},n.prototype.setMaxWidth=function(t){return this.options.maxWidth=t,this._update(),this},n.prototype.setDOMContent=function(t){return this._createContent(),this._content.appendChild(t),this._update(),this},n.prototype.addClassName=function(t){this._container&&this._container.classList.add(t)},n.prototype.removeClassName=function(t){this._container&&this._container.classList.remove(t)},n.prototype.toggleClassName=function(t){if(this._container)return this._container.classList.toggle(t)},n.prototype._createContent=function(){this._content&&r.remove(this._content),this._content=r.create(\"div\",\"mapboxgl-popup-content\",this._container),this.options.closeButton&&(this._closeButton=r.create(\"button\",\"mapboxgl-popup-close-button\",this._content),this._closeButton.type=\"button\",this._closeButton.setAttribute(\"aria-label\",\"Close popup\"),this._closeButton.innerHTML=\"×\",this._closeButton.addEventListener(\"click\",this._onClose))},n.prototype._onMouseUp=function(t){this._update(t.point)},n.prototype._onMouseMove=function(t){this._update(t.point)},n.prototype._onDrag=function(t){this._update(t.point)},n.prototype._update=function(e){var n=this,i=this._lngLat||this._trackPointer;if(this._map&&i&&this._content&&(this._container||(this._container=r.create(\"div\",\"mapboxgl-popup\",this._map.getContainer()),this._tip=r.create(\"div\",\"mapboxgl-popup-tip\",this._container),this._container.appendChild(this._content),this.options.className&&this.options.className.split(\" \").forEach((function(t){return n._container.classList.add(t)})),this._trackPointer&&this._container.classList.add(\"mapboxgl-popup-track-pointer\")),this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._map.transform.renderWorldCopies&&!this._trackPointer&&(this._lngLat=Oi(this._lngLat,this._pos,this._map.transform)),!this._trackPointer||e)){var a=this._pos=this._trackPointer&&e?e:this._map.project(this._lngLat),o=this.options.anchor,s=function e(r){if(r){if(\"number\"==typeof r){var n=Math.round(Math.sqrt(.5*Math.pow(r,2)));return{center:new t.Point(0,0),top:new t.Point(0,r),\"top-left\":new t.Point(n,n),\"top-right\":new t.Point(-n,n),bottom:new t.Point(0,-r),\"bottom-left\":new t.Point(n,-n),\"bottom-right\":new t.Point(-n,-n),left:new t.Point(r,0),right:new t.Point(-r,0)}}if(r instanceof t.Point||Array.isArray(r)){var i=t.Point.convert(r);return{center:i,top:i,\"top-left\":i,\"top-right\":i,bottom:i,\"bottom-left\":i,\"bottom-right\":i,left:i,right:i}}return{center:t.Point.convert(r.center||[0,0]),top:t.Point.convert(r.top||[0,0]),\"top-left\":t.Point.convert(r[\"top-left\"]||[0,0]),\"top-right\":t.Point.convert(r[\"top-right\"]||[0,0]),bottom:t.Point.convert(r.bottom||[0,0]),\"bottom-left\":t.Point.convert(r[\"bottom-left\"]||[0,0]),\"bottom-right\":t.Point.convert(r[\"bottom-right\"]||[0,0]),left:t.Point.convert(r.left||[0,0]),right:t.Point.convert(r.right||[0,0])}}return e(new t.Point(0,0))}(this.options.offset);if(!o){var l,c=this._container.offsetWidth,u=this._container.offsetHeight;l=a.y+s.bottom.ythis._map.transform.height-u?[\"bottom\"]:[],a.xthis._map.transform.width-c/2&&l.push(\"right\"),o=0===l.length?\"bottom\":l.join(\"-\")}var f=a.add(s[o]).round();r.setTransform(this._container,zi[o]+\" translate(\"+f.x+\"px,\"+f.y+\"px)\"),Di(this._container,o,\"popup\")}},n.prototype._onClose=function(){this.remove()},n}(t.Evented);var Zi={version:t.version,supported:e,setRTLTextPlugin:t.setRTLTextPlugin,getRTLTextPluginStatus:t.getRTLTextPluginStatus,Map:Ei,NavigationControl:Pi,GeolocateControl:Ui,AttributionControl:bi,ScaleControl:Hi,FullscreenControl:Yi,Popup:Xi,Marker:Fi,Style:qe,LngLat:t.LngLat,LngLatBounds:t.LngLatBounds,Point:t.Point,MercatorCoordinate:t.MercatorCoordinate,Evented:t.Evented,config:t.config,prewarm:function(){Bt().acquire(zt)},clearPrewarmedResources:function(){var t=Rt;t&&(t.isPreloaded()&&1===t.numActive()?(t.release(zt),Rt=null):console.warn(\"Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()\"))},get accessToken(){return t.config.ACCESS_TOKEN},set accessToken(e){t.config.ACCESS_TOKEN=e},get baseApiUrl(){return t.config.API_URL},set baseApiUrl(e){t.config.API_URL=e},get workerCount(){return Dt.workerCount},set workerCount(t){Dt.workerCount=t},get maxParallelImageRequests(){return t.config.MAX_PARALLEL_IMAGE_REQUESTS},set maxParallelImageRequests(e){t.config.MAX_PARALLEL_IMAGE_REQUESTS=e},clearStorage:function(e){t.clearTileCache(e)},workerUrl:\"\"};return Zi})),r}))},{}],240:[function(t,e,r){\"use strict\";e.exports=Math.log2||function(t){return Math.log(t)*Math.LOG2E}},{}],241:[function(t,e,r){\"use strict\";e.exports=function(t,e){e||(e=t,t=window);var r=0,i=0,a=0,o={shift:!1,alt:!1,control:!1,meta:!1},s=!1;function l(t){var e=!1;return\"altKey\"in t&&(e=e||t.altKey!==o.alt,o.alt=!!t.altKey),\"shiftKey\"in t&&(e=e||t.shiftKey!==o.shift,o.shift=!!t.shiftKey),\"ctrlKey\"in t&&(e=e||t.ctrlKey!==o.control,o.control=!!t.ctrlKey),\"metaKey\"in t&&(e=e||t.metaKey!==o.meta,o.meta=!!t.metaKey),e}function c(t,s){var c=n.x(s),u=n.y(s);\"buttons\"in s&&(t=0|s.buttons),(t!==r||c!==i||u!==a||l(s))&&(r=0|t,i=c||0,a=u||0,e&&e(r,i,a,o))}function u(t){c(0,t)}function f(){(r||i||a||o.shift||o.alt||o.meta||o.control)&&(i=a=0,r=0,o.shift=o.alt=o.control=o.meta=!1,e&&e(0,0,0,o))}function h(t){l(t)&&e&&e(r,i,a,o)}function p(t){0===n.buttons(t)?c(0,t):c(r,t)}function d(t){c(r|n.buttons(t),t)}function g(t){c(r&~n.buttons(t),t)}function m(){s||(s=!0,t.addEventListener(\"mousemove\",p),t.addEventListener(\"mousedown\",d),t.addEventListener(\"mouseup\",g),t.addEventListener(\"mouseleave\",u),t.addEventListener(\"mouseenter\",u),t.addEventListener(\"mouseout\",u),t.addEventListener(\"mouseover\",u),t.addEventListener(\"blur\",f),t.addEventListener(\"keyup\",h),t.addEventListener(\"keydown\",h),t.addEventListener(\"keypress\",h),t!==window&&(window.addEventListener(\"blur\",f),window.addEventListener(\"keyup\",h),window.addEventListener(\"keydown\",h),window.addEventListener(\"keypress\",h)))}m();var v={element:t};return Object.defineProperties(v,{enabled:{get:function(){return s},set:function(e){e?m():function(){if(!s)return;s=!1,t.removeEventListener(\"mousemove\",p),t.removeEventListener(\"mousedown\",d),t.removeEventListener(\"mouseup\",g),t.removeEventListener(\"mouseleave\",u),t.removeEventListener(\"mouseenter\",u),t.removeEventListener(\"mouseout\",u),t.removeEventListener(\"mouseover\",u),t.removeEventListener(\"blur\",f),t.removeEventListener(\"keyup\",h),t.removeEventListener(\"keydown\",h),t.removeEventListener(\"keypress\",h),t!==window&&(window.removeEventListener(\"blur\",f),window.removeEventListener(\"keyup\",h),window.removeEventListener(\"keydown\",h),window.removeEventListener(\"keypress\",h))}()},enumerable:!0},buttons:{get:function(){return r},enumerable:!0},x:{get:function(){return i},enumerable:!0},y:{get:function(){return a},enumerable:!0},mods:{get:function(){return o},enumerable:!0}}),v};var n=t(\"mouse-event\")},{\"mouse-event\":243}],242:[function(t,e,r){var n={left:0,top:0};e.exports=function(t,e,r){e=e||t.currentTarget||t.srcElement,Array.isArray(r)||(r=[0,0]);var i=t.clientX||0,a=t.clientY||0,o=(s=e,s===window||s===document||s===document.body?n:s.getBoundingClientRect());var s;return r[0]=i-o.left,r[1]=a-o.top,r}},{}],243:[function(t,e,r){\"use strict\";function n(t){return t.target||t.srcElement||window}r.buttons=function(t){if(\"object\"==typeof t){if(\"buttons\"in t)return t.buttons;if(\"which\"in t){if(2===(e=t.which))return 4;if(3===e)return 2;if(e>0)return 1<=0)return 1<2147483647)throw new RangeError('The value \"'+t+'\" is invalid for option \"size\"');var e=new Uint8Array(t);return e.__proto__=a.prototype,e}function a(t,e,r){if(\"number\"==typeof t){if(\"string\"==typeof e)throw new TypeError('The \"string\" argument must be of type string. Received type number');return l(t)}return o(t,e,r)}function o(t,e,r){if(\"string\"==typeof t)return function(t,e){\"string\"==typeof e&&\"\"!==e||(e=\"utf8\");if(!a.isEncoding(e))throw new TypeError(\"Unknown encoding: \"+e);var r=0|f(t,e),n=i(r),o=n.write(t,e);o!==r&&(n=n.slice(0,o));return n}(t,e);if(ArrayBuffer.isView(t))return c(t);if(null==t)throw TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof t);if(B(t,ArrayBuffer)||t&&B(t.buffer,ArrayBuffer))return function(t,e,r){if(e<0||t.byteLength=2147483647)throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+2147483647..toString(16)+\" bytes\");return 0|t}function f(t,e){if(a.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||B(t,ArrayBuffer))return t.byteLength;if(\"string\"!=typeof t)throw new TypeError('The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);var r=t.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;for(var i=!1;;)switch(e){case\"ascii\":case\"latin1\":case\"binary\":return r;case\"utf8\":case\"utf-8\":return D(t).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*r;case\"hex\":return r>>>1;case\"base64\":return R(t).length;default:if(i)return n?-1:D(t).length;e=(\"\"+e).toLowerCase(),i=!0}}function h(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return\"\";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return\"\";if((r>>>=0)<=(e>>>=0))return\"\";for(t||(t=\"utf8\");;)switch(t){case\"hex\":return M(this,e,r);case\"utf8\":case\"utf-8\":return T(this,e,r);case\"ascii\":return k(this,e,r);case\"latin1\":case\"binary\":return A(this,e,r);case\"base64\":return w(this,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return S(this,e,r);default:if(n)throw new TypeError(\"Unknown encoding: \"+t);t=(t+\"\").toLowerCase(),n=!0}}function p(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function d(t,e,r,n,i){if(0===t.length)return-1;if(\"string\"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),N(r=+r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if(\"string\"==typeof e&&(e=a.from(e,n)),a.isBuffer(e))return 0===e.length?-1:g(t,e,r,n,i);if(\"number\"==typeof e)return e&=255,\"function\"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):g(t,[e],r,n,i);throw new TypeError(\"val must be string, number or Buffer\")}function g(t,e,r,n,i){var a,o=1,s=t.length,l=e.length;if(void 0!==n&&(\"ucs2\"===(n=String(n).toLowerCase())||\"ucs-2\"===n||\"utf16le\"===n||\"utf-16le\"===n)){if(t.length<2||e.length<2)return-1;o=2,s/=2,l/=2,r/=2}function c(t,e){return 1===o?t[e]:t.readUInt16BE(e*o)}if(i){var u=-1;for(a=r;as&&(r=s-l),a=r;a>=0;a--){for(var f=!0,h=0;hi&&(n=i):n=i;var a=e.length;n>a/2&&(n=a/2);for(var o=0;o>8,i=r%256,a.push(i),a.push(n);return a}(e,t.length-r),t,r,n)}function w(t,r,n){return 0===r&&n===t.length?e.fromByteArray(t):e.fromByteArray(t.slice(r,n))}function T(t,e,r){r=Math.min(t.length,r);for(var n=[],i=e;i239?4:c>223?3:c>191?2:1;if(i+f<=r)switch(f){case 1:c<128&&(u=c);break;case 2:128==(192&(a=t[i+1]))&&(l=(31&c)<<6|63&a)>127&&(u=l);break;case 3:a=t[i+1],o=t[i+2],128==(192&a)&&128==(192&o)&&(l=(15&c)<<12|(63&a)<<6|63&o)>2047&&(l<55296||l>57343)&&(u=l);break;case 4:a=t[i+1],o=t[i+2],s=t[i+3],128==(192&a)&&128==(192&o)&&128==(192&s)&&(l=(15&c)<<18|(63&a)<<12|(63&o)<<6|63&s)>65535&&l<1114112&&(u=l)}null===u?(u=65533,f=1):u>65535&&(u-=65536,n.push(u>>>10&1023|55296),u=56320|1023&u),n.push(u),i+=f}return function(t){var e=t.length;if(e<=4096)return String.fromCharCode.apply(String,t);var r=\"\",n=0;for(;ne&&(t+=\" ... \"),\"\"},a.prototype.compare=function(t,e,r,n,i){if(B(t,Uint8Array)&&(t=a.from(t,t.offset,t.byteLength)),!a.isBuffer(t))throw new TypeError('The \"target\" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError(\"out of range index\");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(this===t)return 0;for(var o=(i>>>=0)-(n>>>=0),s=(r>>>=0)-(e>>>=0),l=Math.min(o,s),c=this.slice(n,i),u=t.slice(e,r),f=0;f>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n=\"utf8\")):(n=r,r=void 0)}var i=this.length-e;if((void 0===r||r>i)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");n||(n=\"utf8\");for(var a=!1;;)switch(n){case\"hex\":return m(this,t,e,r);case\"utf8\":case\"utf-8\":return v(this,t,e,r);case\"ascii\":return y(this,t,e,r);case\"latin1\":case\"binary\":return x(this,t,e,r);case\"base64\":return b(this,t,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return _(this,t,e,r);default:if(a)throw new TypeError(\"Unknown encoding: \"+n);n=(\"\"+n).toLowerCase(),a=!0}},a.prototype.toJSON=function(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};function k(t,e,r){var n=\"\";r=Math.min(t.length,r);for(var i=e;in)&&(r=n);for(var i=\"\",a=e;ar)throw new RangeError(\"Trying to access beyond buffer length\")}function L(t,e,r,n,i,o){if(!a.isBuffer(t))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError(\"Index out of range\")}function C(t,e,r,n,i,a){if(r+n>t.length)throw new RangeError(\"Index out of range\");if(r<0)throw new RangeError(\"Index out of range\")}function P(t,e,r,i,a){return e=+e,r>>>=0,a||C(t,0,r,4),n.write(t,e,r,i,23,4),r+4}function I(t,e,r,i,a){return e=+e,r>>>=0,a||C(t,0,r,8),n.write(t,e,r,i,52,8),r+8}a.prototype.slice=function(t,e){var r=this.length;(t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e>>=0,e>>>=0,r||E(t,e,this.length);for(var n=this[t],i=1,a=0;++a>>=0,e>>>=0,r||E(t,e,this.length);for(var n=this[t+--e],i=1;e>0&&(i*=256);)n+=this[t+--e]*i;return n},a.prototype.readUInt8=function(t,e){return t>>>=0,e||E(t,1,this.length),this[t]},a.prototype.readUInt16LE=function(t,e){return t>>>=0,e||E(t,2,this.length),this[t]|this[t+1]<<8},a.prototype.readUInt16BE=function(t,e){return t>>>=0,e||E(t,2,this.length),this[t]<<8|this[t+1]},a.prototype.readUInt32LE=function(t,e){return t>>>=0,e||E(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},a.prototype.readUInt32BE=function(t,e){return t>>>=0,e||E(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},a.prototype.readIntLE=function(t,e,r){t>>>=0,e>>>=0,r||E(t,e,this.length);for(var n=this[t],i=1,a=0;++a=(i*=128)&&(n-=Math.pow(2,8*e)),n},a.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||E(t,e,this.length);for(var n=e,i=1,a=this[t+--n];n>0&&(i*=256);)a+=this[t+--n]*i;return a>=(i*=128)&&(a-=Math.pow(2,8*e)),a},a.prototype.readInt8=function(t,e){return t>>>=0,e||E(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},a.prototype.readInt16LE=function(t,e){t>>>=0,e||E(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt16BE=function(t,e){t>>>=0,e||E(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt32LE=function(t,e){return t>>>=0,e||E(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},a.prototype.readInt32BE=function(t,e){return t>>>=0,e||E(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},a.prototype.readFloatLE=function(t,e){return t>>>=0,e||E(t,4,this.length),n.read(this,t,!0,23,4)},a.prototype.readFloatBE=function(t,e){return t>>>=0,e||E(t,4,this.length),n.read(this,t,!1,23,4)},a.prototype.readDoubleLE=function(t,e){return t>>>=0,e||E(t,8,this.length),n.read(this,t,!0,52,8)},a.prototype.readDoubleBE=function(t,e){return t>>>=0,e||E(t,8,this.length),n.read(this,t,!1,52,8)},a.prototype.writeUIntLE=function(t,e,r,n){(t=+t,e>>>=0,r>>>=0,n)||L(this,t,e,r,Math.pow(2,8*r)-1,0);var i=1,a=0;for(this[e]=255&t;++a>>=0,r>>>=0,n)||L(this,t,e,r,Math.pow(2,8*r)-1,0);var i=r-1,a=1;for(this[e+i]=255&t;--i>=0&&(a*=256);)this[e+i]=t/a&255;return e+r},a.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,1,255,0),this[e]=255&t,e+1},a.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},a.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},a.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},a.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},a.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var i=Math.pow(2,8*r-1);L(this,t,e,r,i-1,-i)}var a=0,o=1,s=0;for(this[e]=255&t;++a>0)-s&255;return e+r},a.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var i=Math.pow(2,8*r-1);L(this,t,e,r,i-1,-i)}var a=r-1,o=1,s=0;for(this[e+a]=255&t;--a>=0&&(o*=256);)t<0&&0===s&&0!==this[e+a+1]&&(s=1),this[e+a]=(t/o>>0)-s&255;return e+r},a.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},a.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},a.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},a.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},a.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},a.prototype.writeFloatLE=function(t,e,r){return P(this,t,e,!0,r)},a.prototype.writeFloatBE=function(t,e,r){return P(this,t,e,!1,r)},a.prototype.writeDoubleLE=function(t,e,r){return I(this,t,e,!0,r)},a.prototype.writeDoubleBE=function(t,e,r){return I(this,t,e,!1,r)},a.prototype.copy=function(t,e,r,n){if(!a.isBuffer(t))throw new TypeError(\"argument should be a Buffer\");if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n=this.length)throw new RangeError(\"Index out of range\");if(n<0)throw new RangeError(\"sourceEnd out of bounds\");n>this.length&&(n=this.length),t.length-e=0;--o)t[o+e]=this[o+r];else Uint8Array.prototype.set.call(t,this.subarray(r,n),e);return i},a.prototype.fill=function(t,e,r,n){if(\"string\"==typeof t){if(\"string\"==typeof e?(n=e,e=0,r=this.length):\"string\"==typeof r&&(n=r,r=this.length),void 0!==n&&\"string\"!=typeof n)throw new TypeError(\"encoding must be a string\");if(\"string\"==typeof n&&!a.isEncoding(n))throw new TypeError(\"Unknown encoding: \"+n);if(1===t.length){var i=t.charCodeAt(0);(\"utf8\"===n&&i<128||\"latin1\"===n)&&(t=i)}}else\"number\"==typeof t&&(t&=255);if(e<0||this.length>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),\"number\"==typeof t)for(o=e;o55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&a.push(239,191,189);continue}if(o+1===n){(e-=3)>-1&&a.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&a.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&a.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;a.push(r)}else if(r<2048){if((e-=2)<0)break;a.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;a.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error(\"Invalid code point\");if((e-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return a}function R(t){return e.toByteArray(function(t){if((t=(t=t.split(\"=\")[0]).trim().replace(O,\"\")).length<2)return\"\";for(;t.length%4!=0;)t+=\"=\";return t}(t))}function F(t,e,r,n){for(var i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function B(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function N(t){return t!=t}}).call(this)}).call(this,t(\"buffer\").Buffer)},{\"base64-js\":79,buffer:85,ieee754:230}],86:[function(t,e,r){e.exports=function(t,e,r){return er?r:t:te?e:t}},{}],87:[function(t,e,r){\"use strict\";var n=t(\"clamp\");function i(t,e){null==e&&(e=!0);var r=t[0],i=t[1],a=t[2],o=t[3];return null==o&&(o=e?1:255),e&&(r*=255,i*=255,a*=255,o*=255),16777216*(r=255&n(r,0,255))+((i=255&n(i,0,255))<<16)+((a=255&n(a,0,255))<<8)+(o=255&n(o,0,255))}e.exports=i,e.exports.to=i,e.exports.from=function(t,e){var r=(t=+t)>>>24,n=(16711680&t)>>>16,i=(65280&t)>>>8,a=255&t;return!1===e?[r,n,i,a]:[r/255,n/255,i/255,a/255]}},{clamp:86}],88:[function(t,e,r){\"use strict\";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},{}],89:[function(t,e,r){\"use strict\";var n=t(\"color-rgba\"),i=t(\"clamp\"),a=t(\"dtype\");e.exports=function(t,e){\"float\"!==e&&e||(e=\"array\"),\"uint\"===e&&(e=\"uint8\"),\"uint_clamped\"===e&&(e=\"uint8_clamped\");var r=new(a(e))(4),o=\"uint8\"!==e&&\"uint8_clamped\"!==e;return t.length&&\"string\"!=typeof t||((t=n(t))[0]/=255,t[1]/=255,t[2]/=255),function(t){return t instanceof Uint8Array||t instanceof Uint8ClampedArray||!!(Array.isArray(t)&&(t[0]>1||0===t[0])&&(t[1]>1||0===t[1])&&(t[2]>1||0===t[2])&&(!t[3]||t[3]>1))}(t)?(r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=null!=t[3]?t[3]:255,o&&(r[0]/=255,r[1]/=255,r[2]/=255,r[3]/=255),r):(o?(r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=null!=t[3]?t[3]:1):(r[0]=i(Math.floor(255*t[0]),0,255),r[1]=i(Math.floor(255*t[1]),0,255),r[2]=i(Math.floor(255*t[2]),0,255),r[3]=null==t[3]?255:i(Math.floor(255*t[3]),0,255)),r)}},{clamp:86,\"color-rgba\":91,dtype:127}],90:[function(t,e,r){(function(r){(function(){\"use strict\";var n=t(\"color-name\"),i=t(\"is-plain-obj\"),a=t(\"defined\");e.exports=function(t){var e,s,l=[],c=1;if(\"string\"==typeof t)if(n[t])l=n[t].slice(),s=\"rgb\";else if(\"transparent\"===t)c=0,s=\"rgb\",l=[0,0,0];else if(/^#[A-Fa-f0-9]+$/.test(t)){var u=(p=t.slice(1)).length;c=1,u<=4?(l=[parseInt(p[0]+p[0],16),parseInt(p[1]+p[1],16),parseInt(p[2]+p[2],16)],4===u&&(c=parseInt(p[3]+p[3],16)/255)):(l=[parseInt(p[0]+p[1],16),parseInt(p[2]+p[3],16),parseInt(p[4]+p[5],16)],8===u&&(c=parseInt(p[6]+p[7],16)/255)),l[0]||(l[0]=0),l[1]||(l[1]=0),l[2]||(l[2]=0),s=\"rgb\"}else if(e=/^((?:rgb|hs[lvb]|hwb|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms)a?)\\s*\\(([^\\)]*)\\)/.exec(t)){var f=e[1],h=\"rgb\"===f,p=f.replace(/a$/,\"\");s=p;u=\"cmyk\"===p?4:\"gray\"===p?1:3;l=e[2].trim().split(/\\s*,\\s*/).map((function(t,e){if(/%$/.test(t))return e===u?parseFloat(t)/100:\"rgb\"===p?255*parseFloat(t)/100:parseFloat(t);if(\"h\"===p[e]){if(/deg$/.test(t))return parseFloat(t);if(void 0!==o[t])return o[t]}return parseFloat(t)})),f===p&&l.push(1),c=h||void 0===l[u]?1:l[u],l=l.slice(0,u)}else t.length>10&&/[0-9](?:\\s|\\/)/.test(t)&&(l=t.match(/([0-9]+)/g).map((function(t){return parseFloat(t)})),s=t.match(/([a-z])/gi).join(\"\").toLowerCase());else if(isNaN(t))if(i(t)){var d=a(t.r,t.red,t.R,null);null!==d?(s=\"rgb\",l=[d,a(t.g,t.green,t.G),a(t.b,t.blue,t.B)]):(s=\"hsl\",l=[a(t.h,t.hue,t.H),a(t.s,t.saturation,t.S),a(t.l,t.lightness,t.L,t.b,t.brightness)]),c=a(t.a,t.alpha,t.opacity,1),null!=t.opacity&&(c/=100)}else(Array.isArray(t)||r.ArrayBuffer&&ArrayBuffer.isView&&ArrayBuffer.isView(t))&&(l=[t[0],t[1],t[2]],s=\"rgb\",c=4===t.length?t[3]:1);else s=\"rgb\",l=[t>>>16,(65280&t)>>>8,255&t];return{space:s,values:l,alpha:c}};var o={red:0,orange:60,yellow:120,green:180,blue:240,purple:300}}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"color-name\":88,defined:124,\"is-plain-obj\":236}],91:[function(t,e,r){\"use strict\";var n=t(\"color-parse\"),i=t(\"color-space/hsl\"),a=t(\"clamp\");e.exports=function(t){var e,r=n(t);return r.space?((e=Array(3))[0]=a(r.values[0],0,255),e[1]=a(r.values[1],0,255),e[2]=a(r.values[2],0,255),\"h\"===r.space[0]&&(e=i.rgb(e)),e.push(a(r.alpha,0,1)),e):[]}},{clamp:86,\"color-parse\":90,\"color-space/hsl\":92}],92:[function(t,e,r){\"use strict\";var n=t(\"./rgb\");e.exports={name:\"hsl\",min:[0,0,0],max:[360,100,100],channel:[\"hue\",\"saturation\",\"lightness\"],alias:[\"HSL\"],rgb:function(t){var e,r,n,i,a,o=t[0]/360,s=t[1]/100,l=t[2]/100;if(0===s)return[a=255*l,a,a];e=2*l-(r=l<.5?l*(1+s):l+s-l*s),i=[0,0,0];for(var c=0;c<3;c++)(n=o+1/3*-(c-1))<0?n++:n>1&&n--,a=6*n<1?e+6*(r-e)*n:2*n<1?r:3*n<2?e+(r-e)*(2/3-n)*6:e,i[c]=255*a;return i}},n.hsl=function(t){var e,r,n=t[0]/255,i=t[1]/255,a=t[2]/255,o=Math.min(n,i,a),s=Math.max(n,i,a),l=s-o;return s===o?e=0:n===s?e=(i-a)/l:i===s?e=2+(a-n)/l:a===s&&(e=4+(n-i)/l),(e=Math.min(60*e,360))<0&&(e+=360),r=(o+s)/2,[e,100*(s===o?0:r<=.5?l/(s+o):l/(2-s-o)),100*r]}},{\"./rgb\":93}],93:[function(t,e,r){\"use strict\";e.exports={name:\"rgb\",min:[0,0,0],max:[255,255,255],channel:[\"red\",\"green\",\"blue\"],alias:[\"RGB\"]}},{}],94:[function(t,e,r){e.exports={AFG:\"afghan\",ALA:\"\\\\b\\\\wland\",ALB:\"albania\",DZA:\"algeria\",ASM:\"^(?=.*americ).*samoa\",AND:\"andorra\",AGO:\"angola\",AIA:\"anguill?a\",ATA:\"antarctica\",ATG:\"antigua\",ARG:\"argentin\",ARM:\"armenia\",ABW:\"^(?!.*bonaire).*\\\\baruba\",AUS:\"australia\",AUT:\"^(?!.*hungary).*austria|\\\\baustri.*\\\\bemp\",AZE:\"azerbaijan\",BHS:\"bahamas\",BHR:\"bahrain\",BGD:\"bangladesh|^(?=.*east).*paki?stan\",BRB:\"barbados\",BLR:\"belarus|byelo\",BEL:\"^(?!.*luxem).*belgium\",BLZ:\"belize|^(?=.*british).*honduras\",BEN:\"benin|dahome\",BMU:\"bermuda\",BTN:\"bhutan\",BOL:\"bolivia\",BES:\"^(?=.*bonaire).*eustatius|^(?=.*carib).*netherlands|\\\\bbes.?islands\",BIH:\"herzegovina|bosnia\",BWA:\"botswana|bechuana\",BVT:\"bouvet\",BRA:\"brazil\",IOT:\"british.?indian.?ocean\",BRN:\"brunei\",BGR:\"bulgaria\",BFA:\"burkina|\\\\bfaso|upper.?volta\",BDI:\"burundi\",CPV:\"verde\",KHM:\"cambodia|kampuchea|khmer\",CMR:\"cameroon\",CAN:\"canada\",CYM:\"cayman\",CALF:\"\\\\bcentral.african.republic\",TCD:\"\\\\bchad\",CHL:\"\\\\bchile\",CHN:\"^(?!.*\\\\bmac)(?!.*\\\\bhong)(?!.*\\\\btai)(?!.*\\\\brep).*china|^(?=.*peo)(?=.*rep).*china\",CXR:\"christmas\",CCK:\"\\\\bcocos|keeling\",COL:\"colombia\",COM:\"comoro\",COG:\"^(?!.*\\\\bdem)(?!.*\\\\bd[\\\\.]?r)(?!.*kinshasa)(?!.*zaire)(?!.*belg)(?!.*l.opoldville)(?!.*free).*\\\\bcongo\",COK:\"\\\\bcook\",CRI:\"costa.?rica\",CIV:\"ivoire|ivory\",HRV:\"croatia\",CUB:\"\\\\bcuba\",CUW:\"^(?!.*bonaire).*\\\\bcura(c|\\xe7)ao\",CYP:\"cyprus\",CSK:\"czechoslovakia\",CZE:\"^(?=.*rep).*czech|czechia|bohemia\",COD:\"\\\\bdem.*congo|congo.*\\\\bdem|congo.*\\\\bd[\\\\.]?r|\\\\bd[\\\\.]?r.*congo|belgian.?congo|congo.?free.?state|kinshasa|zaire|l.opoldville|drc|droc|rdc\",DNK:\"denmark\",DJI:\"djibouti\",DMA:\"dominica(?!n)\",DOM:\"dominican.rep\",ECU:\"ecuador\",EGY:\"egypt\",SLV:\"el.?salvador\",GNQ:\"guine.*eq|eq.*guine|^(?=.*span).*guinea\",ERI:\"eritrea\",EST:\"estonia\",ETH:\"ethiopia|abyssinia\",FLK:\"falkland|malvinas\",FRO:\"faroe|faeroe\",FJI:\"fiji\",FIN:\"finland\",FRA:\"^(?!.*\\\\bdep)(?!.*martinique).*france|french.?republic|\\\\bgaul\",GUF:\"^(?=.*french).*guiana\",PYF:\"french.?polynesia|tahiti\",ATF:\"french.?southern\",GAB:\"gabon\",GMB:\"gambia\",GEO:\"^(?!.*south).*georgia\",DDR:\"german.?democratic.?republic|democratic.?republic.*germany|east.germany\",DEU:\"^(?!.*east).*germany|^(?=.*\\\\bfed.*\\\\brep).*german\",GHA:\"ghana|gold.?coast\",GIB:\"gibraltar\",GRC:\"greece|hellenic|hellas\",GRL:\"greenland\",GRD:\"grenada\",GLP:\"guadeloupe\",GUM:\"\\\\bguam\",GTM:\"guatemala\",GGY:\"guernsey\",GIN:\"^(?!.*eq)(?!.*span)(?!.*bissau)(?!.*portu)(?!.*new).*guinea\",GNB:\"bissau|^(?=.*portu).*guinea\",GUY:\"guyana|british.?guiana\",HTI:\"haiti\",HMD:\"heard.*mcdonald\",VAT:\"holy.?see|vatican|papal.?st\",HND:\"^(?!.*brit).*honduras\",HKG:\"hong.?kong\",HUN:\"^(?!.*austr).*hungary\",ISL:\"iceland\",IND:\"india(?!.*ocea)\",IDN:\"indonesia\",IRN:\"\\\\biran|persia\",IRQ:\"\\\\biraq|mesopotamia\",IRL:\"(^ireland)|(^republic.*ireland)\",IMN:\"^(?=.*isle).*\\\\bman\",ISR:\"israel\",ITA:\"italy\",JAM:\"jamaica\",JPN:\"japan\",JEY:\"jersey\",JOR:\"jordan\",KAZ:\"kazak\",KEN:\"kenya|british.?east.?africa|east.?africa.?prot\",KIR:\"kiribati\",PRK:\"^(?=.*democrat|people|north|d.*p.*.r).*\\\\bkorea|dprk|korea.*(d.*p.*r)\",KWT:\"kuwait\",KGZ:\"kyrgyz|kirghiz\",LAO:\"\\\\blaos?\\\\b\",LVA:\"latvia\",LBN:\"lebanon\",LSO:\"lesotho|basuto\",LBR:\"liberia\",LBY:\"libya\",LIE:\"liechtenstein\",LTU:\"lithuania\",LUX:\"^(?!.*belg).*luxem\",MAC:\"maca(o|u)\",MDG:\"madagascar|malagasy\",MWI:\"malawi|nyasa\",MYS:\"malaysia\",MDV:\"maldive\",MLI:\"\\\\bmali\\\\b\",MLT:\"\\\\bmalta\",MHL:\"marshall\",MTQ:\"martinique\",MRT:\"mauritania\",MUS:\"mauritius\",MYT:\"\\\\bmayotte\",MEX:\"\\\\bmexic\",FSM:\"fed.*micronesia|micronesia.*fed\",MCO:\"monaco\",MNG:\"mongolia\",MNE:\"^(?!.*serbia).*montenegro\",MSR:\"montserrat\",MAR:\"morocco|\\\\bmaroc\",MOZ:\"mozambique\",MMR:\"myanmar|burma\",NAME:\"namibia\",NRU:\"nauru\",NPL:\"nepal\",NLD:\"^(?!.*\\\\bant)(?!.*\\\\bcarib).*netherlands\",ANT:\"^(?=.*\\\\bant).*(nether|dutch)\",NCL:\"new.?caledonia\",NZL:\"new.?zealand\",NIC:\"nicaragua\",NER:\"\\\\bniger(?!ia)\",NGA:\"nigeria\",NIU:\"niue\",NFK:\"norfolk\",MNP:\"mariana\",NOR:\"norway\",OMN:\"\\\\boman|trucial\",PAK:\"^(?!.*east).*paki?stan\",PLW:\"palau\",PSE:\"palestin|\\\\bgaza|west.?bank\",PAN:\"panama\",PNG:\"papua|new.?guinea\",PRY:\"paraguay\",PER:\"peru\",PHL:\"philippines\",PCN:\"pitcairn\",POL:\"poland\",PRT:\"portugal\",PRI:\"puerto.?rico\",QAT:\"qatar\",KOR:\"^(?!.*d.*p.*r)(?!.*democrat)(?!.*people)(?!.*north).*\\\\bkorea(?!.*d.*p.*r)\",MDA:\"moldov|b(a|e)ssarabia\",REU:\"r(e|\\xe9)union\",ROU:\"r(o|u|ou)mania\",RUS:\"\\\\brussia|soviet.?union|u\\\\.?s\\\\.?s\\\\.?r|socialist.?republics\",RWA:\"rwanda\",BLM:\"barth(e|\\xe9)lemy\",SHN:\"helena\",KNA:\"kitts|\\\\bnevis\",LCA:\"\\\\blucia\",MAF:\"^(?=.*collectivity).*martin|^(?=.*france).*martin(?!ique)|^(?=.*french).*martin(?!ique)\",SPM:\"miquelon\",VCT:\"vincent\",WSM:\"^(?!.*amer).*samoa\",SMR:\"san.?marino\",STP:\"\\\\bs(a|\\xe3)o.?tom(e|\\xe9)\",SAU:\"\\\\bsa\\\\w*.?arabia\",SEN:\"senegal\",SRB:\"^(?!.*monte).*serbia\",SYC:\"seychell\",SLE:\"sierra\",SGP:\"singapore\",SXM:\"^(?!.*martin)(?!.*saba).*maarten\",SVK:\"^(?!.*cze).*slovak\",SVN:\"slovenia\",SLB:\"solomon\",SOME:\"somali\",ZAF:\"south.africa|s\\\\\\\\..?africa\",SGS:\"south.?georgia|sandwich\",SSD:\"\\\\bs\\\\w*.?sudan\",ESP:\"spain\",LKA:\"sri.?lanka|ceylon\",SDN:\"^(?!.*\\\\bs(?!u)).*sudan\",SUR:\"surinam|dutch.?guiana\",SJM:\"svalbard\",SWZ:\"swaziland\",SWE:\"sweden\",CHE:\"switz|swiss\",SYR:\"syria\",TWN:\"taiwan|taipei|formosa|^(?!.*peo)(?=.*rep).*china\",TJK:\"tajik\",THA:\"thailand|\\\\bsiam\",MKD:\"macedonia|fyrom\",TLS:\"^(?=.*leste).*timor|^(?=.*east).*timor\",TGO:\"togo\",TKL:\"tokelau\",TON:\"tonga\",TTO:\"trinidad|tobago\",TUN:\"tunisia\",TUR:\"turkey\",TKM:\"turkmen\",TCA:\"turks\",TUV:\"tuvalu\",UGA:\"uganda\",UKR:\"ukrain\",ARE:\"emirates|^u\\\\.?a\\\\.?e\\\\.?$|united.?arab.?em\",GBR:\"united.?kingdom|britain|^u\\\\.?k\\\\.?$\",TZA:\"tanzania\",USA:\"united.?states\\\\b(?!.*islands)|\\\\bu\\\\.?s\\\\.?a\\\\.?\\\\b|^\\\\s*u\\\\.?s\\\\.?\\\\b(?!.*islands)\",UMI:\"minor.?outlying.?is\",URY:\"uruguay\",UZB:\"uzbek\",VUT:\"vanuatu|new.?hebrides\",VEN:\"venezuela\",VNM:\"^(?!.*republic).*viet.?name|^(?=.*socialist).*viet.?name\",VGB:\"^(?=.*\\\\bu\\\\.?\\\\s?k).*virgin|^(?=.*brit).*virgin|^(?=.*kingdom).*virgin\",VIR:\"^(?=.*\\\\bu\\\\.?\\\\s?s).*virgin|^(?=.*states).*virgin\",WLF:\"futuna|wallis\",ESH:\"western.sahara\",YEM:\"^(?!.*arab)(?!.*north)(?!.*sana)(?!.*peo)(?!.*dem)(?!.*south)(?!.*aden)(?!.*\\\\bp\\\\.?d\\\\.?r).*yemen\",YMD:\"^(?=.*peo).*yemen|^(?!.*rep)(?=.*dem).*yemen|^(?=.*south).*yemen|^(?=.*aden).*yemen|^(?=.*\\\\bp\\\\.?d\\\\.?r).*yemen\",YUG:\"yugoslavia\",ZMB:\"zambia|northern.?rhodesia\",EAZ:\"zanzibar\",ZWE:\"zimbabwe|^(?!.*northern).*rhodesia\"}},{}],95:[function(t,e,r){e.exports=[\"xx-small\",\"x-small\",\"small\",\"medium\",\"large\",\"x-large\",\"xx-large\",\"larger\",\"smaller\"]},{}],96:[function(t,e,r){e.exports=[\"normal\",\"condensed\",\"semi-condensed\",\"extra-condensed\",\"ultra-condensed\",\"expanded\",\"semi-expanded\",\"extra-expanded\",\"ultra-expanded\"]},{}],97:[function(t,e,r){e.exports=[\"normal\",\"italic\",\"oblique\"]},{}],98:[function(t,e,r){e.exports=[\"normal\",\"bold\",\"bolder\",\"lighter\",\"100\",\"200\",\"300\",\"400\",\"500\",\"600\",\"700\",\"800\",\"900\"]},{}],99:[function(t,e,r){\"use strict\";e.exports={parse:t(\"./parse\"),stringify:t(\"./stringify\")}},{\"./parse\":101,\"./stringify\":102}],100:[function(t,e,r){\"use strict\";var n=t(\"css-font-size-keywords\");e.exports={isSize:function(t){return/^[\\d\\.]/.test(t)||-1!==t.indexOf(\"/\")||-1!==n.indexOf(t)}}},{\"css-font-size-keywords\":95}],101:[function(t,e,r){\"use strict\";var n=t(\"unquote\"),i=t(\"css-global-keywords\"),a=t(\"css-system-font-keywords\"),o=t(\"css-font-weight-keywords\"),s=t(\"css-font-style-keywords\"),l=t(\"css-font-stretch-keywords\"),c=t(\"string-split-by\"),u=t(\"./lib/util\").isSize;e.exports=h;var f=h.cache={};function h(t){if(\"string\"!=typeof t)throw new Error(\"Font argument must be a string.\");if(f[t])return f[t];if(\"\"===t)throw new Error(\"Cannot parse an empty string.\");if(-1!==a.indexOf(t))return f[t]={system:t};for(var e,r={style:\"normal\",variant:\"normal\",weight:\"normal\",stretch:\"normal\",lineHeight:\"normal\",size:\"1rem\",family:[\"serif\"]},h=c(t,/\\s+/);e=h.shift();){if(-1!==i.indexOf(e))return[\"style\",\"variant\",\"weight\",\"stretch\"].forEach((function(t){r[t]=e})),f[t]=r;if(-1===s.indexOf(e))if(\"normal\"!==e&&\"small-caps\"!==e)if(-1===l.indexOf(e)){if(-1===o.indexOf(e)){if(u(e)){var d=c(e,\"/\");if(r.size=d[0],null!=d[1]?r.lineHeight=p(d[1]):\"/\"===h[0]&&(h.shift(),r.lineHeight=p(h.shift())),!h.length)throw new Error(\"Missing required font-family.\");return r.family=c(h.join(\" \"),/\\s*,\\s*/).map(n),f[t]=r}throw new Error(\"Unknown or unsupported font token: \"+e)}r.weight=e}else r.stretch=e;else r.variant=e;else r.style=e}throw new Error(\"Missing required font-size.\")}function p(t){var e=parseFloat(t);return e.toString()===t?e:t}},{\"./lib/util\":100,\"css-font-stretch-keywords\":96,\"css-font-style-keywords\":97,\"css-font-weight-keywords\":98,\"css-global-keywords\":103,\"css-system-font-keywords\":104,\"string-split-by\":305,unquote:328}],102:[function(t,e,r){\"use strict\";var n=t(\"pick-by-alias\"),i=t(\"./lib/util\").isSize,a=g(t(\"css-global-keywords\")),o=g(t(\"css-system-font-keywords\")),s=g(t(\"css-font-weight-keywords\")),l=g(t(\"css-font-style-keywords\")),c=g(t(\"css-font-stretch-keywords\")),u={normal:1,\"small-caps\":1},f={serif:1,\"sans-serif\":1,monospace:1,cursive:1,fantasy:1,\"system-ui\":1},h=\"1rem\",p=\"serif\";function d(t,e){if(t&&!e[t]&&!a[t])throw Error(\"Unknown keyword `\"+t+\"`\");return t}function g(t){for(var e={},r=0;re?1:t>=e?0:NaN}function r(t){var r;return 1===t.length&&(r=t,t=function(t,n){return e(r(t),n)}),{left:function(e,r,n,i){for(null==n&&(n=0),null==i&&(i=e.length);n>>1;t(e[a],r)<0?n=a+1:i=a}return n},right:function(e,r,n,i){for(null==n&&(n=0),null==i&&(i=e.length);n>>1;t(e[a],r)>0?i=a:n=a+1}return n}}}var n=r(e),i=n.right,a=n.left;function o(t,e){return[t,e]}function s(t){return null===t?NaN:+t}function l(t,e){var r,n,i=t.length,a=0,o=-1,l=0,c=0;if(null==e)for(;++o1)return c/(a-1)}function c(t,e){var r=l(t,e);return r?Math.sqrt(r):r}function u(t,e){var r,n,i,a=t.length,o=-1;if(null==e){for(;++o=r)for(n=i=r;++or&&(n=r),i=r)for(n=i=r;++or&&(n=r),i=0?(a>=v?10:a>=y?5:a>=x?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(a>=v?10:a>=y?5:a>=x?2:1)}function _(t,e,r){var n=Math.abs(e-t)/Math.max(0,r),i=Math.pow(10,Math.floor(Math.log(n)/Math.LN10)),a=n/i;return a>=v?i*=10:a>=y?i*=5:a>=x&&(i*=2),e=1)return+r(t[n-1],n-1,t);var n,i=(n-1)*e,a=Math.floor(i),o=+r(t[a],a,t);return o+(+r(t[a+1],a+1,t)-o)*(i-a)}}function k(t,e){var r,n,i=t.length,a=-1;if(null==e){for(;++a=r)for(n=r;++ar&&(n=r)}else for(;++a=r)for(n=r;++ar&&(n=r);return n}function A(t){if(!(i=t.length))return[];for(var e=-1,r=k(t,M),n=new Array(r);++et?1:e>=t?0:NaN},t.deviation=c,t.extent=u,t.histogram=function(){var t=g,e=u,r=w;function n(n){var a,o,s=n.length,l=new Array(s);for(a=0;af;)h.pop(),--p;var d,g=new Array(p+1);for(a=0;a<=p;++a)(d=g[a]=[]).x0=a>0?h[a-1]:u,d.x1=a=r)for(n=r;++an&&(n=r)}else for(;++a=r)for(n=r;++an&&(n=r);return n},t.mean=function(t,e){var r,n=t.length,i=n,a=-1,o=0;if(null==e)for(;++a=0;)for(e=(n=t[i]).length;--e>=0;)r[--o]=n[e];return r},t.min=k,t.pairs=function(t,e){null==e&&(e=o);for(var r=0,n=t.length-1,i=t[0],a=new Array(n<0?0:n);r0)return[t];if((n=e0)for(t=Math.ceil(t/o),e=Math.floor(e/o),a=new Array(i=Math.ceil(e-t+1));++s=l.length)return null!=t&&n.sort(t),null!=e?e(n):n;for(var s,c,f,h=-1,p=n.length,d=l[i++],g=r(),m=a();++hl.length)return r;var i,a=c[n-1];return null!=e&&n>=l.length?i=r.entries():(i=[],r.each((function(e,r){i.push({key:r,values:t(e,n)})}))),null!=a?i.sort((function(t,e){return a(t.key,e.key)})):i}(u(t,0,a,o),0)},key:function(t){return l.push(t),s},sortKeys:function(t){return c[l.length-1]=t,s},sortValues:function(e){return t=e,s},rollup:function(t){return e=t,s}}},t.set=c,t.map=r,t.keys=function(t){var e=[];for(var r in t)e.push(r);return e},t.values=function(t){var e=[];for(var r in t)e.push(t[r]);return e},t.entries=function(t){var e=[];for(var r in t)e.push({key:r,value:t[r]});return e},Object.defineProperty(t,\"__esModule\",{value:!0})}))},{}],109:[function(t,e,r){!function(t,n){\"object\"==typeof r&&void 0!==e?n(r):n((t=t||self).d3=t.d3||{})}(this,(function(t){\"use strict\";function e(t,e,r){t.prototype=e.prototype=r,r.constructor=t}function r(t,e){var r=Object.create(t.prototype);for(var n in e)r[n]=e[n];return r}function n(){}var i=\"\\\\s*([+-]?\\\\d+)\\\\s*\",a=\"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",o=\"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",s=/^#([0-9a-f]{3,8})$/,l=new RegExp(\"^rgb\\\\(\"+[i,i,i]+\"\\\\)$\"),c=new RegExp(\"^rgb\\\\(\"+[o,o,o]+\"\\\\)$\"),u=new RegExp(\"^rgba\\\\(\"+[i,i,i,a]+\"\\\\)$\"),f=new RegExp(\"^rgba\\\\(\"+[o,o,o,a]+\"\\\\)$\"),h=new RegExp(\"^hsl\\\\(\"+[a,o,o]+\"\\\\)$\"),p=new RegExp(\"^hsla\\\\(\"+[a,o,o,a]+\"\\\\)$\"),d={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function g(){return this.rgb().formatHex()}function m(){return this.rgb().formatRgb()}function v(t){var e,r;return t=(t+\"\").trim().toLowerCase(),(e=s.exec(t))?(r=e[1].length,e=parseInt(e[1],16),6===r?y(e):3===r?new w(e>>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===r?x(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===r?x(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=l.exec(t))?new w(e[1],e[2],e[3],1):(e=c.exec(t))?new w(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=u.exec(t))?x(e[1],e[2],e[3],e[4]):(e=f.exec(t))?x(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=h.exec(t))?M(e[1],e[2]/100,e[3]/100,1):(e=p.exec(t))?M(e[1],e[2]/100,e[3]/100,e[4]):d.hasOwnProperty(t)?y(d[t]):\"transparent\"===t?new w(NaN,NaN,NaN,0):null}function y(t){return new w(t>>16&255,t>>8&255,255&t,1)}function x(t,e,r,n){return n<=0&&(t=e=r=NaN),new w(t,e,r,n)}function b(t){return t instanceof n||(t=v(t)),t?new w((t=t.rgb()).r,t.g,t.b,t.opacity):new w}function _(t,e,r,n){return 1===arguments.length?b(t):new w(t,e,r,null==n?1:n)}function w(t,e,r,n){this.r=+t,this.g=+e,this.b=+r,this.opacity=+n}function T(){return\"#\"+A(this.r)+A(this.g)+A(this.b)}function k(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?\"rgb(\":\"rgba(\")+Math.max(0,Math.min(255,Math.round(this.r)||0))+\", \"+Math.max(0,Math.min(255,Math.round(this.g)||0))+\", \"+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?\")\":\", \"+t+\")\")}function A(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?\"0\":\"\")+t.toString(16)}function M(t,e,r,n){return n<=0?t=e=r=NaN:r<=0||r>=1?t=e=NaN:e<=0&&(t=NaN),new L(t,e,r,n)}function S(t){if(t instanceof L)return new L(t.h,t.s,t.l,t.opacity);if(t instanceof n||(t=v(t)),!t)return new L;if(t instanceof L)return t;var e=(t=t.rgb()).r/255,r=t.g/255,i=t.b/255,a=Math.min(e,r,i),o=Math.max(e,r,i),s=NaN,l=o-a,c=(o+a)/2;return l?(s=e===o?(r-i)/l+6*(r0&&c<1?0:s,new L(s,l,c,t.opacity)}function E(t,e,r,n){return 1===arguments.length?S(t):new L(t,e,r,null==n?1:n)}function L(t,e,r,n){this.h=+t,this.s=+e,this.l=+r,this.opacity=+n}function C(t,e,r){return 255*(t<60?e+(r-e)*t/60:t<180?r:t<240?e+(r-e)*(240-t)/60:e)}e(n,v,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:g,formatHex:g,formatHsl:function(){return S(this).formatHsl()},formatRgb:m,toString:m}),e(w,_,r(n,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new w(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new w(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:T,formatHex:T,formatRgb:k,toString:k})),e(L,E,r(n,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new L(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new L(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*e,i=2*r-n;return new w(C(t>=240?t-240:t+120,i,n),C(t,i,n),C(t<120?t+240:t-120,i,n),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?\"hsl(\":\"hsla(\")+(this.h||0)+\", \"+100*(this.s||0)+\"%, \"+100*(this.l||0)+\"%\"+(1===t?\")\":\", \"+t+\")\")}}));var P=Math.PI/180,I=180/Math.PI,O=6/29,z=3*O*O;function D(t){if(t instanceof F)return new F(t.l,t.a,t.b,t.opacity);if(t instanceof q)return G(t);t instanceof w||(t=b(t));var e,r,n=U(t.r),i=U(t.g),a=U(t.b),o=B((.2225045*n+.7168786*i+.0606169*a)/1);return n===i&&i===a?e=r=o:(e=B((.4360747*n+.3850649*i+.1430804*a)/.96422),r=B((.0139322*n+.0971045*i+.7141733*a)/.82521)),new F(116*o-16,500*(e-o),200*(o-r),t.opacity)}function R(t,e,r,n){return 1===arguments.length?D(t):new F(t,e,r,null==n?1:n)}function F(t,e,r,n){this.l=+t,this.a=+e,this.b=+r,this.opacity=+n}function B(t){return t>.008856451679035631?Math.pow(t,1/3):t/z+4/29}function N(t){return t>O?t*t*t:z*(t-4/29)}function j(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function U(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function V(t){if(t instanceof q)return new q(t.h,t.c,t.l,t.opacity);if(t instanceof F||(t=D(t)),0===t.a&&0===t.b)return new q(NaN,0=0&&(r=t.slice(n+1),t=t.slice(0,n)),t&&!e.hasOwnProperty(t))throw new Error(\"unknown type: \"+t);return{type:t,name:r}}))}function a(t,e){for(var r,n=0,i=t.length;n0)for(var r,n,i=new Array(r),a=0;ah+c||np+c||au.index){var f=h-s.x-s.vx,m=p-s.y-s.vy,v=f*f+m*m;vt.r&&(t.r=t[e].r)}function h(){if(r){var e,i,a=r.length;for(n=new Array(a),e=0;e=c)){(t.data!==r||t.next)&&(0===f&&(d+=(f=o())*f),0===h&&(d+=(h=o())*h),d1?(null==r?u.remove(t):u.set(t,v(r)),e):u.get(t)},find:function(e,r,n){var i,a,o,s,l,c=0,u=t.length;for(null==n?n=1/0:n*=n,c=0;c1?(h.on(t,r),e):h.on(t)}}},t.forceX=function(t){var e,r,n,i=a(.1);function o(t){for(var i,a=0,o=e.length;a1?n[0]+n.slice(2):n,+t.slice(r+1)]}function r(t){return(t=e(Math.abs(t)))?t[1]:NaN}var n,i=/^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;function a(t){if(!(e=i.exec(t)))throw new Error(\"invalid format: \"+t);var e;return new o({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function o(t){this.fill=void 0===t.fill?\" \":t.fill+\"\",this.align=void 0===t.align?\">\":t.align+\"\",this.sign=void 0===t.sign?\"-\":t.sign+\"\",this.symbol=void 0===t.symbol?\"\":t.symbol+\"\",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?\"\":t.type+\"\"}function s(t,r){var n=e(t,r);if(!n)return t+\"\";var i=n[0],a=n[1];return a<0?\"0.\"+new Array(-a).join(\"0\")+i:i.length>a+1?i.slice(0,a+1)+\".\"+i.slice(a+1):i+new Array(a-i.length+2).join(\"0\")}a.prototype=o.prototype,o.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?\"0\":\"\")+(void 0===this.width?\"\":Math.max(1,0|this.width))+(this.comma?\",\":\"\")+(void 0===this.precision?\"\":\".\"+Math.max(0,0|this.precision))+(this.trim?\"~\":\"\")+this.type};var l={\"%\":function(t,e){return(100*t).toFixed(e)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+\"\"},d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString(\"en\").replace(/,/g,\"\"):t.toString(10)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},g:function(t,e){return t.toPrecision(e)},o:function(t){return Math.round(t).toString(8)},p:function(t,e){return s(100*t,e)},r:s,s:function(t,r){var i=e(t,r);if(!i)return t+\"\";var a=i[0],o=i[1],s=o-(n=3*Math.max(-8,Math.min(8,Math.floor(o/3))))+1,l=a.length;return s===l?a:s>l?a+new Array(s-l+1).join(\"0\"):s>0?a.slice(0,s)+\".\"+a.slice(s):\"0.\"+new Array(1-s).join(\"0\")+e(t,Math.max(0,r+s-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}};function c(t){return t}var u,f=Array.prototype.map,h=[\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"\\xb5\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];function p(t){var e,i,o=void 0===t.grouping||void 0===t.thousands?c:(e=f.call(t.grouping,Number),i=t.thousands+\"\",function(t,r){for(var n=t.length,a=[],o=0,s=e[0],l=0;n>0&&s>0&&(l+s+1>r&&(s=Math.max(1,r-l)),a.push(t.substring(n-=s,n+s)),!((l+=s+1)>r));)s=e[o=(o+1)%e.length];return a.reverse().join(i)}),s=void 0===t.currency?\"\":t.currency[0]+\"\",u=void 0===t.currency?\"\":t.currency[1]+\"\",p=void 0===t.decimal?\".\":t.decimal+\"\",d=void 0===t.numerals?c:function(t){return function(e){return e.replace(/[0-9]/g,(function(e){return t[+e]}))}}(f.call(t.numerals,String)),g=void 0===t.percent?\"%\":t.percent+\"\",m=void 0===t.minus?\"-\":t.minus+\"\",v=void 0===t.nan?\"NaN\":t.nan+\"\";function y(t){var e=(t=a(t)).fill,r=t.align,i=t.sign,c=t.symbol,f=t.zero,y=t.width,x=t.comma,b=t.precision,_=t.trim,w=t.type;\"n\"===w?(x=!0,w=\"g\"):l[w]||(void 0===b&&(b=12),_=!0,w=\"g\"),(f||\"0\"===e&&\"=\"===r)&&(f=!0,e=\"0\",r=\"=\");var T=\"$\"===c?s:\"#\"===c&&/[boxX]/.test(w)?\"0\"+w.toLowerCase():\"\",k=\"$\"===c?u:/[%p]/.test(w)?g:\"\",A=l[w],M=/[defgprs%]/.test(w);function S(t){var a,s,l,c=T,u=k;if(\"c\"===w)u=A(t)+u,t=\"\";else{var g=(t=+t)<0||1/t<0;if(t=isNaN(t)?v:A(Math.abs(t),b),_&&(t=function(t){t:for(var e,r=t.length,n=1,i=-1;n0&&(i=0)}return i>0?t.slice(0,i)+t.slice(e+1):t}(t)),g&&0==+t&&\"+\"!==i&&(g=!1),c=(g?\"(\"===i?i:m:\"-\"===i||\"(\"===i?\"\":i)+c,u=(\"s\"===w?h[8+n/3]:\"\")+u+(g&&\"(\"===i?\")\":\"\"),M)for(a=-1,s=t.length;++a(l=t.charCodeAt(a))||l>57){u=(46===l?p+t.slice(a+1):t.slice(a))+u,t=t.slice(0,a);break}}x&&!f&&(t=o(t,1/0));var S=c.length+t.length+u.length,E=S>1)+c+t+u+E.slice(S);break;default:t=E+c+t+u}return d(t)}return b=void 0===b?6:/[gprs]/.test(w)?Math.max(1,Math.min(21,b)):Math.max(0,Math.min(20,b)),S.toString=function(){return t+\"\"},S}return{format:y,formatPrefix:function(t,e){var n=y(((t=a(t)).type=\"f\",t)),i=3*Math.max(-8,Math.min(8,Math.floor(r(e)/3))),o=Math.pow(10,-i),s=h[8+i/3];return function(t){return n(o*t)+s}}}}function d(e){return u=p(e),t.format=u.format,t.formatPrefix=u.formatPrefix,u}d({decimal:\".\",thousands:\",\",grouping:[3],currency:[\"$\",\"\"],minus:\"-\"}),t.FormatSpecifier=o,t.formatDefaultLocale=d,t.formatLocale=p,t.formatSpecifier=a,t.precisionFixed=function(t){return Math.max(0,-r(Math.abs(t)))},t.precisionPrefix=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(r(e)/3)))-r(Math.abs(t)))},t.precisionRound=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,r(e)-r(t))+1},Object.defineProperty(t,\"__esModule\",{value:!0})}))},{}],113:[function(t,e,r){!function(n,i){\"object\"==typeof r&&void 0!==e?i(r,t(\"d3-geo\"),t(\"d3-array\")):i(n.d3=n.d3||{},n.d3,n.d3)}(this,(function(t,e,r){\"use strict\";var n=Math.abs,i=Math.atan,a=Math.atan2,o=Math.cos,s=Math.exp,l=Math.floor,c=Math.log,u=Math.max,f=Math.min,h=Math.pow,p=Math.round,d=Math.sign||function(t){return t>0?1:t<0?-1:0},g=Math.sin,m=Math.tan,v=1e-6,y=Math.PI,x=y/2,b=y/4,_=Math.SQRT1_2,w=L(2),T=L(y),k=2*y,A=180/y,M=y/180;function S(t){return t>1?x:t<-1?-x:Math.asin(t)}function E(t){return t>1?0:t<-1?y:Math.acos(t)}function L(t){return t>0?Math.sqrt(t):0}function C(t){return(s(t)-s(-t))/2}function P(t){return(s(t)+s(-t))/2}function I(t){var e=m(t/2),r=2*c(o(t/2))/(e*e);function i(t,e){var n=o(t),i=o(e),a=g(e),s=i*n,l=-((1-s?c((1+s)/2)/(1-s):-.5)+r/(1+s));return[l*i*g(t),l*a]}return i.invert=function(e,i){var s,l=L(e*e+i*i),u=-t/2,f=50;if(!l)return[0,0];do{var h=u/2,p=o(h),d=g(h),m=d/p,y=-c(n(p));u-=s=(2/m*y-r*m-l)/(-y/(d*d)+1-r/(2*p*p))*(p<0?.7:1)}while(n(s)>v&&--f>0);var x=g(u);return[a(e*x,l*o(u)),S(i*x/l)]},i}function O(t,e){var r=o(e),n=function(t){return t?t/Math.sin(t):1}(E(r*o(t/=2)));return[2*r*g(t)*n,g(e)*n]}function z(t){var e=g(t),r=o(t),i=t>=0?1:-1,s=m(i*t),l=(1+e-r)/2;function c(t,n){var c=o(n),u=o(t/=2);return[(1+c)*g(t),(i*n>-a(u,s)-.001?0:10*-i)+l+g(n)*r-(1+c)*e*u]}return c.invert=function(t,c){var u=0,f=0,h=50;do{var p=o(u),d=g(u),m=o(f),y=g(f),x=1+m,b=x*d-t,_=l+y*r-x*e*p-c,w=x*p/2,T=-d*y,k=e*x*d/2,A=r*m+e*p*y,M=T*k-A*w,S=(_*T-b*A)/M/2,E=(b*k-_*w)/M;n(E)>2&&(E/=2),u-=S,f-=E}while((n(S)>v||n(E)>v)&&--h>0);return i*f>-a(o(u),s)-.001?[2*u,f]:null},c}function D(t,e){var r=m(e/2),n=L(1-r*r),i=1+n*o(t/=2),a=g(t)*n/i,s=r/i,l=a*a,c=s*s;return[4/3*a*(3+l-3*c),4/3*s*(3+3*l-c)]}O.invert=function(t,e){if(!(t*t+4*e*e>y*y+v)){var r=t,i=e,a=25;do{var s,l=g(r),c=g(r/2),u=o(r/2),f=g(i),h=o(i),p=g(2*i),d=f*f,m=h*h,x=c*c,b=1-m*u*u,_=b?E(h*u)*L(s=1/b):s=0,w=2*_*h*c-t,T=_*f-e,k=s*(m*x+_*h*u*d),A=s*(.5*l*p-2*_*f*c),M=.25*s*(p*c-_*f*m*l),S=s*(d*u+_*x*h),C=A*M-S*k;if(!C)break;var P=(T*A-w*S)/C,I=(w*M-T*k)/C;r-=P,i-=I}while((n(P)>v||n(I)>v)&&--a>0);return[r,i]}},D.invert=function(t,e){if(e*=3/8,!(t*=3/8)&&n(e)>1)return null;var r=1+t*t+e*e,i=L((r-L(r*r-4*e*e))/2),s=S(i)/3,l=i?function(t){return c(t+L(t*t-1))}(n(e/i))/3:function(t){return c(t+L(t*t+1))}(n(t))/3,u=o(s),f=P(l),h=f*f-u*u;return[2*d(t)*a(C(l)*u,.25-h),2*d(e)*a(f*g(s),.25+h)]};var R=L(8),F=c(1+w);function B(t,e){var r=n(e);return rx){var l=a(s[1],s[0]),c=L(s[0]*s[0]+s[1]*s[1]),u=r*p((l-x)/r)+x,f=a(g(l-=u),2-o(l));l=u+S(y/c*g(f))-f,s[0]=c*o(l),s[1]=c*g(l)}return s}return s.invert=function(t,n){var s=L(t*t+n*n);if(s>x){var l=a(n,t),c=r*p((l-x)/r)+x,u=l>c?-1:1,f=s*o(c-l),h=1/m(u*E((f-y)/L(y*(y-2*f)+s*s)));l=c+2*i((h+u*L(h*h-3))/3),t=s*o(l),n=s*g(l)}return e.geoAzimuthalEquidistantRaw.invert(t,n)},s}function j(t,r){if(arguments.length<2&&(r=t),1===r)return e.geoAzimuthalEqualAreaRaw;if(r===1/0)return U;function n(n,i){var a=e.geoAzimuthalEqualAreaRaw(n/r,i);return a[0]*=t,a}return n.invert=function(n,i){var a=e.geoAzimuthalEqualAreaRaw.invert(n/t,i);return a[0]*=r,a},n}function U(t,e){return[t*o(e)/o(e/=2),2*g(e)]}function V(t,e,r){var i,a,o,s=100;r=void 0===r?0:+r,e=+e;do{(a=t(r))===(o=t(r+v))&&(o=a+v),r-=i=-1*v*(a-e)/(a-o)}while(s-- >0&&n(i)>v);return s<0?NaN:r}function H(t,e,r){return void 0===e&&(e=40),void 0===r&&(r=1e-12),function(i,a,o,s){var l,c,u;o=void 0===o?0:+o,s=void 0===s?0:+s;for(var f=0;fl)o-=c/=2,s-=u/=2;else{l=g;var m=(o>0?-1:1)*r,v=(s>0?-1:1)*r,y=t(o+m,s),x=t(o,s+v),b=(y[0]-h[0])/m,_=(y[1]-h[1])/m,w=(x[0]-h[0])/v,T=(x[1]-h[1])/v,k=T*b-_*w,A=(n(k)<.5?.5:1)/k;if(o+=c=(d*w-p*T)*A,s+=u=(p*_-d*b)*A,n(c)0&&(i[1]*=1+a/1.5*i[0]*i[0]),i}return e.invert=H(e),e}function G(t,e){var r,i=t*g(e),a=30;do{e-=r=(e+g(e)-i)/(1+o(e))}while(n(r)>v&&--a>0);return e/2}function Y(t,e,r){function n(n,i){return[t*n*o(i=G(r,i)),e*g(i)]}return n.invert=function(n,i){return i=S(i/e),[n/(t*o(i)),S((2*i+g(2*i))/r)]},n}B.invert=function(t,e){if((a=n(e))1e-12&&--u>0);return[t/(o(l)*(R-1/g(l))),d(e)*l]},U.invert=function(t,e){var r=2*S(e/2);return[t*o(r/2)/o(r),r]};var W=Y(w/x,w,y);var X=2.00276,Z=1.11072;function J(t,e){var r=G(y,e);return[X*t/(1/o(e)+Z/o(r)),(e+w*g(r))/X]}function K(t){var r=0,n=e.geoProjectionMutator(t),i=n(r);return i.parallel=function(t){return arguments.length?n(r=t*M):r*A},i}function Q(t,e){return[t*o(e),e]}function $(t){if(!t)return Q;var e=1/m(t);function r(r,n){var i=e+t-n,a=i?r*o(n)/i:i;return[i*g(a),e-i*o(a)]}return r.invert=function(r,n){var i=L(r*r+(n=e-n)*n),s=e+t-i;return[i/o(s)*a(r,n),s]},r}function tt(t){function e(e,r){var n=x-r,i=n?e*t*g(n)/n:n;return[n*g(i)/t,x-n*o(i)]}return e.invert=function(e,r){var n=e*t,i=x-r,o=L(n*n+i*i),s=a(n,i);return[(o?o/g(o):1)*s/t,x-o]},e}J.invert=function(t,e){var r,i,a=X*e,s=e<0?-b:b,l=25;do{i=a-w*g(s),s-=r=(g(2*s)+2*s-y*g(i))/(2*o(2*s)+2+y*o(i)*w*o(s))}while(n(r)>v&&--l>0);return i=a-w*g(s),[t*(1/o(i)+Z/o(s))/X,i]},Q.invert=function(t,e){return[t/o(e),e]};var et=Y(1,4/y,y);function rt(t,e,r,i,s,l){var c,u=o(l);if(n(t)>1||n(l)>1)c=E(r*s+e*i*u);else{var f=g(t/2),h=g(l/2);c=2*S(L(f*f+e*i*h*h))}return n(c)>v?[c,a(i*g(l),e*s-r*i*u)]:[0,0]}function nt(t,e,r){return E((t*t+e*e-r*r)/(2*t*e))}function it(t){return t-2*y*l((t+y)/(2*y))}function at(t,e,r){for(var n,i=[[t[0],t[1],g(t[1]),o(t[1])],[e[0],e[1],g(e[1]),o(e[1])],[r[0],r[1],g(r[1]),o(r[1])]],a=i[2],s=0;s<3;++s,a=n)n=i[s],a.v=rt(n[1]-a[1],a[3],a[2],n[3],n[2],n[0]-a[0]),a.point=[0,0];var l=nt(i[0].v[0],i[2].v[0],i[1].v[0]),c=nt(i[0].v[0],i[1].v[0],i[2].v[0]),u=y-l;i[2].point[1]=0,i[0].point[0]=-(i[1].point[0]=i[0].v[0]/2);var f=[i[2].point[0]=i[0].point[0]+i[2].v[0]*o(l),2*(i[0].point[1]=i[1].point[1]=i[2].v[0]*g(l))];return function(t,e){var r,n=g(e),a=o(e),s=new Array(3);for(r=0;r<3;++r){var l=i[r];if(s[r]=rt(e-l[1],l[3],l[2],a,n,t-l[0]),!s[r][0])return l.point;s[r][1]=it(s[r][1]-l.v[1])}var h=f.slice();for(r=0;r<3;++r){var p=2==r?0:r+1,d=nt(i[r].v[0],s[r][0],s[p][0]);s[r][1]<0&&(d=-d),r?1==r?(d=c-d,h[0]-=s[r][0]*o(d),h[1]-=s[r][0]*g(d)):(d=u-d,h[0]+=s[r][0]*o(d),h[1]+=s[r][0]*g(d)):(h[0]+=s[r][0]*o(d),h[1]-=s[r][0]*g(d))}return h[0]/=3,h[1]/=3,h}}function ot(t){return t[0]*=M,t[1]*=M,t}function st(t,r,n){var i=e.geoCentroid({type:\"MultiPoint\",coordinates:[t,r,n]}),a=[-i[0],-i[1]],o=e.geoRotation(a),s=at(ot(o(t)),ot(o(r)),ot(o(n)));s.invert=H(s);var l=e.geoProjection(s).rotate(a),c=l.center;return delete l.rotate,l.center=function(t){return arguments.length?c(o(t)):o.invert(c())},l.clipAngle(90)}function lt(t,e){var r=L(1-g(e));return[2/T*t*r,T*(1-r)]}function ct(t){var e=m(t);function r(t,r){return[t,(t?t/g(t):1)*(g(r)*o(t)-e*o(r))]}return r.invert=e?function(t,r){t&&(r*=g(t)/t);var n=o(t);return[t,2*a(L(n*n+e*e-r*r)-n,e-r)]}:function(t,e){return[t,S(t?e*m(t)/t:e)]},r}lt.invert=function(t,e){var r=(r=e/T-1)*r;return[r>0?t*L(y/r)/2:0,S(1-r)]};var ut=L(3);function ft(t,e){return[ut*t*(2*o(2*e/3)-1)/T,ut*T*g(e/3)]}function ht(t){var e=o(t);function r(t,r){return[t*e,g(r)/e]}return r.invert=function(t,r){return[t/e,S(r*e)]},r}function pt(t){var e=o(t);function r(t,r){return[t*e,(1+e)*m(r/2)]}return r.invert=function(t,r){return[t/e,2*i(r/(1+e))]},r}function dt(t,e){var r=L(8/(3*y));return[r*t*(1-n(e)/y),r*e]}function gt(t,e){var r=L(4-3*g(n(e)));return[2/L(6*y)*t*r,d(e)*L(2*y/3)*(2-r)]}function mt(t,e){var r=L(y*(4+y));return[2/r*t*(1+L(1-4*e*e/(y*y))),4/r*e]}function vt(t,e){var r=(2+x)*g(e);e/=2;for(var i=0,a=1/0;i<10&&n(a)>v;i++){var s=o(e);e-=a=(e+g(e)*(s+2)-r)/(2*s*(1+s))}return[2/L(y*(4+y))*t*(1+o(e)),2*L(y/(4+y))*g(e)]}function yt(t,e){return[t*(1+o(e))/L(2+y),2*e/L(2+y)]}function xt(t,e){for(var r=(1+x)*g(e),i=0,a=1/0;i<10&&n(a)>v;i++)e-=a=(e+g(e)-r)/(1+o(e));return r=L(2+y),[t*(1+o(e))/r,2*e/r]}ft.invert=function(t,e){var r=3*S(e/(ut*T));return[T*t/(ut*(2*o(2*r/3)-1)),r]},dt.invert=function(t,e){var r=L(8/(3*y)),i=e/r;return[t/(r*(1-n(i)/y)),i]},gt.invert=function(t,e){var r=2-n(e)/L(2*y/3);return[t*L(6*y)/(2*r),d(e)*S((4-r*r)/3)]},mt.invert=function(t,e){var r=L(y*(4+y))/2;return[t*r/(1+L(1-e*e*(4+y)/(4*y))),e*r/2]},vt.invert=function(t,e){var r=e*L((4+y)/y)/2,n=S(r),i=o(n);return[t/(2/L(y*(4+y))*(1+i)),S((n+r*(i+2))/(2+x))]},yt.invert=function(t,e){var r=L(2+y),n=e*r/2;return[r*t/(1+o(n)),n]},xt.invert=function(t,e){var r=1+x,n=L(r/2);return[2*t*n/(1+o(e*=n)),S((e+g(e))/r)]};var bt=3+2*w;function _t(t,e){var r=g(t/=2),n=o(t),a=L(o(e)),s=o(e/=2),l=g(e)/(s+w*n*a),u=L(2/(1+l*l)),f=L((w*s+(n+r)*a)/(w*s+(n-r)*a));return[bt*(u*(f-1/f)-2*c(f)),bt*(u*l*(f+1/f)-2*i(l))]}_t.invert=function(t,e){if(!(r=D.invert(t/1.2,1.065*e)))return null;var r,a=r[0],s=r[1],l=20;t/=bt,e/=bt;do{var h=a/2,p=s/2,d=g(h),m=o(h),y=g(p),b=o(p),T=o(s),k=L(T),A=y/(b+w*m*k),M=A*A,S=L(2/(1+M)),E=(w*b+(m+d)*k)/(w*b+(m-d)*k),C=L(E),P=C-1/C,I=C+1/C,O=S*P-2*c(C)-t,z=S*A*I-2*i(A)-e,R=y&&_*k*d*M/y,F=(w*m*b+k)/(2*(b+w*m*k)*(b+w*m*k)*k),B=-.5*A*S*S*S,N=B*R,j=B*F,U=(U=2*b+w*k*(m-d))*U*C,V=(w*m*b*k+T)/U,H=-w*d*y/(k*U),q=P*N-2*V/C+S*(V+V/E),G=P*j-2*H/C+S*(H+H/E),Y=A*I*N-2*R/(1+M)+S*I*R+S*A*(V-V/E),W=A*I*j-2*F/(1+M)+S*I*F+S*A*(H-H/E),X=G*Y-W*q;if(!X)break;var Z=(z*G-O*W)/X,J=(O*Y-z*q)/X;a-=Z,s=u(-x,f(x,s-J))}while((n(Z)>v||n(J)>v)&&--l>0);return n(n(s)-x)s){var d=L(h),m=a(f,u),b=i*p(m/i),_=m-b,w=t*o(_),T=(t*g(_)-_*g(w))/(x-w),k=Lt(_,T),A=(y-t)/Ct(k,w,y);u=d;var M,S=50;do{u-=M=(t+Ct(k,w,u)*A-d)/(k(u)*A)}while(n(M)>v&&--S>0);f=_*g(u),us){var u=L(c),f=a(l,r),h=i*p(f/i),d=f-h;r=u*o(d),l=u*g(d);for(var m=r-x,v=g(r),b=l/v,_=rv||n(p)>v)&&--x>0);return[d,m]},u}Tt.invert=function(t,e){var r=e/(1+wt);return[t&&t/(wt*L(1-r*r)),2*i(r)]},kt.invert=function(t,e){var r=i(e/T),n=o(r),a=2*r;return[t*T/2/(o(a)*n*n),a]};var It=Pt(2.8284,-1.6988,.75432,-.18071,1.76003,-.38914,.042555);var Ot=Pt(2.583819,-.835827,.170354,-.038094,1.543313,-.411435,.082742);var zt=Pt(5/6*y,-.62636,-.0344,0,1.3493,-.05524,0,.045);function Dt(t,e){var r=t*t,n=e*e;return[t*(1-.162388*n)*(.87-952426e-9*r*r),e*(1+n/12)]}Dt.invert=function(t,e){var r,i=t,a=e,o=50;do{var s=a*a;a-=r=(a*(1+s/12)-e)/(1+s/4)}while(n(r)>v&&--o>0);o=50,t/=1-.162388*s;do{var l=(l=i*i)*l;i-=r=(i*(.87-952426e-9*l)-t)/(.87-.00476213*l)}while(n(r)>v&&--o>0);return[i,a]};var Rt=Pt(2.6516,-.76534,.19123,-.047094,1.36289,-.13965,.031762);function Ft(t){var e=t(x,0)[0]-t(-x,0)[0];function r(r,n){var i=r>0?-.5:.5,a=t(r+i*y,n);return a[0]-=i*e,a}return t.invert&&(r.invert=function(r,n){var i=r>0?-.5:.5,a=t.invert(r+i*e,n),o=a[0]-i*y;return o<-y?o+=2*y:o>y&&(o-=2*y),a[0]=o,a}),r}function Bt(t,e){var r=d(t),i=d(e),s=o(e),l=o(t)*s,c=g(t)*s,u=g(i*e);t=n(a(c,u)),e=S(l),n(t-x)>v&&(t%=x);var f=function(t,e){if(e===x)return[0,0];var r,i,a=g(e),s=a*a,l=s*s,c=1+l,u=1+3*l,f=1-l,h=S(1/L(c)),p=f+s*c*h,d=(1-a)/p,m=L(d),b=d*c,_=L(b),w=m*f;if(0===t)return[0,-(w+s*_)];var T,k=o(e),A=1/k,M=2*a*k,E=(-p*k-(-3*s+h*u)*M*(1-a))/(p*p),C=-A*M,P=-A*(s*c*E+d*u*M),I=-2*A*(f*(.5*E/m)-2*s*m*M),O=4*t/y;if(t>.222*y||e.175*y){if(r=(w+s*L(b*(1+l)-w*w))/(1+l),t>y/4)return[r,r];var z=r,D=.5*r;r=.5*(D+z),i=50;do{var R=L(b-r*r),F=r*(I+C*R)+P*S(r/_)-O;if(!F)break;F<0?D=r:z=r,r=.5*(D+z)}while(n(z-D)>v&&--i>0)}else{r=v,i=25;do{var B=r*r,N=L(b-B),j=I+C*N,U=r*j+P*S(r/_)-O,V=j+(P-C*B)/N;r-=T=N?U/V:0}while(n(T)>v&&--i>0)}return[r,-w-s*L(b-r*r)]}(t>y/4?x-t:t,e);return t>y/4&&(u=f[0],f[0]=-f[1],f[1]=-u),f[0]*=r,f[1]*=-i,f}function Nt(t,e){var r,a,l,c,u,f;if(e=1-v)return r=(1-e)/4,l=1/(a=P(t)),[(c=((f=s(2*(f=t)))-1)/(f+1))+r*((u=a*C(t))-t)/(a*a),l-r*c*l*(u-t),l+r*c*l*(u+t),2*i(s(t))-x+r*(u-t)/a];var h=[1,0,0,0,0,0,0,0,0],p=[L(e),0,0,0,0,0,0,0,0],d=0;for(a=L(1-e),u=1;n(p[d]/h[d])>v&&d<8;)r=h[d++],p[d]=(r-a)/2,h[d]=(r+a)/2,a=L(r*a),u*=2;l=u*h[d]*t;do{l=(S(c=p[d]*g(a=l)/h[d])+l)/2}while(--d);return[g(l),c=o(l),c/o(l-a),l]}function jt(t,e){if(!e)return t;if(1===e)return c(m(t/2+b));for(var r=1,a=L(1-e),o=L(e),s=0;n(o)>v;s++){if(t%y){var l=i(a*m(t)/r);l<0&&(l+=y),t+=l+~~(t/y)*y}else t+=t;o=(r+a)/2,a=L(r*a),o=((r=o)-a)/2}return t/(h(2,s)*r)}function Ut(t,e){var r=(w-1)/(w+1),l=L(1-r*r),u=jt(x,l*l),f=c(m(y/4+n(e)/2)),h=s(-1*f)/L(r),p=function(t,e){var r=t*t,n=e+1,i=1-r-e*e;return[.5*((t>=0?x:-x)-a(i,2*t)),-.25*c(i*i+4*r)+.5*c(n*n+r)]}(h*o(-1*t),h*g(-1*t)),v=function(t,e,r){var a=n(t),o=C(n(e));if(a){var s=1/g(a),l=1/(m(a)*m(a)),c=-(l+r*(o*o*s*s)-1+r),u=(-c+L(c*c-4*((r-1)*l)))/2;return[jt(i(1/L(u)),r)*d(t),jt(i(L((u/l-1)/r)),1-r)*d(e)]}return[0,jt(i(o),1-r)*d(e)]}(p[0],p[1],l*l);return[-v[1],(e>=0?1:-1)*(.5*u-v[0])]}function Vt(t){var e=g(t),r=o(t),i=Ht(t);function s(t,a){var s=i(t,a);t=s[0],a=s[1];var l=g(a),c=o(a),u=o(t),f=E(e*l+r*c*u),h=g(f),p=n(h)>v?f/h:1;return[p*r*g(t),(n(t)>x?p:-p)*(e*c-r*l*u)]}return i.invert=Ht(-t),s.invert=function(t,r){var n=L(t*t+r*r),s=-g(n),l=o(n),c=n*l,u=-r*s,f=n*e,h=L(c*c+u*u-f*f),p=a(c*f+u*h,u*f-c*h),d=(n>x?-1:1)*a(t*s,n*o(p)*l+r*g(p)*s);return i.invert(d,p)},s}function Ht(t){var e=g(t),r=o(t);return function(t,n){var i=o(n),s=o(t)*i,l=g(t)*i,c=g(n);return[a(l,s*r-c*e),S(c*r+s*e)]}}Bt.invert=function(t,e){n(t)>1&&(t=2*d(t)-t),n(e)>1&&(e=2*d(e)-e);var r=d(t),i=d(e),s=-r*t,l=-i*e,c=l/s<1,u=function(t,e){var r=0,i=1,a=.5,s=50;for(;;){var l=a*a,c=L(a),u=S(1/L(1+l)),f=1-l+a*(1+l)*u,h=(1-c)/f,p=L(h),d=h*(1+l),g=p*(1-l),m=L(d-t*t),v=e+g+a*m;if(n(i-r)<1e-12||0==--s||0===v)break;v>0?r=a:i=a,a=.5*(r+i)}if(!s)return null;var x=S(c),b=o(x),_=1/b,w=2*c*b,T=(-f*b-(-3*a+u*(1+3*l))*w*(1-c))/(f*f);return[y/4*(t*(-2*_*(.5*T/p*(1-l)-2*a*p*w)+-_*w*m)+-_*(a*(1+l)*T+h*(1+3*l)*w)*S(t/L(d))),x]}(c?l:s,c?s:l),f=u[0],h=u[1],p=o(h);return c&&(f=-x-f),[r*(a(g(f)*p,-g(h))+y),i*S(o(f)*p)]},Ut.invert=function(t,e){var r,n,o,l,u,f,h=(w-1)/(w+1),p=L(1-h*h),d=jt(x,p*p),g=(n=-t,o=p*p,(r=.5*d-e)?(l=Nt(r,o),n?(f=(u=Nt(n,1-o))[1]*u[1]+o*l[0]*l[0]*u[0]*u[0],[[l[0]*u[2]/f,l[1]*l[2]*u[0]*u[1]/f],[l[1]*u[1]/f,-l[0]*l[2]*u[0]*u[2]/f],[l[2]*u[1]*u[2]/f,-o*l[0]*l[1]*u[0]/f]]):[[l[0],0],[l[1],0],[l[2],0]]):[[0,(u=Nt(n,1-o))[0]/u[1]],[1/u[1],0],[u[2]/u[1],0]]),m=function(t,e){var r=e[0]*e[0]+e[1]*e[1];return[(t[0]*e[0]+t[1]*e[1])/r,(t[1]*e[0]-t[0]*e[1])/r]}(g[0],g[1]);return[a(m[1],m[0])/-1,2*i(s(-.5*c(h*m[0]*m[0]+h*m[1]*m[1])))-x]};var qt=S(1-1/3)*A,Gt=ht(0);function Yt(t){var e=qt*M,r=lt(y,e)[0]-lt(-y,e)[0],i=Gt(0,e)[1],a=lt(0,e)[1],o=T-a,s=k/t,c=4/k,h=i+o*o*4/k;function p(p,d){var g,m=n(d);if(m>e){var v=f(t-1,u(0,l((p+y)/s)));(g=lt(p+=y*(t-1)/t-v*s,m))[0]=g[0]*k/r-k*(t-1)/(2*t)+v*k/t,g[1]=i+4*(g[1]-a)*o/k,d<0&&(g[1]=-g[1])}else g=Gt(p,d);return g[0]*=c,g[1]/=h,g}return p.invert=function(e,p){e/=c;var d=n(p*=h);if(d>i){var g=f(t-1,u(0,l((e+y)/s)));e=(e+y*(t-1)/t-g*s)*r/k;var m=lt.invert(e,.25*(d-i)*k/o+a);return m[0]-=y*(t-1)/t-g*s,p<0&&(m[1]=-m[1]),m}return Gt.invert(e,p)},p}function Wt(t,e){return[t,1&e?90-v:qt]}function Xt(t,e){return[t,1&e?-90+v:-qt]}function Zt(t){return[t[0]*(1-v),t[1]]}function Jt(t){var e,r=1+t,i=S(g(1/r)),s=2*L(y/(e=y+4*i*r)),l=.5*s*(r+L(t*(2+t))),c=t*t,u=r*r;function f(f,h){var p,d,m=1-g(h);if(m&&m<2){var v,b=x-h,_=25;do{var w=g(b),T=o(b),k=i+a(w,r-T),A=1+u-2*r*T;b-=v=(b-c*i-r*w+A*k-.5*m*e)/(2*r*w*k)}while(n(v)>1e-12&&--_>0);p=s*L(A),d=f*k/y}else p=s*(t+m),d=f*i/y;return[p*g(d),l-p*o(d)]}return f.invert=function(t,n){var o=t*t+(n-=l)*n,f=(1+u-o/(s*s))/(2*r),h=E(f),p=g(h),d=i+a(p,r-f);return[S(t/L(o))*y/d,S(1-2*(h-c*i-r*p+(1+u-2*r*f)*d)/e)]},f}function Kt(t,e){return e>-.7109889596207567?((t=W(t,e))[1]+=.0528035274542,t):Q(t,e)}function Qt(t,e){return n(e)>.7109889596207567?((t=W(t,e))[1]-=e>0?.0528035274542:-.0528035274542,t):Q(t,e)}function $t(t,e,r,n){var i=L(4*y/(2*r+(1+t-e/2)*g(2*r)+(t+e)/2*g(4*r)+e/2*g(6*r))),a=L(n*g(r)*L((1+t*o(2*r)+e*o(4*r))/(1+t+e))),s=r*c(1);function l(r){return L(1+t*o(2*r)+e*o(4*r))}function c(n){var i=n*r;return(2*i+(1+t-e/2)*g(2*i)+(t+e)/2*g(4*i)+e/2*g(6*i))/r}function u(t){return l(t)*g(t)}var f=function(t,e){var n=r*V(c,s*g(e)/r,e/y);isNaN(n)&&(n=r*d(e));var u=i*l(n);return[u*a*t/y*o(n),u/a*g(n)]};return f.invert=function(t,e){var n=V(u,e*a/i);return[t*y/(o(n)*i*a*l(n)),S(r*c(n/r)/s)]},0===r&&(i=L(n/y),(f=function(t,e){return[t*i,g(e)/i]}).invert=function(t,e){return[t/i,S(e*i)]}),f}function te(t,e,r,n,i){void 0===n&&(n=1e-8),void 0===i&&(i=20);var a=t(e),o=t(.5*(e+r)),s=t(r);return function t(e,r,n,i,a,o,s,l,c,u,f){if(f.nanEncountered)return NaN;var h,p,d,g,m,v,y,x,b,_;if(p=e(r+.25*(h=n-r)),d=e(n-.25*h),isNaN(p))f.nanEncountered=!0;else{if(!isNaN(d))return _=((v=(g=h*(i+4*p+a)/12)+(m=h*(a+4*d+o)/12))-s)/15,u>c?(f.maxDepthCount++,v+_):Math.abs(_)t?r=n:e=n,n=e+r>>1}while(n>e);var i=c[n+1]-c[n];return i&&(i=(t-c[n+1])/i),(n+1+i)/s}var p=2*f(1)/y*o/r,m=function(t,e){var r=f(n(g(e))),a=i(r)*t;return r/=p,[a,e>=0?r:-r]};return m.invert=function(t,e){var r;return n(e*=p)<1&&(r=d(e)*S(a(n(e))*o)),[t/i(n(e)),r]},m}function re(t,e){return n(t[0]-e[0])=0;--l)n=(e=t[1][l])[0][0],i=e[0][1],a=e[1][1],o=e[2][0],s=e[2][1],c.push(ne([[o-v,s-v],[o-v,a+v],[n+v,a+v],[n+v,i-v]],30));return{type:\"Polygon\",coordinates:[r.merge(c)]}}function ae(t,r,n){var i,a;function o(e,n){for(var i=n<0?-1:1,a=r[+(n<0)],o=0,s=a.length-1;oa[o][2][0];++o);var l=t(e-a[o][1][0],n);return l[0]+=t(a[o][1][0],i*n>i*a[o][0][1]?a[o][0][1]:n)[0],l}n?o.invert=n(o):t.invert&&(o.invert=function(e,n){for(var i=a[+(n<0)],s=r[+(n<0)],l=0,c=i.length;lo&&(r=a,a=o,o=r),[[n,a],[i,o]]}))})),s):r.map((function(t){return t.map((function(t){return[[t[0][0]*A,t[0][1]*A],[t[1][0]*A,t[1][1]*A],[t[2][0]*A,t[2][1]*A]]}))}))},null!=r&&s.lobes(r),s}Kt.invert=function(t,e){return e>-.7109889596207567?W.invert(t,e-.0528035274542):Q.invert(t,e)},Qt.invert=function(t,e){return n(e)>.7109889596207567?W.invert(t,e+(e>0?.0528035274542:-.0528035274542)):Q.invert(t,e)};var oe=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];var se=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];var le=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];var ce=[[[[-180,0],[-90,90],[0,0]],[[0,0],[90,90],[180,0]]],[[[-180,0],[-90,-90],[0,0]],[[0,0],[90,-90],[180,0]]]];var ue=[[[[-180,35],[-30,90],[0,35]],[[0,35],[30,90],[180,35]]],[[[-180,-10],[-102,-90],[-65,-10]],[[-65,-10],[5,-90],[77,-10]],[[77,-10],[103,-90],[180,-10]]]];var fe=[[[[-180,0],[-110,90],[-40,0]],[[-40,0],[0,90],[40,0]],[[40,0],[110,90],[180,0]]],[[[-180,0],[-110,-90],[-40,0]],[[-40,0],[0,-90],[40,0]],[[40,0],[110,-90],[180,0]]]];function he(t,e){return[3/k*t*L(y*y/3-e*e),e]}function pe(t){function e(e,r){if(n(n(r)-x)2)return null;var o=(e/=2)*e,s=(r/=2)*r,l=2*r/(1+o+s);return l=h((1+l)/(1-l),1/t),[a(2*e,1-o-s)/t,S((l-1)/(l+1))]},e}he.invert=function(t,e){return[k/3*t/L(y*y/3-e*e),e]};var de=y/w;function ge(t,e){return[t*(1+L(o(e)))/2,e/(o(e/2)*o(t/6))]}function me(t,e){var r=t*t,n=e*e;return[t*(.975534+n*(-.0143059*r-.119161+-.0547009*n)),e*(1.00384+r*(.0802894+-.02855*n+199025e-9*r)+n*(.0998909+-.0491032*n))]}function ve(t,e){return[g(t)/o(e),m(e)*o(t)]}function ye(t){var e=o(t),r=m(b+t/2);function i(i,a){var o=a-t,s=n(o)=0;)h=(f=t[u])[0]+l*(i=h)-c*p,p=f[1]+l*p+c*i;return[h=l*(i=h)-c*p,p=l*p+c*i]}return r.invert=function(r,s){var l=20,c=r,u=s;do{for(var f,h=e,p=t[h],d=p[0],m=p[1],v=0,y=0;--h>=0;)v=d+c*(f=v)-u*y,y=m+c*y+u*f,d=(p=t[h])[0]+c*(f=d)-u*m,m=p[1]+c*m+u*f;var x,b,_=(v=d+c*(f=v)-u*y)*v+(y=m+c*y+u*f)*y;c-=x=((d=c*(f=d)-u*m-r)*v+(m=c*m+u*f-s)*y)/_,u-=b=(m*v-d*y)/_}while(n(x)+n(b)>1e-12&&--l>0);if(l){var w=L(c*c+u*u),T=2*i(.5*w),k=g(T);return[a(c*k,w*o(T)),w?S(u*k/w):0]}},r}ge.invert=function(t,e){var r=n(t),i=n(e),a=v,s=x;iv||n(b)>v)&&--a>0);return a&&[r,i]},ve.invert=function(t,e){var r=t*t,n=e*e+1,i=r+n,a=t?_*L((i-L(i*i-4*r))/r):1/L(n);return[S(t*a),d(e)*E(a)]},xe.invert=function(t,e){return[t,2.5*i(s(.8*e))-.625*y]};var _e=[[.9972523,0],[.0052513,-.0041175],[.0074606,.0048125],[-.0153783,-.1968253],[.0636871,-.1408027],[.3660976,-.2937382]],we=[[.98879,0],[0,0],[-.050909,0],[0,0],[.075528,0]],Te=[[.984299,0],[.0211642,.0037608],[-.1036018,-.0575102],[-.0329095,-.0320119],[.0499471,.1223335],[.026046,.0899805],[7388e-7,-.1435792],[.0075848,-.1334108],[-.0216473,.0776645],[-.0225161,.0853673]],ke=[[.9245,0],[0,0],[.01943,0]],Ae=[[.721316,0],[0,0],[-.00881625,-.00617325]];function Me(t,r){var n=e.geoProjection(be(t)).rotate(r).clipAngle(90),i=e.geoRotation(r),a=n.center;return delete n.rotate,n.center=function(t){return arguments.length?a(i(t)):i.invert(a())},n}var Se=L(6),Ee=L(7);function Le(t,e){var r=S(7*g(e)/(3*Se));return[Se*t*(2*o(2*r/3)-1)/Ee,9*g(r/3)/Ee]}function Ce(t,e){for(var r,i=(1+_)*g(e),a=e,s=0;s<25&&(a-=r=(g(a/2)+g(a)-i)/(.5*o(a/2)+o(a)),!(n(r)1e-12&&--l>0);return[t/(.84719-.13063*(i=s*s)+(o=i*(a=i*i))*o*(.05494*i-.04515-.02326*a+.00331*o)),s]},Oe.invert=function(t,e){for(var r=e/2,i=0,a=1/0;i<10&&n(a)>v;++i){var s=o(e/2);e-=a=(e-m(e/2)-r)/(1-.5/(s*s))}return[2*t/(1+o(e)),e]};var ze=[[[[-180,0],[-90,90],[0,0]],[[0,0],[90,90],[180,0]]],[[[-180,0],[-90,-90],[0,0]],[[0,0],[90,-90],[180,0]]]];function De(t,e){var r=g(e),i=o(e),a=d(t);if(0===t||n(e)===x)return[0,e];if(0===e)return[t,0];if(n(t)===x)return[t*i,x*r];var s=y/(2*t)-2*t/y,l=2*e/y,c=(1-l*l)/(r-l),u=s*s,f=c*c,h=1+u/f,p=1+f/u,m=(s*r/c-s/2)/h,v=(f*r/u+c/2)/p,b=v*v-(f*r*r/u+c*r-1)/p;return[x*(m+L(m*m+i*i/h)*a),x*(v+L(b<0?0:b)*d(-e*s)*a)]}De.invert=function(t,e){var r=(t/=x)*t,n=r+(e/=x)*e,i=y*y;return[t?(n-1+L((1-n)*(1-n)+4*r))/(2*t)*x:0,V((function(t){return n*(y*g(t)-2*t)*y+4*t*t*(e-g(t))+2*y*t-i*e}),0)]};function Re(t,e){var r=e*e;return[t,e*(1.0148+r*r*(.23185+r*(.02406*r-.14499)))]}function Fe(t,e){if(n(e)=0;)if(n=e[s],r[0]===n[0]&&r[1]===n[1]){if(a)return[a,r];a=r}}}(e.face,r.face),i=Be(n.map(r.project),n.map(e.project));e.transform=r.transform?Ne(r.transform,i):i;for(var a=r.edges,o=0,s=a.length;o1.790857183?e=1.790857183:e<-1.790857183&&(e=-1.790857183);var r,i=e;do{var a=i*i;i-=r=(i*(1.0148+a*a*(.23185+a*(.02406*a-.14499)))-e)/(1.0148+a*a*(5*.23185+a*(.21654*a-1.01493)))}while(n(r)>v);return[t,i]},Fe.invert=function(t,e){if(n(e)v&&--s>0);return l=m(a),[(n(e)n^p>n&&r<(h-c)*(n-u)/(p-u)+c&&(i=!i)}return i}(t[0],r))return t.push(e),!0}))||t.push([e])})),nr=[],t.length?t.length>1?{type:\"MultiPolygon\",coordinates:t}:{type:\"Polygon\",coordinates:t[0]}:null}};function sr(t){var r=t(x,0)[0]-t(-x,0)[0];function i(e,i){var a=n(e)0?e-y:e+y,i),s=(o[0]-o[1])*_,l=(o[0]+o[1])*_;if(a)return[s,l];var c=r*_,u=s>0^l>0?-1:1;return[u*s-d(l)*c,u*l-d(s)*c]}return t.invert&&(i.invert=function(e,i){var a=(e+i)*_,o=(i-e)*_,s=n(a)<.5*r&&n(o)<.5*r;if(!s){var l=r*_,c=a>0^o>0?-1:1,u=-c*e+(o>0?1:-1)*l,f=-c*i+(a>0?1:-1)*l;a=(-u-f)*_,o=(u-f)*_}var h=t.invert(a,o);return s||(h[0]+=a>0?y:-y),h}),e.geoProjection(i).rotate([-90,-90,45]).clipAngle(179.999)}function lr(){return sr(Ut).scale(111.48)}function cr(t){var e=g(t);function r(r,n){var a=e?m(r*e/2)/e:r/2;if(!n)return[2*a,-t];var s=2*i(a*g(n)),l=1/m(n);return[g(s)*l,n+(1-o(s))*l-t]}return r.invert=function(r,a){if(n(a+=t)v&&--u>0);var d=r*(f=m(c)),x=m(n(a)0?x:-x)*(h+o*(d-c)/2+o*o*(d-2*h+c)/2)]}function hr(t,e){var r=function(t){function e(e,r){var n=o(r),i=(t-1)/(t-n*o(e));return[i*n*g(e),i*g(r)]}return e.invert=function(e,r){var n=e*e+r*r,i=L(n),o=(t-L(1-n*(t+1)/(t-1)))/((t-1)/i+i/(t-1));return[a(e*o,i*L(1-o*o)),i?S(r*o/i):0]},e}(t);if(!e)return r;var n=o(e),i=g(e);function s(e,a){var o=r(e,a),s=o[1],l=s*i/(t-1)+n;return[o[0]*n/l,s/l]}return s.invert=function(e,a){var o=(t-1)/(t-1-a*i);return r.invert(o*e,o*a*n)},s}ur.forEach((function(t){t[1]*=1.0144})),fr.invert=function(t,e){var r=e/x,i=90*r,a=f(18,n(i/5)),o=u(0,l(a));do{var s=ur[o][1],c=ur[o+1][1],h=ur[f(19,o+2)][1],p=h-s,d=h-2*c+s,g=2*(n(r)-c)/p,m=d/p,v=g*(1-m*g*(1-2*m*g));if(v>=0||1===o){i=(e>=0?5:-5)*(v+a);var y,b=50;do{v=(a=f(18,n(i)/5))-(o=l(a)),s=ur[o][1],c=ur[o+1][1],h=ur[f(19,o+2)][1],i-=(y=(e>=0?x:-x)*(c+v*(h-s)/2+v*v*(h-2*c+s)/2)-e)*A}while(n(y)>1e-12&&--b>0);break}}while(--o>=0);var _=ur[o][0],w=ur[o+1][0],T=ur[f(19,o+2)][0];return[t/(w+v*(T-_)/2+v*v*(T-2*w+_)/2),i*M]};var pr=-179.9999,dr=179.9999,gr=-89.9999;function mr(t){return t.length>0}function vr(t){return-90===t||90===t?[0,t]:[-180,(e=t,Math.floor(1e4*e)/1e4)];var e}function yr(t){var e=t[0],r=t[1],n=!1;return e<=pr?(e=-180,n=!0):e>=dr&&(e=180,n=!0),r<=gr?(r=-90,n=!0):r>=89.9999&&(r=90,n=!0),n?[e,r]:t}function xr(t){return t.map(yr)}function br(t,e,r){for(var n=0,i=t.length;n=dr||u<=gr||u>=89.9999){a[o]=yr(l);for(var f=o+1;fpr&&pgr&&d<89.9999)break}if(f===o+1)continue;if(o){var g={index:-1,polygon:e,ring:a.slice(0,o+1)};g.ring[g.ring.length-1]=vr(u),r[r.length-1]=g}else r.pop();if(f>=s)break;r.push({index:-1,polygon:e,ring:a=a.slice(f-1)}),a[0]=vr(a[0][1]),o=-1,s=a.length}}}}function _r(t){var e,r,n,i,a,o,s=t.length,l={},c={};for(e=0;e0?y-l:l)*A],u=e.geoProjection(t(s)).rotate(c),f=e.geoRotation(c),h=u.center;return delete u.rotate,u.center=function(t){return arguments.length?h(f(t)):f.invert(h())},u.clipAngle(90)}function Mr(t){var r=o(t);function n(t,n){var i=e.geoGnomonicRaw(t,n);return i[0]*=r,i}return n.invert=function(t,n){return e.geoGnomonicRaw.invert(t/r,n)},n}function Sr(t,e){return Ar(Mr,t,e)}function Er(t){if(!(t*=2))return e.geoAzimuthalEquidistantRaw;var r=-t/2,n=-r,i=t*t,s=m(n),l=.5/g(n);function c(e,a){var s=E(o(a)*o(e-r)),l=E(o(a)*o(e-n));return[((s*=s)-(l*=l))/(2*t),(a<0?-1:1)*L(4*i*l-(i-s+l)*(i-s+l))/(2*t)]}return c.invert=function(t,e){var i,c,u=e*e,f=o(L(u+(i=t+r)*i)),h=o(L(u+(i=t+n)*i));return[a(c=f-h,i=(f+h)*s),(e<0?-1:1)*E(L(i*i+c*c)*l)]},c}function Lr(t,e){return Ar(Er,t,e)}function Cr(t,e){if(n(e)v&&--l>0);return[d(t)*(L(a*a+4)+a)*y/4,x*s]};var Rr=4*y+3*L(3),Fr=2*L(2*y*L(3)/Rr),Br=Y(Fr*L(3)/y,Fr,Rr/6);function Nr(t,e){return[t*L(1-3*e*e/(y*y)),e]}function jr(t,e){var r=o(e),n=o(t)*r,i=1-n,s=o(t=a(g(t)*r,-g(e))),l=g(t);return[l*(r=L(1-n*n))-s*i,-s*r-l*i]}function Ur(t,e){var r=O(t,e);return[(r[0]+t/x)/2,(r[1]+e)/2]}Nr.invert=function(t,e){return[t/L(1-3*e*e/(y*y)),e]},jr.invert=function(t,e){var r=(t*t+e*e)/-2,n=L(-r*(2+r)),i=e*r+t*n,o=t*r-e*n,s=L(o*o+i*i);return[a(n*i,s*(1+r)),s?-S(n*o/s):0]},Ur.invert=function(t,e){var r=t,i=e,a=25;do{var s,l=o(i),c=g(i),u=g(2*i),f=c*c,h=l*l,p=g(r),d=o(r/2),m=g(r/2),y=m*m,b=1-h*d*d,_=b?E(l*d)*L(s=1/b):s=0,w=.5*(2*_*l*m+r/x)-t,T=.5*(_*c+i)-e,k=.5*s*(h*y+_*l*d*f)+.5/x,A=s*(p*u/4-_*c*m),M=.125*s*(u*m-_*c*h*p),S=.5*s*(f*d+_*y*l)+.5,C=A*M-S*k,P=(T*A-w*S)/C,I=(w*M-T*k)/C;r-=P,i-=I}while((n(P)>v||n(I)>v)&&--a>0);return[r,i]},t.geoNaturalEarth=e.geoNaturalEarth1,t.geoNaturalEarthRaw=e.geoNaturalEarth1Raw,t.geoAiry=function(){var t=x,r=e.geoProjectionMutator(I),n=r(t);return n.radius=function(e){return arguments.length?r(t=e*M):t*A},n.scale(179.976).clipAngle(147)},t.geoAiryRaw=I,t.geoAitoff=function(){return e.geoProjection(O).scale(152.63)},t.geoAitoffRaw=O,t.geoArmadillo=function(){var t=20*M,r=t>=0?1:-1,n=m(r*t),i=e.geoProjectionMutator(z),s=i(t),l=s.stream;return s.parallel=function(e){return arguments.length?(n=m((r=(t=e*M)>=0?1:-1)*t),i(t)):t*A},s.stream=function(e){var i=s.rotate(),c=l(e),u=(s.rotate([0,0]),l(e)),f=s.precision();return s.rotate(i),c.sphere=function(){u.polygonStart(),u.lineStart();for(var e=-180*r;r*e<180;e+=90*r)u.point(e,90*r);if(t)for(;r*(e-=3*r*f)>=-180;)u.point(e,r*-a(o(e*M/2),n)*A);u.lineEnd(),u.polygonEnd()},c},s.scale(218.695).center([0,28.0974])},t.geoArmadilloRaw=z,t.geoAugust=function(){return e.geoProjection(D).scale(66.1603)},t.geoAugustRaw=D,t.geoBaker=function(){return e.geoProjection(B).scale(112.314)},t.geoBakerRaw=B,t.geoBerghaus=function(){var t=5,r=e.geoProjectionMutator(N),n=r(t),i=n.stream,s=-o(.01*M),l=g(.01*M);return n.lobes=function(e){return arguments.length?r(t=+e):t},n.stream=function(e){var r=n.rotate(),c=i(e),u=(n.rotate([0,0]),i(e));return n.rotate(r),c.sphere=function(){u.polygonStart(),u.lineStart();for(var e=0,r=360/t,n=2*y/t,i=90-180/t,c=x;e=0;)t.point((e=r[i])[0],e[1]);t.lineEnd(),t.polygonEnd()},t},n.scale(79.4187).parallel(45).clipAngle(179.999)},t.geoHammerRetroazimuthalRaw=Vt,t.geoHealpix=function(){var t=4,n=e.geoProjectionMutator(Yt),i=n(t),a=i.stream;return i.lobes=function(e){return arguments.length?n(t=+e):t},i.stream=function(n){var o=i.rotate(),s=a(n),l=(i.rotate([0,0]),a(n));return i.rotate(o),s.sphere=function(){var n,i;e.geoStream((n=180/t,i=[].concat(r.range(-180,180+n/2,n).map(Wt),r.range(180,-180-n/2,-n).map(Xt)),{type:\"Polygon\",coordinates:[180===n?i.map(Zt):i]}),l)},s},i.scale(239.75)},t.geoHealpixRaw=Yt,t.geoHill=function(){var t=1,r=e.geoProjectionMutator(Jt),n=r(t);return n.ratio=function(e){return arguments.length?r(t=+e):t},n.scale(167.774).center([0,18.67])},t.geoHillRaw=Jt,t.geoHomolosine=function(){return e.geoProjection(Qt).scale(152.63)},t.geoHomolosineRaw=Qt,t.geoHufnagel=function(){var t=1,r=0,n=45*M,i=2,a=e.geoProjectionMutator($t),o=a(t,r,n,i);return o.a=function(e){return arguments.length?a(t=+e,r,n,i):t},o.b=function(e){return arguments.length?a(t,r=+e,n,i):r},o.psiMax=function(e){return arguments.length?a(t,r,n=+e*M,i):n*A},o.ratio=function(e){return arguments.length?a(t,r,n,i=+e):i},o.scale(180.739)},t.geoHufnagelRaw=$t,t.geoHyperelliptical=function(){var t=0,r=2.5,n=1.183136,i=e.geoProjectionMutator(ee),a=i(t,r,n);return a.alpha=function(e){return arguments.length?i(t=+e,r,n):t},a.k=function(e){return arguments.length?i(t,r=+e,n):r},a.gamma=function(e){return arguments.length?i(t,r,n=+e):n},a.scale(152.63)},t.geoHyperellipticalRaw=ee,t.geoInterrupt=ae,t.geoInterruptedBoggs=function(){return ae(J,oe).scale(160.857)},t.geoInterruptedHomolosine=function(){return ae(Qt,se).scale(152.63)},t.geoInterruptedMollweide=function(){return ae(W,le).scale(169.529)},t.geoInterruptedMollweideHemispheres=function(){return ae(W,ce).scale(169.529).rotate([20,0])},t.geoInterruptedSinuMollweide=function(){return ae(Kt,ue,H).rotate([-20,-55]).scale(164.263).center([0,-5.4036])},t.geoInterruptedSinusoidal=function(){return ae(Q,fe).scale(152.63).rotate([-20,0])},t.geoKavrayskiy7=function(){return e.geoProjection(he).scale(158.837)},t.geoKavrayskiy7Raw=he,t.geoLagrange=function(){var t=.5,r=e.geoProjectionMutator(pe),n=r(t);return n.spacing=function(e){return arguments.length?r(t=+e):t},n.scale(124.75)},t.geoLagrangeRaw=pe,t.geoLarrivee=function(){return e.geoProjection(ge).scale(97.2672)},t.geoLarriveeRaw=ge,t.geoLaskowski=function(){return e.geoProjection(me).scale(139.98)},t.geoLaskowskiRaw=me,t.geoLittrow=function(){return e.geoProjection(ve).scale(144.049).clipAngle(89.999)},t.geoLittrowRaw=ve,t.geoLoximuthal=function(){return K(ye).parallel(40).scale(158.837)},t.geoLoximuthalRaw=ye,t.geoMiller=function(){return e.geoProjection(xe).scale(108.318)},t.geoMillerRaw=xe,t.geoModifiedStereographic=Me,t.geoModifiedStereographicRaw=be,t.geoModifiedStereographicAlaska=function(){return Me(_e,[152,-64]).scale(1400).center([-160.908,62.4864]).clipAngle(30).angle(7.8)},t.geoModifiedStereographicGs48=function(){return Me(we,[95,-38]).scale(1e3).clipAngle(55).center([-96.5563,38.8675])},t.geoModifiedStereographicGs50=function(){return Me(Te,[120,-45]).scale(359.513).clipAngle(55).center([-117.474,53.0628])},t.geoModifiedStereographicMiller=function(){return Me(ke,[-20,-18]).scale(209.091).center([20,16.7214]).clipAngle(82)},t.geoModifiedStereographicLee=function(){return Me(Ae,[165,10]).scale(250).clipAngle(130).center([-165,-10])},t.geoMollweide=function(){return e.geoProjection(W).scale(169.529)},t.geoMollweideRaw=W,t.geoMtFlatPolarParabolic=function(){return e.geoProjection(Le).scale(164.859)},t.geoMtFlatPolarParabolicRaw=Le,t.geoMtFlatPolarQuartic=function(){return e.geoProjection(Ce).scale(188.209)},t.geoMtFlatPolarQuarticRaw=Ce,t.geoMtFlatPolarSinusoidal=function(){return e.geoProjection(Pe).scale(166.518)},t.geoMtFlatPolarSinusoidalRaw=Pe,t.geoNaturalEarth2=function(){return e.geoProjection(Ie).scale(175.295)},t.geoNaturalEarth2Raw=Ie,t.geoNellHammer=function(){return e.geoProjection(Oe).scale(152.63)},t.geoNellHammerRaw=Oe,t.geoInterruptedQuarticAuthalic=function(){return ae(j(1/0),ze).rotate([20,0]).scale(152.63)},t.geoNicolosi=function(){return e.geoProjection(De).scale(127.267)},t.geoNicolosiRaw=De,t.geoPatterson=function(){return e.geoProjection(Re).scale(139.319)},t.geoPattersonRaw=Re,t.geoPolyconic=function(){return e.geoProjection(Fe).scale(103.74)},t.geoPolyconicRaw=Fe,t.geoPolyhedral=Ve,t.geoPolyhedralButterfly=function(t){t=t||function(t){var r=e.geoCentroid({type:\"MultiPoint\",coordinates:t});return e.geoGnomonic().scale(1).translate([0,0]).rotate([-r[0],-r[1]])};var r=Ye.map((function(e){return{face:e,project:t(e)}}));return[-1,0,0,1,0,1,4,5].forEach((function(t,e){var n=r[t];n&&(n.children||(n.children=[])).push(r[e])})),Ve(r[0],(function(t,e){return r[t<-y/2?e<0?6:4:t<0?e<0?2:0:t0?[-r[0],0]:[180-r[0],180])};var r=Ye.map((function(e){return{face:e,project:t(e)}}));return[-1,0,0,1,0,1,4,5].forEach((function(t,e){var n=r[t];n&&(n.children||(n.children=[])).push(r[e])})),Ve(r[0],(function(t,e){return r[t<-y/2?e<0?6:4:t<0?e<0?2:0:t2||a[0]!=e[0]||a[1]!=e[1])&&(n.push(a),e=a)}return 1===n.length&&t.length>1&&n.push(r(t[t.length-1])),n}function a(t){return t.map(i)}function o(t){if(null==t)return t;var e;switch(t.type){case\"GeometryCollection\":e={type:\"GeometryCollection\",geometries:t.geometries.map(o)};break;case\"Point\":e={type:\"Point\",coordinates:r(t.coordinates)};break;case\"MultiPoint\":e={type:t.type,coordinates:n(t.coordinates)};break;case\"LineString\":e={type:t.type,coordinates:i(t.coordinates)};break;case\"MultiLineString\":case\"Polygon\":e={type:t.type,coordinates:a(t.coordinates)};break;case\"MultiPolygon\":e={type:\"MultiPolygon\",coordinates:t.coordinates.map(a)};break;default:return t}return null!=t.bbox&&(e.bbox=t.bbox),e}function s(t){var e={type:\"Feature\",properties:t.properties,geometry:o(t.geometry)};return null!=t.id&&(e.id=t.id),null!=t.bbox&&(e.bbox=t.bbox),e}if(null!=t)switch(t.type){case\"Feature\":return s(t);case\"FeatureCollection\":var l={type:\"FeatureCollection\",features:t.features.map(s)};return null!=t.bbox&&(l.bbox=t.bbox),l;default:return o(t)}return t},t.geoQuincuncial=sr,t.geoRectangularPolyconic=function(){return K(cr).scale(131.215)},t.geoRectangularPolyconicRaw=cr,t.geoRobinson=function(){return e.geoProjection(fr).scale(152.63)},t.geoRobinsonRaw=fr,t.geoSatellite=function(){var t=2,r=0,n=e.geoProjectionMutator(hr),i=n(t,r);return i.distance=function(e){return arguments.length?n(t=+e,r):t},i.tilt=function(e){return arguments.length?n(t,r=e*M):r*A},i.scale(432.147).clipAngle(E(1/t)*A-1e-6)},t.geoSatelliteRaw=hr,t.geoSinuMollweide=function(){return e.geoProjection(Kt).rotate([-20,-55]).scale(164.263).center([0,-5.4036])},t.geoSinuMollweideRaw=Kt,t.geoSinusoidal=function(){return e.geoProjection(Q).scale(152.63)},t.geoSinusoidalRaw=Q,t.geoStitch=function(t){if(null==t)return t;switch(t.type){case\"Feature\":return wr(t);case\"FeatureCollection\":var e={type:\"FeatureCollection\",features:t.features.map(wr)};return null!=t.bbox&&(e.bbox=t.bbox),e;default:return Tr(t)}},t.geoTimes=function(){return e.geoProjection(kr).scale(146.153)},t.geoTimesRaw=kr,t.geoTwoPointAzimuthal=Sr,t.geoTwoPointAzimuthalRaw=Mr,t.geoTwoPointAzimuthalUsa=function(){return Sr([-158,21.5],[-77,39]).clipAngle(60).scale(400)},t.geoTwoPointEquidistant=Lr,t.geoTwoPointEquidistantRaw=Er,t.geoTwoPointEquidistantUsa=function(){return Lr([-158,21.5],[-77,39]).clipAngle(130).scale(122.571)},t.geoVanDerGrinten=function(){return e.geoProjection(Cr).scale(79.4183)},t.geoVanDerGrintenRaw=Cr,t.geoVanDerGrinten2=function(){return e.geoProjection(Pr).scale(79.4183)},t.geoVanDerGrinten2Raw=Pr,t.geoVanDerGrinten3=function(){return e.geoProjection(Ir).scale(79.4183)},t.geoVanDerGrinten3Raw=Ir,t.geoVanDerGrinten4=function(){return e.geoProjection(Or).scale(127.16)},t.geoVanDerGrinten4Raw=Or,t.geoWagner=Dr,t.geoWagner7=function(){return Dr().poleline(65).parallels(60).inflation(0).ratio(200).scale(172.633)},t.geoWagnerRaw=zr,t.geoWagner4=function(){return e.geoProjection(Br).scale(176.84)},t.geoWagner4Raw=Br,t.geoWagner6=function(){return e.geoProjection(Nr).scale(152.63)},t.geoWagner6Raw=Nr,t.geoWiechel=function(){return e.geoProjection(jr).rotate([0,-90,45]).scale(124.75).clipAngle(179.999)},t.geoWiechelRaw=jr,t.geoWinkel3=function(){return e.geoProjection(Ur).scale(158.837)},t.geoWinkel3Raw=Ur,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{\"d3-array\":107,\"d3-geo\":114}],114:[function(t,e,r){!function(n,i){\"object\"==typeof r&&void 0!==e?i(r,t(\"d3-array\")):i((n=n||self).d3=n.d3||{},n.d3)}(this,(function(t,e){\"use strict\";function r(){return new n}function n(){this.reset()}n.prototype={constructor:n,reset:function(){this.s=this.t=0},add:function(t){a(i,t,this.t),a(this,i.s,this.s),this.s?this.t+=i.t:this.s=i.t},valueOf:function(){return this.s}};var i=new n;function a(t,e,r){var n=t.s=e+r,i=n-e,a=n-i;t.t=e-a+(r-i)}var o=1e-6,s=Math.PI,l=s/2,c=s/4,u=2*s,f=180/s,h=s/180,p=Math.abs,d=Math.atan,g=Math.atan2,m=Math.cos,v=Math.ceil,y=Math.exp,x=Math.log,b=Math.pow,_=Math.sin,w=Math.sign||function(t){return t>0?1:t<0?-1:0},T=Math.sqrt,k=Math.tan;function A(t){return t>1?0:t<-1?s:Math.acos(t)}function M(t){return t>1?l:t<-1?-l:Math.asin(t)}function S(t){return(t=_(t/2))*t}function E(){}function L(t,e){t&&P.hasOwnProperty(t.type)&&P[t.type](t,e)}var C={Feature:function(t,e){L(t.geometry,e)},FeatureCollection:function(t,e){for(var r=t.features,n=-1,i=r.length;++n=0?1:-1,i=n*r,a=m(e=(e*=h)/2+c),o=_(e),s=N*o,l=B*a+s*m(i),u=s*n*_(i);j.add(g(u,l)),F=t,B=a,N=o}function W(t){return[g(t[1],t[0]),M(t[2])]}function X(t){var e=t[0],r=t[1],n=m(r);return[n*m(e),n*_(e),_(r)]}function Z(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function J(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function K(t,e){t[0]+=e[0],t[1]+=e[1],t[2]+=e[2]}function Q(t,e){return[t[0]*e,t[1]*e,t[2]*e]}function $(t){var e=T(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=e,t[1]/=e,t[2]/=e}var tt,et,rt,nt,it,at,ot,st,lt,ct,ut,ft,ht,pt,dt,gt,mt,vt,yt,xt,bt,_t,wt,Tt,kt,At,Mt=r(),St={point:Et,lineStart:Ct,lineEnd:Pt,polygonStart:function(){St.point=It,St.lineStart=Ot,St.lineEnd=zt,Mt.reset(),V.polygonStart()},polygonEnd:function(){V.polygonEnd(),St.point=Et,St.lineStart=Ct,St.lineEnd=Pt,j<0?(tt=-(rt=180),et=-(nt=90)):Mt>o?nt=90:Mt<-o&&(et=-90),ct[0]=tt,ct[1]=rt},sphere:function(){tt=-(rt=180),et=-(nt=90)}};function Et(t,e){lt.push(ct=[tt=t,rt=t]),ent&&(nt=e)}function Lt(t,e){var r=X([t*h,e*h]);if(st){var n=J(st,r),i=J([n[1],-n[0],0],n);$(i),i=W(i);var a,o=t-it,s=o>0?1:-1,l=i[0]*f*s,c=p(o)>180;c^(s*itnt&&(nt=a):c^(s*it<(l=(l+360)%360-180)&&lnt&&(nt=e)),c?tDt(tt,rt)&&(rt=t):Dt(t,rt)>Dt(tt,rt)&&(tt=t):rt>=tt?(trt&&(rt=t)):t>it?Dt(tt,t)>Dt(tt,rt)&&(rt=t):Dt(t,rt)>Dt(tt,rt)&&(tt=t)}else lt.push(ct=[tt=t,rt=t]);ent&&(nt=e),st=r,it=t}function Ct(){St.point=Lt}function Pt(){ct[0]=tt,ct[1]=rt,St.point=Et,st=null}function It(t,e){if(st){var r=t-it;Mt.add(p(r)>180?r+(r>0?360:-360):r)}else at=t,ot=e;V.point(t,e),Lt(t,e)}function Ot(){V.lineStart()}function zt(){It(at,ot),V.lineEnd(),p(Mt)>o&&(tt=-(rt=180)),ct[0]=tt,ct[1]=rt,st=null}function Dt(t,e){return(e-=t)<0?e+360:e}function Rt(t,e){return t[0]-e[0]}function Ft(t,e){return t[0]<=t[1]?t[0]<=e&&e<=t[1]:es?t+Math.round(-t/u)*u:t,e]}function Qt(t,e,r){return(t%=u)?e||r?Jt(te(t),ee(e,r)):te(t):e||r?ee(e,r):Kt}function $t(t){return function(e,r){return[(e+=t)>s?e-u:e<-s?e+u:e,r]}}function te(t){var e=$t(t);return e.invert=$t(-t),e}function ee(t,e){var r=m(t),n=_(t),i=m(e),a=_(e);function o(t,e){var o=m(e),s=m(t)*o,l=_(t)*o,c=_(e),u=c*r+s*n;return[g(l*i-u*a,s*r-c*n),M(u*i+l*a)]}return o.invert=function(t,e){var o=m(e),s=m(t)*o,l=_(t)*o,c=_(e),u=c*i-l*a;return[g(l*i+c*a,s*r+u*n),M(u*r-s*n)]},o}function re(t){function e(e){return(e=t(e[0]*h,e[1]*h))[0]*=f,e[1]*=f,e}return t=Qt(t[0]*h,t[1]*h,t.length>2?t[2]*h:0),e.invert=function(e){return(e=t.invert(e[0]*h,e[1]*h))[0]*=f,e[1]*=f,e},e}function ne(t,e,r,n,i,a){if(r){var o=m(e),s=_(e),l=n*r;null==i?(i=e+n*u,a=e-l/2):(i=ie(o,i),a=ie(o,a),(n>0?ia)&&(i+=n*u));for(var c,f=i;n>0?f>a:f1&&e.push(e.pop().concat(e.shift()))},result:function(){var r=e;return e=[],t=null,r}}}function oe(t,e){return p(t[0]-e[0])=0;--a)i.point((f=u[a])[0],f[1]);else n(p.x,p.p.x,-1,i);p=p.p}u=(p=p.o).z,d=!d}while(!p.v);i.lineEnd()}}}function ce(t){if(e=t.length){for(var e,r,n=0,i=t[0];++n=0?1:-1,z=O*I,D=z>s,R=T*C;if(ue.add(g(R*O*_(z),k*P+R*m(z))),f+=D?I+O*u:I,D^b>=r^E>=r){var F=J(X(x),X(S));$(F);var B=J(a,F);$(B);var N=(D^I>=0?-1:1)*M(B[2]);(n>N||n===N&&(F[0]||F[1]))&&(h+=D^I>=0?1:-1)}}return(f<-o||f0){for(h||(a.polygonStart(),h=!0),a.lineStart(),t=0;t1&&2&i&&c.push(c.pop().concat(c.shift())),s.push(c.filter(de))}return p}}function de(t){return t.length>1}function ge(t,e){return((t=t.x)[0]<0?t[1]-l-o:l-t[1])-((e=e.x)[0]<0?e[1]-l-o:l-e[1])}var me=pe((function(){return!0}),(function(t){var e,r=NaN,n=NaN,i=NaN;return{lineStart:function(){t.lineStart(),e=1},point:function(a,c){var u=a>0?s:-s,f=p(a-r);p(f-s)0?l:-l),t.point(i,n),t.lineEnd(),t.lineStart(),t.point(u,n),t.point(a,n),e=0):i!==u&&f>=s&&(p(r-i)o?d((_(e)*(a=m(n))*_(r)-_(n)*(i=m(e))*_(t))/(i*a*s)):(e+n)/2}(r,n,a,c),t.point(i,n),t.lineEnd(),t.lineStart(),t.point(u,n),e=0),t.point(r=a,n=c),i=u},lineEnd:function(){t.lineEnd(),r=n=NaN},clean:function(){return 2-e}}}),(function(t,e,r,n){var i;if(null==t)i=r*l,n.point(-s,i),n.point(0,i),n.point(s,i),n.point(s,0),n.point(s,-i),n.point(0,-i),n.point(-s,-i),n.point(-s,0),n.point(-s,i);else if(p(t[0]-e[0])>o){var a=t[0]0,i=p(e)>o;function a(t,r){return m(t)*m(r)>e}function l(t,r,n){var i=[1,0,0],a=J(X(t),X(r)),l=Z(a,a),c=a[0],u=l-c*c;if(!u)return!n&&t;var f=e*l/u,h=-e*c/u,d=J(i,a),g=Q(i,f);K(g,Q(a,h));var m=d,v=Z(g,m),y=Z(m,m),x=v*v-y*(Z(g,g)-1);if(!(x<0)){var b=T(x),_=Q(m,(-v-b)/y);if(K(_,g),_=W(_),!n)return _;var w,k=t[0],A=r[0],M=t[1],S=r[1];A0^_[1]<(p(_[0]-k)s^(k<=_[0]&&_[0]<=A)){var C=Q(m,(-v+b)/y);return K(C,g),[_,W(C)]}}}function c(e,r){var i=n?t:s-t,a=0;return e<-i?a|=1:e>i&&(a|=2),r<-i?a|=4:r>i&&(a|=8),a}return pe(a,(function(t){var e,r,o,u,f;return{lineStart:function(){u=o=!1,f=1},point:function(h,p){var d,g=[h,p],m=a(h,p),v=n?m?0:c(h,p):m?c(h+(h<0?s:-s),p):0;if(!e&&(u=o=m)&&t.lineStart(),m!==o&&(!(d=l(e,g))||oe(e,d)||oe(g,d))&&(g[2]=1),m!==o)f=0,m?(t.lineStart(),d=l(g,e),t.point(d[0],d[1])):(d=l(e,g),t.point(d[0],d[1],2),t.lineEnd()),e=d;else if(i&&e&&n^m){var y;v&r||!(y=l(g,e,!0))||(f=0,n?(t.lineStart(),t.point(y[0][0],y[0][1]),t.point(y[1][0],y[1][1]),t.lineEnd()):(t.point(y[1][0],y[1][1]),t.lineEnd(),t.lineStart(),t.point(y[0][0],y[0][1],3)))}!m||e&&oe(e,g)||t.point(g[0],g[1]),e=g,o=m,r=v},lineEnd:function(){o&&t.lineEnd(),e=null},clean:function(){return f|(u&&o)<<1}}}),(function(e,n,i,a){ne(a,t,r,i,e,n)}),n?[0,-t]:[-s,t-s])}function ye(t,r,n,i){function a(e,a){return t<=e&&e<=n&&r<=a&&a<=i}function s(e,a,o,s){var c=0,f=0;if(null==e||(c=l(e,o))!==(f=l(a,o))||u(e,a)<0^o>0)do{s.point(0===c||3===c?t:n,c>1?i:r)}while((c=(c+o+4)%4)!==f);else s.point(a[0],a[1])}function l(e,i){return p(e[0]-t)0?0:3:p(e[0]-n)0?2:1:p(e[1]-r)0?1:0:i>0?3:2}function c(t,e){return u(t.x,e.x)}function u(t,e){var r=l(t,1),n=l(e,1);return r!==n?r-n:0===r?e[1]-t[1]:1===r?t[0]-e[0]:2===r?t[1]-e[1]:e[0]-t[0]}return function(o){var l,u,f,h,p,d,g,m,v,y,x,b=o,_=ae(),w={point:T,lineStart:function(){w.point=k,u&&u.push(f=[]);y=!0,v=!1,g=m=NaN},lineEnd:function(){l&&(k(h,p),d&&v&&_.rejoin(),l.push(_.result()));w.point=T,v&&b.lineEnd()},polygonStart:function(){b=_,l=[],u=[],x=!0},polygonEnd:function(){var r=function(){for(var e=0,r=0,n=u.length;ri&&(h-a)*(i-o)>(p-o)*(t-a)&&++e:p<=i&&(h-a)*(i-o)<(p-o)*(t-a)&&--e;return e}(),n=x&&r,a=(l=e.merge(l)).length;(n||a)&&(o.polygonStart(),n&&(o.lineStart(),s(null,null,1,o),o.lineEnd()),a&&le(l,c,r,s,o),o.polygonEnd());b=o,l=u=f=null}};function T(t,e){a(t,e)&&b.point(t,e)}function k(e,o){var s=a(e,o);if(u&&f.push([e,o]),y)h=e,p=o,d=s,y=!1,s&&(b.lineStart(),b.point(e,o));else if(s&&v)b.point(e,o);else{var l=[g=Math.max(-1e9,Math.min(1e9,g)),m=Math.max(-1e9,Math.min(1e9,m))],c=[e=Math.max(-1e9,Math.min(1e9,e)),o=Math.max(-1e9,Math.min(1e9,o))];!function(t,e,r,n,i,a){var o,s=t[0],l=t[1],c=0,u=1,f=e[0]-s,h=e[1]-l;if(o=r-s,f||!(o>0)){if(o/=f,f<0){if(o0){if(o>u)return;o>c&&(c=o)}if(o=i-s,f||!(o<0)){if(o/=f,f<0){if(o>u)return;o>c&&(c=o)}else if(f>0){if(o0)){if(o/=h,h<0){if(o0){if(o>u)return;o>c&&(c=o)}if(o=a-l,h||!(o<0)){if(o/=h,h<0){if(o>u)return;o>c&&(c=o)}else if(h>0){if(o0&&(t[0]=s+c*f,t[1]=l+c*h),u<1&&(e[0]=s+u*f,e[1]=l+u*h),!0}}}}}(l,c,t,r,n,i)?s&&(b.lineStart(),b.point(e,o),x=!1):(v||(b.lineStart(),b.point(l[0],l[1])),b.point(c[0],c[1]),s||b.lineEnd(),x=!1)}g=e,m=o,v=s}return w}}var xe,be,_e,we=r(),Te={sphere:E,point:E,lineStart:function(){Te.point=Ae,Te.lineEnd=ke},lineEnd:E,polygonStart:E,polygonEnd:E};function ke(){Te.point=Te.lineEnd=E}function Ae(t,e){xe=t*=h,be=_(e*=h),_e=m(e),Te.point=Me}function Me(t,e){t*=h;var r=_(e*=h),n=m(e),i=p(t-xe),a=m(i),o=n*_(i),s=_e*r-be*n*a,l=be*r+_e*n*a;we.add(g(T(o*o+s*s),l)),xe=t,be=r,_e=n}function Se(t){return we.reset(),z(t,Te),+we}var Ee=[null,null],Le={type:\"LineString\",coordinates:Ee};function Ce(t,e){return Ee[0]=t,Ee[1]=e,Se(Le)}var Pe={Feature:function(t,e){return Oe(t.geometry,e)},FeatureCollection:function(t,e){for(var r=t.features,n=-1,i=r.length;++n0&&(i=Ce(t[a],t[a-1]))>0&&r<=i&&n<=i&&(r+n-i)*(1-Math.pow((r-n)/i,2))<1e-12*i)return!0;r=n}return!1}function Re(t,e){return!!he(t.map(Fe),Be(e))}function Fe(t){return(t=t.map(Be)).pop(),t}function Be(t){return[t[0]*h,t[1]*h]}function Ne(t,r,n){var i=e.range(t,r-o,n).concat(r);return function(t){return i.map((function(e){return[t,e]}))}}function je(t,r,n){var i=e.range(t,r-o,n).concat(r);return function(t){return i.map((function(e){return[e,t]}))}}function Ue(){var t,r,n,i,a,s,l,c,u,f,h,d,g=10,m=g,y=90,x=360,b=2.5;function _(){return{type:\"MultiLineString\",coordinates:w()}}function w(){return e.range(v(i/y)*y,n,y).map(h).concat(e.range(v(c/x)*x,l,x).map(d)).concat(e.range(v(r/g)*g,t,g).filter((function(t){return p(t%y)>o})).map(u)).concat(e.range(v(s/m)*m,a,m).filter((function(t){return p(t%x)>o})).map(f))}return _.lines=function(){return w().map((function(t){return{type:\"LineString\",coordinates:t}}))},_.outline=function(){return{type:\"Polygon\",coordinates:[h(i).concat(d(l).slice(1),h(n).reverse().slice(1),d(c).reverse().slice(1))]}},_.extent=function(t){return arguments.length?_.extentMajor(t).extentMinor(t):_.extentMinor()},_.extentMajor=function(t){return arguments.length?(i=+t[0][0],n=+t[1][0],c=+t[0][1],l=+t[1][1],i>n&&(t=i,i=n,n=t),c>l&&(t=c,c=l,l=t),_.precision(b)):[[i,c],[n,l]]},_.extentMinor=function(e){return arguments.length?(r=+e[0][0],t=+e[1][0],s=+e[0][1],a=+e[1][1],r>t&&(e=r,r=t,t=e),s>a&&(e=s,s=a,a=e),_.precision(b)):[[r,s],[t,a]]},_.step=function(t){return arguments.length?_.stepMajor(t).stepMinor(t):_.stepMinor()},_.stepMajor=function(t){return arguments.length?(y=+t[0],x=+t[1],_):[y,x]},_.stepMinor=function(t){return arguments.length?(g=+t[0],m=+t[1],_):[g,m]},_.precision=function(e){return arguments.length?(b=+e,u=Ne(s,a,90),f=je(r,t,b),h=Ne(c,l,90),d=je(i,n,b),_):b},_.extentMajor([[-180,-90+o],[180,90-o]]).extentMinor([[-180,-80-o],[180,80+o]])}function Ve(t){return t}var He,qe,Ge,Ye,We=r(),Xe=r(),Ze={point:E,lineStart:E,lineEnd:E,polygonStart:function(){Ze.lineStart=Je,Ze.lineEnd=$e},polygonEnd:function(){Ze.lineStart=Ze.lineEnd=Ze.point=E,We.add(p(Xe)),Xe.reset()},result:function(){var t=We/2;return We.reset(),t}};function Je(){Ze.point=Ke}function Ke(t,e){Ze.point=Qe,He=Ge=t,qe=Ye=e}function Qe(t,e){Xe.add(Ye*t-Ge*e),Ge=t,Ye=e}function $e(){Qe(He,qe)}var tr=1/0,er=tr,rr=-tr,nr=rr,ir={point:function(t,e){trr&&(rr=t);enr&&(nr=e)},lineStart:E,lineEnd:E,polygonStart:E,polygonEnd:E,result:function(){var t=[[tr,er],[rr,nr]];return rr=nr=-(er=tr=1/0),t}};var ar,or,sr,lr,cr=0,ur=0,fr=0,hr=0,pr=0,dr=0,gr=0,mr=0,vr=0,yr={point:xr,lineStart:br,lineEnd:Tr,polygonStart:function(){yr.lineStart=kr,yr.lineEnd=Ar},polygonEnd:function(){yr.point=xr,yr.lineStart=br,yr.lineEnd=Tr},result:function(){var t=vr?[gr/vr,mr/vr]:dr?[hr/dr,pr/dr]:fr?[cr/fr,ur/fr]:[NaN,NaN];return cr=ur=fr=hr=pr=dr=gr=mr=vr=0,t}};function xr(t,e){cr+=t,ur+=e,++fr}function br(){yr.point=_r}function _r(t,e){yr.point=wr,xr(sr=t,lr=e)}function wr(t,e){var r=t-sr,n=e-lr,i=T(r*r+n*n);hr+=i*(sr+t)/2,pr+=i*(lr+e)/2,dr+=i,xr(sr=t,lr=e)}function Tr(){yr.point=xr}function kr(){yr.point=Mr}function Ar(){Sr(ar,or)}function Mr(t,e){yr.point=Sr,xr(ar=sr=t,or=lr=e)}function Sr(t,e){var r=t-sr,n=e-lr,i=T(r*r+n*n);hr+=i*(sr+t)/2,pr+=i*(lr+e)/2,dr+=i,gr+=(i=lr*t-sr*e)*(sr+t),mr+=i*(lr+e),vr+=3*i,xr(sr=t,lr=e)}function Er(t){this._context=t}Er.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._context.moveTo(t,e),this._point=1;break;case 1:this._context.lineTo(t,e);break;default:this._context.moveTo(t+this._radius,e),this._context.arc(t,e,this._radius,0,u)}},result:E};var Lr,Cr,Pr,Ir,Or,zr=r(),Dr={point:E,lineStart:function(){Dr.point=Rr},lineEnd:function(){Lr&&Fr(Cr,Pr),Dr.point=E},polygonStart:function(){Lr=!0},polygonEnd:function(){Lr=null},result:function(){var t=+zr;return zr.reset(),t}};function Rr(t,e){Dr.point=Fr,Cr=Ir=t,Pr=Or=e}function Fr(t,e){Ir-=t,Or-=e,zr.add(T(Ir*Ir+Or*Or)),Ir=t,Or=e}function Br(){this._string=[]}function Nr(t){return\"m0,\"+t+\"a\"+t+\",\"+t+\" 0 1,1 0,\"+-2*t+\"a\"+t+\",\"+t+\" 0 1,1 0,\"+2*t+\"z\"}function jr(t){return function(e){var r=new Ur;for(var n in t)r[n]=t[n];return r.stream=e,r}}function Ur(){}function Vr(t,e,r){var n=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=n&&t.clipExtent(null),z(r,t.stream(ir)),e(ir.result()),null!=n&&t.clipExtent(n),t}function Hr(t,e,r){return Vr(t,(function(r){var n=e[1][0]-e[0][0],i=e[1][1]-e[0][1],a=Math.min(n/(r[1][0]-r[0][0]),i/(r[1][1]-r[0][1])),o=+e[0][0]+(n-a*(r[1][0]+r[0][0]))/2,s=+e[0][1]+(i-a*(r[1][1]+r[0][1]))/2;t.scale(150*a).translate([o,s])}),r)}function qr(t,e,r){return Hr(t,[[0,0],e],r)}function Gr(t,e,r){return Vr(t,(function(r){var n=+e,i=n/(r[1][0]-r[0][0]),a=(n-i*(r[1][0]+r[0][0]))/2,o=-i*r[0][1];t.scale(150*i).translate([a,o])}),r)}function Yr(t,e,r){return Vr(t,(function(r){var n=+e,i=n/(r[1][1]-r[0][1]),a=-i*r[0][0],o=(n-i*(r[1][1]+r[0][1]))/2;t.scale(150*i).translate([a,o])}),r)}Br.prototype={_radius:4.5,_circle:Nr(4.5),pointRadius:function(t){return(t=+t)!==this._radius&&(this._radius=t,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push(\"Z\"),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._string.push(\"M\",t,\",\",e),this._point=1;break;case 1:this._string.push(\"L\",t,\",\",e);break;default:null==this._circle&&(this._circle=Nr(this._radius)),this._string.push(\"M\",t,\",\",e,this._circle)}},result:function(){if(this._string.length){var t=this._string.join(\"\");return this._string=[],t}return null}},Ur.prototype={constructor:Ur,point:function(t,e){this.stream.point(t,e)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var Wr=m(30*h);function Xr(t,e){return+e?function(t,e){function r(n,i,a,s,l,c,u,f,h,d,m,v,y,x){var b=u-n,_=f-i,w=b*b+_*_;if(w>4*e&&y--){var k=s+d,A=l+m,S=c+v,E=T(k*k+A*A+S*S),L=M(S/=E),C=p(p(S)-1)e||p((b*z+_*D)/w-.5)>.3||s*d+l*m+c*v2?t[2]%360*h:0,I()):[y*f,x*f,b*f]},C.angle=function(t){return arguments.length?(_=t%360*h,I()):_*f},C.reflectX=function(t){return arguments.length?(w=t?-1:1,I()):w<0},C.reflectY=function(t){return arguments.length?(k=t?-1:1,I()):k<0},C.precision=function(t){return arguments.length?(o=Xr(s,L=t*t),O()):T(L)},C.fitExtent=function(t,e){return Hr(C,t,e)},C.fitSize=function(t,e){return qr(C,t,e)},C.fitWidth=function(t,e){return Gr(C,t,e)},C.fitHeight=function(t,e){return Yr(C,t,e)},function(){return e=t.apply(this,arguments),C.invert=e.invert&&P,I()}}function tn(t){var e=0,r=s/3,n=$r(t),i=n(e,r);return i.parallels=function(t){return arguments.length?n(e=t[0]*h,r=t[1]*h):[e*f,r*f]},i}function en(t,e){var r=_(t),n=(r+_(e))/2;if(p(n)0?e<-l+o&&(e=-l+o):e>l-o&&(e=l-o);var r=i/b(fn(e),n);return[r*_(n*t),i-r*m(n*t)]}return a.invert=function(t,e){var r=i-e,a=w(n)*T(t*t+r*r),o=g(t,p(r))*w(r);return r*n<0&&(o-=s*w(t)*w(r)),[o/n,2*d(b(i/a,1/n))-l]},a}function pn(t,e){return[t,e]}function dn(t,e){var r=m(t),n=t===e?_(t):(r-m(e))/(e-t),i=r/n+t;if(p(n)o&&--i>0);return[t/(.8707+(a=n*n)*(a*(a*a*a*(.003971-.001529*a)-.013791)-.131979)),n]},Tn.invert=on(M),kn.invert=on((function(t){return 2*d(t)})),An.invert=function(t,e){return[-e,2*d(y(t))-l]},t.geoAlbers=nn,t.geoAlbersUsa=function(){var t,e,r,n,i,a,s=nn(),l=rn().rotate([154,0]).center([-2,58.5]).parallels([55,65]),c=rn().rotate([157,0]).center([-3,19.9]).parallels([8,18]),u={point:function(t,e){a=[t,e]}};function f(t){var e=t[0],o=t[1];return a=null,r.point(e,o),a||(n.point(e,o),a)||(i.point(e,o),a)}function h(){return t=e=null,f}return f.invert=function(t){var e=s.scale(),r=s.translate(),n=(t[0]-r[0])/e,i=(t[1]-r[1])/e;return(i>=.12&&i<.234&&n>=-.425&&n<-.214?l:i>=.166&&i<.234&&n>=-.214&&n<-.115?c:s).invert(t)},f.stream=function(r){return t&&e===r?t:(n=[s.stream(e=r),l.stream(r),c.stream(r)],i=n.length,t={point:function(t,e){for(var r=-1;++rDt(n[0],n[1])&&(n[1]=i[1]),Dt(i[0],n[1])>Dt(n[0],n[1])&&(n[0]=i[0])):a.push(n=i);for(o=-1/0,e=0,n=a[r=a.length-1];e<=r;n=i,++e)i=a[e],(s=Dt(n[1],i[0]))>o&&(o=s,tt=i[0],rt=n[1])}return lt=ct=null,tt===1/0||et===1/0?[[NaN,NaN],[NaN,NaN]]:[[tt,et],[rt,nt]]},t.geoCentroid=function(t){ut=ft=ht=pt=dt=gt=mt=vt=yt=xt=bt=0,z(t,Bt);var e=yt,r=xt,n=bt,i=e*e+r*r+n*n;return i<1e-12&&(e=gt,r=mt,n=vt,ft2?t[2]+90:90]):[(t=r())[0],t[1],t[2]-90]},r([0,0,90]).scale(159.155)},t.geoTransverseMercatorRaw=An,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{\"d3-array\":107}],115:[function(t,e,r){!function(t,n){\"object\"==typeof r&&void 0!==e?n(r):n((t=t||self).d3=t.d3||{})}(this,(function(t){\"use strict\";function e(t,e){return t.parent===e.parent?1:2}function r(t,e){return t+e.x}function n(t,e){return Math.max(t,e.y)}function i(t){var e=0,r=t.children,n=r&&r.length;if(n)for(;--n>=0;)e+=r[n].value;else e=1;t.value=e}function a(t,e){var r,n,i,a,s,u=new c(t),f=+t.value&&(u.value=t.value),h=[u];for(null==e&&(e=o);r=h.pop();)if(f&&(r.value=+r.data.value),(i=e(r.data))&&(s=i.length))for(r.children=new Array(s),a=s-1;a>=0;--a)h.push(n=r.children[a]=new c(i[a])),n.parent=r,n.depth=r.depth+1;return u.eachBefore(l)}function o(t){return t.children}function s(t){t.data=t.data.data}function l(t){var e=0;do{t.height=e}while((t=t.parent)&&t.height<++e)}function c(t){this.data=t,this.depth=this.height=0,this.parent=null}c.prototype=a.prototype={constructor:c,count:function(){return this.eachAfter(i)},each:function(t){var e,r,n,i,a=this,o=[a];do{for(e=o.reverse(),o=[];a=e.pop();)if(t(a),r=a.children)for(n=0,i=r.length;n=0;--r)i.push(e[r]);return this},sum:function(t){return this.eachAfter((function(e){for(var r=+t(e.data)||0,n=e.children,i=n&&n.length;--i>=0;)r+=n[i].value;e.value=r}))},sort:function(t){return this.eachBefore((function(e){e.children&&e.children.sort(t)}))},path:function(t){for(var e=this,r=function(t,e){if(t===e)return t;var r=t.ancestors(),n=e.ancestors(),i=null;t=r.pop(),e=n.pop();for(;t===e;)i=t,t=r.pop(),e=n.pop();return i}(e,t),n=[e];e!==r;)e=e.parent,n.push(e);for(var i=n.length;t!==r;)n.splice(i,0,t),t=t.parent;return n},ancestors:function(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e},descendants:function(){var t=[];return this.each((function(e){t.push(e)})),t},leaves:function(){var t=[];return this.eachBefore((function(e){e.children||t.push(e)})),t},links:function(){var t=this,e=[];return t.each((function(r){r!==t&&e.push({source:r.parent,target:r})})),e},copy:function(){return a(this).eachBefore(s)}};var u=Array.prototype.slice;function f(t){for(var e,r,n=0,i=(t=function(t){for(var e,r,n=t.length;n;)r=Math.random()*n--|0,e=t[n],t[n]=t[r],t[r]=e;return t}(u.call(t))).length,a=[];n0&&r*r>n*n+i*i}function g(t,e){for(var r=0;r(o*=o)?(n=(c+o-i)/(2*c),a=Math.sqrt(Math.max(0,o/c-n*n)),r.x=t.x-n*s-a*l,r.y=t.y-n*l+a*s):(n=(c+i-o)/(2*c),a=Math.sqrt(Math.max(0,i/c-n*n)),r.x=e.x+n*s-a*l,r.y=e.y+n*l+a*s)):(r.x=e.x+r.r,r.y=e.y)}function b(t,e){var r=t.r+e.r-1e-6,n=e.x-t.x,i=e.y-t.y;return r>0&&r*r>n*n+i*i}function _(t){var e=t._,r=t.next._,n=e.r+r.r,i=(e.x*r.r+r.x*e.r)/n,a=(e.y*r.r+r.y*e.r)/n;return i*i+a*a}function w(t){this._=t,this.next=null,this.previous=null}function T(t){if(!(i=t.length))return 0;var e,r,n,i,a,o,s,l,c,u,h;if((e=t[0]).x=0,e.y=0,!(i>1))return e.r;if(r=t[1],e.x=-r.r,r.x=e.r,r.y=0,!(i>2))return e.r+r.r;x(r,e,n=t[2]),e=new w(e),r=new w(r),n=new w(n),e.next=n.previous=r,r.next=e.previous=n,n.next=r.previous=e;t:for(s=3;sh&&(h=s),m=u*u*g,(p=Math.max(h/m,m/f))>d){u-=s;break}d=p}v.push(o={value:u,dice:l1?e:1)},r}(G);var X=function t(e){function r(t,r,n,i,a){if((o=t._squarify)&&o.ratio===e)for(var o,s,l,c,u,f=-1,h=o.length,p=t.value;++f1?e:1)},r}(G);t.cluster=function(){var t=e,i=1,a=1,o=!1;function s(e){var s,l=0;e.eachAfter((function(e){var i=e.children;i?(e.x=function(t){return t.reduce(r,0)/t.length}(i),e.y=function(t){return 1+t.reduce(n,0)}(i)):(e.x=s?l+=t(e,s):0,e.y=0,s=e)}));var c=function(t){for(var e;e=t.children;)t=e[0];return t}(e),u=function(t){for(var e;e=t.children;)t=e[e.length-1];return t}(e),f=c.x-t(c,u)/2,h=u.x+t(u,c)/2;return e.eachAfter(o?function(t){t.x=(t.x-e.x)*i,t.y=(e.y-t.y)*a}:function(t){t.x=(t.x-f)/(h-f)*i,t.y=(1-(e.y?t.y/e.y:1))*a})}return s.separation=function(e){return arguments.length?(t=e,s):t},s.size=function(t){return arguments.length?(o=!1,i=+t[0],a=+t[1],s):o?null:[i,a]},s.nodeSize=function(t){return arguments.length?(o=!0,i=+t[0],a=+t[1],s):o?[i,a]:null},s},t.hierarchy=a,t.pack=function(){var t=null,e=1,r=1,n=M;function i(i){return i.x=e/2,i.y=r/2,t?i.eachBefore(L(t)).eachAfter(C(n,.5)).eachBefore(P(1)):i.eachBefore(L(E)).eachAfter(C(M,1)).eachAfter(C(n,i.r/Math.min(e,r))).eachBefore(P(Math.min(e,r)/(2*i.r))),i}return i.radius=function(e){return arguments.length?(t=k(e),i):t},i.size=function(t){return arguments.length?(e=+t[0],r=+t[1],i):[e,r]},i.padding=function(t){return arguments.length?(n=\"function\"==typeof t?t:S(+t),i):n},i},t.packEnclose=f,t.packSiblings=function(t){return T(t),t},t.partition=function(){var t=1,e=1,r=0,n=!1;function i(i){var a=i.height+1;return i.x0=i.y0=r,i.x1=t,i.y1=e/a,i.eachBefore(function(t,e){return function(n){n.children&&O(n,n.x0,t*(n.depth+1)/e,n.x1,t*(n.depth+2)/e);var i=n.x0,a=n.y0,o=n.x1-r,s=n.y1-r;o0)throw new Error(\"cycle\");return a}return r.id=function(e){return arguments.length?(t=A(e),r):t},r.parentId=function(t){return arguments.length?(e=A(t),r):e},r},t.tree=function(){var t=B,e=1,r=1,n=null;function i(i){var l=function(t){for(var e,r,n,i,a,o=new H(t,0),s=[o];e=s.pop();)if(n=e._.children)for(e.children=new Array(a=n.length),i=a-1;i>=0;--i)s.push(r=e.children[i]=new H(n[i],i)),r.parent=e;return(o.parent=new H(null,0)).children=[o],o}(i);if(l.eachAfter(a),l.parent.m=-l.z,l.eachBefore(o),n)i.eachBefore(s);else{var c=i,u=i,f=i;i.eachBefore((function(t){t.xu.x&&(u=t),t.depth>f.depth&&(f=t)}));var h=c===u?1:t(c,u)/2,p=h-c.x,d=e/(u.x+h+p),g=r/(f.depth||1);i.eachBefore((function(t){t.x=(t.x+p)*d,t.y=t.depth*g}))}return i}function a(e){var r=e.children,n=e.parent.children,i=e.i?n[e.i-1]:null;if(r){!function(t){for(var e,r=0,n=0,i=t.children,a=i.length;--a>=0;)(e=i[a]).z+=r,e.m+=r,r+=e.s+(n+=e.c)}(e);var a=(r[0].z+r[r.length-1].z)/2;i?(e.z=i.z+t(e._,i._),e.m=e.z-a):e.z=a}else i&&(e.z=i.z+t(e._,i._));e.parent.A=function(e,r,n){if(r){for(var i,a=e,o=e,s=r,l=a.parent.children[0],c=a.m,u=o.m,f=s.m,h=l.m;s=j(s),a=N(a),s&&a;)l=N(l),(o=j(o)).a=e,(i=s.z+f-a.z-c+t(s._,a._))>0&&(U(V(s,e,n),e,i),c+=i,u+=i),f+=s.m,c+=a.m,h+=l.m,u+=o.m;s&&!j(o)&&(o.t=s,o.m+=f-u),a&&!N(l)&&(l.t=a,l.m+=c-h,n=e)}return n}(e,i,e.parent.A||n[0])}function o(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function s(t){t.x*=e,t.y=t.depth*r}return i.separation=function(e){return arguments.length?(t=e,i):t},i.size=function(t){return arguments.length?(n=!1,e=+t[0],r=+t[1],i):n?null:[e,r]},i.nodeSize=function(t){return arguments.length?(n=!0,e=+t[0],r=+t[1],i):n?[e,r]:null},i},t.treemap=function(){var t=W,e=!1,r=1,n=1,i=[0],a=M,o=M,s=M,l=M,c=M;function u(t){return t.x0=t.y0=0,t.x1=r,t.y1=n,t.eachBefore(f),i=[0],e&&t.eachBefore(I),t}function f(e){var r=i[e.depth],n=e.x0+r,u=e.y0+r,f=e.x1-r,h=e.y1-r;f=r-1){var u=s[e];return u.x0=i,u.y0=a,u.x1=o,void(u.y1=l)}var f=c[e],h=n/2+f,p=e+1,d=r-1;for(;p>>1;c[g]l-a){var y=(i*v+o*m)/n;t(e,p,m,i,a,y,l),t(p,r,v,y,a,o,l)}else{var x=(a*v+l*m)/n;t(e,p,m,i,a,o,x),t(p,r,v,i,x,o,l)}}(0,l,t.value,e,r,n,i)},t.treemapDice=O,t.treemapResquarify=X,t.treemapSlice=q,t.treemapSliceDice=function(t,e,r,n,i){(1&t.depth?q:O)(t,e,r,n,i)},t.treemapSquarify=W,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{}],116:[function(t,e,r){!function(n,i){\"object\"==typeof r&&void 0!==e?i(r,t(\"d3-color\")):i((n=n||self).d3=n.d3||{},n.d3)}(this,(function(t,e){\"use strict\";function r(t,e,r,n,i){var a=t*t,o=a*t;return((1-3*t+3*a-o)*e+(4-6*a+3*o)*r+(1+3*t+3*a-3*o)*n+o*i)/6}function n(t){var e=t.length-1;return function(n){var i=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),a=t[i],o=t[i+1],s=i>0?t[i-1]:2*a-o,l=i180||r<-180?r-360*Math.round(r/360):r):a(isNaN(t)?e:t)}function l(t){return 1==(t=+t)?c:function(e,r){return r-e?function(t,e,r){return t=Math.pow(t,r),e=Math.pow(e,r)-t,r=1/r,function(n){return Math.pow(t+n*e,r)}}(e,r,t):a(isNaN(e)?r:e)}}function c(t,e){var r=e-t;return r?o(t,r):a(isNaN(t)?e:t)}var u=function t(r){var n=l(r);function i(t,r){var i=n((t=e.rgb(t)).r,(r=e.rgb(r)).r),a=n(t.g,r.g),o=n(t.b,r.b),s=c(t.opacity,r.opacity);return function(e){return t.r=i(e),t.g=a(e),t.b=o(e),t.opacity=s(e),t+\"\"}}return i.gamma=t,i}(1);function f(t){return function(r){var n,i,a=r.length,o=new Array(a),s=new Array(a),l=new Array(a);for(n=0;na&&(i=e.slice(a,i),s[o]?s[o]+=i:s[++o]=i),(r=r[0])===(n=n[0])?s[o]?s[o]+=n:s[++o]=n:(s[++o]=null,l.push({i:o,x:y(r,n)})),a=_.lastIndex;return a180?e+=360:e-t>180&&(t+=360),a.push({i:r.push(i(r)+\"rotate(\",null,n)-2,x:y(t,e)})):e&&r.push(i(r)+\"rotate(\"+e+n)}(a.rotate,o.rotate,s,l),function(t,e,r,a){t!==e?a.push({i:r.push(i(r)+\"skewX(\",null,n)-2,x:y(t,e)}):e&&r.push(i(r)+\"skewX(\"+e+n)}(a.skewX,o.skewX,s,l),function(t,e,r,n,a,o){if(t!==r||e!==n){var s=a.push(i(a)+\"scale(\",null,\",\",null,\")\");o.push({i:s-4,x:y(t,r)},{i:s-2,x:y(e,n)})}else 1===r&&1===n||a.push(i(a)+\"scale(\"+r+\",\"+n+\")\")}(a.scaleX,a.scaleY,o.scaleX,o.scaleY,s,l),a=o=null,function(t){for(var e,r=-1,n=l.length;++r1e-6)if(Math.abs(f*l-c*u)>1e-6&&a){var p=n-o,d=i-s,g=l*l+c*c,m=p*p+d*d,v=Math.sqrt(g),y=Math.sqrt(h),x=a*Math.tan((e-Math.acos((g+h-m)/(2*v*y)))/2),b=x/y,_=x/v;Math.abs(b-1)>1e-6&&(this._+=\"L\"+(t+b*u)+\",\"+(r+b*f)),this._+=\"A\"+a+\",\"+a+\",0,0,\"+ +(f*p>u*d)+\",\"+(this._x1=t+_*l)+\",\"+(this._y1=r+_*c)}else this._+=\"L\"+(this._x1=t)+\",\"+(this._y1=r);else;},arc:function(t,i,a,o,s,l){t=+t,i=+i,l=!!l;var c=(a=+a)*Math.cos(o),u=a*Math.sin(o),f=t+c,h=i+u,p=1^l,d=l?o-s:s-o;if(a<0)throw new Error(\"negative radius: \"+a);null===this._x1?this._+=\"M\"+f+\",\"+h:(Math.abs(this._x1-f)>1e-6||Math.abs(this._y1-h)>1e-6)&&(this._+=\"L\"+f+\",\"+h),a&&(d<0&&(d=d%r+r),d>n?this._+=\"A\"+a+\",\"+a+\",0,1,\"+p+\",\"+(t-c)+\",\"+(i-u)+\"A\"+a+\",\"+a+\",0,1,\"+p+\",\"+(this._x1=f)+\",\"+(this._y1=h):d>1e-6&&(this._+=\"A\"+a+\",\"+a+\",0,\"+ +(d>=e)+\",\"+p+\",\"+(this._x1=t+a*Math.cos(s))+\",\"+(this._y1=i+a*Math.sin(s))))},rect:function(t,e,r,n){this._+=\"M\"+(this._x0=this._x1=+t)+\",\"+(this._y0=this._y1=+e)+\"h\"+ +r+\"v\"+ +n+\"h\"+-r+\"Z\"},toString:function(){return this._}},t.path=a,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{}],118:[function(t,e,r){!function(t,n){\"object\"==typeof r&&void 0!==e?n(r):n((t=t||self).d3=t.d3||{})}(this,(function(t){\"use strict\";function e(t,e,r,n){if(isNaN(e)||isNaN(r))return t;var i,a,o,s,l,c,u,f,h,p=t._root,d={data:n},g=t._x0,m=t._y0,v=t._x1,y=t._y1;if(!p)return t._root=d,t;for(;p.length;)if((c=e>=(a=(g+v)/2))?g=a:v=a,(u=r>=(o=(m+y)/2))?m=o:y=o,i=p,!(p=p[f=u<<1|c]))return i[f]=d,t;if(s=+t._x.call(null,p.data),l=+t._y.call(null,p.data),e===s&&r===l)return d.next=p,i?i[f]=d:t._root=d,t;do{i=i?i[f]=new Array(4):t._root=new Array(4),(c=e>=(a=(g+v)/2))?g=a:v=a,(u=r>=(o=(m+y)/2))?m=o:y=o}while((f=u<<1|c)==(h=(l>=o)<<1|s>=a));return i[h]=p,i[f]=d,t}function r(t,e,r,n,i){this.node=t,this.x0=e,this.y0=r,this.x1=n,this.y1=i}function n(t){return t[0]}function i(t){return t[1]}function a(t,e,r){var a=new o(null==e?n:e,null==r?i:r,NaN,NaN,NaN,NaN);return null==t?a:a.addAll(t)}function o(t,e,r,n,i,a){this._x=t,this._y=e,this._x0=r,this._y0=n,this._x1=i,this._y1=a,this._root=void 0}function s(t){for(var e={data:t.data},r=e;t=t.next;)r=r.next={data:t.data};return e}var l=a.prototype=o.prototype;l.copy=function(){var t,e,r=new o(this._x,this._y,this._x0,this._y0,this._x1,this._y1),n=this._root;if(!n)return r;if(!n.length)return r._root=s(n),r;for(t=[{source:n,target:r._root=new Array(4)}];n=t.pop();)for(var i=0;i<4;++i)(e=n.source[i])&&(e.length?t.push({source:e,target:n.target[i]=new Array(4)}):n.target[i]=s(e));return r},l.add=function(t){var r=+this._x.call(null,t),n=+this._y.call(null,t);return e(this.cover(r,n),r,n,t)},l.addAll=function(t){var r,n,i,a,o=t.length,s=new Array(o),l=new Array(o),c=1/0,u=1/0,f=-1/0,h=-1/0;for(n=0;nf&&(f=i),ah&&(h=a));if(c>f||u>h)return this;for(this.cover(c,u).cover(f,h),n=0;nt||t>=i||n>e||e>=a;)switch(s=(ep||(o=c.y0)>d||(s=c.x1)=y)<<1|t>=v)&&(c=g[g.length-1],g[g.length-1]=g[g.length-1-u],g[g.length-1-u]=c)}else{var x=t-+this._x.call(null,m.data),b=e-+this._y.call(null,m.data),_=x*x+b*b;if(_=(s=(d+m)/2))?d=s:m=s,(u=o>=(l=(g+v)/2))?g=l:v=l,e=p,!(p=p[f=u<<1|c]))return this;if(!p.length)break;(e[f+1&3]||e[f+2&3]||e[f+3&3])&&(r=e,h=f)}for(;p.data!==t;)if(n=p,!(p=p.next))return this;return(i=p.next)&&delete p.next,n?(i?n.next=i:delete n.next,this):e?(i?e[f]=i:delete e[f],(p=e[0]||e[1]||e[2]||e[3])&&p===(e[3]||e[2]||e[1]||e[0])&&!p.length&&(r?r[h]=p:this._root=p),this):(this._root=i,this)},l.removeAll=function(t){for(var e=0,r=t.length;e1?0:t<-1?u:Math.acos(t)}function d(t){return t>=1?f:t<=-1?-f:Math.asin(t)}function g(t){return t.innerRadius}function m(t){return t.outerRadius}function v(t){return t.startAngle}function y(t){return t.endAngle}function x(t){return t&&t.padAngle}function b(t,e,r,n,i,a,o,s){var l=r-t,c=n-e,u=o-i,f=s-a,h=f*l-u*c;if(!(h*h<1e-12))return[t+(h=(u*(e-a)-f*(t-i))/h)*l,e+h*c]}function _(t,e,r,n,i,a,s){var l=t-r,u=e-n,f=(s?a:-a)/c(l*l+u*u),h=f*u,p=-f*l,d=t+h,g=e+p,m=r+h,v=n+p,y=(d+m)/2,x=(g+v)/2,b=m-d,_=v-g,w=b*b+_*_,T=i-a,k=d*v-m*g,A=(_<0?-1:1)*c(o(0,T*T*w-k*k)),M=(k*_-b*A)/w,S=(-k*b-_*A)/w,E=(k*_+b*A)/w,L=(-k*b+_*A)/w,C=M-y,P=S-x,I=E-y,O=L-x;return C*C+P*P>I*I+O*O&&(M=E,S=L),{cx:M,cy:S,x01:-h,y01:-p,x11:M*(i/T-1),y11:S*(i/T-1)}}function w(t){this._context=t}function T(t){return new w(t)}function k(t){return t[0]}function A(t){return t[1]}function M(){var t=k,n=A,i=r(!0),a=null,o=T,s=null;function l(r){var l,c,u,f=r.length,h=!1;for(null==a&&(s=o(u=e.path())),l=0;l<=f;++l)!(l=f;--h)c.point(v[h],y[h]);c.lineEnd(),c.areaEnd()}m&&(v[u]=+t(p,u,r),y[u]=+i(p,u,r),c.point(n?+n(p,u,r):v[u],a?+a(p,u,r):y[u]))}if(d)return c=null,d+\"\"||null}function f(){return M().defined(o).curve(l).context(s)}return u.x=function(e){return arguments.length?(t=\"function\"==typeof e?e:r(+e),n=null,u):t},u.x0=function(e){return arguments.length?(t=\"function\"==typeof e?e:r(+e),u):t},u.x1=function(t){return arguments.length?(n=null==t?null:\"function\"==typeof t?t:r(+t),u):n},u.y=function(t){return arguments.length?(i=\"function\"==typeof t?t:r(+t),a=null,u):i},u.y0=function(t){return arguments.length?(i=\"function\"==typeof t?t:r(+t),u):i},u.y1=function(t){return arguments.length?(a=null==t?null:\"function\"==typeof t?t:r(+t),u):a},u.lineX0=u.lineY0=function(){return f().x(t).y(i)},u.lineY1=function(){return f().x(t).y(a)},u.lineX1=function(){return f().x(n).y(i)},u.defined=function(t){return arguments.length?(o=\"function\"==typeof t?t:r(!!t),u):o},u.curve=function(t){return arguments.length?(l=t,null!=s&&(c=l(s)),u):l},u.context=function(t){return arguments.length?(null==t?s=c=null:c=l(s=t),u):s},u}function E(t,e){return et?1:e>=t?0:NaN}function L(t){return t}w.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e)}}};var C=I(T);function P(t){this._curve=t}function I(t){function e(e){return new P(t(e))}return e._curve=t,e}function O(t){var e=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?e(I(t)):e()._curve},t}function z(){return O(M().curve(C))}function D(){var t=S().curve(C),e=t.curve,r=t.lineX0,n=t.lineX1,i=t.lineY0,a=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return O(r())},delete t.lineX0,t.lineEndAngle=function(){return O(n())},delete t.lineX1,t.lineInnerRadius=function(){return O(i())},delete t.lineY0,t.lineOuterRadius=function(){return O(a())},delete t.lineY1,t.curve=function(t){return arguments.length?e(I(t)):e()._curve},t}function R(t,e){return[(e=+e)*Math.cos(t-=Math.PI/2),e*Math.sin(t)]}P.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,e){this._curve.point(e*Math.sin(t),e*-Math.cos(t))}};var F=Array.prototype.slice;function B(t){return t.source}function N(t){return t.target}function j(t){var n=B,i=N,a=k,o=A,s=null;function l(){var r,l=F.call(arguments),c=n.apply(this,l),u=i.apply(this,l);if(s||(s=r=e.path()),t(s,+a.apply(this,(l[0]=c,l)),+o.apply(this,l),+a.apply(this,(l[0]=u,l)),+o.apply(this,l)),r)return s=null,r+\"\"||null}return l.source=function(t){return arguments.length?(n=t,l):n},l.target=function(t){return arguments.length?(i=t,l):i},l.x=function(t){return arguments.length?(a=\"function\"==typeof t?t:r(+t),l):a},l.y=function(t){return arguments.length?(o=\"function\"==typeof t?t:r(+t),l):o},l.context=function(t){return arguments.length?(s=null==t?null:t,l):s},l}function U(t,e,r,n,i){t.moveTo(e,r),t.bezierCurveTo(e=(e+n)/2,r,e,i,n,i)}function V(t,e,r,n,i){t.moveTo(e,r),t.bezierCurveTo(e,r=(r+i)/2,n,r,n,i)}function H(t,e,r,n,i){var a=R(e,r),o=R(e,r=(r+i)/2),s=R(n,r),l=R(n,i);t.moveTo(a[0],a[1]),t.bezierCurveTo(o[0],o[1],s[0],s[1],l[0],l[1])}var q={draw:function(t,e){var r=Math.sqrt(e/u);t.moveTo(r,0),t.arc(0,0,r,0,h)}},G={draw:function(t,e){var r=Math.sqrt(e/5)/2;t.moveTo(-3*r,-r),t.lineTo(-r,-r),t.lineTo(-r,-3*r),t.lineTo(r,-3*r),t.lineTo(r,-r),t.lineTo(3*r,-r),t.lineTo(3*r,r),t.lineTo(r,r),t.lineTo(r,3*r),t.lineTo(-r,3*r),t.lineTo(-r,r),t.lineTo(-3*r,r),t.closePath()}},Y=Math.sqrt(1/3),W=2*Y,X={draw:function(t,e){var r=Math.sqrt(e/W),n=r*Y;t.moveTo(0,-r),t.lineTo(n,0),t.lineTo(0,r),t.lineTo(-n,0),t.closePath()}},Z=Math.sin(u/10)/Math.sin(7*u/10),J=Math.sin(h/10)*Z,K=-Math.cos(h/10)*Z,Q={draw:function(t,e){var r=Math.sqrt(.8908130915292852*e),n=J*r,i=K*r;t.moveTo(0,-r),t.lineTo(n,i);for(var a=1;a<5;++a){var o=h*a/5,s=Math.cos(o),l=Math.sin(o);t.lineTo(l*r,-s*r),t.lineTo(s*n-l*i,l*n+s*i)}t.closePath()}},$={draw:function(t,e){var r=Math.sqrt(e),n=-r/2;t.rect(n,n,r,r)}},tt=Math.sqrt(3),et={draw:function(t,e){var r=-Math.sqrt(e/(3*tt));t.moveTo(0,2*r),t.lineTo(-tt*r,-r),t.lineTo(tt*r,-r),t.closePath()}},rt=-.5,nt=Math.sqrt(3)/2,it=1/Math.sqrt(12),at=3*(it/2+1),ot={draw:function(t,e){var r=Math.sqrt(e/at),n=r/2,i=r*it,a=n,o=r*it+r,s=-a,l=o;t.moveTo(n,i),t.lineTo(a,o),t.lineTo(s,l),t.lineTo(rt*n-nt*i,nt*n+rt*i),t.lineTo(rt*a-nt*o,nt*a+rt*o),t.lineTo(rt*s-nt*l,nt*s+rt*l),t.lineTo(rt*n+nt*i,rt*i-nt*n),t.lineTo(rt*a+nt*o,rt*o-nt*a),t.lineTo(rt*s+nt*l,rt*l-nt*s),t.closePath()}},st=[q,G,X,$,Q,et,ot];function lt(){}function ct(t,e,r){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+r)/6)}function ut(t){this._context=t}function ft(t){this._context=t}function ht(t){this._context=t}function pt(t,e){this._basis=new ut(t),this._beta=e}ut.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:ct(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:ct(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},ft.prototype={areaStart:lt,areaEnd:lt,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:ct(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},ht.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+t)/6,n=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(r,n):this._context.moveTo(r,n);break;case 3:this._point=4;default:ct(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},pt.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,r=t.length-1;if(r>0)for(var n,i=t[0],a=e[0],o=t[r]-i,s=e[r]-a,l=-1;++l<=r;)n=l/r,this._basis.point(this._beta*t[l]+(1-this._beta)*(i+n*o),this._beta*e[l]+(1-this._beta)*(a+n*s));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};var dt=function t(e){function r(t){return 1===e?new ut(t):new pt(t,e)}return r.beta=function(e){return t(+e)},r}(.85);function gt(t,e,r){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-r),t._x2,t._y2)}function mt(t,e){this._context=t,this._k=(1-e)/6}mt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:gt(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:gt(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var vt=function t(e){function r(t){return new mt(t,e)}return r.tension=function(e){return t(+e)},r}(0);function yt(t,e){this._context=t,this._k=(1-e)/6}yt.prototype={areaStart:lt,areaEnd:lt,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:gt(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var xt=function t(e){function r(t){return new yt(t,e)}return r.tension=function(e){return t(+e)},r}(0);function bt(t,e){this._context=t,this._k=(1-e)/6}bt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:gt(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var _t=function t(e){function r(t){return new bt(t,e)}return r.tension=function(e){return t(+e)},r}(0);function wt(t,e,r){var n=t._x1,i=t._y1,a=t._x2,o=t._y2;if(t._l01_a>1e-12){var s=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,l=3*t._l01_a*(t._l01_a+t._l12_a);n=(n*s-t._x0*t._l12_2a+t._x2*t._l01_2a)/l,i=(i*s-t._y0*t._l12_2a+t._y2*t._l01_2a)/l}if(t._l23_a>1e-12){var c=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,u=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*c+t._x1*t._l23_2a-e*t._l12_2a)/u,o=(o*c+t._y1*t._l23_2a-r*t._l12_2a)/u}t._context.bezierCurveTo(n,i,a,o,t._x2,t._y2)}function Tt(t,e){this._context=t,this._alpha=e}Tt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:wt(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var kt=function t(e){function r(t){return e?new Tt(t,e):new mt(t,0)}return r.alpha=function(e){return t(+e)},r}(.5);function At(t,e){this._context=t,this._alpha=e}At.prototype={areaStart:lt,areaEnd:lt,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:wt(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Mt=function t(e){function r(t){return e?new At(t,e):new yt(t,0)}return r.alpha=function(e){return t(+e)},r}(.5);function St(t,e){this._context=t,this._alpha=e}St.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:wt(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Et=function t(e){function r(t){return e?new St(t,e):new bt(t,0)}return r.alpha=function(e){return t(+e)},r}(.5);function Lt(t){this._context=t}function Ct(t){return t<0?-1:1}function Pt(t,e,r){var n=t._x1-t._x0,i=e-t._x1,a=(t._y1-t._y0)/(n||i<0&&-0),o=(r-t._y1)/(i||n<0&&-0),s=(a*i+o*n)/(n+i);return(Ct(a)+Ct(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(s))||0}function It(t,e){var r=t._x1-t._x0;return r?(3*(t._y1-t._y0)/r-e)/2:e}function Ot(t,e,r){var n=t._x0,i=t._y0,a=t._x1,o=t._y1,s=(a-n)/3;t._context.bezierCurveTo(n+s,i+s*e,a-s,o-s*r,a,o)}function zt(t){this._context=t}function Dt(t){this._context=new Rt(t)}function Rt(t){this._context=t}function Ft(t){this._context=t}function Bt(t){var e,r,n=t.length-1,i=new Array(n),a=new Array(n),o=new Array(n);for(i[0]=0,a[0]=2,o[0]=t[0]+2*t[1],e=1;e=0;--e)i[e]=(o[e]-i[e+1])/a[e];for(a[n-1]=(t[n]+i[n-1])/2,e=0;e1)for(var r,n,i,a=1,o=t[e[0]],s=o.length;a=0;)r[e]=e;return r}function Vt(t,e){return t[e]}function Ht(t){var e=t.map(qt);return Ut(t).sort((function(t,r){return e[t]-e[r]}))}function qt(t){for(var e,r=-1,n=0,i=t.length,a=-1/0;++ra&&(a=e,n=r);return n}function Gt(t){var e=t.map(Yt);return Ut(t).sort((function(t,r){return e[t]-e[r]}))}function Yt(t){for(var e,r=0,n=-1,i=t.length;++n=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var r=this._x*(1-this._t)+t*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,e)}}this._x=t,this._y=e}},t.arc=function(){var t=g,o=m,w=r(0),T=null,k=v,A=y,M=x,S=null;function E(){var r,g,m=+t.apply(this,arguments),v=+o.apply(this,arguments),y=k.apply(this,arguments)-f,x=A.apply(this,arguments)-f,E=n(x-y),L=x>y;if(S||(S=r=e.path()),v1e-12)if(E>h-1e-12)S.moveTo(v*a(y),v*l(y)),S.arc(0,0,v,y,x,!L),m>1e-12&&(S.moveTo(m*a(x),m*l(x)),S.arc(0,0,m,x,y,L));else{var C,P,I=y,O=x,z=y,D=x,R=E,F=E,B=M.apply(this,arguments)/2,N=B>1e-12&&(T?+T.apply(this,arguments):c(m*m+v*v)),j=s(n(v-m)/2,+w.apply(this,arguments)),U=j,V=j;if(N>1e-12){var H=d(N/m*l(B)),q=d(N/v*l(B));(R-=2*H)>1e-12?(z+=H*=L?1:-1,D-=H):(R=0,z=D=(y+x)/2),(F-=2*q)>1e-12?(I+=q*=L?1:-1,O-=q):(F=0,I=O=(y+x)/2)}var G=v*a(I),Y=v*l(I),W=m*a(D),X=m*l(D);if(j>1e-12){var Z,J=v*a(O),K=v*l(O),Q=m*a(z),$=m*l(z);if(E1e-12?V>1e-12?(C=_(Q,$,G,Y,v,V,L),P=_(J,K,W,X,v,V,L),S.moveTo(C.cx+C.x01,C.cy+C.y01),V1e-12&&R>1e-12?U>1e-12?(C=_(W,X,J,K,m,-U,L),P=_(G,Y,Q,$,m,-U,L),S.lineTo(C.cx+C.x01,C.cy+C.y01),U0&&(d+=f);for(null!=e?g.sort((function(t,r){return e(m[t],m[r])})):null!=n&&g.sort((function(t,e){return n(r[t],r[e])})),s=0,c=d?(y-p*b)/d:0;s0?f*c:0)+b,m[l]={data:r[l],index:s,value:f,startAngle:v,endAngle:u,padAngle:x};return m}return s.value=function(e){return arguments.length?(t=\"function\"==typeof e?e:r(+e),s):t},s.sortValues=function(t){return arguments.length?(e=t,n=null,s):e},s.sort=function(t){return arguments.length?(n=t,e=null,s):n},s.startAngle=function(t){return arguments.length?(i=\"function\"==typeof t?t:r(+t),s):i},s.endAngle=function(t){return arguments.length?(a=\"function\"==typeof t?t:r(+t),s):a},s.padAngle=function(t){return arguments.length?(o=\"function\"==typeof t?t:r(+t),s):o},s},t.pointRadial=R,t.radialArea=D,t.radialLine=z,t.stack=function(){var t=r([]),e=Ut,n=jt,i=Vt;function a(r){var a,o,s=t.apply(this,arguments),l=r.length,c=s.length,u=new Array(c);for(a=0;a0)for(var r,n,i,a,o,s,l=0,c=t[e[0]].length;l0?(n[0]=a,n[1]=a+=i):i<0?(n[1]=o,n[0]=o+=i):(n[0]=0,n[1]=i)},t.stackOffsetExpand=function(t,e){if((n=t.length)>0){for(var r,n,i,a=0,o=t[0].length;a0){for(var r,n=0,i=t[e[0]],a=i.length;n0&&(n=(r=t[e[0]]).length)>0){for(var r,n,i,a=0,o=1;o=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:mt,s:vt,S:H,u:q,U:G,V:Y,w:W,W:X,x:null,X:null,y:Z,Y:J,Z:K,\"%\":gt},Ct={a:function(t){return f[t.getUTCDay()]},A:function(t){return u[t.getUTCDay()]},b:function(t){return yt[t.getUTCMonth()]},B:function(t){return h[t.getUTCMonth()]},c:null,d:Q,e:Q,f:nt,H:$,I:tt,j:et,L:rt,m:it,M:at,p:function(t){return c[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:mt,s:vt,S:ot,u:st,U:lt,V:ct,w:ut,W:ft,x:null,X:null,y:ht,Y:pt,Z:dt,\"%\":gt},Pt={a:function(t,e,r){var n=Tt.exec(e.slice(r));return n?(t.w=kt[n[0].toLowerCase()],r+n[0].length):-1},A:function(t,e,r){var n=_t.exec(e.slice(r));return n?(t.w=wt[n[0].toLowerCase()],r+n[0].length):-1},b:function(t,e,r){var n=St.exec(e.slice(r));return n?(t.m=Et[n[0].toLowerCase()],r+n[0].length):-1},B:function(t,e,r){var n=At.exec(e.slice(r));return n?(t.m=Mt[n[0].toLowerCase()],r+n[0].length):-1},c:function(t,e,r){return zt(t,a,e,r)},d:A,e:A,f:P,H:S,I:S,j:M,L:C,m:k,M:E,p:function(t,e,r){var n=xt.exec(e.slice(r));return n?(t.p=bt[n[0].toLowerCase()],r+n[0].length):-1},q:T,Q:O,s:z,S:L,u:m,U:v,V:y,w:g,W:x,x:function(t,e,r){return zt(t,o,e,r)},X:function(t,e,r){return zt(t,l,e,r)},y:_,Y:b,Z:w,\"%\":I};function It(t,e){return function(r){var n,i,a,o=[],l=-1,c=0,u=t.length;for(r instanceof Date||(r=new Date(+r));++l53)return null;\"w\"in c||(c.w=1),\"Z\"in c?(l=(s=n(i(c.y,0,1))).getUTCDay(),s=l>4||0===l?e.utcMonday.ceil(s):e.utcMonday(s),s=e.utcDay.offset(s,7*(c.V-1)),c.y=s.getUTCFullYear(),c.m=s.getUTCMonth(),c.d=s.getUTCDate()+(c.w+6)%7):(l=(s=r(i(c.y,0,1))).getDay(),s=l>4||0===l?e.timeMonday.ceil(s):e.timeMonday(s),s=e.timeDay.offset(s,7*(c.V-1)),c.y=s.getFullYear(),c.m=s.getMonth(),c.d=s.getDate()+(c.w+6)%7)}else(\"W\"in c||\"U\"in c)&&(\"w\"in c||(c.w=\"u\"in c?c.u%7:\"W\"in c?1:0),l=\"Z\"in c?n(i(c.y,0,1)).getUTCDay():r(i(c.y,0,1)).getDay(),c.m=0,c.d=\"W\"in c?(c.w+6)%7+7*c.W-(l+5)%7:c.w+7*c.U-(l+6)%7);return\"Z\"in c?(c.H+=c.Z/100|0,c.M+=c.Z%100,n(c)):r(c)}}function zt(t,e,r,n){for(var i,a,o=0,l=e.length,c=r.length;o=c)return-1;if(37===(i=e.charCodeAt(o++))){if(i=e.charAt(o++),!(a=Pt[i in s?e.charAt(o++):i])||(n=a(t,r,n))<0)return-1}else if(i!=r.charCodeAt(n++))return-1}return n}return Lt.x=It(o,Lt),Lt.X=It(l,Lt),Lt.c=It(a,Lt),Ct.x=It(o,Ct),Ct.X=It(l,Ct),Ct.c=It(a,Ct),{format:function(t){var e=It(t+=\"\",Lt);return e.toString=function(){return t},e},parse:function(t){var e=Ot(t+=\"\",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=It(t+=\"\",Ct);return e.toString=function(){return t},e},utcParse:function(t){var e=Ot(t+=\"\",!0);return e.toString=function(){return t},e}}}var o,s={\"-\":\"\",_:\" \",0:\"0\"},l=/^\\s*\\d+/,c=/^%/,u=/[\\\\^$*+?|[\\]().{}]/g;function f(t,e,r){var n=t<0?\"-\":\"\",i=(n?-t:t)+\"\",a=i.length;return n+(a68?1900:2e3),r+n[0].length):-1}function w(t,e,r){var n=/^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(e.slice(r,r+6));return n?(t.Z=n[1]?0:-(n[2]+(n[3]||\"00\")),r+n[0].length):-1}function T(t,e,r){var n=l.exec(e.slice(r,r+1));return n?(t.q=3*n[0]-3,r+n[0].length):-1}function k(t,e,r){var n=l.exec(e.slice(r,r+2));return n?(t.m=n[0]-1,r+n[0].length):-1}function A(t,e,r){var n=l.exec(e.slice(r,r+2));return n?(t.d=+n[0],r+n[0].length):-1}function M(t,e,r){var n=l.exec(e.slice(r,r+3));return n?(t.m=0,t.d=+n[0],r+n[0].length):-1}function S(t,e,r){var n=l.exec(e.slice(r,r+2));return n?(t.H=+n[0],r+n[0].length):-1}function E(t,e,r){var n=l.exec(e.slice(r,r+2));return n?(t.M=+n[0],r+n[0].length):-1}function L(t,e,r){var n=l.exec(e.slice(r,r+2));return n?(t.S=+n[0],r+n[0].length):-1}function C(t,e,r){var n=l.exec(e.slice(r,r+3));return n?(t.L=+n[0],r+n[0].length):-1}function P(t,e,r){var n=l.exec(e.slice(r,r+6));return n?(t.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function I(t,e,r){var n=c.exec(e.slice(r,r+1));return n?r+n[0].length:-1}function O(t,e,r){var n=l.exec(e.slice(r));return n?(t.Q=+n[0],r+n[0].length):-1}function z(t,e,r){var n=l.exec(e.slice(r));return n?(t.s=+n[0],r+n[0].length):-1}function D(t,e){return f(t.getDate(),e,2)}function R(t,e){return f(t.getHours(),e,2)}function F(t,e){return f(t.getHours()%12||12,e,2)}function B(t,r){return f(1+e.timeDay.count(e.timeYear(t),t),r,3)}function N(t,e){return f(t.getMilliseconds(),e,3)}function j(t,e){return N(t,e)+\"000\"}function U(t,e){return f(t.getMonth()+1,e,2)}function V(t,e){return f(t.getMinutes(),e,2)}function H(t,e){return f(t.getSeconds(),e,2)}function q(t){var e=t.getDay();return 0===e?7:e}function G(t,r){return f(e.timeSunday.count(e.timeYear(t)-1,t),r,2)}function Y(t,r){var n=t.getDay();return t=n>=4||0===n?e.timeThursday(t):e.timeThursday.ceil(t),f(e.timeThursday.count(e.timeYear(t),t)+(4===e.timeYear(t).getDay()),r,2)}function W(t){return t.getDay()}function X(t,r){return f(e.timeMonday.count(e.timeYear(t)-1,t),r,2)}function Z(t,e){return f(t.getFullYear()%100,e,2)}function J(t,e){return f(t.getFullYear()%1e4,e,4)}function K(t){var e=t.getTimezoneOffset();return(e>0?\"-\":(e*=-1,\"+\"))+f(e/60|0,\"0\",2)+f(e%60,\"0\",2)}function Q(t,e){return f(t.getUTCDate(),e,2)}function $(t,e){return f(t.getUTCHours(),e,2)}function tt(t,e){return f(t.getUTCHours()%12||12,e,2)}function et(t,r){return f(1+e.utcDay.count(e.utcYear(t),t),r,3)}function rt(t,e){return f(t.getUTCMilliseconds(),e,3)}function nt(t,e){return rt(t,e)+\"000\"}function it(t,e){return f(t.getUTCMonth()+1,e,2)}function at(t,e){return f(t.getUTCMinutes(),e,2)}function ot(t,e){return f(t.getUTCSeconds(),e,2)}function st(t){var e=t.getUTCDay();return 0===e?7:e}function lt(t,r){return f(e.utcSunday.count(e.utcYear(t)-1,t),r,2)}function ct(t,r){var n=t.getUTCDay();return t=n>=4||0===n?e.utcThursday(t):e.utcThursday.ceil(t),f(e.utcThursday.count(e.utcYear(t),t)+(4===e.utcYear(t).getUTCDay()),r,2)}function ut(t){return t.getUTCDay()}function ft(t,r){return f(e.utcMonday.count(e.utcYear(t)-1,t),r,2)}function ht(t,e){return f(t.getUTCFullYear()%100,e,2)}function pt(t,e){return f(t.getUTCFullYear()%1e4,e,4)}function dt(){return\"+0000\"}function gt(){return\"%\"}function mt(t){return+t}function vt(t){return Math.floor(+t/1e3)}function yt(e){return o=a(e),t.timeFormat=o.format,t.timeParse=o.parse,t.utcFormat=o.utcFormat,t.utcParse=o.utcParse,o}yt({dateTime:\"%x, %X\",date:\"%-m/%-d/%Y\",time:\"%-I:%M:%S %p\",periods:[\"AM\",\"PM\"],days:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],shortDays:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],months:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],shortMonths:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"]});var xt=Date.prototype.toISOString?function(t){return t.toISOString()}:t.utcFormat(\"%Y-%m-%dT%H:%M:%S.%LZ\");var bt=+new Date(\"2000-01-01T00:00:00.000Z\")?function(t){var e=new Date(t);return isNaN(e)?null:e}:t.utcParse(\"%Y-%m-%dT%H:%M:%S.%LZ\");t.isoFormat=xt,t.isoParse=bt,t.timeFormatDefaultLocale=yt,t.timeFormatLocale=a,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{\"d3-time\":121}],121:[function(t,e,r){!function(t,n){\"object\"==typeof r&&void 0!==e?n(r):n((t=t||self).d3=t.d3||{})}(this,(function(t){\"use strict\";var e=new Date,r=new Date;function n(t,i,a,o){function s(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return s.floor=function(e){return t(e=new Date(+e)),e},s.ceil=function(e){return t(e=new Date(e-1)),i(e,1),t(e),e},s.round=function(t){var e=s(t),r=s.ceil(t);return t-e0))return o;do{o.push(a=new Date(+e)),i(e,n),t(e)}while(a=r)for(;t(r),!e(r);)r.setTime(r-1)}),(function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;i(t,-1),!e(t););else for(;--r>=0;)for(;i(t,1),!e(t););}))},a&&(s.count=function(n,i){return e.setTime(+n),r.setTime(+i),t(e),t(r),Math.floor(a(e,r))},s.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?s.filter(o?function(e){return o(e)%t==0}:function(e){return s.count(0,e)%t==0}):s:null}),s}var i=n((function(){}),(function(t,e){t.setTime(+t+e)}),(function(t,e){return e-t}));i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?n((function(e){e.setTime(Math.floor(e/t)*t)}),(function(e,r){e.setTime(+e+r*t)}),(function(e,r){return(r-e)/t})):i:null};var a=i.range,o=n((function(t){t.setTime(t-t.getMilliseconds())}),(function(t,e){t.setTime(+t+1e3*e)}),(function(t,e){return(e-t)/1e3}),(function(t){return t.getUTCSeconds()})),s=o.range,l=n((function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds())}),(function(t,e){t.setTime(+t+6e4*e)}),(function(t,e){return(e-t)/6e4}),(function(t){return t.getMinutes()})),c=l.range,u=n((function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds()-6e4*t.getMinutes())}),(function(t,e){t.setTime(+t+36e5*e)}),(function(t,e){return(e-t)/36e5}),(function(t){return t.getHours()})),f=u.range,h=n((function(t){t.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+e)}),(function(t,e){return(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/864e5}),(function(t){return t.getDate()-1})),p=h.range;function d(t){return n((function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+7*e)}),(function(t,e){return(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/6048e5}))}var g=d(0),m=d(1),v=d(2),y=d(3),x=d(4),b=d(5),_=d(6),w=g.range,T=m.range,k=v.range,A=y.range,M=x.range,S=b.range,E=_.range,L=n((function(t){t.setDate(1),t.setHours(0,0,0,0)}),(function(t,e){t.setMonth(t.getMonth()+e)}),(function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())}),(function(t){return t.getMonth()})),C=L.range,P=n((function(t){t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,e){t.setFullYear(t.getFullYear()+e)}),(function(t,e){return e.getFullYear()-t.getFullYear()}),(function(t){return t.getFullYear()}));P.every=function(t){return isFinite(t=Math.floor(t))&&t>0?n((function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),(function(e,r){e.setFullYear(e.getFullYear()+r*t)})):null};var I=P.range,O=n((function(t){t.setUTCSeconds(0,0)}),(function(t,e){t.setTime(+t+6e4*e)}),(function(t,e){return(e-t)/6e4}),(function(t){return t.getUTCMinutes()})),z=O.range,D=n((function(t){t.setUTCMinutes(0,0,0)}),(function(t,e){t.setTime(+t+36e5*e)}),(function(t,e){return(e-t)/36e5}),(function(t){return t.getUTCHours()})),R=D.range,F=n((function(t){t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+e)}),(function(t,e){return(e-t)/864e5}),(function(t){return t.getUTCDate()-1})),B=F.range;function N(t){return n((function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+7*e)}),(function(t,e){return(e-t)/6048e5}))}var j=N(0),U=N(1),V=N(2),H=N(3),q=N(4),G=N(5),Y=N(6),W=j.range,X=U.range,Z=V.range,J=H.range,K=q.range,Q=G.range,$=Y.range,tt=n((function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCMonth(t.getUTCMonth()+e)}),(function(t,e){return e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())}),(function(t){return t.getUTCMonth()})),et=tt.range,rt=n((function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)}),(function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()}),(function(t){return t.getUTCFullYear()}));rt.every=function(t){return isFinite(t=Math.floor(t))&&t>0?n((function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),(function(e,r){e.setUTCFullYear(e.getUTCFullYear()+r*t)})):null};var nt=rt.range;t.timeDay=h,t.timeDays=p,t.timeFriday=b,t.timeFridays=S,t.timeHour=u,t.timeHours=f,t.timeInterval=n,t.timeMillisecond=i,t.timeMilliseconds=a,t.timeMinute=l,t.timeMinutes=c,t.timeMonday=m,t.timeMondays=T,t.timeMonth=L,t.timeMonths=C,t.timeSaturday=_,t.timeSaturdays=E,t.timeSecond=o,t.timeSeconds=s,t.timeSunday=g,t.timeSundays=w,t.timeThursday=x,t.timeThursdays=M,t.timeTuesday=v,t.timeTuesdays=k,t.timeWednesday=y,t.timeWednesdays=A,t.timeWeek=g,t.timeWeeks=w,t.timeYear=P,t.timeYears=I,t.utcDay=F,t.utcDays=B,t.utcFriday=G,t.utcFridays=Q,t.utcHour=D,t.utcHours=R,t.utcMillisecond=i,t.utcMilliseconds=a,t.utcMinute=O,t.utcMinutes=z,t.utcMonday=U,t.utcMondays=X,t.utcMonth=tt,t.utcMonths=et,t.utcSaturday=Y,t.utcSaturdays=$,t.utcSecond=o,t.utcSeconds=s,t.utcSunday=j,t.utcSundays=W,t.utcThursday=q,t.utcThursdays=K,t.utcTuesday=V,t.utcTuesdays=Z,t.utcWednesday=H,t.utcWednesdays=J,t.utcWeek=j,t.utcWeeks=W,t.utcYear=rt,t.utcYears=nt,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{}],122:[function(t,e,r){arguments[4][121][0].apply(r,arguments)},{dup:121}],123:[function(t,e,r){!function(t,n){\"object\"==typeof r&&void 0!==e?n(r):n((t=t||self).d3=t.d3||{})}(this,(function(t){\"use strict\";var e,r,n=0,i=0,a=0,o=0,s=0,l=0,c=\"object\"==typeof performance&&performance.now?performance:Date,u=\"object\"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function f(){return s||(u(h),s=c.now()+l)}function h(){s=0}function p(){this._call=this._time=this._next=null}function d(t,e,r){var n=new p;return n.restart(t,e,r),n}function g(){f(),++n;for(var t,r=e;r;)(t=s-r._time)>=0&&r._call.call(null,t),r=r._next;--n}function m(){s=(o=c.now())+l,n=i=0;try{g()}finally{n=0,function(){var t,n,i=e,a=1/0;for(;i;)i._call?(a>i._time&&(a=i._time),t=i,i=i._next):(n=i._next,i._next=null,i=t?t._next=n:e=n);r=t,y(a)}(),s=0}}function v(){var t=c.now(),e=t-o;e>1e3&&(l-=e,o=t)}function y(t){n||(i&&(i=clearTimeout(i)),t-s>24?(t<1/0&&(i=setTimeout(m,t-c.now()-l)),a&&(a=clearInterval(a))):(a||(o=c.now(),a=setInterval(v,1e3)),n=1,u(m)))}p.prototype=d.prototype={constructor:p,restart:function(t,n,i){if(\"function\"!=typeof t)throw new TypeError(\"callback is not a function\");i=(null==i?f():+i)+(null==n?0:+n),this._next||r===this||(r?r._next=this:e=this,r=this),this._call=t,this._time=i,y()},stop:function(){this._call&&(this._call=null,this._time=1/0,y())}},t.interval=function(t,e,r){var n=new p,i=e;return null==e?(n.restart(t,e,r),n):(e=+e,r=null==r?f():+r,n.restart((function a(o){o+=i,n.restart(a,i+=e,r),t(o)}),e,r),n)},t.now=f,t.timeout=function(t,e,r){var n=new p;return e=null==e?0:+e,n.restart((function(r){n.stop(),t(r+e)}),e,r),n},t.timer=d,t.timerFlush=g,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{}],124:[function(t,e,r){e.exports=function(){for(var t=0;ts*l){var p=(h-f)/s;a[u]=1e3*p}}return a}function o(t){for(var e=[],r=t[0];r<=t[1];r++)for(var n=String.fromCharCode(r),i=t[0];i0)return function(t,e){var r,n;for(r=new Array(t),n=0;n80*r){n=l=t[0],s=c=t[1];for(var b=r;bl&&(l=u),p>c&&(c=p);d=0!==(d=Math.max(l-n,c-s))?1/d:0}return o(y,x,r,n,s,d),x}function i(t,e,r,n,i){var a,o;if(i===E(t,e,r,n)>0)for(a=e;a=e;a-=n)o=A(a,t[a],t[a+1],o);return o&&x(o,o.next)&&(M(o),o=o.next),o}function a(t,e){if(!t)return t;e||(e=t);var r,n=t;do{if(r=!1,n.steiner||!x(n,n.next)&&0!==y(n.prev,n,n.next))n=n.next;else{if(M(n),(n=e=n.prev)===n.next)break;r=!0}}while(r||n!==e);return e}function o(t,e,r,n,i,f,h){if(t){!h&&f&&function(t,e,r,n){var i=t;do{null===i.z&&(i.z=d(i.x,i.y,e,r,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next}while(i!==t);i.prevZ.nextZ=null,i.prevZ=null,function(t){var e,r,n,i,a,o,s,l,c=1;do{for(r=t,t=null,a=null,o=0;r;){for(o++,n=r,s=0,e=0;e0||l>0&&n;)0!==s&&(0===l||!n||r.z<=n.z)?(i=r,r=r.nextZ,s--):(i=n,n=n.nextZ,l--),a?a.nextZ=i:t=i,i.prevZ=a,a=i;r=n}a.nextZ=null,c*=2}while(o>1)}(i)}(t,n,i,f);for(var p,g,m=t;t.prev!==t.next;)if(p=t.prev,g=t.next,f?l(t,n,i,f):s(t))e.push(p.i/r),e.push(t.i/r),e.push(g.i/r),M(t),t=g.next,m=g.next;else if((t=g)===m){h?1===h?o(t=c(a(t),e,r),e,r,n,i,f,2):2===h&&u(t,e,r,n,i,f):o(a(t),e,r,n,i,f,1);break}}}function s(t){var e=t.prev,r=t,n=t.next;if(y(e,r,n)>=0)return!1;for(var i=t.next.next;i!==t.prev;){if(m(e.x,e.y,r.x,r.y,n.x,n.y,i.x,i.y)&&y(i.prev,i,i.next)>=0)return!1;i=i.next}return!0}function l(t,e,r,n){var i=t.prev,a=t,o=t.next;if(y(i,a,o)>=0)return!1;for(var s=i.xa.x?i.x>o.x?i.x:o.x:a.x>o.x?a.x:o.x,u=i.y>a.y?i.y>o.y?i.y:o.y:a.y>o.y?a.y:o.y,f=d(s,l,e,r,n),h=d(c,u,e,r,n),p=t.prevZ,g=t.nextZ;p&&p.z>=f&&g&&g.z<=h;){if(p!==t.prev&&p!==t.next&&m(i.x,i.y,a.x,a.y,o.x,o.y,p.x,p.y)&&y(p.prev,p,p.next)>=0)return!1;if(p=p.prevZ,g!==t.prev&&g!==t.next&&m(i.x,i.y,a.x,a.y,o.x,o.y,g.x,g.y)&&y(g.prev,g,g.next)>=0)return!1;g=g.nextZ}for(;p&&p.z>=f;){if(p!==t.prev&&p!==t.next&&m(i.x,i.y,a.x,a.y,o.x,o.y,p.x,p.y)&&y(p.prev,p,p.next)>=0)return!1;p=p.prevZ}for(;g&&g.z<=h;){if(g!==t.prev&&g!==t.next&&m(i.x,i.y,a.x,a.y,o.x,o.y,g.x,g.y)&&y(g.prev,g,g.next)>=0)return!1;g=g.nextZ}return!0}function c(t,e,r){var n=t;do{var i=n.prev,o=n.next.next;!x(i,o)&&b(i,n,n.next,o)&&T(i,o)&&T(o,i)&&(e.push(i.i/r),e.push(n.i/r),e.push(o.i/r),M(n),M(n.next),n=t=o),n=n.next}while(n!==t);return a(n)}function u(t,e,r,n,i,s){var l=t;do{for(var c=l.next.next;c!==l.prev;){if(l.i!==c.i&&v(l,c)){var u=k(l,c);return l=a(l,l.next),u=a(u,u.next),o(l,e,r,n,i,s),void o(u,e,r,n,i,s)}c=c.next}l=l.next}while(l!==t)}function f(t,e){return t.x-e.x}function h(t,e){if(e=function(t,e){var r,n=e,i=t.x,a=t.y,o=-1/0;do{if(a<=n.y&&a>=n.next.y&&n.next.y!==n.y){var s=n.x+(a-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(s<=i&&s>o){if(o=s,s===i){if(a===n.y)return n;if(a===n.next.y)return n.next}r=n.x=n.x&&n.x>=u&&i!==n.x&&m(ar.x||n.x===r.x&&p(r,n)))&&(r=n,h=l)),n=n.next}while(n!==c);return r}(t,e)){var r=k(e,t);a(e,e.next),a(r,r.next)}}function p(t,e){return y(t.prev,t,e.prev)<0&&y(e.next,t,t.next)<0}function d(t,e,r,n,i){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-r)*i)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-n)*i)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function g(t){var e=t,r=t;do{(e.x=0&&(t-o)*(n-s)-(r-o)*(e-s)>=0&&(r-o)*(a-s)-(i-o)*(n-s)>=0}function v(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){var r=t;do{if(r.i!==t.i&&r.next.i!==t.i&&r.i!==e.i&&r.next.i!==e.i&&b(r,r.next,t,e))return!0;r=r.next}while(r!==t);return!1}(t,e)&&(T(t,e)&&T(e,t)&&function(t,e){var r=t,n=!1,i=(t.x+e.x)/2,a=(t.y+e.y)/2;do{r.y>a!=r.next.y>a&&r.next.y!==r.y&&i<(r.next.x-r.x)*(a-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next}while(r!==t);return n}(t,e)&&(y(t.prev,t,e.prev)||y(t,e.prev,e))||x(t,e)&&y(t.prev,t,t.next)>0&&y(e.prev,e,e.next)>0)}function y(t,e,r){return(e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y)}function x(t,e){return t.x===e.x&&t.y===e.y}function b(t,e,r,n){var i=w(y(t,e,r)),a=w(y(t,e,n)),o=w(y(r,n,t)),s=w(y(r,n,e));return i!==a&&o!==s||(!(0!==i||!_(t,r,e))||(!(0!==a||!_(t,n,e))||(!(0!==o||!_(r,t,n))||!(0!==s||!_(r,e,n)))))}function _(t,e,r){return e.x<=Math.max(t.x,r.x)&&e.x>=Math.min(t.x,r.x)&&e.y<=Math.max(t.y,r.y)&&e.y>=Math.min(t.y,r.y)}function w(t){return t>0?1:t<0?-1:0}function T(t,e){return y(t.prev,t,t.next)<0?y(t,e,t.next)>=0&&y(t,t.prev,e)>=0:y(t,e,t.prev)<0||y(t,t.next,e)<0}function k(t,e){var r=new S(t.i,t.x,t.y),n=new S(e.i,e.x,e.y),i=t.next,a=e.prev;return t.next=e,e.prev=t,r.next=i,i.prev=r,n.next=r,r.prev=n,a.next=n,n.prev=a,n}function A(t,e,r,n){var i=new S(t,e,r);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function M(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function S(t,e,r){this.i=t,this.x=e,this.y=r,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function E(t,e,r,n){for(var i=0,a=e,o=r-n;a0&&(n+=t[i-1].length,r.holes.push(n))}return r}},{}],130:[function(t,e,r){var n=t(\"strongly-connected-components\");e.exports=function(t,e){var r,i=[],a=[],o=[],s={},l=[];function c(t){var e,n,i=!1;for(a.push(t),o[t]=!0,e=0;e=e}))}(e);for(var r,i=n(t).components.filter((function(t){return t.length>1})),a=1/0,o=0;o=55296&&y<=56319&&(w+=t[++r]),w=T?h.call(T,k,w,g):w,e?(p.value=w,d(m,g,p)):m[g]=w,++g;v=g}if(void 0===v)for(v=o(t.length),e&&(m=new e(v)),r=0;r0?1:-1}},{}],141:[function(t,e,r){\"use strict\";var n=t(\"../math/sign\"),i=Math.abs,a=Math.floor;e.exports=function(t){return isNaN(t)?0:0!==(t=Number(t))&&isFinite(t)?n(t)*a(i(t)):t}},{\"../math/sign\":138}],142:[function(t,e,r){\"use strict\";var n=t(\"./to-integer\"),i=Math.max;e.exports=function(t){return i(0,n(t))}},{\"./to-integer\":141}],143:[function(t,e,r){\"use strict\";var n=t(\"./valid-callable\"),i=t(\"./valid-value\"),a=Function.prototype.bind,o=Function.prototype.call,s=Object.keys,l=Object.prototype.propertyIsEnumerable;e.exports=function(t,e){return function(r,c){var u,f=arguments[2],h=arguments[3];return r=Object(i(r)),n(c),u=s(r),h&&u.sort(\"function\"==typeof h?a.call(h,r):void 0),\"function\"!=typeof t&&(t=u[t]),o.call(t,u,(function(t,n){return l.call(r,t)?o.call(c,f,r[t],t,r,n):e}))}}},{\"./valid-callable\":160,\"./valid-value\":162}],144:[function(t,e,r){\"use strict\";e.exports=t(\"./is-implemented\")()?Object.assign:t(\"./shim\")},{\"./is-implemented\":145,\"./shim\":146}],145:[function(t,e,r){\"use strict\";e.exports=function(){var t,e=Object.assign;return\"function\"==typeof e&&(e(t={foo:\"raz\"},{bar:\"dwa\"},{trzy:\"trzy\"}),t.foo+t.bar+t.trzy===\"razdwatrzy\")}},{}],146:[function(t,e,r){\"use strict\";var n=t(\"../keys\"),i=t(\"../valid-value\"),a=Math.max;e.exports=function(t,e){var r,o,s,l=a(arguments.length,2);for(t=Object(i(t)),s=function(n){try{t[n]=e[n]}catch(t){r||(r=t)}},o=1;o-1}},{}],166:[function(t,e,r){\"use strict\";var n=Object.prototype.toString,i=n.call(\"\");e.exports=function(t){return\"string\"==typeof t||t&&\"object\"==typeof t&&(t instanceof String||n.call(t)===i)||!1}},{}],167:[function(t,e,r){\"use strict\";var n=Object.create(null),i=Math.random;e.exports=function(){var t;do{t=i().toString(36).slice(2)}while(n[t]);return t}},{}],168:[function(t,e,r){\"use strict\";var n,i=t(\"es5-ext/object/set-prototype-of\"),a=t(\"es5-ext/string/#/contains\"),o=t(\"d\"),s=t(\"es6-symbol\"),l=t(\"./\"),c=Object.defineProperty;n=e.exports=function(t,e){if(!(this instanceof n))throw new TypeError(\"Constructor requires 'new'\");l.call(this,t),e=e?a.call(e,\"key+value\")?\"key+value\":a.call(e,\"key\")?\"key\":\"value\":\"value\",c(this,\"__kind__\",o(\"\",e))},i&&i(n,l),delete n.prototype.constructor,n.prototype=Object.create(l.prototype,{_resolve:o((function(t){return\"value\"===this.__kind__?this.__list__[t]:\"key+value\"===this.__kind__?[t,this.__list__[t]]:t}))}),c(n.prototype,s.toStringTag,o(\"c\",\"Array Iterator\"))},{\"./\":171,d:106,\"es5-ext/object/set-prototype-of\":157,\"es5-ext/string/#/contains\":163,\"es6-symbol\":175}],169:[function(t,e,r){\"use strict\";var n=t(\"es5-ext/function/is-arguments\"),i=t(\"es5-ext/object/valid-callable\"),a=t(\"es5-ext/string/is-string\"),o=t(\"./get\"),s=Array.isArray,l=Function.prototype.call,c=Array.prototype.some;e.exports=function(t,e){var r,u,f,h,p,d,g,m,v=arguments[2];if(s(t)||n(t)?r=\"array\":a(t)?r=\"string\":t=o(t),i(e),f=function(){h=!0},\"array\"!==r)if(\"string\"!==r)for(u=t.next();!u.done;){if(l.call(e,v,u.value,f),h)return;u=t.next()}else for(d=t.length,p=0;p=55296&&m<=56319&&(g+=t[++p]),l.call(e,v,g,f),!h);++p);else c.call(t,(function(t){return l.call(e,v,t,f),h}))}},{\"./get\":170,\"es5-ext/function/is-arguments\":135,\"es5-ext/object/valid-callable\":160,\"es5-ext/string/is-string\":166}],170:[function(t,e,r){\"use strict\";var n=t(\"es5-ext/function/is-arguments\"),i=t(\"es5-ext/string/is-string\"),a=t(\"./array\"),o=t(\"./string\"),s=t(\"./valid-iterable\"),l=t(\"es6-symbol\").iterator;e.exports=function(t){return\"function\"==typeof s(t)[l]?t[l]():n(t)?new a(t):i(t)?new o(t):new a(t)}},{\"./array\":168,\"./string\":173,\"./valid-iterable\":174,\"es5-ext/function/is-arguments\":135,\"es5-ext/string/is-string\":166,\"es6-symbol\":175}],171:[function(t,e,r){\"use strict\";var n,i=t(\"es5-ext/array/#/clear\"),a=t(\"es5-ext/object/assign\"),o=t(\"es5-ext/object/valid-callable\"),s=t(\"es5-ext/object/valid-value\"),l=t(\"d\"),c=t(\"d/auto-bind\"),u=t(\"es6-symbol\"),f=Object.defineProperty,h=Object.defineProperties;e.exports=n=function(t,e){if(!(this instanceof n))throw new TypeError(\"Constructor requires 'new'\");h(this,{__list__:l(\"w\",s(t)),__context__:l(\"w\",e),__nextIndex__:l(\"w\",0)}),e&&(o(e.on),e.on(\"_add\",this._onAdd),e.on(\"_delete\",this._onDelete),e.on(\"_clear\",this._onClear))},delete n.prototype.constructor,h(n.prototype,a({_next:l((function(){var t;if(this.__list__)return this.__redo__&&void 0!==(t=this.__redo__.shift())?t:this.__nextIndex__=this.__nextIndex__||(++this.__nextIndex__,this.__redo__?(this.__redo__.forEach((function(e,r){e>=t&&(this.__redo__[r]=++e)}),this),this.__redo__.push(t)):f(this,\"__redo__\",l(\"c\",[t])))})),_onDelete:l((function(t){var e;t>=this.__nextIndex__||(--this.__nextIndex__,this.__redo__&&(-1!==(e=this.__redo__.indexOf(t))&&this.__redo__.splice(e,1),this.__redo__.forEach((function(e,r){e>t&&(this.__redo__[r]=--e)}),this)))})),_onClear:l((function(){this.__redo__&&i.call(this.__redo__),this.__nextIndex__=0}))}))),f(n.prototype,u.iterator,l((function(){return this})))},{d:106,\"d/auto-bind\":105,\"es5-ext/array/#/clear\":131,\"es5-ext/object/assign\":144,\"es5-ext/object/valid-callable\":160,\"es5-ext/object/valid-value\":162,\"es6-symbol\":175}],172:[function(t,e,r){\"use strict\";var n=t(\"es5-ext/function/is-arguments\"),i=t(\"es5-ext/object/is-value\"),a=t(\"es5-ext/string/is-string\"),o=t(\"es6-symbol\").iterator,s=Array.isArray;e.exports=function(t){return!!i(t)&&(!!s(t)||(!!a(t)||(!!n(t)||\"function\"==typeof t[o])))}},{\"es5-ext/function/is-arguments\":135,\"es5-ext/object/is-value\":151,\"es5-ext/string/is-string\":166,\"es6-symbol\":175}],173:[function(t,e,r){\"use strict\";var n,i=t(\"es5-ext/object/set-prototype-of\"),a=t(\"d\"),o=t(\"es6-symbol\"),s=t(\"./\"),l=Object.defineProperty;n=e.exports=function(t){if(!(this instanceof n))throw new TypeError(\"Constructor requires 'new'\");t=String(t),s.call(this,t),l(this,\"__length__\",a(\"\",t.length))},i&&i(n,s),delete n.prototype.constructor,n.prototype=Object.create(s.prototype,{_next:a((function(){if(this.__list__)return this.__nextIndex__=55296&&e<=56319?r+this.__list__[this.__nextIndex__++]:r}))}),l(n.prototype,o.toStringTag,a(\"c\",\"String Iterator\"))},{\"./\":171,d:106,\"es5-ext/object/set-prototype-of\":157,\"es6-symbol\":175}],174:[function(t,e,r){\"use strict\";var n=t(\"./is-iterable\");e.exports=function(t){if(!n(t))throw new TypeError(t+\" is not iterable\");return t}},{\"./is-iterable\":172}],175:[function(t,e,r){\"use strict\";e.exports=t(\"./is-implemented\")()?t(\"ext/global-this\").Symbol:t(\"./polyfill\")},{\"./is-implemented\":176,\"./polyfill\":181,\"ext/global-this\":188}],176:[function(t,e,r){\"use strict\";var n=t(\"ext/global-this\"),i={object:!0,symbol:!0};e.exports=function(){var t,e=n.Symbol;if(\"function\"!=typeof e)return!1;t=e(\"test symbol\");try{String(t)}catch(t){return!1}return!!i[typeof e.iterator]&&(!!i[typeof e.toPrimitive]&&!!i[typeof e.toStringTag])}},{\"ext/global-this\":188}],177:[function(t,e,r){\"use strict\";e.exports=function(t){return!!t&&(\"symbol\"==typeof t||!!t.constructor&&(\"Symbol\"===t.constructor.name&&\"Symbol\"===t[t.constructor.toStringTag]))}},{}],178:[function(t,e,r){\"use strict\";var n=t(\"d\"),i=Object.create,a=Object.defineProperty,o=Object.prototype,s=i(null);e.exports=function(t){for(var e,r,i=0;s[t+(i||\"\")];)++i;return s[t+=i||\"\"]=!0,a(o,e=\"@@\"+t,n.gs(null,(function(t){r||(r=!0,a(this,e,n(t)),r=!1)}))),e}},{d:106}],179:[function(t,e,r){\"use strict\";var n=t(\"d\"),i=t(\"ext/global-this\").Symbol;e.exports=function(t){return Object.defineProperties(t,{hasInstance:n(\"\",i&&i.hasInstance||t(\"hasInstance\")),isConcatSpreadable:n(\"\",i&&i.isConcatSpreadable||t(\"isConcatSpreadable\")),iterator:n(\"\",i&&i.iterator||t(\"iterator\")),match:n(\"\",i&&i.match||t(\"match\")),replace:n(\"\",i&&i.replace||t(\"replace\")),search:n(\"\",i&&i.search||t(\"search\")),species:n(\"\",i&&i.species||t(\"species\")),split:n(\"\",i&&i.split||t(\"split\")),toPrimitive:n(\"\",i&&i.toPrimitive||t(\"toPrimitive\")),toStringTag:n(\"\",i&&i.toStringTag||t(\"toStringTag\")),unscopables:n(\"\",i&&i.unscopables||t(\"unscopables\"))})}},{d:106,\"ext/global-this\":188}],180:[function(t,e,r){\"use strict\";var n=t(\"d\"),i=t(\"../../../validate-symbol\"),a=Object.create(null);e.exports=function(t){return Object.defineProperties(t,{for:n((function(e){return a[e]?a[e]:a[e]=t(String(e))})),keyFor:n((function(t){var e;for(e in i(t),a)if(a[e]===t)return e}))})}},{\"../../../validate-symbol\":182,d:106}],181:[function(t,e,r){\"use strict\";var n,i,a,o=t(\"d\"),s=t(\"./validate-symbol\"),l=t(\"ext/global-this\").Symbol,c=t(\"./lib/private/generate-name\"),u=t(\"./lib/private/setup/standard-symbols\"),f=t(\"./lib/private/setup/symbol-registry\"),h=Object.create,p=Object.defineProperties,d=Object.defineProperty;if(\"function\"==typeof l)try{String(l()),a=!0}catch(t){}else l=null;i=function(t){if(this instanceof i)throw new TypeError(\"Symbol is not a constructor\");return n(t)},e.exports=n=function t(e){var r;if(this instanceof t)throw new TypeError(\"Symbol is not a constructor\");return a?l(e):(r=h(i.prototype),e=void 0===e?\"\":String(e),p(r,{__description__:o(\"\",e),__name__:o(\"\",c(e))}))},u(n),f(n),p(i.prototype,{constructor:o(n),toString:o(\"\",(function(){return this.__name__}))}),p(n.prototype,{toString:o((function(){return\"Symbol (\"+s(this).__description__+\")\"})),valueOf:o((function(){return s(this)}))}),d(n.prototype,n.toPrimitive,o(\"\",(function(){var t=s(this);return\"symbol\"==typeof t?t:t.toString()}))),d(n.prototype,n.toStringTag,o(\"c\",\"Symbol\")),d(i.prototype,n.toStringTag,o(\"c\",n.prototype[n.toStringTag])),d(i.prototype,n.toPrimitive,o(\"c\",n.prototype[n.toPrimitive]))},{\"./lib/private/generate-name\":178,\"./lib/private/setup/standard-symbols\":179,\"./lib/private/setup/symbol-registry\":180,\"./validate-symbol\":182,d:106,\"ext/global-this\":188}],182:[function(t,e,r){\"use strict\";var n=t(\"./is-symbol\");e.exports=function(t){if(!n(t))throw new TypeError(t+\" is not a symbol\");return t}},{\"./is-symbol\":177}],183:[function(t,e,r){\"use strict\";e.exports=t(\"./is-implemented\")()?WeakMap:t(\"./polyfill\")},{\"./is-implemented\":184,\"./polyfill\":186}],184:[function(t,e,r){\"use strict\";e.exports=function(){var t,e;if(\"function\"!=typeof WeakMap)return!1;try{t=new WeakMap([[e={},\"one\"],[{},\"two\"],[{},\"three\"]])}catch(t){return!1}return\"[object WeakMap]\"===String(t)&&(\"function\"==typeof t.set&&(t.set({},1)===t&&(\"function\"==typeof t.delete&&(\"function\"==typeof t.has&&\"one\"===t.get(e)))))}},{}],185:[function(t,e,r){\"use strict\";e.exports=\"function\"==typeof WeakMap&&\"[object WeakMap]\"===Object.prototype.toString.call(new WeakMap)},{}],186:[function(t,e,r){\"use strict\";var n,i=t(\"es5-ext/object/is-value\"),a=t(\"es5-ext/object/set-prototype-of\"),o=t(\"es5-ext/object/valid-object\"),s=t(\"es5-ext/object/valid-value\"),l=t(\"es5-ext/string/random-uniq\"),c=t(\"d\"),u=t(\"es6-iterator/get\"),f=t(\"es6-iterator/for-of\"),h=t(\"es6-symbol\").toStringTag,p=t(\"./is-native-implemented\"),d=Array.isArray,g=Object.defineProperty,m=Object.prototype.hasOwnProperty,v=Object.getPrototypeOf;e.exports=n=function(){var t,e=arguments[0];if(!(this instanceof n))throw new TypeError(\"Constructor requires 'new'\");return t=p&&a&&WeakMap!==n?a(new WeakMap,v(this)):this,i(e)&&(d(e)||(e=u(e))),g(t,\"__weakMapData__\",c(\"c\",\"$weakMap$\"+l())),e?(f(e,(function(e){s(e),t.set(e[0],e[1])})),t):t},p&&(a&&a(n,WeakMap),n.prototype=Object.create(WeakMap.prototype,{constructor:c(n)})),Object.defineProperties(n.prototype,{delete:c((function(t){return!!m.call(o(t),this.__weakMapData__)&&(delete t[this.__weakMapData__],!0)})),get:c((function(t){if(m.call(o(t),this.__weakMapData__))return t[this.__weakMapData__]})),has:c((function(t){return m.call(o(t),this.__weakMapData__)})),set:c((function(t,e){return g(o(t),this.__weakMapData__,c(\"c\",e)),this})),toString:c((function(){return\"[object WeakMap]\"}))}),g(n.prototype,h,c(\"c\",\"WeakMap\"))},{\"./is-native-implemented\":185,d:106,\"es5-ext/object/is-value\":151,\"es5-ext/object/set-prototype-of\":157,\"es5-ext/object/valid-object\":161,\"es5-ext/object/valid-value\":162,\"es5-ext/string/random-uniq\":167,\"es6-iterator/for-of\":169,\"es6-iterator/get\":170,\"es6-symbol\":175}],187:[function(t,e,r){var n=function(){if(\"object\"==typeof self&&self)return self;if(\"object\"==typeof window&&window)return window;throw new Error(\"Unable to resolve global `this`\")};e.exports=function(){if(this)return this;try{Object.defineProperty(Object.prototype,\"__global__\",{get:function(){return this},configurable:!0})}catch(t){return n()}try{return __global__||n()}finally{delete Object.prototype.__global__}}()},{}],188:[function(t,e,r){\"use strict\";e.exports=t(\"./is-implemented\")()?globalThis:t(\"./implementation\")},{\"./implementation\":187,\"./is-implemented\":189}],189:[function(t,e,r){\"use strict\";e.exports=function(){return\"object\"==typeof globalThis&&(!!globalThis&&globalThis.Array===Array)}},{}],190:[function(t,e,r){\"use strict\";var n=t(\"is-string-blank\");e.exports=function(t){var e=typeof t;if(\"string\"===e){var r=t;if(0===(t=+t)&&n(r))return!1}else if(\"number\"!==e)return!1;return t-t<1}},{\"is-string-blank\":237}],191:[function(t,e,r){var n=t(\"dtype\");e.exports=function(t,e,r){if(!t)throw new TypeError(\"must specify data as first parameter\");if(r=0|+(r||0),Array.isArray(t)&&t[0]&&\"number\"==typeof t[0][0]){var i,a,o,s,l=t[0].length,c=t.length*l;e&&\"string\"!=typeof e||(e=new(n(e||\"float32\"))(c+r));var u=e.length-r;if(c!==u)throw new Error(\"source length \"+c+\" (\"+l+\"x\"+t.length+\") does not match destination length \"+u);for(i=0,o=r;ie[0]-o[0]/2&&(h=o[0]/2,p+=o[1]);return r}},{\"css-font/stringify\":102}],193:[function(t,e,r){\"use strict\";function n(t,e){e||(e={}),(\"string\"==typeof t||Array.isArray(t))&&(e.family=t);var r=Array.isArray(e.family)?e.family.join(\", \"):e.family;if(!r)throw Error(\"`family` must be defined\");var s=e.size||e.fontSize||e.em||48,l=e.weight||e.fontWeight||\"\",c=(t=[e.style||e.fontStyle||\"\",l,s].join(\" \")+\"px \"+r,e.origin||\"top\");if(n.cache[r]&&s<=n.cache[r].em)return i(n.cache[r],c);var u=e.canvas||n.canvas,f=u.getContext(\"2d\"),h={upper:void 0!==e.upper?e.upper:\"H\",lower:void 0!==e.lower?e.lower:\"x\",descent:void 0!==e.descent?e.descent:\"p\",ascent:void 0!==e.ascent?e.ascent:\"h\",title:void 0!==e.title?e.title:\"i\",overshoot:void 0!==e.overshoot?e.overshoot:\"O\"},p=Math.ceil(1.5*s);u.height=p,u.width=.5*p,f.font=t;var d={top:0};f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillStyle=\"black\",f.fillText(\"H\",0,0);var g=a(f.getImageData(0,0,p,p));f.clearRect(0,0,p,p),f.textBaseline=\"bottom\",f.fillText(\"H\",0,p);var m=a(f.getImageData(0,0,p,p));d.lineHeight=d.bottom=p-m+g,f.clearRect(0,0,p,p),f.textBaseline=\"alphabetic\",f.fillText(\"H\",0,p);var v=p-a(f.getImageData(0,0,p,p))-1+g;d.baseline=d.alphabetic=v,f.clearRect(0,0,p,p),f.textBaseline=\"middle\",f.fillText(\"H\",0,.5*p);var y=a(f.getImageData(0,0,p,p));d.median=d.middle=p-y-1+g-.5*p,f.clearRect(0,0,p,p),f.textBaseline=\"hanging\",f.fillText(\"H\",0,.5*p);var x=a(f.getImageData(0,0,p,p));d.hanging=p-x-1+g-.5*p,f.clearRect(0,0,p,p),f.textBaseline=\"ideographic\",f.fillText(\"H\",0,p);var b=a(f.getImageData(0,0,p,p));if(d.ideographic=p-b-1+g,h.upper&&(f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.upper,0,0),d.upper=a(f.getImageData(0,0,p,p)),d.capHeight=d.baseline-d.upper),h.lower&&(f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.lower,0,0),d.lower=a(f.getImageData(0,0,p,p)),d.xHeight=d.baseline-d.lower),h.title&&(f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.title,0,0),d.title=a(f.getImageData(0,0,p,p))),h.ascent&&(f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.ascent,0,0),d.ascent=a(f.getImageData(0,0,p,p))),h.descent&&(f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.descent,0,0),d.descent=o(f.getImageData(0,0,p,p))),h.overshoot){f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.overshoot,0,0);var _=o(f.getImageData(0,0,p,p));d.overshoot=_-v}for(var w in d)d[w]/=s;return d.em=s,n.cache[r]=d,i(d,c)}function i(t,e){var r={};for(var n in\"string\"==typeof e&&(e=t[e]),t)\"em\"!==n&&(r[n]=t[n]-e);return r}function a(t){for(var e=t.height,r=t.data,n=3;n0;n-=4)if(0!==r[n])return Math.floor(.25*(n-3)/e)}e.exports=n,n.canvas=document.createElement(\"canvas\"),n.cache={}},{}],194:[function(t,e,r){e.exports=function(t,e){if(\"string\"!=typeof t)throw new TypeError(\"must specify type string\");if(e=e||{},\"undefined\"==typeof document&&!e.canvas)return null;var r=e.canvas||document.createElement(\"canvas\");\"number\"==typeof e.width&&(r.width=e.width);\"number\"==typeof e.height&&(r.height=e.height);var n,i=e;try{var a=[t];0===t.indexOf(\"webgl\")&&a.push(\"experimental-\"+t);for(var o=0;o halfCharStep + halfCharWidth ||\\n\\t\\t\\t\\t\\tfloor(uv.x) < halfCharStep - halfCharWidth) return;\\n\\n\\t\\t\\t\\tuv += charId * charStep;\\n\\t\\t\\t\\tuv = uv / atlasSize;\\n\\n\\t\\t\\t\\tvec4 color = fontColor;\\n\\t\\t\\t\\tvec4 mask = texture2D(atlas, uv);\\n\\n\\t\\t\\t\\tfloat maskY = lightness(mask);\\n\\t\\t\\t\\t// float colorY = lightness(color);\\n\\t\\t\\t\\tcolor.a *= maskY;\\n\\t\\t\\t\\tcolor.a *= opacity;\\n\\n\\t\\t\\t\\t// color.a += .1;\\n\\n\\t\\t\\t\\t// antialiasing, see yiq color space y-channel formula\\n\\t\\t\\t\\t// color.rgb += (1. - color.rgb) * (1. - mask.rgb);\\n\\n\\t\\t\\t\\tgl_FragColor = color;\\n\\t\\t\\t}\"});return{regl:t,draw:e,atlas:{}}},T.prototype.update=function(t){var e=this;if(\"string\"==typeof t)t={text:t};else if(!t)return;null!=(t=i(t,{position:\"position positions coord coords coordinates\",font:\"font fontFace fontface typeface cssFont css-font family fontFamily\",fontSize:\"fontSize fontsize size font-size\",text:\"text texts chars characters value values symbols\",align:\"align alignment textAlign textbaseline\",baseline:\"baseline textBaseline textbaseline\",direction:\"dir direction textDirection\",color:\"color colour fill fill-color fillColor textColor textcolor\",kerning:\"kerning kern\",range:\"range dataBox\",viewport:\"vp viewport viewBox viewbox viewPort\",opacity:\"opacity alpha transparency visible visibility opaque\",offset:\"offset positionOffset padding shift indent indentation\"},!0)).opacity&&(Array.isArray(t.opacity)?this.opacity=t.opacity.map((function(t){return parseFloat(t)})):this.opacity=parseFloat(t.opacity)),null!=t.viewport&&(this.viewport=f(t.viewport),this.viewportArray=[this.viewport.x,this.viewport.y,this.viewport.width,this.viewport.height]),null==this.viewport&&(this.viewport={x:0,y:0,width:this.gl.drawingBufferWidth,height:this.gl.drawingBufferHeight},this.viewportArray=[this.viewport.x,this.viewport.y,this.viewport.width,this.viewport.height]),null!=t.kerning&&(this.kerning=t.kerning),null!=t.offset&&(\"number\"==typeof t.offset&&(t.offset=[t.offset,0]),this.positionOffset=y(t.offset)),t.direction&&(this.direction=t.direction),t.range&&(this.range=t.range,this.scale=[1/(t.range[2]-t.range[0]),1/(t.range[3]-t.range[1])],this.translate=[-t.range[0],-t.range[1]]),t.scale&&(this.scale=t.scale),t.translate&&(this.translate=t.translate),this.scale||(this.scale=[1/this.viewport.width,1/this.viewport.height]),this.translate||(this.translate=[0,0]),this.font.length||t.font||(t.font=T.baseFontSize+\"px sans-serif\");var r,a=!1,o=!1;if(t.font&&(Array.isArray(t.font)?t.font:[t.font]).forEach((function(t,r){if(\"string\"==typeof t)try{t=n.parse(t)}catch(e){t=n.parse(T.baseFontSize+\"px \"+t)}else t=n.parse(n.stringify(t));var i=n.stringify({size:T.baseFontSize,family:t.family,stretch:_?t.stretch:void 0,variant:t.variant,weight:t.weight,style:t.style}),s=p(t.size),l=Math.round(s[0]*d(s[1]));if(l!==e.fontSize[r]&&(o=!0,e.fontSize[r]=l),!(e.font[r]&&i==e.font[r].baseString||(a=!0,e.font[r]=T.fonts[i],e.font[r]))){var c=t.family.join(\", \"),u=[t.style];t.style!=t.variant&&u.push(t.variant),t.variant!=t.weight&&u.push(t.weight),_&&t.weight!=t.stretch&&u.push(t.stretch),e.font[r]={baseString:i,family:c,weight:t.weight,stretch:t.stretch,style:t.style,variant:t.variant,width:{},kerning:{},metrics:v(c,{origin:\"top\",fontSize:T.baseFontSize,fontStyle:u.join(\" \")})},T.fonts[i]=e.font[r]}})),(a||o)&&this.font.forEach((function(r,i){var a=n.stringify({size:e.fontSize[i],family:r.family,stretch:_?r.stretch:void 0,variant:r.variant,weight:r.weight,style:r.style});if(e.fontAtlas[i]=e.shader.atlas[a],!e.fontAtlas[i]){var o=r.metrics;e.shader.atlas[a]=e.fontAtlas[i]={fontString:a,step:2*Math.ceil(e.fontSize[i]*o.bottom*.5),em:e.fontSize[i],cols:0,rows:0,height:0,width:0,chars:[],ids:{},texture:e.regl.texture()}}null==t.text&&(t.text=e.text)})),\"string\"==typeof t.text&&t.position&&t.position.length>2){for(var s=Array(.5*t.position.length),h=0;h2){for(var w=!t.position[0].length,k=u.mallocFloat(2*this.count),A=0,M=0;A1?e.align[r]:e.align[0]:e.align;if(\"number\"==typeof n)return n;switch(n){case\"right\":case\"end\":return-t;case\"center\":case\"centre\":case\"middle\":return.5*-t}return 0}))),null==this.baseline&&null==t.baseline&&(t.baseline=0),null!=t.baseline&&(this.baseline=t.baseline,Array.isArray(this.baseline)||(this.baseline=[this.baseline]),this.baselineOffset=this.baseline.map((function(t,r){var n=(e.font[r]||e.font[0]).metrics,i=0;return i+=.5*n.bottom,i+=\"number\"==typeof t?t-n.baseline:-n[t],i*=-1}))),null!=t.color)if(t.color||(t.color=\"transparent\"),\"string\"!=typeof t.color&&isNaN(t.color)){var q;if(\"number\"==typeof t.color[0]&&t.color.length>this.counts.length){var G=t.color.length;q=u.mallocUint8(G);for(var Y=(t.color.subarray||t.color.slice).bind(t.color),W=0;W4||this.baselineOffset.length>1||this.align&&this.align.length>1||this.fontAtlas.length>1||this.positionOffset.length>2){var J=Math.max(.5*this.position.length||0,.25*this.color.length||0,this.baselineOffset.length||0,this.alignOffset.length||0,this.font.length||0,this.opacity.length||0,.5*this.positionOffset.length||0);this.batch=Array(J);for(var K=0;K1?this.counts[K]:this.counts[0],offset:this.textOffsets.length>1?this.textOffsets[K]:this.textOffsets[0],color:this.color?this.color.length<=4?this.color:this.color.subarray(4*K,4*K+4):[0,0,0,255],opacity:Array.isArray(this.opacity)?this.opacity[K]:this.opacity,baseline:null!=this.baselineOffset[K]?this.baselineOffset[K]:this.baselineOffset[0],align:this.align?null!=this.alignOffset[K]?this.alignOffset[K]:this.alignOffset[0]:0,atlas:this.fontAtlas[K]||this.fontAtlas[0],positionOffset:this.positionOffset.length>2?this.positionOffset.subarray(2*K,2*K+2):this.positionOffset}}else this.count?this.batch=[{count:this.count,offset:0,color:this.color||[0,0,0,255],opacity:Array.isArray(this.opacity)?this.opacity[0]:this.opacity,baseline:this.baselineOffset[0],align:this.alignOffset?this.alignOffset[0]:0,atlas:this.fontAtlas[0],positionOffset:this.positionOffset}]:this.batch=[]},T.prototype.destroy=function(){},T.prototype.kerning=!0,T.prototype.position={constant:new Float32Array(2)},T.prototype.translate=null,T.prototype.scale=null,T.prototype.font=null,T.prototype.text=\"\",T.prototype.positionOffset=[0,0],T.prototype.opacity=1,T.prototype.color=new Uint8Array([0,0,0,255]),T.prototype.alignOffset=[0,0],T.maxAtlasSize=1024,T.atlasCanvas=document.createElement(\"canvas\"),T.atlasContext=T.atlasCanvas.getContext(\"2d\",{alpha:!1}),T.baseFontSize=64,T.fonts={},e.exports=T},{\"bit-twiddle\":81,\"color-normalize\":89,\"css-font\":99,\"detect-kerning\":125,\"es6-weak-map\":183,\"flatten-vertex-data\":191,\"font-atlas\":192,\"font-measure\":193,\"gl-util/context\":226,\"is-plain-obj\":236,\"object-assign\":247,\"parse-rect\":249,\"parse-unit\":251,\"pick-by-alias\":253,regl:283,\"to-px\":314,\"typedarray-pool\":327}],226:[function(t,e,r){(function(r){(function(){\"use strict\";var n=t(\"pick-by-alias\");function i(t){if(t.container)if(t.container==document.body)document.body.style.width||(t.canvas.width=t.width||t.pixelRatio*r.innerWidth),document.body.style.height||(t.canvas.height=t.height||t.pixelRatio*r.innerHeight);else{var e=t.container.getBoundingClientRect();t.canvas.width=t.width||e.right-e.left,t.canvas.height=t.height||e.bottom-e.top}}function a(t){return\"function\"==typeof t.getContext&&\"width\"in t&&\"height\"in t}function o(){var t=document.createElement(\"canvas\");return t.style.position=\"absolute\",t.style.top=0,t.style.left=0,t}e.exports=function(t){var e;if(t?\"string\"==typeof t&&(t={container:t}):t={},a(t)?t={container:t}:t=\"string\"==typeof(e=t).nodeName&&\"function\"==typeof e.appendChild&&\"function\"==typeof e.getBoundingClientRect?{container:t}:function(t){return\"function\"==typeof t.drawArrays||\"function\"==typeof t.drawElements}(t)?{gl:t}:n(t,{container:\"container target element el canvas holder parent parentNode wrapper use ref root node\",gl:\"gl context webgl glContext\",attrs:\"attributes attrs contextAttributes\",pixelRatio:\"pixelRatio pxRatio px ratio pxratio pixelratio\",width:\"w width\",height:\"h height\"},!0),t.pixelRatio||(t.pixelRatio=r.pixelRatio||1),t.gl)return t.gl;if(t.canvas&&(t.container=t.canvas.parentNode),t.container){if(\"string\"==typeof t.container){var s=document.querySelector(t.container);if(!s)throw Error(\"Element \"+t.container+\" is not found\");t.container=s}a(t.container)?(t.canvas=t.container,t.container=t.canvas.parentNode):t.canvas||(t.canvas=o(),t.container.appendChild(t.canvas),i(t))}else if(!t.canvas){if(\"undefined\"==typeof document)throw Error(\"Not DOM environment. Use headless-gl.\");t.container=document.body||document.documentElement,t.canvas=o(),t.container.appendChild(t.canvas),i(t)}return t.gl||[\"webgl\",\"experimental-webgl\",\"webgl-experimental\"].some((function(e){try{t.gl=t.canvas.getContext(e,t.attrs)}catch(t){}return t.gl})),t.gl}}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"pick-by-alias\":253}],227:[function(t,e,r){e.exports=function(t){\"string\"==typeof t&&(t=[t]);for(var e=[].slice.call(arguments,1),r=[],n=0;n>1,u=-7,f=r?i-1:0,h=r?-1:1,p=t[e+f];for(f+=h,a=p&(1<<-u)-1,p>>=-u,u+=s;u>0;a=256*a+t[e+f],f+=h,u-=8);for(o=a&(1<<-u)-1,a>>=-u,u+=n;u>0;o=256*o+t[e+f],f+=h,u-=8);if(0===a)a=1-c;else{if(a===l)return o?NaN:1/0*(p?-1:1);o+=Math.pow(2,n),a-=c}return(p?-1:1)*o*Math.pow(2,a-n)},r.write=function(t,e,r,n,i,a){var o,s,l,c=8*a-i-1,u=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:a-1,d=n?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,o=u):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),(e+=o+f>=1?h/l:h*Math.pow(2,1-f))*l>=2&&(o++,l/=2),o+f>=u?(s=0,o=u):o+f>=1?(s=(e*l-1)*Math.pow(2,i),o+=f):(s=e*Math.pow(2,f-1)*Math.pow(2,i),o=0));i>=8;t[r+p]=255&s,p+=d,s/=256,i-=8);for(o=o<0;t[r+p]=255&o,p+=d,o/=256,c-=8);t[r+p-d]|=128*g}},{}],231:[function(t,e,r){\"function\"==typeof Object.create?e.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:e.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}},{}],232:[function(t,e,r){e.exports=!0},{}],233:[function(t,e,r){\"use strict\";e.exports=\"undefined\"!=typeof navigator&&(/MSIE/.test(navigator.userAgent)||/Trident\\//.test(navigator.appVersion))},{}],234:[function(t,e,r){\"use strict\";e.exports=a,e.exports.isMobile=a,e.exports.default=a;var n=/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series[46]0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i,i=/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series[46]0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino|android|ipad|playbook|silk/i;function a(t){t||(t={});var e=t.ua;if(e||\"undefined\"==typeof navigator||(e=navigator.userAgent),e&&e.headers&&\"string\"==typeof e.headers[\"user-agent\"]&&(e=e.headers[\"user-agent\"]),\"string\"!=typeof e)return!1;var r=t.tablet?i.test(e):n.test(e);return!r&&t.tablet&&t.featureDetect&&navigator&&navigator.maxTouchPoints>1&&-1!==e.indexOf(\"Macintosh\")&&-1!==e.indexOf(\"Safari\")&&(r=!0),r}},{}],235:[function(t,e,r){\"use strict\";e.exports=function(t){var e=typeof t;return null!==t&&(\"object\"===e||\"function\"===e)}},{}],236:[function(t,e,r){\"use strict\";var n=Object.prototype.toString;e.exports=function(t){var e;return\"[object Object]\"===n.call(t)&&(null===(e=Object.getPrototypeOf(t))||e===Object.getPrototypeOf({}))}},{}],237:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e,r=t.length,n=0;n13)&&32!==e&&133!==e&&160!==e&&5760!==e&&6158!==e&&(e<8192||e>8205)&&8232!==e&&8233!==e&&8239!==e&&8287!==e&&8288!==e&&12288!==e&&65279!==e)return!1;return!0}},{}],238:[function(t,e,r){\"use strict\";e.exports=function(t){return\"string\"==typeof t&&(t=t.trim(),!!(/^[mzlhvcsqta]\\s*[-+.0-9][^mlhvzcsqta]+/i.test(t)&&/[\\dz]$/i.test(t)&&t.length>4))}},{}],239:[function(t,e,r){!function(t,n){\"object\"==typeof r&&void 0!==e?e.exports=n():(t=t||self).mapboxgl=n()}(this,(function(){\"use strict\";var t,e,r;function n(n,i){if(t)if(e){var a=\"var sharedChunk = {}; (\"+t+\")(sharedChunk); (\"+e+\")(sharedChunk);\",o={};t(o),(r=i(o)).workerUrl=window.URL.createObjectURL(new Blob([a],{type:\"text/javascript\"}))}else e=i;else t=i}return n(0,(function(t){function e(t,e){return t(e={exports:{}},e.exports),e.exports}var r=n;function n(t,e,r,n){this.cx=3*t,this.bx=3*(r-t)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*e,this.by=3*(n-e)-this.cy,this.ay=1-this.cy-this.by,this.p1x=t,this.p1y=n,this.p2x=r,this.p2y=n}n.prototype.sampleCurveX=function(t){return((this.ax*t+this.bx)*t+this.cx)*t},n.prototype.sampleCurveY=function(t){return((this.ay*t+this.by)*t+this.cy)*t},n.prototype.sampleCurveDerivativeX=function(t){return(3*this.ax*t+2*this.bx)*t+this.cx},n.prototype.solveCurveX=function(t,e){var r,n,i,a,o;for(void 0===e&&(e=1e-6),i=t,o=0;o<8;o++){if(a=this.sampleCurveX(i)-t,Math.abs(a)(n=1))return n;for(;ra?r=i:n=i,i=.5*(n-r)+r}return i},n.prototype.solve=function(t,e){return this.sampleCurveY(this.solveCurveX(t,e))};var i=a;function a(t,e){this.x=t,this.y=e}function o(t,e,n,i){var a=new r(t,e,n,i);return function(t){return a.solve(t)}}a.prototype={clone:function(){return new a(this.x,this.y)},add:function(t){return this.clone()._add(t)},sub:function(t){return this.clone()._sub(t)},multByPoint:function(t){return this.clone()._multByPoint(t)},divByPoint:function(t){return this.clone()._divByPoint(t)},mult:function(t){return this.clone()._mult(t)},div:function(t){return this.clone()._div(t)},rotate:function(t){return this.clone()._rotate(t)},rotateAround:function(t,e){return this.clone()._rotateAround(t,e)},matMult:function(t){return this.clone()._matMult(t)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(t){return this.x===t.x&&this.y===t.y},dist:function(t){return Math.sqrt(this.distSqr(t))},distSqr:function(t){var e=t.x-this.x,r=t.y-this.y;return e*e+r*r},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(t){return Math.atan2(this.y-t.y,this.x-t.x)},angleWith:function(t){return this.angleWithSep(t.x,t.y)},angleWithSep:function(t,e){return Math.atan2(this.x*e-this.y*t,this.x*t+this.y*e)},_matMult:function(t){var e=t[0]*this.x+t[1]*this.y,r=t[2]*this.x+t[3]*this.y;return this.x=e,this.y=r,this},_add:function(t){return this.x+=t.x,this.y+=t.y,this},_sub:function(t){return this.x-=t.x,this.y-=t.y,this},_mult:function(t){return this.x*=t,this.y*=t,this},_div:function(t){return this.x/=t,this.y/=t,this},_multByPoint:function(t){return this.x*=t.x,this.y*=t.y,this},_divByPoint:function(t){return this.x/=t.x,this.y/=t.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var t=this.y;return this.y=this.x,this.x=-t,this},_rotate:function(t){var e=Math.cos(t),r=Math.sin(t),n=e*this.x-r*this.y,i=r*this.x+e*this.y;return this.x=n,this.y=i,this},_rotateAround:function(t,e){var r=Math.cos(t),n=Math.sin(t),i=e.x+r*(this.x-e.x)-n*(this.y-e.y),a=e.y+n*(this.x-e.x)+r*(this.y-e.y);return this.x=i,this.y=a,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},a.convert=function(t){return t instanceof a?t:Array.isArray(t)?new a(t[0],t[1]):t};var s=o(.25,.1,.25,1);function l(t,e,r){return Math.min(r,Math.max(e,t))}function c(t,e,r){var n=r-e,i=((t-e)%n+n)%n+e;return i===e?r:i}function u(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];for(var n=0,i=e;n>e/4).toString(16):([1e7]+-[1e3]+-4e3+-8e3+-1e11).replace(/[018]/g,t)}()}function d(t){return!!t&&/^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(t)}function g(t,e){t.forEach((function(t){e[t]&&(e[t]=e[t].bind(e))}))}function m(t,e){return-1!==t.indexOf(e,t.length-e.length)}function v(t,e,r){var n={};for(var i in t)n[i]=e.call(r||this,t[i],i,t);return n}function y(t,e,r){var n={};for(var i in t)e.call(r||this,t[i],i,t)&&(n[i]=t[i]);return n}function x(t){return Array.isArray(t)?t.map(x):\"object\"==typeof t&&t?v(t,x):t}var b={};function _(t){b[t]||(\"undefined\"!=typeof console&&console.warn(t),b[t]=!0)}function w(t,e,r){return(r.y-t.y)*(e.x-t.x)>(e.y-t.y)*(r.x-t.x)}function T(t){for(var e=0,r=0,n=t.length,i=n-1,a=void 0,o=void 0;r@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)(?:\\=(?:([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)|(?:\\\"((?:[^\"\\\\]|\\\\.)*)\\\")))?/g,(function(t,r,n,i){var a=n||i;return e[r]=!a||a.toLowerCase(),\"\"})),e[\"max-age\"]){var r=parseInt(e[\"max-age\"],10);isNaN(r)?delete e[\"max-age\"]:e[\"max-age\"]=r}return e}var M=null;function S(t){if(null==M){var e=t.navigator?t.navigator.userAgent:null;M=!!t.safari||!(!e||!(/\\b(iPad|iPhone|iPod)\\b/.test(e)||e.match(\"Safari\")&&!e.match(\"Chrome\")))}return M}function E(t){try{var e=self[t];return e.setItem(\"_mapbox_test_\",1),e.removeItem(\"_mapbox_test_\"),!0}catch(t){return!1}}var L,C,P,I,O=self.performance&&self.performance.now?self.performance.now.bind(self.performance):Date.now.bind(Date),z=self.requestAnimationFrame||self.mozRequestAnimationFrame||self.webkitRequestAnimationFrame||self.msRequestAnimationFrame,D=self.cancelAnimationFrame||self.mozCancelAnimationFrame||self.webkitCancelAnimationFrame||self.msCancelAnimationFrame,R={now:O,frame:function(t){var e=z(t);return{cancel:function(){return D(e)}}},getImageData:function(t,e){void 0===e&&(e=0);var r=self.document.createElement(\"canvas\"),n=r.getContext(\"2d\");if(!n)throw new Error(\"failed to create canvas 2d context\");return r.width=t.width,r.height=t.height,n.drawImage(t,0,0,t.width,t.height),n.getImageData(-e,-e,t.width+2*e,t.height+2*e)},resolveURL:function(t){return L||(L=self.document.createElement(\"a\")),L.href=t,L.href},hardwareConcurrency:self.navigator.hardwareConcurrency||4,get devicePixelRatio(){return self.devicePixelRatio},get prefersReducedMotion(){return!!self.matchMedia&&(null==C&&(C=self.matchMedia(\"(prefers-reduced-motion: reduce)\")),C.matches)}},F={API_URL:\"https://api.mapbox.com\",get EVENTS_URL(){return this.API_URL?0===this.API_URL.indexOf(\"https://api.mapbox.cn\")?\"https://events.mapbox.cn/events/v2\":0===this.API_URL.indexOf(\"https://api.mapbox.com\")?\"https://events.mapbox.com/events/v2\":null:null},FEEDBACK_URL:\"https://apps.mapbox.com/feedback\",REQUIRE_ACCESS_TOKEN:!0,ACCESS_TOKEN:null,MAX_PARALLEL_IMAGE_REQUESTS:16},B={supported:!1,testSupport:function(t){if(N||!I)return;j?U(t):P=t}},N=!1,j=!1;function U(t){var e=t.createTexture();t.bindTexture(t.TEXTURE_2D,e);try{if(t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,I),t.isContextLost())return;B.supported=!0}catch(t){}t.deleteTexture(e),N=!0}self.document&&((I=self.document.createElement(\"img\")).onload=function(){P&&U(P),P=null,j=!0},I.onerror=function(){N=!0,P=null},I.src=\"data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=\");var V=\"01\";var H=function(t,e){this._transformRequestFn=t,this._customAccessToken=e,this._createSkuToken()};function q(t){return 0===t.indexOf(\"mapbox:\")}H.prototype._createSkuToken=function(){var t=function(){for(var t=\"\",e=0;e<10;e++)t+=\"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"[Math.floor(62*Math.random())];return{token:[\"1\",V,t].join(\"\"),tokenExpiresAt:Date.now()+432e5}}();this._skuToken=t.token,this._skuTokenExpiresAt=t.tokenExpiresAt},H.prototype._isSkuTokenExpired=function(){return Date.now()>this._skuTokenExpiresAt},H.prototype.transformRequest=function(t,e){return this._transformRequestFn&&this._transformRequestFn(t,e)||{url:t}},H.prototype.normalizeStyleURL=function(t,e){if(!q(t))return t;var r=X(t);return r.path=\"/styles/v1\"+r.path,this._makeAPIURL(r,this._customAccessToken||e)},H.prototype.normalizeGlyphsURL=function(t,e){if(!q(t))return t;var r=X(t);return r.path=\"/fonts/v1\"+r.path,this._makeAPIURL(r,this._customAccessToken||e)},H.prototype.normalizeSourceURL=function(t,e){if(!q(t))return t;var r=X(t);return r.path=\"/v4/\"+r.authority+\".json\",r.params.push(\"secure\"),this._makeAPIURL(r,this._customAccessToken||e)},H.prototype.normalizeSpriteURL=function(t,e,r,n){var i=X(t);return q(t)?(i.path=\"/styles/v1\"+i.path+\"/sprite\"+e+r,this._makeAPIURL(i,this._customAccessToken||n)):(i.path+=\"\"+e+r,Z(i))},H.prototype.normalizeTileURL=function(t,e){if(this._isSkuTokenExpired()&&this._createSkuToken(),t&&!q(t))return t;var r=X(t),n=R.devicePixelRatio>=2||512===e?\"@2x\":\"\",i=B.supported?\".webp\":\"$1\";r.path=r.path.replace(/(\\.(png|jpg)\\d*)(?=$)/,\"\"+n+i),r.path=r.path.replace(/^.+\\/v4\\//,\"/\"),r.path=\"/v4\"+r.path;var a=this._customAccessToken||function(t){for(var e=0,r=t;e=1&&self.localStorage.setItem(e,JSON.stringify(this.eventData))}catch(t){_(\"Unable to write to LocalStorage\")}},K.prototype.processRequests=function(t){},K.prototype.postEvent=function(t,e,r,n){var i=this;if(F.EVENTS_URL){var a=X(F.EVENTS_URL);a.params.push(\"access_token=\"+(n||F.ACCESS_TOKEN||\"\"));var o={event:this.type,created:new Date(t).toISOString(),sdkIdentifier:\"mapbox-gl-js\",sdkVersion:\"1.10.1\",skuId:V,userId:this.anonId},s=e?u(o,e):o,l={url:Z(a),headers:{\"Content-Type\":\"text/plain\"},body:JSON.stringify([s])};this.pendingRequest=bt(l,(function(t){i.pendingRequest=null,r(t),i.saveEventData(),i.processRequests(n)}))}},K.prototype.queueRequest=function(t,e){this.queue.push(t),this.processRequests(e)};var Q,$,tt=function(t){function e(){t.call(this,\"map.load\"),this.success={},this.skuToken=\"\"}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.postMapLoadEvent=function(t,e,r,n){this.skuToken=r,(F.EVENTS_URL&&n||F.ACCESS_TOKEN&&Array.isArray(t)&&t.some((function(t){return q(t)||Y(t)})))&&this.queueRequest({id:e,timestamp:Date.now()},n)},e.prototype.processRequests=function(t){var e=this;if(!this.pendingRequest&&0!==this.queue.length){var r=this.queue.shift(),n=r.id,i=r.timestamp;n&&this.success[n]||(this.anonId||this.fetchEventData(),d(this.anonId)||(this.anonId=p()),this.postEvent(i,{skuToken:this.skuToken},(function(t){t||n&&(e.success[n]=!0)}),t))}},e}(K),et=new(function(t){function e(e){t.call(this,\"appUserTurnstile\"),this._customAccessToken=e}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.postTurnstileEvent=function(t,e){F.EVENTS_URL&&F.ACCESS_TOKEN&&Array.isArray(t)&&t.some((function(t){return q(t)||Y(t)}))&&this.queueRequest(Date.now(),e)},e.prototype.processRequests=function(t){var e=this;if(!this.pendingRequest&&0!==this.queue.length){this.anonId&&this.eventData.lastSuccess&&this.eventData.tokenU||this.fetchEventData();var r=J(F.ACCESS_TOKEN),n=r?r.u:F.ACCESS_TOKEN,i=n!==this.eventData.tokenU;d(this.anonId)||(this.anonId=p(),i=!0);var a=this.queue.shift();if(this.eventData.lastSuccess){var o=new Date(this.eventData.lastSuccess),s=new Date(a),l=(a-this.eventData.lastSuccess)/864e5;i=i||l>=1||l<-1||o.getDate()!==s.getDate()}else i=!0;if(!i)return this.processRequests();this.postEvent(a,{\"enabled.telemetry\":!1},(function(t){t||(e.eventData.lastSuccess=a,e.eventData.tokenU=n)}),t)}},e}(K)),rt=et.postTurnstileEvent.bind(et),nt=new tt,it=nt.postMapLoadEvent.bind(nt),at=500,ot=50;function st(){self.caches&&!Q&&(Q=self.caches.open(\"mapbox-tiles\"))}function lt(t,e,r){if(st(),Q){var n={status:e.status,statusText:e.statusText,headers:new self.Headers};e.headers.forEach((function(t,e){return n.headers.set(e,t)}));var i=A(e.headers.get(\"Cache-Control\")||\"\");if(!i[\"no-store\"])i[\"max-age\"]&&n.headers.set(\"Expires\",new Date(r+1e3*i[\"max-age\"]).toUTCString()),new Date(n.headers.get(\"Expires\")).getTime()-r<42e4||function(t,e){if(void 0===$)try{new Response(new ReadableStream),$=!0}catch(t){$=!1}$?e(t.body):t.blob().then(e)}(e,(function(e){var r=new self.Response(e,n);st(),Q&&Q.then((function(e){return e.put(ct(t.url),r)})).catch((function(t){return _(t.message)}))}))}}function ct(t){var e=t.indexOf(\"?\");return e<0?t:t.slice(0,e)}function ut(t,e){if(st(),!Q)return e(null);var r=ct(t.url);Q.then((function(t){t.match(r).then((function(n){var i=function(t){if(!t)return!1;var e=new Date(t.headers.get(\"Expires\")||0),r=A(t.headers.get(\"Cache-Control\")||\"\");return e>Date.now()&&!r[\"no-cache\"]}(n);t.delete(r),i&&t.put(r,n.clone()),e(null,n,i)})).catch(e)})).catch(e)}var ft,ht=1/0;function pt(){return null==ft&&(ft=self.OffscreenCanvas&&new self.OffscreenCanvas(1,1).getContext(\"2d\")&&\"function\"==typeof self.createImageBitmap),ft}var dt={Unknown:\"Unknown\",Style:\"Style\",Source:\"Source\",Tile:\"Tile\",Glyphs:\"Glyphs\",SpriteImage:\"SpriteImage\",SpriteJSON:\"SpriteJSON\",Image:\"Image\"};\"function\"==typeof Object.freeze&&Object.freeze(dt);var gt=function(t){function e(e,r,n){401===r&&Y(n)&&(e+=\": you may have provided an invalid Mapbox access token. See https://www.mapbox.com/api-documentation/#access-tokens-and-token-scopes\"),t.call(this,e),this.status=r,this.url=n,this.name=this.constructor.name,this.message=e}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.toString=function(){return this.name+\": \"+this.message+\" (\"+this.status+\"): \"+this.url},e}(Error),mt=k()?function(){return self.worker&&self.worker.referrer}:function(){return(\"blob:\"===self.location.protocol?self.parent:self).location.href};function vt(t,e){var r,n=new self.AbortController,i=new self.Request(t.url,{method:t.method||\"GET\",body:t.body,credentials:t.credentials,headers:t.headers,referrer:mt(),signal:n.signal}),a=!1,o=!1,s=(r=i.url).indexOf(\"sku=\")>0&&Y(r);\"json\"===t.type&&i.headers.set(\"Accept\",\"application/json\");var l=function(r,n,a){if(!o){if(r&&\"SecurityError\"!==r.message&&_(r),n&&a)return c(n);var l=Date.now();self.fetch(i).then((function(r){if(r.ok){var n=s?r.clone():null;return c(r,n,l)}return e(new gt(r.statusText,r.status,t.url))})).catch((function(t){20!==t.code&&e(new Error(t.message))}))}},c=function(r,n,s){(\"arrayBuffer\"===t.type?r.arrayBuffer():\"json\"===t.type?r.json():r.text()).then((function(t){o||(n&&s&<(i,n,s),a=!0,e(null,t,r.headers.get(\"Cache-Control\"),r.headers.get(\"Expires\")))})).catch((function(t){o||e(new Error(t.message))}))};return s?ut(i,l):l(null,null),{cancel:function(){o=!0,a||n.abort()}}}var yt=function(t,e){if(r=t.url,!(/^file:/.test(r)||/^file:/.test(mt())&&!/^\\w+:/.test(r))){if(self.fetch&&self.Request&&self.AbortController&&self.Request.prototype.hasOwnProperty(\"signal\"))return vt(t,e);if(k()&&self.worker&&self.worker.actor){return self.worker.actor.send(\"getResource\",t,e,void 0,!0)}}var r;return function(t,e){var r=new self.XMLHttpRequest;for(var n in r.open(t.method||\"GET\",t.url,!0),\"arrayBuffer\"===t.type&&(r.responseType=\"arraybuffer\"),t.headers)r.setRequestHeader(n,t.headers[n]);return\"json\"===t.type&&(r.responseType=\"text\",r.setRequestHeader(\"Accept\",\"application/json\")),r.withCredentials=\"include\"===t.credentials,r.onerror=function(){e(new Error(r.statusText))},r.onload=function(){if((r.status>=200&&r.status<300||0===r.status)&&null!==r.response){var n=r.response;if(\"json\"===t.type)try{n=JSON.parse(r.response)}catch(t){return e(t)}e(null,n,r.getResponseHeader(\"Cache-Control\"),r.getResponseHeader(\"Expires\"))}else e(new gt(r.statusText,r.status,t.url))},r.send(t.body),{cancel:function(){return r.abort()}}}(t,e)},xt=function(t,e){return yt(u(t,{type:\"arrayBuffer\"}),e)},bt=function(t,e){return yt(u(t,{method:\"POST\"}),e)};var _t,wt;_t=[],wt=0;var Tt=function(t,e){if(B.supported&&(t.headers||(t.headers={}),t.headers.accept=\"image/webp,*/*\"),wt>=F.MAX_PARALLEL_IMAGE_REQUESTS){var r={requestParameters:t,callback:e,cancelled:!1,cancel:function(){this.cancelled=!0}};return _t.push(r),r}wt++;var n=!1,i=function(){if(!n)for(n=!0,wt--;_t.length&&wt0||this._oneTimeListeners&&this._oneTimeListeners[t]&&this._oneTimeListeners[t].length>0||this._eventedParent&&this._eventedParent.listens(t)},Et.prototype.setEventedParent=function(t,e){return this._eventedParent=t,this._eventedParentData=e,this};var Lt={$version:8,$root:{version:{required:!0,type:\"enum\",values:[8]},name:{type:\"string\"},metadata:{type:\"*\"},center:{type:\"array\",value:\"number\"},zoom:{type:\"number\"},bearing:{type:\"number\",default:0,period:360,units:\"degrees\"},pitch:{type:\"number\",default:0,units:\"degrees\"},light:{type:\"light\"},sources:{required:!0,type:\"sources\"},sprite:{type:\"string\"},glyphs:{type:\"string\"},transition:{type:\"transition\"},layers:{required:!0,type:\"array\",value:\"layer\"}},sources:{\"*\":{type:\"source\"}},source:[\"source_vector\",\"source_raster\",\"source_raster_dem\",\"source_geojson\",\"source_video\",\"source_image\"],source_vector:{type:{required:!0,type:\"enum\",values:{vector:{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.051129,180,85.051129]},scheme:{type:\"enum\",values:{xyz:{},tms:{}},default:\"xyz\"},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},attribution:{type:\"string\"},promoteId:{type:\"promoteId\"},\"*\":{type:\"*\"}},source_raster:{type:{required:!0,type:\"enum\",values:{raster:{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},tileSize:{type:\"number\",default:512,units:\"pixels\"},scheme:{type:\"enum\",values:{xyz:{},tms:{}},default:\"xyz\"},attribution:{type:\"string\"},\"*\":{type:\"*\"}},source_raster_dem:{type:{required:!0,type:\"enum\",values:{\"raster-dem\":{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},tileSize:{type:\"number\",default:512,units:\"pixels\"},attribution:{type:\"string\"},encoding:{type:\"enum\",values:{terrarium:{},mapbox:{}},default:\"mapbox\"},\"*\":{type:\"*\"}},source_geojson:{type:{required:!0,type:\"enum\",values:{geojson:{}}},data:{type:\"*\"},maxzoom:{type:\"number\",default:18},attribution:{type:\"string\"},buffer:{type:\"number\",default:128,maximum:512,minimum:0},tolerance:{type:\"number\",default:.375},cluster:{type:\"boolean\",default:!1},clusterRadius:{type:\"number\",default:50,minimum:0},clusterMaxZoom:{type:\"number\"},clusterProperties:{type:\"*\"},lineMetrics:{type:\"boolean\",default:!1},generateId:{type:\"boolean\",default:!1},promoteId:{type:\"promoteId\"}},source_video:{type:{required:!0,type:\"enum\",values:{video:{}}},urls:{required:!0,type:\"array\",value:\"string\"},coordinates:{required:!0,type:\"array\",length:4,value:{type:\"array\",length:2,value:\"number\"}}},source_image:{type:{required:!0,type:\"enum\",values:{image:{}}},url:{required:!0,type:\"string\"},coordinates:{required:!0,type:\"array\",length:4,value:{type:\"array\",length:2,value:\"number\"}}},layer:{id:{type:\"string\",required:!0},type:{type:\"enum\",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},\"fill-extrusion\":{},raster:{},hillshade:{},background:{}},required:!0},metadata:{type:\"*\"},source:{type:\"string\"},\"source-layer\":{type:\"string\"},minzoom:{type:\"number\",minimum:0,maximum:24},maxzoom:{type:\"number\",minimum:0,maximum:24},filter:{type:\"filter\"},layout:{type:\"layout\"},paint:{type:\"paint\"}},layout:[\"layout_fill\",\"layout_line\",\"layout_circle\",\"layout_heatmap\",\"layout_fill-extrusion\",\"layout_symbol\",\"layout_raster\",\"layout_hillshade\",\"layout_background\"],layout_background:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_fill:{\"fill-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_circle:{\"circle-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_heatmap:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},\"layout_fill-extrusion\":{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_line:{\"line-cap\":{type:\"enum\",values:{butt:{},round:{},square:{}},default:\"butt\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-join\":{type:\"enum\",values:{bevel:{},round:{},miter:{}},default:\"miter\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"line-miter-limit\":{type:\"number\",default:2,requires:[{\"line-join\":\"miter\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-round-limit\":{type:\"number\",default:1.05,requires:[{\"line-join\":\"round\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_symbol:{\"symbol-placement\":{type:\"enum\",values:{point:{},line:{},\"line-center\":{}},default:\"point\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-spacing\":{type:\"number\",default:250,minimum:1,units:\"pixels\",requires:[{\"symbol-placement\":\"line\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-avoid-edges\":{type:\"boolean\",default:!1,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"symbol-z-order\":{type:\"enum\",values:{auto:{},\"viewport-y\":{},source:{}},default:\"auto\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-allow-overlap\":{type:\"boolean\",default:!1,requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-ignore-placement\":{type:\"boolean\",default:!1,requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-optional\":{type:\"boolean\",default:!1,requires:[\"icon-image\",\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-rotation-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-size\":{type:\"number\",default:1,minimum:0,units:\"factor of the original icon size\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-text-fit\":{type:\"enum\",values:{none:{},width:{},height:{},both:{}},default:\"none\",requires:[\"icon-image\",\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-text-fit-padding\":{type:\"array\",value:\"number\",length:4,default:[0,0,0,0],units:\"pixels\",requires:[\"icon-image\",\"text-field\",{\"icon-text-fit\":[\"both\",\"width\",\"height\"]}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-image\":{type:\"resolvedImage\",tokens:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-rotate\":{type:\"number\",default:0,period:360,units:\"degrees\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-padding\":{type:\"number\",default:2,minimum:0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-keep-upright\":{type:\"boolean\",default:!1,requires:[\"icon-image\",{\"icon-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-offset\":{type:\"array\",value:\"number\",length:2,default:[0,0],requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-anchor\":{type:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},default:\"center\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotation-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-field\":{type:\"formatted\",default:\"\",tokens:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-font\":{type:\"array\",value:\"string\",default:[\"Open Sans Regular\",\"Arial Unicode MS Regular\"],requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-size\":{type:\"number\",default:16,minimum:0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-max-width\":{type:\"number\",default:10,minimum:0,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-line-height\":{type:\"number\",default:1.2,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-letter-spacing\":{type:\"number\",default:0,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-justify\":{type:\"enum\",values:{auto:{},left:{},center:{},right:{}},default:\"center\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-radial-offset\":{type:\"number\",units:\"ems\",default:0,requires:[\"text-field\"],\"property-type\":\"data-driven\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]}},\"text-variable-anchor\":{type:\"array\",value:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},requires:[\"text-field\",{\"symbol-placement\":[\"point\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-anchor\":{type:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},default:\"center\",requires:[\"text-field\",{\"!\":\"text-variable-anchor\"}],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-max-angle\":{type:\"number\",default:45,units:\"degrees\",requires:[\"text-field\",{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-writing-mode\":{type:\"array\",value:\"enum\",values:{horizontal:{},vertical:{}},requires:[\"text-field\",{\"symbol-placement\":[\"point\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotate\":{type:\"number\",default:0,period:360,units:\"degrees\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-padding\":{type:\"number\",default:2,minimum:0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-keep-upright\":{type:\"boolean\",default:!0,requires:[\"text-field\",{\"text-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-transform\":{type:\"enum\",values:{none:{},uppercase:{},lowercase:{}},default:\"none\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-offset\":{type:\"array\",value:\"number\",units:\"ems\",length:2,default:[0,0],requires:[\"text-field\",{\"!\":\"text-radial-offset\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-allow-overlap\":{type:\"boolean\",default:!1,requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-ignore-placement\":{type:\"boolean\",default:!1,requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-optional\":{type:\"boolean\",default:!1,requires:[\"text-field\",\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_raster:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_hillshade:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},filter:{type:\"array\",value:\"*\"},filter_operator:{type:\"enum\",values:{\"==\":{},\"!=\":{},\">\":{},\">=\":{},\"<\":{},\"<=\":{},in:{},\"!in\":{},all:{},any:{},none:{},has:{},\"!has\":{},within:{}}},geometry_type:{type:\"enum\",values:{Point:{},LineString:{},Polygon:{}}},function:{expression:{type:\"expression\"},stops:{type:\"array\",value:\"function_stop\"},base:{type:\"number\",default:1,minimum:0},property:{type:\"string\",default:\"$zoom\"},type:{type:\"enum\",values:{identity:{},exponential:{},interval:{},categorical:{}},default:\"exponential\"},colorSpace:{type:\"enum\",values:{rgb:{},lab:{},hcl:{}},default:\"rgb\"},default:{type:\"*\",required:!1}},function_stop:{type:\"array\",minimum:0,maximum:24,value:[\"number\",\"color\"],length:2},expression:{type:\"array\",value:\"*\",minimum:1},expression_name:{type:\"enum\",values:{let:{group:\"Variable binding\"},var:{group:\"Variable binding\"},literal:{group:\"Types\"},array:{group:\"Types\"},at:{group:\"Lookup\"},in:{group:\"Lookup\"},\"index-of\":{group:\"Lookup\"},slice:{group:\"Lookup\"},case:{group:\"Decision\"},match:{group:\"Decision\"},coalesce:{group:\"Decision\"},step:{group:\"Ramps, scales, curves\"},interpolate:{group:\"Ramps, scales, curves\"},\"interpolate-hcl\":{group:\"Ramps, scales, curves\"},\"interpolate-lab\":{group:\"Ramps, scales, curves\"},ln2:{group:\"Math\"},pi:{group:\"Math\"},e:{group:\"Math\"},typeof:{group:\"Types\"},string:{group:\"Types\"},number:{group:\"Types\"},boolean:{group:\"Types\"},object:{group:\"Types\"},collator:{group:\"Types\"},format:{group:\"Types\"},image:{group:\"Types\"},\"number-format\":{group:\"Types\"},\"to-string\":{group:\"Types\"},\"to-number\":{group:\"Types\"},\"to-boolean\":{group:\"Types\"},\"to-rgba\":{group:\"Color\"},\"to-color\":{group:\"Types\"},rgb:{group:\"Color\"},rgba:{group:\"Color\"},get:{group:\"Lookup\"},has:{group:\"Lookup\"},length:{group:\"Lookup\"},properties:{group:\"Feature data\"},\"feature-state\":{group:\"Feature data\"},\"geometry-type\":{group:\"Feature data\"},id:{group:\"Feature data\"},zoom:{group:\"Zoom\"},\"heatmap-density\":{group:\"Heatmap\"},\"line-progress\":{group:\"Feature data\"},accumulated:{group:\"Feature data\"},\"+\":{group:\"Math\"},\"*\":{group:\"Math\"},\"-\":{group:\"Math\"},\"/\":{group:\"Math\"},\"%\":{group:\"Math\"},\"^\":{group:\"Math\"},sqrt:{group:\"Math\"},log10:{group:\"Math\"},ln:{group:\"Math\"},log2:{group:\"Math\"},sin:{group:\"Math\"},cos:{group:\"Math\"},tan:{group:\"Math\"},asin:{group:\"Math\"},acos:{group:\"Math\"},atan:{group:\"Math\"},min:{group:\"Math\"},max:{group:\"Math\"},round:{group:\"Math\"},abs:{group:\"Math\"},ceil:{group:\"Math\"},floor:{group:\"Math\"},distance:{group:\"Math\"},\"==\":{group:\"Decision\"},\"!=\":{group:\"Decision\"},\">\":{group:\"Decision\"},\"<\":{group:\"Decision\"},\">=\":{group:\"Decision\"},\"<=\":{group:\"Decision\"},all:{group:\"Decision\"},any:{group:\"Decision\"},\"!\":{group:\"Decision\"},within:{group:\"Decision\"},\"is-supported-script\":{group:\"String\"},upcase:{group:\"String\"},downcase:{group:\"String\"},concat:{group:\"String\"},\"resolved-locale\":{group:\"String\"}}},light:{anchor:{type:\"enum\",default:\"viewport\",values:{map:{},viewport:{}},\"property-type\":\"data-constant\",transition:!1,expression:{interpolated:!1,parameters:[\"zoom\"]}},position:{type:\"array\",default:[1.15,210,30],length:3,value:\"number\",\"property-type\":\"data-constant\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]}},color:{type:\"color\",\"property-type\":\"data-constant\",default:\"#ffffff\",expression:{interpolated:!0,parameters:[\"zoom\"]},transition:!0},intensity:{type:\"number\",\"property-type\":\"data-constant\",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:[\"zoom\"]},transition:!0}},paint:[\"paint_fill\",\"paint_line\",\"paint_circle\",\"paint_heatmap\",\"paint_fill-extrusion\",\"paint_symbol\",\"paint_raster\",\"paint_hillshade\",\"paint_background\"],paint_fill:{\"fill-antialias\":{type:\"boolean\",default:!0,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"fill-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-outline-color\":{type:\"color\",transition:!0,requires:[{\"!\":\"fill-pattern\"},{\"fill-antialias\":!0}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"fill-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"}},\"paint_fill-extrusion\":{\"fill-extrusion-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"fill-extrusion-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"fill-extrusion-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"fill-extrusion-height\":{type:\"number\",default:0,minimum:0,units:\"meters\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-base\":{type:\"number\",default:0,minimum:0,units:\"meters\",transition:!0,requires:[\"fill-extrusion-height\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-vertical-gradient\":{type:\"boolean\",default:!0,transition:!1,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_line:{\"line-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"line-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"line-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-width\":{type:\"number\",default:1,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-gap-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-offset\":{type:\"number\",default:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-dasharray\":{type:\"array\",value:\"number\",minimum:0,transition:!0,units:\"line widths\",requires:[{\"!\":\"line-pattern\"}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"cross-faded\"},\"line-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"line-gradient\":{type:\"color\",transition:!1,requires:[{\"!\":\"line-dasharray\"},{\"!\":\"line-pattern\"},{source:\"geojson\",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:[\"line-progress\"]},\"property-type\":\"color-ramp\"}},paint_circle:{\"circle-radius\":{type:\"number\",default:5,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-blur\":{type:\"number\",default:0,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"circle-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-scale\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{}},default:\"viewport\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-stroke-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"}},paint_heatmap:{\"heatmap-radius\":{type:\"number\",default:30,minimum:1,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-weight\":{type:\"number\",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-intensity\":{type:\"number\",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"heatmap-color\":{type:\"color\",default:[\"interpolate\",[\"linear\"],[\"heatmap-density\"],0,\"rgba(0, 0, 255, 0)\",.1,\"royalblue\",.3,\"cyan\",.5,\"lime\",.7,\"yellow\",1,\"red\"],transition:!1,expression:{interpolated:!0,parameters:[\"heatmap-density\"]},\"property-type\":\"color-ramp\"},\"heatmap-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_symbol:{\"icon-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-color\":{type:\"color\",default:\"rgba(0, 0, 0, 0)\",transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"icon-image\",\"icon-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-color\":{type:\"color\",default:\"#000000\",transition:!0,overridable:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-color\":{type:\"color\",default:\"rgba(0, 0, 0, 0)\",transition:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"text-field\",\"text-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_raster:{\"raster-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-hue-rotate\":{type:\"number\",default:0,period:360,transition:!0,units:\"degrees\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-min\":{type:\"number\",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-max\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-saturation\":{type:\"number\",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-contrast\":{type:\"number\",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-resampling\":{type:\"enum\",values:{linear:{},nearest:{}},default:\"linear\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-fade-duration\":{type:\"number\",default:300,minimum:0,transition:!1,units:\"milliseconds\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_hillshade:{\"hillshade-illumination-direction\":{type:\"number\",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-illumination-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"viewport\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-exaggeration\":{type:\"number\",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-shadow-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-highlight-color\":{type:\"color\",default:\"#FFFFFF\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-accent-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_background:{\"background-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"background-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"background-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"cross-faded\"},\"background-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},transition:{duration:{type:\"number\",default:300,minimum:0,units:\"milliseconds\"},delay:{type:\"number\",default:0,minimum:0,units:\"milliseconds\"}},\"property-type\":{\"data-driven\":{type:\"property-type\"},\"cross-faded\":{type:\"property-type\"},\"cross-faded-data-driven\":{type:\"property-type\"},\"color-ramp\":{type:\"property-type\"},\"data-constant\":{type:\"property-type\"},constant:{type:\"property-type\"}},promoteId:{\"*\":{type:\"string\"}}},Ct=function(t,e,r,n){this.message=(t?t+\": \":\"\")+r,n&&(this.identifier=n),null!=e&&e.__line__&&(this.line=e.__line__)};function Pt(t){var e=t.key,r=t.value;return r?[new Ct(e,r,\"constants have been deprecated as of v8\")]:[]}function It(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];for(var n=0,i=e;n\":\"value\"===t.itemType.kind?\"array\":\"array<\"+e+\">\"}return t.kind}var Zt=[Ft,Bt,Nt,jt,Ut,Gt,Vt,Wt(Ht),Yt];function Jt(t,e){if(\"error\"===e.kind)return null;if(\"array\"===t.kind){if(\"array\"===e.kind&&(0===e.N&&\"value\"===e.itemType.kind||!Jt(t.itemType,e.itemType))&&(\"number\"!=typeof t.N||t.N===e.N))return null}else{if(t.kind===e.kind)return null;if(\"value\"===t.kind)for(var r=0,n=Zt;r255?255:t}function i(t){return t<0?0:t>1?1:t}function a(t){return\"%\"===t[t.length-1]?n(parseFloat(t)/100*255):n(parseInt(t))}function o(t){return\"%\"===t[t.length-1]?i(parseFloat(t)/100):i(parseFloat(t))}function s(t,e,r){return r<0?r+=1:r>1&&(r-=1),6*r<1?t+(e-t)*r*6:2*r<1?e:3*r<2?t+(e-t)*(2/3-r)*6:t}try{e.parseCSSColor=function(t){var e,i=t.replace(/ /g,\"\").toLowerCase();if(i in r)return r[i].slice();if(\"#\"===i[0])return 4===i.length?(e=parseInt(i.substr(1),16))>=0&&e<=4095?[(3840&e)>>4|(3840&e)>>8,240&e|(240&e)>>4,15&e|(15&e)<<4,1]:null:7===i.length&&(e=parseInt(i.substr(1),16))>=0&&e<=16777215?[(16711680&e)>>16,(65280&e)>>8,255&e,1]:null;var l=i.indexOf(\"(\"),c=i.indexOf(\")\");if(-1!==l&&c+1===i.length){var u=i.substr(0,l),f=i.substr(l+1,c-(l+1)).split(\",\"),h=1;switch(u){case\"rgba\":if(4!==f.length)return null;h=o(f.pop());case\"rgb\":return 3!==f.length?null:[a(f[0]),a(f[1]),a(f[2]),h];case\"hsla\":if(4!==f.length)return null;h=o(f.pop());case\"hsl\":if(3!==f.length)return null;var p=(parseFloat(f[0])%360+360)%360/360,d=o(f[1]),g=o(f[2]),m=g<=.5?g*(d+1):g+d-g*d,v=2*g-m;return[n(255*s(v,m,p+1/3)),n(255*s(v,m,p)),n(255*s(v,m,p-1/3)),h];default:return null}}return null}}catch(t){}})).parseCSSColor,te=function(t,e,r,n){void 0===n&&(n=1),this.r=t,this.g=e,this.b=r,this.a=n};te.parse=function(t){if(t){if(t instanceof te)return t;if(\"string\"==typeof t){var e=$t(t);if(e)return new te(e[0]/255*e[3],e[1]/255*e[3],e[2]/255*e[3],e[3])}}},te.prototype.toString=function(){var t=this.toArray(),e=t[0],r=t[1],n=t[2],i=t[3];return\"rgba(\"+Math.round(e)+\",\"+Math.round(r)+\",\"+Math.round(n)+\",\"+i+\")\"},te.prototype.toArray=function(){var t=this.r,e=this.g,r=this.b,n=this.a;return 0===n?[0,0,0,0]:[255*t/n,255*e/n,255*r/n,n]},te.black=new te(0,0,0,1),te.white=new te(1,1,1,1),te.transparent=new te(0,0,0,0),te.red=new te(1,0,0,1);var ee=function(t,e,r){this.sensitivity=t?e?\"variant\":\"case\":e?\"accent\":\"base\",this.locale=r,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:\"search\"})};ee.prototype.compare=function(t,e){return this.collator.compare(t,e)},ee.prototype.resolvedLocale=function(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale};var re=function(t,e,r,n,i){this.text=t,this.image=e,this.scale=r,this.fontStack=n,this.textColor=i},ne=function(t){this.sections=t};ne.fromString=function(t){return new ne([new re(t,null,null,null,null)])},ne.prototype.isEmpty=function(){return 0===this.sections.length||!this.sections.some((function(t){return 0!==t.text.length||t.image&&0!==t.image.name.length}))},ne.factory=function(t){return t instanceof ne?t:ne.fromString(t)},ne.prototype.toString=function(){return 0===this.sections.length?\"\":this.sections.map((function(t){return t.text})).join(\"\")},ne.prototype.serialize=function(){for(var t=[\"format\"],e=0,r=this.sections;e=0&&t<=255&&\"number\"==typeof e&&e>=0&&e<=255&&\"number\"==typeof r&&r>=0&&r<=255?void 0===n||\"number\"==typeof n&&n>=0&&n<=1?null:\"Invalid rgba value [\"+[t,e,r,n].join(\", \")+\"]: 'a' must be between 0 and 1.\":\"Invalid rgba value [\"+(\"number\"==typeof n?[t,e,r,n]:[t,e,r]).join(\", \")+\"]: 'r', 'g', and 'b' must be between 0 and 255.\"}function oe(t){if(null===t)return!0;if(\"string\"==typeof t)return!0;if(\"boolean\"==typeof t)return!0;if(\"number\"==typeof t)return!0;if(t instanceof te)return!0;if(t instanceof ee)return!0;if(t instanceof ne)return!0;if(t instanceof ie)return!0;if(Array.isArray(t)){for(var e=0,r=t;e2){var s=t[1];if(\"string\"!=typeof s||!(s in fe)||\"object\"===s)return e.error('The item type argument of \"array\" must be one of string, number, boolean',1);a=fe[s],n++}else a=Ht;if(t.length>3){if(null!==t[2]&&(\"number\"!=typeof t[2]||t[2]<0||t[2]!==Math.floor(t[2])))return e.error('The length argument to \"array\" must be a positive integer literal',2);o=t[2],n++}r=Wt(a,o)}else r=fe[i];for(var l=[];n1)&&e.push(n)}}return e.concat(this.args.map((function(t){return t.serialize()})))};var pe=function(t){this.type=Gt,this.sections=t};pe.parse=function(t,e){if(t.length<2)return e.error(\"Expected at least one argument.\");var r=t[1];if(!Array.isArray(r)&&\"object\"==typeof r)return e.error(\"First argument must be an image or text section.\");for(var n=[],i=!1,a=1;a<=t.length-1;++a){var o=t[a];if(i&&\"object\"==typeof o&&!Array.isArray(o)){i=!1;var s=null;if(o[\"font-scale\"]&&!(s=e.parse(o[\"font-scale\"],1,Bt)))return null;var l=null;if(o[\"text-font\"]&&!(l=e.parse(o[\"text-font\"],1,Wt(Nt))))return null;var c=null;if(o[\"text-color\"]&&!(c=e.parse(o[\"text-color\"],1,Ut)))return null;var u=n[n.length-1];u.scale=s,u.font=l,u.textColor=c}else{var f=e.parse(t[a],1,Ht);if(!f)return null;var h=f.type.kind;if(\"string\"!==h&&\"value\"!==h&&\"null\"!==h&&\"resolvedImage\"!==h)return e.error(\"Formatted text type must be 'string', 'value', 'image' or 'null'.\");i=!0,n.push({content:f,scale:null,font:null,textColor:null})}}return new pe(n)},pe.prototype.evaluate=function(t){return new ne(this.sections.map((function(e){var r=e.content.evaluate(t);return se(r)===Yt?new re(\"\",r,null,null,null):new re(le(r),null,e.scale?e.scale.evaluate(t):null,e.font?e.font.evaluate(t).join(\",\"):null,e.textColor?e.textColor.evaluate(t):null)})))},pe.prototype.eachChild=function(t){for(var e=0,r=this.sections;e-1),r},de.prototype.eachChild=function(t){t(this.input)},de.prototype.outputDefined=function(){return!1},de.prototype.serialize=function(){return[\"image\",this.input.serialize()]};var ge={\"to-boolean\":jt,\"to-color\":Ut,\"to-number\":Bt,\"to-string\":Nt},me=function(t,e){this.type=t,this.args=e};me.parse=function(t,e){if(t.length<2)return e.error(\"Expected at least one argument.\");var r=t[0];if((\"to-boolean\"===r||\"to-string\"===r)&&2!==t.length)return e.error(\"Expected one argument.\");for(var n=ge[r],i=[],a=1;a4?\"Invalid rbga value \"+JSON.stringify(e)+\": expected an array containing either three or four numeric values.\":ae(e[0],e[1],e[2],e[3])))return new te(e[0]/255,e[1]/255,e[2]/255,e[3])}throw new ue(r||\"Could not parse color from value '\"+(\"string\"==typeof e?e:String(JSON.stringify(e)))+\"'\")}if(\"number\"===this.type.kind){for(var o=null,s=0,l=this.args;s=e[2])&&(!(t[1]<=e[1])&&!(t[3]>=e[3])))}function Te(t,e){var r,n=(180+t[0])/360,i=(r=t[1],(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+r*Math.PI/360)))/360),a=Math.pow(2,e.z);return[Math.round(n*a*8192),Math.round(i*a*8192)]}function ke(t,e,r){return e[1]>t[1]!=r[1]>t[1]&&t[0]<(r[0]-e[0])*(t[1]-e[1])/(r[1]-e[1])+e[0]}function Ae(t,e){for(var r,n,i,a,o,s,l,c=!1,u=0,f=e.length;u0&&f<0||u<0&&f>0}function Ee(t,e,r){for(var n=0,i=r;nr[2]){var i=.5*n,a=t[0]-r[0]>i?-n:r[0]-t[0]>i?n:0;0===a&&(a=t[0]-r[2]>i?-n:r[2]-t[0]>i?n:0),t[0]+=a}_e(e,t)}function ze(t,e,r,n){for(var i=8192*Math.pow(2,n.z),a=[8192*n.x,8192*n.y],o=[],s=0,l=t;s=0)return!1;var r=!0;return t.eachChild((function(t){r&&!Ne(t,e)&&(r=!1)})),r}Re.parse=function(t,e){if(2!==t.length)return e.error(\"'within' expression requires exactly one argument, but found \"+(t.length-1)+\" instead.\");if(oe(t[1])){var r=t[1];if(\"FeatureCollection\"===r.type)for(var n=0;ne))throw new ue(\"Input is not a number.\");o=s-1}return 0}Ue.prototype.parse=function(t,e,r,n,i){return void 0===i&&(i={}),e?this.concat(e,r,n)._parse(t,i):this._parse(t,i)},Ue.prototype._parse=function(t,e){function r(t,e,r){return\"assert\"===r?new he(e,[t]):\"coerce\"===r?new me(e,[t]):t}if(null!==t&&\"string\"!=typeof t&&\"boolean\"!=typeof t&&\"number\"!=typeof t||(t=[\"literal\",t]),Array.isArray(t)){if(0===t.length)return this.error('Expected an array with at least one element. If you wanted a literal array, use [\"literal\", []].');var n=t[0];if(\"string\"!=typeof n)return this.error(\"Expression name must be a string, but found \"+typeof n+' instead. If you wanted a literal array, use [\"literal\", [...]].',0),null;var i=this.registry[n];if(i){var a=i.parse(t,this);if(!a)return null;if(this.expectedType){var o=this.expectedType,s=a.type;if(\"string\"!==o.kind&&\"number\"!==o.kind&&\"boolean\"!==o.kind&&\"object\"!==o.kind&&\"array\"!==o.kind||\"value\"!==s.kind)if(\"color\"!==o.kind&&\"formatted\"!==o.kind&&\"resolvedImage\"!==o.kind||\"value\"!==s.kind&&\"string\"!==s.kind){if(this.checkSubtype(o,s))return null}else a=r(a,o,e.typeAnnotation||\"coerce\");else a=r(a,o,e.typeAnnotation||\"assert\")}if(!(a instanceof ce)&&\"resolvedImage\"!==a.type.kind&&function t(e){if(e instanceof je)return t(e.boundExpression);if(e instanceof xe&&\"error\"===e.name)return!1;if(e instanceof be)return!1;if(e instanceof Re)return!1;var r=e instanceof me||e instanceof he,n=!0;if(e.eachChild((function(e){n=r?n&&t(e):n&&e instanceof ce})),!n)return!1;return Fe(e)&&Ne(e,[\"zoom\",\"heatmap-density\",\"line-progress\",\"accumulated\",\"is-supported-script\"])}(a)){var l=new ye;try{a=new ce(a.type,a.evaluate(l))}catch(t){return this.error(t.message),null}}return a}return this.error('Unknown expression \"'+n+'\". If you wanted a literal array, use [\"literal\", [...]].',0)}return void 0===t?this.error(\"'undefined' value invalid. Use null instead.\"):\"object\"==typeof t?this.error('Bare objects invalid. Use [\"literal\", {...}] instead.'):this.error(\"Expected an array, but found \"+typeof t+\" instead.\")},Ue.prototype.concat=function(t,e,r){var n=\"number\"==typeof t?this.path.concat(t):this.path,i=r?this.scope.concat(r):this.scope;return new Ue(this.registry,n,e||null,i,this.errors)},Ue.prototype.error=function(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];var n=\"\"+this.key+e.map((function(t){return\"[\"+t+\"]\"})).join(\"\");this.errors.push(new Dt(n,t))},Ue.prototype.checkSubtype=function(t,e){var r=Jt(t,e);return r&&this.error(r),r};var He=function(t,e,r){this.type=t,this.input=e,this.labels=[],this.outputs=[];for(var n=0,i=r;n=o)return e.error('Input/output pairs for \"step\" expressions must be arranged with input values in strictly ascending order.',l);var u=e.parse(s,c,i);if(!u)return null;i=i||u.type,n.push([o,u])}return new He(i,r,n)},He.prototype.evaluate=function(t){var e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);var n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);var i=e.length;return n>=e[i-1]?r[i-1].evaluate(t):r[Ve(e,n)].evaluate(t)},He.prototype.eachChild=function(t){t(this.input);for(var e=0,r=this.outputs;e0&&t.push(this.labels[e]),t.push(this.outputs[e].serialize());return t};var Ge=Object.freeze({__proto__:null,number:qe,color:function(t,e,r){return new te(qe(t.r,e.r,r),qe(t.g,e.g,r),qe(t.b,e.b,r),qe(t.a,e.a,r))},array:function(t,e,r){return t.map((function(t,n){return qe(t,e[n],r)}))}}),Ye=6/29,We=3*Ye*Ye,Xe=Math.PI/180,Ze=180/Math.PI;function Je(t){return t>.008856451679035631?Math.pow(t,1/3):t/We+4/29}function Ke(t){return t>Ye?t*t*t:We*(t-4/29)}function Qe(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function $e(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function tr(t){var e=$e(t.r),r=$e(t.g),n=$e(t.b),i=Je((.4124564*e+.3575761*r+.1804375*n)/.95047),a=Je((.2126729*e+.7151522*r+.072175*n)/1);return{l:116*a-16,a:500*(i-a),b:200*(a-Je((.0193339*e+.119192*r+.9503041*n)/1.08883)),alpha:t.a}}function er(t){var e=(t.l+16)/116,r=isNaN(t.a)?e:e+t.a/500,n=isNaN(t.b)?e:e-t.b/200;return e=1*Ke(e),r=.95047*Ke(r),n=1.08883*Ke(n),new te(Qe(3.2404542*r-1.5371385*e-.4985314*n),Qe(-.969266*r+1.8760108*e+.041556*n),Qe(.0556434*r-.2040259*e+1.0572252*n),t.alpha)}function rr(t,e,r){var n=e-t;return t+r*(n>180||n<-180?n-360*Math.round(n/360):n)}var nr={forward:tr,reverse:er,interpolate:function(t,e,r){return{l:qe(t.l,e.l,r),a:qe(t.a,e.a,r),b:qe(t.b,e.b,r),alpha:qe(t.alpha,e.alpha,r)}}},ir={forward:function(t){var e=tr(t),r=e.l,n=e.a,i=e.b,a=Math.atan2(i,n)*Ze;return{h:a<0?a+360:a,c:Math.sqrt(n*n+i*i),l:r,alpha:t.a}},reverse:function(t){var e=t.h*Xe,r=t.c;return er({l:t.l,a:Math.cos(e)*r,b:Math.sin(e)*r,alpha:t.alpha})},interpolate:function(t,e,r){return{h:rr(t.h,e.h,r),c:qe(t.c,e.c,r),l:qe(t.l,e.l,r),alpha:qe(t.alpha,e.alpha,r)}}},ar=Object.freeze({__proto__:null,lab:nr,hcl:ir}),or=function(t,e,r,n,i){this.type=t,this.operator=e,this.interpolation=r,this.input=n,this.labels=[],this.outputs=[];for(var a=0,o=i;a1})))return e.error(\"Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.\",1);n={name:\"cubic-bezier\",controlPoints:s}}if(t.length-1<4)return e.error(\"Expected at least 4 arguments, but found only \"+(t.length-1)+\".\");if((t.length-1)%2!=0)return e.error(\"Expected an even number of arguments.\");if(!(i=e.parse(i,2,Bt)))return null;var l=[],c=null;\"interpolate-hcl\"===r||\"interpolate-lab\"===r?c=Ut:e.expectedType&&\"value\"!==e.expectedType.kind&&(c=e.expectedType);for(var u=0;u=f)return e.error('Input/output pairs for \"interpolate\" expressions must be arranged with input values in strictly ascending order.',p);var g=e.parse(h,d,c);if(!g)return null;c=c||g.type,l.push([f,g])}return\"number\"===c.kind||\"color\"===c.kind||\"array\"===c.kind&&\"number\"===c.itemType.kind&&\"number\"==typeof c.N?new or(c,r,n,i,l):e.error(\"Type \"+Xt(c)+\" is not interpolatable.\")},or.prototype.evaluate=function(t){var e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);var n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);var i=e.length;if(n>=e[i-1])return r[i-1].evaluate(t);var a=Ve(e,n),o=e[a],s=e[a+1],l=or.interpolationFactor(this.interpolation,n,o,s),c=r[a].evaluate(t),u=r[a+1].evaluate(t);return\"interpolate\"===this.operator?Ge[this.type.kind.toLowerCase()](c,u,l):\"interpolate-hcl\"===this.operator?ir.reverse(ir.interpolate(ir.forward(c),ir.forward(u),l)):nr.reverse(nr.interpolate(nr.forward(c),nr.forward(u),l))},or.prototype.eachChild=function(t){t(this.input);for(var e=0,r=this.outputs;e=r.length)throw new ue(\"Array index out of bounds: \"+e+\" > \"+(r.length-1)+\".\");if(e!==Math.floor(e))throw new ue(\"Array index must be an integer, but found \"+e+\" instead.\");return r[e]},ur.prototype.eachChild=function(t){t(this.index),t(this.input)},ur.prototype.outputDefined=function(){return!1},ur.prototype.serialize=function(){return[\"at\",this.index.serialize(),this.input.serialize()]};var fr=function(t,e){this.type=jt,this.needle=t,this.haystack=e};fr.parse=function(t,e){if(3!==t.length)return e.error(\"Expected 2 arguments, but found \"+(t.length-1)+\" instead.\");var r=e.parse(t[1],1,Ht),n=e.parse(t[2],2,Ht);return r&&n?Kt(r.type,[jt,Nt,Bt,Ft,Ht])?new fr(r,n):e.error(\"Expected first argument to be of type boolean, string, number or null, but found \"+Xt(r.type)+\" instead\"):null},fr.prototype.evaluate=function(t){var e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!r)return!1;if(!Qt(e,[\"boolean\",\"string\",\"number\",\"null\"]))throw new ue(\"Expected first argument to be of type boolean, string, number or null, but found \"+Xt(se(e))+\" instead.\");if(!Qt(r,[\"string\",\"array\"]))throw new ue(\"Expected second argument to be of type array or string, but found \"+Xt(se(r))+\" instead.\");return r.indexOf(e)>=0},fr.prototype.eachChild=function(t){t(this.needle),t(this.haystack)},fr.prototype.outputDefined=function(){return!0},fr.prototype.serialize=function(){return[\"in\",this.needle.serialize(),this.haystack.serialize()]};var hr=function(t,e,r){this.type=Bt,this.needle=t,this.haystack=e,this.fromIndex=r};hr.parse=function(t,e){if(t.length<=2||t.length>=5)return e.error(\"Expected 3 or 4 arguments, but found \"+(t.length-1)+\" instead.\");var r=e.parse(t[1],1,Ht),n=e.parse(t[2],2,Ht);if(!r||!n)return null;if(!Kt(r.type,[jt,Nt,Bt,Ft,Ht]))return e.error(\"Expected first argument to be of type boolean, string, number or null, but found \"+Xt(r.type)+\" instead\");if(4===t.length){var i=e.parse(t[3],3,Bt);return i?new hr(r,n,i):null}return new hr(r,n)},hr.prototype.evaluate=function(t){var e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!Qt(e,[\"boolean\",\"string\",\"number\",\"null\"]))throw new ue(\"Expected first argument to be of type boolean, string, number or null, but found \"+Xt(se(e))+\" instead.\");if(!Qt(r,[\"string\",\"array\"]))throw new ue(\"Expected second argument to be of type array or string, but found \"+Xt(se(r))+\" instead.\");if(this.fromIndex){var n=this.fromIndex.evaluate(t);return r.indexOf(e,n)}return r.indexOf(e)},hr.prototype.eachChild=function(t){t(this.needle),t(this.haystack),this.fromIndex&&t(this.fromIndex)},hr.prototype.outputDefined=function(){return!1},hr.prototype.serialize=function(){if(null!=this.fromIndex&&void 0!==this.fromIndex){var t=this.fromIndex.serialize();return[\"index-of\",this.needle.serialize(),this.haystack.serialize(),t]}return[\"index-of\",this.needle.serialize(),this.haystack.serialize()]};var pr=function(t,e,r,n,i,a){this.inputType=t,this.type=e,this.input=r,this.cases=n,this.outputs=i,this.otherwise=a};pr.parse=function(t,e){if(t.length<5)return e.error(\"Expected at least 4 arguments, but found only \"+(t.length-1)+\".\");if(t.length%2!=1)return e.error(\"Expected an even number of arguments.\");var r,n;e.expectedType&&\"value\"!==e.expectedType.kind&&(n=e.expectedType);for(var i={},a=[],o=2;oNumber.MAX_SAFE_INTEGER)return c.error(\"Branch labels must be integers no larger than \"+Number.MAX_SAFE_INTEGER+\".\");if(\"number\"==typeof h&&Math.floor(h)!==h)return c.error(\"Numeric branch labels must be integer values.\");if(r){if(c.checkSubtype(r,se(h)))return null}else r=se(h);if(void 0!==i[String(h)])return c.error(\"Branch labels must be unique.\");i[String(h)]=a.length}var p=e.parse(l,o,n);if(!p)return null;n=n||p.type,a.push(p)}var d=e.parse(t[1],1,Ht);if(!d)return null;var g=e.parse(t[t.length-1],t.length-1,n);return g?\"value\"!==d.type.kind&&e.concat(1).checkSubtype(r,d.type)?null:new pr(r,n,d,i,a,g):null},pr.prototype.evaluate=function(t){var e=this.input.evaluate(t);return(se(e)===this.inputType&&this.outputs[this.cases[e]]||this.otherwise).evaluate(t)},pr.prototype.eachChild=function(t){t(this.input),this.outputs.forEach(t),t(this.otherwise)},pr.prototype.outputDefined=function(){return this.outputs.every((function(t){return t.outputDefined()}))&&this.otherwise.outputDefined()},pr.prototype.serialize=function(){for(var t=this,e=[\"match\",this.input.serialize()],r=[],n={},i=0,a=Object.keys(this.cases).sort();i=5)return e.error(\"Expected 3 or 4 arguments, but found \"+(t.length-1)+\" instead.\");var r=e.parse(t[1],1,Ht),n=e.parse(t[2],2,Bt);if(!r||!n)return null;if(!Kt(r.type,[Wt(Ht),Nt,Ht]))return e.error(\"Expected first argument to be of type array or string, but found \"+Xt(r.type)+\" instead\");if(4===t.length){var i=e.parse(t[3],3,Bt);return i?new gr(r.type,r,n,i):null}return new gr(r.type,r,n)},gr.prototype.evaluate=function(t){var e=this.input.evaluate(t),r=this.beginIndex.evaluate(t);if(!Qt(e,[\"string\",\"array\"]))throw new ue(\"Expected first argument to be of type array or string, but found \"+Xt(se(e))+\" instead.\");if(this.endIndex){var n=this.endIndex.evaluate(t);return e.slice(r,n)}return e.slice(r)},gr.prototype.eachChild=function(t){t(this.input),t(this.beginIndex),this.endIndex&&t(this.endIndex)},gr.prototype.outputDefined=function(){return!1},gr.prototype.serialize=function(){if(null!=this.endIndex&&void 0!==this.endIndex){var t=this.endIndex.serialize();return[\"slice\",this.input.serialize(),this.beginIndex.serialize(),t]}return[\"slice\",this.input.serialize(),this.beginIndex.serialize()]};var xr=yr(\"==\",(function(t,e,r){return e===r}),vr),br=yr(\"!=\",(function(t,e,r){return e!==r}),(function(t,e,r,n){return!vr(0,e,r,n)})),_r=yr(\"<\",(function(t,e,r){return e\",(function(t,e,r){return e>r}),(function(t,e,r,n){return n.compare(e,r)>0})),Tr=yr(\"<=\",(function(t,e,r){return e<=r}),(function(t,e,r,n){return n.compare(e,r)<=0})),kr=yr(\">=\",(function(t,e,r){return e>=r}),(function(t,e,r,n){return n.compare(e,r)>=0})),Ar=function(t,e,r,n,i){this.type=Nt,this.number=t,this.locale=e,this.currency=r,this.minFractionDigits=n,this.maxFractionDigits=i};Ar.parse=function(t,e){if(3!==t.length)return e.error(\"Expected two arguments.\");var r=e.parse(t[1],1,Bt);if(!r)return null;var n=t[2];if(\"object\"!=typeof n||Array.isArray(n))return e.error(\"NumberFormat options argument must be an object.\");var i=null;if(n.locale&&!(i=e.parse(n.locale,1,Nt)))return null;var a=null;if(n.currency&&!(a=e.parse(n.currency,1,Nt)))return null;var o=null;if(n[\"min-fraction-digits\"]&&!(o=e.parse(n[\"min-fraction-digits\"],1,Bt)))return null;var s=null;return n[\"max-fraction-digits\"]&&!(s=e.parse(n[\"max-fraction-digits\"],1,Bt))?null:new Ar(r,i,a,o,s)},Ar.prototype.evaluate=function(t){return new Intl.NumberFormat(this.locale?this.locale.evaluate(t):[],{style:this.currency?\"currency\":\"decimal\",currency:this.currency?this.currency.evaluate(t):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(t):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(t):void 0}).format(this.number.evaluate(t))},Ar.prototype.eachChild=function(t){t(this.number),this.locale&&t(this.locale),this.currency&&t(this.currency),this.minFractionDigits&&t(this.minFractionDigits),this.maxFractionDigits&&t(this.maxFractionDigits)},Ar.prototype.outputDefined=function(){return!1},Ar.prototype.serialize=function(){var t={};return this.locale&&(t.locale=this.locale.serialize()),this.currency&&(t.currency=this.currency.serialize()),this.minFractionDigits&&(t[\"min-fraction-digits\"]=this.minFractionDigits.serialize()),this.maxFractionDigits&&(t[\"max-fraction-digits\"]=this.maxFractionDigits.serialize()),[\"number-format\",this.number.serialize(),t]};var Mr=function(t){this.type=Bt,this.input=t};Mr.parse=function(t,e){if(2!==t.length)return e.error(\"Expected 1 argument, but found \"+(t.length-1)+\" instead.\");var r=e.parse(t[1],1);return r?\"array\"!==r.type.kind&&\"string\"!==r.type.kind&&\"value\"!==r.type.kind?e.error(\"Expected argument of type string or array, but found \"+Xt(r.type)+\" instead.\"):new Mr(r):null},Mr.prototype.evaluate=function(t){var e=this.input.evaluate(t);if(\"string\"==typeof e)return e.length;if(Array.isArray(e))return e.length;throw new ue(\"Expected value to be of type string or array, but found \"+Xt(se(e))+\" instead.\")},Mr.prototype.eachChild=function(t){t(this.input)},Mr.prototype.outputDefined=function(){return!1},Mr.prototype.serialize=function(){var t=[\"length\"];return this.eachChild((function(e){t.push(e.serialize())})),t};var Sr={\"==\":xr,\"!=\":br,\">\":wr,\"<\":_r,\">=\":kr,\"<=\":Tr,array:he,at:ur,boolean:he,case:dr,coalesce:lr,collator:be,format:pe,image:de,in:fr,\"index-of\":hr,interpolate:or,\"interpolate-hcl\":or,\"interpolate-lab\":or,length:Mr,let:cr,literal:ce,match:pr,number:he,\"number-format\":Ar,object:he,slice:gr,step:He,string:he,\"to-boolean\":me,\"to-color\":me,\"to-number\":me,\"to-string\":me,var:je,within:Re};function Er(t,e){var r=e[0],n=e[1],i=e[2],a=e[3];r=r.evaluate(t),n=n.evaluate(t),i=i.evaluate(t);var o=a?a.evaluate(t):1,s=ae(r,n,i,o);if(s)throw new ue(s);return new te(r/255*o,n/255*o,i/255*o,o)}function Lr(t,e){return t in e}function Cr(t,e){var r=e[t];return void 0===r?null:r}function Pr(t){return{type:t}}function Ir(t){return{result:\"success\",value:t}}function Or(t){return{result:\"error\",value:t}}function zr(t){return\"data-driven\"===t[\"property-type\"]||\"cross-faded-data-driven\"===t[\"property-type\"]}function Dr(t){return!!t.expression&&t.expression.parameters.indexOf(\"zoom\")>-1}function Rr(t){return!!t.expression&&t.expression.interpolated}function Fr(t){return t instanceof Number?\"number\":t instanceof String?\"string\":t instanceof Boolean?\"boolean\":Array.isArray(t)?\"array\":null===t?\"null\":typeof t}function Br(t){return\"object\"==typeof t&&null!==t&&!Array.isArray(t)}function Nr(t){return t}function jr(t,e,r){return void 0!==t?t:void 0!==e?e:void 0!==r?r:void 0}function Ur(t,e,r,n,i){return jr(typeof r===i?n[r]:void 0,t.default,e.default)}function Vr(t,e,r){if(\"number\"!==Fr(r))return jr(t.default,e.default);var n=t.stops.length;if(1===n)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[n-1][0])return t.stops[n-1][1];var i=Ve(t.stops.map((function(t){return t[0]})),r);return t.stops[i][1]}function Hr(t,e,r){var n=void 0!==t.base?t.base:1;if(\"number\"!==Fr(r))return jr(t.default,e.default);var i=t.stops.length;if(1===i)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[i-1][0])return t.stops[i-1][1];var a=Ve(t.stops.map((function(t){return t[0]})),r),o=function(t,e,r,n){var i=n-r,a=t-r;return 0===i?0:1===e?a/i:(Math.pow(e,a)-1)/(Math.pow(e,i)-1)}(r,n,t.stops[a][0],t.stops[a+1][0]),s=t.stops[a][1],l=t.stops[a+1][1],c=Ge[e.type]||Nr;if(t.colorSpace&&\"rgb\"!==t.colorSpace){var u=ar[t.colorSpace];c=function(t,e){return u.reverse(u.interpolate(u.forward(t),u.forward(e),o))}}return\"function\"==typeof s.evaluate?{evaluate:function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var r=s.evaluate.apply(void 0,t),n=l.evaluate.apply(void 0,t);if(void 0!==r&&void 0!==n)return c(r,n,o)}}:c(s,l,o)}function qr(t,e,r){return\"color\"===e.type?r=te.parse(r):\"formatted\"===e.type?r=ne.fromString(r.toString()):\"resolvedImage\"===e.type?r=ie.fromString(r.toString()):Fr(r)===e.type||\"enum\"===e.type&&e.values[r]||(r=void 0),jr(r,t.default,e.default)}xe.register(Sr,{error:[{kind:\"error\"},[Nt],function(t,e){var r=e[0];throw new ue(r.evaluate(t))}],typeof:[Nt,[Ht],function(t,e){return Xt(se(e[0].evaluate(t)))}],\"to-rgba\":[Wt(Bt,4),[Ut],function(t,e){return e[0].evaluate(t).toArray()}],rgb:[Ut,[Bt,Bt,Bt],Er],rgba:[Ut,[Bt,Bt,Bt,Bt],Er],has:{type:jt,overloads:[[[Nt],function(t,e){return Lr(e[0].evaluate(t),t.properties())}],[[Nt,Vt],function(t,e){var r=e[0],n=e[1];return Lr(r.evaluate(t),n.evaluate(t))}]]},get:{type:Ht,overloads:[[[Nt],function(t,e){return Cr(e[0].evaluate(t),t.properties())}],[[Nt,Vt],function(t,e){var r=e[0],n=e[1];return Cr(r.evaluate(t),n.evaluate(t))}]]},\"feature-state\":[Ht,[Nt],function(t,e){return Cr(e[0].evaluate(t),t.featureState||{})}],properties:[Vt,[],function(t){return t.properties()}],\"geometry-type\":[Nt,[],function(t){return t.geometryType()}],id:[Ht,[],function(t){return t.id()}],zoom:[Bt,[],function(t){return t.globals.zoom}],\"heatmap-density\":[Bt,[],function(t){return t.globals.heatmapDensity||0}],\"line-progress\":[Bt,[],function(t){return t.globals.lineProgress||0}],accumulated:[Ht,[],function(t){return void 0===t.globals.accumulated?null:t.globals.accumulated}],\"+\":[Bt,Pr(Bt),function(t,e){for(var r=0,n=0,i=e;n\":[jt,[Nt,Ht],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i>a}],\"filter-id->\":[jt,[Ht],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n>i}],\"filter-<=\":[jt,[Nt,Ht],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i<=a}],\"filter-id-<=\":[jt,[Ht],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n<=i}],\"filter->=\":[jt,[Nt,Ht],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i>=a}],\"filter-id->=\":[jt,[Ht],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n>=i}],\"filter-has\":[jt,[Ht],function(t,e){return e[0].value in t.properties()}],\"filter-has-id\":[jt,[],function(t){return null!==t.id()&&void 0!==t.id()}],\"filter-type-in\":[jt,[Wt(Nt)],function(t,e){return e[0].value.indexOf(t.geometryType())>=0}],\"filter-id-in\":[jt,[Wt(Ht)],function(t,e){return e[0].value.indexOf(t.id())>=0}],\"filter-in-small\":[jt,[Nt,Wt(Ht)],function(t,e){var r=e[0];return e[1].value.indexOf(t.properties()[r.value])>=0}],\"filter-in-large\":[jt,[Nt,Wt(Ht)],function(t,e){var r=e[0],n=e[1];return function(t,e,r,n){for(;r<=n;){var i=r+n>>1;if(e[i]===t)return!0;e[i]>t?n=i-1:r=i+1}return!1}(t.properties()[r.value],n.value,0,n.value.length-1)}],all:{type:jt,overloads:[[[jt,jt],function(t,e){var r=e[0],n=e[1];return r.evaluate(t)&&n.evaluate(t)}],[Pr(jt),function(t,e){for(var r=0,n=e;r0&&\"string\"==typeof t[0]&&t[0]in Sr}function Wr(t,e){var r=new Ue(Sr,[],e?function(t){var e={color:Ut,string:Nt,number:Bt,enum:Nt,boolean:jt,formatted:Gt,resolvedImage:Yt};if(\"array\"===t.type)return Wt(e[t.value]||Ht,t.length);return e[t.type]}(e):void 0),n=r.parse(t,void 0,void 0,void 0,e&&\"string\"===e.type?{typeAnnotation:\"coerce\"}:void 0);return n?Ir(new Gr(n,e)):Or(r.errors)}Gr.prototype.evaluateWithoutErrorHandling=function(t,e,r,n,i,a){return this._evaluator.globals=t,this._evaluator.feature=e,this._evaluator.featureState=r,this._evaluator.canonical=n,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=a,this.expression.evaluate(this._evaluator)},Gr.prototype.evaluate=function(t,e,r,n,i,a){this._evaluator.globals=t,this._evaluator.feature=e||null,this._evaluator.featureState=r||null,this._evaluator.canonical=n,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=a||null;try{var o=this.expression.evaluate(this._evaluator);if(null==o||\"number\"==typeof o&&o!=o)return this._defaultValue;if(this._enumValues&&!(o in this._enumValues))throw new ue(\"Expected value to be one of \"+Object.keys(this._enumValues).map((function(t){return JSON.stringify(t)})).join(\", \")+\", but found \"+JSON.stringify(o)+\" instead.\");return o}catch(t){return this._warningHistory[t.message]||(this._warningHistory[t.message]=!0,\"undefined\"!=typeof console&&console.warn(t.message)),this._defaultValue}};var Xr=function(t,e){this.kind=t,this._styleExpression=e,this.isStateDependent=\"constant\"!==t&&!Be(e.expression)};Xr.prototype.evaluateWithoutErrorHandling=function(t,e,r,n,i,a){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r,n,i,a)},Xr.prototype.evaluate=function(t,e,r,n,i,a){return this._styleExpression.evaluate(t,e,r,n,i,a)};var Zr=function(t,e,r,n){this.kind=t,this.zoomStops=r,this._styleExpression=e,this.isStateDependent=\"camera\"!==t&&!Be(e.expression),this.interpolationType=n};function Jr(t,e){if(\"error\"===(t=Wr(t,e)).result)return t;var r=t.value.expression,n=Fe(r);if(!n&&!zr(e))return Or([new Dt(\"\",\"data expressions not supported\")]);var i=Ne(r,[\"zoom\"]);if(!i&&!Dr(e))return Or([new Dt(\"\",\"zoom expressions not supported\")]);var a=function t(e){var r=null;if(e instanceof cr)r=t(e.result);else if(e instanceof lr)for(var n=0,i=e.args;nn.maximum?[new Ct(e,r,r+\" is greater than the maximum value \"+n.maximum)]:[]}function en(t){var e,r,n,i=t.valueSpec,a=Ot(t.value.type),o={},s=\"categorical\"!==a&&void 0===t.value.property,l=!s,c=\"array\"===Fr(t.value.stops)&&\"array\"===Fr(t.value.stops[0])&&\"object\"===Fr(t.value.stops[0][0]),u=Qr({key:t.key,value:t.value,valueSpec:t.styleSpec.function,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{stops:function(t){if(\"identity\"===a)return[new Ct(t.key,t.value,'identity function may not have a \"stops\" property')];var e=[],r=t.value;e=e.concat($r({key:t.key,value:r,valueSpec:t.valueSpec,style:t.style,styleSpec:t.styleSpec,arrayElementValidator:f})),\"array\"===Fr(r)&&0===r.length&&e.push(new Ct(t.key,r,\"array must have at least one stop\"));return e},default:function(t){return kn({key:t.key,value:t.value,valueSpec:i,style:t.style,styleSpec:t.styleSpec})}}});return\"identity\"===a&&s&&u.push(new Ct(t.key,t.value,'missing required property \"property\"')),\"identity\"===a||t.value.stops||u.push(new Ct(t.key,t.value,'missing required property \"stops\"')),\"exponential\"===a&&t.valueSpec.expression&&!Rr(t.valueSpec)&&u.push(new Ct(t.key,t.value,\"exponential functions not supported\")),t.styleSpec.$version>=8&&(l&&!zr(t.valueSpec)?u.push(new Ct(t.key,t.value,\"property functions not supported\")):s&&!Dr(t.valueSpec)&&u.push(new Ct(t.key,t.value,\"zoom functions not supported\"))),\"categorical\"!==a&&!c||void 0!==t.value.property||u.push(new Ct(t.key,t.value,'\"property\" property is required')),u;function f(t){var e=[],a=t.value,s=t.key;if(\"array\"!==Fr(a))return[new Ct(s,a,\"array expected, \"+Fr(a)+\" found\")];if(2!==a.length)return[new Ct(s,a,\"array length 2 expected, length \"+a.length+\" found\")];if(c){if(\"object\"!==Fr(a[0]))return[new Ct(s,a,\"object expected, \"+Fr(a[0])+\" found\")];if(void 0===a[0].zoom)return[new Ct(s,a,\"object stop key must have zoom\")];if(void 0===a[0].value)return[new Ct(s,a,\"object stop key must have value\")];if(n&&n>Ot(a[0].zoom))return[new Ct(s,a[0].zoom,\"stop zoom values must appear in ascending order\")];Ot(a[0].zoom)!==n&&(n=Ot(a[0].zoom),r=void 0,o={}),e=e.concat(Qr({key:s+\"[0]\",value:a[0],valueSpec:{zoom:{}},style:t.style,styleSpec:t.styleSpec,objectElementValidators:{zoom:tn,value:h}}))}else e=e.concat(h({key:s+\"[0]\",value:a[0],valueSpec:{},style:t.style,styleSpec:t.styleSpec},a));return Yr(zt(a[1]))?e.concat([new Ct(s+\"[1]\",a[1],\"expressions are not allowed in function stops.\")]):e.concat(kn({key:s+\"[1]\",value:a[1],valueSpec:i,style:t.style,styleSpec:t.styleSpec}))}function h(t,n){var s=Fr(t.value),l=Ot(t.value),c=null!==t.value?t.value:n;if(e){if(s!==e)return[new Ct(t.key,c,s+\" stop domain type must match previous stop domain type \"+e)]}else e=s;if(\"number\"!==s&&\"string\"!==s&&\"boolean\"!==s)return[new Ct(t.key,c,\"stop domain value must be a number, string, or boolean\")];if(\"number\"!==s&&\"categorical\"!==a){var u=\"number expected, \"+s+\" found\";return zr(i)&&void 0===a&&(u+='\\nIf you intended to use a categorical function, specify `\"type\": \"categorical\"`.'),[new Ct(t.key,c,u)]}return\"categorical\"!==a||\"number\"!==s||isFinite(l)&&Math.floor(l)===l?\"categorical\"!==a&&\"number\"===s&&void 0!==r&&l=2&&\"$id\"!==t[1]&&\"$type\"!==t[1];case\"in\":return t.length>=3&&(\"string\"!=typeof t[1]||Array.isArray(t[2]));case\"!in\":case\"!has\":case\"none\":return!1;case\"==\":case\"!=\":case\">\":case\">=\":case\"<\":case\"<=\":return 3!==t.length||Array.isArray(t[1])||Array.isArray(t[2]);case\"any\":case\"all\":for(var e=0,r=t.slice(1);ee?1:0}function cn(t){if(!t)return!0;var e,r=t[0];return t.length<=1?\"any\"!==r:\"==\"===r?un(t[1],t[2],\"==\"):\"!=\"===r?pn(un(t[1],t[2],\"==\")):\"<\"===r||\">\"===r||\"<=\"===r||\">=\"===r?un(t[1],t[2],r):\"any\"===r?(e=t.slice(1),[\"any\"].concat(e.map(cn))):\"all\"===r?[\"all\"].concat(t.slice(1).map(cn)):\"none\"===r?[\"all\"].concat(t.slice(1).map(cn).map(pn)):\"in\"===r?fn(t[1],t.slice(2)):\"!in\"===r?pn(fn(t[1],t.slice(2))):\"has\"===r?hn(t[1]):\"!has\"===r?pn(hn(t[1])):\"within\"!==r||t}function un(t,e,r){switch(t){case\"$type\":return[\"filter-type-\"+r,e];case\"$id\":return[\"filter-id-\"+r,e];default:return[\"filter-\"+r,t,e]}}function fn(t,e){if(0===e.length)return!1;switch(t){case\"$type\":return[\"filter-type-in\",[\"literal\",e]];case\"$id\":return[\"filter-id-in\",[\"literal\",e]];default:return e.length>200&&!e.some((function(t){return typeof t!=typeof e[0]}))?[\"filter-in-large\",t,[\"literal\",e.sort(ln)]]:[\"filter-in-small\",t,[\"literal\",e]]}}function hn(t){switch(t){case\"$type\":return!0;case\"$id\":return[\"filter-has-id\"];default:return[\"filter-has\",t]}}function pn(t){return[\"!\",t]}function dn(t){return an(zt(t.value))?rn(It({},t,{expressionContext:\"filter\",valueSpec:{value:\"boolean\"}})):function t(e){var r=e.value,n=e.key;if(\"array\"!==Fr(r))return[new Ct(n,r,\"array expected, \"+Fr(r)+\" found\")];var i,a=e.styleSpec,o=[];if(r.length<1)return[new Ct(n,r,\"filter array must have at least 1 element\")];switch(o=o.concat(nn({key:n+\"[0]\",value:r[0],valueSpec:a.filter_operator,style:e.style,styleSpec:e.styleSpec})),Ot(r[0])){case\"<\":case\"<=\":case\">\":case\">=\":r.length>=2&&\"$type\"===Ot(r[1])&&o.push(new Ct(n,r,'\"$type\" cannot be use with operator \"'+r[0]+'\"'));case\"==\":case\"!=\":3!==r.length&&o.push(new Ct(n,r,'filter array for operator \"'+r[0]+'\" must have 3 elements'));case\"in\":case\"!in\":r.length>=2&&\"string\"!==(i=Fr(r[1]))&&o.push(new Ct(n+\"[1]\",r[1],\"string expected, \"+i+\" found\"));for(var s=2;s=u[p+0]&&n>=u[p+1])?(o[h]=!0,a.push(c[h])):o[h]=!1}}},Dn.prototype._forEachCell=function(t,e,r,n,i,a,o,s){for(var l=this._convertToCellCoord(t),c=this._convertToCellCoord(e),u=this._convertToCellCoord(r),f=this._convertToCellCoord(n),h=l;h<=u;h++)for(var p=c;p<=f;p++){var d=this.d*p+h;if((!s||s(this._convertFromCellCoord(h),this._convertFromCellCoord(p),this._convertFromCellCoord(h+1),this._convertFromCellCoord(p+1)))&&i.call(this,t,e,r,n,d,a,o,s))return}},Dn.prototype._convertFromCellCoord=function(t){return(t-this.padding)/this.scale},Dn.prototype._convertToCellCoord=function(t){return Math.max(0,Math.min(this.d-1,Math.floor(t*this.scale)+this.padding))},Dn.prototype.toArrayBuffer=function(){if(this.arrayBuffer)return this.arrayBuffer;for(var t=this.cells,e=3+this.cells.length+1+1,r=0,n=0;n=0)){var f=t[u];c[u]=Bn[l].shallow.indexOf(u)>=0?f:Hn(f,e)}t instanceof Error&&(c.message=t.message)}if(c.$name)throw new Error(\"$name property is reserved for worker serialization logic.\");return\"Object\"!==l&&(c.$name=l),c}throw new Error(\"can't serialize object of type \"+typeof t)}function qn(t){if(null==t||\"boolean\"==typeof t||\"number\"==typeof t||\"string\"==typeof t||t instanceof Boolean||t instanceof Number||t instanceof String||t instanceof Date||t instanceof RegExp||Un(t)||Vn(t)||ArrayBuffer.isView(t)||t instanceof Rn)return t;if(Array.isArray(t))return t.map(qn);if(\"object\"==typeof t){var e=t.$name||\"Object\",r=Bn[e].klass;if(!r)throw new Error(\"can't deserialize unregistered class \"+e);if(r.deserialize)return r.deserialize(t);for(var n=Object.create(r.prototype),i=0,a=Object.keys(t);i=0?s:qn(s)}}return n}throw new Error(\"can't deserialize object of type \"+typeof t)}var Gn=function(){this.first=!0};Gn.prototype.update=function(t,e){var r=Math.floor(t);return this.first?(this.first=!1,this.lastIntegerZoom=r,this.lastIntegerZoomTime=0,this.lastZoom=t,this.lastFloorZoom=r,!0):(this.lastFloorZoom>r?(this.lastIntegerZoom=r+1,this.lastIntegerZoomTime=e):this.lastFloorZoom=128&&t<=255},Arabic:function(t){return t>=1536&&t<=1791},\"Arabic Supplement\":function(t){return t>=1872&&t<=1919},\"Arabic Extended-A\":function(t){return t>=2208&&t<=2303},\"Hangul Jamo\":function(t){return t>=4352&&t<=4607},\"Unified Canadian Aboriginal Syllabics\":function(t){return t>=5120&&t<=5759},Khmer:function(t){return t>=6016&&t<=6143},\"Unified Canadian Aboriginal Syllabics Extended\":function(t){return t>=6320&&t<=6399},\"General Punctuation\":function(t){return t>=8192&&t<=8303},\"Letterlike Symbols\":function(t){return t>=8448&&t<=8527},\"Number Forms\":function(t){return t>=8528&&t<=8591},\"Miscellaneous Technical\":function(t){return t>=8960&&t<=9215},\"Control Pictures\":function(t){return t>=9216&&t<=9279},\"Optical Character Recognition\":function(t){return t>=9280&&t<=9311},\"Enclosed Alphanumerics\":function(t){return t>=9312&&t<=9471},\"Geometric Shapes\":function(t){return t>=9632&&t<=9727},\"Miscellaneous Symbols\":function(t){return t>=9728&&t<=9983},\"Miscellaneous Symbols and Arrows\":function(t){return t>=11008&&t<=11263},\"CJK Radicals Supplement\":function(t){return t>=11904&&t<=12031},\"Kangxi Radicals\":function(t){return t>=12032&&t<=12255},\"Ideographic Description Characters\":function(t){return t>=12272&&t<=12287},\"CJK Symbols and Punctuation\":function(t){return t>=12288&&t<=12351},Hiragana:function(t){return t>=12352&&t<=12447},Katakana:function(t){return t>=12448&&t<=12543},Bopomofo:function(t){return t>=12544&&t<=12591},\"Hangul Compatibility Jamo\":function(t){return t>=12592&&t<=12687},Kanbun:function(t){return t>=12688&&t<=12703},\"Bopomofo Extended\":function(t){return t>=12704&&t<=12735},\"CJK Strokes\":function(t){return t>=12736&&t<=12783},\"Katakana Phonetic Extensions\":function(t){return t>=12784&&t<=12799},\"Enclosed CJK Letters and Months\":function(t){return t>=12800&&t<=13055},\"CJK Compatibility\":function(t){return t>=13056&&t<=13311},\"CJK Unified Ideographs Extension A\":function(t){return t>=13312&&t<=19903},\"Yijing Hexagram Symbols\":function(t){return t>=19904&&t<=19967},\"CJK Unified Ideographs\":function(t){return t>=19968&&t<=40959},\"Yi Syllables\":function(t){return t>=40960&&t<=42127},\"Yi Radicals\":function(t){return t>=42128&&t<=42191},\"Hangul Jamo Extended-A\":function(t){return t>=43360&&t<=43391},\"Hangul Syllables\":function(t){return t>=44032&&t<=55215},\"Hangul Jamo Extended-B\":function(t){return t>=55216&&t<=55295},\"Private Use Area\":function(t){return t>=57344&&t<=63743},\"CJK Compatibility Ideographs\":function(t){return t>=63744&&t<=64255},\"Arabic Presentation Forms-A\":function(t){return t>=64336&&t<=65023},\"Vertical Forms\":function(t){return t>=65040&&t<=65055},\"CJK Compatibility Forms\":function(t){return t>=65072&&t<=65103},\"Small Form Variants\":function(t){return t>=65104&&t<=65135},\"Arabic Presentation Forms-B\":function(t){return t>=65136&&t<=65279},\"Halfwidth and Fullwidth Forms\":function(t){return t>=65280&&t<=65519}};function Wn(t){for(var e=0,r=t;e=65097&&t<=65103)||(!!Yn[\"CJK Compatibility Ideographs\"](t)||(!!Yn[\"CJK Compatibility\"](t)||(!!Yn[\"CJK Radicals Supplement\"](t)||(!!Yn[\"CJK Strokes\"](t)||(!(!Yn[\"CJK Symbols and Punctuation\"](t)||t>=12296&&t<=12305||t>=12308&&t<=12319||12336===t)||(!!Yn[\"CJK Unified Ideographs Extension A\"](t)||(!!Yn[\"CJK Unified Ideographs\"](t)||(!!Yn[\"Enclosed CJK Letters and Months\"](t)||(!!Yn[\"Hangul Compatibility Jamo\"](t)||(!!Yn[\"Hangul Jamo Extended-A\"](t)||(!!Yn[\"Hangul Jamo Extended-B\"](t)||(!!Yn[\"Hangul Jamo\"](t)||(!!Yn[\"Hangul Syllables\"](t)||(!!Yn.Hiragana(t)||(!!Yn[\"Ideographic Description Characters\"](t)||(!!Yn.Kanbun(t)||(!!Yn[\"Kangxi Radicals\"](t)||(!!Yn[\"Katakana Phonetic Extensions\"](t)||(!(!Yn.Katakana(t)||12540===t)||(!(!Yn[\"Halfwidth and Fullwidth Forms\"](t)||65288===t||65289===t||65293===t||t>=65306&&t<=65310||65339===t||65341===t||65343===t||t>=65371&&t<=65503||65507===t||t>=65512&&t<=65519)||(!(!Yn[\"Small Form Variants\"](t)||t>=65112&&t<=65118||t>=65123&&t<=65126)||(!!Yn[\"Unified Canadian Aboriginal Syllabics\"](t)||(!!Yn[\"Unified Canadian Aboriginal Syllabics Extended\"](t)||(!!Yn[\"Vertical Forms\"](t)||(!!Yn[\"Yijing Hexagram Symbols\"](t)||(!!Yn[\"Yi Syllables\"](t)||!!Yn[\"Yi Radicals\"](t))))))))))))))))))))))))))))))}function Jn(t){return!(Zn(t)||function(t){return!(!Yn[\"Latin-1 Supplement\"](t)||167!==t&&169!==t&&174!==t&&177!==t&&188!==t&&189!==t&&190!==t&&215!==t&&247!==t)||(!(!Yn[\"General Punctuation\"](t)||8214!==t&&8224!==t&&8225!==t&&8240!==t&&8241!==t&&8251!==t&&8252!==t&&8258!==t&&8263!==t&&8264!==t&&8265!==t&&8273!==t)||(!!Yn[\"Letterlike Symbols\"](t)||(!!Yn[\"Number Forms\"](t)||(!(!Yn[\"Miscellaneous Technical\"](t)||!(t>=8960&&t<=8967||t>=8972&&t<=8991||t>=8996&&t<=9e3||9003===t||t>=9085&&t<=9114||t>=9150&&t<=9165||9167===t||t>=9169&&t<=9179||t>=9186&&t<=9215))||(!(!Yn[\"Control Pictures\"](t)||9251===t)||(!!Yn[\"Optical Character Recognition\"](t)||(!!Yn[\"Enclosed Alphanumerics\"](t)||(!!Yn[\"Geometric Shapes\"](t)||(!(!Yn[\"Miscellaneous Symbols\"](t)||t>=9754&&t<=9759)||(!(!Yn[\"Miscellaneous Symbols and Arrows\"](t)||!(t>=11026&&t<=11055||t>=11088&&t<=11097||t>=11192&&t<=11243))||(!!Yn[\"CJK Symbols and Punctuation\"](t)||(!!Yn.Katakana(t)||(!!Yn[\"Private Use Area\"](t)||(!!Yn[\"CJK Compatibility Forms\"](t)||(!!Yn[\"Small Form Variants\"](t)||(!!Yn[\"Halfwidth and Fullwidth Forms\"](t)||(8734===t||8756===t||8757===t||t>=9984&&t<=10087||t>=10102&&t<=10131||65532===t||65533===t)))))))))))))))))}(t))}function Kn(t){return t>=1424&&t<=2303||Yn[\"Arabic Presentation Forms-A\"](t)||Yn[\"Arabic Presentation Forms-B\"](t)}function Qn(t,e){return!(!e&&Kn(t))&&!(t>=2304&&t<=3583||t>=3840&&t<=4255||Yn.Khmer(t))}function $n(t){for(var e=0,r=t;e-1&&(ai=ni),ii&&ii(t)};function li(){ci.fire(new Mt(\"pluginStateChange\",{pluginStatus:ai,pluginURL:oi}))}var ci=new Et,ui=function(){return ai},fi=function(){if(ai!==ti||!oi)throw new Error(\"rtl-text-plugin cannot be downloaded unless a pluginURL is specified\");ai=ei,li(),oi&&xt({url:oi},(function(t){t?si(t):(ai=ri,li())}))},hi={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isLoaded:function(){return ai===ri||null!=hi.applyArabicShaping},isLoading:function(){return ai===ei},setState:function(t){ai=t.pluginStatus,oi=t.pluginURL},isParsed:function(){return null!=hi.applyArabicShaping&&null!=hi.processBidirectionalText&&null!=hi.processStyledBidirectionalText},getPluginURL:function(){return oi}},pi=function(t,e){this.zoom=t,e?(this.now=e.now,this.fadeDuration=e.fadeDuration,this.zoomHistory=e.zoomHistory,this.transition=e.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new Gn,this.transition={})};pi.prototype.isSupportedScript=function(t){return function(t,e){for(var r=0,n=t;rthis.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:e+(1-e)*r}:{fromScale:.5,toScale:1,t:1-(1-r)*e}};var di=function(t,e){this.property=t,this.value=e,this.expression=function(t,e){if(Br(t))return new Kr(t,e);if(Yr(t)){var r=Jr(t,e);if(\"error\"===r.result)throw new Error(r.value.map((function(t){return t.key+\": \"+t.message})).join(\", \"));return r.value}var n=t;return\"string\"==typeof t&&\"color\"===e.type&&(n=te.parse(t)),{kind:\"constant\",evaluate:function(){return n}}}(void 0===e?t.specification.default:e,t.specification)};di.prototype.isDataDriven=function(){return\"source\"===this.expression.kind||\"composite\"===this.expression.kind},di.prototype.possiblyEvaluate=function(t,e,r){return this.property.possiblyEvaluate(this,t,e,r)};var gi=function(t){this.property=t,this.value=new di(t,void 0)};gi.prototype.transitioned=function(t,e){return new vi(this.property,this.value,e,u({},t.transition,this.transition),t.now)},gi.prototype.untransitioned=function(){return new vi(this.property,this.value,null,{},0)};var mi=function(t){this._properties=t,this._values=Object.create(t.defaultTransitionablePropertyValues)};mi.prototype.getValue=function(t){return x(this._values[t].value.value)},mi.prototype.setValue=function(t,e){this._values.hasOwnProperty(t)||(this._values[t]=new gi(this._values[t].property)),this._values[t].value=new di(this._values[t].property,null===e?void 0:x(e))},mi.prototype.getTransition=function(t){return x(this._values[t].transition)},mi.prototype.setTransition=function(t,e){this._values.hasOwnProperty(t)||(this._values[t]=new gi(this._values[t].property)),this._values[t].transition=x(e)||void 0},mi.prototype.serialize=function(){for(var t={},e=0,r=Object.keys(this._values);ethis.end)return this.prior=null,i;if(this.value.isDataDriven())return this.prior=null,i;if(n=1)return 1;var e=t*t,r=e*t;return 4*(t<.5?r:3*(t-e)+r-.75)}(o))}return i};var yi=function(t){this._properties=t,this._values=Object.create(t.defaultTransitioningPropertyValues)};yi.prototype.possiblyEvaluate=function(t,e,r){for(var n=new _i(this._properties),i=0,a=Object.keys(this._values);in.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}},e.prototype.interpolate=function(t){return t},e}(Ti),Ai=function(t){this.specification=t};Ai.prototype.possiblyEvaluate=function(t,e,r,n){if(void 0!==t.value){if(\"constant\"===t.expression.kind){var i=t.expression.evaluate(e,null,{},r,n);return this._calculate(i,i,i,e)}return this._calculate(t.expression.evaluate(new pi(Math.floor(e.zoom-1),e)),t.expression.evaluate(new pi(Math.floor(e.zoom),e)),t.expression.evaluate(new pi(Math.floor(e.zoom+1),e)),e)}},Ai.prototype._calculate=function(t,e,r,n){return n.zoom>n.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}},Ai.prototype.interpolate=function(t){return t};var Mi=function(t){this.specification=t};Mi.prototype.possiblyEvaluate=function(t,e,r,n){return!!t.expression.evaluate(e,null,{},r,n)},Mi.prototype.interpolate=function(){return!1};var Si=function(t){for(var e in this.properties=t,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[],t){var r=t[e];r.specification.overridable&&this.overridableProperties.push(e);var n=this.defaultPropertyValues[e]=new di(r,void 0),i=this.defaultTransitionablePropertyValues[e]=new gi(r);this.defaultTransitioningPropertyValues[e]=i.untransitioned(),this.defaultPossiblyEvaluatedValues[e]=n.possiblyEvaluate({})}};Nn(\"DataDrivenProperty\",Ti),Nn(\"DataConstantProperty\",wi),Nn(\"CrossFadedDataDrivenProperty\",ki),Nn(\"CrossFadedProperty\",Ai),Nn(\"ColorRampProperty\",Mi);var Ei=function(t){function e(e,r){if(t.call(this),this.id=e.id,this.type=e.type,this._featureFilter={filter:function(){return!0},needGeometry:!1},\"custom\"!==e.type&&(e=e,this.metadata=e.metadata,this.minzoom=e.minzoom,this.maxzoom=e.maxzoom,\"background\"!==e.type&&(this.source=e.source,this.sourceLayer=e[\"source-layer\"],this.filter=e.filter),r.layout&&(this._unevaluatedLayout=new xi(r.layout)),r.paint)){for(var n in this._transitionablePaint=new mi(r.paint),e.paint)this.setPaintProperty(n,e.paint[n],{validate:!1});for(var i in e.layout)this.setLayoutProperty(i,e.layout[i],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new _i(r.paint)}}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getCrossfadeParameters=function(){return this._crossfadeParameters},e.prototype.getLayoutProperty=function(t){return\"visibility\"===t?this.visibility:this._unevaluatedLayout.getValue(t)},e.prototype.setLayoutProperty=function(t,e,r){if(void 0===r&&(r={}),null!=e){var n=\"layers.\"+this.id+\".layout.\"+t;if(this._validate(In,n,t,e,r))return}\"visibility\"!==t?this._unevaluatedLayout.setValue(t,e):this.visibility=e},e.prototype.getPaintProperty=function(t){return m(t,\"-transition\")?this._transitionablePaint.getTransition(t.slice(0,-\"-transition\".length)):this._transitionablePaint.getValue(t)},e.prototype.setPaintProperty=function(t,e,r){if(void 0===r&&(r={}),null!=e){var n=\"layers.\"+this.id+\".paint.\"+t;if(this._validate(Pn,n,t,e,r))return!1}if(m(t,\"-transition\"))return this._transitionablePaint.setTransition(t.slice(0,-\"-transition\".length),e||void 0),!1;var i=this._transitionablePaint._values[t],a=\"cross-faded-data-driven\"===i.property.specification[\"property-type\"],o=i.value.isDataDriven(),s=i.value;this._transitionablePaint.setValue(t,e),this._handleSpecialPaintPropertyUpdate(t);var l=this._transitionablePaint._values[t].value;return l.isDataDriven()||o||a||this._handleOverridablePaintPropertyUpdate(t,s,l)},e.prototype._handleSpecialPaintPropertyUpdate=function(t){},e.prototype._handleOverridablePaintPropertyUpdate=function(t,e,r){return!1},e.prototype.isHidden=function(t){return!!(this.minzoom&&t=this.maxzoom)||\"none\"===this.visibility)},e.prototype.updateTransitions=function(t){this._transitioningPaint=this._transitionablePaint.transitioned(t,this._transitioningPaint)},e.prototype.hasTransition=function(){return this._transitioningPaint.hasTransition()},e.prototype.recalculate=function(t,e){t.getCrossfadeParameters&&(this._crossfadeParameters=t.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(t,void 0,e)),this.paint=this._transitioningPaint.possiblyEvaluate(t,void 0,e)},e.prototype.serialize=function(){var t={id:this.id,type:this.type,source:this.source,\"source-layer\":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(t.layout=t.layout||{},t.layout.visibility=this.visibility),y(t,(function(t,e){return!(void 0===t||\"layout\"===e&&!Object.keys(t).length||\"paint\"===e&&!Object.keys(t).length)}))},e.prototype._validate=function(t,e,r,n,i){return void 0===i&&(i={}),(!i||!1!==i.validate)&&On(this,t.call(Ln,{key:e,layerType:this.type,objectKey:r,value:n,styleSpec:Lt,style:{glyphs:!0,sprite:!0}}))},e.prototype.is3D=function(){return!1},e.prototype.isTileClipped=function(){return!1},e.prototype.hasOffscreenPass=function(){return!1},e.prototype.resize=function(){},e.prototype.isStateDependent=function(){for(var t in this.paint._values){var e=this.paint.get(t);if(e instanceof bi&&zr(e.property.specification)&&((\"source\"===e.value.kind||\"composite\"===e.value.kind)&&e.value.isStateDependent))return!0}return!1},e}(Et),Li={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array},Ci=function(t,e){this._structArray=t,this._pos1=e*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8},Pi=function(){this.isTransferred=!1,this.capacity=-1,this.resize(0)};function Ii(t,e){void 0===e&&(e=1);var r=0,n=0;return{members:t.map((function(t){var i,a=(i=t.type,Li[i].BYTES_PER_ELEMENT),o=r=Oi(r,Math.max(e,a)),s=t.components||1;return n=Math.max(n,a),r+=a*s,{name:t.name,type:t.type,components:s,offset:o}})),size:Oi(r,Math.max(n,e)),alignment:e}}function Oi(t,e){return Math.ceil(t/e)*e}Pi.serialize=function(t,e){return t._trim(),e&&(t.isTransferred=!0,e.push(t.arrayBuffer)),{length:t.length,arrayBuffer:t.arrayBuffer}},Pi.deserialize=function(t){var e=Object.create(this.prototype);return e.arrayBuffer=t.arrayBuffer,e.length=t.length,e.capacity=t.arrayBuffer.byteLength/e.bytesPerElement,e._refreshViews(),e},Pi.prototype._trim=function(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())},Pi.prototype.clear=function(){this.length=0},Pi.prototype.resize=function(t){this.reserve(t),this.length=t},Pi.prototype.reserve=function(t){if(t>this.capacity){this.capacity=Math.max(t,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);var e=this.uint8;this._refreshViews(),e&&this.uint8.set(e)}},Pi.prototype._refreshViews=function(){throw new Error(\"_refreshViews() must be implemented by each concrete StructArray layout\")};var zi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var n=2*t;return this.int16[n+0]=e,this.int16[n+1]=r,t},e}(Pi);zi.prototype.bytesPerElement=4,Nn(\"StructArrayLayout2i4\",zi);var Di=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)},e.prototype.emplace=function(t,e,r,n,i){var a=4*t;return this.int16[a+0]=e,this.int16[a+1]=r,this.int16[a+2]=n,this.int16[a+3]=i,t},e}(Pi);Di.prototype.bytesPerElement=8,Nn(\"StructArrayLayout4i8\",Di);var Ri=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a){var o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,a)},e.prototype.emplace=function(t,e,r,n,i,a,o){var s=6*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.int16[s+2]=n,this.int16[s+3]=i,this.int16[s+4]=a,this.int16[s+5]=o,t},e}(Pi);Ri.prototype.bytesPerElement=12,Nn(\"StructArrayLayout2i4i12\",Ri);var Fi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a){var o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,a)},e.prototype.emplace=function(t,e,r,n,i,a,o){var s=4*t,l=8*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.uint8[l+4]=n,this.uint8[l+5]=i,this.uint8[l+6]=a,this.uint8[l+7]=o,t},e}(Pi);Fi.prototype.bytesPerElement=8,Nn(\"StructArrayLayout2i4ub8\",Fi);var Bi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l,c){var u=this.length;return this.resize(u+1),this.emplace(u,t,e,r,n,i,a,o,s,l,c)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,c,u){var f=9*t,h=18*t;return this.uint16[f+0]=e,this.uint16[f+1]=r,this.uint16[f+2]=n,this.uint16[f+3]=i,this.uint16[f+4]=a,this.uint16[f+5]=o,this.uint16[f+6]=s,this.uint16[f+7]=l,this.uint8[h+16]=c,this.uint8[h+17]=u,t},e}(Pi);Bi.prototype.bytesPerElement=18,Nn(\"StructArrayLayout8ui2ub18\",Bi);var Ni=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l,c,u,f){var h=this.length;return this.resize(h+1),this.emplace(h,t,e,r,n,i,a,o,s,l,c,u,f)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,c,u,f,h){var p=12*t;return this.int16[p+0]=e,this.int16[p+1]=r,this.int16[p+2]=n,this.int16[p+3]=i,this.uint16[p+4]=a,this.uint16[p+5]=o,this.uint16[p+6]=s,this.uint16[p+7]=l,this.int16[p+8]=c,this.int16[p+9]=u,this.int16[p+10]=f,this.int16[p+11]=h,t},e}(Pi);Ni.prototype.bytesPerElement=24,Nn(\"StructArrayLayout4i4ui4i24\",Ni);var ji=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=3*t;return this.float32[i+0]=e,this.float32[i+1]=r,this.float32[i+2]=n,t},e}(Pi);ji.prototype.bytesPerElement=12,Nn(\"StructArrayLayout3f12\",ji);var Ui=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){var r=1*t;return this.uint32[r+0]=e,t},e}(Pi);Ui.prototype.bytesPerElement=4,Nn(\"StructArrayLayout1ul4\",Ui);var Vi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l){var c=this.length;return this.resize(c+1),this.emplace(c,t,e,r,n,i,a,o,s,l)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,c){var u=10*t,f=5*t;return this.int16[u+0]=e,this.int16[u+1]=r,this.int16[u+2]=n,this.int16[u+3]=i,this.int16[u+4]=a,this.int16[u+5]=o,this.uint32[f+3]=s,this.uint16[u+8]=l,this.uint16[u+9]=c,t},e}(Pi);Vi.prototype.bytesPerElement=20,Nn(\"StructArrayLayout6i1ul2ui20\",Vi);var Hi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a){var o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,a)},e.prototype.emplace=function(t,e,r,n,i,a,o){var s=6*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.int16[s+2]=n,this.int16[s+3]=i,this.int16[s+4]=a,this.int16[s+5]=o,t},e}(Pi);Hi.prototype.bytesPerElement=12,Nn(\"StructArrayLayout2i2i2i12\",Hi);var qi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i){var a=this.length;return this.resize(a+1),this.emplace(a,t,e,r,n,i)},e.prototype.emplace=function(t,e,r,n,i,a){var o=4*t,s=8*t;return this.float32[o+0]=e,this.float32[o+1]=r,this.float32[o+2]=n,this.int16[s+6]=i,this.int16[s+7]=a,t},e}(Pi);qi.prototype.bytesPerElement=16,Nn(\"StructArrayLayout2f1f2i16\",qi);var Gi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)},e.prototype.emplace=function(t,e,r,n,i){var a=12*t,o=3*t;return this.uint8[a+0]=e,this.uint8[a+1]=r,this.float32[o+1]=n,this.float32[o+2]=i,t},e}(Pi);Gi.prototype.bytesPerElement=12,Nn(\"StructArrayLayout2ub2f12\",Gi);var Yi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=3*t;return this.uint16[i+0]=e,this.uint16[i+1]=r,this.uint16[i+2]=n,t},e}(Pi);Yi.prototype.bytesPerElement=6,Nn(\"StructArrayLayout3ui6\",Yi);var Wi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m){var v=this.length;return this.resize(v+1),this.emplace(v,t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m,v){var y=24*t,x=12*t,b=48*t;return this.int16[y+0]=e,this.int16[y+1]=r,this.uint16[y+2]=n,this.uint16[y+3]=i,this.uint32[x+2]=a,this.uint32[x+3]=o,this.uint32[x+4]=s,this.uint16[y+10]=l,this.uint16[y+11]=c,this.uint16[y+12]=u,this.float32[x+7]=f,this.float32[x+8]=h,this.uint8[b+36]=p,this.uint8[b+37]=d,this.uint8[b+38]=g,this.uint32[x+10]=m,this.int16[y+22]=v,t},e}(Pi);Wi.prototype.bytesPerElement=48,Nn(\"StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48\",Wi);var Xi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m,v,y,x,b,_,w,T,k,A,M,S){var E=this.length;return this.resize(E+1),this.emplace(E,t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m,v,y,x,b,_,w,T,k,A,M,S)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m,v,y,x,b,_,w,T,k,A,M,S,E){var L=34*t,C=17*t;return this.int16[L+0]=e,this.int16[L+1]=r,this.int16[L+2]=n,this.int16[L+3]=i,this.int16[L+4]=a,this.int16[L+5]=o,this.int16[L+6]=s,this.int16[L+7]=l,this.uint16[L+8]=c,this.uint16[L+9]=u,this.uint16[L+10]=f,this.uint16[L+11]=h,this.uint16[L+12]=p,this.uint16[L+13]=d,this.uint16[L+14]=g,this.uint16[L+15]=m,this.uint16[L+16]=v,this.uint16[L+17]=y,this.uint16[L+18]=x,this.uint16[L+19]=b,this.uint16[L+20]=_,this.uint16[L+21]=w,this.uint16[L+22]=T,this.uint32[C+12]=k,this.float32[C+13]=A,this.float32[C+14]=M,this.float32[C+15]=S,this.float32[C+16]=E,t},e}(Pi);Xi.prototype.bytesPerElement=68,Nn(\"StructArrayLayout8i15ui1ul4f68\",Xi);var Zi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){var r=1*t;return this.float32[r+0]=e,t},e}(Pi);Zi.prototype.bytesPerElement=4,Nn(\"StructArrayLayout1f4\",Zi);var Ji=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=3*t;return this.int16[i+0]=e,this.int16[i+1]=r,this.int16[i+2]=n,t},e}(Pi);Ji.prototype.bytesPerElement=6,Nn(\"StructArrayLayout3i6\",Ji);var Ki=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=2*t,a=4*t;return this.uint32[i+0]=e,this.uint16[a+2]=r,this.uint16[a+3]=n,t},e}(Pi);Ki.prototype.bytesPerElement=8,Nn(\"StructArrayLayout1ul2ui8\",Ki);var Qi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var n=2*t;return this.uint16[n+0]=e,this.uint16[n+1]=r,t},e}(Pi);Qi.prototype.bytesPerElement=4,Nn(\"StructArrayLayout2ui4\",Qi);var $i=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){var r=1*t;return this.uint16[r+0]=e,t},e}(Pi);$i.prototype.bytesPerElement=2,Nn(\"StructArrayLayout1ui2\",$i);var ta=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var n=2*t;return this.float32[n+0]=e,this.float32[n+1]=r,t},e}(Pi);ta.prototype.bytesPerElement=8,Nn(\"StructArrayLayout2f8\",ta);var ea=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)},e.prototype.emplace=function(t,e,r,n,i){var a=4*t;return this.float32[a+0]=e,this.float32[a+1]=r,this.float32[a+2]=n,this.float32[a+3]=i,t},e}(Pi);ea.prototype.bytesPerElement=16,Nn(\"StructArrayLayout4f16\",ea);var ra=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={anchorPointX:{configurable:!0},anchorPointY:{configurable:!0},x1:{configurable:!0},y1:{configurable:!0},x2:{configurable:!0},y2:{configurable:!0},featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0},anchorPoint:{configurable:!0}};return r.anchorPointX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorPointY.get=function(){return this._structArray.int16[this._pos2+1]},r.x1.get=function(){return this._structArray.int16[this._pos2+2]},r.y1.get=function(){return this._structArray.int16[this._pos2+3]},r.x2.get=function(){return this._structArray.int16[this._pos2+4]},r.y2.get=function(){return this._structArray.int16[this._pos2+5]},r.featureIndex.get=function(){return this._structArray.uint32[this._pos4+3]},r.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+8]},r.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+9]},r.anchorPoint.get=function(){return new i(this.anchorPointX,this.anchorPointY)},Object.defineProperties(e.prototype,r),e}(Ci);ra.prototype.size=20;var na=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new ra(this,t)},e}(Vi);Nn(\"CollisionBoxArray\",na);var ia=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={anchorX:{configurable:!0},anchorY:{configurable:!0},glyphStartIndex:{configurable:!0},numGlyphs:{configurable:!0},vertexStartIndex:{configurable:!0},lineStartIndex:{configurable:!0},lineLength:{configurable:!0},segment:{configurable:!0},lowerSize:{configurable:!0},upperSize:{configurable:!0},lineOffsetX:{configurable:!0},lineOffsetY:{configurable:!0},writingMode:{configurable:!0},placedOrientation:{configurable:!0},hidden:{configurable:!0},crossTileID:{configurable:!0},associatedIconIndex:{configurable:!0}};return r.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},r.glyphStartIndex.get=function(){return this._structArray.uint16[this._pos2+2]},r.numGlyphs.get=function(){return this._structArray.uint16[this._pos2+3]},r.vertexStartIndex.get=function(){return this._structArray.uint32[this._pos4+2]},r.lineStartIndex.get=function(){return this._structArray.uint32[this._pos4+3]},r.lineLength.get=function(){return this._structArray.uint32[this._pos4+4]},r.segment.get=function(){return this._structArray.uint16[this._pos2+10]},r.lowerSize.get=function(){return this._structArray.uint16[this._pos2+11]},r.upperSize.get=function(){return this._structArray.uint16[this._pos2+12]},r.lineOffsetX.get=function(){return this._structArray.float32[this._pos4+7]},r.lineOffsetY.get=function(){return this._structArray.float32[this._pos4+8]},r.writingMode.get=function(){return this._structArray.uint8[this._pos1+36]},r.placedOrientation.get=function(){return this._structArray.uint8[this._pos1+37]},r.placedOrientation.set=function(t){this._structArray.uint8[this._pos1+37]=t},r.hidden.get=function(){return this._structArray.uint8[this._pos1+38]},r.hidden.set=function(t){this._structArray.uint8[this._pos1+38]=t},r.crossTileID.get=function(){return this._structArray.uint32[this._pos4+10]},r.crossTileID.set=function(t){this._structArray.uint32[this._pos4+10]=t},r.associatedIconIndex.get=function(){return this._structArray.int16[this._pos2+22]},Object.defineProperties(e.prototype,r),e}(Ci);ia.prototype.size=48;var aa=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new ia(this,t)},e}(Wi);Nn(\"PlacedSymbolArray\",aa);var oa=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={anchorX:{configurable:!0},anchorY:{configurable:!0},rightJustifiedTextSymbolIndex:{configurable:!0},centerJustifiedTextSymbolIndex:{configurable:!0},leftJustifiedTextSymbolIndex:{configurable:!0},verticalPlacedTextSymbolIndex:{configurable:!0},placedIconSymbolIndex:{configurable:!0},verticalPlacedIconSymbolIndex:{configurable:!0},key:{configurable:!0},textBoxStartIndex:{configurable:!0},textBoxEndIndex:{configurable:!0},verticalTextBoxStartIndex:{configurable:!0},verticalTextBoxEndIndex:{configurable:!0},iconBoxStartIndex:{configurable:!0},iconBoxEndIndex:{configurable:!0},verticalIconBoxStartIndex:{configurable:!0},verticalIconBoxEndIndex:{configurable:!0},featureIndex:{configurable:!0},numHorizontalGlyphVertices:{configurable:!0},numVerticalGlyphVertices:{configurable:!0},numIconVertices:{configurable:!0},numVerticalIconVertices:{configurable:!0},useRuntimeCollisionCircles:{configurable:!0},crossTileID:{configurable:!0},textBoxScale:{configurable:!0},textOffset0:{configurable:!0},textOffset1:{configurable:!0},collisionCircleDiameter:{configurable:!0}};return r.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},r.rightJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+2]},r.centerJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+3]},r.leftJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+4]},r.verticalPlacedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+5]},r.placedIconSymbolIndex.get=function(){return this._structArray.int16[this._pos2+6]},r.verticalPlacedIconSymbolIndex.get=function(){return this._structArray.int16[this._pos2+7]},r.key.get=function(){return this._structArray.uint16[this._pos2+8]},r.textBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+9]},r.textBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+10]},r.verticalTextBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+11]},r.verticalTextBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+12]},r.iconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+13]},r.iconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+14]},r.verticalIconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+15]},r.verticalIconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+16]},r.featureIndex.get=function(){return this._structArray.uint16[this._pos2+17]},r.numHorizontalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+18]},r.numVerticalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+19]},r.numIconVertices.get=function(){return this._structArray.uint16[this._pos2+20]},r.numVerticalIconVertices.get=function(){return this._structArray.uint16[this._pos2+21]},r.useRuntimeCollisionCircles.get=function(){return this._structArray.uint16[this._pos2+22]},r.crossTileID.get=function(){return this._structArray.uint32[this._pos4+12]},r.crossTileID.set=function(t){this._structArray.uint32[this._pos4+12]=t},r.textBoxScale.get=function(){return this._structArray.float32[this._pos4+13]},r.textOffset0.get=function(){return this._structArray.float32[this._pos4+14]},r.textOffset1.get=function(){return this._structArray.float32[this._pos4+15]},r.collisionCircleDiameter.get=function(){return this._structArray.float32[this._pos4+16]},Object.defineProperties(e.prototype,r),e}(Ci);oa.prototype.size=68;var sa=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new oa(this,t)},e}(Xi);Nn(\"SymbolInstanceArray\",sa);var la=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getoffsetX=function(t){return this.float32[1*t+0]},e}(Zi);Nn(\"GlyphOffsetArray\",la);var ca=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getx=function(t){return this.int16[3*t+0]},e.prototype.gety=function(t){return this.int16[3*t+1]},e.prototype.gettileUnitDistanceFromAnchor=function(t){return this.int16[3*t+2]},e}(Ji);Nn(\"SymbolLineVertexArray\",ca);var ua=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0}};return r.featureIndex.get=function(){return this._structArray.uint32[this._pos4+0]},r.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+2]},r.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+3]},Object.defineProperties(e.prototype,r),e}(Ci);ua.prototype.size=8;var fa=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new ua(this,t)},e}(Ki);Nn(\"FeatureIndexArray\",fa);var ha=Ii([{name:\"a_pos\",components:2,type:\"Int16\"}],4).members,pa=function(t){void 0===t&&(t=[]),this.segments=t};function da(t,e){return 256*(t=l(Math.floor(t),0,255))+(e=l(Math.floor(e),0,255))}pa.prototype.prepareSegment=function(t,e,r,n){var i=this.segments[this.segments.length-1];return t>pa.MAX_VERTEX_ARRAY_LENGTH&&_(\"Max vertices per segment is \"+pa.MAX_VERTEX_ARRAY_LENGTH+\": bucket requested \"+t),(!i||i.vertexLength+t>pa.MAX_VERTEX_ARRAY_LENGTH||i.sortKey!==n)&&(i={vertexOffset:e.length,primitiveOffset:r.length,vertexLength:0,primitiveLength:0},void 0!==n&&(i.sortKey=n),this.segments.push(i)),i},pa.prototype.get=function(){return this.segments},pa.prototype.destroy=function(){for(var t=0,e=this.segments;t>>16)*o&65535)<<16)&4294967295)<<15|l>>>17))*s+(((l>>>16)*s&65535)<<16)&4294967295)<<13|i>>>19))+((5*(i>>>16)&65535)<<16)&4294967295))+((58964+(a>>>16)&65535)<<16);switch(l=0,r){case 3:l^=(255&t.charCodeAt(c+2))<<16;case 2:l^=(255&t.charCodeAt(c+1))<<8;case 1:i^=l=(65535&(l=(l=(65535&(l^=255&t.charCodeAt(c)))*o+(((l>>>16)*o&65535)<<16)&4294967295)<<15|l>>>17))*s+(((l>>>16)*s&65535)<<16)&4294967295}return i^=t.length,i=2246822507*(65535&(i^=i>>>16))+((2246822507*(i>>>16)&65535)<<16)&4294967295,i=3266489909*(65535&(i^=i>>>13))+((3266489909*(i>>>16)&65535)<<16)&4294967295,(i^=i>>>16)>>>0}})),va=e((function(t){t.exports=function(t,e){for(var r,n=t.length,i=e^n,a=0;n>=4;)r=1540483477*(65535&(r=255&t.charCodeAt(a)|(255&t.charCodeAt(++a))<<8|(255&t.charCodeAt(++a))<<16|(255&t.charCodeAt(++a))<<24))+((1540483477*(r>>>16)&65535)<<16),i=1540483477*(65535&i)+((1540483477*(i>>>16)&65535)<<16)^(r=1540483477*(65535&(r^=r>>>24))+((1540483477*(r>>>16)&65535)<<16)),n-=4,++a;switch(n){case 3:i^=(255&t.charCodeAt(a+2))<<16;case 2:i^=(255&t.charCodeAt(a+1))<<8;case 1:i=1540483477*(65535&(i^=255&t.charCodeAt(a)))+((1540483477*(i>>>16)&65535)<<16)}return i=1540483477*(65535&(i^=i>>>13))+((1540483477*(i>>>16)&65535)<<16),(i^=i>>>15)>>>0}})),ya=ma,xa=ma,ba=va;ya.murmur3=xa,ya.murmur2=ba;var _a=function(){this.ids=[],this.positions=[],this.indexed=!1};_a.prototype.add=function(t,e,r,n){this.ids.push(Ta(t)),this.positions.push(e,r,n)},_a.prototype.getPositions=function(t){for(var e=Ta(t),r=0,n=this.ids.length-1;r>1;this.ids[i]>=e?n=i:r=i+1}for(var a=[];this.ids[r]===e;){var o=this.positions[3*r],s=this.positions[3*r+1],l=this.positions[3*r+2];a.push({index:o,start:s,end:l}),r++}return a},_a.serialize=function(t,e){var r=new Float64Array(t.ids),n=new Uint32Array(t.positions);return function t(e,r,n,i){for(;n>1],o=n-1,s=i+1;;){do{o++}while(e[o]a);if(o>=s)break;ka(e,o,s),ka(r,3*o,3*s),ka(r,3*o+1,3*s+1),ka(r,3*o+2,3*s+2)}s-nGa.max||o.yGa.max)&&(_(\"Geometry exceeds allowed extent, reduce your vector tile buffer size\"),o.x=l(o.x,Ga.min,Ga.max),o.y=l(o.y,Ga.min,Ga.max))}return r}function Wa(t,e,r,n,i){t.emplaceBack(2*e+(n+1)/2,2*r+(i+1)/2)}var Xa=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((function(t){return t.id})),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new zi,this.indexArray=new Yi,this.segments=new pa,this.programConfigurations=new Ua(ha,t.layers,t.zoom),this.stateDependentLayerIds=this.layers.filter((function(t){return t.isStateDependent()})).map((function(t){return t.id}))};function Za(t,e){for(var r=0;r1){if($a(t,e))return!0;for(var n=0;n1?t.distSqr(r):t.distSqr(r.sub(e)._mult(i)._add(e))}function no(t,e){for(var r,n,i,a=!1,o=0;oe.y!=i.y>e.y&&e.x<(i.x-n.x)*(e.y-n.y)/(i.y-n.y)+n.x&&(a=!a);return a}function io(t,e){for(var r=!1,n=0,i=t.length-1;ne.y!=o.y>e.y&&e.x<(o.x-a.x)*(e.y-a.y)/(o.y-a.y)+a.x&&(r=!r)}return r}function ao(t,e,r){var n=r[0],i=r[2];if(t.xi.x&&e.x>i.x||t.yi.y&&e.y>i.y)return!1;var a=w(t,e,r[0]);return a!==w(t,e,r[1])||a!==w(t,e,r[2])||a!==w(t,e,r[3])}function oo(t,e,r){var n=e.paint.get(t).value;return\"constant\"===n.kind?n.value:r.programConfigurations.get(e.id).getMaxValue(t)}function so(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function lo(t,e,r,n,a){if(!e[0]&&!e[1])return t;var o=i.convert(e)._mult(a);\"viewport\"===r&&o._rotate(-n);for(var s=[],l=0;l=8192||u<0||u>=8192)){var f=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,t.sortKey),h=f.vertexLength;Wa(this.layoutVertexArray,c,u,-1,-1),Wa(this.layoutVertexArray,c,u,1,-1),Wa(this.layoutVertexArray,c,u,1,1),Wa(this.layoutVertexArray,c,u,-1,1),this.indexArray.emplaceBack(h,h+1,h+2),this.indexArray.emplaceBack(h,h+3,h+2),f.vertexLength+=4,f.primitiveLength+=2}}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,{},n)},Nn(\"CircleBucket\",Xa,{omit:[\"layers\"]});var co=new Si({\"circle-sort-key\":new Ti(Lt.layout_circle[\"circle-sort-key\"])}),uo={paint:new Si({\"circle-radius\":new Ti(Lt.paint_circle[\"circle-radius\"]),\"circle-color\":new Ti(Lt.paint_circle[\"circle-color\"]),\"circle-blur\":new Ti(Lt.paint_circle[\"circle-blur\"]),\"circle-opacity\":new Ti(Lt.paint_circle[\"circle-opacity\"]),\"circle-translate\":new wi(Lt.paint_circle[\"circle-translate\"]),\"circle-translate-anchor\":new wi(Lt.paint_circle[\"circle-translate-anchor\"]),\"circle-pitch-scale\":new wi(Lt.paint_circle[\"circle-pitch-scale\"]),\"circle-pitch-alignment\":new wi(Lt.paint_circle[\"circle-pitch-alignment\"]),\"circle-stroke-width\":new Ti(Lt.paint_circle[\"circle-stroke-width\"]),\"circle-stroke-color\":new Ti(Lt.paint_circle[\"circle-stroke-color\"]),\"circle-stroke-opacity\":new Ti(Lt.paint_circle[\"circle-stroke-opacity\"])}),layout:co},fo=\"undefined\"!=typeof Float32Array?Float32Array:Array;function ho(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function po(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3],s=e[4],l=e[5],c=e[6],u=e[7],f=e[8],h=e[9],p=e[10],d=e[11],g=e[12],m=e[13],v=e[14],y=e[15],x=r[0],b=r[1],_=r[2],w=r[3];return t[0]=x*n+b*s+_*f+w*g,t[1]=x*i+b*l+_*h+w*m,t[2]=x*a+b*c+_*p+w*v,t[3]=x*o+b*u+_*d+w*y,x=r[4],b=r[5],_=r[6],w=r[7],t[4]=x*n+b*s+_*f+w*g,t[5]=x*i+b*l+_*h+w*m,t[6]=x*a+b*c+_*p+w*v,t[7]=x*o+b*u+_*d+w*y,x=r[8],b=r[9],_=r[10],w=r[11],t[8]=x*n+b*s+_*f+w*g,t[9]=x*i+b*l+_*h+w*m,t[10]=x*a+b*c+_*p+w*v,t[11]=x*o+b*u+_*d+w*y,x=r[12],b=r[13],_=r[14],w=r[15],t[12]=x*n+b*s+_*f+w*g,t[13]=x*i+b*l+_*h+w*m,t[14]=x*a+b*c+_*p+w*v,t[15]=x*o+b*u+_*d+w*y,t}Math.hypot||(Math.hypot=function(){for(var t=arguments,e=0,r=arguments.length;r--;)e+=t[r]*t[r];return Math.sqrt(e)});var go=po;var mo,vo,yo=function(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t};mo=new fo(3),fo!=Float32Array&&(mo[0]=0,mo[1]=0,mo[2]=0),vo=mo;function xo(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3];return t[0]=r[0]*n+r[4]*i+r[8]*a+r[12]*o,t[1]=r[1]*n+r[5]*i+r[9]*a+r[13]*o,t[2]=r[2]*n+r[6]*i+r[10]*a+r[14]*o,t[3]=r[3]*n+r[7]*i+r[11]*a+r[15]*o,t}!function(){var t=function(){var t=new fo(4);return fo!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[3]=0),t}()}();var bo=function(t){var e=t[0],r=t[1];return e*e+r*r},_o=(function(){var t=function(){var t=new fo(2);return fo!=Float32Array&&(t[0]=0,t[1]=0),t}()}(),function(t){function e(e){t.call(this,e,uo)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.createBucket=function(t){return new Xa(t)},e.prototype.queryRadius=function(t){var e=t;return oo(\"circle-radius\",this,e)+oo(\"circle-stroke-width\",this,e)+so(this.paint.get(\"circle-translate\"))},e.prototype.queryIntersectsFeature=function(t,e,r,n,i,a,o,s){for(var l=lo(t,this.paint.get(\"circle-translate\"),this.paint.get(\"circle-translate-anchor\"),a.angle,o),c=this.paint.get(\"circle-radius\").evaluate(e,r)+this.paint.get(\"circle-stroke-width\").evaluate(e,r),u=\"map\"===this.paint.get(\"circle-pitch-alignment\"),f=u?l:function(t,e){return t.map((function(t){return wo(t,e)}))}(l,s),h=u?c*o:c,p=0,d=n;pt.width||i.height>t.height||r.x>t.width-i.width||r.y>t.height-i.height)throw new RangeError(\"out of range source coordinates for image copy\");if(i.width>e.width||i.height>e.height||n.x>e.width-i.width||n.y>e.height-i.height)throw new RangeError(\"out of range destination coordinates for image copy\");for(var o=t.data,s=e.data,l=0;l80*r){n=a=t[0],i=o=t[1];for(var d=r;da&&(a=s),l>o&&(o=l);c=0!==(c=Math.max(a-n,o-i))?1/c:0}return jo(h,p,r,n,i,c),p}function Bo(t,e,r,n,i){var a,o;if(i===ls(t,e,r,n)>0)for(a=e;a=e;a-=n)o=as(a,t[a],t[a+1],o);return o&&$o(o,o.next)&&(os(o),o=o.next),o}function No(t,e){if(!t)return t;e||(e=t);var r,n=t;do{if(r=!1,n.steiner||!$o(n,n.next)&&0!==Qo(n.prev,n,n.next))n=n.next;else{if(os(n),(n=e=n.prev)===n.next)break;r=!0}}while(r||n!==e);return e}function jo(t,e,r,n,i,a,o){if(t){!o&&a&&function(t,e,r,n){var i=t;do{null===i.z&&(i.z=Xo(i.x,i.y,e,r,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next}while(i!==t);i.prevZ.nextZ=null,i.prevZ=null,function(t){var e,r,n,i,a,o,s,l,c=1;do{for(r=t,t=null,a=null,o=0;r;){for(o++,n=r,s=0,e=0;e0||l>0&&n;)0!==s&&(0===l||!n||r.z<=n.z)?(i=r,r=r.nextZ,s--):(i=n,n=n.nextZ,l--),a?a.nextZ=i:t=i,i.prevZ=a,a=i;r=n}a.nextZ=null,c*=2}while(o>1)}(i)}(t,n,i,a);for(var s,l,c=t;t.prev!==t.next;)if(s=t.prev,l=t.next,a?Vo(t,n,i,a):Uo(t))e.push(s.i/r),e.push(t.i/r),e.push(l.i/r),os(t),t=l.next,c=l.next;else if((t=l)===c){o?1===o?jo(t=Ho(No(t),e,r),e,r,n,i,a,2):2===o&&qo(t,e,r,n,i,a):jo(No(t),e,r,n,i,a,1);break}}}function Uo(t){var e=t.prev,r=t,n=t.next;if(Qo(e,r,n)>=0)return!1;for(var i=t.next.next;i!==t.prev;){if(Jo(e.x,e.y,r.x,r.y,n.x,n.y,i.x,i.y)&&Qo(i.prev,i,i.next)>=0)return!1;i=i.next}return!0}function Vo(t,e,r,n){var i=t.prev,a=t,o=t.next;if(Qo(i,a,o)>=0)return!1;for(var s=i.xa.x?i.x>o.x?i.x:o.x:a.x>o.x?a.x:o.x,u=i.y>a.y?i.y>o.y?i.y:o.y:a.y>o.y?a.y:o.y,f=Xo(s,l,e,r,n),h=Xo(c,u,e,r,n),p=t.prevZ,d=t.nextZ;p&&p.z>=f&&d&&d.z<=h;){if(p!==t.prev&&p!==t.next&&Jo(i.x,i.y,a.x,a.y,o.x,o.y,p.x,p.y)&&Qo(p.prev,p,p.next)>=0)return!1;if(p=p.prevZ,d!==t.prev&&d!==t.next&&Jo(i.x,i.y,a.x,a.y,o.x,o.y,d.x,d.y)&&Qo(d.prev,d,d.next)>=0)return!1;d=d.nextZ}for(;p&&p.z>=f;){if(p!==t.prev&&p!==t.next&&Jo(i.x,i.y,a.x,a.y,o.x,o.y,p.x,p.y)&&Qo(p.prev,p,p.next)>=0)return!1;p=p.prevZ}for(;d&&d.z<=h;){if(d!==t.prev&&d!==t.next&&Jo(i.x,i.y,a.x,a.y,o.x,o.y,d.x,d.y)&&Qo(d.prev,d,d.next)>=0)return!1;d=d.nextZ}return!0}function Ho(t,e,r){var n=t;do{var i=n.prev,a=n.next.next;!$o(i,a)&&ts(i,n,n.next,a)&&ns(i,a)&&ns(a,i)&&(e.push(i.i/r),e.push(n.i/r),e.push(a.i/r),os(n),os(n.next),n=t=a),n=n.next}while(n!==t);return No(n)}function qo(t,e,r,n,i,a){var o=t;do{for(var s=o.next.next;s!==o.prev;){if(o.i!==s.i&&Ko(o,s)){var l=is(o,s);return o=No(o,o.next),l=No(l,l.next),jo(o,e,r,n,i,a),void jo(l,e,r,n,i,a)}s=s.next}o=o.next}while(o!==t)}function Go(t,e){return t.x-e.x}function Yo(t,e){if(e=function(t,e){var r,n=e,i=t.x,a=t.y,o=-1/0;do{if(a<=n.y&&a>=n.next.y&&n.next.y!==n.y){var s=n.x+(a-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(s<=i&&s>o){if(o=s,s===i){if(a===n.y)return n;if(a===n.next.y)return n.next}r=n.x=n.x&&n.x>=u&&i!==n.x&&Jo(ar.x||n.x===r.x&&Wo(r,n)))&&(r=n,h=l)),n=n.next}while(n!==c);return r}(t,e)){var r=is(e,t);No(e,e.next),No(r,r.next)}}function Wo(t,e){return Qo(t.prev,t,e.prev)<0&&Qo(e.next,t,t.next)<0}function Xo(t,e,r,n,i){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-r)*i)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-n)*i)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function Zo(t){var e=t,r=t;do{(e.x=0&&(t-o)*(n-s)-(r-o)*(e-s)>=0&&(r-o)*(a-s)-(i-o)*(n-s)>=0}function Ko(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){var r=t;do{if(r.i!==t.i&&r.next.i!==t.i&&r.i!==e.i&&r.next.i!==e.i&&ts(r,r.next,t,e))return!0;r=r.next}while(r!==t);return!1}(t,e)&&(ns(t,e)&&ns(e,t)&&function(t,e){var r=t,n=!1,i=(t.x+e.x)/2,a=(t.y+e.y)/2;do{r.y>a!=r.next.y>a&&r.next.y!==r.y&&i<(r.next.x-r.x)*(a-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next}while(r!==t);return n}(t,e)&&(Qo(t.prev,t,e.prev)||Qo(t,e.prev,e))||$o(t,e)&&Qo(t.prev,t,t.next)>0&&Qo(e.prev,e,e.next)>0)}function Qo(t,e,r){return(e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y)}function $o(t,e){return t.x===e.x&&t.y===e.y}function ts(t,e,r,n){var i=rs(Qo(t,e,r)),a=rs(Qo(t,e,n)),o=rs(Qo(r,n,t)),s=rs(Qo(r,n,e));return i!==a&&o!==s||(!(0!==i||!es(t,r,e))||(!(0!==a||!es(t,n,e))||(!(0!==o||!es(r,t,n))||!(0!==s||!es(r,e,n)))))}function es(t,e,r){return e.x<=Math.max(t.x,r.x)&&e.x>=Math.min(t.x,r.x)&&e.y<=Math.max(t.y,r.y)&&e.y>=Math.min(t.y,r.y)}function rs(t){return t>0?1:t<0?-1:0}function ns(t,e){return Qo(t.prev,t,t.next)<0?Qo(t,e,t.next)>=0&&Qo(t,t.prev,e)>=0:Qo(t,e,t.prev)<0||Qo(t,t.next,e)<0}function is(t,e){var r=new ss(t.i,t.x,t.y),n=new ss(e.i,e.x,e.y),i=t.next,a=e.prev;return t.next=e,e.prev=t,r.next=i,i.prev=r,n.next=r,r.prev=n,a.next=n,n.prev=a,n}function as(t,e,r,n){var i=new ss(t,e,r);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function os(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function ss(t,e,r){this.i=t,this.x=e,this.y=r,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function ls(t,e,r,n){for(var i=0,a=e,o=r-n;an;){if(i-n>600){var o=i-n+1,s=r-n+1,l=Math.log(o),c=.5*Math.exp(2*l/3),u=.5*Math.sqrt(l*c*(o-c)/o)*(s-o/2<0?-1:1),f=Math.max(n,Math.floor(r-s*c/o+u)),h=Math.min(i,Math.floor(r+(o-s)*c/o+u));t(e,r,f,h,a)}var p=e[r],d=n,g=i;for(us(e,n,r),a(e[i],p)>0&&us(e,n,i);d0;)g--}0===a(e[n],p)?us(e,n,g):(g++,us(e,g,i)),g<=r&&(n=g+1),r<=g&&(i=g-1)}}(t,e,r||0,n||t.length-1,i||fs)}function us(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function fs(t,e){return te?1:0}function hs(t,e){var r=t.length;if(r<=1)return[t];for(var n,i,a=[],o=0;o1)for(var l=0;l0&&(n+=t[i-1].length,r.holes.push(n))}return r},Do.default=Ro;var ms=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((function(t){return t.id})),this.index=t.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new zi,this.indexArray=new Yi,this.indexArray2=new Qi,this.programConfigurations=new Ua(zo,t.layers,t.zoom),this.segments=new pa,this.segments2=new pa,this.stateDependentLayerIds=this.layers.filter((function(t){return t.isStateDependent()})).map((function(t){return t.id}))};ms.prototype.populate=function(t,e,r){this.hasPattern=ds(\"fill\",this.layers,e);for(var n=this.layers[0].layout.get(\"fill-sort-key\"),i=[],a=0,o=t;a>3}if(a--,1===n||2===n)o+=t.readSVarint(),s+=t.readSVarint(),1===n&&(e&&l.push(e),e=[]),e.push(new i(o,s));else{if(7!==n)throw new Error(\"unknown command \"+n);e&&e.push(e[0].clone())}}return e&&l.push(e),l},ws.prototype.bbox=function(){var t=this._pbf;t.pos=this._geometry;for(var e=t.readVarint()+t.pos,r=1,n=0,i=0,a=0,o=1/0,s=-1/0,l=1/0,c=-1/0;t.pos>3}if(n--,1===r||2===r)(i+=t.readSVarint())s&&(s=i),(a+=t.readSVarint())c&&(c=a);else if(7!==r)throw new Error(\"unknown command \"+r)}return[o,l,s,c]},ws.prototype.toGeoJSON=function(t,e,r){var n,i,a=this.extent*Math.pow(2,r),o=this.extent*t,s=this.extent*e,l=this.loadGeometry(),c=ws.types[this.type];function u(t){for(var e=0;e>3;e=1===n?t.readString():2===n?t.readFloat():3===n?t.readDouble():4===n?t.readVarint64():5===n?t.readVarint():6===n?t.readSVarint():7===n?t.readBoolean():null}return e}(r))}function Es(t,e,r){if(3===t){var n=new As(r,r.readVarint()+r.pos);n.length&&(e[n.name]=n)}}Ms.prototype.feature=function(t){if(t<0||t>=this._features.length)throw new Error(\"feature index out of bounds\");this._pbf.pos=this._features[t];var e=this._pbf.readVarint()+this._pbf.pos;return new _s(this._pbf,e,this.extent,this._keys,this._values)};var Ls={VectorTile:function(t,e){this.layers=t.readFields(Es,{},e)},VectorTileFeature:_s,VectorTileLayer:As},Cs=Ls.VectorTileFeature.types,Ps=Math.pow(2,13);function Is(t,e,r,n,i,a,o,s){t.emplaceBack(e,r,2*Math.floor(n*Ps)+o,i*Ps*2,a*Ps*2,Math.round(s))}var Os=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((function(t){return t.id})),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new Ri,this.indexArray=new Yi,this.programConfigurations=new Ua(bs,t.layers,t.zoom),this.segments=new pa,this.stateDependentLayerIds=this.layers.filter((function(t){return t.isStateDependent()})).map((function(t){return t.id}))};function zs(t,e){return t.x===e.x&&(t.x<0||t.x>8192)||t.y===e.y&&(t.y<0||t.y>8192)}function Ds(t){return t.every((function(t){return t.x<0}))||t.every((function(t){return t.x>8192}))||t.every((function(t){return t.y<0}))||t.every((function(t){return t.y>8192}))}Os.prototype.populate=function(t,e,r){this.features=[],this.hasPattern=ds(\"fill-extrusion\",this.layers,e);for(var n=0,i=t;n=1){var y=d[m-1];if(!zs(v,y)){f.vertexLength+4>pa.MAX_VERTEX_ARRAY_LENGTH&&(f=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));var x=v.sub(y)._perp()._unit(),b=y.dist(v);g+b>32768&&(g=0),Is(this.layoutVertexArray,v.x,v.y,x.x,x.y,0,0,g),Is(this.layoutVertexArray,v.x,v.y,x.x,x.y,0,1,g),g+=b,Is(this.layoutVertexArray,y.x,y.y,x.x,x.y,0,0,g),Is(this.layoutVertexArray,y.x,y.y,x.x,x.y,0,1,g);var _=f.vertexLength;this.indexArray.emplaceBack(_,_+2,_+1),this.indexArray.emplaceBack(_+1,_+2,_+3),f.vertexLength+=4,f.primitiveLength+=2}}}}if(f.vertexLength+l>pa.MAX_VERTEX_ARRAY_LENGTH&&(f=this.segments.prepareSegment(l,this.layoutVertexArray,this.indexArray)),\"Polygon\"===Cs[t.type]){for(var w=[],T=[],k=f.vertexLength,A=0,M=s;A=2&&t[l-1].equals(t[l-2]);)l--;for(var c=0;c0;if(T&&v>c){var A=u.dist(p);if(A>2*f){var M=u.sub(u.sub(p)._mult(f/A)._round());this.updateDistance(p,M),this.addCurrentVertex(M,g,0,0,h),p=M}}var S=p&&d,E=S?r:s?\"butt\":n;if(S&&\"round\"===E&&(_i&&(E=\"bevel\"),\"bevel\"===E&&(_>2&&(E=\"flipbevel\"),_100)y=m.mult(-1);else{var L=_*g.add(m).mag()/g.sub(m).mag();y._perp()._mult(L*(k?-1:1))}this.addCurrentVertex(u,y,0,0,h),this.addCurrentVertex(u,y.mult(-1),0,0,h)}else if(\"bevel\"===E||\"fakeround\"===E){var C=-Math.sqrt(_*_-1),P=k?C:0,I=k?0:C;if(p&&this.addCurrentVertex(u,g,P,I,h),\"fakeround\"===E)for(var O=Math.round(180*w/Math.PI/20),z=1;z2*f){var j=u.add(d.sub(u)._mult(f/N)._round());this.updateDistance(u,j),this.addCurrentVertex(j,m,0,0,h),u=j}}}}},qs.prototype.addCurrentVertex=function(t,e,r,n,i,a){void 0===a&&(a=!1);var o=e.x+e.y*r,s=e.y-e.x*r,l=-e.x+e.y*n,c=-e.y-e.x*n;this.addHalfVertex(t,o,s,a,!1,r,i),this.addHalfVertex(t,l,c,a,!0,-n,i),this.distance>Hs/2&&0===this.totalDistance&&(this.distance=0,this.addCurrentVertex(t,e,r,n,i,a))},qs.prototype.addHalfVertex=function(t,e,r,n,i,a,o){var s=t.x,l=t.y,c=.5*this.scaledDistance;this.layoutVertexArray.emplaceBack((s<<1)+(n?1:0),(l<<1)+(i?1:0),Math.round(63*e)+128,Math.round(63*r)+128,1+(0===a?0:a<0?-1:1)|(63&c)<<2,c>>6);var u=o.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,u),o.primitiveLength++),i?this.e2=u:this.e1=u},qs.prototype.updateScaledDistance=function(){this.scaledDistance=this.totalDistance>0?(this.clipStart+(this.clipEnd-this.clipStart)*this.distance/this.totalDistance)*(Hs-1):this.distance},qs.prototype.updateDistance=function(t,e){this.distance+=t.dist(e),this.updateScaledDistance()},Nn(\"LineBucket\",qs,{omit:[\"layers\",\"patternFeatures\"]});var Gs=new Si({\"line-cap\":new wi(Lt.layout_line[\"line-cap\"]),\"line-join\":new Ti(Lt.layout_line[\"line-join\"]),\"line-miter-limit\":new wi(Lt.layout_line[\"line-miter-limit\"]),\"line-round-limit\":new wi(Lt.layout_line[\"line-round-limit\"]),\"line-sort-key\":new Ti(Lt.layout_line[\"line-sort-key\"])}),Ys={paint:new Si({\"line-opacity\":new Ti(Lt.paint_line[\"line-opacity\"]),\"line-color\":new Ti(Lt.paint_line[\"line-color\"]),\"line-translate\":new wi(Lt.paint_line[\"line-translate\"]),\"line-translate-anchor\":new wi(Lt.paint_line[\"line-translate-anchor\"]),\"line-width\":new Ti(Lt.paint_line[\"line-width\"]),\"line-gap-width\":new Ti(Lt.paint_line[\"line-gap-width\"]),\"line-offset\":new Ti(Lt.paint_line[\"line-offset\"]),\"line-blur\":new Ti(Lt.paint_line[\"line-blur\"]),\"line-dasharray\":new Ai(Lt.paint_line[\"line-dasharray\"]),\"line-pattern\":new ki(Lt.paint_line[\"line-pattern\"]),\"line-gradient\":new Mi(Lt.paint_line[\"line-gradient\"])}),layout:Gs},Ws=new(function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.possiblyEvaluate=function(e,r){return r=new pi(Math.floor(r.zoom),{now:r.now,fadeDuration:r.fadeDuration,zoomHistory:r.zoomHistory,transition:r.transition}),t.prototype.possiblyEvaluate.call(this,e,r)},e.prototype.evaluate=function(e,r,n,i){return r=u({},r,{zoom:Math.floor(r.zoom)}),t.prototype.evaluate.call(this,e,r,n,i)},e}(Ti))(Ys.paint.properties[\"line-width\"].specification);Ws.useIntegerZoom=!0;var Xs=function(t){function e(e){t.call(this,e,Ys)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._handleSpecialPaintPropertyUpdate=function(t){\"line-gradient\"===t&&this._updateGradient()},e.prototype._updateGradient=function(){var t=this._transitionablePaint._values[\"line-gradient\"].value.expression;this.gradient=Co(t,\"lineProgress\"),this.gradientTexture=null},e.prototype.recalculate=function(e,r){t.prototype.recalculate.call(this,e,r),this.paint._values[\"line-floorwidth\"]=Ws.possiblyEvaluate(this._transitioningPaint._values[\"line-width\"].value,e)},e.prototype.createBucket=function(t){return new qs(t)},e.prototype.queryRadius=function(t){var e=t,r=Zs(oo(\"line-width\",this,e),oo(\"line-gap-width\",this,e)),n=oo(\"line-offset\",this,e);return r/2+Math.abs(n)+so(this.paint.get(\"line-translate\"))},e.prototype.queryIntersectsFeature=function(t,e,r,n,a,o,s){var l=lo(t,this.paint.get(\"line-translate\"),this.paint.get(\"line-translate-anchor\"),o.angle,s),c=s/2*Zs(this.paint.get(\"line-width\").evaluate(e,r),this.paint.get(\"line-gap-width\").evaluate(e,r)),u=this.paint.get(\"line-offset\").evaluate(e,r);return u&&(n=function(t,e){for(var r=[],n=new i(0,0),a=0;a=3)for(var a=0;a0?e+2*t:t}var Js=Ii([{name:\"a_pos_offset\",components:4,type:\"Int16\"},{name:\"a_data\",components:4,type:\"Uint16\"},{name:\"a_pixeloffset\",components:4,type:\"Int16\"}],4),Ks=Ii([{name:\"a_projected_pos\",components:3,type:\"Float32\"}],4),Qs=(Ii([{name:\"a_fade_opacity\",components:1,type:\"Uint32\"}],4),Ii([{name:\"a_placed\",components:2,type:\"Uint8\"},{name:\"a_shift\",components:2,type:\"Float32\"}])),$s=(Ii([{type:\"Int16\",name:\"anchorPointX\"},{type:\"Int16\",name:\"anchorPointY\"},{type:\"Int16\",name:\"x1\"},{type:\"Int16\",name:\"y1\"},{type:\"Int16\",name:\"x2\"},{type:\"Int16\",name:\"y2\"},{type:\"Uint32\",name:\"featureIndex\"},{type:\"Uint16\",name:\"sourceLayerIndex\"},{type:\"Uint16\",name:\"bucketIndex\"}]),Ii([{name:\"a_pos\",components:2,type:\"Int16\"},{name:\"a_anchor_pos\",components:2,type:\"Int16\"},{name:\"a_extrude\",components:2,type:\"Int16\"}],4)),tl=Ii([{name:\"a_pos\",components:2,type:\"Float32\"},{name:\"a_radius\",components:1,type:\"Float32\"},{name:\"a_flags\",components:2,type:\"Int16\"}],4);Ii([{name:\"triangle\",components:3,type:\"Uint16\"}]),Ii([{type:\"Int16\",name:\"anchorX\"},{type:\"Int16\",name:\"anchorY\"},{type:\"Uint16\",name:\"glyphStartIndex\"},{type:\"Uint16\",name:\"numGlyphs\"},{type:\"Uint32\",name:\"vertexStartIndex\"},{type:\"Uint32\",name:\"lineStartIndex\"},{type:\"Uint32\",name:\"lineLength\"},{type:\"Uint16\",name:\"segment\"},{type:\"Uint16\",name:\"lowerSize\"},{type:\"Uint16\",name:\"upperSize\"},{type:\"Float32\",name:\"lineOffsetX\"},{type:\"Float32\",name:\"lineOffsetY\"},{type:\"Uint8\",name:\"writingMode\"},{type:\"Uint8\",name:\"placedOrientation\"},{type:\"Uint8\",name:\"hidden\"},{type:\"Uint32\",name:\"crossTileID\"},{type:\"Int16\",name:\"associatedIconIndex\"}]),Ii([{type:\"Int16\",name:\"anchorX\"},{type:\"Int16\",name:\"anchorY\"},{type:\"Int16\",name:\"rightJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"centerJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"leftJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"verticalPlacedTextSymbolIndex\"},{type:\"Int16\",name:\"placedIconSymbolIndex\"},{type:\"Int16\",name:\"verticalPlacedIconSymbolIndex\"},{type:\"Uint16\",name:\"key\"},{type:\"Uint16\",name:\"textBoxStartIndex\"},{type:\"Uint16\",name:\"textBoxEndIndex\"},{type:\"Uint16\",name:\"verticalTextBoxStartIndex\"},{type:\"Uint16\",name:\"verticalTextBoxEndIndex\"},{type:\"Uint16\",name:\"iconBoxStartIndex\"},{type:\"Uint16\",name:\"iconBoxEndIndex\"},{type:\"Uint16\",name:\"verticalIconBoxStartIndex\"},{type:\"Uint16\",name:\"verticalIconBoxEndIndex\"},{type:\"Uint16\",name:\"featureIndex\"},{type:\"Uint16\",name:\"numHorizontalGlyphVertices\"},{type:\"Uint16\",name:\"numVerticalGlyphVertices\"},{type:\"Uint16\",name:\"numIconVertices\"},{type:\"Uint16\",name:\"numVerticalIconVertices\"},{type:\"Uint16\",name:\"useRuntimeCollisionCircles\"},{type:\"Uint32\",name:\"crossTileID\"},{type:\"Float32\",name:\"textBoxScale\"},{type:\"Float32\",components:2,name:\"textOffset\"},{type:\"Float32\",name:\"collisionCircleDiameter\"}]),Ii([{type:\"Float32\",name:\"offsetX\"}]),Ii([{type:\"Int16\",name:\"x\"},{type:\"Int16\",name:\"y\"},{type:\"Int16\",name:\"tileUnitDistanceFromAnchor\"}]);function el(t,e,r){return t.sections.forEach((function(t){t.text=function(t,e,r){var n=e.layout.get(\"text-transform\").evaluate(r,{});return\"uppercase\"===n?t=t.toLocaleUpperCase():\"lowercase\"===n&&(t=t.toLocaleLowerCase()),hi.applyArabicShaping&&(t=hi.applyArabicShaping(t)),t}(t.text,e,r)})),t}var rl={\"!\":\"\\ufe15\",\"#\":\"\\uff03\",$:\"\\uff04\",\"%\":\"\\uff05\",\"&\":\"\\uff06\",\"(\":\"\\ufe35\",\")\":\"\\ufe36\",\"*\":\"\\uff0a\",\"+\":\"\\uff0b\",\",\":\"\\ufe10\",\"-\":\"\\ufe32\",\".\":\"\\u30fb\",\"/\":\"\\uff0f\",\":\":\"\\ufe13\",\";\":\"\\ufe14\",\"<\":\"\\ufe3f\",\"=\":\"\\uff1d\",\">\":\"\\ufe40\",\"?\":\"\\ufe16\",\"@\":\"\\uff20\",\"[\":\"\\ufe47\",\"\\\\\":\"\\uff3c\",\"]\":\"\\ufe48\",\"^\":\"\\uff3e\",_:\"\\ufe33\",\"`\":\"\\uff40\",\"{\":\"\\ufe37\",\"|\":\"\\u2015\",\"}\":\"\\ufe38\",\"~\":\"\\uff5e\",\"\\xa2\":\"\\uffe0\",\"\\xa3\":\"\\uffe1\",\"\\xa5\":\"\\uffe5\",\"\\xa6\":\"\\uffe4\",\"\\xac\":\"\\uffe2\",\"\\xaf\":\"\\uffe3\",\"\\u2013\":\"\\ufe32\",\"\\u2014\":\"\\ufe31\",\"\\u2018\":\"\\ufe43\",\"\\u2019\":\"\\ufe44\",\"\\u201c\":\"\\ufe41\",\"\\u201d\":\"\\ufe42\",\"\\u2026\":\"\\ufe19\",\"\\u2027\":\"\\u30fb\",\"\\u20a9\":\"\\uffe6\",\"\\u3001\":\"\\ufe11\",\"\\u3002\":\"\\ufe12\",\"\\u3008\":\"\\ufe3f\",\"\\u3009\":\"\\ufe40\",\"\\u300a\":\"\\ufe3d\",\"\\u300b\":\"\\ufe3e\",\"\\u300c\":\"\\ufe41\",\"\\u300d\":\"\\ufe42\",\"\\u300e\":\"\\ufe43\",\"\\u300f\":\"\\ufe44\",\"\\u3010\":\"\\ufe3b\",\"\\u3011\":\"\\ufe3c\",\"\\u3014\":\"\\ufe39\",\"\\u3015\":\"\\ufe3a\",\"\\u3016\":\"\\ufe17\",\"\\u3017\":\"\\ufe18\",\"\\uff01\":\"\\ufe15\",\"\\uff08\":\"\\ufe35\",\"\\uff09\":\"\\ufe36\",\"\\uff0c\":\"\\ufe10\",\"\\uff0d\":\"\\ufe32\",\"\\uff0e\":\"\\u30fb\",\"\\uff1a\":\"\\ufe13\",\"\\uff1b\":\"\\ufe14\",\"\\uff1c\":\"\\ufe3f\",\"\\uff1e\":\"\\ufe40\",\"\\uff1f\":\"\\ufe16\",\"\\uff3b\":\"\\ufe47\",\"\\uff3d\":\"\\ufe48\",\"\\uff3f\":\"\\ufe33\",\"\\uff5b\":\"\\ufe37\",\"\\uff5c\":\"\\u2015\",\"\\uff5d\":\"\\ufe38\",\"\\uff5f\":\"\\ufe35\",\"\\uff60\":\"\\ufe36\",\"\\uff61\":\"\\ufe12\",\"\\uff62\":\"\\ufe41\",\"\\uff63\":\"\\ufe42\"};var nl=function(t,e,r,n,i){var a,o,s=8*i-n-1,l=(1<>1,u=-7,f=r?i-1:0,h=r?-1:1,p=t[e+f];for(f+=h,a=p&(1<<-u)-1,p>>=-u,u+=s;u>0;a=256*a+t[e+f],f+=h,u-=8);for(o=a&(1<<-u)-1,a>>=-u,u+=n;u>0;o=256*o+t[e+f],f+=h,u-=8);if(0===a)a=1-c;else{if(a===l)return o?NaN:1/0*(p?-1:1);o+=Math.pow(2,n),a-=c}return(p?-1:1)*o*Math.pow(2,a-n)},il=function(t,e,r,n,i,a){var o,s,l,c=8*a-i-1,u=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:a-1,d=n?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,o=u):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),(e+=o+f>=1?h/l:h*Math.pow(2,1-f))*l>=2&&(o++,l/=2),o+f>=u?(s=0,o=u):o+f>=1?(s=(e*l-1)*Math.pow(2,i),o+=f):(s=e*Math.pow(2,f-1)*Math.pow(2,i),o=0));i>=8;t[r+p]=255&s,p+=d,s/=256,i-=8);for(o=o<0;t[r+p]=255&o,p+=d,o/=256,c-=8);t[r+p-d]|=128*g},al=ol;function ol(t){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(t)?t:new Uint8Array(t||0),this.pos=0,this.type=0,this.length=this.buf.length}ol.Varint=0,ol.Fixed64=1,ol.Bytes=2,ol.Fixed32=5;var sl=\"undefined\"==typeof TextDecoder?null:new TextDecoder(\"utf8\");function ll(t){return t.type===ol.Bytes?t.readVarint()+t.pos:t.pos+1}function cl(t,e,r){return r?4294967296*e+(t>>>0):4294967296*(e>>>0)+(t>>>0)}function ul(t,e,r){var n=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.floor(Math.log(e)/(7*Math.LN2));r.realloc(n);for(var i=r.pos-1;i>=t;i--)r.buf[i+n]=r.buf[i]}function fl(t,e){for(var r=0;r>>8,t[r+2]=e>>>16,t[r+3]=e>>>24}function wl(t,e){return(t[e]|t[e+1]<<8|t[e+2]<<16)+(t[e+3]<<24)}ol.prototype={destroy:function(){this.buf=null},readFields:function(t,e,r){for(r=r||this.length;this.pos>3,a=this.pos;this.type=7&n,t(i,e,this),this.pos===a&&this.skip(n)}return e},readMessage:function(t,e){return this.readFields(t,e,this.readVarint()+this.pos)},readFixed32:function(){var t=bl(this.buf,this.pos);return this.pos+=4,t},readSFixed32:function(){var t=wl(this.buf,this.pos);return this.pos+=4,t},readFixed64:function(){var t=bl(this.buf,this.pos)+4294967296*bl(this.buf,this.pos+4);return this.pos+=8,t},readSFixed64:function(){var t=bl(this.buf,this.pos)+4294967296*wl(this.buf,this.pos+4);return this.pos+=8,t},readFloat:function(){var t=nl(this.buf,this.pos,!0,23,4);return this.pos+=4,t},readDouble:function(){var t=nl(this.buf,this.pos,!0,52,8);return this.pos+=8,t},readVarint:function(t){var e,r,n=this.buf;return e=127&(r=n[this.pos++]),r<128?e:(e|=(127&(r=n[this.pos++]))<<7,r<128?e:(e|=(127&(r=n[this.pos++]))<<14,r<128?e:(e|=(127&(r=n[this.pos++]))<<21,r<128?e:function(t,e,r){var n,i,a=r.buf;if(i=a[r.pos++],n=(112&i)>>4,i<128)return cl(t,n,e);if(i=a[r.pos++],n|=(127&i)<<3,i<128)return cl(t,n,e);if(i=a[r.pos++],n|=(127&i)<<10,i<128)return cl(t,n,e);if(i=a[r.pos++],n|=(127&i)<<17,i<128)return cl(t,n,e);if(i=a[r.pos++],n|=(127&i)<<24,i<128)return cl(t,n,e);if(i=a[r.pos++],n|=(1&i)<<31,i<128)return cl(t,n,e);throw new Error(\"Expected varint not more than 10 bytes\")}(e|=(15&(r=n[this.pos]))<<28,t,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var t=this.readVarint();return t%2==1?(t+1)/-2:t/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var t=this.readVarint()+this.pos,e=this.pos;return this.pos=t,t-e>=12&&sl?function(t,e,r){return sl.decode(t.subarray(e,r))}(this.buf,e,t):function(t,e,r){var n=\"\",i=e;for(;i239?4:l>223?3:l>191?2:1;if(i+u>r)break;1===u?l<128&&(c=l):2===u?128==(192&(a=t[i+1]))&&(c=(31&l)<<6|63&a)<=127&&(c=null):3===u?(a=t[i+1],o=t[i+2],128==(192&a)&&128==(192&o)&&((c=(15&l)<<12|(63&a)<<6|63&o)<=2047||c>=55296&&c<=57343)&&(c=null)):4===u&&(a=t[i+1],o=t[i+2],s=t[i+3],128==(192&a)&&128==(192&o)&&128==(192&s)&&((c=(15&l)<<18|(63&a)<<12|(63&o)<<6|63&s)<=65535||c>=1114112)&&(c=null)),null===c?(c=65533,u=1):c>65535&&(c-=65536,n+=String.fromCharCode(c>>>10&1023|55296),c=56320|1023&c),n+=String.fromCharCode(c),i+=u}return n}(this.buf,e,t)},readBytes:function(){var t=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,t);return this.pos=t,e},readPackedVarint:function(t,e){if(this.type!==ol.Bytes)return t.push(this.readVarint(e));var r=ll(this);for(t=t||[];this.pos127;);else if(e===ol.Bytes)this.pos=this.readVarint()+this.pos;else if(e===ol.Fixed32)this.pos+=4;else{if(e!==ol.Fixed64)throw new Error(\"Unimplemented type: \"+e);this.pos+=8}},writeTag:function(t,e){this.writeVarint(t<<3|e)},realloc:function(t){for(var e=this.length||16;e268435455||t<0?function(t,e){var r,n;t>=0?(r=t%4294967296|0,n=t/4294967296|0):(n=~(-t/4294967296),4294967295^(r=~(-t%4294967296))?r=r+1|0:(r=0,n=n+1|0));if(t>=0x10000000000000000||t<-0x10000000000000000)throw new Error(\"Given varint doesn't fit into 10 bytes\");e.realloc(10),function(t,e,r){r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos]=127&t}(r,0,e),function(t,e){var r=(7&t)<<4;if(e.buf[e.pos++]|=r|((t>>>=3)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;e.buf[e.pos++]=127&t}(n,e)}(t,this):(this.realloc(4),this.buf[this.pos++]=127&t|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=t>>>7&127))))},writeSVarint:function(t){this.writeVarint(t<0?2*-t-1:2*t)},writeBoolean:function(t){this.writeVarint(Boolean(t))},writeString:function(t){t=String(t),this.realloc(4*t.length),this.pos++;var e=this.pos;this.pos=function(t,e,r){for(var n,i,a=0;a55295&&n<57344){if(!i){n>56319||a+1===e.length?(t[r++]=239,t[r++]=191,t[r++]=189):i=n;continue}if(n<56320){t[r++]=239,t[r++]=191,t[r++]=189,i=n;continue}n=i-55296<<10|n-56320|65536,i=null}else i&&(t[r++]=239,t[r++]=191,t[r++]=189,i=null);n<128?t[r++]=n:(n<2048?t[r++]=n>>6|192:(n<65536?t[r++]=n>>12|224:(t[r++]=n>>18|240,t[r++]=n>>12&63|128),t[r++]=n>>6&63|128),t[r++]=63&n|128)}return r}(this.buf,t,this.pos);var r=this.pos-e;r>=128&&ul(e,r,this),this.pos=e-1,this.writeVarint(r),this.pos+=r},writeFloat:function(t){this.realloc(4),il(this.buf,t,this.pos,!0,23,4),this.pos+=4},writeDouble:function(t){this.realloc(8),il(this.buf,t,this.pos,!0,52,8),this.pos+=8},writeBytes:function(t){var e=t.length;this.writeVarint(e),this.realloc(e);for(var r=0;r=128&&ul(r,n,this),this.pos=r-1,this.writeVarint(n),this.pos+=n},writeMessage:function(t,e,r){this.writeTag(t,ol.Bytes),this.writeRawMessage(e,r)},writePackedVarint:function(t,e){e.length&&this.writeMessage(t,fl,e)},writePackedSVarint:function(t,e){e.length&&this.writeMessage(t,hl,e)},writePackedBoolean:function(t,e){e.length&&this.writeMessage(t,gl,e)},writePackedFloat:function(t,e){e.length&&this.writeMessage(t,pl,e)},writePackedDouble:function(t,e){e.length&&this.writeMessage(t,dl,e)},writePackedFixed32:function(t,e){e.length&&this.writeMessage(t,ml,e)},writePackedSFixed32:function(t,e){e.length&&this.writeMessage(t,vl,e)},writePackedFixed64:function(t,e){e.length&&this.writeMessage(t,yl,e)},writePackedSFixed64:function(t,e){e.length&&this.writeMessage(t,xl,e)},writeBytesField:function(t,e){this.writeTag(t,ol.Bytes),this.writeBytes(e)},writeFixed32Field:function(t,e){this.writeTag(t,ol.Fixed32),this.writeFixed32(e)},writeSFixed32Field:function(t,e){this.writeTag(t,ol.Fixed32),this.writeSFixed32(e)},writeFixed64Field:function(t,e){this.writeTag(t,ol.Fixed64),this.writeFixed64(e)},writeSFixed64Field:function(t,e){this.writeTag(t,ol.Fixed64),this.writeSFixed64(e)},writeVarintField:function(t,e){this.writeTag(t,ol.Varint),this.writeVarint(e)},writeSVarintField:function(t,e){this.writeTag(t,ol.Varint),this.writeSVarint(e)},writeStringField:function(t,e){this.writeTag(t,ol.Bytes),this.writeString(e)},writeFloatField:function(t,e){this.writeTag(t,ol.Fixed32),this.writeFloat(e)},writeDoubleField:function(t,e){this.writeTag(t,ol.Fixed64),this.writeDouble(e)},writeBooleanField:function(t,e){this.writeVarintField(t,Boolean(e))}};function Tl(t,e,r){1===t&&r.readMessage(kl,e)}function kl(t,e,r){if(3===t){var n=r.readMessage(Al,{}),i=n.id,a=n.bitmap,o=n.width,s=n.height,l=n.left,c=n.top,u=n.advance;e.push({id:i,bitmap:new So({width:o+6,height:s+6},a),metrics:{width:o,height:s,left:l,top:c,advance:u}})}}function Al(t,e,r){1===t?e.id=r.readVarint():2===t?e.bitmap=r.readBytes():3===t?e.width=r.readVarint():4===t?e.height=r.readVarint():5===t?e.left=r.readSVarint():6===t?e.top=r.readSVarint():7===t&&(e.advance=r.readVarint())}function Ml(t){for(var e=0,r=0,n=0,i=t;n=0;h--){var p=o[h];if(!(f.w>p.w||f.h>p.h)){if(f.x=p.x,f.y=p.y,l=Math.max(l,f.y+f.h),s=Math.max(s,f.x+f.w),f.w===p.w&&f.h===p.h){var d=o.pop();h0&&N>A&&(A=N)}else{var j=r[S.fontStack],U=j&&j[L];if(U&&U.rect)I=U.rect,P=U.metrics;else{var V=e[S.fontStack],H=V&&V[L];if(!H)continue;P=H.metrics}C=24*(_-S.scale)}D?(t.verticalizable=!0,k.push({glyph:L,imageName:O,x:h,y:p+C,vertical:D,scale:S.scale,fontStack:S.fontStack,sectionIndex:E,metrics:P,rect:I}),h+=z*S.scale+c):(k.push({glyph:L,imageName:O,x:h,y:p+C,vertical:D,scale:S.scale,fontStack:S.fontStack,sectionIndex:E,metrics:P,rect:I}),h+=P.advance*S.scale+c)}if(0!==k.length){var q=h-c;d=Math.max(q,d),Vl(k,0,k.length-1,m,A)}h=0;var G=a*_+A;T.lineOffset=Math.max(A,w),p+=G,g=Math.max(G,g),++v}else p+=a,++v}var Y;var W=p- -17,X=Ul(o),Z=X.horizontalAlign,J=X.verticalAlign;(function(t,e,r,n,i,a,o,s,l){var c=(e-r)*i,u=0;u=a!==o?-s*n- -17:(-n*l+.5)*o;for(var f=0,h=t;f=0&&n>=t&&zl[this.text.charCodeAt(n)];n--)r--;this.text=this.text.substring(t,r),this.sectionIndex=this.sectionIndex.slice(t,r)},Il.prototype.substring=function(t,e){var r=new Il;return r.text=this.text.substring(t,e),r.sectionIndex=this.sectionIndex.slice(t,e),r.sections=this.sections,r},Il.prototype.toString=function(){return this.text},Il.prototype.getMaxScale=function(){var t=this;return this.sectionIndex.reduce((function(e,r){return Math.max(e,t.sections[r].scale)}),0)},Il.prototype.addTextSection=function(t,e){this.text+=t.text,this.sections.push(Pl.forText(t.scale,t.fontStack||e));for(var r=this.sections.length-1,n=0;n=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)};var zl={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},Dl={};function Rl(t,e,r,n,i,a){if(e.imageName){var o=n[e.imageName];return o?o.displaySize[0]*e.scale*24/a+i:0}var s=r[e.fontStack],l=s&&s[t];return l?l.metrics.advance*e.scale+i:0}function Fl(t,e,r,n){var i=Math.pow(t-e,2);return n?t=0,f=0,h=0;h-r/2;){if(--o<0)return!1;s-=t[o].dist(a),a=t[o]}s+=t[o].dist(t[o+1]),o++;for(var l=[],c=0;sn;)c-=l.shift().angleDelta;if(c>i)return!1;o++,s+=f.dist(h)}return!0}function Jl(t){for(var e=0,r=0;rc){var d=(c-l)/p,g=qe(f.x,h.x,d),m=qe(f.y,h.y,d),v=new ql(g,m,h.angleTo(f),u);return v._round(),!o||Zl(t,v,s,o,e)?v:void 0}l+=p}}function tc(t,e,r,n,i,a,o,s,l){var c=Kl(n,a,o),u=Ql(n,i),f=u*o,h=0===t[0].x||t[0].x===l||0===t[0].y||t[0].y===l;return e-f=0&&_=0&&w=0&&p+u<=f){var T=new ql(_,w,x,g);T._round(),i&&!Zl(e,T,o,i,a)||d.push(T)}}h+=y}l||d.length||s||(d=t(e,h/2,n,i,a,o,s,!0,c));return d}(t,h?e/2*s%e:(u/2+2*a)*o*s%e,e,c,r,f,h,!1,l)}function ec(t,e,r,n,a){for(var o=[],s=0;s=n&&h.x>=n||(f.x>=n?f=new i(n,f.y+(h.y-f.y)*((n-f.x)/(h.x-f.x)))._round():h.x>=n&&(h=new i(n,f.y+(h.y-f.y)*((n-f.x)/(h.x-f.x)))._round()),f.y>=a&&h.y>=a||(f.y>=a?f=new i(f.x+(h.x-f.x)*((a-f.y)/(h.y-f.y)),a)._round():h.y>=a&&(h=new i(f.x+(h.x-f.x)*((a-f.y)/(h.y-f.y)),a)._round()),c&&f.equals(c[c.length-1])||(c=[f],o.push(c)),c.push(h)))))}return o}function rc(t,e,r,n){var a=[],o=t.image,s=o.pixelRatio,l=o.paddedRect.w-2,c=o.paddedRect.h-2,u=t.right-t.left,f=t.bottom-t.top,h=o.stretchX||[[0,l]],p=o.stretchY||[[0,c]],d=function(t,e){return t+e[1]-e[0]},g=h.reduce(d,0),m=p.reduce(d,0),v=l-g,y=c-m,x=0,b=g,_=0,w=m,T=0,k=v,A=0,M=y;if(o.content&&n){var S=o.content;x=nc(h,0,S[0]),_=nc(p,0,S[1]),b=nc(h,S[0],S[2]),w=nc(p,S[1],S[3]),T=S[0]-x,A=S[1]-_,k=S[2]-S[0]-b,M=S[3]-S[1]-w}var E=function(n,a,l,c){var h=ac(n.stretch-x,b,u,t.left),p=oc(n.fixed-T,k,n.stretch,g),d=ac(a.stretch-_,w,f,t.top),v=oc(a.fixed-A,M,a.stretch,m),y=ac(l.stretch-x,b,u,t.left),S=oc(l.fixed-T,k,l.stretch,g),E=ac(c.stretch-_,w,f,t.top),L=oc(c.fixed-A,M,c.stretch,m),C=new i(h,d),P=new i(y,d),I=new i(y,E),O=new i(h,E),z=new i(p/s,v/s),D=new i(S/s,L/s),R=e*Math.PI/180;if(R){var F=Math.sin(R),B=Math.cos(R),N=[B,-F,F,B];C._matMult(N),P._matMult(N),O._matMult(N),I._matMult(N)}var j=n.stretch+n.fixed,U=l.stretch+l.fixed,V=a.stretch+a.fixed,H=c.stretch+c.fixed;return{tl:C,tr:P,bl:O,br:I,tex:{x:o.paddedRect.x+1+j,y:o.paddedRect.y+1+V,w:U-j,h:H-V},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:z,pixelOffsetBR:D,minFontScaleX:k/s/u,minFontScaleY:M/s/f,isSDF:r}};if(n&&(o.stretchX||o.stretchY))for(var L=ic(h,v,g),C=ic(p,y,m),P=0;P0&&(d=Math.max(10,d),this.circleDiameter=d)}else{var g=o.top*s-l,m=o.bottom*s+l,v=o.left*s-l,y=o.right*s+l,x=o.collisionPadding;if(x&&(v-=x[0]*s,g-=x[1]*s,y+=x[2]*s,m+=x[3]*s),u){var b=new i(v,g),_=new i(y,g),w=new i(v,m),T=new i(y,m),k=u*Math.PI/180;b._rotate(k),_._rotate(k),w._rotate(k),T._rotate(k),v=Math.min(b.x,_.x,w.x,T.x),y=Math.max(b.x,_.x,w.x,T.x),g=Math.min(b.y,_.y,w.y,T.y),m=Math.max(b.y,_.y,w.y,T.y)}t.emplaceBack(e.x,e.y,v,g,y,m,r,n,a)}this.boxEndIndex=t.length},lc=function(t,e){if(void 0===t&&(t=[]),void 0===e&&(e=cc),this.data=t,this.length=this.data.length,this.compare=e,this.length>0)for(var r=(this.length>>1)-1;r>=0;r--)this._down(r)};function cc(t,e){return te?1:0}function uc(t,e,r){void 0===e&&(e=1),void 0===r&&(r=!1);for(var n=1/0,a=1/0,o=-1/0,s=-1/0,l=t[0],c=0;co)&&(o=u.x),(!c||u.y>s)&&(s=u.y)}var f=o-n,h=s-a,p=Math.min(f,h),d=p/2,g=new lc([],fc);if(0===p)return new i(n,a);for(var m=n;my.d||!y.d)&&(y=b,r&&console.log(\"found best %d after %d probes\",Math.round(1e4*b.d)/1e4,x)),b.max-y.d<=e||(d=b.h/2,g.push(new hc(b.p.x-d,b.p.y-d,d,t)),g.push(new hc(b.p.x+d,b.p.y-d,d,t)),g.push(new hc(b.p.x-d,b.p.y+d,d,t)),g.push(new hc(b.p.x+d,b.p.y+d,d,t)),x+=4)}return r&&(console.log(\"num probes: \"+x),console.log(\"best distance: \"+y.d)),y.p}function fc(t,e){return e.max-t.max}function hc(t,e,r,n){this.p=new i(t,e),this.h=r,this.d=function(t,e){for(var r=!1,n=1/0,i=0;it.y!=u.y>t.y&&t.x<(u.x-c.x)*(t.y-c.y)/(u.y-c.y)+c.x&&(r=!r),n=Math.min(n,ro(t,c,u))}return(r?1:-1)*Math.sqrt(n)}(this.p,n),this.max=this.d+this.h*Math.SQRT2}lc.prototype.push=function(t){this.data.push(t),this.length++,this._up(this.length-1)},lc.prototype.pop=function(){if(0!==this.length){var t=this.data[0],e=this.data.pop();return this.length--,this.length>0&&(this.data[0]=e,this._down(0)),t}},lc.prototype.peek=function(){return this.data[0]},lc.prototype._up=function(t){for(var e=this.data,r=this.compare,n=e[t];t>0;){var i=t-1>>1,a=e[i];if(r(n,a)>=0)break;e[t]=a,t=i}e[t]=n},lc.prototype._down=function(t){for(var e=this.data,r=this.compare,n=this.length>>1,i=e[t];t=0)break;e[t]=o,t=a}e[t]=i};var pc=Number.POSITIVE_INFINITY;function dc(t,e){return e[1]!==pc?function(t,e,r){var n=0,i=0;switch(e=Math.abs(e),r=Math.abs(r),t){case\"top-right\":case\"top-left\":case\"top\":i=r-7;break;case\"bottom-right\":case\"bottom-left\":case\"bottom\":i=7-r}switch(t){case\"top-right\":case\"bottom-right\":case\"right\":n=-e;break;case\"top-left\":case\"bottom-left\":case\"left\":n=e}return[n,i]}(t,e[0],e[1]):function(t,e){var r=0,n=0;e<0&&(e=0);var i=e/Math.sqrt(2);switch(t){case\"top-right\":case\"top-left\":n=i-7;break;case\"bottom-right\":case\"bottom-left\":n=7-i;break;case\"bottom\":n=7-e;break;case\"top\":n=e-7}switch(t){case\"top-right\":case\"bottom-right\":r=-i;break;case\"top-left\":case\"bottom-left\":r=i;break;case\"left\":r=e;break;case\"right\":r=-e}return[r,n]}(t,e[0])}function gc(t){switch(t){case\"right\":case\"top-right\":case\"bottom-right\":return\"right\";case\"left\":case\"top-left\":case\"bottom-left\":return\"left\"}return\"center\"}function mc(t,e,r,n,a,o,s,l,c,u,f,h,p,d,g){var m=function(t,e,r,n,a,o,s,l){for(var c=n.layout.get(\"text-rotate\").evaluate(o,{})*Math.PI/180,u=[],f=0,h=e.positionedLines;f32640&&_(t.layerIds[0]+': Value for \"text-size\" is >= 255. Reduce your \"text-size\".'):\"composite\"===v.kind&&((y=[128*d.compositeTextSizes[0].evaluate(s,{},g),128*d.compositeTextSizes[1].evaluate(s,{},g)])[0]>32640||y[1]>32640)&&_(t.layerIds[0]+': Value for \"text-size\" is >= 255. Reduce your \"text-size\".'),t.addSymbols(t.text,m,y,l,o,s,u,e,c.lineStartIndex,c.lineLength,p,g);for(var x=0,b=f;x=0;o--)if(n.dist(a[o])0)&&(\"constant\"!==a.value.kind||a.value.value.length>0),c=\"constant\"!==s.value.kind||!!s.value.value||Object.keys(s.parameters).length>0,u=i.get(\"symbol-sort-key\");if(this.features=[],l||c){for(var f=e.iconDependencies,h=e.glyphDependencies,p=e.availableImages,d=new pi(this.zoom),g=0,m=t;g=0;for(var O=0,z=k.sections;O=0;s--)a[s]={x:e[s].x,y:e[s].y,tileUnitDistanceFromAnchor:i},s>0&&(i+=e[s-1].dist(e[s]));for(var l=0;l0},Mc.prototype.hasIconData=function(){return this.icon.segments.get().length>0},Mc.prototype.hasDebugData=function(){return this.textCollisionBox&&this.iconCollisionBox},Mc.prototype.hasTextCollisionBoxData=function(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0},Mc.prototype.hasIconCollisionBoxData=function(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0},Mc.prototype.addIndicesForPlacedSymbol=function(t,e){for(var r=t.placedSymbolArray.get(e),n=r.vertexStartIndex+4*r.numGlyphs,i=r.vertexStartIndex;i1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(t),this.sortedAngle=t,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(var r=0,n=this.symbolInstanceIndexes;r=0&&n.indexOf(t)===r&&e.addIndicesForPlacedSymbol(e.text,t)})),a.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,a.verticalPlacedTextSymbolIndex),a.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,a.placedIconSymbolIndex),a.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,a.verticalPlacedIconSymbolIndex)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}},Nn(\"SymbolBucket\",Mc,{omit:[\"layers\",\"collisionBoxArray\",\"features\",\"compareText\"]}),Mc.MAX_GLYPHS=65535,Mc.addDynamicAttributes=wc;var Sc=new Si({\"symbol-placement\":new wi(Lt.layout_symbol[\"symbol-placement\"]),\"symbol-spacing\":new wi(Lt.layout_symbol[\"symbol-spacing\"]),\"symbol-avoid-edges\":new wi(Lt.layout_symbol[\"symbol-avoid-edges\"]),\"symbol-sort-key\":new Ti(Lt.layout_symbol[\"symbol-sort-key\"]),\"symbol-z-order\":new wi(Lt.layout_symbol[\"symbol-z-order\"]),\"icon-allow-overlap\":new wi(Lt.layout_symbol[\"icon-allow-overlap\"]),\"icon-ignore-placement\":new wi(Lt.layout_symbol[\"icon-ignore-placement\"]),\"icon-optional\":new wi(Lt.layout_symbol[\"icon-optional\"]),\"icon-rotation-alignment\":new wi(Lt.layout_symbol[\"icon-rotation-alignment\"]),\"icon-size\":new Ti(Lt.layout_symbol[\"icon-size\"]),\"icon-text-fit\":new wi(Lt.layout_symbol[\"icon-text-fit\"]),\"icon-text-fit-padding\":new wi(Lt.layout_symbol[\"icon-text-fit-padding\"]),\"icon-image\":new Ti(Lt.layout_symbol[\"icon-image\"]),\"icon-rotate\":new Ti(Lt.layout_symbol[\"icon-rotate\"]),\"icon-padding\":new wi(Lt.layout_symbol[\"icon-padding\"]),\"icon-keep-upright\":new wi(Lt.layout_symbol[\"icon-keep-upright\"]),\"icon-offset\":new Ti(Lt.layout_symbol[\"icon-offset\"]),\"icon-anchor\":new Ti(Lt.layout_symbol[\"icon-anchor\"]),\"icon-pitch-alignment\":new wi(Lt.layout_symbol[\"icon-pitch-alignment\"]),\"text-pitch-alignment\":new wi(Lt.layout_symbol[\"text-pitch-alignment\"]),\"text-rotation-alignment\":new wi(Lt.layout_symbol[\"text-rotation-alignment\"]),\"text-field\":new Ti(Lt.layout_symbol[\"text-field\"]),\"text-font\":new Ti(Lt.layout_symbol[\"text-font\"]),\"text-size\":new Ti(Lt.layout_symbol[\"text-size\"]),\"text-max-width\":new Ti(Lt.layout_symbol[\"text-max-width\"]),\"text-line-height\":new wi(Lt.layout_symbol[\"text-line-height\"]),\"text-letter-spacing\":new Ti(Lt.layout_symbol[\"text-letter-spacing\"]),\"text-justify\":new Ti(Lt.layout_symbol[\"text-justify\"]),\"text-radial-offset\":new Ti(Lt.layout_symbol[\"text-radial-offset\"]),\"text-variable-anchor\":new wi(Lt.layout_symbol[\"text-variable-anchor\"]),\"text-anchor\":new Ti(Lt.layout_symbol[\"text-anchor\"]),\"text-max-angle\":new wi(Lt.layout_symbol[\"text-max-angle\"]),\"text-writing-mode\":new wi(Lt.layout_symbol[\"text-writing-mode\"]),\"text-rotate\":new Ti(Lt.layout_symbol[\"text-rotate\"]),\"text-padding\":new wi(Lt.layout_symbol[\"text-padding\"]),\"text-keep-upright\":new wi(Lt.layout_symbol[\"text-keep-upright\"]),\"text-transform\":new Ti(Lt.layout_symbol[\"text-transform\"]),\"text-offset\":new Ti(Lt.layout_symbol[\"text-offset\"]),\"text-allow-overlap\":new wi(Lt.layout_symbol[\"text-allow-overlap\"]),\"text-ignore-placement\":new wi(Lt.layout_symbol[\"text-ignore-placement\"]),\"text-optional\":new wi(Lt.layout_symbol[\"text-optional\"])}),Ec={paint:new Si({\"icon-opacity\":new Ti(Lt.paint_symbol[\"icon-opacity\"]),\"icon-color\":new Ti(Lt.paint_symbol[\"icon-color\"]),\"icon-halo-color\":new Ti(Lt.paint_symbol[\"icon-halo-color\"]),\"icon-halo-width\":new Ti(Lt.paint_symbol[\"icon-halo-width\"]),\"icon-halo-blur\":new Ti(Lt.paint_symbol[\"icon-halo-blur\"]),\"icon-translate\":new wi(Lt.paint_symbol[\"icon-translate\"]),\"icon-translate-anchor\":new wi(Lt.paint_symbol[\"icon-translate-anchor\"]),\"text-opacity\":new Ti(Lt.paint_symbol[\"text-opacity\"]),\"text-color\":new Ti(Lt.paint_symbol[\"text-color\"],{runtimeType:Ut,getOverride:function(t){return t.textColor},hasOverride:function(t){return!!t.textColor}}),\"text-halo-color\":new Ti(Lt.paint_symbol[\"text-halo-color\"]),\"text-halo-width\":new Ti(Lt.paint_symbol[\"text-halo-width\"]),\"text-halo-blur\":new Ti(Lt.paint_symbol[\"text-halo-blur\"]),\"text-translate\":new wi(Lt.paint_symbol[\"text-translate\"]),\"text-translate-anchor\":new wi(Lt.paint_symbol[\"text-translate-anchor\"])}),layout:Sc},Lc=function(t){this.type=t.property.overrides?t.property.overrides.runtimeType:Ft,this.defaultValue=t};Lc.prototype.evaluate=function(t){if(t.formattedSection){var e=this.defaultValue.property.overrides;if(e&&e.hasOverride(t.formattedSection))return e.getOverride(t.formattedSection)}return t.feature&&t.featureState?this.defaultValue.evaluate(t.feature,t.featureState):this.defaultValue.property.specification.default},Lc.prototype.eachChild=function(t){this.defaultValue.isConstant()||t(this.defaultValue.value._styleExpression.expression)},Lc.prototype.outputDefined=function(){return!1},Lc.prototype.serialize=function(){return null},Nn(\"FormatSectionOverride\",Lc,{omit:[\"defaultValue\"]});var Cc=function(t){function e(e){t.call(this,e,Ec)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.recalculate=function(e,r){if(t.prototype.recalculate.call(this,e,r),\"auto\"===this.layout.get(\"icon-rotation-alignment\")&&(\"point\"!==this.layout.get(\"symbol-placement\")?this.layout._values[\"icon-rotation-alignment\"]=\"map\":this.layout._values[\"icon-rotation-alignment\"]=\"viewport\"),\"auto\"===this.layout.get(\"text-rotation-alignment\")&&(\"point\"!==this.layout.get(\"symbol-placement\")?this.layout._values[\"text-rotation-alignment\"]=\"map\":this.layout._values[\"text-rotation-alignment\"]=\"viewport\"),\"auto\"===this.layout.get(\"text-pitch-alignment\")&&(this.layout._values[\"text-pitch-alignment\"]=this.layout.get(\"text-rotation-alignment\")),\"auto\"===this.layout.get(\"icon-pitch-alignment\")&&(this.layout._values[\"icon-pitch-alignment\"]=this.layout.get(\"icon-rotation-alignment\")),\"point\"===this.layout.get(\"symbol-placement\")){var n=this.layout.get(\"text-writing-mode\");if(n){for(var i=[],a=0,o=n;a\",targetMapId:n,sourceMapId:a.mapId})}}},qc.prototype.receive=function(t){var e=t.data,r=e.id;if(r&&(!e.targetMapId||this.mapId===e.targetMapId))if(\"\"===e.type){delete this.tasks[r];var n=this.cancelCallbacks[r];delete this.cancelCallbacks[r],n&&n()}else k()||e.mustQueue?(this.tasks[r]=e,this.taskQueue.push(r),this.invoker.trigger()):this.processTask(r,e)},qc.prototype.process=function(){if(this.taskQueue.length){var t=this.taskQueue.shift(),e=this.tasks[t];delete this.tasks[t],this.taskQueue.length&&this.invoker.trigger(),e&&this.processTask(t,e)}},qc.prototype.processTask=function(t,e){var r=this;if(\"\"===e.type){var n=this.callbacks[t];delete this.callbacks[t],n&&(e.error?n(qn(e.error)):n(null,qn(e.data)))}else{var i=!1,a=S(this.globalScope)?void 0:[],o=e.hasCallback?function(e,n){i=!0,delete r.cancelCallbacks[t],r.target.postMessage({id:t,type:\"\",sourceMapId:r.mapId,error:e?Hn(e):null,data:Hn(n,a)},a)}:function(t){i=!0},s=null,l=qn(e.data);if(this.parent[e.type])s=this.parent[e.type](e.sourceMapId,l,o);else if(this.parent.getWorkerSource){var c=e.type.split(\".\");s=this.parent.getWorkerSource(e.sourceMapId,c[0],l.source)[c[1]](l,o)}else o(new Error(\"Could not find function \"+e.type));!i&&s&&s.cancel&&(this.cancelCallbacks[t]=s.cancel)}},qc.prototype.remove=function(){this.invoker.remove(),this.target.removeEventListener(\"message\",this.receive,!1)};var Yc=function(t,e){t&&(e?this.setSouthWest(t).setNorthEast(e):4===t.length?this.setSouthWest([t[0],t[1]]).setNorthEast([t[2],t[3]]):this.setSouthWest(t[0]).setNorthEast(t[1]))};Yc.prototype.setNorthEast=function(t){return this._ne=t instanceof Wc?new Wc(t.lng,t.lat):Wc.convert(t),this},Yc.prototype.setSouthWest=function(t){return this._sw=t instanceof Wc?new Wc(t.lng,t.lat):Wc.convert(t),this},Yc.prototype.extend=function(t){var e,r,n=this._sw,i=this._ne;if(t instanceof Wc)e=t,r=t;else{if(!(t instanceof Yc)){if(Array.isArray(t)){if(4===t.length||t.every(Array.isArray)){var a=t;return this.extend(Yc.convert(a))}var o=t;return this.extend(Wc.convert(o))}return this}if(e=t._sw,r=t._ne,!e||!r)return this}return n||i?(n.lng=Math.min(e.lng,n.lng),n.lat=Math.min(e.lat,n.lat),i.lng=Math.max(r.lng,i.lng),i.lat=Math.max(r.lat,i.lat)):(this._sw=new Wc(e.lng,e.lat),this._ne=new Wc(r.lng,r.lat)),this},Yc.prototype.getCenter=function(){return new Wc((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)},Yc.prototype.getSouthWest=function(){return this._sw},Yc.prototype.getNorthEast=function(){return this._ne},Yc.prototype.getNorthWest=function(){return new Wc(this.getWest(),this.getNorth())},Yc.prototype.getSouthEast=function(){return new Wc(this.getEast(),this.getSouth())},Yc.prototype.getWest=function(){return this._sw.lng},Yc.prototype.getSouth=function(){return this._sw.lat},Yc.prototype.getEast=function(){return this._ne.lng},Yc.prototype.getNorth=function(){return this._ne.lat},Yc.prototype.toArray=function(){return[this._sw.toArray(),this._ne.toArray()]},Yc.prototype.toString=function(){return\"LngLatBounds(\"+this._sw.toString()+\", \"+this._ne.toString()+\")\"},Yc.prototype.isEmpty=function(){return!(this._sw&&this._ne)},Yc.prototype.contains=function(t){var e=Wc.convert(t),r=e.lng,n=e.lat,i=this._sw.lat<=n&&n<=this._ne.lat,a=this._sw.lng<=r&&r<=this._ne.lng;return this._sw.lng>this._ne.lng&&(a=this._sw.lng>=r&&r>=this._ne.lng),i&&a},Yc.convert=function(t){return!t||t instanceof Yc?t:new Yc(t)};var Wc=function(t,e){if(isNaN(t)||isNaN(e))throw new Error(\"Invalid LngLat object: (\"+t+\", \"+e+\")\");if(this.lng=+t,this.lat=+e,this.lat>90||this.lat<-90)throw new Error(\"Invalid LngLat latitude value: must be between -90 and 90\")};Wc.prototype.wrap=function(){return new Wc(c(this.lng,-180,180),this.lat)},Wc.prototype.toArray=function(){return[this.lng,this.lat]},Wc.prototype.toString=function(){return\"LngLat(\"+this.lng+\", \"+this.lat+\")\"},Wc.prototype.distanceTo=function(t){var e=Math.PI/180,r=this.lat*e,n=t.lat*e,i=Math.sin(r)*Math.sin(n)+Math.cos(r)*Math.cos(n)*Math.cos((t.lng-this.lng)*e);return 6371008.8*Math.acos(Math.min(i,1))},Wc.prototype.toBounds=function(t){void 0===t&&(t=0);var e=360*t/40075017,r=e/Math.cos(Math.PI/180*this.lat);return new Yc(new Wc(this.lng-r,this.lat-e),new Wc(this.lng+r,this.lat+e))},Wc.convert=function(t){if(t instanceof Wc)return t;if(Array.isArray(t)&&(2===t.length||3===t.length))return new Wc(Number(t[0]),Number(t[1]));if(!Array.isArray(t)&&\"object\"==typeof t&&null!==t)return new Wc(Number(\"lng\"in t?t.lng:t.lon),Number(t.lat));throw new Error(\"`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]\")};var Xc=2*Math.PI*6371008.8;function Zc(t){return Xc*Math.cos(t*Math.PI/180)}function Jc(t){return(180+t)/360}function Kc(t){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t*Math.PI/360)))/360}function Qc(t,e){return t/Zc(e)}function $c(t){var e=180-360*t;return 360/Math.PI*Math.atan(Math.exp(e*Math.PI/180))-90}var tu=function(t,e,r){void 0===r&&(r=0),this.x=+t,this.y=+e,this.z=+r};tu.fromLngLat=function(t,e){void 0===e&&(e=0);var r=Wc.convert(t);return new tu(Jc(r.lng),Kc(r.lat),Qc(e,r.lat))},tu.prototype.toLngLat=function(){return new Wc(360*this.x-180,$c(this.y))},tu.prototype.toAltitude=function(){return t=this.z,e=this.y,t*Zc($c(e));var t,e},tu.prototype.meterInMercatorCoordinateUnits=function(){return 1/Xc*(t=$c(this.y),1/Math.cos(t*Math.PI/180));var t};var eu=function(t,e,r){this.z=t,this.x=e,this.y=r,this.key=iu(0,t,t,e,r)};eu.prototype.equals=function(t){return this.z===t.z&&this.x===t.x&&this.y===t.y},eu.prototype.url=function(t,e){var r,n,i,a,o,s=(r=this.x,n=this.y,i=this.z,a=Gc(256*r,256*(n=Math.pow(2,i)-n-1),i),o=Gc(256*(r+1),256*(n+1),i),a[0]+\",\"+a[1]+\",\"+o[0]+\",\"+o[1]),l=function(t,e,r){for(var n,i=\"\",a=t;a>0;a--)i+=(e&(n=1<this.canonical.z?new nu(t,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new nu(t,this.wrap,t,this.canonical.x>>e,this.canonical.y>>e)},nu.prototype.calculateScaledKey=function(t,e){var r=this.canonical.z-t;return t>this.canonical.z?iu(this.wrap*+e,t,this.canonical.z,this.canonical.x,this.canonical.y):iu(this.wrap*+e,t,t,this.canonical.x>>r,this.canonical.y>>r)},nu.prototype.isChildOf=function(t){if(t.wrap!==this.wrap)return!1;var e=this.canonical.z-t.canonical.z;return 0===t.overscaledZ||t.overscaledZ>e&&t.canonical.y===this.canonical.y>>e},nu.prototype.children=function(t){if(this.overscaledZ>=t)return[new nu(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];var e=this.canonical.z+1,r=2*this.canonical.x,n=2*this.canonical.y;return[new nu(e,this.wrap,e,r,n),new nu(e,this.wrap,e,r+1,n),new nu(e,this.wrap,e,r,n+1),new nu(e,this.wrap,e,r+1,n+1)]},nu.prototype.isLessThan=function(t){return this.wrapt.wrap)&&(this.overscaledZt.overscaledZ)&&(this.canonical.xt.canonical.x)&&this.canonical.y=this.dim+1||e<-1||e>=this.dim+1)throw new RangeError(\"out of range source coordinates for DEM data\");return(e+1)*this.stride+(t+1)},au.prototype._unpackMapbox=function(t,e,r){return(256*t*256+256*e+r)/10-1e4},au.prototype._unpackTerrarium=function(t,e,r){return 256*t+e+r/256-32768},au.prototype.getPixels=function(){return new Eo({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))},au.prototype.backfillBorder=function(t,e,r){if(this.dim!==t.dim)throw new Error(\"dem dimension mismatch\");var n=e*this.dim,i=e*this.dim+this.dim,a=r*this.dim,o=r*this.dim+this.dim;switch(e){case-1:n=i-1;break;case 1:i=n+1}switch(r){case-1:a=o-1;break;case 1:o=a+1}for(var s=-e*this.dim,l=-r*this.dim,c=a;c=0&&u[3]>=0&&s.insert(o,u[0],u[1],u[2],u[3])}},uu.prototype.loadVTLayers=function(){return this.vtLayers||(this.vtLayers=new Ls.VectorTile(new al(this.rawTileData)).layers,this.sourceLayerCoder=new ou(this.vtLayers?Object.keys(this.vtLayers).sort():[\"_geojsonTileLayer\"])),this.vtLayers},uu.prototype.query=function(t,e,r,n){var a=this;this.loadVTLayers();for(var o=t.params||{},s=8192/t.tileSize/t.scale,l=sn(o.filter),c=t.queryGeometry,u=t.queryPadding*s,f=hu(c),h=this.grid.query(f.minX-u,f.minY-u,f.maxX+u,f.maxY+u),p=hu(t.cameraQueryGeometry),d=this.grid3D.query(p.minX-u,p.minY-u,p.maxX+u,p.maxY+u,(function(e,r,n,a){return function(t,e,r,n,a){for(var o=0,s=t;o=l.x&&a>=l.y)return!0}var c=[new i(e,r),new i(e,a),new i(n,a),new i(n,r)];if(t.length>2)for(var u=0,f=c;u=0)return!0;return!1}(a,f)){var h=this.sourceLayerCoder.decode(r),p=this.vtLayers[h].feature(n);if(i.filter(new pi(this.tileID.overscaledZ),p))for(var d=this.getId(p,h),g=0;gn)i=!1;else if(e)if(this.expirationTimeot&&(t.getActor().send(\"enforceCacheSizeLimit\",at),ht=0)},t.clamp=l,t.clearTileCache=function(t){var e=self.caches.delete(\"mapbox-tiles\");t&&e.catch(t).then((function(){return t()}))},t.clipLine=ec,t.clone=function(t){var e=new fo(16);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e},t.clone$1=x,t.clone$2=function(t){var e=new fo(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e},t.collisionCircleLayout=tl,t.config=F,t.create=function(){var t=new fo(16);return fo!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0),t[0]=1,t[5]=1,t[10]=1,t[15]=1,t},t.create$1=function(){var t=new fo(9);return fo!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[5]=0,t[6]=0,t[7]=0),t[0]=1,t[4]=1,t[8]=1,t},t.create$2=function(){var t=new fo(4);return fo!=Float32Array&&(t[1]=0,t[2]=0),t[0]=1,t[3]=1,t},t.createCommonjsModule=e,t.createExpression=Wr,t.createLayout=Ii,t.createStyleLayer=function(t){return\"custom\"===t.type?new Dc(t):new Rc[t.type](t)},t.cross=function(t,e,r){var n=e[0],i=e[1],a=e[2],o=r[0],s=r[1],l=r[2];return t[0]=i*l-a*s,t[1]=a*o-n*l,t[2]=n*s-i*o,t},t.deepEqual=function t(e,r){if(Array.isArray(e)){if(!Array.isArray(r)||e.length!==r.length)return!1;for(var n=0;n0&&(a=1/Math.sqrt(a)),t[0]=e[0]*a,t[1]=e[1]*a,t[2]=e[2]*a,t},t.number=qe,t.offscreenCanvasSupported=pt,t.ortho=function(t,e,r,n,i,a,o){var s=1/(e-r),l=1/(n-i),c=1/(a-o);return t[0]=-2*s,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*l,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*c,t[11]=0,t[12]=(e+r)*s,t[13]=(i+n)*l,t[14]=(o+a)*c,t[15]=1,t},t.parseGlyphPBF=function(t){return new al(t).readFields(Tl,[])},t.pbf=al,t.performSymbolLayout=function(t,e,r,n,i,a,o){t.createArrays();var s=512*t.overscaling;t.tilePixelRatio=8192/s,t.compareText={},t.iconsNeedLinear=!1;var l=t.layers[0].layout,c=t.layers[0]._unevaluatedLayout._values,u={};if(\"composite\"===t.textSizeData.kind){var f=t.textSizeData,h=f.minZoom,p=f.maxZoom;u.compositeTextSizes=[c[\"text-size\"].possiblyEvaluate(new pi(h),o),c[\"text-size\"].possiblyEvaluate(new pi(p),o)]}if(\"composite\"===t.iconSizeData.kind){var d=t.iconSizeData,g=d.minZoom,m=d.maxZoom;u.compositeIconSizes=[c[\"icon-size\"].possiblyEvaluate(new pi(g),o),c[\"icon-size\"].possiblyEvaluate(new pi(m),o)]}u.layoutTextSize=c[\"text-size\"].possiblyEvaluate(new pi(t.zoom+1),o),u.layoutIconSize=c[\"icon-size\"].possiblyEvaluate(new pi(t.zoom+1),o),u.textMaxSize=c[\"text-size\"].possiblyEvaluate(new pi(18));for(var v=24*l.get(\"text-line-height\"),y=\"map\"===l.get(\"text-rotation-alignment\")&&\"point\"!==l.get(\"symbol-placement\"),x=l.get(\"text-keep-upright\"),b=l.get(\"text-size\"),w=function(){var a=k[T],s=l.get(\"text-font\").evaluate(a,{},o).join(\",\"),c=b.evaluate(a,{},o),f=u.layoutTextSize.evaluate(a,{},o),h=u.layoutIconSize.evaluate(a,{},o),p={horizontal:{},vertical:void 0},d=a.text,g=[0,0];if(d){var m=d.toString(),w=24*l.get(\"text-letter-spacing\").evaluate(a,{},o),A=function(t){for(var e=0,r=t;e=8192||f.y<0||f.y>=8192||function(t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m,v,y,x,b,w,T,k,A){var M,S,E,L,C,P=t.addToLineVertexArray(e,r),I=0,O=0,z=0,D=0,R=-1,F=-1,B={},N=ya(\"\"),j=0,U=0;void 0===s._unevaluatedLayout.getValue(\"text-radial-offset\")?(M=s.layout.get(\"text-offset\").evaluate(b,{},k).map((function(t){return 24*t})),j=M[0],U=M[1]):(j=24*s.layout.get(\"text-radial-offset\").evaluate(b,{},k),U=pc);if(t.allowVerticalPlacement&&n.vertical){var V=s.layout.get(\"text-rotate\").evaluate(b,{},k)+90,H=n.vertical;L=new sc(l,e,c,u,f,H,h,p,d,V),o&&(C=new sc(l,e,c,u,f,o,m,v,d,V))}if(i){var q=s.layout.get(\"icon-rotate\").evaluate(b,{}),G=\"none\"!==s.layout.get(\"icon-text-fit\"),Y=rc(i,q,T,G),W=o?rc(o,q,T,G):void 0;E=new sc(l,e,c,u,f,i,m,v,!1,q),I=4*Y.length;var X=t.iconSizeData,Z=null;\"source\"===X.kind?(Z=[128*s.layout.get(\"icon-size\").evaluate(b,{})])[0]>32640&&_(t.layerIds[0]+': Value for \"icon-size\" is >= 255. Reduce your \"icon-size\".'):\"composite\"===X.kind&&((Z=[128*w.compositeIconSizes[0].evaluate(b,{},k),128*w.compositeIconSizes[1].evaluate(b,{},k)])[0]>32640||Z[1]>32640)&&_(t.layerIds[0]+': Value for \"icon-size\" is >= 255. Reduce your \"icon-size\".'),t.addSymbols(t.icon,Y,Z,x,y,b,!1,e,P.lineStartIndex,P.lineLength,-1,k),R=t.icon.placedSymbolArray.length-1,W&&(O=4*W.length,t.addSymbols(t.icon,W,Z,x,y,b,Cl.vertical,e,P.lineStartIndex,P.lineLength,-1,k),F=t.icon.placedSymbolArray.length-1)}for(var J in n.horizontal){var K=n.horizontal[J];if(!S){N=ya(K.text);var Q=s.layout.get(\"text-rotate\").evaluate(b,{},k);S=new sc(l,e,c,u,f,K,h,p,d,Q)}var $=1===K.positionedLines.length;if(z+=mc(t,e,K,a,s,d,b,g,P,n.vertical?Cl.horizontal:Cl.horizontalOnly,$?Object.keys(n.horizontal):[J],B,R,w,k),$)break}n.vertical&&(D+=mc(t,e,n.vertical,a,s,d,b,g,P,Cl.vertical,[\"vertical\"],B,F,w,k));var tt=S?S.boxStartIndex:t.collisionBoxArray.length,et=S?S.boxEndIndex:t.collisionBoxArray.length,rt=L?L.boxStartIndex:t.collisionBoxArray.length,nt=L?L.boxEndIndex:t.collisionBoxArray.length,it=E?E.boxStartIndex:t.collisionBoxArray.length,at=E?E.boxEndIndex:t.collisionBoxArray.length,ot=C?C.boxStartIndex:t.collisionBoxArray.length,st=C?C.boxEndIndex:t.collisionBoxArray.length,lt=-1,ct=function(t,e){return t&&t.circleDiameter?Math.max(t.circleDiameter,e):e};lt=ct(S,lt),lt=ct(L,lt),lt=ct(E,lt);var ut=(lt=ct(C,lt))>-1?1:0;ut&&(lt*=A/24);t.glyphOffsetArray.length>=Mc.MAX_GLYPHS&&_(\"Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907\");void 0!==b.sortKey&&t.addToSortKeyRanges(t.symbolInstances.length,b.sortKey);t.symbolInstances.emplaceBack(e.x,e.y,B.right>=0?B.right:-1,B.center>=0?B.center:-1,B.left>=0?B.left:-1,B.vertical||-1,R,F,N,tt,et,rt,nt,it,at,ot,st,c,z,D,I,O,ut,0,h,j,U,lt)}(t,f,s,r,n,i,h,t.layers[0],t.collisionBoxArray,e.index,e.sourceLayerIndex,t.index,v,w,A,l,x,T,M,d,e,a,c,u,o)};if(\"line\"===S)for(var P=0,I=ec(e.geometry,0,0,8192,8192);P1){var V=$l(U,k,r.vertical||g,n,24,y);V&&C(U,V)}}else if(\"Polygon\"===e.type)for(var H=0,q=hs(e.geometry,0);H=E.maxzoom))if(\"none\"!==E.visibility)o(S,this.zoom,n),(g[E.id]=E.createBucket({index:u.bucketLayerIDs.length,layers:S,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:b,sourceID:this.source})).populate(_,m,this.tileID.canonical),u.bucketLayerIDs.push(S.map((function(t){return t.id})))}}}var L=t.mapObject(m.glyphDependencies,(function(t){return Object.keys(t).map(Number)}));Object.keys(L).length?a.send(\"getGlyphs\",{uid:this.uid,stacks:L},(function(t,e){f||(f=t,h=e,I.call(l))})):h={};var C=Object.keys(m.iconDependencies);C.length?a.send(\"getImages\",{icons:C,source:this.source,tileID:this.tileID,type:\"icons\"},(function(t,e){f||(f=t,p=e,I.call(l))})):p={};var P=Object.keys(m.patternDependencies);function I(){if(f)return s(f);if(h&&p&&d){var e=new i(h),r=new t.ImageAtlas(p,d);for(var a in g){var l=g[a];l instanceof t.SymbolBucket?(o(l.layers,this.zoom,n),t.performSymbolLayout(l,h,e.positions,p,r.iconPositions,this.showCollisionBoxes,this.tileID.canonical)):l.hasPattern&&(l instanceof t.LineBucket||l instanceof t.FillBucket||l instanceof t.FillExtrusionBucket)&&(o(l.layers,this.zoom,n),l.addFeatures(m,this.tileID.canonical,r.patternPositions))}this.status=\"done\",s(null,{buckets:t.values(g).filter((function(t){return!t.isEmpty()})),featureIndex:u,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:e.image,imageAtlas:r,glyphMap:this.returnDependencies?h:null,iconMap:this.returnDependencies?p:null,glyphPositions:this.returnDependencies?e.positions:null})}}P.length?a.send(\"getImages\",{icons:P,source:this.source,tileID:this.tileID,type:\"patterns\"},(function(t,e){f||(f=t,d=e,I.call(l))})):d={},I.call(this)};var l=function(t,e,r,n){this.actor=t,this.layerIndex=e,this.availableImages=r,this.loadVectorData=n||s,this.loading={},this.loaded={}};l.prototype.loadTile=function(e,r){var n=this,i=e.uid;this.loading||(this.loading={});var o=!!(e&&e.request&&e.request.collectResourceTiming)&&new t.RequestPerformance(e.request),s=this.loading[i]=new a(e);s.abort=this.loadVectorData(e,(function(e,a){if(delete n.loading[i],e||!a)return s.status=\"done\",n.loaded[i]=s,r(e);var l=a.rawData,c={};a.expires&&(c.expires=a.expires),a.cacheControl&&(c.cacheControl=a.cacheControl);var u={};if(o){var f=o.finish();f&&(u.resourceTiming=JSON.parse(JSON.stringify(f)))}s.vectorTile=a.vectorTile,s.parse(a.vectorTile,n.layerIndex,n.availableImages,n.actor,(function(e,n){if(e||!n)return r(e);r(null,t.extend({rawTileData:l.slice(0)},n,c,u))})),n.loaded=n.loaded||{},n.loaded[i]=s}))},l.prototype.reloadTile=function(t,e){var r=this,n=this.loaded,i=t.uid,a=this;if(n&&n[i]){var o=n[i];o.showCollisionBoxes=t.showCollisionBoxes;var s=function(t,n){var i=o.reloadCallback;i&&(delete o.reloadCallback,o.parse(o.vectorTile,a.layerIndex,r.availableImages,a.actor,i)),e(t,n)};\"parsing\"===o.status?o.reloadCallback=s:\"done\"===o.status&&(o.vectorTile?o.parse(o.vectorTile,this.layerIndex,this.availableImages,this.actor,s):s())}},l.prototype.abortTile=function(t,e){var r=this.loading,n=t.uid;r&&r[n]&&r[n].abort&&(r[n].abort(),delete r[n]),e()},l.prototype.removeTile=function(t,e){var r=this.loaded,n=t.uid;r&&r[n]&&delete r[n],e()};var c=t.window.ImageBitmap,u=function(){this.loaded={}};u.prototype.loadTile=function(e,r){var n=e.uid,i=e.encoding,a=e.rawImageData,o=c&&a instanceof c?this.getImageData(a):a,s=new t.DEMData(n,o,i);this.loaded=this.loaded||{},this.loaded[n]=s,r(null,s)},u.prototype.getImageData=function(e){this.offscreenCanvas&&this.offscreenCanvasContext||(this.offscreenCanvas=new OffscreenCanvas(e.width,e.height),this.offscreenCanvasContext=this.offscreenCanvas.getContext(\"2d\")),this.offscreenCanvas.width=e.width,this.offscreenCanvas.height=e.height,this.offscreenCanvasContext.drawImage(e,0,0,e.width,e.height);var r=this.offscreenCanvasContext.getImageData(-1,-1,e.width+2,e.height+2);return this.offscreenCanvasContext.clearRect(0,0,this.offscreenCanvas.width,this.offscreenCanvas.height),new t.RGBAImage({width:r.width,height:r.height},r.data)},u.prototype.removeTile=function(t){var e=this.loaded,r=t.uid;e&&e[r]&&delete e[r]};var f=function t(e,r){var n,i=e&&e.type;if(\"FeatureCollection\"===i)for(n=0;n=0!=!!e&&t.reverse()}var d=t.vectorTile.VectorTileFeature.prototype.toGeoJSON,g=function(e){this._feature=e,this.extent=t.EXTENT,this.type=e.type,this.properties=e.tags,\"id\"in e&&!isNaN(e.id)&&(this.id=parseInt(e.id,10))};g.prototype.loadGeometry=function(){if(1===this._feature.type){for(var e=[],r=0,n=this._feature.geometry;r>31}function P(t,e){for(var r=t.loadGeometry(),n=t.type,i=0,a=0,o=r.length,s=0;s>1;!function t(e,r,n,i,a,o){for(;a>i;){if(a-i>600){var s=a-i+1,l=n-i+1,c=Math.log(s),u=.5*Math.exp(2*c/3),f=.5*Math.sqrt(c*u*(s-u)/s)*(l-s/2<0?-1:1),h=Math.max(i,Math.floor(n-l*u/s+f)),p=Math.min(a,Math.floor(n+(s-l)*u/s+f));t(e,r,n,h,p,o)}var d=r[2*n+o],g=i,m=a;for(z(e,r,i,n),r[2*a+o]>d&&z(e,r,i,a);gd;)m--}r[2*i+o]===d?z(e,r,i,m):(m++,z(e,r,m,a)),m<=n&&(i=m+1),n<=m&&(a=m-1)}}(t,e,o,n,i,a%2),O(t,e,r,n,o-1,a+1),O(t,e,r,o+1,i,a+1)}}function z(t,e,r,n){D(t,r,n),D(e,2*r,2*n),D(e,2*r+1,2*n+1)}function D(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function R(t,e,r,n){var i=t-r,a=e-n;return i*i+a*a}_.fromVectorTileJs=w,_.fromGeojsonVt=T,_.GeoJSONWrapper=k;var F=function(t){return t[0]},B=function(t){return t[1]},N=function(t,e,r,n,i){void 0===e&&(e=F),void 0===r&&(r=B),void 0===n&&(n=64),void 0===i&&(i=Float64Array),this.nodeSize=n,this.points=t;for(var a=t.length<65536?Uint16Array:Uint32Array,o=this.ids=new a(t.length),s=this.coords=new i(2*t.length),l=0;l=r&&s<=i&&l>=n&&l<=a&&u.push(t[d]);else{var g=Math.floor((p+h)/2);s=e[2*g],l=e[2*g+1],s>=r&&s<=i&&l>=n&&l<=a&&u.push(t[g]);var m=(f+1)%2;(0===f?r<=s:n<=l)&&(c.push(p),c.push(g-1),c.push(m)),(0===f?i>=s:a>=l)&&(c.push(g+1),c.push(h),c.push(m))}}return u}(this.ids,this.coords,t,e,r,n,this.nodeSize)},N.prototype.within=function(t,e,r){return function(t,e,r,n,i,a){for(var o=[0,t.length-1,0],s=[],l=i*i;o.length;){var c=o.pop(),u=o.pop(),f=o.pop();if(u-f<=a)for(var h=f;h<=u;h++)R(e[2*h],e[2*h+1],r,n)<=l&&s.push(t[h]);else{var p=Math.floor((f+u)/2),d=e[2*p],g=e[2*p+1];R(d,g,r,n)<=l&&s.push(t[p]);var m=(c+1)%2;(0===c?r-i<=d:n-i<=g)&&(o.push(f),o.push(p-1),o.push(m)),(0===c?r+i>=d:n+i>=g)&&(o.push(p+1),o.push(u),o.push(m))}}return s}(this.ids,this.coords,t,e,r,this.nodeSize)};var j={minZoom:0,maxZoom:16,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:function(t){return t}},U=function(t){this.options=X(Object.create(j),t),this.trees=new Array(this.options.maxZoom+1)};function V(t,e,r,n,i){return{x:t,y:e,zoom:1/0,id:r,parentId:-1,numPoints:n,properties:i}}function H(t,e){var r=t.geometry.coordinates,n=r[0],i=r[1];return{x:Y(n),y:W(i),zoom:1/0,index:e,parentId:-1}}function q(t){return{type:\"Feature\",id:t.id,properties:G(t),geometry:{type:\"Point\",coordinates:[(n=t.x,360*(n-.5)),(e=t.y,r=(180-360*e)*Math.PI/180,360*Math.atan(Math.exp(r))/Math.PI-90)]}};var e,r,n}function G(t){var e=t.numPoints,r=e>=1e4?Math.round(e/1e3)+\"k\":e>=1e3?Math.round(e/100)/10+\"k\":e;return X(X({},t.properties),{cluster:!0,cluster_id:t.id,point_count:e,point_count_abbreviated:r})}function Y(t){return t/360+.5}function W(t){var e=Math.sin(t*Math.PI/180),r=.5-.25*Math.log((1+e)/(1-e))/Math.PI;return r<0?0:r>1?1:r}function X(t,e){for(var r in e)t[r]=e[r];return t}function Z(t){return t.x}function J(t){return t.y}function K(t,e,r,n,i,a){var o=i-r,s=a-n;if(0!==o||0!==s){var l=((t-r)*o+(e-n)*s)/(o*o+s*s);l>1?(r=i,n=a):l>0&&(r+=o*l,n+=s*l)}return(o=t-r)*o+(s=e-n)*s}function Q(t,e,r,n){var i={id:void 0===t?null:t,type:e,geometry:r,tags:n,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return function(t){var e=t.geometry,r=t.type;if(\"Point\"===r||\"MultiPoint\"===r||\"LineString\"===r)$(t,e);else if(\"Polygon\"===r||\"MultiLineString\"===r)for(var n=0;n0&&(o+=n?(i*c-l*a)/2:Math.sqrt(Math.pow(l-i,2)+Math.pow(c-a,2))),i=l,a=c}var u=e.length-3;e[2]=1,function t(e,r,n,i){for(var a,o=i,s=n-r>>1,l=n-r,c=e[r],u=e[r+1],f=e[n],h=e[n+1],p=r+3;po)a=p,o=d;else if(d===o){var g=Math.abs(p-s);gi&&(a-r>3&&t(e,r,a,i),e[a+2]=o,n-a>3&&t(e,a,n,i))}(e,0,u,r),e[u+2]=1,e.size=Math.abs(o),e.start=0,e.end=e.size}function nt(t,e,r,n){for(var i=0;i1?1:r}function ot(t,e,r,n,i,a,o,s){if(n/=e,a>=(r/=e)&&o=n)return null;for(var l=[],c=0;c=r&&d=n)){var g=[];if(\"Point\"===h||\"MultiPoint\"===h)st(f,g,r,n,i);else if(\"LineString\"===h)lt(f,g,r,n,i,!1,s.lineMetrics);else if(\"MultiLineString\"===h)ut(f,g,r,n,i,!1);else if(\"Polygon\"===h)ut(f,g,r,n,i,!0);else if(\"MultiPolygon\"===h)for(var m=0;m=r&&o<=n&&(e.push(t[a]),e.push(t[a+1]),e.push(t[a+2]))}}function lt(t,e,r,n,i,a,o){for(var s,l,c=ct(t),u=0===i?ht:pt,f=t.start,h=0;hr&&(l=u(c,p,d,m,v,r),o&&(c.start=f+s*l)):y>n?x=r&&(l=u(c,p,d,m,v,r),b=!0),x>n&&y<=n&&(l=u(c,p,d,m,v,n),b=!0),!a&&b&&(o&&(c.end=f+s*l),e.push(c),c=ct(t)),o&&(f+=s)}var _=t.length-3;p=t[_],d=t[_+1],g=t[_+2],(y=0===i?p:d)>=r&&y<=n&&ft(c,p,d,g),_=c.length-3,a&&_>=3&&(c[_]!==c[0]||c[_+1]!==c[1])&&ft(c,c[0],c[1],c[2]),c.length&&e.push(c)}function ct(t){var e=[];return e.size=t.size,e.start=t.start,e.end=t.end,e}function ut(t,e,r,n,i,a){for(var o=0;oo.maxX&&(o.maxX=u),f>o.maxY&&(o.maxY=f)}return o}function xt(t,e,r,n){var i=e.geometry,a=e.type,o=[];if(\"Point\"===a||\"MultiPoint\"===a)for(var s=0;s0&&e.size<(i?o:n))r.numPoints+=e.length/3;else{for(var s=[],l=0;lo)&&(r.numSimplified++,s.push(e[l]),s.push(e[l+1])),r.numPoints++;i&&function(t,e){for(var r=0,n=0,i=t.length,a=i-2;n0===e)for(n=0,i=t.length;n24)throw new Error(\"maxZoom should be in the 0-24 range\");if(e.promoteId&&e.generateId)throw new Error(\"promoteId and generateId cannot be used together.\");var n=function(t,e){var r=[];if(\"FeatureCollection\"===t.type)for(var n=0;n=n;c--){var u=+Date.now();s=this._cluster(s,c),this.trees[c]=new N(s,Z,J,a,Float32Array),r&&console.log(\"z%d: %d clusters in %dms\",c,s.length,+Date.now()-u)}return r&&console.timeEnd(\"total time\"),this},U.prototype.getClusters=function(t,e){var r=((t[0]+180)%360+360)%360-180,n=Math.max(-90,Math.min(90,t[1])),i=180===t[2]?180:((t[2]+180)%360+360)%360-180,a=Math.max(-90,Math.min(90,t[3]));if(t[2]-t[0]>=360)r=-180,i=180;else if(r>i){var o=this.getClusters([r,n,180,a],e),s=this.getClusters([-180,n,i,a],e);return o.concat(s)}for(var l=this.trees[this._limitZoom(e)],c=[],u=0,f=l.range(Y(r),W(a),Y(i),W(n));u1?this._map(c,!0):null,m=(l<<5)+(e+1)+this.points.length,v=0,y=f;v>5},U.prototype._getOriginZoom=function(t){return(t-this.points.length)%32},U.prototype._map=function(t,e){if(t.numPoints)return e?X({},t.properties):t.properties;var r=this.points[t.index].properties,n=this.options.map(r);return e&&n===r?X({},n):n},_t.prototype.options={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,tolerance:3,extent:4096,buffer:64,lineMetrics:!1,promoteId:null,generateId:!1,debug:0},_t.prototype.splitTile=function(t,e,r,n,i,a,o){for(var s=[t,e,r,n],l=this.options,c=l.debug;s.length;){n=s.pop(),r=s.pop(),e=s.pop(),t=s.pop();var u=1<1&&console.time(\"creation\"),h=this.tiles[f]=yt(t,e,r,n,l),this.tileCoords.push({z:e,x:r,y:n}),c)){c>1&&(console.log(\"tile z%d-%d-%d (features: %d, points: %d, simplified: %d)\",e,r,n,h.numFeatures,h.numPoints,h.numSimplified),console.timeEnd(\"creation\"));var p=\"z\"+e;this.stats[p]=(this.stats[p]||0)+1,this.total++}if(h.source=t,i){if(e===l.maxZoom||e===i)continue;var d=1<1&&console.time(\"clipping\");var g,m,v,y,x,b,_=.5*l.buffer/l.extent,w=.5-_,T=.5+_,k=1+_;g=m=v=y=null,x=ot(t,u,r-_,r+T,0,h.minX,h.maxX,l),b=ot(t,u,r+w,r+k,0,h.minX,h.maxX,l),t=null,x&&(g=ot(x,u,n-_,n+T,1,h.minY,h.maxY,l),m=ot(x,u,n+w,n+k,1,h.minY,h.maxY,l),x=null),b&&(v=ot(b,u,n-_,n+T,1,h.minY,h.maxY,l),y=ot(b,u,n+w,n+k,1,h.minY,h.maxY,l),b=null),c>1&&console.timeEnd(\"clipping\"),s.push(g||[],e+1,2*r,2*n),s.push(m||[],e+1,2*r,2*n+1),s.push(v||[],e+1,2*r+1,2*n),s.push(y||[],e+1,2*r+1,2*n+1)}}},_t.prototype.getTile=function(t,e,r){var n=this.options,i=n.extent,a=n.debug;if(t<0||t>24)return null;var o=1<1&&console.log(\"drilling down to z%d-%d-%d\",t,e,r);for(var l,c=t,u=e,f=r;!l&&c>0;)c--,u=Math.floor(u/2),f=Math.floor(f/2),l=this.tiles[wt(c,u,f)];return l&&l.source?(a>1&&console.log(\"found parent tile z%d-%d-%d\",c,u,f),a>1&&console.time(\"drilling down\"),this.splitTile(l.source,c,u,f,t,e,r),a>1&&console.timeEnd(\"drilling down\"),this.tiles[s]?mt(this.tiles[s],i):null):null};var kt=function(e){function r(t,r,n,i){e.call(this,t,r,n,Tt),i&&(this.loadGeoJSON=i)}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.loadData=function(t,e){this._pendingCallback&&this._pendingCallback(null,{abandoned:!0}),this._pendingCallback=e,this._pendingLoadDataParams=t,this._state&&\"Idle\"!==this._state?this._state=\"NeedsLoadData\":(this._state=\"Coalescing\",this._loadData())},r.prototype._loadData=function(){var e=this;if(this._pendingCallback&&this._pendingLoadDataParams){var r=this._pendingCallback,n=this._pendingLoadDataParams;delete this._pendingCallback,delete this._pendingLoadDataParams;var i=!!(n&&n.request&&n.request.collectResourceTiming)&&new t.RequestPerformance(n.request);this.loadGeoJSON(n,(function(a,o){if(a||!o)return r(a);if(\"object\"!=typeof o)return r(new Error(\"Input data given to '\"+n.source+\"' is not a valid GeoJSON object.\"));f(o,!0);try{e._geoJSONIndex=n.cluster?new U(function(e){var r=e.superclusterOptions,n=e.clusterProperties;if(!n||!r)return r;for(var i={},a={},o={accumulated:null,zoom:0},s={properties:null},l=Object.keys(n),c=0,u=l;c=0?0:e.button},r.remove=function(t){t.parentNode&&t.parentNode.removeChild(t)};var h=function(e){function r(){e.call(this),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requesters=[],this.patterns={},this.atlasImage=new t.RGBAImage({width:1,height:1}),this.dirty=!0}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.isLoaded=function(){return this.loaded},r.prototype.setLoaded=function(t){if(this.loaded!==t&&(this.loaded=t,t)){for(var e=0,r=this.requesters;e=0?1.2:1))}function v(t,e,r,n,i,a,o){for(var s=0;s65535)e(new Error(\"glyphs > 65535 not supported\"));else if(a.ranges[s])e(null,{stack:r,id:i,glyph:o});else{var l=a.requests[s];l||(l=a.requests[s]=[],x.loadGlyphRange(r,s,n.url,n.requestManager,(function(t,e){if(e){for(var r in e)n._doesCharSupportLocalGlyph(+r)||(a.glyphs[+r]=e[+r]);a.ranges[s]=!0}for(var i=0,o=l;i1&&(l=t[++s]);var u=Math.abs(c-l.left),f=Math.abs(c-l.right),h=Math.min(u,f),p=void 0,d=i/r*(n+1);if(l.isDash){var g=n-Math.abs(d);p=Math.sqrt(h*h+g*g)}else p=n-Math.sqrt(h*h+d*d);this.data[o+c]=Math.max(0,Math.min(255,p+128))}},T.prototype.addRegularDash=function(t){for(var e=t.length-1;e>=0;--e){var r=t[e],n=t[e+1];r.zeroLength?t.splice(e,1):n&&n.isDash===r.isDash&&(n.left=r.left,t.splice(e,1))}var i=t[0],a=t[t.length-1];i.isDash===a.isDash&&(i.left=a.left-this.width,a.right=i.right+this.width);for(var o=this.width*this.nextRow,s=0,l=t[s],c=0;c1&&(l=t[++s]);var u=Math.abs(c-l.left),f=Math.abs(c-l.right),h=Math.min(u,f),p=l.isDash?h:-h;this.data[o+c]=Math.max(0,Math.min(255,p+128))}},T.prototype.addDash=function(e,r){var n=r?7:0,i=2*n+1;if(this.nextRow+i>this.height)return t.warnOnce(\"LineAtlas out of space\"),null;for(var a=0,o=0;o=n&&e.x=i&&e.y0&&(l[new t.OverscaledTileID(e.overscaledZ,a,r.z,i,r.y-1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,e.wrap,r.z,r.x,r.y-1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,s,r.z,o,r.y-1).key]={backfilled:!1}),r.y+10&&(n.resourceTiming=e._resourceTiming,e._resourceTiming=[]),e.fire(new t.Event(\"data\",n))}}))},r.prototype.onAdd=function(t){this.map=t,this.load()},r.prototype.setData=function(e){var r=this;return this._data=e,this.fire(new t.Event(\"dataloading\",{dataType:\"source\"})),this._updateWorkerData((function(e){if(e)r.fire(new t.ErrorEvent(e));else{var n={dataType:\"source\",sourceDataType:\"content\"};r._collectResourceTiming&&r._resourceTiming&&r._resourceTiming.length>0&&(n.resourceTiming=r._resourceTiming,r._resourceTiming=[]),r.fire(new t.Event(\"data\",n))}})),this},r.prototype.getClusterExpansionZoom=function(t,e){return this.actor.send(\"geojson.getClusterExpansionZoom\",{clusterId:t,source:this.id},e),this},r.prototype.getClusterChildren=function(t,e){return this.actor.send(\"geojson.getClusterChildren\",{clusterId:t,source:this.id},e),this},r.prototype.getClusterLeaves=function(t,e,r,n){return this.actor.send(\"geojson.getClusterLeaves\",{source:this.id,clusterId:t,limit:e,offset:r},n),this},r.prototype._updateWorkerData=function(e){var r=this;this._loaded=!1;var n=t.extend({},this.workerOptions),i=this._data;\"string\"==typeof i?(n.request=this.map._requestManager.transformRequest(t.browser.resolveURL(i),t.ResourceType.Source),n.request.collectResourceTiming=this._collectResourceTiming):n.data=JSON.stringify(i),this.actor.send(this.type+\".loadData\",n,(function(t,i){r._removed||i&&i.abandoned||(r._loaded=!0,i&&i.resourceTiming&&i.resourceTiming[r.id]&&(r._resourceTiming=i.resourceTiming[r.id].slice(0)),r.actor.send(r.type+\".coalesce\",{source:n.source},null),e(t))}))},r.prototype.loaded=function(){return this._loaded},r.prototype.loadTile=function(e,r){var n=this,i=e.actor?\"reloadTile\":\"loadTile\";e.actor=this.actor;var a={type:this.type,uid:e.uid,tileID:e.tileID,zoom:e.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:t.browser.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};e.request=this.actor.send(i,a,(function(t,a){return delete e.request,e.unloadVectorData(),e.aborted?r(null):t?r(t):(e.loadVectorData(a,n.map.painter,\"reloadTile\"===i),r(null))}))},r.prototype.abortTile=function(t){t.request&&(t.request.cancel(),delete t.request),t.aborted=!0},r.prototype.unloadTile=function(t){t.unloadVectorData(),this.actor.send(\"removeTile\",{uid:t.uid,type:this.type,source:this.id})},r.prototype.onRemove=function(){this._removed=!0,this.actor.send(\"removeSource\",{type:this.type,source:this.id})},r.prototype.serialize=function(){return t.extend({},this._options,{type:this.type,data:this._data})},r.prototype.hasTransition=function(){return!1},r}(t.Evented),P=t.createLayout([{name:\"a_pos\",type:\"Int16\",components:2},{name:\"a_texture_pos\",type:\"Int16\",components:2}]),I=function(e){function r(t,r,n,i){e.call(this),this.id=t,this.dispatcher=n,this.coordinates=r.coordinates,this.type=\"image\",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(i),this.options=r}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.load=function(e,r){var n=this;this._loaded=!1,this.fire(new t.Event(\"dataloading\",{dataType:\"source\"})),this.url=this.options.url,t.getImage(this.map._requestManager.transformRequest(this.url,t.ResourceType.Image),(function(i,a){n._loaded=!0,i?n.fire(new t.ErrorEvent(i)):a&&(n.image=a,e&&(n.coordinates=e),r&&r(),n._finishLoading())}))},r.prototype.loaded=function(){return this._loaded},r.prototype.updateImage=function(t){var e=this;return this.image&&t.url?(this.options.url=t.url,this.load(t.coordinates,(function(){e.texture=null})),this):this},r.prototype._finishLoading=function(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new t.Event(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})))},r.prototype.onAdd=function(t){this.map=t,this.load()},r.prototype.setCoordinates=function(e){var r=this;this.coordinates=e;var n=e.map(t.MercatorCoordinate.fromLngLat);this.tileID=function(e){for(var r=1/0,n=1/0,i=-1/0,a=-1/0,o=0,s=e;or.end(0)?this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+this.id,null,\"Playback for this video can be set only between the \"+r.start(0)+\" and \"+r.end(0)+\"-second mark.\"))):this.video.currentTime=e}},r.prototype.getVideo=function(){return this.video},r.prototype.onAdd=function(t){this.map||(this.map=t,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))},r.prototype.prepare=function(){if(!(0===Object.keys(this.tiles).length||this.video.readyState<2)){var e=this.map.painter.context,r=e.gl;for(var n in this.boundsBuffer||(this.boundsBuffer=e.createVertexBuffer(this._boundsArray,P.members)),this.boundsSegments||(this.boundsSegments=t.SegmentVector.simpleSegment(0,0,4,2)),this.texture?this.video.paused||(this.texture.bind(r.LINEAR,r.CLAMP_TO_EDGE),r.texSubImage2D(r.TEXTURE_2D,0,0,0,r.RGBA,r.UNSIGNED_BYTE,this.video)):(this.texture=new t.Texture(e,this.video,r.RGBA),this.texture.bind(r.LINEAR,r.CLAMP_TO_EDGE)),this.tiles){var i=this.tiles[n];\"loaded\"!==i.state&&(i.state=\"loaded\",i.texture=this.texture)}}},r.prototype.serialize=function(){return{type:\"video\",urls:this.urls,coordinates:this.coordinates}},r.prototype.hasTransition=function(){return this.video&&!this.video.paused},r}(I),z=function(e){function r(r,n,i,a){e.call(this,r,n,i,a),n.coordinates?Array.isArray(n.coordinates)&&4===n.coordinates.length&&!n.coordinates.some((function(t){return!Array.isArray(t)||2!==t.length||t.some((function(t){return\"number\"!=typeof t}))}))||this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+r,null,'\"coordinates\" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+r,null,'missing required property \"coordinates\"'))),n.animate&&\"boolean\"!=typeof n.animate&&this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+r,null,'optional \"animate\" property must be a boolean value'))),n.canvas?\"string\"==typeof n.canvas||n.canvas instanceof t.window.HTMLCanvasElement||this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+r,null,'\"canvas\" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+r,null,'missing required property \"canvas\"'))),this.options=n,this.animate=void 0===n.animate||n.animate}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.load=function(){this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof t.window.HTMLCanvasElement?this.options.canvas:t.window.document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new t.ErrorEvent(new Error(\"Canvas dimensions cannot be less than or equal to zero.\"))):(this.play=function(){this._playing=!0,this.map.triggerRepaint()},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1)},this._finishLoading())},r.prototype.getCanvas=function(){return this.canvas},r.prototype.onAdd=function(t){this.map=t,this.load(),this.canvas&&this.animate&&this.play()},r.prototype.onRemove=function(){this.pause()},r.prototype.prepare=function(){var e=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,e=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,e=!0),!this._hasInvalidDimensions()&&0!==Object.keys(this.tiles).length){var r=this.map.painter.context,n=r.gl;for(var i in this.boundsBuffer||(this.boundsBuffer=r.createVertexBuffer(this._boundsArray,P.members)),this.boundsSegments||(this.boundsSegments=t.SegmentVector.simpleSegment(0,0,4,2)),this.texture?(e||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new t.Texture(r,this.canvas,n.RGBA,{premultiply:!0}),this.tiles){var a=this.tiles[i];\"loaded\"!==a.state&&(a.state=\"loaded\",a.texture=this.texture)}}},r.prototype.serialize=function(){return{type:\"canvas\",coordinates:this.coordinates}},r.prototype.hasTransition=function(){return this._playing},r.prototype._hasInvalidDimensions=function(){for(var t=0,e=[this.canvas.width,this.canvas.height];tthis.max){var o=this._getAndRemoveByKey(this.order[0]);o&&this.onRemove(o)}return this},N.prototype.has=function(t){return t.wrapped().key in this.data},N.prototype.getAndRemove=function(t){return this.has(t)?this._getAndRemoveByKey(t.wrapped().key):null},N.prototype._getAndRemoveByKey=function(t){var e=this.data[t].shift();return e.timeout&&clearTimeout(e.timeout),0===this.data[t].length&&delete this.data[t],this.order.splice(this.order.indexOf(t),1),e.value},N.prototype.getByKey=function(t){var e=this.data[t];return e?e[0].value:null},N.prototype.get=function(t){return this.has(t)?this.data[t.wrapped().key][0].value:null},N.prototype.remove=function(t,e){if(!this.has(t))return this;var r=t.wrapped().key,n=void 0===e?0:this.data[r].indexOf(e),i=this.data[r][n];return this.data[r].splice(n,1),i.timeout&&clearTimeout(i.timeout),0===this.data[r].length&&delete this.data[r],this.onRemove(i.value),this.order.splice(this.order.indexOf(r),1),this},N.prototype.setMaxSize=function(t){for(this.max=t;this.order.length>this.max;){var e=this._getAndRemoveByKey(this.order[0]);e&&this.onRemove(e)}return this},N.prototype.filter=function(t){var e=[];for(var r in this.data)for(var n=0,i=this.data[r];n1||(Math.abs(r)>1&&(1===Math.abs(r+i)?r+=i:1===Math.abs(r-i)&&(r-=i)),e.dem&&t.dem&&(t.dem.backfillBorder(e.dem,r,n),t.neighboringTiles&&t.neighboringTiles[a]&&(t.neighboringTiles[a].backfilled=!0)))}},r.prototype.getTile=function(t){return this.getTileByID(t.key)},r.prototype.getTileByID=function(t){return this._tiles[t]},r.prototype._retainLoadedChildren=function(t,e,r,n){for(var i in this._tiles){var a=this._tiles[i];if(!(n[i]||!a.hasData()||a.tileID.overscaledZ<=e||a.tileID.overscaledZ>r)){for(var o=a.tileID;a&&a.tileID.overscaledZ>e+1;){var s=a.tileID.scaledTo(a.tileID.overscaledZ-1);(a=this._tiles[s.key])&&a.hasData()&&(o=s)}for(var l=o;l.overscaledZ>e;)if(t[(l=l.scaledTo(l.overscaledZ-1)).key]){n[o.key]=o;break}}}},r.prototype.findLoadedParent=function(t,e){if(t.key in this._loadedParentTiles){var r=this._loadedParentTiles[t.key];return r&&r.tileID.overscaledZ>=e?r:null}for(var n=t.overscaledZ-1;n>=e;n--){var i=t.scaledTo(n),a=this._getLoadedTile(i);if(a)return a}},r.prototype._getLoadedTile=function(t){var e=this._tiles[t.key];return e&&e.hasData()?e:this._cache.getByKey(t.wrapped().key)},r.prototype.updateCacheSize=function(t){var e=(Math.ceil(t.width/this._source.tileSize)+1)*(Math.ceil(t.height/this._source.tileSize)+1),r=Math.floor(5*e),n=\"number\"==typeof this._maxTileCacheSize?Math.min(this._maxTileCacheSize,r):r;this._cache.setMaxSize(n)},r.prototype.handleWrapJump=function(t){var e=(t-(void 0===this._prevLng?t:this._prevLng))/360,r=Math.round(e);if(this._prevLng=t,r){var n={};for(var i in this._tiles){var a=this._tiles[i];a.tileID=a.tileID.unwrapTo(a.tileID.wrap+r),n[a.tileID.key]=a}for(var o in this._tiles=n,this._timers)clearTimeout(this._timers[o]),delete this._timers[o];for(var s in this._tiles){var l=this._tiles[s];this._setTileReloadTimer(s,l)}}},r.prototype.update=function(e){var n=this;if(this.transform=e,this._sourceLoaded&&!this._paused){var i;this.updateCacheSize(e),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used?this._source.tileID?i=e.getVisibleUnwrappedCoordinates(this._source.tileID).map((function(e){return new t.OverscaledTileID(e.canonical.z,e.wrap,e.canonical.z,e.canonical.x,e.canonical.y)})):(i=e.coveringTiles({tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled}),this._source.hasTile&&(i=i.filter((function(t){return n._source.hasTile(t)})))):i=[];var a=e.coveringZoomLevel(this._source),o=Math.max(a-r.maxOverzooming,this._source.minzoom),s=Math.max(a+r.maxUnderzooming,this._source.minzoom),l=this._updateRetainedTiles(i,a);if(It(this._source.type)){for(var c={},u={},f=0,h=Object.keys(l);fthis._source.maxzoom){var m=d.children(this._source.maxzoom)[0],v=this.getTile(m);if(v&&v.hasData()){n[m.key]=m;continue}}else{var y=d.children(this._source.maxzoom);if(n[y[0].key]&&n[y[1].key]&&n[y[2].key]&&n[y[3].key])continue}for(var x=g.wasRequested(),b=d.overscaledZ-1;b>=a;--b){var _=d.scaledTo(b);if(i[_.key])break;if(i[_.key]=!0,!(g=this.getTile(_))&&x&&(g=this._addTile(_)),g&&(n[_.key]=_,x=g.wasRequested(),g.hasData()))break}}}return n},r.prototype._updateLoadedParentTileCache=function(){for(var t in this._loadedParentTiles={},this._tiles){for(var e=[],r=void 0,n=this._tiles[t].tileID;n.overscaledZ>0;){if(n.key in this._loadedParentTiles){r=this._loadedParentTiles[n.key];break}e.push(n.key);var i=n.scaledTo(n.overscaledZ-1);if(r=this._getLoadedTile(i))break;n=i}for(var a=0,o=e;a0||(e.hasData()&&\"reloading\"!==e.state?this._cache.add(e.tileID,e,e.getExpiryTimeout()):(e.aborted=!0,this._abortTile(e),this._unloadTile(e))))},r.prototype.clearTiles=function(){for(var t in this._shouldReloadOnResume=!1,this._paused=!1,this._tiles)this._removeTile(t);this._cache.reset()},r.prototype.tilesIn=function(e,r,n){var i=this,a=[],o=this.transform;if(!o)return a;for(var s=n?o.getCameraQueryGeometry(e):e,l=e.map((function(t){return o.pointCoordinate(t)})),c=s.map((function(t){return o.pointCoordinate(t)})),u=this.getIds(),f=1/0,h=1/0,p=-1/0,d=-1/0,g=0,m=c;g=0&&v[1].y+m>=0){var y=l.map((function(t){return s.getTilePoint(t)})),x=c.map((function(t){return s.getTilePoint(t)}));a.push({tile:n,tileID:s,queryGeometry:y,cameraQueryGeometry:x,scale:g})}}},x=0;x=t.browser.now())return!0}return!1},r.prototype.setFeatureState=function(t,e,r){t=t||\"_geojsonTileLayer\",this._state.updateState(t,e,r)},r.prototype.removeFeatureState=function(t,e,r){t=t||\"_geojsonTileLayer\",this._state.removeFeatureState(t,e,r)},r.prototype.getFeatureState=function(t,e){return t=t||\"_geojsonTileLayer\",this._state.getState(t,e)},r.prototype.setDependencies=function(t,e,r){var n=this._tiles[t];n&&n.setDependencies(e,r)},r.prototype.reloadTilesForDependencies=function(t,e){for(var r in this._tiles){this._tiles[r].hasDependency(t,e)&&this._reloadTile(r,\"reloading\")}this._cache.filter((function(r){return!r.hasDependency(t,e)}))},r}(t.Evented);function Pt(t,e){var r=Math.abs(2*t.wrap)-+(t.wrap<0),n=Math.abs(2*e.wrap)-+(e.wrap<0);return t.overscaledZ-e.overscaledZ||n-r||e.canonical.y-t.canonical.y||e.canonical.x-t.canonical.x}function It(t){return\"raster\"===t||\"image\"===t||\"video\"===t}function Ot(){return new t.window.Worker(Zi.workerUrl)}Ct.maxOverzooming=10,Ct.maxUnderzooming=3;var zt=\"mapboxgl_preloaded_worker_pool\",Dt=function(){this.active={}};Dt.prototype.acquire=function(t){if(!this.workers)for(this.workers=[];this.workers.length0?(i-o)/s:0;return this.points[a].mult(1-l).add(this.points[r].mult(l))};var Kt=function(t,e,r){var n=this.boxCells=[],i=this.circleCells=[];this.xCellCount=Math.ceil(t/r),this.yCellCount=Math.ceil(e/r);for(var a=0;a=-e[0]&&r<=e[0]&&n>=-e[1]&&n<=e[1]}function ne(e,r,n,i,a,o,s,l){var c=i?e.textSizeData:e.iconSizeData,u=t.evaluateSizeForZoom(c,n.transform.zoom),f=[256/n.width*2+1,256/n.height*2+1],h=i?e.text.dynamicLayoutVertexArray:e.icon.dynamicLayoutVertexArray;h.clear();for(var p=e.lineVertexArray,d=i?e.text.placedSymbolArray:e.icon.placedSymbolArray,g=n.transform.width/n.transform.height,m=!1,v=0;vMath.abs(n.x-r.x)*i)return{useVertical:!0};return(e===t.WritingMode.vertical?r.yn.x)?{needsFlipping:!0}:null}function oe(e,r,n,i,a,o,s,l,c,u,f,h,p,d){var g,m=r/24,v=e.lineOffsetX*m,y=e.lineOffsetY*m;if(e.numGlyphs>1){var x=e.glyphStartIndex+e.numGlyphs,b=e.lineStartIndex,_=e.lineStartIndex+e.lineLength,w=ie(m,l,v,y,n,f,h,e,c,o,p);if(!w)return{notEnoughRoom:!0};var T=te(w.first.point,s).point,k=te(w.last.point,s).point;if(i&&!n){var A=ae(e.writingMode,T,k,d);if(A)return A}g=[w.first];for(var M=e.glyphStartIndex+1;M0?C.point:se(h,L,S,1,a),I=ae(e.writingMode,S,P,d);if(I)return I}var O=le(m*l.getoffsetX(e.glyphStartIndex),v,y,n,f,h,e.segment,e.lineStartIndex,e.lineStartIndex+e.lineLength,c,o,p);if(!O)return{notEnoughRoom:!0};g=[O]}for(var z=0,D=g;z0?1:-1,g=0;i&&(d*=-1,g=Math.PI),d<0&&(g+=Math.PI);for(var m=d>0?l+s:l+s+1,v=a,y=a,x=0,b=0,_=Math.abs(p),w=[];x+b<=_;){if((m+=d)=c)return null;if(y=v,w.push(v),void 0===(v=h[m])){var T=new t.Point(u.getx(m),u.gety(m)),k=te(T,f);if(k.signedDistanceFromCamera>0)v=h[m]=k.point;else{var A=m-d;v=se(0===x?o:new t.Point(u.getx(A),u.gety(A)),T,y,_-x+1,f)}}x+=b,b=y.dist(v)}var M=(_-x)/b,S=v.sub(y),E=S.mult(M)._add(y);E._add(S._unit()._perp()._mult(n*d));var L=g+Math.atan2(v.y-y.y,v.x-y.x);return w.push(E),{point:E,angle:L,path:w}}Kt.prototype.keysLength=function(){return this.boxKeys.length+this.circleKeys.length},Kt.prototype.insert=function(t,e,r,n,i){this._forEachCell(e,r,n,i,this._insertBoxCell,this.boxUid++),this.boxKeys.push(t),this.bboxes.push(e),this.bboxes.push(r),this.bboxes.push(n),this.bboxes.push(i)},Kt.prototype.insertCircle=function(t,e,r,n){this._forEachCell(e-n,r-n,e+n,r+n,this._insertCircleCell,this.circleUid++),this.circleKeys.push(t),this.circles.push(e),this.circles.push(r),this.circles.push(n)},Kt.prototype._insertBoxCell=function(t,e,r,n,i,a){this.boxCells[i].push(a)},Kt.prototype._insertCircleCell=function(t,e,r,n,i,a){this.circleCells[i].push(a)},Kt.prototype._query=function(t,e,r,n,i,a){if(r<0||t>this.width||n<0||e>this.height)return!i&&[];var o=[];if(t<=0&&e<=0&&this.width<=r&&this.height<=n){if(i)return!0;for(var s=0;s0:o},Kt.prototype._queryCircle=function(t,e,r,n,i){var a=t-r,o=t+r,s=e-r,l=e+r;if(o<0||a>this.width||l<0||s>this.height)return!n&&[];var c=[],u={hitTest:n,circle:{x:t,y:e,radius:r},seenUids:{box:{},circle:{}}};return this._forEachCell(a,s,o,l,this._queryCellCircle,c,u,i),n?c.length>0:c},Kt.prototype.query=function(t,e,r,n,i){return this._query(t,e,r,n,!1,i)},Kt.prototype.hitTest=function(t,e,r,n,i){return this._query(t,e,r,n,!0,i)},Kt.prototype.hitTestCircle=function(t,e,r,n){return this._queryCircle(t,e,r,!0,n)},Kt.prototype._queryCell=function(t,e,r,n,i,a,o,s){var l=o.seenUids,c=this.boxCells[i];if(null!==c)for(var u=this.bboxes,f=0,h=c;f=u[d+0]&&n>=u[d+1]&&(!s||s(this.boxKeys[p]))){if(o.hitTest)return a.push(!0),!0;a.push({key:this.boxKeys[p],x1:u[d],y1:u[d+1],x2:u[d+2],y2:u[d+3]})}}}var g=this.circleCells[i];if(null!==g)for(var m=this.circles,v=0,y=g;vo*o+s*s},Kt.prototype._circleAndRectCollide=function(t,e,r,n,i,a,o){var s=(a-n)/2,l=Math.abs(t-(n+s));if(l>s+r)return!1;var c=(o-i)/2,u=Math.abs(e-(i+c));if(u>c+r)return!1;if(l<=s||u<=c)return!0;var f=l-s,h=u-c;return f*f+h*h<=r*r};var ce=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function ue(t,e){for(var r=0;r=1;P--)C.push(E.path[P]);for(var I=1;I0){for(var R=C[0].clone(),F=C[0].clone(),B=1;B=A.x&&F.x<=M.x&&R.y>=A.y&&F.y<=M.y?[C]:F.xM.x||F.yM.y?[]:t.clipLine([C],A.x,A.y,M.x,M.y)}for(var N=0,j=D;N=this.screenRightBoundary||n<100||e>this.screenBottomBoundary},he.prototype.isInsideGrid=function(t,e,r,n){return r>=0&&t=0&&e0)return this.prevPlacement&&this.prevPlacement.variableOffsets[f.crossTileID]&&this.prevPlacement.placements[f.crossTileID]&&this.prevPlacement.placements[f.crossTileID].text&&(g=this.prevPlacement.variableOffsets[f.crossTileID].anchor),this.variableOffsets[f.crossTileID]={textOffset:m,width:r,height:n,anchor:t,textBoxScale:i,prevAnchor:g},this.markUsedJustification(h,t,f,p),h.allowVerticalPlacement&&(this.markUsedOrientation(h,p,f),this.placedOrientations[f.crossTileID]=p),{shift:v,placedGlyphBoxes:y}},we.prototype.placeLayerBucketPart=function(e,r,n){var i=this,a=e.parameters,o=a.bucket,s=a.layout,l=a.posMatrix,c=a.textLabelPlaneMatrix,u=a.labelToScreenMatrix,f=a.textPixelRatio,h=a.holdingForFade,p=a.collisionBoxArray,d=a.partiallyEvaluatedTextSize,g=a.collisionGroup,m=s.get(\"text-optional\"),v=s.get(\"icon-optional\"),y=s.get(\"text-allow-overlap\"),x=s.get(\"icon-allow-overlap\"),b=\"map\"===s.get(\"text-rotation-alignment\"),_=\"map\"===s.get(\"text-pitch-alignment\"),w=\"none\"!==s.get(\"icon-text-fit\"),T=\"viewport-y\"===s.get(\"symbol-z-order\"),k=y&&(x||!o.hasIconData()||v),A=x&&(y||!o.hasTextData()||m);!o.collisionArrays&&p&&o.deserializeCollisionBoxes(p);var M=function(e,a){if(!r[e.crossTileID])if(h)i.placements[e.crossTileID]=new me(!1,!1,!1);else{var p,T=!1,M=!1,S=!0,E=null,L={box:null,offscreen:null},C={box:null,offscreen:null},P=null,I=null,O=0,z=0,D=0;a.textFeatureIndex?O=a.textFeatureIndex:e.useRuntimeCollisionCircles&&(O=e.featureIndex),a.verticalTextFeatureIndex&&(z=a.verticalTextFeatureIndex);var R=a.textBox;if(R){var F=function(r){var n=t.WritingMode.horizontal;if(o.allowVerticalPlacement&&!r&&i.prevPlacement){var a=i.prevPlacement.placedOrientations[e.crossTileID];a&&(i.placedOrientations[e.crossTileID]=a,n=a,i.markUsedOrientation(o,n,e))}return n},B=function(r,n){if(o.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&a.verticalTextBox)for(var i=0,s=o.writingModes;i0&&(N=N.filter((function(t){return t!==j.anchor}))).unshift(j.anchor)}var U=function(t,r,n){for(var a=t.x2-t.x1,s=t.y2-t.y1,c=e.textBoxScale,u=w&&!x?r:null,h={box:[],offscreen:!1},p=y?2*N.length:N.length,d=0;d=N.length,k=i.attemptAnchorPlacement(m,t,a,s,c,b,_,f,l,g,v,e,o,n,u);if(k&&(h=k.placedGlyphBoxes)&&h.box&&h.box.length){T=!0,E=k.shift;break}}return h};B((function(){return U(R,a.iconBox,t.WritingMode.horizontal)}),(function(){var r=a.verticalTextBox,n=L&&L.box&&L.box.length;return o.allowVerticalPlacement&&!n&&e.numVerticalGlyphVertices>0&&r?U(r,a.verticalIconBox,t.WritingMode.vertical):{box:null,offscreen:null}})),L&&(T=L.box,S=L.offscreen);var V=F(L&&L.box);if(!T&&i.prevPlacement){var H=i.prevPlacement.variableOffsets[e.crossTileID];H&&(i.variableOffsets[e.crossTileID]=H,i.markUsedJustification(o,H.anchor,e,V))}}else{var q=function(t,r){var n=i.collisionIndex.placeCollisionBox(t,y,f,l,g.predicate);return n&&n.box&&n.box.length&&(i.markUsedOrientation(o,r,e),i.placedOrientations[e.crossTileID]=r),n};B((function(){return q(R,t.WritingMode.horizontal)}),(function(){var r=a.verticalTextBox;return o.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&r?q(r,t.WritingMode.vertical):{box:null,offscreen:null}})),F(L&&L.box&&L.box.length)}}if(T=(p=L)&&p.box&&p.box.length>0,S=p&&p.offscreen,e.useRuntimeCollisionCircles){var G=o.text.placedSymbolArray.get(e.centerJustifiedTextSymbolIndex),Y=t.evaluateSizeForFeature(o.textSizeData,d,G),W=s.get(\"text-padding\"),X=e.collisionCircleDiameter;P=i.collisionIndex.placeCollisionCircles(y,G,o.lineVertexArray,o.glyphOffsetArray,Y,l,c,u,n,_,g.predicate,X,W),T=y||P.circles.length>0&&!P.collisionDetected,S=S&&P.offscreen}if(a.iconFeatureIndex&&(D=a.iconFeatureIndex),a.iconBox){var Z=function(t){var e=w&&E?_e(t,E.x,E.y,b,_,i.transform.angle):t;return i.collisionIndex.placeCollisionBox(e,x,f,l,g.predicate)};M=C&&C.box&&C.box.length&&a.verticalIconBox?(I=Z(a.verticalIconBox)).box.length>0:(I=Z(a.iconBox)).box.length>0,S=S&&I.offscreen}var J=m||0===e.numHorizontalGlyphVertices&&0===e.numVerticalGlyphVertices,K=v||0===e.numIconVertices;if(J||K?K?J||(M=M&&T):T=M&&T:M=T=M&&T,T&&p&&p.box&&(C&&C.box&&z?i.collisionIndex.insertCollisionBox(p.box,s.get(\"text-ignore-placement\"),o.bucketInstanceId,z,g.ID):i.collisionIndex.insertCollisionBox(p.box,s.get(\"text-ignore-placement\"),o.bucketInstanceId,O,g.ID)),M&&I&&i.collisionIndex.insertCollisionBox(I.box,s.get(\"icon-ignore-placement\"),o.bucketInstanceId,D,g.ID),P&&(T&&i.collisionIndex.insertCollisionCircles(P.circles,s.get(\"text-ignore-placement\"),o.bucketInstanceId,O,g.ID),n)){var Q=o.bucketInstanceId,$=i.collisionCircleArrays[Q];void 0===$&&($=i.collisionCircleArrays[Q]=new ve);for(var tt=0;tt=0;--E){var L=S[E];M(o.symbolInstances.get(L),o.collisionArrays[L])}else for(var C=e.symbolInstanceStart;C=0&&(e.text.placedSymbolArray.get(c).crossTileID=a>=0&&c!==a?0:n.crossTileID)}},we.prototype.markUsedOrientation=function(e,r,n){for(var i=r===t.WritingMode.horizontal||r===t.WritingMode.horizontalOnly?r:0,a=r===t.WritingMode.vertical?r:0,o=0,s=[n.leftJustifiedTextSymbolIndex,n.centerJustifiedTextSymbolIndex,n.rightJustifiedTextSymbolIndex];o0||l>0,x=a.numIconVertices>0,b=i.placedOrientations[a.crossTileID],_=b===t.WritingMode.vertical,w=b===t.WritingMode.horizontal||b===t.WritingMode.horizontalOnly;if(y){var T=Pe(v.text),k=_?Ie:T;d(e.text,s,k);var A=w?Ie:T;d(e.text,l,A);var M=v.text.isHidden();[a.rightJustifiedTextSymbolIndex,a.centerJustifiedTextSymbolIndex,a.leftJustifiedTextSymbolIndex].forEach((function(t){t>=0&&(e.text.placedSymbolArray.get(t).hidden=M||_?1:0)})),a.verticalPlacedTextSymbolIndex>=0&&(e.text.placedSymbolArray.get(a.verticalPlacedTextSymbolIndex).hidden=M||w?1:0);var S=i.variableOffsets[a.crossTileID];S&&i.markUsedJustification(e,S.anchor,a,b);var E=i.placedOrientations[a.crossTileID];E&&(i.markUsedJustification(e,\"left\",a,E),i.markUsedOrientation(e,E,a))}if(x){var L=Pe(v.icon),C=!(h&&a.verticalPlacedIconSymbolIndex&&_);if(a.placedIconSymbolIndex>=0){var P=C?L:Ie;d(e.icon,a.numIconVertices,P),e.icon.placedSymbolArray.get(a.placedIconSymbolIndex).hidden=v.icon.isHidden()}if(a.verticalPlacedIconSymbolIndex>=0){var I=C?Ie:L;d(e.icon,a.numVerticalIconVertices,I),e.icon.placedSymbolArray.get(a.verticalPlacedIconSymbolIndex).hidden=v.icon.isHidden()}}if(e.hasIconCollisionBoxData()||e.hasTextCollisionBoxData()){var O=e.collisionArrays[n];if(O){var z=new t.Point(0,0);if(O.textBox||O.verticalTextBox){var D=!0;if(c){var R=i.variableOffsets[g];R?(z=be(R.anchor,R.width,R.height,R.textOffset,R.textBoxScale),u&&z._rotate(f?i.transform.angle:-i.transform.angle)):D=!1}O.textBox&&Te(e.textCollisionBox.collisionVertexArray,v.text.placed,!D||_,z.x,z.y),O.verticalTextBox&&Te(e.textCollisionBox.collisionVertexArray,v.text.placed,!D||w,z.x,z.y)}var F=Boolean(!w&&O.verticalIconBox);O.iconBox&&Te(e.iconCollisionBox.collisionVertexArray,v.icon.placed,F,h?z.x:0,h?z.y:0),O.verticalIconBox&&Te(e.iconCollisionBox.collisionVertexArray,v.icon.placed,!F,h?z.x:0,h?z.y:0)}}},m=0;mt},we.prototype.setStale=function(){this.stale=!0};var ke=Math.pow(2,25),Ae=Math.pow(2,24),Me=Math.pow(2,17),Se=Math.pow(2,16),Ee=Math.pow(2,9),Le=Math.pow(2,8),Ce=Math.pow(2,1);function Pe(t){if(0===t.opacity&&!t.placed)return 0;if(1===t.opacity&&t.placed)return 4294967295;var e=t.placed?1:0,r=Math.floor(127*t.opacity);return r*ke+e*Ae+r*Me+e*Se+r*Ee+e*Le+r*Ce+e}var Ie=0,Oe=function(t){this._sortAcrossTiles=\"viewport-y\"!==t.layout.get(\"symbol-z-order\")&&void 0!==t.layout.get(\"symbol-sort-key\").constantOr(1),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[]};Oe.prototype.continuePlacement=function(t,e,r,n,i){for(var a=this._bucketParts;this._currentTileIndex2};this._currentPlacementIndex>=0;){var s=r[e[this._currentPlacementIndex]],l=this.placement.collisionIndex.transform.zoom;if(\"symbol\"===s.type&&(!s.minzoom||s.minzoom<=l)&&(!s.maxzoom||s.maxzoom>l)){if(this._inProgressLayer||(this._inProgressLayer=new Oe(s)),this._inProgressLayer.continuePlacement(n[s.source],this.placement,this._showCollisionBoxes,s,o))return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0},ze.prototype.commit=function(t){return this.placement.commit(t),this.placement};var De=512/t.EXTENT/2,Re=function(t,e,r){this.tileID=t,this.indexedSymbolInstances={},this.bucketInstanceId=r;for(var n=0;nt.overscaledZ)for(var s in o){var l=o[s];l.tileID.isChildOf(t)&&l.findMatches(e.symbolInstances,t,i)}else{var c=o[t.scaledTo(Number(a)).key];c&&c.findMatches(e.symbolInstances,t,i)}}for(var u=0;u1?\"@2x\":\"\",l=t.getJSON(r.transformRequest(r.normalizeSpriteURL(e,s,\".json\"),t.ResourceType.SpriteJSON),(function(t,e){l=null,o||(o=t,i=e,u())})),c=t.getImage(r.transformRequest(r.normalizeSpriteURL(e,s,\".png\"),t.ResourceType.SpriteImage),(function(t,e){c=null,o||(o=t,a=e,u())}));function u(){if(o)n(o);else if(i&&a){var e=t.browser.getImageData(a),r={};for(var s in i){var l=i[s],c=l.width,u=l.height,f=l.x,h=l.y,p=l.sdf,d=l.pixelRatio,g=l.stretchX,m=l.stretchY,v=l.content,y=new t.RGBAImage({width:c,height:u});t.RGBAImage.copy(e,y,{x:f,y:h},{x:0,y:0},{width:c,height:u}),r[s]={data:y,pixelRatio:d,sdf:p,stretchX:g,stretchY:m,content:v}}n(null,r)}}return{cancel:function(){l&&(l.cancel(),l=null),c&&(c.cancel(),c=null)}}}(e,this.map._requestManager,(function(e,n){if(r._spriteRequest=null,e)r.fire(new t.ErrorEvent(e));else if(n)for(var i in n)r.imageManager.addImage(i,n[i]);r.imageManager.setLoaded(!0),r._availableImages=r.imageManager.listImages(),r.dispatcher.broadcast(\"setImages\",r._availableImages),r.fire(new t.Event(\"data\",{dataType:\"style\"}))}))},r.prototype._validateLayer=function(e){var r=this.sourceCaches[e.source];if(r){var n=e.sourceLayer;if(n){var i=r.getSource();(\"geojson\"===i.type||i.vectorLayerIds&&-1===i.vectorLayerIds.indexOf(n))&&this.fire(new t.ErrorEvent(new Error('Source layer \"'+n+'\" does not exist on source \"'+i.id+'\" as specified by style layer \"'+e.id+'\"')))}}},r.prototype.loaded=function(){if(!this._loaded)return!1;if(Object.keys(this._updatedSources).length)return!1;for(var t in this.sourceCaches)if(!this.sourceCaches[t].loaded())return!1;return!!this.imageManager.isLoaded()},r.prototype._serializeLayers=function(t){for(var e=[],r=0,n=t;r0)throw new Error(\"Unimplemented: \"+i.map((function(t){return t.command})).join(\", \")+\".\");return n.forEach((function(t){\"setTransition\"!==t.command&&r[t.command].apply(r,t.args)})),this.stylesheet=e,!0},r.prototype.addImage=function(e,r){if(this.getImage(e))return this.fire(new t.ErrorEvent(new Error(\"An image with this name already exists.\")));this.imageManager.addImage(e,r),this._availableImages=this.imageManager.listImages(),this._changedImages[e]=!0,this._changed=!0,this.fire(new t.Event(\"data\",{dataType:\"style\"}))},r.prototype.updateImage=function(t,e){this.imageManager.updateImage(t,e)},r.prototype.getImage=function(t){return this.imageManager.getImage(t)},r.prototype.removeImage=function(e){if(!this.getImage(e))return this.fire(new t.ErrorEvent(new Error(\"No image with this name exists.\")));this.imageManager.removeImage(e),this._availableImages=this.imageManager.listImages(),this._changedImages[e]=!0,this._changed=!0,this.fire(new t.Event(\"data\",{dataType:\"style\"}))},r.prototype.listImages=function(){return this._checkLoaded(),this.imageManager.listImages()},r.prototype.addSource=function(e,r,n){var i=this;if(void 0===n&&(n={}),this._checkLoaded(),void 0!==this.sourceCaches[e])throw new Error(\"There is already a source with this ID\");if(!r.type)throw new Error(\"The type property must be defined, but the only the following properties were given: \"+Object.keys(r).join(\", \")+\".\");if(!([\"vector\",\"raster\",\"geojson\",\"video\",\"image\"].indexOf(r.type)>=0)||!this._validate(t.validateStyle.source,\"sources.\"+e,r,null,n)){this.map&&this.map._collectResourceTiming&&(r.collectResourceTiming=!0);var a=this.sourceCaches[e]=new Ct(e,r,this.dispatcher);a.style=this,a.setEventedParent(this,(function(){return{isSourceLoaded:i.loaded(),source:a.serialize(),sourceId:e}})),a.onAdd(this.map),this._changed=!0}},r.prototype.removeSource=function(e){if(this._checkLoaded(),void 0===this.sourceCaches[e])throw new Error(\"There is no source with this ID\");for(var r in this._layers)if(this._layers[r].source===e)return this.fire(new t.ErrorEvent(new Error('Source \"'+e+'\" cannot be removed while layer \"'+r+'\" is using it.')));var n=this.sourceCaches[e];delete this.sourceCaches[e],delete this._updatedSources[e],n.fire(new t.Event(\"data\",{sourceDataType:\"metadata\",dataType:\"source\",sourceId:e})),n.setEventedParent(null),n.clearTiles(),n.onRemove&&n.onRemove(this.map),this._changed=!0},r.prototype.setGeoJSONSourceData=function(t,e){this._checkLoaded(),this.sourceCaches[t].getSource().setData(e),this._changed=!0},r.prototype.getSource=function(t){return this.sourceCaches[t]&&this.sourceCaches[t].getSource()},r.prototype.addLayer=function(e,r,n){void 0===n&&(n={}),this._checkLoaded();var i=e.id;if(this.getLayer(i))this.fire(new t.ErrorEvent(new Error('Layer with id \"'+i+'\" already exists on this map')));else{var a;if(\"custom\"===e.type){if(je(this,t.validateCustomStyleLayer(e)))return;a=t.createStyleLayer(e)}else{if(\"object\"==typeof e.source&&(this.addSource(i,e.source),e=t.clone$1(e),e=t.extend(e,{source:i})),this._validate(t.validateStyle.layer,\"layers.\"+i,e,{arrayIndex:-1},n))return;a=t.createStyleLayer(e),this._validateLayer(a),a.setEventedParent(this,{layer:{id:i}}),this._serializedLayers[a.id]=a.serialize()}var o=r?this._order.indexOf(r):this._order.length;if(r&&-1===o)this.fire(new t.ErrorEvent(new Error('Layer with id \"'+r+'\" does not exist on this map.')));else{if(this._order.splice(o,0,i),this._layerOrderChanged=!0,this._layers[i]=a,this._removedLayers[i]&&a.source&&\"custom\"!==a.type){var s=this._removedLayers[i];delete this._removedLayers[i],s.type!==a.type?this._updatedSources[a.source]=\"clear\":(this._updatedSources[a.source]=\"reload\",this.sourceCaches[a.source].pause())}this._updateLayer(a),a.onAdd&&a.onAdd(this.map)}}},r.prototype.moveLayer=function(e,r){if(this._checkLoaded(),this._changed=!0,this._layers[e]){if(e!==r){var n=this._order.indexOf(e);this._order.splice(n,1);var i=r?this._order.indexOf(r):this._order.length;r&&-1===i?this.fire(new t.ErrorEvent(new Error('Layer with id \"'+r+'\" does not exist on this map.'))):(this._order.splice(i,0,e),this._layerOrderChanged=!0)}}else this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be moved.\")))},r.prototype.removeLayer=function(e){this._checkLoaded();var r=this._layers[e];if(r){r.setEventedParent(null);var n=this._order.indexOf(e);this._order.splice(n,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[e]=r,delete this._layers[e],delete this._serializedLayers[e],delete this._updatedLayers[e],delete this._updatedPaintProps[e],r.onRemove&&r.onRemove(this.map)}else this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be removed.\")))},r.prototype.getLayer=function(t){return this._layers[t]},r.prototype.hasLayer=function(t){return t in this._layers},r.prototype.setLayerZoomRange=function(e,r,n){this._checkLoaded();var i=this.getLayer(e);i?i.minzoom===r&&i.maxzoom===n||(null!=r&&(i.minzoom=r),null!=n&&(i.maxzoom=n),this._updateLayer(i)):this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot have zoom extent.\")))},r.prototype.setFilter=function(e,r,n){void 0===n&&(n={}),this._checkLoaded();var i=this.getLayer(e);if(i){if(!t.deepEqual(i.filter,r))return null==r?(i.filter=void 0,void this._updateLayer(i)):void(this._validate(t.validateStyle.filter,\"layers.\"+i.id+\".filter\",r,null,n)||(i.filter=t.clone$1(r),this._updateLayer(i)))}else this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be filtered.\")))},r.prototype.getFilter=function(e){return t.clone$1(this.getLayer(e).filter)},r.prototype.setLayoutProperty=function(e,r,n,i){void 0===i&&(i={}),this._checkLoaded();var a=this.getLayer(e);a?t.deepEqual(a.getLayoutProperty(r),n)||(a.setLayoutProperty(r,n,i),this._updateLayer(a)):this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be styled.\")))},r.prototype.getLayoutProperty=function(e,r){var n=this.getLayer(e);if(n)return n.getLayoutProperty(r);this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style.\")))},r.prototype.setPaintProperty=function(e,r,n,i){void 0===i&&(i={}),this._checkLoaded();var a=this.getLayer(e);a?t.deepEqual(a.getPaintProperty(r),n)||(a.setPaintProperty(r,n,i)&&this._updateLayer(a),this._changed=!0,this._updatedPaintProps[e]=!0):this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be styled.\")))},r.prototype.getPaintProperty=function(t,e){return this.getLayer(t).getPaintProperty(e)},r.prototype.setFeatureState=function(e,r){this._checkLoaded();var n=e.source,i=e.sourceLayer,a=this.sourceCaches[n];if(void 0!==a){var o=a.getSource().type;\"geojson\"===o&&i?this.fire(new t.ErrorEvent(new Error(\"GeoJSON sources cannot have a sourceLayer parameter.\"))):\"vector\"!==o||i?(void 0===e.id&&this.fire(new t.ErrorEvent(new Error(\"The feature id parameter must be provided.\"))),a.setFeatureState(i,e.id,r)):this.fire(new t.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")))}else this.fire(new t.ErrorEvent(new Error(\"The source '\"+n+\"' does not exist in the map's style.\")))},r.prototype.removeFeatureState=function(e,r){this._checkLoaded();var n=e.source,i=this.sourceCaches[n];if(void 0!==i){var a=i.getSource().type,o=\"vector\"===a?e.sourceLayer:void 0;\"vector\"!==a||o?r&&\"string\"!=typeof e.id&&\"number\"!=typeof e.id?this.fire(new t.ErrorEvent(new Error(\"A feature id is required to remove its specific state property.\"))):i.removeFeatureState(o,e.id,r):this.fire(new t.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")))}else this.fire(new t.ErrorEvent(new Error(\"The source '\"+n+\"' does not exist in the map's style.\")))},r.prototype.getFeatureState=function(e){this._checkLoaded();var r=e.source,n=e.sourceLayer,i=this.sourceCaches[r];if(void 0!==i){if(\"vector\"!==i.getSource().type||n)return void 0===e.id&&this.fire(new t.ErrorEvent(new Error(\"The feature id parameter must be provided.\"))),i.getFeatureState(n,e.id);this.fire(new t.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")))}else this.fire(new t.ErrorEvent(new Error(\"The source '\"+r+\"' does not exist in the map's style.\")))},r.prototype.getTransition=function(){return t.extend({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)},r.prototype.serialize=function(){return t.filterObject({version:this.stylesheet.version,name:this.stylesheet.name,metadata:this.stylesheet.metadata,light:this.stylesheet.light,center:this.stylesheet.center,zoom:this.stylesheet.zoom,bearing:this.stylesheet.bearing,pitch:this.stylesheet.pitch,sprite:this.stylesheet.sprite,glyphs:this.stylesheet.glyphs,transition:this.stylesheet.transition,sources:t.mapObject(this.sourceCaches,(function(t){return t.serialize()})),layers:this._serializeLayers(this._order)},(function(t){return void 0!==t}))},r.prototype._updateLayer=function(t){this._updatedLayers[t.id]=!0,t.source&&!this._updatedSources[t.source]&&\"raster\"!==this.sourceCaches[t.source].getSource().type&&(this._updatedSources[t.source]=\"reload\",this.sourceCaches[t.source].pause()),this._changed=!0},r.prototype._flattenAndSortRenderedFeatures=function(t){for(var e=this,r=function(t){return\"fill-extrusion\"===e._layers[t].type},n={},i=[],a=this._order.length-1;a>=0;a--){var o=this._order[a];if(r(o)){n[o]=a;for(var s=0,l=t;s=0;d--){var g=this._order[d];if(r(g))for(var m=i.length-1;m>=0;m--){var v=i[m].feature;if(n[v.layer.id] 0.5) {gl_FragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {gl_FragColor*=.1;}}\",\"attribute vec2 a_pos;attribute vec2 a_anchor_pos;attribute vec2 a_extrude;attribute vec2 a_placed;attribute vec2 a_shift;uniform mat4 u_matrix;uniform vec2 u_extrude_scale;uniform float u_camera_to_center_distance;varying float v_placed;varying float v_notUsed;void main() {vec4 projectedPoint=u_matrix*vec4(a_anchor_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);gl_Position=u_matrix*vec4(a_pos,0.0,1.0);gl_Position.xy+=(a_extrude+a_shift)*u_extrude_scale*gl_Position.w*collision_perspective_ratio;v_placed=a_placed.x;v_notUsed=a_placed.y;}\"),tr=yr(\"varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;void main() {float alpha=0.5*min(v_perspective_ratio,1.0);float stroke_radius=0.9*max(v_perspective_ratio,1.0);float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);gl_FragColor=color*alpha*opacity_t;}\",\"attribute vec2 a_pos;attribute float a_radius;attribute vec2 a_flags;uniform mat4 u_matrix;uniform mat4 u_inv_matrix;uniform vec2 u_viewport_size;uniform float u_camera_to_center_distance;varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;vec3 toTilePosition(vec2 screenPos) {vec4 rayStart=u_inv_matrix*vec4(screenPos,-1.0,1.0);vec4 rayEnd =u_inv_matrix*vec4(screenPos, 1.0,1.0);rayStart.xyz/=rayStart.w;rayEnd.xyz /=rayEnd.w;highp float t=(0.0-rayStart.z)/(rayEnd.z-rayStart.z);return mix(rayStart.xyz,rayEnd.xyz,t);}void main() {vec2 quadCenterPos=a_pos;float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(mix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;vec3 tilePos=toTilePosition(quadCenterPos);vec4 clipPos=u_matrix*vec4(tilePos,1.0);highp float camera_to_anchor_distance=clipPos.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_perspective_ratio=collision_perspective_ratio;v_collision=collision;gl_Position=vec4(clipPos.xyz/clipPos.w,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}\"),er=yr(\"uniform highp vec4 u_color;uniform sampler2D u_overlay;varying vec2 v_uv;void main() {vec4 overlay_color=texture2D(u_overlay,v_uv);gl_FragColor=mix(u_color,overlay_color,overlay_color.a);}\",\"attribute vec2 a_pos;varying vec2 v_uv;uniform mat4 u_matrix;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=u_matrix*vec4(a_pos*u_overlay_scale,0,1);}\"),rr=yr(\"#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float opacity\\ngl_FragColor=color*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float opacity\\ngl_Position=u_matrix*vec4(a_pos,0,1);}\"),nr=yr(\"varying vec2 v_pos;\\n#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 outline_color\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=outline_color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;uniform vec2 u_world;varying vec2 v_pos;\\n#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 outline_color\\n#pragma mapbox: initialize lowp float opacity\\ngl_Position=u_matrix*vec4(a_pos,0,1);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}\"),ir=yr(\"uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=mix(color1,color2,u_fade)*alpha*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;gl_Position=u_matrix*vec4(a_pos,0,1);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}\"),ar=yr(\"uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_fade)*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);}\"),or=yr(\"varying vec4 v_color;void main() {gl_FragColor=v_color;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec4 v_color;\\n#pragma mapbox: define highp float base\\n#pragma mapbox: define highp float height\\n#pragma mapbox: define highp vec4 color\\nvoid main() {\\n#pragma mapbox: initialize highp float base\\n#pragma mapbox: initialize highp float height\\n#pragma mapbox: initialize highp vec4 color\\nvec3 normal=a_normal_ed.xyz;base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);gl_Position=u_matrix*vec4(a_pos,t > 0.0 ? height : base,1);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal/16384.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}\"),sr=yr(\"uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float base\\n#pragma mapbox: initialize lowp float height\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);gl_FragColor=mixedColor*v_lighting;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float base\\n#pragma mapbox: initialize lowp float height\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);float z=t > 0.0 ? height : base;gl_Position=u_matrix*vec4(a_pos,z,1);vec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0\\n? a_pos\\n: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;}\"),lr=yr(\"#ifdef GL_ES\\nprecision highp float;\\n#endif\\nuniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform float u_maxzoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);float exaggeration=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;vec2 deriv=vec2((c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))/ pow(2.0,(u_zoom-u_maxzoom)*exaggeration+19.2562-u_zoom);gl_FragColor=clamp(vec4(deriv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}\"),cr=yr(\"uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent;\\n#define PI 3.141592653589793\\nvoid main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;}\"),ur=yr(\"uniform lowp float u_device_pixel_ratio;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);gl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_linesofar;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}\"),fr=yr(\"uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp float v_lineprogress;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture2D(u_image,vec2(v_lineprogress,0.5));gl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define MAX_LINE_DISTANCE 32767.0\\n#define scale 0.015873016\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_lineprogress;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_lineprogress=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0/MAX_LINE_DISTANCE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}\"),hr=yr(\"uniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture2D(u_image,pos_a),texture2D(u_image,pos_b),u_fade);gl_FragColor=color*alpha*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\n#define LINE_DISTANCE_SCALE 2.0\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}\"),pr=yr(\"uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform float u_sdfgamma;uniform float u_mix;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture2D(u_image,v_tex_a).a;float sdfdist_b=texture2D(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);alpha*=smoothstep(0.5-u_sdfgamma/floorwidth,0.5+u_sdfgamma/floorwidth,sdfdist);gl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\n#define LINE_DISTANCE_SCALE 2.0\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_patternscale_a;uniform float u_tex_y_a;uniform vec2 u_patternscale_b;uniform float u_tex_y_b;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_tex_a=vec2(a_linesofar*u_patternscale_a.x/floorwidth,normal.y*u_patternscale_a.y+u_tex_y_a);v_tex_b=vec2(a_linesofar*u_patternscale_b.x/floorwidth,normal.y*u_patternscale_b.y+u_tex_y_b);v_width2=vec2(outset,inset);}\"),dr=yr(\"uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);gl_FragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos0=(((a_texture_pos/8192.0)-0.5)/u_buffer_scale )+0.5;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}\"),gr=yr(\"uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity;\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\nlowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;varying vec2 v_tex;varying float v_fade_opacity;\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0),0.0,1.0);v_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;v_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));}\"),mr=yr(\"#define SDF_PX 8.0\\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nfloat EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;varying vec2 v_data0;varying vec3 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity);}\"),vr=yr(\"#define SDF_PX 8.0\\n#define SDF 1.0\\n#define ICON 0.0\\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nfloat fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\nreturn;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;varying vec4 v_data0;varying vec4 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}\");function yr(t,e){var r=/#pragma mapbox: ([\\w]+) ([\\w]+) ([\\w]+) ([\\w]+)/g,n={};return{fragmentSource:t=t.replace(r,(function(t,e,r,i,a){return n[a]=!0,\"define\"===e?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\nvarying \"+r+\" \"+i+\" \"+a+\";\\n#else\\nuniform \"+r+\" \"+i+\" u_\"+a+\";\\n#endif\\n\":\"\\n#ifdef HAS_UNIFORM_u_\"+a+\"\\n \"+r+\" \"+i+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\"})),vertexSource:e=e.replace(r,(function(t,e,r,i,a){var o=\"float\"===i?\"vec2\":\"vec4\",s=a.match(/color/)?\"color\":o;return n[a]?\"define\"===e?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\nuniform lowp float u_\"+a+\"_t;\\nattribute \"+r+\" \"+o+\" a_\"+a+\";\\nvarying \"+r+\" \"+i+\" \"+a+\";\\n#else\\nuniform \"+r+\" \"+i+\" u_\"+a+\";\\n#endif\\n\":\"vec4\"===s?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\n \"+a+\" = a_\"+a+\";\\n#else\\n \"+r+\" \"+i+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\":\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\n \"+a+\" = unpack_mix_\"+s+\"(a_\"+a+\", u_\"+a+\"_t);\\n#else\\n \"+r+\" \"+i+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\":\"define\"===e?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\nuniform lowp float u_\"+a+\"_t;\\nattribute \"+r+\" \"+o+\" a_\"+a+\";\\n#else\\nuniform \"+r+\" \"+i+\" u_\"+a+\";\\n#endif\\n\":\"vec4\"===s?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\n \"+r+\" \"+i+\" \"+a+\" = a_\"+a+\";\\n#else\\n \"+r+\" \"+i+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\":\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\n \"+r+\" \"+i+\" \"+a+\" = unpack_mix_\"+s+\"(a_\"+a+\", u_\"+a+\"_t);\\n#else\\n \"+r+\" \"+i+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\"}))}}var xr=Object.freeze({__proto__:null,prelude:Ye,background:We,backgroundPattern:Xe,circle:Ze,clippingMask:Je,heatmap:Ke,heatmapTexture:Qe,collisionBox:$e,collisionCircle:tr,debug:er,fill:rr,fillOutline:nr,fillOutlinePattern:ir,fillPattern:ar,fillExtrusion:or,fillExtrusionPattern:sr,hillshadePrepare:lr,hillshade:cr,line:ur,lineGradient:fr,linePattern:hr,lineSDF:pr,raster:dr,symbolIcon:gr,symbolSDF:mr,symbolTextAndIcon:vr}),br=function(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null};br.prototype.bind=function(t,e,r,n,i,a,o,s){this.context=t;for(var l=this.boundPaintVertexBuffers.length!==n.length,c=0;!l&&c>16,s>>16],u_pixel_coord_lower:[65535&o,65535&s]}}_r.prototype.draw=function(t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g){var m,v=t.gl;if(!this.failedToCreate){for(var y in t.program.set(this.program),t.setDepthMode(r),t.setStencilMode(n),t.setColorMode(i),t.setCullFace(a),this.fixedUniforms)this.fixedUniforms[y].set(o[y]);p&&p.setUniforms(t,this.binderUniforms,f,{zoom:h});for(var x=(m={},m[v.LINES]=2,m[v.TRIANGLES]=3,m[v.LINE_STRIP]=1,m)[e],b=0,_=u.get();b<_.length;b+=1){var w=_[b],T=w.vaos||(w.vaos={});(T[s]||(T[s]=new br)).bind(t,this,l,p?p.getPaintVertexBuffers():[],c,w.vertexOffset,d,g),v.drawElements(e,w.primitiveLength*x,v.UNSIGNED_SHORT,w.primitiveOffset*x*2)}}};var Tr=function(e,r,n,i){var a=r.style.light,o=a.properties.get(\"position\"),s=[o.x,o.y,o.z],l=t.create$1();\"viewport\"===a.properties.get(\"anchor\")&&t.fromRotation(l,-r.transform.angle),t.transformMat3(s,s,l);var c=a.properties.get(\"color\");return{u_matrix:e,u_lightpos:s,u_lightintensity:a.properties.get(\"intensity\"),u_lightcolor:[c.r,c.g,c.b],u_vertical_gradient:+n,u_opacity:i}},kr=function(e,r,n,i,a,o,s){return t.extend(Tr(e,r,n,i),wr(o,r,s),{u_height_factor:-Math.pow(2,a.overscaledZ)/s.tileSize/8})},Ar=function(t){return{u_matrix:t}},Mr=function(e,r,n,i){return t.extend(Ar(e),wr(n,r,i))},Sr=function(t,e){return{u_matrix:t,u_world:e}},Er=function(e,r,n,i,a){return t.extend(Mr(e,r,n,i),{u_world:a})},Lr=function(e,r,n,i){var a,o,s=e.transform;if(\"map\"===i.paint.get(\"circle-pitch-alignment\")){var l=pe(n,1,s.zoom);a=!0,o=[l,l]}else a=!1,o=s.pixelsToGLUnits;return{u_camera_to_center_distance:s.cameraToCenterDistance,u_scale_with_map:+(\"map\"===i.paint.get(\"circle-pitch-scale\")),u_matrix:e.translatePosMatrix(r.posMatrix,n,i.paint.get(\"circle-translate\"),i.paint.get(\"circle-translate-anchor\")),u_pitch_with_map:+a,u_device_pixel_ratio:t.browser.devicePixelRatio,u_extrude_scale:o}},Cr=function(t,e,r){var n=pe(r,1,e.zoom),i=Math.pow(2,e.zoom-r.tileID.overscaledZ),a=r.tileID.overscaleFactor();return{u_matrix:t,u_camera_to_center_distance:e.cameraToCenterDistance,u_pixels_to_tile_units:n,u_extrude_scale:[e.pixelsToGLUnits[0]/(n*i),e.pixelsToGLUnits[1]/(n*i)],u_overscale_factor:a}},Pr=function(t,e,r){return{u_matrix:t,u_inv_matrix:e,u_camera_to_center_distance:r.cameraToCenterDistance,u_viewport_size:[r.width,r.height]}},Ir=function(t,e,r){return void 0===r&&(r=1),{u_matrix:t,u_color:e,u_overlay:0,u_overlay_scale:r}},Or=function(t){return{u_matrix:t}},zr=function(t,e,r,n){return{u_matrix:t,u_extrude_scale:pe(e,1,r),u_intensity:n}};function Dr(e,r){var n=Math.pow(2,r.canonical.z),i=r.canonical.y;return[new t.MercatorCoordinate(0,i/n).toLngLat().lat,new t.MercatorCoordinate(0,(i+1)/n).toLngLat().lat]}var Rr=function(e,r,n){var i=e.transform;return{u_matrix:Ur(e,r,n),u_ratio:1/pe(r,1,i.zoom),u_device_pixel_ratio:t.browser.devicePixelRatio,u_units_to_pixels:[1/i.pixelsToGLUnits[0],1/i.pixelsToGLUnits[1]]}},Fr=function(e,r,n){return t.extend(Rr(e,r,n),{u_image:0})},Br=function(e,r,n,i){var a=e.transform,o=jr(r,a);return{u_matrix:Ur(e,r,n),u_texsize:r.imageAtlasTexture.size,u_ratio:1/pe(r,1,a.zoom),u_device_pixel_ratio:t.browser.devicePixelRatio,u_image:0,u_scale:[o,i.fromScale,i.toScale],u_fade:i.t,u_units_to_pixels:[1/a.pixelsToGLUnits[0],1/a.pixelsToGLUnits[1]]}},Nr=function(e,r,n,i,a){var o=e.transform,s=e.lineAtlas,l=jr(r,o),c=\"round\"===n.layout.get(\"line-cap\"),u=s.getDash(i.from,c),f=s.getDash(i.to,c),h=u.width*a.fromScale,p=f.width*a.toScale;return t.extend(Rr(e,r,n),{u_patternscale_a:[l/h,-u.height/2],u_patternscale_b:[l/p,-f.height/2],u_sdfgamma:s.width/(256*Math.min(h,p)*t.browser.devicePixelRatio)/2,u_image:0,u_tex_y_a:u.y,u_tex_y_b:f.y,u_mix:a.t})};function jr(t,e){return 1/pe(t,1,e.tileZoom)}function Ur(t,e,r){return t.translatePosMatrix(e.tileID.posMatrix,e,r.paint.get(\"line-translate\"),r.paint.get(\"line-translate-anchor\"))}var Vr=function(t,e,r,n,i){return{u_matrix:t,u_tl_parent:e,u_scale_parent:r,u_buffer_scale:1,u_fade_t:n.mix,u_opacity:n.opacity*i.paint.get(\"raster-opacity\"),u_image0:0,u_image1:1,u_brightness_low:i.paint.get(\"raster-brightness-min\"),u_brightness_high:i.paint.get(\"raster-brightness-max\"),u_saturation_factor:(o=i.paint.get(\"raster-saturation\"),o>0?1-1/(1.001-o):-o),u_contrast_factor:(a=i.paint.get(\"raster-contrast\"),a>0?1/(1-a):1+a),u_spin_weights:Hr(i.paint.get(\"raster-hue-rotate\"))};var a,o};function Hr(t){t*=Math.PI/180;var e=Math.sin(t),r=Math.cos(t);return[(2*r+1)/3,(-Math.sqrt(3)*e-r+1)/3,(Math.sqrt(3)*e-r+1)/3]}var qr,Gr=function(t,e,r,n,i,a,o,s,l,c){var u=i.transform;return{u_is_size_zoom_constant:+(\"constant\"===t||\"source\"===t),u_is_size_feature_constant:+(\"constant\"===t||\"camera\"===t),u_size_t:e?e.uSizeT:0,u_size:e?e.uSize:0,u_camera_to_center_distance:u.cameraToCenterDistance,u_pitch:u.pitch/360*2*Math.PI,u_rotate_symbol:+r,u_aspect_ratio:u.width/u.height,u_fade_change:i.options.fadeDuration?i.symbolFadeChange:1,u_matrix:a,u_label_plane_matrix:o,u_coord_matrix:s,u_is_text:+l,u_pitch_with_map:+n,u_texsize:c,u_texture:0}},Yr=function(e,r,n,i,a,o,s,l,c,u,f){var h=a.transform;return t.extend(Gr(e,r,n,i,a,o,s,l,c,u),{u_gamma_scale:i?Math.cos(h._pitch)*h.cameraToCenterDistance:1,u_device_pixel_ratio:t.browser.devicePixelRatio,u_is_halo:+f})},Wr=function(e,r,n,i,a,o,s,l,c,u){return t.extend(Yr(e,r,n,i,a,o,s,l,!0,c,!0),{u_texsize_icon:u,u_texture_icon:1})},Xr=function(t,e,r){return{u_matrix:t,u_opacity:e,u_color:r}},Zr=function(e,r,n,i,a,o){return t.extend(function(t,e,r,n){var i=r.imageManager.getPattern(t.from.toString()),a=r.imageManager.getPattern(t.to.toString()),o=r.imageManager.getPixelSize(),s=o.width,l=o.height,c=Math.pow(2,n.tileID.overscaledZ),u=n.tileSize*Math.pow(2,r.transform.tileZoom)/c,f=u*(n.tileID.canonical.x+n.tileID.wrap*c),h=u*n.tileID.canonical.y;return{u_image:0,u_pattern_tl_a:i.tl,u_pattern_br_a:i.br,u_pattern_tl_b:a.tl,u_pattern_br_b:a.br,u_texsize:[s,l],u_mix:e.t,u_pattern_size_a:i.displaySize,u_pattern_size_b:a.displaySize,u_scale_a:e.fromScale,u_scale_b:e.toScale,u_tile_units_to_pixels:1/pe(n,1,r.transform.tileZoom),u_pixel_coord_upper:[f>>16,h>>16],u_pixel_coord_lower:[65535&f,65535&h]}}(i,o,n,a),{u_matrix:e,u_opacity:r})},Jr={fillExtrusion:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_lightpos:new t.Uniform3f(e,r.u_lightpos),u_lightintensity:new t.Uniform1f(e,r.u_lightintensity),u_lightcolor:new t.Uniform3f(e,r.u_lightcolor),u_vertical_gradient:new t.Uniform1f(e,r.u_vertical_gradient),u_opacity:new t.Uniform1f(e,r.u_opacity)}},fillExtrusionPattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_lightpos:new t.Uniform3f(e,r.u_lightpos),u_lightintensity:new t.Uniform1f(e,r.u_lightintensity),u_lightcolor:new t.Uniform3f(e,r.u_lightcolor),u_vertical_gradient:new t.Uniform1f(e,r.u_vertical_gradient),u_height_factor:new t.Uniform1f(e,r.u_height_factor),u_image:new t.Uniform1i(e,r.u_image),u_texsize:new t.Uniform2f(e,r.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade),u_opacity:new t.Uniform1f(e,r.u_opacity)}},fill:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},fillPattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_image:new t.Uniform1i(e,r.u_image),u_texsize:new t.Uniform2f(e,r.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade)}},fillOutline:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_world:new t.Uniform2f(e,r.u_world)}},fillOutlinePattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_world:new t.Uniform2f(e,r.u_world),u_image:new t.Uniform1i(e,r.u_image),u_texsize:new t.Uniform2f(e,r.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade)}},circle:function(e,r){return{u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_scale_with_map:new t.Uniform1i(e,r.u_scale_with_map),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_extrude_scale:new t.Uniform2f(e,r.u_extrude_scale),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},collisionBox:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pixels_to_tile_units:new t.Uniform1f(e,r.u_pixels_to_tile_units),u_extrude_scale:new t.Uniform2f(e,r.u_extrude_scale),u_overscale_factor:new t.Uniform1f(e,r.u_overscale_factor)}},collisionCircle:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_inv_matrix:new t.UniformMatrix4f(e,r.u_inv_matrix),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_viewport_size:new t.Uniform2f(e,r.u_viewport_size)}},debug:function(e,r){return{u_color:new t.UniformColor(e,r.u_color),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_overlay:new t.Uniform1i(e,r.u_overlay),u_overlay_scale:new t.Uniform1f(e,r.u_overlay_scale)}},clippingMask:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},heatmap:function(e,r){return{u_extrude_scale:new t.Uniform1f(e,r.u_extrude_scale),u_intensity:new t.Uniform1f(e,r.u_intensity),u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},heatmapTexture:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_world:new t.Uniform2f(e,r.u_world),u_image:new t.Uniform1i(e,r.u_image),u_color_ramp:new t.Uniform1i(e,r.u_color_ramp),u_opacity:new t.Uniform1f(e,r.u_opacity)}},hillshade:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_image:new t.Uniform1i(e,r.u_image),u_latrange:new t.Uniform2f(e,r.u_latrange),u_light:new t.Uniform2f(e,r.u_light),u_shadow:new t.UniformColor(e,r.u_shadow),u_highlight:new t.UniformColor(e,r.u_highlight),u_accent:new t.UniformColor(e,r.u_accent)}},hillshadePrepare:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_image:new t.Uniform1i(e,r.u_image),u_dimension:new t.Uniform2f(e,r.u_dimension),u_zoom:new t.Uniform1f(e,r.u_zoom),u_maxzoom:new t.Uniform1f(e,r.u_maxzoom),u_unpack:new t.Uniform4f(e,r.u_unpack)}},line:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels)}},lineGradient:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels),u_image:new t.Uniform1i(e,r.u_image)}},linePattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_texsize:new t.Uniform2f(e,r.u_texsize),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_image:new t.Uniform1i(e,r.u_image),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade)}},lineSDF:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels),u_patternscale_a:new t.Uniform2f(e,r.u_patternscale_a),u_patternscale_b:new t.Uniform2f(e,r.u_patternscale_b),u_sdfgamma:new t.Uniform1f(e,r.u_sdfgamma),u_image:new t.Uniform1i(e,r.u_image),u_tex_y_a:new t.Uniform1f(e,r.u_tex_y_a),u_tex_y_b:new t.Uniform1f(e,r.u_tex_y_b),u_mix:new t.Uniform1f(e,r.u_mix)}},raster:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_tl_parent:new t.Uniform2f(e,r.u_tl_parent),u_scale_parent:new t.Uniform1f(e,r.u_scale_parent),u_buffer_scale:new t.Uniform1f(e,r.u_buffer_scale),u_fade_t:new t.Uniform1f(e,r.u_fade_t),u_opacity:new t.Uniform1f(e,r.u_opacity),u_image0:new t.Uniform1i(e,r.u_image0),u_image1:new t.Uniform1i(e,r.u_image1),u_brightness_low:new t.Uniform1f(e,r.u_brightness_low),u_brightness_high:new t.Uniform1f(e,r.u_brightness_high),u_saturation_factor:new t.Uniform1f(e,r.u_saturation_factor),u_contrast_factor:new t.Uniform1f(e,r.u_contrast_factor),u_spin_weights:new t.Uniform3f(e,r.u_spin_weights)}},symbolIcon:function(e,r){return{u_is_size_zoom_constant:new t.Uniform1i(e,r.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,r.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,r.u_size_t),u_size:new t.Uniform1f(e,r.u_size),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,r.u_pitch),u_rotate_symbol:new t.Uniform1i(e,r.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,r.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,r.u_fade_change),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,r.u_label_plane_matrix),u_coord_matrix:new t.UniformMatrix4f(e,r.u_coord_matrix),u_is_text:new t.Uniform1i(e,r.u_is_text),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_texsize:new t.Uniform2f(e,r.u_texsize),u_texture:new t.Uniform1i(e,r.u_texture)}},symbolSDF:function(e,r){return{u_is_size_zoom_constant:new t.Uniform1i(e,r.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,r.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,r.u_size_t),u_size:new t.Uniform1f(e,r.u_size),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,r.u_pitch),u_rotate_symbol:new t.Uniform1i(e,r.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,r.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,r.u_fade_change),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,r.u_label_plane_matrix),u_coord_matrix:new t.UniformMatrix4f(e,r.u_coord_matrix),u_is_text:new t.Uniform1i(e,r.u_is_text),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_texsize:new t.Uniform2f(e,r.u_texsize),u_texture:new t.Uniform1i(e,r.u_texture),u_gamma_scale:new t.Uniform1f(e,r.u_gamma_scale),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_is_halo:new t.Uniform1i(e,r.u_is_halo)}},symbolTextAndIcon:function(e,r){return{u_is_size_zoom_constant:new t.Uniform1i(e,r.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,r.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,r.u_size_t),u_size:new t.Uniform1f(e,r.u_size),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,r.u_pitch),u_rotate_symbol:new t.Uniform1i(e,r.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,r.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,r.u_fade_change),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,r.u_label_plane_matrix),u_coord_matrix:new t.UniformMatrix4f(e,r.u_coord_matrix),u_is_text:new t.Uniform1i(e,r.u_is_text),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_texsize:new t.Uniform2f(e,r.u_texsize),u_texsize_icon:new t.Uniform2f(e,r.u_texsize_icon),u_texture:new t.Uniform1i(e,r.u_texture),u_texture_icon:new t.Uniform1i(e,r.u_texture_icon),u_gamma_scale:new t.Uniform1f(e,r.u_gamma_scale),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_is_halo:new t.Uniform1i(e,r.u_is_halo)}},background:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_opacity:new t.Uniform1f(e,r.u_opacity),u_color:new t.UniformColor(e,r.u_color)}},backgroundPattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_opacity:new t.Uniform1f(e,r.u_opacity),u_image:new t.Uniform1i(e,r.u_image),u_pattern_tl_a:new t.Uniform2f(e,r.u_pattern_tl_a),u_pattern_br_a:new t.Uniform2f(e,r.u_pattern_br_a),u_pattern_tl_b:new t.Uniform2f(e,r.u_pattern_tl_b),u_pattern_br_b:new t.Uniform2f(e,r.u_pattern_br_b),u_texsize:new t.Uniform2f(e,r.u_texsize),u_mix:new t.Uniform1f(e,r.u_mix),u_pattern_size_a:new t.Uniform2f(e,r.u_pattern_size_a),u_pattern_size_b:new t.Uniform2f(e,r.u_pattern_size_b),u_scale_a:new t.Uniform1f(e,r.u_scale_a),u_scale_b:new t.Uniform1f(e,r.u_scale_b),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_tile_units_to_pixels:new t.Uniform1f(e,r.u_tile_units_to_pixels)}}};function Kr(e,r,n,i,a,o,s){for(var l=e.context,c=l.gl,u=e.useProgram(\"collisionBox\"),f=[],h=0,p=0,d=0;d0){var _=t.create(),w=y;t.mul(_,v.placementInvProjMatrix,e.transform.glCoordMatrix),t.mul(_,_,v.placementViewportMatrix),f.push({circleArray:b,circleOffset:p,transform:w,invTransform:_}),p=h+=b.length/4}x&&u.draw(l,c.LINES,At.disabled,Mt.disabled,e.colorModeForRenderPass(),Et.disabled,Cr(y,e.transform,m),n.id,x.layoutVertexBuffer,x.indexBuffer,x.segments,null,e.transform.zoom,null,null,x.collisionVertexBuffer)}}if(s&&f.length){var T=e.useProgram(\"collisionCircle\"),k=new t.StructArrayLayout2f1f2i16;k.resize(4*h),k._trim();for(var A=0,M=0,S=f;M=0&&(g[v.associatedIconIndex]={shiftedAnchor:S,angle:E})}else ue(v.numGlyphs,p)}if(f){d.clear();for(var C=e.icon.placedSymbolArray,P=0;P0){var s=t.browser.now(),l=(s-e.timeAdded)/o,c=r?(s-r.timeAdded)/o:-1,u=n.getSource(),f=a.coveringZoomLevel({tileSize:u.tileSize,roundZoom:u.roundZoom}),h=!r||Math.abs(r.tileID.overscaledZ-f)>Math.abs(e.tileID.overscaledZ-f),p=h&&e.refreshedUponExpiration?1:t.clamp(h?l:1-c,0,1);return e.refreshedUponExpiration&&l>=1&&(e.refreshedUponExpiration=!1),r?{opacity:1,mix:1-p}:{opacity:p,mix:0}}return{opacity:1,mix:0}}var un=new t.Color(1,0,0,1),fn=new t.Color(0,1,0,1),hn=new t.Color(0,0,1,1),pn=new t.Color(1,0,1,1),dn=new t.Color(0,1,1,1);function gn(t){var e=t.transform.padding;mn(t,t.transform.height-(e.top||0),3,un),mn(t,e.bottom||0,3,fn),vn(t,e.left||0,3,hn),vn(t,t.transform.width-(e.right||0),3,pn);var r=t.transform.centerPoint;!function(t,e,r,n){yn(t,e-1,r-10,2,20,n),yn(t,e-10,r-1,20,2,n)}(t,r.x,t.transform.height-r.y,dn)}function mn(t,e,r,n){yn(t,0,e+r/2,t.transform.width,r,n)}function vn(t,e,r,n){yn(t,e-r/2,0,r,t.transform.height,n)}function yn(e,r,n,i,a,o){var s=e.context,l=s.gl;l.enable(l.SCISSOR_TEST),l.scissor(r*t.browser.devicePixelRatio,n*t.browser.devicePixelRatio,i*t.browser.devicePixelRatio,a*t.browser.devicePixelRatio),s.clear({color:o}),l.disable(l.SCISSOR_TEST)}function xn(e,r,n){var i=e.context,a=i.gl,o=n.posMatrix,s=e.useProgram(\"debug\"),l=At.disabled,c=Mt.disabled,u=e.colorModeForRenderPass();i.activeTexture.set(a.TEXTURE0),e.emptyTexture.bind(a.LINEAR,a.CLAMP_TO_EDGE),s.draw(i,a.LINE_STRIP,l,c,u,Et.disabled,Ir(o,t.Color.red),\"$debug\",e.debugBuffer,e.tileBorderIndexBuffer,e.debugSegments);var f=r.getTileByID(n.key).latestRawTileData,h=f&&f.byteLength||0,p=Math.floor(h/1024),d=r.getTile(n).tileSize,g=512/Math.min(d,512)*(n.overscaledZ/e.transform.zoom)*.5,m=n.canonical.toString();n.overscaledZ!==n.canonical.z&&(m+=\" => \"+n.overscaledZ),function(t,e){t.initDebugOverlayCanvas();var r=t.debugOverlayCanvas,n=t.context.gl,i=t.debugOverlayCanvas.getContext(\"2d\");i.clearRect(0,0,r.width,r.height),i.shadowColor=\"white\",i.shadowBlur=2,i.lineWidth=1.5,i.strokeStyle=\"white\",i.textBaseline=\"top\",i.font=\"bold 36px Open Sans, sans-serif\",i.fillText(e,5,5),i.strokeText(e,5,5),t.debugOverlayTexture.update(r),t.debugOverlayTexture.bind(n.LINEAR,n.CLAMP_TO_EDGE)}(e,m+\" \"+p+\"kb\"),s.draw(i,a.TRIANGLES,l,c,St.alphaBlended,Et.disabled,Ir(o,t.Color.transparent,g),\"$debug\",e.debugBuffer,e.quadTriangleIndexBuffer,e.debugSegments)}var bn={symbol:function(e,r,n,i,a){if(\"translucent\"===e.renderPass){var o=Mt.disabled,s=e.colorModeForRenderPass();n.layout.get(\"text-variable-anchor\")&&function(e,r,n,i,a,o,s){for(var l=r.transform,c=\"map\"===a,u=\"map\"===o,f=0,h=e;f256&&this.clearStencil(),r.setColorMode(St.disabled),r.setDepthMode(At.disabled);var i=this.useProgram(\"clippingMask\");this._tileClippingMaskIDs={};for(var a=0,o=e;a256&&this.clearStencil();var t=this.nextStencilID++,e=this.context.gl;return new Mt({func:e.NOTEQUAL,mask:255},t,255,e.KEEP,e.KEEP,e.REPLACE)},_n.prototype.stencilModeForClipping=function(t){var e=this.context.gl;return new Mt({func:e.EQUAL,mask:255},this._tileClippingMaskIDs[t.key],0,e.KEEP,e.KEEP,e.REPLACE)},_n.prototype.stencilConfigForOverlap=function(t){var e,r=this.context.gl,n=t.sort((function(t,e){return e.overscaledZ-t.overscaledZ})),i=n[n.length-1].overscaledZ,a=n[0].overscaledZ-i+1;if(a>1){this.currentStencilSource=void 0,this.nextStencilID+a>256&&this.clearStencil();for(var o={},s=0;s=0;this.currentLayer--){var w=this.style._layers[i[this.currentLayer]],T=a[w.source],k=u[w.source];this._renderTileClippingMasks(w,k),this.renderLayer(this,T,w,k)}for(this.renderPass=\"translucent\",this.currentLayer=0;this.currentLayer0?e.pop():null},_n.prototype.isPatternMissing=function(t){if(!t)return!1;if(!t.from||!t.to)return!0;var e=this.imageManager.getPattern(t.from.toString()),r=this.imageManager.getPattern(t.to.toString());return!e||!r},_n.prototype.useProgram=function(t,e){this.cache=this.cache||{};var r=\"\"+t+(e?e.cacheKey:\"\")+(this._showOverdrawInspector?\"/overdraw\":\"\");return this.cache[r]||(this.cache[r]=new _r(this.context,xr[t],e,Jr[t],this._showOverdrawInspector)),this.cache[r]},_n.prototype.setCustomLayerDefaults=function(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault()},_n.prototype.setBaseState=function(){var t=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(t.FUNC_ADD)},_n.prototype.initDebugOverlayCanvas=function(){if(null==this.debugOverlayCanvas){this.debugOverlayCanvas=t.window.document.createElement(\"canvas\"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512;var e=this.context.gl;this.debugOverlayTexture=new t.Texture(this.context,this.debugOverlayCanvas,e.RGBA)}},_n.prototype.destroy=function(){this.emptyTexture.destroy(),this.debugOverlayTexture&&this.debugOverlayTexture.destroy()};var wn=function(t,e){this.points=t,this.planes=e};wn.fromInvProjectionMatrix=function(e,r,n){var i=Math.pow(2,n),a=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]].map((function(r){return t.transformMat4([],r,e)})).map((function(e){return t.scale$1([],e,1/e[3]/r*i)})),o=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]].map((function(e){var r=t.sub([],a[e[0]],a[e[1]]),n=t.sub([],a[e[2]],a[e[1]]),i=t.normalize([],t.cross([],r,n)),o=-t.dot(i,a[e[1]]);return i.concat(o)}));return new wn(a,o)};var Tn=function(e,r){this.min=e,this.max=r,this.center=t.scale$2([],t.add([],this.min,this.max),.5)};Tn.prototype.quadrant=function(e){for(var r=[e%2==0,e<2],n=t.clone$2(this.min),i=t.clone$2(this.max),a=0;a=0;if(0===o)return 0;o!==r.length&&(n=!1)}if(n)return 2;for(var l=0;l<3;l++){for(var c=Number.MAX_VALUE,u=-Number.MAX_VALUE,f=0;fthis.max[l]-this.min[l])return 0}return 1};var kn=function(t,e,r,n){if(void 0===t&&(t=0),void 0===e&&(e=0),void 0===r&&(r=0),void 0===n&&(n=0),isNaN(t)||t<0||isNaN(e)||e<0||isNaN(r)||r<0||isNaN(n)||n<0)throw new Error(\"Invalid value for edge-insets, top, bottom, left and right must all be numbers\");this.top=t,this.bottom=e,this.left=r,this.right=n};kn.prototype.interpolate=function(e,r,n){return null!=r.top&&null!=e.top&&(this.top=t.number(e.top,r.top,n)),null!=r.bottom&&null!=e.bottom&&(this.bottom=t.number(e.bottom,r.bottom,n)),null!=r.left&&null!=e.left&&(this.left=t.number(e.left,r.left,n)),null!=r.right&&null!=e.right&&(this.right=t.number(e.right,r.right,n)),this},kn.prototype.getCenter=function(e,r){var n=t.clamp((this.left+e-this.right)/2,0,e),i=t.clamp((this.top+r-this.bottom)/2,0,r);return new t.Point(n,i)},kn.prototype.equals=function(t){return this.top===t.top&&this.bottom===t.bottom&&this.left===t.left&&this.right===t.right},kn.prototype.clone=function(){return new kn(this.top,this.bottom,this.left,this.right)},kn.prototype.toJSON=function(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}};var An=function(e,r,n,i,a){this.tileSize=512,this.maxValidLatitude=85.051129,this._renderWorldCopies=void 0===a||a,this._minZoom=e||0,this._maxZoom=r||22,this._minPitch=null==n?0:n,this._maxPitch=null==i?60:i,this.setMaxBounds(),this.width=0,this.height=0,this._center=new t.LngLat(0,0),this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._edgeInsets=new kn,this._posMatrixCache={},this._alignedPosMatrixCache={}},Mn={minZoom:{configurable:!0},maxZoom:{configurable:!0},minPitch:{configurable:!0},maxPitch:{configurable:!0},renderWorldCopies:{configurable:!0},worldSize:{configurable:!0},centerOffset:{configurable:!0},size:{configurable:!0},bearing:{configurable:!0},pitch:{configurable:!0},fov:{configurable:!0},zoom:{configurable:!0},center:{configurable:!0},padding:{configurable:!0},centerPoint:{configurable:!0},unmodified:{configurable:!0},point:{configurable:!0}};An.prototype.clone=function(){var t=new An(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return t.tileSize=this.tileSize,t.latRange=this.latRange,t.width=this.width,t.height=this.height,t._center=this._center,t.zoom=this.zoom,t.angle=this.angle,t._fov=this._fov,t._pitch=this._pitch,t._unmodified=this._unmodified,t._edgeInsets=this._edgeInsets.clone(),t._calcMatrices(),t},Mn.minZoom.get=function(){return this._minZoom},Mn.minZoom.set=function(t){this._minZoom!==t&&(this._minZoom=t,this.zoom=Math.max(this.zoom,t))},Mn.maxZoom.get=function(){return this._maxZoom},Mn.maxZoom.set=function(t){this._maxZoom!==t&&(this._maxZoom=t,this.zoom=Math.min(this.zoom,t))},Mn.minPitch.get=function(){return this._minPitch},Mn.minPitch.set=function(t){this._minPitch!==t&&(this._minPitch=t,this.pitch=Math.max(this.pitch,t))},Mn.maxPitch.get=function(){return this._maxPitch},Mn.maxPitch.set=function(t){this._maxPitch!==t&&(this._maxPitch=t,this.pitch=Math.min(this.pitch,t))},Mn.renderWorldCopies.get=function(){return this._renderWorldCopies},Mn.renderWorldCopies.set=function(t){void 0===t?t=!0:null===t&&(t=!1),this._renderWorldCopies=t},Mn.worldSize.get=function(){return this.tileSize*this.scale},Mn.centerOffset.get=function(){return this.centerPoint._sub(this.size._div(2))},Mn.size.get=function(){return new t.Point(this.width,this.height)},Mn.bearing.get=function(){return-this.angle/Math.PI*180},Mn.bearing.set=function(e){var r=-t.wrap(e,-180,180)*Math.PI/180;this.angle!==r&&(this._unmodified=!1,this.angle=r,this._calcMatrices(),this.rotationMatrix=t.create$2(),t.rotate(this.rotationMatrix,this.rotationMatrix,this.angle))},Mn.pitch.get=function(){return this._pitch/Math.PI*180},Mn.pitch.set=function(e){var r=t.clamp(e,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==r&&(this._unmodified=!1,this._pitch=r,this._calcMatrices())},Mn.fov.get=function(){return this._fov/Math.PI*180},Mn.fov.set=function(t){t=Math.max(.01,Math.min(60,t)),this._fov!==t&&(this._unmodified=!1,this._fov=t/180*Math.PI,this._calcMatrices())},Mn.zoom.get=function(){return this._zoom},Mn.zoom.set=function(t){var e=Math.min(Math.max(t,this.minZoom),this.maxZoom);this._zoom!==e&&(this._unmodified=!1,this._zoom=e,this.scale=this.zoomScale(e),this.tileZoom=Math.floor(e),this.zoomFraction=e-this.tileZoom,this._constrain(),this._calcMatrices())},Mn.center.get=function(){return this._center},Mn.center.set=function(t){t.lat===this._center.lat&&t.lng===this._center.lng||(this._unmodified=!1,this._center=t,this._constrain(),this._calcMatrices())},Mn.padding.get=function(){return this._edgeInsets.toJSON()},Mn.padding.set=function(t){this._edgeInsets.equals(t)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,t,1),this._calcMatrices())},Mn.centerPoint.get=function(){return this._edgeInsets.getCenter(this.width,this.height)},An.prototype.isPaddingEqual=function(t){return this._edgeInsets.equals(t)},An.prototype.interpolatePadding=function(t,e,r){this._unmodified=!1,this._edgeInsets.interpolate(t,e,r),this._constrain(),this._calcMatrices()},An.prototype.coveringZoomLevel=function(t){var e=(t.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/t.tileSize));return Math.max(0,e)},An.prototype.getVisibleUnwrappedCoordinates=function(e){var r=[new t.UnwrappedTileID(0,e)];if(this._renderWorldCopies)for(var n=this.pointCoordinate(new t.Point(0,0)),i=this.pointCoordinate(new t.Point(this.width,0)),a=this.pointCoordinate(new t.Point(this.width,this.height)),o=this.pointCoordinate(new t.Point(0,this.height)),s=Math.floor(Math.min(n.x,i.x,a.x,o.x)),l=Math.floor(Math.max(n.x,i.x,a.x,o.x)),c=s-1;c<=l+1;c++)0!==c&&r.push(new t.UnwrappedTileID(c,e));return r},An.prototype.coveringTiles=function(e){var r=this.coveringZoomLevel(e),n=r;if(void 0!==e.minzoom&&re.maxzoom&&(r=e.maxzoom);var i=t.MercatorCoordinate.fromLngLat(this.center),a=Math.pow(2,r),o=[a*i.x,a*i.y,0],s=wn.fromInvProjectionMatrix(this.invProjMatrix,this.worldSize,r),l=e.minzoom||0;this.pitch<=60&&this._edgeInsets.top<.1&&(l=r);var c=function(t){return{aabb:new Tn([t*a,0,0],[(t+1)*a,a,0]),zoom:0,x:0,y:0,wrap:t,fullyVisible:!1}},u=[],f=[],h=r,p=e.reparseOverscaled?n:r;if(this._renderWorldCopies)for(var d=1;d<=3;d++)u.push(c(-d)),u.push(c(d));for(u.push(c(0));u.length>0;){var g=u.pop(),m=g.x,v=g.y,y=g.fullyVisible;if(!y){var x=g.aabb.intersects(s);if(0===x)continue;y=2===x}var b=g.aabb.distanceX(o),_=g.aabb.distanceY(o),w=Math.max(Math.abs(b),Math.abs(_)),T=3+(1<T&&g.zoom>=l)f.push({tileID:new t.OverscaledTileID(g.zoom===h?p:g.zoom,g.wrap,g.zoom,m,v),distanceSq:t.sqrLen([o[0]-.5-m,o[1]-.5-v])});else for(var k=0;k<4;k++){var A=(m<<1)+k%2,M=(v<<1)+(k>>1);u.push({aabb:g.aabb.quadrant(k),zoom:g.zoom+1,x:A,y:M,wrap:g.wrap,fullyVisible:y})}}return f.sort((function(t,e){return t.distanceSq-e.distanceSq})).map((function(t){return t.tileID}))},An.prototype.resize=function(t,e){this.width=t,this.height=e,this.pixelsToGLUnits=[2/t,-2/e],this._constrain(),this._calcMatrices()},Mn.unmodified.get=function(){return this._unmodified},An.prototype.zoomScale=function(t){return Math.pow(2,t)},An.prototype.scaleZoom=function(t){return Math.log(t)/Math.LN2},An.prototype.project=function(e){var r=t.clamp(e.lat,-this.maxValidLatitude,this.maxValidLatitude);return new t.Point(t.mercatorXfromLng(e.lng)*this.worldSize,t.mercatorYfromLat(r)*this.worldSize)},An.prototype.unproject=function(e){return new t.MercatorCoordinate(e.x/this.worldSize,e.y/this.worldSize).toLngLat()},Mn.point.get=function(){return this.project(this.center)},An.prototype.setLocationAtPoint=function(e,r){var n=this.pointCoordinate(r),i=this.pointCoordinate(this.centerPoint),a=this.locationCoordinate(e),o=new t.MercatorCoordinate(a.x-(n.x-i.x),a.y-(n.y-i.y));this.center=this.coordinateLocation(o),this._renderWorldCopies&&(this.center=this.center.wrap())},An.prototype.locationPoint=function(t){return this.coordinatePoint(this.locationCoordinate(t))},An.prototype.pointLocation=function(t){return this.coordinateLocation(this.pointCoordinate(t))},An.prototype.locationCoordinate=function(e){return t.MercatorCoordinate.fromLngLat(e)},An.prototype.coordinateLocation=function(t){return t.toLngLat()},An.prototype.pointCoordinate=function(e){var r=[e.x,e.y,0,1],n=[e.x,e.y,1,1];t.transformMat4(r,r,this.pixelMatrixInverse),t.transformMat4(n,n,this.pixelMatrixInverse);var i=r[3],a=n[3],o=r[0]/i,s=n[0]/a,l=r[1]/i,c=n[1]/a,u=r[2]/i,f=n[2]/a,h=u===f?0:(0-u)/(f-u);return new t.MercatorCoordinate(t.number(o,s,h)/this.worldSize,t.number(l,c,h)/this.worldSize)},An.prototype.coordinatePoint=function(e){var r=[e.x*this.worldSize,e.y*this.worldSize,0,1];return t.transformMat4(r,r,this.pixelMatrix),new t.Point(r[0]/r[3],r[1]/r[3])},An.prototype.getBounds=function(){return(new t.LngLatBounds).extend(this.pointLocation(new t.Point(0,0))).extend(this.pointLocation(new t.Point(this.width,0))).extend(this.pointLocation(new t.Point(this.width,this.height))).extend(this.pointLocation(new t.Point(0,this.height)))},An.prototype.getMaxBounds=function(){return this.latRange&&2===this.latRange.length&&this.lngRange&&2===this.lngRange.length?new t.LngLatBounds([this.lngRange[0],this.latRange[0]],[this.lngRange[1],this.latRange[1]]):null},An.prototype.setMaxBounds=function(t){t?(this.lngRange=[t.getWest(),t.getEast()],this.latRange=[t.getSouth(),t.getNorth()],this._constrain()):(this.lngRange=null,this.latRange=[-this.maxValidLatitude,this.maxValidLatitude])},An.prototype.calculatePosMatrix=function(e,r){void 0===r&&(r=!1);var n=e.key,i=r?this._alignedPosMatrixCache:this._posMatrixCache;if(i[n])return i[n];var a=e.canonical,o=this.worldSize/this.zoomScale(a.z),s=a.x+Math.pow(2,a.z)*e.wrap,l=t.identity(new Float64Array(16));return t.translate(l,l,[s*o,a.y*o,0]),t.scale(l,l,[o/t.EXTENT,o/t.EXTENT,1]),t.multiply(l,r?this.alignedProjMatrix:this.projMatrix,l),i[n]=new Float32Array(l),i[n]},An.prototype.customLayerMatrix=function(){return this.mercatorMatrix.slice()},An.prototype._constrain=function(){if(this.center&&this.width&&this.height&&!this._constraining){this._constraining=!0;var e,r,n,i,a=-90,o=90,s=-180,l=180,c=this.size,u=this._unmodified;if(this.latRange){var f=this.latRange;a=t.mercatorYfromLat(f[1])*this.worldSize,e=(o=t.mercatorYfromLat(f[0])*this.worldSize)-ao&&(i=o-m)}if(this.lngRange){var v=p.x,y=c.x/2;v-yl&&(n=l-y)}void 0===n&&void 0===i||(this.center=this.unproject(new t.Point(void 0!==n?n:p.x,void 0!==i?i:p.y))),this._unmodified=u,this._constraining=!1}},An.prototype._calcMatrices=function(){if(this.height){var e=this._fov/2,r=this.centerOffset;this.cameraToCenterDistance=.5/Math.tan(e)*this.height;var n=Math.PI/2+this._pitch,i=this._fov*(.5+r.y/this.height),a=Math.sin(i)*this.cameraToCenterDistance/Math.sin(t.clamp(Math.PI-n-i,.01,Math.PI-.01)),o=this.point,s=o.x,l=o.y,c=1.01*(Math.cos(Math.PI/2-this._pitch)*a+this.cameraToCenterDistance),u=this.height/50,f=new Float64Array(16);t.perspective(f,this._fov,this.width/this.height,u,c),f[8]=2*-r.x/this.width,f[9]=2*r.y/this.height,t.scale(f,f,[1,-1,1]),t.translate(f,f,[0,0,-this.cameraToCenterDistance]),t.rotateX(f,f,this._pitch),t.rotateZ(f,f,this.angle),t.translate(f,f,[-s,-l,0]),this.mercatorMatrix=t.scale([],f,[this.worldSize,this.worldSize,this.worldSize]),t.scale(f,f,[1,1,t.mercatorZfromAltitude(1,this.center.lat)*this.worldSize,1]),this.projMatrix=f,this.invProjMatrix=t.invert([],this.projMatrix);var h=this.width%2/2,p=this.height%2/2,d=Math.cos(this.angle),g=Math.sin(this.angle),m=s-Math.round(s)+d*h+g*p,v=l-Math.round(l)+d*p+g*h,y=new Float64Array(f);if(t.translate(y,y,[m>.5?m-1:m,v>.5?v-1:v,0]),this.alignedProjMatrix=y,f=t.create(),t.scale(f,f,[this.width/2,-this.height/2,1]),t.translate(f,f,[1,-1,0]),this.labelPlaneMatrix=f,f=t.create(),t.scale(f,f,[1,-1,1]),t.translate(f,f,[-1,-1,0]),t.scale(f,f,[2/this.width,2/this.height,1]),this.glCoordMatrix=f,this.pixelMatrix=t.multiply(new Float64Array(16),this.labelPlaneMatrix,this.projMatrix),!(f=t.invert(new Float64Array(16),this.pixelMatrix)))throw new Error(\"failed to invert matrix\");this.pixelMatrixInverse=f,this._posMatrixCache={},this._alignedPosMatrixCache={}}},An.prototype.maxPitchScaleFactor=function(){if(!this.pixelMatrixInverse)return 1;var e=this.pointCoordinate(new t.Point(0,0)),r=[e.x*this.worldSize,e.y*this.worldSize,0,1];return t.transformMat4(r,r,this.pixelMatrix)[3]/this.cameraToCenterDistance},An.prototype.getCameraPoint=function(){var e=this._pitch,r=Math.tan(e)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new t.Point(0,r))},An.prototype.getCameraQueryGeometry=function(e){var r=this.getCameraPoint();if(1===e.length)return[e[0],r];for(var n=r.x,i=r.y,a=r.x,o=r.y,s=0,l=e;s=3&&!t.some((function(t){return isNaN(t)}))){var e=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(t[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+t[2],+t[1]],zoom:+t[0],bearing:e,pitch:+(t[4]||0)}),!0}return!1},Sn.prototype._updateHashUnthrottled=function(){var e=this.getHashString();try{t.window.history.replaceState(t.window.history.state,\"\",e)}catch(t){}};var En={linearity:.3,easing:t.bezier(0,0,.3,1)},Ln=t.extend({deceleration:2500,maxSpeed:1400},En),Cn=t.extend({deceleration:20,maxSpeed:1400},En),Pn=t.extend({deceleration:1e3,maxSpeed:360},En),In=t.extend({deceleration:1e3,maxSpeed:90},En),On=function(t){this._map=t,this.clear()};function zn(t,e){(!t.duration||t.duration0&&r-e[0].time>160;)e.shift()},On.prototype._onMoveEnd=function(e){if(this._drainInertiaBuffer(),!(this._inertiaBuffer.length<2)){for(var r={zoom:0,bearing:0,pitch:0,pan:new t.Point(0,0),pinchAround:void 0,around:void 0},n=0,i=this._inertiaBuffer;n=this._clickTolerance||this._map.fire(new Rn(t.type,this._map,t))},Nn.prototype.dblclick=function(t){return this._firePreventable(new Rn(t.type,this._map,t))},Nn.prototype.mouseover=function(t){this._map.fire(new Rn(t.type,this._map,t))},Nn.prototype.mouseout=function(t){this._map.fire(new Rn(t.type,this._map,t))},Nn.prototype.touchstart=function(t){return this._firePreventable(new Fn(t.type,this._map,t))},Nn.prototype.touchmove=function(t){this._map.fire(new Fn(t.type,this._map,t))},Nn.prototype.touchend=function(t){this._map.fire(new Fn(t.type,this._map,t))},Nn.prototype.touchcancel=function(t){this._map.fire(new Fn(t.type,this._map,t))},Nn.prototype._firePreventable=function(t){if(this._map.fire(t),t.defaultPrevented)return{}},Nn.prototype.isEnabled=function(){return!0},Nn.prototype.isActive=function(){return!1},Nn.prototype.enable=function(){},Nn.prototype.disable=function(){};var jn=function(t){this._map=t};jn.prototype.reset=function(){this._delayContextMenu=!1,delete this._contextMenuEvent},jn.prototype.mousemove=function(t){this._map.fire(new Rn(t.type,this._map,t))},jn.prototype.mousedown=function(){this._delayContextMenu=!0},jn.prototype.mouseup=function(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new Rn(\"contextmenu\",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)},jn.prototype.contextmenu=function(t){this._delayContextMenu?this._contextMenuEvent=t:this._map.fire(new Rn(t.type,this._map,t)),this._map.listens(\"contextmenu\")&&t.preventDefault()},jn.prototype.isEnabled=function(){return!0},jn.prototype.isActive=function(){return!1},jn.prototype.enable=function(){},jn.prototype.disable=function(){};var Un=function(t,e){this._map=t,this._el=t.getCanvasContainer(),this._container=t.getContainer(),this._clickTolerance=e.clickTolerance||1};function Vn(t,e){for(var r={},n=0;nthis.numTouches)&&(this.aborted=!0),this.aborted||(void 0===this.startTime&&(this.startTime=e.timeStamp),n.length===this.numTouches&&(this.centroid=function(e){for(var r=new t.Point(0,0),n=0,i=e;n30)&&(this.aborted=!0)}}},Hn.prototype.touchend=function(t,e,r){if((!this.centroid||t.timeStamp-this.startTime>500)&&(this.aborted=!0),0===r.length){var n=!this.aborted&&this.centroid;if(this.reset(),n)return n}};var qn=function(t){this.singleTap=new Hn(t),this.numTaps=t.numTaps,this.reset()};qn.prototype.reset=function(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset()},qn.prototype.touchstart=function(t,e,r){this.singleTap.touchstart(t,e,r)},qn.prototype.touchmove=function(t,e,r){this.singleTap.touchmove(t,e,r)},qn.prototype.touchend=function(t,e,r){var n=this.singleTap.touchend(t,e,r);if(n){var i=t.timeStamp-this.lastTime<500,a=!this.lastTap||this.lastTap.dist(n)<30;if(i&&a||this.reset(),this.count++,this.lastTime=t.timeStamp,this.lastTap=n,this.count===this.numTaps)return this.reset(),n}};var Gn=function(){this._zoomIn=new qn({numTouches:1,numTaps:2}),this._zoomOut=new qn({numTouches:2,numTaps:1}),this.reset()};Gn.prototype.reset=function(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset()},Gn.prototype.touchstart=function(t,e,r){this._zoomIn.touchstart(t,e,r),this._zoomOut.touchstart(t,e,r)},Gn.prototype.touchmove=function(t,e,r){this._zoomIn.touchmove(t,e,r),this._zoomOut.touchmove(t,e,r)},Gn.prototype.touchend=function(t,e,r){var n=this,i=this._zoomIn.touchend(t,e,r),a=this._zoomOut.touchend(t,e,r);return i?(this._active=!0,t.preventDefault(),setTimeout((function(){return n.reset()}),0),{cameraAnimation:function(e){return e.easeTo({duration:300,zoom:e.getZoom()+1,around:e.unproject(i)},{originalEvent:t})}}):a?(this._active=!0,t.preventDefault(),setTimeout((function(){return n.reset()}),0),{cameraAnimation:function(e){return e.easeTo({duration:300,zoom:e.getZoom()-1,around:e.unproject(a)},{originalEvent:t})}}):void 0},Gn.prototype.touchcancel=function(){this.reset()},Gn.prototype.enable=function(){this._enabled=!0},Gn.prototype.disable=function(){this._enabled=!1,this.reset()},Gn.prototype.isEnabled=function(){return this._enabled},Gn.prototype.isActive=function(){return this._active};var Yn=function(t){this.reset(),this._clickTolerance=t.clickTolerance||1};Yn.prototype.reset=function(){this._active=!1,this._moved=!1,delete this._lastPoint,delete this._eventButton},Yn.prototype._correctButton=function(t,e){return!1},Yn.prototype._move=function(t,e){return{}},Yn.prototype.mousedown=function(t,e){if(!this._lastPoint){var n=r.mouseButton(t);this._correctButton(t,n)&&(this._lastPoint=e,this._eventButton=n)}},Yn.prototype.mousemoveWindow=function(t,e){var r=this._lastPoint;if(r&&(t.preventDefault(),this._moved||!(e.dist(r)0&&(this._active=!0);var i=Vn(n,r),a=new t.Point(0,0),o=new t.Point(0,0),s=0;for(var l in i){var c=i[l],u=this._touches[l];u&&(a._add(c),o._add(c.sub(u)),s++,i[l]=c)}if(this._touches=i,!(sMath.abs(t.x)}var ii=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.reset=function(){t.prototype.reset.call(this),this._valid=void 0,delete this._firstMove,delete this._lastPoints},e.prototype._start=function(t){this._lastPoints=t,ni(t[0].sub(t[1]))&&(this._valid=!1)},e.prototype._move=function(t,e,r){var n=t[0].sub(this._lastPoints[0]),i=t[1].sub(this._lastPoints[1]);if(this._valid=this.gestureBeginsVertically(n,i,r.timeStamp),this._valid){this._lastPoints=t,this._active=!0;return{pitchDelta:-.5*((n.y+i.y)/2)}}},e.prototype.gestureBeginsVertically=function(t,e,r){if(void 0!==this._valid)return this._valid;var n=t.mag()>=2,i=e.mag()>=2;if(n||i){if(!n||!i)return void 0===this._firstMove&&(this._firstMove=r),r-this._firstMove<100&&void 0;var a=t.y>0==e.y>0;return ni(t)&&ni(e)&&a}},e}(Kn),ai={panStep:100,bearingStep:15,pitchStep:10},oi=function(){var t=ai;this._panStep=t.panStep,this._bearingStep=t.bearingStep,this._pitchStep=t.pitchStep};function si(t){return t*(2-t)}oi.prototype.reset=function(){this._active=!1},oi.prototype.keydown=function(t){var e=this;if(!(t.altKey||t.ctrlKey||t.metaKey)){var r=0,n=0,i=0,a=0,o=0;switch(t.keyCode){case 61:case 107:case 171:case 187:r=1;break;case 189:case 109:case 173:r=-1;break;case 37:t.shiftKey?n=-1:(t.preventDefault(),a=-1);break;case 39:t.shiftKey?n=1:(t.preventDefault(),a=1);break;case 38:t.shiftKey?i=1:(t.preventDefault(),o=-1);break;case 40:t.shiftKey?i=-1:(t.preventDefault(),o=1);break;default:return}return{cameraAnimation:function(s){var l=s.getZoom();s.easeTo({duration:300,easeId:\"keyboardHandler\",easing:si,zoom:r?Math.round(l)+r*(t.shiftKey?2:1):l,bearing:s.getBearing()+n*e._bearingStep,pitch:s.getPitch()+i*e._pitchStep,offset:[-a*e._panStep,-o*e._panStep],center:s.getCenter()},{originalEvent:t})}}}},oi.prototype.enable=function(){this._enabled=!0},oi.prototype.disable=function(){this._enabled=!1,this.reset()},oi.prototype.isEnabled=function(){return this._enabled},oi.prototype.isActive=function(){return this._active};var li=function(e,r){this._map=e,this._el=e.getCanvasContainer(),this._handler=r,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=1/450,t.bindAll([\"_onWheel\",\"_onTimeout\",\"_onScrollFrame\",\"_onScrollFinished\"],this)};li.prototype.setZoomRate=function(t){this._defaultZoomRate=t},li.prototype.setWheelZoomRate=function(t){this._wheelZoomRate=t},li.prototype.isEnabled=function(){return!!this._enabled},li.prototype.isActive=function(){return!!this._active||void 0!==this._finishTimeout},li.prototype.isZooming=function(){return!!this._zooming},li.prototype.enable=function(t){this.isEnabled()||(this._enabled=!0,this._aroundCenter=t&&\"center\"===t.around)},li.prototype.disable=function(){this.isEnabled()&&(this._enabled=!1)},li.prototype.wheel=function(e){if(this.isEnabled()){var r=e.deltaMode===t.window.WheelEvent.DOM_DELTA_LINE?40*e.deltaY:e.deltaY,n=t.browser.now(),i=n-(this._lastWheelEventTime||0);this._lastWheelEventTime=n,0!==r&&r%4.000244140625==0?this._type=\"wheel\":0!==r&&Math.abs(r)<4?this._type=\"trackpad\":i>400?(this._type=null,this._lastValue=r,this._timeout=setTimeout(this._onTimeout,40,e)):this._type||(this._type=Math.abs(i*r)<200?\"trackpad\":\"wheel\",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,r+=this._lastValue)),e.shiftKey&&r&&(r/=4),this._type&&(this._lastWheelEvent=e,this._delta-=r,this._active||this._start(e)),e.preventDefault()}},li.prototype._onTimeout=function(t){this._type=\"wheel\",this._delta-=this._lastValue,this._active||this._start(t)},li.prototype._start=function(e){if(this._delta){this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);var n=r.mousePos(this._el,e);this._around=t.LngLat.convert(this._aroundCenter?this._map.getCenter():this._map.unproject(n)),this._aroundPoint=this._map.transform.locationPoint(this._around),this._frameId||(this._frameId=!0,this._handler._triggerRenderFrame())}},li.prototype.renderFrame=function(){return this._onScrollFrame()},li.prototype._onScrollFrame=function(){var e=this;if(this._frameId&&(this._frameId=null,this.isActive())){var r=this._map.transform;if(0!==this._delta){var n=\"wheel\"===this._type&&Math.abs(this._delta)>4.000244140625?this._wheelZoomRate:this._defaultZoomRate,i=2/(1+Math.exp(-Math.abs(this._delta*n)));this._delta<0&&0!==i&&(i=1/i);var a=\"number\"==typeof this._targetZoom?r.zoomScale(this._targetZoom):r.scale;this._targetZoom=Math.min(r.maxZoom,Math.max(r.minZoom,r.scaleZoom(a*i))),\"wheel\"===this._type&&(this._startZoom=r.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0}var o,s=\"number\"==typeof this._targetZoom?this._targetZoom:r.zoom,l=this._startZoom,c=this._easing,u=!1;if(\"wheel\"===this._type&&l&&c){var f=Math.min((t.browser.now()-this._lastWheelEventTime)/200,1),h=c(f);o=t.number(l,s,h),f<1?this._frameId||(this._frameId=!0):u=!0}else o=s,u=!0;return this._active=!0,u&&(this._active=!1,this._finishTimeout=setTimeout((function(){e._zooming=!1,e._handler._triggerRenderFrame(),delete e._targetZoom,delete e._finishTimeout}),200)),{noInertia:!0,needsRenderFrame:!u,zoomDelta:o-r.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}},li.prototype._smoothOutEasing=function(e){var r=t.ease;if(this._prevEase){var n=this._prevEase,i=(t.browser.now()-n.start)/n.duration,a=n.easing(i+.01)-n.easing(i),o=.27/Math.sqrt(a*a+1e-4)*.01,s=Math.sqrt(.0729-o*o);r=t.bezier(o,s,.25,1)}return this._prevEase={start:t.browser.now(),duration:e,easing:r},r},li.prototype.reset=function(){this._active=!1};var ci=function(t,e){this._clickZoom=t,this._tapZoom=e};ci.prototype.enable=function(){this._clickZoom.enable(),this._tapZoom.enable()},ci.prototype.disable=function(){this._clickZoom.disable(),this._tapZoom.disable()},ci.prototype.isEnabled=function(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()},ci.prototype.isActive=function(){return this._clickZoom.isActive()||this._tapZoom.isActive()};var ui=function(){this.reset()};ui.prototype.reset=function(){this._active=!1},ui.prototype.dblclick=function(t,e){return t.preventDefault(),{cameraAnimation:function(r){r.easeTo({duration:300,zoom:r.getZoom()+(t.shiftKey?-1:1),around:r.unproject(e)},{originalEvent:t})}}},ui.prototype.enable=function(){this._enabled=!0},ui.prototype.disable=function(){this._enabled=!1,this.reset()},ui.prototype.isEnabled=function(){return this._enabled},ui.prototype.isActive=function(){return this._active};var fi=function(){this._tap=new qn({numTouches:1,numTaps:1}),this.reset()};fi.prototype.reset=function(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,this._tap.reset()},fi.prototype.touchstart=function(t,e,r){this._swipePoint||(this._tapTime&&t.timeStamp-this._tapTime>500&&this.reset(),this._tapTime?r.length>0&&(this._swipePoint=e[0],this._swipeTouch=r[0].identifier):this._tap.touchstart(t,e,r))},fi.prototype.touchmove=function(t,e,r){if(this._tapTime){if(this._swipePoint){if(r[0].identifier!==this._swipeTouch)return;var n=e[0],i=n.y-this._swipePoint.y;return this._swipePoint=n,t.preventDefault(),this._active=!0,{zoomDelta:i/128}}}else this._tap.touchmove(t,e,r)},fi.prototype.touchend=function(t,e,r){this._tapTime?this._swipePoint&&0===r.length&&this.reset():this._tap.touchend(t,e,r)&&(this._tapTime=t.timeStamp)},fi.prototype.touchcancel=function(){this.reset()},fi.prototype.enable=function(){this._enabled=!0},fi.prototype.disable=function(){this._enabled=!1,this.reset()},fi.prototype.isEnabled=function(){return this._enabled},fi.prototype.isActive=function(){return this._active};var hi=function(t,e,r){this._el=t,this._mousePan=e,this._touchPan=r};hi.prototype.enable=function(t){this._inertiaOptions=t||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add(\"mapboxgl-touch-drag-pan\")},hi.prototype.disable=function(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove(\"mapboxgl-touch-drag-pan\")},hi.prototype.isEnabled=function(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()},hi.prototype.isActive=function(){return this._mousePan.isActive()||this._touchPan.isActive()};var pi=function(t,e,r){this._pitchWithRotate=t.pitchWithRotate,this._mouseRotate=e,this._mousePitch=r};pi.prototype.enable=function(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable()},pi.prototype.disable=function(){this._mouseRotate.disable(),this._mousePitch.disable()},pi.prototype.isEnabled=function(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())},pi.prototype.isActive=function(){return this._mouseRotate.isActive()||this._mousePitch.isActive()};var di=function(t,e,r,n){this._el=t,this._touchZoom=e,this._touchRotate=r,this._tapDragZoom=n,this._rotationDisabled=!1,this._enabled=!0};di.prototype.enable=function(t){this._touchZoom.enable(t),this._rotationDisabled||this._touchRotate.enable(t),this._tapDragZoom.enable(),this._el.classList.add(\"mapboxgl-touch-zoom-rotate\")},di.prototype.disable=function(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove(\"mapboxgl-touch-zoom-rotate\")},di.prototype.isEnabled=function(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()},di.prototype.isActive=function(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()},di.prototype.disableRotation=function(){this._rotationDisabled=!0,this._touchRotate.disable()},di.prototype.enableRotation=function(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable()};var gi=function(t){return t.zoom||t.drag||t.pitch||t.rotate},mi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(t.Event);function vi(t){return t.panDelta&&t.panDelta.mag()||t.zoomDelta||t.bearingDelta||t.pitchDelta}var yi=function(e,n){this._map=e,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new On(e),this._bearingSnap=n.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(n),t.bindAll([\"handleEvent\",\"handleWindowEvent\"],this);var i=this._el;this._listeners=[[i,\"touchstart\",{passive:!1}],[i,\"touchmove\",{passive:!1}],[i,\"touchend\",void 0],[i,\"touchcancel\",void 0],[i,\"mousedown\",void 0],[i,\"mousemove\",void 0],[i,\"mouseup\",void 0],[t.window.document,\"mousemove\",{capture:!0}],[t.window.document,\"mouseup\",void 0],[i,\"mouseover\",void 0],[i,\"mouseout\",void 0],[i,\"dblclick\",void 0],[i,\"click\",void 0],[i,\"keydown\",{capture:!1}],[i,\"keyup\",void 0],[i,\"wheel\",{passive:!1}],[i,\"contextmenu\",void 0],[t.window,\"blur\",void 0]];for(var a=0,o=this._listeners;aa?Math.min(2,_):Math.max(.5,_),w=Math.pow(m,1-e),T=i.unproject(x.add(b.mult(e*w)).mult(g));i.setLocationAtPoint(i.renderWorldCopies?T.wrap():T,d)}n._fireMoveEvents(r)}),(function(t){n._afterEase(r,t)}),e),this},r.prototype._prepareEase=function(e,r,n){void 0===n&&(n={}),this._moving=!0,r||n.moving||this.fire(new t.Event(\"movestart\",e)),this._zooming&&!n.zooming&&this.fire(new t.Event(\"zoomstart\",e)),this._rotating&&!n.rotating&&this.fire(new t.Event(\"rotatestart\",e)),this._pitching&&!n.pitching&&this.fire(new t.Event(\"pitchstart\",e))},r.prototype._fireMoveEvents=function(e){this.fire(new t.Event(\"move\",e)),this._zooming&&this.fire(new t.Event(\"zoom\",e)),this._rotating&&this.fire(new t.Event(\"rotate\",e)),this._pitching&&this.fire(new t.Event(\"pitch\",e))},r.prototype._afterEase=function(e,r){if(!this._easeId||!r||this._easeId!==r){delete this._easeId;var n=this._zooming,i=this._rotating,a=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,n&&this.fire(new t.Event(\"zoomend\",e)),i&&this.fire(new t.Event(\"rotateend\",e)),a&&this.fire(new t.Event(\"pitchend\",e)),this.fire(new t.Event(\"moveend\",e))}},r.prototype.flyTo=function(e,r){var n=this;if(!e.essential&&t.browser.prefersReducedMotion){var i=t.pick(e,[\"center\",\"zoom\",\"bearing\",\"pitch\",\"around\"]);return this.jumpTo(i,r)}this.stop(),e=t.extend({offset:[0,0],speed:1.2,curve:1.42,easing:t.ease},e);var a=this.transform,o=this.getZoom(),s=this.getBearing(),l=this.getPitch(),c=this.getPadding(),u=\"zoom\"in e?t.clamp(+e.zoom,a.minZoom,a.maxZoom):o,f=\"bearing\"in e?this._normalizeBearing(e.bearing,s):s,h=\"pitch\"in e?+e.pitch:l,p=\"padding\"in e?e.padding:a.padding,d=a.zoomScale(u-o),g=t.Point.convert(e.offset),m=a.centerPoint.add(g),v=a.pointLocation(m),y=t.LngLat.convert(e.center||v);this._normalizeCenter(y);var x=a.project(v),b=a.project(y).sub(x),_=e.curve,w=Math.max(a.width,a.height),T=w/d,k=b.mag();if(\"minZoom\"in e){var A=t.clamp(Math.min(e.minZoom,o,u),a.minZoom,a.maxZoom),M=w/a.zoomScale(A-o);_=Math.sqrt(M/k*2)}var S=_*_;function E(t){var e=(T*T-w*w+(t?-1:1)*S*S*k*k)/(2*(t?T:w)*S*k);return Math.log(Math.sqrt(e*e+1)-e)}function L(t){return(Math.exp(t)-Math.exp(-t))/2}function C(t){return(Math.exp(t)+Math.exp(-t))/2}var P=E(0),I=function(t){return C(P)/C(P+_*t)},O=function(t){return w*((C(P)*(L(e=P+_*t)/C(e))-L(P))/S)/k;var e},z=(E(1)-P)/_;if(Math.abs(k)<1e-6||!isFinite(z)){if(Math.abs(w-T)<1e-6)return this.easeTo(e,r);var D=Te.maxDuration&&(e.duration=0),this._zooming=!0,this._rotating=s!==f,this._pitching=h!==l,this._padding=!a.isPaddingEqual(p),this._prepareEase(r,!1),this._ease((function(e){var i=e*z,d=1/I(i);a.zoom=1===e?u:o+a.scaleZoom(d),n._rotating&&(a.bearing=t.number(s,f,e)),n._pitching&&(a.pitch=t.number(l,h,e)),n._padding&&(a.interpolatePadding(c,p,e),m=a.centerPoint.add(g));var v=1===e?y:a.unproject(x.add(b.mult(O(i))).mult(d));a.setLocationAtPoint(a.renderWorldCopies?v.wrap():v,m),n._fireMoveEvents(r)}),(function(){return n._afterEase(r)}),e),this},r.prototype.isEasing=function(){return!!this._easeFrameId},r.prototype.stop=function(){return this._stop()},r.prototype._stop=function(t,e){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){var r=this._onEaseEnd;delete this._onEaseEnd,r.call(this,e)}if(!t){var n=this.handlers;n&&n.stop()}return this},r.prototype._ease=function(e,r,n){!1===n.animate||0===n.duration?(e(1),r()):(this._easeStart=t.browser.now(),this._easeOptions=n,this._onEaseFrame=e,this._onEaseEnd=r,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))},r.prototype._renderFrameCallback=function(){var e=Math.min((t.browser.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(e)),e<1?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()},r.prototype._normalizeBearing=function(e,r){e=t.wrap(e,-180,180);var n=Math.abs(e-r);return Math.abs(e-360-r)180?-360:r<-180?360:0}},r}(t.Evented),bi=function(e){void 0===e&&(e={}),this.options=e,t.bindAll([\"_updateEditLink\",\"_updateData\",\"_updateCompact\"],this)};bi.prototype.getDefaultPosition=function(){return\"bottom-right\"},bi.prototype.onAdd=function(t){var e=this.options&&this.options.compact;return this._map=t,this._container=r.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-attrib\"),this._innerContainer=r.create(\"div\",\"mapboxgl-ctrl-attrib-inner\",this._container),e&&this._container.classList.add(\"mapboxgl-compact\"),this._updateAttributions(),this._updateEditLink(),this._map.on(\"styledata\",this._updateData),this._map.on(\"sourcedata\",this._updateData),this._map.on(\"moveend\",this._updateEditLink),void 0===e&&(this._map.on(\"resize\",this._updateCompact),this._updateCompact()),this._container},bi.prototype.onRemove=function(){r.remove(this._container),this._map.off(\"styledata\",this._updateData),this._map.off(\"sourcedata\",this._updateData),this._map.off(\"moveend\",this._updateEditLink),this._map.off(\"resize\",this._updateCompact),this._map=void 0,this._attribHTML=void 0},bi.prototype._updateEditLink=function(){var e=this._editLink;e||(e=this._editLink=this._container.querySelector(\".mapbox-improve-map\"));var r=[{key:\"owner\",value:this.styleOwner},{key:\"id\",value:this.styleId},{key:\"access_token\",value:this._map._requestManager._customAccessToken||t.config.ACCESS_TOKEN}];if(e){var n=r.reduce((function(t,e,n){return e.value&&(t+=e.key+\"=\"+e.value+(n=0)return!1;return!0}))).join(\" | \");o!==this._attribHTML&&(this._attribHTML=o,t.length?(this._innerContainer.innerHTML=o,this._container.classList.remove(\"mapboxgl-attrib-empty\")):this._container.classList.add(\"mapboxgl-attrib-empty\"),this._editLink=null)}},bi.prototype._updateCompact=function(){this._map.getCanvasContainer().offsetWidth<=640?this._container.classList.add(\"mapboxgl-compact\"):this._container.classList.remove(\"mapboxgl-compact\")};var _i=function(){t.bindAll([\"_updateLogo\"],this),t.bindAll([\"_updateCompact\"],this)};_i.prototype.onAdd=function(t){this._map=t,this._container=r.create(\"div\",\"mapboxgl-ctrl\");var e=r.create(\"a\",\"mapboxgl-ctrl-logo\");return e.target=\"_blank\",e.rel=\"noopener nofollow\",e.href=\"https://www.mapbox.com/\",e.setAttribute(\"aria-label\",this._map._getUIString(\"LogoControl.Title\")),e.setAttribute(\"rel\",\"noopener nofollow\"),this._container.appendChild(e),this._container.style.display=\"none\",this._map.on(\"sourcedata\",this._updateLogo),this._updateLogo(),this._map.on(\"resize\",this._updateCompact),this._updateCompact(),this._container},_i.prototype.onRemove=function(){r.remove(this._container),this._map.off(\"sourcedata\",this._updateLogo),this._map.off(\"resize\",this._updateCompact)},_i.prototype.getDefaultPosition=function(){return\"bottom-left\"},_i.prototype._updateLogo=function(t){t&&\"metadata\"!==t.sourceDataType||(this._container.style.display=this._logoRequired()?\"block\":\"none\")},_i.prototype._logoRequired=function(){if(this._map.style){var t=this._map.style.sourceCaches;for(var e in t){if(t[e].getSource().mapbox_logo)return!0}return!1}},_i.prototype._updateCompact=function(){var t=this._container.children;if(t.length){var e=t[0];this._map.getCanvasContainer().offsetWidth<250?e.classList.add(\"mapboxgl-compact\"):e.classList.remove(\"mapboxgl-compact\")}};var wi=function(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1};wi.prototype.add=function(t){var e=++this._id;return this._queue.push({callback:t,id:e,cancelled:!1}),e},wi.prototype.remove=function(t){for(var e=this._currentlyRunning,r=0,n=e?this._queue.concat(e):this._queue;re.maxZoom)throw new Error(\"maxZoom must be greater than or equal to minZoom\");if(null!=e.minPitch&&null!=e.maxPitch&&e.minPitch>e.maxPitch)throw new Error(\"maxPitch must be greater than or equal to minPitch\");if(null!=e.minPitch&&e.minPitch<0)throw new Error(\"minPitch must be greater than or equal to 0\");if(null!=e.maxPitch&&e.maxPitch>60)throw new Error(\"maxPitch must be less than or equal to 60\");var i=new An(e.minZoom,e.maxZoom,e.minPitch,e.maxPitch,e.renderWorldCopies);if(n.call(this,i,e),this._interactive=e.interactive,this._maxTileCacheSize=e.maxTileCacheSize,this._failIfMajorPerformanceCaveat=e.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=e.preserveDrawingBuffer,this._antialias=e.antialias,this._trackResize=e.trackResize,this._bearingSnap=e.bearingSnap,this._refreshExpiredTiles=e.refreshExpiredTiles,this._fadeDuration=e.fadeDuration,this._crossSourceCollisions=e.crossSourceCollisions,this._crossFadingFactor=1,this._collectResourceTiming=e.collectResourceTiming,this._renderTaskQueue=new wi,this._controls=[],this._mapId=t.uniqueId(),this._locale=t.extend({},Ti,e.locale),this._requestManager=new t.RequestManager(e.transformRequest,e.accessToken),\"string\"==typeof e.container){if(this._container=t.window.document.getElementById(e.container),!this._container)throw new Error(\"Container '\"+e.container+\"' not found.\")}else{if(!(e.container instanceof Ai))throw new Error(\"Invalid type: 'container' must be a String or HTMLElement.\");this._container=e.container}if(e.maxBounds&&this.setMaxBounds(e.maxBounds),t.bindAll([\"_onWindowOnline\",\"_onWindowResize\",\"_contextLost\",\"_contextRestored\"],this),this._setupContainer(),this._setupPainter(),void 0===this.painter)throw new Error(\"Failed to initialize WebGL.\");this.on(\"move\",(function(){return r._update(!1)})),this.on(\"moveend\",(function(){return r._update(!1)})),this.on(\"zoom\",(function(){return r._update(!0)})),void 0!==t.window&&(t.window.addEventListener(\"online\",this._onWindowOnline,!1),t.window.addEventListener(\"resize\",this._onWindowResize,!1)),this.handlers=new yi(this,e);var a=\"string\"==typeof e.hash&&e.hash||void 0;this._hash=e.hash&&new Sn(a).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:e.center,zoom:e.zoom,bearing:e.bearing,pitch:e.pitch}),e.bounds&&(this.resize(),this.fitBounds(e.bounds,t.extend({},e.fitBoundsOptions,{duration:0})))),this.resize(),this._localIdeographFontFamily=e.localIdeographFontFamily,e.style&&this.setStyle(e.style,{localIdeographFontFamily:e.localIdeographFontFamily}),e.attributionControl&&this.addControl(new bi({customAttribution:e.customAttribution})),this.addControl(new _i,e.logoPosition),this.on(\"style.load\",(function(){r.transform.unmodified&&r.jumpTo(r.style.stylesheet)})),this.on(\"data\",(function(e){r._update(\"style\"===e.dataType),r.fire(new t.Event(e.dataType+\"data\",e))})),this.on(\"dataloading\",(function(e){r.fire(new t.Event(e.dataType+\"dataloading\",e))}))}n&&(i.__proto__=n),i.prototype=Object.create(n&&n.prototype),i.prototype.constructor=i;var a={showTileBoundaries:{configurable:!0},showPadding:{configurable:!0},showCollisionBoxes:{configurable:!0},showOverdrawInspector:{configurable:!0},repaint:{configurable:!0},vertices:{configurable:!0},version:{configurable:!0}};return i.prototype._getMapId=function(){return this._mapId},i.prototype.addControl=function(e,r){if(void 0===r&&e.getDefaultPosition&&(r=e.getDefaultPosition()),void 0===r&&(r=\"top-right\"),!e||!e.onAdd)return this.fire(new t.ErrorEvent(new Error(\"Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.\")));var n=e.onAdd(this);this._controls.push(e);var i=this._controlPositions[r];return-1!==r.indexOf(\"bottom\")?i.insertBefore(n,i.firstChild):i.appendChild(n),this},i.prototype.removeControl=function(e){if(!e||!e.onRemove)return this.fire(new t.ErrorEvent(new Error(\"Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.\")));var r=this._controls.indexOf(e);return r>-1&&this._controls.splice(r,1),e.onRemove(this),this},i.prototype.resize=function(e){var r=this._containerDimensions(),n=r[0],i=r[1];this._resizeCanvas(n,i),this.transform.resize(n,i),this.painter.resize(n,i);var a=!this._moving;return a&&(this.stop(),this.fire(new t.Event(\"movestart\",e)).fire(new t.Event(\"move\",e))),this.fire(new t.Event(\"resize\",e)),a&&this.fire(new t.Event(\"moveend\",e)),this},i.prototype.getBounds=function(){return this.transform.getBounds()},i.prototype.getMaxBounds=function(){return this.transform.getMaxBounds()},i.prototype.setMaxBounds=function(e){return this.transform.setMaxBounds(t.LngLatBounds.convert(e)),this._update()},i.prototype.setMinZoom=function(t){if((t=null==t?-2:t)>=-2&&t<=this.transform.maxZoom)return this.transform.minZoom=t,this._update(),this.getZoom()=this.transform.minZoom)return this.transform.maxZoom=t,this._update(),this.getZoom()>t&&this.setZoom(t),this;throw new Error(\"maxZoom must be greater than the current minZoom\")},i.prototype.getMaxZoom=function(){return this.transform.maxZoom},i.prototype.setMinPitch=function(t){if((t=null==t?0:t)<0)throw new Error(\"minPitch must be greater than or equal to 0\");if(t>=0&&t<=this.transform.maxPitch)return this.transform.minPitch=t,this._update(),this.getPitch()60)throw new Error(\"maxPitch must be less than or equal to 60\");if(t>=this.transform.minPitch)return this.transform.maxPitch=t,this._update(),this.getPitch()>t&&this.setPitch(t),this;throw new Error(\"maxPitch must be greater than the current minPitch\")},i.prototype.getMaxPitch=function(){return this.transform.maxPitch},i.prototype.getRenderWorldCopies=function(){return this.transform.renderWorldCopies},i.prototype.setRenderWorldCopies=function(t){return this.transform.renderWorldCopies=t,this._update()},i.prototype.project=function(e){return this.transform.locationPoint(t.LngLat.convert(e))},i.prototype.unproject=function(e){return this.transform.pointLocation(t.Point.convert(e))},i.prototype.isMoving=function(){return this._moving||this.handlers.isMoving()},i.prototype.isZooming=function(){return this._zooming||this.handlers.isZooming()},i.prototype.isRotating=function(){return this._rotating||this.handlers.isRotating()},i.prototype._createDelegatedListener=function(t,e,r){var n,i=this;if(\"mouseenter\"===t||\"mouseover\"===t){var a=!1;return{layer:e,listener:r,delegates:{mousemove:function(n){var o=i.getLayer(e)?i.queryRenderedFeatures(n.point,{layers:[e]}):[];o.length?a||(a=!0,r.call(i,new Rn(t,i,n.originalEvent,{features:o}))):a=!1},mouseout:function(){a=!1}}}}if(\"mouseleave\"===t||\"mouseout\"===t){var o=!1;return{layer:e,listener:r,delegates:{mousemove:function(n){(i.getLayer(e)?i.queryRenderedFeatures(n.point,{layers:[e]}):[]).length?o=!0:o&&(o=!1,r.call(i,new Rn(t,i,n.originalEvent)))},mouseout:function(e){o&&(o=!1,r.call(i,new Rn(t,i,e.originalEvent)))}}}}return{layer:e,listener:r,delegates:(n={},n[t]=function(t){var n=i.getLayer(e)?i.queryRenderedFeatures(t.point,{layers:[e]}):[];n.length&&(t.features=n,r.call(i,t),delete t.features)},n)}},i.prototype.on=function(t,e,r){if(void 0===r)return n.prototype.on.call(this,t,e);var i=this._createDelegatedListener(t,e,r);for(var a in this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[t]=this._delegatedListeners[t]||[],this._delegatedListeners[t].push(i),i.delegates)this.on(a,i.delegates[a]);return this},i.prototype.once=function(t,e,r){if(void 0===r)return n.prototype.once.call(this,t,e);var i=this._createDelegatedListener(t,e,r);for(var a in i.delegates)this.once(a,i.delegates[a]);return this},i.prototype.off=function(t,e,r){var i=this;if(void 0===r)return n.prototype.off.call(this,t,e);return this._delegatedListeners&&this._delegatedListeners[t]&&function(n){for(var a=n[t],o=0;o180;){var s=n.locationPoint(e);if(s.x>=0&&s.y>=0&&s.x<=n.width&&s.y<=n.height)break;e.lng>n.center.lng?e.lng-=360:e.lng+=360}return e}Ii.prototype.down=function(t,e){this.mouseRotate.mousedown(t,e),this.mousePitch&&this.mousePitch.mousedown(t,e),r.disableDrag()},Ii.prototype.move=function(t,e){var r=this.map,n=this.mouseRotate.mousemoveWindow(t,e);if(n&&n.bearingDelta&&r.setBearing(r.getBearing()+n.bearingDelta),this.mousePitch){var i=this.mousePitch.mousemoveWindow(t,e);i&&i.pitchDelta&&r.setPitch(r.getPitch()+i.pitchDelta)}},Ii.prototype.off=function(){var t=this.element;r.removeEventListener(t,\"mousedown\",this.mousedown),r.removeEventListener(t,\"touchstart\",this.touchstart,{passive:!1}),r.removeEventListener(t,\"touchmove\",this.touchmove),r.removeEventListener(t,\"touchend\",this.touchend),r.removeEventListener(t,\"touchcancel\",this.reset),this.offTemp()},Ii.prototype.offTemp=function(){r.enableDrag(),r.removeEventListener(t.window,\"mousemove\",this.mousemove),r.removeEventListener(t.window,\"mouseup\",this.mouseup)},Ii.prototype.mousedown=function(e){this.down(t.extend({},e,{ctrlKey:!0,preventDefault:function(){return e.preventDefault()}}),r.mousePos(this.element,e)),r.addEventListener(t.window,\"mousemove\",this.mousemove),r.addEventListener(t.window,\"mouseup\",this.mouseup)},Ii.prototype.mousemove=function(t){this.move(t,r.mousePos(this.element,t))},Ii.prototype.mouseup=function(t){this.mouseRotate.mouseupWindow(t),this.mousePitch&&this.mousePitch.mouseupWindow(t),this.offTemp()},Ii.prototype.touchstart=function(t){1!==t.targetTouches.length?this.reset():(this._startPos=this._lastPos=r.touchPos(this.element,t.targetTouches)[0],this.down({type:\"mousedown\",button:0,ctrlKey:!0,preventDefault:function(){return t.preventDefault()}},this._startPos))},Ii.prototype.touchmove=function(t){1!==t.targetTouches.length?this.reset():(this._lastPos=r.touchPos(this.element,t.targetTouches)[0],this.move({preventDefault:function(){return t.preventDefault()}},this._lastPos))},Ii.prototype.touchend=function(t){0===t.targetTouches.length&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos)e.getEast()||r.latitudee.getNorth())},n.prototype._setErrorState=function(){switch(this._watchState){case\"WAITING_ACTIVE\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\");break;case\"ACTIVE_LOCK\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\");break;case\"BACKGROUND\":this._watchState=\"BACKGROUND_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\")}},n.prototype._onSuccess=function(e){if(this._map){if(this._isOutOfMapMaxBounds(e))return this._setErrorState(),this.fire(new t.Event(\"outofmaxbounds\",e)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=e,this._watchState){case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"BACKGROUND\":case\"BACKGROUND_ERROR\":this._watchState=\"BACKGROUND\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\")}this.options.showUserLocation&&\"OFF\"!==this._watchState&&this._updateMarker(e),this.options.trackUserLocation&&\"ACTIVE_LOCK\"!==this._watchState||this._updateCamera(e),this.options.showUserLocation&&this._dotElement.classList.remove(\"mapboxgl-user-location-dot-stale\"),this.fire(new t.Event(\"geolocate\",e)),this._finish()}},n.prototype._updateCamera=function(e){var r=new t.LngLat(e.coords.longitude,e.coords.latitude),n=e.coords.accuracy,i=this._map.getBearing(),a=t.extend({bearing:i},this.options.fitBoundsOptions);this._map.fitBounds(r.toBounds(n),a,{geolocateSource:!0})},n.prototype._updateMarker=function(e){if(e){var r=new t.LngLat(e.coords.longitude,e.coords.latitude);this._accuracyCircleMarker.setLngLat(r).addTo(this._map),this._userLocationDotMarker.setLngLat(r).addTo(this._map),this._accuracy=e.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()},n.prototype._updateCircleRadius=function(){var t=this._map._container.clientHeight/2,e=this._map.unproject([0,t]),r=this._map.unproject([1,t]),n=e.distanceTo(r),i=Math.ceil(2*this._accuracy/n);this._circleElement.style.width=i+\"px\",this._circleElement.style.height=i+\"px\"},n.prototype._onZoom=function(){this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()},n.prototype._onError=function(e){if(this._map){if(this.options.trackUserLocation)if(1===e.code){this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.disabled=!0;var r=this._map._getUIString(\"GeolocateControl.LocationNotAvailable\");this._geolocateButton.title=r,this._geolocateButton.setAttribute(\"aria-label\",r),void 0!==this._geolocationWatchID&&this._clearWatch()}else{if(3===e.code&&ji)return;this._setErrorState()}\"OFF\"!==this._watchState&&this.options.showUserLocation&&this._dotElement.classList.add(\"mapboxgl-user-location-dot-stale\"),this.fire(new t.Event(\"error\",e)),this._finish()}},n.prototype._finish=function(){this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},n.prototype._setupUI=function(e){var n=this;if(this._container.addEventListener(\"contextmenu\",(function(t){return t.preventDefault()})),this._geolocateButton=r.create(\"button\",\"mapboxgl-ctrl-geolocate\",this._container),r.create(\"span\",\"mapboxgl-ctrl-icon\",this._geolocateButton).setAttribute(\"aria-hidden\",!0),this._geolocateButton.type=\"button\",!1===e){t.warnOnce(\"Geolocation support is not available so the GeolocateControl will be disabled.\");var i=this._map._getUIString(\"GeolocateControl.LocationNotAvailable\");this._geolocateButton.disabled=!0,this._geolocateButton.title=i,this._geolocateButton.setAttribute(\"aria-label\",i)}else{var a=this._map._getUIString(\"GeolocateControl.FindMyLocation\");this._geolocateButton.title=a,this._geolocateButton.setAttribute(\"aria-label\",a)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this._watchState=\"OFF\"),this.options.showUserLocation&&(this._dotElement=r.create(\"div\",\"mapboxgl-user-location-dot\"),this._userLocationDotMarker=new Fi(this._dotElement),this._circleElement=r.create(\"div\",\"mapboxgl-user-location-accuracy-circle\"),this._accuracyCircleMarker=new Fi({element:this._circleElement,pitchAlignment:\"map\"}),this.options.trackUserLocation&&(this._watchState=\"OFF\"),this._map.on(\"zoom\",this._onZoom)),this._geolocateButton.addEventListener(\"click\",this.trigger.bind(this)),this._setup=!0,this.options.trackUserLocation&&this._map.on(\"movestart\",(function(e){var r=e.originalEvent&&\"resize\"===e.originalEvent.type;e.geolocateSource||\"ACTIVE_LOCK\"!==n._watchState||r||(n._watchState=\"BACKGROUND\",n._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\"),n._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),n.fire(new t.Event(\"trackuserlocationend\")))}))},n.prototype.trigger=function(){if(!this._setup)return t.warnOnce(\"Geolocate control triggered before added to a map\"),!1;if(this.options.trackUserLocation){switch(this._watchState){case\"OFF\":this._watchState=\"WAITING_ACTIVE\",this.fire(new t.Event(\"trackuserlocationstart\"));break;case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":case\"BACKGROUND_ERROR\":Ni--,ji=!1,this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this.fire(new t.Event(\"trackuserlocationend\"));break;case\"BACKGROUND\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new t.Event(\"trackuserlocationstart\"))}switch(this._watchState){case\"WAITING_ACTIVE\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"ACTIVE_LOCK\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"ACTIVE_ERROR\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\");break;case\"BACKGROUND\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\");break;case\"BACKGROUND_ERROR\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background-error\")}if(\"OFF\"===this._watchState&&void 0!==this._geolocationWatchID)this._clearWatch();else if(void 0===this._geolocationWatchID){var e;this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"true\"),++Ni>1?(e={maximumAge:6e5,timeout:0},ji=!0):(e=this.options.positionOptions,ji=!1),this._geolocationWatchID=t.window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,e)}}else t.window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return!0},n.prototype._clearWatch=function(){t.window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this.options.showUserLocation&&this._updateMarker(null)},n}(t.Evented),Vi={maxWidth:100,unit:\"metric\"},Hi=function(e){this.options=t.extend({},Vi,e),t.bindAll([\"_onMove\",\"setUnit\"],this)};function qi(t,e,r){var n=r&&r.maxWidth||100,i=t._container.clientHeight/2,a=t.unproject([0,i]),o=t.unproject([n,i]),s=a.distanceTo(o);if(r&&\"imperial\"===r.unit){var l=3.2808*s;if(l>5280)Gi(e,n,l/5280,t._getUIString(\"ScaleControl.Miles\"));else Gi(e,n,l,t._getUIString(\"ScaleControl.Feet\"))}else if(r&&\"nautical\"===r.unit){Gi(e,n,s/1852,t._getUIString(\"ScaleControl.NauticalMiles\"))}else s>=1e3?Gi(e,n,s/1e3,t._getUIString(\"ScaleControl.Kilometers\")):Gi(e,n,s,t._getUIString(\"ScaleControl.Meters\"))}function Gi(t,e,r,n){var i,a,o,s=(i=r,a=Math.pow(10,(\"\"+Math.floor(i)).length-1),o=(o=i/a)>=10?10:o>=5?5:o>=3?3:o>=2?2:o>=1?1:function(t){var e=Math.pow(10,Math.ceil(-Math.log(t)/Math.LN10));return Math.round(t*e)/e}(o),a*o),l=s/r;t.style.width=e*l+\"px\",t.innerHTML=s+\" \"+n}Hi.prototype.getDefaultPosition=function(){return\"bottom-left\"},Hi.prototype._onMove=function(){qi(this._map,this._container,this.options)},Hi.prototype.onAdd=function(t){return this._map=t,this._container=r.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-scale\",t.getContainer()),this._map.on(\"move\",this._onMove),this._onMove(),this._container},Hi.prototype.onRemove=function(){r.remove(this._container),this._map.off(\"move\",this._onMove),this._map=void 0},Hi.prototype.setUnit=function(t){this.options.unit=t,qi(this._map,this._container,this.options)};var Yi=function(e){this._fullscreen=!1,e&&e.container&&(e.container instanceof t.window.HTMLElement?this._container=e.container:t.warnOnce(\"Full screen control 'container' must be a DOM element.\")),t.bindAll([\"_onClickFullscreen\",\"_changeIcon\"],this),\"onfullscreenchange\"in t.window.document?this._fullscreenchange=\"fullscreenchange\":\"onmozfullscreenchange\"in t.window.document?this._fullscreenchange=\"mozfullscreenchange\":\"onwebkitfullscreenchange\"in t.window.document?this._fullscreenchange=\"webkitfullscreenchange\":\"onmsfullscreenchange\"in t.window.document&&(this._fullscreenchange=\"MSFullscreenChange\")};Yi.prototype.onAdd=function(e){return this._map=e,this._container||(this._container=this._map.getContainer()),this._controlContainer=r.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-group\"),this._checkFullscreenSupport()?this._setupUI():(this._controlContainer.style.display=\"none\",t.warnOnce(\"This device does not support fullscreen mode.\")),this._controlContainer},Yi.prototype.onRemove=function(){r.remove(this._controlContainer),this._map=null,t.window.document.removeEventListener(this._fullscreenchange,this._changeIcon)},Yi.prototype._checkFullscreenSupport=function(){return!!(t.window.document.fullscreenEnabled||t.window.document.mozFullScreenEnabled||t.window.document.msFullscreenEnabled||t.window.document.webkitFullscreenEnabled)},Yi.prototype._setupUI=function(){var e=this._fullscreenButton=r.create(\"button\",\"mapboxgl-ctrl-fullscreen\",this._controlContainer);r.create(\"span\",\"mapboxgl-ctrl-icon\",e).setAttribute(\"aria-hidden\",!0),e.type=\"button\",this._updateTitle(),this._fullscreenButton.addEventListener(\"click\",this._onClickFullscreen),t.window.document.addEventListener(this._fullscreenchange,this._changeIcon)},Yi.prototype._updateTitle=function(){var t=this._getTitle();this._fullscreenButton.setAttribute(\"aria-label\",t),this._fullscreenButton.title=t},Yi.prototype._getTitle=function(){return this._map._getUIString(this._isFullscreen()?\"FullscreenControl.Exit\":\"FullscreenControl.Enter\")},Yi.prototype._isFullscreen=function(){return this._fullscreen},Yi.prototype._changeIcon=function(){(t.window.document.fullscreenElement||t.window.document.mozFullScreenElement||t.window.document.webkitFullscreenElement||t.window.document.msFullscreenElement)===this._container!==this._fullscreen&&(this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle(\"mapboxgl-ctrl-shrink\"),this._fullscreenButton.classList.toggle(\"mapboxgl-ctrl-fullscreen\"),this._updateTitle())},Yi.prototype._onClickFullscreen=function(){this._isFullscreen()?t.window.document.exitFullscreen?t.window.document.exitFullscreen():t.window.document.mozCancelFullScreen?t.window.document.mozCancelFullScreen():t.window.document.msExitFullscreen?t.window.document.msExitFullscreen():t.window.document.webkitCancelFullScreen&&t.window.document.webkitCancelFullScreen():this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen&&this._container.webkitRequestFullscreen()};var Wi={closeButton:!0,closeOnClick:!0,className:\"\",maxWidth:\"240px\"},Xi=function(e){function n(r){e.call(this),this.options=t.extend(Object.create(Wi),r),t.bindAll([\"_update\",\"_onClose\",\"remove\",\"_onMouseMove\",\"_onMouseUp\",\"_onDrag\"],this)}return e&&(n.__proto__=e),n.prototype=Object.create(e&&e.prototype),n.prototype.constructor=n,n.prototype.addTo=function(e){return this._map&&this.remove(),this._map=e,this.options.closeOnClick&&this._map.on(\"click\",this._onClose),this.options.closeOnMove&&this._map.on(\"move\",this._onClose),this._map.on(\"remove\",this.remove),this._update(),this._trackPointer?(this._map.on(\"mousemove\",this._onMouseMove),this._map.on(\"mouseup\",this._onMouseUp),this._container&&this._container.classList.add(\"mapboxgl-popup-track-pointer\"),this._map._canvasContainer.classList.add(\"mapboxgl-track-pointer\")):this._map.on(\"move\",this._update),this.fire(new t.Event(\"open\")),this},n.prototype.isOpen=function(){return!!this._map},n.prototype.remove=function(){return this._content&&r.remove(this._content),this._container&&(r.remove(this._container),delete this._container),this._map&&(this._map.off(\"move\",this._update),this._map.off(\"move\",this._onClose),this._map.off(\"click\",this._onClose),this._map.off(\"remove\",this.remove),this._map.off(\"mousemove\",this._onMouseMove),this._map.off(\"mouseup\",this._onMouseUp),this._map.off(\"drag\",this._onDrag),delete this._map),this.fire(new t.Event(\"close\")),this},n.prototype.getLngLat=function(){return this._lngLat},n.prototype.setLngLat=function(e){return this._lngLat=t.LngLat.convert(e),this._pos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on(\"move\",this._update),this._map.off(\"mousemove\",this._onMouseMove),this._container&&this._container.classList.remove(\"mapboxgl-popup-track-pointer\"),this._map._canvasContainer.classList.remove(\"mapboxgl-track-pointer\")),this},n.prototype.trackPointer=function(){return this._trackPointer=!0,this._pos=null,this._update(),this._map&&(this._map.off(\"move\",this._update),this._map.on(\"mousemove\",this._onMouseMove),this._map.on(\"drag\",this._onDrag),this._container&&this._container.classList.add(\"mapboxgl-popup-track-pointer\"),this._map._canvasContainer.classList.add(\"mapboxgl-track-pointer\")),this},n.prototype.getElement=function(){return this._container},n.prototype.setText=function(e){return this.setDOMContent(t.window.document.createTextNode(e))},n.prototype.setHTML=function(e){var r,n=t.window.document.createDocumentFragment(),i=t.window.document.createElement(\"body\");for(i.innerHTML=e;r=i.firstChild;)n.appendChild(r);return this.setDOMContent(n)},n.prototype.getMaxWidth=function(){return this._container&&this._container.style.maxWidth},n.prototype.setMaxWidth=function(t){return this.options.maxWidth=t,this._update(),this},n.prototype.setDOMContent=function(t){return this._createContent(),this._content.appendChild(t),this._update(),this},n.prototype.addClassName=function(t){this._container&&this._container.classList.add(t)},n.prototype.removeClassName=function(t){this._container&&this._container.classList.remove(t)},n.prototype.toggleClassName=function(t){if(this._container)return this._container.classList.toggle(t)},n.prototype._createContent=function(){this._content&&r.remove(this._content),this._content=r.create(\"div\",\"mapboxgl-popup-content\",this._container),this.options.closeButton&&(this._closeButton=r.create(\"button\",\"mapboxgl-popup-close-button\",this._content),this._closeButton.type=\"button\",this._closeButton.setAttribute(\"aria-label\",\"Close popup\"),this._closeButton.innerHTML=\"×\",this._closeButton.addEventListener(\"click\",this._onClose))},n.prototype._onMouseUp=function(t){this._update(t.point)},n.prototype._onMouseMove=function(t){this._update(t.point)},n.prototype._onDrag=function(t){this._update(t.point)},n.prototype._update=function(e){var n=this,i=this._lngLat||this._trackPointer;if(this._map&&i&&this._content&&(this._container||(this._container=r.create(\"div\",\"mapboxgl-popup\",this._map.getContainer()),this._tip=r.create(\"div\",\"mapboxgl-popup-tip\",this._container),this._container.appendChild(this._content),this.options.className&&this.options.className.split(\" \").forEach((function(t){return n._container.classList.add(t)})),this._trackPointer&&this._container.classList.add(\"mapboxgl-popup-track-pointer\")),this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._map.transform.renderWorldCopies&&!this._trackPointer&&(this._lngLat=Oi(this._lngLat,this._pos,this._map.transform)),!this._trackPointer||e)){var a=this._pos=this._trackPointer&&e?e:this._map.project(this._lngLat),o=this.options.anchor,s=function e(r){if(r){if(\"number\"==typeof r){var n=Math.round(Math.sqrt(.5*Math.pow(r,2)));return{center:new t.Point(0,0),top:new t.Point(0,r),\"top-left\":new t.Point(n,n),\"top-right\":new t.Point(-n,n),bottom:new t.Point(0,-r),\"bottom-left\":new t.Point(n,-n),\"bottom-right\":new t.Point(-n,-n),left:new t.Point(r,0),right:new t.Point(-r,0)}}if(r instanceof t.Point||Array.isArray(r)){var i=t.Point.convert(r);return{center:i,top:i,\"top-left\":i,\"top-right\":i,bottom:i,\"bottom-left\":i,\"bottom-right\":i,left:i,right:i}}return{center:t.Point.convert(r.center||[0,0]),top:t.Point.convert(r.top||[0,0]),\"top-left\":t.Point.convert(r[\"top-left\"]||[0,0]),\"top-right\":t.Point.convert(r[\"top-right\"]||[0,0]),bottom:t.Point.convert(r.bottom||[0,0]),\"bottom-left\":t.Point.convert(r[\"bottom-left\"]||[0,0]),\"bottom-right\":t.Point.convert(r[\"bottom-right\"]||[0,0]),left:t.Point.convert(r.left||[0,0]),right:t.Point.convert(r.right||[0,0])}}return e(new t.Point(0,0))}(this.options.offset);if(!o){var l,c=this._container.offsetWidth,u=this._container.offsetHeight;l=a.y+s.bottom.ythis._map.transform.height-u?[\"bottom\"]:[],a.xthis._map.transform.width-c/2&&l.push(\"right\"),o=0===l.length?\"bottom\":l.join(\"-\")}var f=a.add(s[o]).round();r.setTransform(this._container,zi[o]+\" translate(\"+f.x+\"px,\"+f.y+\"px)\"),Di(this._container,o,\"popup\")}},n.prototype._onClose=function(){this.remove()},n}(t.Evented);var Zi={version:t.version,supported:e,setRTLTextPlugin:t.setRTLTextPlugin,getRTLTextPluginStatus:t.getRTLTextPluginStatus,Map:Ei,NavigationControl:Pi,GeolocateControl:Ui,AttributionControl:bi,ScaleControl:Hi,FullscreenControl:Yi,Popup:Xi,Marker:Fi,Style:qe,LngLat:t.LngLat,LngLatBounds:t.LngLatBounds,Point:t.Point,MercatorCoordinate:t.MercatorCoordinate,Evented:t.Evented,config:t.config,prewarm:function(){Bt().acquire(zt)},clearPrewarmedResources:function(){var t=Rt;t&&(t.isPreloaded()&&1===t.numActive()?(t.release(zt),Rt=null):console.warn(\"Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()\"))},get accessToken(){return t.config.ACCESS_TOKEN},set accessToken(e){t.config.ACCESS_TOKEN=e},get baseApiUrl(){return t.config.API_URL},set baseApiUrl(e){t.config.API_URL=e},get workerCount(){return Dt.workerCount},set workerCount(t){Dt.workerCount=t},get maxParallelImageRequests(){return t.config.MAX_PARALLEL_IMAGE_REQUESTS},set maxParallelImageRequests(e){t.config.MAX_PARALLEL_IMAGE_REQUESTS=e},clearStorage:function(e){t.clearTileCache(e)},workerUrl:\"\"};return Zi})),r}))},{}],240:[function(t,e,r){\"use strict\";e.exports=Math.log2||function(t){return Math.log(t)*Math.LOG2E}},{}],241:[function(t,e,r){\"use strict\";e.exports=function(t,e){e||(e=t,t=window);var r=0,i=0,a=0,o={shift:!1,alt:!1,control:!1,meta:!1},s=!1;function l(t){var e=!1;return\"altKey\"in t&&(e=e||t.altKey!==o.alt,o.alt=!!t.altKey),\"shiftKey\"in t&&(e=e||t.shiftKey!==o.shift,o.shift=!!t.shiftKey),\"ctrlKey\"in t&&(e=e||t.ctrlKey!==o.control,o.control=!!t.ctrlKey),\"metaKey\"in t&&(e=e||t.metaKey!==o.meta,o.meta=!!t.metaKey),e}function c(t,s){var c=n.x(s),u=n.y(s);\"buttons\"in s&&(t=0|s.buttons),(t!==r||c!==i||u!==a||l(s))&&(r=0|t,i=c||0,a=u||0,e&&e(r,i,a,o))}function u(t){c(0,t)}function f(){(r||i||a||o.shift||o.alt||o.meta||o.control)&&(i=a=0,r=0,o.shift=o.alt=o.control=o.meta=!1,e&&e(0,0,0,o))}function h(t){l(t)&&e&&e(r,i,a,o)}function p(t){0===n.buttons(t)?c(0,t):c(r,t)}function d(t){c(r|n.buttons(t),t)}function g(t){c(r&~n.buttons(t),t)}function m(){s||(s=!0,t.addEventListener(\"mousemove\",p),t.addEventListener(\"mousedown\",d),t.addEventListener(\"mouseup\",g),t.addEventListener(\"mouseleave\",u),t.addEventListener(\"mouseenter\",u),t.addEventListener(\"mouseout\",u),t.addEventListener(\"mouseover\",u),t.addEventListener(\"blur\",f),t.addEventListener(\"keyup\",h),t.addEventListener(\"keydown\",h),t.addEventListener(\"keypress\",h),t!==window&&(window.addEventListener(\"blur\",f),window.addEventListener(\"keyup\",h),window.addEventListener(\"keydown\",h),window.addEventListener(\"keypress\",h)))}m();var v={element:t};return Object.defineProperties(v,{enabled:{get:function(){return s},set:function(e){e?m():function(){if(!s)return;s=!1,t.removeEventListener(\"mousemove\",p),t.removeEventListener(\"mousedown\",d),t.removeEventListener(\"mouseup\",g),t.removeEventListener(\"mouseleave\",u),t.removeEventListener(\"mouseenter\",u),t.removeEventListener(\"mouseout\",u),t.removeEventListener(\"mouseover\",u),t.removeEventListener(\"blur\",f),t.removeEventListener(\"keyup\",h),t.removeEventListener(\"keydown\",h),t.removeEventListener(\"keypress\",h),t!==window&&(window.removeEventListener(\"blur\",f),window.removeEventListener(\"keyup\",h),window.removeEventListener(\"keydown\",h),window.removeEventListener(\"keypress\",h))}()},enumerable:!0},buttons:{get:function(){return r},enumerable:!0},x:{get:function(){return i},enumerable:!0},y:{get:function(){return a},enumerable:!0},mods:{get:function(){return o},enumerable:!0}}),v};var n=t(\"mouse-event\")},{\"mouse-event\":243}],242:[function(t,e,r){var n={left:0,top:0};e.exports=function(t,e,r){e=e||t.currentTarget||t.srcElement,Array.isArray(r)||(r=[0,0]);var i=t.clientX||0,a=t.clientY||0,o=(s=e,s===window||s===document||s===document.body?n:s.getBoundingClientRect());var s;return r[0]=i-o.left,r[1]=a-o.top,r}},{}],243:[function(t,e,r){\"use strict\";function n(t){return t.target||t.srcElement||window}r.buttons=function(t){if(\"object\"==typeof t){if(\"buttons\"in t)return t.buttons;if(\"which\"in t){if(2===(e=t.which))return 4;if(3===e)return 2;if(e>0)return 1<=0)return 1<=-t},pointBetween:function(e,r,n){var i=e[1]-r[1],a=n[0]-r[0],o=e[0]-r[0],s=n[1]-r[1],l=o*a+i*s;return!(l-t)},pointsSameX:function(e,r){return Math.abs(e[0]-r[0])t!=o-i>t&&(a-c)*(i-u)/(o-u)+c-n>t&&(s=!s),a=c,o=u}return s}};return e}},{}],257:[function(t,e,r){var n={toPolygon:function(t,e){function r(e){if(e.length<=0)return t.segments({inverted:!1,regions:[]});function r(e){var r=e.slice(0,e.length-1);return t.segments({inverted:!1,regions:[r]})}for(var n=r(e[0]),i=1;i0}))}function u(t,n){var i=t.seg,a=n.seg,o=i.start,s=i.end,c=a.start,u=a.end;r&&r.checkIntersection(i,a);var f=e.linesIntersect(o,s,c,u);if(!1===f){if(!e.pointsCollinear(o,s,c))return!1;if(e.pointsSame(o,u)||e.pointsSame(s,c))return!1;var h=e.pointsSame(o,c),p=e.pointsSame(s,u);if(h&&p)return n;var d=!h&&e.pointBetween(o,c,u),g=!p&&e.pointBetween(s,c,u);if(h)return g?l(n,s):l(t,u),n;d&&(p||(g?l(n,s):l(t,u)),l(n,o))}else 0===f.alongA&&(-1===f.alongB?l(t,c):0===f.alongB?l(t,f.pt):1===f.alongB&&l(t,u)),0===f.alongB&&(-1===f.alongA?l(n,o):0===f.alongA?l(n,f.pt):1===f.alongA&&l(n,s));return!1}for(var f=[];!a.isEmpty();){var h=a.getHead();if(r&&r.vert(h.pt[0]),h.isStart){r&&r.segmentNew(h.seg,h.primary);var p=c(h),d=p.before?p.before.ev:null,g=p.after?p.after.ev:null;function m(){if(d){var t=u(h,d);if(t)return t}return!!g&&u(h,g)}r&&r.tempStatus(h.seg,!!d&&d.seg,!!g&&g.seg);var v,y=m();if(y){var x;if(t)(x=null===h.seg.myFill.below||h.seg.myFill.above!==h.seg.myFill.below)&&(y.seg.myFill.above=!y.seg.myFill.above);else y.seg.otherFill=h.seg.myFill;r&&r.segmentUpdate(y.seg),h.other.remove(),h.remove()}if(a.getHead()!==h){r&&r.rewind(h.seg);continue}if(t)x=null===h.seg.myFill.below||h.seg.myFill.above!==h.seg.myFill.below,h.seg.myFill.below=g?g.seg.myFill.above:i,h.seg.myFill.above=x?!h.seg.myFill.below:h.seg.myFill.below;else if(null===h.seg.otherFill)v=g?h.primary===g.primary?g.seg.otherFill.above:g.seg.myFill.above:h.primary?o:i,h.seg.otherFill={above:v,below:v};r&&r.status(h.seg,!!d&&d.seg,!!g&&g.seg),h.other.status=p.insert(n.node({ev:h}))}else{var b=h.status;if(null===b)throw new Error(\"PolyBool: Zero-length segment detected; your epsilon is probably too small or too large\");if(s.exists(b.prev)&&s.exists(b.next)&&u(b.prev.ev,b.next.ev),r&&r.statusRemove(b.ev.seg),b.remove(),!h.primary){var _=h.seg.myFill;h.seg.myFill=h.seg.otherFill,h.seg.otherFill=_}f.push(h.seg)}a.getHead().remove()}return r&&r.done(),f}return t?{addRegion:function(t){for(var n,i,a,o=t[t.length-1],l=0;l0&&!this.aborted;){var r=this.ifds_to_read.shift();r.offset&&this.scan_ifd(r.id,r.offset,t)}},a.prototype.read_uint16=function(t){var e=this.input;if(t+2>e.length)throw n(\"unexpected EOF\",\"EBADDATA\");return this.big_endian?256*e[t]+e[t+1]:e[t]+256*e[t+1]},a.prototype.read_uint32=function(t){var e=this.input;if(t+4>e.length)throw n(\"unexpected EOF\",\"EBADDATA\");return this.big_endian?16777216*e[t]+65536*e[t+1]+256*e[t+2]+e[t+3]:e[t]+256*e[t+1]+65536*e[t+2]+16777216*e[t+3]},a.prototype.is_subifd_link=function(t,e){return 0===t&&34665===e||0===t&&34853===e||34665===t&&40965===e},a.prototype.exif_format_length=function(t){switch(t){case 1:case 2:case 6:case 7:return 1;case 3:case 8:return 2;case 4:case 9:case 11:return 4;case 5:case 10:case 12:return 8;default:return 0}},a.prototype.exif_format_read=function(t,e){var r;switch(t){case 1:case 2:return r=this.input[e];case 6:return(r=this.input[e])|33554430*(128&r);case 3:return r=this.read_uint16(e);case 8:return(r=this.read_uint16(e))|131070*(32768&r);case 4:return r=this.read_uint32(e);case 9:return 0|(r=this.read_uint32(e));case 5:case 10:case 11:case 12:case 7:default:return null}},a.prototype.scan_ifd=function(t,e,r){var a=this.read_uint16(e);e+=2;for(var o=0;othis.input.length)throw n(\"unexpected EOF\",\"EBADDATA\");for(var d=[],g=h,m=0;m0&&(this.ifds_to_read.push({id:s,offset:d[0]}),p=!0),!1===r({is_big_endian:this.big_endian,ifd:t,tag:s,format:l,count:c,entry_offset:e+this.start,data_length:f,data_offset:h+this.start,value:d,is_subifd_link:p}))return void(this.aborted=!0);e+=12}0===t&&this.ifds_to_read.push({id:1,offset:this.read_uint32(e)})},e.exports.ExifParser=a,e.exports.get_orientation=function(t){var e=0;try{return new a(t,0,t.length).each((function(t){if(0===t.ifd&&274===t.tag&&Array.isArray(t.value))return e=t.value[0],!1})),e}catch(t){return-1}}},{}],264:[function(t,e,r){\"use strict\";var n=t(\"./common\").readUInt16BE,i=t(\"./common\").readUInt32BE;function a(t,e){if(t.length<4+e)return null;var r=i(t,e);return t.length>4&15,i=15&t[4],a=t[5]>>4&15,o=n(t,6),l=8,c=0;ce.width||t.width===e.width&&t.height>e.height?t:e})),i=r.reduce((function(t,e){return t.height>e.height||t.height===e.height&&t.width>e.width?t:e})),n.width>i.height||n.width===i.height&&n.height>i.width?n:i),s=1;e.transforms.forEach((function(t){var e={1:6,2:5,3:8,4:7,5:4,6:3,7:2,8:1},r={1:4,2:3,3:2,4:1,5:6,6:5,7:8,8:7};if(\"imir\"===t.type&&(s=0===t.value?r[s]:e[s=e[s=r[s]]]),\"irot\"===t.type)for(var n=0;n1&&(h.variants=f.variants),f.orientation&&(h.orientation=f.orientation),f.exif_location&&f.exif_location.offset+f.exif_location.length<=t.length){var p=a(t,f.exif_location.offset),d=t.slice(f.exif_location.offset+p+4,f.exif_location.offset+f.exif_location.length),g=s.get_orientation(d);g>0&&(h.orientation=g)}return h}}}}}}},{\"../common\":262,\"../exif_utils\":263,\"../miaf_utils\":264}],266:[function(t,e,r){\"use strict\";var n=t(\"../common\").str2arr,i=t(\"../common\").sliceEq,a=t(\"../common\").readUInt16LE,o=n(\"BM\");e.exports=function(t){if(!(t.length<26)&&i(t,0,o))return{width:a(t,18),height:a(t,22),type:\"bmp\",mime:\"image/bmp\",wUnits:\"px\",hUnits:\"px\"}}},{\"../common\":262}],267:[function(t,e,r){\"use strict\";var n=t(\"../common\").str2arr,i=t(\"../common\").sliceEq,a=t(\"../common\").readUInt16LE,o=n(\"GIF87a\"),s=n(\"GIF89a\");e.exports=function(t){if(!(t.length<10)&&(i(t,0,o)||i(t,0,s)))return{width:a(t,6),height:a(t,8),type:\"gif\",mime:\"image/gif\",wUnits:\"px\",hUnits:\"px\"}}},{\"../common\":262}],268:[function(t,e,r){\"use strict\";var n=t(\"../common\").readUInt16LE;e.exports=function(t){var e=n(t,0),r=n(t,2),i=n(t,4);if(0===e&&1===r&&i){for(var a=[],o={width:0,height:0},s=0;so.width||c>o.height)&&(o=u)}return{width:o.width,height:o.height,variants:a,type:\"ico\",mime:\"image/x-icon\",wUnits:\"px\",hUnits:\"px\"}}}},{\"../common\":262}],269:[function(t,e,r){\"use strict\";var n=t(\"../common\").readUInt16BE,i=t(\"../common\").str2arr,a=t(\"../common\").sliceEq,o=t(\"../exif_utils\"),s=i(\"Exif\\0\\0\");e.exports=function(t){if(!(t.length<2)&&255===t[0]&&216===t[1]&&255===t[2])for(var e=2;;){for(;;){if(t.length-e<2)return;if(255===t[e++])break}for(var r,i,l=t[e++];255===l;)l=t[e++];if(208<=l&&l<=217||1===l)r=0;else{if(!(192<=l&&l<=254))return;if(t.length-e<2)return;r=n(t,e)-2,e+=2}if(217===l||218===l)return;if(225===l&&r>=10&&a(t,e,s)&&(i=o.get_orientation(t.slice(e+6,e+r))),r>=5&&192<=l&&l<=207&&196!==l&&200!==l&&204!==l){if(t.length-e0&&(c.orientation=i),c}e+=r}}},{\"../common\":262,\"../exif_utils\":263}],270:[function(t,e,r){\"use strict\";var n=t(\"../common\").str2arr,i=t(\"../common\").sliceEq,a=t(\"../common\").readUInt32BE,o=n(\"\\x89PNG\\r\\n\\x1a\\n\"),s=n(\"IHDR\");e.exports=function(t){if(!(t.length<24)&&i(t,0,o)&&i(t,12,s))return{width:a(t,16),height:a(t,20),type:\"png\",mime:\"image/png\",wUnits:\"px\",hUnits:\"px\"}}},{\"../common\":262}],271:[function(t,e,r){\"use strict\";var n=t(\"../common\").str2arr,i=t(\"../common\").sliceEq,a=t(\"../common\").readUInt32BE,o=n(\"8BPS\\0\\x01\");e.exports=function(t){if(!(t.length<22)&&i(t,0,o))return{width:a(t,18),height:a(t,14),type:\"psd\",mime:\"image/vnd.adobe.photoshop\",wUnits:\"px\",hUnits:\"px\"}}},{\"../common\":262}],272:[function(t,e,r){\"use strict\";function n(t){return\"number\"==typeof t&&isFinite(t)&&t>0}var i=/<[-_.:a-zA-Z0-9][^>]*>/,a=/^<([-_.:a-zA-Z0-9]+:)?svg\\s/,o=/[^-]\\bwidth=\"([^%]+?)\"|[^-]\\bwidth='([^%]+?)'/,s=/\\bheight=\"([^%]+?)\"|\\bheight='([^%]+?)'/,l=/\\bview[bB]ox=\"(.+?)\"|\\bview[bB]ox='(.+?)'/,c=/in$|mm$|cm$|pt$|pc$|px$|em$|ex$/;function u(t){return c.test(t)?t.match(c)[0]:\"px\"}e.exports=function(t){if(function(t){var e,r=0,n=t.length;for(239===t[0]&&187===t[1]&&191===t[2]&&(r=3);r>14&16383),type:\"webp\",mime:\"image/webp\",wUnits:\"px\",hUnits:\"px\"}}}function h(t,e){return{width:1+(t[e+6]<<16|t[e+5]<<8|t[e+4]),height:1+(t[e+9]<t.length)){for(;e+8=10?r=r||u(t,e+8):\"VP8L\"===p&&d>=9?r=r||f(t,e+8):\"VP8X\"===p&&d>=10?r=r||h(t,e+8):\"EXIF\"===p&&(n=s.get_orientation(t.slice(e+8,e+8+d)),e=1/0),e+=8+d}else e++;if(r)return n>0&&(r.orientation=n),r}}}},{\"../common\":262,\"../exif_utils\":263}],275:[function(t,e,r){\"use strict\";e.exports={avif:t(\"./parse_sync/avif\"),bmp:t(\"./parse_sync/bmp\"),gif:t(\"./parse_sync/gif\"),ico:t(\"./parse_sync/ico\"),jpeg:t(\"./parse_sync/jpeg\"),png:t(\"./parse_sync/png\"),psd:t(\"./parse_sync/psd\"),svg:t(\"./parse_sync/svg\"),tiff:t(\"./parse_sync/tiff\"),webp:t(\"./parse_sync/webp\")}},{\"./parse_sync/avif\":265,\"./parse_sync/bmp\":266,\"./parse_sync/gif\":267,\"./parse_sync/ico\":268,\"./parse_sync/jpeg\":269,\"./parse_sync/png\":270,\"./parse_sync/psd\":271,\"./parse_sync/svg\":272,\"./parse_sync/tiff\":273,\"./parse_sync/webp\":274}],276:[function(t,e,r){\"use strict\";var n=t(\"./lib/parsers_sync\");e.exports=function(t){return function(t){for(var e=Object.keys(n),r=0;r1)for(var r=1;r1&&(t.scaleRatio=[t.scale[0]*t.viewport.width,t.scale[1]*t.viewport.height],r(t),t.after&&t.after(t))}function T(t){if(t){null!=t.length?\"number\"==typeof t[0]&&(t=[{positions:t}]):Array.isArray(t)||(t=[t]);var e=0,r=0;if(b.groups=x=t.map((function(t,c){var u=x[c];return t?(\"function\"==typeof t?t={after:t}:\"number\"==typeof t[0]&&(t={positions:t}),t=o(t,{color:\"color colors fill\",capSize:\"capSize cap capsize cap-size\",lineWidth:\"lineWidth line-width width line thickness\",opacity:\"opacity alpha\",range:\"range dataBox\",viewport:\"viewport viewBox\",errors:\"errors error\",positions:\"positions position data points\"}),u||(x[c]=u={id:c,scale:null,translate:null,scaleFract:null,translateFract:null,draw:!0},t=s({},y,t)),a(u,t,[{lineWidth:function(t){return.5*+t},capSize:function(t){return.5*+t},opacity:parseFloat,errors:function(t){return t=l(t),r+=t.length,t},positions:function(t,r){return t=l(t,\"float64\"),r.count=Math.floor(t.length/2),r.bounds=n(t,2),r.offset=e,e+=r.count,t}},{color:function(t,e){var r=e.count;if(t||(t=\"transparent\"),!Array.isArray(t)||\"number\"==typeof t[0]){var n=t;t=Array(r);for(var a=0;a 0. && baClipping < length(normalWidth * endBotJoin)) {\\n\\t\\t//handle miter clipping\\n\\t\\tbTopCoord -= normalWidth * endTopJoin;\\n\\t\\tbTopCoord += normalize(endTopJoin * normalWidth) * baClipping;\\n\\t}\\n\\n\\tif (nextReverse) {\\n\\t\\t//make join rectangular\\n\\t\\tvec2 miterShift = normalWidth * endJoinDirection * miterLimit * .5;\\n\\t\\tfloat normalAdjust = 1. - min(miterLimit / endMiterRatio, 1.);\\n\\t\\tbBotCoord = bCoord + miterShift - normalAdjust * normalWidth * currNormal * .5;\\n\\t\\tbTopCoord = bCoord + miterShift + normalAdjust * normalWidth * currNormal * .5;\\n\\t}\\n\\telse if (!prevReverse && abClipping > 0. && abClipping < length(normalWidth * startBotJoin)) {\\n\\t\\t//handle miter clipping\\n\\t\\taBotCoord -= normalWidth * startBotJoin;\\n\\t\\taBotCoord += normalize(startBotJoin * normalWidth) * abClipping;\\n\\t}\\n\\n\\tvec2 aTopPosition = (aTopCoord) * adjustedScale + translate;\\n\\tvec2 aBotPosition = (aBotCoord) * adjustedScale + translate;\\n\\n\\tvec2 bTopPosition = (bTopCoord) * adjustedScale + translate;\\n\\tvec2 bBotPosition = (bBotCoord) * adjustedScale + translate;\\n\\n\\t//position is normalized 0..1 coord on the screen\\n\\tvec2 position = (aTopPosition * lineTop + aBotPosition * lineBot) * lineStart + (bTopPosition * lineTop + bBotPosition * lineBot) * lineEnd;\\n\\n\\tstartCoord = aCoord * scaleRatio + translate * viewport.zw + viewport.xy;\\n\\tendCoord = bCoord * scaleRatio + translate * viewport.zw + viewport.xy;\\n\\n\\tgl_Position = vec4(position * 2.0 - 1.0, depth, 1);\\n\\n\\tenableStartMiter = step(dot(currTangent, prevTangent), .5);\\n\\tenableEndMiter = step(dot(currTangent, nextTangent), .5);\\n\\n\\t//bevel miter cutoffs\\n\\tif (miterMode == 1.) {\\n\\t\\tif (enableStartMiter == 1.) {\\n\\t\\t\\tvec2 startMiterWidth = vec2(startJoinDirection) * thickness * miterLimit * .5;\\n\\t\\t\\tstartCutoff = vec4(aCoord, aCoord);\\n\\t\\t\\tstartCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio;\\n\\t\\t\\tstartCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\\n\\t\\t\\tstartCutoff += viewport.xyxy;\\n\\t\\t\\tstartCutoff += startMiterWidth.xyxy;\\n\\t\\t}\\n\\n\\t\\tif (enableEndMiter == 1.) {\\n\\t\\t\\tvec2 endMiterWidth = vec2(endJoinDirection) * thickness * miterLimit * .5;\\n\\t\\t\\tendCutoff = vec4(bCoord, bCoord);\\n\\t\\t\\tendCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x) / scaleRatio;\\n\\t\\t\\tendCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\\n\\t\\t\\tendCutoff += viewport.xyxy;\\n\\t\\t\\tendCutoff += endMiterWidth.xyxy;\\n\\t\\t}\\n\\t}\\n\\n\\t//round miter cutoffs\\n\\telse if (miterMode == 2.) {\\n\\t\\tif (enableStartMiter == 1.) {\\n\\t\\t\\tvec2 startMiterWidth = vec2(startJoinDirection) * thickness * abs(dot(startJoinDirection, currNormal)) * .5;\\n\\t\\t\\tstartCutoff = vec4(aCoord, aCoord);\\n\\t\\t\\tstartCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio;\\n\\t\\t\\tstartCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\\n\\t\\t\\tstartCutoff += viewport.xyxy;\\n\\t\\t\\tstartCutoff += startMiterWidth.xyxy;\\n\\t\\t}\\n\\n\\t\\tif (enableEndMiter == 1.) {\\n\\t\\t\\tvec2 endMiterWidth = vec2(endJoinDirection) * thickness * abs(dot(endJoinDirection, currNormal)) * .5;\\n\\t\\t\\tendCutoff = vec4(bCoord, bCoord);\\n\\t\\t\\tendCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x) / scaleRatio;\\n\\t\\t\\tendCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\\n\\t\\t\\tendCutoff += viewport.xyxy;\\n\\t\\t\\tendCutoff += endMiterWidth.xyxy;\\n\\t\\t}\\n\\t}\\n}\\n\"]),frag:o([\"precision highp float;\\n#define GLSLIFY 1\\n\\nuniform float dashLength, pixelRatio, thickness, opacity, id, miterMode;\\nuniform sampler2D dashTexture;\\n\\nvarying vec4 fragColor;\\nvarying vec2 tangent;\\nvarying vec4 startCutoff, endCutoff;\\nvarying vec2 startCoord, endCoord;\\nvarying float enableStartMiter, enableEndMiter;\\n\\nfloat distToLine(vec2 p, vec2 a, vec2 b) {\\n\\tvec2 diff = b - a;\\n\\tvec2 perp = normalize(vec2(-diff.y, diff.x));\\n\\treturn dot(p - a, perp);\\n}\\n\\nvoid main() {\\n\\tfloat alpha = 1., distToStart, distToEnd;\\n\\tfloat cutoff = thickness * .5;\\n\\n\\t//bevel miter\\n\\tif (miterMode == 1.) {\\n\\t\\tif (enableStartMiter == 1.) {\\n\\t\\t\\tdistToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw);\\n\\t\\t\\tif (distToStart < -1.) {\\n\\t\\t\\t\\tdiscard;\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\t\\t\\talpha *= min(max(distToStart + 1., 0.), 1.);\\n\\t\\t}\\n\\n\\t\\tif (enableEndMiter == 1.) {\\n\\t\\t\\tdistToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw);\\n\\t\\t\\tif (distToEnd < -1.) {\\n\\t\\t\\t\\tdiscard;\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\t\\t\\talpha *= min(max(distToEnd + 1., 0.), 1.);\\n\\t\\t}\\n\\t}\\n\\n\\t// round miter\\n\\telse if (miterMode == 2.) {\\n\\t\\tif (enableStartMiter == 1.) {\\n\\t\\t\\tdistToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw);\\n\\t\\t\\tif (distToStart < 0.) {\\n\\t\\t\\t\\tfloat radius = length(gl_FragCoord.xy - startCoord);\\n\\n\\t\\t\\t\\tif(radius > cutoff + .5) {\\n\\t\\t\\t\\t\\tdiscard;\\n\\t\\t\\t\\t\\treturn;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\talpha -= smoothstep(cutoff - .5, cutoff + .5, radius);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tif (enableEndMiter == 1.) {\\n\\t\\t\\tdistToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw);\\n\\t\\t\\tif (distToEnd < 0.) {\\n\\t\\t\\t\\tfloat radius = length(gl_FragCoord.xy - endCoord);\\n\\n\\t\\t\\t\\tif(radius > cutoff + .5) {\\n\\t\\t\\t\\t\\tdiscard;\\n\\t\\t\\t\\t\\treturn;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\talpha -= smoothstep(cutoff - .5, cutoff + .5, radius);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\tfloat t = fract(dot(tangent, gl_FragCoord.xy) / dashLength) * .5 + .25;\\n\\tfloat dash = texture2D(dashTexture, vec2(t, .5)).r;\\n\\n\\tgl_FragColor = fragColor;\\n\\tgl_FragColor.a *= alpha * opacity * dash;\\n}\\n\"]),attributes:{lineEnd:{buffer:r,divisor:0,stride:8,offset:0},lineTop:{buffer:r,divisor:0,stride:8,offset:4},aColor:{buffer:t.prop(\"colorBuffer\"),stride:4,offset:0,divisor:1},bColor:{buffer:t.prop(\"colorBuffer\"),stride:4,offset:4,divisor:1},prevCoord:{buffer:t.prop(\"positionBuffer\"),stride:8,offset:0,divisor:1},aCoord:{buffer:t.prop(\"positionBuffer\"),stride:8,offset:8,divisor:1},bCoord:{buffer:t.prop(\"positionBuffer\"),stride:8,offset:16,divisor:1},nextCoord:{buffer:t.prop(\"positionBuffer\"),stride:8,offset:24,divisor:1}}},n))}catch(t){e=i}return{fill:t({primitive:\"triangle\",elements:function(t,e){return e.triangles},offset:0,vert:o([\"precision highp float;\\n#define GLSLIFY 1\\n\\nattribute vec2 position, positionFract;\\n\\nuniform vec4 color;\\nuniform vec2 scale, scaleFract, translate, translateFract;\\nuniform float pixelRatio, id;\\nuniform vec4 viewport;\\nuniform float opacity;\\n\\nvarying vec4 fragColor;\\n\\nconst float MAX_LINES = 256.;\\n\\nvoid main() {\\n\\tfloat depth = (MAX_LINES - 4. - id) / (MAX_LINES);\\n\\n\\tvec2 position = position * scale + translate\\n + positionFract * scale + translateFract\\n + position * scaleFract\\n + positionFract * scaleFract;\\n\\n\\tgl_Position = vec4(position * 2.0 - 1.0, depth, 1);\\n\\n\\tfragColor = color / 255.;\\n\\tfragColor.a *= opacity;\\n}\\n\"]),frag:o([\"precision highp float;\\n#define GLSLIFY 1\\n\\nvarying vec4 fragColor;\\n\\nvoid main() {\\n\\tgl_FragColor = fragColor;\\n}\\n\"]),uniforms:{scale:t.prop(\"scale\"),color:t.prop(\"fill\"),scaleFract:t.prop(\"scaleFract\"),translateFract:t.prop(\"translateFract\"),translate:t.prop(\"translate\"),opacity:t.prop(\"opacity\"),pixelRatio:t.context(\"pixelRatio\"),id:t.prop(\"id\"),viewport:function(t,e){return[e.viewport.x,e.viewport.y,t.viewportWidth,t.viewportHeight]}},attributes:{position:{buffer:t.prop(\"positionBuffer\"),stride:8,offset:8},positionFract:{buffer:t.prop(\"positionFractBuffer\"),stride:8,offset:8}},blend:n.blend,depth:{enable:!1},scissor:n.scissor,stencil:n.stencil,viewport:n.viewport}),rect:i,miter:e}},v.defaults={dashes:null,join:\"miter\",miterLimit:1,thickness:10,cap:\"square\",color:\"black\",opacity:1,overlay:!1,viewport:null,range:null,close:!1,fill:null},v.prototype.render=function(){for(var t,e=[],r=arguments.length;r--;)e[r]=arguments[r];e.length&&(t=this).update.apply(t,e),this.draw()},v.prototype.draw=function(){for(var t=this,e=[],r=arguments.length;r--;)e[r]=arguments[r];return(e.length?e:this.passes).forEach((function(e,r){var n;if(e&&Array.isArray(e))return(n=t).draw.apply(n,e);\"number\"==typeof e&&(e=t.passes[e]),e&&e.count>1&&e.opacity&&(t.regl._refresh(),e.fill&&e.triangles&&e.triangles.length>2&&t.shaders.fill(e),e.thickness&&(e.scale[0]*e.viewport.width>v.precisionThreshold||e.scale[1]*e.viewport.height>v.precisionThreshold||\"rect\"===e.join||!e.join&&(e.thickness<=2||e.count>=v.maxPoints)?t.shaders.rect(e):t.shaders.miter(e)))})),this},v.prototype.update=function(t){var e=this;if(t){null!=t.length?\"number\"==typeof t[0]&&(t=[{positions:t}]):Array.isArray(t)||(t=[t]);var r=this.regl,o=this.gl;if(t.forEach((function(t,f){var d=e.passes[f];if(void 0!==t)if(null!==t){if(\"number\"==typeof t[0]&&(t={positions:t}),t=s(t,{positions:\"positions points data coords\",thickness:\"thickness lineWidth lineWidths line-width linewidth width stroke-width strokewidth strokeWidth\",join:\"lineJoin linejoin join type mode\",miterLimit:\"miterlimit miterLimit\",dashes:\"dash dashes dasharray dash-array dashArray\",color:\"color colour stroke colors colours stroke-color strokeColor\",fill:\"fill fill-color fillColor\",opacity:\"alpha opacity\",overlay:\"overlay crease overlap intersect\",close:\"closed close closed-path closePath\",range:\"range dataBox\",viewport:\"viewport viewBox\",hole:\"holes hole hollow\",splitNull:\"splitNull\"}),d||(e.passes[f]=d={id:f,scale:null,scaleFract:null,translate:null,translateFract:null,count:0,hole:[],depth:0,dashLength:1,dashTexture:r.texture({channels:1,data:new Uint8Array([255]),width:1,height:1,mag:\"linear\",min:\"linear\"}),colorBuffer:r.buffer({usage:\"dynamic\",type:\"uint8\",data:new Uint8Array}),positionBuffer:r.buffer({usage:\"dynamic\",type:\"float\",data:new Uint8Array}),positionFractBuffer:r.buffer({usage:\"dynamic\",type:\"float\",data:new Uint8Array})},t=a({},v.defaults,t)),null!=t.thickness&&(d.thickness=parseFloat(t.thickness)),null!=t.opacity&&(d.opacity=parseFloat(t.opacity)),null!=t.miterLimit&&(d.miterLimit=parseFloat(t.miterLimit)),null!=t.overlay&&(d.overlay=!!t.overlay,f=D}));(I=I.slice(0,R)).push(D)}for(var F=function(t){var e=k.slice(2*z,2*I[t]).concat(D?k.slice(2*D):[]),r=(d.hole||[]).map((function(e){return e-D+(I[t]-z)})),n=c(e,r);n=n.map((function(e){return e+z+(e+zt.length)&&(e=t.length);for(var r=0,n=new Array(e);r 1.0 + delta) {\\n\\t\\tdiscard;\\n\\t}\\n\\n\\talpha -= smoothstep(1.0 - delta, 1.0 + delta, radius);\\n\\n\\tfloat borderRadius = fragBorderRadius;\\n\\tfloat ratio = smoothstep(borderRadius - delta, borderRadius + delta, radius);\\n\\tvec4 color = mix(fragColor, fragBorderColor, ratio);\\n\\tcolor.a *= alpha * opacity;\\n\\tgl_FragColor = color;\\n}\\n\"]),l.vert=h([\"precision highp float;\\n#define GLSLIFY 1\\n\\nattribute float x, y, xFract, yFract;\\nattribute float size, borderSize;\\nattribute vec4 colorId, borderColorId;\\nattribute float isActive;\\n\\nuniform bool constPointSize;\\nuniform float pixelRatio;\\nuniform vec2 paletteSize, scale, scaleFract, translate, translateFract;\\nuniform sampler2D paletteTexture;\\n\\nconst float maxSize = 100.;\\n\\nvarying vec4 fragColor, fragBorderColor;\\nvarying float fragBorderRadius, fragWidth;\\n\\nfloat pointSizeScale = (constPointSize) ? 2. : pixelRatio;\\n\\nbool isDirect = (paletteSize.x < 1.);\\n\\nvec4 getColor(vec4 id) {\\n return isDirect ? id / 255. : texture2D(paletteTexture,\\n vec2(\\n (id.x + .5) / paletteSize.x,\\n (id.y + .5) / paletteSize.y\\n )\\n );\\n}\\n\\nvoid main() {\\n // ignore inactive points\\n if (isActive == 0.) return;\\n\\n vec2 position = vec2(x, y);\\n vec2 positionFract = vec2(xFract, yFract);\\n\\n vec4 color = getColor(colorId);\\n vec4 borderColor = getColor(borderColorId);\\n\\n float size = size * maxSize / 255.;\\n float borderSize = borderSize * maxSize / 255.;\\n\\n gl_PointSize = (size + borderSize) * pointSizeScale;\\n\\n vec2 pos = (position + translate) * scale\\n + (positionFract + translateFract) * scale\\n + (position + translate) * scaleFract\\n + (positionFract + translateFract) * scaleFract;\\n\\n gl_Position = vec4(pos * 2. - 1., 0., 1.);\\n\\n fragBorderRadius = 1. - 2. * borderSize / (size + borderSize);\\n fragColor = color;\\n fragBorderColor = borderColor.a == 0. || borderSize == 0. ? vec4(color.rgb, 0.) : borderColor;\\n fragWidth = 1. / gl_PointSize;\\n}\\n\"]),m&&(l.frag=l.frag.replace(\"smoothstep\",\"smoothStep\"),s.frag=s.frag.replace(\"smoothstep\",\"smoothStep\")),this.drawCircle=t(l)}b.defaults={color:\"black\",borderColor:\"transparent\",borderSize:0,size:12,opacity:1,marker:void 0,viewport:null,range:null,pixelSize:null,count:0,offset:0,bounds:null,positions:[],snap:1e4},b.prototype.render=function(){return arguments.length&&this.update.apply(this,arguments),this.draw(),this},b.prototype.draw=function(){for(var t=this,e=arguments.length,r=new Array(e),n=0;nn)?e.tree=u(t,{bounds:f}):n&&n.length&&(e.tree=n),e.tree){var h={primitive:\"points\",usage:\"static\",data:e.tree,type:\"uint32\"};e.elements?e.elements(h):e.elements=o.elements(h)}var p=v.float32(t);return i({data:p,usage:\"dynamic\"}),a({data:v.fract32(t,p),usage:\"dynamic\"}),s({data:new Uint8Array(c),type:\"uint8\",usage:\"stream\"}),t}},{marker:function(e,r,n){var i=r.activation;if(i.forEach((function(t){return t&&t.destroy&&t.destroy()})),i.length=0,e&&\"number\"!=typeof e[0]){for(var a=[],s=0,l=Math.min(e.length,r.count);s=0)return a;if(t instanceof Uint8Array||t instanceof Uint8ClampedArray)e=t;else{e=new Uint8Array(t.length);for(var o=0,s=t.length;o4*n&&(this.tooManyColors=!0),this.updatePalette(r),1===i.length?i[0]:i},b.prototype.updatePalette=function(t){if(!this.tooManyColors){var e=this.maxColors,r=this.paletteTexture,n=Math.ceil(.25*t.length/e);if(n>1)for(var i=.25*(t=t.slice()).length%e;i2?(s[0],s[2],n=s[1],i=s[3]):s.length?(n=s[0],i=s[1]):(s.x,n=s.y,s.x+s.width,i=s.y+s.height),l.length>2?(a=l[0],o=l[2],l[1],l[3]):l.length?(a=l[0],o=l[1]):(a=l.x,l.y,o=l.x+l.width,l.y+l.height),[a,n,o,i]}function p(t){if(\"number\"==typeof t)return[t,t,t,t];if(2===t.length)return[t[0],t[1],t[0],t[1]];var e=l(t);return[e.x,e.y,e.x+e.width,e.y+e.height]}e.exports=u,u.prototype.render=function(){for(var t,e=this,r=[],n=arguments.length;n--;)r[n]=arguments[n];return r.length&&(t=this).update.apply(t,r),this.regl.attributes.preserveDrawingBuffer?this.draw():(this.dirty?null==this.planned&&(this.planned=o((function(){e.draw(),e.dirty=!0,e.planned=null}))):(this.draw(),this.dirty=!0,o((function(){e.dirty=!1}))),this)},u.prototype.update=function(){for(var t,e=[],r=arguments.length;r--;)e[r]=arguments[r];if(e.length){for(var n=0;nk))&&(s.lower||!(T>>=e))<<3,(e|=r=(15<(t>>>=r))<<2)|(r=(3<(t>>>=r))<<1)|t>>>r>>1}function s(){function t(t){t:{for(var e=16;268435456>=e;e*=16)if(t<=e){t=e;break t}t=0}return 0<(e=r[o(t)>>2]).length?e.pop():new ArrayBuffer(t)}function e(t){r[o(t.byteLength)>>2].push(t)}var r=a(8,(function(){return[]}));return{alloc:t,free:e,allocType:function(e,r){var n=null;switch(e){case 5120:n=new Int8Array(t(r),0,r);break;case 5121:n=new Uint8Array(t(r),0,r);break;case 5122:n=new Int16Array(t(2*r),0,r);break;case 5123:n=new Uint16Array(t(2*r),0,r);break;case 5124:n=new Int32Array(t(4*r),0,r);break;case 5125:n=new Uint32Array(t(4*r),0,r);break;case 5126:n=new Float32Array(t(4*r),0,r);break;default:return null}return n.length!==r?n.subarray(0,r):n},freeType:function(t){e(t.buffer)}}}function l(t){return!!t&&\"object\"==typeof t&&Array.isArray(t.shape)&&Array.isArray(t.stride)&&\"number\"==typeof t.offset&&t.shape.length===t.stride.length&&(Array.isArray(t.data)||W(t.data))}function c(t,e,r,n,i,a){for(var o=0;o(i=s)&&(i=n.buffer.byteLength,5123===f?i>>=1:5125===f&&(i>>=2)),n.vertCount=i,i=o,0>o&&(i=4,1===(o=n.buffer.dimension)&&(i=0),2===o&&(i=1),3===o&&(i=4)),n.primType=i}function o(t){n.elementsCount--,delete s[t.id],t.buffer.destroy(),t.buffer=null}var s={},c=0,u={uint8:5121,uint16:5123};e.oes_element_index_uint&&(u.uint32=5125),i.prototype.bind=function(){this.buffer.bind()};var f=[];return{create:function(t,e){function s(t){if(t)if(\"number\"==typeof t)c(t),f.primType=4,f.vertCount=0|t,f.type=5121;else{var e=null,r=35044,n=-1,i=-1,o=0,h=0;Array.isArray(t)||W(t)||l(t)?e=t:(\"data\"in t&&(e=t.data),\"usage\"in t&&(r=Q[t.usage]),\"primitive\"in t&&(n=rt[t.primitive]),\"count\"in t&&(i=0|t.count),\"type\"in t&&(h=u[t.type]),\"length\"in t?o=0|t.length:(o=i,5123===h||5122===h?o*=2:5125!==h&&5124!==h||(o*=4))),a(f,e,r,n,i,o,h)}else c(),f.primType=4,f.vertCount=0,f.type=5121;return s}var c=r.create(null,34963,!0),f=new i(c._buffer);return n.elementsCount++,s(t),s._reglType=\"elements\",s._elements=f,s.subdata=function(t,e){return c.subdata(t,e),s},s.destroy=function(){o(f)},s},createStream:function(t){var e=f.pop();return e||(e=new i(r.create(null,34963,!0,!1)._buffer)),a(e,t,35040,-1,-1,0,0),e},destroyStream:function(t){f.push(t)},getElements:function(t){return\"function\"==typeof t&&t._elements instanceof i?t._elements:null},clear:function(){X(s).forEach(o)}}}function g(t){for(var e=G.allocType(5123,t.length),r=0;r>>31<<15,i=(a<<1>>>24)-127,a=a>>13&1023;e[r]=-24>i?n:-14>i?n+(a+1024>>-14-i):15>=i,r.height>>=i,p(r,n[i]),t.mipmask|=1<e;++e)t.images[e]=null;return t}function C(t){for(var e=t.images,r=0;re){for(var r=0;r=--this.refCount&&F(this)}}),o.profile&&(a.getTotalTextureSize=function(){var t=0;return Object.keys(yt).forEach((function(e){t+=yt[e].stats.size})),t}),{create2D:function(e,r){function n(t,e){var r=i.texInfo;P.call(r);var a=L();return\"number\"==typeof t?M(a,0|t,\"number\"==typeof e?0|e:0|t):t?(I(r,t),S(a,t)):M(a,1,1),r.genMipmaps&&(a.mipmask=(a.width<<1)-1),i.mipmask=a.mipmask,c(i,a),i.internalformat=a.internalformat,n.width=a.width,n.height=a.height,D(i),E(a,3553),O(r,3553),R(),C(a),o.profile&&(i.stats.size=T(i.internalformat,i.type,a.width,a.height,r.genMipmaps,!1)),n.format=tt[i.internalformat],n.type=et[i.type],n.mag=rt[r.magFilter],n.min=nt[r.minFilter],n.wrapS=it[r.wrapS],n.wrapT=it[r.wrapT],n}var i=new z(3553);return yt[i.id]=i,a.textureCount++,n(e,r),n.subimage=function(t,e,r,a){e|=0,r|=0,a|=0;var o=v();return c(o,i),o.width=0,o.height=0,p(o,t),o.width=o.width||(i.width>>a)-e,o.height=o.height||(i.height>>a)-r,D(i),d(o,3553,e,r,a),R(),k(o),n},n.resize=function(e,r){var a=0|e,s=0|r||a;if(a===i.width&&s===i.height)return n;n.width=i.width=a,n.height=i.height=s,D(i);for(var l=0;i.mipmask>>l;++l){var c=a>>l,u=s>>l;if(!c||!u)break;t.texImage2D(3553,l,i.format,c,u,0,i.format,i.type,null)}return R(),o.profile&&(i.stats.size=T(i.internalformat,i.type,a,s,!1,!1)),n},n._reglType=\"texture2d\",n._texture=i,o.profile&&(n.stats=i.stats),n.destroy=function(){i.decRef()},n},createCube:function(e,r,n,i,s,l){function f(t,e,r,n,i,a){var s,l=h.texInfo;for(P.call(l),s=0;6>s;++s)g[s]=L();if(\"number\"!=typeof t&&t){if(\"object\"==typeof t)if(e)S(g[0],t),S(g[1],e),S(g[2],r),S(g[3],n),S(g[4],i),S(g[5],a);else if(I(l,t),u(h,t),\"faces\"in t)for(t=t.faces,s=0;6>s;++s)c(g[s],h),S(g[s],t[s]);else for(s=0;6>s;++s)S(g[s],t)}else for(t=0|t||1,s=0;6>s;++s)M(g[s],t,t);for(c(h,g[0]),h.mipmask=l.genMipmaps?(g[0].width<<1)-1:g[0].mipmask,h.internalformat=g[0].internalformat,f.width=g[0].width,f.height=g[0].height,D(h),s=0;6>s;++s)E(g[s],34069+s);for(O(l,34067),R(),o.profile&&(h.stats.size=T(h.internalformat,h.type,f.width,f.height,l.genMipmaps,!0)),f.format=tt[h.internalformat],f.type=et[h.type],f.mag=rt[l.magFilter],f.min=nt[l.minFilter],f.wrapS=it[l.wrapS],f.wrapT=it[l.wrapT],s=0;6>s;++s)C(g[s]);return f}var h=new z(34067);yt[h.id]=h,a.cubeCount++;var g=Array(6);return f(e,r,n,i,s,l),f.subimage=function(t,e,r,n,i){r|=0,n|=0,i|=0;var a=v();return c(a,h),a.width=0,a.height=0,p(a,e),a.width=a.width||(h.width>>i)-r,a.height=a.height||(h.height>>i)-n,D(h),d(a,34069+t,r,n,i),R(),k(a),f},f.resize=function(e){if((e|=0)!==h.width){f.width=h.width=e,f.height=h.height=e,D(h);for(var r=0;6>r;++r)for(var n=0;h.mipmask>>n;++n)t.texImage2D(34069+r,n,h.format,e>>n,e>>n,0,h.format,h.type,null);return R(),o.profile&&(h.stats.size=T(h.internalformat,h.type,f.width,f.height,!1,!0)),f}},f._reglType=\"textureCube\",f._texture=h,o.profile&&(f.stats=h.stats),f.destroy=function(){h.decRef()},f},clear:function(){for(var e=0;er;++r)if(0!=(e.mipmask&1<>r,e.height>>r,0,e.internalformat,e.type,null);else for(var n=0;6>n;++n)t.texImage2D(34069+n,r,e.internalformat,e.width>>r,e.height>>r,0,e.internalformat,e.type,null);O(e.texInfo,e.target)}))},refresh:function(){for(var e=0;ei;++i){for(c=0;ct;++t)r[t].resize(n);return e.width=e.height=n,e},_reglType:\"framebufferCube\",destroy:function(){r.forEach((function(t){t.destroy()}))}})},clear:function(){X(k).forEach(m)},restore:function(){x.cur=null,x.next=null,x.dirty=!0,X(k).forEach((function(e){e.framebuffer=t.createFramebuffer(),v(e)}))}})}function M(){this.w=this.z=this.y=this.x=this.state=0,this.buffer=null,this.size=0,this.normalized=!1,this.type=5126,this.divisor=this.stride=this.offset=0}function S(t,e,r,n,i,a,o){function s(){this.id=++f,this.attributes=[],this.elements=null,this.ownsElements=!1,this.offset=this.count=0,this.instances=-1,this.primitive=4;var t=e.oes_vertex_array_object;this.vao=t?t.createVertexArrayOES():null,h[this.id]=this,this.buffers=[]}var c=r.maxAttributes,u=Array(c);for(r=0;r=h.byteLength?c.subdata(h):(c.destroy(),r.buffers[s]=null)),r.buffers[s]||(c=r.buffers[s]=i.create(u,34962,!1,!0)),f.buffer=i.getBuffer(c),f.size=0|f.buffer.dimension,f.normalized=!1,f.type=f.buffer.dtype,f.offset=0,f.stride=0,f.divisor=0,f.state=1,t[s]=1;else i.getBuffer(u)?(f.buffer=i.getBuffer(u),f.size=0|f.buffer.dimension,f.normalized=!1,f.type=f.buffer.dtype,f.offset=0,f.stride=0,f.divisor=0,f.state=1):i.getBuffer(u.buffer)?(f.buffer=i.getBuffer(u.buffer),f.size=0|(+u.size||f.buffer.dimension),f.normalized=!!u.normalized||!1,f.type=\"type\"in u?K[u.type]:f.buffer.dtype,f.offset=0|(u.offset||0),f.stride=0|(u.stride||0),f.divisor=0|(u.divisor||0),f.state=1):\"x\"in u&&(f.x=+u.x||0,f.y=+u.y||0,f.z=+u.z||0,f.w=+u.w||0,f.state=2)}for(c=0;ct&&(t=e.stats.uniformsCount)})),t},r.getMaxAttributesCount=function(){var t=0;return h.forEach((function(e){e.stats.attributesCount>t&&(t=e.stats.attributesCount)})),t}),{clear:function(){var e=t.deleteShader.bind(t);X(c).forEach(e),c={},X(u).forEach(e),u={},h.forEach((function(e){t.deleteProgram(e.program)})),h.length=0,f={},r.shaderCount=0},program:function(e,n,i,a){var o=f[n];o||(o=f[n]={});var p=o[e];if(p&&(p.refCount++,!a))return p;var d=new s(n,e);return r.shaderCount++,l(d,i,a),p||(o[e]=d),h.push(d),j(d,{destroy:function(){if(d.refCount--,0>=d.refCount){t.deleteProgram(d.program);var e=h.indexOf(d);h.splice(e,1),r.shaderCount--}0>=o[d.vertId].refCount&&(t.deleteShader(u[d.vertId]),delete u[d.vertId],delete f[d.fragId][d.vertId]),Object.keys(f[d.fragId]).length||(t.deleteShader(c[d.fragId]),delete c[d.fragId],delete f[d.fragId])}})},restore:function(){c={},u={};for(var t=0;t\"+e+\"?\"+i+\".constant[\"+e+\"]:0;\"})).join(\"\"),\"}}else{\",\"if(\",s,\"(\",i,\".buffer)){\",u,\"=\",a,\".createStream(\",34962,\",\",i,\".buffer);\",\"}else{\",u,\"=\",a,\".getBuffer(\",i,\".buffer);\",\"}\",f,'=\"type\" in ',i,\"?\",o.glTypes,\"[\",i,\".type]:\",u,\".dtype;\",l.normalized,\"=!!\",i,\".normalized;\"),n(\"size\"),n(\"offset\"),n(\"stride\"),n(\"divisor\"),r(\"}}\"),r.exit(\"if(\",l.isStream,\"){\",a,\".destroyStream(\",u,\");\",\"}\"),l}))})),o}function A(t,e,n,i,o){function s(t){var e=c[t];e&&(h[t]=e)}var l=function(t,e){if(\"string\"==typeof(r=t.static).frag&&\"string\"==typeof r.vert){if(0>1)\",s],\");\")}function e(){r(l,\".drawArraysInstancedANGLE(\",[d,g,m,s],\");\")}p&&\"null\"!==p?y?t():(r(\"if(\",p,\"){\"),t(),r(\"}else{\"),e(),r(\"}\")):e()}function o(){function t(){r(u+\".drawElements(\"+[d,m,v,g+\"<<((\"+v+\"-5121)>>1)\"]+\");\")}function e(){r(u+\".drawArrays(\"+[d,g,m]+\");\")}p&&\"null\"!==p?y?t():(r(\"if(\",p,\"){\"),t(),r(\"}else{\"),e(),r(\"}\")):e()}var s,l,c=t.shared,u=c.gl,f=c.draw,h=n.draw,p=function(){var i=h.elements,a=e;return i?((i.contextDep&&n.contextDynamic||i.propDep)&&(a=r),i=i.append(t,a),h.elementsActive&&a(\"if(\"+i+\")\"+u+\".bindBuffer(34963,\"+i+\".buffer.buffer);\")):(i=a.def(),a(i,\"=\",f,\".\",\"elements\",\";\",\"if(\",i,\"){\",u,\".bindBuffer(\",34963,\",\",i,\".buffer.buffer);}\",\"else if(\",c.vao,\".currentVAO){\",i,\"=\",t.shared.elements+\".getElements(\"+c.vao,\".currentVAO.elements);\",nt?\"\":\"if(\"+i+\")\"+u+\".bindBuffer(34963,\"+i+\".buffer.buffer);\",\"}\")),i}(),d=i(\"primitive\"),g=i(\"offset\"),m=function(){var i=h.count,a=e;return i?((i.contextDep&&n.contextDynamic||i.propDep)&&(a=r),i=i.append(t,a)):i=a.def(f,\".\",\"count\"),i}();if(\"number\"==typeof m){if(0===m)return}else r(\"if(\",m,\"){\"),r.exit(\"}\");tt&&(s=i(\"instances\"),l=t.instancing);var v=p+\".type\",y=h.elements&&D(h.elements)&&!h.vaoActive;tt&&(\"number\"!=typeof s||0<=s)?\"string\"==typeof s?(r(\"if(\",s,\">0){\"),a(),r(\"}else if(\",s,\"<0){\"),o(),r(\"}\")):a():o()}function G(t,e,r,n,i){return i=(e=b()).proc(\"body\",i),tt&&(e.instancing=i.def(e.shared.extensions,\".angle_instanced_arrays\")),t(e,i,r,n),e.compile().body}function Y(t,e,r,n){B(t,e),r.useVAO?r.drawVAO?e(t.shared.vao,\".setVAO(\",r.drawVAO.append(t,e),\");\"):e(t.shared.vao,\".setVAO(\",t.shared.vao,\".targetVAO);\"):(e(t.shared.vao,\".setVAO(null);\"),U(t,e,r,n.attributes,(function(){return!0}))),H(t,e,r,n.uniforms,(function(){return!0}),!1),q(t,e,e,r)}function W(t,e,r,n){function i(){return!0}t.batchId=\"a1\",B(t,e),U(t,e,r,n.attributes,i),H(t,e,r,n.uniforms,i,!1),q(t,e,e,r)}function X(t,e,r,n){function i(t){return t.contextDep&&o||t.propDep}function a(t){return!i(t)}B(t,e);var o=r.contextDep,s=e.def(),l=e.def();t.shared.props=l,t.batchId=s;var c=t.scope(),u=t.scope();e(c.entry,\"for(\",s,\"=0;\",s,\"<\",\"a1\",\";++\",s,\"){\",l,\"=\",\"a0\",\"[\",s,\"];\",u,\"}\",c.exit),r.needsContext&&M(t,u,r.context),r.needsFramebuffer&&S(t,u,r.framebuffer),L(t,u,r.state,i),r.profile&&i(r.profile)&&N(t,u,r,!1,!0),n?(r.useVAO?r.drawVAO?i(r.drawVAO)?u(t.shared.vao,\".setVAO(\",r.drawVAO.append(t,u),\");\"):c(t.shared.vao,\".setVAO(\",r.drawVAO.append(t,c),\");\"):c(t.shared.vao,\".setVAO(\",t.shared.vao,\".targetVAO);\"):(c(t.shared.vao,\".setVAO(null);\"),U(t,c,r,n.attributes,a),U(t,u,r,n.attributes,i)),H(t,c,r,n.uniforms,a,!1),H(t,u,r,n.uniforms,i,!0),q(t,c,u,r)):(e=t.global.def(\"{}\"),n=r.shader.progVar.append(t,u),l=u.def(n,\".id\"),c=u.def(e,\"[\",l,\"]\"),u(t.shared.gl,\".useProgram(\",n,\".program);\",\"if(!\",c,\"){\",c,\"=\",e,\"[\",l,\"]=\",t.link((function(e){return G(W,t,r,e,2)})),\"(\",n,\");}\",c,\".call(this,a0[\",s,\"],\",s,\");\"))}function Z(t,r){function n(e){var n=r.shader[e];n&&i.set(a.shader,\".\"+e,n.append(t,i))}var i=t.proc(\"scope\",3);t.batchId=\"a2\";var a=t.shared,o=a.current;M(t,i,r.context),r.framebuffer&&r.framebuffer.append(t,i),O(Object.keys(r.state)).forEach((function(e){var n=r.state[e].append(t,i);m(n)?n.forEach((function(r,n){i.set(t.next[e],\"[\"+n+\"]\",r)})):i.set(a.next,\".\"+e,n)})),N(t,i,r,!0,!0),[\"elements\",\"offset\",\"count\",\"instances\",\"primitive\"].forEach((function(e){var n=r.draw[e];n&&i.set(a.draw,\".\"+e,\"\"+n.append(t,i))})),Object.keys(r.uniforms).forEach((function(n){var o=r.uniforms[n].append(t,i);Array.isArray(o)&&(o=\"[\"+o.join()+\"]\"),i.set(a.uniforms,\"[\"+e.id(n)+\"]\",o)})),Object.keys(r.attributes).forEach((function(e){var n=r.attributes[e].append(t,i),a=t.scopeAttrib(e);Object.keys(new Q).forEach((function(t){i.set(a,\".\"+t,n[t])}))})),r.scopeVAO&&i.set(a.vao,\".targetVAO\",r.scopeVAO.append(t,i)),n(\"vert\"),n(\"frag\"),0=--this.refCount&&o(this)},i.profile&&(n.getTotalRenderbufferSize=function(){var t=0;return Object.keys(u).forEach((function(e){t+=u[e].stats.size})),t}),{create:function(e,r){function o(e,r){var n=0,a=0,u=32854;if(\"object\"==typeof e&&e?(\"shape\"in e?(n=0|(a=e.shape)[0],a=0|a[1]):(\"radius\"in e&&(n=a=0|e.radius),\"width\"in e&&(n=0|e.width),\"height\"in e&&(a=0|e.height)),\"format\"in e&&(u=s[e.format])):\"number\"==typeof e?(n=0|e,a=\"number\"==typeof r?0|r:n):e||(n=a=1),n!==c.width||a!==c.height||u!==c.format)return o.width=c.width=n,o.height=c.height=a,c.format=u,t.bindRenderbuffer(36161,c.renderbuffer),t.renderbufferStorage(36161,u,n,a),i.profile&&(c.stats.size=vt[c.format]*c.width*c.height),o.format=l[c.format],o}var c=new a(t.createRenderbuffer());return u[c.id]=c,n.renderbufferCount++,o(e,r),o.resize=function(e,r){var n=0|e,a=0|r||n;return n===c.width&&a===c.height||(o.width=c.width=n,o.height=c.height=a,t.bindRenderbuffer(36161,c.renderbuffer),t.renderbufferStorage(36161,c.format,n,a),i.profile&&(c.stats.size=vt[c.format]*c.width*c.height)),o},o._reglType=\"renderbuffer\",o._renderbuffer=c,i.profile&&(o.stats=c.stats),o.destroy=function(){c.decRef()},o},clear:function(){X(u).forEach(o)},restore:function(){X(u).forEach((function(e){e.renderbuffer=t.createRenderbuffer(),t.bindRenderbuffer(36161,e.renderbuffer),t.renderbufferStorage(36161,e.format,e.width,e.height)})),t.bindRenderbuffer(36161,null)}}},xt=[];xt[6408]=4,xt[6407]=3;var bt=[];bt[5121]=1,bt[5126]=4,bt[36193]=2;var _t=[\"x\",\"y\",\"z\",\"w\"],wt=\"blend.func blend.equation stencil.func stencil.opFront stencil.opBack sample.coverage viewport scissor.box polygonOffset.offset\".split(\" \"),Tt={0:0,1:1,zero:0,one:1,\"src color\":768,\"one minus src color\":769,\"src alpha\":770,\"one minus src alpha\":771,\"dst color\":774,\"one minus dst color\":775,\"dst alpha\":772,\"one minus dst alpha\":773,\"constant color\":32769,\"one minus constant color\":32770,\"constant alpha\":32771,\"one minus constant alpha\":32772,\"src alpha saturate\":776},kt={never:512,less:513,\"<\":513,equal:514,\"=\":514,\"==\":514,\"===\":514,lequal:515,\"<=\":515,greater:516,\">\":516,notequal:517,\"!=\":517,\"!==\":517,gequal:518,\">=\":518,always:519},At={0:0,zero:0,keep:7680,replace:7681,increment:7682,decrement:7683,\"increment wrap\":34055,\"decrement wrap\":34056,invert:5386},Mt={cw:2304,ccw:2305},St=new z(!1,!1,!1,(function(){}));return function(t){function e(){if(0===J.length)w&&w.update(),tt=null;else{tt=H.next(e),f();for(var t=J.length-1;0<=t;--t){var r=J[t];r&&r(P,null,0)}m.flush(),w&&w.update()}}function r(){!tt&&0=J.length&&n()}}}}function u(){var t=X.viewport,e=X.scissor_box;t[0]=t[1]=e[0]=e[1]=0,P.viewportWidth=P.framebufferWidth=P.drawingBufferWidth=t[2]=e[2]=m.drawingBufferWidth,P.viewportHeight=P.framebufferHeight=P.drawingBufferHeight=t[3]=e[3]=m.drawingBufferHeight}function f(){P.tick+=1,P.time=g(),u(),W.procs.poll()}function h(){F.refresh(),u(),W.procs.refresh(),w&&w.update()}function g(){return(q()-T)/1e3}if(!(t=i(t)))return null;var m=t.gl,v=m.getContextAttributes();m.isContextLost();var y=function(t,e){function r(e){var r;e=e.toLowerCase();try{r=n[e]=t.getExtension(e)}catch(t){}return!!r}for(var n={},i=0;ie;++e)et(j({framebuffer:t.framebuffer.faces[e]},t),l);else et(t,l);else l(0,t)},prop:V.define.bind(null,1),context:V.define.bind(null,2),this:V.define.bind(null,3),draw:s({}),buffer:function(t){return O.create(t,34962,!1,!1)},elements:function(t){return z.create(t,!1)},texture:F.create2D,cube:F.createCube,renderbuffer:U.create,framebuffer:G.create,framebufferCube:G.createCube,vao:D.createVAO,attributes:v,frame:c,on:function(t,e){var r;switch(t){case\"frame\":return c(e);case\"lost\":r=K;break;case\"restore\":r=Q;break;case\"destroy\":r=$}return r.push(e),{cancel:function(){for(var t=0;t2?\"one of \".concat(e,\" \").concat(t.slice(0,r-1).join(\", \"),\", or \")+t[r-1]:2===r?\"one of \".concat(e,\" \").concat(t[0],\" or \").concat(t[1]):\"of \".concat(e,\" \").concat(t[0])}return\"of \".concat(e,\" \").concat(String(t))}i(\"ERR_INVALID_OPT_VALUE\",(function(t,e){return'The value \"'+e+'\" is invalid for option \"'+t+'\"'}),TypeError),i(\"ERR_INVALID_ARG_TYPE\",(function(t,e,r){var n,i,o,s;if(\"string\"==typeof e&&(i=\"not \",e.substr(!o||o<0?0:+o,i.length)===i)?(n=\"must not be\",e=e.replace(/^not /,\"\")):n=\"must be\",function(t,e,r){return(void 0===r||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}(t,\" argument\"))s=\"The \".concat(t,\" \").concat(n,\" \").concat(a(e,\"type\"));else{var l=function(t,e,r){return\"number\"!=typeof r&&(r=0),!(r+e.length>t.length)&&-1!==t.indexOf(e,r)}(t,\".\")?\"property\":\"argument\";s='The \"'.concat(t,'\" ').concat(l,\" \").concat(n,\" \").concat(a(e,\"type\"))}return s+=\". Received type \".concat(typeof r)}),TypeError),i(\"ERR_STREAM_PUSH_AFTER_EOF\",\"stream.push() after EOF\"),i(\"ERR_METHOD_NOT_IMPLEMENTED\",(function(t){return\"The \"+t+\" method is not implemented\"})),i(\"ERR_STREAM_PREMATURE_CLOSE\",\"Premature close\"),i(\"ERR_STREAM_DESTROYED\",(function(t){return\"Cannot call \"+t+\" after a stream was destroyed\"})),i(\"ERR_MULTIPLE_CALLBACK\",\"Callback called multiple times\"),i(\"ERR_STREAM_CANNOT_PIPE\",\"Cannot pipe, not readable\"),i(\"ERR_STREAM_WRITE_AFTER_END\",\"write after end\"),i(\"ERR_STREAM_NULL_VALUES\",\"May not write null values to stream\",TypeError),i(\"ERR_UNKNOWN_ENCODING\",(function(t){return\"Unknown encoding: \"+t}),TypeError),i(\"ERR_STREAM_UNSHIFT_AFTER_END_EVENT\",\"stream.unshift() after end event\"),e.exports.codes=n},{}],287:[function(t,e,r){(function(r){(function(){\"use strict\";var n=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};e.exports=c;var i=t(\"./_stream_readable\"),a=t(\"./_stream_writable\");t(\"inherits\")(c,i);for(var o=n(a.prototype),s=0;s0)if(\"string\"==typeof e||o.objectMode||Object.getPrototypeOf(e)===s.prototype||(e=function(t){return s.from(t)}(e)),n)o.endEmitted?w(t,new _):S(t,o,e,!0);else if(o.ended)w(t,new x);else{if(o.destroyed)return!1;o.reading=!1,o.decoder&&!r?(e=o.decoder.write(e),o.objectMode||0!==e.length?S(t,o,e,!1):P(t,o)):S(t,o,e,!1)}else n||(o.reading=!1,P(t,o));return!o.ended&&(o.lengthe.highWaterMark&&(e.highWaterMark=function(t){return t>=1073741824?t=1073741824:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function L(t){var e=t._readableState;c(\"emitReadable\",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(c(\"emitReadable\",e.flowing),e.emittedReadable=!0,r.nextTick(C,t))}function C(t){var e=t._readableState;c(\"emitReadable_\",e.destroyed,e.length,e.ended),e.destroyed||!e.length&&!e.ended||(t.emit(\"readable\"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,R(t)}function P(t,e){e.readingMore||(e.readingMore=!0,r.nextTick(I,t,e))}function I(t,e){for(;!e.reading&&!e.ended&&(e.length0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount(\"data\")>0&&t.resume()}function z(t){c(\"readable nexttick read 0\"),t.read(0)}function D(t,e){c(\"resume\",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit(\"resume\"),R(t),e.flowing&&!e.reading&&t.read(0)}function R(t){var e=t._readableState;for(c(\"flow\",e.flowing);e.flowing&&null!==t.read(););}function F(t,e){return 0===e.length?null:(e.objectMode?r=e.buffer.shift():!t||t>=e.length?(r=e.decoder?e.buffer.join(\"\"):1===e.buffer.length?e.buffer.first():e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r);var r}function B(t){var e=t._readableState;c(\"endReadable\",e.endEmitted),e.endEmitted||(e.ended=!0,r.nextTick(N,e,t))}function N(t,e){if(c(\"endReadableNT\",t.endEmitted,t.length),!t.endEmitted&&0===t.length&&(t.endEmitted=!0,e.readable=!1,e.emit(\"end\"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}function j(t,e){for(var r=0,n=t.length;r=e.highWaterMark:e.length>0)||e.ended))return c(\"read: emitReadable\",e.length,e.ended),0===e.length&&e.ended?B(this):L(this),null;if(0===(t=E(t,e))&&e.ended)return 0===e.length&&B(this),null;var n,i=e.needReadable;return c(\"need readable\",i),(0===e.length||e.length-t0?F(t,e):null)?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&B(this)),null!==n&&this.emit(\"data\",n),n},A.prototype._read=function(t){w(this,new b(\"_read()\"))},A.prototype.pipe=function(t,e){var n=this,i=this._readableState;switch(i.pipesCount){case 0:i.pipes=t;break;case 1:i.pipes=[i.pipes,t];break;default:i.pipes.push(t)}i.pipesCount+=1,c(\"pipe count=%d opts=%j\",i.pipesCount,e);var o=(!e||!1!==e.end)&&t!==r.stdout&&t!==r.stderr?l:m;function s(e,r){c(\"onunpipe\"),e===n&&r&&!1===r.hasUnpiped&&(r.hasUnpiped=!0,c(\"cleanup\"),t.removeListener(\"close\",d),t.removeListener(\"finish\",g),t.removeListener(\"drain\",u),t.removeListener(\"error\",p),t.removeListener(\"unpipe\",s),n.removeListener(\"end\",l),n.removeListener(\"end\",m),n.removeListener(\"data\",h),f=!0,!i.awaitDrain||t._writableState&&!t._writableState.needDrain||u())}function l(){c(\"onend\"),t.end()}i.endEmitted?r.nextTick(o):n.once(\"end\",o),t.on(\"unpipe\",s);var u=function(t){return function(){var e=t._readableState;c(\"pipeOnDrain\",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&a(t,\"data\")&&(e.flowing=!0,R(t))}}(n);t.on(\"drain\",u);var f=!1;function h(e){c(\"ondata\");var r=t.write(e);c(\"dest.write\",r),!1===r&&((1===i.pipesCount&&i.pipes===t||i.pipesCount>1&&-1!==j(i.pipes,t))&&!f&&(c(\"false write response, pause\",i.awaitDrain),i.awaitDrain++),n.pause())}function p(e){c(\"onerror\",e),m(),t.removeListener(\"error\",p),0===a(t,\"error\")&&w(t,e)}function d(){t.removeListener(\"finish\",g),m()}function g(){c(\"onfinish\"),t.removeListener(\"close\",d),m()}function m(){c(\"unpipe\"),n.unpipe(t)}return n.on(\"data\",h),function(t,e,r){if(\"function\"==typeof t.prependListener)return t.prependListener(e,r);t._events&&t._events[e]?Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]:t.on(e,r)}(t,\"error\",p),t.once(\"close\",d),t.once(\"finish\",g),t.emit(\"pipe\",n),i.flowing||(c(\"pipe resume\"),n.resume()),t},A.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit(\"unpipe\",this,r)),this;if(!t){var n=e.pipes,i=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var a=0;a0,!1!==i.flowing&&this.resume()):\"readable\"===t&&(i.endEmitted||i.readableListening||(i.readableListening=i.needReadable=!0,i.flowing=!1,i.emittedReadable=!1,c(\"on readable\",i.length,i.reading),i.length?L(this):i.reading||r.nextTick(z,this))),n},A.prototype.addListener=A.prototype.on,A.prototype.removeListener=function(t,e){var n=o.prototype.removeListener.call(this,t,e);return\"readable\"===t&&r.nextTick(O,this),n},A.prototype.removeAllListeners=function(t){var e=o.prototype.removeAllListeners.apply(this,arguments);return\"readable\"!==t&&void 0!==t||r.nextTick(O,this),e},A.prototype.resume=function(){var t=this._readableState;return t.flowing||(c(\"resume\"),t.flowing=!t.readableListening,function(t,e){e.resumeScheduled||(e.resumeScheduled=!0,r.nextTick(D,t,e))}(this,t)),t.paused=!1,this},A.prototype.pause=function(){return c(\"call pause flowing=%j\",this._readableState.flowing),!1!==this._readableState.flowing&&(c(\"pause\"),this._readableState.flowing=!1,this.emit(\"pause\")),this._readableState.paused=!0,this},A.prototype.wrap=function(t){var e=this,r=this._readableState,n=!1;for(var i in t.on(\"end\",(function(){if(c(\"wrapped end\"),r.decoder&&!r.ended){var t=r.decoder.end();t&&t.length&&e.push(t)}e.push(null)})),t.on(\"data\",(function(i){(c(\"wrapped data\"),r.decoder&&(i=r.decoder.write(i)),r.objectMode&&null==i)||(r.objectMode||i&&i.length)&&(e.push(i)||(n=!0,t.pause()))})),t)void 0===this[i]&&\"function\"==typeof t[i]&&(this[i]=function(e){return function(){return t[e].apply(t,arguments)}}(i));for(var a=0;a-1))throw new _(t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(A.prototype,\"writableBuffer\",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(A.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),A.prototype._write=function(t,e,r){r(new g(\"_write()\"))},A.prototype._writev=null,A.prototype.end=function(t,e,n){var i=this._writableState;return\"function\"==typeof t?(n=t,t=null,e=null):\"function\"==typeof e&&(n=e,e=null),null!=t&&this.write(t,e),i.corked&&(i.corked=1,this.uncork()),i.ending||function(t,e,n){e.ending=!0,P(t,e),n&&(e.finished?r.nextTick(n):t.once(\"finish\",n));e.ended=!0,t.writable=!1}(this,i,n),this},Object.defineProperty(A.prototype,\"writableLength\",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(A.prototype,\"destroyed\",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),A.prototype.destroy=f.destroy,A.prototype._undestroy=f.undestroy,A.prototype._destroy=function(t,e){e(t)}}).call(this)}).call(this,t(\"_process\"),\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"../errors\":286,\"./_stream_duplex\":287,\"./internal/streams/destroy\":294,\"./internal/streams/state\":298,\"./internal/streams/stream\":299,_process:277,buffer:85,inherits:231,\"util-deprecate\":330}],292:[function(t,e,r){(function(r){(function(){\"use strict\";var n;function i(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var a=t(\"./end-of-stream\"),o=Symbol(\"lastResolve\"),s=Symbol(\"lastReject\"),l=Symbol(\"error\"),c=Symbol(\"ended\"),u=Symbol(\"lastPromise\"),f=Symbol(\"handlePromise\"),h=Symbol(\"stream\");function p(t,e){return{value:t,done:e}}function d(t){var e=t[o];if(null!==e){var r=t[h].read();null!==r&&(t[u]=null,t[o]=null,t[s]=null,e(p(r,!1)))}}function g(t){r.nextTick(d,t)}var m=Object.getPrototypeOf((function(){})),v=Object.setPrototypeOf((i(n={get stream(){return this[h]},next:function(){var t=this,e=this[l];if(null!==e)return Promise.reject(e);if(this[c])return Promise.resolve(p(void 0,!0));if(this[h].destroyed)return new Promise((function(e,n){r.nextTick((function(){t[l]?n(t[l]):e(p(void 0,!0))}))}));var n,i=this[u];if(i)n=new Promise(function(t,e){return function(r,n){t.then((function(){e[c]?r(p(void 0,!0)):e[f](r,n)}),n)}}(i,this));else{var a=this[h].read();if(null!==a)return Promise.resolve(p(a,!1));n=new Promise(this[f])}return this[u]=n,n}},Symbol.asyncIterator,(function(){return this})),i(n,\"return\",(function(){var t=this;return new Promise((function(e,r){t[h].destroy(null,(function(t){t?r(t):e(p(void 0,!0))}))}))})),n),m);e.exports=function(t){var e,r=Object.create(v,(i(e={},h,{value:t,writable:!0}),i(e,o,{value:null,writable:!0}),i(e,s,{value:null,writable:!0}),i(e,l,{value:null,writable:!0}),i(e,c,{value:t._readableState.endEmitted,writable:!0}),i(e,f,{value:function(t,e){var n=r[h].read();n?(r[u]=null,r[o]=null,r[s]=null,t(p(n,!1))):(r[o]=t,r[s]=e)},writable:!0}),e));return r[u]=null,a(t,(function(t){if(t&&\"ERR_STREAM_PREMATURE_CLOSE\"!==t.code){var e=r[s];return null!==e&&(r[u]=null,r[o]=null,r[s]=null,e(t)),void(r[l]=t)}var n=r[o];null!==n&&(r[u]=null,r[o]=null,r[s]=null,n(p(void 0,!0))),r[c]=!0})),t.on(\"readable\",g.bind(null,r)),r}}).call(this)}).call(this,t(\"_process\"))},{\"./end-of-stream\":295,_process:277}],293:[function(t,e,r){\"use strict\";function n(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function i(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function a(t,e){for(var r=0;r0?this.tail.next=e:this.head=e,this.tail=e,++this.length}},{key:\"unshift\",value:function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length}},{key:\"shift\",value:function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}}},{key:\"clear\",value:function(){this.head=this.tail=null,this.length=0}},{key:\"join\",value:function(t){if(0===this.length)return\"\";for(var e=this.head,r=\"\"+e.data;e=e.next;)r+=t+e.data;return r}},{key:\"concat\",value:function(t){if(0===this.length)return o.alloc(0);for(var e,r,n,i=o.allocUnsafe(t>>>0),a=this.head,s=0;a;)e=a.data,r=i,n=s,o.prototype.copy.call(e,r,n),s+=a.data.length,a=a.next;return i}},{key:\"consume\",value:function(t,e){var r;return ti.length?i.length:t;if(a===i.length?n+=i:n+=i.slice(0,t),0==(t-=a)){a===i.length?(++r,e.next?this.head=e.next:this.head=this.tail=null):(this.head=e,e.data=i.slice(a));break}++r}return this.length-=r,n}},{key:\"_getBuffer\",value:function(t){var e=o.allocUnsafe(t),r=this.head,n=1;for(r.data.copy(e),t-=r.data.length;r=r.next;){var i=r.data,a=t>i.length?i.length:t;if(i.copy(e,e.length-t,0,a),0==(t-=a)){a===i.length?(++n,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=i.slice(a));break}++n}return this.length-=n,e}},{key:l,value:function(t,e){return s(this,function(t){for(var e=1;e0,(function(t){n||(n=t),t&&o.forEach(c),a||(o.forEach(c),i(n))}))}));return e.reduce(u)}},{\"../../../errors\":286,\"./end-of-stream\":295}],298:[function(t,e,r){\"use strict\";var n=t(\"../../../errors\").codes.ERR_INVALID_OPT_VALUE;e.exports={getHighWaterMark:function(t,e,r,i){var a=function(t,e,r){return null!=t.highWaterMark?t.highWaterMark:e?t[r]:null}(e,i,r);if(null!=a){if(!isFinite(a)||Math.floor(a)!==a||a<0)throw new n(i?r:\"highWaterMark\",a);return Math.floor(a)}return t.objectMode?16:16384}}},{\"../../../errors\":286}],299:[function(t,e,r){e.exports=t(\"events\").EventEmitter},{events:84}],300:[function(t,e,r){\"use strict\";var n=t(\"safe-buffer\").Buffer,i=n.isEncoding||function(t){switch((t=\"\"+t)&&t.toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":case\"raw\":return!0;default:return!1}};function a(t){var e;switch(this.encoding=function(t){var e=function(t){if(!t)return\"utf8\";for(var e;;)switch(t){case\"utf8\":case\"utf-8\":return\"utf8\";case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return\"utf16le\";case\"latin1\":case\"binary\":return\"latin1\";case\"base64\":case\"ascii\":case\"hex\":return t;default:if(e)return;t=(\"\"+t).toLowerCase(),e=!0}}(t);if(\"string\"!=typeof e&&(n.isEncoding===i||!i(t)))throw new Error(\"Unknown encoding: \"+t);return e||t}(t),this.encoding){case\"utf16le\":this.text=l,this.end=c,e=4;break;case\"utf8\":this.fillLast=s,e=4;break;case\"base64\":this.text=u,this.end=f,e=3;break;default:return this.write=h,void(this.end=p)}this.lastNeed=0,this.lastTotal=0,this.lastChar=n.allocUnsafe(e)}function o(t){return t<=127?0:t>>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function s(t){var e=this.lastTotal-this.lastNeed,r=function(t,e,r){if(128!=(192&e[0]))return t.lastNeed=0,\"\\ufffd\";if(t.lastNeed>1&&e.length>1){if(128!=(192&e[1]))return t.lastNeed=1,\"\\ufffd\";if(t.lastNeed>2&&e.length>2&&128!=(192&e[2]))return t.lastNeed=2,\"\\ufffd\"}}(this,t);return void 0!==r?r:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),void(this.lastNeed-=t.length))}function l(t,e){if((t.length-e)%2==0){var r=t.toString(\"utf16le\",e);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString(\"utf16le\",e,t.length-1)}function c(t){var e=t&&t.length?this.write(t):\"\";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString(\"utf16le\",0,r)}return e}function u(t,e){var r=(t.length-e)%3;return 0===r?t.toString(\"base64\",e):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString(\"base64\",e,t.length-r))}function f(t){var e=t&&t.length?this.write(t):\"\";return this.lastNeed?e+this.lastChar.toString(\"base64\",0,3-this.lastNeed):e}function h(t){return t.toString(this.encoding)}function p(t){return t&&t.length?this.write(t):\"\"}r.StringDecoder=a,a.prototype.write=function(t){if(0===t.length)return\"\";var e,r;if(this.lastNeed){if(void 0===(e=this.fillLast(t)))return\"\";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0)return i>0&&(t.lastNeed=i-1),i;if(--n=0)return i>0&&(t.lastNeed=i-2),i;if(--n=0)return i>0&&(2===i?i=0:t.lastNeed=i-3),i;return 0}(this,t,e);if(!this.lastNeed)return t.toString(\"utf8\",e);this.lastTotal=r;var n=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,n),t.toString(\"utf8\",e,n)},a.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length}},{\"safe-buffer\":284}],301:[function(t,e,r){(function(r,n){(function(){var r=t(\"assert\"),i=t(\"debug\")(\"stream-parser\");e.exports=function(t){var e=t&&\"function\"==typeof t._transform,r=t&&\"function\"==typeof t._write;if(!e&&!r)throw new Error(\"must pass a Writable or Transform stream in\");i(\"extending Parser into stream\"),t._bytes=o,t._skipBytes=s,e&&(t._passthrough=l);e?t._transform=u:t._write=c};function a(t){i(\"initializing parser stream\"),t._parserBytesLeft=0,t._parserBuffers=[],t._parserBuffered=0,t._parserState=-1,t._parserCallback=null,\"function\"==typeof t.push&&(t._parserOutput=t.push.bind(t)),t._parserInit=!0}function o(t,e){r(!this._parserCallback,'there is already a \"callback\" set!'),r(isFinite(t)&&t>0,'can only buffer a finite number of bytes > 0, got \"'+t+'\"'),this._parserInit||a(this),i(\"buffering %o bytes\",t),this._parserBytesLeft=t,this._parserCallback=e,this._parserState=0}function s(t,e){r(!this._parserCallback,'there is already a \"callback\" set!'),r(t>0,'can only skip > 0 bytes, got \"'+t+'\"'),this._parserInit||a(this),i(\"skipping %o bytes\",t),this._parserBytesLeft=t,this._parserCallback=e,this._parserState=1}function l(t,e){r(!this._parserCallback,'There is already a \"callback\" set!'),r(t>0,'can only pass through > 0 bytes, got \"'+t+'\"'),this._parserInit||a(this),i(\"passing through %o bytes\",t),this._parserBytesLeft=t,this._parserCallback=e,this._parserState=2}function c(t,e,r){this._parserInit||a(this),i(\"write(%o bytes)\",t.length),\"function\"==typeof e&&(r=e),h(this,t,null,r)}function u(t,e,r){this._parserInit||a(this),i(\"transform(%o bytes)\",t.length),\"function\"!=typeof e&&(e=this._parserOutput),h(this,t,e,r)}function f(t,e,r,a){if(t._parserBytesLeft-=e.length,i(\"%o bytes left for stream piece\",t._parserBytesLeft),0===t._parserState?(t._parserBuffers.push(e),t._parserBuffered+=e.length):2===t._parserState&&r(e),0!==t._parserBytesLeft)return a;var o=t._parserCallback;if(o&&0===t._parserState&&t._parserBuffers.length>1&&(e=n.concat(t._parserBuffers,t._parserBuffered)),0!==t._parserState&&(e=null),t._parserCallback=null,t._parserBuffered=0,t._parserState=-1,t._parserBuffers.splice(0),o){var s=[];e&&s.push(e),r&&s.push(r);var l=o.length>s.length;l&&s.push(p(a));var c=o.apply(t,s);if(!l||a===c)return a}}var h=p((function t(e,r,n,i){return e._parserBytesLeft<=0?i(new Error(\"got data but not currently parsing anything\")):r.length<=e._parserBytesLeft?function(){return f(e,r,n,i)}:function(){var a=r.slice(0,e._parserBytesLeft);return f(e,a,n,(function(o){return o?i(o):r.length>a.length?function(){return t(e,r.slice(a.length),n,i)}:void 0}))}}));function p(t){return function(){for(var e=t.apply(this,arguments);\"function\"==typeof e;)e=e();return e}}}).call(this)}).call(this,t(\"_process\"),t(\"buffer\").Buffer)},{_process:277,assert:75,buffer:85,debug:302}],302:[function(t,e,r){(function(n){(function(){function i(){var t;try{t=r.storage.debug}catch(t){}return!t&&void 0!==n&&\"env\"in n&&(t=n.env.DEBUG),t}(r=e.exports=t(\"./debug\")).log=function(){return\"object\"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)},r.formatArgs=function(t){var e=this.useColors;if(t[0]=(e?\"%c\":\"\")+this.namespace+(e?\" %c\":\" \")+t[0]+(e?\"%c \":\" \")+\"+\"+r.humanize(this.diff),!e)return;var n=\"color: \"+this.color;t.splice(1,0,n,\"color: inherit\");var i=0,a=0;t[0].replace(/%[a-zA-Z%]/g,(function(t){\"%%\"!==t&&(i++,\"%c\"===t&&(a=i))})),t.splice(a,0,n)},r.save=function(t){try{null==t?r.storage.removeItem(\"debug\"):r.storage.debug=t}catch(t){}},r.load=i,r.useColors=function(){if(\"undefined\"!=typeof window&&window.process&&\"renderer\"===window.process.type)return!0;return\"undefined\"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||\"undefined\"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||\"undefined\"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)&&parseInt(RegExp.$1,10)>=31||\"undefined\"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/)},r.storage=\"undefined\"!=typeof chrome&&void 0!==chrome.storage?chrome.storage.local:function(){try{return window.localStorage}catch(t){}}(),r.colors=[\"lightseagreen\",\"forestgreen\",\"goldenrod\",\"dodgerblue\",\"darkorchid\",\"crimson\"],r.formatters.j=function(t){try{return JSON.stringify(t)}catch(t){return\"[UnexpectedJSONParseError]: \"+t.message}},r.enable(i())}).call(this)}).call(this,t(\"_process\"))},{\"./debug\":303,_process:277}],303:[function(t,e,r){var n;function i(t){function e(){if(e.enabled){var t=e,i=+new Date,a=i-(n||i);t.diff=a,t.prev=n,t.curr=i,n=i;for(var o=new Array(arguments.length),s=0;s0)return function(t){if((t=String(t)).length>100)return;var e=/^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(t);if(!e)return;var r=parseFloat(e[1]);switch((e[2]||\"ms\").toLowerCase()){case\"years\":case\"year\":case\"yrs\":case\"yr\":case\"y\":return 315576e5*r;case\"days\":case\"day\":case\"d\":return r*o;case\"hours\":case\"hour\":case\"hrs\":case\"hr\":case\"h\":return r*a;case\"minutes\":case\"minute\":case\"mins\":case\"min\":case\"m\":return r*i;case\"seconds\":case\"second\":case\"secs\":case\"sec\":case\"s\":return r*n;case\"milliseconds\":case\"millisecond\":case\"msecs\":case\"msec\":case\"ms\":return r;default:return}}(t);if(\"number\"===l&&!1===isNaN(t))return e.long?s(r=t,o,\"day\")||s(r,a,\"hour\")||s(r,i,\"minute\")||s(r,n,\"second\")||r+\" ms\":function(t){if(t>=o)return Math.round(t/o)+\"d\";if(t>=a)return Math.round(t/a)+\"h\";if(t>=i)return Math.round(t/i)+\"m\";if(t>=n)return Math.round(t/n)+\"s\";return t+\"ms\"}(t);throw new Error(\"val is not a non-empty string or a valid number. val=\"+JSON.stringify(t))}},{}],305:[function(t,e,r){\"use strict\";var n=t(\"parenthesis\");e.exports=function(t,e,r){if(null==t)throw Error(\"First argument should be a string\");if(null==e)throw Error(\"Separator should be a string or a RegExp\");r?(\"string\"==typeof r||Array.isArray(r))&&(r={ignore:r}):r={},null==r.escape&&(r.escape=!0),null==r.ignore?r.ignore=[\"[]\",\"()\",\"{}\",\"<>\",'\"\"',\"''\",\"``\",\"\\u201c\\u201d\",\"\\xab\\xbb\"]:(\"string\"==typeof r.ignore&&(r.ignore=[r.ignore]),r.ignore=r.ignore.map((function(t){return 1===t.length&&(t+=t),t})));var i=n.parse(t,{flat:!0,brackets:r.ignore}),a=i[0].split(e);if(r.escape){for(var o=[],s=0;s0;){e=c[c.length-1];var p=t[e];if(a[e]=0&&s[e].push(o[g])}a[e]=d}else{if(n[e]===r[e]){var m=[],v=[],y=0;for(d=l.length-1;d>=0;--d){var x=l[d];if(i[x]=!1,m.push(x),v.push(s[x]),y+=s[x].length,o[x]=f.length,x===e){l.length=d;break}}f.push(m);var b=new Array(y);for(d=0;d1&&(i=1),i<-1&&(i=-1),(t*n-e*r<0?-1:1)*Math.acos(i)};r.default=function(t){var e=t.px,r=t.py,l=t.cx,c=t.cy,u=t.rx,f=t.ry,h=t.xAxisRotation,p=void 0===h?0:h,d=t.largeArcFlag,g=void 0===d?0:d,m=t.sweepFlag,v=void 0===m?0:m,y=[];if(0===u||0===f)return[];var x=Math.sin(p*i/360),b=Math.cos(p*i/360),_=b*(e-l)/2+x*(r-c)/2,w=-x*(e-l)/2+b*(r-c)/2;if(0===_&&0===w)return[];u=Math.abs(u),f=Math.abs(f);var T=Math.pow(_,2)/Math.pow(u,2)+Math.pow(w,2)/Math.pow(f,2);T>1&&(u*=Math.sqrt(T),f*=Math.sqrt(T));var k=function(t,e,r,n,a,o,l,c,u,f,h,p){var d=Math.pow(a,2),g=Math.pow(o,2),m=Math.pow(h,2),v=Math.pow(p,2),y=d*g-d*v-g*m;y<0&&(y=0),y/=d*v+g*m;var x=(y=Math.sqrt(y)*(l===c?-1:1))*a/o*p,b=y*-o/a*h,_=f*x-u*b+(t+r)/2,w=u*x+f*b+(e+n)/2,T=(h-x)/a,k=(p-b)/o,A=(-h-x)/a,M=(-p-b)/o,S=s(1,0,T,k),E=s(T,k,A,M);return 0===c&&E>0&&(E-=i),1===c&&E<0&&(E+=i),[_,w,S,E]}(e,r,l,c,u,f,g,v,x,b,_,w),A=n(k,4),M=A[0],S=A[1],E=A[2],L=A[3],C=Math.abs(L)/(i/4);Math.abs(1-C)<1e-7&&(C=1);var P=Math.max(Math.ceil(C),1);L/=P;for(var I=0;Ie[2]&&(e[2]=c[u+0]),c[u+1]>e[3]&&(e[3]=c[u+1]);return e}},{\"abs-svg-path\":70,assert:75,\"is-svg-path\":238,\"normalize-svg-path\":309,\"parse-svg-path\":250}],309:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e,r=[],o=0,s=0,l=0,c=0,u=null,f=null,h=0,p=0,d=0,g=t.length;d4?(o=m[m.length-4],s=m[m.length-3]):(o=h,s=p),r.push(m)}return r};var n=t(\"svg-arc-to-cubic-bezier\");function i(t,e,r,n){return[\"C\",t,e,r,n,r,n]}function a(t,e,r,n,i,a){return[\"C\",t/3+2/3*r,e/3+2/3*n,i/3+2/3*r,a/3+2/3*n,i,a]}},{\"svg-arc-to-cubic-bezier\":307}],310:[function(t,e,r){\"use strict\";var n,i=t(\"svg-path-bounds\"),a=t(\"parse-svg-path\"),o=t(\"draw-svg-path\"),s=t(\"is-svg-path\"),l=t(\"bitmap-sdf\"),c=document.createElement(\"canvas\"),u=c.getContext(\"2d\");e.exports=function(t,e){if(!s(t))throw Error(\"Argument should be valid svg path string\");e||(e={});var r,f;e.shape?(r=e.shape[0],f=e.shape[1]):(r=c.width=e.w||e.width||200,f=c.height=e.h||e.height||200);var h=Math.min(r,f),p=e.stroke||0,d=e.viewbox||e.viewBox||i(t),g=[r/(d[2]-d[0]),f/(d[3]-d[1])],m=Math.min(g[0]||0,g[1]||0)/2;u.fillStyle=\"black\",u.fillRect(0,0,r,f),u.fillStyle=\"white\",p&&(\"number\"!=typeof p&&(p=1),u.strokeStyle=p>0?\"white\":\"black\",u.lineWidth=Math.abs(p));if(u.translate(.5*r,.5*f),u.scale(m,m),function(){if(null!=n)return n;var t=document.createElement(\"canvas\").getContext(\"2d\");if(t.canvas.width=t.canvas.height=1,!window.Path2D)return n=!1;var e=new Path2D(\"M0,0h1v1h-1v-1Z\");t.fillStyle=\"black\",t.fill(e);var r=t.getImageData(0,0,1,1);return n=r&&r.data&&255===r.data[3]}()){var v=new Path2D(t);u.fill(v),p&&u.stroke(v)}else{var y=a(t);o(u,y),u.fill(),p&&u.stroke()}return u.setTransform(1,0,0,1,0,0),l(u,{cutoff:null!=e.cutoff?e.cutoff:.5,radius:null!=e.radius?e.radius:.5*h})}},{\"bitmap-sdf\":82,\"draw-svg-path\":126,\"is-svg-path\":238,\"parse-svg-path\":250,\"svg-path-bounds\":308}],311:[function(t,e,r){(function(e,n){(function(){var i=t(\"process/browser.js\").nextTick,a=Function.prototype.apply,o=Array.prototype.slice,s={},l=0;function c(t,e){this._id=t,this._clearFn=e}r.setTimeout=function(){return new c(a.call(setTimeout,window,arguments),clearTimeout)},r.setInterval=function(){return new c(a.call(setInterval,window,arguments),clearInterval)},r.clearTimeout=r.clearInterval=function(t){t.close()},c.prototype.unref=c.prototype.ref=function(){},c.prototype.close=function(){this._clearFn.call(window,this._id)},r.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},r.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},r._unrefActive=r.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout((function(){t._onTimeout&&t._onTimeout()}),e))},r.setImmediate=\"function\"==typeof e?e:function(t){var e=l++,n=!(arguments.length<2)&&o.call(arguments,1);return s[e]=!0,i((function(){s[e]&&(n?t.apply(null,n):t.call(null),r.clearImmediate(e))})),e},r.clearImmediate=\"function\"==typeof n?n:function(t){delete s[t]}}).call(this)}).call(this,t(\"timers\").setImmediate,t(\"timers\").clearImmediate)},{\"process/browser.js\":277,timers:311}],312:[function(t,e,r){!function(t){var r=/^\\s+/,n=/\\s+$/,i=0,a=t.round,o=t.min,s=t.max,l=t.random;function c(e,l){if(l=l||{},(e=e||\"\")instanceof c)return e;if(!(this instanceof c))return new c(e,l);var u=function(e){var i={r:0,g:0,b:0},a=1,l=null,c=null,u=null,f=!1,h=!1;\"string\"==typeof e&&(e=function(t){t=t.replace(r,\"\").replace(n,\"\").toLowerCase();var e,i=!1;if(S[t])t=S[t],i=!0;else if(\"transparent\"==t)return{r:0,g:0,b:0,a:0,format:\"name\"};if(e=j.rgb.exec(t))return{r:e[1],g:e[2],b:e[3]};if(e=j.rgba.exec(t))return{r:e[1],g:e[2],b:e[3],a:e[4]};if(e=j.hsl.exec(t))return{h:e[1],s:e[2],l:e[3]};if(e=j.hsla.exec(t))return{h:e[1],s:e[2],l:e[3],a:e[4]};if(e=j.hsv.exec(t))return{h:e[1],s:e[2],v:e[3]};if(e=j.hsva.exec(t))return{h:e[1],s:e[2],v:e[3],a:e[4]};if(e=j.hex8.exec(t))return{r:I(e[1]),g:I(e[2]),b:I(e[3]),a:R(e[4]),format:i?\"name\":\"hex8\"};if(e=j.hex6.exec(t))return{r:I(e[1]),g:I(e[2]),b:I(e[3]),format:i?\"name\":\"hex\"};if(e=j.hex4.exec(t))return{r:I(e[1]+\"\"+e[1]),g:I(e[2]+\"\"+e[2]),b:I(e[3]+\"\"+e[3]),a:R(e[4]+\"\"+e[4]),format:i?\"name\":\"hex8\"};if(e=j.hex3.exec(t))return{r:I(e[1]+\"\"+e[1]),g:I(e[2]+\"\"+e[2]),b:I(e[3]+\"\"+e[3]),format:i?\"name\":\"hex\"};return!1}(e));\"object\"==typeof e&&(U(e.r)&&U(e.g)&&U(e.b)?(p=e.r,d=e.g,g=e.b,i={r:255*C(p,255),g:255*C(d,255),b:255*C(g,255)},f=!0,h=\"%\"===String(e.r).substr(-1)?\"prgb\":\"rgb\"):U(e.h)&&U(e.s)&&U(e.v)?(l=z(e.s),c=z(e.v),i=function(e,r,n){e=6*C(e,360),r=C(r,100),n=C(n,100);var i=t.floor(e),a=e-i,o=n*(1-r),s=n*(1-a*r),l=n*(1-(1-a)*r),c=i%6;return{r:255*[n,s,o,o,l,n][c],g:255*[l,n,n,s,o,o][c],b:255*[o,o,l,n,n,s][c]}}(e.h,l,c),f=!0,h=\"hsv\"):U(e.h)&&U(e.s)&&U(e.l)&&(l=z(e.s),u=z(e.l),i=function(t,e,r){var n,i,a;function o(t,e,r){return r<0&&(r+=1),r>1&&(r-=1),r<1/6?t+6*(e-t)*r:r<.5?e:r<2/3?t+(e-t)*(2/3-r)*6:t}if(t=C(t,360),e=C(e,100),r=C(r,100),0===e)n=i=a=r;else{var s=r<.5?r*(1+e):r+e-r*e,l=2*r-s;n=o(l,s,t+1/3),i=o(l,s,t),a=o(l,s,t-1/3)}return{r:255*n,g:255*i,b:255*a}}(e.h,l,u),f=!0,h=\"hsl\"),e.hasOwnProperty(\"a\")&&(a=e.a));var p,d,g;return a=L(a),{ok:f,format:e.format||h,r:o(255,s(i.r,0)),g:o(255,s(i.g,0)),b:o(255,s(i.b,0)),a:a}}(e);this._originalInput=e,this._r=u.r,this._g=u.g,this._b=u.b,this._a=u.a,this._roundA=a(100*this._a)/100,this._format=l.format||u.format,this._gradientType=l.gradientType,this._r<1&&(this._r=a(this._r)),this._g<1&&(this._g=a(this._g)),this._b<1&&(this._b=a(this._b)),this._ok=u.ok,this._tc_id=i++}function u(t,e,r){t=C(t,255),e=C(e,255),r=C(r,255);var n,i,a=s(t,e,r),l=o(t,e,r),c=(a+l)/2;if(a==l)n=i=0;else{var u=a-l;switch(i=c>.5?u/(2-a-l):u/(a+l),a){case t:n=(e-r)/u+(e>1)+720)%360;--e;)n.h=(n.h+i)%360,a.push(c(n));return a}function M(t,e){e=e||6;for(var r=c(t).toHsv(),n=r.h,i=r.s,a=r.v,o=[],s=1/e;e--;)o.push(c({h:n,s:i,v:a})),a=(a+s)%1;return o}c.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var t=this.toRgb();return(299*t.r+587*t.g+114*t.b)/1e3},getLuminance:function(){var e,r,n,i=this.toRgb();return e=i.r/255,r=i.g/255,n=i.b/255,.2126*(e<=.03928?e/12.92:t.pow((e+.055)/1.055,2.4))+.7152*(r<=.03928?r/12.92:t.pow((r+.055)/1.055,2.4))+.0722*(n<=.03928?n/12.92:t.pow((n+.055)/1.055,2.4))},setAlpha:function(t){return this._a=L(t),this._roundA=a(100*this._a)/100,this},toHsv:function(){var t=f(this._r,this._g,this._b);return{h:360*t.h,s:t.s,v:t.v,a:this._a}},toHsvString:function(){var t=f(this._r,this._g,this._b),e=a(360*t.h),r=a(100*t.s),n=a(100*t.v);return 1==this._a?\"hsv(\"+e+\", \"+r+\"%, \"+n+\"%)\":\"hsva(\"+e+\", \"+r+\"%, \"+n+\"%, \"+this._roundA+\")\"},toHsl:function(){var t=u(this._r,this._g,this._b);return{h:360*t.h,s:t.s,l:t.l,a:this._a}},toHslString:function(){var t=u(this._r,this._g,this._b),e=a(360*t.h),r=a(100*t.s),n=a(100*t.l);return 1==this._a?\"hsl(\"+e+\", \"+r+\"%, \"+n+\"%)\":\"hsla(\"+e+\", \"+r+\"%, \"+n+\"%, \"+this._roundA+\")\"},toHex:function(t){return h(this._r,this._g,this._b,t)},toHexString:function(t){return\"#\"+this.toHex(t)},toHex8:function(t){return function(t,e,r,n,i){var o=[O(a(t).toString(16)),O(a(e).toString(16)),O(a(r).toString(16)),O(D(n))];if(i&&o[0].charAt(0)==o[0].charAt(1)&&o[1].charAt(0)==o[1].charAt(1)&&o[2].charAt(0)==o[2].charAt(1)&&o[3].charAt(0)==o[3].charAt(1))return o[0].charAt(0)+o[1].charAt(0)+o[2].charAt(0)+o[3].charAt(0);return o.join(\"\")}(this._r,this._g,this._b,this._a,t)},toHex8String:function(t){return\"#\"+this.toHex8(t)},toRgb:function(){return{r:a(this._r),g:a(this._g),b:a(this._b),a:this._a}},toRgbString:function(){return 1==this._a?\"rgb(\"+a(this._r)+\", \"+a(this._g)+\", \"+a(this._b)+\")\":\"rgba(\"+a(this._r)+\", \"+a(this._g)+\", \"+a(this._b)+\", \"+this._roundA+\")\"},toPercentageRgb:function(){return{r:a(100*C(this._r,255))+\"%\",g:a(100*C(this._g,255))+\"%\",b:a(100*C(this._b,255))+\"%\",a:this._a}},toPercentageRgbString:function(){return 1==this._a?\"rgb(\"+a(100*C(this._r,255))+\"%, \"+a(100*C(this._g,255))+\"%, \"+a(100*C(this._b,255))+\"%)\":\"rgba(\"+a(100*C(this._r,255))+\"%, \"+a(100*C(this._g,255))+\"%, \"+a(100*C(this._b,255))+\"%, \"+this._roundA+\")\"},toName:function(){return 0===this._a?\"transparent\":!(this._a<1)&&(E[h(this._r,this._g,this._b,!0)]||!1)},toFilter:function(t){var e=\"#\"+p(this._r,this._g,this._b,this._a),r=e,n=this._gradientType?\"GradientType = 1, \":\"\";if(t){var i=c(t);r=\"#\"+p(i._r,i._g,i._b,i._a)}return\"progid:DXImageTransform.Microsoft.gradient(\"+n+\"startColorstr=\"+e+\",endColorstr=\"+r+\")\"},toString:function(t){var e=!!t;t=t||this._format;var r=!1,n=this._a<1&&this._a>=0;return e||!n||\"hex\"!==t&&\"hex6\"!==t&&\"hex3\"!==t&&\"hex4\"!==t&&\"hex8\"!==t&&\"name\"!==t?(\"rgb\"===t&&(r=this.toRgbString()),\"prgb\"===t&&(r=this.toPercentageRgbString()),\"hex\"!==t&&\"hex6\"!==t||(r=this.toHexString()),\"hex3\"===t&&(r=this.toHexString(!0)),\"hex4\"===t&&(r=this.toHex8String(!0)),\"hex8\"===t&&(r=this.toHex8String()),\"name\"===t&&(r=this.toName()),\"hsl\"===t&&(r=this.toHslString()),\"hsv\"===t&&(r=this.toHsvString()),r||this.toHexString()):\"name\"===t&&0===this._a?this.toName():this.toRgbString()},clone:function(){return c(this.toString())},_applyModification:function(t,e){var r=t.apply(null,[this].concat([].slice.call(e)));return this._r=r._r,this._g=r._g,this._b=r._b,this.setAlpha(r._a),this},lighten:function(){return this._applyModification(v,arguments)},brighten:function(){return this._applyModification(y,arguments)},darken:function(){return this._applyModification(x,arguments)},desaturate:function(){return this._applyModification(d,arguments)},saturate:function(){return this._applyModification(g,arguments)},greyscale:function(){return this._applyModification(m,arguments)},spin:function(){return this._applyModification(b,arguments)},_applyCombination:function(t,e){return t.apply(null,[this].concat([].slice.call(e)))},analogous:function(){return this._applyCombination(A,arguments)},complement:function(){return this._applyCombination(_,arguments)},monochromatic:function(){return this._applyCombination(M,arguments)},splitcomplement:function(){return this._applyCombination(k,arguments)},triad:function(){return this._applyCombination(w,arguments)},tetrad:function(){return this._applyCombination(T,arguments)}},c.fromRatio=function(t,e){if(\"object\"==typeof t){var r={};for(var n in t)t.hasOwnProperty(n)&&(r[n]=\"a\"===n?t[n]:z(t[n]));t=r}return c(t,e)},c.equals=function(t,e){return!(!t||!e)&&c(t).toRgbString()==c(e).toRgbString()},c.random=function(){return c.fromRatio({r:l(),g:l(),b:l()})},c.mix=function(t,e,r){r=0===r?0:r||50;var n=c(t).toRgb(),i=c(e).toRgb(),a=r/100;return c({r:(i.r-n.r)*a+n.r,g:(i.g-n.g)*a+n.g,b:(i.b-n.b)*a+n.b,a:(i.a-n.a)*a+n.a})},c.readability=function(e,r){var n=c(e),i=c(r);return(t.max(n.getLuminance(),i.getLuminance())+.05)/(t.min(n.getLuminance(),i.getLuminance())+.05)},c.isReadable=function(t,e,r){var n,i,a=c.readability(t,e);switch(i=!1,(n=function(t){var e,r;e=((t=t||{level:\"AA\",size:\"small\"}).level||\"AA\").toUpperCase(),r=(t.size||\"small\").toLowerCase(),\"AA\"!==e&&\"AAA\"!==e&&(e=\"AA\");\"small\"!==r&&\"large\"!==r&&(r=\"small\");return{level:e,size:r}}(r)).level+n.size){case\"AAsmall\":case\"AAAlarge\":i=a>=4.5;break;case\"AAlarge\":i=a>=3;break;case\"AAAsmall\":i=a>=7}return i},c.mostReadable=function(t,e,r){var n,i,a,o,s=null,l=0;i=(r=r||{}).includeFallbackColors,a=r.level,o=r.size;for(var u=0;ul&&(l=n,s=c(e[u]));return c.isReadable(t,s,{level:a,size:o})||!i?s:(r.includeFallbackColors=!1,c.mostReadable(t,[\"#fff\",\"#000\"],r))};var S=c.names={aliceblue:\"f0f8ff\",antiquewhite:\"faebd7\",aqua:\"0ff\",aquamarine:\"7fffd4\",azure:\"f0ffff\",beige:\"f5f5dc\",bisque:\"ffe4c4\",black:\"000\",blanchedalmond:\"ffebcd\",blue:\"00f\",blueviolet:\"8a2be2\",brown:\"a52a2a\",burlywood:\"deb887\",burntsienna:\"ea7e5d\",cadetblue:\"5f9ea0\",chartreuse:\"7fff00\",chocolate:\"d2691e\",coral:\"ff7f50\",cornflowerblue:\"6495ed\",cornsilk:\"fff8dc\",crimson:\"dc143c\",cyan:\"0ff\",darkblue:\"00008b\",darkcyan:\"008b8b\",darkgoldenrod:\"b8860b\",darkgray:\"a9a9a9\",darkgreen:\"006400\",darkgrey:\"a9a9a9\",darkkhaki:\"bdb76b\",darkmagenta:\"8b008b\",darkolivegreen:\"556b2f\",darkorange:\"ff8c00\",darkorchid:\"9932cc\",darkred:\"8b0000\",darksalmon:\"e9967a\",darkseagreen:\"8fbc8f\",darkslateblue:\"483d8b\",darkslategray:\"2f4f4f\",darkslategrey:\"2f4f4f\",darkturquoise:\"00ced1\",darkviolet:\"9400d3\",deeppink:\"ff1493\",deepskyblue:\"00bfff\",dimgray:\"696969\",dimgrey:\"696969\",dodgerblue:\"1e90ff\",firebrick:\"b22222\",floralwhite:\"fffaf0\",forestgreen:\"228b22\",fuchsia:\"f0f\",gainsboro:\"dcdcdc\",ghostwhite:\"f8f8ff\",gold:\"ffd700\",goldenrod:\"daa520\",gray:\"808080\",green:\"008000\",greenyellow:\"adff2f\",grey:\"808080\",honeydew:\"f0fff0\",hotpink:\"ff69b4\",indianred:\"cd5c5c\",indigo:\"4b0082\",ivory:\"fffff0\",khaki:\"f0e68c\",lavender:\"e6e6fa\",lavenderblush:\"fff0f5\",lawngreen:\"7cfc00\",lemonchiffon:\"fffacd\",lightblue:\"add8e6\",lightcoral:\"f08080\",lightcyan:\"e0ffff\",lightgoldenrodyellow:\"fafad2\",lightgray:\"d3d3d3\",lightgreen:\"90ee90\",lightgrey:\"d3d3d3\",lightpink:\"ffb6c1\",lightsalmon:\"ffa07a\",lightseagreen:\"20b2aa\",lightskyblue:\"87cefa\",lightslategray:\"789\",lightslategrey:\"789\",lightsteelblue:\"b0c4de\",lightyellow:\"ffffe0\",lime:\"0f0\",limegreen:\"32cd32\",linen:\"faf0e6\",magenta:\"f0f\",maroon:\"800000\",mediumaquamarine:\"66cdaa\",mediumblue:\"0000cd\",mediumorchid:\"ba55d3\",mediumpurple:\"9370db\",mediumseagreen:\"3cb371\",mediumslateblue:\"7b68ee\",mediumspringgreen:\"00fa9a\",mediumturquoise:\"48d1cc\",mediumvioletred:\"c71585\",midnightblue:\"191970\",mintcream:\"f5fffa\",mistyrose:\"ffe4e1\",moccasin:\"ffe4b5\",navajowhite:\"ffdead\",navy:\"000080\",oldlace:\"fdf5e6\",olive:\"808000\",olivedrab:\"6b8e23\",orange:\"ffa500\",orangered:\"ff4500\",orchid:\"da70d6\",palegoldenrod:\"eee8aa\",palegreen:\"98fb98\",paleturquoise:\"afeeee\",palevioletred:\"db7093\",papayawhip:\"ffefd5\",peachpuff:\"ffdab9\",peru:\"cd853f\",pink:\"ffc0cb\",plum:\"dda0dd\",powderblue:\"b0e0e6\",purple:\"800080\",rebeccapurple:\"663399\",red:\"f00\",rosybrown:\"bc8f8f\",royalblue:\"4169e1\",saddlebrown:\"8b4513\",salmon:\"fa8072\",sandybrown:\"f4a460\",seagreen:\"2e8b57\",seashell:\"fff5ee\",sienna:\"a0522d\",silver:\"c0c0c0\",skyblue:\"87ceeb\",slateblue:\"6a5acd\",slategray:\"708090\",slategrey:\"708090\",snow:\"fffafa\",springgreen:\"00ff7f\",steelblue:\"4682b4\",tan:\"d2b48c\",teal:\"008080\",thistle:\"d8bfd8\",tomato:\"ff6347\",turquoise:\"40e0d0\",violet:\"ee82ee\",wheat:\"f5deb3\",white:\"fff\",whitesmoke:\"f5f5f5\",yellow:\"ff0\",yellowgreen:\"9acd32\"},E=c.hexNames=function(t){var e={};for(var r in t)t.hasOwnProperty(r)&&(e[t[r]]=r);return e}(S);function L(t){return t=parseFloat(t),(isNaN(t)||t<0||t>1)&&(t=1),t}function C(e,r){(function(t){return\"string\"==typeof t&&-1!=t.indexOf(\".\")&&1===parseFloat(t)})(e)&&(e=\"100%\");var n=function(t){return\"string\"==typeof t&&-1!=t.indexOf(\"%\")}(e);return e=o(r,s(0,parseFloat(e))),n&&(e=parseInt(e*r,10)/100),t.abs(e-r)<1e-6?1:e%r/parseFloat(r)}function P(t){return o(1,s(0,t))}function I(t){return parseInt(t,16)}function O(t){return 1==t.length?\"0\"+t:\"\"+t}function z(t){return t<=1&&(t=100*t+\"%\"),t}function D(e){return t.round(255*parseFloat(e)).toString(16)}function R(t){return I(t)/255}var F,B,N,j=(B=\"[\\\\s|\\\\(]+(\"+(F=\"(?:[-\\\\+]?\\\\d*\\\\.\\\\d+%?)|(?:[-\\\\+]?\\\\d+%?)\")+\")[,|\\\\s]+(\"+F+\")[,|\\\\s]+(\"+F+\")\\\\s*\\\\)?\",N=\"[\\\\s|\\\\(]+(\"+F+\")[,|\\\\s]+(\"+F+\")[,|\\\\s]+(\"+F+\")[,|\\\\s]+(\"+F+\")\\\\s*\\\\)?\",{CSS_UNIT:new RegExp(F),rgb:new RegExp(\"rgb\"+B),rgba:new RegExp(\"rgba\"+N),hsl:new RegExp(\"hsl\"+B),hsla:new RegExp(\"hsla\"+N),hsv:new RegExp(\"hsv\"+B),hsva:new RegExp(\"hsva\"+N),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/});function U(t){return!!j.CSS_UNIT.exec(t)}void 0!==e&&e.exports?e.exports=c:window.tinycolor=c}(Math)},{}],313:[function(t,e,r){\"use strict\";e.exports=i,e.exports.float32=e.exports.float=i,e.exports.fract32=e.exports.fract=function(t,e){if(t.length){if(t instanceof Float32Array)return new Float32Array(t.length);e instanceof Float32Array||(e=i(t));for(var r=0,n=e.length;ro&&(o=t[0]),t[1]s&&(s=t[1])}function c(t){switch(t.type){case\"GeometryCollection\":t.geometries.forEach(c);break;case\"Point\":l(t.coordinates);break;case\"MultiPoint\":t.coordinates.forEach(l)}}for(e in t.arcs.forEach((function(t){for(var e,r=-1,l=t.length;++ro&&(o=e[0]),e[1]s&&(s=e[1])})),t.objects)c(t.objects[e]);return[i,a,o,s]}function i(t,e){var r=e.id,n=e.bbox,i=null==e.properties?{}:e.properties,o=a(t,e);return null==r&&null==n?{type:\"Feature\",properties:i,geometry:o}:null==n?{type:\"Feature\",id:r,properties:i,geometry:o}:{type:\"Feature\",id:r,bbox:n,properties:i,geometry:o}}function a(t,e){var n=r(t.transform),i=t.arcs;function a(t,e){e.length&&e.pop();for(var r=i[t<0?~t:t],a=0,o=r.length;a1)n=l(t,e,r);else for(i=0,n=new Array(a=t.arcs.length);i1)for(var a,s,c=1,u=l(i[0]);cu&&(s=i[0],i[0]=i[c],i[c]=s,u=a);return i})).filter((function(t){return t.length>0}))}}function u(t,e){for(var r=0,n=t.length;r>>1;t[i]=2))throw new Error(\"n must be \\u22652\");var r,i=(l=t.bbox||n(t))[0],a=l[1],o=l[2],s=l[3];e={scale:[o-i?(o-i)/(r-1):1,s-a?(s-a)/(r-1):1],translate:[i,a]}}var l,c,u=f(e),h=t.objects,p={};function d(t){return u(t)}function g(t){var e;switch(t.type){case\"GeometryCollection\":e={type:\"GeometryCollection\",geometries:t.geometries.map(g)};break;case\"Point\":e={type:\"Point\",coordinates:d(t.coordinates)};break;case\"MultiPoint\":e={type:\"MultiPoint\",coordinates:t.coordinates.map(d)};break;default:return t}return null!=t.id&&(e.id=t.id),null!=t.bbox&&(e.bbox=t.bbox),null!=t.properties&&(e.properties=t.properties),e}for(c in h)p[c]=g(h[c]);return{type:\"Topology\",bbox:l,transform:e,objects:p,arcs:t.arcs.map((function(t){var e,r=0,n=1,i=t.length,a=new Array(i);for(a[0]=u(t[0],0);++r\":(e.length>100&&(e=e.slice(0,99)+\"\\u2026\"),e=e.replace(i,(function(t){switch(t){case\"\\n\":return\"\\\\n\";case\"\\r\":return\"\\\\r\";case\"\\u2028\":return\"\\\\u2028\";case\"\\u2029\":return\"\\\\u2029\";default:throw new Error(\"Unexpected character\")}})))}},{\"./safe-to-string\":318}],320:[function(t,e,r){\"use strict\";var n=t(\"../value/is\"),i={object:!0,function:!0,undefined:!0};e.exports=function(t){return!!n(t)&&hasOwnProperty.call(i,typeof t)}},{\"../value/is\":326}],321:[function(t,e,r){\"use strict\";var n=t(\"../lib/resolve-exception\"),i=t(\"./is\");e.exports=function(t){return i(t)?t:n(t,\"%v is not a plain function\",arguments[1])}},{\"../lib/resolve-exception\":317,\"./is\":322}],322:[function(t,e,r){\"use strict\";var n=t(\"../function/is\"),i=/^\\s*class[\\s{/}]/,a=Function.prototype.toString;e.exports=function(t){return!!n(t)&&!i.test(a.call(t))}},{\"../function/is\":316}],323:[function(t,e,r){\"use strict\";var n=t(\"../object/is\");e.exports=function(t){if(!n(t))return!1;try{return!!t.constructor&&t.constructor.prototype===t}catch(t){return!1}}},{\"../object/is\":320}],324:[function(t,e,r){\"use strict\";var n=t(\"../value/is\"),i=t(\"../object/is\"),a=Object.prototype.toString;e.exports=function(t){if(!n(t))return null;if(i(t)){var e=t.toString;if(\"function\"!=typeof e)return null;if(e===a)return null}try{return\"\"+t}catch(t){return null}}},{\"../object/is\":320,\"../value/is\":326}],325:[function(t,e,r){\"use strict\";var n=t(\"../lib/resolve-exception\"),i=t(\"./is\");e.exports=function(t){return i(t)?t:n(t,\"Cannot use %v\",arguments[1])}},{\"../lib/resolve-exception\":317,\"./is\":326}],326:[function(t,e,r){\"use strict\";e.exports=function(t){return null!=t}},{}],327:[function(t,e,r){(function(e){(function(){\"use strict\";var n=t(\"bit-twiddle\"),i=t(\"dup\"),a=t(\"buffer\").Buffer;e.__TYPEDARRAY_POOL||(e.__TYPEDARRAY_POOL={UINT8:i([32,0]),UINT16:i([32,0]),UINT32:i([32,0]),BIGUINT64:i([32,0]),INT8:i([32,0]),INT16:i([32,0]),INT32:i([32,0]),BIGINT64:i([32,0]),FLOAT:i([32,0]),DOUBLE:i([32,0]),DATA:i([32,0]),UINT8C:i([32,0]),BUFFER:i([32,0])});var o=\"undefined\"!=typeof Uint8ClampedArray,s=\"undefined\"!=typeof BigUint64Array,l=\"undefined\"!=typeof BigInt64Array,c=e.__TYPEDARRAY_POOL;c.UINT8C||(c.UINT8C=i([32,0])),c.BIGUINT64||(c.BIGUINT64=i([32,0])),c.BIGINT64||(c.BIGINT64=i([32,0])),c.BUFFER||(c.BUFFER=i([32,0]));var u=c.DATA,f=c.BUFFER;function h(t){if(t){var e=t.length||t.byteLength,r=n.log2(e);u[r].push(t)}}function p(t){t=n.nextPow2(t);var e=n.log2(t),r=u[e];return r.length>0?r.pop():new ArrayBuffer(t)}function d(t){return new Uint8Array(p(t),0,t)}function g(t){return new Uint16Array(p(2*t),0,t)}function m(t){return new Uint32Array(p(4*t),0,t)}function v(t){return new Int8Array(p(t),0,t)}function y(t){return new Int16Array(p(2*t),0,t)}function x(t){return new Int32Array(p(4*t),0,t)}function b(t){return new Float32Array(p(4*t),0,t)}function _(t){return new Float64Array(p(8*t),0,t)}function w(t){return o?new Uint8ClampedArray(p(t),0,t):d(t)}function T(t){return s?new BigUint64Array(p(8*t),0,t):null}function k(t){return l?new BigInt64Array(p(8*t),0,t):null}function A(t){return new DataView(p(t),0,t)}function M(t){t=n.nextPow2(t);var e=n.log2(t),r=f[e];return r.length>0?r.pop():new a(t)}r.free=function(t){if(a.isBuffer(t))f[n.log2(t.length)].push(t);else{if(\"[object ArrayBuffer]\"!==Object.prototype.toString.call(t)&&(t=t.buffer),!t)return;var e=t.length||t.byteLength,r=0|n.log2(e);u[r].push(t)}},r.freeUint8=r.freeUint16=r.freeUint32=r.freeBigUint64=r.freeInt8=r.freeInt16=r.freeInt32=r.freeBigInt64=r.freeFloat32=r.freeFloat=r.freeFloat64=r.freeDouble=r.freeUint8Clamped=r.freeDataView=function(t){h(t.buffer)},r.freeArrayBuffer=h,r.freeBuffer=function(t){f[n.log2(t.length)].push(t)},r.malloc=function(t,e){if(void 0===e||\"arraybuffer\"===e)return p(t);switch(e){case\"uint8\":return d(t);case\"uint16\":return g(t);case\"uint32\":return m(t);case\"int8\":return v(t);case\"int16\":return y(t);case\"int32\":return x(t);case\"float\":case\"float32\":return b(t);case\"double\":case\"float64\":return _(t);case\"uint8_clamped\":return w(t);case\"bigint64\":return k(t);case\"biguint64\":return T(t);case\"buffer\":return M(t);case\"data\":case\"dataview\":return A(t);default:return null}return null},r.mallocArrayBuffer=p,r.mallocUint8=d,r.mallocUint16=g,r.mallocUint32=m,r.mallocInt8=v,r.mallocInt16=y,r.mallocInt32=x,r.mallocFloat32=r.mallocFloat=b,r.mallocFloat64=r.mallocDouble=_,r.mallocUint8Clamped=w,r.mallocBigUint64=T,r.mallocBigInt64=k,r.mallocDataView=A,r.mallocBuffer=M,r.clearCache=function(){for(var t=0;t<32;++t)c.UINT8[t].length=0,c.UINT16[t].length=0,c.UINT32[t].length=0,c.INT8[t].length=0,c.INT16[t].length=0,c.INT32[t].length=0,c.FLOAT[t].length=0,c.DOUBLE[t].length=0,c.BIGUINT64[t].length=0,c.BIGINT64[t].length=0,c.UINT8C[t].length=0,u[t].length=0,f[t].length=0}}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"bit-twiddle\":81,buffer:85,dup:128}],328:[function(t,e,r){var n=/[\\'\\\"]/;e.exports=function(t){return t?(n.test(t.charAt(0))&&(t=t.substr(1)),n.test(t.charAt(t.length-1))&&(t=t.substr(0,t.length-1)),t):\"\"}},{}],329:[function(t,e,r){\"use strict\";e.exports=function(t,e,r){Array.isArray(r)||(r=[].slice.call(arguments,2));for(var n=0,i=r.length;n2111)throw e.replace(/\\{0\\}/,this.local.name);return t},toMonthIndex:function(t,e,r){var i=this.intercalaryMonth(t);if(r&&e!==i||e<1||e>12)throw n.local.invalidMonth.replace(/\\{0\\}/,this.local.name);return i?!r&&e<=i?e-1:e:e-1},toChineseMonth:function(t,e){t.year&&(e=(t=t.year()).month());var r=this.intercalaryMonth(t);if(e<0||e>(r?12:11))throw n.local.invalidMonth.replace(/\\{0\\}/,this.local.name);return r?e>13},isIntercalaryMonth:function(t,e){t.year&&(e=(t=t.year()).month());var r=this.intercalaryMonth(t);return!!r&&r===e},leapYear:function(t){return 0!==this.intercalaryMonth(t)},weekOfYear:function(t,e,r){var i,o=this._validateYear(t,n.local.invalidyear),s=h[o-h[0]],l=s>>9&4095,c=s>>5&15,u=31&s;(i=a.newDate(l,c,u)).add(4-(i.dayOfWeek()||7),\"d\");var f=this.toJD(t,e,r)-i.toJD();return 1+Math.floor(f/7)},monthsInYear:function(t){return this.leapYear(t)?13:12},daysInMonth:function(t,e){t.year&&(e=t.month(),t=t.year()),t=this._validateYear(t);var r=f[t-f[0]];if(e>(r>>13?12:11))throw n.local.invalidMonth.replace(/\\{0\\}/,this.local.name);return r&1<<12-e?30:29},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,s,r,n.local.invalidDate);t=this._validateYear(i.year()),e=i.month(),r=i.day();var o=this.isIntercalaryMonth(t,e),s=this.toChineseMonth(t,e),l=function(t,e,r,n,i){var a,o,s;if(\"object\"==typeof t)o=t,a=e||{};else{var l;if(!(\"number\"==typeof t&&t>=1888&&t<=2111))throw new Error(\"Lunar year outside range 1888-2111\");if(!(\"number\"==typeof e&&e>=1&&e<=12))throw new Error(\"Lunar month outside range 1 - 12\");if(!(\"number\"==typeof r&&r>=1&&r<=30))throw new Error(\"Lunar day outside range 1 - 30\");\"object\"==typeof n?(l=!1,a=n):(l=!!n,a=i||{}),o={year:t,month:e,day:r,isIntercalary:l}}s=o.day-1;var c,u=f[o.year-f[0]],p=u>>13;c=p&&(o.month>p||o.isIntercalary)?o.month:o.month-1;for(var d=0;d>9&4095,(g>>5&15)-1,(31&g)+s);return a.year=m.getFullYear(),a.month=1+m.getMonth(),a.day=m.getDate(),a}(t,s,r,o);return a.toJD(l.year,l.month,l.day)},fromJD:function(t){var e=a.fromJD(t),r=function(t,e,r,n){var i,a;if(\"object\"==typeof t)i=t,a=e||{};else{if(!(\"number\"==typeof t&&t>=1888&&t<=2111))throw new Error(\"Solar year outside range 1888-2111\");if(!(\"number\"==typeof e&&e>=1&&e<=12))throw new Error(\"Solar month outside range 1 - 12\");if(!(\"number\"==typeof r&&r>=1&&r<=31))throw new Error(\"Solar day outside range 1 - 31\");i={year:t,month:e,day:r},a=n||{}}var o=h[i.year-h[0]],s=i.year<<9|i.month<<5|i.day;a.year=s>=o?i.year:i.year-1,o=h[a.year-h[0]];var l,c=new Date(o>>9&4095,(o>>5&15)-1,31&o),u=new Date(i.year,i.month-1,i.day);l=Math.round((u-c)/864e5);var p,d=f[a.year-f[0]];for(p=0;p<13;p++){var g=d&1<<12-p?30:29;if(l>13;!m||p=2&&n<=6},extraInfo:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return{century:o[Math.floor((i.year()-1)/100)+1]||\"\"}},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return t=i.year()+(i.year()<0?1:0),e=i.month(),(r=i.day())+(e>1?16:0)+(e>2?32*(e-2):0)+400*(t-1)+this.jdEpoch-1},fromJD:function(t){t=Math.floor(t+.5)-Math.floor(this.jdEpoch)-1;var e=Math.floor(t/400)+1;t-=400*(e-1),t+=t>15?16:0;var r=Math.floor(t/32)+1,n=t-32*(r-1)+1;return this.newDate(e<=0?e-1:e,r,n)}});var o={20:\"Fruitbat\",21:\"Anchovy\"};n.calendars.discworld=a},{\"../main\":346,\"object-assign\":247}],335:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Ethiopian\",jdEpoch:1724220.5,daysPerMonth:[30,30,30,30,30,30,30,30,30,30,30,30,5],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Ethiopian\",epochs:[\"BEE\",\"EE\"],monthNames:[\"Meskerem\",\"Tikemet\",\"Hidar\",\"Tahesas\",\"Tir\",\"Yekatit\",\"Megabit\",\"Miazia\",\"Genbot\",\"Sene\",\"Hamle\",\"Nehase\",\"Pagume\"],monthNamesShort:[\"Mes\",\"Tik\",\"Hid\",\"Tah\",\"Tir\",\"Yek\",\"Meg\",\"Mia\",\"Gen\",\"Sen\",\"Ham\",\"Neh\",\"Pag\"],dayNames:[\"Ehud\",\"Segno\",\"Maksegno\",\"Irob\",\"Hamus\",\"Arb\",\"Kidame\"],dayNamesShort:[\"Ehu\",\"Seg\",\"Mak\",\"Iro\",\"Ham\",\"Arb\",\"Kid\"],dayNamesMin:[\"Eh\",\"Se\",\"Ma\",\"Ir\",\"Ha\",\"Ar\",\"Ki\"],digits:null,dateFormat:\"dd/mm/yyyy\",firstDay:0,isRTL:!1}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return(t=e.year()+(e.year()<0?1:0))%4==3||t%4==-1},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear||n.regionalOptions[\"\"].invalidYear),13},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(13===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return(t=i.year())<0&&t++,i.day()+30*(i.month()-1)+365*(t-1)+Math.floor(t/4)+this.jdEpoch-1},fromJD:function(t){var e=Math.floor(t)+.5-this.jdEpoch,r=Math.floor((e-Math.floor((e+366)/1461))/365)+1;r<=0&&r--,e=Math.floor(t)+.5-this.newDate(r,1,1).toJD();var n=Math.floor(e/30)+1,i=e-30*(n-1)+1;return this.newDate(r,n,i)}}),n.calendars.ethiopian=a},{\"../main\":346,\"object-assign\":247}],336:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}function o(t,e){return t-e*Math.floor(t/e)}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Hebrew\",jdEpoch:347995.5,daysPerMonth:[30,29,30,29,30,29,30,29,30,29,30,29,29],hasYearZero:!1,minMonth:1,firstMonth:7,minDay:1,regionalOptions:{\"\":{name:\"Hebrew\",epochs:[\"BAM\",\"AM\"],monthNames:[\"Nisan\",\"Iyar\",\"Sivan\",\"Tammuz\",\"Av\",\"Elul\",\"Tishrei\",\"Cheshvan\",\"Kislev\",\"Tevet\",\"Shevat\",\"Adar\",\"Adar II\"],monthNamesShort:[\"Nis\",\"Iya\",\"Siv\",\"Tam\",\"Av\",\"Elu\",\"Tis\",\"Che\",\"Kis\",\"Tev\",\"She\",\"Ada\",\"Ad2\"],dayNames:[\"Yom Rishon\",\"Yom Sheni\",\"Yom Shlishi\",\"Yom Revi'i\",\"Yom Chamishi\",\"Yom Shishi\",\"Yom Shabbat\"],dayNamesShort:[\"Ris\",\"She\",\"Shl\",\"Rev\",\"Cha\",\"Shi\",\"Sha\"],dayNamesMin:[\"Ri\",\"She\",\"Shl\",\"Re\",\"Ch\",\"Shi\",\"Sha\"],digits:null,dateFormat:\"dd/mm/yyyy\",firstDay:0,isRTL:!1}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return this._leapYear(e.year())},_leapYear:function(t){return o(7*(t=t<0?t+1:t)+1,19)<7},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear),this._leapYear(t.year?t.year():t)?13:12},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(t){return t=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear).year(),this.toJD(-1===t?1:t+1,7,1)-this.toJD(t,7,1)},daysInMonth:function(t,e){return t.year&&(e=t.month(),t=t.year()),this._validate(t,e,this.minDay,n.local.invalidMonth),12===e&&this.leapYear(t)||8===e&&5===o(this.daysInYear(t),10)?30:9===e&&3===o(this.daysInYear(t),10)?29:this.daysPerMonth[e-1]},weekDay:function(t,e,r){return 6!==this.dayOfWeek(t,e,r)},extraInfo:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return{yearType:(this.leapYear(i)?\"embolismic\":\"common\")+\" \"+[\"deficient\",\"regular\",\"complete\"][this.daysInYear(i)%10-3]}},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=i.year(),e=i.month(),r=i.day();var a=t<=0?t+1:t,o=this.jdEpoch+this._delay1(a)+this._delay2(a)+r+1;if(e<7){for(var s=7;s<=this.monthsInYear(t);s++)o+=this.daysInMonth(t,s);for(s=1;s=this.toJD(-1===e?1:e+1,7,1);)e++;for(var r=tthis.toJD(e,r,this.daysInMonth(e,r));)r++;var n=t-this.toJD(e,r,1)+1;return this.newDate(e,r,n)}}),n.calendars.hebrew=a},{\"../main\":346,\"object-assign\":247}],337:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Islamic\",jdEpoch:1948439.5,daysPerMonth:[30,29,30,29,30,29,30,29,30,29,30,29],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Islamic\",epochs:[\"BH\",\"AH\"],monthNames:[\"Muharram\",\"Safar\",\"Rabi' al-awwal\",\"Rabi' al-thani\",\"Jumada al-awwal\",\"Jumada al-thani\",\"Rajab\",\"Sha'aban\",\"Ramadan\",\"Shawwal\",\"Dhu al-Qi'dah\",\"Dhu al-Hijjah\"],monthNamesShort:[\"Muh\",\"Saf\",\"Rab1\",\"Rab2\",\"Jum1\",\"Jum2\",\"Raj\",\"Sha'\",\"Ram\",\"Shaw\",\"DhuQ\",\"DhuH\"],dayNames:[\"Yawm al-ahad\",\"Yawm al-ithnayn\",\"Yawm ath-thulaathaa'\",\"Yawm al-arbi'aa'\",\"Yawm al-kham\\u012bs\",\"Yawm al-jum'a\",\"Yawm as-sabt\"],dayNamesShort:[\"Aha\",\"Ith\",\"Thu\",\"Arb\",\"Kha\",\"Jum\",\"Sab\"],dayNamesMin:[\"Ah\",\"It\",\"Th\",\"Ar\",\"Kh\",\"Ju\",\"Sa\"],digits:null,dateFormat:\"yyyy/mm/dd\",firstDay:6,isRTL:!1}},leapYear:function(t){return(11*this._validate(t,this.minMonth,this.minDay,n.local.invalidYear).year()+14)%30<11},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(t){return this.leapYear(t)?355:354},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(12===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return 5!==this.dayOfWeek(t,e,r)},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return t=i.year(),e=i.month(),t=t<=0?t+1:t,(r=i.day())+Math.ceil(29.5*(e-1))+354*(t-1)+Math.floor((3+11*t)/30)+this.jdEpoch-1},fromJD:function(t){t=Math.floor(t)+.5;var e=Math.floor((30*(t-this.jdEpoch)+10646)/10631);e=e<=0?e-1:e;var r=Math.min(12,Math.ceil((t-29-this.toJD(e,1,1))/29.5)+1),n=t-this.toJD(e,r,1)+1;return this.newDate(e,r,n)}}),n.calendars.islamic=a},{\"../main\":346,\"object-assign\":247}],338:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Julian\",jdEpoch:1721423.5,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Julian\",epochs:[\"BC\",\"AD\"],monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],dayNamesShort:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],dayNamesMin:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],digits:null,dateFormat:\"mm/dd/yyyy\",firstDay:0,isRTL:!1}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return(t=e.year()<0?e.year()+1:e.year())%4==0},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(4-(n.dayOfWeek()||7),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(2===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return t=i.year(),e=i.month(),r=i.day(),t<0&&t++,e<=2&&(t--,e+=12),Math.floor(365.25*(t+4716))+Math.floor(30.6001*(e+1))+r-1524.5},fromJD:function(t){var e=Math.floor(t+.5)+1524,r=Math.floor((e-122.1)/365.25),n=Math.floor(365.25*r),i=Math.floor((e-n)/30.6001),a=i-Math.floor(i<14?1:13),o=r-Math.floor(a>2?4716:4715),s=e-n-Math.floor(30.6001*i);return o<=0&&o--,this.newDate(o,a,s)}}),n.calendars.julian=a},{\"../main\":346,\"object-assign\":247}],339:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}function o(t,e){return t-e*Math.floor(t/e)}function s(t,e){return o(t-1,e)+1}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Mayan\",jdEpoch:584282.5,hasYearZero:!0,minMonth:0,firstMonth:0,minDay:0,regionalOptions:{\"\":{name:\"Mayan\",epochs:[\"\",\"\"],monthNames:[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\"],monthNamesShort:[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\"],dayNames:[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\"],dayNamesShort:[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\"],dayNamesMin:[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\"],digits:null,dateFormat:\"YYYY.m.d\",firstDay:0,isRTL:!1,haabMonths:[\"Pop\",\"Uo\",\"Zip\",\"Zotz\",\"Tzec\",\"Xul\",\"Yaxkin\",\"Mol\",\"Chen\",\"Yax\",\"Zac\",\"Ceh\",\"Mac\",\"Kankin\",\"Muan\",\"Pax\",\"Kayab\",\"Cumku\",\"Uayeb\"],tzolkinMonths:[\"Imix\",\"Ik\",\"Akbal\",\"Kan\",\"Chicchan\",\"Cimi\",\"Manik\",\"Lamat\",\"Muluc\",\"Oc\",\"Chuen\",\"Eb\",\"Ben\",\"Ix\",\"Men\",\"Cib\",\"Caban\",\"Etznab\",\"Cauac\",\"Ahau\"]}},leapYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear),!1},formatYear:function(t){t=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear).year();var e=Math.floor(t/400);return t%=400,t+=t<0?400:0,e+\".\"+Math.floor(t/20)+\".\"+t%20},forYear:function(t){if((t=t.split(\".\")).length<3)throw\"Invalid Mayan year\";for(var e=0,r=0;r19||r>0&&n<0)throw\"Invalid Mayan year\";e=20*e+n}return e},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear),18},weekOfYear:function(t,e,r){return this._validate(t,e,r,n.local.invalidDate),0},daysInYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear),360},daysInMonth:function(t,e){return this._validate(t,e,this.minDay,n.local.invalidMonth),20},daysInWeek:function(){return 5},dayOfWeek:function(t,e,r){return this._validate(t,e,r,n.local.invalidDate).day()},weekDay:function(t,e,r){return this._validate(t,e,r,n.local.invalidDate),!0},extraInfo:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate).toJD(),a=this._toHaab(i),o=this._toTzolkin(i);return{haabMonthName:this.local.haabMonths[a[0]-1],haabMonth:a[0],haabDay:a[1],tzolkinDayName:this.local.tzolkinMonths[o[0]-1],tzolkinDay:o[0],tzolkinTrecena:o[1]}},_toHaab:function(t){var e=o((t-=this.jdEpoch)+8+340,365);return[Math.floor(e/20)+1,o(e,20)]},_toTzolkin:function(t){return[s((t-=this.jdEpoch)+20,20),s(t+4,13)]},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return i.day()+20*i.month()+360*i.year()+this.jdEpoch},fromJD:function(t){t=Math.floor(t)+.5-this.jdEpoch;var e=Math.floor(t/360);t%=360,t+=t<0?360:0;var r=Math.floor(t/20),n=t%20;return this.newDate(e,r,n)}}),n.calendars.mayan=a},{\"../main\":346,\"object-assign\":247}],340:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar;var o=n.instance(\"gregorian\");i(a.prototype,{name:\"Nanakshahi\",jdEpoch:2257673.5,daysPerMonth:[31,31,31,31,31,30,30,30,30,30,30,30],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Nanakshahi\",epochs:[\"BN\",\"AN\"],monthNames:[\"Chet\",\"Vaisakh\",\"Jeth\",\"Harh\",\"Sawan\",\"Bhadon\",\"Assu\",\"Katak\",\"Maghar\",\"Poh\",\"Magh\",\"Phagun\"],monthNamesShort:[\"Che\",\"Vai\",\"Jet\",\"Har\",\"Saw\",\"Bha\",\"Ass\",\"Kat\",\"Mgr\",\"Poh\",\"Mgh\",\"Pha\"],dayNames:[\"Somvaar\",\"Mangalvar\",\"Budhvaar\",\"Veervaar\",\"Shukarvaar\",\"Sanicharvaar\",\"Etvaar\"],dayNamesShort:[\"Som\",\"Mangal\",\"Budh\",\"Veer\",\"Shukar\",\"Sanichar\",\"Et\"],dayNamesMin:[\"So\",\"Ma\",\"Bu\",\"Ve\",\"Sh\",\"Sa\",\"Et\"],digits:null,dateFormat:\"dd-mm-yyyy\",firstDay:0,isRTL:!1}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear||n.regionalOptions[\"\"].invalidYear);return o.leapYear(e.year()+(e.year()<1?1:0)+1469)},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(1-(n.dayOfWeek()||7),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(12===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidMonth);(t=i.year())<0&&t++;for(var a=i.day(),s=1;s=this.toJD(e+1,1,1);)e++;for(var r=t-Math.floor(this.toJD(e,1,1)+.5)+1,n=1;r>this.daysInMonth(e,n);)r-=this.daysInMonth(e,n),n++;return this.newDate(e,n,r)}}),n.calendars.nanakshahi=a},{\"../main\":346,\"object-assign\":247}],341:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Nepali\",jdEpoch:1700709.5,daysPerMonth:[31,31,32,32,31,30,30,29,30,29,30,30],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,daysPerYear:365,regionalOptions:{\"\":{name:\"Nepali\",epochs:[\"BBS\",\"ABS\"],monthNames:[\"Baisakh\",\"Jestha\",\"Ashadh\",\"Shrawan\",\"Bhadra\",\"Ashwin\",\"Kartik\",\"Mangsir\",\"Paush\",\"Mangh\",\"Falgun\",\"Chaitra\"],monthNamesShort:[\"Bai\",\"Je\",\"As\",\"Shra\",\"Bha\",\"Ash\",\"Kar\",\"Mang\",\"Pau\",\"Ma\",\"Fal\",\"Chai\"],dayNames:[\"Aaitabaar\",\"Sombaar\",\"Manglbaar\",\"Budhabaar\",\"Bihibaar\",\"Shukrabaar\",\"Shanibaar\"],dayNamesShort:[\"Aaita\",\"Som\",\"Mangl\",\"Budha\",\"Bihi\",\"Shukra\",\"Shani\"],dayNamesMin:[\"Aai\",\"So\",\"Man\",\"Bu\",\"Bi\",\"Shu\",\"Sha\"],digits:null,dateFormat:\"dd/mm/yyyy\",firstDay:1,isRTL:!1}},leapYear:function(t){return this.daysInYear(t)!==this.daysPerYear},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(t){if(t=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear).year(),void 0===this.NEPALI_CALENDAR_DATA[t])return this.daysPerYear;for(var e=0,r=this.minMonth;r<=12;r++)e+=this.NEPALI_CALENDAR_DATA[t][r];return e},daysInMonth:function(t,e){return t.year&&(e=t.month(),t=t.year()),this._validate(t,e,this.minDay,n.local.invalidMonth),void 0===this.NEPALI_CALENDAR_DATA[t]?this.daysPerMonth[e-1]:this.NEPALI_CALENDAR_DATA[t][e]},weekDay:function(t,e,r){return 6!==this.dayOfWeek(t,e,r)},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=i.year(),e=i.month(),r=i.day();var a=n.instance(),o=0,s=e,l=t;this._createMissingCalendarData(t);var c=t-(s>9||9===s&&r>=this.NEPALI_CALENDAR_DATA[l][0]?56:57);for(9!==e&&(o=r,s--);9!==s;)s<=0&&(s=12,l--),o+=this.NEPALI_CALENDAR_DATA[l][s],s--;return 9===e?(o+=r-this.NEPALI_CALENDAR_DATA[l][0])<0&&(o+=a.daysInYear(c)):o+=this.NEPALI_CALENDAR_DATA[l][9]-this.NEPALI_CALENDAR_DATA[l][0],a.newDate(c,1,1).add(o,\"d\").toJD()},fromJD:function(t){var e=n.instance().fromJD(t),r=e.year(),i=e.dayOfYear(),a=r+56;this._createMissingCalendarData(a);for(var o=9,s=this.NEPALI_CALENDAR_DATA[a][0],l=this.NEPALI_CALENDAR_DATA[a][o]-s+1;i>l;)++o>12&&(o=1,a++),l+=this.NEPALI_CALENDAR_DATA[a][o];var c=this.NEPALI_CALENDAR_DATA[a][o]-(l-i);return this.newDate(a,o,c)},_createMissingCalendarData:function(t){var e=this.daysPerMonth.slice(0);e.unshift(17);for(var r=t-1;r0?474:473))%2820+474+38)%2816<682},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-(n.dayOfWeek()+1)%7,\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(12===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return 5!==this.dayOfWeek(t,e,r)},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=i.year(),e=i.month(),r=i.day();var a=t-(t>=0?474:473),s=474+o(a,2820);return r+(e<=7?31*(e-1):30*(e-1)+6)+Math.floor((682*s-110)/2816)+365*(s-1)+1029983*Math.floor(a/2820)+this.jdEpoch-1},fromJD:function(t){var e=(t=Math.floor(t)+.5)-this.toJD(475,1,1),r=Math.floor(e/1029983),n=o(e,1029983),i=2820;if(1029982!==n){var a=Math.floor(n/366),s=o(n,366);i=Math.floor((2134*a+2816*s+2815)/1028522)+a+1}var l=i+2820*r+474;l=l<=0?l-1:l;var c=t-this.toJD(l,1,1)+1,u=c<=186?Math.ceil(c/31):Math.ceil((c-6)/30),f=t-this.toJD(l,u,1)+1;return this.newDate(l,u,f)}}),n.calendars.persian=a,n.calendars.jalali=a},{\"../main\":346,\"object-assign\":247}],343:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\"),a=n.instance();function o(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}o.prototype=new n.baseCalendar,i(o.prototype,{name:\"Taiwan\",jdEpoch:2419402.5,yearsOffset:1911,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Taiwan\",epochs:[\"BROC\",\"ROC\"],monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],dayNamesShort:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],dayNamesMin:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],digits:null,dateFormat:\"yyyy/mm/dd\",firstDay:1,isRTL:!1}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);t=this._t2gYear(e.year());return a.leapYear(t)},weekOfYear:function(t,e,r){var i=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);t=this._t2gYear(i.year());return a.weekOfYear(t,i.month(),i.day())},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(2===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=this._t2gYear(i.year());return a.toJD(t,i.month(),i.day())},fromJD:function(t){var e=a.fromJD(t),r=this._g2tYear(e.year());return this.newDate(r,e.month(),e.day())},_t2gYear:function(t){return t+this.yearsOffset+(t>=-this.yearsOffset&&t<=-1?1:0)},_g2tYear:function(t){return t-this.yearsOffset-(t>=1&&t<=this.yearsOffset?1:0)}}),n.calendars.taiwan=o},{\"../main\":346,\"object-assign\":247}],344:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\"),a=n.instance();function o(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}o.prototype=new n.baseCalendar,i(o.prototype,{name:\"Thai\",jdEpoch:1523098.5,yearsOffset:543,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Thai\",epochs:[\"BBE\",\"BE\"],monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],dayNamesShort:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],dayNamesMin:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],digits:null,dateFormat:\"dd/mm/yyyy\",firstDay:0,isRTL:!1}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);t=this._t2gYear(e.year());return a.leapYear(t)},weekOfYear:function(t,e,r){var i=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);t=this._t2gYear(i.year());return a.weekOfYear(t,i.month(),i.day())},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(2===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=this._t2gYear(i.year());return a.toJD(t,i.month(),i.day())},fromJD:function(t){var e=a.fromJD(t),r=this._g2tYear(e.year());return this.newDate(r,e.month(),e.day())},_t2gYear:function(t){return t-this.yearsOffset-(t>=1&&t<=this.yearsOffset?1:0)},_g2tYear:function(t){return t+this.yearsOffset+(t>=-this.yearsOffset&&t<=-1?1:0)}}),n.calendars.thai=o},{\"../main\":346,\"object-assign\":247}],345:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"UmmAlQura\",hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Umm al-Qura\",epochs:[\"BH\",\"AH\"],monthNames:[\"Al-Muharram\",\"Safar\",\"Rabi' al-awwal\",\"Rabi' Al-Thani\",\"Jumada Al-Awwal\",\"Jumada Al-Thani\",\"Rajab\",\"Sha'aban\",\"Ramadan\",\"Shawwal\",\"Dhu al-Qi'dah\",\"Dhu al-Hijjah\"],monthNamesShort:[\"Muh\",\"Saf\",\"Rab1\",\"Rab2\",\"Jum1\",\"Jum2\",\"Raj\",\"Sha'\",\"Ram\",\"Shaw\",\"DhuQ\",\"DhuH\"],dayNames:[\"Yawm al-Ahad\",\"Yawm al-Ithnain\",\"Yawm al-Thal\\u0101th\\u0101\\u2019\",\"Yawm al-Arba\\u2018\\u0101\\u2019\",\"Yawm al-Kham\\u012bs\",\"Yawm al-Jum\\u2018a\",\"Yawm al-Sabt\"],dayNamesMin:[\"Ah\",\"Ith\",\"Th\",\"Ar\",\"Kh\",\"Ju\",\"Sa\"],digits:null,dateFormat:\"yyyy/mm/dd\",firstDay:6,isRTL:!0}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return 355===this.daysInYear(e.year())},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(t){for(var e=0,r=1;r<=12;r++)e+=this.daysInMonth(t,r);return e},daysInMonth:function(t,e){for(var r=this._validate(t,e,this.minDay,n.local.invalidMonth).toJD()-24e5+.5,i=0,a=0;ar)return o[i]-o[i-1];i++}return 30},weekDay:function(t,e,r){return 5!==this.dayOfWeek(t,e,r)},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate),a=12*(i.year()-1)+i.month()-15292;return i.day()+o[a-1]-1+24e5-.5},fromJD:function(t){for(var e=t-24e5+.5,r=0,n=0;ne);n++)r++;var i=r+15292,a=Math.floor((i-1)/12),s=a+1,l=i-12*a,c=e-o[r-1]+1;return this.newDate(s,l,c)},isValid:function(t,e,r){var i=n.baseCalendar.prototype.isValid.apply(this,arguments);return i&&(i=(t=null!=t.year?t.year:t)>=1276&&t<=1500),i},_validate:function(t,e,r,i){var a=n.baseCalendar.prototype._validate.apply(this,arguments);if(a.year<1276||a.year>1500)throw i.replace(/\\{0\\}/,this.local.name);return a}}),n.calendars.ummalqura=a;var o=[20,50,79,109,138,168,197,227,256,286,315,345,374,404,433,463,492,522,551,581,611,641,670,700,729,759,788,818,847,877,906,936,965,995,1024,1054,1083,1113,1142,1172,1201,1231,1260,1290,1320,1350,1379,1409,1438,1468,1497,1527,1556,1586,1615,1645,1674,1704,1733,1763,1792,1822,1851,1881,1910,1940,1969,1999,2028,2058,2087,2117,2146,2176,2205,2235,2264,2294,2323,2353,2383,2413,2442,2472,2501,2531,2560,2590,2619,2649,2678,2708,2737,2767,2796,2826,2855,2885,2914,2944,2973,3003,3032,3062,3091,3121,3150,3180,3209,3239,3268,3298,3327,3357,3386,3416,3446,3476,3505,3535,3564,3594,3623,3653,3682,3712,3741,3771,3800,3830,3859,3889,3918,3948,3977,4007,4036,4066,4095,4125,4155,4185,4214,4244,4273,4303,4332,4362,4391,4421,4450,4480,4509,4539,4568,4598,4627,4657,4686,4716,4745,4775,4804,4834,4863,4893,4922,4952,4981,5011,5040,5070,5099,5129,5158,5188,5218,5248,5277,5307,5336,5366,5395,5425,5454,5484,5513,5543,5572,5602,5631,5661,5690,5720,5749,5779,5808,5838,5867,5897,5926,5956,5985,6015,6044,6074,6103,6133,6162,6192,6221,6251,6281,6311,6340,6370,6399,6429,6458,6488,6517,6547,6576,6606,6635,6665,6694,6724,6753,6783,6812,6842,6871,6901,6930,6960,6989,7019,7048,7078,7107,7137,7166,7196,7225,7255,7284,7314,7344,7374,7403,7433,7462,7492,7521,7551,7580,7610,7639,7669,7698,7728,7757,7787,7816,7846,7875,7905,7934,7964,7993,8023,8053,8083,8112,8142,8171,8201,8230,8260,8289,8319,8348,8378,8407,8437,8466,8496,8525,8555,8584,8614,8643,8673,8702,8732,8761,8791,8821,8850,8880,8909,8938,8968,8997,9027,9056,9086,9115,9145,9175,9205,9234,9264,9293,9322,9352,9381,9410,9440,9470,9499,9529,9559,9589,9618,9648,9677,9706,9736,9765,9794,9824,9853,9883,9913,9943,9972,10002,10032,10061,10090,10120,10149,10178,10208,10237,10267,10297,10326,10356,10386,10415,10445,10474,10504,10533,10562,10592,10621,10651,10680,10710,10740,10770,10799,10829,10858,10888,10917,10947,10976,11005,11035,11064,11094,11124,11153,11183,11213,11242,11272,11301,11331,11360,11389,11419,11448,11478,11507,11537,11567,11596,11626,11655,11685,11715,11744,11774,11803,11832,11862,11891,11921,11950,11980,12010,12039,12069,12099,12128,12158,12187,12216,12246,12275,12304,12334,12364,12393,12423,12453,12483,12512,12542,12571,12600,12630,12659,12688,12718,12747,12777,12807,12837,12866,12896,12926,12955,12984,13014,13043,13072,13102,13131,13161,13191,13220,13250,13280,13310,13339,13368,13398,13427,13456,13486,13515,13545,13574,13604,13634,13664,13693,13723,13752,13782,13811,13840,13870,13899,13929,13958,13988,14018,14047,14077,14107,14136,14166,14195,14224,14254,14283,14313,14342,14372,14401,14431,14461,14490,14520,14550,14579,14609,14638,14667,14697,14726,14756,14785,14815,14844,14874,14904,14933,14963,14993,15021,15051,15081,15110,15140,15169,15199,15228,15258,15287,15317,15347,15377,15406,15436,15465,15494,15524,15553,15582,15612,15641,15671,15701,15731,15760,15790,15820,15849,15878,15908,15937,15966,15996,16025,16055,16085,16114,16144,16174,16204,16233,16262,16292,16321,16350,16380,16409,16439,16468,16498,16528,16558,16587,16617,16646,16676,16705,16734,16764,16793,16823,16852,16882,16912,16941,16971,17001,17030,17060,17089,17118,17148,17177,17207,17236,17266,17295,17325,17355,17384,17414,17444,17473,17502,17532,17561,17591,17620,17650,17679,17709,17738,17768,17798,17827,17857,17886,17916,17945,17975,18004,18034,18063,18093,18122,18152,18181,18211,18241,18270,18300,18330,18359,18388,18418,18447,18476,18506,18535,18565,18595,18625,18654,18684,18714,18743,18772,18802,18831,18860,18890,18919,18949,18979,19008,19038,19068,19098,19127,19156,19186,19215,19244,19274,19303,19333,19362,19392,19422,19452,19481,19511,19540,19570,19599,19628,19658,19687,19717,19746,19776,19806,19836,19865,19895,19924,19954,19983,20012,20042,20071,20101,20130,20160,20190,20219,20249,20279,20308,20338,20367,20396,20426,20455,20485,20514,20544,20573,20603,20633,20662,20692,20721,20751,20780,20810,20839,20869,20898,20928,20957,20987,21016,21046,21076,21105,21135,21164,21194,21223,21253,21282,21312,21341,21371,21400,21430,21459,21489,21519,21548,21578,21607,21637,21666,21696,21725,21754,21784,21813,21843,21873,21902,21932,21962,21991,22021,22050,22080,22109,22138,22168,22197,22227,22256,22286,22316,22346,22375,22405,22434,22464,22493,22522,22552,22581,22611,22640,22670,22700,22730,22759,22789,22818,22848,22877,22906,22936,22965,22994,23024,23054,23083,23113,23143,23173,23202,23232,23261,23290,23320,23349,23379,23408,23438,23467,23497,23527,23556,23586,23616,23645,23674,23704,23733,23763,23792,23822,23851,23881,23910,23940,23970,23999,24029,24058,24088,24117,24147,24176,24206,24235,24265,24294,24324,24353,24383,24413,24442,24472,24501,24531,24560,24590,24619,24648,24678,24707,24737,24767,24796,24826,24856,24885,24915,24944,24974,25003,25032,25062,25091,25121,25150,25180,25210,25240,25269,25299,25328,25358,25387,25416,25446,25475,25505,25534,25564,25594,25624,25653,25683,25712,25742,25771,25800,25830,25859,25888,25918,25948,25977,26007,26037,26067,26096,26126,26155,26184,26214,26243,26272,26302,26332,26361,26391,26421,26451,26480,26510,26539,26568,26598,26627,26656,26686,26715,26745,26775,26805,26834,26864,26893,26923,26952,26982,27011,27041,27070,27099,27129,27159,27188,27218,27248,27277,27307,27336,27366,27395,27425,27454,27484,27513,27542,27572,27602,27631,27661,27691,27720,27750,27779,27809,27838,27868,27897,27926,27956,27985,28015,28045,28074,28104,28134,28163,28193,28222,28252,28281,28310,28340,28369,28399,28428,28458,28488,28517,28547,28577,28607,28636,28665,28695,28724,28754,28783,28813,28843,28872,28901,28931,28960,28990,29019,29049,29078,29108,29137,29167,29196,29226,29255,29285,29315,29345,29375,29404,29434,29463,29492,29522,29551,29580,29610,29640,29669,29699,29729,29759,29788,29818,29847,29876,29906,29935,29964,29994,30023,30053,30082,30112,30141,30171,30200,30230,30259,30289,30318,30348,30378,30408,30437,30467,30496,30526,30555,30585,30614,30644,30673,30703,30732,30762,30791,30821,30850,30880,30909,30939,30968,30998,31027,31057,31086,31116,31145,31175,31204,31234,31263,31293,31322,31352,31381,31411,31441,31471,31500,31530,31559,31589,31618,31648,31676,31706,31736,31766,31795,31825,31854,31884,31913,31943,31972,32002,32031,32061,32090,32120,32150,32180,32209,32239,32268,32298,32327,32357,32386,32416,32445,32475,32504,32534,32563,32593,32622,32652,32681,32711,32740,32770,32799,32829,32858,32888,32917,32947,32976,33006,33035,33065,33094,33124,33153,33183,33213,33243,33272,33302,33331,33361,33390,33420,33450,33479,33509,33539,33568,33598,33627,33657,33686,33716,33745,33775,33804,33834,33863,33893,33922,33952,33981,34011,34040,34069,34099,34128,34158,34187,34217,34247,34277,34306,34336,34365,34395,34424,34454,34483,34512,34542,34571,34601,34631,34660,34690,34719,34749,34778,34808,34837,34867,34896,34926,34955,34985,35015,35044,35074,35103,35133,35162,35192,35222,35251,35280,35310,35340,35370,35399,35429,35458,35488,35517,35547,35576,35605,35635,35665,35694,35723,35753,35782,35811,35841,35871,35901,35930,35960,35989,36019,36048,36078,36107,36136,36166,36195,36225,36254,36284,36314,36343,36373,36403,36433,36462,36492,36521,36551,36580,36610,36639,36669,36698,36728,36757,36786,36816,36845,36875,36904,36934,36963,36993,37022,37052,37081,37111,37141,37170,37200,37229,37259,37288,37318,37347,37377,37406,37436,37465,37495,37524,37554,37584,37613,37643,37672,37701,37731,37760,37790,37819,37849,37878,37908,37938,37967,37997,38027,38056,38085,38115,38144,38174,38203,38233,38262,38292,38322,38351,38381,38410,38440,38469,38499,38528,38558,38587,38617,38646,38676,38705,38735,38764,38794,38823,38853,38882,38912,38941,38971,39001,39030,39059,39089,39118,39148,39178,39208,39237,39267,39297,39326,39355,39385,39414,39444,39473,39503,39532,39562,39592,39621,39650,39680,39709,39739,39768,39798,39827,39857,39886,39916,39946,39975,40005,40035,40064,40094,40123,40153,40182,40212,40241,40271,40300,40330,40359,40389,40418,40448,40477,40507,40536,40566,40595,40625,40655,40685,40714,40744,40773,40803,40832,40862,40892,40921,40951,40980,41009,41039,41068,41098,41127,41157,41186,41216,41245,41275,41304,41334,41364,41393,41422,41452,41481,41511,41540,41570,41599,41629,41658,41688,41718,41748,41777,41807,41836,41865,41894,41924,41953,41983,42012,42042,42072,42102,42131,42161,42190,42220,42249,42279,42308,42337,42367,42397,42426,42456,42485,42515,42545,42574,42604,42633,42662,42692,42721,42751,42780,42810,42839,42869,42899,42929,42958,42988,43017,43046,43076,43105,43135,43164,43194,43223,43253,43283,43312,43342,43371,43401,43430,43460,43489,43519,43548,43578,43607,43637,43666,43696,43726,43755,43785,43814,43844,43873,43903,43932,43962,43991,44021,44050,44080,44109,44139,44169,44198,44228,44258,44287,44317,44346,44375,44405,44434,44464,44493,44523,44553,44582,44612,44641,44671,44700,44730,44759,44788,44818,44847,44877,44906,44936,44966,44996,45025,45055,45084,45114,45143,45172,45202,45231,45261,45290,45320,45350,45380,45409,45439,45468,45498,45527,45556,45586,45615,45644,45674,45704,45733,45763,45793,45823,45852,45882,45911,45940,45970,45999,46028,46058,46088,46117,46147,46177,46206,46236,46265,46295,46324,46354,46383,46413,46442,46472,46501,46531,46560,46590,46620,46649,46679,46708,46738,46767,46797,46826,46856,46885,46915,46944,46974,47003,47033,47063,47092,47122,47151,47181,47210,47240,47269,47298,47328,47357,47387,47417,47446,47476,47506,47535,47565,47594,47624,47653,47682,47712,47741,47771,47800,47830,47860,47890,47919,47949,47978,48008,48037,48066,48096,48125,48155,48184,48214,48244,48273,48303,48333,48362,48392,48421,48450,48480,48509,48538,48568,48598,48627,48657,48687,48717,48746,48776,48805,48834,48864,48893,48922,48952,48982,49011,49041,49071,49100,49130,49160,49189,49218,49248,49277,49306,49336,49365,49395,49425,49455,49484,49514,49543,49573,49602,49632,49661,49690,49720,49749,49779,49809,49838,49868,49898,49927,49957,49986,50016,50045,50075,50104,50133,50163,50192,50222,50252,50281,50311,50340,50370,50400,50429,50459,50488,50518,50547,50576,50606,50635,50665,50694,50724,50754,50784,50813,50843,50872,50902,50931,50960,50990,51019,51049,51078,51108,51138,51167,51197,51227,51256,51286,51315,51345,51374,51403,51433,51462,51492,51522,51552,51582,51611,51641,51670,51699,51729,51758,51787,51816,51846,51876,51906,51936,51965,51995,52025,52054,52083,52113,52142,52171,52200,52230,52260,52290,52319,52349,52379,52408,52438,52467,52497,52526,52555,52585,52614,52644,52673,52703,52733,52762,52792,52822,52851,52881,52910,52939,52969,52998,53028,53057,53087,53116,53146,53176,53205,53235,53264,53294,53324,53353,53383,53412,53441,53471,53500,53530,53559,53589,53619,53648,53678,53708,53737,53767,53796,53825,53855,53884,53913,53943,53973,54003,54032,54062,54092,54121,54151,54180,54209,54239,54268,54297,54327,54357,54387,54416,54446,54476,54505,54535,54564,54593,54623,54652,54681,54711,54741,54770,54800,54830,54859,54889,54919,54948,54977,55007,55036,55066,55095,55125,55154,55184,55213,55243,55273,55302,55332,55361,55391,55420,55450,55479,55508,55538,55567,55597,55627,55657,55686,55716,55745,55775,55804,55834,55863,55892,55922,55951,55981,56011,56040,56070,56100,56129,56159,56188,56218,56247,56276,56306,56335,56365,56394,56424,56454,56483,56513,56543,56572,56601,56631,56660,56690,56719,56749,56778,56808,56837,56867,56897,56926,56956,56985,57015,57044,57074,57103,57133,57162,57192,57221,57251,57280,57310,57340,57369,57399,57429,57458,57487,57517,57546,57576,57605,57634,57664,57694,57723,57753,57783,57813,57842,57871,57901,57930,57959,57989,58018,58048,58077,58107,58137,58167,58196,58226,58255,58285,58314,58343,58373,58402,58432,58461,58491,58521,58551,58580,58610,58639,58669,58698,58727,58757,58786,58816,58845,58875,58905,58934,58964,58994,59023,59053,59082,59111,59141,59170,59200,59229,59259,59288,59318,59348,59377,59407,59436,59466,59495,59525,59554,59584,59613,59643,59672,59702,59731,59761,59791,59820,59850,59879,59909,59939,59968,59997,60027,60056,60086,60115,60145,60174,60204,60234,60264,60293,60323,60352,60381,60411,60440,60469,60499,60528,60558,60588,60618,60648,60677,60707,60736,60765,60795,60824,60853,60883,60912,60942,60972,61002,61031,61061,61090,61120,61149,61179,61208,61237,61267,61296,61326,61356,61385,61415,61445,61474,61504,61533,61563,61592,61621,61651,61680,61710,61739,61769,61799,61828,61858,61888,61917,61947,61976,62006,62035,62064,62094,62123,62153,62182,62212,62242,62271,62301,62331,62360,62390,62419,62448,62478,62507,62537,62566,62596,62625,62655,62685,62715,62744,62774,62803,62832,62862,62891,62921,62950,62980,63009,63039,63069,63099,63128,63157,63187,63216,63246,63275,63305,63334,63363,63393,63423,63453,63482,63512,63541,63571,63600,63630,63659,63689,63718,63747,63777,63807,63836,63866,63895,63925,63955,63984,64014,64043,64073,64102,64131,64161,64190,64220,64249,64279,64309,64339,64368,64398,64427,64457,64486,64515,64545,64574,64603,64633,64663,64692,64722,64752,64782,64811,64841,64870,64899,64929,64958,64987,65017,65047,65076,65106,65136,65166,65195,65225,65254,65283,65313,65342,65371,65401,65431,65460,65490,65520,65549,65579,65608,65638,65667,65697,65726,65755,65785,65815,65844,65874,65903,65933,65963,65992,66022,66051,66081,66110,66140,66169,66199,66228,66258,66287,66317,66346,66376,66405,66435,66465,66494,66524,66553,66583,66612,66641,66671,66700,66730,66760,66789,66819,66849,66878,66908,66937,66967,66996,67025,67055,67084,67114,67143,67173,67203,67233,67262,67292,67321,67351,67380,67409,67439,67468,67497,67527,67557,67587,67617,67646,67676,67705,67735,67764,67793,67823,67852,67882,67911,67941,67971,68e3,68030,68060,68089,68119,68148,68177,68207,68236,68266,68295,68325,68354,68384,68414,68443,68473,68502,68532,68561,68591,68620,68650,68679,68708,68738,68768,68797,68827,68857,68886,68916,68946,68975,69004,69034,69063,69092,69122,69152,69181,69211,69240,69270,69300,69330,69359,69388,69418,69447,69476,69506,69535,69565,69595,69624,69654,69684,69713,69743,69772,69802,69831,69861,69890,69919,69949,69978,70008,70038,70067,70097,70126,70156,70186,70215,70245,70274,70303,70333,70362,70392,70421,70451,70481,70510,70540,70570,70599,70629,70658,70687,70717,70746,70776,70805,70835,70864,70894,70924,70954,70983,71013,71042,71071,71101,71130,71159,71189,71218,71248,71278,71308,71337,71367,71397,71426,71455,71485,71514,71543,71573,71602,71632,71662,71691,71721,71751,71781,71810,71839,71869,71898,71927,71957,71986,72016,72046,72075,72105,72135,72164,72194,72223,72253,72282,72311,72341,72370,72400,72429,72459,72489,72518,72548,72577,72607,72637,72666,72695,72725,72754,72784,72813,72843,72872,72902,72931,72961,72991,73020,73050,73080,73109,73139,73168,73197,73227,73256,73286,73315,73345,73375,73404,73434,73464,73493,73523,73552,73581,73611,73640,73669,73699,73729,73758,73788,73818,73848,73877,73907,73936,73965,73995,74024,74053,74083,74113,74142,74172,74202,74231,74261,74291,74320,74349,74379,74408,74437,74467,74497,74526,74556,74586,74615,74645,74675,74704,74733,74763,74792,74822,74851,74881,74910,74940,74969,74999,75029,75058,75088,75117,75147,75176,75206,75235,75264,75294,75323,75353,75383,75412,75442,75472,75501,75531,75560,75590,75619,75648,75678,75707,75737,75766,75796,75826,75856,75885,75915,75944,75974,76003,76032,76062,76091,76121,76150,76180,76210,76239,76269,76299,76328,76358,76387,76416,76446,76475,76505,76534,76564,76593,76623,76653,76682,76712,76741,76771,76801,76830,76859,76889,76918,76948,76977,77007,77036,77066,77096,77125,77155,77185,77214,77243,77273,77302,77332,77361,77390,77420,77450,77479,77509,77539,77569,77598,77627,77657,77686,77715,77745,77774,77804,77833,77863,77893,77923,77952,77982,78011,78041,78070,78099,78129,78158,78188,78217,78247,78277,78307,78336,78366,78395,78425,78454,78483,78513,78542,78572,78601,78631,78661,78690,78720,78750,78779,78808,78838,78867,78897,78926,78956,78985,79015,79044,79074,79104,79133,79163,79192,79222,79251,79281,79310,79340,79369,79399,79428,79458,79487,79517,79546,79576,79606,79635,79665,79695,79724,79753,79783,79812,79841,79871,79900,79930,79960,79990]},{\"../main\":346,\"object-assign\":247}],346:[function(t,e,r){var n=t(\"object-assign\");function i(){this.regionalOptions=[],this.regionalOptions[\"\"]={invalidCalendar:\"Calendar {0} not found\",invalidDate:\"Invalid {0} date\",invalidMonth:\"Invalid {0} month\",invalidYear:\"Invalid {0} year\",differentCalendars:\"Cannot mix {0} and {1} dates\"},this.local=this.regionalOptions[\"\"],this.calendars={},this._localCals={}}function a(t,e,r,n){if(this._calendar=t,this._year=e,this._month=r,this._day=n,0===this._calendar._validateLevel&&!this._calendar.isValid(this._year,this._month,this._day))throw(c.local.invalidDate||c.regionalOptions[\"\"].invalidDate).replace(/\\{0\\}/,this._calendar.local.name)}function o(t,e){return\"000000\".substring(0,e-(t=\"\"+t).length)+t}function s(){this.shortYearCutoff=\"+10\"}function l(t){this.local=this.regionalOptions[t]||this.regionalOptions[\"\"]}n(i.prototype,{instance:function(t,e){t=(t||\"gregorian\").toLowerCase(),e=e||\"\";var r=this._localCals[t+\"-\"+e];if(!r&&this.calendars[t]&&(r=new this.calendars[t](e),this._localCals[t+\"-\"+e]=r),!r)throw(this.local.invalidCalendar||this.regionalOptions[\"\"].invalidCalendar).replace(/\\{0\\}/,t);return r},newDate:function(t,e,r,n,i){return(n=(null!=t&&t.year?t.calendar():\"string\"==typeof n?this.instance(n,i):n)||this.instance()).newDate(t,e,r)},substituteDigits:function(t){return function(e){return(e+\"\").replace(/[0-9]/g,(function(e){return t[e]}))}},substituteChineseDigits:function(t,e){return function(r){for(var n=\"\",i=0;r>0;){var a=r%10;n=(0===a?\"\":t[a]+e[i])+n,i++,r=Math.floor(r/10)}return 0===n.indexOf(t[1]+e[1])&&(n=n.substr(1)),n||t[0]}}}),n(a.prototype,{newDate:function(t,e,r){return this._calendar.newDate(null==t?this:t,e,r)},year:function(t){return 0===arguments.length?this._year:this.set(t,\"y\")},month:function(t){return 0===arguments.length?this._month:this.set(t,\"m\")},day:function(t){return 0===arguments.length?this._day:this.set(t,\"d\")},date:function(t,e,r){if(!this._calendar.isValid(t,e,r))throw(c.local.invalidDate||c.regionalOptions[\"\"].invalidDate).replace(/\\{0\\}/,this._calendar.local.name);return this._year=t,this._month=e,this._day=r,this},leapYear:function(){return this._calendar.leapYear(this)},epoch:function(){return this._calendar.epoch(this)},formatYear:function(){return this._calendar.formatYear(this)},monthOfYear:function(){return this._calendar.monthOfYear(this)},weekOfYear:function(){return this._calendar.weekOfYear(this)},daysInYear:function(){return this._calendar.daysInYear(this)},dayOfYear:function(){return this._calendar.dayOfYear(this)},daysInMonth:function(){return this._calendar.daysInMonth(this)},dayOfWeek:function(){return this._calendar.dayOfWeek(this)},weekDay:function(){return this._calendar.weekDay(this)},extraInfo:function(){return this._calendar.extraInfo(this)},add:function(t,e){return this._calendar.add(this,t,e)},set:function(t,e){return this._calendar.set(this,t,e)},compareTo:function(t){if(this._calendar.name!==t._calendar.name)throw(c.local.differentCalendars||c.regionalOptions[\"\"].differentCalendars).replace(/\\{0\\}/,this._calendar.local.name).replace(/\\{1\\}/,t._calendar.local.name);var e=this._year!==t._year?this._year-t._year:this._month!==t._month?this.monthOfYear()-t.monthOfYear():this._day-t._day;return 0===e?0:e<0?-1:1},calendar:function(){return this._calendar},toJD:function(){return this._calendar.toJD(this)},fromJD:function(t){return this._calendar.fromJD(t)},toJSDate:function(){return this._calendar.toJSDate(this)},fromJSDate:function(t){return this._calendar.fromJSDate(t)},toString:function(){return(this.year()<0?\"-\":\"\")+o(Math.abs(this.year()),4)+\"-\"+o(this.month(),2)+\"-\"+o(this.day(),2)}}),n(s.prototype,{_validateLevel:0,newDate:function(t,e,r){return null==t?this.today():(t.year&&(this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate),r=t.day(),e=t.month(),t=t.year()),new a(this,t,e,r))},today:function(){return this.fromJSDate(new Date)},epoch:function(t){return this._validate(t,this.minMonth,this.minDay,c.local.invalidYear||c.regionalOptions[\"\"].invalidYear).year()<0?this.local.epochs[0]:this.local.epochs[1]},formatYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,c.local.invalidYear||c.regionalOptions[\"\"].invalidYear);return(e.year()<0?\"-\":\"\")+o(Math.abs(e.year()),4)},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,c.local.invalidYear||c.regionalOptions[\"\"].invalidYear),12},monthOfYear:function(t,e){var r=this._validate(t,e,this.minDay,c.local.invalidMonth||c.regionalOptions[\"\"].invalidMonth);return(r.month()+this.monthsInYear(r)-this.firstMonth)%this.monthsInYear(r)+this.minMonth},fromMonthOfYear:function(t,e){var r=(e+this.firstMonth-2*this.minMonth)%this.monthsInYear(t)+this.minMonth;return this._validate(t,r,this.minDay,c.local.invalidMonth||c.regionalOptions[\"\"].invalidMonth),r},daysInYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,c.local.invalidYear||c.regionalOptions[\"\"].invalidYear);return this.leapYear(e)?366:365},dayOfYear:function(t,e,r){var n=this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate);return n.toJD()-this.newDate(n.year(),this.fromMonthOfYear(n.year(),this.minMonth),this.minDay).toJD()+1},daysInWeek:function(){return 7},dayOfWeek:function(t,e,r){var n=this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate);return(Math.floor(this.toJD(n))+2)%this.daysInWeek()},extraInfo:function(t,e,r){return this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate),{}},add:function(t,e,r){return this._validate(t,this.minMonth,this.minDay,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate),this._correctAdd(t,this._add(t,e,r),e,r)},_add:function(t,e,r){if(this._validateLevel++,\"d\"===r||\"w\"===r){var n=t.toJD()+e*(\"w\"===r?this.daysInWeek():1),i=t.calendar().fromJD(n);return this._validateLevel--,[i.year(),i.month(),i.day()]}try{var a=t.year()+(\"y\"===r?e:0),o=t.monthOfYear()+(\"m\"===r?e:0);i=t.day();\"y\"===r?(t.month()!==this.fromMonthOfYear(a,o)&&(o=this.newDate(a,t.month(),this.minDay).monthOfYear()),o=Math.min(o,this.monthsInYear(a)),i=Math.min(i,this.daysInMonth(a,this.fromMonthOfYear(a,o)))):\"m\"===r&&(!function(t){for(;oe-1+t.minMonth;)a++,o-=e,e=t.monthsInYear(a)}(this),i=Math.min(i,this.daysInMonth(a,this.fromMonthOfYear(a,o))));var s=[a,this.fromMonthOfYear(a,o),i];return this._validateLevel--,s}catch(t){throw this._validateLevel--,t}},_correctAdd:function(t,e,r,n){if(!(this.hasYearZero||\"y\"!==n&&\"m\"!==n||0!==e[0]&&t.year()>0==e[0]>0)){var i={y:[1,1,\"y\"],m:[1,this.monthsInYear(-1),\"m\"],w:[this.daysInWeek(),this.daysInYear(-1),\"d\"],d:[1,this.daysInYear(-1),\"d\"]}[n],a=r<0?-1:1;e=this._add(t,r*i[0]+a*i[1],i[2])}return t.date(e[0],e[1],e[2])},set:function(t,e,r){this._validate(t,this.minMonth,this.minDay,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate);var n=\"y\"===r?e:t.year(),i=\"m\"===r?e:t.month(),a=\"d\"===r?e:t.day();return\"y\"!==r&&\"m\"!==r||(a=Math.min(a,this.daysInMonth(n,i))),t.date(n,i,a)},isValid:function(t,e,r){this._validateLevel++;var n=this.hasYearZero||0!==t;if(n){var i=this.newDate(t,e,this.minDay);n=e>=this.minMonth&&e-this.minMonth=this.minDay&&r-this.minDay13.5?13:1),c=i-(l>2.5?4716:4715);return c<=0&&c--,this.newDate(c,l,s)},toJSDate:function(t,e,r){var n=this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate),i=new Date(n.year(),n.month()-1,n.day());return i.setHours(0),i.setMinutes(0),i.setSeconds(0),i.setMilliseconds(0),i.setHours(i.getHours()>12?i.getHours()+2:0),i},fromJSDate:function(t){return this.newDate(t.getFullYear(),t.getMonth()+1,t.getDate())}});var c=e.exports=new i;c.cdate=a,c.baseCalendar=s,c.calendars.gregorian=l},{\"object-assign\":247}],347:[function(t,e,r){var n=t(\"object-assign\"),i=t(\"./main\");n(i.regionalOptions[\"\"],{invalidArguments:\"Invalid arguments\",invalidFormat:\"Cannot format a date from another calendar\",missingNumberAt:\"Missing number at position {0}\",unknownNameAt:\"Unknown name at position {0}\",unexpectedLiteralAt:\"Unexpected literal at position {0}\",unexpectedText:\"Additional text found at end\"}),i.local=i.regionalOptions[\"\"],n(i.cdate.prototype,{formatDate:function(t,e){return\"string\"!=typeof t&&(e=t,t=\"\"),this._calendar.formatDate(t||\"\",this,e)}}),n(i.baseCalendar.prototype,{UNIX_EPOCH:i.instance().newDate(1970,1,1).toJD(),SECS_PER_DAY:86400,TICKS_EPOCH:i.instance().jdEpoch,TICKS_PER_DAY:864e9,ATOM:\"yyyy-mm-dd\",COOKIE:\"D, dd M yyyy\",FULL:\"DD, MM d, yyyy\",ISO_8601:\"yyyy-mm-dd\",JULIAN:\"J\",RFC_822:\"D, d M yy\",RFC_850:\"DD, dd-M-yy\",RFC_1036:\"D, d M yy\",RFC_1123:\"D, d M yyyy\",RFC_2822:\"D, d M yyyy\",RSS:\"D, d M yy\",TICKS:\"!\",TIMESTAMP:\"@\",W3C:\"yyyy-mm-dd\",formatDate:function(t,e,r){if(\"string\"!=typeof t&&(r=e,e=t,t=\"\"),!e)return\"\";if(e.calendar()!==this)throw i.local.invalidFormat||i.regionalOptions[\"\"].invalidFormat;t=t||this.local.dateFormat;for(var n,a,o,s,l=(r=r||{}).dayNamesShort||this.local.dayNamesShort,c=r.dayNames||this.local.dayNames,u=r.monthNumbers||this.local.monthNumbers,f=r.monthNamesShort||this.local.monthNamesShort,h=r.monthNames||this.local.monthNames,p=(r.calculateWeek||this.local.calculateWeek,function(e,r){for(var n=1;w+n1}),d=function(t,e,r,n){var i=\"\"+e;if(p(t,n))for(;i.length1},x=function(t,r){var n=y(t,r),a=[2,3,n?4:2,n?4:2,10,11,20][\"oyYJ@!\".indexOf(t)+1],o=new RegExp(\"^-?\\\\d{1,\"+a+\"}\"),s=e.substring(A).match(o);if(!s)throw(i.local.missingNumberAt||i.regionalOptions[\"\"].missingNumberAt).replace(/\\{0\\}/,A);return A+=s[0].length,parseInt(s[0],10)},b=this,_=function(){if(\"function\"==typeof l){y(\"m\");var t=l.call(b,e.substring(A));return A+=t.length,t}return x(\"m\")},w=function(t,r,n,a){for(var o=y(t,a)?n:r,s=0;s-1){p=1,d=g;for(var E=this.daysInMonth(h,p);d>E;E=this.daysInMonth(h,p))p++,d-=E}return f>-1?this.fromJD(f):this.newDate(h,p,d)},determineDate:function(t,e,r,n,i){r&&\"object\"!=typeof r&&(i=n,n=r,r=null),\"string\"!=typeof n&&(i=n,n=\"\");var a=this;return e=e?e.newDate():null,t=null==t?e:\"string\"==typeof t?function(t){try{return a.parseDate(n,t,i)}catch(t){}for(var e=((t=t.toLowerCase()).match(/^c/)&&r?r.newDate():null)||a.today(),o=/([+-]?[0-9]+)\\s*(d|w|m|y)?/g,s=o.exec(t);s;)e.add(parseInt(s[1],10),s[2]||\"d\"),s=o.exec(t);return e}(t):\"number\"==typeof t?isNaN(t)||t===1/0||t===-1/0?e:a.today().add(t,\"d\"):a.newDate(t)}})},{\"./main\":346,\"object-assign\":247}],348:[function(t,e,r){\"use strict\";e.exports=[{path:\"\",backoff:0},{path:\"M-2.4,-3V3L0.6,0Z\",backoff:.6},{path:\"M-3.7,-2.5V2.5L1.3,0Z\",backoff:1.3},{path:\"M-4.45,-3L-1.65,-0.2V0.2L-4.45,3L1.55,0Z\",backoff:1.55},{path:\"M-2.2,-2.2L-0.2,-0.2V0.2L-2.2,2.2L-1.4,3L1.6,0L-1.4,-3Z\",backoff:1.6},{path:\"M-4.4,-2.1L-0.6,-0.2V0.2L-4.4,2.1L-4,3L2,0L-4,-3Z\",backoff:2},{path:\"M2,0A2,2 0 1,1 0,-2A2,2 0 0,1 2,0Z\",backoff:0,noRotate:!0},{path:\"M2,2V-2H-2V2Z\",backoff:0,noRotate:!0}]},{}],349:[function(t,e,r){\"use strict\";var n=t(\"./arrow_paths\"),i=t(\"../../plots/font_attributes\"),a=t(\"../../plots/cartesian/constants\"),o=t(\"../../plot_api/plot_template\").templatedArray;t(\"../../constants/axis_placeable_objects\");e.exports=o(\"annotation\",{visible:{valType:\"boolean\",dflt:!0,editType:\"calc+arraydraw\"},text:{valType:\"string\",editType:\"calc+arraydraw\"},textangle:{valType:\"angle\",dflt:0,editType:\"calc+arraydraw\"},font:i({editType:\"calc+arraydraw\",colorEditType:\"arraydraw\"}),width:{valType:\"number\",min:1,dflt:null,editType:\"calc+arraydraw\"},height:{valType:\"number\",min:1,dflt:null,editType:\"calc+arraydraw\"},opacity:{valType:\"number\",min:0,max:1,dflt:1,editType:\"arraydraw\"},align:{valType:\"enumerated\",values:[\"left\",\"center\",\"right\"],dflt:\"center\",editType:\"arraydraw\"},valign:{valType:\"enumerated\",values:[\"top\",\"middle\",\"bottom\"],dflt:\"middle\",editType:\"arraydraw\"},bgcolor:{valType:\"color\",dflt:\"rgba(0,0,0,0)\",editType:\"arraydraw\"},bordercolor:{valType:\"color\",dflt:\"rgba(0,0,0,0)\",editType:\"arraydraw\"},borderpad:{valType:\"number\",min:0,dflt:1,editType:\"calc+arraydraw\"},borderwidth:{valType:\"number\",min:0,dflt:1,editType:\"calc+arraydraw\"},showarrow:{valType:\"boolean\",dflt:!0,editType:\"calc+arraydraw\"},arrowcolor:{valType:\"color\",editType:\"arraydraw\"},arrowhead:{valType:\"integer\",min:0,max:n.length,dflt:1,editType:\"arraydraw\"},startarrowhead:{valType:\"integer\",min:0,max:n.length,dflt:1,editType:\"arraydraw\"},arrowside:{valType:\"flaglist\",flags:[\"end\",\"start\"],extras:[\"none\"],dflt:\"end\",editType:\"arraydraw\"},arrowsize:{valType:\"number\",min:.3,dflt:1,editType:\"calc+arraydraw\"},startarrowsize:{valType:\"number\",min:.3,dflt:1,editType:\"calc+arraydraw\"},arrowwidth:{valType:\"number\",min:.1,editType:\"calc+arraydraw\"},standoff:{valType:\"number\",min:0,dflt:0,editType:\"calc+arraydraw\"},startstandoff:{valType:\"number\",min:0,dflt:0,editType:\"calc+arraydraw\"},ax:{valType:\"any\",editType:\"calc+arraydraw\"},ay:{valType:\"any\",editType:\"calc+arraydraw\"},axref:{valType:\"enumerated\",dflt:\"pixel\",values:[\"pixel\",a.idRegex.x.toString()],editType:\"calc\"},ayref:{valType:\"enumerated\",dflt:\"pixel\",values:[\"pixel\",a.idRegex.y.toString()],editType:\"calc\"},xref:{valType:\"enumerated\",values:[\"paper\",a.idRegex.x.toString()],editType:\"calc\"},x:{valType:\"any\",editType:\"calc+arraydraw\"},xanchor:{valType:\"enumerated\",values:[\"auto\",\"left\",\"center\",\"right\"],dflt:\"auto\",editType:\"calc+arraydraw\"},xshift:{valType:\"number\",dflt:0,editType:\"calc+arraydraw\"},yref:{valType:\"enumerated\",values:[\"paper\",a.idRegex.y.toString()],editType:\"calc\"},y:{valType:\"any\",editType:\"calc+arraydraw\"},yanchor:{valType:\"enumerated\",values:[\"auto\",\"top\",\"middle\",\"bottom\"],dflt:\"auto\",editType:\"calc+arraydraw\"},yshift:{valType:\"number\",dflt:0,editType:\"calc+arraydraw\"},clicktoshow:{valType:\"enumerated\",values:[!1,\"onoff\",\"onout\"],dflt:!1,editType:\"arraydraw\"},xclick:{valType:\"any\",editType:\"arraydraw\"},yclick:{valType:\"any\",editType:\"arraydraw\"},hovertext:{valType:\"string\",editType:\"arraydraw\"},hoverlabel:{bgcolor:{valType:\"color\",editType:\"arraydraw\"},bordercolor:{valType:\"color\",editType:\"arraydraw\"},font:i({editType:\"arraydraw\"}),editType:\"arraydraw\"},captureevents:{valType:\"boolean\",editType:\"arraydraw\"},editType:\"calc\",_deprecated:{ref:{valType:\"string\",editType:\"calc\"}}})},{\"../../constants/axis_placeable_objects\":472,\"../../plot_api/plot_template\":543,\"../../plots/cartesian/constants\":561,\"../../plots/font_attributes\":585,\"./arrow_paths\":348}],350:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"./draw\").draw;function o(t){var e=t._fullLayout;n.filterVisible(e.annotations).forEach((function(e){var r=i.getFromId(t,e.xref),n=i.getFromId(t,e.yref),a=i.getRefType(e.xref),o=i.getRefType(e.yref);e._extremes={},\"range\"===a&&s(e,r),\"range\"===o&&s(e,n)}))}function s(t,e){var r,n=e._id,a=n.charAt(0),o=t[a],s=t[\"a\"+a],l=t[a+\"ref\"],c=t[\"a\"+a+\"ref\"],u=t[\"_\"+a+\"padplus\"],f=t[\"_\"+a+\"padminus\"],h={x:1,y:-1}[a]*t[a+\"shift\"],p=3*t.arrowsize*t.arrowwidth||0,d=p+h,g=p-h,m=3*t.startarrowsize*t.arrowwidth||0,v=m+h,y=m-h;if(c===l){var x=i.findExtremes(e,[e.r2c(o)],{ppadplus:d,ppadminus:g}),b=i.findExtremes(e,[e.r2c(s)],{ppadplus:Math.max(u,v),ppadminus:Math.max(f,y)});r={min:[x.min[0],b.min[0]],max:[x.max[0],b.max[0]]}}else v=s?v+s:v,y=s?y-s:y,r=i.findExtremes(e,[e.r2c(o)],{ppadplus:Math.max(u,d,v),ppadminus:Math.max(f,g,y)});t._extremes[n]=r}e.exports=function(t){var e=t._fullLayout;if(n.filterVisible(e.annotations).length&&t._fullData.length)return n.syncOrAsync([a,o],t)}},{\"../../lib\":503,\"../../plots/cartesian/axes\":554,\"./draw\":355}],351:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../registry\"),a=t(\"../../plot_api/plot_template\").arrayEditor;function o(t,e){var r,n,i,a,o,l,c,u=t._fullLayout.annotations,f=[],h=[],p=[],d=(e||[]).length;for(r=0;r0||r.explicitOff.length>0},onClick:function(t,e){var r,s,l=o(t,e),c=l.on,u=l.off.concat(l.explicitOff),f={},h=t._fullLayout.annotations;if(!c.length&&!u.length)return;for(r=0;r2/3?\"right\":\"center\"),{center:0,middle:0,left:.5,bottom:-.5,right:-.5,top:.5}[e]}for(var W=!1,X=[\"x\",\"y\"],Z=0;Z1)&&(nt===rt?((pt=it.r2fraction(e[\"a\"+et]))<0||pt>1)&&(W=!0):W=!0),J=it._offset+it.r2p(e[et]),$=.5}else{var dt=\"domain\"===ht;\"x\"===et?(Q=e[et],J=dt?it._offset+it._length*Q:J=T.l+T.w*Q):(Q=1-e[et],J=dt?it._offset+it._length*Q:J=T.t+T.h*Q),$=e.showarrow?.5:Q}if(e.showarrow){ft.head=J;var gt=e[\"a\"+et];if(tt=ot*q(.5,e.xanchor)-st*q(.5,e.yanchor),nt===rt){var mt=l.getRefType(nt);\"domain\"===mt?(\"y\"===et&&(gt=1-gt),ft.tail=it._offset+it._length*gt):\"paper\"===mt?\"y\"===et?(gt=1-gt,ft.tail=T.t+T.h*gt):ft.tail=T.l+T.w*gt:ft.tail=it._offset+it.r2p(gt),K=tt}else ft.tail=J+gt,K=tt+gt;ft.text=ft.tail+tt;var vt=w[\"x\"===et?\"width\":\"height\"];if(\"paper\"===rt&&(ft.head=o.constrain(ft.head,1,vt-1)),\"pixel\"===nt){var yt=-Math.max(ft.tail-3,ft.text),xt=Math.min(ft.tail+3,ft.text)-vt;yt>0?(ft.tail+=yt,ft.text+=yt):xt>0&&(ft.tail-=xt,ft.text-=xt)}ft.tail+=ut,ft.head+=ut}else K=tt=lt*q($,ct),ft.text=J+tt;ft.text+=ut,tt+=ut,K+=ut,e[\"_\"+et+\"padplus\"]=lt/2+K,e[\"_\"+et+\"padminus\"]=lt/2-K,e[\"_\"+et+\"size\"]=lt,e[\"_\"+et+\"shift\"]=tt}if(W)R.remove();else{var bt=0,_t=0;if(\"left\"!==e.align&&(bt=(A-b)*(\"center\"===e.align?.5:1)),\"top\"!==e.valign&&(_t=(D-_)*(\"middle\"===e.valign?.5:1)),f)n.select(\"svg\").attr({x:N+bt-1,y:N+_t}).call(u.setClipUrl,U?L:null,t);else{var wt=N+_t-g.top,Tt=N+bt-g.left;G.call(h.positionText,Tt,wt).call(u.setClipUrl,U?L:null,t)}V.select(\"rect\").call(u.setRect,N,N,A,D),j.call(u.setRect,F/2,F/2,B-F,H-F),R.call(u.setTranslate,Math.round(C.x.text-B/2),Math.round(C.y.text-H/2)),O.attr({transform:\"rotate(\"+P+\",\"+C.x.text+\",\"+C.y.text+\")\"});var kt,At=function(r,n){I.selectAll(\".annotation-arrow-g\").remove();var l=C.x.head,f=C.y.head,h=C.x.tail+r,p=C.y.tail+n,g=C.x.text+r,b=C.y.text+n,_=o.rotationXYMatrix(P,g,b),w=o.apply2DTransform(_),A=o.apply2DTransform2(_),L=+j.attr(\"width\"),z=+j.attr(\"height\"),D=g-.5*L,F=D+L,B=b-.5*z,N=B+z,U=[[D,B,D,N],[D,N,F,N],[F,N,F,B],[F,B,D,B]].map(A);if(!U.reduce((function(t,e){return t^!!o.segmentsIntersect(l,f,l+1e6,f+1e6,e[0],e[1],e[2],e[3])}),!1)){U.forEach((function(t){var e=o.segmentsIntersect(h,p,l,f,t[0],t[1],t[2],t[3]);e&&(h=e.x,p=e.y)}));var V=e.arrowwidth,H=e.arrowcolor,q=e.arrowside,G=I.append(\"g\").style({opacity:c.opacity(H)}).classed(\"annotation-arrow-g\",!0),Y=G.append(\"path\").attr(\"d\",\"M\"+h+\",\"+p+\"L\"+l+\",\"+f).style(\"stroke-width\",V+\"px\").call(c.stroke,c.rgb(H));if(m(Y,q,e),k.annotationPosition&&Y.node().parentNode&&!a){var W=l,X=f;if(e.standoff){var Z=Math.sqrt(Math.pow(l-h,2)+Math.pow(f-p,2));W+=e.standoff*(h-l)/Z,X+=e.standoff*(p-f)/Z}var J,K,Q=G.append(\"path\").classed(\"annotation-arrow\",!0).classed(\"anndrag\",!0).classed(\"cursor-move\",!0).attr({d:\"M3,3H-3V-3H3ZM0,0L\"+(h-W)+\",\"+(p-X),transform:s(W,X)}).style(\"stroke-width\",V+6+\"px\").call(c.stroke,\"rgba(0,0,0,0)\").call(c.fill,\"rgba(0,0,0,0)\");d.init({element:Q.node(),gd:t,prepFn:function(){var t=u.getTranslate(R);J=t.x,K=t.y,v&&v.autorange&&M(v._name+\".autorange\",!0),x&&x.autorange&&M(x._name+\".autorange\",!0)},moveFn:function(t,r){var n=w(J,K),i=n[0]+t,a=n[1]+r;R.call(u.setTranslate,i,a),S(\"x\",y(v,t,\"x\",T,e)),S(\"y\",y(x,r,\"y\",T,e)),e.axref===e.xref&&S(\"ax\",y(v,t,\"ax\",T,e)),e.ayref===e.yref&&S(\"ay\",y(x,r,\"ay\",T,e)),G.attr(\"transform\",s(t,r)),O.attr({transform:\"rotate(\"+P+\",\"+i+\",\"+a+\")\"})},doneFn:function(){i.call(\"_guiRelayout\",t,E());var e=document.querySelector(\".js-notes-box-panel\");e&&e.redraw(e.selectedObj)}})}}};if(e.showarrow&&At(0,0),z)d.init({element:R.node(),gd:t,prepFn:function(){kt=O.attr(\"transform\")},moveFn:function(t,r){var n=\"pointer\";if(e.showarrow)e.axref===e.xref?S(\"ax\",y(v,t,\"ax\",T,e)):S(\"ax\",e.ax+t),e.ayref===e.yref?S(\"ay\",y(x,r,\"ay\",T.w,e)):S(\"ay\",e.ay+r),At(t,r);else{if(a)return;var i,o;if(v)i=y(v,t,\"x\",T,e);else{var l=e._xsize/T.w,c=e.x+(e._xshift-e.xshift)/T.w-l/2;i=d.align(c+t/T.w,l,0,1,e.xanchor)}if(x)o=y(x,r,\"y\",T,e);else{var u=e._ysize/T.h,f=e.y-(e._yshift+e.yshift)/T.h-u/2;o=d.align(f-r/T.h,u,0,1,e.yanchor)}S(\"x\",i),S(\"y\",o),v&&x||(n=d.getCursor(v?.5:i,x?.5:o,e.xanchor,e.yanchor))}O.attr({transform:s(t,r)+kt}),p(R,n)},clickFn:function(r,n){e.captureevents&&t.emit(\"plotly_clickannotation\",Y(n))},doneFn:function(){p(R),i.call(\"_guiRelayout\",t,E());var e=document.querySelector(\".js-notes-box-panel\");e&&e.redraw(e.selectedObj)}})}}}e.exports={draw:function(t){var e=t._fullLayout;e._infolayer.selectAll(\".annotation\").remove();for(var r=0;r=0,x=e.indexOf(\"end\")>=0,b=d.backoff*m+r.standoff,_=g.backoff*v+r.startstandoff;if(\"line\"===p.nodeName){o={x:+t.attr(\"x1\"),y:+t.attr(\"y1\")},u={x:+t.attr(\"x2\"),y:+t.attr(\"y2\")};var w=o.x-u.x,T=o.y-u.y;if(h=(f=Math.atan2(T,w))+Math.PI,b&&_&&b+_>Math.sqrt(w*w+T*T))return void z();if(b){if(b*b>w*w+T*T)return void z();var k=b*Math.cos(f),A=b*Math.sin(f);u.x+=k,u.y+=A,t.attr({x2:u.x,y2:u.y})}if(_){if(_*_>w*w+T*T)return void z();var M=_*Math.cos(f),S=_*Math.sin(f);o.x-=M,o.y-=S,t.attr({x1:o.x,y1:o.y})}}else if(\"path\"===p.nodeName){var E=p.getTotalLength(),L=\"\";if(E1){c=!0;break}}c?t.fullLayout._infolayer.select(\".annotation-\"+t.id+'[data-index=\"'+s+'\"]').remove():(l._pdata=i(t.glplot.cameraParams,[e.xaxis.r2l(l.x)*r[0],e.yaxis.r2l(l.y)*r[1],e.zaxis.r2l(l.z)*r[2]]),n(t.graphDiv,l,s,t.id,l._xa,l._ya))}}},{\"../../plots/gl3d/project\":607,\"../annotations/draw\":355}],362:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\");e.exports={moduleType:\"component\",name:\"annotations3d\",schema:{subplots:{scene:{annotations:t(\"./attributes\")}}},layoutAttributes:t(\"./attributes\"),handleDefaults:t(\"./defaults\"),includeBasePlot:function(t,e){var r=n.subplotsRegistry.gl3d;if(!r)return;for(var a=r.attrRegex,o=Object.keys(t),s=0;s=0))return t;if(3===o)n[o]>1&&(n[o]=1);else if(n[o]>=1)return t}var s=Math.round(255*n[0])+\", \"+Math.round(255*n[1])+\", \"+Math.round(255*n[2]);return a?\"rgba(\"+s+\", \"+n[3]+\")\":\"rgb(\"+s+\")\"}o.tinyRGB=function(t){var e=t.toRgb();return\"rgb(\"+Math.round(e.r)+\", \"+Math.round(e.g)+\", \"+Math.round(e.b)+\")\"},o.rgb=function(t){return o.tinyRGB(n(t))},o.opacity=function(t){return t?n(t).getAlpha():0},o.addOpacity=function(t,e){var r=n(t).toRgb();return\"rgba(\"+Math.round(r.r)+\", \"+Math.round(r.g)+\", \"+Math.round(r.b)+\", \"+e+\")\"},o.combine=function(t,e){var r=n(t).toRgb();if(1===r.a)return n(t).toRgbString();var i=n(e||c).toRgb(),a=1===i.a?i:{r:255*(1-i.a)+i.r*i.a,g:255*(1-i.a)+i.g*i.a,b:255*(1-i.a)+i.b*i.a},o={r:a.r*(1-r.a)+r.r*r.a,g:a.g*(1-r.a)+r.g*r.a,b:a.b*(1-r.a)+r.b*r.a};return n(o).toRgbString()},o.contrast=function(t,e,r){var i=n(t);return 1!==i.getAlpha()&&(i=n(o.combine(t,c))),(i.isDark()?e?i.lighten(e):c:r?i.darken(r):l).toString()},o.stroke=function(t,e){var r=n(e);t.style({stroke:o.tinyRGB(r),\"stroke-opacity\":r.getAlpha()})},o.fill=function(t,e){var r=n(e);t.style({fill:o.tinyRGB(r),\"fill-opacity\":r.getAlpha()})},o.clean=function(t){if(t&&\"object\"==typeof t){var e,r,n,i,s=Object.keys(t);for(e=0;e0?n>=l:n<=l));i++)n>u&&n0?n>=l:n<=l));i++)n>r[0]&&n1){var ct=Math.pow(10,Math.floor(Math.log(lt)/Math.LN10));ot*=ct*c.roundUp(lt/ct,[2,5,10]),(Math.abs(q.start)/q.size+1e-6)%1<2e-6&&(it.tick0=0)}it.dtick=ot}it.domain=o?[rt+I/R.h,rt+K-I/R.h]:[rt+P/R.w,rt+K-P/R.w],it.setScale(),t.attr(\"transform\",u(Math.round(R.l),Math.round(R.t)));var ut,ft=t.select(\".\"+A.cbtitleunshift).attr(\"transform\",u(-Math.round(R.l),-Math.round(R.t))),ht=it.ticklabelposition,pt=it.title.font.size,dt=t.select(\".\"+A.cbaxis),gt=0,mt=0;function vt(n,i){var a={propContainer:it,propName:e._propPrefix+\"title\",traceIndex:e._traceIndex,_meta:e._meta,placeholder:D._dfltTitle.colorbar,containerGroup:t.select(\".\"+A.cbtitle)},o=\"h\"===n.charAt(0)?n.substr(1):\"h\"+n;t.selectAll(\".\"+o+\",.\"+o+\"-math-group\").remove(),g.draw(r,n,f(a,i||{}))}return c.syncOrAsync([a.previousPromises,function(){var t,e;(o&&at||!o&&!at)&&(\"top\"===j&&(t=P+R.l+R.w*O,e=I+R.t+R.h*(1-rt-K)+3+.75*pt),\"bottom\"===j&&(t=P+R.l+R.w*O,e=I+R.t+R.h*(1-rt)-3-.25*pt),\"right\"===j&&(e=I+R.t+R.h*z+3+.75*pt,t=P+R.l+R.w*rt),vt(it._id+\"title\",{attributes:{x:t,y:e,\"text-anchor\":o?\"start\":\"middle\"}}))},function(){if(!o&&!at||o&&at){var a,l=t.select(\".\"+A.cbtitle),f=l.select(\"text\"),h=[-M/2,M/2],d=l.select(\".h\"+it._id+\"title-math-group\").node(),g=15.6;if(f.node()&&(g=parseInt(f.node().style.fontSize,10)*w),d?(a=p.bBox(d),mt=a.width,(gt=a.height)>g&&(h[1]-=(gt-g)/2)):f.node()&&!f.classed(A.jsPlaceholder)&&(a=p.bBox(f.node()),mt=a.width,gt=a.height),o){if(gt){if(gt+=5,\"top\"===j)it.domain[1]-=gt/R.h,h[1]*=-1;else{it.domain[0]+=gt/R.h;var v=m.lineCount(f);h[1]+=(1-v)*g}l.attr(\"transform\",u(h[0],h[1])),it.setScale()}}else mt&&(\"right\"===j&&(it.domain[0]+=(mt+pt/2)/R.w),l.attr(\"transform\",u(h[0],h[1])),it.setScale())}t.selectAll(\".\"+A.cbfills+\",.\"+A.cblines).attr(\"transform\",o?u(0,Math.round(R.h*(1-it.domain[1]))):u(Math.round(R.w*it.domain[0]),0)),dt.attr(\"transform\",o?u(0,Math.round(-R.t)):u(Math.round(-R.l),0));var y=t.select(\".\"+A.cbfills).selectAll(\"rect.\"+A.cbfill).attr(\"style\",\"\").data(Y);y.enter().append(\"rect\").classed(A.cbfill,!0).style(\"stroke\",\"none\"),y.exit().remove();var x=U.map(it.c2p).map(Math.round).sort((function(t,e){return t-e}));y.each((function(t,a){var s=[0===a?U[0]:(Y[a]+Y[a-1])/2,a===Y.length-1?U[1]:(Y[a]+Y[a+1])/2].map(it.c2p).map(Math.round);o&&(s[1]=c.constrain(s[1]+(s[1]>s[0])?1:-1,x[0],x[1]));var l=n.select(this).attr(o?\"x\":\"y\",Q).attr(o?\"y\":\"x\",n.min(s)).attr(o?\"width\":\"height\",Math.max(X,2)).attr(o?\"height\":\"width\",Math.max(n.max(s)-n.min(s),2));if(e._fillgradient)p.gradient(l,r,e._id,o?\"vertical\":\"horizontalreversed\",e._fillgradient,\"fill\");else{var u=H(t).replace(\"e-\",\"\");l.attr(\"fill\",i(u).toHexString())}}));var b=t.select(\".\"+A.cblines).selectAll(\"path.\"+A.cbline).data(B.color&&B.width?W:[]);b.enter().append(\"path\").classed(A.cbline,!0),b.exit().remove(),b.each((function(t){var e=Q,r=Math.round(it.c2p(t))+B.width/2%1;n.select(this).attr(\"d\",\"M\"+(o?e+\",\"+r:r+\",\"+e)+(o?\"h\":\"v\")+X).call(p.lineGroupStyle,B.width,V(t),B.dash)})),dt.selectAll(\"g.\"+it._id+\"tick,path\").remove();var _=Q+X+(M||0)/2-(\"outside\"===e.ticks?1:0),T=s.calcTicks(it),k=s.getTickSigns(it)[2];return s.drawTicks(r,it,{vals:\"inside\"===it.ticks?s.clipEnds(it,T):T,layer:dt,path:s.makeTickPath(it,_,k),transFn:s.makeTransTickFn(it)}),s.drawLabels(r,it,{vals:T,layer:dt,transFn:s.makeTransTickLabelFn(it),labelFns:s.makeLabelFns(it,_)})},function(){if(o&&!at||!o&&at){var t,i,a=it.position||0,s=it._offset+it._length/2;if(\"right\"===j)i=s,t=R.l+R.w*a+10+pt*(it.showticklabels?1:.5);else if(t=s,\"bottom\"===j&&(i=R.t+R.h*a+10+(-1===ht.indexOf(\"inside\")?it.tickfont.size:0)+(\"intside\"!==it.ticks&&e.ticklen||0)),\"top\"===j){var l=N.text.split(\"
\").length;i=R.t+R.h*a+10-X-w*pt*l}vt((o?\"h\":\"v\")+it._id+\"title\",{avoid:{selection:n.select(r).selectAll(\"g.\"+it._id+\"tick\"),side:j,offsetTop:o?0:R.t,offsetLeft:o?R.l:0,maxShift:o?D.width:D.height},attributes:{x:t,y:i,\"text-anchor\":\"middle\"},transform:{rotate:o?-90:0,offset:0}})}},a.previousPromises,function(){var n,s=X+M/2;-1===ht.indexOf(\"inside\")&&(n=p.bBox(dt.node()),s+=o?n.width:n.height),ut=ft.select(\"text\");var c=0,f=o&&\"top\"===j,g=!o&&\"right\"===j,m=0;if(ut.node()&&!ut.classed(A.jsPlaceholder)){var y,x=ft.select(\".h\"+it._id+\"title-math-group\").node();x&&(o&&at||!o&&!at)?(c=(n=p.bBox(x)).width,y=n.height):(c=(n=p.bBox(ft.node())).right-R.l-(o?Q:nt),y=n.bottom-R.t-(o?nt:Q),o||\"top\"!==j||(s+=n.height,m=n.height)),g&&(ut.attr(\"transform\",u(c/2+pt/2,0)),c*=2),s=Math.max(s,o?c:y)}var b=2*(o?P:I)+s+S+M/2,w=0;!o&&N.text&&\"bottom\"===C&&z<=0&&(b+=w=b/2,m+=w),D._hColorbarMoveTitle=w,D._hColorbarMoveCBTitle=m;var F=S+M;t.select(\".\"+A.cbbg).attr(\"x\",(o?Q:nt)-F/2-(o?P:0)).attr(\"y\",(o?nt:Q)-(o?J:I+m-w)).attr(o?\"width\":\"height\",Math.max(b-w,2)).attr(o?\"height\":\"width\",Math.max(J+F,2)).call(d.fill,E).call(d.stroke,e.bordercolor).style(\"stroke-width\",S);var B=g?Math.max(c-10,0):0;if(t.selectAll(\".\"+A.cboutline).attr(\"x\",(o?Q:nt+P)+B).attr(\"y\",(o?nt+I-J:Q)+(f?gt:0)).attr(o?\"width\":\"height\",Math.max(X,2)).attr(o?\"height\":\"width\",Math.max(J-(o?2*I+gt:2*P+B),2)).call(d.stroke,e.outlinecolor).style({fill:\"none\",\"stroke-width\":M}),t.attr(\"transform\",u(R.l-(o?$*b:0),R.t-(o?0:(1-tt)*b-m))),!o&&(S||i(E).getAlpha()&&!i.equals(D.paper_bgcolor,E))){var U=dt.selectAll(\"text\"),V=U[0].length,H=t.select(\".\"+A.cbbg).node(),q=p.bBox(H),G=p.getTranslate(t);U.each((function(t,e){var r=V-1;if(0===e||e===r){var n,i=p.bBox(this),a=p.getTranslate(this);if(e===r){var o=i.right+a.x;(n=q.right+G.x+nt-S-2+O-o)>0&&(n=0)}else if(0===e){var s=i.left+a.x;(n=q.left+G.x+nt+S+2-s)<0&&(n=0)}n&&(V<3?this.setAttribute(\"transform\",\"translate(\"+n+\",0) \"+this.getAttribute(\"transform\")):this.setAttribute(\"visibility\",\"hidden\"))}}))}var Y={},W=T[L],Z=k[L],K=T[C],et=k[C],rt=b-X;o?(\"pixels\"===h?(Y.y=z,Y.t=J*K,Y.b=J*et):(Y.t=Y.b=0,Y.yt=z+l*K,Y.yb=z-l*et),\"pixels\"===_?(Y.x=O,Y.l=b*W,Y.r=b*Z):(Y.l=rt*W,Y.r=rt*Z,Y.xl=O-v*W,Y.xr=O+v*Z)):(\"pixels\"===h?(Y.x=O,Y.l=J*W,Y.r=J*Z):(Y.l=Y.r=0,Y.xl=O+l*W,Y.xr=O-l*Z),\"pixels\"===_?(Y.y=1-z,Y.t=b*K,Y.b=b*et):(Y.t=rt*K,Y.b=rt*et,Y.yt=z-v*K,Y.yb=z+v*et)),a.autoMargin(r,e._id,Y)}],r)}(r,e,t);v&&v.then&&(t._promises||[]).push(v),t._context.edits.colorbarPosition&&function(t,e,r){var n,i,a,s=\"v\"===e.orientation,c=r._fullLayout._size;l.init({element:t.node(),gd:r,prepFn:function(){n=t.attr(\"transform\"),h(t)},moveFn:function(r,o){t.attr(\"transform\",n+u(r,o)),i=l.align((s?e._uFrac:e._vFrac)+r/c.w,s?e._thickFrac:e._lenFrac,0,1,e.xanchor),a=l.align((s?e._vFrac:1-e._uFrac)-o/c.h,s?e._lenFrac:e._thickFrac,0,1,e.yanchor);var f=l.getCursor(i,a,e.xanchor,e.yanchor);h(t,f)},doneFn:function(){if(h(t),void 0!==i&&void 0!==a){var n={};n[e._propPrefix+\"x\"]=i,n[e._propPrefix+\"y\"]=a,void 0!==e._traceIndex?o.call(\"_guiRestyle\",r,n,e._traceIndex):o.call(\"_guiRelayout\",r,n)}}})}(r,e,t)})),e.exit().each((function(e){a.autoMargin(t,e._id)})).remove(),e.order()}}},{\"../../constants/alignment\":471,\"../../lib\":503,\"../../lib/extend\":493,\"../../lib/setcursor\":524,\"../../lib/svg_text_utils\":529,\"../../plots/cartesian/axes\":554,\"../../plots/cartesian/axis_defaults\":556,\"../../plots/cartesian/layout_attributes\":569,\"../../plots/cartesian/position_defaults\":572,\"../../plots/plots\":619,\"../../registry\":638,\"../color\":366,\"../colorscale/helpers\":377,\"../dragelement\":385,\"../drawing\":388,\"../titles\":464,\"./constants\":368,\"@plotly/d3\":58,tinycolor2:312}],371:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t){return n.isPlainObject(t.colorbar)}},{\"../../lib\":503}],372:[function(t,e,r){\"use strict\";e.exports={moduleType:\"component\",name:\"colorbar\",attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),draw:t(\"./draw\").draw,hasColorbar:t(\"./has_colorbar\")}},{\"./attributes\":367,\"./defaults\":369,\"./draw\":370,\"./has_colorbar\":371}],373:[function(t,e,r){\"use strict\";var n=t(\"../colorbar/attributes\"),i=t(\"../../lib/regex\").counter,a=t(\"../../lib/sort_object_keys\"),o=t(\"./scales.js\").scales;a(o);function s(t){return\"`\"+t+\"`\"}e.exports=function(t,e){t=t||\"\";var r,a=(e=e||{}).cLetter||\"c\",l=(\"onlyIfNumerical\"in e?e.onlyIfNumerical:Boolean(t),\"noScale\"in e?e.noScale:\"marker.line\"===t),c=\"showScaleDflt\"in e?e.showScaleDflt:\"z\"===a,u=\"string\"==typeof e.colorscaleDflt?o[e.colorscaleDflt]:null,f=e.editTypeOverride||\"\",h=t?t+\".\":\"\";\"colorAttr\"in e?(r=e.colorAttr,e.colorAttr):s(h+(r={z:\"z\",c:\"color\"}[a]));var p=a+\"auto\",d=a+\"min\",g=a+\"max\",m=a+\"mid\",v=(s(h+p),s(h+d),s(h+g),{});v[d]=v[g]=void 0;var y={};y[p]=!1;var x={};return\"color\"===r&&(x.color={valType:\"color\",arrayOk:!0,editType:f||\"style\"},e.anim&&(x.color.anim=!0)),x[p]={valType:\"boolean\",dflt:!0,editType:\"calc\",impliedEdits:v},x[d]={valType:\"number\",dflt:null,editType:f||\"plot\",impliedEdits:y},x[g]={valType:\"number\",dflt:null,editType:f||\"plot\",impliedEdits:y},x[m]={valType:\"number\",dflt:null,editType:\"calc\",impliedEdits:v},x.colorscale={valType:\"colorscale\",editType:\"calc\",dflt:u,impliedEdits:{autocolorscale:!1}},x.autocolorscale={valType:\"boolean\",dflt:!1!==e.autoColorDflt,editType:\"calc\",impliedEdits:{colorscale:void 0}},x.reversescale={valType:\"boolean\",dflt:!1,editType:\"plot\"},l||(x.showscale={valType:\"boolean\",dflt:c,editType:\"calc\"},x.colorbar=n),e.noColorAxis||(x.coloraxis={valType:\"subplotid\",regex:i(\"coloraxis\"),dflt:null,editType:\"calc\"}),x}},{\"../../lib/regex\":520,\"../../lib/sort_object_keys\":526,\"../colorbar/attributes\":367,\"./scales.js\":381}],374:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../lib\"),a=t(\"./helpers\").extractOpts;e.exports=function(t,e,r){var o,s=t._fullLayout,l=r.vals,c=r.containerStr,u=c?i.nestedProperty(e,c).get():e,f=a(u),h=!1!==f.auto,p=f.min,d=f.max,g=f.mid,m=function(){return i.aggNums(Math.min,null,l)},v=function(){return i.aggNums(Math.max,null,l)};(void 0===p?p=m():h&&(p=u._colorAx&&n(p)?Math.min(p,m()):m()),void 0===d?d=v():h&&(d=u._colorAx&&n(d)?Math.max(d,v()):v()),h&&void 0!==g&&(d-g>g-p?p=g-(d-g):d-g=0?s.colorscale.sequential:s.colorscale.sequentialminus,f._sync(\"colorscale\",o))}},{\"../../lib\":503,\"./helpers\":377,\"fast-isnumeric\":190}],375:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./helpers\").hasColorscale,a=t(\"./helpers\").extractOpts;e.exports=function(t,e){function r(t,e){var r=t[\"_\"+e];void 0!==r&&(t[e]=r)}function o(t,i){var o=i.container?n.nestedProperty(t,i.container).get():t;if(o)if(o.coloraxis)o._colorAx=e[o.coloraxis];else{var s=a(o),l=s.auto;(l||void 0===s.min)&&r(o,i.min),(l||void 0===s.max)&&r(o,i.max),s.autocolorscale&&r(o,\"colorscale\")}}for(var s=0;s=0;n--,i++){var a=t[n];r[i]=[1-a[0],a[1]]}return r}function d(t,e){e=e||{};for(var r=t.domain,o=t.range,l=o.length,c=new Array(l),u=0;u4/3-s?o:s}},{}],383:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=[[\"sw-resize\",\"s-resize\",\"se-resize\"],[\"w-resize\",\"move\",\"e-resize\"],[\"nw-resize\",\"n-resize\",\"ne-resize\"]];e.exports=function(t,e,r,a){return t=\"left\"===r?0:\"center\"===r?1:\"right\"===r?2:n.constrain(Math.floor(3*t),0,2),e=\"bottom\"===a?0:\"middle\"===a?1:\"top\"===a?2:n.constrain(Math.floor(3*e),0,2),i[e][t]}},{\"../../lib\":503}],384:[function(t,e,r){\"use strict\";r.selectMode=function(t){return\"lasso\"===t||\"select\"===t},r.drawMode=function(t){return\"drawclosedpath\"===t||\"drawopenpath\"===t||\"drawline\"===t||\"drawrect\"===t||\"drawcircle\"===t},r.openMode=function(t){return\"drawline\"===t||\"drawopenpath\"===t},r.rectMode=function(t){return\"select\"===t||\"drawline\"===t||\"drawrect\"===t||\"drawcircle\"===t},r.freeMode=function(t){return\"lasso\"===t||\"drawclosedpath\"===t||\"drawopenpath\"===t},r.selectingOrDrawing=function(t){return r.freeMode(t)||r.rectMode(t)}},{}],385:[function(t,e,r){\"use strict\";var n=t(\"mouse-event-offset\"),i=t(\"has-hover\"),a=t(\"has-passive-events\"),o=t(\"../../lib\").removeElement,s=t(\"../../plots/cartesian/constants\"),l=e.exports={};l.align=t(\"./align\"),l.getCursor=t(\"./cursor\");var c=t(\"./unhover\");function u(){var t=document.createElement(\"div\");t.className=\"dragcover\";var e=t.style;return e.position=\"fixed\",e.left=0,e.right=0,e.top=0,e.bottom=0,e.zIndex=999999999,e.background=\"none\",document.body.appendChild(t),t}function f(t){return n(t.changedTouches?t.changedTouches[0]:t,document.body)}l.unhover=c.wrapped,l.unhoverRaw=c.raw,l.init=function(t){var e,r,n,c,h,p,d,g,m=t.gd,v=1,y=m._context.doubleClickDelay,x=t.element;m._mouseDownTime||(m._mouseDownTime=0),x.style.pointerEvents=\"all\",x.onmousedown=_,a?(x._ontouchstart&&x.removeEventListener(\"touchstart\",x._ontouchstart),x._ontouchstart=_,x.addEventListener(\"touchstart\",_,{passive:!1})):x.ontouchstart=_;var b=t.clampFn||function(t,e,r){return Math.abs(t)y&&(v=Math.max(v-1,1)),m._dragged)t.doneFn&&t.doneFn();else if(t.clickFn&&t.clickFn(v,p),!g){var r;try{r=new MouseEvent(\"click\",e)}catch(t){var n=f(e);(r=document.createEvent(\"MouseEvents\")).initMouseEvent(\"click\",e.bubbles,e.cancelable,e.view,e.detail,e.screenX,e.screenY,n[0],n[1],e.ctrlKey,e.altKey,e.shiftKey,e.metaKey,e.button,e.relatedTarget)}d.dispatchEvent(r)}m._dragging=!1,m._dragged=!1}else m._dragged=!1}},l.coverSlip=u},{\"../../lib\":503,\"../../plots/cartesian/constants\":561,\"./align\":382,\"./cursor\":383,\"./unhover\":386,\"has-hover\":228,\"has-passive-events\":229,\"mouse-event-offset\":242}],386:[function(t,e,r){\"use strict\";var n=t(\"../../lib/events\"),i=t(\"../../lib/throttle\"),a=t(\"../../lib/dom\").getGraphDiv,o=t(\"../fx/constants\"),s=e.exports={};s.wrapped=function(t,e,r){(t=a(t))._fullLayout&&i.clear(t._fullLayout._uid+o.HOVERID),s.raw(t,e,r)},s.raw=function(t,e){var r=t._fullLayout,i=t._hoverdata;e||(e={}),e.target&&!t._dragged&&!1===n.triggerHandler(t,\"plotly_beforehover\",e)||(r._hoverlayer.selectAll(\"g\").remove(),r._hoverlayer.selectAll(\"line\").remove(),r._hoverlayer.selectAll(\"circle\").remove(),t._hoverdata=void 0,e.target&&i&&t.emit(\"plotly_unhover\",{event:e,points:i}))}},{\"../../lib/dom\":491,\"../../lib/events\":492,\"../../lib/throttle\":530,\"../fx/constants\":400}],387:[function(t,e,r){\"use strict\";r.dash={valType:\"string\",values:[\"solid\",\"dot\",\"dash\",\"longdash\",\"dashdot\",\"longdashdot\"],dflt:\"solid\",editType:\"style\"},r.pattern={shape:{valType:\"enumerated\",values:[\"\",\"/\",\"\\\\\",\"x\",\"-\",\"|\",\"+\",\".\"],dflt:\"\",arrayOk:!0,editType:\"style\"},fillmode:{valType:\"enumerated\",values:[\"replace\",\"overlay\"],dflt:\"replace\",editType:\"style\"},bgcolor:{valType:\"color\",arrayOk:!0,editType:\"style\"},fgcolor:{valType:\"color\",arrayOk:!0,editType:\"style\"},fgopacity:{valType:\"number\",editType:\"style\",min:0,max:1},size:{valType:\"number\",min:0,dflt:8,arrayOk:!0,editType:\"style\"},solidity:{valType:\"number\",min:0,max:1,dflt:.3,arrayOk:!0,editType:\"style\"},editType:\"style\"}},{}],388:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=i.numberFormat,o=t(\"fast-isnumeric\"),s=t(\"tinycolor2\"),l=t(\"../../registry\"),c=t(\"../color\"),u=t(\"../colorscale\"),f=i.strTranslate,h=t(\"../../lib/svg_text_utils\"),p=t(\"../../constants/xmlns_namespaces\"),d=t(\"../../constants/alignment\").LINE_SPACING,g=t(\"../../constants/interactions\").DESELECTDIM,m=t(\"../../traces/scatter/subtypes\"),v=t(\"../../traces/scatter/make_bubble_size_func\"),y=t(\"../../components/fx/helpers\").appendArrayPointValue,x=e.exports={};x.font=function(t,e,r,n){i.isPlainObject(e)&&(n=e.color,r=e.size,e=e.family),e&&t.style(\"font-family\",e),r+1&&t.style(\"font-size\",r+\"px\"),n&&t.call(c.fill,n)},x.setPosition=function(t,e,r){t.attr(\"x\",e).attr(\"y\",r)},x.setSize=function(t,e,r){t.attr(\"width\",e).attr(\"height\",r)},x.setRect=function(t,e,r,n,i){t.call(x.setPosition,e,r).call(x.setSize,n,i)},x.translatePoint=function(t,e,r,n){var i=r.c2p(t.x),a=n.c2p(t.y);return!!(o(i)&&o(a)&&e.node())&&(\"text\"===e.node().nodeName?e.attr(\"x\",i).attr(\"y\",a):e.attr(\"transform\",f(i,a)),!0)},x.translatePoints=function(t,e,r){t.each((function(t){var i=n.select(this);x.translatePoint(t,i,e,r)}))},x.hideOutsideRangePoint=function(t,e,r,n,i,a){e.attr(\"display\",r.isPtWithinRange(t,i)&&n.isPtWithinRange(t,a)?null:\"none\")},x.hideOutsideRangePoints=function(t,e){if(e._hasClipOnAxisFalse){var r=e.xaxis,i=e.yaxis;t.each((function(e){var a=e[0].trace,o=a.xcalendar,s=a.ycalendar,c=l.traceIs(a,\"bar-like\")?\".bartext\":\".point,.textpoint\";t.selectAll(c).each((function(t){x.hideOutsideRangePoint(t,n.select(this),r,i,o,s)}))}))}},x.crispRound=function(t,e,r){return e&&o(e)?t._context.staticPlot?e:e<1?1:Math.round(e):r||0},x.singleLineStyle=function(t,e,r,n,i){e.style(\"fill\",\"none\");var a=(((t||[])[0]||{}).trace||{}).line||{},o=r||a.width||0,s=i||a.dash||\"\";c.stroke(e,n||a.color),x.dashLine(e,s,o)},x.lineGroupStyle=function(t,e,r,i){t.style(\"fill\",\"none\").each((function(t){var a=(((t||[])[0]||{}).trace||{}).line||{},o=e||a.width||0,s=i||a.dash||\"\";n.select(this).call(c.stroke,r||a.color).call(x.dashLine,s,o)}))},x.dashLine=function(t,e,r){r=+r||0,e=x.dashStyle(e,r),t.style({\"stroke-dasharray\":e,\"stroke-width\":r+\"px\"})},x.dashStyle=function(t,e){e=+e||1;var r=Math.max(e,3);return\"solid\"===t?t=\"\":\"dot\"===t?t=r+\"px,\"+r+\"px\":\"dash\"===t?t=3*r+\"px,\"+3*r+\"px\":\"longdash\"===t?t=5*r+\"px,\"+5*r+\"px\":\"dashdot\"===t?t=3*r+\"px,\"+r+\"px,\"+r+\"px,\"+r+\"px\":\"longdashdot\"===t&&(t=5*r+\"px,\"+2*r+\"px,\"+r+\"px,\"+2*r+\"px\"),t},x.singleFillStyle=function(t){var e=(((n.select(t.node()).data()[0]||[])[0]||{}).trace||{}).fillcolor;e&&t.call(c.fill,e)},x.fillGroupStyle=function(t){t.style(\"stroke-width\",0).each((function(t){var e=n.select(this);t[0].trace&&e.call(c.fill,t[0].trace.fillcolor)}))};var b=t(\"./symbol_defs\");x.symbolNames=[],x.symbolFuncs=[],x.symbolNeedLines={},x.symbolNoDot={},x.symbolNoFill={},x.symbolList=[],Object.keys(b).forEach((function(t){var e=b[t],r=e.n;x.symbolList.push(r,String(r),t,r+100,String(r+100),t+\"-open\"),x.symbolNames[r]=t,x.symbolFuncs[r]=e.f,e.needLine&&(x.symbolNeedLines[r]=!0),e.noDot?x.symbolNoDot[r]=!0:x.symbolList.push(r+200,String(r+200),t+\"-dot\",r+300,String(r+300),t+\"-open-dot\"),e.noFill&&(x.symbolNoFill[r]=!0)}));var _=x.symbolNames.length;function w(t,e){var r=t%100;return x.symbolFuncs[r](e)+(t>=200?\"M0,0.5L0.5,0L0,-0.5L-0.5,0Z\":\"\")}x.symbolNumber=function(t){if(o(t))t=+t;else if(\"string\"==typeof t){var e=0;t.indexOf(\"-open\")>0&&(e=100,t=t.replace(\"-open\",\"\")),t.indexOf(\"-dot\")>0&&(e+=200,t=t.replace(\"-dot\",\"\")),(t=x.symbolNames.indexOf(t))>=0&&(t+=e)}return t%100>=_||t>=400?0:Math.floor(Math.max(t,0))};var T={x1:1,x2:0,y1:0,y2:0},k={x1:0,x2:0,y1:1,y2:0},A=a(\"~f\"),M={radial:{node:\"radialGradient\"},radialreversed:{node:\"radialGradient\",reversed:!0},horizontal:{node:\"linearGradient\",attrs:T},horizontalreversed:{node:\"linearGradient\",attrs:T,reversed:!0},vertical:{node:\"linearGradient\",attrs:k},verticalreversed:{node:\"linearGradient\",attrs:k,reversed:!0}};x.gradient=function(t,e,r,a,o,l){for(var u=o.length,f=M[a],h=new Array(u),p=0;p\"+v(t);d._gradientUrlQueryParts[y]=1},x.pattern=function(t,e,r,a,o,s,l,u,f,h,p,d){var g=\"legend\"===e;u&&(\"overlay\"===f?(h=u,p=c.contrast(h)):(h=void 0,p=u));var m,v,y,x,b,_,w,T,k,A,M,S=r._fullLayout,E=\"p\"+S._uid+\"-\"+a,L={};switch(o){case\"/\":m=s*Math.sqrt(2),v=s*Math.sqrt(2),_=\"path\",L={d:y=\"M-\"+m/4+\",\"+v/4+\"l\"+m/2+\",-\"+v/2+\"M0,\"+v+\"L\"+m+\",0M\"+m/4*3+\",\"+v/4*5+\"l\"+m/2+\",-\"+v/2,opacity:d,stroke:p,\"stroke-width\":(x=l*s)+\"px\"};break;case\"\\\\\":m=s*Math.sqrt(2),v=s*Math.sqrt(2),_=\"path\",L={d:y=\"M\"+m/4*3+\",-\"+v/4+\"l\"+m/2+\",\"+v/2+\"M0,0L\"+m+\",\"+v+\"M-\"+m/4+\",\"+v/4*3+\"l\"+m/2+\",\"+v/2,opacity:d,stroke:p,\"stroke-width\":(x=l*s)+\"px\"};break;case\"x\":m=s*Math.sqrt(2),v=s*Math.sqrt(2),y=\"M-\"+m/4+\",\"+v/4+\"l\"+m/2+\",-\"+v/2+\"M0,\"+v+\"L\"+m+\",0M\"+m/4*3+\",\"+v/4*5+\"l\"+m/2+\",-\"+v/2+\"M\"+m/4*3+\",-\"+v/4+\"l\"+m/2+\",\"+v/2+\"M0,0L\"+m+\",\"+v+\"M-\"+m/4+\",\"+v/4*3+\"l\"+m/2+\",\"+v/2,x=s-s*Math.sqrt(1-l),_=\"path\",L={d:y,opacity:d,stroke:p,\"stroke-width\":x+\"px\"};break;case\"|\":_=\"path\",_=\"path\",L={d:y=\"M\"+(m=s)/2+\",0L\"+m/2+\",\"+(v=s),opacity:d,stroke:p,\"stroke-width\":(x=l*s)+\"px\"};break;case\"-\":_=\"path\",_=\"path\",L={d:y=\"M0,\"+(v=s)/2+\"L\"+(m=s)+\",\"+v/2,opacity:d,stroke:p,\"stroke-width\":(x=l*s)+\"px\"};break;case\"+\":_=\"path\",y=\"M\"+(m=s)/2+\",0L\"+m/2+\",\"+(v=s)+\"M0,\"+v/2+\"L\"+m+\",\"+v/2,x=s-s*Math.sqrt(1-l),_=\"path\",L={d:y,opacity:d,stroke:p,\"stroke-width\":x+\"px\"};break;case\".\":m=s,v=s,l.pattern_filled\";S._patternUrlQueryParts[I]=1},x.initGradients=function(t){var e=t._fullLayout;i.ensureSingle(e._defs,\"g\",\"gradients\").selectAll(\"linearGradient,radialGradient\").remove(),e._gradientUrlQueryParts={}},x.initPatterns=function(t){var e=t._fullLayout;i.ensureSingle(e._defs,\"g\",\"patterns\").selectAll(\"pattern\").remove(),e._patternUrlQueryParts={}},x.getPatternAttr=function(t,e,r){return t&&i.isArrayOrTypedArray(t)?e=100,e.attr(\"d\",w(u,l))}var f,h,p,d=!1;if(t.so)p=s.outlierwidth,h=s.outliercolor,f=o.outliercolor;else{var g=(s||{}).width;p=(t.mlw+1||g+1||(t.trace?(t.trace.marker.line||{}).width:0)+1)-1||0,h=\"mlc\"in t?t.mlcc=n.lineScale(t.mlc):i.isArrayOrTypedArray(s.color)?c.defaultLine:s.color,i.isArrayOrTypedArray(o.color)&&(f=c.defaultLine,d=!0),f=\"mc\"in t?t.mcc=n.markerScale(t.mc):o.color||\"rgba(0,0,0,0)\",n.selectedColorFn&&(f=n.selectedColorFn(t))}if(t.om)e.call(c.stroke,f).style({\"stroke-width\":(p||1)+\"px\",fill:\"none\"});else{e.style(\"stroke-width\",(t.isBlank?0:p)+\"px\");var m=o.gradient,v=t.mgt;v?d=!0:v=m&&m.type,i.isArrayOrTypedArray(v)&&(v=v[0],M[v]||(v=0));var y=o.pattern,b=y&&x.getPatternAttr(y.shape,t.i,\"\");if(v&&\"none\"!==v){var _=t.mgc;_?d=!0:_=m.color;var T=r.uid;d&&(T+=\"-\"+t.i),x.gradient(e,a,T,v,[[0,_],[1,f]],\"fill\")}else if(b){var k=x.getPatternAttr(y.bgcolor,t.i,null),A=x.getPatternAttr(y.fgcolor,t.i,null),S=y.fgopacity,E=x.getPatternAttr(y.size,t.i,8),L=x.getPatternAttr(y.solidity,t.i,.3),C=t.mcc||i.isArrayOrTypedArray(y.shape)||i.isArrayOrTypedArray(y.bgcolor)||i.isArrayOrTypedArray(y.size)||i.isArrayOrTypedArray(y.solidity),P=r.uid;C&&(P+=\"-\"+t.i),x.pattern(e,\"point\",a,P,b,E,L,t.mcc,y.fillmode,k,A,S)}else c.fill(e,f);p&&c.stroke(e,h)}},x.makePointStyleFns=function(t){var e={},r=t.marker;return e.markerScale=x.tryColorscale(r,\"\"),e.lineScale=x.tryColorscale(r,\"line\"),l.traceIs(t,\"symbols\")&&(e.ms2mrc=m.isBubble(t)?v(t):function(){return(r.size||6)/2}),t.selectedpoints&&i.extendFlat(e,x.makeSelectedPointStyleFns(t)),e},x.makeSelectedPointStyleFns=function(t){var e={},r=t.selected||{},n=t.unselected||{},a=t.marker||{},o=r.marker||{},s=n.marker||{},c=a.opacity,u=o.opacity,f=s.opacity,h=void 0!==u,p=void 0!==f;(i.isArrayOrTypedArray(c)||h||p)&&(e.selectedOpacityFn=function(t){var e=void 0===t.mo?a.opacity:t.mo;return t.selected?h?u:e:p?f:g*e});var d=a.color,m=o.color,v=s.color;(m||v)&&(e.selectedColorFn=function(t){var e=t.mcc||d;return t.selected?m||e:v||e});var y=a.size,x=o.size,b=s.size,_=void 0!==x,w=void 0!==b;return l.traceIs(t,\"symbols\")&&(_||w)&&(e.selectedSizeFn=function(t){var e=t.mrc||y/2;return t.selected?_?x/2:e:w?b/2:e}),e},x.makeSelectedTextStyleFns=function(t){var e={},r=t.selected||{},n=t.unselected||{},i=t.textfont||{},a=r.textfont||{},o=n.textfont||{},s=i.color,l=a.color,u=o.color;return e.selectedTextColorFn=function(t){var e=t.tc||s;return t.selected?l||e:u||(l?e:c.addOpacity(e,g))},e},x.selectedPointStyle=function(t,e){if(t.size()&&e.selectedpoints){var r=x.makeSelectedPointStyleFns(e),i=e.marker||{},a=[];r.selectedOpacityFn&&a.push((function(t,e){t.style(\"opacity\",r.selectedOpacityFn(e))})),r.selectedColorFn&&a.push((function(t,e){c.fill(t,r.selectedColorFn(e))})),r.selectedSizeFn&&a.push((function(t,e){var n=e.mx||i.symbol||0,a=r.selectedSizeFn(e);t.attr(\"d\",w(x.symbolNumber(n),a)),e.mrc2=a})),a.length&&t.each((function(t){for(var e=n.select(this),r=0;r0?r:0}x.textPointStyle=function(t,e,r){if(t.size()){var a;if(e.selectedpoints){var o=x.makeSelectedTextStyleFns(e);a=o.selectedTextColorFn}var s=e.texttemplate,l=r._fullLayout;t.each((function(t){var o=n.select(this),c=s?i.extractOption(t,e,\"txt\",\"texttemplate\"):i.extractOption(t,e,\"tx\",\"text\");if(c||0===c){if(s){var u=e._module.formatLabels,f=u?u(t,e,l):{},p={};y(p,e,t.i);var d=e._meta||{};c=i.texttemplateString(c,f,l._d3locale,p,t,d)}var g=t.tp||e.textposition,m=L(t,e),v=a?a(t):t.tc||e.textfont.color;o.call(x.font,t.tf||e.textfont.family,m,v).text(c).call(h.convertToTspans,r).call(E,g,m,t.mrc)}else o.remove()}))}},x.selectedTextStyle=function(t,e){if(t.size()&&e.selectedpoints){var r=x.makeSelectedTextStyleFns(e);t.each((function(t){var i=n.select(this),a=r.selectedTextColorFn(t),o=t.tp||e.textposition,s=L(t,e);c.fill(i,a);var u=l.traceIs(e,\"bar-like\");E(i,o,s,t.mrc2||t.mrc,u)}))}};function C(t,e,r,i){var a=t[0]-e[0],o=t[1]-e[1],s=r[0]-e[0],l=r[1]-e[1],c=Math.pow(a*a+o*o,.25),u=Math.pow(s*s+l*l,.25),f=(u*u*a-c*c*s)*i,h=(u*u*o-c*c*l)*i,p=3*u*(c+u),d=3*c*(c+u);return[[n.round(e[0]+(p&&f/p),2),n.round(e[1]+(p&&h/p),2)],[n.round(e[0]-(d&&f/d),2),n.round(e[1]-(d&&h/d),2)]]}x.smoothopen=function(t,e){if(t.length<3)return\"M\"+t.join(\"L\");var r,n=\"M\"+t[0],i=[];for(r=1;r=1e4&&(x.savedBBoxes={},O=0),r&&(x.savedBBoxes[r]=m),O++,i.extendFlat({},m)},x.setClipUrl=function(t,e,r){t.attr(\"clip-path\",D(e,r))},x.getTranslate=function(t){var e=(t[t.attr?\"attr\":\"getAttribute\"](\"transform\")||\"\").replace(/.*\\btranslate\\((-?\\d*\\.?\\d*)[^-\\d]*(-?\\d*\\.?\\d*)[^\\d].*/,(function(t,e,r){return[e,r].join(\" \")})).split(\" \");return{x:+e[0]||0,y:+e[1]||0}},x.setTranslate=function(t,e,r){var n=t.attr?\"attr\":\"getAttribute\",i=t.attr?\"attr\":\"setAttribute\",a=t[n](\"transform\")||\"\";return e=e||0,r=r||0,a=a.replace(/(\\btranslate\\(.*?\\);?)/,\"\").trim(),a=(a+=f(e,r)).trim(),t[i](\"transform\",a),a},x.getScale=function(t){var e=(t[t.attr?\"attr\":\"getAttribute\"](\"transform\")||\"\").replace(/.*\\bscale\\((\\d*\\.?\\d*)[^\\d]*(\\d*\\.?\\d*)[^\\d].*/,(function(t,e,r){return[e,r].join(\" \")})).split(\" \");return{x:+e[0]||1,y:+e[1]||1}},x.setScale=function(t,e,r){var n=t.attr?\"attr\":\"getAttribute\",i=t.attr?\"attr\":\"setAttribute\",a=t[n](\"transform\")||\"\";return e=e||1,r=r||1,a=a.replace(/(\\bscale\\(.*?\\);?)/,\"\").trim(),a=(a+=\"scale(\"+e+\",\"+r+\")\").trim(),t[i](\"transform\",a),a};var R=/\\s*sc.*/;x.setPointGroupScale=function(t,e,r){if(e=e||1,r=r||1,t){var n=1===e&&1===r?\"\":\"scale(\"+e+\",\"+r+\")\";t.each((function(){var t=(this.getAttribute(\"transform\")||\"\").replace(R,\"\");t=(t+=n).trim(),this.setAttribute(\"transform\",t)}))}};var F=/translate\\([^)]*\\)\\s*$/;x.setTextPointsScale=function(t,e,r){t&&t.each((function(){var t,i=n.select(this),a=i.select(\"text\");if(a.node()){var o=parseFloat(a.attr(\"x\")||0),s=parseFloat(a.attr(\"y\")||0),l=(i.attr(\"transform\")||\"\").match(F);t=1===e&&1===r?[]:[f(o,s),\"scale(\"+e+\",\"+r+\")\",f(-o,-s)],l&&t.push(l),i.attr(\"transform\",t.join(\"\"))}}))}},{\"../../components/fx/helpers\":402,\"../../constants/alignment\":471,\"../../constants/interactions\":478,\"../../constants/xmlns_namespaces\":480,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../../registry\":638,\"../../traces/scatter/make_bubble_size_func\":943,\"../../traces/scatter/subtypes\":951,\"../color\":366,\"../colorscale\":378,\"./symbol_defs\":389,\"@plotly/d3\":58,\"fast-isnumeric\":190,tinycolor2:312}],389:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\");e.exports={circle:{n:0,f:function(t){var e=n.round(t,2);return\"M\"+e+\",0A\"+e+\",\"+e+\" 0 1,1 0,-\"+e+\"A\"+e+\",\"+e+\" 0 0,1 \"+e+\",0Z\"}},square:{n:1,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"H-\"+e+\"V-\"+e+\"H\"+e+\"Z\"}},diamond:{n:2,f:function(t){var e=n.round(1.3*t,2);return\"M\"+e+\",0L0,\"+e+\"L-\"+e+\",0L0,-\"+e+\"Z\"}},cross:{n:3,f:function(t){var e=n.round(.4*t,2),r=n.round(1.2*t,2);return\"M\"+r+\",\"+e+\"H\"+e+\"V\"+r+\"H-\"+e+\"V\"+e+\"H-\"+r+\"V-\"+e+\"H-\"+e+\"V-\"+r+\"H\"+e+\"V-\"+e+\"H\"+r+\"Z\"}},x:{n:4,f:function(t){var e=n.round(.8*t/Math.sqrt(2),2),r=\"l\"+e+\",\"+e,i=\"l\"+e+\",-\"+e,a=\"l-\"+e+\",-\"+e,o=\"l-\"+e+\",\"+e;return\"M0,\"+e+r+i+a+i+a+o+a+o+r+o+r+\"Z\"}},\"triangle-up\":{n:5,f:function(t){var e=n.round(2*t/Math.sqrt(3),2);return\"M-\"+e+\",\"+n.round(t/2,2)+\"H\"+e+\"L0,-\"+n.round(t,2)+\"Z\"}},\"triangle-down\":{n:6,f:function(t){var e=n.round(2*t/Math.sqrt(3),2);return\"M-\"+e+\",-\"+n.round(t/2,2)+\"H\"+e+\"L0,\"+n.round(t,2)+\"Z\"}},\"triangle-left\":{n:7,f:function(t){var e=n.round(2*t/Math.sqrt(3),2);return\"M\"+n.round(t/2,2)+\",-\"+e+\"V\"+e+\"L-\"+n.round(t,2)+\",0Z\"}},\"triangle-right\":{n:8,f:function(t){var e=n.round(2*t/Math.sqrt(3),2);return\"M-\"+n.round(t/2,2)+\",-\"+e+\"V\"+e+\"L\"+n.round(t,2)+\",0Z\"}},\"triangle-ne\":{n:9,f:function(t){var e=n.round(.6*t,2),r=n.round(1.2*t,2);return\"M-\"+r+\",-\"+e+\"H\"+e+\"V\"+r+\"Z\"}},\"triangle-se\":{n:10,f:function(t){var e=n.round(.6*t,2),r=n.round(1.2*t,2);return\"M\"+e+\",-\"+r+\"V\"+e+\"H-\"+r+\"Z\"}},\"triangle-sw\":{n:11,f:function(t){var e=n.round(.6*t,2),r=n.round(1.2*t,2);return\"M\"+r+\",\"+e+\"H-\"+e+\"V-\"+r+\"Z\"}},\"triangle-nw\":{n:12,f:function(t){var e=n.round(.6*t,2),r=n.round(1.2*t,2);return\"M-\"+e+\",\"+r+\"V-\"+e+\"H\"+r+\"Z\"}},pentagon:{n:13,f:function(t){var e=n.round(.951*t,2),r=n.round(.588*t,2),i=n.round(-t,2),a=n.round(-.309*t,2);return\"M\"+e+\",\"+a+\"L\"+r+\",\"+n.round(.809*t,2)+\"H-\"+r+\"L-\"+e+\",\"+a+\"L0,\"+i+\"Z\"}},hexagon:{n:14,f:function(t){var e=n.round(t,2),r=n.round(t/2,2),i=n.round(t*Math.sqrt(3)/2,2);return\"M\"+i+\",-\"+r+\"V\"+r+\"L0,\"+e+\"L-\"+i+\",\"+r+\"V-\"+r+\"L0,-\"+e+\"Z\"}},hexagon2:{n:15,f:function(t){var e=n.round(t,2),r=n.round(t/2,2),i=n.round(t*Math.sqrt(3)/2,2);return\"M-\"+r+\",\"+i+\"H\"+r+\"L\"+e+\",0L\"+r+\",-\"+i+\"H-\"+r+\"L-\"+e+\",0Z\"}},octagon:{n:16,f:function(t){var e=n.round(.924*t,2),r=n.round(.383*t,2);return\"M-\"+r+\",-\"+e+\"H\"+r+\"L\"+e+\",-\"+r+\"V\"+r+\"L\"+r+\",\"+e+\"H-\"+r+\"L-\"+e+\",\"+r+\"V-\"+r+\"Z\"}},star:{n:17,f:function(t){var e=1.4*t,r=n.round(.225*e,2),i=n.round(.951*e,2),a=n.round(.363*e,2),o=n.round(.588*e,2),s=n.round(-e,2),l=n.round(-.309*e,2),c=n.round(.118*e,2),u=n.round(.809*e,2);return\"M\"+r+\",\"+l+\"H\"+i+\"L\"+a+\",\"+c+\"L\"+o+\",\"+u+\"L0,\"+n.round(.382*e,2)+\"L-\"+o+\",\"+u+\"L-\"+a+\",\"+c+\"L-\"+i+\",\"+l+\"H-\"+r+\"L0,\"+s+\"Z\"}},hexagram:{n:18,f:function(t){var e=n.round(.66*t,2),r=n.round(.38*t,2),i=n.round(.76*t,2);return\"M-\"+i+\",0l-\"+r+\",-\"+e+\"h\"+i+\"l\"+r+\",-\"+e+\"l\"+r+\",\"+e+\"h\"+i+\"l-\"+r+\",\"+e+\"l\"+r+\",\"+e+\"h-\"+i+\"l-\"+r+\",\"+e+\"l-\"+r+\",-\"+e+\"h-\"+i+\"Z\"}},\"star-triangle-up\":{n:19,f:function(t){var e=n.round(t*Math.sqrt(3)*.8,2),r=n.round(.8*t,2),i=n.round(1.6*t,2),a=n.round(4*t,2),o=\"A \"+a+\",\"+a+\" 0 0 1 \";return\"M-\"+e+\",\"+r+o+e+\",\"+r+o+\"0,-\"+i+o+\"-\"+e+\",\"+r+\"Z\"}},\"star-triangle-down\":{n:20,f:function(t){var e=n.round(t*Math.sqrt(3)*.8,2),r=n.round(.8*t,2),i=n.round(1.6*t,2),a=n.round(4*t,2),o=\"A \"+a+\",\"+a+\" 0 0 1 \";return\"M\"+e+\",-\"+r+o+\"-\"+e+\",-\"+r+o+\"0,\"+i+o+e+\",-\"+r+\"Z\"}},\"star-square\":{n:21,f:function(t){var e=n.round(1.1*t,2),r=n.round(2*t,2),i=\"A \"+r+\",\"+r+\" 0 0 1 \";return\"M-\"+e+\",-\"+e+i+\"-\"+e+\",\"+e+i+e+\",\"+e+i+e+\",-\"+e+i+\"-\"+e+\",-\"+e+\"Z\"}},\"star-diamond\":{n:22,f:function(t){var e=n.round(1.4*t,2),r=n.round(1.9*t,2),i=\"A \"+r+\",\"+r+\" 0 0 1 \";return\"M-\"+e+\",0\"+i+\"0,\"+e+i+e+\",0\"+i+\"0,-\"+e+i+\"-\"+e+\",0Z\"}},\"diamond-tall\":{n:23,f:function(t){var e=n.round(.7*t,2),r=n.round(1.4*t,2);return\"M0,\"+r+\"L\"+e+\",0L0,-\"+r+\"L-\"+e+\",0Z\"}},\"diamond-wide\":{n:24,f:function(t){var e=n.round(1.4*t,2),r=n.round(.7*t,2);return\"M0,\"+r+\"L\"+e+\",0L0,-\"+r+\"L-\"+e+\",0Z\"}},hourglass:{n:25,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"H-\"+e+\"L\"+e+\",-\"+e+\"H-\"+e+\"Z\"},noDot:!0},bowtie:{n:26,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"V-\"+e+\"L-\"+e+\",\"+e+\"V-\"+e+\"Z\"},noDot:!0},\"circle-cross\":{n:27,f:function(t){var e=n.round(t,2);return\"M0,\"+e+\"V-\"+e+\"M\"+e+\",0H-\"+e+\"M\"+e+\",0A\"+e+\",\"+e+\" 0 1,1 0,-\"+e+\"A\"+e+\",\"+e+\" 0 0,1 \"+e+\",0Z\"},needLine:!0,noDot:!0},\"circle-x\":{n:28,f:function(t){var e=n.round(t,2),r=n.round(t/Math.sqrt(2),2);return\"M\"+r+\",\"+r+\"L-\"+r+\",-\"+r+\"M\"+r+\",-\"+r+\"L-\"+r+\",\"+r+\"M\"+e+\",0A\"+e+\",\"+e+\" 0 1,1 0,-\"+e+\"A\"+e+\",\"+e+\" 0 0,1 \"+e+\",0Z\"},needLine:!0,noDot:!0},\"square-cross\":{n:29,f:function(t){var e=n.round(t,2);return\"M0,\"+e+\"V-\"+e+\"M\"+e+\",0H-\"+e+\"M\"+e+\",\"+e+\"H-\"+e+\"V-\"+e+\"H\"+e+\"Z\"},needLine:!0,noDot:!0},\"square-x\":{n:30,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"L-\"+e+\",-\"+e+\"M\"+e+\",-\"+e+\"L-\"+e+\",\"+e+\"M\"+e+\",\"+e+\"H-\"+e+\"V-\"+e+\"H\"+e+\"Z\"},needLine:!0,noDot:!0},\"diamond-cross\":{n:31,f:function(t){var e=n.round(1.3*t,2);return\"M\"+e+\",0L0,\"+e+\"L-\"+e+\",0L0,-\"+e+\"ZM0,-\"+e+\"V\"+e+\"M-\"+e+\",0H\"+e},needLine:!0,noDot:!0},\"diamond-x\":{n:32,f:function(t){var e=n.round(1.3*t,2),r=n.round(.65*t,2);return\"M\"+e+\",0L0,\"+e+\"L-\"+e+\",0L0,-\"+e+\"ZM-\"+r+\",-\"+r+\"L\"+r+\",\"+r+\"M-\"+r+\",\"+r+\"L\"+r+\",-\"+r},needLine:!0,noDot:!0},\"cross-thin\":{n:33,f:function(t){var e=n.round(1.4*t,2);return\"M0,\"+e+\"V-\"+e+\"M\"+e+\",0H-\"+e},needLine:!0,noDot:!0,noFill:!0},\"x-thin\":{n:34,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"L-\"+e+\",-\"+e+\"M\"+e+\",-\"+e+\"L-\"+e+\",\"+e},needLine:!0,noDot:!0,noFill:!0},asterisk:{n:35,f:function(t){var e=n.round(1.2*t,2),r=n.round(.85*t,2);return\"M0,\"+e+\"V-\"+e+\"M\"+e+\",0H-\"+e+\"M\"+r+\",\"+r+\"L-\"+r+\",-\"+r+\"M\"+r+\",-\"+r+\"L-\"+r+\",\"+r},needLine:!0,noDot:!0,noFill:!0},hash:{n:36,f:function(t){var e=n.round(t/2,2),r=n.round(t,2);return\"M\"+e+\",\"+r+\"V-\"+r+\"m-\"+r+\",0V\"+r+\"M\"+r+\",\"+e+\"H-\"+r+\"m0,-\"+r+\"H\"+r},needLine:!0,noFill:!0},\"y-up\":{n:37,f:function(t){var e=n.round(1.2*t,2),r=n.round(1.6*t,2),i=n.round(.8*t,2);return\"M-\"+e+\",\"+i+\"L0,0M\"+e+\",\"+i+\"L0,0M0,-\"+r+\"L0,0\"},needLine:!0,noDot:!0,noFill:!0},\"y-down\":{n:38,f:function(t){var e=n.round(1.2*t,2),r=n.round(1.6*t,2),i=n.round(.8*t,2);return\"M-\"+e+\",-\"+i+\"L0,0M\"+e+\",-\"+i+\"L0,0M0,\"+r+\"L0,0\"},needLine:!0,noDot:!0,noFill:!0},\"y-left\":{n:39,f:function(t){var e=n.round(1.2*t,2),r=n.round(1.6*t,2),i=n.round(.8*t,2);return\"M\"+i+\",\"+e+\"L0,0M\"+i+\",-\"+e+\"L0,0M-\"+r+\",0L0,0\"},needLine:!0,noDot:!0,noFill:!0},\"y-right\":{n:40,f:function(t){var e=n.round(1.2*t,2),r=n.round(1.6*t,2),i=n.round(.8*t,2);return\"M-\"+i+\",\"+e+\"L0,0M-\"+i+\",-\"+e+\"L0,0M\"+r+\",0L0,0\"},needLine:!0,noDot:!0,noFill:!0},\"line-ew\":{n:41,f:function(t){var e=n.round(1.4*t,2);return\"M\"+e+\",0H-\"+e},needLine:!0,noDot:!0,noFill:!0},\"line-ns\":{n:42,f:function(t){var e=n.round(1.4*t,2);return\"M0,\"+e+\"V-\"+e},needLine:!0,noDot:!0,noFill:!0},\"line-ne\":{n:43,f:function(t){var e=n.round(t,2);return\"M\"+e+\",-\"+e+\"L-\"+e+\",\"+e},needLine:!0,noDot:!0,noFill:!0},\"line-nw\":{n:44,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"L-\"+e+\",-\"+e},needLine:!0,noDot:!0,noFill:!0},\"arrow-up\":{n:45,f:function(t){var e=n.round(t,2);return\"M0,0L-\"+e+\",\"+n.round(2*t,2)+\"H\"+e+\"Z\"},noDot:!0},\"arrow-down\":{n:46,f:function(t){var e=n.round(t,2);return\"M0,0L-\"+e+\",-\"+n.round(2*t,2)+\"H\"+e+\"Z\"},noDot:!0},\"arrow-left\":{n:47,f:function(t){var e=n.round(2*t,2),r=n.round(t,2);return\"M0,0L\"+e+\",-\"+r+\"V\"+r+\"Z\"},noDot:!0},\"arrow-right\":{n:48,f:function(t){var e=n.round(2*t,2),r=n.round(t,2);return\"M0,0L-\"+e+\",-\"+r+\"V\"+r+\"Z\"},noDot:!0},\"arrow-bar-up\":{n:49,f:function(t){var e=n.round(t,2);return\"M-\"+e+\",0H\"+e+\"M0,0L-\"+e+\",\"+n.round(2*t,2)+\"H\"+e+\"Z\"},needLine:!0,noDot:!0},\"arrow-bar-down\":{n:50,f:function(t){var e=n.round(t,2);return\"M-\"+e+\",0H\"+e+\"M0,0L-\"+e+\",-\"+n.round(2*t,2)+\"H\"+e+\"Z\"},needLine:!0,noDot:!0},\"arrow-bar-left\":{n:51,f:function(t){var e=n.round(2*t,2),r=n.round(t,2);return\"M0,-\"+r+\"V\"+r+\"M0,0L\"+e+\",-\"+r+\"V\"+r+\"Z\"},needLine:!0,noDot:!0},\"arrow-bar-right\":{n:52,f:function(t){var e=n.round(2*t,2),r=n.round(t,2);return\"M0,-\"+r+\"V\"+r+\"M0,0L-\"+e+\",-\"+r+\"V\"+r+\"Z\"},needLine:!0,noDot:!0}}},{\"@plotly/d3\":58}],390:[function(t,e,r){\"use strict\";e.exports={visible:{valType:\"boolean\",editType:\"calc\"},type:{valType:\"enumerated\",values:[\"percent\",\"constant\",\"sqrt\",\"data\"],editType:\"calc\"},symmetric:{valType:\"boolean\",editType:\"calc\"},array:{valType:\"data_array\",editType:\"calc\"},arrayminus:{valType:\"data_array\",editType:\"calc\"},value:{valType:\"number\",min:0,dflt:10,editType:\"calc\"},valueminus:{valType:\"number\",min:0,dflt:10,editType:\"calc\"},traceref:{valType:\"integer\",min:0,dflt:0,editType:\"style\"},tracerefminus:{valType:\"integer\",min:0,dflt:0,editType:\"style\"},copy_ystyle:{valType:\"boolean\",editType:\"plot\"},copy_zstyle:{valType:\"boolean\",editType:\"style\"},color:{valType:\"color\",editType:\"style\"},thickness:{valType:\"number\",min:0,dflt:2,editType:\"style\"},width:{valType:\"number\",min:0,editType:\"plot\"},editType:\"calc\",_deprecated:{opacity:{valType:\"number\",editType:\"style\"}}}},{}],391:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../registry\"),a=t(\"../../plots/cartesian/axes\"),o=t(\"../../lib\"),s=t(\"./compute_error\");function l(t,e,r,i){var l=e[\"error_\"+i]||{},c=[];if(l.visible&&-1!==[\"linear\",\"log\"].indexOf(r.type)){for(var u=s(l),f=0;f0;e.each((function(e){var f,h=e[0].trace,p=h.error_x||{},d=h.error_y||{};h.ids&&(f=function(t){return t.id});var g=o.hasMarkers(h)&&h.marker.maxdisplayed>0;d.visible||p.visible||(e=[]);var m=n.select(this).selectAll(\"g.errorbar\").data(e,f);if(m.exit().remove(),e.length){p.visible||m.selectAll(\"path.xerror\").remove(),d.visible||m.selectAll(\"path.yerror\").remove(),m.style(\"opacity\",1);var v=m.enter().append(\"g\").classed(\"errorbar\",!0);u&&v.style(\"opacity\",0).transition().duration(s.duration).style(\"opacity\",1),a.setClipUrl(m,r.layerClipId,t),m.each((function(t){var e=n.select(this),r=function(t,e,r){var n={x:e.c2p(t.x),y:r.c2p(t.y)};void 0!==t.yh&&(n.yh=r.c2p(t.yh),n.ys=r.c2p(t.ys),i(n.ys)||(n.noYS=!0,n.ys=r.c2p(t.ys,!0)));void 0!==t.xh&&(n.xh=e.c2p(t.xh),n.xs=e.c2p(t.xs),i(n.xs)||(n.noXS=!0,n.xs=e.c2p(t.xs,!0)));return n}(t,l,c);if(!g||t.vis){var a,o=e.select(\"path.yerror\");if(d.visible&&i(r.x)&&i(r.yh)&&i(r.ys)){var f=d.width;a=\"M\"+(r.x-f)+\",\"+r.yh+\"h\"+2*f+\"m-\"+f+\",0V\"+r.ys,r.noYS||(a+=\"m-\"+f+\",0h\"+2*f),!o.size()?o=e.append(\"path\").style(\"vector-effect\",\"non-scaling-stroke\").classed(\"yerror\",!0):u&&(o=o.transition().duration(s.duration).ease(s.easing)),o.attr(\"d\",a)}else o.remove();var h=e.select(\"path.xerror\");if(p.visible&&i(r.y)&&i(r.xh)&&i(r.xs)){var m=(p.copy_ystyle?d:p).width;a=\"M\"+r.xh+\",\"+(r.y-m)+\"v\"+2*m+\"m0,-\"+m+\"H\"+r.xs,r.noXS||(a+=\"m0,-\"+m+\"v\"+2*m),!h.size()?h=e.append(\"path\").style(\"vector-effect\",\"non-scaling-stroke\").classed(\"xerror\",!0):u&&(h=h.transition().duration(s.duration).ease(s.easing)),h.attr(\"d\",a)}else h.remove()}}))}}))}},{\"../../traces/scatter/subtypes\":951,\"../drawing\":388,\"@plotly/d3\":58,\"fast-isnumeric\":190}],396:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../color\");e.exports=function(t){t.each((function(t){var e=t[0].trace,r=e.error_y||{},a=e.error_x||{},o=n.select(this);o.selectAll(\"path.yerror\").style(\"stroke-width\",r.thickness+\"px\").call(i.stroke,r.color),a.copy_ystyle&&(a=r),o.selectAll(\"path.xerror\").style(\"stroke-width\",a.thickness+\"px\").call(i.stroke,a.color)}))}},{\"../color\":366,\"@plotly/d3\":58}],397:[function(t,e,r){\"use strict\";var n=t(\"../../plots/font_attributes\"),i=t(\"./layout_attributes\").hoverlabel,a=t(\"../../lib/extend\").extendFlat;e.exports={hoverlabel:{bgcolor:a({},i.bgcolor,{arrayOk:!0}),bordercolor:a({},i.bordercolor,{arrayOk:!0}),font:n({arrayOk:!0,editType:\"none\"}),align:a({},i.align,{arrayOk:!0}),namelength:a({},i.namelength,{arrayOk:!0}),editType:\"none\"}}},{\"../../lib/extend\":493,\"../../plots/font_attributes\":585,\"./layout_attributes\":407}],398:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../registry\");function a(t,e,r,i){i=i||n.identity,Array.isArray(t)&&(e[0][r]=i(t))}e.exports=function(t){var e=t.calcdata,r=t._fullLayout;function o(t){return function(e){return n.coerceHoverinfo({hoverinfo:e},{_module:t._module},r)}}for(var s=0;s=0&&r.index_[0]._length||ot<0||ot>w[0]._length)return d.unhoverRaw(t,e)}if(e.pointerX=at+_[0]._offset,e.pointerY=ot+w[0]._offset,V=\"xval\"in e?v.flat(l,e.xval):v.p2c(_,at),H=\"yval\"in e?v.flat(l,e.yval):v.p2c(w,ot),!i(V[0])||!i(H[0]))return o.warn(\"Fx.hover failed\",e,t),d.unhoverRaw(t,e)}var ct=1/0;function ut(t,r){for(G=0;Gtt&&(et.splice(0,tt),ct=et[0].distance),y&&0!==B&&0===et.length){$.distance=B,$.index=!1;var f=W._module.hoverPoints($,K,Q,\"closest\",{hoverLayer:u._hoverlayer});if(f&&(f=f.filter((function(t){return t.spikeDistance<=B}))),f&&f.length){var h,d=f.filter((function(t){return t.xa.showspikes&&\"hovered data\"!==t.xa.spikesnap}));if(d.length){var g=d[0];i(g.x0)&&i(g.y0)&&(h=ht(g),(!nt.vLinePoint||nt.vLinePoint.spikeDistance>h.spikeDistance)&&(nt.vLinePoint=h))}var m=f.filter((function(t){return t.ya.showspikes&&\"hovered data\"!==t.ya.spikesnap}));if(m.length){var x=m[0];i(x.x0)&&i(x.y0)&&(h=ht(x),(!nt.hLinePoint||nt.hLinePoint.spikeDistance>h.spikeDistance)&&(nt.hLinePoint=h))}}}}}function ft(t,e,r){for(var n,i=null,a=1/0,o=0;o0&&Math.abs(t.distance)Tt-1;Mt--)Ct(et[Mt]);et=St,mt()}var Pt=t._hoverdata,It=[],Ot=j(t),zt=U(t);for(q=0;q1||et.length>1)||\"closest\"===P&&it&&et.length>1,Wt=p.combine(u.plot_bgcolor||p.background,u.paper_bgcolor),Xt=I(et,{gd:t,hovermode:P,rotateLabels:Yt,bgColor:Wt,container:u._hoverlayer,outerContainer:u._paper.node(),commonLabelOpts:u.hoverlabel,hoverdistance:u.hoverdistance});v.isUnifiedHover(P)||(!function(t,e,r){var n,i,a,o,s,l,c,u=0,f=1,h=t.size(),p=new Array(h),d=0;function g(t){var e=t[0],r=t[t.length-1];if(i=e.pmin-e.pos-e.dp+e.size,a=r.pos+r.dp+r.size-e.pmax,i>.01){for(s=t.length-1;s>=0;s--)t[s].dp+=i;n=!1}if(!(a<.01)){if(i<-.01){for(s=t.length-1;s>=0;s--)t[s].dp-=a;n=!1}if(n){var c=0;for(o=0;oe.pmax&&c++;for(o=t.length-1;o>=0&&!(c<=0);o--)(l=t[o]).pos>e.pmax-1&&(l.del=!0,c--);for(o=0;o=0;s--)t[s].dp-=a;for(o=t.length-1;o>=0&&!(c<=0);o--)(l=t[o]).pos+l.dp+l.size>e.pmax&&(l.del=!0,c--)}}}t.each((function(t){var n=t[e],i=\"x\"===n._id.charAt(0),a=n.range;0===d&&a&&a[0]>a[1]!==i&&(f=-1),p[d++]=[{datum:t,traceIndex:t.trace.index,dp:0,pos:t.pos,posref:t.posref,size:t.by*(i?T:1)/2,pmin:0,pmax:i?r.width:r.height}]})),p.sort((function(t,e){return t[0].posref-e[0].posref||f*(e[0].traceIndex-t[0].traceIndex)}));for(;!n&&u<=h;){for(u++,n=!0,o=0;o.01&&y.pmin===x.pmin&&y.pmax===x.pmax){for(s=v.length-1;s>=0;s--)v[s].dp+=i;for(m.push.apply(m,v),p.splice(o+1,1),c=0,s=m.length-1;s>=0;s--)c+=m[s].dp;for(a=c/m.length,s=m.length-1;s>=0;s--)m[s].dp-=a;n=!1}else o++}p.forEach(g)}for(o=p.length-1;o>=0;o--){var b=p[o];for(s=b.length-1;s>=0;s--){var _=b[s],w=_.datum;w.offset=_.dp,w.del=_.del}}}(Xt,Yt?\"xa\":\"ya\",u),z(Xt,Yt,u._invScaleX,u._invScaleY));if(s&&s.tagName){var Zt=m.getComponentMethod(\"annotations\",\"hasClickToShow\")(t,It);f(n.select(s),Zt?\"pointer\":\"\")}if(!s||a||!function(t,e,r){if(!r||r.length!==t._hoverdata.length)return!0;for(var n=r.length-1;n>=0;n--){var i=r[n],a=t._hoverdata[n];if(i.curveNumber!==a.curveNumber||String(i.pointNumber)!==String(a.pointNumber)||String(i.pointNumbers)!==String(a.pointNumbers))return!0}return!1}(t,0,Pt))return;Pt&&t.emit(\"plotly_unhover\",{event:e,points:Pt});t.emit(\"plotly_hover\",{event:e,points:t._hoverdata,xaxes:_,yaxes:w,xvals:V,yvals:H})}(t,e,r,a,s)}))},r.loneHover=function(t,e){var r=!0;Array.isArray(t)||(r=!1,t=[t]);var i=e.gd,a=j(i),o=U(i),s=I(t.map((function(t){var r=t._x0||t.x0||t.x||0,n=t._x1||t.x1||t.x||0,s=t._y0||t.y0||t.y||0,l=t._y1||t.y1||t.y||0,c=t.eventData;if(c){var u=Math.min(r,n),f=Math.max(r,n),h=Math.min(s,l),d=Math.max(s,l),g=t.trace;if(m.traceIs(g,\"gl3d\")){var v=i._fullLayout[g.scene]._scene.container,y=v.offsetLeft,x=v.offsetTop;u+=y,f+=y,h+=x,d+=x}c.bbox={x0:u+o,x1:f+o,y0:h+a,y1:d+a},e.inOut_bbox&&e.inOut_bbox.push(c.bbox)}else c=!1;return{color:t.color||p.defaultLine,x0:t.x0||t.x||0,x1:t.x1||t.x||0,y0:t.y0||t.y||0,y1:t.y1||t.y||0,xLabel:t.xLabel,yLabel:t.yLabel,zLabel:t.zLabel,text:t.text,name:t.name,idealAlign:t.idealAlign,borderColor:t.borderColor,fontFamily:t.fontFamily,fontSize:t.fontSize,fontColor:t.fontColor,nameLength:t.nameLength,textAlign:t.textAlign,trace:t.trace||{index:0,hoverinfo:\"\"},xa:{_offset:0},ya:{_offset:0},index:0,hovertemplate:t.hovertemplate||!1,hovertemplateLabels:t.hovertemplateLabels||!1,eventData:c}})),{gd:i,hovermode:\"closest\",rotateLabels:!1,bgColor:e.bgColor||p.background,container:n.select(e.container),outerContainer:e.outerContainer||e.container}),l=0,c=0;return s.sort((function(t,e){return t.y0-e.y0})).each((function(t,r){var n=t.y0-t.by/2;t.offset=n-5([\\s\\S]*)<\\/extra>/;function I(t,e){var r=e.gd,i=r._fullLayout,a=e.hovermode,c=e.rotateLabels,f=e.bgColor,d=e.container,g=e.outerContainer,w=e.commonLabelOpts||{};if(0===t.length)return[[]];var T=e.fontFamily||y.HOVERFONT,k=e.fontSize||y.HOVERFONTSIZE,A=t[0],E=A.xa,L=A.ya,P=a.charAt(0),I=A[P+\"Label\"],z=V(r,g),D=z.top,R=z.width,F=z.height,B=void 0!==I&&A.distance<=e.hoverdistance&&(\"x\"===a||\"y\"===a);if(B){var N,j,U=!0;for(N=0;Ni.width-b?(m=i.width-b,e.attr(\"d\",\"M\"+(b-M)+\",0L\"+b+\",\"+x+M+\"v\"+x+(2*S+y.height)+\"H-\"+b+\"V\"+x+M+\"H\"+(b-2*M)+\"Z\")):e.attr(\"d\",\"M0,0L\"+M+\",\"+x+M+\"H\"+(S+y.width/2)+\"v\"+x+(2*S+y.height)+\"H-\"+(S+y.width/2)+\"V\"+x+M+\"H-\"+M+\"Z\")}else{var _,C,P;\"right\"===L.side?(_=\"start\",C=1,P=\"\",m=E._offset+E._length):(_=\"end\",C=-1,P=\"-\",m=E._offset),v=L._offset+(A.y0+A.y1)/2,l.attr(\"text-anchor\",_),e.attr(\"d\",\"M0,0L\"+P+M+\",\"+M+\"V\"+(S+y.height/2)+\"h\"+P+(2*S+y.width)+\"V-\"+(S+y.height/2)+\"H\"+P+M+\"V-\"+M+\"Z\");var O,z=y.height/2,R=D-y.top-z,F=\"clip\"+i._uid+\"commonlabel\"+L._id;if(m=0?at:ot+ct=0?ot:vt+ct=0?nt:it+ut=0?it:yt+ut=0,\"top\"!==t.idealAlign&&G||!Y?G?(z+=j/2,t.anchor=\"start\"):t.anchor=\"middle\":(z-=j/2,t.anchor=\"end\");else if(t.pos=z,G=P+N/2+W<=R,Y=P-N/2-W>=0,\"left\"!==t.idealAlign&&G||!Y)if(G)P+=N/2,t.anchor=\"start\";else{t.anchor=\"middle\";var X=W/2,Z=P+X-R,J=P-X;Z>0&&(P-=Z),J<0&&(P+=-J)}else P-=N/2,t.anchor=\"end\";w.attr(\"text-anchor\",t.anchor),E&&A.attr(\"text-anchor\",t.anchor),e.attr(\"transform\",s(P,z)+(c?l(_):\"\"))})),xt}function O(t,e,r,n,i,a){var s=\"\",l=\"\";void 0!==t.nameOverride&&(t.name=t.nameOverride),t.name&&(t.trace._meta&&(t.name=o.templateString(t.name,t.trace._meta)),s=B(t.name,t.nameLength));var c=r.charAt(0),u=\"x\"===c?\"y\":\"x\";void 0!==t.zLabel?(void 0!==t.xLabel&&(l+=\"x: \"+t.xLabel+\"
\"),void 0!==t.yLabel&&(l+=\"y: \"+t.yLabel+\"
\"),\"choropleth\"!==t.trace.type&&\"choroplethmapbox\"!==t.trace.type&&(l+=(l?\"z: \":\"\")+t.zLabel)):e&&t[c+\"Label\"]===i?l=t[u+\"Label\"]||\"\":void 0===t.xLabel?void 0!==t.yLabel&&\"scattercarpet\"!==t.trace.type&&(l=t.yLabel):l=void 0===t.yLabel?t.xLabel:\"(\"+t.xLabel+\", \"+t.yLabel+\")\",!t.text&&0!==t.text||Array.isArray(t.text)||(l+=(l?\"
\":\"\")+t.text),void 0!==t.extraText&&(l+=(l?\"
\":\"\")+t.extraText),a&&\"\"===l&&!t.hovertemplate&&(\"\"===s&&a.remove(),l=s);var f=t.hovertemplate||!1;if(f){var h=t.hovertemplateLabels||t;t[c+\"Label\"]!==i&&(h[c+\"other\"]=h[c+\"Val\"],h[c+\"otherLabel\"]=h[c+\"Label\"]),l=(l=o.hovertemplateString(f,h,n._d3locale,t.eventData[0]||{},t.trace._meta)).replace(P,(function(e,r){return s=B(r,t.nameLength),\"\"}))}return[l,s]}function z(t,e,r,i){var a=function(t){return t*r},o=function(t){return t*i};t.each((function(t){var r=n.select(this);if(t.del)return r.remove();var i=r.select(\"text.nums\"),s=t.anchor,l=\"end\"===s?-1:1,c={start:1,end:-1,middle:0}[s],f=c*(M+S),p=f+c*(t.txwidth+S),d=0,g=t.offset,m=\"middle\"===s;m&&(f-=t.tx2width/2,p+=t.txwidth/2+S),e&&(g*=-A,d=t.offset*k),r.select(\"path\").attr(\"d\",m?\"M-\"+a(t.bx/2+t.tx2width/2)+\",\"+o(g-t.by/2)+\"h\"+a(t.bx)+\"v\"+o(t.by)+\"h-\"+a(t.bx)+\"Z\":\"M0,0L\"+a(l*M+d)+\",\"+o(M+g)+\"v\"+o(t.by/2-M)+\"h\"+a(l*t.bx)+\"v-\"+o(t.by)+\"H\"+a(l*M+d)+\"V\"+o(g-M)+\"Z\");var v=d+f,y=g+t.ty0-t.by/2+S,x=t.textAlign||\"auto\";\"auto\"!==x&&(\"left\"===x&&\"start\"!==s?(i.attr(\"text-anchor\",\"start\"),v=m?-t.bx/2-t.tx2width/2+S:-t.bx-S):\"right\"===x&&\"end\"!==s&&(i.attr(\"text-anchor\",\"end\"),v=m?t.bx/2-t.tx2width/2-S:t.bx+S)),i.call(u.positionText,a(v),o(y)),t.tx2width&&(r.select(\"text.name\").call(u.positionText,a(p+c*S+d),o(g+t.ty0-t.by/2+S)),r.select(\"rect\").call(h.setRect,a(p+(c-1)*t.tx2width/2+d),o(g-t.by/2-1),a(t.tx2width),o(t.by+2)))}))}function D(t,e){var r=t.index,n=t.trace||{},a=t.cd[0],s=t.cd[r]||{};function l(t){return t||i(t)&&0===t}var c=Array.isArray(r)?function(t,e){var i=o.castOption(a,r,t);return l(i)?i:o.extractOption({},n,\"\",e)}:function(t,e){return o.extractOption(s,n,t,e)};function u(e,r,n){var i=c(r,n);l(i)&&(t[e]=i)}if(u(\"hoverinfo\",\"hi\",\"hoverinfo\"),u(\"bgcolor\",\"hbg\",\"hoverlabel.bgcolor\"),u(\"borderColor\",\"hbc\",\"hoverlabel.bordercolor\"),u(\"fontFamily\",\"htf\",\"hoverlabel.font.family\"),u(\"fontSize\",\"hts\",\"hoverlabel.font.size\"),u(\"fontColor\",\"htc\",\"hoverlabel.font.color\"),u(\"nameLength\",\"hnl\",\"hoverlabel.namelength\"),u(\"textAlign\",\"hta\",\"hoverlabel.align\"),t.posref=\"y\"===e||\"closest\"===e&&\"h\"===n.orientation?t.xa._offset+(t.x0+t.x1)/2:t.ya._offset+(t.y0+t.y1)/2,t.x0=o.constrain(t.x0,0,t.xa._length),t.x1=o.constrain(t.x1,0,t.xa._length),t.y0=o.constrain(t.y0,0,t.ya._length),t.y1=o.constrain(t.y1,0,t.ya._length),void 0!==t.xLabelVal&&(t.xLabel=\"xLabel\"in t?t.xLabel:g.hoverLabelText(t.xa,t.xLabelVal,n.xhoverformat),t.xVal=t.xa.c2d(t.xLabelVal)),void 0!==t.yLabelVal&&(t.yLabel=\"yLabel\"in t?t.yLabel:g.hoverLabelText(t.ya,t.yLabelVal,n.yhoverformat),t.yVal=t.ya.c2d(t.yLabelVal)),void 0!==t.zLabelVal&&void 0===t.zLabel&&(t.zLabel=String(t.zLabelVal)),!(isNaN(t.xerr)||\"log\"===t.xa.type&&t.xerr<=0)){var f=g.tickText(t.xa,t.xa.c2l(t.xerr),\"hover\").text;void 0!==t.xerrneg?t.xLabel+=\" +\"+f+\" / -\"+g.tickText(t.xa,t.xa.c2l(t.xerrneg),\"hover\").text:t.xLabel+=\" \\xb1 \"+f,\"x\"===e&&(t.distance+=1)}if(!(isNaN(t.yerr)||\"log\"===t.ya.type&&t.yerr<=0)){var h=g.tickText(t.ya,t.ya.c2l(t.yerr),\"hover\").text;void 0!==t.yerrneg?t.yLabel+=\" +\"+h+\" / -\"+g.tickText(t.ya,t.ya.c2l(t.yerrneg),\"hover\").text:t.yLabel+=\" \\xb1 \"+h,\"y\"===e&&(t.distance+=1)}var p=t.hoverinfo||t.trace.hoverinfo;return p&&\"all\"!==p&&(-1===(p=Array.isArray(p)?p:p.split(\"+\")).indexOf(\"x\")&&(t.xLabel=void 0),-1===p.indexOf(\"y\")&&(t.yLabel=void 0),-1===p.indexOf(\"z\")&&(t.zLabel=void 0),-1===p.indexOf(\"text\")&&(t.text=void 0),-1===p.indexOf(\"name\")&&(t.name=void 0)),t}function R(t,e,r){var n,i,o=r.container,s=r.fullLayout,l=s._size,c=r.event,u=!!e.hLinePoint,f=!!e.vLinePoint;if(o.selectAll(\".spikeline\").remove(),f||u){var d=p.combine(s.plot_bgcolor,s.paper_bgcolor);if(u){var m,v,y=e.hLinePoint;n=y&&y.xa,\"cursor\"===(i=y&&y.ya).spikesnap?(m=c.pointerX,v=c.pointerY):(m=n._offset+y.x,v=i._offset+y.y);var x,b,_=a.readability(y.color,d)<1.5?p.contrast(d):y.color,w=i.spikemode,T=i.spikethickness,k=i.spikecolor||_,A=g.getPxPosition(t,i);if(-1!==w.indexOf(\"toaxis\")||-1!==w.indexOf(\"across\")){if(-1!==w.indexOf(\"toaxis\")&&(x=A,b=m),-1!==w.indexOf(\"across\")){var M=i._counterDomainMin,S=i._counterDomainMax;\"free\"===i.anchor&&(M=Math.min(M,i.position),S=Math.max(S,i.position)),x=l.l+M*l.w,b=l.l+S*l.w}o.insert(\"line\",\":first-child\").attr({x1:x,x2:b,y1:v,y2:v,\"stroke-width\":T,stroke:k,\"stroke-dasharray\":h.dashStyle(i.spikedash,T)}).classed(\"spikeline\",!0).classed(\"crisp\",!0),o.insert(\"line\",\":first-child\").attr({x1:x,x2:b,y1:v,y2:v,\"stroke-width\":T+2,stroke:d}).classed(\"spikeline\",!0).classed(\"crisp\",!0)}-1!==w.indexOf(\"marker\")&&o.insert(\"circle\",\":first-child\").attr({cx:A+(\"right\"!==i.side?T:-T),cy:v,r:T,fill:k}).classed(\"spikeline\",!0)}if(f){var E,L,C=e.vLinePoint;n=C&&C.xa,i=C&&C.ya,\"cursor\"===n.spikesnap?(E=c.pointerX,L=c.pointerY):(E=n._offset+C.x,L=i._offset+C.y);var P,I,O=a.readability(C.color,d)<1.5?p.contrast(d):C.color,z=n.spikemode,D=n.spikethickness,R=n.spikecolor||O,F=g.getPxPosition(t,n);if(-1!==z.indexOf(\"toaxis\")||-1!==z.indexOf(\"across\")){if(-1!==z.indexOf(\"toaxis\")&&(P=F,I=L),-1!==z.indexOf(\"across\")){var B=n._counterDomainMin,N=n._counterDomainMax;\"free\"===n.anchor&&(B=Math.min(B,n.position),N=Math.max(N,n.position)),P=l.t+(1-N)*l.h,I=l.t+(1-B)*l.h}o.insert(\"line\",\":first-child\").attr({x1:E,x2:E,y1:P,y2:I,\"stroke-width\":D,stroke:R,\"stroke-dasharray\":h.dashStyle(n.spikedash,D)}).classed(\"spikeline\",!0).classed(\"crisp\",!0),o.insert(\"line\",\":first-child\").attr({x1:E,x2:E,y1:P,y2:I,\"stroke-width\":D+2,stroke:d}).classed(\"spikeline\",!0).classed(\"crisp\",!0)}-1!==z.indexOf(\"marker\")&&o.insert(\"circle\",\":first-child\").attr({cx:E,cy:F-(\"top\"!==n.side?D:-D),r:D,fill:R}).classed(\"spikeline\",!0)}}}function F(t,e){return!e||(e.vLinePoint!==t._spikepoints.vLinePoint||e.hLinePoint!==t._spikepoints.hLinePoint)}function B(t,e){return u.plainText(t||\"\",{len:e,allowedTags:[\"br\",\"sub\",\"sup\",\"b\",\"i\",\"em\"]})}function N(t,e,r){var n=e[t+\"a\"],i=e[t+\"Val\"],a=e.cd[0];if(\"category\"===n.type)i=n._categoriesMap[i];else if(\"date\"===n.type){var o=e.trace[t+\"periodalignment\"];if(o){var s=e.cd[e.index],l=s[t+\"Start\"];void 0===l&&(l=s[t]);var c=s[t+\"End\"];void 0===c&&(c=s[t]);var u=c-l;\"end\"===o?i+=u:\"middle\"===o&&(i+=u/2)}i=n.d2c(i)}return a&&a.t&&a.t.posLetter===n._id&&(\"group\"!==r.boxmode&&\"group\"!==r.violinmode||(i+=a.t.dPos)),i}function j(t){return t.offsetTop+t.clientTop}function U(t){return t.offsetLeft+t.clientLeft}function V(t,e){var r=t._fullLayout,n=e.getBoundingClientRect(),i=n.x,a=n.y,s=i+n.width,l=a+n.height,c=o.apply3DTransform(r._invTransform)(i,a),u=o.apply3DTransform(r._invTransform)(s,l),f=c[0],h=c[1],p=u[0],d=u[1];return{x:f,y:h,width:p-f,height:d-h,top:Math.min(h,d),left:Math.min(f,p),right:Math.max(f,p),bottom:Math.max(h,d)}}},{\"../../lib\":503,\"../../lib/events\":492,\"../../lib/override_cursor\":514,\"../../lib/svg_text_utils\":529,\"../../plots/cartesian/axes\":554,\"../../registry\":638,\"../color\":366,\"../dragelement\":385,\"../drawing\":388,\"../legend/defaults\":418,\"../legend/draw\":419,\"./constants\":400,\"./helpers\":402,\"@plotly/d3\":58,\"fast-isnumeric\":190,tinycolor2:312}],404:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../color\"),a=t(\"./helpers\").isUnifiedHover;e.exports=function(t,e,r,o){o=o||{};var s=e.legend;function l(t){o.font[t]||(o.font[t]=s?e.legend.font[t]:e.font[t])}e&&a(e.hovermode)&&(o.font||(o.font={}),l(\"size\"),l(\"family\"),l(\"color\"),s?(o.bgcolor||(o.bgcolor=i.combine(e.legend.bgcolor,e.paper_bgcolor)),o.bordercolor||(o.bordercolor=e.legend.bordercolor)):o.bgcolor||(o.bgcolor=e.paper_bgcolor)),r(\"hoverlabel.bgcolor\",o.bgcolor),r(\"hoverlabel.bordercolor\",o.bordercolor),r(\"hoverlabel.namelength\",o.namelength),n.coerceFont(r,\"hoverlabel.font\",o.font),r(\"hoverlabel.align\",o.align)}},{\"../../lib\":503,\"../color\":366,\"./helpers\":402}],405:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e){function r(r,a){return void 0!==e[r]?e[r]:n.coerce(t,e,i,r,a)}return r(\"clickmode\"),r(\"hovermode\")}},{\"../../lib\":503,\"./layout_attributes\":407}],406:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../dragelement\"),o=t(\"./helpers\"),s=t(\"./layout_attributes\"),l=t(\"./hover\");e.exports={moduleType:\"component\",name:\"fx\",constants:t(\"./constants\"),schema:{layout:s},attributes:t(\"./attributes\"),layoutAttributes:s,supplyLayoutGlobalDefaults:t(\"./layout_global_defaults\"),supplyDefaults:t(\"./defaults\"),supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\"),getDistanceFunction:o.getDistanceFunction,getClosest:o.getClosest,inbox:o.inbox,quadrature:o.quadrature,appendArrayPointValue:o.appendArrayPointValue,castHoverOption:function(t,e,r){return i.castOption(t,e,\"hoverlabel.\"+r)},castHoverinfo:function(t,e,r){return i.castOption(t,r,\"hoverinfo\",(function(r){return i.coerceHoverinfo({hoverinfo:r},{_module:t._module},e)}))},hover:l.hover,unhover:a.unhover,loneHover:l.loneHover,loneUnhover:function(t){var e=i.isD3Selection(t)?t:n.select(t);e.selectAll(\"g.hovertext\").remove(),e.selectAll(\".spikeline\").remove()},click:t(\"./click\")}},{\"../../lib\":503,\"../dragelement\":385,\"./attributes\":397,\"./calc\":398,\"./click\":399,\"./constants\":400,\"./defaults\":401,\"./helpers\":402,\"./hover\":403,\"./layout_attributes\":407,\"./layout_defaults\":408,\"./layout_global_defaults\":409,\"@plotly/d3\":58}],407:[function(t,e,r){\"use strict\";var n=t(\"./constants\"),i=t(\"../../plots/font_attributes\"),a=i({editType:\"none\"});a.family.dflt=n.HOVERFONT,a.size.dflt=n.HOVERFONTSIZE,e.exports={clickmode:{valType:\"flaglist\",flags:[\"event\",\"select\"],dflt:\"event\",editType:\"plot\",extras:[\"none\"]},dragmode:{valType:\"enumerated\",values:[\"zoom\",\"pan\",\"select\",\"lasso\",\"drawclosedpath\",\"drawopenpath\",\"drawline\",\"drawrect\",\"drawcircle\",\"orbit\",\"turntable\",!1],dflt:\"zoom\",editType:\"modebar\"},hovermode:{valType:\"enumerated\",values:[\"x\",\"y\",\"closest\",!1,\"x unified\",\"y unified\"],dflt:\"closest\",editType:\"modebar\"},hoverdistance:{valType:\"integer\",min:-1,dflt:20,editType:\"none\"},spikedistance:{valType:\"integer\",min:-1,dflt:-1,editType:\"none\"},hoverlabel:{bgcolor:{valType:\"color\",editType:\"none\"},bordercolor:{valType:\"color\",editType:\"none\"},font:a,grouptitlefont:i({editType:\"none\"}),align:{valType:\"enumerated\",values:[\"left\",\"right\",\"auto\"],dflt:\"auto\",editType:\"none\"},namelength:{valType:\"integer\",min:-1,dflt:15,editType:\"none\"},editType:\"none\"},selectdirection:{valType:\"enumerated\",values:[\"h\",\"v\",\"d\",\"any\"],dflt:\"any\",editType:\"none\"}}},{\"../../plots/font_attributes\":585,\"./constants\":400}],408:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\"),a=t(\"./hovermode_defaults\"),o=t(\"./hoverlabel_defaults\");e.exports=function(t,e){function r(r,a){return n.coerce(t,e,i,r,a)}a(t,e)&&(r(\"hoverdistance\"),r(\"spikedistance\")),\"select\"===r(\"dragmode\")&&r(\"selectdirection\");var s=e._has(\"mapbox\"),l=e._has(\"geo\"),c=e._basePlotModules.length;\"zoom\"===e.dragmode&&((s||l)&&1===c||s&&l&&2===c)&&(e.dragmode=\"pan\"),o(t,e,r),n.coerceFont(r,\"hoverlabel.grouptitlefont\",e.hoverlabel.font)}},{\"../../lib\":503,\"./hoverlabel_defaults\":404,\"./hovermode_defaults\":405,\"./layout_attributes\":407}],409:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./hoverlabel_defaults\"),a=t(\"./layout_attributes\");e.exports=function(t,e){i(t,e,(function(r,i){return n.coerce(t,e,a,r,i)}))}},{\"../../lib\":503,\"./hoverlabel_defaults\":404,\"./layout_attributes\":407}],410:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../lib/regex\").counter,a=t(\"../../plots/domain\").attributes,o=t(\"../../plots/cartesian/constants\").idRegex,s=t(\"../../plot_api/plot_template\"),l={rows:{valType:\"integer\",min:1,editType:\"plot\"},roworder:{valType:\"enumerated\",values:[\"top to bottom\",\"bottom to top\"],dflt:\"top to bottom\",editType:\"plot\"},columns:{valType:\"integer\",min:1,editType:\"plot\"},subplots:{valType:\"info_array\",freeLength:!0,dimensions:2,items:{valType:\"enumerated\",values:[i(\"xy\").toString(),\"\"],editType:\"plot\"},editType:\"plot\"},xaxes:{valType:\"info_array\",freeLength:!0,items:{valType:\"enumerated\",values:[o.x.toString(),\"\"],editType:\"plot\"},editType:\"plot\"},yaxes:{valType:\"info_array\",freeLength:!0,items:{valType:\"enumerated\",values:[o.y.toString(),\"\"],editType:\"plot\"},editType:\"plot\"},pattern:{valType:\"enumerated\",values:[\"independent\",\"coupled\"],dflt:\"coupled\",editType:\"plot\"},xgap:{valType:\"number\",min:0,max:1,editType:\"plot\"},ygap:{valType:\"number\",min:0,max:1,editType:\"plot\"},domain:a({name:\"grid\",editType:\"plot\",noGridCell:!0},{}),xside:{valType:\"enumerated\",values:[\"bottom\",\"bottom plot\",\"top plot\",\"top\"],dflt:\"bottom plot\",editType:\"plot\"},yside:{valType:\"enumerated\",values:[\"left\",\"left plot\",\"right plot\",\"right\"],dflt:\"left plot\",editType:\"plot\"},editType:\"plot\"};function c(t,e,r){var n=e[r+\"axes\"],i=Object.keys((t._splomAxes||{})[r]||{});return Array.isArray(n)?n:i.length?i:void 0}function u(t,e,r,n,i,a){var o=e(t+\"gap\",r),s=e(\"domain.\"+t);e(t+\"side\",n);for(var l=new Array(i),c=s[0],u=(s[1]-c)/(i-o),f=u*(1-o),h=0;h1){if(!h&&!p&&!d)\"independent\"===k(\"pattern\")&&(h=!0);m._hasSubplotGrid=h;var x,b,_=\"top to bottom\"===k(\"roworder\"),w=h?.2:.1,T=h?.3:.1;g&&e._splomGridDflt&&(x=e._splomGridDflt.xside,b=e._splomGridDflt.yside),m._domains={x:u(\"x\",k,w,x,y),y:u(\"y\",k,T,b,v,_)}}else delete e.grid}function k(t,e){return n.coerce(r,m,l,t,e)}},contentDefaults:function(t,e){var r=e.grid;if(r&&r._domains){var n,i,a,o,s,l,u,h=t.grid||{},p=e._subplots,d=r._hasSubplotGrid,g=r.rows,m=r.columns,v=\"independent\"===r.pattern,y=r._axisMap={};if(d){var x=h.subplots||[];l=r.subplots=new Array(g);var b=1;for(n=0;n1);if(!1===_&&(e.legend=void 0),(!1!==_||f.uirevision)&&(p(\"uirevision\",e.uirevision),!1!==_)){p(\"bgcolor\",e.paper_bgcolor),p(\"bordercolor\"),p(\"borderwidth\");var w,T,k,A=i.coerceFont(p,\"font\",e.font),M=\"h\"===p(\"orientation\");if(M?(w=0,n.getComponentMethod(\"rangeslider\",\"isVisible\")(t.xaxis)?(T=1.1,k=\"bottom\"):(T=-.1,k=\"top\")):(w=1.02,T=1,k=\"auto\"),p(\"traceorder\",x),c.isGrouped(e.legend)&&p(\"tracegroupgap\"),p(\"itemsizing\"),p(\"itemwidth\"),p(\"itemclick\"),p(\"itemdoubleclick\"),p(\"groupclick\"),p(\"x\",w),p(\"xanchor\"),p(\"y\",T),p(\"yanchor\",k),p(\"valign\"),i.noneOrAll(f,h,[\"x\",\"y\"]),p(\"title.text\")){p(\"title.side\",M?\"left\":\"top\");var S=i.extendFlat({},A,{size:i.bigFont(A.size)});i.coerceFont(p,\"title.font\",S)}}}},{\"../../lib\":503,\"../../plot_api/plot_template\":543,\"../../plots/attributes\":550,\"../../plots/layout_attributes\":610,\"../../registry\":638,\"./attributes\":416,\"./helpers\":422}],419:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../plots/plots\"),o=t(\"../../registry\"),s=t(\"../../lib/events\"),l=t(\"../dragelement\"),c=t(\"../drawing\"),u=t(\"../color\"),f=t(\"../../lib/svg_text_utils\"),h=t(\"./handle_click\"),p=t(\"./constants\"),d=t(\"../../constants/alignment\"),g=d.LINE_SPACING,m=d.FROM_TL,v=d.FROM_BR,y=t(\"./get_legend_data\"),x=t(\"./style\"),b=t(\"./helpers\");function _(t,e,r,n,i){var a=r.data()[0][0].trace,l={event:i,node:r.node(),curveNumber:a.index,expandedIndex:a._expandedIndex,data:t.data,layout:t.layout,frames:t._transitionData._frames,config:t._context,fullData:t._fullData,fullLayout:t._fullLayout};if(a._group&&(l.group=a._group),o.traceIs(a,\"pie-like\")&&(l.label=r.datum()[0].label),!1!==s.triggerHandler(t,\"plotly_legendclick\",l))if(1===n)e._clickTimeout=setTimeout((function(){t._fullLayout&&h(r,t,n)}),t._context.doubleClickDelay);else if(2===n){e._clickTimeout&&clearTimeout(e._clickTimeout),t._legendMouseDownTime=0,!1!==s.triggerHandler(t,\"plotly_legenddoubleclick\",l)&&h(r,t,n)}}function w(t,e,r){var n,a,s=t.data()[0][0],l=s.trace,u=o.traceIs(l,\"pie-like\"),h=!r._inHover&&e._context.edits.legendText&&!u,d=r._maxNameLength;s.groupTitle?(n=s.groupTitle.text,a=s.groupTitle.font):(a=r.font,r.entries?n=s.text:(n=u?s.label:l.name,l._meta&&(n=i.templateString(n,l._meta))));var g=i.ensureSingle(t,\"text\",\"legendtext\");g.attr(\"text-anchor\",\"start\").call(c.font,a).text(h?T(n,d):n);var m=r.itemwidth+2*p.itemGap;f.positionText(g,m,0),h?g.call(f.makeEditable,{gd:e,text:n}).call(A,t,e,r).on(\"edit\",(function(n){this.text(T(n,d)).call(A,t,e,r);var a=s.trace._fullInput||{},c={};if(o.hasTransform(a,\"groupby\")){var u=o.getTransformIndices(a,\"groupby\"),f=u[u.length-1],h=i.keyedContainer(a,\"transforms[\"+f+\"].styles\",\"target\",\"value.name\");h.set(s.trace._group,n),c=h.constructUpdate()}else c.name=n;return o.call(\"_guiRestyle\",e,c,l.index)})):A(g,t,e,r)}function T(t,e){var r=Math.max(4,e);if(t&&t.trim().length>=r/2)return t;for(var n=r-(t=t||\"\").length;n>0;n--)t+=\" \";return t}function k(t,e){var r,a=e._context.doubleClickDelay,o=1,s=i.ensureSingle(t,\"rect\",\"legendtoggle\",(function(t){e._context.staticPlot||t.style(\"cursor\",\"pointer\").attr(\"pointer-events\",\"all\"),t.call(u.fill,\"rgba(0,0,0,0)\")}));e._context.staticPlot||(s.on(\"mousedown\",(function(){(r=(new Date).getTime())-e._legendMouseDownTimea&&(o=Math.max(o-1,1)),_(e,r,t,o,n.event)}})))}function A(t,e,r,n,i){n._inHover&&t.attr(\"data-notex\",!0),f.convertToTspans(t,r,(function(){!function(t,e,r,n){var i=t.data()[0][0];if(!r._inHover&&i&&!i.trace.showlegend)return void t.remove();var a=t.select(\"g[class*=math-group]\"),o=a.node();r||(r=e._fullLayout.legend);var s,l=r.borderwidth;s=1===n?r.title.font:i.groupTitle?i.groupTitle.font:r.font;var u,h,d=s.size*g;if(o){var m=c.bBox(o);u=m.height,h=m.width,1===n?c.setTranslate(a,l,l+.75*u):c.setTranslate(a,0,.25*u)}else{var v=t.select(1===n?\".legendtitletext\":\".legendtext\"),y=f.lineCount(v),x=v.node();if(u=d*y,h=x?c.bBox(x).width:0,1===n)\"left\"===r.title.side&&(h+=2*p.itemGap),f.positionText(v,l+p.titlePad,l+d);else{var b=2*p.itemGap+r.itemwidth;i.groupTitle&&(b=p.itemGap,h-=r.itemwidth),f.positionText(v,b,-d*((y-1)/2-.3))}}1===n?(r._titleWidth=h,r._titleHeight=u):(i.lineHeight=d,i.height=Math.max(u,16)+3,i.width=h)}(e,r,n,i)}))}function M(t){return i.isRightAnchor(t)?\"right\":i.isCenterAnchor(t)?\"center\":\"left\"}function S(t){return i.isBottomAnchor(t)?\"bottom\":i.isMiddleAnchor(t)?\"middle\":\"top\"}e.exports=function(t,e){return e||(e=t._fullLayout.legend||{}),function(t,e){var r,s,f=t._fullLayout,h=\"legend\"+f._uid,d=e._inHover;d?(r=e.layer,h+=\"-hover\"):r=f._infolayer;if(!r)return;t._legendMouseDownTime||(t._legendMouseDownTime=0);if(d){if(!e.entries)return;s=y(e.entries,e)}else{if(!t.calcdata)return;s=f.showlegend&&y(t.calcdata,e)}var g=f.hiddenlabels||[];if(!(d||f.showlegend&&s.length))return r.selectAll(\".legend\").remove(),f._topdefs.select(\"#\"+h).remove(),a.autoMargin(t,\"legend\");var T=i.ensureSingle(r,\"g\",\"legend\",(function(t){d||t.attr(\"pointer-events\",\"all\")})),E=i.ensureSingleById(f._topdefs,\"clipPath\",h,(function(t){t.append(\"rect\")})),L=i.ensureSingle(T,\"rect\",\"bg\",(function(t){t.attr(\"shape-rendering\",\"crispEdges\")}));L.call(u.stroke,e.bordercolor).call(u.fill,e.bgcolor).style(\"stroke-width\",e.borderwidth+\"px\");var C=i.ensureSingle(T,\"g\",\"scrollbox\"),P=e.title;if(e._titleWidth=0,e._titleHeight=0,P.text){var I=i.ensureSingle(C,\"text\",\"legendtitletext\");I.attr(\"text-anchor\",\"start\").call(c.font,P.font).text(P.text),A(I,C,t,e,1)}else C.selectAll(\".legendtitletext\").remove();var O=i.ensureSingle(T,\"rect\",\"scrollbar\",(function(t){t.attr(p.scrollBarEnterAttrs).call(u.fill,p.scrollBarColor)})),z=C.selectAll(\"g.groups\").data(s);z.enter().append(\"g\").attr(\"class\",\"groups\"),z.exit().remove();var D=z.selectAll(\"g.traces\").data(i.identity);D.enter().append(\"g\").attr(\"class\",\"traces\"),D.exit().remove(),D.style(\"opacity\",(function(t){var e=t[0].trace;return o.traceIs(e,\"pie-like\")?-1!==g.indexOf(t[0].label)?.5:1:\"legendonly\"===e.visible?.5:1})).each((function(){n.select(this).call(w,t,e)})).call(x,t,e).each((function(){d||n.select(this).call(k,t)})),i.syncOrAsync([a.previousPromises,function(){return function(t,e,r,i){var a=t._fullLayout;i||(i=a.legend);var o=a._size,s=b.isVertical(i),l=b.isGrouped(i),u=i.borderwidth,f=2*u,h=p.itemGap,d=i.itemwidth+2*h,g=2*(u+h),m=S(i),v=i.y<0||0===i.y&&\"top\"===m,y=i.y>1||1===i.y&&\"bottom\"===m,x=i.tracegroupgap;i._maxHeight=Math.max(v||y?a.height/2:o.h,30);var _=0;i._width=0,i._height=0;var w=function(t){var e=0,r=0,n=t.title.side;n&&(-1!==n.indexOf(\"left\")&&(e=t._titleWidth),-1!==n.indexOf(\"top\")&&(r=t._titleHeight));return[e,r]}(i);if(s)r.each((function(t){var e=t[0].height;c.setTranslate(this,u+w[0],u+w[1]+i._height+e/2+h),i._height+=e,i._width=Math.max(i._width,t[0].width)})),_=d+i._width,i._width+=h+d+f,i._height+=g,l&&(e.each((function(t,e){c.setTranslate(this,0,e*i.tracegroupgap)})),i._height+=(i._lgroupsLength-1)*i.tracegroupgap);else{var T=M(i),k=i.x<0||0===i.x&&\"right\"===T,A=i.x>1||1===i.x&&\"left\"===T,E=y||v,L=a.width/2;i._maxWidth=Math.max(k?E&&\"left\"===T?o.l+o.w:L:A?E&&\"right\"===T?o.r+o.w:L:o.w,2*d);var C=0,P=0;r.each((function(t){var e=t[0].width+d;C=Math.max(C,e),P+=e})),_=null;var I=0;if(l){var O=0,z=0,D=0;e.each((function(){var t=0,e=0;n.select(this).selectAll(\"g.traces\").each((function(r){var n=r[0].width,i=r[0].height;c.setTranslate(this,w[0],w[1]+u+h+i/2+e),e+=i,t=Math.max(t,d+n)}));var r=t+h;z>0&&r+u+z>i._maxWidth?(I=Math.max(I,z),z=0,D+=O+x,O=e):O=Math.max(O,e),c.setTranslate(this,z,D),z+=r})),i._width=Math.max(I,z)+u,i._height=D+O+g}else{var R=r.size(),F=P+f+(R-1)*h=i._maxWidth&&(I=Math.max(I,U),N=0,j+=B,i._height+=B,B=0),c.setTranslate(this,w[0]+u+N,w[1]+u+j+e/2+h),U=N+r+h,N+=n,B=Math.max(B,e)})),F?(i._width=N+f,i._height=B+g):(i._width=Math.max(I,U)+f,i._height+=B+g)}}i._width=Math.ceil(Math.max(i._width+w[0],i._titleWidth+2*(u+p.titlePad))),i._height=Math.ceil(Math.max(i._height+w[1],i._titleHeight+2*(u+p.itemGap))),i._effHeight=Math.min(i._height,i._maxHeight);var V=t._context.edits,H=V.legendText||V.legendPosition;r.each((function(t){var e=n.select(this).select(\".legendtoggle\"),r=t[0].height,i=H?d:_||d+t[0].width;s||(i+=h/2),c.setRect(e,0,-r/2,i,r)}))}(t,z,D,e)},function(){var s,u,g,y,x=f._size,b=e.borderwidth;if(!d){if(function(t){var e=t._fullLayout.legend,r=M(e),n=S(e);return a.autoMargin(t,\"legend\",{x:e.x,y:e.y,l:e._width*m[r],r:e._width*v[r],b:e._effHeight*v[n],t:e._effHeight*m[n]})}(t))return;var w=x.l+x.w*e.x-m[M(e)]*e._width,k=x.t+x.h*(1-e.y)-m[S(e)]*e._effHeight;if(f.margin.autoexpand){var A=w,P=k;w=i.constrain(w,0,f.width-e._width),k=i.constrain(k,0,f.height-e._effHeight),w!==A&&i.log(\"Constrain legend.x to make legend fit inside graph\"),k!==P&&i.log(\"Constrain legend.y to make legend fit inside graph\")}c.setTranslate(T,w,k)}if(O.on(\".drag\",null),T.on(\"wheel\",null),d||e._height<=e._maxHeight||t._context.staticPlot){var I=e._effHeight;d&&(I=e._height),L.attr({width:e._width-b,height:I-b,x:b/2,y:b/2}),c.setTranslate(C,0,0),E.select(\"rect\").attr({width:e._width-2*b,height:I-2*b,x:b,y:b}),c.setClipUrl(C,h,t),c.setRect(O,0,0,0,0),delete e._scrollY}else{var z,D,R,F=Math.max(p.scrollBarMinHeight,e._effHeight*e._effHeight/e._height),B=e._effHeight-F-2*p.scrollBarMargin,N=e._height-e._effHeight,j=B/N,U=Math.min(e._scrollY||0,N);L.attr({width:e._width-2*b+p.scrollBarWidth+p.scrollBarMargin,height:e._effHeight-b,x:b/2,y:b/2}),E.select(\"rect\").attr({width:e._width-2*b+p.scrollBarWidth+p.scrollBarMargin,height:e._effHeight-2*b,x:b,y:b+U}),c.setClipUrl(C,h,t),q(U,F,j),T.on(\"wheel\",(function(){q(U=i.constrain(e._scrollY+n.event.deltaY/B*N,0,N),F,j),0!==U&&U!==N&&n.event.preventDefault()}));var V=n.behavior.drag().on(\"dragstart\",(function(){var t=n.event.sourceEvent;z=\"touchstart\"===t.type?t.changedTouches[0].clientY:t.clientY,R=U})).on(\"drag\",(function(){var t=n.event.sourceEvent;2===t.buttons||t.ctrlKey||(D=\"touchmove\"===t.type?t.changedTouches[0].clientY:t.clientY,q(U=function(t,e,r){var n=(r-e)/j+t;return i.constrain(n,0,N)}(R,z,D),F,j))}));O.call(V);var H=n.behavior.drag().on(\"dragstart\",(function(){var t=n.event.sourceEvent;\"touchstart\"===t.type&&(z=t.changedTouches[0].clientY,R=U)})).on(\"drag\",(function(){var t=n.event.sourceEvent;\"touchmove\"===t.type&&(D=t.changedTouches[0].clientY,q(U=function(t,e,r){var n=(e-r)/j+t;return i.constrain(n,0,N)}(R,z,D),F,j))}));C.call(H)}function q(r,n,i){e._scrollY=t._fullLayout.legend._scrollY=r,c.setTranslate(C,0,-r),c.setRect(O,e._width,p.scrollBarMargin+r*i,p.scrollBarWidth,n),E.select(\"rect\").attr(\"y\",b+r)}t._context.edits.legendPosition&&(T.classed(\"cursor-move\",!0),l.init({element:T.node(),gd:t,prepFn:function(){var t=c.getTranslate(T);g=t.x,y=t.y},moveFn:function(t,r){var n=g+t,i=y+r;c.setTranslate(T,n,i),s=l.align(n,0,x.l,x.l+x.w,e.xanchor),u=l.align(i,0,x.t+x.h,x.t,e.yanchor)},doneFn:function(){void 0!==s&&void 0!==u&&o.call(\"_guiRelayout\",t,{\"legend.x\":s,\"legend.y\":u})},clickFn:function(e,n){var i=r.selectAll(\"g.traces\").filter((function(){var t=this.getBoundingClientRect();return n.clientX>=t.left&&n.clientX<=t.right&&n.clientY>=t.top&&n.clientY<=t.bottom}));i.size()>0&&_(t,T,i,e,n)}}))}],t)}(t,e)}},{\"../../constants/alignment\":471,\"../../lib\":503,\"../../lib/events\":492,\"../../lib/svg_text_utils\":529,\"../../plots/plots\":619,\"../../registry\":638,\"../color\":366,\"../dragelement\":385,\"../drawing\":388,\"./constants\":417,\"./get_legend_data\":420,\"./handle_click\":421,\"./helpers\":422,\"./style\":424,\"@plotly/d3\":58}],420:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"./helpers\");e.exports=function(t,e){var r,a,o=e._inHover,s=i.isGrouped(e),l=i.isReversed(e),c={},u=[],f=!1,h={},p=0,d=0;function g(t,r){if(\"\"!==t&&i.isGrouped(e))-1===u.indexOf(t)?(u.push(t),f=!0,c[t]=[r]):c[t].push(r);else{var n=\"~~i\"+p;u.push(n),c[n]=[r],p++}}for(r=0;rA&&(k=A)}w[r][0]._groupMinRank=k,w[r][0]._preGroupSort=r}var M=function(t,e){return t.trace.legendrank-e.trace.legendrank||t._preSort-e._preSort};for(w.forEach((function(t,e){t[0]._preGroupSort=e})),w.sort((function(t,e){return t[0]._groupMinRank-e[0]._groupMinRank||t[0]._preGroupSort-e[0]._preGroupSort})),r=0;rr?r:t}e.exports=function(t,e,r){var v=e._fullLayout;r||(r=v.legend);var y=\"constant\"===r.itemsizing,x=r.itemwidth,b=(x+2*p.itemGap)/2,_=o(b,0),w=function(t,e,r,n){var i;if(t+1)i=t;else{if(!(e&&e.width>0))return 0;i=e.width}return y?n:Math.min(i,r)};function T(t,a,o){var u=t[0].trace,f=u.marker||{},h=f.line||{},p=o?u.visible&&u.type===o:i.traceIs(u,\"bar\"),d=n.select(a).select(\"g.legendpoints\").selectAll(\"path.legend\"+o).data(p?[t]:[]);d.enter().append(\"path\").classed(\"legend\"+o,!0).attr(\"d\",\"M6,6H-6V-6H6Z\").attr(\"transform\",_),d.exit().remove(),d.each((function(t){var i=n.select(this),a=t[0],o=w(a.mlw,f.line,5,2);i.style(\"stroke-width\",o+\"px\");var p=a.mcc;if(!r._inHover&&\"mc\"in a){var d=c(f),g=d.mid;void 0===g&&(g=(d.max+d.min)/2),p=s.tryColorscale(f,\"\")(g)}var v=p||a.mc||f.color,y=f.pattern,x=y&&s.getPatternAttr(y.shape,0,\"\");if(x){var b=s.getPatternAttr(y.bgcolor,0,null),_=s.getPatternAttr(y.fgcolor,0,null),T=y.fgopacity,k=m(y.size,8,10),A=m(y.solidity,.5,1),M=\"legend-\"+u.uid;i.call(s.pattern,\"legend\",e,M,x,k,A,p,y.fillmode,b,_,T)}else i.call(l.fill,v);o&&l.stroke(i,a.mlc||h.color)}))}function k(t,e,r){var o=t[0],s=o.trace,l=r?s.visible&&s.type===r:i.traceIs(s,r),c=n.select(e).select(\"g.legendpoints\").selectAll(\"path.legend\"+r).data(l?[t]:[]);if(c.enter().append(\"path\").classed(\"legend\"+r,!0).attr(\"d\",\"M6,6H-6V-6H6Z\").attr(\"transform\",_),c.exit().remove(),c.size()){var u=(s.marker||{}).line,p=w(h(u.width,o.pts),u,5,2),d=a.minExtend(s,{marker:{line:{width:p}}});d.marker.line.color=u.color;var g=a.minExtend(o,{trace:d});f(c,g,d)}}t.each((function(t){var e=n.select(this),i=a.ensureSingle(e,\"g\",\"layers\");i.style(\"opacity\",t[0].trace.opacity);var s=r.valign,l=t[0].lineHeight,c=t[0].height;if(\"middle\"!==s&&l&&c){var u={top:1,bottom:-1}[s]*(.5*(l-c+3));i.attr(\"transform\",o(0,u))}else i.attr(\"transform\",null);i.selectAll(\"g.legendfill\").data([t]).enter().append(\"g\").classed(\"legendfill\",!0),i.selectAll(\"g.legendlines\").data([t]).enter().append(\"g\").classed(\"legendlines\",!0);var f=i.selectAll(\"g.legendsymbols\").data([t]);f.enter().append(\"g\").classed(\"legendsymbols\",!0),f.selectAll(\"g.legendpoints\").data([t]).enter().append(\"g\").classed(\"legendpoints\",!0)})).each((function(t){var r,i=t[0].trace,o=[];if(i.visible)switch(i.type){case\"histogram2d\":case\"heatmap\":o=[[\"M-15,-2V4H15V-2Z\"]],r=!0;break;case\"choropleth\":case\"choroplethmapbox\":o=[[\"M-6,-6V6H6V-6Z\"]],r=!0;break;case\"densitymapbox\":o=[[\"M-6,0 a6,6 0 1,0 12,0 a 6,6 0 1,0 -12,0\"]],r=\"radial\";break;case\"cone\":o=[[\"M-6,2 A2,2 0 0,0 -6,6 V6L6,4Z\"],[\"M-6,-6 A2,2 0 0,0 -6,-2 L6,-4Z\"],[\"M-6,-2 A2,2 0 0,0 -6,2 L6,0Z\"]],r=!1;break;case\"streamtube\":o=[[\"M-6,2 A2,2 0 0,0 -6,6 H6 A2,2 0 0,1 6,2 Z\"],[\"M-6,-6 A2,2 0 0,0 -6,-2 H6 A2,2 0 0,1 6,-6 Z\"],[\"M-6,-2 A2,2 0 0,0 -6,2 H6 A2,2 0 0,1 6,-2 Z\"]],r=!1;break;case\"surface\":o=[[\"M-6,-6 A2,3 0 0,0 -6,0 H6 A2,3 0 0,1 6,-6 Z\"],[\"M-6,1 A2,3 0 0,1 -6,6 H6 A2,3 0 0,0 6,0 Z\"]],r=!0;break;case\"mesh3d\":o=[[\"M-6,6H0L-6,-6Z\"],[\"M6,6H0L6,-6Z\"],[\"M-6,-6H6L0,6Z\"]],r=!1;break;case\"volume\":o=[[\"M-6,6H0L-6,-6Z\"],[\"M6,6H0L6,-6Z\"],[\"M-6,-6H6L0,6Z\"]],r=!0;break;case\"isosurface\":o=[[\"M-6,6H0L-6,-6Z\"],[\"M6,6H0L6,-6Z\"],[\"M-6,-6 A12,24 0 0,0 6,-6 L0,6Z\"]],r=!1}var u=n.select(this).select(\"g.legendpoints\").selectAll(\"path.legend3dandfriends\").data(o);u.enter().append(\"path\").classed(\"legend3dandfriends\",!0).attr(\"transform\",_).style(\"stroke-miterlimit\",1),u.exit().remove(),u.each((function(t,o){var u,f=n.select(this),h=c(i),p=h.colorscale,g=h.reversescale;if(p){if(!r){var m=p.length;u=0===o?p[g?m-1:0][1]:1===o?p[g?0:m-1][1]:p[Math.floor((m-1)/2)][1]}}else{var v=i.vertexcolor||i.facecolor||i.color;u=a.isArrayOrTypedArray(v)?v[o]||v[0]:v}f.attr(\"d\",t[0]),u?f.call(l.fill,u):f.call((function(t){if(t.size()){var n=\"legendfill-\"+i.uid;s.gradient(t,e,n,d(g,\"radial\"===r),p,\"fill\")}}))}))})).each((function(t){var e=t[0].trace,r=\"waterfall\"===e.type;if(t[0]._distinct&&r){var i=t[0].trace[t[0].dir].marker;return t[0].mc=i.color,t[0].mlw=i.line.width,t[0].mlc=i.line.color,T(t,this,\"waterfall\")}var a=[];e.visible&&r&&(a=t[0].hasTotals?[[\"increasing\",\"M-6,-6V6H0Z\"],[\"totals\",\"M6,6H0L-6,-6H-0Z\"],[\"decreasing\",\"M6,6V-6H0Z\"]]:[[\"increasing\",\"M-6,-6V6H6Z\"],[\"decreasing\",\"M6,6V-6H-6Z\"]]);var o=n.select(this).select(\"g.legendpoints\").selectAll(\"path.legendwaterfall\").data(a);o.enter().append(\"path\").classed(\"legendwaterfall\",!0).attr(\"transform\",_).style(\"stroke-miterlimit\",1),o.exit().remove(),o.each((function(t){var r=n.select(this),i=e[t[0]].marker,a=w(void 0,i.line,5,2);r.attr(\"d\",t[1]).style(\"stroke-width\",a+\"px\").call(l.fill,i.color),a&&r.call(l.stroke,i.line.color)}))})).each((function(t){T(t,this,\"funnel\")})).each((function(t){T(t,this)})).each((function(t){var r=t[0].trace,o=n.select(this).select(\"g.legendpoints\").selectAll(\"path.legendbox\").data(r.visible&&i.traceIs(r,\"box-violin\")?[t]:[]);o.enter().append(\"path\").classed(\"legendbox\",!0).attr(\"d\",\"M6,6H-6V-6H6Z\").attr(\"transform\",_),o.exit().remove(),o.each((function(){var t=n.select(this);if(\"all\"!==r.boxpoints&&\"all\"!==r.points||0!==l.opacity(r.fillcolor)||0!==l.opacity((r.line||{}).color)){var i=w(void 0,r.line,5,2);t.style(\"stroke-width\",i+\"px\").call(l.fill,r.fillcolor),i&&l.stroke(t,r.line.color)}else{var c=a.minExtend(r,{marker:{size:y?12:a.constrain(r.marker.size,2,16),sizeref:1,sizemin:1,sizemode:\"diameter\"}});o.call(s.pointStyle,c,e)}}))})).each((function(t){k(t,this,\"funnelarea\")})).each((function(t){k(t,this,\"pie\")})).each((function(t){var r,i,o=g(t),l=o.showFill,f=o.showLine,h=o.showGradientLine,p=o.showGradientFill,m=o.anyFill,v=o.anyLine,y=t[0],b=y.trace,_=c(b),T=_.colorscale,k=_.reversescale,A=u.hasMarkers(b)||!m?\"M5,0\":v?\"M5,-2\":\"M5,-3\",M=n.select(this),S=M.select(\".legendfill\").selectAll(\"path\").data(l||p?[t]:[]);if(S.enter().append(\"path\").classed(\"js-fill\",!0),S.exit().remove(),S.attr(\"d\",A+\"h\"+x+\"v6h-\"+x+\"z\").call(l?s.fillGroupStyle:function(t){if(t.size()){var r=\"legendfill-\"+b.uid;s.gradient(t,e,r,d(k),T,\"fill\")}}),f||h){var E=w(void 0,b.line,10,5);i=a.minExtend(b,{line:{width:E}}),r=[a.minExtend(y,{trace:i})]}var L=M.select(\".legendlines\").selectAll(\"path\").data(f||h?[r]:[]);L.enter().append(\"path\").classed(\"js-line\",!0),L.exit().remove(),L.attr(\"d\",A+(h?\"l\"+x+\",0.0001\":\"h\"+x)).call(f?s.lineGroupStyle:function(t){if(t.size()){var r=\"legendline-\"+b.uid;s.lineGroupStyle(t),s.gradient(t,e,r,d(k),T,\"stroke\")}})})).each((function(t){var r,i,o=g(t),l=o.anyFill,c=o.anyLine,f=o.showLine,h=o.showMarker,p=t[0],d=p.trace,m=!h&&!c&&!l&&u.hasText(d);function v(t,e,r,n){var i=a.nestedProperty(d,t).get(),o=a.isArrayOrTypedArray(i)&&e?e(i):i;if(y&&o&&void 0!==n&&(o=n),r){if(or[1])return r[1]}return o}function x(t){return p._distinct&&p.index&&t[p.index]?t[p.index]:t[0]}if(h||m||f){var b={},w={};if(h){b.mc=v(\"marker.color\",x),b.mx=v(\"marker.symbol\",x),b.mo=v(\"marker.opacity\",a.mean,[.2,1]),b.mlc=v(\"marker.line.color\",x),b.mlw=v(\"marker.line.width\",a.mean,[0,5],2),w.marker={sizeref:1,sizemin:1,sizemode:\"diameter\"};var T=v(\"marker.size\",a.mean,[2,16],12);b.ms=T,w.marker.size=T}f&&(w.line={width:v(\"line.width\",x,[0,10],5)}),m&&(b.tx=\"Aa\",b.tp=v(\"textposition\",x),b.ts=10,b.tc=v(\"textfont.color\",x),b.tf=v(\"textfont.family\",x)),r=[a.minExtend(p,b)],(i=a.minExtend(d,w)).selectedpoints=null,i.texttemplate=null}var k=n.select(this).select(\"g.legendpoints\"),A=k.selectAll(\"path.scatterpts\").data(h?r:[]);A.enter().insert(\"path\",\":first-child\").classed(\"scatterpts\",!0).attr(\"transform\",_),A.exit().remove(),A.call(s.pointStyle,i,e),h&&(r[0].mrc=3);var M=k.selectAll(\"g.pointtext\").data(m?r:[]);M.enter().append(\"g\").classed(\"pointtext\",!0).append(\"text\").attr(\"transform\",_),M.exit().remove(),M.selectAll(\"text\").call(s.textPointStyle,i,e)})).each((function(t){var e=t[0].trace,r=n.select(this).select(\"g.legendpoints\").selectAll(\"path.legendcandle\").data(e.visible&&\"candlestick\"===e.type?[t,t]:[]);r.enter().append(\"path\").classed(\"legendcandle\",!0).attr(\"d\",(function(t,e){return e?\"M-15,0H-8M-8,6V-6H8Z\":\"M15,0H8M8,-6V6H-8Z\"})).attr(\"transform\",_).style(\"stroke-miterlimit\",1),r.exit().remove(),r.each((function(t,r){var i=n.select(this),a=e[r?\"increasing\":\"decreasing\"],o=w(void 0,a.line,5,2);i.style(\"stroke-width\",o+\"px\").call(l.fill,a.fillcolor),o&&l.stroke(i,a.line.color)}))})).each((function(t){var e=t[0].trace,r=n.select(this).select(\"g.legendpoints\").selectAll(\"path.legendohlc\").data(e.visible&&\"ohlc\"===e.type?[t,t]:[]);r.enter().append(\"path\").classed(\"legendohlc\",!0).attr(\"d\",(function(t,e){return e?\"M-15,0H0M-8,-6V0\":\"M15,0H0M8,6V0\"})).attr(\"transform\",_).style(\"stroke-miterlimit\",1),r.exit().remove(),r.each((function(t,r){var i=n.select(this),a=e[r?\"increasing\":\"decreasing\"],o=w(void 0,a.line,5,2);i.style(\"fill\",\"none\").call(s.dashLine,a.line.dash,o),o&&l.stroke(i,a.line.color)}))}))}},{\"../../lib\":503,\"../../registry\":638,\"../../traces/pie/helpers\":905,\"../../traces/pie/style_one\":911,\"../../traces/scatter/subtypes\":951,\"../color\":366,\"../colorscale/helpers\":377,\"../drawing\":388,\"./constants\":417,\"@plotly/d3\":58}],425:[function(t,e,r){\"use strict\";t(\"./constants\");e.exports={editType:\"modebar\",orientation:{valType:\"enumerated\",values:[\"v\",\"h\"],dflt:\"h\",editType:\"modebar\"},bgcolor:{valType:\"color\",editType:\"modebar\"},color:{valType:\"color\",editType:\"modebar\"},activecolor:{valType:\"color\",editType:\"modebar\"},uirevision:{valType:\"any\",editType:\"none\"},add:{valType:\"string\",arrayOk:!0,dflt:\"\",editType:\"modebar\"},remove:{valType:\"string\",arrayOk:!0,dflt:\"\",editType:\"modebar\"}}},{\"./constants\":427}],426:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../plots/plots\"),a=t(\"../../plots/cartesian/axis_ids\"),o=t(\"../../fonts/ploticon\"),s=t(\"../shapes/draw\").eraseActiveShape,l=t(\"../../lib\"),c=l._,u=e.exports={};function f(t,e){var r,i,o=e.currentTarget,s=o.getAttribute(\"data-attr\"),l=o.getAttribute(\"data-val\")||!0,c=t._fullLayout,u={},f=a.list(t,null,!0),h=c._cartesianSpikesEnabled;if(\"zoom\"===s){var p,d=\"in\"===l?.5:2,g=(1+d)/2,m=(1-d)/2;for(i=0;i1?(I=[\"toggleHover\"],O=[\"resetViews\"]):v?(P=[\"zoomInGeo\",\"zoomOutGeo\"],I=[\"hoverClosestGeo\"],O=[\"resetGeo\"]):m?(I=[\"hoverClosest3d\"],O=[\"resetCameraDefault3d\",\"resetCameraLastSave3d\"]):w?(P=[\"zoomInMapbox\",\"zoomOutMapbox\"],I=[\"toggleHover\"],O=[\"resetViewMapbox\"]):b?I=[\"hoverClosestGl2d\"]:y?I=[\"hoverClosestPie\"]:A?(I=[\"hoverClosestCartesian\",\"hoverCompareCartesian\"],O=[\"resetViewSankey\"]):I=[\"toggleHover\"];g&&(I=[\"toggleSpikelines\",\"hoverClosestCartesian\",\"hoverCompareCartesian\"]);(function(t){for(var e=0;e0)){var g=function(t,e,r){for(var n=r.filter((function(r){return e[r].anchor===t._id})),i=0,a=0;a=n.max)e=F[r+1];else if(t=n.pmax)e=F[r+1];else if(t0?h+c:c;return{ppad:c,ppadplus:u?d:g,ppadminus:u?g:d}}return{ppad:c}}function u(t,e,r,n,i){var s=\"category\"===t.type||\"multicategory\"===t.type?t.r2c:t.d2c;if(void 0!==e)return[s(e),s(r)];if(n){var l,c,u,f,h=1/0,p=-1/0,d=n.match(a.segmentRE);for(\"date\"===t.type&&(s=o.decodeDate(s)),l=0;lp&&(p=f)));return p>=h?[h,p]:void 0}}e.exports=function(t){var e=t._fullLayout,r=n.filterVisible(e.shapes);if(r.length&&t._fullData.length)for(var o=0;oy?(k=f,E=\"y0\",A=y,L=\"y1\"):(k=y,E=\"y1\",A=f,L=\"y0\");Z(n),Q(s,r),function(t,e,r){var n=e.xref,i=e.yref,o=a.getFromId(r,n),s=a.getFromId(r,i),l=\"\";\"paper\"===n||o.autorange||(l+=n);\"paper\"===i||s.autorange||(l+=i);u.setClipUrl(t,l?\"clip\"+r._fullLayout._uid+l:null,r)}(e,r,t),X.moveFn=\"move\"===O?J:K,X.altKey=n.altKey},doneFn:function(){if(v(t))return;p(e),$(s),b(e,t,r),n.call(\"_guiRelayout\",t,l.getUpdateObj())},clickFn:function(){if(v(t))return;$(s)}};function Z(r){if(v(t))O=null;else if(R)O=\"path\"===r.target.tagName?\"move\":\"start-point\"===r.target.attributes[\"data-line-point\"].value?\"resize-over-start-point\":\"resize-over-end-point\";else{var n=X.element.getBoundingClientRect(),i=n.right-n.left,a=n.bottom-n.top,o=r.clientX-n.left,s=r.clientY-n.top,l=!F&&i>10&&a>10&&!r.shiftKey?h.getCursor(o/i,1-s/a):\"move\";p(e,l),O=l.split(\"-\")[0]}}function J(n,i){if(\"path\"===r.type){var a=function(t){return t},o=a,l=a;z?B(\"xanchor\",r.xanchor=G(x+n)):(o=function(t){return G(H(t)+n)},N&&\"date\"===N.type&&(o=g.encodeDate(o))),D?B(\"yanchor\",r.yanchor=Y(T+i)):(l=function(t){return Y(q(t)+i)},U&&\"date\"===U.type&&(l=g.encodeDate(l))),B(\"path\",r.path=w(I,o,l))}else z?B(\"xanchor\",r.xanchor=G(x+n)):(B(\"x0\",r.x0=G(c+n)),B(\"x1\",r.x1=G(m+n))),D?B(\"yanchor\",r.yanchor=Y(T+i)):(B(\"y0\",r.y0=Y(f+i)),B(\"y1\",r.y1=Y(y+i)));e.attr(\"d\",_(t,r)),Q(s,r)}function K(n,i){if(F){var a=function(t){return t},o=a,l=a;z?B(\"xanchor\",r.xanchor=G(x+n)):(o=function(t){return G(H(t)+n)},N&&\"date\"===N.type&&(o=g.encodeDate(o))),D?B(\"yanchor\",r.yanchor=Y(T+i)):(l=function(t){return Y(q(t)+i)},U&&\"date\"===U.type&&(l=g.encodeDate(l))),B(\"path\",r.path=w(I,o,l))}else if(R){if(\"resize-over-start-point\"===O){var u=c+n,h=D?f-i:f+i;B(\"x0\",r.x0=z?u:G(u)),B(\"y0\",r.y0=D?h:Y(h))}else if(\"resize-over-end-point\"===O){var p=m+n,d=D?y-i:y+i;B(\"x1\",r.x1=z?p:G(p)),B(\"y1\",r.y1=D?d:Y(d))}}else{var v=function(t){return-1!==O.indexOf(t)},b=v(\"n\"),j=v(\"s\"),V=v(\"w\"),W=v(\"e\"),X=b?k+i:k,Z=j?A+i:A,J=V?M+n:M,K=W?S+n:S;D&&(b&&(X=k-i),j&&(Z=A-i)),(!D&&Z-X>10||D&&X-Z>10)&&(B(E,r[E]=D?X:Y(X)),B(L,r[L]=D?Z:Y(Z))),K-J>10&&(B(C,r[C]=z?J:G(J)),B(P,r[P]=z?K:G(K)))}e.attr(\"d\",_(t,r)),Q(s,r)}function Q(t,e){(z||D)&&function(){var r=\"path\"!==e.type,n=t.selectAll(\".visual-cue\").data([0]);n.enter().append(\"path\").attr({fill:\"#fff\",\"fill-rule\":\"evenodd\",stroke:\"#000\",\"stroke-width\":1}).classed(\"visual-cue\",!0);var a=H(z?e.xanchor:i.midRange(r?[e.x0,e.x1]:g.extractPathCoords(e.path,d.paramIsX))),o=q(D?e.yanchor:i.midRange(r?[e.y0,e.y1]:g.extractPathCoords(e.path,d.paramIsY)));if(a=g.roundPositionForSharpStrokeRendering(a,1),o=g.roundPositionForSharpStrokeRendering(o,1),z&&D){var s=\"M\"+(a-1-1)+\",\"+(o-1-1)+\"h-8v2h8 v8h2v-8 h8v-2h-8 v-8h-2 Z\";n.attr(\"d\",s)}else if(z){var l=\"M\"+(a-1-1)+\",\"+(o-9-1)+\"v18 h2 v-18 Z\";n.attr(\"d\",l)}else{var c=\"M\"+(a-9-1)+\",\"+(o-1-1)+\"h18 v2 h-18 Z\";n.attr(\"d\",c)}}()}function $(t){t.selectAll(\".visual-cue\").remove()}h.init(X),W.node().onmousemove=Z}(t,z,l,e,r,O):!0===l.editable&&z.style(\"pointer-events\",P||c.opacity(S)*M<=.5?\"stroke\":\"all\");z.node().addEventListener(\"click\",(function(){return function(t,e){if(!y(t))return;var r=+e.node().getAttribute(\"data-index\");if(r>=0){if(r===t._fullLayout._activeShapeIndex)return void T(t);t._fullLayout._activeShapeIndex=r,t._fullLayout._deactivateShape=T,m(t)}}(t,z)}))}}function b(t,e,r){var n=(r.xref+r.yref).replace(/paper/g,\"\").replace(/[xyz][1-9]* *domain/g,\"\");u.setClipUrl(t,n?\"clip\"+e._fullLayout._uid+n:null,e)}function _(t,e){var r,n,o,s,l,c,u,f,h=e.type,p=a.getRefType(e.xref),m=a.getRefType(e.yref),v=a.getFromId(t,e.xref),y=a.getFromId(t,e.yref),x=t._fullLayout._size;if(v?\"domain\"===p?n=function(t){return v._offset+v._length*t}:(r=g.shapePositionToRange(v),n=function(t){return v._offset+v.r2p(r(t,!0))}):n=function(t){return x.l+x.w*t},y?\"domain\"===m?s=function(t){return y._offset+y._length*(1-t)}:(o=g.shapePositionToRange(y),s=function(t){return y._offset+y.r2p(o(t,!0))}):s=function(t){return x.t+x.h*(1-t)},\"path\"===h)return v&&\"date\"===v.type&&(n=g.decodeDate(n)),y&&\"date\"===y.type&&(s=g.decodeDate(s)),function(t,e,r){var n=t.path,a=t.xsizemode,o=t.ysizemode,s=t.xanchor,l=t.yanchor;return n.replace(d.segmentRE,(function(t){var n=0,c=t.charAt(0),u=d.paramIsX[c],f=d.paramIsY[c],h=d.numParams[c],p=t.substr(1).replace(d.paramRE,(function(t){return u[n]?t=\"pixel\"===a?e(s)+Number(t):e(t):f[n]&&(t=\"pixel\"===o?r(l)-Number(t):r(t)),++n>h&&(t=\"X\"),t}));return n>h&&(p=p.replace(/[\\s,]*X.*/,\"\"),i.log(\"Ignoring extra params in segment \"+t)),c+p}))}(e,n,s);if(\"pixel\"===e.xsizemode){var b=n(e.xanchor);l=b+e.x0,c=b+e.x1}else l=n(e.x0),c=n(e.x1);if(\"pixel\"===e.ysizemode){var _=s(e.yanchor);u=_-e.y0,f=_-e.y1}else u=s(e.y0),f=s(e.y1);if(\"line\"===h)return\"M\"+l+\",\"+u+\"L\"+c+\",\"+f;if(\"rect\"===h)return\"M\"+l+\",\"+u+\"H\"+c+\"V\"+f+\"H\"+l+\"Z\";var w=(l+c)/2,T=(u+f)/2,k=Math.abs(w-l),A=Math.abs(T-u),M=\"A\"+k+\",\"+A,S=w+k+\",\"+T;return\"M\"+S+M+\" 0 1,1 \"+(w+\",\"+(T-A))+M+\" 0 0,1 \"+S+\"Z\"}function w(t,e,r){return t.replace(d.segmentRE,(function(t){var n=0,i=t.charAt(0),a=d.paramIsX[i],o=d.paramIsY[i],s=d.numParams[i];return i+t.substr(1).replace(d.paramRE,(function(t){return n>=s||(a[n]?t=e(t):o[n]&&(t=r(t)),n++),t}))}))}function T(t){y(t)&&(t._fullLayout._activeShapeIndex>=0&&(l(t),delete t._fullLayout._activeShapeIndex,m(t)))}e.exports={draw:m,drawOne:x,eraseActiveShape:function(t){if(!y(t))return;l(t);var e=t._fullLayout._activeShapeIndex,r=(t.layout||{}).shapes||[];if(e=0&&f(v),r.attr(\"d\",g(e)),A&&!h)&&(k=function(t,e){for(var r=0;r1&&(2!==t.length||\"Z\"!==t[1][0])&&(0===T&&(t[0][0]=\"M\"),e[w]=t,y(),x())}}()}}function I(t,r){!function(t,r){if(e.length)for(var n=0;n0&&l0&&(s=s.transition().duration(e.transition.duration).ease(e.transition.easing)),s.attr(\"transform\",l(o-.5*f.gripWidth,e._dims.currentValueTotalHeight))}}function E(t,e){var r=t._dims;return r.inputAreaStart+f.stepInset+(r.inputAreaLength-2*f.stepInset)*Math.min(1,Math.max(0,e))}function L(t,e){var r=t._dims;return Math.min(1,Math.max(0,(e-f.stepInset-r.inputAreaStart)/(r.inputAreaLength-2*f.stepInset-2*r.inputAreaStart)))}function C(t,e,r){var n=r._dims,i=s.ensureSingle(t,\"rect\",f.railTouchRectClass,(function(n){n.call(A,e,t,r).style(\"pointer-events\",\"all\")}));i.attr({width:n.inputAreaLength,height:Math.max(n.inputAreaWidth,f.tickOffset+r.ticklen+n.labelHeight)}).call(a.fill,r.bgcolor).attr(\"opacity\",0),o.setTranslate(i,0,n.currentValueTotalHeight)}function P(t,e){var r=e._dims,n=r.inputAreaLength-2*f.railInset,i=s.ensureSingle(t,\"rect\",f.railRectClass);i.attr({width:n,height:f.railWidth,rx:f.railRadius,ry:f.railRadius,\"shape-rendering\":\"crispEdges\"}).call(a.stroke,e.bordercolor).call(a.fill,e.bgcolor).style(\"stroke-width\",e.borderwidth+\"px\"),o.setTranslate(i,f.railInset,.5*(r.inputAreaWidth-f.railWidth)+r.currentValueTotalHeight)}e.exports=function(t){var e=t._fullLayout,r=function(t,e){for(var r=t[f.name],n=[],i=0;i0?[0]:[]);function s(e){e._commandObserver&&(e._commandObserver.remove(),delete e._commandObserver),i.autoMargin(t,m(e))}if(a.enter().append(\"g\").classed(f.containerClassName,!0).style(\"cursor\",\"ew-resize\"),a.exit().each((function(){n.select(this).selectAll(\"g.\"+f.groupClassName).each(s)})).remove(),0!==r.length){var l=a.selectAll(\"g.\"+f.groupClassName).data(r,v);l.enter().append(\"g\").classed(f.groupClassName,!0),l.exit().each(s).remove();for(var c=0;c0||h<0){var v={left:[-d,0],right:[d,0],top:[0,-d],bottom:[0,d]}[b.side];e.attr(\"transform\",l(v[0],v[1]))}}}return R.call(F),O&&(E?R.on(\".opacity\",null):(A=0,M=!0,R.text(y).on(\"mouseover.opacity\",(function(){n.select(this).transition().duration(h.SHOW_PLACEHOLDER).style(\"opacity\",1)})).on(\"mouseout.opacity\",(function(){n.select(this).transition().duration(h.HIDE_PLACEHOLDER).style(\"opacity\",0)}))),R.call(f.makeEditable,{gd:t}).on(\"edit\",(function(e){void 0!==x?o.call(\"_guiRestyle\",t,v,e,x):o.call(\"_guiRelayout\",t,v,e)})).on(\"cancel\",(function(){this.text(this.attr(\"data-unformatted\")).call(F)})).on(\"input\",(function(t){this.text(t||\" \").call(f.positionText,_.x,_.y)}))),R.classed(\"js-placeholder\",M),T}}},{\"../../constants/alignment\":471,\"../../constants/interactions\":478,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../../plots/plots\":619,\"../../registry\":638,\"../color\":366,\"../drawing\":388,\"@plotly/d3\":58,\"fast-isnumeric\":190}],465:[function(t,e,r){\"use strict\";var n=t(\"../../plots/font_attributes\"),i=t(\"../color/attributes\"),a=t(\"../../lib/extend\").extendFlat,o=t(\"../../plot_api/edit_types\").overrideAll,s=t(\"../../plots/pad_attributes\"),l=t(\"../../plot_api/plot_template\").templatedArray,c=l(\"button\",{visible:{valType:\"boolean\"},method:{valType:\"enumerated\",values:[\"restyle\",\"relayout\",\"animate\",\"update\",\"skip\"],dflt:\"restyle\"},args:{valType:\"info_array\",freeLength:!0,items:[{valType:\"any\"},{valType:\"any\"},{valType:\"any\"}]},args2:{valType:\"info_array\",freeLength:!0,items:[{valType:\"any\"},{valType:\"any\"},{valType:\"any\"}]},label:{valType:\"string\",dflt:\"\"},execute:{valType:\"boolean\",dflt:!0}});e.exports=o(l(\"updatemenu\",{_arrayAttrRegexps:[/^updatemenus\\[(0|[1-9][0-9]+)\\]\\.buttons/],visible:{valType:\"boolean\"},type:{valType:\"enumerated\",values:[\"dropdown\",\"buttons\"],dflt:\"dropdown\"},direction:{valType:\"enumerated\",values:[\"left\",\"right\",\"up\",\"down\"],dflt:\"down\"},active:{valType:\"integer\",min:-1,dflt:0},showactive:{valType:\"boolean\",dflt:!0},buttons:c,x:{valType:\"number\",min:-2,max:3,dflt:-.05},xanchor:{valType:\"enumerated\",values:[\"auto\",\"left\",\"center\",\"right\"],dflt:\"right\"},y:{valType:\"number\",min:-2,max:3,dflt:1},yanchor:{valType:\"enumerated\",values:[\"auto\",\"top\",\"middle\",\"bottom\"],dflt:\"top\"},pad:a(s({editType:\"arraydraw\"}),{}),font:n({}),bgcolor:{valType:\"color\"},bordercolor:{valType:\"color\",dflt:i.borderLine},borderwidth:{valType:\"number\",min:0,dflt:1,editType:\"arraydraw\"}}),\"arraydraw\",\"from-root\")},{\"../../lib/extend\":493,\"../../plot_api/edit_types\":536,\"../../plot_api/plot_template\":543,\"../../plots/font_attributes\":585,\"../../plots/pad_attributes\":618,\"../color/attributes\":365}],466:[function(t,e,r){\"use strict\";e.exports={name:\"updatemenus\",containerClassName:\"updatemenu-container\",headerGroupClassName:\"updatemenu-header-group\",headerClassName:\"updatemenu-header\",headerArrowClassName:\"updatemenu-header-arrow\",dropdownButtonGroupClassName:\"updatemenu-dropdown-button-group\",dropdownButtonClassName:\"updatemenu-dropdown-button\",buttonClassName:\"updatemenu-button\",itemRectClassName:\"updatemenu-item-rect\",itemTextClassName:\"updatemenu-item-text\",menuIndexAttrName:\"updatemenu-active-index\",autoMarginIdRoot:\"updatemenu-\",blankHeaderOpts:{label:\" \"},minWidth:30,minHeight:30,textPadX:24,arrowPadX:16,rx:2,ry:2,textOffsetX:12,textOffsetY:3,arrowOffsetX:4,gapButtonHeader:5,gapButton:2,activeColor:\"#F4FAFF\",hoverColor:\"#F4FAFF\",arrowSymbol:{left:\"\\u25c4\",right:\"\\u25ba\",up:\"\\u25b2\",down:\"\\u25bc\"}}},{}],467:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../plots/array_container_defaults\"),a=t(\"./attributes\"),o=t(\"./constants\").name,s=a.buttons;function l(t,e,r){function o(r,i){return n.coerce(t,e,a,r,i)}o(\"visible\",i(t,e,{name:\"buttons\",handleItemDefaults:c}).length>0)&&(o(\"active\"),o(\"direction\"),o(\"type\"),o(\"showactive\"),o(\"x\"),o(\"y\"),n.noneOrAll(t,e,[\"x\",\"y\"]),o(\"xanchor\"),o(\"yanchor\"),o(\"pad.t\"),o(\"pad.r\"),o(\"pad.b\"),o(\"pad.l\"),n.coerceFont(o,\"font\",r.font),o(\"bgcolor\",r.paper_bgcolor),o(\"bordercolor\"),o(\"borderwidth\"))}function c(t,e){function r(r,i){return n.coerce(t,e,s,r,i)}r(\"visible\",\"skip\"===t.method||Array.isArray(t.args))&&(r(\"method\"),r(\"args\"),r(\"args2\"),r(\"label\"),r(\"execute\"))}e.exports=function(t,e){i(t,e,{name:o,handleItemDefaults:l})}},{\"../../lib\":503,\"../../plots/array_container_defaults\":549,\"./attributes\":465,\"./constants\":466}],468:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../plots/plots\"),a=t(\"../color\"),o=t(\"../drawing\"),s=t(\"../../lib\"),l=t(\"../../lib/svg_text_utils\"),c=t(\"../../plot_api/plot_template\").arrayEditor,u=t(\"../../constants/alignment\").LINE_SPACING,f=t(\"./constants\"),h=t(\"./scrollbox\");function p(t){return t._index}function d(t,e){return+t.attr(f.menuIndexAttrName)===e._index}function g(t,e,r,n,i,a,o,s){e.active=o,c(t.layout,f.name,e).applyUpdate(\"active\",o),\"buttons\"===e.type?v(t,n,null,null,e):\"dropdown\"===e.type&&(i.attr(f.menuIndexAttrName,\"-1\"),m(t,n,i,a,e),s||v(t,n,i,a,e))}function m(t,e,r,n,i){var a=s.ensureSingle(e,\"g\",f.headerClassName,(function(t){t.style(\"pointer-events\",\"all\")})),l=i._dims,c=i.active,u=i.buttons[c]||f.blankHeaderOpts,h={y:i.pad.t,yPad:0,x:i.pad.l,xPad:0,index:0},p={width:l.headerWidth,height:l.headerHeight};a.call(y,i,u,t).call(M,i,h,p),s.ensureSingle(e,\"text\",f.headerArrowClassName,(function(t){t.attr(\"text-anchor\",\"end\").call(o.font,i.font).text(f.arrowSymbol[i.direction])})).attr({x:l.headerWidth-f.arrowOffsetX+i.pad.l,y:l.headerHeight/2+f.textOffsetY+i.pad.t}),a.on(\"click\",(function(){r.call(S,String(d(r,i)?-1:i._index)),v(t,e,r,n,i)})),a.on(\"mouseover\",(function(){a.call(w)})),a.on(\"mouseout\",(function(){a.call(T,i)})),o.setTranslate(e,l.lx,l.ly)}function v(t,e,r,a,o){r||(r=e).attr(\"pointer-events\",\"all\");var l=function(t){return-1==+t.attr(f.menuIndexAttrName)}(r)&&\"buttons\"!==o.type?[]:o.buttons,c=\"dropdown\"===o.type?f.dropdownButtonClassName:f.buttonClassName,u=r.selectAll(\"g.\"+c).data(s.filterVisible(l)),h=u.enter().append(\"g\").classed(c,!0),p=u.exit();\"dropdown\"===o.type?(h.attr(\"opacity\",\"0\").transition().attr(\"opacity\",\"1\"),p.transition().attr(\"opacity\",\"0\").remove()):p.remove();var d=0,m=0,v=o._dims,x=-1!==[\"up\",\"down\"].indexOf(o.direction);\"dropdown\"===o.type&&(x?m=v.headerHeight+f.gapButtonHeader:d=v.headerWidth+f.gapButtonHeader),\"dropdown\"===o.type&&\"up\"===o.direction&&(m=-f.gapButtonHeader+f.gapButton-v.openHeight),\"dropdown\"===o.type&&\"left\"===o.direction&&(d=-f.gapButtonHeader+f.gapButton-v.openWidth);var b={x:v.lx+d+o.pad.l,y:v.ly+m+o.pad.t,yPad:f.gapButton,xPad:f.gapButton,index:0},k={l:b.x+o.borderwidth,t:b.y+o.borderwidth};u.each((function(s,l){var c=n.select(this);c.call(y,o,s,t).call(M,o,b),c.on(\"click\",(function(){n.event.defaultPrevented||(s.execute&&(s.args2&&o.active===l?(g(t,o,0,e,r,a,-1),i.executeAPICommand(t,s.method,s.args2)):(g(t,o,0,e,r,a,l),i.executeAPICommand(t,s.method,s.args))),t.emit(\"plotly_buttonclicked\",{menu:o,button:s,active:o.active}))})),c.on(\"mouseover\",(function(){c.call(w)})),c.on(\"mouseout\",(function(){c.call(T,o),u.call(_,o)}))})),u.call(_,o),x?(k.w=Math.max(v.openWidth,v.headerWidth),k.h=b.y-k.t):(k.w=b.x-k.l,k.h=Math.max(v.openHeight,v.headerHeight)),k.direction=o.direction,a&&(u.size()?function(t,e,r,n,i,a){var o,s,l,c=i.direction,u=\"up\"===c||\"down\"===c,h=i._dims,p=i.active;if(u)for(s=0,l=0;l0?[0]:[]);if(o.enter().append(\"g\").classed(f.containerClassName,!0).style(\"cursor\",\"pointer\"),o.exit().each((function(){n.select(this).selectAll(\"g.\"+f.headerGroupClassName).each(a)})).remove(),0!==r.length){var l=o.selectAll(\"g.\"+f.headerGroupClassName).data(r,p);l.enter().append(\"g\").classed(f.headerGroupClassName,!0);for(var c=s.ensureSingle(o,\"g\",f.dropdownButtonGroupClassName,(function(t){t.style(\"pointer-events\",\"all\")})),u=0;uw,A=s.barLength+2*s.barPad,M=s.barWidth+2*s.barPad,S=d,E=m+v;E+M>c&&(E=c-M);var L=this.container.selectAll(\"rect.scrollbar-horizontal\").data(k?[0]:[]);L.exit().on(\".drag\",null).remove(),L.enter().append(\"rect\").classed(\"scrollbar-horizontal\",!0).call(i.fill,s.barColor),k?(this.hbar=L.attr({rx:s.barRadius,ry:s.barRadius,x:S,y:E,width:A,height:M}),this._hbarXMin=S+A/2,this._hbarTranslateMax=w-A):(delete this.hbar,delete this._hbarXMin,delete this._hbarTranslateMax);var C=v>T,P=s.barWidth+2*s.barPad,I=s.barLength+2*s.barPad,O=d+g,z=m;O+P>l&&(O=l-P);var D=this.container.selectAll(\"rect.scrollbar-vertical\").data(C?[0]:[]);D.exit().on(\".drag\",null).remove(),D.enter().append(\"rect\").classed(\"scrollbar-vertical\",!0).call(i.fill,s.barColor),C?(this.vbar=D.attr({rx:s.barRadius,ry:s.barRadius,x:O,y:z,width:P,height:I}),this._vbarYMin=z+I/2,this._vbarTranslateMax=T-I):(delete this.vbar,delete this._vbarYMin,delete this._vbarTranslateMax);var R=this.id,F=u-.5,B=C?f+P+.5:f+.5,N=h-.5,j=k?p+M+.5:p+.5,U=o._topdefs.selectAll(\"#\"+R).data(k||C?[0]:[]);if(U.exit().remove(),U.enter().append(\"clipPath\").attr(\"id\",R).append(\"rect\"),k||C?(this._clipRect=U.select(\"rect\").attr({x:Math.floor(F),y:Math.floor(N),width:Math.ceil(B)-Math.floor(F),height:Math.ceil(j)-Math.floor(N)}),this.container.call(a.setClipUrl,R,this.gd),this.bg.attr({x:d,y:m,width:g,height:v})):(this.bg.attr({width:0,height:0}),this.container.on(\"wheel\",null).on(\".drag\",null).call(a.setClipUrl,null),delete this._clipRect),k||C){var V=n.behavior.drag().on(\"dragstart\",(function(){n.event.sourceEvent.preventDefault()})).on(\"drag\",this._onBoxDrag.bind(this));this.container.on(\"wheel\",null).on(\"wheel\",this._onBoxWheel.bind(this)).on(\".drag\",null).call(V);var H=n.behavior.drag().on(\"dragstart\",(function(){n.event.sourceEvent.preventDefault(),n.event.sourceEvent.stopPropagation()})).on(\"drag\",this._onBarDrag.bind(this));k&&this.hbar.on(\".drag\",null).call(H),C&&this.vbar.on(\".drag\",null).call(H)}this.setTranslate(e,r)},s.prototype.disable=function(){(this.hbar||this.vbar)&&(this.bg.attr({width:0,height:0}),this.container.on(\"wheel\",null).on(\".drag\",null).call(a.setClipUrl,null),delete this._clipRect),this.hbar&&(this.hbar.on(\".drag\",null),this.hbar.remove(),delete this.hbar,delete this._hbarXMin,delete this._hbarTranslateMax),this.vbar&&(this.vbar.on(\".drag\",null),this.vbar.remove(),delete this.vbar,delete this._vbarYMin,delete this._vbarTranslateMax)},s.prototype._onBoxDrag=function(){var t=this.translateX,e=this.translateY;this.hbar&&(t-=n.event.dx),this.vbar&&(e-=n.event.dy),this.setTranslate(t,e)},s.prototype._onBoxWheel=function(){var t=this.translateX,e=this.translateY;this.hbar&&(t+=n.event.deltaY),this.vbar&&(e+=n.event.deltaY),this.setTranslate(t,e)},s.prototype._onBarDrag=function(){var t=this.translateX,e=this.translateY;if(this.hbar){var r=t+this._hbarXMin,i=r+this._hbarTranslateMax;t=(o.constrain(n.event.x,r,i)-r)/(i-r)*(this.position.w-this._box.w)}if(this.vbar){var a=e+this._vbarYMin,s=a+this._vbarTranslateMax;e=(o.constrain(n.event.y,a,s)-a)/(s-a)*(this.position.h-this._box.h)}this.setTranslate(t,e)},s.prototype.setTranslate=function(t,e){var r=this.position.w-this._box.w,n=this.position.h-this._box.h;if(t=o.constrain(t||0,0,r),e=o.constrain(e||0,0,n),this.translateX=t,this.translateY=e,this.container.call(a.setTranslate,this._box.l-this.position.l-t,this._box.t-this.position.t-e),this._clipRect&&this._clipRect.attr({x:Math.floor(this.position.l+t-.5),y:Math.floor(this.position.t+e-.5)}),this.hbar){var i=t/r;this.hbar.call(a.setTranslate,t+i*this._hbarTranslateMax,e)}if(this.vbar){var s=e/n;this.vbar.call(a.setTranslate,t,e+s*this._vbarTranslateMax)}}},{\"../../lib\":503,\"../color\":366,\"../drawing\":388,\"@plotly/d3\":58}],471:[function(t,e,r){\"use strict\";e.exports={FROM_BL:{left:0,center:.5,right:1,bottom:0,middle:.5,top:1},FROM_TL:{left:0,center:.5,right:1,bottom:1,middle:.5,top:0},FROM_BR:{left:1,center:.5,right:0,bottom:0,middle:.5,top:1},LINE_SPACING:1.3,CAP_SHIFT:.7,MID_SHIFT:.35,OPPOSITE_SIDE:{left:\"right\",right:\"left\",top:\"bottom\",bottom:\"top\"}}},{}],472:[function(t,e,r){\"use strict\";e.exports={axisRefDescription:function(t,e,r){return[\"If set to a\",t,\"axis id (e.g. *\"+t+\"* or\",\"*\"+t+\"2*), the `\"+t+\"` position refers to a\",t,\"coordinate. If set to *paper*, the `\"+t+\"`\",\"position refers to the distance from the\",e,\"of the plotting\",\"area in normalized coordinates where *0* (*1*) corresponds to the\",e,\"(\"+r+\"). If set to a\",t,\"axis ID followed by\",\"*domain* (separated by a space), the position behaves like for\",\"*paper*, but refers to the distance in fractions of the domain\",\"length from the\",e,\"of the domain of that axis: e.g.,\",\"*\"+t+\"2 domain* refers to the domain of the second\",t,\" axis and a\",t,\"position of 0.5 refers to the\",\"point between the\",e,\"and the\",r,\"of the domain of the\",\"second\",t,\"axis.\"].join(\" \")}}},{}],473:[function(t,e,r){\"use strict\";e.exports={INCREASING:{COLOR:\"#3D9970\",SYMBOL:\"\\u25b2\"},DECREASING:{COLOR:\"#FF4136\",SYMBOL:\"\\u25bc\"}}},{}],474:[function(t,e,r){\"use strict\";e.exports={FORMAT_LINK:\"https://github.com/d3/d3-format/tree/v1.4.5#d3-format\",DATE_FORMAT_LINK:\"https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format\"}},{}],475:[function(t,e,r){\"use strict\";e.exports={COMPARISON_OPS:[\"=\",\"!=\",\"<\",\">=\",\">\",\"<=\"],COMPARISON_OPS2:[\"=\",\"<\",\">=\",\">\",\"<=\"],INTERVAL_OPS:[\"[]\",\"()\",\"[)\",\"(]\",\"][\",\")(\",\"](\",\")[\"],SET_OPS:[\"{}\",\"}{\"],CONSTRAINT_REDUCTION:{\"=\":\"=\",\"<\":\"<\",\"<=\":\"<\",\">\":\">\",\">=\":\">\",\"[]\":\"[]\",\"()\":\"[]\",\"[)\":\"[]\",\"(]\":\"[]\",\"][\":\"][\",\")(\":\"][\",\"](\":\"][\",\")[\":\"][\"}}},{}],476:[function(t,e,r){\"use strict\";e.exports={solid:[[],0],dot:[[.5,1],200],dash:[[.5,1],50],longdash:[[.5,1],10],dashdot:[[.5,.625,.875,1],50],longdashdot:[[.5,.7,.8,1],10]}},{}],477:[function(t,e,r){\"use strict\";e.exports={circle:\"\\u25cf\",\"circle-open\":\"\\u25cb\",square:\"\\u25a0\",\"square-open\":\"\\u25a1\",diamond:\"\\u25c6\",\"diamond-open\":\"\\u25c7\",cross:\"+\",x:\"\\u274c\"}},{}],478:[function(t,e,r){\"use strict\";e.exports={SHOW_PLACEHOLDER:100,HIDE_PLACEHOLDER:1e3,DESELECTDIM:.2}},{}],479:[function(t,e,r){\"use strict\";e.exports={BADNUM:void 0,FP_SAFE:1e-4*Number.MAX_VALUE,ONEMAXYEAR:316224e5,ONEAVGYEAR:315576e5,ONEMINYEAR:31536e6,ONEMAXQUARTER:79488e5,ONEAVGQUARTER:78894e5,ONEMINQUARTER:76896e5,ONEMAXMONTH:26784e5,ONEAVGMONTH:26298e5,ONEMINMONTH:24192e5,ONEWEEK:6048e5,ONEDAY:864e5,ONEHOUR:36e5,ONEMIN:6e4,ONESEC:1e3,EPOCHJD:2440587.5,ALMOST_EQUAL:.999999,LOG_CLIP:10,MINUS_SIGN:\"\\u2212\"}},{}],480:[function(t,e,r){\"use strict\";r.xmlns=\"http://www.w3.org/2000/xmlns/\",r.svg=\"http://www.w3.org/2000/svg\",r.xlink=\"http://www.w3.org/1999/xlink\",r.svgAttrs={xmlns:r.svg,\"xmlns:xlink\":r.xlink}},{}],481:[function(t,e,r){\"use strict\";r.version=t(\"./version\").version,t(\"native-promise-only\"),t(\"../build/plotcss\");for(var n=t(\"./registry\"),i=r.register=n.register,a=t(\"./plot_api\"),o=Object.keys(a),s=0;splotly-logomark\"}}},{}],483:[function(t,e,r){\"use strict\";r.isLeftAnchor=function(t){return\"left\"===t.xanchor||\"auto\"===t.xanchor&&t.x<=1/3},r.isCenterAnchor=function(t){return\"center\"===t.xanchor||\"auto\"===t.xanchor&&t.x>1/3&&t.x<2/3},r.isRightAnchor=function(t){return\"right\"===t.xanchor||\"auto\"===t.xanchor&&t.x>=2/3},r.isTopAnchor=function(t){return\"top\"===t.yanchor||\"auto\"===t.yanchor&&t.y>=2/3},r.isMiddleAnchor=function(t){return\"middle\"===t.yanchor||\"auto\"===t.yanchor&&t.y>1/3&&t.y<2/3},r.isBottomAnchor=function(t){return\"bottom\"===t.yanchor||\"auto\"===t.yanchor&&t.y<=1/3}},{}],484:[function(t,e,r){\"use strict\";var n=t(\"./mod\"),i=n.mod,a=n.modHalf,o=Math.PI,s=2*o;function l(t){return Math.abs(t[1]-t[0])>s-1e-14}function c(t,e){return a(e-t,s)}function u(t,e){if(l(e))return!0;var r,n;e[0](n=i(n,s))&&(n+=s);var a=i(t,s),o=a+s;return a>=r&&a<=n||o>=r&&o<=n}function f(t,e,r,n,i,a,c){i=i||0,a=a||0;var u,f,h,p,d,g=l([r,n]);function m(t,e){return[t*Math.cos(e)+i,a-t*Math.sin(e)]}g?(u=0,f=o,h=s):r=i&&t<=a);var i,a},pathArc:function(t,e,r,n,i){return f(null,t,e,r,n,i,0)},pathSector:function(t,e,r,n,i){return f(null,t,e,r,n,i,1)},pathAnnulus:function(t,e,r,n,i,a){return f(t,e,r,n,i,a,1)}}},{\"./mod\":510}],485:[function(t,e,r){\"use strict\";var n=Array.isArray,i=ArrayBuffer,a=DataView;function o(t){return i.isView(t)&&!(t instanceof a)}function s(t){return n(t)||o(t)}function l(t,e,r){if(s(t)){if(s(t[0])){for(var n=r,i=0;ii.max?e.set(r):e.set(+t)}},integer:{coerceFunction:function(t,e,r,i){t%1||!n(t)||void 0!==i.min&&ti.max?e.set(r):e.set(+t)}},string:{coerceFunction:function(t,e,r,n){if(\"string\"!=typeof t){var i=\"number\"==typeof t;!0!==n.strict&&i?e.set(String(t)):e.set(r)}else n.noBlank&&!t?e.set(r):e.set(t)}},color:{coerceFunction:function(t,e,r){i(t).isValid()?e.set(t):e.set(r)}},colorlist:{coerceFunction:function(t,e,r){Array.isArray(t)&&t.length&&t.every((function(t){return i(t).isValid()}))?e.set(t):e.set(r)}},colorscale:{coerceFunction:function(t,e,r){e.set(o.get(t,r))}},angle:{coerceFunction:function(t,e,r){\"auto\"===t?e.set(\"auto\"):n(t)?e.set(f(+t,360)):e.set(r)}},subplotid:{coerceFunction:function(t,e,r,n){var i=n.regex||u(r);\"string\"==typeof t&&i.test(t)?e.set(t):e.set(r)},validateFunction:function(t,e){var r=e.dflt;return t===r||\"string\"==typeof t&&!!u(r).test(t)}},flaglist:{coerceFunction:function(t,e,r,n){if(\"string\"==typeof t)if(-1===(n.extras||[]).indexOf(t)){for(var i=t.split(\"+\"),a=0;a=n&&t<=i?t:u}if(\"string\"!=typeof t&&\"number\"!=typeof t)return u;t=String(t);var c=_(e),v=t.charAt(0);!c||\"G\"!==v&&\"g\"!==v||(t=t.substr(1),e=\"\");var w=c&&\"chinese\"===e.substr(0,7),T=t.match(w?x:y);if(!T)return u;var k=T[1],A=T[3]||\"1\",M=Number(T[5]||1),S=Number(T[7]||0),E=Number(T[9]||0),L=Number(T[11]||0);if(c){if(2===k.length)return u;var C;k=Number(k);try{var P=m.getComponentMethod(\"calendars\",\"getCal\")(e);if(w){var I=\"i\"===A.charAt(A.length-1);A=parseInt(A,10),C=P.newDate(k,P.toMonthIndex(k,A,I),M)}else C=P.newDate(k,Number(A),M)}catch(t){return u}return C?(C.toJD()-g)*f+S*h+E*p+L*d:u}k=2===k.length?(Number(k)+2e3-b)%100+b:Number(k),A-=1;var O=new Date(Date.UTC(2e3,A,M,S,E));return O.setUTCFullYear(k),O.getUTCMonth()!==A||O.getUTCDate()!==M?u:O.getTime()+L*d},n=r.MIN_MS=r.dateTime2ms(\"-9999\"),i=r.MAX_MS=r.dateTime2ms(\"9999-12-31 23:59:59.9999\"),r.isDateTime=function(t,e){return r.dateTime2ms(t,e)!==u};var T=90*f,k=3*h,A=5*p;function M(t,e,r,n,i){if((e||r||n||i)&&(t+=\" \"+w(e,2)+\":\"+w(r,2),(n||i)&&(t+=\":\"+w(n,2),i))){for(var a=4;i%10==0;)a-=1,i/=10;t+=\".\"+w(i,a)}return t}r.ms2DateTime=function(t,e,r){if(\"number\"!=typeof t||!(t>=n&&t<=i))return u;e||(e=0);var a,o,s,c,y,x,b=Math.floor(10*l(t+.05,1)),w=Math.round(t-b/10);if(_(r)){var S=Math.floor(w/f)+g,E=Math.floor(l(t,f));try{a=m.getComponentMethod(\"calendars\",\"getCal\")(r).fromJD(S).formatDate(\"yyyy-mm-dd\")}catch(t){a=v(\"G%Y-%m-%d\")(new Date(w))}if(\"-\"===a.charAt(0))for(;a.length<11;)a=\"-0\"+a.substr(1);else for(;a.length<10;)a=\"0\"+a;o=e=n+f&&t<=i-f))return u;var e=Math.floor(10*l(t+.05,1)),r=new Date(Math.round(t-e/10));return M(a(\"%Y-%m-%d\")(r),r.getHours(),r.getMinutes(),r.getSeconds(),10*r.getUTCMilliseconds()+e)},r.cleanDate=function(t,e,n){if(t===u)return e;if(r.isJSDate(t)||\"number\"==typeof t&&isFinite(t)){if(_(n))return s.error(\"JS Dates and milliseconds are incompatible with world calendars\",t),e;if(!(t=r.ms2DateTimeLocal(+t))&&void 0!==e)return e}else if(!r.isDateTime(t,n))return s.error(\"unrecognized date\",t),e;return t};var S=/%\\d?f/g,E=/%h/g,L={1:\"1\",2:\"1\",3:\"2\",4:\"2\"};function C(t,e,r,n){t=t.replace(S,(function(t){var r=Math.min(+t.charAt(1)||6,6);return(e/1e3%1+2).toFixed(r).substr(2).replace(/0+$/,\"\")||\"0\"}));var i=new Date(Math.floor(e+.05));if(t=t.replace(E,(function(){return L[r(\"%q\")(i)]})),_(n))try{t=m.getComponentMethod(\"calendars\",\"worldCalFmt\")(t,e,n)}catch(t){return\"Invalid\"}return r(t)(i)}var P=[59,59.9,59.99,59.999,59.9999];r.formatDate=function(t,e,r,n,i,a){if(i=_(i)&&i,!e)if(\"y\"===r)e=a.year;else if(\"m\"===r)e=a.month;else{if(\"d\"!==r)return function(t,e){var r=l(t+.05,f),n=w(Math.floor(r/h),2)+\":\"+w(l(Math.floor(r/p),60),2);if(\"M\"!==e){o(e)||(e=0);var i=(100+Math.min(l(t/d,60),P[e])).toFixed(e).substr(1);e>0&&(i=i.replace(/0+$/,\"\").replace(/[\\.]$/,\"\")),n+=\":\"+i}return n}(t,r)+\"\\n\"+C(a.dayMonthYear,t,n,i);e=a.dayMonth+\"\\n\"+a.year}return C(e,t,n,i)};var I=3*f;r.incrementMonth=function(t,e,r){r=_(r)&&r;var n=l(t,f);if(t=Math.round(t-n),r)try{var i=Math.round(t/f)+g,a=m.getComponentMethod(\"calendars\",\"getCal\")(r),o=a.fromJD(i);return e%12?a.add(o,e,\"m\"):a.add(o,e/12,\"y\"),(o.toJD()-g)*f+n}catch(e){s.error(\"invalid ms \"+t+\" in calendar \"+r)}var c=new Date(t+I);return c.setUTCMonth(c.getUTCMonth()+e)+n-I},r.findExactDates=function(t,e){for(var r,n,i=0,a=0,s=0,l=0,c=_(e)&&m.getComponentMethod(\"calendars\",\"getCal\")(e),u=0;u0&&t[e+1][0]<0)return e;return null}switch(e=\"RUS\"===s||\"FJI\"===s?function(t){var e;if(null===c(t))e=t;else for(e=new Array(t.length),i=0;ie?r[n++]=[t[i][0]+360,t[i][1]]:i===e?(r[n++]=t[i],r[n++]=[t[i][0],-90]):r[n++]=t[i];var a=h.tester(r);a.pts.pop(),l.push(a)}:function(t){l.push(h.tester(t))},a.type){case\"MultiPolygon\":for(r=0;ri&&(i=c,e=l)}else e=r;return o.default(e).geometry.coordinates}(u),n.fIn=t,n.fOut=u,s.push(u)}else c.log([\"Location\",n.loc,\"does not have a valid GeoJSON geometry.\",\"Traces with locationmode *geojson-id* only support\",\"*Polygon* and *MultiPolygon* geometries.\"].join(\" \"))}delete i[r]}switch(r.type){case\"FeatureCollection\":var h=r.features;for(n=0;n100?(clearInterval(a),n(\"Unexpected error while fetching from \"+t)):void i++}),50)}))}for(var o=0;o0&&(r.push(i),i=[])}return i.length>0&&r.push(i),r},r.makeLine=function(t){return 1===t.length?{type:\"LineString\",coordinates:t[0]}:{type:\"MultiLineString\",coordinates:t}},r.makePolygon=function(t){if(1===t.length)return{type:\"Polygon\",coordinates:t};for(var e=new Array(t.length),r=0;r1||g<0||g>1?null:{x:t+l*g,y:e+f*g}}function l(t,e,r,n,i){var a=n*t+i*e;if(a<0)return n*n+i*i;if(a>r){var o=n-t,s=i-e;return o*o+s*s}var l=n*e-i*t;return l*l/r}r.segmentsIntersect=s,r.segmentDistance=function(t,e,r,n,i,a,o,c){if(s(t,e,r,n,i,a,o,c))return 0;var u=r-t,f=n-e,h=o-i,p=c-a,d=u*u+f*f,g=h*h+p*p,m=Math.min(l(u,f,d,i-t,a-e),l(u,f,d,o-t,c-e),l(h,p,g,t-i,e-a),l(h,p,g,r-i,n-a));return Math.sqrt(m)},r.getTextLocation=function(t,e,r,s){if(t===i&&s===a||(n={},i=t,a=s),n[r])return n[r];var l=t.getPointAtLength(o(r-s/2,e)),c=t.getPointAtLength(o(r+s/2,e)),u=Math.atan((c.y-l.y)/(c.x-l.x)),f=t.getPointAtLength(o(r,e)),h={x:(4*f.x+l.x+c.x)/6,y:(4*f.y+l.y+c.y)/6,theta:u};return n[r]=h,h},r.clearLocationCache=function(){i=null},r.getVisibleSegment=function(t,e,r){var n,i,a=e.left,o=e.right,s=e.top,l=e.bottom,c=0,u=t.getTotalLength(),f=u;function h(e){var r=t.getPointAtLength(e);0===e?n=r:e===u&&(i=r);var c=r.xo?r.x-o:0,f=r.yl?r.y-l:0;return Math.sqrt(c*c+f*f)}for(var p=h(c);p;){if((c+=p+r)>f)return;p=h(c)}for(p=h(f);p;){if(c>(f-=p+r))return;p=h(f)}return{min:c,max:f,len:f-c,total:u,isClosed:0===c&&f===u&&Math.abs(n.x-i.x)<.1&&Math.abs(n.y-i.y)<.1}},r.findPointOnPath=function(t,e,r,n){for(var i,a,o,s=(n=n||{}).pathLength||t.getTotalLength(),l=n.tolerance||.001,c=n.iterationLimit||30,u=t.getPointAtLength(0)[r]>t.getPointAtLength(s)[r]?-1:1,f=0,h=0,p=s;f0?p=i:h=i,f++}return a}},{\"./mod\":510}],499:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"tinycolor2\"),a=t(\"color-normalize\"),o=t(\"../components/colorscale\"),s=t(\"../components/color/attributes\").defaultLine,l=t(\"./array\").isArrayOrTypedArray,c=a(s);function u(t,e){var r=t;return r[3]*=e,r}function f(t){if(n(t))return c;var e=a(t);return e.length?e:c}function h(t){return n(t)?t:1}e.exports={formatColor:function(t,e,r){var n,i,s,p,d,g=t.color,m=l(g),v=l(e),y=o.extractOpts(t),x=[];if(n=void 0!==y.colorscale?o.makeColorScaleFuncFromTrace(t):f,i=m?function(t,e){return void 0===t[e]?c:a(n(t[e]))}:f,s=v?function(t,e){return void 0===t[e]?1:h(t[e])}:h,m||v)for(var b=0;b1?(r*t+r*e)/r:t+e,i=String(n).length;if(i>16){var a=String(e).length;if(i>=String(t).length+a){var o=parseFloat(n).toPrecision(12);-1===o.indexOf(\"e+\")&&(n=+o)}}return n}},{}],503:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"d3-time-format\").utcFormat,a=t(\"d3-format\").format,o=t(\"fast-isnumeric\"),s=t(\"../constants/numerical\"),l=s.FP_SAFE,c=-l,u=s.BADNUM,f=e.exports={};f.adjustFormat=function(t){return!t||/^\\d[.]\\df/.test(t)||/[.]\\d%/.test(t)?t:\"0.f\"===t?\"~f\":/^\\d%/.test(t)?\"~%\":/^\\ds/.test(t)?\"~s\":!/^[~,.0$]/.test(t)&&/[&fps]/.test(t)?\"~\"+t:t};var h={};f.warnBadFormat=function(t){var e=String(t);h[e]||(h[e]=1,f.warn('encountered bad format: \"'+e+'\"'))},f.noFormat=function(t){return String(t)},f.numberFormat=function(t){var e;try{e=a(f.adjustFormat(t))}catch(e){return f.warnBadFormat(t),f.noFormat}return e},f.nestedProperty=t(\"./nested_property\"),f.keyedContainer=t(\"./keyed_container\"),f.relativeAttr=t(\"./relative_attr\"),f.isPlainObject=t(\"./is_plain_object\"),f.toLogRange=t(\"./to_log_range\"),f.relinkPrivateKeys=t(\"./relink_private\");var p=t(\"./array\");f.isTypedArray=p.isTypedArray,f.isArrayOrTypedArray=p.isArrayOrTypedArray,f.isArray1D=p.isArray1D,f.ensureArray=p.ensureArray,f.concat=p.concat,f.maxRowLength=p.maxRowLength,f.minRowLength=p.minRowLength;var d=t(\"./mod\");f.mod=d.mod,f.modHalf=d.modHalf;var g=t(\"./coerce\");f.valObjectMeta=g.valObjectMeta,f.coerce=g.coerce,f.coerce2=g.coerce2,f.coerceFont=g.coerceFont,f.coercePattern=g.coercePattern,f.coerceHoverinfo=g.coerceHoverinfo,f.coerceSelectionMarkerOpacity=g.coerceSelectionMarkerOpacity,f.validate=g.validate;var m=t(\"./dates\");f.dateTime2ms=m.dateTime2ms,f.isDateTime=m.isDateTime,f.ms2DateTime=m.ms2DateTime,f.ms2DateTimeLocal=m.ms2DateTimeLocal,f.cleanDate=m.cleanDate,f.isJSDate=m.isJSDate,f.formatDate=m.formatDate,f.incrementMonth=m.incrementMonth,f.dateTick0=m.dateTick0,f.dfltRange=m.dfltRange,f.findExactDates=m.findExactDates,f.MIN_MS=m.MIN_MS,f.MAX_MS=m.MAX_MS;var v=t(\"./search\");f.findBin=v.findBin,f.sorterAsc=v.sorterAsc,f.sorterDes=v.sorterDes,f.distinctVals=v.distinctVals,f.roundUp=v.roundUp,f.sort=v.sort,f.findIndexOfMin=v.findIndexOfMin,f.sortObjectKeys=t(\"./sort_object_keys\");var y=t(\"./stats\");f.aggNums=y.aggNums,f.len=y.len,f.mean=y.mean,f.median=y.median,f.midRange=y.midRange,f.variance=y.variance,f.stdev=y.stdev,f.interp=y.interp;var x=t(\"./matrix\");f.init2dArray=x.init2dArray,f.transposeRagged=x.transposeRagged,f.dot=x.dot,f.translationMatrix=x.translationMatrix,f.rotationMatrix=x.rotationMatrix,f.rotationXYMatrix=x.rotationXYMatrix,f.apply3DTransform=x.apply3DTransform,f.apply2DTransform=x.apply2DTransform,f.apply2DTransform2=x.apply2DTransform2,f.convertCssMatrix=x.convertCssMatrix,f.inverseTransformMatrix=x.inverseTransformMatrix;var b=t(\"./angles\");f.deg2rad=b.deg2rad,f.rad2deg=b.rad2deg,f.angleDelta=b.angleDelta,f.angleDist=b.angleDist,f.isFullCircle=b.isFullCircle,f.isAngleInsideSector=b.isAngleInsideSector,f.isPtInsideSector=b.isPtInsideSector,f.pathArc=b.pathArc,f.pathSector=b.pathSector,f.pathAnnulus=b.pathAnnulus;var _=t(\"./anchor_utils\");f.isLeftAnchor=_.isLeftAnchor,f.isCenterAnchor=_.isCenterAnchor,f.isRightAnchor=_.isRightAnchor,f.isTopAnchor=_.isTopAnchor,f.isMiddleAnchor=_.isMiddleAnchor,f.isBottomAnchor=_.isBottomAnchor;var w=t(\"./geometry2d\");f.segmentsIntersect=w.segmentsIntersect,f.segmentDistance=w.segmentDistance,f.getTextLocation=w.getTextLocation,f.clearLocationCache=w.clearLocationCache,f.getVisibleSegment=w.getVisibleSegment,f.findPointOnPath=w.findPointOnPath;var T=t(\"./extend\");f.extendFlat=T.extendFlat,f.extendDeep=T.extendDeep,f.extendDeepAll=T.extendDeepAll,f.extendDeepNoArrays=T.extendDeepNoArrays;var k=t(\"./loggers\");f.log=k.log,f.warn=k.warn,f.error=k.error;var A=t(\"./regex\");f.counterRegex=A.counter;var M=t(\"./throttle\");f.throttle=M.throttle,f.throttleDone=M.done,f.clearThrottle=M.clear;var S=t(\"./dom\");function E(t){var e={};for(var r in t)for(var n=t[r],i=0;il||t=e)&&(o(t)&&t>=0&&t%1==0)},f.noop=t(\"./noop\"),f.identity=t(\"./identity\"),f.repeat=function(t,e){for(var r=new Array(e),n=0;nr?Math.max(r,Math.min(e,t)):Math.max(e,Math.min(r,t))},f.bBoxIntersect=function(t,e,r){return r=r||0,t.left<=e.right+r&&e.left<=t.right+r&&t.top<=e.bottom+r&&e.top<=t.bottom+r},f.simpleMap=function(t,e,r,n,i){for(var a=t.length,o=new Array(a),s=0;s=Math.pow(2,r)?i>10?(f.warn(\"randstr failed uniqueness\"),l):t(e,r,n,(i||0)+1):l},f.OptionControl=function(t,e){t||(t={}),e||(e=\"opt\");var r={optionList:[],_newoption:function(n){n[e]=t,r[n.name]=n,r.optionList.push(n)}};return r[\"_\"+e]=t,r},f.smooth=function(t,e){if((e=Math.round(e)||0)<2)return t;var r,n,i,a,o=t.length,s=2*o,l=2*e-1,c=new Array(l),u=new Array(o);for(r=0;r=s&&(i-=s*Math.floor(i/s)),i<0?i=-1-i:i>=o&&(i=s-1-i),a+=t[i]*c[n];u[r]=a}return u},f.syncOrAsync=function(t,e,r){var n;function i(){return f.syncOrAsync(t,e,r)}for(;t.length;)if((n=(0,t.splice(0,1)[0])(e))&&n.then)return n.then(i);return r&&r(e)},f.stripTrailingSlash=function(t){return\"/\"===t.substr(-1)?t.substr(0,t.length-1):t},f.noneOrAll=function(t,e,r){if(t){var n,i=!1,a=!0;for(n=0;n0?e:0}))},f.fillArray=function(t,e,r,n){if(n=n||f.identity,f.isArrayOrTypedArray(t))for(var i=0;i1?i+o[1]:\"\";if(a&&(o.length>1||s.length>4||r))for(;n.test(s);)s=s.replace(n,\"$1\"+a+\"$2\");return s+l},f.TEMPLATE_STRING_REGEX=/%{([^\\s%{}:]*)([:|\\|][^}]*)?}/g;var z=/^\\w*$/;f.templateString=function(t,e){var r={};return t.replace(f.TEMPLATE_STRING_REGEX,(function(t,n){var i;return z.test(n)?i=e[n]:(r[n]=r[n]||f.nestedProperty(e,n).get,i=r[n]()),f.isValidTextValue(i)?i:\"\"}))};var D={max:10,count:0,name:\"hovertemplate\"};f.hovertemplateString=function(){return B.apply(D,arguments)};var R={max:10,count:0,name:\"texttemplate\"};f.texttemplateString=function(){return B.apply(R,arguments)};var F=/^[:|\\|]/;function B(t,e,r){var n=this,a=arguments;e||(e={});var o={};return t.replace(f.TEMPLATE_STRING_REGEX,(function(t,s,l){var c,u,h,p=\"_xother\"===s||\"_yother\"===s,d=\"_xother_\"===s||\"_yother_\"===s,g=\"xother_\"===s||\"yother_\"===s,m=\"xother\"===s||\"yother\"===s||p||g||d,v=s;if((p||d)&&(v=v.substring(1)),(g||d)&&(v=v.substring(0,v.length-1)),m){if(void 0===(c=e[v]))return\"\"}else for(h=3;h=48&&o<=57,c=s>=48&&s<=57;if(l&&(n=10*n+o-48),c&&(i=10*i+s-48),!l||!c){if(n!==i)return n-i;if(o!==s)return o-s}}return i-n};var N=2e9;f.seedPseudoRandom=function(){N=2e9},f.pseudoRandom=function(){var t=N;return N=(69069*N+1)%4294967296,Math.abs(N-t)<429496729?f.pseudoRandom():N/4294967296},f.fillText=function(t,e,r){var n=Array.isArray(r)?function(t){r.push(t)}:function(t){r.text=t},i=f.extractOption(t,e,\"htx\",\"hovertext\");if(f.isValidTextValue(i))return n(i);var a=f.extractOption(t,e,\"tx\",\"text\");return f.isValidTextValue(a)?n(a):void 0},f.isValidTextValue=function(t){return t||0===t},f.formatPercent=function(t,e){e=e||0;for(var r=(Math.round(100*t*Math.pow(10,e))*Math.pow(.1,e)).toFixed(e)+\"%\",n=0;n1&&(c=1):c=0,f.strTranslate(i-c*(r+o),a-c*(n+s))+f.strScale(c)+(l?\"rotate(\"+l+(e?\"\":\" \"+r+\" \"+n)+\")\":\"\")},f.ensureUniformFontSize=function(t,e){var r=f.extendFlat({},e);return r.size=Math.max(e.size,t._fullLayout.uniformtext.minsize||0),r},f.join2=function(t,e,r){var n=t.length;return n>1?t.slice(0,-1).join(e)+r+t[n-1]:t.join(e)},f.bigFont=function(t){return Math.round(1.2*t)};var j=f.getFirefoxVersion(),U=null!==j&&j<86;f.getPositionFromD3Event=function(){return U?[n.event.layerX,n.event.layerY]:[n.event.offsetX,n.event.offsetY]}},{\"../constants/numerical\":479,\"./anchor_utils\":483,\"./angles\":484,\"./array\":485,\"./clean_number\":486,\"./clear_responsive\":488,\"./coerce\":489,\"./dates\":490,\"./dom\":491,\"./extend\":493,\"./filter_unique\":494,\"./filter_visible\":495,\"./geometry2d\":498,\"./identity\":501,\"./increment\":502,\"./is_plain_object\":504,\"./keyed_container\":505,\"./localize\":506,\"./loggers\":507,\"./make_trace_groups\":508,\"./matrix\":509,\"./mod\":510,\"./nested_property\":511,\"./noop\":512,\"./notifier\":513,\"./preserve_drawing_buffer\":517,\"./push_unique\":518,\"./regex\":520,\"./relative_attr\":521,\"./relink_private\":522,\"./search\":523,\"./sort_object_keys\":526,\"./stats\":527,\"./throttle\":530,\"./to_log_range\":531,\"@plotly/d3\":58,\"d3-format\":112,\"d3-time-format\":120,\"fast-isnumeric\":190}],504:[function(t,e,r){\"use strict\";e.exports=function(t){return window&&window.process&&window.process.versions?\"[object Object]\"===Object.prototype.toString.call(t):\"[object Object]\"===Object.prototype.toString.call(t)&&Object.getPrototypeOf(t).hasOwnProperty(\"hasOwnProperty\")}},{}],505:[function(t,e,r){\"use strict\";var n=t(\"./nested_property\"),i=/^\\w*$/;e.exports=function(t,e,r,a){var o,s,l;r=r||\"name\",a=a||\"value\";var c={};e&&e.length?(l=n(t,e),s=l.get()):s=t,e=e||\"\";var u={};if(s)for(o=0;o2)return c[e]=2|c[e],h.set(t,null);if(f){for(o=e;o1){var e=[\"LOG:\"];for(t=0;t1){var r=[];for(t=0;t\"),\"long\")}},a.warn=function(){var t;if(n.logging>0){var e=[\"WARN:\"];for(t=0;t0){var r=[];for(t=0;t\"),\"stick\")}},a.error=function(){var t;if(n.logging>0){var e=[\"ERROR:\"];for(t=0;t0){var r=[];for(t=0;t\"),\"stick\")}}},{\"../plot_api/plot_config\":541,\"./notifier\":513}],508:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\");e.exports=function(t,e,r){var i=t.selectAll(\"g.\"+r.replace(/\\s/g,\".\")).data(e,(function(t){return t[0].trace.uid}));i.exit().remove(),i.enter().append(\"g\").attr(\"class\",r),i.order();var a=t.classed(\"rangeplot\")?\"nodeRangePlot3\":\"node3\";return i.each((function(t){t[0][a]=n.select(this)})),i}},{\"@plotly/d3\":58}],509:[function(t,e,r){\"use strict\";var n=t(\"gl-mat4\");r.init2dArray=function(t,e){for(var r=new Array(t),n=0;ne/2?t-Math.round(t/e)*e:t}}},{}],511:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"./array\").isArrayOrTypedArray;function a(t,e){return function(){var r,n,o,s,l,c=t;for(s=0;s/g),l=0;la||c===i||cs)&&(!e||!l(t))}:function(t,e){var l=t[0],c=t[1];if(l===i||la||c===i||cs)return!1;var u,f,h,p,d,g=r.length,m=r[0][0],v=r[0][1],y=0;for(u=1;uMath.max(f,m)||c>Math.max(h,v)))if(cu||Math.abs(n(o,h))>i)return!0;return!1},a.filter=function(t,e){var r=[t[0]],n=0,i=0;function o(o){t.push(o);var s=r.length,l=n;r.splice(i+1);for(var c=l+1;c1&&o(t.pop());return{addPt:o,raw:t,filtered:r}}},{\"../constants/numerical\":479,\"./matrix\":509}],516:[function(t,e,r){(function(r){(function(){\"use strict\";var n=t(\"./show_no_webgl_msg\"),i=t(\"regl\");e.exports=function(t,e){var a=t._fullLayout,o=!0;return a._glcanvas.each((function(n){if(!n.regl&&(!n.pick||a._has(\"parcoords\"))){try{n.regl=i({canvas:this,attributes:{antialias:!n.pick,preserveDrawingBuffer:!0},pixelRatio:t._context.plotGlPixelRatio||r.devicePixelRatio,extensions:e||[]})}catch(t){o=!1}n.regl||(o=!1),o&&this.addEventListener(\"webglcontextlost\",(function(e){t&&t.emit&&t.emit(\"plotly_webglcontextlost\",{event:e,layer:n.key})}),!1)}})),o||n({container:a._glcontainer.node()}),o}}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"./show_no_webgl_msg\":525,regl:283}],517:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"is-mobile\");e.exports=function(t){var e;if(\"string\"!=typeof(e=t&&t.hasOwnProperty(\"userAgent\")?t.userAgent:function(){var t;\"undefined\"!=typeof navigator&&(t=navigator.userAgent);t&&t.headers&&\"string\"==typeof t.headers[\"user-agent\"]&&(t=t.headers[\"user-agent\"]);return t}()))return!0;var r=i({ua:{headers:{\"user-agent\":e}},tablet:!0,featureDetect:!1});if(!r)for(var a=e.split(\" \"),o=1;o-1;s--){var l=a[s];if(\"Version/\"===l.substr(0,8)){var c=l.substr(8).split(\".\")[0];if(n(c)&&(c=+c),c>=13)return!0}}}return r}},{\"fast-isnumeric\":190,\"is-mobile\":234}],518:[function(t,e,r){\"use strict\";e.exports=function(t,e){if(e instanceof RegExp){for(var r=e.toString(),n=0;ni.queueLength&&(t.undoQueue.queue.shift(),t.undoQueue.index--))},startSequence:function(t){t.undoQueue=t.undoQueue||{index:0,queue:[],sequence:!1},t.undoQueue.sequence=!0,t.undoQueue.beginSequence=!0},stopSequence:function(t){t.undoQueue=t.undoQueue||{index:0,queue:[],sequence:!1},t.undoQueue.sequence=!1,t.undoQueue.beginSequence=!1},undo:function(t){var e,r;if(!(void 0===t.undoQueue||isNaN(t.undoQueue.index)||t.undoQueue.index<=0)){for(t.undoQueue.index--,e=t.undoQueue.queue[t.undoQueue.index],t.undoQueue.inSequence=!0,r=0;r=t.undoQueue.queue.length)){for(e=t.undoQueue.queue[t.undoQueue.index],t.undoQueue.inSequence=!0,r=0;re}function u(t,e){return t>=e}r.findBin=function(t,e,r){if(n(e.start))return r?Math.ceil((t-e.start)/e.size-1e-9)-1:Math.floor((t-e.start)/e.size+1e-9);var a,o,f=0,h=e.length,p=0,d=h>1?(e[h-1]-e[0])/(h-1):1;for(o=d>=0?r?s:l:r?u:c,t+=1e-9*d*(r?-1:1)*(d>=0?1:-1);f90&&i.log(\"Long binary search...\"),f-1},r.sorterAsc=function(t,e){return t-e},r.sorterDes=function(t,e){return e-t},r.distinctVals=function(t){var e,n=t.slice();for(n.sort(r.sorterAsc),e=n.length-1;e>-1&&n[e]===o;e--);for(var i,a=n[e]-n[0]||1,s=a/(e||1)/1e4,l=[],c=0;c<=e;c++){var u=n[c],f=u-i;void 0===i?(l.push(u),i=u):f>s&&(a=Math.min(a,f),l.push(u),i=u)}return{vals:l,minDiff:a}},r.roundUp=function(t,e,r){for(var n,i=0,a=e.length-1,o=0,s=r?0:1,l=r?1:0,c=r?Math.ceil:Math.floor;i0&&(n=1),r&&n)return t.sort(e)}return n?t:t.reverse()},r.findIndexOfMin=function(t,e){e=e||a;for(var r,n=1/0,i=0;ia.length)&&(o=a.length),n(e)||(e=!1),i(a[0])){for(l=new Array(o),s=0;st.length-1)return t[t.length-1];var r=e%1;return r*t[Math.ceil(e)]+(1-r)*t[Math.floor(e)]}},{\"./array\":485,\"fast-isnumeric\":190}],528:[function(t,e,r){\"use strict\";var n=t(\"color-normalize\");e.exports=function(t){return t?n(t):[0,0,0,1]}},{\"color-normalize\":89}],529:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../lib\"),a=i.strTranslate,o=t(\"../constants/xmlns_namespaces\"),s=t(\"../constants/alignment\").LINE_SPACING,l=/([^$]*)([$]+[^$]*[$]+)([^$]*)/;r.convertToTspans=function(t,e,d){var A=t.text(),M=!t.attr(\"data-notex\")&&\"undefined\"!=typeof MathJax&&A.match(l),L=n.select(t.node().parentNode);if(!L.empty()){var C=t.attr(\"class\")?t.attr(\"class\").split(\" \")[0]:\"text\";return C+=\"-math\",L.selectAll(\"svg.\"+C).remove(),L.selectAll(\"g.\"+C+\"-group\").remove(),t.style(\"display\",null).attr({\"data-unformatted\":A,\"data-math\":\"N\"}),M?(e&&e._promises||[]).push(new Promise((function(e){t.style(\"display\",\"none\");var r=parseInt(t.node().style.fontSize,10),o={fontSize:r};!function(t,e,r){var a,o,s,l;MathJax.Hub.Queue((function(){return o=i.extendDeepAll({},MathJax.Hub.config),s=MathJax.Hub.processSectionDelay,void 0!==MathJax.Hub.processSectionDelay&&(MathJax.Hub.processSectionDelay=0),MathJax.Hub.Config({messageStyle:\"none\",tex2jax:{inlineMath:[[\"$\",\"$\"],[\"\\\\(\",\"\\\\)\"]]},displayAlign:\"left\"})}),(function(){if(\"SVG\"!==(a=MathJax.Hub.config.menuSettings.renderer))return MathJax.Hub.setRenderer(\"SVG\")}),(function(){var r=\"math-output-\"+i.randstr({},64);return l=n.select(\"body\").append(\"div\").attr({id:r}).style({visibility:\"hidden\",position:\"absolute\"}).style({\"font-size\":e.fontSize+\"px\"}).text(t.replace(c,\"\\\\lt \").replace(u,\"\\\\gt \")),MathJax.Hub.Typeset(l.node())}),(function(){var e=n.select(\"body\").select(\"#MathJax_SVG_glyphs\");if(l.select(\".MathJax_SVG\").empty()||!l.select(\"svg\").node())i.log(\"There was an error in the tex syntax.\",t),r();else{var o=l.select(\"svg\").node().getBoundingClientRect();r(l.select(\".MathJax_SVG\"),e,o)}if(l.remove(),\"SVG\"!==a)return MathJax.Hub.setRenderer(a)}),(function(){return void 0!==s&&(MathJax.Hub.processSectionDelay=s),MathJax.Hub.Config(o)}))}(M[2],o,(function(n,i,o){L.selectAll(\"svg.\"+C).remove(),L.selectAll(\"g.\"+C+\"-group\").remove();var s=n&&n.select(\"svg\");if(!s||!s.node())return P(),void e();var l=L.append(\"g\").classed(C+\"-group\",!0).attr({\"pointer-events\":\"none\",\"data-unformatted\":A,\"data-math\":\"Y\"});l.node().appendChild(s.node()),i&&i.node()&&s.node().insertBefore(i.node().cloneNode(!0),s.node().firstChild);var c=o.width,u=o.height;s.attr({class:C,height:u,preserveAspectRatio:\"xMinYMin meet\"}).style({overflow:\"visible\",\"pointer-events\":\"none\"});var f=t.node().style.fill||\"black\",h=s.select(\"g\");h.attr({fill:f,stroke:f});var p=h.node().getBoundingClientRect(),g=p.width,m=p.height;(g>c||m>u)&&(s.style(\"overflow\",\"hidden\"),g=(p=s.node().getBoundingClientRect()).width,m=p.height);var v=+t.attr(\"x\"),y=+t.attr(\"y\"),x=-(r||t.node().getBoundingClientRect().height)/4;if(\"y\"===C[0])l.attr({transform:\"rotate(\"+[-90,v,y]+\")\"+a(-g/2,x-m/2)});else if(\"l\"===C[0])y=x-m/2;else if(\"a\"===C[0]&&0!==C.indexOf(\"atitle\"))v=0,y=x;else{var b=t.attr(\"text-anchor\");v-=g*(\"middle\"===b?.5:\"end\"===b?1:0),y=y+x-m/2}s.attr({x:v,y:y}),d&&d.call(t,l),e(l)}))}))):P(),t}function P(){L.empty()||(C=t.attr(\"class\")+\"-math\",L.select(\"svg.\"+C).remove()),t.text(\"\").style(\"white-space\",\"pre\"),function(t,e){e=e.replace(g,\" \");var r,a=!1,l=[],c=-1;function u(){c++;var e=document.createElementNS(o.svg,\"tspan\");n.select(e).attr({class:\"line\",dy:c*s+\"em\"}),t.appendChild(e),r=e;var i=l;if(l=[{node:e}],i.length>1)for(var a=1;a doesnt match end tag <\"+t+\">. Pretending it did match.\",e),r=l[l.length-1].node}else i.log(\"Ignoring unexpected end tag .\",e)}y.test(e)?u():(r=t,l=[{node:t}]);for(var L=e.split(m),C=0;C|>|>)/g;var f={sup:\"font-size:70%\",sub:\"font-size:70%\",b:\"font-weight:bold\",i:\"font-style:italic\",a:\"cursor:pointer\",span:\"\",em:\"font-style:italic;font-weight:bold\"},h={sub:\"0.3em\",sup:\"-0.6em\"},p={sub:\"-0.21em\",sup:\"0.42em\"},d=[\"http:\",\"https:\",\"mailto:\",\"\",void 0,\":\"],g=r.NEWLINES=/(\\r\\n?|\\n)/g,m=/(<[^<>]*>)/,v=/<(\\/?)([^ >]*)(\\s+(.*))?>/i,y=//i;r.BR_TAG_ALL=//gi;var x=/(^|[\\s\"'])style\\s*=\\s*(\"([^\"]*);?\"|'([^']*);?')/i,b=/(^|[\\s\"'])href\\s*=\\s*(\"([^\"]*)\"|'([^']*)')/i,_=/(^|[\\s\"'])target\\s*=\\s*(\"([^\"\\s]*)\"|'([^'\\s]*)')/i,w=/(^|[\\s\"'])popup\\s*=\\s*(\"([\\w=,]*)\"|'([\\w=,]*)')/i;function T(t,e){if(!t)return null;var r=t.match(e),n=r&&(r[3]||r[4]);return n&&S(n)}var k=/(^|;)\\s*color:/;r.plainText=function(t,e){for(var r=void 0!==(e=e||{}).len&&-1!==e.len?e.len:1/0,n=void 0!==e.allowedTags?e.allowedTags:[\"br\"],i=\"...\".length,a=t.split(m),o=[],s=\"\",l=0,c=0;ci?o.push(u.substr(0,d-i)+\"...\"):o.push(u.substr(0,d));break}s=\"\"}}return o.join(\"\")};var A={mu:\"\\u03bc\",amp:\"&\",lt:\"<\",gt:\">\",nbsp:\"\\xa0\",times:\"\\xd7\",plusmn:\"\\xb1\",deg:\"\\xb0\"},M=/&(#\\d+|#x[\\da-fA-F]+|[a-z]+);/g;function S(t){return t.replace(M,(function(t,e){return(\"#\"===e.charAt(0)?function(t){if(t>1114111)return;var e=String.fromCodePoint;if(e)return e(t);var r=String.fromCharCode;return t<=65535?r(t):r(55232+(t>>10),t%1024+56320)}(\"x\"===e.charAt(1)?parseInt(e.substr(2),16):parseInt(e.substr(1),10)):A[e])||t}))}function E(t){var e=encodeURI(decodeURI(t)),r=document.createElement(\"a\"),n=document.createElement(\"a\");r.href=t,n.href=e;var i=r.protocol,a=n.protocol;return-1!==d.indexOf(i)&&-1!==d.indexOf(a)?e:\"\"}function L(t,e,r){var n,a,o,s=r.horizontalAlign,l=r.verticalAlign||\"top\",c=t.node().getBoundingClientRect(),u=e.node().getBoundingClientRect();return a=\"bottom\"===l?function(){return c.bottom-n.height}:\"middle\"===l?function(){return c.top+(c.height-n.height)/2}:function(){return c.top},o=\"right\"===s?function(){return c.right-n.width}:\"center\"===s?function(){return c.left+(c.width-n.width)/2}:function(){return c.left},function(){n=this.node().getBoundingClientRect();var t=o()-u.left,e=a()-u.top,s=r.gd||{};if(r.gd){s._fullLayout._calcInverseTransform(s);var l=i.apply3DTransform(s._fullLayout._invTransform)(t,e);t=l[0],e=l[1]}return this.style({top:e+\"px\",left:t+\"px\",\"z-index\":1e3}),this}}r.convertEntities=S,r.sanitizeHTML=function(t){t=t.replace(g,\" \");for(var e=document.createElement(\"p\"),r=e,i=[],a=t.split(m),o=0;oa.ts+e?l():a.timer=setTimeout((function(){l(),a.timer=null}),e)},r.done=function(t){var e=n[t];return e&&e.timer?new Promise((function(t){var r=e.onDone;e.onDone=function(){r&&r(),t(),e.onDone=null}})):Promise.resolve()},r.clear=function(t){if(t)i(n[t]),delete n[t];else for(var e in n)r.clear(e)}},{}],531:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\");e.exports=function(t,e){if(t>0)return Math.log(t)/Math.LN10;var r=Math.log(Math.min(e[0],e[1]))/Math.LN10;return n(r)||(r=Math.log(Math.max(e[0],e[1]))/Math.LN10-6),r}},{\"fast-isnumeric\":190}],532:[function(t,e,r){\"use strict\";var n=e.exports={},i=t(\"../plots/geo/constants\").locationmodeToLayer,a=t(\"topojson-client\").feature;n.getTopojsonName=function(t){return[t.scope.replace(/ /g,\"-\"),\"_\",t.resolution.toString(),\"m\"].join(\"\")},n.getTopojsonPath=function(t,e){return t+e+\".json\"},n.getTopojsonFeatures=function(t,e){var r=i[t.locationmode],n=e.objects[r];return a(e,n).features}},{\"../plots/geo/constants\":587,\"topojson-client\":315}],533:[function(t,e,r){\"use strict\";e.exports={moduleType:\"locale\",name:\"en-US\",dictionary:{\"Click to enter Colorscale title\":\"Click to enter Colorscale title\"},format:{date:\"%m/%d/%Y\"}}},{}],534:[function(t,e,r){\"use strict\";e.exports={moduleType:\"locale\",name:\"en\",dictionary:{\"Click to enter Colorscale title\":\"Click to enter Colourscale title\"},format:{days:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],shortDays:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],months:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],shortMonths:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],periods:[\"AM\",\"PM\"],dateTime:\"%a %b %e %X %Y\",date:\"%d/%m/%Y\",time:\"%H:%M:%S\",decimal:\".\",thousands:\",\",grouping:[3],currency:[\"$\",\"\"],year:\"%Y\",month:\"%b %Y\",dayMonth:\"%b %-d\",dayMonthYear:\"%b %-d, %Y\"}}},{}],535:[function(t,e,r){\"use strict\";var n=t(\"../registry\");e.exports=function(t){for(var e,r,i=n.layoutArrayContainers,a=n.layoutArrayRegexes,o=t.split(\"[\")[0],s=0;s0&&o.log(\"Clearing previous rejected promises from queue.\"),t._promises=[]},r.cleanLayout=function(t){var e,n;t||(t={}),t.xaxis1&&(t.xaxis||(t.xaxis=t.xaxis1),delete t.xaxis1),t.yaxis1&&(t.yaxis||(t.yaxis=t.yaxis1),delete t.yaxis1),t.scene1&&(t.scene||(t.scene=t.scene1),delete t.scene1);var a=(s.subplotsRegistry.cartesian||{}).attrRegex,l=(s.subplotsRegistry.polar||{}).attrRegex,f=(s.subplotsRegistry.ternary||{}).attrRegex,h=(s.subplotsRegistry.gl3d||{}).attrRegex,g=Object.keys(t);for(e=0;e3?(O.x=1.02,O.xanchor=\"left\"):O.x<-2&&(O.x=-.02,O.xanchor=\"right\"),O.y>3?(O.y=1.02,O.yanchor=\"bottom\"):O.y<-2&&(O.y=-.02,O.yanchor=\"top\")),d(t),\"rotate\"===t.dragmode&&(t.dragmode=\"orbit\"),c.clean(t),t.template&&t.template.layout&&r.cleanLayout(t.template.layout),t},r.cleanData=function(t){for(var e=0;e0)return t.substr(0,e)}r.hasParent=function(t,e){for(var r=b(e);r;){if(r in t)return!0;r=b(r)}return!1};var _=[\"x\",\"y\",\"z\"];r.clearAxisTypes=function(t,e,r){for(var n=0;n1&&a.warn(\"Full array edits are incompatible with other edits\",f);var y=r[\"\"][\"\"];if(c(y))e.set(null);else{if(!Array.isArray(y))return a.warn(\"Unrecognized full array edit value\",f,y),!0;e.set(y)}return!g&&(h(m,v),p(t),!0)}var x,b,_,w,T,k,A,M,S=Object.keys(r).map(Number).sort(o),E=e.get(),L=E||[],C=u(v,f).get(),P=[],I=-1,O=L.length;for(x=0;xL.length-(A?0:1))a.warn(\"index out of range\",f,_);else if(void 0!==k)T.length>1&&a.warn(\"Insertion & removal are incompatible with edits to the same index.\",f,_),c(k)?P.push(_):A?(\"add\"===k&&(k={}),L.splice(_,0,k),C&&C.splice(_,0,{})):a.warn(\"Unrecognized full object edit value\",f,_,k),-1===I&&(I=_);else for(b=0;b=0;x--)L.splice(P[x],1),C&&C.splice(P[x],1);if(L.length?E||e.set(L):e.set(null),g)return!1;if(h(m,v),d!==i){var z;if(-1===I)z=S;else{for(O=Math.max(L.length,O),z=[],x=0;x=I);x++)z.push(_);for(x=I;x=t.data.length||i<-t.data.length)throw new Error(r+\" must be valid indices for gd.data.\");if(e.indexOf(i,n+1)>-1||i>=0&&e.indexOf(-t.data.length+i)>-1||i<0&&e.indexOf(t.data.length+i)>-1)throw new Error(\"each index in \"+r+\" must be unique.\")}}function I(t,e,r){if(!Array.isArray(t.data))throw new Error(\"gd.data must be an array.\");if(void 0===e)throw new Error(\"currentIndices is a required argument.\");if(Array.isArray(e)||(e=[e]),P(t,e,\"currentIndices\"),void 0===r||Array.isArray(r)||(r=[r]),void 0!==r&&P(t,r,\"newIndices\"),void 0!==r&&e.length!==r.length)throw new Error(\"current and new indices must be of equal length.\")}function O(t,e,r,n,a){!function(t,e,r,n){var i=o.isPlainObject(n);if(!Array.isArray(t.data))throw new Error(\"gd.data must be an array\");if(!o.isPlainObject(e))throw new Error(\"update must be a key:value object\");if(void 0===r)throw new Error(\"indices must be an integer or array of integers\");for(var a in P(t,r,\"indices\"),e){if(!Array.isArray(e[a])||e[a].length!==r.length)throw new Error(\"attribute \"+a+\" must be an array of length equal to indices array length\");if(i&&(!(a in n)||!Array.isArray(n[a])||n[a].length!==e[a].length))throw new Error(\"when maxPoints is set as a key:value object it must contain a 1:1 corrispondence with the keys and number of traces in the update object\")}}(t,e,r,n);for(var l=function(t,e,r,n){var a,l,c,u,f,h=o.isPlainObject(n),p=[];for(var d in Array.isArray(r)||(r=[r]),r=C(r,t.data.length-1),e)for(var g=0;g-1&&-1===r.indexOf(\"grouptitlefont\")?l(r,r.replace(\"titlefont\",\"title.font\")):r.indexOf(\"titleposition\")>-1?l(r,r.replace(\"titleposition\",\"title.position\")):r.indexOf(\"titleside\")>-1?l(r,r.replace(\"titleside\",\"title.side\")):r.indexOf(\"titleoffset\")>-1&&l(r,r.replace(\"titleoffset\",\"title.offset\")):l(r,r.replace(\"title\",\"title.text\"));function l(e,r){t[r]=t[e],delete t[e]}}function U(t,e,r){t=o.getGraphDiv(t),_.clearPromiseQueue(t);var n={};if(\"string\"==typeof e)n[e]=r;else{if(!o.isPlainObject(e))return o.warn(\"Relayout fail.\",e,r),Promise.reject();n=o.extendFlat({},e)}Object.keys(n).length&&(t.changed=!0);var i=W(t,n),a=i.flags;a.calc&&(t.calcdata=void 0);var s=[h.previousPromises];a.layoutReplot?s.push(w.layoutReplot):Object.keys(n).length&&(V(t,a,i)||h.supplyDefaults(t),a.legend&&s.push(w.doLegend),a.layoutstyle&&s.push(w.layoutStyles),a.axrange&&H(s,i.rangesAltered),a.ticks&&s.push(w.doTicksRelayout),a.modebar&&s.push(w.doModeBar),a.camera&&s.push(w.doCamera),a.colorbars&&s.push(w.doColorBars),s.push(M)),s.push(h.rehover,h.redrag),c.add(t,U,[t,i.undoit],U,[t,i.redoit]);var l=o.syncOrAsync(s,t);return l&&l.then||(l=Promise.resolve(t)),l.then((function(){return t.emit(\"plotly_relayout\",i.eventData),t}))}function V(t,e,r){var n=t._fullLayout;if(!e.axrange)return!1;for(var i in e)if(\"axrange\"!==i&&e[i])return!1;for(var a in r.rangesAltered){var o=p.id2name(a),s=t.layout[o],l=n[o];if(l.autorange=s.autorange,s.range&&(l.range=s.range.slice()),l.cleanRange(),l._matchGroup)for(var c in l._matchGroup)if(c!==a){var u=n[p.id2name(c)];u.autorange=l.autorange,u.range=l.range.slice(),u._input.range=l.range.slice()}}return!0}function H(t,e){var r=e?function(t){var r=[],n=!0;for(var i in e){var a=p.getFromId(t,i);if(r.push(i),-1!==(a.ticklabelposition||\"\").indexOf(\"inside\")&&a._anchorAxis&&r.push(a._anchorAxis._id),a._matchGroup)for(var o in a._matchGroup)e[o]||r.push(o);a.automargin&&(n=!1)}return p.draw(t,r,{skipTitle:n})}:function(t){return p.draw(t,\"redraw\")};t.push(y,w.doAutoRangeAndConstraints,r,w.drawData,w.finalDraw)}var q=/^[xyz]axis[0-9]*\\.range(\\[[0|1]\\])?$/,G=/^[xyz]axis[0-9]*\\.autorange$/,Y=/^[xyz]axis[0-9]*\\.domain(\\[[0|1]\\])?$/;function W(t,e){var r,n,i,a=t.layout,l=t._fullLayout,c=l._guiEditing,h=F(l._preGUI,c),d=Object.keys(e),g=p.list(t),m=o.extendDeepAll({},e),v={};for(j(e),d=Object.keys(e),n=0;n0&&\"string\"!=typeof O.parts[D];)D--;var B=O.parts[D],N=O.parts[D-1]+\".\"+B,U=O.parts.slice(0,D).join(\".\"),V=s(t.layout,U).get(),H=s(l,U).get(),W=O.get();if(void 0!==z){M[I]=z,S[I]=\"reverse\"===B?z:R(W);var Z=f.getLayoutValObject(l,O.parts);if(Z&&Z.impliedEdits&&null!==z)for(var J in Z.impliedEdits)E(o.relativeAttr(I,J),Z.impliedEdits[J]);if(-1!==[\"width\",\"height\"].indexOf(I))if(z){E(\"autosize\",null);var K=\"height\"===I?\"width\":\"height\";E(K,l[K])}else l[I]=t._initialAutoSize[I];else if(\"autosize\"===I)E(\"width\",z?null:l.width),E(\"height\",z?null:l.height);else if(N.match(q))P(N),s(l,U+\"._inputRange\").set(null);else if(N.match(G)){P(N),s(l,U+\"._inputRange\").set(null);var Q=s(l,U).get();Q._inputDomain&&(Q._input.domain=Q._inputDomain.slice())}else N.match(Y)&&s(l,U+\"._inputDomain\").set(null);if(\"type\"===B){L=V;var $=\"linear\"===H.type&&\"log\"===z,tt=\"log\"===H.type&&\"linear\"===z;if($||tt){if(L&&L.range)if(H.autorange)$&&(L.range=L.range[1]>L.range[0]?[1,2]:[2,1]);else{var et=L.range[0],rt=L.range[1];$?(et<=0&&rt<=0&&E(U+\".autorange\",!0),et<=0?et=rt/1e6:rt<=0&&(rt=et/1e6),E(U+\".range[0]\",Math.log(et)/Math.LN10),E(U+\".range[1]\",Math.log(rt)/Math.LN10)):(E(U+\".range[0]\",Math.pow(10,et)),E(U+\".range[1]\",Math.pow(10,rt)))}else E(U+\".autorange\",!0);Array.isArray(l._subplots.polar)&&l._subplots.polar.length&&l[O.parts[0]]&&\"radialaxis\"===O.parts[1]&&delete l[O.parts[0]]._subplot.viewInitial[\"radialaxis.range\"],u.getComponentMethod(\"annotations\",\"convertCoords\")(t,H,z,E),u.getComponentMethod(\"images\",\"convertCoords\")(t,H,z,E)}else E(U+\".autorange\",!0),E(U+\".range\",null);s(l,U+\"._inputRange\").set(null)}else if(B.match(k)){var nt=s(l,I).get(),it=(z||{}).type;it&&\"-\"!==it||(it=\"linear\"),u.getComponentMethod(\"annotations\",\"convertCoords\")(t,nt,it,E),u.getComponentMethod(\"images\",\"convertCoords\")(t,nt,it,E)}var at=b.containerArrayMatch(I);if(at){r=at.array,n=at.index;var ot=at.property,st=Z||{editType:\"calc\"};\"\"!==n&&\"\"===ot&&(b.isAddVal(z)?S[I]=null:b.isRemoveVal(z)?S[I]=(s(a,r).get()||[])[n]:o.warn(\"unrecognized full object value\",e)),T.update(A,st),v[r]||(v[r]={});var lt=v[r][n];lt||(lt=v[r][n]={}),lt[ot]=z,delete e[I]}else\"reverse\"===B?(V.range?V.range.reverse():(E(U+\".autorange\",!0),V.range=[1,0]),H.autorange?A.calc=!0:A.plot=!0):(l._has(\"scatter-like\")&&l._has(\"regl\")&&\"dragmode\"===I&&(\"lasso\"===z||\"select\"===z)&&\"lasso\"!==W&&\"select\"!==W||l._has(\"gl2d\")?A.plot=!0:Z?T.update(A,Z):A.calc=!0,O.set(z))}}for(r in v){b.applyContainerArrayChanges(t,h(a,r),v[r],A,h)||(A.plot=!0)}for(var ct in C){var ut=(L=p.getFromId(t,ct))&&L._constraintGroup;if(ut)for(var ft in A.calc=!0,ut)C[ft]||(p.getFromId(t,ft)._constraintShrinkable=!0)}return(X(t)||e.height||e.width)&&(A.plot=!0),(A.plot||A.calc)&&(A.layoutReplot=!0),{flags:A,rangesAltered:C,undoit:S,redoit:M,eventData:m}}function X(t){var e=t._fullLayout,r=e.width,n=e.height;return t.layout.autosize&&h.plotAutoSize(t,t.layout,e),e.width!==r||e.height!==n}function Z(t,e,n,i){t=o.getGraphDiv(t),_.clearPromiseQueue(t),o.isPlainObject(e)||(e={}),o.isPlainObject(n)||(n={}),Object.keys(e).length&&(t.changed=!0),Object.keys(n).length&&(t.changed=!0);var a=_.coerceTraceIndices(t,i),s=N(t,o.extendFlat({},e),a),l=s.flags,u=W(t,o.extendFlat({},n)),f=u.flags;(l.calc||f.calc)&&(t.calcdata=void 0),l.clearAxisTypes&&_.clearAxisTypes(t,a,n);var p=[];f.layoutReplot?p.push(w.layoutReplot):l.fullReplot?p.push(r._doPlot):(p.push(h.previousPromises),V(t,f,u)||h.supplyDefaults(t),l.style&&p.push(w.doTraceStyle),(l.colorbars||f.colorbars)&&p.push(w.doColorBars),f.legend&&p.push(w.doLegend),f.layoutstyle&&p.push(w.layoutStyles),f.axrange&&H(p,u.rangesAltered),f.ticks&&p.push(w.doTicksRelayout),f.modebar&&p.push(w.doModeBar),f.camera&&p.push(w.doCamera),p.push(M)),p.push(h.rehover,h.redrag),c.add(t,Z,[t,s.undoit,u.undoit,s.traces],Z,[t,s.redoit,u.redoit,s.traces]);var d=o.syncOrAsync(p,t);return d&&d.then||(d=Promise.resolve(t)),d.then((function(){return t.emit(\"plotly_update\",{data:s.eventData,layout:u.eventData}),t}))}function J(t){return function(e){e._fullLayout._guiEditing=!0;var r=t.apply(null,arguments);return e._fullLayout._guiEditing=!1,r}}var K=[{pattern:/^hiddenlabels/,attr:\"legend.uirevision\"},{pattern:/^((x|y)axis\\d*)\\.((auto)?range|title\\.text)/},{pattern:/axis\\d*\\.showspikes$/,attr:\"modebar.uirevision\"},{pattern:/(hover|drag)mode$/,attr:\"modebar.uirevision\"},{pattern:/^(scene\\d*)\\.camera/},{pattern:/^(geo\\d*)\\.(projection|center|fitbounds)/},{pattern:/^(ternary\\d*\\.[abc]axis)\\.(min|title\\.text)$/},{pattern:/^(polar\\d*\\.radialaxis)\\.((auto)?range|angle|title\\.text)/},{pattern:/^(polar\\d*\\.angularaxis)\\.rotation/},{pattern:/^(mapbox\\d*)\\.(center|zoom|bearing|pitch)/},{pattern:/^legend\\.(x|y)$/,attr:\"editrevision\"},{pattern:/^(shapes|annotations)/,attr:\"editrevision\"},{pattern:/^title\\.text$/,attr:\"editrevision\"}],Q=[{pattern:/^selectedpoints$/,attr:\"selectionrevision\"},{pattern:/(^|value\\.)visible$/,attr:\"legend.uirevision\"},{pattern:/^dimensions\\[\\d+\\]\\.constraintrange/},{pattern:/^node\\.(x|y|groups)/},{pattern:/^level$/},{pattern:/(^|value\\.)name$/},{pattern:/colorbar\\.title\\.text$/},{pattern:/colorbar\\.(x|y)$/,attr:\"editrevision\"}];function $(t,e){for(var r=0;r1;)if(n.pop(),void 0!==(r=s(e,n.join(\".\")+\".uirevision\").get()))return r;return e.uirevision}function et(t,e){for(var r=0;r=i.length?i[0]:i[t]:i}function l(t){return Array.isArray(a)?t>=a.length?a[0]:a[t]:a}function c(t,e){var r=0;return function(){if(t&&++r===e)return t()}}return void 0===n._frameWaitingCnt&&(n._frameWaitingCnt=0),new Promise((function(a,u){function f(){n._currentFrame&&n._currentFrame.onComplete&&n._currentFrame.onComplete();var e=n._currentFrame=n._frameQueue.shift();if(e){var r=e.name?e.name.toString():null;t._fullLayout._currentFrame=r,n._lastFrameAt=Date.now(),n._timeToNext=e.frameOpts.duration,h.transition(t,e.frame.data,e.frame.layout,_.coerceTraceIndices(t,e.frame.traces),e.frameOpts,e.transitionOpts).then((function(){e.onComplete&&e.onComplete()})),t.emit(\"plotly_animatingframe\",{name:r,frame:e.frame,animation:{frame:e.frameOpts,transition:e.transitionOpts}})}else t.emit(\"plotly_animated\"),window.cancelAnimationFrame(n._animationRaf),n._animationRaf=null}function p(){t.emit(\"plotly_animating\"),n._lastFrameAt=-1/0,n._timeToNext=0,n._runningTransitions=0,n._currentFrame=null;var e=function(){n._animationRaf=window.requestAnimationFrame(e),Date.now()-n._lastFrameAt>n._timeToNext&&f()};e()}var d,g,m=0;function v(t){return Array.isArray(i)?m>=i.length?t.transitionOpts=i[m]:t.transitionOpts=i[0]:t.transitionOpts=i,m++,t}var y=[],x=null==e,b=Array.isArray(e);if(!x&&!b&&o.isPlainObject(e))y.push({type:\"object\",data:v(o.extendFlat({},e))});else if(x||-1!==[\"string\",\"number\"].indexOf(typeof e))for(d=0;d0&&kk)&&A.push(g);y=A}}y.length>0?function(e){if(0!==e.length){for(var i=0;i=0;n--)if(o.isPlainObject(e[n])){var g=e[n].name,m=(u[g]||d[g]||{}).name,v=e[n].name,y=u[m]||d[m];m&&v&&\"number\"==typeof v&&y&&A<5&&(A++,o.warn('addFrames: overwriting frame \"'+(u[m]||d[m]).name+'\" with a frame whose name of type \"number\" also equates to \"'+m+'\". This is valid but may potentially lead to unexpected behavior since all plotly.js frame names are stored internally as strings.'),5===A&&o.warn(\"addFrames: This API call has yielded too many of these warnings. For the rest of this call, further warnings about numeric frame names will be suppressed.\")),d[g]={name:g},p.push({frame:h.supplyFrameDefaults(e[n]),index:r&&void 0!==r[n]&&null!==r[n]?r[n]:f+n})}p.sort((function(t,e){return t.index>e.index?-1:t.index=0;n--){if(\"number\"==typeof(i=p[n].frame).name&&o.warn(\"Warning: addFrames accepts frames with numeric names, but the numbers areimplicitly cast to strings\"),!i.name)for(;u[i.name=\"frame \"+t._transitionData._counter++];);if(u[i.name]){for(a=0;a=0;r--)n=e[r],a.push({type:\"delete\",index:n}),s.unshift({type:\"insert\",index:n,value:i[n]});var l=h.modifyFrames,u=h.modifyFrames,f=[t,s],p=[t,a];return c&&c.add(t,l,f,u,p),h.modifyFrames(t,a)},r.addTraces=function t(e,n,i){e=o.getGraphDiv(e);var a,s,l=[],u=r.deleteTraces,f=t,h=[e,l],p=[e,n];for(function(t,e,r){var n,i;if(!Array.isArray(t.data))throw new Error(\"gd.data must be an array.\");if(void 0===e)throw new Error(\"traces must be defined.\");for(Array.isArray(e)||(e=[e]),n=0;n=0&&r=0&&r=a.length)return!1;if(2===t.dimensions){if(r++,e.length===r)return t;var o=e[r];if(!y(o))return!1;t=a[i][o]}else t=a[i]}else t=a}}return t}function y(t){return t===Math.round(t)&&t>=0}function x(){var t,e,r={};for(t in f(r,o),n.subplotsRegistry){if((e=n.subplotsRegistry[t]).layoutAttributes)if(Array.isArray(e.attr))for(var i=0;i=l.length)return!1;i=(r=(n.transformsRegistry[l[c].type]||{}).attributes)&&r[e[2]],s=3}else{var u=t._module;if(u||(u=(n.modules[t.type||a.type.dflt]||{})._module),!u)return!1;if(!(i=(r=u.attributes)&&r[o])){var f=u.basePlotModule;f&&f.attributes&&(i=f.attributes[o])}i||(i=a[o])}return v(i,e,s)},r.getLayoutValObject=function(t,e){return v(function(t,e){var r,i,a,s,l=t._basePlotModules;if(l){var c;for(r=0;r=i&&(r._input||{})._templateitemname;o&&(a=i);var s,l=e+\"[\"+a+\"]\";function c(){s={},o&&(s[l]={},s[l].templateitemname=o)}function u(t,e){o?n.nestedProperty(s[l],t).set(e):s[l+\".\"+t]=e}function f(){var t=s;return c(),t}return c(),{modifyBase:function(t,e){s[t]=e},modifyItem:u,getUpdateObj:f,applyUpdate:function(e,r){e&&u(e,r);var i=f();for(var a in i)n.nestedProperty(t,a).set(i[a])}}}},{\"../lib\":503,\"../plots/attributes\":550}],544:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../registry\"),a=t(\"../plots/plots\"),o=t(\"../lib\"),s=t(\"../lib/clear_gl_canvases\"),l=t(\"../components/color\"),c=t(\"../components/drawing\"),u=t(\"../components/titles\"),f=t(\"../components/modebar\"),h=t(\"../plots/cartesian/axes\"),p=t(\"../constants/alignment\"),d=t(\"../plots/cartesian/constraints\"),g=d.enforce,m=d.clean,v=t(\"../plots/cartesian/autorange\").doAutoRange;function y(t,e,r){for(var n=0;n=t[1]||i[1]<=t[0])&&(a[0]e[0]))return!0}return!1}function x(t){var e,i,s,u,d,g,m=t._fullLayout,v=m._size,x=v.p,_=h.list(t,\"\",!0);if(m._paperdiv.style({width:t._context.responsive&&m.autosize&&!t._context._hasZeroWidth&&!t.layout.width?\"100%\":m.width+\"px\",height:t._context.responsive&&m.autosize&&!t._context._hasZeroHeight&&!t.layout.height?\"100%\":m.height+\"px\"}).selectAll(\".main-svg\").call(c.setSize,m.width,m.height),t._context.setBackground(t,m.paper_bgcolor),r.drawMainTitle(t),f.manage(t),!m._has(\"cartesian\"))return a.previousPromises(t);function T(t,e,r){var n=t._lw/2;return\"x\"===t._id.charAt(0)?e?\"top\"===r?e._offset-x-n:e._offset+e._length+x+n:v.t+v.h*(1-(t.position||0))+n%1:e?\"right\"===r?e._offset+e._length+x+n:e._offset-x-n:v.l+v.w*(t.position||0)+n%1}for(e=0;e<_.length;e++){var k=(u=_[e])._anchorAxis;u._linepositions={},u._lw=c.crispRound(t,u.linewidth,1),u._mainLinePosition=T(u,k,u.side),u._mainMirrorPosition=u.mirror&&k?T(u,k,p.OPPOSITE_SIDE[u.side]):null}var A=[],M=[],S=[],E=1===l.opacity(m.paper_bgcolor)&&1===l.opacity(m.plot_bgcolor)&&m.paper_bgcolor===m.plot_bgcolor;for(i in m._plots)if((s=m._plots[i]).mainplot)s.bg&&s.bg.remove(),s.bg=void 0;else{var L=s.xaxis.domain,C=s.yaxis.domain,P=s.plotgroup;if(y(L,C,S)){var I=P.node(),O=s.bg=o.ensureSingle(P,\"rect\",\"bg\");I.insertBefore(O.node(),I.childNodes[0]),M.push(i)}else P.select(\"rect.bg\").remove(),S.push([L,C]),E||(A.push(i),M.push(i))}var z,D,R,F,B,N,j,U,V,H,q,G,Y,W=m._bgLayer.selectAll(\".bg\").data(A);for(W.enter().append(\"rect\").classed(\"bg\",!0),W.exit().remove(),W.each((function(t){m._plots[t].bg=n.select(this)})),e=0;eT?u.push({code:\"unused\",traceType:y,templateCount:w,dataCount:T}):T>w&&u.push({code:\"reused\",traceType:y,templateCount:w,dataCount:T})}}else u.push({code:\"data\"});if(function t(e,r){for(var n in e)if(\"_\"!==n.charAt(0)){var a=e[n],o=g(e,n,r);i(a)?(Array.isArray(e)&&!1===a._template&&a.templateitemname&&u.push({code:\"missing\",path:o,templateitemname:a.templateitemname}),t(a,o)):Array.isArray(a)&&m(a)&&t(a,o)}}({data:p,layout:h},\"\"),u.length)return u.map(v)}},{\"../lib\":503,\"../plots/attributes\":550,\"../plots/plots\":619,\"./plot_config\":541,\"./plot_schema\":542,\"./plot_template\":543}],546:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"./plot_api\"),a=t(\"../plots/plots\"),o=t(\"../lib\"),s=t(\"../snapshot/helpers\"),l=t(\"../snapshot/tosvg\"),c=t(\"../snapshot/svgtoimg\"),u=t(\"../version\").version,f={format:{valType:\"enumerated\",values:[\"png\",\"jpeg\",\"webp\",\"svg\",\"full-json\"],dflt:\"png\"},width:{valType:\"number\",min:1},height:{valType:\"number\",min:1},scale:{valType:\"number\",min:0,dflt:1},setBackground:{valType:\"any\",dflt:!1},imageDataOnly:{valType:\"boolean\",dflt:!1}};e.exports=function(t,e){var r,h,p,d;function g(t){return!(t in e)||o.validate(e[t],f[t])}if(e=e||{},o.isPlainObject(t)?(r=t.data||[],h=t.layout||{},p=t.config||{},d={}):(t=o.getGraphDiv(t),r=o.extendDeep([],t.data),h=o.extendDeep({},t.layout),p=t._context,d=t._fullLayout||{}),!g(\"width\")&&null!==e.width||!g(\"height\")&&null!==e.height)throw new Error(\"Height and width should be pixel values.\");if(!g(\"format\"))throw new Error(\"Export format is not \"+o.join2(f.format.values,\", \",\" or \")+\".\");var m={};function v(t,r){return o.coerce(e,m,f,t,r)}var y=v(\"format\"),x=v(\"width\"),b=v(\"height\"),_=v(\"scale\"),w=v(\"setBackground\"),T=v(\"imageDataOnly\"),k=document.createElement(\"div\");k.style.position=\"absolute\",k.style.left=\"-5000px\",document.body.appendChild(k);var A=o.extendFlat({},h);x?A.width=x:null===e.width&&n(d.width)&&(A.width=d.width),b?A.height=b:null===e.height&&n(d.height)&&(A.height=d.height);var M=o.extendFlat({},p,{_exportedPlot:!0,staticPlot:!0,setBackground:w}),S=s.getRedrawFunc(k);function E(){return new Promise((function(t){setTimeout(t,s.getDelay(k._fullLayout))}))}function L(){return new Promise((function(t,e){var r=l(k,y,_),n=k._fullLayout.width,f=k._fullLayout.height;function h(){i.purge(k),document.body.removeChild(k)}if(\"full-json\"===y){var p=a.graphJson(k,!1,\"keepdata\",\"object\",!0,!0);return p.version=u,p=JSON.stringify(p),h(),t(T?p:s.encodeJSON(p))}if(h(),\"svg\"===y)return t(T?r:s.encodeSVG(r));var d=document.createElement(\"canvas\");d.id=o.randstr(),c({format:y,width:n,height:f,scale:_,canvas:d,svg:r,promise:!0}).then(t).catch(e)}))}return new Promise((function(t,e){i.newPlot(k,r,A,M).then(S).then(E).then(L).then((function(e){t(function(t){return T?t.replace(s.IMAGE_URL_PREFIX,\"\"):t}(e))})).catch((function(t){e(t)}))}))}},{\"../lib\":503,\"../plots/plots\":619,\"../snapshot/helpers\":642,\"../snapshot/svgtoimg\":644,\"../snapshot/tosvg\":646,\"../version\":1119,\"./plot_api\":540,\"fast-isnumeric\":190}],547:[function(t,e,r){\"use strict\";var n=t(\"../lib\"),i=t(\"../plots/plots\"),a=t(\"./plot_schema\"),o=t(\"./plot_config\").dfltConfig,s=n.isPlainObject,l=Array.isArray,c=n.isArrayOrTypedArray;function u(t,e,r,i,a,o){o=o||[];for(var f=Object.keys(t),h=0;hx.length&&i.push(d(\"unused\",a,v.concat(x.length)));var A,M,S,E,L,C=x.length,P=Array.isArray(k);if(P&&(C=Math.min(C,k.length)),2===b.dimensions)for(M=0;Mx[M].length&&i.push(d(\"unused\",a,v.concat(M,x[M].length)));var I=x[M].length;for(A=0;A<(P?Math.min(I,k[M].length):I);A++)S=P?k[M][A]:k,E=y[M][A],L=x[M][A],n.validate(E,S)?L!==E&&L!==+E&&i.push(d(\"dynamic\",a,v.concat(M,A),E,L)):i.push(d(\"value\",a,v.concat(M,A),E))}else i.push(d(\"array\",a,v.concat(M),y[M]));else for(M=0;M1&&p.push(d(\"object\",\"layout\"))),i.supplyDefaults(g);for(var m=g._fullData,v=r.length,y=0;y0&&Math.round(f)===f))return{vals:i};c=f}for(var h=e.calendar,p=\"start\"===l,d=\"end\"===l,g=t[r+\"period0\"],m=a(g,h)||0,v=[],y=[],x=[],b=i.length,_=0;_A;)k=o(k,-c,h);for(;k<=A;)k=o(k,c,h);T=o(k,-c,h)}else{for(k=m+(w=Math.round((A-m)/u))*u;k>A;)k-=u;for(;k<=A;)k+=u;T=k-u}v[_]=p?T:d?k:(T+k)/2,y[_]=T,x[_]=k}return{vals:v,starts:y,ends:x}}},{\"../../constants/numerical\":479,\"../../lib\":503,\"fast-isnumeric\":190}],552:[function(t,e,r){\"use strict\";e.exports={xaxis:{valType:\"subplotid\",dflt:\"x\",editType:\"calc+clearAxisTypes\"},yaxis:{valType:\"subplotid\",dflt:\"y\",editType:\"calc+clearAxisTypes\"}}},{}],553:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"fast-isnumeric\"),a=t(\"../../lib\"),o=t(\"../../constants/numerical\").FP_SAFE,s=t(\"../../registry\"),l=t(\"../../components/drawing\"),c=t(\"./axis_ids\"),u=c.getFromId,f=c.isLinked;function h(t,e){var r,n,i=[],o=t._fullLayout,s=d(o,e,0),l=d(o,e,1),c=g(t,e),u=c.min,f=c.max;if(0===u.length||0===f.length)return a.simpleMap(e.range,e.r2l);var h=u[0].val,m=f[0].val;for(r=1;r0&&((T=E-s(x)-l(b))>L?k/T>C&&(_=x,w=b,C=k/T):k/E>C&&(_={val:x.val,nopad:1},w={val:b.val,nopad:1},C=k/E));if(h===m){var P=h-1,I=h+1;if(M)if(0===h)i=[0,1];else{var O=(h>0?f:u).reduce((function(t,e){return Math.max(t,l(e))}),0),z=h/(1-Math.min(.5,O/E));i=h>0?[0,z]:[z,0]}else i=S?[Math.max(0,P),Math.max(1,I)]:[P,I]}else M?(_.val>=0&&(_={val:0,nopad:1}),w.val<=0&&(w={val:0,nopad:1})):S&&(_.val-C*s(_)<0&&(_={val:0,nopad:1}),w.val<=0&&(w={val:1,nopad:1})),C=(w.val-_.val-p(e,x.val,b.val))/(E-s(_)-l(w)),i=[_.val-C*s(_),w.val+C*l(w)];return v&&i.reverse(),a.simpleMap(i,e.l2r||Number)}function p(t,e,r){var n=0;if(t.rangebreaks)for(var i=t.locateBreaks(e,r),a=0;a0?r.ppadplus:r.ppadminus)||r.ppad||0),S=A((t._m>0?r.ppadminus:r.ppadplus)||r.ppad||0),E=A(r.vpadplus||r.vpad),L=A(r.vpadminus||r.vpad);if(!T){if(h=1/0,p=-1/0,w)for(n=0;n0&&(h=a),a>p&&a-o&&(h=a),a>p&&a=I;n--)P(n);return{min:d,max:g,opts:r}},concatExtremes:g};function g(t,e,r){var n,i,a,o=e._id,s=t._fullData,l=t._fullLayout,c=[],f=[];function h(t,e){for(n=0;n=r&&(c.extrapad||!o)){s=!1;break}i(e,c.val)&&c.pad<=r&&(o||!c.extrapad)&&(t.splice(l,1),l--)}if(s){var u=a&&0===e;t.push({val:e,pad:u?0:r,extrapad:!u&&o})}}function x(t){return i(t)&&Math.abs(t)=e}},{\"../../components/drawing\":388,\"../../constants/numerical\":479,\"../../lib\":503,\"../../registry\":638,\"./axis_ids\":558,\"@plotly/d3\":58,\"fast-isnumeric\":190}],554:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"fast-isnumeric\"),a=t(\"../../plots/plots\"),o=t(\"../../registry\"),s=t(\"../../lib\"),l=s.strTranslate,c=t(\"../../lib/svg_text_utils\"),u=t(\"../../components/titles\"),f=t(\"../../components/color\"),h=t(\"../../components/drawing\"),p=t(\"./layout_attributes\"),d=t(\"./clean_ticks\"),g=t(\"../../constants/numerical\"),m=g.ONEMAXYEAR,v=g.ONEAVGYEAR,y=g.ONEMINYEAR,x=g.ONEMAXQUARTER,b=g.ONEAVGQUARTER,_=g.ONEMINQUARTER,w=g.ONEMAXMONTH,T=g.ONEAVGMONTH,k=g.ONEMINMONTH,A=g.ONEWEEK,M=g.ONEDAY,S=M/2,E=g.ONEHOUR,L=g.ONEMIN,C=g.ONESEC,P=g.MINUS_SIGN,I=g.BADNUM,O={K:\"zeroline\"},z={K:\"gridline\",L:\"path\"},D={K:\"tick\",L:\"path\"},R={K:\"tick\",L:\"text\"},F=t(\"../../constants/alignment\"),B=F.MID_SHIFT,N=F.CAP_SHIFT,j=F.LINE_SPACING,U=F.OPPOSITE_SIDE,V=e.exports={};V.setConvert=t(\"./set_convert\");var H=t(\"./axis_autotype\"),q=t(\"./axis_ids\"),G=q.idSort,Y=q.isLinked;V.id2name=q.id2name,V.name2id=q.name2id,V.cleanId=q.cleanId,V.list=q.list,V.listIds=q.listIds,V.getFromId=q.getFromId,V.getFromTrace=q.getFromTrace;var W=t(\"./autorange\");V.getAutoRange=W.getAutoRange,V.findExtremes=W.findExtremes;function X(t){var e=1e-4*(t[1]-t[0]);return[t[0]-e,t[1]+e]}V.coerceRef=function(t,e,r,n,i,a){var o=n.charAt(n.length-1),l=r._fullLayout._subplots[o+\"axis\"],c=n+\"ref\",u={};return i||(i=l[0]||(\"string\"==typeof a?a:a[0])),a||(a=i),l=l.concat(l.map((function(t){return t+\" domain\"}))),u[c]={valType:\"enumerated\",values:l.concat(a?\"string\"==typeof a?[a]:a:[]),dflt:i},s.coerce(t,e,u,c)},V.getRefType=function(t){return void 0===t?t:\"paper\"===t?\"paper\":\"pixel\"===t?\"pixel\":/( domain)$/.test(t)?\"domain\":\"range\"},V.coercePosition=function(t,e,r,n,i,a){var o,l;if(\"range\"!==V.getRefType(n))o=s.ensureNumber,l=r(i,a);else{var c=V.getFromId(e,n);l=r(i,a=c.fraction2r(a)),o=c.cleanPos}t[i]=o(l)},V.cleanPosition=function(t,e,r){return(\"paper\"===r||\"pixel\"===r?s.ensureNumber:V.getFromId(e,r).cleanPos)(t)},V.redrawComponents=function(t,e){e=e||V.listIds(t);var r=t._fullLayout;function n(n,i,a,s){for(var l=o.getComponentMethod(n,i),c={},u=0;u2e-6||((r-t._forceTick0)/t._minDtick%1+1.000001)%1>2e-6)&&(t._minDtick=0)):t._minDtick=0},V.saveRangeInitial=function(t,e){for(var r=V.list(t,\"\",!0),n=!1,i=0;i.3*h||u(n)||u(a))){var p=r.dtick/2;t+=t+p.8){var o=Number(r.substr(1));a.exactYears>.8&&o%12==0?t=V.tickIncrement(t,\"M6\",\"reverse\")+1.5*M:a.exactMonths>.8?t=V.tickIncrement(t,\"M1\",\"reverse\")+15.5*M:t-=S;var l=V.tickIncrement(t,r);if(l<=n)return l}return t}(y,t,v,c,a)),m=y,0;m<=u;)m=V.tickIncrement(m,v,!1,a);return{start:e.c2r(y,0,a),end:e.c2r(m,0,a),size:v,_dataSpan:u-c}},V.prepTicks=function(t,e){var r=s.simpleMap(t.range,t.r2l,void 0,void 0,e);if(t._dtickInit=t.dtick,t._tick0Init=t.tick0,\"auto\"===t.tickmode||!t.dtick){var n,a=t.nticks;a||(\"category\"===t.type||\"multicategory\"===t.type?(n=t.tickfont?s.bigFont(t.tickfont.size||12):15,a=t._length/n):(n=\"y\"===t._id.charAt(0)?40:80,a=s.constrain(t._length/n,4,9)+1),\"radialaxis\"===t._name&&(a*=2)),\"array\"===t.tickmode&&(a*=100),t._roughDTick=Math.abs(r[1]-r[0])/a,V.autoTicks(t,t._roughDTick),t._minDtick>0&&t.dtick<2*t._minDtick&&(t.dtick=t._minDtick,t.tick0=t.l2r(t._forceTick0))}\"period\"===t.ticklabelmode&&function(t){var e;function r(){return!(i(t.dtick)||\"M\"!==t.dtick.charAt(0))}var n=r(),a=V.getTickFormat(t);if(a){var o=t._dtickInit!==t.dtick;/%[fLQsSMX]/.test(a)||(/%[HI]/.test(a)?(e=E,o&&!n&&t.dticka&&f=o:d<=o;d=V.tickIncrement(d,t.dtick,l,t.calendar)){if(R++,t.rangebreaks&&!l){if(d=u)break}if(P.length>C||d===O)break;O=d;var F=!1;h&&d!==(0|d)&&(F=!0);var B={minor:F,value:d};L>1&&R%L&&(B.skipLabel=!0),P.push(B)}if(p&&function(t,e,r){for(var n=0;n0?(a=n-1,o=n):(a=n,o=n);var s,l=t[a].value,c=t[o].value,u=Math.abs(c-l),f=r||u,h=0;f>=y?h=u>=y&&u<=m?u:v:r===b&&f>=_?h=u>=_&&u<=x?u:b:f>=k?h=u>=k&&u<=w?u:T:r===A&&f>=A?h=A:f>=M?h=M:r===S&&f>=S?h=S:r===E&&f>=E&&(h=E),h>=u&&(h=u,s=!0);var p=i+h;if(e.rangebreaks&&h>0){for(var d=0,g=0;g<84;g++){var L=(g+.5)/84;e.maskBreaks(i*(1-L)+L*p)!==I&&d++}(h*=d/84)||(t[n].drop=!0),s&&u>A&&(h=u)}(h>0||0===n)&&(t[n].periodX=i+h/2)}}(P,t,t._definedDelta),t.rangebreaks){var N=\"y\"===t._id.charAt(0),j=1;\"auto\"===t.tickmode&&(j=t.tickfont?t.tickfont.size:12);var U=NaN;for(z=P.length-1;z>-1;z--)if(P[z].drop)P.splice(z,1);else{P[z].value=Mt(P[z].value,t);var H=t.c2p(P[z].value);(N?U>H-j:Uu||Gu&&(q.periodX=u),G10||\"01-01\"!==n.substr(5)?t._tickround=\"d\":t._tickround=+e.substr(1)%12==0?\"y\":\"m\";else if(e>=M&&a<=10||e>=15*M)t._tickround=\"d\";else if(e>=L&&a<=16||e>=E)t._tickround=\"M\";else if(e>=C&&a<=19||e>=L)t._tickround=\"S\";else{var o=t.l2r(r+e).replace(/^-/,\"\").length;t._tickround=Math.max(a,o)-20,t._tickround<0&&(t._tickround=4)}}else if(i(e)||\"L\"===e.charAt(0)){var s=t.range.map(t.r2d||Number);i(e)||(e=Number(e.substr(1))),t._tickround=2-Math.floor(Math.log(e)/Math.LN10+.01);var l=Math.max(Math.abs(s[0]),Math.abs(s[1])),c=Math.floor(Math.log(l)/Math.LN10+.01),u=void 0===t.minexponent?3:t.minexponent;Math.abs(c)>u&&(ut(t.exponentformat)&&!ft(c)?t._tickexponent=3*Math.round((c-1)/3):t._tickexponent=c)}else t._tickround=null}function lt(t,e,r){var n=t.tickfont||{};return{x:e,dx:0,dy:0,text:r||\"\",fontSize:n.size,font:n.family,fontColor:n.color}}V.autoTicks=function(t,e){var r;function n(t){return Math.pow(t,Math.floor(Math.log(e)/Math.LN10))}if(\"date\"===t.type){t.tick0=s.dateTick0(t.calendar,0);var a=2*e;if(a>v)e/=v,r=n(10),t.dtick=\"M\"+12*ot(e,r,$);else if(a>T)e/=T,t.dtick=\"M\"+ot(e,1,tt);else if(a>M){t.dtick=ot(e,M,t._hasDayOfWeekBreaks?[1,2,7,14]:rt);var o=V.getTickFormat(t),l=\"period\"===t.ticklabelmode;l&&(t._rawTick0=t.tick0),/%[uVW]/.test(o)?t.tick0=s.dateTick0(t.calendar,2):t.tick0=s.dateTick0(t.calendar,1),l&&(t._dowTick0=t.tick0)}else a>E?t.dtick=ot(e,E,tt):a>L?t.dtick=ot(e,L,et):a>C?t.dtick=ot(e,C,et):(r=n(10),t.dtick=ot(e,r,$))}else if(\"log\"===t.type){t.tick0=0;var c=s.simpleMap(t.range,t.r2l);if(e>.7)t.dtick=Math.ceil(e);else if(Math.abs(c[1]-c[0])<1){var u=1.5*Math.abs((c[1]-c[0])/e);e=Math.abs(Math.pow(10,c[1])-Math.pow(10,c[0]))/u,r=n(10),t.dtick=\"L\"+ot(e,r,$)}else t.dtick=e>.3?\"D2\":\"D1\"}else\"category\"===t.type||\"multicategory\"===t.type?(t.tick0=0,t.dtick=Math.ceil(Math.max(e,1))):At(t)?(t.tick0=0,r=1,t.dtick=ot(e,r,at)):(t.tick0=0,r=n(10),t.dtick=ot(e,r,$));if(0===t.dtick&&(t.dtick=1),!i(t.dtick)&&\"string\"!=typeof t.dtick){var f=t.dtick;throw t.dtick=1,\"ax.dtick error: \"+String(f)}},V.tickIncrement=function(t,e,r,a){var o=r?-1:1;if(i(e))return s.increment(t,o*e);var l=e.charAt(0),c=o*Number(e.substr(1));if(\"M\"===l)return s.incrementMonth(t,c,a);if(\"L\"===l)return Math.log(Math.pow(10,t)+c)/Math.LN10;if(\"D\"===l){var u=\"D2\"===e?it:nt,f=t+.01*o,h=s.roundUp(s.mod(f,1),u,r);return Math.floor(f)+Math.log(n.round(Math.pow(10,h),1))/Math.LN10}throw\"unrecognized dtick \"+String(e)},V.tickFirst=function(t,e){var r=t.r2l||Number,a=s.simpleMap(t.range,r,void 0,void 0,e),o=a[1] \")}else t._prevDateHead=l,c+=\"
\"+l;e.text=c}(t,o,r,c):\"log\"===u?function(t,e,r,n,a){var o=t.dtick,l=e.x,c=t.tickformat,u=\"string\"==typeof o&&o.charAt(0);\"never\"===a&&(a=\"\");n&&\"L\"!==u&&(o=\"L3\",u=\"L\");if(c||\"L\"===u)e.text=ht(Math.pow(10,l),t,a,n);else if(i(o)||\"D\"===u&&s.mod(l+.01,1)<.1){var f=Math.round(l),h=Math.abs(f),p=t.exponentformat;\"power\"===p||ut(p)&&ft(f)?(e.text=0===f?1:1===f?\"10\":\"10\"+(f>1?\"\":P)+h+\"\",e.fontSize*=1.25):(\"e\"===p||\"E\"===p)&&h>2?e.text=\"1\"+p+(f>0?\"+\":P)+h:(e.text=ht(Math.pow(10,l),t,\"\",\"fakehover\"),\"D1\"===o&&\"y\"===t._id.charAt(0)&&(e.dy-=e.fontSize/6))}else{if(\"D\"!==u)throw\"unrecognized dtick \"+String(o);e.text=String(Math.round(Math.pow(10,s.mod(l,1)))),e.fontSize*=.75}if(\"D1\"===t.dtick){var d=String(e.text).charAt(0);\"0\"!==d&&\"1\"!==d||(\"y\"===t._id.charAt(0)?e.dx-=e.fontSize/4:(e.dy+=e.fontSize/2,e.dx+=(t.range[1]>t.range[0]?1:-1)*e.fontSize*(l<0?.5:.25)))}}(t,o,0,c,g):\"category\"===u?function(t,e){var r=t._categories[Math.round(e.x)];void 0===r&&(r=\"\");e.text=String(r)}(t,o):\"multicategory\"===u?function(t,e,r){var n=Math.round(e.x),i=t._categories[n]||[],a=void 0===i[1]?\"\":String(i[1]),o=void 0===i[0]?\"\":String(i[0]);r?e.text=o+\" - \"+a:(e.text=a,e.text2=o)}(t,o,r):At(t)?function(t,e,r,n,i){if(\"radians\"!==t.thetaunit||r)e.text=ht(e.x,t,i,n);else{var a=e.x/180;if(0===a)e.text=\"0\";else{var o=function(t){function e(t,e){return Math.abs(t-e)<=1e-6}var r=function(t){for(var r=1;!e(Math.round(t*r)/r,t);)r*=10;return r}(t),n=t*r,i=Math.abs(function t(r,n){return e(n,0)?r:t(n,r%n)}(n,r));return[Math.round(n/i),Math.round(r/i)]}(a);if(o[1]>=100)e.text=ht(s.deg2rad(e.x),t,i,n);else{var l=e.x<0;1===o[1]?1===o[0]?e.text=\"\\u03c0\":e.text=o[0]+\"\\u03c0\":e.text=[\"\",o[0],\"\",\"\\u2044\",\"\",o[1],\"\",\"\\u03c0\"].join(\"\"),l&&(e.text=P+e.text)}}}}(t,o,r,c,g):function(t,e,r,n,i){\"never\"===i?i=\"\":\"all\"===t.showexponent&&Math.abs(e.x/t.dtick)<1e-6&&(i=\"hide\");e.text=ht(e.x,t,i,n)}(t,o,0,c,g),n||(t.tickprefix&&!d(t.showtickprefix)&&(o.text=t.tickprefix+o.text),t.ticksuffix&&!d(t.showticksuffix)&&(o.text+=t.ticksuffix)),\"boundaries\"===t.tickson||t.showdividers){var m=function(e){var r=t.l2p(e);return r>=0&&r<=t._length?e:null};o.xbnd=[m(o.x-.5),m(o.x+t.dtick-.5)]}return o},V.hoverLabelText=function(t,e,r){r&&(t=s.extendFlat({},t,{hoverformat:r}));var n=Array.isArray(e)?e[0]:e,i=Array.isArray(e)?e[1]:void 0;if(void 0!==i&&i!==n)return V.hoverLabelText(t,n,r)+\" - \"+V.hoverLabelText(t,i,r);var a=\"log\"===t.type&&n<=0,o=V.tickText(t,t.c2l(a?-n:n),\"hover\").text;return a?0===n?\"0\":P+o:o};var ct=[\"f\",\"p\",\"n\",\"\\u03bc\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\"];function ut(t){return\"SI\"===t||\"B\"===t}function ft(t){return t>14||t<-15}function ht(t,e,r,n){var a=t<0,o=e._tickround,l=r||e.exponentformat||\"B\",c=e._tickexponent,u=V.getTickFormat(e),f=e.separatethousands;if(n){var h={exponentformat:l,minexponent:e.minexponent,dtick:\"none\"===e.showexponent?e.dtick:i(t)&&Math.abs(t)||1,range:\"none\"===e.showexponent?e.range.map(e.r2d):[0,t||1]};st(h),o=(Number(h._tickround)||0)+4,c=h._tickexponent,e.hoverformat&&(u=e.hoverformat)}if(u)return e._numFormat(u)(t).replace(/-/g,P);var p,d=Math.pow(10,-o)/2;if(\"none\"===l&&(c=0),(t=Math.abs(t))\"+p+\"\":\"B\"===l&&9===c?t+=\"B\":ut(l)&&(t+=ct[c/3+5]));return a?P+t:t}function pt(t,e){for(var r=[],n={},i=0;i1&&r=i.min&&t=0,a=u(t,e[1])<=0;return(r||i)&&(n||a)}if(t.tickformatstops&&t.tickformatstops.length>0)switch(t.type){case\"date\":case\"linear\":for(e=0;e=o(i)))){r=n;break}break;case\"log\":for(e=0;e0?r.bottom-f:0,h)))),e.automargin){n={x:0,y:0,r:0,l:0,t:0,b:0};var p=[0,1];if(\"x\"===d){if(\"b\"===l?n[l]=e._depth:(n[l]=e._depth=Math.max(r.width>0?f-r.top:0,h),p.reverse()),r.width>0){var m=r.right-(e._offset+e._length);m>0&&(n.xr=1,n.r=m);var v=e._offset-r.left;v>0&&(n.xl=0,n.l=v)}}else if(\"l\"===l?n[l]=e._depth=Math.max(r.height>0?f-r.left:0,h):(n[l]=e._depth=Math.max(r.height>0?r.right-f:0,h),p.reverse()),r.height>0){var y=r.bottom-(e._offset+e._length);y>0&&(n.yb=0,n.b=y);var x=e._offset-r.top;x>0&&(n.yt=1,n.t=x)}n[g]=\"free\"===e.anchor?e.position:e._anchorAxis.domain[p[0]],e.title.text!==c._dfltTitle[d]&&(n[l]+=mt(e)+(e.title.standoff||0)),e.mirror&&\"free\"!==e.anchor&&((i={x:0,y:0,r:0,l:0,t:0,b:0})[u]=e.linewidth,e.mirror&&!0!==e.mirror&&(i[u]+=h),!0===e.mirror||\"ticks\"===e.mirror?i[g]=e._anchorAxis.domain[p[1]]:\"all\"!==e.mirror&&\"allticks\"!==e.mirror||(i[g]=[e._counterDomainMin,e._counterDomainMax][p[1]]))}K&&(s=o.getComponentMethod(\"rangeslider\",\"autoMarginOpts\")(t,e)),a.autoMargin(t,xt(e),n),a.autoMargin(t,bt(e),i),a.autoMargin(t,_t(e),s)})),r.skipTitle||K&&\"bottom\"===e.side||Z.push((function(){return function(t,e){var r,n=t._fullLayout,i=e._id,a=i.charAt(0),o=e.title.font.size;if(e.title.hasOwnProperty(\"standoff\"))r=e._depth+e.title.standoff+mt(e);else{var s=St(e);if(\"multicategory\"===e.type)r=e._depth;else{var l=1.5*o;s&&(l=.5*o,\"outside\"===e.ticks&&(l+=e.ticklen)),r=10+l+(e.linewidth?e.linewidth-1:0)}s||(r+=\"x\"===a?\"top\"===e.side?o*(e.showticklabels?1:0):o*(e.showticklabels?1.5:.5):\"right\"===e.side?o*(e.showticklabels?1:.5):o*(e.showticklabels?.5:0))}var c,f,p,d,g=V.getPxPosition(t,e);\"x\"===a?(f=e._offset+e._length/2,p=\"top\"===e.side?g-r:g+r):(p=e._offset+e._length/2,f=\"right\"===e.side?g+r:g-r,c={rotate:\"-90\",offset:0});if(\"multicategory\"!==e.type){var m=e._selections[e._id+\"tick\"];if(d={selection:m,side:e.side},m&&m.node()&&m.node().parentNode){var v=h.getTranslate(m.node().parentNode);d.offsetLeft=v.x,d.offsetTop=v.y}e.title.hasOwnProperty(\"standoff\")&&(d.pad=0)}return u.draw(t,i+\"title\",{propContainer:e,propName:e._name+\".title.text\",placeholder:n._dfltTitle[a],avoid:d,transform:c,attributes:{x:f,y:p,\"text-anchor\":\"middle\"}})}(t,e)})),s.syncOrAsync(Z)}}function Q(t){var r=p+(t||\"tick\");return w[r]||(w[r]=function(t,e){var r,n,i,a;t._selections[e].size()?(r=1/0,n=-1/0,i=1/0,a=-1/0,t._selections[e].each((function(){var t=yt(this),e=h.bBox(t.node().parentNode);r=Math.min(r,e.top),n=Math.max(n,e.bottom),i=Math.min(i,e.left),a=Math.max(a,e.right)}))):(r=0,n=0,i=0,a=0);return{top:r,bottom:n,left:i,right:a,height:n-r,width:a-i}}(e,r)),w[r]}},V.getTickSigns=function(t){var e=t._id.charAt(0),r={x:\"top\",y:\"right\"}[e],n=t.side===r?1:-1,i=[-1,1,n,-n];return\"inside\"!==t.ticks==(\"x\"===e)&&(i=i.map((function(t){return-t}))),t.side&&i.push({l:-1,t:-1,r:1,b:1}[t.side.charAt(0)]),i},V.makeTransTickFn=function(t){return\"x\"===t._id.charAt(0)?function(e){return l(t._offset+t.l2p(e.x),0)}:function(e){return l(0,t._offset+t.l2p(e.x))}},V.makeTransTickLabelFn=function(t){var e=function(t){var e=t.ticklabelposition||\"\",r=function(t){return-1!==e.indexOf(t)},n=r(\"top\"),i=r(\"left\"),a=r(\"right\"),o=r(\"bottom\"),s=r(\"inside\"),l=o||i||n||a;if(!l&&!s)return[0,0];var c=t.side,u=l?(t.tickwidth||0)/2:0,f=3,h=t.tickfont?t.tickfont.size:12;(o||n)&&(u+=h*N,f+=(t.linewidth||0)/2);(i||a)&&(u+=(t.linewidth||0)/2,f+=3);s&&\"top\"===c&&(f-=h*(1-N));(i||n)&&(u=-u);\"bottom\"!==c&&\"right\"!==c||(f=-f);return[l?u:0,s?f:0]}(t),r=e[0],n=e[1];return\"x\"===t._id.charAt(0)?function(e){return l(r+t._offset+t.l2p(dt(e)),n)}:function(e){return l(n,r+t._offset+t.l2p(dt(e)))}},V.makeTickPath=function(t,e,r,n){n=void 0!==n?n:t.ticklen;var i=t._id.charAt(0),a=(t.linewidth||1)/2;return\"x\"===i?\"M0,\"+(e+a*r)+\"v\"+n*r:\"M\"+(e+a*r)+\",0h\"+n*r},V.makeLabelFns=function(t,e,r){var n=t.ticklabelposition||\"\",a=function(t){return-1!==n.indexOf(t)},o=a(\"top\"),l=a(\"left\"),c=a(\"right\"),u=a(\"bottom\")||l||o||c,f=a(\"inside\"),h=\"inside\"===n&&\"inside\"===t.ticks||!f&&\"outside\"===t.ticks&&\"boundaries\"!==t.tickson,p=0,d=0,g=h?t.ticklen:0;if(f?g*=-1:u&&(g=0),h&&(p+=g,r)){var m=s.deg2rad(r);p=g*Math.cos(m)+1,d=g*Math.sin(m)}t.showticklabels&&(h||t.showline)&&(p+=.2*t.tickfont.size);var v,y,x,b,_,w={labelStandoff:p+=(t.linewidth||1)/2*(f?-1:1),labelShift:d},T=0,k=t.side,A=t._id.charAt(0),M=t.tickangle;if(\"x\"===A)b=(_=!f&&\"bottom\"===k||f&&\"top\"===k)?1:-1,f&&(b*=-1),v=d*b,y=e+p*b,x=_?1:-.2,90===Math.abs(M)&&(f?x+=B:x=-90===M&&\"bottom\"===k?N:90===M&&\"top\"===k?B:.5,T=B/2*(M/90)),w.xFn=function(t){return t.dx+v+T*t.fontSize},w.yFn=function(t){return t.dy+y+t.fontSize*x},w.anchorFn=function(t,e){if(u){if(l)return\"end\";if(c)return\"start\"}return i(e)&&0!==e&&180!==e?e*b<0!==f?\"end\":\"start\":\"middle\"},w.heightFn=function(e,r,n){return r<-60||r>60?-.5*n:\"top\"===t.side!==f?-n:0};else if(\"y\"===A){if(b=(_=!f&&\"left\"===k||f&&\"right\"===k)?1:-1,f&&(b*=-1),v=p,y=d*b,x=0,f||90!==Math.abs(M)||(x=-90===M&&\"left\"===k||90===M&&\"right\"===k?N:.5),f){var S=i(M)?+M:0;if(0!==S){var E=s.deg2rad(S);T=Math.abs(Math.sin(E))*N*b,x=0}}w.xFn=function(t){return t.dx+e-(v+t.fontSize*x)*b+T*t.fontSize},w.yFn=function(t){return t.dy+y+t.fontSize*B},w.anchorFn=function(t,e){return i(e)&&90===Math.abs(e)?\"middle\":_?\"end\":\"start\"},w.heightFn=function(e,r,n){return\"right\"===t.side&&(r*=-1),r<-30?-n:r<30?-.5*n:0}}return w},V.drawTicks=function(t,e,r){r=r||{};var n=e._id+\"tick\",i=r.vals;\"period\"===e.ticklabelmode&&(i=i.slice()).shift();var a=r.layer.selectAll(\"path.\"+n).data(e.ticks?i:[],gt);a.exit().remove(),a.enter().append(\"path\").classed(n,1).classed(\"ticks\",1).classed(\"crisp\",!1!==r.crisp).call(f.stroke,e.tickcolor).style(\"stroke-width\",h.crispRound(t,e.tickwidth,1)+\"px\").attr(\"d\",r.path).style(\"display\",null),Et(e,[D]),a.attr(\"transform\",r.transFn)},V.drawGrid=function(t,e,r){r=r||{};var n=e._id+\"grid\",i=r.vals,a=r.counterAxis;if(!1===e.showgrid)i=[];else if(a&&V.shouldShowZeroLine(t,e,a))for(var o=\"array\"===e.tickmode,s=0;sp||a.leftp||a.top+(e.tickangle?0:t.fontSize/4)e[\"_visibleLabelMin_\"+r._id]?l.style(\"display\",\"none\"):\"tick\"!==t.K||i||l.style(\"display\",null)}))}))}))}))},x(v,m+1?m:g);var b=null;e._selections&&(e._selections[f]=v);var _=[function(){return y.length&&Promise.all(y)}];e.automargin&&a._redrawFromAutoMarginCount&&90===m?(b=90,_.push((function(){x(v,m)}))):_.push((function(){if(x(v,g),p.length&&\"x\"===u&&!i(g)&&(\"log\"!==e.type||\"D\"!==String(e.dtick).charAt(0))){b=0;var t,n=0,a=[];if(v.each((function(t){n=Math.max(n,t.fontSize);var r=e.l2p(t.x),i=yt(this),o=h.bBox(i.node());a.push({top:0,bottom:10,height:10,left:r-o.width/2,right:r+o.width/2+2,width:o.width+2})})),\"boundaries\"!==e.tickson&&!e.showdividers||r.secondary){var o=p.length,l=Math.abs((p[o-1].x-p[0].x)*e._m)/(o-1),c=e.ticklabelposition||\"\",f=function(t){return-1!==c.indexOf(t)},d=f(\"top\"),m=f(\"left\"),y=f(\"right\"),_=f(\"bottom\")||m||d||y?(e.tickwidth||0)+6:0,w=l<2.5*n||\"multicategory\"===e.type||\"realaxis\"===e._name;for(t=0;t1)for(n=1;n2*o}(i,e))return\"date\";var m=\"strict\"!==r.autotypenumbers;return function(t,e){for(var r=t.length,n=f(r),i=0,o=0,s={},u=0;u2*i}(i,m)?\"category\":function(t,e){for(var r=t.length,n=0;n=2){var l,c,u=\"\";if(2===o.length)for(l=0;l<2;l++)if(c=x(o[l])){u=g;break}var f=i(\"pattern\",u);if(f===g)for(l=0;l<2;l++)(c=x(o[l]))&&(e.bounds[l]=o[l]=c-1);if(f)for(l=0;l<2;l++)switch(c=o[l],f){case g:if(!n(c))return void(e.enabled=!1);if((c=+c)!==Math.floor(c)||c<0||c>=7)return void(e.enabled=!1);e.bounds[l]=o[l]=c;break;case m:if(!n(c))return void(e.enabled=!1);if((c=+c)<0||c>24)return void(e.enabled=!1);e.bounds[l]=o[l]=c}if(!1===r.autorange){var h=r.range;if(h[0]h[1])return void(e.enabled=!1)}else if(o[0]>h[0]&&o[1]n?1:-1:+(t.substr(1)||1)-+(e.substr(1)||1)},r.ref2id=function(t){return!!/^[xyz]/.test(t)&&t.split(\" \")[0]},r.isLinked=function(t,e){return a(e,t._axisMatchGroups)||a(e,t._axisConstraintGroups)}},{\"../../registry\":638,\"./constants\":561}],559:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,n){if(\"category\"===e.type){var i,a=t.categoryarray,o=Array.isArray(a)&&a.length>0;o&&(i=\"array\");var s,l=r(\"categoryorder\",i);\"array\"===l&&(s=r(\"categoryarray\")),o||\"array\"!==l||(l=e.categoryorder=\"trace\"),\"trace\"===l?e._initialCategories=[]:\"array\"===l?e._initialCategories=s.slice():(s=function(t,e){var r,n,i,a=e.dataAttr||t._id.charAt(0),o={};if(e.axData)r=e.axData;else for(r=[],n=0;nn?i.substr(n):a.substr(r))+o:i+a+t*e:o}function m(t,e){for(var r=e._size,n=r.h/r.w,i={},a=Object.keys(t),o=0;oc*x)||T)for(r=0;rO&&FP&&(P=F);h/=(P-C)/(2*I),C=l.l2r(C),P=l.l2r(P),l.range=l._input.range=S=0?Math.min(t,.9):1/(1/Math.max(t,-.3)+3.222))}function N(t,e,r,n,i){return t.append(\"path\").attr(\"class\",\"zoombox\").style({fill:e>.2?\"rgba(0,0,0,0)\":\"rgba(255,255,255,0)\",\"stroke-width\":0}).attr(\"transform\",c(r,n)).attr(\"d\",i+\"Z\")}function j(t,e,r){return t.append(\"path\").attr(\"class\",\"zoombox-corners\").style({fill:f.background,stroke:f.defaultLine,\"stroke-width\":1,opacity:0}).attr(\"transform\",c(e,r)).attr(\"d\",\"M0,0Z\")}function U(t,e,r,n,i,a){t.attr(\"d\",n+\"M\"+r.l+\",\"+r.t+\"v\"+r.h+\"h\"+r.w+\"v-\"+r.h+\"h-\"+r.w+\"Z\"),V(t,e,i,a)}function V(t,e,r,n){r||(t.transition().style(\"fill\",n>.2?\"rgba(0,0,0,0.4)\":\"rgba(255,255,255,0.3)\").duration(200),e.transition().style(\"opacity\",1).duration(200))}function H(t){n.select(t).selectAll(\".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners\").remove()}function q(t){I&&t.data&&t._context.showTips&&(i.notifier(i._(t,\"Double-click to zoom back out\"),\"long\"),I=!1)}function G(t){var e=Math.floor(Math.min(t.b-t.t,t.r-t.l,P)/2);return\"M\"+(t.l-3.5)+\",\"+(t.t-.5+e)+\"h3v\"+-e+\"h\"+e+\"v-3h-\"+(e+3)+\"ZM\"+(t.r+3.5)+\",\"+(t.t-.5+e)+\"h-3v\"+-e+\"h\"+-e+\"v-3h\"+(e+3)+\"ZM\"+(t.r+3.5)+\",\"+(t.b+.5-e)+\"h-3v\"+e+\"h\"+-e+\"v3h\"+(e+3)+\"ZM\"+(t.l-3.5)+\",\"+(t.b+.5-e)+\"h3v\"+e+\"h\"+e+\"v3h-\"+(e+3)+\"Z\"}function Y(t,e,r,n,a){for(var o,s,l,c,u=!1,f={},h={},p=(a||{}).xaHash,d=(a||{}).yaHash,g=0;g=0)i._fullLayout._deactivateShape(i);else{var o=i._fullLayout.clickmode;if(H(i),2!==t||vt||qt(),mt)o.indexOf(\"select\")>-1&&S(r,i,J,K,e.id,Pt),o.indexOf(\"event\")>-1&&p.click(i,r,e.id);else if(1===t&&vt){var s=g?O:I,c=\"s\"===g||\"w\"===v?0:1,f=s._name+\".range[\"+c+\"]\",h=function(t,e){var r,n=t.range[e],i=Math.abs(n-t.range[1-e]);return\"date\"===t.type?n:\"log\"===t.type?(r=Math.ceil(Math.max(0,-Math.log(i)/Math.LN10))+3,a(\".\"+r+\"g\")(Math.pow(10,n))):(r=Math.floor(Math.log(Math.abs(n))/Math.LN10)-Math.floor(Math.log(i)/Math.LN10)+4,a(\".\"+String(r)+\"g\")(n))}(s,c),d=\"left\",m=\"middle\";if(s.fixedrange)return;g?(m=\"n\"===g?\"top\":\"bottom\",\"right\"===s.side&&(d=\"right\")):\"e\"===v&&(d=\"right\"),i._context.showAxisRangeEntryBoxes&&n.select(bt).call(u.makeEditable,{gd:i,immediate:!0,background:i._fullLayout.paper_bgcolor,text:String(h),fill:s.tickfont?s.tickfont.color:\"#444\",horizontalAlign:d,verticalAlign:m}).on(\"edit\",(function(t){var e=s.d2r(t);void 0!==e&&l.call(\"_guiRelayout\",i,f,e)}))}}}function zt(e,r){if(t._transitioningWithDuration)return!1;var n=Math.max(0,Math.min(tt,pt*e+_t)),i=Math.max(0,Math.min(et,dt*r+wt)),a=Math.abs(n-_t),o=Math.abs(i-wt);function s(){St=\"\",Tt.r=Tt.l,Tt.t=Tt.b,Lt.attr(\"d\",\"M0,0Z\")}if(Tt.l=Math.min(_t,n),Tt.r=Math.max(_t,n),Tt.t=Math.min(wt,i),Tt.b=Math.max(wt,i),rt.isSubplotConstrained)a>P||o>P?(St=\"xy\",a/tt>o/et?(o=a*et/tt,wt>i?Tt.t=wt-o:Tt.b=wt+o):(a=o*tt/et,_t>n?Tt.l=_t-a:Tt.r=_t+a),Lt.attr(\"d\",G(Tt))):s();else if(nt.isSubplotConstrained)if(a>P||o>P){St=\"xy\";var l=Math.min(Tt.l/tt,(et-Tt.b)/et),c=Math.max(Tt.r/tt,(et-Tt.t)/et);Tt.l=l*tt,Tt.r=c*tt,Tt.b=(1-l)*et,Tt.t=(1-c)*et,Lt.attr(\"d\",G(Tt))}else s();else!at||o0){var u;if(nt.isSubplotConstrained||!it&&1===at.length){for(u=0;ug[1]-1/4096&&(e.domain=s),i.noneOrAll(t.domain,e.domain,s)}return r(\"layer\"),e}},{\"../../lib\":503,\"fast-isnumeric\":190}],573:[function(t,e,r){\"use strict\";var n=t(\"./show_dflt\");e.exports=function(t,e,r,i,a){a||(a={});var o=a.tickSuffixDflt,s=n(t);r(\"tickprefix\")&&r(\"showtickprefix\",s),r(\"ticksuffix\",o)&&r(\"showticksuffix\",s)}},{\"./show_dflt\":577}],574:[function(t,e,r){\"use strict\";var n=t(\"../../constants/alignment\").FROM_BL;e.exports=function(t,e,r){void 0===r&&(r=n[t.constraintoward||\"center\"]);var i=[t.r2l(t.range[0]),t.r2l(t.range[1])],a=i[0]+(i[1]-i[0])*r;t.range=t._input.range=[t.l2r(a+(i[0]-a)*e),t.l2r(a+(i[1]-a)*e)],t.setScale()}},{\"../../constants/alignment\":471}],575:[function(t,e,r){\"use strict\";var n=t(\"polybooljs\"),i=t(\"../../registry\"),a=t(\"../../components/drawing\").dashStyle,o=t(\"../../components/color\"),s=t(\"../../components/fx\"),l=t(\"../../components/fx/helpers\").makeEventData,c=t(\"../../components/dragelement/helpers\"),u=c.freeMode,f=c.rectMode,h=c.drawMode,p=c.openMode,d=c.selectMode,g=t(\"../../components/shapes/draw_newshape/display_outlines\"),m=t(\"../../components/shapes/draw_newshape/helpers\").handleEllipse,v=t(\"../../components/shapes/draw_newshape/newshapes\"),y=t(\"../../lib\"),x=t(\"../../lib/polygon\"),b=t(\"../../lib/throttle\"),_=t(\"./axis_ids\").getFromId,w=t(\"../../lib/clear_gl_canvases\"),T=t(\"../../plot_api/subroutines\").redrawReglTraces,k=t(\"./constants\"),A=k.MINSELECT,M=x.filter,S=x.tester,E=t(\"./handle_outline\").clearSelect,L=t(\"./helpers\"),C=L.p2r,P=L.axValue,I=L.getTransform;function O(t,e,r,n,i,a,o){var s,l,c,u,f,h,d,m,v,y=e._hoverdata,x=e._fullLayout.clickmode.indexOf(\"event\")>-1,b=[];if(function(t){return t&&Array.isArray(t)&&!0!==t[0].hoverOnBox}(y)){F(t,e,a);var _=function(t,e){var r,n,i=t[0],a=-1,o=[];for(n=0;n0?function(t,e){var r,n,i,a=[];for(i=0;i0&&a.push(r);if(1===a.length&&a[0]===e.searchInfo&&(n=e.searchInfo.cd[0].trace).selectedpoints.length===e.pointNumbers.length){for(i=0;i1)return!1;if((i+=r.selectedpoints.length)>1)return!1}return 1===i}(s)&&(h=j(_))){for(o&&o.remove(),v=0;v=0&&n._fullLayout._deactivateShape(n),h(e)){var a=n._fullLayout._zoomlayer.selectAll(\".select-outline-\"+r.id);if(a&&n._fullLayout._drawing){var o=v(a,t);o&&i.call(\"_guiRelayout\",n,{shapes:o}),n._fullLayout._drawing=!1}}r.selection={},r.selection.selectionDefs=t.selectionDefs=[],r.selection.mergedPolygons=t.mergedPolygons=[]}function N(t,e,r,n){var i,a,o,s=[],l=e.map((function(t){return t._id})),c=r.map((function(t){return t._id}));for(o=0;o0?n[0]:r;return!!e.selectedpoints&&e.selectedpoints.indexOf(i)>-1}function U(t,e,r){var n,a,o,s;for(n=0;n=0)L._fullLayout._deactivateShape(L);else if(!_){var r=z.clickmode;b.done(gt).then((function(){if(b.clear(gt),2===t){for(ft.remove(),$=0;$-1&&O(e,L,i.xaxes,i.yaxes,i.subplot,i,ft),\"event\"===r&&L.emit(\"plotly_selected\",void 0);s.click(L,e)})).catch(y.error)}},i.doneFn=function(){dt.remove(),b.done(gt).then((function(){b.clear(gt),i.gd.emit(\"plotly_selected\",et),Q&&i.selectionDefs&&(Q.subtract=ut,i.selectionDefs.push(Q),i.mergedPolygons.length=0,[].push.apply(i.mergedPolygons,K)),i.doneFnCompleted&&i.doneFnCompleted(mt)})).catch(y.error),_&&B(i)}},clearSelect:E,clearSelectionsCache:B,selectOnClick:O}},{\"../../components/color\":366,\"../../components/dragelement/helpers\":384,\"../../components/drawing\":388,\"../../components/fx\":406,\"../../components/fx/helpers\":402,\"../../components/shapes/draw_newshape/display_outlines\":454,\"../../components/shapes/draw_newshape/helpers\":455,\"../../components/shapes/draw_newshape/newshapes\":456,\"../../lib\":503,\"../../lib/clear_gl_canvases\":487,\"../../lib/polygon\":515,\"../../lib/throttle\":530,\"../../plot_api/subroutines\":544,\"../../registry\":638,\"./axis_ids\":558,\"./constants\":561,\"./handle_outline\":565,\"./helpers\":566,polybooljs:254}],576:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"d3-time-format\").utcFormat,a=t(\"../../lib\"),o=a.numberFormat,s=t(\"fast-isnumeric\"),l=a.cleanNumber,c=a.ms2DateTime,u=a.dateTime2ms,f=a.ensureNumber,h=a.isArrayOrTypedArray,p=t(\"../../constants/numerical\"),d=p.FP_SAFE,g=p.BADNUM,m=p.LOG_CLIP,v=p.ONEWEEK,y=p.ONEDAY,x=p.ONEHOUR,b=p.ONEMIN,_=p.ONESEC,w=t(\"./axis_ids\"),T=t(\"./constants\"),k=T.HOUR_PATTERN,A=T.WEEKDAY_PATTERN;function M(t){return Math.pow(10,t)}function S(t){return null!=t}e.exports=function(t,e){e=e||{};var r=t._id||\"x\",p=r.charAt(0);function E(e,r){if(e>0)return Math.log(e)/Math.LN10;if(e<=0&&r&&t.range&&2===t.range.length){var n=t.range[0],i=t.range[1];return.5*(n+i-2*m*Math.abs(n-i))}return g}function L(e,r,n,i){if((i||{}).msUTC&&s(e))return+e;var o=u(e,n||t.calendar);if(o===g){if(!s(e))return g;e=+e;var l=Math.floor(10*a.mod(e+.05,1)),c=Math.round(e-l/10);o=u(new Date(c))+l/10}return o}function C(e,r,n){return c(e,r,n||t.calendar)}function P(e){return t._categories[Math.round(e)]}function I(e){if(S(e)){if(void 0===t._categoriesMap&&(t._categoriesMap={}),void 0!==t._categoriesMap[e])return t._categoriesMap[e];t._categories.push(\"number\"==typeof e?String(e):e);var r=t._categories.length-1;return t._categoriesMap[e]=r,r}return g}function O(e){if(t._categoriesMap)return t._categoriesMap[e]}function z(t){var e=O(t);return void 0!==e?e:s(t)?+t:void 0}function D(t){return s(t)?+t:O(t)}function R(t,e,r){return n.round(r+e*t,2)}function F(t,e,r){return(t-r)/e}var B=function(e){return s(e)?R(e,t._m,t._b):g},N=function(e){return F(e,t._m,t._b)};if(t.rangebreaks){var j=\"y\"===p;B=function(e){if(!s(e))return g;var r=t._rangebreaks.length;if(!r)return R(e,t._m,t._b);var n=j;t.range[0]>t.range[1]&&(n=!n);for(var i=n?-1:1,a=i*e,o=0,l=0;lu)){o=a<(c+u)/2?l:l+1;break}o=l+1}var f=t._B[o]||0;return isFinite(f)?R(e,t._m2,f):0},N=function(e){var r=t._rangebreaks.length;if(!r)return F(e,t._m,t._b);for(var n=0,i=0;it._rangebreaks[i].pmax&&(n=i+1);return F(e,t._m2,t._B[n])}}t.c2l=\"log\"===t.type?E:f,t.l2c=\"log\"===t.type?M:f,t.l2p=B,t.p2l=N,t.c2p=\"log\"===t.type?function(t,e){return B(E(t,e))}:B,t.p2c=\"log\"===t.type?function(t){return M(N(t))}:N,-1!==[\"linear\",\"-\"].indexOf(t.type)?(t.d2r=t.r2d=t.d2c=t.r2c=t.d2l=t.r2l=l,t.c2d=t.c2r=t.l2d=t.l2r=f,t.d2p=t.r2p=function(e){return t.l2p(l(e))},t.p2d=t.p2r=N,t.cleanPos=f):\"log\"===t.type?(t.d2r=t.d2l=function(t,e){return E(l(t),e)},t.r2d=t.r2c=function(t){return M(l(t))},t.d2c=t.r2l=l,t.c2d=t.l2r=f,t.c2r=E,t.l2d=M,t.d2p=function(e,r){return t.l2p(t.d2r(e,r))},t.p2d=function(t){return M(N(t))},t.r2p=function(e){return t.l2p(l(e))},t.p2r=N,t.cleanPos=f):\"date\"===t.type?(t.d2r=t.r2d=a.identity,t.d2c=t.r2c=t.d2l=t.r2l=L,t.c2d=t.c2r=t.l2d=t.l2r=C,t.d2p=t.r2p=function(e,r,n){return t.l2p(L(e,0,n))},t.p2d=t.p2r=function(t,e,r){return C(N(t),e,r)},t.cleanPos=function(e){return a.cleanDate(e,g,t.calendar)}):\"category\"===t.type?(t.d2c=t.d2l=I,t.r2d=t.c2d=t.l2d=P,t.d2r=t.d2l_noadd=z,t.r2c=function(e){var r=D(e);return void 0!==r?r:t.fraction2r(.5)},t.l2r=t.c2r=f,t.r2l=D,t.d2p=function(e){return t.l2p(t.r2c(e))},t.p2d=function(t){return P(N(t))},t.r2p=t.d2p,t.p2r=N,t.cleanPos=function(t){return\"string\"==typeof t&&\"\"!==t?t:f(t)}):\"multicategory\"===t.type&&(t.r2d=t.c2d=t.l2d=P,t.d2r=t.d2l_noadd=z,t.r2c=function(e){var r=z(e);return void 0!==r?r:t.fraction2r(.5)},t.r2c_just_indices=O,t.l2r=t.c2r=f,t.r2l=z,t.d2p=function(e){return t.l2p(t.r2c(e))},t.p2d=function(t){return P(N(t))},t.r2p=t.d2p,t.p2r=N,t.cleanPos=function(t){return Array.isArray(t)||\"string\"==typeof t&&\"\"!==t?t:f(t)},t.setupMultiCategory=function(n){var i,o,s=t._traceIndices,l=t._matchGroup;if(l&&0===t._categories.length)for(var c in l)if(c!==r){var u=e[w.id2name(c)];s=s.concat(u._traceIndices)}var f=[[0,{}],[0,{}]],d=[];for(i=0;id&&(o[n]=d),o[0]===o[1]){var c=Math.max(1,Math.abs(1e-6*o[0]));o[0]-=c,o[1]+=c}}else a.nestedProperty(t,e).set(i)},t.setScale=function(r){var n=e._size;if(t.overlaying){var i=w.getFromId({_fullLayout:e},t.overlaying);t.domain=i.domain}var a=r&&t._r?\"_r\":\"range\",o=t.calendar;t.cleanRange(a);var s,l,c=t.r2l(t[a][0],o),u=t.r2l(t[a][1],o),f=\"y\"===p;if((f?(t._offset=n.t+(1-t.domain[1])*n.h,t._length=n.h*(t.domain[1]-t.domain[0]),t._m=t._length/(c-u),t._b=-t._m*u):(t._offset=n.l+t.domain[0]*n.w,t._length=n.w*(t.domain[1]-t.domain[0]),t._m=t._length/(u-c),t._b=-t._m*c),t._rangebreaks=[],t._lBreaks=0,t._m2=0,t._B=[],t.rangebreaks)&&(t._rangebreaks=t.locateBreaks(Math.min(c,u),Math.max(c,u)),t._rangebreaks.length)){for(s=0;su&&(h=!h),h&&t._rangebreaks.reverse();var d=h?-1:1;for(t._m2=d*t._length/(Math.abs(u-c)-t._lBreaks),t._B.push(-t._m2*(f?u:c)),s=0;si&&(i+=7,oi&&(i+=24,o=n&&o=n&&e=s.min&&(ts.max&&(s.max=n),i=!1)}i&&c.push({min:t,max:n})}};for(n=0;nr.duration?(!function(){for(var r={},n=0;n rect\").call(o.setTranslate,0,0).call(o.setScale,1,1),t.plot.call(o.setTranslate,e._offset,r._offset).call(o.setScale,1,1);var n=t.plot.selectAll(\".scatterlayer .trace\");n.selectAll(\".point\").call(o.setPointGroupScale,1,1),n.selectAll(\".textpoint\").call(o.setTextPointsScale,1,1),n.call(o.hideOutsideRangePoints,t)}function m(e,r){var n=e.plotinfo,i=n.xaxis,l=n.yaxis,c=i._length,u=l._length,f=!!e.xr1,h=!!e.yr1,p=[];if(f){var d=a.simpleMap(e.xr0,i.r2l),g=a.simpleMap(e.xr1,i.r2l),m=d[1]-d[0],v=g[1]-g[0];p[0]=(d[0]*(1-r)+r*g[0]-d[0])/(d[1]-d[0])*c,p[2]=c*(1-r+r*v/m),i.range[0]=i.l2r(d[0]*(1-r)+r*g[0]),i.range[1]=i.l2r(d[1]*(1-r)+r*g[1])}else p[0]=0,p[2]=c;if(h){var y=a.simpleMap(e.yr0,l.r2l),x=a.simpleMap(e.yr1,l.r2l),b=y[1]-y[0],_=x[1]-x[0];p[1]=(y[1]*(1-r)+r*x[1]-y[1])/(y[0]-y[1])*u,p[3]=u*(1-r+r*_/b),l.range[0]=i.l2r(y[0]*(1-r)+r*x[0]),l.range[1]=l.l2r(y[1]*(1-r)+r*x[1])}else p[1]=0,p[3]=u;s.drawOne(t,i,{skipTitle:!0}),s.drawOne(t,l,{skipTitle:!0}),s.redrawComponents(t,[i._id,l._id]);var w=f?c/p[2]:1,T=h?u/p[3]:1,k=f?p[0]:0,A=h?p[1]:0,M=f?p[0]/p[2]*c:0,S=h?p[1]/p[3]*u:0,E=i._offset-M,L=l._offset-S;n.clipRect.call(o.setTranslate,k,A).call(o.setScale,1/w,1/T),n.plot.call(o.setTranslate,E,L).call(o.setScale,w,T),o.setPointGroupScale(n.zoomScalePts,1/w,1/T),o.setTextPointsScale(n.zoomScaleTxt,1/w,1/T)}s.redrawComponents(t)}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../registry\":638,\"./axes\":554,\"@plotly/d3\":58}],582:[function(t,e,r){\"use strict\";var n=t(\"../../registry\").traceIs,i=t(\"./axis_autotype\");function a(t){return{v:\"x\",h:\"y\"}[t.orientation||\"v\"]}function o(t,e){var r=a(t),i=n(t,\"box-violin\"),o=n(t._fullInput||{},\"candlestick\");return i&&!o&&e===r&&void 0===t[r]&&void 0===t[r+\"0\"]}e.exports=function(t,e,r,s){r(\"autotypenumbers\",s.autotypenumbersDflt),\"-\"===r(\"type\",(s.splomStash||{}).type)&&(!function(t,e){if(\"-\"!==t.type)return;var r,s=t._id,l=s.charAt(0);-1!==s.indexOf(\"scene\")&&(s=l);var c=function(t,e,r){for(var n=0;n0&&(i[\"_\"+r+\"axes\"]||{})[e])return i;if((i[r+\"axis\"]||r)===e){if(o(i,r))return i;if((i[r]||[]).length||i[r+\"0\"])return i}}}(e,s,l);if(!c)return;if(\"histogram\"===c.type&&l==={v:\"y\",h:\"x\"}[c.orientation||\"v\"])return void(t.type=\"linear\");var u=l+\"calendar\",f=c[u],h={noMultiCategory:!n(c,\"cartesian\")||n(c,\"noMultiCategory\")};\"box\"===c.type&&c._hasPreCompStats&&l==={h:\"x\",v:\"y\"}[c.orientation||\"v\"]&&(h.noMultiCategory=!0);if(h.autotypenumbers=t.autotypenumbers,o(c,l)){var p=a(c),d=[];for(r=0;r0?\".\":\"\")+a;i.isPlainObject(o)?l(o,e,s,n+1):e(s,a,o)}}))}r.manageCommandObserver=function(t,e,n,o){var s={},l=!0;e&&e._commandObserver&&(s=e._commandObserver),s.cache||(s.cache={}),s.lookupTable={};var c=r.hasSimpleAPICommandBindings(t,n,s.lookupTable);if(e&&e._commandObserver){if(c)return s;if(e._commandObserver.remove)return e._commandObserver.remove(),e._commandObserver=null,s}if(c){a(t,c,s.cache),s.check=function(){if(l){var e=a(t,c,s.cache);return e.changed&&o&&void 0!==s.lookupTable[e.value]&&(s.disable(),Promise.resolve(o({value:e.value,type:c.type,prop:c.prop,traces:c.traces,index:s.lookupTable[e.value]})).then(s.enable,s.enable)),e.changed}};for(var u=[\"plotly_relayout\",\"plotly_redraw\",\"plotly_restyle\",\"plotly_update\",\"plotly_animatingframe\",\"plotly_afterplot\"],f=0;f0&&i<0&&(i+=360);var s=(i-n)/4;return{type:\"Polygon\",coordinates:[[[n,a],[n,o],[n+s,o],[n+2*s,o],[n+3*s,o],[i,o],[i,a],[i-s,a],[i-2*s,a],[i-3*s,a],[n,a]]]}}e.exports=function(t){return new M(t)},S.plot=function(t,e,r){var n=this,i=e[this.id],a=[],o=!1;for(var s in w.layerNameToAdjective)if(\"frame\"!==s&&i[\"show\"+s]){o=!0;break}for(var l=0;l0&&a._module.calcGeoJSON(i,e)}if(!this.updateProjection(t,e)){this.viewInitial&&this.scope===r.scope||this.saveViewInitial(r),this.scope=r.scope,this.updateBaseLayers(e,r),this.updateDims(e,r),this.updateFx(e,r),d.generalUpdatePerTraceModule(this.graphDiv,this,t,r);var o=this.layers.frontplot.select(\".scatterlayer\");this.dataPoints.point=o.selectAll(\".point\"),this.dataPoints.text=o.selectAll(\"text\"),this.dataPaths.line=o.selectAll(\".js-line\");var s=this.layers.backplot.select(\".choroplethlayer\");this.dataPaths.choropleth=s.selectAll(\"path\"),this.render()}},S.updateProjection=function(t,e){var r=this.graphDiv,n=e[this.id],l=e._size,u=n.domain,f=n.projection,h=n.lonaxis,p=n.lataxis,d=h._ax,g=p._ax,v=this.projection=function(t){var e=t.projection,r=e.type,n=w.projNames[r];n=\"geo\"+c.titleCase(n);for(var l=(i[n]||s[n])(),u=t._isSatellite?180*Math.acos(1/e.distance)/Math.PI:t._isClipped?w.lonaxisSpan[r]/2:null,f=[\"center\",\"rotate\",\"parallels\",\"clipExtent\"],h=function(t){return t?l:[]},p=0;pu*Math.PI/180}return!1},l.getPath=function(){return a().projection(l)},l.getBounds=function(t){return l.getPath().bounds(t)},l.precision(w.precision),t._isSatellite&&l.tilt(e.tilt).distance(e.distance);u&&l.clipAngle(u-w.clipPad);return l}(n),y=[[l.l+l.w*u.x[0],l.t+l.h*(1-u.y[1])],[l.l+l.w*u.x[1],l.t+l.h*(1-u.y[0])]],x=n.center||{},b=f.rotation||{},_=h.range||[],T=p.range||[];if(n.fitbounds){d._length=y[1][0]-y[0][0],g._length=y[1][1]-y[0][1],d.range=m(r,d),g.range=m(r,g);var k=(d.range[0]+d.range[1])/2,A=(g.range[0]+g.range[1])/2;if(n._isScoped)x={lon:k,lat:A};else if(n._isClipped){x={lon:k,lat:A},b={lon:k,lat:A,roll:b.roll};var M=f.type,S=w.lonaxisSpan[M]/2||180,L=w.lataxisSpan[M]/2||90;_=[k-S,k+S],T=[A-L,A+L]}else x={lon:k,lat:A},b={lon:k,lat:b.lat,roll:b.roll}}v.center([x.lon-b.lon,x.lat-b.lat]).rotate([-b.lon,-b.lat,b.roll]).parallels(f.parallels);var C=E(_,T);v.fitExtent(y,C);var P=this.bounds=v.getBounds(C),I=this.fitScale=v.scale(),O=v.translate();if(n.fitbounds){var z=v.getBounds(E(d.range,g.range)),D=Math.min((P[1][0]-P[0][0])/(z[1][0]-z[0][0]),(P[1][1]-P[0][1])/(z[1][1]-z[0][1]));isFinite(D)?v.scale(D*I):c.warn(\"Something went wrong during\"+this.id+\"fitbounds computations.\")}else v.scale(f.scale*I);var R=this.midPt=[(P[0][0]+P[1][0])/2,(P[0][1]+P[1][1])/2];if(v.translate([O[0]+(R[0]-O[0]),O[1]+(R[1]-O[1])]).clipExtent(P),n._isAlbersUsa){var F=v([x.lon,x.lat]),B=v.translate();v.translate([B[0]-(F[0]-B[0]),B[1]-(F[1]-B[1])])}},S.updateBaseLayers=function(t,e){var r=this,i=r.topojson,a=r.layers,o=r.basePaths;function s(t){return\"lonaxis\"===t||\"lataxis\"===t}function l(t){return Boolean(w.lineLayers[t])}function c(t){return Boolean(w.fillLayers[t])}var u=(this.hasChoropleth?w.layersForChoropleth:w.layers).filter((function(t){return l(t)||c(t)?e[\"show\"+t]:!s(t)||e[t].showgrid})),p=r.framework.selectAll(\".layer\").data(u,String);p.exit().each((function(t){delete a[t],delete o[t],n.select(this).remove()})),p.enter().append(\"g\").attr(\"class\",(function(t){return\"layer \"+t})).each((function(t){var e=a[t]=n.select(this);\"bg\"===t?r.bgRect=e.append(\"rect\").style(\"pointer-events\",\"all\"):s(t)?o[t]=e.append(\"path\").style(\"fill\",\"none\"):\"backplot\"===t?e.append(\"g\").classed(\"choroplethlayer\",!0):\"frontplot\"===t?e.append(\"g\").classed(\"scatterlayer\",!0):l(t)?o[t]=e.append(\"path\").style(\"fill\",\"none\").style(\"stroke-miterlimit\",2):c(t)&&(o[t]=e.append(\"path\").style(\"stroke\",\"none\"))})),p.order(),p.each((function(r){var n=o[r],a=w.layerNameToAdjective[r];\"frame\"===r?n.datum(w.sphereSVG):l(r)||c(r)?n.datum(A(i,i.objects[r])):s(r)&&n.datum(function(t,e,r){var n,i,a,o=e[t],s=w.scopeDefaults[e.scope];\"lonaxis\"===t?(n=s.lonaxisRange,i=s.lataxisRange,a=function(t,e){return[t,e]}):\"lataxis\"===t&&(n=s.lataxisRange,i=s.lonaxisRange,a=function(t,e){return[e,t]});var l={type:\"linear\",range:[n[0],n[1]-1e-6],tick0:o.tick0,dtick:o.dtick};g.setConvert(l,r);var c=g.calcTicks(l);e.isScoped||\"lonaxis\"!==t||c.pop();for(var u=c.length,f=new Array(u),h=0;h-1&&b(n.event,i,[r.xaxis],[r.yaxis],r.id,f),s.indexOf(\"event\")>-1&&p.click(i,n.event))}))}function h(t){return r.projection.invert([t[0]+r.xaxis._offset,t[1]+r.yaxis._offset])}},S.makeFramework=function(){var t=this,e=t.graphDiv,r=e._fullLayout,i=\"clip\"+r._uid+t.id;t.clipDef=r._clips.append(\"clipPath\").attr(\"id\",i),t.clipRect=t.clipDef.append(\"rect\"),t.framework=n.select(t.container).append(\"g\").attr(\"class\",\"geo \"+t.id).call(h.setClipUrl,i,e),t.project=function(e){var r=t.projection(e);return r?[r[0]-t.xaxis._offset,r[1]-t.yaxis._offset]:[null,null]},t.xaxis={_id:\"x\",c2p:function(e){return t.project(e)[0]}},t.yaxis={_id:\"y\",c2p:function(e){return t.project(e)[1]}},t.mockAxis={type:\"linear\",showexponent:\"all\",exponentformat:\"B\"},g.setConvert(t.mockAxis,r)},S.saveViewInitial=function(t){var e,r=t.center||{},n=t.projection,i=n.rotation||{};this.viewInitial={fitbounds:t.fitbounds,\"projection.scale\":n.scale},e=t._isScoped?{\"center.lon\":r.lon,\"center.lat\":r.lat}:t._isClipped?{\"projection.rotation.lon\":i.lon,\"projection.rotation.lat\":i.lat}:{\"center.lon\":r.lon,\"center.lat\":r.lat,\"projection.rotation.lon\":i.lon},c.extendFlat(this.viewInitial,e)},S.render=function(){var t,e=this.projection,r=e.getPath();function n(t){var r=e(t.lonlat);return r?u(r[0],r[1]):null}function i(t){return e.isLonLatOverEdges(t.lonlat)?\"none\":null}for(t in this.basePaths)this.basePaths[t].attr(\"d\",r);for(t in this.dataPaths)this.dataPaths[t].attr(\"d\",(function(t){return r(t.geojson)}));for(t in this.dataPoints)this.dataPoints[t].attr(\"display\",i).attr(\"transform\",n)}},{\"../../components/color\":366,\"../../components/dragelement\":385,\"../../components/drawing\":388,\"../../components/fx\":406,\"../../lib\":503,\"../../lib/geo_location_utils\":496,\"../../lib/topojson_utils\":532,\"../../registry\":638,\"../cartesian/autorange\":553,\"../cartesian/axes\":554,\"../cartesian/select\":575,\"../plots\":619,\"./constants\":587,\"./zoom\":592,\"@plotly/d3\":58,\"d3-geo\":114,\"d3-geo-projection\":113,\"topojson-client\":315}],589:[function(t,e,r){\"use strict\";var n=t(\"../../plots/get_data\").getSubplotCalcData,i=t(\"../../lib\").counterRegex,a=t(\"./geo\"),o=\"geo\",s=i(o),l={};l.geo={valType:\"subplotid\",dflt:o,editType:\"calc\"},e.exports={attr:o,name:o,idRoot:o,idRegex:s,attrRegex:s,attributes:l,layoutAttributes:t(\"./layout_attributes\"),supplyLayoutDefaults:t(\"./layout_defaults\"),plot:function(t){for(var e=t._fullLayout,r=t.calcdata,i=e._subplots.geo,s=0;s0&&P<0&&(P+=360);var I,O,z,D=(C+P)/2;if(!p){var R=d?f.projRotate:[D,0,0];I=r(\"projection.rotation.lon\",R[0]),r(\"projection.rotation.lat\",R[1]),r(\"projection.rotation.roll\",R[2]),r(\"showcoastlines\",!d&&x)&&(r(\"coastlinecolor\"),r(\"coastlinewidth\")),r(\"showocean\",!!x&&void 0)&&r(\"oceancolor\")}(p?(O=-96.6,z=38.7):(O=d?D:I,z=(L[0]+L[1])/2),r(\"center.lon\",O),r(\"center.lat\",z),g&&(r(\"projection.tilt\"),r(\"projection.distance\")),m)&&r(\"projection.parallels\",f.projParallels||[0,60]);r(\"projection.scale\"),r(\"showland\",!!x&&void 0)&&r(\"landcolor\"),r(\"showlakes\",!!x&&void 0)&&r(\"lakecolor\"),r(\"showrivers\",!!x&&void 0)&&(r(\"rivercolor\"),r(\"riverwidth\")),r(\"showcountries\",d&&\"usa\"!==u&&x)&&(r(\"countrycolor\"),r(\"countrywidth\")),(\"usa\"===u||\"north america\"===u&&50===c)&&(r(\"showsubunits\",x),r(\"subunitcolor\"),r(\"subunitwidth\")),d||r(\"showframe\",x)&&(r(\"framecolor\"),r(\"framewidth\")),r(\"bgcolor\"),r(\"fitbounds\")&&(delete e.projection.scale,d?(delete e.center.lon,delete e.center.lat):v?(delete e.center.lon,delete e.center.lat,delete e.projection.rotation.lon,delete e.projection.rotation.lat,delete e.lonaxis.range,delete e.lataxis.range):(delete e.center.lon,delete e.center.lat,delete e.projection.rotation.lon))}e.exports=function(t,e,r){i(t,e,r,{type:\"geo\",attributes:s,handleDefaults:c,fullData:r,partition:\"y\"})}},{\"../../lib\":503,\"../get_data\":593,\"../subplot_defaults\":632,\"./constants\":587,\"./layout_attributes\":590}],592:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../registry\"),o=Math.PI/180,s=180/Math.PI,l={cursor:\"pointer\"},c={cursor:\"auto\"};function u(t,e){return n.behavior.zoom().translate(e.translate()).scale(e.scale())}function f(t,e,r){var n=t.id,o=t.graphDiv,s=o.layout,l=s[n],c=o._fullLayout,u=c[n],f={},h={};function p(t,e){f[n+\".\"+t]=i.nestedProperty(l,t).get(),a.call(\"_storeDirectGUIEdit\",s,c._preGUI,f);var r=i.nestedProperty(u,t);r.get()!==e&&(r.set(e),i.nestedProperty(l,t).set(e),h[n+\".\"+t]=e)}r(p),p(\"projection.scale\",e.scale()/t.fitScale),p(\"fitbounds\",!1),o.emit(\"plotly_relayout\",h)}function h(t,e){var r=u(0,e);function i(r){var n=e.invert(t.midPt);r(\"center.lon\",n[0]),r(\"center.lat\",n[1])}return r.on(\"zoomstart\",(function(){n.select(this).style(l)})).on(\"zoom\",(function(){e.scale(n.event.scale).translate(n.event.translate),t.render();var r=e.invert(t.midPt);t.graphDiv.emit(\"plotly_relayouting\",{\"geo.projection.scale\":e.scale()/t.fitScale,\"geo.center.lon\":r[0],\"geo.center.lat\":r[1]})})).on(\"zoomend\",(function(){n.select(this).style(c),f(t,e,i)})),r}function p(t,e){var r,i,a,o,s,h,p,d,g,m=u(0,e);function v(t){return e.invert(t)}function y(r){var n=e.rotate(),i=e.invert(t.midPt);r(\"projection.rotation.lon\",-n[0]),r(\"center.lon\",i[0]),r(\"center.lat\",i[1])}return m.on(\"zoomstart\",(function(){n.select(this).style(l),r=n.mouse(this),i=e.rotate(),a=e.translate(),o=i,s=v(r)})).on(\"zoom\",(function(){if(h=n.mouse(this),function(t){var r=v(t);if(!r)return!0;var n=e(r);return Math.abs(n[0]-t[0])>2||Math.abs(n[1]-t[1])>2}(r))return m.scale(e.scale()),void m.translate(e.translate());e.scale(n.event.scale),e.translate([a[0],n.event.translate[1]]),s?v(h)&&(d=v(h),p=[o[0]+(d[0]-s[0]),i[1],i[2]],e.rotate(p),o=p):s=v(r=h),g=!0,t.render();var l=e.rotate(),c=e.invert(t.midPt);t.graphDiv.emit(\"plotly_relayouting\",{\"geo.projection.scale\":e.scale()/t.fitScale,\"geo.center.lon\":c[0],\"geo.center.lat\":c[1],\"geo.projection.rotation.lon\":-l[0]})})).on(\"zoomend\",(function(){n.select(this).style(c),g&&f(t,e,y)})),m}function d(t,e){var r,i={r:e.rotate(),k:e.scale()},a=u(0,e),o=function(t){var e=0,r=arguments.length,i=[];for(;++ed?(a=(f>0?90:-90)-p,i=0):(a=Math.asin(f/d)*s-p,i=Math.sqrt(d*d-f*f));var g=180-a-2*p,m=(Math.atan2(h,u)-Math.atan2(c,i))*s,v=(Math.atan2(h,u)-Math.atan2(c,-i))*s;return b(r[0],r[1],a,m)<=b(r[0],r[1],g,v)?[a,m,r[2]]:[g,v,r[2]]}function b(t,e,r,n){var i=_(r-t),a=_(n-e);return Math.sqrt(i*i+a*a)}function _(t){return(t%360+540)%360-180}function w(t,e,r){var n=r*o,i=t.slice(),a=0===e?1:0,s=2===e?1:2,l=Math.cos(n),c=Math.sin(n);return i[a]=t[a]*l-t[s]*c,i[s]=t[s]*l+t[a]*c,i}function T(t){return[Math.atan2(2*(t[0]*t[1]+t[2]*t[3]),1-2*(t[1]*t[1]+t[2]*t[2]))*s,Math.asin(Math.max(-1,Math.min(1,2*(t[0]*t[2]-t[3]*t[1]))))*s,Math.atan2(2*(t[0]*t[3]+t[1]*t[2]),1-2*(t[2]*t[2]+t[3]*t[3]))*s]}function k(t,e){for(var r=0,n=0,i=t.length;nMath.abs(s)?(c.boxEnd[1]=c.boxStart[1]+Math.abs(a)*_*(s>=0?1:-1),c.boxEnd[1]l[3]&&(c.boxEnd[1]=l[3],c.boxEnd[0]=c.boxStart[0]+(l[3]-c.boxStart[1])/Math.abs(_))):(c.boxEnd[0]=c.boxStart[0]+Math.abs(s)/_*(a>=0?1:-1),c.boxEnd[0]l[2]&&(c.boxEnd[0]=l[2],c.boxEnd[1]=c.boxStart[1]+(l[2]-c.boxStart[0])*Math.abs(_)))}}else c.boxEnabled?(a=c.boxStart[0]!==c.boxEnd[0],s=c.boxStart[1]!==c.boxEnd[1],a||s?(a&&(m(0,c.boxStart[0],c.boxEnd[0]),t.xaxis.autorange=!1),s&&(m(1,c.boxStart[1],c.boxEnd[1]),t.yaxis.autorange=!1),t.relayoutCallback()):t.glplot.setDirty(),c.boxEnabled=!1,c.boxInited=!1):c.boxInited&&(c.boxInited=!1);break;case\"pan\":c.boxEnabled=!1,c.boxInited=!1,e?(c.panning||(c.dragStart[0]=n,c.dragStart[1]=i),Math.abs(c.dragStart[0]-n).999&&(g=\"turntable\"):g=\"turntable\")}else g=\"turntable\";r(\"dragmode\",g),r(\"hovermode\",n.getDfltFromLayout(\"hovermode\"))}e.exports=function(t,e,r){var i=e._basePlotModules.length>1;o(t,e,r,{type:\"gl3d\",attributes:l,handleDefaults:u,fullLayout:e,font:e.font,fullData:r,getDfltFromLayout:function(e){if(!i)return n.validate(t[e],l[e])?t[e]:void 0},autotypenumbersDflt:e.autotypenumbers,paper_bgcolor:e.paper_bgcolor,calendar:e.calendar})}},{\"../../../components/color\":366,\"../../../lib\":503,\"../../../registry\":638,\"../../get_data\":593,\"../../subplot_defaults\":632,\"./axis_defaults\":601,\"./layout_attributes\":604}],604:[function(t,e,r){\"use strict\";var n=t(\"./axis_attributes\"),i=t(\"../../domain\").attributes,a=t(\"../../../lib/extend\").extendFlat,o=t(\"../../../lib\").counterRegex;function s(t,e,r){return{x:{valType:\"number\",dflt:t,editType:\"camera\"},y:{valType:\"number\",dflt:e,editType:\"camera\"},z:{valType:\"number\",dflt:r,editType:\"camera\"},editType:\"camera\"}}e.exports={_arrayAttrRegexps:[o(\"scene\",\".annotations\",!0)],bgcolor:{valType:\"color\",dflt:\"rgba(0,0,0,0)\",editType:\"plot\"},camera:{up:a(s(0,0,1),{}),center:a(s(0,0,0),{}),eye:a(s(1.25,1.25,1.25),{}),projection:{type:{valType:\"enumerated\",values:[\"perspective\",\"orthographic\"],dflt:\"perspective\",editType:\"calc\"},editType:\"calc\"},editType:\"camera\"},domain:i({name:\"scene\",editType:\"plot\"}),aspectmode:{valType:\"enumerated\",values:[\"auto\",\"cube\",\"data\",\"manual\"],dflt:\"auto\",editType:\"plot\",impliedEdits:{\"aspectratio.x\":void 0,\"aspectratio.y\":void 0,\"aspectratio.z\":void 0}},aspectratio:{x:{valType:\"number\",min:0,editType:\"plot\",impliedEdits:{\"^aspectmode\":\"manual\"}},y:{valType:\"number\",min:0,editType:\"plot\",impliedEdits:{\"^aspectmode\":\"manual\"}},z:{valType:\"number\",min:0,editType:\"plot\",impliedEdits:{\"^aspectmode\":\"manual\"}},editType:\"plot\",impliedEdits:{aspectmode:\"manual\"}},xaxis:n,yaxis:n,zaxis:n,dragmode:{valType:\"enumerated\",values:[\"orbit\",\"turntable\",\"zoom\",\"pan\",!1],editType:\"plot\"},hovermode:{valType:\"enumerated\",values:[\"closest\",!1],dflt:\"closest\",editType:\"modebar\"},uirevision:{valType:\"any\",editType:\"none\"},editType:\"plot\",_deprecated:{cameraposition:{valType:\"info_array\",editType:\"camera\"}}}},{\"../../../lib\":503,\"../../../lib/extend\":493,\"../../domain\":584,\"./axis_attributes\":600}],605:[function(t,e,r){\"use strict\";var n=t(\"../../../lib/str2rgbarray\"),i=[\"xaxis\",\"yaxis\",\"zaxis\"];function a(){this.enabled=[!0,!0,!0],this.colors=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.drawSides=[!0,!0,!0],this.lineWidth=[1,1,1]}a.prototype.merge=function(t){for(var e=0;e<3;++e){var r=t[i[e]];r.visible?(this.enabled[e]=r.showspikes,this.colors[e]=n(r.spikecolor),this.drawSides[e]=r.spikesides,this.lineWidth[e]=r.spikethickness):(this.enabled[e]=!1,this.drawSides[e]=!1)}},e.exports=function(t){var e=new a;return e.merge(t),e}},{\"../../../lib/str2rgbarray\":528}],606:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e=t.axesOptions,r=t.glplot.axesPixels,s=t.fullSceneLayout,l=[[],[],[]],c=0;c<3;++c){var u=s[a[c]];if(u._length=(r[c].hi-r[c].lo)*r[c].pixelsPerDataUnit/t.dataScale[c],Math.abs(u._length)===1/0||isNaN(u._length))l[c]=[];else{u._input_range=u.range.slice(),u.range[0]=r[c].lo/t.dataScale[c],u.range[1]=r[c].hi/t.dataScale[c],u._m=1/(t.dataScale[c]*r[c].pixelsPerDataUnit),u.range[0]===u.range[1]&&(u.range[0]-=1,u.range[1]+=1);var f=u.tickmode;if(\"auto\"===u.tickmode){u.tickmode=\"linear\";var h=u.nticks||i.constrain(u._length/40,4,9);n.autoTicks(u,Math.abs(u.range[1]-u.range[0])/h)}for(var p=n.calcTicks(u,{msUTC:!0}),d=0;d/g,\" \"));l[c]=p,u.tickmode=f}}e.ticks=l;for(c=0;c<3;++c){o[c]=.5*(t.glplot.bounds[0][c]+t.glplot.bounds[1][c]);for(d=0;d<2;++d)e.bounds[d][c]=t.glplot.bounds[d][c]}t.contourLevels=function(t){for(var e=new Array(3),r=0;r<3;++r){for(var n=t[r],i=new Array(n.length),a=0;ar.deltaY?1.1:1/1.1,a=t.glplot.getAspectratio();t.glplot.setAspectratio({x:n*a.x,y:n*a.y,z:n*a.z})}i(t)}}),!!c&&{passive:!1}),t.glplot.canvas.addEventListener(\"mousemove\",(function(){if(!1!==t.fullSceneLayout.dragmode&&0!==t.camera.mouseListener.buttons){var e=n();t.graphDiv.emit(\"plotly_relayouting\",e)}})),t.staticMode||t.glplot.canvas.addEventListener(\"webglcontextlost\",(function(r){e&&e.emit&&e.emit(\"plotly_webglcontextlost\",{event:r,layer:t.id})}),!1)),t.glplot.oncontextloss=function(){t.recoverContext()},t.glplot.onrender=function(){t.render()},!0},w.render=function(){var t,e=this,r=e.graphDiv,n=e.svgContainer,i=e.container.getBoundingClientRect();r._fullLayout._calcInverseTransform(r);var a=r._fullLayout._invScaleX,o=r._fullLayout._invScaleY,s=i.width*a,l=i.height*o;n.setAttributeNS(null,\"viewBox\",\"0 0 \"+s+\" \"+l),n.setAttributeNS(null,\"width\",s),n.setAttributeNS(null,\"height\",l),b(e),e.glplot.axes.update(e.axesOptions);for(var c=Object.keys(e.traces),u=null,h=e.glplot.selection,g=0;g\")):\"isosurface\"===t.type||\"volume\"===t.type?(T.valueLabel=p.hoverLabelText(e._mockAxis,e._mockAxis.d2l(h.traceCoordinate[3]),t.valuehoverformat),S.push(\"value: \"+T.valueLabel),h.textLabel&&S.push(h.textLabel),x=S.join(\"
\")):x=h.textLabel;var E={x:h.traceCoordinate[0],y:h.traceCoordinate[1],z:h.traceCoordinate[2],data:_._input,fullData:_,curveNumber:_.index,pointNumber:w};d.appendArrayPointValue(E,_,w),t._module.eventData&&(E=_._module.eventData(E,h,_,{},w));var L={points:[E]};if(e.fullSceneLayout.hovermode){var C=[];d.loneHover({trace:_,x:(.5+.5*y[0]/y[3])*s,y:(.5-.5*y[1]/y[3])*l,xLabel:T.xLabel,yLabel:T.yLabel,zLabel:T.zLabel,text:x,name:u.name,color:d.castHoverOption(_,w,\"bgcolor\")||u.color,borderColor:d.castHoverOption(_,w,\"bordercolor\"),fontFamily:d.castHoverOption(_,w,\"font.family\"),fontSize:d.castHoverOption(_,w,\"font.size\"),fontColor:d.castHoverOption(_,w,\"font.color\"),nameLength:d.castHoverOption(_,w,\"namelength\"),textAlign:d.castHoverOption(_,w,\"align\"),hovertemplate:f.castOption(_,w,\"hovertemplate\"),hovertemplateLabels:f.extendFlat({},E,T),eventData:[E]},{container:n,gd:r,inOut_bbox:C}),E.bbox=C[0]}h.buttons&&h.distance<5?r.emit(\"plotly_click\",L):r.emit(\"plotly_hover\",L),this.oldEventData=L}else d.loneUnhover(n),this.oldEventData&&r.emit(\"plotly_unhover\",this.oldEventData),this.oldEventData=void 0;e.drawAnnotations(e)},w.recoverContext=function(){var t=this;t.glplot.dispose();var e=function(){t.glplot.gl.isContextLost()?requestAnimationFrame(e):t.initializeGLPlot()?t.plot.apply(t,t.plotArgs):f.error(\"Catastrophic and unrecoverable WebGL error. Context lost.\")};requestAnimationFrame(e)};var k=[\"xaxis\",\"yaxis\",\"zaxis\"];function A(t,e,r){for(var n=t.fullSceneLayout,i=0;i<3;i++){var a=k[i],o=a.charAt(0),s=n[a],l=e[o],c=e[o+\"calendar\"],u=e[\"_\"+o+\"length\"];if(f.isArrayOrTypedArray(l))for(var h,p=0;p<(u||l.length);p++)if(f.isArrayOrTypedArray(l[p]))for(var d=0;dm[1][a])m[0][a]=-1,m[1][a]=1;else{var L=m[1][a]-m[0][a];m[0][a]-=L/32,m[1][a]+=L/32}if(\"reversed\"===s.autorange){var C=m[0][a];m[0][a]=m[1][a],m[1][a]=C}}else{var P=s.range;m[0][a]=s.r2l(P[0]),m[1][a]=s.r2l(P[1])}m[0][a]===m[1][a]&&(m[0][a]-=1,m[1][a]+=1),v[a]=m[1][a]-m[0][a],this.glplot.setBounds(a,{min:m[0][a]*h[a],max:m[1][a]*h[a]})}var I=c.aspectmode;if(\"cube\"===I)d=[1,1,1];else if(\"manual\"===I){var O=c.aspectratio;d=[O.x,O.y,O.z]}else{if(\"auto\"!==I&&\"data\"!==I)throw new Error(\"scene.js aspectRatio was not one of the enumerated types\");var z=[1,1,1];for(a=0;a<3;++a){var D=y[l=(s=c[k[a]]).type];z[a]=Math.pow(D.acc,1/D.count)/h[a]}d=\"data\"===I||Math.max.apply(null,z)/Math.min.apply(null,z)<=4?z:[1,1,1]}c.aspectratio.x=u.aspectratio.x=d[0],c.aspectratio.y=u.aspectratio.y=d[1],c.aspectratio.z=u.aspectratio.z=d[2],this.glplot.setAspectratio(c.aspectratio),this.viewInitial.aspectratio||(this.viewInitial.aspectratio={x:c.aspectratio.x,y:c.aspectratio.y,z:c.aspectratio.z}),this.viewInitial.aspectmode||(this.viewInitial.aspectmode=c.aspectmode);var R=c.domain||null,F=e._size||null;if(R&&F){var B=this.container.style;B.position=\"absolute\",B.left=F.l+R.x[0]*F.w+\"px\",B.top=F.t+(1-R.y[1])*F.h+\"px\",B.width=F.w*(R.x[1]-R.x[0])+\"px\",B.height=F.h*(R.y[1]-R.y[0])+\"px\"}this.glplot.redraw()}},w.destroy=function(){this.glplot&&(this.camera.mouseListener.enabled=!1,this.container.removeEventListener(\"wheel\",this.camera.wheelListener),this.camera=null,this.glplot.dispose(),this.container.parentNode.removeChild(this.container),this.glplot=null)},w.getCamera=function(){var t;return this.camera.view.recalcMatrix(this.camera.view.lastT()),{up:{x:(t=this.camera).up[0],y:t.up[1],z:t.up[2]},center:{x:t.center[0],y:t.center[1],z:t.center[2]},eye:{x:t.eye[0],y:t.eye[1],z:t.eye[2]},projection:{type:!0===t._ortho?\"orthographic\":\"perspective\"}}},w.setViewport=function(t){var e,r=t.camera;this.camera.lookAt.apply(this,[[(e=r).eye.x,e.eye.y,e.eye.z],[e.center.x,e.center.y,e.center.z],[e.up.x,e.up.y,e.up.z]]),this.glplot.setAspectratio(t.aspectratio),\"orthographic\"===r.projection.type!==this.camera._ortho&&(this.glplot.redraw(),this.glplot.clearRGBA(),this.glplot.dispose(),this.initializeGLPlot())},w.isCameraChanged=function(t){var e=this.getCamera(),r=f.nestedProperty(t,this.id+\".camera\").get();function n(t,e,r,n){var i=[\"up\",\"center\",\"eye\"],a=[\"x\",\"y\",\"z\"];return e[i[r]]&&t[i[r]][a[n]]===e[i[r]][a[n]]}var i=!1;if(void 0===r)i=!0;else{for(var a=0;a<3;a++)for(var o=0;o<3;o++)if(!n(e,r,a,o)){i=!0;break}(!r.projection||e.projection&&e.projection.type!==r.projection.type)&&(i=!0)}return i},w.isAspectChanged=function(t){var e=this.glplot.getAspectratio(),r=f.nestedProperty(t,this.id+\".aspectratio\").get();return void 0===r||r.x!==e.x||r.y!==e.y||r.z!==e.z},w.saveLayout=function(t){var e,r,n,i,a,o,s=this.fullLayout,l=this.isCameraChanged(t),c=this.isAspectChanged(t),h=l||c;if(h){var p={};if(l&&(e=this.getCamera(),n=(r=f.nestedProperty(t,this.id+\".camera\")).get(),p[this.id+\".camera\"]=n),c&&(i=this.glplot.getAspectratio(),o=(a=f.nestedProperty(t,this.id+\".aspectratio\")).get(),p[this.id+\".aspectratio\"]=o),u.call(\"_storeDirectGUIEdit\",t,s._preGUI,p),l)r.set(e),f.nestedProperty(s,this.id+\".camera\").set(e);if(c)a.set(i),f.nestedProperty(s,this.id+\".aspectratio\").set(i),this.glplot.redraw()}return h},w.updateFx=function(t,e){var r=this.camera;if(r)if(\"orbit\"===t)r.mode=\"orbit\",r.keyBindingMode=\"rotate\";else if(\"turntable\"===t){r.up=[0,0,1],r.mode=\"turntable\",r.keyBindingMode=\"rotate\";var n=this.graphDiv,i=n._fullLayout,a=this.fullSceneLayout.camera,o=a.up.x,s=a.up.y,l=a.up.z;if(l/Math.sqrt(o*o+s*s+l*l)<.999){var c=this.id+\".camera.up\",h={x:0,y:0,z:1},p={};p[c]=h;var d=n.layout;u.call(\"_storeDirectGUIEdit\",d,i._preGUI,p),a.up=h,f.nestedProperty(d,c).set(h)}}else r.keyBindingMode=t;this.fullSceneLayout.hovermode=e},w.toImage=function(t){t||(t=\"png\"),this.staticMode&&this.container.appendChild(n),this.glplot.redraw();var e=this.glplot.gl,r=e.drawingBufferWidth,i=e.drawingBufferHeight;e.bindFramebuffer(e.FRAMEBUFFER,null);var a=new Uint8Array(r*i*4);e.readPixels(0,0,r,i,e.RGBA,e.UNSIGNED_BYTE,a),function(t,e,r){for(var n=0,i=r-1;n0)for(var s=255/o,l=0;l<3;++l)t[a+l]=Math.min(s*t[a+l],255)}}(a,r,i);var o=document.createElement(\"canvas\");o.width=r,o.height=i;var s,l=o.getContext(\"2d\"),c=l.createImageData(r,i);switch(c.data.set(a),l.putImageData(c,0,0),t){case\"jpeg\":s=o.toDataURL(\"image/jpeg\");break;case\"webp\":s=o.toDataURL(\"image/webp\");break;default:s=o.toDataURL(\"image/png\")}return this.staticMode&&this.container.removeChild(n),s},w.setConvert=function(){for(var t=0;t<3;t++){var e=this.fullSceneLayout[k[t]];p.setConvert(e,this.fullLayout),e.setScale=f.noop}},w.make4thDimension=function(){var t=this.graphDiv._fullLayout;this._mockAxis={type:\"linear\",showexponent:\"all\",exponentformat:\"B\"},p.setConvert(this._mockAxis,t)},e.exports=_},{\"../../../stackgl_modules\":1120,\"../../components/fx\":406,\"../../lib\":503,\"../../lib/show_no_webgl_msg\":525,\"../../lib/str2rgbarray\":528,\"../../plots/cartesian/axes\":554,\"../../registry\":638,\"./layout/convert\":602,\"./layout/spikes\":605,\"./layout/tick_marks\":606,\"./project\":607,\"has-passive-events\":229,\"webgl-context\":331}],609:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,n){n=n||t.length;for(var i=new Array(n),a=0;aOpenStreetMap contributors',a=['\\xa9 Carto',i].join(\" \"),o=['Map tiles by Stamen Design','under CC BY 3.0',\"|\",'Data by OpenStreetMap contributors','under ODbL'].join(\" \"),s={\"open-street-map\":{id:\"osm\",version:8,sources:{\"plotly-osm-tiles\":{type:\"raster\",attribution:i,tiles:[\"https://a.tile.openstreetmap.org/{z}/{x}/{y}.png\",\"https://b.tile.openstreetmap.org/{z}/{x}/{y}.png\"],tileSize:256}},layers:[{id:\"plotly-osm-tiles\",type:\"raster\",source:\"plotly-osm-tiles\",minzoom:0,maxzoom:22}]},\"white-bg\":{id:\"white-bg\",version:8,sources:{},layers:[{id:\"white-bg\",type:\"background\",paint:{\"background-color\":\"#FFFFFF\"},minzoom:0,maxzoom:22}]},\"carto-positron\":{id:\"carto-positron\",version:8,sources:{\"plotly-carto-positron\":{type:\"raster\",attribution:a,tiles:[\"https://cartodb-basemaps-c.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png\"],tileSize:256}},layers:[{id:\"plotly-carto-positron\",type:\"raster\",source:\"plotly-carto-positron\",minzoom:0,maxzoom:22}]},\"carto-darkmatter\":{id:\"carto-darkmatter\",version:8,sources:{\"plotly-carto-darkmatter\":{type:\"raster\",attribution:a,tiles:[\"https://cartodb-basemaps-c.global.ssl.fastly.net/dark_all/{z}/{x}/{y}.png\"],tileSize:256}},layers:[{id:\"plotly-carto-darkmatter\",type:\"raster\",source:\"plotly-carto-darkmatter\",minzoom:0,maxzoom:22}]},\"stamen-terrain\":{id:\"stamen-terrain\",version:8,sources:{\"plotly-stamen-terrain\":{type:\"raster\",attribution:o,tiles:[\"https://stamen-tiles.a.ssl.fastly.net/terrain/{z}/{x}/{y}.png\"],tileSize:256}},layers:[{id:\"plotly-stamen-terrain\",type:\"raster\",source:\"plotly-stamen-terrain\",minzoom:0,maxzoom:22}]},\"stamen-toner\":{id:\"stamen-toner\",version:8,sources:{\"plotly-stamen-toner\":{type:\"raster\",attribution:o,tiles:[\"https://stamen-tiles.a.ssl.fastly.net/toner/{z}/{x}/{y}.png\"],tileSize:256}},layers:[{id:\"plotly-stamen-toner\",type:\"raster\",source:\"plotly-stamen-toner\",minzoom:0,maxzoom:22}]},\"stamen-watercolor\":{id:\"stamen-watercolor\",version:8,sources:{\"plotly-stamen-watercolor\":{type:\"raster\",attribution:['Map tiles by Stamen Design','under CC BY 3.0',\"|\",'Data by OpenStreetMap contributors','under CC BY SA'].join(\" \"),tiles:[\"https://stamen-tiles.a.ssl.fastly.net/watercolor/{z}/{x}/{y}.png\"],tileSize:256}},layers:[{id:\"plotly-stamen-watercolor\",type:\"raster\",source:\"plotly-stamen-watercolor\",minzoom:0,maxzoom:22}]}},l=n(s);e.exports={requiredVersion:\"1.10.1\",styleUrlPrefix:\"mapbox://styles/mapbox/\",styleUrlSuffix:\"v9\",styleValuesMapbox:[\"basic\",\"streets\",\"outdoors\",\"light\",\"dark\",\"satellite\",\"satellite-streets\"],styleValueDflt:\"basic\",stylesNonMapbox:s,styleValuesNonMapbox:l,traceLayerPrefix:\"plotly-trace-layer-\",layoutLayerPrefix:\"plotly-layout-layer-\",wrongVersionErrorMsg:[\"Your custom plotly.js bundle is not using the correct mapbox-gl version\",\"Please install mapbox-gl@1.10.1.\"].join(\"\\n\"),noAccessTokenErrorMsg:[\"Missing Mapbox access token.\",\"Mapbox trace type require a Mapbox access token to be registered.\",\"For example:\",\" Plotly.newPlot(gd, data, layout, { mapboxAccessToken: 'my-access-token' });\",\"More info here: https://www.mapbox.com/help/define-access-token/\"].join(\"\\n\"),missingStyleErrorMsg:[\"No valid mapbox style found, please set `mapbox.style` to one of:\",l.join(\", \"),\"or register a Mapbox access token to use a Mapbox-served style.\"].join(\"\\n\"),multipleTokensErrorMsg:[\"Set multiple mapbox access token across different mapbox subplot,\",\"using first token found as mapbox-gl does not allow multipleaccess tokens on the same page.\"].join(\"\\n\"),mapOnErrorMsg:\"Mapbox error.\",mapboxLogo:{path0:\"m 10.5,1.24 c -5.11,0 -9.25,4.15 -9.25,9.25 0,5.1 4.15,9.25 9.25,9.25 5.1,0 9.25,-4.15 9.25,-9.25 0,-5.11 -4.14,-9.25 -9.25,-9.25 z m 4.39,11.53 c -1.93,1.93 -4.78,2.31 -6.7,2.31 -0.7,0 -1.41,-0.05 -2.1,-0.16 0,0 -1.02,-5.64 2.14,-8.81 0.83,-0.83 1.95,-1.28 3.13,-1.28 1.27,0 2.49,0.51 3.39,1.42 1.84,1.84 1.89,4.75 0.14,6.52 z\",path1:\"M 10.5,-0.01 C 4.7,-0.01 0,4.7 0,10.49 c 0,5.79 4.7,10.5 10.5,10.5 5.8,0 10.5,-4.7 10.5,-10.5 C 20.99,4.7 16.3,-0.01 10.5,-0.01 Z m 0,19.75 c -5.11,0 -9.25,-4.15 -9.25,-9.25 0,-5.1 4.14,-9.26 9.25,-9.26 5.11,0 9.25,4.15 9.25,9.25 0,5.13 -4.14,9.26 -9.25,9.26 z\",path2:\"M 14.74,6.25 C 12.9,4.41 9.98,4.35 8.23,6.1 5.07,9.27 6.09,14.91 6.09,14.91 c 0,0 5.64,1.02 8.81,-2.14 C 16.64,11 16.59,8.09 14.74,6.25 Z m -2.27,4.09 -0.91,1.87 -0.9,-1.87 -1.86,-0.91 1.86,-0.9 0.9,-1.87 0.91,1.87 1.86,0.9 z\",polygon:\"11.56,12.21 10.66,10.34 8.8,9.43 10.66,8.53 11.56,6.66 12.47,8.53 14.33,9.43 12.47,10.34\"},styleRules:{map:\"overflow:hidden;position:relative;\",\"missing-css\":\"display:none;\",canary:\"background-color:salmon;\",\"ctrl-bottom-left\":\"position: absolute; pointer-events: none; z-index: 2; bottom: 0; left: 0;\",\"ctrl-bottom-right\":\"position: absolute; pointer-events: none; z-index: 2; right: 0; bottom: 0;\",ctrl:\"clear: both; pointer-events: auto; transform: translate(0, 0);\",\"ctrl-attrib.mapboxgl-compact .mapboxgl-ctrl-attrib-inner\":\"display: none;\",\"ctrl-attrib.mapboxgl-compact:hover .mapboxgl-ctrl-attrib-inner\":\"display: block; margin-top:2px\",\"ctrl-attrib.mapboxgl-compact:hover\":\"padding: 2px 24px 2px 4px; visibility: visible; margin-top: 6px;\",\"ctrl-attrib.mapboxgl-compact::after\":'content: \"\"; cursor: pointer; position: absolute; background-image: url(\\'data:image/svg+xml;charset=utf-8,%3Csvg viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"%3E %3Cpath fill=\"%23333333\" fill-rule=\"evenodd\" d=\"M4,10a6,6 0 1,0 12,0a6,6 0 1,0 -12,0 M9,7a1,1 0 1,0 2,0a1,1 0 1,0 -2,0 M9,10a1,1 0 1,1 2,0l0,3a1,1 0 1,1 -2,0\"/%3E %3C/svg%3E\\'); background-color: rgba(255, 255, 255, 0.5); width: 24px; height: 24px; box-sizing: border-box; border-radius: 12px;',\"ctrl-attrib.mapboxgl-compact\":\"min-height: 20px; padding: 0; margin: 10px; position: relative; background-color: #fff; border-radius: 3px 12px 12px 3px;\",\"ctrl-bottom-right > .mapboxgl-ctrl-attrib.mapboxgl-compact::after\":\"bottom: 0; right: 0\",\"ctrl-bottom-left > .mapboxgl-ctrl-attrib.mapboxgl-compact::after\":\"bottom: 0; left: 0\",\"ctrl-bottom-left .mapboxgl-ctrl\":\"margin: 0 0 10px 10px; float: left;\",\"ctrl-bottom-right .mapboxgl-ctrl\":\"margin: 0 10px 10px 0; float: right;\",\"ctrl-attrib\":\"color: rgba(0, 0, 0, 0.75); text-decoration: none; font-size: 12px\",\"ctrl-attrib a\":\"color: rgba(0, 0, 0, 0.75); text-decoration: none; font-size: 12px\",\"ctrl-attrib a:hover\":\"color: inherit; text-decoration: underline;\",\"ctrl-attrib .mapbox-improve-map\":\"font-weight: bold; margin-left: 2px;\",\"attrib-empty\":\"display: none;\",\"ctrl-logo\":'display:block; width: 21px; height: 21px; background-image: url(\\'data:image/svg+xml;charset=utf-8,%3C?xml version=\"1.0\" encoding=\"utf-8\"?%3E %3Csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 21 21\" style=\"enable-background:new 0 0 21 21;\" xml:space=\"preserve\"%3E%3Cg transform=\"translate(0,0.01)\"%3E%3Cpath d=\"m 10.5,1.24 c -5.11,0 -9.25,4.15 -9.25,9.25 0,5.1 4.15,9.25 9.25,9.25 5.1,0 9.25,-4.15 9.25,-9.25 0,-5.11 -4.14,-9.25 -9.25,-9.25 z m 4.39,11.53 c -1.93,1.93 -4.78,2.31 -6.7,2.31 -0.7,0 -1.41,-0.05 -2.1,-0.16 0,0 -1.02,-5.64 2.14,-8.81 0.83,-0.83 1.95,-1.28 3.13,-1.28 1.27,0 2.49,0.51 3.39,1.42 1.84,1.84 1.89,4.75 0.14,6.52 z\" style=\"opacity:0.9;fill:%23ffffff;enable-background:new\" class=\"st0\"/%3E%3Cpath d=\"M 10.5,-0.01 C 4.7,-0.01 0,4.7 0,10.49 c 0,5.79 4.7,10.5 10.5,10.5 5.8,0 10.5,-4.7 10.5,-10.5 C 20.99,4.7 16.3,-0.01 10.5,-0.01 Z m 0,19.75 c -5.11,0 -9.25,-4.15 -9.25,-9.25 0,-5.1 4.14,-9.26 9.25,-9.26 5.11,0 9.25,4.15 9.25,9.25 0,5.13 -4.14,9.26 -9.25,9.26 z\" style=\"opacity:0.35;enable-background:new\" class=\"st1\"/%3E%3Cpath d=\"M 14.74,6.25 C 12.9,4.41 9.98,4.35 8.23,6.1 5.07,9.27 6.09,14.91 6.09,14.91 c 0,0 5.64,1.02 8.81,-2.14 C 16.64,11 16.59,8.09 14.74,6.25 Z m -2.27,4.09 -0.91,1.87 -0.9,-1.87 -1.86,-0.91 1.86,-0.9 0.9,-1.87 0.91,1.87 1.86,0.9 z\" style=\"opacity:0.35;enable-background:new\" class=\"st1\"/%3E%3Cpolygon points=\"11.56,12.21 10.66,10.34 8.8,9.43 10.66,8.53 11.56,6.66 12.47,8.53 14.33,9.43 12.47,10.34 \" style=\"opacity:0.9;fill:%23ffffff;enable-background:new\" class=\"st0\"/%3E%3C/g%3E%3C/svg%3E\\')'}}},{\"../../lib/sort_object_keys\":526}],612:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t,e){var r=t.split(\" \"),i=r[0],a=r[1],o=n.isArrayOrTypedArray(e)?n.mean(e):e,s=.5+o/100,l=1.5+o/100,c=[\"\",\"\"],u=[0,0];switch(i){case\"top\":c[0]=\"top\",u[1]=-l;break;case\"bottom\":c[0]=\"bottom\",u[1]=l}switch(a){case\"left\":c[1]=\"right\",u[0]=-s;break;case\"right\":c[1]=\"left\",u[0]=s}return{anchor:c[0]&&c[1]?c.join(\"-\"):c[0]?c[0]:c[1]?c[1]:\"center\",offset:u}}},{\"../../lib\":503}],613:[function(t,e,r){\"use strict\";var n=t(\"mapbox-gl/dist/mapbox-gl-unminified\"),i=t(\"../../lib\"),a=i.strTranslate,o=i.strScale,s=t(\"../../plots/get_data\").getSubplotCalcData,l=t(\"../../constants/xmlns_namespaces\"),c=t(\"@plotly/d3\"),u=t(\"../../components/drawing\"),f=t(\"../../lib/svg_text_utils\"),h=t(\"./mapbox\"),p=r.constants=t(\"./constants\");function d(t){return\"string\"==typeof t&&(-1!==p.styleValuesMapbox.indexOf(t)||0===t.indexOf(\"mapbox://\"))}r.name=\"mapbox\",r.attr=\"subplot\",r.idRoot=\"mapbox\",r.idRegex=r.attrRegex=i.counterRegex(\"mapbox\"),r.attributes={subplot:{valType:\"subplotid\",dflt:\"mapbox\",editType:\"calc\"}},r.layoutAttributes=t(\"./layout_attributes\"),r.supplyLayoutDefaults=t(\"./layout_defaults\"),r.plot=function(t){var e=t._fullLayout,r=t.calcdata,a=e._subplots.mapbox;if(n.version!==p.requiredVersion)throw new Error(p.wrongVersionErrorMsg);var o=function(t,e){var r=t._fullLayout;if(\"\"===t._context.mapboxAccessToken)return\"\";for(var n=[],a=[],o=!1,s=!1,l=0;l1&&i.warn(p.multipleTokensErrorMsg),n[0]):(a.length&&i.log([\"Listed mapbox access token(s)\",a.join(\",\"),\"but did not use a Mapbox map style, ignoring token(s).\"].join(\" \")),\"\")}(t,a);n.accessToken=o;for(var l=0;l_/2){var w=v.split(\"|\").join(\"
\");x.text(w).attr(\"data-unformatted\",w).call(f.convertToTspans,t),b=u.bBox(x.node())}x.attr(\"transform\",a(-3,8-b.height)),y.insert(\"rect\",\".static-attribution\").attr({x:-b.width-6,y:-b.height-3,width:b.width+6,height:b.height+3,fill:\"rgba(255, 255, 255, 0.75)\"});var T=1;b.width+6>_&&(T=_/(b.width+6));var k=[n.l+n.w*h.x[1],n.t+n.h*(1-h.y[0])];y.attr(\"transform\",a(k[0],k[1])+o(T))}},r.updateFx=function(t){for(var e=t._fullLayout,r=e._subplots.mapbox,n=0;n0){for(var r=0;r0}function u(t){var e={},r={};switch(t.type){case\"circle\":n.extendFlat(r,{\"circle-radius\":t.circle.radius,\"circle-color\":t.color,\"circle-opacity\":t.opacity});break;case\"line\":n.extendFlat(r,{\"line-width\":t.line.width,\"line-color\":t.color,\"line-opacity\":t.opacity,\"line-dasharray\":t.line.dash});break;case\"fill\":n.extendFlat(r,{\"fill-color\":t.color,\"fill-outline-color\":t.fill.outlinecolor,\"fill-opacity\":t.opacity});break;case\"symbol\":var i=t.symbol,o=a(i.textposition,i.iconsize);n.extendFlat(e,{\"icon-image\":i.icon+\"-15\",\"icon-size\":i.iconsize/10,\"text-field\":i.text,\"text-size\":i.textfont.size,\"text-anchor\":o.anchor,\"text-offset\":o.offset,\"symbol-placement\":i.placement}),n.extendFlat(r,{\"icon-color\":t.color,\"text-color\":i.textfont.color,\"text-opacity\":t.opacity});break;case\"raster\":n.extendFlat(r,{\"raster-fade-duration\":0,\"raster-opacity\":t.opacity})}return{layout:e,paint:r}}l.update=function(t){this.visible?this.needsNewImage(t)?this.updateImage(t):this.needsNewSource(t)?(this.removeLayer(),this.updateSource(t),this.updateLayer(t)):this.needsNewLayer(t)?this.updateLayer(t):this.updateStyle(t):(this.updateSource(t),this.updateLayer(t)),this.visible=c(t)},l.needsNewImage=function(t){return this.subplot.map.getSource(this.idSource)&&\"image\"===this.sourceType&&\"image\"===t.sourcetype&&(this.source!==t.source||JSON.stringify(this.coordinates)!==JSON.stringify(t.coordinates))},l.needsNewSource=function(t){return this.sourceType!==t.sourcetype||JSON.stringify(this.source)!==JSON.stringify(t.source)||this.layerType!==t.type},l.needsNewLayer=function(t){return this.layerType!==t.type||this.below!==this.subplot.belowLookup[\"layout-\"+this.index]},l.lookupBelow=function(){return this.subplot.belowLookup[\"layout-\"+this.index]},l.updateImage=function(t){this.subplot.map.getSource(this.idSource).updateImage({url:t.source,coordinates:t.coordinates});var e=this.findFollowingMapboxLayerId(this.lookupBelow());null!==e&&this.subplot.map.moveLayer(this.idLayer,e)},l.updateSource=function(t){var e=this.subplot.map;if(e.getSource(this.idSource)&&e.removeSource(this.idSource),this.sourceType=t.sourcetype,this.source=t.source,c(t)){var r=function(t){var e,r=t.sourcetype,n=t.source,a={type:r};\"geojson\"===r?e=\"data\":\"vector\"===r?e=\"string\"==typeof n?\"url\":\"tiles\":\"raster\"===r?(e=\"tiles\",a.tileSize=256):\"image\"===r&&(e=\"url\",a.coordinates=t.coordinates);a[e]=n,t.sourceattribution&&(a.attribution=i(t.sourceattribution));return a}(t);e.addSource(this.idSource,r)}},l.findFollowingMapboxLayerId=function(t){if(\"traces\"===t)for(var e=this.subplot.getMapLayers(),r=0;r1)for(r=0;r-1&&v(e.originalEvent,n,[r.xaxis],[r.yaxis],r.id,t),i.indexOf(\"event\")>-1&&c.click(n,e.originalEvent)}}},_.updateFx=function(t){var e=this,r=e.map,n=e.gd;if(!e.isStatic){var a,o=t.dragmode;a=f(o)?function(t,r){(t.range={})[e.id]=[c([r.xmin,r.ymin]),c([r.xmax,r.ymax])]}:function(t,r,n){(t.lassoPoints={})[e.id]=n.filtered.map(c)};var s=e.dragOptions;e.dragOptions=i.extendDeep(s||{},{dragmode:t.dragmode,element:e.div,gd:n,plotinfo:{id:e.id,domain:t[e.id].domain,xaxis:e.xaxis,yaxis:e.yaxis,fillRangeItems:a},xaxes:[e.xaxis],yaxes:[e.yaxis],subplot:e.id}),r.off(\"click\",e.onClickInPanHandler),p(o)||h(o)?(r.dragPan.disable(),r.on(\"zoomstart\",e.clearSelect),e.dragOptions.prepFn=function(t,r,n){d(t,r,n,e.dragOptions,o)},l.init(e.dragOptions)):(r.dragPan.enable(),r.off(\"zoomstart\",e.clearSelect),e.div.onmousedown=null,e.onClickInPanHandler=e.onClickInPanFn(e.dragOptions),r.on(\"click\",e.onClickInPanHandler))}function c(t){var r=e.map.unproject(t);return[r.lng,r.lat]}},_.updateFramework=function(t){var e=t[this.id].domain,r=t._size,n=this.div.style;n.width=r.w*(e.x[1]-e.x[0])+\"px\",n.height=r.h*(e.y[1]-e.y[0])+\"px\",n.left=r.l+e.x[0]*r.w+\"px\",n.top=r.t+(1-e.y[1])*r.h+\"px\",this.xaxis._offset=r.l+e.x[0]*r.w,this.xaxis._length=r.w*(e.x[1]-e.x[0]),this.yaxis._offset=r.t+(1-e.y[1])*r.h,this.yaxis._length=r.h*(e.y[1]-e.y[0])},_.updateLayers=function(t){var e,r=t[this.id].layers,n=this.layerList;if(r.length!==n.length){for(e=0;e=e.width-20?(a[\"text-anchor\"]=\"start\",a.x=5):(a[\"text-anchor\"]=\"end\",a.x=e._paper.attr(\"width\")-7),r.attr(a);var o=r.select(\".js-link-to-tool\"),s=r.select(\".js-link-spacer\"),l=r.select(\".js-sourcelinks\");t._context.showSources&&t._context.showSources(t),t._context.showLink&&function(t,e){e.text(\"\");var r=e.append(\"a\").attr({\"xlink:xlink:href\":\"#\",class:\"link--impt link--embedview\",\"font-weight\":\"bold\"}).text(t._context.linkText+\" \"+String.fromCharCode(187));if(t._context.sendData)r.on(\"click\",(function(){b.sendDataToCloud(t)}));else{var n=window.location.pathname.split(\"/\"),i=window.location.search;r.attr({\"xlink:xlink:show\":\"new\",\"xlink:xlink:href\":\"/\"+n[2].split(\".\")[0]+\"/\"+n[1]+i})}}(t,o),s.text(o.text()&&l.text()?\" - \":\"\")}},b.sendDataToCloud=function(t){var e=(window.PLOTLYENV||{}).BASE_URL||t._context.plotlyServerURL;if(e){t.emit(\"plotly_beforeexport\");var r=n.select(t).append(\"div\").attr(\"id\",\"hiddenform\").style(\"display\",\"none\"),i=r.append(\"form\").attr({action:e+\"/external\",method:\"post\",target:\"_blank\"});return i.append(\"input\").attr({type:\"text\",name:\"data\"}).node().value=b.graphJson(t,!1,\"keepdata\"),i.node().submit(),r.remove(),t.emit(\"plotly_afterexport\"),!1}};var T=[\"days\",\"shortDays\",\"months\",\"shortMonths\",\"periods\",\"dateTime\",\"date\",\"time\",\"decimal\",\"thousands\",\"grouping\",\"currency\"],k=[\"year\",\"month\",\"dayMonth\",\"dayMonthYear\"];function A(t,e){var r=t._context.locale;r||(r=\"en-US\");var n=!1,i={};function a(t){for(var r=!0,a=0;a1&&z.length>1){for(s.getComponentMethod(\"grid\",\"sizeDefaults\")(c,l),o=0;o15&&z.length>15&&0===l.shapes.length&&0===l.images.length,b.linkSubplots(h,l,f,n),b.cleanPlot(h,l,f,n);var N=!(!n._has||!n._has(\"gl2d\")),j=!(!l._has||!l._has(\"gl2d\")),U=!(!n._has||!n._has(\"cartesian\"))||N,V=!(!l._has||!l._has(\"cartesian\"))||j;U&&!V?n._bgLayer.remove():V&&!U&&(l._shouldCreateBgLayer=!0),n._zoomlayer&&!t._dragging&&d({_fullLayout:n}),function(t,e){var r,n=[];e.meta&&(r=e._meta={meta:e.meta,layout:{meta:e.meta}});for(var i=0;i0){var f=1-2*s;n=Math.round(f*n),i=Math.round(f*i)}}var h=b.layoutAttributes.width.min,p=b.layoutAttributes.height.min;n1,g=!e.height&&Math.abs(r.height-i)>1;(g||d)&&(d&&(r.width=n),g&&(r.height=i)),t._initialAutoSize||(t._initialAutoSize={width:n,height:i}),b.sanitizeMargins(r)},b.supplyLayoutModuleDefaults=function(t,e,r,n){var i,a,o,l=s.componentsRegistry,c=e._basePlotModules,f=s.subplotsRegistry.cartesian;for(i in l)(o=l[i]).includeBasePlot&&o.includeBasePlot(t,e);for(var h in c.length||c.push(f),e._has(\"cartesian\")&&(s.getComponentMethod(\"grid\",\"contentDefaults\")(t,e),f.finalizeSubplots(t,e)),e._subplots)e._subplots[h].sort(u.subplotSort);for(a=0;a1&&(r.l/=g,r.r/=g)}if(f){var m=(r.t+r.b)/f;m>1&&(r.t/=m,r.b/=m)}var v=void 0!==r.xl?r.xl:r.x,y=void 0!==r.xr?r.xr:r.x,x=void 0!==r.yt?r.yt:r.y,_=void 0!==r.yb?r.yb:r.y;h[e]={l:{val:v,size:r.l+d},r:{val:y,size:r.r+d},b:{val:_,size:r.b+d},t:{val:x,size:r.t+d}},p[e]=1}else delete h[e],delete p[e];if(!n._replotting)return b.doAutoMargin(t)}},b.doAutoMargin=function(t){var e=t._fullLayout,r=e.width,n=e.height;e._size||(e._size={}),C(e);var i=e._size,a=e.margin,l=u.extendFlat({},i),c=a.l,f=a.r,h=a.t,d=a.b,g=e._pushmargin,m=e._pushmarginIds;if(!1!==e.margin.autoexpand){for(var v in g)m[v]||delete g[v];for(var y in g.base={l:{val:0,size:c},r:{val:1,size:f},t:{val:1,size:h},b:{val:0,size:d}},g){var x=g[y].l||{},_=g[y].b||{},w=x.val,T=x.size,k=_.val,A=_.size;for(var M in g){if(o(T)&&g[M].r){var S=g[M].r.val,E=g[M].r.size;if(S>w){var L=(T*S+(E-r)*w)/(S-w),P=(E*(1-w)+(T-r)*(1-S))/(S-w);L+P>c+f&&(c=L,f=P)}}if(o(A)&&g[M].t){var I=g[M].t.val,O=g[M].t.size;if(I>k){var z=(A*I+(O-n)*k)/(I-k),D=(O*(1-k)+(A-n)*(1-I))/(I-k);z+D>d+h&&(d=z,h=D)}}}}}var R=u.constrain(r-a.l-a.r,2,64),F=u.constrain(n-a.t-a.b,2,64),B=Math.max(0,r-R),N=Math.max(0,n-F);if(B){var j=(c+f)/B;j>1&&(c/=j,f/=j)}if(N){var U=(d+h)/N;U>1&&(d/=U,h/=U)}if(i.l=Math.round(c),i.r=Math.round(f),i.t=Math.round(h),i.b=Math.round(d),i.p=Math.round(a.pad),i.w=Math.round(r)-i.l-i.r,i.h=Math.round(n)-i.t-i.b,!e._replotting&&b.didMarginChange(l,i)){\"_redrawFromAutoMarginCount\"in e?e._redrawFromAutoMarginCount++:e._redrawFromAutoMarginCount=1;var V=3*(1+Object.keys(m).length);if(e._redrawFromAutoMarginCount0&&(t._transitioningWithDuration=!0),t._transitionData._interruptCallbacks.push((function(){n=!0})),r.redraw&&t._transitionData._interruptCallbacks.push((function(){return s.call(\"redraw\",t)})),t._transitionData._interruptCallbacks.push((function(){t.emit(\"plotly_transitioninterrupted\",[])}));var a=0,o=0;function l(){return a++,function(){o++,n||o!==a||function(e){if(!t._transitionData)return;(function(t){if(t)for(;t.length;)t.shift()})(t._transitionData._interruptCallbacks),Promise.resolve().then((function(){if(r.redraw)return s.call(\"redraw\",t)})).then((function(){t._transitioning=!1,t._transitioningWithDuration=!1,t.emit(\"plotly_transitioned\",[])})).then(e)}(i)}}r.runFn(l),setTimeout(l())}))}],a=u.syncOrAsync(i,t);return a&&a.then||(a=Promise.resolve()),a.then((function(){return t}))}b.didMarginChange=function(t,e){for(var r=0;r1)return!0}return!1},b.graphJson=function(t,e,r,n,i,a){(i&&e&&!t._fullData||i&&!e&&!t._fullLayout)&&b.supplyDefaults(t);var o=i?t._fullData:t.data,s=i?t._fullLayout:t.layout,l=(t._transitionData||{})._frames;function c(t,e){if(\"function\"==typeof t)return e?\"_function_\":null;if(u.isPlainObject(t)){var n,i={};return Object.keys(t).sort().forEach((function(a){if(-1===[\"_\",\"[\"].indexOf(a.charAt(0)))if(\"function\"!=typeof t[a]){if(\"keepdata\"===r){if(\"src\"===a.substr(a.length-3))return}else if(\"keepstream\"===r){if(\"string\"==typeof(n=t[a+\"src\"])&&n.indexOf(\":\")>0&&!u.isPlainObject(t.stream))return}else if(\"keepall\"!==r&&\"string\"==typeof(n=t[a+\"src\"])&&n.indexOf(\":\")>0)return;i[a]=c(t[a],e)}else e&&(i[a]=\"_function\")})),i}return Array.isArray(t)?t.map((function(t){return c(t,e)})):u.isTypedArray(t)?u.simpleMap(t,u.identity):u.isJSDate(t)?u.ms2DateTimeLocal(+t):t}var f={data:(o||[]).map((function(t){var r=c(t);return e&&delete r.fit,r}))};if(!e&&(f.layout=c(s),i)){var h=s._size;f.layout.computed={margin:{b:h.b,l:h.l,r:h.r,t:h.t}}}return l&&(f.frames=c(l)),a&&(f.config=c(t._context,!0)),\"object\"===n?f:JSON.stringify(f)},b.modifyFrames=function(t,e){var r,n,i,a=t._transitionData._frames,o=t._transitionData._frameHash;for(r=0;r=0;a--)if(s[a].enabled){r._indexToPoints=s[a]._indexToPoints;break}n&&n.calc&&(o=n.calc(t,r))}Array.isArray(o)&&o[0]||(o=[{x:h,y:h}]),o[0].t||(o[0].t={}),o[0].trace=r,d[e]=o}}for(z(o,c,f),i=0;i1e-10?t:0}function h(t,e,r){e=e||0,r=r||0;for(var n=t.length,i=new Array(n),a=0;a0?r:1/0})),i=n.mod(r+1,e.length);return[e[r],e[i]]},findIntersectionXY:c,findXYatLength:function(t,e,r,n){var i=-e*r,a=e*e+1,o=2*(e*i-r),s=i*i+r*r-t*t,l=Math.sqrt(o*o-4*a*s),c=(-o+l)/(2*a),u=(-o-l)/(2*a);return[[c,e*c+i+n],[u,e*u+i+n]]},clampTiny:f,pathPolygon:function(t,e,r,n,i,a){return\"M\"+h(u(t,e,r,n),i,a).join(\"L\")},pathPolygonAnnulus:function(t,e,r,n,i,a,o){var s,l;t=90||s>90&&l>=450?1:u<=0&&h<=0?0:Math.max(u,h);e=s<=180&&l>=180||s>180&&l>=540?-1:c>=0&&f>=0?0:Math.min(c,f);r=s<=270&&l>=270||s>270&&l>=630?-1:u>=0&&h>=0?0:Math.min(u,h);n=l>=360?1:c<=0&&f<=0?0:Math.max(c,f);return[e,r,n,i]}(p),b=x[2]-x[0],_=x[3]-x[1],w=h/f,T=Math.abs(_/b);w>T?(d=f,y=(h-(g=f*T))/n.h/2,m=[o[0],o[1]],v=[s[0]+y,s[1]-y]):(g=h,y=(f-(d=h/T))/n.w/2,m=[o[0]+y,o[1]-y],v=[s[0],s[1]]),this.xLength2=d,this.yLength2=g,this.xDomain2=m,this.yDomain2=v;var k,A=this.xOffset2=n.l+n.w*m[0],M=this.yOffset2=n.t+n.h*(1-v[1]),S=this.radius=d/b,E=this.innerRadius=this.getHole(e)*S,L=this.cx=A-S*x[0],C=this.cy=M+S*x[3],P=this.cxx=L-A,I=this.cyy=C-M,O=i.side;\"counterclockwise\"===O?(k=O,O=\"top\"):\"clockwise\"===O&&(k=O,O=\"bottom\"),this.radialAxis=this.mockAxis(t,e,i,{_id:\"x\",side:O,_trueSide:k,domain:[E/n.w,S/n.w]}),this.angularAxis=this.mockAxis(t,e,a,{side:\"right\",domain:[0,Math.PI],autorange:!1}),this.doAutoRange(t,e),this.updateAngularAxis(t,e),this.updateRadialAxis(t,e),this.updateRadialAxisTitle(t,e),this.xaxis=this.mockCartesianAxis(t,e,{_id:\"x\",domain:m}),this.yaxis=this.mockCartesianAxis(t,e,{_id:\"y\",domain:v});var z=this.pathSubplot();this.clipPaths.forTraces.select(\"path\").attr(\"d\",z).attr(\"transform\",l(P,I)),r.frontplot.attr(\"transform\",l(A,M)).call(u.setClipUrl,this._hasClipOnAxisFalse?null:this.clipIds.forTraces,this.gd),r.bg.attr(\"d\",z).attr(\"transform\",l(L,C)).call(c.fill,e.bgcolor)},N.mockAxis=function(t,e,r,n){var i=o.extendFlat({},r,n);return d(i,e,t),i},N.mockCartesianAxis=function(t,e,r){var n=this,i=n.isSmith,a=r._id,s=o.extendFlat({type:\"linear\"},r);p(s,t);var l={x:[0,2],y:[1,3]};return s.setRange=function(){var t=n.sectorBBox,r=l[a],i=n.radialAxis._rl,o=(i[1]-i[0])/(1-n.getHole(e));s.range=[t[r[0]]*o,t[r[1]]*o]},s.isPtWithinRange=\"x\"!==a||i?function(){return!0}:function(t){return n.isPtInside(t)},s.setRange(),s.setScale(),s},N.doAutoRange=function(t,e){var r=this.gd,n=this.radialAxis,i=this.getRadial(e);g(r,n);var a=n.range;i.range=a.slice(),i._input.range=a.slice(),n._rl=[n.r2l(a[0],null,\"gregorian\"),n.r2l(a[1],null,\"gregorian\")]},N.updateRadialAxis=function(t,e){var r=this,n=r.gd,i=r.layers,a=r.radius,u=r.innerRadius,f=r.cx,p=r.cy,d=r.getRadial(e),g=D(r.getSector(e)[0],360),m=r.radialAxis,v=u90&&g<=270&&(m.tickangle=180);var x=y?function(t){var e=O(r,C([t.x,0]));return l(e[0]-f,e[1]-p)}:function(t){return l(m.l2p(t.x)+u,0)},b=y?function(t){return I(r,t.x,-1/0,1/0)}:function(t){return r.pathArc(m.r2p(t.x)+u)},_=j(d);if(r.radialTickLayout!==_&&(i[\"radial-axis\"].selectAll(\".xtick\").remove(),r.radialTickLayout=_),v){m.setScale();var w=0,T=y?(m.tickvals||[]).filter((function(t){return t>=0})).map((function(t){return h.tickText(m,t,!0,!1)})):h.calcTicks(m),k=y?T:h.clipEnds(m,T),A=h.getTickSigns(m)[2];y&&((\"top\"===m.ticks&&\"bottom\"===m.side||\"bottom\"===m.ticks&&\"top\"===m.side)&&(A=-A),\"top\"===m.ticks&&\"top\"===m.side&&(w=-m.ticklen),\"bottom\"===m.ticks&&\"bottom\"===m.side&&(w=m.ticklen)),h.drawTicks(n,m,{vals:T,layer:i[\"radial-axis\"],path:h.makeTickPath(m,0,A),transFn:x,crisp:!1}),h.drawGrid(n,m,{vals:k,layer:i[\"radial-grid\"],path:b,transFn:o.noop,crisp:!1}),h.drawLabels(n,m,{vals:T,layer:i[\"radial-axis\"],transFn:x,labelFns:h.makeLabelFns(m,w)})}var M=r.radialAxisAngle=r.vangles?F(U(R(d.angle),r.vangles)):d.angle,S=l(f,p),E=S+s(-M);V(i[\"radial-axis\"],v&&(d.showticklabels||d.ticks),{transform:E}),V(i[\"radial-grid\"],v&&d.showgrid,{transform:y?\"\":S}),V(i[\"radial-line\"].select(\"line\"),v&&d.showline,{x1:y?-a:u,y1:0,x2:a,y2:0,transform:E}).attr(\"stroke-width\",d.linewidth).call(c.stroke,d.linecolor)},N.updateRadialAxisTitle=function(t,e,r){if(!this.isSmith){var n=this.gd,i=this.radius,a=this.cx,o=this.cy,s=this.getRadial(e),l=this.id+\"title\",c=0;if(s.title){var f=u.bBox(this.layers[\"radial-axis\"].node()).height,h=s.title.font.size,p=s.side;c=\"top\"===p?h:\"counterclockwise\"===p?-(f+.4*h):f+.8*h}var d=void 0!==r?r:this.radialAxisAngle,g=R(d),m=Math.cos(g),v=Math.sin(g),y=a+i/2*m+c*v,b=o-i/2*v+c*m;this.layers[\"radial-axis-title\"]=x.draw(n,l,{propContainer:s,propName:this.id+\".radialaxis.title\",placeholder:z(n,\"Click to enter radial axis title\"),attributes:{x:y,y:b,\"text-anchor\":\"middle\"},transform:{rotate:-d}})}},N.updateAngularAxis=function(t,e){var r=this,n=r.gd,i=r.layers,a=r.radius,u=r.innerRadius,f=r.cx,p=r.cy,d=r.getAngular(e),g=r.angularAxis,m=r.isSmith;m||(r.fillViewInitialKey(\"angularaxis.rotation\",d.rotation),g.setGeometry(),g.setScale());var v=m?function(t){var e=O(r,C([0,t.x]));return Math.atan2(e[0]-f,e[1]-p)-Math.PI/2}:function(t){return g.t2g(t.x)};\"linear\"===g.type&&\"radians\"===g.thetaunit&&(g.tick0=F(g.tick0),g.dtick=F(g.dtick));var y=function(t){return l(f+a*Math.cos(t),p-a*Math.sin(t))},x=m?function(t){var e=O(r,C([0,t.x]));return l(e[0],e[1])}:function(t){return y(v(t))},b=m?function(t){var e=O(r,C([0,t.x])),n=Math.atan2(e[0]-f,e[1]-p)-Math.PI/2;return l(e[0],e[1])+s(-F(n))}:function(t){var e=v(t);return y(e)+s(-F(e))},_=m?function(t){return P(r,t.x,0,1/0)}:function(t){var e=v(t),r=Math.cos(e),n=Math.sin(e);return\"M\"+[f+u*r,p-u*n]+\"L\"+[f+a*r,p-a*n]},w=h.makeLabelFns(g,0).labelStandoff,T={xFn:function(t){var e=v(t);return Math.cos(e)*w},yFn:function(t){var e=v(t),r=Math.sin(e)>0?.2:1;return-Math.sin(e)*(w+t.fontSize*r)+Math.abs(Math.cos(e))*(t.fontSize*M)},anchorFn:function(t){var e=v(t),r=Math.cos(e);return Math.abs(r)<.1?\"middle\":r>0?\"start\":\"end\"},heightFn:function(t,e,r){var n=v(t);return-.5*(1+Math.sin(n))*r}},k=j(d);r.angularTickLayout!==k&&(i[\"angular-axis\"].selectAll(\".\"+g._id+\"tick\").remove(),r.angularTickLayout=k);var A,S=m?[1/0].concat(g.tickvals||[]).map((function(t){return h.tickText(g,t,!0,!1)})):h.calcTicks(g);if(m&&(S[0].text=\"\\u221e\",S[0].fontSize*=1.75),\"linear\"===e.gridshape?(A=S.map(v),o.angleDelta(A[0],A[1])<0&&(A=A.slice().reverse())):A=null,r.vangles=A,\"category\"===g.type&&(S=S.filter((function(t){return o.isAngleInsideSector(v(t),r.sectorInRad)}))),g.visible){var E=\"inside\"===g.ticks?-1:1,L=(g.linewidth||1)/2;h.drawTicks(n,g,{vals:S,layer:i[\"angular-axis\"],path:\"M\"+E*L+\",0h\"+E*g.ticklen,transFn:b,crisp:!1}),h.drawGrid(n,g,{vals:S,layer:i[\"angular-grid\"],path:_,transFn:o.noop,crisp:!1}),h.drawLabels(n,g,{vals:S,layer:i[\"angular-axis\"],repositionOnUpdate:!0,transFn:x,labelFns:T})}V(i[\"angular-line\"].select(\"path\"),d.showline,{d:r.pathSubplot(),transform:l(f,p)}).attr(\"stroke-width\",d.linewidth).call(c.stroke,d.linecolor)},N.updateFx=function(t,e){this.gd._context.staticPlot||(!this.isSmith&&(this.updateAngularDrag(t),this.updateRadialDrag(t,e,0),this.updateRadialDrag(t,e,1)),this.updateHoverAndMainDrag(t))},N.updateHoverAndMainDrag=function(t){var e,r,s=this,c=s.isSmith,u=s.gd,f=s.layers,h=t._zoomlayer,p=S.MINZOOM,d=S.OFFEDGE,g=s.radius,x=s.innerRadius,T=s.cx,k=s.cy,A=s.cxx,M=s.cyy,L=s.sectorInRad,C=s.vangles,P=s.radialAxis,I=E.clampTiny,O=E.findXYatLength,z=E.findEnclosingVertexAngles,D=S.cornerHalfWidth,R=S.cornerLen/2,F=m.makeDragger(f,\"path\",\"maindrag\",\"crosshair\");n.select(F).attr(\"d\",s.pathSubplot()).attr(\"transform\",l(T,k)),F.onmousemove=function(t){y.hover(u,t,s.id),u._fullLayout._lasthover=F,u._fullLayout._hoversubplot=s.id},F.onmouseout=function(t){u._dragging||v.unhover(u,t)};var B,N,j,U,V,H,q,G,Y,W={element:F,gd:u,subplot:s.id,plotinfo:{id:s.id,xaxis:s.xaxis,yaxis:s.yaxis},xaxes:[s.xaxis],yaxes:[s.yaxis]};function X(t,e){return Math.sqrt(t*t+e*e)}function Z(t,e){return X(t-A,e-M)}function J(t,e){return Math.atan2(M-e,t-A)}function K(t,e){return[t*Math.cos(e),t*Math.sin(-e)]}function Q(t,e){if(0===t)return s.pathSector(2*D);var r=R/t,n=e-r,i=e+r,a=Math.max(0,Math.min(t,g)),o=a-D,l=a+D;return\"M\"+K(o,n)+\"A\"+[o,o]+\" 0,0,0 \"+K(o,i)+\"L\"+K(l,i)+\"A\"+[l,l]+\" 0,0,1 \"+K(l,n)+\"Z\"}function $(t,e,r){if(0===t)return s.pathSector(2*D);var n,i,a=K(t,e),o=K(t,r),l=I((a[0]+o[0])/2),c=I((a[1]+o[1])/2);if(l&&c){var u=c/l,f=-1/u,h=O(D,u,l,c);n=O(R,f,h[0][0],h[0][1]),i=O(R,f,h[1][0],h[1][1])}else{var p,d;c?(p=R,d=D):(p=D,d=R),n=[[l-p,c-d],[l+p,c-d]],i=[[l-p,c+d],[l+p,c+d]]}return\"M\"+n.join(\"L\")+\"L\"+i.reverse().join(\"L\")+\"Z\"}function tt(t,e){return e=Math.max(Math.min(e,g),x),tp?(t-1&&1===t&&_(e,u,[s.xaxis],[s.yaxis],s.id,W),r.indexOf(\"event\")>-1&&y.click(u,e,s.id)}W.prepFn=function(t,n,a){var l=u._fullLayout.dragmode,f=F.getBoundingClientRect();u._fullLayout._calcInverseTransform(u);var p=u._fullLayout._invTransform;e=u._fullLayout._invScaleX,r=u._fullLayout._invScaleY;var d=o.apply3DTransform(p)(n-f.left,a-f.top);if(B=d[0],N=d[1],C){var v=E.findPolygonOffset(g,L[0],L[1],C);B+=A+v[0],N+=M+v[1]}switch(l){case\"zoom\":W.clickFn=st,c||(W.moveFn=C?it:rt,W.doneFn=at,function(){j=null,U=null,V=s.pathSubplot(),H=!1;var t=u._fullLayout[s.id];q=i(t.bgcolor).getLuminance(),(G=m.makeZoombox(h,q,T,k,V)).attr(\"fill-rule\",\"evenodd\"),Y=m.makeCorners(h,T,k),w(u)}());break;case\"select\":case\"lasso\":b(t,n,a,W,l)}},v.init(W)},N.updateRadialDrag=function(t,e,r){var i=this,c=i.gd,u=i.layers,f=i.radius,h=i.innerRadius,p=i.cx,d=i.cy,g=i.radialAxis,y=S.radialDragBoxSize,x=y/2;if(g.visible){var b,_,T,M=R(i.radialAxisAngle),E=g._rl,L=E[0],C=E[1],P=E[r],I=.75*(E[1]-E[0])/(1-i.getHole(e))/f;r?(b=p+(f+x)*Math.cos(M),_=d-(f+x)*Math.sin(M),T=\"radialdrag\"):(b=p+(h-x)*Math.cos(M),_=d-(h-x)*Math.sin(M),T=\"radialdrag-inner\");var O,z,D,B=m.makeRectDragger(u,T,\"crosshair\",-x,-x,y,y),N={element:B,gd:c};V(n.select(B),g.visible&&h0==(r?D>L:Dn?function(t){return t<=0}:function(t){return t>=0};t.c2g=function(r){var n=t.c2l(r)-e;return(s(n)?n:0)+o},t.g2c=function(r){return t.l2c(r+e-o)},t.g2p=function(t){return t*a},t.c2p=function(e){return t.g2p(t.c2g(e))}}}(t,e);break;case\"angularaxis\":!function(t,e){var r=t.type;if(\"linear\"===r){var i=t.d2c,s=t.c2d;t.d2c=function(t,e){return function(t,e){return\"degrees\"===e?a(t):t}(i(t),e)},t.c2d=function(t,e){return s(function(t,e){return\"degrees\"===e?o(t):t}(t,e))}}t.makeCalcdata=function(e,i){var a,o,s=e[i],l=e._length,c=function(r){return t.d2c(r,e.thetaunit)};if(s){if(n.isTypedArray(s)&&\"linear\"===r){if(l===s.length)return s;if(s.subarray)return s.subarray(0,l)}for(a=new Array(l),o=0;o0?1:0}function i(t){var e=t[0],r=t[1];if(!isFinite(e)||!isFinite(r))return[1,0];var n=(e+1)*(e+1)+r*r;return[(e*e+r*r-1)/n,2*r/n]}function a(t,e){var r=e[0],n=e[1];return[r*t.radius+t.cx,-n*t.radius+t.cy]}function o(t,e){return e*t.radius}e.exports={smith:i,reactanceArc:function(t,e,r,n){var s=a(t,i([r,e])),l=s[0],c=s[1],u=a(t,i([n,e])),f=u[0],h=u[1];if(0===e)return[\"M\"+l+\",\"+c,\"L\"+f+\",\"+h].join(\" \");var p=o(t,1/Math.abs(e));return[\"M\"+l+\",\"+c,\"A\"+p+\",\"+p+\" 0 0,\"+(e<0?1:0)+\" \"+f+\",\"+h].join(\" \")},resistanceArc:function(t,e,r,s){var l=o(t,1/(e+1)),c=a(t,i([e,r])),u=c[0],f=c[1],h=a(t,i([e,s])),p=h[0],d=h[1];if(n(r)!==n(s)){var g=a(t,i([e,0]));return[\"M\"+u+\",\"+f,\"A\"+l+\",\"+l+\" 0 0,\"+(00){for(var n=[],i=0;i=u&&(h.min=0,d.min=0,m.min=0,t.aaxis&&delete t.aaxis.min,t.baxis&&delete t.baxis.min,t.caxis&&delete t.caxis.min)}function g(t,e,r,n){var i=h[e._name];function o(r,n){return a.coerce(t,e,i,r,n)}o(\"uirevision\",n.uirevision),e.type=\"linear\";var p=o(\"color\"),d=p!==i.color.dflt?p:r.font.color,g=e._name.charAt(0).toUpperCase(),m=\"Component \"+g,v=o(\"title.text\",m);e._hovertitle=v===m?v:g,a.coerceFont(o,\"title.font\",{family:r.font.family,size:a.bigFont(r.font.size),color:d}),o(\"min\"),u(t,e,o,\"linear\"),l(t,e,o,\"linear\"),s(t,e,o,\"linear\"),c(t,e,o,{outerTicks:!0}),o(\"showticklabels\")&&(a.coerceFont(o,\"tickfont\",{family:r.font.family,size:r.font.size,color:d}),o(\"tickangle\"),o(\"tickformat\")),f(t,e,o,{dfltColor:p,bgColor:r.bgColor,blend:60,showLine:!0,showGrid:!0,noZeroLine:!0,attributes:i}),o(\"hoverformat\"),o(\"layer\")}e.exports=function(t,e,r){o(t,e,r,{type:\"ternary\",attributes:h,handleDefaults:d,font:e.font,paper_bgcolor:e.paper_bgcolor})}},{\"../../components/color\":366,\"../../lib\":503,\"../../plot_api/plot_template\":543,\"../cartesian/line_grid_defaults\":571,\"../cartesian/prefix_suffix_defaults\":573,\"../cartesian/tick_label_defaults\":578,\"../cartesian/tick_mark_defaults\":579,\"../cartesian/tick_value_defaults\":580,\"../subplot_defaults\":632,\"./layout_attributes\":635}],637:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"tinycolor2\"),a=t(\"../../registry\"),o=t(\"../../lib\"),s=o.strTranslate,l=o._,c=t(\"../../components/color\"),u=t(\"../../components/drawing\"),f=t(\"../cartesian/set_convert\"),h=t(\"../../lib/extend\").extendFlat,p=t(\"../plots\"),d=t(\"../cartesian/axes\"),g=t(\"../../components/dragelement\"),m=t(\"../../components/fx\"),v=t(\"../../components/dragelement/helpers\"),y=v.freeMode,x=v.rectMode,b=t(\"../../components/titles\"),_=t(\"../cartesian/select\").prepSelect,w=t(\"../cartesian/select\").selectOnClick,T=t(\"../cartesian/select\").clearSelect,k=t(\"../cartesian/select\").clearSelectionsCache,A=t(\"../cartesian/constants\");function M(t,e){this.id=t.id,this.graphDiv=t.graphDiv,this.init(e),this.makeFramework(e),this.aTickLayout=null,this.bTickLayout=null,this.cTickLayout=null}e.exports=M;var S=M.prototype;S.init=function(t){this.container=t._ternarylayer,this.defs=t._defs,this.layoutId=t._uid,this.traceHash={},this.layers={}},S.plot=function(t,e){var r=e[this.id],n=e._size;this._hasClipOnAxisFalse=!1;for(var i=0;iE*b?i=(a=b)*E:a=(i=x)/E,o=v*i/x,l=y*a/b,r=e.l+e.w*g-i/2,n=e.t+e.h*(1-m)-a/2,p.x0=r,p.y0=n,p.w=i,p.h=a,p.sum=_,p.xaxis={type:\"linear\",range:[w+2*k-_,_-w-2*T],domain:[g-o/2,g+o/2],_id:\"x\"},f(p.xaxis,p.graphDiv._fullLayout),p.xaxis.setScale(),p.xaxis.isPtWithinRange=function(t){return t.a>=p.aaxis.range[0]&&t.a<=p.aaxis.range[1]&&t.b>=p.baxis.range[1]&&t.b<=p.baxis.range[0]&&t.c>=p.caxis.range[1]&&t.c<=p.caxis.range[0]},p.yaxis={type:\"linear\",range:[w,_-T-k],domain:[m-l/2,m+l/2],_id:\"y\"},f(p.yaxis,p.graphDiv._fullLayout),p.yaxis.setScale(),p.yaxis.isPtWithinRange=function(){return!0};var A=p.yaxis.domain[0],M=p.aaxis=h({},t.aaxis,{range:[w,_-T-k],side:\"left\",tickangle:(+t.aaxis.tickangle||0)-30,domain:[A,A+l*E],anchor:\"free\",position:0,_id:\"y\",_length:i});f(M,p.graphDiv._fullLayout),M.setScale();var S=p.baxis=h({},t.baxis,{range:[_-w-k,T],side:\"bottom\",domain:p.xaxis.domain,anchor:\"free\",position:0,_id:\"x\",_length:i});f(S,p.graphDiv._fullLayout),S.setScale();var L=p.caxis=h({},t.caxis,{range:[_-w-T,k],side:\"right\",tickangle:(+t.caxis.tickangle||0)+30,domain:[A,A+l*E],anchor:\"free\",position:0,_id:\"y\",_length:i});f(L,p.graphDiv._fullLayout),L.setScale();var C=\"M\"+r+\",\"+(n+a)+\"h\"+i+\"l-\"+i/2+\",-\"+a+\"Z\";p.clipDef.select(\"path\").attr(\"d\",C),p.layers.plotbg.select(\"path\").attr(\"d\",C);var P=\"M0,\"+a+\"h\"+i+\"l-\"+i/2+\",-\"+a+\"Z\";p.clipDefRelative.select(\"path\").attr(\"d\",P);var I=s(r,n);p.plotContainer.selectAll(\".scatterlayer,.maplayer\").attr(\"transform\",I),p.clipDefRelative.select(\"path\").attr(\"transform\",null);var O=s(r-S._offset,n+a);p.layers.baxis.attr(\"transform\",O),p.layers.bgrid.attr(\"transform\",O);var z=s(r+i/2,n)+\"rotate(30)\"+s(0,-M._offset);p.layers.aaxis.attr(\"transform\",z),p.layers.agrid.attr(\"transform\",z);var D=s(r+i/2,n)+\"rotate(-30)\"+s(0,-L._offset);p.layers.caxis.attr(\"transform\",D),p.layers.cgrid.attr(\"transform\",D),p.drawAxes(!0),p.layers.aline.select(\"path\").attr(\"d\",M.showline?\"M\"+r+\",\"+(n+a)+\"l\"+i/2+\",-\"+a:\"M0,0\").call(c.stroke,M.linecolor||\"#000\").style(\"stroke-width\",(M.linewidth||0)+\"px\"),p.layers.bline.select(\"path\").attr(\"d\",S.showline?\"M\"+r+\",\"+(n+a)+\"h\"+i:\"M0,0\").call(c.stroke,S.linecolor||\"#000\").style(\"stroke-width\",(S.linewidth||0)+\"px\"),p.layers.cline.select(\"path\").attr(\"d\",L.showline?\"M\"+(r+i/2)+\",\"+n+\"l\"+i/2+\",\"+a:\"M0,0\").call(c.stroke,L.linecolor||\"#000\").style(\"stroke-width\",(L.linewidth||0)+\"px\"),p.graphDiv._context.staticPlot||p.initInteractions(),u.setClipUrl(p.layers.frontplot,p._hasClipOnAxisFalse?null:p.clipId,p.graphDiv)},S.drawAxes=function(t){var e=this.graphDiv,r=this.id.substr(7)+\"title\",n=this.layers,i=this.aaxis,a=this.baxis,o=this.caxis;if(this.drawAx(i),this.drawAx(a),this.drawAx(o),t){var s=Math.max(i.showticklabels?i.tickfont.size/2:0,(o.showticklabels?.75*o.tickfont.size:0)+(\"outside\"===o.ticks?.87*o.ticklen:0)),c=(a.showticklabels?a.tickfont.size:0)+(\"outside\"===a.ticks?a.ticklen:0)+3;n[\"a-title\"]=b.draw(e,\"a\"+r,{propContainer:i,propName:this.id+\".aaxis.title\",placeholder:l(e,\"Click to enter Component A title\"),attributes:{x:this.x0+this.w/2,y:this.y0-i.title.font.size/3-s,\"text-anchor\":\"middle\"}}),n[\"b-title\"]=b.draw(e,\"b\"+r,{propContainer:a,propName:this.id+\".baxis.title\",placeholder:l(e,\"Click to enter Component B title\"),attributes:{x:this.x0-c,y:this.y0+this.h+.83*a.title.font.size+c,\"text-anchor\":\"middle\"}}),n[\"c-title\"]=b.draw(e,\"c\"+r,{propContainer:o,propName:this.id+\".caxis.title\",placeholder:l(e,\"Click to enter Component C title\"),attributes:{x:this.x0+this.w+c,y:this.y0+this.h+.83*o.title.font.size+c,\"text-anchor\":\"middle\"}})}},S.drawAx=function(t){var e,r=this.graphDiv,n=t._name,i=n.charAt(0),a=t._id,s=this.layers[n],l=i+\"tickLayout\",c=(e=t).ticks+String(e.ticklen)+String(e.showticklabels);this[l]!==c&&(s.selectAll(\".\"+a+\"tick\").remove(),this[l]=c),t.setScale();var u=d.calcTicks(t),f=d.clipEnds(t,u),h=d.makeTransTickFn(t),p=d.getTickSigns(t)[2],g=o.deg2rad(30),m=p*(t.linewidth||1)/2,v=p*t.ticklen,y=this.w,x=this.h,b=\"b\"===i?\"M0,\"+m+\"l\"+Math.sin(g)*v+\",\"+Math.cos(g)*v:\"M\"+m+\",0l\"+Math.cos(g)*v+\",\"+-Math.sin(g)*v,_={a:\"M0,0l\"+x+\",-\"+y/2,b:\"M0,0l-\"+y/2+\",-\"+x,c:\"M0,0l-\"+x+\",\"+y/2}[i];d.drawTicks(r,t,{vals:\"inside\"===t.ticks?f:u,layer:s,path:b,transFn:h,crisp:!1}),d.drawGrid(r,t,{vals:f,layer:this.layers[i+\"grid\"],path:_,transFn:h,crisp:!1}),d.drawLabels(r,t,{vals:u,layer:s,transFn:h,labelFns:d.makeLabelFns(t,0,30)})};var L=A.MINZOOM/2+.87,C=\"m-0.87,.5h\"+L+\"v3h-\"+(L+5.2)+\"l\"+(L/2+2.6)+\",-\"+(.87*L+4.5)+\"l2.6,1.5l-\"+L/2+\",\"+.87*L+\"Z\",P=\"m0.87,.5h-\"+L+\"v3h\"+(L+5.2)+\"l-\"+(L/2+2.6)+\",-\"+(.87*L+4.5)+\"l-2.6,1.5l\"+L/2+\",\"+.87*L+\"Z\",I=\"m0,1l\"+L/2+\",\"+.87*L+\"l2.6,-1.5l-\"+(L/2+2.6)+\",-\"+(.87*L+4.5)+\"l-\"+(L/2+2.6)+\",\"+(.87*L+4.5)+\"l2.6,1.5l\"+L/2+\",-\"+.87*L+\"Z\",O=!0;function z(t){n.select(t).selectAll(\".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners\").remove()}S.clearSelect=function(){k(this.dragOptions),T(this.dragOptions.gd)},S.initInteractions=function(){var t,e,r,n,f,h,p,d,v,b,T,k,M=this,S=M.layers.plotbg.select(\"path\").node(),L=M.graphDiv,D=L._fullLayout._zoomlayer;function R(t){var e={};return e[M.id+\".aaxis.min\"]=t.a,e[M.id+\".baxis.min\"]=t.b,e[M.id+\".caxis.min\"]=t.c,e}function F(t,e){var r=L._fullLayout.clickmode;z(L),2===t&&(L.emit(\"plotly_doubleclick\",null),a.call(\"_guiRelayout\",L,R({a:0,b:0,c:0}))),r.indexOf(\"select\")>-1&&1===t&&w(e,L,[M.xaxis],[M.yaxis],M.id,M.dragOptions),r.indexOf(\"event\")>-1&&m.click(L,e,M.id)}function B(t,e){return 1-e/M.h}function N(t,e){return 1-(t+(M.h-e)/Math.sqrt(3))/M.w}function j(t,e){return(t-(M.h-e)/Math.sqrt(3))/M.w}function U(i,a){var o=r+i*t,s=n+a*e,l=Math.max(0,Math.min(1,B(0,n),B(0,s))),c=Math.max(0,Math.min(1,N(r,n),N(o,s))),u=Math.max(0,Math.min(1,j(r,n),j(o,s))),g=(l/2+u)*M.w,m=(1-l/2-c)*M.w,y=(g+m)/2,x=m-g,_=(1-l)*M.h,w=_-x/E;x.2?\"rgba(0,0,0,0.4)\":\"rgba(255,255,255,0.3)\").duration(200),k.transition().style(\"opacity\",1).duration(200),b=!0),L.emit(\"plotly_relayouting\",R(p))}function V(){z(L),p!==f&&(a.call(\"_guiRelayout\",L,R(p)),O&&L.data&&L._context.showTips&&(o.notifier(l(L,\"Double-click to zoom back out\"),\"long\"),O=!1))}function H(t,e){var r=t/M.xaxis._m,n=e/M.yaxis._m,i=[(p={a:f.a-n,b:f.b+(r+n)/2,c:f.c-(r-n)/2}).a,p.b,p.c].sort(o.sorterAsc),a=i.indexOf(p.a),l=i.indexOf(p.b),c=i.indexOf(p.c);i[0]<0&&(i[1]+i[0]/2<0?(i[2]+=i[0]+i[1],i[0]=i[1]=0):(i[2]+=i[0]/2,i[1]+=i[0]/2,i[0]=0),p={a:i[a],b:i[l],c:i[c]},e=(f.a-p.a)*M.yaxis._m,t=(f.c-p.c-f.b+p.b)*M.xaxis._m);var h=s(M.x0+t,M.y0+e);M.plotContainer.selectAll(\".scatterlayer,.maplayer\").attr(\"transform\",h);var d=s(-t,-e);M.clipDefRelative.select(\"path\").attr(\"transform\",d),M.aaxis.range=[p.a,M.sum-p.b-p.c],M.baxis.range=[M.sum-p.a-p.c,p.b],M.caxis.range=[M.sum-p.a-p.b,p.c],M.drawAxes(!1),M._hasClipOnAxisFalse&&M.plotContainer.select(\".scatterlayer\").selectAll(\".trace\").call(u.hideOutsideRangePoints,M),L.emit(\"plotly_relayouting\",R(p))}function q(){a.call(\"_guiRelayout\",L,R(p))}this.dragOptions={element:S,gd:L,plotinfo:{id:M.id,domain:L._fullLayout[M.id].domain,xaxis:M.xaxis,yaxis:M.yaxis},subplot:M.id,prepFn:function(a,l,u){M.dragOptions.xaxes=[M.xaxis],M.dragOptions.yaxes=[M.yaxis],t=L._fullLayout._invScaleX,e=L._fullLayout._invScaleY;var g=M.dragOptions.dragmode=L._fullLayout.dragmode;y(g)?M.dragOptions.minDrag=1:M.dragOptions.minDrag=void 0,\"zoom\"===g?(M.dragOptions.moveFn=U,M.dragOptions.clickFn=F,M.dragOptions.doneFn=V,function(t,e,a){var l=S.getBoundingClientRect();r=e-l.left,n=a-l.top,L._fullLayout._calcInverseTransform(L);var u=L._fullLayout._invTransform,g=o.apply3DTransform(u)(r,n);r=g[0],n=g[1],f={a:M.aaxis.range[0],b:M.baxis.range[1],c:M.caxis.range[1]},p=f,h=M.aaxis.range[1]-f.a,d=i(M.graphDiv._fullLayout[M.id].bgcolor).getLuminance(),v=\"M0,\"+M.h+\"L\"+M.w/2+\", 0L\"+M.w+\",\"+M.h+\"Z\",b=!1,T=D.append(\"path\").attr(\"class\",\"zoombox\").attr(\"transform\",s(M.x0,M.y0)).style({fill:d>.2?\"rgba(0,0,0,0)\":\"rgba(255,255,255,0)\",\"stroke-width\":0}).attr(\"d\",v),k=D.append(\"path\").attr(\"class\",\"zoombox-corners\").attr(\"transform\",s(M.x0,M.y0)).style({fill:c.background,stroke:c.defaultLine,\"stroke-width\":1,opacity:0}).attr(\"d\",\"M0,0Z\"),M.clearSelect(L)}(0,l,u)):\"pan\"===g?(M.dragOptions.moveFn=H,M.dragOptions.clickFn=F,M.dragOptions.doneFn=q,f={a:M.aaxis.range[0],b:M.baxis.range[1],c:M.caxis.range[1]},p=f,M.clearSelect(L)):(x(g)||y(g))&&_(a,l,u,M.dragOptions,g)}},S.onmousemove=function(t){m.hover(L,t,M.id),L._fullLayout._lasthover=S,L._fullLayout._hoversubplot=M.id},S.onmouseout=function(t){L._dragging||g.unhover(L,t)},g.init(this.dragOptions)}},{\"../../components/color\":366,\"../../components/dragelement\":385,\"../../components/dragelement/helpers\":384,\"../../components/drawing\":388,\"../../components/fx\":406,\"../../components/titles\":464,\"../../lib\":503,\"../../lib/extend\":493,\"../../registry\":638,\"../cartesian/axes\":554,\"../cartesian/constants\":561,\"../cartesian/select\":575,\"../cartesian/set_convert\":576,\"../plots\":619,\"@plotly/d3\":58,tinycolor2:312}],638:[function(t,e,r){\"use strict\";var n=t(\"./lib/loggers\"),i=t(\"./lib/noop\"),a=t(\"./lib/push_unique\"),o=t(\"./lib/is_plain_object\"),s=t(\"./lib/dom\").addStyleRule,l=t(\"./lib/extend\"),c=t(\"./plots/attributes\"),u=t(\"./plots/layout_attributes\"),f=l.extendFlat,h=l.extendDeepAll;function p(t){var e=t.name,i=t.categories,a=t.meta;if(r.modules[e])n.log(\"Type \"+e+\" already registered\");else{r.subplotsRegistry[t.basePlotModule.name]||function(t){var e=t.name;if(r.subplotsRegistry[e])return void n.log(\"Plot type \"+e+\" already registered.\");for(var i in v(t),r.subplotsRegistry[e]=t,r.componentsRegistry)b(i,t.name)}(t.basePlotModule);for(var o={},l=0;l-1&&(f[p[r]].title={text:\"\"});for(r=0;r\")?\"\":e.html(t).text()}));return e.remove(),r}(T),T=(T=T.replace(/&(?!\\w+;|\\#[0-9]+;| \\#x[0-9A-F]+;)/g,\"&\")).replace(c,\"'\"),i.isIE()&&(T=(T=(T=T.replace(/\"/gi,\"'\")).replace(/(\\('#)([^']*)('\\))/gi,'(\"#$2\")')).replace(/(\\\\')/gi,'\"')),T}},{\"../components/color\":366,\"../components/drawing\":388,\"../constants/xmlns_namespaces\":480,\"../lib\":503,\"@plotly/d3\":58}],647:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t,e){for(var r=0;rf+c||!n(u))}for(var p=0;pa))return e}return void 0!==r?r:t.dflt},r.coerceColor=function(t,e,r){return i(e).isValid()?e:void 0!==r?r:t.dflt},r.coerceEnumerated=function(t,e,r){return t.coerceNumber&&(e=+e),-1!==t.values.indexOf(e)?e:void 0!==r?r:t.dflt},r.getValue=function(t,e){var r;return Array.isArray(t)?e0?e+=r:u<0&&(e-=r)}return e}function z(t){var e=u,r=t.b,i=O(t);return n.inbox(r-e,i-e,_+(i-e)/(i-r)-1)}var D=t[f+\"a\"],R=t[h+\"a\"];g=Math.abs(D.r2c(D.range[1])-D.r2c(D.range[0]));var F=n.getDistanceFunction(i,p,d,(function(t){return(p(t)+d(t))/2}));if(n.getClosest(m,F,t),!1!==t.index&&m[t.index].p!==c){k||(L=function(t){return Math.min(A(t),t.p-y.bargroupwidth/2)},C=function(t){return Math.max(M(t),t.p+y.bargroupwidth/2)});var B=m[t.index],N=v.base?B.b+B.s:B.s;t[h+\"0\"]=t[h+\"1\"]=R.c2p(B[h],!0),t[h+\"LabelVal\"]=N;var j=y.extents[y.extents.round(B.p)];t[f+\"0\"]=D.c2p(x?L(B):j[0],!0),t[f+\"1\"]=D.c2p(x?C(B):j[1],!0);var U=void 0!==B.orig_p;return t[f+\"LabelVal\"]=U?B.orig_p:B.p,t.labelLabel=l(D,t[f+\"LabelVal\"],v[f+\"hoverformat\"]),t.valueLabel=l(R,t[h+\"LabelVal\"],v[h+\"hoverformat\"]),t.baseLabel=l(R,B.b,v[h+\"hoverformat\"]),t.spikeDistance=(function(t){var e=u,r=t.b,i=O(t);return n.inbox(r-e,i-e,w+(i-e)/(i-r)-1)}(B)+function(t){return P(A(t),M(t),w)}(B))/2,t[f+\"Spike\"]=D.c2p(B.p,!0),o(B,v,t),t.hovertemplate=v.hovertemplate,t}}function f(t,e){var r=e.mcc||t.marker.color,n=e.mlcc||t.marker.line.color,i=s(t,e);return a.opacity(r)?r:a.opacity(n)&&i?n:void 0}e.exports={hoverPoints:function(t,e,r,n,a){var o=u(t,e,r,n,a);if(o){var s=o.cd,l=s[0].trace,c=s[o.index];return o.color=f(l,c),i.getComponentMethod(\"errorbars\",\"hoverInfo\")(c,l,o),[o]}},hoverOnBars:u,getTraceColor:f}},{\"../../components/color\":366,\"../../components/fx\":406,\"../../constants/numerical\":479,\"../../lib\":503,\"../../plots/cartesian/axes\":554,\"../../registry\":638,\"./helpers\":654}],656:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\").supplyDefaults,crossTraceDefaults:t(\"./defaults\").crossTraceDefaults,supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\"),crossTraceCalc:t(\"./cross_trace_calc\").crossTraceCalc,colorbar:t(\"../scatter/marker_colorbar\"),arraysToCalcdata:t(\"./arrays_to_calcdata\"),plot:t(\"./plot\").plot,style:t(\"./style\").style,styleOnSelect:t(\"./style\").styleOnSelect,hoverPoints:t(\"./hover\").hoverPoints,eventData:t(\"./event_data\"),selectPoints:t(\"./select\"),moduleType:\"trace\",name:\"bar\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"bar-like\",\"cartesian\",\"svg\",\"bar\",\"oriented\",\"errorBarsOK\",\"showLegend\",\"zoomScale\"],animatable:!0,meta:{}}},{\"../../plots/cartesian\":568,\"../scatter/marker_colorbar\":944,\"./arrays_to_calcdata\":647,\"./attributes\":648,\"./calc\":649,\"./cross_trace_calc\":651,\"./defaults\":652,\"./event_data\":653,\"./hover\":655,\"./layout_attributes\":657,\"./layout_defaults\":658,\"./plot\":659,\"./select\":660,\"./style\":662}],657:[function(t,e,r){\"use strict\";e.exports={barmode:{valType:\"enumerated\",values:[\"stack\",\"group\",\"overlay\",\"relative\"],dflt:\"group\",editType:\"calc\"},barnorm:{valType:\"enumerated\",values:[\"\",\"fraction\",\"percent\"],dflt:\"\",editType:\"calc\"},bargap:{valType:\"number\",min:0,max:1,editType:\"calc\"},bargroupgap:{valType:\"number\",min:0,max:1,dflt:0,editType:\"calc\"}}},{}],658:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"../../lib\"),o=t(\"./layout_attributes\");e.exports=function(t,e,r){function s(r,n){return a.coerce(t,e,o,r,n)}for(var l=!1,c=!1,u=!1,f={},h=s(\"barmode\"),p=0;p0}function S(t){return\"auto\"===t?0:t}function E(t,e){var r=Math.PI/180*e,n=Math.abs(Math.sin(r)),i=Math.abs(Math.cos(r));return{x:t.width*i+t.height*n,y:t.width*n+t.height*i}}function L(t,e,r,n,i,a){var o=!!a.isHorizontal,s=!!a.constrained,l=a.angle||0,c=a.anchor||\"end\",u=\"end\"===c,f=\"start\"===c,h=((a.leftToRight||0)+1)/2,p=1-h,d=i.width,g=i.height,m=Math.abs(e-t),v=Math.abs(n-r),y=m>2*_&&v>2*_?_:0;m-=2*y,v-=2*y;var x=S(l);\"auto\"!==l||d<=m&&g<=v||!(d>m||g>v)||(d>v||g>m)&&d.01?q:function(t,e,r){return r&&t===e?t:Math.abs(t-e)>=2?q(t):t>e?Math.ceil(t):Math.floor(t)};B=G(B,N,D),N=G(N,B,D),j=G(j,U,!D),U=G(U,j,!D)}var Y=A(a.ensureSingle(I,\"path\"),P,m,v);if(Y.style(\"vector-effect\",\"non-scaling-stroke\").attr(\"d\",isNaN((N-B)*(U-j))||V&&t._context.staticPlot?\"M0,0Z\":\"M\"+B+\",\"+j+\"V\"+U+\"H\"+N+\"V\"+j+\"Z\").call(l.setClipUrl,e.layerClipId,t),!P.uniformtext.mode&&R){var W=l.makePointStyleFns(f);l.singlePointStyle(c,Y,f,W,t)}!function(t,e,r,n,i,s,c,f,p,m,v){var w,T=e.xaxis,M=e.yaxis,C=t._fullLayout;function P(e,r,n){return a.ensureSingle(e,\"text\").text(r).attr({class:\"bartext bartext-\"+w,\"text-anchor\":\"middle\",\"data-notex\":1}).call(l.font,n).call(o.convertToTspans,t)}var I=n[0].trace,O=\"h\"===I.orientation,z=function(t,e,r,n,i){var o,s=e[0].trace;o=s.texttemplate?function(t,e,r,n,i){var o=e[0].trace,s=a.castOption(o,r,\"texttemplate\");if(!s)return\"\";var l,c,f,h,p=\"histogram\"===o.type,d=\"waterfall\"===o.type,g=\"funnel\"===o.type,m=\"h\"===o.orientation;m?(l=\"y\",c=i,f=\"x\",h=n):(l=\"x\",c=n,f=\"y\",h=i);function v(t){return u(h,h.c2l(t),!0).text}var y=e[r],x={};x.label=y.p,x.labelLabel=x[l+\"Label\"]=(_=y.p,u(c,c.c2l(_),!0).text);var _;var w=a.castOption(o,y.i,\"text\");(0===w||w)&&(x.text=w);x.value=y.s,x.valueLabel=x[f+\"Label\"]=v(y.s);var T={};b(T,o,y.i),(p||void 0===T.x)&&(T.x=m?x.value:x.label);(p||void 0===T.y)&&(T.y=m?x.label:x.value);(p||void 0===T.xLabel)&&(T.xLabel=m?x.valueLabel:x.labelLabel);(p||void 0===T.yLabel)&&(T.yLabel=m?x.labelLabel:x.valueLabel);d&&(x.delta=+y.rawS||y.s,x.deltaLabel=v(x.delta),x.final=y.v,x.finalLabel=v(x.final),x.initial=x.final-x.delta,x.initialLabel=v(x.initial));g&&(x.value=y.s,x.valueLabel=v(x.value),x.percentInitial=y.begR,x.percentInitialLabel=a.formatPercent(y.begR),x.percentPrevious=y.difR,x.percentPreviousLabel=a.formatPercent(y.difR),x.percentTotal=y.sumR,x.percenTotalLabel=a.formatPercent(y.sumR));var k=a.castOption(o,y.i,\"customdata\");k&&(x.customdata=k);return a.texttemplateString(s,x,t._d3locale,T,x,o._meta||{})}(t,e,r,n,i):s.textinfo?function(t,e,r,n){var i=t[0].trace,o=\"h\"===i.orientation,s=\"waterfall\"===i.type,l=\"funnel\"===i.type;function c(t){return u(o?r:n,+t,!0).text}var f,h=i.textinfo,p=t[e],d=h.split(\"+\"),g=[],m=function(t){return-1!==d.indexOf(t)};m(\"label\")&&g.push((v=t[e].p,u(o?n:r,v,!0).text));var v;m(\"text\")&&(0===(f=a.castOption(i,p.i,\"text\"))||f)&&g.push(f);if(s){var y=+p.rawS||p.s,x=p.v,b=x-y;m(\"initial\")&&g.push(c(b)),m(\"delta\")&&g.push(c(y)),m(\"final\")&&g.push(c(x))}if(l){m(\"value\")&&g.push(c(p.s));var _=0;m(\"percent initial\")&&_++,m(\"percent previous\")&&_++,m(\"percent total\")&&_++;var w=_>1;m(\"percent initial\")&&(f=a.formatPercent(p.begR),w&&(f+=\" of initial\"),g.push(f)),m(\"percent previous\")&&(f=a.formatPercent(p.difR),w&&(f+=\" of previous\"),g.push(f)),m(\"percent total\")&&(f=a.formatPercent(p.sumR),w&&(f+=\" of total\"),g.push(f))}return g.join(\"
\")}(e,r,n,i):g.getValue(s.text,r);return g.coerceString(y,o)}(C,n,i,T,M);w=function(t,e){var r=g.getValue(t.textposition,e);return g.coerceEnumerated(x,r)}(I,i);var D=\"stack\"===m.mode||\"relative\"===m.mode,R=n[i],F=!D||R._outmost;if(!z||\"none\"===w||(R.isBlank||s===c||f===p)&&(\"auto\"===w||\"inside\"===w))return void r.select(\"text\").remove();var B=C.font,N=d.getBarColor(n[i],I),j=d.getInsideTextFont(I,i,B,N),U=d.getOutsideTextFont(I,i,B),V=r.datum();O?\"log\"===T.type&&V.s0<=0&&(s=T.range[0]=G*(Z/Y):Z>=Y*(X/G);G>0&&Y>0&&(J||K||Q)?w=\"inside\":(w=\"outside\",H.remove(),H=null)}else w=\"inside\";if(!H){W=a.ensureUniformFontSize(t,\"outside\"===w?U:j);var $=(H=P(r,z,W)).attr(\"transform\");if(H.attr(\"transform\",\"\"),q=l.bBox(H.node()),G=q.width,Y=q.height,H.attr(\"transform\",$),G<=0||Y<=0)return void H.remove()}var tt,et,rt=I.textangle;\"outside\"===w?(et=\"both\"===I.constraintext||\"outside\"===I.constraintext,tt=function(t,e,r,n,i,a){var o,s=!!a.isHorizontal,l=!!a.constrained,c=a.angle||0,u=i.width,f=i.height,h=Math.abs(e-t),p=Math.abs(n-r);o=s?p>2*_?_:0:h>2*_?_:0;var d=1;l&&(d=s?Math.min(1,p/f):Math.min(1,h/u));var g=S(c),m=E(i,g),v=(s?m.x:m.y)/2,y=(i.left+i.right)/2,x=(i.top+i.bottom)/2,b=(t+e)/2,w=(r+n)/2,T=0,A=0,M=s?k(e,t):k(r,n);s?(b=e-M*o,T=M*v):(w=n+M*o,A=-M*v);return{textX:y,textY:x,targetX:b,targetY:w,anchorX:T,anchorY:A,scale:d,rotate:g}}(s,c,f,p,q,{isHorizontal:O,constrained:et,angle:rt})):(et=\"both\"===I.constraintext||\"inside\"===I.constraintext,tt=L(s,c,f,p,q,{isHorizontal:O,constrained:et,angle:rt,anchor:I.insidetextanchor}));tt.fontSize=W.size,h(\"histogram\"===I.type?\"bar\":I.type,tt,C),R.transform=tt,A(H,C,m,v).attr(\"transform\",a.getTextTransform(tt))}(t,e,I,r,p,B,N,j,U,m,v),e.layerClipId&&l.hideOutsideRangePoint(c,I.select(\"text\"),w,C,f.xcalendar,f.ycalendar)}));var j=!1===f.cliponaxis;l.setClipUrl(c,j?null:e.layerClipId,t)}));c.getComponentMethod(\"errorbars\",\"plot\")(t,I,e,m)},toMoveInsideBar:L}},{\"../../components/color\":366,\"../../components/drawing\":388,\"../../components/fx/helpers\":402,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../../plots/cartesian/axes\":554,\"../../registry\":638,\"./attributes\":648,\"./constants\":650,\"./helpers\":654,\"./style\":662,\"./uniform_text\":664,\"@plotly/d3\":58,\"fast-isnumeric\":190}],660:[function(t,e,r){\"use strict\";function n(t,e,r,n,i){var a=e.c2p(n?t.s0:t.p0,!0),o=e.c2p(n?t.s1:t.p1,!0),s=r.c2p(n?t.p0:t.s0,!0),l=r.c2p(n?t.p1:t.s1,!0);return i?[(a+o)/2,(s+l)/2]:n?[o,(s+l)/2]:[(a+o)/2,l]}e.exports=function(t,e){var r,i=t.cd,a=t.xaxis,o=t.yaxis,s=i[0].trace,l=\"funnel\"===s.type,c=\"h\"===s.orientation,u=[];if(!1===e)for(r=0;r1||0===i.bargap&&0===i.bargroupgap&&!t[0].trace.marker.line.width)&&n.select(this).attr(\"shape-rendering\",\"crispEdges\")})),e.selectAll(\"g.points\").each((function(e){d(n.select(this),e[0].trace,t)})),s.getComponentMethod(\"errorbars\",\"style\")(e)},styleTextPoints:g,styleOnSelect:function(t,e,r){var i=e[0].trace;i.selectedpoints?function(t,e,r){a.selectedPointStyle(t.selectAll(\"path\"),e),function(t,e,r){t.each((function(t){var i,s=n.select(this);if(t.selected){i=o.ensureUniformFontSize(r,m(s,t,e,r));var l=e.selected.textfont&&e.selected.textfont.color;l&&(i.color=l),a.font(s,i)}else a.selectedTextStyle(s,e)}))}(t.selectAll(\"text\"),e,r)}(r,i,t):(d(r,i,t),s.getComponentMethod(\"errorbars\",\"style\")(r))},getInsideTextFont:y,getOutsideTextFont:x,getBarColor:_,resizeText:l}},{\"../../components/color\":366,\"../../components/drawing\":388,\"../../lib\":503,\"../../registry\":638,\"./attributes\":648,\"./helpers\":654,\"./uniform_text\":664,\"@plotly/d3\":58}],663:[function(t,e,r){\"use strict\";var n=t(\"../../components/color\"),i=t(\"../../components/colorscale/helpers\").hasColorscale,a=t(\"../../components/colorscale/defaults\"),o=t(\"../../lib\").coercePattern;e.exports=function(t,e,r,s,l){var c=r(\"marker.color\",s),u=i(t,\"marker\");u&&a(t,e,l,r,{prefix:\"marker.\",cLetter:\"c\"}),r(\"marker.line.color\",n.defaultLine),i(t,\"marker.line\")&&a(t,e,l,r,{prefix:\"marker.line.\",cLetter:\"c\"}),r(\"marker.line.width\"),r(\"marker.opacity\"),o(r,\"marker.pattern\",c,u),r(\"selected.marker.color\"),r(\"unselected.marker.color\")}},{\"../../components/color\":366,\"../../components/colorscale/defaults\":376,\"../../components/colorscale/helpers\":377,\"../../lib\":503}],664:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\");function a(t){return\"_\"+t+\"Text_minsize\"}e.exports={recordMinTextSize:function(t,e,r){if(r.uniformtext.mode){var n=a(t),i=r.uniformtext.minsize,o=e.scale*e.fontSize;e.hide=o g.point\"}e.selectAll(s).each((function(t){var e=t.transform;e&&(e.scale=l&&e.hide?0:o/e.fontSize,n.select(this).select(\"text\").attr(\"transform\",i.getTextTransform(e)))}))}}}},{\"../../lib\":503,\"@plotly/d3\":58}],665:[function(t,e,r){\"use strict\";var n=t(\"../../plots/template_attributes\").hovertemplateAttrs,i=t(\"../../lib/extend\").extendFlat,a=t(\"../scatterpolar/attributes\"),o=t(\"../bar/attributes\");e.exports={r:a.r,theta:a.theta,r0:a.r0,dr:a.dr,theta0:a.theta0,dtheta:a.dtheta,thetaunit:a.thetaunit,base:i({},o.base,{}),offset:i({},o.offset,{}),width:i({},o.width,{}),text:i({},o.text,{}),hovertext:i({},o.hovertext,{}),marker:o.marker,hoverinfo:a.hoverinfo,hovertemplate:n(),selected:o.selected,unselected:o.unselected}},{\"../../lib/extend\":493,\"../../plots/template_attributes\":633,\"../bar/attributes\":648,\"../scatterpolar/attributes\":1e3}],666:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/helpers\").hasColorscale,i=t(\"../../components/colorscale/calc\"),a=t(\"../bar/arrays_to_calcdata\"),o=t(\"../bar/cross_trace_calc\").setGroupPositions,s=t(\"../scatter/calc_selection\"),l=t(\"../../registry\").traceIs,c=t(\"../../lib\").extendFlat;e.exports={calc:function(t,e){for(var r=t._fullLayout,o=e.subplot,l=r[o].radialaxis,c=r[o].angularaxis,u=l.makeCalcdata(e,\"r\"),f=c.makeCalcdata(e,\"theta\"),h=e._length,p=new Array(h),d=u,g=f,m=0;mh.range[1]&&(x+=Math.PI);if(n.getClosest(c,(function(t){return g(y,x,[t.rp0,t.rp1],[t.thetag0,t.thetag1],d)?m+Math.min(1,Math.abs(t.thetag1-t.thetag0)/v)-1+(t.rp1-y)/(t.rp1-t.rp0)-1:1/0}),t),!1!==t.index){var b=c[t.index];t.x0=t.x1=b.ct[0],t.y0=t.y1=b.ct[1];var _=i.extendFlat({},b,{r:b.s,theta:b.p});return o(b,u,t),s(_,u,f,t),t.hovertemplate=u.hovertemplate,t.color=a(u,b),t.xLabelVal=t.yLabelVal=void 0,b.s<0&&(t.idealAlign=\"left\"),[t]}}},{\"../../components/fx\":406,\"../../lib\":503,\"../../plots/polar/helpers\":621,\"../bar/hover\":655,\"../scatterpolar/hover\":1004}],669:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"barpolar\",basePlotModule:t(\"../../plots/polar\"),categories:[\"polar\",\"bar\",\"showLegend\"],attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\"),supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\").calc,crossTraceCalc:t(\"./calc\").crossTraceCalc,plot:t(\"./plot\"),colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"../scatterpolar/format_labels\"),style:t(\"../bar/style\").style,styleOnSelect:t(\"../bar/style\").styleOnSelect,hoverPoints:t(\"./hover\"),selectPoints:t(\"../bar/select\"),meta:{}}},{\"../../plots/polar\":622,\"../bar/select\":660,\"../bar/style\":662,\"../scatter/marker_colorbar\":944,\"../scatterpolar/format_labels\":1003,\"./attributes\":665,\"./calc\":666,\"./defaults\":667,\"./hover\":668,\"./layout_attributes\":670,\"./layout_defaults\":671,\"./plot\":672}],670:[function(t,e,r){\"use strict\";e.exports={barmode:{valType:\"enumerated\",values:[\"stack\",\"overlay\"],dflt:\"stack\",editType:\"calc\"},bargap:{valType:\"number\",dflt:.1,min:0,max:1,editType:\"calc\"}}},{}],671:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e,r){var a,o={};function s(r,o){return n.coerce(t[a]||{},e[a],i,r,o)}for(var l=0;l0?(c=o,u=l):(c=l,u=o);var f=[s.findEnclosingVertexAngles(c,t.vangles)[0],(c+u)/2,s.findEnclosingVertexAngles(u,t.vangles)[1]];return s.pathPolygonAnnulus(n,i,c,u,f,e,r)};return function(t,n,i,o){return a.pathAnnulus(t,n,i,o,e,r)}}(e),p=e.layers.frontplot.select(\"g.barlayer\");a.makeTraceGroups(p,r,\"trace bars\").each((function(){var r=n.select(this),s=a.ensureSingle(r,\"g\",\"points\").selectAll(\"g.point\").data(a.identity);s.enter().append(\"g\").style(\"vector-effect\",\"non-scaling-stroke\").style(\"stroke-miterlimit\",2).classed(\"point\",!0),s.exit().remove(),s.each((function(t){var e,r=n.select(this),o=t.rp0=u.c2p(t.s0),s=t.rp1=u.c2p(t.s1),p=t.thetag0=f.c2g(t.p0),d=t.thetag1=f.c2g(t.p1);if(i(o)&&i(s)&&i(p)&&i(d)&&o!==s&&p!==d){var g=u.c2g(t.s1),m=(p+d)/2;t.ct=[l.c2p(g*Math.cos(m)),c.c2p(g*Math.sin(m))],e=h(o,s,p,d)}else e=\"M0,0Z\";a.ensureSingle(r,\"path\").attr(\"d\",e)})),o.setClipUrl(r,e._hasClipOnAxisFalse?e.clipIds.forTraces:null,t)}))}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../plots/polar/helpers\":621,\"@plotly/d3\":58,\"fast-isnumeric\":190}],673:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\"),i=t(\"../bar/attributes\"),a=t(\"../../components/color/attributes\"),o=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,s=t(\"../../plots/template_attributes\").hovertemplateAttrs,l=t(\"../../lib/extend\").extendFlat,c=n.marker,u=c.line;e.exports={y:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},x:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},x0:{valType:\"any\",editType:\"calc+clearAxisTypes\"},y0:{valType:\"any\",editType:\"calc+clearAxisTypes\"},dx:{valType:\"number\",editType:\"calc\"},dy:{valType:\"number\",editType:\"calc\"},xperiod:n.xperiod,yperiod:n.yperiod,xperiod0:n.xperiod0,yperiod0:n.yperiod0,xperiodalignment:n.xperiodalignment,yperiodalignment:n.yperiodalignment,xhoverformat:o(\"x\"),yhoverformat:o(\"y\"),name:{valType:\"string\",editType:\"calc+clearAxisTypes\"},q1:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},median:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},q3:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},lowerfence:{valType:\"data_array\",editType:\"calc\"},upperfence:{valType:\"data_array\",editType:\"calc\"},notched:{valType:\"boolean\",editType:\"calc\"},notchwidth:{valType:\"number\",min:0,max:.5,dflt:.25,editType:\"calc\"},notchspan:{valType:\"data_array\",editType:\"calc\"},boxpoints:{valType:\"enumerated\",values:[\"all\",\"outliers\",\"suspectedoutliers\",!1],editType:\"calc\"},jitter:{valType:\"number\",min:0,max:1,editType:\"calc\"},pointpos:{valType:\"number\",min:-2,max:2,editType:\"calc\"},boxmean:{valType:\"enumerated\",values:[!0,\"sd\",!1],editType:\"calc\"},mean:{valType:\"data_array\",editType:\"calc\"},sd:{valType:\"data_array\",editType:\"calc\"},orientation:{valType:\"enumerated\",values:[\"v\",\"h\"],editType:\"calc+clearAxisTypes\"},quartilemethod:{valType:\"enumerated\",values:[\"linear\",\"exclusive\",\"inclusive\"],dflt:\"linear\",editType:\"calc\"},width:{valType:\"number\",min:0,dflt:0,editType:\"calc\"},marker:{outliercolor:{valType:\"color\",dflt:\"rgba(0, 0, 0, 0)\",editType:\"style\"},symbol:l({},c.symbol,{arrayOk:!1,editType:\"plot\"}),opacity:l({},c.opacity,{arrayOk:!1,dflt:1,editType:\"style\"}),size:l({},c.size,{arrayOk:!1,editType:\"calc\"}),color:l({},c.color,{arrayOk:!1,editType:\"style\"}),line:{color:l({},u.color,{arrayOk:!1,dflt:a.defaultLine,editType:\"style\"}),width:l({},u.width,{arrayOk:!1,dflt:0,editType:\"style\"}),outliercolor:{valType:\"color\",editType:\"style\"},outlierwidth:{valType:\"number\",min:0,dflt:1,editType:\"style\"},editType:\"style\"},editType:\"plot\"},line:{color:{valType:\"color\",editType:\"style\"},width:{valType:\"number\",min:0,dflt:2,editType:\"style\"},editType:\"plot\"},fillcolor:n.fillcolor,whiskerwidth:{valType:\"number\",min:0,max:1,dflt:.5,editType:\"calc\"},offsetgroup:i.offsetgroup,alignmentgroup:i.alignmentgroup,selected:{marker:n.selected.marker,editType:\"style\"},unselected:{marker:n.unselected.marker,editType:\"style\"},text:l({},n.text,{}),hovertext:l({},n.hovertext,{}),hovertemplate:s({}),hoveron:{valType:\"flaglist\",flags:[\"boxes\",\"points\"],dflt:\"boxes+points\",editType:\"style\"}}},{\"../../components/color/attributes\":365,\"../../lib/extend\":493,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/template_attributes\":633,\"../bar/attributes\":648,\"../scatter/attributes\":926}],674:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"../../plots/cartesian/align_period\"),o=t(\"../../lib\"),s=t(\"../../constants/numerical\").BADNUM,l=o._;e.exports=function(t,e){var r,c,y,x,b,_,w,T=t._fullLayout,k=i.getFromId(t,e.xaxis||\"x\"),A=i.getFromId(t,e.yaxis||\"y\"),M=[],S=\"violin\"===e.type?\"_numViolins\":\"_numBoxes\";\"h\"===e.orientation?(y=k,x=\"x\",b=A,_=\"y\",w=!!e.yperiodalignment):(y=A,x=\"y\",b=k,_=\"x\",w=!!e.xperiodalignment);var E,L,C,P,I,O,z=function(t,e,r,i){var s,l=e+\"0\"in t,c=\"d\"+e in t;if(e in t||l&&c){var u=r.makeCalcdata(t,e);return[a(t,r,e,u).vals,u]}s=l?t[e+\"0\"]:\"name\"in t&&(\"category\"===r.type||n(t.name)&&-1!==[\"linear\",\"log\"].indexOf(r.type)||o.isDateTime(t.name)&&\"date\"===r.type)?t.name:i;for(var f=\"multicategory\"===r.type?r.r2c_just_indices(s):r.d2c(s,0,t[e+\"calendar\"]),h=t._length,p=new Array(h),d=0;dE.uf};if(e._hasPreCompStats){var U=e[x],V=function(t){return y.d2c((e[t]||[])[r])},H=1/0,q=-1/0;for(r=0;r=E.q1&&E.q3>=E.med){var Y=V(\"lowerfence\");E.lf=Y!==s&&Y<=E.q1?Y:p(E,C,P);var W=V(\"upperfence\");E.uf=W!==s&&W>=E.q3?W:d(E,C,P);var X=V(\"mean\");E.mean=X!==s?X:P?o.mean(C,P):(E.q1+E.q3)/2;var Z=V(\"sd\");E.sd=X!==s&&Z>=0?Z:P?o.stdev(C,P,E.mean):E.q3-E.q1,E.lo=g(E),E.uo=m(E);var J=V(\"notchspan\");J=J!==s&&J>0?J:v(E,P),E.ln=E.med-J,E.un=E.med+J;var K=E.lf,Q=E.uf;e.boxpoints&&C.length&&(K=Math.min(K,C[0]),Q=Math.max(Q,C[P-1])),e.notched&&(K=Math.min(K,E.ln),Q=Math.max(Q,E.un)),E.min=K,E.max=Q}else{var $;o.warn([\"Invalid input - make sure that q1 <= median <= q3\",\"q1 = \"+E.q1,\"median = \"+E.med,\"q3 = \"+E.q3].join(\"\\n\")),$=E.med!==s?E.med:E.q1!==s?E.q3!==s?(E.q1+E.q3)/2:E.q1:E.q3!==s?E.q3:0,E.med=$,E.q1=E.q3=$,E.lf=E.uf=$,E.mean=E.sd=$,E.ln=E.un=$,E.min=E.max=$}H=Math.min(H,E.min),q=Math.max(q,E.max),E.pts2=L.filter(j),M.push(E)}}e._extremes[y._id]=i.findExtremes(y,[H,q],{padded:!0})}else{var tt=y.makeCalcdata(e,x),et=function(t,e){for(var r=t.length,n=new Array(r+1),i=0;i=0&&it0){var ut,ft;if((E={}).pos=E[_]=B[r],L=E.pts=nt[r].sort(f),P=(C=E[x]=L.map(h)).length,E.min=C[0],E.max=C[P-1],E.mean=o.mean(C,P),E.sd=o.stdev(C,P,E.mean),E.med=o.interp(C,.5),P%2&&(lt||ct))lt?(ut=C.slice(0,P/2),ft=C.slice(P/2+1)):ct&&(ut=C.slice(0,P/2+1),ft=C.slice(P/2)),E.q1=o.interp(ut,.5),E.q3=o.interp(ft,.5);else E.q1=o.interp(C,.25),E.q3=o.interp(C,.75);E.lf=p(E,C,P),E.uf=d(E,C,P),E.lo=g(E),E.uo=m(E);var ht=v(E,P);E.ln=E.med-ht,E.un=E.med+ht,at=Math.min(at,E.ln),ot=Math.max(ot,E.un),E.pts2=L.filter(j),M.push(E)}e._extremes[y._id]=i.findExtremes(y,e.notched?tt.concat([at,ot]):tt,{padded:!0})}return function(t,e){if(o.isArrayOrTypedArray(e.selectedpoints))for(var r=0;r0?(M[0].t={num:T[S],dPos:N,posLetter:_,valLetter:x,labels:{med:l(t,\"median:\"),min:l(t,\"min:\"),q1:l(t,\"q1:\"),q3:l(t,\"q3:\"),max:l(t,\"max:\"),mean:\"sd\"===e.boxmean?l(t,\"mean \\xb1 \\u03c3:\"):l(t,\"mean:\"),lf:l(t,\"lower fence:\"),uf:l(t,\"upper fence:\")}},T[S]++,M):[{t:{empty:!0}}]};var c={text:\"tx\",hovertext:\"htx\"};function u(t,e,r){for(var n in c)o.isArrayOrTypedArray(e[n])&&(Array.isArray(r)?o.isArrayOrTypedArray(e[n][r[0]])&&(t[c[n]]=e[n][r[0]][r[1]]):t[c[n]]=e[n][r])}function f(t,e){return t.v-e.v}function h(t){return t.v}function p(t,e,r){return 0===r?t.q1:Math.min(t.q1,e[Math.min(o.findBin(2.5*t.q1-1.5*t.q3,e,!0)+1,r-1)])}function d(t,e,r){return 0===r?t.q3:Math.max(t.q3,e[Math.max(o.findBin(2.5*t.q3-1.5*t.q1,e),0)])}function g(t){return 4*t.q1-3*t.q3}function m(t){return 4*t.q3-3*t.q1}function v(t,e){return 0===e?0:1.57*(t.q3-t.q1)/Math.sqrt(e)}},{\"../../constants/numerical\":479,\"../../lib\":503,\"../../plots/cartesian/align_period\":551,\"../../plots/cartesian/axes\":554,\"fast-isnumeric\":190}],675:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/axes\"),i=t(\"../../lib\"),a=t(\"../../plots/cartesian/constraints\").getAxisGroup,o=[\"v\",\"h\"];function s(t,e,r,o){var s,l,c,u=e.calcdata,f=e._fullLayout,h=o._id,p=h.charAt(0),d=[],g=0;for(s=0;s1,b=1-f[t+\"gap\"],_=1-f[t+\"groupgap\"];for(s=0;s0){var q=E.pointpos,G=E.jitter,Y=E.marker.size/2,W=0;q+G>=0&&((W=V*(q+G))>M?(H=!0,j=Y,B=W):W>R&&(j=Y,B=M)),W<=M&&(B=M);var X=0;q-G<=0&&((X=-V*(q-G))>S?(H=!0,U=Y,N=X):X>F&&(U=Y,N=S)),X<=S&&(N=S)}else B=M,N=S;var Z=new Array(c.length);for(l=0;l0?(m=\"v\",v=x>0?Math.min(_,b):Math.min(b)):x>0?(m=\"h\",v=Math.min(_)):v=0;if(v){e._length=v;var S=r(\"orientation\",m);e._hasPreCompStats?\"v\"===S&&0===x?(r(\"x0\",0),r(\"dx\",1)):\"h\"===S&&0===y&&(r(\"y0\",0),r(\"dy\",1)):\"v\"===S&&0===x?r(\"x0\"):\"h\"===S&&0===y&&r(\"y0\"),i.getComponentMethod(\"calendars\",\"handleTraceDefaults\")(t,e,[\"x\",\"y\"],a)}else e.visible=!1}function f(t,e,r,i){var a=i.prefix,o=n.coerce2(t,e,c,\"marker.outliercolor\"),s=r(\"marker.line.outliercolor\"),l=\"outliers\";e._hasPreCompStats?l=\"all\":(o||s)&&(l=\"suspectedoutliers\");var u=r(a+\"points\",l);u?(r(\"jitter\",\"all\"===u?.3:0),r(\"pointpos\",\"all\"===u?-1.5:0),r(\"marker.symbol\"),r(\"marker.opacity\"),r(\"marker.size\"),r(\"marker.color\",e.line.color),r(\"marker.line.color\"),r(\"marker.line.width\"),\"suspectedoutliers\"===u&&(r(\"marker.line.outliercolor\",e.marker.color),r(\"marker.line.outlierwidth\")),r(\"selected.marker.color\"),r(\"unselected.marker.color\"),r(\"selected.marker.size\"),r(\"unselected.marker.size\"),r(\"text\"),r(\"hovertext\")):delete e.marker;var f=r(\"hoveron\");\"all\"!==f&&-1===f.indexOf(\"points\")||r(\"hovertemplate\"),n.coerceSelectionMarkerOpacity(e,r)}e.exports={supplyDefaults:function(t,e,r,i){function s(r,i){return n.coerce(t,e,c,r,i)}if(u(t,e,s,i),!1!==e.visible){o(t,e,i,s),s(\"xhoverformat\"),s(\"yhoverformat\");var l=e._hasPreCompStats;l&&(s(\"lowerfence\"),s(\"upperfence\")),s(\"line.color\",(t.marker||{}).color||r),s(\"line.width\"),s(\"fillcolor\",a.addOpacity(e.line.color,.5));var h=!1;if(l){var p=s(\"mean\"),d=s(\"sd\");p&&p.length&&(h=!0,d&&d.length&&(h=\"sd\"))}s(\"boxmean\",h),s(\"whiskerwidth\"),s(\"width\"),s(\"quartilemethod\");var g=!1;if(l){var m=s(\"notchspan\");m&&m.length&&(g=!0)}else n.validate(t.notchwidth,c.notchwidth)&&(g=!0);s(\"notched\",g)&&s(\"notchwidth\"),f(t,e,s,{prefix:\"box\"})}},crossTraceDefaults:function(t,e){var r,i;function a(t){return n.coerce(i._input,i,c,t)}for(var o=0;ot.lo&&(x.so=!0)}return a}));h.enter().append(\"path\").classed(\"point\",!0),h.exit().remove(),h.call(a.translatePoints,o,s)}function l(t,e,r,a){var o,s,l=e.val,c=e.pos,u=!!c.rangebreaks,f=a.bPos,h=a.bPosPxOffset||0,p=r.boxmean||(r.meanline||{}).visible;Array.isArray(a.bdPos)?(o=a.bdPos[0],s=a.bdPos[1]):(o=a.bdPos,s=a.bdPos);var d=t.selectAll(\"path.mean\").data(\"box\"===r.type&&r.boxmean||\"violin\"===r.type&&r.box.visible&&r.meanline.visible?i.identity:[]);d.enter().append(\"path\").attr(\"class\",\"mean\").style({fill:\"none\",\"vector-effect\":\"non-scaling-stroke\"}),d.exit().remove(),d.each((function(t){var e=c.c2l(t.pos+f,!0),i=c.l2p(e-o)+h,a=c.l2p(e+s)+h,d=u?(i+a)/2:c.l2p(e)+h,g=l.c2p(t.mean,!0),m=l.c2p(t.mean-t.sd,!0),v=l.c2p(t.mean+t.sd,!0);\"h\"===r.orientation?n.select(this).attr(\"d\",\"M\"+g+\",\"+i+\"V\"+a+(\"sd\"===p?\"m0,0L\"+m+\",\"+d+\"L\"+g+\",\"+i+\"L\"+v+\",\"+d+\"Z\":\"\")):n.select(this).attr(\"d\",\"M\"+i+\",\"+g+\"H\"+a+(\"sd\"===p?\"m0,0L\"+d+\",\"+m+\"L\"+i+\",\"+g+\"L\"+d+\",\"+v+\"Z\":\"\"))}))}e.exports={plot:function(t,e,r,a){var c=e.xaxis,u=e.yaxis;i.makeTraceGroups(a,r,\"trace boxes\").each((function(t){var e,r,i=n.select(this),a=t[0],f=a.t,h=a.trace;(f.wdPos=f.bdPos*h.whiskerwidth,!0!==h.visible||f.empty)?i.remove():(\"h\"===h.orientation?(e=u,r=c):(e=c,r=u),o(i,{pos:e,val:r},h,f),s(i,{x:c,y:u},h,f),l(i,{pos:e,val:r},h,f))}))},plotBoxAndWhiskers:o,plotPoints:s,plotBoxMean:l}},{\"../../components/drawing\":388,\"../../lib\":503,\"@plotly/d3\":58}],683:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r,n,i=t.cd,a=t.xaxis,o=t.yaxis,s=[];if(!1===e)for(r=0;r=10)return null;for(var i=1/0,a=-1/0,o=e.length,s=0;s0?Math.floor:Math.ceil,I=L>0?Math.ceil:Math.floor,O=L>0?Math.min:Math.max,z=L>0?Math.max:Math.min,D=P(S+C),R=I(E-C),F=[[f=M(S)]];for(a=D;a*L=0;i--)a[u-i]=t[f][i],o[u-i]=e[f][i];for(s.push({x:a,y:o,bicubic:l}),i=f,a=[],o=[];i>=0;i--)a[f-i]=t[i][0],o[f-i]=e[i][0];return s.push({x:a,y:o,bicubic:c}),s}},{}],697:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/axes\"),i=t(\"../../lib/extend\").extendFlat;e.exports=function(t,e,r){var a,o,s,l,c,u,f,h,p,d,g,m,v,y,x=t[\"_\"+e],b=t[e+\"axis\"],_=b._gridlines=[],w=b._minorgridlines=[],T=b._boundarylines=[],k=t[\"_\"+r],A=t[r+\"axis\"];\"array\"===b.tickmode&&(b.tickvals=x.slice());var M=t._xctrl,S=t._yctrl,E=M[0].length,L=M.length,C=t._a.length,P=t._b.length;n.prepTicks(b),\"array\"===b.tickmode&&delete b.tickvals;var I=b.smoothing?3:1;function O(n){var i,a,o,s,l,c,u,f,p,d,g,m,v=[],y=[],x={};if(\"b\"===e)for(a=t.b2j(n),o=Math.floor(Math.max(0,Math.min(P-2,a))),s=a-o,x.length=P,x.crossLength=C,x.xy=function(e){return t.evalxy([],e,a)},x.dxy=function(e,r){return t.dxydi([],e,o,r,s)},i=0;i0&&(p=t.dxydi([],i-1,o,0,s),v.push(l[0]+p[0]/3),y.push(l[1]+p[1]/3),d=t.dxydi([],i-1,o,1,s),v.push(f[0]-d[0]/3),y.push(f[1]-d[1]/3)),v.push(f[0]),y.push(f[1]),l=f;else for(i=t.a2i(n),c=Math.floor(Math.max(0,Math.min(C-2,i))),u=i-c,x.length=C,x.crossLength=P,x.xy=function(e){return t.evalxy([],i,e)},x.dxy=function(e,r){return t.dxydj([],c,e,u,r)},a=0;a0&&(g=t.dxydj([],c,a-1,u,0),v.push(l[0]+g[0]/3),y.push(l[1]+g[1]/3),m=t.dxydj([],c,a-1,u,1),v.push(f[0]-m[0]/3),y.push(f[1]-m[1]/3)),v.push(f[0]),y.push(f[1]),l=f;return x.axisLetter=e,x.axis=b,x.crossAxis=A,x.value=n,x.constvar=r,x.index=h,x.x=v,x.y=y,x.smoothing=A.smoothing,x}function z(n){var i,a,o,s,l,c=[],u=[],f={};if(f.length=x.length,f.crossLength=k.length,\"b\"===e)for(o=Math.max(0,Math.min(P-2,n)),l=Math.min(1,Math.max(0,n-o)),f.xy=function(e){return t.evalxy([],e,n)},f.dxy=function(e,r){return t.dxydi([],e,o,r,l)},i=0;ix.length-1||_.push(i(z(o),{color:b.gridcolor,width:b.gridwidth}));for(h=u;hx.length-1||g<0||g>x.length-1))for(m=x[s],v=x[g],a=0;ax[x.length-1]||w.push(i(O(d),{color:b.minorgridcolor,width:b.minorgridwidth}));b.startline&&T.push(i(z(0),{color:b.startlinecolor,width:b.startlinewidth})),b.endline&&T.push(i(z(x.length-1),{color:b.endlinecolor,width:b.endlinewidth}))}else{for(l=5e-15,u=(c=[Math.floor((x[x.length-1]-b.tick0)/b.dtick*(1+l)),Math.ceil((x[0]-b.tick0)/b.dtick/(1+l))].sort((function(t,e){return t-e})))[0],f=c[1],h=u;h<=f;h++)p=b.tick0+b.dtick*h,_.push(i(O(p),{color:b.gridcolor,width:b.gridwidth}));for(h=u-1;hx[x.length-1]||w.push(i(O(d),{color:b.minorgridcolor,width:b.minorgridwidth}));b.startline&&T.push(i(O(x[0]),{color:b.startlinecolor,width:b.startlinewidth})),b.endline&&T.push(i(O(x[x.length-1]),{color:b.endlinecolor,width:b.endlinewidth}))}}},{\"../../lib/extend\":493,\"../../plots/cartesian/axes\":554}],698:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/axes\"),i=t(\"../../lib/extend\").extendFlat;e.exports=function(t,e){var r,a,o,s=e._labels=[],l=e._gridlines;for(r=0;re.length&&(t=t.slice(0,e.length)):t=[],i=0;i90&&(p-=180,l=-l),{angle:p,flip:l,p:t.c2p(n,e,r),offsetMultplier:c}}},{}],712:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../components/drawing\"),a=t(\"./map_1d_array\"),o=t(\"./makepath\"),s=t(\"./orient_text\"),l=t(\"../../lib/svg_text_utils\"),c=t(\"../../lib\"),u=c.strRotate,f=c.strTranslate,h=t(\"../../constants/alignment\");function p(t,e,r,i,s,l){var c=\"const-\"+s+\"-lines\",u=r.selectAll(\".\"+c).data(l);u.enter().append(\"path\").classed(c,!0).style(\"vector-effect\",\"non-scaling-stroke\"),u.each((function(r){var i=r,s=i.x,l=i.y,c=a([],s,t.c2p),u=a([],l,e.c2p),f=\"M\"+o(c,u,i.smoothing);n.select(this).attr(\"d\",f).style(\"stroke-width\",i.width).style(\"stroke\",i.color).style(\"fill\",\"none\")})),u.exit().remove()}function d(t,e,r,a,o,c,h,p){var d=c.selectAll(\"text.\"+p).data(h);d.enter().append(\"text\").classed(p,!0);var g=0,m={};return d.each((function(o,c){var h;if(\"auto\"===o.axis.tickangle)h=s(a,e,r,o.xy,o.dxy);else{var p=(o.axis.tickangle+180)*Math.PI/180;h=s(a,e,r,o.xy,[Math.cos(p),Math.sin(p)])}c||(m={angle:h.angle,flip:h.flip});var d=(o.endAnchor?-1:1)*h.flip,v=n.select(this).attr({\"text-anchor\":d>0?\"start\":\"end\",\"data-notex\":1}).call(i.font,o.font).text(o.text).call(l.convertToTspans,t),y=i.bBox(this);v.attr(\"transform\",f(h.p[0],h.p[1])+u(h.angle)+f(o.axis.labelpadding*d,.3*y.height)),g=Math.max(g,y.width+o.axis.labelpadding)})),d.exit().remove(),m.maxExtent=g,m}e.exports=function(t,e,r,i){var l=e.xaxis,u=e.yaxis,f=t._fullLayout._clips;c.makeTraceGroups(i,r,\"trace\").each((function(e){var r=n.select(this),i=e[0],h=i.trace,g=h.aaxis,m=h.baxis,y=c.ensureSingle(r,\"g\",\"minorlayer\"),x=c.ensureSingle(r,\"g\",\"majorlayer\"),b=c.ensureSingle(r,\"g\",\"boundarylayer\"),_=c.ensureSingle(r,\"g\",\"labellayer\");r.style(\"opacity\",h.opacity),p(l,u,x,g,\"a\",g._gridlines),p(l,u,x,m,\"b\",m._gridlines),p(l,u,y,g,\"a\",g._minorgridlines),p(l,u,y,m,\"b\",m._minorgridlines),p(l,u,b,g,\"a-boundary\",g._boundarylines),p(l,u,b,m,\"b-boundary\",m._boundarylines);var w=d(t,l,u,h,i,_,g._labels,\"a-label\"),T=d(t,l,u,h,i,_,m._labels,\"b-label\");!function(t,e,r,n,i,a,o,l){var u,f,h,p,d=c.aggNums(Math.min,null,r.a),g=c.aggNums(Math.max,null,r.a),m=c.aggNums(Math.min,null,r.b),y=c.aggNums(Math.max,null,r.b);u=.5*(d+g),f=m,h=r.ab2xy(u,f,!0),p=r.dxyda_rough(u,f),void 0===o.angle&&c.extendFlat(o,s(r,i,a,h,r.dxydb_rough(u,f)));v(t,e,r,n,h,p,r.aaxis,i,a,o,\"a-title\"),u=d,f=.5*(m+y),h=r.ab2xy(u,f,!0),p=r.dxydb_rough(u,f),void 0===l.angle&&c.extendFlat(l,s(r,i,a,h,r.dxyda_rough(u,f)));v(t,e,r,n,h,p,r.baxis,i,a,l,\"b-title\")}(t,_,h,i,l,u,w,T),function(t,e,r,n,i){var s,l,u,f,h=r.select(\"#\"+t._clipPathId);h.size()||(h=r.append(\"clipPath\").classed(\"carpetclip\",!0));var p=c.ensureSingle(h,\"path\",\"carpetboundary\"),d=e.clipsegments,g=[];for(f=0;f90&&y<270,b=n.select(this);b.text(h.title.text).call(l.convertToTspans,t),x&&(_=(-l.lineCount(b)+m)*g*a-_),b.attr(\"transform\",f(e.p[0],e.p[1])+u(e.angle)+f(0,_)).attr(\"text-anchor\",\"middle\").call(i.font,h.title.font)})),b.exit().remove()}},{\"../../components/drawing\":388,\"../../constants/alignment\":471,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"./makepath\":709,\"./map_1d_array\":710,\"./orient_text\":711,\"@plotly/d3\":58}],713:[function(t,e,r){\"use strict\";var n=t(\"./constants\"),i=t(\"../../lib/search\").findBin,a=t(\"./compute_control_points\"),o=t(\"./create_spline_evaluator\"),s=t(\"./create_i_derivative_evaluator\"),l=t(\"./create_j_derivative_evaluator\");e.exports=function(t){var e=t._a,r=t._b,c=e.length,u=r.length,f=t.aaxis,h=t.baxis,p=e[0],d=e[c-1],g=r[0],m=r[u-1],v=e[e.length-1]-e[0],y=r[r.length-1]-r[0],x=v*n.RELATIVE_CULL_TOLERANCE,b=y*n.RELATIVE_CULL_TOLERANCE;p-=x,d+=x,g-=b,m+=b,t.isVisible=function(t,e){return t>p&&tg&&ed||em},t.setScale=function(){var e=t._x,r=t._y,n=a(t._xctrl,t._yctrl,e,r,f.smoothing,h.smoothing);t._xctrl=n[0],t._yctrl=n[1],t.evalxy=o([t._xctrl,t._yctrl],c,u,f.smoothing,h.smoothing),t.dxydi=s([t._xctrl,t._yctrl],f.smoothing,h.smoothing),t.dxydj=l([t._xctrl,t._yctrl],f.smoothing,h.smoothing)},t.i2a=function(t){var r=Math.max(0,Math.floor(t[0]),c-2),n=t[0]-r;return(1-n)*e[r]+n*e[r+1]},t.j2b=function(t){var e=Math.max(0,Math.floor(t[1]),c-2),n=t[1]-e;return(1-n)*r[e]+n*r[e+1]},t.ij2ab=function(e){return[t.i2a(e[0]),t.j2b(e[1])]},t.a2i=function(t){var r=Math.max(0,Math.min(i(t,e),c-2)),n=e[r],a=e[r+1];return Math.max(0,Math.min(c-1,r+(t-n)/(a-n)))},t.b2j=function(t){var e=Math.max(0,Math.min(i(t,r),u-2)),n=r[e],a=r[e+1];return Math.max(0,Math.min(u-1,e+(t-n)/(a-n)))},t.ab2ij=function(e){return[t.a2i(e[0]),t.b2j(e[1])]},t.i2c=function(e,r){return t.evalxy([],e,r)},t.ab2xy=function(n,i,a){if(!a&&(ne[c-1]|ir[u-1]))return[!1,!1];var o=t.a2i(n),s=t.b2j(i),l=t.evalxy([],o,s);if(a){var f,h,p,d,g=0,m=0,v=[];ne[c-1]?(f=c-2,h=1,g=(n-e[c-1])/(e[c-1]-e[c-2])):h=o-(f=Math.max(0,Math.min(c-2,Math.floor(o)))),ir[u-1]?(p=u-2,d=1,m=(i-r[u-1])/(r[u-1]-r[u-2])):d=s-(p=Math.max(0,Math.min(u-2,Math.floor(s)))),g&&(t.dxydi(v,f,p,h,d),l[0]+=v[0]*g,l[1]+=v[1]*g),m&&(t.dxydj(v,f,p,h,d),l[0]+=v[0]*m,l[1]+=v[1]*m)}return l},t.c2p=function(t,e,r){return[e.c2p(t[0]),r.c2p(t[1])]},t.p2x=function(t,e,r){return[e.p2c(t[0]),r.p2c(t[1])]},t.dadi=function(t){var r=Math.max(0,Math.min(e.length-2,t));return e[r+1]-e[r]},t.dbdj=function(t){var e=Math.max(0,Math.min(r.length-2,t));return r[e+1]-r[e]},t.dxyda=function(e,r,n,i){var a=t.dxydi(null,e,r,n,i),o=t.dadi(e,n);return[a[0]/o,a[1]/o]},t.dxydb=function(e,r,n,i){var a=t.dxydj(null,e,r,n,i),o=t.dbdj(r,i);return[a[0]/o,a[1]/o]},t.dxyda_rough=function(e,r,n){var i=v*(n||.1),a=t.ab2xy(e+i,r,!0),o=t.ab2xy(e-i,r,!0);return[.5*(a[0]-o[0])/i,.5*(a[1]-o[1])/i]},t.dxydb_rough=function(e,r,n){var i=y*(n||.1),a=t.ab2xy(e,r+i,!0),o=t.ab2xy(e,r-i,!0);return[.5*(a[0]-o[0])/i,.5*(a[1]-o[1])/i]},t.dpdx=function(t){return t._m},t.dpdy=function(t){return t._m}}},{\"../../lib/search\":523,\"./compute_control_points\":701,\"./constants\":702,\"./create_i_derivative_evaluator\":703,\"./create_j_derivative_evaluator\":704,\"./create_spline_evaluator\":705}],714:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t,e,r){var i,a,o,s=[],l=[],c=t[0].length,u=t.length;function f(e,r){var n,i=0,a=0;return e>0&&void 0!==(n=t[r][e-1])&&(a++,i+=n),e0&&void 0!==(n=t[r-1][e])&&(a++,i+=n),r0&&a0&&i1e-5);return n.log(\"Smoother converged to\",k,\"after\",A,\"iterations\"),t}},{\"../../lib\":503}],715:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").isArray1D;e.exports=function(t,e,r){var i=r(\"x\"),a=i&&i.length,o=r(\"y\"),s=o&&o.length;if(!a&&!s)return!1;if(e._cheater=!i,a&&!n(i)||s&&!n(o))e._length=null;else{var l=a?i.length:1/0;s&&(l=Math.min(l,o.length)),e.a&&e.a.length&&(l=Math.min(l,e.a.length)),e.b&&e.b.length&&(l=Math.min(l,e.b.length)),e._length=l}return!0}},{\"../../lib\":503}],716:[function(t,e,r){\"use strict\";var n=t(\"../../plots/template_attributes\").hovertemplateAttrs,i=t(\"../scattergeo/attributes\"),a=t(\"../../components/colorscale/attributes\"),o=t(\"../../plots/attributes\"),s=t(\"../../components/color/attributes\").defaultLine,l=t(\"../../lib/extend\").extendFlat,c=i.marker.line;e.exports=l({locations:{valType:\"data_array\",editType:\"calc\"},locationmode:i.locationmode,z:{valType:\"data_array\",editType:\"calc\"},geojson:l({},i.geojson,{}),featureidkey:i.featureidkey,text:l({},i.text,{}),hovertext:l({},i.hovertext,{}),marker:{line:{color:l({},c.color,{dflt:s}),width:l({},c.width,{dflt:1}),editType:\"calc\"},opacity:{valType:\"number\",arrayOk:!0,min:0,max:1,dflt:1,editType:\"style\"},editType:\"calc\"},selected:{marker:{opacity:i.selected.marker.opacity,editType:\"plot\"},editType:\"plot\"},unselected:{marker:{opacity:i.unselected.marker.opacity,editType:\"plot\"},editType:\"plot\"},hoverinfo:l({},o.hoverinfo,{editType:\"calc\",flags:[\"location\",\"z\",\"text\",\"name\"]}),hovertemplate:n(),showlegend:l({},o.showlegend,{dflt:!1})},a(\"\",{cLetter:\"z\",editTypeOverride:\"calc\"}))},{\"../../components/color/attributes\":365,\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/template_attributes\":633,\"../scattergeo/attributes\":968}],717:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../constants/numerical\").BADNUM,a=t(\"../../components/colorscale/calc\"),o=t(\"../scatter/arrays_to_calcdata\"),s=t(\"../scatter/calc_selection\");function l(t){return t&&\"string\"==typeof t}e.exports=function(t,e){var r,c=e._length,u=new Array(c);r=e.geojson?function(t){return l(t)||n(t)}:l;for(var f=0;f\")}(t,f,o),[t]}},{\"../../lib\":503,\"../../plots/cartesian/axes\":554,\"./attributes\":716}],721:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../heatmap/colorbar\"),calc:t(\"./calc\"),calcGeoJSON:t(\"./plot\").calcGeoJSON,plot:t(\"./plot\").plot,style:t(\"./style\").style,styleOnSelect:t(\"./style\").styleOnSelect,hoverPoints:t(\"./hover\"),eventData:t(\"./event_data\"),selectPoints:t(\"./select\"),moduleType:\"trace\",name:\"choropleth\",basePlotModule:t(\"../../plots/geo\"),categories:[\"geo\",\"noOpacity\",\"showLegend\"],meta:{}}},{\"../../plots/geo\":589,\"../heatmap/colorbar\":795,\"./attributes\":716,\"./calc\":717,\"./defaults\":718,\"./event_data\":719,\"./hover\":720,\"./plot\":722,\"./select\":723,\"./style\":724}],722:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../lib/geo_location_utils\"),o=t(\"../../lib/topojson_utils\").getTopojsonFeatures,s=t(\"../../plots/cartesian/autorange\").findExtremes,l=t(\"./style\").style;e.exports={calcGeoJSON:function(t,e){for(var r=t[0].trace,n=e[r.geo],i=n._subplot,l=r.locationmode,c=r._length,u=\"geojson-id\"===l?a.extractTraceFeature(t):o(r,i.topojson),f=[],h=[],p=0;p=0;n--){var i=r[n].id;if(\"string\"==typeof i&&0===i.indexOf(\"water\"))for(var a=n+1;a=0;r--)t.removeLayer(e[r][1])},s.dispose=function(){var t=this.subplot.map;this._removeLayers(),t.removeSource(this.sourceId)},e.exports=function(t,e){var r=e[0].trace,i=new o(t,r.uid),a=i.sourceId,s=n(e),l=i.below=t.belowLookup[\"trace-\"+r.uid];return t.map.addSource(a,{type:\"geojson\",data:s.geojson}),i._addLayers(s,l),e[0].trace._glTrace=i,i}},{\"../../plots/mapbox/constants\":611,\"./convert\":726}],730:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/attributes\"),i=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,a=t(\"../../plots/template_attributes\").hovertemplateAttrs,o=t(\"../mesh3d/attributes\"),s=t(\"../../plots/attributes\"),l=t(\"../../lib/extend\").extendFlat,c={x:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},y:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},z:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},u:{valType:\"data_array\",editType:\"calc\"},v:{valType:\"data_array\",editType:\"calc\"},w:{valType:\"data_array\",editType:\"calc\"},sizemode:{valType:\"enumerated\",values:[\"scaled\",\"absolute\"],editType:\"calc\",dflt:\"scaled\"},sizeref:{valType:\"number\",editType:\"calc\",min:0},anchor:{valType:\"enumerated\",editType:\"calc\",values:[\"tip\",\"tail\",\"cm\",\"center\"],dflt:\"cm\"},text:{valType:\"string\",dflt:\"\",arrayOk:!0,editType:\"calc\"},hovertext:{valType:\"string\",dflt:\"\",arrayOk:!0,editType:\"calc\"},hovertemplate:a({editType:\"calc\"},{keys:[\"norm\"]}),uhoverformat:i(\"u\",1),vhoverformat:i(\"v\",1),whoverformat:i(\"w\",1),xhoverformat:i(\"x\"),yhoverformat:i(\"y\"),zhoverformat:i(\"z\"),showlegend:l({},s.showlegend,{dflt:!1})};l(c,n(\"\",{colorAttr:\"u/v/w norm\",showScaleDflt:!0,editTypeOverride:\"calc\"}));[\"opacity\",\"lightposition\",\"lighting\"].forEach((function(t){c[t]=o[t]})),c.hoverinfo=l({},s.hoverinfo,{editType:\"calc\",flags:[\"x\",\"y\",\"z\",\"u\",\"v\",\"w\",\"norm\",\"text\",\"name\"],dflt:\"x+y+z+norm+text+name\"}),c.transforms=void 0,e.exports=c},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/template_attributes\":633,\"../mesh3d/attributes\":867}],731:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/calc\");e.exports=function(t,e){for(var r=e.u,i=e.v,a=e.w,o=Math.min(e.x.length,e.y.length,e.z.length,r.length,i.length,a.length),s=-1/0,l=1/0,c=0;co.level||o.starts.length&&a===o.level)}break;case\"constraint\":if(n.prefixBoundary=!1,n.edgepaths.length)return;var s=n.x.length,l=n.y.length,c=-1/0,u=1/0;for(r=0;r\":p>c&&(n.prefixBoundary=!0);break;case\"<\":(pc||n.starts.length&&h===u)&&(n.prefixBoundary=!0);break;case\"][\":f=Math.min(p[0],p[1]),h=Math.max(p[0],p[1]),fc&&(n.prefixBoundary=!0)}}}},{}],738:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale\"),i=t(\"./make_color_map\"),a=t(\"./end_plus\");e.exports={min:\"zmin\",max:\"zmax\",calc:function(t,e,r){var o=e.contours,s=e.line,l=o.size||1,c=o.coloring,u=i(e,{isColorbar:!0});if(\"heatmap\"===c){var f=n.extractOpts(e);r._fillgradient=f.reversescale?n.flipScale(f.colorscale):f.colorscale,r._zrange=[f.min,f.max]}else\"fill\"===c&&(r._fillcolor=u);r._line={color:\"lines\"===c?u:s.color,width:!1!==o.showlines?s.width:0,dash:s.dash},r._levels={start:o.start,end:a(o),size:l}}}},{\"../../components/colorscale\":378,\"./end_plus\":746,\"./make_color_map\":751}],739:[function(t,e,r){\"use strict\";e.exports={BOTTOMSTART:[1,9,13,104,713],TOPSTART:[4,6,7,104,713],LEFTSTART:[8,12,14,208,1114],RIGHTSTART:[2,3,11,208,1114],NEWDELTA:[null,[-1,0],[0,-1],[-1,0],[1,0],null,[0,-1],[-1,0],[0,1],[0,1],null,[0,1],[1,0],[1,0],[0,-1]],CHOOSESADDLE:{104:[4,1],208:[2,8],713:[7,13],1114:[11,14]},SADDLEREMAINDER:{1:4,2:8,4:1,7:13,8:2,11:14,13:7,14:11},LABELDISTANCE:2,LABELINCREASE:10,LABELMIN:3,LABELMAX:10,LABELOPTIMIZER:{EDGECOST:1,ANGLECOST:1,NEIGHBORCOST:5,SAMELEVELFACTOR:10,SAMELEVELDISTANCE:5,MAXCOST:100,INITIALSEARCHPOINTS:10,ITERATIONS:5}}},{}],740:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"./label_defaults\"),a=t(\"../../components/color\"),o=a.addOpacity,s=a.opacity,l=t(\"../../constants/filter_ops\"),c=l.CONSTRAINT_REDUCTION,u=l.COMPARISON_OPS2;e.exports=function(t,e,r,a,l,f){var h,p,d,g=e.contours,m=r(\"contours.operation\");(g._operation=c[m],function(t,e){var r;-1===u.indexOf(e.operation)?(t(\"contours.value\",[0,1]),Array.isArray(e.value)?e.value.length>2?e.value=e.value.slice(2):0===e.length?e.value=[0,1]:e.length<2?(r=parseFloat(e.value[0]),e.value=[r,r+1]):e.value=[parseFloat(e.value[0]),parseFloat(e.value[1])]:n(e.value)&&(r=parseFloat(e.value),e.value=[r,r+1])):(t(\"contours.value\",0),n(e.value)||(Array.isArray(e.value)?e.value=parseFloat(e.value[0]):e.value=0))}(r,g),\"=\"===m?h=g.showlines=!0:(h=r(\"contours.showlines\"),d=r(\"fillcolor\",o((t.line||{}).color||l,.5))),h)&&(p=r(\"line.color\",d&&s(d)?o(e.fillcolor,1):l),r(\"line.width\",2),r(\"line.dash\"));r(\"line.smoothing\"),i(r,a,p,f)}},{\"../../components/color\":366,\"../../constants/filter_ops\":475,\"./label_defaults\":750,\"fast-isnumeric\":190}],741:[function(t,e,r){\"use strict\";var n=t(\"../../constants/filter_ops\"),i=t(\"fast-isnumeric\");function a(t,e){var r,a=Array.isArray(e);function o(t){return i(t)?+t:null}return-1!==n.COMPARISON_OPS2.indexOf(t)?r=o(a?e[0]:e):-1!==n.INTERVAL_OPS.indexOf(t)?r=a?[o(e[0]),o(e[1])]:[o(e),o(e)]:-1!==n.SET_OPS.indexOf(t)&&(r=a?e.map(o):[o(e)]),r}function o(t){return function(e){e=a(t,e);var r=Math.min(e[0],e[1]),n=Math.max(e[0],e[1]);return{start:r,end:n,size:n-r}}}function s(t){return function(e){return{start:e=a(t,e),end:1/0,size:1/0}}}e.exports={\"[]\":o(\"[]\"),\"][\":o(\"][\"),\">\":s(\">\"),\"<\":s(\"<\"),\"=\":s(\"=\")}},{\"../../constants/filter_ops\":475,\"fast-isnumeric\":190}],742:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,n){var i=n(\"contours.start\"),a=n(\"contours.end\"),o=!1===i||!1===a,s=r(\"contours.size\");!(o?e.autocontour=!0:r(\"autocontour\",!1))&&s||r(\"ncontours\")}},{}],743:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");function i(t){return n.extendFlat({},t,{edgepaths:n.extendDeep([],t.edgepaths),paths:n.extendDeep([],t.paths),starts:n.extendDeep([],t.starts)})}e.exports=function(t,e){var r,a,o,s=function(t){return t.reverse()},l=function(t){return t};switch(e){case\"=\":case\"<\":return t;case\">\":for(1!==t.length&&n.warn(\"Contour data invalid for the specified inequality operation.\"),a=t[0],r=0;r1e3){n.warn(\"Too many contours, clipping at 1000\",t);break}return l}},{\"../../lib\":503,\"./constraint_mapping\":741,\"./end_plus\":746}],746:[function(t,e,r){\"use strict\";e.exports=function(t){return t.end+t.size/1e6}},{}],747:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./constants\");function a(t,e,r,n){return Math.abs(t[0]-e[0])20&&e?208===t||1114===t?n=0===r[0]?1:-1:a=0===r[1]?1:-1:-1!==i.BOTTOMSTART.indexOf(t)?a=1:-1!==i.LEFTSTART.indexOf(t)?n=1:-1!==i.TOPSTART.indexOf(t)?a=-1:n=-1;return[n,a]}(f,r,e),p=[s(t,e,[-h[0],-h[1]])],d=t.z.length,g=t.z[0].length,m=e.slice(),v=h.slice();for(c=0;c<1e4;c++){if(f>20?(f=i.CHOOSESADDLE[f][(h[0]||h[1])<0?0:1],t.crossings[u]=i.SADDLEREMAINDER[f]):delete t.crossings[u],!(h=i.NEWDELTA[f])){n.log(\"Found bad marching index:\",f,e,t.level);break}p.push(s(t,e,h)),e[0]+=h[0],e[1]+=h[1],u=e.join(\",\"),a(p[p.length-1],p[p.length-2],o,l)&&p.pop();var y=h[0]&&(e[0]<0||e[0]>g-2)||h[1]&&(e[1]<0||e[1]>d-2);if(e[0]===m[0]&&e[1]===m[1]&&h[0]===v[0]&&h[1]===v[1]||r&&y)break;f=t.crossings[u]}1e4===c&&n.log(\"Infinite loop in contour?\");var x,b,_,w,T,k,A,M,S,E,L,C,P,I,O,z=a(p[0],p[p.length-1],o,l),D=0,R=.2*t.smoothing,F=[],B=0;for(c=1;c=B;c--)if((x=F[c])=B&&x+F[b]M&&S--,t.edgepaths[S]=L.concat(p,E));break}V||(t.edgepaths[M]=p.concat(E))}for(M=0;Mt?0:1)+(e[0][1]>t?0:2)+(e[1][1]>t?0:4)+(e[1][0]>t?0:8);return 5===r||10===r?t>(e[0][0]+e[0][1]+e[1][0]+e[1][1])/4?5===r?713:1114:5===r?104:208:15===r?0:r}e.exports=function(t){var e,r,a,o,s,l,c,u,f,h=t[0].z,p=h.length,d=h[0].length,g=2===p||2===d;for(r=0;r=0&&(n=y,s=l):Math.abs(r[1]-n[1])<.01?Math.abs(r[1]-y[1])<.01&&(y[0]-r[0])*(n[0]-y[0])>=0&&(n=y,s=l):i.log(\"endpt to newendpt is not vert. or horz.\",r,n,y)}if(r=n,s>=0)break;f+=\"L\"+n}if(s===t.edgepaths.length){i.log(\"unclosed perimeter path\");break}h=s,(d=-1===p.indexOf(h))&&(h=p[0],f+=\"Z\")}for(h=0;hn.center?n.right-s:s-n.left)/(u+Math.abs(Math.sin(c)*o)),p=(l>n.middle?n.bottom-l:l-n.top)/(Math.abs(f)+Math.cos(c)*o);if(h<1||p<1)return 1/0;var d=v.EDGECOST*(1/(h-1)+1/(p-1));d+=v.ANGLECOST*c*c;for(var g=s-u,m=l-f,y=s+u,x=l+f,b=0;b2*v.MAXCOST)break;p&&(s/=2),l=(o=c-s/2)+1.5*s}if(h<=v.MAXCOST)return u},r.addLabelData=function(t,e,r,n){var i=e.fontSize,a=e.width+i/3,o=Math.max(0,e.height-i/3),s=t.x,l=t.y,c=t.theta,u=Math.sin(c),f=Math.cos(c),h=function(t,e){return[s+t*f-e*u,l+t*u+e*f]},p=[h(-a/2,-o/2),h(-a/2,o/2),h(a/2,o/2),h(a/2,-o/2)];r.push({text:e.text,x:s,y:l,dy:e.dy,theta:c,level:e.level,width:a,height:o}),n.push(p)},r.drawLabels=function(t,e,r,a,o){var l=t.selectAll(\"text\").data(e,(function(t){return t.text+\",\"+t.x+\",\"+t.y+\",\"+t.theta}));if(l.exit().remove(),l.enter().append(\"text\").attr({\"data-notex\":1,\"text-anchor\":\"middle\"}).each((function(t){var e=t.x+Math.sin(t.theta)*t.dy,i=t.y-Math.cos(t.theta)*t.dy;n.select(this).text(t.text).attr({x:e,y:i,transform:\"rotate(\"+180*t.theta/Math.PI+\" \"+e+\" \"+i+\")\"}).call(s.convertToTspans,r)})),o){for(var c=\"\",u=0;ur.end&&(r.start=r.end=(r.start+r.end)/2),t._input.contours||(t._input.contours={}),i.extendFlat(t._input.contours,{start:r.start,end:r.end,size:r.size}),t._input.autocontour=!0}else if(\"constraint\"!==r.type){var c,u=r.start,f=r.end,h=t._input.contours;if(u>f&&(r.start=h.start=f,f=r.end=h.end=u,u=r.start),!(r.size>0))c=u===f?1:a(u,f,t.ncontours).dtick,h.size=r.size=c}}},{\"../../lib\":503,\"../../plots/cartesian/axes\":554}],755:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../components/drawing\"),a=t(\"../heatmap/style\"),o=t(\"./make_color_map\");e.exports=function(t){var e=n.select(t).selectAll(\"g.contour\");e.style(\"opacity\",(function(t){return t[0].trace.opacity})),e.each((function(t){var e=n.select(this),r=t[0].trace,a=r.contours,s=r.line,l=a.size||1,c=a.start,u=\"constraint\"===a.type,f=!u&&\"lines\"===a.coloring,h=!u&&\"fill\"===a.coloring,p=f||h?o(r):null;e.selectAll(\"g.contourlevel\").each((function(t){n.select(this).selectAll(\"path\").call(i.lineGroupStyle,s.width,f?p(t.level):s.color,s.dash)}));var d=a.labelfont;if(e.selectAll(\"g.contourlabels text\").each((function(t){i.font(n.select(this),{family:d.family,size:d.size,color:d.color||(f?p(t.level):s.color)})})),u)e.selectAll(\"g.contourfill path\").style(\"fill\",r.fillcolor);else if(h){var g;e.selectAll(\"g.contourfill path\").style(\"fill\",(function(t){return void 0===g&&(g=t.level),p(t.level+.5*l)})),void 0===g&&(g=c),e.selectAll(\"g.contourbg path\").style(\"fill\",p(g-.5*l))}})),a(t)}},{\"../../components/drawing\":388,\"../heatmap/style\":805,\"./make_color_map\":751,\"@plotly/d3\":58}],756:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/defaults\"),i=t(\"./label_defaults\");e.exports=function(t,e,r,a,o){var s,l=r(\"contours.coloring\"),c=\"\";\"fill\"===l&&(s=r(\"contours.showlines\")),!1!==s&&(\"lines\"!==l&&(c=r(\"line.color\",\"#000\")),r(\"line.width\",.5),r(\"line.dash\")),\"none\"!==l&&(!0!==t.showlegend&&(e.showlegend=!1),e._dfltShowLegend=!1,n(t,e,a,r,{prefix:\"\",cLetter:\"z\"})),r(\"line.smoothing\"),i(r,a,c,o)}},{\"../../components/colorscale/defaults\":376,\"./label_defaults\":750}],757:[function(t,e,r){\"use strict\";var n=t(\"../heatmap/attributes\"),i=t(\"../contour/attributes\"),a=t(\"../../components/colorscale/attributes\"),o=t(\"../../lib/extend\").extendFlat,s=i.contours;e.exports=o({carpet:{valType:\"string\",editType:\"calc\"},z:n.z,a:n.x,a0:n.x0,da:n.dx,b:n.y,b0:n.y0,db:n.dy,text:n.text,hovertext:n.hovertext,transpose:n.transpose,atype:n.xtype,btype:n.ytype,fillcolor:i.fillcolor,autocontour:i.autocontour,ncontours:i.ncontours,contours:{type:s.type,start:s.start,end:s.end,size:s.size,coloring:{valType:\"enumerated\",values:[\"fill\",\"lines\",\"none\"],dflt:\"fill\",editType:\"calc\"},showlines:s.showlines,showlabels:s.showlabels,labelfont:s.labelfont,labelformat:s.labelformat,operation:s.operation,value:s.value,editType:\"calc\",impliedEdits:{autocontour:!1}},line:{color:i.line.color,width:i.line.width,dash:i.line.dash,smoothing:i.line.smoothing,editType:\"plot\"},transforms:void 0},a(\"\",{cLetter:\"z\",autoColorDflt:!1}))},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../contour/attributes\":735,\"../heatmap/attributes\":792}],758:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/calc\"),i=t(\"../../lib\"),a=t(\"../heatmap/convert_column_xyz\"),o=t(\"../heatmap/clean_2d_array\"),s=t(\"../heatmap/interp2d\"),l=t(\"../heatmap/find_empties\"),c=t(\"../heatmap/make_bound_array\"),u=t(\"./defaults\"),f=t(\"../carpet/lookup_carpetid\"),h=t(\"../contour/set_contours\");e.exports=function(t,e){var r=e._carpetTrace=f(t,e);if(r&&r.visible&&\"legendonly\"!==r.visible){if(!e.a||!e.b){var p=t.data[r.index],d=t.data[e.index];d.a||(d.a=p.a),d.b||(d.b=p.b),u(d,e,e._defaultColor,t._fullLayout)}var g=function(t,e){var r,u,f,h,p,d,g,m=e._carpetTrace,v=m.aaxis,y=m.baxis;v._minDtick=0,y._minDtick=0,i.isArray1D(e.z)&&a(e,v,y,\"a\",\"b\",[\"z\"]);r=e._a=e._a||e.a,h=e._b=e._b||e.b,r=r?v.makeCalcdata(e,\"_a\"):[],h=h?y.makeCalcdata(e,\"_b\"):[],u=e.a0||0,f=e.da||1,p=e.b0||0,d=e.db||1,g=e._z=o(e._z||e.z,e.transpose),e._emptypoints=l(g),s(g,e._emptypoints);var x=i.maxRowLength(g),b=\"scaled\"===e.xtype?\"\":r,_=c(e,b,u,f,x,v),w=\"scaled\"===e.ytype?\"\":h,T=c(e,w,p,d,g.length,y),k={a:_,b:T,z:g};\"levels\"===e.contours.type&&\"none\"!==e.contours.coloring&&n(t,e,{vals:g,containerStr:\"\",cLetter:\"z\"});return[k]}(t,e);return h(e,e._z),g}}},{\"../../components/colorscale/calc\":374,\"../../lib\":503,\"../carpet/lookup_carpetid\":708,\"../contour/set_contours\":754,\"../heatmap/clean_2d_array\":794,\"../heatmap/convert_column_xyz\":796,\"../heatmap/find_empties\":798,\"../heatmap/interp2d\":801,\"../heatmap/make_bound_array\":803,\"./defaults\":759}],759:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../heatmap/xyz_defaults\"),a=t(\"./attributes\"),o=t(\"../contour/constraint_defaults\"),s=t(\"../contour/contours_defaults\"),l=t(\"../contour/style_defaults\");e.exports=function(t,e,r,c){function u(r,i){return n.coerce(t,e,a,r,i)}if(u(\"carpet\"),t.a&&t.b){if(!i(t,e,u,c,\"a\",\"b\"))return void(e.visible=!1);u(\"text\"),\"constraint\"===u(\"contours.type\")?o(t,e,u,c,r,{hasHover:!1}):(s(t,e,u,(function(r){return n.coerce2(t,e,a,r)})),l(t,e,u,c,{hasHover:!1}))}else e._defaultColor=r,e._length=null}},{\"../../lib\":503,\"../contour/constraint_defaults\":740,\"../contour/contours_defaults\":742,\"../contour/style_defaults\":756,\"../heatmap/xyz_defaults\":807,\"./attributes\":757}],760:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../contour/colorbar\"),calc:t(\"./calc\"),plot:t(\"./plot\"),style:t(\"../contour/style\"),moduleType:\"trace\",name:\"contourcarpet\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"cartesian\",\"svg\",\"carpet\",\"contour\",\"symbols\",\"showLegend\",\"hasLines\",\"carpetDependent\",\"noHover\",\"noSortingByValue\"],meta:{}}},{\"../../plots/cartesian\":568,\"../contour/colorbar\":738,\"../contour/style\":755,\"./attributes\":757,\"./calc\":758,\"./defaults\":759,\"./plot\":761}],761:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../carpet/map_1d_array\"),a=t(\"../carpet/makepath\"),o=t(\"../../components/drawing\"),s=t(\"../../lib\"),l=t(\"../contour/make_crossings\"),c=t(\"../contour/find_all_paths\"),u=t(\"../contour/plot\"),f=t(\"../contour/constants\"),h=t(\"../contour/convert_to_constraints\"),p=t(\"../contour/empty_pathinfo\"),d=t(\"../contour/close_boundaries\"),g=t(\"../carpet/lookup_carpetid\"),m=t(\"../carpet/axis_aligned_line\");function v(t,e,r){var n=t.getPointAtLength(e),i=t.getPointAtLength(r),a=i.x-n.x,o=i.y-n.y,s=Math.sqrt(a*a+o*o);return[a/s,o/s]}function y(t){var e=Math.sqrt(t[0]*t[0]+t[1]*t[1]);return[t[0]/e,t[1]/e]}function x(t,e){var r=Math.abs(t[0]*e[0]+t[1]*e[1]);return Math.sqrt(1-r*r)/r}e.exports=function(t,e,r,b){var _=e.xaxis,w=e.yaxis;s.makeTraceGroups(b,r,\"contour\").each((function(r){var b=n.select(this),T=r[0],k=T.trace,A=k._carpetTrace=g(t,k),M=t.calcdata[A.index][0];if(A.visible&&\"legendonly\"!==A.visible){var S=T.a,E=T.b,L=k.contours,C=p(L,e,T),P=\"constraint\"===L.type,I=L._operation,O=P?\"=\"===I?\"lines\":\"fill\":L.coloring,z=[[S[0],E[E.length-1]],[S[S.length-1],E[E.length-1]],[S[S.length-1],E[0]],[S[0],E[0]]];l(C);var D=1e-8*(S[S.length-1]-S[0]),R=1e-8*(E[E.length-1]-E[0]);c(C,D,R);var F,B,N,j,U=C;\"constraint\"===L.type&&(U=h(C,I)),function(t,e){var r,n,i,a,o,s,l,c,u;for(r=0;r=0;j--)F=M.clipsegments[j],B=i([],F.x,_.c2p),N=i([],F.y,w.c2p),B.reverse(),N.reverse(),V.push(a(B,N,F.bicubic));var H=\"M\"+V.join(\"L\")+\"Z\";!function(t,e,r,n,o,l){var c,u,f,h,p=s.ensureSingle(t,\"g\",\"contourbg\").selectAll(\"path\").data(\"fill\"!==l||o?[]:[0]);p.enter().append(\"path\"),p.exit().remove();var d=[];for(h=0;h=0&&(h=L,d=g):Math.abs(f[1]-h[1])=0&&(h=L,d=g):s.log(\"endpt to newendpt is not vert. or horz.\",f,h,L)}if(d>=0)break;y+=S(f,h),f=h}if(d===e.edgepaths.length){s.log(\"unclosed perimeter path\");break}u=d,(b=-1===x.indexOf(u))&&(u=x[0],y+=S(f,h)+\"Z\",f=null)}for(u=0;um&&(n.max=m);n.len=n.max-n.min}(this,r,t,n,c,e.height),!(n.len<(e.width+e.height)*f.LABELMIN)))for(var i=Math.min(Math.ceil(n.len/I),f.LABELMAX),a=0;a0?+p[u]:0),f.push({type:\"Feature\",geometry:{type:\"Point\",coordinates:v},properties:y})}}var b=o.extractOpts(e),_=b.reversescale?o.flipScale(b.colorscale):b.colorscale,w=_[0][1],T=[\"interpolate\",[\"linear\"],[\"heatmap-density\"],0,a.opacity(w)<1?w:a.addOpacity(w,0)];for(u=1;u<_.length;u++)T.push(_[u][0],_[u][1]);var k=[\"interpolate\",[\"linear\"],[\"get\",\"z\"],b.min,0,b.max,1];return i.extendFlat(c.heatmap.paint,{\"heatmap-weight\":d?k:1/(b.max-b.min),\"heatmap-color\":T,\"heatmap-radius\":g?{type:\"identity\",property:\"r\"}:e.radius,\"heatmap-opacity\":e.opacity}),c.geojson={type:\"FeatureCollection\",features:f},c.heatmap.layout.visibility=\"visible\",c}},{\"../../components/color\":366,\"../../components/colorscale\":378,\"../../constants/numerical\":479,\"../../lib\":503,\"../../lib/geojson_utils\":497,\"fast-isnumeric\":190}],765:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../components/colorscale/defaults\"),a=t(\"./attributes\");e.exports=function(t,e,r,o){function s(r,i){return n.coerce(t,e,a,r,i)}var l=s(\"lon\")||[],c=s(\"lat\")||[],u=Math.min(l.length,c.length);u?(e._length=u,s(\"z\"),s(\"radius\"),s(\"below\"),s(\"text\"),s(\"hovertext\"),s(\"hovertemplate\"),i(t,e,o,s,{prefix:\"\",cLetter:\"z\"})):e.visible=!1}},{\"../../components/colorscale/defaults\":376,\"../../lib\":503,\"./attributes\":762}],766:[function(t,e,r){\"use strict\";e.exports=function(t,e){return t.lon=e.lon,t.lat=e.lat,t.z=e.z,t}},{}],767:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/axes\"),i=t(\"../scattermapbox/hover\").hoverPoints,a=t(\"../scattermapbox/hover\").getExtraText;e.exports=function(t,e,r){var o=i(t,e,r);if(o){var s=o[0],l=s.cd,c=l[0].trace,u=l[s.index];if(delete s.color,\"z\"in u){var f=s.subplot.mockAxis;s.z=u.z,s.zLabel=n.tickText(f,f.c2l(u.z),\"hover\").text}return s.extraText=a(c,u,l[0].t.labels),[s]}}},{\"../../plots/cartesian/axes\":554,\"../scattermapbox/hover\":996}],768:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../heatmap/colorbar\"),formatLabels:t(\"../scattermapbox/format_labels\"),calc:t(\"./calc\"),plot:t(\"./plot\"),hoverPoints:t(\"./hover\"),eventData:t(\"./event_data\"),getBelow:function(t,e){for(var r=e.getMapLayers(),n=0;n=0;r--)t.removeLayer(e[r][1])},o.dispose=function(){var t=this.subplot.map;this._removeLayers(),t.removeSource(this.sourceId)},e.exports=function(t,e){var r=e[0].trace,i=new a(t,r.uid),o=i.sourceId,s=n(e),l=i.below=t.belowLookup[\"trace-\"+r.uid];return t.map.addSource(o,{type:\"geojson\",data:s.geojson}),i._addLayers(s,l),i}},{\"../../plots/mapbox/constants\":611,\"./convert\":764}],770:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t,e){for(var r=0;r\"),l.color=function(t,e){var r=t.marker,i=e.mc||r.color,a=e.mlc||r.line.color,o=e.mlw||r.line.width;if(n(i))return i;if(n(a)&&o)return a}(u,h),[l]}}},{\"../../components/color\":366,\"../../lib\":503,\"../bar/hover\":655}],778:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\").supplyDefaults,crossTraceDefaults:t(\"./defaults\").crossTraceDefaults,supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\"),crossTraceCalc:t(\"./cross_trace_calc\"),plot:t(\"./plot\"),style:t(\"./style\").style,hoverPoints:t(\"./hover\"),eventData:t(\"./event_data\"),selectPoints:t(\"../bar/select\"),moduleType:\"trace\",name:\"funnel\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"bar-like\",\"cartesian\",\"svg\",\"oriented\",\"showLegend\",\"zoomScale\"],meta:{}}},{\"../../plots/cartesian\":568,\"../bar/select\":660,\"./attributes\":771,\"./calc\":772,\"./cross_trace_calc\":774,\"./defaults\":775,\"./event_data\":776,\"./hover\":777,\"./layout_attributes\":779,\"./layout_defaults\":780,\"./plot\":781,\"./style\":782}],779:[function(t,e,r){\"use strict\";e.exports={funnelmode:{valType:\"enumerated\",values:[\"stack\",\"group\",\"overlay\"],dflt:\"stack\",editType:\"calc\"},funnelgap:{valType:\"number\",min:0,max:1,editType:\"calc\"},funnelgroupgap:{valType:\"number\",min:0,max:1,dflt:0,editType:\"calc\"}}},{}],780:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e,r){var a=!1;function o(r,a){return n.coerce(t,e,i,r,a)}for(var s=0;s path\").each((function(t){if(!t.isBlank){var e=s.marker;n.select(this).call(a.fill,t.mc||e.color).call(a.stroke,t.mlc||e.line.color).call(i.dashLine,e.line.dash,t.mlw||e.line.width).style(\"opacity\",s.selectedpoints&&!t.selected?o:1)}})),c(r,s,t),r.selectAll(\".regions\").each((function(){n.select(this).selectAll(\"path\").style(\"stroke-width\",0).call(a.fill,s.connector.fillcolor)})),r.selectAll(\".lines\").each((function(){var t=s.connector.line;i.lineGroupStyle(n.select(this).selectAll(\"path\"),t.width,t.color,t.dash)}))}))}}},{\"../../components/color\":366,\"../../components/drawing\":388,\"../../constants/interactions\":478,\"../bar/style\":662,\"../bar/uniform_text\":664,\"@plotly/d3\":58}],783:[function(t,e,r){\"use strict\";var n=t(\"../pie/attributes\"),i=t(\"../../plots/attributes\"),a=t(\"../../plots/domain\").attributes,o=t(\"../../plots/template_attributes\").hovertemplateAttrs,s=t(\"../../plots/template_attributes\").texttemplateAttrs,l=t(\"../../lib/extend\").extendFlat;e.exports={labels:n.labels,label0:n.label0,dlabel:n.dlabel,values:n.values,marker:{colors:n.marker.colors,line:{color:l({},n.marker.line.color,{dflt:null}),width:l({},n.marker.line.width,{dflt:1}),editType:\"calc\"},editType:\"calc\"},text:n.text,hovertext:n.hovertext,scalegroup:l({},n.scalegroup,{}),textinfo:l({},n.textinfo,{flags:[\"label\",\"text\",\"value\",\"percent\"]}),texttemplate:s({editType:\"plot\"},{keys:[\"label\",\"color\",\"value\",\"text\",\"percent\"]}),hoverinfo:l({},i.hoverinfo,{flags:[\"label\",\"text\",\"value\",\"percent\",\"name\"]}),hovertemplate:o({},{keys:[\"label\",\"color\",\"value\",\"text\",\"percent\"]}),textposition:l({},n.textposition,{values:[\"inside\",\"none\"],dflt:\"inside\"}),textfont:n.textfont,insidetextfont:n.insidetextfont,title:{text:n.title.text,font:n.title.font,position:l({},n.title.position,{values:[\"top left\",\"top center\",\"top right\"],dflt:\"top center\"}),editType:\"plot\"},domain:a({name:\"funnelarea\",trace:!0,editType:\"calc\"}),aspectratio:{valType:\"number\",min:0,dflt:1,editType:\"plot\"},baseratio:{valType:\"number\",min:0,max:1,dflt:.333,editType:\"plot\"}}},{\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/domain\":584,\"../../plots/template_attributes\":633,\"../pie/attributes\":900}],784:[function(t,e,r){\"use strict\";var n=t(\"../../plots/plots\");r.name=\"funnelarea\",r.plot=function(t,e,i,a){n.plotBasePlot(r.name,t,e,i,a)},r.clean=function(t,e,i,a){n.cleanBasePlot(r.name,t,e,i,a)}},{\"../../plots/plots\":619}],785:[function(t,e,r){\"use strict\";var n=t(\"../pie/calc\");e.exports={calc:function(t,e){return n.calc(t,e)},crossTraceCalc:function(t){n.crossTraceCalc(t,{type:\"funnelarea\"})}}},{\"../pie/calc\":902}],786:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./attributes\"),a=t(\"../../plots/domain\").defaults,o=t(\"../bar/defaults\").handleText,s=t(\"../pie/defaults\").handleLabelsAndValues;e.exports=function(t,e,r,l){function c(r,a){return n.coerce(t,e,i,r,a)}var u=c(\"labels\"),f=c(\"values\"),h=s(u,f),p=h.len;if(e._hasLabels=h.hasLabels,e._hasValues=h.hasValues,!e._hasLabels&&e._hasValues&&(c(\"label0\"),c(\"dlabel\")),p){e._length=p,c(\"marker.line.width\")&&c(\"marker.line.color\",l.paper_bgcolor),c(\"marker.colors\"),c(\"scalegroup\");var d,g=c(\"text\"),m=c(\"texttemplate\");if(m||(d=c(\"textinfo\",Array.isArray(g)?\"text+percent\":\"percent\")),c(\"hovertext\"),c(\"hovertemplate\"),m||d&&\"none\"!==d){var v=c(\"textposition\");o(t,e,l,c,v,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1})}a(e,l,c),c(\"title.text\")&&(c(\"title.position\"),n.coerceFont(c,\"title.font\",l.font)),c(\"aspectratio\"),c(\"baseratio\")}else e.visible=!1}},{\"../../lib\":503,\"../../plots/domain\":584,\"../bar/defaults\":652,\"../pie/defaults\":903,\"./attributes\":783}],787:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"funnelarea\",basePlotModule:t(\"./base_plot\"),categories:[\"pie-like\",\"funnelarea\",\"showLegend\"],attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\"),supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\").calc,crossTraceCalc:t(\"./calc\").crossTraceCalc,plot:t(\"./plot\"),style:t(\"./style\"),styleOne:t(\"../pie/style_one\"),meta:{}}},{\"../pie/style_one\":911,\"./attributes\":783,\"./base_plot\":784,\"./calc\":785,\"./defaults\":786,\"./layout_attributes\":788,\"./layout_defaults\":789,\"./plot\":790,\"./style\":791}],788:[function(t,e,r){\"use strict\";var n=t(\"../pie/layout_attributes\").hiddenlabels;e.exports={hiddenlabels:n,funnelareacolorway:{valType:\"colorlist\",editType:\"calc\"},extendfunnelareacolors:{valType:\"boolean\",dflt:!0,editType:\"calc\"}}},{\"../pie/layout_attributes\":907}],789:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e){function r(r,a){return n.coerce(t,e,i,r,a)}r(\"hiddenlabels\"),r(\"funnelareacolorway\",e.colorway),r(\"extendfunnelareacolors\")}},{\"../../lib\":503,\"./layout_attributes\":788}],790:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../components/drawing\"),a=t(\"../../lib\"),o=a.strScale,s=a.strTranslate,l=t(\"../../lib/svg_text_utils\"),c=t(\"../bar/plot\").toMoveInsideBar,u=t(\"../bar/uniform_text\"),f=u.recordMinTextSize,h=u.clearMinTextSize,p=t(\"../pie/helpers\"),d=t(\"../pie/plot\"),g=d.attachFxHandlers,m=d.determineInsideTextFont,v=d.layoutAreas,y=d.prerenderTitles,x=d.positionTitleOutside,b=d.formatSliceLabel;function _(t,e){return\"l\"+(e[0]-t[0])+\",\"+(e[1]-t[1])}e.exports=function(t,e){var r=t._fullLayout;h(\"funnelarea\",r),y(e,t),v(e,r._size),a.makeTraceGroups(r._funnelarealayer,e,\"trace\").each((function(e){var u=n.select(this),h=e[0],d=h.trace;!function(t){if(!t.length)return;var e=t[0],r=e.trace,n=r.aspectratio,i=r.baseratio;i>.999&&(i=.999);var a,o=Math.pow(i,2),s=e.vTotal,l=s,c=s*o/(1-o)/s;function u(){var t,e={x:t=Math.sqrt(c),y:-t};return[e.x,e.y]}var f,h,p=[];for(p.push(u()),f=t.length-1;f>-1;f--)if(!(h=t[f]).hidden){var d=h.v/l;c+=d,p.push(u())}var g=1/0,m=-1/0;for(f=0;f-1;f--)if(!(h=t[f]).hidden){var A=p[k+=1][0],M=p[k][1];h.TL=[-A,M],h.TR=[A,M],h.BL=w,h.BR=T,h.pxmid=(S=h.TR,E=h.BR,[.5*(S[0]+E[0]),.5*(S[1]+E[1])]),w=h.TL,T=h.TR}var S,E}(e),u.each((function(){var u=n.select(this).selectAll(\"g.slice\").data(e);u.enter().append(\"g\").classed(\"slice\",!0),u.exit().remove(),u.each((function(o,s){if(o.hidden)n.select(this).selectAll(\"path,g\").remove();else{o.pointNumber=o.i,o.curveNumber=d.index;var u=h.cx,v=h.cy,y=n.select(this),x=y.selectAll(\"path.surface\").data([o]);x.enter().append(\"path\").classed(\"surface\",!0).style({\"pointer-events\":\"all\"}),y.call(g,t,e);var w=\"M\"+(u+o.TR[0])+\",\"+(v+o.TR[1])+_(o.TR,o.BR)+_(o.BR,o.BL)+_(o.BL,o.TL)+\"Z\";x.attr(\"d\",w),b(t,o,h);var T=p.castOption(d.textposition,o.pts),k=y.selectAll(\"g.slicetext\").data(o.text&&\"none\"!==T?[0]:[]);k.enter().append(\"g\").classed(\"slicetext\",!0),k.exit().remove(),k.each((function(){var h=a.ensureSingle(n.select(this),\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),p=a.ensureUniformFontSize(t,m(d,o,r.font));h.text(o.text).attr({class:\"slicetext\",transform:\"\",\"text-anchor\":\"middle\"}).call(i.font,p).call(l.convertToTspans,t);var g,y,x,b=i.bBox(h.node()),_=Math.min(o.BL[1],o.BR[1])+v,w=Math.max(o.TL[1],o.TR[1])+v;y=Math.max(o.TL[0],o.BL[0])+u,x=Math.min(o.TR[0],o.BR[0])+u,(g=c(y,x,_,w,b,{isHorizontal:!0,constrained:!0,angle:0,anchor:\"middle\"})).fontSize=p.size,f(d.type,g,r),e[s].transform=g,h.attr(\"transform\",a.getTextTransform(g))}))}}));var v=n.select(this).selectAll(\"g.titletext\").data(d.title.text?[0]:[]);v.enter().append(\"g\").classed(\"titletext\",!0),v.exit().remove(),v.each((function(){var e=a.ensureSingle(n.select(this),\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),c=d.title.text;d._meta&&(c=a.templateString(c,d._meta)),e.text(c).attr({class:\"titletext\",transform:\"\",\"text-anchor\":\"middle\"}).call(i.font,d.title.font).call(l.convertToTspans,t);var u=x(h,r._size);e.attr(\"transform\",s(u.x,u.y)+o(Math.min(1,u.scale))+s(u.tx,u.ty))}))}))}))}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../bar/plot\":659,\"../bar/uniform_text\":664,\"../pie/helpers\":905,\"../pie/plot\":909,\"@plotly/d3\":58}],791:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../pie/style_one\"),a=t(\"../bar/uniform_text\").resizeText;e.exports=function(t){var e=t._fullLayout._funnelarealayer.selectAll(\".trace\");a(t,e,\"funnelarea\"),e.each((function(t){var e=t[0].trace,r=n.select(this);r.style({opacity:e.opacity}),r.selectAll(\"path.surface\").each((function(t){n.select(this).call(i,t,e)}))}))}},{\"../bar/uniform_text\":664,\"../pie/style_one\":911,\"@plotly/d3\":58}],792:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\"),i=t(\"../../plots/attributes\"),a=t(\"../../plots/font_attributes\"),o=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,s=t(\"../../plots/template_attributes\").hovertemplateAttrs,l=t(\"../../plots/template_attributes\").texttemplateAttrs,c=t(\"../../components/colorscale/attributes\"),u=t(\"../../lib/extend\").extendFlat;e.exports=u({z:{valType:\"data_array\",editType:\"calc\"},x:u({},n.x,{impliedEdits:{xtype:\"array\"}}),x0:u({},n.x0,{impliedEdits:{xtype:\"scaled\"}}),dx:u({},n.dx,{impliedEdits:{xtype:\"scaled\"}}),y:u({},n.y,{impliedEdits:{ytype:\"array\"}}),y0:u({},n.y0,{impliedEdits:{ytype:\"scaled\"}}),dy:u({},n.dy,{impliedEdits:{ytype:\"scaled\"}}),xperiod:u({},n.xperiod,{impliedEdits:{xtype:\"scaled\"}}),yperiod:u({},n.yperiod,{impliedEdits:{ytype:\"scaled\"}}),xperiod0:u({},n.xperiod0,{impliedEdits:{xtype:\"scaled\"}}),yperiod0:u({},n.yperiod0,{impliedEdits:{ytype:\"scaled\"}}),xperiodalignment:u({},n.xperiodalignment,{impliedEdits:{xtype:\"scaled\"}}),yperiodalignment:u({},n.yperiodalignment,{impliedEdits:{ytype:\"scaled\"}}),text:{valType:\"data_array\",editType:\"calc\"},hovertext:{valType:\"data_array\",editType:\"calc\"},transpose:{valType:\"boolean\",dflt:!1,editType:\"calc\"},xtype:{valType:\"enumerated\",values:[\"array\",\"scaled\"],editType:\"calc+clearAxisTypes\"},ytype:{valType:\"enumerated\",values:[\"array\",\"scaled\"],editType:\"calc+clearAxisTypes\"},zsmooth:{valType:\"enumerated\",values:[\"fast\",\"best\",!1],dflt:!1,editType:\"calc\"},hoverongaps:{valType:\"boolean\",dflt:!0,editType:\"none\"},connectgaps:{valType:\"boolean\",editType:\"calc\"},xgap:{valType:\"number\",dflt:0,min:0,editType:\"plot\"},ygap:{valType:\"number\",dflt:0,min:0,editType:\"plot\"},xhoverformat:o(\"x\"),yhoverformat:o(\"y\"),zhoverformat:o(\"z\",1),hovertemplate:s(),texttemplate:l({arrayOk:!1,editType:\"plot\"},{keys:[\"x\",\"y\",\"z\",\"text\"]}),textfont:a({editType:\"plot\",autoSize:!0,autoColor:!0,colorEditType:\"style\"}),showlegend:u({},i.showlegend,{dflt:!1})},{transforms:void 0},c(\"\",{cLetter:\"z\",autoColorDflt:!1}))},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/font_attributes\":585,\"../../plots/template_attributes\":633,\"../scatter/attributes\":926}],793:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\"),a=t(\"../../plots/cartesian/axes\"),o=t(\"../../plots/cartesian/align_period\"),s=t(\"../histogram2d/calc\"),l=t(\"../../components/colorscale/calc\"),c=t(\"./convert_column_xyz\"),u=t(\"./clean_2d_array\"),f=t(\"./interp2d\"),h=t(\"./find_empties\"),p=t(\"./make_bound_array\"),d=t(\"../../constants/numerical\").BADNUM;function g(t){for(var e=[],r=t.length,n=0;nD){O(\"x scale is not linear\");break}}if(x.length&&\"fast\"===P){var R=(x[x.length-1]-x[0])/(x.length-1),F=Math.abs(R/100);for(k=0;kF){O(\"y scale is not linear\");break}}}var B=i.maxRowLength(T),N=\"scaled\"===e.xtype?\"\":r,j=p(e,N,m,v,B,M),U=\"scaled\"===e.ytype?\"\":x,V=p(e,U,b,_,T.length,S);C||(e._extremes[M._id]=a.findExtremes(M,j),e._extremes[S._id]=a.findExtremes(S,V));var H={x:j,y:V,z:T,text:e._text||e.text,hovertext:e._hovertext||e.hovertext};if(e.xperiodalignment&&y&&(H.orig_x=y),e.yperiodalignment&&w&&(H.orig_y=w),N&&N.length===j.length-1&&(H.xCenter=N),U&&U.length===V.length-1&&(H.yCenter=U),L&&(H.xRanges=A.xRanges,H.yRanges=A.yRanges,H.pts=A.pts),E||l(t,e,{vals:T,cLetter:\"z\"}),E&&e.contours&&\"heatmap\"===e.contours.coloring){var q={type:\"contour\"===e.type?\"heatmap\":\"histogram2d\",xcalendar:e.xcalendar,ycalendar:e.ycalendar};H.xfill=p(q,N,m,v,B,M),H.yfill=p(q,U,b,_,T.length,S)}return[H]}},{\"../../components/colorscale/calc\":374,\"../../constants/numerical\":479,\"../../lib\":503,\"../../plots/cartesian/align_period\":551,\"../../plots/cartesian/axes\":554,\"../../registry\":638,\"../histogram2d/calc\":826,\"./clean_2d_array\":794,\"./convert_column_xyz\":796,\"./find_empties\":798,\"./interp2d\":801,\"./make_bound_array\":803}],794:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../lib\"),a=t(\"../../constants/numerical\").BADNUM;e.exports=function(t,e,r,o){var s,l,c,u,f,h;function p(t){if(n(t))return+t}if(e&&e.transpose){for(s=0,f=0;f=0;o--)(s=((f[[(r=(a=h[o])[0])-1,i=a[1]]]||g)[2]+(f[[r+1,i]]||g)[2]+(f[[r,i-1]]||g)[2]+(f[[r,i+1]]||g)[2])/20)&&(l[a]=[r,i,s],h.splice(o,1),c=!0);if(!c)throw\"findEmpties iterated with no new neighbors\";for(a in l)f[a]=l[a],u.push(l[a])}return u.sort((function(t,e){return e[2]-t[2]}))}},{\"../../lib\":503}],799:[function(t,e,r){\"use strict\";var n=t(\"../../components/fx\"),i=t(\"../../lib\"),a=t(\"../../plots/cartesian/axes\"),o=t(\"../../components/colorscale\").extractOpts;e.exports=function(t,e,r,s,l){l||(l={});var c,u,f,h,p=l.isContour,d=t.cd[0],g=d.trace,m=t.xa,v=t.ya,y=d.x,x=d.y,b=d.z,_=d.xCenter,w=d.yCenter,T=d.zmask,k=g.zhoverformat,A=y,M=x;if(!1!==t.index){try{f=Math.round(t.index[1]),h=Math.round(t.index[0])}catch(e){return void i.error(\"Error hovering on heatmap, pointNumber must be [row,col], found:\",t.index)}if(f<0||f>=b[0].length||h<0||h>b.length)return}else{if(n.inbox(e-y[0],e-y[y.length-1],0)>0||n.inbox(r-x[0],r-x[x.length-1],0)>0)return;if(p){var S;for(A=[2*y[0]-y[1]],S=1;Sg&&(v=Math.max(v,Math.abs(t[a][o]-d)/(m-g))))}return v}e.exports=function(t,e){var r,i=1;for(o(t,e),r=0;r.01;r++)i=o(t,e,a(i));return i>.01&&n.log(\"interp2d didn't converge quickly\",i),t}},{\"../../lib\":503}],802:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t,e){t(\"texttemplate\");var r=n.extendFlat({},e.font,{color:\"auto\",size:\"auto\"});n.coerceFont(t,\"textfont\",r)}},{\"../../lib\":503}],803:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\").isArrayOrTypedArray;e.exports=function(t,e,r,a,o,s){var l,c,u,f=[],h=n.traceIs(t,\"contour\"),p=n.traceIs(t,\"histogram\"),d=n.traceIs(t,\"gl2d\");if(i(e)&&e.length>1&&!p&&\"category\"!==s.type){var g=e.length;if(!(g<=o))return h?e.slice(0,o):e.slice(0,o+1);if(h||d)f=e.slice(0,o);else if(1===o)f=[e[0]-.5,e[0]+.5];else{for(f=[1.5*e[0]-.5*e[1]],u=1;u0;)_=w.c2p(R[S]),S--;for(_0;)M=T.c2p(F[S]),S--;if(MGt||Gt>T._length))for(E=Ut;EWt||Wt>w._length)){var Xt=u({x:Yt,y:qt},I,t._fullLayout);Xt.x=Yt,Xt.y=qt;var Zt=P.z[S][E];void 0===Zt?(Xt.z=\"\",Xt.zLabel=\"\"):(Xt.z=Zt,Xt.zLabel=s.tickText(Ft,Zt,\"hover\").text);var Jt=P.text&&P.text[S]&&P.text[S][E];void 0!==Jt&&!1!==Jt||(Jt=\"\"),Xt.text=Jt;var Kt=l.texttemplateString(Dt,Xt,t._fullLayout._d3locale,Xt,I._meta||{});if(Kt){var Qt=Kt.split(\"
\"),$t=Qt.length,te=0;for(L=0;L<$t;L++)te=Math.max(te,Qt[L].length);Ht.push({l:$t,c:te,t:Kt,x:Wt,y:Gt,z:Zt})}}}}var ee=I.textfont,re=ee.family,ne=ee.size,ie=t._fullLayout.font.size;if(!ne||\"auto\"===ne){var ae=1/0,oe=1/0,se=0,le=0;for(L=0;L0&&(a=!0);for(var l=0;la){var o=a-r[t];return r[t]=a,o}}return 0},max:function(t,e,r,i){var a=i[e];if(n(a)){if(a=Number(a),!n(r[t]))return r[t]=a,a;if(r[t]c?t>o?t>1.1*i?i:t>1.1*a?a:o:t>s?s:t>l?l:c:Math.pow(10,Math.floor(Math.log(t)/Math.LN10))}function p(t,e,r,n,a,s){if(n&&t>o){var l=d(e,a,s),c=d(r,a,s),u=t===i?0:1;return l[u]!==c[u]}return Math.floor(r/t)-Math.floor(e/t)>.1}function d(t,e,r){var n=e.c2d(t,i,r).split(\"-\");return\"\"===n[0]&&(n.unshift(),n[0]=\"-\"+n[0]),n}e.exports=function(t,e,r,n,a){var s,l,c=-1.1*e,h=-.1*e,p=t-h,d=r[0],g=r[1],m=Math.min(f(d+h,d+p,n,a),f(g+h,g+p,n,a)),v=Math.min(f(d+c,d+h,n,a),f(g+c,g+h,n,a));if(m>v&&vo){var y=s===i?1:6,x=s===i?\"M12\":\"M1\";return function(e,r){var o=n.c2d(e,i,a),s=o.indexOf(\"-\",y);s>0&&(o=o.substr(0,s));var c=n.d2c(o,0,a);if(cr.r2l(B)&&(j=o.tickIncrement(j,b.size,!0,p)),z.start=r.l2r(j),F||i.nestedProperty(e,v+\".start\").set(z.start)}var U=b.end,V=r.r2l(O.end),H=void 0!==V;if((b.endFound||H)&&V!==r.r2l(U)){var q=H?V:i.aggNums(Math.max,null,d);z.end=r.l2r(q),H||i.nestedProperty(e,v+\".start\").set(z.end)}var G=\"autobin\"+s;return!1===e._input[G]&&(e._input[v]=i.extendFlat({},e[v]||{}),delete e._input[G],delete e[G]),[z,d]}e.exports={calc:function(t,e){var r,a,p,d,g=[],m=[],v=\"h\"===e.orientation,y=o.getFromId(t,v?e.yaxis:e.xaxis),x=v?\"y\":\"x\",b={x:\"y\",y:\"x\"}[x],_=e[x+\"calendar\"],w=e.cumulative,T=h(t,e,y,x),k=T[0],A=T[1],M=\"string\"==typeof k.size,S=[],E=M?S:k,L=[],C=[],P=[],I=0,O=e.histnorm,z=e.histfunc,D=-1!==O.indexOf(\"density\");w.enabled&&D&&(O=O.replace(/ ?density$/,\"\"),D=!1);var R,F=\"max\"===z||\"min\"===z?null:0,B=l.count,N=c[O],j=!1,U=function(t){return y.r2c(t,0,_)};for(i.isArrayOrTypedArray(e[b])&&\"count\"!==z&&(R=e[b],j=\"avg\"===z,B=l[z]),r=U(k.start),p=U(k.end)+(r-o.tickIncrement(r,k.size,!1,_))/1e6;r=0&&d=0;n--)s(n);else if(\"increasing\"===e){for(n=1;n=0;n--)t[n]+=t[n+1];\"exclude\"===r&&(t.push(0),t.shift())}}(m,w.direction,w.currentbin);var K=Math.min(g.length,m.length),Q=[],$=0,tt=K-1;for(r=0;r=$;r--)if(m[r]){tt=r;break}for(r=$;r<=tt;r++)if(n(g[r])&&n(m[r])){var et={p:g[r],s:m[r],b:0};w.enabled||(et.pts=P[r],Y?et.ph0=et.ph1=P[r].length?A[P[r][0]]:g[r]:(e._computePh=!0,et.ph0=q(S[r]),et.ph1=q(S[r+1],!0))),Q.push(et)}return 1===Q.length&&(Q[0].width1=o.tickIncrement(Q[0].p,k.size,!1,_)-Q[0].p),s(Q,e),i.isArrayOrTypedArray(e.selectedpoints)&&i.tagSelected(Q,e,Z),Q},calcAllAutoBins:h}},{\"../../lib\":503,\"../../plots/cartesian/axes\":554,\"../../registry\":638,\"../bar/arrays_to_calcdata\":647,\"./average\":813,\"./bin_functions\":815,\"./bin_label_vals\":816,\"./norm_functions\":824,\"fast-isnumeric\":190}],818:[function(t,e,r){\"use strict\";e.exports={eventDataKeys:[\"binNumber\"]}},{}],819:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../plots/cartesian/axis_ids\"),a=t(\"../../registry\").traceIs,o=t(\"../bar/defaults\").handleGroupingDefaults,s=n.nestedProperty,l=t(\"../../plots/cartesian/constraints\").getAxisGroup,c=[{aStr:{x:\"xbins.start\",y:\"ybins.start\"},name:\"start\"},{aStr:{x:\"xbins.end\",y:\"ybins.end\"},name:\"end\"},{aStr:{x:\"xbins.size\",y:\"ybins.size\"},name:\"size\"},{aStr:{x:\"nbinsx\",y:\"nbinsy\"},name:\"nbins\"}],u=[\"x\",\"y\"];e.exports=function(t,e){var r,f,h,p,d,g,m,v=e._histogramBinOpts={},y=[],x={},b=[];function _(t,e){return n.coerce(r._input,r,r._module.attributes,t,e)}function w(t){return\"v\"===t.orientation?\"x\":\"y\"}function T(t,r,a){var o=t.uid+\"__\"+a;r||(r=o);var s=function(t,r){return i.getFromTrace({_fullLayout:e},t,r).type}(t,a),l=t[a+\"calendar\"]||\"\",c=v[r],u=!0;c&&(s===c.axType&&l===c.calendar?(u=!1,c.traces.push(t),c.dirs.push(a)):(r=o,s!==c.axType&&n.warn([\"Attempted to group the bins of trace\",t.index,\"set on a\",\"type:\"+s,\"axis\",\"with bins on\",\"type:\"+c.axType,\"axis.\"].join(\" \")),l!==c.calendar&&n.warn([\"Attempted to group the bins of trace\",t.index,\"set with a\",l,\"calendar\",\"with bins\",c.calendar?\"on a \"+c.calendar+\" calendar\":\"w/o a set calendar\"].join(\" \")))),u&&(v[r]={traces:[t],dirs:[a],axType:s,calendar:t[a+\"calendar\"]||\"\"}),t[\"_\"+a+\"bingroup\"]=r}for(d=0;dS&&T.splice(S,T.length-S),M.length>S&&M.splice(S,M.length-S);var E=[],L=[],C=[],P=\"string\"==typeof w.size,I=\"string\"==typeof A.size,O=[],z=[],D=P?O:w,R=I?z:A,F=0,B=[],N=[],j=e.histnorm,U=e.histfunc,V=-1!==j.indexOf(\"density\"),H=\"max\"===U||\"min\"===U?null:0,q=a.count,G=o[j],Y=!1,W=[],X=[],Z=\"z\"in e?e.z:\"marker\"in e&&Array.isArray(e.marker.color)?e.marker.color:\"\";Z&&\"count\"!==U&&(Y=\"avg\"===U,q=a[U]);var J=w.size,K=x(w.start),Q=x(w.end)+(K-i.tickIncrement(K,J,!1,v))/1e6;for(r=K;r=0&&p=0&&d-1,flipY:E.tiling.flip.indexOf(\"y\")>-1,orientation:E.tiling.orientation,pad:{inner:E.tiling.pad},maxDepth:E._maxDepth}).descendants(),O=1/0,z=-1/0;I.forEach((function(t){var e=t.depth;e>=E._maxDepth?(t.x0=t.x1=(t.x0+t.x1)/2,t.y0=t.y1=(t.y0+t.y1)/2):(O=Math.min(O,e),z=Math.max(z,e))})),p=p.data(I,u.getPtId),E._maxVisibleLayers=isFinite(z)?z-O+1:0,p.enter().append(\"g\").classed(\"slice\",!0),T(p,!1,{},[g,m],x),p.order();var D=null;if(w&&M){var R=u.getPtId(M);p.each((function(t){null===D&&u.getPtId(t)===R&&(D={x0:t.x0,x1:t.x1,y0:t.y0,y1:t.y1})}))}var F=function(){return D||{x0:0,x1:g,y0:0,y1:m}},B=p;return w&&(B=B.transition().each(\"end\",(function(){var e=n.select(this);u.setSliceCursor(e,t,{hideOnRoot:!0,hideOnLeaves:!1,isTransitioning:!1})}))),B.each((function(s){s._x0=v(s.x0),s._x1=v(s.x1),s._y0=y(s.y0),s._y1=y(s.y1),s._hoverX=v(s.x1-E.tiling.pad),s._hoverY=y(P?s.y1-E.tiling.pad/2:s.y0+E.tiling.pad/2);var p=n.select(this),d=i.ensureSingle(p,\"path\",\"surface\",(function(t){t.style(\"pointer-events\",\"all\")}));w?d.transition().attrTween(\"d\",(function(t){var e=k(t,!1,F(),[g,m],{orientation:E.tiling.orientation,flipX:E.tiling.flip.indexOf(\"x\")>-1,flipY:E.tiling.flip.indexOf(\"y\")>-1});return function(t){return x(e(t))}})):d.attr(\"d\",x),p.call(f,r,t,e,{styleOne:l,eventDataKeys:c.eventDataKeys,transitionTime:c.CLICK_TRANSITION_TIME,transitionEasing:c.CLICK_TRANSITION_EASING}).call(u.setSliceCursor,t,{isTransitioning:t._transitioning}),d.call(l,s,E,{hovered:!1}),s.x0===s.x1||s.y0===s.y1?s._text=\"\":s._text=h(s,r,E,e,S)||\"\";var T=i.ensureSingle(p,\"g\",\"slicetext\"),M=i.ensureSingle(T,\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),I=i.ensureUniformFontSize(t,u.determineTextFont(E,s,S.font));M.text(s._text||\" \").classed(\"slicetext\",!0).attr(\"text-anchor\",C?\"end\":L?\"start\":\"middle\").call(a.font,I).call(o.convertToTspans,t),s.textBB=a.bBox(M.node()),s.transform=b(s,{fontSize:I.size}),s.transform.fontSize=I.size,w?M.transition().attrTween(\"transform\",(function(t){var e=A(t,!1,F(),[g,m]);return function(t){return _(e(t))}})):M.attr(\"transform\",_(s))})),D}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../sunburst/fx\":1050,\"../sunburst/helpers\":1051,\"../sunburst/plot\":1055,\"../treemap/constants\":1074,\"./partition\":842,\"./style\":844,\"@plotly/d3\":58}],839:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"icicle\",basePlotModule:t(\"./base_plot\"),categories:[],animatable:!0,attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\"),supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\").calc,crossTraceCalc:t(\"./calc\").crossTraceCalc,plot:t(\"./plot\"),style:t(\"./style\").style,colorbar:t(\"../scatter/marker_colorbar\"),meta:{}}},{\"../scatter/marker_colorbar\":944,\"./attributes\":834,\"./base_plot\":835,\"./calc\":836,\"./defaults\":837,\"./layout_attributes\":840,\"./layout_defaults\":841,\"./plot\":843,\"./style\":844}],840:[function(t,e,r){\"use strict\";e.exports={iciclecolorway:{valType:\"colorlist\",editType:\"calc\"},extendiciclecolors:{valType:\"boolean\",dflt:!0,editType:\"calc\"}}},{}],841:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e){function r(r,a){return n.coerce(t,e,i,r,a)}r(\"iciclecolorway\",e.colorway),r(\"extendiciclecolors\")}},{\"../../lib\":503,\"./layout_attributes\":840}],842:[function(t,e,r){\"use strict\";var n=t(\"d3-hierarchy\"),i=t(\"../treemap/flip_tree\");e.exports=function(t,e,r){var a=r.flipX,o=r.flipY,s=\"h\"===r.orientation,l=r.maxDepth,c=e[0],u=e[1];l&&(c=(t.height+1)*e[0]/Math.min(t.height+1,l),u=(t.height+1)*e[1]/Math.min(t.height+1,l));var f=n.partition().padding(r.pad.inner).size(s?[e[1],c]:[e[0],u])(t);return(s||a||o)&&i(f,e,{swapXY:s,flipX:a,flipY:o}),f}},{\"../treemap/flip_tree\":1079,\"d3-hierarchy\":115}],843:[function(t,e,r){\"use strict\";var n=t(\"../treemap/draw\"),i=t(\"./draw_descendants\");e.exports=function(t,e,r,a){return n(t,e,r,a,{type:\"icicle\",drawDescendants:i})}},{\"../treemap/draw\":1076,\"./draw_descendants\":838}],844:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../components/color\"),a=t(\"../../lib\"),o=t(\"../bar/uniform_text\").resizeText;function s(t,e,r){var n=e.data.data,o=!e.children,s=n.i,l=a.castOption(r,s,\"marker.line.color\")||i.defaultLine,c=a.castOption(r,s,\"marker.line.width\")||0;t.style(\"stroke-width\",c).call(i.fill,n.color).call(i.stroke,l).style(\"opacity\",o?r.leaf.opacity:null)}e.exports={style:function(t){var e=t._fullLayout._iciclelayer.selectAll(\".trace\");o(t,e,\"icicle\"),e.each((function(t){var e=n.select(this),r=t[0].trace;e.style(\"opacity\",r.opacity),e.selectAll(\"path.surface\").each((function(t){n.select(this).call(s,t,r)}))}))},styleOne:s}},{\"../../components/color\":366,\"../../lib\":503,\"../bar/uniform_text\":664,\"@plotly/d3\":58}],845:[function(t,e,r){\"use strict\";for(var n=t(\"../../plots/attributes\"),i=t(\"../../plots/template_attributes\").hovertemplateAttrs,a=t(\"../../lib/extend\").extendFlat,o=t(\"./constants\").colormodel,s=[\"rgb\",\"rgba\",\"rgba256\",\"hsl\",\"hsla\"],l=[],c=[],u=0;u0||n.inbox(r-o.y0,r-(o.y0+o.h*s.dy),0)>0)){var u,f=Math.floor((e-o.x0)/s.dx),h=Math.floor(Math.abs(r-o.y0)/s.dy);if(s._hasZ?u=o.z[h][f]:s._hasSource&&(u=s._canvas.el.getContext(\"2d\").getImageData(f,h,1,1).data),u){var p,d=o.hi||s.hoverinfo;if(d){var g=d.split(\"+\");-1!==g.indexOf(\"all\")&&(g=[\"color\"]),-1!==g.indexOf(\"color\")&&(p=!0)}var m,v=a.colormodel[s.colormodel],y=v.colormodel||s.colormodel,x=y.length,b=s._scaler(u),_=v.suffix,w=[];(s.hovertemplate||p)&&(w.push(\"[\"+[b[0]+_[0],b[1]+_[1],b[2]+_[2]].join(\", \")),4===x&&w.push(\", \"+b[3]+_[3]),w.push(\"]\"),w=w.join(\"\"),t.extraText=y.toUpperCase()+\": \"+w),Array.isArray(s.hovertext)&&Array.isArray(s.hovertext[h])?m=s.hovertext[h][f]:Array.isArray(s.text)&&Array.isArray(s.text[h])&&(m=s.text[h][f]);var T=c.c2p(o.y0+(h+.5)*s.dy),k=o.x0+(f+.5)*s.dx,A=o.y0+(h+.5)*s.dy,M=\"[\"+u.slice(0,s.colormodel.length).join(\", \")+\"]\";return[i.extendFlat(t,{index:[h,f],x0:l.c2p(o.x0+f*s.dx),x1:l.c2p(o.x0+(f+1)*s.dx),y0:T,y1:T,color:b,xVal:k,xLabelVal:k,yVal:A,yLabelVal:A,zLabelVal:M,text:m,hovertemplateLabels:{zLabel:M,colorLabel:w,\"color[0]Label\":b[0]+_[0],\"color[1]Label\":b[1]+_[1],\"color[2]Label\":b[2]+_[2],\"color[3]Label\":b[3]+_[3]}})]}}}},{\"../../components/fx\":406,\"../../lib\":503,\"./constants\":847}],852:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),calc:t(\"./calc\"),plot:t(\"./plot\"),style:t(\"./style\"),hoverPoints:t(\"./hover\"),eventData:t(\"./event_data\"),moduleType:\"trace\",name:\"image\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"cartesian\",\"svg\",\"2dMap\",\"noSortingByValue\"],animatable:!1,meta:{}}},{\"../../plots/cartesian\":568,\"./attributes\":845,\"./calc\":846,\"./defaults\":848,\"./event_data\":849,\"./hover\":851,\"./plot\":853,\"./style\":854}],853:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=i.strTranslate,o=t(\"../../constants/xmlns_namespaces\"),s=t(\"./constants\"),l=i.isIOS()||i.isSafari()||i.isIE();e.exports=function(t,e,r,c){var u=e.xaxis,f=e.yaxis,h=!(l||t._context._exportedPlot);i.makeTraceGroups(c,r,\"im\").each((function(e){var r=n.select(this),l=e[0],c=l.trace,p=(\"fast\"===c.zsmooth||!1===c.zsmooth&&h)&&!c._hasZ&&c._hasSource&&\"linear\"===u.type&&\"linear\"===f.type;c._realImage=p;var d,g,m,v,y,x,b=l.z,_=l.x0,w=l.y0,T=l.w,k=l.h,A=c.dx,M=c.dy;for(x=0;void 0===d&&x0;)g=u.c2p(_+x*A),x--;for(x=0;void 0===v&&x0;)y=f.c2p(w+x*M),x--;if(gI[0];if(O||z){var D=d+S/2,R=v+E/2;C+=\"transform:\"+a(D+\"px\",R+\"px\")+\"scale(\"+(O?-1:1)+\",\"+(z?-1:1)+\")\"+a(-D+\"px\",-R+\"px\")+\";\"}}L.attr(\"style\",C);var F=new Promise((function(t){if(c._hasZ)t();else if(c._hasSource)if(c._canvas&&c._canvas.el.width===T&&c._canvas.el.height===k&&c._canvas.source===c.source)t();else{var e=document.createElement(\"canvas\");e.width=T,e.height=k;var r=e.getContext(\"2d\");c._image=c._image||new Image;var n=c._image;n.onload=function(){r.drawImage(n,0,0),c._canvas={el:e,source:c.source},t()},n.setAttribute(\"src\",c.source)}})).then((function(){var t;if(c._hasZ)t=B((function(t,e){return b[e][t]})).toDataURL(\"image/png\");else if(c._hasSource)if(p)t=c.source;else{var e=c._canvas.el.getContext(\"2d\").getImageData(0,0,T,k).data;t=B((function(t,r){var n=4*(r*T+t);return[e[n],e[n+1],e[n+2],e[n+3]]})).toDataURL(\"image/png\")}L.attr({\"xlink:href\":t,height:E,width:S,x:d,y:v})}));t._promises.push(F)}function B(t){var e=document.createElement(\"canvas\");e.width=S,e.height=E;var r,n=e.getContext(\"2d\"),a=function(t){return i.constrain(Math.round(u.c2p(_+t*A)-d),0,S)},o=function(t){return i.constrain(Math.round(f.c2p(w+t*M)-v),0,E)},h=s.colormodel[c.colormodel],p=h.colormodel||c.colormodel,g=h.fmt;for(x=0;x0}function T(t){t.each((function(t){y.stroke(n.select(this),t.line.color)})).each((function(t){y.fill(n.select(this),t.color)})).style(\"stroke-width\",(function(t){return t.line.width}))}function k(t,e,r){var n=t._fullLayout,i=o.extendFlat({type:\"linear\",ticks:\"outside\",range:r,showline:!0},e),a={type:\"linear\",_id:\"x\"+e._id},s={letter:\"x\",font:n.font,noHover:!0,noTickson:!0};function l(t,e){return o.coerce(i,a,v,t,e)}return g(i,a,l,s,n),m(i,a,l,s),a}function A(t,e,r){return[Math.min(e/t.width,r/t.height),t,e+\"x\"+r]}function M(t,e,r,i){var a=document.createElementNS(\"http://www.w3.org/2000/svg\",\"text\"),o=n.select(a);return o.text(t).attr(\"x\",0).attr(\"y\",0).attr(\"text-anchor\",r).attr(\"data-unformatted\",t).call(p.convertToTspans,i).call(f.font,e),f.bBox(o.node())}function S(t,e,r,n,i,a){var s=\"_cache\"+e;t[s]&&t[s].key===i||(t[s]={key:i,value:r});var l=o.aggNums(a,null,[t[s].value,n],2);return t[s].value=l,l}e.exports=function(t,e,r,g){var m,v=t._fullLayout;w(r)&&g&&(m=g()),o.makeTraceGroups(v._indicatorlayer,e,\"trace\").each((function(e){var g,E,L,C,P,I=e[0].trace,O=n.select(this),z=I._hasGauge,D=I._isAngular,R=I._isBullet,F=I.domain,B={w:v._size.w*(F.x[1]-F.x[0]),h:v._size.h*(F.y[1]-F.y[0]),l:v._size.l+v._size.w*F.x[0],r:v._size.r+v._size.w*(1-F.x[1]),t:v._size.t+v._size.h*(1-F.y[1]),b:v._size.b+v._size.h*F.y[0]},N=B.l+B.w/2,j=B.t+B.h/2,U=Math.min(B.w/2,B.h),V=h.innerRadius*U,H=I.align||\"center\";if(E=j,z){if(D&&(g=N,E=j+U/2,L=function(t){return function(t,e){var r=Math.sqrt(t.width/2*(t.width/2)+t.height*t.height);return[e/r,t,e]}(t,.9*V)}),R){var q=h.bulletPadding,G=1-h.bulletNumberDomainSize+q;g=B.l+(G+(1-G)*b[H])*B.w,L=function(t){return A(t,(h.bulletNumberDomainSize-q)*B.w,B.h)}}}else g=B.l+b[H]*B.w,L=function(t){return A(t,B.w,B.h)};!function(t,e,r,i){var c,u,h,g=r[0].trace,m=i.numbersX,v=i.numbersY,T=g.align||\"center\",A=x[T],E=i.transitionOpts,L=i.onComplete,C=o.ensureSingle(e,\"g\",\"numbers\"),P=[];g._hasNumber&&P.push(\"number\");g._hasDelta&&(P.push(\"delta\"),\"left\"===g.delta.position&&P.reverse());var I=C.selectAll(\"text\").data(P);function O(e,r,n,i){if(!e.match(\"s\")||n>=0==i>=0||r(n).slice(-1).match(_)||r(i).slice(-1).match(_))return r;var a=e.slice().replace(\"s\",\"f\").replace(/\\d+/,(function(t){return parseInt(t)-1})),o=k(t,{tickformat:a});return function(t){return Math.abs(t)<1?d.tickText(o,t).text:r(t)}}I.enter().append(\"text\"),I.attr(\"text-anchor\",(function(){return A})).attr(\"class\",(function(t){return t})).attr(\"x\",null).attr(\"y\",null).attr(\"dx\",null).attr(\"dy\",null),I.exit().remove();var z,D=g.mode+g.align;g._hasDelta&&(z=function(){var e=k(t,{tickformat:g.delta.valueformat},g._range);e.setScale(),d.prepTicks(e);var i=function(t){return d.tickText(e,t).text},o=function(t){return g.delta.relative?t.relativeDelta:t.delta},s=function(t,e){return 0===t||\"number\"!=typeof t||isNaN(t)?\"-\":(t>0?g.delta.increasing.symbol:g.delta.decreasing.symbol)+e(t)},l=function(t){return t.delta>=0?g.delta.increasing.color:g.delta.decreasing.color};void 0===g._deltaLastValue&&(g._deltaLastValue=o(r[0]));var c=C.select(\"text.delta\");function h(){c.text(s(o(r[0]),i)).call(y.fill,l(r[0])).call(p.convertToTspans,t)}return c.call(f.font,g.delta.font).call(y.fill,l({delta:g._deltaLastValue})),w(E)?c.transition().duration(E.duration).ease(E.easing).tween(\"text\",(function(){var t=n.select(this),e=o(r[0]),c=g._deltaLastValue,u=O(g.delta.valueformat,i,c,e),f=a(c,e);return g._deltaLastValue=e,function(e){t.text(s(f(e),u)),t.call(y.fill,l({delta:f(e)}))}})).each(\"end\",(function(){h(),L&&L()})).each(\"interrupt\",(function(){h(),L&&L()})):h(),u=M(s(o(r[0]),i),g.delta.font,A,t),c}(),D+=g.delta.position+g.delta.font.size+g.delta.font.family+g.delta.valueformat,D+=g.delta.increasing.symbol+g.delta.decreasing.symbol,h=u);g._hasNumber&&(!function(){var e=k(t,{tickformat:g.number.valueformat},g._range);e.setScale(),d.prepTicks(e);var i=function(t){return d.tickText(e,t).text},o=g.number.suffix,s=g.number.prefix,l=C.select(\"text.number\");function u(){var e=\"number\"==typeof r[0].y?s+i(r[0].y)+o:\"-\";l.text(e).call(f.font,g.number.font).call(p.convertToTspans,t)}w(E)?l.transition().duration(E.duration).ease(E.easing).each(\"end\",(function(){u(),L&&L()})).each(\"interrupt\",(function(){u(),L&&L()})).attrTween(\"text\",(function(){var t=n.select(this),e=a(r[0].lastY,r[0].y);g._lastValue=r[0].y;var l=O(g.number.valueformat,i,r[0].lastY,r[0].y);return function(r){t.text(s+l(e(r))+o)}})):u(),c=M(s+i(r[0].y)+o,g.number.font,A,t)}(),D+=g.number.font.size+g.number.font.family+g.number.valueformat+g.number.suffix+g.number.prefix,h=c);if(g._hasDelta&&g._hasNumber){var R,F,B=[(c.left+c.right)/2,(c.top+c.bottom)/2],N=[(u.left+u.right)/2,(u.top+u.bottom)/2],j=.75*g.delta.font.size;\"left\"===g.delta.position&&(R=S(g,\"deltaPos\",0,-1*(c.width*b[g.align]+u.width*(1-b[g.align])+j),D,Math.min),F=B[1]-N[1],h={width:c.width+u.width+j,height:Math.max(c.height,u.height),left:u.left+R,right:c.right,top:Math.min(c.top,u.top+F),bottom:Math.max(c.bottom,u.bottom+F)}),\"right\"===g.delta.position&&(R=S(g,\"deltaPos\",0,c.width*(1-b[g.align])+u.width*b[g.align]+j,D,Math.max),F=B[1]-N[1],h={width:c.width+u.width+j,height:Math.max(c.height,u.height),left:c.left,right:u.right+R,top:Math.min(c.top,u.top+F),bottom:Math.max(c.bottom,u.bottom+F)}),\"bottom\"===g.delta.position&&(R=null,F=u.height,h={width:Math.max(c.width,u.width),height:c.height+u.height,left:Math.min(c.left,u.left),right:Math.max(c.right,u.right),top:c.bottom-c.height,bottom:c.bottom+u.height}),\"top\"===g.delta.position&&(R=null,F=c.top,h={width:Math.max(c.width,u.width),height:c.height+u.height,left:Math.min(c.left,u.left),right:Math.max(c.right,u.right),top:c.bottom-c.height-u.height,bottom:c.bottom}),z.attr({dx:R,dy:F})}(g._hasNumber||g._hasDelta)&&C.attr(\"transform\",(function(){var t=i.numbersScaler(h);D+=t[2];var e,r=S(g,\"numbersScale\",1,t[0],D,Math.min);g._scaleNumbers||(r=1),e=g._isAngular?v-r*h.bottom:v-r*(h.top+h.bottom)/2,g._numbersTop=r*h.top+e;var n=h[T];\"center\"===T&&(n=(h.left+h.right)/2);var a=m-r*n;return a=S(g,\"numbersTranslate\",0,a,D,Math.max),l(a,e)+s(r)}))}(t,O,e,{numbersX:g,numbersY:E,numbersScaler:L,transitionOpts:r,onComplete:m}),z&&(C={range:I.gauge.axis.range,color:I.gauge.bgcolor,line:{color:I.gauge.bordercolor,width:0},thickness:1},P={range:I.gauge.axis.range,color:\"rgba(0, 0, 0, 0)\",line:{color:I.gauge.bordercolor,width:I.gauge.borderwidth},thickness:1});var Y=O.selectAll(\"g.angular\").data(D?e:[]);Y.exit().remove();var W=O.selectAll(\"g.angularaxis\").data(D?e:[]);W.exit().remove(),D&&function(t,e,r,a){var o,s,f,h,p=r[0].trace,g=a.size,m=a.radius,v=a.innerRadius,y=a.gaugeBg,x=a.gaugeOutline,b=[g.l+g.w/2,g.t+g.h/2+m/2],_=a.gauge,A=a.layer,M=a.transitionOpts,S=a.onComplete,E=Math.PI/2;function L(t){var e=p.gauge.axis.range[0],r=(t-e)/(p.gauge.axis.range[1]-e)*Math.PI-E;return r<-E?-E:r>E?E:r}function C(t){return n.svg.arc().innerRadius((v+m)/2-t/2*(m-v)).outerRadius((v+m)/2+t/2*(m-v)).startAngle(-E)}function P(t){t.attr(\"d\",(function(t){return C(t.thickness).startAngle(L(t.range[0])).endAngle(L(t.range[1]))()}))}_.enter().append(\"g\").classed(\"angular\",!0),_.attr(\"transform\",l(b[0],b[1])),A.enter().append(\"g\").classed(\"angularaxis\",!0).classed(\"crisp\",!0),A.selectAll(\"g.xangularaxistick,path,text\").remove(),(o=k(t,p.gauge.axis)).type=\"linear\",o.range=p.gauge.axis.range,o._id=\"xangularaxis\",o.ticklabeloverflow=\"allow\",o.setScale();var I=function(t){return(o.range[0]-t.x)/(o.range[1]-o.range[0])*Math.PI+Math.PI},O={},z=d.makeLabelFns(o,0).labelStandoff;O.xFn=function(t){var e=I(t);return Math.cos(e)*z},O.yFn=function(t){var e=I(t),r=Math.sin(e)>0?.2:1;return-Math.sin(e)*(z+t.fontSize*r)+Math.abs(Math.cos(e))*(t.fontSize*u)},O.anchorFn=function(t){var e=I(t),r=Math.cos(e);return Math.abs(r)<.1?\"middle\":r>0?\"start\":\"end\"},O.heightFn=function(t,e,r){var n=I(t);return-.5*(1+Math.sin(n))*r};var D=function(t){return l(b[0]+m*Math.cos(t),b[1]-m*Math.sin(t))};f=function(t){return D(I(t))};if(s=d.calcTicks(o),h=d.getTickSigns(o)[2],o.visible){h=\"inside\"===o.ticks?-1:1;var R=(o.linewidth||1)/2;d.drawTicks(t,o,{vals:s,layer:A,path:\"M\"+h*R+\",0h\"+h*o.ticklen,transFn:function(t){var e=I(t);return D(e)+\"rotate(\"+-c(e)+\")\"}}),d.drawLabels(t,o,{vals:s,layer:A,transFn:f,labelFns:O})}var F=[y].concat(p.gauge.steps),B=_.selectAll(\"g.bg-arc\").data(F);B.enter().append(\"g\").classed(\"bg-arc\",!0).append(\"path\"),B.select(\"path\").call(P).call(T),B.exit().remove();var N=C(p.gauge.bar.thickness),j=_.selectAll(\"g.value-arc\").data([p.gauge.bar]);j.enter().append(\"g\").classed(\"value-arc\",!0).append(\"path\");var U=j.select(\"path\");w(M)?(U.transition().duration(M.duration).ease(M.easing).each(\"end\",(function(){S&&S()})).each(\"interrupt\",(function(){S&&S()})).attrTween(\"d\",(V=N,H=L(r[0].lastY),q=L(r[0].y),function(){var t=i(H,q);return function(e){return V.endAngle(t(e))()}})),p._lastValue=r[0].y):U.attr(\"d\",\"number\"==typeof r[0].y?N.endAngle(L(r[0].y)):\"M0,0Z\");var V,H,q;U.call(T),j.exit().remove(),F=[];var G=p.gauge.threshold.value;(G||0===G)&&F.push({range:[G,G],color:p.gauge.threshold.color,line:{color:p.gauge.threshold.line.color,width:p.gauge.threshold.line.width},thickness:p.gauge.threshold.thickness});var Y=_.selectAll(\"g.threshold-arc\").data(F);Y.enter().append(\"g\").classed(\"threshold-arc\",!0).append(\"path\"),Y.select(\"path\").call(P).call(T),Y.exit().remove();var W=_.selectAll(\"g.gauge-outline\").data([x]);W.enter().append(\"g\").classed(\"gauge-outline\",!0).append(\"path\"),W.select(\"path\").call(P).call(T),W.exit().remove()}(t,0,e,{radius:U,innerRadius:V,gauge:Y,layer:W,size:B,gaugeBg:C,gaugeOutline:P,transitionOpts:r,onComplete:m});var X=O.selectAll(\"g.bullet\").data(R?e:[]);X.exit().remove();var Z=O.selectAll(\"g.bulletaxis\").data(R?e:[]);Z.exit().remove(),R&&function(t,e,r,n){var i,a,o,s,c,u=r[0].trace,f=n.gauge,p=n.layer,g=n.gaugeBg,m=n.gaugeOutline,v=n.size,x=u.domain,b=n.transitionOpts,_=n.onComplete;f.enter().append(\"g\").classed(\"bullet\",!0),f.attr(\"transform\",l(v.l,v.t)),p.enter().append(\"g\").classed(\"bulletaxis\",!0).classed(\"crisp\",!0),p.selectAll(\"g.xbulletaxistick,path,text\").remove();var A=v.h,M=u.gauge.bar.thickness*A,S=x.x[0],E=x.x[0]+(x.x[1]-x.x[0])*(u._hasNumber||u._hasDelta?1-h.bulletNumberDomainSize:1);(i=k(t,u.gauge.axis))._id=\"xbulletaxis\",i.domain=[S,E],i.setScale(),a=d.calcTicks(i),o=d.makeTransTickFn(i),s=d.getTickSigns(i)[2],c=v.t+v.h,i.visible&&(d.drawTicks(t,i,{vals:\"inside\"===i.ticks?d.clipEnds(i,a):a,layer:p,path:d.makeTickPath(i,c,s),transFn:o}),d.drawLabels(t,i,{vals:a,layer:p,transFn:o,labelFns:d.makeLabelFns(i,c)}));function L(t){t.attr(\"width\",(function(t){return Math.max(0,i.c2p(t.range[1])-i.c2p(t.range[0]))})).attr(\"x\",(function(t){return i.c2p(t.range[0])})).attr(\"y\",(function(t){return.5*(1-t.thickness)*A})).attr(\"height\",(function(t){return t.thickness*A}))}var C=[g].concat(u.gauge.steps),P=f.selectAll(\"g.bg-bullet\").data(C);P.enter().append(\"g\").classed(\"bg-bullet\",!0).append(\"rect\"),P.select(\"rect\").call(L).call(T),P.exit().remove();var I=f.selectAll(\"g.value-bullet\").data([u.gauge.bar]);I.enter().append(\"g\").classed(\"value-bullet\",!0).append(\"rect\"),I.select(\"rect\").attr(\"height\",M).attr(\"y\",(A-M)/2).call(T),w(b)?I.select(\"rect\").transition().duration(b.duration).ease(b.easing).each(\"end\",(function(){_&&_()})).each(\"interrupt\",(function(){_&&_()})).attr(\"width\",Math.max(0,i.c2p(Math.min(u.gauge.axis.range[1],r[0].y)))):I.select(\"rect\").attr(\"width\",\"number\"==typeof r[0].y?Math.max(0,i.c2p(Math.min(u.gauge.axis.range[1],r[0].y))):0);I.exit().remove();var O=r.filter((function(){return u.gauge.threshold.value||0===u.gauge.threshold.value})),z=f.selectAll(\"g.threshold-bullet\").data(O);z.enter().append(\"g\").classed(\"threshold-bullet\",!0).append(\"line\"),z.select(\"line\").attr(\"x1\",i.c2p(u.gauge.threshold.value)).attr(\"x2\",i.c2p(u.gauge.threshold.value)).attr(\"y1\",(1-u.gauge.threshold.thickness)/2*A).attr(\"y2\",(1-(1-u.gauge.threshold.thickness)/2)*A).call(y.stroke,u.gauge.threshold.line.color).style(\"stroke-width\",u.gauge.threshold.line.width),z.exit().remove();var D=f.selectAll(\"g.gauge-outline\").data([m]);D.enter().append(\"g\").classed(\"gauge-outline\",!0).append(\"rect\"),D.select(\"rect\").call(L).call(T),D.exit().remove()}(t,0,e,{gauge:X,layer:Z,size:B,gaugeBg:C,gaugeOutline:P,transitionOpts:r,onComplete:m});var J=O.selectAll(\"text.title\").data(e);J.exit().remove(),J.enter().append(\"text\").classed(\"title\",!0),J.attr(\"text-anchor\",(function(){return R?x.right:x[I.title.align]})).text(I.title.text).call(f.font,I.title.font).call(p.convertToTspans,t),J.attr(\"transform\",(function(){var t,e=B.l+B.w*b[I.title.align],r=h.titlePadding,n=f.bBox(J.node());if(z){if(D)if(I.gauge.axis.visible)t=f.bBox(W.node()).top-r-n.bottom;else t=B.t+B.h/2-U/2-n.bottom-r;R&&(t=E-(n.top+n.bottom)/2,e=B.l-h.bulletPadding*B.w)}else t=I._numbersTop-r-n.bottom;return l(e,t)}))}))}},{\"../../components/color\":366,\"../../components/drawing\":388,\"../../constants/alignment\":471,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../../plots/cartesian/axes\":554,\"../../plots/cartesian/axis_defaults\":556,\"../../plots/cartesian/layout_attributes\":569,\"../../plots/cartesian/position_defaults\":572,\"./constants\":858,\"@plotly/d3\":58,\"d3-interpolate\":116}],862:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/attributes\"),i=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,a=t(\"../../plots/template_attributes\").hovertemplateAttrs,o=t(\"../mesh3d/attributes\"),s=t(\"../../plots/attributes\"),l=t(\"../../lib/extend\").extendFlat,c=t(\"../../plot_api/edit_types\").overrideAll;var u=e.exports=c(l({x:{valType:\"data_array\"},y:{valType:\"data_array\"},z:{valType:\"data_array\"},value:{valType:\"data_array\"},isomin:{valType:\"number\"},isomax:{valType:\"number\"},surface:{show:{valType:\"boolean\",dflt:!0},count:{valType:\"integer\",dflt:2,min:1},fill:{valType:\"number\",min:0,max:1,dflt:1},pattern:{valType:\"flaglist\",flags:[\"A\",\"B\",\"C\",\"D\",\"E\"],extras:[\"all\",\"odd\",\"even\"],dflt:\"all\"}},spaceframe:{show:{valType:\"boolean\",dflt:!1},fill:{valType:\"number\",min:0,max:1,dflt:.15}},slices:{x:{show:{valType:\"boolean\",dflt:!1},locations:{valType:\"data_array\",dflt:[]},fill:{valType:\"number\",min:0,max:1,dflt:1}},y:{show:{valType:\"boolean\",dflt:!1},locations:{valType:\"data_array\",dflt:[]},fill:{valType:\"number\",min:0,max:1,dflt:1}},z:{show:{valType:\"boolean\",dflt:!1},locations:{valType:\"data_array\",dflt:[]},fill:{valType:\"number\",min:0,max:1,dflt:1}}},caps:{x:{show:{valType:\"boolean\",dflt:!0},fill:{valType:\"number\",min:0,max:1,dflt:1}},y:{show:{valType:\"boolean\",dflt:!0},fill:{valType:\"number\",min:0,max:1,dflt:1}},z:{show:{valType:\"boolean\",dflt:!0},fill:{valType:\"number\",min:0,max:1,dflt:1}}},text:{valType:\"string\",dflt:\"\",arrayOk:!0},hovertext:{valType:\"string\",dflt:\"\",arrayOk:!0},hovertemplate:a(),xhoverformat:i(\"x\"),yhoverformat:i(\"y\"),zhoverformat:i(\"z\"),valuehoverformat:i(\"value\",1),showlegend:l({},s.showlegend,{dflt:!1})},n(\"\",{colorAttr:\"`value`\",showScaleDflt:!0,editTypeOverride:\"calc\"}),{opacity:o.opacity,lightposition:o.lightposition,lighting:o.lighting,flatshading:o.flatshading,contour:o.contour,hoverinfo:l({},s.hoverinfo)}),\"calc\",\"nested\");u.flatshading.dflt=!0,u.lighting.facenormalsepsilon.dflt=0,u.x.editType=u.y.editType=u.z.editType=u.value.editType=\"calc+clearAxisTypes\",u.transforms=void 0},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plot_api/edit_types\":536,\"../../plots/attributes\":550,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/template_attributes\":633,\"../mesh3d/attributes\":867}],863:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/calc\"),i=t(\"../streamtube/calc\").processGrid,a=t(\"../streamtube/calc\").filter;e.exports=function(t,e){e._len=Math.min(e.x.length,e.y.length,e.z.length,e.value.length),e._x=a(e.x,e._len),e._y=a(e.y,e._len),e._z=a(e.z,e._len),e._value=a(e.value,e._len);var r=i(e);e._gridFill=r.fill,e._Xs=r.Xs,e._Ys=r.Ys,e._Zs=r.Zs,e._len=r.len;for(var o=1/0,s=-1/0,l=0;l0;r--){var n=Math.min(e[r],e[r-1]),i=Math.max(e[r],e[r-1]);if(i>n&&n-1}function R(t,e){return null===t?e:t}function F(e,r,n){C();var i,a,o,l=[r],c=[n];if(s>=1)l=[r],c=[n];else if(s>0){var u=function(t,e){var r=t[0],n=t[1],i=t[2],a=function(t,e,r){for(var n=[],i=0;i-1?n[p]:L(d,g,v);h[p]=x>-1?x:I(d,g,v,R(e,y))}i=h[0],a=h[1],o=h[2],t._meshI.push(i),t._meshJ.push(a),t._meshK.push(o),++m}}function B(t,e,r,n){var i=t[3];in&&(i=n);for(var a=(t[3]-i)/(t[3]-e[3]+1e-9),o=[],s=0;s<4;s++)o[s]=(1-a)*t[s]+a*e[s];return o}function N(t,e,r){return t>=e&&t<=r}function j(t){var e=.001*(E-S);return t>=S-e&&t<=E+e}function U(e){for(var r=[],n=0;n<4;n++){var i=e[n];r.push([t._x[i],t._y[i],t._z[i],t._value[i]])}return r}function V(t,e,r,n,i,a){a||(a=1),r=[-1,-1,-1];var o=!1,s=[N(e[0][3],n,i),N(e[1][3],n,i),N(e[2][3],n,i)];if(!s[0]&&!s[1]&&!s[2])return!1;var l=function(t,e,r){return j(e[0][3])&&j(e[1][3])&&j(e[2][3])?(F(t,e,r),!0):a<3&&V(t,e,r,S,E,++a)};if(s[0]&&s[1]&&s[2])return l(t,e,r)||o;var c=!1;return[[0,1,2],[2,0,1],[1,2,0]].forEach((function(a){if(s[a[0]]&&s[a[1]]&&!s[a[2]]){var u=e[a[0]],f=e[a[1]],h=e[a[2]],p=B(h,u,n,i),d=B(h,f,n,i);o=l(t,[d,p,u],[-1,-1,r[a[0]]])||o,o=l(t,[u,f,d],[r[a[0]],r[a[1]],-1])||o,c=!0}})),c||[[0,1,2],[1,2,0],[2,0,1]].forEach((function(a){if(s[a[0]]&&!s[a[1]]&&!s[a[2]]){var u=e[a[0]],f=e[a[1]],h=e[a[2]],p=B(f,u,n,i),d=B(h,u,n,i);o=l(t,[d,p,u],[-1,-1,r[a[0]]])||o,c=!0}})),o}function H(t,e,r,n){var i=!1,a=U(e),o=[N(a[0][3],r,n),N(a[1][3],r,n),N(a[2][3],r,n),N(a[3][3],r,n)];if(!(o[0]||o[1]||o[2]||o[3]))return i;if(o[0]&&o[1]&&o[2]&&o[3])return g&&(i=function(t,e,r){var n=function(n,i,a){F(t,[e[n],e[i],e[a]],[r[n],r[i],r[a]])};n(0,1,2),n(3,0,1),n(2,3,0),n(1,2,3)}(t,a,e)||i),i;var s=!1;return[[0,1,2,3],[3,0,1,2],[2,3,0,1],[1,2,3,0]].forEach((function(l){if(o[l[0]]&&o[l[1]]&&o[l[2]]&&!o[l[3]]){var c=a[l[0]],u=a[l[1]],f=a[l[2]],h=a[l[3]];if(g)i=F(t,[c,u,f],[e[l[0]],e[l[1]],e[l[2]]])||i;else{var p=B(h,c,r,n),d=B(h,u,r,n),m=B(h,f,r,n);i=F(null,[p,d,m],[-1,-1,-1])||i}s=!0}})),s?i:([[0,1,2,3],[1,2,3,0],[2,3,0,1],[3,0,1,2],[0,2,3,1],[1,3,2,0]].forEach((function(l){if(o[l[0]]&&o[l[1]]&&!o[l[2]]&&!o[l[3]]){var c=a[l[0]],u=a[l[1]],f=a[l[2]],h=a[l[3]],p=B(f,c,r,n),d=B(f,u,r,n),m=B(h,u,r,n),v=B(h,c,r,n);g?(i=F(t,[c,v,p],[e[l[0]],-1,-1])||i,i=F(t,[u,d,m],[e[l[1]],-1,-1])||i):i=function(t,e,r){var n=function(n,i,a){F(t,[e[n],e[i],e[a]],[r[n],r[i],r[a]])};n(0,1,2),n(2,3,0)}(null,[p,d,m,v],[-1,-1,-1,-1])||i,s=!0}})),s||[[0,1,2,3],[1,2,3,0],[2,3,0,1],[3,0,1,2]].forEach((function(l){if(o[l[0]]&&!o[l[1]]&&!o[l[2]]&&!o[l[3]]){var c=a[l[0]],u=a[l[1]],f=a[l[2]],h=a[l[3]],p=B(u,c,r,n),d=B(f,c,r,n),m=B(h,c,r,n);g?(i=F(t,[c,p,d],[e[l[0]],-1,-1])||i,i=F(t,[c,d,m],[e[l[0]],-1,-1])||i,i=F(t,[c,m,p],[e[l[0]],-1,-1])||i):i=F(null,[p,d,m],[-1,-1,-1])||i,s=!0}})),i)}function q(t,e,r,n,i,a,o,s,l,c,u){var f=!1;return d&&(D(t,\"A\")&&(f=H(null,[e,r,n,a],c,u)||f),D(t,\"B\")&&(f=H(null,[r,n,i,l],c,u)||f),D(t,\"C\")&&(f=H(null,[r,a,o,l],c,u)||f),D(t,\"D\")&&(f=H(null,[n,a,s,l],c,u)||f),D(t,\"E\")&&(f=H(null,[r,n,a,l],c,u)||f)),g&&(f=H(t,[r,n,a,l],c,u)||f),f}function G(t,e,r,n,i,a,o,s){return[!0===s[0]||V(t,U([e,r,n]),[e,r,n],a,o),!0===s[1]||V(t,U([n,i,e]),[n,i,e],a,o)]}function Y(t,e,r,n,i,a,o,s,l){return s?G(t,e,r,i,n,a,o,l):G(t,r,i,n,e,a,o,l)}function W(t,e,r,n,i,a,o){var s,l,c,u,f=!1,h=function(){f=V(t,[s,l,c],[-1,-1,-1],i,a)||f,f=V(t,[c,u,s],[-1,-1,-1],i,a)||f},p=o[0],d=o[1],g=o[2];return p&&(s=O(U([k(e,r-0,n-0)])[0],U([k(e-1,r-0,n-0)])[0],p),l=O(U([k(e,r-0,n-1)])[0],U([k(e-1,r-0,n-1)])[0],p),c=O(U([k(e,r-1,n-1)])[0],U([k(e-1,r-1,n-1)])[0],p),u=O(U([k(e,r-1,n-0)])[0],U([k(e-1,r-1,n-0)])[0],p),h()),d&&(s=O(U([k(e-0,r,n-0)])[0],U([k(e-0,r-1,n-0)])[0],d),l=O(U([k(e-0,r,n-1)])[0],U([k(e-0,r-1,n-1)])[0],d),c=O(U([k(e-1,r,n-1)])[0],U([k(e-1,r-1,n-1)])[0],d),u=O(U([k(e-1,r,n-0)])[0],U([k(e-1,r-1,n-0)])[0],d),h()),g&&(s=O(U([k(e-0,r-0,n)])[0],U([k(e-0,r-0,n-1)])[0],g),l=O(U([k(e-0,r-1,n)])[0],U([k(e-0,r-1,n-1)])[0],g),c=O(U([k(e-1,r-1,n)])[0],U([k(e-1,r-1,n-1)])[0],g),u=O(U([k(e-1,r-0,n)])[0],U([k(e-1,r-0,n-1)])[0],g),h()),f}function X(t,e,r,n,i,a,o,s,l,c,u,f){var h=t;return f?(d&&\"even\"===t&&(h=null),q(h,e,r,n,i,a,o,s,l,c,u)):(d&&\"odd\"===t&&(h=null),q(h,l,s,o,a,i,n,r,e,c,u))}function Z(t,e,r,n,i){for(var a=[],o=0,s=0;sMath.abs(d-M)?[A,d]:[d,M];$(e,T[0],T[1])}}var L=[[Math.min(S,M),Math.max(S,M)],[Math.min(A,E),Math.max(A,E)]];[\"x\",\"y\",\"z\"].forEach((function(e){for(var r=[],n=0;n0&&(u.push(p.id),\"x\"===e?f.push([p.distRatio,0,0]):\"y\"===e?f.push([0,p.distRatio,0]):f.push([0,0,p.distRatio]))}else c=nt(1,\"x\"===e?b-1:\"y\"===e?_-1:w-1);u.length>0&&(r[i]=\"x\"===e?tt(null,u,a,o,f,r[i]):\"y\"===e?et(null,u,a,o,f,r[i]):rt(null,u,a,o,f,r[i]),i++),c.length>0&&(r[i]=\"x\"===e?Z(null,c,a,o,r[i]):\"y\"===e?J(null,c,a,o,r[i]):K(null,c,a,o,r[i]),i++)}var d=t.caps[e];d.show&&d.fill&&(z(d.fill),r[i]=\"x\"===e?Z(null,[0,b-1],a,o,r[i]):\"y\"===e?J(null,[0,_-1],a,o,r[i]):K(null,[0,w-1],a,o,r[i]),i++)}})),0===m&&P(),t._meshX=n,t._meshY=i,t._meshZ=a,t._meshIntensity=o,t._Xs=v,t._Ys=y,t._Zs=x}(),t}e.exports={findNearestOnAxis:l,generateIsoMeshes:h,createIsosurfaceTrace:function(t,e){var r=t.glplot.gl,i=n({gl:r}),a=new c(t,i,e.uid);return i._trace=a,a.update(e),t.glplot.add(i),a}}},{\"../../../stackgl_modules\":1120,\"../../components/colorscale\":378,\"../../lib/gl_format_color\":499,\"../../lib/str2rgbarray\":528,\"../../plots/gl3d/zip3\":609}],865:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../registry\"),a=t(\"./attributes\"),o=t(\"../../components/colorscale/defaults\");function s(t,e,r,n,a){var s=a(\"isomin\"),l=a(\"isomax\");null!=l&&null!=s&&s>l&&(e.isomin=null,e.isomax=null);var c=a(\"x\"),u=a(\"y\"),f=a(\"z\"),h=a(\"value\");c&&c.length&&u&&u.length&&f&&f.length&&h&&h.length?(i.getComponentMethod(\"calendars\",\"handleTraceDefaults\")(t,e,[\"x\",\"y\",\"z\"],n),a(\"valuehoverformat\"),[\"x\",\"y\",\"z\"].forEach((function(t){a(t+\"hoverformat\");var e=\"caps.\"+t;a(e+\".show\")&&a(e+\".fill\");var r=\"slices.\"+t;a(r+\".show\")&&(a(r+\".fill\"),a(r+\".locations\"))})),a(\"spaceframe.show\")&&a(\"spaceframe.fill\"),a(\"surface.show\")&&(a(\"surface.count\"),a(\"surface.fill\"),a(\"surface.pattern\")),a(\"contour.show\")&&(a(\"contour.color\"),a(\"contour.width\")),[\"text\",\"hovertext\",\"hovertemplate\",\"lighting.ambient\",\"lighting.diffuse\",\"lighting.specular\",\"lighting.roughness\",\"lighting.fresnel\",\"lighting.vertexnormalsepsilon\",\"lighting.facenormalsepsilon\",\"lightposition.x\",\"lightposition.y\",\"lightposition.z\",\"flatshading\",\"opacity\"].forEach((function(t){a(t)})),o(t,e,n,a,{prefix:\"\",cLetter:\"c\"}),e._length=null):e.visible=!1}e.exports={supplyDefaults:function(t,e,r,i){s(t,e,r,i,(function(r,i){return n.coerce(t,e,a,r,i)}))},supplyIsoDefaults:s}},{\"../../components/colorscale/defaults\":376,\"../../lib\":503,\"../../registry\":638,\"./attributes\":862}],866:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\").supplyDefaults,calc:t(\"./calc\"),colorbar:{min:\"cmin\",max:\"cmax\"},plot:t(\"./convert\").createIsosurfaceTrace,moduleType:\"trace\",name:\"isosurface\",basePlotModule:t(\"../../plots/gl3d\"),categories:[\"gl3d\",\"showLegend\"],meta:{}}},{\"../../plots/gl3d\":598,\"./attributes\":862,\"./calc\":863,\"./convert\":864,\"./defaults\":865}],867:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/attributes\"),i=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,a=t(\"../../plots/template_attributes\").hovertemplateAttrs,o=t(\"../surface/attributes\"),s=t(\"../../plots/attributes\"),l=t(\"../../lib/extend\").extendFlat;e.exports=l({x:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},y:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},z:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},i:{valType:\"data_array\",editType:\"calc\"},j:{valType:\"data_array\",editType:\"calc\"},k:{valType:\"data_array\",editType:\"calc\"},text:{valType:\"string\",dflt:\"\",arrayOk:!0,editType:\"calc\"},hovertext:{valType:\"string\",dflt:\"\",arrayOk:!0,editType:\"calc\"},hovertemplate:a({editType:\"calc\"}),xhoverformat:i(\"x\"),yhoverformat:i(\"y\"),zhoverformat:i(\"z\"),delaunayaxis:{valType:\"enumerated\",values:[\"x\",\"y\",\"z\"],dflt:\"z\",editType:\"calc\"},alphahull:{valType:\"number\",dflt:-1,editType:\"calc\"},intensity:{valType:\"data_array\",editType:\"calc\"},intensitymode:{valType:\"enumerated\",values:[\"vertex\",\"cell\"],dflt:\"vertex\",editType:\"calc\"},color:{valType:\"color\",editType:\"calc\"},vertexcolor:{valType:\"data_array\",editType:\"calc\"},facecolor:{valType:\"data_array\",editType:\"calc\"},transforms:void 0},n(\"\",{colorAttr:\"`intensity`\",showScaleDflt:!0,editTypeOverride:\"calc\"}),{opacity:o.opacity,flatshading:{valType:\"boolean\",dflt:!1,editType:\"calc\"},contour:{show:l({},o.contours.x.show,{}),color:o.contours.x.color,width:o.contours.x.width,editType:\"calc\"},lightposition:{x:l({},o.lightposition.x,{dflt:1e5}),y:l({},o.lightposition.y,{dflt:1e5}),z:l({},o.lightposition.z,{dflt:0}),editType:\"calc\"},lighting:l({vertexnormalsepsilon:{valType:\"number\",min:0,max:1,dflt:1e-12,editType:\"calc\"},facenormalsepsilon:{valType:\"number\",min:0,max:1,dflt:1e-6,editType:\"calc\"},editType:\"calc\"},o.lighting),hoverinfo:l({},s.hoverinfo,{editType:\"calc\"}),showlegend:l({},s.showlegend,{dflt:!1})})},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/template_attributes\":633,\"../surface/attributes\":1057}],868:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/calc\");e.exports=function(t,e){e.intensity&&n(t,e,{vals:e.intensity,containerStr:\"\",cLetter:\"c\"})}},{\"../../components/colorscale/calc\":374}],869:[function(t,e,r){\"use strict\";var n=t(\"../../../stackgl_modules\").gl_mesh3d,i=t(\"../../../stackgl_modules\").delaunay_triangulate,a=t(\"../../../stackgl_modules\").alpha_shape,o=t(\"../../../stackgl_modules\").convex_hull,s=t(\"../../lib/gl_format_color\").parseColorScale,l=t(\"../../lib/str2rgbarray\"),c=t(\"../../components/colorscale\").extractOpts,u=t(\"../../plots/gl3d/zip3\");function f(t,e,r){this.scene=t,this.uid=r,this.mesh=e,this.name=\"\",this.color=\"#fff\",this.data=null,this.showContour=!1}var h=f.prototype;function p(t){for(var e=[],r=t.length,n=0;n=e-.5)return!1;return!0}h.handlePick=function(t){if(t.object===this.mesh){var e=t.index=t.data.index;t.data._cellCenter?t.traceCoordinate=t.data.dataCoordinate:t.traceCoordinate=[this.data.x[e],this.data.y[e],this.data.z[e]];var r=this.data.hovertext||this.data.text;return Array.isArray(r)&&void 0!==r[e]?t.textLabel=r[e]:r&&(t.textLabel=r),!0}},h.update=function(t){var e=this.scene,r=e.fullSceneLayout;this.data=t;var n,f=t.x.length,h=u(d(r.xaxis,t.x,e.dataScale[0],t.xcalendar),d(r.yaxis,t.y,e.dataScale[1],t.ycalendar),d(r.zaxis,t.z,e.dataScale[2],t.zcalendar));if(t.i&&t.j&&t.k){if(t.i.length!==t.j.length||t.j.length!==t.k.length||!m(t.i,f)||!m(t.j,f)||!m(t.k,f))return;n=u(g(t.i),g(t.j),g(t.k))}else n=0===t.alphahull?o(h):t.alphahull>0?a(t.alphahull,h):function(t,e){for(var r=[\"x\",\"y\",\"z\"].indexOf(t),n=[],a=e.length,o=0;ov):m=A>w,v=A;var M=c(w,T,k,A);M.pos=_,M.yc=(w+A)/2,M.i=b,M.dir=m?\"increasing\":\"decreasing\",M.x=M.pos,M.y=[k,T],y&&(M.orig_p=r[b]),d&&(M.tx=e.text[b]),g&&(M.htx=e.hovertext[b]),x.push(M)}else x.push({pos:_,empty:!0})}return e._extremes[l._id]=a.findExtremes(l,n.concat(h,f),{padded:!0}),x.length&&(x[0].t={labels:{open:i(t,\"open:\")+\" \",high:i(t,\"high:\")+\" \",low:i(t,\"low:\")+\" \",close:i(t,\"close:\")+\" \"}}),x}e.exports={calc:function(t,e){var r=a.getFromId(t,e.xaxis),i=a.getFromId(t,e.yaxis),s=function(t,e,r){var i=r._minDiff;if(!i){var a,s=t._fullData,l=[];for(i=1/0,a=0;a\"+c.labels[x]+n.hoverLabelText(s,b,l.yhoverformat):((y=i.extendFlat({},h)).y0=y.y1=_,y.yLabelVal=b,y.yLabel=c.labels[x]+n.hoverLabelText(s,b,l.yhoverformat),y.name=\"\",f.push(y),m[b]=y)}return f}function h(t,e,r,i){var a=t.cd,o=t.ya,l=a[0].trace,f=a[0].t,h=u(t,e,r,i);if(!h)return[];var p=a[h.index],d=h.index=p.i,g=p.dir;function m(t){return f.labels[t]+n.hoverLabelText(o,l[t][d],l.yhoverformat)}var v=p.hi||l.hoverinfo,y=v.split(\"+\"),x=\"all\"===v,b=x||-1!==y.indexOf(\"y\"),_=x||-1!==y.indexOf(\"text\"),w=b?[m(\"open\"),m(\"high\"),m(\"low\"),m(\"close\")+\" \"+c[g]]:[];return _&&s(p,l,w),h.extraText=w.join(\"
\"),h.y0=h.y1=o.c2p(p.yc,!0),[h]}e.exports={hoverPoints:function(t,e,r,n){return t.cd[0].trace.hoverlabel.split?f(t,e,r,n):h(t,e,r,n)},hoverSplit:f,hoverOnPoints:h}},{\"../../components/color\":366,\"../../components/fx\":406,\"../../constants/delta.js\":473,\"../../lib\":503,\"../../plots/cartesian/axes\":554}],876:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"ohlc\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"cartesian\",\"svg\",\"showLegend\"],meta:{},attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),calc:t(\"./calc\").calc,plot:t(\"./plot\"),style:t(\"./style\"),hoverPoints:t(\"./hover\").hoverPoints,selectPoints:t(\"./select\")}},{\"../../plots/cartesian\":568,\"./attributes\":872,\"./calc\":873,\"./defaults\":874,\"./hover\":875,\"./plot\":878,\"./select\":879,\"./style\":880}],877:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\");e.exports=function(t,e,r,a){var o=r(\"x\"),s=r(\"open\"),l=r(\"high\"),c=r(\"low\"),u=r(\"close\");if(r(\"hoverlabel.split\"),n.getComponentMethod(\"calendars\",\"handleTraceDefaults\")(t,e,[\"x\"],a),s&&l&&c&&u){var f=Math.min(s.length,l.length,c.length,u.length);return o&&(f=Math.min(f,i.minRowLength(o))),e._length=f,f}}},{\"../../lib\":503,\"../../registry\":638}],878:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\");e.exports=function(t,e,r,a){var o=e.yaxis,s=e.xaxis,l=!!s.rangebreaks;i.makeTraceGroups(a,r,\"trace ohlc\").each((function(t){var e=n.select(this),r=t[0],a=r.t;if(!0!==r.trace.visible||a.empty)e.remove();else{var c=a.tickLen,u=e.selectAll(\"path\").data(i.identity);u.enter().append(\"path\"),u.exit().remove(),u.attr(\"d\",(function(t){if(t.empty)return\"M0,0Z\";var e=s.c2p(t.pos-c,!0),r=s.c2p(t.pos+c,!0),n=l?(e+r)/2:s.c2p(t.pos,!0);return\"M\"+e+\",\"+o.c2p(t.o,!0)+\"H\"+n+\"M\"+n+\",\"+o.c2p(t.h,!0)+\"V\"+o.c2p(t.l,!0)+\"M\"+r+\",\"+o.c2p(t.c,!0)+\"H\"+n}))}}))}},{\"../../lib\":503,\"@plotly/d3\":58}],879:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r,n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s=n[0].t.bPos||0;if(!1===e)for(r=0;r=t.length)return!1;if(void 0!==e[t[r]])return!1;e[t[r]]=!0}return!0}(t.map((function(t){return t.displayindex}))))for(e=0;e0;c&&(o=\"array\");var u=r(\"categoryorder\",o);\"array\"===u?(r(\"categoryarray\"),r(\"ticktext\")):(delete t.categoryarray,delete t.ticktext),c||\"array\"!==u||(e.categoryorder=\"trace\")}}e.exports=function(t,e,r,f){function h(r,i){return n.coerce(t,e,l,r,i)}var p=s(t,e,{name:\"dimensions\",handleItemDefaults:u}),d=function(t,e,r,o,s){s(\"line.shape\"),s(\"line.hovertemplate\");var l=s(\"line.color\",o.colorway[0]);if(i(t,\"line\")&&n.isArrayOrTypedArray(l)){if(l.length)return s(\"line.colorscale\"),a(t,e,o,s,{prefix:\"line.\",cLetter:\"c\"}),l.length;e.line.color=r}return 1/0}(t,e,r,f,h);o(e,f,h),Array.isArray(p)&&p.length||(e.visible=!1),c(e,p,\"values\",d),h(\"hoveron\"),h(\"hovertemplate\"),h(\"arrangement\"),h(\"bundlecolors\"),h(\"sortpaths\"),h(\"counts\");var g={family:f.font.family,size:Math.round(f.font.size),color:f.font.color};n.coerceFont(h,\"labelfont\",g);var m={family:f.font.family,size:Math.round(f.font.size/1.2),color:f.font.color};n.coerceFont(h,\"tickfont\",m)}},{\"../../components/colorscale/defaults\":376,\"../../components/colorscale/helpers\":377,\"../../lib\":503,\"../../plots/array_container_defaults\":549,\"../../plots/domain\":584,\"../parcoords/merge_length\":897,\"./attributes\":881}],885:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),calc:t(\"./calc\"),plot:t(\"./plot\"),colorbar:{container:\"line\",min:\"cmin\",max:\"cmax\"},moduleType:\"trace\",name:\"parcats\",basePlotModule:t(\"./base_plot\"),categories:[\"noOpacity\"],meta:{}}},{\"./attributes\":881,\"./base_plot\":882,\"./calc\":883,\"./defaults\":884,\"./plot\":887}],886:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"d3-interpolate\").interpolateNumber,a=t(\"../../plot_api/plot_api\"),o=t(\"../../components/fx\"),s=t(\"../../lib\"),l=s.strTranslate,c=t(\"../../components/drawing\"),u=t(\"tinycolor2\"),f=t(\"../../lib/svg_text_utils\");function h(t,e,r,i){var a=t.map(F.bind(0,e,r)),o=i.selectAll(\"g.parcatslayer\").data([null]);o.enter().append(\"g\").attr(\"class\",\"parcatslayer\").style(\"pointer-events\",\"all\");var u=o.selectAll(\"g.trace.parcats\").data(a,p),h=u.enter().append(\"g\").attr(\"class\",\"trace parcats\");u.attr(\"transform\",(function(t){return l(t.x,t.y)})),h.append(\"g\").attr(\"class\",\"paths\");var y=u.select(\"g.paths\").selectAll(\"path.path\").data((function(t){return t.paths}),p);y.attr(\"fill\",(function(t){return t.model.color}));var x=y.enter().append(\"path\").attr(\"class\",\"path\").attr(\"stroke-opacity\",0).attr(\"fill\",(function(t){return t.model.color})).attr(\"fill-opacity\",0);_(x),y.attr(\"d\",(function(t){return t.svgD})),x.empty()||y.sort(g),y.exit().remove(),y.on(\"mouseover\",m).on(\"mouseout\",v).on(\"click\",b),h.append(\"g\").attr(\"class\",\"dimensions\");var w=u.select(\"g.dimensions\").selectAll(\"g.dimension\").data((function(t){return t.dimensions}),p);w.enter().append(\"g\").attr(\"class\",\"dimension\"),w.attr(\"transform\",(function(t){return l(t.x,0)})),w.exit().remove();var A=w.selectAll(\"g.category\").data((function(t){return t.categories}),p),M=A.enter().append(\"g\").attr(\"class\",\"category\");A.attr(\"transform\",(function(t){return l(0,t.y)})),M.append(\"rect\").attr(\"class\",\"catrect\").attr(\"pointer-events\",\"none\"),A.select(\"rect.catrect\").attr(\"fill\",\"none\").attr(\"width\",(function(t){return t.width})).attr(\"height\",(function(t){return t.height})),T(M);var S=A.selectAll(\"rect.bandrect\").data((function(t){return t.bands}),p);S.each((function(){s.raiseToTop(this)})),S.attr(\"fill\",(function(t){return t.color}));var E=S.enter().append(\"rect\").attr(\"class\",\"bandrect\").attr(\"stroke-opacity\",0).attr(\"fill\",(function(t){return t.color})).attr(\"fill-opacity\",0);S.attr(\"fill\",(function(t){return t.color})).attr(\"width\",(function(t){return t.width})).attr(\"height\",(function(t){return t.height})).attr(\"y\",(function(t){return t.y})).attr(\"cursor\",(function(t){return\"fixed\"===t.parcatsViewModel.arrangement?\"default\":\"perpendicular\"===t.parcatsViewModel.arrangement?\"ns-resize\":\"move\"})),k(E),S.exit().remove(),M.append(\"text\").attr(\"class\",\"catlabel\").attr(\"pointer-events\",\"none\");var z=e._fullLayout.paper_bgcolor;A.select(\"text.catlabel\").attr(\"text-anchor\",(function(t){return d(t)?\"start\":\"end\"})).attr(\"alignment-baseline\",\"middle\").style(\"text-shadow\",f.makeTextShadow(z)).style(\"fill\",\"rgb(0, 0, 0)\").attr(\"x\",(function(t){return d(t)?t.width+5:-5})).attr(\"y\",(function(t){return t.height/2})).text((function(t){return t.model.categoryLabel})).each((function(t){c.font(n.select(this),t.parcatsViewModel.categorylabelfont),f.convertToTspans(n.select(this),e)})),M.append(\"text\").attr(\"class\",\"dimlabel\"),A.select(\"text.dimlabel\").attr(\"text-anchor\",\"middle\").attr(\"alignment-baseline\",\"baseline\").attr(\"cursor\",(function(t){return\"fixed\"===t.parcatsViewModel.arrangement?\"default\":\"ew-resize\"})).attr(\"x\",(function(t){return t.width/2})).attr(\"y\",-5).text((function(t,e){return 0===e?t.parcatsViewModel.model.dimensions[t.model.dimensionInd].dimensionLabel:null})).each((function(t){c.font(n.select(this),t.parcatsViewModel.labelfont)})),A.selectAll(\"rect.bandrect\").on(\"mouseover\",L).on(\"mouseout\",C),A.exit().remove(),w.call(n.behavior.drag().origin((function(t){return{x:t.x,y:0}})).on(\"dragstart\",P).on(\"drag\",I).on(\"dragend\",O)),u.each((function(t){t.traceSelection=n.select(this),t.pathSelection=n.select(this).selectAll(\"g.paths\").selectAll(\"path.path\"),t.dimensionSelection=n.select(this).selectAll(\"g.dimensions\").selectAll(\"g.dimension\")})),u.exit().remove()}function p(t){return t.key}function d(t){var e=t.parcatsViewModel.dimensions.length,r=t.parcatsViewModel.dimensions[e-1].model.dimensionInd;return t.model.dimensionInd===r}function g(t,e){return t.model.rawColor>e.model.rawColor?1:t.model.rawColor\"),L=n.mouse(f)[0];o.loneHover({trace:h,x:b-d.left+g.left,y:_-d.top+g.top,text:E,color:t.model.color,borderColor:\"black\",fontFamily:'Monaco, \"Courier New\", monospace',fontSize:10,fontColor:T,idealAlign:L1&&h.displayInd===f.dimensions.length-1?(i=c.left,a=\"left\"):(i=c.left+c.width,a=\"right\");var g=u.model.count,m=u.model.categoryLabel,v=g/u.parcatsViewModel.model.count,y={countLabel:g,categoryLabel:m,probabilityLabel:v.toFixed(3)},x=[];-1!==u.parcatsViewModel.hoverinfoItems.indexOf(\"count\")&&x.push([\"Count:\",y.countLabel].join(\" \")),-1!==u.parcatsViewModel.hoverinfoItems.indexOf(\"probability\")&&x.push([\"P(\"+y.categoryLabel+\"):\",y.probabilityLabel].join(\" \"));var b=x.join(\"
\");return{trace:p,x:o*(i-e.left),y:s*(d-e.top),text:b,color:\"lightgray\",borderColor:\"black\",fontFamily:'Monaco, \"Courier New\", monospace',fontSize:12,fontColor:\"black\",idealAlign:a,hovertemplate:p.hovertemplate,hovertemplateLabels:y,eventData:[{data:p._input,fullData:p,count:g,category:m,probability:v}]}}function L(t){if(!t.parcatsViewModel.dragDimension&&-1===t.parcatsViewModel.hoverinfoItems.indexOf(\"skip\")){if(n.mouse(this)[1]<-1)return;var e,r=t.parcatsViewModel.graphDiv,i=r._fullLayout,a=i._paperdiv.node().getBoundingClientRect(),l=t.parcatsViewModel.hoveron;if(\"color\"===l?(!function(t){var e=n.select(t).datum(),r=A(e);w(r),r.each((function(){s.raiseToTop(this)})),n.select(t.parentNode).selectAll(\"rect.bandrect\").filter((function(t){return t.color===e.color})).each((function(){s.raiseToTop(this),n.select(this).attr(\"stroke\",\"black\").attr(\"stroke-width\",1.5)}))}(this),S(this,\"plotly_hover\",n.event)):(!function(t){n.select(t.parentNode).selectAll(\"rect.bandrect\").each((function(t){var e=A(t);w(e),e.each((function(){s.raiseToTop(this)}))})),n.select(t.parentNode).select(\"rect.catrect\").attr(\"stroke\",\"black\").attr(\"stroke-width\",2.5)}(this),M(this,\"plotly_hover\",n.event)),-1===t.parcatsViewModel.hoverinfoItems.indexOf(\"none\"))\"category\"===l?e=E(r,a,this):\"color\"===l?e=function(t,e,r){t._fullLayout._calcInverseTransform(t);var i,a,o=t._fullLayout._invScaleX,s=t._fullLayout._invScaleY,l=r.getBoundingClientRect(),c=n.select(r).datum(),f=c.categoryViewModel,h=f.parcatsViewModel,p=h.model.dimensions[f.model.dimensionInd],d=h.trace,g=l.y+l.height/2;h.dimensions.length>1&&p.displayInd===h.dimensions.length-1?(i=l.left,a=\"left\"):(i=l.left+l.width,a=\"right\");var m=f.model.categoryLabel,v=c.parcatsViewModel.model.count,y=0;c.categoryViewModel.bands.forEach((function(t){t.color===c.color&&(y+=t.count)}));var x=f.model.count,b=0;h.pathSelection.each((function(t){t.model.color===c.color&&(b+=t.model.count)}));var _=y/v,w=y/b,T=y/x,k={countLabel:v,categoryLabel:m,probabilityLabel:_.toFixed(3)},A=[];-1!==f.parcatsViewModel.hoverinfoItems.indexOf(\"count\")&&A.push([\"Count:\",k.countLabel].join(\" \")),-1!==f.parcatsViewModel.hoverinfoItems.indexOf(\"probability\")&&(A.push(\"P(color \\u2229 \"+m+\"): \"+k.probabilityLabel),A.push(\"P(\"+m+\" | color): \"+w.toFixed(3)),A.push(\"P(color | \"+m+\"): \"+T.toFixed(3)));var M=A.join(\"
\"),S=u.mostReadable(c.color,[\"black\",\"white\"]);return{trace:d,x:o*(i-e.left),y:s*(g-e.top),text:M,color:c.color,borderColor:\"black\",fontFamily:'Monaco, \"Courier New\", monospace',fontColor:S,fontSize:10,idealAlign:a,hovertemplate:d.hovertemplate,hovertemplateLabels:k,eventData:[{data:d._input,fullData:d,category:m,count:v,probability:_,categorycount:x,colorcount:b,bandcolorcount:y}]}}(r,a,this):\"dimension\"===l&&(e=function(t,e,r){var i=[];return n.select(r.parentNode.parentNode).selectAll(\"g.category\").select(\"rect.catrect\").each((function(){i.push(E(t,e,this))})),i}(r,a,this)),e&&o.loneHover(e,{container:i._hoverlayer.node(),outerContainer:i._paper.node(),gd:r})}}function C(t){var e=t.parcatsViewModel;if(!e.dragDimension&&(_(e.pathSelection),T(e.dimensionSelection.selectAll(\"g.category\")),k(e.dimensionSelection.selectAll(\"g.category\").selectAll(\"rect.bandrect\")),o.loneUnhover(e.graphDiv._fullLayout._hoverlayer.node()),e.pathSelection.sort(g),-1===e.hoverinfoItems.indexOf(\"skip\"))){\"color\"===t.parcatsViewModel.hoveron?S(this,\"plotly_unhover\",n.event):M(this,\"plotly_unhover\",n.event)}}function P(t){\"fixed\"!==t.parcatsViewModel.arrangement&&(t.dragDimensionDisplayInd=t.model.displayInd,t.initialDragDimensionDisplayInds=t.parcatsViewModel.model.dimensions.map((function(t){return t.displayInd})),t.dragHasMoved=!1,t.dragCategoryDisplayInd=null,n.select(this).selectAll(\"g.category\").select(\"rect.catrect\").each((function(e){var r=n.mouse(this)[0],i=n.mouse(this)[1];-2<=r&&r<=e.width+2&&-2<=i&&i<=e.height+2&&(t.dragCategoryDisplayInd=e.model.displayInd,t.initialDragCategoryDisplayInds=t.model.categories.map((function(t){return t.displayInd})),e.model.dragY=e.y,s.raiseToTop(this.parentNode),n.select(this.parentNode).selectAll(\"rect.bandrect\").each((function(e){e.yf.y+f.height/2&&(o.model.displayInd=f.model.displayInd,f.model.displayInd=l),t.dragCategoryDisplayInd=o.model.displayInd}if(null===t.dragCategoryDisplayInd||\"freeform\"===t.parcatsViewModel.arrangement){a.model.dragX=n.event.x;var h=t.parcatsViewModel.dimensions[r],p=t.parcatsViewModel.dimensions[i];void 0!==h&&a.model.dragXp.x&&(a.model.displayInd=p.model.displayInd,p.model.displayInd=t.dragDimensionDisplayInd),t.dragDimensionDisplayInd=a.model.displayInd}j(t.parcatsViewModel),N(t.parcatsViewModel),R(t.parcatsViewModel),D(t.parcatsViewModel)}}function O(t){if(\"fixed\"!==t.parcatsViewModel.arrangement&&null!==t.dragDimensionDisplayInd){n.select(this).selectAll(\"text\").attr(\"font-weight\",\"normal\");var e={},r=z(t.parcatsViewModel),i=t.parcatsViewModel.model.dimensions.map((function(t){return t.displayInd})),o=t.initialDragDimensionDisplayInds.some((function(t,e){return t!==i[e]}));o&&i.forEach((function(r,n){var i=t.parcatsViewModel.model.dimensions[n].containerInd;e[\"dimensions[\"+i+\"].displayindex\"]=r}));var s=!1;if(null!==t.dragCategoryDisplayInd){var l=t.model.categories.map((function(t){return t.displayInd}));if(s=t.initialDragCategoryDisplayInds.some((function(t,e){return t!==l[e]}))){var c=t.model.categories.slice().sort((function(t,e){return t.displayInd-e.displayInd})),u=c.map((function(t){return t.categoryValue})),f=c.map((function(t){return t.categoryLabel}));e[\"dimensions[\"+t.model.containerInd+\"].categoryarray\"]=[u],e[\"dimensions[\"+t.model.containerInd+\"].ticktext\"]=[f],e[\"dimensions[\"+t.model.containerInd+\"].categoryorder\"]=\"array\"}}if(-1===t.parcatsViewModel.hoverinfoItems.indexOf(\"skip\")&&!t.dragHasMoved&&t.potentialClickBand&&(\"color\"===t.parcatsViewModel.hoveron?S(t.potentialClickBand,\"plotly_click\",n.event.sourceEvent):M(t.potentialClickBand,\"plotly_click\",n.event.sourceEvent)),t.model.dragX=null,null!==t.dragCategoryDisplayInd)t.parcatsViewModel.dimensions[t.dragDimensionDisplayInd].categories[t.dragCategoryDisplayInd].model.dragY=null,t.dragCategoryDisplayInd=null;t.dragDimensionDisplayInd=null,t.parcatsViewModel.dragDimension=null,t.dragHasMoved=null,t.potentialClickBand=null,j(t.parcatsViewModel),N(t.parcatsViewModel),n.transition().duration(300).ease(\"cubic-in-out\").each((function(){R(t.parcatsViewModel,!0),D(t.parcatsViewModel,!0)})).each(\"end\",(function(){(o||s)&&a.restyle(t.parcatsViewModel.graphDiv,e,[r])}))}}function z(t){for(var e,r=t.graphDiv._fullData,n=0;n=0;s--)u+=\"C\"+c[s]+\",\"+(e[s+1]+n)+\" \"+l[s]+\",\"+(e[s]+n)+\" \"+(t[s]+r[s])+\",\"+(e[s]+n),u+=\"l-\"+r[s]+\",0 \";return u+=\"Z\"}function N(t){var e=t.dimensions,r=t.model,n=e.map((function(t){return t.categories.map((function(t){return t.y}))})),i=t.model.dimensions.map((function(t){return t.categories.map((function(t){return t.displayInd}))})),a=t.model.dimensions.map((function(t){return t.displayInd})),o=t.dimensions.map((function(t){return t.model.dimensionInd})),s=e.map((function(t){return t.x})),l=e.map((function(t){return t.width})),c=[];for(var u in r.paths)r.paths.hasOwnProperty(u)&&c.push(r.paths[u]);function f(t){var e=t.categoryInds.map((function(t,e){return i[e][t]}));return o.map((function(t){return e[t]}))}c.sort((function(e,r){var n=f(e),i=f(r);return\"backward\"===t.sortpaths&&(n.reverse(),i.reverse()),n.push(e.valueInds[0]),i.push(r.valueInds[0]),t.bundlecolors&&(n.unshift(e.rawColor),i.unshift(r.rawColor)),ni?1:0}));for(var h=new Array(c.length),p=e[0].model.count,d=e[0].categories.map((function(t){return t.height})).reduce((function(t,e){return t+e})),g=0;g0?d*(v.count/p):0;for(var y,x=new Array(n.length),b=0;b1?(t.width-80-16)/(n-1):0)*i;var a,o,s,l,c,u=[],f=t.model.maxCats,h=e.categories.length,p=e.count,d=t.height-8*(f-1),g=8*(f-h)/2,m=e.categories.map((function(t){return{displayInd:t.displayInd,categoryInd:t.categoryInd}}));for(m.sort((function(t,e){return t.displayInd-e.displayInd})),c=0;c0?o.count/p*d:0,s={key:o.valueInds[0],model:o,width:16,height:a,y:null!==o.dragY?o.dragY:g,bands:[],parcatsViewModel:t},g=g+a+8,u.push(s);return{key:e.dimensionInd,x:null!==e.dragX?e.dragX:r,y:0,width:16,model:e,categories:u,parcatsViewModel:t,dragCategoryDisplayInd:null,dragDimensionDisplayInd:null,initialDragDimensionDisplayInds:null,initialDragCategoryDisplayInds:null,dragHasMoved:null,potentialClickBand:null}}e.exports=function(t,e,r,n){h(r,t,n,e)}},{\"../../components/drawing\":388,\"../../components/fx\":406,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../../plot_api/plot_api\":540,\"@plotly/d3\":58,\"d3-interpolate\":116,tinycolor2:312}],887:[function(t,e,r){\"use strict\";var n=t(\"./parcats\");e.exports=function(t,e,r,i){var a=t._fullLayout,o=a._paper,s=a._size;n(t,o,e,{width:s.w,height:s.h,margin:{t:s.t,r:s.r,b:s.b,l:s.l}},r,i)}},{\"./parcats\":886}],888:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/attributes\"),i=t(\"../../plots/cartesian/layout_attributes\"),a=t(\"../../plots/font_attributes\"),o=t(\"../../plots/domain\").attributes,s=t(\"../../lib/extend\").extendFlat,l=t(\"../../plot_api/plot_template\").templatedArray;e.exports={domain:o({name:\"parcoords\",trace:!0,editType:\"plot\"}),labelangle:{valType:\"angle\",dflt:0,editType:\"plot\"},labelside:{valType:\"enumerated\",values:[\"top\",\"bottom\"],dflt:\"top\",editType:\"plot\"},labelfont:a({editType:\"plot\"}),tickfont:a({editType:\"plot\"}),rangefont:a({editType:\"plot\"}),dimensions:l(\"dimension\",{label:{valType:\"string\",editType:\"plot\"},tickvals:s({},i.tickvals,{editType:\"plot\"}),ticktext:s({},i.ticktext,{editType:\"plot\"}),tickformat:s({},i.tickformat,{editType:\"plot\"}),visible:{valType:\"boolean\",dflt:!0,editType:\"plot\"},range:{valType:\"info_array\",items:[{valType:\"number\",editType:\"plot\"},{valType:\"number\",editType:\"plot\"}],editType:\"plot\"},constraintrange:{valType:\"info_array\",freeLength:!0,dimensions:\"1-2\",items:[{valType:\"any\",editType:\"plot\"},{valType:\"any\",editType:\"plot\"}],editType:\"plot\"},multiselect:{valType:\"boolean\",dflt:!0,editType:\"plot\"},values:{valType:\"data_array\",editType:\"calc\"},editType:\"calc\"}),line:s({editType:\"calc\"},n(\"line\",{colorscaleDflt:\"Viridis\",autoColorDflt:!1,editTypeOverride:\"calc\"}))}},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plot_api/plot_template\":543,\"../../plots/cartesian/layout_attributes\":569,\"../../plots/domain\":584,\"../../plots/font_attributes\":585}],889:[function(t,e,r){\"use strict\";var n=t(\"./constants\"),i=t(\"@plotly/d3\"),a=t(\"../../lib/gup\").keyFun,o=t(\"../../lib/gup\").repeat,s=t(\"../../lib\").sorterAsc,l=t(\"../../lib\").strTranslate,c=n.bar.snapRatio;function u(t,e){return t*(1-c)+e*c}var f=n.bar.snapClose;function h(t,e){return t*(1-f)+e*f}function p(t,e,r,n){if(function(t,e){for(var r=0;r=e[r][0]&&t<=e[r][1])return!0;return!1}(r,n))return r;var i=t?-1:1,a=0,o=e.length-1;if(i<0){var s=a;a=o,o=s}for(var l=e[a],c=l,f=a;i*fe){h=r;break}}if(a=u,isNaN(a)&&(a=isNaN(f)||isNaN(h)?isNaN(f)?h:f:e-c[f][1]t[1]+r||e=.9*t[1]+.1*t[0]?\"n\":e<=.9*t[0]+.1*t[1]?\"s\":\"ns\"}(d,e);g&&(o.interval=l[a],o.intervalPix=d,o.region=g)}}if(t.ordinal&&!o.region){var m=t.unitTickvals,y=t.unitToPaddedPx.invert(e);for(r=0;r=x[0]&&y<=x[1]){o.clickableOrdinalRange=x;break}}}return o}function w(t,e){i.event.sourceEvent.stopPropagation();var r=e.height-i.mouse(t)[1]-2*n.verticalPadding,a=e.brush.svgBrush;a.wasDragged=!0,a._dragging=!0,a.grabbingBar?a.newExtent=[r-a.grabPoint,r+a.barLength-a.grabPoint].map(e.unitToPaddedPx.invert):a.newExtent=[a.startExtent,e.unitToPaddedPx.invert(r)].sort(s),e.brush.filterSpecified=!0,a.extent=a.stayingIntervals.concat([a.newExtent]),a.brushCallback(e),b(t.parentNode)}function T(t,e){var r=_(e,e.height-i.mouse(t)[1]-2*n.verticalPadding),a=\"crosshair\";r.clickableOrdinalRange?a=\"pointer\":r.region&&(a=r.region+\"-resize\"),i.select(document.body).style(\"cursor\",a)}function k(t){t.on(\"mousemove\",(function(t){i.event.preventDefault(),t.parent.inBrushDrag||T(this,t)})).on(\"mouseleave\",(function(t){t.parent.inBrushDrag||y()})).call(i.behavior.drag().on(\"dragstart\",(function(t){!function(t,e){i.event.sourceEvent.stopPropagation();var r=e.height-i.mouse(t)[1]-2*n.verticalPadding,a=e.unitToPaddedPx.invert(r),o=e.brush,s=_(e,r),l=s.interval,c=o.svgBrush;if(c.wasDragged=!1,c.grabbingBar=\"ns\"===s.region,c.grabbingBar){var u=l.map(e.unitToPaddedPx);c.grabPoint=r-u[0]-n.verticalPadding,c.barLength=u[1]-u[0]}c.clickableOrdinalRange=s.clickableOrdinalRange,c.stayingIntervals=e.multiselect&&o.filterSpecified?o.filter.getConsolidated():[],l&&(c.stayingIntervals=c.stayingIntervals.filter((function(t){return t[0]!==l[0]&&t[1]!==l[1]}))),c.startExtent=s.region?l[\"s\"===s.region?1:0]:a,e.parent.inBrushDrag=!0,c.brushStartCallback()}(this,t)})).on(\"drag\",(function(t){w(this,t)})).on(\"dragend\",(function(t){!function(t,e){var r=e.brush,n=r.filter,a=r.svgBrush;a._dragging||(T(t,e),w(t,e),e.brush.svgBrush.wasDragged=!1),a._dragging=!1,i.event.sourceEvent.stopPropagation();var o=a.grabbingBar;if(a.grabbingBar=!1,a.grabLocation=void 0,e.parent.inBrushDrag=!1,y(),!a.wasDragged)return a.wasDragged=void 0,a.clickableOrdinalRange?r.filterSpecified&&e.multiselect?a.extent.push(a.clickableOrdinalRange):(a.extent=[a.clickableOrdinalRange],r.filterSpecified=!0):o?(a.extent=a.stayingIntervals,0===a.extent.length&&M(r)):M(r),a.brushCallback(e),b(t.parentNode),void a.brushEndCallback(r.filterSpecified?n.getConsolidated():[]);var s=function(){n.set(n.getConsolidated())};if(e.ordinal){var l=e.unitTickvals;l[l.length-1]a.newExtent[0];a.extent=a.stayingIntervals.concat(c?[a.newExtent]:[]),a.extent.length||M(r),a.brushCallback(e),c?b(t.parentNode,s):(s(),b(t.parentNode))}else s();a.brushEndCallback(r.filterSpecified?n.getConsolidated():[])}(this,t)})))}function A(t,e){return t[0]-e[0]}function M(t){t.filterSpecified=!1,t.svgBrush.extent=[[-1/0,1/0]]}function S(t){for(var e,r=t.slice(),n=[],i=r.shift();i;){for(e=i.slice();(i=r.shift())&&i[0]<=e[1];)e[1]=Math.max(e[1],i[1]);n.push(e)}return 1===n.length&&n[0][0]>n[0][1]&&(n=[]),n}e.exports={makeBrush:function(t,e,r,n,i,a){var o,l=function(){var t,e,r=[];return{set:function(n){1===(r=n.map((function(t){return t.slice().sort(s)})).sort(A)).length&&r[0][0]===-1/0&&r[0][1]===1/0&&(r=[[0,-1]]),t=S(r),e=r.reduce((function(t,e){return[Math.min(t[0],e[0]),Math.max(t[1],e[1])]}),[1/0,-1/0])},get:function(){return r.slice()},getConsolidated:function(){return t},getBounds:function(){return e}}}();return l.set(r),{filter:l,filterSpecified:e,svgBrush:{extent:[],brushStartCallback:n,brushCallback:(o=i,function(t){var e=t.brush,r=function(t){return t.svgBrush.extent.map((function(t){return t.slice()}))}(e).slice();e.filter.set(r),o()}),brushEndCallback:a}}},ensureAxisBrush:function(t,e){var r=t.selectAll(\".\"+n.cn.axisBrush).data(o,a);r.enter().append(\"g\").classed(n.cn.axisBrush,!0),function(t,e){var r=t.selectAll(\".background\").data(o);r.enter().append(\"rect\").classed(\"background\",!0).call(d).call(g).style(\"pointer-events\",\"auto\").attr(\"transform\",l(0,n.verticalPadding)),r.call(k).attr(\"height\",(function(t){return t.height-n.verticalPadding}));var i=t.selectAll(\".highlight-shadow\").data(o);i.enter().append(\"line\").classed(\"highlight-shadow\",!0).attr(\"x\",-n.bar.width/2).attr(\"stroke-width\",n.bar.width+n.bar.strokeWidth).attr(\"stroke\",e).attr(\"opacity\",n.bar.strokeOpacity).attr(\"stroke-linecap\",\"butt\"),i.attr(\"y1\",(function(t){return t.height})).call(x);var a=t.selectAll(\".highlight\").data(o);a.enter().append(\"line\").classed(\"highlight\",!0).attr(\"x\",-n.bar.width/2).attr(\"stroke-width\",n.bar.width-n.bar.strokeWidth).attr(\"stroke\",n.bar.fillColor).attr(\"opacity\",n.bar.fillOpacity).attr(\"stroke-linecap\",\"butt\"),a.attr(\"y1\",(function(t){return t.height})).call(x)}(r,e)},cleanRanges:function(t,e){if(Array.isArray(t[0])?(t=t.map((function(t){return t.sort(s)})),t=e.multiselect?S(t.sort(A)):[t[0]]):t=[t.sort(s)],e.tickvals){var r=e.tickvals.slice().sort(s);if(!(t=t.map((function(t){var e=[p(0,r,t[0],[]),p(1,r,t[1],[])];if(e[1]>e[0])return e})).filter((function(t){return t}))).length)return}return t.length>1?t:t[0]}}},{\"../../lib\":503,\"../../lib/gup\":500,\"./constants\":892,\"@plotly/d3\":58}],890:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../plots/get_data\").getModuleCalcData,a=t(\"./plot\"),o=t(\"../../constants/xmlns_namespaces\");r.name=\"parcoords\",r.plot=function(t){var e=i(t.calcdata,\"parcoords\")[0];e.length&&a(t,e)},r.clean=function(t,e,r,n){var i=n._has&&n._has(\"parcoords\"),a=e._has&&e._has(\"parcoords\");i&&!a&&(n._paperdiv.selectAll(\".parcoords\").remove(),n._glimages.selectAll(\"*\").remove())},r.toSVG=function(t){var e=t._fullLayout._glimages,r=n.select(t).selectAll(\".svg-container\");r.filter((function(t,e){return e===r.size()-1})).selectAll(\".gl-canvas-context, .gl-canvas-focus\").each((function(){var t=this.toDataURL(\"image/png\");e.append(\"svg:image\").attr({xmlns:o.svg,\"xlink:href\":t,preserveAspectRatio:\"none\",x:0,y:0,width:this.style.width,height:this.style.height})})),window.setTimeout((function(){n.selectAll(\"#filterBarPattern\").attr(\"id\",\"filterBarPattern\")}),60)}},{\"../../constants/xmlns_namespaces\":480,\"../../plots/get_data\":593,\"./plot\":899,\"@plotly/d3\":58}],891:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").isArrayOrTypedArray,i=t(\"../../components/colorscale\"),a=t(\"../../lib/gup\").wrap;e.exports=function(t,e){var r,o;return i.hasColorscale(e,\"line\")&&n(e.line.color)?(r=e.line.color,o=i.extractOpts(e.line).colorscale,i.calc(t,e,{vals:r,containerStr:\"line\",cLetter:\"c\"})):(r=function(t){for(var e=new Array(t),r=0;rf&&(n.log(\"parcoords traces support up to \"+f+\" dimensions at the moment\"),d.splice(f));var g=s(t,e,{name:\"dimensions\",layout:l,handleItemDefaults:p}),m=function(t,e,r,o,s){var l=s(\"line.color\",r);if(i(t,\"line\")&&n.isArrayOrTypedArray(l)){if(l.length)return s(\"line.colorscale\"),a(t,e,o,s,{prefix:\"line.\",cLetter:\"c\"}),l.length;e.line.color=r}return 1/0}(t,e,r,l,u);o(e,l,u),Array.isArray(g)&&g.length||(e.visible=!1),h(e,g,\"values\",m);var v={family:l.font.family,size:Math.round(l.font.size/1.2),color:l.font.color};n.coerceFont(u,\"labelfont\",v),n.coerceFont(u,\"tickfont\",v),n.coerceFont(u,\"rangefont\",v),u(\"labelangle\"),u(\"labelside\")}},{\"../../components/colorscale/defaults\":376,\"../../components/colorscale/helpers\":377,\"../../lib\":503,\"../../plots/array_container_defaults\":549,\"../../plots/cartesian/axes\":554,\"../../plots/domain\":584,\"./attributes\":888,\"./axisbrush\":889,\"./constants\":892,\"./merge_length\":897}],894:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").isTypedArray;r.convertTypedArray=function(t){return n(t)?Array.prototype.slice.call(t):t},r.isOrdinal=function(t){return!!t.tickvals},r.isVisible=function(t){return t.visible||!(\"visible\"in t)}},{\"../../lib\":503}],895:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),calc:t(\"./calc\"),plot:t(\"./plot\"),colorbar:{container:\"line\",min:\"cmin\",max:\"cmax\"},moduleType:\"trace\",name:\"parcoords\",basePlotModule:t(\"./base_plot\"),categories:[\"gl\",\"regl\",\"noOpacity\",\"noHover\"],meta:{}}},{\"./attributes\":888,\"./base_plot\":890,\"./calc\":891,\"./defaults\":893,\"./plot\":899}],896:[function(t,e,r){\"use strict\";var n=t(\"glslify\"),i=n([\"precision highp float;\\n#define GLSLIFY 1\\n\\nvarying vec4 fragColor;\\n\\nattribute vec4 p01_04, p05_08, p09_12, p13_16,\\n p17_20, p21_24, p25_28, p29_32,\\n p33_36, p37_40, p41_44, p45_48,\\n p49_52, p53_56, p57_60, colors;\\n\\nuniform mat4 dim0A, dim1A, dim0B, dim1B, dim0C, dim1C, dim0D, dim1D,\\n loA, hiA, loB, hiB, loC, hiC, loD, hiD;\\n\\nuniform vec2 resolution, viewBoxPos, viewBoxSize;\\nuniform float maskHeight;\\nuniform float drwLayer; // 0: context, 1: focus, 2: pick\\nuniform vec4 contextColor;\\nuniform sampler2D maskTexture, palette;\\n\\nbool isPick = (drwLayer > 1.5);\\nbool isContext = (drwLayer < 0.5);\\n\\nconst vec4 ZEROS = vec4(0.0, 0.0, 0.0, 0.0);\\nconst vec4 UNITS = vec4(1.0, 1.0, 1.0, 1.0);\\n\\nfloat val(mat4 p, mat4 v) {\\n return dot(matrixCompMult(p, v) * UNITS, UNITS);\\n}\\n\\nfloat axisY(float ratio, mat4 A, mat4 B, mat4 C, mat4 D) {\\n float y1 = val(A, dim0A) + val(B, dim0B) + val(C, dim0C) + val(D, dim0D);\\n float y2 = val(A, dim1A) + val(B, dim1B) + val(C, dim1C) + val(D, dim1D);\\n return y1 * (1.0 - ratio) + y2 * ratio;\\n}\\n\\nint iMod(int a, int b) {\\n return a - b * (a / b);\\n}\\n\\nbool fOutside(float p, float lo, float hi) {\\n return (lo < hi) && (lo > p || p > hi);\\n}\\n\\nbool vOutside(vec4 p, vec4 lo, vec4 hi) {\\n return (\\n fOutside(p[0], lo[0], hi[0]) ||\\n fOutside(p[1], lo[1], hi[1]) ||\\n fOutside(p[2], lo[2], hi[2]) ||\\n fOutside(p[3], lo[3], hi[3])\\n );\\n}\\n\\nbool mOutside(mat4 p, mat4 lo, mat4 hi) {\\n return (\\n vOutside(p[0], lo[0], hi[0]) ||\\n vOutside(p[1], lo[1], hi[1]) ||\\n vOutside(p[2], lo[2], hi[2]) ||\\n vOutside(p[3], lo[3], hi[3])\\n );\\n}\\n\\nbool outsideBoundingBox(mat4 A, mat4 B, mat4 C, mat4 D) {\\n return mOutside(A, loA, hiA) ||\\n mOutside(B, loB, hiB) ||\\n mOutside(C, loC, hiC) ||\\n mOutside(D, loD, hiD);\\n}\\n\\nbool outsideRasterMask(mat4 A, mat4 B, mat4 C, mat4 D) {\\n mat4 pnts[4];\\n pnts[0] = A;\\n pnts[1] = B;\\n pnts[2] = C;\\n pnts[3] = D;\\n\\n for(int i = 0; i < 4; ++i) {\\n for(int j = 0; j < 4; ++j) {\\n for(int k = 0; k < 4; ++k) {\\n if(0 == iMod(\\n int(255.0 * texture2D(maskTexture,\\n vec2(\\n (float(i * 2 + j / 2) + 0.5) / 8.0,\\n (pnts[i][j][k] * (maskHeight - 1.0) + 1.0) / maskHeight\\n ))[3]\\n ) / int(pow(2.0, float(iMod(j * 4 + k, 8)))),\\n 2\\n )) return true;\\n }\\n }\\n }\\n return false;\\n}\\n\\nvec4 position(bool isContext, float v, mat4 A, mat4 B, mat4 C, mat4 D) {\\n float x = 0.5 * sign(v) + 0.5;\\n float y = axisY(x, A, B, C, D);\\n float z = 1.0 - abs(v);\\n\\n z += isContext ? 0.0 : 2.0 * float(\\n outsideBoundingBox(A, B, C, D) ||\\n outsideRasterMask(A, B, C, D)\\n );\\n\\n return vec4(\\n 2.0 * (vec2(x, y) * viewBoxSize + viewBoxPos) / resolution - 1.0,\\n z,\\n 1.0\\n );\\n}\\n\\nvoid main() {\\n mat4 A = mat4(p01_04, p05_08, p09_12, p13_16);\\n mat4 B = mat4(p17_20, p21_24, p25_28, p29_32);\\n mat4 C = mat4(p33_36, p37_40, p41_44, p45_48);\\n mat4 D = mat4(p49_52, p53_56, p57_60, ZEROS);\\n\\n float v = colors[3];\\n\\n gl_Position = position(isContext, v, A, B, C, D);\\n\\n fragColor =\\n isContext ? vec4(contextColor) :\\n isPick ? vec4(colors.rgb, 1.0) : texture2D(palette, vec2(abs(v), 0.5));\\n}\\n\"]),a=n([\"precision highp float;\\n#define GLSLIFY 1\\n\\nvarying vec4 fragColor;\\n\\nvoid main() {\\n gl_FragColor = fragColor;\\n}\\n\"]),o=t(\"./constants\").maxDimensionCount,s=t(\"../../lib\"),l=new Uint8Array(4),c=new Uint8Array(4),u={shape:[256,1],format:\"rgba\",type:\"uint8\",mag:\"nearest\",min:\"nearest\"};function f(t,e,r,n,i){var a=t._gl;a.enable(a.SCISSOR_TEST),a.scissor(e,r,n,i),t.clear({color:[0,0,0,0],depth:1})}function h(t,e,r,n,i,a){var o=a.key;r.drawCompleted||(!function(t){t.read({x:0,y:0,width:1,height:1,data:l})}(t),r.drawCompleted=!0),function s(l){var c=Math.min(n,i-l*n);0===l&&(window.cancelAnimationFrame(r.currentRafs[o]),delete r.currentRafs[o],f(t,a.scissorX,a.scissorY,a.scissorWidth,a.viewBoxSize[1])),r.clearOnly||(a.count=2*c,a.offset=2*l*n,e(a),l*n+c>>8*e)%256/255}function g(t,e,r){for(var n=new Array(8*e),i=0,a=0;au&&(u=t[i].dim1.canvasX,o=i);0===s&&f(T,0,0,r.canvasWidth,r.canvasHeight);var p=function(t){var e,r,n,i=[[],[]];for(n=0;n<64;n++){var a=!t&&no._length&&(S=S.slice(0,o._length));var L,C=o.tickvals;function P(t,e){return{val:t,text:L[e]}}function I(t,e){return t.val-e.val}if(Array.isArray(C)&&C.length){L=o.ticktext,Array.isArray(L)&&L.length?L.length>C.length?L=L.slice(0,C.length):C.length>L.length&&(C=C.slice(0,L.length)):L=C.map(a(o.tickformat));for(var O=1;O=r||l>=i)return;var c=t.lineLayer.readPixel(s,i-1-l),u=0!==c[3],f=u?c[2]+256*(c[1]+256*c[0]):null,h={x:s,y:l,clientX:e.clientX,clientY:e.clientY,dataIndex:t.model.key,curveNumber:f};f!==B&&(u?a.hover(h):a.unhover&&a.unhover(h),B=f)}})),F.style(\"opacity\",(function(t){return t.pick?0:1})),h.style(\"background\",\"rgba(255, 255, 255, 0)\");var N=h.selectAll(\".\"+y.cn.parcoords).data(R,d);N.exit().remove(),N.enter().append(\"g\").classed(y.cn.parcoords,!0).style(\"shape-rendering\",\"crispEdges\").style(\"pointer-events\",\"none\"),N.attr(\"transform\",(function(t){return c(t.model.translateX,t.model.translateY)}));var j=N.selectAll(\".\"+y.cn.parcoordsControlView).data(g,d);j.enter().append(\"g\").classed(y.cn.parcoordsControlView,!0),j.attr(\"transform\",(function(t){return c(t.model.pad.l,t.model.pad.t)}));var U=j.selectAll(\".\"+y.cn.yAxis).data((function(t){return t.dimensions}),d);U.enter().append(\"g\").classed(y.cn.yAxis,!0),j.each((function(t){O(U,t,_)})),F.each((function(t){if(t.viewModel){!t.lineLayer||a?t.lineLayer=b(this,t):t.lineLayer.update(t),(t.key||0===t.key)&&(t.viewModel[t.key]=t.lineLayer);var e=!t.context||a;t.lineLayer.render(t.viewModel.panels,e)}})),U.attr(\"transform\",(function(t){return c(t.xScale(t.xIndex),0)})),U.call(n.behavior.drag().origin((function(t){return t})).on(\"drag\",(function(t){var e=t.parent;S.linePickActive(!1),t.x=Math.max(-y.overdrag,Math.min(t.model.width+y.overdrag,n.event.x)),t.canvasX=t.x*t.model.canvasPixelRatio,U.sort((function(t,e){return t.x-e.x})).each((function(e,r){e.xIndex=r,e.x=t===e?e.x:e.xScale(e.xIndex),e.canvasX=e.x*e.model.canvasPixelRatio})),O(U,e,_),U.filter((function(e){return 0!==Math.abs(t.xIndex-e.xIndex)})).attr(\"transform\",(function(t){return c(t.xScale(t.xIndex),0)})),n.select(this).attr(\"transform\",c(t.x,0)),U.each((function(r,n,i){i===t.parent.key&&(e.dimensions[n]=r)})),e.contextLayer&&e.contextLayer.render(e.panels,!1,!E(e)),e.focusLayer.render&&e.focusLayer.render(e.panels)})).on(\"dragend\",(function(t){var e=t.parent;t.x=t.xScale(t.xIndex),t.canvasX=t.x*t.model.canvasPixelRatio,O(U,e,_),n.select(this).attr(\"transform\",(function(t){return c(t.x,0)})),e.contextLayer&&e.contextLayer.render(e.panels,!1,!E(e)),e.focusLayer&&e.focusLayer.render(e.panels),e.pickLayer&&e.pickLayer.render(e.panels,!0),S.linePickActive(!0),a&&a.axesMoved&&a.axesMoved(e.key,e.dimensions.map((function(t){return t.crossfilterDimensionIndex})))}))),U.exit().remove();var V=U.selectAll(\".\"+y.cn.axisOverlays).data(g,d);V.enter().append(\"g\").classed(y.cn.axisOverlays,!0),V.selectAll(\".\"+y.cn.axis).remove();var H=V.selectAll(\".\"+y.cn.axis).data(g,d);H.enter().append(\"g\").classed(y.cn.axis,!0),H.each((function(t){var e=t.model.height/t.model.tickDistance,r=t.domainScale,i=r.domain();n.select(this).call(n.svg.axis().orient(\"left\").tickSize(4).outerTickSize(2).ticks(e,t.tickFormat).tickValues(t.ordinal?i:null).tickFormat((function(e){return v.isOrdinal(t)?e:z(t.model.dimensions[t.visibleIndex],e)})).scale(r)),f.font(H.selectAll(\"text\"),t.model.tickFont)})),H.selectAll(\".domain, .tick>line\").attr(\"fill\",\"none\").attr(\"stroke\",\"black\").attr(\"stroke-opacity\",.25).attr(\"stroke-width\",\"1px\"),H.selectAll(\"text\").style(\"text-shadow\",u.makeTextShadow(T)).style(\"cursor\",\"default\");var q=V.selectAll(\".\"+y.cn.axisHeading).data(g,d);q.enter().append(\"g\").classed(y.cn.axisHeading,!0);var G=q.selectAll(\".\"+y.cn.axisTitle).data(g,d);G.enter().append(\"text\").classed(y.cn.axisTitle,!0).attr(\"text-anchor\",\"middle\").style(\"cursor\",\"ew-resize\").style(\"pointer-events\",\"auto\"),G.text((function(t){return t.label})).each((function(e){var r=n.select(this);f.font(r,e.model.labelFont),u.convertToTspans(r,t)})).attr(\"transform\",(function(t){var e=I(t.model.labelAngle,t.model.labelSide),r=y.axisTitleOffset;return(e.dir>0?\"\":c(0,2*r+t.model.height))+l(e.degrees)+c(-r*e.dx,-r*e.dy)})).attr(\"text-anchor\",(function(t){var e=I(t.model.labelAngle,t.model.labelSide);return 2*Math.abs(e.dx)>Math.abs(e.dy)?e.dir*e.dx<0?\"start\":\"end\":\"middle\"}));var Y=V.selectAll(\".\"+y.cn.axisExtent).data(g,d);Y.enter().append(\"g\").classed(y.cn.axisExtent,!0);var W=Y.selectAll(\".\"+y.cn.axisExtentTop).data(g,d);W.enter().append(\"g\").classed(y.cn.axisExtentTop,!0),W.attr(\"transform\",c(0,-y.axisExtentOffset));var X=W.selectAll(\".\"+y.cn.axisExtentTopText).data(g,d);X.enter().append(\"text\").classed(y.cn.axisExtentTopText,!0).call(P),X.text((function(t){return D(t,!0)})).each((function(t){f.font(n.select(this),t.model.rangeFont)}));var Z=Y.selectAll(\".\"+y.cn.axisExtentBottom).data(g,d);Z.enter().append(\"g\").classed(y.cn.axisExtentBottom,!0),Z.attr(\"transform\",(function(t){return c(0,t.model.height+y.axisExtentOffset)}));var J=Z.selectAll(\".\"+y.cn.axisExtentBottomText).data(g,d);J.enter().append(\"text\").classed(y.cn.axisExtentBottomText,!0).attr(\"dy\",\"0.75em\").call(P),J.text((function(t){return D(t,!1)})).each((function(t){f.font(n.select(this),t.model.rangeFont)})),x.ensureAxisBrush(V,T)}},{\"../../components/colorscale\":378,\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/gup\":500,\"../../lib/svg_text_utils\":529,\"../../plots/cartesian/axes\":554,\"./axisbrush\":889,\"./constants\":892,\"./helpers\":894,\"./lines\":896,\"@plotly/d3\":58,\"color-rgba\":91}],899:[function(t,e,r){\"use strict\";var n=t(\"./parcoords\"),i=t(\"../../lib/prepare_regl\"),a=t(\"./helpers\").isVisible;function o(t,e,r){var n=e.indexOf(r),i=t.indexOf(n);return-1===i&&(i+=e.length),i}e.exports=function(t,e){var r=t._fullLayout;if(i(t)){var s={},l={},c={},u={},f=r._size;e.forEach((function(e,r){var n=e[0].trace;c[r]=n.index;var i=u[r]=n._fullInput.index;s[r]=t.data[i].dimensions,l[r]=t.data[i].dimensions.slice()}));n(t,e,{width:f.w,height:f.h,margin:{t:f.t,r:f.r,b:f.b,l:f.l}},{filterChanged:function(e,n,i){var a=l[e][n],o=i.map((function(t){return t.slice()})),s=\"dimensions[\"+n+\"].constraintrange\",f=r._tracePreGUI[t._fullData[c[e]]._fullInput.uid];if(void 0===f[s]){var h=a.constraintrange;f[s]=h||null}var p=t._fullData[c[e]].dimensions[n];o.length?(1===o.length&&(o=o[0]),a.constraintrange=o,p.constraintrange=o.slice(),o=[o]):(delete a.constraintrange,delete p.constraintrange,o=null);var d={};d[s]=o,t.emit(\"plotly_restyle\",[d,[u[e]]])},hover:function(e){t.emit(\"plotly_hover\",e)},unhover:function(e){t.emit(\"plotly_unhover\",e)},axesMoved:function(e,r){var n=function(t,e){return function(r,n){return o(t,e,r)-o(t,e,n)}}(r,l[e].filter(a));s[e].sort(n),l[e].filter((function(t){return!a(t)})).sort((function(t){return l[e].indexOf(t)})).forEach((function(t){s[e].splice(s[e].indexOf(t),1),s[e].splice(l[e].indexOf(t),0,t)})),t.emit(\"plotly_restyle\",[{dimensions:[s[e]]},[u[e]]])}})}}},{\"../../lib/prepare_regl\":516,\"./helpers\":894,\"./parcoords\":898}],900:[function(t,e,r){\"use strict\";var n=t(\"../../plots/attributes\"),i=t(\"../../plots/domain\").attributes,a=t(\"../../plots/font_attributes\"),o=t(\"../../components/color/attributes\"),s=t(\"../../plots/template_attributes\").hovertemplateAttrs,l=t(\"../../plots/template_attributes\").texttemplateAttrs,c=t(\"../../lib/extend\").extendFlat,u=a({editType:\"plot\",arrayOk:!0,colorEditType:\"plot\"});e.exports={labels:{valType:\"data_array\",editType:\"calc\"},label0:{valType:\"number\",dflt:0,editType:\"calc\"},dlabel:{valType:\"number\",dflt:1,editType:\"calc\"},values:{valType:\"data_array\",editType:\"calc\"},marker:{colors:{valType:\"data_array\",editType:\"calc\"},line:{color:{valType:\"color\",dflt:o.defaultLine,arrayOk:!0,editType:\"style\"},width:{valType:\"number\",min:0,dflt:0,arrayOk:!0,editType:\"style\"},editType:\"calc\"},editType:\"calc\"},text:{valType:\"data_array\",editType:\"plot\"},hovertext:{valType:\"string\",dflt:\"\",arrayOk:!0,editType:\"style\"},scalegroup:{valType:\"string\",dflt:\"\",editType:\"calc\"},textinfo:{valType:\"flaglist\",flags:[\"label\",\"text\",\"value\",\"percent\"],extras:[\"none\"],editType:\"calc\"},hoverinfo:c({},n.hoverinfo,{flags:[\"label\",\"text\",\"value\",\"percent\",\"name\"]}),hovertemplate:s({},{keys:[\"label\",\"color\",\"value\",\"percent\",\"text\"]}),texttemplate:l({editType:\"plot\"},{keys:[\"label\",\"color\",\"value\",\"percent\",\"text\"]}),textposition:{valType:\"enumerated\",values:[\"inside\",\"outside\",\"auto\",\"none\"],dflt:\"auto\",arrayOk:!0,editType:\"plot\"},textfont:c({},u,{}),insidetextorientation:{valType:\"enumerated\",values:[\"horizontal\",\"radial\",\"tangential\",\"auto\"],dflt:\"auto\",editType:\"plot\"},insidetextfont:c({},u,{}),outsidetextfont:c({},u,{}),automargin:{valType:\"boolean\",dflt:!1,editType:\"plot\"},title:{text:{valType:\"string\",dflt:\"\",editType:\"plot\"},font:c({},u,{}),position:{valType:\"enumerated\",values:[\"top left\",\"top center\",\"top right\",\"middle center\",\"bottom left\",\"bottom center\",\"bottom right\"],editType:\"plot\"},editType:\"plot\"},domain:i({name:\"pie\",trace:!0,editType:\"calc\"}),hole:{valType:\"number\",min:0,max:1,dflt:0,editType:\"calc\"},sort:{valType:\"boolean\",dflt:!0,editType:\"calc\"},direction:{valType:\"enumerated\",values:[\"clockwise\",\"counterclockwise\"],dflt:\"counterclockwise\",editType:\"calc\"},rotation:{valType:\"number\",min:-360,max:360,dflt:0,editType:\"calc\"},pull:{valType:\"number\",min:0,max:1,dflt:0,arrayOk:!0,editType:\"calc\"},_deprecated:{title:{valType:\"string\",dflt:\"\",editType:\"calc\"},titlefont:c({},u,{}),titleposition:{valType:\"enumerated\",values:[\"top left\",\"top center\",\"top right\",\"middle center\",\"bottom left\",\"bottom center\",\"bottom right\"],editType:\"calc\"}}}},{\"../../components/color/attributes\":365,\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/domain\":584,\"../../plots/font_attributes\":585,\"../../plots/template_attributes\":633}],901:[function(t,e,r){\"use strict\";var n=t(\"../../plots/plots\");r.name=\"pie\",r.plot=function(t,e,i,a){n.plotBasePlot(r.name,t,e,i,a)},r.clean=function(t,e,i,a){n.cleanBasePlot(r.name,t,e,i,a)}},{\"../../plots/plots\":619}],902:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"tinycolor2\"),a=t(\"../../components/color\"),o={};function s(t){return function(e,r){return!!e&&(!!(e=i(e)).isValid()&&(e=a.addOpacity(e,e.getAlpha()),t[r]||(t[r]=e),e))}}function l(t,e){var r,n=JSON.stringify(t),a=e[n];if(!a){for(a=t.slice(),r=0;r=0})),(\"funnelarea\"===e.type?v:e.sort)&&a.sort((function(t,e){return e.v-t.v})),a[0]&&(a[0].vTotal=m),a},crossTraceCalc:function(t,e){var r=(e||{}).type;r||(r=\"pie\");var n=t._fullLayout,i=t.calcdata,a=n[r+\"colorway\"],s=n[\"_\"+r+\"colormap\"];n[\"extend\"+r+\"colors\"]&&(a=l(a,o));for(var c=0,u=0;u0){s=!0;break}}s||(o=0)}return{hasLabels:r,hasValues:a,len:o}}e.exports={handleLabelsAndValues:l,supplyDefaults:function(t,e,r,n){function c(r,n){return i.coerce(t,e,a,r,n)}var u=l(c(\"labels\"),c(\"values\")),f=u.len;if(e._hasLabels=u.hasLabels,e._hasValues=u.hasValues,!e._hasLabels&&e._hasValues&&(c(\"label0\"),c(\"dlabel\")),f){e._length=f,c(\"marker.line.width\")&&c(\"marker.line.color\"),c(\"marker.colors\"),c(\"scalegroup\");var h,p=c(\"text\"),d=c(\"texttemplate\");if(d||(h=c(\"textinfo\",Array.isArray(p)?\"text+percent\":\"percent\")),c(\"hovertext\"),c(\"hovertemplate\"),d||h&&\"none\"!==h){var g=c(\"textposition\");s(t,e,n,c,g,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),(Array.isArray(g)||\"auto\"===g||\"outside\"===g)&&c(\"automargin\"),(\"inside\"===g||\"auto\"===g||Array.isArray(g))&&c(\"insidetextorientation\")}o(e,n,c);var m=c(\"hole\");if(c(\"title.text\")){var v=c(\"title.position\",m?\"middle center\":\"top center\");m||\"middle center\"!==v||(e.title.position=\"top center\"),i.coerceFont(c,\"title.font\",n.font)}c(\"sort\"),c(\"direction\"),c(\"rotation\"),c(\"pull\")}else e.visible=!1}}},{\"../../lib\":503,\"../../plots/domain\":584,\"../bar/defaults\":652,\"./attributes\":900,\"fast-isnumeric\":190}],904:[function(t,e,r){\"use strict\";var n=t(\"../../components/fx/helpers\").appendArrayMultiPointValues;e.exports=function(t,e){var r={curveNumber:e.index,pointNumbers:t.pts,data:e._input,fullData:e,label:t.label,color:t.color,value:t.v,percent:t.percent,text:t.text,bbox:t.bbox,v:t.v};return 1===t.pts.length&&(r.pointNumber=r.i=t.pts[0]),n(r,e,t.pts),\"funnelarea\"===e.type&&(delete r.v,delete r.i),r}},{\"../../components/fx/helpers\":402}],905:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");function i(t){return-1!==t.indexOf(\"e\")?t.replace(/[.]?0+e/,\"e\"):-1!==t.indexOf(\".\")?t.replace(/[.]?0+$/,\"\"):t}r.formatPiePercent=function(t,e){var r=i((100*t).toPrecision(3));return n.numSeparate(r,e)+\"%\"},r.formatPieValue=function(t,e){var r=i(t.toPrecision(10));return n.numSeparate(r,e)},r.getFirstFilled=function(t,e){if(Array.isArray(t))for(var r=0;r\"),name:f.hovertemplate||-1!==h.indexOf(\"name\")?f.name:void 0,idealAlign:t.pxmid[0]<0?\"left\":\"right\",color:m.castOption(_.bgcolor,t.pts)||t.color,borderColor:m.castOption(_.bordercolor,t.pts),fontFamily:m.castOption(w.family,t.pts),fontSize:m.castOption(w.size,t.pts),fontColor:m.castOption(w.color,t.pts),nameLength:m.castOption(_.namelength,t.pts),textAlign:m.castOption(_.align,t.pts),hovertemplate:m.castOption(f.hovertemplate,t.pts),hovertemplateLabels:t,eventData:[v(t,f)]},{container:r._hoverlayer.node(),outerContainer:r._paper.node(),gd:e,inOut_bbox:T}),t.bbox=T[0],c._hasHoverLabel=!0}c._hasHoverEvent=!0,e.emit(\"plotly_hover\",{points:[v(t,f)],event:n.event})}})),t.on(\"mouseout\",(function(t){var r=e._fullLayout,i=e._fullData[c.index],o=n.select(this).datum();c._hasHoverEvent&&(t.originalEvent=n.event,e.emit(\"plotly_unhover\",{points:[v(o,i)],event:n.event}),c._hasHoverEvent=!1),c._hasHoverLabel&&(a.loneUnhover(r._hoverlayer.node()),c._hasHoverLabel=!1)})),t.on(\"click\",(function(t){var r=e._fullLayout,i=e._fullData[c.index];e._dragging||!1===r.hovermode||(e._hoverdata=[v(t,i)],a.click(e,n.event))}))}function b(t,e,r){var n=m.castOption(t.insidetextfont.color,e.pts);!n&&t._input.textfont&&(n=m.castOption(t._input.textfont.color,e.pts));var i=m.castOption(t.insidetextfont.family,e.pts)||m.castOption(t.textfont.family,e.pts)||r.family,a=m.castOption(t.insidetextfont.size,e.pts)||m.castOption(t.textfont.size,e.pts)||r.size;return{color:n||o.contrast(e.color),family:i,size:a}}function _(t,e){for(var r,n,i=0;ie&&e>n||r=-4;m-=2)v(Math.PI*m,\"tan\");for(m=4;m>=-4;m-=2)v(Math.PI*(m+1),\"tan\")}if(f||p){for(m=4;m>=-4;m-=2)v(Math.PI*(m+1.5),\"rad\");for(m=4;m>=-4;m-=2)v(Math.PI*(m+.5),\"rad\")}}if(s||d||f){var y=Math.sqrt(t.width*t.width+t.height*t.height);if((a={scale:i*n*2/y,rCenter:1-i,rotate:0}).textPosAngle=(e.startangle+e.stopangle)/2,a.scale>=1)return a;g.push(a)}(d||p)&&((a=T(t,n,o,l,c)).textPosAngle=(e.startangle+e.stopangle)/2,g.push(a)),(d||h)&&((a=k(t,n,o,l,c)).textPosAngle=(e.startangle+e.stopangle)/2,g.push(a));for(var x=0,b=0,_=0;_=1)break}return g[x]}function T(t,e,r,n,i){e=Math.max(0,e-2*g);var a=t.width/t.height,o=S(a,n,e,r);return{scale:2*o/t.height,rCenter:A(a,o/e),rotate:M(i)}}function k(t,e,r,n,i){e=Math.max(0,e-2*g);var a=t.height/t.width,o=S(a,n,e,r);return{scale:2*o/t.width,rCenter:A(a,o/e),rotate:M(i+Math.PI/2)}}function A(t,e){return Math.cos(e)-t*e}function M(t){return(180/Math.PI*t+720)%180-90}function S(t,e,r,n){var i=t+1/(2*Math.tan(e));return r*Math.min(1/(Math.sqrt(i*i+.5)+i),n/(Math.sqrt(t*t+n/2)+t))}function E(t,e){return t.v!==e.vTotal||e.trace.hole?Math.min(1/(1+1/Math.sin(t.halfangle)),t.ring/2):1}function L(t,e){var r=e.pxmid[0],n=e.pxmid[1],i=t.width/2,a=t.height/2;return r<0&&(i*=-1),n<0&&(a*=-1),{scale:1,rCenter:1,rotate:0,x:i+Math.abs(a)*(i>0?1:-1)/2,y:a/(1+r*r/(n*n)),outside:!0}}function C(t,e){var r,n,i,a=t.trace,o={x:t.cx,y:t.cy},s={tx:0,ty:0};s.ty+=a.title.font.size,i=I(a),-1!==a.title.position.indexOf(\"top\")?(o.y-=(1+i)*t.r,s.ty-=t.titleBox.height):-1!==a.title.position.indexOf(\"bottom\")&&(o.y+=(1+i)*t.r);var l,c,u=(l=t.r,c=t.trace.aspectratio,l/(void 0===c?1:c)),f=e.w*(a.domain.x[1]-a.domain.x[0])/2;return-1!==a.title.position.indexOf(\"left\")?(f+=u,o.x-=(1+i)*u,s.tx+=t.titleBox.width/2):-1!==a.title.position.indexOf(\"center\")?f*=2:-1!==a.title.position.indexOf(\"right\")&&(f+=u,o.x+=(1+i)*u,s.tx-=t.titleBox.width/2),r=f/t.titleBox.width,n=P(t,e)/t.titleBox.height,{x:o.x,y:o.y,scale:Math.min(r,n),tx:s.tx,ty:s.ty}}function P(t,e){var r=t.trace,n=e.h*(r.domain.y[1]-r.domain.y[0]);return Math.min(t.titleBox.height,n/2)}function I(t){var e,r=t.pull;if(!r)return 0;if(Array.isArray(r))for(r=0,e=0;er&&(r=t.pull[e]);return r}function O(t,e){for(var r=[],n=0;n1?(c=r.r,u=c/i.aspectratio):(u=r.r,c=u*i.aspectratio),c*=(1+i.baseratio)/2,l=c*u}o=Math.min(o,l/r.vTotal)}for(n=0;n\")}if(a){var x=l.castOption(i,e.i,\"texttemplate\");if(x){var b=function(t){return{label:t.label,value:t.v,valueLabel:m.formatPieValue(t.v,n.separators),percent:t.v/r.vTotal,percentLabel:m.formatPiePercent(t.v/r.vTotal,n.separators),color:t.color,text:t.text,customdata:l.castOption(i,t.i,\"customdata\")}}(e),_=m.getFirstFilled(i.text,e.pts);(y(_)||\"\"===_)&&(b.text=_),e.text=l.texttemplateString(x,b,t._fullLayout._d3locale,b,i._meta||{})}else e.text=\"\"}}function R(t,e){var r=t.rotate*Math.PI/180,n=Math.cos(r),i=Math.sin(r),a=(e.left+e.right)/2,o=(e.top+e.bottom)/2;t.textX=a*n-o*i,t.textY=a*i+o*n,t.noCenter=!0}e.exports={plot:function(t,e){var r=t._fullLayout,a=r._size;d(\"pie\",r),_(e,t),O(e,a);var h=l.makeTraceGroups(r._pielayer,e,\"trace\").each((function(e){var h=n.select(this),d=e[0],g=d.trace;!function(t){var e,r,n,i=t[0],a=i.r,o=i.trace,s=m.getRotationAngle(o.rotation),l=2*Math.PI/i.vTotal,c=\"px0\",u=\"px1\";if(\"counterclockwise\"===o.direction){for(e=0;ei.vTotal/2?1:0,r.halfangle=Math.PI*Math.min(r.v/i.vTotal,.5),r.ring=1-o.hole,r.rInscribed=E(r,i))}(e),h.attr(\"stroke-linejoin\",\"round\"),h.each((function(){var v=n.select(this).selectAll(\"g.slice\").data(e);v.enter().append(\"g\").classed(\"slice\",!0),v.exit().remove();var y=[[[],[]],[[],[]]],_=!1;v.each((function(i,a){if(i.hidden)n.select(this).selectAll(\"path,g\").remove();else{i.pointNumber=i.i,i.curveNumber=g.index,y[i.pxmid[1]<0?0:1][i.pxmid[0]<0?0:1].push(i);var o=d.cx,c=d.cy,u=n.select(this),h=u.selectAll(\"path.surface\").data([i]);if(h.enter().append(\"path\").classed(\"surface\",!0).style({\"pointer-events\":\"all\"}),u.call(x,t,e),g.pull){var v=+m.castOption(g.pull,i.pts)||0;v>0&&(o+=v*i.pxmid[0],c+=v*i.pxmid[1])}i.cxFinal=o,i.cyFinal=c;var T=g.hole;if(i.v===d.vTotal){var k=\"M\"+(o+i.px0[0])+\",\"+(c+i.px0[1])+C(i.px0,i.pxmid,!0,1)+C(i.pxmid,i.px0,!0,1)+\"Z\";T?h.attr(\"d\",\"M\"+(o+T*i.px0[0])+\",\"+(c+T*i.px0[1])+C(i.px0,i.pxmid,!1,T)+C(i.pxmid,i.px0,!1,T)+\"Z\"+k):h.attr(\"d\",k)}else{var A=C(i.px0,i.px1,!0,1);if(T){var M=1-T;h.attr(\"d\",\"M\"+(o+T*i.px1[0])+\",\"+(c+T*i.px1[1])+C(i.px1,i.px0,!1,T)+\"l\"+M*i.px0[0]+\",\"+M*i.px0[1]+A+\"Z\")}else h.attr(\"d\",\"M\"+o+\",\"+c+\"l\"+i.px0[0]+\",\"+i.px0[1]+A+\"Z\")}D(t,i,d);var S=m.castOption(g.textposition,i.pts),E=u.selectAll(\"g.slicetext\").data(i.text&&\"none\"!==S?[0]:[]);E.enter().append(\"g\").classed(\"slicetext\",!0),E.exit().remove(),E.each((function(){var u=l.ensureSingle(n.select(this),\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),h=l.ensureUniformFontSize(t,\"outside\"===S?function(t,e,r){var n=m.castOption(t.outsidetextfont.color,e.pts)||m.castOption(t.textfont.color,e.pts)||r.color,i=m.castOption(t.outsidetextfont.family,e.pts)||m.castOption(t.textfont.family,e.pts)||r.family,a=m.castOption(t.outsidetextfont.size,e.pts)||m.castOption(t.textfont.size,e.pts)||r.size;return{color:n,family:i,size:a}}(g,i,r.font):b(g,i,r.font));u.text(i.text).attr({class:\"slicetext\",transform:\"\",\"text-anchor\":\"middle\"}).call(s.font,h).call(f.convertToTspans,t);var v,y=s.bBox(u.node());if(\"outside\"===S)v=L(y,i);else if(v=w(y,i,d),\"auto\"===S&&v.scale<1){var x=l.ensureUniformFontSize(t,g.outsidetextfont);u.call(s.font,x),v=L(y=s.bBox(u.node()),i)}var T=v.textPosAngle,k=void 0===T?i.pxmid:z(d.r,T);if(v.targetX=o+k[0]*v.rCenter+(v.x||0),v.targetY=c+k[1]*v.rCenter+(v.y||0),R(v,y),v.outside){var A=v.targetY;i.yLabelMin=A-y.height/2,i.yLabelMid=A,i.yLabelMax=A+y.height/2,i.labelExtraX=0,i.labelExtraY=0,_=!0}v.fontSize=h.size,p(g.type,v,r),e[a].transform=v,u.attr(\"transform\",l.getTextTransform(v))}))}function C(t,e,r,n){var a=n*(e[0]-t[0]),o=n*(e[1]-t[1]);return\"a\"+n*d.r+\",\"+n*d.r+\" 0 \"+i.largeArc+(r?\" 1 \":\" 0 \")+a+\",\"+o}}));var T=n.select(this).selectAll(\"g.titletext\").data(g.title.text?[0]:[]);if(T.enter().append(\"g\").classed(\"titletext\",!0),T.exit().remove(),T.each((function(){var e,r=l.ensureSingle(n.select(this),\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),i=g.title.text;g._meta&&(i=l.templateString(i,g._meta)),r.text(i).attr({class:\"titletext\",transform:\"\",\"text-anchor\":\"middle\"}).call(s.font,g.title.font).call(f.convertToTspans,t),e=\"middle center\"===g.title.position?function(t){var e=Math.sqrt(t.titleBox.width*t.titleBox.width+t.titleBox.height*t.titleBox.height);return{x:t.cx,y:t.cy,scale:t.trace.hole*t.r*2/e,tx:0,ty:-t.titleBox.height/2+t.trace.title.font.size}}(d):C(d,a),r.attr(\"transform\",u(e.x,e.y)+c(Math.min(1,e.scale))+u(e.tx,e.ty))})),_&&function(t,e){var r,n,i,a,o,s,l,c,u,f,h,p,d;function g(t,e){return t.pxmid[1]-e.pxmid[1]}function v(t,e){return e.pxmid[1]-t.pxmid[1]}function y(t,r){r||(r={});var i,c,u,h,p=r.labelExtraY+(n?r.yLabelMax:r.yLabelMin),d=n?t.yLabelMin:t.yLabelMax,g=n?t.yLabelMax:t.yLabelMin,v=t.cyFinal+o(t.px0[1],t.px1[1]),y=p-d;if(y*l>0&&(t.labelExtraY=y),Array.isArray(e.pull))for(c=0;c=(m.castOption(e.pull,u.pts)||0)||((t.pxmid[1]-u.pxmid[1])*l>0?(y=u.cyFinal+o(u.px0[1],u.px1[1])-d-t.labelExtraY)*l>0&&(t.labelExtraY+=y):(g+t.labelExtraY-v)*l>0&&(i=3*s*Math.abs(c-f.indexOf(t)),(h=u.cxFinal+a(u.px0[0],u.px1[0])+i-(t.cxFinal+t.pxmid[0])-t.labelExtraX)*s>0&&(t.labelExtraX+=h)))}for(n=0;n<2;n++)for(i=n?g:v,o=n?Math.max:Math.min,l=n?1:-1,r=0;r<2;r++){for(a=r?Math.max:Math.min,s=r?1:-1,(c=t[n][r]).sort(i),u=t[1-n][r],f=u.concat(c),p=[],h=0;hMath.abs(f)?s+=\"l\"+f*t.pxmid[0]/t.pxmid[1]+\",\"+f+\"H\"+(a+t.labelExtraX+c):s+=\"l\"+t.labelExtraX+\",\"+u+\"v\"+(f-u)+\"h\"+c}else s+=\"V\"+(t.yLabelMid+t.labelExtraY)+\"h\"+c;l.ensureSingle(r,\"path\",\"textline\").call(o.stroke,e.outsidetextfont.color).attr({\"stroke-width\":Math.min(2,e.outsidetextfont.size/8),d:s,fill:\"none\"})}else r.select(\"path.textline\").remove()}))}(v,g),_&&g.automargin){var k=s.bBox(h.node()),A=g.domain,M=a.w*(A.x[1]-A.x[0]),S=a.h*(A.y[1]-A.y[0]),E=(.5*M-d.r)/a.w,P=(.5*S-d.r)/a.h;i.autoMargin(t,\"pie.\"+g.uid+\".automargin\",{xl:A.x[0]-E,xr:A.x[1]+E,yb:A.y[0]-P,yt:A.y[1]+P,l:Math.max(d.cx-d.r-k.left,0),r:Math.max(k.right-(d.cx+d.r),0),b:Math.max(k.bottom-(d.cy+d.r),0),t:Math.max(d.cy-d.r-k.top,0),pad:5})}}))}));setTimeout((function(){h.selectAll(\"tspan\").each((function(){var t=n.select(this);t.attr(\"dy\")&&t.attr(\"dy\",t.attr(\"dy\"))}))}),0)},formatSliceLabel:D,transformInsideText:w,determineInsideTextFont:b,positionTitleOutside:C,prerenderTitles:_,layoutAreas:O,attachFxHandlers:x,computeTransform:R}},{\"../../components/color\":366,\"../../components/drawing\":388,\"../../components/fx\":406,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../../plots/plots\":619,\"../bar/constants\":650,\"../bar/uniform_text\":664,\"./event_data\":904,\"./helpers\":905,\"@plotly/d3\":58}],910:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"./style_one\"),a=t(\"../bar/uniform_text\").resizeText;e.exports=function(t){var e=t._fullLayout._pielayer.selectAll(\".trace\");a(t,e,\"pie\"),e.each((function(t){var e=t[0].trace,r=n.select(this);r.style({opacity:e.opacity}),r.selectAll(\"path.surface\").each((function(t){n.select(this).call(i,t,e)}))}))}},{\"../bar/uniform_text\":664,\"./style_one\":911,\"@plotly/d3\":58}],911:[function(t,e,r){\"use strict\";var n=t(\"../../components/color\"),i=t(\"./helpers\").castOption;e.exports=function(t,e,r){var a=r.marker.line,o=i(a.color,e.pts)||n.defaultLine,s=i(a.width,e.pts)||0;t.style(\"stroke-width\",s).call(n.fill,e.color).call(n.stroke,o)}},{\"../../components/color\":366,\"./helpers\":905}],912:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\");e.exports={x:n.x,y:n.y,xy:{valType:\"data_array\",editType:\"calc\"},indices:{valType:\"data_array\",editType:\"calc\"},xbounds:{valType:\"data_array\",editType:\"calc\"},ybounds:{valType:\"data_array\",editType:\"calc\"},text:n.text,marker:{color:{valType:\"color\",arrayOk:!1,editType:\"calc\"},opacity:{valType:\"number\",min:0,max:1,dflt:1,arrayOk:!1,editType:\"calc\"},blend:{valType:\"boolean\",dflt:null,editType:\"calc\"},sizemin:{valType:\"number\",min:.1,max:2,dflt:.5,editType:\"calc\"},sizemax:{valType:\"number\",min:.1,dflt:20,editType:\"calc\"},border:{color:{valType:\"color\",arrayOk:!1,editType:\"calc\"},arearatio:{valType:\"number\",min:0,max:1,dflt:0,editType:\"calc\"},editType:\"calc\"},editType:\"calc\"},transforms:void 0}},{\"../scatter/attributes\":926}],913:[function(t,e,r){\"use strict\";var n=t(\"../../../stackgl_modules\").gl_pointcloud2d,i=t(\"../../lib/str2rgbarray\"),a=t(\"../../plots/cartesian/autorange\").findExtremes,o=t(\"../scatter/get_trace_color\");function s(t,e){this.scene=t,this.uid=e,this.type=\"pointcloud\",this.pickXData=[],this.pickYData=[],this.xData=[],this.yData=[],this.textLabels=[],this.color=\"rgb(0, 0, 0)\",this.name=\"\",this.hoverinfo=\"all\",this.idToIndex=new Int32Array(0),this.bounds=[0,0,0,0],this.pointcloudOptions={positions:new Float32Array(0),idToIndex:this.idToIndex,sizemin:.5,sizemax:12,color:[0,0,0,1],areaRatio:1,borderColor:[0,0,0,1]},this.pointcloud=n(t.glplot,this.pointcloudOptions),this.pointcloud._trace=this}var l=s.prototype;l.handlePick=function(t){var e=this.idToIndex[t.pointId];return{trace:this,dataCoord:t.dataCoord,traceCoord:this.pickXYData?[this.pickXYData[2*e],this.pickXYData[2*e+1]]:[this.pickXData[e],this.pickYData[e]],textLabel:Array.isArray(this.textLabels)?this.textLabels[e]:this.textLabels,color:this.color,name:this.name,pointIndex:e,hoverinfo:this.hoverinfo}},l.update=function(t){this.index=t.index,this.textLabels=t.text,this.name=t.name,this.hoverinfo=t.hoverinfo,this.bounds=[1/0,1/0,-1/0,-1/0],this.updateFast(t),this.color=o(t,{})},l.updateFast=function(t){var e,r,n,o,s,l,c=this.xData=this.pickXData=t.x,u=this.yData=this.pickYData=t.y,f=this.pickXYData=t.xy,h=t.xbounds&&t.ybounds,p=t.indices,d=this.bounds;if(f){if(n=f,e=f.length>>>1,h)d[0]=t.xbounds[0],d[2]=t.xbounds[1],d[1]=t.ybounds[0],d[3]=t.ybounds[1];else for(l=0;ld[2]&&(d[2]=o),sd[3]&&(d[3]=s);if(p)r=p;else for(r=new Int32Array(e),l=0;ld[2]&&(d[2]=o),sd[3]&&(d[3]=s);this.idToIndex=r,this.pointcloudOptions.idToIndex=r,this.pointcloudOptions.positions=n;var g=i(t.marker.color),m=i(t.marker.border.color),v=t.opacity*t.marker.opacity;g[3]*=v,this.pointcloudOptions.color=g;var y=t.marker.blend;if(null===y){y=c.length<100||u.length<100}this.pointcloudOptions.blend=y,m[3]*=v,this.pointcloudOptions.borderColor=m;var x=t.marker.sizemin,b=Math.max(t.marker.sizemax,t.marker.sizemin);this.pointcloudOptions.sizeMin=x,this.pointcloudOptions.sizeMax=b,this.pointcloudOptions.areaRatio=t.marker.border.arearatio,this.pointcloud.update(this.pointcloudOptions);var _=this.scene.xaxis,w=this.scene.yaxis,T=b/2||.5;t._extremes[_._id]=a(_,[d[0],d[2]],{ppad:T}),t._extremes[w._id]=a(w,[d[1],d[3]],{ppad:T})},l.dispose=function(){this.pointcloud.dispose()},e.exports=function(t,e){var r=new s(t,e.uid);return r.update(e),r}},{\"../../../stackgl_modules\":1120,\"../../lib/str2rgbarray\":528,\"../../plots/cartesian/autorange\":553,\"../scatter/get_trace_color\":936}],914:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./attributes\");e.exports=function(t,e,r){function a(r,a){return n.coerce(t,e,i,r,a)}a(\"x\"),a(\"y\"),a(\"xbounds\"),a(\"ybounds\"),t.xy&&t.xy instanceof Float32Array&&(e.xy=t.xy),t.indices&&t.indices instanceof Int32Array&&(e.indices=t.indices),a(\"text\"),a(\"marker.color\",r),a(\"marker.opacity\"),a(\"marker.blend\"),a(\"marker.sizemin\"),a(\"marker.sizemax\"),a(\"marker.border.color\",r),a(\"marker.border.arearatio\"),e._length=null}},{\"../../lib\":503,\"./attributes\":912}],915:[function(t,e,r){\"use strict\";[\"*pointcloud* trace is deprecated!\",\"Please consider switching to the *scattergl* trace type.\"].join(\" \");e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),calc:t(\"../scatter3d/calc\"),plot:t(\"./convert\"),moduleType:\"trace\",name:\"pointcloud\",basePlotModule:t(\"../../plots/gl2d\"),categories:[\"gl\",\"gl2d\",\"showLegend\"],meta:{}}},{\"../../plots/gl2d\":596,\"../scatter3d/calc\":955,\"./attributes\":912,\"./convert\":913,\"./defaults\":914}],916:[function(t,e,r){\"use strict\";var n=t(\"../../plots/font_attributes\"),i=t(\"../../plots/attributes\"),a=t(\"../../components/color/attributes\"),o=t(\"../../components/fx/attributes\"),s=t(\"../../plots/domain\").attributes,l=t(\"../../plots/template_attributes\").hovertemplateAttrs,c=t(\"../../components/colorscale/attributes\"),u=t(\"../../plot_api/plot_template\").templatedArray,f=t(\"../../plots/cartesian/axis_format_attributes\").descriptionOnlyNumbers,h=t(\"../../lib/extend\").extendFlat,p=t(\"../../plot_api/edit_types\").overrideAll;(e.exports=p({hoverinfo:h({},i.hoverinfo,{flags:[],arrayOk:!1}),hoverlabel:o.hoverlabel,domain:s({name:\"sankey\",trace:!0}),orientation:{valType:\"enumerated\",values:[\"v\",\"h\"],dflt:\"h\"},valueformat:{valType:\"string\",dflt:\".3s\",description:f(\"value\")},valuesuffix:{valType:\"string\",dflt:\"\"},arrangement:{valType:\"enumerated\",values:[\"snap\",\"perpendicular\",\"freeform\",\"fixed\"],dflt:\"snap\"},textfont:n({}),customdata:void 0,node:{label:{valType:\"data_array\",dflt:[]},groups:{valType:\"info_array\",impliedEdits:{x:[],y:[]},dimensions:2,freeLength:!0,dflt:[],items:{valType:\"number\",editType:\"calc\"}},x:{valType:\"data_array\",dflt:[]},y:{valType:\"data_array\",dflt:[]},color:{valType:\"color\",arrayOk:!0},customdata:{valType:\"data_array\",editType:\"calc\"},line:{color:{valType:\"color\",dflt:a.defaultLine,arrayOk:!0},width:{valType:\"number\",min:0,dflt:.5,arrayOk:!0}},pad:{valType:\"number\",arrayOk:!1,min:0,dflt:20},thickness:{valType:\"number\",arrayOk:!1,min:1,dflt:20},hoverinfo:{valType:\"enumerated\",values:[\"all\",\"none\",\"skip\"],dflt:\"all\"},hoverlabel:o.hoverlabel,hovertemplate:l({},{keys:[\"value\",\"label\"]})},link:{label:{valType:\"data_array\",dflt:[]},color:{valType:\"color\",arrayOk:!0},customdata:{valType:\"data_array\",editType:\"calc\"},line:{color:{valType:\"color\",dflt:a.defaultLine,arrayOk:!0},width:{valType:\"number\",min:0,dflt:0,arrayOk:!0}},source:{valType:\"data_array\",dflt:[]},target:{valType:\"data_array\",dflt:[]},value:{valType:\"data_array\",dflt:[]},hoverinfo:{valType:\"enumerated\",values:[\"all\",\"none\",\"skip\"],dflt:\"all\"},hoverlabel:o.hoverlabel,hovertemplate:l({},{keys:[\"value\",\"label\"]}),colorscales:u(\"concentrationscales\",{editType:\"calc\",label:{valType:\"string\",editType:\"calc\",dflt:\"\"},cmax:{valType:\"number\",editType:\"calc\",dflt:1},cmin:{valType:\"number\",editType:\"calc\",dflt:0},colorscale:h(c().colorscale,{dflt:[[0,\"white\"],[1,\"black\"]]})})}},\"calc\",\"nested\")).transforms=void 0},{\"../../components/color/attributes\":365,\"../../components/colorscale/attributes\":373,\"../../components/fx/attributes\":397,\"../../lib/extend\":493,\"../../plot_api/edit_types\":536,\"../../plot_api/plot_template\":543,\"../../plots/attributes\":550,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/domain\":584,\"../../plots/font_attributes\":585,\"../../plots/template_attributes\":633}],917:[function(t,e,r){\"use strict\";var n=t(\"../../plot_api/edit_types\").overrideAll,i=t(\"../../plots/get_data\").getModuleCalcData,a=t(\"./plot\"),o=t(\"../../components/fx/layout_attributes\"),s=t(\"../../lib/setcursor\"),l=t(\"../../components/dragelement\"),c=t(\"../../plots/cartesian/select\").prepSelect,u=t(\"../../lib\"),f=t(\"../../registry\");function h(t,e){var r=t._fullData[e],n=t._fullLayout,i=n.dragmode,a=\"pan\"===n.dragmode?\"move\":\"crosshair\",o=r._bgRect;if(\"pan\"!==i&&\"zoom\"!==i){s(o,a);var h={_id:\"x\",c2p:u.identity,_offset:r._sankey.translateX,_length:r._sankey.width},p={_id:\"y\",c2p:u.identity,_offset:r._sankey.translateY,_length:r._sankey.height},d={gd:t,element:o.node(),plotinfo:{id:e,xaxis:h,yaxis:p,fillRangeItems:u.noop},subplot:e,xaxes:[h],yaxes:[p],doneFnCompleted:function(r){var n,i=t._fullData[e],a=i.node.groups.slice(),o=[];function s(t){for(var e=i._sankey.graph.nodes,r=0;ry&&(y=a.source[e]),a.target[e]>y&&(y=a.target[e]);var x,b=y+1;t.node._count=b;var _=t.node.groups,w={};for(e=0;e<_.length;e++){var T=_[e];for(x=0;x0&&s(E,b)&&s(L,b)&&(!w.hasOwnProperty(E)||!w.hasOwnProperty(L)||w[E]!==w[L])){w.hasOwnProperty(L)&&(L=w[L]),w.hasOwnProperty(E)&&(E=w[E]),L=+L,h[E=+E]=h[L]=!0;var C=\"\";a.label&&a.label[e]&&(C=a.label[e]);var P=null;C&&p.hasOwnProperty(C)&&(P=p[C]),c.push({pointNumber:e,label:C,color:u?a.color[e]:a.color,customdata:f?a.customdata[e]:a.customdata,concentrationscale:P,source:E,target:L,value:+S}),M.source.push(E),M.target.push(L)}}var I=b+_.length,O=o(r.color),z=o(r.customdata),D=[];for(e=0;eb-1,childrenNodes:[],pointNumber:e,label:R,color:O?r.color[e]:r.color,customdata:z?r.customdata[e]:r.customdata})}var F=!1;return function(t,e,r){for(var a=i.init2dArray(t,0),o=0;o1}))}(I,M.source,M.target)&&(F=!0),{circular:F,links:c,nodes:D,groups:_,groupLookup:w}}e.exports=function(t,e){var r=c(e);return a({circular:r.circular,_nodes:r.nodes,_links:r.links,_groups:r.groups,_groupLookup:r.groupLookup})}},{\"../../components/colorscale\":378,\"../../lib\":503,\"../../lib/gup\":500,\"strongly-connected-components\":306}],919:[function(t,e,r){\"use strict\";e.exports={nodeTextOffsetHorizontal:4,nodeTextOffsetVertical:3,nodePadAcross:10,sankeyIterations:50,forceIterations:5,forceTicksPerFrame:10,duration:500,ease:\"linear\",cn:{sankey:\"sankey\",sankeyLinks:\"sankey-links\",sankeyLink:\"sankey-link\",sankeyNodeSet:\"sankey-node-set\",sankeyNode:\"sankey-node\",nodeRect:\"node-rect\",nodeLabel:\"node-label\"}}},{}],920:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./attributes\"),a=t(\"../../components/color\"),o=t(\"tinycolor2\"),s=t(\"../../plots/domain\").defaults,l=t(\"../../components/fx/hoverlabel_defaults\"),c=t(\"../../plot_api/plot_template\"),u=t(\"../../plots/array_container_defaults\");function f(t,e){function r(r,a){return n.coerce(t,e,i.link.colorscales,r,a)}r(\"label\"),r(\"cmin\"),r(\"cmax\"),r(\"colorscale\")}e.exports=function(t,e,r,h){function p(r,a){return n.coerce(t,e,i,r,a)}var d=n.extendDeep(h.hoverlabel,t.hoverlabel),g=t.node,m=c.newContainer(e,\"node\");function v(t,e){return n.coerce(g,m,i.node,t,e)}v(\"label\"),v(\"groups\"),v(\"x\"),v(\"y\"),v(\"pad\"),v(\"thickness\"),v(\"line.color\"),v(\"line.width\"),v(\"hoverinfo\",t.hoverinfo),l(g,m,v,d),v(\"hovertemplate\");var y=h.colorway;v(\"color\",m.label.map((function(t,e){return a.addOpacity(function(t){return y[t%y.length]}(e),.8)}))),v(\"customdata\");var x=t.link||{},b=c.newContainer(e,\"link\");function _(t,e){return n.coerce(x,b,i.link,t,e)}_(\"label\"),_(\"source\"),_(\"target\"),_(\"value\"),_(\"line.color\"),_(\"line.width\"),_(\"hoverinfo\",t.hoverinfo),l(x,b,_,d),_(\"hovertemplate\");var w,T=o(h.paper_bgcolor).getLuminance()<.333?\"rgba(255, 255, 255, 0.6)\":\"rgba(0, 0, 0, 0.2)\";_(\"color\",n.repeat(T,b.value.length)),_(\"customdata\"),u(x,b,{name:\"colorscales\",handleItemDefaults:f}),s(e,h,p),p(\"orientation\"),p(\"valueformat\"),p(\"valuesuffix\"),m.x.length&&m.y.length&&(w=\"freeform\"),p(\"arrangement\",w),n.coerceFont(p,\"textfont\",n.extendFlat({},h.font)),e._length=null}},{\"../../components/color\":366,\"../../components/fx/hoverlabel_defaults\":404,\"../../lib\":503,\"../../plot_api/plot_template\":543,\"../../plots/array_container_defaults\":549,\"../../plots/domain\":584,\"./attributes\":916,tinycolor2:312}],921:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),calc:t(\"./calc\"),plot:t(\"./plot\"),moduleType:\"trace\",name:\"sankey\",basePlotModule:t(\"./base_plot\"),selectPoints:t(\"./select.js\"),categories:[\"noOpacity\"],meta:{}}},{\"./attributes\":916,\"./base_plot\":917,\"./calc\":918,\"./defaults\":920,\"./plot\":922,\"./select.js\":924}],922:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=i.numberFormat,o=t(\"./render\"),s=t(\"../../components/fx\"),l=t(\"../../components/color\"),c=t(\"./constants\").cn,u=i._;function f(t){return\"\"!==t}function h(t,e){return t.filter((function(t){return t.key===e.traceId}))}function p(t,e){n.select(t).select(\"path\").style(\"fill-opacity\",e),n.select(t).select(\"rect\").style(\"fill-opacity\",e)}function d(t){n.select(t).select(\"text.name\").style(\"fill\",\"black\")}function g(t){return function(e){return-1!==t.node.sourceLinks.indexOf(e.link)||-1!==t.node.targetLinks.indexOf(e.link)}}function m(t){return function(e){return-1!==e.node.sourceLinks.indexOf(t.link)||-1!==e.node.targetLinks.indexOf(t.link)}}function v(t,e,r){e&&r&&h(r,e).selectAll(\".\"+c.sankeyLink).filter(g(e)).call(x.bind(0,e,r,!1))}function y(t,e,r){e&&r&&h(r,e).selectAll(\".\"+c.sankeyLink).filter(g(e)).call(b.bind(0,e,r,!1))}function x(t,e,r,n){var i=n.datum().link.label;n.style(\"fill-opacity\",(function(t){if(!t.link.concentrationscale)return.4})),i&&h(e,t).selectAll(\".\"+c.sankeyLink).filter((function(t){return t.link.label===i})).style(\"fill-opacity\",(function(t){if(!t.link.concentrationscale)return.4})),r&&h(e,t).selectAll(\".\"+c.sankeyNode).filter(m(t)).call(v)}function b(t,e,r,n){var i=n.datum().link.label;n.style(\"fill-opacity\",(function(t){return t.tinyColorAlpha})),i&&h(e,t).selectAll(\".\"+c.sankeyLink).filter((function(t){return t.link.label===i})).style(\"fill-opacity\",(function(t){return t.tinyColorAlpha})),r&&h(e,t).selectAll(c.sankeyNode).filter(m(t)).call(y)}function _(t,e){var r=t.hoverlabel||{},n=i.nestedProperty(r,e).get();return!Array.isArray(n)&&n}e.exports=function(t,e){for(var r=t._fullLayout,i=r._paper,h=r._size,g=0;g\"),color:_(o,\"bgcolor\")||l.addOpacity(g.color,1),borderColor:_(o,\"bordercolor\"),fontFamily:_(o,\"font.family\"),fontSize:_(o,\"font.size\"),fontColor:_(o,\"font.color\"),nameLength:_(o,\"namelength\"),textAlign:_(o,\"align\"),idealAlign:n.event.x\"),color:_(o,\"bgcolor\")||i.tinyColorHue,borderColor:_(o,\"bordercolor\"),fontFamily:_(o,\"font.family\"),fontSize:_(o,\"font.size\"),fontColor:_(o,\"font.color\"),nameLength:_(o,\"namelength\"),textAlign:_(o,\"align\"),idealAlign:\"left\",hovertemplate:o.hovertemplate,hovertemplateLabels:y,eventData:[i.node]},{container:r._hoverlayer.node(),outerContainer:r._paper.node(),gd:t});p(w,.85),d(w)}}},unhover:function(e,i,a){!1!==t._fullLayout.hovermode&&(n.select(e).call(y,i,a),\"skip\"!==i.node.trace.node.hoverinfo&&(i.node.fullData=i.node.trace,t.emit(\"plotly_unhover\",{event:n.event,points:[i.node]})),s.loneUnhover(r._hoverlayer.node()))},select:function(e,r,i){var a=r.node;a.originalEvent=n.event,t._hoverdata=[a],n.select(e).call(y,r,i),s.click(t,{target:!0})}}})}},{\"../../components/color\":366,\"../../components/fx\":406,\"../../lib\":503,\"./constants\":919,\"./render\":923,\"@plotly/d3\":58}],923:[function(t,e,r){\"use strict\";var n=t(\"d3-force\"),i=t(\"d3-interpolate\").interpolateNumber,a=t(\"@plotly/d3\"),o=t(\"@plotly/d3-sankey\"),s=t(\"@plotly/d3-sankey-circular\"),l=t(\"./constants\"),c=t(\"tinycolor2\"),u=t(\"../../components/color\"),f=t(\"../../components/drawing\"),h=t(\"../../lib\"),p=h.strTranslate,d=h.strRotate,g=t(\"../../lib/gup\"),m=g.keyFun,v=g.repeat,y=g.unwrap,x=t(\"../../lib/svg_text_utils\"),b=t(\"../../registry\"),_=t(\"../../constants/alignment\"),w=_.CAP_SHIFT,T=_.LINE_SPACING;function k(t,e,r){var n,i=y(e),a=i.trace,u=a.domain,f=\"h\"===a.orientation,p=a.node.pad,d=a.node.thickness,g=t.width*(u.x[1]-u.x[0]),m=t.height*(u.y[1]-u.y[0]),v=i._nodes,x=i._links,b=i.circular;(n=b?s.sankeyCircular().circularLinkGap(0):o.sankey()).iterations(l.sankeyIterations).size(f?[g,m]:[m,g]).nodeWidth(d).nodePadding(p).nodeId((function(t){return t.pointNumber})).nodes(v).links(x);var _,w,T,k=n();for(var A in n.nodePadding()=i||(r=i-e.y0)>1e-6&&(e.y0+=r,e.y1+=r),i=e.y1+p}))}(function(t){var e,r,n=t.map((function(t,e){return{x0:t.x0,index:e}})).sort((function(t,e){return t.x0-e.x0})),i=[],a=-1,o=-1/0;for(_=0;_o+d&&(a+=1,e=s.x0),o=s.x0,i[a]||(i[a]=[]),i[a].push(s),r=e-s.x0,s.x0+=r,s.x1+=r}return i}(v=k.nodes));n.update(k)}return{circular:b,key:r,trace:a,guid:h.randstr(),horizontal:f,width:g,height:m,nodePad:a.node.pad,nodeLineColor:a.node.line.color,nodeLineWidth:a.node.line.width,linkLineColor:a.link.line.color,linkLineWidth:a.link.line.width,valueFormat:a.valueformat,valueSuffix:a.valuesuffix,textFont:a.textfont,translateX:u.x[0]*t.width+t.margin.l,translateY:t.height-u.y[1]*t.height+t.margin.t,dragParallel:f?m:g,dragPerpendicular:f?g:m,arrangement:a.arrangement,sankey:n,graph:k,forceLayouts:{},interactionState:{dragInProgress:!1,hovered:!1}}}function A(t,e,r){var n=c(e.color),i=e.source.label+\"|\"+e.target.label+\"__\"+r;return e.trace=t.trace,e.curveNumber=t.trace.index,{circular:t.circular,key:i,traceId:t.key,pointNumber:e.pointNumber,link:e,tinyColorHue:u.tinyRGB(n),tinyColorAlpha:n.getAlpha(),linkPath:M,linkLineColor:t.linkLineColor,linkLineWidth:t.linkLineWidth,valueFormat:t.valueFormat,valueSuffix:t.valueSuffix,sankey:t.sankey,parent:t,interactionState:t.interactionState,flow:e.flow}}function M(){return function(t){if(t.link.circular)return e=t.link,r=e.width/2,n=e.circularPathData,\"top\"===e.circularLinkType?\"M \"+n.targetX+\" \"+(n.targetY+r)+\" L\"+n.rightInnerExtent+\" \"+(n.targetY+r)+\"A\"+(n.rightLargeArcRadius+r)+\" \"+(n.rightSmallArcRadius+r)+\" 0 0 1 \"+(n.rightFullExtent-r)+\" \"+(n.targetY-n.rightSmallArcRadius)+\"L\"+(n.rightFullExtent-r)+\" \"+n.verticalRightInnerExtent+\"A\"+(n.rightLargeArcRadius+r)+\" \"+(n.rightLargeArcRadius+r)+\" 0 0 1 \"+n.rightInnerExtent+\" \"+(n.verticalFullExtent-r)+\"L\"+n.leftInnerExtent+\" \"+(n.verticalFullExtent-r)+\"A\"+(n.leftLargeArcRadius+r)+\" \"+(n.leftLargeArcRadius+r)+\" 0 0 1 \"+(n.leftFullExtent+r)+\" \"+n.verticalLeftInnerExtent+\"L\"+(n.leftFullExtent+r)+\" \"+(n.sourceY-n.leftSmallArcRadius)+\"A\"+(n.leftLargeArcRadius+r)+\" \"+(n.leftSmallArcRadius+r)+\" 0 0 1 \"+n.leftInnerExtent+\" \"+(n.sourceY+r)+\"L\"+n.sourceX+\" \"+(n.sourceY+r)+\"L\"+n.sourceX+\" \"+(n.sourceY-r)+\"L\"+n.leftInnerExtent+\" \"+(n.sourceY-r)+\"A\"+(n.leftLargeArcRadius-r)+\" \"+(n.leftSmallArcRadius-r)+\" 0 0 0 \"+(n.leftFullExtent-r)+\" \"+(n.sourceY-n.leftSmallArcRadius)+\"L\"+(n.leftFullExtent-r)+\" \"+n.verticalLeftInnerExtent+\"A\"+(n.leftLargeArcRadius-r)+\" \"+(n.leftLargeArcRadius-r)+\" 0 0 0 \"+n.leftInnerExtent+\" \"+(n.verticalFullExtent+r)+\"L\"+n.rightInnerExtent+\" \"+(n.verticalFullExtent+r)+\"A\"+(n.rightLargeArcRadius-r)+\" \"+(n.rightLargeArcRadius-r)+\" 0 0 0 \"+(n.rightFullExtent+r)+\" \"+n.verticalRightInnerExtent+\"L\"+(n.rightFullExtent+r)+\" \"+(n.targetY-n.rightSmallArcRadius)+\"A\"+(n.rightLargeArcRadius-r)+\" \"+(n.rightSmallArcRadius-r)+\" 0 0 0 \"+n.rightInnerExtent+\" \"+(n.targetY-r)+\"L\"+n.targetX+\" \"+(n.targetY-r)+\"Z\":\"M \"+n.targetX+\" \"+(n.targetY-r)+\" L\"+n.rightInnerExtent+\" \"+(n.targetY-r)+\"A\"+(n.rightLargeArcRadius+r)+\" \"+(n.rightSmallArcRadius+r)+\" 0 0 0 \"+(n.rightFullExtent-r)+\" \"+(n.targetY+n.rightSmallArcRadius)+\"L\"+(n.rightFullExtent-r)+\" \"+n.verticalRightInnerExtent+\"A\"+(n.rightLargeArcRadius+r)+\" \"+(n.rightLargeArcRadius+r)+\" 0 0 0 \"+n.rightInnerExtent+\" \"+(n.verticalFullExtent+r)+\"L\"+n.leftInnerExtent+\" \"+(n.verticalFullExtent+r)+\"A\"+(n.leftLargeArcRadius+r)+\" \"+(n.leftLargeArcRadius+r)+\" 0 0 0 \"+(n.leftFullExtent+r)+\" \"+n.verticalLeftInnerExtent+\"L\"+(n.leftFullExtent+r)+\" \"+(n.sourceY+n.leftSmallArcRadius)+\"A\"+(n.leftLargeArcRadius+r)+\" \"+(n.leftSmallArcRadius+r)+\" 0 0 0 \"+n.leftInnerExtent+\" \"+(n.sourceY-r)+\"L\"+n.sourceX+\" \"+(n.sourceY-r)+\"L\"+n.sourceX+\" \"+(n.sourceY+r)+\"L\"+n.leftInnerExtent+\" \"+(n.sourceY+r)+\"A\"+(n.leftLargeArcRadius-r)+\" \"+(n.leftSmallArcRadius-r)+\" 0 0 1 \"+(n.leftFullExtent-r)+\" \"+(n.sourceY+n.leftSmallArcRadius)+\"L\"+(n.leftFullExtent-r)+\" \"+n.verticalLeftInnerExtent+\"A\"+(n.leftLargeArcRadius-r)+\" \"+(n.leftLargeArcRadius-r)+\" 0 0 1 \"+n.leftInnerExtent+\" \"+(n.verticalFullExtent-r)+\"L\"+n.rightInnerExtent+\" \"+(n.verticalFullExtent-r)+\"A\"+(n.rightLargeArcRadius-r)+\" \"+(n.rightLargeArcRadius-r)+\" 0 0 1 \"+(n.rightFullExtent+r)+\" \"+n.verticalRightInnerExtent+\"L\"+(n.rightFullExtent+r)+\" \"+(n.targetY+n.rightSmallArcRadius)+\"A\"+(n.rightLargeArcRadius-r)+\" \"+(n.rightSmallArcRadius-r)+\" 0 0 1 \"+n.rightInnerExtent+\" \"+(n.targetY+r)+\"L\"+n.targetX+\" \"+(n.targetY+r)+\"Z\";var e,r,n,a=t.link.source.x1,o=t.link.target.x0,s=i(a,o),l=s(.5),c=s(.5),u=t.link.y0-t.link.width/2,f=t.link.y0+t.link.width/2,h=t.link.y1-t.link.width/2,p=t.link.y1+t.link.width/2;return\"M\"+a+\",\"+u+\"C\"+l+\",\"+u+\" \"+c+\",\"+h+\" \"+o+\",\"+h+\"L\"+o+\",\"+p+\"C\"+c+\",\"+p+\" \"+l+\",\"+f+\" \"+a+\",\"+f+\"Z\"}}function S(t,e){var r=c(e.color),n=l.nodePadAcross,i=t.nodePad/2;e.dx=e.x1-e.x0,e.dy=e.y1-e.y0;var a=e.dx,o=Math.max(.5,e.dy),s=\"node_\"+e.pointNumber;return e.group&&(s=h.randstr()),e.trace=t.trace,e.curveNumber=t.trace.index,{index:e.pointNumber,key:s,partOfGroup:e.partOfGroup||!1,group:e.group,traceId:t.key,trace:t.trace,node:e,nodePad:t.nodePad,nodeLineColor:t.nodeLineColor,nodeLineWidth:t.nodeLineWidth,textFont:t.textFont,size:t.horizontal?t.height:t.width,visibleWidth:Math.ceil(a),visibleHeight:o,zoneX:-n,zoneY:-i,zoneWidth:a+2*n,zoneHeight:o+2*i,labelY:t.horizontal?e.dy/2+1:e.dx/2+1,left:1===e.originalLayer,sizeAcross:t.width,forceLayouts:t.forceLayouts,horizontal:t.horizontal,darkBackground:r.getBrightness()<=128,tinyColorHue:u.tinyRGB(r),tinyColorAlpha:r.getAlpha(),valueFormat:t.valueFormat,valueSuffix:t.valueSuffix,sankey:t.sankey,graph:t.graph,arrangement:t.arrangement,uniqueNodeLabelPathId:[t.guid,t.key,s].join(\"_\"),interactionState:t.interactionState,figure:t}}function E(t){t.attr(\"transform\",(function(t){return p(t.node.x0.toFixed(3),t.node.y0.toFixed(3))}))}function L(t){t.call(E)}function C(t,e){t.call(L),e.attr(\"d\",M())}function P(t){t.attr(\"width\",(function(t){return t.node.x1-t.node.x0})).attr(\"height\",(function(t){return t.visibleHeight}))}function I(t){return t.link.width>1||t.linkLineWidth>0}function O(t){return p(t.translateX,t.translateY)+(t.horizontal?\"matrix(1 0 0 1 0 0)\":\"matrix(0 1 1 0 0 0)\")}function z(t,e,r){t.on(\".basic\",null).on(\"mouseover.basic\",(function(t){t.interactionState.dragInProgress||t.partOfGroup||(r.hover(this,t,e),t.interactionState.hovered=[this,t])})).on(\"mousemove.basic\",(function(t){t.interactionState.dragInProgress||t.partOfGroup||(r.follow(this,t),t.interactionState.hovered=[this,t])})).on(\"mouseout.basic\",(function(t){t.interactionState.dragInProgress||t.partOfGroup||(r.unhover(this,t,e),t.interactionState.hovered=!1)})).on(\"click.basic\",(function(t){t.interactionState.hovered&&(r.unhover(this,t,e),t.interactionState.hovered=!1),t.interactionState.dragInProgress||t.partOfGroup||r.select(this,t,e)}))}function D(t,e,r,i){var o=a.behavior.drag().origin((function(t){return{x:t.node.x0+t.visibleWidth/2,y:t.node.y0+t.visibleHeight/2}})).on(\"dragstart\",(function(a){if(\"fixed\"!==a.arrangement&&(h.ensureSingle(i._fullLayout._infolayer,\"g\",\"dragcover\",(function(t){i._fullLayout._dragCover=t})),h.raiseToTop(this),a.interactionState.dragInProgress=a.node,F(a.node),a.interactionState.hovered&&(r.nodeEvents.unhover.apply(0,a.interactionState.hovered),a.interactionState.hovered=!1),\"snap\"===a.arrangement)){var o=a.traceId+\"|\"+a.key;a.forceLayouts[o]?a.forceLayouts[o].alpha(1):function(t,e,r,i){!function(t){for(var e=0;e0&&n.forceLayouts[e].alpha(0)}}(0,e,a,r)).stop()}(0,o,a),function(t,e,r,n,i){window.requestAnimationFrame((function a(){var o;for(o=0;o0)window.requestAnimationFrame(a);else{var s=r.node.originalX;r.node.x0=s-r.visibleWidth/2,r.node.x1=s+r.visibleWidth/2,R(r,i)}}))}(t,e,a,o,i)}})).on(\"drag\",(function(r){if(\"fixed\"!==r.arrangement){var n=a.event.x,i=a.event.y;\"snap\"===r.arrangement?(r.node.x0=n-r.visibleWidth/2,r.node.x1=n+r.visibleWidth/2,r.node.y0=i-r.visibleHeight/2,r.node.y1=i+r.visibleHeight/2):(\"freeform\"===r.arrangement&&(r.node.x0=n-r.visibleWidth/2,r.node.x1=n+r.visibleWidth/2),i=Math.max(0,Math.min(r.size-r.visibleHeight/2,i)),r.node.y0=i-r.visibleHeight/2,r.node.y1=i+r.visibleHeight/2),F(r.node),\"snap\"!==r.arrangement&&(r.sankey.update(r.graph),C(t.filter(B(r)),e))}})).on(\"dragend\",(function(t){if(\"fixed\"!==t.arrangement){t.interactionState.dragInProgress=!1;for(var e=0;el&&C[v].gap;)v--;for(x=C[v].s,g=C.length-1;g>v;g--)C[g].s=x;for(;lM[u]&&u=0;i--){var a=t[i];if(\"scatter\"===a.type&&a.xaxis===r.xaxis&&a.yaxis===r.yaxis){a.opacity=void 0;break}}}}}},{}],933:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../registry\"),a=t(\"./attributes\"),o=t(\"./constants\"),s=t(\"./subtypes\"),l=t(\"./xy_defaults\"),c=t(\"./period_defaults\"),u=t(\"./stack_defaults\"),f=t(\"./marker_defaults\"),h=t(\"./line_defaults\"),p=t(\"./line_shape_defaults\"),d=t(\"./text_defaults\"),g=t(\"./fillcolor_defaults\");e.exports=function(t,e,r,m){function v(r,i){return n.coerce(t,e,a,r,i)}var y=l(t,e,m,v);if(y||(e.visible=!1),e.visible){c(t,e,m,v),v(\"xhoverformat\"),v(\"yhoverformat\");var x=u(t,e,m,v),b=!x&&y=Math.min(e,r)&&d<=Math.max(e,r)?0:1/0}var n=Math.max(3,t.mrc||0),i=1-1/n,a=Math.abs(h.c2p(t.x)-d);return a=Math.min(e,r)&&g<=Math.max(e,r)?0:1/0}var n=Math.max(3,t.mrc||0),i=1-1/n,a=Math.abs(p.c2p(t.y)-g);return aW!=(N=z[I][1])>=W&&(R=z[I-1][0],F=z[I][0],N-B&&(D=R+(F-R)*(W-B)/(N-B),H=Math.min(H,D),q=Math.max(q,D)));H=Math.max(H,0),q=Math.min(q,h._length);var X=s.defaultLine;return s.opacity(f.fillcolor)?X=f.fillcolor:s.opacity((f.line||{}).color)&&(X=f.line.color),n.extendFlat(t,{distance:t.maxHoverDistance,x0:H,x1:q,y0:W,y1:W,color:X,hovertemplate:!1}),delete t.index,f.text&&!Array.isArray(f.text)?t.text=String(f.text):t.text=f.name,[t]}}}},{\"../../components/color\":366,\"../../components/fx\":406,\"../../lib\":503,\"../../registry\":638,\"./get_trace_color\":936}],938:[function(t,e,r){\"use strict\";var n=t(\"./subtypes\");e.exports={hasLines:n.hasLines,hasMarkers:n.hasMarkers,hasText:n.hasText,isBubble:n.isBubble,attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),crossTraceDefaults:t(\"./cross_trace_defaults\"),calc:t(\"./calc\").calc,crossTraceCalc:t(\"./cross_trace_calc\"),arraysToCalcdata:t(\"./arrays_to_calcdata\"),plot:t(\"./plot\"),colorbar:t(\"./marker_colorbar\"),formatLabels:t(\"./format_labels\"),style:t(\"./style\").style,styleOnSelect:t(\"./style\").styleOnSelect,hoverPoints:t(\"./hover\"),selectPoints:t(\"./select\"),animatable:!0,moduleType:\"trace\",name:\"scatter\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"cartesian\",\"svg\",\"symbols\",\"errorBarsOK\",\"showLegend\",\"scatter-like\",\"zoomScale\"],meta:{}}},{\"../../plots/cartesian\":568,\"./arrays_to_calcdata\":925,\"./attributes\":926,\"./calc\":927,\"./cross_trace_calc\":931,\"./cross_trace_defaults\":932,\"./defaults\":933,\"./format_labels\":935,\"./hover\":937,\"./marker_colorbar\":944,\"./plot\":947,\"./select\":948,\"./style\":950,\"./subtypes\":951}],939:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").isArrayOrTypedArray,i=t(\"../../components/colorscale/helpers\").hasColorscale,a=t(\"../../components/colorscale/defaults\");e.exports=function(t,e,r,o,s,l){var c=(t.marker||{}).color;(s(\"line.color\",r),i(t,\"line\"))?a(t,e,o,s,{prefix:\"line.\",cLetter:\"c\"}):s(\"line.color\",!n(c)&&c||r);s(\"line.width\"),(l||{}).noDash||s(\"line.dash\")}},{\"../../components/colorscale/defaults\":376,\"../../components/colorscale/helpers\":377,\"../../lib\":503}],940:[function(t,e,r){\"use strict\";var n=t(\"../../constants/numerical\"),i=n.BADNUM,a=n.LOG_CLIP,o=a+.5,s=a-.5,l=t(\"../../lib\"),c=l.segmentsIntersect,u=l.constrain,f=t(\"./constants\");e.exports=function(t,e){var r,n,a,h,p,d,g,m,v,y,x,b,_,w,T,k,A,M,S=e.xaxis,E=e.yaxis,L=\"log\"===S.type,C=\"log\"===E.type,P=S._length,I=E._length,O=e.connectGaps,z=e.baseTolerance,D=e.shape,R=\"linear\"===D,F=e.fill&&\"none\"!==e.fill,B=[],N=f.minTolerance,j=t.length,U=new Array(j),V=0;function H(r){var n=t[r];if(!n)return!1;var a=e.linearized?S.l2p(n.x):S.c2p(n.x),l=e.linearized?E.l2p(n.y):E.c2p(n.y);if(a===i){if(L&&(a=S.c2p(n.x,!0)),a===i)return!1;C&&l===i&&(a*=Math.abs(S._m*I*(S._m>0?o:s)/(E._m*P*(E._m>0?o:s)))),a*=1e3}if(l===i){if(C&&(l=E.c2p(n.y,!0)),l===i)return!1;l*=1e3}return[a,l]}function q(t,e,r,n){var i=r-t,a=n-e,o=.5-t,s=.5-e,l=i*i+a*a,c=i*o+a*s;if(c>0&&crt||t[1]it)return[u(t[0],et,rt),u(t[1],nt,it)]}function st(t,e){return t[0]===e[0]&&(t[0]===et||t[0]===rt)||(t[1]===e[1]&&(t[1]===nt||t[1]===it)||void 0)}function lt(t,e,r){return function(n,i){var a=ot(n),o=ot(i),s=[];if(a&&o&&st(a,o))return s;a&&s.push(a),o&&s.push(o);var c=2*l.constrain((n[t]+i[t])/2,e,r)-((a||n)[t]+(o||i)[t]);c&&((a&&o?c>0==a[t]>o[t]?a:o:a||o)[t]+=c);return s}}function ct(t){var e=t[0],r=t[1],n=e===U[V-1][0],i=r===U[V-1][1];if(!n||!i)if(V>1){var a=e===U[V-2][0],o=r===U[V-2][1];n&&(e===et||e===rt)&&a?o?V--:U[V-1]=t:i&&(r===nt||r===it)&&o?a?V--:U[V-1]=t:U[V++]=t}else U[V++]=t}function ut(t){U[V-1][0]!==t[0]&&U[V-1][1]!==t[1]&&ct([Z,J]),ct(t),K=null,Z=J=0}function ft(t){if(A=t[0]/P,M=t[1]/I,W=t[0]rt?rt:0,X=t[1]it?it:0,W||X){if(V)if(K){var e=$(K,t);e.length>1&&(ut(e[0]),U[V++]=e[1])}else Q=$(U[V-1],t)[0],U[V++]=Q;else U[V++]=[W||t[0],X||t[1]];var r=U[V-1];W&&X&&(r[0]!==W||r[1]!==X)?(K&&(Z!==W&&J!==X?ct(Z&&J?(n=K,a=(i=t)[0]-n[0],o=(i[1]-n[1])/a,(n[1]*i[0]-i[1]*n[0])/a>0?[o>0?et:rt,it]:[o>0?rt:et,nt]):[Z||W,J||X]):Z&&J&&ct([Z,J])),ct([W,X])):Z-W&&J-X&&ct([W||Z,X||J]),K=t,Z=W,J=X}else K&&ut($(K,t)[0]),U[V++]=t;var n,i,a,o}for(\"linear\"===D||\"spline\"===D?$=function(t,e){for(var r=[],n=0,i=0;i<4;i++){var a=at[i],o=c(t[0],t[1],e[0],e[1],a[0],a[1],a[2],a[3]);o&&(!n||Math.abs(o.x-r[0][0])>1||Math.abs(o.y-r[0][1])>1)&&(o=[o.x,o.y],n&&Y(o,t)G(d,ht))break;a=d,(_=v[0]*m[0]+v[1]*m[1])>x?(x=_,h=d,g=!1):_=t.length||!d)break;ft(d),n=d}}else ft(h)}K&&ct([Z||K[0],J||K[1]]),B.push(U.slice(0,V))}return B}},{\"../../constants/numerical\":479,\"../../lib\":503,\"./constants\":930}],941:[function(t,e,r){\"use strict\";e.exports=function(t,e,r){\"spline\"===r(\"line.shape\")&&r(\"line.smoothing\")}},{}],942:[function(t,e,r){\"use strict\";var n={tonextx:1,tonexty:1,tonext:1};e.exports=function(t,e,r){var i,a,o,s,l,c={},u=!1,f=-1,h=0,p=-1;for(a=0;a=0?l=p:(l=p=h,h++),l0?Math.max(r,a):0}}},{\"fast-isnumeric\":190}],944:[function(t,e,r){\"use strict\";e.exports={container:\"marker\",min:\"cmin\",max:\"cmax\"}},{}],945:[function(t,e,r){\"use strict\";var n=t(\"../../components/color\"),i=t(\"../../components/colorscale/helpers\").hasColorscale,a=t(\"../../components/colorscale/defaults\"),o=t(\"./subtypes\");e.exports=function(t,e,r,s,l,c){var u=o.isBubble(t),f=(t.line||{}).color;(c=c||{},f&&(r=f),l(\"marker.symbol\"),l(\"marker.opacity\",u?.7:1),l(\"marker.size\"),l(\"marker.color\",r),i(t,\"marker\")&&a(t,e,s,l,{prefix:\"marker.\",cLetter:\"c\"}),c.noSelect||(l(\"selected.marker.color\"),l(\"unselected.marker.color\"),l(\"selected.marker.size\"),l(\"unselected.marker.size\")),c.noLine||(l(\"marker.line.color\",f&&!Array.isArray(f)&&e.marker.color!==f?f:u?n.background:n.defaultLine),i(t,\"marker.line\")&&a(t,e,s,l,{prefix:\"marker.line.\",cLetter:\"c\"}),l(\"marker.line.width\",u?1:0)),u&&(l(\"marker.sizeref\"),l(\"marker.sizemin\"),l(\"marker.sizemode\")),c.gradient)&&(\"none\"!==l(\"marker.gradient.type\")&&l(\"marker.gradient.color\"))}},{\"../../components/color\":366,\"../../components/colorscale/defaults\":376,\"../../components/colorscale/helpers\":377,\"./subtypes\":951}],946:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").dateTick0,i=t(\"../../constants/numerical\").ONEWEEK;function a(t,e){return n(e,t%i==0?1:0)}e.exports=function(t,e,r,n,i){if(i||(i={x:!0,y:!0}),i.x){var o=n(\"xperiod\");o&&(n(\"xperiod0\",a(o,e.xcalendar)),n(\"xperiodalignment\"))}if(i.y){var s=n(\"yperiod\");s&&(n(\"yperiod0\",a(s,e.ycalendar)),n(\"yperiodalignment\"))}}},{\"../../constants/numerical\":479,\"../../lib\":503}],947:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../registry\"),a=t(\"../../lib\"),o=a.ensureSingle,s=a.identity,l=t(\"../../components/drawing\"),c=t(\"./subtypes\"),u=t(\"./line_points\"),f=t(\"./link_traces\"),h=t(\"../../lib/polygon\").tester;function p(t,e,r,f,p,d,g){var m;!function(t,e,r,i,o){var s=r.xaxis,l=r.yaxis,u=n.extent(a.simpleMap(s.range,s.r2c)),f=n.extent(a.simpleMap(l.range,l.r2c)),h=i[0].trace;if(!c.hasMarkers(h))return;var p=h.marker.maxdisplayed;if(0===p)return;var d=i.filter((function(t){return t.x>=u[0]&&t.x<=u[1]&&t.y>=f[0]&&t.y<=f[1]})),g=Math.ceil(d.length/p),m=0;o.forEach((function(t,r){var n=t[0].trace;c.hasMarkers(n)&&n.marker.maxdisplayed>0&&r0;function y(t){return v?t.transition():t}var x=r.xaxis,b=r.yaxis,_=f[0].trace,w=_.line,T=n.select(d),k=o(T,\"g\",\"errorbars\"),A=o(T,\"g\",\"lines\"),M=o(T,\"g\",\"points\"),S=o(T,\"g\",\"text\");if(i.getComponentMethod(\"errorbars\",\"plot\")(t,k,r,g),!0===_.visible){var E,L;y(T).style(\"opacity\",_.opacity);var C=_.fill.charAt(_.fill.length-1);\"x\"!==C&&\"y\"!==C&&(C=\"\"),f[0][r.isRangePlot?\"nodeRangePlot3\":\"node3\"]=T;var P,I,O=\"\",z=[],D=_._prevtrace;D&&(O=D._prevRevpath||\"\",L=D._nextFill,z=D._polygons);var R,F,B,N,j,U,V,H=\"\",q=\"\",G=[],Y=a.noop;if(E=_._ownFill,c.hasLines(_)||\"none\"!==_.fill){for(L&&L.datum(f),-1!==[\"hv\",\"vh\",\"hvh\",\"vhv\"].indexOf(w.shape)?(R=l.steps(w.shape),F=l.steps(w.shape.split(\"\").reverse().join(\"\"))):R=F=\"spline\"===w.shape?function(t){var e=t[t.length-1];return t.length>1&&t[0][0]===e[0]&&t[0][1]===e[1]?l.smoothclosed(t.slice(1),w.smoothing):l.smoothopen(t,w.smoothing)}:function(t){return\"M\"+t.join(\"L\")},B=function(t){return F(t.reverse())},G=u(f,{xaxis:x,yaxis:b,connectGaps:_.connectgaps,baseTolerance:Math.max(w.width||1,3)/4,shape:w.shape,simplify:w.simplify,fill:_.fill}),V=_._polygons=new Array(G.length),m=0;m1){var r=n.select(this);if(r.datum(f),t)y(r.style(\"opacity\",0).attr(\"d\",P).call(l.lineGroupStyle)).style(\"opacity\",1);else{var i=y(r);i.attr(\"d\",P),l.singleLineStyle(f,i)}}}}}var W=A.selectAll(\".js-line\").data(G);y(W.exit()).style(\"opacity\",0).remove(),W.each(Y(!1)),W.enter().append(\"path\").classed(\"js-line\",!0).style(\"vector-effect\",\"non-scaling-stroke\").call(l.lineGroupStyle).each(Y(!0)),l.setClipUrl(W,r.layerClipId,t),G.length?(E?(E.datum(f),N&&U&&(C?(\"y\"===C?N[1]=U[1]=b.c2p(0,!0):\"x\"===C&&(N[0]=U[0]=x.c2p(0,!0)),y(E).attr(\"d\",\"M\"+U+\"L\"+N+\"L\"+H.substr(1)).call(l.singleFillStyle)):y(E).attr(\"d\",H+\"Z\").call(l.singleFillStyle))):L&&(\"tonext\"===_.fill.substr(0,6)&&H&&O?(\"tonext\"===_.fill?y(L).attr(\"d\",H+\"Z\"+O+\"Z\").call(l.singleFillStyle):y(L).attr(\"d\",H+\"L\"+O.substr(1)+\"Z\").call(l.singleFillStyle),_._polygons=_._polygons.concat(z)):(Z(L),_._polygons=null)),_._prevRevpath=q,_._prevPolygons=V):(E?Z(E):L&&Z(L),_._polygons=_._prevRevpath=_._prevPolygons=null),M.datum(f),S.datum(f),function(e,i,a){var o,u=a[0].trace,f=c.hasMarkers(u),h=c.hasText(u),p=tt(u),d=et,g=et;if(f||h){var m=s,_=u.stackgroup,w=_&&\"infer zero\"===t._fullLayout._scatterStackOpts[x._id+b._id][_].stackgaps;u.marker.maxdisplayed||u._needsCull?m=w?K:J:_&&!w&&(m=Q),f&&(d=m),h&&(g=m)}var T,k=(o=e.selectAll(\"path.point\").data(d,p)).enter().append(\"path\").classed(\"point\",!0);v&&k.call(l.pointStyle,u,t).call(l.translatePoints,x,b).style(\"opacity\",0).transition().style(\"opacity\",1),o.order(),f&&(T=l.makePointStyleFns(u)),o.each((function(e){var i=n.select(this),a=y(i);l.translatePoint(e,a,x,b)?(l.singlePointStyle(e,a,u,T,t),r.layerClipId&&l.hideOutsideRangePoint(e,a,x,b,u.xcalendar,u.ycalendar),u.customdata&&i.classed(\"plotly-customdata\",null!==e.data&&void 0!==e.data)):a.remove()})),v?o.exit().transition().style(\"opacity\",0).remove():o.exit().remove(),(o=i.selectAll(\"g\").data(g,p)).enter().append(\"g\").classed(\"textpoint\",!0).append(\"text\"),o.order(),o.each((function(t){var e=n.select(this),i=y(e.select(\"text\"));l.translatePoint(t,i,x,b)?r.layerClipId&&l.hideOutsideRangePoint(t,e,x,b,u.xcalendar,u.ycalendar):e.remove()})),o.selectAll(\"text\").call(l.textPointStyle,u,t).each((function(t){var e=x.c2p(t.x),r=b.c2p(t.y);n.select(this).selectAll(\"tspan.line\").each((function(){y(n.select(this)).attr({x:e,y:r})}))})),o.exit().remove()}(M,S,f);var X=!1===_.cliponaxis?null:r.layerClipId;l.setClipUrl(M,X,t),l.setClipUrl(S,X,t)}function Z(t){y(t).attr(\"d\",\"M0,0Z\")}function J(t){return t.filter((function(t){return!t.gap&&t.vis}))}function K(t){return t.filter((function(t){return t.vis}))}function Q(t){return t.filter((function(t){return!t.gap}))}function $(t){return t.id}function tt(t){if(t.ids)return $}function et(){return!1}}e.exports=function(t,e,r,i,a,c){var u,h,d=!a,g=!!a&&a.duration>0,m=f(t,e,r);((u=i.selectAll(\"g.trace\").data(m,(function(t){return t[0].trace.uid}))).enter().append(\"g\").attr(\"class\",(function(t){return\"trace scatter trace\"+t[0].trace.uid})).style(\"stroke-miterlimit\",2),u.order(),function(t,e,r){e.each((function(e){var i=o(n.select(this),\"g\",\"fills\");l.setClipUrl(i,r.layerClipId,t);var a=e[0].trace,c=[];a._ownfill&&c.push(\"_ownFill\"),a._nexttrace&&c.push(\"_nextFill\");var u=i.selectAll(\"g\").data(c,s);u.enter().append(\"g\"),u.exit().each((function(t){a[t]=null})).remove(),u.order().each((function(t){a[t]=o(n.select(this),\"path\",\"js-fill\")}))}))}(t,u,e),g)?(c&&(h=c()),n.transition().duration(a.duration).ease(a.easing).each(\"end\",(function(){h&&h()})).each(\"interrupt\",(function(){h&&h()})).each((function(){i.selectAll(\"g.trace\").each((function(r,n){p(t,n,e,r,m,this,a)}))}))):u.each((function(r,n){p(t,n,e,r,m,this,a)}));d&&u.exit().remove(),i.selectAll(\"path:not([d])\").remove()}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/polygon\":515,\"../../registry\":638,\"./line_points\":940,\"./link_traces\":942,\"./subtypes\":951,\"@plotly/d3\":58}],948:[function(t,e,r){\"use strict\";var n=t(\"./subtypes\");e.exports=function(t,e){var r,i,a,o,s=t.cd,l=t.xaxis,c=t.yaxis,u=[],f=s[0].trace;if(!n.hasMarkers(f)&&!n.hasText(f))return[];if(!1===e)for(r=0;r0){var h=i.c2l(u);i._lowerLogErrorBound||(i._lowerLogErrorBound=h),i._lowerErrorBound=Math.min(i._lowerLogErrorBound,h)}}else o[s]=[-l[0]*r,l[1]*r]}return o}e.exports=function(t,e,r){var n=[i(t.x,t.error_x,e[0],r.xaxis),i(t.y,t.error_y,e[1],r.yaxis),i(t.z,t.error_z,e[2],r.zaxis)],a=function(t){for(var e=0;e-1?-1:t.indexOf(\"right\")>-1?1:0}function b(t){return null==t?0:t.indexOf(\"top\")>-1?-1:t.indexOf(\"bottom\")>-1?1:0}function _(t,e){return e(4*t)}function w(t){return p[t]}function T(t,e,r,n,i){var a=null;if(l.isArrayOrTypedArray(t)){a=[];for(var o=0;o=0){var g=function(t,e,r){var n,i=(r+1)%3,a=(r+2)%3,o=[],l=[];for(n=0;n=0&&f(\"surfacecolor\",h||p);for(var d=[\"x\",\"y\",\"z\"],g=0;g<3;++g){var m=\"projection.\"+d[g];f(m+\".show\")&&(f(m+\".opacity\"),f(m+\".scale\"))}var v=n.getComponentMethod(\"errorbars\",\"supplyDefaults\");v(t,e,h||p||r,{axis:\"z\"}),v(t,e,h||p||r,{axis:\"y\",inherit:\"z\"}),v(t,e,h||p||r,{axis:\"x\",inherit:\"z\"})}else e.visible=!1}},{\"../../lib\":503,\"../../registry\":638,\"../scatter/line_defaults\":939,\"../scatter/marker_defaults\":945,\"../scatter/subtypes\":951,\"../scatter/text_defaults\":952,\"./attributes\":954}],959:[function(t,e,r){\"use strict\";e.exports={plot:t(\"./convert\"),attributes:t(\"./attributes\"),markerSymbols:t(\"../../constants/gl3d_markers\"),supplyDefaults:t(\"./defaults\"),colorbar:[{container:\"marker\",min:\"cmin\",max:\"cmax\"},{container:\"line\",min:\"cmin\",max:\"cmax\"}],calc:t(\"./calc\"),moduleType:\"trace\",name:\"scatter3d\",basePlotModule:t(\"../../plots/gl3d\"),categories:[\"gl3d\",\"symbols\",\"showLegend\",\"scatter-like\"],meta:{}}},{\"../../constants/gl3d_markers\":477,\"../../plots/gl3d\":598,\"./attributes\":954,\"./calc\":955,\"./convert\":957,\"./defaults\":958}],960:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\"),i=t(\"../../plots/attributes\"),a=t(\"../../plots/template_attributes\").hovertemplateAttrs,o=t(\"../../plots/template_attributes\").texttemplateAttrs,s=t(\"../../components/colorscale/attributes\"),l=t(\"../../lib/extend\").extendFlat,c=n.marker,u=n.line,f=c.line;e.exports={carpet:{valType:\"string\",editType:\"calc\"},a:{valType:\"data_array\",editType:\"calc\"},b:{valType:\"data_array\",editType:\"calc\"},mode:l({},n.mode,{dflt:\"markers\"}),text:l({},n.text,{}),texttemplate:o({editType:\"plot\"},{keys:[\"a\",\"b\",\"text\"]}),hovertext:l({},n.hovertext,{}),line:{color:u.color,width:u.width,dash:u.dash,shape:l({},u.shape,{values:[\"linear\",\"spline\"]}),smoothing:u.smoothing,editType:\"calc\"},connectgaps:n.connectgaps,fill:l({},n.fill,{values:[\"none\",\"toself\",\"tonext\"],dflt:\"none\"}),fillcolor:n.fillcolor,marker:l({symbol:c.symbol,opacity:c.opacity,maxdisplayed:c.maxdisplayed,size:c.size,sizeref:c.sizeref,sizemin:c.sizemin,sizemode:c.sizemode,line:l({width:f.width,editType:\"calc\"},s(\"marker.line\")),gradient:c.gradient,editType:\"calc\"},s(\"marker\")),textfont:n.textfont,textposition:n.textposition,selected:n.selected,unselected:n.unselected,hoverinfo:l({},i.hoverinfo,{flags:[\"a\",\"b\",\"text\",\"name\"]}),hoveron:n.hoveron,hovertemplate:a()}},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/template_attributes\":633,\"../scatter/attributes\":926}],961:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../scatter/colorscale_calc\"),a=t(\"../scatter/arrays_to_calcdata\"),o=t(\"../scatter/calc_selection\"),s=t(\"../scatter/calc\").calcMarkerSize,l=t(\"../carpet/lookup_carpetid\");e.exports=function(t,e){var r=e._carpetTrace=l(t,e);if(r&&r.visible&&\"legendonly\"!==r.visible){var c;e.xaxis=r.xaxis,e.yaxis=r.yaxis;var u,f,h=e._length,p=new Array(h),d=!1;for(c=0;c\")}return o}function y(t,e){var r;r=t.labelprefix&&t.labelprefix.length>0?t.labelprefix.replace(/ = $/,\"\"):t._hovertitle,m.push(r+\": \"+e.toFixed(3)+t.labelsuffix)}}},{\"../../lib\":503,\"../scatter/hover\":937}],966:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"./format_labels\"),calc:t(\"./calc\"),plot:t(\"./plot\"),style:t(\"../scatter/style\").style,styleOnSelect:t(\"../scatter/style\").styleOnSelect,hoverPoints:t(\"./hover\"),selectPoints:t(\"../scatter/select\"),eventData:t(\"./event_data\"),moduleType:\"trace\",name:\"scattercarpet\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"svg\",\"carpet\",\"symbols\",\"showLegend\",\"carpetDependent\",\"zoomScale\"],meta:{}}},{\"../../plots/cartesian\":568,\"../scatter/marker_colorbar\":944,\"../scatter/select\":948,\"../scatter/style\":950,\"./attributes\":960,\"./calc\":961,\"./defaults\":962,\"./event_data\":963,\"./format_labels\":964,\"./hover\":965,\"./plot\":967}],967:[function(t,e,r){\"use strict\";var n=t(\"../scatter/plot\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"../../components/drawing\");e.exports=function(t,e,r,o){var s,l,c,u=r[0][0].carpet,f={xaxis:i.getFromId(t,u.xaxis||\"x\"),yaxis:i.getFromId(t,u.yaxis||\"y\"),plot:e.plot};for(n(t,f,r,o),s=0;s\")}(c,g,t,l[0].t.labels),t.hovertemplate=c.hovertemplate,[t]}}},{\"../../components/fx\":406,\"../../constants/numerical\":479,\"../../lib\":503,\"../scatter/get_trace_color\":936,\"./attributes\":968}],974:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"./format_labels\"),calc:t(\"./calc\"),calcGeoJSON:t(\"./plot\").calcGeoJSON,plot:t(\"./plot\").plot,style:t(\"./style\"),styleOnSelect:t(\"../scatter/style\").styleOnSelect,hoverPoints:t(\"./hover\"),eventData:t(\"./event_data\"),selectPoints:t(\"./select\"),moduleType:\"trace\",name:\"scattergeo\",basePlotModule:t(\"../../plots/geo\"),categories:[\"geo\",\"symbols\",\"showLegend\",\"scatter-like\"],meta:{}}},{\"../../plots/geo\":589,\"../scatter/marker_colorbar\":944,\"../scatter/style\":950,\"./attributes\":968,\"./calc\":969,\"./defaults\":970,\"./event_data\":971,\"./format_labels\":972,\"./hover\":973,\"./plot\":975,\"./select\":976,\"./style\":977}],975:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../lib/topojson_utils\").getTopojsonFeatures,o=t(\"../../lib/geojson_utils\"),s=t(\"../../lib/geo_location_utils\"),l=t(\"../../plots/cartesian/autorange\").findExtremes,c=t(\"../../constants/numerical\").BADNUM,u=t(\"../scatter/calc\").calcMarkerSize,f=t(\"../scatter/subtypes\"),h=t(\"./style\");e.exports={calcGeoJSON:function(t,e){var r,n,i=t[0].trace,o=e[i.geo],f=o._subplot,h=i._length;if(Array.isArray(i.locations)){var p=i.locationmode,d=\"geojson-id\"===p?s.extractTraceFeature(t):a(i,f.topojson);for(r=0;r=m,w=2*b,T={},k=l.makeCalcdata(e,\"x\"),A=y.makeCalcdata(e,\"y\"),M=s(e,l,\"x\",k),S=s(e,y,\"y\",A),E=M.vals,L=S.vals;e._x=E,e._y=L,e.xperiodalignment&&(e._origX=k,e._xStarts=M.starts,e._xEnds=M.ends),e.yperiodalignment&&(e._origY=A,e._yStarts=S.starts,e._yEnds=S.ends);var C=new Array(w),P=new Array(b);for(r=0;r1&&i.extendFlat(s.line,p.linePositions(t,r,n));if(s.errorX||s.errorY){var l=p.errorBarPositions(t,r,n,a,o);s.errorX&&i.extendFlat(s.errorX,l.x),s.errorY&&i.extendFlat(s.errorY,l.y)}s.text&&(i.extendFlat(s.text,{positions:n},p.textPosition(t,r,s.text,s.marker)),i.extendFlat(s.textSel,{positions:n},p.textPosition(t,r,s.text,s.markerSel)),i.extendFlat(s.textUnsel,{positions:n},p.textPosition(t,r,s.text,s.markerUnsel)));return s}(t,0,e,C,E,L),z=d(t,x);return f(o,e),_?O.marker&&(I=O.marker.sizeAvg||Math.max(O.marker.size,3)):I=c(e,b),u(t,e,l,y,E,L,I),O.errorX&&v(e,l,O.errorX),O.errorY&&v(e,y,O.errorY),O.fill&&!z.fill2d&&(z.fill2d=!0),O.marker&&!z.scatter2d&&(z.scatter2d=!0),O.line&&!z.line2d&&(z.line2d=!0),!O.errorX&&!O.errorY||z.error2d||(z.error2d=!0),O.text&&!z.glText&&(z.glText=!0),O.marker&&(O.marker.snap=b),z.lineOptions.push(O.line),z.errorXOptions.push(O.errorX),z.errorYOptions.push(O.errorY),z.fillOptions.push(O.fill),z.markerOptions.push(O.marker),z.markerSelectedOptions.push(O.markerSel),z.markerUnselectedOptions.push(O.markerUnsel),z.textOptions.push(O.text),z.textSelectedOptions.push(O.textSel),z.textUnselectedOptions.push(O.textUnsel),z.selectBatch.push([]),z.unselectBatch.push([]),T._scene=z,T.index=z.count,T.x=E,T.y=L,T.positions=C,z.count++,[{x:!1,y:!1,t:T,trace:e}]}},{\"../../constants/numerical\":479,\"../../lib\":503,\"../../plots/cartesian/align_period\":551,\"../../plots/cartesian/autorange\":553,\"../../plots/cartesian/axis_ids\":558,\"../scatter/calc\":927,\"../scatter/colorscale_calc\":929,\"./constants\":980,\"./convert\":981,\"./scene_update\":989,\"@plotly/point-cluster\":59}],980:[function(t,e,r){\"use strict\";e.exports={TOO_MANY_POINTS:1e5,SYMBOL_SDF_SIZE:200,SYMBOL_SIZE:20,SYMBOL_STROKE:1,DOT_RE:/-dot/,OPEN_RE:/-open/,DASHES:{solid:[1],dot:[1,1],dash:[4,1],longdash:[8,1],dashdot:[4,1,1,1],longdashdot:[8,1,1,1]}}},{}],981:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"svg-path-sdf\"),a=t(\"color-normalize\"),o=t(\"../../registry\"),s=t(\"../../lib\"),l=t(\"../../components/drawing\"),c=t(\"../../plots/cartesian/axis_ids\"),u=t(\"../../lib/gl_format_color\").formatColor,f=t(\"../scatter/subtypes\"),h=t(\"../scatter/make_bubble_size_func\"),p=t(\"./helpers\"),d=t(\"./constants\"),g=t(\"../../constants/interactions\").DESELECTDIM,m={start:1,left:1,end:-1,right:-1,middle:0,center:0,bottom:1,top:-1},v=t(\"../../components/fx/helpers\").appendArrayPointValue;function y(t,e){var r,i=t._fullLayout,a=e._length,o=e.textfont,l=e.textposition,c=Array.isArray(l)?l:[l],u=o.color,f=o.size,h=o.family,p={},d=t._context.plotGlPixelRatio,g=e.texttemplate;if(g){p.text=[];var m=i._d3locale,y=Array.isArray(g),x=y?Math.min(g.length,a):a,b=y?function(t){return g[t]}:function(){return g};for(r=0;rd.TOO_MANY_POINTS||f.hasMarkers(e)?\"rect\":\"round\";if(c&&e.connectgaps){var h=n[0],p=n[1];for(i=0;i1?l[i]:l[0]:l,d=Array.isArray(c)?c.length>1?c[i]:c[0]:c,g=m[p],v=m[d],y=u?u/.8+1:0,x=-v*y-.5*v;o.offset[i]=[g*y/h,x/h]}}return o}}},{\"../../components/drawing\":388,\"../../components/fx/helpers\":402,\"../../constants/interactions\":478,\"../../lib\":503,\"../../lib/gl_format_color\":499,\"../../plots/cartesian/axis_ids\":558,\"../../registry\":638,\"../scatter/make_bubble_size_func\":943,\"../scatter/subtypes\":951,\"./constants\":980,\"./helpers\":985,\"color-normalize\":89,\"fast-isnumeric\":190,\"svg-path-sdf\":310}],982:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../registry\"),a=t(\"./helpers\"),o=t(\"./attributes\"),s=t(\"../scatter/constants\"),l=t(\"../scatter/subtypes\"),c=t(\"../scatter/xy_defaults\"),u=t(\"../scatter/period_defaults\"),f=t(\"../scatter/marker_defaults\"),h=t(\"../scatter/line_defaults\"),p=t(\"../scatter/fillcolor_defaults\"),d=t(\"../scatter/text_defaults\");e.exports=function(t,e,r,g){function m(r,i){return n.coerce(t,e,o,r,i)}var v=!!t.marker&&a.isOpenSymbol(t.marker.symbol),y=l.isBubble(t),x=c(t,e,g,m);if(x){u(t,e,g,m),m(\"xhoverformat\"),m(\"yhoverformat\");var b=x100},r.isDotSymbol=function(t){return\"string\"==typeof t?n.DOT_RE.test(t):t>200}},{\"./constants\":980}],986:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\"),a=t(\"../scatter/get_trace_color\");function o(t,e,r,o){var s=t.xa,l=t.ya,c=t.distance,u=t.dxy,f=t.index,h={pointNumber:f,x:e[f],y:r[f]};h.tx=Array.isArray(o.text)?o.text[f]:o.text,h.htx=Array.isArray(o.hovertext)?o.hovertext[f]:o.hovertext,h.data=Array.isArray(o.customdata)?o.customdata[f]:o.customdata,h.tp=Array.isArray(o.textposition)?o.textposition[f]:o.textposition;var p=o.textfont;p&&(h.ts=i.isArrayOrTypedArray(p.size)?p.size[f]:p.size,h.tc=Array.isArray(p.color)?p.color[f]:p.color,h.tf=Array.isArray(p.family)?p.family[f]:p.family);var d=o.marker;d&&(h.ms=i.isArrayOrTypedArray(d.size)?d.size[f]:d.size,h.mo=i.isArrayOrTypedArray(d.opacity)?d.opacity[f]:d.opacity,h.mx=i.isArrayOrTypedArray(d.symbol)?d.symbol[f]:d.symbol,h.mc=i.isArrayOrTypedArray(d.color)?d.color[f]:d.color);var g=d&&d.line;g&&(h.mlc=Array.isArray(g.color)?g.color[f]:g.color,h.mlw=i.isArrayOrTypedArray(g.width)?g.width[f]:g.width);var m=d&&d.gradient;m&&\"none\"!==m.type&&(h.mgt=Array.isArray(m.type)?m.type[f]:m.type,h.mgc=Array.isArray(m.color)?m.color[f]:m.color);var v=s.c2p(h.x,!0),y=l.c2p(h.y,!0),x=h.mrc||1,b=o.hoverlabel;b&&(h.hbg=Array.isArray(b.bgcolor)?b.bgcolor[f]:b.bgcolor,h.hbc=Array.isArray(b.bordercolor)?b.bordercolor[f]:b.bordercolor,h.hts=i.isArrayOrTypedArray(b.font.size)?b.font.size[f]:b.font.size,h.htc=Array.isArray(b.font.color)?b.font.color[f]:b.font.color,h.htf=Array.isArray(b.font.family)?b.font.family[f]:b.font.family,h.hnl=i.isArrayOrTypedArray(b.namelength)?b.namelength[f]:b.namelength);var _=o.hoverinfo;_&&(h.hi=Array.isArray(_)?_[f]:_);var w=o.hovertemplate;w&&(h.ht=Array.isArray(w)?w[f]:w);var T={};T[t.index]=h;var k=o._origX,A=o._origY,M=i.extendFlat({},t,{color:a(o,h),x0:v-x,x1:v+x,xLabelVal:k?k[f]:h.x,y0:y-x,y1:y+x,yLabelVal:A?A[f]:h.y,cd:T,distance:c,spikeDistance:u,hovertemplate:h.ht});return h.htx?M.text=h.htx:h.tx?M.text=h.tx:o.text&&(M.text=o.text),i.fillText(h,o,M),n.getComponentMethod(\"errorbars\",\"hoverInfo\")(h,o,M),M}e.exports={hoverPoints:function(t,e,r,n){var i,a,s,l,c,u,f,h,p,d,g=t.cd,m=g[0].t,v=g[0].trace,y=t.xa,x=t.ya,b=m.x,_=m.y,w=y.c2p(e),T=x.c2p(r),k=t.distance;if(m.tree){var A=y.p2c(w-k),M=y.p2c(w+k),S=x.p2c(T-k),E=x.p2c(T+k);i=\"x\"===n?m.tree.range(Math.min(A,M),Math.min(x._rl[0],x._rl[1]),Math.max(A,M),Math.max(x._rl[0],x._rl[1])):m.tree.range(Math.min(A,M),Math.min(S,E),Math.max(A,M),Math.max(S,E))}else i=m.ids;var L=k;if(\"x\"===n){var C=!!v.xperiodalignment,P=!!v.yperiodalignment;for(u=0;u=Math.min(I,O)&&w<=Math.max(I,O)?0:1/0}if(f=Math.min(z,D)&&T<=Math.max(z,D)?0:1/0}d=Math.sqrt(f*f+h*h),s=i[u]}}}else for(u=i.length-1;u>-1;u--)l=b[a=i[u]],c=_[a],f=y.c2p(l)-w,h=x.c2p(c)-T,(p=Math.sqrt(f*f+h*h))v.glText.length){var w=b-v.glText.length;for(d=0;dr&&(isNaN(e[n])||isNaN(e[n+1]));)n-=2;t.positions=e.slice(r,n+2)}return t})),v.line2d.update(v.lineOptions)),v.error2d){var k=(v.errorXOptions||[]).concat(v.errorYOptions||[]);v.error2d.update(k)}v.scatter2d&&v.scatter2d.update(v.markerOptions),v.fillOrder=s.repeat(null,b),v.fill2d&&(v.fillOptions=v.fillOptions.map((function(t,e){var n=r[e];if(t&&n&&n[0]&&n[0].trace){var i,a,o=n[0],s=o.trace,l=o.t,c=v.lineOptions[e],u=[];s._ownfill&&u.push(e),s._nexttrace&&u.push(e+1),u.length&&(v.fillOrder[e]=u);var f,h,p=[],d=c&&c.positions||l.positions;if(\"tozeroy\"===s.fill){for(f=0;ff&&isNaN(d[h+1]);)h-=2;0!==d[f+1]&&(p=[d[f],0]),p=p.concat(d.slice(f,h+2)),0!==d[h+1]&&(p=p.concat([d[h],0]))}else if(\"tozerox\"===s.fill){for(f=0;ff&&isNaN(d[h]);)h-=2;0!==d[f]&&(p=[0,d[f+1]]),p=p.concat(d.slice(f,h+2)),0!==d[h]&&(p=p.concat([0,d[h+1]]))}else if(\"toself\"===s.fill||\"tonext\"===s.fill){for(p=[],i=0,t.splitNull=!0,a=0;a-1;for(d=0;d\")}function u(t){return t+\"\\xb0\"}}e.exports={hoverPoints:function(t,e,r){var o=t.cd,c=o[0].trace,u=t.xa,f=t.ya,h=t.subplot,p=360*(e>=0?Math.floor((e+180)/360):Math.ceil((e-180)/360)),d=e-p;if(n.getClosest(o,(function(t){var e=t.lonlat;if(e[0]===s)return 1/0;var n=i.modHalf(e[0],360),a=e[1],o=h.project([n,a]),l=o.x-u.c2p([d,a]),c=o.y-f.c2p([n,r]),p=Math.max(3,t.mrc||0);return Math.max(Math.sqrt(l*l+c*c)-p,1-3/p)}),t),!1!==t.index){var g=o[t.index],m=g.lonlat,v=[i.modHalf(m[0],360)+p,m[1]],y=u.c2p(v),x=f.c2p(v),b=g.mrc||1;t.x0=y-b,t.x1=y+b,t.y0=x-b,t.y1=x+b;var _={};_[c.subplot]={_subplot:h};var w=c._module.formatLabels(g,c,_);return t.lonLabel=w.lonLabel,t.latLabel=w.latLabel,t.color=a(c,g),t.extraText=l(c,g,o[0].t.labels),t.hovertemplate=c.hovertemplate,[t]}},getExtraText:l}},{\"../../components/fx\":406,\"../../constants/numerical\":479,\"../../lib\":503,\"../scatter/get_trace_color\":936}],997:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"./format_labels\"),calc:t(\"../scattergeo/calc\"),plot:t(\"./plot\"),hoverPoints:t(\"./hover\").hoverPoints,eventData:t(\"./event_data\"),selectPoints:t(\"./select\"),styleOnSelect:function(t,e){e&&e[0].trace._glTrace.update(e)},moduleType:\"trace\",name:\"scattermapbox\",basePlotModule:t(\"../../plots/mapbox\"),categories:[\"mapbox\",\"gl\",\"symbols\",\"showLegend\",\"scatter-like\"],meta:{}}},{\"../../plots/mapbox\":613,\"../scatter/marker_colorbar\":944,\"../scattergeo/calc\":969,\"./attributes\":991,\"./defaults\":993,\"./event_data\":994,\"./format_labels\":995,\"./hover\":996,\"./plot\":998,\"./select\":999}],998:[function(t,e,r){\"use strict\";var n=t(\"./convert\"),i=t(\"../../plots/mapbox/constants\").traceLayerPrefix,a=[\"fill\",\"line\",\"circle\",\"symbol\"];function o(t,e){this.type=\"scattermapbox\",this.subplot=t,this.uid=e,this.sourceIds={fill:\"source-\"+e+\"-fill\",line:\"source-\"+e+\"-line\",circle:\"source-\"+e+\"-circle\",symbol:\"source-\"+e+\"-symbol\"},this.layerIds={fill:i+e+\"-fill\",line:i+e+\"-line\",circle:i+e+\"-circle\",symbol:i+e+\"-symbol\"},this.below=null}var s=o.prototype;s.addSource=function(t,e){this.subplot.map.addSource(this.sourceIds[t],{type:\"geojson\",data:e.geojson})},s.setSourceData=function(t,e){this.subplot.map.getSource(this.sourceIds[t]).setData(e.geojson)},s.addLayer=function(t,e,r){this.subplot.addLayer({type:t,id:this.layerIds[t],source:this.sourceIds[t],layout:e.layout,paint:e.paint},r)},s.update=function(t){var e,r,i,o=this.subplot,s=o.map,l=n(o.gd,t),c=o.belowLookup[\"trace-\"+this.uid];if(c!==this.below){for(e=a.length-1;e>=0;e--)r=a[e],s.removeLayer(this.layerIds[r]);for(e=0;e=0;e--){var r=a[e];t.removeLayer(this.layerIds[r]),t.removeSource(this.sourceIds[r])}},e.exports=function(t,e){for(var r=e[0].trace,i=new o(t,r.uid),s=n(t.gd,e),l=i.below=t.belowLookup[\"trace-\"+r.uid],c=0;c\")}}e.exports={hoverPoints:function(t,e,r,a){var o=n(t,e,r,a);if(o&&!1!==o[0].index){var s=o[0];if(void 0===s.index)return o;var l=t.subplot,c=s.cd[s.index],u=s.trace;if(l.isPtInside(c))return s.xLabelVal=void 0,s.yLabelVal=void 0,i(c,u,l,s),s.hovertemplate=u.hovertemplate,o}},makeHoverPointText:i}},{\"../scatter/hover\":937}],1005:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"scatterpolar\",basePlotModule:t(\"../../plots/polar\"),categories:[\"polar\",\"symbols\",\"showLegend\",\"scatter-like\"],attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\").supplyDefaults,colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"./format_labels\"),calc:t(\"./calc\"),plot:t(\"./plot\"),style:t(\"../scatter/style\").style,styleOnSelect:t(\"../scatter/style\").styleOnSelect,hoverPoints:t(\"./hover\").hoverPoints,selectPoints:t(\"../scatter/select\"),meta:{}}},{\"../../plots/polar\":622,\"../scatter/marker_colorbar\":944,\"../scatter/select\":948,\"../scatter/style\":950,\"./attributes\":1e3,\"./calc\":1001,\"./defaults\":1002,\"./format_labels\":1003,\"./hover\":1004,\"./plot\":1006}],1006:[function(t,e,r){\"use strict\";var n=t(\"../scatter/plot\"),i=t(\"../../constants/numerical\").BADNUM;e.exports=function(t,e,r){for(var a=e.layers.frontplot.select(\"g.scatterlayer\"),o={xaxis:e.xaxis,yaxis:e.yaxis,plot:e.framework,layerClipId:e._hasClipOnAxisFalse?e.clipIds.forTraces:null},s=e.radialAxis,l=e.angularAxis,c=0;c=c&&(y.marker.cluster=d.tree),y.marker&&(y.markerSel.positions=y.markerUnsel.positions=y.marker.positions=_),y.line&&_.length>1&&l.extendFlat(y.line,s.linePositions(t,p,_)),y.text&&(l.extendFlat(y.text,{positions:_},s.textPosition(t,p,y.text,y.marker)),l.extendFlat(y.textSel,{positions:_},s.textPosition(t,p,y.text,y.markerSel)),l.extendFlat(y.textUnsel,{positions:_},s.textPosition(t,p,y.text,y.markerUnsel))),y.fill&&!h.fill2d&&(h.fill2d=!0),y.marker&&!h.scatter2d&&(h.scatter2d=!0),y.line&&!h.line2d&&(h.line2d=!0),y.text&&!h.glText&&(h.glText=!0),h.lineOptions.push(y.line),h.fillOptions.push(y.fill),h.markerOptions.push(y.marker),h.markerSelectedOptions.push(y.markerSel),h.markerUnselectedOptions.push(y.markerUnsel),h.textOptions.push(y.text),h.textSelectedOptions.push(y.textSel),h.textUnselectedOptions.push(y.textUnsel),h.selectBatch.push([]),h.unselectBatch.push([]),d.x=w,d.y=T,d.rawx=w,d.rawy=T,d.r=m,d.theta=v,d.positions=_,d._scene=h,d.index=h.count,h.count++}})),a(t,e,r)}}},{\"../../lib\":503,\"../scattergl/constants\":980,\"../scattergl/convert\":981,\"../scattergl/plot\":988,\"../scattergl/scene_update\":989,\"@plotly/point-cluster\":59,\"fast-isnumeric\":190}],1014:[function(t,e,r){\"use strict\";var n=t(\"../../plots/template_attributes\").hovertemplateAttrs,i=t(\"../../plots/template_attributes\").texttemplateAttrs,a=t(\"../../lib/extend\").extendFlat,o=t(\"../scatter/attributes\"),s=t(\"../../plots/attributes\"),l=o.line;e.exports={mode:o.mode,real:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},imag:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},text:o.text,texttemplate:i({editType:\"plot\"},{keys:[\"real\",\"imag\",\"text\"]}),hovertext:o.hovertext,line:{color:l.color,width:l.width,dash:l.dash,shape:a({},l.shape,{values:[\"linear\",\"spline\"]}),smoothing:l.smoothing,editType:\"calc\"},connectgaps:o.connectgaps,marker:o.marker,cliponaxis:a({},o.cliponaxis,{dflt:!1}),textposition:o.textposition,textfont:o.textfont,fill:a({},o.fill,{values:[\"none\",\"toself\",\"tonext\"],dflt:\"none\"}),fillcolor:o.fillcolor,hoverinfo:a({},s.hoverinfo,{flags:[\"real\",\"imag\",\"text\",\"name\"]}),hoveron:o.hoveron,hovertemplate:n(),selected:o.selected,unselected:o.unselected}},{\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/template_attributes\":633,\"../scatter/attributes\":926}],1015:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../constants/numerical\").BADNUM,a=t(\"../scatter/colorscale_calc\"),o=t(\"../scatter/arrays_to_calcdata\"),s=t(\"../scatter/calc_selection\"),l=t(\"../scatter/calc\").calcMarkerSize;e.exports=function(t,e){for(var r=t._fullLayout,c=e.subplot,u=r[c].realaxis,f=r[c].imaginaryaxis,h=u.makeCalcdata(e,\"real\"),p=f.makeCalcdata(e,\"imag\"),d=e._length,g=new Array(d),m=0;m\")}}e.exports={hoverPoints:function(t,e,r,a){var o=n(t,e,r,a);if(o&&!1!==o[0].index){var s=o[0];if(void 0===s.index)return o;var l=t.subplot,c=s.cd[s.index],u=s.trace;if(l.isPtInside(c))return s.xLabelVal=void 0,s.yLabelVal=void 0,i(c,u,l,s),s.hovertemplate=u.hovertemplate,o}},makeHoverPointText:i}},{\"../scatter/hover\":937}],1019:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"scattersmith\",basePlotModule:t(\"../../plots/smith\"),categories:[\"smith\",\"symbols\",\"showLegend\",\"scatter-like\"],attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"./format_labels\"),calc:t(\"./calc\"),plot:t(\"./plot\"),style:t(\"../scatter/style\").style,styleOnSelect:t(\"../scatter/style\").styleOnSelect,hoverPoints:t(\"./hover\").hoverPoints,selectPoints:t(\"../scatter/select\"),meta:{}}},{\"../../plots/smith\":629,\"../scatter/marker_colorbar\":944,\"../scatter/select\":948,\"../scatter/style\":950,\"./attributes\":1014,\"./calc\":1015,\"./defaults\":1016,\"./format_labels\":1017,\"./hover\":1018,\"./plot\":1020}],1020:[function(t,e,r){\"use strict\";var n=t(\"../scatter/plot\"),i=t(\"../../constants/numerical\").BADNUM,a=t(\"../../plots/smith/helpers\").smith;e.exports=function(t,e,r){for(var o=e.layers.frontplot.select(\"g.scatterlayer\"),s={xaxis:e.xaxis,yaxis:e.yaxis,plot:e.framework,layerClipId:e._hasClipOnAxisFalse?e.clipIds.forTraces:null},l=0;l\"),o.hovertemplate=h.hovertemplate,a}function x(t,e){v.push(t._hovertitle+\": \"+e)}}},{\"../scatter/hover\":937}],1027:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"./format_labels\"),calc:t(\"./calc\"),plot:t(\"./plot\"),style:t(\"../scatter/style\").style,styleOnSelect:t(\"../scatter/style\").styleOnSelect,hoverPoints:t(\"./hover\"),selectPoints:t(\"../scatter/select\"),eventData:t(\"./event_data\"),moduleType:\"trace\",name:\"scatterternary\",basePlotModule:t(\"../../plots/ternary\"),categories:[\"ternary\",\"symbols\",\"showLegend\",\"scatter-like\"],meta:{}}},{\"../../plots/ternary\":634,\"../scatter/marker_colorbar\":944,\"../scatter/select\":948,\"../scatter/style\":950,\"./attributes\":1021,\"./calc\":1022,\"./defaults\":1023,\"./event_data\":1024,\"./format_labels\":1025,\"./hover\":1026,\"./plot\":1028}],1028:[function(t,e,r){\"use strict\";var n=t(\"../scatter/plot\");e.exports=function(t,e,r){var i=e.plotContainer;i.select(\".scatterlayer\").selectAll(\"*\").remove();var a={xaxis:e.xaxis,yaxis:e.yaxis,plot:i,layerClipId:e._hasClipOnAxisFalse?e.clipIdRelative:null},o=e.layers.frontplot.select(\"g.scatterlayer\");n(t,a,r,o)}},{\"../scatter/plot\":947}],1029:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\"),i=t(\"../../components/colorscale/attributes\"),a=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,o=t(\"../../plots/template_attributes\").hovertemplateAttrs,s=t(\"../scattergl/attributes\"),l=t(\"../../plots/cartesian/constants\").idRegex,c=t(\"../../plot_api/plot_template\").templatedArray,u=t(\"../../lib/extend\").extendFlat,f=n.marker,h=f.line,p=u(i(\"marker.line\",{editTypeOverride:\"calc\"}),{width:u({},h.width,{editType:\"calc\"}),editType:\"calc\"}),d=u(i(\"marker\"),{symbol:f.symbol,size:u({},f.size,{editType:\"markerSize\"}),sizeref:f.sizeref,sizemin:f.sizemin,sizemode:f.sizemode,opacity:f.opacity,colorbar:f.colorbar,line:p,editType:\"calc\"});function g(t){return{valType:\"info_array\",freeLength:!0,editType:\"calc\",items:{valType:\"subplotid\",regex:l[t],editType:\"plot\"}}}d.color.editType=d.cmin.editType=d.cmax.editType=\"style\",e.exports={dimensions:c(\"dimension\",{visible:{valType:\"boolean\",dflt:!0,editType:\"calc\"},label:{valType:\"string\",editType:\"calc\"},values:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},axis:{type:{valType:\"enumerated\",values:[\"linear\",\"log\",\"date\",\"category\"],editType:\"calc+clearAxisTypes\"},matches:{valType:\"boolean\",dflt:!1,editType:\"calc\"},editType:\"calc+clearAxisTypes\"},editType:\"calc+clearAxisTypes\"}),text:u({},s.text,{}),hovertext:u({},s.hovertext,{}),hovertemplate:o(),xhoverformat:a(\"x\"),yhoverformat:a(\"y\"),marker:d,xaxes:g(\"x\"),yaxes:g(\"y\"),diagonal:{visible:{valType:\"boolean\",dflt:!0,editType:\"calc\"},editType:\"calc\"},showupperhalf:{valType:\"boolean\",dflt:!0,editType:\"calc\"},showlowerhalf:{valType:\"boolean\",dflt:!0,editType:\"calc\"},selected:{marker:s.selected.marker,editType:\"calc\"},unselected:{marker:s.unselected.marker,editType:\"calc\"},opacity:s.opacity}},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plot_api/plot_template\":543,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/cartesian/constants\":561,\"../../plots/template_attributes\":633,\"../scatter/attributes\":926,\"../scattergl/attributes\":978}],1030:[function(t,e,r){\"use strict\";var n=t(\"regl-line2d\"),i=t(\"../../registry\"),a=t(\"../../lib/prepare_regl\"),o=t(\"../../plots/get_data\").getModuleCalcData,s=t(\"../../plots/cartesian\"),l=t(\"../../plots/cartesian/axis_ids\").getFromId,c=t(\"../../plots/cartesian/axes\").shouldShowZeroLine;function u(t,e,r){for(var n=r.matrixOptions.data.length,i=e._visibleDims,a=r.viewOpts.ranges=new Array(n),o=0;oh?b.sizeAvg||Math.max(b.size,3):a(e,x),p=0;pa&&l||i-1,P=!0;if(o(x)||!!p.selectedpoints||C){var I=p._length;if(p.selectedpoints){g.selectBatch=p.selectedpoints;var O=p.selectedpoints,z={};for(l=0;l1&&(u=g[y-1],h=m[y-1],d=v[y-1]),e=0;eu?\"-\":\"+\")+\"x\")).replace(\"y\",(f>h?\"-\":\"+\")+\"y\")).replace(\"z\",(p>d?\"-\":\"+\")+\"z\");var L=function(){y=0,M=[],S=[],E=[]};(!y||y2?t.slice(1,e-1):2===e?[(t[0]+t[1])/2]:t}function p(t){var e=t.length;return 1===e?[.5,.5]:[t[1]-t[0],t[e-1]-t[e-2]]}function d(t,e){var r=t.fullSceneLayout,i=t.dataScale,u=e._len,f={};function d(t,e){var n=r[e],o=i[c[e]];return a.simpleMap(t,(function(t){return n.d2l(t)*o}))}if(f.vectors=l(d(e._u,\"xaxis\"),d(e._v,\"yaxis\"),d(e._w,\"zaxis\"),u),!u)return{positions:[],cells:[]};var g=d(e._Xs,\"xaxis\"),m=d(e._Ys,\"yaxis\"),v=d(e._Zs,\"zaxis\");if(f.meshgrid=[g,m,v],f.gridFill=e._gridFill,e._slen)f.startingPositions=l(d(e._startsX,\"xaxis\"),d(e._startsY,\"yaxis\"),d(e._startsZ,\"zaxis\"));else{for(var y=m[0],x=h(g),b=h(v),_=new Array(x.length*b.length),w=0,T=0;T=0};v?(r=Math.min(m.length,x.length),l=function(t){return A(m[t])&&M(t)},f=function(t){return String(m[t])}):(r=Math.min(y.length,x.length),l=function(t){return A(y[t])&&M(t)},f=function(t){return String(y[t])}),_&&(r=Math.min(r,b.length));for(var S=0;S1){for(var P=a.randstr(),I=0;I\"),name:A||z(\"name\")?y.name:void 0,color:k(\"hoverlabel.bgcolor\")||x.color,borderColor:k(\"hoverlabel.bordercolor\"),fontFamily:k(\"hoverlabel.font.family\"),fontSize:k(\"hoverlabel.font.size\"),fontColor:k(\"hoverlabel.font.color\"),nameLength:k(\"hoverlabel.namelength\"),textAlign:k(\"hoverlabel.align\"),hovertemplate:A,hovertemplateLabels:P,eventData:l};m&&(F.x0=E-i.rInscribed*i.rpx1,F.x1=E+i.rInscribed*i.rpx1,F.idealAlign=i.pxmid[0]<0?\"left\":\"right\"),v&&(F.x=E,F.idealAlign=E<0?\"left\":\"right\");var B=[];o.loneHover(F,{container:a._hoverlayer.node(),outerContainer:a._paper.node(),gd:r,inOut_bbox:B}),l[0].bbox=B[0],d._hasHoverLabel=!0}if(v){var N=t.select(\"path.surface\");h.styleOne(N,i,y,{hovered:!0})}d._hasHoverEvent=!0,r.emit(\"plotly_hover\",{points:l||[f(i,y,h.eventDataKeys)],event:n.event})}})),t.on(\"mouseout\",(function(e){var i=r._fullLayout,a=r._fullData[d.index],s=n.select(this).datum();if(d._hasHoverEvent&&(e.originalEvent=n.event,r.emit(\"plotly_unhover\",{points:[f(s,a,h.eventDataKeys)],event:n.event}),d._hasHoverEvent=!1),d._hasHoverLabel&&(o.loneUnhover(i._hoverlayer.node()),d._hasHoverLabel=!1),v){var l=t.select(\"path.surface\");h.styleOne(l,s,a,{hovered:!1})}})),t.on(\"click\",(function(t){var e=r._fullLayout,a=r._fullData[d.index],s=m&&(c.isHierarchyRoot(t)||c.isLeaf(t)),u=c.getPtId(t),p=c.isEntry(t)?c.findEntryWithChild(g,u):c.findEntryWithLevel(g,u),v=c.getPtId(p),y={points:[f(t,a,h.eventDataKeys)],event:n.event};s||(y.nextLevel=v);var x=l.triggerHandler(r,\"plotly_\"+d.type+\"click\",y);if(!1!==x&&e.hovermode&&(r._hoverdata=[f(t,a,h.eventDataKeys)],o.click(r,n.event)),!s&&!1!==x&&!r._dragging&&!r._transitioning){i.call(\"_storeDirectGUIEdit\",a,e._tracePreGUI[a.uid],{level:a.level});var b={data:[{level:v}],traces:[d.index]},_={frame:{redraw:!1,duration:h.transitionTime},transition:{duration:h.transitionTime,easing:h.transitionEasing},mode:\"immediate\",fromcurrent:!0};o.loneUnhover(e._hoverlayer.node()),i.call(\"animate\",r,b,_)}}))}},{\"../../components/fx\":406,\"../../components/fx/helpers\":402,\"../../lib\":503,\"../../lib/events\":492,\"../../registry\":638,\"../pie/helpers\":905,\"./helpers\":1051,\"@plotly/d3\":58}],1051:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../components/color\"),a=t(\"../../lib/setcursor\"),o=t(\"../pie/helpers\");function s(t){return t.data.data.pid}r.findEntryWithLevel=function(t,e){var n;return e&&t.eachAfter((function(t){if(r.getPtId(t)===e)return n=t.copy()})),n||t},r.findEntryWithChild=function(t,e){var n;return t.eachAfter((function(t){for(var i=t.children||[],a=0;a0)},r.getMaxDepth=function(t){return t.maxdepth>=0?t.maxdepth:1/0},r.isHeader=function(t,e){return!(r.isLeaf(t)||t.depth===e._maxDepth-1)},r.getParent=function(t,e){return r.findEntryWithLevel(t,s(e))},r.listPath=function(t,e){var n=t.parent;if(!n)return[];var i=e?[n.data[e]]:[n];return r.listPath(n,e).concat(i)},r.getPath=function(t){return r.listPath(t,\"label\").join(\"/\")+\"/\"},r.formatValue=o.formatPieValue,r.formatPercent=function(t,e){var r=n.formatPercent(t,0);return\"0%\"===r&&(r=o.formatPiePercent(t,e)),r}},{\"../../components/color\":366,\"../../lib\":503,\"../../lib/setcursor\":524,\"../pie/helpers\":905}],1052:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"sunburst\",basePlotModule:t(\"./base_plot\"),categories:[],animatable:!0,attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\"),supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\").calc,crossTraceCalc:t(\"./calc\").crossTraceCalc,plot:t(\"./plot\").plot,style:t(\"./style\").style,colorbar:t(\"../scatter/marker_colorbar\"),meta:{}}},{\"../scatter/marker_colorbar\":944,\"./attributes\":1045,\"./base_plot\":1046,\"./calc\":1047,\"./defaults\":1049,\"./layout_attributes\":1053,\"./layout_defaults\":1054,\"./plot\":1055,\"./style\":1056}],1053:[function(t,e,r){\"use strict\";e.exports={sunburstcolorway:{valType:\"colorlist\",editType:\"calc\"},extendsunburstcolors:{valType:\"boolean\",dflt:!0,editType:\"calc\"}}},{}],1054:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e){function r(r,a){return n.coerce(t,e,i,r,a)}r(\"sunburstcolorway\",e.colorway),r(\"extendsunburstcolors\")}},{\"../../lib\":503,\"./layout_attributes\":1053}],1055:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"d3-hierarchy\"),a=t(\"d3-interpolate\").interpolate,o=t(\"../../components/drawing\"),s=t(\"../../lib\"),l=t(\"../../lib/svg_text_utils\"),c=t(\"../bar/uniform_text\"),u=c.recordMinTextSize,f=c.clearMinTextSize,h=t(\"../pie/plot\"),p=t(\"../pie/helpers\").getRotationAngle,d=h.computeTransform,g=h.transformInsideText,m=t(\"./style\").styleOne,v=t(\"../bar/style\").resizeText,y=t(\"./fx\"),x=t(\"./constants\"),b=t(\"./helpers\");function _(t,e,c,f){var h=t._fullLayout,v=!h.uniformtext.mode&&b.hasTransition(f),_=n.select(c).selectAll(\"g.slice\"),T=e[0],k=T.trace,A=T.hierarchy,M=b.findEntryWithLevel(A,k.level),S=b.getMaxDepth(k),E=h._size,L=k.domain,C=E.w*(L.x[1]-L.x[0]),P=E.h*(L.y[1]-L.y[0]),I=.5*Math.min(C,P),O=T.cx=E.l+E.w*(L.x[1]+L.x[0])/2,z=T.cy=E.t+E.h*(1-L.y[0])-P/2;if(!M)return _.remove();var D=null,R={};v&&_.each((function(t){R[b.getPtId(t)]={rpx0:t.rpx0,rpx1:t.rpx1,x0:t.x0,x1:t.x1,transform:t.transform},!D&&b.isEntry(t)&&(D=t)}));var F=function(t){return i.partition().size([2*Math.PI,t.height+1])(t)}(M).descendants(),B=M.height+1,N=0,j=S;T.hasMultipleRoots&&b.isHierarchyRoot(M)&&(F=F.slice(1),B-=1,N=1,j+=1),F=F.filter((function(t){return t.y1<=j}));var U=p(k.rotation);U&&F.forEach((function(t){t.x0+=U,t.x1+=U}));var V=Math.min(B,S),H=function(t){return(t-N)/V*I},q=function(t,e){return[t*Math.cos(e),-t*Math.sin(e)]},G=function(t){return s.pathAnnulus(t.rpx0,t.rpx1,t.x0,t.x1,O,z)},Y=function(t){return O+w(t)[0]*(t.transform.rCenter||0)+(t.transform.x||0)},W=function(t){return z+w(t)[1]*(t.transform.rCenter||0)+(t.transform.y||0)};(_=_.data(F,b.getPtId)).enter().append(\"g\").classed(\"slice\",!0),v?_.exit().transition().each((function(){var t=n.select(this);t.select(\"path.surface\").transition().attrTween(\"d\",(function(t){var e=function(t){var e,r=b.getPtId(t),n=R[r],i=R[b.getPtId(M)];if(i){var o=(t.x1>i.x1?2*Math.PI:0)+U;e=t.rpx1X?2*Math.PI:0)+U;e={x0:i,x1:i}}else e={rpx0:I,rpx1:I},s.extendFlat(e,K(t));else e={rpx0:0,rpx1:0};else e={x0:U,x1:U};return a(e,n)}(t);return function(t){return G(e(t))}})):f.attr(\"d\",G),c.call(y,M,t,e,{eventDataKeys:x.eventDataKeys,transitionTime:x.CLICK_TRANSITION_TIME,transitionEasing:x.CLICK_TRANSITION_EASING}).call(b.setSliceCursor,t,{hideOnRoot:!0,hideOnLeaves:!0,isTransitioning:t._transitioning}),f.call(m,i,k);var p=s.ensureSingle(c,\"g\",\"slicetext\"),_=s.ensureSingle(p,\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),w=s.ensureUniformFontSize(t,b.determineTextFont(k,i,h.font));_.text(r.formatSliceLabel(i,M,k,e,h)).classed(\"slicetext\",!0).attr(\"text-anchor\",\"middle\").call(o.font,w).call(l.convertToTspans,t);var A=o.bBox(_.node());i.transform=g(A,i,T),i.transform.targetX=Y(i),i.transform.targetY=W(i);var S=function(t,e){var r=t.transform;return d(r,e),r.fontSize=w.size,u(k.type,r,h),s.getTextTransform(r)};v?_.transition().attrTween(\"transform\",(function(t){var e=function(t){var e,r=R[b.getPtId(t)],n=t.transform;if(r)e=r;else if(e={rpx1:t.rpx1,transform:{textPosAngle:n.textPosAngle,scale:0,rotate:n.rotate,rCenter:n.rCenter,x:n.x,y:n.y}},D)if(t.parent)if(X){var i=t.x1>X?2*Math.PI:0;e.x0=e.x1=i}else s.extendFlat(e,K(t));else e.x0=e.x1=U;else e.x0=e.x1=U;var o=a(e.transform.textPosAngle,t.transform.textPosAngle),l=a(e.rpx1,t.rpx1),c=a(e.x0,t.x0),f=a(e.x1,t.x1),p=a(e.transform.scale,n.scale),d=a(e.transform.rotate,n.rotate),g=0===n.rCenter?3:0===e.transform.rCenter?1/3:1,m=a(e.transform.rCenter,n.rCenter);return function(t){var e=l(t),r=c(t),i=f(t),a=function(t){return m(Math.pow(t,g))}(t),s={pxmid:q(e,(r+i)/2),rpx1:e,transform:{textPosAngle:o(t),rCenter:a,x:n.x,y:n.y}};return u(k.type,n,h),{transform:{targetX:Y(s),targetY:W(s),scale:p(t),rotate:d(t),rCenter:a}}}}(t);return function(t){return S(e(t),A)}})):_.attr(\"transform\",S(i,A))}))}function w(t){return e=t.rpx1,r=t.transform.textPosAngle,[e*Math.sin(r),-e*Math.cos(r)];var e,r}r.plot=function(t,e,r,i){var a,o,s=t._fullLayout,l=s._sunburstlayer,c=!r,u=!s.uniformtext.mode&&b.hasTransition(r);(f(\"sunburst\",s),(a=l.selectAll(\"g.trace.sunburst\").data(e,(function(t){return t[0].trace.uid}))).enter().append(\"g\").classed(\"trace\",!0).classed(\"sunburst\",!0).attr(\"stroke-linejoin\",\"round\"),a.order(),u)?(i&&(o=i()),n.transition().duration(r.duration).ease(r.easing).each(\"end\",(function(){o&&o()})).each(\"interrupt\",(function(){o&&o()})).each((function(){l.selectAll(\"g.trace\").each((function(e){_(t,e,this,r)}))}))):(a.each((function(e){_(t,e,this,r)})),s.uniformtext.mode&&v(t,s._sunburstlayer.selectAll(\".trace\"),\"sunburst\"));c&&a.exit().remove()},r.formatSliceLabel=function(t,e,r,n,i){var a=r.texttemplate,o=r.textinfo;if(!(a||o&&\"none\"!==o))return\"\";var l=i.separators,c=n[0],u=t.data.data,f=c.hierarchy,h=b.isHierarchyRoot(t),p=b.getParent(f,t),d=b.getValue(t);if(!a){var g,m=o.split(\"+\"),v=function(t){return-1!==m.indexOf(t)},y=[];if(v(\"label\")&&u.label&&y.push(u.label),u.hasOwnProperty(\"v\")&&v(\"value\")&&y.push(b.formatValue(u.v,l)),!h){v(\"current path\")&&y.push(b.getPath(t.data));var x=0;v(\"percent parent\")&&x++,v(\"percent entry\")&&x++,v(\"percent root\")&&x++;var _=x>1;if(x){var w,T=function(t){g=b.formatPercent(w,l),_&&(g+=\" of \"+t),y.push(g)};v(\"percent parent\")&&!h&&(w=d/b.getValue(p),T(\"parent\")),v(\"percent entry\")&&(w=d/b.getValue(e),T(\"entry\")),v(\"percent root\")&&(w=d/b.getValue(f),T(\"root\"))}}return v(\"text\")&&(g=s.castOption(r,u.i,\"text\"),s.isValidTextValue(g)&&y.push(g)),y.join(\"
\")}var k=s.castOption(r,u.i,\"texttemplate\");if(!k)return\"\";var A={};u.label&&(A.label=u.label),u.hasOwnProperty(\"v\")&&(A.value=u.v,A.valueLabel=b.formatValue(u.v,l)),A.currentPath=b.getPath(t.data),h||(A.percentParent=d/b.getValue(p),A.percentParentLabel=b.formatPercent(A.percentParent,l),A.parent=b.getPtLabel(p)),A.percentEntry=d/b.getValue(e),A.percentEntryLabel=b.formatPercent(A.percentEntry,l),A.entry=b.getPtLabel(e),A.percentRoot=d/b.getValue(f),A.percentRootLabel=b.formatPercent(A.percentRoot,l),A.root=b.getPtLabel(f),u.hasOwnProperty(\"color\")&&(A.color=u.color);var M=s.castOption(r,u.i,\"text\");return(s.isValidTextValue(M)||\"\"===M)&&(A.text=M),A.customdata=s.castOption(r,u.i,\"customdata\"),s.texttemplateString(k,A,i._d3locale,A,r._meta||{})}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../bar/style\":662,\"../bar/uniform_text\":664,\"../pie/helpers\":905,\"../pie/plot\":909,\"./constants\":1048,\"./fx\":1050,\"./helpers\":1051,\"./style\":1056,\"@plotly/d3\":58,\"d3-hierarchy\":115,\"d3-interpolate\":116}],1056:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../components/color\"),a=t(\"../../lib\"),o=t(\"../bar/uniform_text\").resizeText;function s(t,e,r){var n=e.data.data,o=!e.children,s=n.i,l=a.castOption(r,s,\"marker.line.color\")||i.defaultLine,c=a.castOption(r,s,\"marker.line.width\")||0;t.style(\"stroke-width\",c).call(i.fill,n.color).call(i.stroke,l).style(\"opacity\",o?r.leaf.opacity:null)}e.exports={style:function(t){var e=t._fullLayout._sunburstlayer.selectAll(\".trace\");o(t,e,\"sunburst\"),e.each((function(t){var e=n.select(this),r=t[0].trace;e.style(\"opacity\",r.opacity),e.selectAll(\"path.surface\").each((function(t){n.select(this).call(s,t,r)}))}))},styleOne:s}},{\"../../components/color\":366,\"../../lib\":503,\"../bar/uniform_text\":664,\"@plotly/d3\":58}],1057:[function(t,e,r){\"use strict\";var n=t(\"../../components/color\"),i=t(\"../../components/colorscale/attributes\"),a=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,o=t(\"../../plots/template_attributes\").hovertemplateAttrs,s=t(\"../../plots/attributes\"),l=t(\"../../lib/extend\").extendFlat,c=t(\"../../plot_api/edit_types\").overrideAll;function u(t){return{show:{valType:\"boolean\",dflt:!1},start:{valType:\"number\",dflt:null,editType:\"plot\"},end:{valType:\"number\",dflt:null,editType:\"plot\"},size:{valType:\"number\",dflt:null,min:0,editType:\"plot\"},project:{x:{valType:\"boolean\",dflt:!1},y:{valType:\"boolean\",dflt:!1},z:{valType:\"boolean\",dflt:!1}},color:{valType:\"color\",dflt:n.defaultLine},usecolormap:{valType:\"boolean\",dflt:!1},width:{valType:\"number\",min:1,max:16,dflt:2},highlight:{valType:\"boolean\",dflt:!0},highlightcolor:{valType:\"color\",dflt:n.defaultLine},highlightwidth:{valType:\"number\",min:1,max:16,dflt:2}}}var f=e.exports=c(l({z:{valType:\"data_array\"},x:{valType:\"data_array\"},y:{valType:\"data_array\"},text:{valType:\"string\",dflt:\"\",arrayOk:!0},hovertext:{valType:\"string\",dflt:\"\",arrayOk:!0},hovertemplate:o(),xhoverformat:a(\"x\"),yhoverformat:a(\"y\"),zhoverformat:a(\"z\"),connectgaps:{valType:\"boolean\",dflt:!1,editType:\"calc\"},surfacecolor:{valType:\"data_array\"}},i(\"\",{colorAttr:\"z or surfacecolor\",showScaleDflt:!0,autoColorDflt:!1,editTypeOverride:\"calc\"}),{contours:{x:u(),y:u(),z:u()},hidesurface:{valType:\"boolean\",dflt:!1},lightposition:{x:{valType:\"number\",min:-1e5,max:1e5,dflt:10},y:{valType:\"number\",min:-1e5,max:1e5,dflt:1e4},z:{valType:\"number\",min:-1e5,max:1e5,dflt:0}},lighting:{ambient:{valType:\"number\",min:0,max:1,dflt:.8},diffuse:{valType:\"number\",min:0,max:1,dflt:.8},specular:{valType:\"number\",min:0,max:2,dflt:.05},roughness:{valType:\"number\",min:0,max:1,dflt:.5},fresnel:{valType:\"number\",min:0,max:5,dflt:.2}},opacity:{valType:\"number\",min:0,max:1,dflt:1},opacityscale:{valType:\"any\",editType:\"calc\"},_deprecated:{zauto:l({},i.zauto,{}),zmin:l({},i.zmin,{}),zmax:l({},i.zmax,{})},hoverinfo:l({},s.hoverinfo),showlegend:l({},s.showlegend,{dflt:!1})}),\"calc\",\"nested\");f.x.editType=f.y.editType=f.z.editType=\"calc+clearAxisTypes\",f.transforms=void 0},{\"../../components/color\":366,\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plot_api/edit_types\":536,\"../../plots/attributes\":550,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/template_attributes\":633}],1058:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/calc\");e.exports=function(t,e){e.surfacecolor?n(t,e,{vals:e.surfacecolor,containerStr:\"\",cLetter:\"c\"}):n(t,e,{vals:e.z,containerStr:\"\",cLetter:\"c\"})}},{\"../../components/colorscale/calc\":374}],1059:[function(t,e,r){\"use strict\";var n=t(\"../../../stackgl_modules\").gl_surface3d,i=t(\"../../../stackgl_modules\").ndarray,a=t(\"../../../stackgl_modules\").ndarray_linear_interpolate.d2,o=t(\"../heatmap/interp2d\"),s=t(\"../heatmap/find_empties\"),l=t(\"../../lib\").isArrayOrTypedArray,c=t(\"../../lib/gl_format_color\").parseColorScale,u=t(\"../../lib/str2rgbarray\"),f=t(\"../../components/colorscale\").extractOpts;function h(t,e,r){this.scene=t,this.uid=r,this.surface=e,this.data=null,this.showContour=[!1,!1,!1],this.contourStart=[null,null,null],this.contourEnd=[null,null,null],this.contourSize=[0,0,0],this.minValues=[1/0,1/0,1/0],this.maxValues=[-1/0,-1/0,-1/0],this.dataScaleX=1,this.dataScaleY=1,this.refineData=!0,this.objectOffset=[0,0,0]}var p=h.prototype;p.getXat=function(t,e,r,n){var i=l(this.data.x)?l(this.data.x[0])?this.data.x[e][t]:this.data.x[t]:t;return void 0===r?i:n.d2l(i,0,r)},p.getYat=function(t,e,r,n){var i=l(this.data.y)?l(this.data.y[0])?this.data.y[e][t]:this.data.y[e]:e;return void 0===r?i:n.d2l(i,0,r)},p.getZat=function(t,e,r,n){var i=this.data.z[e][t];return null===i&&this.data.connectgaps&&this.data._interpolatedZ&&(i=this.data._interpolatedZ[e][t]),void 0===r?i:n.d2l(i,0,r)},p.handlePick=function(t){if(t.object===this.surface){var e=(t.data.index[0]-1)/this.dataScaleX-1,r=(t.data.index[1]-1)/this.dataScaleY-1,n=Math.max(Math.min(Math.round(e),this.data.z[0].length-1),0),i=Math.max(Math.min(Math.round(r),this.data._ylength-1),0);t.index=[n,i],t.traceCoordinate=[this.getXat(n,i),this.getYat(n,i),this.getZat(n,i)],t.dataCoordinate=[this.getXat(n,i,this.data.xcalendar,this.scene.fullSceneLayout.xaxis),this.getYat(n,i,this.data.ycalendar,this.scene.fullSceneLayout.yaxis),this.getZat(n,i,this.data.zcalendar,this.scene.fullSceneLayout.zaxis)];for(var a=0;a<3;a++){var o=t.dataCoordinate[a];null!=o&&(t.dataCoordinate[a]*=this.scene.dataScale[a])}var s=this.data.hovertext||this.data.text;return Array.isArray(s)&&s[i]&&void 0!==s[i][n]?t.textLabel=s[i][n]:t.textLabel=s||\"\",t.data.dataCoordinate=t.dataCoordinate.slice(),this.surface.highlight(t.data),this.scene.glplot.spikes.position=t.dataCoordinate,!0}};var d=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,1063,1069,1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277,1279,1283,1289,1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,1489,1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,1579,1583,1597,1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,1697,1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783,1787,1789,1801,1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,1913,1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003,2011,2017,2027,2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111,2113,2129,2131,2137,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239,2243,2251,2267,2269,2273,2281,2287,2293,2297,2309,2311,2333,2339,2341,2347,2351,2357,2371,2377,2381,2383,2389,2393,2399,2411,2417,2423,2437,2441,2447,2459,2467,2473,2477,2503,2521,2531,2539,2543,2549,2551,2557,2579,2591,2593,2609,2617,2621,2633,2647,2657,2659,2663,2671,2677,2683,2687,2689,2693,2699,2707,2711,2713,2719,2729,2731,2741,2749,2753,2767,2777,2789,2791,2797,2801,2803,2819,2833,2837,2843,2851,2857,2861,2879,2887,2897,2903,2909,2917,2927,2939,2953,2957,2963,2969,2971,2999];function g(t,e){if(t0){r=d[n];break}return r}function y(t,e){if(!(t<1||e<1)){for(var r=m(t),n=m(e),i=1,a=0;a_;)r--,r/=v(r),++r1?n:1},p.refineCoords=function(t){for(var e=this.dataScaleX,r=this.dataScaleY,n=t[0].shape[0],a=t[0].shape[1],o=0|Math.floor(t[0].shape[0]*e+1),s=0|Math.floor(t[0].shape[1]*r+1),l=1+n+1,c=1+a+1,u=i(new Float32Array(l*c),[l,c]),f=[1/e,0,0,0,1/r,0,0,0,1],h=0;h0&&null!==this.contourStart[t]&&null!==this.contourEnd[t]&&this.contourEnd[t]>this.contourStart[t]))for(i[t]=!0,e=this.contourStart[t];ea&&(this.minValues[e]=a),this.maxValues[e]\",maxDimensionCount:60,overdrag:45,releaseTransitionDuration:120,releaseTransitionEase:\"cubic-out\",scrollbarCaptureWidth:18,scrollbarHideDelay:1e3,scrollbarHideDuration:1e3,scrollbarOffset:5,scrollbarWidth:8,transitionDuration:100,transitionEase:\"cubic-out\",uplift:5,wrapSpacer:\" \",wrapSplitCharacter:\" \",cn:{table:\"table\",tableControlView:\"table-control-view\",scrollBackground:\"scroll-background\",yColumn:\"y-column\",columnBlock:\"column-block\",scrollAreaClip:\"scroll-area-clip\",scrollAreaClipRect:\"scroll-area-clip-rect\",columnBoundary:\"column-boundary\",columnBoundaryClippath:\"column-boundary-clippath\",columnBoundaryRect:\"column-boundary-rect\",columnCells:\"column-cells\",columnCell:\"column-cell\",cellRect:\"cell-rect\",cellText:\"cell-text\",cellTextHolder:\"cell-text-holder\",scrollbarKit:\"scrollbar-kit\",scrollbar:\"scrollbar\",scrollbarSlider:\"scrollbar-slider\",scrollbarGlyph:\"scrollbar-glyph\",scrollbarCaptureZone:\"scrollbar-capture-zone\"}}},{}],1066:[function(t,e,r){\"use strict\";var n=t(\"./constants\"),i=t(\"../../lib/extend\").extendFlat,a=t(\"fast-isnumeric\");function o(t){if(Array.isArray(t)){for(var e=0,r=0;r=e||c===t.length-1)&&(n[i]=o,o.key=l++,o.firstRowIndex=s,o.lastRowIndex=c,o={firstRowIndex:null,lastRowIndex:null,rows:[]},i+=a,s=c+1,a=0);return n}e.exports=function(t,e){var r=l(e.cells.values),p=function(t){return t.slice(e.header.values.length,t.length)},d=l(e.header.values);d.length&&!d[0].length&&(d[0]=[\"\"],d=l(d));var g=d.concat(p(r).map((function(){return c((d[0]||[\"\"]).length)}))),m=e.domain,v=Math.floor(t._fullLayout._size.w*(m.x[1]-m.x[0])),y=Math.floor(t._fullLayout._size.h*(m.y[1]-m.y[0])),x=e.header.values.length?g[0].map((function(){return e.header.height})):[n.emptyHeaderHeight],b=r.length?r[0].map((function(){return e.cells.height})):[],_=x.reduce(s,0),w=h(b,y-_+n.uplift),T=f(h(x,_),[]),k=f(w,T),A={},M=e._fullInput.columnorder.concat(p(r.map((function(t,e){return e})))),S=g.map((function(t,r){var n=Array.isArray(e.columnwidth)?e.columnwidth[Math.min(r,e.columnwidth.length-1)]:e.columnwidth;return a(n)?Number(n):1})),E=S.reduce(s,0);S=S.map((function(t){return t/E*v}));var L=Math.max(o(e.header.line.width),o(e.cells.line.width)),C={key:e.uid+t._context.staticPlot,translateX:m.x[0]*t._fullLayout._size.w,translateY:t._fullLayout._size.h*(1-m.y[1]),size:t._fullLayout._size,width:v,maxLineWidth:L,height:y,columnOrder:M,groupHeight:y,rowBlocks:k,headerRowBlocks:T,scrollY:0,cells:i({},e.cells,{values:r}),headerCells:i({},e.header,{values:g}),gdColumns:g.map((function(t){return t[0]})),gdColumnsOriginalOrder:g.map((function(t){return t[0]})),prevPages:[0,0],scrollbarState:{scrollbarScrollInProgress:!1},columns:g.map((function(t,e){var r=A[t];return A[t]=(r||0)+1,{key:t+\"__\"+A[t],label:t,specIndex:e,xIndex:M[e],xScale:u,x:void 0,calcdata:void 0,columnWidth:S[e]}}))};return C.columns.forEach((function(t){t.calcdata=C,t.x=u(t)})),C}},{\"../../lib/extend\":493,\"./constants\":1065,\"fast-isnumeric\":190}],1067:[function(t,e,r){\"use strict\";var n=t(\"../../lib/extend\").extendFlat;r.splitToPanels=function(t){var e=[0,0],r=n({},t,{key:\"header\",type:\"header\",page:0,prevPages:e,currentRepaint:[null,null],dragHandle:!0,values:t.calcdata.headerCells.values[t.specIndex],rowBlocks:t.calcdata.headerRowBlocks,calcdata:n({},t.calcdata,{cells:t.calcdata.headerCells})});return[n({},t,{key:\"cells1\",type:\"cells\",page:0,prevPages:e,currentRepaint:[null,null],dragHandle:!1,values:t.calcdata.cells.values[t.specIndex],rowBlocks:t.calcdata.rowBlocks}),n({},t,{key:\"cells2\",type:\"cells\",page:1,prevPages:e,currentRepaint:[null,null],dragHandle:!1,values:t.calcdata.cells.values[t.specIndex],rowBlocks:t.calcdata.rowBlocks}),r]},r.splitToCells=function(t){var e=function(t){var e=t.rowBlocks[t.page],r=e?e.rows[0].rowIndex:0,n=e?r+e.rows.length:0;return[r,n]}(t);return(t.values||[]).slice(e[0],e[1]).map((function(r,n){return{keyWithinBlock:n+(\"string\"==typeof r&&r.match(/[<$&> ]/)?\"_keybuster_\"+Math.random():\"\"),key:e[0]+n,column:t,calcdata:t.calcdata,page:t.page,rowBlocks:t.rowBlocks,value:r}}))}},{\"../../lib/extend\":493}],1068:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./attributes\"),a=t(\"../../plots/domain\").defaults;e.exports=function(t,e,r,o){function s(r,a){return n.coerce(t,e,i,r,a)}a(e,o,s),s(\"columnwidth\"),s(\"header.values\"),s(\"header.format\"),s(\"header.align\"),s(\"header.prefix\"),s(\"header.suffix\"),s(\"header.height\"),s(\"header.line.width\"),s(\"header.line.color\"),s(\"header.fill.color\"),n.coerceFont(s,\"header.font\",n.extendFlat({},o.font)),function(t,e){for(var r=t.columnorder||[],n=t.header.values.length,i=r.slice(0,n),a=i.slice().sort((function(t,e){return t-e})),o=i.map((function(t){return a.indexOf(t)})),s=o.length;s/i),l=!o||s;t.mayHaveMarkup=o&&i.match(/[<&>]/);var c,u=\"string\"==typeof(c=i)&&c.match(n.latexCheck);t.latex=u;var f,h,p=u?\"\":T(t.calcdata.cells.prefix,e,r)||\"\",d=u?\"\":T(t.calcdata.cells.suffix,e,r)||\"\",g=u?null:T(t.calcdata.cells.format,e,r)||null,m=p+(g?a(g)(t.value):t.value)+d;if(t.wrappingNeeded=!t.wrapped&&!l&&!u&&(f=w(m)),t.cellHeightMayIncrease=s||u||t.mayHaveMarkup||(void 0===f?w(m):f),t.needsConvertToTspans=t.mayHaveMarkup||t.wrappingNeeded||t.latex,t.wrappingNeeded){var v=(\" \"===n.wrapSplitCharacter?m.replace(/i&&n.push(a),i+=l}return n}(i,l,s);1===c.length&&(c[0]===i.length-1?c.unshift(c[0]-1):c.push(c[0]+1)),c[0]%2&&c.reverse(),e.each((function(t,e){t.page=c[e],t.scrollY=l})),e.attr(\"transform\",(function(t){var e=D(t.rowBlocks,t.page)-t.scrollY;return u(0,e)})),t&&(C(t,r,e,c,n.prevPages,n,0),C(t,r,e,c,n.prevPages,n,1),x(r,t))}}function L(t,e,r,a){return function(o){var s=o.calcdata?o.calcdata:o,l=e.filter((function(t){return s.key===t.key})),c=r||s.scrollbarState.dragMultiplier,u=s.scrollY;s.scrollY=void 0===a?s.scrollY+c*i.event.dy:a;var f=l.selectAll(\".\"+n.cn.yColumn).selectAll(\".\"+n.cn.columnBlock).filter(A);return E(t,f,l),s.scrollY===u}}function C(t,e,r,n,i,a,o){n[o]!==i[o]&&(clearTimeout(a.currentRepaint[o]),a.currentRepaint[o]=setTimeout((function(){var a=r.filter((function(t,e){return e===o&&n[e]!==i[e]}));b(t,e,a,r),i[o]=n[o]})))}function P(t,e,r,a){return function(){var o=i.select(e.parentNode);o.each((function(t){var e=t.fragments;o.selectAll(\"tspan.line\").each((function(t,r){e[r].width=this.getComputedTextLength()}));var r,i,a=e[e.length-1].width,s=e.slice(0,-1),l=[],c=0,u=t.column.columnWidth-2*n.cellPad;for(t.value=\"\";s.length;)c+(i=(r=s.shift()).width+a)>u&&(t.value+=l.join(n.wrapSpacer)+n.lineBreaker,l=[],c=0),l.push(r.text),c+=i;c&&(t.value+=l.join(n.wrapSpacer)),t.wrapped=!0})),o.selectAll(\"tspan.line\").remove(),_(o.select(\".\"+n.cn.cellText),r,t,a),i.select(e.parentNode.parentNode).call(z)}}function I(t,e,r,a,o){return function(){if(!o.settledY){var s=i.select(e.parentNode),l=B(o),c=o.key-l.firstRowIndex,f=l.rows[c].rowHeight,h=o.cellHeightMayIncrease?e.parentNode.getBoundingClientRect().height+2*n.cellPad:f,p=Math.max(h,f);p-l.rows[c].rowHeight&&(l.rows[c].rowHeight=p,t.selectAll(\".\"+n.cn.columnCell).call(z),E(null,t.filter(A),0),x(r,a,!0)),s.attr(\"transform\",(function(){var t=this.parentNode.getBoundingClientRect(),e=i.select(this.parentNode).select(\".\"+n.cn.cellRect).node().getBoundingClientRect(),r=this.transform.baseVal.consolidate(),a=e.top-t.top+(r?r.matrix.f:n.cellPad);return u(O(o,i.select(this.parentNode).select(\".\"+n.cn.cellTextHolder).node().getBoundingClientRect().width),a)})),o.settledY=!0}}}function O(t,e){switch(t.align){case\"left\":return n.cellPad;case\"right\":return t.column.columnWidth-(e||0)-n.cellPad;case\"center\":return(t.column.columnWidth-(e||0))/2;default:return n.cellPad}}function z(t){t.attr(\"transform\",(function(t){var e=t.rowBlocks[0].auxiliaryBlocks.reduce((function(t,e){return t+R(e,1/0)}),0),r=R(B(t),t.key);return u(0,r+e)})).selectAll(\".\"+n.cn.cellRect).attr(\"height\",(function(t){return(e=B(t),r=t.key,e.rows[r-e.firstRowIndex]).rowHeight;var e,r}))}function D(t,e){for(var r=0,n=e-1;n>=0;n--)r+=F(t[n]);return r}function R(t,e){for(var r=0,n=0;n\",\"<\",\"|\",\"/\",\"\\\\\"],dflt:\">\",editType:\"plot\"},thickness:{valType:\"number\",min:12,editType:\"plot\"},textfont:u({},s.textfont,{}),editType:\"calc\"},text:s.text,textinfo:l.textinfo,texttemplate:i({editType:\"plot\"},{keys:c.eventDataKeys.concat([\"label\",\"value\"])}),hovertext:s.hovertext,hoverinfo:l.hoverinfo,hovertemplate:n({},{keys:c.eventDataKeys}),textfont:s.textfont,insidetextfont:s.insidetextfont,outsidetextfont:u({},s.outsidetextfont,{}),textposition:{valType:\"enumerated\",values:[\"top left\",\"top center\",\"top right\",\"middle left\",\"middle center\",\"middle right\",\"bottom left\",\"bottom center\",\"bottom right\"],dflt:\"top left\",editType:\"plot\"},sort:s.sort,root:l.root,domain:o({name:\"treemap\",trace:!0,editType:\"calc\"})}},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plots/domain\":584,\"../../plots/template_attributes\":633,\"../pie/attributes\":900,\"../sunburst/attributes\":1045,\"./constants\":1074}],1072:[function(t,e,r){\"use strict\";var n=t(\"../../plots/plots\");r.name=\"treemap\",r.plot=function(t,e,i,a){n.plotBasePlot(r.name,t,e,i,a)},r.clean=function(t,e,i,a){n.cleanBasePlot(r.name,t,e,i,a)}},{\"../../plots/plots\":619}],1073:[function(t,e,r){\"use strict\";var n=t(\"../sunburst/calc\");r.calc=function(t,e){return n.calc(t,e)},r.crossTraceCalc=function(t){return n._runCrossTraceCalc(\"treemap\",t)}},{\"../sunburst/calc\":1047}],1074:[function(t,e,r){\"use strict\";e.exports={CLICK_TRANSITION_TIME:750,CLICK_TRANSITION_EASING:\"poly\",eventDataKeys:[\"currentPath\",\"root\",\"entry\",\"percentRoot\",\"percentEntry\",\"percentParent\"],gapWithPathbar:1}},{}],1075:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./attributes\"),a=t(\"../../components/color\"),o=t(\"../../plots/domain\").defaults,s=t(\"../bar/defaults\").handleText,l=t(\"../bar/constants\").TEXTPAD,c=t(\"../../components/colorscale\"),u=c.hasColorscale,f=c.handleDefaults;e.exports=function(t,e,r,c){function h(r,a){return n.coerce(t,e,i,r,a)}var p=h(\"labels\"),d=h(\"parents\");if(p&&p.length&&d&&d.length){var g=h(\"values\");g&&g.length?h(\"branchvalues\"):h(\"count\"),h(\"level\"),h(\"maxdepth\"),\"squarify\"===h(\"tiling.packing\")&&h(\"tiling.squarifyratio\"),h(\"tiling.flip\"),h(\"tiling.pad\");var m=h(\"text\");h(\"texttemplate\"),e.texttemplate||h(\"textinfo\",Array.isArray(m)?\"text+label\":\"label\"),h(\"hovertext\"),h(\"hovertemplate\");var v=h(\"pathbar.visible\");s(t,e,c,h,\"auto\",{hasPathbar:v,moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),h(\"textposition\");var y=-1!==e.textposition.indexOf(\"bottom\");h(\"marker.line.width\")&&h(\"marker.line.color\",c.paper_bgcolor);var x=h(\"marker.colors\");(e._hasColorscale=u(t,\"marker\",\"colors\")||(t.marker||{}).coloraxis)?f(t,e,c,h,{prefix:\"marker.\",cLetter:\"c\"}):h(\"marker.depthfade\",!(x||[]).length);var b=2*e.textfont.size;h(\"marker.pad.t\",y?b/4:b),h(\"marker.pad.l\",b/4),h(\"marker.pad.r\",b/4),h(\"marker.pad.b\",y?b:b/4),e._hovered={marker:{line:{width:2,color:a.contrast(c.paper_bgcolor)}}},v&&(h(\"pathbar.thickness\",e.pathbar.textfont.size+2*l),h(\"pathbar.side\"),h(\"pathbar.edgeshape\")),h(\"sort\"),h(\"root.color\"),o(e,c,h),e._length=null}else e.visible=!1}},{\"../../components/color\":366,\"../../components/colorscale\":378,\"../../lib\":503,\"../../plots/domain\":584,\"../bar/constants\":650,\"../bar/defaults\":652,\"./attributes\":1071}],1076:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../sunburst/helpers\"),a=t(\"../bar/uniform_text\").clearMinTextSize,o=t(\"../bar/style\").resizeText,s=t(\"./plot_one\");e.exports=function(t,e,r,l,c){var u,f,h=c.type,p=c.drawDescendants,d=t._fullLayout,g=d[\"_\"+h+\"layer\"],m=!r;(a(h,d),(u=g.selectAll(\"g.trace.\"+h).data(e,(function(t){return t[0].trace.uid}))).enter().append(\"g\").classed(\"trace\",!0).classed(h,!0),u.order(),!d.uniformtext.mode&&i.hasTransition(r))?(l&&(f=l()),n.transition().duration(r.duration).ease(r.easing).each(\"end\",(function(){f&&f()})).each(\"interrupt\",(function(){f&&f()})).each((function(){g.selectAll(\"g.trace\").each((function(e){s(t,e,this,r,p)}))}))):(u.each((function(e){s(t,e,this,r,p)})),d.uniformtext.mode&&o(t,g.selectAll(\".trace\"),h));m&&u.exit().remove()}},{\"../bar/style\":662,\"../bar/uniform_text\":664,\"../sunburst/helpers\":1051,\"./plot_one\":1085,\"@plotly/d3\":58}],1077:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../components/drawing\"),o=t(\"../../lib/svg_text_utils\"),s=t(\"./partition\"),l=t(\"./style\").styleOne,c=t(\"./constants\"),u=t(\"../sunburst/helpers\"),f=t(\"../sunburst/fx\");e.exports=function(t,e,r,h,p){var d=p.barDifY,g=p.width,m=p.height,v=p.viewX,y=p.viewY,x=p.pathSlice,b=p.toMoveInsideSlice,_=p.strTransform,w=p.hasTransition,T=p.handleSlicesExit,k=p.makeUpdateSliceInterpolator,A=p.makeUpdateTextInterpolator,M={},S=t._fullLayout,E=e[0],L=E.trace,C=E.hierarchy,P=g/L._entryDepth,I=u.listPath(r.data,\"id\"),O=s(C.copy(),[g,m],{packing:\"dice\",pad:{inner:0,top:0,left:0,right:0,bottom:0}}).descendants();(O=O.filter((function(t){var e=I.indexOf(t.data.id);return-1!==e&&(t.x0=P*e,t.x1=P*(e+1),t.y0=d,t.y1=d+m,t.onPathbar=!0,!0)}))).reverse(),(h=h.data(O,u.getPtId)).enter().append(\"g\").classed(\"pathbar\",!0),T(h,!0,M,[g,m],x),h.order();var z=h;w&&(z=z.transition().each(\"end\",(function(){var e=n.select(this);u.setSliceCursor(e,t,{hideOnRoot:!1,hideOnLeaves:!1,isTransitioning:!1})}))),z.each((function(s){s._x0=v(s.x0),s._x1=v(s.x1),s._y0=y(s.y0),s._y1=y(s.y1),s._hoverX=v(s.x1-Math.min(g,m)/2),s._hoverY=y(s.y1-m/2);var h=n.select(this),p=i.ensureSingle(h,\"path\",\"surface\",(function(t){t.style(\"pointer-events\",\"all\")}));w?p.transition().attrTween(\"d\",(function(t){var e=k(t,!0,M,[g,m]);return function(t){return x(e(t))}})):p.attr(\"d\",x),h.call(f,r,t,e,{styleOne:l,eventDataKeys:c.eventDataKeys,transitionTime:c.CLICK_TRANSITION_TIME,transitionEasing:c.CLICK_TRANSITION_EASING}).call(u.setSliceCursor,t,{hideOnRoot:!1,hideOnLeaves:!1,isTransitioning:t._transitioning}),p.call(l,s,L,{hovered:!1}),s._text=(u.getPtLabel(s)||\"\").split(\"
\").join(\" \")||\"\";var d=i.ensureSingle(h,\"g\",\"slicetext\"),T=i.ensureSingle(d,\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),E=i.ensureUniformFontSize(t,u.determineTextFont(L,s,S.font,{onPathbar:!0}));T.text(s._text||\" \").classed(\"slicetext\",!0).attr(\"text-anchor\",\"start\").call(a.font,E).call(o.convertToTspans,t),s.textBB=a.bBox(T.node()),s.transform=b(s,{fontSize:E.size,onPathbar:!0}),s.transform.fontSize=E.size,w?T.transition().attrTween(\"transform\",(function(t){var e=A(t,!0,M,[g,m]);return function(t){return _(e(t))}})):T.attr(\"transform\",_(s))}))}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../sunburst/fx\":1050,\"../sunburst/helpers\":1051,\"./constants\":1074,\"./partition\":1083,\"./style\":1086,\"@plotly/d3\":58}],1078:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../components/drawing\"),o=t(\"../../lib/svg_text_utils\"),s=t(\"./partition\"),l=t(\"./style\").styleOne,c=t(\"./constants\"),u=t(\"../sunburst/helpers\"),f=t(\"../sunburst/fx\"),h=t(\"../sunburst/plot\").formatSliceLabel;e.exports=function(t,e,r,p,d){var g=d.width,m=d.height,v=d.viewX,y=d.viewY,x=d.pathSlice,b=d.toMoveInsideSlice,_=d.strTransform,w=d.hasTransition,T=d.handleSlicesExit,k=d.makeUpdateSliceInterpolator,A=d.makeUpdateTextInterpolator,M=d.prevEntry,S=t._fullLayout,E=e[0].trace,L=-1!==E.textposition.indexOf(\"left\"),C=-1!==E.textposition.indexOf(\"right\"),P=-1!==E.textposition.indexOf(\"bottom\"),I=!P&&!E.marker.pad.t||P&&!E.marker.pad.b,O=s(r,[g,m],{packing:E.tiling.packing,squarifyratio:E.tiling.squarifyratio,flipX:E.tiling.flip.indexOf(\"x\")>-1,flipY:E.tiling.flip.indexOf(\"y\")>-1,pad:{inner:E.tiling.pad,top:E.marker.pad.t,left:E.marker.pad.l,right:E.marker.pad.r,bottom:E.marker.pad.b}}).descendants(),z=1/0,D=-1/0;O.forEach((function(t){var e=t.depth;e>=E._maxDepth?(t.x0=t.x1=(t.x0+t.x1)/2,t.y0=t.y1=(t.y0+t.y1)/2):(z=Math.min(z,e),D=Math.max(D,e))})),p=p.data(O,u.getPtId),E._maxVisibleLayers=isFinite(D)?D-z+1:0,p.enter().append(\"g\").classed(\"slice\",!0),T(p,!1,{},[g,m],x),p.order();var R=null;if(w&&M){var F=u.getPtId(M);p.each((function(t){null===R&&u.getPtId(t)===F&&(R={x0:t.x0,x1:t.x1,y0:t.y0,y1:t.y1})}))}var B=function(){return R||{x0:0,x1:g,y0:0,y1:m}},N=p;return w&&(N=N.transition().each(\"end\",(function(){var e=n.select(this);u.setSliceCursor(e,t,{hideOnRoot:!0,hideOnLeaves:!1,isTransitioning:!1})}))),N.each((function(s){var p=u.isHeader(s,E);s._x0=v(s.x0),s._x1=v(s.x1),s._y0=y(s.y0),s._y1=y(s.y1),s._hoverX=v(s.x1-E.marker.pad.r),s._hoverY=y(P?s.y1-E.marker.pad.b/2:s.y0+E.marker.pad.t/2);var d=n.select(this),T=i.ensureSingle(d,\"path\",\"surface\",(function(t){t.style(\"pointer-events\",\"all\")}));w?T.transition().attrTween(\"d\",(function(t){var e=k(t,!1,B(),[g,m]);return function(t){return x(e(t))}})):T.attr(\"d\",x),d.call(f,r,t,e,{styleOne:l,eventDataKeys:c.eventDataKeys,transitionTime:c.CLICK_TRANSITION_TIME,transitionEasing:c.CLICK_TRANSITION_EASING}).call(u.setSliceCursor,t,{isTransitioning:t._transitioning}),T.call(l,s,E,{hovered:!1}),s.x0===s.x1||s.y0===s.y1?s._text=\"\":s._text=p?I?\"\":u.getPtLabel(s)||\"\":h(s,r,E,e,S)||\"\";var M=i.ensureSingle(d,\"g\",\"slicetext\"),O=i.ensureSingle(M,\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),z=i.ensureUniformFontSize(t,u.determineTextFont(E,s,S.font));O.text(s._text||\" \").classed(\"slicetext\",!0).attr(\"text-anchor\",C?\"end\":L||p?\"start\":\"middle\").call(a.font,z).call(o.convertToTspans,t),s.textBB=a.bBox(O.node()),s.transform=b(s,{fontSize:z.size,isHeader:p}),s.transform.fontSize=z.size,w?O.transition().attrTween(\"transform\",(function(t){var e=A(t,!1,B(),[g,m]);return function(t){return _(e(t))}})):O.attr(\"transform\",_(s))})),R}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../sunburst/fx\":1050,\"../sunburst/helpers\":1051,\"../sunburst/plot\":1055,\"./constants\":1074,\"./partition\":1083,\"./style\":1086,\"@plotly/d3\":58}],1079:[function(t,e,r){\"use strict\";e.exports=function t(e,r,n){var i;n.swapXY&&(i=e.x0,e.x0=e.y0,e.y0=i,i=e.x1,e.x1=e.y1,e.y1=i),n.flipX&&(i=e.x0,e.x0=r[0]-e.x1,e.x1=r[0]-i),n.flipY&&(i=e.y0,e.y0=r[1]-e.y1,e.y1=r[1]-i);var a=e.children;if(a)for(var o=0;o-1?C+O:-(I+O):0,D={x0:P,x1:P,y0:z,y1:z+I},R=function(t,e,r){var n=v.tiling.pad,i=function(t){return t-n<=e.x0},a=function(t){return t+n>=e.x1},o=function(t){return t-n<=e.y0},s=function(t){return t+n>=e.y1};return t.x0===e.x0&&t.x1===e.x1&&t.y0===e.y0&&t.y1===e.y1?{x0:t.x0,x1:t.x1,y0:t.y0,y1:t.y1}:{x0:i(t.x0-n)?0:a(t.x0-n)?r[0]:t.x0,x1:i(t.x1+n)?0:a(t.x1+n)?r[0]:t.x1,y0:o(t.y0-n)?0:s(t.y0-n)?r[1]:t.y0,y1:o(t.y1+n)?0:s(t.y1+n)?r[1]:t.y1}},F=null,B={},N={},j=null,U=function(t,e){return e?B[h(t)]:N[h(t)]},V=function(t,e,r,n){if(e)return B[h(x)]||D;var i=N[v.level]||r;return function(t){return t.data.depth-b.data.depth=(n-=(y?m:m.r)-s)){var x=(r+n)/2;r=x,n=x}var b;f?i<(b=a-(y?m:m.b))&&b\"===tt?(l.x-=a,c.x-=a,u.x-=a,f.x-=a):\"/\"===tt?(u.x-=a,f.x-=a,o.x-=a/2,s.x-=a/2):\"\\\\\"===tt?(l.x-=a,c.x-=a,o.x-=a/2,s.x-=a/2):\"<\"===tt&&(o.x-=a,s.x-=a),$(l),$(f),$(o),$(c),$(u),$(s),\"M\"+K(l.x,l.y)+\"L\"+K(c.x,c.y)+\"L\"+K(s.x,s.y)+\"L\"+K(u.x,u.y)+\"L\"+K(f.x,f.y)+\"L\"+K(o.x,o.y)+\"Z\"},toMoveInsideSlice:et,makeUpdateSliceInterpolator:nt,makeUpdateTextInterpolator:it,handleSlicesExit:at,hasTransition:A,strTransform:ot}):w.remove()}},{\"../../lib\":503,\"../bar/constants\":650,\"../bar/plot\":659,\"../bar/uniform_text\":664,\"../sunburst/helpers\":1051,\"./constants\":1074,\"./draw_ancestors\":1077,\"@plotly/d3\":58,\"d3-interpolate\":116}],1086:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../components/color\"),a=t(\"../../lib\"),o=t(\"../sunburst/helpers\"),s=t(\"../bar/uniform_text\").resizeText;function l(t,e,r,n){var s,l,c=(n||{}).hovered,u=e.data.data,f=u.i,h=u.color,p=o.isHierarchyRoot(e),d=1;if(c)s=r._hovered.marker.line.color,l=r._hovered.marker.line.width;else if(p&&h===r.root.color)d=100,s=\"rgba(0,0,0,0)\",l=0;else if(s=a.castOption(r,f,\"marker.line.color\")||i.defaultLine,l=a.castOption(r,f,\"marker.line.width\")||0,!r._hasColorscale&&!e.onPathbar){var g=r.marker.depthfade;if(g){var m,v=i.combine(i.addOpacity(r._backgroundColor,.75),h);if(!0===g){var y=o.getMaxDepth(r);m=isFinite(y)?o.isLeaf(e)?0:r._maxVisibleLayers-(e.data.depth-r._entryDepth):e.data.height+1}else m=e.data.depth-r._entryDepth,r._atRootLevel||m++;if(m>0)for(var x=0;x0){var x,b,_,w,T,k=t.xa,A=t.ya;\"h\"===p.orientation?(T=e,x=\"y\",_=A,b=\"x\",w=k):(T=r,x=\"x\",_=k,b=\"y\",w=A);var M=h[t.index];if(T>=M.span[0]&&T<=M.span[1]){var S=n.extendFlat({},t),E=w.c2p(T,!0),L=o.getKdeValue(M,p,T),C=o.getPositionOnKdePath(M,p,E),P=_._offset,I=_._length;S[x+\"0\"]=C[0],S[x+\"1\"]=C[1],S[b+\"0\"]=S[b+\"1\"]=E,S[b+\"Label\"]=b+\": \"+i.hoverLabelText(w,T,p[b+\"hoverformat\"])+\", \"+h[0].t.labels.kde+\" \"+L.toFixed(3),S.spikeDistance=y[0].spikeDistance;var O=x+\"Spike\";S[O]=y[0][O],y[0].spikeDistance=void 0,y[0][O]=void 0,S.hovertemplate=!1,v.push(S),(u={stroke:t.color})[x+\"1\"]=n.constrain(P+C[0],P,P+I),u[x+\"2\"]=n.constrain(P+C[1],P,P+I),u[b+\"1\"]=u[b+\"2\"]=w._offset+E}}g&&(v=v.concat(y))}-1!==d.indexOf(\"points\")&&(c=a.hoverOnPoints(t,e,r));var z=f.selectAll(\".violinline-\"+p.uid).data(u?[0]:[]);return z.enter().append(\"line\").classed(\"violinline-\"+p.uid,!0).attr(\"stroke-width\",1.5),z.exit().remove(),z.attr(u),\"closest\"===s?c?[c]:v:c?(v.push(c),v):v}},{\"../../lib\":503,\"../../plots/cartesian/axes\":554,\"../box/hover\":678,\"./helpers\":1091}],1093:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\"),crossTraceDefaults:t(\"../box/defaults\").crossTraceDefaults,supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\"),crossTraceCalc:t(\"./cross_trace_calc\"),plot:t(\"./plot\"),style:t(\"./style\"),styleOnSelect:t(\"../scatter/style\").styleOnSelect,hoverPoints:t(\"./hover\"),selectPoints:t(\"../box/select\"),moduleType:\"trace\",name:\"violin\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"cartesian\",\"svg\",\"symbols\",\"oriented\",\"box-violin\",\"showLegend\",\"violinLayout\",\"zoomScale\"],meta:{}}},{\"../../plots/cartesian\":568,\"../box/defaults\":676,\"../box/select\":683,\"../scatter/style\":950,\"./attributes\":1087,\"./calc\":1088,\"./cross_trace_calc\":1089,\"./defaults\":1090,\"./hover\":1092,\"./layout_attributes\":1094,\"./layout_defaults\":1095,\"./plot\":1096,\"./style\":1097}],1094:[function(t,e,r){\"use strict\";var n=t(\"../box/layout_attributes\"),i=t(\"../../lib\").extendFlat;e.exports={violinmode:i({},n.boxmode,{}),violingap:i({},n.boxgap,{}),violingroupgap:i({},n.boxgroupgap,{})}},{\"../../lib\":503,\"../box/layout_attributes\":680}],1095:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\"),a=t(\"../box/layout_defaults\");e.exports=function(t,e,r){a._supply(t,e,r,(function(r,a){return n.coerce(t,e,i,r,a)}),\"violin\")}},{\"../../lib\":503,\"../box/layout_defaults\":681,\"./layout_attributes\":1094}],1096:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../components/drawing\"),o=t(\"../box/plot\"),s=t(\"../scatter/line_points\"),l=t(\"./helpers\");e.exports=function(t,e,r,c){var u=t._fullLayout,f=e.xaxis,h=e.yaxis;function p(t){var e=s(t,{xaxis:f,yaxis:h,connectGaps:!0,baseTolerance:.75,shape:\"spline\",simplify:!0,linearized:!0});return a.smoothopen(e[0],1)}i.makeTraceGroups(c,r,\"trace violins\").each((function(t){var r=n.select(this),a=t[0],s=a.t,c=a.trace;if(!0!==c.visible||s.empty)r.remove();else{var d=s.bPos,g=s.bdPos,m=e[s.valLetter+\"axis\"],v=e[s.posLetter+\"axis\"],y=\"both\"===c.side,x=y||\"positive\"===c.side,b=y||\"negative\"===c.side,_=r.selectAll(\"path.violin\").data(i.identity);_.enter().append(\"path\").style(\"vector-effect\",\"non-scaling-stroke\").attr(\"class\",\"violin\"),_.exit().remove(),_.each((function(t){var e,r,i,a,o,l,f,h,_=n.select(this),w=t.density,T=w.length,k=v.c2l(t.pos+d,!0),A=v.l2p(k);if(c.width)e=s.maxKDE/g;else{var M=u._violinScaleGroupStats[c.scalegroup];e=\"count\"===c.scalemode?M.maxKDE/g*(M.maxCount/t.pts.length):M.maxKDE/g}if(x){for(f=new Array(T),o=0;o\")),u.color=function(t,e){var r=t[e.dir].marker,n=r.color,a=r.line.color,o=r.line.width;if(i(n))return n;if(i(a)&&o)return a}(h,m),[u]}function k(t){return n(g,t,h[d+\"hoverformat\"])}}},{\"../../components/color\":366,\"../../constants/delta.js\":473,\"../../plots/cartesian/axes\":554,\"../bar/hover\":655}],1109:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\").supplyDefaults,crossTraceDefaults:t(\"./defaults\").crossTraceDefaults,supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\"),crossTraceCalc:t(\"./cross_trace_calc\"),plot:t(\"./plot\"),style:t(\"./style\").style,hoverPoints:t(\"./hover\"),eventData:t(\"./event_data\"),selectPoints:t(\"../bar/select\"),moduleType:\"trace\",name:\"waterfall\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"bar-like\",\"cartesian\",\"svg\",\"oriented\",\"showLegend\",\"zoomScale\"],meta:{}}},{\"../../plots/cartesian\":568,\"../bar/select\":660,\"./attributes\":1102,\"./calc\":1103,\"./cross_trace_calc\":1105,\"./defaults\":1106,\"./event_data\":1107,\"./hover\":1108,\"./layout_attributes\":1110,\"./layout_defaults\":1111,\"./plot\":1112,\"./style\":1113}],1110:[function(t,e,r){\"use strict\";e.exports={waterfallmode:{valType:\"enumerated\",values:[\"group\",\"overlay\"],dflt:\"group\",editType:\"calc\"},waterfallgap:{valType:\"number\",min:0,max:1,editType:\"calc\"},waterfallgroupgap:{valType:\"number\",min:0,max:1,dflt:0,editType:\"calc\"}}},{}],1111:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e,r){var a=!1;function o(r,a){return n.coerce(t,e,i,r,a)}for(var s=0;s0&&(m+=h?\"M\"+f[0]+\",\"+d[1]+\"V\"+d[0]:\"M\"+f[1]+\",\"+d[0]+\"H\"+f[0]),\"between\"!==p&&(r.isSum||s path\").each((function(t){if(!t.isBlank){var e=s[t.dir].marker;n.select(this).call(a.fill,e.color).call(a.stroke,e.line.color).call(i.dashLine,e.line.dash,e.line.width).style(\"opacity\",s.selectedpoints&&!t.selected?o:1)}})),c(r,s,t),r.selectAll(\".lines\").each((function(){var t=s.connector.line;i.lineGroupStyle(n.select(this).selectAll(\"path\"),t.width,t.color,t.dash)}))}))}}},{\"../../components/color\":366,\"../../components/drawing\":388,\"../../constants/interactions\":478,\"../bar/style\":662,\"../bar/uniform_text\":664,\"@plotly/d3\":58}],1114:[function(t,e,r){\"use strict\";var n=t(\"../plots/cartesian/axes\"),i=t(\"../lib\"),a=t(\"../plot_api/plot_schema\"),o=t(\"./helpers\").pointsAccessorFunction,s=t(\"../constants/numerical\").BADNUM;r.moduleType=\"transform\",r.name=\"aggregate\";var l=r.attributes={enabled:{valType:\"boolean\",dflt:!0,editType:\"calc\"},groups:{valType:\"string\",strict:!0,noBlank:!0,arrayOk:!0,dflt:\"x\",editType:\"calc\"},aggregations:{_isLinkedToArray:\"aggregation\",target:{valType:\"string\",editType:\"calc\"},func:{valType:\"enumerated\",values:[\"count\",\"sum\",\"avg\",\"median\",\"mode\",\"rms\",\"stddev\",\"min\",\"max\",\"first\",\"last\",\"change\",\"range\"],dflt:\"first\",editType:\"calc\"},funcmode:{valType:\"enumerated\",values:[\"sample\",\"population\"],dflt:\"sample\",editType:\"calc\"},enabled:{valType:\"boolean\",dflt:!0,editType:\"calc\"},editType:\"calc\"},editType:\"calc\"},c=l.aggregations;function u(t,e,r,a){if(a.enabled){for(var o=a.target,l=i.nestedProperty(e,o),c=l.get(),u=function(t,e){var r=t.func,n=e.d2c,a=e.c2d;switch(r){case\"count\":return f;case\"first\":return h;case\"last\":return p;case\"sum\":return function(t,e){for(var r=0,i=0;ii&&(i=u,o=c)}}return i?a(o):s};case\"rms\":return function(t,e){for(var r=0,i=0,o=0;o\":return function(t){return h(t)>s};case\">=\":return function(t){return h(t)>=s};case\"[]\":return function(t){var e=h(t);return e>=s[0]&&e<=s[1]};case\"()\":return function(t){var e=h(t);return e>s[0]&&e=s[0]&&es[0]&&e<=s[1]};case\"][\":return function(t){var e=h(t);return e<=s[0]||e>=s[1]};case\")(\":return function(t){var e=h(t);return es[1]};case\"](\":return function(t){var e=h(t);return e<=s[0]||e>s[1]};case\")[\":return function(t){var e=h(t);return e=s[1]};case\"{}\":return function(t){return-1!==s.indexOf(h(t))};case\"}{\":return function(t){return-1===s.indexOf(h(t))}}}(r,a.getDataToCoordFunc(t,e,s,i),h),x={},b={},_=0;d?(m=function(t){x[t.astr]=n.extendDeep([],t.get()),t.set(new Array(f))},v=function(t,e){var r=x[t.astr][e];t.get()[e]=r}):(m=function(t){x[t.astr]=n.extendDeep([],t.get()),t.set([])},v=function(t,e){var r=x[t.astr][e];t.get().push(r)}),k(m);for(var w=o(e.transforms,r),T=0;T1?\"%{group} (%{trace})\":\"%{group}\");var l=t.styles,c=o.styles=[];if(l)for(a=0;a0?o-4:o;for(r=0;r>16&255,l[u++]=e>>8&255,l[u++]=255&e;2===s&&(e=i[t.charCodeAt(r)]<<2|i[t.charCodeAt(r+1)]>>4,l[u++]=255&e);1===s&&(e=i[t.charCodeAt(r)]<<10|i[t.charCodeAt(r+1)]<<4|i[t.charCodeAt(r+2)]>>2,l[u++]=e>>8&255,l[u++]=255&e);return l},r.fromByteArray=function(t){for(var e,r=t.length,i=r%3,a=[],o=0,s=r-i;os?s:o+16383));1===i?(e=t[r-1],a.push(n[e>>2]+n[e<<4&63]+\"==\")):2===i&&(e=(t[r-2]<<8)+t[r-1],a.push(n[e>>10]+n[e>>4&63]+n[e<<2&63]+\"=\"));return a.join(\"\")};for(var n=[],i=[],a=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",s=0,l=o.length;s0)throw new Error(\"Invalid string. Length must be a multiple of 4\");var r=t.indexOf(\"=\");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function u(t,e,r){for(var i,a,o=[],s=e;s>18&63]+n[a>>12&63]+n[a>>6&63]+n[63&a]);return o.join(\"\")}i[\"-\".charCodeAt(0)]=62,i[\"_\".charCodeAt(0)]=63},{}],2:[function(t,e,r){},{}],3:[function(t,e,r){(function(e){(function(){\n", + "var n,i=t(\"./lib/build-log\"),a=t(\"./lib/epsilon\"),o=t(\"./lib/intersecter\"),s=t(\"./lib/segment-chainer\"),l=t(\"./lib/segment-selector\"),c=t(\"./lib/geojson\"),u=!1,f=a();function h(t,e,r){var i=n.segments(t),a=n.segments(e),o=r(n.combine(i,a));return n.polygon(o)}n={buildLog:function(t){return!0===t?u=i():!1===t&&(u=!1),!1!==u&&u.list},epsilon:function(t){return f.epsilon(t)},segments:function(t){var e=o(!0,f,u);return t.regions.forEach(e.addRegion),{segments:e.calculate(t.inverted),inverted:t.inverted}},combine:function(t,e){return{combined:o(!1,f,u).calculate(t.segments,t.inverted,e.segments,e.inverted),inverted1:t.inverted,inverted2:e.inverted}},selectUnion:function(t){return{segments:l.union(t.combined,u),inverted:t.inverted1||t.inverted2}},selectIntersect:function(t){return{segments:l.intersect(t.combined,u),inverted:t.inverted1&&t.inverted2}},selectDifference:function(t){return{segments:l.difference(t.combined,u),inverted:t.inverted1&&!t.inverted2}},selectDifferenceRev:function(t){return{segments:l.differenceRev(t.combined,u),inverted:!t.inverted1&&t.inverted2}},selectXor:function(t){return{segments:l.xor(t.combined,u),inverted:t.inverted1!==t.inverted2}},polygon:function(t){return{regions:s(t.segments,f,u),inverted:t.inverted}},polygonFromGeoJSON:function(t){return c.toPolygon(n,t)},polygonToGeoJSON:function(t){return c.fromPolygon(n,f,t)},union:function(t,e){return h(t,e,n.selectUnion)},intersect:function(t,e){return h(t,e,n.selectIntersect)},difference:function(t,e){return h(t,e,n.selectDifference)},differenceRev:function(t,e){return h(t,e,n.selectDifferenceRev)},xor:function(t,e){return h(t,e,n.selectXor)}},\"object\"==typeof window&&(window.PolyBool=n),e.exports=n},{\"./lib/build-log\":255,\"./lib/epsilon\":256,\"./lib/geojson\":257,\"./lib/intersecter\":258,\"./lib/segment-chainer\":260,\"./lib/segment-selector\":261}],255:[function(t,e,r){e.exports=function(){var t,e=0,r=!1;function n(e,r){return t.list.push({type:e,data:r?JSON.parse(JSON.stringify(r)):void 0}),t}return t={list:[],segmentId:function(){return e++},checkIntersection:function(t,e){return n(\"check\",{seg1:t,seg2:e})},segmentChop:function(t,e){return n(\"div_seg\",{seg:t,pt:e}),n(\"chop\",{seg:t,pt:e})},statusRemove:function(t){return n(\"pop_seg\",{seg:t})},segmentUpdate:function(t){return n(\"seg_update\",{seg:t})},segmentNew:function(t,e){return n(\"new_seg\",{seg:t,primary:e})},segmentRemove:function(t){return n(\"rem_seg\",{seg:t})},tempStatus:function(t,e,r){return n(\"temp_status\",{seg:t,above:e,below:r})},rewind:function(t){return n(\"rewind\",{seg:t})},status:function(t,e,r){return n(\"status\",{seg:t,above:e,below:r})},vert:function(e){return e===r?t:(r=e,n(\"vert\",{x:e}))},log:function(t){return\"string\"!=typeof t&&(t=JSON.stringify(t,!1,\" \")),n(\"log\",{txt:t})},reset:function(){return n(\"reset\")},selected:function(t){return n(\"selected\",{segs:t})},chainStart:function(t){return n(\"chain_start\",{seg:t})},chainRemoveHead:function(t,e){return n(\"chain_rem_head\",{index:t,pt:e})},chainRemoveTail:function(t,e){return n(\"chain_rem_tail\",{index:t,pt:e})},chainNew:function(t,e){return n(\"chain_new\",{pt1:t,pt2:e})},chainMatch:function(t){return n(\"chain_match\",{index:t})},chainClose:function(t){return n(\"chain_close\",{index:t})},chainAddHead:function(t,e){return n(\"chain_add_head\",{index:t,pt:e})},chainAddTail:function(t,e){return n(\"chain_add_tail\",{index:t,pt:e})},chainConnect:function(t,e){return n(\"chain_con\",{index1:t,index2:e})},chainReverse:function(t){return n(\"chain_rev\",{index:t})},chainJoin:function(t,e){return n(\"chain_join\",{index1:t,index2:e})},done:function(){return n(\"done\")}}}},{}],256:[function(t,e,r){e.exports=function(t){\"number\"!=typeof t&&(t=1e-10);var e={epsilon:function(e){return\"number\"==typeof e&&(t=e),t},pointAboveOrOnLine:function(e,r,n){var i=r[0],a=r[1],o=n[0],s=n[1],l=e[0];return(o-i)*(e[1]-a)-(s-a)*(l-i)>=-t},pointBetween:function(e,r,n){var i=e[1]-r[1],a=n[0]-r[0],o=e[0]-r[0],s=n[1]-r[1],l=o*a+i*s;return!(l-t)},pointsSameX:function(e,r){return Math.abs(e[0]-r[0])t!=o-i>t&&(a-c)*(i-u)/(o-u)+c-n>t&&(s=!s),a=c,o=u}return s}};return e}},{}],257:[function(t,e,r){var n={toPolygon:function(t,e){function r(e){if(e.length<=0)return t.segments({inverted:!1,regions:[]});function r(e){var r=e.slice(0,e.length-1);return t.segments({inverted:!1,regions:[r]})}for(var n=r(e[0]),i=1;i0}))}function u(t,n){var i=t.seg,a=n.seg,o=i.start,s=i.end,c=a.start,u=a.end;r&&r.checkIntersection(i,a);var f=e.linesIntersect(o,s,c,u);if(!1===f){if(!e.pointsCollinear(o,s,c))return!1;if(e.pointsSame(o,u)||e.pointsSame(s,c))return!1;var h=e.pointsSame(o,c),p=e.pointsSame(s,u);if(h&&p)return n;var d=!h&&e.pointBetween(o,c,u),g=!p&&e.pointBetween(s,c,u);if(h)return g?l(n,s):l(t,u),n;d&&(p||(g?l(n,s):l(t,u)),l(n,o))}else 0===f.alongA&&(-1===f.alongB?l(t,c):0===f.alongB?l(t,f.pt):1===f.alongB&&l(t,u)),0===f.alongB&&(-1===f.alongA?l(n,o):0===f.alongA?l(n,f.pt):1===f.alongA&&l(n,s));return!1}for(var f=[];!a.isEmpty();){var h=a.getHead();if(r&&r.vert(h.pt[0]),h.isStart){r&&r.segmentNew(h.seg,h.primary);var p=c(h),d=p.before?p.before.ev:null,g=p.after?p.after.ev:null;function m(){if(d){var t=u(h,d);if(t)return t}return!!g&&u(h,g)}r&&r.tempStatus(h.seg,!!d&&d.seg,!!g&&g.seg);var v,y=m();if(y){var x;if(t)(x=null===h.seg.myFill.below||h.seg.myFill.above!==h.seg.myFill.below)&&(y.seg.myFill.above=!y.seg.myFill.above);else y.seg.otherFill=h.seg.myFill;r&&r.segmentUpdate(y.seg),h.other.remove(),h.remove()}if(a.getHead()!==h){r&&r.rewind(h.seg);continue}if(t)x=null===h.seg.myFill.below||h.seg.myFill.above!==h.seg.myFill.below,h.seg.myFill.below=g?g.seg.myFill.above:i,h.seg.myFill.above=x?!h.seg.myFill.below:h.seg.myFill.below;else if(null===h.seg.otherFill)v=g?h.primary===g.primary?g.seg.otherFill.above:g.seg.myFill.above:h.primary?o:i,h.seg.otherFill={above:v,below:v};r&&r.status(h.seg,!!d&&d.seg,!!g&&g.seg),h.other.status=p.insert(n.node({ev:h}))}else{var b=h.status;if(null===b)throw new Error(\"PolyBool: Zero-length segment detected; your epsilon is probably too small or too large\");if(s.exists(b.prev)&&s.exists(b.next)&&u(b.prev.ev,b.next.ev),r&&r.statusRemove(b.ev.seg),b.remove(),!h.primary){var _=h.seg.myFill;h.seg.myFill=h.seg.otherFill,h.seg.otherFill=_}f.push(h.seg)}a.getHead().remove()}return r&&r.done(),f}return t?{addRegion:function(t){for(var n,i,a,o=t[t.length-1],l=0;l0&&!this.aborted;){var r=this.ifds_to_read.shift();r.offset&&this.scan_ifd(r.id,r.offset,t)}},a.prototype.read_uint16=function(t){var e=this.input;if(t+2>e.length)throw n(\"unexpected EOF\",\"EBADDATA\");return this.big_endian?256*e[t]+e[t+1]:e[t]+256*e[t+1]},a.prototype.read_uint32=function(t){var e=this.input;if(t+4>e.length)throw n(\"unexpected EOF\",\"EBADDATA\");return this.big_endian?16777216*e[t]+65536*e[t+1]+256*e[t+2]+e[t+3]:e[t]+256*e[t+1]+65536*e[t+2]+16777216*e[t+3]},a.prototype.is_subifd_link=function(t,e){return 0===t&&34665===e||0===t&&34853===e||34665===t&&40965===e},a.prototype.exif_format_length=function(t){switch(t){case 1:case 2:case 6:case 7:return 1;case 3:case 8:return 2;case 4:case 9:case 11:return 4;case 5:case 10:case 12:return 8;default:return 0}},a.prototype.exif_format_read=function(t,e){var r;switch(t){case 1:case 2:return r=this.input[e];case 6:return(r=this.input[e])|33554430*(128&r);case 3:return r=this.read_uint16(e);case 8:return(r=this.read_uint16(e))|131070*(32768&r);case 4:return r=this.read_uint32(e);case 9:return 0|(r=this.read_uint32(e));case 5:case 10:case 11:case 12:case 7:default:return null}},a.prototype.scan_ifd=function(t,e,r){var a=this.read_uint16(e);e+=2;for(var o=0;othis.input.length)throw n(\"unexpected EOF\",\"EBADDATA\");for(var d=[],g=h,m=0;m0&&(this.ifds_to_read.push({id:s,offset:d[0]}),p=!0),!1===r({is_big_endian:this.big_endian,ifd:t,tag:s,format:l,count:c,entry_offset:e+this.start,data_length:f,data_offset:h+this.start,value:d,is_subifd_link:p}))return void(this.aborted=!0);e+=12}0===t&&this.ifds_to_read.push({id:1,offset:this.read_uint32(e)})},e.exports.ExifParser=a,e.exports.get_orientation=function(t){var e=0;try{return new a(t,0,t.length).each((function(t){if(0===t.ifd&&274===t.tag&&Array.isArray(t.value))return e=t.value[0],!1})),e}catch(t){return-1}}},{}],264:[function(t,e,r){\"use strict\";var n=t(\"./common\").readUInt16BE,i=t(\"./common\").readUInt32BE;function a(t,e){if(t.length<4+e)return null;var r=i(t,e);return t.length>4&15,i=15&t[4],a=t[5]>>4&15,o=n(t,6),l=8,c=0;ce.width||t.width===e.width&&t.height>e.height?t:e})),i=r.reduce((function(t,e){return t.height>e.height||t.height===e.height&&t.width>e.width?t:e})),n.width>i.height||n.width===i.height&&n.height>i.width?n:i),s=1;e.transforms.forEach((function(t){var e={1:6,2:5,3:8,4:7,5:4,6:3,7:2,8:1},r={1:4,2:3,3:2,4:1,5:6,6:5,7:8,8:7};if(\"imir\"===t.type&&(s=0===t.value?r[s]:e[s=e[s=r[s]]]),\"irot\"===t.type)for(var n=0;n1&&(h.variants=f.variants),f.orientation&&(h.orientation=f.orientation),f.exif_location&&f.exif_location.offset+f.exif_location.length<=t.length){var p=a(t,f.exif_location.offset),d=t.slice(f.exif_location.offset+p+4,f.exif_location.offset+f.exif_location.length),g=s.get_orientation(d);g>0&&(h.orientation=g)}return h}}}}}}},{\"../common\":262,\"../exif_utils\":263,\"../miaf_utils\":264}],266:[function(t,e,r){\"use strict\";var n=t(\"../common\").str2arr,i=t(\"../common\").sliceEq,a=t(\"../common\").readUInt16LE,o=n(\"BM\");e.exports=function(t){if(!(t.length<26)&&i(t,0,o))return{width:a(t,18),height:a(t,22),type:\"bmp\",mime:\"image/bmp\",wUnits:\"px\",hUnits:\"px\"}}},{\"../common\":262}],267:[function(t,e,r){\"use strict\";var n=t(\"../common\").str2arr,i=t(\"../common\").sliceEq,a=t(\"../common\").readUInt16LE,o=n(\"GIF87a\"),s=n(\"GIF89a\");e.exports=function(t){if(!(t.length<10)&&(i(t,0,o)||i(t,0,s)))return{width:a(t,6),height:a(t,8),type:\"gif\",mime:\"image/gif\",wUnits:\"px\",hUnits:\"px\"}}},{\"../common\":262}],268:[function(t,e,r){\"use strict\";var n=t(\"../common\").readUInt16LE;e.exports=function(t){var e=n(t,0),r=n(t,2),i=n(t,4);if(0===e&&1===r&&i){for(var a=[],o={width:0,height:0},s=0;so.width||c>o.height)&&(o=u)}return{width:o.width,height:o.height,variants:a,type:\"ico\",mime:\"image/x-icon\",wUnits:\"px\",hUnits:\"px\"}}}},{\"../common\":262}],269:[function(t,e,r){\"use strict\";var n=t(\"../common\").readUInt16BE,i=t(\"../common\").str2arr,a=t(\"../common\").sliceEq,o=t(\"../exif_utils\"),s=i(\"Exif\\0\\0\");e.exports=function(t){if(!(t.length<2)&&255===t[0]&&216===t[1]&&255===t[2])for(var e=2;;){for(;;){if(t.length-e<2)return;if(255===t[e++])break}for(var r,i,l=t[e++];255===l;)l=t[e++];if(208<=l&&l<=217||1===l)r=0;else{if(!(192<=l&&l<=254))return;if(t.length-e<2)return;r=n(t,e)-2,e+=2}if(217===l||218===l)return;if(225===l&&r>=10&&a(t,e,s)&&(i=o.get_orientation(t.slice(e+6,e+r))),r>=5&&192<=l&&l<=207&&196!==l&&200!==l&&204!==l){if(t.length-e0&&(c.orientation=i),c}e+=r}}},{\"../common\":262,\"../exif_utils\":263}],270:[function(t,e,r){\"use strict\";var n=t(\"../common\").str2arr,i=t(\"../common\").sliceEq,a=t(\"../common\").readUInt32BE,o=n(\"\\x89PNG\\r\\n\\x1a\\n\"),s=n(\"IHDR\");e.exports=function(t){if(!(t.length<24)&&i(t,0,o)&&i(t,12,s))return{width:a(t,16),height:a(t,20),type:\"png\",mime:\"image/png\",wUnits:\"px\",hUnits:\"px\"}}},{\"../common\":262}],271:[function(t,e,r){\"use strict\";var n=t(\"../common\").str2arr,i=t(\"../common\").sliceEq,a=t(\"../common\").readUInt32BE,o=n(\"8BPS\\0\\x01\");e.exports=function(t){if(!(t.length<22)&&i(t,0,o))return{width:a(t,18),height:a(t,14),type:\"psd\",mime:\"image/vnd.adobe.photoshop\",wUnits:\"px\",hUnits:\"px\"}}},{\"../common\":262}],272:[function(t,e,r){\"use strict\";function n(t){return\"number\"==typeof t&&isFinite(t)&&t>0}var i=/<[-_.:a-zA-Z0-9][^>]*>/,a=/^<([-_.:a-zA-Z0-9]+:)?svg\\s/,o=/[^-]\\bwidth=\"([^%]+?)\"|[^-]\\bwidth='([^%]+?)'/,s=/\\bheight=\"([^%]+?)\"|\\bheight='([^%]+?)'/,l=/\\bview[bB]ox=\"(.+?)\"|\\bview[bB]ox='(.+?)'/,c=/in$|mm$|cm$|pt$|pc$|px$|em$|ex$/;function u(t){return c.test(t)?t.match(c)[0]:\"px\"}e.exports=function(t){if(function(t){var e,r=0,n=t.length;for(239===t[0]&&187===t[1]&&191===t[2]&&(r=3);r>14&16383),type:\"webp\",mime:\"image/webp\",wUnits:\"px\",hUnits:\"px\"}}}function h(t,e){return{width:1+(t[e+6]<<16|t[e+5]<<8|t[e+4]),height:1+(t[e+9]<t.length)){for(;e+8=10?r=r||u(t,e+8):\"VP8L\"===p&&d>=9?r=r||f(t,e+8):\"VP8X\"===p&&d>=10?r=r||h(t,e+8):\"EXIF\"===p&&(n=s.get_orientation(t.slice(e+8,e+8+d)),e=1/0),e+=8+d}else e++;if(r)return n>0&&(r.orientation=n),r}}}},{\"../common\":262,\"../exif_utils\":263}],275:[function(t,e,r){\"use strict\";e.exports={avif:t(\"./parse_sync/avif\"),bmp:t(\"./parse_sync/bmp\"),gif:t(\"./parse_sync/gif\"),ico:t(\"./parse_sync/ico\"),jpeg:t(\"./parse_sync/jpeg\"),png:t(\"./parse_sync/png\"),psd:t(\"./parse_sync/psd\"),svg:t(\"./parse_sync/svg\"),tiff:t(\"./parse_sync/tiff\"),webp:t(\"./parse_sync/webp\")}},{\"./parse_sync/avif\":265,\"./parse_sync/bmp\":266,\"./parse_sync/gif\":267,\"./parse_sync/ico\":268,\"./parse_sync/jpeg\":269,\"./parse_sync/png\":270,\"./parse_sync/psd\":271,\"./parse_sync/svg\":272,\"./parse_sync/tiff\":273,\"./parse_sync/webp\":274}],276:[function(t,e,r){\"use strict\";var n=t(\"./lib/parsers_sync\");e.exports=function(t){return function(t){for(var e=Object.keys(n),r=0;r1)for(var r=1;r1&&(t.scaleRatio=[t.scale[0]*t.viewport.width,t.scale[1]*t.viewport.height],r(t),t.after&&t.after(t))}function T(t){if(t){null!=t.length?\"number\"==typeof t[0]&&(t=[{positions:t}]):Array.isArray(t)||(t=[t]);var e=0,r=0;if(b.groups=x=t.map((function(t,c){var u=x[c];return t?(\"function\"==typeof t?t={after:t}:\"number\"==typeof t[0]&&(t={positions:t}),t=o(t,{color:\"color colors fill\",capSize:\"capSize cap capsize cap-size\",lineWidth:\"lineWidth line-width width line thickness\",opacity:\"opacity alpha\",range:\"range dataBox\",viewport:\"viewport viewBox\",errors:\"errors error\",positions:\"positions position data points\"}),u||(x[c]=u={id:c,scale:null,translate:null,scaleFract:null,translateFract:null,draw:!0},t=s({},y,t)),a(u,t,[{lineWidth:function(t){return.5*+t},capSize:function(t){return.5*+t},opacity:parseFloat,errors:function(t){return t=l(t),r+=t.length,t},positions:function(t,r){return t=l(t,\"float64\"),r.count=Math.floor(t.length/2),r.bounds=n(t,2),r.offset=e,e+=r.count,t}},{color:function(t,e){var r=e.count;if(t||(t=\"transparent\"),!Array.isArray(t)||\"number\"==typeof t[0]){var n=t;t=Array(r);for(var a=0;a 0. && baClipping < length(normalWidth * endBotJoin)) {\\n\\t\\t//handle miter clipping\\n\\t\\tbTopCoord -= normalWidth * endTopJoin;\\n\\t\\tbTopCoord += normalize(endTopJoin * normalWidth) * baClipping;\\n\\t}\\n\\n\\tif (nextReverse) {\\n\\t\\t//make join rectangular\\n\\t\\tvec2 miterShift = normalWidth * endJoinDirection * miterLimit * .5;\\n\\t\\tfloat normalAdjust = 1. - min(miterLimit / endMiterRatio, 1.);\\n\\t\\tbBotCoord = bCoord + miterShift - normalAdjust * normalWidth * currNormal * .5;\\n\\t\\tbTopCoord = bCoord + miterShift + normalAdjust * normalWidth * currNormal * .5;\\n\\t}\\n\\telse if (!prevReverse && abClipping > 0. && abClipping < length(normalWidth * startBotJoin)) {\\n\\t\\t//handle miter clipping\\n\\t\\taBotCoord -= normalWidth * startBotJoin;\\n\\t\\taBotCoord += normalize(startBotJoin * normalWidth) * abClipping;\\n\\t}\\n\\n\\tvec2 aTopPosition = (aTopCoord) * adjustedScale + translate;\\n\\tvec2 aBotPosition = (aBotCoord) * adjustedScale + translate;\\n\\n\\tvec2 bTopPosition = (bTopCoord) * adjustedScale + translate;\\n\\tvec2 bBotPosition = (bBotCoord) * adjustedScale + translate;\\n\\n\\t//position is normalized 0..1 coord on the screen\\n\\tvec2 position = (aTopPosition * lineTop + aBotPosition * lineBot) * lineStart + (bTopPosition * lineTop + bBotPosition * lineBot) * lineEnd;\\n\\n\\tstartCoord = aCoord * scaleRatio + translate * viewport.zw + viewport.xy;\\n\\tendCoord = bCoord * scaleRatio + translate * viewport.zw + viewport.xy;\\n\\n\\tgl_Position = vec4(position * 2.0 - 1.0, depth, 1);\\n\\n\\tenableStartMiter = step(dot(currTangent, prevTangent), .5);\\n\\tenableEndMiter = step(dot(currTangent, nextTangent), .5);\\n\\n\\t//bevel miter cutoffs\\n\\tif (miterMode == 1.) {\\n\\t\\tif (enableStartMiter == 1.) {\\n\\t\\t\\tvec2 startMiterWidth = vec2(startJoinDirection) * thickness * miterLimit * .5;\\n\\t\\t\\tstartCutoff = vec4(aCoord, aCoord);\\n\\t\\t\\tstartCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio;\\n\\t\\t\\tstartCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\\n\\t\\t\\tstartCutoff += viewport.xyxy;\\n\\t\\t\\tstartCutoff += startMiterWidth.xyxy;\\n\\t\\t}\\n\\n\\t\\tif (enableEndMiter == 1.) {\\n\\t\\t\\tvec2 endMiterWidth = vec2(endJoinDirection) * thickness * miterLimit * .5;\\n\\t\\t\\tendCutoff = vec4(bCoord, bCoord);\\n\\t\\t\\tendCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x) / scaleRatio;\\n\\t\\t\\tendCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\\n\\t\\t\\tendCutoff += viewport.xyxy;\\n\\t\\t\\tendCutoff += endMiterWidth.xyxy;\\n\\t\\t}\\n\\t}\\n\\n\\t//round miter cutoffs\\n\\telse if (miterMode == 2.) {\\n\\t\\tif (enableStartMiter == 1.) {\\n\\t\\t\\tvec2 startMiterWidth = vec2(startJoinDirection) * thickness * abs(dot(startJoinDirection, currNormal)) * .5;\\n\\t\\t\\tstartCutoff = vec4(aCoord, aCoord);\\n\\t\\t\\tstartCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio;\\n\\t\\t\\tstartCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\\n\\t\\t\\tstartCutoff += viewport.xyxy;\\n\\t\\t\\tstartCutoff += startMiterWidth.xyxy;\\n\\t\\t}\\n\\n\\t\\tif (enableEndMiter == 1.) {\\n\\t\\t\\tvec2 endMiterWidth = vec2(endJoinDirection) * thickness * abs(dot(endJoinDirection, currNormal)) * .5;\\n\\t\\t\\tendCutoff = vec4(bCoord, bCoord);\\n\\t\\t\\tendCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x) / scaleRatio;\\n\\t\\t\\tendCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\\n\\t\\t\\tendCutoff += viewport.xyxy;\\n\\t\\t\\tendCutoff += endMiterWidth.xyxy;\\n\\t\\t}\\n\\t}\\n}\\n\"]),frag:o([\"precision highp float;\\n#define GLSLIFY 1\\n\\nuniform float dashLength, pixelRatio, thickness, opacity, id, miterMode;\\nuniform sampler2D dashTexture;\\n\\nvarying vec4 fragColor;\\nvarying vec2 tangent;\\nvarying vec4 startCutoff, endCutoff;\\nvarying vec2 startCoord, endCoord;\\nvarying float enableStartMiter, enableEndMiter;\\n\\nfloat distToLine(vec2 p, vec2 a, vec2 b) {\\n\\tvec2 diff = b - a;\\n\\tvec2 perp = normalize(vec2(-diff.y, diff.x));\\n\\treturn dot(p - a, perp);\\n}\\n\\nvoid main() {\\n\\tfloat alpha = 1., distToStart, distToEnd;\\n\\tfloat cutoff = thickness * .5;\\n\\n\\t//bevel miter\\n\\tif (miterMode == 1.) {\\n\\t\\tif (enableStartMiter == 1.) {\\n\\t\\t\\tdistToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw);\\n\\t\\t\\tif (distToStart < -1.) {\\n\\t\\t\\t\\tdiscard;\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\t\\t\\talpha *= min(max(distToStart + 1., 0.), 1.);\\n\\t\\t}\\n\\n\\t\\tif (enableEndMiter == 1.) {\\n\\t\\t\\tdistToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw);\\n\\t\\t\\tif (distToEnd < -1.) {\\n\\t\\t\\t\\tdiscard;\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\t\\t\\talpha *= min(max(distToEnd + 1., 0.), 1.);\\n\\t\\t}\\n\\t}\\n\\n\\t// round miter\\n\\telse if (miterMode == 2.) {\\n\\t\\tif (enableStartMiter == 1.) {\\n\\t\\t\\tdistToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw);\\n\\t\\t\\tif (distToStart < 0.) {\\n\\t\\t\\t\\tfloat radius = length(gl_FragCoord.xy - startCoord);\\n\\n\\t\\t\\t\\tif(radius > cutoff + .5) {\\n\\t\\t\\t\\t\\tdiscard;\\n\\t\\t\\t\\t\\treturn;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\talpha -= smoothstep(cutoff - .5, cutoff + .5, radius);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tif (enableEndMiter == 1.) {\\n\\t\\t\\tdistToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw);\\n\\t\\t\\tif (distToEnd < 0.) {\\n\\t\\t\\t\\tfloat radius = length(gl_FragCoord.xy - endCoord);\\n\\n\\t\\t\\t\\tif(radius > cutoff + .5) {\\n\\t\\t\\t\\t\\tdiscard;\\n\\t\\t\\t\\t\\treturn;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\talpha -= smoothstep(cutoff - .5, cutoff + .5, radius);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\tfloat t = fract(dot(tangent, gl_FragCoord.xy) / dashLength) * .5 + .25;\\n\\tfloat dash = texture2D(dashTexture, vec2(t, .5)).r;\\n\\n\\tgl_FragColor = fragColor;\\n\\tgl_FragColor.a *= alpha * opacity * dash;\\n}\\n\"]),attributes:{lineEnd:{buffer:r,divisor:0,stride:8,offset:0},lineTop:{buffer:r,divisor:0,stride:8,offset:4},aColor:{buffer:t.prop(\"colorBuffer\"),stride:4,offset:0,divisor:1},bColor:{buffer:t.prop(\"colorBuffer\"),stride:4,offset:4,divisor:1},prevCoord:{buffer:t.prop(\"positionBuffer\"),stride:8,offset:0,divisor:1},aCoord:{buffer:t.prop(\"positionBuffer\"),stride:8,offset:8,divisor:1},bCoord:{buffer:t.prop(\"positionBuffer\"),stride:8,offset:16,divisor:1},nextCoord:{buffer:t.prop(\"positionBuffer\"),stride:8,offset:24,divisor:1}}},n))}catch(t){e=i}return{fill:t({primitive:\"triangle\",elements:function(t,e){return e.triangles},offset:0,vert:o([\"precision highp float;\\n#define GLSLIFY 1\\n\\nattribute vec2 position, positionFract;\\n\\nuniform vec4 color;\\nuniform vec2 scale, scaleFract, translate, translateFract;\\nuniform float pixelRatio, id;\\nuniform vec4 viewport;\\nuniform float opacity;\\n\\nvarying vec4 fragColor;\\n\\nconst float MAX_LINES = 256.;\\n\\nvoid main() {\\n\\tfloat depth = (MAX_LINES - 4. - id) / (MAX_LINES);\\n\\n\\tvec2 position = position * scale + translate\\n + positionFract * scale + translateFract\\n + position * scaleFract\\n + positionFract * scaleFract;\\n\\n\\tgl_Position = vec4(position * 2.0 - 1.0, depth, 1);\\n\\n\\tfragColor = color / 255.;\\n\\tfragColor.a *= opacity;\\n}\\n\"]),frag:o([\"precision highp float;\\n#define GLSLIFY 1\\n\\nvarying vec4 fragColor;\\n\\nvoid main() {\\n\\tgl_FragColor = fragColor;\\n}\\n\"]),uniforms:{scale:t.prop(\"scale\"),color:t.prop(\"fill\"),scaleFract:t.prop(\"scaleFract\"),translateFract:t.prop(\"translateFract\"),translate:t.prop(\"translate\"),opacity:t.prop(\"opacity\"),pixelRatio:t.context(\"pixelRatio\"),id:t.prop(\"id\"),viewport:function(t,e){return[e.viewport.x,e.viewport.y,t.viewportWidth,t.viewportHeight]}},attributes:{position:{buffer:t.prop(\"positionBuffer\"),stride:8,offset:8},positionFract:{buffer:t.prop(\"positionFractBuffer\"),stride:8,offset:8}},blend:n.blend,depth:{enable:!1},scissor:n.scissor,stencil:n.stencil,viewport:n.viewport}),rect:i,miter:e}},v.defaults={dashes:null,join:\"miter\",miterLimit:1,thickness:10,cap:\"square\",color:\"black\",opacity:1,overlay:!1,viewport:null,range:null,close:!1,fill:null},v.prototype.render=function(){for(var t,e=[],r=arguments.length;r--;)e[r]=arguments[r];e.length&&(t=this).update.apply(t,e),this.draw()},v.prototype.draw=function(){for(var t=this,e=[],r=arguments.length;r--;)e[r]=arguments[r];return(e.length?e:this.passes).forEach((function(e,r){var n;if(e&&Array.isArray(e))return(n=t).draw.apply(n,e);\"number\"==typeof e&&(e=t.passes[e]),e&&e.count>1&&e.opacity&&(t.regl._refresh(),e.fill&&e.triangles&&e.triangles.length>2&&t.shaders.fill(e),e.thickness&&(e.scale[0]*e.viewport.width>v.precisionThreshold||e.scale[1]*e.viewport.height>v.precisionThreshold||\"rect\"===e.join||!e.join&&(e.thickness<=2||e.count>=v.maxPoints)?t.shaders.rect(e):t.shaders.miter(e)))})),this},v.prototype.update=function(t){var e=this;if(t){null!=t.length?\"number\"==typeof t[0]&&(t=[{positions:t}]):Array.isArray(t)||(t=[t]);var r=this.regl,o=this.gl;if(t.forEach((function(t,f){var d=e.passes[f];if(void 0!==t)if(null!==t){if(\"number\"==typeof t[0]&&(t={positions:t}),t=s(t,{positions:\"positions points data coords\",thickness:\"thickness lineWidth lineWidths line-width linewidth width stroke-width strokewidth strokeWidth\",join:\"lineJoin linejoin join type mode\",miterLimit:\"miterlimit miterLimit\",dashes:\"dash dashes dasharray dash-array dashArray\",color:\"color colour stroke colors colours stroke-color strokeColor\",fill:\"fill fill-color fillColor\",opacity:\"alpha opacity\",overlay:\"overlay crease overlap intersect\",close:\"closed close closed-path closePath\",range:\"range dataBox\",viewport:\"viewport viewBox\",hole:\"holes hole hollow\",splitNull:\"splitNull\"}),d||(e.passes[f]=d={id:f,scale:null,scaleFract:null,translate:null,translateFract:null,count:0,hole:[],depth:0,dashLength:1,dashTexture:r.texture({channels:1,data:new Uint8Array([255]),width:1,height:1,mag:\"linear\",min:\"linear\"}),colorBuffer:r.buffer({usage:\"dynamic\",type:\"uint8\",data:new Uint8Array}),positionBuffer:r.buffer({usage:\"dynamic\",type:\"float\",data:new Uint8Array}),positionFractBuffer:r.buffer({usage:\"dynamic\",type:\"float\",data:new Uint8Array})},t=a({},v.defaults,t)),null!=t.thickness&&(d.thickness=parseFloat(t.thickness)),null!=t.opacity&&(d.opacity=parseFloat(t.opacity)),null!=t.miterLimit&&(d.miterLimit=parseFloat(t.miterLimit)),null!=t.overlay&&(d.overlay=!!t.overlay,f=D}));(I=I.slice(0,R)).push(D)}for(var F=function(t){var e=k.slice(2*z,2*I[t]).concat(D?k.slice(2*D):[]),r=(d.hole||[]).map((function(e){return e-D+(I[t]-z)})),n=c(e,r);n=n.map((function(e){return e+z+(e+zt.length)&&(e=t.length);for(var r=0,n=new Array(e);r 1.0 + delta) {\\n\\t\\tdiscard;\\n\\t}\\n\\n\\talpha -= smoothstep(1.0 - delta, 1.0 + delta, radius);\\n\\n\\tfloat borderRadius = fragBorderRadius;\\n\\tfloat ratio = smoothstep(borderRadius - delta, borderRadius + delta, radius);\\n\\tvec4 color = mix(fragColor, fragBorderColor, ratio);\\n\\tcolor.a *= alpha * opacity;\\n\\tgl_FragColor = color;\\n}\\n\"]),l.vert=h([\"precision highp float;\\n#define GLSLIFY 1\\n\\nattribute float x, y, xFract, yFract;\\nattribute float size, borderSize;\\nattribute vec4 colorId, borderColorId;\\nattribute float isActive;\\n\\nuniform bool constPointSize;\\nuniform float pixelRatio;\\nuniform vec2 paletteSize, scale, scaleFract, translate, translateFract;\\nuniform sampler2D paletteTexture;\\n\\nconst float maxSize = 100.;\\n\\nvarying vec4 fragColor, fragBorderColor;\\nvarying float fragBorderRadius, fragWidth;\\n\\nfloat pointSizeScale = (constPointSize) ? 2. : pixelRatio;\\n\\nbool isDirect = (paletteSize.x < 1.);\\n\\nvec4 getColor(vec4 id) {\\n return isDirect ? id / 255. : texture2D(paletteTexture,\\n vec2(\\n (id.x + .5) / paletteSize.x,\\n (id.y + .5) / paletteSize.y\\n )\\n );\\n}\\n\\nvoid main() {\\n // ignore inactive points\\n if (isActive == 0.) return;\\n\\n vec2 position = vec2(x, y);\\n vec2 positionFract = vec2(xFract, yFract);\\n\\n vec4 color = getColor(colorId);\\n vec4 borderColor = getColor(borderColorId);\\n\\n float size = size * maxSize / 255.;\\n float borderSize = borderSize * maxSize / 255.;\\n\\n gl_PointSize = (size + borderSize) * pointSizeScale;\\n\\n vec2 pos = (position + translate) * scale\\n + (positionFract + translateFract) * scale\\n + (position + translate) * scaleFract\\n + (positionFract + translateFract) * scaleFract;\\n\\n gl_Position = vec4(pos * 2. - 1., 0., 1.);\\n\\n fragBorderRadius = 1. - 2. * borderSize / (size + borderSize);\\n fragColor = color;\\n fragBorderColor = borderColor.a == 0. || borderSize == 0. ? vec4(color.rgb, 0.) : borderColor;\\n fragWidth = 1. / gl_PointSize;\\n}\\n\"]),m&&(l.frag=l.frag.replace(\"smoothstep\",\"smoothStep\"),s.frag=s.frag.replace(\"smoothstep\",\"smoothStep\")),this.drawCircle=t(l)}b.defaults={color:\"black\",borderColor:\"transparent\",borderSize:0,size:12,opacity:1,marker:void 0,viewport:null,range:null,pixelSize:null,count:0,offset:0,bounds:null,positions:[],snap:1e4},b.prototype.render=function(){return arguments.length&&this.update.apply(this,arguments),this.draw(),this},b.prototype.draw=function(){for(var t=this,e=arguments.length,r=new Array(e),n=0;nn)?e.tree=u(t,{bounds:f}):n&&n.length&&(e.tree=n),e.tree){var h={primitive:\"points\",usage:\"static\",data:e.tree,type:\"uint32\"};e.elements?e.elements(h):e.elements=o.elements(h)}var p=v.float32(t);return i({data:p,usage:\"dynamic\"}),a({data:v.fract32(t,p),usage:\"dynamic\"}),s({data:new Uint8Array(c),type:\"uint8\",usage:\"stream\"}),t}},{marker:function(e,r,n){var i=r.activation;if(i.forEach((function(t){return t&&t.destroy&&t.destroy()})),i.length=0,e&&\"number\"!=typeof e[0]){for(var a=[],s=0,l=Math.min(e.length,r.count);s=0)return a;if(t instanceof Uint8Array||t instanceof Uint8ClampedArray)e=t;else{e=new Uint8Array(t.length);for(var o=0,s=t.length;o4*n&&(this.tooManyColors=!0),this.updatePalette(r),1===i.length?i[0]:i},b.prototype.updatePalette=function(t){if(!this.tooManyColors){var e=this.maxColors,r=this.paletteTexture,n=Math.ceil(.25*t.length/e);if(n>1)for(var i=.25*(t=t.slice()).length%e;i2?(s[0],s[2],n=s[1],i=s[3]):s.length?(n=s[0],i=s[1]):(s.x,n=s.y,s.x+s.width,i=s.y+s.height),l.length>2?(a=l[0],o=l[2],l[1],l[3]):l.length?(a=l[0],o=l[1]):(a=l.x,l.y,o=l.x+l.width,l.y+l.height),[a,n,o,i]}function p(t){if(\"number\"==typeof t)return[t,t,t,t];if(2===t.length)return[t[0],t[1],t[0],t[1]];var e=l(t);return[e.x,e.y,e.x+e.width,e.y+e.height]}e.exports=u,u.prototype.render=function(){for(var t,e=this,r=[],n=arguments.length;n--;)r[n]=arguments[n];return r.length&&(t=this).update.apply(t,r),this.regl.attributes.preserveDrawingBuffer?this.draw():(this.dirty?null==this.planned&&(this.planned=o((function(){e.draw(),e.dirty=!0,e.planned=null}))):(this.draw(),this.dirty=!0,o((function(){e.dirty=!1}))),this)},u.prototype.update=function(){for(var t,e=[],r=arguments.length;r--;)e[r]=arguments[r];if(e.length){for(var n=0;nk))&&(s.lower||!(T>>=e))<<3,(e|=r=(15<(t>>>=r))<<2)|(r=(3<(t>>>=r))<<1)|t>>>r>>1}function s(){function t(t){t:{for(var e=16;268435456>=e;e*=16)if(t<=e){t=e;break t}t=0}return 0<(e=r[o(t)>>2]).length?e.pop():new ArrayBuffer(t)}function e(t){r[o(t.byteLength)>>2].push(t)}var r=a(8,(function(){return[]}));return{alloc:t,free:e,allocType:function(e,r){var n=null;switch(e){case 5120:n=new Int8Array(t(r),0,r);break;case 5121:n=new Uint8Array(t(r),0,r);break;case 5122:n=new Int16Array(t(2*r),0,r);break;case 5123:n=new Uint16Array(t(2*r),0,r);break;case 5124:n=new Int32Array(t(4*r),0,r);break;case 5125:n=new Uint32Array(t(4*r),0,r);break;case 5126:n=new Float32Array(t(4*r),0,r);break;default:return null}return n.length!==r?n.subarray(0,r):n},freeType:function(t){e(t.buffer)}}}function l(t){return!!t&&\"object\"==typeof t&&Array.isArray(t.shape)&&Array.isArray(t.stride)&&\"number\"==typeof t.offset&&t.shape.length===t.stride.length&&(Array.isArray(t.data)||W(t.data))}function c(t,e,r,n,i,a){for(var o=0;o(i=s)&&(i=n.buffer.byteLength,5123===f?i>>=1:5125===f&&(i>>=2)),n.vertCount=i,i=o,0>o&&(i=4,1===(o=n.buffer.dimension)&&(i=0),2===o&&(i=1),3===o&&(i=4)),n.primType=i}function o(t){n.elementsCount--,delete s[t.id],t.buffer.destroy(),t.buffer=null}var s={},c=0,u={uint8:5121,uint16:5123};e.oes_element_index_uint&&(u.uint32=5125),i.prototype.bind=function(){this.buffer.bind()};var f=[];return{create:function(t,e){function s(t){if(t)if(\"number\"==typeof t)c(t),f.primType=4,f.vertCount=0|t,f.type=5121;else{var e=null,r=35044,n=-1,i=-1,o=0,h=0;Array.isArray(t)||W(t)||l(t)?e=t:(\"data\"in t&&(e=t.data),\"usage\"in t&&(r=Q[t.usage]),\"primitive\"in t&&(n=rt[t.primitive]),\"count\"in t&&(i=0|t.count),\"type\"in t&&(h=u[t.type]),\"length\"in t?o=0|t.length:(o=i,5123===h||5122===h?o*=2:5125!==h&&5124!==h||(o*=4))),a(f,e,r,n,i,o,h)}else c(),f.primType=4,f.vertCount=0,f.type=5121;return s}var c=r.create(null,34963,!0),f=new i(c._buffer);return n.elementsCount++,s(t),s._reglType=\"elements\",s._elements=f,s.subdata=function(t,e){return c.subdata(t,e),s},s.destroy=function(){o(f)},s},createStream:function(t){var e=f.pop();return e||(e=new i(r.create(null,34963,!0,!1)._buffer)),a(e,t,35040,-1,-1,0,0),e},destroyStream:function(t){f.push(t)},getElements:function(t){return\"function\"==typeof t&&t._elements instanceof i?t._elements:null},clear:function(){X(s).forEach(o)}}}function g(t){for(var e=G.allocType(5123,t.length),r=0;r>>31<<15,i=(a<<1>>>24)-127,a=a>>13&1023;e[r]=-24>i?n:-14>i?n+(a+1024>>-14-i):15>=i,r.height>>=i,p(r,n[i]),t.mipmask|=1<e;++e)t.images[e]=null;return t}function C(t){for(var e=t.images,r=0;re){for(var r=0;r=--this.refCount&&F(this)}}),o.profile&&(a.getTotalTextureSize=function(){var t=0;return Object.keys(yt).forEach((function(e){t+=yt[e].stats.size})),t}),{create2D:function(e,r){function n(t,e){var r=i.texInfo;P.call(r);var a=L();return\"number\"==typeof t?M(a,0|t,\"number\"==typeof e?0|e:0|t):t?(I(r,t),S(a,t)):M(a,1,1),r.genMipmaps&&(a.mipmask=(a.width<<1)-1),i.mipmask=a.mipmask,c(i,a),i.internalformat=a.internalformat,n.width=a.width,n.height=a.height,D(i),E(a,3553),O(r,3553),R(),C(a),o.profile&&(i.stats.size=T(i.internalformat,i.type,a.width,a.height,r.genMipmaps,!1)),n.format=tt[i.internalformat],n.type=et[i.type],n.mag=rt[r.magFilter],n.min=nt[r.minFilter],n.wrapS=it[r.wrapS],n.wrapT=it[r.wrapT],n}var i=new z(3553);return yt[i.id]=i,a.textureCount++,n(e,r),n.subimage=function(t,e,r,a){e|=0,r|=0,a|=0;var o=v();return c(o,i),o.width=0,o.height=0,p(o,t),o.width=o.width||(i.width>>a)-e,o.height=o.height||(i.height>>a)-r,D(i),d(o,3553,e,r,a),R(),k(o),n},n.resize=function(e,r){var a=0|e,s=0|r||a;if(a===i.width&&s===i.height)return n;n.width=i.width=a,n.height=i.height=s,D(i);for(var l=0;i.mipmask>>l;++l){var c=a>>l,u=s>>l;if(!c||!u)break;t.texImage2D(3553,l,i.format,c,u,0,i.format,i.type,null)}return R(),o.profile&&(i.stats.size=T(i.internalformat,i.type,a,s,!1,!1)),n},n._reglType=\"texture2d\",n._texture=i,o.profile&&(n.stats=i.stats),n.destroy=function(){i.decRef()},n},createCube:function(e,r,n,i,s,l){function f(t,e,r,n,i,a){var s,l=h.texInfo;for(P.call(l),s=0;6>s;++s)g[s]=L();if(\"number\"!=typeof t&&t){if(\"object\"==typeof t)if(e)S(g[0],t),S(g[1],e),S(g[2],r),S(g[3],n),S(g[4],i),S(g[5],a);else if(I(l,t),u(h,t),\"faces\"in t)for(t=t.faces,s=0;6>s;++s)c(g[s],h),S(g[s],t[s]);else for(s=0;6>s;++s)S(g[s],t)}else for(t=0|t||1,s=0;6>s;++s)M(g[s],t,t);for(c(h,g[0]),h.mipmask=l.genMipmaps?(g[0].width<<1)-1:g[0].mipmask,h.internalformat=g[0].internalformat,f.width=g[0].width,f.height=g[0].height,D(h),s=0;6>s;++s)E(g[s],34069+s);for(O(l,34067),R(),o.profile&&(h.stats.size=T(h.internalformat,h.type,f.width,f.height,l.genMipmaps,!0)),f.format=tt[h.internalformat],f.type=et[h.type],f.mag=rt[l.magFilter],f.min=nt[l.minFilter],f.wrapS=it[l.wrapS],f.wrapT=it[l.wrapT],s=0;6>s;++s)C(g[s]);return f}var h=new z(34067);yt[h.id]=h,a.cubeCount++;var g=Array(6);return f(e,r,n,i,s,l),f.subimage=function(t,e,r,n,i){r|=0,n|=0,i|=0;var a=v();return c(a,h),a.width=0,a.height=0,p(a,e),a.width=a.width||(h.width>>i)-r,a.height=a.height||(h.height>>i)-n,D(h),d(a,34069+t,r,n,i),R(),k(a),f},f.resize=function(e){if((e|=0)!==h.width){f.width=h.width=e,f.height=h.height=e,D(h);for(var r=0;6>r;++r)for(var n=0;h.mipmask>>n;++n)t.texImage2D(34069+r,n,h.format,e>>n,e>>n,0,h.format,h.type,null);return R(),o.profile&&(h.stats.size=T(h.internalformat,h.type,f.width,f.height,!1,!0)),f}},f._reglType=\"textureCube\",f._texture=h,o.profile&&(f.stats=h.stats),f.destroy=function(){h.decRef()},f},clear:function(){for(var e=0;er;++r)if(0!=(e.mipmask&1<>r,e.height>>r,0,e.internalformat,e.type,null);else for(var n=0;6>n;++n)t.texImage2D(34069+n,r,e.internalformat,e.width>>r,e.height>>r,0,e.internalformat,e.type,null);O(e.texInfo,e.target)}))},refresh:function(){for(var e=0;ei;++i){for(c=0;ct;++t)r[t].resize(n);return e.width=e.height=n,e},_reglType:\"framebufferCube\",destroy:function(){r.forEach((function(t){t.destroy()}))}})},clear:function(){X(k).forEach(m)},restore:function(){x.cur=null,x.next=null,x.dirty=!0,X(k).forEach((function(e){e.framebuffer=t.createFramebuffer(),v(e)}))}})}function M(){this.w=this.z=this.y=this.x=this.state=0,this.buffer=null,this.size=0,this.normalized=!1,this.type=5126,this.divisor=this.stride=this.offset=0}function S(t,e,r,n,i,a,o){function s(){this.id=++f,this.attributes=[],this.elements=null,this.ownsElements=!1,this.offset=this.count=0,this.instances=-1,this.primitive=4;var t=e.oes_vertex_array_object;this.vao=t?t.createVertexArrayOES():null,h[this.id]=this,this.buffers=[]}var c=r.maxAttributes,u=Array(c);for(r=0;r=h.byteLength?c.subdata(h):(c.destroy(),r.buffers[s]=null)),r.buffers[s]||(c=r.buffers[s]=i.create(u,34962,!1,!0)),f.buffer=i.getBuffer(c),f.size=0|f.buffer.dimension,f.normalized=!1,f.type=f.buffer.dtype,f.offset=0,f.stride=0,f.divisor=0,f.state=1,t[s]=1;else i.getBuffer(u)?(f.buffer=i.getBuffer(u),f.size=0|f.buffer.dimension,f.normalized=!1,f.type=f.buffer.dtype,f.offset=0,f.stride=0,f.divisor=0,f.state=1):i.getBuffer(u.buffer)?(f.buffer=i.getBuffer(u.buffer),f.size=0|(+u.size||f.buffer.dimension),f.normalized=!!u.normalized||!1,f.type=\"type\"in u?K[u.type]:f.buffer.dtype,f.offset=0|(u.offset||0),f.stride=0|(u.stride||0),f.divisor=0|(u.divisor||0),f.state=1):\"x\"in u&&(f.x=+u.x||0,f.y=+u.y||0,f.z=+u.z||0,f.w=+u.w||0,f.state=2)}for(c=0;ct&&(t=e.stats.uniformsCount)})),t},r.getMaxAttributesCount=function(){var t=0;return h.forEach((function(e){e.stats.attributesCount>t&&(t=e.stats.attributesCount)})),t}),{clear:function(){var e=t.deleteShader.bind(t);X(c).forEach(e),c={},X(u).forEach(e),u={},h.forEach((function(e){t.deleteProgram(e.program)})),h.length=0,f={},r.shaderCount=0},program:function(e,n,i,a){var o=f[n];o||(o=f[n]={});var p=o[e];if(p&&(p.refCount++,!a))return p;var d=new s(n,e);return r.shaderCount++,l(d,i,a),p||(o[e]=d),h.push(d),j(d,{destroy:function(){if(d.refCount--,0>=d.refCount){t.deleteProgram(d.program);var e=h.indexOf(d);h.splice(e,1),r.shaderCount--}0>=o[d.vertId].refCount&&(t.deleteShader(u[d.vertId]),delete u[d.vertId],delete f[d.fragId][d.vertId]),Object.keys(f[d.fragId]).length||(t.deleteShader(c[d.fragId]),delete c[d.fragId],delete f[d.fragId])}})},restore:function(){c={},u={};for(var t=0;t\"+e+\"?\"+i+\".constant[\"+e+\"]:0;\"})).join(\"\"),\"}}else{\",\"if(\",s,\"(\",i,\".buffer)){\",u,\"=\",a,\".createStream(\",34962,\",\",i,\".buffer);\",\"}else{\",u,\"=\",a,\".getBuffer(\",i,\".buffer);\",\"}\",f,'=\"type\" in ',i,\"?\",o.glTypes,\"[\",i,\".type]:\",u,\".dtype;\",l.normalized,\"=!!\",i,\".normalized;\"),n(\"size\"),n(\"offset\"),n(\"stride\"),n(\"divisor\"),r(\"}}\"),r.exit(\"if(\",l.isStream,\"){\",a,\".destroyStream(\",u,\");\",\"}\"),l}))})),o}function A(t,e,n,i,o){function s(t){var e=c[t];e&&(h[t]=e)}var l=function(t,e){if(\"string\"==typeof(r=t.static).frag&&\"string\"==typeof r.vert){if(0>1)\",s],\");\")}function e(){r(l,\".drawArraysInstancedANGLE(\",[d,g,m,s],\");\")}p&&\"null\"!==p?y?t():(r(\"if(\",p,\"){\"),t(),r(\"}else{\"),e(),r(\"}\")):e()}function o(){function t(){r(u+\".drawElements(\"+[d,m,v,g+\"<<((\"+v+\"-5121)>>1)\"]+\");\")}function e(){r(u+\".drawArrays(\"+[d,g,m]+\");\")}p&&\"null\"!==p?y?t():(r(\"if(\",p,\"){\"),t(),r(\"}else{\"),e(),r(\"}\")):e()}var s,l,c=t.shared,u=c.gl,f=c.draw,h=n.draw,p=function(){var i=h.elements,a=e;return i?((i.contextDep&&n.contextDynamic||i.propDep)&&(a=r),i=i.append(t,a),h.elementsActive&&a(\"if(\"+i+\")\"+u+\".bindBuffer(34963,\"+i+\".buffer.buffer);\")):(i=a.def(),a(i,\"=\",f,\".\",\"elements\",\";\",\"if(\",i,\"){\",u,\".bindBuffer(\",34963,\",\",i,\".buffer.buffer);}\",\"else if(\",c.vao,\".currentVAO){\",i,\"=\",t.shared.elements+\".getElements(\"+c.vao,\".currentVAO.elements);\",nt?\"\":\"if(\"+i+\")\"+u+\".bindBuffer(34963,\"+i+\".buffer.buffer);\",\"}\")),i}(),d=i(\"primitive\"),g=i(\"offset\"),m=function(){var i=h.count,a=e;return i?((i.contextDep&&n.contextDynamic||i.propDep)&&(a=r),i=i.append(t,a)):i=a.def(f,\".\",\"count\"),i}();if(\"number\"==typeof m){if(0===m)return}else r(\"if(\",m,\"){\"),r.exit(\"}\");tt&&(s=i(\"instances\"),l=t.instancing);var v=p+\".type\",y=h.elements&&D(h.elements)&&!h.vaoActive;tt&&(\"number\"!=typeof s||0<=s)?\"string\"==typeof s?(r(\"if(\",s,\">0){\"),a(),r(\"}else if(\",s,\"<0){\"),o(),r(\"}\")):a():o()}function G(t,e,r,n,i){return i=(e=b()).proc(\"body\",i),tt&&(e.instancing=i.def(e.shared.extensions,\".angle_instanced_arrays\")),t(e,i,r,n),e.compile().body}function Y(t,e,r,n){B(t,e),r.useVAO?r.drawVAO?e(t.shared.vao,\".setVAO(\",r.drawVAO.append(t,e),\");\"):e(t.shared.vao,\".setVAO(\",t.shared.vao,\".targetVAO);\"):(e(t.shared.vao,\".setVAO(null);\"),U(t,e,r,n.attributes,(function(){return!0}))),H(t,e,r,n.uniforms,(function(){return!0}),!1),q(t,e,e,r)}function W(t,e,r,n){function i(){return!0}t.batchId=\"a1\",B(t,e),U(t,e,r,n.attributes,i),H(t,e,r,n.uniforms,i,!1),q(t,e,e,r)}function X(t,e,r,n){function i(t){return t.contextDep&&o||t.propDep}function a(t){return!i(t)}B(t,e);var o=r.contextDep,s=e.def(),l=e.def();t.shared.props=l,t.batchId=s;var c=t.scope(),u=t.scope();e(c.entry,\"for(\",s,\"=0;\",s,\"<\",\"a1\",\";++\",s,\"){\",l,\"=\",\"a0\",\"[\",s,\"];\",u,\"}\",c.exit),r.needsContext&&M(t,u,r.context),r.needsFramebuffer&&S(t,u,r.framebuffer),L(t,u,r.state,i),r.profile&&i(r.profile)&&N(t,u,r,!1,!0),n?(r.useVAO?r.drawVAO?i(r.drawVAO)?u(t.shared.vao,\".setVAO(\",r.drawVAO.append(t,u),\");\"):c(t.shared.vao,\".setVAO(\",r.drawVAO.append(t,c),\");\"):c(t.shared.vao,\".setVAO(\",t.shared.vao,\".targetVAO);\"):(c(t.shared.vao,\".setVAO(null);\"),U(t,c,r,n.attributes,a),U(t,u,r,n.attributes,i)),H(t,c,r,n.uniforms,a,!1),H(t,u,r,n.uniforms,i,!0),q(t,c,u,r)):(e=t.global.def(\"{}\"),n=r.shader.progVar.append(t,u),l=u.def(n,\".id\"),c=u.def(e,\"[\",l,\"]\"),u(t.shared.gl,\".useProgram(\",n,\".program);\",\"if(!\",c,\"){\",c,\"=\",e,\"[\",l,\"]=\",t.link((function(e){return G(W,t,r,e,2)})),\"(\",n,\");}\",c,\".call(this,a0[\",s,\"],\",s,\");\"))}function Z(t,r){function n(e){var n=r.shader[e];n&&i.set(a.shader,\".\"+e,n.append(t,i))}var i=t.proc(\"scope\",3);t.batchId=\"a2\";var a=t.shared,o=a.current;M(t,i,r.context),r.framebuffer&&r.framebuffer.append(t,i),O(Object.keys(r.state)).forEach((function(e){var n=r.state[e].append(t,i);m(n)?n.forEach((function(r,n){i.set(t.next[e],\"[\"+n+\"]\",r)})):i.set(a.next,\".\"+e,n)})),N(t,i,r,!0,!0),[\"elements\",\"offset\",\"count\",\"instances\",\"primitive\"].forEach((function(e){var n=r.draw[e];n&&i.set(a.draw,\".\"+e,\"\"+n.append(t,i))})),Object.keys(r.uniforms).forEach((function(n){var o=r.uniforms[n].append(t,i);Array.isArray(o)&&(o=\"[\"+o.join()+\"]\"),i.set(a.uniforms,\"[\"+e.id(n)+\"]\",o)})),Object.keys(r.attributes).forEach((function(e){var n=r.attributes[e].append(t,i),a=t.scopeAttrib(e);Object.keys(new Q).forEach((function(t){i.set(a,\".\"+t,n[t])}))})),r.scopeVAO&&i.set(a.vao,\".targetVAO\",r.scopeVAO.append(t,i)),n(\"vert\"),n(\"frag\"),0=--this.refCount&&o(this)},i.profile&&(n.getTotalRenderbufferSize=function(){var t=0;return Object.keys(u).forEach((function(e){t+=u[e].stats.size})),t}),{create:function(e,r){function o(e,r){var n=0,a=0,u=32854;if(\"object\"==typeof e&&e?(\"shape\"in e?(n=0|(a=e.shape)[0],a=0|a[1]):(\"radius\"in e&&(n=a=0|e.radius),\"width\"in e&&(n=0|e.width),\"height\"in e&&(a=0|e.height)),\"format\"in e&&(u=s[e.format])):\"number\"==typeof e?(n=0|e,a=\"number\"==typeof r?0|r:n):e||(n=a=1),n!==c.width||a!==c.height||u!==c.format)return o.width=c.width=n,o.height=c.height=a,c.format=u,t.bindRenderbuffer(36161,c.renderbuffer),t.renderbufferStorage(36161,u,n,a),i.profile&&(c.stats.size=vt[c.format]*c.width*c.height),o.format=l[c.format],o}var c=new a(t.createRenderbuffer());return u[c.id]=c,n.renderbufferCount++,o(e,r),o.resize=function(e,r){var n=0|e,a=0|r||n;return n===c.width&&a===c.height||(o.width=c.width=n,o.height=c.height=a,t.bindRenderbuffer(36161,c.renderbuffer),t.renderbufferStorage(36161,c.format,n,a),i.profile&&(c.stats.size=vt[c.format]*c.width*c.height)),o},o._reglType=\"renderbuffer\",o._renderbuffer=c,i.profile&&(o.stats=c.stats),o.destroy=function(){c.decRef()},o},clear:function(){X(u).forEach(o)},restore:function(){X(u).forEach((function(e){e.renderbuffer=t.createRenderbuffer(),t.bindRenderbuffer(36161,e.renderbuffer),t.renderbufferStorage(36161,e.format,e.width,e.height)})),t.bindRenderbuffer(36161,null)}}},xt=[];xt[6408]=4,xt[6407]=3;var bt=[];bt[5121]=1,bt[5126]=4,bt[36193]=2;var _t=[\"x\",\"y\",\"z\",\"w\"],wt=\"blend.func blend.equation stencil.func stencil.opFront stencil.opBack sample.coverage viewport scissor.box polygonOffset.offset\".split(\" \"),Tt={0:0,1:1,zero:0,one:1,\"src color\":768,\"one minus src color\":769,\"src alpha\":770,\"one minus src alpha\":771,\"dst color\":774,\"one minus dst color\":775,\"dst alpha\":772,\"one minus dst alpha\":773,\"constant color\":32769,\"one minus constant color\":32770,\"constant alpha\":32771,\"one minus constant alpha\":32772,\"src alpha saturate\":776},kt={never:512,less:513,\"<\":513,equal:514,\"=\":514,\"==\":514,\"===\":514,lequal:515,\"<=\":515,greater:516,\">\":516,notequal:517,\"!=\":517,\"!==\":517,gequal:518,\">=\":518,always:519},At={0:0,zero:0,keep:7680,replace:7681,increment:7682,decrement:7683,\"increment wrap\":34055,\"decrement wrap\":34056,invert:5386},Mt={cw:2304,ccw:2305},St=new z(!1,!1,!1,(function(){}));return function(t){function e(){if(0===J.length)w&&w.update(),tt=null;else{tt=H.next(e),f();for(var t=J.length-1;0<=t;--t){var r=J[t];r&&r(P,null,0)}m.flush(),w&&w.update()}}function r(){!tt&&0=J.length&&n()}}}}function u(){var t=X.viewport,e=X.scissor_box;t[0]=t[1]=e[0]=e[1]=0,P.viewportWidth=P.framebufferWidth=P.drawingBufferWidth=t[2]=e[2]=m.drawingBufferWidth,P.viewportHeight=P.framebufferHeight=P.drawingBufferHeight=t[3]=e[3]=m.drawingBufferHeight}function f(){P.tick+=1,P.time=g(),u(),W.procs.poll()}function h(){F.refresh(),u(),W.procs.refresh(),w&&w.update()}function g(){return(q()-T)/1e3}if(!(t=i(t)))return null;var m=t.gl,v=m.getContextAttributes();m.isContextLost();var y=function(t,e){function r(e){var r;e=e.toLowerCase();try{r=n[e]=t.getExtension(e)}catch(t){}return!!r}for(var n={},i=0;ie;++e)et(j({framebuffer:t.framebuffer.faces[e]},t),l);else et(t,l);else l(0,t)},prop:V.define.bind(null,1),context:V.define.bind(null,2),this:V.define.bind(null,3),draw:s({}),buffer:function(t){return O.create(t,34962,!1,!1)},elements:function(t){return z.create(t,!1)},texture:F.create2D,cube:F.createCube,renderbuffer:U.create,framebuffer:G.create,framebufferCube:G.createCube,vao:D.createVAO,attributes:v,frame:c,on:function(t,e){var r;switch(t){case\"frame\":return c(e);case\"lost\":r=K;break;case\"restore\":r=Q;break;case\"destroy\":r=$}return r.push(e),{cancel:function(){for(var t=0;t2?\"one of \".concat(e,\" \").concat(t.slice(0,r-1).join(\", \"),\", or \")+t[r-1]:2===r?\"one of \".concat(e,\" \").concat(t[0],\" or \").concat(t[1]):\"of \".concat(e,\" \").concat(t[0])}return\"of \".concat(e,\" \").concat(String(t))}i(\"ERR_INVALID_OPT_VALUE\",(function(t,e){return'The value \"'+e+'\" is invalid for option \"'+t+'\"'}),TypeError),i(\"ERR_INVALID_ARG_TYPE\",(function(t,e,r){var n,i,o,s;if(\"string\"==typeof e&&(i=\"not \",e.substr(!o||o<0?0:+o,i.length)===i)?(n=\"must not be\",e=e.replace(/^not /,\"\")):n=\"must be\",function(t,e,r){return(void 0===r||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}(t,\" argument\"))s=\"The \".concat(t,\" \").concat(n,\" \").concat(a(e,\"type\"));else{var l=function(t,e,r){return\"number\"!=typeof r&&(r=0),!(r+e.length>t.length)&&-1!==t.indexOf(e,r)}(t,\".\")?\"property\":\"argument\";s='The \"'.concat(t,'\" ').concat(l,\" \").concat(n,\" \").concat(a(e,\"type\"))}return s+=\". Received type \".concat(typeof r)}),TypeError),i(\"ERR_STREAM_PUSH_AFTER_EOF\",\"stream.push() after EOF\"),i(\"ERR_METHOD_NOT_IMPLEMENTED\",(function(t){return\"The \"+t+\" method is not implemented\"})),i(\"ERR_STREAM_PREMATURE_CLOSE\",\"Premature close\"),i(\"ERR_STREAM_DESTROYED\",(function(t){return\"Cannot call \"+t+\" after a stream was destroyed\"})),i(\"ERR_MULTIPLE_CALLBACK\",\"Callback called multiple times\"),i(\"ERR_STREAM_CANNOT_PIPE\",\"Cannot pipe, not readable\"),i(\"ERR_STREAM_WRITE_AFTER_END\",\"write after end\"),i(\"ERR_STREAM_NULL_VALUES\",\"May not write null values to stream\",TypeError),i(\"ERR_UNKNOWN_ENCODING\",(function(t){return\"Unknown encoding: \"+t}),TypeError),i(\"ERR_STREAM_UNSHIFT_AFTER_END_EVENT\",\"stream.unshift() after end event\"),e.exports.codes=n},{}],287:[function(t,e,r){(function(r){(function(){\"use strict\";var n=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};e.exports=c;var i=t(\"./_stream_readable\"),a=t(\"./_stream_writable\");t(\"inherits\")(c,i);for(var o=n(a.prototype),s=0;s0)if(\"string\"==typeof e||o.objectMode||Object.getPrototypeOf(e)===s.prototype||(e=function(t){return s.from(t)}(e)),n)o.endEmitted?w(t,new _):S(t,o,e,!0);else if(o.ended)w(t,new x);else{if(o.destroyed)return!1;o.reading=!1,o.decoder&&!r?(e=o.decoder.write(e),o.objectMode||0!==e.length?S(t,o,e,!1):P(t,o)):S(t,o,e,!1)}else n||(o.reading=!1,P(t,o));return!o.ended&&(o.lengthe.highWaterMark&&(e.highWaterMark=function(t){return t>=1073741824?t=1073741824:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function L(t){var e=t._readableState;c(\"emitReadable\",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(c(\"emitReadable\",e.flowing),e.emittedReadable=!0,r.nextTick(C,t))}function C(t){var e=t._readableState;c(\"emitReadable_\",e.destroyed,e.length,e.ended),e.destroyed||!e.length&&!e.ended||(t.emit(\"readable\"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,R(t)}function P(t,e){e.readingMore||(e.readingMore=!0,r.nextTick(I,t,e))}function I(t,e){for(;!e.reading&&!e.ended&&(e.length0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount(\"data\")>0&&t.resume()}function z(t){c(\"readable nexttick read 0\"),t.read(0)}function D(t,e){c(\"resume\",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit(\"resume\"),R(t),e.flowing&&!e.reading&&t.read(0)}function R(t){var e=t._readableState;for(c(\"flow\",e.flowing);e.flowing&&null!==t.read(););}function F(t,e){return 0===e.length?null:(e.objectMode?r=e.buffer.shift():!t||t>=e.length?(r=e.decoder?e.buffer.join(\"\"):1===e.buffer.length?e.buffer.first():e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r);var r}function B(t){var e=t._readableState;c(\"endReadable\",e.endEmitted),e.endEmitted||(e.ended=!0,r.nextTick(N,e,t))}function N(t,e){if(c(\"endReadableNT\",t.endEmitted,t.length),!t.endEmitted&&0===t.length&&(t.endEmitted=!0,e.readable=!1,e.emit(\"end\"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}function j(t,e){for(var r=0,n=t.length;r=e.highWaterMark:e.length>0)||e.ended))return c(\"read: emitReadable\",e.length,e.ended),0===e.length&&e.ended?B(this):L(this),null;if(0===(t=E(t,e))&&e.ended)return 0===e.length&&B(this),null;var n,i=e.needReadable;return c(\"need readable\",i),(0===e.length||e.length-t0?F(t,e):null)?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&B(this)),null!==n&&this.emit(\"data\",n),n},A.prototype._read=function(t){w(this,new b(\"_read()\"))},A.prototype.pipe=function(t,e){var n=this,i=this._readableState;switch(i.pipesCount){case 0:i.pipes=t;break;case 1:i.pipes=[i.pipes,t];break;default:i.pipes.push(t)}i.pipesCount+=1,c(\"pipe count=%d opts=%j\",i.pipesCount,e);var o=(!e||!1!==e.end)&&t!==r.stdout&&t!==r.stderr?l:m;function s(e,r){c(\"onunpipe\"),e===n&&r&&!1===r.hasUnpiped&&(r.hasUnpiped=!0,c(\"cleanup\"),t.removeListener(\"close\",d),t.removeListener(\"finish\",g),t.removeListener(\"drain\",u),t.removeListener(\"error\",p),t.removeListener(\"unpipe\",s),n.removeListener(\"end\",l),n.removeListener(\"end\",m),n.removeListener(\"data\",h),f=!0,!i.awaitDrain||t._writableState&&!t._writableState.needDrain||u())}function l(){c(\"onend\"),t.end()}i.endEmitted?r.nextTick(o):n.once(\"end\",o),t.on(\"unpipe\",s);var u=function(t){return function(){var e=t._readableState;c(\"pipeOnDrain\",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&a(t,\"data\")&&(e.flowing=!0,R(t))}}(n);t.on(\"drain\",u);var f=!1;function h(e){c(\"ondata\");var r=t.write(e);c(\"dest.write\",r),!1===r&&((1===i.pipesCount&&i.pipes===t||i.pipesCount>1&&-1!==j(i.pipes,t))&&!f&&(c(\"false write response, pause\",i.awaitDrain),i.awaitDrain++),n.pause())}function p(e){c(\"onerror\",e),m(),t.removeListener(\"error\",p),0===a(t,\"error\")&&w(t,e)}function d(){t.removeListener(\"finish\",g),m()}function g(){c(\"onfinish\"),t.removeListener(\"close\",d),m()}function m(){c(\"unpipe\"),n.unpipe(t)}return n.on(\"data\",h),function(t,e,r){if(\"function\"==typeof t.prependListener)return t.prependListener(e,r);t._events&&t._events[e]?Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]:t.on(e,r)}(t,\"error\",p),t.once(\"close\",d),t.once(\"finish\",g),t.emit(\"pipe\",n),i.flowing||(c(\"pipe resume\"),n.resume()),t},A.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit(\"unpipe\",this,r)),this;if(!t){var n=e.pipes,i=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var a=0;a0,!1!==i.flowing&&this.resume()):\"readable\"===t&&(i.endEmitted||i.readableListening||(i.readableListening=i.needReadable=!0,i.flowing=!1,i.emittedReadable=!1,c(\"on readable\",i.length,i.reading),i.length?L(this):i.reading||r.nextTick(z,this))),n},A.prototype.addListener=A.prototype.on,A.prototype.removeListener=function(t,e){var n=o.prototype.removeListener.call(this,t,e);return\"readable\"===t&&r.nextTick(O,this),n},A.prototype.removeAllListeners=function(t){var e=o.prototype.removeAllListeners.apply(this,arguments);return\"readable\"!==t&&void 0!==t||r.nextTick(O,this),e},A.prototype.resume=function(){var t=this._readableState;return t.flowing||(c(\"resume\"),t.flowing=!t.readableListening,function(t,e){e.resumeScheduled||(e.resumeScheduled=!0,r.nextTick(D,t,e))}(this,t)),t.paused=!1,this},A.prototype.pause=function(){return c(\"call pause flowing=%j\",this._readableState.flowing),!1!==this._readableState.flowing&&(c(\"pause\"),this._readableState.flowing=!1,this.emit(\"pause\")),this._readableState.paused=!0,this},A.prototype.wrap=function(t){var e=this,r=this._readableState,n=!1;for(var i in t.on(\"end\",(function(){if(c(\"wrapped end\"),r.decoder&&!r.ended){var t=r.decoder.end();t&&t.length&&e.push(t)}e.push(null)})),t.on(\"data\",(function(i){(c(\"wrapped data\"),r.decoder&&(i=r.decoder.write(i)),r.objectMode&&null==i)||(r.objectMode||i&&i.length)&&(e.push(i)||(n=!0,t.pause()))})),t)void 0===this[i]&&\"function\"==typeof t[i]&&(this[i]=function(e){return function(){return t[e].apply(t,arguments)}}(i));for(var a=0;a-1))throw new _(t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(A.prototype,\"writableBuffer\",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(A.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),A.prototype._write=function(t,e,r){r(new g(\"_write()\"))},A.prototype._writev=null,A.prototype.end=function(t,e,n){var i=this._writableState;return\"function\"==typeof t?(n=t,t=null,e=null):\"function\"==typeof e&&(n=e,e=null),null!=t&&this.write(t,e),i.corked&&(i.corked=1,this.uncork()),i.ending||function(t,e,n){e.ending=!0,P(t,e),n&&(e.finished?r.nextTick(n):t.once(\"finish\",n));e.ended=!0,t.writable=!1}(this,i,n),this},Object.defineProperty(A.prototype,\"writableLength\",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(A.prototype,\"destroyed\",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),A.prototype.destroy=f.destroy,A.prototype._undestroy=f.undestroy,A.prototype._destroy=function(t,e){e(t)}}).call(this)}).call(this,t(\"_process\"),\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"../errors\":286,\"./_stream_duplex\":287,\"./internal/streams/destroy\":294,\"./internal/streams/state\":298,\"./internal/streams/stream\":299,_process:277,buffer:85,inherits:231,\"util-deprecate\":330}],292:[function(t,e,r){(function(r){(function(){\"use strict\";var n;function i(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var a=t(\"./end-of-stream\"),o=Symbol(\"lastResolve\"),s=Symbol(\"lastReject\"),l=Symbol(\"error\"),c=Symbol(\"ended\"),u=Symbol(\"lastPromise\"),f=Symbol(\"handlePromise\"),h=Symbol(\"stream\");function p(t,e){return{value:t,done:e}}function d(t){var e=t[o];if(null!==e){var r=t[h].read();null!==r&&(t[u]=null,t[o]=null,t[s]=null,e(p(r,!1)))}}function g(t){r.nextTick(d,t)}var m=Object.getPrototypeOf((function(){})),v=Object.setPrototypeOf((i(n={get stream(){return this[h]},next:function(){var t=this,e=this[l];if(null!==e)return Promise.reject(e);if(this[c])return Promise.resolve(p(void 0,!0));if(this[h].destroyed)return new Promise((function(e,n){r.nextTick((function(){t[l]?n(t[l]):e(p(void 0,!0))}))}));var n,i=this[u];if(i)n=new Promise(function(t,e){return function(r,n){t.then((function(){e[c]?r(p(void 0,!0)):e[f](r,n)}),n)}}(i,this));else{var a=this[h].read();if(null!==a)return Promise.resolve(p(a,!1));n=new Promise(this[f])}return this[u]=n,n}},Symbol.asyncIterator,(function(){return this})),i(n,\"return\",(function(){var t=this;return new Promise((function(e,r){t[h].destroy(null,(function(t){t?r(t):e(p(void 0,!0))}))}))})),n),m);e.exports=function(t){var e,r=Object.create(v,(i(e={},h,{value:t,writable:!0}),i(e,o,{value:null,writable:!0}),i(e,s,{value:null,writable:!0}),i(e,l,{value:null,writable:!0}),i(e,c,{value:t._readableState.endEmitted,writable:!0}),i(e,f,{value:function(t,e){var n=r[h].read();n?(r[u]=null,r[o]=null,r[s]=null,t(p(n,!1))):(r[o]=t,r[s]=e)},writable:!0}),e));return r[u]=null,a(t,(function(t){if(t&&\"ERR_STREAM_PREMATURE_CLOSE\"!==t.code){var e=r[s];return null!==e&&(r[u]=null,r[o]=null,r[s]=null,e(t)),void(r[l]=t)}var n=r[o];null!==n&&(r[u]=null,r[o]=null,r[s]=null,n(p(void 0,!0))),r[c]=!0})),t.on(\"readable\",g.bind(null,r)),r}}).call(this)}).call(this,t(\"_process\"))},{\"./end-of-stream\":295,_process:277}],293:[function(t,e,r){\"use strict\";function n(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function i(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function a(t,e){for(var r=0;r0?this.tail.next=e:this.head=e,this.tail=e,++this.length}},{key:\"unshift\",value:function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length}},{key:\"shift\",value:function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}}},{key:\"clear\",value:function(){this.head=this.tail=null,this.length=0}},{key:\"join\",value:function(t){if(0===this.length)return\"\";for(var e=this.head,r=\"\"+e.data;e=e.next;)r+=t+e.data;return r}},{key:\"concat\",value:function(t){if(0===this.length)return o.alloc(0);for(var e,r,n,i=o.allocUnsafe(t>>>0),a=this.head,s=0;a;)e=a.data,r=i,n=s,o.prototype.copy.call(e,r,n),s+=a.data.length,a=a.next;return i}},{key:\"consume\",value:function(t,e){var r;return ti.length?i.length:t;if(a===i.length?n+=i:n+=i.slice(0,t),0==(t-=a)){a===i.length?(++r,e.next?this.head=e.next:this.head=this.tail=null):(this.head=e,e.data=i.slice(a));break}++r}return this.length-=r,n}},{key:\"_getBuffer\",value:function(t){var e=o.allocUnsafe(t),r=this.head,n=1;for(r.data.copy(e),t-=r.data.length;r=r.next;){var i=r.data,a=t>i.length?i.length:t;if(i.copy(e,e.length-t,0,a),0==(t-=a)){a===i.length?(++n,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=i.slice(a));break}++n}return this.length-=n,e}},{key:l,value:function(t,e){return s(this,function(t){for(var e=1;e0,(function(t){n||(n=t),t&&o.forEach(c),a||(o.forEach(c),i(n))}))}));return e.reduce(u)}},{\"../../../errors\":286,\"./end-of-stream\":295}],298:[function(t,e,r){\"use strict\";var n=t(\"../../../errors\").codes.ERR_INVALID_OPT_VALUE;e.exports={getHighWaterMark:function(t,e,r,i){var a=function(t,e,r){return null!=t.highWaterMark?t.highWaterMark:e?t[r]:null}(e,i,r);if(null!=a){if(!isFinite(a)||Math.floor(a)!==a||a<0)throw new n(i?r:\"highWaterMark\",a);return Math.floor(a)}return t.objectMode?16:16384}}},{\"../../../errors\":286}],299:[function(t,e,r){e.exports=t(\"events\").EventEmitter},{events:84}],300:[function(t,e,r){\"use strict\";var n=t(\"safe-buffer\").Buffer,i=n.isEncoding||function(t){switch((t=\"\"+t)&&t.toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":case\"raw\":return!0;default:return!1}};function a(t){var e;switch(this.encoding=function(t){var e=function(t){if(!t)return\"utf8\";for(var e;;)switch(t){case\"utf8\":case\"utf-8\":return\"utf8\";case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return\"utf16le\";case\"latin1\":case\"binary\":return\"latin1\";case\"base64\":case\"ascii\":case\"hex\":return t;default:if(e)return;t=(\"\"+t).toLowerCase(),e=!0}}(t);if(\"string\"!=typeof e&&(n.isEncoding===i||!i(t)))throw new Error(\"Unknown encoding: \"+t);return e||t}(t),this.encoding){case\"utf16le\":this.text=l,this.end=c,e=4;break;case\"utf8\":this.fillLast=s,e=4;break;case\"base64\":this.text=u,this.end=f,e=3;break;default:return this.write=h,void(this.end=p)}this.lastNeed=0,this.lastTotal=0,this.lastChar=n.allocUnsafe(e)}function o(t){return t<=127?0:t>>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function s(t){var e=this.lastTotal-this.lastNeed,r=function(t,e,r){if(128!=(192&e[0]))return t.lastNeed=0,\"\\ufffd\";if(t.lastNeed>1&&e.length>1){if(128!=(192&e[1]))return t.lastNeed=1,\"\\ufffd\";if(t.lastNeed>2&&e.length>2&&128!=(192&e[2]))return t.lastNeed=2,\"\\ufffd\"}}(this,t);return void 0!==r?r:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),void(this.lastNeed-=t.length))}function l(t,e){if((t.length-e)%2==0){var r=t.toString(\"utf16le\",e);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString(\"utf16le\",e,t.length-1)}function c(t){var e=t&&t.length?this.write(t):\"\";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString(\"utf16le\",0,r)}return e}function u(t,e){var r=(t.length-e)%3;return 0===r?t.toString(\"base64\",e):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString(\"base64\",e,t.length-r))}function f(t){var e=t&&t.length?this.write(t):\"\";return this.lastNeed?e+this.lastChar.toString(\"base64\",0,3-this.lastNeed):e}function h(t){return t.toString(this.encoding)}function p(t){return t&&t.length?this.write(t):\"\"}r.StringDecoder=a,a.prototype.write=function(t){if(0===t.length)return\"\";var e,r;if(this.lastNeed){if(void 0===(e=this.fillLast(t)))return\"\";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0)return i>0&&(t.lastNeed=i-1),i;if(--n=0)return i>0&&(t.lastNeed=i-2),i;if(--n=0)return i>0&&(2===i?i=0:t.lastNeed=i-3),i;return 0}(this,t,e);if(!this.lastNeed)return t.toString(\"utf8\",e);this.lastTotal=r;var n=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,n),t.toString(\"utf8\",e,n)},a.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length}},{\"safe-buffer\":284}],301:[function(t,e,r){(function(r,n){(function(){var r=t(\"assert\"),i=t(\"debug\")(\"stream-parser\");e.exports=function(t){var e=t&&\"function\"==typeof t._transform,r=t&&\"function\"==typeof t._write;if(!e&&!r)throw new Error(\"must pass a Writable or Transform stream in\");i(\"extending Parser into stream\"),t._bytes=o,t._skipBytes=s,e&&(t._passthrough=l);e?t._transform=u:t._write=c};function a(t){i(\"initializing parser stream\"),t._parserBytesLeft=0,t._parserBuffers=[],t._parserBuffered=0,t._parserState=-1,t._parserCallback=null,\"function\"==typeof t.push&&(t._parserOutput=t.push.bind(t)),t._parserInit=!0}function o(t,e){r(!this._parserCallback,'there is already a \"callback\" set!'),r(isFinite(t)&&t>0,'can only buffer a finite number of bytes > 0, got \"'+t+'\"'),this._parserInit||a(this),i(\"buffering %o bytes\",t),this._parserBytesLeft=t,this._parserCallback=e,this._parserState=0}function s(t,e){r(!this._parserCallback,'there is already a \"callback\" set!'),r(t>0,'can only skip > 0 bytes, got \"'+t+'\"'),this._parserInit||a(this),i(\"skipping %o bytes\",t),this._parserBytesLeft=t,this._parserCallback=e,this._parserState=1}function l(t,e){r(!this._parserCallback,'There is already a \"callback\" set!'),r(t>0,'can only pass through > 0 bytes, got \"'+t+'\"'),this._parserInit||a(this),i(\"passing through %o bytes\",t),this._parserBytesLeft=t,this._parserCallback=e,this._parserState=2}function c(t,e,r){this._parserInit||a(this),i(\"write(%o bytes)\",t.length),\"function\"==typeof e&&(r=e),h(this,t,null,r)}function u(t,e,r){this._parserInit||a(this),i(\"transform(%o bytes)\",t.length),\"function\"!=typeof e&&(e=this._parserOutput),h(this,t,e,r)}function f(t,e,r,a){if(t._parserBytesLeft-=e.length,i(\"%o bytes left for stream piece\",t._parserBytesLeft),0===t._parserState?(t._parserBuffers.push(e),t._parserBuffered+=e.length):2===t._parserState&&r(e),0!==t._parserBytesLeft)return a;var o=t._parserCallback;if(o&&0===t._parserState&&t._parserBuffers.length>1&&(e=n.concat(t._parserBuffers,t._parserBuffered)),0!==t._parserState&&(e=null),t._parserCallback=null,t._parserBuffered=0,t._parserState=-1,t._parserBuffers.splice(0),o){var s=[];e&&s.push(e),r&&s.push(r);var l=o.length>s.length;l&&s.push(p(a));var c=o.apply(t,s);if(!l||a===c)return a}}var h=p((function t(e,r,n,i){return e._parserBytesLeft<=0?i(new Error(\"got data but not currently parsing anything\")):r.length<=e._parserBytesLeft?function(){return f(e,r,n,i)}:function(){var a=r.slice(0,e._parserBytesLeft);return f(e,a,n,(function(o){return o?i(o):r.length>a.length?function(){return t(e,r.slice(a.length),n,i)}:void 0}))}}));function p(t){return function(){for(var e=t.apply(this,arguments);\"function\"==typeof e;)e=e();return e}}}).call(this)}).call(this,t(\"_process\"),t(\"buffer\").Buffer)},{_process:277,assert:75,buffer:85,debug:302}],302:[function(t,e,r){(function(n){(function(){function i(){var t;try{t=r.storage.debug}catch(t){}return!t&&void 0!==n&&\"env\"in n&&(t=n.env.DEBUG),t}(r=e.exports=t(\"./debug\")).log=function(){return\"object\"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)},r.formatArgs=function(t){var e=this.useColors;if(t[0]=(e?\"%c\":\"\")+this.namespace+(e?\" %c\":\" \")+t[0]+(e?\"%c \":\" \")+\"+\"+r.humanize(this.diff),!e)return;var n=\"color: \"+this.color;t.splice(1,0,n,\"color: inherit\");var i=0,a=0;t[0].replace(/%[a-zA-Z%]/g,(function(t){\"%%\"!==t&&(i++,\"%c\"===t&&(a=i))})),t.splice(a,0,n)},r.save=function(t){try{null==t?r.storage.removeItem(\"debug\"):r.storage.debug=t}catch(t){}},r.load=i,r.useColors=function(){if(\"undefined\"!=typeof window&&window.process&&\"renderer\"===window.process.type)return!0;return\"undefined\"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||\"undefined\"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||\"undefined\"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)&&parseInt(RegExp.$1,10)>=31||\"undefined\"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/)},r.storage=\"undefined\"!=typeof chrome&&void 0!==chrome.storage?chrome.storage.local:function(){try{return window.localStorage}catch(t){}}(),r.colors=[\"lightseagreen\",\"forestgreen\",\"goldenrod\",\"dodgerblue\",\"darkorchid\",\"crimson\"],r.formatters.j=function(t){try{return JSON.stringify(t)}catch(t){return\"[UnexpectedJSONParseError]: \"+t.message}},r.enable(i())}).call(this)}).call(this,t(\"_process\"))},{\"./debug\":303,_process:277}],303:[function(t,e,r){var n;function i(t){function e(){if(e.enabled){var t=e,i=+new Date,a=i-(n||i);t.diff=a,t.prev=n,t.curr=i,n=i;for(var o=new Array(arguments.length),s=0;s0)return function(t){if((t=String(t)).length>100)return;var e=/^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(t);if(!e)return;var r=parseFloat(e[1]);switch((e[2]||\"ms\").toLowerCase()){case\"years\":case\"year\":case\"yrs\":case\"yr\":case\"y\":return 315576e5*r;case\"days\":case\"day\":case\"d\":return r*o;case\"hours\":case\"hour\":case\"hrs\":case\"hr\":case\"h\":return r*a;case\"minutes\":case\"minute\":case\"mins\":case\"min\":case\"m\":return r*i;case\"seconds\":case\"second\":case\"secs\":case\"sec\":case\"s\":return r*n;case\"milliseconds\":case\"millisecond\":case\"msecs\":case\"msec\":case\"ms\":return r;default:return}}(t);if(\"number\"===l&&!1===isNaN(t))return e.long?s(r=t,o,\"day\")||s(r,a,\"hour\")||s(r,i,\"minute\")||s(r,n,\"second\")||r+\" ms\":function(t){if(t>=o)return Math.round(t/o)+\"d\";if(t>=a)return Math.round(t/a)+\"h\";if(t>=i)return Math.round(t/i)+\"m\";if(t>=n)return Math.round(t/n)+\"s\";return t+\"ms\"}(t);throw new Error(\"val is not a non-empty string or a valid number. val=\"+JSON.stringify(t))}},{}],305:[function(t,e,r){\"use strict\";var n=t(\"parenthesis\");e.exports=function(t,e,r){if(null==t)throw Error(\"First argument should be a string\");if(null==e)throw Error(\"Separator should be a string or a RegExp\");r?(\"string\"==typeof r||Array.isArray(r))&&(r={ignore:r}):r={},null==r.escape&&(r.escape=!0),null==r.ignore?r.ignore=[\"[]\",\"()\",\"{}\",\"<>\",'\"\"',\"''\",\"``\",\"\\u201c\\u201d\",\"\\xab\\xbb\"]:(\"string\"==typeof r.ignore&&(r.ignore=[r.ignore]),r.ignore=r.ignore.map((function(t){return 1===t.length&&(t+=t),t})));var i=n.parse(t,{flat:!0,brackets:r.ignore}),a=i[0].split(e);if(r.escape){for(var o=[],s=0;s0;){e=c[c.length-1];var p=t[e];if(a[e]=0&&s[e].push(o[g])}a[e]=d}else{if(n[e]===r[e]){var m=[],v=[],y=0;for(d=l.length-1;d>=0;--d){var x=l[d];if(i[x]=!1,m.push(x),v.push(s[x]),y+=s[x].length,o[x]=f.length,x===e){l.length=d;break}}f.push(m);var b=new Array(y);for(d=0;d1&&(i=1),i<-1&&(i=-1),(t*n-e*r<0?-1:1)*Math.acos(i)};r.default=function(t){var e=t.px,r=t.py,l=t.cx,c=t.cy,u=t.rx,f=t.ry,h=t.xAxisRotation,p=void 0===h?0:h,d=t.largeArcFlag,g=void 0===d?0:d,m=t.sweepFlag,v=void 0===m?0:m,y=[];if(0===u||0===f)return[];var x=Math.sin(p*i/360),b=Math.cos(p*i/360),_=b*(e-l)/2+x*(r-c)/2,w=-x*(e-l)/2+b*(r-c)/2;if(0===_&&0===w)return[];u=Math.abs(u),f=Math.abs(f);var T=Math.pow(_,2)/Math.pow(u,2)+Math.pow(w,2)/Math.pow(f,2);T>1&&(u*=Math.sqrt(T),f*=Math.sqrt(T));var k=function(t,e,r,n,a,o,l,c,u,f,h,p){var d=Math.pow(a,2),g=Math.pow(o,2),m=Math.pow(h,2),v=Math.pow(p,2),y=d*g-d*v-g*m;y<0&&(y=0),y/=d*v+g*m;var x=(y=Math.sqrt(y)*(l===c?-1:1))*a/o*p,b=y*-o/a*h,_=f*x-u*b+(t+r)/2,w=u*x+f*b+(e+n)/2,T=(h-x)/a,k=(p-b)/o,A=(-h-x)/a,M=(-p-b)/o,S=s(1,0,T,k),E=s(T,k,A,M);return 0===c&&E>0&&(E-=i),1===c&&E<0&&(E+=i),[_,w,S,E]}(e,r,l,c,u,f,g,v,x,b,_,w),A=n(k,4),M=A[0],S=A[1],E=A[2],L=A[3],C=Math.abs(L)/(i/4);Math.abs(1-C)<1e-7&&(C=1);var P=Math.max(Math.ceil(C),1);L/=P;for(var I=0;Ie[2]&&(e[2]=c[u+0]),c[u+1]>e[3]&&(e[3]=c[u+1]);return e}},{\"abs-svg-path\":70,assert:75,\"is-svg-path\":238,\"normalize-svg-path\":309,\"parse-svg-path\":250}],309:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e,r=[],o=0,s=0,l=0,c=0,u=null,f=null,h=0,p=0,d=0,g=t.length;d4?(o=m[m.length-4],s=m[m.length-3]):(o=h,s=p),r.push(m)}return r};var n=t(\"svg-arc-to-cubic-bezier\");function i(t,e,r,n){return[\"C\",t,e,r,n,r,n]}function a(t,e,r,n,i,a){return[\"C\",t/3+2/3*r,e/3+2/3*n,i/3+2/3*r,a/3+2/3*n,i,a]}},{\"svg-arc-to-cubic-bezier\":307}],310:[function(t,e,r){\"use strict\";var n,i=t(\"svg-path-bounds\"),a=t(\"parse-svg-path\"),o=t(\"draw-svg-path\"),s=t(\"is-svg-path\"),l=t(\"bitmap-sdf\"),c=document.createElement(\"canvas\"),u=c.getContext(\"2d\");e.exports=function(t,e){if(!s(t))throw Error(\"Argument should be valid svg path string\");e||(e={});var r,f;e.shape?(r=e.shape[0],f=e.shape[1]):(r=c.width=e.w||e.width||200,f=c.height=e.h||e.height||200);var h=Math.min(r,f),p=e.stroke||0,d=e.viewbox||e.viewBox||i(t),g=[r/(d[2]-d[0]),f/(d[3]-d[1])],m=Math.min(g[0]||0,g[1]||0)/2;u.fillStyle=\"black\",u.fillRect(0,0,r,f),u.fillStyle=\"white\",p&&(\"number\"!=typeof p&&(p=1),u.strokeStyle=p>0?\"white\":\"black\",u.lineWidth=Math.abs(p));if(u.translate(.5*r,.5*f),u.scale(m,m),function(){if(null!=n)return n;var t=document.createElement(\"canvas\").getContext(\"2d\");if(t.canvas.width=t.canvas.height=1,!window.Path2D)return n=!1;var e=new Path2D(\"M0,0h1v1h-1v-1Z\");t.fillStyle=\"black\",t.fill(e);var r=t.getImageData(0,0,1,1);return n=r&&r.data&&255===r.data[3]}()){var v=new Path2D(t);u.fill(v),p&&u.stroke(v)}else{var y=a(t);o(u,y),u.fill(),p&&u.stroke()}return u.setTransform(1,0,0,1,0,0),l(u,{cutoff:null!=e.cutoff?e.cutoff:.5,radius:null!=e.radius?e.radius:.5*h})}},{\"bitmap-sdf\":82,\"draw-svg-path\":126,\"is-svg-path\":238,\"parse-svg-path\":250,\"svg-path-bounds\":308}],311:[function(t,e,r){(function(e,n){(function(){var i=t(\"process/browser.js\").nextTick,a=Function.prototype.apply,o=Array.prototype.slice,s={},l=0;function c(t,e){this._id=t,this._clearFn=e}r.setTimeout=function(){return new c(a.call(setTimeout,window,arguments),clearTimeout)},r.setInterval=function(){return new c(a.call(setInterval,window,arguments),clearInterval)},r.clearTimeout=r.clearInterval=function(t){t.close()},c.prototype.unref=c.prototype.ref=function(){},c.prototype.close=function(){this._clearFn.call(window,this._id)},r.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},r.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},r._unrefActive=r.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout((function(){t._onTimeout&&t._onTimeout()}),e))},r.setImmediate=\"function\"==typeof e?e:function(t){var e=l++,n=!(arguments.length<2)&&o.call(arguments,1);return s[e]=!0,i((function(){s[e]&&(n?t.apply(null,n):t.call(null),r.clearImmediate(e))})),e},r.clearImmediate=\"function\"==typeof n?n:function(t){delete s[t]}}).call(this)}).call(this,t(\"timers\").setImmediate,t(\"timers\").clearImmediate)},{\"process/browser.js\":277,timers:311}],312:[function(t,e,r){!function(t){var r=/^\\s+/,n=/\\s+$/,i=0,a=t.round,o=t.min,s=t.max,l=t.random;function c(e,l){if(l=l||{},(e=e||\"\")instanceof c)return e;if(!(this instanceof c))return new c(e,l);var u=function(e){var i={r:0,g:0,b:0},a=1,l=null,c=null,u=null,f=!1,h=!1;\"string\"==typeof e&&(e=function(t){t=t.replace(r,\"\").replace(n,\"\").toLowerCase();var e,i=!1;if(S[t])t=S[t],i=!0;else if(\"transparent\"==t)return{r:0,g:0,b:0,a:0,format:\"name\"};if(e=j.rgb.exec(t))return{r:e[1],g:e[2],b:e[3]};if(e=j.rgba.exec(t))return{r:e[1],g:e[2],b:e[3],a:e[4]};if(e=j.hsl.exec(t))return{h:e[1],s:e[2],l:e[3]};if(e=j.hsla.exec(t))return{h:e[1],s:e[2],l:e[3],a:e[4]};if(e=j.hsv.exec(t))return{h:e[1],s:e[2],v:e[3]};if(e=j.hsva.exec(t))return{h:e[1],s:e[2],v:e[3],a:e[4]};if(e=j.hex8.exec(t))return{r:I(e[1]),g:I(e[2]),b:I(e[3]),a:R(e[4]),format:i?\"name\":\"hex8\"};if(e=j.hex6.exec(t))return{r:I(e[1]),g:I(e[2]),b:I(e[3]),format:i?\"name\":\"hex\"};if(e=j.hex4.exec(t))return{r:I(e[1]+\"\"+e[1]),g:I(e[2]+\"\"+e[2]),b:I(e[3]+\"\"+e[3]),a:R(e[4]+\"\"+e[4]),format:i?\"name\":\"hex8\"};if(e=j.hex3.exec(t))return{r:I(e[1]+\"\"+e[1]),g:I(e[2]+\"\"+e[2]),b:I(e[3]+\"\"+e[3]),format:i?\"name\":\"hex\"};return!1}(e));\"object\"==typeof e&&(U(e.r)&&U(e.g)&&U(e.b)?(p=e.r,d=e.g,g=e.b,i={r:255*C(p,255),g:255*C(d,255),b:255*C(g,255)},f=!0,h=\"%\"===String(e.r).substr(-1)?\"prgb\":\"rgb\"):U(e.h)&&U(e.s)&&U(e.v)?(l=z(e.s),c=z(e.v),i=function(e,r,n){e=6*C(e,360),r=C(r,100),n=C(n,100);var i=t.floor(e),a=e-i,o=n*(1-r),s=n*(1-a*r),l=n*(1-(1-a)*r),c=i%6;return{r:255*[n,s,o,o,l,n][c],g:255*[l,n,n,s,o,o][c],b:255*[o,o,l,n,n,s][c]}}(e.h,l,c),f=!0,h=\"hsv\"):U(e.h)&&U(e.s)&&U(e.l)&&(l=z(e.s),u=z(e.l),i=function(t,e,r){var n,i,a;function o(t,e,r){return r<0&&(r+=1),r>1&&(r-=1),r<1/6?t+6*(e-t)*r:r<.5?e:r<2/3?t+(e-t)*(2/3-r)*6:t}if(t=C(t,360),e=C(e,100),r=C(r,100),0===e)n=i=a=r;else{var s=r<.5?r*(1+e):r+e-r*e,l=2*r-s;n=o(l,s,t+1/3),i=o(l,s,t),a=o(l,s,t-1/3)}return{r:255*n,g:255*i,b:255*a}}(e.h,l,u),f=!0,h=\"hsl\"),e.hasOwnProperty(\"a\")&&(a=e.a));var p,d,g;return a=L(a),{ok:f,format:e.format||h,r:o(255,s(i.r,0)),g:o(255,s(i.g,0)),b:o(255,s(i.b,0)),a:a}}(e);this._originalInput=e,this._r=u.r,this._g=u.g,this._b=u.b,this._a=u.a,this._roundA=a(100*this._a)/100,this._format=l.format||u.format,this._gradientType=l.gradientType,this._r<1&&(this._r=a(this._r)),this._g<1&&(this._g=a(this._g)),this._b<1&&(this._b=a(this._b)),this._ok=u.ok,this._tc_id=i++}function u(t,e,r){t=C(t,255),e=C(e,255),r=C(r,255);var n,i,a=s(t,e,r),l=o(t,e,r),c=(a+l)/2;if(a==l)n=i=0;else{var u=a-l;switch(i=c>.5?u/(2-a-l):u/(a+l),a){case t:n=(e-r)/u+(e>1)+720)%360;--e;)n.h=(n.h+i)%360,a.push(c(n));return a}function M(t,e){e=e||6;for(var r=c(t).toHsv(),n=r.h,i=r.s,a=r.v,o=[],s=1/e;e--;)o.push(c({h:n,s:i,v:a})),a=(a+s)%1;return o}c.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var t=this.toRgb();return(299*t.r+587*t.g+114*t.b)/1e3},getLuminance:function(){var e,r,n,i=this.toRgb();return e=i.r/255,r=i.g/255,n=i.b/255,.2126*(e<=.03928?e/12.92:t.pow((e+.055)/1.055,2.4))+.7152*(r<=.03928?r/12.92:t.pow((r+.055)/1.055,2.4))+.0722*(n<=.03928?n/12.92:t.pow((n+.055)/1.055,2.4))},setAlpha:function(t){return this._a=L(t),this._roundA=a(100*this._a)/100,this},toHsv:function(){var t=f(this._r,this._g,this._b);return{h:360*t.h,s:t.s,v:t.v,a:this._a}},toHsvString:function(){var t=f(this._r,this._g,this._b),e=a(360*t.h),r=a(100*t.s),n=a(100*t.v);return 1==this._a?\"hsv(\"+e+\", \"+r+\"%, \"+n+\"%)\":\"hsva(\"+e+\", \"+r+\"%, \"+n+\"%, \"+this._roundA+\")\"},toHsl:function(){var t=u(this._r,this._g,this._b);return{h:360*t.h,s:t.s,l:t.l,a:this._a}},toHslString:function(){var t=u(this._r,this._g,this._b),e=a(360*t.h),r=a(100*t.s),n=a(100*t.l);return 1==this._a?\"hsl(\"+e+\", \"+r+\"%, \"+n+\"%)\":\"hsla(\"+e+\", \"+r+\"%, \"+n+\"%, \"+this._roundA+\")\"},toHex:function(t){return h(this._r,this._g,this._b,t)},toHexString:function(t){return\"#\"+this.toHex(t)},toHex8:function(t){return function(t,e,r,n,i){var o=[O(a(t).toString(16)),O(a(e).toString(16)),O(a(r).toString(16)),O(D(n))];if(i&&o[0].charAt(0)==o[0].charAt(1)&&o[1].charAt(0)==o[1].charAt(1)&&o[2].charAt(0)==o[2].charAt(1)&&o[3].charAt(0)==o[3].charAt(1))return o[0].charAt(0)+o[1].charAt(0)+o[2].charAt(0)+o[3].charAt(0);return o.join(\"\")}(this._r,this._g,this._b,this._a,t)},toHex8String:function(t){return\"#\"+this.toHex8(t)},toRgb:function(){return{r:a(this._r),g:a(this._g),b:a(this._b),a:this._a}},toRgbString:function(){return 1==this._a?\"rgb(\"+a(this._r)+\", \"+a(this._g)+\", \"+a(this._b)+\")\":\"rgba(\"+a(this._r)+\", \"+a(this._g)+\", \"+a(this._b)+\", \"+this._roundA+\")\"},toPercentageRgb:function(){return{r:a(100*C(this._r,255))+\"%\",g:a(100*C(this._g,255))+\"%\",b:a(100*C(this._b,255))+\"%\",a:this._a}},toPercentageRgbString:function(){return 1==this._a?\"rgb(\"+a(100*C(this._r,255))+\"%, \"+a(100*C(this._g,255))+\"%, \"+a(100*C(this._b,255))+\"%)\":\"rgba(\"+a(100*C(this._r,255))+\"%, \"+a(100*C(this._g,255))+\"%, \"+a(100*C(this._b,255))+\"%, \"+this._roundA+\")\"},toName:function(){return 0===this._a?\"transparent\":!(this._a<1)&&(E[h(this._r,this._g,this._b,!0)]||!1)},toFilter:function(t){var e=\"#\"+p(this._r,this._g,this._b,this._a),r=e,n=this._gradientType?\"GradientType = 1, \":\"\";if(t){var i=c(t);r=\"#\"+p(i._r,i._g,i._b,i._a)}return\"progid:DXImageTransform.Microsoft.gradient(\"+n+\"startColorstr=\"+e+\",endColorstr=\"+r+\")\"},toString:function(t){var e=!!t;t=t||this._format;var r=!1,n=this._a<1&&this._a>=0;return e||!n||\"hex\"!==t&&\"hex6\"!==t&&\"hex3\"!==t&&\"hex4\"!==t&&\"hex8\"!==t&&\"name\"!==t?(\"rgb\"===t&&(r=this.toRgbString()),\"prgb\"===t&&(r=this.toPercentageRgbString()),\"hex\"!==t&&\"hex6\"!==t||(r=this.toHexString()),\"hex3\"===t&&(r=this.toHexString(!0)),\"hex4\"===t&&(r=this.toHex8String(!0)),\"hex8\"===t&&(r=this.toHex8String()),\"name\"===t&&(r=this.toName()),\"hsl\"===t&&(r=this.toHslString()),\"hsv\"===t&&(r=this.toHsvString()),r||this.toHexString()):\"name\"===t&&0===this._a?this.toName():this.toRgbString()},clone:function(){return c(this.toString())},_applyModification:function(t,e){var r=t.apply(null,[this].concat([].slice.call(e)));return this._r=r._r,this._g=r._g,this._b=r._b,this.setAlpha(r._a),this},lighten:function(){return this._applyModification(v,arguments)},brighten:function(){return this._applyModification(y,arguments)},darken:function(){return this._applyModification(x,arguments)},desaturate:function(){return this._applyModification(d,arguments)},saturate:function(){return this._applyModification(g,arguments)},greyscale:function(){return this._applyModification(m,arguments)},spin:function(){return this._applyModification(b,arguments)},_applyCombination:function(t,e){return t.apply(null,[this].concat([].slice.call(e)))},analogous:function(){return this._applyCombination(A,arguments)},complement:function(){return this._applyCombination(_,arguments)},monochromatic:function(){return this._applyCombination(M,arguments)},splitcomplement:function(){return this._applyCombination(k,arguments)},triad:function(){return this._applyCombination(w,arguments)},tetrad:function(){return this._applyCombination(T,arguments)}},c.fromRatio=function(t,e){if(\"object\"==typeof t){var r={};for(var n in t)t.hasOwnProperty(n)&&(r[n]=\"a\"===n?t[n]:z(t[n]));t=r}return c(t,e)},c.equals=function(t,e){return!(!t||!e)&&c(t).toRgbString()==c(e).toRgbString()},c.random=function(){return c.fromRatio({r:l(),g:l(),b:l()})},c.mix=function(t,e,r){r=0===r?0:r||50;var n=c(t).toRgb(),i=c(e).toRgb(),a=r/100;return c({r:(i.r-n.r)*a+n.r,g:(i.g-n.g)*a+n.g,b:(i.b-n.b)*a+n.b,a:(i.a-n.a)*a+n.a})},c.readability=function(e,r){var n=c(e),i=c(r);return(t.max(n.getLuminance(),i.getLuminance())+.05)/(t.min(n.getLuminance(),i.getLuminance())+.05)},c.isReadable=function(t,e,r){var n,i,a=c.readability(t,e);switch(i=!1,(n=function(t){var e,r;e=((t=t||{level:\"AA\",size:\"small\"}).level||\"AA\").toUpperCase(),r=(t.size||\"small\").toLowerCase(),\"AA\"!==e&&\"AAA\"!==e&&(e=\"AA\");\"small\"!==r&&\"large\"!==r&&(r=\"small\");return{level:e,size:r}}(r)).level+n.size){case\"AAsmall\":case\"AAAlarge\":i=a>=4.5;break;case\"AAlarge\":i=a>=3;break;case\"AAAsmall\":i=a>=7}return i},c.mostReadable=function(t,e,r){var n,i,a,o,s=null,l=0;i=(r=r||{}).includeFallbackColors,a=r.level,o=r.size;for(var u=0;ul&&(l=n,s=c(e[u]));return c.isReadable(t,s,{level:a,size:o})||!i?s:(r.includeFallbackColors=!1,c.mostReadable(t,[\"#fff\",\"#000\"],r))};var S=c.names={aliceblue:\"f0f8ff\",antiquewhite:\"faebd7\",aqua:\"0ff\",aquamarine:\"7fffd4\",azure:\"f0ffff\",beige:\"f5f5dc\",bisque:\"ffe4c4\",black:\"000\",blanchedalmond:\"ffebcd\",blue:\"00f\",blueviolet:\"8a2be2\",brown:\"a52a2a\",burlywood:\"deb887\",burntsienna:\"ea7e5d\",cadetblue:\"5f9ea0\",chartreuse:\"7fff00\",chocolate:\"d2691e\",coral:\"ff7f50\",cornflowerblue:\"6495ed\",cornsilk:\"fff8dc\",crimson:\"dc143c\",cyan:\"0ff\",darkblue:\"00008b\",darkcyan:\"008b8b\",darkgoldenrod:\"b8860b\",darkgray:\"a9a9a9\",darkgreen:\"006400\",darkgrey:\"a9a9a9\",darkkhaki:\"bdb76b\",darkmagenta:\"8b008b\",darkolivegreen:\"556b2f\",darkorange:\"ff8c00\",darkorchid:\"9932cc\",darkred:\"8b0000\",darksalmon:\"e9967a\",darkseagreen:\"8fbc8f\",darkslateblue:\"483d8b\",darkslategray:\"2f4f4f\",darkslategrey:\"2f4f4f\",darkturquoise:\"00ced1\",darkviolet:\"9400d3\",deeppink:\"ff1493\",deepskyblue:\"00bfff\",dimgray:\"696969\",dimgrey:\"696969\",dodgerblue:\"1e90ff\",firebrick:\"b22222\",floralwhite:\"fffaf0\",forestgreen:\"228b22\",fuchsia:\"f0f\",gainsboro:\"dcdcdc\",ghostwhite:\"f8f8ff\",gold:\"ffd700\",goldenrod:\"daa520\",gray:\"808080\",green:\"008000\",greenyellow:\"adff2f\",grey:\"808080\",honeydew:\"f0fff0\",hotpink:\"ff69b4\",indianred:\"cd5c5c\",indigo:\"4b0082\",ivory:\"fffff0\",khaki:\"f0e68c\",lavender:\"e6e6fa\",lavenderblush:\"fff0f5\",lawngreen:\"7cfc00\",lemonchiffon:\"fffacd\",lightblue:\"add8e6\",lightcoral:\"f08080\",lightcyan:\"e0ffff\",lightgoldenrodyellow:\"fafad2\",lightgray:\"d3d3d3\",lightgreen:\"90ee90\",lightgrey:\"d3d3d3\",lightpink:\"ffb6c1\",lightsalmon:\"ffa07a\",lightseagreen:\"20b2aa\",lightskyblue:\"87cefa\",lightslategray:\"789\",lightslategrey:\"789\",lightsteelblue:\"b0c4de\",lightyellow:\"ffffe0\",lime:\"0f0\",limegreen:\"32cd32\",linen:\"faf0e6\",magenta:\"f0f\",maroon:\"800000\",mediumaquamarine:\"66cdaa\",mediumblue:\"0000cd\",mediumorchid:\"ba55d3\",mediumpurple:\"9370db\",mediumseagreen:\"3cb371\",mediumslateblue:\"7b68ee\",mediumspringgreen:\"00fa9a\",mediumturquoise:\"48d1cc\",mediumvioletred:\"c71585\",midnightblue:\"191970\",mintcream:\"f5fffa\",mistyrose:\"ffe4e1\",moccasin:\"ffe4b5\",navajowhite:\"ffdead\",navy:\"000080\",oldlace:\"fdf5e6\",olive:\"808000\",olivedrab:\"6b8e23\",orange:\"ffa500\",orangered:\"ff4500\",orchid:\"da70d6\",palegoldenrod:\"eee8aa\",palegreen:\"98fb98\",paleturquoise:\"afeeee\",palevioletred:\"db7093\",papayawhip:\"ffefd5\",peachpuff:\"ffdab9\",peru:\"cd853f\",pink:\"ffc0cb\",plum:\"dda0dd\",powderblue:\"b0e0e6\",purple:\"800080\",rebeccapurple:\"663399\",red:\"f00\",rosybrown:\"bc8f8f\",royalblue:\"4169e1\",saddlebrown:\"8b4513\",salmon:\"fa8072\",sandybrown:\"f4a460\",seagreen:\"2e8b57\",seashell:\"fff5ee\",sienna:\"a0522d\",silver:\"c0c0c0\",skyblue:\"87ceeb\",slateblue:\"6a5acd\",slategray:\"708090\",slategrey:\"708090\",snow:\"fffafa\",springgreen:\"00ff7f\",steelblue:\"4682b4\",tan:\"d2b48c\",teal:\"008080\",thistle:\"d8bfd8\",tomato:\"ff6347\",turquoise:\"40e0d0\",violet:\"ee82ee\",wheat:\"f5deb3\",white:\"fff\",whitesmoke:\"f5f5f5\",yellow:\"ff0\",yellowgreen:\"9acd32\"},E=c.hexNames=function(t){var e={};for(var r in t)t.hasOwnProperty(r)&&(e[t[r]]=r);return e}(S);function L(t){return t=parseFloat(t),(isNaN(t)||t<0||t>1)&&(t=1),t}function C(e,r){(function(t){return\"string\"==typeof t&&-1!=t.indexOf(\".\")&&1===parseFloat(t)})(e)&&(e=\"100%\");var n=function(t){return\"string\"==typeof t&&-1!=t.indexOf(\"%\")}(e);return e=o(r,s(0,parseFloat(e))),n&&(e=parseInt(e*r,10)/100),t.abs(e-r)<1e-6?1:e%r/parseFloat(r)}function P(t){return o(1,s(0,t))}function I(t){return parseInt(t,16)}function O(t){return 1==t.length?\"0\"+t:\"\"+t}function z(t){return t<=1&&(t=100*t+\"%\"),t}function D(e){return t.round(255*parseFloat(e)).toString(16)}function R(t){return I(t)/255}var F,B,N,j=(B=\"[\\\\s|\\\\(]+(\"+(F=\"(?:[-\\\\+]?\\\\d*\\\\.\\\\d+%?)|(?:[-\\\\+]?\\\\d+%?)\")+\")[,|\\\\s]+(\"+F+\")[,|\\\\s]+(\"+F+\")\\\\s*\\\\)?\",N=\"[\\\\s|\\\\(]+(\"+F+\")[,|\\\\s]+(\"+F+\")[,|\\\\s]+(\"+F+\")[,|\\\\s]+(\"+F+\")\\\\s*\\\\)?\",{CSS_UNIT:new RegExp(F),rgb:new RegExp(\"rgb\"+B),rgba:new RegExp(\"rgba\"+N),hsl:new RegExp(\"hsl\"+B),hsla:new RegExp(\"hsla\"+N),hsv:new RegExp(\"hsv\"+B),hsva:new RegExp(\"hsva\"+N),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/});function U(t){return!!j.CSS_UNIT.exec(t)}void 0!==e&&e.exports?e.exports=c:window.tinycolor=c}(Math)},{}],313:[function(t,e,r){\"use strict\";e.exports=i,e.exports.float32=e.exports.float=i,e.exports.fract32=e.exports.fract=function(t,e){if(t.length){if(t instanceof Float32Array)return new Float32Array(t.length);e instanceof Float32Array||(e=i(t));for(var r=0,n=e.length;ro&&(o=t[0]),t[1]s&&(s=t[1])}function c(t){switch(t.type){case\"GeometryCollection\":t.geometries.forEach(c);break;case\"Point\":l(t.coordinates);break;case\"MultiPoint\":t.coordinates.forEach(l)}}for(e in t.arcs.forEach((function(t){for(var e,r=-1,l=t.length;++ro&&(o=e[0]),e[1]s&&(s=e[1])})),t.objects)c(t.objects[e]);return[i,a,o,s]}function i(t,e){var r=e.id,n=e.bbox,i=null==e.properties?{}:e.properties,o=a(t,e);return null==r&&null==n?{type:\"Feature\",properties:i,geometry:o}:null==n?{type:\"Feature\",id:r,properties:i,geometry:o}:{type:\"Feature\",id:r,bbox:n,properties:i,geometry:o}}function a(t,e){var n=r(t.transform),i=t.arcs;function a(t,e){e.length&&e.pop();for(var r=i[t<0?~t:t],a=0,o=r.length;a1)n=l(t,e,r);else for(i=0,n=new Array(a=t.arcs.length);i1)for(var a,s,c=1,u=l(i[0]);cu&&(s=i[0],i[0]=i[c],i[c]=s,u=a);return i})).filter((function(t){return t.length>0}))}}function u(t,e){for(var r=0,n=t.length;r>>1;t[i]=2))throw new Error(\"n must be \\u22652\");var r,i=(l=t.bbox||n(t))[0],a=l[1],o=l[2],s=l[3];e={scale:[o-i?(o-i)/(r-1):1,s-a?(s-a)/(r-1):1],translate:[i,a]}}var l,c,u=f(e),h=t.objects,p={};function d(t){return u(t)}function g(t){var e;switch(t.type){case\"GeometryCollection\":e={type:\"GeometryCollection\",geometries:t.geometries.map(g)};break;case\"Point\":e={type:\"Point\",coordinates:d(t.coordinates)};break;case\"MultiPoint\":e={type:\"MultiPoint\",coordinates:t.coordinates.map(d)};break;default:return t}return null!=t.id&&(e.id=t.id),null!=t.bbox&&(e.bbox=t.bbox),null!=t.properties&&(e.properties=t.properties),e}for(c in h)p[c]=g(h[c]);return{type:\"Topology\",bbox:l,transform:e,objects:p,arcs:t.arcs.map((function(t){var e,r=0,n=1,i=t.length,a=new Array(i);for(a[0]=u(t[0],0);++r\":(e.length>100&&(e=e.slice(0,99)+\"\\u2026\"),e=e.replace(i,(function(t){switch(t){case\"\\n\":return\"\\\\n\";case\"\\r\":return\"\\\\r\";case\"\\u2028\":return\"\\\\u2028\";case\"\\u2029\":return\"\\\\u2029\";default:throw new Error(\"Unexpected character\")}})))}},{\"./safe-to-string\":318}],320:[function(t,e,r){\"use strict\";var n=t(\"../value/is\"),i={object:!0,function:!0,undefined:!0};e.exports=function(t){return!!n(t)&&hasOwnProperty.call(i,typeof t)}},{\"../value/is\":326}],321:[function(t,e,r){\"use strict\";var n=t(\"../lib/resolve-exception\"),i=t(\"./is\");e.exports=function(t){return i(t)?t:n(t,\"%v is not a plain function\",arguments[1])}},{\"../lib/resolve-exception\":317,\"./is\":322}],322:[function(t,e,r){\"use strict\";var n=t(\"../function/is\"),i=/^\\s*class[\\s{/}]/,a=Function.prototype.toString;e.exports=function(t){return!!n(t)&&!i.test(a.call(t))}},{\"../function/is\":316}],323:[function(t,e,r){\"use strict\";var n=t(\"../object/is\");e.exports=function(t){if(!n(t))return!1;try{return!!t.constructor&&t.constructor.prototype===t}catch(t){return!1}}},{\"../object/is\":320}],324:[function(t,e,r){\"use strict\";var n=t(\"../value/is\"),i=t(\"../object/is\"),a=Object.prototype.toString;e.exports=function(t){if(!n(t))return null;if(i(t)){var e=t.toString;if(\"function\"!=typeof e)return null;if(e===a)return null}try{return\"\"+t}catch(t){return null}}},{\"../object/is\":320,\"../value/is\":326}],325:[function(t,e,r){\"use strict\";var n=t(\"../lib/resolve-exception\"),i=t(\"./is\");e.exports=function(t){return i(t)?t:n(t,\"Cannot use %v\",arguments[1])}},{\"../lib/resolve-exception\":317,\"./is\":326}],326:[function(t,e,r){\"use strict\";e.exports=function(t){return null!=t}},{}],327:[function(t,e,r){(function(e){(function(){\"use strict\";var n=t(\"bit-twiddle\"),i=t(\"dup\"),a=t(\"buffer\").Buffer;e.__TYPEDARRAY_POOL||(e.__TYPEDARRAY_POOL={UINT8:i([32,0]),UINT16:i([32,0]),UINT32:i([32,0]),BIGUINT64:i([32,0]),INT8:i([32,0]),INT16:i([32,0]),INT32:i([32,0]),BIGINT64:i([32,0]),FLOAT:i([32,0]),DOUBLE:i([32,0]),DATA:i([32,0]),UINT8C:i([32,0]),BUFFER:i([32,0])});var o=\"undefined\"!=typeof Uint8ClampedArray,s=\"undefined\"!=typeof BigUint64Array,l=\"undefined\"!=typeof BigInt64Array,c=e.__TYPEDARRAY_POOL;c.UINT8C||(c.UINT8C=i([32,0])),c.BIGUINT64||(c.BIGUINT64=i([32,0])),c.BIGINT64||(c.BIGINT64=i([32,0])),c.BUFFER||(c.BUFFER=i([32,0]));var u=c.DATA,f=c.BUFFER;function h(t){if(t){var e=t.length||t.byteLength,r=n.log2(e);u[r].push(t)}}function p(t){t=n.nextPow2(t);var e=n.log2(t),r=u[e];return r.length>0?r.pop():new ArrayBuffer(t)}function d(t){return new Uint8Array(p(t),0,t)}function g(t){return new Uint16Array(p(2*t),0,t)}function m(t){return new Uint32Array(p(4*t),0,t)}function v(t){return new Int8Array(p(t),0,t)}function y(t){return new Int16Array(p(2*t),0,t)}function x(t){return new Int32Array(p(4*t),0,t)}function b(t){return new Float32Array(p(4*t),0,t)}function _(t){return new Float64Array(p(8*t),0,t)}function w(t){return o?new Uint8ClampedArray(p(t),0,t):d(t)}function T(t){return s?new BigUint64Array(p(8*t),0,t):null}function k(t){return l?new BigInt64Array(p(8*t),0,t):null}function A(t){return new DataView(p(t),0,t)}function M(t){t=n.nextPow2(t);var e=n.log2(t),r=f[e];return r.length>0?r.pop():new a(t)}r.free=function(t){if(a.isBuffer(t))f[n.log2(t.length)].push(t);else{if(\"[object ArrayBuffer]\"!==Object.prototype.toString.call(t)&&(t=t.buffer),!t)return;var e=t.length||t.byteLength,r=0|n.log2(e);u[r].push(t)}},r.freeUint8=r.freeUint16=r.freeUint32=r.freeBigUint64=r.freeInt8=r.freeInt16=r.freeInt32=r.freeBigInt64=r.freeFloat32=r.freeFloat=r.freeFloat64=r.freeDouble=r.freeUint8Clamped=r.freeDataView=function(t){h(t.buffer)},r.freeArrayBuffer=h,r.freeBuffer=function(t){f[n.log2(t.length)].push(t)},r.malloc=function(t,e){if(void 0===e||\"arraybuffer\"===e)return p(t);switch(e){case\"uint8\":return d(t);case\"uint16\":return g(t);case\"uint32\":return m(t);case\"int8\":return v(t);case\"int16\":return y(t);case\"int32\":return x(t);case\"float\":case\"float32\":return b(t);case\"double\":case\"float64\":return _(t);case\"uint8_clamped\":return w(t);case\"bigint64\":return k(t);case\"biguint64\":return T(t);case\"buffer\":return M(t);case\"data\":case\"dataview\":return A(t);default:return null}return null},r.mallocArrayBuffer=p,r.mallocUint8=d,r.mallocUint16=g,r.mallocUint32=m,r.mallocInt8=v,r.mallocInt16=y,r.mallocInt32=x,r.mallocFloat32=r.mallocFloat=b,r.mallocFloat64=r.mallocDouble=_,r.mallocUint8Clamped=w,r.mallocBigUint64=T,r.mallocBigInt64=k,r.mallocDataView=A,r.mallocBuffer=M,r.clearCache=function(){for(var t=0;t<32;++t)c.UINT8[t].length=0,c.UINT16[t].length=0,c.UINT32[t].length=0,c.INT8[t].length=0,c.INT16[t].length=0,c.INT32[t].length=0,c.FLOAT[t].length=0,c.DOUBLE[t].length=0,c.BIGUINT64[t].length=0,c.BIGINT64[t].length=0,c.UINT8C[t].length=0,u[t].length=0,f[t].length=0}}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"bit-twiddle\":81,buffer:85,dup:128}],328:[function(t,e,r){var n=/[\\'\\\"]/;e.exports=function(t){return t?(n.test(t.charAt(0))&&(t=t.substr(1)),n.test(t.charAt(t.length-1))&&(t=t.substr(0,t.length-1)),t):\"\"}},{}],329:[function(t,e,r){\"use strict\";e.exports=function(t,e,r){Array.isArray(r)||(r=[].slice.call(arguments,2));for(var n=0,i=r.length;n2111)throw e.replace(/\\{0\\}/,this.local.name);return t},toMonthIndex:function(t,e,r){var i=this.intercalaryMonth(t);if(r&&e!==i||e<1||e>12)throw n.local.invalidMonth.replace(/\\{0\\}/,this.local.name);return i?!r&&e<=i?e-1:e:e-1},toChineseMonth:function(t,e){t.year&&(e=(t=t.year()).month());var r=this.intercalaryMonth(t);if(e<0||e>(r?12:11))throw n.local.invalidMonth.replace(/\\{0\\}/,this.local.name);return r?e>13},isIntercalaryMonth:function(t,e){t.year&&(e=(t=t.year()).month());var r=this.intercalaryMonth(t);return!!r&&r===e},leap year:function(t){return 0!==this.intercalaryMonth(t)},weekOfYear:function(t,e,r){var i,o=this._validateYear(t,n.local.invalidyear),s=h[o-h[0]],l=s>>9&4095,c=s>>5&15,u=31&s;(i=a.newDate(l,c,u)).add(4-(i.dayOfWeek()||7),\"d\");var f=this.toJD(t,e,r)-i.toJD();return 1+Math.floor(f/7)},monthsInYear:function(t){return this.leap year(t)?13:12},daysInMonth:function(t,e){t.year&&(e=t.month(),t=t.year()),t=this._validateYear(t);var r=f[t-f[0]];if(e>(r>>13?12:11))throw n.local.invalidMonth.replace(/\\{0\\}/,this.local.name);return r&1<<12-e?30:29},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,s,r,n.local.invalidDate);t=this._validateYear(i.year()),e=i.month(),r=i.day();var o=this.isIntercalaryMonth(t,e),s=this.toChineseMonth(t,e),l=function(t,e,r,n,i){var a,o,s;if(\"object\"==typeof t)o=t,a=e||{};else{var l;if(!(\"number\"==typeof t&&t>=1888&&t<=2111))throw new Error(\"Lunar year outside range 1888-2111\");if(!(\"number\"==typeof e&&e>=1&&e<=12))throw new Error(\"Lunar month outside range 1 - 12\");if(!(\"number\"==typeof r&&r>=1&&r<=30))throw new Error(\"Lunar day outside range 1 - 30\");\"object\"==typeof n?(l=!1,a=n):(l=!!n,a=i||{}),o={year:t,month:e,day:r,isIntercalary:l}}s=o.day-1;var c,u=f[o.year-f[0]],p=u>>13;c=p&&(o.month>p||o.isIntercalary)?o.month:o.month-1;for(var d=0;d>9&4095,(g>>5&15)-1,(31&g)+s);return a.year=m.getFullYear(),a.month=1+m.getMonth(),a.day=m.getDate(),a}(t,s,r,o);return a.toJD(l.year,l.month,l.day)},fromJD:function(t){var e=a.fromJD(t),r=function(t,e,r,n){var i,a;if(\"object\"==typeof t)i=t,a=e||{};else{if(!(\"number\"==typeof t&&t>=1888&&t<=2111))throw new Error(\"Solar year outside range 1888-2111\");if(!(\"number\"==typeof e&&e>=1&&e<=12))throw new Error(\"Solar month outside range 1 - 12\");if(!(\"number\"==typeof r&&r>=1&&r<=31))throw new Error(\"Solar day outside range 1 - 31\");i={year:t,month:e,day:r},a=n||{}}var o=h[i.year-h[0]],s=i.year<<9|i.month<<5|i.day;a.year=s>=o?i.year:i.year-1,o=h[a.year-h[0]];var l,c=new Date(o>>9&4095,(o>>5&15)-1,31&o),u=new Date(i.year,i.month-1,i.day);l=Math.round((u-c)/864e5);var p,d=f[a.year-f[0]];for(p=0;p<13;p++){var g=d&1<<12-p?30:29;if(l>13;!m||p=2&&n<=6},extraInfo:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return{century:o[Math.floor((i.year()-1)/100)+1]||\"\"}},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return t=i.year()+(i.year()<0?1:0),e=i.month(),(r=i.day())+(e>1?16:0)+(e>2?32*(e-2):0)+400*(t-1)+this.jdEpoch-1},fromJD:function(t){t=Math.floor(t+.5)-Math.floor(this.jdEpoch)-1;var e=Math.floor(t/400)+1;t-=400*(e-1),t+=t>15?16:0;var r=Math.floor(t/32)+1,n=t-32*(r-1)+1;return this.newDate(e<=0?e-1:e,r,n)}});var o={20:\"Fruitbat\",21:\"Anchovy\"};n.calendars.discworld=a},{\"../main\":346,\"object-assign\":247}],335:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Ethiopian\",jdEpoch:1724220.5,daysPerMonth:[30,30,30,30,30,30,30,30,30,30,30,30,5],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Ethiopian\",epochs:[\"BEE\",\"EE\"],monthNames:[\"Meskerem\",\"Tikemet\",\"Hidar\",\"Tahesas\",\"Tir\",\"Yekatit\",\"Megabit\",\"Miazia\",\"Genbot\",\"Sene\",\"Hamle\",\"Nehase\",\"Pagume\"],monthNamesShort:[\"Mes\",\"Tik\",\"Hid\",\"Tah\",\"Tir\",\"Yek\",\"Meg\",\"Mia\",\"Gen\",\"Sen\",\"Ham\",\"Neh\",\"Pag\"],dayNames:[\"Ehud\",\"Segno\",\"Maksegno\",\"Irob\",\"Hamus\",\"Arb\",\"Kidame\"],dayNamesShort:[\"Ehu\",\"Seg\",\"Mak\",\"Iro\",\"Ham\",\"Arb\",\"Kid\"],dayNamesMin:[\"Eh\",\"Se\",\"Ma\",\"Ir\",\"Ha\",\"Ar\",\"Ki\"],digits:null,dateFormat:\"dd/mm/yyyy\",firstDay:0,isRTL:!1}},leap year:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return(t=e.year()+(e.year()<0?1:0))%4==3||t%4==-1},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear||n.regionalOptions[\"\"].invalidYear),13},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(13===r.month()&&this.leap year(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return(t=i.year())<0&&t++,i.day()+30*(i.month()-1)+365*(t-1)+Math.floor(t/4)+this.jdEpoch-1},fromJD:function(t){var e=Math.floor(t)+.5-this.jdEpoch,r=Math.floor((e-Math.floor((e+366)/1461))/365)+1;r<=0&&r--,e=Math.floor(t)+.5-this.newDate(r,1,1).toJD();var n=Math.floor(e/30)+1,i=e-30*(n-1)+1;return this.newDate(r,n,i)}}),n.calendars.ethiopian=a},{\"../main\":346,\"object-assign\":247}],336:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}function o(t,e){return t-e*Math.floor(t/e)}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Hebrew\",jdEpoch:347995.5,daysPerMonth:[30,29,30,29,30,29,30,29,30,29,30,29,29],hasYearZero:!1,minMonth:1,firstMonth:7,minDay:1,regionalOptions:{\"\":{name:\"Hebrew\",epochs:[\"BAM\",\"AM\"],monthNames:[\"Nisan\",\"Iyar\",\"Sivan\",\"Tammuz\",\"Av\",\"Elul\",\"Tishrei\",\"Cheshvan\",\"Kislev\",\"Tevet\",\"Shevat\",\"Adar\",\"Adar II\"],monthNamesShort:[\"Nis\",\"Iya\",\"Siv\",\"Tam\",\"Av\",\"Elu\",\"Tis\",\"Che\",\"Kis\",\"Tev\",\"She\",\"Ada\",\"Ad2\"],dayNames:[\"Yom Rishon\",\"Yom Sheni\",\"Yom Shlishi\",\"Yom Revi'i\",\"Yom Chamishi\",\"Yom Shishi\",\"Yom Shabbat\"],dayNamesShort:[\"Ris\",\"She\",\"Shl\",\"Rev\",\"Cha\",\"Shi\",\"Sha\"],dayNamesMin:[\"Ri\",\"She\",\"Shl\",\"Re\",\"Ch\",\"Shi\",\"Sha\"],digits:null,dateFormat:\"dd/mm/yyyy\",firstDay:0,isRTL:!1}},leap year:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return this._leapYear(e.year())},_leapYear:function(t){return o(7*(t=t<0?t+1:t)+1,19)<7},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear),this._leapYear(t.year?t.year():t)?13:12},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(t){return t=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear).year(),this.toJD(-1===t?1:t+1,7,1)-this.toJD(t,7,1)},daysInMonth:function(t,e){return t.year&&(e=t.month(),t=t.year()),this._validate(t,e,this.minDay,n.local.invalidMonth),12===e&&this.leap year(t)||8===e&&5===o(this.daysInYear(t),10)?30:9===e&&3===o(this.daysInYear(t),10)?29:this.daysPerMonth[e-1]},weekDay:function(t,e,r){return 6!==this.dayOfWeek(t,e,r)},extraInfo:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return{yearType:(this.leap year(i)?\"embolismic\":\"common\")+\" \"+[\"deficient\",\"regular\",\"complete\"][this.daysInYear(i)%10-3]}},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=i.year(),e=i.month(),r=i.day();var a=t<=0?t+1:t,o=this.jdEpoch+this._delay1(a)+this._delay2(a)+r+1;if(e<7){for(var s=7;s<=this.monthsInYear(t);s++)o+=this.daysInMonth(t,s);for(s=1;s=this.toJD(-1===e?1:e+1,7,1);)e++;for(var r=tthis.toJD(e,r,this.daysInMonth(e,r));)r++;var n=t-this.toJD(e,r,1)+1;return this.newDate(e,r,n)}}),n.calendars.hebrew=a},{\"../main\":346,\"object-assign\":247}],337:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Islamic\",jdEpoch:1948439.5,daysPerMonth:[30,29,30,29,30,29,30,29,30,29,30,29],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Islamic\",epochs:[\"BH\",\"AH\"],monthNames:[\"Muharram\",\"Safar\",\"Rabi' al-awwal\",\"Rabi' al-thani\",\"Jumada al-awwal\",\"Jumada al-thani\",\"Rajab\",\"Sha'aban\",\"Ramadan\",\"Shawwal\",\"Dhu al-Qi'dah\",\"Dhu al-Hijjah\"],monthNamesShort:[\"Muh\",\"Saf\",\"Rab1\",\"Rab2\",\"Jum1\",\"Jum2\",\"Raj\",\"Sha'\",\"Ram\",\"Shaw\",\"DhuQ\",\"DhuH\"],dayNames:[\"Yawm al-ahad\",\"Yawm al-ithnayn\",\"Yawm ath-thulaathaa'\",\"Yawm al-arbi'aa'\",\"Yawm al-kham\\u012bs\",\"Yawm al-jum'a\",\"Yawm as-sabt\"],dayNamesShort:[\"Aha\",\"Ith\",\"Thu\",\"Arb\",\"Kha\",\"Jum\",\"Sab\"],dayNamesMin:[\"Ah\",\"It\",\"Th\",\"Ar\",\"Kh\",\"Ju\",\"Sa\"],digits:null,dateFormat:\"yyyy/mm/dd\",firstDay:6,isRTL:!1}},leap year:function(t){return(11*this._validate(t,this.minMonth,this.minDay,n.local.invalidYear).year()+14)%30<11},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(t){return this.leap year(t)?355:354},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(12===r.month()&&this.leap year(r.year())?1:0)},weekDay:function(t,e,r){return 5!==this.dayOfWeek(t,e,r)},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return t=i.year(),e=i.month(),t=t<=0?t+1:t,(r=i.day())+Math.ceil(29.5*(e-1))+354*(t-1)+Math.floor((3+11*t)/30)+this.jdEpoch-1},fromJD:function(t){t=Math.floor(t)+.5;var e=Math.floor((30*(t-this.jdEpoch)+10646)/10631);e=e<=0?e-1:e;var r=Math.min(12,Math.ceil((t-29-this.toJD(e,1,1))/29.5)+1),n=t-this.toJD(e,r,1)+1;return this.newDate(e,r,n)}}),n.calendars.islamic=a},{\"../main\":346,\"object-assign\":247}],338:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Julian\",jdEpoch:1721423.5,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Julian\",epochs:[\"BC\",\"AD\"],monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],dayNamesShort:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],dayNamesMin:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],digits:null,dateFormat:\"mm/dd/yyyy\",firstDay:0,isRTL:!1}},leap year:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return(t=e.year()<0?e.year()+1:e.year())%4==0},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(4-(n.dayOfWeek()||7),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(2===r.month()&&this.leap year(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return t=i.year(),e=i.month(),r=i.day(),t<0&&t++,e<=2&&(t--,e+=12),Math.floor(365.25*(t+4716))+Math.floor(30.6001*(e+1))+r-1524.5},fromJD:function(t){var e=Math.floor(t+.5)+1524,r=Math.floor((e-122.1)/365.25),n=Math.floor(365.25*r),i=Math.floor((e-n)/30.6001),a=i-Math.floor(i<14?1:13),o=r-Math.floor(a>2?4716:4715),s=e-n-Math.floor(30.6001*i);return o<=0&&o--,this.newDate(o,a,s)}}),n.calendars.julian=a},{\"../main\":346,\"object-assign\":247}],339:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}function o(t,e){return t-e*Math.floor(t/e)}function s(t,e){return o(t-1,e)+1}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Mayan\",jdEpoch:584282.5,hasYearZero:!0,minMonth:0,firstMonth:0,minDay:0,regionalOptions:{\"\":{name:\"Mayan\",epochs:[\"\",\"\"],monthNames:[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\"],monthNamesShort:[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\"],dayNames:[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\"],dayNamesShort:[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\"],dayNamesMin:[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\"],digits:null,dateFormat:\"YYYY.m.d\",firstDay:0,isRTL:!1,haabMonths:[\"Pop\",\"Uo\",\"Zip\",\"Zotz\",\"Tzec\",\"Xul\",\"Yaxkin\",\"Mol\",\"Chen\",\"Yax\",\"Zac\",\"Ceh\",\"Mac\",\"Kankin\",\"Muan\",\"Pax\",\"Kayab\",\"Cumku\",\"Uayeb\"],tzolkinMonths:[\"Imix\",\"Ik\",\"Akbal\",\"Kan\",\"Chicchan\",\"Cimi\",\"Manik\",\"Lamat\",\"Muluc\",\"Oc\",\"Chuen\",\"Eb\",\"Ben\",\"Ix\",\"Men\",\"Cib\",\"Caban\",\"Etznab\",\"Cauac\",\"Ahau\"]}},leap year:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear),!1},formatYear:function(t){t=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear).year();var e=Math.floor(t/400);return t%=400,t+=t<0?400:0,e+\".\"+Math.floor(t/20)+\".\"+t%20},forYear:function(t){if((t=t.split(\".\")).length<3)throw\"Invalid Mayan year\";for(var e=0,r=0;r19||r>0&&n<0)throw\"Invalid Mayan year\";e=20*e+n}return e},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear),18},weekOfYear:function(t,e,r){return this._validate(t,e,r,n.local.invalidDate),0},daysInYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear),360},daysInMonth:function(t,e){return this._validate(t,e,this.minDay,n.local.invalidMonth),20},daysInWeek:function(){return 5},dayOfWeek:function(t,e,r){return this._validate(t,e,r,n.local.invalidDate).day()},weekDay:function(t,e,r){return this._validate(t,e,r,n.local.invalidDate),!0},extraInfo:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate).toJD(),a=this._toHaab(i),o=this._toTzolkin(i);return{haabMonthName:this.local.haabMonths[a[0]-1],haabMonth:a[0],haabDay:a[1],tzolkinDayName:this.local.tzolkinMonths[o[0]-1],tzolkinDay:o[0],tzolkinTrecena:o[1]}},_toHaab:function(t){var e=o((t-=this.jdEpoch)+8+340,365);return[Math.floor(e/20)+1,o(e,20)]},_toTzolkin:function(t){return[s((t-=this.jdEpoch)+20,20),s(t+4,13)]},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return i.day()+20*i.month()+360*i.year()+this.jdEpoch},fromJD:function(t){t=Math.floor(t)+.5-this.jdEpoch;var e=Math.floor(t/360);t%=360,t+=t<0?360:0;var r=Math.floor(t/20),n=t%20;return this.newDate(e,r,n)}}),n.calendars.mayan=a},{\"../main\":346,\"object-assign\":247}],340:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar;var o=n.instance(\"gregorian\");i(a.prototype,{name:\"Nanakshahi\",jdEpoch:2257673.5,daysPerMonth:[31,31,31,31,31,30,30,30,30,30,30,30],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Nanakshahi\",epochs:[\"BN\",\"AN\"],monthNames:[\"Chet\",\"Vaisakh\",\"Jeth\",\"Harh\",\"Sawan\",\"Bhadon\",\"Assu\",\"Katak\",\"Maghar\",\"Poh\",\"Magh\",\"Phagun\"],monthNamesShort:[\"Che\",\"Vai\",\"Jet\",\"Har\",\"Saw\",\"Bha\",\"Ass\",\"Kat\",\"Mgr\",\"Poh\",\"Mgh\",\"Pha\"],dayNames:[\"Somvaar\",\"Mangalvar\",\"Budhvaar\",\"Veervaar\",\"Shukarvaar\",\"Sanicharvaar\",\"Etvaar\"],dayNamesShort:[\"Some\",\"Mangal\",\"Budh\",\"Veer\",\"Shukar\",\"Sanichar\",\"Et\"],dayNamesMin:[\"So\",\"Ma\",\"Bu\",\"Ve\",\"Sh\",\"Sa\",\"Et\"],digits:null,dateFormat:\"dd-mm-yyyy\",firstDay:0,isRTL:!1}},leap year:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear||n.regionalOptions[\"\"].invalidYear);return o.leap year(e.year()+(e.year()<1?1:0)+1469)},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(1-(n.dayOfWeek()||7),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(12===r.month()&&this.leap year(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidMonth);(t=i.year())<0&&t++;for(var a=i.day(),s=1;s=this.toJD(e+1,1,1);)e++;for(var r=t-Math.floor(this.toJD(e,1,1)+.5)+1,n=1;r>this.daysInMonth(e,n);)r-=this.daysInMonth(e,n),n++;return this.newDate(e,n,r)}}),n.calendars.nanakshahi=a},{\"../main\":346,\"object-assign\":247}],341:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Nepali\",jdEpoch:1700709.5,daysPerMonth:[31,31,32,32,31,30,30,29,30,29,30,30],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,daysPerYear:365,regionalOptions:{\"\":{name:\"Nepali\",epochs:[\"BBS\",\"ABS\"],monthNames:[\"Baisakh\",\"Jestha\",\"Ashadh\",\"Shrawan\",\"Bhadra\",\"Ashwin\",\"Kartik\",\"Mangsir\",\"Paush\",\"Mangh\",\"Falgun\",\"Chaitra\"],monthNamesShort:[\"Bai\",\"Je\",\"As\",\"Shra\",\"Bha\",\"Ash\",\"Kar\",\"Mang\",\"Pau\",\"Ma\",\"Fal\",\"Chai\"],dayNames:[\"Aaitabaar\",\"Sombaar\",\"Manglbaar\",\"Budhabaar\",\"Bihibaar\",\"Shukrabaar\",\"Shanibaar\"],dayNamesShort:[\"Aaita\",\"Some\",\"Mangl\",\"Budha\",\"Bihi\",\"Shukra\",\"Shani\"],dayNamesMin:[\"Aai\",\"So\",\"Man\",\"Bu\",\"Bi\",\"Shu\",\"Sha\"],digits:null,dateFormat:\"dd/mm/yyyy\",firstDay:1,isRTL:!1}},leap year:function(t){return this.daysInYear(t)!==this.daysPerYear},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(t){if(t=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear).year(),void 0===this.NEPALI_CALENDAR_DATA[t])return this.daysPerYear;for(var e=0,r=this.minMonth;r<=12;r++)e+=this.NEPALI_CALENDAR_DATA[t][r];return e},daysInMonth:function(t,e){return t.year&&(e=t.month(),t=t.year()),this._validate(t,e,this.minDay,n.local.invalidMonth),void 0===this.NEPALI_CALENDAR_DATA[t]?this.daysPerMonth[e-1]:this.NEPALI_CALENDAR_DATA[t][e]},weekDay:function(t,e,r){return 6!==this.dayOfWeek(t,e,r)},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=i.year(),e=i.month(),r=i.day();var a=n.instance(),o=0,s=e,l=t;this._createMissingCalendarData(t);var c=t-(s>9||9===s&&r>=this.NEPALI_CALENDAR_DATA[l][0]?56:57);for(9!==e&&(o=r,s--);9!==s;)s<=0&&(s=12,l--),o+=this.NEPALI_CALENDAR_DATA[l][s],s--;return 9===e?(o+=r-this.NEPALI_CALENDAR_DATA[l][0])<0&&(o+=a.daysInYear(c)):o+=this.NEPALI_CALENDAR_DATA[l][9]-this.NEPALI_CALENDAR_DATA[l][0],a.newDate(c,1,1).add(o,\"d\").toJD()},fromJD:function(t){var e=n.instance().fromJD(t),r=e.year(),i=e.dayOfYear(),a=r+56;this._createMissingCalendarData(a);for(var o=9,s=this.NEPALI_CALENDAR_DATA[a][0],l=this.NEPALI_CALENDAR_DATA[a][o]-s+1;i>l;)++o>12&&(o=1,a++),l+=this.NEPALI_CALENDAR_DATA[a][o];var c=this.NEPALI_CALENDAR_DATA[a][o]-(l-i);return this.newDate(a,o,c)},_createMissingCalendarData:function(t){var e=this.daysPerMonth.slice(0);e.unshift(17);for(var r=t-1;r0?474:473))%2820+474+38)%2816<682},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-(n.dayOfWeek()+1)%7,\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(12===r.month()&&this.leap year(r.year())?1:0)},weekDay:function(t,e,r){return 5!==this.dayOfWeek(t,e,r)},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=i.year(),e=i.month(),r=i.day();var a=t-(t>=0?474:473),s=474+o(a,2820);return r+(e<=7?31*(e-1):30*(e-1)+6)+Math.floor((682*s-110)/2816)+365*(s-1)+1029983*Math.floor(a/2820)+this.jdEpoch-1},fromJD:function(t){var e=(t=Math.floor(t)+.5)-this.toJD(475,1,1),r=Math.floor(e/1029983),n=o(e,1029983),i=2820;if(1029982!==n){var a=Math.floor(n/366),s=o(n,366);i=Math.floor((2134*a+2816*s+2815)/1028522)+a+1}var l=i+2820*r+474;l=l<=0?l-1:l;var c=t-this.toJD(l,1,1)+1,u=c<=186?Math.ceil(c/31):Math.ceil((c-6)/30),f=t-this.toJD(l,u,1)+1;return this.newDate(l,u,f)}}),n.calendars.persian=a,n.calendars.jalali=a},{\"../main\":346,\"object-assign\":247}],343:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\"),a=n.instance();function o(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}o.prototype=new n.baseCalendar,i(o.prototype,{name:\"Taiwan\",jdEpoch:2419402.5,yearsOffset:1911,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Taiwan\",epochs:[\"BROC\",\"ROC\"],monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],dayNamesShort:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],dayNamesMin:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],digits:null,dateFormat:\"yyyy/mm/dd\",firstDay:1,isRTL:!1}},leap year:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);t=this._t2gYear(e.year());return a.leap year(t)},weekOfYear:function(t,e,r){var i=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);t=this._t2gYear(i.year());return a.weekOfYear(t,i.month(),i.day())},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(2===r.month()&&this.leap year(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=this._t2gYear(i.year());return a.toJD(t,i.month(),i.day())},fromJD:function(t){var e=a.fromJD(t),r=this._g2tYear(e.year());return this.newDate(r,e.month(),e.day())},_t2gYear:function(t){return t+this.yearsOffset+(t>=-this.yearsOffset&&t<=-1?1:0)},_g2tYear:function(t){return t-this.yearsOffset-(t>=1&&t<=this.yearsOffset?1:0)}}),n.calendars.taiwan=o},{\"../main\":346,\"object-assign\":247}],344:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\"),a=n.instance();function o(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}o.prototype=new n.baseCalendar,i(o.prototype,{name:\"Thai\",jdEpoch:1523098.5,yearsOffset:543,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Thai\",epochs:[\"BBE\",\"BE\"],monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],dayNamesShort:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],dayNamesMin:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],digits:null,dateFormat:\"dd/mm/yyyy\",firstDay:0,isRTL:!1}},leap year:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);t=this._t2gYear(e.year());return a.leap year(t)},weekOfYear:function(t,e,r){var i=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);t=this._t2gYear(i.year());return a.weekOfYear(t,i.month(),i.day())},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(2===r.month()&&this.leap year(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=this._t2gYear(i.year());return a.toJD(t,i.month(),i.day())},fromJD:function(t){var e=a.fromJD(t),r=this._g2tYear(e.year());return this.newDate(r,e.month(),e.day())},_t2gYear:function(t){return t-this.yearsOffset-(t>=1&&t<=this.yearsOffset?1:0)},_g2tYear:function(t){return t+this.yearsOffset+(t>=-this.yearsOffset&&t<=-1?1:0)}}),n.calendars.thai=o},{\"../main\":346,\"object-assign\":247}],345:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"UmmAlQura\",hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Umm al-Qura\",epochs:[\"BH\",\"AH\"],monthNames:[\"Al-Muharram\",\"Safar\",\"Rabi' al-awwal\",\"Rabi' Al-Thani\",\"Jumada Al-Awwal\",\"Jumada Al-Thani\",\"Rajab\",\"Sha'aban\",\"Ramadan\",\"Shawwal\",\"Dhu al-Qi'dah\",\"Dhu al-Hijjah\"],monthNamesShort:[\"Muh\",\"Saf\",\"Rab1\",\"Rab2\",\"Jum1\",\"Jum2\",\"Raj\",\"Sha'\",\"Ram\",\"Shaw\",\"DhuQ\",\"DhuH\"],dayNames:[\"Yawm al-Ahad\",\"Yawm al-Ithnain\",\"Yawm al-Thal\\u0101th\\u0101\\u2019\",\"Yawm al-Arba\\u2018\\u0101\\u2019\",\"Yawm al-Kham\\u012bs\",\"Yawm al-Jum\\u2018a\",\"Yawm al-Sabt\"],dayNamesMin:[\"Ah\",\"Ith\",\"Th\",\"Ar\",\"Kh\",\"Ju\",\"Sa\"],digits:null,dateFormat:\"yyyy/mm/dd\",firstDay:6,isRTL:!0}},leap year:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return 355===this.daysInYear(e.year())},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(t){for(var e=0,r=1;r<=12;r++)e+=this.daysInMonth(t,r);return e},daysInMonth:function(t,e){for(var r=this._validate(t,e,this.minDay,n.local.invalidMonth).toJD()-24e5+.5,i=0,a=0;ar)return o[i]-o[i-1];i++}return 30},weekDay:function(t,e,r){return 5!==this.dayOfWeek(t,e,r)},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate),a=12*(i.year()-1)+i.month()-15292;return i.day()+o[a-1]-1+24e5-.5},fromJD:function(t){for(var e=t-24e5+.5,r=0,n=0;ne);n++)r++;var i=r+15292,a=Math.floor((i-1)/12),s=a+1,l=i-12*a,c=e-o[r-1]+1;return this.newDate(s,l,c)},isValid:function(t,e,r){var i=n.baseCalendar.prototype.isValid.apply(this,arguments);return i&&(i=(t=null!=t.year?t.year:t)>=1276&&t<=1500),i},_validate:function(t,e,r,i){var a=n.baseCalendar.prototype._validate.apply(this,arguments);if(a.year<1276||a.year>1500)throw i.replace(/\\{0\\}/,this.local.name);return a}}),n.calendars.ummalqura=a;var o=[20,50,79,109,138,168,197,227,256,286,315,345,374,404,433,463,492,522,551,581,611,641,670,700,729,759,788,818,847,877,906,936,965,995,1024,1054,1083,1113,1142,1172,1201,1231,1260,1290,1320,1350,1379,1409,1438,1468,1497,1527,1556,1586,1615,1645,1674,1704,1733,1763,1792,1822,1851,1881,1910,1940,1969,1999,2028,2058,2087,2117,2146,2176,2205,2235,2264,2294,2323,2353,2383,2413,2442,2472,2501,2531,2560,2590,2619,2649,2678,2708,2737,2767,2796,2826,2855,2885,2914,2944,2973,3003,3032,3062,3091,3121,3150,3180,3209,3239,3268,3298,3327,3357,3386,3416,3446,3476,3505,3535,3564,3594,3623,3653,3682,3712,3741,3771,3800,3830,3859,3889,3918,3948,3977,4007,4036,4066,4095,4125,4155,4185,4214,4244,4273,4303,4332,4362,4391,4421,4450,4480,4509,4539,4568,4598,4627,4657,4686,4716,4745,4775,4804,4834,4863,4893,4922,4952,4981,5011,5040,5070,5099,5129,5158,5188,5218,5248,5277,5307,5336,5366,5395,5425,5454,5484,5513,5543,5572,5602,5631,5661,5690,5720,5749,5779,5808,5838,5867,5897,5926,5956,5985,6015,6044,6074,6103,6133,6162,6192,6221,6251,6281,6311,6340,6370,6399,6429,6458,6488,6517,6547,6576,6606,6635,6665,6694,6724,6753,6783,6812,6842,6871,6901,6930,6960,6989,7019,7048,7078,7107,7137,7166,7196,7225,7255,7284,7314,7344,7374,7403,7433,7462,7492,7521,7551,7580,7610,7639,7669,7698,7728,7757,7787,7816,7846,7875,7905,7934,7964,7993,8023,8053,8083,8112,8142,8171,8201,8230,8260,8289,8319,8348,8378,8407,8437,8466,8496,8525,8555,8584,8614,8643,8673,8702,8732,8761,8791,8821,8850,8880,8909,8938,8968,8997,9027,9056,9086,9115,9145,9175,9205,9234,9264,9293,9322,9352,9381,9410,9440,9470,9499,9529,9559,9589,9618,9648,9677,9706,9736,9765,9794,9824,9853,9883,9913,9943,9972,10002,10032,10061,10090,10120,10149,10178,10208,10237,10267,10297,10326,10356,10386,10415,10445,10474,10504,10533,10562,10592,10621,10651,10680,10710,10740,10770,10799,10829,10858,10888,10917,10947,10976,11005,11035,11064,11094,11124,11153,11183,11213,11242,11272,11301,11331,11360,11389,11419,11448,11478,11507,11537,11567,11596,11626,11655,11685,11715,11744,11774,11803,11832,11862,11891,11921,11950,11980,12010,12039,12069,12099,12128,12158,12187,12216,12246,12275,12304,12334,12364,12393,12423,12453,12483,12512,12542,12571,12600,12630,12659,12688,12718,12747,12777,12807,12837,12866,12896,12926,12955,12984,13014,13043,13072,13102,13131,13161,13191,13220,13250,13280,13310,13339,13368,13398,13427,13456,13486,13515,13545,13574,13604,13634,13664,13693,13723,13752,13782,13811,13840,13870,13899,13929,13958,13988,14018,14047,14077,14107,14136,14166,14195,14224,14254,14283,14313,14342,14372,14401,14431,14461,14490,14520,14550,14579,14609,14638,14667,14697,14726,14756,14785,14815,14844,14874,14904,14933,14963,14993,15021,15051,15081,15110,15140,15169,15199,15228,15258,15287,15317,15347,15377,15406,15436,15465,15494,15524,15553,15582,15612,15641,15671,15701,15731,15760,15790,15820,15849,15878,15908,15937,15966,15996,16025,16055,16085,16114,16144,16174,16204,16233,16262,16292,16321,16350,16380,16409,16439,16468,16498,16528,16558,16587,16617,16646,16676,16705,16734,16764,16793,16823,16852,16882,16912,16941,16971,17001,17030,17060,17089,17118,17148,17177,17207,17236,17266,17295,17325,17355,17384,17414,17444,17473,17502,17532,17561,17591,17620,17650,17679,17709,17738,17768,17798,17827,17857,17886,17916,17945,17975,18004,18034,18063,18093,18122,18152,18181,18211,18241,18270,18300,18330,18359,18388,18418,18447,18476,18506,18535,18565,18595,18625,18654,18684,18714,18743,18772,18802,18831,18860,18890,18919,18949,18979,19008,19038,19068,19098,19127,19156,19186,19215,19244,19274,19303,19333,19362,19392,19422,19452,19481,19511,19540,19570,19599,19628,19658,19687,19717,19746,19776,19806,19836,19865,19895,19924,19954,19983,20012,20042,20071,20101,20130,20160,20190,20219,20249,20279,20308,20338,20367,20396,20426,20455,20485,20514,20544,20573,20603,20633,20662,20692,20721,20751,20780,20810,20839,20869,20898,20928,20957,20987,21016,21046,21076,21105,21135,21164,21194,21223,21253,21282,21312,21341,21371,21400,21430,21459,21489,21519,21548,21578,21607,21637,21666,21696,21725,21754,21784,21813,21843,21873,21902,21932,21962,21991,22021,22050,22080,22109,22138,22168,22197,22227,22256,22286,22316,22346,22375,22405,22434,22464,22493,22522,22552,22581,22611,22640,22670,22700,22730,22759,22789,22818,22848,22877,22906,22936,22965,22994,23024,23054,23083,23113,23143,23173,23202,23232,23261,23290,23320,23349,23379,23408,23438,23467,23497,23527,23556,23586,23616,23645,23674,23704,23733,23763,23792,23822,23851,23881,23910,23940,23970,23999,24029,24058,24088,24117,24147,24176,24206,24235,24265,24294,24324,24353,24383,24413,24442,24472,24501,24531,24560,24590,24619,24648,24678,24707,24737,24767,24796,24826,24856,24885,24915,24944,24974,25003,25032,25062,25091,25121,25150,25180,25210,25240,25269,25299,25328,25358,25387,25416,25446,25475,25505,25534,25564,25594,25624,25653,25683,25712,25742,25771,25800,25830,25859,25888,25918,25948,25977,26007,26037,26067,26096,26126,26155,26184,26214,26243,26272,26302,26332,26361,26391,26421,26451,26480,26510,26539,26568,26598,26627,26656,26686,26715,26745,26775,26805,26834,26864,26893,26923,26952,26982,27011,27041,27070,27099,27129,27159,27188,27218,27248,27277,27307,27336,27366,27395,27425,27454,27484,27513,27542,27572,27602,27631,27661,27691,27720,27750,27779,27809,27838,27868,27897,27926,27956,27985,28015,28045,28074,28104,28134,28163,28193,28222,28252,28281,28310,28340,28369,28399,28428,28458,28488,28517,28547,28577,28607,28636,28665,28695,28724,28754,28783,28813,28843,28872,28901,28931,28960,28990,29019,29049,29078,29108,29137,29167,29196,29226,29255,29285,29315,29345,29375,29404,29434,29463,29492,29522,29551,29580,29610,29640,29669,29699,29729,29759,29788,29818,29847,29876,29906,29935,29964,29994,30023,30053,30082,30112,30141,30171,30200,30230,30259,30289,30318,30348,30378,30408,30437,30467,30496,30526,30555,30585,30614,30644,30673,30703,30732,30762,30791,30821,30850,30880,30909,30939,30968,30998,31027,31057,31086,31116,31145,31175,31204,31234,31263,31293,31322,31352,31381,31411,31441,31471,31500,31530,31559,31589,31618,31648,31676,31706,31736,31766,31795,31825,31854,31884,31913,31943,31972,32002,32031,32061,32090,32120,32150,32180,32209,32239,32268,32298,32327,32357,32386,32416,32445,32475,32504,32534,32563,32593,32622,32652,32681,32711,32740,32770,32799,32829,32858,32888,32917,32947,32976,33006,33035,33065,33094,33124,33153,33183,33213,33243,33272,33302,33331,33361,33390,33420,33450,33479,33509,33539,33568,33598,33627,33657,33686,33716,33745,33775,33804,33834,33863,33893,33922,33952,33981,34011,34040,34069,34099,34128,34158,34187,34217,34247,34277,34306,34336,34365,34395,34424,34454,34483,34512,34542,34571,34601,34631,34660,34690,34719,34749,34778,34808,34837,34867,34896,34926,34955,34985,35015,35044,35074,35103,35133,35162,35192,35222,35251,35280,35310,35340,35370,35399,35429,35458,35488,35517,35547,35576,35605,35635,35665,35694,35723,35753,35782,35811,35841,35871,35901,35930,35960,35989,36019,36048,36078,36107,36136,36166,36195,36225,36254,36284,36314,36343,36373,36403,36433,36462,36492,36521,36551,36580,36610,36639,36669,36698,36728,36757,36786,36816,36845,36875,36904,36934,36963,36993,37022,37052,37081,37111,37141,37170,37200,37229,37259,37288,37318,37347,37377,37406,37436,37465,37495,37524,37554,37584,37613,37643,37672,37701,37731,37760,37790,37819,37849,37878,37908,37938,37967,37997,38027,38056,38085,38115,38144,38174,38203,38233,38262,38292,38322,38351,38381,38410,38440,38469,38499,38528,38558,38587,38617,38646,38676,38705,38735,38764,38794,38823,38853,38882,38912,38941,38971,39001,39030,39059,39089,39118,39148,39178,39208,39237,39267,39297,39326,39355,39385,39414,39444,39473,39503,39532,39562,39592,39621,39650,39680,39709,39739,39768,39798,39827,39857,39886,39916,39946,39975,40005,40035,40064,40094,40123,40153,40182,40212,40241,40271,40300,40330,40359,40389,40418,40448,40477,40507,40536,40566,40595,40625,40655,40685,40714,40744,40773,40803,40832,40862,40892,40921,40951,40980,41009,41039,41068,41098,41127,41157,41186,41216,41245,41275,41304,41334,41364,41393,41422,41452,41481,41511,41540,41570,41599,41629,41658,41688,41718,41748,41777,41807,41836,41865,41894,41924,41953,41983,42012,42042,42072,42102,42131,42161,42190,42220,42249,42279,42308,42337,42367,42397,42426,42456,42485,42515,42545,42574,42604,42633,42662,42692,42721,42751,42780,42810,42839,42869,42899,42929,42958,42988,43017,43046,43076,43105,43135,43164,43194,43223,43253,43283,43312,43342,43371,43401,43430,43460,43489,43519,43548,43578,43607,43637,43666,43696,43726,43755,43785,43814,43844,43873,43903,43932,43962,43991,44021,44050,44080,44109,44139,44169,44198,44228,44258,44287,44317,44346,44375,44405,44434,44464,44493,44523,44553,44582,44612,44641,44671,44700,44730,44759,44788,44818,44847,44877,44906,44936,44966,44996,45025,45055,45084,45114,45143,45172,45202,45231,45261,45290,45320,45350,45380,45409,45439,45468,45498,45527,45556,45586,45615,45644,45674,45704,45733,45763,45793,45823,45852,45882,45911,45940,45970,45999,46028,46058,46088,46117,46147,46177,46206,46236,46265,46295,46324,46354,46383,46413,46442,46472,46501,46531,46560,46590,46620,46649,46679,46708,46738,46767,46797,46826,46856,46885,46915,46944,46974,47003,47033,47063,47092,47122,47151,47181,47210,47240,47269,47298,47328,47357,47387,47417,47446,47476,47506,47535,47565,47594,47624,47653,47682,47712,47741,47771,47800,47830,47860,47890,47919,47949,47978,48008,48037,48066,48096,48125,48155,48184,48214,48244,48273,48303,48333,48362,48392,48421,48450,48480,48509,48538,48568,48598,48627,48657,48687,48717,48746,48776,48805,48834,48864,48893,48922,48952,48982,49011,49041,49071,49100,49130,49160,49189,49218,49248,49277,49306,49336,49365,49395,49425,49455,49484,49514,49543,49573,49602,49632,49661,49690,49720,49749,49779,49809,49838,49868,49898,49927,49957,49986,50016,50045,50075,50104,50133,50163,50192,50222,50252,50281,50311,50340,50370,50400,50429,50459,50488,50518,50547,50576,50606,50635,50665,50694,50724,50754,50784,50813,50843,50872,50902,50931,50960,50990,51019,51049,51078,51108,51138,51167,51197,51227,51256,51286,51315,51345,51374,51403,51433,51462,51492,51522,51552,51582,51611,51641,51670,51699,51729,51758,51787,51816,51846,51876,51906,51936,51965,51995,52025,52054,52083,52113,52142,52171,52200,52230,52260,52290,52319,52349,52379,52408,52438,52467,52497,52526,52555,52585,52614,52644,52673,52703,52733,52762,52792,52822,52851,52881,52910,52939,52969,52998,53028,53057,53087,53116,53146,53176,53205,53235,53264,53294,53324,53353,53383,53412,53441,53471,53500,53530,53559,53589,53619,53648,53678,53708,53737,53767,53796,53825,53855,53884,53913,53943,53973,54003,54032,54062,54092,54121,54151,54180,54209,54239,54268,54297,54327,54357,54387,54416,54446,54476,54505,54535,54564,54593,54623,54652,54681,54711,54741,54770,54800,54830,54859,54889,54919,54948,54977,55007,55036,55066,55095,55125,55154,55184,55213,55243,55273,55302,55332,55361,55391,55420,55450,55479,55508,55538,55567,55597,55627,55657,55686,55716,55745,55775,55804,55834,55863,55892,55922,55951,55981,56011,56040,56070,56100,56129,56159,56188,56218,56247,56276,56306,56335,56365,56394,56424,56454,56483,56513,56543,56572,56601,56631,56660,56690,56719,56749,56778,56808,56837,56867,56897,56926,56956,56985,57015,57044,57074,57103,57133,57162,57192,57221,57251,57280,57310,57340,57369,57399,57429,57458,57487,57517,57546,57576,57605,57634,57664,57694,57723,57753,57783,57813,57842,57871,57901,57930,57959,57989,58018,58048,58077,58107,58137,58167,58196,58226,58255,58285,58314,58343,58373,58402,58432,58461,58491,58521,58551,58580,58610,58639,58669,58698,58727,58757,58786,58816,58845,58875,58905,58934,58964,58994,59023,59053,59082,59111,59141,59170,59200,59229,59259,59288,59318,59348,59377,59407,59436,59466,59495,59525,59554,59584,59613,59643,59672,59702,59731,59761,59791,59820,59850,59879,59909,59939,59968,59997,60027,60056,60086,60115,60145,60174,60204,60234,60264,60293,60323,60352,60381,60411,60440,60469,60499,60528,60558,60588,60618,60648,60677,60707,60736,60765,60795,60824,60853,60883,60912,60942,60972,61002,61031,61061,61090,61120,61149,61179,61208,61237,61267,61296,61326,61356,61385,61415,61445,61474,61504,61533,61563,61592,61621,61651,61680,61710,61739,61769,61799,61828,61858,61888,61917,61947,61976,62006,62035,62064,62094,62123,62153,62182,62212,62242,62271,62301,62331,62360,62390,62419,62448,62478,62507,62537,62566,62596,62625,62655,62685,62715,62744,62774,62803,62832,62862,62891,62921,62950,62980,63009,63039,63069,63099,63128,63157,63187,63216,63246,63275,63305,63334,63363,63393,63423,63453,63482,63512,63541,63571,63600,63630,63659,63689,63718,63747,63777,63807,63836,63866,63895,63925,63955,63984,64014,64043,64073,64102,64131,64161,64190,64220,64249,64279,64309,64339,64368,64398,64427,64457,64486,64515,64545,64574,64603,64633,64663,64692,64722,64752,64782,64811,64841,64870,64899,64929,64958,64987,65017,65047,65076,65106,65136,65166,65195,65225,65254,65283,65313,65342,65371,65401,65431,65460,65490,65520,65549,65579,65608,65638,65667,65697,65726,65755,65785,65815,65844,65874,65903,65933,65963,65992,66022,66051,66081,66110,66140,66169,66199,66228,66258,66287,66317,66346,66376,66405,66435,66465,66494,66524,66553,66583,66612,66641,66671,66700,66730,66760,66789,66819,66849,66878,66908,66937,66967,66996,67025,67055,67084,67114,67143,67173,67203,67233,67262,67292,67321,67351,67380,67409,67439,67468,67497,67527,67557,67587,67617,67646,67676,67705,67735,67764,67793,67823,67852,67882,67911,67941,67971,68e3,68030,68060,68089,68119,68148,68177,68207,68236,68266,68295,68325,68354,68384,68414,68443,68473,68502,68532,68561,68591,68620,68650,68679,68708,68738,68768,68797,68827,68857,68886,68916,68946,68975,69004,69034,69063,69092,69122,69152,69181,69211,69240,69270,69300,69330,69359,69388,69418,69447,69476,69506,69535,69565,69595,69624,69654,69684,69713,69743,69772,69802,69831,69861,69890,69919,69949,69978,70008,70038,70067,70097,70126,70156,70186,70215,70245,70274,70303,70333,70362,70392,70421,70451,70481,70510,70540,70570,70599,70629,70658,70687,70717,70746,70776,70805,70835,70864,70894,70924,70954,70983,71013,71042,71071,71101,71130,71159,71189,71218,71248,71278,71308,71337,71367,71397,71426,71455,71485,71514,71543,71573,71602,71632,71662,71691,71721,71751,71781,71810,71839,71869,71898,71927,71957,71986,72016,72046,72075,72105,72135,72164,72194,72223,72253,72282,72311,72341,72370,72400,72429,72459,72489,72518,72548,72577,72607,72637,72666,72695,72725,72754,72784,72813,72843,72872,72902,72931,72961,72991,73020,73050,73080,73109,73139,73168,73197,73227,73256,73286,73315,73345,73375,73404,73434,73464,73493,73523,73552,73581,73611,73640,73669,73699,73729,73758,73788,73818,73848,73877,73907,73936,73965,73995,74024,74053,74083,74113,74142,74172,74202,74231,74261,74291,74320,74349,74379,74408,74437,74467,74497,74526,74556,74586,74615,74645,74675,74704,74733,74763,74792,74822,74851,74881,74910,74940,74969,74999,75029,75058,75088,75117,75147,75176,75206,75235,75264,75294,75323,75353,75383,75412,75442,75472,75501,75531,75560,75590,75619,75648,75678,75707,75737,75766,75796,75826,75856,75885,75915,75944,75974,76003,76032,76062,76091,76121,76150,76180,76210,76239,76269,76299,76328,76358,76387,76416,76446,76475,76505,76534,76564,76593,76623,76653,76682,76712,76741,76771,76801,76830,76859,76889,76918,76948,76977,77007,77036,77066,77096,77125,77155,77185,77214,77243,77273,77302,77332,77361,77390,77420,77450,77479,77509,77539,77569,77598,77627,77657,77686,77715,77745,77774,77804,77833,77863,77893,77923,77952,77982,78011,78041,78070,78099,78129,78158,78188,78217,78247,78277,78307,78336,78366,78395,78425,78454,78483,78513,78542,78572,78601,78631,78661,78690,78720,78750,78779,78808,78838,78867,78897,78926,78956,78985,79015,79044,79074,79104,79133,79163,79192,79222,79251,79281,79310,79340,79369,79399,79428,79458,79487,79517,79546,79576,79606,79635,79665,79695,79724,79753,79783,79812,79841,79871,79900,79930,79960,79990]},{\"../main\":346,\"object-assign\":247}],346:[function(t,e,r){var n=t(\"object-assign\");function i(){this.regionalOptions=[],this.regionalOptions[\"\"]={invalidCalendar:\"Calendar {0} not found\",invalidDate:\"Invalid {0} date\",invalidMonth:\"Invalid {0} month\",invalidYear:\"Invalid {0} year\",differentCalendars:\"Cannot mix {0} and {1} dates\"},this.local=this.regionalOptions[\"\"],this.calendars={},this._localCals={}}function a(t,e,r,n){if(this._calendar=t,this._year=e,this._month=r,this._day=n,0===this._calendar._validateLevel&&!this._calendar.isValid(this._year,this._month,this._day))throw(c.local.invalidDate||c.regionalOptions[\"\"].invalidDate).replace(/\\{0\\}/,this._calendar.local.name)}function o(t,e){return\"000000\".substring(0,e-(t=\"\"+t).length)+t}function s(){this.shortYearCutoff=\"+10\"}function l(t){this.local=this.regionalOptions[t]||this.regionalOptions[\"\"]}n(i.prototype,{instance:function(t,e){t=(t||\"gregorian\").toLowerCase(),e=e||\"\";var r=this._localCals[t+\"-\"+e];if(!r&&this.calendars[t]&&(r=new this.calendars[t](e),this._localCals[t+\"-\"+e]=r),!r)throw(this.local.invalidCalendar||this.regionalOptions[\"\"].invalidCalendar).replace(/\\{0\\}/,t);return r},newDate:function(t,e,r,n,i){return(n=(null!=t&&t.year?t.calendar():\"string\"==typeof n?this.instance(n,i):n)||this.instance()).newDate(t,e,r)},substituteDigits:function(t){return function(e){return(e+\"\").replace(/[0-9]/g,(function(e){return t[e]}))}},substituteChineseDigits:function(t,e){return function(r){for(var n=\"\",i=0;r>0;){var a=r%10;n=(0===a?\"\":t[a]+e[i])+n,i++,r=Math.floor(r/10)}return 0===n.indexOf(t[1]+e[1])&&(n=n.substr(1)),n||t[0]}}}),n(a.prototype,{newDate:function(t,e,r){return this._calendar.newDate(null==t?this:t,e,r)},year:function(t){return 0===arguments.length?this._year:this.set(t,\"y\")},month:function(t){return 0===arguments.length?this._month:this.set(t,\"m\")},day:function(t){return 0===arguments.length?this._day:this.set(t,\"d\")},date:function(t,e,r){if(!this._calendar.isValid(t,e,r))throw(c.local.invalidDate||c.regionalOptions[\"\"].invalidDate).replace(/\\{0\\}/,this._calendar.local.name);return this._year=t,this._month=e,this._day=r,this},leap year:function(){return this._calendar.leap year(this)},epoch:function(){return this._calendar.epoch(this)},formatYear:function(){return this._calendar.formatYear(this)},monthOfYear:function(){return this._calendar.monthOfYear(this)},weekOfYear:function(){return this._calendar.weekOfYear(this)},daysInYear:function(){return this._calendar.daysInYear(this)},dayOfYear:function(){return this._calendar.dayOfYear(this)},daysInMonth:function(){return this._calendar.daysInMonth(this)},dayOfWeek:function(){return this._calendar.dayOfWeek(this)},weekDay:function(){return this._calendar.weekDay(this)},extraInfo:function(){return this._calendar.extraInfo(this)},add:function(t,e){return this._calendar.add(this,t,e)},set:function(t,e){return this._calendar.set(this,t,e)},compareTo:function(t){if(this._calendar.name!==t._calendar.name)throw(c.local.differentCalendars||c.regionalOptions[\"\"].differentCalendars).replace(/\\{0\\}/,this._calendar.local.name).replace(/\\{1\\}/,t._calendar.local.name);var e=this._year!==t._year?this._year-t._year:this._month!==t._month?this.monthOfYear()-t.monthOfYear():this._day-t._day;return 0===e?0:e<0?-1:1},calendar:function(){return this._calendar},toJD:function(){return this._calendar.toJD(this)},fromJD:function(t){return this._calendar.fromJD(t)},toJSDate:function(){return this._calendar.toJSDate(this)},fromJSDate:function(t){return this._calendar.fromJSDate(t)},toString:function(){return(this.year()<0?\"-\":\"\")+o(Math.abs(this.year()),4)+\"-\"+o(this.month(),2)+\"-\"+o(this.day(),2)}}),n(s.prototype,{_validateLevel:0,newDate:function(t,e,r){return null==t?this.today():(t.year&&(this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate),r=t.day(),e=t.month(),t=t.year()),new a(this,t,e,r))},today:function(){return this.fromJSDate(new Date)},epoch:function(t){return this._validate(t,this.minMonth,this.minDay,c.local.invalidYear||c.regionalOptions[\"\"].invalidYear).year()<0?this.local.epochs[0]:this.local.epochs[1]},formatYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,c.local.invalidYear||c.regionalOptions[\"\"].invalidYear);return(e.year()<0?\"-\":\"\")+o(Math.abs(e.year()),4)},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,c.local.invalidYear||c.regionalOptions[\"\"].invalidYear),12},monthOfYear:function(t,e){var r=this._validate(t,e,this.minDay,c.local.invalidMonth||c.regionalOptions[\"\"].invalidMonth);return(r.month()+this.monthsInYear(r)-this.firstMonth)%this.monthsInYear(r)+this.minMonth},fromMonthOfYear:function(t,e){var r=(e+this.firstMonth-2*this.minMonth)%this.monthsInYear(t)+this.minMonth;return this._validate(t,r,this.minDay,c.local.invalidMonth||c.regionalOptions[\"\"].invalidMonth),r},daysInYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,c.local.invalidYear||c.regionalOptions[\"\"].invalidYear);return this.leap year(e)?366:365},dayOfYear:function(t,e,r){var n=this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate);return n.toJD()-this.newDate(n.year(),this.fromMonthOfYear(n.year(),this.minMonth),this.minDay).toJD()+1},daysInWeek:function(){return 7},dayOfWeek:function(t,e,r){var n=this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate);return(Math.floor(this.toJD(n))+2)%this.daysInWeek()},extraInfo:function(t,e,r){return this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate),{}},add:function(t,e,r){return this._validate(t,this.minMonth,this.minDay,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate),this._correctAdd(t,this._add(t,e,r),e,r)},_add:function(t,e,r){if(this._validateLevel++,\"d\"===r||\"w\"===r){var n=t.toJD()+e*(\"w\"===r?this.daysInWeek():1),i=t.calendar().fromJD(n);return this._validateLevel--,[i.year(),i.month(),i.day()]}try{var a=t.year()+(\"y\"===r?e:0),o=t.monthOfYear()+(\"m\"===r?e:0);i=t.day();\"y\"===r?(t.month()!==this.fromMonthOfYear(a,o)&&(o=this.newDate(a,t.month(),this.minDay).monthOfYear()),o=Math.min(o,this.monthsInYear(a)),i=Math.min(i,this.daysInMonth(a,this.fromMonthOfYear(a,o)))):\"m\"===r&&(!function(t){for(;oe-1+t.minMonth;)a++,o-=e,e=t.monthsInYear(a)}(this),i=Math.min(i,this.daysInMonth(a,this.fromMonthOfYear(a,o))));var s=[a,this.fromMonthOfYear(a,o),i];return this._validateLevel--,s}catch(t){throw this._validateLevel--,t}},_correctAdd:function(t,e,r,n){if(!(this.hasYearZero||\"y\"!==n&&\"m\"!==n||0!==e[0]&&t.year()>0==e[0]>0)){var i={y:[1,1,\"y\"],m:[1,this.monthsInYear(-1),\"m\"],w:[this.daysInWeek(),this.daysInYear(-1),\"d\"],d:[1,this.daysInYear(-1),\"d\"]}[n],a=r<0?-1:1;e=this._add(t,r*i[0]+a*i[1],i[2])}return t.date(e[0],e[1],e[2])},set:function(t,e,r){this._validate(t,this.minMonth,this.minDay,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate);var n=\"y\"===r?e:t.year(),i=\"m\"===r?e:t.month(),a=\"d\"===r?e:t.day();return\"y\"!==r&&\"m\"!==r||(a=Math.min(a,this.daysInMonth(n,i))),t.date(n,i,a)},isValid:function(t,e,r){this._validateLevel++;var n=this.hasYearZero||0!==t;if(n){var i=this.newDate(t,e,this.minDay);n=e>=this.minMonth&&e-this.minMonth=this.minDay&&r-this.minDay13.5?13:1),c=i-(l>2.5?4716:4715);return c<=0&&c--,this.newDate(c,l,s)},toJSDate:function(t,e,r){var n=this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate),i=new Date(n.year(),n.month()-1,n.day());return i.setHours(0),i.setMinutes(0),i.setSeconds(0),i.setMilliseconds(0),i.setHours(i.getHours()>12?i.getHours()+2:0),i},fromJSDate:function(t){return this.newDate(t.getFullYear(),t.getMonth()+1,t.getDate())}});var c=e.exports=new i;c.cdate=a,c.baseCalendar=s,c.calendars.gregorian=l},{\"object-assign\":247}],347:[function(t,e,r){var n=t(\"object-assign\"),i=t(\"./main\");n(i.regionalOptions[\"\"],{invalidArguments:\"Invalid arguments\",invalidFormat:\"Cannot format a date from another calendar\",missingNumberAt:\"Missing number at position {0}\",unknownNameAt:\"Unknown name at position {0}\",unexpectedLiteralAt:\"Unexpected literal at position {0}\",unexpectedText:\"Additional text found at end\"}),i.local=i.regionalOptions[\"\"],n(i.cdate.prototype,{formatDate:function(t,e){return\"string\"!=typeof t&&(e=t,t=\"\"),this._calendar.formatDate(t||\"\",this,e)}}),n(i.baseCalendar.prototype,{UNIX_EPOCH:i.instance().newDate(1970,1,1).toJD(),SECS_PER_DAY:86400,TICKS_EPOCH:i.instance().jdEpoch,TICKS_PER_DAY:864e9,ATOM:\"yyyy-mm-dd\",COOKIE:\"D, dd M yyyy\",FULL:\"DD, MM d, yyyy\",ISO_8601:\"yyyy-mm-dd\",JULIAN:\"J\",RFC_822:\"D, d M yy\",RFC_850:\"DD, dd-M-yy\",RFC_1036:\"D, d M yy\",RFC_1123:\"D, d M yyyy\",RFC_2822:\"D, d M yyyy\",RSS:\"D, d M yy\",TICKS:\"!\",TIMESTAMP:\"@\",W3C:\"yyyy-mm-dd\",formatDate:function(t,e,r){if(\"string\"!=typeof t&&(r=e,e=t,t=\"\"),!e)return\"\";if(e.calendar()!==this)throw i.local.invalidFormat||i.regionalOptions[\"\"].invalidFormat;t=t||this.local.dateFormat;for(var n,a,o,s,l=(r=r||{}).dayNamesShort||this.local.dayNamesShort,c=r.dayNames||this.local.dayNames,u=r.monthNumbers||this.local.monthNumbers,f=r.monthNamesShort||this.local.monthNamesShort,h=r.monthNames||this.local.monthNames,p=(r.calculateWeek||this.local.calculateWeek,function(e,r){for(var n=1;w+n1}),d=function(t,e,r,n){var i=\"\"+e;if(p(t,n))for(;i.length1},x=function(t,r){var n=y(t,r),a=[2,3,n?4:2,n?4:2,10,11,20][\"oyYJ@!\".indexOf(t)+1],o=new RegExp(\"^-?\\\\d{1,\"+a+\"}\"),s=e.substring(A).match(o);if(!s)throw(i.local.missingNumberAt||i.regionalOptions[\"\"].missingNumberAt).replace(/\\{0\\}/,A);return A+=s[0].length,parseInt(s[0],10)},b=this,_=function(){if(\"function\"==typeof l){y(\"m\");var t=l.call(b,e.substring(A));return A+=t.length,t}return x(\"m\")},w=function(t,r,n,a){for(var o=y(t,a)?n:r,s=0;s-1){p=1,d=g;for(var E=this.daysInMonth(h,p);d>E;E=this.daysInMonth(h,p))p++,d-=E}return f>-1?this.fromJD(f):this.newDate(h,p,d)},determineDate:function(t,e,r,n,i){r&&\"object\"!=typeof r&&(i=n,n=r,r=null),\"string\"!=typeof n&&(i=n,n=\"\");var a=this;return e=e?e.newDate():null,t=null==t?e:\"string\"==typeof t?function(t){try{return a.parseDate(n,t,i)}catch(t){}for(var e=((t=t.toLowerCase()).match(/^c/)&&r?r.newDate():null)||a.today(),o=/([+-]?[0-9]+)\\s*(d|w|m|y)?/g,s=o.exec(t);s;)e.add(parseInt(s[1],10),s[2]||\"d\"),s=o.exec(t);return e}(t):\"number\"==typeof t?isNaN(t)||t===1/0||t===-1/0?e:a.today().add(t,\"d\"):a.newDate(t)}})},{\"./main\":346,\"object-assign\":247}],348:[function(t,e,r){\"use strict\";e.exports=[{path:\"\",backoff:0},{path:\"M-2.4,-3V3L0.6,0Z\",backoff:.6},{path:\"M-3.7,-2.5V2.5L1.3,0Z\",backoff:1.3},{path:\"M-4.45,-3L-1.65,-0.2V0.2L-4.45,3L1.55,0Z\",backoff:1.55},{path:\"M-2.2,-2.2L-0.2,-0.2V0.2L-2.2,2.2L-1.4,3L1.6,0L-1.4,-3Z\",backoff:1.6},{path:\"M-4.4,-2.1L-0.6,-0.2V0.2L-4.4,2.1L-4,3L2,0L-4,-3Z\",backoff:2},{path:\"M2,0A2,2 0 1,1 0,-2A2,2 0 0,1 2,0Z\",backoff:0,noRotate:!0},{path:\"M2,2V-2H-2V2Z\",backoff:0,noRotate:!0}]},{}],349:[function(t,e,r){\"use strict\";var n=t(\"./arrow_paths\"),i=t(\"../../plots/font_attributes\"),a=t(\"../../plots/cartesian/constants\"),o=t(\"../../plot_api/plot_template\").templatedArray;t(\"../../constants/axis_placeable_objects\");e.exports=o(\"annotation\",{visible:{valType:\"boolean\",dflt:!0,editType:\"calc+arraydraw\"},text:{valType:\"string\",editType:\"calc+arraydraw\"},textangle:{valType:\"angle\",dflt:0,editType:\"calc+arraydraw\"},font:i({editType:\"calc+arraydraw\",colorEditType:\"arraydraw\"}),width:{valType:\"number\",min:1,dflt:null,editType:\"calc+arraydraw\"},height:{valType:\"number\",min:1,dflt:null,editType:\"calc+arraydraw\"},opacity:{valType:\"number\",min:0,max:1,dflt:1,editType:\"arraydraw\"},align:{valType:\"enumerated\",values:[\"left\",\"center\",\"right\"],dflt:\"center\",editType:\"arraydraw\"},valign:{valType:\"enumerated\",values:[\"top\",\"middle\",\"bottom\"],dflt:\"middle\",editType:\"arraydraw\"},bgcolor:{valType:\"color\",dflt:\"rgba(0,0,0,0)\",editType:\"arraydraw\"},bordercolor:{valType:\"color\",dflt:\"rgba(0,0,0,0)\",editType:\"arraydraw\"},borderpad:{valType:\"number\",min:0,dflt:1,editType:\"calc+arraydraw\"},borderwidth:{valType:\"number\",min:0,dflt:1,editType:\"calc+arraydraw\"},showarrow:{valType:\"boolean\",dflt:!0,editType:\"calc+arraydraw\"},arrowcolor:{valType:\"color\",editType:\"arraydraw\"},arrowhead:{valType:\"integer\",min:0,max:n.length,dflt:1,editType:\"arraydraw\"},startarrowhead:{valType:\"integer\",min:0,max:n.length,dflt:1,editType:\"arraydraw\"},arrowside:{valType:\"flaglist\",flags:[\"end\",\"start\"],extras:[\"none\"],dflt:\"end\",editType:\"arraydraw\"},arrowsize:{valType:\"number\",min:.3,dflt:1,editType:\"calc+arraydraw\"},startarrowsize:{valType:\"number\",min:.3,dflt:1,editType:\"calc+arraydraw\"},arrowwidth:{valType:\"number\",min:.1,editType:\"calc+arraydraw\"},standoff:{valType:\"number\",min:0,dflt:0,editType:\"calc+arraydraw\"},startstandoff:{valType:\"number\",min:0,dflt:0,editType:\"calc+arraydraw\"},ax:{valType:\"any\",editType:\"calc+arraydraw\"},ay:{valType:\"any\",editType:\"calc+arraydraw\"},axref:{valType:\"enumerated\",dflt:\"pixel\",values:[\"pixel\",a.idRegex.x.toString()],editType:\"calc\"},ayref:{valType:\"enumerated\",dflt:\"pixel\",values:[\"pixel\",a.idRegex.y.toString()],editType:\"calc\"},xref:{valType:\"enumerated\",values:[\"paper\",a.idRegex.x.toString()],editType:\"calc\"},x:{valType:\"any\",editType:\"calc+arraydraw\"},xanchor:{valType:\"enumerated\",values:[\"auto\",\"left\",\"center\",\"right\"],dflt:\"auto\",editType:\"calc+arraydraw\"},xshift:{valType:\"number\",dflt:0,editType:\"calc+arraydraw\"},yref:{valType:\"enumerated\",values:[\"paper\",a.idRegex.y.toString()],editType:\"calc\"},y:{valType:\"any\",editType:\"calc+arraydraw\"},yanchor:{valType:\"enumerated\",values:[\"auto\",\"top\",\"middle\",\"bottom\"],dflt:\"auto\",editType:\"calc+arraydraw\"},yshift:{valType:\"number\",dflt:0,editType:\"calc+arraydraw\"},clicktoshow:{valType:\"enumerated\",values:[!1,\"onoff\",\"onout\"],dflt:!1,editType:\"arraydraw\"},xclick:{valType:\"any\",editType:\"arraydraw\"},yclick:{valType:\"any\",editType:\"arraydraw\"},hovertext:{valType:\"string\",editType:\"arraydraw\"},hoverlabel:{bgcolor:{valType:\"color\",editType:\"arraydraw\"},bordercolor:{valType:\"color\",editType:\"arraydraw\"},font:i({editType:\"arraydraw\"}),editType:\"arraydraw\"},captureevents:{valType:\"boolean\",editType:\"arraydraw\"},editType:\"calc\",_deprecated:{ref:{valType:\"string\",editType:\"calc\"}}})},{\"../../constants/axis_placeable_objects\":472,\"../../plot_api/plot_template\":543,\"../../plots/cartesian/constants\":561,\"../../plots/font_attributes\":585,\"./arrow_paths\":348}],350:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"./draw\").draw;function o(t){var e=t._fullLayout;n.filterVisible(e.annotations).forEach((function(e){var r=i.getFromId(t,e.xref),n=i.getFromId(t,e.yref),a=i.getRefType(e.xref),o=i.getRefType(e.yref);e._extremes={},\"range\"===a&&s(e,r),\"range\"===o&&s(e,n)}))}function s(t,e){var r,n=e._id,a=n.charAt(0),o=t[a],s=t[\"a\"+a],l=t[a+\"ref\"],c=t[\"a\"+a+\"ref\"],u=t[\"_\"+a+\"padplus\"],f=t[\"_\"+a+\"padminus\"],h={x:1,y:-1}[a]*t[a+\"shift\"],p=3*t.arrowsize*t.arrowwidth||0,d=p+h,g=p-h,m=3*t.startarrowsize*t.arrowwidth||0,v=m+h,y=m-h;if(c===l){var x=i.findExtremes(e,[e.r2c(o)],{ppadplus:d,ppadminus:g}),b=i.findExtremes(e,[e.r2c(s)],{ppadplus:Math.max(u,v),ppadminus:Math.max(f,y)});r={min:[x.min[0],b.min[0]],max:[x.max[0],b.max[0]]}}else v=s?v+s:v,y=s?y-s:y,r=i.findExtremes(e,[e.r2c(o)],{ppadplus:Math.max(u,d,v),ppadminus:Math.max(f,g,y)});t._extremes[n]=r}e.exports=function(t){var e=t._fullLayout;if(n.filterVisible(e.annotations).length&&t._fullData.length)return n.syncOrAsync([a,o],t)}},{\"../../lib\":503,\"../../plots/cartesian/axes\":554,\"./draw\":355}],351:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../registry\"),a=t(\"../../plot_api/plot_template\").arrayEditor;function o(t,e){var r,n,i,a,o,l,c,u=t._fullLayout.annotations,f=[],h=[],p=[],d=(e||[]).length;for(r=0;r0||r.explicitOff.length>0},onClick:function(t,e){var r,s,l=o(t,e),c=l.on,u=l.off.concat(l.explicitOff),f={},h=t._fullLayout.annotations;if(!c.length&&!u.length)return;for(r=0;r2/3?\"right\":\"center\"),{center:0,middle:0,left:.5,bottom:-.5,right:-.5,top:.5}[e]}for(var W=!1,X=[\"x\",\"y\"],Z=0;Z1)&&(nt===rt?((pt=it.r2fraction(e[\"a\"+et]))<0||pt>1)&&(W=!0):W=!0),J=it._offset+it.r2p(e[et]),$=.5}else{var dt=\"domain\"===ht;\"x\"===et?(Q=e[et],J=dt?it._offset+it._length*Q:J=T.l+T.w*Q):(Q=1-e[et],J=dt?it._offset+it._length*Q:J=T.t+T.h*Q),$=e.showarrow?.5:Q}if(e.showarrow){ft.head=J;var gt=e[\"a\"+et];if(tt=ot*q(.5,e.xanchor)-st*q(.5,e.yanchor),nt===rt){var mt=l.getRefType(nt);\"domain\"===mt?(\"y\"===et&&(gt=1-gt),ft.tail=it._offset+it._length*gt):\"paper\"===mt?\"y\"===et?(gt=1-gt,ft.tail=T.t+T.h*gt):ft.tail=T.l+T.w*gt:ft.tail=it._offset+it.r2p(gt),K=tt}else ft.tail=J+gt,K=tt+gt;ft.text=ft.tail+tt;var vt=w[\"x\"===et?\"width\":\"height\"];if(\"paper\"===rt&&(ft.head=o.constrain(ft.head,1,vt-1)),\"pixel\"===nt){var yt=-Math.max(ft.tail-3,ft.text),xt=Math.min(ft.tail+3,ft.text)-vt;yt>0?(ft.tail+=yt,ft.text+=yt):xt>0&&(ft.tail-=xt,ft.text-=xt)}ft.tail+=ut,ft.head+=ut}else K=tt=lt*q($,ct),ft.text=J+tt;ft.text+=ut,tt+=ut,K+=ut,e[\"_\"+et+\"padplus\"]=lt/2+K,e[\"_\"+et+\"padminus\"]=lt/2-K,e[\"_\"+et+\"size\"]=lt,e[\"_\"+et+\"shift\"]=tt}if(W)R.remove();else{var bt=0,_t=0;if(\"left\"!==e.align&&(bt=(A-b)*(\"center\"===e.align?.5:1)),\"top\"!==e.valign&&(_t=(D-_)*(\"middle\"===e.valign?.5:1)),f)n.select(\"svg\").attr({x:N+bt-1,y:N+_t}).call(u.setClipUrl,U?L:null,t);else{var wt=N+_t-g.top,Tt=N+bt-g.left;G.call(h.positionText,Tt,wt).call(u.setClipUrl,U?L:null,t)}V.select(\"rect\").call(u.setRect,N,N,A,D),j.call(u.setRect,F/2,F/2,B-F,H-F),R.call(u.setTranslate,Math.round(C.x.text-B/2),Math.round(C.y.text-H/2)),O.attr({transform:\"rotate(\"+P+\",\"+C.x.text+\",\"+C.y.text+\")\"});var kt,At=function(r,n){I.selectAll(\".annotation-arrow-g\").remove();var l=C.x.head,f=C.y.head,h=C.x.tail+r,p=C.y.tail+n,g=C.x.text+r,b=C.y.text+n,_=o.rotationXYMatrix(P,g,b),w=o.apply2DTransform(_),A=o.apply2DTransform2(_),L=+j.attr(\"width\"),z=+j.attr(\"height\"),D=g-.5*L,F=D+L,B=b-.5*z,N=B+z,U=[[D,B,D,N],[D,N,F,N],[F,N,F,B],[F,B,D,B]].map(A);if(!U.reduce((function(t,e){return t^!!o.segmentsIntersect(l,f,l+1e6,f+1e6,e[0],e[1],e[2],e[3])}),!1)){U.forEach((function(t){var e=o.segmentsIntersect(h,p,l,f,t[0],t[1],t[2],t[3]);e&&(h=e.x,p=e.y)}));var V=e.arrowwidth,H=e.arrowcolor,q=e.arrowside,G=I.append(\"g\").style({opacity:c.opacity(H)}).classed(\"annotation-arrow-g\",!0),Y=G.append(\"path\").attr(\"d\",\"M\"+h+\",\"+p+\"L\"+l+\",\"+f).style(\"stroke-width\",V+\"px\").call(c.stroke,c.rgb(H));if(m(Y,q,e),k.annotationPosition&&Y.node().parentNode&&!a){var W=l,X=f;if(e.standoff){var Z=Math.sqrt(Math.pow(l-h,2)+Math.pow(f-p,2));W+=e.standoff*(h-l)/Z,X+=e.standoff*(p-f)/Z}var J,K,Q=G.append(\"path\").classed(\"annotation-arrow\",!0).classed(\"anndrag\",!0).classed(\"cursor-move\",!0).attr({d:\"M3,3H-3V-3H3ZM0,0L\"+(h-W)+\",\"+(p-X),transform:s(W,X)}).style(\"stroke-width\",V+6+\"px\").call(c.stroke,\"rgba(0,0,0,0)\").call(c.fill,\"rgba(0,0,0,0)\");d.init({element:Q.node(),gd:t,prepFn:function(){var t=u.getTranslate(R);J=t.x,K=t.y,v&&v.autorange&&M(v._name+\".autorange\",!0),x&&x.autorange&&M(x._name+\".autorange\",!0)},moveFn:function(t,r){var n=w(J,K),i=n[0]+t,a=n[1]+r;R.call(u.setTranslate,i,a),S(\"x\",y(v,t,\"x\",T,e)),S(\"y\",y(x,r,\"y\",T,e)),e.axref===e.xref&&S(\"ax\",y(v,t,\"ax\",T,e)),e.ayref===e.yref&&S(\"ay\",y(x,r,\"ay\",T,e)),G.attr(\"transform\",s(t,r)),O.attr({transform:\"rotate(\"+P+\",\"+i+\",\"+a+\")\"})},doneFn:function(){i.call(\"_guiRelayout\",t,E());var e=document.querySelector(\".js-notes-box-panel\");e&&e.redraw(e.selectedObj)}})}}};if(e.showarrow&&At(0,0),z)d.init({element:R.node(),gd:t,prepFn:function(){kt=O.attr(\"transform\")},moveFn:function(t,r){var n=\"pointer\";if(e.showarrow)e.axref===e.xref?S(\"ax\",y(v,t,\"ax\",T,e)):S(\"ax\",e.ax+t),e.ayref===e.yref?S(\"ay\",y(x,r,\"ay\",T.w,e)):S(\"ay\",e.ay+r),At(t,r);else{if(a)return;var i,o;if(v)i=y(v,t,\"x\",T,e);else{var l=e._xsize/T.w,c=e.x+(e._xshift-e.xshift)/T.w-l/2;i=d.align(c+t/T.w,l,0,1,e.xanchor)}if(x)o=y(x,r,\"y\",T,e);else{var u=e._ysize/T.h,f=e.y-(e._yshift+e.yshift)/T.h-u/2;o=d.align(f-r/T.h,u,0,1,e.yanchor)}S(\"x\",i),S(\"y\",o),v&&x||(n=d.getCursor(v?.5:i,x?.5:o,e.xanchor,e.yanchor))}O.attr({transform:s(t,r)+kt}),p(R,n)},clickFn:function(r,n){e.captureevents&&t.emit(\"plotly_clickannotation\",Y(n))},doneFn:function(){p(R),i.call(\"_guiRelayout\",t,E());var e=document.querySelector(\".js-notes-box-panel\");e&&e.redraw(e.selectedObj)}})}}}e.exports={draw:function(t){var e=t._fullLayout;e._infolayer.selectAll(\".annotation\").remove();for(var r=0;r=0,x=e.indexOf(\"end\")>=0,b=d.backoff*m+r.standoff,_=g.backoff*v+r.startstandoff;if(\"line\"===p.nodeName){o={x:+t.attr(\"x1\"),y:+t.attr(\"y1\")},u={x:+t.attr(\"x2\"),y:+t.attr(\"y2\")};var w=o.x-u.x,T=o.y-u.y;if(h=(f=Math.atan2(T,w))+Math.PI,b&&_&&b+_>Math.sqrt(w*w+T*T))return void z();if(b){if(b*b>w*w+T*T)return void z();var k=b*Math.cos(f),A=b*Math.sin(f);u.x+=k,u.y+=A,t.attr({x2:u.x,y2:u.y})}if(_){if(_*_>w*w+T*T)return void z();var M=_*Math.cos(f),S=_*Math.sin(f);o.x-=M,o.y-=S,t.attr({x1:o.x,y1:o.y})}}else if(\"path\"===p.nodeName){var E=p.getTotalLength(),L=\"\";if(E1){c=!0;break}}c?t.fullLayout._infolayer.select(\".annotation-\"+t.id+'[data-index=\"'+s+'\"]').remove():(l._pdata=i(t.glplot.cameraParams,[e.xaxis.r2l(l.x)*r[0],e.yaxis.r2l(l.y)*r[1],e.zaxis.r2l(l.z)*r[2]]),n(t.graphDiv,l,s,t.id,l._xa,l._ya))}}},{\"../../plots/gl3d/project\":607,\"../annotations/draw\":355}],362:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\");e.exports={moduleType:\"component\",name:\"annotations3d\",schema:{subplots:{scene:{annotations:t(\"./attributes\")}}},layoutAttributes:t(\"./attributes\"),handleDefaults:t(\"./defaults\"),includeBasePlot:function(t,e){var r=n.subplotsRegistry.gl3d;if(!r)return;for(var a=r.attrRegex,o=Object.keys(t),s=0;s=0))return t;if(3===o)n[o]>1&&(n[o]=1);else if(n[o]>=1)return t}var s=Math.round(255*n[0])+\", \"+Math.round(255*n[1])+\", \"+Math.round(255*n[2]);return a?\"rgba(\"+s+\", \"+n[3]+\")\":\"rgb(\"+s+\")\"}o.tinyRGB=function(t){var e=t.toRgb();return\"rgb(\"+Math.round(e.r)+\", \"+Math.round(e.g)+\", \"+Math.round(e.b)+\")\"},o.rgb=function(t){return o.tinyRGB(n(t))},o.opacity=function(t){return t?n(t).getAlpha():0},o.addOpacity=function(t,e){var r=n(t).toRgb();return\"rgba(\"+Math.round(r.r)+\", \"+Math.round(r.g)+\", \"+Math.round(r.b)+\", \"+e+\")\"},o.combine=function(t,e){var r=n(t).toRgb();if(1===r.a)return n(t).toRgbString();var i=n(e||c).toRgb(),a=1===i.a?i:{r:255*(1-i.a)+i.r*i.a,g:255*(1-i.a)+i.g*i.a,b:255*(1-i.a)+i.b*i.a},o={r:a.r*(1-r.a)+r.r*r.a,g:a.g*(1-r.a)+r.g*r.a,b:a.b*(1-r.a)+r.b*r.a};return n(o).toRgbString()},o.contrast=function(t,e,r){var i=n(t);return 1!==i.getAlpha()&&(i=n(o.combine(t,c))),(i.isDark()?e?i.lighten(e):c:r?i.darken(r):l).toString()},o.stroke=function(t,e){var r=n(e);t.style({stroke:o.tinyRGB(r),\"stroke-opacity\":r.getAlpha()})},o.fill=function(t,e){var r=n(e);t.style({fill:o.tinyRGB(r),\"fill-opacity\":r.getAlpha()})},o.clean=function(t){if(t&&\"object\"==typeof t){var e,r,n,i,s=Object.keys(t);for(e=0;e0?n>=l:n<=l));i++)n>u&&n0?n>=l:n<=l));i++)n>r[0]&&n1){var ct=Math.pow(10,Math.floor(Math.log(lt)/Math.LN10));ot*=ct*c.roundUp(lt/ct,[2,5,10]),(Math.abs(q.start)/q.size+1e-6)%1<2e-6&&(it.tick0=0)}it.dtick=ot}it.domain=o?[rt+I/R.h,rt+K-I/R.h]:[rt+P/R.w,rt+K-P/R.w],it.setScale(),t.attr(\"transform\",u(Math.round(R.l),Math.round(R.t)));var ut,ft=t.select(\".\"+A.cbtitleunshift).attr(\"transform\",u(-Math.round(R.l),-Math.round(R.t))),ht=it.ticklabelposition,pt=it.title.font.size,dt=t.select(\".\"+A.cbaxis),gt=0,mt=0;function vt(n,i){var a={propContainer:it,propName:e._propPrefix+\"title\",traceIndex:e._traceIndex,_meta:e._meta,placeholder:D._dfltTitle.colorbar,containerGroup:t.select(\".\"+A.cbtitle)},o=\"h\"===n.charAt(0)?n.substr(1):\"h\"+n;t.selectAll(\".\"+o+\",.\"+o+\"-math-group\").remove(),g.draw(r,n,f(a,i||{}))}return c.syncOrAsync([a.previousPromises,function(){var t,e;(o&&at||!o&&!at)&&(\"top\"===j&&(t=P+R.l+R.w*O,e=I+R.t+R.h*(1-rt-K)+3+.75*pt),\"bottom\"===j&&(t=P+R.l+R.w*O,e=I+R.t+R.h*(1-rt)-3-.25*pt),\"right\"===j&&(e=I+R.t+R.h*z+3+.75*pt,t=P+R.l+R.w*rt),vt(it._id+\"title\",{attributes:{x:t,y:e,\"text-anchor\":o?\"start\":\"middle\"}}))},function(){if(!o&&!at||o&&at){var a,l=t.select(\".\"+A.cbtitle),f=l.select(\"text\"),h=[-M/2,M/2],d=l.select(\".h\"+it._id+\"title-math-group\").node(),g=15.6;if(f.node()&&(g=parseInt(f.node().style.fontSize,10)*w),d?(a=p.bBox(d),mt=a.width,(gt=a.height)>g&&(h[1]-=(gt-g)/2)):f.node()&&!f.classed(A.jsPlaceholder)&&(a=p.bBox(f.node()),mt=a.width,gt=a.height),o){if(gt){if(gt+=5,\"top\"===j)it.domain[1]-=gt/R.h,h[1]*=-1;else{it.domain[0]+=gt/R.h;var v=m.lineCount(f);h[1]+=(1-v)*g}l.attr(\"transform\",u(h[0],h[1])),it.setScale()}}else mt&&(\"right\"===j&&(it.domain[0]+=(mt+pt/2)/R.w),l.attr(\"transform\",u(h[0],h[1])),it.setScale())}t.selectAll(\".\"+A.cbfills+\",.\"+A.cblines).attr(\"transform\",o?u(0,Math.round(R.h*(1-it.domain[1]))):u(Math.round(R.w*it.domain[0]),0)),dt.attr(\"transform\",o?u(0,Math.round(-R.t)):u(Math.round(-R.l),0));var y=t.select(\".\"+A.cbfills).selectAll(\"rect.\"+A.cbfill).attr(\"style\",\"\").data(Y);y.enter().append(\"rect\").classed(A.cbfill,!0).style(\"stroke\",\"none\"),y.exit().remove();var x=U.map(it.c2p).map(Math.round).sort((function(t,e){return t-e}));y.each((function(t,a){var s=[0===a?U[0]:(Y[a]+Y[a-1])/2,a===Y.length-1?U[1]:(Y[a]+Y[a+1])/2].map(it.c2p).map(Math.round);o&&(s[1]=c.constrain(s[1]+(s[1]>s[0])?1:-1,x[0],x[1]));var l=n.select(this).attr(o?\"x\":\"y\",Q).attr(o?\"y\":\"x\",n.min(s)).attr(o?\"width\":\"height\",Math.max(X,2)).attr(o?\"height\":\"width\",Math.max(n.max(s)-n.min(s),2));if(e._fillgradient)p.gradient(l,r,e._id,o?\"vertical\":\"horizontalreversed\",e._fillgradient,\"fill\");else{var u=H(t).replace(\"e-\",\"\");l.attr(\"fill\",i(u).toHexString())}}));var b=t.select(\".\"+A.cblines).selectAll(\"path.\"+A.cbline).data(B.color&&B.width?W:[]);b.enter().append(\"path\").classed(A.cbline,!0),b.exit().remove(),b.each((function(t){var e=Q,r=Math.round(it.c2p(t))+B.width/2%1;n.select(this).attr(\"d\",\"M\"+(o?e+\",\"+r:r+\",\"+e)+(o?\"h\":\"v\")+X).call(p.lineGroupStyle,B.width,V(t),B.dash)})),dt.selectAll(\"g.\"+it._id+\"tick,path\").remove();var _=Q+X+(M||0)/2-(\"outside\"===e.ticks?1:0),T=s.calcTicks(it),k=s.getTickSigns(it)[2];return s.drawTicks(r,it,{vals:\"inside\"===it.ticks?s.clipEnds(it,T):T,layer:dt,path:s.makeTickPath(it,_,k),transFn:s.makeTransTickFn(it)}),s.drawLabels(r,it,{vals:T,layer:dt,transFn:s.makeTransTickLabelFn(it),labelFns:s.makeLabelFns(it,_)})},function(){if(o&&!at||!o&&at){var t,i,a=it.position||0,s=it._offset+it._length/2;if(\"right\"===j)i=s,t=R.l+R.w*a+10+pt*(it.showticklabels?1:.5);else if(t=s,\"bottom\"===j&&(i=R.t+R.h*a+10+(-1===ht.indexOf(\"inside\")?it.tickfont.size:0)+(\"intside\"!==it.ticks&&e.ticklen||0)),\"top\"===j){var l=N.text.split(\"
\").length;i=R.t+R.h*a+10-X-w*pt*l}vt((o?\"h\":\"v\")+it._id+\"title\",{avoid:{selection:n.select(r).selectAll(\"g.\"+it._id+\"tick\"),side:j,offsetTop:o?0:R.t,offsetLeft:o?R.l:0,maxShift:o?D.width:D.height},attributes:{x:t,y:i,\"text-anchor\":\"middle\"},transform:{rotate:o?-90:0,offset:0}})}},a.previousPromises,function(){var n,s=X+M/2;-1===ht.indexOf(\"inside\")&&(n=p.bBox(dt.node()),s+=o?n.width:n.height),ut=ft.select(\"text\");var c=0,f=o&&\"top\"===j,g=!o&&\"right\"===j,m=0;if(ut.node()&&!ut.classed(A.jsPlaceholder)){var y,x=ft.select(\".h\"+it._id+\"title-math-group\").node();x&&(o&&at||!o&&!at)?(c=(n=p.bBox(x)).width,y=n.height):(c=(n=p.bBox(ft.node())).right-R.l-(o?Q:nt),y=n.bottom-R.t-(o?nt:Q),o||\"top\"!==j||(s+=n.height,m=n.height)),g&&(ut.attr(\"transform\",u(c/2+pt/2,0)),c*=2),s=Math.max(s,o?c:y)}var b=2*(o?P:I)+s+S+M/2,w=0;!o&&N.text&&\"bottom\"===C&&z<=0&&(b+=w=b/2,m+=w),D._hColorbarMoveTitle=w,D._hColorbarMoveCBTitle=m;var F=S+M;t.select(\".\"+A.cbbg).attr(\"x\",(o?Q:nt)-F/2-(o?P:0)).attr(\"y\",(o?nt:Q)-(o?J:I+m-w)).attr(o?\"width\":\"height\",Math.max(b-w,2)).attr(o?\"height\":\"width\",Math.max(J+F,2)).call(d.fill,E).call(d.stroke,e.bordercolor).style(\"stroke-width\",S);var B=g?Math.max(c-10,0):0;if(t.selectAll(\".\"+A.cboutline).attr(\"x\",(o?Q:nt+P)+B).attr(\"y\",(o?nt+I-J:Q)+(f?gt:0)).attr(o?\"width\":\"height\",Math.max(X,2)).attr(o?\"height\":\"width\",Math.max(J-(o?2*I+gt:2*P+B),2)).call(d.stroke,e.outlinecolor).style({fill:\"none\",\"stroke-width\":M}),t.attr(\"transform\",u(R.l-(o?$*b:0),R.t-(o?0:(1-tt)*b-m))),!o&&(S||i(E).getAlpha()&&!i.equals(D.paper_bgcolor,E))){var U=dt.selectAll(\"text\"),V=U[0].length,H=t.select(\".\"+A.cbbg).node(),q=p.bBox(H),G=p.getTranslate(t);U.each((function(t,e){var r=V-1;if(0===e||e===r){var n,i=p.bBox(this),a=p.getTranslate(this);if(e===r){var o=i.right+a.x;(n=q.right+G.x+nt-S-2+O-o)>0&&(n=0)}else if(0===e){var s=i.left+a.x;(n=q.left+G.x+nt+S+2-s)<0&&(n=0)}n&&(V<3?this.setAttribute(\"transform\",\"translate(\"+n+\",0) \"+this.getAttribute(\"transform\")):this.setAttribute(\"visibility\",\"hidden\"))}}))}var Y={},W=T[L],Z=k[L],K=T[C],et=k[C],rt=b-X;o?(\"pixels\"===h?(Y.y=z,Y.t=J*K,Y.b=J*et):(Y.t=Y.b=0,Y.yt=z+l*K,Y.yb=z-l*et),\"pixels\"===_?(Y.x=O,Y.l=b*W,Y.r=b*Z):(Y.l=rt*W,Y.r=rt*Z,Y.xl=O-v*W,Y.xr=O+v*Z)):(\"pixels\"===h?(Y.x=O,Y.l=J*W,Y.r=J*Z):(Y.l=Y.r=0,Y.xl=O+l*W,Y.xr=O-l*Z),\"pixels\"===_?(Y.y=1-z,Y.t=b*K,Y.b=b*et):(Y.t=rt*K,Y.b=rt*et,Y.yt=z-v*K,Y.yb=z+v*et)),a.autoMargin(r,e._id,Y)}],r)}(r,e,t);v&&v.then&&(t._promises||[]).push(v),t._context.edits.colorbarPosition&&function(t,e,r){var n,i,a,s=\"v\"===e.orientation,c=r._fullLayout._size;l.init({element:t.node(),gd:r,prepFn:function(){n=t.attr(\"transform\"),h(t)},moveFn:function(r,o){t.attr(\"transform\",n+u(r,o)),i=l.align((s?e._uFrac:e._vFrac)+r/c.w,s?e._thickFrac:e._lenFrac,0,1,e.xanchor),a=l.align((s?e._vFrac:1-e._uFrac)-o/c.h,s?e._lenFrac:e._thickFrac,0,1,e.yanchor);var f=l.getCursor(i,a,e.xanchor,e.yanchor);h(t,f)},doneFn:function(){if(h(t),void 0!==i&&void 0!==a){var n={};n[e._propPrefix+\"x\"]=i,n[e._propPrefix+\"y\"]=a,void 0!==e._traceIndex?o.call(\"_guiRestyle\",r,n,e._traceIndex):o.call(\"_guiRelayout\",r,n)}}})}(r,e,t)})),e.exit().each((function(e){a.autoMargin(t,e._id)})).remove(),e.order()}}},{\"../../constants/alignment\":471,\"../../lib\":503,\"../../lib/extend\":493,\"../../lib/setcursor\":524,\"../../lib/svg_text_utils\":529,\"../../plots/cartesian/axes\":554,\"../../plots/cartesian/axis_defaults\":556,\"../../plots/cartesian/layout_attributes\":569,\"../../plots/cartesian/position_defaults\":572,\"../../plots/plots\":619,\"../../registry\":638,\"../color\":366,\"../colorscale/helpers\":377,\"../dragelement\":385,\"../drawing\":388,\"../titles\":464,\"./constants\":368,\"@plotly/d3\":58,tinycolor2:312}],371:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t){return n.isPlainObject(t.colorbar)}},{\"../../lib\":503}],372:[function(t,e,r){\"use strict\";e.exports={moduleType:\"component\",name:\"colorbar\",attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),draw:t(\"./draw\").draw,hasColorbar:t(\"./has_colorbar\")}},{\"./attributes\":367,\"./defaults\":369,\"./draw\":370,\"./has_colorbar\":371}],373:[function(t,e,r){\"use strict\";var n=t(\"../colorbar/attributes\"),i=t(\"../../lib/regex\").counter,a=t(\"../../lib/sort_object_keys\"),o=t(\"./scales.js\").scales;a(o);function s(t){return\"`\"+t+\"`\"}e.exports=function(t,e){t=t||\"\";var r,a=(e=e||{}).cLetter||\"c\",l=(\"onlyIfNumerical\"in e?e.onlyIfNumerical:Boolean(t),\"noScale\"in e?e.noScale:\"marker.line\"===t),c=\"showScaleDflt\"in e?e.showScaleDflt:\"z\"===a,u=\"string\"==typeof e.colorscaleDflt?o[e.colorscaleDflt]:null,f=e.editTypeOverride||\"\",h=t?t+\".\":\"\";\"colorAttr\"in e?(r=e.colorAttr,e.colorAttr):s(h+(r={z:\"z\",c:\"color\"}[a]));var p=a+\"auto\",d=a+\"min\",g=a+\"max\",m=a+\"mid\",v=(s(h+p),s(h+d),s(h+g),{});v[d]=v[g]=void 0;var y={};y[p]=!1;var x={};return\"color\"===r&&(x.color={valType:\"color\",arrayOk:!0,editType:f||\"style\"},e.anim&&(x.color.anim=!0)),x[p]={valType:\"boolean\",dflt:!0,editType:\"calc\",impliedEdits:v},x[d]={valType:\"number\",dflt:null,editType:f||\"plot\",impliedEdits:y},x[g]={valType:\"number\",dflt:null,editType:f||\"plot\",impliedEdits:y},x[m]={valType:\"number\",dflt:null,editType:\"calc\",impliedEdits:v},x.colorscale={valType:\"colorscale\",editType:\"calc\",dflt:u,impliedEdits:{autocolorscale:!1}},x.autocolorscale={valType:\"boolean\",dflt:!1!==e.autoColorDflt,editType:\"calc\",impliedEdits:{colorscale:void 0}},x.reversescale={valType:\"boolean\",dflt:!1,editType:\"plot\"},l||(x.showscale={valType:\"boolean\",dflt:c,editType:\"calc\"},x.colorbar=n),e.noColorAxis||(x.coloraxis={valType:\"subplotid\",regex:i(\"coloraxis\"),dflt:null,editType:\"calc\"}),x}},{\"../../lib/regex\":520,\"../../lib/sort_object_keys\":526,\"../colorbar/attributes\":367,\"./scales.js\":381}],374:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../lib\"),a=t(\"./helpers\").extractOpts;e.exports=function(t,e,r){var o,s=t._fullLayout,l=r.vals,c=r.containerStr,u=c?i.nestedProperty(e,c).get():e,f=a(u),h=!1!==f.auto,p=f.min,d=f.max,g=f.mid,m=function(){return i.aggNums(Math.min,null,l)},v=function(){return i.aggNums(Math.max,null,l)};(void 0===p?p=m():h&&(p=u._colorAx&&n(p)?Math.min(p,m()):m()),void 0===d?d=v():h&&(d=u._colorAx&&n(d)?Math.max(d,v()):v()),h&&void 0!==g&&(d-g>g-p?p=g-(d-g):d-g=0?s.colorscale.sequential:s.colorscale.sequentialminus,f._sync(\"colorscale\",o))}},{\"../../lib\":503,\"./helpers\":377,\"fast-isnumeric\":190}],375:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./helpers\").hasColorscale,a=t(\"./helpers\").extractOpts;e.exports=function(t,e){function r(t,e){var r=t[\"_\"+e];void 0!==r&&(t[e]=r)}function o(t,i){var o=i.container?n.nestedProperty(t,i.container).get():t;if(o)if(o.coloraxis)o._colorAx=e[o.coloraxis];else{var s=a(o),l=s.auto;(l||void 0===s.min)&&r(o,i.min),(l||void 0===s.max)&&r(o,i.max),s.autocolorscale&&r(o,\"colorscale\")}}for(var s=0;s=0;n--,i++){var a=t[n];r[i]=[1-a[0],a[1]]}return r}function d(t,e){e=e||{};for(var r=t.domain,o=t.range,l=o.length,c=new Array(l),u=0;u4/3-s?o:s}},{}],383:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=[[\"sw-resize\",\"s-resize\",\"se-resize\"],[\"w-resize\",\"move\",\"e-resize\"],[\"nw-resize\",\"n-resize\",\"ne-resize\"]];e.exports=function(t,e,r,a){return t=\"left\"===r?0:\"center\"===r?1:\"right\"===r?2:n.constrain(Math.floor(3*t),0,2),e=\"bottom\"===a?0:\"middle\"===a?1:\"top\"===a?2:n.constrain(Math.floor(3*e),0,2),i[e][t]}},{\"../../lib\":503}],384:[function(t,e,r){\"use strict\";r.selectMode=function(t){return\"lasso\"===t||\"select\"===t},r.drawMode=function(t){return\"drawclosedpath\"===t||\"drawopenpath\"===t||\"drawline\"===t||\"drawrect\"===t||\"drawcircle\"===t},r.openMode=function(t){return\"drawline\"===t||\"drawopenpath\"===t},r.rectMode=function(t){return\"select\"===t||\"drawline\"===t||\"drawrect\"===t||\"drawcircle\"===t},r.freeMode=function(t){return\"lasso\"===t||\"drawclosedpath\"===t||\"drawopenpath\"===t},r.selectingOrDrawing=function(t){return r.freeMode(t)||r.rectMode(t)}},{}],385:[function(t,e,r){\"use strict\";var n=t(\"mouse-event-offset\"),i=t(\"has-hover\"),a=t(\"has-passive-events\"),o=t(\"../../lib\").removeElement,s=t(\"../../plots/cartesian/constants\"),l=e.exports={};l.align=t(\"./align\"),l.getCursor=t(\"./cursor\");var c=t(\"./unhover\");function u(){var t=document.createElement(\"div\");t.className=\"dragcover\";var e=t.style;return e.position=\"fixed\",e.left=0,e.right=0,e.top=0,e.bottom=0,e.zIndex=999999999,e.background=\"none\",document.body.appendChild(t),t}function f(t){return n(t.changedTouches?t.changedTouches[0]:t,document.body)}l.unhover=c.wrapped,l.unhoverRaw=c.raw,l.init=function(t){var e,r,n,c,h,p,d,g,m=t.gd,v=1,y=m._context.doubleClickDelay,x=t.element;m._mouseDownTime||(m._mouseDownTime=0),x.style.pointerEvents=\"all\",x.onmousedown=_,a?(x._ontouchstart&&x.removeEventListener(\"touchstart\",x._ontouchstart),x._ontouchstart=_,x.addEventListener(\"touchstart\",_,{passive:!1})):x.ontouchstart=_;var b=t.clampFn||function(t,e,r){return Math.abs(t)y&&(v=Math.max(v-1,1)),m._dragged)t.doneFn&&t.doneFn();else if(t.clickFn&&t.clickFn(v,p),!g){var r;try{r=new MouseEvent(\"click\",e)}catch(t){var n=f(e);(r=document.createEvent(\"MouseEvents\")).initMouseEvent(\"click\",e.bubbles,e.cancelable,e.view,e.detail,e.screenX,e.screenY,n[0],n[1],e.ctrlKey,e.altKey,e.shiftKey,e.metaKey,e.button,e.relatedTarget)}d.dispatchEvent(r)}m._dragging=!1,m._dragged=!1}else m._dragged=!1}},l.coverSlip=u},{\"../../lib\":503,\"../../plots/cartesian/constants\":561,\"./align\":382,\"./cursor\":383,\"./unhover\":386,\"has-hover\":228,\"has-passive-events\":229,\"mouse-event-offset\":242}],386:[function(t,e,r){\"use strict\";var n=t(\"../../lib/events\"),i=t(\"../../lib/throttle\"),a=t(\"../../lib/dom\").getGraphDiv,o=t(\"../fx/constants\"),s=e.exports={};s.wrapped=function(t,e,r){(t=a(t))._fullLayout&&i.clear(t._fullLayout._uid+o.HOVERID),s.raw(t,e,r)},s.raw=function(t,e){var r=t._fullLayout,i=t._hoverdata;e||(e={}),e.target&&!t._dragged&&!1===n.triggerHandler(t,\"plotly_beforehover\",e)||(r._hoverlayer.selectAll(\"g\").remove(),r._hoverlayer.selectAll(\"line\").remove(),r._hoverlayer.selectAll(\"circle\").remove(),t._hoverdata=void 0,e.target&&i&&t.emit(\"plotly_unhover\",{event:e,points:i}))}},{\"../../lib/dom\":491,\"../../lib/events\":492,\"../../lib/throttle\":530,\"../fx/constants\":400}],387:[function(t,e,r){\"use strict\";r.dash={valType:\"string\",values:[\"solid\",\"dot\",\"dash\",\"longdash\",\"dashdot\",\"longdashdot\"],dflt:\"solid\",editType:\"style\"},r.pattern={shape:{valType:\"enumerated\",values:[\"\",\"/\",\"\\\\\",\"x\",\"-\",\"|\",\"+\",\".\"],dflt:\"\",arrayOk:!0,editType:\"style\"},fillmode:{valType:\"enumerated\",values:[\"replace\",\"overlay\"],dflt:\"replace\",editType:\"style\"},bgcolor:{valType:\"color\",arrayOk:!0,editType:\"style\"},fgcolor:{valType:\"color\",arrayOk:!0,editType:\"style\"},fgopacity:{valType:\"number\",editType:\"style\",min:0,max:1},size:{valType:\"number\",min:0,dflt:8,arrayOk:!0,editType:\"style\"},solidity:{valType:\"number\",min:0,max:1,dflt:.3,arrayOk:!0,editType:\"style\"},editType:\"style\"}},{}],388:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=i.numberFormat,o=t(\"fast-isnumeric\"),s=t(\"tinycolor2\"),l=t(\"../../registry\"),c=t(\"../color\"),u=t(\"../colorscale\"),f=i.strTranslate,h=t(\"../../lib/svg_text_utils\"),p=t(\"../../constants/xmlns_namespaces\"),d=t(\"../../constants/alignment\").LINE_SPACING,g=t(\"../../constants/interactions\").DESELECTDIM,m=t(\"../../traces/scatter/subtypes\"),v=t(\"../../traces/scatter/make_bubble_size_func\"),y=t(\"../../components/fx/helpers\").appendArrayPointValue,x=e.exports={};x.font=function(t,e,r,n){i.isPlainObject(e)&&(n=e.color,r=e.size,e=e.family),e&&t.style(\"font-family\",e),r+1&&t.style(\"font-size\",r+\"px\"),n&&t.call(c.fill,n)},x.setPosition=function(t,e,r){t.attr(\"x\",e).attr(\"y\",r)},x.setSize=function(t,e,r){t.attr(\"width\",e).attr(\"height\",r)},x.setRect=function(t,e,r,n,i){t.call(x.setPosition,e,r).call(x.setSize,n,i)},x.translatePoint=function(t,e,r,n){var i=r.c2p(t.x),a=n.c2p(t.y);return!!(o(i)&&o(a)&&e.node())&&(\"text\"===e.node().nodeName?e.attr(\"x\",i).attr(\"y\",a):e.attr(\"transform\",f(i,a)),!0)},x.translatePoints=function(t,e,r){t.each((function(t){var i=n.select(this);x.translatePoint(t,i,e,r)}))},x.hideOutsideRangePoint=function(t,e,r,n,i,a){e.attr(\"display\",r.isPtWithinRange(t,i)&&n.isPtWithinRange(t,a)?null:\"none\")},x.hideOutsideRangePoints=function(t,e){if(e._hasClipOnAxisFalse){var r=e.xaxis,i=e.yaxis;t.each((function(e){var a=e[0].trace,o=a.xcalendar,s=a.ycalendar,c=l.traceIs(a,\"bar-like\")?\".bartext\":\".point,.textpoint\";t.selectAll(c).each((function(t){x.hideOutsideRangePoint(t,n.select(this),r,i,o,s)}))}))}},x.crispRound=function(t,e,r){return e&&o(e)?t._context.staticPlot?e:e<1?1:Math.round(e):r||0},x.singleLineStyle=function(t,e,r,n,i){e.style(\"fill\",\"none\");var a=(((t||[])[0]||{}).trace||{}).line||{},o=r||a.width||0,s=i||a.dash||\"\";c.stroke(e,n||a.color),x.dashLine(e,s,o)},x.lineGroupStyle=function(t,e,r,i){t.style(\"fill\",\"none\").each((function(t){var a=(((t||[])[0]||{}).trace||{}).line||{},o=e||a.width||0,s=i||a.dash||\"\";n.select(this).call(c.stroke,r||a.color).call(x.dashLine,s,o)}))},x.dashLine=function(t,e,r){r=+r||0,e=x.dashStyle(e,r),t.style({\"stroke-dasharray\":e,\"stroke-width\":r+\"px\"})},x.dashStyle=function(t,e){e=+e||1;var r=Math.max(e,3);return\"solid\"===t?t=\"\":\"dot\"===t?t=r+\"px,\"+r+\"px\":\"dash\"===t?t=3*r+\"px,\"+3*r+\"px\":\"longdash\"===t?t=5*r+\"px,\"+5*r+\"px\":\"dashdot\"===t?t=3*r+\"px,\"+r+\"px,\"+r+\"px,\"+r+\"px\":\"longdashdot\"===t&&(t=5*r+\"px,\"+2*r+\"px,\"+r+\"px,\"+2*r+\"px\"),t},x.singleFillStyle=function(t){var e=(((n.select(t.node()).data()[0]||[])[0]||{}).trace||{}).fillcolor;e&&t.call(c.fill,e)},x.fillGroupStyle=function(t){t.style(\"stroke-width\",0).each((function(t){var e=n.select(this);t[0].trace&&e.call(c.fill,t[0].trace.fillcolor)}))};var b=t(\"./symbol_defs\");x.symbolNames=[],x.symbolFuncs=[],x.symbolNeedLines={},x.symbolNoDot={},x.symbolNoFill={},x.symbolList=[],Object.keys(b).forEach((function(t){var e=b[t],r=e.n;x.symbolList.push(r,String(r),t,r+100,String(r+100),t+\"-open\"),x.symbolNames[r]=t,x.symbolFuncs[r]=e.f,e.needLine&&(x.symbolNeedLines[r]=!0),e.noDot?x.symbolNoDot[r]=!0:x.symbolList.push(r+200,String(r+200),t+\"-dot\",r+300,String(r+300),t+\"-open-dot\"),e.noFill&&(x.symbolNoFill[r]=!0)}));var _=x.symbolNames.length;function w(t,e){var r=t%100;return x.symbolFuncs[r](e)+(t>=200?\"M0,0.5L0.5,0L0,-0.5L-0.5,0Z\":\"\")}x.symbolNumber=function(t){if(o(t))t=+t;else if(\"string\"==typeof t){var e=0;t.indexOf(\"-open\")>0&&(e=100,t=t.replace(\"-open\",\"\")),t.indexOf(\"-dot\")>0&&(e+=200,t=t.replace(\"-dot\",\"\")),(t=x.symbolNames.indexOf(t))>=0&&(t+=e)}return t%100>=_||t>=400?0:Math.floor(Math.max(t,0))};var T={x1:1,x2:0,y1:0,y2:0},k={x1:0,x2:0,y1:1,y2:0},A=a(\"~f\"),M={radial:{node:\"radialGradient\"},radialreversed:{node:\"radialGradient\",reversed:!0},horizontal:{node:\"linearGradient\",attrs:T},horizontalreversed:{node:\"linearGradient\",attrs:T,reversed:!0},vertical:{node:\"linearGradient\",attrs:k},verticalreversed:{node:\"linearGradient\",attrs:k,reversed:!0}};x.gradient=function(t,e,r,a,o,l){for(var u=o.length,f=M[a],h=new Array(u),p=0;p\"+v(t);d._gradientUrlQueryParts[y]=1},x.pattern=function(t,e,r,a,o,s,l,u,f,h,p,d){var g=\"legend\"===e;u&&(\"overlay\"===f?(h=u,p=c.contrast(h)):(h=void 0,p=u));var m,v,y,x,b,_,w,T,k,A,M,S=r._fullLayout,E=\"p\"+S._uid+\"-\"+a,L={};switch(o){case\"/\":m=s*Math.sqrt(2),v=s*Math.sqrt(2),_=\"path\",L={d:y=\"M-\"+m/4+\",\"+v/4+\"l\"+m/2+\",-\"+v/2+\"M0,\"+v+\"L\"+m+\",0M\"+m/4*3+\",\"+v/4*5+\"l\"+m/2+\",-\"+v/2,opacity:d,stroke:p,\"stroke-width\":(x=l*s)+\"px\"};break;case\"\\\\\":m=s*Math.sqrt(2),v=s*Math.sqrt(2),_=\"path\",L={d:y=\"M\"+m/4*3+\",-\"+v/4+\"l\"+m/2+\",\"+v/2+\"M0,0L\"+m+\",\"+v+\"M-\"+m/4+\",\"+v/4*3+\"l\"+m/2+\",\"+v/2,opacity:d,stroke:p,\"stroke-width\":(x=l*s)+\"px\"};break;case\"x\":m=s*Math.sqrt(2),v=s*Math.sqrt(2),y=\"M-\"+m/4+\",\"+v/4+\"l\"+m/2+\",-\"+v/2+\"M0,\"+v+\"L\"+m+\",0M\"+m/4*3+\",\"+v/4*5+\"l\"+m/2+\",-\"+v/2+\"M\"+m/4*3+\",-\"+v/4+\"l\"+m/2+\",\"+v/2+\"M0,0L\"+m+\",\"+v+\"M-\"+m/4+\",\"+v/4*3+\"l\"+m/2+\",\"+v/2,x=s-s*Math.sqrt(1-l),_=\"path\",L={d:y,opacity:d,stroke:p,\"stroke-width\":x+\"px\"};break;case\"|\":_=\"path\",_=\"path\",L={d:y=\"M\"+(m=s)/2+\",0L\"+m/2+\",\"+(v=s),opacity:d,stroke:p,\"stroke-width\":(x=l*s)+\"px\"};break;case\"-\":_=\"path\",_=\"path\",L={d:y=\"M0,\"+(v=s)/2+\"L\"+(m=s)+\",\"+v/2,opacity:d,stroke:p,\"stroke-width\":(x=l*s)+\"px\"};break;case\"+\":_=\"path\",y=\"M\"+(m=s)/2+\",0L\"+m/2+\",\"+(v=s)+\"M0,\"+v/2+\"L\"+m+\",\"+v/2,x=s-s*Math.sqrt(1-l),_=\"path\",L={d:y,opacity:d,stroke:p,\"stroke-width\":x+\"px\"};break;case\".\":m=s,v=s,l.pattern_filled\";S._patternUrlQueryParts[I]=1},x.initGradients=function(t){var e=t._fullLayout;i.ensureSingle(e._defs,\"g\",\"gradients\").selectAll(\"linearGradient,radialGradient\").remove(),e._gradientUrlQueryParts={}},x.initPatterns=function(t){var e=t._fullLayout;i.ensureSingle(e._defs,\"g\",\"patterns\").selectAll(\"pattern\").remove(),e._patternUrlQueryParts={}},x.getPatternAttr=function(t,e,r){return t&&i.isArrayOrTypedArray(t)?e=100,e.attr(\"d\",w(u,l))}var f,h,p,d=!1;if(t.so)p=s.outlierwidth,h=s.outliercolor,f=o.outliercolor;else{var g=(s||{}).width;p=(t.mlw+1||g+1||(t.trace?(t.trace.marker.line||{}).width:0)+1)-1||0,h=\"mlc\"in t?t.mlcc=n.lineScale(t.mlc):i.isArrayOrTypedArray(s.color)?c.defaultLine:s.color,i.isArrayOrTypedArray(o.color)&&(f=c.defaultLine,d=!0),f=\"mc\"in t?t.mcc=n.markerScale(t.mc):o.color||\"rgba(0,0,0,0)\",n.selectedColorFn&&(f=n.selectedColorFn(t))}if(t.om)e.call(c.stroke,f).style({\"stroke-width\":(p||1)+\"px\",fill:\"none\"});else{e.style(\"stroke-width\",(t.isBlank?0:p)+\"px\");var m=o.gradient,v=t.mgt;v?d=!0:v=m&&m.type,i.isArrayOrTypedArray(v)&&(v=v[0],M[v]||(v=0));var y=o.pattern,b=y&&x.getPatternAttr(y.shape,t.i,\"\");if(v&&\"none\"!==v){var _=t.mgc;_?d=!0:_=m.color;var T=r.uid;d&&(T+=\"-\"+t.i),x.gradient(e,a,T,v,[[0,_],[1,f]],\"fill\")}else if(b){var k=x.getPatternAttr(y.bgcolor,t.i,null),A=x.getPatternAttr(y.fgcolor,t.i,null),S=y.fgopacity,E=x.getPatternAttr(y.size,t.i,8),L=x.getPatternAttr(y.solidity,t.i,.3),C=t.mcc||i.isArrayOrTypedArray(y.shape)||i.isArrayOrTypedArray(y.bgcolor)||i.isArrayOrTypedArray(y.size)||i.isArrayOrTypedArray(y.solidity),P=r.uid;C&&(P+=\"-\"+t.i),x.pattern(e,\"point\",a,P,b,E,L,t.mcc,y.fillmode,k,A,S)}else c.fill(e,f);p&&c.stroke(e,h)}},x.makePointStyleFns=function(t){var e={},r=t.marker;return e.markerScale=x.tryColorscale(r,\"\"),e.lineScale=x.tryColorscale(r,\"line\"),l.traceIs(t,\"symbols\")&&(e.ms2mrc=m.isBubble(t)?v(t):function(){return(r.size||6)/2}),t.selectedpoints&&i.extendFlat(e,x.makeSelectedPointStyleFns(t)),e},x.makeSelectedPointStyleFns=function(t){var e={},r=t.selected||{},n=t.unselected||{},a=t.marker||{},o=r.marker||{},s=n.marker||{},c=a.opacity,u=o.opacity,f=s.opacity,h=void 0!==u,p=void 0!==f;(i.isArrayOrTypedArray(c)||h||p)&&(e.selectedOpacityFn=function(t){var e=void 0===t.mo?a.opacity:t.mo;return t.selected?h?u:e:p?f:g*e});var d=a.color,m=o.color,v=s.color;(m||v)&&(e.selectedColorFn=function(t){var e=t.mcc||d;return t.selected?m||e:v||e});var y=a.size,x=o.size,b=s.size,_=void 0!==x,w=void 0!==b;return l.traceIs(t,\"symbols\")&&(_||w)&&(e.selectedSizeFn=function(t){var e=t.mrc||y/2;return t.selected?_?x/2:e:w?b/2:e}),e},x.makeSelectedTextStyleFns=function(t){var e={},r=t.selected||{},n=t.unselected||{},i=t.textfont||{},a=r.textfont||{},o=n.textfont||{},s=i.color,l=a.color,u=o.color;return e.selectedTextColorFn=function(t){var e=t.tc||s;return t.selected?l||e:u||(l?e:c.addOpacity(e,g))},e},x.selectedPointStyle=function(t,e){if(t.size()&&e.selectedpoints){var r=x.makeSelectedPointStyleFns(e),i=e.marker||{},a=[];r.selectedOpacityFn&&a.push((function(t,e){t.style(\"opacity\",r.selectedOpacityFn(e))})),r.selectedColorFn&&a.push((function(t,e){c.fill(t,r.selectedColorFn(e))})),r.selectedSizeFn&&a.push((function(t,e){var n=e.mx||i.symbol||0,a=r.selectedSizeFn(e);t.attr(\"d\",w(x.symbolNumber(n),a)),e.mrc2=a})),a.length&&t.each((function(t){for(var e=n.select(this),r=0;r0?r:0}x.textPointStyle=function(t,e,r){if(t.size()){var a;if(e.selectedpoints){var o=x.makeSelectedTextStyleFns(e);a=o.selectedTextColorFn}var s=e.texttemplate,l=r._fullLayout;t.each((function(t){var o=n.select(this),c=s?i.extractOption(t,e,\"txt\",\"texttemplate\"):i.extractOption(t,e,\"tx\",\"text\");if(c||0===c){if(s){var u=e._module.formatLabels,f=u?u(t,e,l):{},p={};y(p,e,t.i);var d=e._meta||{};c=i.texttemplateString(c,f,l._d3locale,p,t,d)}var g=t.tp||e.textposition,m=L(t,e),v=a?a(t):t.tc||e.textfont.color;o.call(x.font,t.tf||e.textfont.family,m,v).text(c).call(h.convertToTspans,r).call(E,g,m,t.mrc)}else o.remove()}))}},x.selectedTextStyle=function(t,e){if(t.size()&&e.selectedpoints){var r=x.makeSelectedTextStyleFns(e);t.each((function(t){var i=n.select(this),a=r.selectedTextColorFn(t),o=t.tp||e.textposition,s=L(t,e);c.fill(i,a);var u=l.traceIs(e,\"bar-like\");E(i,o,s,t.mrc2||t.mrc,u)}))}};function C(t,e,r,i){var a=t[0]-e[0],o=t[1]-e[1],s=r[0]-e[0],l=r[1]-e[1],c=Math.pow(a*a+o*o,.25),u=Math.pow(s*s+l*l,.25),f=(u*u*a-c*c*s)*i,h=(u*u*o-c*c*l)*i,p=3*u*(c+u),d=3*c*(c+u);return[[n.round(e[0]+(p&&f/p),2),n.round(e[1]+(p&&h/p),2)],[n.round(e[0]-(d&&f/d),2),n.round(e[1]-(d&&h/d),2)]]}x.smoothopen=function(t,e){if(t.length<3)return\"M\"+t.join(\"L\");var r,n=\"M\"+t[0],i=[];for(r=1;r=1e4&&(x.savedBBoxes={},O=0),r&&(x.savedBBoxes[r]=m),O++,i.extendFlat({},m)},x.setClipUrl=function(t,e,r){t.attr(\"clip-path\",D(e,r))},x.getTranslate=function(t){var e=(t[t.attr?\"attr\":\"getAttribute\"](\"transform\")||\"\").replace(/.*\\btranslate\\((-?\\d*\\.?\\d*)[^-\\d]*(-?\\d*\\.?\\d*)[^\\d].*/,(function(t,e,r){return[e,r].join(\" \")})).split(\" \");return{x:+e[0]||0,y:+e[1]||0}},x.setTranslate=function(t,e,r){var n=t.attr?\"attr\":\"getAttribute\",i=t.attr?\"attr\":\"setAttribute\",a=t[n](\"transform\")||\"\";return e=e||0,r=r||0,a=a.replace(/(\\btranslate\\(.*?\\);?)/,\"\").trim(),a=(a+=f(e,r)).trim(),t[i](\"transform\",a),a},x.getScale=function(t){var e=(t[t.attr?\"attr\":\"getAttribute\"](\"transform\")||\"\").replace(/.*\\bscale\\((\\d*\\.?\\d*)[^\\d]*(\\d*\\.?\\d*)[^\\d].*/,(function(t,e,r){return[e,r].join(\" \")})).split(\" \");return{x:+e[0]||1,y:+e[1]||1}},x.setScale=function(t,e,r){var n=t.attr?\"attr\":\"getAttribute\",i=t.attr?\"attr\":\"setAttribute\",a=t[n](\"transform\")||\"\";return e=e||1,r=r||1,a=a.replace(/(\\bscale\\(.*?\\);?)/,\"\").trim(),a=(a+=\"scale(\"+e+\",\"+r+\")\").trim(),t[i](\"transform\",a),a};var R=/\\s*sc.*/;x.setPointGroupScale=function(t,e,r){if(e=e||1,r=r||1,t){var n=1===e&&1===r?\"\":\"scale(\"+e+\",\"+r+\")\";t.each((function(){var t=(this.getAttribute(\"transform\")||\"\").replace(R,\"\");t=(t+=n).trim(),this.setAttribute(\"transform\",t)}))}};var F=/translate\\([^)]*\\)\\s*$/;x.setTextPointsScale=function(t,e,r){t&&t.each((function(){var t,i=n.select(this),a=i.select(\"text\");if(a.node()){var o=parseFloat(a.attr(\"x\")||0),s=parseFloat(a.attr(\"y\")||0),l=(i.attr(\"transform\")||\"\").match(F);t=1===e&&1===r?[]:[f(o,s),\"scale(\"+e+\",\"+r+\")\",f(-o,-s)],l&&t.push(l),i.attr(\"transform\",t.join(\"\"))}}))}},{\"../../components/fx/helpers\":402,\"../../constants/alignment\":471,\"../../constants/interactions\":478,\"../../constants/xmlns_namespaces\":480,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../../registry\":638,\"../../traces/scatter/make_bubble_size_func\":943,\"../../traces/scatter/subtypes\":951,\"../color\":366,\"../colorscale\":378,\"./symbol_defs\":389,\"@plotly/d3\":58,\"fast-isnumeric\":190,tinycolor2:312}],389:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\");e.exports={circle:{n:0,f:function(t){var e=n.round(t,2);return\"M\"+e+\",0A\"+e+\",\"+e+\" 0 1,1 0,-\"+e+\"A\"+e+\",\"+e+\" 0 0,1 \"+e+\",0Z\"}},square:{n:1,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"H-\"+e+\"V-\"+e+\"H\"+e+\"Z\"}},diamond:{n:2,f:function(t){var e=n.round(1.3*t,2);return\"M\"+e+\",0L0,\"+e+\"L-\"+e+\",0L0,-\"+e+\"Z\"}},cross:{n:3,f:function(t){var e=n.round(.4*t,2),r=n.round(1.2*t,2);return\"M\"+r+\",\"+e+\"H\"+e+\"V\"+r+\"H-\"+e+\"V\"+e+\"H-\"+r+\"V-\"+e+\"H-\"+e+\"V-\"+r+\"H\"+e+\"V-\"+e+\"H\"+r+\"Z\"}},x:{n:4,f:function(t){var e=n.round(.8*t/Math.sqrt(2),2),r=\"l\"+e+\",\"+e,i=\"l\"+e+\",-\"+e,a=\"l-\"+e+\",-\"+e,o=\"l-\"+e+\",\"+e;return\"M0,\"+e+r+i+a+i+a+o+a+o+r+o+r+\"Z\"}},\"triangle-up\":{n:5,f:function(t){var e=n.round(2*t/Math.sqrt(3),2);return\"M-\"+e+\",\"+n.round(t/2,2)+\"H\"+e+\"L0,-\"+n.round(t,2)+\"Z\"}},\"triangle-down\":{n:6,f:function(t){var e=n.round(2*t/Math.sqrt(3),2);return\"M-\"+e+\",-\"+n.round(t/2,2)+\"H\"+e+\"L0,\"+n.round(t,2)+\"Z\"}},\"triangle-left\":{n:7,f:function(t){var e=n.round(2*t/Math.sqrt(3),2);return\"M\"+n.round(t/2,2)+\",-\"+e+\"V\"+e+\"L-\"+n.round(t,2)+\",0Z\"}},\"triangle-right\":{n:8,f:function(t){var e=n.round(2*t/Math.sqrt(3),2);return\"M-\"+n.round(t/2,2)+\",-\"+e+\"V\"+e+\"L\"+n.round(t,2)+\",0Z\"}},\"triangle-ne\":{n:9,f:function(t){var e=n.round(.6*t,2),r=n.round(1.2*t,2);return\"M-\"+r+\",-\"+e+\"H\"+e+\"V\"+r+\"Z\"}},\"triangle-se\":{n:10,f:function(t){var e=n.round(.6*t,2),r=n.round(1.2*t,2);return\"M\"+e+\",-\"+r+\"V\"+e+\"H-\"+r+\"Z\"}},\"triangle-sw\":{n:11,f:function(t){var e=n.round(.6*t,2),r=n.round(1.2*t,2);return\"M\"+r+\",\"+e+\"H-\"+e+\"V-\"+r+\"Z\"}},\"triangle-nw\":{n:12,f:function(t){var e=n.round(.6*t,2),r=n.round(1.2*t,2);return\"M-\"+e+\",\"+r+\"V-\"+e+\"H\"+r+\"Z\"}},pentagon:{n:13,f:function(t){var e=n.round(.951*t,2),r=n.round(.588*t,2),i=n.round(-t,2),a=n.round(-.309*t,2);return\"M\"+e+\",\"+a+\"L\"+r+\",\"+n.round(.809*t,2)+\"H-\"+r+\"L-\"+e+\",\"+a+\"L0,\"+i+\"Z\"}},hexagon:{n:14,f:function(t){var e=n.round(t,2),r=n.round(t/2,2),i=n.round(t*Math.sqrt(3)/2,2);return\"M\"+i+\",-\"+r+\"V\"+r+\"L0,\"+e+\"L-\"+i+\",\"+r+\"V-\"+r+\"L0,-\"+e+\"Z\"}},hexagon2:{n:15,f:function(t){var e=n.round(t,2),r=n.round(t/2,2),i=n.round(t*Math.sqrt(3)/2,2);return\"M-\"+r+\",\"+i+\"H\"+r+\"L\"+e+\",0L\"+r+\",-\"+i+\"H-\"+r+\"L-\"+e+\",0Z\"}},octagon:{n:16,f:function(t){var e=n.round(.924*t,2),r=n.round(.383*t,2);return\"M-\"+r+\",-\"+e+\"H\"+r+\"L\"+e+\",-\"+r+\"V\"+r+\"L\"+r+\",\"+e+\"H-\"+r+\"L-\"+e+\",\"+r+\"V-\"+r+\"Z\"}},star:{n:17,f:function(t){var e=1.4*t,r=n.round(.225*e,2),i=n.round(.951*e,2),a=n.round(.363*e,2),o=n.round(.588*e,2),s=n.round(-e,2),l=n.round(-.309*e,2),c=n.round(.118*e,2),u=n.round(.809*e,2);return\"M\"+r+\",\"+l+\"H\"+i+\"L\"+a+\",\"+c+\"L\"+o+\",\"+u+\"L0,\"+n.round(.382*e,2)+\"L-\"+o+\",\"+u+\"L-\"+a+\",\"+c+\"L-\"+i+\",\"+l+\"H-\"+r+\"L0,\"+s+\"Z\"}},hexagram:{n:18,f:function(t){var e=n.round(.66*t,2),r=n.round(.38*t,2),i=n.round(.76*t,2);return\"M-\"+i+\",0l-\"+r+\",-\"+e+\"h\"+i+\"l\"+r+\",-\"+e+\"l\"+r+\",\"+e+\"h\"+i+\"l-\"+r+\",\"+e+\"l\"+r+\",\"+e+\"h-\"+i+\"l-\"+r+\",\"+e+\"l-\"+r+\",-\"+e+\"h-\"+i+\"Z\"}},\"star-triangle-up\":{n:19,f:function(t){var e=n.round(t*Math.sqrt(3)*.8,2),r=n.round(.8*t,2),i=n.round(1.6*t,2),a=n.round(4*t,2),o=\"A \"+a+\",\"+a+\" 0 0 1 \";return\"M-\"+e+\",\"+r+o+e+\",\"+r+o+\"0,-\"+i+o+\"-\"+e+\",\"+r+\"Z\"}},\"star-triangle-down\":{n:20,f:function(t){var e=n.round(t*Math.sqrt(3)*.8,2),r=n.round(.8*t,2),i=n.round(1.6*t,2),a=n.round(4*t,2),o=\"A \"+a+\",\"+a+\" 0 0 1 \";return\"M\"+e+\",-\"+r+o+\"-\"+e+\",-\"+r+o+\"0,\"+i+o+e+\",-\"+r+\"Z\"}},\"star-square\":{n:21,f:function(t){var e=n.round(1.1*t,2),r=n.round(2*t,2),i=\"A \"+r+\",\"+r+\" 0 0 1 \";return\"M-\"+e+\",-\"+e+i+\"-\"+e+\",\"+e+i+e+\",\"+e+i+e+\",-\"+e+i+\"-\"+e+\",-\"+e+\"Z\"}},\"star-diamond\":{n:22,f:function(t){var e=n.round(1.4*t,2),r=n.round(1.9*t,2),i=\"A \"+r+\",\"+r+\" 0 0 1 \";return\"M-\"+e+\",0\"+i+\"0,\"+e+i+e+\",0\"+i+\"0,-\"+e+i+\"-\"+e+\",0Z\"}},\"diamond-tall\":{n:23,f:function(t){var e=n.round(.7*t,2),r=n.round(1.4*t,2);return\"M0,\"+r+\"L\"+e+\",0L0,-\"+r+\"L-\"+e+\",0Z\"}},\"diamond-wide\":{n:24,f:function(t){var e=n.round(1.4*t,2),r=n.round(.7*t,2);return\"M0,\"+r+\"L\"+e+\",0L0,-\"+r+\"L-\"+e+\",0Z\"}},hourglass:{n:25,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"H-\"+e+\"L\"+e+\",-\"+e+\"H-\"+e+\"Z\"},noDot:!0},bowtie:{n:26,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"V-\"+e+\"L-\"+e+\",\"+e+\"V-\"+e+\"Z\"},noDot:!0},\"circle-cross\":{n:27,f:function(t){var e=n.round(t,2);return\"M0,\"+e+\"V-\"+e+\"M\"+e+\",0H-\"+e+\"M\"+e+\",0A\"+e+\",\"+e+\" 0 1,1 0,-\"+e+\"A\"+e+\",\"+e+\" 0 0,1 \"+e+\",0Z\"},needLine:!0,noDot:!0},\"circle-x\":{n:28,f:function(t){var e=n.round(t,2),r=n.round(t/Math.sqrt(2),2);return\"M\"+r+\",\"+r+\"L-\"+r+\",-\"+r+\"M\"+r+\",-\"+r+\"L-\"+r+\",\"+r+\"M\"+e+\",0A\"+e+\",\"+e+\" 0 1,1 0,-\"+e+\"A\"+e+\",\"+e+\" 0 0,1 \"+e+\",0Z\"},needLine:!0,noDot:!0},\"square-cross\":{n:29,f:function(t){var e=n.round(t,2);return\"M0,\"+e+\"V-\"+e+\"M\"+e+\",0H-\"+e+\"M\"+e+\",\"+e+\"H-\"+e+\"V-\"+e+\"H\"+e+\"Z\"},needLine:!0,noDot:!0},\"square-x\":{n:30,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"L-\"+e+\",-\"+e+\"M\"+e+\",-\"+e+\"L-\"+e+\",\"+e+\"M\"+e+\",\"+e+\"H-\"+e+\"V-\"+e+\"H\"+e+\"Z\"},needLine:!0,noDot:!0},\"diamond-cross\":{n:31,f:function(t){var e=n.round(1.3*t,2);return\"M\"+e+\",0L0,\"+e+\"L-\"+e+\",0L0,-\"+e+\"ZM0,-\"+e+\"V\"+e+\"M-\"+e+\",0H\"+e},needLine:!0,noDot:!0},\"diamond-x\":{n:32,f:function(t){var e=n.round(1.3*t,2),r=n.round(.65*t,2);return\"M\"+e+\",0L0,\"+e+\"L-\"+e+\",0L0,-\"+e+\"ZM-\"+r+\",-\"+r+\"L\"+r+\",\"+r+\"M-\"+r+\",\"+r+\"L\"+r+\",-\"+r},needLine:!0,noDot:!0},\"cross-thin\":{n:33,f:function(t){var e=n.round(1.4*t,2);return\"M0,\"+e+\"V-\"+e+\"M\"+e+\",0H-\"+e},needLine:!0,noDot:!0,noFill:!0},\"x-thin\":{n:34,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"L-\"+e+\",-\"+e+\"M\"+e+\",-\"+e+\"L-\"+e+\",\"+e},needLine:!0,noDot:!0,noFill:!0},asterisk:{n:35,f:function(t){var e=n.round(1.2*t,2),r=n.round(.85*t,2);return\"M0,\"+e+\"V-\"+e+\"M\"+e+\",0H-\"+e+\"M\"+r+\",\"+r+\"L-\"+r+\",-\"+r+\"M\"+r+\",-\"+r+\"L-\"+r+\",\"+r},needLine:!0,noDot:!0,noFill:!0},hash:{n:36,f:function(t){var e=n.round(t/2,2),r=n.round(t,2);return\"M\"+e+\",\"+r+\"V-\"+r+\"m-\"+r+\",0V\"+r+\"M\"+r+\",\"+e+\"H-\"+r+\"m0,-\"+r+\"H\"+r},needLine:!0,noFill:!0},\"y-up\":{n:37,f:function(t){var e=n.round(1.2*t,2),r=n.round(1.6*t,2),i=n.round(.8*t,2);return\"M-\"+e+\",\"+i+\"L0,0M\"+e+\",\"+i+\"L0,0M0,-\"+r+\"L0,0\"},needLine:!0,noDot:!0,noFill:!0},\"y-down\":{n:38,f:function(t){var e=n.round(1.2*t,2),r=n.round(1.6*t,2),i=n.round(.8*t,2);return\"M-\"+e+\",-\"+i+\"L0,0M\"+e+\",-\"+i+\"L0,0M0,\"+r+\"L0,0\"},needLine:!0,noDot:!0,noFill:!0},\"y-left\":{n:39,f:function(t){var e=n.round(1.2*t,2),r=n.round(1.6*t,2),i=n.round(.8*t,2);return\"M\"+i+\",\"+e+\"L0,0M\"+i+\",-\"+e+\"L0,0M-\"+r+\",0L0,0\"},needLine:!0,noDot:!0,noFill:!0},\"y-right\":{n:40,f:function(t){var e=n.round(1.2*t,2),r=n.round(1.6*t,2),i=n.round(.8*t,2);return\"M-\"+i+\",\"+e+\"L0,0M-\"+i+\",-\"+e+\"L0,0M\"+r+\",0L0,0\"},needLine:!0,noDot:!0,noFill:!0},\"line-ew\":{n:41,f:function(t){var e=n.round(1.4*t,2);return\"M\"+e+\",0H-\"+e},needLine:!0,noDot:!0,noFill:!0},\"line-ns\":{n:42,f:function(t){var e=n.round(1.4*t,2);return\"M0,\"+e+\"V-\"+e},needLine:!0,noDot:!0,noFill:!0},\"line-ne\":{n:43,f:function(t){var e=n.round(t,2);return\"M\"+e+\",-\"+e+\"L-\"+e+\",\"+e},needLine:!0,noDot:!0,noFill:!0},\"line-nw\":{n:44,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"L-\"+e+\",-\"+e},needLine:!0,noDot:!0,noFill:!0},\"arrow-up\":{n:45,f:function(t){var e=n.round(t,2);return\"M0,0L-\"+e+\",\"+n.round(2*t,2)+\"H\"+e+\"Z\"},noDot:!0},\"arrow-down\":{n:46,f:function(t){var e=n.round(t,2);return\"M0,0L-\"+e+\",-\"+n.round(2*t,2)+\"H\"+e+\"Z\"},noDot:!0},\"arrow-left\":{n:47,f:function(t){var e=n.round(2*t,2),r=n.round(t,2);return\"M0,0L\"+e+\",-\"+r+\"V\"+r+\"Z\"},noDot:!0},\"arrow-right\":{n:48,f:function(t){var e=n.round(2*t,2),r=n.round(t,2);return\"M0,0L-\"+e+\",-\"+r+\"V\"+r+\"Z\"},noDot:!0},\"arrow-bar-up\":{n:49,f:function(t){var e=n.round(t,2);return\"M-\"+e+\",0H\"+e+\"M0,0L-\"+e+\",\"+n.round(2*t,2)+\"H\"+e+\"Z\"},needLine:!0,noDot:!0},\"arrow-bar-down\":{n:50,f:function(t){var e=n.round(t,2);return\"M-\"+e+\",0H\"+e+\"M0,0L-\"+e+\",-\"+n.round(2*t,2)+\"H\"+e+\"Z\"},needLine:!0,noDot:!0},\"arrow-bar-left\":{n:51,f:function(t){var e=n.round(2*t,2),r=n.round(t,2);return\"M0,-\"+r+\"V\"+r+\"M0,0L\"+e+\",-\"+r+\"V\"+r+\"Z\"},needLine:!0,noDot:!0},\"arrow-bar-right\":{n:52,f:function(t){var e=n.round(2*t,2),r=n.round(t,2);return\"M0,-\"+r+\"V\"+r+\"M0,0L-\"+e+\",-\"+r+\"V\"+r+\"Z\"},needLine:!0,noDot:!0}}},{\"@plotly/d3\":58}],390:[function(t,e,r){\"use strict\";e.exports={visible:{valType:\"boolean\",editType:\"calc\"},type:{valType:\"enumerated\",values:[\"percent\",\"constant\",\"sqrt\",\"data\"],editType:\"calc\"},symmetric:{valType:\"boolean\",editType:\"calc\"},array:{valType:\"data_array\",editType:\"calc\"},arrayminus:{valType:\"data_array\",editType:\"calc\"},value:{valType:\"number\",min:0,dflt:10,editType:\"calc\"},valueminus:{valType:\"number\",min:0,dflt:10,editType:\"calc\"},traceref:{valType:\"integer\",min:0,dflt:0,editType:\"style\"},tracerefminus:{valType:\"integer\",min:0,dflt:0,editType:\"style\"},copy_ystyle:{valType:\"boolean\",editType:\"plot\"},copy_zstyle:{valType:\"boolean\",editType:\"style\"},color:{valType:\"color\",editType:\"style\"},thickness:{valType:\"number\",min:0,dflt:2,editType:\"style\"},width:{valType:\"number\",min:0,editType:\"plot\"},editType:\"calc\",_deprecated:{opacity:{valType:\"number\",editType:\"style\"}}}},{}],391:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../registry\"),a=t(\"../../plots/cartesian/axes\"),o=t(\"../../lib\"),s=t(\"./compute_error\");function l(t,e,r,i){var l=e[\"error_\"+i]||{},c=[];if(l.visible&&-1!==[\"linear\",\"log\"].indexOf(r.type)){for(var u=s(l),f=0;f0;e.each((function(e){var f,h=e[0].trace,p=h.error_x||{},d=h.error_y||{};h.ids&&(f=function(t){return t.id});var g=o.hasMarkers(h)&&h.marker.maxdisplayed>0;d.visible||p.visible||(e=[]);var m=n.select(this).selectAll(\"g.errorbar\").data(e,f);if(m.exit().remove(),e.length){p.visible||m.selectAll(\"path.xerror\").remove(),d.visible||m.selectAll(\"path.yerror\").remove(),m.style(\"opacity\",1);var v=m.enter().append(\"g\").classed(\"errorbar\",!0);u&&v.style(\"opacity\",0).transition().duration(s.duration).style(\"opacity\",1),a.setClipUrl(m,r.layerClipId,t),m.each((function(t){var e=n.select(this),r=function(t,e,r){var n={x:e.c2p(t.x),y:r.c2p(t.y)};void 0!==t.yh&&(n.yh=r.c2p(t.yh),n.ys=r.c2p(t.ys),i(n.ys)||(n.noYS=!0,n.ys=r.c2p(t.ys,!0)));void 0!==t.xh&&(n.xh=e.c2p(t.xh),n.xs=e.c2p(t.xs),i(n.xs)||(n.noXS=!0,n.xs=e.c2p(t.xs,!0)));return n}(t,l,c);if(!g||t.vis){var a,o=e.select(\"path.yerror\");if(d.visible&&i(r.x)&&i(r.yh)&&i(r.ys)){var f=d.width;a=\"M\"+(r.x-f)+\",\"+r.yh+\"h\"+2*f+\"m-\"+f+\",0V\"+r.ys,r.noYS||(a+=\"m-\"+f+\",0h\"+2*f),!o.size()?o=e.append(\"path\").style(\"vector-effect\",\"non-scaling-stroke\").classed(\"yerror\",!0):u&&(o=o.transition().duration(s.duration).ease(s.easing)),o.attr(\"d\",a)}else o.remove();var h=e.select(\"path.xerror\");if(p.visible&&i(r.y)&&i(r.xh)&&i(r.xs)){var m=(p.copy_ystyle?d:p).width;a=\"M\"+r.xh+\",\"+(r.y-m)+\"v\"+2*m+\"m0,-\"+m+\"H\"+r.xs,r.noXS||(a+=\"m0,-\"+m+\"v\"+2*m),!h.size()?h=e.append(\"path\").style(\"vector-effect\",\"non-scaling-stroke\").classed(\"xerror\",!0):u&&(h=h.transition().duration(s.duration).ease(s.easing)),h.attr(\"d\",a)}else h.remove()}}))}}))}},{\"../../traces/scatter/subtypes\":951,\"../drawing\":388,\"@plotly/d3\":58,\"fast-isnumeric\":190}],396:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../color\");e.exports=function(t){t.each((function(t){var e=t[0].trace,r=e.error_y||{},a=e.error_x||{},o=n.select(this);o.selectAll(\"path.yerror\").style(\"stroke-width\",r.thickness+\"px\").call(i.stroke,r.color),a.copy_ystyle&&(a=r),o.selectAll(\"path.xerror\").style(\"stroke-width\",a.thickness+\"px\").call(i.stroke,a.color)}))}},{\"../color\":366,\"@plotly/d3\":58}],397:[function(t,e,r){\"use strict\";var n=t(\"../../plots/font_attributes\"),i=t(\"./layout_attributes\").hoverlabel,a=t(\"../../lib/extend\").extendFlat;e.exports={hoverlabel:{bgcolor:a({},i.bgcolor,{arrayOk:!0}),bordercolor:a({},i.bordercolor,{arrayOk:!0}),font:n({arrayOk:!0,editType:\"none\"}),align:a({},i.align,{arrayOk:!0}),namelength:a({},i.namelength,{arrayOk:!0}),editType:\"none\"}}},{\"../../lib/extend\":493,\"../../plots/font_attributes\":585,\"./layout_attributes\":407}],398:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../registry\");function a(t,e,r,i){i=i||n.identity,Array.isArray(t)&&(e[0][r]=i(t))}e.exports=function(t){var e=t.calcdata,r=t._fullLayout;function o(t){return function(e){return n.coerceHoverinfo({hoverinfo:e},{_module:t._module},r)}}for(var s=0;s=0&&r.index_[0]._length||ot<0||ot>w[0]._length)return d.unhoverRaw(t,e)}if(e.pointerX=at+_[0]._offset,e.pointerY=ot+w[0]._offset,V=\"xval\"in e?v.flat(l,e.xval):v.p2c(_,at),H=\"yval\"in e?v.flat(l,e.yval):v.p2c(w,ot),!i(V[0])||!i(H[0]))return o.warn(\"Fx.hover failed\",e,t),d.unhoverRaw(t,e)}var ct=1/0;function ut(t,r){for(G=0;Gtt&&(et.splice(0,tt),ct=et[0].distance),y&&0!==B&&0===et.length){$.distance=B,$.index=!1;var f=W._module.hoverPoints($,K,Q,\"closest\",{hoverLayer:u._hoverlayer});if(f&&(f=f.filter((function(t){return t.spikeDistance<=B}))),f&&f.length){var h,d=f.filter((function(t){return t.xa.showspikes&&\"hovered data\"!==t.xa.spikesnap}));if(d.length){var g=d[0];i(g.x0)&&i(g.y0)&&(h=ht(g),(!nt.vLinePoint||nt.vLinePoint.spikeDistance>h.spikeDistance)&&(nt.vLinePoint=h))}var m=f.filter((function(t){return t.ya.showspikes&&\"hovered data\"!==t.ya.spikesnap}));if(m.length){var x=m[0];i(x.x0)&&i(x.y0)&&(h=ht(x),(!nt.hLinePoint||nt.hLinePoint.spikeDistance>h.spikeDistance)&&(nt.hLinePoint=h))}}}}}function ft(t,e,r){for(var n,i=null,a=1/0,o=0;o0&&Math.abs(t.distance)Tt-1;Mt--)Ct(et[Mt]);et=St,mt()}var Pt=t._hoverdata,It=[],Ot=j(t),zt=U(t);for(q=0;q1||et.length>1)||\"closest\"===P&&it&&et.length>1,Wt=p.combine(u.plot_bgcolor||p.background,u.paper_bgcolor),Xt=I(et,{gd:t,hovermode:P,rotateLabels:Yt,bgColor:Wt,container:u._hoverlayer,outerContainer:u._paper.node(),commonLabelOpts:u.hoverlabel,hoverdistance:u.hoverdistance});v.isUnifiedHover(P)||(!function(t,e,r){var n,i,a,o,s,l,c,u=0,f=1,h=t.size(),p=new Array(h),d=0;function g(t){var e=t[0],r=t[t.length-1];if(i=e.pmin-e.pos-e.dp+e.size,a=r.pos+r.dp+r.size-e.pmax,i>.01){for(s=t.length-1;s>=0;s--)t[s].dp+=i;n=!1}if(!(a<.01)){if(i<-.01){for(s=t.length-1;s>=0;s--)t[s].dp-=a;n=!1}if(n){var c=0;for(o=0;oe.pmax&&c++;for(o=t.length-1;o>=0&&!(c<=0);o--)(l=t[o]).pos>e.pmax-1&&(l.del=!0,c--);for(o=0;o=0;s--)t[s].dp-=a;for(o=t.length-1;o>=0&&!(c<=0);o--)(l=t[o]).pos+l.dp+l.size>e.pmax&&(l.del=!0,c--)}}}t.each((function(t){var n=t[e],i=\"x\"===n._id.charAt(0),a=n.range;0===d&&a&&a[0]>a[1]!==i&&(f=-1),p[d++]=[{datum:t,traceIndex:t.trace.index,dp:0,pos:t.pos,posref:t.posref,size:t.by*(i?T:1)/2,pmin:0,pmax:i?r.width:r.height}]})),p.sort((function(t,e){return t[0].posref-e[0].posref||f*(e[0].traceIndex-t[0].traceIndex)}));for(;!n&&u<=h;){for(u++,n=!0,o=0;o.01&&y.pmin===x.pmin&&y.pmax===x.pmax){for(s=v.length-1;s>=0;s--)v[s].dp+=i;for(m.push.apply(m,v),p.splice(o+1,1),c=0,s=m.length-1;s>=0;s--)c+=m[s].dp;for(a=c/m.length,s=m.length-1;s>=0;s--)m[s].dp-=a;n=!1}else o++}p.forEach(g)}for(o=p.length-1;o>=0;o--){var b=p[o];for(s=b.length-1;s>=0;s--){var _=b[s],w=_.datum;w.offset=_.dp,w.del=_.del}}}(Xt,Yt?\"xa\":\"ya\",u),z(Xt,Yt,u._invScaleX,u._invScaleY));if(s&&s.tagName){var Zt=m.getComponentMethod(\"annotations\",\"hasClickToShow\")(t,It);f(n.select(s),Zt?\"pointer\":\"\")}if(!s||a||!function(t,e,r){if(!r||r.length!==t._hoverdata.length)return!0;for(var n=r.length-1;n>=0;n--){var i=r[n],a=t._hoverdata[n];if(i.curveNumber!==a.curveNumber||String(i.pointNumber)!==String(a.pointNumber)||String(i.pointNumbers)!==String(a.pointNumbers))return!0}return!1}(t,0,Pt))return;Pt&&t.emit(\"plotly_unhover\",{event:e,points:Pt});t.emit(\"plotly_hover\",{event:e,points:t._hoverdata,xaxes:_,yaxes:w,xvals:V,yvals:H})}(t,e,r,a,s)}))},r.loneHover=function(t,e){var r=!0;Array.isArray(t)||(r=!1,t=[t]);var i=e.gd,a=j(i),o=U(i),s=I(t.map((function(t){var r=t._x0||t.x0||t.x||0,n=t._x1||t.x1||t.x||0,s=t._y0||t.y0||t.y||0,l=t._y1||t.y1||t.y||0,c=t.eventData;if(c){var u=Math.min(r,n),f=Math.max(r,n),h=Math.min(s,l),d=Math.max(s,l),g=t.trace;if(m.traceIs(g,\"gl3d\")){var v=i._fullLayout[g.scene]._scene.container,y=v.offsetLeft,x=v.offsetTop;u+=y,f+=y,h+=x,d+=x}c.bbox={x0:u+o,x1:f+o,y0:h+a,y1:d+a},e.inOut_bbox&&e.inOut_bbox.push(c.bbox)}else c=!1;return{color:t.color||p.defaultLine,x0:t.x0||t.x||0,x1:t.x1||t.x||0,y0:t.y0||t.y||0,y1:t.y1||t.y||0,xLabel:t.xLabel,yLabel:t.yLabel,zLabel:t.zLabel,text:t.text,name:t.name,idealAlign:t.idealAlign,borderColor:t.borderColor,fontFamily:t.fontFamily,fontSize:t.fontSize,fontColor:t.fontColor,nameLength:t.nameLength,textAlign:t.textAlign,trace:t.trace||{index:0,hoverinfo:\"\"},xa:{_offset:0},ya:{_offset:0},index:0,hovertemplate:t.hovertemplate||!1,hovertemplateLabels:t.hovertemplateLabels||!1,eventData:c}})),{gd:i,hovermode:\"closest\",rotateLabels:!1,bgColor:e.bgColor||p.background,container:n.select(e.container),outerContainer:e.outerContainer||e.container}),l=0,c=0;return s.sort((function(t,e){return t.y0-e.y0})).each((function(t,r){var n=t.y0-t.by/2;t.offset=n-5([\\s\\S]*)<\\/extra>/;function I(t,e){var r=e.gd,i=r._fullLayout,a=e.hovermode,c=e.rotateLabels,f=e.bgColor,d=e.container,g=e.outerContainer,w=e.commonLabelOpts||{};if(0===t.length)return[[]];var T=e.fontFamily||y.HOVERFONT,k=e.fontSize||y.HOVERFONTSIZE,A=t[0],E=A.xa,L=A.ya,P=a.charAt(0),I=A[P+\"Label\"],z=V(r,g),D=z.top,R=z.width,F=z.height,B=void 0!==I&&A.distance<=e.hoverdistance&&(\"x\"===a||\"y\"===a);if(B){var N,j,U=!0;for(N=0;Ni.width-b?(m=i.width-b,e.attr(\"d\",\"M\"+(b-M)+\",0L\"+b+\",\"+x+M+\"v\"+x+(2*S+y.height)+\"H-\"+b+\"V\"+x+M+\"H\"+(b-2*M)+\"Z\")):e.attr(\"d\",\"M0,0L\"+M+\",\"+x+M+\"H\"+(S+y.width/2)+\"v\"+x+(2*S+y.height)+\"H-\"+(S+y.width/2)+\"V\"+x+M+\"H-\"+M+\"Z\")}else{var _,C,P;\"right\"===L.side?(_=\"start\",C=1,P=\"\",m=E._offset+E._length):(_=\"end\",C=-1,P=\"-\",m=E._offset),v=L._offset+(A.y0+A.y1)/2,l.attr(\"text-anchor\",_),e.attr(\"d\",\"M0,0L\"+P+M+\",\"+M+\"V\"+(S+y.height/2)+\"h\"+P+(2*S+y.width)+\"V-\"+(S+y.height/2)+\"H\"+P+M+\"V-\"+M+\"Z\");var O,z=y.height/2,R=D-y.top-z,F=\"clip\"+i._uid+\"commonlabel\"+L._id;if(m=0?at:ot+ct=0?ot:vt+ct=0?nt:it+ut=0?it:yt+ut=0,\"top\"!==t.idealAlign&&G||!Y?G?(z+=j/2,t.anchor=\"start\"):t.anchor=\"middle\":(z-=j/2,t.anchor=\"end\");else if(t.pos=z,G=P+N/2+W<=R,Y=P-N/2-W>=0,\"left\"!==t.idealAlign&&G||!Y)if(G)P+=N/2,t.anchor=\"start\";else{t.anchor=\"middle\";var X=W/2,Z=P+X-R,J=P-X;Z>0&&(P-=Z),J<0&&(P+=-J)}else P-=N/2,t.anchor=\"end\";w.attr(\"text-anchor\",t.anchor),E&&A.attr(\"text-anchor\",t.anchor),e.attr(\"transform\",s(P,z)+(c?l(_):\"\"))})),xt}function O(t,e,r,n,i,a){var s=\"\",l=\"\";void 0!==t.nameOverride&&(t.name=t.nameOverride),t.name&&(t.trace._meta&&(t.name=o.templateString(t.name,t.trace._meta)),s=B(t.name,t.nameLength));var c=r.charAt(0),u=\"x\"===c?\"y\":\"x\";void 0!==t.zLabel?(void 0!==t.xLabel&&(l+=\"x: \"+t.xLabel+\"
\"),void 0!==t.yLabel&&(l+=\"y: \"+t.yLabel+\"
\"),\"choropleth\"!==t.trace.type&&\"choroplethmapbox\"!==t.trace.type&&(l+=(l?\"z: \":\"\")+t.zLabel)):e&&t[c+\"Label\"]===i?l=t[u+\"Label\"]||\"\":void 0===t.xLabel?void 0!==t.yLabel&&\"scattercarpet\"!==t.trace.type&&(l=t.yLabel):l=void 0===t.yLabel?t.xLabel:\"(\"+t.xLabel+\", \"+t.yLabel+\")\",!t.text&&0!==t.text||Array.isArray(t.text)||(l+=(l?\"
\":\"\")+t.text),void 0!==t.extraText&&(l+=(l?\"
\":\"\")+t.extraText),a&&\"\"===l&&!t.hovertemplate&&(\"\"===s&&a.remove(),l=s);var f=t.hovertemplate||!1;if(f){var h=t.hovertemplateLabels||t;t[c+\"Label\"]!==i&&(h[c+\"other\"]=h[c+\"Val\"],h[c+\"otherLabel\"]=h[c+\"Label\"]),l=(l=o.hovertemplateString(f,h,n._d3locale,t.eventData[0]||{},t.trace._meta)).replace(P,(function(e,r){return s=B(r,t.nameLength),\"\"}))}return[l,s]}function z(t,e,r,i){var a=function(t){return t*r},o=function(t){return t*i};t.each((function(t){var r=n.select(this);if(t.del)return r.remove();var i=r.select(\"text.nums\"),s=t.anchor,l=\"end\"===s?-1:1,c={start:1,end:-1,middle:0}[s],f=c*(M+S),p=f+c*(t.txwidth+S),d=0,g=t.offset,m=\"middle\"===s;m&&(f-=t.tx2width/2,p+=t.txwidth/2+S),e&&(g*=-A,d=t.offset*k),r.select(\"path\").attr(\"d\",m?\"M-\"+a(t.bx/2+t.tx2width/2)+\",\"+o(g-t.by/2)+\"h\"+a(t.bx)+\"v\"+o(t.by)+\"h-\"+a(t.bx)+\"Z\":\"M0,0L\"+a(l*M+d)+\",\"+o(M+g)+\"v\"+o(t.by/2-M)+\"h\"+a(l*t.bx)+\"v-\"+o(t.by)+\"H\"+a(l*M+d)+\"V\"+o(g-M)+\"Z\");var v=d+f,y=g+t.ty0-t.by/2+S,x=t.textAlign||\"auto\";\"auto\"!==x&&(\"left\"===x&&\"start\"!==s?(i.attr(\"text-anchor\",\"start\"),v=m?-t.bx/2-t.tx2width/2+S:-t.bx-S):\"right\"===x&&\"end\"!==s&&(i.attr(\"text-anchor\",\"end\"),v=m?t.bx/2-t.tx2width/2-S:t.bx+S)),i.call(u.positionText,a(v),o(y)),t.tx2width&&(r.select(\"text.name\").call(u.positionText,a(p+c*S+d),o(g+t.ty0-t.by/2+S)),r.select(\"rect\").call(h.setRect,a(p+(c-1)*t.tx2width/2+d),o(g-t.by/2-1),a(t.tx2width),o(t.by+2)))}))}function D(t,e){var r=t.index,n=t.trace||{},a=t.cd[0],s=t.cd[r]||{};function l(t){return t||i(t)&&0===t}var c=Array.isArray(r)?function(t,e){var i=o.castOption(a,r,t);return l(i)?i:o.extractOption({},n,\"\",e)}:function(t,e){return o.extractOption(s,n,t,e)};function u(e,r,n){var i=c(r,n);l(i)&&(t[e]=i)}if(u(\"hoverinfo\",\"hi\",\"hoverinfo\"),u(\"bgcolor\",\"hbg\",\"hoverlabel.bgcolor\"),u(\"borderColor\",\"hbc\",\"hoverlabel.bordercolor\"),u(\"fontFamily\",\"htf\",\"hoverlabel.font.family\"),u(\"fontSize\",\"hts\",\"hoverlabel.font.size\"),u(\"fontColor\",\"htc\",\"hoverlabel.font.color\"),u(\"nameLength\",\"hnl\",\"hoverlabel.namelength\"),u(\"textAlign\",\"hta\",\"hoverlabel.align\"),t.posref=\"y\"===e||\"closest\"===e&&\"h\"===n.orientation?t.xa._offset+(t.x0+t.x1)/2:t.ya._offset+(t.y0+t.y1)/2,t.x0=o.constrain(t.x0,0,t.xa._length),t.x1=o.constrain(t.x1,0,t.xa._length),t.y0=o.constrain(t.y0,0,t.ya._length),t.y1=o.constrain(t.y1,0,t.ya._length),void 0!==t.xLabelVal&&(t.xLabel=\"xLabel\"in t?t.xLabel:g.hoverLabelText(t.xa,t.xLabelVal,n.xhoverformat),t.xVal=t.xa.c2d(t.xLabelVal)),void 0!==t.yLabelVal&&(t.yLabel=\"yLabel\"in t?t.yLabel:g.hoverLabelText(t.ya,t.yLabelVal,n.yhoverformat),t.yVal=t.ya.c2d(t.yLabelVal)),void 0!==t.zLabelVal&&void 0===t.zLabel&&(t.zLabel=String(t.zLabelVal)),!(isNaN(t.xerr)||\"log\"===t.xa.type&&t.xerr<=0)){var f=g.tickText(t.xa,t.xa.c2l(t.xerr),\"hover\").text;void 0!==t.xerrneg?t.xLabel+=\" +\"+f+\" / -\"+g.tickText(t.xa,t.xa.c2l(t.xerrneg),\"hover\").text:t.xLabel+=\" \\xb1 \"+f,\"x\"===e&&(t.distance+=1)}if(!(isNaN(t.yerr)||\"log\"===t.ya.type&&t.yerr<=0)){var h=g.tickText(t.ya,t.ya.c2l(t.yerr),\"hover\").text;void 0!==t.yerrneg?t.yLabel+=\" +\"+h+\" / -\"+g.tickText(t.ya,t.ya.c2l(t.yerrneg),\"hover\").text:t.yLabel+=\" \\xb1 \"+h,\"y\"===e&&(t.distance+=1)}var p=t.hoverinfo||t.trace.hoverinfo;return p&&\"all\"!==p&&(-1===(p=Array.isArray(p)?p:p.split(\"+\")).indexOf(\"x\")&&(t.xLabel=void 0),-1===p.indexOf(\"y\")&&(t.yLabel=void 0),-1===p.indexOf(\"z\")&&(t.zLabel=void 0),-1===p.indexOf(\"text\")&&(t.text=void 0),-1===p.indexOf(\"name\")&&(t.name=void 0)),t}function R(t,e,r){var n,i,o=r.container,s=r.fullLayout,l=s._size,c=r.event,u=!!e.hLinePoint,f=!!e.vLinePoint;if(o.selectAll(\".spikeline\").remove(),f||u){var d=p.combine(s.plot_bgcolor,s.paper_bgcolor);if(u){var m,v,y=e.hLinePoint;n=y&&y.xa,\"cursor\"===(i=y&&y.ya).spikesnap?(m=c.pointerX,v=c.pointerY):(m=n._offset+y.x,v=i._offset+y.y);var x,b,_=a.readability(y.color,d)<1.5?p.contrast(d):y.color,w=i.spikemode,T=i.spikethickness,k=i.spikecolor||_,A=g.getPxPosition(t,i);if(-1!==w.indexOf(\"toaxis\")||-1!==w.indexOf(\"across\")){if(-1!==w.indexOf(\"toaxis\")&&(x=A,b=m),-1!==w.indexOf(\"across\")){var M=i._counterDomainMin,S=i._counterDomainMax;\"free\"===i.anchor&&(M=Math.min(M,i.position),S=Math.max(S,i.position)),x=l.l+M*l.w,b=l.l+S*l.w}o.insert(\"line\",\":first-child\").attr({x1:x,x2:b,y1:v,y2:v,\"stroke-width\":T,stroke:k,\"stroke-dasharray\":h.dashStyle(i.spikedash,T)}).classed(\"spikeline\",!0).classed(\"crisp\",!0),o.insert(\"line\",\":first-child\").attr({x1:x,x2:b,y1:v,y2:v,\"stroke-width\":T+2,stroke:d}).classed(\"spikeline\",!0).classed(\"crisp\",!0)}-1!==w.indexOf(\"marker\")&&o.insert(\"circle\",\":first-child\").attr({cx:A+(\"right\"!==i.side?T:-T),cy:v,r:T,fill:k}).classed(\"spikeline\",!0)}if(f){var E,L,C=e.vLinePoint;n=C&&C.xa,i=C&&C.ya,\"cursor\"===n.spikesnap?(E=c.pointerX,L=c.pointerY):(E=n._offset+C.x,L=i._offset+C.y);var P,I,O=a.readability(C.color,d)<1.5?p.contrast(d):C.color,z=n.spikemode,D=n.spikethickness,R=n.spikecolor||O,F=g.getPxPosition(t,n);if(-1!==z.indexOf(\"toaxis\")||-1!==z.indexOf(\"across\")){if(-1!==z.indexOf(\"toaxis\")&&(P=F,I=L),-1!==z.indexOf(\"across\")){var B=n._counterDomainMin,N=n._counterDomainMax;\"free\"===n.anchor&&(B=Math.min(B,n.position),N=Math.max(N,n.position)),P=l.t+(1-N)*l.h,I=l.t+(1-B)*l.h}o.insert(\"line\",\":first-child\").attr({x1:E,x2:E,y1:P,y2:I,\"stroke-width\":D,stroke:R,\"stroke-dasharray\":h.dashStyle(n.spikedash,D)}).classed(\"spikeline\",!0).classed(\"crisp\",!0),o.insert(\"line\",\":first-child\").attr({x1:E,x2:E,y1:P,y2:I,\"stroke-width\":D+2,stroke:d}).classed(\"spikeline\",!0).classed(\"crisp\",!0)}-1!==z.indexOf(\"marker\")&&o.insert(\"circle\",\":first-child\").attr({cx:E,cy:F-(\"top\"!==n.side?D:-D),r:D,fill:R}).classed(\"spikeline\",!0)}}}function F(t,e){return!e||(e.vLinePoint!==t._spikepoints.vLinePoint||e.hLinePoint!==t._spikepoints.hLinePoint)}function B(t,e){return u.plainText(t||\"\",{len:e,allowedTags:[\"br\",\"sub\",\"sup\",\"b\",\"i\",\"em\"]})}function N(t,e,r){var n=e[t+\"a\"],i=e[t+\"Val\"],a=e.cd[0];if(\"category\"===n.type)i=n._categoriesMap[i];else if(\"date\"===n.type){var o=e.trace[t+\"periodalignment\"];if(o){var s=e.cd[e.index],l=s[t+\"Start\"];void 0===l&&(l=s[t]);var c=s[t+\"End\"];void 0===c&&(c=s[t]);var u=c-l;\"end\"===o?i+=u:\"middle\"===o&&(i+=u/2)}i=n.d2c(i)}return a&&a.t&&a.t.posLetter===n._id&&(\"group\"!==r.boxmode&&\"group\"!==r.violinmode||(i+=a.t.dPos)),i}function j(t){return t.offsetTop+t.clientTop}function U(t){return t.offsetLeft+t.clientLeft}function V(t,e){var r=t._fullLayout,n=e.getBoundingClientRect(),i=n.x,a=n.y,s=i+n.width,l=a+n.height,c=o.apply3DTransform(r._invTransform)(i,a),u=o.apply3DTransform(r._invTransform)(s,l),f=c[0],h=c[1],p=u[0],d=u[1];return{x:f,y:h,width:p-f,height:d-h,top:Math.min(h,d),left:Math.min(f,p),right:Math.max(f,p),bottom:Math.max(h,d)}}},{\"../../lib\":503,\"../../lib/events\":492,\"../../lib/override_cursor\":514,\"../../lib/svg_text_utils\":529,\"../../plots/cartesian/axes\":554,\"../../registry\":638,\"../color\":366,\"../dragelement\":385,\"../drawing\":388,\"../legend/defaults\":418,\"../legend/draw\":419,\"./constants\":400,\"./helpers\":402,\"@plotly/d3\":58,\"fast-isnumeric\":190,tinycolor2:312}],404:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../color\"),a=t(\"./helpers\").isUnifiedHover;e.exports=function(t,e,r,o){o=o||{};var s=e.legend;function l(t){o.font[t]||(o.font[t]=s?e.legend.font[t]:e.font[t])}e&&a(e.hovermode)&&(o.font||(o.font={}),l(\"size\"),l(\"family\"),l(\"color\"),s?(o.bgcolor||(o.bgcolor=i.combine(e.legend.bgcolor,e.paper_bgcolor)),o.bordercolor||(o.bordercolor=e.legend.bordercolor)):o.bgcolor||(o.bgcolor=e.paper_bgcolor)),r(\"hoverlabel.bgcolor\",o.bgcolor),r(\"hoverlabel.bordercolor\",o.bordercolor),r(\"hoverlabel.namelength\",o.namelength),n.coerceFont(r,\"hoverlabel.font\",o.font),r(\"hoverlabel.align\",o.align)}},{\"../../lib\":503,\"../color\":366,\"./helpers\":402}],405:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e){function r(r,a){return void 0!==e[r]?e[r]:n.coerce(t,e,i,r,a)}return r(\"clickmode\"),r(\"hovermode\")}},{\"../../lib\":503,\"./layout_attributes\":407}],406:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../dragelement\"),o=t(\"./helpers\"),s=t(\"./layout_attributes\"),l=t(\"./hover\");e.exports={moduleType:\"component\",name:\"fx\",constants:t(\"./constants\"),schema:{layout:s},attributes:t(\"./attributes\"),layoutAttributes:s,supplyLayoutGlobalDefaults:t(\"./layout_global_defaults\"),supplyDefaults:t(\"./defaults\"),supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\"),getDistanceFunction:o.getDistanceFunction,getClosest:o.getClosest,inbox:o.inbox,quadrature:o.quadrature,appendArrayPointValue:o.appendArrayPointValue,castHoverOption:function(t,e,r){return i.castOption(t,e,\"hoverlabel.\"+r)},castHoverinfo:function(t,e,r){return i.castOption(t,r,\"hoverinfo\",(function(r){return i.coerceHoverinfo({hoverinfo:r},{_module:t._module},e)}))},hover:l.hover,unhover:a.unhover,loneHover:l.loneHover,loneUnhover:function(t){var e=i.isD3Selection(t)?t:n.select(t);e.selectAll(\"g.hovertext\").remove(),e.selectAll(\".spikeline\").remove()},click:t(\"./click\")}},{\"../../lib\":503,\"../dragelement\":385,\"./attributes\":397,\"./calc\":398,\"./click\":399,\"./constants\":400,\"./defaults\":401,\"./helpers\":402,\"./hover\":403,\"./layout_attributes\":407,\"./layout_defaults\":408,\"./layout_global_defaults\":409,\"@plotly/d3\":58}],407:[function(t,e,r){\"use strict\";var n=t(\"./constants\"),i=t(\"../../plots/font_attributes\"),a=i({editType:\"none\"});a.family.dflt=n.HOVERFONT,a.size.dflt=n.HOVERFONTSIZE,e.exports={clickmode:{valType:\"flaglist\",flags:[\"event\",\"select\"],dflt:\"event\",editType:\"plot\",extras:[\"none\"]},dragmode:{valType:\"enumerated\",values:[\"zoom\",\"pan\",\"select\",\"lasso\",\"drawclosedpath\",\"drawopenpath\",\"drawline\",\"drawrect\",\"drawcircle\",\"orbit\",\"turntable\",!1],dflt:\"zoom\",editType:\"modebar\"},hovermode:{valType:\"enumerated\",values:[\"x\",\"y\",\"closest\",!1,\"x unified\",\"y unified\"],dflt:\"closest\",editType:\"modebar\"},hoverdistance:{valType:\"integer\",min:-1,dflt:20,editType:\"none\"},spikedistance:{valType:\"integer\",min:-1,dflt:-1,editType:\"none\"},hoverlabel:{bgcolor:{valType:\"color\",editType:\"none\"},bordercolor:{valType:\"color\",editType:\"none\"},font:a,grouptitlefont:i({editType:\"none\"}),align:{valType:\"enumerated\",values:[\"left\",\"right\",\"auto\"],dflt:\"auto\",editType:\"none\"},namelength:{valType:\"integer\",min:-1,dflt:15,editType:\"none\"},editType:\"none\"},selectdirection:{valType:\"enumerated\",values:[\"h\",\"v\",\"d\",\"any\"],dflt:\"any\",editType:\"none\"}}},{\"../../plots/font_attributes\":585,\"./constants\":400}],408:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\"),a=t(\"./hovermode_defaults\"),o=t(\"./hoverlabel_defaults\");e.exports=function(t,e){function r(r,a){return n.coerce(t,e,i,r,a)}a(t,e)&&(r(\"hoverdistance\"),r(\"spikedistance\")),\"select\"===r(\"dragmode\")&&r(\"selectdirection\");var s=e._has(\"mapbox\"),l=e._has(\"geo\"),c=e._basePlotModules.length;\"zoom\"===e.dragmode&&((s||l)&&1===c||s&&l&&2===c)&&(e.dragmode=\"pan\"),o(t,e,r),n.coerceFont(r,\"hoverlabel.grouptitlefont\",e.hoverlabel.font)}},{\"../../lib\":503,\"./hoverlabel_defaults\":404,\"./hovermode_defaults\":405,\"./layout_attributes\":407}],409:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./hoverlabel_defaults\"),a=t(\"./layout_attributes\");e.exports=function(t,e){i(t,e,(function(r,i){return n.coerce(t,e,a,r,i)}))}},{\"../../lib\":503,\"./hoverlabel_defaults\":404,\"./layout_attributes\":407}],410:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../lib/regex\").counter,a=t(\"../../plots/domain\").attributes,o=t(\"../../plots/cartesian/constants\").idRegex,s=t(\"../../plot_api/plot_template\"),l={rows:{valType:\"integer\",min:1,editType:\"plot\"},roworder:{valType:\"enumerated\",values:[\"top to bottom\",\"bottom to top\"],dflt:\"top to bottom\",editType:\"plot\"},columns:{valType:\"integer\",min:1,editType:\"plot\"},subplots:{valType:\"info_array\",freeLength:!0,dimensions:2,items:{valType:\"enumerated\",values:[i(\"xy\").toString(),\"\"],editType:\"plot\"},editType:\"plot\"},xaxes:{valType:\"info_array\",freeLength:!0,items:{valType:\"enumerated\",values:[o.x.toString(),\"\"],editType:\"plot\"},editType:\"plot\"},yaxes:{valType:\"info_array\",freeLength:!0,items:{valType:\"enumerated\",values:[o.y.toString(),\"\"],editType:\"plot\"},editType:\"plot\"},pattern:{valType:\"enumerated\",values:[\"independent\",\"coupled\"],dflt:\"coupled\",editType:\"plot\"},xgap:{valType:\"number\",min:0,max:1,editType:\"plot\"},ygap:{valType:\"number\",min:0,max:1,editType:\"plot\"},domain:a({name:\"grid\",editType:\"plot\",noGridCell:!0},{}),xside:{valType:\"enumerated\",values:[\"bottom\",\"bottom plot\",\"top plot\",\"top\"],dflt:\"bottom plot\",editType:\"plot\"},yside:{valType:\"enumerated\",values:[\"left\",\"left plot\",\"right plot\",\"right\"],dflt:\"left plot\",editType:\"plot\"},editType:\"plot\"};function c(t,e,r){var n=e[r+\"axes\"],i=Object.keys((t._splomAxes||{})[r]||{});return Array.isArray(n)?n:i.length?i:void 0}function u(t,e,r,n,i,a){var o=e(t+\"gap\",r),s=e(\"domain.\"+t);e(t+\"side\",n);for(var l=new Array(i),c=s[0],u=(s[1]-c)/(i-o),f=u*(1-o),h=0;h1){if(!h&&!p&&!d)\"independent\"===k(\"pattern\")&&(h=!0);m._hasSubplotGrid=h;var x,b,_=\"top to bottom\"===k(\"roworder\"),w=h?.2:.1,T=h?.3:.1;g&&e._splomGridDflt&&(x=e._splomGridDflt.xside,b=e._splomGridDflt.yside),m._domains={x:u(\"x\",k,w,x,y),y:u(\"y\",k,T,b,v,_)}}else delete e.grid}function k(t,e){return n.coerce(r,m,l,t,e)}},contentDefaults:function(t,e){var r=e.grid;if(r&&r._domains){var n,i,a,o,s,l,u,h=t.grid||{},p=e._subplots,d=r._hasSubplotGrid,g=r.rows,m=r.columns,v=\"independent\"===r.pattern,y=r._axisMap={};if(d){var x=h.subplots||[];l=r.subplots=new Array(g);var b=1;for(n=0;n1);if(!1===_&&(e.legend=void 0),(!1!==_||f.uirevision)&&(p(\"uirevision\",e.uirevision),!1!==_)){p(\"bgcolor\",e.paper_bgcolor),p(\"bordercolor\"),p(\"borderwidth\");var w,T,k,A=i.coerceFont(p,\"font\",e.font),M=\"h\"===p(\"orientation\");if(M?(w=0,n.getComponentMethod(\"rangeslider\",\"isVisible\")(t.xaxis)?(T=1.1,k=\"bottom\"):(T=-.1,k=\"top\")):(w=1.02,T=1,k=\"auto\"),p(\"traceorder\",x),c.isGrouped(e.legend)&&p(\"tracegroupgap\"),p(\"itemsizing\"),p(\"itemwidth\"),p(\"itemclick\"),p(\"itemdoubleclick\"),p(\"groupclick\"),p(\"x\",w),p(\"xanchor\"),p(\"y\",T),p(\"yanchor\",k),p(\"valign\"),i.noneOrAll(f,h,[\"x\",\"y\"]),p(\"title.text\")){p(\"title.side\",M?\"left\":\"top\");var S=i.extendFlat({},A,{size:i.bigFont(A.size)});i.coerceFont(p,\"title.font\",S)}}}},{\"../../lib\":503,\"../../plot_api/plot_template\":543,\"../../plots/attributes\":550,\"../../plots/layout_attributes\":610,\"../../registry\":638,\"./attributes\":416,\"./helpers\":422}],419:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../plots/plots\"),o=t(\"../../registry\"),s=t(\"../../lib/events\"),l=t(\"../dragelement\"),c=t(\"../drawing\"),u=t(\"../color\"),f=t(\"../../lib/svg_text_utils\"),h=t(\"./handle_click\"),p=t(\"./constants\"),d=t(\"../../constants/alignment\"),g=d.LINE_SPACING,m=d.FROM_TL,v=d.FROM_BR,y=t(\"./get_legend_data\"),x=t(\"./style\"),b=t(\"./helpers\");function _(t,e,r,n,i){var a=r.data()[0][0].trace,l={event:i,node:r.node(),curveNumber:a.index,expandedIndex:a._expandedIndex,data:t.data,layout:t.layout,frames:t._transitionData._frames,config:t._context,fullData:t._fullData,fullLayout:t._fullLayout};if(a._group&&(l.group=a._group),o.traceIs(a,\"pie-like\")&&(l.label=r.datum()[0].label),!1!==s.triggerHandler(t,\"plotly_legendclick\",l))if(1===n)e._clickTimeout=setTimeout((function(){t._fullLayout&&h(r,t,n)}),t._context.doubleClickDelay);else if(2===n){e._clickTimeout&&clearTimeout(e._clickTimeout),t._legendMouseDownTime=0,!1!==s.triggerHandler(t,\"plotly_legenddoubleclick\",l)&&h(r,t,n)}}function w(t,e,r){var n,a,s=t.data()[0][0],l=s.trace,u=o.traceIs(l,\"pie-like\"),h=!r._inHover&&e._context.edits.legendText&&!u,d=r._maxNameLength;s.groupTitle?(n=s.groupTitle.text,a=s.groupTitle.font):(a=r.font,r.entries?n=s.text:(n=u?s.label:l.name,l._meta&&(n=i.templateString(n,l._meta))));var g=i.ensureSingle(t,\"text\",\"legendtext\");g.attr(\"text-anchor\",\"start\").call(c.font,a).text(h?T(n,d):n);var m=r.itemwidth+2*p.itemGap;f.positionText(g,m,0),h?g.call(f.makeEditable,{gd:e,text:n}).call(A,t,e,r).on(\"edit\",(function(n){this.text(T(n,d)).call(A,t,e,r);var a=s.trace._fullInput||{},c={};if(o.hasTransform(a,\"groupby\")){var u=o.getTransformIndices(a,\"groupby\"),f=u[u.length-1],h=i.keyedContainer(a,\"transforms[\"+f+\"].styles\",\"target\",\"value.name\");h.set(s.trace._group,n),c=h.constructUpdate()}else c.name=n;return o.call(\"_guiRestyle\",e,c,l.index)})):A(g,t,e,r)}function T(t,e){var r=Math.max(4,e);if(t&&t.trim().length>=r/2)return t;for(var n=r-(t=t||\"\").length;n>0;n--)t+=\" \";return t}function k(t,e){var r,a=e._context.doubleClickDelay,o=1,s=i.ensureSingle(t,\"rect\",\"legendtoggle\",(function(t){e._context.staticPlot||t.style(\"cursor\",\"pointer\").attr(\"pointer-events\",\"all\"),t.call(u.fill,\"rgba(0,0,0,0)\")}));e._context.staticPlot||(s.on(\"mousedown\",(function(){(r=(new Date).getTime())-e._legendMouseDownTimea&&(o=Math.max(o-1,1)),_(e,r,t,o,n.event)}})))}function A(t,e,r,n,i){n._inHover&&t.attr(\"data-notex\",!0),f.convertToTspans(t,r,(function(){!function(t,e,r,n){var i=t.data()[0][0];if(!r._inHover&&i&&!i.trace.showlegend)return void t.remove();var a=t.select(\"g[class*=math-group]\"),o=a.node();r||(r=e._fullLayout.legend);var s,l=r.borderwidth;s=1===n?r.title.font:i.groupTitle?i.groupTitle.font:r.font;var u,h,d=s.size*g;if(o){var m=c.bBox(o);u=m.height,h=m.width,1===n?c.setTranslate(a,l,l+.75*u):c.setTranslate(a,0,.25*u)}else{var v=t.select(1===n?\".legendtitletext\":\".legendtext\"),y=f.lineCount(v),x=v.node();if(u=d*y,h=x?c.bBox(x).width:0,1===n)\"left\"===r.title.side&&(h+=2*p.itemGap),f.positionText(v,l+p.titlePad,l+d);else{var b=2*p.itemGap+r.itemwidth;i.groupTitle&&(b=p.itemGap,h-=r.itemwidth),f.positionText(v,b,-d*((y-1)/2-.3))}}1===n?(r._titleWidth=h,r._titleHeight=u):(i.lineHeight=d,i.height=Math.max(u,16)+3,i.width=h)}(e,r,n,i)}))}function M(t){return i.isRightAnchor(t)?\"right\":i.isCenterAnchor(t)?\"center\":\"left\"}function S(t){return i.isBottomAnchor(t)?\"bottom\":i.isMiddleAnchor(t)?\"middle\":\"top\"}e.exports=function(t,e){return e||(e=t._fullLayout.legend||{}),function(t,e){var r,s,f=t._fullLayout,h=\"legend\"+f._uid,d=e._inHover;d?(r=e.layer,h+=\"-hover\"):r=f._infolayer;if(!r)return;t._legendMouseDownTime||(t._legendMouseDownTime=0);if(d){if(!e.entries)return;s=y(e.entries,e)}else{if(!t.calcdata)return;s=f.showlegend&&y(t.calcdata,e)}var g=f.hiddenlabels||[];if(!(d||f.showlegend&&s.length))return r.selectAll(\".legend\").remove(),f._topdefs.select(\"#\"+h).remove(),a.autoMargin(t,\"legend\");var T=i.ensureSingle(r,\"g\",\"legend\",(function(t){d||t.attr(\"pointer-events\",\"all\")})),E=i.ensureSingleById(f._topdefs,\"clipPath\",h,(function(t){t.append(\"rect\")})),L=i.ensureSingle(T,\"rect\",\"bg\",(function(t){t.attr(\"shape-rendering\",\"crispEdges\")}));L.call(u.stroke,e.bordercolor).call(u.fill,e.bgcolor).style(\"stroke-width\",e.borderwidth+\"px\");var C=i.ensureSingle(T,\"g\",\"scrollbox\"),P=e.title;if(e._titleWidth=0,e._titleHeight=0,P.text){var I=i.ensureSingle(C,\"text\",\"legendtitletext\");I.attr(\"text-anchor\",\"start\").call(c.font,P.font).text(P.text),A(I,C,t,e,1)}else C.selectAll(\".legendtitletext\").remove();var O=i.ensureSingle(T,\"rect\",\"scrollbar\",(function(t){t.attr(p.scrollBarEnterAttrs).call(u.fill,p.scrollBarColor)})),z=C.selectAll(\"g.groups\").data(s);z.enter().append(\"g\").attr(\"class\",\"groups\"),z.exit().remove();var D=z.selectAll(\"g.traces\").data(i.identity);D.enter().append(\"g\").attr(\"class\",\"traces\"),D.exit().remove(),D.style(\"opacity\",(function(t){var e=t[0].trace;return o.traceIs(e,\"pie-like\")?-1!==g.indexOf(t[0].label)?.5:1:\"legendonly\"===e.visible?.5:1})).each((function(){n.select(this).call(w,t,e)})).call(x,t,e).each((function(){d||n.select(this).call(k,t)})),i.syncOrAsync([a.previousPromises,function(){return function(t,e,r,i){var a=t._fullLayout;i||(i=a.legend);var o=a._size,s=b.isVertical(i),l=b.isGrouped(i),u=i.borderwidth,f=2*u,h=p.itemGap,d=i.itemwidth+2*h,g=2*(u+h),m=S(i),v=i.y<0||0===i.y&&\"top\"===m,y=i.y>1||1===i.y&&\"bottom\"===m,x=i.tracegroupgap;i._maxHeight=Math.max(v||y?a.height/2:o.h,30);var _=0;i._width=0,i._height=0;var w=function(t){var e=0,r=0,n=t.title.side;n&&(-1!==n.indexOf(\"left\")&&(e=t._titleWidth),-1!==n.indexOf(\"top\")&&(r=t._titleHeight));return[e,r]}(i);if(s)r.each((function(t){var e=t[0].height;c.setTranslate(this,u+w[0],u+w[1]+i._height+e/2+h),i._height+=e,i._width=Math.max(i._width,t[0].width)})),_=d+i._width,i._width+=h+d+f,i._height+=g,l&&(e.each((function(t,e){c.setTranslate(this,0,e*i.tracegroupgap)})),i._height+=(i._lgroupsLength-1)*i.tracegroupgap);else{var T=M(i),k=i.x<0||0===i.x&&\"right\"===T,A=i.x>1||1===i.x&&\"left\"===T,E=y||v,L=a.width/2;i._maxWidth=Math.max(k?E&&\"left\"===T?o.l+o.w:L:A?E&&\"right\"===T?o.r+o.w:L:o.w,2*d);var C=0,P=0;r.each((function(t){var e=t[0].width+d;C=Math.max(C,e),P+=e})),_=null;var I=0;if(l){var O=0,z=0,D=0;e.each((function(){var t=0,e=0;n.select(this).selectAll(\"g.traces\").each((function(r){var n=r[0].width,i=r[0].height;c.setTranslate(this,w[0],w[1]+u+h+i/2+e),e+=i,t=Math.max(t,d+n)}));var r=t+h;z>0&&r+u+z>i._maxWidth?(I=Math.max(I,z),z=0,D+=O+x,O=e):O=Math.max(O,e),c.setTranslate(this,z,D),z+=r})),i._width=Math.max(I,z)+u,i._height=D+O+g}else{var R=r.size(),F=P+f+(R-1)*h=i._maxWidth&&(I=Math.max(I,U),N=0,j+=B,i._height+=B,B=0),c.setTranslate(this,w[0]+u+N,w[1]+u+j+e/2+h),U=N+r+h,N+=n,B=Math.max(B,e)})),F?(i._width=N+f,i._height=B+g):(i._width=Math.max(I,U)+f,i._height+=B+g)}}i._width=Math.ceil(Math.max(i._width+w[0],i._titleWidth+2*(u+p.titlePad))),i._height=Math.ceil(Math.max(i._height+w[1],i._titleHeight+2*(u+p.itemGap))),i._effHeight=Math.min(i._height,i._maxHeight);var V=t._context.edits,H=V.legendText||V.legendPosition;r.each((function(t){var e=n.select(this).select(\".legendtoggle\"),r=t[0].height,i=H?d:_||d+t[0].width;s||(i+=h/2),c.setRect(e,0,-r/2,i,r)}))}(t,z,D,e)},function(){var s,u,g,y,x=f._size,b=e.borderwidth;if(!d){if(function(t){var e=t._fullLayout.legend,r=M(e),n=S(e);return a.autoMargin(t,\"legend\",{x:e.x,y:e.y,l:e._width*m[r],r:e._width*v[r],b:e._effHeight*v[n],t:e._effHeight*m[n]})}(t))return;var w=x.l+x.w*e.x-m[M(e)]*e._width,k=x.t+x.h*(1-e.y)-m[S(e)]*e._effHeight;if(f.margin.autoexpand){var A=w,P=k;w=i.constrain(w,0,f.width-e._width),k=i.constrain(k,0,f.height-e._effHeight),w!==A&&i.log(\"Constrain legend.x to make legend fit inside graph\"),k!==P&&i.log(\"Constrain legend.y to make legend fit inside graph\")}c.setTranslate(T,w,k)}if(O.on(\".drag\",null),T.on(\"wheel\",null),d||e._height<=e._maxHeight||t._context.staticPlot){var I=e._effHeight;d&&(I=e._height),L.attr({width:e._width-b,height:I-b,x:b/2,y:b/2}),c.setTranslate(C,0,0),E.select(\"rect\").attr({width:e._width-2*b,height:I-2*b,x:b,y:b}),c.setClipUrl(C,h,t),c.setRect(O,0,0,0,0),delete e._scrollY}else{var z,D,R,F=Math.max(p.scrollBarMinHeight,e._effHeight*e._effHeight/e._height),B=e._effHeight-F-2*p.scrollBarMargin,N=e._height-e._effHeight,j=B/N,U=Math.min(e._scrollY||0,N);L.attr({width:e._width-2*b+p.scrollBarWidth+p.scrollBarMargin,height:e._effHeight-b,x:b/2,y:b/2}),E.select(\"rect\").attr({width:e._width-2*b+p.scrollBarWidth+p.scrollBarMargin,height:e._effHeight-2*b,x:b,y:b+U}),c.setClipUrl(C,h,t),q(U,F,j),T.on(\"wheel\",(function(){q(U=i.constrain(e._scrollY+n.event.deltaY/B*N,0,N),F,j),0!==U&&U!==N&&n.event.preventDefault()}));var V=n.behavior.drag().on(\"dragstart\",(function(){var t=n.event.sourceEvent;z=\"touchstart\"===t.type?t.changedTouches[0].clientY:t.clientY,R=U})).on(\"drag\",(function(){var t=n.event.sourceEvent;2===t.buttons||t.ctrlKey||(D=\"touchmove\"===t.type?t.changedTouches[0].clientY:t.clientY,q(U=function(t,e,r){var n=(r-e)/j+t;return i.constrain(n,0,N)}(R,z,D),F,j))}));O.call(V);var H=n.behavior.drag().on(\"dragstart\",(function(){var t=n.event.sourceEvent;\"touchstart\"===t.type&&(z=t.changedTouches[0].clientY,R=U)})).on(\"drag\",(function(){var t=n.event.sourceEvent;\"touchmove\"===t.type&&(D=t.changedTouches[0].clientY,q(U=function(t,e,r){var n=(e-r)/j+t;return i.constrain(n,0,N)}(R,z,D),F,j))}));C.call(H)}function q(r,n,i){e._scrollY=t._fullLayout.legend._scrollY=r,c.setTranslate(C,0,-r),c.setRect(O,e._width,p.scrollBarMargin+r*i,p.scrollBarWidth,n),E.select(\"rect\").attr(\"y\",b+r)}t._context.edits.legendPosition&&(T.classed(\"cursor-move\",!0),l.init({element:T.node(),gd:t,prepFn:function(){var t=c.getTranslate(T);g=t.x,y=t.y},moveFn:function(t,r){var n=g+t,i=y+r;c.setTranslate(T,n,i),s=l.align(n,0,x.l,x.l+x.w,e.xanchor),u=l.align(i,0,x.t+x.h,x.t,e.yanchor)},doneFn:function(){void 0!==s&&void 0!==u&&o.call(\"_guiRelayout\",t,{\"legend.x\":s,\"legend.y\":u})},clickFn:function(e,n){var i=r.selectAll(\"g.traces\").filter((function(){var t=this.getBoundingClientRect();return n.clientX>=t.left&&n.clientX<=t.right&&n.clientY>=t.top&&n.clientY<=t.bottom}));i.size()>0&&_(t,T,i,e,n)}}))}],t)}(t,e)}},{\"../../constants/alignment\":471,\"../../lib\":503,\"../../lib/events\":492,\"../../lib/svg_text_utils\":529,\"../../plots/plots\":619,\"../../registry\":638,\"../color\":366,\"../dragelement\":385,\"../drawing\":388,\"./constants\":417,\"./get_legend_data\":420,\"./handle_click\":421,\"./helpers\":422,\"./style\":424,\"@plotly/d3\":58}],420:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"./helpers\");e.exports=function(t,e){var r,a,o=e._inHover,s=i.isGrouped(e),l=i.isReversed(e),c={},u=[],f=!1,h={},p=0,d=0;function g(t,r){if(\"\"!==t&&i.isGrouped(e))-1===u.indexOf(t)?(u.push(t),f=!0,c[t]=[r]):c[t].push(r);else{var n=\"~~i\"+p;u.push(n),c[n]=[r],p++}}for(r=0;rA&&(k=A)}w[r][0]._groupMinRank=k,w[r][0]._preGroupSort=r}var M=function(t,e){return t.trace.legendrank-e.trace.legendrank||t._preSort-e._preSort};for(w.forEach((function(t,e){t[0]._preGroupSort=e})),w.sort((function(t,e){return t[0]._groupMinRank-e[0]._groupMinRank||t[0]._preGroupSort-e[0]._preGroupSort})),r=0;rr?r:t}e.exports=function(t,e,r){var v=e._fullLayout;r||(r=v.legend);var y=\"constant\"===r.itemsizing,x=r.itemwidth,b=(x+2*p.itemGap)/2,_=o(b,0),w=function(t,e,r,n){var i;if(t+1)i=t;else{if(!(e&&e.width>0))return 0;i=e.width}return y?n:Math.min(i,r)};function T(t,a,o){var u=t[0].trace,f=u.marker||{},h=f.line||{},p=o?u.visible&&u.type===o:i.traceIs(u,\"bar\"),d=n.select(a).select(\"g.legendpoints\").selectAll(\"path.legend\"+o).data(p?[t]:[]);d.enter().append(\"path\").classed(\"legend\"+o,!0).attr(\"d\",\"M6,6H-6V-6H6Z\").attr(\"transform\",_),d.exit().remove(),d.each((function(t){var i=n.select(this),a=t[0],o=w(a.mlw,f.line,5,2);i.style(\"stroke-width\",o+\"px\");var p=a.mcc;if(!r._inHover&&\"mc\"in a){var d=c(f),g=d.mid;void 0===g&&(g=(d.max+d.min)/2),p=s.tryColorscale(f,\"\")(g)}var v=p||a.mc||f.color,y=f.pattern,x=y&&s.getPatternAttr(y.shape,0,\"\");if(x){var b=s.getPatternAttr(y.bgcolor,0,null),_=s.getPatternAttr(y.fgcolor,0,null),T=y.fgopacity,k=m(y.size,8,10),A=m(y.solidity,.5,1),M=\"legend-\"+u.uid;i.call(s.pattern,\"legend\",e,M,x,k,A,p,y.fillmode,b,_,T)}else i.call(l.fill,v);o&&l.stroke(i,a.mlc||h.color)}))}function k(t,e,r){var o=t[0],s=o.trace,l=r?s.visible&&s.type===r:i.traceIs(s,r),c=n.select(e).select(\"g.legendpoints\").selectAll(\"path.legend\"+r).data(l?[t]:[]);if(c.enter().append(\"path\").classed(\"legend\"+r,!0).attr(\"d\",\"M6,6H-6V-6H6Z\").attr(\"transform\",_),c.exit().remove(),c.size()){var u=(s.marker||{}).line,p=w(h(u.width,o.pts),u,5,2),d=a.minExtend(s,{marker:{line:{width:p}}});d.marker.line.color=u.color;var g=a.minExtend(o,{trace:d});f(c,g,d)}}t.each((function(t){var e=n.select(this),i=a.ensureSingle(e,\"g\",\"layers\");i.style(\"opacity\",t[0].trace.opacity);var s=r.valign,l=t[0].lineHeight,c=t[0].height;if(\"middle\"!==s&&l&&c){var u={top:1,bottom:-1}[s]*(.5*(l-c+3));i.attr(\"transform\",o(0,u))}else i.attr(\"transform\",null);i.selectAll(\"g.legendfill\").data([t]).enter().append(\"g\").classed(\"legendfill\",!0),i.selectAll(\"g.legendlines\").data([t]).enter().append(\"g\").classed(\"legendlines\",!0);var f=i.selectAll(\"g.legendsymbols\").data([t]);f.enter().append(\"g\").classed(\"legendsymbols\",!0),f.selectAll(\"g.legendpoints\").data([t]).enter().append(\"g\").classed(\"legendpoints\",!0)})).each((function(t){var r,i=t[0].trace,o=[];if(i.visible)switch(i.type){case\"histogram2d\":case\"heatmap\":o=[[\"M-15,-2V4H15V-2Z\"]],r=!0;break;case\"choropleth\":case\"choroplethmapbox\":o=[[\"M-6,-6V6H6V-6Z\"]],r=!0;break;case\"densitymapbox\":o=[[\"M-6,0 a6,6 0 1,0 12,0 a 6,6 0 1,0 -12,0\"]],r=\"radial\";break;case\"cone\":o=[[\"M-6,2 A2,2 0 0,0 -6,6 V6L6,4Z\"],[\"M-6,-6 A2,2 0 0,0 -6,-2 L6,-4Z\"],[\"M-6,-2 A2,2 0 0,0 -6,2 L6,0Z\"]],r=!1;break;case\"streamtube\":o=[[\"M-6,2 A2,2 0 0,0 -6,6 H6 A2,2 0 0,1 6,2 Z\"],[\"M-6,-6 A2,2 0 0,0 -6,-2 H6 A2,2 0 0,1 6,-6 Z\"],[\"M-6,-2 A2,2 0 0,0 -6,2 H6 A2,2 0 0,1 6,-2 Z\"]],r=!1;break;case\"surface\":o=[[\"M-6,-6 A2,3 0 0,0 -6,0 H6 A2,3 0 0,1 6,-6 Z\"],[\"M-6,1 A2,3 0 0,1 -6,6 H6 A2,3 0 0,0 6,0 Z\"]],r=!0;break;case\"mesh3d\":o=[[\"M-6,6H0L-6,-6Z\"],[\"M6,6H0L6,-6Z\"],[\"M-6,-6H6L0,6Z\"]],r=!1;break;case\"volume\":o=[[\"M-6,6H0L-6,-6Z\"],[\"M6,6H0L6,-6Z\"],[\"M-6,-6H6L0,6Z\"]],r=!0;break;case\"isosurface\":o=[[\"M-6,6H0L-6,-6Z\"],[\"M6,6H0L6,-6Z\"],[\"M-6,-6 A12,24 0 0,0 6,-6 L0,6Z\"]],r=!1}var u=n.select(this).select(\"g.legendpoints\").selectAll(\"path.legend3dandfriends\").data(o);u.enter().append(\"path\").classed(\"legend3dandfriends\",!0).attr(\"transform\",_).style(\"stroke-miterlimit\",1),u.exit().remove(),u.each((function(t,o){var u,f=n.select(this),h=c(i),p=h.colorscale,g=h.reversescale;if(p){if(!r){var m=p.length;u=0===o?p[g?m-1:0][1]:1===o?p[g?0:m-1][1]:p[Math.floor((m-1)/2)][1]}}else{var v=i.vertexcolor||i.facecolor||i.color;u=a.isArrayOrTypedArray(v)?v[o]||v[0]:v}f.attr(\"d\",t[0]),u?f.call(l.fill,u):f.call((function(t){if(t.size()){var n=\"legendfill-\"+i.uid;s.gradient(t,e,n,d(g,\"radial\"===r),p,\"fill\")}}))}))})).each((function(t){var e=t[0].trace,r=\"waterfall\"===e.type;if(t[0]._distinct&&r){var i=t[0].trace[t[0].dir].marker;return t[0].mc=i.color,t[0].mlw=i.line.width,t[0].mlc=i.line.color,T(t,this,\"waterfall\")}var a=[];e.visible&&r&&(a=t[0].hasTotals?[[\"increasing\",\"M-6,-6V6H0Z\"],[\"totals\",\"M6,6H0L-6,-6H-0Z\"],[\"decreasing\",\"M6,6V-6H0Z\"]]:[[\"increasing\",\"M-6,-6V6H6Z\"],[\"decreasing\",\"M6,6V-6H-6Z\"]]);var o=n.select(this).select(\"g.legendpoints\").selectAll(\"path.legendwaterfall\").data(a);o.enter().append(\"path\").classed(\"legendwaterfall\",!0).attr(\"transform\",_).style(\"stroke-miterlimit\",1),o.exit().remove(),o.each((function(t){var r=n.select(this),i=e[t[0]].marker,a=w(void 0,i.line,5,2);r.attr(\"d\",t[1]).style(\"stroke-width\",a+\"px\").call(l.fill,i.color),a&&r.call(l.stroke,i.line.color)}))})).each((function(t){T(t,this,\"funnel\")})).each((function(t){T(t,this)})).each((function(t){var r=t[0].trace,o=n.select(this).select(\"g.legendpoints\").selectAll(\"path.legendbox\").data(r.visible&&i.traceIs(r,\"box-violin\")?[t]:[]);o.enter().append(\"path\").classed(\"legendbox\",!0).attr(\"d\",\"M6,6H-6V-6H6Z\").attr(\"transform\",_),o.exit().remove(),o.each((function(){var t=n.select(this);if(\"all\"!==r.boxpoints&&\"all\"!==r.points||0!==l.opacity(r.fillcolor)||0!==l.opacity((r.line||{}).color)){var i=w(void 0,r.line,5,2);t.style(\"stroke-width\",i+\"px\").call(l.fill,r.fillcolor),i&&l.stroke(t,r.line.color)}else{var c=a.minExtend(r,{marker:{size:y?12:a.constrain(r.marker.size,2,16),sizeref:1,sizemin:1,sizemode:\"diameter\"}});o.call(s.pointStyle,c,e)}}))})).each((function(t){k(t,this,\"funnelarea\")})).each((function(t){k(t,this,\"pie\")})).each((function(t){var r,i,o=g(t),l=o.showFill,f=o.showLine,h=o.showGradientLine,p=o.showGradientFill,m=o.anyFill,v=o.anyLine,y=t[0],b=y.trace,_=c(b),T=_.colorscale,k=_.reversescale,A=u.hasMarkers(b)||!m?\"M5,0\":v?\"M5,-2\":\"M5,-3\",M=n.select(this),S=M.select(\".legendfill\").selectAll(\"path\").data(l||p?[t]:[]);if(S.enter().append(\"path\").classed(\"js-fill\",!0),S.exit().remove(),S.attr(\"d\",A+\"h\"+x+\"v6h-\"+x+\"z\").call(l?s.fillGroupStyle:function(t){if(t.size()){var r=\"legendfill-\"+b.uid;s.gradient(t,e,r,d(k),T,\"fill\")}}),f||h){var E=w(void 0,b.line,10,5);i=a.minExtend(b,{line:{width:E}}),r=[a.minExtend(y,{trace:i})]}var L=M.select(\".legendlines\").selectAll(\"path\").data(f||h?[r]:[]);L.enter().append(\"path\").classed(\"js-line\",!0),L.exit().remove(),L.attr(\"d\",A+(h?\"l\"+x+\",0.0001\":\"h\"+x)).call(f?s.lineGroupStyle:function(t){if(t.size()){var r=\"legendline-\"+b.uid;s.lineGroupStyle(t),s.gradient(t,e,r,d(k),T,\"stroke\")}})})).each((function(t){var r,i,o=g(t),l=o.anyFill,c=o.anyLine,f=o.showLine,h=o.showMarker,p=t[0],d=p.trace,m=!h&&!c&&!l&&u.hasText(d);function v(t,e,r,n){var i=a.nestedProperty(d,t).get(),o=a.isArrayOrTypedArray(i)&&e?e(i):i;if(y&&o&&void 0!==n&&(o=n),r){if(or[1])return r[1]}return o}function x(t){return p._distinct&&p.index&&t[p.index]?t[p.index]:t[0]}if(h||m||f){var b={},w={};if(h){b.mc=v(\"marker.color\",x),b.mx=v(\"marker.symbol\",x),b.mo=v(\"marker.opacity\",a.mean,[.2,1]),b.mlc=v(\"marker.line.color\",x),b.mlw=v(\"marker.line.width\",a.mean,[0,5],2),w.marker={sizeref:1,sizemin:1,sizemode:\"diameter\"};var T=v(\"marker.size\",a.mean,[2,16],12);b.ms=T,w.marker.size=T}f&&(w.line={width:v(\"line.width\",x,[0,10],5)}),m&&(b.tx=\"Aa\",b.tp=v(\"textposition\",x),b.ts=10,b.tc=v(\"textfont.color\",x),b.tf=v(\"textfont.family\",x)),r=[a.minExtend(p,b)],(i=a.minExtend(d,w)).selectedpoints=null,i.texttemplate=null}var k=n.select(this).select(\"g.legendpoints\"),A=k.selectAll(\"path.scatterpts\").data(h?r:[]);A.enter().insert(\"path\",\":first-child\").classed(\"scatterpts\",!0).attr(\"transform\",_),A.exit().remove(),A.call(s.pointStyle,i,e),h&&(r[0].mrc=3);var M=k.selectAll(\"g.pointtext\").data(m?r:[]);M.enter().append(\"g\").classed(\"pointtext\",!0).append(\"text\").attr(\"transform\",_),M.exit().remove(),M.selectAll(\"text\").call(s.textPointStyle,i,e)})).each((function(t){var e=t[0].trace,r=n.select(this).select(\"g.legendpoints\").selectAll(\"path.legendcandle\").data(e.visible&&\"candlestick\"===e.type?[t,t]:[]);r.enter().append(\"path\").classed(\"legendcandle\",!0).attr(\"d\",(function(t,e){return e?\"M-15,0H-8M-8,6V-6H8Z\":\"M15,0H8M8,-6V6H-8Z\"})).attr(\"transform\",_).style(\"stroke-miterlimit\",1),r.exit().remove(),r.each((function(t,r){var i=n.select(this),a=e[r?\"increasing\":\"decreasing\"],o=w(void 0,a.line,5,2);i.style(\"stroke-width\",o+\"px\").call(l.fill,a.fillcolor),o&&l.stroke(i,a.line.color)}))})).each((function(t){var e=t[0].trace,r=n.select(this).select(\"g.legendpoints\").selectAll(\"path.legendohlc\").data(e.visible&&\"ohlc\"===e.type?[t,t]:[]);r.enter().append(\"path\").classed(\"legendohlc\",!0).attr(\"d\",(function(t,e){return e?\"M-15,0H0M-8,-6V0\":\"M15,0H0M8,6V0\"})).attr(\"transform\",_).style(\"stroke-miterlimit\",1),r.exit().remove(),r.each((function(t,r){var i=n.select(this),a=e[r?\"increasing\":\"decreasing\"],o=w(void 0,a.line,5,2);i.style(\"fill\",\"none\").call(s.dashLine,a.line.dash,o),o&&l.stroke(i,a.line.color)}))}))}},{\"../../lib\":503,\"../../registry\":638,\"../../traces/pie/helpers\":905,\"../../traces/pie/style_one\":911,\"../../traces/scatter/subtypes\":951,\"../color\":366,\"../colorscale/helpers\":377,\"../drawing\":388,\"./constants\":417,\"@plotly/d3\":58}],425:[function(t,e,r){\"use strict\";t(\"./constants\");e.exports={editType:\"modebar\",orientation:{valType:\"enumerated\",values:[\"v\",\"h\"],dflt:\"h\",editType:\"modebar\"},bgcolor:{valType:\"color\",editType:\"modebar\"},color:{valType:\"color\",editType:\"modebar\"},activecolor:{valType:\"color\",editType:\"modebar\"},uirevision:{valType:\"any\",editType:\"none\"},add:{valType:\"string\",arrayOk:!0,dflt:\"\",editType:\"modebar\"},remove:{valType:\"string\",arrayOk:!0,dflt:\"\",editType:\"modebar\"}}},{\"./constants\":427}],426:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../plots/plots\"),a=t(\"../../plots/cartesian/axis_ids\"),o=t(\"../../fonts/ploticon\"),s=t(\"../shapes/draw\").eraseActiveShape,l=t(\"../../lib\"),c=l._,u=e.exports={};function f(t,e){var r,i,o=e.currentTarget,s=o.getAttribute(\"data-attr\"),l=o.getAttribute(\"data-val\")||!0,c=t._fullLayout,u={},f=a.list(t,null,!0),h=c._cartesianSpikesEnabled;if(\"zoom\"===s){var p,d=\"in\"===l?.5:2,g=(1+d)/2,m=(1-d)/2;for(i=0;i1?(I=[\"toggleHover\"],O=[\"resetViews\"]):v?(P=[\"zoomInGeo\",\"zoomOutGeo\"],I=[\"hoverClosestGeo\"],O=[\"resetGeo\"]):m?(I=[\"hoverClosest3d\"],O=[\"resetCameraDefault3d\",\"resetCameraLastSave3d\"]):w?(P=[\"zoomInMapbox\",\"zoomOutMapbox\"],I=[\"toggleHover\"],O=[\"resetViewMapbox\"]):b?I=[\"hoverClosestGl2d\"]:y?I=[\"hoverClosestPie\"]:A?(I=[\"hoverClosestCartesian\",\"hoverCompareCartesian\"],O=[\"resetViewSankey\"]):I=[\"toggleHover\"];g&&(I=[\"toggleSpikelines\",\"hoverClosestCartesian\",\"hoverCompareCartesian\"]);(function(t){for(var e=0;e0)){var g=function(t,e,r){for(var n=r.filter((function(r){return e[r].anchor===t._id})),i=0,a=0;a=n.max)e=F[r+1];else if(t=n.pmax)e=F[r+1];else if(t0?h+c:c;return{ppad:c,ppadplus:u?d:g,ppadminus:u?g:d}}return{ppad:c}}function u(t,e,r,n,i){var s=\"category\"===t.type||\"multicategory\"===t.type?t.r2c:t.d2c;if(void 0!==e)return[s(e),s(r)];if(n){var l,c,u,f,h=1/0,p=-1/0,d=n.match(a.segmentRE);for(\"date\"===t.type&&(s=o.decodeDate(s)),l=0;lp&&(p=f)));return p>=h?[h,p]:void 0}}e.exports=function(t){var e=t._fullLayout,r=n.filterVisible(e.shapes);if(r.length&&t._fullData.length)for(var o=0;oy?(k=f,E=\"y0\",A=y,L=\"y1\"):(k=y,E=\"y1\",A=f,L=\"y0\");Z(n),Q(s,r),function(t,e,r){var n=e.xref,i=e.yref,o=a.getFromId(r,n),s=a.getFromId(r,i),l=\"\";\"paper\"===n||o.autorange||(l+=n);\"paper\"===i||s.autorange||(l+=i);u.setClipUrl(t,l?\"clip\"+r._fullLayout._uid+l:null,r)}(e,r,t),X.moveFn=\"move\"===O?J:K,X.altKey=n.altKey},doneFn:function(){if(v(t))return;p(e),$(s),b(e,t,r),n.call(\"_guiRelayout\",t,l.getUpdateObj())},clickFn:function(){if(v(t))return;$(s)}};function Z(r){if(v(t))O=null;else if(R)O=\"path\"===r.target.tagName?\"move\":\"start-point\"===r.target.attributes[\"data-line-point\"].value?\"resize-over-start-point\":\"resize-over-end-point\";else{var n=X.element.getBoundingClientRect(),i=n.right-n.left,a=n.bottom-n.top,o=r.clientX-n.left,s=r.clientY-n.top,l=!F&&i>10&&a>10&&!r.shiftKey?h.getCursor(o/i,1-s/a):\"move\";p(e,l),O=l.split(\"-\")[0]}}function J(n,i){if(\"path\"===r.type){var a=function(t){return t},o=a,l=a;z?B(\"xanchor\",r.xanchor=G(x+n)):(o=function(t){return G(H(t)+n)},N&&\"date\"===N.type&&(o=g.encodeDate(o))),D?B(\"yanchor\",r.yanchor=Y(T+i)):(l=function(t){return Y(q(t)+i)},U&&\"date\"===U.type&&(l=g.encodeDate(l))),B(\"path\",r.path=w(I,o,l))}else z?B(\"xanchor\",r.xanchor=G(x+n)):(B(\"x0\",r.x0=G(c+n)),B(\"x1\",r.x1=G(m+n))),D?B(\"yanchor\",r.yanchor=Y(T+i)):(B(\"y0\",r.y0=Y(f+i)),B(\"y1\",r.y1=Y(y+i)));e.attr(\"d\",_(t,r)),Q(s,r)}function K(n,i){if(F){var a=function(t){return t},o=a,l=a;z?B(\"xanchor\",r.xanchor=G(x+n)):(o=function(t){return G(H(t)+n)},N&&\"date\"===N.type&&(o=g.encodeDate(o))),D?B(\"yanchor\",r.yanchor=Y(T+i)):(l=function(t){return Y(q(t)+i)},U&&\"date\"===U.type&&(l=g.encodeDate(l))),B(\"path\",r.path=w(I,o,l))}else if(R){if(\"resize-over-start-point\"===O){var u=c+n,h=D?f-i:f+i;B(\"x0\",r.x0=z?u:G(u)),B(\"y0\",r.y0=D?h:Y(h))}else if(\"resize-over-end-point\"===O){var p=m+n,d=D?y-i:y+i;B(\"x1\",r.x1=z?p:G(p)),B(\"y1\",r.y1=D?d:Y(d))}}else{var v=function(t){return-1!==O.indexOf(t)},b=v(\"n\"),j=v(\"s\"),V=v(\"w\"),W=v(\"e\"),X=b?k+i:k,Z=j?A+i:A,J=V?M+n:M,K=W?S+n:S;D&&(b&&(X=k-i),j&&(Z=A-i)),(!D&&Z-X>10||D&&X-Z>10)&&(B(E,r[E]=D?X:Y(X)),B(L,r[L]=D?Z:Y(Z))),K-J>10&&(B(C,r[C]=z?J:G(J)),B(P,r[P]=z?K:G(K)))}e.attr(\"d\",_(t,r)),Q(s,r)}function Q(t,e){(z||D)&&function(){var r=\"path\"!==e.type,n=t.selectAll(\".visual-cue\").data([0]);n.enter().append(\"path\").attr({fill:\"#fff\",\"fill-rule\":\"evenodd\",stroke:\"#000\",\"stroke-width\":1}).classed(\"visual-cue\",!0);var a=H(z?e.xanchor:i.midRange(r?[e.x0,e.x1]:g.extractPathCoords(e.path,d.paramIsX))),o=q(D?e.yanchor:i.midRange(r?[e.y0,e.y1]:g.extractPathCoords(e.path,d.paramIsY)));if(a=g.roundPositionForSharpStrokeRendering(a,1),o=g.roundPositionForSharpStrokeRendering(o,1),z&&D){var s=\"M\"+(a-1-1)+\",\"+(o-1-1)+\"h-8v2h8 v8h2v-8 h8v-2h-8 v-8h-2 Z\";n.attr(\"d\",s)}else if(z){var l=\"M\"+(a-1-1)+\",\"+(o-9-1)+\"v18 h2 v-18 Z\";n.attr(\"d\",l)}else{var c=\"M\"+(a-9-1)+\",\"+(o-1-1)+\"h18 v2 h-18 Z\";n.attr(\"d\",c)}}()}function $(t){t.selectAll(\".visual-cue\").remove()}h.init(X),W.node().onmousemove=Z}(t,z,l,e,r,O):!0===l.editable&&z.style(\"pointer-events\",P||c.opacity(S)*M<=.5?\"stroke\":\"all\");z.node().addEventListener(\"click\",(function(){return function(t,e){if(!y(t))return;var r=+e.node().getAttribute(\"data-index\");if(r>=0){if(r===t._fullLayout._activeShapeIndex)return void T(t);t._fullLayout._activeShapeIndex=r,t._fullLayout._deactivateShape=T,m(t)}}(t,z)}))}}function b(t,e,r){var n=(r.xref+r.yref).replace(/paper/g,\"\").replace(/[xyz][1-9]* *domain/g,\"\");u.setClipUrl(t,n?\"clip\"+e._fullLayout._uid+n:null,e)}function _(t,e){var r,n,o,s,l,c,u,f,h=e.type,p=a.getRefType(e.xref),m=a.getRefType(e.yref),v=a.getFromId(t,e.xref),y=a.getFromId(t,e.yref),x=t._fullLayout._size;if(v?\"domain\"===p?n=function(t){return v._offset+v._length*t}:(r=g.shapePositionToRange(v),n=function(t){return v._offset+v.r2p(r(t,!0))}):n=function(t){return x.l+x.w*t},y?\"domain\"===m?s=function(t){return y._offset+y._length*(1-t)}:(o=g.shapePositionToRange(y),s=function(t){return y._offset+y.r2p(o(t,!0))}):s=function(t){return x.t+x.h*(1-t)},\"path\"===h)return v&&\"date\"===v.type&&(n=g.decodeDate(n)),y&&\"date\"===y.type&&(s=g.decodeDate(s)),function(t,e,r){var n=t.path,a=t.xsizemode,o=t.ysizemode,s=t.xanchor,l=t.yanchor;return n.replace(d.segmentRE,(function(t){var n=0,c=t.charAt(0),u=d.paramIsX[c],f=d.paramIsY[c],h=d.numParams[c],p=t.substr(1).replace(d.paramRE,(function(t){return u[n]?t=\"pixel\"===a?e(s)+Number(t):e(t):f[n]&&(t=\"pixel\"===o?r(l)-Number(t):r(t)),++n>h&&(t=\"X\"),t}));return n>h&&(p=p.replace(/[\\s,]*X.*/,\"\"),i.log(\"Ignoring extra params in segment \"+t)),c+p}))}(e,n,s);if(\"pixel\"===e.xsizemode){var b=n(e.xanchor);l=b+e.x0,c=b+e.x1}else l=n(e.x0),c=n(e.x1);if(\"pixel\"===e.ysizemode){var _=s(e.yanchor);u=_-e.y0,f=_-e.y1}else u=s(e.y0),f=s(e.y1);if(\"line\"===h)return\"M\"+l+\",\"+u+\"L\"+c+\",\"+f;if(\"rect\"===h)return\"M\"+l+\",\"+u+\"H\"+c+\"V\"+f+\"H\"+l+\"Z\";var w=(l+c)/2,T=(u+f)/2,k=Math.abs(w-l),A=Math.abs(T-u),M=\"A\"+k+\",\"+A,S=w+k+\",\"+T;return\"M\"+S+M+\" 0 1,1 \"+(w+\",\"+(T-A))+M+\" 0 0,1 \"+S+\"Z\"}function w(t,e,r){return t.replace(d.segmentRE,(function(t){var n=0,i=t.charAt(0),a=d.paramIsX[i],o=d.paramIsY[i],s=d.numParams[i];return i+t.substr(1).replace(d.paramRE,(function(t){return n>=s||(a[n]?t=e(t):o[n]&&(t=r(t)),n++),t}))}))}function T(t){y(t)&&(t._fullLayout._activeShapeIndex>=0&&(l(t),delete t._fullLayout._activeShapeIndex,m(t)))}e.exports={draw:m,drawOne:x,eraseActiveShape:function(t){if(!y(t))return;l(t);var e=t._fullLayout._activeShapeIndex,r=(t.layout||{}).shapes||[];if(e=0&&f(v),r.attr(\"d\",g(e)),A&&!h)&&(k=function(t,e){for(var r=0;r1&&(2!==t.length||\"Z\"!==t[1][0])&&(0===T&&(t[0][0]=\"M\"),e[w]=t,y(),x())}}()}}function I(t,r){!function(t,r){if(e.length)for(var n=0;n0&&l0&&(s=s.transition().duration(e.transition.duration).ease(e.transition.easing)),s.attr(\"transform\",l(o-.5*f.gripWidth,e._dims.currentValueTotalHeight))}}function E(t,e){var r=t._dims;return r.inputAreaStart+f.stepInset+(r.inputAreaLength-2*f.stepInset)*Math.min(1,Math.max(0,e))}function L(t,e){var r=t._dims;return Math.min(1,Math.max(0,(e-f.stepInset-r.inputAreaStart)/(r.inputAreaLength-2*f.stepInset-2*r.inputAreaStart)))}function C(t,e,r){var n=r._dims,i=s.ensureSingle(t,\"rect\",f.railTouchRectClass,(function(n){n.call(A,e,t,r).style(\"pointer-events\",\"all\")}));i.attr({width:n.inputAreaLength,height:Math.max(n.inputAreaWidth,f.tickOffset+r.ticklen+n.labelHeight)}).call(a.fill,r.bgcolor).attr(\"opacity\",0),o.setTranslate(i,0,n.currentValueTotalHeight)}function P(t,e){var r=e._dims,n=r.inputAreaLength-2*f.railInset,i=s.ensureSingle(t,\"rect\",f.railRectClass);i.attr({width:n,height:f.railWidth,rx:f.railRadius,ry:f.railRadius,\"shape-rendering\":\"crispEdges\"}).call(a.stroke,e.bordercolor).call(a.fill,e.bgcolor).style(\"stroke-width\",e.borderwidth+\"px\"),o.setTranslate(i,f.railInset,.5*(r.inputAreaWidth-f.railWidth)+r.currentValueTotalHeight)}e.exports=function(t){var e=t._fullLayout,r=function(t,e){for(var r=t[f.name],n=[],i=0;i0?[0]:[]);function s(e){e._commandObserver&&(e._commandObserver.remove(),delete e._commandObserver),i.autoMargin(t,m(e))}if(a.enter().append(\"g\").classed(f.containerClassName,!0).style(\"cursor\",\"ew-resize\"),a.exit().each((function(){n.select(this).selectAll(\"g.\"+f.groupClassName).each(s)})).remove(),0!==r.length){var l=a.selectAll(\"g.\"+f.groupClassName).data(r,v);l.enter().append(\"g\").classed(f.groupClassName,!0),l.exit().each(s).remove();for(var c=0;c0||h<0){var v={left:[-d,0],right:[d,0],top:[0,-d],bottom:[0,d]}[b.side];e.attr(\"transform\",l(v[0],v[1]))}}}return R.call(F),O&&(E?R.on(\".opacity\",null):(A=0,M=!0,R.text(y).on(\"mouseover.opacity\",(function(){n.select(this).transition().duration(h.SHOW_PLACEHOLDER).style(\"opacity\",1)})).on(\"mouseout.opacity\",(function(){n.select(this).transition().duration(h.HIDE_PLACEHOLDER).style(\"opacity\",0)}))),R.call(f.makeEditable,{gd:t}).on(\"edit\",(function(e){void 0!==x?o.call(\"_guiRestyle\",t,v,e,x):o.call(\"_guiRelayout\",t,v,e)})).on(\"cancel\",(function(){this.text(this.attr(\"data-unformatted\")).call(F)})).on(\"input\",(function(t){this.text(t||\" \").call(f.positionText,_.x,_.y)}))),R.classed(\"js-placeholder\",M),T}}},{\"../../constants/alignment\":471,\"../../constants/interactions\":478,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../../plots/plots\":619,\"../../registry\":638,\"../color\":366,\"../drawing\":388,\"@plotly/d3\":58,\"fast-isnumeric\":190}],465:[function(t,e,r){\"use strict\";var n=t(\"../../plots/font_attributes\"),i=t(\"../color/attributes\"),a=t(\"../../lib/extend\").extendFlat,o=t(\"../../plot_api/edit_types\").overrideAll,s=t(\"../../plots/pad_attributes\"),l=t(\"../../plot_api/plot_template\").templatedArray,c=l(\"button\",{visible:{valType:\"boolean\"},method:{valType:\"enumerated\",values:[\"restyle\",\"relayout\",\"animate\",\"update\",\"skip\"],dflt:\"restyle\"},args:{valType:\"info_array\",freeLength:!0,items:[{valType:\"any\"},{valType:\"any\"},{valType:\"any\"}]},args2:{valType:\"info_array\",freeLength:!0,items:[{valType:\"any\"},{valType:\"any\"},{valType:\"any\"}]},label:{valType:\"string\",dflt:\"\"},execute:{valType:\"boolean\",dflt:!0}});e.exports=o(l(\"updatemenu\",{_arrayAttrRegexps:[/^updatemenus\\[(0|[1-9][0-9]+)\\]\\.buttons/],visible:{valType:\"boolean\"},type:{valType:\"enumerated\",values:[\"dropdown\",\"buttons\"],dflt:\"dropdown\"},direction:{valType:\"enumerated\",values:[\"left\",\"right\",\"up\",\"down\"],dflt:\"down\"},active:{valType:\"integer\",min:-1,dflt:0},showactive:{valType:\"boolean\",dflt:!0},buttons:c,x:{valType:\"number\",min:-2,max:3,dflt:-.05},xanchor:{valType:\"enumerated\",values:[\"auto\",\"left\",\"center\",\"right\"],dflt:\"right\"},y:{valType:\"number\",min:-2,max:3,dflt:1},yanchor:{valType:\"enumerated\",values:[\"auto\",\"top\",\"middle\",\"bottom\"],dflt:\"top\"},pad:a(s({editType:\"arraydraw\"}),{}),font:n({}),bgcolor:{valType:\"color\"},bordercolor:{valType:\"color\",dflt:i.borderLine},borderwidth:{valType:\"number\",min:0,dflt:1,editType:\"arraydraw\"}}),\"arraydraw\",\"from-root\")},{\"../../lib/extend\":493,\"../../plot_api/edit_types\":536,\"../../plot_api/plot_template\":543,\"../../plots/font_attributes\":585,\"../../plots/pad_attributes\":618,\"../color/attributes\":365}],466:[function(t,e,r){\"use strict\";e.exports={name:\"updatemenus\",containerClassName:\"updatemenu-container\",headerGroupClassName:\"updatemenu-header-group\",headerClassName:\"updatemenu-header\",headerArrowClassName:\"updatemenu-header-arrow\",dropdownButtonGroupClassName:\"updatemenu-dropdown-button-group\",dropdownButtonClassName:\"updatemenu-dropdown-button\",buttonClassName:\"updatemenu-button\",itemRectClassName:\"updatemenu-item-rect\",itemTextClassName:\"updatemenu-item-text\",menuIndexAttrName:\"updatemenu-active-index\",autoMarginIdRoot:\"updatemenu-\",blankHeaderOpts:{label:\" \"},minWidth:30,minHeight:30,textPadX:24,arrowPadX:16,rx:2,ry:2,textOffsetX:12,textOffsetY:3,arrowOffsetX:4,gapButtonHeader:5,gapButton:2,activeColor:\"#F4FAFF\",hoverColor:\"#F4FAFF\",arrowSymbol:{left:\"\\u25c4\",right:\"\\u25ba\",up:\"\\u25b2\",down:\"\\u25bc\"}}},{}],467:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../plots/array_container_defaults\"),a=t(\"./attributes\"),o=t(\"./constants\").name,s=a.buttons;function l(t,e,r){function o(r,i){return n.coerce(t,e,a,r,i)}o(\"visible\",i(t,e,{name:\"buttons\",handleItemDefaults:c}).length>0)&&(o(\"active\"),o(\"direction\"),o(\"type\"),o(\"showactive\"),o(\"x\"),o(\"y\"),n.noneOrAll(t,e,[\"x\",\"y\"]),o(\"xanchor\"),o(\"yanchor\"),o(\"pad.t\"),o(\"pad.r\"),o(\"pad.b\"),o(\"pad.l\"),n.coerceFont(o,\"font\",r.font),o(\"bgcolor\",r.paper_bgcolor),o(\"bordercolor\"),o(\"borderwidth\"))}function c(t,e){function r(r,i){return n.coerce(t,e,s,r,i)}r(\"visible\",\"skip\"===t.method||Array.isArray(t.args))&&(r(\"method\"),r(\"args\"),r(\"args2\"),r(\"label\"),r(\"execute\"))}e.exports=function(t,e){i(t,e,{name:o,handleItemDefaults:l})}},{\"../../lib\":503,\"../../plots/array_container_defaults\":549,\"./attributes\":465,\"./constants\":466}],468:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../plots/plots\"),a=t(\"../color\"),o=t(\"../drawing\"),s=t(\"../../lib\"),l=t(\"../../lib/svg_text_utils\"),c=t(\"../../plot_api/plot_template\").arrayEditor,u=t(\"../../constants/alignment\").LINE_SPACING,f=t(\"./constants\"),h=t(\"./scrollbox\");function p(t){return t._index}function d(t,e){return+t.attr(f.menuIndexAttrName)===e._index}function g(t,e,r,n,i,a,o,s){e.active=o,c(t.layout,f.name,e).applyUpdate(\"active\",o),\"buttons\"===e.type?v(t,n,null,null,e):\"dropdown\"===e.type&&(i.attr(f.menuIndexAttrName,\"-1\"),m(t,n,i,a,e),s||v(t,n,i,a,e))}function m(t,e,r,n,i){var a=s.ensureSingle(e,\"g\",f.headerClassName,(function(t){t.style(\"pointer-events\",\"all\")})),l=i._dims,c=i.active,u=i.buttons[c]||f.blankHeaderOpts,h={y:i.pad.t,yPad:0,x:i.pad.l,xPad:0,index:0},p={width:l.headerWidth,height:l.headerHeight};a.call(y,i,u,t).call(M,i,h,p),s.ensureSingle(e,\"text\",f.headerArrowClassName,(function(t){t.attr(\"text-anchor\",\"end\").call(o.font,i.font).text(f.arrowSymbol[i.direction])})).attr({x:l.headerWidth-f.arrowOffsetX+i.pad.l,y:l.headerHeight/2+f.textOffsetY+i.pad.t}),a.on(\"click\",(function(){r.call(S,String(d(r,i)?-1:i._index)),v(t,e,r,n,i)})),a.on(\"mouseover\",(function(){a.call(w)})),a.on(\"mouseout\",(function(){a.call(T,i)})),o.setTranslate(e,l.lx,l.ly)}function v(t,e,r,a,o){r||(r=e).attr(\"pointer-events\",\"all\");var l=function(t){return-1==+t.attr(f.menuIndexAttrName)}(r)&&\"buttons\"!==o.type?[]:o.buttons,c=\"dropdown\"===o.type?f.dropdownButtonClassName:f.buttonClassName,u=r.selectAll(\"g.\"+c).data(s.filterVisible(l)),h=u.enter().append(\"g\").classed(c,!0),p=u.exit();\"dropdown\"===o.type?(h.attr(\"opacity\",\"0\").transition().attr(\"opacity\",\"1\"),p.transition().attr(\"opacity\",\"0\").remove()):p.remove();var d=0,m=0,v=o._dims,x=-1!==[\"up\",\"down\"].indexOf(o.direction);\"dropdown\"===o.type&&(x?m=v.headerHeight+f.gapButtonHeader:d=v.headerWidth+f.gapButtonHeader),\"dropdown\"===o.type&&\"up\"===o.direction&&(m=-f.gapButtonHeader+f.gapButton-v.openHeight),\"dropdown\"===o.type&&\"left\"===o.direction&&(d=-f.gapButtonHeader+f.gapButton-v.openWidth);var b={x:v.lx+d+o.pad.l,y:v.ly+m+o.pad.t,yPad:f.gapButton,xPad:f.gapButton,index:0},k={l:b.x+o.borderwidth,t:b.y+o.borderwidth};u.each((function(s,l){var c=n.select(this);c.call(y,o,s,t).call(M,o,b),c.on(\"click\",(function(){n.event.defaultPrevented||(s.execute&&(s.args2&&o.active===l?(g(t,o,0,e,r,a,-1),i.executeAPICommand(t,s.method,s.args2)):(g(t,o,0,e,r,a,l),i.executeAPICommand(t,s.method,s.args))),t.emit(\"plotly_buttonclicked\",{menu:o,button:s,active:o.active}))})),c.on(\"mouseover\",(function(){c.call(w)})),c.on(\"mouseout\",(function(){c.call(T,o),u.call(_,o)}))})),u.call(_,o),x?(k.w=Math.max(v.openWidth,v.headerWidth),k.h=b.y-k.t):(k.w=b.x-k.l,k.h=Math.max(v.openHeight,v.headerHeight)),k.direction=o.direction,a&&(u.size()?function(t,e,r,n,i,a){var o,s,l,c=i.direction,u=\"up\"===c||\"down\"===c,h=i._dims,p=i.active;if(u)for(s=0,l=0;l0?[0]:[]);if(o.enter().append(\"g\").classed(f.containerClassName,!0).style(\"cursor\",\"pointer\"),o.exit().each((function(){n.select(this).selectAll(\"g.\"+f.headerGroupClassName).each(a)})).remove(),0!==r.length){var l=o.selectAll(\"g.\"+f.headerGroupClassName).data(r,p);l.enter().append(\"g\").classed(f.headerGroupClassName,!0);for(var c=s.ensureSingle(o,\"g\",f.dropdownButtonGroupClassName,(function(t){t.style(\"pointer-events\",\"all\")})),u=0;uw,A=s.barLength+2*s.barPad,M=s.barWidth+2*s.barPad,S=d,E=m+v;E+M>c&&(E=c-M);var L=this.container.selectAll(\"rect.scrollbar-horizontal\").data(k?[0]:[]);L.exit().on(\".drag\",null).remove(),L.enter().append(\"rect\").classed(\"scrollbar-horizontal\",!0).call(i.fill,s.barColor),k?(this.hbar=L.attr({rx:s.barRadius,ry:s.barRadius,x:S,y:E,width:A,height:M}),this._hbarXMin=S+A/2,this._hbarTranslateMax=w-A):(delete this.hbar,delete this._hbarXMin,delete this._hbarTranslateMax);var C=v>T,P=s.barWidth+2*s.barPad,I=s.barLength+2*s.barPad,O=d+g,z=m;O+P>l&&(O=l-P);var D=this.container.selectAll(\"rect.scrollbar-vertical\").data(C?[0]:[]);D.exit().on(\".drag\",null).remove(),D.enter().append(\"rect\").classed(\"scrollbar-vertical\",!0).call(i.fill,s.barColor),C?(this.vbar=D.attr({rx:s.barRadius,ry:s.barRadius,x:O,y:z,width:P,height:I}),this._vbarYMin=z+I/2,this._vbarTranslateMax=T-I):(delete this.vbar,delete this._vbarYMin,delete this._vbarTranslateMax);var R=this.id,F=u-.5,B=C?f+P+.5:f+.5,N=h-.5,j=k?p+M+.5:p+.5,U=o._topdefs.selectAll(\"#\"+R).data(k||C?[0]:[]);if(U.exit().remove(),U.enter().append(\"clipPath\").attr(\"id\",R).append(\"rect\"),k||C?(this._clipRect=U.select(\"rect\").attr({x:Math.floor(F),y:Math.floor(N),width:Math.ceil(B)-Math.floor(F),height:Math.ceil(j)-Math.floor(N)}),this.container.call(a.setClipUrl,R,this.gd),this.bg.attr({x:d,y:m,width:g,height:v})):(this.bg.attr({width:0,height:0}),this.container.on(\"wheel\",null).on(\".drag\",null).call(a.setClipUrl,null),delete this._clipRect),k||C){var V=n.behavior.drag().on(\"dragstart\",(function(){n.event.sourceEvent.preventDefault()})).on(\"drag\",this._onBoxDrag.bind(this));this.container.on(\"wheel\",null).on(\"wheel\",this._onBoxWheel.bind(this)).on(\".drag\",null).call(V);var H=n.behavior.drag().on(\"dragstart\",(function(){n.event.sourceEvent.preventDefault(),n.event.sourceEvent.stopPropagation()})).on(\"drag\",this._onBarDrag.bind(this));k&&this.hbar.on(\".drag\",null).call(H),C&&this.vbar.on(\".drag\",null).call(H)}this.setTranslate(e,r)},s.prototype.disable=function(){(this.hbar||this.vbar)&&(this.bg.attr({width:0,height:0}),this.container.on(\"wheel\",null).on(\".drag\",null).call(a.setClipUrl,null),delete this._clipRect),this.hbar&&(this.hbar.on(\".drag\",null),this.hbar.remove(),delete this.hbar,delete this._hbarXMin,delete this._hbarTranslateMax),this.vbar&&(this.vbar.on(\".drag\",null),this.vbar.remove(),delete this.vbar,delete this._vbarYMin,delete this._vbarTranslateMax)},s.prototype._onBoxDrag=function(){var t=this.translateX,e=this.translateY;this.hbar&&(t-=n.event.dx),this.vbar&&(e-=n.event.dy),this.setTranslate(t,e)},s.prototype._onBoxWheel=function(){var t=this.translateX,e=this.translateY;this.hbar&&(t+=n.event.deltaY),this.vbar&&(e+=n.event.deltaY),this.setTranslate(t,e)},s.prototype._onBarDrag=function(){var t=this.translateX,e=this.translateY;if(this.hbar){var r=t+this._hbarXMin,i=r+this._hbarTranslateMax;t=(o.constrain(n.event.x,r,i)-r)/(i-r)*(this.position.w-this._box.w)}if(this.vbar){var a=e+this._vbarYMin,s=a+this._vbarTranslateMax;e=(o.constrain(n.event.y,a,s)-a)/(s-a)*(this.position.h-this._box.h)}this.setTranslate(t,e)},s.prototype.setTranslate=function(t,e){var r=this.position.w-this._box.w,n=this.position.h-this._box.h;if(t=o.constrain(t||0,0,r),e=o.constrain(e||0,0,n),this.translateX=t,this.translateY=e,this.container.call(a.setTranslate,this._box.l-this.position.l-t,this._box.t-this.position.t-e),this._clipRect&&this._clipRect.attr({x:Math.floor(this.position.l+t-.5),y:Math.floor(this.position.t+e-.5)}),this.hbar){var i=t/r;this.hbar.call(a.setTranslate,t+i*this._hbarTranslateMax,e)}if(this.vbar){var s=e/n;this.vbar.call(a.setTranslate,t,e+s*this._vbarTranslateMax)}}},{\"../../lib\":503,\"../color\":366,\"../drawing\":388,\"@plotly/d3\":58}],471:[function(t,e,r){\"use strict\";e.exports={FROM_BL:{left:0,center:.5,right:1,bottom:0,middle:.5,top:1},FROM_TL:{left:0,center:.5,right:1,bottom:1,middle:.5,top:0},FROM_BR:{left:1,center:.5,right:0,bottom:0,middle:.5,top:1},LINE_SPACING:1.3,CAP_SHIFT:.7,MID_SHIFT:.35,OPPOSITE_SIDE:{left:\"right\",right:\"left\",top:\"bottom\",bottom:\"top\"}}},{}],472:[function(t,e,r){\"use strict\";e.exports={axisRefDescription:function(t,e,r){return[\"If set to a\",t,\"axis id (e.g. *\"+t+\"* or\",\"*\"+t+\"2*), the `\"+t+\"` position refers to a\",t,\"coordinate. If set to *paper*, the `\"+t+\"`\",\"position refers to the distance from the\",e,\"of the plotting\",\"area in normalized coordinates where *0* (*1*) corresponds to the\",e,\"(\"+r+\"). If set to a\",t,\"axis ID followed by\",\"*domain* (separated by a space), the position behaves like for\",\"*paper*, but refers to the distance in fractions of the domain\",\"length from the\",e,\"of the domain of that axis: e.g.,\",\"*\"+t+\"2 domain* refers to the domain of the second\",t,\" axis and a\",t,\"position of 0.5 refers to the\",\"point between the\",e,\"and the\",r,\"of the domain of the\",\"second\",t,\"axis.\"].join(\" \")}}},{}],473:[function(t,e,r){\"use strict\";e.exports={INCREASING:{COLOR:\"#3D9970\",SYMBOL:\"\\u25b2\"},DECREASING:{COLOR:\"#FF4136\",SYMBOL:\"\\u25bc\"}}},{}],474:[function(t,e,r){\"use strict\";e.exports={FORMAT_LINK:\"https://github.com/d3/d3-format/tree/v1.4.5#d3-format\",DATE_FORMAT_LINK:\"https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format\"}},{}],475:[function(t,e,r){\"use strict\";e.exports={COMPARISON_OPS:[\"=\",\"!=\",\"<\",\">=\",\">\",\"<=\"],COMPARISON_OPS2:[\"=\",\"<\",\">=\",\">\",\"<=\"],INTERVAL_OPS:[\"[]\",\"()\",\"[)\",\"(]\",\"][\",\")(\",\"](\",\")[\"],SET_OPS:[\"{}\",\"}{\"],CONSTRAINT_REDUCTION:{\"=\":\"=\",\"<\":\"<\",\"<=\":\"<\",\">\":\">\",\">=\":\">\",\"[]\":\"[]\",\"()\":\"[]\",\"[)\":\"[]\",\"(]\":\"[]\",\"][\":\"][\",\")(\":\"][\",\"](\":\"][\",\")[\":\"][\"}}},{}],476:[function(t,e,r){\"use strict\";e.exports={solid:[[],0],dot:[[.5,1],200],dash:[[.5,1],50],longdash:[[.5,1],10],dashdot:[[.5,.625,.875,1],50],longdashdot:[[.5,.7,.8,1],10]}},{}],477:[function(t,e,r){\"use strict\";e.exports={circle:\"\\u25cf\",\"circle-open\":\"\\u25cb\",square:\"\\u25a0\",\"square-open\":\"\\u25a1\",diamond:\"\\u25c6\",\"diamond-open\":\"\\u25c7\",cross:\"+\",x:\"\\u274c\"}},{}],478:[function(t,e,r){\"use strict\";e.exports={SHOW_PLACEHOLDER:100,HIDE_PLACEHOLDER:1e3,DESELECTDIM:.2}},{}],479:[function(t,e,r){\"use strict\";e.exports={BADNUM:void 0,FP_SAFE:1e-4*Number.MAX_VALUE,ONEMAXYEAR:316224e5,ONEAVGYEAR:315576e5,ONEMINYEAR:31536e6,ONEMAXQUARTER:79488e5,ONEAVGQUARTER:78894e5,ONEMINQUARTER:76896e5,ONEMAXMONTH:26784e5,ONEAVGMONTH:26298e5,ONEMINMONTH:24192e5,ONEWEEK:6048e5,ONEDAY:864e5,ONEHOUR:36e5,ONEMIN:6e4,ONESEC:1e3,EPOCHJD:2440587.5,ALMOST_EQUAL:.999999,LOG_CLIP:10,MINUS_SIGN:\"\\u2212\"}},{}],480:[function(t,e,r){\"use strict\";r.xmlns=\"http://www.w3.org/2000/xmlns/\",r.svg=\"http://www.w3.org/2000/svg\",r.xlink=\"http://www.w3.org/1999/xlink\",r.svgAttrs={xmlns:r.svg,\"xmlns:xlink\":r.xlink}},{}],481:[function(t,e,r){\"use strict\";r.version=t(\"./version\").version,t(\"native-promise-only\"),t(\"../build/plotcss\");for(var n=t(\"./registry\"),i=r.register=n.register,a=t(\"./plot_api\"),o=Object.keys(a),s=0;splotly-logomark\"}}},{}],483:[function(t,e,r){\"use strict\";r.isLeftAnchor=function(t){return\"left\"===t.xanchor||\"auto\"===t.xanchor&&t.x<=1/3},r.isCenterAnchor=function(t){return\"center\"===t.xanchor||\"auto\"===t.xanchor&&t.x>1/3&&t.x<2/3},r.isRightAnchor=function(t){return\"right\"===t.xanchor||\"auto\"===t.xanchor&&t.x>=2/3},r.isTopAnchor=function(t){return\"top\"===t.yanchor||\"auto\"===t.yanchor&&t.y>=2/3},r.isMiddleAnchor=function(t){return\"middle\"===t.yanchor||\"auto\"===t.yanchor&&t.y>1/3&&t.y<2/3},r.isBottomAnchor=function(t){return\"bottom\"===t.yanchor||\"auto\"===t.yanchor&&t.y<=1/3}},{}],484:[function(t,e,r){\"use strict\";var n=t(\"./mod\"),i=n.mod,a=n.modHalf,o=Math.PI,s=2*o;function l(t){return Math.abs(t[1]-t[0])>s-1e-14}function c(t,e){return a(e-t,s)}function u(t,e){if(l(e))return!0;var r,n;e[0](n=i(n,s))&&(n+=s);var a=i(t,s),o=a+s;return a>=r&&a<=n||o>=r&&o<=n}function f(t,e,r,n,i,a,c){i=i||0,a=a||0;var u,f,h,p,d,g=l([r,n]);function m(t,e){return[t*Math.cos(e)+i,a-t*Math.sin(e)]}g?(u=0,f=o,h=s):r=i&&t<=a);var i,a},pathArc:function(t,e,r,n,i){return f(null,t,e,r,n,i,0)},pathSector:function(t,e,r,n,i){return f(null,t,e,r,n,i,1)},pathAnnulus:function(t,e,r,n,i,a){return f(t,e,r,n,i,a,1)}}},{\"./mod\":510}],485:[function(t,e,r){\"use strict\";var n=Array.isArray,i=ArrayBuffer,a=DataView;function o(t){return i.isView(t)&&!(t instanceof a)}function s(t){return n(t)||o(t)}function l(t,e,r){if(s(t)){if(s(t[0])){for(var n=r,i=0;ii.max?e.set(r):e.set(+t)}},integer:{coerceFunction:function(t,e,r,i){t%1||!n(t)||void 0!==i.min&&ti.max?e.set(r):e.set(+t)}},string:{coerceFunction:function(t,e,r,n){if(\"string\"!=typeof t){var i=\"number\"==typeof t;!0!==n.strict&&i?e.set(String(t)):e.set(r)}else n.noBlank&&!t?e.set(r):e.set(t)}},color:{coerceFunction:function(t,e,r){i(t).isValid()?e.set(t):e.set(r)}},colorlist:{coerceFunction:function(t,e,r){Array.isArray(t)&&t.length&&t.every((function(t){return i(t).isValid()}))?e.set(t):e.set(r)}},colorscale:{coerceFunction:function(t,e,r){e.set(o.get(t,r))}},angle:{coerceFunction:function(t,e,r){\"auto\"===t?e.set(\"auto\"):n(t)?e.set(f(+t,360)):e.set(r)}},subplotid:{coerceFunction:function(t,e,r,n){var i=n.regex||u(r);\"string\"==typeof t&&i.test(t)?e.set(t):e.set(r)},validateFunction:function(t,e){var r=e.dflt;return t===r||\"string\"==typeof t&&!!u(r).test(t)}},flaglist:{coerceFunction:function(t,e,r,n){if(\"string\"==typeof t)if(-1===(n.extras||[]).indexOf(t)){for(var i=t.split(\"+\"),a=0;a=n&&t<=i?t:u}if(\"string\"!=typeof t&&\"number\"!=typeof t)return u;t=String(t);var c=_(e),v=t.charAt(0);!c||\"G\"!==v&&\"g\"!==v||(t=t.substr(1),e=\"\");var w=c&&\"chinese\"===e.substr(0,7),T=t.match(w?x:y);if(!T)return u;var k=T[1],A=T[3]||\"1\",M=Number(T[5]||1),S=Number(T[7]||0),E=Number(T[9]||0),L=Number(T[11]||0);if(c){if(2===k.length)return u;var C;k=Number(k);try{var P=m.getComponentMethod(\"calendars\",\"getCal\")(e);if(w){var I=\"i\"===A.charAt(A.length-1);A=parseInt(A,10),C=P.newDate(k,P.toMonthIndex(k,A,I),M)}else C=P.newDate(k,Number(A),M)}catch(t){return u}return C?(C.toJD()-g)*f+S*h+E*p+L*d:u}k=2===k.length?(Number(k)+2e3-b)%100+b:Number(k),A-=1;var O=new Date(Date.UTC(2e3,A,M,S,E));return O.setUTCFullYear(k),O.getUTCMonth()!==A||O.getUTCDate()!==M?u:O.getTime()+L*d},n=r.MIN_MS=r.dateTime2ms(\"-9999\"),i=r.MAX_MS=r.dateTime2ms(\"9999-12-31 23:59:59.9999\"),r.isDateTime=function(t,e){return r.dateTime2ms(t,e)!==u};var T=90*f,k=3*h,A=5*p;function M(t,e,r,n,i){if((e||r||n||i)&&(t+=\" \"+w(e,2)+\":\"+w(r,2),(n||i)&&(t+=\":\"+w(n,2),i))){for(var a=4;i%10==0;)a-=1,i/=10;t+=\".\"+w(i,a)}return t}r.ms2DateTime=function(t,e,r){if(\"number\"!=typeof t||!(t>=n&&t<=i))return u;e||(e=0);var a,o,s,c,y,x,b=Math.floor(10*l(t+.05,1)),w=Math.round(t-b/10);if(_(r)){var S=Math.floor(w/f)+g,E=Math.floor(l(t,f));try{a=m.getComponentMethod(\"calendars\",\"getCal\")(r).fromJD(S).formatDate(\"yyyy-mm-dd\")}catch(t){a=v(\"G%Y-%m-%d\")(new Date(w))}if(\"-\"===a.charAt(0))for(;a.length<11;)a=\"-0\"+a.substr(1);else for(;a.length<10;)a=\"0\"+a;o=e=n+f&&t<=i-f))return u;var e=Math.floor(10*l(t+.05,1)),r=new Date(Math.round(t-e/10));return M(a(\"%Y-%m-%d\")(r),r.getHours(),r.getMinutes(),r.getSeconds(),10*r.getUTCMilliseconds()+e)},r.cleanDate=function(t,e,n){if(t===u)return e;if(r.isJSDate(t)||\"number\"==typeof t&&isFinite(t)){if(_(n))return s.error(\"JS Dates and milliseconds are incompatible with world calendars\",t),e;if(!(t=r.ms2DateTimeLocal(+t))&&void 0!==e)return e}else if(!r.isDateTime(t,n))return s.error(\"unrecognized date\",t),e;return t};var S=/%\\d?f/g,E=/%h/g,L={1:\"1\",2:\"1\",3:\"2\",4:\"2\"};function C(t,e,r,n){t=t.replace(S,(function(t){var r=Math.min(+t.charAt(1)||6,6);return(e/1e3%1+2).toFixed(r).substr(2).replace(/0+$/,\"\")||\"0\"}));var i=new Date(Math.floor(e+.05));if(t=t.replace(E,(function(){return L[r(\"%q\")(i)]})),_(n))try{t=m.getComponentMethod(\"calendars\",\"worldCalFmt\")(t,e,n)}catch(t){return\"Invalid\"}return r(t)(i)}var P=[59,59.9,59.99,59.999,59.9999];r.formatDate=function(t,e,r,n,i,a){if(i=_(i)&&i,!e)if(\"y\"===r)e=a.year;else if(\"m\"===r)e=a.month;else{if(\"d\"!==r)return function(t,e){var r=l(t+.05,f),n=w(Math.floor(r/h),2)+\":\"+w(l(Math.floor(r/p),60),2);if(\"M\"!==e){o(e)||(e=0);var i=(100+Math.min(l(t/d,60),P[e])).toFixed(e).substr(1);e>0&&(i=i.replace(/0+$/,\"\").replace(/[\\.]$/,\"\")),n+=\":\"+i}return n}(t,r)+\"\\n\"+C(a.dayMonthYear,t,n,i);e=a.dayMonth+\"\\n\"+a.year}return C(e,t,n,i)};var I=3*f;r.incrementMonth=function(t,e,r){r=_(r)&&r;var n=l(t,f);if(t=Math.round(t-n),r)try{var i=Math.round(t/f)+g,a=m.getComponentMethod(\"calendars\",\"getCal\")(r),o=a.fromJD(i);return e%12?a.add(o,e,\"m\"):a.add(o,e/12,\"y\"),(o.toJD()-g)*f+n}catch(e){s.error(\"invalid ms \"+t+\" in calendar \"+r)}var c=new Date(t+I);return c.setUTCMonth(c.getUTCMonth()+e)+n-I},r.findExactDates=function(t,e){for(var r,n,i=0,a=0,s=0,l=0,c=_(e)&&m.getComponentMethod(\"calendars\",\"getCal\")(e),u=0;u0&&t[e+1][0]<0)return e;return null}switch(e=\"RUS\"===s||\"FJI\"===s?function(t){var e;if(null===c(t))e=t;else for(e=new Array(t.length),i=0;ie?r[n++]=[t[i][0]+360,t[i][1]]:i===e?(r[n++]=t[i],r[n++]=[t[i][0],-90]):r[n++]=t[i];var a=h.tester(r);a.pts.pop(),l.push(a)}:function(t){l.push(h.tester(t))},a.type){case\"MultiPolygon\":for(r=0;ri&&(i=c,e=l)}else e=r;return o.default(e).geometry.coordinates}(u),n.fIn=t,n.fOut=u,s.push(u)}else c.log([\"Location\",n.loc,\"does not have a valid GeoJSON geometry.\",\"Traces with locationmode *geojson-id* only support\",\"*Polygon* and *MultiPolygon* geometries.\"].join(\" \"))}delete i[r]}switch(r.type){case\"FeatureCollection\":var h=r.features;for(n=0;n100?(clearInterval(a),n(\"Unexpected error while fetching from \"+t)):void i++}),50)}))}for(var o=0;o0&&(r.push(i),i=[])}return i.length>0&&r.push(i),r},r.makeLine=function(t){return 1===t.length?{type:\"LineString\",coordinates:t[0]}:{type:\"MultiLineString\",coordinates:t}},r.makePolygon=function(t){if(1===t.length)return{type:\"Polygon\",coordinates:t};for(var e=new Array(t.length),r=0;r1||g<0||g>1?null:{x:t+l*g,y:e+f*g}}function l(t,e,r,n,i){var a=n*t+i*e;if(a<0)return n*n+i*i;if(a>r){var o=n-t,s=i-e;return o*o+s*s}var l=n*e-i*t;return l*l/r}r.segmentsIntersect=s,r.segmentDistance=function(t,e,r,n,i,a,o,c){if(s(t,e,r,n,i,a,o,c))return 0;var u=r-t,f=n-e,h=o-i,p=c-a,d=u*u+f*f,g=h*h+p*p,m=Math.min(l(u,f,d,i-t,a-e),l(u,f,d,o-t,c-e),l(h,p,g,t-i,e-a),l(h,p,g,r-i,n-a));return Math.sqrt(m)},r.getTextLocation=function(t,e,r,s){if(t===i&&s===a||(n={},i=t,a=s),n[r])return n[r];var l=t.getPointAtLength(o(r-s/2,e)),c=t.getPointAtLength(o(r+s/2,e)),u=Math.atan((c.y-l.y)/(c.x-l.x)),f=t.getPointAtLength(o(r,e)),h={x:(4*f.x+l.x+c.x)/6,y:(4*f.y+l.y+c.y)/6,theta:u};return n[r]=h,h},r.clearLocationCache=function(){i=null},r.getVisibleSegment=function(t,e,r){var n,i,a=e.left,o=e.right,s=e.top,l=e.bottom,c=0,u=t.getTotalLength(),f=u;function h(e){var r=t.getPointAtLength(e);0===e?n=r:e===u&&(i=r);var c=r.xo?r.x-o:0,f=r.yl?r.y-l:0;return Math.sqrt(c*c+f*f)}for(var p=h(c);p;){if((c+=p+r)>f)return;p=h(c)}for(p=h(f);p;){if(c>(f-=p+r))return;p=h(f)}return{min:c,max:f,len:f-c,total:u,isClosed:0===c&&f===u&&Math.abs(n.x-i.x)<.1&&Math.abs(n.y-i.y)<.1}},r.findPointOnPath=function(t,e,r,n){for(var i,a,o,s=(n=n||{}).pathLength||t.getTotalLength(),l=n.tolerance||.001,c=n.iterationLimit||30,u=t.getPointAtLength(0)[r]>t.getPointAtLength(s)[r]?-1:1,f=0,h=0,p=s;f0?p=i:h=i,f++}return a}},{\"./mod\":510}],499:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"tinycolor2\"),a=t(\"color-normalize\"),o=t(\"../components/colorscale\"),s=t(\"../components/color/attributes\").defaultLine,l=t(\"./array\").isArrayOrTypedArray,c=a(s);function u(t,e){var r=t;return r[3]*=e,r}function f(t){if(n(t))return c;var e=a(t);return e.length?e:c}function h(t){return n(t)?t:1}e.exports={formatColor:function(t,e,r){var n,i,s,p,d,g=t.color,m=l(g),v=l(e),y=o.extractOpts(t),x=[];if(n=void 0!==y.colorscale?o.makeColorScaleFuncFromTrace(t):f,i=m?function(t,e){return void 0===t[e]?c:a(n(t[e]))}:f,s=v?function(t,e){return void 0===t[e]?1:h(t[e])}:h,m||v)for(var b=0;b1?(r*t+r*e)/r:t+e,i=String(n).length;if(i>16){var a=String(e).length;if(i>=String(t).length+a){var o=parseFloat(n).toPrecision(12);-1===o.indexOf(\"e+\")&&(n=+o)}}return n}},{}],503:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"d3-time-format\").utcFormat,a=t(\"d3-format\").format,o=t(\"fast-isnumeric\"),s=t(\"../constants/numerical\"),l=s.FP_SAFE,c=-l,u=s.BADNUM,f=e.exports={};f.adjustFormat=function(t){return!t||/^\\d[.]\\df/.test(t)||/[.]\\d%/.test(t)?t:\"0.f\"===t?\"~f\":/^\\d%/.test(t)?\"~%\":/^\\ds/.test(t)?\"~s\":!/^[~,.0$]/.test(t)&&/[&fps]/.test(t)?\"~\"+t:t};var h={};f.warnBadFormat=function(t){var e=String(t);h[e]||(h[e]=1,f.warn('encountered bad format: \"'+e+'\"'))},f.noFormat=function(t){return String(t)},f.numberFormat=function(t){var e;try{e=a(f.adjustFormat(t))}catch(e){return f.warnBadFormat(t),f.noFormat}return e},f.nestedProperty=t(\"./nested_property\"),f.keyedContainer=t(\"./keyed_container\"),f.relativeAttr=t(\"./relative_attr\"),f.isPlainObject=t(\"./is_plain_object\"),f.toLogRange=t(\"./to_log_range\"),f.relinkPrivateKeys=t(\"./relink_private\");var p=t(\"./array\");f.isTypedArray=p.isTypedArray,f.isArrayOrTypedArray=p.isArrayOrTypedArray,f.isArray1D=p.isArray1D,f.ensureArray=p.ensureArray,f.concat=p.concat,f.maxRowLength=p.maxRowLength,f.minRowLength=p.minRowLength;var d=t(\"./mod\");f.mod=d.mod,f.modHalf=d.modHalf;var g=t(\"./coerce\");f.valObjectMeta=g.valObjectMeta,f.coerce=g.coerce,f.coerce2=g.coerce2,f.coerceFont=g.coerceFont,f.coercePattern=g.coercePattern,f.coerceHoverinfo=g.coerceHoverinfo,f.coerceSelectionMarkerOpacity=g.coerceSelectionMarkerOpacity,f.validate=g.validate;var m=t(\"./dates\");f.dateTime2ms=m.dateTime2ms,f.isDateTime=m.isDateTime,f.ms2DateTime=m.ms2DateTime,f.ms2DateTimeLocal=m.ms2DateTimeLocal,f.cleanDate=m.cleanDate,f.isJSDate=m.isJSDate,f.formatDate=m.formatDate,f.incrementMonth=m.incrementMonth,f.dateTick0=m.dateTick0,f.dfltRange=m.dfltRange,f.findExactDates=m.findExactDates,f.MIN_MS=m.MIN_MS,f.MAX_MS=m.MAX_MS;var v=t(\"./search\");f.findBin=v.findBin,f.sorterAsc=v.sorterAsc,f.sorterDes=v.sorterDes,f.distinctVals=v.distinctVals,f.roundUp=v.roundUp,f.sort=v.sort,f.findIndexOfMin=v.findIndexOfMin,f.sortObjectKeys=t(\"./sort_object_keys\");var y=t(\"./stats\");f.aggNums=y.aggNums,f.len=y.len,f.mean=y.mean,f.median=y.median,f.midRange=y.midRange,f.variance=y.variance,f.stdev=y.stdev,f.interp=y.interp;var x=t(\"./matrix\");f.init2dArray=x.init2dArray,f.transposeRagged=x.transposeRagged,f.dot=x.dot,f.translationMatrix=x.translationMatrix,f.rotationMatrix=x.rotationMatrix,f.rotationXYMatrix=x.rotationXYMatrix,f.apply3DTransform=x.apply3DTransform,f.apply2DTransform=x.apply2DTransform,f.apply2DTransform2=x.apply2DTransform2,f.convertCssMatrix=x.convertCssMatrix,f.inverseTransformMatrix=x.inverseTransformMatrix;var b=t(\"./angles\");f.deg2rad=b.deg2rad,f.rad2deg=b.rad2deg,f.angleDelta=b.angleDelta,f.angleDist=b.angleDist,f.isFullCircle=b.isFullCircle,f.isAngleInsideSector=b.isAngleInsideSector,f.isPtInsideSector=b.isPtInsideSector,f.pathArc=b.pathArc,f.pathSector=b.pathSector,f.pathAnnulus=b.pathAnnulus;var _=t(\"./anchor_utils\");f.isLeftAnchor=_.isLeftAnchor,f.isCenterAnchor=_.isCenterAnchor,f.isRightAnchor=_.isRightAnchor,f.isTopAnchor=_.isTopAnchor,f.isMiddleAnchor=_.isMiddleAnchor,f.isBottomAnchor=_.isBottomAnchor;var w=t(\"./geometry2d\");f.segmentsIntersect=w.segmentsIntersect,f.segmentDistance=w.segmentDistance,f.getTextLocation=w.getTextLocation,f.clearLocationCache=w.clearLocationCache,f.getVisibleSegment=w.getVisibleSegment,f.findPointOnPath=w.findPointOnPath;var T=t(\"./extend\");f.extendFlat=T.extendFlat,f.extendDeep=T.extendDeep,f.extendDeepAll=T.extendDeepAll,f.extendDeepNoArrays=T.extendDeepNoArrays;var k=t(\"./loggers\");f.log=k.log,f.warn=k.warn,f.error=k.error;var A=t(\"./regex\");f.counterRegex=A.counter;var M=t(\"./throttle\");f.throttle=M.throttle,f.throttleDone=M.done,f.clearThrottle=M.clear;var S=t(\"./dom\");function E(t){var e={};for(var r in t)for(var n=t[r],i=0;il||t=e)&&(o(t)&&t>=0&&t%1==0)},f.noop=t(\"./noop\"),f.identity=t(\"./identity\"),f.repeat=function(t,e){for(var r=new Array(e),n=0;nr?Math.max(r,Math.min(e,t)):Math.max(e,Math.min(r,t))},f.bBoxIntersect=function(t,e,r){return r=r||0,t.left<=e.right+r&&e.left<=t.right+r&&t.top<=e.bottom+r&&e.top<=t.bottom+r},f.simpleMap=function(t,e,r,n,i){for(var a=t.length,o=new Array(a),s=0;s=Math.pow(2,r)?i>10?(f.warn(\"randstr failed uniqueness\"),l):t(e,r,n,(i||0)+1):l},f.OptionControl=function(t,e){t||(t={}),e||(e=\"opt\");var r={optionList:[],_newoption:function(n){n[e]=t,r[n.name]=n,r.optionList.push(n)}};return r[\"_\"+e]=t,r},f.smooth=function(t,e){if((e=Math.round(e)||0)<2)return t;var r,n,i,a,o=t.length,s=2*o,l=2*e-1,c=new Array(l),u=new Array(o);for(r=0;r=s&&(i-=s*Math.floor(i/s)),i<0?i=-1-i:i>=o&&(i=s-1-i),a+=t[i]*c[n];u[r]=a}return u},f.syncOrAsync=function(t,e,r){var n;function i(){return f.syncOrAsync(t,e,r)}for(;t.length;)if((n=(0,t.splice(0,1)[0])(e))&&n.then)return n.then(i);return r&&r(e)},f.stripTrailingSlash=function(t){return\"/\"===t.substr(-1)?t.substr(0,t.length-1):t},f.noneOrAll=function(t,e,r){if(t){var n,i=!1,a=!0;for(n=0;n0?e:0}))},f.fillArray=function(t,e,r,n){if(n=n||f.identity,f.isArrayOrTypedArray(t))for(var i=0;i1?i+o[1]:\"\";if(a&&(o.length>1||s.length>4||r))for(;n.test(s);)s=s.replace(n,\"$1\"+a+\"$2\");return s+l},f.TEMPLATE_STRING_REGEX=/%{([^\\s%{}:]*)([:|\\|][^}]*)?}/g;var z=/^\\w*$/;f.templateString=function(t,e){var r={};return t.replace(f.TEMPLATE_STRING_REGEX,(function(t,n){var i;return z.test(n)?i=e[n]:(r[n]=r[n]||f.nestedProperty(e,n).get,i=r[n]()),f.isValidTextValue(i)?i:\"\"}))};var D={max:10,count:0,name:\"hovertemplate\"};f.hovertemplateString=function(){return B.apply(D,arguments)};var R={max:10,count:0,name:\"texttemplate\"};f.texttemplateString=function(){return B.apply(R,arguments)};var F=/^[:|\\|]/;function B(t,e,r){var n=this,a=arguments;e||(e={});var o={};return t.replace(f.TEMPLATE_STRING_REGEX,(function(t,s,l){var c,u,h,p=\"_xother\"===s||\"_yother\"===s,d=\"_xother_\"===s||\"_yother_\"===s,g=\"xother_\"===s||\"yother_\"===s,m=\"xother\"===s||\"yother\"===s||p||g||d,v=s;if((p||d)&&(v=v.substring(1)),(g||d)&&(v=v.substring(0,v.length-1)),m){if(void 0===(c=e[v]))return\"\"}else for(h=3;h=48&&o<=57,c=s>=48&&s<=57;if(l&&(n=10*n+o-48),c&&(i=10*i+s-48),!l||!c){if(n!==i)return n-i;if(o!==s)return o-s}}return i-n};var N=2e9;f.seedPseudoRandom=function(){N=2e9},f.pseudoRandom=function(){var t=N;return N=(69069*N+1)%4294967296,Math.abs(N-t)<429496729?f.pseudoRandom():N/4294967296},f.fillText=function(t,e,r){var n=Array.isArray(r)?function(t){r.push(t)}:function(t){r.text=t},i=f.extractOption(t,e,\"htx\",\"hovertext\");if(f.isValidTextValue(i))return n(i);var a=f.extractOption(t,e,\"tx\",\"text\");return f.isValidTextValue(a)?n(a):void 0},f.isValidTextValue=function(t){return t||0===t},f.formatPercent=function(t,e){e=e||0;for(var r=(Math.round(100*t*Math.pow(10,e))*Math.pow(.1,e)).toFixed(e)+\"%\",n=0;n1&&(c=1):c=0,f.strTranslate(i-c*(r+o),a-c*(n+s))+f.strScale(c)+(l?\"rotate(\"+l+(e?\"\":\" \"+r+\" \"+n)+\")\":\"\")},f.ensureUniformFontSize=function(t,e){var r=f.extendFlat({},e);return r.size=Math.max(e.size,t._fullLayout.uniformtext.minsize||0),r},f.join2=function(t,e,r){var n=t.length;return n>1?t.slice(0,-1).join(e)+r+t[n-1]:t.join(e)},f.bigFont=function(t){return Math.round(1.2*t)};var j=f.getFirefoxVersion(),U=null!==j&&j<86;f.getPositionFromD3Event=function(){return U?[n.event.layerX,n.event.layerY]:[n.event.offsetX,n.event.offsetY]}},{\"../constants/numerical\":479,\"./anchor_utils\":483,\"./angles\":484,\"./array\":485,\"./clean_number\":486,\"./clear_responsive\":488,\"./coerce\":489,\"./dates\":490,\"./dom\":491,\"./extend\":493,\"./filter_unique\":494,\"./filter_visible\":495,\"./geometry2d\":498,\"./identity\":501,\"./increment\":502,\"./is_plain_object\":504,\"./keyed_container\":505,\"./localize\":506,\"./loggers\":507,\"./make_trace_groups\":508,\"./matrix\":509,\"./mod\":510,\"./nested_property\":511,\"./noop\":512,\"./notifier\":513,\"./preserve_drawing_buffer\":517,\"./push_unique\":518,\"./regex\":520,\"./relative_attr\":521,\"./relink_private\":522,\"./search\":523,\"./sort_object_keys\":526,\"./stats\":527,\"./throttle\":530,\"./to_log_range\":531,\"@plotly/d3\":58,\"d3-format\":112,\"d3-time-format\":120,\"fast-isnumeric\":190}],504:[function(t,e,r){\"use strict\";e.exports=function(t){return window&&window.process&&window.process.versions?\"[object Object]\"===Object.prototype.toString.call(t):\"[object Object]\"===Object.prototype.toString.call(t)&&Object.getPrototypeOf(t).hasOwnProperty(\"hasOwnProperty\")}},{}],505:[function(t,e,r){\"use strict\";var n=t(\"./nested_property\"),i=/^\\w*$/;e.exports=function(t,e,r,a){var o,s,l;r=r||\"name\",a=a||\"value\";var c={};e&&e.length?(l=n(t,e),s=l.get()):s=t,e=e||\"\";var u={};if(s)for(o=0;o2)return c[e]=2|c[e],h.set(t,null);if(f){for(o=e;o1){var e=[\"LOG:\"];for(t=0;t1){var r=[];for(t=0;t\"),\"long\")}},a.warn=function(){var t;if(n.logging>0){var e=[\"WARN:\"];for(t=0;t0){var r=[];for(t=0;t\"),\"stick\")}},a.error=function(){var t;if(n.logging>0){var e=[\"ERROR:\"];for(t=0;t0){var r=[];for(t=0;t\"),\"stick\")}}},{\"../plot_api/plot_config\":541,\"./notifier\":513}],508:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\");e.exports=function(t,e,r){var i=t.selectAll(\"g.\"+r.replace(/\\s/g,\".\")).data(e,(function(t){return t[0].trace.uid}));i.exit().remove(),i.enter().append(\"g\").attr(\"class\",r),i.order();var a=t.classed(\"rangeplot\")?\"nodeRangePlot3\":\"node3\";return i.each((function(t){t[0][a]=n.select(this)})),i}},{\"@plotly/d3\":58}],509:[function(t,e,r){\"use strict\";var n=t(\"gl-mat4\");r.init2dArray=function(t,e){for(var r=new Array(t),n=0;ne/2?t-Math.round(t/e)*e:t}}},{}],511:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"./array\").isArrayOrTypedArray;function a(t,e){return function(){var r,n,o,s,l,c=t;for(s=0;s/g),l=0;la||c===i||cs)&&(!e||!l(t))}:function(t,e){var l=t[0],c=t[1];if(l===i||la||c===i||cs)return!1;var u,f,h,p,d,g=r.length,m=r[0][0],v=r[0][1],y=0;for(u=1;uMath.max(f,m)||c>Math.max(h,v)))if(cu||Math.abs(n(o,h))>i)return!0;return!1},a.filter=function(t,e){var r=[t[0]],n=0,i=0;function o(o){t.push(o);var s=r.length,l=n;r.splice(i+1);for(var c=l+1;c1&&o(t.pop());return{addPt:o,raw:t,filtered:r}}},{\"../constants/numerical\":479,\"./matrix\":509}],516:[function(t,e,r){(function(r){(function(){\"use strict\";var n=t(\"./show_no_webgl_msg\"),i=t(\"regl\");e.exports=function(t,e){var a=t._fullLayout,o=!0;return a._glcanvas.each((function(n){if(!n.regl&&(!n.pick||a._has(\"parcoords\"))){try{n.regl=i({canvas:this,attributes:{antialias:!n.pick,preserveDrawingBuffer:!0},pixelRatio:t._context.plotGlPixelRatio||r.devicePixelRatio,extensions:e||[]})}catch(t){o=!1}n.regl||(o=!1),o&&this.addEventListener(\"webglcontextlost\",(function(e){t&&t.emit&&t.emit(\"plotly_webglcontextlost\",{event:e,layer:n.key})}),!1)}})),o||n({container:a._glcontainer.node()}),o}}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"./show_no_webgl_msg\":525,regl:283}],517:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"is-mobile\");e.exports=function(t){var e;if(\"string\"!=typeof(e=t&&t.hasOwnProperty(\"userAgent\")?t.userAgent:function(){var t;\"undefined\"!=typeof navigator&&(t=navigator.userAgent);t&&t.headers&&\"string\"==typeof t.headers[\"user-agent\"]&&(t=t.headers[\"user-agent\"]);return t}()))return!0;var r=i({ua:{headers:{\"user-agent\":e}},tablet:!0,featureDetect:!1});if(!r)for(var a=e.split(\" \"),o=1;o-1;s--){var l=a[s];if(\"Version/\"===l.substr(0,8)){var c=l.substr(8).split(\".\")[0];if(n(c)&&(c=+c),c>=13)return!0}}}return r}},{\"fast-isnumeric\":190,\"is-mobile\":234}],518:[function(t,e,r){\"use strict\";e.exports=function(t,e){if(e instanceof RegExp){for(var r=e.toString(),n=0;ni.queueLength&&(t.undoQueue.queue.shift(),t.undoQueue.index--))},startSequence:function(t){t.undoQueue=t.undoQueue||{index:0,queue:[],sequence:!1},t.undoQueue.sequence=!0,t.undoQueue.beginSequence=!0},stopSequence:function(t){t.undoQueue=t.undoQueue||{index:0,queue:[],sequence:!1},t.undoQueue.sequence=!1,t.undoQueue.beginSequence=!1},undo:function(t){var e,r;if(!(void 0===t.undoQueue||isNaN(t.undoQueue.index)||t.undoQueue.index<=0)){for(t.undoQueue.index--,e=t.undoQueue.queue[t.undoQueue.index],t.undoQueue.inSequence=!0,r=0;r=t.undoQueue.queue.length)){for(e=t.undoQueue.queue[t.undoQueue.index],t.undoQueue.inSequence=!0,r=0;re}function u(t,e){return t>=e}r.findBin=function(t,e,r){if(n(e.start))return r?Math.ceil((t-e.start)/e.size-1e-9)-1:Math.floor((t-e.start)/e.size+1e-9);var a,o,f=0,h=e.length,p=0,d=h>1?(e[h-1]-e[0])/(h-1):1;for(o=d>=0?r?s:l:r?u:c,t+=1e-9*d*(r?-1:1)*(d>=0?1:-1);f90&&i.log(\"Long binary search...\"),f-1},r.sorterAsc=function(t,e){return t-e},r.sorterDes=function(t,e){return e-t},r.distinctVals=function(t){var e,n=t.slice();for(n.sort(r.sorterAsc),e=n.length-1;e>-1&&n[e]===o;e--);for(var i,a=n[e]-n[0]||1,s=a/(e||1)/1e4,l=[],c=0;c<=e;c++){var u=n[c],f=u-i;void 0===i?(l.push(u),i=u):f>s&&(a=Math.min(a,f),l.push(u),i=u)}return{vals:l,minDiff:a}},r.roundUp=function(t,e,r){for(var n,i=0,a=e.length-1,o=0,s=r?0:1,l=r?1:0,c=r?Math.ceil:Math.floor;i0&&(n=1),r&&n)return t.sort(e)}return n?t:t.reverse()},r.findIndexOfMin=function(t,e){e=e||a;for(var r,n=1/0,i=0;ia.length)&&(o=a.length),n(e)||(e=!1),i(a[0])){for(l=new Array(o),s=0;st.length-1)return t[t.length-1];var r=e%1;return r*t[Math.ceil(e)]+(1-r)*t[Math.floor(e)]}},{\"./array\":485,\"fast-isnumeric\":190}],528:[function(t,e,r){\"use strict\";var n=t(\"color-normalize\");e.exports=function(t){return t?n(t):[0,0,0,1]}},{\"color-normalize\":89}],529:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../lib\"),a=i.strTranslate,o=t(\"../constants/xmlns_namespaces\"),s=t(\"../constants/alignment\").LINE_SPACING,l=/([^$]*)([$]+[^$]*[$]+)([^$]*)/;r.convertToTspans=function(t,e,d){var A=t.text(),M=!t.attr(\"data-notex\")&&\"undefined\"!=typeof MathJax&&A.match(l),L=n.select(t.node().parentNode);if(!L.empty()){var C=t.attr(\"class\")?t.attr(\"class\").split(\" \")[0]:\"text\";return C+=\"-math\",L.selectAll(\"svg.\"+C).remove(),L.selectAll(\"g.\"+C+\"-group\").remove(),t.style(\"display\",null).attr({\"data-unformatted\":A,\"data-math\":\"N\"}),M?(e&&e._promises||[]).push(new Promise((function(e){t.style(\"display\",\"none\");var r=parseInt(t.node().style.fontSize,10),o={fontSize:r};!function(t,e,r){var a,o,s,l;MathJax.Hub.Queue((function(){return o=i.extendDeepAll({},MathJax.Hub.config),s=MathJax.Hub.processSectionDelay,void 0!==MathJax.Hub.processSectionDelay&&(MathJax.Hub.processSectionDelay=0),MathJax.Hub.Config({messageStyle:\"none\",tex2jax:{inlineMath:[[\"$\",\"$\"],[\"\\\\(\",\"\\\\)\"]]},displayAlign:\"left\"})}),(function(){if(\"SVG\"!==(a=MathJax.Hub.config.menuSettings.renderer))return MathJax.Hub.setRenderer(\"SVG\")}),(function(){var r=\"math-output-\"+i.randstr({},64);return l=n.select(\"body\").append(\"div\").attr({id:r}).style({visibility:\"hidden\",position:\"absolute\"}).style({\"font-size\":e.fontSize+\"px\"}).text(t.replace(c,\"\\\\lt \").replace(u,\"\\\\gt \")),MathJax.Hub.Typeset(l.node())}),(function(){var e=n.select(\"body\").select(\"#MathJax_SVG_glyphs\");if(l.select(\".MathJax_SVG\").empty()||!l.select(\"svg\").node())i.log(\"There was an error in the tex syntax.\",t),r();else{var o=l.select(\"svg\").node().getBoundingClientRect();r(l.select(\".MathJax_SVG\"),e,o)}if(l.remove(),\"SVG\"!==a)return MathJax.Hub.setRenderer(a)}),(function(){return void 0!==s&&(MathJax.Hub.processSectionDelay=s),MathJax.Hub.Config(o)}))}(M[2],o,(function(n,i,o){L.selectAll(\"svg.\"+C).remove(),L.selectAll(\"g.\"+C+\"-group\").remove();var s=n&&n.select(\"svg\");if(!s||!s.node())return P(),void e();var l=L.append(\"g\").classed(C+\"-group\",!0).attr({\"pointer-events\":\"none\",\"data-unformatted\":A,\"data-math\":\"Y\"});l.node().appendChild(s.node()),i&&i.node()&&s.node().insertBefore(i.node().cloneNode(!0),s.node().firstChild);var c=o.width,u=o.height;s.attr({class:C,height:u,preserveAspectRatio:\"xMinYMin meet\"}).style({overflow:\"visible\",\"pointer-events\":\"none\"});var f=t.node().style.fill||\"black\",h=s.select(\"g\");h.attr({fill:f,stroke:f});var p=h.node().getBoundingClientRect(),g=p.width,m=p.height;(g>c||m>u)&&(s.style(\"overflow\",\"hidden\"),g=(p=s.node().getBoundingClientRect()).width,m=p.height);var v=+t.attr(\"x\"),y=+t.attr(\"y\"),x=-(r||t.node().getBoundingClientRect().height)/4;if(\"y\"===C[0])l.attr({transform:\"rotate(\"+[-90,v,y]+\")\"+a(-g/2,x-m/2)});else if(\"l\"===C[0])y=x-m/2;else if(\"a\"===C[0]&&0!==C.indexOf(\"atitle\"))v=0,y=x;else{var b=t.attr(\"text-anchor\");v-=g*(\"middle\"===b?.5:\"end\"===b?1:0),y=y+x-m/2}s.attr({x:v,y:y}),d&&d.call(t,l),e(l)}))}))):P(),t}function P(){L.empty()||(C=t.attr(\"class\")+\"-math\",L.select(\"svg.\"+C).remove()),t.text(\"\").style(\"white-space\",\"pre\"),function(t,e){e=e.replace(g,\" \");var r,a=!1,l=[],c=-1;function u(){c++;var e=document.createElementNS(o.svg,\"tspan\");n.select(e).attr({class:\"line\",dy:c*s+\"em\"}),t.appendChild(e),r=e;var i=l;if(l=[{node:e}],i.length>1)for(var a=1;a doesnt match end tag <\"+t+\">. Pretending it did match.\",e),r=l[l.length-1].node}else i.log(\"Ignoring unexpected end tag .\",e)}y.test(e)?u():(r=t,l=[{node:t}]);for(var L=e.split(m),C=0;C|>|>)/g;var f={sup:\"font-size:70%\",sub:\"font-size:70%\",b:\"font-weight:bold\",i:\"font-style:italic\",a:\"cursor:pointer\",span:\"\",em:\"font-style:italic;font-weight:bold\"},h={sub:\"0.3em\",sup:\"-0.6em\"},p={sub:\"-0.21em\",sup:\"0.42em\"},d=[\"http:\",\"https:\",\"mailto:\",\"\",void 0,\":\"],g=r.NEWLINES=/(\\r\\n?|\\n)/g,m=/(<[^<>]*>)/,v=/<(\\/?)([^ >]*)(\\s+(.*))?>/i,y=//i;r.BR_TAG_ALL=//gi;var x=/(^|[\\s\"'])style\\s*=\\s*(\"([^\"]*);?\"|'([^']*);?')/i,b=/(^|[\\s\"'])href\\s*=\\s*(\"([^\"]*)\"|'([^']*)')/i,_=/(^|[\\s\"'])target\\s*=\\s*(\"([^\"\\s]*)\"|'([^'\\s]*)')/i,w=/(^|[\\s\"'])popup\\s*=\\s*(\"([\\w=,]*)\"|'([\\w=,]*)')/i;function T(t,e){if(!t)return null;var r=t.match(e),n=r&&(r[3]||r[4]);return n&&S(n)}var k=/(^|;)\\s*color:/;r.plainText=function(t,e){for(var r=void 0!==(e=e||{}).len&&-1!==e.len?e.len:1/0,n=void 0!==e.allowedTags?e.allowedTags:[\"br\"],i=\"...\".length,a=t.split(m),o=[],s=\"\",l=0,c=0;ci?o.push(u.substr(0,d-i)+\"...\"):o.push(u.substr(0,d));break}s=\"\"}}return o.join(\"\")};var A={mu:\"\\u03bc\",amp:\"&\",lt:\"<\",gt:\">\",nbsp:\"\\xa0\",times:\"\\xd7\",plusmn:\"\\xb1\",deg:\"\\xb0\"},M=/&(#\\d+|#x[\\da-fA-F]+|[a-z]+);/g;function S(t){return t.replace(M,(function(t,e){return(\"#\"===e.charAt(0)?function(t){if(t>1114111)return;var e=String.fromCodePoint;if(e)return e(t);var r=String.fromCharCode;return t<=65535?r(t):r(55232+(t>>10),t%1024+56320)}(\"x\"===e.charAt(1)?parseInt(e.substr(2),16):parseInt(e.substr(1),10)):A[e])||t}))}function E(t){var e=encodeURI(decodeURI(t)),r=document.createElement(\"a\"),n=document.createElement(\"a\");r.href=t,n.href=e;var i=r.protocol,a=n.protocol;return-1!==d.indexOf(i)&&-1!==d.indexOf(a)?e:\"\"}function L(t,e,r){var n,a,o,s=r.horizontalAlign,l=r.verticalAlign||\"top\",c=t.node().getBoundingClientRect(),u=e.node().getBoundingClientRect();return a=\"bottom\"===l?function(){return c.bottom-n.height}:\"middle\"===l?function(){return c.top+(c.height-n.height)/2}:function(){return c.top},o=\"right\"===s?function(){return c.right-n.width}:\"center\"===s?function(){return c.left+(c.width-n.width)/2}:function(){return c.left},function(){n=this.node().getBoundingClientRect();var t=o()-u.left,e=a()-u.top,s=r.gd||{};if(r.gd){s._fullLayout._calcInverseTransform(s);var l=i.apply3DTransform(s._fullLayout._invTransform)(t,e);t=l[0],e=l[1]}return this.style({top:e+\"px\",left:t+\"px\",\"z-index\":1e3}),this}}r.convertEntities=S,r.sanitizeHTML=function(t){t=t.replace(g,\" \");for(var e=document.createElement(\"p\"),r=e,i=[],a=t.split(m),o=0;oa.ts+e?l():a.timer=setTimeout((function(){l(),a.timer=null}),e)},r.done=function(t){var e=n[t];return e&&e.timer?new Promise((function(t){var r=e.onDone;e.onDone=function(){r&&r(),t(),e.onDone=null}})):Promise.resolve()},r.clear=function(t){if(t)i(n[t]),delete n[t];else for(var e in n)r.clear(e)}},{}],531:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\");e.exports=function(t,e){if(t>0)return Math.log(t)/Math.LN10;var r=Math.log(Math.min(e[0],e[1]))/Math.LN10;return n(r)||(r=Math.log(Math.max(e[0],e[1]))/Math.LN10-6),r}},{\"fast-isnumeric\":190}],532:[function(t,e,r){\"use strict\";var n=e.exports={},i=t(\"../plots/geo/constants\").locationmodeToLayer,a=t(\"topojson-client\").feature;n.getTopojsonName=function(t){return[t.scope.replace(/ /g,\"-\"),\"_\",t.resolution.toString(),\"m\"].join(\"\")},n.getTopojsonPath=function(t,e){return t+e+\".json\"},n.getTopojsonFeatures=function(t,e){var r=i[t.locationmode],n=e.objects[r];return a(e,n).features}},{\"../plots/geo/constants\":587,\"topojson-client\":315}],533:[function(t,e,r){\"use strict\";e.exports={moduleType:\"locale\",name:\"en-US\",dictionary:{\"Click to enter Colorscale title\":\"Click to enter Colorscale title\"},format:{date:\"%m/%d/%Y\"}}},{}],534:[function(t,e,r){\"use strict\";e.exports={moduleType:\"locale\",name:\"en\",dictionary:{\"Click to enter Colorscale title\":\"Click to enter Colourscale title\"},format:{days:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],shortDays:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],months:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],shortMonths:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],periods:[\"AM\",\"PM\"],dateTime:\"%a %b %e %X %Y\",date:\"%d/%m/%Y\",time:\"%H:%M:%S\",decimal:\".\",thousands:\",\",grouping:[3],currency:[\"$\",\"\"],year:\"%Y\",month:\"%b %Y\",dayMonth:\"%b %-d\",dayMonthYear:\"%b %-d, %Y\"}}},{}],535:[function(t,e,r){\"use strict\";var n=t(\"../registry\");e.exports=function(t){for(var e,r,i=n.layoutArrayContainers,a=n.layoutArrayRegexes,o=t.split(\"[\")[0],s=0;s0&&o.log(\"Clearing previous rejected promises from queue.\"),t._promises=[]},r.cleanLayout=function(t){var e,n;t||(t={}),t.xaxis1&&(t.xaxis||(t.xaxis=t.xaxis1),delete t.xaxis1),t.yaxis1&&(t.yaxis||(t.yaxis=t.yaxis1),delete t.yaxis1),t.scene1&&(t.scene||(t.scene=t.scene1),delete t.scene1);var a=(s.subplotsRegistry.cartesian||{}).attrRegex,l=(s.subplotsRegistry.polar||{}).attrRegex,f=(s.subplotsRegistry.ternary||{}).attrRegex,h=(s.subplotsRegistry.gl3d||{}).attrRegex,g=Object.keys(t);for(e=0;e3?(O.x=1.02,O.xanchor=\"left\"):O.x<-2&&(O.x=-.02,O.xanchor=\"right\"),O.y>3?(O.y=1.02,O.yanchor=\"bottom\"):O.y<-2&&(O.y=-.02,O.yanchor=\"top\")),d(t),\"rotate\"===t.dragmode&&(t.dragmode=\"orbit\"),c.clean(t),t.template&&t.template.layout&&r.cleanLayout(t.template.layout),t},r.cleanData=function(t){for(var e=0;e0)return t.substr(0,e)}r.hasParent=function(t,e){for(var r=b(e);r;){if(r in t)return!0;r=b(r)}return!1};var _=[\"x\",\"y\",\"z\"];r.clearAxisTypes=function(t,e,r){for(var n=0;n1&&a.warn(\"Full array edits are incompatible with other edits\",f);var y=r[\"\"][\"\"];if(c(y))e.set(null);else{if(!Array.isArray(y))return a.warn(\"Unrecognized full array edit value\",f,y),!0;e.set(y)}return!g&&(h(m,v),p(t),!0)}var x,b,_,w,T,k,A,M,S=Object.keys(r).map(Number).sort(o),E=e.get(),L=E||[],C=u(v,f).get(),P=[],I=-1,O=L.length;for(x=0;xL.length-(A?0:1))a.warn(\"index out of range\",f,_);else if(void 0!==k)T.length>1&&a.warn(\"Insertion & removal are incompatible with edits to the same index.\",f,_),c(k)?P.push(_):A?(\"add\"===k&&(k={}),L.splice(_,0,k),C&&C.splice(_,0,{})):a.warn(\"Unrecognized full object edit value\",f,_,k),-1===I&&(I=_);else for(b=0;b=0;x--)L.splice(P[x],1),C&&C.splice(P[x],1);if(L.length?E||e.set(L):e.set(null),g)return!1;if(h(m,v),d!==i){var z;if(-1===I)z=S;else{for(O=Math.max(L.length,O),z=[],x=0;x=I);x++)z.push(_);for(x=I;x=t.data.length||i<-t.data.length)throw new Error(r+\" must be valid indices for gd.data.\");if(e.indexOf(i,n+1)>-1||i>=0&&e.indexOf(-t.data.length+i)>-1||i<0&&e.indexOf(t.data.length+i)>-1)throw new Error(\"each index in \"+r+\" must be unique.\")}}function I(t,e,r){if(!Array.isArray(t.data))throw new Error(\"gd.data must be an array.\");if(void 0===e)throw new Error(\"currentIndices is a required argument.\");if(Array.isArray(e)||(e=[e]),P(t,e,\"currentIndices\"),void 0===r||Array.isArray(r)||(r=[r]),void 0!==r&&P(t,r,\"newIndices\"),void 0!==r&&e.length!==r.length)throw new Error(\"current and new indices must be of equal length.\")}function O(t,e,r,n,a){!function(t,e,r,n){var i=o.isPlainObject(n);if(!Array.isArray(t.data))throw new Error(\"gd.data must be an array\");if(!o.isPlainObject(e))throw new Error(\"update must be a key:value object\");if(void 0===r)throw new Error(\"indices must be an integer or array of integers\");for(var a in P(t,r,\"indices\"),e){if(!Array.isArray(e[a])||e[a].length!==r.length)throw new Error(\"attribute \"+a+\" must be an array of length equal to indices array length\");if(i&&(!(a in n)||!Array.isArray(n[a])||n[a].length!==e[a].length))throw new Error(\"when maxPoints is set as a key:value object it must contain a 1:1 correspondence with the keys and number of traces in the update object\")}}(t,e,r,n);for(var l=function(t,e,r,n){var a,l,c,u,f,h=o.isPlainObject(n),p=[];for(var d in Array.isArray(r)||(r=[r]),r=C(r,t.data.length-1),e)for(var g=0;g-1&&-1===r.indexOf(\"grouptitlefont\")?l(r,r.replace(\"titlefont\",\"title.font\")):r.indexOf(\"titleposition\")>-1?l(r,r.replace(\"titleposition\",\"title.position\")):r.indexOf(\"titleside\")>-1?l(r,r.replace(\"titleside\",\"title.side\")):r.indexOf(\"titleoffset\")>-1&&l(r,r.replace(\"titleoffset\",\"title.offset\")):l(r,r.replace(\"title\",\"title.text\"));function l(e,r){t[r]=t[e],delete t[e]}}function U(t,e,r){t=o.getGraphDiv(t),_.clearPromiseQueue(t);var n={};if(\"string\"==typeof e)n[e]=r;else{if(!o.isPlainObject(e))return o.warn(\"Relayout fail.\",e,r),Promise.reject();n=o.extendFlat({},e)}Object.keys(n).length&&(t.changed=!0);var i=W(t,n),a=i.flags;a.calc&&(t.calcdata=void 0);var s=[h.previousPromises];a.layoutReplot?s.push(w.layoutReplot):Object.keys(n).length&&(V(t,a,i)||h.supplyDefaults(t),a.legend&&s.push(w.doLegend),a.layoutstyle&&s.push(w.layoutStyles),a.axrange&&H(s,i.rangesAltered),a.ticks&&s.push(w.doTicksRelayout),a.modebar&&s.push(w.doModeBar),a.camera&&s.push(w.doCamera),a.colorbars&&s.push(w.doColorBars),s.push(M)),s.push(h.rehover,h.redrag),c.add(t,U,[t,i.undoit],U,[t,i.redoit]);var l=o.syncOrAsync(s,t);return l&&l.then||(l=Promise.resolve(t)),l.then((function(){return t.emit(\"plotly_relayout\",i.eventData),t}))}function V(t,e,r){var n=t._fullLayout;if(!e.axrange)return!1;for(var i in e)if(\"axrange\"!==i&&e[i])return!1;for(var a in r.rangesAltered){var o=p.id2name(a),s=t.layout[o],l=n[o];if(l.autorange=s.autorange,s.range&&(l.range=s.range.slice()),l.cleanRange(),l._matchGroup)for(var c in l._matchGroup)if(c!==a){var u=n[p.id2name(c)];u.autorange=l.autorange,u.range=l.range.slice(),u._input.range=l.range.slice()}}return!0}function H(t,e){var r=e?function(t){var r=[],n=!0;for(var i in e){var a=p.getFromId(t,i);if(r.push(i),-1!==(a.ticklabelposition||\"\").indexOf(\"inside\")&&a._anchorAxis&&r.push(a._anchorAxis._id),a._matchGroup)for(var o in a._matchGroup)e[o]||r.push(o);a.automargin&&(n=!1)}return p.draw(t,r,{skipTitle:n})}:function(t){return p.draw(t,\"redraw\")};t.push(y,w.doAutoRangeAndConstraints,r,w.drawData,w.finalDraw)}var q=/^[xyz]axis[0-9]*\\.range(\\[[0|1]\\])?$/,G=/^[xyz]axis[0-9]*\\.autorange$/,Y=/^[xyz]axis[0-9]*\\.domain(\\[[0|1]\\])?$/;function W(t,e){var r,n,i,a=t.layout,l=t._fullLayout,c=l._guiEditing,h=F(l._preGUI,c),d=Object.keys(e),g=p.list(t),m=o.extendDeepAll({},e),v={};for(j(e),d=Object.keys(e),n=0;n0&&\"string\"!=typeof O.parts[D];)D--;var B=O.parts[D],N=O.parts[D-1]+\".\"+B,U=O.parts.slice(0,D).join(\".\"),V=s(t.layout,U).get(),H=s(l,U).get(),W=O.get();if(void 0!==z){M[I]=z,S[I]=\"reverse\"===B?z:R(W);var Z=f.getLayoutValObject(l,O.parts);if(Z&&Z.impliedEdits&&null!==z)for(var J in Z.impliedEdits)E(o.relativeAttr(I,J),Z.impliedEdits[J]);if(-1!==[\"width\",\"height\"].indexOf(I))if(z){E(\"autosize\",null);var K=\"height\"===I?\"width\":\"height\";E(K,l[K])}else l[I]=t._initialAutoSize[I];else if(\"autosize\"===I)E(\"width\",z?null:l.width),E(\"height\",z?null:l.height);else if(N.match(q))P(N),s(l,U+\"._inputRange\").set(null);else if(N.match(G)){P(N),s(l,U+\"._inputRange\").set(null);var Q=s(l,U).get();Q._inputDomain&&(Q._input.domain=Q._inputDomain.slice())}else N.match(Y)&&s(l,U+\"._inputDomain\").set(null);if(\"type\"===B){L=V;var $=\"linear\"===H.type&&\"log\"===z,tt=\"log\"===H.type&&\"linear\"===z;if($||tt){if(L&&L.range)if(H.autorange)$&&(L.range=L.range[1]>L.range[0]?[1,2]:[2,1]);else{var et=L.range[0],rt=L.range[1];$?(et<=0&&rt<=0&&E(U+\".autorange\",!0),et<=0?et=rt/1e6:rt<=0&&(rt=et/1e6),E(U+\".range[0]\",Math.log(et)/Math.LN10),E(U+\".range[1]\",Math.log(rt)/Math.LN10)):(E(U+\".range[0]\",Math.pow(10,et)),E(U+\".range[1]\",Math.pow(10,rt)))}else E(U+\".autorange\",!0);Array.isArray(l._subplots.polar)&&l._subplots.polar.length&&l[O.parts[0]]&&\"radialaxis\"===O.parts[1]&&delete l[O.parts[0]]._subplot.viewInitial[\"radialaxis.range\"],u.getComponentMethod(\"annotations\",\"convertCoords\")(t,H,z,E),u.getComponentMethod(\"images\",\"convertCoords\")(t,H,z,E)}else E(U+\".autorange\",!0),E(U+\".range\",null);s(l,U+\"._inputRange\").set(null)}else if(B.match(k)){var nt=s(l,I).get(),it=(z||{}).type;it&&\"-\"!==it||(it=\"linear\"),u.getComponentMethod(\"annotations\",\"convertCoords\")(t,nt,it,E),u.getComponentMethod(\"images\",\"convertCoords\")(t,nt,it,E)}var at=b.containerArrayMatch(I);if(at){r=at.array,n=at.index;var ot=at.property,st=Z||{editType:\"calc\"};\"\"!==n&&\"\"===ot&&(b.isAddVal(z)?S[I]=null:b.isRemoveVal(z)?S[I]=(s(a,r).get()||[])[n]:o.warn(\"unrecognized full object value\",e)),T.update(A,st),v[r]||(v[r]={});var lt=v[r][n];lt||(lt=v[r][n]={}),lt[ot]=z,delete e[I]}else\"reverse\"===B?(V.range?V.range.reverse():(E(U+\".autorange\",!0),V.range=[1,0]),H.autorange?A.calc=!0:A.plot=!0):(l._has(\"scatter-like\")&&l._has(\"regl\")&&\"dragmode\"===I&&(\"lasso\"===z||\"select\"===z)&&\"lasso\"!==W&&\"select\"!==W||l._has(\"gl2d\")?A.plot=!0:Z?T.update(A,Z):A.calc=!0,O.set(z))}}for(r in v){b.applyContainerArrayChanges(t,h(a,r),v[r],A,h)||(A.plot=!0)}for(var ct in C){var ut=(L=p.getFromId(t,ct))&&L._constraintGroup;if(ut)for(var ft in A.calc=!0,ut)C[ft]||(p.getFromId(t,ft)._constraintShrinkable=!0)}return(X(t)||e.height||e.width)&&(A.plot=!0),(A.plot||A.calc)&&(A.layoutReplot=!0),{flags:A,rangesAltered:C,undoit:S,redoit:M,eventData:m}}function X(t){var e=t._fullLayout,r=e.width,n=e.height;return t.layout.autosize&&h.plotAutoSize(t,t.layout,e),e.width!==r||e.height!==n}function Z(t,e,n,i){t=o.getGraphDiv(t),_.clearPromiseQueue(t),o.isPlainObject(e)||(e={}),o.isPlainObject(n)||(n={}),Object.keys(e).length&&(t.changed=!0),Object.keys(n).length&&(t.changed=!0);var a=_.coerceTraceIndices(t,i),s=N(t,o.extendFlat({},e),a),l=s.flags,u=W(t,o.extendFlat({},n)),f=u.flags;(l.calc||f.calc)&&(t.calcdata=void 0),l.clearAxisTypes&&_.clearAxisTypes(t,a,n);var p=[];f.layoutReplot?p.push(w.layoutReplot):l.fullReplot?p.push(r._doPlot):(p.push(h.previousPromises),V(t,f,u)||h.supplyDefaults(t),l.style&&p.push(w.doTraceStyle),(l.colorbars||f.colorbars)&&p.push(w.doColorBars),f.legend&&p.push(w.doLegend),f.layoutstyle&&p.push(w.layoutStyles),f.axrange&&H(p,u.rangesAltered),f.ticks&&p.push(w.doTicksRelayout),f.modebar&&p.push(w.doModeBar),f.camera&&p.push(w.doCamera),p.push(M)),p.push(h.rehover,h.redrag),c.add(t,Z,[t,s.undoit,u.undoit,s.traces],Z,[t,s.redoit,u.redoit,s.traces]);var d=o.syncOrAsync(p,t);return d&&d.then||(d=Promise.resolve(t)),d.then((function(){return t.emit(\"plotly_update\",{data:s.eventData,layout:u.eventData}),t}))}function J(t){return function(e){e._fullLayout._guiEditing=!0;var r=t.apply(null,arguments);return e._fullLayout._guiEditing=!1,r}}var K=[{pattern:/^hiddenlabels/,attr:\"legend.uirevision\"},{pattern:/^((x|y)axis\\d*)\\.((auto)?range|title\\.text)/},{pattern:/axis\\d*\\.showspikes$/,attr:\"modebar.uirevision\"},{pattern:/(hover|drag)mode$/,attr:\"modebar.uirevision\"},{pattern:/^(scene\\d*)\\.camera/},{pattern:/^(geo\\d*)\\.(projection|center|fitbounds)/},{pattern:/^(ternary\\d*\\.[abc]axis)\\.(min|title\\.text)$/},{pattern:/^(polar\\d*\\.radialaxis)\\.((auto)?range|angle|title\\.text)/},{pattern:/^(polar\\d*\\.angularaxis)\\.rotation/},{pattern:/^(mapbox\\d*)\\.(center|zoom|bearing|pitch)/},{pattern:/^legend\\.(x|y)$/,attr:\"editrevision\"},{pattern:/^(shapes|annotations)/,attr:\"editrevision\"},{pattern:/^title\\.text$/,attr:\"editrevision\"}],Q=[{pattern:/^selectedpoints$/,attr:\"selectionrevision\"},{pattern:/(^|value\\.)visible$/,attr:\"legend.uirevision\"},{pattern:/^dimensions\\[\\d+\\]\\.constraintrange/},{pattern:/^node\\.(x|y|groups)/},{pattern:/^level$/},{pattern:/(^|value\\.)name$/},{pattern:/colorbar\\.title\\.text$/},{pattern:/colorbar\\.(x|y)$/,attr:\"editrevision\"}];function $(t,e){for(var r=0;r1;)if(n.pop(),void 0!==(r=s(e,n.join(\".\")+\".uirevision\").get()))return r;return e.uirevision}function et(t,e){for(var r=0;r=i.length?i[0]:i[t]:i}function l(t){return Array.isArray(a)?t>=a.length?a[0]:a[t]:a}function c(t,e){var r=0;return function(){if(t&&++r===e)return t()}}return void 0===n._frameWaitingCnt&&(n._frameWaitingCnt=0),new Promise((function(a,u){function f(){n._currentFrame&&n._currentFrame.onComplete&&n._currentFrame.onComplete();var e=n._currentFrame=n._frameQueue.shift();if(e){var r=e.name?e.name.toString():null;t._fullLayout._currentFrame=r,n._lastFrameAt=Date.now(),n._timeToNext=e.frameOpts.duration,h.transition(t,e.frame.data,e.frame.layout,_.coerceTraceIndices(t,e.frame.traces),e.frameOpts,e.transitionOpts).then((function(){e.onComplete&&e.onComplete()})),t.emit(\"plotly_animatingframe\",{name:r,frame:e.frame,animation:{frame:e.frameOpts,transition:e.transitionOpts}})}else t.emit(\"plotly_animated\"),window.cancelAnimationFrame(n._animationRaf),n._animationRaf=null}function p(){t.emit(\"plotly_animating\"),n._lastFrameAt=-1/0,n._timeToNext=0,n._runningTransitions=0,n._currentFrame=null;var e=function(){n._animationRaf=window.requestAnimationFrame(e),Date.now()-n._lastFrameAt>n._timeToNext&&f()};e()}var d,g,m=0;function v(t){return Array.isArray(i)?m>=i.length?t.transitionOpts=i[m]:t.transitionOpts=i[0]:t.transitionOpts=i,m++,t}var y=[],x=null==e,b=Array.isArray(e);if(!x&&!b&&o.isPlainObject(e))y.push({type:\"object\",data:v(o.extendFlat({},e))});else if(x||-1!==[\"string\",\"number\"].indexOf(typeof e))for(d=0;d0&&kk)&&A.push(g);y=A}}y.length>0?function(e){if(0!==e.length){for(var i=0;i=0;n--)if(o.isPlainObject(e[n])){var g=e[n].name,m=(u[g]||d[g]||{}).name,v=e[n].name,y=u[m]||d[m];m&&v&&\"number\"==typeof v&&y&&A<5&&(A++,o.warn('addFrames: overwriting frame \"'+(u[m]||d[m]).name+'\" with a frame whose name of type \"number\" also equates to \"'+m+'\". This is valid but may potentially lead to unexpected behavior since all plotly.js frame names are stored internally as strings.'),5===A&&o.warn(\"addFrames: This API call has yielded too many of these warnings. For the rest of this call, further warnings about numeric frame names will be suppressed.\")),d[g]={name:g},p.push({frame:h.supplyFrameDefaults(e[n]),index:r&&void 0!==r[n]&&null!==r[n]?r[n]:f+n})}p.sort((function(t,e){return t.index>e.index?-1:t.index=0;n--){if(\"number\"==typeof(i=p[n].frame).name&&o.warn(\"Warning: addFrames accepts frames with numeric names, but the numbers areimplicitly cast to strings\"),!i.name)for(;u[i.name=\"frame \"+t._transitionData._counter++];);if(u[i.name]){for(a=0;a=0;r--)n=e[r],a.push({type:\"delete\",index:n}),s.unshift({type:\"insert\",index:n,value:i[n]});var l=h.modifyFrames,u=h.modifyFrames,f=[t,s],p=[t,a];return c&&c.add(t,l,f,u,p),h.modifyFrames(t,a)},r.addTraces=function t(e,n,i){e=o.getGraphDiv(e);var a,s,l=[],u=r.deleteTraces,f=t,h=[e,l],p=[e,n];for(function(t,e,r){var n,i;if(!Array.isArray(t.data))throw new Error(\"gd.data must be an array.\");if(void 0===e)throw new Error(\"traces must be defined.\");for(Array.isArray(e)||(e=[e]),n=0;n=0&&r=0&&r=a.length)return!1;if(2===t.dimensions){if(r++,e.length===r)return t;var o=e[r];if(!y(o))return!1;t=a[i][o]}else t=a[i]}else t=a}}return t}function y(t){return t===Math.round(t)&&t>=0}function x(){var t,e,r={};for(t in f(r,o),n.subplotsRegistry){if((e=n.subplotsRegistry[t]).layoutAttributes)if(Array.isArray(e.attr))for(var i=0;i=l.length)return!1;i=(r=(n.transformsRegistry[l[c].type]||{}).attributes)&&r[e[2]],s=3}else{var u=t._module;if(u||(u=(n.modules[t.type||a.type.dflt]||{})._module),!u)return!1;if(!(i=(r=u.attributes)&&r[o])){var f=u.basePlotModule;f&&f.attributes&&(i=f.attributes[o])}i||(i=a[o])}return v(i,e,s)},r.getLayoutValObject=function(t,e){return v(function(t,e){var r,i,a,s,l=t._basePlotModules;if(l){var c;for(r=0;r=i&&(r._input||{})._templateitemname;o&&(a=i);var s,l=e+\"[\"+a+\"]\";function c(){s={},o&&(s[l]={},s[l].templateitemname=o)}function u(t,e){o?n.nestedProperty(s[l],t).set(e):s[l+\".\"+t]=e}function f(){var t=s;return c(),t}return c(),{modifyBase:function(t,e){s[t]=e},modifyItem:u,getUpdateObj:f,applyUpdate:function(e,r){e&&u(e,r);var i=f();for(var a in i)n.nestedProperty(t,a).set(i[a])}}}},{\"../lib\":503,\"../plots/attributes\":550}],544:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../registry\"),a=t(\"../plots/plots\"),o=t(\"../lib\"),s=t(\"../lib/clear_gl_canvases\"),l=t(\"../components/color\"),c=t(\"../components/drawing\"),u=t(\"../components/titles\"),f=t(\"../components/modebar\"),h=t(\"../plots/cartesian/axes\"),p=t(\"../constants/alignment\"),d=t(\"../plots/cartesian/constraints\"),g=d.enforce,m=d.clean,v=t(\"../plots/cartesian/autorange\").doAutoRange;function y(t,e,r){for(var n=0;n=t[1]||i[1]<=t[0])&&(a[0]e[0]))return!0}return!1}function x(t){var e,i,s,u,d,g,m=t._fullLayout,v=m._size,x=v.p,_=h.list(t,\"\",!0);if(m._paperdiv.style({width:t._context.responsive&&m.autosize&&!t._context._hasZeroWidth&&!t.layout.width?\"100%\":m.width+\"px\",height:t._context.responsive&&m.autosize&&!t._context._hasZeroHeight&&!t.layout.height?\"100%\":m.height+\"px\"}).selectAll(\".main-svg\").call(c.setSize,m.width,m.height),t._context.setBackground(t,m.paper_bgcolor),r.drawMainTitle(t),f.manage(t),!m._has(\"cartesian\"))return a.previousPromises(t);function T(t,e,r){var n=t._lw/2;return\"x\"===t._id.charAt(0)?e?\"top\"===r?e._offset-x-n:e._offset+e._length+x+n:v.t+v.h*(1-(t.position||0))+n%1:e?\"right\"===r?e._offset+e._length+x+n:e._offset-x-n:v.l+v.w*(t.position||0)+n%1}for(e=0;e<_.length;e++){var k=(u=_[e])._anchorAxis;u._linepositions={},u._lw=c.crispRound(t,u.linewidth,1),u._mainLinePosition=T(u,k,u.side),u._mainMirrorPosition=u.mirror&&k?T(u,k,p.OPPOSITE_SIDE[u.side]):null}var A=[],M=[],S=[],E=1===l.opacity(m.paper_bgcolor)&&1===l.opacity(m.plot_bgcolor)&&m.paper_bgcolor===m.plot_bgcolor;for(i in m._plots)if((s=m._plots[i]).mainplot)s.bg&&s.bg.remove(),s.bg=void 0;else{var L=s.xaxis.domain,C=s.yaxis.domain,P=s.plotgroup;if(y(L,C,S)){var I=P.node(),O=s.bg=o.ensureSingle(P,\"rect\",\"bg\");I.insertBefore(O.node(),I.childNodes[0]),M.push(i)}else P.select(\"rect.bg\").remove(),S.push([L,C]),E||(A.push(i),M.push(i))}var z,D,R,F,B,N,j,U,V,H,q,G,Y,W=m._bgLayer.selectAll(\".bg\").data(A);for(W.enter().append(\"rect\").classed(\"bg\",!0),W.exit().remove(),W.each((function(t){m._plots[t].bg=n.select(this)})),e=0;eT?u.push({code:\"unused\",traceType:y,templateCount:w,dataCount:T}):T>w&&u.push({code:\"reused\",traceType:y,templateCount:w,dataCount:T})}}else u.push({code:\"data\"});if(function t(e,r){for(var n in e)if(\"_\"!==n.charAt(0)){var a=e[n],o=g(e,n,r);i(a)?(Array.isArray(e)&&!1===a._template&&a.templateitemname&&u.push({code:\"missing\",path:o,templateitemname:a.templateitemname}),t(a,o)):Array.isArray(a)&&m(a)&&t(a,o)}}({data:p,layout:h},\"\"),u.length)return u.map(v)}},{\"../lib\":503,\"../plots/attributes\":550,\"../plots/plots\":619,\"./plot_config\":541,\"./plot_schema\":542,\"./plot_template\":543}],546:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"./plot_api\"),a=t(\"../plots/plots\"),o=t(\"../lib\"),s=t(\"../snapshot/helpers\"),l=t(\"../snapshot/tosvg\"),c=t(\"../snapshot/svgtoimg\"),u=t(\"../version\").version,f={format:{valType:\"enumerated\",values:[\"png\",\"jpeg\",\"webp\",\"svg\",\"full-json\"],dflt:\"png\"},width:{valType:\"number\",min:1},height:{valType:\"number\",min:1},scale:{valType:\"number\",min:0,dflt:1},setBackground:{valType:\"any\",dflt:!1},imageDataOnly:{valType:\"boolean\",dflt:!1}};e.exports=function(t,e){var r,h,p,d;function g(t){return!(t in e)||o.validate(e[t],f[t])}if(e=e||{},o.isPlainObject(t)?(r=t.data||[],h=t.layout||{},p=t.config||{},d={}):(t=o.getGraphDiv(t),r=o.extendDeep([],t.data),h=o.extendDeep({},t.layout),p=t._context,d=t._fullLayout||{}),!g(\"width\")&&null!==e.width||!g(\"height\")&&null!==e.height)throw new Error(\"Height and width should be pixel values.\");if(!g(\"format\"))throw new Error(\"Export format is not \"+o.join2(f.format.values,\", \",\" or \")+\".\");var m={};function v(t,r){return o.coerce(e,m,f,t,r)}var y=v(\"format\"),x=v(\"width\"),b=v(\"height\"),_=v(\"scale\"),w=v(\"setBackground\"),T=v(\"imageDataOnly\"),k=document.createElement(\"div\");k.style.position=\"absolute\",k.style.left=\"-5000px\",document.body.appendChild(k);var A=o.extendFlat({},h);x?A.width=x:null===e.width&&n(d.width)&&(A.width=d.width),b?A.height=b:null===e.height&&n(d.height)&&(A.height=d.height);var M=o.extendFlat({},p,{_exportedPlot:!0,staticPlot:!0,setBackground:w}),S=s.getRedrawFunc(k);function E(){return new Promise((function(t){setTimeout(t,s.getDelay(k._fullLayout))}))}function L(){return new Promise((function(t,e){var r=l(k,y,_),n=k._fullLayout.width,f=k._fullLayout.height;function h(){i.purge(k),document.body.removeChild(k)}if(\"full-json\"===y){var p=a.graphJson(k,!1,\"keepdata\",\"object\",!0,!0);return p.version=u,p=JSON.stringify(p),h(),t(T?p:s.encodeJSON(p))}if(h(),\"svg\"===y)return t(T?r:s.encodeSVG(r));var d=document.createElement(\"canvas\");d.id=o.randstr(),c({format:y,width:n,height:f,scale:_,canvas:d,svg:r,promise:!0}).then(t).catch(e)}))}return new Promise((function(t,e){i.newPlot(k,r,A,M).then(S).then(E).then(L).then((function(e){t(function(t){return T?t.replace(s.IMAGE_URL_PREFIX,\"\"):t}(e))})).catch((function(t){e(t)}))}))}},{\"../lib\":503,\"../plots/plots\":619,\"../snapshot/helpers\":642,\"../snapshot/svgtoimg\":644,\"../snapshot/tosvg\":646,\"../version\":1119,\"./plot_api\":540,\"fast-isnumeric\":190}],547:[function(t,e,r){\"use strict\";var n=t(\"../lib\"),i=t(\"../plots/plots\"),a=t(\"./plot_schema\"),o=t(\"./plot_config\").dfltConfig,s=n.isPlainObject,l=Array.isArray,c=n.isArrayOrTypedArray;function u(t,e,r,i,a,o){o=o||[];for(var f=Object.keys(t),h=0;hx.length&&i.push(d(\"unused\",a,v.concat(x.length)));var A,M,S,E,L,C=x.length,P=Array.isArray(k);if(P&&(C=Math.min(C,k.length)),2===b.dimensions)for(M=0;Mx[M].length&&i.push(d(\"unused\",a,v.concat(M,x[M].length)));var I=x[M].length;for(A=0;A<(P?Math.min(I,k[M].length):I);A++)S=P?k[M][A]:k,E=y[M][A],L=x[M][A],n.validate(E,S)?L!==E&&L!==+E&&i.push(d(\"dynamic\",a,v.concat(M,A),E,L)):i.push(d(\"value\",a,v.concat(M,A),E))}else i.push(d(\"array\",a,v.concat(M),y[M]));else for(M=0;M1&&p.push(d(\"object\",\"layout\"))),i.supplyDefaults(g);for(var m=g._fullData,v=r.length,y=0;y0&&Math.round(f)===f))return{vals:i};c=f}for(var h=e.calendar,p=\"start\"===l,d=\"end\"===l,g=t[r+\"period0\"],m=a(g,h)||0,v=[],y=[],x=[],b=i.length,_=0;_A;)k=o(k,-c,h);for(;k<=A;)k=o(k,c,h);T=o(k,-c,h)}else{for(k=m+(w=Math.round((A-m)/u))*u;k>A;)k-=u;for(;k<=A;)k+=u;T=k-u}v[_]=p?T:d?k:(T+k)/2,y[_]=T,x[_]=k}return{vals:v,starts:y,ends:x}}},{\"../../constants/numerical\":479,\"../../lib\":503,\"fast-isnumeric\":190}],552:[function(t,e,r){\"use strict\";e.exports={xaxis:{valType:\"subplotid\",dflt:\"x\",editType:\"calc+clearAxisTypes\"},yaxis:{valType:\"subplotid\",dflt:\"y\",editType:\"calc+clearAxisTypes\"}}},{}],553:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"fast-isnumeric\"),a=t(\"../../lib\"),o=t(\"../../constants/numerical\").FP_SAFE,s=t(\"../../registry\"),l=t(\"../../components/drawing\"),c=t(\"./axis_ids\"),u=c.getFromId,f=c.isLinked;function h(t,e){var r,n,i=[],o=t._fullLayout,s=d(o,e,0),l=d(o,e,1),c=g(t,e),u=c.min,f=c.max;if(0===u.length||0===f.length)return a.simpleMap(e.range,e.r2l);var h=u[0].val,m=f[0].val;for(r=1;r0&&((T=E-s(x)-l(b))>L?k/T>C&&(_=x,w=b,C=k/T):k/E>C&&(_={val:x.val,nopad:1},w={val:b.val,nopad:1},C=k/E));if(h===m){var P=h-1,I=h+1;if(M)if(0===h)i=[0,1];else{var O=(h>0?f:u).reduce((function(t,e){return Math.max(t,l(e))}),0),z=h/(1-Math.min(.5,O/E));i=h>0?[0,z]:[z,0]}else i=S?[Math.max(0,P),Math.max(1,I)]:[P,I]}else M?(_.val>=0&&(_={val:0,nopad:1}),w.val<=0&&(w={val:0,nopad:1})):S&&(_.val-C*s(_)<0&&(_={val:0,nopad:1}),w.val<=0&&(w={val:1,nopad:1})),C=(w.val-_.val-p(e,x.val,b.val))/(E-s(_)-l(w)),i=[_.val-C*s(_),w.val+C*l(w)];return v&&i.reverse(),a.simpleMap(i,e.l2r||Number)}function p(t,e,r){var n=0;if(t.rangebreaks)for(var i=t.locateBreaks(e,r),a=0;a0?r.ppadplus:r.ppadminus)||r.ppad||0),S=A((t._m>0?r.ppadminus:r.ppadplus)||r.ppad||0),E=A(r.vpadplus||r.vpad),L=A(r.vpadminus||r.vpad);if(!T){if(h=1/0,p=-1/0,w)for(n=0;n0&&(h=a),a>p&&a-o&&(h=a),a>p&&a=I;n--)P(n);return{min:d,max:g,opts:r}},concatExtremes:g};function g(t,e,r){var n,i,a,o=e._id,s=t._fullData,l=t._fullLayout,c=[],f=[];function h(t,e){for(n=0;n=r&&(c.extrapad||!o)){s=!1;break}i(e,c.val)&&c.pad<=r&&(o||!c.extrapad)&&(t.splice(l,1),l--)}if(s){var u=a&&0===e;t.push({val:e,pad:u?0:r,extrapad:!u&&o})}}function x(t){return i(t)&&Math.abs(t)=e}},{\"../../components/drawing\":388,\"../../constants/numerical\":479,\"../../lib\":503,\"../../registry\":638,\"./axis_ids\":558,\"@plotly/d3\":58,\"fast-isnumeric\":190}],554:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"fast-isnumeric\"),a=t(\"../../plots/plots\"),o=t(\"../../registry\"),s=t(\"../../lib\"),l=s.strTranslate,c=t(\"../../lib/svg_text_utils\"),u=t(\"../../components/titles\"),f=t(\"../../components/color\"),h=t(\"../../components/drawing\"),p=t(\"./layout_attributes\"),d=t(\"./clean_ticks\"),g=t(\"../../constants/numerical\"),m=g.ONEMAXYEAR,v=g.ONEAVGYEAR,y=g.ONEMINYEAR,x=g.ONEMAXQUARTER,b=g.ONEAVGQUARTER,_=g.ONEMINQUARTER,w=g.ONEMAXMONTH,T=g.ONEAVGMONTH,k=g.ONEMINMONTH,A=g.ONEWEEK,M=g.ONEDAY,S=M/2,E=g.ONEHOUR,L=g.ONEMIN,C=g.ONESEC,P=g.MINUS_SIGN,I=g.BADNUM,O={K:\"zeroline\"},z={K:\"gridline\",L:\"path\"},D={K:\"tick\",L:\"path\"},R={K:\"tick\",L:\"text\"},F=t(\"../../constants/alignment\"),B=F.MID_SHIFT,N=F.CAP_SHIFT,j=F.LINE_SPACING,U=F.OPPOSITE_SIDE,V=e.exports={};V.setConvert=t(\"./set_convert\");var H=t(\"./axis_autotype\"),q=t(\"./axis_ids\"),G=q.idSort,Y=q.isLinked;V.id2name=q.id2name,V.name2id=q.name2id,V.cleanId=q.cleanId,V.list=q.list,V.listIds=q.listIds,V.getFromId=q.getFromId,V.getFromTrace=q.getFromTrace;var W=t(\"./autorange\");V.getAutoRange=W.getAutoRange,V.findExtremes=W.findExtremes;function X(t){var e=1e-4*(t[1]-t[0]);return[t[0]-e,t[1]+e]}V.coerceRef=function(t,e,r,n,i,a){var o=n.charAt(n.length-1),l=r._fullLayout._subplots[o+\"axis\"],c=n+\"ref\",u={};return i||(i=l[0]||(\"string\"==typeof a?a:a[0])),a||(a=i),l=l.concat(l.map((function(t){return t+\" domain\"}))),u[c]={valType:\"enumerated\",values:l.concat(a?\"string\"==typeof a?[a]:a:[]),dflt:i},s.coerce(t,e,u,c)},V.getRefType=function(t){return void 0===t?t:\"paper\"===t?\"paper\":\"pixel\"===t?\"pixel\":/( domain)$/.test(t)?\"domain\":\"range\"},V.coercePosition=function(t,e,r,n,i,a){var o,l;if(\"range\"!==V.getRefType(n))o=s.ensureNumber,l=r(i,a);else{var c=V.getFromId(e,n);l=r(i,a=c.fraction2r(a)),o=c.cleanPos}t[i]=o(l)},V.cleanPosition=function(t,e,r){return(\"paper\"===r||\"pixel\"===r?s.ensureNumber:V.getFromId(e,r).cleanPos)(t)},V.redrawComponents=function(t,e){e=e||V.listIds(t);var r=t._fullLayout;function n(n,i,a,s){for(var l=o.getComponentMethod(n,i),c={},u=0;u2e-6||((r-t._forceTick0)/t._minDtick%1+1.000001)%1>2e-6)&&(t._minDtick=0)):t._minDtick=0},V.saveRangeInitial=function(t,e){for(var r=V.list(t,\"\",!0),n=!1,i=0;i.3*h||u(n)||u(a))){var p=r.dtick/2;t+=t+p.8){var o=Number(r.substr(1));a.exactYears>.8&&o%12==0?t=V.tickIncrement(t,\"M6\",\"reverse\")+1.5*M:a.exactMonths>.8?t=V.tickIncrement(t,\"M1\",\"reverse\")+15.5*M:t-=S;var l=V.tickIncrement(t,r);if(l<=n)return l}return t}(y,t,v,c,a)),m=y,0;m<=u;)m=V.tickIncrement(m,v,!1,a);return{start:e.c2r(y,0,a),end:e.c2r(m,0,a),size:v,_dataSpan:u-c}},V.prepTicks=function(t,e){var r=s.simpleMap(t.range,t.r2l,void 0,void 0,e);if(t._dtickInit=t.dtick,t._tick0Init=t.tick0,\"auto\"===t.tickmode||!t.dtick){var n,a=t.nticks;a||(\"category\"===t.type||\"multicategory\"===t.type?(n=t.tickfont?s.bigFont(t.tickfont.size||12):15,a=t._length/n):(n=\"y\"===t._id.charAt(0)?40:80,a=s.constrain(t._length/n,4,9)+1),\"radialaxis\"===t._name&&(a*=2)),\"array\"===t.tickmode&&(a*=100),t._roughDTick=Math.abs(r[1]-r[0])/a,V.autoTicks(t,t._roughDTick),t._minDtick>0&&t.dtick<2*t._minDtick&&(t.dtick=t._minDtick,t.tick0=t.l2r(t._forceTick0))}\"period\"===t.ticklabelmode&&function(t){var e;function r(){return!(i(t.dtick)||\"M\"!==t.dtick.charAt(0))}var n=r(),a=V.getTickFormat(t);if(a){var o=t._dtickInit!==t.dtick;/%[fLQsSMX]/.test(a)||(/%[HI]/.test(a)?(e=E,o&&!n&&t.dticka&&f=o:d<=o;d=V.tickIncrement(d,t.dtick,l,t.calendar)){if(R++,t.rangebreaks&&!l){if(d=u)break}if(P.length>C||d===O)break;O=d;var F=!1;h&&d!==(0|d)&&(F=!0);var B={minor:F,value:d};L>1&&R%L&&(B.skipLabel=!0),P.push(B)}if(p&&function(t,e,r){for(var n=0;n0?(a=n-1,o=n):(a=n,o=n);var s,l=t[a].value,c=t[o].value,u=Math.abs(c-l),f=r||u,h=0;f>=y?h=u>=y&&u<=m?u:v:r===b&&f>=_?h=u>=_&&u<=x?u:b:f>=k?h=u>=k&&u<=w?u:T:r===A&&f>=A?h=A:f>=M?h=M:r===S&&f>=S?h=S:r===E&&f>=E&&(h=E),h>=u&&(h=u,s=!0);var p=i+h;if(e.rangebreaks&&h>0){for(var d=0,g=0;g<84;g++){var L=(g+.5)/84;e.maskBreaks(i*(1-L)+L*p)!==I&&d++}(h*=d/84)||(t[n].drop=!0),s&&u>A&&(h=u)}(h>0||0===n)&&(t[n].periodX=i+h/2)}}(P,t,t._definedDelta),t.rangebreaks){var N=\"y\"===t._id.charAt(0),j=1;\"auto\"===t.tickmode&&(j=t.tickfont?t.tickfont.size:12);var U=NaN;for(z=P.length-1;z>-1;z--)if(P[z].drop)P.splice(z,1);else{P[z].value=Mt(P[z].value,t);var H=t.c2p(P[z].value);(N?U>H-j:Uu||Gu&&(q.periodX=u),G10||\"01-01\"!==n.substr(5)?t._tickround=\"d\":t._tickround=+e.substr(1)%12==0?\"y\":\"m\";else if(e>=M&&a<=10||e>=15*M)t._tickround=\"d\";else if(e>=L&&a<=16||e>=E)t._tickround=\"M\";else if(e>=C&&a<=19||e>=L)t._tickround=\"S\";else{var o=t.l2r(r+e).replace(/^-/,\"\").length;t._tickround=Math.max(a,o)-20,t._tickround<0&&(t._tickround=4)}}else if(i(e)||\"L\"===e.charAt(0)){var s=t.range.map(t.r2d||Number);i(e)||(e=Number(e.substr(1))),t._tickround=2-Math.floor(Math.log(e)/Math.LN10+.01);var l=Math.max(Math.abs(s[0]),Math.abs(s[1])),c=Math.floor(Math.log(l)/Math.LN10+.01),u=void 0===t.minexponent?3:t.minexponent;Math.abs(c)>u&&(ut(t.exponentformat)&&!ft(c)?t._tickexponent=3*Math.round((c-1)/3):t._tickexponent=c)}else t._tickround=null}function lt(t,e,r){var n=t.tickfont||{};return{x:e,dx:0,dy:0,text:r||\"\",fontSize:n.size,font:n.family,fontColor:n.color}}V.autoTicks=function(t,e){var r;function n(t){return Math.pow(t,Math.floor(Math.log(e)/Math.LN10))}if(\"date\"===t.type){t.tick0=s.dateTick0(t.calendar,0);var a=2*e;if(a>v)e/=v,r=n(10),t.dtick=\"M\"+12*ot(e,r,$);else if(a>T)e/=T,t.dtick=\"M\"+ot(e,1,tt);else if(a>M){t.dtick=ot(e,M,t._hasDayOfWeekBreaks?[1,2,7,14]:rt);var o=V.getTickFormat(t),l=\"period\"===t.ticklabelmode;l&&(t._rawTick0=t.tick0),/%[uVW]/.test(o)?t.tick0=s.dateTick0(t.calendar,2):t.tick0=s.dateTick0(t.calendar,1),l&&(t._dowTick0=t.tick0)}else a>E?t.dtick=ot(e,E,tt):a>L?t.dtick=ot(e,L,et):a>C?t.dtick=ot(e,C,et):(r=n(10),t.dtick=ot(e,r,$))}else if(\"log\"===t.type){t.tick0=0;var c=s.simpleMap(t.range,t.r2l);if(e>.7)t.dtick=Math.ceil(e);else if(Math.abs(c[1]-c[0])<1){var u=1.5*Math.abs((c[1]-c[0])/e);e=Math.abs(Math.pow(10,c[1])-Math.pow(10,c[0]))/u,r=n(10),t.dtick=\"L\"+ot(e,r,$)}else t.dtick=e>.3?\"D2\":\"D1\"}else\"category\"===t.type||\"multicategory\"===t.type?(t.tick0=0,t.dtick=Math.ceil(Math.max(e,1))):At(t)?(t.tick0=0,r=1,t.dtick=ot(e,r,at)):(t.tick0=0,r=n(10),t.dtick=ot(e,r,$));if(0===t.dtick&&(t.dtick=1),!i(t.dtick)&&\"string\"!=typeof t.dtick){var f=t.dtick;throw t.dtick=1,\"ax.dtick error: \"+String(f)}},V.tickIncrement=function(t,e,r,a){var o=r?-1:1;if(i(e))return s.increment(t,o*e);var l=e.charAt(0),c=o*Number(e.substr(1));if(\"M\"===l)return s.incrementMonth(t,c,a);if(\"L\"===l)return Math.log(Math.pow(10,t)+c)/Math.LN10;if(\"D\"===l){var u=\"D2\"===e?it:nt,f=t+.01*o,h=s.roundUp(s.mod(f,1),u,r);return Math.floor(f)+Math.log(n.round(Math.pow(10,h),1))/Math.LN10}throw\"unrecognized dtick \"+String(e)},V.tickFirst=function(t,e){var r=t.r2l||Number,a=s.simpleMap(t.range,r,void 0,void 0,e),o=a[1] \")}else t._prevDateHead=l,c+=\"
\"+l;e.text=c}(t,o,r,c):\"log\"===u?function(t,e,r,n,a){var o=t.dtick,l=e.x,c=t.tickformat,u=\"string\"==typeof o&&o.charAt(0);\"never\"===a&&(a=\"\");n&&\"L\"!==u&&(o=\"L3\",u=\"L\");if(c||\"L\"===u)e.text=ht(Math.pow(10,l),t,a,n);else if(i(o)||\"D\"===u&&s.mod(l+.01,1)<.1){var f=Math.round(l),h=Math.abs(f),p=t.exponentformat;\"power\"===p||ut(p)&&ft(f)?(e.text=0===f?1:1===f?\"10\":\"10\"+(f>1?\"\":P)+h+\"\",e.fontSize*=1.25):(\"e\"===p||\"E\"===p)&&h>2?e.text=\"1\"+p+(f>0?\"+\":P)+h:(e.text=ht(Math.pow(10,l),t,\"\",\"fakehover\"),\"D1\"===o&&\"y\"===t._id.charAt(0)&&(e.dy-=e.fontSize/6))}else{if(\"D\"!==u)throw\"unrecognized dtick \"+String(o);e.text=String(Math.round(Math.pow(10,s.mod(l,1)))),e.fontSize*=.75}if(\"D1\"===t.dtick){var d=String(e.text).charAt(0);\"0\"!==d&&\"1\"!==d||(\"y\"===t._id.charAt(0)?e.dx-=e.fontSize/4:(e.dy+=e.fontSize/2,e.dx+=(t.range[1]>t.range[0]?1:-1)*e.fontSize*(l<0?.5:.25)))}}(t,o,0,c,g):\"category\"===u?function(t,e){var r=t._categories[Math.round(e.x)];void 0===r&&(r=\"\");e.text=String(r)}(t,o):\"multicategory\"===u?function(t,e,r){var n=Math.round(e.x),i=t._categories[n]||[],a=void 0===i[1]?\"\":String(i[1]),o=void 0===i[0]?\"\":String(i[0]);r?e.text=o+\" - \"+a:(e.text=a,e.text2=o)}(t,o,r):At(t)?function(t,e,r,n,i){if(\"radians\"!==t.thetaunit||r)e.text=ht(e.x,t,i,n);else{var a=e.x/180;if(0===a)e.text=\"0\";else{var o=function(t){function e(t,e){return Math.abs(t-e)<=1e-6}var r=function(t){for(var r=1;!e(Math.round(t*r)/r,t);)r*=10;return r}(t),n=t*r,i=Math.abs(function t(r,n){return e(n,0)?r:t(n,r%n)}(n,r));return[Math.round(n/i),Math.round(r/i)]}(a);if(o[1]>=100)e.text=ht(s.deg2rad(e.x),t,i,n);else{var l=e.x<0;1===o[1]?1===o[0]?e.text=\"\\u03c0\":e.text=o[0]+\"\\u03c0\":e.text=[\"\",o[0],\"\",\"\\u2044\",\"\",o[1],\"\",\"\\u03c0\"].join(\"\"),l&&(e.text=P+e.text)}}}}(t,o,r,c,g):function(t,e,r,n,i){\"never\"===i?i=\"\":\"all\"===t.showexponent&&Math.abs(e.x/t.dtick)<1e-6&&(i=\"hide\");e.text=ht(e.x,t,i,n)}(t,o,0,c,g),n||(t.tickprefix&&!d(t.showtickprefix)&&(o.text=t.tickprefix+o.text),t.ticksuffix&&!d(t.showticksuffix)&&(o.text+=t.ticksuffix)),\"boundaries\"===t.tickson||t.showdividers){var m=function(e){var r=t.l2p(e);return r>=0&&r<=t._length?e:null};o.xbnd=[m(o.x-.5),m(o.x+t.dtick-.5)]}return o},V.hoverLabelText=function(t,e,r){r&&(t=s.extendFlat({},t,{hoverformat:r}));var n=Array.isArray(e)?e[0]:e,i=Array.isArray(e)?e[1]:void 0;if(void 0!==i&&i!==n)return V.hoverLabelText(t,n,r)+\" - \"+V.hoverLabelText(t,i,r);var a=\"log\"===t.type&&n<=0,o=V.tickText(t,t.c2l(a?-n:n),\"hover\").text;return a?0===n?\"0\":P+o:o};var ct=[\"f\",\"p\",\"n\",\"\\u03bc\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\"];function ut(t){return\"SI\"===t||\"B\"===t}function ft(t){return t>14||t<-15}function ht(t,e,r,n){var a=t<0,o=e._tickround,l=r||e.exponentformat||\"B\",c=e._tickexponent,u=V.getTickFormat(e),f=e.separatethousands;if(n){var h={exponentformat:l,minexponent:e.minexponent,dtick:\"none\"===e.showexponent?e.dtick:i(t)&&Math.abs(t)||1,range:\"none\"===e.showexponent?e.range.map(e.r2d):[0,t||1]};st(h),o=(Number(h._tickround)||0)+4,c=h._tickexponent,e.hoverformat&&(u=e.hoverformat)}if(u)return e._numFormat(u)(t).replace(/-/g,P);var p,d=Math.pow(10,-o)/2;if(\"none\"===l&&(c=0),(t=Math.abs(t))\"+p+\"\":\"B\"===l&&9===c?t+=\"B\":ut(l)&&(t+=ct[c/3+5]));return a?P+t:t}function pt(t,e){for(var r=[],n={},i=0;i1&&r=i.min&&t=0,a=u(t,e[1])<=0;return(r||i)&&(n||a)}if(t.tickformatstops&&t.tickformatstops.length>0)switch(t.type){case\"date\":case\"linear\":for(e=0;e=o(i)))){r=n;break}break;case\"log\":for(e=0;e0?r.bottom-f:0,h)))),e.automargin){n={x:0,y:0,r:0,l:0,t:0,b:0};var p=[0,1];if(\"x\"===d){if(\"b\"===l?n[l]=e._depth:(n[l]=e._depth=Math.max(r.width>0?f-r.top:0,h),p.reverse()),r.width>0){var m=r.right-(e._offset+e._length);m>0&&(n.xr=1,n.r=m);var v=e._offset-r.left;v>0&&(n.xl=0,n.l=v)}}else if(\"l\"===l?n[l]=e._depth=Math.max(r.height>0?f-r.left:0,h):(n[l]=e._depth=Math.max(r.height>0?r.right-f:0,h),p.reverse()),r.height>0){var y=r.bottom-(e._offset+e._length);y>0&&(n.yb=0,n.b=y);var x=e._offset-r.top;x>0&&(n.yt=1,n.t=x)}n[g]=\"free\"===e.anchor?e.position:e._anchorAxis.domain[p[0]],e.title.text!==c._dfltTitle[d]&&(n[l]+=mt(e)+(e.title.standoff||0)),e.mirror&&\"free\"!==e.anchor&&((i={x:0,y:0,r:0,l:0,t:0,b:0})[u]=e.linewidth,e.mirror&&!0!==e.mirror&&(i[u]+=h),!0===e.mirror||\"ticks\"===e.mirror?i[g]=e._anchorAxis.domain[p[1]]:\"all\"!==e.mirror&&\"allticks\"!==e.mirror||(i[g]=[e._counterDomainMin,e._counterDomainMax][p[1]]))}K&&(s=o.getComponentMethod(\"rangeslider\",\"autoMarginOpts\")(t,e)),a.autoMargin(t,xt(e),n),a.autoMargin(t,bt(e),i),a.autoMargin(t,_t(e),s)})),r.skipTitle||K&&\"bottom\"===e.side||Z.push((function(){return function(t,e){var r,n=t._fullLayout,i=e._id,a=i.charAt(0),o=e.title.font.size;if(e.title.hasOwnProperty(\"standoff\"))r=e._depth+e.title.standoff+mt(e);else{var s=St(e);if(\"multicategory\"===e.type)r=e._depth;else{var l=1.5*o;s&&(l=.5*o,\"outside\"===e.ticks&&(l+=e.ticklen)),r=10+l+(e.linewidth?e.linewidth-1:0)}s||(r+=\"x\"===a?\"top\"===e.side?o*(e.showticklabels?1:0):o*(e.showticklabels?1.5:.5):\"right\"===e.side?o*(e.showticklabels?1:.5):o*(e.showticklabels?.5:0))}var c,f,p,d,g=V.getPxPosition(t,e);\"x\"===a?(f=e._offset+e._length/2,p=\"top\"===e.side?g-r:g+r):(p=e._offset+e._length/2,f=\"right\"===e.side?g+r:g-r,c={rotate:\"-90\",offset:0});if(\"multicategory\"!==e.type){var m=e._selections[e._id+\"tick\"];if(d={selection:m,side:e.side},m&&m.node()&&m.node().parentNode){var v=h.getTranslate(m.node().parentNode);d.offsetLeft=v.x,d.offsetTop=v.y}e.title.hasOwnProperty(\"standoff\")&&(d.pad=0)}return u.draw(t,i+\"title\",{propContainer:e,propName:e._name+\".title.text\",placeholder:n._dfltTitle[a],avoid:d,transform:c,attributes:{x:f,y:p,\"text-anchor\":\"middle\"}})}(t,e)})),s.syncOrAsync(Z)}}function Q(t){var r=p+(t||\"tick\");return w[r]||(w[r]=function(t,e){var r,n,i,a;t._selections[e].size()?(r=1/0,n=-1/0,i=1/0,a=-1/0,t._selections[e].each((function(){var t=yt(this),e=h.bBox(t.node().parentNode);r=Math.min(r,e.top),n=Math.max(n,e.bottom),i=Math.min(i,e.left),a=Math.max(a,e.right)}))):(r=0,n=0,i=0,a=0);return{top:r,bottom:n,left:i,right:a,height:n-r,width:a-i}}(e,r)),w[r]}},V.getTickSigns=function(t){var e=t._id.charAt(0),r={x:\"top\",y:\"right\"}[e],n=t.side===r?1:-1,i=[-1,1,n,-n];return\"inside\"!==t.ticks==(\"x\"===e)&&(i=i.map((function(t){return-t}))),t.side&&i.push({l:-1,t:-1,r:1,b:1}[t.side.charAt(0)]),i},V.makeTransTickFn=function(t){return\"x\"===t._id.charAt(0)?function(e){return l(t._offset+t.l2p(e.x),0)}:function(e){return l(0,t._offset+t.l2p(e.x))}},V.makeTransTickLabelFn=function(t){var e=function(t){var e=t.ticklabelposition||\"\",r=function(t){return-1!==e.indexOf(t)},n=r(\"top\"),i=r(\"left\"),a=r(\"right\"),o=r(\"bottom\"),s=r(\"inside\"),l=o||i||n||a;if(!l&&!s)return[0,0];var c=t.side,u=l?(t.tickwidth||0)/2:0,f=3,h=t.tickfont?t.tickfont.size:12;(o||n)&&(u+=h*N,f+=(t.linewidth||0)/2);(i||a)&&(u+=(t.linewidth||0)/2,f+=3);s&&\"top\"===c&&(f-=h*(1-N));(i||n)&&(u=-u);\"bottom\"!==c&&\"right\"!==c||(f=-f);return[l?u:0,s?f:0]}(t),r=e[0],n=e[1];return\"x\"===t._id.charAt(0)?function(e){return l(r+t._offset+t.l2p(dt(e)),n)}:function(e){return l(n,r+t._offset+t.l2p(dt(e)))}},V.makeTickPath=function(t,e,r,n){n=void 0!==n?n:t.ticklen;var i=t._id.charAt(0),a=(t.linewidth||1)/2;return\"x\"===i?\"M0,\"+(e+a*r)+\"v\"+n*r:\"M\"+(e+a*r)+\",0h\"+n*r},V.makeLabelFns=function(t,e,r){var n=t.ticklabelposition||\"\",a=function(t){return-1!==n.indexOf(t)},o=a(\"top\"),l=a(\"left\"),c=a(\"right\"),u=a(\"bottom\")||l||o||c,f=a(\"inside\"),h=\"inside\"===n&&\"inside\"===t.ticks||!f&&\"outside\"===t.ticks&&\"boundaries\"!==t.tickson,p=0,d=0,g=h?t.ticklen:0;if(f?g*=-1:u&&(g=0),h&&(p+=g,r)){var m=s.deg2rad(r);p=g*Math.cos(m)+1,d=g*Math.sin(m)}t.showticklabels&&(h||t.showline)&&(p+=.2*t.tickfont.size);var v,y,x,b,_,w={labelStandoff:p+=(t.linewidth||1)/2*(f?-1:1),labelShift:d},T=0,k=t.side,A=t._id.charAt(0),M=t.tickangle;if(\"x\"===A)b=(_=!f&&\"bottom\"===k||f&&\"top\"===k)?1:-1,f&&(b*=-1),v=d*b,y=e+p*b,x=_?1:-.2,90===Math.abs(M)&&(f?x+=B:x=-90===M&&\"bottom\"===k?N:90===M&&\"top\"===k?B:.5,T=B/2*(M/90)),w.xFn=function(t){return t.dx+v+T*t.fontSize},w.yFn=function(t){return t.dy+y+t.fontSize*x},w.anchorFn=function(t,e){if(u){if(l)return\"end\";if(c)return\"start\"}return i(e)&&0!==e&&180!==e?e*b<0!==f?\"end\":\"start\":\"middle\"},w.heightFn=function(e,r,n){return r<-60||r>60?-.5*n:\"top\"===t.side!==f?-n:0};else if(\"y\"===A){if(b=(_=!f&&\"left\"===k||f&&\"right\"===k)?1:-1,f&&(b*=-1),v=p,y=d*b,x=0,f||90!==Math.abs(M)||(x=-90===M&&\"left\"===k||90===M&&\"right\"===k?N:.5),f){var S=i(M)?+M:0;if(0!==S){var E=s.deg2rad(S);T=Math.abs(Math.sin(E))*N*b,x=0}}w.xFn=function(t){return t.dx+e-(v+t.fontSize*x)*b+T*t.fontSize},w.yFn=function(t){return t.dy+y+t.fontSize*B},w.anchorFn=function(t,e){return i(e)&&90===Math.abs(e)?\"middle\":_?\"end\":\"start\"},w.heightFn=function(e,r,n){return\"right\"===t.side&&(r*=-1),r<-30?-n:r<30?-.5*n:0}}return w},V.drawTicks=function(t,e,r){r=r||{};var n=e._id+\"tick\",i=r.vals;\"period\"===e.ticklabelmode&&(i=i.slice()).shift();var a=r.layer.selectAll(\"path.\"+n).data(e.ticks?i:[],gt);a.exit().remove(),a.enter().append(\"path\").classed(n,1).classed(\"ticks\",1).classed(\"crisp\",!1!==r.crisp).call(f.stroke,e.tickcolor).style(\"stroke-width\",h.crispRound(t,e.tickwidth,1)+\"px\").attr(\"d\",r.path).style(\"display\",null),Et(e,[D]),a.attr(\"transform\",r.transFn)},V.drawGrid=function(t,e,r){r=r||{};var n=e._id+\"grid\",i=r.vals,a=r.counterAxis;if(!1===e.showgrid)i=[];else if(a&&V.shouldShowZeroLine(t,e,a))for(var o=\"array\"===e.tickmode,s=0;sp||a.leftp||a.top+(e.tickangle?0:t.fontSize/4)e[\"_visibleLabelMin_\"+r._id]?l.style(\"display\",\"none\"):\"tick\"!==t.K||i||l.style(\"display\",null)}))}))}))}))},x(v,m+1?m:g);var b=null;e._selections&&(e._selections[f]=v);var _=[function(){return y.length&&Promise.all(y)}];e.automargin&&a._redrawFromAutoMarginCount&&90===m?(b=90,_.push((function(){x(v,m)}))):_.push((function(){if(x(v,g),p.length&&\"x\"===u&&!i(g)&&(\"log\"!==e.type||\"D\"!==String(e.dtick).charAt(0))){b=0;var t,n=0,a=[];if(v.each((function(t){n=Math.max(n,t.fontSize);var r=e.l2p(t.x),i=yt(this),o=h.bBox(i.node());a.push({top:0,bottom:10,height:10,left:r-o.width/2,right:r+o.width/2+2,width:o.width+2})})),\"boundaries\"!==e.tickson&&!e.showdividers||r.secondary){var o=p.length,l=Math.abs((p[o-1].x-p[0].x)*e._m)/(o-1),c=e.ticklabelposition||\"\",f=function(t){return-1!==c.indexOf(t)},d=f(\"top\"),m=f(\"left\"),y=f(\"right\"),_=f(\"bottom\")||m||d||y?(e.tickwidth||0)+6:0,w=l<2.5*n||\"multicategory\"===e.type||\"realaxis\"===e._name;for(t=0;t1)for(n=1;n2*o}(i,e))return\"date\";var m=\"strict\"!==r.autotypenumbers;return function(t,e){for(var r=t.length,n=f(r),i=0,o=0,s={},u=0;u2*i}(i,m)?\"category\":function(t,e){for(var r=t.length,n=0;n=2){var l,c,u=\"\";if(2===o.length)for(l=0;l<2;l++)if(c=x(o[l])){u=g;break}var f=i(\"pattern\",u);if(f===g)for(l=0;l<2;l++)(c=x(o[l]))&&(e.bounds[l]=o[l]=c-1);if(f)for(l=0;l<2;l++)switch(c=o[l],f){case g:if(!n(c))return void(e.enabled=!1);if((c=+c)!==Math.floor(c)||c<0||c>=7)return void(e.enabled=!1);e.bounds[l]=o[l]=c;break;case m:if(!n(c))return void(e.enabled=!1);if((c=+c)<0||c>24)return void(e.enabled=!1);e.bounds[l]=o[l]=c}if(!1===r.autorange){var h=r.range;if(h[0]h[1])return void(e.enabled=!1)}else if(o[0]>h[0]&&o[1]n?1:-1:+(t.substr(1)||1)-+(e.substr(1)||1)},r.ref2id=function(t){return!!/^[xyz]/.test(t)&&t.split(\" \")[0]},r.isLinked=function(t,e){return a(e,t._axisMatchGroups)||a(e,t._axisConstraintGroups)}},{\"../../registry\":638,\"./constants\":561}],559:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,n){if(\"category\"===e.type){var i,a=t.categoryarray,o=Array.isArray(a)&&a.length>0;o&&(i=\"array\");var s,l=r(\"categoryorder\",i);\"array\"===l&&(s=r(\"categoryarray\")),o||\"array\"!==l||(l=e.categoryorder=\"trace\"),\"trace\"===l?e._initialCategories=[]:\"array\"===l?e._initialCategories=s.slice():(s=function(t,e){var r,n,i,a=e.dataAttr||t._id.charAt(0),o={};if(e.axData)r=e.axData;else for(r=[],n=0;nn?i.substr(n):a.substr(r))+o:i+a+t*e:o}function m(t,e){for(var r=e._size,n=r.h/r.w,i={},a=Object.keys(t),o=0;oc*x)||T)for(r=0;rO&&FP&&(P=F);h/=(P-C)/(2*I),C=l.l2r(C),P=l.l2r(P),l.range=l._input.range=S=0?Math.min(t,.9):1/(1/Math.max(t,-.3)+3.222))}function N(t,e,r,n,i){return t.append(\"path\").attr(\"class\",\"zoombox\").style({fill:e>.2?\"rgba(0,0,0,0)\":\"rgba(255,255,255,0)\",\"stroke-width\":0}).attr(\"transform\",c(r,n)).attr(\"d\",i+\"Z\")}function j(t,e,r){return t.append(\"path\").attr(\"class\",\"zoombox-corners\").style({fill:f.background,stroke:f.defaultLine,\"stroke-width\":1,opacity:0}).attr(\"transform\",c(e,r)).attr(\"d\",\"M0,0Z\")}function U(t,e,r,n,i,a){t.attr(\"d\",n+\"M\"+r.l+\",\"+r.t+\"v\"+r.h+\"h\"+r.w+\"v-\"+r.h+\"h-\"+r.w+\"Z\"),V(t,e,i,a)}function V(t,e,r,n){r||(t.transition().style(\"fill\",n>.2?\"rgba(0,0,0,0.4)\":\"rgba(255,255,255,0.3)\").duration(200),e.transition().style(\"opacity\",1).duration(200))}function H(t){n.select(t).selectAll(\".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners\").remove()}function q(t){I&&t.data&&t._context.showTips&&(i.notifier(i._(t,\"Double-click to zoom back out\"),\"long\"),I=!1)}function G(t){var e=Math.floor(Math.min(t.b-t.t,t.r-t.l,P)/2);return\"M\"+(t.l-3.5)+\",\"+(t.t-.5+e)+\"h3v\"+-e+\"h\"+e+\"v-3h-\"+(e+3)+\"ZM\"+(t.r+3.5)+\",\"+(t.t-.5+e)+\"h-3v\"+-e+\"h\"+-e+\"v-3h\"+(e+3)+\"ZM\"+(t.r+3.5)+\",\"+(t.b+.5-e)+\"h-3v\"+e+\"h\"+-e+\"v3h\"+(e+3)+\"ZM\"+(t.l-3.5)+\",\"+(t.b+.5-e)+\"h3v\"+e+\"h\"+e+\"v3h-\"+(e+3)+\"Z\"}function Y(t,e,r,n,a){for(var o,s,l,c,u=!1,f={},h={},p=(a||{}).xaHash,d=(a||{}).yaHash,g=0;g=0)i._fullLayout._deactivateShape(i);else{var o=i._fullLayout.clickmode;if(H(i),2!==t||vt||qt(),mt)o.indexOf(\"select\")>-1&&S(r,i,J,K,e.id,Pt),o.indexOf(\"event\")>-1&&p.click(i,r,e.id);else if(1===t&&vt){var s=g?O:I,c=\"s\"===g||\"w\"===v?0:1,f=s._name+\".range[\"+c+\"]\",h=function(t,e){var r,n=t.range[e],i=Math.abs(n-t.range[1-e]);return\"date\"===t.type?n:\"log\"===t.type?(r=Math.ceil(Math.max(0,-Math.log(i)/Math.LN10))+3,a(\".\"+r+\"g\")(Math.pow(10,n))):(r=Math.floor(Math.log(Math.abs(n))/Math.LN10)-Math.floor(Math.log(i)/Math.LN10)+4,a(\".\"+String(r)+\"g\")(n))}(s,c),d=\"left\",m=\"middle\";if(s.fixedrange)return;g?(m=\"n\"===g?\"top\":\"bottom\",\"right\"===s.side&&(d=\"right\")):\"e\"===v&&(d=\"right\"),i._context.showAxisRangeEntryBoxes&&n.select(bt).call(u.makeEditable,{gd:i,immediate:!0,background:i._fullLayout.paper_bgcolor,text:String(h),fill:s.tickfont?s.tickfont.color:\"#444\",horizontalAlign:d,verticalAlign:m}).on(\"edit\",(function(t){var e=s.d2r(t);void 0!==e&&l.call(\"_guiRelayout\",i,f,e)}))}}}function zt(e,r){if(t._transitioningWithDuration)return!1;var n=Math.max(0,Math.min(tt,pt*e+_t)),i=Math.max(0,Math.min(et,dt*r+wt)),a=Math.abs(n-_t),o=Math.abs(i-wt);function s(){St=\"\",Tt.r=Tt.l,Tt.t=Tt.b,Lt.attr(\"d\",\"M0,0Z\")}if(Tt.l=Math.min(_t,n),Tt.r=Math.max(_t,n),Tt.t=Math.min(wt,i),Tt.b=Math.max(wt,i),rt.isSubplotConstrained)a>P||o>P?(St=\"xy\",a/tt>o/et?(o=a*et/tt,wt>i?Tt.t=wt-o:Tt.b=wt+o):(a=o*tt/et,_t>n?Tt.l=_t-a:Tt.r=_t+a),Lt.attr(\"d\",G(Tt))):s();else if(nt.isSubplotConstrained)if(a>P||o>P){St=\"xy\";var l=Math.min(Tt.l/tt,(et-Tt.b)/et),c=Math.max(Tt.r/tt,(et-Tt.t)/et);Tt.l=l*tt,Tt.r=c*tt,Tt.b=(1-l)*et,Tt.t=(1-c)*et,Lt.attr(\"d\",G(Tt))}else s();else!at||o0){var u;if(nt.isSubplotConstrained||!it&&1===at.length){for(u=0;ug[1]-1/4096&&(e.domain=s),i.noneOrAll(t.domain,e.domain,s)}return r(\"layer\"),e}},{\"../../lib\":503,\"fast-isnumeric\":190}],573:[function(t,e,r){\"use strict\";var n=t(\"./show_dflt\");e.exports=function(t,e,r,i,a){a||(a={});var o=a.tickSuffixDflt,s=n(t);r(\"tickprefix\")&&r(\"showtickprefix\",s),r(\"ticksuffix\",o)&&r(\"showticksuffix\",s)}},{\"./show_dflt\":577}],574:[function(t,e,r){\"use strict\";var n=t(\"../../constants/alignment\").FROM_BL;e.exports=function(t,e,r){void 0===r&&(r=n[t.constraintoward||\"center\"]);var i=[t.r2l(t.range[0]),t.r2l(t.range[1])],a=i[0]+(i[1]-i[0])*r;t.range=t._input.range=[t.l2r(a+(i[0]-a)*e),t.l2r(a+(i[1]-a)*e)],t.setScale()}},{\"../../constants/alignment\":471}],575:[function(t,e,r){\"use strict\";var n=t(\"polybooljs\"),i=t(\"../../registry\"),a=t(\"../../components/drawing\").dashStyle,o=t(\"../../components/color\"),s=t(\"../../components/fx\"),l=t(\"../../components/fx/helpers\").makeEventData,c=t(\"../../components/dragelement/helpers\"),u=c.freeMode,f=c.rectMode,h=c.drawMode,p=c.openMode,d=c.selectMode,g=t(\"../../components/shapes/draw_newshape/display_outlines\"),m=t(\"../../components/shapes/draw_newshape/helpers\").handleEllipse,v=t(\"../../components/shapes/draw_newshape/newshapes\"),y=t(\"../../lib\"),x=t(\"../../lib/polygon\"),b=t(\"../../lib/throttle\"),_=t(\"./axis_ids\").getFromId,w=t(\"../../lib/clear_gl_canvases\"),T=t(\"../../plot_api/subroutines\").redrawReglTraces,k=t(\"./constants\"),A=k.MINSELECT,M=x.filter,S=x.tester,E=t(\"./handle_outline\").clearSelect,L=t(\"./helpers\"),C=L.p2r,P=L.axValue,I=L.getTransform;function O(t,e,r,n,i,a,o){var s,l,c,u,f,h,d,m,v,y=e._hoverdata,x=e._fullLayout.clickmode.indexOf(\"event\")>-1,b=[];if(function(t){return t&&Array.isArray(t)&&!0!==t[0].hoverOnBox}(y)){F(t,e,a);var _=function(t,e){var r,n,i=t[0],a=-1,o=[];for(n=0;n0?function(t,e){var r,n,i,a=[];for(i=0;i0&&a.push(r);if(1===a.length&&a[0]===e.searchInfo&&(n=e.searchInfo.cd[0].trace).selectedpoints.length===e.pointNumbers.length){for(i=0;i1)return!1;if((i+=r.selectedpoints.length)>1)return!1}return 1===i}(s)&&(h=j(_))){for(o&&o.remove(),v=0;v=0&&n._fullLayout._deactivateShape(n),h(e)){var a=n._fullLayout._zoomlayer.selectAll(\".select-outline-\"+r.id);if(a&&n._fullLayout._drawing){var o=v(a,t);o&&i.call(\"_guiRelayout\",n,{shapes:o}),n._fullLayout._drawing=!1}}r.selection={},r.selection.selectionDefs=t.selectionDefs=[],r.selection.mergedPolygons=t.mergedPolygons=[]}function N(t,e,r,n){var i,a,o,s=[],l=e.map((function(t){return t._id})),c=r.map((function(t){return t._id}));for(o=0;o0?n[0]:r;return!!e.selectedpoints&&e.selectedpoints.indexOf(i)>-1}function U(t,e,r){var n,a,o,s;for(n=0;n=0)L._fullLayout._deactivateShape(L);else if(!_){var r=z.clickmode;b.done(gt).then((function(){if(b.clear(gt),2===t){for(ft.remove(),$=0;$-1&&O(e,L,i.xaxes,i.yaxes,i.subplot,i,ft),\"event\"===r&&L.emit(\"plotly_selected\",void 0);s.click(L,e)})).catch(y.error)}},i.doneFn=function(){dt.remove(),b.done(gt).then((function(){b.clear(gt),i.gd.emit(\"plotly_selected\",et),Q&&i.selectionDefs&&(Q.subtract=ut,i.selectionDefs.push(Q),i.mergedPolygons.length=0,[].push.apply(i.mergedPolygons,K)),i.doneFnCompleted&&i.doneFnCompleted(mt)})).catch(y.error),_&&B(i)}},clearSelect:E,clearSelectionsCache:B,selectOnClick:O}},{\"../../components/color\":366,\"../../components/dragelement/helpers\":384,\"../../components/drawing\":388,\"../../components/fx\":406,\"../../components/fx/helpers\":402,\"../../components/shapes/draw_newshape/display_outlines\":454,\"../../components/shapes/draw_newshape/helpers\":455,\"../../components/shapes/draw_newshape/newshapes\":456,\"../../lib\":503,\"../../lib/clear_gl_canvases\":487,\"../../lib/polygon\":515,\"../../lib/throttle\":530,\"../../plot_api/subroutines\":544,\"../../registry\":638,\"./axis_ids\":558,\"./constants\":561,\"./handle_outline\":565,\"./helpers\":566,polybooljs:254}],576:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"d3-time-format\").utcFormat,a=t(\"../../lib\"),o=a.numberFormat,s=t(\"fast-isnumeric\"),l=a.cleanNumber,c=a.ms2DateTime,u=a.dateTime2ms,f=a.ensureNumber,h=a.isArrayOrTypedArray,p=t(\"../../constants/numerical\"),d=p.FP_SAFE,g=p.BADNUM,m=p.LOG_CLIP,v=p.ONEWEEK,y=p.ONEDAY,x=p.ONEHOUR,b=p.ONEMIN,_=p.ONESEC,w=t(\"./axis_ids\"),T=t(\"./constants\"),k=T.HOUR_PATTERN,A=T.WEEKDAY_PATTERN;function M(t){return Math.pow(10,t)}function S(t){return null!=t}e.exports=function(t,e){e=e||{};var r=t._id||\"x\",p=r.charAt(0);function E(e,r){if(e>0)return Math.log(e)/Math.LN10;if(e<=0&&r&&t.range&&2===t.range.length){var n=t.range[0],i=t.range[1];return.5*(n+i-2*m*Math.abs(n-i))}return g}function L(e,r,n,i){if((i||{}).msUTC&&s(e))return+e;var o=u(e,n||t.calendar);if(o===g){if(!s(e))return g;e=+e;var l=Math.floor(10*a.mod(e+.05,1)),c=Math.round(e-l/10);o=u(new Date(c))+l/10}return o}function C(e,r,n){return c(e,r,n||t.calendar)}function P(e){return t._categories[Math.round(e)]}function I(e){if(S(e)){if(void 0===t._categoriesMap&&(t._categoriesMap={}),void 0!==t._categoriesMap[e])return t._categoriesMap[e];t._categories.push(\"number\"==typeof e?String(e):e);var r=t._categories.length-1;return t._categoriesMap[e]=r,r}return g}function O(e){if(t._categoriesMap)return t._categoriesMap[e]}function z(t){var e=O(t);return void 0!==e?e:s(t)?+t:void 0}function D(t){return s(t)?+t:O(t)}function R(t,e,r){return n.round(r+e*t,2)}function F(t,e,r){return(t-r)/e}var B=function(e){return s(e)?R(e,t._m,t._b):g},N=function(e){return F(e,t._m,t._b)};if(t.rangebreaks){var j=\"y\"===p;B=function(e){if(!s(e))return g;var r=t._rangebreaks.length;if(!r)return R(e,t._m,t._b);var n=j;t.range[0]>t.range[1]&&(n=!n);for(var i=n?-1:1,a=i*e,o=0,l=0;lu)){o=a<(c+u)/2?l:l+1;break}o=l+1}var f=t._B[o]||0;return isFinite(f)?R(e,t._m2,f):0},N=function(e){var r=t._rangebreaks.length;if(!r)return F(e,t._m,t._b);for(var n=0,i=0;it._rangebreaks[i].pmax&&(n=i+1);return F(e,t._m2,t._B[n])}}t.c2l=\"log\"===t.type?E:f,t.l2c=\"log\"===t.type?M:f,t.l2p=B,t.p2l=N,t.c2p=\"log\"===t.type?function(t,e){return B(E(t,e))}:B,t.p2c=\"log\"===t.type?function(t){return M(N(t))}:N,-1!==[\"linear\",\"-\"].indexOf(t.type)?(t.d2r=t.r2d=t.d2c=t.r2c=t.d2l=t.r2l=l,t.c2d=t.c2r=t.l2d=t.l2r=f,t.d2p=t.r2p=function(e){return t.l2p(l(e))},t.p2d=t.p2r=N,t.cleanPos=f):\"log\"===t.type?(t.d2r=t.d2l=function(t,e){return E(l(t),e)},t.r2d=t.r2c=function(t){return M(l(t))},t.d2c=t.r2l=l,t.c2d=t.l2r=f,t.c2r=E,t.l2d=M,t.d2p=function(e,r){return t.l2p(t.d2r(e,r))},t.p2d=function(t){return M(N(t))},t.r2p=function(e){return t.l2p(l(e))},t.p2r=N,t.cleanPos=f):\"date\"===t.type?(t.d2r=t.r2d=a.identity,t.d2c=t.r2c=t.d2l=t.r2l=L,t.c2d=t.c2r=t.l2d=t.l2r=C,t.d2p=t.r2p=function(e,r,n){return t.l2p(L(e,0,n))},t.p2d=t.p2r=function(t,e,r){return C(N(t),e,r)},t.cleanPos=function(e){return a.cleanDate(e,g,t.calendar)}):\"category\"===t.type?(t.d2c=t.d2l=I,t.r2d=t.c2d=t.l2d=P,t.d2r=t.d2l_noadd=z,t.r2c=function(e){var r=D(e);return void 0!==r?r:t.fraction2r(.5)},t.l2r=t.c2r=f,t.r2l=D,t.d2p=function(e){return t.l2p(t.r2c(e))},t.p2d=function(t){return P(N(t))},t.r2p=t.d2p,t.p2r=N,t.cleanPos=function(t){return\"string\"==typeof t&&\"\"!==t?t:f(t)}):\"multicategory\"===t.type&&(t.r2d=t.c2d=t.l2d=P,t.d2r=t.d2l_noadd=z,t.r2c=function(e){var r=z(e);return void 0!==r?r:t.fraction2r(.5)},t.r2c_just_indices=O,t.l2r=t.c2r=f,t.r2l=z,t.d2p=function(e){return t.l2p(t.r2c(e))},t.p2d=function(t){return P(N(t))},t.r2p=t.d2p,t.p2r=N,t.cleanPos=function(t){return Array.isArray(t)||\"string\"==typeof t&&\"\"!==t?t:f(t)},t.setupMultiCategory=function(n){var i,o,s=t._traceIndices,l=t._matchGroup;if(l&&0===t._categories.length)for(var c in l)if(c!==r){var u=e[w.id2name(c)];s=s.concat(u._traceIndices)}var f=[[0,{}],[0,{}]],d=[];for(i=0;id&&(o[n]=d),o[0]===o[1]){var c=Math.max(1,Math.abs(1e-6*o[0]));o[0]-=c,o[1]+=c}}else a.nestedProperty(t,e).set(i)},t.setScale=function(r){var n=e._size;if(t.overlaying){var i=w.getFromId({_fullLayout:e},t.overlaying);t.domain=i.domain}var a=r&&t._r?\"_r\":\"range\",o=t.calendar;t.cleanRange(a);var s,l,c=t.r2l(t[a][0],o),u=t.r2l(t[a][1],o),f=\"y\"===p;if((f?(t._offset=n.t+(1-t.domain[1])*n.h,t._length=n.h*(t.domain[1]-t.domain[0]),t._m=t._length/(c-u),t._b=-t._m*u):(t._offset=n.l+t.domain[0]*n.w,t._length=n.w*(t.domain[1]-t.domain[0]),t._m=t._length/(u-c),t._b=-t._m*c),t._rangebreaks=[],t._lBreaks=0,t._m2=0,t._B=[],t.rangebreaks)&&(t._rangebreaks=t.locateBreaks(Math.min(c,u),Math.max(c,u)),t._rangebreaks.length)){for(s=0;su&&(h=!h),h&&t._rangebreaks.reverse();var d=h?-1:1;for(t._m2=d*t._length/(Math.abs(u-c)-t._lBreaks),t._B.push(-t._m2*(f?u:c)),s=0;si&&(i+=7,oi&&(i+=24,o=n&&o=n&&e=s.min&&(ts.max&&(s.max=n),i=!1)}i&&c.push({min:t,max:n})}};for(n=0;nr.duration?(!function(){for(var r={},n=0;n rect\").call(o.setTranslate,0,0).call(o.setScale,1,1),t.plot.call(o.setTranslate,e._offset,r._offset).call(o.setScale,1,1);var n=t.plot.selectAll(\".scatterlayer .trace\");n.selectAll(\".point\").call(o.setPointGroupScale,1,1),n.selectAll(\".textpoint\").call(o.setTextPointsScale,1,1),n.call(o.hideOutsideRangePoints,t)}function m(e,r){var n=e.plotinfo,i=n.xaxis,l=n.yaxis,c=i._length,u=l._length,f=!!e.xr1,h=!!e.yr1,p=[];if(f){var d=a.simpleMap(e.xr0,i.r2l),g=a.simpleMap(e.xr1,i.r2l),m=d[1]-d[0],v=g[1]-g[0];p[0]=(d[0]*(1-r)+r*g[0]-d[0])/(d[1]-d[0])*c,p[2]=c*(1-r+r*v/m),i.range[0]=i.l2r(d[0]*(1-r)+r*g[0]),i.range[1]=i.l2r(d[1]*(1-r)+r*g[1])}else p[0]=0,p[2]=c;if(h){var y=a.simpleMap(e.yr0,l.r2l),x=a.simpleMap(e.yr1,l.r2l),b=y[1]-y[0],_=x[1]-x[0];p[1]=(y[1]*(1-r)+r*x[1]-y[1])/(y[0]-y[1])*u,p[3]=u*(1-r+r*_/b),l.range[0]=i.l2r(y[0]*(1-r)+r*x[0]),l.range[1]=l.l2r(y[1]*(1-r)+r*x[1])}else p[1]=0,p[3]=u;s.drawOne(t,i,{skipTitle:!0}),s.drawOne(t,l,{skipTitle:!0}),s.redrawComponents(t,[i._id,l._id]);var w=f?c/p[2]:1,T=h?u/p[3]:1,k=f?p[0]:0,A=h?p[1]:0,M=f?p[0]/p[2]*c:0,S=h?p[1]/p[3]*u:0,E=i._offset-M,L=l._offset-S;n.clipRect.call(o.setTranslate,k,A).call(o.setScale,1/w,1/T),n.plot.call(o.setTranslate,E,L).call(o.setScale,w,T),o.setPointGroupScale(n.zoomScalePts,1/w,1/T),o.setTextPointsScale(n.zoomScaleTxt,1/w,1/T)}s.redrawComponents(t)}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../registry\":638,\"./axes\":554,\"@plotly/d3\":58}],582:[function(t,e,r){\"use strict\";var n=t(\"../../registry\").traceIs,i=t(\"./axis_autotype\");function a(t){return{v:\"x\",h:\"y\"}[t.orientation||\"v\"]}function o(t,e){var r=a(t),i=n(t,\"box-violin\"),o=n(t._fullInput||{},\"candlestick\");return i&&!o&&e===r&&void 0===t[r]&&void 0===t[r+\"0\"]}e.exports=function(t,e,r,s){r(\"autotypenumbers\",s.autotypenumbersDflt),\"-\"===r(\"type\",(s.splomStash||{}).type)&&(!function(t,e){if(\"-\"!==t.type)return;var r,s=t._id,l=s.charAt(0);-1!==s.indexOf(\"scene\")&&(s=l);var c=function(t,e,r){for(var n=0;n0&&(i[\"_\"+r+\"axes\"]||{})[e])return i;if((i[r+\"axis\"]||r)===e){if(o(i,r))return i;if((i[r]||[]).length||i[r+\"0\"])return i}}}(e,s,l);if(!c)return;if(\"histogram\"===c.type&&l==={v:\"y\",h:\"x\"}[c.orientation||\"v\"])return void(t.type=\"linear\");var u=l+\"calendar\",f=c[u],h={noMultiCategory:!n(c,\"cartesian\")||n(c,\"noMultiCategory\")};\"box\"===c.type&&c._hasPreCompStats&&l==={h:\"x\",v:\"y\"}[c.orientation||\"v\"]&&(h.noMultiCategory=!0);if(h.autotypenumbers=t.autotypenumbers,o(c,l)){var p=a(c),d=[];for(r=0;r0?\".\":\"\")+a;i.isPlainObject(o)?l(o,e,s,n+1):e(s,a,o)}}))}r.manageCommandObserver=function(t,e,n,o){var s={},l=!0;e&&e._commandObserver&&(s=e._commandObserver),s.cache||(s.cache={}),s.lookupTable={};var c=r.hasSimpleAPICommandBindings(t,n,s.lookupTable);if(e&&e._commandObserver){if(c)return s;if(e._commandObserver.remove)return e._commandObserver.remove(),e._commandObserver=null,s}if(c){a(t,c,s.cache),s.check=function(){if(l){var e=a(t,c,s.cache);return e.changed&&o&&void 0!==s.lookupTable[e.value]&&(s.disable(),Promise.resolve(o({value:e.value,type:c.type,prop:c.prop,traces:c.traces,index:s.lookupTable[e.value]})).then(s.enable,s.enable)),e.changed}};for(var u=[\"plotly_relayout\",\"plotly_redraw\",\"plotly_restyle\",\"plotly_update\",\"plotly_animatingframe\",\"plotly_afterplot\"],f=0;f0&&i<0&&(i+=360);var s=(i-n)/4;return{type:\"Polygon\",coordinates:[[[n,a],[n,o],[n+s,o],[n+2*s,o],[n+3*s,o],[i,o],[i,a],[i-s,a],[i-2*s,a],[i-3*s,a],[n,a]]]}}e.exports=function(t){return new M(t)},S.plot=function(t,e,r){var n=this,i=e[this.id],a=[],o=!1;for(var s in w.layerNameToAdjective)if(\"frame\"!==s&&i[\"show\"+s]){o=!0;break}for(var l=0;l0&&a._module.calcGeoJSON(i,e)}if(!this.updateProjection(t,e)){this.viewInitial&&this.scope===r.scope||this.saveViewInitial(r),this.scope=r.scope,this.updateBaseLayers(e,r),this.updateDims(e,r),this.updateFx(e,r),d.generalUpdatePerTraceModule(this.graphDiv,this,t,r);var o=this.layers.frontplot.select(\".scatterlayer\");this.dataPoints.point=o.selectAll(\".point\"),this.dataPoints.text=o.selectAll(\"text\"),this.dataPaths.line=o.selectAll(\".js-line\");var s=this.layers.backplot.select(\".choroplethlayer\");this.dataPaths.choropleth=s.selectAll(\"path\"),this.render()}},S.updateProjection=function(t,e){var r=this.graphDiv,n=e[this.id],l=e._size,u=n.domain,f=n.projection,h=n.lonaxis,p=n.lataxis,d=h._ax,g=p._ax,v=this.projection=function(t){var e=t.projection,r=e.type,n=w.projNames[r];n=\"geo\"+c.titleCase(n);for(var l=(i[n]||s[n])(),u=t._isSatellite?180*Math.acos(1/e.distance)/Math.PI:t._isClipped?w.lonaxisSpan[r]/2:null,f=[\"center\",\"rotate\",\"parallels\",\"clipExtent\"],h=function(t){return t?l:[]},p=0;pu*Math.PI/180}return!1},l.getPath=function(){return a().projection(l)},l.getBounds=function(t){return l.getPath().bounds(t)},l.precision(w.precision),t._isSatellite&&l.tilt(e.tilt).distance(e.distance);u&&l.clipAngle(u-w.clipPad);return l}(n),y=[[l.l+l.w*u.x[0],l.t+l.h*(1-u.y[1])],[l.l+l.w*u.x[1],l.t+l.h*(1-u.y[0])]],x=n.center||{},b=f.rotation||{},_=h.range||[],T=p.range||[];if(n.fitbounds){d._length=y[1][0]-y[0][0],g._length=y[1][1]-y[0][1],d.range=m(r,d),g.range=m(r,g);var k=(d.range[0]+d.range[1])/2,A=(g.range[0]+g.range[1])/2;if(n._isScoped)x={lon:k,lat:A};else if(n._isClipped){x={lon:k,lat:A},b={lon:k,lat:A,roll:b.roll};var M=f.type,S=w.lonaxisSpan[M]/2||180,L=w.lataxisSpan[M]/2||90;_=[k-S,k+S],T=[A-L,A+L]}else x={lon:k,lat:A},b={lon:k,lat:b.lat,roll:b.roll}}v.center([x.lon-b.lon,x.lat-b.lat]).rotate([-b.lon,-b.lat,b.roll]).parallels(f.parallels);var C=E(_,T);v.fitExtent(y,C);var P=this.bounds=v.getBounds(C),I=this.fitScale=v.scale(),O=v.translate();if(n.fitbounds){var z=v.getBounds(E(d.range,g.range)),D=Math.min((P[1][0]-P[0][0])/(z[1][0]-z[0][0]),(P[1][1]-P[0][1])/(z[1][1]-z[0][1]));isFinite(D)?v.scale(D*I):c.warn(\"Something went wrong during\"+this.id+\"fitbounds computations.\")}else v.scale(f.scale*I);var R=this.midPt=[(P[0][0]+P[1][0])/2,(P[0][1]+P[1][1])/2];if(v.translate([O[0]+(R[0]-O[0]),O[1]+(R[1]-O[1])]).clipExtent(P),n._isAlbersUsa){var F=v([x.lon,x.lat]),B=v.translate();v.translate([B[0]-(F[0]-B[0]),B[1]-(F[1]-B[1])])}},S.updateBaseLayers=function(t,e){var r=this,i=r.topojson,a=r.layers,o=r.basePaths;function s(t){return\"lonaxis\"===t||\"lataxis\"===t}function l(t){return Boolean(w.lineLayers[t])}function c(t){return Boolean(w.fillLayers[t])}var u=(this.hasChoropleth?w.layersForChoropleth:w.layers).filter((function(t){return l(t)||c(t)?e[\"show\"+t]:!s(t)||e[t].showgrid})),p=r.framework.selectAll(\".layer\").data(u,String);p.exit().each((function(t){delete a[t],delete o[t],n.select(this).remove()})),p.enter().append(\"g\").attr(\"class\",(function(t){return\"layer \"+t})).each((function(t){var e=a[t]=n.select(this);\"bg\"===t?r.bgRect=e.append(\"rect\").style(\"pointer-events\",\"all\"):s(t)?o[t]=e.append(\"path\").style(\"fill\",\"none\"):\"backplot\"===t?e.append(\"g\").classed(\"choroplethlayer\",!0):\"frontplot\"===t?e.append(\"g\").classed(\"scatterlayer\",!0):l(t)?o[t]=e.append(\"path\").style(\"fill\",\"none\").style(\"stroke-miterlimit\",2):c(t)&&(o[t]=e.append(\"path\").style(\"stroke\",\"none\"))})),p.order(),p.each((function(r){var n=o[r],a=w.layerNameToAdjective[r];\"frame\"===r?n.datum(w.sphereSVG):l(r)||c(r)?n.datum(A(i,i.objects[r])):s(r)&&n.datum(function(t,e,r){var n,i,a,o=e[t],s=w.scopeDefaults[e.scope];\"lonaxis\"===t?(n=s.lonaxisRange,i=s.lataxisRange,a=function(t,e){return[t,e]}):\"lataxis\"===t&&(n=s.lataxisRange,i=s.lonaxisRange,a=function(t,e){return[e,t]});var l={type:\"linear\",range:[n[0],n[1]-1e-6],tick0:o.tick0,dtick:o.dtick};g.setConvert(l,r);var c=g.calcTicks(l);e.isScoped||\"lonaxis\"!==t||c.pop();for(var u=c.length,f=new Array(u),h=0;h-1&&b(n.event,i,[r.xaxis],[r.yaxis],r.id,f),s.indexOf(\"event\")>-1&&p.click(i,n.event))}))}function h(t){return r.projection.invert([t[0]+r.xaxis._offset,t[1]+r.yaxis._offset])}},S.makeFramework=function(){var t=this,e=t.graphDiv,r=e._fullLayout,i=\"clip\"+r._uid+t.id;t.clipDef=r._clips.append(\"clipPath\").attr(\"id\",i),t.clipRect=t.clipDef.append(\"rect\"),t.framework=n.select(t.container).append(\"g\").attr(\"class\",\"geo \"+t.id).call(h.setClipUrl,i,e),t.project=function(e){var r=t.projection(e);return r?[r[0]-t.xaxis._offset,r[1]-t.yaxis._offset]:[null,null]},t.xaxis={_id:\"x\",c2p:function(e){return t.project(e)[0]}},t.yaxis={_id:\"y\",c2p:function(e){return t.project(e)[1]}},t.mockAxis={type:\"linear\",showexponent:\"all\",exponentformat:\"B\"},g.setConvert(t.mockAxis,r)},S.saveViewInitial=function(t){var e,r=t.center||{},n=t.projection,i=n.rotation||{};this.viewInitial={fitbounds:t.fitbounds,\"projection.scale\":n.scale},e=t._isScoped?{\"center.lon\":r.lon,\"center.lat\":r.lat}:t._isClipped?{\"projection.rotation.lon\":i.lon,\"projection.rotation.lat\":i.lat}:{\"center.lon\":r.lon,\"center.lat\":r.lat,\"projection.rotation.lon\":i.lon},c.extendFlat(this.viewInitial,e)},S.render=function(){var t,e=this.projection,r=e.getPath();function n(t){var r=e(t.lonlat);return r?u(r[0],r[1]):null}function i(t){return e.isLonLatOverEdges(t.lonlat)?\"none\":null}for(t in this.basePaths)this.basePaths[t].attr(\"d\",r);for(t in this.dataPaths)this.dataPaths[t].attr(\"d\",(function(t){return r(t.geojson)}));for(t in this.dataPoints)this.dataPoints[t].attr(\"display\",i).attr(\"transform\",n)}},{\"../../components/color\":366,\"../../components/dragelement\":385,\"../../components/drawing\":388,\"../../components/fx\":406,\"../../lib\":503,\"../../lib/geo_location_utils\":496,\"../../lib/topojson_utils\":532,\"../../registry\":638,\"../cartesian/autorange\":553,\"../cartesian/axes\":554,\"../cartesian/select\":575,\"../plots\":619,\"./constants\":587,\"./zoom\":592,\"@plotly/d3\":58,\"d3-geo\":114,\"d3-geo-projection\":113,\"topojson-client\":315}],589:[function(t,e,r){\"use strict\";var n=t(\"../../plots/get_data\").getSubplotCalcData,i=t(\"../../lib\").counterRegex,a=t(\"./geo\"),o=\"geo\",s=i(o),l={};l.geo={valType:\"subplotid\",dflt:o,editType:\"calc\"},e.exports={attr:o,name:o,idRoot:o,idRegex:s,attrRegex:s,attributes:l,layoutAttributes:t(\"./layout_attributes\"),supplyLayoutDefaults:t(\"./layout_defaults\"),plot:function(t){for(var e=t._fullLayout,r=t.calcdata,i=e._subplots.geo,s=0;s0&&P<0&&(P+=360);var I,O,z,D=(C+P)/2;if(!p){var R=d?f.projRotate:[D,0,0];I=r(\"projection.rotation.lon\",R[0]),r(\"projection.rotation.lat\",R[1]),r(\"projection.rotation.roll\",R[2]),r(\"showcoastlines\",!d&&x)&&(r(\"coastlinecolor\"),r(\"coastlinewidth\")),r(\"showocean\",!!x&&void 0)&&r(\"oceancolor\")}(p?(O=-96.6,z=38.7):(O=d?D:I,z=(L[0]+L[1])/2),r(\"center.lon\",O),r(\"center.lat\",z),g&&(r(\"projection.tilt\"),r(\"projection.distance\")),m)&&r(\"projection.parallels\",f.projParallels||[0,60]);r(\"projection.scale\"),r(\"showland\",!!x&&void 0)&&r(\"landcolor\"),r(\"showlakes\",!!x&&void 0)&&r(\"lakecolor\"),r(\"showrivers\",!!x&&void 0)&&(r(\"rivercolor\"),r(\"riverwidth\")),r(\"showcountries\",d&&\"usa\"!==u&&x)&&(r(\"countrycolor\"),r(\"countrywidth\")),(\"usa\"===u||\"north america\"===u&&50===c)&&(r(\"showsubunits\",x),r(\"subunitcolor\"),r(\"subunitwidth\")),d||r(\"showframe\",x)&&(r(\"framecolor\"),r(\"framewidth\")),r(\"bgcolor\"),r(\"fitbounds\")&&(delete e.projection.scale,d?(delete e.center.lon,delete e.center.lat):v?(delete e.center.lon,delete e.center.lat,delete e.projection.rotation.lon,delete e.projection.rotation.lat,delete e.lonaxis.range,delete e.lataxis.range):(delete e.center.lon,delete e.center.lat,delete e.projection.rotation.lon))}e.exports=function(t,e,r){i(t,e,r,{type:\"geo\",attributes:s,handleDefaults:c,fullData:r,partition:\"y\"})}},{\"../../lib\":503,\"../get_data\":593,\"../subplot_defaults\":632,\"./constants\":587,\"./layout_attributes\":590}],592:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../registry\"),o=Math.PI/180,s=180/Math.PI,l={cursor:\"pointer\"},c={cursor:\"auto\"};function u(t,e){return n.behavior.zoom().translate(e.translate()).scale(e.scale())}function f(t,e,r){var n=t.id,o=t.graphDiv,s=o.layout,l=s[n],c=o._fullLayout,u=c[n],f={},h={};function p(t,e){f[n+\".\"+t]=i.nestedProperty(l,t).get(),a.call(\"_storeDirectGUIEdit\",s,c._preGUI,f);var r=i.nestedProperty(u,t);r.get()!==e&&(r.set(e),i.nestedProperty(l,t).set(e),h[n+\".\"+t]=e)}r(p),p(\"projection.scale\",e.scale()/t.fitScale),p(\"fitbounds\",!1),o.emit(\"plotly_relayout\",h)}function h(t,e){var r=u(0,e);function i(r){var n=e.invert(t.midPt);r(\"center.lon\",n[0]),r(\"center.lat\",n[1])}return r.on(\"zoomstart\",(function(){n.select(this).style(l)})).on(\"zoom\",(function(){e.scale(n.event.scale).translate(n.event.translate),t.render();var r=e.invert(t.midPt);t.graphDiv.emit(\"plotly_relayouting\",{\"geo.projection.scale\":e.scale()/t.fitScale,\"geo.center.lon\":r[0],\"geo.center.lat\":r[1]})})).on(\"zoomend\",(function(){n.select(this).style(c),f(t,e,i)})),r}function p(t,e){var r,i,a,o,s,h,p,d,g,m=u(0,e);function v(t){return e.invert(t)}function y(r){var n=e.rotate(),i=e.invert(t.midPt);r(\"projection.rotation.lon\",-n[0]),r(\"center.lon\",i[0]),r(\"center.lat\",i[1])}return m.on(\"zoomstart\",(function(){n.select(this).style(l),r=n.mouse(this),i=e.rotate(),a=e.translate(),o=i,s=v(r)})).on(\"zoom\",(function(){if(h=n.mouse(this),function(t){var r=v(t);if(!r)return!0;var n=e(r);return Math.abs(n[0]-t[0])>2||Math.abs(n[1]-t[1])>2}(r))return m.scale(e.scale()),void m.translate(e.translate());e.scale(n.event.scale),e.translate([a[0],n.event.translate[1]]),s?v(h)&&(d=v(h),p=[o[0]+(d[0]-s[0]),i[1],i[2]],e.rotate(p),o=p):s=v(r=h),g=!0,t.render();var l=e.rotate(),c=e.invert(t.midPt);t.graphDiv.emit(\"plotly_relayouting\",{\"geo.projection.scale\":e.scale()/t.fitScale,\"geo.center.lon\":c[0],\"geo.center.lat\":c[1],\"geo.projection.rotation.lon\":-l[0]})})).on(\"zoomend\",(function(){n.select(this).style(c),g&&f(t,e,y)})),m}function d(t,e){var r,i={r:e.rotate(),k:e.scale()},a=u(0,e),o=function(t){var e=0,r=arguments.length,i=[];for(;++ed?(a=(f>0?90:-90)-p,i=0):(a=Math.asin(f/d)*s-p,i=Math.sqrt(d*d-f*f));var g=180-a-2*p,m=(Math.atan2(h,u)-Math.atan2(c,i))*s,v=(Math.atan2(h,u)-Math.atan2(c,-i))*s;return b(r[0],r[1],a,m)<=b(r[0],r[1],g,v)?[a,m,r[2]]:[g,v,r[2]]}function b(t,e,r,n){var i=_(r-t),a=_(n-e);return Math.sqrt(i*i+a*a)}function _(t){return(t%360+540)%360-180}function w(t,e,r){var n=r*o,i=t.slice(),a=0===e?1:0,s=2===e?1:2,l=Math.cos(n),c=Math.sin(n);return i[a]=t[a]*l-t[s]*c,i[s]=t[s]*l+t[a]*c,i}function T(t){return[Math.atan2(2*(t[0]*t[1]+t[2]*t[3]),1-2*(t[1]*t[1]+t[2]*t[2]))*s,Math.asin(Math.max(-1,Math.min(1,2*(t[0]*t[2]-t[3]*t[1]))))*s,Math.atan2(2*(t[0]*t[3]+t[1]*t[2]),1-2*(t[2]*t[2]+t[3]*t[3]))*s]}function k(t,e){for(var r=0,n=0,i=t.length;nMath.abs(s)?(c.boxEnd[1]=c.boxStart[1]+Math.abs(a)*_*(s>=0?1:-1),c.boxEnd[1]l[3]&&(c.boxEnd[1]=l[3],c.boxEnd[0]=c.boxStart[0]+(l[3]-c.boxStart[1])/Math.abs(_))):(c.boxEnd[0]=c.boxStart[0]+Math.abs(s)/_*(a>=0?1:-1),c.boxEnd[0]l[2]&&(c.boxEnd[0]=l[2],c.boxEnd[1]=c.boxStart[1]+(l[2]-c.boxStart[0])*Math.abs(_)))}}else c.boxEnabled?(a=c.boxStart[0]!==c.boxEnd[0],s=c.boxStart[1]!==c.boxEnd[1],a||s?(a&&(m(0,c.boxStart[0],c.boxEnd[0]),t.xaxis.autorange=!1),s&&(m(1,c.boxStart[1],c.boxEnd[1]),t.yaxis.autorange=!1),t.relayoutCallback()):t.glplot.setDirty(),c.boxEnabled=!1,c.boxInited=!1):c.boxInited&&(c.boxInited=!1);break;case\"pan\":c.boxEnabled=!1,c.boxInited=!1,e?(c.panning||(c.dragStart[0]=n,c.dragStart[1]=i),Math.abs(c.dragStart[0]-n).999&&(g=\"turntable\"):g=\"turntable\")}else g=\"turntable\";r(\"dragmode\",g),r(\"hovermode\",n.getDfltFromLayout(\"hovermode\"))}e.exports=function(t,e,r){var i=e._basePlotModules.length>1;o(t,e,r,{type:\"gl3d\",attributes:l,handleDefaults:u,fullLayout:e,font:e.font,fullData:r,getDfltFromLayout:function(e){if(!i)return n.validate(t[e],l[e])?t[e]:void 0},autotypenumbersDflt:e.autotypenumbers,paper_bgcolor:e.paper_bgcolor,calendar:e.calendar})}},{\"../../../components/color\":366,\"../../../lib\":503,\"../../../registry\":638,\"../../get_data\":593,\"../../subplot_defaults\":632,\"./axis_defaults\":601,\"./layout_attributes\":604}],604:[function(t,e,r){\"use strict\";var n=t(\"./axis_attributes\"),i=t(\"../../domain\").attributes,a=t(\"../../../lib/extend\").extendFlat,o=t(\"../../../lib\").counterRegex;function s(t,e,r){return{x:{valType:\"number\",dflt:t,editType:\"camera\"},y:{valType:\"number\",dflt:e,editType:\"camera\"},z:{valType:\"number\",dflt:r,editType:\"camera\"},editType:\"camera\"}}e.exports={_arrayAttrRegexps:[o(\"scene\",\".annotations\",!0)],bgcolor:{valType:\"color\",dflt:\"rgba(0,0,0,0)\",editType:\"plot\"},camera:{up:a(s(0,0,1),{}),center:a(s(0,0,0),{}),eye:a(s(1.25,1.25,1.25),{}),projection:{type:{valType:\"enumerated\",values:[\"perspective\",\"orthographic\"],dflt:\"perspective\",editType:\"calc\"},editType:\"calc\"},editType:\"camera\"},domain:i({name:\"scene\",editType:\"plot\"}),aspectmode:{valType:\"enumerated\",values:[\"auto\",\"cube\",\"data\",\"manual\"],dflt:\"auto\",editType:\"plot\",impliedEdits:{\"aspectratio.x\":void 0,\"aspectratio.y\":void 0,\"aspectratio.z\":void 0}},aspectratio:{x:{valType:\"number\",min:0,editType:\"plot\",impliedEdits:{\"^aspectmode\":\"manual\"}},y:{valType:\"number\",min:0,editType:\"plot\",impliedEdits:{\"^aspectmode\":\"manual\"}},z:{valType:\"number\",min:0,editType:\"plot\",impliedEdits:{\"^aspectmode\":\"manual\"}},editType:\"plot\",impliedEdits:{aspectmode:\"manual\"}},xaxis:n,yaxis:n,zaxis:n,dragmode:{valType:\"enumerated\",values:[\"orbit\",\"turntable\",\"zoom\",\"pan\",!1],editType:\"plot\"},hovermode:{valType:\"enumerated\",values:[\"closest\",!1],dflt:\"closest\",editType:\"modebar\"},uirevision:{valType:\"any\",editType:\"none\"},editType:\"plot\",_deprecated:{cameraposition:{valType:\"info_array\",editType:\"camera\"}}}},{\"../../../lib\":503,\"../../../lib/extend\":493,\"../../domain\":584,\"./axis_attributes\":600}],605:[function(t,e,r){\"use strict\";var n=t(\"../../../lib/str2rgbarray\"),i=[\"xaxis\",\"yaxis\",\"zaxis\"];function a(){this.enabled=[!0,!0,!0],this.colors=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.drawSides=[!0,!0,!0],this.lineWidth=[1,1,1]}a.prototype.merge=function(t){for(var e=0;e<3;++e){var r=t[i[e]];r.visible?(this.enabled[e]=r.showspikes,this.colors[e]=n(r.spikecolor),this.drawSides[e]=r.spikesides,this.lineWidth[e]=r.spikethickness):(this.enabled[e]=!1,this.drawSides[e]=!1)}},e.exports=function(t){var e=new a;return e.merge(t),e}},{\"../../../lib/str2rgbarray\":528}],606:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e=t.axesOptions,r=t.glplot.axesPixels,s=t.fullSceneLayout,l=[[],[],[]],c=0;c<3;++c){var u=s[a[c]];if(u._length=(r[c].hi-r[c].lo)*r[c].pixelsPerDataUnit/t.dataScale[c],Math.abs(u._length)===1/0||isNaN(u._length))l[c]=[];else{u._input_range=u.range.slice(),u.range[0]=r[c].lo/t.dataScale[c],u.range[1]=r[c].hi/t.dataScale[c],u._m=1/(t.dataScale[c]*r[c].pixelsPerDataUnit),u.range[0]===u.range[1]&&(u.range[0]-=1,u.range[1]+=1);var f=u.tickmode;if(\"auto\"===u.tickmode){u.tickmode=\"linear\";var h=u.nticks||i.constrain(u._length/40,4,9);n.autoTicks(u,Math.abs(u.range[1]-u.range[0])/h)}for(var p=n.calcTicks(u,{msUTC:!0}),d=0;d/g,\" \"));l[c]=p,u.tickmode=f}}e.ticks=l;for(c=0;c<3;++c){o[c]=.5*(t.glplot.bounds[0][c]+t.glplot.bounds[1][c]);for(d=0;d<2;++d)e.bounds[d][c]=t.glplot.bounds[d][c]}t.contourLevels=function(t){for(var e=new Array(3),r=0;r<3;++r){for(var n=t[r],i=new Array(n.length),a=0;ar.deltaY?1.1:1/1.1,a=t.glplot.getAspectratio();t.glplot.setAspectratio({x:n*a.x,y:n*a.y,z:n*a.z})}i(t)}}),!!c&&{passive:!1}),t.glplot.canvas.addEventListener(\"mousemove\",(function(){if(!1!==t.fullSceneLayout.dragmode&&0!==t.camera.mouseListener.buttons){var e=n();t.graphDiv.emit(\"plotly_relayouting\",e)}})),t.staticMode||t.glplot.canvas.addEventListener(\"webglcontextlost\",(function(r){e&&e.emit&&e.emit(\"plotly_webglcontextlost\",{event:r,layer:t.id})}),!1)),t.glplot.oncontextloss=function(){t.recoverContext()},t.glplot.onrender=function(){t.render()},!0},w.render=function(){var t,e=this,r=e.graphDiv,n=e.svgContainer,i=e.container.getBoundingClientRect();r._fullLayout._calcInverseTransform(r);var a=r._fullLayout._invScaleX,o=r._fullLayout._invScaleY,s=i.width*a,l=i.height*o;n.setAttributeNS(null,\"viewBox\",\"0 0 \"+s+\" \"+l),n.setAttributeNS(null,\"width\",s),n.setAttributeNS(null,\"height\",l),b(e),e.glplot.axes.update(e.axesOptions);for(var c=Object.keys(e.traces),u=null,h=e.glplot.selection,g=0;g\")):\"isosurface\"===t.type||\"volume\"===t.type?(T.valueLabel=p.hoverLabelText(e._mockAxis,e._mockAxis.d2l(h.traceCoordinate[3]),t.valuehoverformat),S.push(\"value: \"+T.valueLabel),h.textLabel&&S.push(h.textLabel),x=S.join(\"
\")):x=h.textLabel;var E={x:h.traceCoordinate[0],y:h.traceCoordinate[1],z:h.traceCoordinate[2],data:_._input,fullData:_,curveNumber:_.index,pointNumber:w};d.appendArrayPointValue(E,_,w),t._module.eventData&&(E=_._module.eventData(E,h,_,{},w));var L={points:[E]};if(e.fullSceneLayout.hovermode){var C=[];d.loneHover({trace:_,x:(.5+.5*y[0]/y[3])*s,y:(.5-.5*y[1]/y[3])*l,xLabel:T.xLabel,yLabel:T.yLabel,zLabel:T.zLabel,text:x,name:u.name,color:d.castHoverOption(_,w,\"bgcolor\")||u.color,borderColor:d.castHoverOption(_,w,\"bordercolor\"),fontFamily:d.castHoverOption(_,w,\"font.family\"),fontSize:d.castHoverOption(_,w,\"font.size\"),fontColor:d.castHoverOption(_,w,\"font.color\"),nameLength:d.castHoverOption(_,w,\"namelength\"),textAlign:d.castHoverOption(_,w,\"align\"),hovertemplate:f.castOption(_,w,\"hovertemplate\"),hovertemplateLabels:f.extendFlat({},E,T),eventData:[E]},{container:n,gd:r,inOut_bbox:C}),E.bbox=C[0]}h.buttons&&h.distance<5?r.emit(\"plotly_click\",L):r.emit(\"plotly_hover\",L),this.oldEventData=L}else d.loneUnhover(n),this.oldEventData&&r.emit(\"plotly_unhover\",this.oldEventData),this.oldEventData=void 0;e.drawAnnotations(e)},w.recoverContext=function(){var t=this;t.glplot.dispose();var e=function(){t.glplot.gl.isContextLost()?requestAnimationFrame(e):t.initializeGLPlot()?t.plot.apply(t,t.plotArgs):f.error(\"Catastrophic and unrecoverable WebGL error. Context lost.\")};requestAnimationFrame(e)};var k=[\"xaxis\",\"yaxis\",\"zaxis\"];function A(t,e,r){for(var n=t.fullSceneLayout,i=0;i<3;i++){var a=k[i],o=a.charAt(0),s=n[a],l=e[o],c=e[o+\"calendar\"],u=e[\"_\"+o+\"length\"];if(f.isArrayOrTypedArray(l))for(var h,p=0;p<(u||l.length);p++)if(f.isArrayOrTypedArray(l[p]))for(var d=0;dm[1][a])m[0][a]=-1,m[1][a]=1;else{var L=m[1][a]-m[0][a];m[0][a]-=L/32,m[1][a]+=L/32}if(\"reversed\"===s.autorange){var C=m[0][a];m[0][a]=m[1][a],m[1][a]=C}}else{var P=s.range;m[0][a]=s.r2l(P[0]),m[1][a]=s.r2l(P[1])}m[0][a]===m[1][a]&&(m[0][a]-=1,m[1][a]+=1),v[a]=m[1][a]-m[0][a],this.glplot.setBounds(a,{min:m[0][a]*h[a],max:m[1][a]*h[a]})}var I=c.aspectmode;if(\"cube\"===I)d=[1,1,1];else if(\"manual\"===I){var O=c.aspectratio;d=[O.x,O.y,O.z]}else{if(\"auto\"!==I&&\"data\"!==I)throw new Error(\"scene.js aspectRatio was not one of the enumerated types\");var z=[1,1,1];for(a=0;a<3;++a){var D=y[l=(s=c[k[a]]).type];z[a]=Math.pow(D.acc,1/D.count)/h[a]}d=\"data\"===I||Math.max.apply(null,z)/Math.min.apply(null,z)<=4?z:[1,1,1]}c.aspectratio.x=u.aspectratio.x=d[0],c.aspectratio.y=u.aspectratio.y=d[1],c.aspectratio.z=u.aspectratio.z=d[2],this.glplot.setAspectratio(c.aspectratio),this.viewInitial.aspectratio||(this.viewInitial.aspectratio={x:c.aspectratio.x,y:c.aspectratio.y,z:c.aspectratio.z}),this.viewInitial.aspectmode||(this.viewInitial.aspectmode=c.aspectmode);var R=c.domain||null,F=e._size||null;if(R&&F){var B=this.container.style;B.position=\"absolute\",B.left=F.l+R.x[0]*F.w+\"px\",B.top=F.t+(1-R.y[1])*F.h+\"px\",B.width=F.w*(R.x[1]-R.x[0])+\"px\",B.height=F.h*(R.y[1]-R.y[0])+\"px\"}this.glplot.redraw()}},w.destroy=function(){this.glplot&&(this.camera.mouseListener.enabled=!1,this.container.removeEventListener(\"wheel\",this.camera.wheelListener),this.camera=null,this.glplot.dispose(),this.container.parentNode.removeChild(this.container),this.glplot=null)},w.getCamera=function(){var t;return this.camera.view.recalcMatrix(this.camera.view.lastT()),{up:{x:(t=this.camera).up[0],y:t.up[1],z:t.up[2]},center:{x:t.center[0],y:t.center[1],z:t.center[2]},eye:{x:t.eye[0],y:t.eye[1],z:t.eye[2]},projection:{type:!0===t._ortho?\"orthographic\":\"perspective\"}}},w.setViewport=function(t){var e,r=t.camera;this.camera.lookAt.apply(this,[[(e=r).eye.x,e.eye.y,e.eye.z],[e.center.x,e.center.y,e.center.z],[e.up.x,e.up.y,e.up.z]]),this.glplot.setAspectratio(t.aspectratio),\"orthographic\"===r.projection.type!==this.camera._ortho&&(this.glplot.redraw(),this.glplot.clearRGBA(),this.glplot.dispose(),this.initializeGLPlot())},w.isCameraChanged=function(t){var e=this.getCamera(),r=f.nestedProperty(t,this.id+\".camera\").get();function n(t,e,r,n){var i=[\"up\",\"center\",\"eye\"],a=[\"x\",\"y\",\"z\"];return e[i[r]]&&t[i[r]][a[n]]===e[i[r]][a[n]]}var i=!1;if(void 0===r)i=!0;else{for(var a=0;a<3;a++)for(var o=0;o<3;o++)if(!n(e,r,a,o)){i=!0;break}(!r.projection||e.projection&&e.projection.type!==r.projection.type)&&(i=!0)}return i},w.isAspectChanged=function(t){var e=this.glplot.getAspectratio(),r=f.nestedProperty(t,this.id+\".aspectratio\").get();return void 0===r||r.x!==e.x||r.y!==e.y||r.z!==e.z},w.saveLayout=function(t){var e,r,n,i,a,o,s=this.fullLayout,l=this.isCameraChanged(t),c=this.isAspectChanged(t),h=l||c;if(h){var p={};if(l&&(e=this.getCamera(),n=(r=f.nestedProperty(t,this.id+\".camera\")).get(),p[this.id+\".camera\"]=n),c&&(i=this.glplot.getAspectratio(),o=(a=f.nestedProperty(t,this.id+\".aspectratio\")).get(),p[this.id+\".aspectratio\"]=o),u.call(\"_storeDirectGUIEdit\",t,s._preGUI,p),l)r.set(e),f.nestedProperty(s,this.id+\".camera\").set(e);if(c)a.set(i),f.nestedProperty(s,this.id+\".aspectratio\").set(i),this.glplot.redraw()}return h},w.updateFx=function(t,e){var r=this.camera;if(r)if(\"orbit\"===t)r.mode=\"orbit\",r.keyBindingMode=\"rotate\";else if(\"turntable\"===t){r.up=[0,0,1],r.mode=\"turntable\",r.keyBindingMode=\"rotate\";var n=this.graphDiv,i=n._fullLayout,a=this.fullSceneLayout.camera,o=a.up.x,s=a.up.y,l=a.up.z;if(l/Math.sqrt(o*o+s*s+l*l)<.999){var c=this.id+\".camera.up\",h={x:0,y:0,z:1},p={};p[c]=h;var d=n.layout;u.call(\"_storeDirectGUIEdit\",d,i._preGUI,p),a.up=h,f.nestedProperty(d,c).set(h)}}else r.keyBindingMode=t;this.fullSceneLayout.hovermode=e},w.toImage=function(t){t||(t=\"png\"),this.staticMode&&this.container.appendChild(n),this.glplot.redraw();var e=this.glplot.gl,r=e.drawingBufferWidth,i=e.drawingBufferHeight;e.bindFramebuffer(e.FRAMEBUFFER,null);var a=new Uint8Array(r*i*4);e.readPixels(0,0,r,i,e.RGBA,e.UNSIGNED_BYTE,a),function(t,e,r){for(var n=0,i=r-1;n0)for(var s=255/o,l=0;l<3;++l)t[a+l]=Math.min(s*t[a+l],255)}}(a,r,i);var o=document.createElement(\"canvas\");o.width=r,o.height=i;var s,l=o.getContext(\"2d\"),c=l.createImageData(r,i);switch(c.data.set(a),l.putImageData(c,0,0),t){case\"jpeg\":s=o.toDataURL(\"image/jpeg\");break;case\"webp\":s=o.toDataURL(\"image/webp\");break;default:s=o.toDataURL(\"image/png\")}return this.staticMode&&this.container.removeChild(n),s},w.setConvert=function(){for(var t=0;t<3;t++){var e=this.fullSceneLayout[k[t]];p.setConvert(e,this.fullLayout),e.setScale=f.noop}},w.make4thDimension=function(){var t=this.graphDiv._fullLayout;this._mockAxis={type:\"linear\",showexponent:\"all\",exponentformat:\"B\"},p.setConvert(this._mockAxis,t)},e.exports=_},{\"../../../stackgl_modules\":1120,\"../../components/fx\":406,\"../../lib\":503,\"../../lib/show_no_webgl_msg\":525,\"../../lib/str2rgbarray\":528,\"../../plots/cartesian/axes\":554,\"../../registry\":638,\"./layout/convert\":602,\"./layout/spikes\":605,\"./layout/tick_marks\":606,\"./project\":607,\"has-passive-events\":229,\"webgl-context\":331}],609:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,n){n=n||t.length;for(var i=new Array(n),a=0;aOpenStreetMap
contributors',a=['\\xa9 Carto',i].join(\" \"),o=['Map tiles by Stamen Design','under CC BY 3.0',\"|\",'Data by OpenStreetMap contributors','under ODbL'].join(\" \"),s={\"open-street-map\":{id:\"osm\",version:8,sources:{\"plotly-osm-tiles\":{type:\"raster\",attribution:i,tiles:[\"https://a.tile.openstreetmap.org/{z}/{x}/{y}.png\",\"https://b.tile.openstreetmap.org/{z}/{x}/{y}.png\"],tileSize:256}},layers:[{id:\"plotly-osm-tiles\",type:\"raster\",source:\"plotly-osm-tiles\",minzoom:0,maxzoom:22}]},\"white-bg\":{id:\"white-bg\",version:8,sources:{},layers:[{id:\"white-bg\",type:\"background\",paint:{\"background-color\":\"#FFFFFF\"},minzoom:0,maxzoom:22}]},\"carto-positron\":{id:\"carto-positron\",version:8,sources:{\"plotly-carto-positron\":{type:\"raster\",attribution:a,tiles:[\"https://cartodb-basemaps-c.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png\"],tileSize:256}},layers:[{id:\"plotly-carto-positron\",type:\"raster\",source:\"plotly-carto-positron\",minzoom:0,maxzoom:22}]},\"carto-darkmatter\":{id:\"carto-darkmatter\",version:8,sources:{\"plotly-carto-darkmatter\":{type:\"raster\",attribution:a,tiles:[\"https://cartodb-basemaps-c.global.ssl.fastly.net/dark_all/{z}/{x}/{y}.png\"],tileSize:256}},layers:[{id:\"plotly-carto-darkmatter\",type:\"raster\",source:\"plotly-carto-darkmatter\",minzoom:0,maxzoom:22}]},\"stamen-terrain\":{id:\"stamen-terrain\",version:8,sources:{\"plotly-stamen-terrain\":{type:\"raster\",attribution:o,tiles:[\"https://stamen-tiles.a.ssl.fastly.net/terrain/{z}/{x}/{y}.png\"],tileSize:256}},layers:[{id:\"plotly-stamen-terrain\",type:\"raster\",source:\"plotly-stamen-terrain\",minzoom:0,maxzoom:22}]},\"stamen-toner\":{id:\"stamen-toner\",version:8,sources:{\"plotly-stamen-toner\":{type:\"raster\",attribution:o,tiles:[\"https://stamen-tiles.a.ssl.fastly.net/toner/{z}/{x}/{y}.png\"],tileSize:256}},layers:[{id:\"plotly-stamen-toner\",type:\"raster\",source:\"plotly-stamen-toner\",minzoom:0,maxzoom:22}]},\"stamen-watercolor\":{id:\"stamen-watercolor\",version:8,sources:{\"plotly-stamen-watercolor\":{type:\"raster\",attribution:['Map tiles by Stamen Design','under CC BY 3.0',\"|\",'Data by OpenStreetMap contributors','under CC BY SA'].join(\" \"),tiles:[\"https://stamen-tiles.a.ssl.fastly.net/watercolor/{z}/{x}/{y}.png\"],tileSize:256}},layers:[{id:\"plotly-stamen-watercolor\",type:\"raster\",source:\"plotly-stamen-watercolor\",minzoom:0,maxzoom:22}]}},l=n(s);e.exports={requiredVersion:\"1.10.1\",styleUrlPrefix:\"mapbox://styles/mapbox/\",styleUrlSuffix:\"v9\",styleValuesMapbox:[\"basic\",\"streets\",\"outdoors\",\"light\",\"dark\",\"satellite\",\"satellite-streets\"],styleValueDflt:\"basic\",stylesNonMapbox:s,styleValuesNonMapbox:l,traceLayerPrefix:\"plotly-trace-layer-\",layoutLayerPrefix:\"plotly-layout-layer-\",wrongVersionErrorMsg:[\"Your custom plotly.js bundle is not using the correct mapbox-gl version\",\"Please install mapbox-gl@1.10.1.\"].join(\"\\n\"),noAccessTokenErrorMsg:[\"Missing Mapbox access token.\",\"Mapbox trace type require a Mapbox access token to be registered.\",\"For example:\",\" Plotly.newPlot(gd, data, layout, { mapboxAccessToken: 'my-access-token' });\",\"More info here: https://www.mapbox.com/help/define-access-token/\"].join(\"\\n\"),missingStyleErrorMsg:[\"No valid mapbox style found, please set `mapbox.style` to one of:\",l.join(\", \"),\"or register a Mapbox access token to use a Mapbox-served style.\"].join(\"\\n\"),multipleTokensErrorMsg:[\"Set multiple mapbox access token across different mapbox subplot,\",\"using first token found as mapbox-gl does not allow multipleaccess tokens on the same page.\"].join(\"\\n\"),mapOnErrorMsg:\"Mapbox error.\",mapboxLogo:{path0:\"m 10.5,1.24 c -5.11,0 -9.25,4.15 -9.25,9.25 0,5.1 4.15,9.25 9.25,9.25 5.1,0 9.25,-4.15 9.25,-9.25 0,-5.11 -4.14,-9.25 -9.25,-9.25 z m 4.39,11.53 c -1.93,1.93 -4.78,2.31 -6.7,2.31 -0.7,0 -1.41,-0.05 -2.1,-0.16 0,0 -1.02,-5.64 2.14,-8.81 0.83,-0.83 1.95,-1.28 3.13,-1.28 1.27,0 2.49,0.51 3.39,1.42 1.84,1.84 1.89,4.75 0.14,6.52 z\",path1:\"M 10.5,-0.01 C 4.7,-0.01 0,4.7 0,10.49 c 0,5.79 4.7,10.5 10.5,10.5 5.8,0 10.5,-4.7 10.5,-10.5 C 20.99,4.7 16.3,-0.01 10.5,-0.01 Z m 0,19.75 c -5.11,0 -9.25,-4.15 -9.25,-9.25 0,-5.1 4.14,-9.26 9.25,-9.26 5.11,0 9.25,4.15 9.25,9.25 0,5.13 -4.14,9.26 -9.25,9.26 z\",path2:\"M 14.74,6.25 C 12.9,4.41 9.98,4.35 8.23,6.1 5.07,9.27 6.09,14.91 6.09,14.91 c 0,0 5.64,1.02 8.81,-2.14 C 16.64,11 16.59,8.09 14.74,6.25 Z m -2.27,4.09 -0.91,1.87 -0.9,-1.87 -1.86,-0.91 1.86,-0.9 0.9,-1.87 0.91,1.87 1.86,0.9 z\",polygon:\"11.56,12.21 10.66,10.34 8.8,9.43 10.66,8.53 11.56,6.66 12.47,8.53 14.33,9.43 12.47,10.34\"},styleRules:{map:\"overflow:hidden;position:relative;\",\"missing-css\":\"display:none;\",canary:\"background-color:salmon;\",\"ctrl-bottom-left\":\"position: absolute; pointer-events: none; z-index: 2; bottom: 0; left: 0;\",\"ctrl-bottom-right\":\"position: absolute; pointer-events: none; z-index: 2; right: 0; bottom: 0;\",ctrl:\"clear: both; pointer-events: auto; transform: translate(0, 0);\",\"ctrl-attrib.mapboxgl-compact .mapboxgl-ctrl-attrib-inner\":\"display: none;\",\"ctrl-attrib.mapboxgl-compact:hover .mapboxgl-ctrl-attrib-inner\":\"display: block; margin-top:2px\",\"ctrl-attrib.mapboxgl-compact:hover\":\"padding: 2px 24px 2px 4px; visibility: visible; margin-top: 6px;\",\"ctrl-attrib.mapboxgl-compact::after\":'content: \"\"; cursor: pointer; position: absolute; background-image: url(\\'data:image/svg+xml;charset=utf-8,%3Csvg viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"%3E %3Cpath fill=\"%23333333\" fill-rule=\"evenodd\" d=\"M4,10a6,6 0 1,0 12,0a6,6 0 1,0 -12,0 M9,7a1,1 0 1,0 2,0a1,1 0 1,0 -2,0 M9,10a1,1 0 1,1 2,0l0,3a1,1 0 1,1 -2,0\"/%3E %3C/svg%3E\\'); background-color: rgba(255, 255, 255, 0.5); width: 24px; height: 24px; box-sizing: border-box; border-radius: 12px;',\"ctrl-attrib.mapboxgl-compact\":\"min-height: 20px; padding: 0; margin: 10px; position: relative; background-color: #fff; border-radius: 3px 12px 12px 3px;\",\"ctrl-bottom-right > .mapboxgl-ctrl-attrib.mapboxgl-compact::after\":\"bottom: 0; right: 0\",\"ctrl-bottom-left > .mapboxgl-ctrl-attrib.mapboxgl-compact::after\":\"bottom: 0; left: 0\",\"ctrl-bottom-left .mapboxgl-ctrl\":\"margin: 0 0 10px 10px; float: left;\",\"ctrl-bottom-right .mapboxgl-ctrl\":\"margin: 0 10px 10px 0; float: right;\",\"ctrl-attrib\":\"color: rgba(0, 0, 0, 0.75); text-decoration: none; font-size: 12px\",\"ctrl-attrib a\":\"color: rgba(0, 0, 0, 0.75); text-decoration: none; font-size: 12px\",\"ctrl-attrib a:hover\":\"color: inherit; text-decoration: underline;\",\"ctrl-attrib .mapbox-improve-map\":\"font-weight: bold; margin-left: 2px;\",\"attrib-empty\":\"display: none;\",\"ctrl-logo\":'display:block; width: 21px; height: 21px; background-image: url(\\'data:image/svg+xml;charset=utf-8,%3C?xml version=\"1.0\" encoding=\"utf-8\"?%3E %3Csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 21 21\" style=\"enable-background:new 0 0 21 21;\" xml:space=\"preserve\"%3E%3Cg transform=\"translate(0,0.01)\"%3E%3Cpath d=\"m 10.5,1.24 c -5.11,0 -9.25,4.15 -9.25,9.25 0,5.1 4.15,9.25 9.25,9.25 5.1,0 9.25,-4.15 9.25,-9.25 0,-5.11 -4.14,-9.25 -9.25,-9.25 z m 4.39,11.53 c -1.93,1.93 -4.78,2.31 -6.7,2.31 -0.7,0 -1.41,-0.05 -2.1,-0.16 0,0 -1.02,-5.64 2.14,-8.81 0.83,-0.83 1.95,-1.28 3.13,-1.28 1.27,0 2.49,0.51 3.39,1.42 1.84,1.84 1.89,4.75 0.14,6.52 z\" style=\"opacity:0.9;fill:%23ffffff;enable-background:new\" class=\"st0\"/%3E%3Cpath d=\"M 10.5,-0.01 C 4.7,-0.01 0,4.7 0,10.49 c 0,5.79 4.7,10.5 10.5,10.5 5.8,0 10.5,-4.7 10.5,-10.5 C 20.99,4.7 16.3,-0.01 10.5,-0.01 Z m 0,19.75 c -5.11,0 -9.25,-4.15 -9.25,-9.25 0,-5.1 4.14,-9.26 9.25,-9.26 5.11,0 9.25,4.15 9.25,9.25 0,5.13 -4.14,9.26 -9.25,9.26 z\" style=\"opacity:0.35;enable-background:new\" class=\"st1\"/%3E%3Cpath d=\"M 14.74,6.25 C 12.9,4.41 9.98,4.35 8.23,6.1 5.07,9.27 6.09,14.91 6.09,14.91 c 0,0 5.64,1.02 8.81,-2.14 C 16.64,11 16.59,8.09 14.74,6.25 Z m -2.27,4.09 -0.91,1.87 -0.9,-1.87 -1.86,-0.91 1.86,-0.9 0.9,-1.87 0.91,1.87 1.86,0.9 z\" style=\"opacity:0.35;enable-background:new\" class=\"st1\"/%3E%3Cpolygon points=\"11.56,12.21 10.66,10.34 8.8,9.43 10.66,8.53 11.56,6.66 12.47,8.53 14.33,9.43 12.47,10.34 \" style=\"opacity:0.9;fill:%23ffffff;enable-background:new\" class=\"st0\"/%3E%3C/g%3E%3C/svg%3E\\')'}}},{\"../../lib/sort_object_keys\":526}],612:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t,e){var r=t.split(\" \"),i=r[0],a=r[1],o=n.isArrayOrTypedArray(e)?n.mean(e):e,s=.5+o/100,l=1.5+o/100,c=[\"\",\"\"],u=[0,0];switch(i){case\"top\":c[0]=\"top\",u[1]=-l;break;case\"bottom\":c[0]=\"bottom\",u[1]=l}switch(a){case\"left\":c[1]=\"right\",u[0]=-s;break;case\"right\":c[1]=\"left\",u[0]=s}return{anchor:c[0]&&c[1]?c.join(\"-\"):c[0]?c[0]:c[1]?c[1]:\"center\",offset:u}}},{\"../../lib\":503}],613:[function(t,e,r){\"use strict\";var n=t(\"mapbox-gl/dist/mapbox-gl-unminified\"),i=t(\"../../lib\"),a=i.strTranslate,o=i.strScale,s=t(\"../../plots/get_data\").getSubplotCalcData,l=t(\"../../constants/xmlns_namespaces\"),c=t(\"@plotly/d3\"),u=t(\"../../components/drawing\"),f=t(\"../../lib/svg_text_utils\"),h=t(\"./mapbox\"),p=r.constants=t(\"./constants\");function d(t){return\"string\"==typeof t&&(-1!==p.styleValuesMapbox.indexOf(t)||0===t.indexOf(\"mapbox://\"))}r.name=\"mapbox\",r.attr=\"subplot\",r.idRoot=\"mapbox\",r.idRegex=r.attrRegex=i.counterRegex(\"mapbox\"),r.attributes={subplot:{valType:\"subplotid\",dflt:\"mapbox\",editType:\"calc\"}},r.layoutAttributes=t(\"./layout_attributes\"),r.supplyLayoutDefaults=t(\"./layout_defaults\"),r.plot=function(t){var e=t._fullLayout,r=t.calcdata,a=e._subplots.mapbox;if(n.version!==p.requiredVersion)throw new Error(p.wrongVersionErrorMsg);var o=function(t,e){var r=t._fullLayout;if(\"\"===t._context.mapboxAccessToken)return\"\";for(var n=[],a=[],o=!1,s=!1,l=0;l1&&i.warn(p.multipleTokensErrorMsg),n[0]):(a.length&&i.log([\"Listed mapbox access token(s)\",a.join(\",\"),\"but did not use a Mapbox map style, ignoring token(s).\"].join(\" \")),\"\")}(t,a);n.accessToken=o;for(var l=0;l_/2){var w=v.split(\"|\").join(\"
\");x.text(w).attr(\"data-unformatted\",w).call(f.convertToTspans,t),b=u.bBox(x.node())}x.attr(\"transform\",a(-3,8-b.height)),y.insert(\"rect\",\".static-attribution\").attr({x:-b.width-6,y:-b.height-3,width:b.width+6,height:b.height+3,fill:\"rgba(255, 255, 255, 0.75)\"});var T=1;b.width+6>_&&(T=_/(b.width+6));var k=[n.l+n.w*h.x[1],n.t+n.h*(1-h.y[0])];y.attr(\"transform\",a(k[0],k[1])+o(T))}},r.updateFx=function(t){for(var e=t._fullLayout,r=e._subplots.mapbox,n=0;n0){for(var r=0;r0}function u(t){var e={},r={};switch(t.type){case\"circle\":n.extendFlat(r,{\"circle-radius\":t.circle.radius,\"circle-color\":t.color,\"circle-opacity\":t.opacity});break;case\"line\":n.extendFlat(r,{\"line-width\":t.line.width,\"line-color\":t.color,\"line-opacity\":t.opacity,\"line-dasharray\":t.line.dash});break;case\"fill\":n.extendFlat(r,{\"fill-color\":t.color,\"fill-outline-color\":t.fill.outlinecolor,\"fill-opacity\":t.opacity});break;case\"symbol\":var i=t.symbol,o=a(i.textposition,i.iconsize);n.extendFlat(e,{\"icon-image\":i.icon+\"-15\",\"icon-size\":i.iconsize/10,\"text-field\":i.text,\"text-size\":i.textfont.size,\"text-anchor\":o.anchor,\"text-offset\":o.offset,\"symbol-placement\":i.placement}),n.extendFlat(r,{\"icon-color\":t.color,\"text-color\":i.textfont.color,\"text-opacity\":t.opacity});break;case\"raster\":n.extendFlat(r,{\"raster-fade-duration\":0,\"raster-opacity\":t.opacity})}return{layout:e,paint:r}}l.update=function(t){this.visible?this.needsNewImage(t)?this.updateImage(t):this.needsNewSource(t)?(this.removeLayer(),this.updateSource(t),this.updateLayer(t)):this.needsNewLayer(t)?this.updateLayer(t):this.updateStyle(t):(this.updateSource(t),this.updateLayer(t)),this.visible=c(t)},l.needsNewImage=function(t){return this.subplot.map.getSource(this.idSource)&&\"image\"===this.sourceType&&\"image\"===t.sourcetype&&(this.source!==t.source||JSON.stringify(this.coordinates)!==JSON.stringify(t.coordinates))},l.needsNewSource=function(t){return this.sourceType!==t.sourcetype||JSON.stringify(this.source)!==JSON.stringify(t.source)||this.layerType!==t.type},l.needsNewLayer=function(t){return this.layerType!==t.type||this.below!==this.subplot.belowLookup[\"layout-\"+this.index]},l.lookupBelow=function(){return this.subplot.belowLookup[\"layout-\"+this.index]},l.updateImage=function(t){this.subplot.map.getSource(this.idSource).updateImage({url:t.source,coordinates:t.coordinates});var e=this.findFollowingMapboxLayerId(this.lookupBelow());null!==e&&this.subplot.map.moveLayer(this.idLayer,e)},l.updateSource=function(t){var e=this.subplot.map;if(e.getSource(this.idSource)&&e.removeSource(this.idSource),this.sourceType=t.sourcetype,this.source=t.source,c(t)){var r=function(t){var e,r=t.sourcetype,n=t.source,a={type:r};\"geojson\"===r?e=\"data\":\"vector\"===r?e=\"string\"==typeof n?\"url\":\"tiles\":\"raster\"===r?(e=\"tiles\",a.tileSize=256):\"image\"===r&&(e=\"url\",a.coordinates=t.coordinates);a[e]=n,t.sourceattribution&&(a.attribution=i(t.sourceattribution));return a}(t);e.addSource(this.idSource,r)}},l.findFollowingMapboxLayerId=function(t){if(\"traces\"===t)for(var e=this.subplot.getMapLayers(),r=0;r1)for(r=0;r-1&&v(e.originalEvent,n,[r.xaxis],[r.yaxis],r.id,t),i.indexOf(\"event\")>-1&&c.click(n,e.originalEvent)}}},_.updateFx=function(t){var e=this,r=e.map,n=e.gd;if(!e.isStatic){var a,o=t.dragmode;a=f(o)?function(t,r){(t.range={})[e.id]=[c([r.xmin,r.ymin]),c([r.xmax,r.ymax])]}:function(t,r,n){(t.lassoPoints={})[e.id]=n.filtered.map(c)};var s=e.dragOptions;e.dragOptions=i.extendDeep(s||{},{dragmode:t.dragmode,element:e.div,gd:n,plotinfo:{id:e.id,domain:t[e.id].domain,xaxis:e.xaxis,yaxis:e.yaxis,fillRangeItems:a},xaxes:[e.xaxis],yaxes:[e.yaxis],subplot:e.id}),r.off(\"click\",e.onClickInPanHandler),p(o)||h(o)?(r.dragPan.disable(),r.on(\"zoomstart\",e.clearSelect),e.dragOptions.prepFn=function(t,r,n){d(t,r,n,e.dragOptions,o)},l.init(e.dragOptions)):(r.dragPan.enable(),r.off(\"zoomstart\",e.clearSelect),e.div.onmousedown=null,e.onClickInPanHandler=e.onClickInPanFn(e.dragOptions),r.on(\"click\",e.onClickInPanHandler))}function c(t){var r=e.map.unproject(t);return[r.lng,r.lat]}},_.updateFramework=function(t){var e=t[this.id].domain,r=t._size,n=this.div.style;n.width=r.w*(e.x[1]-e.x[0])+\"px\",n.height=r.h*(e.y[1]-e.y[0])+\"px\",n.left=r.l+e.x[0]*r.w+\"px\",n.top=r.t+(1-e.y[1])*r.h+\"px\",this.xaxis._offset=r.l+e.x[0]*r.w,this.xaxis._length=r.w*(e.x[1]-e.x[0]),this.yaxis._offset=r.t+(1-e.y[1])*r.h,this.yaxis._length=r.h*(e.y[1]-e.y[0])},_.updateLayers=function(t){var e,r=t[this.id].layers,n=this.layerList;if(r.length!==n.length){for(e=0;e=e.width-20?(a[\"text-anchor\"]=\"start\",a.x=5):(a[\"text-anchor\"]=\"end\",a.x=e._paper.attr(\"width\")-7),r.attr(a);var o=r.select(\".js-link-to-tool\"),s=r.select(\".js-link-spacer\"),l=r.select(\".js-sourcelinks\");t._context.showSources&&t._context.showSources(t),t._context.showLink&&function(t,e){e.text(\"\");var r=e.append(\"a\").attr({\"xlink:xlink:href\":\"#\",class:\"link--impt link--embedview\",\"font-weight\":\"bold\"}).text(t._context.linkText+\" \"+String.fromCharCode(187));if(t._context.sendData)r.on(\"click\",(function(){b.sendDataToCloud(t)}));else{var n=window.location.pathname.split(\"/\"),i=window.location.search;r.attr({\"xlink:xlink:show\":\"new\",\"xlink:xlink:href\":\"/\"+n[2].split(\".\")[0]+\"/\"+n[1]+i})}}(t,o),s.text(o.text()&&l.text()?\" - \":\"\")}},b.sendDataToCloud=function(t){var e=(window.PLOTLYENV||{}).BASE_URL||t._context.plotlyServerURL;if(e){t.emit(\"plotly_beforeexport\");var r=n.select(t).append(\"div\").attr(\"id\",\"hiddenform\").style(\"display\",\"none\"),i=r.append(\"form\").attr({action:e+\"/external\",method:\"post\",target:\"_blank\"});return i.append(\"input\").attr({type:\"text\",name:\"data\"}).node().value=b.graphJson(t,!1,\"keepdata\"),i.node().submit(),r.remove(),t.emit(\"plotly_afterexport\"),!1}};var T=[\"days\",\"shortDays\",\"months\",\"shortMonths\",\"periods\",\"dateTime\",\"date\",\"time\",\"decimal\",\"thousands\",\"grouping\",\"currency\"],k=[\"year\",\"month\",\"dayMonth\",\"dayMonthYear\"];function A(t,e){var r=t._context.locale;r||(r=\"en-US\");var n=!1,i={};function a(t){for(var r=!0,a=0;a1&&z.length>1){for(s.getComponentMethod(\"grid\",\"sizeDefaults\")(c,l),o=0;o15&&z.length>15&&0===l.shapes.length&&0===l.images.length,b.linkSubplots(h,l,f,n),b.cleanPlot(h,l,f,n);var N=!(!n._has||!n._has(\"gl2d\")),j=!(!l._has||!l._has(\"gl2d\")),U=!(!n._has||!n._has(\"cartesian\"))||N,V=!(!l._has||!l._has(\"cartesian\"))||j;U&&!V?n._bgLayer.remove():V&&!U&&(l._shouldCreateBgLayer=!0),n._zoomlayer&&!t._dragging&&d({_fullLayout:n}),function(t,e){var r,n=[];e.meta&&(r=e._meta={meta:e.meta,layout:{meta:e.meta}});for(var i=0;i0){var f=1-2*s;n=Math.round(f*n),i=Math.round(f*i)}}var h=b.layoutAttributes.width.min,p=b.layoutAttributes.height.min;n1,g=!e.height&&Math.abs(r.height-i)>1;(g||d)&&(d&&(r.width=n),g&&(r.height=i)),t._initialAutoSize||(t._initialAutoSize={width:n,height:i}),b.sanitizeMargins(r)},b.supplyLayoutModuleDefaults=function(t,e,r,n){var i,a,o,l=s.componentsRegistry,c=e._basePlotModules,f=s.subplotsRegistry.cartesian;for(i in l)(o=l[i]).includeBasePlot&&o.includeBasePlot(t,e);for(var h in c.length||c.push(f),e._has(\"cartesian\")&&(s.getComponentMethod(\"grid\",\"contentDefaults\")(t,e),f.finalizeSubplots(t,e)),e._subplots)e._subplots[h].sort(u.subplotSort);for(a=0;a1&&(r.l/=g,r.r/=g)}if(f){var m=(r.t+r.b)/f;m>1&&(r.t/=m,r.b/=m)}var v=void 0!==r.xl?r.xl:r.x,y=void 0!==r.xr?r.xr:r.x,x=void 0!==r.yt?r.yt:r.y,_=void 0!==r.yb?r.yb:r.y;h[e]={l:{val:v,size:r.l+d},r:{val:y,size:r.r+d},b:{val:_,size:r.b+d},t:{val:x,size:r.t+d}},p[e]=1}else delete h[e],delete p[e];if(!n._replotting)return b.doAutoMargin(t)}},b.doAutoMargin=function(t){var e=t._fullLayout,r=e.width,n=e.height;e._size||(e._size={}),C(e);var i=e._size,a=e.margin,l=u.extendFlat({},i),c=a.l,f=a.r,h=a.t,d=a.b,g=e._pushmargin,m=e._pushmarginIds;if(!1!==e.margin.autoexpand){for(var v in g)m[v]||delete g[v];for(var y in g.base={l:{val:0,size:c},r:{val:1,size:f},t:{val:1,size:h},b:{val:0,size:d}},g){var x=g[y].l||{},_=g[y].b||{},w=x.val,T=x.size,k=_.val,A=_.size;for(var M in g){if(o(T)&&g[M].r){var S=g[M].r.val,E=g[M].r.size;if(S>w){var L=(T*S+(E-r)*w)/(S-w),P=(E*(1-w)+(T-r)*(1-S))/(S-w);L+P>c+f&&(c=L,f=P)}}if(o(A)&&g[M].t){var I=g[M].t.val,O=g[M].t.size;if(I>k){var z=(A*I+(O-n)*k)/(I-k),D=(O*(1-k)+(A-n)*(1-I))/(I-k);z+D>d+h&&(d=z,h=D)}}}}}var R=u.constrain(r-a.l-a.r,2,64),F=u.constrain(n-a.t-a.b,2,64),B=Math.max(0,r-R),N=Math.max(0,n-F);if(B){var j=(c+f)/B;j>1&&(c/=j,f/=j)}if(N){var U=(d+h)/N;U>1&&(d/=U,h/=U)}if(i.l=Math.round(c),i.r=Math.round(f),i.t=Math.round(h),i.b=Math.round(d),i.p=Math.round(a.pad),i.w=Math.round(r)-i.l-i.r,i.h=Math.round(n)-i.t-i.b,!e._replotting&&b.didMarginChange(l,i)){\"_redrawFromAutoMarginCount\"in e?e._redrawFromAutoMarginCount++:e._redrawFromAutoMarginCount=1;var V=3*(1+Object.keys(m).length);if(e._redrawFromAutoMarginCount0&&(t._transitioningWithDuration=!0),t._transitionData._interruptCallbacks.push((function(){n=!0})),r.redraw&&t._transitionData._interruptCallbacks.push((function(){return s.call(\"redraw\",t)})),t._transitionData._interruptCallbacks.push((function(){t.emit(\"plotly_transitioninterrupted\",[])}));var a=0,o=0;function l(){return a++,function(){o++,n||o!==a||function(e){if(!t._transitionData)return;(function(t){if(t)for(;t.length;)t.shift()})(t._transitionData._interruptCallbacks),Promise.resolve().then((function(){if(r.redraw)return s.call(\"redraw\",t)})).then((function(){t._transitioning=!1,t._transitioningWithDuration=!1,t.emit(\"plotly_transitioned\",[])})).then(e)}(i)}}r.runFn(l),setTimeout(l())}))}],a=u.syncOrAsync(i,t);return a&&a.then||(a=Promise.resolve()),a.then((function(){return t}))}b.didMarginChange=function(t,e){for(var r=0;r1)return!0}return!1},b.graphJson=function(t,e,r,n,i,a){(i&&e&&!t._fullData||i&&!e&&!t._fullLayout)&&b.supplyDefaults(t);var o=i?t._fullData:t.data,s=i?t._fullLayout:t.layout,l=(t._transitionData||{})._frames;function c(t,e){if(\"function\"==typeof t)return e?\"_function_\":null;if(u.isPlainObject(t)){var n,i={};return Object.keys(t).sort().forEach((function(a){if(-1===[\"_\",\"[\"].indexOf(a.charAt(0)))if(\"function\"!=typeof t[a]){if(\"keepdata\"===r){if(\"src\"===a.substr(a.length-3))return}else if(\"keepstream\"===r){if(\"string\"==typeof(n=t[a+\"src\"])&&n.indexOf(\":\")>0&&!u.isPlainObject(t.stream))return}else if(\"keepall\"!==r&&\"string\"==typeof(n=t[a+\"src\"])&&n.indexOf(\":\")>0)return;i[a]=c(t[a],e)}else e&&(i[a]=\"_function\")})),i}return Array.isArray(t)?t.map((function(t){return c(t,e)})):u.isTypedArray(t)?u.simpleMap(t,u.identity):u.isJSDate(t)?u.ms2DateTimeLocal(+t):t}var f={data:(o||[]).map((function(t){var r=c(t);return e&&delete r.fit,r}))};if(!e&&(f.layout=c(s),i)){var h=s._size;f.layout.computed={margin:{b:h.b,l:h.l,r:h.r,t:h.t}}}return l&&(f.frames=c(l)),a&&(f.config=c(t._context,!0)),\"object\"===n?f:JSON.stringify(f)},b.modifyFrames=function(t,e){var r,n,i,a=t._transitionData._frames,o=t._transitionData._frameHash;for(r=0;r=0;a--)if(s[a].enabled){r._indexToPoints=s[a]._indexToPoints;break}n&&n.calc&&(o=n.calc(t,r))}Array.isArray(o)&&o[0]||(o=[{x:h,y:h}]),o[0].t||(o[0].t={}),o[0].trace=r,d[e]=o}}for(z(o,c,f),i=0;i1e-10?t:0}function h(t,e,r){e=e||0,r=r||0;for(var n=t.length,i=new Array(n),a=0;a0?r:1/0})),i=n.mod(r+1,e.length);return[e[r],e[i]]},findIntersectionXY:c,findXYatLength:function(t,e,r,n){var i=-e*r,a=e*e+1,o=2*(e*i-r),s=i*i+r*r-t*t,l=Math.sqrt(o*o-4*a*s),c=(-o+l)/(2*a),u=(-o-l)/(2*a);return[[c,e*c+i+n],[u,e*u+i+n]]},clampTiny:f,pathPolygon:function(t,e,r,n,i,a){return\"M\"+h(u(t,e,r,n),i,a).join(\"L\")},pathPolygonAnnulus:function(t,e,r,n,i,a,o){var s,l;t=90||s>90&&l>=450?1:u<=0&&h<=0?0:Math.max(u,h);e=s<=180&&l>=180||s>180&&l>=540?-1:c>=0&&f>=0?0:Math.min(c,f);r=s<=270&&l>=270||s>270&&l>=630?-1:u>=0&&h>=0?0:Math.min(u,h);n=l>=360?1:c<=0&&f<=0?0:Math.max(c,f);return[e,r,n,i]}(p),b=x[2]-x[0],_=x[3]-x[1],w=h/f,T=Math.abs(_/b);w>T?(d=f,y=(h-(g=f*T))/n.h/2,m=[o[0],o[1]],v=[s[0]+y,s[1]-y]):(g=h,y=(f-(d=h/T))/n.w/2,m=[o[0]+y,o[1]-y],v=[s[0],s[1]]),this.xLength2=d,this.yLength2=g,this.xDomain2=m,this.yDomain2=v;var k,A=this.xOffset2=n.l+n.w*m[0],M=this.yOffset2=n.t+n.h*(1-v[1]),S=this.radius=d/b,E=this.innerRadius=this.getHole(e)*S,L=this.cx=A-S*x[0],C=this.cy=M+S*x[3],P=this.cxx=L-A,I=this.cyy=C-M,O=i.side;\"counterclockwise\"===O?(k=O,O=\"top\"):\"clockwise\"===O&&(k=O,O=\"bottom\"),this.radialAxis=this.mockAxis(t,e,i,{_id:\"x\",side:O,_trueSide:k,domain:[E/n.w,S/n.w]}),this.angularAxis=this.mockAxis(t,e,a,{side:\"right\",domain:[0,Math.PI],autorange:!1}),this.doAutoRange(t,e),this.updateAngularAxis(t,e),this.updateRadialAxis(t,e),this.updateRadialAxisTitle(t,e),this.xaxis=this.mockCartesianAxis(t,e,{_id:\"x\",domain:m}),this.yaxis=this.mockCartesianAxis(t,e,{_id:\"y\",domain:v});var z=this.pathSubplot();this.clipPaths.forTraces.select(\"path\").attr(\"d\",z).attr(\"transform\",l(P,I)),r.frontplot.attr(\"transform\",l(A,M)).call(u.setClipUrl,this._hasClipOnAxisFalse?null:this.clipIds.forTraces,this.gd),r.bg.attr(\"d\",z).attr(\"transform\",l(L,C)).call(c.fill,e.bgcolor)},N.mockAxis=function(t,e,r,n){var i=o.extendFlat({},r,n);return d(i,e,t),i},N.mockCartesianAxis=function(t,e,r){var n=this,i=n.isSmith,a=r._id,s=o.extendFlat({type:\"linear\"},r);p(s,t);var l={x:[0,2],y:[1,3]};return s.setRange=function(){var t=n.sectorBBox,r=l[a],i=n.radialAxis._rl,o=(i[1]-i[0])/(1-n.getHole(e));s.range=[t[r[0]]*o,t[r[1]]*o]},s.isPtWithinRange=\"x\"!==a||i?function(){return!0}:function(t){return n.isPtInside(t)},s.setRange(),s.setScale(),s},N.doAutoRange=function(t,e){var r=this.gd,n=this.radialAxis,i=this.getRadial(e);g(r,n);var a=n.range;i.range=a.slice(),i._input.range=a.slice(),n._rl=[n.r2l(a[0],null,\"gregorian\"),n.r2l(a[1],null,\"gregorian\")]},N.updateRadialAxis=function(t,e){var r=this,n=r.gd,i=r.layers,a=r.radius,u=r.innerRadius,f=r.cx,p=r.cy,d=r.getRadial(e),g=D(r.getSector(e)[0],360),m=r.radialAxis,v=u90&&g<=270&&(m.tickangle=180);var x=y?function(t){var e=O(r,C([t.x,0]));return l(e[0]-f,e[1]-p)}:function(t){return l(m.l2p(t.x)+u,0)},b=y?function(t){return I(r,t.x,-1/0,1/0)}:function(t){return r.pathArc(m.r2p(t.x)+u)},_=j(d);if(r.radialTickLayout!==_&&(i[\"radial-axis\"].selectAll(\".xtick\").remove(),r.radialTickLayout=_),v){m.setScale();var w=0,T=y?(m.tickvals||[]).filter((function(t){return t>=0})).map((function(t){return h.tickText(m,t,!0,!1)})):h.calcTicks(m),k=y?T:h.clipEnds(m,T),A=h.getTickSigns(m)[2];y&&((\"top\"===m.ticks&&\"bottom\"===m.side||\"bottom\"===m.ticks&&\"top\"===m.side)&&(A=-A),\"top\"===m.ticks&&\"top\"===m.side&&(w=-m.ticklen),\"bottom\"===m.ticks&&\"bottom\"===m.side&&(w=m.ticklen)),h.drawTicks(n,m,{vals:T,layer:i[\"radial-axis\"],path:h.makeTickPath(m,0,A),transFn:x,crisp:!1}),h.drawGrid(n,m,{vals:k,layer:i[\"radial-grid\"],path:b,transFn:o.noop,crisp:!1}),h.drawLabels(n,m,{vals:T,layer:i[\"radial-axis\"],transFn:x,labelFns:h.makeLabelFns(m,w)})}var M=r.radialAxisAngle=r.vangles?F(U(R(d.angle),r.vangles)):d.angle,S=l(f,p),E=S+s(-M);V(i[\"radial-axis\"],v&&(d.showticklabels||d.ticks),{transform:E}),V(i[\"radial-grid\"],v&&d.showgrid,{transform:y?\"\":S}),V(i[\"radial-line\"].select(\"line\"),v&&d.showline,{x1:y?-a:u,y1:0,x2:a,y2:0,transform:E}).attr(\"stroke-width\",d.linewidth).call(c.stroke,d.linecolor)},N.updateRadialAxisTitle=function(t,e,r){if(!this.isSmith){var n=this.gd,i=this.radius,a=this.cx,o=this.cy,s=this.getRadial(e),l=this.id+\"title\",c=0;if(s.title){var f=u.bBox(this.layers[\"radial-axis\"].node()).height,h=s.title.font.size,p=s.side;c=\"top\"===p?h:\"counterclockwise\"===p?-(f+.4*h):f+.8*h}var d=void 0!==r?r:this.radialAxisAngle,g=R(d),m=Math.cos(g),v=Math.sin(g),y=a+i/2*m+c*v,b=o-i/2*v+c*m;this.layers[\"radial-axis-title\"]=x.draw(n,l,{propContainer:s,propName:this.id+\".radialaxis.title\",placeholder:z(n,\"Click to enter radial axis title\"),attributes:{x:y,y:b,\"text-anchor\":\"middle\"},transform:{rotate:-d}})}},N.updateAngularAxis=function(t,e){var r=this,n=r.gd,i=r.layers,a=r.radius,u=r.innerRadius,f=r.cx,p=r.cy,d=r.getAngular(e),g=r.angularAxis,m=r.isSmith;m||(r.fillViewInitialKey(\"angularaxis.rotation\",d.rotation),g.setGeometry(),g.setScale());var v=m?function(t){var e=O(r,C([0,t.x]));return Math.atan2(e[0]-f,e[1]-p)-Math.PI/2}:function(t){return g.t2g(t.x)};\"linear\"===g.type&&\"radians\"===g.thetaunit&&(g.tick0=F(g.tick0),g.dtick=F(g.dtick));var y=function(t){return l(f+a*Math.cos(t),p-a*Math.sin(t))},x=m?function(t){var e=O(r,C([0,t.x]));return l(e[0],e[1])}:function(t){return y(v(t))},b=m?function(t){var e=O(r,C([0,t.x])),n=Math.atan2(e[0]-f,e[1]-p)-Math.PI/2;return l(e[0],e[1])+s(-F(n))}:function(t){var e=v(t);return y(e)+s(-F(e))},_=m?function(t){return P(r,t.x,0,1/0)}:function(t){var e=v(t),r=Math.cos(e),n=Math.sin(e);return\"M\"+[f+u*r,p-u*n]+\"L\"+[f+a*r,p-a*n]},w=h.makeLabelFns(g,0).labelStandoff,T={xFn:function(t){var e=v(t);return Math.cos(e)*w},yFn:function(t){var e=v(t),r=Math.sin(e)>0?.2:1;return-Math.sin(e)*(w+t.fontSize*r)+Math.abs(Math.cos(e))*(t.fontSize*M)},anchorFn:function(t){var e=v(t),r=Math.cos(e);return Math.abs(r)<.1?\"middle\":r>0?\"start\":\"end\"},heightFn:function(t,e,r){var n=v(t);return-.5*(1+Math.sin(n))*r}},k=j(d);r.angularTickLayout!==k&&(i[\"angular-axis\"].selectAll(\".\"+g._id+\"tick\").remove(),r.angularTickLayout=k);var A,S=m?[1/0].concat(g.tickvals||[]).map((function(t){return h.tickText(g,t,!0,!1)})):h.calcTicks(g);if(m&&(S[0].text=\"\\u221e\",S[0].fontSize*=1.75),\"linear\"===e.gridshape?(A=S.map(v),o.angleDelta(A[0],A[1])<0&&(A=A.slice().reverse())):A=null,r.vangles=A,\"category\"===g.type&&(S=S.filter((function(t){return o.isAngleInsideSector(v(t),r.sectorInRad)}))),g.visible){var E=\"inside\"===g.ticks?-1:1,L=(g.linewidth||1)/2;h.drawTicks(n,g,{vals:S,layer:i[\"angular-axis\"],path:\"M\"+E*L+\",0h\"+E*g.ticklen,transFn:b,crisp:!1}),h.drawGrid(n,g,{vals:S,layer:i[\"angular-grid\"],path:_,transFn:o.noop,crisp:!1}),h.drawLabels(n,g,{vals:S,layer:i[\"angular-axis\"],repositionOnUpdate:!0,transFn:x,labelFns:T})}V(i[\"angular-line\"].select(\"path\"),d.showline,{d:r.pathSubplot(),transform:l(f,p)}).attr(\"stroke-width\",d.linewidth).call(c.stroke,d.linecolor)},N.updateFx=function(t,e){this.gd._context.staticPlot||(!this.isSmith&&(this.updateAngularDrag(t),this.updateRadialDrag(t,e,0),this.updateRadialDrag(t,e,1)),this.updateHoverAndMainDrag(t))},N.updateHoverAndMainDrag=function(t){var e,r,s=this,c=s.isSmith,u=s.gd,f=s.layers,h=t._zoomlayer,p=S.MINZOOM,d=S.OFFEDGE,g=s.radius,x=s.innerRadius,T=s.cx,k=s.cy,A=s.cxx,M=s.cyy,L=s.sectorInRad,C=s.vangles,P=s.radialAxis,I=E.clampTiny,O=E.findXYatLength,z=E.findEnclosingVertexAngles,D=S.cornerHalfWidth,R=S.cornerLen/2,F=m.makeDragger(f,\"path\",\"maindrag\",\"crosshair\");n.select(F).attr(\"d\",s.pathSubplot()).attr(\"transform\",l(T,k)),F.onmousemove=function(t){y.hover(u,t,s.id),u._fullLayout._lasthover=F,u._fullLayout._hoversubplot=s.id},F.onmouseout=function(t){u._dragging||v.unhover(u,t)};var B,N,j,U,V,H,q,G,Y,W={element:F,gd:u,subplot:s.id,plotinfo:{id:s.id,xaxis:s.xaxis,yaxis:s.yaxis},xaxes:[s.xaxis],yaxes:[s.yaxis]};function X(t,e){return Math.sqrt(t*t+e*e)}function Z(t,e){return X(t-A,e-M)}function J(t,e){return Math.atan2(M-e,t-A)}function K(t,e){return[t*Math.cos(e),t*Math.sin(-e)]}function Q(t,e){if(0===t)return s.pathSector(2*D);var r=R/t,n=e-r,i=e+r,a=Math.max(0,Math.min(t,g)),o=a-D,l=a+D;return\"M\"+K(o,n)+\"A\"+[o,o]+\" 0,0,0 \"+K(o,i)+\"L\"+K(l,i)+\"A\"+[l,l]+\" 0,0,1 \"+K(l,n)+\"Z\"}function $(t,e,r){if(0===t)return s.pathSector(2*D);var n,i,a=K(t,e),o=K(t,r),l=I((a[0]+o[0])/2),c=I((a[1]+o[1])/2);if(l&&c){var u=c/l,f=-1/u,h=O(D,u,l,c);n=O(R,f,h[0][0],h[0][1]),i=O(R,f,h[1][0],h[1][1])}else{var p,d;c?(p=R,d=D):(p=D,d=R),n=[[l-p,c-d],[l+p,c-d]],i=[[l-p,c+d],[l+p,c+d]]}return\"M\"+n.join(\"L\")+\"L\"+i.reverse().join(\"L\")+\"Z\"}function tt(t,e){return e=Math.max(Math.min(e,g),x),tp?(t-1&&1===t&&_(e,u,[s.xaxis],[s.yaxis],s.id,W),r.indexOf(\"event\")>-1&&y.click(u,e,s.id)}W.prepFn=function(t,n,a){var l=u._fullLayout.dragmode,f=F.getBoundingClientRect();u._fullLayout._calcInverseTransform(u);var p=u._fullLayout._invTransform;e=u._fullLayout._invScaleX,r=u._fullLayout._invScaleY;var d=o.apply3DTransform(p)(n-f.left,a-f.top);if(B=d[0],N=d[1],C){var v=E.findPolygonOffset(g,L[0],L[1],C);B+=A+v[0],N+=M+v[1]}switch(l){case\"zoom\":W.clickFn=st,c||(W.moveFn=C?it:rt,W.doneFn=at,function(){j=null,U=null,V=s.pathSubplot(),H=!1;var t=u._fullLayout[s.id];q=i(t.bgcolor).getLuminance(),(G=m.makeZoombox(h,q,T,k,V)).attr(\"fill-rule\",\"evenodd\"),Y=m.makeCorners(h,T,k),w(u)}());break;case\"select\":case\"lasso\":b(t,n,a,W,l)}},v.init(W)},N.updateRadialDrag=function(t,e,r){var i=this,c=i.gd,u=i.layers,f=i.radius,h=i.innerRadius,p=i.cx,d=i.cy,g=i.radialAxis,y=S.radialDragBoxSize,x=y/2;if(g.visible){var b,_,T,M=R(i.radialAxisAngle),E=g._rl,L=E[0],C=E[1],P=E[r],I=.75*(E[1]-E[0])/(1-i.getHole(e))/f;r?(b=p+(f+x)*Math.cos(M),_=d-(f+x)*Math.sin(M),T=\"radialdrag\"):(b=p+(h-x)*Math.cos(M),_=d-(h-x)*Math.sin(M),T=\"radialdrag-inner\");var O,z,D,B=m.makeRectDragger(u,T,\"crosshair\",-x,-x,y,y),N={element:B,gd:c};V(n.select(B),g.visible&&h0==(r?D>L:Dn?function(t){return t<=0}:function(t){return t>=0};t.c2g=function(r){var n=t.c2l(r)-e;return(s(n)?n:0)+o},t.g2c=function(r){return t.l2c(r+e-o)},t.g2p=function(t){return t*a},t.c2p=function(e){return t.g2p(t.c2g(e))}}}(t,e);break;case\"angularaxis\":!function(t,e){var r=t.type;if(\"linear\"===r){var i=t.d2c,s=t.c2d;t.d2c=function(t,e){return function(t,e){return\"degrees\"===e?a(t):t}(i(t),e)},t.c2d=function(t,e){return s(function(t,e){return\"degrees\"===e?o(t):t}(t,e))}}t.makeCalcdata=function(e,i){var a,o,s=e[i],l=e._length,c=function(r){return t.d2c(r,e.thetaunit)};if(s){if(n.isTypedArray(s)&&\"linear\"===r){if(l===s.length)return s;if(s.subarray)return s.subarray(0,l)}for(a=new Array(l),o=0;o0?1:0}function i(t){var e=t[0],r=t[1];if(!isFinite(e)||!isFinite(r))return[1,0];var n=(e+1)*(e+1)+r*r;return[(e*e+r*r-1)/n,2*r/n]}function a(t,e){var r=e[0],n=e[1];return[r*t.radius+t.cx,-n*t.radius+t.cy]}function o(t,e){return e*t.radius}e.exports={smith:i,reactanceArc:function(t,e,r,n){var s=a(t,i([r,e])),l=s[0],c=s[1],u=a(t,i([n,e])),f=u[0],h=u[1];if(0===e)return[\"M\"+l+\",\"+c,\"L\"+f+\",\"+h].join(\" \");var p=o(t,1/Math.abs(e));return[\"M\"+l+\",\"+c,\"A\"+p+\",\"+p+\" 0 0,\"+(e<0?1:0)+\" \"+f+\",\"+h].join(\" \")},resistanceArc:function(t,e,r,s){var l=o(t,1/(e+1)),c=a(t,i([e,r])),u=c[0],f=c[1],h=a(t,i([e,s])),p=h[0],d=h[1];if(n(r)!==n(s)){var g=a(t,i([e,0]));return[\"M\"+u+\",\"+f,\"A\"+l+\",\"+l+\" 0 0,\"+(00){for(var n=[],i=0;i=u&&(h.min=0,d.min=0,m.min=0,t.aaxis&&delete t.aaxis.min,t.baxis&&delete t.baxis.min,t.caxis&&delete t.caxis.min)}function g(t,e,r,n){var i=h[e._name];function o(r,n){return a.coerce(t,e,i,r,n)}o(\"uirevision\",n.uirevision),e.type=\"linear\";var p=o(\"color\"),d=p!==i.color.dflt?p:r.font.color,g=e._name.charAt(0).toUpperCase(),m=\"Component \"+g,v=o(\"title.text\",m);e._hovertitle=v===m?v:g,a.coerceFont(o,\"title.font\",{family:r.font.family,size:a.bigFont(r.font.size),color:d}),o(\"min\"),u(t,e,o,\"linear\"),l(t,e,o,\"linear\"),s(t,e,o,\"linear\"),c(t,e,o,{outerTicks:!0}),o(\"showticklabels\")&&(a.coerceFont(o,\"tickfont\",{family:r.font.family,size:r.font.size,color:d}),o(\"tickangle\"),o(\"tickformat\")),f(t,e,o,{dfltColor:p,bgColor:r.bgColor,blend:60,showLine:!0,showGrid:!0,noZeroLine:!0,attributes:i}),o(\"hoverformat\"),o(\"layer\")}e.exports=function(t,e,r){o(t,e,r,{type:\"ternary\",attributes:h,handleDefaults:d,font:e.font,paper_bgcolor:e.paper_bgcolor})}},{\"../../components/color\":366,\"../../lib\":503,\"../../plot_api/plot_template\":543,\"../cartesian/line_grid_defaults\":571,\"../cartesian/prefix_suffix_defaults\":573,\"../cartesian/tick_label_defaults\":578,\"../cartesian/tick_mark_defaults\":579,\"../cartesian/tick_value_defaults\":580,\"../subplot_defaults\":632,\"./layout_attributes\":635}],637:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"tinycolor2\"),a=t(\"../../registry\"),o=t(\"../../lib\"),s=o.strTranslate,l=o._,c=t(\"../../components/color\"),u=t(\"../../components/drawing\"),f=t(\"../cartesian/set_convert\"),h=t(\"../../lib/extend\").extendFlat,p=t(\"../plots\"),d=t(\"../cartesian/axes\"),g=t(\"../../components/dragelement\"),m=t(\"../../components/fx\"),v=t(\"../../components/dragelement/helpers\"),y=v.freeMode,x=v.rectMode,b=t(\"../../components/titles\"),_=t(\"../cartesian/select\").prepSelect,w=t(\"../cartesian/select\").selectOnClick,T=t(\"../cartesian/select\").clearSelect,k=t(\"../cartesian/select\").clearSelectionsCache,A=t(\"../cartesian/constants\");function M(t,e){this.id=t.id,this.graphDiv=t.graphDiv,this.init(e),this.makeFramework(e),this.aTickLayout=null,this.bTickLayout=null,this.cTickLayout=null}e.exports=M;var S=M.prototype;S.init=function(t){this.container=t._ternarylayer,this.defs=t._defs,this.layoutId=t._uid,this.traceHash={},this.layers={}},S.plot=function(t,e){var r=e[this.id],n=e._size;this._hasClipOnAxisFalse=!1;for(var i=0;iE*b?i=(a=b)*E:a=(i=x)/E,o=v*i/x,l=y*a/b,r=e.l+e.w*g-i/2,n=e.t+e.h*(1-m)-a/2,p.x0=r,p.y0=n,p.w=i,p.h=a,p.sum=_,p.xaxis={type:\"linear\",range:[w+2*k-_,_-w-2*T],domain:[g-o/2,g+o/2],_id:\"x\"},f(p.xaxis,p.graphDiv._fullLayout),p.xaxis.setScale(),p.xaxis.isPtWithinRange=function(t){return t.a>=p.aaxis.range[0]&&t.a<=p.aaxis.range[1]&&t.b>=p.baxis.range[1]&&t.b<=p.baxis.range[0]&&t.c>=p.caxis.range[1]&&t.c<=p.caxis.range[0]},p.yaxis={type:\"linear\",range:[w,_-T-k],domain:[m-l/2,m+l/2],_id:\"y\"},f(p.yaxis,p.graphDiv._fullLayout),p.yaxis.setScale(),p.yaxis.isPtWithinRange=function(){return!0};var A=p.yaxis.domain[0],M=p.aaxis=h({},t.aaxis,{range:[w,_-T-k],side:\"left\",tickangle:(+t.aaxis.tickangle||0)-30,domain:[A,A+l*E],anchor:\"free\",position:0,_id:\"y\",_length:i});f(M,p.graphDiv._fullLayout),M.setScale();var S=p.baxis=h({},t.baxis,{range:[_-w-k,T],side:\"bottom\",domain:p.xaxis.domain,anchor:\"free\",position:0,_id:\"x\",_length:i});f(S,p.graphDiv._fullLayout),S.setScale();var L=p.caxis=h({},t.caxis,{range:[_-w-T,k],side:\"right\",tickangle:(+t.caxis.tickangle||0)+30,domain:[A,A+l*E],anchor:\"free\",position:0,_id:\"y\",_length:i});f(L,p.graphDiv._fullLayout),L.setScale();var C=\"M\"+r+\",\"+(n+a)+\"h\"+i+\"l-\"+i/2+\",-\"+a+\"Z\";p.clipDef.select(\"path\").attr(\"d\",C),p.layers.plotbg.select(\"path\").attr(\"d\",C);var P=\"M0,\"+a+\"h\"+i+\"l-\"+i/2+\",-\"+a+\"Z\";p.clipDefRelative.select(\"path\").attr(\"d\",P);var I=s(r,n);p.plotContainer.selectAll(\".scatterlayer,.maplayer\").attr(\"transform\",I),p.clipDefRelative.select(\"path\").attr(\"transform\",null);var O=s(r-S._offset,n+a);p.layers.baxis.attr(\"transform\",O),p.layers.bgrid.attr(\"transform\",O);var z=s(r+i/2,n)+\"rotate(30)\"+s(0,-M._offset);p.layers.aaxis.attr(\"transform\",z),p.layers.agrid.attr(\"transform\",z);var D=s(r+i/2,n)+\"rotate(-30)\"+s(0,-L._offset);p.layers.caxis.attr(\"transform\",D),p.layers.cgrid.attr(\"transform\",D),p.drawAxes(!0),p.layers.aline.select(\"path\").attr(\"d\",M.showline?\"M\"+r+\",\"+(n+a)+\"l\"+i/2+\",-\"+a:\"M0,0\").call(c.stroke,M.linecolor||\"#000\").style(\"stroke-width\",(M.linewidth||0)+\"px\"),p.layers.bline.select(\"path\").attr(\"d\",S.showline?\"M\"+r+\",\"+(n+a)+\"h\"+i:\"M0,0\").call(c.stroke,S.linecolor||\"#000\").style(\"stroke-width\",(S.linewidth||0)+\"px\"),p.layers.cline.select(\"path\").attr(\"d\",L.showline?\"M\"+(r+i/2)+\",\"+n+\"l\"+i/2+\",\"+a:\"M0,0\").call(c.stroke,L.linecolor||\"#000\").style(\"stroke-width\",(L.linewidth||0)+\"px\"),p.graphDiv._context.staticPlot||p.initInteractions(),u.setClipUrl(p.layers.frontplot,p._hasClipOnAxisFalse?null:p.clipId,p.graphDiv)},S.drawAxes=function(t){var e=this.graphDiv,r=this.id.substr(7)+\"title\",n=this.layers,i=this.aaxis,a=this.baxis,o=this.caxis;if(this.drawAx(i),this.drawAx(a),this.drawAx(o),t){var s=Math.max(i.showticklabels?i.tickfont.size/2:0,(o.showticklabels?.75*o.tickfont.size:0)+(\"outside\"===o.ticks?.87*o.ticklen:0)),c=(a.showticklabels?a.tickfont.size:0)+(\"outside\"===a.ticks?a.ticklen:0)+3;n[\"a-title\"]=b.draw(e,\"a\"+r,{propContainer:i,propName:this.id+\".aaxis.title\",placeholder:l(e,\"Click to enter Component A title\"),attributes:{x:this.x0+this.w/2,y:this.y0-i.title.font.size/3-s,\"text-anchor\":\"middle\"}}),n[\"b-title\"]=b.draw(e,\"b\"+r,{propContainer:a,propName:this.id+\".baxis.title\",placeholder:l(e,\"Click to enter Component B title\"),attributes:{x:this.x0-c,y:this.y0+this.h+.83*a.title.font.size+c,\"text-anchor\":\"middle\"}}),n[\"c-title\"]=b.draw(e,\"c\"+r,{propContainer:o,propName:this.id+\".caxis.title\",placeholder:l(e,\"Click to enter Component C title\"),attributes:{x:this.x0+this.w+c,y:this.y0+this.h+.83*o.title.font.size+c,\"text-anchor\":\"middle\"}})}},S.drawAx=function(t){var e,r=this.graphDiv,n=t._name,i=n.charAt(0),a=t._id,s=this.layers[n],l=i+\"tickLayout\",c=(e=t).ticks+String(e.ticklen)+String(e.showticklabels);this[l]!==c&&(s.selectAll(\".\"+a+\"tick\").remove(),this[l]=c),t.setScale();var u=d.calcTicks(t),f=d.clipEnds(t,u),h=d.makeTransTickFn(t),p=d.getTickSigns(t)[2],g=o.deg2rad(30),m=p*(t.linewidth||1)/2,v=p*t.ticklen,y=this.w,x=this.h,b=\"b\"===i?\"M0,\"+m+\"l\"+Math.sin(g)*v+\",\"+Math.cos(g)*v:\"M\"+m+\",0l\"+Math.cos(g)*v+\",\"+-Math.sin(g)*v,_={a:\"M0,0l\"+x+\",-\"+y/2,b:\"M0,0l-\"+y/2+\",-\"+x,c:\"M0,0l-\"+x+\",\"+y/2}[i];d.drawTicks(r,t,{vals:\"inside\"===t.ticks?f:u,layer:s,path:b,transFn:h,crisp:!1}),d.drawGrid(r,t,{vals:f,layer:this.layers[i+\"grid\"],path:_,transFn:h,crisp:!1}),d.drawLabels(r,t,{vals:u,layer:s,transFn:h,labelFns:d.makeLabelFns(t,0,30)})};var L=A.MINZOOM/2+.87,C=\"m-0.87,.5h\"+L+\"v3h-\"+(L+5.2)+\"l\"+(L/2+2.6)+\",-\"+(.87*L+4.5)+\"l2.6,1.5l-\"+L/2+\",\"+.87*L+\"Z\",P=\"m0.87,.5h-\"+L+\"v3h\"+(L+5.2)+\"l-\"+(L/2+2.6)+\",-\"+(.87*L+4.5)+\"l-2.6,1.5l\"+L/2+\",\"+.87*L+\"Z\",I=\"m0,1l\"+L/2+\",\"+.87*L+\"l2.6,-1.5l-\"+(L/2+2.6)+\",-\"+(.87*L+4.5)+\"l-\"+(L/2+2.6)+\",\"+(.87*L+4.5)+\"l2.6,1.5l\"+L/2+\",-\"+.87*L+\"Z\",O=!0;function z(t){n.select(t).selectAll(\".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners\").remove()}S.clearSelect=function(){k(this.dragOptions),T(this.dragOptions.gd)},S.initInteractions=function(){var t,e,r,n,f,h,p,d,v,b,T,k,M=this,S=M.layers.plotbg.select(\"path\").node(),L=M.graphDiv,D=L._fullLayout._zoomlayer;function R(t){var e={};return e[M.id+\".aaxis.min\"]=t.a,e[M.id+\".baxis.min\"]=t.b,e[M.id+\".caxis.min\"]=t.c,e}function F(t,e){var r=L._fullLayout.clickmode;z(L),2===t&&(L.emit(\"plotly_doubleclick\",null),a.call(\"_guiRelayout\",L,R({a:0,b:0,c:0}))),r.indexOf(\"select\")>-1&&1===t&&w(e,L,[M.xaxis],[M.yaxis],M.id,M.dragOptions),r.indexOf(\"event\")>-1&&m.click(L,e,M.id)}function B(t,e){return 1-e/M.h}function N(t,e){return 1-(t+(M.h-e)/Math.sqrt(3))/M.w}function j(t,e){return(t-(M.h-e)/Math.sqrt(3))/M.w}function U(i,a){var o=r+i*t,s=n+a*e,l=Math.max(0,Math.min(1,B(0,n),B(0,s))),c=Math.max(0,Math.min(1,N(r,n),N(o,s))),u=Math.max(0,Math.min(1,j(r,n),j(o,s))),g=(l/2+u)*M.w,m=(1-l/2-c)*M.w,y=(g+m)/2,x=m-g,_=(1-l)*M.h,w=_-x/E;x.2?\"rgba(0,0,0,0.4)\":\"rgba(255,255,255,0.3)\").duration(200),k.transition().style(\"opacity\",1).duration(200),b=!0),L.emit(\"plotly_relayouting\",R(p))}function V(){z(L),p!==f&&(a.call(\"_guiRelayout\",L,R(p)),O&&L.data&&L._context.showTips&&(o.notifier(l(L,\"Double-click to zoom back out\"),\"long\"),O=!1))}function H(t,e){var r=t/M.xaxis._m,n=e/M.yaxis._m,i=[(p={a:f.a-n,b:f.b+(r+n)/2,c:f.c-(r-n)/2}).a,p.b,p.c].sort(o.sorterAsc),a=i.indexOf(p.a),l=i.indexOf(p.b),c=i.indexOf(p.c);i[0]<0&&(i[1]+i[0]/2<0?(i[2]+=i[0]+i[1],i[0]=i[1]=0):(i[2]+=i[0]/2,i[1]+=i[0]/2,i[0]=0),p={a:i[a],b:i[l],c:i[c]},e=(f.a-p.a)*M.yaxis._m,t=(f.c-p.c-f.b+p.b)*M.xaxis._m);var h=s(M.x0+t,M.y0+e);M.plotContainer.selectAll(\".scatterlayer,.maplayer\").attr(\"transform\",h);var d=s(-t,-e);M.clipDefRelative.select(\"path\").attr(\"transform\",d),M.aaxis.range=[p.a,M.sum-p.b-p.c],M.baxis.range=[M.sum-p.a-p.c,p.b],M.caxis.range=[M.sum-p.a-p.b,p.c],M.drawAxes(!1),M._hasClipOnAxisFalse&&M.plotContainer.select(\".scatterlayer\").selectAll(\".trace\").call(u.hideOutsideRangePoints,M),L.emit(\"plotly_relayouting\",R(p))}function q(){a.call(\"_guiRelayout\",L,R(p))}this.dragOptions={element:S,gd:L,plotinfo:{id:M.id,domain:L._fullLayout[M.id].domain,xaxis:M.xaxis,yaxis:M.yaxis},subplot:M.id,prepFn:function(a,l,u){M.dragOptions.xaxes=[M.xaxis],M.dragOptions.yaxes=[M.yaxis],t=L._fullLayout._invScaleX,e=L._fullLayout._invScaleY;var g=M.dragOptions.dragmode=L._fullLayout.dragmode;y(g)?M.dragOptions.minDrag=1:M.dragOptions.minDrag=void 0,\"zoom\"===g?(M.dragOptions.moveFn=U,M.dragOptions.clickFn=F,M.dragOptions.doneFn=V,function(t,e,a){var l=S.getBoundingClientRect();r=e-l.left,n=a-l.top,L._fullLayout._calcInverseTransform(L);var u=L._fullLayout._invTransform,g=o.apply3DTransform(u)(r,n);r=g[0],n=g[1],f={a:M.aaxis.range[0],b:M.baxis.range[1],c:M.caxis.range[1]},p=f,h=M.aaxis.range[1]-f.a,d=i(M.graphDiv._fullLayout[M.id].bgcolor).getLuminance(),v=\"M0,\"+M.h+\"L\"+M.w/2+\", 0L\"+M.w+\",\"+M.h+\"Z\",b=!1,T=D.append(\"path\").attr(\"class\",\"zoombox\").attr(\"transform\",s(M.x0,M.y0)).style({fill:d>.2?\"rgba(0,0,0,0)\":\"rgba(255,255,255,0)\",\"stroke-width\":0}).attr(\"d\",v),k=D.append(\"path\").attr(\"class\",\"zoombox-corners\").attr(\"transform\",s(M.x0,M.y0)).style({fill:c.background,stroke:c.defaultLine,\"stroke-width\":1,opacity:0}).attr(\"d\",\"M0,0Z\"),M.clearSelect(L)}(0,l,u)):\"pan\"===g?(M.dragOptions.moveFn=H,M.dragOptions.clickFn=F,M.dragOptions.doneFn=q,f={a:M.aaxis.range[0],b:M.baxis.range[1],c:M.caxis.range[1]},p=f,M.clearSelect(L)):(x(g)||y(g))&&_(a,l,u,M.dragOptions,g)}},S.onmousemove=function(t){m.hover(L,t,M.id),L._fullLayout._lasthover=S,L._fullLayout._hoversubplot=M.id},S.onmouseout=function(t){L._dragging||g.unhover(L,t)},g.init(this.dragOptions)}},{\"../../components/color\":366,\"../../components/dragelement\":385,\"../../components/dragelement/helpers\":384,\"../../components/drawing\":388,\"../../components/fx\":406,\"../../components/titles\":464,\"../../lib\":503,\"../../lib/extend\":493,\"../../registry\":638,\"../cartesian/axes\":554,\"../cartesian/constants\":561,\"../cartesian/select\":575,\"../cartesian/set_convert\":576,\"../plots\":619,\"@plotly/d3\":58,tinycolor2:312}],638:[function(t,e,r){\"use strict\";var n=t(\"./lib/loggers\"),i=t(\"./lib/noop\"),a=t(\"./lib/push_unique\"),o=t(\"./lib/is_plain_object\"),s=t(\"./lib/dom\").addStyleRule,l=t(\"./lib/extend\"),c=t(\"./plots/attributes\"),u=t(\"./plots/layout_attributes\"),f=l.extendFlat,h=l.extendDeepAll;function p(t){var e=t.name,i=t.categories,a=t.meta;if(r.modules[e])n.log(\"Type \"+e+\" already registered\");else{r.subplotsRegistry[t.basePlotModule.name]||function(t){var e=t.name;if(r.subplotsRegistry[e])return void n.log(\"Plot type \"+e+\" already registered.\");for(var i in v(t),r.subplotsRegistry[e]=t,r.componentsRegistry)b(i,t.name)}(t.basePlotModule);for(var o={},l=0;l-1&&(f[p[r]].title={text:\"\"});for(r=0;r\")?\"\":e.html(t).text()}));return e.remove(),r}(T),T=(T=T.replace(/&(?!\\w+;|\\#[0-9]+;| \\#x[0-9A-F]+;)/g,\"&\")).replace(c,\"'\"),i.isIE()&&(T=(T=(T=T.replace(/\"/gi,\"'\")).replace(/(\\('#)([^']*)('\\))/gi,'(\"#$2\")')).replace(/(\\\\')/gi,'\"')),T}},{\"../components/color\":366,\"../components/drawing\":388,\"../constants/xmlns_namespaces\":480,\"../lib\":503,\"@plotly/d3\":58}],647:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t,e){for(var r=0;rf+c||!n(u))}for(var p=0;pa))return e}return void 0!==r?r:t.dflt},r.coerceColor=function(t,e,r){return i(e).isValid()?e:void 0!==r?r:t.dflt},r.coerceEnumerated=function(t,e,r){return t.coerceNumber&&(e=+e),-1!==t.values.indexOf(e)?e:void 0!==r?r:t.dflt},r.getValue=function(t,e){var r;return Array.isArray(t)?e0?e+=r:u<0&&(e-=r)}return e}function z(t){var e=u,r=t.b,i=O(t);return n.inbox(r-e,i-e,_+(i-e)/(i-r)-1)}var D=t[f+\"a\"],R=t[h+\"a\"];g=Math.abs(D.r2c(D.range[1])-D.r2c(D.range[0]));var F=n.getDistanceFunction(i,p,d,(function(t){return(p(t)+d(t))/2}));if(n.getClosest(m,F,t),!1!==t.index&&m[t.index].p!==c){k||(L=function(t){return Math.min(A(t),t.p-y.bargroupwidth/2)},C=function(t){return Math.max(M(t),t.p+y.bargroupwidth/2)});var B=m[t.index],N=v.base?B.b+B.s:B.s;t[h+\"0\"]=t[h+\"1\"]=R.c2p(B[h],!0),t[h+\"LabelVal\"]=N;var j=y.extents[y.extents.round(B.p)];t[f+\"0\"]=D.c2p(x?L(B):j[0],!0),t[f+\"1\"]=D.c2p(x?C(B):j[1],!0);var U=void 0!==B.orig_p;return t[f+\"LabelVal\"]=U?B.orig_p:B.p,t.labelLabel=l(D,t[f+\"LabelVal\"],v[f+\"hoverformat\"]),t.valueLabel=l(R,t[h+\"LabelVal\"],v[h+\"hoverformat\"]),t.baseLabel=l(R,B.b,v[h+\"hoverformat\"]),t.spikeDistance=(function(t){var e=u,r=t.b,i=O(t);return n.inbox(r-e,i-e,w+(i-e)/(i-r)-1)}(B)+function(t){return P(A(t),M(t),w)}(B))/2,t[f+\"Spike\"]=D.c2p(B.p,!0),o(B,v,t),t.hovertemplate=v.hovertemplate,t}}function f(t,e){var r=e.mcc||t.marker.color,n=e.mlcc||t.marker.line.color,i=s(t,e);return a.opacity(r)?r:a.opacity(n)&&i?n:void 0}e.exports={hoverPoints:function(t,e,r,n,a){var o=u(t,e,r,n,a);if(o){var s=o.cd,l=s[0].trace,c=s[o.index];return o.color=f(l,c),i.getComponentMethod(\"errorbars\",\"hoverInfo\")(c,l,o),[o]}},hoverOnBars:u,getTraceColor:f}},{\"../../components/color\":366,\"../../components/fx\":406,\"../../constants/numerical\":479,\"../../lib\":503,\"../../plots/cartesian/axes\":554,\"../../registry\":638,\"./helpers\":654}],656:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\").supplyDefaults,crossTraceDefaults:t(\"./defaults\").crossTraceDefaults,supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\"),crossTraceCalc:t(\"./cross_trace_calc\").crossTraceCalc,colorbar:t(\"../scatter/marker_colorbar\"),arraysToCalcdata:t(\"./arrays_to_calcdata\"),plot:t(\"./plot\").plot,style:t(\"./style\").style,styleOnSelect:t(\"./style\").styleOnSelect,hoverPoints:t(\"./hover\").hoverPoints,eventData:t(\"./event_data\"),selectPoints:t(\"./select\"),moduleType:\"trace\",name:\"bar\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"bar-like\",\"cartesian\",\"svg\",\"bar\",\"oriented\",\"errorBarsOK\",\"showLegend\",\"zoomScale\"],animatable:!0,meta:{}}},{\"../../plots/cartesian\":568,\"../scatter/marker_colorbar\":944,\"./arrays_to_calcdata\":647,\"./attributes\":648,\"./calc\":649,\"./cross_trace_calc\":651,\"./defaults\":652,\"./event_data\":653,\"./hover\":655,\"./layout_attributes\":657,\"./layout_defaults\":658,\"./plot\":659,\"./select\":660,\"./style\":662}],657:[function(t,e,r){\"use strict\";e.exports={barmode:{valType:\"enumerated\",values:[\"stack\",\"group\",\"overlay\",\"relative\"],dflt:\"group\",editType:\"calc\"},barnorm:{valType:\"enumerated\",values:[\"\",\"fraction\",\"percent\"],dflt:\"\",editType:\"calc\"},bargap:{valType:\"number\",min:0,max:1,editType:\"calc\"},bargroupgap:{valType:\"number\",min:0,max:1,dflt:0,editType:\"calc\"}}},{}],658:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"../../lib\"),o=t(\"./layout_attributes\");e.exports=function(t,e,r){function s(r,n){return a.coerce(t,e,o,r,n)}for(var l=!1,c=!1,u=!1,f={},h=s(\"barmode\"),p=0;p0}function S(t){return\"auto\"===t?0:t}function E(t,e){var r=Math.PI/180*e,n=Math.abs(Math.sin(r)),i=Math.abs(Math.cos(r));return{x:t.width*i+t.height*n,y:t.width*n+t.height*i}}function L(t,e,r,n,i,a){var o=!!a.isHorizontal,s=!!a.constrained,l=a.angle||0,c=a.anchor||\"end\",u=\"end\"===c,f=\"start\"===c,h=((a.leftToRight||0)+1)/2,p=1-h,d=i.width,g=i.height,m=Math.abs(e-t),v=Math.abs(n-r),y=m>2*_&&v>2*_?_:0;m-=2*y,v-=2*y;var x=S(l);\"auto\"!==l||d<=m&&g<=v||!(d>m||g>v)||(d>v||g>m)&&d.01?q:function(t,e,r){return r&&t===e?t:Math.abs(t-e)>=2?q(t):t>e?Math.ceil(t):Math.floor(t)};B=G(B,N,D),N=G(N,B,D),j=G(j,U,!D),U=G(U,j,!D)}var Y=A(a.ensureSingle(I,\"path\"),P,m,v);if(Y.style(\"vector-effect\",\"non-scaling-stroke\").attr(\"d\",isNaN((N-B)*(U-j))||V&&t._context.staticPlot?\"M0,0Z\":\"M\"+B+\",\"+j+\"V\"+U+\"H\"+N+\"V\"+j+\"Z\").call(l.setClipUrl,e.layerClipId,t),!P.uniformtext.mode&&R){var W=l.makePointStyleFns(f);l.singlePointStyle(c,Y,f,W,t)}!function(t,e,r,n,i,s,c,f,p,m,v){var w,T=e.xaxis,M=e.yaxis,C=t._fullLayout;function P(e,r,n){return a.ensureSingle(e,\"text\").text(r).attr({class:\"bartext bartext-\"+w,\"text-anchor\":\"middle\",\"data-notex\":1}).call(l.font,n).call(o.convertToTspans,t)}var I=n[0].trace,O=\"h\"===I.orientation,z=function(t,e,r,n,i){var o,s=e[0].trace;o=s.texttemplate?function(t,e,r,n,i){var o=e[0].trace,s=a.castOption(o,r,\"texttemplate\");if(!s)return\"\";var l,c,f,h,p=\"histogram\"===o.type,d=\"waterfall\"===o.type,g=\"funnel\"===o.type,m=\"h\"===o.orientation;m?(l=\"y\",c=i,f=\"x\",h=n):(l=\"x\",c=n,f=\"y\",h=i);function v(t){return u(h,h.c2l(t),!0).text}var y=e[r],x={};x.label=y.p,x.labelLabel=x[l+\"Label\"]=(_=y.p,u(c,c.c2l(_),!0).text);var _;var w=a.castOption(o,y.i,\"text\");(0===w||w)&&(x.text=w);x.value=y.s,x.valueLabel=x[f+\"Label\"]=v(y.s);var T={};b(T,o,y.i),(p||void 0===T.x)&&(T.x=m?x.value:x.label);(p||void 0===T.y)&&(T.y=m?x.label:x.value);(p||void 0===T.xLabel)&&(T.xLabel=m?x.valueLabel:x.labelLabel);(p||void 0===T.yLabel)&&(T.yLabel=m?x.labelLabel:x.valueLabel);d&&(x.delta=+y.rawS||y.s,x.deltaLabel=v(x.delta),x.final=y.v,x.finalLabel=v(x.final),x.initial=x.final-x.delta,x.initialLabel=v(x.initial));g&&(x.value=y.s,x.valueLabel=v(x.value),x.percentInitial=y.begR,x.percentInitialLabel=a.formatPercent(y.begR),x.percentPrevious=y.difR,x.percentPreviousLabel=a.formatPercent(y.difR),x.percentTotal=y.sumR,x.percenTotalLabel=a.formatPercent(y.sumR));var k=a.castOption(o,y.i,\"customdata\");k&&(x.customdata=k);return a.texttemplateString(s,x,t._d3locale,T,x,o._meta||{})}(t,e,r,n,i):s.textinfo?function(t,e,r,n){var i=t[0].trace,o=\"h\"===i.orientation,s=\"waterfall\"===i.type,l=\"funnel\"===i.type;function c(t){return u(o?r:n,+t,!0).text}var f,h=i.textinfo,p=t[e],d=h.split(\"+\"),g=[],m=function(t){return-1!==d.indexOf(t)};m(\"label\")&&g.push((v=t[e].p,u(o?n:r,v,!0).text));var v;m(\"text\")&&(0===(f=a.castOption(i,p.i,\"text\"))||f)&&g.push(f);if(s){var y=+p.rawS||p.s,x=p.v,b=x-y;m(\"initial\")&&g.push(c(b)),m(\"delta\")&&g.push(c(y)),m(\"final\")&&g.push(c(x))}if(l){m(\"value\")&&g.push(c(p.s));var _=0;m(\"percent initial\")&&_++,m(\"percent previous\")&&_++,m(\"percent total\")&&_++;var w=_>1;m(\"percent initial\")&&(f=a.formatPercent(p.begR),w&&(f+=\" of initial\"),g.push(f)),m(\"percent previous\")&&(f=a.formatPercent(p.difR),w&&(f+=\" of previous\"),g.push(f)),m(\"percent total\")&&(f=a.formatPercent(p.sumR),w&&(f+=\" of total\"),g.push(f))}return g.join(\"
\")}(e,r,n,i):g.getValue(s.text,r);return g.coerceString(y,o)}(C,n,i,T,M);w=function(t,e){var r=g.getValue(t.textposition,e);return g.coerceEnumerated(x,r)}(I,i);var D=\"stack\"===m.mode||\"relative\"===m.mode,R=n[i],F=!D||R._outmost;if(!z||\"none\"===w||(R.isBlank||s===c||f===p)&&(\"auto\"===w||\"inside\"===w))return void r.select(\"text\").remove();var B=C.font,N=d.getBarColor(n[i],I),j=d.getInsideTextFont(I,i,B,N),U=d.getOutsideTextFont(I,i,B),V=r.datum();O?\"log\"===T.type&&V.s0<=0&&(s=T.range[0]=G*(Z/Y):Z>=Y*(X/G);G>0&&Y>0&&(J||K||Q)?w=\"inside\":(w=\"outside\",H.remove(),H=null)}else w=\"inside\";if(!H){W=a.ensureUniformFontSize(t,\"outside\"===w?U:j);var $=(H=P(r,z,W)).attr(\"transform\");if(H.attr(\"transform\",\"\"),q=l.bBox(H.node()),G=q.width,Y=q.height,H.attr(\"transform\",$),G<=0||Y<=0)return void H.remove()}var tt,et,rt=I.textangle;\"outside\"===w?(et=\"both\"===I.constraintext||\"outside\"===I.constraintext,tt=function(t,e,r,n,i,a){var o,s=!!a.isHorizontal,l=!!a.constrained,c=a.angle||0,u=i.width,f=i.height,h=Math.abs(e-t),p=Math.abs(n-r);o=s?p>2*_?_:0:h>2*_?_:0;var d=1;l&&(d=s?Math.min(1,p/f):Math.min(1,h/u));var g=S(c),m=E(i,g),v=(s?m.x:m.y)/2,y=(i.left+i.right)/2,x=(i.top+i.bottom)/2,b=(t+e)/2,w=(r+n)/2,T=0,A=0,M=s?k(e,t):k(r,n);s?(b=e-M*o,T=M*v):(w=n+M*o,A=-M*v);return{textX:y,textY:x,targetX:b,targetY:w,anchorX:T,anchorY:A,scale:d,rotate:g}}(s,c,f,p,q,{isHorizontal:O,constrained:et,angle:rt})):(et=\"both\"===I.constraintext||\"inside\"===I.constraintext,tt=L(s,c,f,p,q,{isHorizontal:O,constrained:et,angle:rt,anchor:I.insidetextanchor}));tt.fontSize=W.size,h(\"histogram\"===I.type?\"bar\":I.type,tt,C),R.transform=tt,A(H,C,m,v).attr(\"transform\",a.getTextTransform(tt))}(t,e,I,r,p,B,N,j,U,m,v),e.layerClipId&&l.hideOutsideRangePoint(c,I.select(\"text\"),w,C,f.xcalendar,f.ycalendar)}));var j=!1===f.cliponaxis;l.setClipUrl(c,j?null:e.layerClipId,t)}));c.getComponentMethod(\"errorbars\",\"plot\")(t,I,e,m)},toMoveInsideBar:L}},{\"../../components/color\":366,\"../../components/drawing\":388,\"../../components/fx/helpers\":402,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../../plots/cartesian/axes\":554,\"../../registry\":638,\"./attributes\":648,\"./constants\":650,\"./helpers\":654,\"./style\":662,\"./uniform_text\":664,\"@plotly/d3\":58,\"fast-isnumeric\":190}],660:[function(t,e,r){\"use strict\";function n(t,e,r,n,i){var a=e.c2p(n?t.s0:t.p0,!0),o=e.c2p(n?t.s1:t.p1,!0),s=r.c2p(n?t.p0:t.s0,!0),l=r.c2p(n?t.p1:t.s1,!0);return i?[(a+o)/2,(s+l)/2]:n?[o,(s+l)/2]:[(a+o)/2,l]}e.exports=function(t,e){var r,i=t.cd,a=t.xaxis,o=t.yaxis,s=i[0].trace,l=\"funnel\"===s.type,c=\"h\"===s.orientation,u=[];if(!1===e)for(r=0;r1||0===i.bargap&&0===i.bargroupgap&&!t[0].trace.marker.line.width)&&n.select(this).attr(\"shape-rendering\",\"crispEdges\")})),e.selectAll(\"g.points\").each((function(e){d(n.select(this),e[0].trace,t)})),s.getComponentMethod(\"errorbars\",\"style\")(e)},styleTextPoints:g,styleOnSelect:function(t,e,r){var i=e[0].trace;i.selectedpoints?function(t,e,r){a.selectedPointStyle(t.selectAll(\"path\"),e),function(t,e,r){t.each((function(t){var i,s=n.select(this);if(t.selected){i=o.ensureUniformFontSize(r,m(s,t,e,r));var l=e.selected.textfont&&e.selected.textfont.color;l&&(i.color=l),a.font(s,i)}else a.selectedTextStyle(s,e)}))}(t.selectAll(\"text\"),e,r)}(r,i,t):(d(r,i,t),s.getComponentMethod(\"errorbars\",\"style\")(r))},getInsideTextFont:y,getOutsideTextFont:x,getBarColor:_,resizeText:l}},{\"../../components/color\":366,\"../../components/drawing\":388,\"../../lib\":503,\"../../registry\":638,\"./attributes\":648,\"./helpers\":654,\"./uniform_text\":664,\"@plotly/d3\":58}],663:[function(t,e,r){\"use strict\";var n=t(\"../../components/color\"),i=t(\"../../components/colorscale/helpers\").hasColorscale,a=t(\"../../components/colorscale/defaults\"),o=t(\"../../lib\").coercePattern;e.exports=function(t,e,r,s,l){var c=r(\"marker.color\",s),u=i(t,\"marker\");u&&a(t,e,l,r,{prefix:\"marker.\",cLetter:\"c\"}),r(\"marker.line.color\",n.defaultLine),i(t,\"marker.line\")&&a(t,e,l,r,{prefix:\"marker.line.\",cLetter:\"c\"}),r(\"marker.line.width\"),r(\"marker.opacity\"),o(r,\"marker.pattern\",c,u),r(\"selected.marker.color\"),r(\"unselected.marker.color\")}},{\"../../components/color\":366,\"../../components/colorscale/defaults\":376,\"../../components/colorscale/helpers\":377,\"../../lib\":503}],664:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\");function a(t){return\"_\"+t+\"Text_minsize\"}e.exports={recordMinTextSize:function(t,e,r){if(r.uniformtext.mode){var n=a(t),i=r.uniformtext.minsize,o=e.scale*e.fontSize;e.hide=o g.point\"}e.selectAll(s).each((function(t){var e=t.transform;e&&(e.scale=l&&e.hide?0:o/e.fontSize,n.select(this).select(\"text\").attr(\"transform\",i.getTextTransform(e)))}))}}}},{\"../../lib\":503,\"@plotly/d3\":58}],665:[function(t,e,r){\"use strict\";var n=t(\"../../plots/template_attributes\").hovertemplateAttrs,i=t(\"../../lib/extend\").extendFlat,a=t(\"../scatterpolar/attributes\"),o=t(\"../bar/attributes\");e.exports={r:a.r,theta:a.theta,r0:a.r0,dr:a.dr,theta0:a.theta0,dtheta:a.dtheta,thetaunit:a.thetaunit,base:i({},o.base,{}),offset:i({},o.offset,{}),width:i({},o.width,{}),text:i({},o.text,{}),hovertext:i({},o.hovertext,{}),marker:o.marker,hoverinfo:a.hoverinfo,hovertemplate:n(),selected:o.selected,unselected:o.unselected}},{\"../../lib/extend\":493,\"../../plots/template_attributes\":633,\"../bar/attributes\":648,\"../scatterpolar/attributes\":1e3}],666:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/helpers\").hasColorscale,i=t(\"../../components/colorscale/calc\"),a=t(\"../bar/arrays_to_calcdata\"),o=t(\"../bar/cross_trace_calc\").setGroupPositions,s=t(\"../scatter/calc_selection\"),l=t(\"../../registry\").traceIs,c=t(\"../../lib\").extendFlat;e.exports={calc:function(t,e){for(var r=t._fullLayout,o=e.subplot,l=r[o].radialaxis,c=r[o].angularaxis,u=l.makeCalcdata(e,\"r\"),f=c.makeCalcdata(e,\"theta\"),h=e._length,p=new Array(h),d=u,g=f,m=0;mh.range[1]&&(x+=Math.PI);if(n.getClosest(c,(function(t){return g(y,x,[t.rp0,t.rp1],[t.thetag0,t.thetag1],d)?m+Math.min(1,Math.abs(t.thetag1-t.thetag0)/v)-1+(t.rp1-y)/(t.rp1-t.rp0)-1:1/0}),t),!1!==t.index){var b=c[t.index];t.x0=t.x1=b.ct[0],t.y0=t.y1=b.ct[1];var _=i.extendFlat({},b,{r:b.s,theta:b.p});return o(b,u,t),s(_,u,f,t),t.hovertemplate=u.hovertemplate,t.color=a(u,b),t.xLabelVal=t.yLabelVal=void 0,b.s<0&&(t.idealAlign=\"left\"),[t]}}},{\"../../components/fx\":406,\"../../lib\":503,\"../../plots/polar/helpers\":621,\"../bar/hover\":655,\"../scatterpolar/hover\":1004}],669:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"barpolar\",basePlotModule:t(\"../../plots/polar\"),categories:[\"polar\",\"bar\",\"showLegend\"],attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\"),supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\").calc,crossTraceCalc:t(\"./calc\").crossTraceCalc,plot:t(\"./plot\"),colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"../scatterpolar/format_labels\"),style:t(\"../bar/style\").style,styleOnSelect:t(\"../bar/style\").styleOnSelect,hoverPoints:t(\"./hover\"),selectPoints:t(\"../bar/select\"),meta:{}}},{\"../../plots/polar\":622,\"../bar/select\":660,\"../bar/style\":662,\"../scatter/marker_colorbar\":944,\"../scatterpolar/format_labels\":1003,\"./attributes\":665,\"./calc\":666,\"./defaults\":667,\"./hover\":668,\"./layout_attributes\":670,\"./layout_defaults\":671,\"./plot\":672}],670:[function(t,e,r){\"use strict\";e.exports={barmode:{valType:\"enumerated\",values:[\"stack\",\"overlay\"],dflt:\"stack\",editType:\"calc\"},bargap:{valType:\"number\",dflt:.1,min:0,max:1,editType:\"calc\"}}},{}],671:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e,r){var a,o={};function s(r,o){return n.coerce(t[a]||{},e[a],i,r,o)}for(var l=0;l0?(c=o,u=l):(c=l,u=o);var f=[s.findEnclosingVertexAngles(c,t.vangles)[0],(c+u)/2,s.findEnclosingVertexAngles(u,t.vangles)[1]];return s.pathPolygonAnnulus(n,i,c,u,f,e,r)};return function(t,n,i,o){return a.pathAnnulus(t,n,i,o,e,r)}}(e),p=e.layers.frontplot.select(\"g.barlayer\");a.makeTraceGroups(p,r,\"trace bars\").each((function(){var r=n.select(this),s=a.ensureSingle(r,\"g\",\"points\").selectAll(\"g.point\").data(a.identity);s.enter().append(\"g\").style(\"vector-effect\",\"non-scaling-stroke\").style(\"stroke-miterlimit\",2).classed(\"point\",!0),s.exit().remove(),s.each((function(t){var e,r=n.select(this),o=t.rp0=u.c2p(t.s0),s=t.rp1=u.c2p(t.s1),p=t.thetag0=f.c2g(t.p0),d=t.thetag1=f.c2g(t.p1);if(i(o)&&i(s)&&i(p)&&i(d)&&o!==s&&p!==d){var g=u.c2g(t.s1),m=(p+d)/2;t.ct=[l.c2p(g*Math.cos(m)),c.c2p(g*Math.sin(m))],e=h(o,s,p,d)}else e=\"M0,0Z\";a.ensureSingle(r,\"path\").attr(\"d\",e)})),o.setClipUrl(r,e._hasClipOnAxisFalse?e.clipIds.forTraces:null,t)}))}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../plots/polar/helpers\":621,\"@plotly/d3\":58,\"fast-isnumeric\":190}],673:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\"),i=t(\"../bar/attributes\"),a=t(\"../../components/color/attributes\"),o=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,s=t(\"../../plots/template_attributes\").hovertemplateAttrs,l=t(\"../../lib/extend\").extendFlat,c=n.marker,u=c.line;e.exports={y:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},x:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},x0:{valType:\"any\",editType:\"calc+clearAxisTypes\"},y0:{valType:\"any\",editType:\"calc+clearAxisTypes\"},dx:{valType:\"number\",editType:\"calc\"},dy:{valType:\"number\",editType:\"calc\"},xperiod:n.xperiod,yperiod:n.yperiod,xperiod0:n.xperiod0,yperiod0:n.yperiod0,xperiodalignment:n.xperiodalignment,yperiodalignment:n.yperiodalignment,xhoverformat:o(\"x\"),yhoverformat:o(\"y\"),name:{valType:\"string\",editType:\"calc+clearAxisTypes\"},q1:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},median:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},q3:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},lowerfence:{valType:\"data_array\",editType:\"calc\"},upperfence:{valType:\"data_array\",editType:\"calc\"},notched:{valType:\"boolean\",editType:\"calc\"},notchwidth:{valType:\"number\",min:0,max:.5,dflt:.25,editType:\"calc\"},notchspan:{valType:\"data_array\",editType:\"calc\"},boxpoints:{valType:\"enumerated\",values:[\"all\",\"outliers\",\"suspectedoutliers\",!1],editType:\"calc\"},jitter:{valType:\"number\",min:0,max:1,editType:\"calc\"},pointpos:{valType:\"number\",min:-2,max:2,editType:\"calc\"},boxmean:{valType:\"enumerated\",values:[!0,\"sd\",!1],editType:\"calc\"},mean:{valType:\"data_array\",editType:\"calc\"},sd:{valType:\"data_array\",editType:\"calc\"},orientation:{valType:\"enumerated\",values:[\"v\",\"h\"],editType:\"calc+clearAxisTypes\"},quartilemethod:{valType:\"enumerated\",values:[\"linear\",\"exclusive\",\"inclusive\"],dflt:\"linear\",editType:\"calc\"},width:{valType:\"number\",min:0,dflt:0,editType:\"calc\"},marker:{outliercolor:{valType:\"color\",dflt:\"rgba(0, 0, 0, 0)\",editType:\"style\"},symbol:l({},c.symbol,{arrayOk:!1,editType:\"plot\"}),opacity:l({},c.opacity,{arrayOk:!1,dflt:1,editType:\"style\"}),size:l({},c.size,{arrayOk:!1,editType:\"calc\"}),color:l({},c.color,{arrayOk:!1,editType:\"style\"}),line:{color:l({},u.color,{arrayOk:!1,dflt:a.defaultLine,editType:\"style\"}),width:l({},u.width,{arrayOk:!1,dflt:0,editType:\"style\"}),outliercolor:{valType:\"color\",editType:\"style\"},outlierwidth:{valType:\"number\",min:0,dflt:1,editType:\"style\"},editType:\"style\"},editType:\"plot\"},line:{color:{valType:\"color\",editType:\"style\"},width:{valType:\"number\",min:0,dflt:2,editType:\"style\"},editType:\"plot\"},fillcolor:n.fillcolor,whiskerwidth:{valType:\"number\",min:0,max:1,dflt:.5,editType:\"calc\"},offsetgroup:i.offsetgroup,alignmentgroup:i.alignmentgroup,selected:{marker:n.selected.marker,editType:\"style\"},unselected:{marker:n.unselected.marker,editType:\"style\"},text:l({},n.text,{}),hovertext:l({},n.hovertext,{}),hovertemplate:s({}),hoveron:{valType:\"flaglist\",flags:[\"boxes\",\"points\"],dflt:\"boxes+points\",editType:\"style\"}}},{\"../../components/color/attributes\":365,\"../../lib/extend\":493,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/template_attributes\":633,\"../bar/attributes\":648,\"../scatter/attributes\":926}],674:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"../../plots/cartesian/align_period\"),o=t(\"../../lib\"),s=t(\"../../constants/numerical\").BADNUM,l=o._;e.exports=function(t,e){var r,c,y,x,b,_,w,T=t._fullLayout,k=i.getFromId(t,e.xaxis||\"x\"),A=i.getFromId(t,e.yaxis||\"y\"),M=[],S=\"violin\"===e.type?\"_numViolins\":\"_numBoxes\";\"h\"===e.orientation?(y=k,x=\"x\",b=A,_=\"y\",w=!!e.yperiodalignment):(y=A,x=\"y\",b=k,_=\"x\",w=!!e.xperiodalignment);var E,L,C,P,I,O,z=function(t,e,r,i){var s,l=e+\"0\"in t,c=\"d\"+e in t;if(e in t||l&&c){var u=r.makeCalcdata(t,e);return[a(t,r,e,u).vals,u]}s=l?t[e+\"0\"]:\"name\"in t&&(\"category\"===r.type||n(t.name)&&-1!==[\"linear\",\"log\"].indexOf(r.type)||o.isDateTime(t.name)&&\"date\"===r.type)?t.name:i;for(var f=\"multicategory\"===r.type?r.r2c_just_indices(s):r.d2c(s,0,t[e+\"calendar\"]),h=t._length,p=new Array(h),d=0;dE.uf};if(e._hasPreCompStats){var U=e[x],V=function(t){return y.d2c((e[t]||[])[r])},H=1/0,q=-1/0;for(r=0;r=E.q1&&E.q3>=E.med){var Y=V(\"lowerfence\");E.lf=Y!==s&&Y<=E.q1?Y:p(E,C,P);var W=V(\"upperfence\");E.uf=W!==s&&W>=E.q3?W:d(E,C,P);var X=V(\"mean\");E.mean=X!==s?X:P?o.mean(C,P):(E.q1+E.q3)/2;var Z=V(\"sd\");E.sd=X!==s&&Z>=0?Z:P?o.stdev(C,P,E.mean):E.q3-E.q1,E.lo=g(E),E.uo=m(E);var J=V(\"notchspan\");J=J!==s&&J>0?J:v(E,P),E.ln=E.med-J,E.un=E.med+J;var K=E.lf,Q=E.uf;e.boxpoints&&C.length&&(K=Math.min(K,C[0]),Q=Math.max(Q,C[P-1])),e.notched&&(K=Math.min(K,E.ln),Q=Math.max(Q,E.un)),E.min=K,E.max=Q}else{var $;o.warn([\"Invalid input - make sure that q1 <= median <= q3\",\"q1 = \"+E.q1,\"median = \"+E.med,\"q3 = \"+E.q3].join(\"\\n\")),$=E.med!==s?E.med:E.q1!==s?E.q3!==s?(E.q1+E.q3)/2:E.q1:E.q3!==s?E.q3:0,E.med=$,E.q1=E.q3=$,E.lf=E.uf=$,E.mean=E.sd=$,E.ln=E.un=$,E.min=E.max=$}H=Math.min(H,E.min),q=Math.max(q,E.max),E.pts2=L.filter(j),M.push(E)}}e._extremes[y._id]=i.findExtremes(y,[H,q],{padded:!0})}else{var tt=y.makeCalcdata(e,x),et=function(t,e){for(var r=t.length,n=new Array(r+1),i=0;i=0&&it0){var ut,ft;if((E={}).pos=E[_]=B[r],L=E.pts=nt[r].sort(f),P=(C=E[x]=L.map(h)).length,E.min=C[0],E.max=C[P-1],E.mean=o.mean(C,P),E.sd=o.stdev(C,P,E.mean),E.med=o.interp(C,.5),P%2&&(lt||ct))lt?(ut=C.slice(0,P/2),ft=C.slice(P/2+1)):ct&&(ut=C.slice(0,P/2+1),ft=C.slice(P/2)),E.q1=o.interp(ut,.5),E.q3=o.interp(ft,.5);else E.q1=o.interp(C,.25),E.q3=o.interp(C,.75);E.lf=p(E,C,P),E.uf=d(E,C,P),E.lo=g(E),E.uo=m(E);var ht=v(E,P);E.ln=E.med-ht,E.un=E.med+ht,at=Math.min(at,E.ln),ot=Math.max(ot,E.un),E.pts2=L.filter(j),M.push(E)}e._extremes[y._id]=i.findExtremes(y,e.notched?tt.concat([at,ot]):tt,{padded:!0})}return function(t,e){if(o.isArrayOrTypedArray(e.selectedpoints))for(var r=0;r0?(M[0].t={num:T[S],dPos:N,posLetter:_,valLetter:x,labels:{med:l(t,\"median:\"),min:l(t,\"min:\"),q1:l(t,\"q1:\"),q3:l(t,\"q3:\"),max:l(t,\"max:\"),mean:\"sd\"===e.boxmean?l(t,\"mean \\xb1 \\u03c3:\"):l(t,\"mean:\"),lf:l(t,\"lower fence:\"),uf:l(t,\"upper fence:\")}},T[S]++,M):[{t:{empty:!0}}]};var c={text:\"tx\",hovertext:\"htx\"};function u(t,e,r){for(var n in c)o.isArrayOrTypedArray(e[n])&&(Array.isArray(r)?o.isArrayOrTypedArray(e[n][r[0]])&&(t[c[n]]=e[n][r[0]][r[1]]):t[c[n]]=e[n][r])}function f(t,e){return t.v-e.v}function h(t){return t.v}function p(t,e,r){return 0===r?t.q1:Math.min(t.q1,e[Math.min(o.findBin(2.5*t.q1-1.5*t.q3,e,!0)+1,r-1)])}function d(t,e,r){return 0===r?t.q3:Math.max(t.q3,e[Math.max(o.findBin(2.5*t.q3-1.5*t.q1,e),0)])}function g(t){return 4*t.q1-3*t.q3}function m(t){return 4*t.q3-3*t.q1}function v(t,e){return 0===e?0:1.57*(t.q3-t.q1)/Math.sqrt(e)}},{\"../../constants/numerical\":479,\"../../lib\":503,\"../../plots/cartesian/align_period\":551,\"../../plots/cartesian/axes\":554,\"fast-isnumeric\":190}],675:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/axes\"),i=t(\"../../lib\"),a=t(\"../../plots/cartesian/constraints\").getAxisGroup,o=[\"v\",\"h\"];function s(t,e,r,o){var s,l,c,u=e.calcdata,f=e._fullLayout,h=o._id,p=h.charAt(0),d=[],g=0;for(s=0;s1,b=1-f[t+\"gap\"],_=1-f[t+\"groupgap\"];for(s=0;s0){var q=E.pointpos,G=E.jitter,Y=E.marker.size/2,W=0;q+G>=0&&((W=V*(q+G))>M?(H=!0,j=Y,B=W):W>R&&(j=Y,B=M)),W<=M&&(B=M);var X=0;q-G<=0&&((X=-V*(q-G))>S?(H=!0,U=Y,N=X):X>F&&(U=Y,N=S)),X<=S&&(N=S)}else B=M,N=S;var Z=new Array(c.length);for(l=0;l0?(m=\"v\",v=x>0?Math.min(_,b):Math.min(b)):x>0?(m=\"h\",v=Math.min(_)):v=0;if(v){e._length=v;var S=r(\"orientation\",m);e._hasPreCompStats?\"v\"===S&&0===x?(r(\"x0\",0),r(\"dx\",1)):\"h\"===S&&0===y&&(r(\"y0\",0),r(\"dy\",1)):\"v\"===S&&0===x?r(\"x0\"):\"h\"===S&&0===y&&r(\"y0\"),i.getComponentMethod(\"calendars\",\"handleTraceDefaults\")(t,e,[\"x\",\"y\"],a)}else e.visible=!1}function f(t,e,r,i){var a=i.prefix,o=n.coerce2(t,e,c,\"marker.outliercolor\"),s=r(\"marker.line.outliercolor\"),l=\"outliers\";e._hasPreCompStats?l=\"all\":(o||s)&&(l=\"suspectedoutliers\");var u=r(a+\"points\",l);u?(r(\"jitter\",\"all\"===u?.3:0),r(\"pointpos\",\"all\"===u?-1.5:0),r(\"marker.symbol\"),r(\"marker.opacity\"),r(\"marker.size\"),r(\"marker.color\",e.line.color),r(\"marker.line.color\"),r(\"marker.line.width\"),\"suspectedoutliers\"===u&&(r(\"marker.line.outliercolor\",e.marker.color),r(\"marker.line.outlierwidth\")),r(\"selected.marker.color\"),r(\"unselected.marker.color\"),r(\"selected.marker.size\"),r(\"unselected.marker.size\"),r(\"text\"),r(\"hovertext\")):delete e.marker;var f=r(\"hoveron\");\"all\"!==f&&-1===f.indexOf(\"points\")||r(\"hovertemplate\"),n.coerceSelectionMarkerOpacity(e,r)}e.exports={supplyDefaults:function(t,e,r,i){function s(r,i){return n.coerce(t,e,c,r,i)}if(u(t,e,s,i),!1!==e.visible){o(t,e,i,s),s(\"xhoverformat\"),s(\"yhoverformat\");var l=e._hasPreCompStats;l&&(s(\"lowerfence\"),s(\"upperfence\")),s(\"line.color\",(t.marker||{}).color||r),s(\"line.width\"),s(\"fillcolor\",a.addOpacity(e.line.color,.5));var h=!1;if(l){var p=s(\"mean\"),d=s(\"sd\");p&&p.length&&(h=!0,d&&d.length&&(h=\"sd\"))}s(\"boxmean\",h),s(\"whiskerwidth\"),s(\"width\"),s(\"quartilemethod\");var g=!1;if(l){var m=s(\"notchspan\");m&&m.length&&(g=!0)}else n.validate(t.notchwidth,c.notchwidth)&&(g=!0);s(\"notched\",g)&&s(\"notchwidth\"),f(t,e,s,{prefix:\"box\"})}},crossTraceDefaults:function(t,e){var r,i;function a(t){return n.coerce(i._input,i,c,t)}for(var o=0;ot.lo&&(x.so=!0)}return a}));h.enter().append(\"path\").classed(\"point\",!0),h.exit().remove(),h.call(a.translatePoints,o,s)}function l(t,e,r,a){var o,s,l=e.val,c=e.pos,u=!!c.rangebreaks,f=a.bPos,h=a.bPosPxOffset||0,p=r.boxmean||(r.meanline||{}).visible;Array.isArray(a.bdPos)?(o=a.bdPos[0],s=a.bdPos[1]):(o=a.bdPos,s=a.bdPos);var d=t.selectAll(\"path.mean\").data(\"box\"===r.type&&r.boxmean||\"violin\"===r.type&&r.box.visible&&r.meanline.visible?i.identity:[]);d.enter().append(\"path\").attr(\"class\",\"mean\").style({fill:\"none\",\"vector-effect\":\"non-scaling-stroke\"}),d.exit().remove(),d.each((function(t){var e=c.c2l(t.pos+f,!0),i=c.l2p(e-o)+h,a=c.l2p(e+s)+h,d=u?(i+a)/2:c.l2p(e)+h,g=l.c2p(t.mean,!0),m=l.c2p(t.mean-t.sd,!0),v=l.c2p(t.mean+t.sd,!0);\"h\"===r.orientation?n.select(this).attr(\"d\",\"M\"+g+\",\"+i+\"V\"+a+(\"sd\"===p?\"m0,0L\"+m+\",\"+d+\"L\"+g+\",\"+i+\"L\"+v+\",\"+d+\"Z\":\"\")):n.select(this).attr(\"d\",\"M\"+i+\",\"+g+\"H\"+a+(\"sd\"===p?\"m0,0L\"+d+\",\"+m+\"L\"+i+\",\"+g+\"L\"+d+\",\"+v+\"Z\":\"\"))}))}e.exports={plot:function(t,e,r,a){var c=e.xaxis,u=e.yaxis;i.makeTraceGroups(a,r,\"trace boxes\").each((function(t){var e,r,i=n.select(this),a=t[0],f=a.t,h=a.trace;(f.wdPos=f.bdPos*h.whiskerwidth,!0!==h.visible||f.empty)?i.remove():(\"h\"===h.orientation?(e=u,r=c):(e=c,r=u),o(i,{pos:e,val:r},h,f),s(i,{x:c,y:u},h,f),l(i,{pos:e,val:r},h,f))}))},plotBoxAndWhiskers:o,plotPoints:s,plotBoxMean:l}},{\"../../components/drawing\":388,\"../../lib\":503,\"@plotly/d3\":58}],683:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r,n,i=t.cd,a=t.xaxis,o=t.yaxis,s=[];if(!1===e)for(r=0;r=10)return null;for(var i=1/0,a=-1/0,o=e.length,s=0;s0?Math.floor:Math.ceil,I=L>0?Math.ceil:Math.floor,O=L>0?Math.min:Math.max,z=L>0?Math.max:Math.min,D=P(S+C),R=I(E-C),F=[[f=M(S)]];for(a=D;a*L=0;i--)a[u-i]=t[f][i],o[u-i]=e[f][i];for(s.push({x:a,y:o,bicubic:l}),i=f,a=[],o=[];i>=0;i--)a[f-i]=t[i][0],o[f-i]=e[i][0];return s.push({x:a,y:o,bicubic:c}),s}},{}],697:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/axes\"),i=t(\"../../lib/extend\").extendFlat;e.exports=function(t,e,r){var a,o,s,l,c,u,f,h,p,d,g,m,v,y,x=t[\"_\"+e],b=t[e+\"axis\"],_=b._gridlines=[],w=b._minorgridlines=[],T=b._boundarylines=[],k=t[\"_\"+r],A=t[r+\"axis\"];\"array\"===b.tickmode&&(b.tickvals=x.slice());var M=t._xctrl,S=t._yctrl,E=M[0].length,L=M.length,C=t._a.length,P=t._b.length;n.prepTicks(b),\"array\"===b.tickmode&&delete b.tickvals;var I=b.smoothing?3:1;function O(n){var i,a,o,s,l,c,u,f,p,d,g,m,v=[],y=[],x={};if(\"b\"===e)for(a=t.b2j(n),o=Math.floor(Math.max(0,Math.min(P-2,a))),s=a-o,x.length=P,x.crossLength=C,x.xy=function(e){return t.evalxy([],e,a)},x.dxy=function(e,r){return t.dxydi([],e,o,r,s)},i=0;i0&&(p=t.dxydi([],i-1,o,0,s),v.push(l[0]+p[0]/3),y.push(l[1]+p[1]/3),d=t.dxydi([],i-1,o,1,s),v.push(f[0]-d[0]/3),y.push(f[1]-d[1]/3)),v.push(f[0]),y.push(f[1]),l=f;else for(i=t.a2i(n),c=Math.floor(Math.max(0,Math.min(C-2,i))),u=i-c,x.length=C,x.crossLength=P,x.xy=function(e){return t.evalxy([],i,e)},x.dxy=function(e,r){return t.dxydj([],c,e,u,r)},a=0;a0&&(g=t.dxydj([],c,a-1,u,0),v.push(l[0]+g[0]/3),y.push(l[1]+g[1]/3),m=t.dxydj([],c,a-1,u,1),v.push(f[0]-m[0]/3),y.push(f[1]-m[1]/3)),v.push(f[0]),y.push(f[1]),l=f;return x.axisLetter=e,x.axis=b,x.crossAxis=A,x.value=n,x.constvar=r,x.index=h,x.x=v,x.y=y,x.smoothing=A.smoothing,x}function z(n){var i,a,o,s,l,c=[],u=[],f={};if(f.length=x.length,f.crossLength=k.length,\"b\"===e)for(o=Math.max(0,Math.min(P-2,n)),l=Math.min(1,Math.max(0,n-o)),f.xy=function(e){return t.evalxy([],e,n)},f.dxy=function(e,r){return t.dxydi([],e,o,r,l)},i=0;ix.length-1||_.push(i(z(o),{color:b.gridcolor,width:b.gridwidth}));for(h=u;hx.length-1||g<0||g>x.length-1))for(m=x[s],v=x[g],a=0;ax[x.length-1]||w.push(i(O(d),{color:b.minorgridcolor,width:b.minorgridwidth}));b.startline&&T.push(i(z(0),{color:b.startlinecolor,width:b.startlinewidth})),b.endline&&T.push(i(z(x.length-1),{color:b.endlinecolor,width:b.endlinewidth}))}else{for(l=5e-15,u=(c=[Math.floor((x[x.length-1]-b.tick0)/b.dtick*(1+l)),Math.ceil((x[0]-b.tick0)/b.dtick/(1+l))].sort((function(t,e){return t-e})))[0],f=c[1],h=u;h<=f;h++)p=b.tick0+b.dtick*h,_.push(i(O(p),{color:b.gridcolor,width:b.gridwidth}));for(h=u-1;hx[x.length-1]||w.push(i(O(d),{color:b.minorgridcolor,width:b.minorgridwidth}));b.startline&&T.push(i(O(x[0]),{color:b.startlinecolor,width:b.startlinewidth})),b.endline&&T.push(i(O(x[x.length-1]),{color:b.endlinecolor,width:b.endlinewidth}))}}},{\"../../lib/extend\":493,\"../../plots/cartesian/axes\":554}],698:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/axes\"),i=t(\"../../lib/extend\").extendFlat;e.exports=function(t,e){var r,a,o,s=e._labels=[],l=e._gridlines;for(r=0;re.length&&(t=t.slice(0,e.length)):t=[],i=0;i90&&(p-=180,l=-l),{angle:p,flip:l,p:t.c2p(n,e,r),offsetMultplier:c}}},{}],712:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../components/drawing\"),a=t(\"./map_1d_array\"),o=t(\"./makepath\"),s=t(\"./orient_text\"),l=t(\"../../lib/svg_text_utils\"),c=t(\"../../lib\"),u=c.strRotate,f=c.strTranslate,h=t(\"../../constants/alignment\");function p(t,e,r,i,s,l){var c=\"const-\"+s+\"-lines\",u=r.selectAll(\".\"+c).data(l);u.enter().append(\"path\").classed(c,!0).style(\"vector-effect\",\"non-scaling-stroke\"),u.each((function(r){var i=r,s=i.x,l=i.y,c=a([],s,t.c2p),u=a([],l,e.c2p),f=\"M\"+o(c,u,i.smoothing);n.select(this).attr(\"d\",f).style(\"stroke-width\",i.width).style(\"stroke\",i.color).style(\"fill\",\"none\")})),u.exit().remove()}function d(t,e,r,a,o,c,h,p){var d=c.selectAll(\"text.\"+p).data(h);d.enter().append(\"text\").classed(p,!0);var g=0,m={};return d.each((function(o,c){var h;if(\"auto\"===o.axis.tickangle)h=s(a,e,r,o.xy,o.dxy);else{var p=(o.axis.tickangle+180)*Math.PI/180;h=s(a,e,r,o.xy,[Math.cos(p),Math.sin(p)])}c||(m={angle:h.angle,flip:h.flip});var d=(o.endAnchor?-1:1)*h.flip,v=n.select(this).attr({\"text-anchor\":d>0?\"start\":\"end\",\"data-notex\":1}).call(i.font,o.font).text(o.text).call(l.convertToTspans,t),y=i.bBox(this);v.attr(\"transform\",f(h.p[0],h.p[1])+u(h.angle)+f(o.axis.labelpadding*d,.3*y.height)),g=Math.max(g,y.width+o.axis.labelpadding)})),d.exit().remove(),m.maxExtent=g,m}e.exports=function(t,e,r,i){var l=e.xaxis,u=e.yaxis,f=t._fullLayout._clips;c.makeTraceGroups(i,r,\"trace\").each((function(e){var r=n.select(this),i=e[0],h=i.trace,g=h.aaxis,m=h.baxis,y=c.ensureSingle(r,\"g\",\"minorlayer\"),x=c.ensureSingle(r,\"g\",\"majorlayer\"),b=c.ensureSingle(r,\"g\",\"boundarylayer\"),_=c.ensureSingle(r,\"g\",\"labellayer\");r.style(\"opacity\",h.opacity),p(l,u,x,g,\"a\",g._gridlines),p(l,u,x,m,\"b\",m._gridlines),p(l,u,y,g,\"a\",g._minorgridlines),p(l,u,y,m,\"b\",m._minorgridlines),p(l,u,b,g,\"a-boundary\",g._boundarylines),p(l,u,b,m,\"b-boundary\",m._boundarylines);var w=d(t,l,u,h,i,_,g._labels,\"a-label\"),T=d(t,l,u,h,i,_,m._labels,\"b-label\");!function(t,e,r,n,i,a,o,l){var u,f,h,p,d=c.aggNums(Math.min,null,r.a),g=c.aggNums(Math.max,null,r.a),m=c.aggNums(Math.min,null,r.b),y=c.aggNums(Math.max,null,r.b);u=.5*(d+g),f=m,h=r.ab2xy(u,f,!0),p=r.dxyda_rough(u,f),void 0===o.angle&&c.extendFlat(o,s(r,i,a,h,r.dxydb_rough(u,f)));v(t,e,r,n,h,p,r.aaxis,i,a,o,\"a-title\"),u=d,f=.5*(m+y),h=r.ab2xy(u,f,!0),p=r.dxydb_rough(u,f),void 0===l.angle&&c.extendFlat(l,s(r,i,a,h,r.dxyda_rough(u,f)));v(t,e,r,n,h,p,r.baxis,i,a,l,\"b-title\")}(t,_,h,i,l,u,w,T),function(t,e,r,n,i){var s,l,u,f,h=r.select(\"#\"+t._clipPathId);h.size()||(h=r.append(\"clipPath\").classed(\"carpetclip\",!0));var p=c.ensureSingle(h,\"path\",\"carpetboundary\"),d=e.clipsegments,g=[];for(f=0;f90&&y<270,b=n.select(this);b.text(h.title.text).call(l.convertToTspans,t),x&&(_=(-l.lineCount(b)+m)*g*a-_),b.attr(\"transform\",f(e.p[0],e.p[1])+u(e.angle)+f(0,_)).attr(\"text-anchor\",\"middle\").call(i.font,h.title.font)})),b.exit().remove()}},{\"../../components/drawing\":388,\"../../constants/alignment\":471,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"./makepath\":709,\"./map_1d_array\":710,\"./orient_text\":711,\"@plotly/d3\":58}],713:[function(t,e,r){\"use strict\";var n=t(\"./constants\"),i=t(\"../../lib/search\").findBin,a=t(\"./compute_control_points\"),o=t(\"./create_spline_evaluator\"),s=t(\"./create_i_derivative_evaluator\"),l=t(\"./create_j_derivative_evaluator\");e.exports=function(t){var e=t._a,r=t._b,c=e.length,u=r.length,f=t.aaxis,h=t.baxis,p=e[0],d=e[c-1],g=r[0],m=r[u-1],v=e[e.length-1]-e[0],y=r[r.length-1]-r[0],x=v*n.RELATIVE_CULL_TOLERANCE,b=y*n.RELATIVE_CULL_TOLERANCE;p-=x,d+=x,g-=b,m+=b,t.isVisible=function(t,e){return t>p&&tg&&ed||em},t.setScale=function(){var e=t._x,r=t._y,n=a(t._xctrl,t._yctrl,e,r,f.smoothing,h.smoothing);t._xctrl=n[0],t._yctrl=n[1],t.evalxy=o([t._xctrl,t._yctrl],c,u,f.smoothing,h.smoothing),t.dxydi=s([t._xctrl,t._yctrl],f.smoothing,h.smoothing),t.dxydj=l([t._xctrl,t._yctrl],f.smoothing,h.smoothing)},t.i2a=function(t){var r=Math.max(0,Math.floor(t[0]),c-2),n=t[0]-r;return(1-n)*e[r]+n*e[r+1]},t.j2b=function(t){var e=Math.max(0,Math.floor(t[1]),c-2),n=t[1]-e;return(1-n)*r[e]+n*r[e+1]},t.ij2ab=function(e){return[t.i2a(e[0]),t.j2b(e[1])]},t.a2i=function(t){var r=Math.max(0,Math.min(i(t,e),c-2)),n=e[r],a=e[r+1];return Math.max(0,Math.min(c-1,r+(t-n)/(a-n)))},t.b2j=function(t){var e=Math.max(0,Math.min(i(t,r),u-2)),n=r[e],a=r[e+1];return Math.max(0,Math.min(u-1,e+(t-n)/(a-n)))},t.ab2ij=function(e){return[t.a2i(e[0]),t.b2j(e[1])]},t.i2c=function(e,r){return t.evalxy([],e,r)},t.ab2xy=function(n,i,a){if(!a&&(ne[c-1]|ir[u-1]))return[!1,!1];var o=t.a2i(n),s=t.b2j(i),l=t.evalxy([],o,s);if(a){var f,h,p,d,g=0,m=0,v=[];ne[c-1]?(f=c-2,h=1,g=(n-e[c-1])/(e[c-1]-e[c-2])):h=o-(f=Math.max(0,Math.min(c-2,Math.floor(o)))),ir[u-1]?(p=u-2,d=1,m=(i-r[u-1])/(r[u-1]-r[u-2])):d=s-(p=Math.max(0,Math.min(u-2,Math.floor(s)))),g&&(t.dxydi(v,f,p,h,d),l[0]+=v[0]*g,l[1]+=v[1]*g),m&&(t.dxydj(v,f,p,h,d),l[0]+=v[0]*m,l[1]+=v[1]*m)}return l},t.c2p=function(t,e,r){return[e.c2p(t[0]),r.c2p(t[1])]},t.p2x=function(t,e,r){return[e.p2c(t[0]),r.p2c(t[1])]},t.dadi=function(t){var r=Math.max(0,Math.min(e.length-2,t));return e[r+1]-e[r]},t.dbdj=function(t){var e=Math.max(0,Math.min(r.length-2,t));return r[e+1]-r[e]},t.dxyda=function(e,r,n,i){var a=t.dxydi(null,e,r,n,i),o=t.dadi(e,n);return[a[0]/o,a[1]/o]},t.dxydb=function(e,r,n,i){var a=t.dxydj(null,e,r,n,i),o=t.dbdj(r,i);return[a[0]/o,a[1]/o]},t.dxyda_rough=function(e,r,n){var i=v*(n||.1),a=t.ab2xy(e+i,r,!0),o=t.ab2xy(e-i,r,!0);return[.5*(a[0]-o[0])/i,.5*(a[1]-o[1])/i]},t.dxydb_rough=function(e,r,n){var i=y*(n||.1),a=t.ab2xy(e,r+i,!0),o=t.ab2xy(e,r-i,!0);return[.5*(a[0]-o[0])/i,.5*(a[1]-o[1])/i]},t.dpdx=function(t){return t._m},t.dpdy=function(t){return t._m}}},{\"../../lib/search\":523,\"./compute_control_points\":701,\"./constants\":702,\"./create_i_derivative_evaluator\":703,\"./create_j_derivative_evaluator\":704,\"./create_spline_evaluator\":705}],714:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t,e,r){var i,a,o,s=[],l=[],c=t[0].length,u=t.length;function f(e,r){var n,i=0,a=0;return e>0&&void 0!==(n=t[r][e-1])&&(a++,i+=n),e0&&void 0!==(n=t[r-1][e])&&(a++,i+=n),r0&&a0&&i1e-5);return n.log(\"Smoother converged to\",k,\"after\",A,\"iterations\"),t}},{\"../../lib\":503}],715:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").isArray1D;e.exports=function(t,e,r){var i=r(\"x\"),a=i&&i.length,o=r(\"y\"),s=o&&o.length;if(!a&&!s)return!1;if(e._cheater=!i,a&&!n(i)||s&&!n(o))e._length=null;else{var l=a?i.length:1/0;s&&(l=Math.min(l,o.length)),e.a&&e.a.length&&(l=Math.min(l,e.a.length)),e.b&&e.b.length&&(l=Math.min(l,e.b.length)),e._length=l}return!0}},{\"../../lib\":503}],716:[function(t,e,r){\"use strict\";var n=t(\"../../plots/template_attributes\").hovertemplateAttrs,i=t(\"../scattergeo/attributes\"),a=t(\"../../components/colorscale/attributes\"),o=t(\"../../plots/attributes\"),s=t(\"../../components/color/attributes\").defaultLine,l=t(\"../../lib/extend\").extendFlat,c=i.marker.line;e.exports=l({locations:{valType:\"data_array\",editType:\"calc\"},locationmode:i.locationmode,z:{valType:\"data_array\",editType:\"calc\"},geojson:l({},i.geojson,{}),featureidkey:i.featureidkey,text:l({},i.text,{}),hovertext:l({},i.hovertext,{}),marker:{line:{color:l({},c.color,{dflt:s}),width:l({},c.width,{dflt:1}),editType:\"calc\"},opacity:{valType:\"number\",arrayOk:!0,min:0,max:1,dflt:1,editType:\"style\"},editType:\"calc\"},selected:{marker:{opacity:i.selected.marker.opacity,editType:\"plot\"},editType:\"plot\"},unselected:{marker:{opacity:i.unselected.marker.opacity,editType:\"plot\"},editType:\"plot\"},hoverinfo:l({},o.hoverinfo,{editType:\"calc\",flags:[\"location\",\"z\",\"text\",\"name\"]}),hovertemplate:n(),showlegend:l({},o.showlegend,{dflt:!1})},a(\"\",{cLetter:\"z\",editTypeOverride:\"calc\"}))},{\"../../components/color/attributes\":365,\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/template_attributes\":633,\"../scattergeo/attributes\":968}],717:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../constants/numerical\").BADNUM,a=t(\"../../components/colorscale/calc\"),o=t(\"../scatter/arrays_to_calcdata\"),s=t(\"../scatter/calc_selection\");function l(t){return t&&\"string\"==typeof t}e.exports=function(t,e){var r,c=e._length,u=new Array(c);r=e.geojson?function(t){return l(t)||n(t)}:l;for(var f=0;f\")}(t,f,o),[t]}},{\"../../lib\":503,\"../../plots/cartesian/axes\":554,\"./attributes\":716}],721:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../heatmap/colorbar\"),calc:t(\"./calc\"),calcGeoJSON:t(\"./plot\").calcGeoJSON,plot:t(\"./plot\").plot,style:t(\"./style\").style,styleOnSelect:t(\"./style\").styleOnSelect,hoverPoints:t(\"./hover\"),eventData:t(\"./event_data\"),selectPoints:t(\"./select\"),moduleType:\"trace\",name:\"choropleth\",basePlotModule:t(\"../../plots/geo\"),categories:[\"geo\",\"noOpacity\",\"showLegend\"],meta:{}}},{\"../../plots/geo\":589,\"../heatmap/colorbar\":795,\"./attributes\":716,\"./calc\":717,\"./defaults\":718,\"./event_data\":719,\"./hover\":720,\"./plot\":722,\"./select\":723,\"./style\":724}],722:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../lib/geo_location_utils\"),o=t(\"../../lib/topojson_utils\").getTopojsonFeatures,s=t(\"../../plots/cartesian/autorange\").findExtremes,l=t(\"./style\").style;e.exports={calcGeoJSON:function(t,e){for(var r=t[0].trace,n=e[r.geo],i=n._subplot,l=r.locationmode,c=r._length,u=\"geojson-id\"===l?a.extractTraceFeature(t):o(r,i.topojson),f=[],h=[],p=0;p=0;n--){var i=r[n].id;if(\"string\"==typeof i&&0===i.indexOf(\"water\"))for(var a=n+1;a=0;r--)t.removeLayer(e[r][1])},s.dispose=function(){var t=this.subplot.map;this._removeLayers(),t.removeSource(this.sourceId)},e.exports=function(t,e){var r=e[0].trace,i=new o(t,r.uid),a=i.sourceId,s=n(e),l=i.below=t.belowLookup[\"trace-\"+r.uid];return t.map.addSource(a,{type:\"geojson\",data:s.geojson}),i._addLayers(s,l),e[0].trace._glTrace=i,i}},{\"../../plots/mapbox/constants\":611,\"./convert\":726}],730:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/attributes\"),i=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,a=t(\"../../plots/template_attributes\").hovertemplateAttrs,o=t(\"../mesh3d/attributes\"),s=t(\"../../plots/attributes\"),l=t(\"../../lib/extend\").extendFlat,c={x:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},y:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},z:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},u:{valType:\"data_array\",editType:\"calc\"},v:{valType:\"data_array\",editType:\"calc\"},w:{valType:\"data_array\",editType:\"calc\"},sizemode:{valType:\"enumerated\",values:[\"scaled\",\"absolute\"],editType:\"calc\",dflt:\"scaled\"},sizeref:{valType:\"number\",editType:\"calc\",min:0},anchor:{valType:\"enumerated\",editType:\"calc\",values:[\"tip\",\"tail\",\"cm\",\"center\"],dflt:\"cm\"},text:{valType:\"string\",dflt:\"\",arrayOk:!0,editType:\"calc\"},hovertext:{valType:\"string\",dflt:\"\",arrayOk:!0,editType:\"calc\"},hovertemplate:a({editType:\"calc\"},{keys:[\"norm\"]}),uhoverformat:i(\"u\",1),vhoverformat:i(\"v\",1),whoverformat:i(\"w\",1),xhoverformat:i(\"x\"),yhoverformat:i(\"y\"),zhoverformat:i(\"z\"),showlegend:l({},s.showlegend,{dflt:!1})};l(c,n(\"\",{colorAttr:\"u/v/w norm\",showScaleDflt:!0,editTypeOverride:\"calc\"}));[\"opacity\",\"lightposition\",\"lighting\"].forEach((function(t){c[t]=o[t]})),c.hoverinfo=l({},s.hoverinfo,{editType:\"calc\",flags:[\"x\",\"y\",\"z\",\"u\",\"v\",\"w\",\"norm\",\"text\",\"name\"],dflt:\"x+y+z+norm+text+name\"}),c.transforms=void 0,e.exports=c},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/template_attributes\":633,\"../mesh3d/attributes\":867}],731:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/calc\");e.exports=function(t,e){for(var r=e.u,i=e.v,a=e.w,o=Math.min(e.x.length,e.y.length,e.z.length,r.length,i.length,a.length),s=-1/0,l=1/0,c=0;co.level||o.starts.length&&a===o.level)}break;case\"constraint\":if(n.prefixBoundary=!1,n.edgepaths.length)return;var s=n.x.length,l=n.y.length,c=-1/0,u=1/0;for(r=0;r\":p>c&&(n.prefixBoundary=!0);break;case\"<\":(pc||n.starts.length&&h===u)&&(n.prefixBoundary=!0);break;case\"][\":f=Math.min(p[0],p[1]),h=Math.max(p[0],p[1]),fc&&(n.prefixBoundary=!0)}}}},{}],738:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale\"),i=t(\"./make_color_map\"),a=t(\"./end_plus\");e.exports={min:\"zmin\",max:\"zmax\",calc:function(t,e,r){var o=e.contours,s=e.line,l=o.size||1,c=o.coloring,u=i(e,{isColorbar:!0});if(\"heatmap\"===c){var f=n.extractOpts(e);r._fillgradient=f.reversescale?n.flipScale(f.colorscale):f.colorscale,r._zrange=[f.min,f.max]}else\"fill\"===c&&(r._fillcolor=u);r._line={color:\"lines\"===c?u:s.color,width:!1!==o.showlines?s.width:0,dash:s.dash},r._levels={start:o.start,end:a(o),size:l}}}},{\"../../components/colorscale\":378,\"./end_plus\":746,\"./make_color_map\":751}],739:[function(t,e,r){\"use strict\";e.exports={BOTTOMSTART:[1,9,13,104,713],TOPSTART:[4,6,7,104,713],LEFTSTART:[8,12,14,208,1114],RIGHTSTART:[2,3,11,208,1114],NEWDELTA:[null,[-1,0],[0,-1],[-1,0],[1,0],null,[0,-1],[-1,0],[0,1],[0,1],null,[0,1],[1,0],[1,0],[0,-1]],CHOOSESADDLE:{104:[4,1],208:[2,8],713:[7,13],1114:[11,14]},SADDLEREMAINDER:{1:4,2:8,4:1,7:13,8:2,11:14,13:7,14:11},LABELDISTANCE:2,LABELINCREASE:10,LABELMIN:3,LABELMAX:10,LABELOPTIMIZER:{EDGECOST:1,ANGLECOST:1,NEIGHBORCOST:5,SAMELEVELFACTOR:10,SAMELEVELDISTANCE:5,MAXCOST:100,INITIALSEARCHPOINTS:10,ITERATIONS:5}}},{}],740:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"./label_defaults\"),a=t(\"../../components/color\"),o=a.addOpacity,s=a.opacity,l=t(\"../../constants/filter_ops\"),c=l.CONSTRAINT_REDUCTION,u=l.COMPARISON_OPS2;e.exports=function(t,e,r,a,l,f){var h,p,d,g=e.contours,m=r(\"contours.operation\");(g._operation=c[m],function(t,e){var r;-1===u.indexOf(e.operation)?(t(\"contours.value\",[0,1]),Array.isArray(e.value)?e.value.length>2?e.value=e.value.slice(2):0===e.length?e.value=[0,1]:e.length<2?(r=parseFloat(e.value[0]),e.value=[r,r+1]):e.value=[parseFloat(e.value[0]),parseFloat(e.value[1])]:n(e.value)&&(r=parseFloat(e.value),e.value=[r,r+1])):(t(\"contours.value\",0),n(e.value)||(Array.isArray(e.value)?e.value=parseFloat(e.value[0]):e.value=0))}(r,g),\"=\"===m?h=g.showlines=!0:(h=r(\"contours.showlines\"),d=r(\"fillcolor\",o((t.line||{}).color||l,.5))),h)&&(p=r(\"line.color\",d&&s(d)?o(e.fillcolor,1):l),r(\"line.width\",2),r(\"line.dash\"));r(\"line.smoothing\"),i(r,a,p,f)}},{\"../../components/color\":366,\"../../constants/filter_ops\":475,\"./label_defaults\":750,\"fast-isnumeric\":190}],741:[function(t,e,r){\"use strict\";var n=t(\"../../constants/filter_ops\"),i=t(\"fast-isnumeric\");function a(t,e){var r,a=Array.isArray(e);function o(t){return i(t)?+t:null}return-1!==n.COMPARISON_OPS2.indexOf(t)?r=o(a?e[0]:e):-1!==n.INTERVAL_OPS.indexOf(t)?r=a?[o(e[0]),o(e[1])]:[o(e),o(e)]:-1!==n.SET_OPS.indexOf(t)&&(r=a?e.map(o):[o(e)]),r}function o(t){return function(e){e=a(t,e);var r=Math.min(e[0],e[1]),n=Math.max(e[0],e[1]);return{start:r,end:n,size:n-r}}}function s(t){return function(e){return{start:e=a(t,e),end:1/0,size:1/0}}}e.exports={\"[]\":o(\"[]\"),\"][\":o(\"][\"),\">\":s(\">\"),\"<\":s(\"<\"),\"=\":s(\"=\")}},{\"../../constants/filter_ops\":475,\"fast-isnumeric\":190}],742:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,n){var i=n(\"contours.start\"),a=n(\"contours.end\"),o=!1===i||!1===a,s=r(\"contours.size\");!(o?e.autocontour=!0:r(\"autocontour\",!1))&&s||r(\"ncontours\")}},{}],743:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");function i(t){return n.extendFlat({},t,{edgepaths:n.extendDeep([],t.edgepaths),paths:n.extendDeep([],t.paths),starts:n.extendDeep([],t.starts)})}e.exports=function(t,e){var r,a,o,s=function(t){return t.reverse()},l=function(t){return t};switch(e){case\"=\":case\"<\":return t;case\">\":for(1!==t.length&&n.warn(\"Contour data invalid for the specified inequality operation.\"),a=t[0],r=0;r1e3){n.warn(\"Too many contours, clipping at 1000\",t);break}return l}},{\"../../lib\":503,\"./constraint_mapping\":741,\"./end_plus\":746}],746:[function(t,e,r){\"use strict\";e.exports=function(t){return t.end+t.size/1e6}},{}],747:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./constants\");function a(t,e,r,n){return Math.abs(t[0]-e[0])20&&e?208===t||1114===t?n=0===r[0]?1:-1:a=0===r[1]?1:-1:-1!==i.BOTTOMSTART.indexOf(t)?a=1:-1!==i.LEFTSTART.indexOf(t)?n=1:-1!==i.TOPSTART.indexOf(t)?a=-1:n=-1;return[n,a]}(f,r,e),p=[s(t,e,[-h[0],-h[1]])],d=t.z.length,g=t.z[0].length,m=e.slice(),v=h.slice();for(c=0;c<1e4;c++){if(f>20?(f=i.CHOOSESADDLE[f][(h[0]||h[1])<0?0:1],t.crossings[u]=i.SADDLEREMAINDER[f]):delete t.crossings[u],!(h=i.NEWDELTA[f])){n.log(\"Found bad marching index:\",f,e,t.level);break}p.push(s(t,e,h)),e[0]+=h[0],e[1]+=h[1],u=e.join(\",\"),a(p[p.length-1],p[p.length-2],o,l)&&p.pop();var y=h[0]&&(e[0]<0||e[0]>g-2)||h[1]&&(e[1]<0||e[1]>d-2);if(e[0]===m[0]&&e[1]===m[1]&&h[0]===v[0]&&h[1]===v[1]||r&&y)break;f=t.crossings[u]}1e4===c&&n.log(\"Infinite loop in contour?\");var x,b,_,w,T,k,A,M,S,E,L,C,P,I,O,z=a(p[0],p[p.length-1],o,l),D=0,R=.2*t.smoothing,F=[],B=0;for(c=1;c=B;c--)if((x=F[c])=B&&x+F[b]M&&S--,t.edgepaths[S]=L.concat(p,E));break}V||(t.edgepaths[M]=p.concat(E))}for(M=0;Mt?0:1)+(e[0][1]>t?0:2)+(e[1][1]>t?0:4)+(e[1][0]>t?0:8);return 5===r||10===r?t>(e[0][0]+e[0][1]+e[1][0]+e[1][1])/4?5===r?713:1114:5===r?104:208:15===r?0:r}e.exports=function(t){var e,r,a,o,s,l,c,u,f,h=t[0].z,p=h.length,d=h[0].length,g=2===p||2===d;for(r=0;r=0&&(n=y,s=l):Math.abs(r[1]-n[1])<.01?Math.abs(r[1]-y[1])<.01&&(y[0]-r[0])*(n[0]-y[0])>=0&&(n=y,s=l):i.log(\"endpt to newendpt is not vert. or horz.\",r,n,y)}if(r=n,s>=0)break;f+=\"L\"+n}if(s===t.edgepaths.length){i.log(\"unclosed perimeter path\");break}h=s,(d=-1===p.indexOf(h))&&(h=p[0],f+=\"Z\")}for(h=0;hn.center?n.right-s:s-n.left)/(u+Math.abs(Math.sin(c)*o)),p=(l>n.middle?n.bottom-l:l-n.top)/(Math.abs(f)+Math.cos(c)*o);if(h<1||p<1)return 1/0;var d=v.EDGECOST*(1/(h-1)+1/(p-1));d+=v.ANGLECOST*c*c;for(var g=s-u,m=l-f,y=s+u,x=l+f,b=0;b2*v.MAXCOST)break;p&&(s/=2),l=(o=c-s/2)+1.5*s}if(h<=v.MAXCOST)return u},r.addLabelData=function(t,e,r,n){var i=e.fontSize,a=e.width+i/3,o=Math.max(0,e.height-i/3),s=t.x,l=t.y,c=t.theta,u=Math.sin(c),f=Math.cos(c),h=function(t,e){return[s+t*f-e*u,l+t*u+e*f]},p=[h(-a/2,-o/2),h(-a/2,o/2),h(a/2,o/2),h(a/2,-o/2)];r.push({text:e.text,x:s,y:l,dy:e.dy,theta:c,level:e.level,width:a,height:o}),n.push(p)},r.drawLabels=function(t,e,r,a,o){var l=t.selectAll(\"text\").data(e,(function(t){return t.text+\",\"+t.x+\",\"+t.y+\",\"+t.theta}));if(l.exit().remove(),l.enter().append(\"text\").attr({\"data-notex\":1,\"text-anchor\":\"middle\"}).each((function(t){var e=t.x+Math.sin(t.theta)*t.dy,i=t.y-Math.cos(t.theta)*t.dy;n.select(this).text(t.text).attr({x:e,y:i,transform:\"rotate(\"+180*t.theta/Math.PI+\" \"+e+\" \"+i+\")\"}).call(s.convertToTspans,r)})),o){for(var c=\"\",u=0;ur.end&&(r.start=r.end=(r.start+r.end)/2),t._input.contours||(t._input.contours={}),i.extendFlat(t._input.contours,{start:r.start,end:r.end,size:r.size}),t._input.autocontour=!0}else if(\"constraint\"!==r.type){var c,u=r.start,f=r.end,h=t._input.contours;if(u>f&&(r.start=h.start=f,f=r.end=h.end=u,u=r.start),!(r.size>0))c=u===f?1:a(u,f,t.ncontours).dtick,h.size=r.size=c}}},{\"../../lib\":503,\"../../plots/cartesian/axes\":554}],755:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../components/drawing\"),a=t(\"../heatmap/style\"),o=t(\"./make_color_map\");e.exports=function(t){var e=n.select(t).selectAll(\"g.contour\");e.style(\"opacity\",(function(t){return t[0].trace.opacity})),e.each((function(t){var e=n.select(this),r=t[0].trace,a=r.contours,s=r.line,l=a.size||1,c=a.start,u=\"constraint\"===a.type,f=!u&&\"lines\"===a.coloring,h=!u&&\"fill\"===a.coloring,p=f||h?o(r):null;e.selectAll(\"g.contourlevel\").each((function(t){n.select(this).selectAll(\"path\").call(i.lineGroupStyle,s.width,f?p(t.level):s.color,s.dash)}));var d=a.labelfont;if(e.selectAll(\"g.contourlabels text\").each((function(t){i.font(n.select(this),{family:d.family,size:d.size,color:d.color||(f?p(t.level):s.color)})})),u)e.selectAll(\"g.contourfill path\").style(\"fill\",r.fillcolor);else if(h){var g;e.selectAll(\"g.contourfill path\").style(\"fill\",(function(t){return void 0===g&&(g=t.level),p(t.level+.5*l)})),void 0===g&&(g=c),e.selectAll(\"g.contourbg path\").style(\"fill\",p(g-.5*l))}})),a(t)}},{\"../../components/drawing\":388,\"../heatmap/style\":805,\"./make_color_map\":751,\"@plotly/d3\":58}],756:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/defaults\"),i=t(\"./label_defaults\");e.exports=function(t,e,r,a,o){var s,l=r(\"contours.coloring\"),c=\"\";\"fill\"===l&&(s=r(\"contours.showlines\")),!1!==s&&(\"lines\"!==l&&(c=r(\"line.color\",\"#000\")),r(\"line.width\",.5),r(\"line.dash\")),\"none\"!==l&&(!0!==t.showlegend&&(e.showlegend=!1),e._dfltShowLegend=!1,n(t,e,a,r,{prefix:\"\",cLetter:\"z\"})),r(\"line.smoothing\"),i(r,a,c,o)}},{\"../../components/colorscale/defaults\":376,\"./label_defaults\":750}],757:[function(t,e,r){\"use strict\";var n=t(\"../heatmap/attributes\"),i=t(\"../contour/attributes\"),a=t(\"../../components/colorscale/attributes\"),o=t(\"../../lib/extend\").extendFlat,s=i.contours;e.exports=o({carpet:{valType:\"string\",editType:\"calc\"},z:n.z,a:n.x,a0:n.x0,da:n.dx,b:n.y,b0:n.y0,db:n.dy,text:n.text,hovertext:n.hovertext,transpose:n.transpose,atype:n.xtype,btype:n.ytype,fillcolor:i.fillcolor,autocontour:i.autocontour,ncontours:i.ncontours,contours:{type:s.type,start:s.start,end:s.end,size:s.size,coloring:{valType:\"enumerated\",values:[\"fill\",\"lines\",\"none\"],dflt:\"fill\",editType:\"calc\"},showlines:s.showlines,showlabels:s.showlabels,labelfont:s.labelfont,labelformat:s.labelformat,operation:s.operation,value:s.value,editType:\"calc\",impliedEdits:{autocontour:!1}},line:{color:i.line.color,width:i.line.width,dash:i.line.dash,smoothing:i.line.smoothing,editType:\"plot\"},transforms:void 0},a(\"\",{cLetter:\"z\",autoColorDflt:!1}))},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../contour/attributes\":735,\"../heatmap/attributes\":792}],758:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/calc\"),i=t(\"../../lib\"),a=t(\"../heatmap/convert_column_xyz\"),o=t(\"../heatmap/clean_2d_array\"),s=t(\"../heatmap/interp2d\"),l=t(\"../heatmap/find_empties\"),c=t(\"../heatmap/make_bound_array\"),u=t(\"./defaults\"),f=t(\"../carpet/lookup_carpetid\"),h=t(\"../contour/set_contours\");e.exports=function(t,e){var r=e._carpetTrace=f(t,e);if(r&&r.visible&&\"legendonly\"!==r.visible){if(!e.a||!e.b){var p=t.data[r.index],d=t.data[e.index];d.a||(d.a=p.a),d.b||(d.b=p.b),u(d,e,e._defaultColor,t._fullLayout)}var g=function(t,e){var r,u,f,h,p,d,g,m=e._carpetTrace,v=m.aaxis,y=m.baxis;v._minDtick=0,y._minDtick=0,i.isArray1D(e.z)&&a(e,v,y,\"a\",\"b\",[\"z\"]);r=e._a=e._a||e.a,h=e._b=e._b||e.b,r=r?v.makeCalcdata(e,\"_a\"):[],h=h?y.makeCalcdata(e,\"_b\"):[],u=e.a0||0,f=e.da||1,p=e.b0||0,d=e.db||1,g=e._z=o(e._z||e.z,e.transpose),e._emptypoints=l(g),s(g,e._emptypoints);var x=i.maxRowLength(g),b=\"scaled\"===e.xtype?\"\":r,_=c(e,b,u,f,x,v),w=\"scaled\"===e.ytype?\"\":h,T=c(e,w,p,d,g.length,y),k={a:_,b:T,z:g};\"levels\"===e.contours.type&&\"none\"!==e.contours.coloring&&n(t,e,{vals:g,containerStr:\"\",cLetter:\"z\"});return[k]}(t,e);return h(e,e._z),g}}},{\"../../components/colorscale/calc\":374,\"../../lib\":503,\"../carpet/lookup_carpetid\":708,\"../contour/set_contours\":754,\"../heatmap/clean_2d_array\":794,\"../heatmap/convert_column_xyz\":796,\"../heatmap/find_empties\":798,\"../heatmap/interp2d\":801,\"../heatmap/make_bound_array\":803,\"./defaults\":759}],759:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../heatmap/xyz_defaults\"),a=t(\"./attributes\"),o=t(\"../contour/constraint_defaults\"),s=t(\"../contour/contours_defaults\"),l=t(\"../contour/style_defaults\");e.exports=function(t,e,r,c){function u(r,i){return n.coerce(t,e,a,r,i)}if(u(\"carpet\"),t.a&&t.b){if(!i(t,e,u,c,\"a\",\"b\"))return void(e.visible=!1);u(\"text\"),\"constraint\"===u(\"contours.type\")?o(t,e,u,c,r,{hasHover:!1}):(s(t,e,u,(function(r){return n.coerce2(t,e,a,r)})),l(t,e,u,c,{hasHover:!1}))}else e._defaultColor=r,e._length=null}},{\"../../lib\":503,\"../contour/constraint_defaults\":740,\"../contour/contours_defaults\":742,\"../contour/style_defaults\":756,\"../heatmap/xyz_defaults\":807,\"./attributes\":757}],760:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../contour/colorbar\"),calc:t(\"./calc\"),plot:t(\"./plot\"),style:t(\"../contour/style\"),moduleType:\"trace\",name:\"contourcarpet\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"cartesian\",\"svg\",\"carpet\",\"contour\",\"symbols\",\"showLegend\",\"hasLines\",\"carpetDependent\",\"noHover\",\"noSortingByValue\"],meta:{}}},{\"../../plots/cartesian\":568,\"../contour/colorbar\":738,\"../contour/style\":755,\"./attributes\":757,\"./calc\":758,\"./defaults\":759,\"./plot\":761}],761:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../carpet/map_1d_array\"),a=t(\"../carpet/makepath\"),o=t(\"../../components/drawing\"),s=t(\"../../lib\"),l=t(\"../contour/make_crossings\"),c=t(\"../contour/find_all_paths\"),u=t(\"../contour/plot\"),f=t(\"../contour/constants\"),h=t(\"../contour/convert_to_constraints\"),p=t(\"../contour/empty_pathinfo\"),d=t(\"../contour/close_boundaries\"),g=t(\"../carpet/lookup_carpetid\"),m=t(\"../carpet/axis_aligned_line\");function v(t,e,r){var n=t.getPointAtLength(e),i=t.getPointAtLength(r),a=i.x-n.x,o=i.y-n.y,s=Math.sqrt(a*a+o*o);return[a/s,o/s]}function y(t){var e=Math.sqrt(t[0]*t[0]+t[1]*t[1]);return[t[0]/e,t[1]/e]}function x(t,e){var r=Math.abs(t[0]*e[0]+t[1]*e[1]);return Math.sqrt(1-r*r)/r}e.exports=function(t,e,r,b){var _=e.xaxis,w=e.yaxis;s.makeTraceGroups(b,r,\"contour\").each((function(r){var b=n.select(this),T=r[0],k=T.trace,A=k._carpetTrace=g(t,k),M=t.calcdata[A.index][0];if(A.visible&&\"legendonly\"!==A.visible){var S=T.a,E=T.b,L=k.contours,C=p(L,e,T),P=\"constraint\"===L.type,I=L._operation,O=P?\"=\"===I?\"lines\":\"fill\":L.coloring,z=[[S[0],E[E.length-1]],[S[S.length-1],E[E.length-1]],[S[S.length-1],E[0]],[S[0],E[0]]];l(C);var D=1e-8*(S[S.length-1]-S[0]),R=1e-8*(E[E.length-1]-E[0]);c(C,D,R);var F,B,N,j,U=C;\"constraint\"===L.type&&(U=h(C,I)),function(t,e){var r,n,i,a,o,s,l,c,u;for(r=0;r=0;j--)F=M.clipsegments[j],B=i([],F.x,_.c2p),N=i([],F.y,w.c2p),B.reverse(),N.reverse(),V.push(a(B,N,F.bicubic));var H=\"M\"+V.join(\"L\")+\"Z\";!function(t,e,r,n,o,l){var c,u,f,h,p=s.ensureSingle(t,\"g\",\"contourbg\").selectAll(\"path\").data(\"fill\"!==l||o?[]:[0]);p.enter().append(\"path\"),p.exit().remove();var d=[];for(h=0;h=0&&(h=L,d=g):Math.abs(f[1]-h[1])=0&&(h=L,d=g):s.log(\"endpt to newendpt is not vert. or horz.\",f,h,L)}if(d>=0)break;y+=S(f,h),f=h}if(d===e.edgepaths.length){s.log(\"unclosed perimeter path\");break}u=d,(b=-1===x.indexOf(u))&&(u=x[0],y+=S(f,h)+\"Z\",f=null)}for(u=0;um&&(n.max=m);n.len=n.max-n.min}(this,r,t,n,c,e.height),!(n.len<(e.width+e.height)*f.LABELMIN)))for(var i=Math.min(Math.ceil(n.len/I),f.LABELMAX),a=0;a0?+p[u]:0),f.push({type:\"Feature\",geometry:{type:\"Point\",coordinates:v},properties:y})}}var b=o.extractOpts(e),_=b.reversescale?o.flipScale(b.colorscale):b.colorscale,w=_[0][1],T=[\"interpolate\",[\"linear\"],[\"heatmap-density\"],0,a.opacity(w)<1?w:a.addOpacity(w,0)];for(u=1;u<_.length;u++)T.push(_[u][0],_[u][1]);var k=[\"interpolate\",[\"linear\"],[\"get\",\"z\"],b.min,0,b.max,1];return i.extendFlat(c.heatmap.paint,{\"heatmap-weight\":d?k:1/(b.max-b.min),\"heatmap-color\":T,\"heatmap-radius\":g?{type:\"identity\",property:\"r\"}:e.radius,\"heatmap-opacity\":e.opacity}),c.geojson={type:\"FeatureCollection\",features:f},c.heatmap.layout.visibility=\"visible\",c}},{\"../../components/color\":366,\"../../components/colorscale\":378,\"../../constants/numerical\":479,\"../../lib\":503,\"../../lib/geojson_utils\":497,\"fast-isnumeric\":190}],765:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../components/colorscale/defaults\"),a=t(\"./attributes\");e.exports=function(t,e,r,o){function s(r,i){return n.coerce(t,e,a,r,i)}var l=s(\"lon\")||[],c=s(\"lat\")||[],u=Math.min(l.length,c.length);u?(e._length=u,s(\"z\"),s(\"radius\"),s(\"below\"),s(\"text\"),s(\"hovertext\"),s(\"hovertemplate\"),i(t,e,o,s,{prefix:\"\",cLetter:\"z\"})):e.visible=!1}},{\"../../components/colorscale/defaults\":376,\"../../lib\":503,\"./attributes\":762}],766:[function(t,e,r){\"use strict\";e.exports=function(t,e){return t.lon=e.lon,t.lat=e.lat,t.z=e.z,t}},{}],767:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/axes\"),i=t(\"../scattermapbox/hover\").hoverPoints,a=t(\"../scattermapbox/hover\").getExtraText;e.exports=function(t,e,r){var o=i(t,e,r);if(o){var s=o[0],l=s.cd,c=l[0].trace,u=l[s.index];if(delete s.color,\"z\"in u){var f=s.subplot.mockAxis;s.z=u.z,s.zLabel=n.tickText(f,f.c2l(u.z),\"hover\").text}return s.extraText=a(c,u,l[0].t.labels),[s]}}},{\"../../plots/cartesian/axes\":554,\"../scattermapbox/hover\":996}],768:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../heatmap/colorbar\"),formatLabels:t(\"../scattermapbox/format_labels\"),calc:t(\"./calc\"),plot:t(\"./plot\"),hoverPoints:t(\"./hover\"),eventData:t(\"./event_data\"),getBelow:function(t,e){for(var r=e.getMapLayers(),n=0;n=0;r--)t.removeLayer(e[r][1])},o.dispose=function(){var t=this.subplot.map;this._removeLayers(),t.removeSource(this.sourceId)},e.exports=function(t,e){var r=e[0].trace,i=new a(t,r.uid),o=i.sourceId,s=n(e),l=i.below=t.belowLookup[\"trace-\"+r.uid];return t.map.addSource(o,{type:\"geojson\",data:s.geojson}),i._addLayers(s,l),i}},{\"../../plots/mapbox/constants\":611,\"./convert\":764}],770:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t,e){for(var r=0;r\"),l.color=function(t,e){var r=t.marker,i=e.mc||r.color,a=e.mlc||r.line.color,o=e.mlw||r.line.width;if(n(i))return i;if(n(a)&&o)return a}(u,h),[l]}}},{\"../../components/color\":366,\"../../lib\":503,\"../bar/hover\":655}],778:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\").supplyDefaults,crossTraceDefaults:t(\"./defaults\").crossTraceDefaults,supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\"),crossTraceCalc:t(\"./cross_trace_calc\"),plot:t(\"./plot\"),style:t(\"./style\").style,hoverPoints:t(\"./hover\"),eventData:t(\"./event_data\"),selectPoints:t(\"../bar/select\"),moduleType:\"trace\",name:\"funnel\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"bar-like\",\"cartesian\",\"svg\",\"oriented\",\"showLegend\",\"zoomScale\"],meta:{}}},{\"../../plots/cartesian\":568,\"../bar/select\":660,\"./attributes\":771,\"./calc\":772,\"./cross_trace_calc\":774,\"./defaults\":775,\"./event_data\":776,\"./hover\":777,\"./layout_attributes\":779,\"./layout_defaults\":780,\"./plot\":781,\"./style\":782}],779:[function(t,e,r){\"use strict\";e.exports={funnelmode:{valType:\"enumerated\",values:[\"stack\",\"group\",\"overlay\"],dflt:\"stack\",editType:\"calc\"},funnelgap:{valType:\"number\",min:0,max:1,editType:\"calc\"},funnelgroupgap:{valType:\"number\",min:0,max:1,dflt:0,editType:\"calc\"}}},{}],780:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e,r){var a=!1;function o(r,a){return n.coerce(t,e,i,r,a)}for(var s=0;s path\").each((function(t){if(!t.isBlank){var e=s.marker;n.select(this).call(a.fill,t.mc||e.color).call(a.stroke,t.mlc||e.line.color).call(i.dashLine,e.line.dash,t.mlw||e.line.width).style(\"opacity\",s.selectedpoints&&!t.selected?o:1)}})),c(r,s,t),r.selectAll(\".regions\").each((function(){n.select(this).selectAll(\"path\").style(\"stroke-width\",0).call(a.fill,s.connector.fillcolor)})),r.selectAll(\".lines\").each((function(){var t=s.connector.line;i.lineGroupStyle(n.select(this).selectAll(\"path\"),t.width,t.color,t.dash)}))}))}}},{\"../../components/color\":366,\"../../components/drawing\":388,\"../../constants/interactions\":478,\"../bar/style\":662,\"../bar/uniform_text\":664,\"@plotly/d3\":58}],783:[function(t,e,r){\"use strict\";var n=t(\"../pie/attributes\"),i=t(\"../../plots/attributes\"),a=t(\"../../plots/domain\").attributes,o=t(\"../../plots/template_attributes\").hovertemplateAttrs,s=t(\"../../plots/template_attributes\").texttemplateAttrs,l=t(\"../../lib/extend\").extendFlat;e.exports={labels:n.labels,label0:n.label0,dlabel:n.dlabel,values:n.values,marker:{colors:n.marker.colors,line:{color:l({},n.marker.line.color,{dflt:null}),width:l({},n.marker.line.width,{dflt:1}),editType:\"calc\"},editType:\"calc\"},text:n.text,hovertext:n.hovertext,scalegroup:l({},n.scalegroup,{}),textinfo:l({},n.textinfo,{flags:[\"label\",\"text\",\"value\",\"percent\"]}),texttemplate:s({editType:\"plot\"},{keys:[\"label\",\"color\",\"value\",\"text\",\"percent\"]}),hoverinfo:l({},i.hoverinfo,{flags:[\"label\",\"text\",\"value\",\"percent\",\"name\"]}),hovertemplate:o({},{keys:[\"label\",\"color\",\"value\",\"text\",\"percent\"]}),textposition:l({},n.textposition,{values:[\"inside\",\"none\"],dflt:\"inside\"}),textfont:n.textfont,insidetextfont:n.insidetextfont,title:{text:n.title.text,font:n.title.font,position:l({},n.title.position,{values:[\"top left\",\"top center\",\"top right\"],dflt:\"top center\"}),editType:\"plot\"},domain:a({name:\"funnelarea\",trace:!0,editType:\"calc\"}),aspectratio:{valType:\"number\",min:0,dflt:1,editType:\"plot\"},baseratio:{valType:\"number\",min:0,max:1,dflt:.333,editType:\"plot\"}}},{\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/domain\":584,\"../../plots/template_attributes\":633,\"../pie/attributes\":900}],784:[function(t,e,r){\"use strict\";var n=t(\"../../plots/plots\");r.name=\"funnelarea\",r.plot=function(t,e,i,a){n.plotBasePlot(r.name,t,e,i,a)},r.clean=function(t,e,i,a){n.cleanBasePlot(r.name,t,e,i,a)}},{\"../../plots/plots\":619}],785:[function(t,e,r){\"use strict\";var n=t(\"../pie/calc\");e.exports={calc:function(t,e){return n.calc(t,e)},crossTraceCalc:function(t){n.crossTraceCalc(t,{type:\"funnelarea\"})}}},{\"../pie/calc\":902}],786:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./attributes\"),a=t(\"../../plots/domain\").defaults,o=t(\"../bar/defaults\").handleText,s=t(\"../pie/defaults\").handleLabelsAndValues;e.exports=function(t,e,r,l){function c(r,a){return n.coerce(t,e,i,r,a)}var u=c(\"labels\"),f=c(\"values\"),h=s(u,f),p=h.len;if(e._hasLabels=h.hasLabels,e._hasValues=h.hasValues,!e._hasLabels&&e._hasValues&&(c(\"label0\"),c(\"dlabel\")),p){e._length=p,c(\"marker.line.width\")&&c(\"marker.line.color\",l.paper_bgcolor),c(\"marker.colors\"),c(\"scalegroup\");var d,g=c(\"text\"),m=c(\"texttemplate\");if(m||(d=c(\"textinfo\",Array.isArray(g)?\"text+percent\":\"percent\")),c(\"hovertext\"),c(\"hovertemplate\"),m||d&&\"none\"!==d){var v=c(\"textposition\");o(t,e,l,c,v,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1})}a(e,l,c),c(\"title.text\")&&(c(\"title.position\"),n.coerceFont(c,\"title.font\",l.font)),c(\"aspectratio\"),c(\"baseratio\")}else e.visible=!1}},{\"../../lib\":503,\"../../plots/domain\":584,\"../bar/defaults\":652,\"../pie/defaults\":903,\"./attributes\":783}],787:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"funnelarea\",basePlotModule:t(\"./base_plot\"),categories:[\"pie-like\",\"funnelarea\",\"showLegend\"],attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\"),supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\").calc,crossTraceCalc:t(\"./calc\").crossTraceCalc,plot:t(\"./plot\"),style:t(\"./style\"),styleOne:t(\"../pie/style_one\"),meta:{}}},{\"../pie/style_one\":911,\"./attributes\":783,\"./base_plot\":784,\"./calc\":785,\"./defaults\":786,\"./layout_attributes\":788,\"./layout_defaults\":789,\"./plot\":790,\"./style\":791}],788:[function(t,e,r){\"use strict\";var n=t(\"../pie/layout_attributes\").hiddenlabels;e.exports={hiddenlabels:n,funnelareacolorway:{valType:\"colorlist\",editType:\"calc\"},extendfunnelareacolors:{valType:\"boolean\",dflt:!0,editType:\"calc\"}}},{\"../pie/layout_attributes\":907}],789:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e){function r(r,a){return n.coerce(t,e,i,r,a)}r(\"hiddenlabels\"),r(\"funnelareacolorway\",e.colorway),r(\"extendfunnelareacolors\")}},{\"../../lib\":503,\"./layout_attributes\":788}],790:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../components/drawing\"),a=t(\"../../lib\"),o=a.strScale,s=a.strTranslate,l=t(\"../../lib/svg_text_utils\"),c=t(\"../bar/plot\").toMoveInsideBar,u=t(\"../bar/uniform_text\"),f=u.recordMinTextSize,h=u.clearMinTextSize,p=t(\"../pie/helpers\"),d=t(\"../pie/plot\"),g=d.attachFxHandlers,m=d.determineInsideTextFont,v=d.layoutAreas,y=d.prerenderTitles,x=d.positionTitleOutside,b=d.formatSliceLabel;function _(t,e){return\"l\"+(e[0]-t[0])+\",\"+(e[1]-t[1])}e.exports=function(t,e){var r=t._fullLayout;h(\"funnelarea\",r),y(e,t),v(e,r._size),a.makeTraceGroups(r._funnelarealayer,e,\"trace\").each((function(e){var u=n.select(this),h=e[0],d=h.trace;!function(t){if(!t.length)return;var e=t[0],r=e.trace,n=r.aspectratio,i=r.baseratio;i>.999&&(i=.999);var a,o=Math.pow(i,2),s=e.vTotal,l=s,c=s*o/(1-o)/s;function u(){var t,e={x:t=Math.sqrt(c),y:-t};return[e.x,e.y]}var f,h,p=[];for(p.push(u()),f=t.length-1;f>-1;f--)if(!(h=t[f]).hidden){var d=h.v/l;c+=d,p.push(u())}var g=1/0,m=-1/0;for(f=0;f-1;f--)if(!(h=t[f]).hidden){var A=p[k+=1][0],M=p[k][1];h.TL=[-A,M],h.TR=[A,M],h.BL=w,h.BR=T,h.pxmid=(S=h.TR,E=h.BR,[.5*(S[0]+E[0]),.5*(S[1]+E[1])]),w=h.TL,T=h.TR}var S,E}(e),u.each((function(){var u=n.select(this).selectAll(\"g.slice\").data(e);u.enter().append(\"g\").classed(\"slice\",!0),u.exit().remove(),u.each((function(o,s){if(o.hidden)n.select(this).selectAll(\"path,g\").remove();else{o.pointNumber=o.i,o.curveNumber=d.index;var u=h.cx,v=h.cy,y=n.select(this),x=y.selectAll(\"path.surface\").data([o]);x.enter().append(\"path\").classed(\"surface\",!0).style({\"pointer-events\":\"all\"}),y.call(g,t,e);var w=\"M\"+(u+o.TR[0])+\",\"+(v+o.TR[1])+_(o.TR,o.BR)+_(o.BR,o.BL)+_(o.BL,o.TL)+\"Z\";x.attr(\"d\",w),b(t,o,h);var T=p.castOption(d.textposition,o.pts),k=y.selectAll(\"g.slicetext\").data(o.text&&\"none\"!==T?[0]:[]);k.enter().append(\"g\").classed(\"slicetext\",!0),k.exit().remove(),k.each((function(){var h=a.ensureSingle(n.select(this),\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),p=a.ensureUniformFontSize(t,m(d,o,r.font));h.text(o.text).attr({class:\"slicetext\",transform:\"\",\"text-anchor\":\"middle\"}).call(i.font,p).call(l.convertToTspans,t);var g,y,x,b=i.bBox(h.node()),_=Math.min(o.BL[1],o.BR[1])+v,w=Math.max(o.TL[1],o.TR[1])+v;y=Math.max(o.TL[0],o.BL[0])+u,x=Math.min(o.TR[0],o.BR[0])+u,(g=c(y,x,_,w,b,{isHorizontal:!0,constrained:!0,angle:0,anchor:\"middle\"})).fontSize=p.size,f(d.type,g,r),e[s].transform=g,h.attr(\"transform\",a.getTextTransform(g))}))}}));var v=n.select(this).selectAll(\"g.titletext\").data(d.title.text?[0]:[]);v.enter().append(\"g\").classed(\"titletext\",!0),v.exit().remove(),v.each((function(){var e=a.ensureSingle(n.select(this),\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),c=d.title.text;d._meta&&(c=a.templateString(c,d._meta)),e.text(c).attr({class:\"titletext\",transform:\"\",\"text-anchor\":\"middle\"}).call(i.font,d.title.font).call(l.convertToTspans,t);var u=x(h,r._size);e.attr(\"transform\",s(u.x,u.y)+o(Math.min(1,u.scale))+s(u.tx,u.ty))}))}))}))}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../bar/plot\":659,\"../bar/uniform_text\":664,\"../pie/helpers\":905,\"../pie/plot\":909,\"@plotly/d3\":58}],791:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../pie/style_one\"),a=t(\"../bar/uniform_text\").resizeText;e.exports=function(t){var e=t._fullLayout._funnelarealayer.selectAll(\".trace\");a(t,e,\"funnelarea\"),e.each((function(t){var e=t[0].trace,r=n.select(this);r.style({opacity:e.opacity}),r.selectAll(\"path.surface\").each((function(t){n.select(this).call(i,t,e)}))}))}},{\"../bar/uniform_text\":664,\"../pie/style_one\":911,\"@plotly/d3\":58}],792:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\"),i=t(\"../../plots/attributes\"),a=t(\"../../plots/font_attributes\"),o=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,s=t(\"../../plots/template_attributes\").hovertemplateAttrs,l=t(\"../../plots/template_attributes\").texttemplateAttrs,c=t(\"../../components/colorscale/attributes\"),u=t(\"../../lib/extend\").extendFlat;e.exports=u({z:{valType:\"data_array\",editType:\"calc\"},x:u({},n.x,{impliedEdits:{xtype:\"array\"}}),x0:u({},n.x0,{impliedEdits:{xtype:\"scaled\"}}),dx:u({},n.dx,{impliedEdits:{xtype:\"scaled\"}}),y:u({},n.y,{impliedEdits:{ytype:\"array\"}}),y0:u({},n.y0,{impliedEdits:{ytype:\"scaled\"}}),dy:u({},n.dy,{impliedEdits:{ytype:\"scaled\"}}),xperiod:u({},n.xperiod,{impliedEdits:{xtype:\"scaled\"}}),yperiod:u({},n.yperiod,{impliedEdits:{ytype:\"scaled\"}}),xperiod0:u({},n.xperiod0,{impliedEdits:{xtype:\"scaled\"}}),yperiod0:u({},n.yperiod0,{impliedEdits:{ytype:\"scaled\"}}),xperiodalignment:u({},n.xperiodalignment,{impliedEdits:{xtype:\"scaled\"}}),yperiodalignment:u({},n.yperiodalignment,{impliedEdits:{ytype:\"scaled\"}}),text:{valType:\"data_array\",editType:\"calc\"},hovertext:{valType:\"data_array\",editType:\"calc\"},transpose:{valType:\"boolean\",dflt:!1,editType:\"calc\"},xtype:{valType:\"enumerated\",values:[\"array\",\"scaled\"],editType:\"calc+clearAxisTypes\"},ytype:{valType:\"enumerated\",values:[\"array\",\"scaled\"],editType:\"calc+clearAxisTypes\"},zsmooth:{valType:\"enumerated\",values:[\"fast\",\"best\",!1],dflt:!1,editType:\"calc\"},hoverongaps:{valType:\"boolean\",dflt:!0,editType:\"none\"},connectgaps:{valType:\"boolean\",editType:\"calc\"},xgap:{valType:\"number\",dflt:0,min:0,editType:\"plot\"},ygap:{valType:\"number\",dflt:0,min:0,editType:\"plot\"},xhoverformat:o(\"x\"),yhoverformat:o(\"y\"),zhoverformat:o(\"z\",1),hovertemplate:s(),texttemplate:l({arrayOk:!1,editType:\"plot\"},{keys:[\"x\",\"y\",\"z\",\"text\"]}),textfont:a({editType:\"plot\",autoSize:!0,autoColor:!0,colorEditType:\"style\"}),showlegend:u({},i.showlegend,{dflt:!1})},{transforms:void 0},c(\"\",{cLetter:\"z\",autoColorDflt:!1}))},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/font_attributes\":585,\"../../plots/template_attributes\":633,\"../scatter/attributes\":926}],793:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\"),a=t(\"../../plots/cartesian/axes\"),o=t(\"../../plots/cartesian/align_period\"),s=t(\"../histogram2d/calc\"),l=t(\"../../components/colorscale/calc\"),c=t(\"./convert_column_xyz\"),u=t(\"./clean_2d_array\"),f=t(\"./interp2d\"),h=t(\"./find_empties\"),p=t(\"./make_bound_array\"),d=t(\"../../constants/numerical\").BADNUM;function g(t){for(var e=[],r=t.length,n=0;nD){O(\"x scale is not linear\");break}}if(x.length&&\"fast\"===P){var R=(x[x.length-1]-x[0])/(x.length-1),F=Math.abs(R/100);for(k=0;kF){O(\"y scale is not linear\");break}}}var B=i.maxRowLength(T),N=\"scaled\"===e.xtype?\"\":r,j=p(e,N,m,v,B,M),U=\"scaled\"===e.ytype?\"\":x,V=p(e,U,b,_,T.length,S);C||(e._extremes[M._id]=a.findExtremes(M,j),e._extremes[S._id]=a.findExtremes(S,V));var H={x:j,y:V,z:T,text:e._text||e.text,hovertext:e._hovertext||e.hovertext};if(e.xperiodalignment&&y&&(H.orig_x=y),e.yperiodalignment&&w&&(H.orig_y=w),N&&N.length===j.length-1&&(H.xCenter=N),U&&U.length===V.length-1&&(H.yCenter=U),L&&(H.xRanges=A.xRanges,H.yRanges=A.yRanges,H.pts=A.pts),E||l(t,e,{vals:T,cLetter:\"z\"}),E&&e.contours&&\"heatmap\"===e.contours.coloring){var q={type:\"contour\"===e.type?\"heatmap\":\"histogram2d\",xcalendar:e.xcalendar,ycalendar:e.ycalendar};H.xfill=p(q,N,m,v,B,M),H.yfill=p(q,U,b,_,T.length,S)}return[H]}},{\"../../components/colorscale/calc\":374,\"../../constants/numerical\":479,\"../../lib\":503,\"../../plots/cartesian/align_period\":551,\"../../plots/cartesian/axes\":554,\"../../registry\":638,\"../histogram2d/calc\":826,\"./clean_2d_array\":794,\"./convert_column_xyz\":796,\"./find_empties\":798,\"./interp2d\":801,\"./make_bound_array\":803}],794:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../lib\"),a=t(\"../../constants/numerical\").BADNUM;e.exports=function(t,e,r,o){var s,l,c,u,f,h;function p(t){if(n(t))return+t}if(e&&e.transpose){for(s=0,f=0;f=0;o--)(s=((f[[(r=(a=h[o])[0])-1,i=a[1]]]||g)[2]+(f[[r+1,i]]||g)[2]+(f[[r,i-1]]||g)[2]+(f[[r,i+1]]||g)[2])/20)&&(l[a]=[r,i,s],h.splice(o,1),c=!0);if(!c)throw\"findEmpties iterated with no new neighbors\";for(a in l)f[a]=l[a],u.push(l[a])}return u.sort((function(t,e){return e[2]-t[2]}))}},{\"../../lib\":503}],799:[function(t,e,r){\"use strict\";var n=t(\"../../components/fx\"),i=t(\"../../lib\"),a=t(\"../../plots/cartesian/axes\"),o=t(\"../../components/colorscale\").extractOpts;e.exports=function(t,e,r,s,l){l||(l={});var c,u,f,h,p=l.isContour,d=t.cd[0],g=d.trace,m=t.xa,v=t.ya,y=d.x,x=d.y,b=d.z,_=d.xCenter,w=d.yCenter,T=d.zmask,k=g.zhoverformat,A=y,M=x;if(!1!==t.index){try{f=Math.round(t.index[1]),h=Math.round(t.index[0])}catch(e){return void i.error(\"Error hovering on heatmap, pointNumber must be [row,col], found:\",t.index)}if(f<0||f>=b[0].length||h<0||h>b.length)return}else{if(n.inbox(e-y[0],e-y[y.length-1],0)>0||n.inbox(r-x[0],r-x[x.length-1],0)>0)return;if(p){var S;for(A=[2*y[0]-y[1]],S=1;Sg&&(v=Math.max(v,Math.abs(t[a][o]-d)/(m-g))))}return v}e.exports=function(t,e){var r,i=1;for(o(t,e),r=0;r.01;r++)i=o(t,e,a(i));return i>.01&&n.log(\"interp2d didn't converge quickly\",i),t}},{\"../../lib\":503}],802:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t,e){t(\"texttemplate\");var r=n.extendFlat({},e.font,{color:\"auto\",size:\"auto\"});n.coerceFont(t,\"textfont\",r)}},{\"../../lib\":503}],803:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\").isArrayOrTypedArray;e.exports=function(t,e,r,a,o,s){var l,c,u,f=[],h=n.traceIs(t,\"contour\"),p=n.traceIs(t,\"histogram\"),d=n.traceIs(t,\"gl2d\");if(i(e)&&e.length>1&&!p&&\"category\"!==s.type){var g=e.length;if(!(g<=o))return h?e.slice(0,o):e.slice(0,o+1);if(h||d)f=e.slice(0,o);else if(1===o)f=[e[0]-.5,e[0]+.5];else{for(f=[1.5*e[0]-.5*e[1]],u=1;u0;)_=w.c2p(R[S]),S--;for(_0;)M=T.c2p(F[S]),S--;if(MGt||Gt>T._length))for(E=Ut;EWt||Wt>w._length)){var Xt=u({x:Yt,y:qt},I,t._fullLayout);Xt.x=Yt,Xt.y=qt;var Zt=P.z[S][E];void 0===Zt?(Xt.z=\"\",Xt.zLabel=\"\"):(Xt.z=Zt,Xt.zLabel=s.tickText(Ft,Zt,\"hover\").text);var Jt=P.text&&P.text[S]&&P.text[S][E];void 0!==Jt&&!1!==Jt||(Jt=\"\"),Xt.text=Jt;var Kt=l.texttemplateString(Dt,Xt,t._fullLayout._d3locale,Xt,I._meta||{});if(Kt){var Qt=Kt.split(\"
\"),$t=Qt.length,te=0;for(L=0;L<$t;L++)te=Math.max(te,Qt[L].length);Ht.push({l:$t,c:te,t:Kt,x:Wt,y:Gt,z:Zt})}}}}var ee=I.textfont,re=ee.family,ne=ee.size,ie=t._fullLayout.font.size;if(!ne||\"auto\"===ne){var ae=1/0,oe=1/0,se=0,le=0;for(L=0;L0&&(a=!0);for(var l=0;la){var o=a-r[t];return r[t]=a,o}}return 0},max:function(t,e,r,i){var a=i[e];if(n(a)){if(a=Number(a),!n(r[t]))return r[t]=a,a;if(r[t]c?t>o?t>1.1*i?i:t>1.1*a?a:o:t>s?s:t>l?l:c:Math.pow(10,Math.floor(Math.log(t)/Math.LN10))}function p(t,e,r,n,a,s){if(n&&t>o){var l=d(e,a,s),c=d(r,a,s),u=t===i?0:1;return l[u]!==c[u]}return Math.floor(r/t)-Math.floor(e/t)>.1}function d(t,e,r){var n=e.c2d(t,i,r).split(\"-\");return\"\"===n[0]&&(n.unshift(),n[0]=\"-\"+n[0]),n}e.exports=function(t,e,r,n,a){var s,l,c=-1.1*e,h=-.1*e,p=t-h,d=r[0],g=r[1],m=Math.min(f(d+h,d+p,n,a),f(g+h,g+p,n,a)),v=Math.min(f(d+c,d+h,n,a),f(g+c,g+h,n,a));if(m>v&&vo){var y=s===i?1:6,x=s===i?\"M12\":\"M1\";return function(e,r){var o=n.c2d(e,i,a),s=o.indexOf(\"-\",y);s>0&&(o=o.substr(0,s));var c=n.d2c(o,0,a);if(cr.r2l(B)&&(j=o.tickIncrement(j,b.size,!0,p)),z.start=r.l2r(j),F||i.nestedProperty(e,v+\".start\").set(z.start)}var U=b.end,V=r.r2l(O.end),H=void 0!==V;if((b.endFound||H)&&V!==r.r2l(U)){var q=H?V:i.aggNums(Math.max,null,d);z.end=r.l2r(q),H||i.nestedProperty(e,v+\".start\").set(z.end)}var G=\"autobin\"+s;return!1===e._input[G]&&(e._input[v]=i.extendFlat({},e[v]||{}),delete e._input[G],delete e[G]),[z,d]}e.exports={calc:function(t,e){var r,a,p,d,g=[],m=[],v=\"h\"===e.orientation,y=o.getFromId(t,v?e.yaxis:e.xaxis),x=v?\"y\":\"x\",b={x:\"y\",y:\"x\"}[x],_=e[x+\"calendar\"],w=e.cumulative,T=h(t,e,y,x),k=T[0],A=T[1],M=\"string\"==typeof k.size,S=[],E=M?S:k,L=[],C=[],P=[],I=0,O=e.histnorm,z=e.histfunc,D=-1!==O.indexOf(\"density\");w.enabled&&D&&(O=O.replace(/ ?density$/,\"\"),D=!1);var R,F=\"max\"===z||\"min\"===z?null:0,B=l.count,N=c[O],j=!1,U=function(t){return y.r2c(t,0,_)};for(i.isArrayOrTypedArray(e[b])&&\"count\"!==z&&(R=e[b],j=\"avg\"===z,B=l[z]),r=U(k.start),p=U(k.end)+(r-o.tickIncrement(r,k.size,!1,_))/1e6;r=0&&d=0;n--)s(n);else if(\"increasing\"===e){for(n=1;n=0;n--)t[n]+=t[n+1];\"exclude\"===r&&(t.push(0),t.shift())}}(m,w.direction,w.currentbin);var K=Math.min(g.length,m.length),Q=[],$=0,tt=K-1;for(r=0;r=$;r--)if(m[r]){tt=r;break}for(r=$;r<=tt;r++)if(n(g[r])&&n(m[r])){var et={p:g[r],s:m[r],b:0};w.enabled||(et.pts=P[r],Y?et.ph0=et.ph1=P[r].length?A[P[r][0]]:g[r]:(e._computePh=!0,et.ph0=q(S[r]),et.ph1=q(S[r+1],!0))),Q.push(et)}return 1===Q.length&&(Q[0].width1=o.tickIncrement(Q[0].p,k.size,!1,_)-Q[0].p),s(Q,e),i.isArrayOrTypedArray(e.selectedpoints)&&i.tagSelected(Q,e,Z),Q},calcAllAutoBins:h}},{\"../../lib\":503,\"../../plots/cartesian/axes\":554,\"../../registry\":638,\"../bar/arrays_to_calcdata\":647,\"./average\":813,\"./bin_functions\":815,\"./bin_label_vals\":816,\"./norm_functions\":824,\"fast-isnumeric\":190}],818:[function(t,e,r){\"use strict\";e.exports={eventDataKeys:[\"binNumber\"]}},{}],819:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../plots/cartesian/axis_ids\"),a=t(\"../../registry\").traceIs,o=t(\"../bar/defaults\").handleGroupingDefaults,s=n.nestedProperty,l=t(\"../../plots/cartesian/constraints\").getAxisGroup,c=[{aStr:{x:\"xbins.start\",y:\"ybins.start\"},name:\"start\"},{aStr:{x:\"xbins.end\",y:\"ybins.end\"},name:\"end\"},{aStr:{x:\"xbins.size\",y:\"ybins.size\"},name:\"size\"},{aStr:{x:\"nbinsx\",y:\"nbinsy\"},name:\"nbins\"}],u=[\"x\",\"y\"];e.exports=function(t,e){var r,f,h,p,d,g,m,v=e._histogramBinOpts={},y=[],x={},b=[];function _(t,e){return n.coerce(r._input,r,r._module.attributes,t,e)}function w(t){return\"v\"===t.orientation?\"x\":\"y\"}function T(t,r,a){var o=t.uid+\"__\"+a;r||(r=o);var s=function(t,r){return i.getFromTrace({_fullLayout:e},t,r).type}(t,a),l=t[a+\"calendar\"]||\"\",c=v[r],u=!0;c&&(s===c.axType&&l===c.calendar?(u=!1,c.traces.push(t),c.dirs.push(a)):(r=o,s!==c.axType&&n.warn([\"Attempted to group the bins of trace\",t.index,\"set on a\",\"type:\"+s,\"axis\",\"with bins on\",\"type:\"+c.axType,\"axis.\"].join(\" \")),l!==c.calendar&&n.warn([\"Attempted to group the bins of trace\",t.index,\"set with a\",l,\"calendar\",\"with bins\",c.calendar?\"on a \"+c.calendar+\" calendar\":\"w/o a set calendar\"].join(\" \")))),u&&(v[r]={traces:[t],dirs:[a],axType:s,calendar:t[a+\"calendar\"]||\"\"}),t[\"_\"+a+\"bingroup\"]=r}for(d=0;dS&&T.splice(S,T.length-S),M.length>S&&M.splice(S,M.length-S);var E=[],L=[],C=[],P=\"string\"==typeof w.size,I=\"string\"==typeof A.size,O=[],z=[],D=P?O:w,R=I?z:A,F=0,B=[],N=[],j=e.histnorm,U=e.histfunc,V=-1!==j.indexOf(\"density\"),H=\"max\"===U||\"min\"===U?null:0,q=a.count,G=o[j],Y=!1,W=[],X=[],Z=\"z\"in e?e.z:\"marker\"in e&&Array.isArray(e.marker.color)?e.marker.color:\"\";Z&&\"count\"!==U&&(Y=\"avg\"===U,q=a[U]);var J=w.size,K=x(w.start),Q=x(w.end)+(K-i.tickIncrement(K,J,!1,v))/1e6;for(r=K;r=0&&p=0&&d-1,flipY:E.tiling.flip.indexOf(\"y\")>-1,orientation:E.tiling.orientation,pad:{inner:E.tiling.pad},maxDepth:E._maxDepth}).descendants(),O=1/0,z=-1/0;I.forEach((function(t){var e=t.depth;e>=E._maxDepth?(t.x0=t.x1=(t.x0+t.x1)/2,t.y0=t.y1=(t.y0+t.y1)/2):(O=Math.min(O,e),z=Math.max(z,e))})),p=p.data(I,u.getPtId),E._maxVisibleLayers=isFinite(z)?z-O+1:0,p.enter().append(\"g\").classed(\"slice\",!0),T(p,!1,{},[g,m],x),p.order();var D=null;if(w&&M){var R=u.getPtId(M);p.each((function(t){null===D&&u.getPtId(t)===R&&(D={x0:t.x0,x1:t.x1,y0:t.y0,y1:t.y1})}))}var F=function(){return D||{x0:0,x1:g,y0:0,y1:m}},B=p;return w&&(B=B.transition().each(\"end\",(function(){var e=n.select(this);u.setSliceCursor(e,t,{hideOnRoot:!0,hideOnLeaves:!1,isTransitioning:!1})}))),B.each((function(s){s._x0=v(s.x0),s._x1=v(s.x1),s._y0=y(s.y0),s._y1=y(s.y1),s._hoverX=v(s.x1-E.tiling.pad),s._hoverY=y(P?s.y1-E.tiling.pad/2:s.y0+E.tiling.pad/2);var p=n.select(this),d=i.ensureSingle(p,\"path\",\"surface\",(function(t){t.style(\"pointer-events\",\"all\")}));w?d.transition().attrTween(\"d\",(function(t){var e=k(t,!1,F(),[g,m],{orientation:E.tiling.orientation,flipX:E.tiling.flip.indexOf(\"x\")>-1,flipY:E.tiling.flip.indexOf(\"y\")>-1});return function(t){return x(e(t))}})):d.attr(\"d\",x),p.call(f,r,t,e,{styleOne:l,eventDataKeys:c.eventDataKeys,transitionTime:c.CLICK_TRANSITION_TIME,transitionEasing:c.CLICK_TRANSITION_EASING}).call(u.setSliceCursor,t,{isTransitioning:t._transitioning}),d.call(l,s,E,{hovered:!1}),s.x0===s.x1||s.y0===s.y1?s._text=\"\":s._text=h(s,r,E,e,S)||\"\";var T=i.ensureSingle(p,\"g\",\"slicetext\"),M=i.ensureSingle(T,\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),I=i.ensureUniformFontSize(t,u.determineTextFont(E,s,S.font));M.text(s._text||\" \").classed(\"slicetext\",!0).attr(\"text-anchor\",C?\"end\":L?\"start\":\"middle\").call(a.font,I).call(o.convertToTspans,t),s.textBB=a.bBox(M.node()),s.transform=b(s,{fontSize:I.size}),s.transform.fontSize=I.size,w?M.transition().attrTween(\"transform\",(function(t){var e=A(t,!1,F(),[g,m]);return function(t){return _(e(t))}})):M.attr(\"transform\",_(s))})),D}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../sunburst/fx\":1050,\"../sunburst/helpers\":1051,\"../sunburst/plot\":1055,\"../treemap/constants\":1074,\"./partition\":842,\"./style\":844,\"@plotly/d3\":58}],839:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"icicle\",basePlotModule:t(\"./base_plot\"),categories:[],animatable:!0,attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\"),supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\").calc,crossTraceCalc:t(\"./calc\").crossTraceCalc,plot:t(\"./plot\"),style:t(\"./style\").style,colorbar:t(\"../scatter/marker_colorbar\"),meta:{}}},{\"../scatter/marker_colorbar\":944,\"./attributes\":834,\"./base_plot\":835,\"./calc\":836,\"./defaults\":837,\"./layout_attributes\":840,\"./layout_defaults\":841,\"./plot\":843,\"./style\":844}],840:[function(t,e,r){\"use strict\";e.exports={iciclecolorway:{valType:\"colorlist\",editType:\"calc\"},extendiciclecolors:{valType:\"boolean\",dflt:!0,editType:\"calc\"}}},{}],841:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e){function r(r,a){return n.coerce(t,e,i,r,a)}r(\"iciclecolorway\",e.colorway),r(\"extendiciclecolors\")}},{\"../../lib\":503,\"./layout_attributes\":840}],842:[function(t,e,r){\"use strict\";var n=t(\"d3-hierarchy\"),i=t(\"../treemap/flip_tree\");e.exports=function(t,e,r){var a=r.flipX,o=r.flipY,s=\"h\"===r.orientation,l=r.maxDepth,c=e[0],u=e[1];l&&(c=(t.height+1)*e[0]/Math.min(t.height+1,l),u=(t.height+1)*e[1]/Math.min(t.height+1,l));var f=n.partition().padding(r.pad.inner).size(s?[e[1],c]:[e[0],u])(t);return(s||a||o)&&i(f,e,{swapXY:s,flipX:a,flipY:o}),f}},{\"../treemap/flip_tree\":1079,\"d3-hierarchy\":115}],843:[function(t,e,r){\"use strict\";var n=t(\"../treemap/draw\"),i=t(\"./draw_descendants\");e.exports=function(t,e,r,a){return n(t,e,r,a,{type:\"icicle\",drawDescendants:i})}},{\"../treemap/draw\":1076,\"./draw_descendants\":838}],844:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../components/color\"),a=t(\"../../lib\"),o=t(\"../bar/uniform_text\").resizeText;function s(t,e,r){var n=e.data.data,o=!e.children,s=n.i,l=a.castOption(r,s,\"marker.line.color\")||i.defaultLine,c=a.castOption(r,s,\"marker.line.width\")||0;t.style(\"stroke-width\",c).call(i.fill,n.color).call(i.stroke,l).style(\"opacity\",o?r.leaf.opacity:null)}e.exports={style:function(t){var e=t._fullLayout._iciclelayer.selectAll(\".trace\");o(t,e,\"icicle\"),e.each((function(t){var e=n.select(this),r=t[0].trace;e.style(\"opacity\",r.opacity),e.selectAll(\"path.surface\").each((function(t){n.select(this).call(s,t,r)}))}))},styleOne:s}},{\"../../components/color\":366,\"../../lib\":503,\"../bar/uniform_text\":664,\"@plotly/d3\":58}],845:[function(t,e,r){\"use strict\";for(var n=t(\"../../plots/attributes\"),i=t(\"../../plots/template_attributes\").hovertemplateAttrs,a=t(\"../../lib/extend\").extendFlat,o=t(\"./constants\").colormodel,s=[\"rgb\",\"rgba\",\"rgba256\",\"hsl\",\"hsla\"],l=[],c=[],u=0;u0||n.inbox(r-o.y0,r-(o.y0+o.h*s.dy),0)>0)){var u,f=Math.floor((e-o.x0)/s.dx),h=Math.floor(Math.abs(r-o.y0)/s.dy);if(s._hasZ?u=o.z[h][f]:s._hasSource&&(u=s._canvas.el.getContext(\"2d\").getImageData(f,h,1,1).data),u){var p,d=o.hi||s.hoverinfo;if(d){var g=d.split(\"+\");-1!==g.indexOf(\"all\")&&(g=[\"color\"]),-1!==g.indexOf(\"color\")&&(p=!0)}var m,v=a.colormodel[s.colormodel],y=v.colormodel||s.colormodel,x=y.length,b=s._scaler(u),_=v.suffix,w=[];(s.hovertemplate||p)&&(w.push(\"[\"+[b[0]+_[0],b[1]+_[1],b[2]+_[2]].join(\", \")),4===x&&w.push(\", \"+b[3]+_[3]),w.push(\"]\"),w=w.join(\"\"),t.extraText=y.toUpperCase()+\": \"+w),Array.isArray(s.hovertext)&&Array.isArray(s.hovertext[h])?m=s.hovertext[h][f]:Array.isArray(s.text)&&Array.isArray(s.text[h])&&(m=s.text[h][f]);var T=c.c2p(o.y0+(h+.5)*s.dy),k=o.x0+(f+.5)*s.dx,A=o.y0+(h+.5)*s.dy,M=\"[\"+u.slice(0,s.colormodel.length).join(\", \")+\"]\";return[i.extendFlat(t,{index:[h,f],x0:l.c2p(o.x0+f*s.dx),x1:l.c2p(o.x0+(f+1)*s.dx),y0:T,y1:T,color:b,xVal:k,xLabelVal:k,yVal:A,yLabelVal:A,zLabelVal:M,text:m,hovertemplateLabels:{zLabel:M,colorLabel:w,\"color[0]Label\":b[0]+_[0],\"color[1]Label\":b[1]+_[1],\"color[2]Label\":b[2]+_[2],\"color[3]Label\":b[3]+_[3]}})]}}}},{\"../../components/fx\":406,\"../../lib\":503,\"./constants\":847}],852:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),calc:t(\"./calc\"),plot:t(\"./plot\"),style:t(\"./style\"),hoverPoints:t(\"./hover\"),eventData:t(\"./event_data\"),moduleType:\"trace\",name:\"image\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"cartesian\",\"svg\",\"2dMap\",\"noSortingByValue\"],animatable:!1,meta:{}}},{\"../../plots/cartesian\":568,\"./attributes\":845,\"./calc\":846,\"./defaults\":848,\"./event_data\":849,\"./hover\":851,\"./plot\":853,\"./style\":854}],853:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=i.strTranslate,o=t(\"../../constants/xmlns_namespaces\"),s=t(\"./constants\"),l=i.isIOS()||i.isSafari()||i.isIE();e.exports=function(t,e,r,c){var u=e.xaxis,f=e.yaxis,h=!(l||t._context._exportedPlot);i.makeTraceGroups(c,r,\"im\").each((function(e){var r=n.select(this),l=e[0],c=l.trace,p=(\"fast\"===c.zsmooth||!1===c.zsmooth&&h)&&!c._hasZ&&c._hasSource&&\"linear\"===u.type&&\"linear\"===f.type;c._realImage=p;var d,g,m,v,y,x,b=l.z,_=l.x0,w=l.y0,T=l.w,k=l.h,A=c.dx,M=c.dy;for(x=0;void 0===d&&x0;)g=u.c2p(_+x*A),x--;for(x=0;void 0===v&&x0;)y=f.c2p(w+x*M),x--;if(gI[0];if(O||z){var D=d+S/2,R=v+E/2;C+=\"transform:\"+a(D+\"px\",R+\"px\")+\"scale(\"+(O?-1:1)+\",\"+(z?-1:1)+\")\"+a(-D+\"px\",-R+\"px\")+\";\"}}L.attr(\"style\",C);var F=new Promise((function(t){if(c._hasZ)t();else if(c._hasSource)if(c._canvas&&c._canvas.el.width===T&&c._canvas.el.height===k&&c._canvas.source===c.source)t();else{var e=document.createElement(\"canvas\");e.width=T,e.height=k;var r=e.getContext(\"2d\");c._image=c._image||new Image;var n=c._image;n.onload=function(){r.drawImage(n,0,0),c._canvas={el:e,source:c.source},t()},n.setAttribute(\"src\",c.source)}})).then((function(){var t;if(c._hasZ)t=B((function(t,e){return b[e][t]})).toDataURL(\"image/png\");else if(c._hasSource)if(p)t=c.source;else{var e=c._canvas.el.getContext(\"2d\").getImageData(0,0,T,k).data;t=B((function(t,r){var n=4*(r*T+t);return[e[n],e[n+1],e[n+2],e[n+3]]})).toDataURL(\"image/png\")}L.attr({\"xlink:href\":t,height:E,width:S,x:d,y:v})}));t._promises.push(F)}function B(t){var e=document.createElement(\"canvas\");e.width=S,e.height=E;var r,n=e.getContext(\"2d\"),a=function(t){return i.constrain(Math.round(u.c2p(_+t*A)-d),0,S)},o=function(t){return i.constrain(Math.round(f.c2p(w+t*M)-v),0,E)},h=s.colormodel[c.colormodel],p=h.colormodel||c.colormodel,g=h.fmt;for(x=0;x0}function T(t){t.each((function(t){y.stroke(n.select(this),t.line.color)})).each((function(t){y.fill(n.select(this),t.color)})).style(\"stroke-width\",(function(t){return t.line.width}))}function k(t,e,r){var n=t._fullLayout,i=o.extendFlat({type:\"linear\",ticks:\"outside\",range:r,showline:!0},e),a={type:\"linear\",_id:\"x\"+e._id},s={letter:\"x\",font:n.font,noHover:!0,noTickson:!0};function l(t,e){return o.coerce(i,a,v,t,e)}return g(i,a,l,s,n),m(i,a,l,s),a}function A(t,e,r){return[Math.min(e/t.width,r/t.height),t,e+\"x\"+r]}function M(t,e,r,i){var a=document.createElementNS(\"http://www.w3.org/2000/svg\",\"text\"),o=n.select(a);return o.text(t).attr(\"x\",0).attr(\"y\",0).attr(\"text-anchor\",r).attr(\"data-unformatted\",t).call(p.convertToTspans,i).call(f.font,e),f.bBox(o.node())}function S(t,e,r,n,i,a){var s=\"_cache\"+e;t[s]&&t[s].key===i||(t[s]={key:i,value:r});var l=o.aggNums(a,null,[t[s].value,n],2);return t[s].value=l,l}e.exports=function(t,e,r,g){var m,v=t._fullLayout;w(r)&&g&&(m=g()),o.makeTraceGroups(v._indicatorlayer,e,\"trace\").each((function(e){var g,E,L,C,P,I=e[0].trace,O=n.select(this),z=I._hasGauge,D=I._isAngular,R=I._isBullet,F=I.domain,B={w:v._size.w*(F.x[1]-F.x[0]),h:v._size.h*(F.y[1]-F.y[0]),l:v._size.l+v._size.w*F.x[0],r:v._size.r+v._size.w*(1-F.x[1]),t:v._size.t+v._size.h*(1-F.y[1]),b:v._size.b+v._size.h*F.y[0]},N=B.l+B.w/2,j=B.t+B.h/2,U=Math.min(B.w/2,B.h),V=h.innerRadius*U,H=I.align||\"center\";if(E=j,z){if(D&&(g=N,E=j+U/2,L=function(t){return function(t,e){var r=Math.sqrt(t.width/2*(t.width/2)+t.height*t.height);return[e/r,t,e]}(t,.9*V)}),R){var q=h.bulletPadding,G=1-h.bulletNumberDomainSize+q;g=B.l+(G+(1-G)*b[H])*B.w,L=function(t){return A(t,(h.bulletNumberDomainSize-q)*B.w,B.h)}}}else g=B.l+b[H]*B.w,L=function(t){return A(t,B.w,B.h)};!function(t,e,r,i){var c,u,h,g=r[0].trace,m=i.numbersX,v=i.numbersY,T=g.align||\"center\",A=x[T],E=i.transitionOpts,L=i.onComplete,C=o.ensureSingle(e,\"g\",\"numbers\"),P=[];g._hasNumber&&P.push(\"number\");g._hasDelta&&(P.push(\"delta\"),\"left\"===g.delta.position&&P.reverse());var I=C.selectAll(\"text\").data(P);function O(e,r,n,i){if(!e.match(\"s\")||n>=0==i>=0||r(n).slice(-1).match(_)||r(i).slice(-1).match(_))return r;var a=e.slice().replace(\"s\",\"f\").replace(/\\d+/,(function(t){return parseInt(t)-1})),o=k(t,{tickformat:a});return function(t){return Math.abs(t)<1?d.tickText(o,t).text:r(t)}}I.enter().append(\"text\"),I.attr(\"text-anchor\",(function(){return A})).attr(\"class\",(function(t){return t})).attr(\"x\",null).attr(\"y\",null).attr(\"dx\",null).attr(\"dy\",null),I.exit().remove();var z,D=g.mode+g.align;g._hasDelta&&(z=function(){var e=k(t,{tickformat:g.delta.valueformat},g._range);e.setScale(),d.prepTicks(e);var i=function(t){return d.tickText(e,t).text},o=function(t){return g.delta.relative?t.relativeDelta:t.delta},s=function(t,e){return 0===t||\"number\"!=typeof t||isNaN(t)?\"-\":(t>0?g.delta.increasing.symbol:g.delta.decreasing.symbol)+e(t)},l=function(t){return t.delta>=0?g.delta.increasing.color:g.delta.decreasing.color};void 0===g._deltaLastValue&&(g._deltaLastValue=o(r[0]));var c=C.select(\"text.delta\");function h(){c.text(s(o(r[0]),i)).call(y.fill,l(r[0])).call(p.convertToTspans,t)}return c.call(f.font,g.delta.font).call(y.fill,l({delta:g._deltaLastValue})),w(E)?c.transition().duration(E.duration).ease(E.easing).tween(\"text\",(function(){var t=n.select(this),e=o(r[0]),c=g._deltaLastValue,u=O(g.delta.valueformat,i,c,e),f=a(c,e);return g._deltaLastValue=e,function(e){t.text(s(f(e),u)),t.call(y.fill,l({delta:f(e)}))}})).each(\"end\",(function(){h(),L&&L()})).each(\"interrupt\",(function(){h(),L&&L()})):h(),u=M(s(o(r[0]),i),g.delta.font,A,t),c}(),D+=g.delta.position+g.delta.font.size+g.delta.font.family+g.delta.valueformat,D+=g.delta.increasing.symbol+g.delta.decreasing.symbol,h=u);g._hasNumber&&(!function(){var e=k(t,{tickformat:g.number.valueformat},g._range);e.setScale(),d.prepTicks(e);var i=function(t){return d.tickText(e,t).text},o=g.number.suffix,s=g.number.prefix,l=C.select(\"text.number\");function u(){var e=\"number\"==typeof r[0].y?s+i(r[0].y)+o:\"-\";l.text(e).call(f.font,g.number.font).call(p.convertToTspans,t)}w(E)?l.transition().duration(E.duration).ease(E.easing).each(\"end\",(function(){u(),L&&L()})).each(\"interrupt\",(function(){u(),L&&L()})).attrTween(\"text\",(function(){var t=n.select(this),e=a(r[0].lastY,r[0].y);g._lastValue=r[0].y;var l=O(g.number.valueformat,i,r[0].lastY,r[0].y);return function(r){t.text(s+l(e(r))+o)}})):u(),c=M(s+i(r[0].y)+o,g.number.font,A,t)}(),D+=g.number.font.size+g.number.font.family+g.number.valueformat+g.number.suffix+g.number.prefix,h=c);if(g._hasDelta&&g._hasNumber){var R,F,B=[(c.left+c.right)/2,(c.top+c.bottom)/2],N=[(u.left+u.right)/2,(u.top+u.bottom)/2],j=.75*g.delta.font.size;\"left\"===g.delta.position&&(R=S(g,\"deltaPos\",0,-1*(c.width*b[g.align]+u.width*(1-b[g.align])+j),D,Math.min),F=B[1]-N[1],h={width:c.width+u.width+j,height:Math.max(c.height,u.height),left:u.left+R,right:c.right,top:Math.min(c.top,u.top+F),bottom:Math.max(c.bottom,u.bottom+F)}),\"right\"===g.delta.position&&(R=S(g,\"deltaPos\",0,c.width*(1-b[g.align])+u.width*b[g.align]+j,D,Math.max),F=B[1]-N[1],h={width:c.width+u.width+j,height:Math.max(c.height,u.height),left:c.left,right:u.right+R,top:Math.min(c.top,u.top+F),bottom:Math.max(c.bottom,u.bottom+F)}),\"bottom\"===g.delta.position&&(R=null,F=u.height,h={width:Math.max(c.width,u.width),height:c.height+u.height,left:Math.min(c.left,u.left),right:Math.max(c.right,u.right),top:c.bottom-c.height,bottom:c.bottom+u.height}),\"top\"===g.delta.position&&(R=null,F=c.top,h={width:Math.max(c.width,u.width),height:c.height+u.height,left:Math.min(c.left,u.left),right:Math.max(c.right,u.right),top:c.bottom-c.height-u.height,bottom:c.bottom}),z.attr({dx:R,dy:F})}(g._hasNumber||g._hasDelta)&&C.attr(\"transform\",(function(){var t=i.numbersScaler(h);D+=t[2];var e,r=S(g,\"numbersScale\",1,t[0],D,Math.min);g._scaleNumbers||(r=1),e=g._isAngular?v-r*h.bottom:v-r*(h.top+h.bottom)/2,g._numbersTop=r*h.top+e;var n=h[T];\"center\"===T&&(n=(h.left+h.right)/2);var a=m-r*n;return a=S(g,\"numbersTranslate\",0,a,D,Math.max),l(a,e)+s(r)}))}(t,O,e,{numbersX:g,numbersY:E,numbersScaler:L,transitionOpts:r,onComplete:m}),z&&(C={range:I.gauge.axis.range,color:I.gauge.bgcolor,line:{color:I.gauge.bordercolor,width:0},thickness:1},P={range:I.gauge.axis.range,color:\"rgba(0, 0, 0, 0)\",line:{color:I.gauge.bordercolor,width:I.gauge.borderwidth},thickness:1});var Y=O.selectAll(\"g.angular\").data(D?e:[]);Y.exit().remove();var W=O.selectAll(\"g.angularaxis\").data(D?e:[]);W.exit().remove(),D&&function(t,e,r,a){var o,s,f,h,p=r[0].trace,g=a.size,m=a.radius,v=a.innerRadius,y=a.gaugeBg,x=a.gaugeOutline,b=[g.l+g.w/2,g.t+g.h/2+m/2],_=a.gauge,A=a.layer,M=a.transitionOpts,S=a.onComplete,E=Math.PI/2;function L(t){var e=p.gauge.axis.range[0],r=(t-e)/(p.gauge.axis.range[1]-e)*Math.PI-E;return r<-E?-E:r>E?E:r}function C(t){return n.svg.arc().innerRadius((v+m)/2-t/2*(m-v)).outerRadius((v+m)/2+t/2*(m-v)).startAngle(-E)}function P(t){t.attr(\"d\",(function(t){return C(t.thickness).startAngle(L(t.range[0])).endAngle(L(t.range[1]))()}))}_.enter().append(\"g\").classed(\"angular\",!0),_.attr(\"transform\",l(b[0],b[1])),A.enter().append(\"g\").classed(\"angularaxis\",!0).classed(\"crisp\",!0),A.selectAll(\"g.xangularaxistick,path,text\").remove(),(o=k(t,p.gauge.axis)).type=\"linear\",o.range=p.gauge.axis.range,o._id=\"xangularaxis\",o.ticklabeloverflow=\"allow\",o.setScale();var I=function(t){return(o.range[0]-t.x)/(o.range[1]-o.range[0])*Math.PI+Math.PI},O={},z=d.makeLabelFns(o,0).labelStandoff;O.xFn=function(t){var e=I(t);return Math.cos(e)*z},O.yFn=function(t){var e=I(t),r=Math.sin(e)>0?.2:1;return-Math.sin(e)*(z+t.fontSize*r)+Math.abs(Math.cos(e))*(t.fontSize*u)},O.anchorFn=function(t){var e=I(t),r=Math.cos(e);return Math.abs(r)<.1?\"middle\":r>0?\"start\":\"end\"},O.heightFn=function(t,e,r){var n=I(t);return-.5*(1+Math.sin(n))*r};var D=function(t){return l(b[0]+m*Math.cos(t),b[1]-m*Math.sin(t))};f=function(t){return D(I(t))};if(s=d.calcTicks(o),h=d.getTickSigns(o)[2],o.visible){h=\"inside\"===o.ticks?-1:1;var R=(o.linewidth||1)/2;d.drawTicks(t,o,{vals:s,layer:A,path:\"M\"+h*R+\",0h\"+h*o.ticklen,transFn:function(t){var e=I(t);return D(e)+\"rotate(\"+-c(e)+\")\"}}),d.drawLabels(t,o,{vals:s,layer:A,transFn:f,labelFns:O})}var F=[y].concat(p.gauge.steps),B=_.selectAll(\"g.bg-arc\").data(F);B.enter().append(\"g\").classed(\"bg-arc\",!0).append(\"path\"),B.select(\"path\").call(P).call(T),B.exit().remove();var N=C(p.gauge.bar.thickness),j=_.selectAll(\"g.value-arc\").data([p.gauge.bar]);j.enter().append(\"g\").classed(\"value-arc\",!0).append(\"path\");var U=j.select(\"path\");w(M)?(U.transition().duration(M.duration).ease(M.easing).each(\"end\",(function(){S&&S()})).each(\"interrupt\",(function(){S&&S()})).attrTween(\"d\",(V=N,H=L(r[0].lastY),q=L(r[0].y),function(){var t=i(H,q);return function(e){return V.endAngle(t(e))()}})),p._lastValue=r[0].y):U.attr(\"d\",\"number\"==typeof r[0].y?N.endAngle(L(r[0].y)):\"M0,0Z\");var V,H,q;U.call(T),j.exit().remove(),F=[];var G=p.gauge.threshold.value;(G||0===G)&&F.push({range:[G,G],color:p.gauge.threshold.color,line:{color:p.gauge.threshold.line.color,width:p.gauge.threshold.line.width},thickness:p.gauge.threshold.thickness});var Y=_.selectAll(\"g.threshold-arc\").data(F);Y.enter().append(\"g\").classed(\"threshold-arc\",!0).append(\"path\"),Y.select(\"path\").call(P).call(T),Y.exit().remove();var W=_.selectAll(\"g.gauge-outline\").data([x]);W.enter().append(\"g\").classed(\"gauge-outline\",!0).append(\"path\"),W.select(\"path\").call(P).call(T),W.exit().remove()}(t,0,e,{radius:U,innerRadius:V,gauge:Y,layer:W,size:B,gaugeBg:C,gaugeOutline:P,transitionOpts:r,onComplete:m});var X=O.selectAll(\"g.bullet\").data(R?e:[]);X.exit().remove();var Z=O.selectAll(\"g.bulletaxis\").data(R?e:[]);Z.exit().remove(),R&&function(t,e,r,n){var i,a,o,s,c,u=r[0].trace,f=n.gauge,p=n.layer,g=n.gaugeBg,m=n.gaugeOutline,v=n.size,x=u.domain,b=n.transitionOpts,_=n.onComplete;f.enter().append(\"g\").classed(\"bullet\",!0),f.attr(\"transform\",l(v.l,v.t)),p.enter().append(\"g\").classed(\"bulletaxis\",!0).classed(\"crisp\",!0),p.selectAll(\"g.xbulletaxistick,path,text\").remove();var A=v.h,M=u.gauge.bar.thickness*A,S=x.x[0],E=x.x[0]+(x.x[1]-x.x[0])*(u._hasNumber||u._hasDelta?1-h.bulletNumberDomainSize:1);(i=k(t,u.gauge.axis))._id=\"xbulletaxis\",i.domain=[S,E],i.setScale(),a=d.calcTicks(i),o=d.makeTransTickFn(i),s=d.getTickSigns(i)[2],c=v.t+v.h,i.visible&&(d.drawTicks(t,i,{vals:\"inside\"===i.ticks?d.clipEnds(i,a):a,layer:p,path:d.makeTickPath(i,c,s),transFn:o}),d.drawLabels(t,i,{vals:a,layer:p,transFn:o,labelFns:d.makeLabelFns(i,c)}));function L(t){t.attr(\"width\",(function(t){return Math.max(0,i.c2p(t.range[1])-i.c2p(t.range[0]))})).attr(\"x\",(function(t){return i.c2p(t.range[0])})).attr(\"y\",(function(t){return.5*(1-t.thickness)*A})).attr(\"height\",(function(t){return t.thickness*A}))}var C=[g].concat(u.gauge.steps),P=f.selectAll(\"g.bg-bullet\").data(C);P.enter().append(\"g\").classed(\"bg-bullet\",!0).append(\"rect\"),P.select(\"rect\").call(L).call(T),P.exit().remove();var I=f.selectAll(\"g.value-bullet\").data([u.gauge.bar]);I.enter().append(\"g\").classed(\"value-bullet\",!0).append(\"rect\"),I.select(\"rect\").attr(\"height\",M).attr(\"y\",(A-M)/2).call(T),w(b)?I.select(\"rect\").transition().duration(b.duration).ease(b.easing).each(\"end\",(function(){_&&_()})).each(\"interrupt\",(function(){_&&_()})).attr(\"width\",Math.max(0,i.c2p(Math.min(u.gauge.axis.range[1],r[0].y)))):I.select(\"rect\").attr(\"width\",\"number\"==typeof r[0].y?Math.max(0,i.c2p(Math.min(u.gauge.axis.range[1],r[0].y))):0);I.exit().remove();var O=r.filter((function(){return u.gauge.threshold.value||0===u.gauge.threshold.value})),z=f.selectAll(\"g.threshold-bullet\").data(O);z.enter().append(\"g\").classed(\"threshold-bullet\",!0).append(\"line\"),z.select(\"line\").attr(\"x1\",i.c2p(u.gauge.threshold.value)).attr(\"x2\",i.c2p(u.gauge.threshold.value)).attr(\"y1\",(1-u.gauge.threshold.thickness)/2*A).attr(\"y2\",(1-(1-u.gauge.threshold.thickness)/2)*A).call(y.stroke,u.gauge.threshold.line.color).style(\"stroke-width\",u.gauge.threshold.line.width),z.exit().remove();var D=f.selectAll(\"g.gauge-outline\").data([m]);D.enter().append(\"g\").classed(\"gauge-outline\",!0).append(\"rect\"),D.select(\"rect\").call(L).call(T),D.exit().remove()}(t,0,e,{gauge:X,layer:Z,size:B,gaugeBg:C,gaugeOutline:P,transitionOpts:r,onComplete:m});var J=O.selectAll(\"text.title\").data(e);J.exit().remove(),J.enter().append(\"text\").classed(\"title\",!0),J.attr(\"text-anchor\",(function(){return R?x.right:x[I.title.align]})).text(I.title.text).call(f.font,I.title.font).call(p.convertToTspans,t),J.attr(\"transform\",(function(){var t,e=B.l+B.w*b[I.title.align],r=h.titlePadding,n=f.bBox(J.node());if(z){if(D)if(I.gauge.axis.visible)t=f.bBox(W.node()).top-r-n.bottom;else t=B.t+B.h/2-U/2-n.bottom-r;R&&(t=E-(n.top+n.bottom)/2,e=B.l-h.bulletPadding*B.w)}else t=I._numbersTop-r-n.bottom;return l(e,t)}))}))}},{\"../../components/color\":366,\"../../components/drawing\":388,\"../../constants/alignment\":471,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../../plots/cartesian/axes\":554,\"../../plots/cartesian/axis_defaults\":556,\"../../plots/cartesian/layout_attributes\":569,\"../../plots/cartesian/position_defaults\":572,\"./constants\":858,\"@plotly/d3\":58,\"d3-interpolate\":116}],862:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/attributes\"),i=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,a=t(\"../../plots/template_attributes\").hovertemplateAttrs,o=t(\"../mesh3d/attributes\"),s=t(\"../../plots/attributes\"),l=t(\"../../lib/extend\").extendFlat,c=t(\"../../plot_api/edit_types\").overrideAll;var u=e.exports=c(l({x:{valType:\"data_array\"},y:{valType:\"data_array\"},z:{valType:\"data_array\"},value:{valType:\"data_array\"},isomin:{valType:\"number\"},isomax:{valType:\"number\"},surface:{show:{valType:\"boolean\",dflt:!0},count:{valType:\"integer\",dflt:2,min:1},fill:{valType:\"number\",min:0,max:1,dflt:1},pattern:{valType:\"flaglist\",flags:[\"A\",\"B\",\"C\",\"D\",\"E\"],extras:[\"all\",\"odd\",\"even\"],dflt:\"all\"}},spaceframe:{show:{valType:\"boolean\",dflt:!1},fill:{valType:\"number\",min:0,max:1,dflt:.15}},slices:{x:{show:{valType:\"boolean\",dflt:!1},locations:{valType:\"data_array\",dflt:[]},fill:{valType:\"number\",min:0,max:1,dflt:1}},y:{show:{valType:\"boolean\",dflt:!1},locations:{valType:\"data_array\",dflt:[]},fill:{valType:\"number\",min:0,max:1,dflt:1}},z:{show:{valType:\"boolean\",dflt:!1},locations:{valType:\"data_array\",dflt:[]},fill:{valType:\"number\",min:0,max:1,dflt:1}}},caps:{x:{show:{valType:\"boolean\",dflt:!0},fill:{valType:\"number\",min:0,max:1,dflt:1}},y:{show:{valType:\"boolean\",dflt:!0},fill:{valType:\"number\",min:0,max:1,dflt:1}},z:{show:{valType:\"boolean\",dflt:!0},fill:{valType:\"number\",min:0,max:1,dflt:1}}},text:{valType:\"string\",dflt:\"\",arrayOk:!0},hovertext:{valType:\"string\",dflt:\"\",arrayOk:!0},hovertemplate:a(),xhoverformat:i(\"x\"),yhoverformat:i(\"y\"),zhoverformat:i(\"z\"),valuehoverformat:i(\"value\",1),showlegend:l({},s.showlegend,{dflt:!1})},n(\"\",{colorAttr:\"`value`\",showScaleDflt:!0,editTypeOverride:\"calc\"}),{opacity:o.opacity,lightposition:o.lightposition,lighting:o.lighting,flatshading:o.flatshading,contour:o.contour,hoverinfo:l({},s.hoverinfo)}),\"calc\",\"nested\");u.flatshading.dflt=!0,u.lighting.facenormalsepsilon.dflt=0,u.x.editType=u.y.editType=u.z.editType=u.value.editType=\"calc+clearAxisTypes\",u.transforms=void 0},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plot_api/edit_types\":536,\"../../plots/attributes\":550,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/template_attributes\":633,\"../mesh3d/attributes\":867}],863:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/calc\"),i=t(\"../streamtube/calc\").processGrid,a=t(\"../streamtube/calc\").filter;e.exports=function(t,e){e._len=Math.min(e.x.length,e.y.length,e.z.length,e.value.length),e._x=a(e.x,e._len),e._y=a(e.y,e._len),e._z=a(e.z,e._len),e._value=a(e.value,e._len);var r=i(e);e._gridFill=r.fill,e._Xs=r.Xs,e._Ys=r.Ys,e._Zs=r.Zs,e._len=r.len;for(var o=1/0,s=-1/0,l=0;l0;r--){var n=Math.min(e[r],e[r-1]),i=Math.max(e[r],e[r-1]);if(i>n&&n-1}function R(t,e){return null===t?e:t}function F(e,r,n){C();var i,a,o,l=[r],c=[n];if(s>=1)l=[r],c=[n];else if(s>0){var u=function(t,e){var r=t[0],n=t[1],i=t[2],a=function(t,e,r){for(var n=[],i=0;i-1?n[p]:L(d,g,v);h[p]=x>-1?x:I(d,g,v,R(e,y))}i=h[0],a=h[1],o=h[2],t._meshI.push(i),t._meshJ.push(a),t._meshK.push(o),++m}}function B(t,e,r,n){var i=t[3];in&&(i=n);for(var a=(t[3]-i)/(t[3]-e[3]+1e-9),o=[],s=0;s<4;s++)o[s]=(1-a)*t[s]+a*e[s];return o}function N(t,e,r){return t>=e&&t<=r}function j(t){var e=.001*(E-S);return t>=S-e&&t<=E+e}function U(e){for(var r=[],n=0;n<4;n++){var i=e[n];r.push([t._x[i],t._y[i],t._z[i],t._value[i]])}return r}function V(t,e,r,n,i,a){a||(a=1),r=[-1,-1,-1];var o=!1,s=[N(e[0][3],n,i),N(e[1][3],n,i),N(e[2][3],n,i)];if(!s[0]&&!s[1]&&!s[2])return!1;var l=function(t,e,r){return j(e[0][3])&&j(e[1][3])&&j(e[2][3])?(F(t,e,r),!0):a<3&&V(t,e,r,S,E,++a)};if(s[0]&&s[1]&&s[2])return l(t,e,r)||o;var c=!1;return[[0,1,2],[2,0,1],[1,2,0]].forEach((function(a){if(s[a[0]]&&s[a[1]]&&!s[a[2]]){var u=e[a[0]],f=e[a[1]],h=e[a[2]],p=B(h,u,n,i),d=B(h,f,n,i);o=l(t,[d,p,u],[-1,-1,r[a[0]]])||o,o=l(t,[u,f,d],[r[a[0]],r[a[1]],-1])||o,c=!0}})),c||[[0,1,2],[1,2,0],[2,0,1]].forEach((function(a){if(s[a[0]]&&!s[a[1]]&&!s[a[2]]){var u=e[a[0]],f=e[a[1]],h=e[a[2]],p=B(f,u,n,i),d=B(h,u,n,i);o=l(t,[d,p,u],[-1,-1,r[a[0]]])||o,c=!0}})),o}function H(t,e,r,n){var i=!1,a=U(e),o=[N(a[0][3],r,n),N(a[1][3],r,n),N(a[2][3],r,n),N(a[3][3],r,n)];if(!(o[0]||o[1]||o[2]||o[3]))return i;if(o[0]&&o[1]&&o[2]&&o[3])return g&&(i=function(t,e,r){var n=function(n,i,a){F(t,[e[n],e[i],e[a]],[r[n],r[i],r[a]])};n(0,1,2),n(3,0,1),n(2,3,0),n(1,2,3)}(t,a,e)||i),i;var s=!1;return[[0,1,2,3],[3,0,1,2],[2,3,0,1],[1,2,3,0]].forEach((function(l){if(o[l[0]]&&o[l[1]]&&o[l[2]]&&!o[l[3]]){var c=a[l[0]],u=a[l[1]],f=a[l[2]],h=a[l[3]];if(g)i=F(t,[c,u,f],[e[l[0]],e[l[1]],e[l[2]]])||i;else{var p=B(h,c,r,n),d=B(h,u,r,n),m=B(h,f,r,n);i=F(null,[p,d,m],[-1,-1,-1])||i}s=!0}})),s?i:([[0,1,2,3],[1,2,3,0],[2,3,0,1],[3,0,1,2],[0,2,3,1],[1,3,2,0]].forEach((function(l){if(o[l[0]]&&o[l[1]]&&!o[l[2]]&&!o[l[3]]){var c=a[l[0]],u=a[l[1]],f=a[l[2]],h=a[l[3]],p=B(f,c,r,n),d=B(f,u,r,n),m=B(h,u,r,n),v=B(h,c,r,n);g?(i=F(t,[c,v,p],[e[l[0]],-1,-1])||i,i=F(t,[u,d,m],[e[l[1]],-1,-1])||i):i=function(t,e,r){var n=function(n,i,a){F(t,[e[n],e[i],e[a]],[r[n],r[i],r[a]])};n(0,1,2),n(2,3,0)}(null,[p,d,m,v],[-1,-1,-1,-1])||i,s=!0}})),s||[[0,1,2,3],[1,2,3,0],[2,3,0,1],[3,0,1,2]].forEach((function(l){if(o[l[0]]&&!o[l[1]]&&!o[l[2]]&&!o[l[3]]){var c=a[l[0]],u=a[l[1]],f=a[l[2]],h=a[l[3]],p=B(u,c,r,n),d=B(f,c,r,n),m=B(h,c,r,n);g?(i=F(t,[c,p,d],[e[l[0]],-1,-1])||i,i=F(t,[c,d,m],[e[l[0]],-1,-1])||i,i=F(t,[c,m,p],[e[l[0]],-1,-1])||i):i=F(null,[p,d,m],[-1,-1,-1])||i,s=!0}})),i)}function q(t,e,r,n,i,a,o,s,l,c,u){var f=!1;return d&&(D(t,\"A\")&&(f=H(null,[e,r,n,a],c,u)||f),D(t,\"B\")&&(f=H(null,[r,n,i,l],c,u)||f),D(t,\"C\")&&(f=H(null,[r,a,o,l],c,u)||f),D(t,\"D\")&&(f=H(null,[n,a,s,l],c,u)||f),D(t,\"E\")&&(f=H(null,[r,n,a,l],c,u)||f)),g&&(f=H(t,[r,n,a,l],c,u)||f),f}function G(t,e,r,n,i,a,o,s){return[!0===s[0]||V(t,U([e,r,n]),[e,r,n],a,o),!0===s[1]||V(t,U([n,i,e]),[n,i,e],a,o)]}function Y(t,e,r,n,i,a,o,s,l){return s?G(t,e,r,i,n,a,o,l):G(t,r,i,n,e,a,o,l)}function W(t,e,r,n,i,a,o){var s,l,c,u,f=!1,h=function(){f=V(t,[s,l,c],[-1,-1,-1],i,a)||f,f=V(t,[c,u,s],[-1,-1,-1],i,a)||f},p=o[0],d=o[1],g=o[2];return p&&(s=O(U([k(e,r-0,n-0)])[0],U([k(e-1,r-0,n-0)])[0],p),l=O(U([k(e,r-0,n-1)])[0],U([k(e-1,r-0,n-1)])[0],p),c=O(U([k(e,r-1,n-1)])[0],U([k(e-1,r-1,n-1)])[0],p),u=O(U([k(e,r-1,n-0)])[0],U([k(e-1,r-1,n-0)])[0],p),h()),d&&(s=O(U([k(e-0,r,n-0)])[0],U([k(e-0,r-1,n-0)])[0],d),l=O(U([k(e-0,r,n-1)])[0],U([k(e-0,r-1,n-1)])[0],d),c=O(U([k(e-1,r,n-1)])[0],U([k(e-1,r-1,n-1)])[0],d),u=O(U([k(e-1,r,n-0)])[0],U([k(e-1,r-1,n-0)])[0],d),h()),g&&(s=O(U([k(e-0,r-0,n)])[0],U([k(e-0,r-0,n-1)])[0],g),l=O(U([k(e-0,r-1,n)])[0],U([k(e-0,r-1,n-1)])[0],g),c=O(U([k(e-1,r-1,n)])[0],U([k(e-1,r-1,n-1)])[0],g),u=O(U([k(e-1,r-0,n)])[0],U([k(e-1,r-0,n-1)])[0],g),h()),f}function X(t,e,r,n,i,a,o,s,l,c,u,f){var h=t;return f?(d&&\"even\"===t&&(h=null),q(h,e,r,n,i,a,o,s,l,c,u)):(d&&\"odd\"===t&&(h=null),q(h,l,s,o,a,i,n,r,e,c,u))}function Z(t,e,r,n,i){for(var a=[],o=0,s=0;sMath.abs(d-M)?[A,d]:[d,M];$(e,T[0],T[1])}}var L=[[Math.min(S,M),Math.max(S,M)],[Math.min(A,E),Math.max(A,E)]];[\"x\",\"y\",\"z\"].forEach((function(e){for(var r=[],n=0;n0&&(u.push(p.id),\"x\"===e?f.push([p.distRatio,0,0]):\"y\"===e?f.push([0,p.distRatio,0]):f.push([0,0,p.distRatio]))}else c=nt(1,\"x\"===e?b-1:\"y\"===e?_-1:w-1);u.length>0&&(r[i]=\"x\"===e?tt(null,u,a,o,f,r[i]):\"y\"===e?et(null,u,a,o,f,r[i]):rt(null,u,a,o,f,r[i]),i++),c.length>0&&(r[i]=\"x\"===e?Z(null,c,a,o,r[i]):\"y\"===e?J(null,c,a,o,r[i]):K(null,c,a,o,r[i]),i++)}var d=t.caps[e];d.show&&d.fill&&(z(d.fill),r[i]=\"x\"===e?Z(null,[0,b-1],a,o,r[i]):\"y\"===e?J(null,[0,_-1],a,o,r[i]):K(null,[0,w-1],a,o,r[i]),i++)}})),0===m&&P(),t._meshX=n,t._meshY=i,t._meshZ=a,t._meshIntensity=o,t._Xs=v,t._Ys=y,t._Zs=x}(),t}e.exports={findNearestOnAxis:l,generateIsoMeshes:h,createIsosurfaceTrace:function(t,e){var r=t.glplot.gl,i=n({gl:r}),a=new c(t,i,e.uid);return i._trace=a,a.update(e),t.glplot.add(i),a}}},{\"../../../stackgl_modules\":1120,\"../../components/colorscale\":378,\"../../lib/gl_format_color\":499,\"../../lib/str2rgbarray\":528,\"../../plots/gl3d/zip3\":609}],865:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../registry\"),a=t(\"./attributes\"),o=t(\"../../components/colorscale/defaults\");function s(t,e,r,n,a){var s=a(\"isomin\"),l=a(\"isomax\");null!=l&&null!=s&&s>l&&(e.isomin=null,e.isomax=null);var c=a(\"x\"),u=a(\"y\"),f=a(\"z\"),h=a(\"value\");c&&c.length&&u&&u.length&&f&&f.length&&h&&h.length?(i.getComponentMethod(\"calendars\",\"handleTraceDefaults\")(t,e,[\"x\",\"y\",\"z\"],n),a(\"valuehoverformat\"),[\"x\",\"y\",\"z\"].forEach((function(t){a(t+\"hoverformat\");var e=\"caps.\"+t;a(e+\".show\")&&a(e+\".fill\");var r=\"slices.\"+t;a(r+\".show\")&&(a(r+\".fill\"),a(r+\".locations\"))})),a(\"spaceframe.show\")&&a(\"spaceframe.fill\"),a(\"surface.show\")&&(a(\"surface.count\"),a(\"surface.fill\"),a(\"surface.pattern\")),a(\"contour.show\")&&(a(\"contour.color\"),a(\"contour.width\")),[\"text\",\"hovertext\",\"hovertemplate\",\"lighting.ambient\",\"lighting.diffuse\",\"lighting.specular\",\"lighting.roughness\",\"lighting.fresnel\",\"lighting.vertexnormalsepsilon\",\"lighting.facenormalsepsilon\",\"lightposition.x\",\"lightposition.y\",\"lightposition.z\",\"flatshading\",\"opacity\"].forEach((function(t){a(t)})),o(t,e,n,a,{prefix:\"\",cLetter:\"c\"}),e._length=null):e.visible=!1}e.exports={supplyDefaults:function(t,e,r,i){s(t,e,r,i,(function(r,i){return n.coerce(t,e,a,r,i)}))},supplyIsoDefaults:s}},{\"../../components/colorscale/defaults\":376,\"../../lib\":503,\"../../registry\":638,\"./attributes\":862}],866:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\").supplyDefaults,calc:t(\"./calc\"),colorbar:{min:\"cmin\",max:\"cmax\"},plot:t(\"./convert\").createIsosurfaceTrace,moduleType:\"trace\",name:\"isosurface\",basePlotModule:t(\"../../plots/gl3d\"),categories:[\"gl3d\",\"showLegend\"],meta:{}}},{\"../../plots/gl3d\":598,\"./attributes\":862,\"./calc\":863,\"./convert\":864,\"./defaults\":865}],867:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/attributes\"),i=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,a=t(\"../../plots/template_attributes\").hovertemplateAttrs,o=t(\"../surface/attributes\"),s=t(\"../../plots/attributes\"),l=t(\"../../lib/extend\").extendFlat;e.exports=l({x:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},y:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},z:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},i:{valType:\"data_array\",editType:\"calc\"},j:{valType:\"data_array\",editType:\"calc\"},k:{valType:\"data_array\",editType:\"calc\"},text:{valType:\"string\",dflt:\"\",arrayOk:!0,editType:\"calc\"},hovertext:{valType:\"string\",dflt:\"\",arrayOk:!0,editType:\"calc\"},hovertemplate:a({editType:\"calc\"}),xhoverformat:i(\"x\"),yhoverformat:i(\"y\"),zhoverformat:i(\"z\"),delaunayaxis:{valType:\"enumerated\",values:[\"x\",\"y\",\"z\"],dflt:\"z\",editType:\"calc\"},alphahull:{valType:\"number\",dflt:-1,editType:\"calc\"},intensity:{valType:\"data_array\",editType:\"calc\"},intensitymode:{valType:\"enumerated\",values:[\"vertex\",\"cell\"],dflt:\"vertex\",editType:\"calc\"},color:{valType:\"color\",editType:\"calc\"},vertexcolor:{valType:\"data_array\",editType:\"calc\"},facecolor:{valType:\"data_array\",editType:\"calc\"},transforms:void 0},n(\"\",{colorAttr:\"`intensity`\",showScaleDflt:!0,editTypeOverride:\"calc\"}),{opacity:o.opacity,flatshading:{valType:\"boolean\",dflt:!1,editType:\"calc\"},contour:{show:l({},o.contours.x.show,{}),color:o.contours.x.color,width:o.contours.x.width,editType:\"calc\"},lightposition:{x:l({},o.lightposition.x,{dflt:1e5}),y:l({},o.lightposition.y,{dflt:1e5}),z:l({},o.lightposition.z,{dflt:0}),editType:\"calc\"},lighting:l({vertexnormalsepsilon:{valType:\"number\",min:0,max:1,dflt:1e-12,editType:\"calc\"},facenormalsepsilon:{valType:\"number\",min:0,max:1,dflt:1e-6,editType:\"calc\"},editType:\"calc\"},o.lighting),hoverinfo:l({},s.hoverinfo,{editType:\"calc\"}),showlegend:l({},s.showlegend,{dflt:!1})})},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/template_attributes\":633,\"../surface/attributes\":1057}],868:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/calc\");e.exports=function(t,e){e.intensity&&n(t,e,{vals:e.intensity,containerStr:\"\",cLetter:\"c\"})}},{\"../../components/colorscale/calc\":374}],869:[function(t,e,r){\"use strict\";var n=t(\"../../../stackgl_modules\").gl_mesh3d,i=t(\"../../../stackgl_modules\").delaunay_triangulate,a=t(\"../../../stackgl_modules\").alpha_shape,o=t(\"../../../stackgl_modules\").convex_hull,s=t(\"../../lib/gl_format_color\").parseColorScale,l=t(\"../../lib/str2rgbarray\"),c=t(\"../../components/colorscale\").extractOpts,u=t(\"../../plots/gl3d/zip3\");function f(t,e,r){this.scene=t,this.uid=r,this.mesh=e,this.name=\"\",this.color=\"#fff\",this.data=null,this.showContour=!1}var h=f.prototype;function p(t){for(var e=[],r=t.length,n=0;n=e-.5)return!1;return!0}h.handlePick=function(t){if(t.object===this.mesh){var e=t.index=t.data.index;t.data._cellCenter?t.traceCoordinate=t.data.dataCoordinate:t.traceCoordinate=[this.data.x[e],this.data.y[e],this.data.z[e]];var r=this.data.hovertext||this.data.text;return Array.isArray(r)&&void 0!==r[e]?t.textLabel=r[e]:r&&(t.textLabel=r),!0}},h.update=function(t){var e=this.scene,r=e.fullSceneLayout;this.data=t;var n,f=t.x.length,h=u(d(r.xaxis,t.x,e.dataScale[0],t.xcalendar),d(r.yaxis,t.y,e.dataScale[1],t.ycalendar),d(r.zaxis,t.z,e.dataScale[2],t.zcalendar));if(t.i&&t.j&&t.k){if(t.i.length!==t.j.length||t.j.length!==t.k.length||!m(t.i,f)||!m(t.j,f)||!m(t.k,f))return;n=u(g(t.i),g(t.j),g(t.k))}else n=0===t.alphahull?o(h):t.alphahull>0?a(t.alphahull,h):function(t,e){for(var r=[\"x\",\"y\",\"z\"].indexOf(t),n=[],a=e.length,o=0;ov):m=A>w,v=A;var M=c(w,T,k,A);M.pos=_,M.yc=(w+A)/2,M.i=b,M.dir=m?\"increasing\":\"decreasing\",M.x=M.pos,M.y=[k,T],y&&(M.orig_p=r[b]),d&&(M.tx=e.text[b]),g&&(M.htx=e.hovertext[b]),x.push(M)}else x.push({pos:_,empty:!0})}return e._extremes[l._id]=a.findExtremes(l,n.concat(h,f),{padded:!0}),x.length&&(x[0].t={labels:{open:i(t,\"open:\")+\" \",high:i(t,\"high:\")+\" \",low:i(t,\"low:\")+\" \",close:i(t,\"close:\")+\" \"}}),x}e.exports={calc:function(t,e){var r=a.getFromId(t,e.xaxis),i=a.getFromId(t,e.yaxis),s=function(t,e,r){var i=r._minDiff;if(!i){var a,s=t._fullData,l=[];for(i=1/0,a=0;a\"+c.labels[x]+n.hoverLabelText(s,b,l.yhoverformat):((y=i.extendFlat({},h)).y0=y.y1=_,y.yLabelVal=b,y.yLabel=c.labels[x]+n.hoverLabelText(s,b,l.yhoverformat),y.name=\"\",f.push(y),m[b]=y)}return f}function h(t,e,r,i){var a=t.cd,o=t.ya,l=a[0].trace,f=a[0].t,h=u(t,e,r,i);if(!h)return[];var p=a[h.index],d=h.index=p.i,g=p.dir;function m(t){return f.labels[t]+n.hoverLabelText(o,l[t][d],l.yhoverformat)}var v=p.hi||l.hoverinfo,y=v.split(\"+\"),x=\"all\"===v,b=x||-1!==y.indexOf(\"y\"),_=x||-1!==y.indexOf(\"text\"),w=b?[m(\"open\"),m(\"high\"),m(\"low\"),m(\"close\")+\" \"+c[g]]:[];return _&&s(p,l,w),h.extraText=w.join(\"
\"),h.y0=h.y1=o.c2p(p.yc,!0),[h]}e.exports={hoverPoints:function(t,e,r,n){return t.cd[0].trace.hoverlabel.split?f(t,e,r,n):h(t,e,r,n)},hoverSplit:f,hoverOnPoints:h}},{\"../../components/color\":366,\"../../components/fx\":406,\"../../constants/delta.js\":473,\"../../lib\":503,\"../../plots/cartesian/axes\":554}],876:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"ohlc\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"cartesian\",\"svg\",\"showLegend\"],meta:{},attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),calc:t(\"./calc\").calc,plot:t(\"./plot\"),style:t(\"./style\"),hoverPoints:t(\"./hover\").hoverPoints,selectPoints:t(\"./select\")}},{\"../../plots/cartesian\":568,\"./attributes\":872,\"./calc\":873,\"./defaults\":874,\"./hover\":875,\"./plot\":878,\"./select\":879,\"./style\":880}],877:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\");e.exports=function(t,e,r,a){var o=r(\"x\"),s=r(\"open\"),l=r(\"high\"),c=r(\"low\"),u=r(\"close\");if(r(\"hoverlabel.split\"),n.getComponentMethod(\"calendars\",\"handleTraceDefaults\")(t,e,[\"x\"],a),s&&l&&c&&u){var f=Math.min(s.length,l.length,c.length,u.length);return o&&(f=Math.min(f,i.minRowLength(o))),e._length=f,f}}},{\"../../lib\":503,\"../../registry\":638}],878:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\");e.exports=function(t,e,r,a){var o=e.yaxis,s=e.xaxis,l=!!s.rangebreaks;i.makeTraceGroups(a,r,\"trace ohlc\").each((function(t){var e=n.select(this),r=t[0],a=r.t;if(!0!==r.trace.visible||a.empty)e.remove();else{var c=a.tickLen,u=e.selectAll(\"path\").data(i.identity);u.enter().append(\"path\"),u.exit().remove(),u.attr(\"d\",(function(t){if(t.empty)return\"M0,0Z\";var e=s.c2p(t.pos-c,!0),r=s.c2p(t.pos+c,!0),n=l?(e+r)/2:s.c2p(t.pos,!0);return\"M\"+e+\",\"+o.c2p(t.o,!0)+\"H\"+n+\"M\"+n+\",\"+o.c2p(t.h,!0)+\"V\"+o.c2p(t.l,!0)+\"M\"+r+\",\"+o.c2p(t.c,!0)+\"H\"+n}))}}))}},{\"../../lib\":503,\"@plotly/d3\":58}],879:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r,n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s=n[0].t.bPos||0;if(!1===e)for(r=0;r=t.length)return!1;if(void 0!==e[t[r]])return!1;e[t[r]]=!0}return!0}(t.map((function(t){return t.displayindex}))))for(e=0;e0;c&&(o=\"array\");var u=r(\"categoryorder\",o);\"array\"===u?(r(\"categoryarray\"),r(\"ticktext\")):(delete t.categoryarray,delete t.ticktext),c||\"array\"!==u||(e.categoryorder=\"trace\")}}e.exports=function(t,e,r,f){function h(r,i){return n.coerce(t,e,l,r,i)}var p=s(t,e,{name:\"dimensions\",handleItemDefaults:u}),d=function(t,e,r,o,s){s(\"line.shape\"),s(\"line.hovertemplate\");var l=s(\"line.color\",o.colorway[0]);if(i(t,\"line\")&&n.isArrayOrTypedArray(l)){if(l.length)return s(\"line.colorscale\"),a(t,e,o,s,{prefix:\"line.\",cLetter:\"c\"}),l.length;e.line.color=r}return 1/0}(t,e,r,f,h);o(e,f,h),Array.isArray(p)&&p.length||(e.visible=!1),c(e,p,\"values\",d),h(\"hoveron\"),h(\"hovertemplate\"),h(\"arrangement\"),h(\"bundlecolors\"),h(\"sortpaths\"),h(\"counts\");var g={family:f.font.family,size:Math.round(f.font.size),color:f.font.color};n.coerceFont(h,\"labelfont\",g);var m={family:f.font.family,size:Math.round(f.font.size/1.2),color:f.font.color};n.coerceFont(h,\"tickfont\",m)}},{\"../../components/colorscale/defaults\":376,\"../../components/colorscale/helpers\":377,\"../../lib\":503,\"../../plots/array_container_defaults\":549,\"../../plots/domain\":584,\"../parcoords/merge_length\":897,\"./attributes\":881}],885:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),calc:t(\"./calc\"),plot:t(\"./plot\"),colorbar:{container:\"line\",min:\"cmin\",max:\"cmax\"},moduleType:\"trace\",name:\"parcats\",basePlotModule:t(\"./base_plot\"),categories:[\"noOpacity\"],meta:{}}},{\"./attributes\":881,\"./base_plot\":882,\"./calc\":883,\"./defaults\":884,\"./plot\":887}],886:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"d3-interpolate\").interpolateNumber,a=t(\"../../plot_api/plot_api\"),o=t(\"../../components/fx\"),s=t(\"../../lib\"),l=s.strTranslate,c=t(\"../../components/drawing\"),u=t(\"tinycolor2\"),f=t(\"../../lib/svg_text_utils\");function h(t,e,r,i){var a=t.map(F.bind(0,e,r)),o=i.selectAll(\"g.parcatslayer\").data([null]);o.enter().append(\"g\").attr(\"class\",\"parcatslayer\").style(\"pointer-events\",\"all\");var u=o.selectAll(\"g.trace.parcats\").data(a,p),h=u.enter().append(\"g\").attr(\"class\",\"trace parcats\");u.attr(\"transform\",(function(t){return l(t.x,t.y)})),h.append(\"g\").attr(\"class\",\"paths\");var y=u.select(\"g.paths\").selectAll(\"path.path\").data((function(t){return t.paths}),p);y.attr(\"fill\",(function(t){return t.model.color}));var x=y.enter().append(\"path\").attr(\"class\",\"path\").attr(\"stroke-opacity\",0).attr(\"fill\",(function(t){return t.model.color})).attr(\"fill-opacity\",0);_(x),y.attr(\"d\",(function(t){return t.svgD})),x.empty()||y.sort(g),y.exit().remove(),y.on(\"mouseover\",m).on(\"mouseout\",v).on(\"click\",b),h.append(\"g\").attr(\"class\",\"dimensions\");var w=u.select(\"g.dimensions\").selectAll(\"g.dimension\").data((function(t){return t.dimensions}),p);w.enter().append(\"g\").attr(\"class\",\"dimension\"),w.attr(\"transform\",(function(t){return l(t.x,0)})),w.exit().remove();var A=w.selectAll(\"g.category\").data((function(t){return t.categories}),p),M=A.enter().append(\"g\").attr(\"class\",\"category\");A.attr(\"transform\",(function(t){return l(0,t.y)})),M.append(\"rect\").attr(\"class\",\"catrect\").attr(\"pointer-events\",\"none\"),A.select(\"rect.catrect\").attr(\"fill\",\"none\").attr(\"width\",(function(t){return t.width})).attr(\"height\",(function(t){return t.height})),T(M);var S=A.selectAll(\"rect.bandrect\").data((function(t){return t.bands}),p);S.each((function(){s.raiseToTop(this)})),S.attr(\"fill\",(function(t){return t.color}));var E=S.enter().append(\"rect\").attr(\"class\",\"bandrect\").attr(\"stroke-opacity\",0).attr(\"fill\",(function(t){return t.color})).attr(\"fill-opacity\",0);S.attr(\"fill\",(function(t){return t.color})).attr(\"width\",(function(t){return t.width})).attr(\"height\",(function(t){return t.height})).attr(\"y\",(function(t){return t.y})).attr(\"cursor\",(function(t){return\"fixed\"===t.parcatsViewModel.arrangement?\"default\":\"perpendicular\"===t.parcatsViewModel.arrangement?\"ns-resize\":\"move\"})),k(E),S.exit().remove(),M.append(\"text\").attr(\"class\",\"catlabel\").attr(\"pointer-events\",\"none\");var z=e._fullLayout.paper_bgcolor;A.select(\"text.catlabel\").attr(\"text-anchor\",(function(t){return d(t)?\"start\":\"end\"})).attr(\"alignment-baseline\",\"middle\").style(\"text-shadow\",f.makeTextShadow(z)).style(\"fill\",\"rgb(0, 0, 0)\").attr(\"x\",(function(t){return d(t)?t.width+5:-5})).attr(\"y\",(function(t){return t.height/2})).text((function(t){return t.model.categoryLabel})).each((function(t){c.font(n.select(this),t.parcatsViewModel.categorylabelfont),f.convertToTspans(n.select(this),e)})),M.append(\"text\").attr(\"class\",\"dimlabel\"),A.select(\"text.dimlabel\").attr(\"text-anchor\",\"middle\").attr(\"alignment-baseline\",\"baseline\").attr(\"cursor\",(function(t){return\"fixed\"===t.parcatsViewModel.arrangement?\"default\":\"ew-resize\"})).attr(\"x\",(function(t){return t.width/2})).attr(\"y\",-5).text((function(t,e){return 0===e?t.parcatsViewModel.model.dimensions[t.model.dimensionInd].dimensionLabel:null})).each((function(t){c.font(n.select(this),t.parcatsViewModel.labelfont)})),A.selectAll(\"rect.bandrect\").on(\"mouseover\",L).on(\"mouseout\",C),A.exit().remove(),w.call(n.behavior.drag().origin((function(t){return{x:t.x,y:0}})).on(\"dragstart\",P).on(\"drag\",I).on(\"dragend\",O)),u.each((function(t){t.traceSelection=n.select(this),t.pathSelection=n.select(this).selectAll(\"g.paths\").selectAll(\"path.path\"),t.dimensionSelection=n.select(this).selectAll(\"g.dimensions\").selectAll(\"g.dimension\")})),u.exit().remove()}function p(t){return t.key}function d(t){var e=t.parcatsViewModel.dimensions.length,r=t.parcatsViewModel.dimensions[e-1].model.dimensionInd;return t.model.dimensionInd===r}function g(t,e){return t.model.rawColor>e.model.rawColor?1:t.model.rawColor\"),L=n.mouse(f)[0];o.loneHover({trace:h,x:b-d.left+g.left,y:_-d.top+g.top,text:E,color:t.model.color,borderColor:\"black\",fontFamily:'Monaco, \"Courier New\", monospace',fontSize:10,fontColor:T,idealAlign:L1&&h.displayInd===f.dimensions.length-1?(i=c.left,a=\"left\"):(i=c.left+c.width,a=\"right\");var g=u.model.count,m=u.model.categoryLabel,v=g/u.parcatsViewModel.model.count,y={countLabel:g,categoryLabel:m,probabilityLabel:v.toFixed(3)},x=[];-1!==u.parcatsViewModel.hoverinfoItems.indexOf(\"count\")&&x.push([\"Count:\",y.countLabel].join(\" \")),-1!==u.parcatsViewModel.hoverinfoItems.indexOf(\"probability\")&&x.push([\"P(\"+y.categoryLabel+\"):\",y.probabilityLabel].join(\" \"));var b=x.join(\"
\");return{trace:p,x:o*(i-e.left),y:s*(d-e.top),text:b,color:\"lightgray\",borderColor:\"black\",fontFamily:'Monaco, \"Courier New\", monospace',fontSize:12,fontColor:\"black\",idealAlign:a,hovertemplate:p.hovertemplate,hovertemplateLabels:y,eventData:[{data:p._input,fullData:p,count:g,category:m,probability:v}]}}function L(t){if(!t.parcatsViewModel.dragDimension&&-1===t.parcatsViewModel.hoverinfoItems.indexOf(\"skip\")){if(n.mouse(this)[1]<-1)return;var e,r=t.parcatsViewModel.graphDiv,i=r._fullLayout,a=i._paperdiv.node().getBoundingClientRect(),l=t.parcatsViewModel.hoveron;if(\"color\"===l?(!function(t){var e=n.select(t).datum(),r=A(e);w(r),r.each((function(){s.raiseToTop(this)})),n.select(t.parentNode).selectAll(\"rect.bandrect\").filter((function(t){return t.color===e.color})).each((function(){s.raiseToTop(this),n.select(this).attr(\"stroke\",\"black\").attr(\"stroke-width\",1.5)}))}(this),S(this,\"plotly_hover\",n.event)):(!function(t){n.select(t.parentNode).selectAll(\"rect.bandrect\").each((function(t){var e=A(t);w(e),e.each((function(){s.raiseToTop(this)}))})),n.select(t.parentNode).select(\"rect.catrect\").attr(\"stroke\",\"black\").attr(\"stroke-width\",2.5)}(this),M(this,\"plotly_hover\",n.event)),-1===t.parcatsViewModel.hoverinfoItems.indexOf(\"none\"))\"category\"===l?e=E(r,a,this):\"color\"===l?e=function(t,e,r){t._fullLayout._calcInverseTransform(t);var i,a,o=t._fullLayout._invScaleX,s=t._fullLayout._invScaleY,l=r.getBoundingClientRect(),c=n.select(r).datum(),f=c.categoryViewModel,h=f.parcatsViewModel,p=h.model.dimensions[f.model.dimensionInd],d=h.trace,g=l.y+l.height/2;h.dimensions.length>1&&p.displayInd===h.dimensions.length-1?(i=l.left,a=\"left\"):(i=l.left+l.width,a=\"right\");var m=f.model.categoryLabel,v=c.parcatsViewModel.model.count,y=0;c.categoryViewModel.bands.forEach((function(t){t.color===c.color&&(y+=t.count)}));var x=f.model.count,b=0;h.pathSelection.each((function(t){t.model.color===c.color&&(b+=t.model.count)}));var _=y/v,w=y/b,T=y/x,k={countLabel:v,categoryLabel:m,probabilityLabel:_.toFixed(3)},A=[];-1!==f.parcatsViewModel.hoverinfoItems.indexOf(\"count\")&&A.push([\"Count:\",k.countLabel].join(\" \")),-1!==f.parcatsViewModel.hoverinfoItems.indexOf(\"probability\")&&(A.push(\"P(color \\u2229 \"+m+\"): \"+k.probabilityLabel),A.push(\"P(\"+m+\" | color): \"+w.toFixed(3)),A.push(\"P(color | \"+m+\"): \"+T.toFixed(3)));var M=A.join(\"
\"),S=u.mostReadable(c.color,[\"black\",\"white\"]);return{trace:d,x:o*(i-e.left),y:s*(g-e.top),text:M,color:c.color,borderColor:\"black\",fontFamily:'Monaco, \"Courier New\", monospace',fontColor:S,fontSize:10,idealAlign:a,hovertemplate:d.hovertemplate,hovertemplateLabels:k,eventData:[{data:d._input,fullData:d,category:m,count:v,probability:_,categorycount:x,colorcount:b,bandcolorcount:y}]}}(r,a,this):\"dimension\"===l&&(e=function(t,e,r){var i=[];return n.select(r.parentNode.parentNode).selectAll(\"g.category\").select(\"rect.catrect\").each((function(){i.push(E(t,e,this))})),i}(r,a,this)),e&&o.loneHover(e,{container:i._hoverlayer.node(),outerContainer:i._paper.node(),gd:r})}}function C(t){var e=t.parcatsViewModel;if(!e.dragDimension&&(_(e.pathSelection),T(e.dimensionSelection.selectAll(\"g.category\")),k(e.dimensionSelection.selectAll(\"g.category\").selectAll(\"rect.bandrect\")),o.loneUnhover(e.graphDiv._fullLayout._hoverlayer.node()),e.pathSelection.sort(g),-1===e.hoverinfoItems.indexOf(\"skip\"))){\"color\"===t.parcatsViewModel.hoveron?S(this,\"plotly_unhover\",n.event):M(this,\"plotly_unhover\",n.event)}}function P(t){\"fixed\"!==t.parcatsViewModel.arrangement&&(t.dragDimensionDisplayInd=t.model.displayInd,t.initialDragDimensionDisplayInds=t.parcatsViewModel.model.dimensions.map((function(t){return t.displayInd})),t.dragHasMoved=!1,t.dragCategoryDisplayInd=null,n.select(this).selectAll(\"g.category\").select(\"rect.catrect\").each((function(e){var r=n.mouse(this)[0],i=n.mouse(this)[1];-2<=r&&r<=e.width+2&&-2<=i&&i<=e.height+2&&(t.dragCategoryDisplayInd=e.model.displayInd,t.initialDragCategoryDisplayInds=t.model.categories.map((function(t){return t.displayInd})),e.model.dragY=e.y,s.raiseToTop(this.parentNode),n.select(this.parentNode).selectAll(\"rect.bandrect\").each((function(e){e.yf.y+f.height/2&&(o.model.displayInd=f.model.displayInd,f.model.displayInd=l),t.dragCategoryDisplayInd=o.model.displayInd}if(null===t.dragCategoryDisplayInd||\"freeform\"===t.parcatsViewModel.arrangement){a.model.dragX=n.event.x;var h=t.parcatsViewModel.dimensions[r],p=t.parcatsViewModel.dimensions[i];void 0!==h&&a.model.dragXp.x&&(a.model.displayInd=p.model.displayInd,p.model.displayInd=t.dragDimensionDisplayInd),t.dragDimensionDisplayInd=a.model.displayInd}j(t.parcatsViewModel),N(t.parcatsViewModel),R(t.parcatsViewModel),D(t.parcatsViewModel)}}function O(t){if(\"fixed\"!==t.parcatsViewModel.arrangement&&null!==t.dragDimensionDisplayInd){n.select(this).selectAll(\"text\").attr(\"font-weight\",\"normal\");var e={},r=z(t.parcatsViewModel),i=t.parcatsViewModel.model.dimensions.map((function(t){return t.displayInd})),o=t.initialDragDimensionDisplayInds.some((function(t,e){return t!==i[e]}));o&&i.forEach((function(r,n){var i=t.parcatsViewModel.model.dimensions[n].containerInd;e[\"dimensions[\"+i+\"].displayindex\"]=r}));var s=!1;if(null!==t.dragCategoryDisplayInd){var l=t.model.categories.map((function(t){return t.displayInd}));if(s=t.initialDragCategoryDisplayInds.some((function(t,e){return t!==l[e]}))){var c=t.model.categories.slice().sort((function(t,e){return t.displayInd-e.displayInd})),u=c.map((function(t){return t.categoryValue})),f=c.map((function(t){return t.categoryLabel}));e[\"dimensions[\"+t.model.containerInd+\"].categoryarray\"]=[u],e[\"dimensions[\"+t.model.containerInd+\"].ticktext\"]=[f],e[\"dimensions[\"+t.model.containerInd+\"].categoryorder\"]=\"array\"}}if(-1===t.parcatsViewModel.hoverinfoItems.indexOf(\"skip\")&&!t.dragHasMoved&&t.potentialClickBand&&(\"color\"===t.parcatsViewModel.hoveron?S(t.potentialClickBand,\"plotly_click\",n.event.sourceEvent):M(t.potentialClickBand,\"plotly_click\",n.event.sourceEvent)),t.model.dragX=null,null!==t.dragCategoryDisplayInd)t.parcatsViewModel.dimensions[t.dragDimensionDisplayInd].categories[t.dragCategoryDisplayInd].model.dragY=null,t.dragCategoryDisplayInd=null;t.dragDimensionDisplayInd=null,t.parcatsViewModel.dragDimension=null,t.dragHasMoved=null,t.potentialClickBand=null,j(t.parcatsViewModel),N(t.parcatsViewModel),n.transition().duration(300).ease(\"cubic-in-out\").each((function(){R(t.parcatsViewModel,!0),D(t.parcatsViewModel,!0)})).each(\"end\",(function(){(o||s)&&a.restyle(t.parcatsViewModel.graphDiv,e,[r])}))}}function z(t){for(var e,r=t.graphDiv._fullData,n=0;n=0;s--)u+=\"C\"+c[s]+\",\"+(e[s+1]+n)+\" \"+l[s]+\",\"+(e[s]+n)+\" \"+(t[s]+r[s])+\",\"+(e[s]+n),u+=\"l-\"+r[s]+\",0 \";return u+=\"Z\"}function N(t){var e=t.dimensions,r=t.model,n=e.map((function(t){return t.categories.map((function(t){return t.y}))})),i=t.model.dimensions.map((function(t){return t.categories.map((function(t){return t.displayInd}))})),a=t.model.dimensions.map((function(t){return t.displayInd})),o=t.dimensions.map((function(t){return t.model.dimensionInd})),s=e.map((function(t){return t.x})),l=e.map((function(t){return t.width})),c=[];for(var u in r.paths)r.paths.hasOwnProperty(u)&&c.push(r.paths[u]);function f(t){var e=t.categoryInds.map((function(t,e){return i[e][t]}));return o.map((function(t){return e[t]}))}c.sort((function(e,r){var n=f(e),i=f(r);return\"backward\"===t.sortpaths&&(n.reverse(),i.reverse()),n.push(e.valueInds[0]),i.push(r.valueInds[0]),t.bundlecolors&&(n.unshift(e.rawColor),i.unshift(r.rawColor)),ni?1:0}));for(var h=new Array(c.length),p=e[0].model.count,d=e[0].categories.map((function(t){return t.height})).reduce((function(t,e){return t+e})),g=0;g0?d*(v.count/p):0;for(var y,x=new Array(n.length),b=0;b1?(t.width-80-16)/(n-1):0)*i;var a,o,s,l,c,u=[],f=t.model.maxCats,h=e.categories.length,p=e.count,d=t.height-8*(f-1),g=8*(f-h)/2,m=e.categories.map((function(t){return{displayInd:t.displayInd,categoryInd:t.categoryInd}}));for(m.sort((function(t,e){return t.displayInd-e.displayInd})),c=0;c0?o.count/p*d:0,s={key:o.valueInds[0],model:o,width:16,height:a,y:null!==o.dragY?o.dragY:g,bands:[],parcatsViewModel:t},g=g+a+8,u.push(s);return{key:e.dimensionInd,x:null!==e.dragX?e.dragX:r,y:0,width:16,model:e,categories:u,parcatsViewModel:t,dragCategoryDisplayInd:null,dragDimensionDisplayInd:null,initialDragDimensionDisplayInds:null,initialDragCategoryDisplayInds:null,dragHasMoved:null,potentialClickBand:null}}e.exports=function(t,e,r,n){h(r,t,n,e)}},{\"../../components/drawing\":388,\"../../components/fx\":406,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../../plot_api/plot_api\":540,\"@plotly/d3\":58,\"d3-interpolate\":116,tinycolor2:312}],887:[function(t,e,r){\"use strict\";var n=t(\"./parcats\");e.exports=function(t,e,r,i){var a=t._fullLayout,o=a._paper,s=a._size;n(t,o,e,{width:s.w,height:s.h,margin:{t:s.t,r:s.r,b:s.b,l:s.l}},r,i)}},{\"./parcats\":886}],888:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/attributes\"),i=t(\"../../plots/cartesian/layout_attributes\"),a=t(\"../../plots/font_attributes\"),o=t(\"../../plots/domain\").attributes,s=t(\"../../lib/extend\").extendFlat,l=t(\"../../plot_api/plot_template\").templatedArray;e.exports={domain:o({name:\"parcoords\",trace:!0,editType:\"plot\"}),labelangle:{valType:\"angle\",dflt:0,editType:\"plot\"},labelside:{valType:\"enumerated\",values:[\"top\",\"bottom\"],dflt:\"top\",editType:\"plot\"},labelfont:a({editType:\"plot\"}),tickfont:a({editType:\"plot\"}),rangefont:a({editType:\"plot\"}),dimensions:l(\"dimension\",{label:{valType:\"string\",editType:\"plot\"},tickvals:s({},i.tickvals,{editType:\"plot\"}),ticktext:s({},i.ticktext,{editType:\"plot\"}),tickformat:s({},i.tickformat,{editType:\"plot\"}),visible:{valType:\"boolean\",dflt:!0,editType:\"plot\"},range:{valType:\"info_array\",items:[{valType:\"number\",editType:\"plot\"},{valType:\"number\",editType:\"plot\"}],editType:\"plot\"},constraintrange:{valType:\"info_array\",freeLength:!0,dimensions:\"1-2\",items:[{valType:\"any\",editType:\"plot\"},{valType:\"any\",editType:\"plot\"}],editType:\"plot\"},multiselect:{valType:\"boolean\",dflt:!0,editType:\"plot\"},values:{valType:\"data_array\",editType:\"calc\"},editType:\"calc\"}),line:s({editType:\"calc\"},n(\"line\",{colorscaleDflt:\"Viridis\",autoColorDflt:!1,editTypeOverride:\"calc\"}))}},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plot_api/plot_template\":543,\"../../plots/cartesian/layout_attributes\":569,\"../../plots/domain\":584,\"../../plots/font_attributes\":585}],889:[function(t,e,r){\"use strict\";var n=t(\"./constants\"),i=t(\"@plotly/d3\"),a=t(\"../../lib/gup\").keyFun,o=t(\"../../lib/gup\").repeat,s=t(\"../../lib\").sorterAsc,l=t(\"../../lib\").strTranslate,c=n.bar.snapRatio;function u(t,e){return t*(1-c)+e*c}var f=n.bar.snapClose;function h(t,e){return t*(1-f)+e*f}function p(t,e,r,n){if(function(t,e){for(var r=0;r=e[r][0]&&t<=e[r][1])return!0;return!1}(r,n))return r;var i=t?-1:1,a=0,o=e.length-1;if(i<0){var s=a;a=o,o=s}for(var l=e[a],c=l,f=a;i*fe){h=r;break}}if(a=u,isNaN(a)&&(a=isNaN(f)||isNaN(h)?isNaN(f)?h:f:e-c[f][1]t[1]+r||e=.9*t[1]+.1*t[0]?\"n\":e<=.9*t[0]+.1*t[1]?\"s\":\"ns\"}(d,e);g&&(o.interval=l[a],o.intervalPix=d,o.region=g)}}if(t.ordinal&&!o.region){var m=t.unitTickvals,y=t.unitToPaddedPx.invert(e);for(r=0;r=x[0]&&y<=x[1]){o.clickableOrdinalRange=x;break}}}return o}function w(t,e){i.event.sourceEvent.stopPropagation();var r=e.height-i.mouse(t)[1]-2*n.verticalPadding,a=e.brush.svgBrush;a.wasDragged=!0,a._dragging=!0,a.grabbingBar?a.newExtent=[r-a.grabPoint,r+a.barLength-a.grabPoint].map(e.unitToPaddedPx.invert):a.newExtent=[a.startExtent,e.unitToPaddedPx.invert(r)].sort(s),e.brush.filterSpecified=!0,a.extent=a.stayingIntervals.concat([a.newExtent]),a.brushCallback(e),b(t.parentNode)}function T(t,e){var r=_(e,e.height-i.mouse(t)[1]-2*n.verticalPadding),a=\"crosshair\";r.clickableOrdinalRange?a=\"pointer\":r.region&&(a=r.region+\"-resize\"),i.select(document.body).style(\"cursor\",a)}function k(t){t.on(\"mousemove\",(function(t){i.event.preventDefault(),t.parent.inBrushDrag||T(this,t)})).on(\"mouseleave\",(function(t){t.parent.inBrushDrag||y()})).call(i.behavior.drag().on(\"dragstart\",(function(t){!function(t,e){i.event.sourceEvent.stopPropagation();var r=e.height-i.mouse(t)[1]-2*n.verticalPadding,a=e.unitToPaddedPx.invert(r),o=e.brush,s=_(e,r),l=s.interval,c=o.svgBrush;if(c.wasDragged=!1,c.grabbingBar=\"ns\"===s.region,c.grabbingBar){var u=l.map(e.unitToPaddedPx);c.grabPoint=r-u[0]-n.verticalPadding,c.barLength=u[1]-u[0]}c.clickableOrdinalRange=s.clickableOrdinalRange,c.stayingIntervals=e.multiselect&&o.filterSpecified?o.filter.getConsolidated():[],l&&(c.stayingIntervals=c.stayingIntervals.filter((function(t){return t[0]!==l[0]&&t[1]!==l[1]}))),c.startExtent=s.region?l[\"s\"===s.region?1:0]:a,e.parent.inBrushDrag=!0,c.brushStartCallback()}(this,t)})).on(\"drag\",(function(t){w(this,t)})).on(\"dragend\",(function(t){!function(t,e){var r=e.brush,n=r.filter,a=r.svgBrush;a._dragging||(T(t,e),w(t,e),e.brush.svgBrush.wasDragged=!1),a._dragging=!1,i.event.sourceEvent.stopPropagation();var o=a.grabbingBar;if(a.grabbingBar=!1,a.grabLocation=void 0,e.parent.inBrushDrag=!1,y(),!a.wasDragged)return a.wasDragged=void 0,a.clickableOrdinalRange?r.filterSpecified&&e.multiselect?a.extent.push(a.clickableOrdinalRange):(a.extent=[a.clickableOrdinalRange],r.filterSpecified=!0):o?(a.extent=a.stayingIntervals,0===a.extent.length&&M(r)):M(r),a.brushCallback(e),b(t.parentNode),void a.brushEndCallback(r.filterSpecified?n.getConsolidated():[]);var s=function(){n.set(n.getConsolidated())};if(e.ordinal){var l=e.unitTickvals;l[l.length-1]a.newExtent[0];a.extent=a.stayingIntervals.concat(c?[a.newExtent]:[]),a.extent.length||M(r),a.brushCallback(e),c?b(t.parentNode,s):(s(),b(t.parentNode))}else s();a.brushEndCallback(r.filterSpecified?n.getConsolidated():[])}(this,t)})))}function A(t,e){return t[0]-e[0]}function M(t){t.filterSpecified=!1,t.svgBrush.extent=[[-1/0,1/0]]}function S(t){for(var e,r=t.slice(),n=[],i=r.shift();i;){for(e=i.slice();(i=r.shift())&&i[0]<=e[1];)e[1]=Math.max(e[1],i[1]);n.push(e)}return 1===n.length&&n[0][0]>n[0][1]&&(n=[]),n}e.exports={makeBrush:function(t,e,r,n,i,a){var o,l=function(){var t,e,r=[];return{set:function(n){1===(r=n.map((function(t){return t.slice().sort(s)})).sort(A)).length&&r[0][0]===-1/0&&r[0][1]===1/0&&(r=[[0,-1]]),t=S(r),e=r.reduce((function(t,e){return[Math.min(t[0],e[0]),Math.max(t[1],e[1])]}),[1/0,-1/0])},get:function(){return r.slice()},getConsolidated:function(){return t},getBounds:function(){return e}}}();return l.set(r),{filter:l,filterSpecified:e,svgBrush:{extent:[],brushStartCallback:n,brushCallback:(o=i,function(t){var e=t.brush,r=function(t){return t.svgBrush.extent.map((function(t){return t.slice()}))}(e).slice();e.filter.set(r),o()}),brushEndCallback:a}}},ensureAxisBrush:function(t,e){var r=t.selectAll(\".\"+n.cn.axisBrush).data(o,a);r.enter().append(\"g\").classed(n.cn.axisBrush,!0),function(t,e){var r=t.selectAll(\".background\").data(o);r.enter().append(\"rect\").classed(\"background\",!0).call(d).call(g).style(\"pointer-events\",\"auto\").attr(\"transform\",l(0,n.verticalPadding)),r.call(k).attr(\"height\",(function(t){return t.height-n.verticalPadding}));var i=t.selectAll(\".highlight-shadow\").data(o);i.enter().append(\"line\").classed(\"highlight-shadow\",!0).attr(\"x\",-n.bar.width/2).attr(\"stroke-width\",n.bar.width+n.bar.strokeWidth).attr(\"stroke\",e).attr(\"opacity\",n.bar.strokeOpacity).attr(\"stroke-linecap\",\"butt\"),i.attr(\"y1\",(function(t){return t.height})).call(x);var a=t.selectAll(\".highlight\").data(o);a.enter().append(\"line\").classed(\"highlight\",!0).attr(\"x\",-n.bar.width/2).attr(\"stroke-width\",n.bar.width-n.bar.strokeWidth).attr(\"stroke\",n.bar.fillColor).attr(\"opacity\",n.bar.fillOpacity).attr(\"stroke-linecap\",\"butt\"),a.attr(\"y1\",(function(t){return t.height})).call(x)}(r,e)},cleanRanges:function(t,e){if(Array.isArray(t[0])?(t=t.map((function(t){return t.sort(s)})),t=e.multiselect?S(t.sort(A)):[t[0]]):t=[t.sort(s)],e.tickvals){var r=e.tickvals.slice().sort(s);if(!(t=t.map((function(t){var e=[p(0,r,t[0],[]),p(1,r,t[1],[])];if(e[1]>e[0])return e})).filter((function(t){return t}))).length)return}return t.length>1?t:t[0]}}},{\"../../lib\":503,\"../../lib/gup\":500,\"./constants\":892,\"@plotly/d3\":58}],890:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../plots/get_data\").getModuleCalcData,a=t(\"./plot\"),o=t(\"../../constants/xmlns_namespaces\");r.name=\"parcoords\",r.plot=function(t){var e=i(t.calcdata,\"parcoords\")[0];e.length&&a(t,e)},r.clean=function(t,e,r,n){var i=n._has&&n._has(\"parcoords\"),a=e._has&&e._has(\"parcoords\");i&&!a&&(n._paperdiv.selectAll(\".parcoords\").remove(),n._glimages.selectAll(\"*\").remove())},r.toSVG=function(t){var e=t._fullLayout._glimages,r=n.select(t).selectAll(\".svg-container\");r.filter((function(t,e){return e===r.size()-1})).selectAll(\".gl-canvas-context, .gl-canvas-focus\").each((function(){var t=this.toDataURL(\"image/png\");e.append(\"svg:image\").attr({xmlns:o.svg,\"xlink:href\":t,preserveAspectRatio:\"none\",x:0,y:0,width:this.style.width,height:this.style.height})})),window.setTimeout((function(){n.selectAll(\"#filterBarPattern\").attr(\"id\",\"filterBarPattern\")}),60)}},{\"../../constants/xmlns_namespaces\":480,\"../../plots/get_data\":593,\"./plot\":899,\"@plotly/d3\":58}],891:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").isArrayOrTypedArray,i=t(\"../../components/colorscale\"),a=t(\"../../lib/gup\").wrap;e.exports=function(t,e){var r,o;return i.hasColorscale(e,\"line\")&&n(e.line.color)?(r=e.line.color,o=i.extractOpts(e.line).colorscale,i.calc(t,e,{vals:r,containerStr:\"line\",cLetter:\"c\"})):(r=function(t){for(var e=new Array(t),r=0;rf&&(n.log(\"parcoords traces support up to \"+f+\" dimensions at the moment\"),d.splice(f));var g=s(t,e,{name:\"dimensions\",layout:l,handleItemDefaults:p}),m=function(t,e,r,o,s){var l=s(\"line.color\",r);if(i(t,\"line\")&&n.isArrayOrTypedArray(l)){if(l.length)return s(\"line.colorscale\"),a(t,e,o,s,{prefix:\"line.\",cLetter:\"c\"}),l.length;e.line.color=r}return 1/0}(t,e,r,l,u);o(e,l,u),Array.isArray(g)&&g.length||(e.visible=!1),h(e,g,\"values\",m);var v={family:l.font.family,size:Math.round(l.font.size/1.2),color:l.font.color};n.coerceFont(u,\"labelfont\",v),n.coerceFont(u,\"tickfont\",v),n.coerceFont(u,\"rangefont\",v),u(\"labelangle\"),u(\"labelside\")}},{\"../../components/colorscale/defaults\":376,\"../../components/colorscale/helpers\":377,\"../../lib\":503,\"../../plots/array_container_defaults\":549,\"../../plots/cartesian/axes\":554,\"../../plots/domain\":584,\"./attributes\":888,\"./axisbrush\":889,\"./constants\":892,\"./merge_length\":897}],894:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").isTypedArray;r.convertTypedArray=function(t){return n(t)?Array.prototype.slice.call(t):t},r.isOrdinal=function(t){return!!t.tickvals},r.isVisible=function(t){return t.visible||!(\"visible\"in t)}},{\"../../lib\":503}],895:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),calc:t(\"./calc\"),plot:t(\"./plot\"),colorbar:{container:\"line\",min:\"cmin\",max:\"cmax\"},moduleType:\"trace\",name:\"parcoords\",basePlotModule:t(\"./base_plot\"),categories:[\"gl\",\"regl\",\"noOpacity\",\"noHover\"],meta:{}}},{\"./attributes\":888,\"./base_plot\":890,\"./calc\":891,\"./defaults\":893,\"./plot\":899}],896:[function(t,e,r){\"use strict\";var n=t(\"glslify\"),i=n([\"precision highp float;\\n#define GLSLIFY 1\\n\\nvarying vec4 fragColor;\\n\\nattribute vec4 p01_04, p05_08, p09_12, p13_16,\\n p17_20, p21_24, p25_28, p29_32,\\n p33_36, p37_40, p41_44, p45_48,\\n p49_52, p53_56, p57_60, colors;\\n\\nuniform mat4 dim0A, dim1A, dim0B, dim1B, dim0C, dim1C, dim0D, dim1D,\\n loA, hiA, loB, hiB, loC, hiC, loD, hiD;\\n\\nuniform vec2 resolution, viewBoxPos, viewBoxSize;\\nuniform float maskHeight;\\nuniform float drwLayer; // 0: context, 1: focus, 2: pick\\nuniform vec4 contextColor;\\nuniform sampler2D maskTexture, palette;\\n\\nbool isPick = (drwLayer > 1.5);\\nbool isContext = (drwLayer < 0.5);\\n\\nconst vec4 ZEROS = vec4(0.0, 0.0, 0.0, 0.0);\\nconst vec4 UNITS = vec4(1.0, 1.0, 1.0, 1.0);\\n\\nfloat val(mat4 p, mat4 v) {\\n return dot(matrixCompMult(p, v) * UNITS, UNITS);\\n}\\n\\nfloat axisY(float ratio, mat4 A, mat4 B, mat4 C, mat4 D) {\\n float y1 = val(A, dim0A) + val(B, dim0B) + val(C, dim0C) + val(D, dim0D);\\n float y2 = val(A, dim1A) + val(B, dim1B) + val(C, dim1C) + val(D, dim1D);\\n return y1 * (1.0 - ratio) + y2 * ratio;\\n}\\n\\nint iMod(int a, int b) {\\n return a - b * (a / b);\\n}\\n\\nbool fOutside(float p, float lo, float hi) {\\n return (lo < hi) && (lo > p || p > hi);\\n}\\n\\nbool vOutside(vec4 p, vec4 lo, vec4 hi) {\\n return (\\n fOutside(p[0], lo[0], hi[0]) ||\\n fOutside(p[1], lo[1], hi[1]) ||\\n fOutside(p[2], lo[2], hi[2]) ||\\n fOutside(p[3], lo[3], hi[3])\\n );\\n}\\n\\nbool mOutside(mat4 p, mat4 lo, mat4 hi) {\\n return (\\n vOutside(p[0], lo[0], hi[0]) ||\\n vOutside(p[1], lo[1], hi[1]) ||\\n vOutside(p[2], lo[2], hi[2]) ||\\n vOutside(p[3], lo[3], hi[3])\\n );\\n}\\n\\nbool outsideBoundingBox(mat4 A, mat4 B, mat4 C, mat4 D) {\\n return mOutside(A, loA, hiA) ||\\n mOutside(B, loB, hiB) ||\\n mOutside(C, loC, hiC) ||\\n mOutside(D, loD, hiD);\\n}\\n\\nbool outsideRasterMask(mat4 A, mat4 B, mat4 C, mat4 D) {\\n mat4 pnts[4];\\n pnts[0] = A;\\n pnts[1] = B;\\n pnts[2] = C;\\n pnts[3] = D;\\n\\n for(int i = 0; i < 4; ++i) {\\n for(int j = 0; j < 4; ++j) {\\n for(int k = 0; k < 4; ++k) {\\n if(0 == iMod(\\n int(255.0 * texture2D(maskTexture,\\n vec2(\\n (float(i * 2 + j / 2) + 0.5) / 8.0,\\n (pnts[i][j][k] * (maskHeight - 1.0) + 1.0) / maskHeight\\n ))[3]\\n ) / int(pow(2.0, float(iMod(j * 4 + k, 8)))),\\n 2\\n )) return true;\\n }\\n }\\n }\\n return false;\\n}\\n\\nvec4 position(bool isContext, float v, mat4 A, mat4 B, mat4 C, mat4 D) {\\n float x = 0.5 * sign(v) + 0.5;\\n float y = axisY(x, A, B, C, D);\\n float z = 1.0 - abs(v);\\n\\n z += isContext ? 0.0 : 2.0 * float(\\n outsideBoundingBox(A, B, C, D) ||\\n outsideRasterMask(A, B, C, D)\\n );\\n\\n return vec4(\\n 2.0 * (vec2(x, y) * viewBoxSize + viewBoxPos) / resolution - 1.0,\\n z,\\n 1.0\\n );\\n}\\n\\nvoid main() {\\n mat4 A = mat4(p01_04, p05_08, p09_12, p13_16);\\n mat4 B = mat4(p17_20, p21_24, p25_28, p29_32);\\n mat4 C = mat4(p33_36, p37_40, p41_44, p45_48);\\n mat4 D = mat4(p49_52, p53_56, p57_60, ZEROS);\\n\\n float v = colors[3];\\n\\n gl_Position = position(isContext, v, A, B, C, D);\\n\\n fragColor =\\n isContext ? vec4(contextColor) :\\n isPick ? vec4(colors.rgb, 1.0) : texture2D(palette, vec2(abs(v), 0.5));\\n}\\n\"]),a=n([\"precision highp float;\\n#define GLSLIFY 1\\n\\nvarying vec4 fragColor;\\n\\nvoid main() {\\n gl_FragColor = fragColor;\\n}\\n\"]),o=t(\"./constants\").maxDimensionCount,s=t(\"../../lib\"),l=new Uint8Array(4),c=new Uint8Array(4),u={shape:[256,1],format:\"rgba\",type:\"uint8\",mag:\"nearest\",min:\"nearest\"};function f(t,e,r,n,i){var a=t._gl;a.enable(a.SCISSOR_TEST),a.scissor(e,r,n,i),t.clear({color:[0,0,0,0],depth:1})}function h(t,e,r,n,i,a){var o=a.key;r.drawCompleted||(!function(t){t.read({x:0,y:0,width:1,height:1,data:l})}(t),r.drawCompleted=!0),function s(l){var c=Math.min(n,i-l*n);0===l&&(window.cancelAnimationFrame(r.currentRafs[o]),delete r.currentRafs[o],f(t,a.scissorX,a.scissorY,a.scissorWidth,a.viewBoxSize[1])),r.clearOnly||(a.count=2*c,a.offset=2*l*n,e(a),l*n+c>>8*e)%256/255}function g(t,e,r){for(var n=new Array(8*e),i=0,a=0;au&&(u=t[i].dim1.canvasX,o=i);0===s&&f(T,0,0,r.canvasWidth,r.canvasHeight);var p=function(t){var e,r,n,i=[[],[]];for(n=0;n<64;n++){var a=!t&&no._length&&(S=S.slice(0,o._length));var L,C=o.tickvals;function P(t,e){return{val:t,text:L[e]}}function I(t,e){return t.val-e.val}if(Array.isArray(C)&&C.length){L=o.ticktext,Array.isArray(L)&&L.length?L.length>C.length?L=L.slice(0,C.length):C.length>L.length&&(C=C.slice(0,L.length)):L=C.map(a(o.tickformat));for(var O=1;O=r||l>=i)return;var c=t.lineLayer.readPixel(s,i-1-l),u=0!==c[3],f=u?c[2]+256*(c[1]+256*c[0]):null,h={x:s,y:l,clientX:e.clientX,clientY:e.clientY,dataIndex:t.model.key,curveNumber:f};f!==B&&(u?a.hover(h):a.unhover&&a.unhover(h),B=f)}})),F.style(\"opacity\",(function(t){return t.pick?0:1})),h.style(\"background\",\"rgba(255, 255, 255, 0)\");var N=h.selectAll(\".\"+y.cn.parcoords).data(R,d);N.exit().remove(),N.enter().append(\"g\").classed(y.cn.parcoords,!0).style(\"shape-rendering\",\"crispEdges\").style(\"pointer-events\",\"none\"),N.attr(\"transform\",(function(t){return c(t.model.translateX,t.model.translateY)}));var j=N.selectAll(\".\"+y.cn.parcoordsControlView).data(g,d);j.enter().append(\"g\").classed(y.cn.parcoordsControlView,!0),j.attr(\"transform\",(function(t){return c(t.model.pad.l,t.model.pad.t)}));var U=j.selectAll(\".\"+y.cn.yAxis).data((function(t){return t.dimensions}),d);U.enter().append(\"g\").classed(y.cn.yAxis,!0),j.each((function(t){O(U,t,_)})),F.each((function(t){if(t.viewModel){!t.lineLayer||a?t.lineLayer=b(this,t):t.lineLayer.update(t),(t.key||0===t.key)&&(t.viewModel[t.key]=t.lineLayer);var e=!t.context||a;t.lineLayer.render(t.viewModel.panels,e)}})),U.attr(\"transform\",(function(t){return c(t.xScale(t.xIndex),0)})),U.call(n.behavior.drag().origin((function(t){return t})).on(\"drag\",(function(t){var e=t.parent;S.linePickActive(!1),t.x=Math.max(-y.overdrag,Math.min(t.model.width+y.overdrag,n.event.x)),t.canvasX=t.x*t.model.canvasPixelRatio,U.sort((function(t,e){return t.x-e.x})).each((function(e,r){e.xIndex=r,e.x=t===e?e.x:e.xScale(e.xIndex),e.canvasX=e.x*e.model.canvasPixelRatio})),O(U,e,_),U.filter((function(e){return 0!==Math.abs(t.xIndex-e.xIndex)})).attr(\"transform\",(function(t){return c(t.xScale(t.xIndex),0)})),n.select(this).attr(\"transform\",c(t.x,0)),U.each((function(r,n,i){i===t.parent.key&&(e.dimensions[n]=r)})),e.contextLayer&&e.contextLayer.render(e.panels,!1,!E(e)),e.focusLayer.render&&e.focusLayer.render(e.panels)})).on(\"dragend\",(function(t){var e=t.parent;t.x=t.xScale(t.xIndex),t.canvasX=t.x*t.model.canvasPixelRatio,O(U,e,_),n.select(this).attr(\"transform\",(function(t){return c(t.x,0)})),e.contextLayer&&e.contextLayer.render(e.panels,!1,!E(e)),e.focusLayer&&e.focusLayer.render(e.panels),e.pickLayer&&e.pickLayer.render(e.panels,!0),S.linePickActive(!0),a&&a.axesMoved&&a.axesMoved(e.key,e.dimensions.map((function(t){return t.crossfilterDimensionIndex})))}))),U.exit().remove();var V=U.selectAll(\".\"+y.cn.axisOverlays).data(g,d);V.enter().append(\"g\").classed(y.cn.axisOverlays,!0),V.selectAll(\".\"+y.cn.axis).remove();var H=V.selectAll(\".\"+y.cn.axis).data(g,d);H.enter().append(\"g\").classed(y.cn.axis,!0),H.each((function(t){var e=t.model.height/t.model.tickDistance,r=t.domainScale,i=r.domain();n.select(this).call(n.svg.axis().orient(\"left\").tickSize(4).outerTickSize(2).ticks(e,t.tickFormat).tickValues(t.ordinal?i:null).tickFormat((function(e){return v.isOrdinal(t)?e:z(t.model.dimensions[t.visibleIndex],e)})).scale(r)),f.font(H.selectAll(\"text\"),t.model.tickFont)})),H.selectAll(\".domain, .tick>line\").attr(\"fill\",\"none\").attr(\"stroke\",\"black\").attr(\"stroke-opacity\",.25).attr(\"stroke-width\",\"1px\"),H.selectAll(\"text\").style(\"text-shadow\",u.makeTextShadow(T)).style(\"cursor\",\"default\");var q=V.selectAll(\".\"+y.cn.axisHeading).data(g,d);q.enter().append(\"g\").classed(y.cn.axisHeading,!0);var G=q.selectAll(\".\"+y.cn.axisTitle).data(g,d);G.enter().append(\"text\").classed(y.cn.axisTitle,!0).attr(\"text-anchor\",\"middle\").style(\"cursor\",\"ew-resize\").style(\"pointer-events\",\"auto\"),G.text((function(t){return t.label})).each((function(e){var r=n.select(this);f.font(r,e.model.labelFont),u.convertToTspans(r,t)})).attr(\"transform\",(function(t){var e=I(t.model.labelAngle,t.model.labelSide),r=y.axisTitleOffset;return(e.dir>0?\"\":c(0,2*r+t.model.height))+l(e.degrees)+c(-r*e.dx,-r*e.dy)})).attr(\"text-anchor\",(function(t){var e=I(t.model.labelAngle,t.model.labelSide);return 2*Math.abs(e.dx)>Math.abs(e.dy)?e.dir*e.dx<0?\"start\":\"end\":\"middle\"}));var Y=V.selectAll(\".\"+y.cn.axisExtent).data(g,d);Y.enter().append(\"g\").classed(y.cn.axisExtent,!0);var W=Y.selectAll(\".\"+y.cn.axisExtentTop).data(g,d);W.enter().append(\"g\").classed(y.cn.axisExtentTop,!0),W.attr(\"transform\",c(0,-y.axisExtentOffset));var X=W.selectAll(\".\"+y.cn.axisExtentTopText).data(g,d);X.enter().append(\"text\").classed(y.cn.axisExtentTopText,!0).call(P),X.text((function(t){return D(t,!0)})).each((function(t){f.font(n.select(this),t.model.rangeFont)}));var Z=Y.selectAll(\".\"+y.cn.axisExtentBottom).data(g,d);Z.enter().append(\"g\").classed(y.cn.axisExtentBottom,!0),Z.attr(\"transform\",(function(t){return c(0,t.model.height+y.axisExtentOffset)}));var J=Z.selectAll(\".\"+y.cn.axisExtentBottomText).data(g,d);J.enter().append(\"text\").classed(y.cn.axisExtentBottomText,!0).attr(\"dy\",\"0.75em\").call(P),J.text((function(t){return D(t,!1)})).each((function(t){f.font(n.select(this),t.model.rangeFont)})),x.ensureAxisBrush(V,T)}},{\"../../components/colorscale\":378,\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/gup\":500,\"../../lib/svg_text_utils\":529,\"../../plots/cartesian/axes\":554,\"./axisbrush\":889,\"./constants\":892,\"./helpers\":894,\"./lines\":896,\"@plotly/d3\":58,\"color-rgba\":91}],899:[function(t,e,r){\"use strict\";var n=t(\"./parcoords\"),i=t(\"../../lib/prepare_regl\"),a=t(\"./helpers\").isVisible;function o(t,e,r){var n=e.indexOf(r),i=t.indexOf(n);return-1===i&&(i+=e.length),i}e.exports=function(t,e){var r=t._fullLayout;if(i(t)){var s={},l={},c={},u={},f=r._size;e.forEach((function(e,r){var n=e[0].trace;c[r]=n.index;var i=u[r]=n._fullInput.index;s[r]=t.data[i].dimensions,l[r]=t.data[i].dimensions.slice()}));n(t,e,{width:f.w,height:f.h,margin:{t:f.t,r:f.r,b:f.b,l:f.l}},{filterChanged:function(e,n,i){var a=l[e][n],o=i.map((function(t){return t.slice()})),s=\"dimensions[\"+n+\"].constraintrange\",f=r._tracePreGUI[t._fullData[c[e]]._fullInput.uid];if(void 0===f[s]){var h=a.constraintrange;f[s]=h||null}var p=t._fullData[c[e]].dimensions[n];o.length?(1===o.length&&(o=o[0]),a.constraintrange=o,p.constraintrange=o.slice(),o=[o]):(delete a.constraintrange,delete p.constraintrange,o=null);var d={};d[s]=o,t.emit(\"plotly_restyle\",[d,[u[e]]])},hover:function(e){t.emit(\"plotly_hover\",e)},unhover:function(e){t.emit(\"plotly_unhover\",e)},axesMoved:function(e,r){var n=function(t,e){return function(r,n){return o(t,e,r)-o(t,e,n)}}(r,l[e].filter(a));s[e].sort(n),l[e].filter((function(t){return!a(t)})).sort((function(t){return l[e].indexOf(t)})).forEach((function(t){s[e].splice(s[e].indexOf(t),1),s[e].splice(l[e].indexOf(t),0,t)})),t.emit(\"plotly_restyle\",[{dimensions:[s[e]]},[u[e]]])}})}}},{\"../../lib/prepare_regl\":516,\"./helpers\":894,\"./parcoords\":898}],900:[function(t,e,r){\"use strict\";var n=t(\"../../plots/attributes\"),i=t(\"../../plots/domain\").attributes,a=t(\"../../plots/font_attributes\"),o=t(\"../../components/color/attributes\"),s=t(\"../../plots/template_attributes\").hovertemplateAttrs,l=t(\"../../plots/template_attributes\").texttemplateAttrs,c=t(\"../../lib/extend\").extendFlat,u=a({editType:\"plot\",arrayOk:!0,colorEditType:\"plot\"});e.exports={labels:{valType:\"data_array\",editType:\"calc\"},label0:{valType:\"number\",dflt:0,editType:\"calc\"},dlabel:{valType:\"number\",dflt:1,editType:\"calc\"},values:{valType:\"data_array\",editType:\"calc\"},marker:{colors:{valType:\"data_array\",editType:\"calc\"},line:{color:{valType:\"color\",dflt:o.defaultLine,arrayOk:!0,editType:\"style\"},width:{valType:\"number\",min:0,dflt:0,arrayOk:!0,editType:\"style\"},editType:\"calc\"},editType:\"calc\"},text:{valType:\"data_array\",editType:\"plot\"},hovertext:{valType:\"string\",dflt:\"\",arrayOk:!0,editType:\"style\"},scalegroup:{valType:\"string\",dflt:\"\",editType:\"calc\"},textinfo:{valType:\"flaglist\",flags:[\"label\",\"text\",\"value\",\"percent\"],extras:[\"none\"],editType:\"calc\"},hoverinfo:c({},n.hoverinfo,{flags:[\"label\",\"text\",\"value\",\"percent\",\"name\"]}),hovertemplate:s({},{keys:[\"label\",\"color\",\"value\",\"percent\",\"text\"]}),texttemplate:l({editType:\"plot\"},{keys:[\"label\",\"color\",\"value\",\"percent\",\"text\"]}),textposition:{valType:\"enumerated\",values:[\"inside\",\"outside\",\"auto\",\"none\"],dflt:\"auto\",arrayOk:!0,editType:\"plot\"},textfont:c({},u,{}),insidetextorientation:{valType:\"enumerated\",values:[\"horizontal\",\"radial\",\"tangential\",\"auto\"],dflt:\"auto\",editType:\"plot\"},insidetextfont:c({},u,{}),outsidetextfont:c({},u,{}),automargin:{valType:\"boolean\",dflt:!1,editType:\"plot\"},title:{text:{valType:\"string\",dflt:\"\",editType:\"plot\"},font:c({},u,{}),position:{valType:\"enumerated\",values:[\"top left\",\"top center\",\"top right\",\"middle center\",\"bottom left\",\"bottom center\",\"bottom right\"],editType:\"plot\"},editType:\"plot\"},domain:i({name:\"pie\",trace:!0,editType:\"calc\"}),hole:{valType:\"number\",min:0,max:1,dflt:0,editType:\"calc\"},sort:{valType:\"boolean\",dflt:!0,editType:\"calc\"},direction:{valType:\"enumerated\",values:[\"clockwise\",\"counterclockwise\"],dflt:\"counterclockwise\",editType:\"calc\"},rotation:{valType:\"number\",min:-360,max:360,dflt:0,editType:\"calc\"},pull:{valType:\"number\",min:0,max:1,dflt:0,arrayOk:!0,editType:\"calc\"},_deprecated:{title:{valType:\"string\",dflt:\"\",editType:\"calc\"},titlefont:c({},u,{}),titleposition:{valType:\"enumerated\",values:[\"top left\",\"top center\",\"top right\",\"middle center\",\"bottom left\",\"bottom center\",\"bottom right\"],editType:\"calc\"}}}},{\"../../components/color/attributes\":365,\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/domain\":584,\"../../plots/font_attributes\":585,\"../../plots/template_attributes\":633}],901:[function(t,e,r){\"use strict\";var n=t(\"../../plots/plots\");r.name=\"pie\",r.plot=function(t,e,i,a){n.plotBasePlot(r.name,t,e,i,a)},r.clean=function(t,e,i,a){n.cleanBasePlot(r.name,t,e,i,a)}},{\"../../plots/plots\":619}],902:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"tinycolor2\"),a=t(\"../../components/color\"),o={};function s(t){return function(e,r){return!!e&&(!!(e=i(e)).isValid()&&(e=a.addOpacity(e,e.getAlpha()),t[r]||(t[r]=e),e))}}function l(t,e){var r,n=JSON.stringify(t),a=e[n];if(!a){for(a=t.slice(),r=0;r=0})),(\"funnelarea\"===e.type?v:e.sort)&&a.sort((function(t,e){return e.v-t.v})),a[0]&&(a[0].vTotal=m),a},crossTraceCalc:function(t,e){var r=(e||{}).type;r||(r=\"pie\");var n=t._fullLayout,i=t.calcdata,a=n[r+\"colorway\"],s=n[\"_\"+r+\"colormap\"];n[\"extend\"+r+\"colors\"]&&(a=l(a,o));for(var c=0,u=0;u0){s=!0;break}}s||(o=0)}return{hasLabels:r,hasValues:a,len:o}}e.exports={handleLabelsAndValues:l,supplyDefaults:function(t,e,r,n){function c(r,n){return i.coerce(t,e,a,r,n)}var u=l(c(\"labels\"),c(\"values\")),f=u.len;if(e._hasLabels=u.hasLabels,e._hasValues=u.hasValues,!e._hasLabels&&e._hasValues&&(c(\"label0\"),c(\"dlabel\")),f){e._length=f,c(\"marker.line.width\")&&c(\"marker.line.color\"),c(\"marker.colors\"),c(\"scalegroup\");var h,p=c(\"text\"),d=c(\"texttemplate\");if(d||(h=c(\"textinfo\",Array.isArray(p)?\"text+percent\":\"percent\")),c(\"hovertext\"),c(\"hovertemplate\"),d||h&&\"none\"!==h){var g=c(\"textposition\");s(t,e,n,c,g,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),(Array.isArray(g)||\"auto\"===g||\"outside\"===g)&&c(\"automargin\"),(\"inside\"===g||\"auto\"===g||Array.isArray(g))&&c(\"insidetextorientation\")}o(e,n,c);var m=c(\"hole\");if(c(\"title.text\")){var v=c(\"title.position\",m?\"middle center\":\"top center\");m||\"middle center\"!==v||(e.title.position=\"top center\"),i.coerceFont(c,\"title.font\",n.font)}c(\"sort\"),c(\"direction\"),c(\"rotation\"),c(\"pull\")}else e.visible=!1}}},{\"../../lib\":503,\"../../plots/domain\":584,\"../bar/defaults\":652,\"./attributes\":900,\"fast-isnumeric\":190}],904:[function(t,e,r){\"use strict\";var n=t(\"../../components/fx/helpers\").appendArrayMultiPointValues;e.exports=function(t,e){var r={curveNumber:e.index,pointNumbers:t.pts,data:e._input,fullData:e,label:t.label,color:t.color,value:t.v,percent:t.percent,text:t.text,bbox:t.bbox,v:t.v};return 1===t.pts.length&&(r.pointNumber=r.i=t.pts[0]),n(r,e,t.pts),\"funnelarea\"===e.type&&(delete r.v,delete r.i),r}},{\"../../components/fx/helpers\":402}],905:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");function i(t){return-1!==t.indexOf(\"e\")?t.replace(/[.]?0+e/,\"e\"):-1!==t.indexOf(\".\")?t.replace(/[.]?0+$/,\"\"):t}r.formatPiePercent=function(t,e){var r=i((100*t).toPrecision(3));return n.numSeparate(r,e)+\"%\"},r.formatPieValue=function(t,e){var r=i(t.toPrecision(10));return n.numSeparate(r,e)},r.getFirstFilled=function(t,e){if(Array.isArray(t))for(var r=0;r\"),name:f.hovertemplate||-1!==h.indexOf(\"name\")?f.name:void 0,idealAlign:t.pxmid[0]<0?\"left\":\"right\",color:m.castOption(_.bgcolor,t.pts)||t.color,borderColor:m.castOption(_.bordercolor,t.pts),fontFamily:m.castOption(w.family,t.pts),fontSize:m.castOption(w.size,t.pts),fontColor:m.castOption(w.color,t.pts),nameLength:m.castOption(_.namelength,t.pts),textAlign:m.castOption(_.align,t.pts),hovertemplate:m.castOption(f.hovertemplate,t.pts),hovertemplateLabels:t,eventData:[v(t,f)]},{container:r._hoverlayer.node(),outerContainer:r._paper.node(),gd:e,inOut_bbox:T}),t.bbox=T[0],c._hasHoverLabel=!0}c._hasHoverEvent=!0,e.emit(\"plotly_hover\",{points:[v(t,f)],event:n.event})}})),t.on(\"mouseout\",(function(t){var r=e._fullLayout,i=e._fullData[c.index],o=n.select(this).datum();c._hasHoverEvent&&(t.originalEvent=n.event,e.emit(\"plotly_unhover\",{points:[v(o,i)],event:n.event}),c._hasHoverEvent=!1),c._hasHoverLabel&&(a.loneUnhover(r._hoverlayer.node()),c._hasHoverLabel=!1)})),t.on(\"click\",(function(t){var r=e._fullLayout,i=e._fullData[c.index];e._dragging||!1===r.hovermode||(e._hoverdata=[v(t,i)],a.click(e,n.event))}))}function b(t,e,r){var n=m.castOption(t.insidetextfont.color,e.pts);!n&&t._input.textfont&&(n=m.castOption(t._input.textfont.color,e.pts));var i=m.castOption(t.insidetextfont.family,e.pts)||m.castOption(t.textfont.family,e.pts)||r.family,a=m.castOption(t.insidetextfont.size,e.pts)||m.castOption(t.textfont.size,e.pts)||r.size;return{color:n||o.contrast(e.color),family:i,size:a}}function _(t,e){for(var r,n,i=0;ie&&e>n||r=-4;m-=2)v(Math.PI*m,\"tan\");for(m=4;m>=-4;m-=2)v(Math.PI*(m+1),\"tan\")}if(f||p){for(m=4;m>=-4;m-=2)v(Math.PI*(m+1.5),\"rad\");for(m=4;m>=-4;m-=2)v(Math.PI*(m+.5),\"rad\")}}if(s||d||f){var y=Math.sqrt(t.width*t.width+t.height*t.height);if((a={scale:i*n*2/y,rCenter:1-i,rotate:0}).textPosAngle=(e.startangle+e.stopangle)/2,a.scale>=1)return a;g.push(a)}(d||p)&&((a=T(t,n,o,l,c)).textPosAngle=(e.startangle+e.stopangle)/2,g.push(a)),(d||h)&&((a=k(t,n,o,l,c)).textPosAngle=(e.startangle+e.stopangle)/2,g.push(a));for(var x=0,b=0,_=0;_=1)break}return g[x]}function T(t,e,r,n,i){e=Math.max(0,e-2*g);var a=t.width/t.height,o=S(a,n,e,r);return{scale:2*o/t.height,rCenter:A(a,o/e),rotate:M(i)}}function k(t,e,r,n,i){e=Math.max(0,e-2*g);var a=t.height/t.width,o=S(a,n,e,r);return{scale:2*o/t.width,rCenter:A(a,o/e),rotate:M(i+Math.PI/2)}}function A(t,e){return Math.cos(e)-t*e}function M(t){return(180/Math.PI*t+720)%180-90}function S(t,e,r,n){var i=t+1/(2*Math.tan(e));return r*Math.min(1/(Math.sqrt(i*i+.5)+i),n/(Math.sqrt(t*t+n/2)+t))}function E(t,e){return t.v!==e.vTotal||e.trace.hole?Math.min(1/(1+1/Math.sin(t.halfangle)),t.ring/2):1}function L(t,e){var r=e.pxmid[0],n=e.pxmid[1],i=t.width/2,a=t.height/2;return r<0&&(i*=-1),n<0&&(a*=-1),{scale:1,rCenter:1,rotate:0,x:i+Math.abs(a)*(i>0?1:-1)/2,y:a/(1+r*r/(n*n)),outside:!0}}function C(t,e){var r,n,i,a=t.trace,o={x:t.cx,y:t.cy},s={tx:0,ty:0};s.ty+=a.title.font.size,i=I(a),-1!==a.title.position.indexOf(\"top\")?(o.y-=(1+i)*t.r,s.ty-=t.titleBox.height):-1!==a.title.position.indexOf(\"bottom\")&&(o.y+=(1+i)*t.r);var l,c,u=(l=t.r,c=t.trace.aspectratio,l/(void 0===c?1:c)),f=e.w*(a.domain.x[1]-a.domain.x[0])/2;return-1!==a.title.position.indexOf(\"left\")?(f+=u,o.x-=(1+i)*u,s.tx+=t.titleBox.width/2):-1!==a.title.position.indexOf(\"center\")?f*=2:-1!==a.title.position.indexOf(\"right\")&&(f+=u,o.x+=(1+i)*u,s.tx-=t.titleBox.width/2),r=f/t.titleBox.width,n=P(t,e)/t.titleBox.height,{x:o.x,y:o.y,scale:Math.min(r,n),tx:s.tx,ty:s.ty}}function P(t,e){var r=t.trace,n=e.h*(r.domain.y[1]-r.domain.y[0]);return Math.min(t.titleBox.height,n/2)}function I(t){var e,r=t.pull;if(!r)return 0;if(Array.isArray(r))for(r=0,e=0;er&&(r=t.pull[e]);return r}function O(t,e){for(var r=[],n=0;n1?(c=r.r,u=c/i.aspectratio):(u=r.r,c=u*i.aspectratio),c*=(1+i.baseratio)/2,l=c*u}o=Math.min(o,l/r.vTotal)}for(n=0;n\")}if(a){var x=l.castOption(i,e.i,\"texttemplate\");if(x){var b=function(t){return{label:t.label,value:t.v,valueLabel:m.formatPieValue(t.v,n.separators),percent:t.v/r.vTotal,percentLabel:m.formatPiePercent(t.v/r.vTotal,n.separators),color:t.color,text:t.text,customdata:l.castOption(i,t.i,\"customdata\")}}(e),_=m.getFirstFilled(i.text,e.pts);(y(_)||\"\"===_)&&(b.text=_),e.text=l.texttemplateString(x,b,t._fullLayout._d3locale,b,i._meta||{})}else e.text=\"\"}}function R(t,e){var r=t.rotate*Math.PI/180,n=Math.cos(r),i=Math.sin(r),a=(e.left+e.right)/2,o=(e.top+e.bottom)/2;t.textX=a*n-o*i,t.textY=a*i+o*n,t.noCenter=!0}e.exports={plot:function(t,e){var r=t._fullLayout,a=r._size;d(\"pie\",r),_(e,t),O(e,a);var h=l.makeTraceGroups(r._pielayer,e,\"trace\").each((function(e){var h=n.select(this),d=e[0],g=d.trace;!function(t){var e,r,n,i=t[0],a=i.r,o=i.trace,s=m.getRotationAngle(o.rotation),l=2*Math.PI/i.vTotal,c=\"px0\",u=\"px1\";if(\"counterclockwise\"===o.direction){for(e=0;ei.vTotal/2?1:0,r.halfangle=Math.PI*Math.min(r.v/i.vTotal,.5),r.ring=1-o.hole,r.rInscribed=E(r,i))}(e),h.attr(\"stroke-linejoin\",\"round\"),h.each((function(){var v=n.select(this).selectAll(\"g.slice\").data(e);v.enter().append(\"g\").classed(\"slice\",!0),v.exit().remove();var y=[[[],[]],[[],[]]],_=!1;v.each((function(i,a){if(i.hidden)n.select(this).selectAll(\"path,g\").remove();else{i.pointNumber=i.i,i.curveNumber=g.index,y[i.pxmid[1]<0?0:1][i.pxmid[0]<0?0:1].push(i);var o=d.cx,c=d.cy,u=n.select(this),h=u.selectAll(\"path.surface\").data([i]);if(h.enter().append(\"path\").classed(\"surface\",!0).style({\"pointer-events\":\"all\"}),u.call(x,t,e),g.pull){var v=+m.castOption(g.pull,i.pts)||0;v>0&&(o+=v*i.pxmid[0],c+=v*i.pxmid[1])}i.cxFinal=o,i.cyFinal=c;var T=g.hole;if(i.v===d.vTotal){var k=\"M\"+(o+i.px0[0])+\",\"+(c+i.px0[1])+C(i.px0,i.pxmid,!0,1)+C(i.pxmid,i.px0,!0,1)+\"Z\";T?h.attr(\"d\",\"M\"+(o+T*i.px0[0])+\",\"+(c+T*i.px0[1])+C(i.px0,i.pxmid,!1,T)+C(i.pxmid,i.px0,!1,T)+\"Z\"+k):h.attr(\"d\",k)}else{var A=C(i.px0,i.px1,!0,1);if(T){var M=1-T;h.attr(\"d\",\"M\"+(o+T*i.px1[0])+\",\"+(c+T*i.px1[1])+C(i.px1,i.px0,!1,T)+\"l\"+M*i.px0[0]+\",\"+M*i.px0[1]+A+\"Z\")}else h.attr(\"d\",\"M\"+o+\",\"+c+\"l\"+i.px0[0]+\",\"+i.px0[1]+A+\"Z\")}D(t,i,d);var S=m.castOption(g.textposition,i.pts),E=u.selectAll(\"g.slicetext\").data(i.text&&\"none\"!==S?[0]:[]);E.enter().append(\"g\").classed(\"slicetext\",!0),E.exit().remove(),E.each((function(){var u=l.ensureSingle(n.select(this),\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),h=l.ensureUniformFontSize(t,\"outside\"===S?function(t,e,r){var n=m.castOption(t.outsidetextfont.color,e.pts)||m.castOption(t.textfont.color,e.pts)||r.color,i=m.castOption(t.outsidetextfont.family,e.pts)||m.castOption(t.textfont.family,e.pts)||r.family,a=m.castOption(t.outsidetextfont.size,e.pts)||m.castOption(t.textfont.size,e.pts)||r.size;return{color:n,family:i,size:a}}(g,i,r.font):b(g,i,r.font));u.text(i.text).attr({class:\"slicetext\",transform:\"\",\"text-anchor\":\"middle\"}).call(s.font,h).call(f.convertToTspans,t);var v,y=s.bBox(u.node());if(\"outside\"===S)v=L(y,i);else if(v=w(y,i,d),\"auto\"===S&&v.scale<1){var x=l.ensureUniformFontSize(t,g.outsidetextfont);u.call(s.font,x),v=L(y=s.bBox(u.node()),i)}var T=v.textPosAngle,k=void 0===T?i.pxmid:z(d.r,T);if(v.targetX=o+k[0]*v.rCenter+(v.x||0),v.targetY=c+k[1]*v.rCenter+(v.y||0),R(v,y),v.outside){var A=v.targetY;i.yLabelMin=A-y.height/2,i.yLabelMid=A,i.yLabelMax=A+y.height/2,i.labelExtraX=0,i.labelExtraY=0,_=!0}v.fontSize=h.size,p(g.type,v,r),e[a].transform=v,u.attr(\"transform\",l.getTextTransform(v))}))}function C(t,e,r,n){var a=n*(e[0]-t[0]),o=n*(e[1]-t[1]);return\"a\"+n*d.r+\",\"+n*d.r+\" 0 \"+i.largeArc+(r?\" 1 \":\" 0 \")+a+\",\"+o}}));var T=n.select(this).selectAll(\"g.titletext\").data(g.title.text?[0]:[]);if(T.enter().append(\"g\").classed(\"titletext\",!0),T.exit().remove(),T.each((function(){var e,r=l.ensureSingle(n.select(this),\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),i=g.title.text;g._meta&&(i=l.templateString(i,g._meta)),r.text(i).attr({class:\"titletext\",transform:\"\",\"text-anchor\":\"middle\"}).call(s.font,g.title.font).call(f.convertToTspans,t),e=\"middle center\"===g.title.position?function(t){var e=Math.sqrt(t.titleBox.width*t.titleBox.width+t.titleBox.height*t.titleBox.height);return{x:t.cx,y:t.cy,scale:t.trace.hole*t.r*2/e,tx:0,ty:-t.titleBox.height/2+t.trace.title.font.size}}(d):C(d,a),r.attr(\"transform\",u(e.x,e.y)+c(Math.min(1,e.scale))+u(e.tx,e.ty))})),_&&function(t,e){var r,n,i,a,o,s,l,c,u,f,h,p,d;function g(t,e){return t.pxmid[1]-e.pxmid[1]}function v(t,e){return e.pxmid[1]-t.pxmid[1]}function y(t,r){r||(r={});var i,c,u,h,p=r.labelExtraY+(n?r.yLabelMax:r.yLabelMin),d=n?t.yLabelMin:t.yLabelMax,g=n?t.yLabelMax:t.yLabelMin,v=t.cyFinal+o(t.px0[1],t.px1[1]),y=p-d;if(y*l>0&&(t.labelExtraY=y),Array.isArray(e.pull))for(c=0;c=(m.castOption(e.pull,u.pts)||0)||((t.pxmid[1]-u.pxmid[1])*l>0?(y=u.cyFinal+o(u.px0[1],u.px1[1])-d-t.labelExtraY)*l>0&&(t.labelExtraY+=y):(g+t.labelExtraY-v)*l>0&&(i=3*s*Math.abs(c-f.indexOf(t)),(h=u.cxFinal+a(u.px0[0],u.px1[0])+i-(t.cxFinal+t.pxmid[0])-t.labelExtraX)*s>0&&(t.labelExtraX+=h)))}for(n=0;n<2;n++)for(i=n?g:v,o=n?Math.max:Math.min,l=n?1:-1,r=0;r<2;r++){for(a=r?Math.max:Math.min,s=r?1:-1,(c=t[n][r]).sort(i),u=t[1-n][r],f=u.concat(c),p=[],h=0;hMath.abs(f)?s+=\"l\"+f*t.pxmid[0]/t.pxmid[1]+\",\"+f+\"H\"+(a+t.labelExtraX+c):s+=\"l\"+t.labelExtraX+\",\"+u+\"v\"+(f-u)+\"h\"+c}else s+=\"V\"+(t.yLabelMid+t.labelExtraY)+\"h\"+c;l.ensureSingle(r,\"path\",\"textline\").call(o.stroke,e.outsidetextfont.color).attr({\"stroke-width\":Math.min(2,e.outsidetextfont.size/8),d:s,fill:\"none\"})}else r.select(\"path.textline\").remove()}))}(v,g),_&&g.automargin){var k=s.bBox(h.node()),A=g.domain,M=a.w*(A.x[1]-A.x[0]),S=a.h*(A.y[1]-A.y[0]),E=(.5*M-d.r)/a.w,P=(.5*S-d.r)/a.h;i.autoMargin(t,\"pie.\"+g.uid+\".automargin\",{xl:A.x[0]-E,xr:A.x[1]+E,yb:A.y[0]-P,yt:A.y[1]+P,l:Math.max(d.cx-d.r-k.left,0),r:Math.max(k.right-(d.cx+d.r),0),b:Math.max(k.bottom-(d.cy+d.r),0),t:Math.max(d.cy-d.r-k.top,0),pad:5})}}))}));setTimeout((function(){h.selectAll(\"tspan\").each((function(){var t=n.select(this);t.attr(\"dy\")&&t.attr(\"dy\",t.attr(\"dy\"))}))}),0)},formatSliceLabel:D,transformInsideText:w,determineInsideTextFont:b,positionTitleOutside:C,prerenderTitles:_,layoutAreas:O,attachFxHandlers:x,computeTransform:R}},{\"../../components/color\":366,\"../../components/drawing\":388,\"../../components/fx\":406,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../../plots/plots\":619,\"../bar/constants\":650,\"../bar/uniform_text\":664,\"./event_data\":904,\"./helpers\":905,\"@plotly/d3\":58}],910:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"./style_one\"),a=t(\"../bar/uniform_text\").resizeText;e.exports=function(t){var e=t._fullLayout._pielayer.selectAll(\".trace\");a(t,e,\"pie\"),e.each((function(t){var e=t[0].trace,r=n.select(this);r.style({opacity:e.opacity}),r.selectAll(\"path.surface\").each((function(t){n.select(this).call(i,t,e)}))}))}},{\"../bar/uniform_text\":664,\"./style_one\":911,\"@plotly/d3\":58}],911:[function(t,e,r){\"use strict\";var n=t(\"../../components/color\"),i=t(\"./helpers\").castOption;e.exports=function(t,e,r){var a=r.marker.line,o=i(a.color,e.pts)||n.defaultLine,s=i(a.width,e.pts)||0;t.style(\"stroke-width\",s).call(n.fill,e.color).call(n.stroke,o)}},{\"../../components/color\":366,\"./helpers\":905}],912:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\");e.exports={x:n.x,y:n.y,xy:{valType:\"data_array\",editType:\"calc\"},indices:{valType:\"data_array\",editType:\"calc\"},xbounds:{valType:\"data_array\",editType:\"calc\"},ybounds:{valType:\"data_array\",editType:\"calc\"},text:n.text,marker:{color:{valType:\"color\",arrayOk:!1,editType:\"calc\"},opacity:{valType:\"number\",min:0,max:1,dflt:1,arrayOk:!1,editType:\"calc\"},blend:{valType:\"boolean\",dflt:null,editType:\"calc\"},sizemin:{valType:\"number\",min:.1,max:2,dflt:.5,editType:\"calc\"},sizemax:{valType:\"number\",min:.1,dflt:20,editType:\"calc\"},border:{color:{valType:\"color\",arrayOk:!1,editType:\"calc\"},arearatio:{valType:\"number\",min:0,max:1,dflt:0,editType:\"calc\"},editType:\"calc\"},editType:\"calc\"},transforms:void 0}},{\"../scatter/attributes\":926}],913:[function(t,e,r){\"use strict\";var n=t(\"../../../stackgl_modules\").gl_pointcloud2d,i=t(\"../../lib/str2rgbarray\"),a=t(\"../../plots/cartesian/autorange\").findExtremes,o=t(\"../scatter/get_trace_color\");function s(t,e){this.scene=t,this.uid=e,this.type=\"pointcloud\",this.pickXData=[],this.pickYData=[],this.xData=[],this.yData=[],this.textLabels=[],this.color=\"rgb(0, 0, 0)\",this.name=\"\",this.hoverinfo=\"all\",this.idToIndex=new Int32Array(0),this.bounds=[0,0,0,0],this.pointcloudOptions={positions:new Float32Array(0),idToIndex:this.idToIndex,sizemin:.5,sizemax:12,color:[0,0,0,1],areaRatio:1,borderColor:[0,0,0,1]},this.pointcloud=n(t.glplot,this.pointcloudOptions),this.pointcloud._trace=this}var l=s.prototype;l.handlePick=function(t){var e=this.idToIndex[t.pointId];return{trace:this,dataCoord:t.dataCoord,traceCoord:this.pickXYData?[this.pickXYData[2*e],this.pickXYData[2*e+1]]:[this.pickXData[e],this.pickYData[e]],textLabel:Array.isArray(this.textLabels)?this.textLabels[e]:this.textLabels,color:this.color,name:this.name,pointIndex:e,hoverinfo:this.hoverinfo}},l.update=function(t){this.index=t.index,this.textLabels=t.text,this.name=t.name,this.hoverinfo=t.hoverinfo,this.bounds=[1/0,1/0,-1/0,-1/0],this.updateFast(t),this.color=o(t,{})},l.updateFast=function(t){var e,r,n,o,s,l,c=this.xData=this.pickXData=t.x,u=this.yData=this.pickYData=t.y,f=this.pickXYData=t.xy,h=t.xbounds&&t.ybounds,p=t.indices,d=this.bounds;if(f){if(n=f,e=f.length>>>1,h)d[0]=t.xbounds[0],d[2]=t.xbounds[1],d[1]=t.ybounds[0],d[3]=t.ybounds[1];else for(l=0;ld[2]&&(d[2]=o),sd[3]&&(d[3]=s);if(p)r=p;else for(r=new Int32Array(e),l=0;ld[2]&&(d[2]=o),sd[3]&&(d[3]=s);this.idToIndex=r,this.pointcloudOptions.idToIndex=r,this.pointcloudOptions.positions=n;var g=i(t.marker.color),m=i(t.marker.border.color),v=t.opacity*t.marker.opacity;g[3]*=v,this.pointcloudOptions.color=g;var y=t.marker.blend;if(null===y){y=c.length<100||u.length<100}this.pointcloudOptions.blend=y,m[3]*=v,this.pointcloudOptions.borderColor=m;var x=t.marker.sizemin,b=Math.max(t.marker.sizemax,t.marker.sizemin);this.pointcloudOptions.sizeMin=x,this.pointcloudOptions.sizeMax=b,this.pointcloudOptions.areaRatio=t.marker.border.arearatio,this.pointcloud.update(this.pointcloudOptions);var _=this.scene.xaxis,w=this.scene.yaxis,T=b/2||.5;t._extremes[_._id]=a(_,[d[0],d[2]],{ppad:T}),t._extremes[w._id]=a(w,[d[1],d[3]],{ppad:T})},l.dispose=function(){this.pointcloud.dispose()},e.exports=function(t,e){var r=new s(t,e.uid);return r.update(e),r}},{\"../../../stackgl_modules\":1120,\"../../lib/str2rgbarray\":528,\"../../plots/cartesian/autorange\":553,\"../scatter/get_trace_color\":936}],914:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./attributes\");e.exports=function(t,e,r){function a(r,a){return n.coerce(t,e,i,r,a)}a(\"x\"),a(\"y\"),a(\"xbounds\"),a(\"ybounds\"),t.xy&&t.xy instanceof Float32Array&&(e.xy=t.xy),t.indices&&t.indices instanceof Int32Array&&(e.indices=t.indices),a(\"text\"),a(\"marker.color\",r),a(\"marker.opacity\"),a(\"marker.blend\"),a(\"marker.sizemin\"),a(\"marker.sizemax\"),a(\"marker.border.color\",r),a(\"marker.border.arearatio\"),e._length=null}},{\"../../lib\":503,\"./attributes\":912}],915:[function(t,e,r){\"use strict\";[\"*pointcloud* trace is deprecated!\",\"Please consider switching to the *scattergl* trace type.\"].join(\" \");e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),calc:t(\"../scatter3d/calc\"),plot:t(\"./convert\"),moduleType:\"trace\",name:\"pointcloud\",basePlotModule:t(\"../../plots/gl2d\"),categories:[\"gl\",\"gl2d\",\"showLegend\"],meta:{}}},{\"../../plots/gl2d\":596,\"../scatter3d/calc\":955,\"./attributes\":912,\"./convert\":913,\"./defaults\":914}],916:[function(t,e,r){\"use strict\";var n=t(\"../../plots/font_attributes\"),i=t(\"../../plots/attributes\"),a=t(\"../../components/color/attributes\"),o=t(\"../../components/fx/attributes\"),s=t(\"../../plots/domain\").attributes,l=t(\"../../plots/template_attributes\").hovertemplateAttrs,c=t(\"../../components/colorscale/attributes\"),u=t(\"../../plot_api/plot_template\").templatedArray,f=t(\"../../plots/cartesian/axis_format_attributes\").descriptionOnlyNumbers,h=t(\"../../lib/extend\").extendFlat,p=t(\"../../plot_api/edit_types\").overrideAll;(e.exports=p({hoverinfo:h({},i.hoverinfo,{flags:[],arrayOk:!1}),hoverlabel:o.hoverlabel,domain:s({name:\"sankey\",trace:!0}),orientation:{valType:\"enumerated\",values:[\"v\",\"h\"],dflt:\"h\"},valueformat:{valType:\"string\",dflt:\".3s\",description:f(\"value\")},valuesuffix:{valType:\"string\",dflt:\"\"},arrangement:{valType:\"enumerated\",values:[\"snap\",\"perpendicular\",\"freeform\",\"fixed\"],dflt:\"snap\"},textfont:n({}),customdata:void 0,node:{label:{valType:\"data_array\",dflt:[]},groups:{valType:\"info_array\",impliedEdits:{x:[],y:[]},dimensions:2,freeLength:!0,dflt:[],items:{valType:\"number\",editType:\"calc\"}},x:{valType:\"data_array\",dflt:[]},y:{valType:\"data_array\",dflt:[]},color:{valType:\"color\",arrayOk:!0},customdata:{valType:\"data_array\",editType:\"calc\"},line:{color:{valType:\"color\",dflt:a.defaultLine,arrayOk:!0},width:{valType:\"number\",min:0,dflt:.5,arrayOk:!0}},pad:{valType:\"number\",arrayOk:!1,min:0,dflt:20},thickness:{valType:\"number\",arrayOk:!1,min:1,dflt:20},hoverinfo:{valType:\"enumerated\",values:[\"all\",\"none\",\"skip\"],dflt:\"all\"},hoverlabel:o.hoverlabel,hovertemplate:l({},{keys:[\"value\",\"label\"]})},link:{label:{valType:\"data_array\",dflt:[]},color:{valType:\"color\",arrayOk:!0},customdata:{valType:\"data_array\",editType:\"calc\"},line:{color:{valType:\"color\",dflt:a.defaultLine,arrayOk:!0},width:{valType:\"number\",min:0,dflt:0,arrayOk:!0}},source:{valType:\"data_array\",dflt:[]},target:{valType:\"data_array\",dflt:[]},value:{valType:\"data_array\",dflt:[]},hoverinfo:{valType:\"enumerated\",values:[\"all\",\"none\",\"skip\"],dflt:\"all\"},hoverlabel:o.hoverlabel,hovertemplate:l({},{keys:[\"value\",\"label\"]}),colorscales:u(\"concentrationscales\",{editType:\"calc\",label:{valType:\"string\",editType:\"calc\",dflt:\"\"},cmax:{valType:\"number\",editType:\"calc\",dflt:1},cmin:{valType:\"number\",editType:\"calc\",dflt:0},colorscale:h(c().colorscale,{dflt:[[0,\"white\"],[1,\"black\"]]})})}},\"calc\",\"nested\")).transforms=void 0},{\"../../components/color/attributes\":365,\"../../components/colorscale/attributes\":373,\"../../components/fx/attributes\":397,\"../../lib/extend\":493,\"../../plot_api/edit_types\":536,\"../../plot_api/plot_template\":543,\"../../plots/attributes\":550,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/domain\":584,\"../../plots/font_attributes\":585,\"../../plots/template_attributes\":633}],917:[function(t,e,r){\"use strict\";var n=t(\"../../plot_api/edit_types\").overrideAll,i=t(\"../../plots/get_data\").getModuleCalcData,a=t(\"./plot\"),o=t(\"../../components/fx/layout_attributes\"),s=t(\"../../lib/setcursor\"),l=t(\"../../components/dragelement\"),c=t(\"../../plots/cartesian/select\").prepSelect,u=t(\"../../lib\"),f=t(\"../../registry\");function h(t,e){var r=t._fullData[e],n=t._fullLayout,i=n.dragmode,a=\"pan\"===n.dragmode?\"move\":\"crosshair\",o=r._bgRect;if(\"pan\"!==i&&\"zoom\"!==i){s(o,a);var h={_id:\"x\",c2p:u.identity,_offset:r._sankey.translateX,_length:r._sankey.width},p={_id:\"y\",c2p:u.identity,_offset:r._sankey.translateY,_length:r._sankey.height},d={gd:t,element:o.node(),plotinfo:{id:e,xaxis:h,yaxis:p,fillRangeItems:u.noop},subplot:e,xaxes:[h],yaxes:[p],doneFnCompleted:function(r){var n,i=t._fullData[e],a=i.node.groups.slice(),o=[];function s(t){for(var e=i._sankey.graph.nodes,r=0;ry&&(y=a.source[e]),a.target[e]>y&&(y=a.target[e]);var x,b=y+1;t.node._count=b;var _=t.node.groups,w={};for(e=0;e<_.length;e++){var T=_[e];for(x=0;x0&&s(E,b)&&s(L,b)&&(!w.hasOwnProperty(E)||!w.hasOwnProperty(L)||w[E]!==w[L])){w.hasOwnProperty(L)&&(L=w[L]),w.hasOwnProperty(E)&&(E=w[E]),L=+L,h[E=+E]=h[L]=!0;var C=\"\";a.label&&a.label[e]&&(C=a.label[e]);var P=null;C&&p.hasOwnProperty(C)&&(P=p[C]),c.push({pointNumber:e,label:C,color:u?a.color[e]:a.color,customdata:f?a.customdata[e]:a.customdata,concentrationscale:P,source:E,target:L,value:+S}),M.source.push(E),M.target.push(L)}}var I=b+_.length,O=o(r.color),z=o(r.customdata),D=[];for(e=0;eb-1,childrenNodes:[],pointNumber:e,label:R,color:O?r.color[e]:r.color,customdata:z?r.customdata[e]:r.customdata})}var F=!1;return function(t,e,r){for(var a=i.init2dArray(t,0),o=0;o1}))}(I,M.source,M.target)&&(F=!0),{circular:F,links:c,nodes:D,groups:_,groupLookup:w}}e.exports=function(t,e){var r=c(e);return a({circular:r.circular,_nodes:r.nodes,_links:r.links,_groups:r.groups,_groupLookup:r.groupLookup})}},{\"../../components/colorscale\":378,\"../../lib\":503,\"../../lib/gup\":500,\"strongly-connected-components\":306}],919:[function(t,e,r){\"use strict\";e.exports={nodeTextOffsetHorizontal:4,nodeTextOffsetVertical:3,nodePadAcross:10,sankeyIterations:50,forceIterations:5,forceTicksPerFrame:10,duration:500,ease:\"linear\",cn:{sankey:\"sankey\",sankeyLinks:\"sankey-links\",sankeyLink:\"sankey-link\",sankeyNodeSet:\"sankey-node-set\",sankeyNode:\"sankey-node\",nodeRect:\"node-rect\",nodeLabel:\"node-label\"}}},{}],920:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./attributes\"),a=t(\"../../components/color\"),o=t(\"tinycolor2\"),s=t(\"../../plots/domain\").defaults,l=t(\"../../components/fx/hoverlabel_defaults\"),c=t(\"../../plot_api/plot_template\"),u=t(\"../../plots/array_container_defaults\");function f(t,e){function r(r,a){return n.coerce(t,e,i.link.colorscales,r,a)}r(\"label\"),r(\"cmin\"),r(\"cmax\"),r(\"colorscale\")}e.exports=function(t,e,r,h){function p(r,a){return n.coerce(t,e,i,r,a)}var d=n.extendDeep(h.hoverlabel,t.hoverlabel),g=t.node,m=c.newContainer(e,\"node\");function v(t,e){return n.coerce(g,m,i.node,t,e)}v(\"label\"),v(\"groups\"),v(\"x\"),v(\"y\"),v(\"pad\"),v(\"thickness\"),v(\"line.color\"),v(\"line.width\"),v(\"hoverinfo\",t.hoverinfo),l(g,m,v,d),v(\"hovertemplate\");var y=h.colorway;v(\"color\",m.label.map((function(t,e){return a.addOpacity(function(t){return y[t%y.length]}(e),.8)}))),v(\"customdata\");var x=t.link||{},b=c.newContainer(e,\"link\");function _(t,e){return n.coerce(x,b,i.link,t,e)}_(\"label\"),_(\"source\"),_(\"target\"),_(\"value\"),_(\"line.color\"),_(\"line.width\"),_(\"hoverinfo\",t.hoverinfo),l(x,b,_,d),_(\"hovertemplate\");var w,T=o(h.paper_bgcolor).getLuminance()<.333?\"rgba(255, 255, 255, 0.6)\":\"rgba(0, 0, 0, 0.2)\";_(\"color\",n.repeat(T,b.value.length)),_(\"customdata\"),u(x,b,{name:\"colorscales\",handleItemDefaults:f}),s(e,h,p),p(\"orientation\"),p(\"valueformat\"),p(\"valuesuffix\"),m.x.length&&m.y.length&&(w=\"freeform\"),p(\"arrangement\",w),n.coerceFont(p,\"textfont\",n.extendFlat({},h.font)),e._length=null}},{\"../../components/color\":366,\"../../components/fx/hoverlabel_defaults\":404,\"../../lib\":503,\"../../plot_api/plot_template\":543,\"../../plots/array_container_defaults\":549,\"../../plots/domain\":584,\"./attributes\":916,tinycolor2:312}],921:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),calc:t(\"./calc\"),plot:t(\"./plot\"),moduleType:\"trace\",name:\"sankey\",basePlotModule:t(\"./base_plot\"),selectPoints:t(\"./select.js\"),categories:[\"noOpacity\"],meta:{}}},{\"./attributes\":916,\"./base_plot\":917,\"./calc\":918,\"./defaults\":920,\"./plot\":922,\"./select.js\":924}],922:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=i.numberFormat,o=t(\"./render\"),s=t(\"../../components/fx\"),l=t(\"../../components/color\"),c=t(\"./constants\").cn,u=i._;function f(t){return\"\"!==t}function h(t,e){return t.filter((function(t){return t.key===e.traceId}))}function p(t,e){n.select(t).select(\"path\").style(\"fill-opacity\",e),n.select(t).select(\"rect\").style(\"fill-opacity\",e)}function d(t){n.select(t).select(\"text.name\").style(\"fill\",\"black\")}function g(t){return function(e){return-1!==t.node.sourceLinks.indexOf(e.link)||-1!==t.node.targetLinks.indexOf(e.link)}}function m(t){return function(e){return-1!==e.node.sourceLinks.indexOf(t.link)||-1!==e.node.targetLinks.indexOf(t.link)}}function v(t,e,r){e&&r&&h(r,e).selectAll(\".\"+c.sankeyLink).filter(g(e)).call(x.bind(0,e,r,!1))}function y(t,e,r){e&&r&&h(r,e).selectAll(\".\"+c.sankeyLink).filter(g(e)).call(b.bind(0,e,r,!1))}function x(t,e,r,n){var i=n.datum().link.label;n.style(\"fill-opacity\",(function(t){if(!t.link.concentrationscale)return.4})),i&&h(e,t).selectAll(\".\"+c.sankeyLink).filter((function(t){return t.link.label===i})).style(\"fill-opacity\",(function(t){if(!t.link.concentrationscale)return.4})),r&&h(e,t).selectAll(\".\"+c.sankeyNode).filter(m(t)).call(v)}function b(t,e,r,n){var i=n.datum().link.label;n.style(\"fill-opacity\",(function(t){return t.tinyColorAlpha})),i&&h(e,t).selectAll(\".\"+c.sankeyLink).filter((function(t){return t.link.label===i})).style(\"fill-opacity\",(function(t){return t.tinyColorAlpha})),r&&h(e,t).selectAll(c.sankeyNode).filter(m(t)).call(y)}function _(t,e){var r=t.hoverlabel||{},n=i.nestedProperty(r,e).get();return!Array.isArray(n)&&n}e.exports=function(t,e){for(var r=t._fullLayout,i=r._paper,h=r._size,g=0;g\"),color:_(o,\"bgcolor\")||l.addOpacity(g.color,1),borderColor:_(o,\"bordercolor\"),fontFamily:_(o,\"font.family\"),fontSize:_(o,\"font.size\"),fontColor:_(o,\"font.color\"),nameLength:_(o,\"namelength\"),textAlign:_(o,\"align\"),idealAlign:n.event.x\"),color:_(o,\"bgcolor\")||i.tinyColorHue,borderColor:_(o,\"bordercolor\"),fontFamily:_(o,\"font.family\"),fontSize:_(o,\"font.size\"),fontColor:_(o,\"font.color\"),nameLength:_(o,\"namelength\"),textAlign:_(o,\"align\"),idealAlign:\"left\",hovertemplate:o.hovertemplate,hovertemplateLabels:y,eventData:[i.node]},{container:r._hoverlayer.node(),outerContainer:r._paper.node(),gd:t});p(w,.85),d(w)}}},unhover:function(e,i,a){!1!==t._fullLayout.hovermode&&(n.select(e).call(y,i,a),\"skip\"!==i.node.trace.node.hoverinfo&&(i.node.fullData=i.node.trace,t.emit(\"plotly_unhover\",{event:n.event,points:[i.node]})),s.loneUnhover(r._hoverlayer.node()))},select:function(e,r,i){var a=r.node;a.originalEvent=n.event,t._hoverdata=[a],n.select(e).call(y,r,i),s.click(t,{target:!0})}}})}},{\"../../components/color\":366,\"../../components/fx\":406,\"../../lib\":503,\"./constants\":919,\"./render\":923,\"@plotly/d3\":58}],923:[function(t,e,r){\"use strict\";var n=t(\"d3-force\"),i=t(\"d3-interpolate\").interpolateNumber,a=t(\"@plotly/d3\"),o=t(\"@plotly/d3-sankey\"),s=t(\"@plotly/d3-sankey-circular\"),l=t(\"./constants\"),c=t(\"tinycolor2\"),u=t(\"../../components/color\"),f=t(\"../../components/drawing\"),h=t(\"../../lib\"),p=h.strTranslate,d=h.strRotate,g=t(\"../../lib/gup\"),m=g.keyFun,v=g.repeat,y=g.unwrap,x=t(\"../../lib/svg_text_utils\"),b=t(\"../../registry\"),_=t(\"../../constants/alignment\"),w=_.CAP_SHIFT,T=_.LINE_SPACING;function k(t,e,r){var n,i=y(e),a=i.trace,u=a.domain,f=\"h\"===a.orientation,p=a.node.pad,d=a.node.thickness,g=t.width*(u.x[1]-u.x[0]),m=t.height*(u.y[1]-u.y[0]),v=i._nodes,x=i._links,b=i.circular;(n=b?s.sankeyCircular().circularLinkGap(0):o.sankey()).iterations(l.sankeyIterations).size(f?[g,m]:[m,g]).nodeWidth(d).nodePadding(p).nodeId((function(t){return t.pointNumber})).nodes(v).links(x);var _,w,T,k=n();for(var A in n.nodePadding()=i||(r=i-e.y0)>1e-6&&(e.y0+=r,e.y1+=r),i=e.y1+p}))}(function(t){var e,r,n=t.map((function(t,e){return{x0:t.x0,index:e}})).sort((function(t,e){return t.x0-e.x0})),i=[],a=-1,o=-1/0;for(_=0;_o+d&&(a+=1,e=s.x0),o=s.x0,i[a]||(i[a]=[]),i[a].push(s),r=e-s.x0,s.x0+=r,s.x1+=r}return i}(v=k.nodes));n.update(k)}return{circular:b,key:r,trace:a,guid:h.randstr(),horizontal:f,width:g,height:m,nodePad:a.node.pad,nodeLineColor:a.node.line.color,nodeLineWidth:a.node.line.width,linkLineColor:a.link.line.color,linkLineWidth:a.link.line.width,valueFormat:a.valueformat,valueSuffix:a.valuesuffix,textFont:a.textfont,translateX:u.x[0]*t.width+t.margin.l,translateY:t.height-u.y[1]*t.height+t.margin.t,dragParallel:f?m:g,dragPerpendicular:f?g:m,arrangement:a.arrangement,sankey:n,graph:k,forceLayouts:{},interactionState:{dragInProgress:!1,hovered:!1}}}function A(t,e,r){var n=c(e.color),i=e.source.label+\"|\"+e.target.label+\"__\"+r;return e.trace=t.trace,e.curveNumber=t.trace.index,{circular:t.circular,key:i,traceId:t.key,pointNumber:e.pointNumber,link:e,tinyColorHue:u.tinyRGB(n),tinyColorAlpha:n.getAlpha(),linkPath:M,linkLineColor:t.linkLineColor,linkLineWidth:t.linkLineWidth,valueFormat:t.valueFormat,valueSuffix:t.valueSuffix,sankey:t.sankey,parent:t,interactionState:t.interactionState,flow:e.flow}}function M(){return function(t){if(t.link.circular)return e=t.link,r=e.width/2,n=e.circularPathData,\"top\"===e.circularLinkType?\"M \"+n.targetX+\" \"+(n.targetY+r)+\" L\"+n.rightInnerExtent+\" \"+(n.targetY+r)+\"A\"+(n.rightLargeArcRadius+r)+\" \"+(n.rightSmallArcRadius+r)+\" 0 0 1 \"+(n.rightFullExtent-r)+\" \"+(n.targetY-n.rightSmallArcRadius)+\"L\"+(n.rightFullExtent-r)+\" \"+n.verticalRightInnerExtent+\"A\"+(n.rightLargeArcRadius+r)+\" \"+(n.rightLargeArcRadius+r)+\" 0 0 1 \"+n.rightInnerExtent+\" \"+(n.verticalFullExtent-r)+\"L\"+n.leftInnerExtent+\" \"+(n.verticalFullExtent-r)+\"A\"+(n.leftLargeArcRadius+r)+\" \"+(n.leftLargeArcRadius+r)+\" 0 0 1 \"+(n.leftFullExtent+r)+\" \"+n.verticalLeftInnerExtent+\"L\"+(n.leftFullExtent+r)+\" \"+(n.sourceY-n.leftSmallArcRadius)+\"A\"+(n.leftLargeArcRadius+r)+\" \"+(n.leftSmallArcRadius+r)+\" 0 0 1 \"+n.leftInnerExtent+\" \"+(n.sourceY+r)+\"L\"+n.sourceX+\" \"+(n.sourceY+r)+\"L\"+n.sourceX+\" \"+(n.sourceY-r)+\"L\"+n.leftInnerExtent+\" \"+(n.sourceY-r)+\"A\"+(n.leftLargeArcRadius-r)+\" \"+(n.leftSmallArcRadius-r)+\" 0 0 0 \"+(n.leftFullExtent-r)+\" \"+(n.sourceY-n.leftSmallArcRadius)+\"L\"+(n.leftFullExtent-r)+\" \"+n.verticalLeftInnerExtent+\"A\"+(n.leftLargeArcRadius-r)+\" \"+(n.leftLargeArcRadius-r)+\" 0 0 0 \"+n.leftInnerExtent+\" \"+(n.verticalFullExtent+r)+\"L\"+n.rightInnerExtent+\" \"+(n.verticalFullExtent+r)+\"A\"+(n.rightLargeArcRadius-r)+\" \"+(n.rightLargeArcRadius-r)+\" 0 0 0 \"+(n.rightFullExtent+r)+\" \"+n.verticalRightInnerExtent+\"L\"+(n.rightFullExtent+r)+\" \"+(n.targetY-n.rightSmallArcRadius)+\"A\"+(n.rightLargeArcRadius-r)+\" \"+(n.rightSmallArcRadius-r)+\" 0 0 0 \"+n.rightInnerExtent+\" \"+(n.targetY-r)+\"L\"+n.targetX+\" \"+(n.targetY-r)+\"Z\":\"M \"+n.targetX+\" \"+(n.targetY-r)+\" L\"+n.rightInnerExtent+\" \"+(n.targetY-r)+\"A\"+(n.rightLargeArcRadius+r)+\" \"+(n.rightSmallArcRadius+r)+\" 0 0 0 \"+(n.rightFullExtent-r)+\" \"+(n.targetY+n.rightSmallArcRadius)+\"L\"+(n.rightFullExtent-r)+\" \"+n.verticalRightInnerExtent+\"A\"+(n.rightLargeArcRadius+r)+\" \"+(n.rightLargeArcRadius+r)+\" 0 0 0 \"+n.rightInnerExtent+\" \"+(n.verticalFullExtent+r)+\"L\"+n.leftInnerExtent+\" \"+(n.verticalFullExtent+r)+\"A\"+(n.leftLargeArcRadius+r)+\" \"+(n.leftLargeArcRadius+r)+\" 0 0 0 \"+(n.leftFullExtent+r)+\" \"+n.verticalLeftInnerExtent+\"L\"+(n.leftFullExtent+r)+\" \"+(n.sourceY+n.leftSmallArcRadius)+\"A\"+(n.leftLargeArcRadius+r)+\" \"+(n.leftSmallArcRadius+r)+\" 0 0 0 \"+n.leftInnerExtent+\" \"+(n.sourceY-r)+\"L\"+n.sourceX+\" \"+(n.sourceY-r)+\"L\"+n.sourceX+\" \"+(n.sourceY+r)+\"L\"+n.leftInnerExtent+\" \"+(n.sourceY+r)+\"A\"+(n.leftLargeArcRadius-r)+\" \"+(n.leftSmallArcRadius-r)+\" 0 0 1 \"+(n.leftFullExtent-r)+\" \"+(n.sourceY+n.leftSmallArcRadius)+\"L\"+(n.leftFullExtent-r)+\" \"+n.verticalLeftInnerExtent+\"A\"+(n.leftLargeArcRadius-r)+\" \"+(n.leftLargeArcRadius-r)+\" 0 0 1 \"+n.leftInnerExtent+\" \"+(n.verticalFullExtent-r)+\"L\"+n.rightInnerExtent+\" \"+(n.verticalFullExtent-r)+\"A\"+(n.rightLargeArcRadius-r)+\" \"+(n.rightLargeArcRadius-r)+\" 0 0 1 \"+(n.rightFullExtent+r)+\" \"+n.verticalRightInnerExtent+\"L\"+(n.rightFullExtent+r)+\" \"+(n.targetY+n.rightSmallArcRadius)+\"A\"+(n.rightLargeArcRadius-r)+\" \"+(n.rightSmallArcRadius-r)+\" 0 0 1 \"+n.rightInnerExtent+\" \"+(n.targetY+r)+\"L\"+n.targetX+\" \"+(n.targetY+r)+\"Z\";var e,r,n,a=t.link.source.x1,o=t.link.target.x0,s=i(a,o),l=s(.5),c=s(.5),u=t.link.y0-t.link.width/2,f=t.link.y0+t.link.width/2,h=t.link.y1-t.link.width/2,p=t.link.y1+t.link.width/2;return\"M\"+a+\",\"+u+\"C\"+l+\",\"+u+\" \"+c+\",\"+h+\" \"+o+\",\"+h+\"L\"+o+\",\"+p+\"C\"+c+\",\"+p+\" \"+l+\",\"+f+\" \"+a+\",\"+f+\"Z\"}}function S(t,e){var r=c(e.color),n=l.nodePadAcross,i=t.nodePad/2;e.dx=e.x1-e.x0,e.dy=e.y1-e.y0;var a=e.dx,o=Math.max(.5,e.dy),s=\"node_\"+e.pointNumber;return e.group&&(s=h.randstr()),e.trace=t.trace,e.curveNumber=t.trace.index,{index:e.pointNumber,key:s,partOfGroup:e.partOfGroup||!1,group:e.group,traceId:t.key,trace:t.trace,node:e,nodePad:t.nodePad,nodeLineColor:t.nodeLineColor,nodeLineWidth:t.nodeLineWidth,textFont:t.textFont,size:t.horizontal?t.height:t.width,visibleWidth:Math.ceil(a),visibleHeight:o,zoneX:-n,zoneY:-i,zoneWidth:a+2*n,zoneHeight:o+2*i,labelY:t.horizontal?e.dy/2+1:e.dx/2+1,left:1===e.originalLayer,sizeAcross:t.width,forceLayouts:t.forceLayouts,horizontal:t.horizontal,darkBackground:r.getBrightness()<=128,tinyColorHue:u.tinyRGB(r),tinyColorAlpha:r.getAlpha(),valueFormat:t.valueFormat,valueSuffix:t.valueSuffix,sankey:t.sankey,graph:t.graph,arrangement:t.arrangement,uniqueNodeLabelPathId:[t.guid,t.key,s].join(\"_\"),interactionState:t.interactionState,figure:t}}function E(t){t.attr(\"transform\",(function(t){return p(t.node.x0.toFixed(3),t.node.y0.toFixed(3))}))}function L(t){t.call(E)}function C(t,e){t.call(L),e.attr(\"d\",M())}function P(t){t.attr(\"width\",(function(t){return t.node.x1-t.node.x0})).attr(\"height\",(function(t){return t.visibleHeight}))}function I(t){return t.link.width>1||t.linkLineWidth>0}function O(t){return p(t.translateX,t.translateY)+(t.horizontal?\"matrix(1 0 0 1 0 0)\":\"matrix(0 1 1 0 0 0)\")}function z(t,e,r){t.on(\".basic\",null).on(\"mouseover.basic\",(function(t){t.interactionState.dragInProgress||t.partOfGroup||(r.hover(this,t,e),t.interactionState.hovered=[this,t])})).on(\"mousemove.basic\",(function(t){t.interactionState.dragInProgress||t.partOfGroup||(r.follow(this,t),t.interactionState.hovered=[this,t])})).on(\"mouseout.basic\",(function(t){t.interactionState.dragInProgress||t.partOfGroup||(r.unhover(this,t,e),t.interactionState.hovered=!1)})).on(\"click.basic\",(function(t){t.interactionState.hovered&&(r.unhover(this,t,e),t.interactionState.hovered=!1),t.interactionState.dragInProgress||t.partOfGroup||r.select(this,t,e)}))}function D(t,e,r,i){var o=a.behavior.drag().origin((function(t){return{x:t.node.x0+t.visibleWidth/2,y:t.node.y0+t.visibleHeight/2}})).on(\"dragstart\",(function(a){if(\"fixed\"!==a.arrangement&&(h.ensureSingle(i._fullLayout._infolayer,\"g\",\"dragcover\",(function(t){i._fullLayout._dragCover=t})),h.raiseToTop(this),a.interactionState.dragInProgress=a.node,F(a.node),a.interactionState.hovered&&(r.nodeEvents.unhover.apply(0,a.interactionState.hovered),a.interactionState.hovered=!1),\"snap\"===a.arrangement)){var o=a.traceId+\"|\"+a.key;a.forceLayouts[o]?a.forceLayouts[o].alpha(1):function(t,e,r,i){!function(t){for(var e=0;e0&&n.forceLayouts[e].alpha(0)}}(0,e,a,r)).stop()}(0,o,a),function(t,e,r,n,i){window.requestAnimationFrame((function a(){var o;for(o=0;o0)window.requestAnimationFrame(a);else{var s=r.node.originalX;r.node.x0=s-r.visibleWidth/2,r.node.x1=s+r.visibleWidth/2,R(r,i)}}))}(t,e,a,o,i)}})).on(\"drag\",(function(r){if(\"fixed\"!==r.arrangement){var n=a.event.x,i=a.event.y;\"snap\"===r.arrangement?(r.node.x0=n-r.visibleWidth/2,r.node.x1=n+r.visibleWidth/2,r.node.y0=i-r.visibleHeight/2,r.node.y1=i+r.visibleHeight/2):(\"freeform\"===r.arrangement&&(r.node.x0=n-r.visibleWidth/2,r.node.x1=n+r.visibleWidth/2),i=Math.max(0,Math.min(r.size-r.visibleHeight/2,i)),r.node.y0=i-r.visibleHeight/2,r.node.y1=i+r.visibleHeight/2),F(r.node),\"snap\"!==r.arrangement&&(r.sankey.update(r.graph),C(t.filter(B(r)),e))}})).on(\"dragend\",(function(t){if(\"fixed\"!==t.arrangement){t.interactionState.dragInProgress=!1;for(var e=0;el&&C[v].gap;)v--;for(x=C[v].s,g=C.length-1;g>v;g--)C[g].s=x;for(;lM[u]&&u=0;i--){var a=t[i];if(\"scatter\"===a.type&&a.xaxis===r.xaxis&&a.yaxis===r.yaxis){a.opacity=void 0;break}}}}}},{}],933:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../registry\"),a=t(\"./attributes\"),o=t(\"./constants\"),s=t(\"./subtypes\"),l=t(\"./xy_defaults\"),c=t(\"./period_defaults\"),u=t(\"./stack_defaults\"),f=t(\"./marker_defaults\"),h=t(\"./line_defaults\"),p=t(\"./line_shape_defaults\"),d=t(\"./text_defaults\"),g=t(\"./fillcolor_defaults\");e.exports=function(t,e,r,m){function v(r,i){return n.coerce(t,e,a,r,i)}var y=l(t,e,m,v);if(y||(e.visible=!1),e.visible){c(t,e,m,v),v(\"xhoverformat\"),v(\"yhoverformat\");var x=u(t,e,m,v),b=!x&&y=Math.min(e,r)&&d<=Math.max(e,r)?0:1/0}var n=Math.max(3,t.mrc||0),i=1-1/n,a=Math.abs(h.c2p(t.x)-d);return a=Math.min(e,r)&&g<=Math.max(e,r)?0:1/0}var n=Math.max(3,t.mrc||0),i=1-1/n,a=Math.abs(p.c2p(t.y)-g);return aW!=(N=z[I][1])>=W&&(R=z[I-1][0],F=z[I][0],N-B&&(D=R+(F-R)*(W-B)/(N-B),H=Math.min(H,D),q=Math.max(q,D)));H=Math.max(H,0),q=Math.min(q,h._length);var X=s.defaultLine;return s.opacity(f.fillcolor)?X=f.fillcolor:s.opacity((f.line||{}).color)&&(X=f.line.color),n.extendFlat(t,{distance:t.maxHoverDistance,x0:H,x1:q,y0:W,y1:W,color:X,hovertemplate:!1}),delete t.index,f.text&&!Array.isArray(f.text)?t.text=String(f.text):t.text=f.name,[t]}}}},{\"../../components/color\":366,\"../../components/fx\":406,\"../../lib\":503,\"../../registry\":638,\"./get_trace_color\":936}],938:[function(t,e,r){\"use strict\";var n=t(\"./subtypes\");e.exports={hasLines:n.hasLines,hasMarkers:n.hasMarkers,hasText:n.hasText,isBubble:n.isBubble,attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),crossTraceDefaults:t(\"./cross_trace_defaults\"),calc:t(\"./calc\").calc,crossTraceCalc:t(\"./cross_trace_calc\"),arraysToCalcdata:t(\"./arrays_to_calcdata\"),plot:t(\"./plot\"),colorbar:t(\"./marker_colorbar\"),formatLabels:t(\"./format_labels\"),style:t(\"./style\").style,styleOnSelect:t(\"./style\").styleOnSelect,hoverPoints:t(\"./hover\"),selectPoints:t(\"./select\"),animatable:!0,moduleType:\"trace\",name:\"scatter\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"cartesian\",\"svg\",\"symbols\",\"errorBarsOK\",\"showLegend\",\"scatter-like\",\"zoomScale\"],meta:{}}},{\"../../plots/cartesian\":568,\"./arrays_to_calcdata\":925,\"./attributes\":926,\"./calc\":927,\"./cross_trace_calc\":931,\"./cross_trace_defaults\":932,\"./defaults\":933,\"./format_labels\":935,\"./hover\":937,\"./marker_colorbar\":944,\"./plot\":947,\"./select\":948,\"./style\":950,\"./subtypes\":951}],939:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").isArrayOrTypedArray,i=t(\"../../components/colorscale/helpers\").hasColorscale,a=t(\"../../components/colorscale/defaults\");e.exports=function(t,e,r,o,s,l){var c=(t.marker||{}).color;(s(\"line.color\",r),i(t,\"line\"))?a(t,e,o,s,{prefix:\"line.\",cLetter:\"c\"}):s(\"line.color\",!n(c)&&c||r);s(\"line.width\"),(l||{}).noDash||s(\"line.dash\")}},{\"../../components/colorscale/defaults\":376,\"../../components/colorscale/helpers\":377,\"../../lib\":503}],940:[function(t,e,r){\"use strict\";var n=t(\"../../constants/numerical\"),i=n.BADNUM,a=n.LOG_CLIP,o=a+.5,s=a-.5,l=t(\"../../lib\"),c=l.segmentsIntersect,u=l.constrain,f=t(\"./constants\");e.exports=function(t,e){var r,n,a,h,p,d,g,m,v,y,x,b,_,w,T,k,A,M,S=e.xaxis,E=e.yaxis,L=\"log\"===S.type,C=\"log\"===E.type,P=S._length,I=E._length,O=e.connectGaps,z=e.baseTolerance,D=e.shape,R=\"linear\"===D,F=e.fill&&\"none\"!==e.fill,B=[],N=f.minTolerance,j=t.length,U=new Array(j),V=0;function H(r){var n=t[r];if(!n)return!1;var a=e.linearized?S.l2p(n.x):S.c2p(n.x),l=e.linearized?E.l2p(n.y):E.c2p(n.y);if(a===i){if(L&&(a=S.c2p(n.x,!0)),a===i)return!1;C&&l===i&&(a*=Math.abs(S._m*I*(S._m>0?o:s)/(E._m*P*(E._m>0?o:s)))),a*=1e3}if(l===i){if(C&&(l=E.c2p(n.y,!0)),l===i)return!1;l*=1e3}return[a,l]}function q(t,e,r,n){var i=r-t,a=n-e,o=.5-t,s=.5-e,l=i*i+a*a,c=i*o+a*s;if(c>0&&crt||t[1]it)return[u(t[0],et,rt),u(t[1],nt,it)]}function st(t,e){return t[0]===e[0]&&(t[0]===et||t[0]===rt)||(t[1]===e[1]&&(t[1]===nt||t[1]===it)||void 0)}function lt(t,e,r){return function(n,i){var a=ot(n),o=ot(i),s=[];if(a&&o&&st(a,o))return s;a&&s.push(a),o&&s.push(o);var c=2*l.constrain((n[t]+i[t])/2,e,r)-((a||n)[t]+(o||i)[t]);c&&((a&&o?c>0==a[t]>o[t]?a:o:a||o)[t]+=c);return s}}function ct(t){var e=t[0],r=t[1],n=e===U[V-1][0],i=r===U[V-1][1];if(!n||!i)if(V>1){var a=e===U[V-2][0],o=r===U[V-2][1];n&&(e===et||e===rt)&&a?o?V--:U[V-1]=t:i&&(r===nt||r===it)&&o?a?V--:U[V-1]=t:U[V++]=t}else U[V++]=t}function ut(t){U[V-1][0]!==t[0]&&U[V-1][1]!==t[1]&&ct([Z,J]),ct(t),K=null,Z=J=0}function ft(t){if(A=t[0]/P,M=t[1]/I,W=t[0]rt?rt:0,X=t[1]it?it:0,W||X){if(V)if(K){var e=$(K,t);e.length>1&&(ut(e[0]),U[V++]=e[1])}else Q=$(U[V-1],t)[0],U[V++]=Q;else U[V++]=[W||t[0],X||t[1]];var r=U[V-1];W&&X&&(r[0]!==W||r[1]!==X)?(K&&(Z!==W&&J!==X?ct(Z&&J?(n=K,a=(i=t)[0]-n[0],o=(i[1]-n[1])/a,(n[1]*i[0]-i[1]*n[0])/a>0?[o>0?et:rt,it]:[o>0?rt:et,nt]):[Z||W,J||X]):Z&&J&&ct([Z,J])),ct([W,X])):Z-W&&J-X&&ct([W||Z,X||J]),K=t,Z=W,J=X}else K&&ut($(K,t)[0]),U[V++]=t;var n,i,a,o}for(\"linear\"===D||\"spline\"===D?$=function(t,e){for(var r=[],n=0,i=0;i<4;i++){var a=at[i],o=c(t[0],t[1],e[0],e[1],a[0],a[1],a[2],a[3]);o&&(!n||Math.abs(o.x-r[0][0])>1||Math.abs(o.y-r[0][1])>1)&&(o=[o.x,o.y],n&&Y(o,t)G(d,ht))break;a=d,(_=v[0]*m[0]+v[1]*m[1])>x?(x=_,h=d,g=!1):_=t.length||!d)break;ft(d),n=d}}else ft(h)}K&&ct([Z||K[0],J||K[1]]),B.push(U.slice(0,V))}return B}},{\"../../constants/numerical\":479,\"../../lib\":503,\"./constants\":930}],941:[function(t,e,r){\"use strict\";e.exports=function(t,e,r){\"spline\"===r(\"line.shape\")&&r(\"line.smoothing\")}},{}],942:[function(t,e,r){\"use strict\";var n={tonextx:1,tonexty:1,tonext:1};e.exports=function(t,e,r){var i,a,o,s,l,c={},u=!1,f=-1,h=0,p=-1;for(a=0;a=0?l=p:(l=p=h,h++),l0?Math.max(r,a):0}}},{\"fast-isnumeric\":190}],944:[function(t,e,r){\"use strict\";e.exports={container:\"marker\",min:\"cmin\",max:\"cmax\"}},{}],945:[function(t,e,r){\"use strict\";var n=t(\"../../components/color\"),i=t(\"../../components/colorscale/helpers\").hasColorscale,a=t(\"../../components/colorscale/defaults\"),o=t(\"./subtypes\");e.exports=function(t,e,r,s,l,c){var u=o.isBubble(t),f=(t.line||{}).color;(c=c||{},f&&(r=f),l(\"marker.symbol\"),l(\"marker.opacity\",u?.7:1),l(\"marker.size\"),l(\"marker.color\",r),i(t,\"marker\")&&a(t,e,s,l,{prefix:\"marker.\",cLetter:\"c\"}),c.noSelect||(l(\"selected.marker.color\"),l(\"unselected.marker.color\"),l(\"selected.marker.size\"),l(\"unselected.marker.size\")),c.noLine||(l(\"marker.line.color\",f&&!Array.isArray(f)&&e.marker.color!==f?f:u?n.background:n.defaultLine),i(t,\"marker.line\")&&a(t,e,s,l,{prefix:\"marker.line.\",cLetter:\"c\"}),l(\"marker.line.width\",u?1:0)),u&&(l(\"marker.sizeref\"),l(\"marker.sizemin\"),l(\"marker.sizemode\")),c.gradient)&&(\"none\"!==l(\"marker.gradient.type\")&&l(\"marker.gradient.color\"))}},{\"../../components/color\":366,\"../../components/colorscale/defaults\":376,\"../../components/colorscale/helpers\":377,\"./subtypes\":951}],946:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").dateTick0,i=t(\"../../constants/numerical\").ONEWEEK;function a(t,e){return n(e,t%i==0?1:0)}e.exports=function(t,e,r,n,i){if(i||(i={x:!0,y:!0}),i.x){var o=n(\"xperiod\");o&&(n(\"xperiod0\",a(o,e.xcalendar)),n(\"xperiodalignment\"))}if(i.y){var s=n(\"yperiod\");s&&(n(\"yperiod0\",a(s,e.ycalendar)),n(\"yperiodalignment\"))}}},{\"../../constants/numerical\":479,\"../../lib\":503}],947:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../registry\"),a=t(\"../../lib\"),o=a.ensureSingle,s=a.identity,l=t(\"../../components/drawing\"),c=t(\"./subtypes\"),u=t(\"./line_points\"),f=t(\"./link_traces\"),h=t(\"../../lib/polygon\").tester;function p(t,e,r,f,p,d,g){var m;!function(t,e,r,i,o){var s=r.xaxis,l=r.yaxis,u=n.extent(a.simpleMap(s.range,s.r2c)),f=n.extent(a.simpleMap(l.range,l.r2c)),h=i[0].trace;if(!c.hasMarkers(h))return;var p=h.marker.maxdisplayed;if(0===p)return;var d=i.filter((function(t){return t.x>=u[0]&&t.x<=u[1]&&t.y>=f[0]&&t.y<=f[1]})),g=Math.ceil(d.length/p),m=0;o.forEach((function(t,r){var n=t[0].trace;c.hasMarkers(n)&&n.marker.maxdisplayed>0&&r0;function y(t){return v?t.transition():t}var x=r.xaxis,b=r.yaxis,_=f[0].trace,w=_.line,T=n.select(d),k=o(T,\"g\",\"errorbars\"),A=o(T,\"g\",\"lines\"),M=o(T,\"g\",\"points\"),S=o(T,\"g\",\"text\");if(i.getComponentMethod(\"errorbars\",\"plot\")(t,k,r,g),!0===_.visible){var E,L;y(T).style(\"opacity\",_.opacity);var C=_.fill.charAt(_.fill.length-1);\"x\"!==C&&\"y\"!==C&&(C=\"\"),f[0][r.isRangePlot?\"nodeRangePlot3\":\"node3\"]=T;var P,I,O=\"\",z=[],D=_._prevtrace;D&&(O=D._prevRevpath||\"\",L=D._nextFill,z=D._polygons);var R,F,B,N,j,U,V,H=\"\",q=\"\",G=[],Y=a.noop;if(E=_._ownFill,c.hasLines(_)||\"none\"!==_.fill){for(L&&L.datum(f),-1!==[\"hv\",\"vh\",\"hvh\",\"vhv\"].indexOf(w.shape)?(R=l.steps(w.shape),F=l.steps(w.shape.split(\"\").reverse().join(\"\"))):R=F=\"spline\"===w.shape?function(t){var e=t[t.length-1];return t.length>1&&t[0][0]===e[0]&&t[0][1]===e[1]?l.smoothclosed(t.slice(1),w.smoothing):l.smoothopen(t,w.smoothing)}:function(t){return\"M\"+t.join(\"L\")},B=function(t){return F(t.reverse())},G=u(f,{xaxis:x,yaxis:b,connectGaps:_.connectgaps,baseTolerance:Math.max(w.width||1,3)/4,shape:w.shape,simplify:w.simplify,fill:_.fill}),V=_._polygons=new Array(G.length),m=0;m1){var r=n.select(this);if(r.datum(f),t)y(r.style(\"opacity\",0).attr(\"d\",P).call(l.lineGroupStyle)).style(\"opacity\",1);else{var i=y(r);i.attr(\"d\",P),l.singleLineStyle(f,i)}}}}}var W=A.selectAll(\".js-line\").data(G);y(W.exit()).style(\"opacity\",0).remove(),W.each(Y(!1)),W.enter().append(\"path\").classed(\"js-line\",!0).style(\"vector-effect\",\"non-scaling-stroke\").call(l.lineGroupStyle).each(Y(!0)),l.setClipUrl(W,r.layerClipId,t),G.length?(E?(E.datum(f),N&&U&&(C?(\"y\"===C?N[1]=U[1]=b.c2p(0,!0):\"x\"===C&&(N[0]=U[0]=x.c2p(0,!0)),y(E).attr(\"d\",\"M\"+U+\"L\"+N+\"L\"+H.substr(1)).call(l.singleFillStyle)):y(E).attr(\"d\",H+\"Z\").call(l.singleFillStyle))):L&&(\"tonext\"===_.fill.substr(0,6)&&H&&O?(\"tonext\"===_.fill?y(L).attr(\"d\",H+\"Z\"+O+\"Z\").call(l.singleFillStyle):y(L).attr(\"d\",H+\"L\"+O.substr(1)+\"Z\").call(l.singleFillStyle),_._polygons=_._polygons.concat(z)):(Z(L),_._polygons=null)),_._prevRevpath=q,_._prevPolygons=V):(E?Z(E):L&&Z(L),_._polygons=_._prevRevpath=_._prevPolygons=null),M.datum(f),S.datum(f),function(e,i,a){var o,u=a[0].trace,f=c.hasMarkers(u),h=c.hasText(u),p=tt(u),d=et,g=et;if(f||h){var m=s,_=u.stackgroup,w=_&&\"infer zero\"===t._fullLayout._scatterStackOpts[x._id+b._id][_].stackgaps;u.marker.maxdisplayed||u._needsCull?m=w?K:J:_&&!w&&(m=Q),f&&(d=m),h&&(g=m)}var T,k=(o=e.selectAll(\"path.point\").data(d,p)).enter().append(\"path\").classed(\"point\",!0);v&&k.call(l.pointStyle,u,t).call(l.translatePoints,x,b).style(\"opacity\",0).transition().style(\"opacity\",1),o.order(),f&&(T=l.makePointStyleFns(u)),o.each((function(e){var i=n.select(this),a=y(i);l.translatePoint(e,a,x,b)?(l.singlePointStyle(e,a,u,T,t),r.layerClipId&&l.hideOutsideRangePoint(e,a,x,b,u.xcalendar,u.ycalendar),u.customdata&&i.classed(\"plotly-customdata\",null!==e.data&&void 0!==e.data)):a.remove()})),v?o.exit().transition().style(\"opacity\",0).remove():o.exit().remove(),(o=i.selectAll(\"g\").data(g,p)).enter().append(\"g\").classed(\"textpoint\",!0).append(\"text\"),o.order(),o.each((function(t){var e=n.select(this),i=y(e.select(\"text\"));l.translatePoint(t,i,x,b)?r.layerClipId&&l.hideOutsideRangePoint(t,e,x,b,u.xcalendar,u.ycalendar):e.remove()})),o.selectAll(\"text\").call(l.textPointStyle,u,t).each((function(t){var e=x.c2p(t.x),r=b.c2p(t.y);n.select(this).selectAll(\"tspan.line\").each((function(){y(n.select(this)).attr({x:e,y:r})}))})),o.exit().remove()}(M,S,f);var X=!1===_.cliponaxis?null:r.layerClipId;l.setClipUrl(M,X,t),l.setClipUrl(S,X,t)}function Z(t){y(t).attr(\"d\",\"M0,0Z\")}function J(t){return t.filter((function(t){return!t.gap&&t.vis}))}function K(t){return t.filter((function(t){return t.vis}))}function Q(t){return t.filter((function(t){return!t.gap}))}function $(t){return t.id}function tt(t){if(t.ids)return $}function et(){return!1}}e.exports=function(t,e,r,i,a,c){var u,h,d=!a,g=!!a&&a.duration>0,m=f(t,e,r);((u=i.selectAll(\"g.trace\").data(m,(function(t){return t[0].trace.uid}))).enter().append(\"g\").attr(\"class\",(function(t){return\"trace scatter trace\"+t[0].trace.uid})).style(\"stroke-miterlimit\",2),u.order(),function(t,e,r){e.each((function(e){var i=o(n.select(this),\"g\",\"fills\");l.setClipUrl(i,r.layerClipId,t);var a=e[0].trace,c=[];a._ownfill&&c.push(\"_ownFill\"),a._nexttrace&&c.push(\"_nextFill\");var u=i.selectAll(\"g\").data(c,s);u.enter().append(\"g\"),u.exit().each((function(t){a[t]=null})).remove(),u.order().each((function(t){a[t]=o(n.select(this),\"path\",\"js-fill\")}))}))}(t,u,e),g)?(c&&(h=c()),n.transition().duration(a.duration).ease(a.easing).each(\"end\",(function(){h&&h()})).each(\"interrupt\",(function(){h&&h()})).each((function(){i.selectAll(\"g.trace\").each((function(r,n){p(t,n,e,r,m,this,a)}))}))):u.each((function(r,n){p(t,n,e,r,m,this,a)}));d&&u.exit().remove(),i.selectAll(\"path:not([d])\").remove()}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/polygon\":515,\"../../registry\":638,\"./line_points\":940,\"./link_traces\":942,\"./subtypes\":951,\"@plotly/d3\":58}],948:[function(t,e,r){\"use strict\";var n=t(\"./subtypes\");e.exports=function(t,e){var r,i,a,o,s=t.cd,l=t.xaxis,c=t.yaxis,u=[],f=s[0].trace;if(!n.hasMarkers(f)&&!n.hasText(f))return[];if(!1===e)for(r=0;r0){var h=i.c2l(u);i._lowerLogErrorBound||(i._lowerLogErrorBound=h),i._lowerErrorBound=Math.min(i._lowerLogErrorBound,h)}}else o[s]=[-l[0]*r,l[1]*r]}return o}e.exports=function(t,e,r){var n=[i(t.x,t.error_x,e[0],r.xaxis),i(t.y,t.error_y,e[1],r.yaxis),i(t.z,t.error_z,e[2],r.zaxis)],a=function(t){for(var e=0;e-1?-1:t.indexOf(\"right\")>-1?1:0}function b(t){return null==t?0:t.indexOf(\"top\")>-1?-1:t.indexOf(\"bottom\")>-1?1:0}function _(t,e){return e(4*t)}function w(t){return p[t]}function T(t,e,r,n,i){var a=null;if(l.isArrayOrTypedArray(t)){a=[];for(var o=0;o=0){var g=function(t,e,r){var n,i=(r+1)%3,a=(r+2)%3,o=[],l=[];for(n=0;n=0&&f(\"surfacecolor\",h||p);for(var d=[\"x\",\"y\",\"z\"],g=0;g<3;++g){var m=\"projection.\"+d[g];f(m+\".show\")&&(f(m+\".opacity\"),f(m+\".scale\"))}var v=n.getComponentMethod(\"errorbars\",\"supplyDefaults\");v(t,e,h||p||r,{axis:\"z\"}),v(t,e,h||p||r,{axis:\"y\",inherit:\"z\"}),v(t,e,h||p||r,{axis:\"x\",inherit:\"z\"})}else e.visible=!1}},{\"../../lib\":503,\"../../registry\":638,\"../scatter/line_defaults\":939,\"../scatter/marker_defaults\":945,\"../scatter/subtypes\":951,\"../scatter/text_defaults\":952,\"./attributes\":954}],959:[function(t,e,r){\"use strict\";e.exports={plot:t(\"./convert\"),attributes:t(\"./attributes\"),markerSymbols:t(\"../../constants/gl3d_markers\"),supplyDefaults:t(\"./defaults\"),colorbar:[{container:\"marker\",min:\"cmin\",max:\"cmax\"},{container:\"line\",min:\"cmin\",max:\"cmax\"}],calc:t(\"./calc\"),moduleType:\"trace\",name:\"scatter3d\",basePlotModule:t(\"../../plots/gl3d\"),categories:[\"gl3d\",\"symbols\",\"showLegend\",\"scatter-like\"],meta:{}}},{\"../../constants/gl3d_markers\":477,\"../../plots/gl3d\":598,\"./attributes\":954,\"./calc\":955,\"./convert\":957,\"./defaults\":958}],960:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\"),i=t(\"../../plots/attributes\"),a=t(\"../../plots/template_attributes\").hovertemplateAttrs,o=t(\"../../plots/template_attributes\").texttemplateAttrs,s=t(\"../../components/colorscale/attributes\"),l=t(\"../../lib/extend\").extendFlat,c=n.marker,u=n.line,f=c.line;e.exports={carpet:{valType:\"string\",editType:\"calc\"},a:{valType:\"data_array\",editType:\"calc\"},b:{valType:\"data_array\",editType:\"calc\"},mode:l({},n.mode,{dflt:\"markers\"}),text:l({},n.text,{}),texttemplate:o({editType:\"plot\"},{keys:[\"a\",\"b\",\"text\"]}),hovertext:l({},n.hovertext,{}),line:{color:u.color,width:u.width,dash:u.dash,shape:l({},u.shape,{values:[\"linear\",\"spline\"]}),smoothing:u.smoothing,editType:\"calc\"},connectgaps:n.connectgaps,fill:l({},n.fill,{values:[\"none\",\"toself\",\"tonext\"],dflt:\"none\"}),fillcolor:n.fillcolor,marker:l({symbol:c.symbol,opacity:c.opacity,maxdisplayed:c.maxdisplayed,size:c.size,sizeref:c.sizeref,sizemin:c.sizemin,sizemode:c.sizemode,line:l({width:f.width,editType:\"calc\"},s(\"marker.line\")),gradient:c.gradient,editType:\"calc\"},s(\"marker\")),textfont:n.textfont,textposition:n.textposition,selected:n.selected,unselected:n.unselected,hoverinfo:l({},i.hoverinfo,{flags:[\"a\",\"b\",\"text\",\"name\"]}),hoveron:n.hoveron,hovertemplate:a()}},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/template_attributes\":633,\"../scatter/attributes\":926}],961:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../scatter/colorscale_calc\"),a=t(\"../scatter/arrays_to_calcdata\"),o=t(\"../scatter/calc_selection\"),s=t(\"../scatter/calc\").calcMarkerSize,l=t(\"../carpet/lookup_carpetid\");e.exports=function(t,e){var r=e._carpetTrace=l(t,e);if(r&&r.visible&&\"legendonly\"!==r.visible){var c;e.xaxis=r.xaxis,e.yaxis=r.yaxis;var u,f,h=e._length,p=new Array(h),d=!1;for(c=0;c\")}return o}function y(t,e){var r;r=t.labelprefix&&t.labelprefix.length>0?t.labelprefix.replace(/ = $/,\"\"):t._hovertitle,m.push(r+\": \"+e.toFixed(3)+t.labelsuffix)}}},{\"../../lib\":503,\"../scatter/hover\":937}],966:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"./format_labels\"),calc:t(\"./calc\"),plot:t(\"./plot\"),style:t(\"../scatter/style\").style,styleOnSelect:t(\"../scatter/style\").styleOnSelect,hoverPoints:t(\"./hover\"),selectPoints:t(\"../scatter/select\"),eventData:t(\"./event_data\"),moduleType:\"trace\",name:\"scattercarpet\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"svg\",\"carpet\",\"symbols\",\"showLegend\",\"carpetDependent\",\"zoomScale\"],meta:{}}},{\"../../plots/cartesian\":568,\"../scatter/marker_colorbar\":944,\"../scatter/select\":948,\"../scatter/style\":950,\"./attributes\":960,\"./calc\":961,\"./defaults\":962,\"./event_data\":963,\"./format_labels\":964,\"./hover\":965,\"./plot\":967}],967:[function(t,e,r){\"use strict\";var n=t(\"../scatter/plot\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"../../components/drawing\");e.exports=function(t,e,r,o){var s,l,c,u=r[0][0].carpet,f={xaxis:i.getFromId(t,u.xaxis||\"x\"),yaxis:i.getFromId(t,u.yaxis||\"y\"),plot:e.plot};for(n(t,f,r,o),s=0;s\")}(c,g,t,l[0].t.labels),t.hovertemplate=c.hovertemplate,[t]}}},{\"../../components/fx\":406,\"../../constants/numerical\":479,\"../../lib\":503,\"../scatter/get_trace_color\":936,\"./attributes\":968}],974:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"./format_labels\"),calc:t(\"./calc\"),calcGeoJSON:t(\"./plot\").calcGeoJSON,plot:t(\"./plot\").plot,style:t(\"./style\"),styleOnSelect:t(\"../scatter/style\").styleOnSelect,hoverPoints:t(\"./hover\"),eventData:t(\"./event_data\"),selectPoints:t(\"./select\"),moduleType:\"trace\",name:\"scattergeo\",basePlotModule:t(\"../../plots/geo\"),categories:[\"geo\",\"symbols\",\"showLegend\",\"scatter-like\"],meta:{}}},{\"../../plots/geo\":589,\"../scatter/marker_colorbar\":944,\"../scatter/style\":950,\"./attributes\":968,\"./calc\":969,\"./defaults\":970,\"./event_data\":971,\"./format_labels\":972,\"./hover\":973,\"./plot\":975,\"./select\":976,\"./style\":977}],975:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../lib/topojson_utils\").getTopojsonFeatures,o=t(\"../../lib/geojson_utils\"),s=t(\"../../lib/geo_location_utils\"),l=t(\"../../plots/cartesian/autorange\").findExtremes,c=t(\"../../constants/numerical\").BADNUM,u=t(\"../scatter/calc\").calcMarkerSize,f=t(\"../scatter/subtypes\"),h=t(\"./style\");e.exports={calcGeoJSON:function(t,e){var r,n,i=t[0].trace,o=e[i.geo],f=o._subplot,h=i._length;if(Array.isArray(i.locations)){var p=i.locationmode,d=\"geojson-id\"===p?s.extractTraceFeature(t):a(i,f.topojson);for(r=0;r=m,w=2*b,T={},k=l.makeCalcdata(e,\"x\"),A=y.makeCalcdata(e,\"y\"),M=s(e,l,\"x\",k),S=s(e,y,\"y\",A),E=M.vals,L=S.vals;e._x=E,e._y=L,e.xperiodalignment&&(e._origX=k,e._xStarts=M.starts,e._xEnds=M.ends),e.yperiodalignment&&(e._origY=A,e._yStarts=S.starts,e._yEnds=S.ends);var C=new Array(w),P=new Array(b);for(r=0;r1&&i.extendFlat(s.line,p.linePositions(t,r,n));if(s.errorX||s.errorY){var l=p.errorBarPositions(t,r,n,a,o);s.errorX&&i.extendFlat(s.errorX,l.x),s.errorY&&i.extendFlat(s.errorY,l.y)}s.text&&(i.extendFlat(s.text,{positions:n},p.textPosition(t,r,s.text,s.marker)),i.extendFlat(s.textSel,{positions:n},p.textPosition(t,r,s.text,s.markerSel)),i.extendFlat(s.textUnsel,{positions:n},p.textPosition(t,r,s.text,s.markerUnsel)));return s}(t,0,e,C,E,L),z=d(t,x);return f(o,e),_?O.marker&&(I=O.marker.sizeAvg||Math.max(O.marker.size,3)):I=c(e,b),u(t,e,l,y,E,L,I),O.errorX&&v(e,l,O.errorX),O.errorY&&v(e,y,O.errorY),O.fill&&!z.fill2d&&(z.fill2d=!0),O.marker&&!z.scatter2d&&(z.scatter2d=!0),O.line&&!z.line2d&&(z.line2d=!0),!O.errorX&&!O.errorY||z.error2d||(z.error2d=!0),O.text&&!z.glText&&(z.glText=!0),O.marker&&(O.marker.snap=b),z.lineOptions.push(O.line),z.errorXOptions.push(O.errorX),z.errorYOptions.push(O.errorY),z.fillOptions.push(O.fill),z.markerOptions.push(O.marker),z.markerSelectedOptions.push(O.markerSel),z.markerUnselectedOptions.push(O.markerUnsel),z.textOptions.push(O.text),z.textSelectedOptions.push(O.textSel),z.textUnselectedOptions.push(O.textUnsel),z.selectBatch.push([]),z.unselectBatch.push([]),T._scene=z,T.index=z.count,T.x=E,T.y=L,T.positions=C,z.count++,[{x:!1,y:!1,t:T,trace:e}]}},{\"../../constants/numerical\":479,\"../../lib\":503,\"../../plots/cartesian/align_period\":551,\"../../plots/cartesian/autorange\":553,\"../../plots/cartesian/axis_ids\":558,\"../scatter/calc\":927,\"../scatter/colorscale_calc\":929,\"./constants\":980,\"./convert\":981,\"./scene_update\":989,\"@plotly/point-cluster\":59}],980:[function(t,e,r){\"use strict\";e.exports={TOO_MANY_POINTS:1e5,SYMBOL_SDF_SIZE:200,SYMBOL_SIZE:20,SYMBOL_STROKE:1,DOT_RE:/-dot/,OPEN_RE:/-open/,DASHES:{solid:[1],dot:[1,1],dash:[4,1],longdash:[8,1],dashdot:[4,1,1,1],longdashdot:[8,1,1,1]}}},{}],981:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"svg-path-sdf\"),a=t(\"color-normalize\"),o=t(\"../../registry\"),s=t(\"../../lib\"),l=t(\"../../components/drawing\"),c=t(\"../../plots/cartesian/axis_ids\"),u=t(\"../../lib/gl_format_color\").formatColor,f=t(\"../scatter/subtypes\"),h=t(\"../scatter/make_bubble_size_func\"),p=t(\"./helpers\"),d=t(\"./constants\"),g=t(\"../../constants/interactions\").DESELECTDIM,m={start:1,left:1,end:-1,right:-1,middle:0,center:0,bottom:1,top:-1},v=t(\"../../components/fx/helpers\").appendArrayPointValue;function y(t,e){var r,i=t._fullLayout,a=e._length,o=e.textfont,l=e.textposition,c=Array.isArray(l)?l:[l],u=o.color,f=o.size,h=o.family,p={},d=t._context.plotGlPixelRatio,g=e.texttemplate;if(g){p.text=[];var m=i._d3locale,y=Array.isArray(g),x=y?Math.min(g.length,a):a,b=y?function(t){return g[t]}:function(){return g};for(r=0;rd.TOO_MANY_POINTS||f.hasMarkers(e)?\"rect\":\"round\";if(c&&e.connectgaps){var h=n[0],p=n[1];for(i=0;i1?l[i]:l[0]:l,d=Array.isArray(c)?c.length>1?c[i]:c[0]:c,g=m[p],v=m[d],y=u?u/.8+1:0,x=-v*y-.5*v;o.offset[i]=[g*y/h,x/h]}}return o}}},{\"../../components/drawing\":388,\"../../components/fx/helpers\":402,\"../../constants/interactions\":478,\"../../lib\":503,\"../../lib/gl_format_color\":499,\"../../plots/cartesian/axis_ids\":558,\"../../registry\":638,\"../scatter/make_bubble_size_func\":943,\"../scatter/subtypes\":951,\"./constants\":980,\"./helpers\":985,\"color-normalize\":89,\"fast-isnumeric\":190,\"svg-path-sdf\":310}],982:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../registry\"),a=t(\"./helpers\"),o=t(\"./attributes\"),s=t(\"../scatter/constants\"),l=t(\"../scatter/subtypes\"),c=t(\"../scatter/xy_defaults\"),u=t(\"../scatter/period_defaults\"),f=t(\"../scatter/marker_defaults\"),h=t(\"../scatter/line_defaults\"),p=t(\"../scatter/fillcolor_defaults\"),d=t(\"../scatter/text_defaults\");e.exports=function(t,e,r,g){function m(r,i){return n.coerce(t,e,o,r,i)}var v=!!t.marker&&a.isOpenSymbol(t.marker.symbol),y=l.isBubble(t),x=c(t,e,g,m);if(x){u(t,e,g,m),m(\"xhoverformat\"),m(\"yhoverformat\");var b=x100},r.isDotSymbol=function(t){return\"string\"==typeof t?n.DOT_RE.test(t):t>200}},{\"./constants\":980}],986:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\"),a=t(\"../scatter/get_trace_color\");function o(t,e,r,o){var s=t.xa,l=t.ya,c=t.distance,u=t.dxy,f=t.index,h={pointNumber:f,x:e[f],y:r[f]};h.tx=Array.isArray(o.text)?o.text[f]:o.text,h.htx=Array.isArray(o.hovertext)?o.hovertext[f]:o.hovertext,h.data=Array.isArray(o.customdata)?o.customdata[f]:o.customdata,h.tp=Array.isArray(o.textposition)?o.textposition[f]:o.textposition;var p=o.textfont;p&&(h.ts=i.isArrayOrTypedArray(p.size)?p.size[f]:p.size,h.tc=Array.isArray(p.color)?p.color[f]:p.color,h.tf=Array.isArray(p.family)?p.family[f]:p.family);var d=o.marker;d&&(h.ms=i.isArrayOrTypedArray(d.size)?d.size[f]:d.size,h.mo=i.isArrayOrTypedArray(d.opacity)?d.opacity[f]:d.opacity,h.mx=i.isArrayOrTypedArray(d.symbol)?d.symbol[f]:d.symbol,h.mc=i.isArrayOrTypedArray(d.color)?d.color[f]:d.color);var g=d&&d.line;g&&(h.mlc=Array.isArray(g.color)?g.color[f]:g.color,h.mlw=i.isArrayOrTypedArray(g.width)?g.width[f]:g.width);var m=d&&d.gradient;m&&\"none\"!==m.type&&(h.mgt=Array.isArray(m.type)?m.type[f]:m.type,h.mgc=Array.isArray(m.color)?m.color[f]:m.color);var v=s.c2p(h.x,!0),y=l.c2p(h.y,!0),x=h.mrc||1,b=o.hoverlabel;b&&(h.hbg=Array.isArray(b.bgcolor)?b.bgcolor[f]:b.bgcolor,h.hbc=Array.isArray(b.bordercolor)?b.bordercolor[f]:b.bordercolor,h.hts=i.isArrayOrTypedArray(b.font.size)?b.font.size[f]:b.font.size,h.htc=Array.isArray(b.font.color)?b.font.color[f]:b.font.color,h.htf=Array.isArray(b.font.family)?b.font.family[f]:b.font.family,h.hnl=i.isArrayOrTypedArray(b.namelength)?b.namelength[f]:b.namelength);var _=o.hoverinfo;_&&(h.hi=Array.isArray(_)?_[f]:_);var w=o.hovertemplate;w&&(h.ht=Array.isArray(w)?w[f]:w);var T={};T[t.index]=h;var k=o._origX,A=o._origY,M=i.extendFlat({},t,{color:a(o,h),x0:v-x,x1:v+x,xLabelVal:k?k[f]:h.x,y0:y-x,y1:y+x,yLabelVal:A?A[f]:h.y,cd:T,distance:c,spikeDistance:u,hovertemplate:h.ht});return h.htx?M.text=h.htx:h.tx?M.text=h.tx:o.text&&(M.text=o.text),i.fillText(h,o,M),n.getComponentMethod(\"errorbars\",\"hoverInfo\")(h,o,M),M}e.exports={hoverPoints:function(t,e,r,n){var i,a,s,l,c,u,f,h,p,d,g=t.cd,m=g[0].t,v=g[0].trace,y=t.xa,x=t.ya,b=m.x,_=m.y,w=y.c2p(e),T=x.c2p(r),k=t.distance;if(m.tree){var A=y.p2c(w-k),M=y.p2c(w+k),S=x.p2c(T-k),E=x.p2c(T+k);i=\"x\"===n?m.tree.range(Math.min(A,M),Math.min(x._rl[0],x._rl[1]),Math.max(A,M),Math.max(x._rl[0],x._rl[1])):m.tree.range(Math.min(A,M),Math.min(S,E),Math.max(A,M),Math.max(S,E))}else i=m.ids;var L=k;if(\"x\"===n){var C=!!v.xperiodalignment,P=!!v.yperiodalignment;for(u=0;u=Math.min(I,O)&&w<=Math.max(I,O)?0:1/0}if(f=Math.min(z,D)&&T<=Math.max(z,D)?0:1/0}d=Math.sqrt(f*f+h*h),s=i[u]}}}else for(u=i.length-1;u>-1;u--)l=b[a=i[u]],c=_[a],f=y.c2p(l)-w,h=x.c2p(c)-T,(p=Math.sqrt(f*f+h*h))v.glText.length){var w=b-v.glText.length;for(d=0;dr&&(isNaN(e[n])||isNaN(e[n+1]));)n-=2;t.positions=e.slice(r,n+2)}return t})),v.line2d.update(v.lineOptions)),v.error2d){var k=(v.errorXOptions||[]).concat(v.errorYOptions||[]);v.error2d.update(k)}v.scatter2d&&v.scatter2d.update(v.markerOptions),v.fillOrder=s.repeat(null,b),v.fill2d&&(v.fillOptions=v.fillOptions.map((function(t,e){var n=r[e];if(t&&n&&n[0]&&n[0].trace){var i,a,o=n[0],s=o.trace,l=o.t,c=v.lineOptions[e],u=[];s._ownfill&&u.push(e),s._nexttrace&&u.push(e+1),u.length&&(v.fillOrder[e]=u);var f,h,p=[],d=c&&c.positions||l.positions;if(\"tozeroy\"===s.fill){for(f=0;ff&&isNaN(d[h+1]);)h-=2;0!==d[f+1]&&(p=[d[f],0]),p=p.concat(d.slice(f,h+2)),0!==d[h+1]&&(p=p.concat([d[h],0]))}else if(\"tozerox\"===s.fill){for(f=0;ff&&isNaN(d[h]);)h-=2;0!==d[f]&&(p=[0,d[f+1]]),p=p.concat(d.slice(f,h+2)),0!==d[h]&&(p=p.concat([0,d[h+1]]))}else if(\"toself\"===s.fill||\"tonext\"===s.fill){for(p=[],i=0,t.splitNull=!0,a=0;a-1;for(d=0;d\")}function u(t){return t+\"\\xb0\"}}e.exports={hoverPoints:function(t,e,r){var o=t.cd,c=o[0].trace,u=t.xa,f=t.ya,h=t.subplot,p=360*(e>=0?Math.floor((e+180)/360):Math.ceil((e-180)/360)),d=e-p;if(n.getClosest(o,(function(t){var e=t.lonlat;if(e[0]===s)return 1/0;var n=i.modHalf(e[0],360),a=e[1],o=h.project([n,a]),l=o.x-u.c2p([d,a]),c=o.y-f.c2p([n,r]),p=Math.max(3,t.mrc||0);return Math.max(Math.sqrt(l*l+c*c)-p,1-3/p)}),t),!1!==t.index){var g=o[t.index],m=g.lonlat,v=[i.modHalf(m[0],360)+p,m[1]],y=u.c2p(v),x=f.c2p(v),b=g.mrc||1;t.x0=y-b,t.x1=y+b,t.y0=x-b,t.y1=x+b;var _={};_[c.subplot]={_subplot:h};var w=c._module.formatLabels(g,c,_);return t.lonLabel=w.lonLabel,t.latLabel=w.latLabel,t.color=a(c,g),t.extraText=l(c,g,o[0].t.labels),t.hovertemplate=c.hovertemplate,[t]}},getExtraText:l}},{\"../../components/fx\":406,\"../../constants/numerical\":479,\"../../lib\":503,\"../scatter/get_trace_color\":936}],997:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"./format_labels\"),calc:t(\"../scattergeo/calc\"),plot:t(\"./plot\"),hoverPoints:t(\"./hover\").hoverPoints,eventData:t(\"./event_data\"),selectPoints:t(\"./select\"),styleOnSelect:function(t,e){e&&e[0].trace._glTrace.update(e)},moduleType:\"trace\",name:\"scattermapbox\",basePlotModule:t(\"../../plots/mapbox\"),categories:[\"mapbox\",\"gl\",\"symbols\",\"showLegend\",\"scatter-like\"],meta:{}}},{\"../../plots/mapbox\":613,\"../scatter/marker_colorbar\":944,\"../scattergeo/calc\":969,\"./attributes\":991,\"./defaults\":993,\"./event_data\":994,\"./format_labels\":995,\"./hover\":996,\"./plot\":998,\"./select\":999}],998:[function(t,e,r){\"use strict\";var n=t(\"./convert\"),i=t(\"../../plots/mapbox/constants\").traceLayerPrefix,a=[\"fill\",\"line\",\"circle\",\"symbol\"];function o(t,e){this.type=\"scattermapbox\",this.subplot=t,this.uid=e,this.sourceIds={fill:\"source-\"+e+\"-fill\",line:\"source-\"+e+\"-line\",circle:\"source-\"+e+\"-circle\",symbol:\"source-\"+e+\"-symbol\"},this.layerIds={fill:i+e+\"-fill\",line:i+e+\"-line\",circle:i+e+\"-circle\",symbol:i+e+\"-symbol\"},this.below=null}var s=o.prototype;s.addSource=function(t,e){this.subplot.map.addSource(this.sourceIds[t],{type:\"geojson\",data:e.geojson})},s.setSourceData=function(t,e){this.subplot.map.getSource(this.sourceIds[t]).setData(e.geojson)},s.addLayer=function(t,e,r){this.subplot.addLayer({type:t,id:this.layerIds[t],source:this.sourceIds[t],layout:e.layout,paint:e.paint},r)},s.update=function(t){var e,r,i,o=this.subplot,s=o.map,l=n(o.gd,t),c=o.belowLookup[\"trace-\"+this.uid];if(c!==this.below){for(e=a.length-1;e>=0;e--)r=a[e],s.removeLayer(this.layerIds[r]);for(e=0;e=0;e--){var r=a[e];t.removeLayer(this.layerIds[r]),t.removeSource(this.sourceIds[r])}},e.exports=function(t,e){for(var r=e[0].trace,i=new o(t,r.uid),s=n(t.gd,e),l=i.below=t.belowLookup[\"trace-\"+r.uid],c=0;c\")}}e.exports={hoverPoints:function(t,e,r,a){var o=n(t,e,r,a);if(o&&!1!==o[0].index){var s=o[0];if(void 0===s.index)return o;var l=t.subplot,c=s.cd[s.index],u=s.trace;if(l.isPtInside(c))return s.xLabelVal=void 0,s.yLabelVal=void 0,i(c,u,l,s),s.hovertemplate=u.hovertemplate,o}},makeHoverPointText:i}},{\"../scatter/hover\":937}],1005:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"scatterpolar\",basePlotModule:t(\"../../plots/polar\"),categories:[\"polar\",\"symbols\",\"showLegend\",\"scatter-like\"],attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\").supplyDefaults,colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"./format_labels\"),calc:t(\"./calc\"),plot:t(\"./plot\"),style:t(\"../scatter/style\").style,styleOnSelect:t(\"../scatter/style\").styleOnSelect,hoverPoints:t(\"./hover\").hoverPoints,selectPoints:t(\"../scatter/select\"),meta:{}}},{\"../../plots/polar\":622,\"../scatter/marker_colorbar\":944,\"../scatter/select\":948,\"../scatter/style\":950,\"./attributes\":1e3,\"./calc\":1001,\"./defaults\":1002,\"./format_labels\":1003,\"./hover\":1004,\"./plot\":1006}],1006:[function(t,e,r){\"use strict\";var n=t(\"../scatter/plot\"),i=t(\"../../constants/numerical\").BADNUM;e.exports=function(t,e,r){for(var a=e.layers.frontplot.select(\"g.scatterlayer\"),o={xaxis:e.xaxis,yaxis:e.yaxis,plot:e.framework,layerClipId:e._hasClipOnAxisFalse?e.clipIds.forTraces:null},s=e.radialAxis,l=e.angularAxis,c=0;c=c&&(y.marker.cluster=d.tree),y.marker&&(y.markerSel.positions=y.markerUnsel.positions=y.marker.positions=_),y.line&&_.length>1&&l.extendFlat(y.line,s.linePositions(t,p,_)),y.text&&(l.extendFlat(y.text,{positions:_},s.textPosition(t,p,y.text,y.marker)),l.extendFlat(y.textSel,{positions:_},s.textPosition(t,p,y.text,y.markerSel)),l.extendFlat(y.textUnsel,{positions:_},s.textPosition(t,p,y.text,y.markerUnsel))),y.fill&&!h.fill2d&&(h.fill2d=!0),y.marker&&!h.scatter2d&&(h.scatter2d=!0),y.line&&!h.line2d&&(h.line2d=!0),y.text&&!h.glText&&(h.glText=!0),h.lineOptions.push(y.line),h.fillOptions.push(y.fill),h.markerOptions.push(y.marker),h.markerSelectedOptions.push(y.markerSel),h.markerUnselectedOptions.push(y.markerUnsel),h.textOptions.push(y.text),h.textSelectedOptions.push(y.textSel),h.textUnselectedOptions.push(y.textUnsel),h.selectBatch.push([]),h.unselectBatch.push([]),d.x=w,d.y=T,d.rawx=w,d.rawy=T,d.r=m,d.theta=v,d.positions=_,d._scene=h,d.index=h.count,h.count++}})),a(t,e,r)}}},{\"../../lib\":503,\"../scattergl/constants\":980,\"../scattergl/convert\":981,\"../scattergl/plot\":988,\"../scattergl/scene_update\":989,\"@plotly/point-cluster\":59,\"fast-isnumeric\":190}],1014:[function(t,e,r){\"use strict\";var n=t(\"../../plots/template_attributes\").hovertemplateAttrs,i=t(\"../../plots/template_attributes\").texttemplateAttrs,a=t(\"../../lib/extend\").extendFlat,o=t(\"../scatter/attributes\"),s=t(\"../../plots/attributes\"),l=o.line;e.exports={mode:o.mode,real:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},imag:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},text:o.text,texttemplate:i({editType:\"plot\"},{keys:[\"real\",\"imag\",\"text\"]}),hovertext:o.hovertext,line:{color:l.color,width:l.width,dash:l.dash,shape:a({},l.shape,{values:[\"linear\",\"spline\"]}),smoothing:l.smoothing,editType:\"calc\"},connectgaps:o.connectgaps,marker:o.marker,cliponaxis:a({},o.cliponaxis,{dflt:!1}),textposition:o.textposition,textfont:o.textfont,fill:a({},o.fill,{values:[\"none\",\"toself\",\"tonext\"],dflt:\"none\"}),fillcolor:o.fillcolor,hoverinfo:a({},s.hoverinfo,{flags:[\"real\",\"imag\",\"text\",\"name\"]}),hoveron:o.hoveron,hovertemplate:n(),selected:o.selected,unselected:o.unselected}},{\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/template_attributes\":633,\"../scatter/attributes\":926}],1015:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../constants/numerical\").BADNUM,a=t(\"../scatter/colorscale_calc\"),o=t(\"../scatter/arrays_to_calcdata\"),s=t(\"../scatter/calc_selection\"),l=t(\"../scatter/calc\").calcMarkerSize;e.exports=function(t,e){for(var r=t._fullLayout,c=e.subplot,u=r[c].realaxis,f=r[c].imaginaryaxis,h=u.makeCalcdata(e,\"real\"),p=f.makeCalcdata(e,\"imag\"),d=e._length,g=new Array(d),m=0;m\")}}e.exports={hoverPoints:function(t,e,r,a){var o=n(t,e,r,a);if(o&&!1!==o[0].index){var s=o[0];if(void 0===s.index)return o;var l=t.subplot,c=s.cd[s.index],u=s.trace;if(l.isPtInside(c))return s.xLabelVal=void 0,s.yLabelVal=void 0,i(c,u,l,s),s.hovertemplate=u.hovertemplate,o}},makeHoverPointText:i}},{\"../scatter/hover\":937}],1019:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"scattersmith\",basePlotModule:t(\"../../plots/smith\"),categories:[\"smith\",\"symbols\",\"showLegend\",\"scatter-like\"],attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"./format_labels\"),calc:t(\"./calc\"),plot:t(\"./plot\"),style:t(\"../scatter/style\").style,styleOnSelect:t(\"../scatter/style\").styleOnSelect,hoverPoints:t(\"./hover\").hoverPoints,selectPoints:t(\"../scatter/select\"),meta:{}}},{\"../../plots/smith\":629,\"../scatter/marker_colorbar\":944,\"../scatter/select\":948,\"../scatter/style\":950,\"./attributes\":1014,\"./calc\":1015,\"./defaults\":1016,\"./format_labels\":1017,\"./hover\":1018,\"./plot\":1020}],1020:[function(t,e,r){\"use strict\";var n=t(\"../scatter/plot\"),i=t(\"../../constants/numerical\").BADNUM,a=t(\"../../plots/smith/helpers\").smith;e.exports=function(t,e,r){for(var o=e.layers.frontplot.select(\"g.scatterlayer\"),s={xaxis:e.xaxis,yaxis:e.yaxis,plot:e.framework,layerClipId:e._hasClipOnAxisFalse?e.clipIds.forTraces:null},l=0;l\"),o.hovertemplate=h.hovertemplate,a}function x(t,e){v.push(t._hovertitle+\": \"+e)}}},{\"../scatter/hover\":937}],1027:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"./format_labels\"),calc:t(\"./calc\"),plot:t(\"./plot\"),style:t(\"../scatter/style\").style,styleOnSelect:t(\"../scatter/style\").styleOnSelect,hoverPoints:t(\"./hover\"),selectPoints:t(\"../scatter/select\"),eventData:t(\"./event_data\"),moduleType:\"trace\",name:\"scatterternary\",basePlotModule:t(\"../../plots/ternary\"),categories:[\"ternary\",\"symbols\",\"showLegend\",\"scatter-like\"],meta:{}}},{\"../../plots/ternary\":634,\"../scatter/marker_colorbar\":944,\"../scatter/select\":948,\"../scatter/style\":950,\"./attributes\":1021,\"./calc\":1022,\"./defaults\":1023,\"./event_data\":1024,\"./format_labels\":1025,\"./hover\":1026,\"./plot\":1028}],1028:[function(t,e,r){\"use strict\";var n=t(\"../scatter/plot\");e.exports=function(t,e,r){var i=e.plotContainer;i.select(\".scatterlayer\").selectAll(\"*\").remove();var a={xaxis:e.xaxis,yaxis:e.yaxis,plot:i,layerClipId:e._hasClipOnAxisFalse?e.clipIdRelative:null},o=e.layers.frontplot.select(\"g.scatterlayer\");n(t,a,r,o)}},{\"../scatter/plot\":947}],1029:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\"),i=t(\"../../components/colorscale/attributes\"),a=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,o=t(\"../../plots/template_attributes\").hovertemplateAttrs,s=t(\"../scattergl/attributes\"),l=t(\"../../plots/cartesian/constants\").idRegex,c=t(\"../../plot_api/plot_template\").templatedArray,u=t(\"../../lib/extend\").extendFlat,f=n.marker,h=f.line,p=u(i(\"marker.line\",{editTypeOverride:\"calc\"}),{width:u({},h.width,{editType:\"calc\"}),editType:\"calc\"}),d=u(i(\"marker\"),{symbol:f.symbol,size:u({},f.size,{editType:\"markerSize\"}),sizeref:f.sizeref,sizemin:f.sizemin,sizemode:f.sizemode,opacity:f.opacity,colorbar:f.colorbar,line:p,editType:\"calc\"});function g(t){return{valType:\"info_array\",freeLength:!0,editType:\"calc\",items:{valType:\"subplotid\",regex:l[t],editType:\"plot\"}}}d.color.editType=d.cmin.editType=d.cmax.editType=\"style\",e.exports={dimensions:c(\"dimension\",{visible:{valType:\"boolean\",dflt:!0,editType:\"calc\"},label:{valType:\"string\",editType:\"calc\"},values:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},axis:{type:{valType:\"enumerated\",values:[\"linear\",\"log\",\"date\",\"category\"],editType:\"calc+clearAxisTypes\"},matches:{valType:\"boolean\",dflt:!1,editType:\"calc\"},editType:\"calc+clearAxisTypes\"},editType:\"calc+clearAxisTypes\"}),text:u({},s.text,{}),hovertext:u({},s.hovertext,{}),hovertemplate:o(),xhoverformat:a(\"x\"),yhoverformat:a(\"y\"),marker:d,xaxes:g(\"x\"),yaxes:g(\"y\"),diagonal:{visible:{valType:\"boolean\",dflt:!0,editType:\"calc\"},editType:\"calc\"},showupperhalf:{valType:\"boolean\",dflt:!0,editType:\"calc\"},showlowerhalf:{valType:\"boolean\",dflt:!0,editType:\"calc\"},selected:{marker:s.selected.marker,editType:\"calc\"},unselected:{marker:s.unselected.marker,editType:\"calc\"},opacity:s.opacity}},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plot_api/plot_template\":543,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/cartesian/constants\":561,\"../../plots/template_attributes\":633,\"../scatter/attributes\":926,\"../scattergl/attributes\":978}],1030:[function(t,e,r){\"use strict\";var n=t(\"regl-line2d\"),i=t(\"../../registry\"),a=t(\"../../lib/prepare_regl\"),o=t(\"../../plots/get_data\").getModuleCalcData,s=t(\"../../plots/cartesian\"),l=t(\"../../plots/cartesian/axis_ids\").getFromId,c=t(\"../../plots/cartesian/axes\").shouldShowZeroLine;function u(t,e,r){for(var n=r.matrixOptions.data.length,i=e._visibleDims,a=r.viewOpts.ranges=new Array(n),o=0;oh?b.sizeAvg||Math.max(b.size,3):a(e,x),p=0;pa&&l||i-1,P=!0;if(o(x)||!!p.selectedpoints||C){var I=p._length;if(p.selectedpoints){g.selectBatch=p.selectedpoints;var O=p.selectedpoints,z={};for(l=0;l1&&(u=g[y-1],h=m[y-1],d=v[y-1]),e=0;eu?\"-\":\"+\")+\"x\")).replace(\"y\",(f>h?\"-\":\"+\")+\"y\")).replace(\"z\",(p>d?\"-\":\"+\")+\"z\");var L=function(){y=0,M=[],S=[],E=[]};(!y||y2?t.slice(1,e-1):2===e?[(t[0]+t[1])/2]:t}function p(t){var e=t.length;return 1===e?[.5,.5]:[t[1]-t[0],t[e-1]-t[e-2]]}function d(t,e){var r=t.fullSceneLayout,i=t.dataScale,u=e._len,f={};function d(t,e){var n=r[e],o=i[c[e]];return a.simpleMap(t,(function(t){return n.d2l(t)*o}))}if(f.vectors=l(d(e._u,\"xaxis\"),d(e._v,\"yaxis\"),d(e._w,\"zaxis\"),u),!u)return{positions:[],cells:[]};var g=d(e._Xs,\"xaxis\"),m=d(e._Ys,\"yaxis\"),v=d(e._Zs,\"zaxis\");if(f.meshgrid=[g,m,v],f.gridFill=e._gridFill,e._slen)f.startingPositions=l(d(e._startsX,\"xaxis\"),d(e._startsY,\"yaxis\"),d(e._startsZ,\"zaxis\"));else{for(var y=m[0],x=h(g),b=h(v),_=new Array(x.length*b.length),w=0,T=0;T=0};v?(r=Math.min(m.length,x.length),l=function(t){return A(m[t])&&M(t)},f=function(t){return String(m[t])}):(r=Math.min(y.length,x.length),l=function(t){return A(y[t])&&M(t)},f=function(t){return String(y[t])}),_&&(r=Math.min(r,b.length));for(var S=0;S1){for(var P=a.randstr(),I=0;I\"),name:A||z(\"name\")?y.name:void 0,color:k(\"hoverlabel.bgcolor\")||x.color,borderColor:k(\"hoverlabel.bordercolor\"),fontFamily:k(\"hoverlabel.font.family\"),fontSize:k(\"hoverlabel.font.size\"),fontColor:k(\"hoverlabel.font.color\"),nameLength:k(\"hoverlabel.namelength\"),textAlign:k(\"hoverlabel.align\"),hovertemplate:A,hovertemplateLabels:P,eventData:l};m&&(F.x0=E-i.rInscribed*i.rpx1,F.x1=E+i.rInscribed*i.rpx1,F.idealAlign=i.pxmid[0]<0?\"left\":\"right\"),v&&(F.x=E,F.idealAlign=E<0?\"left\":\"right\");var B=[];o.loneHover(F,{container:a._hoverlayer.node(),outerContainer:a._paper.node(),gd:r,inOut_bbox:B}),l[0].bbox=B[0],d._hasHoverLabel=!0}if(v){var N=t.select(\"path.surface\");h.styleOne(N,i,y,{hovered:!0})}d._hasHoverEvent=!0,r.emit(\"plotly_hover\",{points:l||[f(i,y,h.eventDataKeys)],event:n.event})}})),t.on(\"mouseout\",(function(e){var i=r._fullLayout,a=r._fullData[d.index],s=n.select(this).datum();if(d._hasHoverEvent&&(e.originalEvent=n.event,r.emit(\"plotly_unhover\",{points:[f(s,a,h.eventDataKeys)],event:n.event}),d._hasHoverEvent=!1),d._hasHoverLabel&&(o.loneUnhover(i._hoverlayer.node()),d._hasHoverLabel=!1),v){var l=t.select(\"path.surface\");h.styleOne(l,s,a,{hovered:!1})}})),t.on(\"click\",(function(t){var e=r._fullLayout,a=r._fullData[d.index],s=m&&(c.isHierarchyRoot(t)||c.isLeaf(t)),u=c.getPtId(t),p=c.isEntry(t)?c.findEntryWithChild(g,u):c.findEntryWithLevel(g,u),v=c.getPtId(p),y={points:[f(t,a,h.eventDataKeys)],event:n.event};s||(y.nextLevel=v);var x=l.triggerHandler(r,\"plotly_\"+d.type+\"click\",y);if(!1!==x&&e.hovermode&&(r._hoverdata=[f(t,a,h.eventDataKeys)],o.click(r,n.event)),!s&&!1!==x&&!r._dragging&&!r._transitioning){i.call(\"_storeDirectGUIEdit\",a,e._tracePreGUI[a.uid],{level:a.level});var b={data:[{level:v}],traces:[d.index]},_={frame:{redraw:!1,duration:h.transitionTime},transition:{duration:h.transitionTime,easing:h.transitionEasing},mode:\"immediate\",fromcurrent:!0};o.loneUnhover(e._hoverlayer.node()),i.call(\"animate\",r,b,_)}}))}},{\"../../components/fx\":406,\"../../components/fx/helpers\":402,\"../../lib\":503,\"../../lib/events\":492,\"../../registry\":638,\"../pie/helpers\":905,\"./helpers\":1051,\"@plotly/d3\":58}],1051:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../components/color\"),a=t(\"../../lib/setcursor\"),o=t(\"../pie/helpers\");function s(t){return t.data.data.pid}r.findEntryWithLevel=function(t,e){var n;return e&&t.eachAfter((function(t){if(r.getPtId(t)===e)return n=t.copy()})),n||t},r.findEntryWithChild=function(t,e){var n;return t.eachAfter((function(t){for(var i=t.children||[],a=0;a0)},r.getMaxDepth=function(t){return t.maxdepth>=0?t.maxdepth:1/0},r.isHeader=function(t,e){return!(r.isLeaf(t)||t.depth===e._maxDepth-1)},r.getParent=function(t,e){return r.findEntryWithLevel(t,s(e))},r.listPath=function(t,e){var n=t.parent;if(!n)return[];var i=e?[n.data[e]]:[n];return r.listPath(n,e).concat(i)},r.getPath=function(t){return r.listPath(t,\"label\").join(\"/\")+\"/\"},r.formatValue=o.formatPieValue,r.formatPercent=function(t,e){var r=n.formatPercent(t,0);return\"0%\"===r&&(r=o.formatPiePercent(t,e)),r}},{\"../../components/color\":366,\"../../lib\":503,\"../../lib/setcursor\":524,\"../pie/helpers\":905}],1052:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"sunburst\",basePlotModule:t(\"./base_plot\"),categories:[],animatable:!0,attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\"),supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\").calc,crossTraceCalc:t(\"./calc\").crossTraceCalc,plot:t(\"./plot\").plot,style:t(\"./style\").style,colorbar:t(\"../scatter/marker_colorbar\"),meta:{}}},{\"../scatter/marker_colorbar\":944,\"./attributes\":1045,\"./base_plot\":1046,\"./calc\":1047,\"./defaults\":1049,\"./layout_attributes\":1053,\"./layout_defaults\":1054,\"./plot\":1055,\"./style\":1056}],1053:[function(t,e,r){\"use strict\";e.exports={sunburstcolorway:{valType:\"colorlist\",editType:\"calc\"},extendsunburstcolors:{valType:\"boolean\",dflt:!0,editType:\"calc\"}}},{}],1054:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e){function r(r,a){return n.coerce(t,e,i,r,a)}r(\"sunburstcolorway\",e.colorway),r(\"extendsunburstcolors\")}},{\"../../lib\":503,\"./layout_attributes\":1053}],1055:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"d3-hierarchy\"),a=t(\"d3-interpolate\").interpolate,o=t(\"../../components/drawing\"),s=t(\"../../lib\"),l=t(\"../../lib/svg_text_utils\"),c=t(\"../bar/uniform_text\"),u=c.recordMinTextSize,f=c.clearMinTextSize,h=t(\"../pie/plot\"),p=t(\"../pie/helpers\").getRotationAngle,d=h.computeTransform,g=h.transformInsideText,m=t(\"./style\").styleOne,v=t(\"../bar/style\").resizeText,y=t(\"./fx\"),x=t(\"./constants\"),b=t(\"./helpers\");function _(t,e,c,f){var h=t._fullLayout,v=!h.uniformtext.mode&&b.hasTransition(f),_=n.select(c).selectAll(\"g.slice\"),T=e[0],k=T.trace,A=T.hierarchy,M=b.findEntryWithLevel(A,k.level),S=b.getMaxDepth(k),E=h._size,L=k.domain,C=E.w*(L.x[1]-L.x[0]),P=E.h*(L.y[1]-L.y[0]),I=.5*Math.min(C,P),O=T.cx=E.l+E.w*(L.x[1]+L.x[0])/2,z=T.cy=E.t+E.h*(1-L.y[0])-P/2;if(!M)return _.remove();var D=null,R={};v&&_.each((function(t){R[b.getPtId(t)]={rpx0:t.rpx0,rpx1:t.rpx1,x0:t.x0,x1:t.x1,transform:t.transform},!D&&b.isEntry(t)&&(D=t)}));var F=function(t){return i.partition().size([2*Math.PI,t.height+1])(t)}(M).descendants(),B=M.height+1,N=0,j=S;T.hasMultipleRoots&&b.isHierarchyRoot(M)&&(F=F.slice(1),B-=1,N=1,j+=1),F=F.filter((function(t){return t.y1<=j}));var U=p(k.rotation);U&&F.forEach((function(t){t.x0+=U,t.x1+=U}));var V=Math.min(B,S),H=function(t){return(t-N)/V*I},q=function(t,e){return[t*Math.cos(e),-t*Math.sin(e)]},G=function(t){return s.pathAnnulus(t.rpx0,t.rpx1,t.x0,t.x1,O,z)},Y=function(t){return O+w(t)[0]*(t.transform.rCenter||0)+(t.transform.x||0)},W=function(t){return z+w(t)[1]*(t.transform.rCenter||0)+(t.transform.y||0)};(_=_.data(F,b.getPtId)).enter().append(\"g\").classed(\"slice\",!0),v?_.exit().transition().each((function(){var t=n.select(this);t.select(\"path.surface\").transition().attrTween(\"d\",(function(t){var e=function(t){var e,r=b.getPtId(t),n=R[r],i=R[b.getPtId(M)];if(i){var o=(t.x1>i.x1?2*Math.PI:0)+U;e=t.rpx1X?2*Math.PI:0)+U;e={x0:i,x1:i}}else e={rpx0:I,rpx1:I},s.extendFlat(e,K(t));else e={rpx0:0,rpx1:0};else e={x0:U,x1:U};return a(e,n)}(t);return function(t){return G(e(t))}})):f.attr(\"d\",G),c.call(y,M,t,e,{eventDataKeys:x.eventDataKeys,transitionTime:x.CLICK_TRANSITION_TIME,transitionEasing:x.CLICK_TRANSITION_EASING}).call(b.setSliceCursor,t,{hideOnRoot:!0,hideOnLeaves:!0,isTransitioning:t._transitioning}),f.call(m,i,k);var p=s.ensureSingle(c,\"g\",\"slicetext\"),_=s.ensureSingle(p,\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),w=s.ensureUniformFontSize(t,b.determineTextFont(k,i,h.font));_.text(r.formatSliceLabel(i,M,k,e,h)).classed(\"slicetext\",!0).attr(\"text-anchor\",\"middle\").call(o.font,w).call(l.convertToTspans,t);var A=o.bBox(_.node());i.transform=g(A,i,T),i.transform.targetX=Y(i),i.transform.targetY=W(i);var S=function(t,e){var r=t.transform;return d(r,e),r.fontSize=w.size,u(k.type,r,h),s.getTextTransform(r)};v?_.transition().attrTween(\"transform\",(function(t){var e=function(t){var e,r=R[b.getPtId(t)],n=t.transform;if(r)e=r;else if(e={rpx1:t.rpx1,transform:{textPosAngle:n.textPosAngle,scale:0,rotate:n.rotate,rCenter:n.rCenter,x:n.x,y:n.y}},D)if(t.parent)if(X){var i=t.x1>X?2*Math.PI:0;e.x0=e.x1=i}else s.extendFlat(e,K(t));else e.x0=e.x1=U;else e.x0=e.x1=U;var o=a(e.transform.textPosAngle,t.transform.textPosAngle),l=a(e.rpx1,t.rpx1),c=a(e.x0,t.x0),f=a(e.x1,t.x1),p=a(e.transform.scale,n.scale),d=a(e.transform.rotate,n.rotate),g=0===n.rCenter?3:0===e.transform.rCenter?1/3:1,m=a(e.transform.rCenter,n.rCenter);return function(t){var e=l(t),r=c(t),i=f(t),a=function(t){return m(Math.pow(t,g))}(t),s={pxmid:q(e,(r+i)/2),rpx1:e,transform:{textPosAngle:o(t),rCenter:a,x:n.x,y:n.y}};return u(k.type,n,h),{transform:{targetX:Y(s),targetY:W(s),scale:p(t),rotate:d(t),rCenter:a}}}}(t);return function(t){return S(e(t),A)}})):_.attr(\"transform\",S(i,A))}))}function w(t){return e=t.rpx1,r=t.transform.textPosAngle,[e*Math.sin(r),-e*Math.cos(r)];var e,r}r.plot=function(t,e,r,i){var a,o,s=t._fullLayout,l=s._sunburstlayer,c=!r,u=!s.uniformtext.mode&&b.hasTransition(r);(f(\"sunburst\",s),(a=l.selectAll(\"g.trace.sunburst\").data(e,(function(t){return t[0].trace.uid}))).enter().append(\"g\").classed(\"trace\",!0).classed(\"sunburst\",!0).attr(\"stroke-linejoin\",\"round\"),a.order(),u)?(i&&(o=i()),n.transition().duration(r.duration).ease(r.easing).each(\"end\",(function(){o&&o()})).each(\"interrupt\",(function(){o&&o()})).each((function(){l.selectAll(\"g.trace\").each((function(e){_(t,e,this,r)}))}))):(a.each((function(e){_(t,e,this,r)})),s.uniformtext.mode&&v(t,s._sunburstlayer.selectAll(\".trace\"),\"sunburst\"));c&&a.exit().remove()},r.formatSliceLabel=function(t,e,r,n,i){var a=r.texttemplate,o=r.textinfo;if(!(a||o&&\"none\"!==o))return\"\";var l=i.separators,c=n[0],u=t.data.data,f=c.hierarchy,h=b.isHierarchyRoot(t),p=b.getParent(f,t),d=b.getValue(t);if(!a){var g,m=o.split(\"+\"),v=function(t){return-1!==m.indexOf(t)},y=[];if(v(\"label\")&&u.label&&y.push(u.label),u.hasOwnProperty(\"v\")&&v(\"value\")&&y.push(b.formatValue(u.v,l)),!h){v(\"current path\")&&y.push(b.getPath(t.data));var x=0;v(\"percent parent\")&&x++,v(\"percent entry\")&&x++,v(\"percent root\")&&x++;var _=x>1;if(x){var w,T=function(t){g=b.formatPercent(w,l),_&&(g+=\" of \"+t),y.push(g)};v(\"percent parent\")&&!h&&(w=d/b.getValue(p),T(\"parent\")),v(\"percent entry\")&&(w=d/b.getValue(e),T(\"entry\")),v(\"percent root\")&&(w=d/b.getValue(f),T(\"root\"))}}return v(\"text\")&&(g=s.castOption(r,u.i,\"text\"),s.isValidTextValue(g)&&y.push(g)),y.join(\"
\")}var k=s.castOption(r,u.i,\"texttemplate\");if(!k)return\"\";var A={};u.label&&(A.label=u.label),u.hasOwnProperty(\"v\")&&(A.value=u.v,A.valueLabel=b.formatValue(u.v,l)),A.currentPath=b.getPath(t.data),h||(A.percentParent=d/b.getValue(p),A.percentParentLabel=b.formatPercent(A.percentParent,l),A.parent=b.getPtLabel(p)),A.percentEntry=d/b.getValue(e),A.percentEntryLabel=b.formatPercent(A.percentEntry,l),A.entry=b.getPtLabel(e),A.percentRoot=d/b.getValue(f),A.percentRootLabel=b.formatPercent(A.percentRoot,l),A.root=b.getPtLabel(f),u.hasOwnProperty(\"color\")&&(A.color=u.color);var M=s.castOption(r,u.i,\"text\");return(s.isValidTextValue(M)||\"\"===M)&&(A.text=M),A.customdata=s.castOption(r,u.i,\"customdata\"),s.texttemplateString(k,A,i._d3locale,A,r._meta||{})}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../bar/style\":662,\"../bar/uniform_text\":664,\"../pie/helpers\":905,\"../pie/plot\":909,\"./constants\":1048,\"./fx\":1050,\"./helpers\":1051,\"./style\":1056,\"@plotly/d3\":58,\"d3-hierarchy\":115,\"d3-interpolate\":116}],1056:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../components/color\"),a=t(\"../../lib\"),o=t(\"../bar/uniform_text\").resizeText;function s(t,e,r){var n=e.data.data,o=!e.children,s=n.i,l=a.castOption(r,s,\"marker.line.color\")||i.defaultLine,c=a.castOption(r,s,\"marker.line.width\")||0;t.style(\"stroke-width\",c).call(i.fill,n.color).call(i.stroke,l).style(\"opacity\",o?r.leaf.opacity:null)}e.exports={style:function(t){var e=t._fullLayout._sunburstlayer.selectAll(\".trace\");o(t,e,\"sunburst\"),e.each((function(t){var e=n.select(this),r=t[0].trace;e.style(\"opacity\",r.opacity),e.selectAll(\"path.surface\").each((function(t){n.select(this).call(s,t,r)}))}))},styleOne:s}},{\"../../components/color\":366,\"../../lib\":503,\"../bar/uniform_text\":664,\"@plotly/d3\":58}],1057:[function(t,e,r){\"use strict\";var n=t(\"../../components/color\"),i=t(\"../../components/colorscale/attributes\"),a=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,o=t(\"../../plots/template_attributes\").hovertemplateAttrs,s=t(\"../../plots/attributes\"),l=t(\"../../lib/extend\").extendFlat,c=t(\"../../plot_api/edit_types\").overrideAll;function u(t){return{show:{valType:\"boolean\",dflt:!1},start:{valType:\"number\",dflt:null,editType:\"plot\"},end:{valType:\"number\",dflt:null,editType:\"plot\"},size:{valType:\"number\",dflt:null,min:0,editType:\"plot\"},project:{x:{valType:\"boolean\",dflt:!1},y:{valType:\"boolean\",dflt:!1},z:{valType:\"boolean\",dflt:!1}},color:{valType:\"color\",dflt:n.defaultLine},usecolormap:{valType:\"boolean\",dflt:!1},width:{valType:\"number\",min:1,max:16,dflt:2},highlight:{valType:\"boolean\",dflt:!0},highlightcolor:{valType:\"color\",dflt:n.defaultLine},highlightwidth:{valType:\"number\",min:1,max:16,dflt:2}}}var f=e.exports=c(l({z:{valType:\"data_array\"},x:{valType:\"data_array\"},y:{valType:\"data_array\"},text:{valType:\"string\",dflt:\"\",arrayOk:!0},hovertext:{valType:\"string\",dflt:\"\",arrayOk:!0},hovertemplate:o(),xhoverformat:a(\"x\"),yhoverformat:a(\"y\"),zhoverformat:a(\"z\"),connectgaps:{valType:\"boolean\",dflt:!1,editType:\"calc\"},surfacecolor:{valType:\"data_array\"}},i(\"\",{colorAttr:\"z or surfacecolor\",showScaleDflt:!0,autoColorDflt:!1,editTypeOverride:\"calc\"}),{contours:{x:u(),y:u(),z:u()},hidesurface:{valType:\"boolean\",dflt:!1},lightposition:{x:{valType:\"number\",min:-1e5,max:1e5,dflt:10},y:{valType:\"number\",min:-1e5,max:1e5,dflt:1e4},z:{valType:\"number\",min:-1e5,max:1e5,dflt:0}},lighting:{ambient:{valType:\"number\",min:0,max:1,dflt:.8},diffuse:{valType:\"number\",min:0,max:1,dflt:.8},specular:{valType:\"number\",min:0,max:2,dflt:.05},roughness:{valType:\"number\",min:0,max:1,dflt:.5},fresnel:{valType:\"number\",min:0,max:5,dflt:.2}},opacity:{valType:\"number\",min:0,max:1,dflt:1},opacityscale:{valType:\"any\",editType:\"calc\"},_deprecated:{zauto:l({},i.zauto,{}),zmin:l({},i.zmin,{}),zmax:l({},i.zmax,{})},hoverinfo:l({},s.hoverinfo),showlegend:l({},s.showlegend,{dflt:!1})}),\"calc\",\"nested\");f.x.editType=f.y.editType=f.z.editType=\"calc+clearAxisTypes\",f.transforms=void 0},{\"../../components/color\":366,\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plot_api/edit_types\":536,\"../../plots/attributes\":550,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/template_attributes\":633}],1058:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/calc\");e.exports=function(t,e){e.surfacecolor?n(t,e,{vals:e.surfacecolor,containerStr:\"\",cLetter:\"c\"}):n(t,e,{vals:e.z,containerStr:\"\",cLetter:\"c\"})}},{\"../../components/colorscale/calc\":374}],1059:[function(t,e,r){\"use strict\";var n=t(\"../../../stackgl_modules\").gl_surface3d,i=t(\"../../../stackgl_modules\").ndarray,a=t(\"../../../stackgl_modules\").ndarray_linear_interpolate.d2,o=t(\"../heatmap/interp2d\"),s=t(\"../heatmap/find_empties\"),l=t(\"../../lib\").isArrayOrTypedArray,c=t(\"../../lib/gl_format_color\").parseColorScale,u=t(\"../../lib/str2rgbarray\"),f=t(\"../../components/colorscale\").extractOpts;function h(t,e,r){this.scene=t,this.uid=r,this.surface=e,this.data=null,this.showContour=[!1,!1,!1],this.contourStart=[null,null,null],this.contourEnd=[null,null,null],this.contourSize=[0,0,0],this.minValues=[1/0,1/0,1/0],this.maxValues=[-1/0,-1/0,-1/0],this.dataScaleX=1,this.dataScaleY=1,this.refineData=!0,this.objectOffset=[0,0,0]}var p=h.prototype;p.getXat=function(t,e,r,n){var i=l(this.data.x)?l(this.data.x[0])?this.data.x[e][t]:this.data.x[t]:t;return void 0===r?i:n.d2l(i,0,r)},p.getYat=function(t,e,r,n){var i=l(this.data.y)?l(this.data.y[0])?this.data.y[e][t]:this.data.y[e]:e;return void 0===r?i:n.d2l(i,0,r)},p.getZat=function(t,e,r,n){var i=this.data.z[e][t];return null===i&&this.data.connectgaps&&this.data._interpolatedZ&&(i=this.data._interpolatedZ[e][t]),void 0===r?i:n.d2l(i,0,r)},p.handlePick=function(t){if(t.object===this.surface){var e=(t.data.index[0]-1)/this.dataScaleX-1,r=(t.data.index[1]-1)/this.dataScaleY-1,n=Math.max(Math.min(Math.round(e),this.data.z[0].length-1),0),i=Math.max(Math.min(Math.round(r),this.data._ylength-1),0);t.index=[n,i],t.traceCoordinate=[this.getXat(n,i),this.getYat(n,i),this.getZat(n,i)],t.dataCoordinate=[this.getXat(n,i,this.data.xcalendar,this.scene.fullSceneLayout.xaxis),this.getYat(n,i,this.data.ycalendar,this.scene.fullSceneLayout.yaxis),this.getZat(n,i,this.data.zcalendar,this.scene.fullSceneLayout.zaxis)];for(var a=0;a<3;a++){var o=t.dataCoordinate[a];null!=o&&(t.dataCoordinate[a]*=this.scene.dataScale[a])}var s=this.data.hovertext||this.data.text;return Array.isArray(s)&&s[i]&&void 0!==s[i][n]?t.textLabel=s[i][n]:t.textLabel=s||\"\",t.data.dataCoordinate=t.dataCoordinate.slice(),this.surface.highlight(t.data),this.scene.glplot.spikes.position=t.dataCoordinate,!0}};var d=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,1063,1069,1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277,1279,1283,1289,1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,1489,1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,1579,1583,1597,1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,1697,1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783,1787,1789,1801,1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,1913,1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003,2011,2017,2027,2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111,2113,2129,2131,2137,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239,2243,2251,2267,2269,2273,2281,2287,2293,2297,2309,2311,2333,2339,2341,2347,2351,2357,2371,2377,2381,2383,2389,2393,2399,2411,2417,2423,2437,2441,2447,2459,2467,2473,2477,2503,2521,2531,2539,2543,2549,2551,2557,2579,2591,2593,2609,2617,2621,2633,2647,2657,2659,2663,2671,2677,2683,2687,2689,2693,2699,2707,2711,2713,2719,2729,2731,2741,2749,2753,2767,2777,2789,2791,2797,2801,2803,2819,2833,2837,2843,2851,2857,2861,2879,2887,2897,2903,2909,2917,2927,2939,2953,2957,2963,2969,2971,2999];function g(t,e){if(t0){r=d[n];break}return r}function y(t,e){if(!(t<1||e<1)){for(var r=m(t),n=m(e),i=1,a=0;a_;)r--,r/=v(r),++r1?n:1},p.refineCoords=function(t){for(var e=this.dataScaleX,r=this.dataScaleY,n=t[0].shape[0],a=t[0].shape[1],o=0|Math.floor(t[0].shape[0]*e+1),s=0|Math.floor(t[0].shape[1]*r+1),l=1+n+1,c=1+a+1,u=i(new Float32Array(l*c),[l,c]),f=[1/e,0,0,0,1/r,0,0,0,1],h=0;h0&&null!==this.contourStart[t]&&null!==this.contourEnd[t]&&this.contourEnd[t]>this.contourStart[t]))for(i[t]=!0,e=this.contourStart[t];ea&&(this.minValues[e]=a),this.maxValues[e]\",maxDimensionCount:60,overdrag:45,releaseTransitionDuration:120,releaseTransitionEase:\"cubic-out\",scrollbarCaptureWidth:18,scrollbarHideDelay:1e3,scrollbarHideDuration:1e3,scrollbarOffset:5,scrollbarWidth:8,transitionDuration:100,transitionEase:\"cubic-out\",uplift:5,wrapSpacer:\" \",wrapSplitCharacter:\" \",cn:{table:\"table\",tableControlView:\"table-control-view\",scrollBackground:\"scroll-background\",yColumn:\"y-column\",columnBlock:\"column-block\",scrollAreaClip:\"scroll-area-clip\",scrollAreaClipRect:\"scroll-area-clip-rect\",columnBoundary:\"column-boundary\",columnBoundaryClippath:\"column-boundary-clippath\",columnBoundaryRect:\"column-boundary-rect\",columnCells:\"column-cells\",columnCell:\"column-cell\",cellRect:\"cell-rect\",cellText:\"cell-text\",cellTextHolder:\"cell-text-holder\",scrollbarKit:\"scrollbar-kit\",scrollbar:\"scrollbar\",scrollbarSlider:\"scrollbar-slider\",scrollbarGlyph:\"scrollbar-glyph\",scrollbarCaptureZone:\"scrollbar-capture-zone\"}}},{}],1066:[function(t,e,r){\"use strict\";var n=t(\"./constants\"),i=t(\"../../lib/extend\").extendFlat,a=t(\"fast-isnumeric\");function o(t){if(Array.isArray(t)){for(var e=0,r=0;r=e||c===t.length-1)&&(n[i]=o,o.key=l++,o.firstRowIndex=s,o.lastRowIndex=c,o={firstRowIndex:null,lastRowIndex:null,rows:[]},i+=a,s=c+1,a=0);return n}e.exports=function(t,e){var r=l(e.cells.values),p=function(t){return t.slice(e.header.values.length,t.length)},d=l(e.header.values);d.length&&!d[0].length&&(d[0]=[\"\"],d=l(d));var g=d.concat(p(r).map((function(){return c((d[0]||[\"\"]).length)}))),m=e.domain,v=Math.floor(t._fullLayout._size.w*(m.x[1]-m.x[0])),y=Math.floor(t._fullLayout._size.h*(m.y[1]-m.y[0])),x=e.header.values.length?g[0].map((function(){return e.header.height})):[n.emptyHeaderHeight],b=r.length?r[0].map((function(){return e.cells.height})):[],_=x.reduce(s,0),w=h(b,y-_+n.uplift),T=f(h(x,_),[]),k=f(w,T),A={},M=e._fullInput.columnorder.concat(p(r.map((function(t,e){return e})))),S=g.map((function(t,r){var n=Array.isArray(e.columnwidth)?e.columnwidth[Math.min(r,e.columnwidth.length-1)]:e.columnwidth;return a(n)?Number(n):1})),E=S.reduce(s,0);S=S.map((function(t){return t/E*v}));var L=Math.max(o(e.header.line.width),o(e.cells.line.width)),C={key:e.uid+t._context.staticPlot,translateX:m.x[0]*t._fullLayout._size.w,translateY:t._fullLayout._size.h*(1-m.y[1]),size:t._fullLayout._size,width:v,maxLineWidth:L,height:y,columnOrder:M,groupHeight:y,rowBlocks:k,headerRowBlocks:T,scrollY:0,cells:i({},e.cells,{values:r}),headerCells:i({},e.header,{values:g}),gdColumns:g.map((function(t){return t[0]})),gdColumnsOriginalOrder:g.map((function(t){return t[0]})),prevPages:[0,0],scrollbarState:{scrollbarScrollInProgress:!1},columns:g.map((function(t,e){var r=A[t];return A[t]=(r||0)+1,{key:t+\"__\"+A[t],label:t,specIndex:e,xIndex:M[e],xScale:u,x:void 0,calcdata:void 0,columnWidth:S[e]}}))};return C.columns.forEach((function(t){t.calcdata=C,t.x=u(t)})),C}},{\"../../lib/extend\":493,\"./constants\":1065,\"fast-isnumeric\":190}],1067:[function(t,e,r){\"use strict\";var n=t(\"../../lib/extend\").extendFlat;r.splitToPanels=function(t){var e=[0,0],r=n({},t,{key:\"header\",type:\"header\",page:0,prevPages:e,currentRepaint:[null,null],dragHandle:!0,values:t.calcdata.headerCells.values[t.specIndex],rowBlocks:t.calcdata.headerRowBlocks,calcdata:n({},t.calcdata,{cells:t.calcdata.headerCells})});return[n({},t,{key:\"cells1\",type:\"cells\",page:0,prevPages:e,currentRepaint:[null,null],dragHandle:!1,values:t.calcdata.cells.values[t.specIndex],rowBlocks:t.calcdata.rowBlocks}),n({},t,{key:\"cells2\",type:\"cells\",page:1,prevPages:e,currentRepaint:[null,null],dragHandle:!1,values:t.calcdata.cells.values[t.specIndex],rowBlocks:t.calcdata.rowBlocks}),r]},r.splitToCells=function(t){var e=function(t){var e=t.rowBlocks[t.page],r=e?e.rows[0].rowIndex:0,n=e?r+e.rows.length:0;return[r,n]}(t);return(t.values||[]).slice(e[0],e[1]).map((function(r,n){return{keyWithinBlock:n+(\"string\"==typeof r&&r.match(/[<$&> ]/)?\"_keybuster_\"+Math.random():\"\"),key:e[0]+n,column:t,calcdata:t.calcdata,page:t.page,rowBlocks:t.rowBlocks,value:r}}))}},{\"../../lib/extend\":493}],1068:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./attributes\"),a=t(\"../../plots/domain\").defaults;e.exports=function(t,e,r,o){function s(r,a){return n.coerce(t,e,i,r,a)}a(e,o,s),s(\"columnwidth\"),s(\"header.values\"),s(\"header.format\"),s(\"header.align\"),s(\"header.prefix\"),s(\"header.suffix\"),s(\"header.height\"),s(\"header.line.width\"),s(\"header.line.color\"),s(\"header.fill.color\"),n.coerceFont(s,\"header.font\",n.extendFlat({},o.font)),function(t,e){for(var r=t.columnorder||[],n=t.header.values.length,i=r.slice(0,n),a=i.slice().sort((function(t,e){return t-e})),o=i.map((function(t){return a.indexOf(t)})),s=o.length;s/i),l=!o||s;t.mayHaveMarkup=o&&i.match(/[<&>]/);var c,u=\"string\"==typeof(c=i)&&c.match(n.latexCheck);t.latex=u;var f,h,p=u?\"\":T(t.calcdata.cells.prefix,e,r)||\"\",d=u?\"\":T(t.calcdata.cells.suffix,e,r)||\"\",g=u?null:T(t.calcdata.cells.format,e,r)||null,m=p+(g?a(g)(t.value):t.value)+d;if(t.wrappingNeeded=!t.wrapped&&!l&&!u&&(f=w(m)),t.cellHeightMayIncrease=s||u||t.mayHaveMarkup||(void 0===f?w(m):f),t.needsConvertToTspans=t.mayHaveMarkup||t.wrappingNeeded||t.latex,t.wrappingNeeded){var v=(\" \"===n.wrapSplitCharacter?m.replace(/i&&n.push(a),i+=l}return n}(i,l,s);1===c.length&&(c[0]===i.length-1?c.unshift(c[0]-1):c.push(c[0]+1)),c[0]%2&&c.reverse(),e.each((function(t,e){t.page=c[e],t.scrollY=l})),e.attr(\"transform\",(function(t){var e=D(t.rowBlocks,t.page)-t.scrollY;return u(0,e)})),t&&(C(t,r,e,c,n.prevPages,n,0),C(t,r,e,c,n.prevPages,n,1),x(r,t))}}function L(t,e,r,a){return function(o){var s=o.calcdata?o.calcdata:o,l=e.filter((function(t){return s.key===t.key})),c=r||s.scrollbarState.dragMultiplier,u=s.scrollY;s.scrollY=void 0===a?s.scrollY+c*i.event.dy:a;var f=l.selectAll(\".\"+n.cn.yColumn).selectAll(\".\"+n.cn.columnBlock).filter(A);return E(t,f,l),s.scrollY===u}}function C(t,e,r,n,i,a,o){n[o]!==i[o]&&(clearTimeout(a.currentRepaint[o]),a.currentRepaint[o]=setTimeout((function(){var a=r.filter((function(t,e){return e===o&&n[e]!==i[e]}));b(t,e,a,r),i[o]=n[o]})))}function P(t,e,r,a){return function(){var o=i.select(e.parentNode);o.each((function(t){var e=t.fragments;o.selectAll(\"tspan.line\").each((function(t,r){e[r].width=this.getComputedTextLength()}));var r,i,a=e[e.length-1].width,s=e.slice(0,-1),l=[],c=0,u=t.column.columnWidth-2*n.cellPad;for(t.value=\"\";s.length;)c+(i=(r=s.shift()).width+a)>u&&(t.value+=l.join(n.wrapSpacer)+n.lineBreaker,l=[],c=0),l.push(r.text),c+=i;c&&(t.value+=l.join(n.wrapSpacer)),t.wrapped=!0})),o.selectAll(\"tspan.line\").remove(),_(o.select(\".\"+n.cn.cellText),r,t,a),i.select(e.parentNode.parentNode).call(z)}}function I(t,e,r,a,o){return function(){if(!o.settledY){var s=i.select(e.parentNode),l=B(o),c=o.key-l.firstRowIndex,f=l.rows[c].rowHeight,h=o.cellHeightMayIncrease?e.parentNode.getBoundingClientRect().height+2*n.cellPad:f,p=Math.max(h,f);p-l.rows[c].rowHeight&&(l.rows[c].rowHeight=p,t.selectAll(\".\"+n.cn.columnCell).call(z),E(null,t.filter(A),0),x(r,a,!0)),s.attr(\"transform\",(function(){var t=this.parentNode.getBoundingClientRect(),e=i.select(this.parentNode).select(\".\"+n.cn.cellRect).node().getBoundingClientRect(),r=this.transform.baseVal.consolidate(),a=e.top-t.top+(r?r.matrix.f:n.cellPad);return u(O(o,i.select(this.parentNode).select(\".\"+n.cn.cellTextHolder).node().getBoundingClientRect().width),a)})),o.settledY=!0}}}function O(t,e){switch(t.align){case\"left\":return n.cellPad;case\"right\":return t.column.columnWidth-(e||0)-n.cellPad;case\"center\":return(t.column.columnWidth-(e||0))/2;default:return n.cellPad}}function z(t){t.attr(\"transform\",(function(t){var e=t.rowBlocks[0].auxiliaryBlocks.reduce((function(t,e){return t+R(e,1/0)}),0),r=R(B(t),t.key);return u(0,r+e)})).selectAll(\".\"+n.cn.cellRect).attr(\"height\",(function(t){return(e=B(t),r=t.key,e.rows[r-e.firstRowIndex]).rowHeight;var e,r}))}function D(t,e){for(var r=0,n=e-1;n>=0;n--)r+=F(t[n]);return r}function R(t,e){for(var r=0,n=0;n\",\"<\",\"|\",\"/\",\"\\\\\"],dflt:\">\",editType:\"plot\"},thickness:{valType:\"number\",min:12,editType:\"plot\"},textfont:u({},s.textfont,{}),editType:\"calc\"},text:s.text,textinfo:l.textinfo,texttemplate:i({editType:\"plot\"},{keys:c.eventDataKeys.concat([\"label\",\"value\"])}),hovertext:s.hovertext,hoverinfo:l.hoverinfo,hovertemplate:n({},{keys:c.eventDataKeys}),textfont:s.textfont,insidetextfont:s.insidetextfont,outsidetextfont:u({},s.outsidetextfont,{}),textposition:{valType:\"enumerated\",values:[\"top left\",\"top center\",\"top right\",\"middle left\",\"middle center\",\"middle right\",\"bottom left\",\"bottom center\",\"bottom right\"],dflt:\"top left\",editType:\"plot\"},sort:s.sort,root:l.root,domain:o({name:\"treemap\",trace:!0,editType:\"calc\"})}},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plots/domain\":584,\"../../plots/template_attributes\":633,\"../pie/attributes\":900,\"../sunburst/attributes\":1045,\"./constants\":1074}],1072:[function(t,e,r){\"use strict\";var n=t(\"../../plots/plots\");r.name=\"treemap\",r.plot=function(t,e,i,a){n.plotBasePlot(r.name,t,e,i,a)},r.clean=function(t,e,i,a){n.cleanBasePlot(r.name,t,e,i,a)}},{\"../../plots/plots\":619}],1073:[function(t,e,r){\"use strict\";var n=t(\"../sunburst/calc\");r.calc=function(t,e){return n.calc(t,e)},r.crossTraceCalc=function(t){return n._runCrossTraceCalc(\"treemap\",t)}},{\"../sunburst/calc\":1047}],1074:[function(t,e,r){\"use strict\";e.exports={CLICK_TRANSITION_TIME:750,CLICK_TRANSITION_EASING:\"poly\",eventDataKeys:[\"currentPath\",\"root\",\"entry\",\"percentRoot\",\"percentEntry\",\"percentParent\"],gapWithPathbar:1}},{}],1075:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./attributes\"),a=t(\"../../components/color\"),o=t(\"../../plots/domain\").defaults,s=t(\"../bar/defaults\").handleText,l=t(\"../bar/constants\").TEXTPAD,c=t(\"../../components/colorscale\"),u=c.hasColorscale,f=c.handleDefaults;e.exports=function(t,e,r,c){function h(r,a){return n.coerce(t,e,i,r,a)}var p=h(\"labels\"),d=h(\"parents\");if(p&&p.length&&d&&d.length){var g=h(\"values\");g&&g.length?h(\"branchvalues\"):h(\"count\"),h(\"level\"),h(\"maxdepth\"),\"squarify\"===h(\"tiling.packing\")&&h(\"tiling.squarifyratio\"),h(\"tiling.flip\"),h(\"tiling.pad\");var m=h(\"text\");h(\"texttemplate\"),e.texttemplate||h(\"textinfo\",Array.isArray(m)?\"text+label\":\"label\"),h(\"hovertext\"),h(\"hovertemplate\");var v=h(\"pathbar.visible\");s(t,e,c,h,\"auto\",{hasPathbar:v,moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),h(\"textposition\");var y=-1!==e.textposition.indexOf(\"bottom\");h(\"marker.line.width\")&&h(\"marker.line.color\",c.paper_bgcolor);var x=h(\"marker.colors\");(e._hasColorscale=u(t,\"marker\",\"colors\")||(t.marker||{}).coloraxis)?f(t,e,c,h,{prefix:\"marker.\",cLetter:\"c\"}):h(\"marker.depthfade\",!(x||[]).length);var b=2*e.textfont.size;h(\"marker.pad.t\",y?b/4:b),h(\"marker.pad.l\",b/4),h(\"marker.pad.r\",b/4),h(\"marker.pad.b\",y?b:b/4),e._hovered={marker:{line:{width:2,color:a.contrast(c.paper_bgcolor)}}},v&&(h(\"pathbar.thickness\",e.pathbar.textfont.size+2*l),h(\"pathbar.side\"),h(\"pathbar.edgeshape\")),h(\"sort\"),h(\"root.color\"),o(e,c,h),e._length=null}else e.visible=!1}},{\"../../components/color\":366,\"../../components/colorscale\":378,\"../../lib\":503,\"../../plots/domain\":584,\"../bar/constants\":650,\"../bar/defaults\":652,\"./attributes\":1071}],1076:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../sunburst/helpers\"),a=t(\"../bar/uniform_text\").clearMinTextSize,o=t(\"../bar/style\").resizeText,s=t(\"./plot_one\");e.exports=function(t,e,r,l,c){var u,f,h=c.type,p=c.drawDescendants,d=t._fullLayout,g=d[\"_\"+h+\"layer\"],m=!r;(a(h,d),(u=g.selectAll(\"g.trace.\"+h).data(e,(function(t){return t[0].trace.uid}))).enter().append(\"g\").classed(\"trace\",!0).classed(h,!0),u.order(),!d.uniformtext.mode&&i.hasTransition(r))?(l&&(f=l()),n.transition().duration(r.duration).ease(r.easing).each(\"end\",(function(){f&&f()})).each(\"interrupt\",(function(){f&&f()})).each((function(){g.selectAll(\"g.trace\").each((function(e){s(t,e,this,r,p)}))}))):(u.each((function(e){s(t,e,this,r,p)})),d.uniformtext.mode&&o(t,g.selectAll(\".trace\"),h));m&&u.exit().remove()}},{\"../bar/style\":662,\"../bar/uniform_text\":664,\"../sunburst/helpers\":1051,\"./plot_one\":1085,\"@plotly/d3\":58}],1077:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../components/drawing\"),o=t(\"../../lib/svg_text_utils\"),s=t(\"./partition\"),l=t(\"./style\").styleOne,c=t(\"./constants\"),u=t(\"../sunburst/helpers\"),f=t(\"../sunburst/fx\");e.exports=function(t,e,r,h,p){var d=p.barDifY,g=p.width,m=p.height,v=p.viewX,y=p.viewY,x=p.pathSlice,b=p.toMoveInsideSlice,_=p.strTransform,w=p.hasTransition,T=p.handleSlicesExit,k=p.makeUpdateSliceInterpolator,A=p.makeUpdateTextInterpolator,M={},S=t._fullLayout,E=e[0],L=E.trace,C=E.hierarchy,P=g/L._entryDepth,I=u.listPath(r.data,\"id\"),O=s(C.copy(),[g,m],{packing:\"dice\",pad:{inner:0,top:0,left:0,right:0,bottom:0}}).descendants();(O=O.filter((function(t){var e=I.indexOf(t.data.id);return-1!==e&&(t.x0=P*e,t.x1=P*(e+1),t.y0=d,t.y1=d+m,t.onPathbar=!0,!0)}))).reverse(),(h=h.data(O,u.getPtId)).enter().append(\"g\").classed(\"pathbar\",!0),T(h,!0,M,[g,m],x),h.order();var z=h;w&&(z=z.transition().each(\"end\",(function(){var e=n.select(this);u.setSliceCursor(e,t,{hideOnRoot:!1,hideOnLeaves:!1,isTransitioning:!1})}))),z.each((function(s){s._x0=v(s.x0),s._x1=v(s.x1),s._y0=y(s.y0),s._y1=y(s.y1),s._hoverX=v(s.x1-Math.min(g,m)/2),s._hoverY=y(s.y1-m/2);var h=n.select(this),p=i.ensureSingle(h,\"path\",\"surface\",(function(t){t.style(\"pointer-events\",\"all\")}));w?p.transition().attrTween(\"d\",(function(t){var e=k(t,!0,M,[g,m]);return function(t){return x(e(t))}})):p.attr(\"d\",x),h.call(f,r,t,e,{styleOne:l,eventDataKeys:c.eventDataKeys,transitionTime:c.CLICK_TRANSITION_TIME,transitionEasing:c.CLICK_TRANSITION_EASING}).call(u.setSliceCursor,t,{hideOnRoot:!1,hideOnLeaves:!1,isTransitioning:t._transitioning}),p.call(l,s,L,{hovered:!1}),s._text=(u.getPtLabel(s)||\"\").split(\"
\").join(\" \")||\"\";var d=i.ensureSingle(h,\"g\",\"slicetext\"),T=i.ensureSingle(d,\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),E=i.ensureUniformFontSize(t,u.determineTextFont(L,s,S.font,{onPathbar:!0}));T.text(s._text||\" \").classed(\"slicetext\",!0).attr(\"text-anchor\",\"start\").call(a.font,E).call(o.convertToTspans,t),s.textBB=a.bBox(T.node()),s.transform=b(s,{fontSize:E.size,onPathbar:!0}),s.transform.fontSize=E.size,w?T.transition().attrTween(\"transform\",(function(t){var e=A(t,!0,M,[g,m]);return function(t){return _(e(t))}})):T.attr(\"transform\",_(s))}))}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../sunburst/fx\":1050,\"../sunburst/helpers\":1051,\"./constants\":1074,\"./partition\":1083,\"./style\":1086,\"@plotly/d3\":58}],1078:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../components/drawing\"),o=t(\"../../lib/svg_text_utils\"),s=t(\"./partition\"),l=t(\"./style\").styleOne,c=t(\"./constants\"),u=t(\"../sunburst/helpers\"),f=t(\"../sunburst/fx\"),h=t(\"../sunburst/plot\").formatSliceLabel;e.exports=function(t,e,r,p,d){var g=d.width,m=d.height,v=d.viewX,y=d.viewY,x=d.pathSlice,b=d.toMoveInsideSlice,_=d.strTransform,w=d.hasTransition,T=d.handleSlicesExit,k=d.makeUpdateSliceInterpolator,A=d.makeUpdateTextInterpolator,M=d.prevEntry,S=t._fullLayout,E=e[0].trace,L=-1!==E.textposition.indexOf(\"left\"),C=-1!==E.textposition.indexOf(\"right\"),P=-1!==E.textposition.indexOf(\"bottom\"),I=!P&&!E.marker.pad.t||P&&!E.marker.pad.b,O=s(r,[g,m],{packing:E.tiling.packing,squarifyratio:E.tiling.squarifyratio,flipX:E.tiling.flip.indexOf(\"x\")>-1,flipY:E.tiling.flip.indexOf(\"y\")>-1,pad:{inner:E.tiling.pad,top:E.marker.pad.t,left:E.marker.pad.l,right:E.marker.pad.r,bottom:E.marker.pad.b}}).descendants(),z=1/0,D=-1/0;O.forEach((function(t){var e=t.depth;e>=E._maxDepth?(t.x0=t.x1=(t.x0+t.x1)/2,t.y0=t.y1=(t.y0+t.y1)/2):(z=Math.min(z,e),D=Math.max(D,e))})),p=p.data(O,u.getPtId),E._maxVisibleLayers=isFinite(D)?D-z+1:0,p.enter().append(\"g\").classed(\"slice\",!0),T(p,!1,{},[g,m],x),p.order();var R=null;if(w&&M){var F=u.getPtId(M);p.each((function(t){null===R&&u.getPtId(t)===F&&(R={x0:t.x0,x1:t.x1,y0:t.y0,y1:t.y1})}))}var B=function(){return R||{x0:0,x1:g,y0:0,y1:m}},N=p;return w&&(N=N.transition().each(\"end\",(function(){var e=n.select(this);u.setSliceCursor(e,t,{hideOnRoot:!0,hideOnLeaves:!1,isTransitioning:!1})}))),N.each((function(s){var p=u.isHeader(s,E);s._x0=v(s.x0),s._x1=v(s.x1),s._y0=y(s.y0),s._y1=y(s.y1),s._hoverX=v(s.x1-E.marker.pad.r),s._hoverY=y(P?s.y1-E.marker.pad.b/2:s.y0+E.marker.pad.t/2);var d=n.select(this),T=i.ensureSingle(d,\"path\",\"surface\",(function(t){t.style(\"pointer-events\",\"all\")}));w?T.transition().attrTween(\"d\",(function(t){var e=k(t,!1,B(),[g,m]);return function(t){return x(e(t))}})):T.attr(\"d\",x),d.call(f,r,t,e,{styleOne:l,eventDataKeys:c.eventDataKeys,transitionTime:c.CLICK_TRANSITION_TIME,transitionEasing:c.CLICK_TRANSITION_EASING}).call(u.setSliceCursor,t,{isTransitioning:t._transitioning}),T.call(l,s,E,{hovered:!1}),s.x0===s.x1||s.y0===s.y1?s._text=\"\":s._text=p?I?\"\":u.getPtLabel(s)||\"\":h(s,r,E,e,S)||\"\";var M=i.ensureSingle(d,\"g\",\"slicetext\"),O=i.ensureSingle(M,\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),z=i.ensureUniformFontSize(t,u.determineTextFont(E,s,S.font));O.text(s._text||\" \").classed(\"slicetext\",!0).attr(\"text-anchor\",C?\"end\":L||p?\"start\":\"middle\").call(a.font,z).call(o.convertToTspans,t),s.textBB=a.bBox(O.node()),s.transform=b(s,{fontSize:z.size,isHeader:p}),s.transform.fontSize=z.size,w?O.transition().attrTween(\"transform\",(function(t){var e=A(t,!1,B(),[g,m]);return function(t){return _(e(t))}})):O.attr(\"transform\",_(s))})),R}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../sunburst/fx\":1050,\"../sunburst/helpers\":1051,\"../sunburst/plot\":1055,\"./constants\":1074,\"./partition\":1083,\"./style\":1086,\"@plotly/d3\":58}],1079:[function(t,e,r){\"use strict\";e.exports=function t(e,r,n){var i;n.swapXY&&(i=e.x0,e.x0=e.y0,e.y0=i,i=e.x1,e.x1=e.y1,e.y1=i),n.flipX&&(i=e.x0,e.x0=r[0]-e.x1,e.x1=r[0]-i),n.flipY&&(i=e.y0,e.y0=r[1]-e.y1,e.y1=r[1]-i);var a=e.children;if(a)for(var o=0;o-1?C+O:-(I+O):0,D={x0:P,x1:P,y0:z,y1:z+I},R=function(t,e,r){var n=v.tiling.pad,i=function(t){return t-n<=e.x0},a=function(t){return t+n>=e.x1},o=function(t){return t-n<=e.y0},s=function(t){return t+n>=e.y1};return t.x0===e.x0&&t.x1===e.x1&&t.y0===e.y0&&t.y1===e.y1?{x0:t.x0,x1:t.x1,y0:t.y0,y1:t.y1}:{x0:i(t.x0-n)?0:a(t.x0-n)?r[0]:t.x0,x1:i(t.x1+n)?0:a(t.x1+n)?r[0]:t.x1,y0:o(t.y0-n)?0:s(t.y0-n)?r[1]:t.y0,y1:o(t.y1+n)?0:s(t.y1+n)?r[1]:t.y1}},F=null,B={},N={},j=null,U=function(t,e){return e?B[h(t)]:N[h(t)]},V=function(t,e,r,n){if(e)return B[h(x)]||D;var i=N[v.level]||r;return function(t){return t.data.depth-b.data.depth=(n-=(y?m:m.r)-s)){var x=(r+n)/2;r=x,n=x}var b;f?i<(b=a-(y?m:m.b))&&b\"===tt?(l.x-=a,c.x-=a,u.x-=a,f.x-=a):\"/\"===tt?(u.x-=a,f.x-=a,o.x-=a/2,s.x-=a/2):\"\\\\\"===tt?(l.x-=a,c.x-=a,o.x-=a/2,s.x-=a/2):\"<\"===tt&&(o.x-=a,s.x-=a),$(l),$(f),$(o),$(c),$(u),$(s),\"M\"+K(l.x,l.y)+\"L\"+K(c.x,c.y)+\"L\"+K(s.x,s.y)+\"L\"+K(u.x,u.y)+\"L\"+K(f.x,f.y)+\"L\"+K(o.x,o.y)+\"Z\"},toMoveInsideSlice:et,makeUpdateSliceInterpolator:nt,makeUpdateTextInterpolator:it,handleSlicesExit:at,hasTransition:A,strTransform:ot}):w.remove()}},{\"../../lib\":503,\"../bar/constants\":650,\"../bar/plot\":659,\"../bar/uniform_text\":664,\"../sunburst/helpers\":1051,\"./constants\":1074,\"./draw_ancestors\":1077,\"@plotly/d3\":58,\"d3-interpolate\":116}],1086:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../components/color\"),a=t(\"../../lib\"),o=t(\"../sunburst/helpers\"),s=t(\"../bar/uniform_text\").resizeText;function l(t,e,r,n){var s,l,c=(n||{}).hovered,u=e.data.data,f=u.i,h=u.color,p=o.isHierarchyRoot(e),d=1;if(c)s=r._hovered.marker.line.color,l=r._hovered.marker.line.width;else if(p&&h===r.root.color)d=100,s=\"rgba(0,0,0,0)\",l=0;else if(s=a.castOption(r,f,\"marker.line.color\")||i.defaultLine,l=a.castOption(r,f,\"marker.line.width\")||0,!r._hasColorscale&&!e.onPathbar){var g=r.marker.depthfade;if(g){var m,v=i.combine(i.addOpacity(r._backgroundColor,.75),h);if(!0===g){var y=o.getMaxDepth(r);m=isFinite(y)?o.isLeaf(e)?0:r._maxVisibleLayers-(e.data.depth-r._entryDepth):e.data.height+1}else m=e.data.depth-r._entryDepth,r._atRootLevel||m++;if(m>0)for(var x=0;x0){var x,b,_,w,T,k=t.xa,A=t.ya;\"h\"===p.orientation?(T=e,x=\"y\",_=A,b=\"x\",w=k):(T=r,x=\"x\",_=k,b=\"y\",w=A);var M=h[t.index];if(T>=M.span[0]&&T<=M.span[1]){var S=n.extendFlat({},t),E=w.c2p(T,!0),L=o.getKdeValue(M,p,T),C=o.getPositionOnKdePath(M,p,E),P=_._offset,I=_._length;S[x+\"0\"]=C[0],S[x+\"1\"]=C[1],S[b+\"0\"]=S[b+\"1\"]=E,S[b+\"Label\"]=b+\": \"+i.hoverLabelText(w,T,p[b+\"hoverformat\"])+\", \"+h[0].t.labels.kde+\" \"+L.toFixed(3),S.spikeDistance=y[0].spikeDistance;var O=x+\"Spike\";S[O]=y[0][O],y[0].spikeDistance=void 0,y[0][O]=void 0,S.hovertemplate=!1,v.push(S),(u={stroke:t.color})[x+\"1\"]=n.constrain(P+C[0],P,P+I),u[x+\"2\"]=n.constrain(P+C[1],P,P+I),u[b+\"1\"]=u[b+\"2\"]=w._offset+E}}g&&(v=v.concat(y))}-1!==d.indexOf(\"points\")&&(c=a.hoverOnPoints(t,e,r));var z=f.selectAll(\".violinline-\"+p.uid).data(u?[0]:[]);return z.enter().append(\"line\").classed(\"violinline-\"+p.uid,!0).attr(\"stroke-width\",1.5),z.exit().remove(),z.attr(u),\"closest\"===s?c?[c]:v:c?(v.push(c),v):v}},{\"../../lib\":503,\"../../plots/cartesian/axes\":554,\"../box/hover\":678,\"./helpers\":1091}],1093:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\"),crossTraceDefaults:t(\"../box/defaults\").crossTraceDefaults,supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\"),crossTraceCalc:t(\"./cross_trace_calc\"),plot:t(\"./plot\"),style:t(\"./style\"),styleOnSelect:t(\"../scatter/style\").styleOnSelect,hoverPoints:t(\"./hover\"),selectPoints:t(\"../box/select\"),moduleType:\"trace\",name:\"violin\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"cartesian\",\"svg\",\"symbols\",\"oriented\",\"box-violin\",\"showLegend\",\"violinLayout\",\"zoomScale\"],meta:{}}},{\"../../plots/cartesian\":568,\"../box/defaults\":676,\"../box/select\":683,\"../scatter/style\":950,\"./attributes\":1087,\"./calc\":1088,\"./cross_trace_calc\":1089,\"./defaults\":1090,\"./hover\":1092,\"./layout_attributes\":1094,\"./layout_defaults\":1095,\"./plot\":1096,\"./style\":1097}],1094:[function(t,e,r){\"use strict\";var n=t(\"../box/layout_attributes\"),i=t(\"../../lib\").extendFlat;e.exports={violinmode:i({},n.boxmode,{}),violingap:i({},n.boxgap,{}),violingroupgap:i({},n.boxgroupgap,{})}},{\"../../lib\":503,\"../box/layout_attributes\":680}],1095:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\"),a=t(\"../box/layout_defaults\");e.exports=function(t,e,r){a._supply(t,e,r,(function(r,a){return n.coerce(t,e,i,r,a)}),\"violin\")}},{\"../../lib\":503,\"../box/layout_defaults\":681,\"./layout_attributes\":1094}],1096:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../components/drawing\"),o=t(\"../box/plot\"),s=t(\"../scatter/line_points\"),l=t(\"./helpers\");e.exports=function(t,e,r,c){var u=t._fullLayout,f=e.xaxis,h=e.yaxis;function p(t){var e=s(t,{xaxis:f,yaxis:h,connectGaps:!0,baseTolerance:.75,shape:\"spline\",simplify:!0,linearized:!0});return a.smoothopen(e[0],1)}i.makeTraceGroups(c,r,\"trace violins\").each((function(t){var r=n.select(this),a=t[0],s=a.t,c=a.trace;if(!0!==c.visible||s.empty)r.remove();else{var d=s.bPos,g=s.bdPos,m=e[s.valLetter+\"axis\"],v=e[s.posLetter+\"axis\"],y=\"both\"===c.side,x=y||\"positive\"===c.side,b=y||\"negative\"===c.side,_=r.selectAll(\"path.violin\").data(i.identity);_.enter().append(\"path\").style(\"vector-effect\",\"non-scaling-stroke\").attr(\"class\",\"violin\"),_.exit().remove(),_.each((function(t){var e,r,i,a,o,l,f,h,_=n.select(this),w=t.density,T=w.length,k=v.c2l(t.pos+d,!0),A=v.l2p(k);if(c.width)e=s.maxKDE/g;else{var M=u._violinScaleGroupStats[c.scalegroup];e=\"count\"===c.scalemode?M.maxKDE/g*(M.maxCount/t.pts.length):M.maxKDE/g}if(x){for(f=new Array(T),o=0;o\")),u.color=function(t,e){var r=t[e.dir].marker,n=r.color,a=r.line.color,o=r.line.width;if(i(n))return n;if(i(a)&&o)return a}(h,m),[u]}function k(t){return n(g,t,h[d+\"hoverformat\"])}}},{\"../../components/color\":366,\"../../constants/delta.js\":473,\"../../plots/cartesian/axes\":554,\"../bar/hover\":655}],1109:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\").supplyDefaults,crossTraceDefaults:t(\"./defaults\").crossTraceDefaults,supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\"),crossTraceCalc:t(\"./cross_trace_calc\"),plot:t(\"./plot\"),style:t(\"./style\").style,hoverPoints:t(\"./hover\"),eventData:t(\"./event_data\"),selectPoints:t(\"../bar/select\"),moduleType:\"trace\",name:\"waterfall\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"bar-like\",\"cartesian\",\"svg\",\"oriented\",\"showLegend\",\"zoomScale\"],meta:{}}},{\"../../plots/cartesian\":568,\"../bar/select\":660,\"./attributes\":1102,\"./calc\":1103,\"./cross_trace_calc\":1105,\"./defaults\":1106,\"./event_data\":1107,\"./hover\":1108,\"./layout_attributes\":1110,\"./layout_defaults\":1111,\"./plot\":1112,\"./style\":1113}],1110:[function(t,e,r){\"use strict\";e.exports={waterfallmode:{valType:\"enumerated\",values:[\"group\",\"overlay\"],dflt:\"group\",editType:\"calc\"},waterfallgap:{valType:\"number\",min:0,max:1,editType:\"calc\"},waterfallgroupgap:{valType:\"number\",min:0,max:1,dflt:0,editType:\"calc\"}}},{}],1111:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e,r){var a=!1;function o(r,a){return n.coerce(t,e,i,r,a)}for(var s=0;s0&&(m+=h?\"M\"+f[0]+\",\"+d[1]+\"V\"+d[0]:\"M\"+f[1]+\",\"+d[0]+\"H\"+f[0]),\"between\"!==p&&(r.isSum||s path\").each((function(t){if(!t.isBlank){var e=s[t.dir].marker;n.select(this).call(a.fill,e.color).call(a.stroke,e.line.color).call(i.dashLine,e.line.dash,e.line.width).style(\"opacity\",s.selectedpoints&&!t.selected?o:1)}})),c(r,s,t),r.selectAll(\".lines\").each((function(){var t=s.connector.line;i.lineGroupStyle(n.select(this).selectAll(\"path\"),t.width,t.color,t.dash)}))}))}}},{\"../../components/color\":366,\"../../components/drawing\":388,\"../../constants/interactions\":478,\"../bar/style\":662,\"../bar/uniform_text\":664,\"@plotly/d3\":58}],1114:[function(t,e,r){\"use strict\";var n=t(\"../plots/cartesian/axes\"),i=t(\"../lib\"),a=t(\"../plot_api/plot_schema\"),o=t(\"./helpers\").pointsAccessorFunction,s=t(\"../constants/numerical\").BADNUM;r.moduleType=\"transform\",r.name=\"aggregate\";var l=r.attributes={enabled:{valType:\"boolean\",dflt:!0,editType:\"calc\"},groups:{valType:\"string\",strict:!0,noBlank:!0,arrayOk:!0,dflt:\"x\",editType:\"calc\"},aggregations:{_isLinkedToArray:\"aggregation\",target:{valType:\"string\",editType:\"calc\"},func:{valType:\"enumerated\",values:[\"count\",\"sum\",\"avg\",\"median\",\"mode\",\"rms\",\"stddev\",\"min\",\"max\",\"first\",\"last\",\"change\",\"range\"],dflt:\"first\",editType:\"calc\"},funcmode:{valType:\"enumerated\",values:[\"sample\",\"population\"],dflt:\"sample\",editType:\"calc\"},enabled:{valType:\"boolean\",dflt:!0,editType:\"calc\"},editType:\"calc\"},editType:\"calc\"},c=l.aggregations;function u(t,e,r,a){if(a.enabled){for(var o=a.target,l=i.nestedProperty(e,o),c=l.get(),u=function(t,e){var r=t.func,n=e.d2c,a=e.c2d;switch(r){case\"count\":return f;case\"first\":return h;case\"last\":return p;case\"sum\":return function(t,e){for(var r=0,i=0;ii&&(i=u,o=c)}}return i?a(o):s};case\"rms\":return function(t,e){for(var r=0,i=0,o=0;o\":return function(t){return h(t)>s};case\">=\":return function(t){return h(t)>=s};case\"[]\":return function(t){var e=h(t);return e>=s[0]&&e<=s[1]};case\"()\":return function(t){var e=h(t);return e>s[0]&&e=s[0]&&es[0]&&e<=s[1]};case\"][\":return function(t){var e=h(t);return e<=s[0]||e>=s[1]};case\")(\":return function(t){var e=h(t);return es[1]};case\"](\":return function(t){var e=h(t);return e<=s[0]||e>s[1]};case\")[\":return function(t){var e=h(t);return e=s[1]};case\"{}\":return function(t){return-1!==s.indexOf(h(t))};case\"}{\":return function(t){return-1===s.indexOf(h(t))}}}(r,a.getDataToCoordFunc(t,e,s,i),h),x={},b={},_=0;d?(m=function(t){x[t.astr]=n.extendDeep([],t.get()),t.set(new Array(f))},v=function(t,e){var r=x[t.astr][e];t.get()[e]=r}):(m=function(t){x[t.astr]=n.extendDeep([],t.get()),t.set([])},v=function(t,e){var r=x[t.astr][e];t.get().push(r)}),k(m);for(var w=o(e.transforms,r),T=0;T1?\"%{group} (%{trace})\":\"%{group}\");var l=t.styles,c=o.styles=[];if(l)for(a=0;a0?o-4:o;for(r=0;r>16&255,l[u++]=e>>8&255,l[u++]=255&e;2===s&&(e=i[t.charCodeAt(r)]<<2|i[t.charCodeAt(r+1)]>>4,l[u++]=255&e);1===s&&(e=i[t.charCodeAt(r)]<<10|i[t.charCodeAt(r+1)]<<4|i[t.charCodeAt(r+2)]>>2,l[u++]=e>>8&255,l[u++]=255&e);return l},r.fromByteArray=function(t){for(var e,r=t.length,i=r%3,a=[],o=0,s=r-i;os?s:o+16383));1===i?(e=t[r-1],a.push(n[e>>2]+n[e<<4&63]+\"==\")):2===i&&(e=(t[r-2]<<8)+t[r-1],a.push(n[e>>10]+n[e>>4&63]+n[e<<2&63]+\"=\"));return a.join(\"\")};for(var n=[],i=[],a=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",s=0,l=o.length;s0)throw new Error(\"Invalid string. Length must be a multiple of 4\");var r=t.indexOf(\"=\");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function u(t,e,r){for(var i,a,o=[],s=e;s>18&63]+n[a>>12&63]+n[a>>6&63]+n[63&a]);return o.join(\"\")}i[\"-\".charCodeAt(0)]=62,i[\"_\".charCodeAt(0)]=63},{}],2:[function(t,e,r){},{}],3:[function(t,e,r){(function(e){(function(){\n", "/*!\n", " * The buffer module from node.js, for the browser.\n", " *\n", @@ -156,7 +156,7 @@ " * Copyright (c) 2014-2015, Jon Schlinkert.\n", " * Licensed under the MIT License.\n", " */\n", - "\"use strict\";var n,i=\"\";e.exports=function(t,e){if(\"string\"!=typeof t)throw new TypeError(\"expected a string\");if(1===e)return t;if(2===e)return t+t;var r=t.length*e;if(n!==t||void 0===n)n=t,i=\"\";else if(i.length>=r)return i.substr(0,r);for(;r>i.length&&e>1;)1&e&&(i+=t),e>>=1,t+=t;return i=(i+=t).substr(0,r)}},{}],278:[function(t,e,r){(function(t){(function(){e.exports=t.performance&&t.performance.now?function(){return performance.now()}:Date.now||function(){return+new Date}}).call(this)}).call(this,void 0!==n?n:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],279:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e=t.length,r=t[t.length-1],n=e,i=e-2;i>=0;--i){var a=r,o=t[i];(l=o-((r=a+o)-a))&&(t[--n]=r,r=l)}var s=0;for(i=n;i0){if(a<=0)return o;n=i+a}else{if(!(i<0))return o;if(a>=0)return o;n=-(i+a)}var s=33306690738754716e-32*n;return o>=s||o<=-s?o:f(t,e,r)},function(t,e,r,n){var i=t[0]-n[0],a=e[0]-n[0],o=r[0]-n[0],s=t[1]-n[1],l=e[1]-n[1],c=r[1]-n[1],u=t[2]-n[2],f=e[2]-n[2],p=r[2]-n[2],d=a*c,g=o*l,m=o*s,v=i*c,y=i*l,x=a*s,b=u*(d-g)+f*(m-v)+p*(y-x),_=7771561172376103e-31*((Math.abs(d)+Math.abs(g))*Math.abs(u)+(Math.abs(m)+Math.abs(v))*Math.abs(f)+(Math.abs(y)+Math.abs(x))*Math.abs(p));return b>_||-b>_?b:h(t,e,r,n)}];function d(t){var e=p[t.length];return e||(e=p[t.length]=u(t.length)),e.apply(void 0,t)}function g(t,e,r,n,i,a,o){return function(e,r,s,l,c){switch(arguments.length){case 0:case 1:return 0;case 2:return n(e,r);case 3:return i(e,r,s);case 4:return a(e,r,s,l);case 5:return o(e,r,s,l,c)}for(var u=new Array(arguments.length),f=0;f0&&o>0||a<0&&o<0)return!1;var s=n(r,t,e),l=n(i,t,e);if(s>0&&l>0||s<0&&l<0)return!1;if(0===a&&0===o&&0===s&&0===l)return function(t,e,r,n){for(var i=0;i<2;++i){var a=t[i],o=e[i],s=Math.min(a,o),l=Math.max(a,o),c=r[i],u=n[i],f=Math.min(c,u);if(Math.max(c,u)=n?(i=f,(l+=1)=n?(i=f,(l+=1)>1,c=e[2*l+1];if(c===a)return l;a>1,c=e[2*l+1];if(c===a)return l;a>1,c=e[2*l+1];if(c===a)return l;a>1,s=a(t[o],e);s<=0?(0===s&&(i=o),r=o+1):s>0&&(n=o-1)}return i}function u(t,e){for(var r=new Array(t.length),i=0,o=r.length;i=t.length||0!==a(t[m],s)););}return r}function f(t,e){if(e<0)return[];for(var r=[],i=(1<>>u&1&&c.push(i[u]);e.push(c)}return s(e)},r.skeleton=f,r.boundary=function(t){for(var e=[],r=0,n=t.length;r>1:(t>>1)-1}function x(t){for(var e=v(t);;){var r=e,n=2*t+1,i=2*(t+1),a=t;if(n0;){var r=y(t);if(r>=0)if(e0){var t=k[0];return m(0,M-1),M-=1,x(0),t}return-1}function w(t,e){var r=k[t];return c[r]===e?t:(c[r]=-1/0,b(t),_(),c[r]=e,b((M+=1)-1))}function T(t){if(!u[t]){u[t]=!0;var e=s[t],r=l[t];s[r]>=0&&(s[r]=e),l[e]>=0&&(l[e]=r),A[e]>=0&&w(A[e],g(e)),A[r]>=0&&w(A[r],g(r))}}var k=[],A=new Array(a);for(f=0;f>1;f>=0;--f)x(f);for(;;){var S=_();if(S<0||c[S]>r)break;T(S)}var E=[];for(f=0;f=0&&r>=0&&e!==r){var n=A[e],i=A[r];n!==i&&C.push([n,i])}})),i.unique(i.normalize(C)),{positions:E,edges:C}};var n=t(\"robust-orientation\"),i=t(\"simplicial-complex\")},{\"robust-orientation\":284,\"simplicial-complex\":295}],298:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r,a,o,s;if(e[0][0]e[1][0]))return i(e,t);r=e[1],a=e[0]}if(t[0][0]t[1][0]))return-i(t,e);o=t[1],s=t[0]}var l=n(r,a,s),c=n(r,a,o);if(l<0){if(c<=0)return l}else if(l>0){if(c>=0)return l}else if(c)return c;if(l=n(s,o,a),c=n(s,o,r),l<0){if(c<=0)return l}else if(l>0){if(c>=0)return l}else if(c)return c;return a[0]-s[0]};var n=t(\"robust-orientation\");function i(t,e){var r,i,a,o;if(e[0][0]e[1][0])){var s=Math.min(t[0][1],t[1][1]),l=Math.max(t[0][1],t[1][1]),c=Math.min(e[0][1],e[1][1]),u=Math.max(e[0][1],e[1][1]);return lu?s-u:l-u}r=e[1],i=e[0]}t[0][1]0)if(e[0]!==o[1][0])r=t,t=t.right;else{if(l=c(t.right,e))return l;t=t.left}else{if(e[0]!==o[1][0])return t;var l;if(l=c(t.right,e))return l;t=t.left}}return r}function u(t,e,r,n){this.y=t,this.index=e,this.start=r,this.closed=n}function f(t,e,r,n){this.x=t,this.segment=e,this.create=r,this.index=n}s.prototype.castUp=function(t){var e=n.le(this.coordinates,t[0]);if(e<0)return-1;this.slabs[e];var r=c(this.slabs[e],t),i=-1;if(r&&(i=r.value),this.coordinates[e]===t[0]){var s=null;if(r&&(s=r.key),e>0){var u=c(this.slabs[e-1],t);u&&(s?o(u.key,s)>0&&(s=u.key,i=u.value):(i=u.value,s=u.key))}var f=this.horizontal[e];if(f.length>0){var h=n.ge(f,t[1],l);if(h=f.length)return i;p=f[h]}}if(p.start)if(s){var d=a(s[0],s[1],[t[0],p.y]);s[0][0]>s[1][0]&&(d=-d),d>0&&(i=p.index)}else i=p.index;else p.y!==t[1]&&(i=p.index)}}}return i}},{\"./lib/order-segments\":298,\"binary-search-bounds\":31,\"functional-red-black-tree\":69,\"robust-orientation\":284}],300:[function(t,e,r){\"use strict\";var n=t(\"robust-dot-product\"),i=t(\"robust-sum\");function a(t,e){var r=i(n(t,e),[e[e.length-1]]);return r[r.length-1]}function o(t,e,r,n){var i=-e/(n-e);i<0?i=0:i>1&&(i=1);for(var a=1-i,o=t.length,s=new Array(o),l=0;l0||i>0&&u<0){var f=o(s,u,l,i);r.push(f),n.push(f.slice())}u<0?n.push(l.slice()):u>0?r.push(l.slice()):(r.push(l.slice()),n.push(l.slice())),i=u}return{positive:r,negative:n}},e.exports.positive=function(t,e){for(var r=[],n=a(t[t.length-1],e),i=t[t.length-1],s=t[0],l=0;l0||n>0&&c<0)&&r.push(o(i,c,s,n)),c>=0&&r.push(s.slice()),n=c}return r},e.exports.negative=function(t,e){for(var r=[],n=a(t[t.length-1],e),i=t[t.length-1],s=t[0],l=0;l0||n>0&&c<0)&&r.push(o(i,c,s,n)),c<=0&&r.push(s.slice()),n=c}return r}},{\"robust-dot-product\":281,\"robust-sum\":289}],301:[function(t,e,r){!function(){\"use strict\";var t={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\\x25]+/,modulo:/^\\x25{2}/,placeholder:/^\\x25(?:([1-9]\\d*)\\$|\\(([^)]+)\\))?(\\+)?(0|'[^$])?(-)?(\\d+)?(?:\\.(\\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\\d]*)/i,key_access:/^\\.([a-z_][a-z_\\d]*)/i,index_access:/^\\[(\\d+)\\]/,sign:/^[+-]/};function e(t){return i(o(t),arguments)}function n(t,r){return e.apply(null,[t].concat(r||[]))}function i(r,n){var i,a,o,s,l,c,u,f,h,p=1,d=r.length,g=\"\";for(a=0;a=0),s.type){case\"b\":i=parseInt(i,10).toString(2);break;case\"c\":i=String.fromCharCode(parseInt(i,10));break;case\"d\":case\"i\":i=parseInt(i,10);break;case\"j\":i=JSON.stringify(i,null,s.width?parseInt(s.width):0);break;case\"e\":i=s.precision?parseFloat(i).toExponential(s.precision):parseFloat(i).toExponential();break;case\"f\":i=s.precision?parseFloat(i).toFixed(s.precision):parseFloat(i);break;case\"g\":i=s.precision?String(Number(i.toPrecision(s.precision))):parseFloat(i);break;case\"o\":i=(parseInt(i,10)>>>0).toString(8);break;case\"s\":i=String(i),i=s.precision?i.substring(0,s.precision):i;break;case\"t\":i=String(!!i),i=s.precision?i.substring(0,s.precision):i;break;case\"T\":i=Object.prototype.toString.call(i).slice(8,-1).toLowerCase(),i=s.precision?i.substring(0,s.precision):i;break;case\"u\":i=parseInt(i,10)>>>0;break;case\"v\":i=i.valueOf(),i=s.precision?i.substring(0,s.precision):i;break;case\"x\":i=(parseInt(i,10)>>>0).toString(16);break;case\"X\":i=(parseInt(i,10)>>>0).toString(16).toUpperCase()}t.json.test(s.type)?g+=i:(!t.number.test(s.type)||f&&!s.sign?h=\"\":(h=f?\"+\":\"-\",i=i.toString().replace(t.sign,\"\")),c=s.pad_char?\"0\"===s.pad_char?\"0\":s.pad_char.charAt(1):\" \",u=s.width-(h+i).length,l=s.width&&u>0?c.repeat(u):\"\",g+=s.align?h+i+l:\"0\"===c?h+l+i:l+h+i)}return g}var a=Object.create(null);function o(e){if(a[e])return a[e];for(var r,n=e,i=[],o=0;n;){if(null!==(r=t.text.exec(n)))i.push(r[0]);else if(null!==(r=t.modulo.exec(n)))i.push(\"%\");else{if(null===(r=t.placeholder.exec(n)))throw new SyntaxError(\"[sprintf] unexpected placeholder\");if(r[2]){o|=1;var s=[],l=r[2],c=[];if(null===(c=t.key.exec(l)))throw new SyntaxError(\"[sprintf] failed to parse named argument key\");for(s.push(c[1]);\"\"!==(l=l.substring(c[0].length));)if(null!==(c=t.key_access.exec(l)))s.push(c[1]);else{if(null===(c=t.index_access.exec(l)))throw new SyntaxError(\"[sprintf] failed to parse named argument key\");s.push(c[1])}r[2]=s}else o|=2;if(3===o)throw new Error(\"[sprintf] mixing positional and named placeholders is not (yet) supported\");i.push({placeholder:r[0],param_no:r[1],keys:r[2],sign:r[3],pad_char:r[4],align:r[5],width:r[6],precision:r[7],type:r[8]})}n=n.substring(r[0].length)}return a[e]=i}void 0!==r&&(r.sprintf=e,r.vsprintf=n),\"undefined\"!=typeof window&&(window.sprintf=e,window.vsprintf=n)}()},{}],302:[function(t,e,r){\"use strict\";e.exports=function(t,e){if(t.dimension<=0)return{positions:[],cells:[]};if(1===t.dimension)return function(t,e){for(var r=i(t,e),n=r.length,a=new Array(n),o=new Array(n),s=0;sn|0},vertex:function(t,e,r,n,i,a,o,s,l,c,u,f,h){var p=(o<<0)+(s<<1)+(l<<2)+(c<<3)|0;if(0!==p&&15!==p)switch(p){case 0:u.push([t-.5,e-.5]);break;case 1:u.push([t-.25-.25*(n+r-2*h)/(r-n),e-.25-.25*(i+r-2*h)/(r-i)]);break;case 2:u.push([t-.75-.25*(-n-r+2*h)/(n-r),e-.25-.25*(a+n-2*h)/(n-a)]);break;case 3:u.push([t-.5,e-.5-.5*(i+r+a+n-4*h)/(r-i+n-a)]);break;case 4:u.push([t-.25-.25*(a+i-2*h)/(i-a),e-.75-.25*(-i-r+2*h)/(i-r)]);break;case 5:u.push([t-.5-.5*(n+r+a+i-4*h)/(r-n+i-a),e-.5]);break;case 6:u.push([t-.5-.25*(-n-r+a+i)/(n-r+i-a),e-.5-.25*(-i-r+a+n)/(i-r+n-a)]);break;case 7:u.push([t-.75-.25*(a+i-2*h)/(i-a),e-.75-.25*(a+n-2*h)/(n-a)]);break;case 8:u.push([t-.75-.25*(-a-i+2*h)/(a-i),e-.75-.25*(-a-n+2*h)/(a-n)]);break;case 9:u.push([t-.5-.25*(n+r+-a-i)/(r-n+a-i),e-.5-.25*(i+r+-a-n)/(r-i+a-n)]);break;case 10:u.push([t-.5-.5*(-n-r-a-i+4*h)/(n-r+a-i),e-.5]);break;case 11:u.push([t-.25-.25*(-a-i+2*h)/(a-i),e-.75-.25*(i+r-2*h)/(r-i)]);break;case 12:u.push([t-.5,e-.5-.5*(-i-r-a-n+4*h)/(i-r+a-n)]);break;case 13:u.push([t-.75-.25*(n+r-2*h)/(r-n),e-.25-.25*(-a-n+2*h)/(a-n)]);break;case 14:u.push([t-.25-.25*(-n-r+2*h)/(n-r),e-.25-.25*(-i-r+2*h)/(i-r)]);break;case 15:u.push([t-.5,e-.5])}},cell:function(t,e,r,n,i,a,o,s,l){i?s.push([t,e]):s.push([e,t])}});return function(t,e){var r=[],i=[];return n(t,r,i,e),{positions:r,cells:i}}}};var o={}},{\"ndarray-extract-contour\":251,\"zero-crossings\":318}],303:[function(t,e,r){(function(r){(function(){\"use strict\";e.exports=function t(e,r,i){i=i||{};var o=a[e];o||(o=a[e]={\" \":{data:new Float32Array(0),shape:.2}});var s=o[r];if(!s)if(r.length<=1||!/\\d/.test(r))s=o[r]=function(t){for(var e=t.cells,r=t.positions,n=new Float32Array(6*e.length),i=0,a=0,o=0;o0&&(f+=.02);var p=new Float32Array(u),d=0,g=-.5*f;for(h=0;hMath.max(r,n)?i[2]=1:r>Math.max(e,n)?i[0]=1:i[1]=1;for(var a=0,o=0,l=0;l<3;++l)a+=t[l]*t[l],o+=i[l]*t[l];for(l=0;l<3;++l)i[l]-=o/a*t[l];return s(i,i),i}function h(t,e,r,i,a,o,s,l){this.center=n(r),this.up=n(i),this.right=n(a),this.radius=n([o]),this.angle=n([s,l]),this.angle.bounds=[[-1/0,-Math.PI/2],[1/0,Math.PI/2]],this.setDistanceLimits(t,e),this.computedCenter=this.center.curve(0),this.computedUp=this.up.curve(0),this.computedRight=this.right.curve(0),this.computedRadius=this.radius.curve(0),this.computedAngle=this.angle.curve(0),this.computedToward=[0,0,0],this.computedEye=[0,0,0],this.computedMatrix=new Array(16);for(var c=0;c<16;++c)this.computedMatrix[c]=.5;this.recalcMatrix(0)}var p=h.prototype;p.setDistanceLimits=function(t,e){t=t>0?Math.log(t):-1/0,e=e>0?Math.log(e):1/0,e=Math.max(e,t),this.radius.bounds[0][0]=t,this.radius.bounds[1][0]=e},p.getDistanceLimits=function(t){var e=this.radius.bounds[0];return t?(t[0]=Math.exp(e[0][0]),t[1]=Math.exp(e[1][0]),t):[Math.exp(e[0][0]),Math.exp(e[1][0])]},p.recalcMatrix=function(t){this.center.curve(t),this.up.curve(t),this.right.curve(t),this.radius.curve(t),this.angle.curve(t);for(var e=this.computedUp,r=this.computedRight,n=0,i=0,a=0;a<3;++a)i+=e[a]*r[a],n+=e[a]*e[a];var l=Math.sqrt(n),u=0;for(a=0;a<3;++a)r[a]-=e[a]*i/n,u+=r[a]*r[a],e[a]/=l;var f=Math.sqrt(u);for(a=0;a<3;++a)r[a]/=f;var h=this.computedToward;o(h,e,r),s(h,h);var p=Math.exp(this.computedRadius[0]),d=this.computedAngle[0],g=this.computedAngle[1],m=Math.cos(d),v=Math.sin(d),y=Math.cos(g),x=Math.sin(g),b=this.computedCenter,_=m*y,w=v*y,T=x,k=-m*x,A=-v*x,M=y,S=this.computedEye,E=this.computedMatrix;for(a=0;a<3;++a){var L=_*r[a]+w*h[a]+T*e[a];E[4*a+1]=k*r[a]+A*h[a]+M*e[a],E[4*a+2]=L,E[4*a+3]=0}var C=E[1],P=E[5],I=E[9],O=E[2],z=E[6],D=E[10],R=P*D-I*z,F=I*O-C*D,B=C*z-P*O,N=c(R,F,B);R/=N,F/=N,B/=N,E[0]=R,E[4]=F,E[8]=B;for(a=0;a<3;++a)S[a]=b[a]+E[2+4*a]*p;for(a=0;a<3;++a){u=0;for(var j=0;j<3;++j)u+=E[a+4*j]*S[j];E[12+a]=-u}E[15]=1},p.getMatrix=function(t,e){this.recalcMatrix(t);var r=this.computedMatrix;if(e){for(var n=0;n<16;++n)e[n]=r[n];return e}return r};var d=[0,0,0];p.rotate=function(t,e,r,n){if(this.angle.move(t,e,r),n){this.recalcMatrix(t);var i=this.computedMatrix;d[0]=i[2],d[1]=i[6],d[2]=i[10];for(var o=this.computedUp,s=this.computedRight,l=this.computedToward,c=0;c<3;++c)i[4*c]=o[c],i[4*c+1]=s[c],i[4*c+2]=l[c];a(i,i,n,d);for(c=0;c<3;++c)o[c]=i[4*c],s[c]=i[4*c+1];this.up.set(t,o[0],o[1],o[2]),this.right.set(t,s[0],s[1],s[2])}},p.pan=function(t,e,r,n){e=e||0,r=r||0,n=n||0,this.recalcMatrix(t);var i=this.computedMatrix,a=(Math.exp(this.computedRadius[0]),i[1]),o=i[5],s=i[9],l=c(a,o,s);a/=l,o/=l,s/=l;var u=i[0],f=i[4],h=i[8],p=u*a+f*o+h*s,d=c(u-=a*p,f-=o*p,h-=s*p),g=(u/=d)*e+a*r,m=(f/=d)*e+o*r,v=(h/=d)*e+s*r;this.center.move(t,g,m,v);var y=Math.exp(this.computedRadius[0]);y=Math.max(1e-4,y+n),this.radius.set(t,Math.log(y))},p.translate=function(t,e,r,n){this.center.move(t,e||0,r||0,n||0)},p.setMatrix=function(t,e,r,n){var a=1;\"number\"==typeof r&&(a=0|r),(a<0||a>3)&&(a=1);var o=(a+2)%3;e||(this.recalcMatrix(t),e=this.computedMatrix);var s=e[a],l=e[a+4],f=e[a+8];if(n){var h=Math.abs(s),p=Math.abs(l),d=Math.abs(f),g=Math.max(h,p,d);h===g?(s=s<0?-1:1,l=f=0):d===g?(f=f<0?-1:1,s=l=0):(l=l<0?-1:1,s=f=0)}else{var m=c(s,l,f);s/=m,l/=m,f/=m}var v,y,x=e[o],b=e[o+4],_=e[o+8],w=x*s+b*l+_*f,T=c(x-=s*w,b-=l*w,_-=f*w),k=l*(_/=T)-f*(b/=T),A=f*(x/=T)-s*_,M=s*b-l*x,S=c(k,A,M);if(k/=S,A/=S,M/=S,this.center.jump(t,q,G,Y),this.radius.idle(t),this.up.jump(t,s,l,f),this.right.jump(t,x,b,_),2===a){var E=e[1],L=e[5],C=e[9],P=E*x+L*b+C*_,I=E*k+L*A+C*M;v=R<0?-Math.PI/2:Math.PI/2,y=Math.atan2(I,P)}else{var O=e[2],z=e[6],D=e[10],R=O*s+z*l+D*f,F=O*x+z*b+D*_,B=O*k+z*A+D*M;v=Math.asin(u(R)),y=Math.atan2(B,F)}this.angle.jump(t,y,v),this.recalcMatrix(t);var N=e[2],j=e[6],U=e[10],V=this.computedMatrix;i(V,e);var H=V[15],q=V[12]/H,G=V[13]/H,Y=V[14]/H,W=Math.exp(this.computedRadius[0]);this.center.jump(t,q-N*W,G-j*W,Y-U*W)},p.lastT=function(){return Math.max(this.center.lastT(),this.up.lastT(),this.right.lastT(),this.radius.lastT(),this.angle.lastT())},p.idle=function(t){this.center.idle(t),this.up.idle(t),this.right.idle(t),this.radius.idle(t),this.angle.idle(t)},p.flush=function(t){this.center.flush(t),this.up.flush(t),this.right.flush(t),this.radius.flush(t),this.angle.flush(t)},p.setDistance=function(t,e){e>0&&this.radius.set(t,Math.log(e))},p.lookAt=function(t,e,r,n){this.recalcMatrix(t),e=e||this.computedEye,r=r||this.computedCenter;var i=(n=n||this.computedUp)[0],a=n[1],o=n[2],s=c(i,a,o);if(!(s<1e-6)){i/=s,a/=s,o/=s;var l=e[0]-r[0],f=e[1]-r[1],h=e[2]-r[2],p=c(l,f,h);if(!(p<1e-6)){l/=p,f/=p,h/=p;var d=this.computedRight,g=d[0],m=d[1],v=d[2],y=i*g+a*m+o*v,x=c(g-=y*i,m-=y*a,v-=y*o);if(!(x<.01&&(x=c(g=a*h-o*f,m=o*l-i*h,v=i*f-a*l))<1e-6)){g/=x,m/=x,v/=x,this.up.set(t,i,a,o),this.right.set(t,g,m,v),this.center.set(t,r[0],r[1],r[2]),this.radius.set(t,Math.log(p));var b=a*v-o*m,_=o*g-i*v,w=i*m-a*g,T=c(b,_,w),k=i*l+a*f+o*h,A=g*l+m*f+v*h,M=(b/=T)*l+(_/=T)*f+(w/=T)*h,S=Math.asin(u(k)),E=Math.atan2(M,A),L=this.angle._state,C=L[L.length-1],P=L[L.length-2];C%=2*Math.PI;var I=Math.abs(C+2*Math.PI-E),O=Math.abs(C-E),z=Math.abs(C-2*Math.PI-E);I0?r.pop():new ArrayBuffer(t)}function d(t){return new Uint8Array(p(t),0,t)}function g(t){return new Uint16Array(p(2*t),0,t)}function m(t){return new Uint32Array(p(4*t),0,t)}function v(t){return new Int8Array(p(t),0,t)}function y(t){return new Int16Array(p(2*t),0,t)}function x(t){return new Int32Array(p(4*t),0,t)}function b(t){return new Float32Array(p(4*t),0,t)}function _(t){return new Float64Array(p(8*t),0,t)}function w(t){return o?new Uint8ClampedArray(p(t),0,t):d(t)}function T(t){return s?new BigUint64Array(p(8*t),0,t):null}function k(t){return l?new BigInt64Array(p(8*t),0,t):null}function A(t){return new DataView(p(t),0,t)}function M(t){t=n.nextPow2(t);var e=n.log2(t),r=f[e];return r.length>0?r.pop():new a(t)}r.free=function(t){if(a.isBuffer(t))f[n.log2(t.length)].push(t);else{if(\"[object ArrayBuffer]\"!==Object.prototype.toString.call(t)&&(t=t.buffer),!t)return;var e=t.length||t.byteLength,r=0|n.log2(e);u[r].push(t)}},r.freeUint8=r.freeUint16=r.freeUint32=r.freeBigUint64=r.freeInt8=r.freeInt16=r.freeInt32=r.freeBigInt64=r.freeFloat32=r.freeFloat=r.freeFloat64=r.freeDouble=r.freeUint8Clamped=r.freeDataView=function(t){h(t.buffer)},r.freeArrayBuffer=h,r.freeBuffer=function(t){f[n.log2(t.length)].push(t)},r.malloc=function(t,e){if(void 0===e||\"arraybuffer\"===e)return p(t);switch(e){case\"uint8\":return d(t);case\"uint16\":return g(t);case\"uint32\":return m(t);case\"int8\":return v(t);case\"int16\":return y(t);case\"int32\":return x(t);case\"float\":case\"float32\":return b(t);case\"double\":case\"float64\":return _(t);case\"uint8_clamped\":return w(t);case\"bigint64\":return k(t);case\"biguint64\":return T(t);case\"buffer\":return M(t);case\"data\":case\"dataview\":return A(t);default:return null}return null},r.mallocArrayBuffer=p,r.mallocUint8=d,r.mallocUint16=g,r.mallocUint32=m,r.mallocInt8=v,r.mallocInt16=y,r.mallocInt32=x,r.mallocFloat32=r.mallocFloat=b,r.mallocFloat64=r.mallocDouble=_,r.mallocUint8Clamped=w,r.mallocBigUint64=T,r.mallocBigInt64=k,r.mallocDataView=A,r.mallocBuffer=M,r.clearCache=function(){for(var t=0;t<32;++t)c.UINT8[t].length=0,c.UINT16[t].length=0,c.UINT32[t].length=0,c.INT8[t].length=0,c.INT16[t].length=0,c.INT32[t].length=0,c.FLOAT[t].length=0,c.DOUBLE[t].length=0,c.BIGUINT64[t].length=0,c.BIGINT64[t].length=0,c.UINT8C[t].length=0,u[t].length=0,f[t].length=0}}).call(this)}).call(this,void 0!==n?n:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"bit-twiddle\":32,buffer:3,dup:65}],309:[function(t,e,r){\"use strict\";function n(t){this.roots=new Array(t),this.ranks=new Array(t);for(var e=0;e0&&(a=n.size),n.lineSpacing&&n.lineSpacing>0&&(o=n.lineSpacing),n.styletags&&n.styletags.breaklines&&(s.breaklines=!!n.styletags.breaklines),n.styletags&&n.styletags.bolds&&(s.bolds=!!n.styletags.bolds),n.styletags&&n.styletags.italics&&(s.italics=!!n.styletags.italics),n.styletags&&n.styletags.subscripts&&(s.subscripts=!!n.styletags.subscripts),n.styletags&&n.styletags.superscripts&&(s.superscripts=!!n.styletags.superscripts));return r.font=[n.fontStyle,n.fontVariant,n.fontWeight,a+\"px\",n.font].filter((function(t){return t})).join(\" \"),r.textAlign=\"start\",r.textBaseline=\"alphabetic\",r.direction=\"ltr\",h(function(t,e,r,n,a,o){r=r.replace(/\\n/g,\"\"),r=!0===o.breaklines?r.replace(/\\/g,\"\\n\"):r.replace(/\\/g,\" \");var s=\"\",l=[];for(p=0;p-1?parseInt(t[1+i]):0,l=a>-1?parseInt(r[1+a]):0;s!==l&&(n=n.replace(S(),\"?px \"),m*=Math.pow(.75,l-s),n=n.replace(\"?px \",S())),g+=.25*x*(l-s)}if(!0===o.superscripts){var c=t.indexOf(\"+\"),u=r.indexOf(\"+\"),f=c>-1?parseInt(t[1+c]):0,h=u>-1?parseInt(r[1+u]):0;f!==h&&(n=n.replace(S(),\"?px \"),m*=Math.pow(.75,h-f),n=n.replace(\"?px \",S())),g-=.25*x*(h-f)}if(!0===o.bolds){var p=t.indexOf(\"b|\")>-1,d=r.indexOf(\"b|\")>-1;!p&&d&&(n=v?n.replace(\"italic \",\"italic bold \"):\"bold \"+n),p&&!d&&(n=n.replace(\"bold \",\"\"))}if(!0===o.italics){var v=t.indexOf(\"i|\")>-1,y=r.indexOf(\"i|\")>-1;!v&&y&&(n=\"italic \"+n),v&&!y&&(n=n.replace(\"italic \",\"\"))}e.font=n}for(h=0;h\",a=\"\",o=i.length,s=a.length,l=\"+\"===e[0]||\"-\"===e[0],c=0,u=-s;c>-1&&-1!==(c=r.indexOf(i,c))&&-1!==(u=r.indexOf(a,c+o))&&!(u<=c);){for(var f=c;f=u)n[f]=null,r=r.substr(0,f)+\" \"+r.substr(f+1);else if(null!==n[f]){var h=n[f].indexOf(e[0]);-1===h?n[f]+=e:l&&(n[f]=n[f].substr(0,h+1)+(1+parseInt(n[f][h+1]))+n[f].substr(h+2))}var p=c+o,d=r.substr(p,u-p).indexOf(i);c=-1!==d?d:u+s}return n}function u(t,e){var r=n(t,128);return e?a(r.cells,r.positions,.25):{edges:r.cells,positions:r.positions}}function f(t,e,r,n){var i=u(t,n),a=function(t,e,r){for(var n=e.textAlign||\"start\",i=e.textBaseline||\"alphabetic\",a=[1<<30,1<<30],o=[0,0],s=t.length,l=0;l=0?e[a]:i}))},has___:{value:y((function(e){var n=v(e);return n?r in n:t.indexOf(e)>=0}))},set___:{value:y((function(n,i){var a,o=v(n);return o?o[r]=i:(a=t.indexOf(n))>=0?e[a]=i:(a=t.length,e[a]=i,t[a]=n),this}))},delete___:{value:y((function(n){var i,a,o=v(n);return o?r in o&&delete o[r]:!((i=t.indexOf(n))<0)&&(a=t.length-1,t[i]=void 0,e[i]=e[a],t[i]=t[a],t.length=a,e.length=a,!0)}))}})};d.prototype=Object.create(Object.prototype,{get:{value:function(t,e){return this.get___(t,e)},writable:!0,configurable:!0},has:{value:function(t){return this.has___(t)},writable:!0,configurable:!0},set:{value:function(t,e){return this.set___(t,e)},writable:!0,configurable:!0},delete:{value:function(t){return this.delete___(t)},writable:!0,configurable:!0}}),\"function\"==typeof r?function(){function n(){this instanceof d||x();var e,n=new r,i=void 0,a=!1;return e=t?function(t,e){return n.set(t,e),n.has(t)||(i||(i=new d),i.set(t,e)),this}:function(t,e){if(a)try{n.set(t,e)}catch(r){i||(i=new d),i.set___(t,e)}else n.set(t,e);return this},Object.create(d.prototype,{get___:{value:y((function(t,e){return i?n.has(t)?n.get(t):i.get___(t,e):n.get(t,e)}))},has___:{value:y((function(t){return n.has(t)||!!i&&i.has___(t)}))},set___:{value:y(e)},delete___:{value:y((function(t){var e=!!n.delete(t);return i&&i.delete___(t)||e}))},permitHostObjects___:{value:y((function(t){if(t!==g)throw new Error(\"bogus call to permitHostObjects___\");a=!0}))}})}t&&\"undefined\"!=typeof Proxy&&(Proxy=void 0),n.prototype=d.prototype,e.exports=n,Object.defineProperty(WeakMap.prototype,\"constructor\",{value:WeakMap,enumerable:!1,configurable:!0,writable:!0})}():(\"undefined\"!=typeof Proxy&&(Proxy=void 0),e.exports=d)}function g(t){t.permitHostObjects___&&t.permitHostObjects___(g)}function m(t){return!(\"weakmap:\"==t.substr(0,\"weakmap:\".length)&&\"___\"===t.substr(t.length-3))}function v(t){if(t!==Object(t))throw new TypeError(\"Not an object: \"+t);var e=t[l];if(e&&e.key===t)return e;if(s(t)){e={key:t};try{return o(t,l,{value:e,writable:!1,enumerable:!1,configurable:!1}),e}catch(t){return}}}function y(t){return t.prototype=null,Object.freeze(t)}function x(){h||\"undefined\"==typeof console||(h=!0,console.warn(\"WeakMap should be invoked as new WeakMap(), not WeakMap(). This will be an error in the future.\"))}}()},{}],314:[function(t,e,r){var n=t(\"./hidden-store.js\");e.exports=function(){var t={};return function(e){if((\"object\"!=typeof e||null===e)&&\"function\"!=typeof e)throw new Error(\"Weakmap-shim: Key must be object\");var r=e.valueOf(t);return r&&r.identity===t?r:n(e,t)}}},{\"./hidden-store.js\":315}],315:[function(t,e,r){e.exports=function(t,e){var r={identity:e},n=t.valueOf;return Object.defineProperty(t,\"valueOf\",{value:function(t){return t!==e?n.apply(this,arguments):r},writable:!0}),r}},{}],316:[function(t,e,r){var n=t(\"./create-store.js\");e.exports=function(){var t=n();return{get:function(e,r){var n=t(e);return n.hasOwnProperty(\"value\")?n.value:r},set:function(e,r){return t(e).value=r,this},has:function(e){return\"value\"in t(e)},delete:function(e){return delete t(e).value}}}},{\"./create-store.js\":314}],317:[function(t,e,r){\"use strict\";var n,i=function(){return function(t,e,r,n,i,a){var o=t[0],s=r[0],l=[0],c=s;n|=0;var u=0,f=s;for(u=0;u=0!=p>=0&&i.push(l[0]+.5+.5*(h+p)/(h-p)),n+=f,++l[0]}}};e.exports=(n={funcName:{funcName:\"zeroCrossings\"}.funcName},function(t){var e={};return function(r,n,i){var a=r.dtype,o=r.order,s=[a,o.join()].join(),l=e[s];return l||(e[s]=l=t([a,o])),l(r.shape.slice(0),r.data,r.stride,0|r.offset,n,i)}}(i.bind(void 0,n)))},{}],318:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r=[];return e=+e||0,n(t.hi(t.shape[0]-1),r,e),r};var n=t(\"./lib/zc-core\")},{\"./lib/zc-core\":317}]},{},[6])(6)}))}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}]},{},[27])(27)}));\n", + "\"use strict\";var n,i=\"\";e.exports=function(t,e){if(\"string\"!=typeof t)throw new TypeError(\"expected a string\");if(1===e)return t;if(2===e)return t+t;var r=t.length*e;if(n!==t||void 0===n)n=t,i=\"\";else if(i.length>=r)return i.substr(0,r);for(;r>i.length&&e>1;)1&e&&(i+=t),e>>=1,t+=t;return i=(i+=t).substr(0,r)}},{}],278:[function(t,e,r){(function(t){(function(){e.exports=t.performance&&t.performance.now?function(){return performance.now()}:Date.now||function(){return+new Date}}).call(this)}).call(this,void 0!==n?n:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],279:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e=t.length,r=t[t.length-1],n=e,i=e-2;i>=0;--i){var a=r,o=t[i];(l=o-((r=a+o)-a))&&(t[--n]=r,r=l)}var s=0;for(i=n;i0){if(a<=0)return o;n=i+a}else{if(!(i<0))return o;if(a>=0)return o;n=-(i+a)}var s=33306690738754716e-32*n;return o>=s||o<=-s?o:f(t,e,r)},function(t,e,r,n){var i=t[0]-n[0],a=e[0]-n[0],o=r[0]-n[0],s=t[1]-n[1],l=e[1]-n[1],c=r[1]-n[1],u=t[2]-n[2],f=e[2]-n[2],p=r[2]-n[2],d=a*c,g=o*l,m=o*s,v=i*c,y=i*l,x=a*s,b=u*(d-g)+f*(m-v)+p*(y-x),_=7771561172376103e-31*((Math.abs(d)+Math.abs(g))*Math.abs(u)+(Math.abs(m)+Math.abs(v))*Math.abs(f)+(Math.abs(y)+Math.abs(x))*Math.abs(p));return b>_||-b>_?b:h(t,e,r,n)}];function d(t){var e=p[t.length];return e||(e=p[t.length]=u(t.length)),e.apply(void 0,t)}function g(t,e,r,n,i,a,o){return function(e,r,s,l,c){switch(arguments.length){case 0:case 1:return 0;case 2:return n(e,r);case 3:return i(e,r,s);case 4:return a(e,r,s,l);case 5:return o(e,r,s,l,c)}for(var u=new Array(arguments.length),f=0;f0&&o>0||a<0&&o<0)return!1;var s=n(r,t,e),l=n(i,t,e);if(s>0&&l>0||s<0&&l<0)return!1;if(0===a&&0===o&&0===s&&0===l)return function(t,e,r,n){for(var i=0;i<2;++i){var a=t[i],o=e[i],s=Math.min(a,o),l=Math.max(a,o),c=r[i],u=n[i],f=Math.min(c,u);if(Math.max(c,u)=n?(i=f,(l+=1)=n?(i=f,(l+=1)>1,c=e[2*l+1];if(c===a)return l;a>1,c=e[2*l+1];if(c===a)return l;a>1,c=e[2*l+1];if(c===a)return l;a>1,s=a(t[o],e);s<=0?(0===s&&(i=o),r=o+1):s>0&&(n=o-1)}return i}function u(t,e){for(var r=new Array(t.length),i=0,o=r.length;i=t.length||0!==a(t[m],s)););}return r}function f(t,e){if(e<0)return[];for(var r=[],i=(1<>>u&1&&c.push(i[u]);e.push(c)}return s(e)},r.skeleton=f,r.boundary=function(t){for(var e=[],r=0,n=t.length;r>1:(t>>1)-1}function x(t){for(var e=v(t);;){var r=e,n=2*t+1,i=2*(t+1),a=t;if(n0;){var r=y(t);if(r>=0)if(e0){var t=k[0];return m(0,M-1),M-=1,x(0),t}return-1}function w(t,e){var r=k[t];return c[r]===e?t:(c[r]=-1/0,b(t),_(),c[r]=e,b((M+=1)-1))}function T(t){if(!u[t]){u[t]=!0;var e=s[t],r=l[t];s[r]>=0&&(s[r]=e),l[e]>=0&&(l[e]=r),A[e]>=0&&w(A[e],g(e)),A[r]>=0&&w(A[r],g(r))}}var k=[],A=new Array(a);for(f=0;f>1;f>=0;--f)x(f);for(;;){var S=_();if(S<0||c[S]>r)break;T(S)}var E=[];for(f=0;f=0&&r>=0&&e!==r){var n=A[e],i=A[r];n!==i&&C.push([n,i])}})),i.unique(i.normalize(C)),{positions:E,edges:C}};var n=t(\"robust-orientation\"),i=t(\"simplicial-complex\")},{\"robust-orientation\":284,\"simplicial-complex\":295}],298:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r,a,o,s;if(e[0][0]e[1][0]))return i(e,t);r=e[1],a=e[0]}if(t[0][0]t[1][0]))return-i(t,e);o=t[1],s=t[0]}var l=n(r,a,s),c=n(r,a,o);if(l<0){if(c<=0)return l}else if(l>0){if(c>=0)return l}else if(c)return c;if(l=n(s,o,a),c=n(s,o,r),l<0){if(c<=0)return l}else if(l>0){if(c>=0)return l}else if(c)return c;return a[0]-s[0]};var n=t(\"robust-orientation\");function i(t,e){var r,i,a,o;if(e[0][0]e[1][0])){var s=Math.min(t[0][1],t[1][1]),l=Math.max(t[0][1],t[1][1]),c=Math.min(e[0][1],e[1][1]),u=Math.max(e[0][1],e[1][1]);return lu?s-u:l-u}r=e[1],i=e[0]}t[0][1]0)if(e[0]!==o[1][0])r=t,t=t.right;else{if(l=c(t.right,e))return l;t=t.left}else{if(e[0]!==o[1][0])return t;var l;if(l=c(t.right,e))return l;t=t.left}}return r}function u(t,e,r,n){this.y=t,this.index=e,this.start=r,this.closed=n}function f(t,e,r,n){this.x=t,this.segment=e,this.create=r,this.index=n}s.prototype.castUp=function(t){var e=n.le(this.coordinates,t[0]);if(e<0)return-1;this.slabs[e];var r=c(this.slabs[e],t),i=-1;if(r&&(i=r.value),this.coordinates[e]===t[0]){var s=null;if(r&&(s=r.key),e>0){var u=c(this.slabs[e-1],t);u&&(s?o(u.key,s)>0&&(s=u.key,i=u.value):(i=u.value,s=u.key))}var f=this.horizontal[e];if(f.length>0){var h=n.ge(f,t[1],l);if(h=f.length)return i;p=f[h]}}if(p.start)if(s){var d=a(s[0],s[1],[t[0],p.y]);s[0][0]>s[1][0]&&(d=-d),d>0&&(i=p.index)}else i=p.index;else p.y!==t[1]&&(i=p.index)}}}return i}},{\"./lib/order-segments\":298,\"binary-search-bounds\":31,\"functional-red-black-tree\":69,\"robust-orientation\":284}],300:[function(t,e,r){\"use strict\";var n=t(\"robust-dot-product\"),i=t(\"robust-sum\");function a(t,e){var r=i(n(t,e),[e[e.length-1]]);return r[r.length-1]}function o(t,e,r,n){var i=-e/(n-e);i<0?i=0:i>1&&(i=1);for(var a=1-i,o=t.length,s=new Array(o),l=0;l0||i>0&&u<0){var f=o(s,u,l,i);r.push(f),n.push(f.slice())}u<0?n.push(l.slice()):u>0?r.push(l.slice()):(r.push(l.slice()),n.push(l.slice())),i=u}return{positive:r,negative:n}},e.exports.positive=function(t,e){for(var r=[],n=a(t[t.length-1],e),i=t[t.length-1],s=t[0],l=0;l0||n>0&&c<0)&&r.push(o(i,c,s,n)),c>=0&&r.push(s.slice()),n=c}return r},e.exports.negative=function(t,e){for(var r=[],n=a(t[t.length-1],e),i=t[t.length-1],s=t[0],l=0;l0||n>0&&c<0)&&r.push(o(i,c,s,n)),c<=0&&r.push(s.slice()),n=c}return r}},{\"robust-dot-product\":281,\"robust-sum\":289}],301:[function(t,e,r){!function(){\"use strict\";var t={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\\x25]+/,modulo:/^\\x25{2}/,placeholder:/^\\x25(?:([1-9]\\d*)\\$|\\(([^)]+)\\))?(\\+)?(0|'[^$])?(-)?(\\d+)?(?:\\.(\\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\\d]*)/i,key_access:/^\\.([a-z_][a-z_\\d]*)/i,index_access:/^\\[(\\d+)\\]/,sign:/^[+-]/};function e(t){return i(o(t),arguments)}function n(t,r){return e.apply(null,[t].concat(r||[]))}function i(r,n){var i,a,o,s,l,c,u,f,h,p=1,d=r.length,g=\"\";for(a=0;a=0),s.type){case\"b\":i=parseInt(i,10).toString(2);break;case\"c\":i=String.fromCharCode(parseInt(i,10));break;case\"d\":case\"i\":i=parseInt(i,10);break;case\"j\":i=JSON.stringify(i,null,s.width?parseInt(s.width):0);break;case\"e\":i=s.precision?parseFloat(i).toExponential(s.precision):parseFloat(i).toExponential();break;case\"f\":i=s.precision?parseFloat(i).toFixed(s.precision):parseFloat(i);break;case\"g\":i=s.precision?String(Number(i.toPrecision(s.precision))):parseFloat(i);break;case\"o\":i=(parseInt(i,10)>>>0).toString(8);break;case\"s\":i=String(i),i=s.precision?i.substring(0,s.precision):i;break;case\"t\":i=String(!!i),i=s.precision?i.substring(0,s.precision):i;break;case\"T\":i=Object.prototype.toString.call(i).slice(8,-1).toLowerCase(),i=s.precision?i.substring(0,s.precision):i;break;case\"u\":i=parseInt(i,10)>>>0;break;case\"v\":i=i.valueOf(),i=s.precision?i.substring(0,s.precision):i;break;case\"x\":i=(parseInt(i,10)>>>0).toString(16);break;case\"X\":i=(parseInt(i,10)>>>0).toString(16).toUpperCase()}t.json.test(s.type)?g+=i:(!t.number.test(s.type)||f&&!s.sign?h=\"\":(h=f?\"+\":\"-\",i=i.toString().replace(t.sign,\"\")),c=s.pad_char?\"0\"===s.pad_char?\"0\":s.pad_char.charAt(1):\" \",u=s.width-(h+i).length,l=s.width&&u>0?c.repeat(u):\"\",g+=s.align?h+i+l:\"0\"===c?h+l+i:l+h+i)}return g}var a=Object.create(null);function o(e){if(a[e])return a[e];for(var r,n=e,i=[],o=0;n;){if(null!==(r=t.text.exec(n)))i.push(r[0]);else if(null!==(r=t.modulo.exec(n)))i.push(\"%\");else{if(null===(r=t.placeholder.exec(n)))throw new SyntaxError(\"[sprintf] unexpected placeholder\");if(r[2]){o|=1;var s=[],l=r[2],c=[];if(null===(c=t.key.exec(l)))throw new SyntaxError(\"[sprintf] failed to parse named argument key\");for(s.push(c[1]);\"\"!==(l=l.substring(c[0].length));)if(null!==(c=t.key_access.exec(l)))s.push(c[1]);else{if(null===(c=t.index_access.exec(l)))throw new SyntaxError(\"[sprintf] failed to parse named argument key\");s.push(c[1])}r[2]=s}else o|=2;if(3===o)throw new Error(\"[sprintf] mixing positional and named placeholders is not (yet) supported\");i.push({placeholder:r[0],param_no:r[1],keys:r[2],sign:r[3],pad_char:r[4],align:r[5],width:r[6],precision:r[7],type:r[8]})}n=n.substring(r[0].length)}return a[e]=i}void 0!==r&&(r.sprintf=e,r.vsprintf=n),\"undefined\"!=typeof window&&(window.sprintf=e,window.vsprintf=n)}()},{}],302:[function(t,e,r){\"use strict\";e.exports=function(t,e){if(t.dimension<=0)return{positions:[],cells:[]};if(1===t.dimension)return function(t,e){for(var r=i(t,e),n=r.length,a=new Array(n),o=new Array(n),s=0;sn|0},vertex:function(t,e,r,n,i,a,o,s,l,c,u,f,h){var p=(o<<0)+(s<<1)+(l<<2)+(c<<3)|0;if(0!==p&&15!==p)switch(p){case 0:u.push([t-.5,e-.5]);break;case 1:u.push([t-.25-.25*(n+r-2*h)/(r-n),e-.25-.25*(i+r-2*h)/(r-i)]);break;case 2:u.push([t-.75-.25*(-n-r+2*h)/(n-r),e-.25-.25*(a+n-2*h)/(n-a)]);break;case 3:u.push([t-.5,e-.5-.5*(i+r+a+n-4*h)/(r-i+n-a)]);break;case 4:u.push([t-.25-.25*(a+i-2*h)/(i-a),e-.75-.25*(-i-r+2*h)/(i-r)]);break;case 5:u.push([t-.5-.5*(n+r+a+i-4*h)/(r-n+i-a),e-.5]);break;case 6:u.push([t-.5-.25*(-n-r+a+i)/(n-r+i-a),e-.5-.25*(-i-r+a+n)/(i-r+n-a)]);break;case 7:u.push([t-.75-.25*(a+i-2*h)/(i-a),e-.75-.25*(a+n-2*h)/(n-a)]);break;case 8:u.push([t-.75-.25*(-a-i+2*h)/(a-i),e-.75-.25*(-a-n+2*h)/(a-n)]);break;case 9:u.push([t-.5-.25*(n+r+-a-i)/(r-n+a-i),e-.5-.25*(i+r+-a-n)/(r-i+a-n)]);break;case 10:u.push([t-.5-.5*(-n-r-a-i+4*h)/(n-r+a-i),e-.5]);break;case 11:u.push([t-.25-.25*(-a-i+2*h)/(a-i),e-.75-.25*(i+r-2*h)/(r-i)]);break;case 12:u.push([t-.5,e-.5-.5*(-i-r-a-n+4*h)/(i-r+a-n)]);break;case 13:u.push([t-.75-.25*(n+r-2*h)/(r-n),e-.25-.25*(-a-n+2*h)/(a-n)]);break;case 14:u.push([t-.25-.25*(-n-r+2*h)/(n-r),e-.25-.25*(-i-r+2*h)/(i-r)]);break;case 15:u.push([t-.5,e-.5])}},cell:function(t,e,r,n,i,a,o,s,l){i?s.push([t,e]):s.push([e,t])}});return function(t,e){var r=[],i=[];return n(t,r,i,e),{positions:r,cells:i}}}};var o={}},{\"ndarray-extract-contour\":251,\"zero-crossings\":318}],303:[function(t,e,r){(function(r){(function(){\"use strict\";e.exports=function t(e,r,i){i=i||{};var o=a[e];o||(o=a[e]={\" \":{data:new Float32Array(0),shape:.2}});var s=o[r];if(!s)if(r.length<=1||!/\\d/.test(r))s=o[r]=function(t){for(var e=t.cells,r=t.positions,n=new Float32Array(6*e.length),i=0,a=0,o=0;o0&&(f+=.02);var p=new Float32Array(u),d=0,g=-.5*f;for(h=0;hMath.max(r,n)?i[2]=1:r>Math.max(e,n)?i[0]=1:i[1]=1;for(var a=0,o=0,l=0;l<3;++l)a+=t[l]*t[l],o+=i[l]*t[l];for(l=0;l<3;++l)i[l]-=o/a*t[l];return s(i,i),i}function h(t,e,r,i,a,o,s,l){this.center=n(r),this.up=n(i),this.right=n(a),this.radius=n([o]),this.angle=n([s,l]),this.angle.bounds=[[-1/0,-Math.PI/2],[1/0,Math.PI/2]],this.setDistanceLimits(t,e),this.computedCenter=this.center.curve(0),this.computedUp=this.up.curve(0),this.computedRight=this.right.curve(0),this.computedRadius=this.radius.curve(0),this.computedAngle=this.angle.curve(0),this.computedToward=[0,0,0],this.computedEye=[0,0,0],this.computedMatrix=new Array(16);for(var c=0;c<16;++c)this.computedMatrix[c]=.5;this.recalcMatrix(0)}var p=h.prototype;p.setDistanceLimits=function(t,e){t=t>0?Math.log(t):-1/0,e=e>0?Math.log(e):1/0,e=Math.max(e,t),this.radius.bounds[0][0]=t,this.radius.bounds[1][0]=e},p.getDistanceLimits=function(t){var e=this.radius.bounds[0];return t?(t[0]=Math.exp(e[0][0]),t[1]=Math.exp(e[1][0]),t):[Math.exp(e[0][0]),Math.exp(e[1][0])]},p.recalcMatrix=function(t){this.center.curve(t),this.up.curve(t),this.right.curve(t),this.radius.curve(t),this.angle.curve(t);for(var e=this.computedUp,r=this.computedRight,n=0,i=0,a=0;a<3;++a)i+=e[a]*r[a],n+=e[a]*e[a];var l=Math.sqrt(n),u=0;for(a=0;a<3;++a)r[a]-=e[a]*i/n,u+=r[a]*r[a],e[a]/=l;var f=Math.sqrt(u);for(a=0;a<3;++a)r[a]/=f;var h=this.computedToward;o(h,e,r),s(h,h);var p=Math.exp(this.computedRadius[0]),d=this.computedAngle[0],g=this.computedAngle[1],m=Math.cos(d),v=Math.sin(d),y=Math.cos(g),x=Math.sin(g),b=this.computedCenter,_=m*y,w=v*y,T=x,k=-m*x,A=-v*x,M=y,S=this.computedEye,E=this.computedMatrix;for(a=0;a<3;++a){var L=_*r[a]+w*h[a]+T*e[a];E[4*a+1]=k*r[a]+A*h[a]+M*e[a],E[4*a+2]=L,E[4*a+3]=0}var C=E[1],P=E[5],I=E[9],O=E[2],z=E[6],D=E[10],R=P*D-I*z,F=I*O-C*D,B=C*z-P*O,N=c(R,F,B);R/=N,F/=N,B/=N,E[0]=R,E[4]=F,E[8]=B;for(a=0;a<3;++a)S[a]=b[a]+E[2+4*a]*p;for(a=0;a<3;++a){u=0;for(var j=0;j<3;++j)u+=E[a+4*j]*S[j];E[12+a]=-u}E[15]=1},p.getMatrix=function(t,e){this.recalcMatrix(t);var r=this.computedMatrix;if(e){for(var n=0;n<16;++n)e[n]=r[n];return e}return r};var d=[0,0,0];p.rotate=function(t,e,r,n){if(this.angle.move(t,e,r),n){this.recalcMatrix(t);var i=this.computedMatrix;d[0]=i[2],d[1]=i[6],d[2]=i[10];for(var o=this.computedUp,s=this.computedRight,l=this.computedToward,c=0;c<3;++c)i[4*c]=o[c],i[4*c+1]=s[c],i[4*c+2]=l[c];a(i,i,n,d);for(c=0;c<3;++c)o[c]=i[4*c],s[c]=i[4*c+1];this.up.set(t,o[0],o[1],o[2]),this.right.set(t,s[0],s[1],s[2])}},p.pan=function(t,e,r,n){e=e||0,r=r||0,n=n||0,this.recalcMatrix(t);var i=this.computedMatrix,a=(Math.exp(this.computedRadius[0]),i[1]),o=i[5],s=i[9],l=c(a,o,s);a/=l,o/=l,s/=l;var u=i[0],f=i[4],h=i[8],p=u*a+f*o+h*s,d=c(u-=a*p,f-=o*p,h-=s*p),g=(u/=d)*e+a*r,m=(f/=d)*e+o*r,v=(h/=d)*e+s*r;this.center.move(t,g,m,v);var y=Math.exp(this.computedRadius[0]);y=Math.max(1e-4,y+n),this.radius.set(t,Math.log(y))},p.translate=function(t,e,r,n){this.center.move(t,e||0,r||0,n||0)},p.setMatrix=function(t,e,r,n){var a=1;\"number\"==typeof r&&(a=0|r),(a<0||a>3)&&(a=1);var o=(a+2)%3;e||(this.recalcMatrix(t),e=this.computedMatrix);var s=e[a],l=e[a+4],f=e[a+8];if(n){var h=Math.abs(s),p=Math.abs(l),d=Math.abs(f),g=Math.max(h,p,d);h===g?(s=s<0?-1:1,l=f=0):d===g?(f=f<0?-1:1,s=l=0):(l=l<0?-1:1,s=f=0)}else{var m=c(s,l,f);s/=m,l/=m,f/=m}var v,y,x=e[o],b=e[o+4],_=e[o+8],w=x*s+b*l+_*f,T=c(x-=s*w,b-=l*w,_-=f*w),k=l*(_/=T)-f*(b/=T),A=f*(x/=T)-s*_,M=s*b-l*x,S=c(k,A,M);if(k/=S,A/=S,M/=S,this.center.jump(t,q,G,Y),this.radius.idle(t),this.up.jump(t,s,l,f),this.right.jump(t,x,b,_),2===a){var E=e[1],L=e[5],C=e[9],P=E*x+L*b+C*_,I=E*k+L*A+C*M;v=R<0?-Math.PI/2:Math.PI/2,y=Math.atan2(I,P)}else{var O=e[2],z=e[6],D=e[10],R=O*s+z*l+D*f,F=O*x+z*b+D*_,B=O*k+z*A+D*M;v=Math.asin(u(R)),y=Math.atan2(B,F)}this.angle.jump(t,y,v),this.recalcMatrix(t);var N=e[2],j=e[6],U=e[10],V=this.computedMatrix;i(V,e);var H=V[15],q=V[12]/H,G=V[13]/H,Y=V[14]/H,W=Math.exp(this.computedRadius[0]);this.center.jump(t,q-N*W,G-j*W,Y-U*W)},p.lastT=function(){return Math.max(this.center.lastT(),this.up.lastT(),this.right.lastT(),this.radius.lastT(),this.angle.lastT())},p.idle=function(t){this.center.idle(t),this.up.idle(t),this.right.idle(t),this.radius.idle(t),this.angle.idle(t)},p.flush=function(t){this.center.flush(t),this.up.flush(t),this.right.flush(t),this.radius.flush(t),this.angle.flush(t)},p.setDistance=function(t,e){e>0&&this.radius.set(t,Math.log(e))},p.lookAt=function(t,e,r,n){this.recalcMatrix(t),e=e||this.computedEye,r=r||this.computedCenter;var i=(n=n||this.computedUp)[0],a=n[1],o=n[2],s=c(i,a,o);if(!(s<1e-6)){i/=s,a/=s,o/=s;var l=e[0]-r[0],f=e[1]-r[1],h=e[2]-r[2],p=c(l,f,h);if(!(p<1e-6)){l/=p,f/=p,h/=p;var d=this.computedRight,g=d[0],m=d[1],v=d[2],y=i*g+a*m+o*v,x=c(g-=y*i,m-=y*a,v-=y*o);if(!(x<.01&&(x=c(g=a*h-o*f,m=o*l-i*h,v=i*f-a*l))<1e-6)){g/=x,m/=x,v/=x,this.up.set(t,i,a,o),this.right.set(t,g,m,v),this.center.set(t,r[0],r[1],r[2]),this.radius.set(t,Math.log(p));var b=a*v-o*m,_=o*g-i*v,w=i*m-a*g,T=c(b,_,w),k=i*l+a*f+o*h,A=g*l+m*f+v*h,M=(b/=T)*l+(_/=T)*f+(w/=T)*h,S=Math.asin(u(k)),E=Math.atan2(M,A),L=this.angle._state,C=L[L.length-1],P=L[L.length-2];C%=2*Math.PI;var I=Math.abs(C+2*Math.PI-E),O=Math.abs(C-E),z=Math.abs(C-2*Math.PI-E);I0?r.pop():new ArrayBuffer(t)}function d(t){return new Uint8Array(p(t),0,t)}function g(t){return new Uint16Array(p(2*t),0,t)}function m(t){return new Uint32Array(p(4*t),0,t)}function v(t){return new Int8Array(p(t),0,t)}function y(t){return new Int16Array(p(2*t),0,t)}function x(t){return new Int32Array(p(4*t),0,t)}function b(t){return new Float32Array(p(4*t),0,t)}function _(t){return new Float64Array(p(8*t),0,t)}function w(t){return o?new Uint8ClampedArray(p(t),0,t):d(t)}function T(t){return s?new BigUint64Array(p(8*t),0,t):null}function k(t){return l?new BigInt64Array(p(8*t),0,t):null}function A(t){return new DataView(p(t),0,t)}function M(t){t=n.nextPow2(t);var e=n.log2(t),r=f[e];return r.length>0?r.pop():new a(t)}r.free=function(t){if(a.isBuffer(t))f[n.log2(t.length)].push(t);else{if(\"[object ArrayBuffer]\"!==Object.prototype.toString.call(t)&&(t=t.buffer),!t)return;var e=t.length||t.byteLength,r=0|n.log2(e);u[r].push(t)}},r.freeUint8=r.freeUint16=r.freeUint32=r.freeBigUint64=r.freeInt8=r.freeInt16=r.freeInt32=r.freeBigInt64=r.freeFloat32=r.freeFloat=r.freeFloat64=r.freeDouble=r.freeUint8Clamped=r.freeDataView=function(t){h(t.buffer)},r.freeArrayBuffer=h,r.freeBuffer=function(t){f[n.log2(t.length)].push(t)},r.malloc=function(t,e){if(void 0===e||\"arraybuffer\"===e)return p(t);switch(e){case\"uint8\":return d(t);case\"uint16\":return g(t);case\"uint32\":return m(t);case\"int8\":return v(t);case\"int16\":return y(t);case\"int32\":return x(t);case\"float\":case\"float32\":return b(t);case\"double\":case\"float64\":return _(t);case\"uint8_clamped\":return w(t);case\"bigint64\":return k(t);case\"biguint64\":return T(t);case\"buffer\":return M(t);case\"data\":case\"dataview\":return A(t);default:return null}return null},r.mallocArrayBuffer=p,r.mallocUint8=d,r.mallocUint16=g,r.mallocUint32=m,r.mallocInt8=v,r.mallocInt16=y,r.mallocInt32=x,r.mallocFloat32=r.mallocFloat=b,r.mallocFloat64=r.mallocDouble=_,r.mallocUint8Clamped=w,r.mallocBigUint64=T,r.mallocBigInt64=k,r.mallocDataView=A,r.mallocBuffer=M,r.clearCache=function(){for(var t=0;t<32;++t)c.UINT8[t].length=0,c.UINT16[t].length=0,c.UINT32[t].length=0,c.INT8[t].length=0,c.INT16[t].length=0,c.INT32[t].length=0,c.FLOAT[t].length=0,c.DOUBLE[t].length=0,c.BIGUINT64[t].length=0,c.BIGINT64[t].length=0,c.UINT8C[t].length=0,u[t].length=0,f[t].length=0}}).call(this)}).call(this,void 0!==n?n:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"bit-twiddle\":32,buffer:3,dup:65}],309:[function(t,e,r){\"use strict\";function n(t){this.roots=new Array(t),this.ranks=new Array(t);for(var e=0;e0&&(a=n.size),n.lineSpacing&&n.lineSpacing>0&&(o=n.lineSpacing),n.styletags&&n.styletags.breaklines&&(s.breaklines=!!n.styletags.breaklines),n.styletags&&n.styletags.bolds&&(s.bolds=!!n.styletags.bolds),n.styletags&&n.styletags.italics&&(s.italics=!!n.styletags.italics),n.styletags&&n.styletags.subscripts&&(s.subscripts=!!n.styletags.subscripts),n.styletags&&n.styletags.superscripts&&(s.superscripts=!!n.styletags.superscripts));return r.font=[n.fontStyle,n.fontVariant,n.fontWeight,a+\"px\",n.font].filter((function(t){return t})).join(\" \"),r.textAlign=\"start\",r.textBaseline=\"alphabetic\",r.direction=\"ltr\",h(function(t,e,r,n,a,o){r=r.replace(/\\n/g,\"\"),r=!0===o.breaklines?r.replace(/\\/g,\"\\n\"):r.replace(/\\/g,\" \");var s=\"\",l=[];for(p=0;p-1?parseInt(t[1+i]):0,l=a>-1?parseInt(r[1+a]):0;s!==l&&(n=n.replace(S(),\"?px \"),m*=Math.pow(.75,l-s),n=n.replace(\"?px \",S())),g+=.25*x*(l-s)}if(!0===o.superscripts){var c=t.indexOf(\"+\"),u=r.indexOf(\"+\"),f=c>-1?parseInt(t[1+c]):0,h=u>-1?parseInt(r[1+u]):0;f!==h&&(n=n.replace(S(),\"?px \"),m*=Math.pow(.75,h-f),n=n.replace(\"?px \",S())),g-=.25*x*(h-f)}if(!0===o.bolds){var p=t.indexOf(\"b|\")>-1,d=r.indexOf(\"b|\")>-1;!p&&d&&(n=v?n.replace(\"italic \",\"italic bold \"):\"bold \"+n),p&&!d&&(n=n.replace(\"bold \",\"\"))}if(!0===o.italics){var v=t.indexOf(\"i|\")>-1,y=r.indexOf(\"i|\")>-1;!v&&y&&(n=\"italic \"+n),v&&!y&&(n=n.replace(\"italic \",\"\"))}e.font=n}for(h=0;h\",a=\"\",o=i.length,s=a.length,l=\"+\"===e[0]||\"-\"===e[0],c=0,u=-s;c>-1&&-1!==(c=r.indexOf(i,c))&&-1!==(u=r.indexOf(a,c+o))&&!(u<=c);){for(var f=c;f=u)n[f]=null,r=r.substr(0,f)+\" \"+r.substr(f+1);else if(null!==n[f]){var h=n[f].indexOf(e[0]);-1===h?n[f]+=e:l&&(n[f]=n[f].substr(0,h+1)+(1+parseInt(n[f][h+1]))+n[f].substr(h+2))}var p=c+o,d=r.substr(p,u-p).indexOf(i);c=-1!==d?d:u+s}return n}function u(t,e){var r=n(t,128);return e?a(r.cells,r.positions,.25):{edges:r.cells,positions:r.positions}}function f(t,e,r,n){var i=u(t,n),a=function(t,e,r){for(var n=e.textAlign||\"start\",i=e.textBaseline||\"alphabetic\",a=[1<<30,1<<30],o=[0,0],s=t.length,l=0;l=0?e[a]:i}))},has___:{value:y((function(e){var n=v(e);return n?r in n:t.indexOf(e)>=0}))},set___:{value:y((function(n,i){var a,o=v(n);return o?o[r]=i:(a=t.indexOf(n))>=0?e[a]=i:(a=t.length,e[a]=i,t[a]=n),this}))},delete___:{value:y((function(n){var i,a,o=v(n);return o?r in o&&delete o[r]:!((i=t.indexOf(n))<0)&&(a=t.length-1,t[i]=void 0,e[i]=e[a],t[i]=t[a],t.length=a,e.length=a,!0)}))}})};d.prototype=Object.create(Object.prototype,{get:{value:function(t,e){return this.get___(t,e)},writable:!0,configurable:!0},has:{value:function(t){return this.has___(t)},writable:!0,configurable:!0},set:{value:function(t,e){return this.set___(t,e)},writable:!0,configurable:!0},delete:{value:function(t){return this.delete___(t)},writable:!0,configurable:!0}}),\"function\"==typeof r?function(){function n(){this instanceof d||x();var e,n=new r,i=void 0,a=!1;return e=t?function(t,e){return n.set(t,e),n.has(t)||(i||(i=new d),i.set(t,e)),this}:function(t,e){if(a)try{n.set(t,e)}catch(r){i||(i=new d),i.set___(t,e)}else n.set(t,e);return this},Object.create(d.prototype,{get___:{value:y((function(t,e){return i?n.has(t)?n.get(t):i.get___(t,e):n.get(t,e)}))},has___:{value:y((function(t){return n.has(t)||!!i&&i.has___(t)}))},set___:{value:y(e)},delete___:{value:y((function(t){var e=!!n.delete(t);return i&&i.delete___(t)||e}))},permitHostObjects___:{value:y((function(t){if(t!==g)throw new Error(\"bogus call to permitHostObjects___\");a=!0}))}})}t&&\"undefined\"!=typeof Proxy&&(Proxy=void 0),n.prototype=d.prototype,e.exports=n,Object.defineProperty(WeakMap.prototype,\"constructor\",{value:WeakMap,enumerable:!1,configurable:!0,writable:!0})}():(\"undefined\"!=typeof Proxy&&(Proxy=void 0),e.exports=d)}function g(t){t.permitHostObjects___&&t.permitHostObjects___(g)}function m(t){return!(\"weakmap:\"==t.substr(0,\"weakmap:\".length)&&\"___\"===t.substr(t.length-3))}function v(t){if(t!==Object(t))throw new TypeError(\"Not an object: \"+t);var e=t[l];if(e&&e.key===t)return e;if(s(t)){e={key:t};try{return o(t,l,{value:e,writable:!1,enumerable:!1,configurable:!1}),e}catch(t){return}}}function y(t){return t.prototype=null,Object.freeze(t)}function x(){h||\"undefined\"==typeof console||(h=!0,console.warn(\"WeakMap should be invoked as new WeakMap(), not WeakMap(). This will be an error in the future.\"))}}()},{}],314:[function(t,e,r){var n=t(\"./hidden-store.js\");e.exports=function(){var t={};return function(e){if((\"object\"!=typeof e||null===e)&&\"function\"!=typeof e)throw new Error(\"Weakmap-shim: Key must be object\");var r=e.valueOf(t);return r&&r.identity===t?r:n(e,t)}}},{\"./hidden-store.js\":315}],315:[function(t,e,r){e.exports=function(t,e){var r={identity:e},n=t.valueOf;return Object.defineProperty(t,\"valueOf\",{value:function(t){return t!==e?n.apply(this,arguments):r},writable:!0}),r}},{}],316:[function(t,e,r){var n=t(\"./create-store.js\");e.exports=function(){var t=n();return{get:function(e,r){var n=t(e);return n.hasOwnProperty(\"value\")?n.value:r},set:function(e,r){return t(e).value=r,this},has:function(e){return\"value\"in t(e)},delete:function(e){return delete t(e).value}}}},{\"./create-store.js\":314}],317:[function(t,e,r){\"use strict\";var n,i=function(){return function(t,e,r,n,i,a){var o=t[0],s=r[0],l=[0],c=s;n|=0;var u=0,f=s;for(u=0;u=0!=p>=0&&i.push(l[0]+.5+.5*(h+p)/(h-p)),n+=f,++l[0]}}};e.exports=(n={funcName:{funcName:\"zeroCrossings\"}.funcName},function(t){var e={};return function(r,n,i){var a=r.dtype,o=r.order,s=[a,o.join()].join(),l=e[s];return l||(e[s]=l=t([a,o])),l(r.shape.slice(0),r.data,r.stride,0|r.offset,n,i)}}(i.bind(void 0,n)))},{}],318:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r=[];return e=+e||0,n(t.hi(t.shape[0]-1),r,e),r};var n=t(\"./lib/zc-core\")},{\"./lib/zc-core\":317}]},{},[6])(6)}))}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}]},{},[27])(27)}));\n", " });\n", " require(['plotly'], function(Plotly) {\n", " window._Plotly = Plotly;\n", diff --git a/docs/_getstarted/04_UploadToDataverse.ipynb b/docs/_getstarted/04_UploadToDataverse.ipynb index 770da9ce..9af3eb8e 100644 --- a/docs/_getstarted/04_UploadToDataverse.ipynb +++ b/docs/_getstarted/04_UploadToDataverse.ipynb @@ -50,7 +50,7 @@ "id": "c749b3af-3de0-429a-b23e-e474bb7e2f4c", "metadata": {}, "source": [ - "For reasons of data quality, the resulting dataset cant be viewed on the web. In order to visit examples that have utilized the method, see the [EnzymeML at Work](https://darus.uni-stuttgart.de/dataverse/enzymeml_at_work) collection." + "For reasons of data quality, the resulting dataset can't be viewed on the web. In order to visit examples that have utilized the method, see the [EnzymeML at Work](https://darus.uni-stuttgart.de/dataverse/enzymeml_at_work) collection." ] }, { diff --git a/docs/_getstarted/04_UploadToDataverse.rst b/docs/_getstarted/04_UploadToDataverse.rst index 675f63df..3c0ea391 100644 --- a/docs/_getstarted/04_UploadToDataverse.rst +++ b/docs/_getstarted/04_UploadToDataverse.rst @@ -25,7 +25,7 @@ in this example: # Upload it to Dataverse (Dataset is private) enzmldoc.uploadToDataverse(dataverse_name="playground") -For reasons of data quality, the resulting dataset cant be viewed on the +For reasons of data quality, the resulting dataset can't be viewed on the web. In order to visit examples that have utilized the method, see the `EnzymeML at Work `__ diff --git a/docs/_getstarted/EnzymeML_Validation_Template.yaml b/docs/_getstarted/EnzymeML_Validation_Template.yaml index a9a04df3..9937caa2 100644 --- a/docs/_getstarted/EnzymeML_Validation_Template.yaml +++ b/docs/_getstarted/EnzymeML_Validation_Template.yaml @@ -140,7 +140,7 @@ protein_dict: - null unit: mandatory: true - description: Unit of the proteins intial concentration. + description: Unit of the proteins initial concentration. range: min: null max: null @@ -230,7 +230,7 @@ complex_dict: - null unit: mandatory: true - description: Unit of the proteins intial concentration. + description: Unit of the proteins initial concentration. range: min: null max: null @@ -279,7 +279,7 @@ reactant_dict: - null unit: mandatory: true - description: Unit of the reactant intial concentration. + description: Unit of the reactant initial concentration. range: min: null max: null diff --git a/docs/_getstarted/EnzymeML_Validation_Template_Example.yaml b/docs/_getstarted/EnzymeML_Validation_Template_Example.yaml index 876f520b..dcf1b265 100644 --- a/docs/_getstarted/EnzymeML_Validation_Template_Example.yaml +++ b/docs/_getstarted/EnzymeML_Validation_Template_Example.yaml @@ -140,7 +140,7 @@ protein_dict: - null unit: mandatory: true - description: Unit of the proteins intial concentration. + description: Unit of the proteins initial concentration. range: min: null max: null @@ -230,7 +230,7 @@ complex_dict: - null unit: mandatory: true - description: Unit of the proteins intial concentration. + description: Unit of the proteins initial concentration. range: min: null max: null @@ -279,7 +279,7 @@ reactant_dict: - null unit: mandatory: true - description: Unit of the reactant intial concentration. + description: Unit of the reactant initial concentration. range: min: null max: null diff --git a/examples/Basic example/CreateEnzymeML.ipynb b/examples/Basic example/CreateEnzymeML.ipynb index 945612fc..9bfc350b 100644 --- a/examples/Basic example/CreateEnzymeML.ipynb +++ b/examples/Basic example/CreateEnzymeML.ipynb @@ -333,9 +333,9 @@ "source": [ "## Documenting measurement setups\n", "\n", - "Now that the theoretical foundation of the experiment has been layed out, it is time to specify the setup of teh measurement. PyEnzyme offers a lab-like system to document such setups. Typically, experiments involve multiple runs with varying initial concentrations of every element that occurs in the reaction network or/and varying conditions such as temperature and pH. Hence, PyEnzyme builts on top of a **measurement** system, where each of these represent a 'run'.\n", + "Now that the theoretical foundation of the experiment has been laid out, it is time to specify the setup of the measurement. PyEnzyme offers a lab-like system to document such setups. Typically, experiments involve multiple runs with varying initial concentrations of every element that occurs in the reaction network or/and varying conditions such as temperature and pH. Hence, PyEnzyme builts on top of a **measurement** system, where each of these represent a 'run'.\n", "\n", - "In this example, the following setups will be tracked including changing inital concentrations and temperatures:\n", + "In this example, the following setups will be tracked including changing initial concentrations and temperatures:\n", "\n", "| Measurement Name | Species | Initial concentration | Unit | Temperature | pH |\n", "|------------------|-----------|-----------------------|-----------|-------------|-----|\n", @@ -571,7 +571,7 @@ "source": [ "## Saving and distributing an EnzymeML document\n", "\n", - "Finally, the experiment has been finished and meta- as well as raw-data been documented. In order to make the data exchangable, PyEnzyme offers several options for data export. First and foremost, the complete experiment can be exported to EnzymeML which is SBML compatible and thus accessible by SBML-based modeling tools (e.g. COPASI, PySCeS). Furthermore, in regard of the web, PyEnzyme offers a JSON export too.\n", + "Finally, the experiment has been finished and meta- as well as raw-data been documented. In order to make the data exchangeable, PyEnzyme offers several options for data export. First and foremost, the complete experiment can be exported to EnzymeML which is SBML compatible and thus accessible by SBML-based modeling tools (e.g. COPASI, PySCeS). Furthermore, in regard of the web, PyEnzyme offers a JSON export too.\n", "\n", "Apart from raw exports, PyEnzyme can also interface with the federated databases system Dataverse by providing a simple upload method that automatically uploads and processes the document contents to a Dataverse compatible format. Please note, the Dataverse must support the 'EnzymeML' metadatablock for a successful upload.\n" ] @@ -659,7 +659,7 @@ "\n", "**Tips and hints:**\n", "\n", - "- PyEnzyme stores a history in the document, which keeps track of what has been changed and added in the course of an experiment. This is done, to spot potential errors and facilitate teh documentation of an experiment's lifeline." + "- PyEnzyme stores a history in the document, which keeps track of what has been changed and added in the course of an experiment. This is done, to spot potential errors and facilitate the documentation of an experiment's lifeline." ] }, { @@ -715,7 +715,7 @@ "source": [ "#### Special case: From the EnzymeML spreadsheet template\n", "\n", - "Apart from programmatic creation of an EnzymeML document, PyEnzyme offers a way to convert the 'EnzymeML spreadhseet template' to an OMEX file. Since spreadsheets are the bread and butter of current lab documentation, the template widely covers teh data model and thus provides an easy access to EnzymeML's capabilities." + "Apart from programmatic creation of an EnzymeML document, PyEnzyme offers a way to convert the 'EnzymeML spreadsheet template' to an OMEX file. Since spreadsheets are the bread and butter of current lab documentation, the template widely covers the data model and thus provides an easy access to EnzymeML's capabilities." ] }, { @@ -770,7 +770,7 @@ "source": [ "## Editing EnzymeML: Kinetic Modeling\n", "\n", - "Building on top of the previous section about loading an EnzymeML document, this example will demonstrate how to interact with an already created EnzymeML document using the OMEX loader. Since the purpose of an experiment is to generate data from a theory, modeling takes care of the interpretation of an experiment outcome. However, PyEnzyme and EnzymeML are no modeling platforms, but provides a convinient way to interface to such. Hence, this example will demonstrate how such an interfacing could look like.\n", + "Building on top of the previous section about loading an EnzymeML document, this example will demonstrate how to interact with an already created EnzymeML document using the OMEX loader. Since the purpose of an experiment is to generate data from a theory, modeling takes care of the interpretation of an experiment outcome. However, PyEnzyme and EnzymeML are no modeling platforms, but provides a convenient way to interface to such. Hence, this example will demonstrate how such an interfacing could look like.\n", "\n", "The enzyme-catalyzed reaction that has been reported in the course of this example obviously follows a simple Michaelis-Menten-Kinetic and thus will be reported as such. But first of all, the next part will demonstrate how measurement data can be exported to be used by a modeling framework/platform.\n", "\n", diff --git a/examples/Dataverse/UploadToDataverse.ipynb b/examples/Dataverse/UploadToDataverse.ipynb index d0f68524..c7fc1d96 100644 --- a/examples/Dataverse/UploadToDataverse.ipynb +++ b/examples/Dataverse/UploadToDataverse.ipynb @@ -50,7 +50,7 @@ "id": "c749b3af-3de0-429a-b23e-e474bb7e2f4c", "metadata": {}, "source": [ - "For reasons of data quality, the resulting dataset cant be viewed on the web. In order to visit examples that have utilized the method, see the [EnzymeML at Work](https://darus.uni-stuttgart.de/dataverse/enzymeml_at_work) collection." + "For reasons of data quality, the resulting dataset can't be viewed on the web. In order to visit examples that have utilized the method, see the [EnzymeML at Work](https://darus.uni-stuttgart.de/dataverse/enzymeml_at_work) collection." ] }, { diff --git a/examples/ThinLayers/COPASI/Untitled.ipynb b/examples/ThinLayers/COPASI/Untitled.ipynb index ed084706..c9f028e6 100644 --- a/examples/ThinLayers/COPASI/Untitled.ipynb +++ b/examples/ThinLayers/COPASI/Untitled.ipynb @@ -140,7 +140,7 @@ " * @author Feross Aboukhadijeh \n", " * @license MIT\n", " */\n", - "\"use strict\";var e=t(\"base64-js\"),n=t(\"ieee754\");r.Buffer=a,r.SlowBuffer=function(t){+t!=t&&(t=0);return a.alloc(+t)},r.INSPECT_MAX_BYTES=50;function i(t){if(t>2147483647)throw new RangeError('The value \"'+t+'\" is invalid for option \"size\"');var e=new Uint8Array(t);return e.__proto__=a.prototype,e}function a(t,e,r){if(\"number\"==typeof t){if(\"string\"==typeof e)throw new TypeError('The \"string\" argument must be of type string. Received type number');return l(t)}return o(t,e,r)}function o(t,e,r){if(\"string\"==typeof t)return function(t,e){\"string\"==typeof e&&\"\"!==e||(e=\"utf8\");if(!a.isEncoding(e))throw new TypeError(\"Unknown encoding: \"+e);var r=0|f(t,e),n=i(r),o=n.write(t,e);o!==r&&(n=n.slice(0,o));return n}(t,e);if(ArrayBuffer.isView(t))return c(t);if(null==t)throw TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof t);if(B(t,ArrayBuffer)||t&&B(t.buffer,ArrayBuffer))return function(t,e,r){if(e<0||t.byteLength=2147483647)throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+2147483647..toString(16)+\" bytes\");return 0|t}function f(t,e){if(a.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||B(t,ArrayBuffer))return t.byteLength;if(\"string\"!=typeof t)throw new TypeError('The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);var r=t.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;for(var i=!1;;)switch(e){case\"ascii\":case\"latin1\":case\"binary\":return r;case\"utf8\":case\"utf-8\":return D(t).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*r;case\"hex\":return r>>>1;case\"base64\":return R(t).length;default:if(i)return n?-1:D(t).length;e=(\"\"+e).toLowerCase(),i=!0}}function h(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return\"\";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return\"\";if((r>>>=0)<=(e>>>=0))return\"\";for(t||(t=\"utf8\");;)switch(t){case\"hex\":return M(this,e,r);case\"utf8\":case\"utf-8\":return T(this,e,r);case\"ascii\":return k(this,e,r);case\"latin1\":case\"binary\":return A(this,e,r);case\"base64\":return w(this,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return S(this,e,r);default:if(n)throw new TypeError(\"Unknown encoding: \"+t);t=(t+\"\").toLowerCase(),n=!0}}function p(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function d(t,e,r,n,i){if(0===t.length)return-1;if(\"string\"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),N(r=+r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if(\"string\"==typeof e&&(e=a.from(e,n)),a.isBuffer(e))return 0===e.length?-1:g(t,e,r,n,i);if(\"number\"==typeof e)return e&=255,\"function\"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):g(t,[e],r,n,i);throw new TypeError(\"val must be string, number or Buffer\")}function g(t,e,r,n,i){var a,o=1,s=t.length,l=e.length;if(void 0!==n&&(\"ucs2\"===(n=String(n).toLowerCase())||\"ucs-2\"===n||\"utf16le\"===n||\"utf-16le\"===n)){if(t.length<2||e.length<2)return-1;o=2,s/=2,l/=2,r/=2}function c(t,e){return 1===o?t[e]:t.readUInt16BE(e*o)}if(i){var u=-1;for(a=r;as&&(r=s-l),a=r;a>=0;a--){for(var f=!0,h=0;hi&&(n=i):n=i;var a=e.length;n>a/2&&(n=a/2);for(var o=0;o>8,i=r%256,a.push(i),a.push(n);return a}(e,t.length-r),t,r,n)}function w(t,r,n){return 0===r&&n===t.length?e.fromByteArray(t):e.fromByteArray(t.slice(r,n))}function T(t,e,r){r=Math.min(t.length,r);for(var n=[],i=e;i239?4:c>223?3:c>191?2:1;if(i+f<=r)switch(f){case 1:c<128&&(u=c);break;case 2:128==(192&(a=t[i+1]))&&(l=(31&c)<<6|63&a)>127&&(u=l);break;case 3:a=t[i+1],o=t[i+2],128==(192&a)&&128==(192&o)&&(l=(15&c)<<12|(63&a)<<6|63&o)>2047&&(l<55296||l>57343)&&(u=l);break;case 4:a=t[i+1],o=t[i+2],s=t[i+3],128==(192&a)&&128==(192&o)&&128==(192&s)&&(l=(15&c)<<18|(63&a)<<12|(63&o)<<6|63&s)>65535&&l<1114112&&(u=l)}null===u?(u=65533,f=1):u>65535&&(u-=65536,n.push(u>>>10&1023|55296),u=56320|1023&u),n.push(u),i+=f}return function(t){var e=t.length;if(e<=4096)return String.fromCharCode.apply(String,t);var r=\"\",n=0;for(;ne&&(t+=\" ... \"),\"\"},a.prototype.compare=function(t,e,r,n,i){if(B(t,Uint8Array)&&(t=a.from(t,t.offset,t.byteLength)),!a.isBuffer(t))throw new TypeError('The \"target\" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError(\"out of range index\");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(this===t)return 0;for(var o=(i>>>=0)-(n>>>=0),s=(r>>>=0)-(e>>>=0),l=Math.min(o,s),c=this.slice(n,i),u=t.slice(e,r),f=0;f>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n=\"utf8\")):(n=r,r=void 0)}var i=this.length-e;if((void 0===r||r>i)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");n||(n=\"utf8\");for(var a=!1;;)switch(n){case\"hex\":return m(this,t,e,r);case\"utf8\":case\"utf-8\":return v(this,t,e,r);case\"ascii\":return y(this,t,e,r);case\"latin1\":case\"binary\":return x(this,t,e,r);case\"base64\":return b(this,t,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return _(this,t,e,r);default:if(a)throw new TypeError(\"Unknown encoding: \"+n);n=(\"\"+n).toLowerCase(),a=!0}},a.prototype.toJSON=function(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};function k(t,e,r){var n=\"\";r=Math.min(t.length,r);for(var i=e;in)&&(r=n);for(var i=\"\",a=e;ar)throw new RangeError(\"Trying to access beyond buffer length\")}function L(t,e,r,n,i,o){if(!a.isBuffer(t))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError(\"Index out of range\")}function C(t,e,r,n,i,a){if(r+n>t.length)throw new RangeError(\"Index out of range\");if(r<0)throw new RangeError(\"Index out of range\")}function P(t,e,r,i,a){return e=+e,r>>>=0,a||C(t,0,r,4),n.write(t,e,r,i,23,4),r+4}function I(t,e,r,i,a){return e=+e,r>>>=0,a||C(t,0,r,8),n.write(t,e,r,i,52,8),r+8}a.prototype.slice=function(t,e){var r=this.length;(t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e>>=0,e>>>=0,r||E(t,e,this.length);for(var n=this[t],i=1,a=0;++a>>=0,e>>>=0,r||E(t,e,this.length);for(var n=this[t+--e],i=1;e>0&&(i*=256);)n+=this[t+--e]*i;return n},a.prototype.readUInt8=function(t,e){return t>>>=0,e||E(t,1,this.length),this[t]},a.prototype.readUInt16LE=function(t,e){return t>>>=0,e||E(t,2,this.length),this[t]|this[t+1]<<8},a.prototype.readUInt16BE=function(t,e){return t>>>=0,e||E(t,2,this.length),this[t]<<8|this[t+1]},a.prototype.readUInt32LE=function(t,e){return t>>>=0,e||E(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},a.prototype.readUInt32BE=function(t,e){return t>>>=0,e||E(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},a.prototype.readIntLE=function(t,e,r){t>>>=0,e>>>=0,r||E(t,e,this.length);for(var n=this[t],i=1,a=0;++a=(i*=128)&&(n-=Math.pow(2,8*e)),n},a.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||E(t,e,this.length);for(var n=e,i=1,a=this[t+--n];n>0&&(i*=256);)a+=this[t+--n]*i;return a>=(i*=128)&&(a-=Math.pow(2,8*e)),a},a.prototype.readInt8=function(t,e){return t>>>=0,e||E(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},a.prototype.readInt16LE=function(t,e){t>>>=0,e||E(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt16BE=function(t,e){t>>>=0,e||E(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt32LE=function(t,e){return t>>>=0,e||E(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},a.prototype.readInt32BE=function(t,e){return t>>>=0,e||E(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},a.prototype.readFloatLE=function(t,e){return t>>>=0,e||E(t,4,this.length),n.read(this,t,!0,23,4)},a.prototype.readFloatBE=function(t,e){return t>>>=0,e||E(t,4,this.length),n.read(this,t,!1,23,4)},a.prototype.readDoubleLE=function(t,e){return t>>>=0,e||E(t,8,this.length),n.read(this,t,!0,52,8)},a.prototype.readDoubleBE=function(t,e){return t>>>=0,e||E(t,8,this.length),n.read(this,t,!1,52,8)},a.prototype.writeUIntLE=function(t,e,r,n){(t=+t,e>>>=0,r>>>=0,n)||L(this,t,e,r,Math.pow(2,8*r)-1,0);var i=1,a=0;for(this[e]=255&t;++a>>=0,r>>>=0,n)||L(this,t,e,r,Math.pow(2,8*r)-1,0);var i=r-1,a=1;for(this[e+i]=255&t;--i>=0&&(a*=256);)this[e+i]=t/a&255;return e+r},a.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,1,255,0),this[e]=255&t,e+1},a.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},a.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},a.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},a.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},a.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var i=Math.pow(2,8*r-1);L(this,t,e,r,i-1,-i)}var a=0,o=1,s=0;for(this[e]=255&t;++a>0)-s&255;return e+r},a.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var i=Math.pow(2,8*r-1);L(this,t,e,r,i-1,-i)}var a=r-1,o=1,s=0;for(this[e+a]=255&t;--a>=0&&(o*=256);)t<0&&0===s&&0!==this[e+a+1]&&(s=1),this[e+a]=(t/o>>0)-s&255;return e+r},a.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},a.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},a.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},a.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},a.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},a.prototype.writeFloatLE=function(t,e,r){return P(this,t,e,!0,r)},a.prototype.writeFloatBE=function(t,e,r){return P(this,t,e,!1,r)},a.prototype.writeDoubleLE=function(t,e,r){return I(this,t,e,!0,r)},a.prototype.writeDoubleBE=function(t,e,r){return I(this,t,e,!1,r)},a.prototype.copy=function(t,e,r,n){if(!a.isBuffer(t))throw new TypeError(\"argument should be a Buffer\");if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n=this.length)throw new RangeError(\"Index out of range\");if(n<0)throw new RangeError(\"sourceEnd out of bounds\");n>this.length&&(n=this.length),t.length-e=0;--o)t[o+e]=this[o+r];else Uint8Array.prototype.set.call(t,this.subarray(r,n),e);return i},a.prototype.fill=function(t,e,r,n){if(\"string\"==typeof t){if(\"string\"==typeof e?(n=e,e=0,r=this.length):\"string\"==typeof r&&(n=r,r=this.length),void 0!==n&&\"string\"!=typeof n)throw new TypeError(\"encoding must be a string\");if(\"string\"==typeof n&&!a.isEncoding(n))throw new TypeError(\"Unknown encoding: \"+n);if(1===t.length){var i=t.charCodeAt(0);(\"utf8\"===n&&i<128||\"latin1\"===n)&&(t=i)}}else\"number\"==typeof t&&(t&=255);if(e<0||this.length>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),\"number\"==typeof t)for(o=e;o55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&a.push(239,191,189);continue}if(o+1===n){(e-=3)>-1&&a.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&a.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&a.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;a.push(r)}else if(r<2048){if((e-=2)<0)break;a.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;a.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error(\"Invalid code point\");if((e-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return a}function R(t){return e.toByteArray(function(t){if((t=(t=t.split(\"=\")[0]).trim().replace(O,\"\")).length<2)return\"\";for(;t.length%4!=0;)t+=\"=\";return t}(t))}function F(t,e,r,n){for(var i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function B(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function N(t){return t!=t}}).call(this)}).call(this,t(\"buffer\").Buffer)},{\"base64-js\":79,buffer:85,ieee754:230}],86:[function(t,e,r){e.exports=function(t,e,r){return er?r:t:te?e:t}},{}],87:[function(t,e,r){\"use strict\";var n=t(\"clamp\");function i(t,e){null==e&&(e=!0);var r=t[0],i=t[1],a=t[2],o=t[3];return null==o&&(o=e?1:255),e&&(r*=255,i*=255,a*=255,o*=255),16777216*(r=255&n(r,0,255))+((i=255&n(i,0,255))<<16)+((a=255&n(a,0,255))<<8)+(o=255&n(o,0,255))}e.exports=i,e.exports.to=i,e.exports.from=function(t,e){var r=(t=+t)>>>24,n=(16711680&t)>>>16,i=(65280&t)>>>8,a=255&t;return!1===e?[r,n,i,a]:[r/255,n/255,i/255,a/255]}},{clamp:86}],88:[function(t,e,r){\"use strict\";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},{}],89:[function(t,e,r){\"use strict\";var n=t(\"color-rgba\"),i=t(\"clamp\"),a=t(\"dtype\");e.exports=function(t,e){\"float\"!==e&&e||(e=\"array\"),\"uint\"===e&&(e=\"uint8\"),\"uint_clamped\"===e&&(e=\"uint8_clamped\");var r=new(a(e))(4),o=\"uint8\"!==e&&\"uint8_clamped\"!==e;return t.length&&\"string\"!=typeof t||((t=n(t))[0]/=255,t[1]/=255,t[2]/=255),function(t){return t instanceof Uint8Array||t instanceof Uint8ClampedArray||!!(Array.isArray(t)&&(t[0]>1||0===t[0])&&(t[1]>1||0===t[1])&&(t[2]>1||0===t[2])&&(!t[3]||t[3]>1))}(t)?(r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=null!=t[3]?t[3]:255,o&&(r[0]/=255,r[1]/=255,r[2]/=255,r[3]/=255),r):(o?(r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=null!=t[3]?t[3]:1):(r[0]=i(Math.floor(255*t[0]),0,255),r[1]=i(Math.floor(255*t[1]),0,255),r[2]=i(Math.floor(255*t[2]),0,255),r[3]=null==t[3]?255:i(Math.floor(255*t[3]),0,255)),r)}},{clamp:86,\"color-rgba\":91,dtype:127}],90:[function(t,e,r){(function(r){(function(){\"use strict\";var n=t(\"color-name\"),i=t(\"is-plain-obj\"),a=t(\"defined\");e.exports=function(t){var e,s,l=[],c=1;if(\"string\"==typeof t)if(n[t])l=n[t].slice(),s=\"rgb\";else if(\"transparent\"===t)c=0,s=\"rgb\",l=[0,0,0];else if(/^#[A-Fa-f0-9]+$/.test(t)){var u=(p=t.slice(1)).length;c=1,u<=4?(l=[parseInt(p[0]+p[0],16),parseInt(p[1]+p[1],16),parseInt(p[2]+p[2],16)],4===u&&(c=parseInt(p[3]+p[3],16)/255)):(l=[parseInt(p[0]+p[1],16),parseInt(p[2]+p[3],16),parseInt(p[4]+p[5],16)],8===u&&(c=parseInt(p[6]+p[7],16)/255)),l[0]||(l[0]=0),l[1]||(l[1]=0),l[2]||(l[2]=0),s=\"rgb\"}else if(e=/^((?:rgb|hs[lvb]|hwb|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms)a?)\\s*\\(([^\\)]*)\\)/.exec(t)){var f=e[1],h=\"rgb\"===f,p=f.replace(/a$/,\"\");s=p;u=\"cmyk\"===p?4:\"gray\"===p?1:3;l=e[2].trim().split(/\\s*,\\s*/).map((function(t,e){if(/%$/.test(t))return e===u?parseFloat(t)/100:\"rgb\"===p?255*parseFloat(t)/100:parseFloat(t);if(\"h\"===p[e]){if(/deg$/.test(t))return parseFloat(t);if(void 0!==o[t])return o[t]}return parseFloat(t)})),f===p&&l.push(1),c=h||void 0===l[u]?1:l[u],l=l.slice(0,u)}else t.length>10&&/[0-9](?:\\s|\\/)/.test(t)&&(l=t.match(/([0-9]+)/g).map((function(t){return parseFloat(t)})),s=t.match(/([a-z])/gi).join(\"\").toLowerCase());else if(isNaN(t))if(i(t)){var d=a(t.r,t.red,t.R,null);null!==d?(s=\"rgb\",l=[d,a(t.g,t.green,t.G),a(t.b,t.blue,t.B)]):(s=\"hsl\",l=[a(t.h,t.hue,t.H),a(t.s,t.saturation,t.S),a(t.l,t.lightness,t.L,t.b,t.brightness)]),c=a(t.a,t.alpha,t.opacity,1),null!=t.opacity&&(c/=100)}else(Array.isArray(t)||r.ArrayBuffer&&ArrayBuffer.isView&&ArrayBuffer.isView(t))&&(l=[t[0],t[1],t[2]],s=\"rgb\",c=4===t.length?t[3]:1);else s=\"rgb\",l=[t>>>16,(65280&t)>>>8,255&t];return{space:s,values:l,alpha:c}};var o={red:0,orange:60,yellow:120,green:180,blue:240,purple:300}}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"color-name\":88,defined:124,\"is-plain-obj\":236}],91:[function(t,e,r){\"use strict\";var n=t(\"color-parse\"),i=t(\"color-space/hsl\"),a=t(\"clamp\");e.exports=function(t){var e,r=n(t);return r.space?((e=Array(3))[0]=a(r.values[0],0,255),e[1]=a(r.values[1],0,255),e[2]=a(r.values[2],0,255),\"h\"===r.space[0]&&(e=i.rgb(e)),e.push(a(r.alpha,0,1)),e):[]}},{clamp:86,\"color-parse\":90,\"color-space/hsl\":92}],92:[function(t,e,r){\"use strict\";var n=t(\"./rgb\");e.exports={name:\"hsl\",min:[0,0,0],max:[360,100,100],channel:[\"hue\",\"saturation\",\"lightness\"],alias:[\"HSL\"],rgb:function(t){var e,r,n,i,a,o=t[0]/360,s=t[1]/100,l=t[2]/100;if(0===s)return[a=255*l,a,a];e=2*l-(r=l<.5?l*(1+s):l+s-l*s),i=[0,0,0];for(var c=0;c<3;c++)(n=o+1/3*-(c-1))<0?n++:n>1&&n--,a=6*n<1?e+6*(r-e)*n:2*n<1?r:3*n<2?e+(r-e)*(2/3-n)*6:e,i[c]=255*a;return i}},n.hsl=function(t){var e,r,n=t[0]/255,i=t[1]/255,a=t[2]/255,o=Math.min(n,i,a),s=Math.max(n,i,a),l=s-o;return s===o?e=0:n===s?e=(i-a)/l:i===s?e=2+(a-n)/l:a===s&&(e=4+(n-i)/l),(e=Math.min(60*e,360))<0&&(e+=360),r=(o+s)/2,[e,100*(s===o?0:r<=.5?l/(s+o):l/(2-s-o)),100*r]}},{\"./rgb\":93}],93:[function(t,e,r){\"use strict\";e.exports={name:\"rgb\",min:[0,0,0],max:[255,255,255],channel:[\"red\",\"green\",\"blue\"],alias:[\"RGB\"]}},{}],94:[function(t,e,r){e.exports={AFG:\"afghan\",ALA:\"\\\\b\\\\wland\",ALB:\"albania\",DZA:\"algeria\",ASM:\"^(?=.*americ).*samoa\",AND:\"andorra\",AGO:\"angola\",AIA:\"anguill?a\",ATA:\"antarctica\",ATG:\"antigua\",ARG:\"argentin\",ARM:\"armenia\",ABW:\"^(?!.*bonaire).*\\\\baruba\",AUS:\"australia\",AUT:\"^(?!.*hungary).*austria|\\\\baustri.*\\\\bemp\",AZE:\"azerbaijan\",BHS:\"bahamas\",BHR:\"bahrain\",BGD:\"bangladesh|^(?=.*east).*paki?stan\",BRB:\"barbados\",BLR:\"belarus|byelo\",BEL:\"^(?!.*luxem).*belgium\",BLZ:\"belize|^(?=.*british).*honduras\",BEN:\"benin|dahome\",BMU:\"bermuda\",BTN:\"bhutan\",BOL:\"bolivia\",BES:\"^(?=.*bonaire).*eustatius|^(?=.*carib).*netherlands|\\\\bbes.?islands\",BIH:\"herzegovina|bosnia\",BWA:\"botswana|bechuana\",BVT:\"bouvet\",BRA:\"brazil\",IOT:\"british.?indian.?ocean\",BRN:\"brunei\",BGR:\"bulgaria\",BFA:\"burkina|\\\\bfaso|upper.?volta\",BDI:\"burundi\",CPV:\"verde\",KHM:\"cambodia|kampuchea|khmer\",CMR:\"cameroon\",CAN:\"canada\",CYM:\"cayman\",CAF:\"\\\\bcentral.african.republic\",TCD:\"\\\\bchad\",CHL:\"\\\\bchile\",CHN:\"^(?!.*\\\\bmac)(?!.*\\\\bhong)(?!.*\\\\btai)(?!.*\\\\brep).*china|^(?=.*peo)(?=.*rep).*china\",CXR:\"christmas\",CCK:\"\\\\bcocos|keeling\",COL:\"colombia\",COM:\"comoro\",COG:\"^(?!.*\\\\bdem)(?!.*\\\\bd[\\\\.]?r)(?!.*kinshasa)(?!.*zaire)(?!.*belg)(?!.*l.opoldville)(?!.*free).*\\\\bcongo\",COK:\"\\\\bcook\",CRI:\"costa.?rica\",CIV:\"ivoire|ivory\",HRV:\"croatia\",CUB:\"\\\\bcuba\",CUW:\"^(?!.*bonaire).*\\\\bcura(c|\\xe7)ao\",CYP:\"cyprus\",CSK:\"czechoslovakia\",CZE:\"^(?=.*rep).*czech|czechia|bohemia\",COD:\"\\\\bdem.*congo|congo.*\\\\bdem|congo.*\\\\bd[\\\\.]?r|\\\\bd[\\\\.]?r.*congo|belgian.?congo|congo.?free.?state|kinshasa|zaire|l.opoldville|drc|droc|rdc\",DNK:\"denmark\",DJI:\"djibouti\",DMA:\"dominica(?!n)\",DOM:\"dominican.rep\",ECU:\"ecuador\",EGY:\"egypt\",SLV:\"el.?salvador\",GNQ:\"guine.*eq|eq.*guine|^(?=.*span).*guinea\",ERI:\"eritrea\",EST:\"estonia\",ETH:\"ethiopia|abyssinia\",FLK:\"falkland|malvinas\",FRO:\"faroe|faeroe\",FJI:\"fiji\",FIN:\"finland\",FRA:\"^(?!.*\\\\bdep)(?!.*martinique).*france|french.?republic|\\\\bgaul\",GUF:\"^(?=.*french).*guiana\",PYF:\"french.?polynesia|tahiti\",ATF:\"french.?southern\",GAB:\"gabon\",GMB:\"gambia\",GEO:\"^(?!.*south).*georgia\",DDR:\"german.?democratic.?republic|democratic.?republic.*germany|east.germany\",DEU:\"^(?!.*east).*germany|^(?=.*\\\\bfed.*\\\\brep).*german\",GHA:\"ghana|gold.?coast\",GIB:\"gibraltar\",GRC:\"greece|hellenic|hellas\",GRL:\"greenland\",GRD:\"grenada\",GLP:\"guadeloupe\",GUM:\"\\\\bguam\",GTM:\"guatemala\",GGY:\"guernsey\",GIN:\"^(?!.*eq)(?!.*span)(?!.*bissau)(?!.*portu)(?!.*new).*guinea\",GNB:\"bissau|^(?=.*portu).*guinea\",GUY:\"guyana|british.?guiana\",HTI:\"haiti\",HMD:\"heard.*mcdonald\",VAT:\"holy.?see|vatican|papal.?st\",HND:\"^(?!.*brit).*honduras\",HKG:\"hong.?kong\",HUN:\"^(?!.*austr).*hungary\",ISL:\"iceland\",IND:\"india(?!.*ocea)\",IDN:\"indonesia\",IRN:\"\\\\biran|persia\",IRQ:\"\\\\biraq|mesopotamia\",IRL:\"(^ireland)|(^republic.*ireland)\",IMN:\"^(?=.*isle).*\\\\bman\",ISR:\"israel\",ITA:\"italy\",JAM:\"jamaica\",JPN:\"japan\",JEY:\"jersey\",JOR:\"jordan\",KAZ:\"kazak\",KEN:\"kenya|british.?east.?africa|east.?africa.?prot\",KIR:\"kiribati\",PRK:\"^(?=.*democrat|people|north|d.*p.*.r).*\\\\bkorea|dprk|korea.*(d.*p.*r)\",KWT:\"kuwait\",KGZ:\"kyrgyz|kirghiz\",LAO:\"\\\\blaos?\\\\b\",LVA:\"latvia\",LBN:\"lebanon\",LSO:\"lesotho|basuto\",LBR:\"liberia\",LBY:\"libya\",LIE:\"liechtenstein\",LTU:\"lithuania\",LUX:\"^(?!.*belg).*luxem\",MAC:\"maca(o|u)\",MDG:\"madagascar|malagasy\",MWI:\"malawi|nyasa\",MYS:\"malaysia\",MDV:\"maldive\",MLI:\"\\\\bmali\\\\b\",MLT:\"\\\\bmalta\",MHL:\"marshall\",MTQ:\"martinique\",MRT:\"mauritania\",MUS:\"mauritius\",MYT:\"\\\\bmayotte\",MEX:\"\\\\bmexic\",FSM:\"fed.*micronesia|micronesia.*fed\",MCO:\"monaco\",MNG:\"mongolia\",MNE:\"^(?!.*serbia).*montenegro\",MSR:\"montserrat\",MAR:\"morocco|\\\\bmaroc\",MOZ:\"mozambique\",MMR:\"myanmar|burma\",NAM:\"namibia\",NRU:\"nauru\",NPL:\"nepal\",NLD:\"^(?!.*\\\\bant)(?!.*\\\\bcarib).*netherlands\",ANT:\"^(?=.*\\\\bant).*(nether|dutch)\",NCL:\"new.?caledonia\",NZL:\"new.?zealand\",NIC:\"nicaragua\",NER:\"\\\\bniger(?!ia)\",NGA:\"nigeria\",NIU:\"niue\",NFK:\"norfolk\",MNP:\"mariana\",NOR:\"norway\",OMN:\"\\\\boman|trucial\",PAK:\"^(?!.*east).*paki?stan\",PLW:\"palau\",PSE:\"palestin|\\\\bgaza|west.?bank\",PAN:\"panama\",PNG:\"papua|new.?guinea\",PRY:\"paraguay\",PER:\"peru\",PHL:\"philippines\",PCN:\"pitcairn\",POL:\"poland\",PRT:\"portugal\",PRI:\"puerto.?rico\",QAT:\"qatar\",KOR:\"^(?!.*d.*p.*r)(?!.*democrat)(?!.*people)(?!.*north).*\\\\bkorea(?!.*d.*p.*r)\",MDA:\"moldov|b(a|e)ssarabia\",REU:\"r(e|\\xe9)union\",ROU:\"r(o|u|ou)mania\",RUS:\"\\\\brussia|soviet.?union|u\\\\.?s\\\\.?s\\\\.?r|socialist.?republics\",RWA:\"rwanda\",BLM:\"barth(e|\\xe9)lemy\",SHN:\"helena\",KNA:\"kitts|\\\\bnevis\",LCA:\"\\\\blucia\",MAF:\"^(?=.*collectivity).*martin|^(?=.*france).*martin(?!ique)|^(?=.*french).*martin(?!ique)\",SPM:\"miquelon\",VCT:\"vincent\",WSM:\"^(?!.*amer).*samoa\",SMR:\"san.?marino\",STP:\"\\\\bs(a|\\xe3)o.?tom(e|\\xe9)\",SAU:\"\\\\bsa\\\\w*.?arabia\",SEN:\"senegal\",SRB:\"^(?!.*monte).*serbia\",SYC:\"seychell\",SLE:\"sierra\",SGP:\"singapore\",SXM:\"^(?!.*martin)(?!.*saba).*maarten\",SVK:\"^(?!.*cze).*slovak\",SVN:\"slovenia\",SLB:\"solomon\",SOM:\"somali\",ZAF:\"south.africa|s\\\\\\\\..?africa\",SGS:\"south.?georgia|sandwich\",SSD:\"\\\\bs\\\\w*.?sudan\",ESP:\"spain\",LKA:\"sri.?lanka|ceylon\",SDN:\"^(?!.*\\\\bs(?!u)).*sudan\",SUR:\"surinam|dutch.?guiana\",SJM:\"svalbard\",SWZ:\"swaziland\",SWE:\"sweden\",CHE:\"switz|swiss\",SYR:\"syria\",TWN:\"taiwan|taipei|formosa|^(?!.*peo)(?=.*rep).*china\",TJK:\"tajik\",THA:\"thailand|\\\\bsiam\",MKD:\"macedonia|fyrom\",TLS:\"^(?=.*leste).*timor|^(?=.*east).*timor\",TGO:\"togo\",TKL:\"tokelau\",TON:\"tonga\",TTO:\"trinidad|tobago\",TUN:\"tunisia\",TUR:\"turkey\",TKM:\"turkmen\",TCA:\"turks\",TUV:\"tuvalu\",UGA:\"uganda\",UKR:\"ukrain\",ARE:\"emirates|^u\\\\.?a\\\\.?e\\\\.?$|united.?arab.?em\",GBR:\"united.?kingdom|britain|^u\\\\.?k\\\\.?$\",TZA:\"tanzania\",USA:\"united.?states\\\\b(?!.*islands)|\\\\bu\\\\.?s\\\\.?a\\\\.?\\\\b|^\\\\s*u\\\\.?s\\\\.?\\\\b(?!.*islands)\",UMI:\"minor.?outlying.?is\",URY:\"uruguay\",UZB:\"uzbek\",VUT:\"vanuatu|new.?hebrides\",VEN:\"venezuela\",VNM:\"^(?!.*republic).*viet.?nam|^(?=.*socialist).*viet.?nam\",VGB:\"^(?=.*\\\\bu\\\\.?\\\\s?k).*virgin|^(?=.*brit).*virgin|^(?=.*kingdom).*virgin\",VIR:\"^(?=.*\\\\bu\\\\.?\\\\s?s).*virgin|^(?=.*states).*virgin\",WLF:\"futuna|wallis\",ESH:\"western.sahara\",YEM:\"^(?!.*arab)(?!.*north)(?!.*sana)(?!.*peo)(?!.*dem)(?!.*south)(?!.*aden)(?!.*\\\\bp\\\\.?d\\\\.?r).*yemen\",YMD:\"^(?=.*peo).*yemen|^(?!.*rep)(?=.*dem).*yemen|^(?=.*south).*yemen|^(?=.*aden).*yemen|^(?=.*\\\\bp\\\\.?d\\\\.?r).*yemen\",YUG:\"yugoslavia\",ZMB:\"zambia|northern.?rhodesia\",EAZ:\"zanzibar\",ZWE:\"zimbabwe|^(?!.*northern).*rhodesia\"}},{}],95:[function(t,e,r){e.exports=[\"xx-small\",\"x-small\",\"small\",\"medium\",\"large\",\"x-large\",\"xx-large\",\"larger\",\"smaller\"]},{}],96:[function(t,e,r){e.exports=[\"normal\",\"condensed\",\"semi-condensed\",\"extra-condensed\",\"ultra-condensed\",\"expanded\",\"semi-expanded\",\"extra-expanded\",\"ultra-expanded\"]},{}],97:[function(t,e,r){e.exports=[\"normal\",\"italic\",\"oblique\"]},{}],98:[function(t,e,r){e.exports=[\"normal\",\"bold\",\"bolder\",\"lighter\",\"100\",\"200\",\"300\",\"400\",\"500\",\"600\",\"700\",\"800\",\"900\"]},{}],99:[function(t,e,r){\"use strict\";e.exports={parse:t(\"./parse\"),stringify:t(\"./stringify\")}},{\"./parse\":101,\"./stringify\":102}],100:[function(t,e,r){\"use strict\";var n=t(\"css-font-size-keywords\");e.exports={isSize:function(t){return/^[\\d\\.]/.test(t)||-1!==t.indexOf(\"/\")||-1!==n.indexOf(t)}}},{\"css-font-size-keywords\":95}],101:[function(t,e,r){\"use strict\";var n=t(\"unquote\"),i=t(\"css-global-keywords\"),a=t(\"css-system-font-keywords\"),o=t(\"css-font-weight-keywords\"),s=t(\"css-font-style-keywords\"),l=t(\"css-font-stretch-keywords\"),c=t(\"string-split-by\"),u=t(\"./lib/util\").isSize;e.exports=h;var f=h.cache={};function h(t){if(\"string\"!=typeof t)throw new Error(\"Font argument must be a string.\");if(f[t])return f[t];if(\"\"===t)throw new Error(\"Cannot parse an empty string.\");if(-1!==a.indexOf(t))return f[t]={system:t};for(var e,r={style:\"normal\",variant:\"normal\",weight:\"normal\",stretch:\"normal\",lineHeight:\"normal\",size:\"1rem\",family:[\"serif\"]},h=c(t,/\\s+/);e=h.shift();){if(-1!==i.indexOf(e))return[\"style\",\"variant\",\"weight\",\"stretch\"].forEach((function(t){r[t]=e})),f[t]=r;if(-1===s.indexOf(e))if(\"normal\"!==e&&\"small-caps\"!==e)if(-1===l.indexOf(e)){if(-1===o.indexOf(e)){if(u(e)){var d=c(e,\"/\");if(r.size=d[0],null!=d[1]?r.lineHeight=p(d[1]):\"/\"===h[0]&&(h.shift(),r.lineHeight=p(h.shift())),!h.length)throw new Error(\"Missing required font-family.\");return r.family=c(h.join(\" \"),/\\s*,\\s*/).map(n),f[t]=r}throw new Error(\"Unknown or unsupported font token: \"+e)}r.weight=e}else r.stretch=e;else r.variant=e;else r.style=e}throw new Error(\"Missing required font-size.\")}function p(t){var e=parseFloat(t);return e.toString()===t?e:t}},{\"./lib/util\":100,\"css-font-stretch-keywords\":96,\"css-font-style-keywords\":97,\"css-font-weight-keywords\":98,\"css-global-keywords\":103,\"css-system-font-keywords\":104,\"string-split-by\":305,unquote:328}],102:[function(t,e,r){\"use strict\";var n=t(\"pick-by-alias\"),i=t(\"./lib/util\").isSize,a=g(t(\"css-global-keywords\")),o=g(t(\"css-system-font-keywords\")),s=g(t(\"css-font-weight-keywords\")),l=g(t(\"css-font-style-keywords\")),c=g(t(\"css-font-stretch-keywords\")),u={normal:1,\"small-caps\":1},f={serif:1,\"sans-serif\":1,monospace:1,cursive:1,fantasy:1,\"system-ui\":1},h=\"1rem\",p=\"serif\";function d(t,e){if(t&&!e[t]&&!a[t])throw Error(\"Unknown keyword `\"+t+\"`\");return t}function g(t){for(var e={},r=0;re?1:t>=e?0:NaN}function r(t){var r;return 1===t.length&&(r=t,t=function(t,n){return e(r(t),n)}),{left:function(e,r,n,i){for(null==n&&(n=0),null==i&&(i=e.length);n>>1;t(e[a],r)<0?n=a+1:i=a}return n},right:function(e,r,n,i){for(null==n&&(n=0),null==i&&(i=e.length);n>>1;t(e[a],r)>0?i=a:n=a+1}return n}}}var n=r(e),i=n.right,a=n.left;function o(t,e){return[t,e]}function s(t){return null===t?NaN:+t}function l(t,e){var r,n,i=t.length,a=0,o=-1,l=0,c=0;if(null==e)for(;++o1)return c/(a-1)}function c(t,e){var r=l(t,e);return r?Math.sqrt(r):r}function u(t,e){var r,n,i,a=t.length,o=-1;if(null==e){for(;++o=r)for(n=i=r;++or&&(n=r),i=r)for(n=i=r;++or&&(n=r),i=0?(a>=v?10:a>=y?5:a>=x?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(a>=v?10:a>=y?5:a>=x?2:1)}function _(t,e,r){var n=Math.abs(e-t)/Math.max(0,r),i=Math.pow(10,Math.floor(Math.log(n)/Math.LN10)),a=n/i;return a>=v?i*=10:a>=y?i*=5:a>=x&&(i*=2),e=1)return+r(t[n-1],n-1,t);var n,i=(n-1)*e,a=Math.floor(i),o=+r(t[a],a,t);return o+(+r(t[a+1],a+1,t)-o)*(i-a)}}function k(t,e){var r,n,i=t.length,a=-1;if(null==e){for(;++a=r)for(n=r;++ar&&(n=r)}else for(;++a=r)for(n=r;++ar&&(n=r);return n}function A(t){if(!(i=t.length))return[];for(var e=-1,r=k(t,M),n=new Array(r);++et?1:e>=t?0:NaN},t.deviation=c,t.extent=u,t.histogram=function(){var t=g,e=u,r=w;function n(n){var a,o,s=n.length,l=new Array(s);for(a=0;af;)h.pop(),--p;var d,g=new Array(p+1);for(a=0;a<=p;++a)(d=g[a]=[]).x0=a>0?h[a-1]:u,d.x1=a=r)for(n=r;++an&&(n=r)}else for(;++a=r)for(n=r;++an&&(n=r);return n},t.mean=function(t,e){var r,n=t.length,i=n,a=-1,o=0;if(null==e)for(;++a=0;)for(e=(n=t[i]).length;--e>=0;)r[--o]=n[e];return r},t.min=k,t.pairs=function(t,e){null==e&&(e=o);for(var r=0,n=t.length-1,i=t[0],a=new Array(n<0?0:n);r0)return[t];if((n=e0)for(t=Math.ceil(t/o),e=Math.floor(e/o),a=new Array(i=Math.ceil(e-t+1));++s=l.length)return null!=t&&n.sort(t),null!=e?e(n):n;for(var s,c,f,h=-1,p=n.length,d=l[i++],g=r(),m=a();++hl.length)return r;var i,a=c[n-1];return null!=e&&n>=l.length?i=r.entries():(i=[],r.each((function(e,r){i.push({key:r,values:t(e,n)})}))),null!=a?i.sort((function(t,e){return a(t.key,e.key)})):i}(u(t,0,a,o),0)},key:function(t){return l.push(t),s},sortKeys:function(t){return c[l.length-1]=t,s},sortValues:function(e){return t=e,s},rollup:function(t){return e=t,s}}},t.set=c,t.map=r,t.keys=function(t){var e=[];for(var r in t)e.push(r);return e},t.values=function(t){var e=[];for(var r in t)e.push(t[r]);return e},t.entries=function(t){var e=[];for(var r in t)e.push({key:r,value:t[r]});return e},Object.defineProperty(t,\"__esModule\",{value:!0})}))},{}],109:[function(t,e,r){!function(t,n){\"object\"==typeof r&&void 0!==e?n(r):n((t=t||self).d3=t.d3||{})}(this,(function(t){\"use strict\";function e(t,e,r){t.prototype=e.prototype=r,r.constructor=t}function r(t,e){var r=Object.create(t.prototype);for(var n in e)r[n]=e[n];return r}function n(){}var i=\"\\\\s*([+-]?\\\\d+)\\\\s*\",a=\"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",o=\"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",s=/^#([0-9a-f]{3,8})$/,l=new RegExp(\"^rgb\\\\(\"+[i,i,i]+\"\\\\)$\"),c=new RegExp(\"^rgb\\\\(\"+[o,o,o]+\"\\\\)$\"),u=new RegExp(\"^rgba\\\\(\"+[i,i,i,a]+\"\\\\)$\"),f=new RegExp(\"^rgba\\\\(\"+[o,o,o,a]+\"\\\\)$\"),h=new RegExp(\"^hsl\\\\(\"+[a,o,o]+\"\\\\)$\"),p=new RegExp(\"^hsla\\\\(\"+[a,o,o,a]+\"\\\\)$\"),d={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function g(){return this.rgb().formatHex()}function m(){return this.rgb().formatRgb()}function v(t){var e,r;return t=(t+\"\").trim().toLowerCase(),(e=s.exec(t))?(r=e[1].length,e=parseInt(e[1],16),6===r?y(e):3===r?new w(e>>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===r?x(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===r?x(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=l.exec(t))?new w(e[1],e[2],e[3],1):(e=c.exec(t))?new w(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=u.exec(t))?x(e[1],e[2],e[3],e[4]):(e=f.exec(t))?x(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=h.exec(t))?M(e[1],e[2]/100,e[3]/100,1):(e=p.exec(t))?M(e[1],e[2]/100,e[3]/100,e[4]):d.hasOwnProperty(t)?y(d[t]):\"transparent\"===t?new w(NaN,NaN,NaN,0):null}function y(t){return new w(t>>16&255,t>>8&255,255&t,1)}function x(t,e,r,n){return n<=0&&(t=e=r=NaN),new w(t,e,r,n)}function b(t){return t instanceof n||(t=v(t)),t?new w((t=t.rgb()).r,t.g,t.b,t.opacity):new w}function _(t,e,r,n){return 1===arguments.length?b(t):new w(t,e,r,null==n?1:n)}function w(t,e,r,n){this.r=+t,this.g=+e,this.b=+r,this.opacity=+n}function T(){return\"#\"+A(this.r)+A(this.g)+A(this.b)}function k(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?\"rgb(\":\"rgba(\")+Math.max(0,Math.min(255,Math.round(this.r)||0))+\", \"+Math.max(0,Math.min(255,Math.round(this.g)||0))+\", \"+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?\")\":\", \"+t+\")\")}function A(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?\"0\":\"\")+t.toString(16)}function M(t,e,r,n){return n<=0?t=e=r=NaN:r<=0||r>=1?t=e=NaN:e<=0&&(t=NaN),new L(t,e,r,n)}function S(t){if(t instanceof L)return new L(t.h,t.s,t.l,t.opacity);if(t instanceof n||(t=v(t)),!t)return new L;if(t instanceof L)return t;var e=(t=t.rgb()).r/255,r=t.g/255,i=t.b/255,a=Math.min(e,r,i),o=Math.max(e,r,i),s=NaN,l=o-a,c=(o+a)/2;return l?(s=e===o?(r-i)/l+6*(r0&&c<1?0:s,new L(s,l,c,t.opacity)}function E(t,e,r,n){return 1===arguments.length?S(t):new L(t,e,r,null==n?1:n)}function L(t,e,r,n){this.h=+t,this.s=+e,this.l=+r,this.opacity=+n}function C(t,e,r){return 255*(t<60?e+(r-e)*t/60:t<180?r:t<240?e+(r-e)*(240-t)/60:e)}e(n,v,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:g,formatHex:g,formatHsl:function(){return S(this).formatHsl()},formatRgb:m,toString:m}),e(w,_,r(n,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new w(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new w(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:T,formatHex:T,formatRgb:k,toString:k})),e(L,E,r(n,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new L(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new L(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*e,i=2*r-n;return new w(C(t>=240?t-240:t+120,i,n),C(t,i,n),C(t<120?t+240:t-120,i,n),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?\"hsl(\":\"hsla(\")+(this.h||0)+\", \"+100*(this.s||0)+\"%, \"+100*(this.l||0)+\"%\"+(1===t?\")\":\", \"+t+\")\")}}));var P=Math.PI/180,I=180/Math.PI,O=6/29,z=3*O*O;function D(t){if(t instanceof F)return new F(t.l,t.a,t.b,t.opacity);if(t instanceof q)return G(t);t instanceof w||(t=b(t));var e,r,n=U(t.r),i=U(t.g),a=U(t.b),o=B((.2225045*n+.7168786*i+.0606169*a)/1);return n===i&&i===a?e=r=o:(e=B((.4360747*n+.3850649*i+.1430804*a)/.96422),r=B((.0139322*n+.0971045*i+.7141733*a)/.82521)),new F(116*o-16,500*(e-o),200*(o-r),t.opacity)}function R(t,e,r,n){return 1===arguments.length?D(t):new F(t,e,r,null==n?1:n)}function F(t,e,r,n){this.l=+t,this.a=+e,this.b=+r,this.opacity=+n}function B(t){return t>.008856451679035631?Math.pow(t,1/3):t/z+4/29}function N(t){return t>O?t*t*t:z*(t-4/29)}function j(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function U(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function V(t){if(t instanceof q)return new q(t.h,t.c,t.l,t.opacity);if(t instanceof F||(t=D(t)),0===t.a&&0===t.b)return new q(NaN,0=0&&(r=t.slice(n+1),t=t.slice(0,n)),t&&!e.hasOwnProperty(t))throw new Error(\"unknown type: \"+t);return{type:t,name:r}}))}function a(t,e){for(var r,n=0,i=t.length;n0)for(var r,n,i=new Array(r),a=0;ah+c||np+c||au.index){var f=h-s.x-s.vx,m=p-s.y-s.vy,v=f*f+m*m;vt.r&&(t.r=t[e].r)}function h(){if(r){var e,i,a=r.length;for(n=new Array(a),e=0;e=c)){(t.data!==r||t.next)&&(0===f&&(d+=(f=o())*f),0===h&&(d+=(h=o())*h),d1?(null==r?u.remove(t):u.set(t,v(r)),e):u.get(t)},find:function(e,r,n){var i,a,o,s,l,c=0,u=t.length;for(null==n?n=1/0:n*=n,c=0;c1?(h.on(t,r),e):h.on(t)}}},t.forceX=function(t){var e,r,n,i=a(.1);function o(t){for(var i,a=0,o=e.length;a1?n[0]+n.slice(2):n,+t.slice(r+1)]}function r(t){return(t=e(Math.abs(t)))?t[1]:NaN}var n,i=/^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;function a(t){if(!(e=i.exec(t)))throw new Error(\"invalid format: \"+t);var e;return new o({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function o(t){this.fill=void 0===t.fill?\" \":t.fill+\"\",this.align=void 0===t.align?\">\":t.align+\"\",this.sign=void 0===t.sign?\"-\":t.sign+\"\",this.symbol=void 0===t.symbol?\"\":t.symbol+\"\",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?\"\":t.type+\"\"}function s(t,r){var n=e(t,r);if(!n)return t+\"\";var i=n[0],a=n[1];return a<0?\"0.\"+new Array(-a).join(\"0\")+i:i.length>a+1?i.slice(0,a+1)+\".\"+i.slice(a+1):i+new Array(a-i.length+2).join(\"0\")}a.prototype=o.prototype,o.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?\"0\":\"\")+(void 0===this.width?\"\":Math.max(1,0|this.width))+(this.comma?\",\":\"\")+(void 0===this.precision?\"\":\".\"+Math.max(0,0|this.precision))+(this.trim?\"~\":\"\")+this.type};var l={\"%\":function(t,e){return(100*t).toFixed(e)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+\"\"},d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString(\"en\").replace(/,/g,\"\"):t.toString(10)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},g:function(t,e){return t.toPrecision(e)},o:function(t){return Math.round(t).toString(8)},p:function(t,e){return s(100*t,e)},r:s,s:function(t,r){var i=e(t,r);if(!i)return t+\"\";var a=i[0],o=i[1],s=o-(n=3*Math.max(-8,Math.min(8,Math.floor(o/3))))+1,l=a.length;return s===l?a:s>l?a+new Array(s-l+1).join(\"0\"):s>0?a.slice(0,s)+\".\"+a.slice(s):\"0.\"+new Array(1-s).join(\"0\")+e(t,Math.max(0,r+s-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}};function c(t){return t}var u,f=Array.prototype.map,h=[\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"\\xb5\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];function p(t){var e,i,o=void 0===t.grouping||void 0===t.thousands?c:(e=f.call(t.grouping,Number),i=t.thousands+\"\",function(t,r){for(var n=t.length,a=[],o=0,s=e[0],l=0;n>0&&s>0&&(l+s+1>r&&(s=Math.max(1,r-l)),a.push(t.substring(n-=s,n+s)),!((l+=s+1)>r));)s=e[o=(o+1)%e.length];return a.reverse().join(i)}),s=void 0===t.currency?\"\":t.currency[0]+\"\",u=void 0===t.currency?\"\":t.currency[1]+\"\",p=void 0===t.decimal?\".\":t.decimal+\"\",d=void 0===t.numerals?c:function(t){return function(e){return e.replace(/[0-9]/g,(function(e){return t[+e]}))}}(f.call(t.numerals,String)),g=void 0===t.percent?\"%\":t.percent+\"\",m=void 0===t.minus?\"-\":t.minus+\"\",v=void 0===t.nan?\"NaN\":t.nan+\"\";function y(t){var e=(t=a(t)).fill,r=t.align,i=t.sign,c=t.symbol,f=t.zero,y=t.width,x=t.comma,b=t.precision,_=t.trim,w=t.type;\"n\"===w?(x=!0,w=\"g\"):l[w]||(void 0===b&&(b=12),_=!0,w=\"g\"),(f||\"0\"===e&&\"=\"===r)&&(f=!0,e=\"0\",r=\"=\");var T=\"$\"===c?s:\"#\"===c&&/[boxX]/.test(w)?\"0\"+w.toLowerCase():\"\",k=\"$\"===c?u:/[%p]/.test(w)?g:\"\",A=l[w],M=/[defgprs%]/.test(w);function S(t){var a,s,l,c=T,u=k;if(\"c\"===w)u=A(t)+u,t=\"\";else{var g=(t=+t)<0||1/t<0;if(t=isNaN(t)?v:A(Math.abs(t),b),_&&(t=function(t){t:for(var e,r=t.length,n=1,i=-1;n0&&(i=0)}return i>0?t.slice(0,i)+t.slice(e+1):t}(t)),g&&0==+t&&\"+\"!==i&&(g=!1),c=(g?\"(\"===i?i:m:\"-\"===i||\"(\"===i?\"\":i)+c,u=(\"s\"===w?h[8+n/3]:\"\")+u+(g&&\"(\"===i?\")\":\"\"),M)for(a=-1,s=t.length;++a(l=t.charCodeAt(a))||l>57){u=(46===l?p+t.slice(a+1):t.slice(a))+u,t=t.slice(0,a);break}}x&&!f&&(t=o(t,1/0));var S=c.length+t.length+u.length,E=S>1)+c+t+u+E.slice(S);break;default:t=E+c+t+u}return d(t)}return b=void 0===b?6:/[gprs]/.test(w)?Math.max(1,Math.min(21,b)):Math.max(0,Math.min(20,b)),S.toString=function(){return t+\"\"},S}return{format:y,formatPrefix:function(t,e){var n=y(((t=a(t)).type=\"f\",t)),i=3*Math.max(-8,Math.min(8,Math.floor(r(e)/3))),o=Math.pow(10,-i),s=h[8+i/3];return function(t){return n(o*t)+s}}}}function d(e){return u=p(e),t.format=u.format,t.formatPrefix=u.formatPrefix,u}d({decimal:\".\",thousands:\",\",grouping:[3],currency:[\"$\",\"\"],minus:\"-\"}),t.FormatSpecifier=o,t.formatDefaultLocale=d,t.formatLocale=p,t.formatSpecifier=a,t.precisionFixed=function(t){return Math.max(0,-r(Math.abs(t)))},t.precisionPrefix=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(r(e)/3)))-r(Math.abs(t)))},t.precisionRound=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,r(e)-r(t))+1},Object.defineProperty(t,\"__esModule\",{value:!0})}))},{}],113:[function(t,e,r){!function(n,i){\"object\"==typeof r&&void 0!==e?i(r,t(\"d3-geo\"),t(\"d3-array\")):i(n.d3=n.d3||{},n.d3,n.d3)}(this,(function(t,e,r){\"use strict\";var n=Math.abs,i=Math.atan,a=Math.atan2,o=Math.cos,s=Math.exp,l=Math.floor,c=Math.log,u=Math.max,f=Math.min,h=Math.pow,p=Math.round,d=Math.sign||function(t){return t>0?1:t<0?-1:0},g=Math.sin,m=Math.tan,v=1e-6,y=Math.PI,x=y/2,b=y/4,_=Math.SQRT1_2,w=L(2),T=L(y),k=2*y,A=180/y,M=y/180;function S(t){return t>1?x:t<-1?-x:Math.asin(t)}function E(t){return t>1?0:t<-1?y:Math.acos(t)}function L(t){return t>0?Math.sqrt(t):0}function C(t){return(s(t)-s(-t))/2}function P(t){return(s(t)+s(-t))/2}function I(t){var e=m(t/2),r=2*c(o(t/2))/(e*e);function i(t,e){var n=o(t),i=o(e),a=g(e),s=i*n,l=-((1-s?c((1+s)/2)/(1-s):-.5)+r/(1+s));return[l*i*g(t),l*a]}return i.invert=function(e,i){var s,l=L(e*e+i*i),u=-t/2,f=50;if(!l)return[0,0];do{var h=u/2,p=o(h),d=g(h),m=d/p,y=-c(n(p));u-=s=(2/m*y-r*m-l)/(-y/(d*d)+1-r/(2*p*p))*(p<0?.7:1)}while(n(s)>v&&--f>0);var x=g(u);return[a(e*x,l*o(u)),S(i*x/l)]},i}function O(t,e){var r=o(e),n=function(t){return t?t/Math.sin(t):1}(E(r*o(t/=2)));return[2*r*g(t)*n,g(e)*n]}function z(t){var e=g(t),r=o(t),i=t>=0?1:-1,s=m(i*t),l=(1+e-r)/2;function c(t,n){var c=o(n),u=o(t/=2);return[(1+c)*g(t),(i*n>-a(u,s)-.001?0:10*-i)+l+g(n)*r-(1+c)*e*u]}return c.invert=function(t,c){var u=0,f=0,h=50;do{var p=o(u),d=g(u),m=o(f),y=g(f),x=1+m,b=x*d-t,_=l+y*r-x*e*p-c,w=x*p/2,T=-d*y,k=e*x*d/2,A=r*m+e*p*y,M=T*k-A*w,S=(_*T-b*A)/M/2,E=(b*k-_*w)/M;n(E)>2&&(E/=2),u-=S,f-=E}while((n(S)>v||n(E)>v)&&--h>0);return i*f>-a(o(u),s)-.001?[2*u,f]:null},c}function D(t,e){var r=m(e/2),n=L(1-r*r),i=1+n*o(t/=2),a=g(t)*n/i,s=r/i,l=a*a,c=s*s;return[4/3*a*(3+l-3*c),4/3*s*(3+3*l-c)]}O.invert=function(t,e){if(!(t*t+4*e*e>y*y+v)){var r=t,i=e,a=25;do{var s,l=g(r),c=g(r/2),u=o(r/2),f=g(i),h=o(i),p=g(2*i),d=f*f,m=h*h,x=c*c,b=1-m*u*u,_=b?E(h*u)*L(s=1/b):s=0,w=2*_*h*c-t,T=_*f-e,k=s*(m*x+_*h*u*d),A=s*(.5*l*p-2*_*f*c),M=.25*s*(p*c-_*f*m*l),S=s*(d*u+_*x*h),C=A*M-S*k;if(!C)break;var P=(T*A-w*S)/C,I=(w*M-T*k)/C;r-=P,i-=I}while((n(P)>v||n(I)>v)&&--a>0);return[r,i]}},D.invert=function(t,e){if(e*=3/8,!(t*=3/8)&&n(e)>1)return null;var r=1+t*t+e*e,i=L((r-L(r*r-4*e*e))/2),s=S(i)/3,l=i?function(t){return c(t+L(t*t-1))}(n(e/i))/3:function(t){return c(t+L(t*t+1))}(n(t))/3,u=o(s),f=P(l),h=f*f-u*u;return[2*d(t)*a(C(l)*u,.25-h),2*d(e)*a(f*g(s),.25+h)]};var R=L(8),F=c(1+w);function B(t,e){var r=n(e);return rx){var l=a(s[1],s[0]),c=L(s[0]*s[0]+s[1]*s[1]),u=r*p((l-x)/r)+x,f=a(g(l-=u),2-o(l));l=u+S(y/c*g(f))-f,s[0]=c*o(l),s[1]=c*g(l)}return s}return s.invert=function(t,n){var s=L(t*t+n*n);if(s>x){var l=a(n,t),c=r*p((l-x)/r)+x,u=l>c?-1:1,f=s*o(c-l),h=1/m(u*E((f-y)/L(y*(y-2*f)+s*s)));l=c+2*i((h+u*L(h*h-3))/3),t=s*o(l),n=s*g(l)}return e.geoAzimuthalEquidistantRaw.invert(t,n)},s}function j(t,r){if(arguments.length<2&&(r=t),1===r)return e.geoAzimuthalEqualAreaRaw;if(r===1/0)return U;function n(n,i){var a=e.geoAzimuthalEqualAreaRaw(n/r,i);return a[0]*=t,a}return n.invert=function(n,i){var a=e.geoAzimuthalEqualAreaRaw.invert(n/t,i);return a[0]*=r,a},n}function U(t,e){return[t*o(e)/o(e/=2),2*g(e)]}function V(t,e,r){var i,a,o,s=100;r=void 0===r?0:+r,e=+e;do{(a=t(r))===(o=t(r+v))&&(o=a+v),r-=i=-1*v*(a-e)/(a-o)}while(s-- >0&&n(i)>v);return s<0?NaN:r}function H(t,e,r){return void 0===e&&(e=40),void 0===r&&(r=1e-12),function(i,a,o,s){var l,c,u;o=void 0===o?0:+o,s=void 0===s?0:+s;for(var f=0;fl)o-=c/=2,s-=u/=2;else{l=g;var m=(o>0?-1:1)*r,v=(s>0?-1:1)*r,y=t(o+m,s),x=t(o,s+v),b=(y[0]-h[0])/m,_=(y[1]-h[1])/m,w=(x[0]-h[0])/v,T=(x[1]-h[1])/v,k=T*b-_*w,A=(n(k)<.5?.5:1)/k;if(o+=c=(d*w-p*T)*A,s+=u=(p*_-d*b)*A,n(c)0&&(i[1]*=1+a/1.5*i[0]*i[0]),i}return e.invert=H(e),e}function G(t,e){var r,i=t*g(e),a=30;do{e-=r=(e+g(e)-i)/(1+o(e))}while(n(r)>v&&--a>0);return e/2}function Y(t,e,r){function n(n,i){return[t*n*o(i=G(r,i)),e*g(i)]}return n.invert=function(n,i){return i=S(i/e),[n/(t*o(i)),S((2*i+g(2*i))/r)]},n}B.invert=function(t,e){if((a=n(e))1e-12&&--u>0);return[t/(o(l)*(R-1/g(l))),d(e)*l]},U.invert=function(t,e){var r=2*S(e/2);return[t*o(r/2)/o(r),r]};var W=Y(w/x,w,y);var X=2.00276,Z=1.11072;function J(t,e){var r=G(y,e);return[X*t/(1/o(e)+Z/o(r)),(e+w*g(r))/X]}function K(t){var r=0,n=e.geoProjectionMutator(t),i=n(r);return i.parallel=function(t){return arguments.length?n(r=t*M):r*A},i}function Q(t,e){return[t*o(e),e]}function $(t){if(!t)return Q;var e=1/m(t);function r(r,n){var i=e+t-n,a=i?r*o(n)/i:i;return[i*g(a),e-i*o(a)]}return r.invert=function(r,n){var i=L(r*r+(n=e-n)*n),s=e+t-i;return[i/o(s)*a(r,n),s]},r}function tt(t){function e(e,r){var n=x-r,i=n?e*t*g(n)/n:n;return[n*g(i)/t,x-n*o(i)]}return e.invert=function(e,r){var n=e*t,i=x-r,o=L(n*n+i*i),s=a(n,i);return[(o?o/g(o):1)*s/t,x-o]},e}J.invert=function(t,e){var r,i,a=X*e,s=e<0?-b:b,l=25;do{i=a-w*g(s),s-=r=(g(2*s)+2*s-y*g(i))/(2*o(2*s)+2+y*o(i)*w*o(s))}while(n(r)>v&&--l>0);return i=a-w*g(s),[t*(1/o(i)+Z/o(s))/X,i]},Q.invert=function(t,e){return[t/o(e),e]};var et=Y(1,4/y,y);function rt(t,e,r,i,s,l){var c,u=o(l);if(n(t)>1||n(l)>1)c=E(r*s+e*i*u);else{var f=g(t/2),h=g(l/2);c=2*S(L(f*f+e*i*h*h))}return n(c)>v?[c,a(i*g(l),e*s-r*i*u)]:[0,0]}function nt(t,e,r){return E((t*t+e*e-r*r)/(2*t*e))}function it(t){return t-2*y*l((t+y)/(2*y))}function at(t,e,r){for(var n,i=[[t[0],t[1],g(t[1]),o(t[1])],[e[0],e[1],g(e[1]),o(e[1])],[r[0],r[1],g(r[1]),o(r[1])]],a=i[2],s=0;s<3;++s,a=n)n=i[s],a.v=rt(n[1]-a[1],a[3],a[2],n[3],n[2],n[0]-a[0]),a.point=[0,0];var l=nt(i[0].v[0],i[2].v[0],i[1].v[0]),c=nt(i[0].v[0],i[1].v[0],i[2].v[0]),u=y-l;i[2].point[1]=0,i[0].point[0]=-(i[1].point[0]=i[0].v[0]/2);var f=[i[2].point[0]=i[0].point[0]+i[2].v[0]*o(l),2*(i[0].point[1]=i[1].point[1]=i[2].v[0]*g(l))];return function(t,e){var r,n=g(e),a=o(e),s=new Array(3);for(r=0;r<3;++r){var l=i[r];if(s[r]=rt(e-l[1],l[3],l[2],a,n,t-l[0]),!s[r][0])return l.point;s[r][1]=it(s[r][1]-l.v[1])}var h=f.slice();for(r=0;r<3;++r){var p=2==r?0:r+1,d=nt(i[r].v[0],s[r][0],s[p][0]);s[r][1]<0&&(d=-d),r?1==r?(d=c-d,h[0]-=s[r][0]*o(d),h[1]-=s[r][0]*g(d)):(d=u-d,h[0]+=s[r][0]*o(d),h[1]+=s[r][0]*g(d)):(h[0]+=s[r][0]*o(d),h[1]-=s[r][0]*g(d))}return h[0]/=3,h[1]/=3,h}}function ot(t){return t[0]*=M,t[1]*=M,t}function st(t,r,n){var i=e.geoCentroid({type:\"MultiPoint\",coordinates:[t,r,n]}),a=[-i[0],-i[1]],o=e.geoRotation(a),s=at(ot(o(t)),ot(o(r)),ot(o(n)));s.invert=H(s);var l=e.geoProjection(s).rotate(a),c=l.center;return delete l.rotate,l.center=function(t){return arguments.length?c(o(t)):o.invert(c())},l.clipAngle(90)}function lt(t,e){var r=L(1-g(e));return[2/T*t*r,T*(1-r)]}function ct(t){var e=m(t);function r(t,r){return[t,(t?t/g(t):1)*(g(r)*o(t)-e*o(r))]}return r.invert=e?function(t,r){t&&(r*=g(t)/t);var n=o(t);return[t,2*a(L(n*n+e*e-r*r)-n,e-r)]}:function(t,e){return[t,S(t?e*m(t)/t:e)]},r}lt.invert=function(t,e){var r=(r=e/T-1)*r;return[r>0?t*L(y/r)/2:0,S(1-r)]};var ut=L(3);function ft(t,e){return[ut*t*(2*o(2*e/3)-1)/T,ut*T*g(e/3)]}function ht(t){var e=o(t);function r(t,r){return[t*e,g(r)/e]}return r.invert=function(t,r){return[t/e,S(r*e)]},r}function pt(t){var e=o(t);function r(t,r){return[t*e,(1+e)*m(r/2)]}return r.invert=function(t,r){return[t/e,2*i(r/(1+e))]},r}function dt(t,e){var r=L(8/(3*y));return[r*t*(1-n(e)/y),r*e]}function gt(t,e){var r=L(4-3*g(n(e)));return[2/L(6*y)*t*r,d(e)*L(2*y/3)*(2-r)]}function mt(t,e){var r=L(y*(4+y));return[2/r*t*(1+L(1-4*e*e/(y*y))),4/r*e]}function vt(t,e){var r=(2+x)*g(e);e/=2;for(var i=0,a=1/0;i<10&&n(a)>v;i++){var s=o(e);e-=a=(e+g(e)*(s+2)-r)/(2*s*(1+s))}return[2/L(y*(4+y))*t*(1+o(e)),2*L(y/(4+y))*g(e)]}function yt(t,e){return[t*(1+o(e))/L(2+y),2*e/L(2+y)]}function xt(t,e){for(var r=(1+x)*g(e),i=0,a=1/0;i<10&&n(a)>v;i++)e-=a=(e+g(e)-r)/(1+o(e));return r=L(2+y),[t*(1+o(e))/r,2*e/r]}ft.invert=function(t,e){var r=3*S(e/(ut*T));return[T*t/(ut*(2*o(2*r/3)-1)),r]},dt.invert=function(t,e){var r=L(8/(3*y)),i=e/r;return[t/(r*(1-n(i)/y)),i]},gt.invert=function(t,e){var r=2-n(e)/L(2*y/3);return[t*L(6*y)/(2*r),d(e)*S((4-r*r)/3)]},mt.invert=function(t,e){var r=L(y*(4+y))/2;return[t*r/(1+L(1-e*e*(4+y)/(4*y))),e*r/2]},vt.invert=function(t,e){var r=e*L((4+y)/y)/2,n=S(r),i=o(n);return[t/(2/L(y*(4+y))*(1+i)),S((n+r*(i+2))/(2+x))]},yt.invert=function(t,e){var r=L(2+y),n=e*r/2;return[r*t/(1+o(n)),n]},xt.invert=function(t,e){var r=1+x,n=L(r/2);return[2*t*n/(1+o(e*=n)),S((e+g(e))/r)]};var bt=3+2*w;function _t(t,e){var r=g(t/=2),n=o(t),a=L(o(e)),s=o(e/=2),l=g(e)/(s+w*n*a),u=L(2/(1+l*l)),f=L((w*s+(n+r)*a)/(w*s+(n-r)*a));return[bt*(u*(f-1/f)-2*c(f)),bt*(u*l*(f+1/f)-2*i(l))]}_t.invert=function(t,e){if(!(r=D.invert(t/1.2,1.065*e)))return null;var r,a=r[0],s=r[1],l=20;t/=bt,e/=bt;do{var h=a/2,p=s/2,d=g(h),m=o(h),y=g(p),b=o(p),T=o(s),k=L(T),A=y/(b+w*m*k),M=A*A,S=L(2/(1+M)),E=(w*b+(m+d)*k)/(w*b+(m-d)*k),C=L(E),P=C-1/C,I=C+1/C,O=S*P-2*c(C)-t,z=S*A*I-2*i(A)-e,R=y&&_*k*d*M/y,F=(w*m*b+k)/(2*(b+w*m*k)*(b+w*m*k)*k),B=-.5*A*S*S*S,N=B*R,j=B*F,U=(U=2*b+w*k*(m-d))*U*C,V=(w*m*b*k+T)/U,H=-w*d*y/(k*U),q=P*N-2*V/C+S*(V+V/E),G=P*j-2*H/C+S*(H+H/E),Y=A*I*N-2*R/(1+M)+S*I*R+S*A*(V-V/E),W=A*I*j-2*F/(1+M)+S*I*F+S*A*(H-H/E),X=G*Y-W*q;if(!X)break;var Z=(z*G-O*W)/X,J=(O*Y-z*q)/X;a-=Z,s=u(-x,f(x,s-J))}while((n(Z)>v||n(J)>v)&&--l>0);return n(n(s)-x)s){var d=L(h),m=a(f,u),b=i*p(m/i),_=m-b,w=t*o(_),T=(t*g(_)-_*g(w))/(x-w),k=Lt(_,T),A=(y-t)/Ct(k,w,y);u=d;var M,S=50;do{u-=M=(t+Ct(k,w,u)*A-d)/(k(u)*A)}while(n(M)>v&&--S>0);f=_*g(u),us){var u=L(c),f=a(l,r),h=i*p(f/i),d=f-h;r=u*o(d),l=u*g(d);for(var m=r-x,v=g(r),b=l/v,_=rv||n(p)>v)&&--x>0);return[d,m]},u}Tt.invert=function(t,e){var r=e/(1+wt);return[t&&t/(wt*L(1-r*r)),2*i(r)]},kt.invert=function(t,e){var r=i(e/T),n=o(r),a=2*r;return[t*T/2/(o(a)*n*n),a]};var It=Pt(2.8284,-1.6988,.75432,-.18071,1.76003,-.38914,.042555);var Ot=Pt(2.583819,-.835827,.170354,-.038094,1.543313,-.411435,.082742);var zt=Pt(5/6*y,-.62636,-.0344,0,1.3493,-.05524,0,.045);function Dt(t,e){var r=t*t,n=e*e;return[t*(1-.162388*n)*(.87-952426e-9*r*r),e*(1+n/12)]}Dt.invert=function(t,e){var r,i=t,a=e,o=50;do{var s=a*a;a-=r=(a*(1+s/12)-e)/(1+s/4)}while(n(r)>v&&--o>0);o=50,t/=1-.162388*s;do{var l=(l=i*i)*l;i-=r=(i*(.87-952426e-9*l)-t)/(.87-.00476213*l)}while(n(r)>v&&--o>0);return[i,a]};var Rt=Pt(2.6516,-.76534,.19123,-.047094,1.36289,-.13965,.031762);function Ft(t){var e=t(x,0)[0]-t(-x,0)[0];function r(r,n){var i=r>0?-.5:.5,a=t(r+i*y,n);return a[0]-=i*e,a}return t.invert&&(r.invert=function(r,n){var i=r>0?-.5:.5,a=t.invert(r+i*e,n),o=a[0]-i*y;return o<-y?o+=2*y:o>y&&(o-=2*y),a[0]=o,a}),r}function Bt(t,e){var r=d(t),i=d(e),s=o(e),l=o(t)*s,c=g(t)*s,u=g(i*e);t=n(a(c,u)),e=S(l),n(t-x)>v&&(t%=x);var f=function(t,e){if(e===x)return[0,0];var r,i,a=g(e),s=a*a,l=s*s,c=1+l,u=1+3*l,f=1-l,h=S(1/L(c)),p=f+s*c*h,d=(1-a)/p,m=L(d),b=d*c,_=L(b),w=m*f;if(0===t)return[0,-(w+s*_)];var T,k=o(e),A=1/k,M=2*a*k,E=(-p*k-(-3*s+h*u)*M*(1-a))/(p*p),C=-A*M,P=-A*(s*c*E+d*u*M),I=-2*A*(f*(.5*E/m)-2*s*m*M),O=4*t/y;if(t>.222*y||e.175*y){if(r=(w+s*L(b*(1+l)-w*w))/(1+l),t>y/4)return[r,r];var z=r,D=.5*r;r=.5*(D+z),i=50;do{var R=L(b-r*r),F=r*(I+C*R)+P*S(r/_)-O;if(!F)break;F<0?D=r:z=r,r=.5*(D+z)}while(n(z-D)>v&&--i>0)}else{r=v,i=25;do{var B=r*r,N=L(b-B),j=I+C*N,U=r*j+P*S(r/_)-O,V=j+(P-C*B)/N;r-=T=N?U/V:0}while(n(T)>v&&--i>0)}return[r,-w-s*L(b-r*r)]}(t>y/4?x-t:t,e);return t>y/4&&(u=f[0],f[0]=-f[1],f[1]=-u),f[0]*=r,f[1]*=-i,f}function Nt(t,e){var r,a,l,c,u,f;if(e=1-v)return r=(1-e)/4,l=1/(a=P(t)),[(c=((f=s(2*(f=t)))-1)/(f+1))+r*((u=a*C(t))-t)/(a*a),l-r*c*l*(u-t),l+r*c*l*(u+t),2*i(s(t))-x+r*(u-t)/a];var h=[1,0,0,0,0,0,0,0,0],p=[L(e),0,0,0,0,0,0,0,0],d=0;for(a=L(1-e),u=1;n(p[d]/h[d])>v&&d<8;)r=h[d++],p[d]=(r-a)/2,h[d]=(r+a)/2,a=L(r*a),u*=2;l=u*h[d]*t;do{l=(S(c=p[d]*g(a=l)/h[d])+l)/2}while(--d);return[g(l),c=o(l),c/o(l-a),l]}function jt(t,e){if(!e)return t;if(1===e)return c(m(t/2+b));for(var r=1,a=L(1-e),o=L(e),s=0;n(o)>v;s++){if(t%y){var l=i(a*m(t)/r);l<0&&(l+=y),t+=l+~~(t/y)*y}else t+=t;o=(r+a)/2,a=L(r*a),o=((r=o)-a)/2}return t/(h(2,s)*r)}function Ut(t,e){var r=(w-1)/(w+1),l=L(1-r*r),u=jt(x,l*l),f=c(m(y/4+n(e)/2)),h=s(-1*f)/L(r),p=function(t,e){var r=t*t,n=e+1,i=1-r-e*e;return[.5*((t>=0?x:-x)-a(i,2*t)),-.25*c(i*i+4*r)+.5*c(n*n+r)]}(h*o(-1*t),h*g(-1*t)),v=function(t,e,r){var a=n(t),o=C(n(e));if(a){var s=1/g(a),l=1/(m(a)*m(a)),c=-(l+r*(o*o*s*s)-1+r),u=(-c+L(c*c-4*((r-1)*l)))/2;return[jt(i(1/L(u)),r)*d(t),jt(i(L((u/l-1)/r)),1-r)*d(e)]}return[0,jt(i(o),1-r)*d(e)]}(p[0],p[1],l*l);return[-v[1],(e>=0?1:-1)*(.5*u-v[0])]}function Vt(t){var e=g(t),r=o(t),i=Ht(t);function s(t,a){var s=i(t,a);t=s[0],a=s[1];var l=g(a),c=o(a),u=o(t),f=E(e*l+r*c*u),h=g(f),p=n(h)>v?f/h:1;return[p*r*g(t),(n(t)>x?p:-p)*(e*c-r*l*u)]}return i.invert=Ht(-t),s.invert=function(t,r){var n=L(t*t+r*r),s=-g(n),l=o(n),c=n*l,u=-r*s,f=n*e,h=L(c*c+u*u-f*f),p=a(c*f+u*h,u*f-c*h),d=(n>x?-1:1)*a(t*s,n*o(p)*l+r*g(p)*s);return i.invert(d,p)},s}function Ht(t){var e=g(t),r=o(t);return function(t,n){var i=o(n),s=o(t)*i,l=g(t)*i,c=g(n);return[a(l,s*r-c*e),S(c*r+s*e)]}}Bt.invert=function(t,e){n(t)>1&&(t=2*d(t)-t),n(e)>1&&(e=2*d(e)-e);var r=d(t),i=d(e),s=-r*t,l=-i*e,c=l/s<1,u=function(t,e){var r=0,i=1,a=.5,s=50;for(;;){var l=a*a,c=L(a),u=S(1/L(1+l)),f=1-l+a*(1+l)*u,h=(1-c)/f,p=L(h),d=h*(1+l),g=p*(1-l),m=L(d-t*t),v=e+g+a*m;if(n(i-r)<1e-12||0==--s||0===v)break;v>0?r=a:i=a,a=.5*(r+i)}if(!s)return null;var x=S(c),b=o(x),_=1/b,w=2*c*b,T=(-f*b-(-3*a+u*(1+3*l))*w*(1-c))/(f*f);return[y/4*(t*(-2*_*(.5*T/p*(1-l)-2*a*p*w)+-_*w*m)+-_*(a*(1+l)*T+h*(1+3*l)*w)*S(t/L(d))),x]}(c?l:s,c?s:l),f=u[0],h=u[1],p=o(h);return c&&(f=-x-f),[r*(a(g(f)*p,-g(h))+y),i*S(o(f)*p)]},Ut.invert=function(t,e){var r,n,o,l,u,f,h=(w-1)/(w+1),p=L(1-h*h),d=jt(x,p*p),g=(n=-t,o=p*p,(r=.5*d-e)?(l=Nt(r,o),n?(f=(u=Nt(n,1-o))[1]*u[1]+o*l[0]*l[0]*u[0]*u[0],[[l[0]*u[2]/f,l[1]*l[2]*u[0]*u[1]/f],[l[1]*u[1]/f,-l[0]*l[2]*u[0]*u[2]/f],[l[2]*u[1]*u[2]/f,-o*l[0]*l[1]*u[0]/f]]):[[l[0],0],[l[1],0],[l[2],0]]):[[0,(u=Nt(n,1-o))[0]/u[1]],[1/u[1],0],[u[2]/u[1],0]]),m=function(t,e){var r=e[0]*e[0]+e[1]*e[1];return[(t[0]*e[0]+t[1]*e[1])/r,(t[1]*e[0]-t[0]*e[1])/r]}(g[0],g[1]);return[a(m[1],m[0])/-1,2*i(s(-.5*c(h*m[0]*m[0]+h*m[1]*m[1])))-x]};var qt=S(1-1/3)*A,Gt=ht(0);function Yt(t){var e=qt*M,r=lt(y,e)[0]-lt(-y,e)[0],i=Gt(0,e)[1],a=lt(0,e)[1],o=T-a,s=k/t,c=4/k,h=i+o*o*4/k;function p(p,d){var g,m=n(d);if(m>e){var v=f(t-1,u(0,l((p+y)/s)));(g=lt(p+=y*(t-1)/t-v*s,m))[0]=g[0]*k/r-k*(t-1)/(2*t)+v*k/t,g[1]=i+4*(g[1]-a)*o/k,d<0&&(g[1]=-g[1])}else g=Gt(p,d);return g[0]*=c,g[1]/=h,g}return p.invert=function(e,p){e/=c;var d=n(p*=h);if(d>i){var g=f(t-1,u(0,l((e+y)/s)));e=(e+y*(t-1)/t-g*s)*r/k;var m=lt.invert(e,.25*(d-i)*k/o+a);return m[0]-=y*(t-1)/t-g*s,p<0&&(m[1]=-m[1]),m}return Gt.invert(e,p)},p}function Wt(t,e){return[t,1&e?90-v:qt]}function Xt(t,e){return[t,1&e?-90+v:-qt]}function Zt(t){return[t[0]*(1-v),t[1]]}function Jt(t){var e,r=1+t,i=S(g(1/r)),s=2*L(y/(e=y+4*i*r)),l=.5*s*(r+L(t*(2+t))),c=t*t,u=r*r;function f(f,h){var p,d,m=1-g(h);if(m&&m<2){var v,b=x-h,_=25;do{var w=g(b),T=o(b),k=i+a(w,r-T),A=1+u-2*r*T;b-=v=(b-c*i-r*w+A*k-.5*m*e)/(2*r*w*k)}while(n(v)>1e-12&&--_>0);p=s*L(A),d=f*k/y}else p=s*(t+m),d=f*i/y;return[p*g(d),l-p*o(d)]}return f.invert=function(t,n){var o=t*t+(n-=l)*n,f=(1+u-o/(s*s))/(2*r),h=E(f),p=g(h),d=i+a(p,r-f);return[S(t/L(o))*y/d,S(1-2*(h-c*i-r*p+(1+u-2*r*f)*d)/e)]},f}function Kt(t,e){return e>-.7109889596207567?((t=W(t,e))[1]+=.0528035274542,t):Q(t,e)}function Qt(t,e){return n(e)>.7109889596207567?((t=W(t,e))[1]-=e>0?.0528035274542:-.0528035274542,t):Q(t,e)}function $t(t,e,r,n){var i=L(4*y/(2*r+(1+t-e/2)*g(2*r)+(t+e)/2*g(4*r)+e/2*g(6*r))),a=L(n*g(r)*L((1+t*o(2*r)+e*o(4*r))/(1+t+e))),s=r*c(1);function l(r){return L(1+t*o(2*r)+e*o(4*r))}function c(n){var i=n*r;return(2*i+(1+t-e/2)*g(2*i)+(t+e)/2*g(4*i)+e/2*g(6*i))/r}function u(t){return l(t)*g(t)}var f=function(t,e){var n=r*V(c,s*g(e)/r,e/y);isNaN(n)&&(n=r*d(e));var u=i*l(n);return[u*a*t/y*o(n),u/a*g(n)]};return f.invert=function(t,e){var n=V(u,e*a/i);return[t*y/(o(n)*i*a*l(n)),S(r*c(n/r)/s)]},0===r&&(i=L(n/y),(f=function(t,e){return[t*i,g(e)/i]}).invert=function(t,e){return[t/i,S(e*i)]}),f}function te(t,e,r,n,i){void 0===n&&(n=1e-8),void 0===i&&(i=20);var a=t(e),o=t(.5*(e+r)),s=t(r);return function t(e,r,n,i,a,o,s,l,c,u,f){if(f.nanEncountered)return NaN;var h,p,d,g,m,v,y,x,b,_;if(p=e(r+.25*(h=n-r)),d=e(n-.25*h),isNaN(p))f.nanEncountered=!0;else{if(!isNaN(d))return _=((v=(g=h*(i+4*p+a)/12)+(m=h*(a+4*d+o)/12))-s)/15,u>c?(f.maxDepthCount++,v+_):Math.abs(_)t?r=n:e=n,n=e+r>>1}while(n>e);var i=c[n+1]-c[n];return i&&(i=(t-c[n+1])/i),(n+1+i)/s}var p=2*f(1)/y*o/r,m=function(t,e){var r=f(n(g(e))),a=i(r)*t;return r/=p,[a,e>=0?r:-r]};return m.invert=function(t,e){var r;return n(e*=p)<1&&(r=d(e)*S(a(n(e))*o)),[t/i(n(e)),r]},m}function re(t,e){return n(t[0]-e[0])=0;--l)n=(e=t[1][l])[0][0],i=e[0][1],a=e[1][1],o=e[2][0],s=e[2][1],c.push(ne([[o-v,s-v],[o-v,a+v],[n+v,a+v],[n+v,i-v]],30));return{type:\"Polygon\",coordinates:[r.merge(c)]}}function ae(t,r,n){var i,a;function o(e,n){for(var i=n<0?-1:1,a=r[+(n<0)],o=0,s=a.length-1;oa[o][2][0];++o);var l=t(e-a[o][1][0],n);return l[0]+=t(a[o][1][0],i*n>i*a[o][0][1]?a[o][0][1]:n)[0],l}n?o.invert=n(o):t.invert&&(o.invert=function(e,n){for(var i=a[+(n<0)],s=r[+(n<0)],l=0,c=i.length;lo&&(r=a,a=o,o=r),[[n,a],[i,o]]}))})),s):r.map((function(t){return t.map((function(t){return[[t[0][0]*A,t[0][1]*A],[t[1][0]*A,t[1][1]*A],[t[2][0]*A,t[2][1]*A]]}))}))},null!=r&&s.lobes(r),s}Kt.invert=function(t,e){return e>-.7109889596207567?W.invert(t,e-.0528035274542):Q.invert(t,e)},Qt.invert=function(t,e){return n(e)>.7109889596207567?W.invert(t,e+(e>0?.0528035274542:-.0528035274542)):Q.invert(t,e)};var oe=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];var se=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];var le=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];var ce=[[[[-180,0],[-90,90],[0,0]],[[0,0],[90,90],[180,0]]],[[[-180,0],[-90,-90],[0,0]],[[0,0],[90,-90],[180,0]]]];var ue=[[[[-180,35],[-30,90],[0,35]],[[0,35],[30,90],[180,35]]],[[[-180,-10],[-102,-90],[-65,-10]],[[-65,-10],[5,-90],[77,-10]],[[77,-10],[103,-90],[180,-10]]]];var fe=[[[[-180,0],[-110,90],[-40,0]],[[-40,0],[0,90],[40,0]],[[40,0],[110,90],[180,0]]],[[[-180,0],[-110,-90],[-40,0]],[[-40,0],[0,-90],[40,0]],[[40,0],[110,-90],[180,0]]]];function he(t,e){return[3/k*t*L(y*y/3-e*e),e]}function pe(t){function e(e,r){if(n(n(r)-x)2)return null;var o=(e/=2)*e,s=(r/=2)*r,l=2*r/(1+o+s);return l=h((1+l)/(1-l),1/t),[a(2*e,1-o-s)/t,S((l-1)/(l+1))]},e}he.invert=function(t,e){return[k/3*t/L(y*y/3-e*e),e]};var de=y/w;function ge(t,e){return[t*(1+L(o(e)))/2,e/(o(e/2)*o(t/6))]}function me(t,e){var r=t*t,n=e*e;return[t*(.975534+n*(-.0143059*r-.119161+-.0547009*n)),e*(1.00384+r*(.0802894+-.02855*n+199025e-9*r)+n*(.0998909+-.0491032*n))]}function ve(t,e){return[g(t)/o(e),m(e)*o(t)]}function ye(t){var e=o(t),r=m(b+t/2);function i(i,a){var o=a-t,s=n(o)=0;)h=(f=t[u])[0]+l*(i=h)-c*p,p=f[1]+l*p+c*i;return[h=l*(i=h)-c*p,p=l*p+c*i]}return r.invert=function(r,s){var l=20,c=r,u=s;do{for(var f,h=e,p=t[h],d=p[0],m=p[1],v=0,y=0;--h>=0;)v=d+c*(f=v)-u*y,y=m+c*y+u*f,d=(p=t[h])[0]+c*(f=d)-u*m,m=p[1]+c*m+u*f;var x,b,_=(v=d+c*(f=v)-u*y)*v+(y=m+c*y+u*f)*y;c-=x=((d=c*(f=d)-u*m-r)*v+(m=c*m+u*f-s)*y)/_,u-=b=(m*v-d*y)/_}while(n(x)+n(b)>1e-12&&--l>0);if(l){var w=L(c*c+u*u),T=2*i(.5*w),k=g(T);return[a(c*k,w*o(T)),w?S(u*k/w):0]}},r}ge.invert=function(t,e){var r=n(t),i=n(e),a=v,s=x;iv||n(b)>v)&&--a>0);return a&&[r,i]},ve.invert=function(t,e){var r=t*t,n=e*e+1,i=r+n,a=t?_*L((i-L(i*i-4*r))/r):1/L(n);return[S(t*a),d(e)*E(a)]},xe.invert=function(t,e){return[t,2.5*i(s(.8*e))-.625*y]};var _e=[[.9972523,0],[.0052513,-.0041175],[.0074606,.0048125],[-.0153783,-.1968253],[.0636871,-.1408027],[.3660976,-.2937382]],we=[[.98879,0],[0,0],[-.050909,0],[0,0],[.075528,0]],Te=[[.984299,0],[.0211642,.0037608],[-.1036018,-.0575102],[-.0329095,-.0320119],[.0499471,.1223335],[.026046,.0899805],[7388e-7,-.1435792],[.0075848,-.1334108],[-.0216473,.0776645],[-.0225161,.0853673]],ke=[[.9245,0],[0,0],[.01943,0]],Ae=[[.721316,0],[0,0],[-.00881625,-.00617325]];function Me(t,r){var n=e.geoProjection(be(t)).rotate(r).clipAngle(90),i=e.geoRotation(r),a=n.center;return delete n.rotate,n.center=function(t){return arguments.length?a(i(t)):i.invert(a())},n}var Se=L(6),Ee=L(7);function Le(t,e){var r=S(7*g(e)/(3*Se));return[Se*t*(2*o(2*r/3)-1)/Ee,9*g(r/3)/Ee]}function Ce(t,e){for(var r,i=(1+_)*g(e),a=e,s=0;s<25&&(a-=r=(g(a/2)+g(a)-i)/(.5*o(a/2)+o(a)),!(n(r)1e-12&&--l>0);return[t/(.84719-.13063*(i=s*s)+(o=i*(a=i*i))*o*(.05494*i-.04515-.02326*a+.00331*o)),s]},Oe.invert=function(t,e){for(var r=e/2,i=0,a=1/0;i<10&&n(a)>v;++i){var s=o(e/2);e-=a=(e-m(e/2)-r)/(1-.5/(s*s))}return[2*t/(1+o(e)),e]};var ze=[[[[-180,0],[-90,90],[0,0]],[[0,0],[90,90],[180,0]]],[[[-180,0],[-90,-90],[0,0]],[[0,0],[90,-90],[180,0]]]];function De(t,e){var r=g(e),i=o(e),a=d(t);if(0===t||n(e)===x)return[0,e];if(0===e)return[t,0];if(n(t)===x)return[t*i,x*r];var s=y/(2*t)-2*t/y,l=2*e/y,c=(1-l*l)/(r-l),u=s*s,f=c*c,h=1+u/f,p=1+f/u,m=(s*r/c-s/2)/h,v=(f*r/u+c/2)/p,b=v*v-(f*r*r/u+c*r-1)/p;return[x*(m+L(m*m+i*i/h)*a),x*(v+L(b<0?0:b)*d(-e*s)*a)]}De.invert=function(t,e){var r=(t/=x)*t,n=r+(e/=x)*e,i=y*y;return[t?(n-1+L((1-n)*(1-n)+4*r))/(2*t)*x:0,V((function(t){return n*(y*g(t)-2*t)*y+4*t*t*(e-g(t))+2*y*t-i*e}),0)]};function Re(t,e){var r=e*e;return[t,e*(1.0148+r*r*(.23185+r*(.02406*r-.14499)))]}function Fe(t,e){if(n(e)=0;)if(n=e[s],r[0]===n[0]&&r[1]===n[1]){if(a)return[a,r];a=r}}}(e.face,r.face),i=Be(n.map(r.project),n.map(e.project));e.transform=r.transform?Ne(r.transform,i):i;for(var a=r.edges,o=0,s=a.length;o1.790857183?e=1.790857183:e<-1.790857183&&(e=-1.790857183);var r,i=e;do{var a=i*i;i-=r=(i*(1.0148+a*a*(.23185+a*(.02406*a-.14499)))-e)/(1.0148+a*a*(5*.23185+a*(.21654*a-1.01493)))}while(n(r)>v);return[t,i]},Fe.invert=function(t,e){if(n(e)v&&--s>0);return l=m(a),[(n(e)n^p>n&&r<(h-c)*(n-u)/(p-u)+c&&(i=!i)}return i}(t[0],r))return t.push(e),!0}))||t.push([e])})),nr=[],t.length?t.length>1?{type:\"MultiPolygon\",coordinates:t}:{type:\"Polygon\",coordinates:t[0]}:null}};function sr(t){var r=t(x,0)[0]-t(-x,0)[0];function i(e,i){var a=n(e)0?e-y:e+y,i),s=(o[0]-o[1])*_,l=(o[0]+o[1])*_;if(a)return[s,l];var c=r*_,u=s>0^l>0?-1:1;return[u*s-d(l)*c,u*l-d(s)*c]}return t.invert&&(i.invert=function(e,i){var a=(e+i)*_,o=(i-e)*_,s=n(a)<.5*r&&n(o)<.5*r;if(!s){var l=r*_,c=a>0^o>0?-1:1,u=-c*e+(o>0?1:-1)*l,f=-c*i+(a>0?1:-1)*l;a=(-u-f)*_,o=(u-f)*_}var h=t.invert(a,o);return s||(h[0]+=a>0?y:-y),h}),e.geoProjection(i).rotate([-90,-90,45]).clipAngle(179.999)}function lr(){return sr(Ut).scale(111.48)}function cr(t){var e=g(t);function r(r,n){var a=e?m(r*e/2)/e:r/2;if(!n)return[2*a,-t];var s=2*i(a*g(n)),l=1/m(n);return[g(s)*l,n+(1-o(s))*l-t]}return r.invert=function(r,a){if(n(a+=t)v&&--u>0);var d=r*(f=m(c)),x=m(n(a)0?x:-x)*(h+o*(d-c)/2+o*o*(d-2*h+c)/2)]}function hr(t,e){var r=function(t){function e(e,r){var n=o(r),i=(t-1)/(t-n*o(e));return[i*n*g(e),i*g(r)]}return e.invert=function(e,r){var n=e*e+r*r,i=L(n),o=(t-L(1-n*(t+1)/(t-1)))/((t-1)/i+i/(t-1));return[a(e*o,i*L(1-o*o)),i?S(r*o/i):0]},e}(t);if(!e)return r;var n=o(e),i=g(e);function s(e,a){var o=r(e,a),s=o[1],l=s*i/(t-1)+n;return[o[0]*n/l,s/l]}return s.invert=function(e,a){var o=(t-1)/(t-1-a*i);return r.invert(o*e,o*a*n)},s}ur.forEach((function(t){t[1]*=1.0144})),fr.invert=function(t,e){var r=e/x,i=90*r,a=f(18,n(i/5)),o=u(0,l(a));do{var s=ur[o][1],c=ur[o+1][1],h=ur[f(19,o+2)][1],p=h-s,d=h-2*c+s,g=2*(n(r)-c)/p,m=d/p,v=g*(1-m*g*(1-2*m*g));if(v>=0||1===o){i=(e>=0?5:-5)*(v+a);var y,b=50;do{v=(a=f(18,n(i)/5))-(o=l(a)),s=ur[o][1],c=ur[o+1][1],h=ur[f(19,o+2)][1],i-=(y=(e>=0?x:-x)*(c+v*(h-s)/2+v*v*(h-2*c+s)/2)-e)*A}while(n(y)>1e-12&&--b>0);break}}while(--o>=0);var _=ur[o][0],w=ur[o+1][0],T=ur[f(19,o+2)][0];return[t/(w+v*(T-_)/2+v*v*(T-2*w+_)/2),i*M]};var pr=-179.9999,dr=179.9999,gr=-89.9999;function mr(t){return t.length>0}function vr(t){return-90===t||90===t?[0,t]:[-180,(e=t,Math.floor(1e4*e)/1e4)];var e}function yr(t){var e=t[0],r=t[1],n=!1;return e<=pr?(e=-180,n=!0):e>=dr&&(e=180,n=!0),r<=gr?(r=-90,n=!0):r>=89.9999&&(r=90,n=!0),n?[e,r]:t}function xr(t){return t.map(yr)}function br(t,e,r){for(var n=0,i=t.length;n=dr||u<=gr||u>=89.9999){a[o]=yr(l);for(var f=o+1;fpr&&pgr&&d<89.9999)break}if(f===o+1)continue;if(o){var g={index:-1,polygon:e,ring:a.slice(0,o+1)};g.ring[g.ring.length-1]=vr(u),r[r.length-1]=g}else r.pop();if(f>=s)break;r.push({index:-1,polygon:e,ring:a=a.slice(f-1)}),a[0]=vr(a[0][1]),o=-1,s=a.length}}}}function _r(t){var e,r,n,i,a,o,s=t.length,l={},c={};for(e=0;e0?y-l:l)*A],u=e.geoProjection(t(s)).rotate(c),f=e.geoRotation(c),h=u.center;return delete u.rotate,u.center=function(t){return arguments.length?h(f(t)):f.invert(h())},u.clipAngle(90)}function Mr(t){var r=o(t);function n(t,n){var i=e.geoGnomonicRaw(t,n);return i[0]*=r,i}return n.invert=function(t,n){return e.geoGnomonicRaw.invert(t/r,n)},n}function Sr(t,e){return Ar(Mr,t,e)}function Er(t){if(!(t*=2))return e.geoAzimuthalEquidistantRaw;var r=-t/2,n=-r,i=t*t,s=m(n),l=.5/g(n);function c(e,a){var s=E(o(a)*o(e-r)),l=E(o(a)*o(e-n));return[((s*=s)-(l*=l))/(2*t),(a<0?-1:1)*L(4*i*l-(i-s+l)*(i-s+l))/(2*t)]}return c.invert=function(t,e){var i,c,u=e*e,f=o(L(u+(i=t+r)*i)),h=o(L(u+(i=t+n)*i));return[a(c=f-h,i=(f+h)*s),(e<0?-1:1)*E(L(i*i+c*c)*l)]},c}function Lr(t,e){return Ar(Er,t,e)}function Cr(t,e){if(n(e)v&&--l>0);return[d(t)*(L(a*a+4)+a)*y/4,x*s]};var Rr=4*y+3*L(3),Fr=2*L(2*y*L(3)/Rr),Br=Y(Fr*L(3)/y,Fr,Rr/6);function Nr(t,e){return[t*L(1-3*e*e/(y*y)),e]}function jr(t,e){var r=o(e),n=o(t)*r,i=1-n,s=o(t=a(g(t)*r,-g(e))),l=g(t);return[l*(r=L(1-n*n))-s*i,-s*r-l*i]}function Ur(t,e){var r=O(t,e);return[(r[0]+t/x)/2,(r[1]+e)/2]}Nr.invert=function(t,e){return[t/L(1-3*e*e/(y*y)),e]},jr.invert=function(t,e){var r=(t*t+e*e)/-2,n=L(-r*(2+r)),i=e*r+t*n,o=t*r-e*n,s=L(o*o+i*i);return[a(n*i,s*(1+r)),s?-S(n*o/s):0]},Ur.invert=function(t,e){var r=t,i=e,a=25;do{var s,l=o(i),c=g(i),u=g(2*i),f=c*c,h=l*l,p=g(r),d=o(r/2),m=g(r/2),y=m*m,b=1-h*d*d,_=b?E(l*d)*L(s=1/b):s=0,w=.5*(2*_*l*m+r/x)-t,T=.5*(_*c+i)-e,k=.5*s*(h*y+_*l*d*f)+.5/x,A=s*(p*u/4-_*c*m),M=.125*s*(u*m-_*c*h*p),S=.5*s*(f*d+_*y*l)+.5,C=A*M-S*k,P=(T*A-w*S)/C,I=(w*M-T*k)/C;r-=P,i-=I}while((n(P)>v||n(I)>v)&&--a>0);return[r,i]},t.geoNaturalEarth=e.geoNaturalEarth1,t.geoNaturalEarthRaw=e.geoNaturalEarth1Raw,t.geoAiry=function(){var t=x,r=e.geoProjectionMutator(I),n=r(t);return n.radius=function(e){return arguments.length?r(t=e*M):t*A},n.scale(179.976).clipAngle(147)},t.geoAiryRaw=I,t.geoAitoff=function(){return e.geoProjection(O).scale(152.63)},t.geoAitoffRaw=O,t.geoArmadillo=function(){var t=20*M,r=t>=0?1:-1,n=m(r*t),i=e.geoProjectionMutator(z),s=i(t),l=s.stream;return s.parallel=function(e){return arguments.length?(n=m((r=(t=e*M)>=0?1:-1)*t),i(t)):t*A},s.stream=function(e){var i=s.rotate(),c=l(e),u=(s.rotate([0,0]),l(e)),f=s.precision();return s.rotate(i),c.sphere=function(){u.polygonStart(),u.lineStart();for(var e=-180*r;r*e<180;e+=90*r)u.point(e,90*r);if(t)for(;r*(e-=3*r*f)>=-180;)u.point(e,r*-a(o(e*M/2),n)*A);u.lineEnd(),u.polygonEnd()},c},s.scale(218.695).center([0,28.0974])},t.geoArmadilloRaw=z,t.geoAugust=function(){return e.geoProjection(D).scale(66.1603)},t.geoAugustRaw=D,t.geoBaker=function(){return e.geoProjection(B).scale(112.314)},t.geoBakerRaw=B,t.geoBerghaus=function(){var t=5,r=e.geoProjectionMutator(N),n=r(t),i=n.stream,s=-o(.01*M),l=g(.01*M);return n.lobes=function(e){return arguments.length?r(t=+e):t},n.stream=function(e){var r=n.rotate(),c=i(e),u=(n.rotate([0,0]),i(e));return n.rotate(r),c.sphere=function(){u.polygonStart(),u.lineStart();for(var e=0,r=360/t,n=2*y/t,i=90-180/t,c=x;e=0;)t.point((e=r[i])[0],e[1]);t.lineEnd(),t.polygonEnd()},t},n.scale(79.4187).parallel(45).clipAngle(179.999)},t.geoHammerRetroazimuthalRaw=Vt,t.geoHealpix=function(){var t=4,n=e.geoProjectionMutator(Yt),i=n(t),a=i.stream;return i.lobes=function(e){return arguments.length?n(t=+e):t},i.stream=function(n){var o=i.rotate(),s=a(n),l=(i.rotate([0,0]),a(n));return i.rotate(o),s.sphere=function(){var n,i;e.geoStream((n=180/t,i=[].concat(r.range(-180,180+n/2,n).map(Wt),r.range(180,-180-n/2,-n).map(Xt)),{type:\"Polygon\",coordinates:[180===n?i.map(Zt):i]}),l)},s},i.scale(239.75)},t.geoHealpixRaw=Yt,t.geoHill=function(){var t=1,r=e.geoProjectionMutator(Jt),n=r(t);return n.ratio=function(e){return arguments.length?r(t=+e):t},n.scale(167.774).center([0,18.67])},t.geoHillRaw=Jt,t.geoHomolosine=function(){return e.geoProjection(Qt).scale(152.63)},t.geoHomolosineRaw=Qt,t.geoHufnagel=function(){var t=1,r=0,n=45*M,i=2,a=e.geoProjectionMutator($t),o=a(t,r,n,i);return o.a=function(e){return arguments.length?a(t=+e,r,n,i):t},o.b=function(e){return arguments.length?a(t,r=+e,n,i):r},o.psiMax=function(e){return arguments.length?a(t,r,n=+e*M,i):n*A},o.ratio=function(e){return arguments.length?a(t,r,n,i=+e):i},o.scale(180.739)},t.geoHufnagelRaw=$t,t.geoHyperelliptical=function(){var t=0,r=2.5,n=1.183136,i=e.geoProjectionMutator(ee),a=i(t,r,n);return a.alpha=function(e){return arguments.length?i(t=+e,r,n):t},a.k=function(e){return arguments.length?i(t,r=+e,n):r},a.gamma=function(e){return arguments.length?i(t,r,n=+e):n},a.scale(152.63)},t.geoHyperellipticalRaw=ee,t.geoInterrupt=ae,t.geoInterruptedBoggs=function(){return ae(J,oe).scale(160.857)},t.geoInterruptedHomolosine=function(){return ae(Qt,se).scale(152.63)},t.geoInterruptedMollweide=function(){return ae(W,le).scale(169.529)},t.geoInterruptedMollweideHemispheres=function(){return ae(W,ce).scale(169.529).rotate([20,0])},t.geoInterruptedSinuMollweide=function(){return ae(Kt,ue,H).rotate([-20,-55]).scale(164.263).center([0,-5.4036])},t.geoInterruptedSinusoidal=function(){return ae(Q,fe).scale(152.63).rotate([-20,0])},t.geoKavrayskiy7=function(){return e.geoProjection(he).scale(158.837)},t.geoKavrayskiy7Raw=he,t.geoLagrange=function(){var t=.5,r=e.geoProjectionMutator(pe),n=r(t);return n.spacing=function(e){return arguments.length?r(t=+e):t},n.scale(124.75)},t.geoLagrangeRaw=pe,t.geoLarrivee=function(){return e.geoProjection(ge).scale(97.2672)},t.geoLarriveeRaw=ge,t.geoLaskowski=function(){return e.geoProjection(me).scale(139.98)},t.geoLaskowskiRaw=me,t.geoLittrow=function(){return e.geoProjection(ve).scale(144.049).clipAngle(89.999)},t.geoLittrowRaw=ve,t.geoLoximuthal=function(){return K(ye).parallel(40).scale(158.837)},t.geoLoximuthalRaw=ye,t.geoMiller=function(){return e.geoProjection(xe).scale(108.318)},t.geoMillerRaw=xe,t.geoModifiedStereographic=Me,t.geoModifiedStereographicRaw=be,t.geoModifiedStereographicAlaska=function(){return Me(_e,[152,-64]).scale(1400).center([-160.908,62.4864]).clipAngle(30).angle(7.8)},t.geoModifiedStereographicGs48=function(){return Me(we,[95,-38]).scale(1e3).clipAngle(55).center([-96.5563,38.8675])},t.geoModifiedStereographicGs50=function(){return Me(Te,[120,-45]).scale(359.513).clipAngle(55).center([-117.474,53.0628])},t.geoModifiedStereographicMiller=function(){return Me(ke,[-20,-18]).scale(209.091).center([20,16.7214]).clipAngle(82)},t.geoModifiedStereographicLee=function(){return Me(Ae,[165,10]).scale(250).clipAngle(130).center([-165,-10])},t.geoMollweide=function(){return e.geoProjection(W).scale(169.529)},t.geoMollweideRaw=W,t.geoMtFlatPolarParabolic=function(){return e.geoProjection(Le).scale(164.859)},t.geoMtFlatPolarParabolicRaw=Le,t.geoMtFlatPolarQuartic=function(){return e.geoProjection(Ce).scale(188.209)},t.geoMtFlatPolarQuarticRaw=Ce,t.geoMtFlatPolarSinusoidal=function(){return e.geoProjection(Pe).scale(166.518)},t.geoMtFlatPolarSinusoidalRaw=Pe,t.geoNaturalEarth2=function(){return e.geoProjection(Ie).scale(175.295)},t.geoNaturalEarth2Raw=Ie,t.geoNellHammer=function(){return e.geoProjection(Oe).scale(152.63)},t.geoNellHammerRaw=Oe,t.geoInterruptedQuarticAuthalic=function(){return ae(j(1/0),ze).rotate([20,0]).scale(152.63)},t.geoNicolosi=function(){return e.geoProjection(De).scale(127.267)},t.geoNicolosiRaw=De,t.geoPatterson=function(){return e.geoProjection(Re).scale(139.319)},t.geoPattersonRaw=Re,t.geoPolyconic=function(){return e.geoProjection(Fe).scale(103.74)},t.geoPolyconicRaw=Fe,t.geoPolyhedral=Ve,t.geoPolyhedralButterfly=function(t){t=t||function(t){var r=e.geoCentroid({type:\"MultiPoint\",coordinates:t});return e.geoGnomonic().scale(1).translate([0,0]).rotate([-r[0],-r[1]])};var r=Ye.map((function(e){return{face:e,project:t(e)}}));return[-1,0,0,1,0,1,4,5].forEach((function(t,e){var n=r[t];n&&(n.children||(n.children=[])).push(r[e])})),Ve(r[0],(function(t,e){return r[t<-y/2?e<0?6:4:t<0?e<0?2:0:t0?[-r[0],0]:[180-r[0],180])};var r=Ye.map((function(e){return{face:e,project:t(e)}}));return[-1,0,0,1,0,1,4,5].forEach((function(t,e){var n=r[t];n&&(n.children||(n.children=[])).push(r[e])})),Ve(r[0],(function(t,e){return r[t<-y/2?e<0?6:4:t<0?e<0?2:0:t2||a[0]!=e[0]||a[1]!=e[1])&&(n.push(a),e=a)}return 1===n.length&&t.length>1&&n.push(r(t[t.length-1])),n}function a(t){return t.map(i)}function o(t){if(null==t)return t;var e;switch(t.type){case\"GeometryCollection\":e={type:\"GeometryCollection\",geometries:t.geometries.map(o)};break;case\"Point\":e={type:\"Point\",coordinates:r(t.coordinates)};break;case\"MultiPoint\":e={type:t.type,coordinates:n(t.coordinates)};break;case\"LineString\":e={type:t.type,coordinates:i(t.coordinates)};break;case\"MultiLineString\":case\"Polygon\":e={type:t.type,coordinates:a(t.coordinates)};break;case\"MultiPolygon\":e={type:\"MultiPolygon\",coordinates:t.coordinates.map(a)};break;default:return t}return null!=t.bbox&&(e.bbox=t.bbox),e}function s(t){var e={type:\"Feature\",properties:t.properties,geometry:o(t.geometry)};return null!=t.id&&(e.id=t.id),null!=t.bbox&&(e.bbox=t.bbox),e}if(null!=t)switch(t.type){case\"Feature\":return s(t);case\"FeatureCollection\":var l={type:\"FeatureCollection\",features:t.features.map(s)};return null!=t.bbox&&(l.bbox=t.bbox),l;default:return o(t)}return t},t.geoQuincuncial=sr,t.geoRectangularPolyconic=function(){return K(cr).scale(131.215)},t.geoRectangularPolyconicRaw=cr,t.geoRobinson=function(){return e.geoProjection(fr).scale(152.63)},t.geoRobinsonRaw=fr,t.geoSatellite=function(){var t=2,r=0,n=e.geoProjectionMutator(hr),i=n(t,r);return i.distance=function(e){return arguments.length?n(t=+e,r):t},i.tilt=function(e){return arguments.length?n(t,r=e*M):r*A},i.scale(432.147).clipAngle(E(1/t)*A-1e-6)},t.geoSatelliteRaw=hr,t.geoSinuMollweide=function(){return e.geoProjection(Kt).rotate([-20,-55]).scale(164.263).center([0,-5.4036])},t.geoSinuMollweideRaw=Kt,t.geoSinusoidal=function(){return e.geoProjection(Q).scale(152.63)},t.geoSinusoidalRaw=Q,t.geoStitch=function(t){if(null==t)return t;switch(t.type){case\"Feature\":return wr(t);case\"FeatureCollection\":var e={type:\"FeatureCollection\",features:t.features.map(wr)};return null!=t.bbox&&(e.bbox=t.bbox),e;default:return Tr(t)}},t.geoTimes=function(){return e.geoProjection(kr).scale(146.153)},t.geoTimesRaw=kr,t.geoTwoPointAzimuthal=Sr,t.geoTwoPointAzimuthalRaw=Mr,t.geoTwoPointAzimuthalUsa=function(){return Sr([-158,21.5],[-77,39]).clipAngle(60).scale(400)},t.geoTwoPointEquidistant=Lr,t.geoTwoPointEquidistantRaw=Er,t.geoTwoPointEquidistantUsa=function(){return Lr([-158,21.5],[-77,39]).clipAngle(130).scale(122.571)},t.geoVanDerGrinten=function(){return e.geoProjection(Cr).scale(79.4183)},t.geoVanDerGrintenRaw=Cr,t.geoVanDerGrinten2=function(){return e.geoProjection(Pr).scale(79.4183)},t.geoVanDerGrinten2Raw=Pr,t.geoVanDerGrinten3=function(){return e.geoProjection(Ir).scale(79.4183)},t.geoVanDerGrinten3Raw=Ir,t.geoVanDerGrinten4=function(){return e.geoProjection(Or).scale(127.16)},t.geoVanDerGrinten4Raw=Or,t.geoWagner=Dr,t.geoWagner7=function(){return Dr().poleline(65).parallels(60).inflation(0).ratio(200).scale(172.633)},t.geoWagnerRaw=zr,t.geoWagner4=function(){return e.geoProjection(Br).scale(176.84)},t.geoWagner4Raw=Br,t.geoWagner6=function(){return e.geoProjection(Nr).scale(152.63)},t.geoWagner6Raw=Nr,t.geoWiechel=function(){return e.geoProjection(jr).rotate([0,-90,45]).scale(124.75).clipAngle(179.999)},t.geoWiechelRaw=jr,t.geoWinkel3=function(){return e.geoProjection(Ur).scale(158.837)},t.geoWinkel3Raw=Ur,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{\"d3-array\":107,\"d3-geo\":114}],114:[function(t,e,r){!function(n,i){\"object\"==typeof r&&void 0!==e?i(r,t(\"d3-array\")):i((n=n||self).d3=n.d3||{},n.d3)}(this,(function(t,e){\"use strict\";function r(){return new n}function n(){this.reset()}n.prototype={constructor:n,reset:function(){this.s=this.t=0},add:function(t){a(i,t,this.t),a(this,i.s,this.s),this.s?this.t+=i.t:this.s=i.t},valueOf:function(){return this.s}};var i=new n;function a(t,e,r){var n=t.s=e+r,i=n-e,a=n-i;t.t=e-a+(r-i)}var o=1e-6,s=Math.PI,l=s/2,c=s/4,u=2*s,f=180/s,h=s/180,p=Math.abs,d=Math.atan,g=Math.atan2,m=Math.cos,v=Math.ceil,y=Math.exp,x=Math.log,b=Math.pow,_=Math.sin,w=Math.sign||function(t){return t>0?1:t<0?-1:0},T=Math.sqrt,k=Math.tan;function A(t){return t>1?0:t<-1?s:Math.acos(t)}function M(t){return t>1?l:t<-1?-l:Math.asin(t)}function S(t){return(t=_(t/2))*t}function E(){}function L(t,e){t&&P.hasOwnProperty(t.type)&&P[t.type](t,e)}var C={Feature:function(t,e){L(t.geometry,e)},FeatureCollection:function(t,e){for(var r=t.features,n=-1,i=r.length;++n=0?1:-1,i=n*r,a=m(e=(e*=h)/2+c),o=_(e),s=N*o,l=B*a+s*m(i),u=s*n*_(i);j.add(g(u,l)),F=t,B=a,N=o}function W(t){return[g(t[1],t[0]),M(t[2])]}function X(t){var e=t[0],r=t[1],n=m(r);return[n*m(e),n*_(e),_(r)]}function Z(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function J(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function K(t,e){t[0]+=e[0],t[1]+=e[1],t[2]+=e[2]}function Q(t,e){return[t[0]*e,t[1]*e,t[2]*e]}function $(t){var e=T(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=e,t[1]/=e,t[2]/=e}var tt,et,rt,nt,it,at,ot,st,lt,ct,ut,ft,ht,pt,dt,gt,mt,vt,yt,xt,bt,_t,wt,Tt,kt,At,Mt=r(),St={point:Et,lineStart:Ct,lineEnd:Pt,polygonStart:function(){St.point=It,St.lineStart=Ot,St.lineEnd=zt,Mt.reset(),V.polygonStart()},polygonEnd:function(){V.polygonEnd(),St.point=Et,St.lineStart=Ct,St.lineEnd=Pt,j<0?(tt=-(rt=180),et=-(nt=90)):Mt>o?nt=90:Mt<-o&&(et=-90),ct[0]=tt,ct[1]=rt},sphere:function(){tt=-(rt=180),et=-(nt=90)}};function Et(t,e){lt.push(ct=[tt=t,rt=t]),ent&&(nt=e)}function Lt(t,e){var r=X([t*h,e*h]);if(st){var n=J(st,r),i=J([n[1],-n[0],0],n);$(i),i=W(i);var a,o=t-it,s=o>0?1:-1,l=i[0]*f*s,c=p(o)>180;c^(s*itnt&&(nt=a):c^(s*it<(l=(l+360)%360-180)&&lnt&&(nt=e)),c?tDt(tt,rt)&&(rt=t):Dt(t,rt)>Dt(tt,rt)&&(tt=t):rt>=tt?(trt&&(rt=t)):t>it?Dt(tt,t)>Dt(tt,rt)&&(rt=t):Dt(t,rt)>Dt(tt,rt)&&(tt=t)}else lt.push(ct=[tt=t,rt=t]);ent&&(nt=e),st=r,it=t}function Ct(){St.point=Lt}function Pt(){ct[0]=tt,ct[1]=rt,St.point=Et,st=null}function It(t,e){if(st){var r=t-it;Mt.add(p(r)>180?r+(r>0?360:-360):r)}else at=t,ot=e;V.point(t,e),Lt(t,e)}function Ot(){V.lineStart()}function zt(){It(at,ot),V.lineEnd(),p(Mt)>o&&(tt=-(rt=180)),ct[0]=tt,ct[1]=rt,st=null}function Dt(t,e){return(e-=t)<0?e+360:e}function Rt(t,e){return t[0]-e[0]}function Ft(t,e){return t[0]<=t[1]?t[0]<=e&&e<=t[1]:es?t+Math.round(-t/u)*u:t,e]}function Qt(t,e,r){return(t%=u)?e||r?Jt(te(t),ee(e,r)):te(t):e||r?ee(e,r):Kt}function $t(t){return function(e,r){return[(e+=t)>s?e-u:e<-s?e+u:e,r]}}function te(t){var e=$t(t);return e.invert=$t(-t),e}function ee(t,e){var r=m(t),n=_(t),i=m(e),a=_(e);function o(t,e){var o=m(e),s=m(t)*o,l=_(t)*o,c=_(e),u=c*r+s*n;return[g(l*i-u*a,s*r-c*n),M(u*i+l*a)]}return o.invert=function(t,e){var o=m(e),s=m(t)*o,l=_(t)*o,c=_(e),u=c*i-l*a;return[g(l*i+c*a,s*r+u*n),M(u*r-s*n)]},o}function re(t){function e(e){return(e=t(e[0]*h,e[1]*h))[0]*=f,e[1]*=f,e}return t=Qt(t[0]*h,t[1]*h,t.length>2?t[2]*h:0),e.invert=function(e){return(e=t.invert(e[0]*h,e[1]*h))[0]*=f,e[1]*=f,e},e}function ne(t,e,r,n,i,a){if(r){var o=m(e),s=_(e),l=n*r;null==i?(i=e+n*u,a=e-l/2):(i=ie(o,i),a=ie(o,a),(n>0?ia)&&(i+=n*u));for(var c,f=i;n>0?f>a:f1&&e.push(e.pop().concat(e.shift()))},result:function(){var r=e;return e=[],t=null,r}}}function oe(t,e){return p(t[0]-e[0])=0;--a)i.point((f=u[a])[0],f[1]);else n(p.x,p.p.x,-1,i);p=p.p}u=(p=p.o).z,d=!d}while(!p.v);i.lineEnd()}}}function ce(t){if(e=t.length){for(var e,r,n=0,i=t[0];++n=0?1:-1,z=O*I,D=z>s,R=T*C;if(ue.add(g(R*O*_(z),k*P+R*m(z))),f+=D?I+O*u:I,D^b>=r^E>=r){var F=J(X(x),X(S));$(F);var B=J(a,F);$(B);var N=(D^I>=0?-1:1)*M(B[2]);(n>N||n===N&&(F[0]||F[1]))&&(h+=D^I>=0?1:-1)}}return(f<-o||f0){for(h||(a.polygonStart(),h=!0),a.lineStart(),t=0;t1&&2&i&&c.push(c.pop().concat(c.shift())),s.push(c.filter(de))}return p}}function de(t){return t.length>1}function ge(t,e){return((t=t.x)[0]<0?t[1]-l-o:l-t[1])-((e=e.x)[0]<0?e[1]-l-o:l-e[1])}var me=pe((function(){return!0}),(function(t){var e,r=NaN,n=NaN,i=NaN;return{lineStart:function(){t.lineStart(),e=1},point:function(a,c){var u=a>0?s:-s,f=p(a-r);p(f-s)0?l:-l),t.point(i,n),t.lineEnd(),t.lineStart(),t.point(u,n),t.point(a,n),e=0):i!==u&&f>=s&&(p(r-i)o?d((_(e)*(a=m(n))*_(r)-_(n)*(i=m(e))*_(t))/(i*a*s)):(e+n)/2}(r,n,a,c),t.point(i,n),t.lineEnd(),t.lineStart(),t.point(u,n),e=0),t.point(r=a,n=c),i=u},lineEnd:function(){t.lineEnd(),r=n=NaN},clean:function(){return 2-e}}}),(function(t,e,r,n){var i;if(null==t)i=r*l,n.point(-s,i),n.point(0,i),n.point(s,i),n.point(s,0),n.point(s,-i),n.point(0,-i),n.point(-s,-i),n.point(-s,0),n.point(-s,i);else if(p(t[0]-e[0])>o){var a=t[0]0,i=p(e)>o;function a(t,r){return m(t)*m(r)>e}function l(t,r,n){var i=[1,0,0],a=J(X(t),X(r)),l=Z(a,a),c=a[0],u=l-c*c;if(!u)return!n&&t;var f=e*l/u,h=-e*c/u,d=J(i,a),g=Q(i,f);K(g,Q(a,h));var m=d,v=Z(g,m),y=Z(m,m),x=v*v-y*(Z(g,g)-1);if(!(x<0)){var b=T(x),_=Q(m,(-v-b)/y);if(K(_,g),_=W(_),!n)return _;var w,k=t[0],A=r[0],M=t[1],S=r[1];A0^_[1]<(p(_[0]-k)s^(k<=_[0]&&_[0]<=A)){var C=Q(m,(-v+b)/y);return K(C,g),[_,W(C)]}}}function c(e,r){var i=n?t:s-t,a=0;return e<-i?a|=1:e>i&&(a|=2),r<-i?a|=4:r>i&&(a|=8),a}return pe(a,(function(t){var e,r,o,u,f;return{lineStart:function(){u=o=!1,f=1},point:function(h,p){var d,g=[h,p],m=a(h,p),v=n?m?0:c(h,p):m?c(h+(h<0?s:-s),p):0;if(!e&&(u=o=m)&&t.lineStart(),m!==o&&(!(d=l(e,g))||oe(e,d)||oe(g,d))&&(g[2]=1),m!==o)f=0,m?(t.lineStart(),d=l(g,e),t.point(d[0],d[1])):(d=l(e,g),t.point(d[0],d[1],2),t.lineEnd()),e=d;else if(i&&e&&n^m){var y;v&r||!(y=l(g,e,!0))||(f=0,n?(t.lineStart(),t.point(y[0][0],y[0][1]),t.point(y[1][0],y[1][1]),t.lineEnd()):(t.point(y[1][0],y[1][1]),t.lineEnd(),t.lineStart(),t.point(y[0][0],y[0][1],3)))}!m||e&&oe(e,g)||t.point(g[0],g[1]),e=g,o=m,r=v},lineEnd:function(){o&&t.lineEnd(),e=null},clean:function(){return f|(u&&o)<<1}}}),(function(e,n,i,a){ne(a,t,r,i,e,n)}),n?[0,-t]:[-s,t-s])}function ye(t,r,n,i){function a(e,a){return t<=e&&e<=n&&r<=a&&a<=i}function s(e,a,o,s){var c=0,f=0;if(null==e||(c=l(e,o))!==(f=l(a,o))||u(e,a)<0^o>0)do{s.point(0===c||3===c?t:n,c>1?i:r)}while((c=(c+o+4)%4)!==f);else s.point(a[0],a[1])}function l(e,i){return p(e[0]-t)0?0:3:p(e[0]-n)0?2:1:p(e[1]-r)0?1:0:i>0?3:2}function c(t,e){return u(t.x,e.x)}function u(t,e){var r=l(t,1),n=l(e,1);return r!==n?r-n:0===r?e[1]-t[1]:1===r?t[0]-e[0]:2===r?t[1]-e[1]:e[0]-t[0]}return function(o){var l,u,f,h,p,d,g,m,v,y,x,b=o,_=ae(),w={point:T,lineStart:function(){w.point=k,u&&u.push(f=[]);y=!0,v=!1,g=m=NaN},lineEnd:function(){l&&(k(h,p),d&&v&&_.rejoin(),l.push(_.result()));w.point=T,v&&b.lineEnd()},polygonStart:function(){b=_,l=[],u=[],x=!0},polygonEnd:function(){var r=function(){for(var e=0,r=0,n=u.length;ri&&(h-a)*(i-o)>(p-o)*(t-a)&&++e:p<=i&&(h-a)*(i-o)<(p-o)*(t-a)&&--e;return e}(),n=x&&r,a=(l=e.merge(l)).length;(n||a)&&(o.polygonStart(),n&&(o.lineStart(),s(null,null,1,o),o.lineEnd()),a&&le(l,c,r,s,o),o.polygonEnd());b=o,l=u=f=null}};function T(t,e){a(t,e)&&b.point(t,e)}function k(e,o){var s=a(e,o);if(u&&f.push([e,o]),y)h=e,p=o,d=s,y=!1,s&&(b.lineStart(),b.point(e,o));else if(s&&v)b.point(e,o);else{var l=[g=Math.max(-1e9,Math.min(1e9,g)),m=Math.max(-1e9,Math.min(1e9,m))],c=[e=Math.max(-1e9,Math.min(1e9,e)),o=Math.max(-1e9,Math.min(1e9,o))];!function(t,e,r,n,i,a){var o,s=t[0],l=t[1],c=0,u=1,f=e[0]-s,h=e[1]-l;if(o=r-s,f||!(o>0)){if(o/=f,f<0){if(o0){if(o>u)return;o>c&&(c=o)}if(o=i-s,f||!(o<0)){if(o/=f,f<0){if(o>u)return;o>c&&(c=o)}else if(f>0){if(o0)){if(o/=h,h<0){if(o0){if(o>u)return;o>c&&(c=o)}if(o=a-l,h||!(o<0)){if(o/=h,h<0){if(o>u)return;o>c&&(c=o)}else if(h>0){if(o0&&(t[0]=s+c*f,t[1]=l+c*h),u<1&&(e[0]=s+u*f,e[1]=l+u*h),!0}}}}}(l,c,t,r,n,i)?s&&(b.lineStart(),b.point(e,o),x=!1):(v||(b.lineStart(),b.point(l[0],l[1])),b.point(c[0],c[1]),s||b.lineEnd(),x=!1)}g=e,m=o,v=s}return w}}var xe,be,_e,we=r(),Te={sphere:E,point:E,lineStart:function(){Te.point=Ae,Te.lineEnd=ke},lineEnd:E,polygonStart:E,polygonEnd:E};function ke(){Te.point=Te.lineEnd=E}function Ae(t,e){xe=t*=h,be=_(e*=h),_e=m(e),Te.point=Me}function Me(t,e){t*=h;var r=_(e*=h),n=m(e),i=p(t-xe),a=m(i),o=n*_(i),s=_e*r-be*n*a,l=be*r+_e*n*a;we.add(g(T(o*o+s*s),l)),xe=t,be=r,_e=n}function Se(t){return we.reset(),z(t,Te),+we}var Ee=[null,null],Le={type:\"LineString\",coordinates:Ee};function Ce(t,e){return Ee[0]=t,Ee[1]=e,Se(Le)}var Pe={Feature:function(t,e){return Oe(t.geometry,e)},FeatureCollection:function(t,e){for(var r=t.features,n=-1,i=r.length;++n0&&(i=Ce(t[a],t[a-1]))>0&&r<=i&&n<=i&&(r+n-i)*(1-Math.pow((r-n)/i,2))<1e-12*i)return!0;r=n}return!1}function Re(t,e){return!!he(t.map(Fe),Be(e))}function Fe(t){return(t=t.map(Be)).pop(),t}function Be(t){return[t[0]*h,t[1]*h]}function Ne(t,r,n){var i=e.range(t,r-o,n).concat(r);return function(t){return i.map((function(e){return[t,e]}))}}function je(t,r,n){var i=e.range(t,r-o,n).concat(r);return function(t){return i.map((function(e){return[e,t]}))}}function Ue(){var t,r,n,i,a,s,l,c,u,f,h,d,g=10,m=g,y=90,x=360,b=2.5;function _(){return{type:\"MultiLineString\",coordinates:w()}}function w(){return e.range(v(i/y)*y,n,y).map(h).concat(e.range(v(c/x)*x,l,x).map(d)).concat(e.range(v(r/g)*g,t,g).filter((function(t){return p(t%y)>o})).map(u)).concat(e.range(v(s/m)*m,a,m).filter((function(t){return p(t%x)>o})).map(f))}return _.lines=function(){return w().map((function(t){return{type:\"LineString\",coordinates:t}}))},_.outline=function(){return{type:\"Polygon\",coordinates:[h(i).concat(d(l).slice(1),h(n).reverse().slice(1),d(c).reverse().slice(1))]}},_.extent=function(t){return arguments.length?_.extentMajor(t).extentMinor(t):_.extentMinor()},_.extentMajor=function(t){return arguments.length?(i=+t[0][0],n=+t[1][0],c=+t[0][1],l=+t[1][1],i>n&&(t=i,i=n,n=t),c>l&&(t=c,c=l,l=t),_.precision(b)):[[i,c],[n,l]]},_.extentMinor=function(e){return arguments.length?(r=+e[0][0],t=+e[1][0],s=+e[0][1],a=+e[1][1],r>t&&(e=r,r=t,t=e),s>a&&(e=s,s=a,a=e),_.precision(b)):[[r,s],[t,a]]},_.step=function(t){return arguments.length?_.stepMajor(t).stepMinor(t):_.stepMinor()},_.stepMajor=function(t){return arguments.length?(y=+t[0],x=+t[1],_):[y,x]},_.stepMinor=function(t){return arguments.length?(g=+t[0],m=+t[1],_):[g,m]},_.precision=function(e){return arguments.length?(b=+e,u=Ne(s,a,90),f=je(r,t,b),h=Ne(c,l,90),d=je(i,n,b),_):b},_.extentMajor([[-180,-90+o],[180,90-o]]).extentMinor([[-180,-80-o],[180,80+o]])}function Ve(t){return t}var He,qe,Ge,Ye,We=r(),Xe=r(),Ze={point:E,lineStart:E,lineEnd:E,polygonStart:function(){Ze.lineStart=Je,Ze.lineEnd=$e},polygonEnd:function(){Ze.lineStart=Ze.lineEnd=Ze.point=E,We.add(p(Xe)),Xe.reset()},result:function(){var t=We/2;return We.reset(),t}};function Je(){Ze.point=Ke}function Ke(t,e){Ze.point=Qe,He=Ge=t,qe=Ye=e}function Qe(t,e){Xe.add(Ye*t-Ge*e),Ge=t,Ye=e}function $e(){Qe(He,qe)}var tr=1/0,er=tr,rr=-tr,nr=rr,ir={point:function(t,e){trr&&(rr=t);enr&&(nr=e)},lineStart:E,lineEnd:E,polygonStart:E,polygonEnd:E,result:function(){var t=[[tr,er],[rr,nr]];return rr=nr=-(er=tr=1/0),t}};var ar,or,sr,lr,cr=0,ur=0,fr=0,hr=0,pr=0,dr=0,gr=0,mr=0,vr=0,yr={point:xr,lineStart:br,lineEnd:Tr,polygonStart:function(){yr.lineStart=kr,yr.lineEnd=Ar},polygonEnd:function(){yr.point=xr,yr.lineStart=br,yr.lineEnd=Tr},result:function(){var t=vr?[gr/vr,mr/vr]:dr?[hr/dr,pr/dr]:fr?[cr/fr,ur/fr]:[NaN,NaN];return cr=ur=fr=hr=pr=dr=gr=mr=vr=0,t}};function xr(t,e){cr+=t,ur+=e,++fr}function br(){yr.point=_r}function _r(t,e){yr.point=wr,xr(sr=t,lr=e)}function wr(t,e){var r=t-sr,n=e-lr,i=T(r*r+n*n);hr+=i*(sr+t)/2,pr+=i*(lr+e)/2,dr+=i,xr(sr=t,lr=e)}function Tr(){yr.point=xr}function kr(){yr.point=Mr}function Ar(){Sr(ar,or)}function Mr(t,e){yr.point=Sr,xr(ar=sr=t,or=lr=e)}function Sr(t,e){var r=t-sr,n=e-lr,i=T(r*r+n*n);hr+=i*(sr+t)/2,pr+=i*(lr+e)/2,dr+=i,gr+=(i=lr*t-sr*e)*(sr+t),mr+=i*(lr+e),vr+=3*i,xr(sr=t,lr=e)}function Er(t){this._context=t}Er.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._context.moveTo(t,e),this._point=1;break;case 1:this._context.lineTo(t,e);break;default:this._context.moveTo(t+this._radius,e),this._context.arc(t,e,this._radius,0,u)}},result:E};var Lr,Cr,Pr,Ir,Or,zr=r(),Dr={point:E,lineStart:function(){Dr.point=Rr},lineEnd:function(){Lr&&Fr(Cr,Pr),Dr.point=E},polygonStart:function(){Lr=!0},polygonEnd:function(){Lr=null},result:function(){var t=+zr;return zr.reset(),t}};function Rr(t,e){Dr.point=Fr,Cr=Ir=t,Pr=Or=e}function Fr(t,e){Ir-=t,Or-=e,zr.add(T(Ir*Ir+Or*Or)),Ir=t,Or=e}function Br(){this._string=[]}function Nr(t){return\"m0,\"+t+\"a\"+t+\",\"+t+\" 0 1,1 0,\"+-2*t+\"a\"+t+\",\"+t+\" 0 1,1 0,\"+2*t+\"z\"}function jr(t){return function(e){var r=new Ur;for(var n in t)r[n]=t[n];return r.stream=e,r}}function Ur(){}function Vr(t,e,r){var n=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=n&&t.clipExtent(null),z(r,t.stream(ir)),e(ir.result()),null!=n&&t.clipExtent(n),t}function Hr(t,e,r){return Vr(t,(function(r){var n=e[1][0]-e[0][0],i=e[1][1]-e[0][1],a=Math.min(n/(r[1][0]-r[0][0]),i/(r[1][1]-r[0][1])),o=+e[0][0]+(n-a*(r[1][0]+r[0][0]))/2,s=+e[0][1]+(i-a*(r[1][1]+r[0][1]))/2;t.scale(150*a).translate([o,s])}),r)}function qr(t,e,r){return Hr(t,[[0,0],e],r)}function Gr(t,e,r){return Vr(t,(function(r){var n=+e,i=n/(r[1][0]-r[0][0]),a=(n-i*(r[1][0]+r[0][0]))/2,o=-i*r[0][1];t.scale(150*i).translate([a,o])}),r)}function Yr(t,e,r){return Vr(t,(function(r){var n=+e,i=n/(r[1][1]-r[0][1]),a=-i*r[0][0],o=(n-i*(r[1][1]+r[0][1]))/2;t.scale(150*i).translate([a,o])}),r)}Br.prototype={_radius:4.5,_circle:Nr(4.5),pointRadius:function(t){return(t=+t)!==this._radius&&(this._radius=t,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push(\"Z\"),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._string.push(\"M\",t,\",\",e),this._point=1;break;case 1:this._string.push(\"L\",t,\",\",e);break;default:null==this._circle&&(this._circle=Nr(this._radius)),this._string.push(\"M\",t,\",\",e,this._circle)}},result:function(){if(this._string.length){var t=this._string.join(\"\");return this._string=[],t}return null}},Ur.prototype={constructor:Ur,point:function(t,e){this.stream.point(t,e)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var Wr=m(30*h);function Xr(t,e){return+e?function(t,e){function r(n,i,a,s,l,c,u,f,h,d,m,v,y,x){var b=u-n,_=f-i,w=b*b+_*_;if(w>4*e&&y--){var k=s+d,A=l+m,S=c+v,E=T(k*k+A*A+S*S),L=M(S/=E),C=p(p(S)-1)e||p((b*z+_*D)/w-.5)>.3||s*d+l*m+c*v2?t[2]%360*h:0,I()):[y*f,x*f,b*f]},C.angle=function(t){return arguments.length?(_=t%360*h,I()):_*f},C.reflectX=function(t){return arguments.length?(w=t?-1:1,I()):w<0},C.reflectY=function(t){return arguments.length?(k=t?-1:1,I()):k<0},C.precision=function(t){return arguments.length?(o=Xr(s,L=t*t),O()):T(L)},C.fitExtent=function(t,e){return Hr(C,t,e)},C.fitSize=function(t,e){return qr(C,t,e)},C.fitWidth=function(t,e){return Gr(C,t,e)},C.fitHeight=function(t,e){return Yr(C,t,e)},function(){return e=t.apply(this,arguments),C.invert=e.invert&&P,I()}}function tn(t){var e=0,r=s/3,n=$r(t),i=n(e,r);return i.parallels=function(t){return arguments.length?n(e=t[0]*h,r=t[1]*h):[e*f,r*f]},i}function en(t,e){var r=_(t),n=(r+_(e))/2;if(p(n)0?e<-l+o&&(e=-l+o):e>l-o&&(e=l-o);var r=i/b(fn(e),n);return[r*_(n*t),i-r*m(n*t)]}return a.invert=function(t,e){var r=i-e,a=w(n)*T(t*t+r*r),o=g(t,p(r))*w(r);return r*n<0&&(o-=s*w(t)*w(r)),[o/n,2*d(b(i/a,1/n))-l]},a}function pn(t,e){return[t,e]}function dn(t,e){var r=m(t),n=t===e?_(t):(r-m(e))/(e-t),i=r/n+t;if(p(n)o&&--i>0);return[t/(.8707+(a=n*n)*(a*(a*a*a*(.003971-.001529*a)-.013791)-.131979)),n]},Tn.invert=on(M),kn.invert=on((function(t){return 2*d(t)})),An.invert=function(t,e){return[-e,2*d(y(t))-l]},t.geoAlbers=nn,t.geoAlbersUsa=function(){var t,e,r,n,i,a,s=nn(),l=rn().rotate([154,0]).center([-2,58.5]).parallels([55,65]),c=rn().rotate([157,0]).center([-3,19.9]).parallels([8,18]),u={point:function(t,e){a=[t,e]}};function f(t){var e=t[0],o=t[1];return a=null,r.point(e,o),a||(n.point(e,o),a)||(i.point(e,o),a)}function h(){return t=e=null,f}return f.invert=function(t){var e=s.scale(),r=s.translate(),n=(t[0]-r[0])/e,i=(t[1]-r[1])/e;return(i>=.12&&i<.234&&n>=-.425&&n<-.214?l:i>=.166&&i<.234&&n>=-.214&&n<-.115?c:s).invert(t)},f.stream=function(r){return t&&e===r?t:(n=[s.stream(e=r),l.stream(r),c.stream(r)],i=n.length,t={point:function(t,e){for(var r=-1;++rDt(n[0],n[1])&&(n[1]=i[1]),Dt(i[0],n[1])>Dt(n[0],n[1])&&(n[0]=i[0])):a.push(n=i);for(o=-1/0,e=0,n=a[r=a.length-1];e<=r;n=i,++e)i=a[e],(s=Dt(n[1],i[0]))>o&&(o=s,tt=i[0],rt=n[1])}return lt=ct=null,tt===1/0||et===1/0?[[NaN,NaN],[NaN,NaN]]:[[tt,et],[rt,nt]]},t.geoCentroid=function(t){ut=ft=ht=pt=dt=gt=mt=vt=yt=xt=bt=0,z(t,Bt);var e=yt,r=xt,n=bt,i=e*e+r*r+n*n;return i<1e-12&&(e=gt,r=mt,n=vt,ft2?t[2]+90:90]):[(t=r())[0],t[1],t[2]-90]},r([0,0,90]).scale(159.155)},t.geoTransverseMercatorRaw=An,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{\"d3-array\":107}],115:[function(t,e,r){!function(t,n){\"object\"==typeof r&&void 0!==e?n(r):n((t=t||self).d3=t.d3||{})}(this,(function(t){\"use strict\";function e(t,e){return t.parent===e.parent?1:2}function r(t,e){return t+e.x}function n(t,e){return Math.max(t,e.y)}function i(t){var e=0,r=t.children,n=r&&r.length;if(n)for(;--n>=0;)e+=r[n].value;else e=1;t.value=e}function a(t,e){var r,n,i,a,s,u=new c(t),f=+t.value&&(u.value=t.value),h=[u];for(null==e&&(e=o);r=h.pop();)if(f&&(r.value=+r.data.value),(i=e(r.data))&&(s=i.length))for(r.children=new Array(s),a=s-1;a>=0;--a)h.push(n=r.children[a]=new c(i[a])),n.parent=r,n.depth=r.depth+1;return u.eachBefore(l)}function o(t){return t.children}function s(t){t.data=t.data.data}function l(t){var e=0;do{t.height=e}while((t=t.parent)&&t.height<++e)}function c(t){this.data=t,this.depth=this.height=0,this.parent=null}c.prototype=a.prototype={constructor:c,count:function(){return this.eachAfter(i)},each:function(t){var e,r,n,i,a=this,o=[a];do{for(e=o.reverse(),o=[];a=e.pop();)if(t(a),r=a.children)for(n=0,i=r.length;n=0;--r)i.push(e[r]);return this},sum:function(t){return this.eachAfter((function(e){for(var r=+t(e.data)||0,n=e.children,i=n&&n.length;--i>=0;)r+=n[i].value;e.value=r}))},sort:function(t){return this.eachBefore((function(e){e.children&&e.children.sort(t)}))},path:function(t){for(var e=this,r=function(t,e){if(t===e)return t;var r=t.ancestors(),n=e.ancestors(),i=null;t=r.pop(),e=n.pop();for(;t===e;)i=t,t=r.pop(),e=n.pop();return i}(e,t),n=[e];e!==r;)e=e.parent,n.push(e);for(var i=n.length;t!==r;)n.splice(i,0,t),t=t.parent;return n},ancestors:function(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e},descendants:function(){var t=[];return this.each((function(e){t.push(e)})),t},leaves:function(){var t=[];return this.eachBefore((function(e){e.children||t.push(e)})),t},links:function(){var t=this,e=[];return t.each((function(r){r!==t&&e.push({source:r.parent,target:r})})),e},copy:function(){return a(this).eachBefore(s)}};var u=Array.prototype.slice;function f(t){for(var e,r,n=0,i=(t=function(t){for(var e,r,n=t.length;n;)r=Math.random()*n--|0,e=t[n],t[n]=t[r],t[r]=e;return t}(u.call(t))).length,a=[];n0&&r*r>n*n+i*i}function g(t,e){for(var r=0;r(o*=o)?(n=(c+o-i)/(2*c),a=Math.sqrt(Math.max(0,o/c-n*n)),r.x=t.x-n*s-a*l,r.y=t.y-n*l+a*s):(n=(c+i-o)/(2*c),a=Math.sqrt(Math.max(0,i/c-n*n)),r.x=e.x+n*s-a*l,r.y=e.y+n*l+a*s)):(r.x=e.x+r.r,r.y=e.y)}function b(t,e){var r=t.r+e.r-1e-6,n=e.x-t.x,i=e.y-t.y;return r>0&&r*r>n*n+i*i}function _(t){var e=t._,r=t.next._,n=e.r+r.r,i=(e.x*r.r+r.x*e.r)/n,a=(e.y*r.r+r.y*e.r)/n;return i*i+a*a}function w(t){this._=t,this.next=null,this.previous=null}function T(t){if(!(i=t.length))return 0;var e,r,n,i,a,o,s,l,c,u,h;if((e=t[0]).x=0,e.y=0,!(i>1))return e.r;if(r=t[1],e.x=-r.r,r.x=e.r,r.y=0,!(i>2))return e.r+r.r;x(r,e,n=t[2]),e=new w(e),r=new w(r),n=new w(n),e.next=n.previous=r,r.next=e.previous=n,n.next=r.previous=e;t:for(s=3;sh&&(h=s),m=u*u*g,(p=Math.max(h/m,m/f))>d){u-=s;break}d=p}v.push(o={value:u,dice:l1?e:1)},r}(G);var X=function t(e){function r(t,r,n,i,a){if((o=t._squarify)&&o.ratio===e)for(var o,s,l,c,u,f=-1,h=o.length,p=t.value;++f1?e:1)},r}(G);t.cluster=function(){var t=e,i=1,a=1,o=!1;function s(e){var s,l=0;e.eachAfter((function(e){var i=e.children;i?(e.x=function(t){return t.reduce(r,0)/t.length}(i),e.y=function(t){return 1+t.reduce(n,0)}(i)):(e.x=s?l+=t(e,s):0,e.y=0,s=e)}));var c=function(t){for(var e;e=t.children;)t=e[0];return t}(e),u=function(t){for(var e;e=t.children;)t=e[e.length-1];return t}(e),f=c.x-t(c,u)/2,h=u.x+t(u,c)/2;return e.eachAfter(o?function(t){t.x=(t.x-e.x)*i,t.y=(e.y-t.y)*a}:function(t){t.x=(t.x-f)/(h-f)*i,t.y=(1-(e.y?t.y/e.y:1))*a})}return s.separation=function(e){return arguments.length?(t=e,s):t},s.size=function(t){return arguments.length?(o=!1,i=+t[0],a=+t[1],s):o?null:[i,a]},s.nodeSize=function(t){return arguments.length?(o=!0,i=+t[0],a=+t[1],s):o?[i,a]:null},s},t.hierarchy=a,t.pack=function(){var t=null,e=1,r=1,n=M;function i(i){return i.x=e/2,i.y=r/2,t?i.eachBefore(L(t)).eachAfter(C(n,.5)).eachBefore(P(1)):i.eachBefore(L(E)).eachAfter(C(M,1)).eachAfter(C(n,i.r/Math.min(e,r))).eachBefore(P(Math.min(e,r)/(2*i.r))),i}return i.radius=function(e){return arguments.length?(t=k(e),i):t},i.size=function(t){return arguments.length?(e=+t[0],r=+t[1],i):[e,r]},i.padding=function(t){return arguments.length?(n=\"function\"==typeof t?t:S(+t),i):n},i},t.packEnclose=f,t.packSiblings=function(t){return T(t),t},t.partition=function(){var t=1,e=1,r=0,n=!1;function i(i){var a=i.height+1;return i.x0=i.y0=r,i.x1=t,i.y1=e/a,i.eachBefore(function(t,e){return function(n){n.children&&O(n,n.x0,t*(n.depth+1)/e,n.x1,t*(n.depth+2)/e);var i=n.x0,a=n.y0,o=n.x1-r,s=n.y1-r;o0)throw new Error(\"cycle\");return a}return r.id=function(e){return arguments.length?(t=A(e),r):t},r.parentId=function(t){return arguments.length?(e=A(t),r):e},r},t.tree=function(){var t=B,e=1,r=1,n=null;function i(i){var l=function(t){for(var e,r,n,i,a,o=new H(t,0),s=[o];e=s.pop();)if(n=e._.children)for(e.children=new Array(a=n.length),i=a-1;i>=0;--i)s.push(r=e.children[i]=new H(n[i],i)),r.parent=e;return(o.parent=new H(null,0)).children=[o],o}(i);if(l.eachAfter(a),l.parent.m=-l.z,l.eachBefore(o),n)i.eachBefore(s);else{var c=i,u=i,f=i;i.eachBefore((function(t){t.xu.x&&(u=t),t.depth>f.depth&&(f=t)}));var h=c===u?1:t(c,u)/2,p=h-c.x,d=e/(u.x+h+p),g=r/(f.depth||1);i.eachBefore((function(t){t.x=(t.x+p)*d,t.y=t.depth*g}))}return i}function a(e){var r=e.children,n=e.parent.children,i=e.i?n[e.i-1]:null;if(r){!function(t){for(var e,r=0,n=0,i=t.children,a=i.length;--a>=0;)(e=i[a]).z+=r,e.m+=r,r+=e.s+(n+=e.c)}(e);var a=(r[0].z+r[r.length-1].z)/2;i?(e.z=i.z+t(e._,i._),e.m=e.z-a):e.z=a}else i&&(e.z=i.z+t(e._,i._));e.parent.A=function(e,r,n){if(r){for(var i,a=e,o=e,s=r,l=a.parent.children[0],c=a.m,u=o.m,f=s.m,h=l.m;s=j(s),a=N(a),s&&a;)l=N(l),(o=j(o)).a=e,(i=s.z+f-a.z-c+t(s._,a._))>0&&(U(V(s,e,n),e,i),c+=i,u+=i),f+=s.m,c+=a.m,h+=l.m,u+=o.m;s&&!j(o)&&(o.t=s,o.m+=f-u),a&&!N(l)&&(l.t=a,l.m+=c-h,n=e)}return n}(e,i,e.parent.A||n[0])}function o(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function s(t){t.x*=e,t.y=t.depth*r}return i.separation=function(e){return arguments.length?(t=e,i):t},i.size=function(t){return arguments.length?(n=!1,e=+t[0],r=+t[1],i):n?null:[e,r]},i.nodeSize=function(t){return arguments.length?(n=!0,e=+t[0],r=+t[1],i):n?[e,r]:null},i},t.treemap=function(){var t=W,e=!1,r=1,n=1,i=[0],a=M,o=M,s=M,l=M,c=M;function u(t){return t.x0=t.y0=0,t.x1=r,t.y1=n,t.eachBefore(f),i=[0],e&&t.eachBefore(I),t}function f(e){var r=i[e.depth],n=e.x0+r,u=e.y0+r,f=e.x1-r,h=e.y1-r;f=r-1){var u=s[e];return u.x0=i,u.y0=a,u.x1=o,void(u.y1=l)}var f=c[e],h=n/2+f,p=e+1,d=r-1;for(;p>>1;c[g]l-a){var y=(i*v+o*m)/n;t(e,p,m,i,a,y,l),t(p,r,v,y,a,o,l)}else{var x=(a*v+l*m)/n;t(e,p,m,i,a,o,x),t(p,r,v,i,x,o,l)}}(0,l,t.value,e,r,n,i)},t.treemapDice=O,t.treemapResquarify=X,t.treemapSlice=q,t.treemapSliceDice=function(t,e,r,n,i){(1&t.depth?q:O)(t,e,r,n,i)},t.treemapSquarify=W,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{}],116:[function(t,e,r){!function(n,i){\"object\"==typeof r&&void 0!==e?i(r,t(\"d3-color\")):i((n=n||self).d3=n.d3||{},n.d3)}(this,(function(t,e){\"use strict\";function r(t,e,r,n,i){var a=t*t,o=a*t;return((1-3*t+3*a-o)*e+(4-6*a+3*o)*r+(1+3*t+3*a-3*o)*n+o*i)/6}function n(t){var e=t.length-1;return function(n){var i=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),a=t[i],o=t[i+1],s=i>0?t[i-1]:2*a-o,l=i180||r<-180?r-360*Math.round(r/360):r):a(isNaN(t)?e:t)}function l(t){return 1==(t=+t)?c:function(e,r){return r-e?function(t,e,r){return t=Math.pow(t,r),e=Math.pow(e,r)-t,r=1/r,function(n){return Math.pow(t+n*e,r)}}(e,r,t):a(isNaN(e)?r:e)}}function c(t,e){var r=e-t;return r?o(t,r):a(isNaN(t)?e:t)}var u=function t(r){var n=l(r);function i(t,r){var i=n((t=e.rgb(t)).r,(r=e.rgb(r)).r),a=n(t.g,r.g),o=n(t.b,r.b),s=c(t.opacity,r.opacity);return function(e){return t.r=i(e),t.g=a(e),t.b=o(e),t.opacity=s(e),t+\"\"}}return i.gamma=t,i}(1);function f(t){return function(r){var n,i,a=r.length,o=new Array(a),s=new Array(a),l=new Array(a);for(n=0;na&&(i=e.slice(a,i),s[o]?s[o]+=i:s[++o]=i),(r=r[0])===(n=n[0])?s[o]?s[o]+=n:s[++o]=n:(s[++o]=null,l.push({i:o,x:y(r,n)})),a=_.lastIndex;return a180?e+=360:e-t>180&&(t+=360),a.push({i:r.push(i(r)+\"rotate(\",null,n)-2,x:y(t,e)})):e&&r.push(i(r)+\"rotate(\"+e+n)}(a.rotate,o.rotate,s,l),function(t,e,r,a){t!==e?a.push({i:r.push(i(r)+\"skewX(\",null,n)-2,x:y(t,e)}):e&&r.push(i(r)+\"skewX(\"+e+n)}(a.skewX,o.skewX,s,l),function(t,e,r,n,a,o){if(t!==r||e!==n){var s=a.push(i(a)+\"scale(\",null,\",\",null,\")\");o.push({i:s-4,x:y(t,r)},{i:s-2,x:y(e,n)})}else 1===r&&1===n||a.push(i(a)+\"scale(\"+r+\",\"+n+\")\")}(a.scaleX,a.scaleY,o.scaleX,o.scaleY,s,l),a=o=null,function(t){for(var e,r=-1,n=l.length;++r1e-6)if(Math.abs(f*l-c*u)>1e-6&&a){var p=n-o,d=i-s,g=l*l+c*c,m=p*p+d*d,v=Math.sqrt(g),y=Math.sqrt(h),x=a*Math.tan((e-Math.acos((g+h-m)/(2*v*y)))/2),b=x/y,_=x/v;Math.abs(b-1)>1e-6&&(this._+=\"L\"+(t+b*u)+\",\"+(r+b*f)),this._+=\"A\"+a+\",\"+a+\",0,0,\"+ +(f*p>u*d)+\",\"+(this._x1=t+_*l)+\",\"+(this._y1=r+_*c)}else this._+=\"L\"+(this._x1=t)+\",\"+(this._y1=r);else;},arc:function(t,i,a,o,s,l){t=+t,i=+i,l=!!l;var c=(a=+a)*Math.cos(o),u=a*Math.sin(o),f=t+c,h=i+u,p=1^l,d=l?o-s:s-o;if(a<0)throw new Error(\"negative radius: \"+a);null===this._x1?this._+=\"M\"+f+\",\"+h:(Math.abs(this._x1-f)>1e-6||Math.abs(this._y1-h)>1e-6)&&(this._+=\"L\"+f+\",\"+h),a&&(d<0&&(d=d%r+r),d>n?this._+=\"A\"+a+\",\"+a+\",0,1,\"+p+\",\"+(t-c)+\",\"+(i-u)+\"A\"+a+\",\"+a+\",0,1,\"+p+\",\"+(this._x1=f)+\",\"+(this._y1=h):d>1e-6&&(this._+=\"A\"+a+\",\"+a+\",0,\"+ +(d>=e)+\",\"+p+\",\"+(this._x1=t+a*Math.cos(s))+\",\"+(this._y1=i+a*Math.sin(s))))},rect:function(t,e,r,n){this._+=\"M\"+(this._x0=this._x1=+t)+\",\"+(this._y0=this._y1=+e)+\"h\"+ +r+\"v\"+ +n+\"h\"+-r+\"Z\"},toString:function(){return this._}},t.path=a,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{}],118:[function(t,e,r){!function(t,n){\"object\"==typeof r&&void 0!==e?n(r):n((t=t||self).d3=t.d3||{})}(this,(function(t){\"use strict\";function e(t,e,r,n){if(isNaN(e)||isNaN(r))return t;var i,a,o,s,l,c,u,f,h,p=t._root,d={data:n},g=t._x0,m=t._y0,v=t._x1,y=t._y1;if(!p)return t._root=d,t;for(;p.length;)if((c=e>=(a=(g+v)/2))?g=a:v=a,(u=r>=(o=(m+y)/2))?m=o:y=o,i=p,!(p=p[f=u<<1|c]))return i[f]=d,t;if(s=+t._x.call(null,p.data),l=+t._y.call(null,p.data),e===s&&r===l)return d.next=p,i?i[f]=d:t._root=d,t;do{i=i?i[f]=new Array(4):t._root=new Array(4),(c=e>=(a=(g+v)/2))?g=a:v=a,(u=r>=(o=(m+y)/2))?m=o:y=o}while((f=u<<1|c)==(h=(l>=o)<<1|s>=a));return i[h]=p,i[f]=d,t}function r(t,e,r,n,i){this.node=t,this.x0=e,this.y0=r,this.x1=n,this.y1=i}function n(t){return t[0]}function i(t){return t[1]}function a(t,e,r){var a=new o(null==e?n:e,null==r?i:r,NaN,NaN,NaN,NaN);return null==t?a:a.addAll(t)}function o(t,e,r,n,i,a){this._x=t,this._y=e,this._x0=r,this._y0=n,this._x1=i,this._y1=a,this._root=void 0}function s(t){for(var e={data:t.data},r=e;t=t.next;)r=r.next={data:t.data};return e}var l=a.prototype=o.prototype;l.copy=function(){var t,e,r=new o(this._x,this._y,this._x0,this._y0,this._x1,this._y1),n=this._root;if(!n)return r;if(!n.length)return r._root=s(n),r;for(t=[{source:n,target:r._root=new Array(4)}];n=t.pop();)for(var i=0;i<4;++i)(e=n.source[i])&&(e.length?t.push({source:e,target:n.target[i]=new Array(4)}):n.target[i]=s(e));return r},l.add=function(t){var r=+this._x.call(null,t),n=+this._y.call(null,t);return e(this.cover(r,n),r,n,t)},l.addAll=function(t){var r,n,i,a,o=t.length,s=new Array(o),l=new Array(o),c=1/0,u=1/0,f=-1/0,h=-1/0;for(n=0;nf&&(f=i),ah&&(h=a));if(c>f||u>h)return this;for(this.cover(c,u).cover(f,h),n=0;nt||t>=i||n>e||e>=a;)switch(s=(ep||(o=c.y0)>d||(s=c.x1)=y)<<1|t>=v)&&(c=g[g.length-1],g[g.length-1]=g[g.length-1-u],g[g.length-1-u]=c)}else{var x=t-+this._x.call(null,m.data),b=e-+this._y.call(null,m.data),_=x*x+b*b;if(_=(s=(d+m)/2))?d=s:m=s,(u=o>=(l=(g+v)/2))?g=l:v=l,e=p,!(p=p[f=u<<1|c]))return this;if(!p.length)break;(e[f+1&3]||e[f+2&3]||e[f+3&3])&&(r=e,h=f)}for(;p.data!==t;)if(n=p,!(p=p.next))return this;return(i=p.next)&&delete p.next,n?(i?n.next=i:delete n.next,this):e?(i?e[f]=i:delete e[f],(p=e[0]||e[1]||e[2]||e[3])&&p===(e[3]||e[2]||e[1]||e[0])&&!p.length&&(r?r[h]=p:this._root=p),this):(this._root=i,this)},l.removeAll=function(t){for(var e=0,r=t.length;e1?0:t<-1?u:Math.acos(t)}function d(t){return t>=1?f:t<=-1?-f:Math.asin(t)}function g(t){return t.innerRadius}function m(t){return t.outerRadius}function v(t){return t.startAngle}function y(t){return t.endAngle}function x(t){return t&&t.padAngle}function b(t,e,r,n,i,a,o,s){var l=r-t,c=n-e,u=o-i,f=s-a,h=f*l-u*c;if(!(h*h<1e-12))return[t+(h=(u*(e-a)-f*(t-i))/h)*l,e+h*c]}function _(t,e,r,n,i,a,s){var l=t-r,u=e-n,f=(s?a:-a)/c(l*l+u*u),h=f*u,p=-f*l,d=t+h,g=e+p,m=r+h,v=n+p,y=(d+m)/2,x=(g+v)/2,b=m-d,_=v-g,w=b*b+_*_,T=i-a,k=d*v-m*g,A=(_<0?-1:1)*c(o(0,T*T*w-k*k)),M=(k*_-b*A)/w,S=(-k*b-_*A)/w,E=(k*_+b*A)/w,L=(-k*b+_*A)/w,C=M-y,P=S-x,I=E-y,O=L-x;return C*C+P*P>I*I+O*O&&(M=E,S=L),{cx:M,cy:S,x01:-h,y01:-p,x11:M*(i/T-1),y11:S*(i/T-1)}}function w(t){this._context=t}function T(t){return new w(t)}function k(t){return t[0]}function A(t){return t[1]}function M(){var t=k,n=A,i=r(!0),a=null,o=T,s=null;function l(r){var l,c,u,f=r.length,h=!1;for(null==a&&(s=o(u=e.path())),l=0;l<=f;++l)!(l=f;--h)c.point(v[h],y[h]);c.lineEnd(),c.areaEnd()}m&&(v[u]=+t(p,u,r),y[u]=+i(p,u,r),c.point(n?+n(p,u,r):v[u],a?+a(p,u,r):y[u]))}if(d)return c=null,d+\"\"||null}function f(){return M().defined(o).curve(l).context(s)}return u.x=function(e){return arguments.length?(t=\"function\"==typeof e?e:r(+e),n=null,u):t},u.x0=function(e){return arguments.length?(t=\"function\"==typeof e?e:r(+e),u):t},u.x1=function(t){return arguments.length?(n=null==t?null:\"function\"==typeof t?t:r(+t),u):n},u.y=function(t){return arguments.length?(i=\"function\"==typeof t?t:r(+t),a=null,u):i},u.y0=function(t){return arguments.length?(i=\"function\"==typeof t?t:r(+t),u):i},u.y1=function(t){return arguments.length?(a=null==t?null:\"function\"==typeof t?t:r(+t),u):a},u.lineX0=u.lineY0=function(){return f().x(t).y(i)},u.lineY1=function(){return f().x(t).y(a)},u.lineX1=function(){return f().x(n).y(i)},u.defined=function(t){return arguments.length?(o=\"function\"==typeof t?t:r(!!t),u):o},u.curve=function(t){return arguments.length?(l=t,null!=s&&(c=l(s)),u):l},u.context=function(t){return arguments.length?(null==t?s=c=null:c=l(s=t),u):s},u}function E(t,e){return et?1:e>=t?0:NaN}function L(t){return t}w.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e)}}};var C=I(T);function P(t){this._curve=t}function I(t){function e(e){return new P(t(e))}return e._curve=t,e}function O(t){var e=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?e(I(t)):e()._curve},t}function z(){return O(M().curve(C))}function D(){var t=S().curve(C),e=t.curve,r=t.lineX0,n=t.lineX1,i=t.lineY0,a=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return O(r())},delete t.lineX0,t.lineEndAngle=function(){return O(n())},delete t.lineX1,t.lineInnerRadius=function(){return O(i())},delete t.lineY0,t.lineOuterRadius=function(){return O(a())},delete t.lineY1,t.curve=function(t){return arguments.length?e(I(t)):e()._curve},t}function R(t,e){return[(e=+e)*Math.cos(t-=Math.PI/2),e*Math.sin(t)]}P.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,e){this._curve.point(e*Math.sin(t),e*-Math.cos(t))}};var F=Array.prototype.slice;function B(t){return t.source}function N(t){return t.target}function j(t){var n=B,i=N,a=k,o=A,s=null;function l(){var r,l=F.call(arguments),c=n.apply(this,l),u=i.apply(this,l);if(s||(s=r=e.path()),t(s,+a.apply(this,(l[0]=c,l)),+o.apply(this,l),+a.apply(this,(l[0]=u,l)),+o.apply(this,l)),r)return s=null,r+\"\"||null}return l.source=function(t){return arguments.length?(n=t,l):n},l.target=function(t){return arguments.length?(i=t,l):i},l.x=function(t){return arguments.length?(a=\"function\"==typeof t?t:r(+t),l):a},l.y=function(t){return arguments.length?(o=\"function\"==typeof t?t:r(+t),l):o},l.context=function(t){return arguments.length?(s=null==t?null:t,l):s},l}function U(t,e,r,n,i){t.moveTo(e,r),t.bezierCurveTo(e=(e+n)/2,r,e,i,n,i)}function V(t,e,r,n,i){t.moveTo(e,r),t.bezierCurveTo(e,r=(r+i)/2,n,r,n,i)}function H(t,e,r,n,i){var a=R(e,r),o=R(e,r=(r+i)/2),s=R(n,r),l=R(n,i);t.moveTo(a[0],a[1]),t.bezierCurveTo(o[0],o[1],s[0],s[1],l[0],l[1])}var q={draw:function(t,e){var r=Math.sqrt(e/u);t.moveTo(r,0),t.arc(0,0,r,0,h)}},G={draw:function(t,e){var r=Math.sqrt(e/5)/2;t.moveTo(-3*r,-r),t.lineTo(-r,-r),t.lineTo(-r,-3*r),t.lineTo(r,-3*r),t.lineTo(r,-r),t.lineTo(3*r,-r),t.lineTo(3*r,r),t.lineTo(r,r),t.lineTo(r,3*r),t.lineTo(-r,3*r),t.lineTo(-r,r),t.lineTo(-3*r,r),t.closePath()}},Y=Math.sqrt(1/3),W=2*Y,X={draw:function(t,e){var r=Math.sqrt(e/W),n=r*Y;t.moveTo(0,-r),t.lineTo(n,0),t.lineTo(0,r),t.lineTo(-n,0),t.closePath()}},Z=Math.sin(u/10)/Math.sin(7*u/10),J=Math.sin(h/10)*Z,K=-Math.cos(h/10)*Z,Q={draw:function(t,e){var r=Math.sqrt(.8908130915292852*e),n=J*r,i=K*r;t.moveTo(0,-r),t.lineTo(n,i);for(var a=1;a<5;++a){var o=h*a/5,s=Math.cos(o),l=Math.sin(o);t.lineTo(l*r,-s*r),t.lineTo(s*n-l*i,l*n+s*i)}t.closePath()}},$={draw:function(t,e){var r=Math.sqrt(e),n=-r/2;t.rect(n,n,r,r)}},tt=Math.sqrt(3),et={draw:function(t,e){var r=-Math.sqrt(e/(3*tt));t.moveTo(0,2*r),t.lineTo(-tt*r,-r),t.lineTo(tt*r,-r),t.closePath()}},rt=-.5,nt=Math.sqrt(3)/2,it=1/Math.sqrt(12),at=3*(it/2+1),ot={draw:function(t,e){var r=Math.sqrt(e/at),n=r/2,i=r*it,a=n,o=r*it+r,s=-a,l=o;t.moveTo(n,i),t.lineTo(a,o),t.lineTo(s,l),t.lineTo(rt*n-nt*i,nt*n+rt*i),t.lineTo(rt*a-nt*o,nt*a+rt*o),t.lineTo(rt*s-nt*l,nt*s+rt*l),t.lineTo(rt*n+nt*i,rt*i-nt*n),t.lineTo(rt*a+nt*o,rt*o-nt*a),t.lineTo(rt*s+nt*l,rt*l-nt*s),t.closePath()}},st=[q,G,X,$,Q,et,ot];function lt(){}function ct(t,e,r){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+r)/6)}function ut(t){this._context=t}function ft(t){this._context=t}function ht(t){this._context=t}function pt(t,e){this._basis=new ut(t),this._beta=e}ut.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:ct(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:ct(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},ft.prototype={areaStart:lt,areaEnd:lt,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:ct(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},ht.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+t)/6,n=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(r,n):this._context.moveTo(r,n);break;case 3:this._point=4;default:ct(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},pt.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,r=t.length-1;if(r>0)for(var n,i=t[0],a=e[0],o=t[r]-i,s=e[r]-a,l=-1;++l<=r;)n=l/r,this._basis.point(this._beta*t[l]+(1-this._beta)*(i+n*o),this._beta*e[l]+(1-this._beta)*(a+n*s));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};var dt=function t(e){function r(t){return 1===e?new ut(t):new pt(t,e)}return r.beta=function(e){return t(+e)},r}(.85);function gt(t,e,r){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-r),t._x2,t._y2)}function mt(t,e){this._context=t,this._k=(1-e)/6}mt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:gt(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:gt(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var vt=function t(e){function r(t){return new mt(t,e)}return r.tension=function(e){return t(+e)},r}(0);function yt(t,e){this._context=t,this._k=(1-e)/6}yt.prototype={areaStart:lt,areaEnd:lt,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:gt(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var xt=function t(e){function r(t){return new yt(t,e)}return r.tension=function(e){return t(+e)},r}(0);function bt(t,e){this._context=t,this._k=(1-e)/6}bt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:gt(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var _t=function t(e){function r(t){return new bt(t,e)}return r.tension=function(e){return t(+e)},r}(0);function wt(t,e,r){var n=t._x1,i=t._y1,a=t._x2,o=t._y2;if(t._l01_a>1e-12){var s=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,l=3*t._l01_a*(t._l01_a+t._l12_a);n=(n*s-t._x0*t._l12_2a+t._x2*t._l01_2a)/l,i=(i*s-t._y0*t._l12_2a+t._y2*t._l01_2a)/l}if(t._l23_a>1e-12){var c=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,u=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*c+t._x1*t._l23_2a-e*t._l12_2a)/u,o=(o*c+t._y1*t._l23_2a-r*t._l12_2a)/u}t._context.bezierCurveTo(n,i,a,o,t._x2,t._y2)}function Tt(t,e){this._context=t,this._alpha=e}Tt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:wt(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var kt=function t(e){function r(t){return e?new Tt(t,e):new mt(t,0)}return r.alpha=function(e){return t(+e)},r}(.5);function At(t,e){this._context=t,this._alpha=e}At.prototype={areaStart:lt,areaEnd:lt,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:wt(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Mt=function t(e){function r(t){return e?new At(t,e):new yt(t,0)}return r.alpha=function(e){return t(+e)},r}(.5);function St(t,e){this._context=t,this._alpha=e}St.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:wt(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Et=function t(e){function r(t){return e?new St(t,e):new bt(t,0)}return r.alpha=function(e){return t(+e)},r}(.5);function Lt(t){this._context=t}function Ct(t){return t<0?-1:1}function Pt(t,e,r){var n=t._x1-t._x0,i=e-t._x1,a=(t._y1-t._y0)/(n||i<0&&-0),o=(r-t._y1)/(i||n<0&&-0),s=(a*i+o*n)/(n+i);return(Ct(a)+Ct(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(s))||0}function It(t,e){var r=t._x1-t._x0;return r?(3*(t._y1-t._y0)/r-e)/2:e}function Ot(t,e,r){var n=t._x0,i=t._y0,a=t._x1,o=t._y1,s=(a-n)/3;t._context.bezierCurveTo(n+s,i+s*e,a-s,o-s*r,a,o)}function zt(t){this._context=t}function Dt(t){this._context=new Rt(t)}function Rt(t){this._context=t}function Ft(t){this._context=t}function Bt(t){var e,r,n=t.length-1,i=new Array(n),a=new Array(n),o=new Array(n);for(i[0]=0,a[0]=2,o[0]=t[0]+2*t[1],e=1;e=0;--e)i[e]=(o[e]-i[e+1])/a[e];for(a[n-1]=(t[n]+i[n-1])/2,e=0;e1)for(var r,n,i,a=1,o=t[e[0]],s=o.length;a=0;)r[e]=e;return r}function Vt(t,e){return t[e]}function Ht(t){var e=t.map(qt);return Ut(t).sort((function(t,r){return e[t]-e[r]}))}function qt(t){for(var e,r=-1,n=0,i=t.length,a=-1/0;++ra&&(a=e,n=r);return n}function Gt(t){var e=t.map(Yt);return Ut(t).sort((function(t,r){return e[t]-e[r]}))}function Yt(t){for(var e,r=0,n=-1,i=t.length;++n=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var r=this._x*(1-this._t)+t*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,e)}}this._x=t,this._y=e}},t.arc=function(){var t=g,o=m,w=r(0),T=null,k=v,A=y,M=x,S=null;function E(){var r,g,m=+t.apply(this,arguments),v=+o.apply(this,arguments),y=k.apply(this,arguments)-f,x=A.apply(this,arguments)-f,E=n(x-y),L=x>y;if(S||(S=r=e.path()),v1e-12)if(E>h-1e-12)S.moveTo(v*a(y),v*l(y)),S.arc(0,0,v,y,x,!L),m>1e-12&&(S.moveTo(m*a(x),m*l(x)),S.arc(0,0,m,x,y,L));else{var C,P,I=y,O=x,z=y,D=x,R=E,F=E,B=M.apply(this,arguments)/2,N=B>1e-12&&(T?+T.apply(this,arguments):c(m*m+v*v)),j=s(n(v-m)/2,+w.apply(this,arguments)),U=j,V=j;if(N>1e-12){var H=d(N/m*l(B)),q=d(N/v*l(B));(R-=2*H)>1e-12?(z+=H*=L?1:-1,D-=H):(R=0,z=D=(y+x)/2),(F-=2*q)>1e-12?(I+=q*=L?1:-1,O-=q):(F=0,I=O=(y+x)/2)}var G=v*a(I),Y=v*l(I),W=m*a(D),X=m*l(D);if(j>1e-12){var Z,J=v*a(O),K=v*l(O),Q=m*a(z),$=m*l(z);if(E1e-12?V>1e-12?(C=_(Q,$,G,Y,v,V,L),P=_(J,K,W,X,v,V,L),S.moveTo(C.cx+C.x01,C.cy+C.y01),V1e-12&&R>1e-12?U>1e-12?(C=_(W,X,J,K,m,-U,L),P=_(G,Y,Q,$,m,-U,L),S.lineTo(C.cx+C.x01,C.cy+C.y01),U0&&(d+=f);for(null!=e?g.sort((function(t,r){return e(m[t],m[r])})):null!=n&&g.sort((function(t,e){return n(r[t],r[e])})),s=0,c=d?(y-p*b)/d:0;s0?f*c:0)+b,m[l]={data:r[l],index:s,value:f,startAngle:v,endAngle:u,padAngle:x};return m}return s.value=function(e){return arguments.length?(t=\"function\"==typeof e?e:r(+e),s):t},s.sortValues=function(t){return arguments.length?(e=t,n=null,s):e},s.sort=function(t){return arguments.length?(n=t,e=null,s):n},s.startAngle=function(t){return arguments.length?(i=\"function\"==typeof t?t:r(+t),s):i},s.endAngle=function(t){return arguments.length?(a=\"function\"==typeof t?t:r(+t),s):a},s.padAngle=function(t){return arguments.length?(o=\"function\"==typeof t?t:r(+t),s):o},s},t.pointRadial=R,t.radialArea=D,t.radialLine=z,t.stack=function(){var t=r([]),e=Ut,n=jt,i=Vt;function a(r){var a,o,s=t.apply(this,arguments),l=r.length,c=s.length,u=new Array(c);for(a=0;a0)for(var r,n,i,a,o,s,l=0,c=t[e[0]].length;l0?(n[0]=a,n[1]=a+=i):i<0?(n[1]=o,n[0]=o+=i):(n[0]=0,n[1]=i)},t.stackOffsetExpand=function(t,e){if((n=t.length)>0){for(var r,n,i,a=0,o=t[0].length;a0){for(var r,n=0,i=t[e[0]],a=i.length;n0&&(n=(r=t[e[0]]).length)>0){for(var r,n,i,a=0,o=1;o=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:mt,s:vt,S:H,u:q,U:G,V:Y,w:W,W:X,x:null,X:null,y:Z,Y:J,Z:K,\"%\":gt},Ct={a:function(t){return f[t.getUTCDay()]},A:function(t){return u[t.getUTCDay()]},b:function(t){return yt[t.getUTCMonth()]},B:function(t){return h[t.getUTCMonth()]},c:null,d:Q,e:Q,f:nt,H:$,I:tt,j:et,L:rt,m:it,M:at,p:function(t){return c[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:mt,s:vt,S:ot,u:st,U:lt,V:ct,w:ut,W:ft,x:null,X:null,y:ht,Y:pt,Z:dt,\"%\":gt},Pt={a:function(t,e,r){var n=Tt.exec(e.slice(r));return n?(t.w=kt[n[0].toLowerCase()],r+n[0].length):-1},A:function(t,e,r){var n=_t.exec(e.slice(r));return n?(t.w=wt[n[0].toLowerCase()],r+n[0].length):-1},b:function(t,e,r){var n=St.exec(e.slice(r));return n?(t.m=Et[n[0].toLowerCase()],r+n[0].length):-1},B:function(t,e,r){var n=At.exec(e.slice(r));return n?(t.m=Mt[n[0].toLowerCase()],r+n[0].length):-1},c:function(t,e,r){return zt(t,a,e,r)},d:A,e:A,f:P,H:S,I:S,j:M,L:C,m:k,M:E,p:function(t,e,r){var n=xt.exec(e.slice(r));return n?(t.p=bt[n[0].toLowerCase()],r+n[0].length):-1},q:T,Q:O,s:z,S:L,u:m,U:v,V:y,w:g,W:x,x:function(t,e,r){return zt(t,o,e,r)},X:function(t,e,r){return zt(t,l,e,r)},y:_,Y:b,Z:w,\"%\":I};function It(t,e){return function(r){var n,i,a,o=[],l=-1,c=0,u=t.length;for(r instanceof Date||(r=new Date(+r));++l53)return null;\"w\"in c||(c.w=1),\"Z\"in c?(l=(s=n(i(c.y,0,1))).getUTCDay(),s=l>4||0===l?e.utcMonday.ceil(s):e.utcMonday(s),s=e.utcDay.offset(s,7*(c.V-1)),c.y=s.getUTCFullYear(),c.m=s.getUTCMonth(),c.d=s.getUTCDate()+(c.w+6)%7):(l=(s=r(i(c.y,0,1))).getDay(),s=l>4||0===l?e.timeMonday.ceil(s):e.timeMonday(s),s=e.timeDay.offset(s,7*(c.V-1)),c.y=s.getFullYear(),c.m=s.getMonth(),c.d=s.getDate()+(c.w+6)%7)}else(\"W\"in c||\"U\"in c)&&(\"w\"in c||(c.w=\"u\"in c?c.u%7:\"W\"in c?1:0),l=\"Z\"in c?n(i(c.y,0,1)).getUTCDay():r(i(c.y,0,1)).getDay(),c.m=0,c.d=\"W\"in c?(c.w+6)%7+7*c.W-(l+5)%7:c.w+7*c.U-(l+6)%7);return\"Z\"in c?(c.H+=c.Z/100|0,c.M+=c.Z%100,n(c)):r(c)}}function zt(t,e,r,n){for(var i,a,o=0,l=e.length,c=r.length;o=c)return-1;if(37===(i=e.charCodeAt(o++))){if(i=e.charAt(o++),!(a=Pt[i in s?e.charAt(o++):i])||(n=a(t,r,n))<0)return-1}else if(i!=r.charCodeAt(n++))return-1}return n}return Lt.x=It(o,Lt),Lt.X=It(l,Lt),Lt.c=It(a,Lt),Ct.x=It(o,Ct),Ct.X=It(l,Ct),Ct.c=It(a,Ct),{format:function(t){var e=It(t+=\"\",Lt);return e.toString=function(){return t},e},parse:function(t){var e=Ot(t+=\"\",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=It(t+=\"\",Ct);return e.toString=function(){return t},e},utcParse:function(t){var e=Ot(t+=\"\",!0);return e.toString=function(){return t},e}}}var o,s={\"-\":\"\",_:\" \",0:\"0\"},l=/^\\s*\\d+/,c=/^%/,u=/[\\\\^$*+?|[\\]().{}]/g;function f(t,e,r){var n=t<0?\"-\":\"\",i=(n?-t:t)+\"\",a=i.length;return n+(a68?1900:2e3),r+n[0].length):-1}function w(t,e,r){var n=/^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(e.slice(r,r+6));return n?(t.Z=n[1]?0:-(n[2]+(n[3]||\"00\")),r+n[0].length):-1}function T(t,e,r){var n=l.exec(e.slice(r,r+1));return n?(t.q=3*n[0]-3,r+n[0].length):-1}function k(t,e,r){var n=l.exec(e.slice(r,r+2));return n?(t.m=n[0]-1,r+n[0].length):-1}function A(t,e,r){var n=l.exec(e.slice(r,r+2));return n?(t.d=+n[0],r+n[0].length):-1}function M(t,e,r){var n=l.exec(e.slice(r,r+3));return n?(t.m=0,t.d=+n[0],r+n[0].length):-1}function S(t,e,r){var n=l.exec(e.slice(r,r+2));return n?(t.H=+n[0],r+n[0].length):-1}function E(t,e,r){var n=l.exec(e.slice(r,r+2));return n?(t.M=+n[0],r+n[0].length):-1}function L(t,e,r){var n=l.exec(e.slice(r,r+2));return n?(t.S=+n[0],r+n[0].length):-1}function C(t,e,r){var n=l.exec(e.slice(r,r+3));return n?(t.L=+n[0],r+n[0].length):-1}function P(t,e,r){var n=l.exec(e.slice(r,r+6));return n?(t.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function I(t,e,r){var n=c.exec(e.slice(r,r+1));return n?r+n[0].length:-1}function O(t,e,r){var n=l.exec(e.slice(r));return n?(t.Q=+n[0],r+n[0].length):-1}function z(t,e,r){var n=l.exec(e.slice(r));return n?(t.s=+n[0],r+n[0].length):-1}function D(t,e){return f(t.getDate(),e,2)}function R(t,e){return f(t.getHours(),e,2)}function F(t,e){return f(t.getHours()%12||12,e,2)}function B(t,r){return f(1+e.timeDay.count(e.timeYear(t),t),r,3)}function N(t,e){return f(t.getMilliseconds(),e,3)}function j(t,e){return N(t,e)+\"000\"}function U(t,e){return f(t.getMonth()+1,e,2)}function V(t,e){return f(t.getMinutes(),e,2)}function H(t,e){return f(t.getSeconds(),e,2)}function q(t){var e=t.getDay();return 0===e?7:e}function G(t,r){return f(e.timeSunday.count(e.timeYear(t)-1,t),r,2)}function Y(t,r){var n=t.getDay();return t=n>=4||0===n?e.timeThursday(t):e.timeThursday.ceil(t),f(e.timeThursday.count(e.timeYear(t),t)+(4===e.timeYear(t).getDay()),r,2)}function W(t){return t.getDay()}function X(t,r){return f(e.timeMonday.count(e.timeYear(t)-1,t),r,2)}function Z(t,e){return f(t.getFullYear()%100,e,2)}function J(t,e){return f(t.getFullYear()%1e4,e,4)}function K(t){var e=t.getTimezoneOffset();return(e>0?\"-\":(e*=-1,\"+\"))+f(e/60|0,\"0\",2)+f(e%60,\"0\",2)}function Q(t,e){return f(t.getUTCDate(),e,2)}function $(t,e){return f(t.getUTCHours(),e,2)}function tt(t,e){return f(t.getUTCHours()%12||12,e,2)}function et(t,r){return f(1+e.utcDay.count(e.utcYear(t),t),r,3)}function rt(t,e){return f(t.getUTCMilliseconds(),e,3)}function nt(t,e){return rt(t,e)+\"000\"}function it(t,e){return f(t.getUTCMonth()+1,e,2)}function at(t,e){return f(t.getUTCMinutes(),e,2)}function ot(t,e){return f(t.getUTCSeconds(),e,2)}function st(t){var e=t.getUTCDay();return 0===e?7:e}function lt(t,r){return f(e.utcSunday.count(e.utcYear(t)-1,t),r,2)}function ct(t,r){var n=t.getUTCDay();return t=n>=4||0===n?e.utcThursday(t):e.utcThursday.ceil(t),f(e.utcThursday.count(e.utcYear(t),t)+(4===e.utcYear(t).getUTCDay()),r,2)}function ut(t){return t.getUTCDay()}function ft(t,r){return f(e.utcMonday.count(e.utcYear(t)-1,t),r,2)}function ht(t,e){return f(t.getUTCFullYear()%100,e,2)}function pt(t,e){return f(t.getUTCFullYear()%1e4,e,4)}function dt(){return\"+0000\"}function gt(){return\"%\"}function mt(t){return+t}function vt(t){return Math.floor(+t/1e3)}function yt(e){return o=a(e),t.timeFormat=o.format,t.timeParse=o.parse,t.utcFormat=o.utcFormat,t.utcParse=o.utcParse,o}yt({dateTime:\"%x, %X\",date:\"%-m/%-d/%Y\",time:\"%-I:%M:%S %p\",periods:[\"AM\",\"PM\"],days:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],shortDays:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],months:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],shortMonths:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"]});var xt=Date.prototype.toISOString?function(t){return t.toISOString()}:t.utcFormat(\"%Y-%m-%dT%H:%M:%S.%LZ\");var bt=+new Date(\"2000-01-01T00:00:00.000Z\")?function(t){var e=new Date(t);return isNaN(e)?null:e}:t.utcParse(\"%Y-%m-%dT%H:%M:%S.%LZ\");t.isoFormat=xt,t.isoParse=bt,t.timeFormatDefaultLocale=yt,t.timeFormatLocale=a,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{\"d3-time\":121}],121:[function(t,e,r){!function(t,n){\"object\"==typeof r&&void 0!==e?n(r):n((t=t||self).d3=t.d3||{})}(this,(function(t){\"use strict\";var e=new Date,r=new Date;function n(t,i,a,o){function s(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return s.floor=function(e){return t(e=new Date(+e)),e},s.ceil=function(e){return t(e=new Date(e-1)),i(e,1),t(e),e},s.round=function(t){var e=s(t),r=s.ceil(t);return t-e0))return o;do{o.push(a=new Date(+e)),i(e,n),t(e)}while(a=r)for(;t(r),!e(r);)r.setTime(r-1)}),(function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;i(t,-1),!e(t););else for(;--r>=0;)for(;i(t,1),!e(t););}))},a&&(s.count=function(n,i){return e.setTime(+n),r.setTime(+i),t(e),t(r),Math.floor(a(e,r))},s.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?s.filter(o?function(e){return o(e)%t==0}:function(e){return s.count(0,e)%t==0}):s:null}),s}var i=n((function(){}),(function(t,e){t.setTime(+t+e)}),(function(t,e){return e-t}));i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?n((function(e){e.setTime(Math.floor(e/t)*t)}),(function(e,r){e.setTime(+e+r*t)}),(function(e,r){return(r-e)/t})):i:null};var a=i.range,o=n((function(t){t.setTime(t-t.getMilliseconds())}),(function(t,e){t.setTime(+t+1e3*e)}),(function(t,e){return(e-t)/1e3}),(function(t){return t.getUTCSeconds()})),s=o.range,l=n((function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds())}),(function(t,e){t.setTime(+t+6e4*e)}),(function(t,e){return(e-t)/6e4}),(function(t){return t.getMinutes()})),c=l.range,u=n((function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds()-6e4*t.getMinutes())}),(function(t,e){t.setTime(+t+36e5*e)}),(function(t,e){return(e-t)/36e5}),(function(t){return t.getHours()})),f=u.range,h=n((function(t){t.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+e)}),(function(t,e){return(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/864e5}),(function(t){return t.getDate()-1})),p=h.range;function d(t){return n((function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+7*e)}),(function(t,e){return(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/6048e5}))}var g=d(0),m=d(1),v=d(2),y=d(3),x=d(4),b=d(5),_=d(6),w=g.range,T=m.range,k=v.range,A=y.range,M=x.range,S=b.range,E=_.range,L=n((function(t){t.setDate(1),t.setHours(0,0,0,0)}),(function(t,e){t.setMonth(t.getMonth()+e)}),(function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())}),(function(t){return t.getMonth()})),C=L.range,P=n((function(t){t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,e){t.setFullYear(t.getFullYear()+e)}),(function(t,e){return e.getFullYear()-t.getFullYear()}),(function(t){return t.getFullYear()}));P.every=function(t){return isFinite(t=Math.floor(t))&&t>0?n((function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),(function(e,r){e.setFullYear(e.getFullYear()+r*t)})):null};var I=P.range,O=n((function(t){t.setUTCSeconds(0,0)}),(function(t,e){t.setTime(+t+6e4*e)}),(function(t,e){return(e-t)/6e4}),(function(t){return t.getUTCMinutes()})),z=O.range,D=n((function(t){t.setUTCMinutes(0,0,0)}),(function(t,e){t.setTime(+t+36e5*e)}),(function(t,e){return(e-t)/36e5}),(function(t){return t.getUTCHours()})),R=D.range,F=n((function(t){t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+e)}),(function(t,e){return(e-t)/864e5}),(function(t){return t.getUTCDate()-1})),B=F.range;function N(t){return n((function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+7*e)}),(function(t,e){return(e-t)/6048e5}))}var j=N(0),U=N(1),V=N(2),H=N(3),q=N(4),G=N(5),Y=N(6),W=j.range,X=U.range,Z=V.range,J=H.range,K=q.range,Q=G.range,$=Y.range,tt=n((function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCMonth(t.getUTCMonth()+e)}),(function(t,e){return e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())}),(function(t){return t.getUTCMonth()})),et=tt.range,rt=n((function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)}),(function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()}),(function(t){return t.getUTCFullYear()}));rt.every=function(t){return isFinite(t=Math.floor(t))&&t>0?n((function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),(function(e,r){e.setUTCFullYear(e.getUTCFullYear()+r*t)})):null};var nt=rt.range;t.timeDay=h,t.timeDays=p,t.timeFriday=b,t.timeFridays=S,t.timeHour=u,t.timeHours=f,t.timeInterval=n,t.timeMillisecond=i,t.timeMilliseconds=a,t.timeMinute=l,t.timeMinutes=c,t.timeMonday=m,t.timeMondays=T,t.timeMonth=L,t.timeMonths=C,t.timeSaturday=_,t.timeSaturdays=E,t.timeSecond=o,t.timeSeconds=s,t.timeSunday=g,t.timeSundays=w,t.timeThursday=x,t.timeThursdays=M,t.timeTuesday=v,t.timeTuesdays=k,t.timeWednesday=y,t.timeWednesdays=A,t.timeWeek=g,t.timeWeeks=w,t.timeYear=P,t.timeYears=I,t.utcDay=F,t.utcDays=B,t.utcFriday=G,t.utcFridays=Q,t.utcHour=D,t.utcHours=R,t.utcMillisecond=i,t.utcMilliseconds=a,t.utcMinute=O,t.utcMinutes=z,t.utcMonday=U,t.utcMondays=X,t.utcMonth=tt,t.utcMonths=et,t.utcSaturday=Y,t.utcSaturdays=$,t.utcSecond=o,t.utcSeconds=s,t.utcSunday=j,t.utcSundays=W,t.utcThursday=q,t.utcThursdays=K,t.utcTuesday=V,t.utcTuesdays=Z,t.utcWednesday=H,t.utcWednesdays=J,t.utcWeek=j,t.utcWeeks=W,t.utcYear=rt,t.utcYears=nt,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{}],122:[function(t,e,r){arguments[4][121][0].apply(r,arguments)},{dup:121}],123:[function(t,e,r){!function(t,n){\"object\"==typeof r&&void 0!==e?n(r):n((t=t||self).d3=t.d3||{})}(this,(function(t){\"use strict\";var e,r,n=0,i=0,a=0,o=0,s=0,l=0,c=\"object\"==typeof performance&&performance.now?performance:Date,u=\"object\"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function f(){return s||(u(h),s=c.now()+l)}function h(){s=0}function p(){this._call=this._time=this._next=null}function d(t,e,r){var n=new p;return n.restart(t,e,r),n}function g(){f(),++n;for(var t,r=e;r;)(t=s-r._time)>=0&&r._call.call(null,t),r=r._next;--n}function m(){s=(o=c.now())+l,n=i=0;try{g()}finally{n=0,function(){var t,n,i=e,a=1/0;for(;i;)i._call?(a>i._time&&(a=i._time),t=i,i=i._next):(n=i._next,i._next=null,i=t?t._next=n:e=n);r=t,y(a)}(),s=0}}function v(){var t=c.now(),e=t-o;e>1e3&&(l-=e,o=t)}function y(t){n||(i&&(i=clearTimeout(i)),t-s>24?(t<1/0&&(i=setTimeout(m,t-c.now()-l)),a&&(a=clearInterval(a))):(a||(o=c.now(),a=setInterval(v,1e3)),n=1,u(m)))}p.prototype=d.prototype={constructor:p,restart:function(t,n,i){if(\"function\"!=typeof t)throw new TypeError(\"callback is not a function\");i=(null==i?f():+i)+(null==n?0:+n),this._next||r===this||(r?r._next=this:e=this,r=this),this._call=t,this._time=i,y()},stop:function(){this._call&&(this._call=null,this._time=1/0,y())}},t.interval=function(t,e,r){var n=new p,i=e;return null==e?(n.restart(t,e,r),n):(e=+e,r=null==r?f():+r,n.restart((function a(o){o+=i,n.restart(a,i+=e,r),t(o)}),e,r),n)},t.now=f,t.timeout=function(t,e,r){var n=new p;return e=null==e?0:+e,n.restart((function(r){n.stop(),t(r+e)}),e,r),n},t.timer=d,t.timerFlush=g,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{}],124:[function(t,e,r){e.exports=function(){for(var t=0;ts*l){var p=(h-f)/s;a[u]=1e3*p}}return a}function o(t){for(var e=[],r=t[0];r<=t[1];r++)for(var n=String.fromCharCode(r),i=t[0];i0)return function(t,e){var r,n;for(r=new Array(t),n=0;n80*r){n=l=t[0],s=c=t[1];for(var b=r;bl&&(l=u),p>c&&(c=p);d=0!==(d=Math.max(l-n,c-s))?1/d:0}return o(y,x,r,n,s,d),x}function i(t,e,r,n,i){var a,o;if(i===E(t,e,r,n)>0)for(a=e;a=e;a-=n)o=A(a,t[a],t[a+1],o);return o&&x(o,o.next)&&(M(o),o=o.next),o}function a(t,e){if(!t)return t;e||(e=t);var r,n=t;do{if(r=!1,n.steiner||!x(n,n.next)&&0!==y(n.prev,n,n.next))n=n.next;else{if(M(n),(n=e=n.prev)===n.next)break;r=!0}}while(r||n!==e);return e}function o(t,e,r,n,i,f,h){if(t){!h&&f&&function(t,e,r,n){var i=t;do{null===i.z&&(i.z=d(i.x,i.y,e,r,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next}while(i!==t);i.prevZ.nextZ=null,i.prevZ=null,function(t){var e,r,n,i,a,o,s,l,c=1;do{for(r=t,t=null,a=null,o=0;r;){for(o++,n=r,s=0,e=0;e0||l>0&&n;)0!==s&&(0===l||!n||r.z<=n.z)?(i=r,r=r.nextZ,s--):(i=n,n=n.nextZ,l--),a?a.nextZ=i:t=i,i.prevZ=a,a=i;r=n}a.nextZ=null,c*=2}while(o>1)}(i)}(t,n,i,f);for(var p,g,m=t;t.prev!==t.next;)if(p=t.prev,g=t.next,f?l(t,n,i,f):s(t))e.push(p.i/r),e.push(t.i/r),e.push(g.i/r),M(t),t=g.next,m=g.next;else if((t=g)===m){h?1===h?o(t=c(a(t),e,r),e,r,n,i,f,2):2===h&&u(t,e,r,n,i,f):o(a(t),e,r,n,i,f,1);break}}}function s(t){var e=t.prev,r=t,n=t.next;if(y(e,r,n)>=0)return!1;for(var i=t.next.next;i!==t.prev;){if(m(e.x,e.y,r.x,r.y,n.x,n.y,i.x,i.y)&&y(i.prev,i,i.next)>=0)return!1;i=i.next}return!0}function l(t,e,r,n){var i=t.prev,a=t,o=t.next;if(y(i,a,o)>=0)return!1;for(var s=i.xa.x?i.x>o.x?i.x:o.x:a.x>o.x?a.x:o.x,u=i.y>a.y?i.y>o.y?i.y:o.y:a.y>o.y?a.y:o.y,f=d(s,l,e,r,n),h=d(c,u,e,r,n),p=t.prevZ,g=t.nextZ;p&&p.z>=f&&g&&g.z<=h;){if(p!==t.prev&&p!==t.next&&m(i.x,i.y,a.x,a.y,o.x,o.y,p.x,p.y)&&y(p.prev,p,p.next)>=0)return!1;if(p=p.prevZ,g!==t.prev&&g!==t.next&&m(i.x,i.y,a.x,a.y,o.x,o.y,g.x,g.y)&&y(g.prev,g,g.next)>=0)return!1;g=g.nextZ}for(;p&&p.z>=f;){if(p!==t.prev&&p!==t.next&&m(i.x,i.y,a.x,a.y,o.x,o.y,p.x,p.y)&&y(p.prev,p,p.next)>=0)return!1;p=p.prevZ}for(;g&&g.z<=h;){if(g!==t.prev&&g!==t.next&&m(i.x,i.y,a.x,a.y,o.x,o.y,g.x,g.y)&&y(g.prev,g,g.next)>=0)return!1;g=g.nextZ}return!0}function c(t,e,r){var n=t;do{var i=n.prev,o=n.next.next;!x(i,o)&&b(i,n,n.next,o)&&T(i,o)&&T(o,i)&&(e.push(i.i/r),e.push(n.i/r),e.push(o.i/r),M(n),M(n.next),n=t=o),n=n.next}while(n!==t);return a(n)}function u(t,e,r,n,i,s){var l=t;do{for(var c=l.next.next;c!==l.prev;){if(l.i!==c.i&&v(l,c)){var u=k(l,c);return l=a(l,l.next),u=a(u,u.next),o(l,e,r,n,i,s),void o(u,e,r,n,i,s)}c=c.next}l=l.next}while(l!==t)}function f(t,e){return t.x-e.x}function h(t,e){if(e=function(t,e){var r,n=e,i=t.x,a=t.y,o=-1/0;do{if(a<=n.y&&a>=n.next.y&&n.next.y!==n.y){var s=n.x+(a-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(s<=i&&s>o){if(o=s,s===i){if(a===n.y)return n;if(a===n.next.y)return n.next}r=n.x=n.x&&n.x>=u&&i!==n.x&&m(ar.x||n.x===r.x&&p(r,n)))&&(r=n,h=l)),n=n.next}while(n!==c);return r}(t,e)){var r=k(e,t);a(e,e.next),a(r,r.next)}}function p(t,e){return y(t.prev,t,e.prev)<0&&y(e.next,t,t.next)<0}function d(t,e,r,n,i){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-r)*i)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-n)*i)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function g(t){var e=t,r=t;do{(e.x=0&&(t-o)*(n-s)-(r-o)*(e-s)>=0&&(r-o)*(a-s)-(i-o)*(n-s)>=0}function v(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){var r=t;do{if(r.i!==t.i&&r.next.i!==t.i&&r.i!==e.i&&r.next.i!==e.i&&b(r,r.next,t,e))return!0;r=r.next}while(r!==t);return!1}(t,e)&&(T(t,e)&&T(e,t)&&function(t,e){var r=t,n=!1,i=(t.x+e.x)/2,a=(t.y+e.y)/2;do{r.y>a!=r.next.y>a&&r.next.y!==r.y&&i<(r.next.x-r.x)*(a-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next}while(r!==t);return n}(t,e)&&(y(t.prev,t,e.prev)||y(t,e.prev,e))||x(t,e)&&y(t.prev,t,t.next)>0&&y(e.prev,e,e.next)>0)}function y(t,e,r){return(e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y)}function x(t,e){return t.x===e.x&&t.y===e.y}function b(t,e,r,n){var i=w(y(t,e,r)),a=w(y(t,e,n)),o=w(y(r,n,t)),s=w(y(r,n,e));return i!==a&&o!==s||(!(0!==i||!_(t,r,e))||(!(0!==a||!_(t,n,e))||(!(0!==o||!_(r,t,n))||!(0!==s||!_(r,e,n)))))}function _(t,e,r){return e.x<=Math.max(t.x,r.x)&&e.x>=Math.min(t.x,r.x)&&e.y<=Math.max(t.y,r.y)&&e.y>=Math.min(t.y,r.y)}function w(t){return t>0?1:t<0?-1:0}function T(t,e){return y(t.prev,t,t.next)<0?y(t,e,t.next)>=0&&y(t,t.prev,e)>=0:y(t,e,t.prev)<0||y(t,t.next,e)<0}function k(t,e){var r=new S(t.i,t.x,t.y),n=new S(e.i,e.x,e.y),i=t.next,a=e.prev;return t.next=e,e.prev=t,r.next=i,i.prev=r,n.next=r,r.prev=n,a.next=n,n.prev=a,n}function A(t,e,r,n){var i=new S(t,e,r);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function M(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function S(t,e,r){this.i=t,this.x=e,this.y=r,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function E(t,e,r,n){for(var i=0,a=e,o=r-n;a0&&(n+=t[i-1].length,r.holes.push(n))}return r}},{}],130:[function(t,e,r){var n=t(\"strongly-connected-components\");e.exports=function(t,e){var r,i=[],a=[],o=[],s={},l=[];function c(t){var e,n,i=!1;for(a.push(t),o[t]=!0,e=0;e=e}))}(e);for(var r,i=n(t).components.filter((function(t){return t.length>1})),a=1/0,o=0;o=55296&&y<=56319&&(w+=t[++r]),w=T?h.call(T,k,w,g):w,e?(p.value=w,d(m,g,p)):m[g]=w,++g;v=g}if(void 0===v)for(v=o(t.length),e&&(m=new e(v)),r=0;r0?1:-1}},{}],141:[function(t,e,r){\"use strict\";var n=t(\"../math/sign\"),i=Math.abs,a=Math.floor;e.exports=function(t){return isNaN(t)?0:0!==(t=Number(t))&&isFinite(t)?n(t)*a(i(t)):t}},{\"../math/sign\":138}],142:[function(t,e,r){\"use strict\";var n=t(\"./to-integer\"),i=Math.max;e.exports=function(t){return i(0,n(t))}},{\"./to-integer\":141}],143:[function(t,e,r){\"use strict\";var n=t(\"./valid-callable\"),i=t(\"./valid-value\"),a=Function.prototype.bind,o=Function.prototype.call,s=Object.keys,l=Object.prototype.propertyIsEnumerable;e.exports=function(t,e){return function(r,c){var u,f=arguments[2],h=arguments[3];return r=Object(i(r)),n(c),u=s(r),h&&u.sort(\"function\"==typeof h?a.call(h,r):void 0),\"function\"!=typeof t&&(t=u[t]),o.call(t,u,(function(t,n){return l.call(r,t)?o.call(c,f,r[t],t,r,n):e}))}}},{\"./valid-callable\":160,\"./valid-value\":162}],144:[function(t,e,r){\"use strict\";e.exports=t(\"./is-implemented\")()?Object.assign:t(\"./shim\")},{\"./is-implemented\":145,\"./shim\":146}],145:[function(t,e,r){\"use strict\";e.exports=function(){var t,e=Object.assign;return\"function\"==typeof e&&(e(t={foo:\"raz\"},{bar:\"dwa\"},{trzy:\"trzy\"}),t.foo+t.bar+t.trzy===\"razdwatrzy\")}},{}],146:[function(t,e,r){\"use strict\";var n=t(\"../keys\"),i=t(\"../valid-value\"),a=Math.max;e.exports=function(t,e){var r,o,s,l=a(arguments.length,2);for(t=Object(i(t)),s=function(n){try{t[n]=e[n]}catch(t){r||(r=t)}},o=1;o-1}},{}],166:[function(t,e,r){\"use strict\";var n=Object.prototype.toString,i=n.call(\"\");e.exports=function(t){return\"string\"==typeof t||t&&\"object\"==typeof t&&(t instanceof String||n.call(t)===i)||!1}},{}],167:[function(t,e,r){\"use strict\";var n=Object.create(null),i=Math.random;e.exports=function(){var t;do{t=i().toString(36).slice(2)}while(n[t]);return t}},{}],168:[function(t,e,r){\"use strict\";var n,i=t(\"es5-ext/object/set-prototype-of\"),a=t(\"es5-ext/string/#/contains\"),o=t(\"d\"),s=t(\"es6-symbol\"),l=t(\"./\"),c=Object.defineProperty;n=e.exports=function(t,e){if(!(this instanceof n))throw new TypeError(\"Constructor requires 'new'\");l.call(this,t),e=e?a.call(e,\"key+value\")?\"key+value\":a.call(e,\"key\")?\"key\":\"value\":\"value\",c(this,\"__kind__\",o(\"\",e))},i&&i(n,l),delete n.prototype.constructor,n.prototype=Object.create(l.prototype,{_resolve:o((function(t){return\"value\"===this.__kind__?this.__list__[t]:\"key+value\"===this.__kind__?[t,this.__list__[t]]:t}))}),c(n.prototype,s.toStringTag,o(\"c\",\"Array Iterator\"))},{\"./\":171,d:106,\"es5-ext/object/set-prototype-of\":157,\"es5-ext/string/#/contains\":163,\"es6-symbol\":175}],169:[function(t,e,r){\"use strict\";var n=t(\"es5-ext/function/is-arguments\"),i=t(\"es5-ext/object/valid-callable\"),a=t(\"es5-ext/string/is-string\"),o=t(\"./get\"),s=Array.isArray,l=Function.prototype.call,c=Array.prototype.some;e.exports=function(t,e){var r,u,f,h,p,d,g,m,v=arguments[2];if(s(t)||n(t)?r=\"array\":a(t)?r=\"string\":t=o(t),i(e),f=function(){h=!0},\"array\"!==r)if(\"string\"!==r)for(u=t.next();!u.done;){if(l.call(e,v,u.value,f),h)return;u=t.next()}else for(d=t.length,p=0;p=55296&&m<=56319&&(g+=t[++p]),l.call(e,v,g,f),!h);++p);else c.call(t,(function(t){return l.call(e,v,t,f),h}))}},{\"./get\":170,\"es5-ext/function/is-arguments\":135,\"es5-ext/object/valid-callable\":160,\"es5-ext/string/is-string\":166}],170:[function(t,e,r){\"use strict\";var n=t(\"es5-ext/function/is-arguments\"),i=t(\"es5-ext/string/is-string\"),a=t(\"./array\"),o=t(\"./string\"),s=t(\"./valid-iterable\"),l=t(\"es6-symbol\").iterator;e.exports=function(t){return\"function\"==typeof s(t)[l]?t[l]():n(t)?new a(t):i(t)?new o(t):new a(t)}},{\"./array\":168,\"./string\":173,\"./valid-iterable\":174,\"es5-ext/function/is-arguments\":135,\"es5-ext/string/is-string\":166,\"es6-symbol\":175}],171:[function(t,e,r){\"use strict\";var n,i=t(\"es5-ext/array/#/clear\"),a=t(\"es5-ext/object/assign\"),o=t(\"es5-ext/object/valid-callable\"),s=t(\"es5-ext/object/valid-value\"),l=t(\"d\"),c=t(\"d/auto-bind\"),u=t(\"es6-symbol\"),f=Object.defineProperty,h=Object.defineProperties;e.exports=n=function(t,e){if(!(this instanceof n))throw new TypeError(\"Constructor requires 'new'\");h(this,{__list__:l(\"w\",s(t)),__context__:l(\"w\",e),__nextIndex__:l(\"w\",0)}),e&&(o(e.on),e.on(\"_add\",this._onAdd),e.on(\"_delete\",this._onDelete),e.on(\"_clear\",this._onClear))},delete n.prototype.constructor,h(n.prototype,a({_next:l((function(){var t;if(this.__list__)return this.__redo__&&void 0!==(t=this.__redo__.shift())?t:this.__nextIndex__=this.__nextIndex__||(++this.__nextIndex__,this.__redo__?(this.__redo__.forEach((function(e,r){e>=t&&(this.__redo__[r]=++e)}),this),this.__redo__.push(t)):f(this,\"__redo__\",l(\"c\",[t])))})),_onDelete:l((function(t){var e;t>=this.__nextIndex__||(--this.__nextIndex__,this.__redo__&&(-1!==(e=this.__redo__.indexOf(t))&&this.__redo__.splice(e,1),this.__redo__.forEach((function(e,r){e>t&&(this.__redo__[r]=--e)}),this)))})),_onClear:l((function(){this.__redo__&&i.call(this.__redo__),this.__nextIndex__=0}))}))),f(n.prototype,u.iterator,l((function(){return this})))},{d:106,\"d/auto-bind\":105,\"es5-ext/array/#/clear\":131,\"es5-ext/object/assign\":144,\"es5-ext/object/valid-callable\":160,\"es5-ext/object/valid-value\":162,\"es6-symbol\":175}],172:[function(t,e,r){\"use strict\";var n=t(\"es5-ext/function/is-arguments\"),i=t(\"es5-ext/object/is-value\"),a=t(\"es5-ext/string/is-string\"),o=t(\"es6-symbol\").iterator,s=Array.isArray;e.exports=function(t){return!!i(t)&&(!!s(t)||(!!a(t)||(!!n(t)||\"function\"==typeof t[o])))}},{\"es5-ext/function/is-arguments\":135,\"es5-ext/object/is-value\":151,\"es5-ext/string/is-string\":166,\"es6-symbol\":175}],173:[function(t,e,r){\"use strict\";var n,i=t(\"es5-ext/object/set-prototype-of\"),a=t(\"d\"),o=t(\"es6-symbol\"),s=t(\"./\"),l=Object.defineProperty;n=e.exports=function(t){if(!(this instanceof n))throw new TypeError(\"Constructor requires 'new'\");t=String(t),s.call(this,t),l(this,\"__length__\",a(\"\",t.length))},i&&i(n,s),delete n.prototype.constructor,n.prototype=Object.create(s.prototype,{_next:a((function(){if(this.__list__)return this.__nextIndex__=55296&&e<=56319?r+this.__list__[this.__nextIndex__++]:r}))}),l(n.prototype,o.toStringTag,a(\"c\",\"String Iterator\"))},{\"./\":171,d:106,\"es5-ext/object/set-prototype-of\":157,\"es6-symbol\":175}],174:[function(t,e,r){\"use strict\";var n=t(\"./is-iterable\");e.exports=function(t){if(!n(t))throw new TypeError(t+\" is not iterable\");return t}},{\"./is-iterable\":172}],175:[function(t,e,r){\"use strict\";e.exports=t(\"./is-implemented\")()?t(\"ext/global-this\").Symbol:t(\"./polyfill\")},{\"./is-implemented\":176,\"./polyfill\":181,\"ext/global-this\":188}],176:[function(t,e,r){\"use strict\";var n=t(\"ext/global-this\"),i={object:!0,symbol:!0};e.exports=function(){var t,e=n.Symbol;if(\"function\"!=typeof e)return!1;t=e(\"test symbol\");try{String(t)}catch(t){return!1}return!!i[typeof e.iterator]&&(!!i[typeof e.toPrimitive]&&!!i[typeof e.toStringTag])}},{\"ext/global-this\":188}],177:[function(t,e,r){\"use strict\";e.exports=function(t){return!!t&&(\"symbol\"==typeof t||!!t.constructor&&(\"Symbol\"===t.constructor.name&&\"Symbol\"===t[t.constructor.toStringTag]))}},{}],178:[function(t,e,r){\"use strict\";var n=t(\"d\"),i=Object.create,a=Object.defineProperty,o=Object.prototype,s=i(null);e.exports=function(t){for(var e,r,i=0;s[t+(i||\"\")];)++i;return s[t+=i||\"\"]=!0,a(o,e=\"@@\"+t,n.gs(null,(function(t){r||(r=!0,a(this,e,n(t)),r=!1)}))),e}},{d:106}],179:[function(t,e,r){\"use strict\";var n=t(\"d\"),i=t(\"ext/global-this\").Symbol;e.exports=function(t){return Object.defineProperties(t,{hasInstance:n(\"\",i&&i.hasInstance||t(\"hasInstance\")),isConcatSpreadable:n(\"\",i&&i.isConcatSpreadable||t(\"isConcatSpreadable\")),iterator:n(\"\",i&&i.iterator||t(\"iterator\")),match:n(\"\",i&&i.match||t(\"match\")),replace:n(\"\",i&&i.replace||t(\"replace\")),search:n(\"\",i&&i.search||t(\"search\")),species:n(\"\",i&&i.species||t(\"species\")),split:n(\"\",i&&i.split||t(\"split\")),toPrimitive:n(\"\",i&&i.toPrimitive||t(\"toPrimitive\")),toStringTag:n(\"\",i&&i.toStringTag||t(\"toStringTag\")),unscopables:n(\"\",i&&i.unscopables||t(\"unscopables\"))})}},{d:106,\"ext/global-this\":188}],180:[function(t,e,r){\"use strict\";var n=t(\"d\"),i=t(\"../../../validate-symbol\"),a=Object.create(null);e.exports=function(t){return Object.defineProperties(t,{for:n((function(e){return a[e]?a[e]:a[e]=t(String(e))})),keyFor:n((function(t){var e;for(e in i(t),a)if(a[e]===t)return e}))})}},{\"../../../validate-symbol\":182,d:106}],181:[function(t,e,r){\"use strict\";var n,i,a,o=t(\"d\"),s=t(\"./validate-symbol\"),l=t(\"ext/global-this\").Symbol,c=t(\"./lib/private/generate-name\"),u=t(\"./lib/private/setup/standard-symbols\"),f=t(\"./lib/private/setup/symbol-registry\"),h=Object.create,p=Object.defineProperties,d=Object.defineProperty;if(\"function\"==typeof l)try{String(l()),a=!0}catch(t){}else l=null;i=function(t){if(this instanceof i)throw new TypeError(\"Symbol is not a constructor\");return n(t)},e.exports=n=function t(e){var r;if(this instanceof t)throw new TypeError(\"Symbol is not a constructor\");return a?l(e):(r=h(i.prototype),e=void 0===e?\"\":String(e),p(r,{__description__:o(\"\",e),__name__:o(\"\",c(e))}))},u(n),f(n),p(i.prototype,{constructor:o(n),toString:o(\"\",(function(){return this.__name__}))}),p(n.prototype,{toString:o((function(){return\"Symbol (\"+s(this).__description__+\")\"})),valueOf:o((function(){return s(this)}))}),d(n.prototype,n.toPrimitive,o(\"\",(function(){var t=s(this);return\"symbol\"==typeof t?t:t.toString()}))),d(n.prototype,n.toStringTag,o(\"c\",\"Symbol\")),d(i.prototype,n.toStringTag,o(\"c\",n.prototype[n.toStringTag])),d(i.prototype,n.toPrimitive,o(\"c\",n.prototype[n.toPrimitive]))},{\"./lib/private/generate-name\":178,\"./lib/private/setup/standard-symbols\":179,\"./lib/private/setup/symbol-registry\":180,\"./validate-symbol\":182,d:106,\"ext/global-this\":188}],182:[function(t,e,r){\"use strict\";var n=t(\"./is-symbol\");e.exports=function(t){if(!n(t))throw new TypeError(t+\" is not a symbol\");return t}},{\"./is-symbol\":177}],183:[function(t,e,r){\"use strict\";e.exports=t(\"./is-implemented\")()?WeakMap:t(\"./polyfill\")},{\"./is-implemented\":184,\"./polyfill\":186}],184:[function(t,e,r){\"use strict\";e.exports=function(){var t,e;if(\"function\"!=typeof WeakMap)return!1;try{t=new WeakMap([[e={},\"one\"],[{},\"two\"],[{},\"three\"]])}catch(t){return!1}return\"[object WeakMap]\"===String(t)&&(\"function\"==typeof t.set&&(t.set({},1)===t&&(\"function\"==typeof t.delete&&(\"function\"==typeof t.has&&\"one\"===t.get(e)))))}},{}],185:[function(t,e,r){\"use strict\";e.exports=\"function\"==typeof WeakMap&&\"[object WeakMap]\"===Object.prototype.toString.call(new WeakMap)},{}],186:[function(t,e,r){\"use strict\";var n,i=t(\"es5-ext/object/is-value\"),a=t(\"es5-ext/object/set-prototype-of\"),o=t(\"es5-ext/object/valid-object\"),s=t(\"es5-ext/object/valid-value\"),l=t(\"es5-ext/string/random-uniq\"),c=t(\"d\"),u=t(\"es6-iterator/get\"),f=t(\"es6-iterator/for-of\"),h=t(\"es6-symbol\").toStringTag,p=t(\"./is-native-implemented\"),d=Array.isArray,g=Object.defineProperty,m=Object.prototype.hasOwnProperty,v=Object.getPrototypeOf;e.exports=n=function(){var t,e=arguments[0];if(!(this instanceof n))throw new TypeError(\"Constructor requires 'new'\");return t=p&&a&&WeakMap!==n?a(new WeakMap,v(this)):this,i(e)&&(d(e)||(e=u(e))),g(t,\"__weakMapData__\",c(\"c\",\"$weakMap$\"+l())),e?(f(e,(function(e){s(e),t.set(e[0],e[1])})),t):t},p&&(a&&a(n,WeakMap),n.prototype=Object.create(WeakMap.prototype,{constructor:c(n)})),Object.defineProperties(n.prototype,{delete:c((function(t){return!!m.call(o(t),this.__weakMapData__)&&(delete t[this.__weakMapData__],!0)})),get:c((function(t){if(m.call(o(t),this.__weakMapData__))return t[this.__weakMapData__]})),has:c((function(t){return m.call(o(t),this.__weakMapData__)})),set:c((function(t,e){return g(o(t),this.__weakMapData__,c(\"c\",e)),this})),toString:c((function(){return\"[object WeakMap]\"}))}),g(n.prototype,h,c(\"c\",\"WeakMap\"))},{\"./is-native-implemented\":185,d:106,\"es5-ext/object/is-value\":151,\"es5-ext/object/set-prototype-of\":157,\"es5-ext/object/valid-object\":161,\"es5-ext/object/valid-value\":162,\"es5-ext/string/random-uniq\":167,\"es6-iterator/for-of\":169,\"es6-iterator/get\":170,\"es6-symbol\":175}],187:[function(t,e,r){var n=function(){if(\"object\"==typeof self&&self)return self;if(\"object\"==typeof window&&window)return window;throw new Error(\"Unable to resolve global `this`\")};e.exports=function(){if(this)return this;try{Object.defineProperty(Object.prototype,\"__global__\",{get:function(){return this},configurable:!0})}catch(t){return n()}try{return __global__||n()}finally{delete Object.prototype.__global__}}()},{}],188:[function(t,e,r){\"use strict\";e.exports=t(\"./is-implemented\")()?globalThis:t(\"./implementation\")},{\"./implementation\":187,\"./is-implemented\":189}],189:[function(t,e,r){\"use strict\";e.exports=function(){return\"object\"==typeof globalThis&&(!!globalThis&&globalThis.Array===Array)}},{}],190:[function(t,e,r){\"use strict\";var n=t(\"is-string-blank\");e.exports=function(t){var e=typeof t;if(\"string\"===e){var r=t;if(0===(t=+t)&&n(r))return!1}else if(\"number\"!==e)return!1;return t-t<1}},{\"is-string-blank\":237}],191:[function(t,e,r){var n=t(\"dtype\");e.exports=function(t,e,r){if(!t)throw new TypeError(\"must specify data as first parameter\");if(r=0|+(r||0),Array.isArray(t)&&t[0]&&\"number\"==typeof t[0][0]){var i,a,o,s,l=t[0].length,c=t.length*l;e&&\"string\"!=typeof e||(e=new(n(e||\"float32\"))(c+r));var u=e.length-r;if(c!==u)throw new Error(\"source length \"+c+\" (\"+l+\"x\"+t.length+\") does not match destination length \"+u);for(i=0,o=r;ie[0]-o[0]/2&&(h=o[0]/2,p+=o[1]);return r}},{\"css-font/stringify\":102}],193:[function(t,e,r){\"use strict\";function n(t,e){e||(e={}),(\"string\"==typeof t||Array.isArray(t))&&(e.family=t);var r=Array.isArray(e.family)?e.family.join(\", \"):e.family;if(!r)throw Error(\"`family` must be defined\");var s=e.size||e.fontSize||e.em||48,l=e.weight||e.fontWeight||\"\",c=(t=[e.style||e.fontStyle||\"\",l,s].join(\" \")+\"px \"+r,e.origin||\"top\");if(n.cache[r]&&s<=n.cache[r].em)return i(n.cache[r],c);var u=e.canvas||n.canvas,f=u.getContext(\"2d\"),h={upper:void 0!==e.upper?e.upper:\"H\",lower:void 0!==e.lower?e.lower:\"x\",descent:void 0!==e.descent?e.descent:\"p\",ascent:void 0!==e.ascent?e.ascent:\"h\",tittle:void 0!==e.tittle?e.tittle:\"i\",overshoot:void 0!==e.overshoot?e.overshoot:\"O\"},p=Math.ceil(1.5*s);u.height=p,u.width=.5*p,f.font=t;var d={top:0};f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillStyle=\"black\",f.fillText(\"H\",0,0);var g=a(f.getImageData(0,0,p,p));f.clearRect(0,0,p,p),f.textBaseline=\"bottom\",f.fillText(\"H\",0,p);var m=a(f.getImageData(0,0,p,p));d.lineHeight=d.bottom=p-m+g,f.clearRect(0,0,p,p),f.textBaseline=\"alphabetic\",f.fillText(\"H\",0,p);var v=p-a(f.getImageData(0,0,p,p))-1+g;d.baseline=d.alphabetic=v,f.clearRect(0,0,p,p),f.textBaseline=\"middle\",f.fillText(\"H\",0,.5*p);var y=a(f.getImageData(0,0,p,p));d.median=d.middle=p-y-1+g-.5*p,f.clearRect(0,0,p,p),f.textBaseline=\"hanging\",f.fillText(\"H\",0,.5*p);var x=a(f.getImageData(0,0,p,p));d.hanging=p-x-1+g-.5*p,f.clearRect(0,0,p,p),f.textBaseline=\"ideographic\",f.fillText(\"H\",0,p);var b=a(f.getImageData(0,0,p,p));if(d.ideographic=p-b-1+g,h.upper&&(f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.upper,0,0),d.upper=a(f.getImageData(0,0,p,p)),d.capHeight=d.baseline-d.upper),h.lower&&(f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.lower,0,0),d.lower=a(f.getImageData(0,0,p,p)),d.xHeight=d.baseline-d.lower),h.tittle&&(f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.tittle,0,0),d.tittle=a(f.getImageData(0,0,p,p))),h.ascent&&(f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.ascent,0,0),d.ascent=a(f.getImageData(0,0,p,p))),h.descent&&(f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.descent,0,0),d.descent=o(f.getImageData(0,0,p,p))),h.overshoot){f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.overshoot,0,0);var _=o(f.getImageData(0,0,p,p));d.overshoot=_-v}for(var w in d)d[w]/=s;return d.em=s,n.cache[r]=d,i(d,c)}function i(t,e){var r={};for(var n in\"string\"==typeof e&&(e=t[e]),t)\"em\"!==n&&(r[n]=t[n]-e);return r}function a(t){for(var e=t.height,r=t.data,n=3;n0;n-=4)if(0!==r[n])return Math.floor(.25*(n-3)/e)}e.exports=n,n.canvas=document.createElement(\"canvas\"),n.cache={}},{}],194:[function(t,e,r){e.exports=function(t,e){if(\"string\"!=typeof t)throw new TypeError(\"must specify type string\");if(e=e||{},\"undefined\"==typeof document&&!e.canvas)return null;var r=e.canvas||document.createElement(\"canvas\");\"number\"==typeof e.width&&(r.width=e.width);\"number\"==typeof e.height&&(r.height=e.height);var n,i=e;try{var a=[t];0===t.indexOf(\"webgl\")&&a.push(\"experimental-\"+t);for(var o=0;o halfCharStep + halfCharWidth ||\\n\\t\\t\\t\\t\\tfloor(uv.x) < halfCharStep - halfCharWidth) return;\\n\\n\\t\\t\\t\\tuv += charId * charStep;\\n\\t\\t\\t\\tuv = uv / atlasSize;\\n\\n\\t\\t\\t\\tvec4 color = fontColor;\\n\\t\\t\\t\\tvec4 mask = texture2D(atlas, uv);\\n\\n\\t\\t\\t\\tfloat maskY = lightness(mask);\\n\\t\\t\\t\\t// float colorY = lightness(color);\\n\\t\\t\\t\\tcolor.a *= maskY;\\n\\t\\t\\t\\tcolor.a *= opacity;\\n\\n\\t\\t\\t\\t// color.a += .1;\\n\\n\\t\\t\\t\\t// antialiasing, see yiq color space y-channel formula\\n\\t\\t\\t\\t// color.rgb += (1. - color.rgb) * (1. - mask.rgb);\\n\\n\\t\\t\\t\\tgl_FragColor = color;\\n\\t\\t\\t}\"});return{regl:t,draw:e,atlas:{}}},T.prototype.update=function(t){var e=this;if(\"string\"==typeof t)t={text:t};else if(!t)return;null!=(t=i(t,{position:\"position positions coord coords coordinates\",font:\"font fontFace fontface typeface cssFont css-font family fontFamily\",fontSize:\"fontSize fontsize size font-size\",text:\"text texts chars characters value values symbols\",align:\"align alignment textAlign textbaseline\",baseline:\"baseline textBaseline textbaseline\",direction:\"dir direction textDirection\",color:\"color colour fill fill-color fillColor textColor textcolor\",kerning:\"kerning kern\",range:\"range dataBox\",viewport:\"vp viewport viewBox viewbox viewPort\",opacity:\"opacity alpha transparency visible visibility opaque\",offset:\"offset positionOffset padding shift indent indentation\"},!0)).opacity&&(Array.isArray(t.opacity)?this.opacity=t.opacity.map((function(t){return parseFloat(t)})):this.opacity=parseFloat(t.opacity)),null!=t.viewport&&(this.viewport=f(t.viewport),this.viewportArray=[this.viewport.x,this.viewport.y,this.viewport.width,this.viewport.height]),null==this.viewport&&(this.viewport={x:0,y:0,width:this.gl.drawingBufferWidth,height:this.gl.drawingBufferHeight},this.viewportArray=[this.viewport.x,this.viewport.y,this.viewport.width,this.viewport.height]),null!=t.kerning&&(this.kerning=t.kerning),null!=t.offset&&(\"number\"==typeof t.offset&&(t.offset=[t.offset,0]),this.positionOffset=y(t.offset)),t.direction&&(this.direction=t.direction),t.range&&(this.range=t.range,this.scale=[1/(t.range[2]-t.range[0]),1/(t.range[3]-t.range[1])],this.translate=[-t.range[0],-t.range[1]]),t.scale&&(this.scale=t.scale),t.translate&&(this.translate=t.translate),this.scale||(this.scale=[1/this.viewport.width,1/this.viewport.height]),this.translate||(this.translate=[0,0]),this.font.length||t.font||(t.font=T.baseFontSize+\"px sans-serif\");var r,a=!1,o=!1;if(t.font&&(Array.isArray(t.font)?t.font:[t.font]).forEach((function(t,r){if(\"string\"==typeof t)try{t=n.parse(t)}catch(e){t=n.parse(T.baseFontSize+\"px \"+t)}else t=n.parse(n.stringify(t));var i=n.stringify({size:T.baseFontSize,family:t.family,stretch:_?t.stretch:void 0,variant:t.variant,weight:t.weight,style:t.style}),s=p(t.size),l=Math.round(s[0]*d(s[1]));if(l!==e.fontSize[r]&&(o=!0,e.fontSize[r]=l),!(e.font[r]&&i==e.font[r].baseString||(a=!0,e.font[r]=T.fonts[i],e.font[r]))){var c=t.family.join(\", \"),u=[t.style];t.style!=t.variant&&u.push(t.variant),t.variant!=t.weight&&u.push(t.weight),_&&t.weight!=t.stretch&&u.push(t.stretch),e.font[r]={baseString:i,family:c,weight:t.weight,stretch:t.stretch,style:t.style,variant:t.variant,width:{},kerning:{},metrics:v(c,{origin:\"top\",fontSize:T.baseFontSize,fontStyle:u.join(\" \")})},T.fonts[i]=e.font[r]}})),(a||o)&&this.font.forEach((function(r,i){var a=n.stringify({size:e.fontSize[i],family:r.family,stretch:_?r.stretch:void 0,variant:r.variant,weight:r.weight,style:r.style});if(e.fontAtlas[i]=e.shader.atlas[a],!e.fontAtlas[i]){var o=r.metrics;e.shader.atlas[a]=e.fontAtlas[i]={fontString:a,step:2*Math.ceil(e.fontSize[i]*o.bottom*.5),em:e.fontSize[i],cols:0,rows:0,height:0,width:0,chars:[],ids:{},texture:e.regl.texture()}}null==t.text&&(t.text=e.text)})),\"string\"==typeof t.text&&t.position&&t.position.length>2){for(var s=Array(.5*t.position.length),h=0;h2){for(var w=!t.position[0].length,k=u.mallocFloat(2*this.count),A=0,M=0;A1?e.align[r]:e.align[0]:e.align;if(\"number\"==typeof n)return n;switch(n){case\"right\":case\"end\":return-t;case\"center\":case\"centre\":case\"middle\":return.5*-t}return 0}))),null==this.baseline&&null==t.baseline&&(t.baseline=0),null!=t.baseline&&(this.baseline=t.baseline,Array.isArray(this.baseline)||(this.baseline=[this.baseline]),this.baselineOffset=this.baseline.map((function(t,r){var n=(e.font[r]||e.font[0]).metrics,i=0;return i+=.5*n.bottom,i+=\"number\"==typeof t?t-n.baseline:-n[t],i*=-1}))),null!=t.color)if(t.color||(t.color=\"transparent\"),\"string\"!=typeof t.color&&isNaN(t.color)){var q;if(\"number\"==typeof t.color[0]&&t.color.length>this.counts.length){var G=t.color.length;q=u.mallocUint8(G);for(var Y=(t.color.subarray||t.color.slice).bind(t.color),W=0;W4||this.baselineOffset.length>1||this.align&&this.align.length>1||this.fontAtlas.length>1||this.positionOffset.length>2){var J=Math.max(.5*this.position.length||0,.25*this.color.length||0,this.baselineOffset.length||0,this.alignOffset.length||0,this.font.length||0,this.opacity.length||0,.5*this.positionOffset.length||0);this.batch=Array(J);for(var K=0;K1?this.counts[K]:this.counts[0],offset:this.textOffsets.length>1?this.textOffsets[K]:this.textOffsets[0],color:this.color?this.color.length<=4?this.color:this.color.subarray(4*K,4*K+4):[0,0,0,255],opacity:Array.isArray(this.opacity)?this.opacity[K]:this.opacity,baseline:null!=this.baselineOffset[K]?this.baselineOffset[K]:this.baselineOffset[0],align:this.align?null!=this.alignOffset[K]?this.alignOffset[K]:this.alignOffset[0]:0,atlas:this.fontAtlas[K]||this.fontAtlas[0],positionOffset:this.positionOffset.length>2?this.positionOffset.subarray(2*K,2*K+2):this.positionOffset}}else this.count?this.batch=[{count:this.count,offset:0,color:this.color||[0,0,0,255],opacity:Array.isArray(this.opacity)?this.opacity[0]:this.opacity,baseline:this.baselineOffset[0],align:this.alignOffset?this.alignOffset[0]:0,atlas:this.fontAtlas[0],positionOffset:this.positionOffset}]:this.batch=[]},T.prototype.destroy=function(){},T.prototype.kerning=!0,T.prototype.position={constant:new Float32Array(2)},T.prototype.translate=null,T.prototype.scale=null,T.prototype.font=null,T.prototype.text=\"\",T.prototype.positionOffset=[0,0],T.prototype.opacity=1,T.prototype.color=new Uint8Array([0,0,0,255]),T.prototype.alignOffset=[0,0],T.maxAtlasSize=1024,T.atlasCanvas=document.createElement(\"canvas\"),T.atlasContext=T.atlasCanvas.getContext(\"2d\",{alpha:!1}),T.baseFontSize=64,T.fonts={},e.exports=T},{\"bit-twiddle\":81,\"color-normalize\":89,\"css-font\":99,\"detect-kerning\":125,\"es6-weak-map\":183,\"flatten-vertex-data\":191,\"font-atlas\":192,\"font-measure\":193,\"gl-util/context\":226,\"is-plain-obj\":236,\"object-assign\":247,\"parse-rect\":249,\"parse-unit\":251,\"pick-by-alias\":253,regl:283,\"to-px\":314,\"typedarray-pool\":327}],226:[function(t,e,r){(function(r){(function(){\"use strict\";var n=t(\"pick-by-alias\");function i(t){if(t.container)if(t.container==document.body)document.body.style.width||(t.canvas.width=t.width||t.pixelRatio*r.innerWidth),document.body.style.height||(t.canvas.height=t.height||t.pixelRatio*r.innerHeight);else{var e=t.container.getBoundingClientRect();t.canvas.width=t.width||e.right-e.left,t.canvas.height=t.height||e.bottom-e.top}}function a(t){return\"function\"==typeof t.getContext&&\"width\"in t&&\"height\"in t}function o(){var t=document.createElement(\"canvas\");return t.style.position=\"absolute\",t.style.top=0,t.style.left=0,t}e.exports=function(t){var e;if(t?\"string\"==typeof t&&(t={container:t}):t={},a(t)?t={container:t}:t=\"string\"==typeof(e=t).nodeName&&\"function\"==typeof e.appendChild&&\"function\"==typeof e.getBoundingClientRect?{container:t}:function(t){return\"function\"==typeof t.drawArrays||\"function\"==typeof t.drawElements}(t)?{gl:t}:n(t,{container:\"container target element el canvas holder parent parentNode wrapper use ref root node\",gl:\"gl context webgl glContext\",attrs:\"attributes attrs contextAttributes\",pixelRatio:\"pixelRatio pxRatio px ratio pxratio pixelratio\",width:\"w width\",height:\"h height\"},!0),t.pixelRatio||(t.pixelRatio=r.pixelRatio||1),t.gl)return t.gl;if(t.canvas&&(t.container=t.canvas.parentNode),t.container){if(\"string\"==typeof t.container){var s=document.querySelector(t.container);if(!s)throw Error(\"Element \"+t.container+\" is not found\");t.container=s}a(t.container)?(t.canvas=t.container,t.container=t.canvas.parentNode):t.canvas||(t.canvas=o(),t.container.appendChild(t.canvas),i(t))}else if(!t.canvas){if(\"undefined\"==typeof document)throw Error(\"Not DOM environment. Use headless-gl.\");t.container=document.body||document.documentElement,t.canvas=o(),t.container.appendChild(t.canvas),i(t)}return t.gl||[\"webgl\",\"experimental-webgl\",\"webgl-experimental\"].some((function(e){try{t.gl=t.canvas.getContext(e,t.attrs)}catch(t){}return t.gl})),t.gl}}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"pick-by-alias\":253}],227:[function(t,e,r){e.exports=function(t){\"string\"==typeof t&&(t=[t]);for(var e=[].slice.call(arguments,1),r=[],n=0;n>1,u=-7,f=r?i-1:0,h=r?-1:1,p=t[e+f];for(f+=h,a=p&(1<<-u)-1,p>>=-u,u+=s;u>0;a=256*a+t[e+f],f+=h,u-=8);for(o=a&(1<<-u)-1,a>>=-u,u+=n;u>0;o=256*o+t[e+f],f+=h,u-=8);if(0===a)a=1-c;else{if(a===l)return o?NaN:1/0*(p?-1:1);o+=Math.pow(2,n),a-=c}return(p?-1:1)*o*Math.pow(2,a-n)},r.write=function(t,e,r,n,i,a){var o,s,l,c=8*a-i-1,u=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:a-1,d=n?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,o=u):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),(e+=o+f>=1?h/l:h*Math.pow(2,1-f))*l>=2&&(o++,l/=2),o+f>=u?(s=0,o=u):o+f>=1?(s=(e*l-1)*Math.pow(2,i),o+=f):(s=e*Math.pow(2,f-1)*Math.pow(2,i),o=0));i>=8;t[r+p]=255&s,p+=d,s/=256,i-=8);for(o=o<0;t[r+p]=255&o,p+=d,o/=256,c-=8);t[r+p-d]|=128*g}},{}],231:[function(t,e,r){\"function\"==typeof Object.create?e.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:e.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}},{}],232:[function(t,e,r){e.exports=!0},{}],233:[function(t,e,r){\"use strict\";e.exports=\"undefined\"!=typeof navigator&&(/MSIE/.test(navigator.userAgent)||/Trident\\//.test(navigator.appVersion))},{}],234:[function(t,e,r){\"use strict\";e.exports=a,e.exports.isMobile=a,e.exports.default=a;var n=/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series[46]0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i,i=/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series[46]0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino|android|ipad|playbook|silk/i;function a(t){t||(t={});var e=t.ua;if(e||\"undefined\"==typeof navigator||(e=navigator.userAgent),e&&e.headers&&\"string\"==typeof e.headers[\"user-agent\"]&&(e=e.headers[\"user-agent\"]),\"string\"!=typeof e)return!1;var r=t.tablet?i.test(e):n.test(e);return!r&&t.tablet&&t.featureDetect&&navigator&&navigator.maxTouchPoints>1&&-1!==e.indexOf(\"Macintosh\")&&-1!==e.indexOf(\"Safari\")&&(r=!0),r}},{}],235:[function(t,e,r){\"use strict\";e.exports=function(t){var e=typeof t;return null!==t&&(\"object\"===e||\"function\"===e)}},{}],236:[function(t,e,r){\"use strict\";var n=Object.prototype.toString;e.exports=function(t){var e;return\"[object Object]\"===n.call(t)&&(null===(e=Object.getPrototypeOf(t))||e===Object.getPrototypeOf({}))}},{}],237:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e,r=t.length,n=0;n13)&&32!==e&&133!==e&&160!==e&&5760!==e&&6158!==e&&(e<8192||e>8205)&&8232!==e&&8233!==e&&8239!==e&&8287!==e&&8288!==e&&12288!==e&&65279!==e)return!1;return!0}},{}],238:[function(t,e,r){\"use strict\";e.exports=function(t){return\"string\"==typeof t&&(t=t.trim(),!!(/^[mzlhvcsqta]\\s*[-+.0-9][^mlhvzcsqta]+/i.test(t)&&/[\\dz]$/i.test(t)&&t.length>4))}},{}],239:[function(t,e,r){!function(t,n){\"object\"==typeof r&&void 0!==e?e.exports=n():(t=t||self).mapboxgl=n()}(this,(function(){\"use strict\";var t,e,r;function n(n,i){if(t)if(e){var a=\"var sharedChunk = {}; (\"+t+\")(sharedChunk); (\"+e+\")(sharedChunk);\",o={};t(o),(r=i(o)).workerUrl=window.URL.createObjectURL(new Blob([a],{type:\"text/javascript\"}))}else e=i;else t=i}return n(0,(function(t){function e(t,e){return t(e={exports:{}},e.exports),e.exports}var r=n;function n(t,e,r,n){this.cx=3*t,this.bx=3*(r-t)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*e,this.by=3*(n-e)-this.cy,this.ay=1-this.cy-this.by,this.p1x=t,this.p1y=n,this.p2x=r,this.p2y=n}n.prototype.sampleCurveX=function(t){return((this.ax*t+this.bx)*t+this.cx)*t},n.prototype.sampleCurveY=function(t){return((this.ay*t+this.by)*t+this.cy)*t},n.prototype.sampleCurveDerivativeX=function(t){return(3*this.ax*t+2*this.bx)*t+this.cx},n.prototype.solveCurveX=function(t,e){var r,n,i,a,o;for(void 0===e&&(e=1e-6),i=t,o=0;o<8;o++){if(a=this.sampleCurveX(i)-t,Math.abs(a)(n=1))return n;for(;ra?r=i:n=i,i=.5*(n-r)+r}return i},n.prototype.solve=function(t,e){return this.sampleCurveY(this.solveCurveX(t,e))};var i=a;function a(t,e){this.x=t,this.y=e}function o(t,e,n,i){var a=new r(t,e,n,i);return function(t){return a.solve(t)}}a.prototype={clone:function(){return new a(this.x,this.y)},add:function(t){return this.clone()._add(t)},sub:function(t){return this.clone()._sub(t)},multByPoint:function(t){return this.clone()._multByPoint(t)},divByPoint:function(t){return this.clone()._divByPoint(t)},mult:function(t){return this.clone()._mult(t)},div:function(t){return this.clone()._div(t)},rotate:function(t){return this.clone()._rotate(t)},rotateAround:function(t,e){return this.clone()._rotateAround(t,e)},matMult:function(t){return this.clone()._matMult(t)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(t){return this.x===t.x&&this.y===t.y},dist:function(t){return Math.sqrt(this.distSqr(t))},distSqr:function(t){var e=t.x-this.x,r=t.y-this.y;return e*e+r*r},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(t){return Math.atan2(this.y-t.y,this.x-t.x)},angleWith:function(t){return this.angleWithSep(t.x,t.y)},angleWithSep:function(t,e){return Math.atan2(this.x*e-this.y*t,this.x*t+this.y*e)},_matMult:function(t){var e=t[0]*this.x+t[1]*this.y,r=t[2]*this.x+t[3]*this.y;return this.x=e,this.y=r,this},_add:function(t){return this.x+=t.x,this.y+=t.y,this},_sub:function(t){return this.x-=t.x,this.y-=t.y,this},_mult:function(t){return this.x*=t,this.y*=t,this},_div:function(t){return this.x/=t,this.y/=t,this},_multByPoint:function(t){return this.x*=t.x,this.y*=t.y,this},_divByPoint:function(t){return this.x/=t.x,this.y/=t.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var t=this.y;return this.y=this.x,this.x=-t,this},_rotate:function(t){var e=Math.cos(t),r=Math.sin(t),n=e*this.x-r*this.y,i=r*this.x+e*this.y;return this.x=n,this.y=i,this},_rotateAround:function(t,e){var r=Math.cos(t),n=Math.sin(t),i=e.x+r*(this.x-e.x)-n*(this.y-e.y),a=e.y+n*(this.x-e.x)+r*(this.y-e.y);return this.x=i,this.y=a,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},a.convert=function(t){return t instanceof a?t:Array.isArray(t)?new a(t[0],t[1]):t};var s=o(.25,.1,.25,1);function l(t,e,r){return Math.min(r,Math.max(e,t))}function c(t,e,r){var n=r-e,i=((t-e)%n+n)%n+e;return i===e?r:i}function u(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];for(var n=0,i=e;n>e/4).toString(16):([1e7]+-[1e3]+-4e3+-8e3+-1e11).replace(/[018]/g,t)}()}function d(t){return!!t&&/^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(t)}function g(t,e){t.forEach((function(t){e[t]&&(e[t]=e[t].bind(e))}))}function m(t,e){return-1!==t.indexOf(e,t.length-e.length)}function v(t,e,r){var n={};for(var i in t)n[i]=e.call(r||this,t[i],i,t);return n}function y(t,e,r){var n={};for(var i in t)e.call(r||this,t[i],i,t)&&(n[i]=t[i]);return n}function x(t){return Array.isArray(t)?t.map(x):\"object\"==typeof t&&t?v(t,x):t}var b={};function _(t){b[t]||(\"undefined\"!=typeof console&&console.warn(t),b[t]=!0)}function w(t,e,r){return(r.y-t.y)*(e.x-t.x)>(e.y-t.y)*(r.x-t.x)}function T(t){for(var e=0,r=0,n=t.length,i=n-1,a=void 0,o=void 0;r@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)(?:\\=(?:([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)|(?:\\\"((?:[^\"\\\\]|\\\\.)*)\\\")))?/g,(function(t,r,n,i){var a=n||i;return e[r]=!a||a.toLowerCase(),\"\"})),e[\"max-age\"]){var r=parseInt(e[\"max-age\"],10);isNaN(r)?delete e[\"max-age\"]:e[\"max-age\"]=r}return e}var M=null;function S(t){if(null==M){var e=t.navigator?t.navigator.userAgent:null;M=!!t.safari||!(!e||!(/\\b(iPad|iPhone|iPod)\\b/.test(e)||e.match(\"Safari\")&&!e.match(\"Chrome\")))}return M}function E(t){try{var e=self[t];return e.setItem(\"_mapbox_test_\",1),e.removeItem(\"_mapbox_test_\"),!0}catch(t){return!1}}var L,C,P,I,O=self.performance&&self.performance.now?self.performance.now.bind(self.performance):Date.now.bind(Date),z=self.requestAnimationFrame||self.mozRequestAnimationFrame||self.webkitRequestAnimationFrame||self.msRequestAnimationFrame,D=self.cancelAnimationFrame||self.mozCancelAnimationFrame||self.webkitCancelAnimationFrame||self.msCancelAnimationFrame,R={now:O,frame:function(t){var e=z(t);return{cancel:function(){return D(e)}}},getImageData:function(t,e){void 0===e&&(e=0);var r=self.document.createElement(\"canvas\"),n=r.getContext(\"2d\");if(!n)throw new Error(\"failed to create canvas 2d context\");return r.width=t.width,r.height=t.height,n.drawImage(t,0,0,t.width,t.height),n.getImageData(-e,-e,t.width+2*e,t.height+2*e)},resolveURL:function(t){return L||(L=self.document.createElement(\"a\")),L.href=t,L.href},hardwareConcurrency:self.navigator.hardwareConcurrency||4,get devicePixelRatio(){return self.devicePixelRatio},get prefersReducedMotion(){return!!self.matchMedia&&(null==C&&(C=self.matchMedia(\"(prefers-reduced-motion: reduce)\")),C.matches)}},F={API_URL:\"https://api.mapbox.com\",get EVENTS_URL(){return this.API_URL?0===this.API_URL.indexOf(\"https://api.mapbox.cn\")?\"https://events.mapbox.cn/events/v2\":0===this.API_URL.indexOf(\"https://api.mapbox.com\")?\"https://events.mapbox.com/events/v2\":null:null},FEEDBACK_URL:\"https://apps.mapbox.com/feedback\",REQUIRE_ACCESS_TOKEN:!0,ACCESS_TOKEN:null,MAX_PARALLEL_IMAGE_REQUESTS:16},B={supported:!1,testSupport:function(t){if(N||!I)return;j?U(t):P=t}},N=!1,j=!1;function U(t){var e=t.createTexture();t.bindTexture(t.TEXTURE_2D,e);try{if(t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,I),t.isContextLost())return;B.supported=!0}catch(t){}t.deleteTexture(e),N=!0}self.document&&((I=self.document.createElement(\"img\")).onload=function(){P&&U(P),P=null,j=!0},I.onerror=function(){N=!0,P=null},I.src=\"data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=\");var V=\"01\";var H=function(t,e){this._transformRequestFn=t,this._customAccessToken=e,this._createSkuToken()};function q(t){return 0===t.indexOf(\"mapbox:\")}H.prototype._createSkuToken=function(){var t=function(){for(var t=\"\",e=0;e<10;e++)t+=\"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"[Math.floor(62*Math.random())];return{token:[\"1\",V,t].join(\"\"),tokenExpiresAt:Date.now()+432e5}}();this._skuToken=t.token,this._skuTokenExpiresAt=t.tokenExpiresAt},H.prototype._isSkuTokenExpired=function(){return Date.now()>this._skuTokenExpiresAt},H.prototype.transformRequest=function(t,e){return this._transformRequestFn&&this._transformRequestFn(t,e)||{url:t}},H.prototype.normalizeStyleURL=function(t,e){if(!q(t))return t;var r=X(t);return r.path=\"/styles/v1\"+r.path,this._makeAPIURL(r,this._customAccessToken||e)},H.prototype.normalizeGlyphsURL=function(t,e){if(!q(t))return t;var r=X(t);return r.path=\"/fonts/v1\"+r.path,this._makeAPIURL(r,this._customAccessToken||e)},H.prototype.normalizeSourceURL=function(t,e){if(!q(t))return t;var r=X(t);return r.path=\"/v4/\"+r.authority+\".json\",r.params.push(\"secure\"),this._makeAPIURL(r,this._customAccessToken||e)},H.prototype.normalizeSpriteURL=function(t,e,r,n){var i=X(t);return q(t)?(i.path=\"/styles/v1\"+i.path+\"/sprite\"+e+r,this._makeAPIURL(i,this._customAccessToken||n)):(i.path+=\"\"+e+r,Z(i))},H.prototype.normalizeTileURL=function(t,e){if(this._isSkuTokenExpired()&&this._createSkuToken(),t&&!q(t))return t;var r=X(t),n=R.devicePixelRatio>=2||512===e?\"@2x\":\"\",i=B.supported?\".webp\":\"$1\";r.path=r.path.replace(/(\\.(png|jpg)\\d*)(?=$)/,\"\"+n+i),r.path=r.path.replace(/^.+\\/v4\\//,\"/\"),r.path=\"/v4\"+r.path;var a=this._customAccessToken||function(t){for(var e=0,r=t;e=1&&self.localStorage.setItem(e,JSON.stringify(this.eventData))}catch(t){_(\"Unable to write to LocalStorage\")}},K.prototype.processRequests=function(t){},K.prototype.postEvent=function(t,e,r,n){var i=this;if(F.EVENTS_URL){var a=X(F.EVENTS_URL);a.params.push(\"access_token=\"+(n||F.ACCESS_TOKEN||\"\"));var o={event:this.type,created:new Date(t).toISOString(),sdkIdentifier:\"mapbox-gl-js\",sdkVersion:\"1.10.1\",skuId:V,userId:this.anonId},s=e?u(o,e):o,l={url:Z(a),headers:{\"Content-Type\":\"text/plain\"},body:JSON.stringify([s])};this.pendingRequest=bt(l,(function(t){i.pendingRequest=null,r(t),i.saveEventData(),i.processRequests(n)}))}},K.prototype.queueRequest=function(t,e){this.queue.push(t),this.processRequests(e)};var Q,$,tt=function(t){function e(){t.call(this,\"map.load\"),this.success={},this.skuToken=\"\"}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.postMapLoadEvent=function(t,e,r,n){this.skuToken=r,(F.EVENTS_URL&&n||F.ACCESS_TOKEN&&Array.isArray(t)&&t.some((function(t){return q(t)||Y(t)})))&&this.queueRequest({id:e,timestamp:Date.now()},n)},e.prototype.processRequests=function(t){var e=this;if(!this.pendingRequest&&0!==this.queue.length){var r=this.queue.shift(),n=r.id,i=r.timestamp;n&&this.success[n]||(this.anonId||this.fetchEventData(),d(this.anonId)||(this.anonId=p()),this.postEvent(i,{skuToken:this.skuToken},(function(t){t||n&&(e.success[n]=!0)}),t))}},e}(K),et=new(function(t){function e(e){t.call(this,\"appUserTurnstile\"),this._customAccessToken=e}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.postTurnstileEvent=function(t,e){F.EVENTS_URL&&F.ACCESS_TOKEN&&Array.isArray(t)&&t.some((function(t){return q(t)||Y(t)}))&&this.queueRequest(Date.now(),e)},e.prototype.processRequests=function(t){var e=this;if(!this.pendingRequest&&0!==this.queue.length){this.anonId&&this.eventData.lastSuccess&&this.eventData.tokenU||this.fetchEventData();var r=J(F.ACCESS_TOKEN),n=r?r.u:F.ACCESS_TOKEN,i=n!==this.eventData.tokenU;d(this.anonId)||(this.anonId=p(),i=!0);var a=this.queue.shift();if(this.eventData.lastSuccess){var o=new Date(this.eventData.lastSuccess),s=new Date(a),l=(a-this.eventData.lastSuccess)/864e5;i=i||l>=1||l<-1||o.getDate()!==s.getDate()}else i=!0;if(!i)return this.processRequests();this.postEvent(a,{\"enabled.telemetry\":!1},(function(t){t||(e.eventData.lastSuccess=a,e.eventData.tokenU=n)}),t)}},e}(K)),rt=et.postTurnstileEvent.bind(et),nt=new tt,it=nt.postMapLoadEvent.bind(nt),at=500,ot=50;function st(){self.caches&&!Q&&(Q=self.caches.open(\"mapbox-tiles\"))}function lt(t,e,r){if(st(),Q){var n={status:e.status,statusText:e.statusText,headers:new self.Headers};e.headers.forEach((function(t,e){return n.headers.set(e,t)}));var i=A(e.headers.get(\"Cache-Control\")||\"\");if(!i[\"no-store\"])i[\"max-age\"]&&n.headers.set(\"Expires\",new Date(r+1e3*i[\"max-age\"]).toUTCString()),new Date(n.headers.get(\"Expires\")).getTime()-r<42e4||function(t,e){if(void 0===$)try{new Response(new ReadableStream),$=!0}catch(t){$=!1}$?e(t.body):t.blob().then(e)}(e,(function(e){var r=new self.Response(e,n);st(),Q&&Q.then((function(e){return e.put(ct(t.url),r)})).catch((function(t){return _(t.message)}))}))}}function ct(t){var e=t.indexOf(\"?\");return e<0?t:t.slice(0,e)}function ut(t,e){if(st(),!Q)return e(null);var r=ct(t.url);Q.then((function(t){t.match(r).then((function(n){var i=function(t){if(!t)return!1;var e=new Date(t.headers.get(\"Expires\")||0),r=A(t.headers.get(\"Cache-Control\")||\"\");return e>Date.now()&&!r[\"no-cache\"]}(n);t.delete(r),i&&t.put(r,n.clone()),e(null,n,i)})).catch(e)})).catch(e)}var ft,ht=1/0;function pt(){return null==ft&&(ft=self.OffscreenCanvas&&new self.OffscreenCanvas(1,1).getContext(\"2d\")&&\"function\"==typeof self.createImageBitmap),ft}var dt={Unknown:\"Unknown\",Style:\"Style\",Source:\"Source\",Tile:\"Tile\",Glyphs:\"Glyphs\",SpriteImage:\"SpriteImage\",SpriteJSON:\"SpriteJSON\",Image:\"Image\"};\"function\"==typeof Object.freeze&&Object.freeze(dt);var gt=function(t){function e(e,r,n){401===r&&Y(n)&&(e+=\": you may have provided an invalid Mapbox access token. See https://www.mapbox.com/api-documentation/#access-tokens-and-token-scopes\"),t.call(this,e),this.status=r,this.url=n,this.name=this.constructor.name,this.message=e}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.toString=function(){return this.name+\": \"+this.message+\" (\"+this.status+\"): \"+this.url},e}(Error),mt=k()?function(){return self.worker&&self.worker.referrer}:function(){return(\"blob:\"===self.location.protocol?self.parent:self).location.href};function vt(t,e){var r,n=new self.AbortController,i=new self.Request(t.url,{method:t.method||\"GET\",body:t.body,credentials:t.credentials,headers:t.headers,referrer:mt(),signal:n.signal}),a=!1,o=!1,s=(r=i.url).indexOf(\"sku=\")>0&&Y(r);\"json\"===t.type&&i.headers.set(\"Accept\",\"application/json\");var l=function(r,n,a){if(!o){if(r&&\"SecurityError\"!==r.message&&_(r),n&&a)return c(n);var l=Date.now();self.fetch(i).then((function(r){if(r.ok){var n=s?r.clone():null;return c(r,n,l)}return e(new gt(r.statusText,r.status,t.url))})).catch((function(t){20!==t.code&&e(new Error(t.message))}))}},c=function(r,n,s){(\"arrayBuffer\"===t.type?r.arrayBuffer():\"json\"===t.type?r.json():r.text()).then((function(t){o||(n&&s&<(i,n,s),a=!0,e(null,t,r.headers.get(\"Cache-Control\"),r.headers.get(\"Expires\")))})).catch((function(t){o||e(new Error(t.message))}))};return s?ut(i,l):l(null,null),{cancel:function(){o=!0,a||n.abort()}}}var yt=function(t,e){if(r=t.url,!(/^file:/.test(r)||/^file:/.test(mt())&&!/^\\w+:/.test(r))){if(self.fetch&&self.Request&&self.AbortController&&self.Request.prototype.hasOwnProperty(\"signal\"))return vt(t,e);if(k()&&self.worker&&self.worker.actor){return self.worker.actor.send(\"getResource\",t,e,void 0,!0)}}var r;return function(t,e){var r=new self.XMLHttpRequest;for(var n in r.open(t.method||\"GET\",t.url,!0),\"arrayBuffer\"===t.type&&(r.responseType=\"arraybuffer\"),t.headers)r.setRequestHeader(n,t.headers[n]);return\"json\"===t.type&&(r.responseType=\"text\",r.setRequestHeader(\"Accept\",\"application/json\")),r.withCredentials=\"include\"===t.credentials,r.onerror=function(){e(new Error(r.statusText))},r.onload=function(){if((r.status>=200&&r.status<300||0===r.status)&&null!==r.response){var n=r.response;if(\"json\"===t.type)try{n=JSON.parse(r.response)}catch(t){return e(t)}e(null,n,r.getResponseHeader(\"Cache-Control\"),r.getResponseHeader(\"Expires\"))}else e(new gt(r.statusText,r.status,t.url))},r.send(t.body),{cancel:function(){return r.abort()}}}(t,e)},xt=function(t,e){return yt(u(t,{type:\"arrayBuffer\"}),e)},bt=function(t,e){return yt(u(t,{method:\"POST\"}),e)};var _t,wt;_t=[],wt=0;var Tt=function(t,e){if(B.supported&&(t.headers||(t.headers={}),t.headers.accept=\"image/webp,*/*\"),wt>=F.MAX_PARALLEL_IMAGE_REQUESTS){var r={requestParameters:t,callback:e,cancelled:!1,cancel:function(){this.cancelled=!0}};return _t.push(r),r}wt++;var n=!1,i=function(){if(!n)for(n=!0,wt--;_t.length&&wt0||this._oneTimeListeners&&this._oneTimeListeners[t]&&this._oneTimeListeners[t].length>0||this._eventedParent&&this._eventedParent.listens(t)},Et.prototype.setEventedParent=function(t,e){return this._eventedParent=t,this._eventedParentData=e,this};var Lt={$version:8,$root:{version:{required:!0,type:\"enum\",values:[8]},name:{type:\"string\"},metadata:{type:\"*\"},center:{type:\"array\",value:\"number\"},zoom:{type:\"number\"},bearing:{type:\"number\",default:0,period:360,units:\"degrees\"},pitch:{type:\"number\",default:0,units:\"degrees\"},light:{type:\"light\"},sources:{required:!0,type:\"sources\"},sprite:{type:\"string\"},glyphs:{type:\"string\"},transition:{type:\"transition\"},layers:{required:!0,type:\"array\",value:\"layer\"}},sources:{\"*\":{type:\"source\"}},source:[\"source_vector\",\"source_raster\",\"source_raster_dem\",\"source_geojson\",\"source_video\",\"source_image\"],source_vector:{type:{required:!0,type:\"enum\",values:{vector:{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.051129,180,85.051129]},scheme:{type:\"enum\",values:{xyz:{},tms:{}},default:\"xyz\"},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},attribution:{type:\"string\"},promoteId:{type:\"promoteId\"},\"*\":{type:\"*\"}},source_raster:{type:{required:!0,type:\"enum\",values:{raster:{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},tileSize:{type:\"number\",default:512,units:\"pixels\"},scheme:{type:\"enum\",values:{xyz:{},tms:{}},default:\"xyz\"},attribution:{type:\"string\"},\"*\":{type:\"*\"}},source_raster_dem:{type:{required:!0,type:\"enum\",values:{\"raster-dem\":{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},tileSize:{type:\"number\",default:512,units:\"pixels\"},attribution:{type:\"string\"},encoding:{type:\"enum\",values:{terrarium:{},mapbox:{}},default:\"mapbox\"},\"*\":{type:\"*\"}},source_geojson:{type:{required:!0,type:\"enum\",values:{geojson:{}}},data:{type:\"*\"},maxzoom:{type:\"number\",default:18},attribution:{type:\"string\"},buffer:{type:\"number\",default:128,maximum:512,minimum:0},tolerance:{type:\"number\",default:.375},cluster:{type:\"boolean\",default:!1},clusterRadius:{type:\"number\",default:50,minimum:0},clusterMaxZoom:{type:\"number\"},clusterProperties:{type:\"*\"},lineMetrics:{type:\"boolean\",default:!1},generateId:{type:\"boolean\",default:!1},promoteId:{type:\"promoteId\"}},source_video:{type:{required:!0,type:\"enum\",values:{video:{}}},urls:{required:!0,type:\"array\",value:\"string\"},coordinates:{required:!0,type:\"array\",length:4,value:{type:\"array\",length:2,value:\"number\"}}},source_image:{type:{required:!0,type:\"enum\",values:{image:{}}},url:{required:!0,type:\"string\"},coordinates:{required:!0,type:\"array\",length:4,value:{type:\"array\",length:2,value:\"number\"}}},layer:{id:{type:\"string\",required:!0},type:{type:\"enum\",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},\"fill-extrusion\":{},raster:{},hillshade:{},background:{}},required:!0},metadata:{type:\"*\"},source:{type:\"string\"},\"source-layer\":{type:\"string\"},minzoom:{type:\"number\",minimum:0,maximum:24},maxzoom:{type:\"number\",minimum:0,maximum:24},filter:{type:\"filter\"},layout:{type:\"layout\"},paint:{type:\"paint\"}},layout:[\"layout_fill\",\"layout_line\",\"layout_circle\",\"layout_heatmap\",\"layout_fill-extrusion\",\"layout_symbol\",\"layout_raster\",\"layout_hillshade\",\"layout_background\"],layout_background:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_fill:{\"fill-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_circle:{\"circle-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_heatmap:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},\"layout_fill-extrusion\":{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_line:{\"line-cap\":{type:\"enum\",values:{butt:{},round:{},square:{}},default:\"butt\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-join\":{type:\"enum\",values:{bevel:{},round:{},miter:{}},default:\"miter\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"line-miter-limit\":{type:\"number\",default:2,requires:[{\"line-join\":\"miter\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-round-limit\":{type:\"number\",default:1.05,requires:[{\"line-join\":\"round\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_symbol:{\"symbol-placement\":{type:\"enum\",values:{point:{},line:{},\"line-center\":{}},default:\"point\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-spacing\":{type:\"number\",default:250,minimum:1,units:\"pixels\",requires:[{\"symbol-placement\":\"line\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-avoid-edges\":{type:\"boolean\",default:!1,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"symbol-z-order\":{type:\"enum\",values:{auto:{},\"viewport-y\":{},source:{}},default:\"auto\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-allow-overlap\":{type:\"boolean\",default:!1,requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-ignore-placement\":{type:\"boolean\",default:!1,requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-optional\":{type:\"boolean\",default:!1,requires:[\"icon-image\",\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-rotation-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-size\":{type:\"number\",default:1,minimum:0,units:\"factor of the original icon size\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-text-fit\":{type:\"enum\",values:{none:{},width:{},height:{},both:{}},default:\"none\",requires:[\"icon-image\",\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-text-fit-padding\":{type:\"array\",value:\"number\",length:4,default:[0,0,0,0],units:\"pixels\",requires:[\"icon-image\",\"text-field\",{\"icon-text-fit\":[\"both\",\"width\",\"height\"]}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-image\":{type:\"resolvedImage\",tokens:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-rotate\":{type:\"number\",default:0,period:360,units:\"degrees\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-padding\":{type:\"number\",default:2,minimum:0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-keep-upright\":{type:\"boolean\",default:!1,requires:[\"icon-image\",{\"icon-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-offset\":{type:\"array\",value:\"number\",length:2,default:[0,0],requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-anchor\":{type:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},default:\"center\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotation-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-field\":{type:\"formatted\",default:\"\",tokens:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-font\":{type:\"array\",value:\"string\",default:[\"Open Sans Regular\",\"Arial Unicode MS Regular\"],requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-size\":{type:\"number\",default:16,minimum:0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-max-width\":{type:\"number\",default:10,minimum:0,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-line-height\":{type:\"number\",default:1.2,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-letter-spacing\":{type:\"number\",default:0,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-justify\":{type:\"enum\",values:{auto:{},left:{},center:{},right:{}},default:\"center\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-radial-offset\":{type:\"number\",units:\"ems\",default:0,requires:[\"text-field\"],\"property-type\":\"data-driven\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]}},\"text-variable-anchor\":{type:\"array\",value:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},requires:[\"text-field\",{\"symbol-placement\":[\"point\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-anchor\":{type:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},default:\"center\",requires:[\"text-field\",{\"!\":\"text-variable-anchor\"}],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-max-angle\":{type:\"number\",default:45,units:\"degrees\",requires:[\"text-field\",{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-writing-mode\":{type:\"array\",value:\"enum\",values:{horizontal:{},vertical:{}},requires:[\"text-field\",{\"symbol-placement\":[\"point\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotate\":{type:\"number\",default:0,period:360,units:\"degrees\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-padding\":{type:\"number\",default:2,minimum:0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-keep-upright\":{type:\"boolean\",default:!0,requires:[\"text-field\",{\"text-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-transform\":{type:\"enum\",values:{none:{},uppercase:{},lowercase:{}},default:\"none\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-offset\":{type:\"array\",value:\"number\",units:\"ems\",length:2,default:[0,0],requires:[\"text-field\",{\"!\":\"text-radial-offset\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-allow-overlap\":{type:\"boolean\",default:!1,requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-ignore-placement\":{type:\"boolean\",default:!1,requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-optional\":{type:\"boolean\",default:!1,requires:[\"text-field\",\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_raster:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_hillshade:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},filter:{type:\"array\",value:\"*\"},filter_operator:{type:\"enum\",values:{\"==\":{},\"!=\":{},\">\":{},\">=\":{},\"<\":{},\"<=\":{},in:{},\"!in\":{},all:{},any:{},none:{},has:{},\"!has\":{},within:{}}},geometry_type:{type:\"enum\",values:{Point:{},LineString:{},Polygon:{}}},function:{expression:{type:\"expression\"},stops:{type:\"array\",value:\"function_stop\"},base:{type:\"number\",default:1,minimum:0},property:{type:\"string\",default:\"$zoom\"},type:{type:\"enum\",values:{identity:{},exponential:{},interval:{},categorical:{}},default:\"exponential\"},colorSpace:{type:\"enum\",values:{rgb:{},lab:{},hcl:{}},default:\"rgb\"},default:{type:\"*\",required:!1}},function_stop:{type:\"array\",minimum:0,maximum:24,value:[\"number\",\"color\"],length:2},expression:{type:\"array\",value:\"*\",minimum:1},expression_name:{type:\"enum\",values:{let:{group:\"Variable binding\"},var:{group:\"Variable binding\"},literal:{group:\"Types\"},array:{group:\"Types\"},at:{group:\"Lookup\"},in:{group:\"Lookup\"},\"index-of\":{group:\"Lookup\"},slice:{group:\"Lookup\"},case:{group:\"Decision\"},match:{group:\"Decision\"},coalesce:{group:\"Decision\"},step:{group:\"Ramps, scales, curves\"},interpolate:{group:\"Ramps, scales, curves\"},\"interpolate-hcl\":{group:\"Ramps, scales, curves\"},\"interpolate-lab\":{group:\"Ramps, scales, curves\"},ln2:{group:\"Math\"},pi:{group:\"Math\"},e:{group:\"Math\"},typeof:{group:\"Types\"},string:{group:\"Types\"},number:{group:\"Types\"},boolean:{group:\"Types\"},object:{group:\"Types\"},collator:{group:\"Types\"},format:{group:\"Types\"},image:{group:\"Types\"},\"number-format\":{group:\"Types\"},\"to-string\":{group:\"Types\"},\"to-number\":{group:\"Types\"},\"to-boolean\":{group:\"Types\"},\"to-rgba\":{group:\"Color\"},\"to-color\":{group:\"Types\"},rgb:{group:\"Color\"},rgba:{group:\"Color\"},get:{group:\"Lookup\"},has:{group:\"Lookup\"},length:{group:\"Lookup\"},properties:{group:\"Feature data\"},\"feature-state\":{group:\"Feature data\"},\"geometry-type\":{group:\"Feature data\"},id:{group:\"Feature data\"},zoom:{group:\"Zoom\"},\"heatmap-density\":{group:\"Heatmap\"},\"line-progress\":{group:\"Feature data\"},accumulated:{group:\"Feature data\"},\"+\":{group:\"Math\"},\"*\":{group:\"Math\"},\"-\":{group:\"Math\"},\"/\":{group:\"Math\"},\"%\":{group:\"Math\"},\"^\":{group:\"Math\"},sqrt:{group:\"Math\"},log10:{group:\"Math\"},ln:{group:\"Math\"},log2:{group:\"Math\"},sin:{group:\"Math\"},cos:{group:\"Math\"},tan:{group:\"Math\"},asin:{group:\"Math\"},acos:{group:\"Math\"},atan:{group:\"Math\"},min:{group:\"Math\"},max:{group:\"Math\"},round:{group:\"Math\"},abs:{group:\"Math\"},ceil:{group:\"Math\"},floor:{group:\"Math\"},distance:{group:\"Math\"},\"==\":{group:\"Decision\"},\"!=\":{group:\"Decision\"},\">\":{group:\"Decision\"},\"<\":{group:\"Decision\"},\">=\":{group:\"Decision\"},\"<=\":{group:\"Decision\"},all:{group:\"Decision\"},any:{group:\"Decision\"},\"!\":{group:\"Decision\"},within:{group:\"Decision\"},\"is-supported-script\":{group:\"String\"},upcase:{group:\"String\"},downcase:{group:\"String\"},concat:{group:\"String\"},\"resolved-locale\":{group:\"String\"}}},light:{anchor:{type:\"enum\",default:\"viewport\",values:{map:{},viewport:{}},\"property-type\":\"data-constant\",transition:!1,expression:{interpolated:!1,parameters:[\"zoom\"]}},position:{type:\"array\",default:[1.15,210,30],length:3,value:\"number\",\"property-type\":\"data-constant\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]}},color:{type:\"color\",\"property-type\":\"data-constant\",default:\"#ffffff\",expression:{interpolated:!0,parameters:[\"zoom\"]},transition:!0},intensity:{type:\"number\",\"property-type\":\"data-constant\",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:[\"zoom\"]},transition:!0}},paint:[\"paint_fill\",\"paint_line\",\"paint_circle\",\"paint_heatmap\",\"paint_fill-extrusion\",\"paint_symbol\",\"paint_raster\",\"paint_hillshade\",\"paint_background\"],paint_fill:{\"fill-antialias\":{type:\"boolean\",default:!0,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"fill-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-outline-color\":{type:\"color\",transition:!0,requires:[{\"!\":\"fill-pattern\"},{\"fill-antialias\":!0}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"fill-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"}},\"paint_fill-extrusion\":{\"fill-extrusion-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"fill-extrusion-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"fill-extrusion-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"fill-extrusion-height\":{type:\"number\",default:0,minimum:0,units:\"meters\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-base\":{type:\"number\",default:0,minimum:0,units:\"meters\",transition:!0,requires:[\"fill-extrusion-height\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-vertical-gradient\":{type:\"boolean\",default:!0,transition:!1,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_line:{\"line-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"line-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"line-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-width\":{type:\"number\",default:1,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-gap-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-offset\":{type:\"number\",default:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-dasharray\":{type:\"array\",value:\"number\",minimum:0,transition:!0,units:\"line widths\",requires:[{\"!\":\"line-pattern\"}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"cross-faded\"},\"line-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"line-gradient\":{type:\"color\",transition:!1,requires:[{\"!\":\"line-dasharray\"},{\"!\":\"line-pattern\"},{source:\"geojson\",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:[\"line-progress\"]},\"property-type\":\"color-ramp\"}},paint_circle:{\"circle-radius\":{type:\"number\",default:5,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-blur\":{type:\"number\",default:0,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"circle-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-scale\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{}},default:\"viewport\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-stroke-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"}},paint_heatmap:{\"heatmap-radius\":{type:\"number\",default:30,minimum:1,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-weight\":{type:\"number\",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-intensity\":{type:\"number\",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"heatmap-color\":{type:\"color\",default:[\"interpolate\",[\"linear\"],[\"heatmap-density\"],0,\"rgba(0, 0, 255, 0)\",.1,\"royalblue\",.3,\"cyan\",.5,\"lime\",.7,\"yellow\",1,\"red\"],transition:!1,expression:{interpolated:!0,parameters:[\"heatmap-density\"]},\"property-type\":\"color-ramp\"},\"heatmap-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_symbol:{\"icon-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-color\":{type:\"color\",default:\"rgba(0, 0, 0, 0)\",transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"icon-image\",\"icon-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-color\":{type:\"color\",default:\"#000000\",transition:!0,overridable:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-color\":{type:\"color\",default:\"rgba(0, 0, 0, 0)\",transition:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"text-field\",\"text-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_raster:{\"raster-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-hue-rotate\":{type:\"number\",default:0,period:360,transition:!0,units:\"degrees\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-min\":{type:\"number\",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-max\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-saturation\":{type:\"number\",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-contrast\":{type:\"number\",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-resampling\":{type:\"enum\",values:{linear:{},nearest:{}},default:\"linear\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-fade-duration\":{type:\"number\",default:300,minimum:0,transition:!1,units:\"milliseconds\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_hillshade:{\"hillshade-illumination-direction\":{type:\"number\",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-illumination-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"viewport\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-exaggeration\":{type:\"number\",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-shadow-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-highlight-color\":{type:\"color\",default:\"#FFFFFF\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-accent-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_background:{\"background-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"background-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"background-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"cross-faded\"},\"background-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},transition:{duration:{type:\"number\",default:300,minimum:0,units:\"milliseconds\"},delay:{type:\"number\",default:0,minimum:0,units:\"milliseconds\"}},\"property-type\":{\"data-driven\":{type:\"property-type\"},\"cross-faded\":{type:\"property-type\"},\"cross-faded-data-driven\":{type:\"property-type\"},\"color-ramp\":{type:\"property-type\"},\"data-constant\":{type:\"property-type\"},constant:{type:\"property-type\"}},promoteId:{\"*\":{type:\"string\"}}},Ct=function(t,e,r,n){this.message=(t?t+\": \":\"\")+r,n&&(this.identifier=n),null!=e&&e.__line__&&(this.line=e.__line__)};function Pt(t){var e=t.key,r=t.value;return r?[new Ct(e,r,\"constants have been deprecated as of v8\")]:[]}function It(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];for(var n=0,i=e;n\":\"value\"===t.itemType.kind?\"array\":\"array<\"+e+\">\"}return t.kind}var Zt=[Ft,Bt,Nt,jt,Ut,Gt,Vt,Wt(Ht),Yt];function Jt(t,e){if(\"error\"===e.kind)return null;if(\"array\"===t.kind){if(\"array\"===e.kind&&(0===e.N&&\"value\"===e.itemType.kind||!Jt(t.itemType,e.itemType))&&(\"number\"!=typeof t.N||t.N===e.N))return null}else{if(t.kind===e.kind)return null;if(\"value\"===t.kind)for(var r=0,n=Zt;r255?255:t}function i(t){return t<0?0:t>1?1:t}function a(t){return\"%\"===t[t.length-1]?n(parseFloat(t)/100*255):n(parseInt(t))}function o(t){return\"%\"===t[t.length-1]?i(parseFloat(t)/100):i(parseFloat(t))}function s(t,e,r){return r<0?r+=1:r>1&&(r-=1),6*r<1?t+(e-t)*r*6:2*r<1?e:3*r<2?t+(e-t)*(2/3-r)*6:t}try{e.parseCSSColor=function(t){var e,i=t.replace(/ /g,\"\").toLowerCase();if(i in r)return r[i].slice();if(\"#\"===i[0])return 4===i.length?(e=parseInt(i.substr(1),16))>=0&&e<=4095?[(3840&e)>>4|(3840&e)>>8,240&e|(240&e)>>4,15&e|(15&e)<<4,1]:null:7===i.length&&(e=parseInt(i.substr(1),16))>=0&&e<=16777215?[(16711680&e)>>16,(65280&e)>>8,255&e,1]:null;var l=i.indexOf(\"(\"),c=i.indexOf(\")\");if(-1!==l&&c+1===i.length){var u=i.substr(0,l),f=i.substr(l+1,c-(l+1)).split(\",\"),h=1;switch(u){case\"rgba\":if(4!==f.length)return null;h=o(f.pop());case\"rgb\":return 3!==f.length?null:[a(f[0]),a(f[1]),a(f[2]),h];case\"hsla\":if(4!==f.length)return null;h=o(f.pop());case\"hsl\":if(3!==f.length)return null;var p=(parseFloat(f[0])%360+360)%360/360,d=o(f[1]),g=o(f[2]),m=g<=.5?g*(d+1):g+d-g*d,v=2*g-m;return[n(255*s(v,m,p+1/3)),n(255*s(v,m,p)),n(255*s(v,m,p-1/3)),h];default:return null}}return null}}catch(t){}})).parseCSSColor,te=function(t,e,r,n){void 0===n&&(n=1),this.r=t,this.g=e,this.b=r,this.a=n};te.parse=function(t){if(t){if(t instanceof te)return t;if(\"string\"==typeof t){var e=$t(t);if(e)return new te(e[0]/255*e[3],e[1]/255*e[3],e[2]/255*e[3],e[3])}}},te.prototype.toString=function(){var t=this.toArray(),e=t[0],r=t[1],n=t[2],i=t[3];return\"rgba(\"+Math.round(e)+\",\"+Math.round(r)+\",\"+Math.round(n)+\",\"+i+\")\"},te.prototype.toArray=function(){var t=this.r,e=this.g,r=this.b,n=this.a;return 0===n?[0,0,0,0]:[255*t/n,255*e/n,255*r/n,n]},te.black=new te(0,0,0,1),te.white=new te(1,1,1,1),te.transparent=new te(0,0,0,0),te.red=new te(1,0,0,1);var ee=function(t,e,r){this.sensitivity=t?e?\"variant\":\"case\":e?\"accent\":\"base\",this.locale=r,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:\"search\"})};ee.prototype.compare=function(t,e){return this.collator.compare(t,e)},ee.prototype.resolvedLocale=function(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale};var re=function(t,e,r,n,i){this.text=t,this.image=e,this.scale=r,this.fontStack=n,this.textColor=i},ne=function(t){this.sections=t};ne.fromString=function(t){return new ne([new re(t,null,null,null,null)])},ne.prototype.isEmpty=function(){return 0===this.sections.length||!this.sections.some((function(t){return 0!==t.text.length||t.image&&0!==t.image.name.length}))},ne.factory=function(t){return t instanceof ne?t:ne.fromString(t)},ne.prototype.toString=function(){return 0===this.sections.length?\"\":this.sections.map((function(t){return t.text})).join(\"\")},ne.prototype.serialize=function(){for(var t=[\"format\"],e=0,r=this.sections;e=0&&t<=255&&\"number\"==typeof e&&e>=0&&e<=255&&\"number\"==typeof r&&r>=0&&r<=255?void 0===n||\"number\"==typeof n&&n>=0&&n<=1?null:\"Invalid rgba value [\"+[t,e,r,n].join(\", \")+\"]: 'a' must be between 0 and 1.\":\"Invalid rgba value [\"+(\"number\"==typeof n?[t,e,r,n]:[t,e,r]).join(\", \")+\"]: 'r', 'g', and 'b' must be between 0 and 255.\"}function oe(t){if(null===t)return!0;if(\"string\"==typeof t)return!0;if(\"boolean\"==typeof t)return!0;if(\"number\"==typeof t)return!0;if(t instanceof te)return!0;if(t instanceof ee)return!0;if(t instanceof ne)return!0;if(t instanceof ie)return!0;if(Array.isArray(t)){for(var e=0,r=t;e2){var s=t[1];if(\"string\"!=typeof s||!(s in fe)||\"object\"===s)return e.error('The item type argument of \"array\" must be one of string, number, boolean',1);a=fe[s],n++}else a=Ht;if(t.length>3){if(null!==t[2]&&(\"number\"!=typeof t[2]||t[2]<0||t[2]!==Math.floor(t[2])))return e.error('The length argument to \"array\" must be a positive integer literal',2);o=t[2],n++}r=Wt(a,o)}else r=fe[i];for(var l=[];n1)&&e.push(n)}}return e.concat(this.args.map((function(t){return t.serialize()})))};var pe=function(t){this.type=Gt,this.sections=t};pe.parse=function(t,e){if(t.length<2)return e.error(\"Expected at least one argument.\");var r=t[1];if(!Array.isArray(r)&&\"object\"==typeof r)return e.error(\"First argument must be an image or text section.\");for(var n=[],i=!1,a=1;a<=t.length-1;++a){var o=t[a];if(i&&\"object\"==typeof o&&!Array.isArray(o)){i=!1;var s=null;if(o[\"font-scale\"]&&!(s=e.parse(o[\"font-scale\"],1,Bt)))return null;var l=null;if(o[\"text-font\"]&&!(l=e.parse(o[\"text-font\"],1,Wt(Nt))))return null;var c=null;if(o[\"text-color\"]&&!(c=e.parse(o[\"text-color\"],1,Ut)))return null;var u=n[n.length-1];u.scale=s,u.font=l,u.textColor=c}else{var f=e.parse(t[a],1,Ht);if(!f)return null;var h=f.type.kind;if(\"string\"!==h&&\"value\"!==h&&\"null\"!==h&&\"resolvedImage\"!==h)return e.error(\"Formatted text type must be 'string', 'value', 'image' or 'null'.\");i=!0,n.push({content:f,scale:null,font:null,textColor:null})}}return new pe(n)},pe.prototype.evaluate=function(t){return new ne(this.sections.map((function(e){var r=e.content.evaluate(t);return se(r)===Yt?new re(\"\",r,null,null,null):new re(le(r),null,e.scale?e.scale.evaluate(t):null,e.font?e.font.evaluate(t).join(\",\"):null,e.textColor?e.textColor.evaluate(t):null)})))},pe.prototype.eachChild=function(t){for(var e=0,r=this.sections;e-1),r},de.prototype.eachChild=function(t){t(this.input)},de.prototype.outputDefined=function(){return!1},de.prototype.serialize=function(){return[\"image\",this.input.serialize()]};var ge={\"to-boolean\":jt,\"to-color\":Ut,\"to-number\":Bt,\"to-string\":Nt},me=function(t,e){this.type=t,this.args=e};me.parse=function(t,e){if(t.length<2)return e.error(\"Expected at least one argument.\");var r=t[0];if((\"to-boolean\"===r||\"to-string\"===r)&&2!==t.length)return e.error(\"Expected one argument.\");for(var n=ge[r],i=[],a=1;a4?\"Invalid rbga value \"+JSON.stringify(e)+\": expected an array containing either three or four numeric values.\":ae(e[0],e[1],e[2],e[3])))return new te(e[0]/255,e[1]/255,e[2]/255,e[3])}throw new ue(r||\"Could not parse color from value '\"+(\"string\"==typeof e?e:String(JSON.stringify(e)))+\"'\")}if(\"number\"===this.type.kind){for(var o=null,s=0,l=this.args;s=e[2])&&(!(t[1]<=e[1])&&!(t[3]>=e[3])))}function Te(t,e){var r,n=(180+t[0])/360,i=(r=t[1],(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+r*Math.PI/360)))/360),a=Math.pow(2,e.z);return[Math.round(n*a*8192),Math.round(i*a*8192)]}function ke(t,e,r){return e[1]>t[1]!=r[1]>t[1]&&t[0]<(r[0]-e[0])*(t[1]-e[1])/(r[1]-e[1])+e[0]}function Ae(t,e){for(var r,n,i,a,o,s,l,c=!1,u=0,f=e.length;u0&&f<0||u<0&&f>0}function Ee(t,e,r){for(var n=0,i=r;nr[2]){var i=.5*n,a=t[0]-r[0]>i?-n:r[0]-t[0]>i?n:0;0===a&&(a=t[0]-r[2]>i?-n:r[2]-t[0]>i?n:0),t[0]+=a}_e(e,t)}function ze(t,e,r,n){for(var i=8192*Math.pow(2,n.z),a=[8192*n.x,8192*n.y],o=[],s=0,l=t;s=0)return!1;var r=!0;return t.eachChild((function(t){r&&!Ne(t,e)&&(r=!1)})),r}Re.parse=function(t,e){if(2!==t.length)return e.error(\"'within' expression requires exactly one argument, but found \"+(t.length-1)+\" instead.\");if(oe(t[1])){var r=t[1];if(\"FeatureCollection\"===r.type)for(var n=0;ne))throw new ue(\"Input is not a number.\");o=s-1}return 0}Ue.prototype.parse=function(t,e,r,n,i){return void 0===i&&(i={}),e?this.concat(e,r,n)._parse(t,i):this._parse(t,i)},Ue.prototype._parse=function(t,e){function r(t,e,r){return\"assert\"===r?new he(e,[t]):\"coerce\"===r?new me(e,[t]):t}if(null!==t&&\"string\"!=typeof t&&\"boolean\"!=typeof t&&\"number\"!=typeof t||(t=[\"literal\",t]),Array.isArray(t)){if(0===t.length)return this.error('Expected an array with at least one element. If you wanted a literal array, use [\"literal\", []].');var n=t[0];if(\"string\"!=typeof n)return this.error(\"Expression name must be a string, but found \"+typeof n+' instead. If you wanted a literal array, use [\"literal\", [...]].',0),null;var i=this.registry[n];if(i){var a=i.parse(t,this);if(!a)return null;if(this.expectedType){var o=this.expectedType,s=a.type;if(\"string\"!==o.kind&&\"number\"!==o.kind&&\"boolean\"!==o.kind&&\"object\"!==o.kind&&\"array\"!==o.kind||\"value\"!==s.kind)if(\"color\"!==o.kind&&\"formatted\"!==o.kind&&\"resolvedImage\"!==o.kind||\"value\"!==s.kind&&\"string\"!==s.kind){if(this.checkSubtype(o,s))return null}else a=r(a,o,e.typeAnnotation||\"coerce\");else a=r(a,o,e.typeAnnotation||\"assert\")}if(!(a instanceof ce)&&\"resolvedImage\"!==a.type.kind&&function t(e){if(e instanceof je)return t(e.boundExpression);if(e instanceof xe&&\"error\"===e.name)return!1;if(e instanceof be)return!1;if(e instanceof Re)return!1;var r=e instanceof me||e instanceof he,n=!0;if(e.eachChild((function(e){n=r?n&&t(e):n&&e instanceof ce})),!n)return!1;return Fe(e)&&Ne(e,[\"zoom\",\"heatmap-density\",\"line-progress\",\"accumulated\",\"is-supported-script\"])}(a)){var l=new ye;try{a=new ce(a.type,a.evaluate(l))}catch(t){return this.error(t.message),null}}return a}return this.error('Unknown expression \"'+n+'\". If you wanted a literal array, use [\"literal\", [...]].',0)}return void 0===t?this.error(\"'undefined' value invalid. Use null instead.\"):\"object\"==typeof t?this.error('Bare objects invalid. Use [\"literal\", {...}] instead.'):this.error(\"Expected an array, but found \"+typeof t+\" instead.\")},Ue.prototype.concat=function(t,e,r){var n=\"number\"==typeof t?this.path.concat(t):this.path,i=r?this.scope.concat(r):this.scope;return new Ue(this.registry,n,e||null,i,this.errors)},Ue.prototype.error=function(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];var n=\"\"+this.key+e.map((function(t){return\"[\"+t+\"]\"})).join(\"\");this.errors.push(new Dt(n,t))},Ue.prototype.checkSubtype=function(t,e){var r=Jt(t,e);return r&&this.error(r),r};var He=function(t,e,r){this.type=t,this.input=e,this.labels=[],this.outputs=[];for(var n=0,i=r;n=o)return e.error('Input/output pairs for \"step\" expressions must be arranged with input values in strictly ascending order.',l);var u=e.parse(s,c,i);if(!u)return null;i=i||u.type,n.push([o,u])}return new He(i,r,n)},He.prototype.evaluate=function(t){var e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);var n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);var i=e.length;return n>=e[i-1]?r[i-1].evaluate(t):r[Ve(e,n)].evaluate(t)},He.prototype.eachChild=function(t){t(this.input);for(var e=0,r=this.outputs;e0&&t.push(this.labels[e]),t.push(this.outputs[e].serialize());return t};var Ge=Object.freeze({__proto__:null,number:qe,color:function(t,e,r){return new te(qe(t.r,e.r,r),qe(t.g,e.g,r),qe(t.b,e.b,r),qe(t.a,e.a,r))},array:function(t,e,r){return t.map((function(t,n){return qe(t,e[n],r)}))}}),Ye=6/29,We=3*Ye*Ye,Xe=Math.PI/180,Ze=180/Math.PI;function Je(t){return t>.008856451679035631?Math.pow(t,1/3):t/We+4/29}function Ke(t){return t>Ye?t*t*t:We*(t-4/29)}function Qe(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function $e(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function tr(t){var e=$e(t.r),r=$e(t.g),n=$e(t.b),i=Je((.4124564*e+.3575761*r+.1804375*n)/.95047),a=Je((.2126729*e+.7151522*r+.072175*n)/1);return{l:116*a-16,a:500*(i-a),b:200*(a-Je((.0193339*e+.119192*r+.9503041*n)/1.08883)),alpha:t.a}}function er(t){var e=(t.l+16)/116,r=isNaN(t.a)?e:e+t.a/500,n=isNaN(t.b)?e:e-t.b/200;return e=1*Ke(e),r=.95047*Ke(r),n=1.08883*Ke(n),new te(Qe(3.2404542*r-1.5371385*e-.4985314*n),Qe(-.969266*r+1.8760108*e+.041556*n),Qe(.0556434*r-.2040259*e+1.0572252*n),t.alpha)}function rr(t,e,r){var n=e-t;return t+r*(n>180||n<-180?n-360*Math.round(n/360):n)}var nr={forward:tr,reverse:er,interpolate:function(t,e,r){return{l:qe(t.l,e.l,r),a:qe(t.a,e.a,r),b:qe(t.b,e.b,r),alpha:qe(t.alpha,e.alpha,r)}}},ir={forward:function(t){var e=tr(t),r=e.l,n=e.a,i=e.b,a=Math.atan2(i,n)*Ze;return{h:a<0?a+360:a,c:Math.sqrt(n*n+i*i),l:r,alpha:t.a}},reverse:function(t){var e=t.h*Xe,r=t.c;return er({l:t.l,a:Math.cos(e)*r,b:Math.sin(e)*r,alpha:t.alpha})},interpolate:function(t,e,r){return{h:rr(t.h,e.h,r),c:qe(t.c,e.c,r),l:qe(t.l,e.l,r),alpha:qe(t.alpha,e.alpha,r)}}},ar=Object.freeze({__proto__:null,lab:nr,hcl:ir}),or=function(t,e,r,n,i){this.type=t,this.operator=e,this.interpolation=r,this.input=n,this.labels=[],this.outputs=[];for(var a=0,o=i;a1})))return e.error(\"Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.\",1);n={name:\"cubic-bezier\",controlPoints:s}}if(t.length-1<4)return e.error(\"Expected at least 4 arguments, but found only \"+(t.length-1)+\".\");if((t.length-1)%2!=0)return e.error(\"Expected an even number of arguments.\");if(!(i=e.parse(i,2,Bt)))return null;var l=[],c=null;\"interpolate-hcl\"===r||\"interpolate-lab\"===r?c=Ut:e.expectedType&&\"value\"!==e.expectedType.kind&&(c=e.expectedType);for(var u=0;u=f)return e.error('Input/output pairs for \"interpolate\" expressions must be arranged with input values in strictly ascending order.',p);var g=e.parse(h,d,c);if(!g)return null;c=c||g.type,l.push([f,g])}return\"number\"===c.kind||\"color\"===c.kind||\"array\"===c.kind&&\"number\"===c.itemType.kind&&\"number\"==typeof c.N?new or(c,r,n,i,l):e.error(\"Type \"+Xt(c)+\" is not interpolatable.\")},or.prototype.evaluate=function(t){var e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);var n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);var i=e.length;if(n>=e[i-1])return r[i-1].evaluate(t);var a=Ve(e,n),o=e[a],s=e[a+1],l=or.interpolationFactor(this.interpolation,n,o,s),c=r[a].evaluate(t),u=r[a+1].evaluate(t);return\"interpolate\"===this.operator?Ge[this.type.kind.toLowerCase()](c,u,l):\"interpolate-hcl\"===this.operator?ir.reverse(ir.interpolate(ir.forward(c),ir.forward(u),l)):nr.reverse(nr.interpolate(nr.forward(c),nr.forward(u),l))},or.prototype.eachChild=function(t){t(this.input);for(var e=0,r=this.outputs;e=r.length)throw new ue(\"Array index out of bounds: \"+e+\" > \"+(r.length-1)+\".\");if(e!==Math.floor(e))throw new ue(\"Array index must be an integer, but found \"+e+\" instead.\");return r[e]},ur.prototype.eachChild=function(t){t(this.index),t(this.input)},ur.prototype.outputDefined=function(){return!1},ur.prototype.serialize=function(){return[\"at\",this.index.serialize(),this.input.serialize()]};var fr=function(t,e){this.type=jt,this.needle=t,this.haystack=e};fr.parse=function(t,e){if(3!==t.length)return e.error(\"Expected 2 arguments, but found \"+(t.length-1)+\" instead.\");var r=e.parse(t[1],1,Ht),n=e.parse(t[2],2,Ht);return r&&n?Kt(r.type,[jt,Nt,Bt,Ft,Ht])?new fr(r,n):e.error(\"Expected first argument to be of type boolean, string, number or null, but found \"+Xt(r.type)+\" instead\"):null},fr.prototype.evaluate=function(t){var e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!r)return!1;if(!Qt(e,[\"boolean\",\"string\",\"number\",\"null\"]))throw new ue(\"Expected first argument to be of type boolean, string, number or null, but found \"+Xt(se(e))+\" instead.\");if(!Qt(r,[\"string\",\"array\"]))throw new ue(\"Expected second argument to be of type array or string, but found \"+Xt(se(r))+\" instead.\");return r.indexOf(e)>=0},fr.prototype.eachChild=function(t){t(this.needle),t(this.haystack)},fr.prototype.outputDefined=function(){return!0},fr.prototype.serialize=function(){return[\"in\",this.needle.serialize(),this.haystack.serialize()]};var hr=function(t,e,r){this.type=Bt,this.needle=t,this.haystack=e,this.fromIndex=r};hr.parse=function(t,e){if(t.length<=2||t.length>=5)return e.error(\"Expected 3 or 4 arguments, but found \"+(t.length-1)+\" instead.\");var r=e.parse(t[1],1,Ht),n=e.parse(t[2],2,Ht);if(!r||!n)return null;if(!Kt(r.type,[jt,Nt,Bt,Ft,Ht]))return e.error(\"Expected first argument to be of type boolean, string, number or null, but found \"+Xt(r.type)+\" instead\");if(4===t.length){var i=e.parse(t[3],3,Bt);return i?new hr(r,n,i):null}return new hr(r,n)},hr.prototype.evaluate=function(t){var e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!Qt(e,[\"boolean\",\"string\",\"number\",\"null\"]))throw new ue(\"Expected first argument to be of type boolean, string, number or null, but found \"+Xt(se(e))+\" instead.\");if(!Qt(r,[\"string\",\"array\"]))throw new ue(\"Expected second argument to be of type array or string, but found \"+Xt(se(r))+\" instead.\");if(this.fromIndex){var n=this.fromIndex.evaluate(t);return r.indexOf(e,n)}return r.indexOf(e)},hr.prototype.eachChild=function(t){t(this.needle),t(this.haystack),this.fromIndex&&t(this.fromIndex)},hr.prototype.outputDefined=function(){return!1},hr.prototype.serialize=function(){if(null!=this.fromIndex&&void 0!==this.fromIndex){var t=this.fromIndex.serialize();return[\"index-of\",this.needle.serialize(),this.haystack.serialize(),t]}return[\"index-of\",this.needle.serialize(),this.haystack.serialize()]};var pr=function(t,e,r,n,i,a){this.inputType=t,this.type=e,this.input=r,this.cases=n,this.outputs=i,this.otherwise=a};pr.parse=function(t,e){if(t.length<5)return e.error(\"Expected at least 4 arguments, but found only \"+(t.length-1)+\".\");if(t.length%2!=1)return e.error(\"Expected an even number of arguments.\");var r,n;e.expectedType&&\"value\"!==e.expectedType.kind&&(n=e.expectedType);for(var i={},a=[],o=2;oNumber.MAX_SAFE_INTEGER)return c.error(\"Branch labels must be integers no larger than \"+Number.MAX_SAFE_INTEGER+\".\");if(\"number\"==typeof h&&Math.floor(h)!==h)return c.error(\"Numeric branch labels must be integer values.\");if(r){if(c.checkSubtype(r,se(h)))return null}else r=se(h);if(void 0!==i[String(h)])return c.error(\"Branch labels must be unique.\");i[String(h)]=a.length}var p=e.parse(l,o,n);if(!p)return null;n=n||p.type,a.push(p)}var d=e.parse(t[1],1,Ht);if(!d)return null;var g=e.parse(t[t.length-1],t.length-1,n);return g?\"value\"!==d.type.kind&&e.concat(1).checkSubtype(r,d.type)?null:new pr(r,n,d,i,a,g):null},pr.prototype.evaluate=function(t){var e=this.input.evaluate(t);return(se(e)===this.inputType&&this.outputs[this.cases[e]]||this.otherwise).evaluate(t)},pr.prototype.eachChild=function(t){t(this.input),this.outputs.forEach(t),t(this.otherwise)},pr.prototype.outputDefined=function(){return this.outputs.every((function(t){return t.outputDefined()}))&&this.otherwise.outputDefined()},pr.prototype.serialize=function(){for(var t=this,e=[\"match\",this.input.serialize()],r=[],n={},i=0,a=Object.keys(this.cases).sort();i=5)return e.error(\"Expected 3 or 4 arguments, but found \"+(t.length-1)+\" instead.\");var r=e.parse(t[1],1,Ht),n=e.parse(t[2],2,Bt);if(!r||!n)return null;if(!Kt(r.type,[Wt(Ht),Nt,Ht]))return e.error(\"Expected first argument to be of type array or string, but found \"+Xt(r.type)+\" instead\");if(4===t.length){var i=e.parse(t[3],3,Bt);return i?new gr(r.type,r,n,i):null}return new gr(r.type,r,n)},gr.prototype.evaluate=function(t){var e=this.input.evaluate(t),r=this.beginIndex.evaluate(t);if(!Qt(e,[\"string\",\"array\"]))throw new ue(\"Expected first argument to be of type array or string, but found \"+Xt(se(e))+\" instead.\");if(this.endIndex){var n=this.endIndex.evaluate(t);return e.slice(r,n)}return e.slice(r)},gr.prototype.eachChild=function(t){t(this.input),t(this.beginIndex),this.endIndex&&t(this.endIndex)},gr.prototype.outputDefined=function(){return!1},gr.prototype.serialize=function(){if(null!=this.endIndex&&void 0!==this.endIndex){var t=this.endIndex.serialize();return[\"slice\",this.input.serialize(),this.beginIndex.serialize(),t]}return[\"slice\",this.input.serialize(),this.beginIndex.serialize()]};var xr=yr(\"==\",(function(t,e,r){return e===r}),vr),br=yr(\"!=\",(function(t,e,r){return e!==r}),(function(t,e,r,n){return!vr(0,e,r,n)})),_r=yr(\"<\",(function(t,e,r){return e\",(function(t,e,r){return e>r}),(function(t,e,r,n){return n.compare(e,r)>0})),Tr=yr(\"<=\",(function(t,e,r){return e<=r}),(function(t,e,r,n){return n.compare(e,r)<=0})),kr=yr(\">=\",(function(t,e,r){return e>=r}),(function(t,e,r,n){return n.compare(e,r)>=0})),Ar=function(t,e,r,n,i){this.type=Nt,this.number=t,this.locale=e,this.currency=r,this.minFractionDigits=n,this.maxFractionDigits=i};Ar.parse=function(t,e){if(3!==t.length)return e.error(\"Expected two arguments.\");var r=e.parse(t[1],1,Bt);if(!r)return null;var n=t[2];if(\"object\"!=typeof n||Array.isArray(n))return e.error(\"NumberFormat options argument must be an object.\");var i=null;if(n.locale&&!(i=e.parse(n.locale,1,Nt)))return null;var a=null;if(n.currency&&!(a=e.parse(n.currency,1,Nt)))return null;var o=null;if(n[\"min-fraction-digits\"]&&!(o=e.parse(n[\"min-fraction-digits\"],1,Bt)))return null;var s=null;return n[\"max-fraction-digits\"]&&!(s=e.parse(n[\"max-fraction-digits\"],1,Bt))?null:new Ar(r,i,a,o,s)},Ar.prototype.evaluate=function(t){return new Intl.NumberFormat(this.locale?this.locale.evaluate(t):[],{style:this.currency?\"currency\":\"decimal\",currency:this.currency?this.currency.evaluate(t):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(t):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(t):void 0}).format(this.number.evaluate(t))},Ar.prototype.eachChild=function(t){t(this.number),this.locale&&t(this.locale),this.currency&&t(this.currency),this.minFractionDigits&&t(this.minFractionDigits),this.maxFractionDigits&&t(this.maxFractionDigits)},Ar.prototype.outputDefined=function(){return!1},Ar.prototype.serialize=function(){var t={};return this.locale&&(t.locale=this.locale.serialize()),this.currency&&(t.currency=this.currency.serialize()),this.minFractionDigits&&(t[\"min-fraction-digits\"]=this.minFractionDigits.serialize()),this.maxFractionDigits&&(t[\"max-fraction-digits\"]=this.maxFractionDigits.serialize()),[\"number-format\",this.number.serialize(),t]};var Mr=function(t){this.type=Bt,this.input=t};Mr.parse=function(t,e){if(2!==t.length)return e.error(\"Expected 1 argument, but found \"+(t.length-1)+\" instead.\");var r=e.parse(t[1],1);return r?\"array\"!==r.type.kind&&\"string\"!==r.type.kind&&\"value\"!==r.type.kind?e.error(\"Expected argument of type string or array, but found \"+Xt(r.type)+\" instead.\"):new Mr(r):null},Mr.prototype.evaluate=function(t){var e=this.input.evaluate(t);if(\"string\"==typeof e)return e.length;if(Array.isArray(e))return e.length;throw new ue(\"Expected value to be of type string or array, but found \"+Xt(se(e))+\" instead.\")},Mr.prototype.eachChild=function(t){t(this.input)},Mr.prototype.outputDefined=function(){return!1},Mr.prototype.serialize=function(){var t=[\"length\"];return this.eachChild((function(e){t.push(e.serialize())})),t};var Sr={\"==\":xr,\"!=\":br,\">\":wr,\"<\":_r,\">=\":kr,\"<=\":Tr,array:he,at:ur,boolean:he,case:dr,coalesce:lr,collator:be,format:pe,image:de,in:fr,\"index-of\":hr,interpolate:or,\"interpolate-hcl\":or,\"interpolate-lab\":or,length:Mr,let:cr,literal:ce,match:pr,number:he,\"number-format\":Ar,object:he,slice:gr,step:He,string:he,\"to-boolean\":me,\"to-color\":me,\"to-number\":me,\"to-string\":me,var:je,within:Re};function Er(t,e){var r=e[0],n=e[1],i=e[2],a=e[3];r=r.evaluate(t),n=n.evaluate(t),i=i.evaluate(t);var o=a?a.evaluate(t):1,s=ae(r,n,i,o);if(s)throw new ue(s);return new te(r/255*o,n/255*o,i/255*o,o)}function Lr(t,e){return t in e}function Cr(t,e){var r=e[t];return void 0===r?null:r}function Pr(t){return{type:t}}function Ir(t){return{result:\"success\",value:t}}function Or(t){return{result:\"error\",value:t}}function zr(t){return\"data-driven\"===t[\"property-type\"]||\"cross-faded-data-driven\"===t[\"property-type\"]}function Dr(t){return!!t.expression&&t.expression.parameters.indexOf(\"zoom\")>-1}function Rr(t){return!!t.expression&&t.expression.interpolated}function Fr(t){return t instanceof Number?\"number\":t instanceof String?\"string\":t instanceof Boolean?\"boolean\":Array.isArray(t)?\"array\":null===t?\"null\":typeof t}function Br(t){return\"object\"==typeof t&&null!==t&&!Array.isArray(t)}function Nr(t){return t}function jr(t,e,r){return void 0!==t?t:void 0!==e?e:void 0!==r?r:void 0}function Ur(t,e,r,n,i){return jr(typeof r===i?n[r]:void 0,t.default,e.default)}function Vr(t,e,r){if(\"number\"!==Fr(r))return jr(t.default,e.default);var n=t.stops.length;if(1===n)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[n-1][0])return t.stops[n-1][1];var i=Ve(t.stops.map((function(t){return t[0]})),r);return t.stops[i][1]}function Hr(t,e,r){var n=void 0!==t.base?t.base:1;if(\"number\"!==Fr(r))return jr(t.default,e.default);var i=t.stops.length;if(1===i)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[i-1][0])return t.stops[i-1][1];var a=Ve(t.stops.map((function(t){return t[0]})),r),o=function(t,e,r,n){var i=n-r,a=t-r;return 0===i?0:1===e?a/i:(Math.pow(e,a)-1)/(Math.pow(e,i)-1)}(r,n,t.stops[a][0],t.stops[a+1][0]),s=t.stops[a][1],l=t.stops[a+1][1],c=Ge[e.type]||Nr;if(t.colorSpace&&\"rgb\"!==t.colorSpace){var u=ar[t.colorSpace];c=function(t,e){return u.reverse(u.interpolate(u.forward(t),u.forward(e),o))}}return\"function\"==typeof s.evaluate?{evaluate:function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var r=s.evaluate.apply(void 0,t),n=l.evaluate.apply(void 0,t);if(void 0!==r&&void 0!==n)return c(r,n,o)}}:c(s,l,o)}function qr(t,e,r){return\"color\"===e.type?r=te.parse(r):\"formatted\"===e.type?r=ne.fromString(r.toString()):\"resolvedImage\"===e.type?r=ie.fromString(r.toString()):Fr(r)===e.type||\"enum\"===e.type&&e.values[r]||(r=void 0),jr(r,t.default,e.default)}xe.register(Sr,{error:[{kind:\"error\"},[Nt],function(t,e){var r=e[0];throw new ue(r.evaluate(t))}],typeof:[Nt,[Ht],function(t,e){return Xt(se(e[0].evaluate(t)))}],\"to-rgba\":[Wt(Bt,4),[Ut],function(t,e){return e[0].evaluate(t).toArray()}],rgb:[Ut,[Bt,Bt,Bt],Er],rgba:[Ut,[Bt,Bt,Bt,Bt],Er],has:{type:jt,overloads:[[[Nt],function(t,e){return Lr(e[0].evaluate(t),t.properties())}],[[Nt,Vt],function(t,e){var r=e[0],n=e[1];return Lr(r.evaluate(t),n.evaluate(t))}]]},get:{type:Ht,overloads:[[[Nt],function(t,e){return Cr(e[0].evaluate(t),t.properties())}],[[Nt,Vt],function(t,e){var r=e[0],n=e[1];return Cr(r.evaluate(t),n.evaluate(t))}]]},\"feature-state\":[Ht,[Nt],function(t,e){return Cr(e[0].evaluate(t),t.featureState||{})}],properties:[Vt,[],function(t){return t.properties()}],\"geometry-type\":[Nt,[],function(t){return t.geometryType()}],id:[Ht,[],function(t){return t.id()}],zoom:[Bt,[],function(t){return t.globals.zoom}],\"heatmap-density\":[Bt,[],function(t){return t.globals.heatmapDensity||0}],\"line-progress\":[Bt,[],function(t){return t.globals.lineProgress||0}],accumulated:[Ht,[],function(t){return void 0===t.globals.accumulated?null:t.globals.accumulated}],\"+\":[Bt,Pr(Bt),function(t,e){for(var r=0,n=0,i=e;n\":[jt,[Nt,Ht],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i>a}],\"filter-id->\":[jt,[Ht],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n>i}],\"filter-<=\":[jt,[Nt,Ht],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i<=a}],\"filter-id-<=\":[jt,[Ht],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n<=i}],\"filter->=\":[jt,[Nt,Ht],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i>=a}],\"filter-id->=\":[jt,[Ht],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n>=i}],\"filter-has\":[jt,[Ht],function(t,e){return e[0].value in t.properties()}],\"filter-has-id\":[jt,[],function(t){return null!==t.id()&&void 0!==t.id()}],\"filter-type-in\":[jt,[Wt(Nt)],function(t,e){return e[0].value.indexOf(t.geometryType())>=0}],\"filter-id-in\":[jt,[Wt(Ht)],function(t,e){return e[0].value.indexOf(t.id())>=0}],\"filter-in-small\":[jt,[Nt,Wt(Ht)],function(t,e){var r=e[0];return e[1].value.indexOf(t.properties()[r.value])>=0}],\"filter-in-large\":[jt,[Nt,Wt(Ht)],function(t,e){var r=e[0],n=e[1];return function(t,e,r,n){for(;r<=n;){var i=r+n>>1;if(e[i]===t)return!0;e[i]>t?n=i-1:r=i+1}return!1}(t.properties()[r.value],n.value,0,n.value.length-1)}],all:{type:jt,overloads:[[[jt,jt],function(t,e){var r=e[0],n=e[1];return r.evaluate(t)&&n.evaluate(t)}],[Pr(jt),function(t,e){for(var r=0,n=e;r0&&\"string\"==typeof t[0]&&t[0]in Sr}function Wr(t,e){var r=new Ue(Sr,[],e?function(t){var e={color:Ut,string:Nt,number:Bt,enum:Nt,boolean:jt,formatted:Gt,resolvedImage:Yt};if(\"array\"===t.type)return Wt(e[t.value]||Ht,t.length);return e[t.type]}(e):void 0),n=r.parse(t,void 0,void 0,void 0,e&&\"string\"===e.type?{typeAnnotation:\"coerce\"}:void 0);return n?Ir(new Gr(n,e)):Or(r.errors)}Gr.prototype.evaluateWithoutErrorHandling=function(t,e,r,n,i,a){return this._evaluator.globals=t,this._evaluator.feature=e,this._evaluator.featureState=r,this._evaluator.canonical=n,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=a,this.expression.evaluate(this._evaluator)},Gr.prototype.evaluate=function(t,e,r,n,i,a){this._evaluator.globals=t,this._evaluator.feature=e||null,this._evaluator.featureState=r||null,this._evaluator.canonical=n,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=a||null;try{var o=this.expression.evaluate(this._evaluator);if(null==o||\"number\"==typeof o&&o!=o)return this._defaultValue;if(this._enumValues&&!(o in this._enumValues))throw new ue(\"Expected value to be one of \"+Object.keys(this._enumValues).map((function(t){return JSON.stringify(t)})).join(\", \")+\", but found \"+JSON.stringify(o)+\" instead.\");return o}catch(t){return this._warningHistory[t.message]||(this._warningHistory[t.message]=!0,\"undefined\"!=typeof console&&console.warn(t.message)),this._defaultValue}};var Xr=function(t,e){this.kind=t,this._styleExpression=e,this.isStateDependent=\"constant\"!==t&&!Be(e.expression)};Xr.prototype.evaluateWithoutErrorHandling=function(t,e,r,n,i,a){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r,n,i,a)},Xr.prototype.evaluate=function(t,e,r,n,i,a){return this._styleExpression.evaluate(t,e,r,n,i,a)};var Zr=function(t,e,r,n){this.kind=t,this.zoomStops=r,this._styleExpression=e,this.isStateDependent=\"camera\"!==t&&!Be(e.expression),this.interpolationType=n};function Jr(t,e){if(\"error\"===(t=Wr(t,e)).result)return t;var r=t.value.expression,n=Fe(r);if(!n&&!zr(e))return Or([new Dt(\"\",\"data expressions not supported\")]);var i=Ne(r,[\"zoom\"]);if(!i&&!Dr(e))return Or([new Dt(\"\",\"zoom expressions not supported\")]);var a=function t(e){var r=null;if(e instanceof cr)r=t(e.result);else if(e instanceof lr)for(var n=0,i=e.args;nn.maximum?[new Ct(e,r,r+\" is greater than the maximum value \"+n.maximum)]:[]}function en(t){var e,r,n,i=t.valueSpec,a=Ot(t.value.type),o={},s=\"categorical\"!==a&&void 0===t.value.property,l=!s,c=\"array\"===Fr(t.value.stops)&&\"array\"===Fr(t.value.stops[0])&&\"object\"===Fr(t.value.stops[0][0]),u=Qr({key:t.key,value:t.value,valueSpec:t.styleSpec.function,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{stops:function(t){if(\"identity\"===a)return[new Ct(t.key,t.value,'identity function may not have a \"stops\" property')];var e=[],r=t.value;e=e.concat($r({key:t.key,value:r,valueSpec:t.valueSpec,style:t.style,styleSpec:t.styleSpec,arrayElementValidator:f})),\"array\"===Fr(r)&&0===r.length&&e.push(new Ct(t.key,r,\"array must have at least one stop\"));return e},default:function(t){return kn({key:t.key,value:t.value,valueSpec:i,style:t.style,styleSpec:t.styleSpec})}}});return\"identity\"===a&&s&&u.push(new Ct(t.key,t.value,'missing required property \"property\"')),\"identity\"===a||t.value.stops||u.push(new Ct(t.key,t.value,'missing required property \"stops\"')),\"exponential\"===a&&t.valueSpec.expression&&!Rr(t.valueSpec)&&u.push(new Ct(t.key,t.value,\"exponential functions not supported\")),t.styleSpec.$version>=8&&(l&&!zr(t.valueSpec)?u.push(new Ct(t.key,t.value,\"property functions not supported\")):s&&!Dr(t.valueSpec)&&u.push(new Ct(t.key,t.value,\"zoom functions not supported\"))),\"categorical\"!==a&&!c||void 0!==t.value.property||u.push(new Ct(t.key,t.value,'\"property\" property is required')),u;function f(t){var e=[],a=t.value,s=t.key;if(\"array\"!==Fr(a))return[new Ct(s,a,\"array expected, \"+Fr(a)+\" found\")];if(2!==a.length)return[new Ct(s,a,\"array length 2 expected, length \"+a.length+\" found\")];if(c){if(\"object\"!==Fr(a[0]))return[new Ct(s,a,\"object expected, \"+Fr(a[0])+\" found\")];if(void 0===a[0].zoom)return[new Ct(s,a,\"object stop key must have zoom\")];if(void 0===a[0].value)return[new Ct(s,a,\"object stop key must have value\")];if(n&&n>Ot(a[0].zoom))return[new Ct(s,a[0].zoom,\"stop zoom values must appear in ascending order\")];Ot(a[0].zoom)!==n&&(n=Ot(a[0].zoom),r=void 0,o={}),e=e.concat(Qr({key:s+\"[0]\",value:a[0],valueSpec:{zoom:{}},style:t.style,styleSpec:t.styleSpec,objectElementValidators:{zoom:tn,value:h}}))}else e=e.concat(h({key:s+\"[0]\",value:a[0],valueSpec:{},style:t.style,styleSpec:t.styleSpec},a));return Yr(zt(a[1]))?e.concat([new Ct(s+\"[1]\",a[1],\"expressions are not allowed in function stops.\")]):e.concat(kn({key:s+\"[1]\",value:a[1],valueSpec:i,style:t.style,styleSpec:t.styleSpec}))}function h(t,n){var s=Fr(t.value),l=Ot(t.value),c=null!==t.value?t.value:n;if(e){if(s!==e)return[new Ct(t.key,c,s+\" stop domain type must match previous stop domain type \"+e)]}else e=s;if(\"number\"!==s&&\"string\"!==s&&\"boolean\"!==s)return[new Ct(t.key,c,\"stop domain value must be a number, string, or boolean\")];if(\"number\"!==s&&\"categorical\"!==a){var u=\"number expected, \"+s+\" found\";return zr(i)&&void 0===a&&(u+='\\nIf you intended to use a categorical function, specify `\"type\": \"categorical\"`.'),[new Ct(t.key,c,u)]}return\"categorical\"!==a||\"number\"!==s||isFinite(l)&&Math.floor(l)===l?\"categorical\"!==a&&\"number\"===s&&void 0!==r&&l=2&&\"$id\"!==t[1]&&\"$type\"!==t[1];case\"in\":return t.length>=3&&(\"string\"!=typeof t[1]||Array.isArray(t[2]));case\"!in\":case\"!has\":case\"none\":return!1;case\"==\":case\"!=\":case\">\":case\">=\":case\"<\":case\"<=\":return 3!==t.length||Array.isArray(t[1])||Array.isArray(t[2]);case\"any\":case\"all\":for(var e=0,r=t.slice(1);ee?1:0}function cn(t){if(!t)return!0;var e,r=t[0];return t.length<=1?\"any\"!==r:\"==\"===r?un(t[1],t[2],\"==\"):\"!=\"===r?pn(un(t[1],t[2],\"==\")):\"<\"===r||\">\"===r||\"<=\"===r||\">=\"===r?un(t[1],t[2],r):\"any\"===r?(e=t.slice(1),[\"any\"].concat(e.map(cn))):\"all\"===r?[\"all\"].concat(t.slice(1).map(cn)):\"none\"===r?[\"all\"].concat(t.slice(1).map(cn).map(pn)):\"in\"===r?fn(t[1],t.slice(2)):\"!in\"===r?pn(fn(t[1],t.slice(2))):\"has\"===r?hn(t[1]):\"!has\"===r?pn(hn(t[1])):\"within\"!==r||t}function un(t,e,r){switch(t){case\"$type\":return[\"filter-type-\"+r,e];case\"$id\":return[\"filter-id-\"+r,e];default:return[\"filter-\"+r,t,e]}}function fn(t,e){if(0===e.length)return!1;switch(t){case\"$type\":return[\"filter-type-in\",[\"literal\",e]];case\"$id\":return[\"filter-id-in\",[\"literal\",e]];default:return e.length>200&&!e.some((function(t){return typeof t!=typeof e[0]}))?[\"filter-in-large\",t,[\"literal\",e.sort(ln)]]:[\"filter-in-small\",t,[\"literal\",e]]}}function hn(t){switch(t){case\"$type\":return!0;case\"$id\":return[\"filter-has-id\"];default:return[\"filter-has\",t]}}function pn(t){return[\"!\",t]}function dn(t){return an(zt(t.value))?rn(It({},t,{expressionContext:\"filter\",valueSpec:{value:\"boolean\"}})):function t(e){var r=e.value,n=e.key;if(\"array\"!==Fr(r))return[new Ct(n,r,\"array expected, \"+Fr(r)+\" found\")];var i,a=e.styleSpec,o=[];if(r.length<1)return[new Ct(n,r,\"filter array must have at least 1 element\")];switch(o=o.concat(nn({key:n+\"[0]\",value:r[0],valueSpec:a.filter_operator,style:e.style,styleSpec:e.styleSpec})),Ot(r[0])){case\"<\":case\"<=\":case\">\":case\">=\":r.length>=2&&\"$type\"===Ot(r[1])&&o.push(new Ct(n,r,'\"$type\" cannot be use with operator \"'+r[0]+'\"'));case\"==\":case\"!=\":3!==r.length&&o.push(new Ct(n,r,'filter array for operator \"'+r[0]+'\" must have 3 elements'));case\"in\":case\"!in\":r.length>=2&&\"string\"!==(i=Fr(r[1]))&&o.push(new Ct(n+\"[1]\",r[1],\"string expected, \"+i+\" found\"));for(var s=2;s=u[p+0]&&n>=u[p+1])?(o[h]=!0,a.push(c[h])):o[h]=!1}}},Dn.prototype._forEachCell=function(t,e,r,n,i,a,o,s){for(var l=this._convertToCellCoord(t),c=this._convertToCellCoord(e),u=this._convertToCellCoord(r),f=this._convertToCellCoord(n),h=l;h<=u;h++)for(var p=c;p<=f;p++){var d=this.d*p+h;if((!s||s(this._convertFromCellCoord(h),this._convertFromCellCoord(p),this._convertFromCellCoord(h+1),this._convertFromCellCoord(p+1)))&&i.call(this,t,e,r,n,d,a,o,s))return}},Dn.prototype._convertFromCellCoord=function(t){return(t-this.padding)/this.scale},Dn.prototype._convertToCellCoord=function(t){return Math.max(0,Math.min(this.d-1,Math.floor(t*this.scale)+this.padding))},Dn.prototype.toArrayBuffer=function(){if(this.arrayBuffer)return this.arrayBuffer;for(var t=this.cells,e=3+this.cells.length+1+1,r=0,n=0;n=0)){var f=t[u];c[u]=Bn[l].shallow.indexOf(u)>=0?f:Hn(f,e)}t instanceof Error&&(c.message=t.message)}if(c.$name)throw new Error(\"$name property is reserved for worker serialization logic.\");return\"Object\"!==l&&(c.$name=l),c}throw new Error(\"can't serialize object of type \"+typeof t)}function qn(t){if(null==t||\"boolean\"==typeof t||\"number\"==typeof t||\"string\"==typeof t||t instanceof Boolean||t instanceof Number||t instanceof String||t instanceof Date||t instanceof RegExp||Un(t)||Vn(t)||ArrayBuffer.isView(t)||t instanceof Rn)return t;if(Array.isArray(t))return t.map(qn);if(\"object\"==typeof t){var e=t.$name||\"Object\",r=Bn[e].klass;if(!r)throw new Error(\"can't deserialize unregistered class \"+e);if(r.deserialize)return r.deserialize(t);for(var n=Object.create(r.prototype),i=0,a=Object.keys(t);i=0?s:qn(s)}}return n}throw new Error(\"can't deserialize object of type \"+typeof t)}var Gn=function(){this.first=!0};Gn.prototype.update=function(t,e){var r=Math.floor(t);return this.first?(this.first=!1,this.lastIntegerZoom=r,this.lastIntegerZoomTime=0,this.lastZoom=t,this.lastFloorZoom=r,!0):(this.lastFloorZoom>r?(this.lastIntegerZoom=r+1,this.lastIntegerZoomTime=e):this.lastFloorZoom=128&&t<=255},Arabic:function(t){return t>=1536&&t<=1791},\"Arabic Supplement\":function(t){return t>=1872&&t<=1919},\"Arabic Extended-A\":function(t){return t>=2208&&t<=2303},\"Hangul Jamo\":function(t){return t>=4352&&t<=4607},\"Unified Canadian Aboriginal Syllabics\":function(t){return t>=5120&&t<=5759},Khmer:function(t){return t>=6016&&t<=6143},\"Unified Canadian Aboriginal Syllabics Extended\":function(t){return t>=6320&&t<=6399},\"General Punctuation\":function(t){return t>=8192&&t<=8303},\"Letterlike Symbols\":function(t){return t>=8448&&t<=8527},\"Number Forms\":function(t){return t>=8528&&t<=8591},\"Miscellaneous Technical\":function(t){return t>=8960&&t<=9215},\"Control Pictures\":function(t){return t>=9216&&t<=9279},\"Optical Character Recognition\":function(t){return t>=9280&&t<=9311},\"Enclosed Alphanumerics\":function(t){return t>=9312&&t<=9471},\"Geometric Shapes\":function(t){return t>=9632&&t<=9727},\"Miscellaneous Symbols\":function(t){return t>=9728&&t<=9983},\"Miscellaneous Symbols and Arrows\":function(t){return t>=11008&&t<=11263},\"CJK Radicals Supplement\":function(t){return t>=11904&&t<=12031},\"Kangxi Radicals\":function(t){return t>=12032&&t<=12255},\"Ideographic Description Characters\":function(t){return t>=12272&&t<=12287},\"CJK Symbols and Punctuation\":function(t){return t>=12288&&t<=12351},Hiragana:function(t){return t>=12352&&t<=12447},Katakana:function(t){return t>=12448&&t<=12543},Bopomofo:function(t){return t>=12544&&t<=12591},\"Hangul Compatibility Jamo\":function(t){return t>=12592&&t<=12687},Kanbun:function(t){return t>=12688&&t<=12703},\"Bopomofo Extended\":function(t){return t>=12704&&t<=12735},\"CJK Strokes\":function(t){return t>=12736&&t<=12783},\"Katakana Phonetic Extensions\":function(t){return t>=12784&&t<=12799},\"Enclosed CJK Letters and Months\":function(t){return t>=12800&&t<=13055},\"CJK Compatibility\":function(t){return t>=13056&&t<=13311},\"CJK Unified Ideographs Extension A\":function(t){return t>=13312&&t<=19903},\"Yijing Hexagram Symbols\":function(t){return t>=19904&&t<=19967},\"CJK Unified Ideographs\":function(t){return t>=19968&&t<=40959},\"Yi Syllables\":function(t){return t>=40960&&t<=42127},\"Yi Radicals\":function(t){return t>=42128&&t<=42191},\"Hangul Jamo Extended-A\":function(t){return t>=43360&&t<=43391},\"Hangul Syllables\":function(t){return t>=44032&&t<=55215},\"Hangul Jamo Extended-B\":function(t){return t>=55216&&t<=55295},\"Private Use Area\":function(t){return t>=57344&&t<=63743},\"CJK Compatibility Ideographs\":function(t){return t>=63744&&t<=64255},\"Arabic Presentation Forms-A\":function(t){return t>=64336&&t<=65023},\"Vertical Forms\":function(t){return t>=65040&&t<=65055},\"CJK Compatibility Forms\":function(t){return t>=65072&&t<=65103},\"Small Form Variants\":function(t){return t>=65104&&t<=65135},\"Arabic Presentation Forms-B\":function(t){return t>=65136&&t<=65279},\"Halfwidth and Fullwidth Forms\":function(t){return t>=65280&&t<=65519}};function Wn(t){for(var e=0,r=t;e=65097&&t<=65103)||(!!Yn[\"CJK Compatibility Ideographs\"](t)||(!!Yn[\"CJK Compatibility\"](t)||(!!Yn[\"CJK Radicals Supplement\"](t)||(!!Yn[\"CJK Strokes\"](t)||(!(!Yn[\"CJK Symbols and Punctuation\"](t)||t>=12296&&t<=12305||t>=12308&&t<=12319||12336===t)||(!!Yn[\"CJK Unified Ideographs Extension A\"](t)||(!!Yn[\"CJK Unified Ideographs\"](t)||(!!Yn[\"Enclosed CJK Letters and Months\"](t)||(!!Yn[\"Hangul Compatibility Jamo\"](t)||(!!Yn[\"Hangul Jamo Extended-A\"](t)||(!!Yn[\"Hangul Jamo Extended-B\"](t)||(!!Yn[\"Hangul Jamo\"](t)||(!!Yn[\"Hangul Syllables\"](t)||(!!Yn.Hiragana(t)||(!!Yn[\"Ideographic Description Characters\"](t)||(!!Yn.Kanbun(t)||(!!Yn[\"Kangxi Radicals\"](t)||(!!Yn[\"Katakana Phonetic Extensions\"](t)||(!(!Yn.Katakana(t)||12540===t)||(!(!Yn[\"Halfwidth and Fullwidth Forms\"](t)||65288===t||65289===t||65293===t||t>=65306&&t<=65310||65339===t||65341===t||65343===t||t>=65371&&t<=65503||65507===t||t>=65512&&t<=65519)||(!(!Yn[\"Small Form Variants\"](t)||t>=65112&&t<=65118||t>=65123&&t<=65126)||(!!Yn[\"Unified Canadian Aboriginal Syllabics\"](t)||(!!Yn[\"Unified Canadian Aboriginal Syllabics Extended\"](t)||(!!Yn[\"Vertical Forms\"](t)||(!!Yn[\"Yijing Hexagram Symbols\"](t)||(!!Yn[\"Yi Syllables\"](t)||!!Yn[\"Yi Radicals\"](t))))))))))))))))))))))))))))))}function Jn(t){return!(Zn(t)||function(t){return!(!Yn[\"Latin-1 Supplement\"](t)||167!==t&&169!==t&&174!==t&&177!==t&&188!==t&&189!==t&&190!==t&&215!==t&&247!==t)||(!(!Yn[\"General Punctuation\"](t)||8214!==t&&8224!==t&&8225!==t&&8240!==t&&8241!==t&&8251!==t&&8252!==t&&8258!==t&&8263!==t&&8264!==t&&8265!==t&&8273!==t)||(!!Yn[\"Letterlike Symbols\"](t)||(!!Yn[\"Number Forms\"](t)||(!(!Yn[\"Miscellaneous Technical\"](t)||!(t>=8960&&t<=8967||t>=8972&&t<=8991||t>=8996&&t<=9e3||9003===t||t>=9085&&t<=9114||t>=9150&&t<=9165||9167===t||t>=9169&&t<=9179||t>=9186&&t<=9215))||(!(!Yn[\"Control Pictures\"](t)||9251===t)||(!!Yn[\"Optical Character Recognition\"](t)||(!!Yn[\"Enclosed Alphanumerics\"](t)||(!!Yn[\"Geometric Shapes\"](t)||(!(!Yn[\"Miscellaneous Symbols\"](t)||t>=9754&&t<=9759)||(!(!Yn[\"Miscellaneous Symbols and Arrows\"](t)||!(t>=11026&&t<=11055||t>=11088&&t<=11097||t>=11192&&t<=11243))||(!!Yn[\"CJK Symbols and Punctuation\"](t)||(!!Yn.Katakana(t)||(!!Yn[\"Private Use Area\"](t)||(!!Yn[\"CJK Compatibility Forms\"](t)||(!!Yn[\"Small Form Variants\"](t)||(!!Yn[\"Halfwidth and Fullwidth Forms\"](t)||(8734===t||8756===t||8757===t||t>=9984&&t<=10087||t>=10102&&t<=10131||65532===t||65533===t)))))))))))))))))}(t))}function Kn(t){return t>=1424&&t<=2303||Yn[\"Arabic Presentation Forms-A\"](t)||Yn[\"Arabic Presentation Forms-B\"](t)}function Qn(t,e){return!(!e&&Kn(t))&&!(t>=2304&&t<=3583||t>=3840&&t<=4255||Yn.Khmer(t))}function $n(t){for(var e=0,r=t;e-1&&(ai=ni),ii&&ii(t)};function li(){ci.fire(new Mt(\"pluginStateChange\",{pluginStatus:ai,pluginURL:oi}))}var ci=new Et,ui=function(){return ai},fi=function(){if(ai!==ti||!oi)throw new Error(\"rtl-text-plugin cannot be downloaded unless a pluginURL is specified\");ai=ei,li(),oi&&xt({url:oi},(function(t){t?si(t):(ai=ri,li())}))},hi={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isLoaded:function(){return ai===ri||null!=hi.applyArabicShaping},isLoading:function(){return ai===ei},setState:function(t){ai=t.pluginStatus,oi=t.pluginURL},isParsed:function(){return null!=hi.applyArabicShaping&&null!=hi.processBidirectionalText&&null!=hi.processStyledBidirectionalText},getPluginURL:function(){return oi}},pi=function(t,e){this.zoom=t,e?(this.now=e.now,this.fadeDuration=e.fadeDuration,this.zoomHistory=e.zoomHistory,this.transition=e.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new Gn,this.transition={})};pi.prototype.isSupportedScript=function(t){return function(t,e){for(var r=0,n=t;rthis.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:e+(1-e)*r}:{fromScale:.5,toScale:1,t:1-(1-r)*e}};var di=function(t,e){this.property=t,this.value=e,this.expression=function(t,e){if(Br(t))return new Kr(t,e);if(Yr(t)){var r=Jr(t,e);if(\"error\"===r.result)throw new Error(r.value.map((function(t){return t.key+\": \"+t.message})).join(\", \"));return r.value}var n=t;return\"string\"==typeof t&&\"color\"===e.type&&(n=te.parse(t)),{kind:\"constant\",evaluate:function(){return n}}}(void 0===e?t.specification.default:e,t.specification)};di.prototype.isDataDriven=function(){return\"source\"===this.expression.kind||\"composite\"===this.expression.kind},di.prototype.possiblyEvaluate=function(t,e,r){return this.property.possiblyEvaluate(this,t,e,r)};var gi=function(t){this.property=t,this.value=new di(t,void 0)};gi.prototype.transitioned=function(t,e){return new vi(this.property,this.value,e,u({},t.transition,this.transition),t.now)},gi.prototype.untransitioned=function(){return new vi(this.property,this.value,null,{},0)};var mi=function(t){this._properties=t,this._values=Object.create(t.defaultTransitionablePropertyValues)};mi.prototype.getValue=function(t){return x(this._values[t].value.value)},mi.prototype.setValue=function(t,e){this._values.hasOwnProperty(t)||(this._values[t]=new gi(this._values[t].property)),this._values[t].value=new di(this._values[t].property,null===e?void 0:x(e))},mi.prototype.getTransition=function(t){return x(this._values[t].transition)},mi.prototype.setTransition=function(t,e){this._values.hasOwnProperty(t)||(this._values[t]=new gi(this._values[t].property)),this._values[t].transition=x(e)||void 0},mi.prototype.serialize=function(){for(var t={},e=0,r=Object.keys(this._values);ethis.end)return this.prior=null,i;if(this.value.isDataDriven())return this.prior=null,i;if(n=1)return 1;var e=t*t,r=e*t;return 4*(t<.5?r:3*(t-e)+r-.75)}(o))}return i};var yi=function(t){this._properties=t,this._values=Object.create(t.defaultTransitioningPropertyValues)};yi.prototype.possiblyEvaluate=function(t,e,r){for(var n=new _i(this._properties),i=0,a=Object.keys(this._values);in.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}},e.prototype.interpolate=function(t){return t},e}(Ti),Ai=function(t){this.specification=t};Ai.prototype.possiblyEvaluate=function(t,e,r,n){if(void 0!==t.value){if(\"constant\"===t.expression.kind){var i=t.expression.evaluate(e,null,{},r,n);return this._calculate(i,i,i,e)}return this._calculate(t.expression.evaluate(new pi(Math.floor(e.zoom-1),e)),t.expression.evaluate(new pi(Math.floor(e.zoom),e)),t.expression.evaluate(new pi(Math.floor(e.zoom+1),e)),e)}},Ai.prototype._calculate=function(t,e,r,n){return n.zoom>n.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}},Ai.prototype.interpolate=function(t){return t};var Mi=function(t){this.specification=t};Mi.prototype.possiblyEvaluate=function(t,e,r,n){return!!t.expression.evaluate(e,null,{},r,n)},Mi.prototype.interpolate=function(){return!1};var Si=function(t){for(var e in this.properties=t,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[],t){var r=t[e];r.specification.overridable&&this.overridableProperties.push(e);var n=this.defaultPropertyValues[e]=new di(r,void 0),i=this.defaultTransitionablePropertyValues[e]=new gi(r);this.defaultTransitioningPropertyValues[e]=i.untransitioned(),this.defaultPossiblyEvaluatedValues[e]=n.possiblyEvaluate({})}};Nn(\"DataDrivenProperty\",Ti),Nn(\"DataConstantProperty\",wi),Nn(\"CrossFadedDataDrivenProperty\",ki),Nn(\"CrossFadedProperty\",Ai),Nn(\"ColorRampProperty\",Mi);var Ei=function(t){function e(e,r){if(t.call(this),this.id=e.id,this.type=e.type,this._featureFilter={filter:function(){return!0},needGeometry:!1},\"custom\"!==e.type&&(e=e,this.metadata=e.metadata,this.minzoom=e.minzoom,this.maxzoom=e.maxzoom,\"background\"!==e.type&&(this.source=e.source,this.sourceLayer=e[\"source-layer\"],this.filter=e.filter),r.layout&&(this._unevaluatedLayout=new xi(r.layout)),r.paint)){for(var n in this._transitionablePaint=new mi(r.paint),e.paint)this.setPaintProperty(n,e.paint[n],{validate:!1});for(var i in e.layout)this.setLayoutProperty(i,e.layout[i],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new _i(r.paint)}}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getCrossfadeParameters=function(){return this._crossfadeParameters},e.prototype.getLayoutProperty=function(t){return\"visibility\"===t?this.visibility:this._unevaluatedLayout.getValue(t)},e.prototype.setLayoutProperty=function(t,e,r){if(void 0===r&&(r={}),null!=e){var n=\"layers.\"+this.id+\".layout.\"+t;if(this._validate(In,n,t,e,r))return}\"visibility\"!==t?this._unevaluatedLayout.setValue(t,e):this.visibility=e},e.prototype.getPaintProperty=function(t){return m(t,\"-transition\")?this._transitionablePaint.getTransition(t.slice(0,-\"-transition\".length)):this._transitionablePaint.getValue(t)},e.prototype.setPaintProperty=function(t,e,r){if(void 0===r&&(r={}),null!=e){var n=\"layers.\"+this.id+\".paint.\"+t;if(this._validate(Pn,n,t,e,r))return!1}if(m(t,\"-transition\"))return this._transitionablePaint.setTransition(t.slice(0,-\"-transition\".length),e||void 0),!1;var i=this._transitionablePaint._values[t],a=\"cross-faded-data-driven\"===i.property.specification[\"property-type\"],o=i.value.isDataDriven(),s=i.value;this._transitionablePaint.setValue(t,e),this._handleSpecialPaintPropertyUpdate(t);var l=this._transitionablePaint._values[t].value;return l.isDataDriven()||o||a||this._handleOverridablePaintPropertyUpdate(t,s,l)},e.prototype._handleSpecialPaintPropertyUpdate=function(t){},e.prototype._handleOverridablePaintPropertyUpdate=function(t,e,r){return!1},e.prototype.isHidden=function(t){return!!(this.minzoom&&t=this.maxzoom)||\"none\"===this.visibility)},e.prototype.updateTransitions=function(t){this._transitioningPaint=this._transitionablePaint.transitioned(t,this._transitioningPaint)},e.prototype.hasTransition=function(){return this._transitioningPaint.hasTransition()},e.prototype.recalculate=function(t,e){t.getCrossfadeParameters&&(this._crossfadeParameters=t.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(t,void 0,e)),this.paint=this._transitioningPaint.possiblyEvaluate(t,void 0,e)},e.prototype.serialize=function(){var t={id:this.id,type:this.type,source:this.source,\"source-layer\":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(t.layout=t.layout||{},t.layout.visibility=this.visibility),y(t,(function(t,e){return!(void 0===t||\"layout\"===e&&!Object.keys(t).length||\"paint\"===e&&!Object.keys(t).length)}))},e.prototype._validate=function(t,e,r,n,i){return void 0===i&&(i={}),(!i||!1!==i.validate)&&On(this,t.call(Ln,{key:e,layerType:this.type,objectKey:r,value:n,styleSpec:Lt,style:{glyphs:!0,sprite:!0}}))},e.prototype.is3D=function(){return!1},e.prototype.isTileClipped=function(){return!1},e.prototype.hasOffscreenPass=function(){return!1},e.prototype.resize=function(){},e.prototype.isStateDependent=function(){for(var t in this.paint._values){var e=this.paint.get(t);if(e instanceof bi&&zr(e.property.specification)&&((\"source\"===e.value.kind||\"composite\"===e.value.kind)&&e.value.isStateDependent))return!0}return!1},e}(Et),Li={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array},Ci=function(t,e){this._structArray=t,this._pos1=e*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8},Pi=function(){this.isTransferred=!1,this.capacity=-1,this.resize(0)};function Ii(t,e){void 0===e&&(e=1);var r=0,n=0;return{members:t.map((function(t){var i,a=(i=t.type,Li[i].BYTES_PER_ELEMENT),o=r=Oi(r,Math.max(e,a)),s=t.components||1;return n=Math.max(n,a),r+=a*s,{name:t.name,type:t.type,components:s,offset:o}})),size:Oi(r,Math.max(n,e)),alignment:e}}function Oi(t,e){return Math.ceil(t/e)*e}Pi.serialize=function(t,e){return t._trim(),e&&(t.isTransferred=!0,e.push(t.arrayBuffer)),{length:t.length,arrayBuffer:t.arrayBuffer}},Pi.deserialize=function(t){var e=Object.create(this.prototype);return e.arrayBuffer=t.arrayBuffer,e.length=t.length,e.capacity=t.arrayBuffer.byteLength/e.bytesPerElement,e._refreshViews(),e},Pi.prototype._trim=function(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())},Pi.prototype.clear=function(){this.length=0},Pi.prototype.resize=function(t){this.reserve(t),this.length=t},Pi.prototype.reserve=function(t){if(t>this.capacity){this.capacity=Math.max(t,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);var e=this.uint8;this._refreshViews(),e&&this.uint8.set(e)}},Pi.prototype._refreshViews=function(){throw new Error(\"_refreshViews() must be implemented by each concrete StructArray layout\")};var zi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var n=2*t;return this.int16[n+0]=e,this.int16[n+1]=r,t},e}(Pi);zi.prototype.bytesPerElement=4,Nn(\"StructArrayLayout2i4\",zi);var Di=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)},e.prototype.emplace=function(t,e,r,n,i){var a=4*t;return this.int16[a+0]=e,this.int16[a+1]=r,this.int16[a+2]=n,this.int16[a+3]=i,t},e}(Pi);Di.prototype.bytesPerElement=8,Nn(\"StructArrayLayout4i8\",Di);var Ri=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a){var o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,a)},e.prototype.emplace=function(t,e,r,n,i,a,o){var s=6*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.int16[s+2]=n,this.int16[s+3]=i,this.int16[s+4]=a,this.int16[s+5]=o,t},e}(Pi);Ri.prototype.bytesPerElement=12,Nn(\"StructArrayLayout2i4i12\",Ri);var Fi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a){var o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,a)},e.prototype.emplace=function(t,e,r,n,i,a,o){var s=4*t,l=8*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.uint8[l+4]=n,this.uint8[l+5]=i,this.uint8[l+6]=a,this.uint8[l+7]=o,t},e}(Pi);Fi.prototype.bytesPerElement=8,Nn(\"StructArrayLayout2i4ub8\",Fi);var Bi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l,c){var u=this.length;return this.resize(u+1),this.emplace(u,t,e,r,n,i,a,o,s,l,c)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,c,u){var f=9*t,h=18*t;return this.uint16[f+0]=e,this.uint16[f+1]=r,this.uint16[f+2]=n,this.uint16[f+3]=i,this.uint16[f+4]=a,this.uint16[f+5]=o,this.uint16[f+6]=s,this.uint16[f+7]=l,this.uint8[h+16]=c,this.uint8[h+17]=u,t},e}(Pi);Bi.prototype.bytesPerElement=18,Nn(\"StructArrayLayout8ui2ub18\",Bi);var Ni=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l,c,u,f){var h=this.length;return this.resize(h+1),this.emplace(h,t,e,r,n,i,a,o,s,l,c,u,f)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,c,u,f,h){var p=12*t;return this.int16[p+0]=e,this.int16[p+1]=r,this.int16[p+2]=n,this.int16[p+3]=i,this.uint16[p+4]=a,this.uint16[p+5]=o,this.uint16[p+6]=s,this.uint16[p+7]=l,this.int16[p+8]=c,this.int16[p+9]=u,this.int16[p+10]=f,this.int16[p+11]=h,t},e}(Pi);Ni.prototype.bytesPerElement=24,Nn(\"StructArrayLayout4i4ui4i24\",Ni);var ji=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=3*t;return this.float32[i+0]=e,this.float32[i+1]=r,this.float32[i+2]=n,t},e}(Pi);ji.prototype.bytesPerElement=12,Nn(\"StructArrayLayout3f12\",ji);var Ui=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){var r=1*t;return this.uint32[r+0]=e,t},e}(Pi);Ui.prototype.bytesPerElement=4,Nn(\"StructArrayLayout1ul4\",Ui);var Vi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l){var c=this.length;return this.resize(c+1),this.emplace(c,t,e,r,n,i,a,o,s,l)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,c){var u=10*t,f=5*t;return this.int16[u+0]=e,this.int16[u+1]=r,this.int16[u+2]=n,this.int16[u+3]=i,this.int16[u+4]=a,this.int16[u+5]=o,this.uint32[f+3]=s,this.uint16[u+8]=l,this.uint16[u+9]=c,t},e}(Pi);Vi.prototype.bytesPerElement=20,Nn(\"StructArrayLayout6i1ul2ui20\",Vi);var Hi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a){var o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,a)},e.prototype.emplace=function(t,e,r,n,i,a,o){var s=6*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.int16[s+2]=n,this.int16[s+3]=i,this.int16[s+4]=a,this.int16[s+5]=o,t},e}(Pi);Hi.prototype.bytesPerElement=12,Nn(\"StructArrayLayout2i2i2i12\",Hi);var qi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i){var a=this.length;return this.resize(a+1),this.emplace(a,t,e,r,n,i)},e.prototype.emplace=function(t,e,r,n,i,a){var o=4*t,s=8*t;return this.float32[o+0]=e,this.float32[o+1]=r,this.float32[o+2]=n,this.int16[s+6]=i,this.int16[s+7]=a,t},e}(Pi);qi.prototype.bytesPerElement=16,Nn(\"StructArrayLayout2f1f2i16\",qi);var Gi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)},e.prototype.emplace=function(t,e,r,n,i){var a=12*t,o=3*t;return this.uint8[a+0]=e,this.uint8[a+1]=r,this.float32[o+1]=n,this.float32[o+2]=i,t},e}(Pi);Gi.prototype.bytesPerElement=12,Nn(\"StructArrayLayout2ub2f12\",Gi);var Yi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=3*t;return this.uint16[i+0]=e,this.uint16[i+1]=r,this.uint16[i+2]=n,t},e}(Pi);Yi.prototype.bytesPerElement=6,Nn(\"StructArrayLayout3ui6\",Yi);var Wi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m){var v=this.length;return this.resize(v+1),this.emplace(v,t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m,v){var y=24*t,x=12*t,b=48*t;return this.int16[y+0]=e,this.int16[y+1]=r,this.uint16[y+2]=n,this.uint16[y+3]=i,this.uint32[x+2]=a,this.uint32[x+3]=o,this.uint32[x+4]=s,this.uint16[y+10]=l,this.uint16[y+11]=c,this.uint16[y+12]=u,this.float32[x+7]=f,this.float32[x+8]=h,this.uint8[b+36]=p,this.uint8[b+37]=d,this.uint8[b+38]=g,this.uint32[x+10]=m,this.int16[y+22]=v,t},e}(Pi);Wi.prototype.bytesPerElement=48,Nn(\"StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48\",Wi);var Xi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m,v,y,x,b,_,w,T,k,A,M,S){var E=this.length;return this.resize(E+1),this.emplace(E,t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m,v,y,x,b,_,w,T,k,A,M,S)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m,v,y,x,b,_,w,T,k,A,M,S,E){var L=34*t,C=17*t;return this.int16[L+0]=e,this.int16[L+1]=r,this.int16[L+2]=n,this.int16[L+3]=i,this.int16[L+4]=a,this.int16[L+5]=o,this.int16[L+6]=s,this.int16[L+7]=l,this.uint16[L+8]=c,this.uint16[L+9]=u,this.uint16[L+10]=f,this.uint16[L+11]=h,this.uint16[L+12]=p,this.uint16[L+13]=d,this.uint16[L+14]=g,this.uint16[L+15]=m,this.uint16[L+16]=v,this.uint16[L+17]=y,this.uint16[L+18]=x,this.uint16[L+19]=b,this.uint16[L+20]=_,this.uint16[L+21]=w,this.uint16[L+22]=T,this.uint32[C+12]=k,this.float32[C+13]=A,this.float32[C+14]=M,this.float32[C+15]=S,this.float32[C+16]=E,t},e}(Pi);Xi.prototype.bytesPerElement=68,Nn(\"StructArrayLayout8i15ui1ul4f68\",Xi);var Zi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){var r=1*t;return this.float32[r+0]=e,t},e}(Pi);Zi.prototype.bytesPerElement=4,Nn(\"StructArrayLayout1f4\",Zi);var Ji=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=3*t;return this.int16[i+0]=e,this.int16[i+1]=r,this.int16[i+2]=n,t},e}(Pi);Ji.prototype.bytesPerElement=6,Nn(\"StructArrayLayout3i6\",Ji);var Ki=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=2*t,a=4*t;return this.uint32[i+0]=e,this.uint16[a+2]=r,this.uint16[a+3]=n,t},e}(Pi);Ki.prototype.bytesPerElement=8,Nn(\"StructArrayLayout1ul2ui8\",Ki);var Qi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var n=2*t;return this.uint16[n+0]=e,this.uint16[n+1]=r,t},e}(Pi);Qi.prototype.bytesPerElement=4,Nn(\"StructArrayLayout2ui4\",Qi);var $i=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){var r=1*t;return this.uint16[r+0]=e,t},e}(Pi);$i.prototype.bytesPerElement=2,Nn(\"StructArrayLayout1ui2\",$i);var ta=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var n=2*t;return this.float32[n+0]=e,this.float32[n+1]=r,t},e}(Pi);ta.prototype.bytesPerElement=8,Nn(\"StructArrayLayout2f8\",ta);var ea=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)},e.prototype.emplace=function(t,e,r,n,i){var a=4*t;return this.float32[a+0]=e,this.float32[a+1]=r,this.float32[a+2]=n,this.float32[a+3]=i,t},e}(Pi);ea.prototype.bytesPerElement=16,Nn(\"StructArrayLayout4f16\",ea);var ra=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={anchorPointX:{configurable:!0},anchorPointY:{configurable:!0},x1:{configurable:!0},y1:{configurable:!0},x2:{configurable:!0},y2:{configurable:!0},featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0},anchorPoint:{configurable:!0}};return r.anchorPointX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorPointY.get=function(){return this._structArray.int16[this._pos2+1]},r.x1.get=function(){return this._structArray.int16[this._pos2+2]},r.y1.get=function(){return this._structArray.int16[this._pos2+3]},r.x2.get=function(){return this._structArray.int16[this._pos2+4]},r.y2.get=function(){return this._structArray.int16[this._pos2+5]},r.featureIndex.get=function(){return this._structArray.uint32[this._pos4+3]},r.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+8]},r.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+9]},r.anchorPoint.get=function(){return new i(this.anchorPointX,this.anchorPointY)},Object.defineProperties(e.prototype,r),e}(Ci);ra.prototype.size=20;var na=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new ra(this,t)},e}(Vi);Nn(\"CollisionBoxArray\",na);var ia=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={anchorX:{configurable:!0},anchorY:{configurable:!0},glyphStartIndex:{configurable:!0},numGlyphs:{configurable:!0},vertexStartIndex:{configurable:!0},lineStartIndex:{configurable:!0},lineLength:{configurable:!0},segment:{configurable:!0},lowerSize:{configurable:!0},upperSize:{configurable:!0},lineOffsetX:{configurable:!0},lineOffsetY:{configurable:!0},writingMode:{configurable:!0},placedOrientation:{configurable:!0},hidden:{configurable:!0},crossTileID:{configurable:!0},associatedIconIndex:{configurable:!0}};return r.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},r.glyphStartIndex.get=function(){return this._structArray.uint16[this._pos2+2]},r.numGlyphs.get=function(){return this._structArray.uint16[this._pos2+3]},r.vertexStartIndex.get=function(){return this._structArray.uint32[this._pos4+2]},r.lineStartIndex.get=function(){return this._structArray.uint32[this._pos4+3]},r.lineLength.get=function(){return this._structArray.uint32[this._pos4+4]},r.segment.get=function(){return this._structArray.uint16[this._pos2+10]},r.lowerSize.get=function(){return this._structArray.uint16[this._pos2+11]},r.upperSize.get=function(){return this._structArray.uint16[this._pos2+12]},r.lineOffsetX.get=function(){return this._structArray.float32[this._pos4+7]},r.lineOffsetY.get=function(){return this._structArray.float32[this._pos4+8]},r.writingMode.get=function(){return this._structArray.uint8[this._pos1+36]},r.placedOrientation.get=function(){return this._structArray.uint8[this._pos1+37]},r.placedOrientation.set=function(t){this._structArray.uint8[this._pos1+37]=t},r.hidden.get=function(){return this._structArray.uint8[this._pos1+38]},r.hidden.set=function(t){this._structArray.uint8[this._pos1+38]=t},r.crossTileID.get=function(){return this._structArray.uint32[this._pos4+10]},r.crossTileID.set=function(t){this._structArray.uint32[this._pos4+10]=t},r.associatedIconIndex.get=function(){return this._structArray.int16[this._pos2+22]},Object.defineProperties(e.prototype,r),e}(Ci);ia.prototype.size=48;var aa=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new ia(this,t)},e}(Wi);Nn(\"PlacedSymbolArray\",aa);var oa=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={anchorX:{configurable:!0},anchorY:{configurable:!0},rightJustifiedTextSymbolIndex:{configurable:!0},centerJustifiedTextSymbolIndex:{configurable:!0},leftJustifiedTextSymbolIndex:{configurable:!0},verticalPlacedTextSymbolIndex:{configurable:!0},placedIconSymbolIndex:{configurable:!0},verticalPlacedIconSymbolIndex:{configurable:!0},key:{configurable:!0},textBoxStartIndex:{configurable:!0},textBoxEndIndex:{configurable:!0},verticalTextBoxStartIndex:{configurable:!0},verticalTextBoxEndIndex:{configurable:!0},iconBoxStartIndex:{configurable:!0},iconBoxEndIndex:{configurable:!0},verticalIconBoxStartIndex:{configurable:!0},verticalIconBoxEndIndex:{configurable:!0},featureIndex:{configurable:!0},numHorizontalGlyphVertices:{configurable:!0},numVerticalGlyphVertices:{configurable:!0},numIconVertices:{configurable:!0},numVerticalIconVertices:{configurable:!0},useRuntimeCollisionCircles:{configurable:!0},crossTileID:{configurable:!0},textBoxScale:{configurable:!0},textOffset0:{configurable:!0},textOffset1:{configurable:!0},collisionCircleDiameter:{configurable:!0}};return r.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},r.rightJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+2]},r.centerJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+3]},r.leftJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+4]},r.verticalPlacedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+5]},r.placedIconSymbolIndex.get=function(){return this._structArray.int16[this._pos2+6]},r.verticalPlacedIconSymbolIndex.get=function(){return this._structArray.int16[this._pos2+7]},r.key.get=function(){return this._structArray.uint16[this._pos2+8]},r.textBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+9]},r.textBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+10]},r.verticalTextBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+11]},r.verticalTextBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+12]},r.iconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+13]},r.iconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+14]},r.verticalIconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+15]},r.verticalIconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+16]},r.featureIndex.get=function(){return this._structArray.uint16[this._pos2+17]},r.numHorizontalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+18]},r.numVerticalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+19]},r.numIconVertices.get=function(){return this._structArray.uint16[this._pos2+20]},r.numVerticalIconVertices.get=function(){return this._structArray.uint16[this._pos2+21]},r.useRuntimeCollisionCircles.get=function(){return this._structArray.uint16[this._pos2+22]},r.crossTileID.get=function(){return this._structArray.uint32[this._pos4+12]},r.crossTileID.set=function(t){this._structArray.uint32[this._pos4+12]=t},r.textBoxScale.get=function(){return this._structArray.float32[this._pos4+13]},r.textOffset0.get=function(){return this._structArray.float32[this._pos4+14]},r.textOffset1.get=function(){return this._structArray.float32[this._pos4+15]},r.collisionCircleDiameter.get=function(){return this._structArray.float32[this._pos4+16]},Object.defineProperties(e.prototype,r),e}(Ci);oa.prototype.size=68;var sa=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new oa(this,t)},e}(Xi);Nn(\"SymbolInstanceArray\",sa);var la=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getoffsetX=function(t){return this.float32[1*t+0]},e}(Zi);Nn(\"GlyphOffsetArray\",la);var ca=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getx=function(t){return this.int16[3*t+0]},e.prototype.gety=function(t){return this.int16[3*t+1]},e.prototype.gettileUnitDistanceFromAnchor=function(t){return this.int16[3*t+2]},e}(Ji);Nn(\"SymbolLineVertexArray\",ca);var ua=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0}};return r.featureIndex.get=function(){return this._structArray.uint32[this._pos4+0]},r.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+2]},r.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+3]},Object.defineProperties(e.prototype,r),e}(Ci);ua.prototype.size=8;var fa=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new ua(this,t)},e}(Ki);Nn(\"FeatureIndexArray\",fa);var ha=Ii([{name:\"a_pos\",components:2,type:\"Int16\"}],4).members,pa=function(t){void 0===t&&(t=[]),this.segments=t};function da(t,e){return 256*(t=l(Math.floor(t),0,255))+(e=l(Math.floor(e),0,255))}pa.prototype.prepareSegment=function(t,e,r,n){var i=this.segments[this.segments.length-1];return t>pa.MAX_VERTEX_ARRAY_LENGTH&&_(\"Max vertices per segment is \"+pa.MAX_VERTEX_ARRAY_LENGTH+\": bucket requested \"+t),(!i||i.vertexLength+t>pa.MAX_VERTEX_ARRAY_LENGTH||i.sortKey!==n)&&(i={vertexOffset:e.length,primitiveOffset:r.length,vertexLength:0,primitiveLength:0},void 0!==n&&(i.sortKey=n),this.segments.push(i)),i},pa.prototype.get=function(){return this.segments},pa.prototype.destroy=function(){for(var t=0,e=this.segments;t>>16)*o&65535)<<16)&4294967295)<<15|l>>>17))*s+(((l>>>16)*s&65535)<<16)&4294967295)<<13|i>>>19))+((5*(i>>>16)&65535)<<16)&4294967295))+((58964+(a>>>16)&65535)<<16);switch(l=0,r){case 3:l^=(255&t.charCodeAt(c+2))<<16;case 2:l^=(255&t.charCodeAt(c+1))<<8;case 1:i^=l=(65535&(l=(l=(65535&(l^=255&t.charCodeAt(c)))*o+(((l>>>16)*o&65535)<<16)&4294967295)<<15|l>>>17))*s+(((l>>>16)*s&65535)<<16)&4294967295}return i^=t.length,i=2246822507*(65535&(i^=i>>>16))+((2246822507*(i>>>16)&65535)<<16)&4294967295,i=3266489909*(65535&(i^=i>>>13))+((3266489909*(i>>>16)&65535)<<16)&4294967295,(i^=i>>>16)>>>0}})),va=e((function(t){t.exports=function(t,e){for(var r,n=t.length,i=e^n,a=0;n>=4;)r=1540483477*(65535&(r=255&t.charCodeAt(a)|(255&t.charCodeAt(++a))<<8|(255&t.charCodeAt(++a))<<16|(255&t.charCodeAt(++a))<<24))+((1540483477*(r>>>16)&65535)<<16),i=1540483477*(65535&i)+((1540483477*(i>>>16)&65535)<<16)^(r=1540483477*(65535&(r^=r>>>24))+((1540483477*(r>>>16)&65535)<<16)),n-=4,++a;switch(n){case 3:i^=(255&t.charCodeAt(a+2))<<16;case 2:i^=(255&t.charCodeAt(a+1))<<8;case 1:i=1540483477*(65535&(i^=255&t.charCodeAt(a)))+((1540483477*(i>>>16)&65535)<<16)}return i=1540483477*(65535&(i^=i>>>13))+((1540483477*(i>>>16)&65535)<<16),(i^=i>>>15)>>>0}})),ya=ma,xa=ma,ba=va;ya.murmur3=xa,ya.murmur2=ba;var _a=function(){this.ids=[],this.positions=[],this.indexed=!1};_a.prototype.add=function(t,e,r,n){this.ids.push(Ta(t)),this.positions.push(e,r,n)},_a.prototype.getPositions=function(t){for(var e=Ta(t),r=0,n=this.ids.length-1;r>1;this.ids[i]>=e?n=i:r=i+1}for(var a=[];this.ids[r]===e;){var o=this.positions[3*r],s=this.positions[3*r+1],l=this.positions[3*r+2];a.push({index:o,start:s,end:l}),r++}return a},_a.serialize=function(t,e){var r=new Float64Array(t.ids),n=new Uint32Array(t.positions);return function t(e,r,n,i){for(;n>1],o=n-1,s=i+1;;){do{o++}while(e[o]a);if(o>=s)break;ka(e,o,s),ka(r,3*o,3*s),ka(r,3*o+1,3*s+1),ka(r,3*o+2,3*s+2)}s-nGa.max||o.yGa.max)&&(_(\"Geometry exceeds allowed extent, reduce your vector tile buffer size\"),o.x=l(o.x,Ga.min,Ga.max),o.y=l(o.y,Ga.min,Ga.max))}return r}function Wa(t,e,r,n,i){t.emplaceBack(2*e+(n+1)/2,2*r+(i+1)/2)}var Xa=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((function(t){return t.id})),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new zi,this.indexArray=new Yi,this.segments=new pa,this.programConfigurations=new Ua(ha,t.layers,t.zoom),this.stateDependentLayerIds=this.layers.filter((function(t){return t.isStateDependent()})).map((function(t){return t.id}))};function Za(t,e){for(var r=0;r1){if($a(t,e))return!0;for(var n=0;n1?t.distSqr(r):t.distSqr(r.sub(e)._mult(i)._add(e))}function no(t,e){for(var r,n,i,a=!1,o=0;oe.y!=i.y>e.y&&e.x<(i.x-n.x)*(e.y-n.y)/(i.y-n.y)+n.x&&(a=!a);return a}function io(t,e){for(var r=!1,n=0,i=t.length-1;ne.y!=o.y>e.y&&e.x<(o.x-a.x)*(e.y-a.y)/(o.y-a.y)+a.x&&(r=!r)}return r}function ao(t,e,r){var n=r[0],i=r[2];if(t.xi.x&&e.x>i.x||t.yi.y&&e.y>i.y)return!1;var a=w(t,e,r[0]);return a!==w(t,e,r[1])||a!==w(t,e,r[2])||a!==w(t,e,r[3])}function oo(t,e,r){var n=e.paint.get(t).value;return\"constant\"===n.kind?n.value:r.programConfigurations.get(e.id).getMaxValue(t)}function so(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function lo(t,e,r,n,a){if(!e[0]&&!e[1])return t;var o=i.convert(e)._mult(a);\"viewport\"===r&&o._rotate(-n);for(var s=[],l=0;l=8192||u<0||u>=8192)){var f=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,t.sortKey),h=f.vertexLength;Wa(this.layoutVertexArray,c,u,-1,-1),Wa(this.layoutVertexArray,c,u,1,-1),Wa(this.layoutVertexArray,c,u,1,1),Wa(this.layoutVertexArray,c,u,-1,1),this.indexArray.emplaceBack(h,h+1,h+2),this.indexArray.emplaceBack(h,h+3,h+2),f.vertexLength+=4,f.primitiveLength+=2}}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,{},n)},Nn(\"CircleBucket\",Xa,{omit:[\"layers\"]});var co=new Si({\"circle-sort-key\":new Ti(Lt.layout_circle[\"circle-sort-key\"])}),uo={paint:new Si({\"circle-radius\":new Ti(Lt.paint_circle[\"circle-radius\"]),\"circle-color\":new Ti(Lt.paint_circle[\"circle-color\"]),\"circle-blur\":new Ti(Lt.paint_circle[\"circle-blur\"]),\"circle-opacity\":new Ti(Lt.paint_circle[\"circle-opacity\"]),\"circle-translate\":new wi(Lt.paint_circle[\"circle-translate\"]),\"circle-translate-anchor\":new wi(Lt.paint_circle[\"circle-translate-anchor\"]),\"circle-pitch-scale\":new wi(Lt.paint_circle[\"circle-pitch-scale\"]),\"circle-pitch-alignment\":new wi(Lt.paint_circle[\"circle-pitch-alignment\"]),\"circle-stroke-width\":new Ti(Lt.paint_circle[\"circle-stroke-width\"]),\"circle-stroke-color\":new Ti(Lt.paint_circle[\"circle-stroke-color\"]),\"circle-stroke-opacity\":new Ti(Lt.paint_circle[\"circle-stroke-opacity\"])}),layout:co},fo=\"undefined\"!=typeof Float32Array?Float32Array:Array;function ho(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function po(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3],s=e[4],l=e[5],c=e[6],u=e[7],f=e[8],h=e[9],p=e[10],d=e[11],g=e[12],m=e[13],v=e[14],y=e[15],x=r[0],b=r[1],_=r[2],w=r[3];return t[0]=x*n+b*s+_*f+w*g,t[1]=x*i+b*l+_*h+w*m,t[2]=x*a+b*c+_*p+w*v,t[3]=x*o+b*u+_*d+w*y,x=r[4],b=r[5],_=r[6],w=r[7],t[4]=x*n+b*s+_*f+w*g,t[5]=x*i+b*l+_*h+w*m,t[6]=x*a+b*c+_*p+w*v,t[7]=x*o+b*u+_*d+w*y,x=r[8],b=r[9],_=r[10],w=r[11],t[8]=x*n+b*s+_*f+w*g,t[9]=x*i+b*l+_*h+w*m,t[10]=x*a+b*c+_*p+w*v,t[11]=x*o+b*u+_*d+w*y,x=r[12],b=r[13],_=r[14],w=r[15],t[12]=x*n+b*s+_*f+w*g,t[13]=x*i+b*l+_*h+w*m,t[14]=x*a+b*c+_*p+w*v,t[15]=x*o+b*u+_*d+w*y,t}Math.hypot||(Math.hypot=function(){for(var t=arguments,e=0,r=arguments.length;r--;)e+=t[r]*t[r];return Math.sqrt(e)});var go=po;var mo,vo,yo=function(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t};mo=new fo(3),fo!=Float32Array&&(mo[0]=0,mo[1]=0,mo[2]=0),vo=mo;function xo(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3];return t[0]=r[0]*n+r[4]*i+r[8]*a+r[12]*o,t[1]=r[1]*n+r[5]*i+r[9]*a+r[13]*o,t[2]=r[2]*n+r[6]*i+r[10]*a+r[14]*o,t[3]=r[3]*n+r[7]*i+r[11]*a+r[15]*o,t}!function(){var t=function(){var t=new fo(4);return fo!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[3]=0),t}()}();var bo=function(t){var e=t[0],r=t[1];return e*e+r*r},_o=(function(){var t=function(){var t=new fo(2);return fo!=Float32Array&&(t[0]=0,t[1]=0),t}()}(),function(t){function e(e){t.call(this,e,uo)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.createBucket=function(t){return new Xa(t)},e.prototype.queryRadius=function(t){var e=t;return oo(\"circle-radius\",this,e)+oo(\"circle-stroke-width\",this,e)+so(this.paint.get(\"circle-translate\"))},e.prototype.queryIntersectsFeature=function(t,e,r,n,i,a,o,s){for(var l=lo(t,this.paint.get(\"circle-translate\"),this.paint.get(\"circle-translate-anchor\"),a.angle,o),c=this.paint.get(\"circle-radius\").evaluate(e,r)+this.paint.get(\"circle-stroke-width\").evaluate(e,r),u=\"map\"===this.paint.get(\"circle-pitch-alignment\"),f=u?l:function(t,e){return t.map((function(t){return wo(t,e)}))}(l,s),h=u?c*o:c,p=0,d=n;pt.width||i.height>t.height||r.x>t.width-i.width||r.y>t.height-i.height)throw new RangeError(\"out of range source coordinates for image copy\");if(i.width>e.width||i.height>e.height||n.x>e.width-i.width||n.y>e.height-i.height)throw new RangeError(\"out of range destination coordinates for image copy\");for(var o=t.data,s=e.data,l=0;l80*r){n=a=t[0],i=o=t[1];for(var d=r;da&&(a=s),l>o&&(o=l);c=0!==(c=Math.max(a-n,o-i))?1/c:0}return jo(h,p,r,n,i,c),p}function Bo(t,e,r,n,i){var a,o;if(i===ls(t,e,r,n)>0)for(a=e;a=e;a-=n)o=as(a,t[a],t[a+1],o);return o&&$o(o,o.next)&&(os(o),o=o.next),o}function No(t,e){if(!t)return t;e||(e=t);var r,n=t;do{if(r=!1,n.steiner||!$o(n,n.next)&&0!==Qo(n.prev,n,n.next))n=n.next;else{if(os(n),(n=e=n.prev)===n.next)break;r=!0}}while(r||n!==e);return e}function jo(t,e,r,n,i,a,o){if(t){!o&&a&&function(t,e,r,n){var i=t;do{null===i.z&&(i.z=Xo(i.x,i.y,e,r,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next}while(i!==t);i.prevZ.nextZ=null,i.prevZ=null,function(t){var e,r,n,i,a,o,s,l,c=1;do{for(r=t,t=null,a=null,o=0;r;){for(o++,n=r,s=0,e=0;e0||l>0&&n;)0!==s&&(0===l||!n||r.z<=n.z)?(i=r,r=r.nextZ,s--):(i=n,n=n.nextZ,l--),a?a.nextZ=i:t=i,i.prevZ=a,a=i;r=n}a.nextZ=null,c*=2}while(o>1)}(i)}(t,n,i,a);for(var s,l,c=t;t.prev!==t.next;)if(s=t.prev,l=t.next,a?Vo(t,n,i,a):Uo(t))e.push(s.i/r),e.push(t.i/r),e.push(l.i/r),os(t),t=l.next,c=l.next;else if((t=l)===c){o?1===o?jo(t=Ho(No(t),e,r),e,r,n,i,a,2):2===o&&qo(t,e,r,n,i,a):jo(No(t),e,r,n,i,a,1);break}}}function Uo(t){var e=t.prev,r=t,n=t.next;if(Qo(e,r,n)>=0)return!1;for(var i=t.next.next;i!==t.prev;){if(Jo(e.x,e.y,r.x,r.y,n.x,n.y,i.x,i.y)&&Qo(i.prev,i,i.next)>=0)return!1;i=i.next}return!0}function Vo(t,e,r,n){var i=t.prev,a=t,o=t.next;if(Qo(i,a,o)>=0)return!1;for(var s=i.xa.x?i.x>o.x?i.x:o.x:a.x>o.x?a.x:o.x,u=i.y>a.y?i.y>o.y?i.y:o.y:a.y>o.y?a.y:o.y,f=Xo(s,l,e,r,n),h=Xo(c,u,e,r,n),p=t.prevZ,d=t.nextZ;p&&p.z>=f&&d&&d.z<=h;){if(p!==t.prev&&p!==t.next&&Jo(i.x,i.y,a.x,a.y,o.x,o.y,p.x,p.y)&&Qo(p.prev,p,p.next)>=0)return!1;if(p=p.prevZ,d!==t.prev&&d!==t.next&&Jo(i.x,i.y,a.x,a.y,o.x,o.y,d.x,d.y)&&Qo(d.prev,d,d.next)>=0)return!1;d=d.nextZ}for(;p&&p.z>=f;){if(p!==t.prev&&p!==t.next&&Jo(i.x,i.y,a.x,a.y,o.x,o.y,p.x,p.y)&&Qo(p.prev,p,p.next)>=0)return!1;p=p.prevZ}for(;d&&d.z<=h;){if(d!==t.prev&&d!==t.next&&Jo(i.x,i.y,a.x,a.y,o.x,o.y,d.x,d.y)&&Qo(d.prev,d,d.next)>=0)return!1;d=d.nextZ}return!0}function Ho(t,e,r){var n=t;do{var i=n.prev,a=n.next.next;!$o(i,a)&&ts(i,n,n.next,a)&&ns(i,a)&&ns(a,i)&&(e.push(i.i/r),e.push(n.i/r),e.push(a.i/r),os(n),os(n.next),n=t=a),n=n.next}while(n!==t);return No(n)}function qo(t,e,r,n,i,a){var o=t;do{for(var s=o.next.next;s!==o.prev;){if(o.i!==s.i&&Ko(o,s)){var l=is(o,s);return o=No(o,o.next),l=No(l,l.next),jo(o,e,r,n,i,a),void jo(l,e,r,n,i,a)}s=s.next}o=o.next}while(o!==t)}function Go(t,e){return t.x-e.x}function Yo(t,e){if(e=function(t,e){var r,n=e,i=t.x,a=t.y,o=-1/0;do{if(a<=n.y&&a>=n.next.y&&n.next.y!==n.y){var s=n.x+(a-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(s<=i&&s>o){if(o=s,s===i){if(a===n.y)return n;if(a===n.next.y)return n.next}r=n.x=n.x&&n.x>=u&&i!==n.x&&Jo(ar.x||n.x===r.x&&Wo(r,n)))&&(r=n,h=l)),n=n.next}while(n!==c);return r}(t,e)){var r=is(e,t);No(e,e.next),No(r,r.next)}}function Wo(t,e){return Qo(t.prev,t,e.prev)<0&&Qo(e.next,t,t.next)<0}function Xo(t,e,r,n,i){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-r)*i)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-n)*i)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function Zo(t){var e=t,r=t;do{(e.x=0&&(t-o)*(n-s)-(r-o)*(e-s)>=0&&(r-o)*(a-s)-(i-o)*(n-s)>=0}function Ko(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){var r=t;do{if(r.i!==t.i&&r.next.i!==t.i&&r.i!==e.i&&r.next.i!==e.i&&ts(r,r.next,t,e))return!0;r=r.next}while(r!==t);return!1}(t,e)&&(ns(t,e)&&ns(e,t)&&function(t,e){var r=t,n=!1,i=(t.x+e.x)/2,a=(t.y+e.y)/2;do{r.y>a!=r.next.y>a&&r.next.y!==r.y&&i<(r.next.x-r.x)*(a-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next}while(r!==t);return n}(t,e)&&(Qo(t.prev,t,e.prev)||Qo(t,e.prev,e))||$o(t,e)&&Qo(t.prev,t,t.next)>0&&Qo(e.prev,e,e.next)>0)}function Qo(t,e,r){return(e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y)}function $o(t,e){return t.x===e.x&&t.y===e.y}function ts(t,e,r,n){var i=rs(Qo(t,e,r)),a=rs(Qo(t,e,n)),o=rs(Qo(r,n,t)),s=rs(Qo(r,n,e));return i!==a&&o!==s||(!(0!==i||!es(t,r,e))||(!(0!==a||!es(t,n,e))||(!(0!==o||!es(r,t,n))||!(0!==s||!es(r,e,n)))))}function es(t,e,r){return e.x<=Math.max(t.x,r.x)&&e.x>=Math.min(t.x,r.x)&&e.y<=Math.max(t.y,r.y)&&e.y>=Math.min(t.y,r.y)}function rs(t){return t>0?1:t<0?-1:0}function ns(t,e){return Qo(t.prev,t,t.next)<0?Qo(t,e,t.next)>=0&&Qo(t,t.prev,e)>=0:Qo(t,e,t.prev)<0||Qo(t,t.next,e)<0}function is(t,e){var r=new ss(t.i,t.x,t.y),n=new ss(e.i,e.x,e.y),i=t.next,a=e.prev;return t.next=e,e.prev=t,r.next=i,i.prev=r,n.next=r,r.prev=n,a.next=n,n.prev=a,n}function as(t,e,r,n){var i=new ss(t,e,r);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function os(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function ss(t,e,r){this.i=t,this.x=e,this.y=r,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function ls(t,e,r,n){for(var i=0,a=e,o=r-n;an;){if(i-n>600){var o=i-n+1,s=r-n+1,l=Math.log(o),c=.5*Math.exp(2*l/3),u=.5*Math.sqrt(l*c*(o-c)/o)*(s-o/2<0?-1:1),f=Math.max(n,Math.floor(r-s*c/o+u)),h=Math.min(i,Math.floor(r+(o-s)*c/o+u));t(e,r,f,h,a)}var p=e[r],d=n,g=i;for(us(e,n,r),a(e[i],p)>0&&us(e,n,i);d0;)g--}0===a(e[n],p)?us(e,n,g):(g++,us(e,g,i)),g<=r&&(n=g+1),r<=g&&(i=g-1)}}(t,e,r||0,n||t.length-1,i||fs)}function us(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function fs(t,e){return te?1:0}function hs(t,e){var r=t.length;if(r<=1)return[t];for(var n,i,a=[],o=0;o1)for(var l=0;l0&&(n+=t[i-1].length,r.holes.push(n))}return r},Do.default=Ro;var ms=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((function(t){return t.id})),this.index=t.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new zi,this.indexArray=new Yi,this.indexArray2=new Qi,this.programConfigurations=new Ua(zo,t.layers,t.zoom),this.segments=new pa,this.segments2=new pa,this.stateDependentLayerIds=this.layers.filter((function(t){return t.isStateDependent()})).map((function(t){return t.id}))};ms.prototype.populate=function(t,e,r){this.hasPattern=ds(\"fill\",this.layers,e);for(var n=this.layers[0].layout.get(\"fill-sort-key\"),i=[],a=0,o=t;a>3}if(a--,1===n||2===n)o+=t.readSVarint(),s+=t.readSVarint(),1===n&&(e&&l.push(e),e=[]),e.push(new i(o,s));else{if(7!==n)throw new Error(\"unknown command \"+n);e&&e.push(e[0].clone())}}return e&&l.push(e),l},ws.prototype.bbox=function(){var t=this._pbf;t.pos=this._geometry;for(var e=t.readVarint()+t.pos,r=1,n=0,i=0,a=0,o=1/0,s=-1/0,l=1/0,c=-1/0;t.pos>3}if(n--,1===r||2===r)(i+=t.readSVarint())s&&(s=i),(a+=t.readSVarint())c&&(c=a);else if(7!==r)throw new Error(\"unknown command \"+r)}return[o,l,s,c]},ws.prototype.toGeoJSON=function(t,e,r){var n,i,a=this.extent*Math.pow(2,r),o=this.extent*t,s=this.extent*e,l=this.loadGeometry(),c=ws.types[this.type];function u(t){for(var e=0;e>3;e=1===n?t.readString():2===n?t.readFloat():3===n?t.readDouble():4===n?t.readVarint64():5===n?t.readVarint():6===n?t.readSVarint():7===n?t.readBoolean():null}return e}(r))}function Es(t,e,r){if(3===t){var n=new As(r,r.readVarint()+r.pos);n.length&&(e[n.name]=n)}}Ms.prototype.feature=function(t){if(t<0||t>=this._features.length)throw new Error(\"feature index out of bounds\");this._pbf.pos=this._features[t];var e=this._pbf.readVarint()+this._pbf.pos;return new _s(this._pbf,e,this.extent,this._keys,this._values)};var Ls={VectorTile:function(t,e){this.layers=t.readFields(Es,{},e)},VectorTileFeature:_s,VectorTileLayer:As},Cs=Ls.VectorTileFeature.types,Ps=Math.pow(2,13);function Is(t,e,r,n,i,a,o,s){t.emplaceBack(e,r,2*Math.floor(n*Ps)+o,i*Ps*2,a*Ps*2,Math.round(s))}var Os=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((function(t){return t.id})),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new Ri,this.indexArray=new Yi,this.programConfigurations=new Ua(bs,t.layers,t.zoom),this.segments=new pa,this.stateDependentLayerIds=this.layers.filter((function(t){return t.isStateDependent()})).map((function(t){return t.id}))};function zs(t,e){return t.x===e.x&&(t.x<0||t.x>8192)||t.y===e.y&&(t.y<0||t.y>8192)}function Ds(t){return t.every((function(t){return t.x<0}))||t.every((function(t){return t.x>8192}))||t.every((function(t){return t.y<0}))||t.every((function(t){return t.y>8192}))}Os.prototype.populate=function(t,e,r){this.features=[],this.hasPattern=ds(\"fill-extrusion\",this.layers,e);for(var n=0,i=t;n=1){var y=d[m-1];if(!zs(v,y)){f.vertexLength+4>pa.MAX_VERTEX_ARRAY_LENGTH&&(f=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));var x=v.sub(y)._perp()._unit(),b=y.dist(v);g+b>32768&&(g=0),Is(this.layoutVertexArray,v.x,v.y,x.x,x.y,0,0,g),Is(this.layoutVertexArray,v.x,v.y,x.x,x.y,0,1,g),g+=b,Is(this.layoutVertexArray,y.x,y.y,x.x,x.y,0,0,g),Is(this.layoutVertexArray,y.x,y.y,x.x,x.y,0,1,g);var _=f.vertexLength;this.indexArray.emplaceBack(_,_+2,_+1),this.indexArray.emplaceBack(_+1,_+2,_+3),f.vertexLength+=4,f.primitiveLength+=2}}}}if(f.vertexLength+l>pa.MAX_VERTEX_ARRAY_LENGTH&&(f=this.segments.prepareSegment(l,this.layoutVertexArray,this.indexArray)),\"Polygon\"===Cs[t.type]){for(var w=[],T=[],k=f.vertexLength,A=0,M=s;A=2&&t[l-1].equals(t[l-2]);)l--;for(var c=0;c0;if(T&&v>c){var A=u.dist(p);if(A>2*f){var M=u.sub(u.sub(p)._mult(f/A)._round());this.updateDistance(p,M),this.addCurrentVertex(M,g,0,0,h),p=M}}var S=p&&d,E=S?r:s?\"butt\":n;if(S&&\"round\"===E&&(_i&&(E=\"bevel\"),\"bevel\"===E&&(_>2&&(E=\"flipbevel\"),_100)y=m.mult(-1);else{var L=_*g.add(m).mag()/g.sub(m).mag();y._perp()._mult(L*(k?-1:1))}this.addCurrentVertex(u,y,0,0,h),this.addCurrentVertex(u,y.mult(-1),0,0,h)}else if(\"bevel\"===E||\"fakeround\"===E){var C=-Math.sqrt(_*_-1),P=k?C:0,I=k?0:C;if(p&&this.addCurrentVertex(u,g,P,I,h),\"fakeround\"===E)for(var O=Math.round(180*w/Math.PI/20),z=1;z2*f){var j=u.add(d.sub(u)._mult(f/N)._round());this.updateDistance(u,j),this.addCurrentVertex(j,m,0,0,h),u=j}}}}},qs.prototype.addCurrentVertex=function(t,e,r,n,i,a){void 0===a&&(a=!1);var o=e.x+e.y*r,s=e.y-e.x*r,l=-e.x+e.y*n,c=-e.y-e.x*n;this.addHalfVertex(t,o,s,a,!1,r,i),this.addHalfVertex(t,l,c,a,!0,-n,i),this.distance>Hs/2&&0===this.totalDistance&&(this.distance=0,this.addCurrentVertex(t,e,r,n,i,a))},qs.prototype.addHalfVertex=function(t,e,r,n,i,a,o){var s=t.x,l=t.y,c=.5*this.scaledDistance;this.layoutVertexArray.emplaceBack((s<<1)+(n?1:0),(l<<1)+(i?1:0),Math.round(63*e)+128,Math.round(63*r)+128,1+(0===a?0:a<0?-1:1)|(63&c)<<2,c>>6);var u=o.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,u),o.primitiveLength++),i?this.e2=u:this.e1=u},qs.prototype.updateScaledDistance=function(){this.scaledDistance=this.totalDistance>0?(this.clipStart+(this.clipEnd-this.clipStart)*this.distance/this.totalDistance)*(Hs-1):this.distance},qs.prototype.updateDistance=function(t,e){this.distance+=t.dist(e),this.updateScaledDistance()},Nn(\"LineBucket\",qs,{omit:[\"layers\",\"patternFeatures\"]});var Gs=new Si({\"line-cap\":new wi(Lt.layout_line[\"line-cap\"]),\"line-join\":new Ti(Lt.layout_line[\"line-join\"]),\"line-miter-limit\":new wi(Lt.layout_line[\"line-miter-limit\"]),\"line-round-limit\":new wi(Lt.layout_line[\"line-round-limit\"]),\"line-sort-key\":new Ti(Lt.layout_line[\"line-sort-key\"])}),Ys={paint:new Si({\"line-opacity\":new Ti(Lt.paint_line[\"line-opacity\"]),\"line-color\":new Ti(Lt.paint_line[\"line-color\"]),\"line-translate\":new wi(Lt.paint_line[\"line-translate\"]),\"line-translate-anchor\":new wi(Lt.paint_line[\"line-translate-anchor\"]),\"line-width\":new Ti(Lt.paint_line[\"line-width\"]),\"line-gap-width\":new Ti(Lt.paint_line[\"line-gap-width\"]),\"line-offset\":new Ti(Lt.paint_line[\"line-offset\"]),\"line-blur\":new Ti(Lt.paint_line[\"line-blur\"]),\"line-dasharray\":new Ai(Lt.paint_line[\"line-dasharray\"]),\"line-pattern\":new ki(Lt.paint_line[\"line-pattern\"]),\"line-gradient\":new Mi(Lt.paint_line[\"line-gradient\"])}),layout:Gs},Ws=new(function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.possiblyEvaluate=function(e,r){return r=new pi(Math.floor(r.zoom),{now:r.now,fadeDuration:r.fadeDuration,zoomHistory:r.zoomHistory,transition:r.transition}),t.prototype.possiblyEvaluate.call(this,e,r)},e.prototype.evaluate=function(e,r,n,i){return r=u({},r,{zoom:Math.floor(r.zoom)}),t.prototype.evaluate.call(this,e,r,n,i)},e}(Ti))(Ys.paint.properties[\"line-width\"].specification);Ws.useIntegerZoom=!0;var Xs=function(t){function e(e){t.call(this,e,Ys)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._handleSpecialPaintPropertyUpdate=function(t){\"line-gradient\"===t&&this._updateGradient()},e.prototype._updateGradient=function(){var t=this._transitionablePaint._values[\"line-gradient\"].value.expression;this.gradient=Co(t,\"lineProgress\"),this.gradientTexture=null},e.prototype.recalculate=function(e,r){t.prototype.recalculate.call(this,e,r),this.paint._values[\"line-floorwidth\"]=Ws.possiblyEvaluate(this._transitioningPaint._values[\"line-width\"].value,e)},e.prototype.createBucket=function(t){return new qs(t)},e.prototype.queryRadius=function(t){var e=t,r=Zs(oo(\"line-width\",this,e),oo(\"line-gap-width\",this,e)),n=oo(\"line-offset\",this,e);return r/2+Math.abs(n)+so(this.paint.get(\"line-translate\"))},e.prototype.queryIntersectsFeature=function(t,e,r,n,a,o,s){var l=lo(t,this.paint.get(\"line-translate\"),this.paint.get(\"line-translate-anchor\"),o.angle,s),c=s/2*Zs(this.paint.get(\"line-width\").evaluate(e,r),this.paint.get(\"line-gap-width\").evaluate(e,r)),u=this.paint.get(\"line-offset\").evaluate(e,r);return u&&(n=function(t,e){for(var r=[],n=new i(0,0),a=0;a=3)for(var a=0;a0?e+2*t:t}var Js=Ii([{name:\"a_pos_offset\",components:4,type:\"Int16\"},{name:\"a_data\",components:4,type:\"Uint16\"},{name:\"a_pixeloffset\",components:4,type:\"Int16\"}],4),Ks=Ii([{name:\"a_projected_pos\",components:3,type:\"Float32\"}],4),Qs=(Ii([{name:\"a_fade_opacity\",components:1,type:\"Uint32\"}],4),Ii([{name:\"a_placed\",components:2,type:\"Uint8\"},{name:\"a_shift\",components:2,type:\"Float32\"}])),$s=(Ii([{type:\"Int16\",name:\"anchorPointX\"},{type:\"Int16\",name:\"anchorPointY\"},{type:\"Int16\",name:\"x1\"},{type:\"Int16\",name:\"y1\"},{type:\"Int16\",name:\"x2\"},{type:\"Int16\",name:\"y2\"},{type:\"Uint32\",name:\"featureIndex\"},{type:\"Uint16\",name:\"sourceLayerIndex\"},{type:\"Uint16\",name:\"bucketIndex\"}]),Ii([{name:\"a_pos\",components:2,type:\"Int16\"},{name:\"a_anchor_pos\",components:2,type:\"Int16\"},{name:\"a_extrude\",components:2,type:\"Int16\"}],4)),tl=Ii([{name:\"a_pos\",components:2,type:\"Float32\"},{name:\"a_radius\",components:1,type:\"Float32\"},{name:\"a_flags\",components:2,type:\"Int16\"}],4);Ii([{name:\"triangle\",components:3,type:\"Uint16\"}]),Ii([{type:\"Int16\",name:\"anchorX\"},{type:\"Int16\",name:\"anchorY\"},{type:\"Uint16\",name:\"glyphStartIndex\"},{type:\"Uint16\",name:\"numGlyphs\"},{type:\"Uint32\",name:\"vertexStartIndex\"},{type:\"Uint32\",name:\"lineStartIndex\"},{type:\"Uint32\",name:\"lineLength\"},{type:\"Uint16\",name:\"segment\"},{type:\"Uint16\",name:\"lowerSize\"},{type:\"Uint16\",name:\"upperSize\"},{type:\"Float32\",name:\"lineOffsetX\"},{type:\"Float32\",name:\"lineOffsetY\"},{type:\"Uint8\",name:\"writingMode\"},{type:\"Uint8\",name:\"placedOrientation\"},{type:\"Uint8\",name:\"hidden\"},{type:\"Uint32\",name:\"crossTileID\"},{type:\"Int16\",name:\"associatedIconIndex\"}]),Ii([{type:\"Int16\",name:\"anchorX\"},{type:\"Int16\",name:\"anchorY\"},{type:\"Int16\",name:\"rightJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"centerJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"leftJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"verticalPlacedTextSymbolIndex\"},{type:\"Int16\",name:\"placedIconSymbolIndex\"},{type:\"Int16\",name:\"verticalPlacedIconSymbolIndex\"},{type:\"Uint16\",name:\"key\"},{type:\"Uint16\",name:\"textBoxStartIndex\"},{type:\"Uint16\",name:\"textBoxEndIndex\"},{type:\"Uint16\",name:\"verticalTextBoxStartIndex\"},{type:\"Uint16\",name:\"verticalTextBoxEndIndex\"},{type:\"Uint16\",name:\"iconBoxStartIndex\"},{type:\"Uint16\",name:\"iconBoxEndIndex\"},{type:\"Uint16\",name:\"verticalIconBoxStartIndex\"},{type:\"Uint16\",name:\"verticalIconBoxEndIndex\"},{type:\"Uint16\",name:\"featureIndex\"},{type:\"Uint16\",name:\"numHorizontalGlyphVertices\"},{type:\"Uint16\",name:\"numVerticalGlyphVertices\"},{type:\"Uint16\",name:\"numIconVertices\"},{type:\"Uint16\",name:\"numVerticalIconVertices\"},{type:\"Uint16\",name:\"useRuntimeCollisionCircles\"},{type:\"Uint32\",name:\"crossTileID\"},{type:\"Float32\",name:\"textBoxScale\"},{type:\"Float32\",components:2,name:\"textOffset\"},{type:\"Float32\",name:\"collisionCircleDiameter\"}]),Ii([{type:\"Float32\",name:\"offsetX\"}]),Ii([{type:\"Int16\",name:\"x\"},{type:\"Int16\",name:\"y\"},{type:\"Int16\",name:\"tileUnitDistanceFromAnchor\"}]);function el(t,e,r){return t.sections.forEach((function(t){t.text=function(t,e,r){var n=e.layout.get(\"text-transform\").evaluate(r,{});return\"uppercase\"===n?t=t.toLocaleUpperCase():\"lowercase\"===n&&(t=t.toLocaleLowerCase()),hi.applyArabicShaping&&(t=hi.applyArabicShaping(t)),t}(t.text,e,r)})),t}var rl={\"!\":\"\\ufe15\",\"#\":\"\\uff03\",$:\"\\uff04\",\"%\":\"\\uff05\",\"&\":\"\\uff06\",\"(\":\"\\ufe35\",\")\":\"\\ufe36\",\"*\":\"\\uff0a\",\"+\":\"\\uff0b\",\",\":\"\\ufe10\",\"-\":\"\\ufe32\",\".\":\"\\u30fb\",\"/\":\"\\uff0f\",\":\":\"\\ufe13\",\";\":\"\\ufe14\",\"<\":\"\\ufe3f\",\"=\":\"\\uff1d\",\">\":\"\\ufe40\",\"?\":\"\\ufe16\",\"@\":\"\\uff20\",\"[\":\"\\ufe47\",\"\\\\\":\"\\uff3c\",\"]\":\"\\ufe48\",\"^\":\"\\uff3e\",_:\"\\ufe33\",\"`\":\"\\uff40\",\"{\":\"\\ufe37\",\"|\":\"\\u2015\",\"}\":\"\\ufe38\",\"~\":\"\\uff5e\",\"\\xa2\":\"\\uffe0\",\"\\xa3\":\"\\uffe1\",\"\\xa5\":\"\\uffe5\",\"\\xa6\":\"\\uffe4\",\"\\xac\":\"\\uffe2\",\"\\xaf\":\"\\uffe3\",\"\\u2013\":\"\\ufe32\",\"\\u2014\":\"\\ufe31\",\"\\u2018\":\"\\ufe43\",\"\\u2019\":\"\\ufe44\",\"\\u201c\":\"\\ufe41\",\"\\u201d\":\"\\ufe42\",\"\\u2026\":\"\\ufe19\",\"\\u2027\":\"\\u30fb\",\"\\u20a9\":\"\\uffe6\",\"\\u3001\":\"\\ufe11\",\"\\u3002\":\"\\ufe12\",\"\\u3008\":\"\\ufe3f\",\"\\u3009\":\"\\ufe40\",\"\\u300a\":\"\\ufe3d\",\"\\u300b\":\"\\ufe3e\",\"\\u300c\":\"\\ufe41\",\"\\u300d\":\"\\ufe42\",\"\\u300e\":\"\\ufe43\",\"\\u300f\":\"\\ufe44\",\"\\u3010\":\"\\ufe3b\",\"\\u3011\":\"\\ufe3c\",\"\\u3014\":\"\\ufe39\",\"\\u3015\":\"\\ufe3a\",\"\\u3016\":\"\\ufe17\",\"\\u3017\":\"\\ufe18\",\"\\uff01\":\"\\ufe15\",\"\\uff08\":\"\\ufe35\",\"\\uff09\":\"\\ufe36\",\"\\uff0c\":\"\\ufe10\",\"\\uff0d\":\"\\ufe32\",\"\\uff0e\":\"\\u30fb\",\"\\uff1a\":\"\\ufe13\",\"\\uff1b\":\"\\ufe14\",\"\\uff1c\":\"\\ufe3f\",\"\\uff1e\":\"\\ufe40\",\"\\uff1f\":\"\\ufe16\",\"\\uff3b\":\"\\ufe47\",\"\\uff3d\":\"\\ufe48\",\"\\uff3f\":\"\\ufe33\",\"\\uff5b\":\"\\ufe37\",\"\\uff5c\":\"\\u2015\",\"\\uff5d\":\"\\ufe38\",\"\\uff5f\":\"\\ufe35\",\"\\uff60\":\"\\ufe36\",\"\\uff61\":\"\\ufe12\",\"\\uff62\":\"\\ufe41\",\"\\uff63\":\"\\ufe42\"};var nl=function(t,e,r,n,i){var a,o,s=8*i-n-1,l=(1<>1,u=-7,f=r?i-1:0,h=r?-1:1,p=t[e+f];for(f+=h,a=p&(1<<-u)-1,p>>=-u,u+=s;u>0;a=256*a+t[e+f],f+=h,u-=8);for(o=a&(1<<-u)-1,a>>=-u,u+=n;u>0;o=256*o+t[e+f],f+=h,u-=8);if(0===a)a=1-c;else{if(a===l)return o?NaN:1/0*(p?-1:1);o+=Math.pow(2,n),a-=c}return(p?-1:1)*o*Math.pow(2,a-n)},il=function(t,e,r,n,i,a){var o,s,l,c=8*a-i-1,u=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:a-1,d=n?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,o=u):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),(e+=o+f>=1?h/l:h*Math.pow(2,1-f))*l>=2&&(o++,l/=2),o+f>=u?(s=0,o=u):o+f>=1?(s=(e*l-1)*Math.pow(2,i),o+=f):(s=e*Math.pow(2,f-1)*Math.pow(2,i),o=0));i>=8;t[r+p]=255&s,p+=d,s/=256,i-=8);for(o=o<0;t[r+p]=255&o,p+=d,o/=256,c-=8);t[r+p-d]|=128*g},al=ol;function ol(t){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(t)?t:new Uint8Array(t||0),this.pos=0,this.type=0,this.length=this.buf.length}ol.Varint=0,ol.Fixed64=1,ol.Bytes=2,ol.Fixed32=5;var sl=\"undefined\"==typeof TextDecoder?null:new TextDecoder(\"utf8\");function ll(t){return t.type===ol.Bytes?t.readVarint()+t.pos:t.pos+1}function cl(t,e,r){return r?4294967296*e+(t>>>0):4294967296*(e>>>0)+(t>>>0)}function ul(t,e,r){var n=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.floor(Math.log(e)/(7*Math.LN2));r.realloc(n);for(var i=r.pos-1;i>=t;i--)r.buf[i+n]=r.buf[i]}function fl(t,e){for(var r=0;r>>8,t[r+2]=e>>>16,t[r+3]=e>>>24}function wl(t,e){return(t[e]|t[e+1]<<8|t[e+2]<<16)+(t[e+3]<<24)}ol.prototype={destroy:function(){this.buf=null},readFields:function(t,e,r){for(r=r||this.length;this.pos>3,a=this.pos;this.type=7&n,t(i,e,this),this.pos===a&&this.skip(n)}return e},readMessage:function(t,e){return this.readFields(t,e,this.readVarint()+this.pos)},readFixed32:function(){var t=bl(this.buf,this.pos);return this.pos+=4,t},readSFixed32:function(){var t=wl(this.buf,this.pos);return this.pos+=4,t},readFixed64:function(){var t=bl(this.buf,this.pos)+4294967296*bl(this.buf,this.pos+4);return this.pos+=8,t},readSFixed64:function(){var t=bl(this.buf,this.pos)+4294967296*wl(this.buf,this.pos+4);return this.pos+=8,t},readFloat:function(){var t=nl(this.buf,this.pos,!0,23,4);return this.pos+=4,t},readDouble:function(){var t=nl(this.buf,this.pos,!0,52,8);return this.pos+=8,t},readVarint:function(t){var e,r,n=this.buf;return e=127&(r=n[this.pos++]),r<128?e:(e|=(127&(r=n[this.pos++]))<<7,r<128?e:(e|=(127&(r=n[this.pos++]))<<14,r<128?e:(e|=(127&(r=n[this.pos++]))<<21,r<128?e:function(t,e,r){var n,i,a=r.buf;if(i=a[r.pos++],n=(112&i)>>4,i<128)return cl(t,n,e);if(i=a[r.pos++],n|=(127&i)<<3,i<128)return cl(t,n,e);if(i=a[r.pos++],n|=(127&i)<<10,i<128)return cl(t,n,e);if(i=a[r.pos++],n|=(127&i)<<17,i<128)return cl(t,n,e);if(i=a[r.pos++],n|=(127&i)<<24,i<128)return cl(t,n,e);if(i=a[r.pos++],n|=(1&i)<<31,i<128)return cl(t,n,e);throw new Error(\"Expected varint not more than 10 bytes\")}(e|=(15&(r=n[this.pos]))<<28,t,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var t=this.readVarint();return t%2==1?(t+1)/-2:t/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var t=this.readVarint()+this.pos,e=this.pos;return this.pos=t,t-e>=12&&sl?function(t,e,r){return sl.decode(t.subarray(e,r))}(this.buf,e,t):function(t,e,r){var n=\"\",i=e;for(;i239?4:l>223?3:l>191?2:1;if(i+u>r)break;1===u?l<128&&(c=l):2===u?128==(192&(a=t[i+1]))&&(c=(31&l)<<6|63&a)<=127&&(c=null):3===u?(a=t[i+1],o=t[i+2],128==(192&a)&&128==(192&o)&&((c=(15&l)<<12|(63&a)<<6|63&o)<=2047||c>=55296&&c<=57343)&&(c=null)):4===u&&(a=t[i+1],o=t[i+2],s=t[i+3],128==(192&a)&&128==(192&o)&&128==(192&s)&&((c=(15&l)<<18|(63&a)<<12|(63&o)<<6|63&s)<=65535||c>=1114112)&&(c=null)),null===c?(c=65533,u=1):c>65535&&(c-=65536,n+=String.fromCharCode(c>>>10&1023|55296),c=56320|1023&c),n+=String.fromCharCode(c),i+=u}return n}(this.buf,e,t)},readBytes:function(){var t=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,t);return this.pos=t,e},readPackedVarint:function(t,e){if(this.type!==ol.Bytes)return t.push(this.readVarint(e));var r=ll(this);for(t=t||[];this.pos127;);else if(e===ol.Bytes)this.pos=this.readVarint()+this.pos;else if(e===ol.Fixed32)this.pos+=4;else{if(e!==ol.Fixed64)throw new Error(\"Unimplemented type: \"+e);this.pos+=8}},writeTag:function(t,e){this.writeVarint(t<<3|e)},realloc:function(t){for(var e=this.length||16;e268435455||t<0?function(t,e){var r,n;t>=0?(r=t%4294967296|0,n=t/4294967296|0):(n=~(-t/4294967296),4294967295^(r=~(-t%4294967296))?r=r+1|0:(r=0,n=n+1|0));if(t>=0x10000000000000000||t<-0x10000000000000000)throw new Error(\"Given varint doesn't fit into 10 bytes\");e.realloc(10),function(t,e,r){r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos]=127&t}(r,0,e),function(t,e){var r=(7&t)<<4;if(e.buf[e.pos++]|=r|((t>>>=3)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;e.buf[e.pos++]=127&t}(n,e)}(t,this):(this.realloc(4),this.buf[this.pos++]=127&t|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=t>>>7&127))))},writeSVarint:function(t){this.writeVarint(t<0?2*-t-1:2*t)},writeBoolean:function(t){this.writeVarint(Boolean(t))},writeString:function(t){t=String(t),this.realloc(4*t.length),this.pos++;var e=this.pos;this.pos=function(t,e,r){for(var n,i,a=0;a55295&&n<57344){if(!i){n>56319||a+1===e.length?(t[r++]=239,t[r++]=191,t[r++]=189):i=n;continue}if(n<56320){t[r++]=239,t[r++]=191,t[r++]=189,i=n;continue}n=i-55296<<10|n-56320|65536,i=null}else i&&(t[r++]=239,t[r++]=191,t[r++]=189,i=null);n<128?t[r++]=n:(n<2048?t[r++]=n>>6|192:(n<65536?t[r++]=n>>12|224:(t[r++]=n>>18|240,t[r++]=n>>12&63|128),t[r++]=n>>6&63|128),t[r++]=63&n|128)}return r}(this.buf,t,this.pos);var r=this.pos-e;r>=128&&ul(e,r,this),this.pos=e-1,this.writeVarint(r),this.pos+=r},writeFloat:function(t){this.realloc(4),il(this.buf,t,this.pos,!0,23,4),this.pos+=4},writeDouble:function(t){this.realloc(8),il(this.buf,t,this.pos,!0,52,8),this.pos+=8},writeBytes:function(t){var e=t.length;this.writeVarint(e),this.realloc(e);for(var r=0;r=128&&ul(r,n,this),this.pos=r-1,this.writeVarint(n),this.pos+=n},writeMessage:function(t,e,r){this.writeTag(t,ol.Bytes),this.writeRawMessage(e,r)},writePackedVarint:function(t,e){e.length&&this.writeMessage(t,fl,e)},writePackedSVarint:function(t,e){e.length&&this.writeMessage(t,hl,e)},writePackedBoolean:function(t,e){e.length&&this.writeMessage(t,gl,e)},writePackedFloat:function(t,e){e.length&&this.writeMessage(t,pl,e)},writePackedDouble:function(t,e){e.length&&this.writeMessage(t,dl,e)},writePackedFixed32:function(t,e){e.length&&this.writeMessage(t,ml,e)},writePackedSFixed32:function(t,e){e.length&&this.writeMessage(t,vl,e)},writePackedFixed64:function(t,e){e.length&&this.writeMessage(t,yl,e)},writePackedSFixed64:function(t,e){e.length&&this.writeMessage(t,xl,e)},writeBytesField:function(t,e){this.writeTag(t,ol.Bytes),this.writeBytes(e)},writeFixed32Field:function(t,e){this.writeTag(t,ol.Fixed32),this.writeFixed32(e)},writeSFixed32Field:function(t,e){this.writeTag(t,ol.Fixed32),this.writeSFixed32(e)},writeFixed64Field:function(t,e){this.writeTag(t,ol.Fixed64),this.writeFixed64(e)},writeSFixed64Field:function(t,e){this.writeTag(t,ol.Fixed64),this.writeSFixed64(e)},writeVarintField:function(t,e){this.writeTag(t,ol.Varint),this.writeVarint(e)},writeSVarintField:function(t,e){this.writeTag(t,ol.Varint),this.writeSVarint(e)},writeStringField:function(t,e){this.writeTag(t,ol.Bytes),this.writeString(e)},writeFloatField:function(t,e){this.writeTag(t,ol.Fixed32),this.writeFloat(e)},writeDoubleField:function(t,e){this.writeTag(t,ol.Fixed64),this.writeDouble(e)},writeBooleanField:function(t,e){this.writeVarintField(t,Boolean(e))}};function Tl(t,e,r){1===t&&r.readMessage(kl,e)}function kl(t,e,r){if(3===t){var n=r.readMessage(Al,{}),i=n.id,a=n.bitmap,o=n.width,s=n.height,l=n.left,c=n.top,u=n.advance;e.push({id:i,bitmap:new So({width:o+6,height:s+6},a),metrics:{width:o,height:s,left:l,top:c,advance:u}})}}function Al(t,e,r){1===t?e.id=r.readVarint():2===t?e.bitmap=r.readBytes():3===t?e.width=r.readVarint():4===t?e.height=r.readVarint():5===t?e.left=r.readSVarint():6===t?e.top=r.readSVarint():7===t&&(e.advance=r.readVarint())}function Ml(t){for(var e=0,r=0,n=0,i=t;n=0;h--){var p=o[h];if(!(f.w>p.w||f.h>p.h)){if(f.x=p.x,f.y=p.y,l=Math.max(l,f.y+f.h),s=Math.max(s,f.x+f.w),f.w===p.w&&f.h===p.h){var d=o.pop();h0&&N>A&&(A=N)}else{var j=r[S.fontStack],U=j&&j[L];if(U&&U.rect)I=U.rect,P=U.metrics;else{var V=e[S.fontStack],H=V&&V[L];if(!H)continue;P=H.metrics}C=24*(_-S.scale)}D?(t.verticalizable=!0,k.push({glyph:L,imageName:O,x:h,y:p+C,vertical:D,scale:S.scale,fontStack:S.fontStack,sectionIndex:E,metrics:P,rect:I}),h+=z*S.scale+c):(k.push({glyph:L,imageName:O,x:h,y:p+C,vertical:D,scale:S.scale,fontStack:S.fontStack,sectionIndex:E,metrics:P,rect:I}),h+=P.advance*S.scale+c)}if(0!==k.length){var q=h-c;d=Math.max(q,d),Vl(k,0,k.length-1,m,A)}h=0;var G=a*_+A;T.lineOffset=Math.max(A,w),p+=G,g=Math.max(G,g),++v}else p+=a,++v}var Y;var W=p- -17,X=Ul(o),Z=X.horizontalAlign,J=X.verticalAlign;(function(t,e,r,n,i,a,o,s,l){var c=(e-r)*i,u=0;u=a!==o?-s*n- -17:(-n*l+.5)*o;for(var f=0,h=t;f=0&&n>=t&&zl[this.text.charCodeAt(n)];n--)r--;this.text=this.text.substring(t,r),this.sectionIndex=this.sectionIndex.slice(t,r)},Il.prototype.substring=function(t,e){var r=new Il;return r.text=this.text.substring(t,e),r.sectionIndex=this.sectionIndex.slice(t,e),r.sections=this.sections,r},Il.prototype.toString=function(){return this.text},Il.prototype.getMaxScale=function(){var t=this;return this.sectionIndex.reduce((function(e,r){return Math.max(e,t.sections[r].scale)}),0)},Il.prototype.addTextSection=function(t,e){this.text+=t.text,this.sections.push(Pl.forText(t.scale,t.fontStack||e));for(var r=this.sections.length-1,n=0;n=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)};var zl={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},Dl={};function Rl(t,e,r,n,i,a){if(e.imageName){var o=n[e.imageName];return o?o.displaySize[0]*e.scale*24/a+i:0}var s=r[e.fontStack],l=s&&s[t];return l?l.metrics.advance*e.scale+i:0}function Fl(t,e,r,n){var i=Math.pow(t-e,2);return n?t=0,f=0,h=0;h-r/2;){if(--o<0)return!1;s-=t[o].dist(a),a=t[o]}s+=t[o].dist(t[o+1]),o++;for(var l=[],c=0;sn;)c-=l.shift().angleDelta;if(c>i)return!1;o++,s+=f.dist(h)}return!0}function Jl(t){for(var e=0,r=0;rc){var d=(c-l)/p,g=qe(f.x,h.x,d),m=qe(f.y,h.y,d),v=new ql(g,m,h.angleTo(f),u);return v._round(),!o||Zl(t,v,s,o,e)?v:void 0}l+=p}}function tc(t,e,r,n,i,a,o,s,l){var c=Kl(n,a,o),u=Ql(n,i),f=u*o,h=0===t[0].x||t[0].x===l||0===t[0].y||t[0].y===l;return e-f=0&&_=0&&w=0&&p+u<=f){var T=new ql(_,w,x,g);T._round(),i&&!Zl(e,T,o,i,a)||d.push(T)}}h+=y}l||d.length||s||(d=t(e,h/2,n,i,a,o,s,!0,c));return d}(t,h?e/2*s%e:(u/2+2*a)*o*s%e,e,c,r,f,h,!1,l)}function ec(t,e,r,n,a){for(var o=[],s=0;s=n&&h.x>=n||(f.x>=n?f=new i(n,f.y+(h.y-f.y)*((n-f.x)/(h.x-f.x)))._round():h.x>=n&&(h=new i(n,f.y+(h.y-f.y)*((n-f.x)/(h.x-f.x)))._round()),f.y>=a&&h.y>=a||(f.y>=a?f=new i(f.x+(h.x-f.x)*((a-f.y)/(h.y-f.y)),a)._round():h.y>=a&&(h=new i(f.x+(h.x-f.x)*((a-f.y)/(h.y-f.y)),a)._round()),c&&f.equals(c[c.length-1])||(c=[f],o.push(c)),c.push(h)))))}return o}function rc(t,e,r,n){var a=[],o=t.image,s=o.pixelRatio,l=o.paddedRect.w-2,c=o.paddedRect.h-2,u=t.right-t.left,f=t.bottom-t.top,h=o.stretchX||[[0,l]],p=o.stretchY||[[0,c]],d=function(t,e){return t+e[1]-e[0]},g=h.reduce(d,0),m=p.reduce(d,0),v=l-g,y=c-m,x=0,b=g,_=0,w=m,T=0,k=v,A=0,M=y;if(o.content&&n){var S=o.content;x=nc(h,0,S[0]),_=nc(p,0,S[1]),b=nc(h,S[0],S[2]),w=nc(p,S[1],S[3]),T=S[0]-x,A=S[1]-_,k=S[2]-S[0]-b,M=S[3]-S[1]-w}var E=function(n,a,l,c){var h=ac(n.stretch-x,b,u,t.left),p=oc(n.fixed-T,k,n.stretch,g),d=ac(a.stretch-_,w,f,t.top),v=oc(a.fixed-A,M,a.stretch,m),y=ac(l.stretch-x,b,u,t.left),S=oc(l.fixed-T,k,l.stretch,g),E=ac(c.stretch-_,w,f,t.top),L=oc(c.fixed-A,M,c.stretch,m),C=new i(h,d),P=new i(y,d),I=new i(y,E),O=new i(h,E),z=new i(p/s,v/s),D=new i(S/s,L/s),R=e*Math.PI/180;if(R){var F=Math.sin(R),B=Math.cos(R),N=[B,-F,F,B];C._matMult(N),P._matMult(N),O._matMult(N),I._matMult(N)}var j=n.stretch+n.fixed,U=l.stretch+l.fixed,V=a.stretch+a.fixed,H=c.stretch+c.fixed;return{tl:C,tr:P,bl:O,br:I,tex:{x:o.paddedRect.x+1+j,y:o.paddedRect.y+1+V,w:U-j,h:H-V},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:z,pixelOffsetBR:D,minFontScaleX:k/s/u,minFontScaleY:M/s/f,isSDF:r}};if(n&&(o.stretchX||o.stretchY))for(var L=ic(h,v,g),C=ic(p,y,m),P=0;P0&&(d=Math.max(10,d),this.circleDiameter=d)}else{var g=o.top*s-l,m=o.bottom*s+l,v=o.left*s-l,y=o.right*s+l,x=o.collisionPadding;if(x&&(v-=x[0]*s,g-=x[1]*s,y+=x[2]*s,m+=x[3]*s),u){var b=new i(v,g),_=new i(y,g),w=new i(v,m),T=new i(y,m),k=u*Math.PI/180;b._rotate(k),_._rotate(k),w._rotate(k),T._rotate(k),v=Math.min(b.x,_.x,w.x,T.x),y=Math.max(b.x,_.x,w.x,T.x),g=Math.min(b.y,_.y,w.y,T.y),m=Math.max(b.y,_.y,w.y,T.y)}t.emplaceBack(e.x,e.y,v,g,y,m,r,n,a)}this.boxEndIndex=t.length},lc=function(t,e){if(void 0===t&&(t=[]),void 0===e&&(e=cc),this.data=t,this.length=this.data.length,this.compare=e,this.length>0)for(var r=(this.length>>1)-1;r>=0;r--)this._down(r)};function cc(t,e){return te?1:0}function uc(t,e,r){void 0===e&&(e=1),void 0===r&&(r=!1);for(var n=1/0,a=1/0,o=-1/0,s=-1/0,l=t[0],c=0;co)&&(o=u.x),(!c||u.y>s)&&(s=u.y)}var f=o-n,h=s-a,p=Math.min(f,h),d=p/2,g=new lc([],fc);if(0===p)return new i(n,a);for(var m=n;my.d||!y.d)&&(y=b,r&&console.log(\"found best %d after %d probes\",Math.round(1e4*b.d)/1e4,x)),b.max-y.d<=e||(d=b.h/2,g.push(new hc(b.p.x-d,b.p.y-d,d,t)),g.push(new hc(b.p.x+d,b.p.y-d,d,t)),g.push(new hc(b.p.x-d,b.p.y+d,d,t)),g.push(new hc(b.p.x+d,b.p.y+d,d,t)),x+=4)}return r&&(console.log(\"num probes: \"+x),console.log(\"best distance: \"+y.d)),y.p}function fc(t,e){return e.max-t.max}function hc(t,e,r,n){this.p=new i(t,e),this.h=r,this.d=function(t,e){for(var r=!1,n=1/0,i=0;it.y!=u.y>t.y&&t.x<(u.x-c.x)*(t.y-c.y)/(u.y-c.y)+c.x&&(r=!r),n=Math.min(n,ro(t,c,u))}return(r?1:-1)*Math.sqrt(n)}(this.p,n),this.max=this.d+this.h*Math.SQRT2}lc.prototype.push=function(t){this.data.push(t),this.length++,this._up(this.length-1)},lc.prototype.pop=function(){if(0!==this.length){var t=this.data[0],e=this.data.pop();return this.length--,this.length>0&&(this.data[0]=e,this._down(0)),t}},lc.prototype.peek=function(){return this.data[0]},lc.prototype._up=function(t){for(var e=this.data,r=this.compare,n=e[t];t>0;){var i=t-1>>1,a=e[i];if(r(n,a)>=0)break;e[t]=a,t=i}e[t]=n},lc.prototype._down=function(t){for(var e=this.data,r=this.compare,n=this.length>>1,i=e[t];t=0)break;e[t]=o,t=a}e[t]=i};var pc=Number.POSITIVE_INFINITY;function dc(t,e){return e[1]!==pc?function(t,e,r){var n=0,i=0;switch(e=Math.abs(e),r=Math.abs(r),t){case\"top-right\":case\"top-left\":case\"top\":i=r-7;break;case\"bottom-right\":case\"bottom-left\":case\"bottom\":i=7-r}switch(t){case\"top-right\":case\"bottom-right\":case\"right\":n=-e;break;case\"top-left\":case\"bottom-left\":case\"left\":n=e}return[n,i]}(t,e[0],e[1]):function(t,e){var r=0,n=0;e<0&&(e=0);var i=e/Math.sqrt(2);switch(t){case\"top-right\":case\"top-left\":n=i-7;break;case\"bottom-right\":case\"bottom-left\":n=7-i;break;case\"bottom\":n=7-e;break;case\"top\":n=e-7}switch(t){case\"top-right\":case\"bottom-right\":r=-i;break;case\"top-left\":case\"bottom-left\":r=i;break;case\"left\":r=e;break;case\"right\":r=-e}return[r,n]}(t,e[0])}function gc(t){switch(t){case\"right\":case\"top-right\":case\"bottom-right\":return\"right\";case\"left\":case\"top-left\":case\"bottom-left\":return\"left\"}return\"center\"}function mc(t,e,r,n,a,o,s,l,c,u,f,h,p,d,g){var m=function(t,e,r,n,a,o,s,l){for(var c=n.layout.get(\"text-rotate\").evaluate(o,{})*Math.PI/180,u=[],f=0,h=e.positionedLines;f32640&&_(t.layerIds[0]+': Value for \"text-size\" is >= 255. Reduce your \"text-size\".'):\"composite\"===v.kind&&((y=[128*d.compositeTextSizes[0].evaluate(s,{},g),128*d.compositeTextSizes[1].evaluate(s,{},g)])[0]>32640||y[1]>32640)&&_(t.layerIds[0]+': Value for \"text-size\" is >= 255. Reduce your \"text-size\".'),t.addSymbols(t.text,m,y,l,o,s,u,e,c.lineStartIndex,c.lineLength,p,g);for(var x=0,b=f;x=0;o--)if(n.dist(a[o])0)&&(\"constant\"!==a.value.kind||a.value.value.length>0),c=\"constant\"!==s.value.kind||!!s.value.value||Object.keys(s.parameters).length>0,u=i.get(\"symbol-sort-key\");if(this.features=[],l||c){for(var f=e.iconDependencies,h=e.glyphDependencies,p=e.availableImages,d=new pi(this.zoom),g=0,m=t;g=0;for(var O=0,z=k.sections;O=0;s--)a[s]={x:e[s].x,y:e[s].y,tileUnitDistanceFromAnchor:i},s>0&&(i+=e[s-1].dist(e[s]));for(var l=0;l0},Mc.prototype.hasIconData=function(){return this.icon.segments.get().length>0},Mc.prototype.hasDebugData=function(){return this.textCollisionBox&&this.iconCollisionBox},Mc.prototype.hasTextCollisionBoxData=function(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0},Mc.prototype.hasIconCollisionBoxData=function(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0},Mc.prototype.addIndicesForPlacedSymbol=function(t,e){for(var r=t.placedSymbolArray.get(e),n=r.vertexStartIndex+4*r.numGlyphs,i=r.vertexStartIndex;i1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(t),this.sortedAngle=t,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(var r=0,n=this.symbolInstanceIndexes;r=0&&n.indexOf(t)===r&&e.addIndicesForPlacedSymbol(e.text,t)})),a.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,a.verticalPlacedTextSymbolIndex),a.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,a.placedIconSymbolIndex),a.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,a.verticalPlacedIconSymbolIndex)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}},Nn(\"SymbolBucket\",Mc,{omit:[\"layers\",\"collisionBoxArray\",\"features\",\"compareText\"]}),Mc.MAX_GLYPHS=65535,Mc.addDynamicAttributes=wc;var Sc=new Si({\"symbol-placement\":new wi(Lt.layout_symbol[\"symbol-placement\"]),\"symbol-spacing\":new wi(Lt.layout_symbol[\"symbol-spacing\"]),\"symbol-avoid-edges\":new wi(Lt.layout_symbol[\"symbol-avoid-edges\"]),\"symbol-sort-key\":new Ti(Lt.layout_symbol[\"symbol-sort-key\"]),\"symbol-z-order\":new wi(Lt.layout_symbol[\"symbol-z-order\"]),\"icon-allow-overlap\":new wi(Lt.layout_symbol[\"icon-allow-overlap\"]),\"icon-ignore-placement\":new wi(Lt.layout_symbol[\"icon-ignore-placement\"]),\"icon-optional\":new wi(Lt.layout_symbol[\"icon-optional\"]),\"icon-rotation-alignment\":new wi(Lt.layout_symbol[\"icon-rotation-alignment\"]),\"icon-size\":new Ti(Lt.layout_symbol[\"icon-size\"]),\"icon-text-fit\":new wi(Lt.layout_symbol[\"icon-text-fit\"]),\"icon-text-fit-padding\":new wi(Lt.layout_symbol[\"icon-text-fit-padding\"]),\"icon-image\":new Ti(Lt.layout_symbol[\"icon-image\"]),\"icon-rotate\":new Ti(Lt.layout_symbol[\"icon-rotate\"]),\"icon-padding\":new wi(Lt.layout_symbol[\"icon-padding\"]),\"icon-keep-upright\":new wi(Lt.layout_symbol[\"icon-keep-upright\"]),\"icon-offset\":new Ti(Lt.layout_symbol[\"icon-offset\"]),\"icon-anchor\":new Ti(Lt.layout_symbol[\"icon-anchor\"]),\"icon-pitch-alignment\":new wi(Lt.layout_symbol[\"icon-pitch-alignment\"]),\"text-pitch-alignment\":new wi(Lt.layout_symbol[\"text-pitch-alignment\"]),\"text-rotation-alignment\":new wi(Lt.layout_symbol[\"text-rotation-alignment\"]),\"text-field\":new Ti(Lt.layout_symbol[\"text-field\"]),\"text-font\":new Ti(Lt.layout_symbol[\"text-font\"]),\"text-size\":new Ti(Lt.layout_symbol[\"text-size\"]),\"text-max-width\":new Ti(Lt.layout_symbol[\"text-max-width\"]),\"text-line-height\":new wi(Lt.layout_symbol[\"text-line-height\"]),\"text-letter-spacing\":new Ti(Lt.layout_symbol[\"text-letter-spacing\"]),\"text-justify\":new Ti(Lt.layout_symbol[\"text-justify\"]),\"text-radial-offset\":new Ti(Lt.layout_symbol[\"text-radial-offset\"]),\"text-variable-anchor\":new wi(Lt.layout_symbol[\"text-variable-anchor\"]),\"text-anchor\":new Ti(Lt.layout_symbol[\"text-anchor\"]),\"text-max-angle\":new wi(Lt.layout_symbol[\"text-max-angle\"]),\"text-writing-mode\":new wi(Lt.layout_symbol[\"text-writing-mode\"]),\"text-rotate\":new Ti(Lt.layout_symbol[\"text-rotate\"]),\"text-padding\":new wi(Lt.layout_symbol[\"text-padding\"]),\"text-keep-upright\":new wi(Lt.layout_symbol[\"text-keep-upright\"]),\"text-transform\":new Ti(Lt.layout_symbol[\"text-transform\"]),\"text-offset\":new Ti(Lt.layout_symbol[\"text-offset\"]),\"text-allow-overlap\":new wi(Lt.layout_symbol[\"text-allow-overlap\"]),\"text-ignore-placement\":new wi(Lt.layout_symbol[\"text-ignore-placement\"]),\"text-optional\":new wi(Lt.layout_symbol[\"text-optional\"])}),Ec={paint:new Si({\"icon-opacity\":new Ti(Lt.paint_symbol[\"icon-opacity\"]),\"icon-color\":new Ti(Lt.paint_symbol[\"icon-color\"]),\"icon-halo-color\":new Ti(Lt.paint_symbol[\"icon-halo-color\"]),\"icon-halo-width\":new Ti(Lt.paint_symbol[\"icon-halo-width\"]),\"icon-halo-blur\":new Ti(Lt.paint_symbol[\"icon-halo-blur\"]),\"icon-translate\":new wi(Lt.paint_symbol[\"icon-translate\"]),\"icon-translate-anchor\":new wi(Lt.paint_symbol[\"icon-translate-anchor\"]),\"text-opacity\":new Ti(Lt.paint_symbol[\"text-opacity\"]),\"text-color\":new Ti(Lt.paint_symbol[\"text-color\"],{runtimeType:Ut,getOverride:function(t){return t.textColor},hasOverride:function(t){return!!t.textColor}}),\"text-halo-color\":new Ti(Lt.paint_symbol[\"text-halo-color\"]),\"text-halo-width\":new Ti(Lt.paint_symbol[\"text-halo-width\"]),\"text-halo-blur\":new Ti(Lt.paint_symbol[\"text-halo-blur\"]),\"text-translate\":new wi(Lt.paint_symbol[\"text-translate\"]),\"text-translate-anchor\":new wi(Lt.paint_symbol[\"text-translate-anchor\"])}),layout:Sc},Lc=function(t){this.type=t.property.overrides?t.property.overrides.runtimeType:Ft,this.defaultValue=t};Lc.prototype.evaluate=function(t){if(t.formattedSection){var e=this.defaultValue.property.overrides;if(e&&e.hasOverride(t.formattedSection))return e.getOverride(t.formattedSection)}return t.feature&&t.featureState?this.defaultValue.evaluate(t.feature,t.featureState):this.defaultValue.property.specification.default},Lc.prototype.eachChild=function(t){this.defaultValue.isConstant()||t(this.defaultValue.value._styleExpression.expression)},Lc.prototype.outputDefined=function(){return!1},Lc.prototype.serialize=function(){return null},Nn(\"FormatSectionOverride\",Lc,{omit:[\"defaultValue\"]});var Cc=function(t){function e(e){t.call(this,e,Ec)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.recalculate=function(e,r){if(t.prototype.recalculate.call(this,e,r),\"auto\"===this.layout.get(\"icon-rotation-alignment\")&&(\"point\"!==this.layout.get(\"symbol-placement\")?this.layout._values[\"icon-rotation-alignment\"]=\"map\":this.layout._values[\"icon-rotation-alignment\"]=\"viewport\"),\"auto\"===this.layout.get(\"text-rotation-alignment\")&&(\"point\"!==this.layout.get(\"symbol-placement\")?this.layout._values[\"text-rotation-alignment\"]=\"map\":this.layout._values[\"text-rotation-alignment\"]=\"viewport\"),\"auto\"===this.layout.get(\"text-pitch-alignment\")&&(this.layout._values[\"text-pitch-alignment\"]=this.layout.get(\"text-rotation-alignment\")),\"auto\"===this.layout.get(\"icon-pitch-alignment\")&&(this.layout._values[\"icon-pitch-alignment\"]=this.layout.get(\"icon-rotation-alignment\")),\"point\"===this.layout.get(\"symbol-placement\")){var n=this.layout.get(\"text-writing-mode\");if(n){for(var i=[],a=0,o=n;a\",targetMapId:n,sourceMapId:a.mapId})}}},qc.prototype.receive=function(t){var e=t.data,r=e.id;if(r&&(!e.targetMapId||this.mapId===e.targetMapId))if(\"\"===e.type){delete this.tasks[r];var n=this.cancelCallbacks[r];delete this.cancelCallbacks[r],n&&n()}else k()||e.mustQueue?(this.tasks[r]=e,this.taskQueue.push(r),this.invoker.trigger()):this.processTask(r,e)},qc.prototype.process=function(){if(this.taskQueue.length){var t=this.taskQueue.shift(),e=this.tasks[t];delete this.tasks[t],this.taskQueue.length&&this.invoker.trigger(),e&&this.processTask(t,e)}},qc.prototype.processTask=function(t,e){var r=this;if(\"\"===e.type){var n=this.callbacks[t];delete this.callbacks[t],n&&(e.error?n(qn(e.error)):n(null,qn(e.data)))}else{var i=!1,a=S(this.globalScope)?void 0:[],o=e.hasCallback?function(e,n){i=!0,delete r.cancelCallbacks[t],r.target.postMessage({id:t,type:\"\",sourceMapId:r.mapId,error:e?Hn(e):null,data:Hn(n,a)},a)}:function(t){i=!0},s=null,l=qn(e.data);if(this.parent[e.type])s=this.parent[e.type](e.sourceMapId,l,o);else if(this.parent.getWorkerSource){var c=e.type.split(\".\");s=this.parent.getWorkerSource(e.sourceMapId,c[0],l.source)[c[1]](l,o)}else o(new Error(\"Could not find function \"+e.type));!i&&s&&s.cancel&&(this.cancelCallbacks[t]=s.cancel)}},qc.prototype.remove=function(){this.invoker.remove(),this.target.removeEventListener(\"message\",this.receive,!1)};var Yc=function(t,e){t&&(e?this.setSouthWest(t).setNorthEast(e):4===t.length?this.setSouthWest([t[0],t[1]]).setNorthEast([t[2],t[3]]):this.setSouthWest(t[0]).setNorthEast(t[1]))};Yc.prototype.setNorthEast=function(t){return this._ne=t instanceof Wc?new Wc(t.lng,t.lat):Wc.convert(t),this},Yc.prototype.setSouthWest=function(t){return this._sw=t instanceof Wc?new Wc(t.lng,t.lat):Wc.convert(t),this},Yc.prototype.extend=function(t){var e,r,n=this._sw,i=this._ne;if(t instanceof Wc)e=t,r=t;else{if(!(t instanceof Yc)){if(Array.isArray(t)){if(4===t.length||t.every(Array.isArray)){var a=t;return this.extend(Yc.convert(a))}var o=t;return this.extend(Wc.convert(o))}return this}if(e=t._sw,r=t._ne,!e||!r)return this}return n||i?(n.lng=Math.min(e.lng,n.lng),n.lat=Math.min(e.lat,n.lat),i.lng=Math.max(r.lng,i.lng),i.lat=Math.max(r.lat,i.lat)):(this._sw=new Wc(e.lng,e.lat),this._ne=new Wc(r.lng,r.lat)),this},Yc.prototype.getCenter=function(){return new Wc((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)},Yc.prototype.getSouthWest=function(){return this._sw},Yc.prototype.getNorthEast=function(){return this._ne},Yc.prototype.getNorthWest=function(){return new Wc(this.getWest(),this.getNorth())},Yc.prototype.getSouthEast=function(){return new Wc(this.getEast(),this.getSouth())},Yc.prototype.getWest=function(){return this._sw.lng},Yc.prototype.getSouth=function(){return this._sw.lat},Yc.prototype.getEast=function(){return this._ne.lng},Yc.prototype.getNorth=function(){return this._ne.lat},Yc.prototype.toArray=function(){return[this._sw.toArray(),this._ne.toArray()]},Yc.prototype.toString=function(){return\"LngLatBounds(\"+this._sw.toString()+\", \"+this._ne.toString()+\")\"},Yc.prototype.isEmpty=function(){return!(this._sw&&this._ne)},Yc.prototype.contains=function(t){var e=Wc.convert(t),r=e.lng,n=e.lat,i=this._sw.lat<=n&&n<=this._ne.lat,a=this._sw.lng<=r&&r<=this._ne.lng;return this._sw.lng>this._ne.lng&&(a=this._sw.lng>=r&&r>=this._ne.lng),i&&a},Yc.convert=function(t){return!t||t instanceof Yc?t:new Yc(t)};var Wc=function(t,e){if(isNaN(t)||isNaN(e))throw new Error(\"Invalid LngLat object: (\"+t+\", \"+e+\")\");if(this.lng=+t,this.lat=+e,this.lat>90||this.lat<-90)throw new Error(\"Invalid LngLat latitude value: must be between -90 and 90\")};Wc.prototype.wrap=function(){return new Wc(c(this.lng,-180,180),this.lat)},Wc.prototype.toArray=function(){return[this.lng,this.lat]},Wc.prototype.toString=function(){return\"LngLat(\"+this.lng+\", \"+this.lat+\")\"},Wc.prototype.distanceTo=function(t){var e=Math.PI/180,r=this.lat*e,n=t.lat*e,i=Math.sin(r)*Math.sin(n)+Math.cos(r)*Math.cos(n)*Math.cos((t.lng-this.lng)*e);return 6371008.8*Math.acos(Math.min(i,1))},Wc.prototype.toBounds=function(t){void 0===t&&(t=0);var e=360*t/40075017,r=e/Math.cos(Math.PI/180*this.lat);return new Yc(new Wc(this.lng-r,this.lat-e),new Wc(this.lng+r,this.lat+e))},Wc.convert=function(t){if(t instanceof Wc)return t;if(Array.isArray(t)&&(2===t.length||3===t.length))return new Wc(Number(t[0]),Number(t[1]));if(!Array.isArray(t)&&\"object\"==typeof t&&null!==t)return new Wc(Number(\"lng\"in t?t.lng:t.lon),Number(t.lat));throw new Error(\"`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]\")};var Xc=2*Math.PI*6371008.8;function Zc(t){return Xc*Math.cos(t*Math.PI/180)}function Jc(t){return(180+t)/360}function Kc(t){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t*Math.PI/360)))/360}function Qc(t,e){return t/Zc(e)}function $c(t){var e=180-360*t;return 360/Math.PI*Math.atan(Math.exp(e*Math.PI/180))-90}var tu=function(t,e,r){void 0===r&&(r=0),this.x=+t,this.y=+e,this.z=+r};tu.fromLngLat=function(t,e){void 0===e&&(e=0);var r=Wc.convert(t);return new tu(Jc(r.lng),Kc(r.lat),Qc(e,r.lat))},tu.prototype.toLngLat=function(){return new Wc(360*this.x-180,$c(this.y))},tu.prototype.toAltitude=function(){return t=this.z,e=this.y,t*Zc($c(e));var t,e},tu.prototype.meterInMercatorCoordinateUnits=function(){return 1/Xc*(t=$c(this.y),1/Math.cos(t*Math.PI/180));var t};var eu=function(t,e,r){this.z=t,this.x=e,this.y=r,this.key=iu(0,t,t,e,r)};eu.prototype.equals=function(t){return this.z===t.z&&this.x===t.x&&this.y===t.y},eu.prototype.url=function(t,e){var r,n,i,a,o,s=(r=this.x,n=this.y,i=this.z,a=Gc(256*r,256*(n=Math.pow(2,i)-n-1),i),o=Gc(256*(r+1),256*(n+1),i),a[0]+\",\"+a[1]+\",\"+o[0]+\",\"+o[1]),l=function(t,e,r){for(var n,i=\"\",a=t;a>0;a--)i+=(e&(n=1<this.canonical.z?new nu(t,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new nu(t,this.wrap,t,this.canonical.x>>e,this.canonical.y>>e)},nu.prototype.calculateScaledKey=function(t,e){var r=this.canonical.z-t;return t>this.canonical.z?iu(this.wrap*+e,t,this.canonical.z,this.canonical.x,this.canonical.y):iu(this.wrap*+e,t,t,this.canonical.x>>r,this.canonical.y>>r)},nu.prototype.isChildOf=function(t){if(t.wrap!==this.wrap)return!1;var e=this.canonical.z-t.canonical.z;return 0===t.overscaledZ||t.overscaledZ>e&&t.canonical.y===this.canonical.y>>e},nu.prototype.children=function(t){if(this.overscaledZ>=t)return[new nu(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];var e=this.canonical.z+1,r=2*this.canonical.x,n=2*this.canonical.y;return[new nu(e,this.wrap,e,r,n),new nu(e,this.wrap,e,r+1,n),new nu(e,this.wrap,e,r,n+1),new nu(e,this.wrap,e,r+1,n+1)]},nu.prototype.isLessThan=function(t){return this.wrapt.wrap)&&(this.overscaledZt.overscaledZ)&&(this.canonical.xt.canonical.x)&&this.canonical.y=this.dim+1||e<-1||e>=this.dim+1)throw new RangeError(\"out of range source coordinates for DEM data\");return(e+1)*this.stride+(t+1)},au.prototype._unpackMapbox=function(t,e,r){return(256*t*256+256*e+r)/10-1e4},au.prototype._unpackTerrarium=function(t,e,r){return 256*t+e+r/256-32768},au.prototype.getPixels=function(){return new Eo({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))},au.prototype.backfillBorder=function(t,e,r){if(this.dim!==t.dim)throw new Error(\"dem dimension mismatch\");var n=e*this.dim,i=e*this.dim+this.dim,a=r*this.dim,o=r*this.dim+this.dim;switch(e){case-1:n=i-1;break;case 1:i=n+1}switch(r){case-1:a=o-1;break;case 1:o=a+1}for(var s=-e*this.dim,l=-r*this.dim,c=a;c=0&&u[3]>=0&&s.insert(o,u[0],u[1],u[2],u[3])}},uu.prototype.loadVTLayers=function(){return this.vtLayers||(this.vtLayers=new Ls.VectorTile(new al(this.rawTileData)).layers,this.sourceLayerCoder=new ou(this.vtLayers?Object.keys(this.vtLayers).sort():[\"_geojsonTileLayer\"])),this.vtLayers},uu.prototype.query=function(t,e,r,n){var a=this;this.loadVTLayers();for(var o=t.params||{},s=8192/t.tileSize/t.scale,l=sn(o.filter),c=t.queryGeometry,u=t.queryPadding*s,f=hu(c),h=this.grid.query(f.minX-u,f.minY-u,f.maxX+u,f.maxY+u),p=hu(t.cameraQueryGeometry),d=this.grid3D.query(p.minX-u,p.minY-u,p.maxX+u,p.maxY+u,(function(e,r,n,a){return function(t,e,r,n,a){for(var o=0,s=t;o=l.x&&a>=l.y)return!0}var c=[new i(e,r),new i(e,a),new i(n,a),new i(n,r)];if(t.length>2)for(var u=0,f=c;u=0)return!0;return!1}(a,f)){var h=this.sourceLayerCoder.decode(r),p=this.vtLayers[h].feature(n);if(i.filter(new pi(this.tileID.overscaledZ),p))for(var d=this.getId(p,h),g=0;gn)i=!1;else if(e)if(this.expirationTimeot&&(t.getActor().send(\"enforceCacheSizeLimit\",at),ht=0)},t.clamp=l,t.clearTileCache=function(t){var e=self.caches.delete(\"mapbox-tiles\");t&&e.catch(t).then((function(){return t()}))},t.clipLine=ec,t.clone=function(t){var e=new fo(16);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e},t.clone$1=x,t.clone$2=function(t){var e=new fo(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e},t.collisionCircleLayout=tl,t.config=F,t.create=function(){var t=new fo(16);return fo!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0),t[0]=1,t[5]=1,t[10]=1,t[15]=1,t},t.create$1=function(){var t=new fo(9);return fo!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[5]=0,t[6]=0,t[7]=0),t[0]=1,t[4]=1,t[8]=1,t},t.create$2=function(){var t=new fo(4);return fo!=Float32Array&&(t[1]=0,t[2]=0),t[0]=1,t[3]=1,t},t.createCommonjsModule=e,t.createExpression=Wr,t.createLayout=Ii,t.createStyleLayer=function(t){return\"custom\"===t.type?new Dc(t):new Rc[t.type](t)},t.cross=function(t,e,r){var n=e[0],i=e[1],a=e[2],o=r[0],s=r[1],l=r[2];return t[0]=i*l-a*s,t[1]=a*o-n*l,t[2]=n*s-i*o,t},t.deepEqual=function t(e,r){if(Array.isArray(e)){if(!Array.isArray(r)||e.length!==r.length)return!1;for(var n=0;n0&&(a=1/Math.sqrt(a)),t[0]=e[0]*a,t[1]=e[1]*a,t[2]=e[2]*a,t},t.number=qe,t.offscreenCanvasSupported=pt,t.ortho=function(t,e,r,n,i,a,o){var s=1/(e-r),l=1/(n-i),c=1/(a-o);return t[0]=-2*s,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*l,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*c,t[11]=0,t[12]=(e+r)*s,t[13]=(i+n)*l,t[14]=(o+a)*c,t[15]=1,t},t.parseGlyphPBF=function(t){return new al(t).readFields(Tl,[])},t.pbf=al,t.performSymbolLayout=function(t,e,r,n,i,a,o){t.createArrays();var s=512*t.overscaling;t.tilePixelRatio=8192/s,t.compareText={},t.iconsNeedLinear=!1;var l=t.layers[0].layout,c=t.layers[0]._unevaluatedLayout._values,u={};if(\"composite\"===t.textSizeData.kind){var f=t.textSizeData,h=f.minZoom,p=f.maxZoom;u.compositeTextSizes=[c[\"text-size\"].possiblyEvaluate(new pi(h),o),c[\"text-size\"].possiblyEvaluate(new pi(p),o)]}if(\"composite\"===t.iconSizeData.kind){var d=t.iconSizeData,g=d.minZoom,m=d.maxZoom;u.compositeIconSizes=[c[\"icon-size\"].possiblyEvaluate(new pi(g),o),c[\"icon-size\"].possiblyEvaluate(new pi(m),o)]}u.layoutTextSize=c[\"text-size\"].possiblyEvaluate(new pi(t.zoom+1),o),u.layoutIconSize=c[\"icon-size\"].possiblyEvaluate(new pi(t.zoom+1),o),u.textMaxSize=c[\"text-size\"].possiblyEvaluate(new pi(18));for(var v=24*l.get(\"text-line-height\"),y=\"map\"===l.get(\"text-rotation-alignment\")&&\"point\"!==l.get(\"symbol-placement\"),x=l.get(\"text-keep-upright\"),b=l.get(\"text-size\"),w=function(){var a=k[T],s=l.get(\"text-font\").evaluate(a,{},o).join(\",\"),c=b.evaluate(a,{},o),f=u.layoutTextSize.evaluate(a,{},o),h=u.layoutIconSize.evaluate(a,{},o),p={horizontal:{},vertical:void 0},d=a.text,g=[0,0];if(d){var m=d.toString(),w=24*l.get(\"text-letter-spacing\").evaluate(a,{},o),A=function(t){for(var e=0,r=t;e=8192||f.y<0||f.y>=8192||function(t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m,v,y,x,b,w,T,k,A){var M,S,E,L,C,P=t.addToLineVertexArray(e,r),I=0,O=0,z=0,D=0,R=-1,F=-1,B={},N=ya(\"\"),j=0,U=0;void 0===s._unevaluatedLayout.getValue(\"text-radial-offset\")?(M=s.layout.get(\"text-offset\").evaluate(b,{},k).map((function(t){return 24*t})),j=M[0],U=M[1]):(j=24*s.layout.get(\"text-radial-offset\").evaluate(b,{},k),U=pc);if(t.allowVerticalPlacement&&n.vertical){var V=s.layout.get(\"text-rotate\").evaluate(b,{},k)+90,H=n.vertical;L=new sc(l,e,c,u,f,H,h,p,d,V),o&&(C=new sc(l,e,c,u,f,o,m,v,d,V))}if(i){var q=s.layout.get(\"icon-rotate\").evaluate(b,{}),G=\"none\"!==s.layout.get(\"icon-text-fit\"),Y=rc(i,q,T,G),W=o?rc(o,q,T,G):void 0;E=new sc(l,e,c,u,f,i,m,v,!1,q),I=4*Y.length;var X=t.iconSizeData,Z=null;\"source\"===X.kind?(Z=[128*s.layout.get(\"icon-size\").evaluate(b,{})])[0]>32640&&_(t.layerIds[0]+': Value for \"icon-size\" is >= 255. Reduce your \"icon-size\".'):\"composite\"===X.kind&&((Z=[128*w.compositeIconSizes[0].evaluate(b,{},k),128*w.compositeIconSizes[1].evaluate(b,{},k)])[0]>32640||Z[1]>32640)&&_(t.layerIds[0]+': Value for \"icon-size\" is >= 255. Reduce your \"icon-size\".'),t.addSymbols(t.icon,Y,Z,x,y,b,!1,e,P.lineStartIndex,P.lineLength,-1,k),R=t.icon.placedSymbolArray.length-1,W&&(O=4*W.length,t.addSymbols(t.icon,W,Z,x,y,b,Cl.vertical,e,P.lineStartIndex,P.lineLength,-1,k),F=t.icon.placedSymbolArray.length-1)}for(var J in n.horizontal){var K=n.horizontal[J];if(!S){N=ya(K.text);var Q=s.layout.get(\"text-rotate\").evaluate(b,{},k);S=new sc(l,e,c,u,f,K,h,p,d,Q)}var $=1===K.positionedLines.length;if(z+=mc(t,e,K,a,s,d,b,g,P,n.vertical?Cl.horizontal:Cl.horizontalOnly,$?Object.keys(n.horizontal):[J],B,R,w,k),$)break}n.vertical&&(D+=mc(t,e,n.vertical,a,s,d,b,g,P,Cl.vertical,[\"vertical\"],B,F,w,k));var tt=S?S.boxStartIndex:t.collisionBoxArray.length,et=S?S.boxEndIndex:t.collisionBoxArray.length,rt=L?L.boxStartIndex:t.collisionBoxArray.length,nt=L?L.boxEndIndex:t.collisionBoxArray.length,it=E?E.boxStartIndex:t.collisionBoxArray.length,at=E?E.boxEndIndex:t.collisionBoxArray.length,ot=C?C.boxStartIndex:t.collisionBoxArray.length,st=C?C.boxEndIndex:t.collisionBoxArray.length,lt=-1,ct=function(t,e){return t&&t.circleDiameter?Math.max(t.circleDiameter,e):e};lt=ct(S,lt),lt=ct(L,lt),lt=ct(E,lt);var ut=(lt=ct(C,lt))>-1?1:0;ut&&(lt*=A/24);t.glyphOffsetArray.length>=Mc.MAX_GLYPHS&&_(\"Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907\");void 0!==b.sortKey&&t.addToSortKeyRanges(t.symbolInstances.length,b.sortKey);t.symbolInstances.emplaceBack(e.x,e.y,B.right>=0?B.right:-1,B.center>=0?B.center:-1,B.left>=0?B.left:-1,B.vertical||-1,R,F,N,tt,et,rt,nt,it,at,ot,st,c,z,D,I,O,ut,0,h,j,U,lt)}(t,f,s,r,n,i,h,t.layers[0],t.collisionBoxArray,e.index,e.sourceLayerIndex,t.index,v,w,A,l,x,T,M,d,e,a,c,u,o)};if(\"line\"===S)for(var P=0,I=ec(e.geometry,0,0,8192,8192);P1){var V=$l(U,k,r.vertical||g,n,24,y);V&&C(U,V)}}else if(\"Polygon\"===e.type)for(var H=0,q=hs(e.geometry,0);H=E.maxzoom))if(\"none\"!==E.visibility)o(S,this.zoom,n),(g[E.id]=E.createBucket({index:u.bucketLayerIDs.length,layers:S,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:b,sourceID:this.source})).populate(_,m,this.tileID.canonical),u.bucketLayerIDs.push(S.map((function(t){return t.id})))}}}var L=t.mapObject(m.glyphDependencies,(function(t){return Object.keys(t).map(Number)}));Object.keys(L).length?a.send(\"getGlyphs\",{uid:this.uid,stacks:L},(function(t,e){f||(f=t,h=e,I.call(l))})):h={};var C=Object.keys(m.iconDependencies);C.length?a.send(\"getImages\",{icons:C,source:this.source,tileID:this.tileID,type:\"icons\"},(function(t,e){f||(f=t,p=e,I.call(l))})):p={};var P=Object.keys(m.patternDependencies);function I(){if(f)return s(f);if(h&&p&&d){var e=new i(h),r=new t.ImageAtlas(p,d);for(var a in g){var l=g[a];l instanceof t.SymbolBucket?(o(l.layers,this.zoom,n),t.performSymbolLayout(l,h,e.positions,p,r.iconPositions,this.showCollisionBoxes,this.tileID.canonical)):l.hasPattern&&(l instanceof t.LineBucket||l instanceof t.FillBucket||l instanceof t.FillExtrusionBucket)&&(o(l.layers,this.zoom,n),l.addFeatures(m,this.tileID.canonical,r.patternPositions))}this.status=\"done\",s(null,{buckets:t.values(g).filter((function(t){return!t.isEmpty()})),featureIndex:u,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:e.image,imageAtlas:r,glyphMap:this.returnDependencies?h:null,iconMap:this.returnDependencies?p:null,glyphPositions:this.returnDependencies?e.positions:null})}}P.length?a.send(\"getImages\",{icons:P,source:this.source,tileID:this.tileID,type:\"patterns\"},(function(t,e){f||(f=t,d=e,I.call(l))})):d={},I.call(this)};var l=function(t,e,r,n){this.actor=t,this.layerIndex=e,this.availableImages=r,this.loadVectorData=n||s,this.loading={},this.loaded={}};l.prototype.loadTile=function(e,r){var n=this,i=e.uid;this.loading||(this.loading={});var o=!!(e&&e.request&&e.request.collectResourceTiming)&&new t.RequestPerformance(e.request),s=this.loading[i]=new a(e);s.abort=this.loadVectorData(e,(function(e,a){if(delete n.loading[i],e||!a)return s.status=\"done\",n.loaded[i]=s,r(e);var l=a.rawData,c={};a.expires&&(c.expires=a.expires),a.cacheControl&&(c.cacheControl=a.cacheControl);var u={};if(o){var f=o.finish();f&&(u.resourceTiming=JSON.parse(JSON.stringify(f)))}s.vectorTile=a.vectorTile,s.parse(a.vectorTile,n.layerIndex,n.availableImages,n.actor,(function(e,n){if(e||!n)return r(e);r(null,t.extend({rawTileData:l.slice(0)},n,c,u))})),n.loaded=n.loaded||{},n.loaded[i]=s}))},l.prototype.reloadTile=function(t,e){var r=this,n=this.loaded,i=t.uid,a=this;if(n&&n[i]){var o=n[i];o.showCollisionBoxes=t.showCollisionBoxes;var s=function(t,n){var i=o.reloadCallback;i&&(delete o.reloadCallback,o.parse(o.vectorTile,a.layerIndex,r.availableImages,a.actor,i)),e(t,n)};\"parsing\"===o.status?o.reloadCallback=s:\"done\"===o.status&&(o.vectorTile?o.parse(o.vectorTile,this.layerIndex,this.availableImages,this.actor,s):s())}},l.prototype.abortTile=function(t,e){var r=this.loading,n=t.uid;r&&r[n]&&r[n].abort&&(r[n].abort(),delete r[n]),e()},l.prototype.removeTile=function(t,e){var r=this.loaded,n=t.uid;r&&r[n]&&delete r[n],e()};var c=t.window.ImageBitmap,u=function(){this.loaded={}};u.prototype.loadTile=function(e,r){var n=e.uid,i=e.encoding,a=e.rawImageData,o=c&&a instanceof c?this.getImageData(a):a,s=new t.DEMData(n,o,i);this.loaded=this.loaded||{},this.loaded[n]=s,r(null,s)},u.prototype.getImageData=function(e){this.offscreenCanvas&&this.offscreenCanvasContext||(this.offscreenCanvas=new OffscreenCanvas(e.width,e.height),this.offscreenCanvasContext=this.offscreenCanvas.getContext(\"2d\")),this.offscreenCanvas.width=e.width,this.offscreenCanvas.height=e.height,this.offscreenCanvasContext.drawImage(e,0,0,e.width,e.height);var r=this.offscreenCanvasContext.getImageData(-1,-1,e.width+2,e.height+2);return this.offscreenCanvasContext.clearRect(0,0,this.offscreenCanvas.width,this.offscreenCanvas.height),new t.RGBAImage({width:r.width,height:r.height},r.data)},u.prototype.removeTile=function(t){var e=this.loaded,r=t.uid;e&&e[r]&&delete e[r]};var f=function t(e,r){var n,i=e&&e.type;if(\"FeatureCollection\"===i)for(n=0;n=0!=!!e&&t.reverse()}var d=t.vectorTile.VectorTileFeature.prototype.toGeoJSON,g=function(e){this._feature=e,this.extent=t.EXTENT,this.type=e.type,this.properties=e.tags,\"id\"in e&&!isNaN(e.id)&&(this.id=parseInt(e.id,10))};g.prototype.loadGeometry=function(){if(1===this._feature.type){for(var e=[],r=0,n=this._feature.geometry;r>31}function P(t,e){for(var r=t.loadGeometry(),n=t.type,i=0,a=0,o=r.length,s=0;s>1;!function t(e,r,n,i,a,o){for(;a>i;){if(a-i>600){var s=a-i+1,l=n-i+1,c=Math.log(s),u=.5*Math.exp(2*c/3),f=.5*Math.sqrt(c*u*(s-u)/s)*(l-s/2<0?-1:1),h=Math.max(i,Math.floor(n-l*u/s+f)),p=Math.min(a,Math.floor(n+(s-l)*u/s+f));t(e,r,n,h,p,o)}var d=r[2*n+o],g=i,m=a;for(z(e,r,i,n),r[2*a+o]>d&&z(e,r,i,a);gd;)m--}r[2*i+o]===d?z(e,r,i,m):(m++,z(e,r,m,a)),m<=n&&(i=m+1),n<=m&&(a=m-1)}}(t,e,o,n,i,a%2),O(t,e,r,n,o-1,a+1),O(t,e,r,o+1,i,a+1)}}function z(t,e,r,n){D(t,r,n),D(e,2*r,2*n),D(e,2*r+1,2*n+1)}function D(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function R(t,e,r,n){var i=t-r,a=e-n;return i*i+a*a}_.fromVectorTileJs=w,_.fromGeojsonVt=T,_.GeoJSONWrapper=k;var F=function(t){return t[0]},B=function(t){return t[1]},N=function(t,e,r,n,i){void 0===e&&(e=F),void 0===r&&(r=B),void 0===n&&(n=64),void 0===i&&(i=Float64Array),this.nodeSize=n,this.points=t;for(var a=t.length<65536?Uint16Array:Uint32Array,o=this.ids=new a(t.length),s=this.coords=new i(2*t.length),l=0;l=r&&s<=i&&l>=n&&l<=a&&u.push(t[d]);else{var g=Math.floor((p+h)/2);s=e[2*g],l=e[2*g+1],s>=r&&s<=i&&l>=n&&l<=a&&u.push(t[g]);var m=(f+1)%2;(0===f?r<=s:n<=l)&&(c.push(p),c.push(g-1),c.push(m)),(0===f?i>=s:a>=l)&&(c.push(g+1),c.push(h),c.push(m))}}return u}(this.ids,this.coords,t,e,r,n,this.nodeSize)},N.prototype.within=function(t,e,r){return function(t,e,r,n,i,a){for(var o=[0,t.length-1,0],s=[],l=i*i;o.length;){var c=o.pop(),u=o.pop(),f=o.pop();if(u-f<=a)for(var h=f;h<=u;h++)R(e[2*h],e[2*h+1],r,n)<=l&&s.push(t[h]);else{var p=Math.floor((f+u)/2),d=e[2*p],g=e[2*p+1];R(d,g,r,n)<=l&&s.push(t[p]);var m=(c+1)%2;(0===c?r-i<=d:n-i<=g)&&(o.push(f),o.push(p-1),o.push(m)),(0===c?r+i>=d:n+i>=g)&&(o.push(p+1),o.push(u),o.push(m))}}return s}(this.ids,this.coords,t,e,r,this.nodeSize)};var j={minZoom:0,maxZoom:16,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:function(t){return t}},U=function(t){this.options=X(Object.create(j),t),this.trees=new Array(this.options.maxZoom+1)};function V(t,e,r,n,i){return{x:t,y:e,zoom:1/0,id:r,parentId:-1,numPoints:n,properties:i}}function H(t,e){var r=t.geometry.coordinates,n=r[0],i=r[1];return{x:Y(n),y:W(i),zoom:1/0,index:e,parentId:-1}}function q(t){return{type:\"Feature\",id:t.id,properties:G(t),geometry:{type:\"Point\",coordinates:[(n=t.x,360*(n-.5)),(e=t.y,r=(180-360*e)*Math.PI/180,360*Math.atan(Math.exp(r))/Math.PI-90)]}};var e,r,n}function G(t){var e=t.numPoints,r=e>=1e4?Math.round(e/1e3)+\"k\":e>=1e3?Math.round(e/100)/10+\"k\":e;return X(X({},t.properties),{cluster:!0,cluster_id:t.id,point_count:e,point_count_abbreviated:r})}function Y(t){return t/360+.5}function W(t){var e=Math.sin(t*Math.PI/180),r=.5-.25*Math.log((1+e)/(1-e))/Math.PI;return r<0?0:r>1?1:r}function X(t,e){for(var r in e)t[r]=e[r];return t}function Z(t){return t.x}function J(t){return t.y}function K(t,e,r,n,i,a){var o=i-r,s=a-n;if(0!==o||0!==s){var l=((t-r)*o+(e-n)*s)/(o*o+s*s);l>1?(r=i,n=a):l>0&&(r+=o*l,n+=s*l)}return(o=t-r)*o+(s=e-n)*s}function Q(t,e,r,n){var i={id:void 0===t?null:t,type:e,geometry:r,tags:n,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return function(t){var e=t.geometry,r=t.type;if(\"Point\"===r||\"MultiPoint\"===r||\"LineString\"===r)$(t,e);else if(\"Polygon\"===r||\"MultiLineString\"===r)for(var n=0;n0&&(o+=n?(i*c-l*a)/2:Math.sqrt(Math.pow(l-i,2)+Math.pow(c-a,2))),i=l,a=c}var u=e.length-3;e[2]=1,function t(e,r,n,i){for(var a,o=i,s=n-r>>1,l=n-r,c=e[r],u=e[r+1],f=e[n],h=e[n+1],p=r+3;po)a=p,o=d;else if(d===o){var g=Math.abs(p-s);gi&&(a-r>3&&t(e,r,a,i),e[a+2]=o,n-a>3&&t(e,a,n,i))}(e,0,u,r),e[u+2]=1,e.size=Math.abs(o),e.start=0,e.end=e.size}function nt(t,e,r,n){for(var i=0;i1?1:r}function ot(t,e,r,n,i,a,o,s){if(n/=e,a>=(r/=e)&&o=n)return null;for(var l=[],c=0;c=r&&d=n)){var g=[];if(\"Point\"===h||\"MultiPoint\"===h)st(f,g,r,n,i);else if(\"LineString\"===h)lt(f,g,r,n,i,!1,s.lineMetrics);else if(\"MultiLineString\"===h)ut(f,g,r,n,i,!1);else if(\"Polygon\"===h)ut(f,g,r,n,i,!0);else if(\"MultiPolygon\"===h)for(var m=0;m=r&&o<=n&&(e.push(t[a]),e.push(t[a+1]),e.push(t[a+2]))}}function lt(t,e,r,n,i,a,o){for(var s,l,c=ct(t),u=0===i?ht:pt,f=t.start,h=0;hr&&(l=u(c,p,d,m,v,r),o&&(c.start=f+s*l)):y>n?x=r&&(l=u(c,p,d,m,v,r),b=!0),x>n&&y<=n&&(l=u(c,p,d,m,v,n),b=!0),!a&&b&&(o&&(c.end=f+s*l),e.push(c),c=ct(t)),o&&(f+=s)}var _=t.length-3;p=t[_],d=t[_+1],g=t[_+2],(y=0===i?p:d)>=r&&y<=n&&ft(c,p,d,g),_=c.length-3,a&&_>=3&&(c[_]!==c[0]||c[_+1]!==c[1])&&ft(c,c[0],c[1],c[2]),c.length&&e.push(c)}function ct(t){var e=[];return e.size=t.size,e.start=t.start,e.end=t.end,e}function ut(t,e,r,n,i,a){for(var o=0;oo.maxX&&(o.maxX=u),f>o.maxY&&(o.maxY=f)}return o}function xt(t,e,r,n){var i=e.geometry,a=e.type,o=[];if(\"Point\"===a||\"MultiPoint\"===a)for(var s=0;s0&&e.size<(i?o:n))r.numPoints+=e.length/3;else{for(var s=[],l=0;lo)&&(r.numSimplified++,s.push(e[l]),s.push(e[l+1])),r.numPoints++;i&&function(t,e){for(var r=0,n=0,i=t.length,a=i-2;n0===e)for(n=0,i=t.length;n24)throw new Error(\"maxZoom should be in the 0-24 range\");if(e.promoteId&&e.generateId)throw new Error(\"promoteId and generateId cannot be used together.\");var n=function(t,e){var r=[];if(\"FeatureCollection\"===t.type)for(var n=0;n=n;c--){var u=+Date.now();s=this._cluster(s,c),this.trees[c]=new N(s,Z,J,a,Float32Array),r&&console.log(\"z%d: %d clusters in %dms\",c,s.length,+Date.now()-u)}return r&&console.timeEnd(\"total time\"),this},U.prototype.getClusters=function(t,e){var r=((t[0]+180)%360+360)%360-180,n=Math.max(-90,Math.min(90,t[1])),i=180===t[2]?180:((t[2]+180)%360+360)%360-180,a=Math.max(-90,Math.min(90,t[3]));if(t[2]-t[0]>=360)r=-180,i=180;else if(r>i){var o=this.getClusters([r,n,180,a],e),s=this.getClusters([-180,n,i,a],e);return o.concat(s)}for(var l=this.trees[this._limitZoom(e)],c=[],u=0,f=l.range(Y(r),W(a),Y(i),W(n));u1?this._map(c,!0):null,m=(l<<5)+(e+1)+this.points.length,v=0,y=f;v>5},U.prototype._getOriginZoom=function(t){return(t-this.points.length)%32},U.prototype._map=function(t,e){if(t.numPoints)return e?X({},t.properties):t.properties;var r=this.points[t.index].properties,n=this.options.map(r);return e&&n===r?X({},n):n},_t.prototype.options={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,tolerance:3,extent:4096,buffer:64,lineMetrics:!1,promoteId:null,generateId:!1,debug:0},_t.prototype.splitTile=function(t,e,r,n,i,a,o){for(var s=[t,e,r,n],l=this.options,c=l.debug;s.length;){n=s.pop(),r=s.pop(),e=s.pop(),t=s.pop();var u=1<1&&console.time(\"creation\"),h=this.tiles[f]=yt(t,e,r,n,l),this.tileCoords.push({z:e,x:r,y:n}),c)){c>1&&(console.log(\"tile z%d-%d-%d (features: %d, points: %d, simplified: %d)\",e,r,n,h.numFeatures,h.numPoints,h.numSimplified),console.timeEnd(\"creation\"));var p=\"z\"+e;this.stats[p]=(this.stats[p]||0)+1,this.total++}if(h.source=t,i){if(e===l.maxZoom||e===i)continue;var d=1<1&&console.time(\"clipping\");var g,m,v,y,x,b,_=.5*l.buffer/l.extent,w=.5-_,T=.5+_,k=1+_;g=m=v=y=null,x=ot(t,u,r-_,r+T,0,h.minX,h.maxX,l),b=ot(t,u,r+w,r+k,0,h.minX,h.maxX,l),t=null,x&&(g=ot(x,u,n-_,n+T,1,h.minY,h.maxY,l),m=ot(x,u,n+w,n+k,1,h.minY,h.maxY,l),x=null),b&&(v=ot(b,u,n-_,n+T,1,h.minY,h.maxY,l),y=ot(b,u,n+w,n+k,1,h.minY,h.maxY,l),b=null),c>1&&console.timeEnd(\"clipping\"),s.push(g||[],e+1,2*r,2*n),s.push(m||[],e+1,2*r,2*n+1),s.push(v||[],e+1,2*r+1,2*n),s.push(y||[],e+1,2*r+1,2*n+1)}}},_t.prototype.getTile=function(t,e,r){var n=this.options,i=n.extent,a=n.debug;if(t<0||t>24)return null;var o=1<1&&console.log(\"drilling down to z%d-%d-%d\",t,e,r);for(var l,c=t,u=e,f=r;!l&&c>0;)c--,u=Math.floor(u/2),f=Math.floor(f/2),l=this.tiles[wt(c,u,f)];return l&&l.source?(a>1&&console.log(\"found parent tile z%d-%d-%d\",c,u,f),a>1&&console.time(\"drilling down\"),this.splitTile(l.source,c,u,f,t,e,r),a>1&&console.timeEnd(\"drilling down\"),this.tiles[s]?mt(this.tiles[s],i):null):null};var kt=function(e){function r(t,r,n,i){e.call(this,t,r,n,Tt),i&&(this.loadGeoJSON=i)}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.loadData=function(t,e){this._pendingCallback&&this._pendingCallback(null,{abandoned:!0}),this._pendingCallback=e,this._pendingLoadDataParams=t,this._state&&\"Idle\"!==this._state?this._state=\"NeedsLoadData\":(this._state=\"Coalescing\",this._loadData())},r.prototype._loadData=function(){var e=this;if(this._pendingCallback&&this._pendingLoadDataParams){var r=this._pendingCallback,n=this._pendingLoadDataParams;delete this._pendingCallback,delete this._pendingLoadDataParams;var i=!!(n&&n.request&&n.request.collectResourceTiming)&&new t.RequestPerformance(n.request);this.loadGeoJSON(n,(function(a,o){if(a||!o)return r(a);if(\"object\"!=typeof o)return r(new Error(\"Input data given to '\"+n.source+\"' is not a valid GeoJSON object.\"));f(o,!0);try{e._geoJSONIndex=n.cluster?new U(function(e){var r=e.superclusterOptions,n=e.clusterProperties;if(!n||!r)return r;for(var i={},a={},o={accumulated:null,zoom:0},s={properties:null},l=Object.keys(n),c=0,u=l;c=0?0:e.button},r.remove=function(t){t.parentNode&&t.parentNode.removeChild(t)};var h=function(e){function r(){e.call(this),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new t.RGBAImage({width:1,height:1}),this.dirty=!0}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.isLoaded=function(){return this.loaded},r.prototype.setLoaded=function(t){if(this.loaded!==t&&(this.loaded=t,t)){for(var e=0,r=this.requestors;e=0?1.2:1))}function v(t,e,r,n,i,a,o){for(var s=0;s65535)e(new Error(\"glyphs > 65535 not supported\"));else if(a.ranges[s])e(null,{stack:r,id:i,glyph:o});else{var l=a.requests[s];l||(l=a.requests[s]=[],x.loadGlyphRange(r,s,n.url,n.requestManager,(function(t,e){if(e){for(var r in e)n._doesCharSupportLocalGlyph(+r)||(a.glyphs[+r]=e[+r]);a.ranges[s]=!0}for(var i=0,o=l;i1&&(l=t[++s]);var u=Math.abs(c-l.left),f=Math.abs(c-l.right),h=Math.min(u,f),p=void 0,d=i/r*(n+1);if(l.isDash){var g=n-Math.abs(d);p=Math.sqrt(h*h+g*g)}else p=n-Math.sqrt(h*h+d*d);this.data[o+c]=Math.max(0,Math.min(255,p+128))}},T.prototype.addRegularDash=function(t){for(var e=t.length-1;e>=0;--e){var r=t[e],n=t[e+1];r.zeroLength?t.splice(e,1):n&&n.isDash===r.isDash&&(n.left=r.left,t.splice(e,1))}var i=t[0],a=t[t.length-1];i.isDash===a.isDash&&(i.left=a.left-this.width,a.right=i.right+this.width);for(var o=this.width*this.nextRow,s=0,l=t[s],c=0;c1&&(l=t[++s]);var u=Math.abs(c-l.left),f=Math.abs(c-l.right),h=Math.min(u,f),p=l.isDash?h:-h;this.data[o+c]=Math.max(0,Math.min(255,p+128))}},T.prototype.addDash=function(e,r){var n=r?7:0,i=2*n+1;if(this.nextRow+i>this.height)return t.warnOnce(\"LineAtlas out of space\"),null;for(var a=0,o=0;o=n&&e.x=i&&e.y0&&(l[new t.OverscaledTileID(e.overscaledZ,a,r.z,i,r.y-1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,e.wrap,r.z,r.x,r.y-1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,s,r.z,o,r.y-1).key]={backfilled:!1}),r.y+10&&(n.resourceTiming=e._resourceTiming,e._resourceTiming=[]),e.fire(new t.Event(\"data\",n))}}))},r.prototype.onAdd=function(t){this.map=t,this.load()},r.prototype.setData=function(e){var r=this;return this._data=e,this.fire(new t.Event(\"dataloading\",{dataType:\"source\"})),this._updateWorkerData((function(e){if(e)r.fire(new t.ErrorEvent(e));else{var n={dataType:\"source\",sourceDataType:\"content\"};r._collectResourceTiming&&r._resourceTiming&&r._resourceTiming.length>0&&(n.resourceTiming=r._resourceTiming,r._resourceTiming=[]),r.fire(new t.Event(\"data\",n))}})),this},r.prototype.getClusterExpansionZoom=function(t,e){return this.actor.send(\"geojson.getClusterExpansionZoom\",{clusterId:t,source:this.id},e),this},r.prototype.getClusterChildren=function(t,e){return this.actor.send(\"geojson.getClusterChildren\",{clusterId:t,source:this.id},e),this},r.prototype.getClusterLeaves=function(t,e,r,n){return this.actor.send(\"geojson.getClusterLeaves\",{source:this.id,clusterId:t,limit:e,offset:r},n),this},r.prototype._updateWorkerData=function(e){var r=this;this._loaded=!1;var n=t.extend({},this.workerOptions),i=this._data;\"string\"==typeof i?(n.request=this.map._requestManager.transformRequest(t.browser.resolveURL(i),t.ResourceType.Source),n.request.collectResourceTiming=this._collectResourceTiming):n.data=JSON.stringify(i),this.actor.send(this.type+\".loadData\",n,(function(t,i){r._removed||i&&i.abandoned||(r._loaded=!0,i&&i.resourceTiming&&i.resourceTiming[r.id]&&(r._resourceTiming=i.resourceTiming[r.id].slice(0)),r.actor.send(r.type+\".coalesce\",{source:n.source},null),e(t))}))},r.prototype.loaded=function(){return this._loaded},r.prototype.loadTile=function(e,r){var n=this,i=e.actor?\"reloadTile\":\"loadTile\";e.actor=this.actor;var a={type:this.type,uid:e.uid,tileID:e.tileID,zoom:e.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:t.browser.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};e.request=this.actor.send(i,a,(function(t,a){return delete e.request,e.unloadVectorData(),e.aborted?r(null):t?r(t):(e.loadVectorData(a,n.map.painter,\"reloadTile\"===i),r(null))}))},r.prototype.abortTile=function(t){t.request&&(t.request.cancel(),delete t.request),t.aborted=!0},r.prototype.unloadTile=function(t){t.unloadVectorData(),this.actor.send(\"removeTile\",{uid:t.uid,type:this.type,source:this.id})},r.prototype.onRemove=function(){this._removed=!0,this.actor.send(\"removeSource\",{type:this.type,source:this.id})},r.prototype.serialize=function(){return t.extend({},this._options,{type:this.type,data:this._data})},r.prototype.hasTransition=function(){return!1},r}(t.Evented),P=t.createLayout([{name:\"a_pos\",type:\"Int16\",components:2},{name:\"a_texture_pos\",type:\"Int16\",components:2}]),I=function(e){function r(t,r,n,i){e.call(this),this.id=t,this.dispatcher=n,this.coordinates=r.coordinates,this.type=\"image\",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(i),this.options=r}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.load=function(e,r){var n=this;this._loaded=!1,this.fire(new t.Event(\"dataloading\",{dataType:\"source\"})),this.url=this.options.url,t.getImage(this.map._requestManager.transformRequest(this.url,t.ResourceType.Image),(function(i,a){n._loaded=!0,i?n.fire(new t.ErrorEvent(i)):a&&(n.image=a,e&&(n.coordinates=e),r&&r(),n._finishLoading())}))},r.prototype.loaded=function(){return this._loaded},r.prototype.updateImage=function(t){var e=this;return this.image&&t.url?(this.options.url=t.url,this.load(t.coordinates,(function(){e.texture=null})),this):this},r.prototype._finishLoading=function(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new t.Event(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})))},r.prototype.onAdd=function(t){this.map=t,this.load()},r.prototype.setCoordinates=function(e){var r=this;this.coordinates=e;var n=e.map(t.MercatorCoordinate.fromLngLat);this.tileID=function(e){for(var r=1/0,n=1/0,i=-1/0,a=-1/0,o=0,s=e;or.end(0)?this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+this.id,null,\"Playback for this video can be set only between the \"+r.start(0)+\" and \"+r.end(0)+\"-second mark.\"))):this.video.currentTime=e}},r.prototype.getVideo=function(){return this.video},r.prototype.onAdd=function(t){this.map||(this.map=t,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))},r.prototype.prepare=function(){if(!(0===Object.keys(this.tiles).length||this.video.readyState<2)){var e=this.map.painter.context,r=e.gl;for(var n in this.boundsBuffer||(this.boundsBuffer=e.createVertexBuffer(this._boundsArray,P.members)),this.boundsSegments||(this.boundsSegments=t.SegmentVector.simpleSegment(0,0,4,2)),this.texture?this.video.paused||(this.texture.bind(r.LINEAR,r.CLAMP_TO_EDGE),r.texSubImage2D(r.TEXTURE_2D,0,0,0,r.RGBA,r.UNSIGNED_BYTE,this.video)):(this.texture=new t.Texture(e,this.video,r.RGBA),this.texture.bind(r.LINEAR,r.CLAMP_TO_EDGE)),this.tiles){var i=this.tiles[n];\"loaded\"!==i.state&&(i.state=\"loaded\",i.texture=this.texture)}}},r.prototype.serialize=function(){return{type:\"video\",urls:this.urls,coordinates:this.coordinates}},r.prototype.hasTransition=function(){return this.video&&!this.video.paused},r}(I),z=function(e){function r(r,n,i,a){e.call(this,r,n,i,a),n.coordinates?Array.isArray(n.coordinates)&&4===n.coordinates.length&&!n.coordinates.some((function(t){return!Array.isArray(t)||2!==t.length||t.some((function(t){return\"number\"!=typeof t}))}))||this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+r,null,'\"coordinates\" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+r,null,'missing required property \"coordinates\"'))),n.animate&&\"boolean\"!=typeof n.animate&&this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+r,null,'optional \"animate\" property must be a boolean value'))),n.canvas?\"string\"==typeof n.canvas||n.canvas instanceof t.window.HTMLCanvasElement||this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+r,null,'\"canvas\" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+r,null,'missing required property \"canvas\"'))),this.options=n,this.animate=void 0===n.animate||n.animate}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.load=function(){this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof t.window.HTMLCanvasElement?this.options.canvas:t.window.document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new t.ErrorEvent(new Error(\"Canvas dimensions cannot be less than or equal to zero.\"))):(this.play=function(){this._playing=!0,this.map.triggerRepaint()},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1)},this._finishLoading())},r.prototype.getCanvas=function(){return this.canvas},r.prototype.onAdd=function(t){this.map=t,this.load(),this.canvas&&this.animate&&this.play()},r.prototype.onRemove=function(){this.pause()},r.prototype.prepare=function(){var e=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,e=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,e=!0),!this._hasInvalidDimensions()&&0!==Object.keys(this.tiles).length){var r=this.map.painter.context,n=r.gl;for(var i in this.boundsBuffer||(this.boundsBuffer=r.createVertexBuffer(this._boundsArray,P.members)),this.boundsSegments||(this.boundsSegments=t.SegmentVector.simpleSegment(0,0,4,2)),this.texture?(e||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new t.Texture(r,this.canvas,n.RGBA,{premultiply:!0}),this.tiles){var a=this.tiles[i];\"loaded\"!==a.state&&(a.state=\"loaded\",a.texture=this.texture)}}},r.prototype.serialize=function(){return{type:\"canvas\",coordinates:this.coordinates}},r.prototype.hasTransition=function(){return this._playing},r.prototype._hasInvalidDimensions=function(){for(var t=0,e=[this.canvas.width,this.canvas.height];tthis.max){var o=this._getAndRemoveByKey(this.order[0]);o&&this.onRemove(o)}return this},N.prototype.has=function(t){return t.wrapped().key in this.data},N.prototype.getAndRemove=function(t){return this.has(t)?this._getAndRemoveByKey(t.wrapped().key):null},N.prototype._getAndRemoveByKey=function(t){var e=this.data[t].shift();return e.timeout&&clearTimeout(e.timeout),0===this.data[t].length&&delete this.data[t],this.order.splice(this.order.indexOf(t),1),e.value},N.prototype.getByKey=function(t){var e=this.data[t];return e?e[0].value:null},N.prototype.get=function(t){return this.has(t)?this.data[t.wrapped().key][0].value:null},N.prototype.remove=function(t,e){if(!this.has(t))return this;var r=t.wrapped().key,n=void 0===e?0:this.data[r].indexOf(e),i=this.data[r][n];return this.data[r].splice(n,1),i.timeout&&clearTimeout(i.timeout),0===this.data[r].length&&delete this.data[r],this.onRemove(i.value),this.order.splice(this.order.indexOf(r),1),this},N.prototype.setMaxSize=function(t){for(this.max=t;this.order.length>this.max;){var e=this._getAndRemoveByKey(this.order[0]);e&&this.onRemove(e)}return this},N.prototype.filter=function(t){var e=[];for(var r in this.data)for(var n=0,i=this.data[r];n1||(Math.abs(r)>1&&(1===Math.abs(r+i)?r+=i:1===Math.abs(r-i)&&(r-=i)),e.dem&&t.dem&&(t.dem.backfillBorder(e.dem,r,n),t.neighboringTiles&&t.neighboringTiles[a]&&(t.neighboringTiles[a].backfilled=!0)))}},r.prototype.getTile=function(t){return this.getTileByID(t.key)},r.prototype.getTileByID=function(t){return this._tiles[t]},r.prototype._retainLoadedChildren=function(t,e,r,n){for(var i in this._tiles){var a=this._tiles[i];if(!(n[i]||!a.hasData()||a.tileID.overscaledZ<=e||a.tileID.overscaledZ>r)){for(var o=a.tileID;a&&a.tileID.overscaledZ>e+1;){var s=a.tileID.scaledTo(a.tileID.overscaledZ-1);(a=this._tiles[s.key])&&a.hasData()&&(o=s)}for(var l=o;l.overscaledZ>e;)if(t[(l=l.scaledTo(l.overscaledZ-1)).key]){n[o.key]=o;break}}}},r.prototype.findLoadedParent=function(t,e){if(t.key in this._loadedParentTiles){var r=this._loadedParentTiles[t.key];return r&&r.tileID.overscaledZ>=e?r:null}for(var n=t.overscaledZ-1;n>=e;n--){var i=t.scaledTo(n),a=this._getLoadedTile(i);if(a)return a}},r.prototype._getLoadedTile=function(t){var e=this._tiles[t.key];return e&&e.hasData()?e:this._cache.getByKey(t.wrapped().key)},r.prototype.updateCacheSize=function(t){var e=(Math.ceil(t.width/this._source.tileSize)+1)*(Math.ceil(t.height/this._source.tileSize)+1),r=Math.floor(5*e),n=\"number\"==typeof this._maxTileCacheSize?Math.min(this._maxTileCacheSize,r):r;this._cache.setMaxSize(n)},r.prototype.handleWrapJump=function(t){var e=(t-(void 0===this._prevLng?t:this._prevLng))/360,r=Math.round(e);if(this._prevLng=t,r){var n={};for(var i in this._tiles){var a=this._tiles[i];a.tileID=a.tileID.unwrapTo(a.tileID.wrap+r),n[a.tileID.key]=a}for(var o in this._tiles=n,this._timers)clearTimeout(this._timers[o]),delete this._timers[o];for(var s in this._tiles){var l=this._tiles[s];this._setTileReloadTimer(s,l)}}},r.prototype.update=function(e){var n=this;if(this.transform=e,this._sourceLoaded&&!this._paused){var i;this.updateCacheSize(e),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used?this._source.tileID?i=e.getVisibleUnwrappedCoordinates(this._source.tileID).map((function(e){return new t.OverscaledTileID(e.canonical.z,e.wrap,e.canonical.z,e.canonical.x,e.canonical.y)})):(i=e.coveringTiles({tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled}),this._source.hasTile&&(i=i.filter((function(t){return n._source.hasTile(t)})))):i=[];var a=e.coveringZoomLevel(this._source),o=Math.max(a-r.maxOverzooming,this._source.minzoom),s=Math.max(a+r.maxUnderzooming,this._source.minzoom),l=this._updateRetainedTiles(i,a);if(It(this._source.type)){for(var c={},u={},f=0,h=Object.keys(l);fthis._source.maxzoom){var m=d.children(this._source.maxzoom)[0],v=this.getTile(m);if(v&&v.hasData()){n[m.key]=m;continue}}else{var y=d.children(this._source.maxzoom);if(n[y[0].key]&&n[y[1].key]&&n[y[2].key]&&n[y[3].key])continue}for(var x=g.wasRequested(),b=d.overscaledZ-1;b>=a;--b){var _=d.scaledTo(b);if(i[_.key])break;if(i[_.key]=!0,!(g=this.getTile(_))&&x&&(g=this._addTile(_)),g&&(n[_.key]=_,x=g.wasRequested(),g.hasData()))break}}}return n},r.prototype._updateLoadedParentTileCache=function(){for(var t in this._loadedParentTiles={},this._tiles){for(var e=[],r=void 0,n=this._tiles[t].tileID;n.overscaledZ>0;){if(n.key in this._loadedParentTiles){r=this._loadedParentTiles[n.key];break}e.push(n.key);var i=n.scaledTo(n.overscaledZ-1);if(r=this._getLoadedTile(i))break;n=i}for(var a=0,o=e;a0||(e.hasData()&&\"reloading\"!==e.state?this._cache.add(e.tileID,e,e.getExpiryTimeout()):(e.aborted=!0,this._abortTile(e),this._unloadTile(e))))},r.prototype.clearTiles=function(){for(var t in this._shouldReloadOnResume=!1,this._paused=!1,this._tiles)this._removeTile(t);this._cache.reset()},r.prototype.tilesIn=function(e,r,n){var i=this,a=[],o=this.transform;if(!o)return a;for(var s=n?o.getCameraQueryGeometry(e):e,l=e.map((function(t){return o.pointCoordinate(t)})),c=s.map((function(t){return o.pointCoordinate(t)})),u=this.getIds(),f=1/0,h=1/0,p=-1/0,d=-1/0,g=0,m=c;g=0&&v[1].y+m>=0){var y=l.map((function(t){return s.getTilePoint(t)})),x=c.map((function(t){return s.getTilePoint(t)}));a.push({tile:n,tileID:s,queryGeometry:y,cameraQueryGeometry:x,scale:g})}}},x=0;x=t.browser.now())return!0}return!1},r.prototype.setFeatureState=function(t,e,r){t=t||\"_geojsonTileLayer\",this._state.updateState(t,e,r)},r.prototype.removeFeatureState=function(t,e,r){t=t||\"_geojsonTileLayer\",this._state.removeFeatureState(t,e,r)},r.prototype.getFeatureState=function(t,e){return t=t||\"_geojsonTileLayer\",this._state.getState(t,e)},r.prototype.setDependencies=function(t,e,r){var n=this._tiles[t];n&&n.setDependencies(e,r)},r.prototype.reloadTilesForDependencies=function(t,e){for(var r in this._tiles){this._tiles[r].hasDependency(t,e)&&this._reloadTile(r,\"reloading\")}this._cache.filter((function(r){return!r.hasDependency(t,e)}))},r}(t.Evented);function Pt(t,e){var r=Math.abs(2*t.wrap)-+(t.wrap<0),n=Math.abs(2*e.wrap)-+(e.wrap<0);return t.overscaledZ-e.overscaledZ||n-r||e.canonical.y-t.canonical.y||e.canonical.x-t.canonical.x}function It(t){return\"raster\"===t||\"image\"===t||\"video\"===t}function Ot(){return new t.window.Worker(Zi.workerUrl)}Ct.maxOverzooming=10,Ct.maxUnderzooming=3;var zt=\"mapboxgl_preloaded_worker_pool\",Dt=function(){this.active={}};Dt.prototype.acquire=function(t){if(!this.workers)for(this.workers=[];this.workers.length0?(i-o)/s:0;return this.points[a].mult(1-l).add(this.points[r].mult(l))};var Kt=function(t,e,r){var n=this.boxCells=[],i=this.circleCells=[];this.xCellCount=Math.ceil(t/r),this.yCellCount=Math.ceil(e/r);for(var a=0;a=-e[0]&&r<=e[0]&&n>=-e[1]&&n<=e[1]}function ne(e,r,n,i,a,o,s,l){var c=i?e.textSizeData:e.iconSizeData,u=t.evaluateSizeForZoom(c,n.transform.zoom),f=[256/n.width*2+1,256/n.height*2+1],h=i?e.text.dynamicLayoutVertexArray:e.icon.dynamicLayoutVertexArray;h.clear();for(var p=e.lineVertexArray,d=i?e.text.placedSymbolArray:e.icon.placedSymbolArray,g=n.transform.width/n.transform.height,m=!1,v=0;vMath.abs(n.x-r.x)*i)return{useVertical:!0};return(e===t.WritingMode.vertical?r.yn.x)?{needsFlipping:!0}:null}function oe(e,r,n,i,a,o,s,l,c,u,f,h,p,d){var g,m=r/24,v=e.lineOffsetX*m,y=e.lineOffsetY*m;if(e.numGlyphs>1){var x=e.glyphStartIndex+e.numGlyphs,b=e.lineStartIndex,_=e.lineStartIndex+e.lineLength,w=ie(m,l,v,y,n,f,h,e,c,o,p);if(!w)return{notEnoughRoom:!0};var T=te(w.first.point,s).point,k=te(w.last.point,s).point;if(i&&!n){var A=ae(e.writingMode,T,k,d);if(A)return A}g=[w.first];for(var M=e.glyphStartIndex+1;M0?C.point:se(h,L,S,1,a),I=ae(e.writingMode,S,P,d);if(I)return I}var O=le(m*l.getoffsetX(e.glyphStartIndex),v,y,n,f,h,e.segment,e.lineStartIndex,e.lineStartIndex+e.lineLength,c,o,p);if(!O)return{notEnoughRoom:!0};g=[O]}for(var z=0,D=g;z0?1:-1,g=0;i&&(d*=-1,g=Math.PI),d<0&&(g+=Math.PI);for(var m=d>0?l+s:l+s+1,v=a,y=a,x=0,b=0,_=Math.abs(p),w=[];x+b<=_;){if((m+=d)=c)return null;if(y=v,w.push(v),void 0===(v=h[m])){var T=new t.Point(u.getx(m),u.gety(m)),k=te(T,f);if(k.signedDistanceFromCamera>0)v=h[m]=k.point;else{var A=m-d;v=se(0===x?o:new t.Point(u.getx(A),u.gety(A)),T,y,_-x+1,f)}}x+=b,b=y.dist(v)}var M=(_-x)/b,S=v.sub(y),E=S.mult(M)._add(y);E._add(S._unit()._perp()._mult(n*d));var L=g+Math.atan2(v.y-y.y,v.x-y.x);return w.push(E),{point:E,angle:L,path:w}}Kt.prototype.keysLength=function(){return this.boxKeys.length+this.circleKeys.length},Kt.prototype.insert=function(t,e,r,n,i){this._forEachCell(e,r,n,i,this._insertBoxCell,this.boxUid++),this.boxKeys.push(t),this.bboxes.push(e),this.bboxes.push(r),this.bboxes.push(n),this.bboxes.push(i)},Kt.prototype.insertCircle=function(t,e,r,n){this._forEachCell(e-n,r-n,e+n,r+n,this._insertCircleCell,this.circleUid++),this.circleKeys.push(t),this.circles.push(e),this.circles.push(r),this.circles.push(n)},Kt.prototype._insertBoxCell=function(t,e,r,n,i,a){this.boxCells[i].push(a)},Kt.prototype._insertCircleCell=function(t,e,r,n,i,a){this.circleCells[i].push(a)},Kt.prototype._query=function(t,e,r,n,i,a){if(r<0||t>this.width||n<0||e>this.height)return!i&&[];var o=[];if(t<=0&&e<=0&&this.width<=r&&this.height<=n){if(i)return!0;for(var s=0;s0:o},Kt.prototype._queryCircle=function(t,e,r,n,i){var a=t-r,o=t+r,s=e-r,l=e+r;if(o<0||a>this.width||l<0||s>this.height)return!n&&[];var c=[],u={hitTest:n,circle:{x:t,y:e,radius:r},seenUids:{box:{},circle:{}}};return this._forEachCell(a,s,o,l,this._queryCellCircle,c,u,i),n?c.length>0:c},Kt.prototype.query=function(t,e,r,n,i){return this._query(t,e,r,n,!1,i)},Kt.prototype.hitTest=function(t,e,r,n,i){return this._query(t,e,r,n,!0,i)},Kt.prototype.hitTestCircle=function(t,e,r,n){return this._queryCircle(t,e,r,!0,n)},Kt.prototype._queryCell=function(t,e,r,n,i,a,o,s){var l=o.seenUids,c=this.boxCells[i];if(null!==c)for(var u=this.bboxes,f=0,h=c;f=u[d+0]&&n>=u[d+1]&&(!s||s(this.boxKeys[p]))){if(o.hitTest)return a.push(!0),!0;a.push({key:this.boxKeys[p],x1:u[d],y1:u[d+1],x2:u[d+2],y2:u[d+3]})}}}var g=this.circleCells[i];if(null!==g)for(var m=this.circles,v=0,y=g;vo*o+s*s},Kt.prototype._circleAndRectCollide=function(t,e,r,n,i,a,o){var s=(a-n)/2,l=Math.abs(t-(n+s));if(l>s+r)return!1;var c=(o-i)/2,u=Math.abs(e-(i+c));if(u>c+r)return!1;if(l<=s||u<=c)return!0;var f=l-s,h=u-c;return f*f+h*h<=r*r};var ce=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function ue(t,e){for(var r=0;r=1;P--)C.push(E.path[P]);for(var I=1;I0){for(var R=C[0].clone(),F=C[0].clone(),B=1;B=A.x&&F.x<=M.x&&R.y>=A.y&&F.y<=M.y?[C]:F.xM.x||F.yM.y?[]:t.clipLine([C],A.x,A.y,M.x,M.y)}for(var N=0,j=D;N=this.screenRightBoundary||n<100||e>this.screenBottomBoundary},he.prototype.isInsideGrid=function(t,e,r,n){return r>=0&&t=0&&e0)return this.prevPlacement&&this.prevPlacement.variableOffsets[f.crossTileID]&&this.prevPlacement.placements[f.crossTileID]&&this.prevPlacement.placements[f.crossTileID].text&&(g=this.prevPlacement.variableOffsets[f.crossTileID].anchor),this.variableOffsets[f.crossTileID]={textOffset:m,width:r,height:n,anchor:t,textBoxScale:i,prevAnchor:g},this.markUsedJustification(h,t,f,p),h.allowVerticalPlacement&&(this.markUsedOrientation(h,p,f),this.placedOrientations[f.crossTileID]=p),{shift:v,placedGlyphBoxes:y}},we.prototype.placeLayerBucketPart=function(e,r,n){var i=this,a=e.parameters,o=a.bucket,s=a.layout,l=a.posMatrix,c=a.textLabelPlaneMatrix,u=a.labelToScreenMatrix,f=a.textPixelRatio,h=a.holdingForFade,p=a.collisionBoxArray,d=a.partiallyEvaluatedTextSize,g=a.collisionGroup,m=s.get(\"text-optional\"),v=s.get(\"icon-optional\"),y=s.get(\"text-allow-overlap\"),x=s.get(\"icon-allow-overlap\"),b=\"map\"===s.get(\"text-rotation-alignment\"),_=\"map\"===s.get(\"text-pitch-alignment\"),w=\"none\"!==s.get(\"icon-text-fit\"),T=\"viewport-y\"===s.get(\"symbol-z-order\"),k=y&&(x||!o.hasIconData()||v),A=x&&(y||!o.hasTextData()||m);!o.collisionArrays&&p&&o.deserializeCollisionBoxes(p);var M=function(e,a){if(!r[e.crossTileID])if(h)i.placements[e.crossTileID]=new me(!1,!1,!1);else{var p,T=!1,M=!1,S=!0,E=null,L={box:null,offscreen:null},C={box:null,offscreen:null},P=null,I=null,O=0,z=0,D=0;a.textFeatureIndex?O=a.textFeatureIndex:e.useRuntimeCollisionCircles&&(O=e.featureIndex),a.verticalTextFeatureIndex&&(z=a.verticalTextFeatureIndex);var R=a.textBox;if(R){var F=function(r){var n=t.WritingMode.horizontal;if(o.allowVerticalPlacement&&!r&&i.prevPlacement){var a=i.prevPlacement.placedOrientations[e.crossTileID];a&&(i.placedOrientations[e.crossTileID]=a,n=a,i.markUsedOrientation(o,n,e))}return n},B=function(r,n){if(o.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&a.verticalTextBox)for(var i=0,s=o.writingModes;i0&&(N=N.filter((function(t){return t!==j.anchor}))).unshift(j.anchor)}var U=function(t,r,n){for(var a=t.x2-t.x1,s=t.y2-t.y1,c=e.textBoxScale,u=w&&!x?r:null,h={box:[],offscreen:!1},p=y?2*N.length:N.length,d=0;d=N.length,k=i.attemptAnchorPlacement(m,t,a,s,c,b,_,f,l,g,v,e,o,n,u);if(k&&(h=k.placedGlyphBoxes)&&h.box&&h.box.length){T=!0,E=k.shift;break}}return h};B((function(){return U(R,a.iconBox,t.WritingMode.horizontal)}),(function(){var r=a.verticalTextBox,n=L&&L.box&&L.box.length;return o.allowVerticalPlacement&&!n&&e.numVerticalGlyphVertices>0&&r?U(r,a.verticalIconBox,t.WritingMode.vertical):{box:null,offscreen:null}})),L&&(T=L.box,S=L.offscreen);var V=F(L&&L.box);if(!T&&i.prevPlacement){var H=i.prevPlacement.variableOffsets[e.crossTileID];H&&(i.variableOffsets[e.crossTileID]=H,i.markUsedJustification(o,H.anchor,e,V))}}else{var q=function(t,r){var n=i.collisionIndex.placeCollisionBox(t,y,f,l,g.predicate);return n&&n.box&&n.box.length&&(i.markUsedOrientation(o,r,e),i.placedOrientations[e.crossTileID]=r),n};B((function(){return q(R,t.WritingMode.horizontal)}),(function(){var r=a.verticalTextBox;return o.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&r?q(r,t.WritingMode.vertical):{box:null,offscreen:null}})),F(L&&L.box&&L.box.length)}}if(T=(p=L)&&p.box&&p.box.length>0,S=p&&p.offscreen,e.useRuntimeCollisionCircles){var G=o.text.placedSymbolArray.get(e.centerJustifiedTextSymbolIndex),Y=t.evaluateSizeForFeature(o.textSizeData,d,G),W=s.get(\"text-padding\"),X=e.collisionCircleDiameter;P=i.collisionIndex.placeCollisionCircles(y,G,o.lineVertexArray,o.glyphOffsetArray,Y,l,c,u,n,_,g.predicate,X,W),T=y||P.circles.length>0&&!P.collisionDetected,S=S&&P.offscreen}if(a.iconFeatureIndex&&(D=a.iconFeatureIndex),a.iconBox){var Z=function(t){var e=w&&E?_e(t,E.x,E.y,b,_,i.transform.angle):t;return i.collisionIndex.placeCollisionBox(e,x,f,l,g.predicate)};M=C&&C.box&&C.box.length&&a.verticalIconBox?(I=Z(a.verticalIconBox)).box.length>0:(I=Z(a.iconBox)).box.length>0,S=S&&I.offscreen}var J=m||0===e.numHorizontalGlyphVertices&&0===e.numVerticalGlyphVertices,K=v||0===e.numIconVertices;if(J||K?K?J||(M=M&&T):T=M&&T:M=T=M&&T,T&&p&&p.box&&(C&&C.box&&z?i.collisionIndex.insertCollisionBox(p.box,s.get(\"text-ignore-placement\"),o.bucketInstanceId,z,g.ID):i.collisionIndex.insertCollisionBox(p.box,s.get(\"text-ignore-placement\"),o.bucketInstanceId,O,g.ID)),M&&I&&i.collisionIndex.insertCollisionBox(I.box,s.get(\"icon-ignore-placement\"),o.bucketInstanceId,D,g.ID),P&&(T&&i.collisionIndex.insertCollisionCircles(P.circles,s.get(\"text-ignore-placement\"),o.bucketInstanceId,O,g.ID),n)){var Q=o.bucketInstanceId,$=i.collisionCircleArrays[Q];void 0===$&&($=i.collisionCircleArrays[Q]=new ve);for(var tt=0;tt=0;--E){var L=S[E];M(o.symbolInstances.get(L),o.collisionArrays[L])}else for(var C=e.symbolInstanceStart;C=0&&(e.text.placedSymbolArray.get(c).crossTileID=a>=0&&c!==a?0:n.crossTileID)}},we.prototype.markUsedOrientation=function(e,r,n){for(var i=r===t.WritingMode.horizontal||r===t.WritingMode.horizontalOnly?r:0,a=r===t.WritingMode.vertical?r:0,o=0,s=[n.leftJustifiedTextSymbolIndex,n.centerJustifiedTextSymbolIndex,n.rightJustifiedTextSymbolIndex];o0||l>0,x=a.numIconVertices>0,b=i.placedOrientations[a.crossTileID],_=b===t.WritingMode.vertical,w=b===t.WritingMode.horizontal||b===t.WritingMode.horizontalOnly;if(y){var T=Pe(v.text),k=_?Ie:T;d(e.text,s,k);var A=w?Ie:T;d(e.text,l,A);var M=v.text.isHidden();[a.rightJustifiedTextSymbolIndex,a.centerJustifiedTextSymbolIndex,a.leftJustifiedTextSymbolIndex].forEach((function(t){t>=0&&(e.text.placedSymbolArray.get(t).hidden=M||_?1:0)})),a.verticalPlacedTextSymbolIndex>=0&&(e.text.placedSymbolArray.get(a.verticalPlacedTextSymbolIndex).hidden=M||w?1:0);var S=i.variableOffsets[a.crossTileID];S&&i.markUsedJustification(e,S.anchor,a,b);var E=i.placedOrientations[a.crossTileID];E&&(i.markUsedJustification(e,\"left\",a,E),i.markUsedOrientation(e,E,a))}if(x){var L=Pe(v.icon),C=!(h&&a.verticalPlacedIconSymbolIndex&&_);if(a.placedIconSymbolIndex>=0){var P=C?L:Ie;d(e.icon,a.numIconVertices,P),e.icon.placedSymbolArray.get(a.placedIconSymbolIndex).hidden=v.icon.isHidden()}if(a.verticalPlacedIconSymbolIndex>=0){var I=C?Ie:L;d(e.icon,a.numVerticalIconVertices,I),e.icon.placedSymbolArray.get(a.verticalPlacedIconSymbolIndex).hidden=v.icon.isHidden()}}if(e.hasIconCollisionBoxData()||e.hasTextCollisionBoxData()){var O=e.collisionArrays[n];if(O){var z=new t.Point(0,0);if(O.textBox||O.verticalTextBox){var D=!0;if(c){var R=i.variableOffsets[g];R?(z=be(R.anchor,R.width,R.height,R.textOffset,R.textBoxScale),u&&z._rotate(f?i.transform.angle:-i.transform.angle)):D=!1}O.textBox&&Te(e.textCollisionBox.collisionVertexArray,v.text.placed,!D||_,z.x,z.y),O.verticalTextBox&&Te(e.textCollisionBox.collisionVertexArray,v.text.placed,!D||w,z.x,z.y)}var F=Boolean(!w&&O.verticalIconBox);O.iconBox&&Te(e.iconCollisionBox.collisionVertexArray,v.icon.placed,F,h?z.x:0,h?z.y:0),O.verticalIconBox&&Te(e.iconCollisionBox.collisionVertexArray,v.icon.placed,!F,h?z.x:0,h?z.y:0)}}},m=0;mt},we.prototype.setStale=function(){this.stale=!0};var ke=Math.pow(2,25),Ae=Math.pow(2,24),Me=Math.pow(2,17),Se=Math.pow(2,16),Ee=Math.pow(2,9),Le=Math.pow(2,8),Ce=Math.pow(2,1);function Pe(t){if(0===t.opacity&&!t.placed)return 0;if(1===t.opacity&&t.placed)return 4294967295;var e=t.placed?1:0,r=Math.floor(127*t.opacity);return r*ke+e*Ae+r*Me+e*Se+r*Ee+e*Le+r*Ce+e}var Ie=0,Oe=function(t){this._sortAcrossTiles=\"viewport-y\"!==t.layout.get(\"symbol-z-order\")&&void 0!==t.layout.get(\"symbol-sort-key\").constantOr(1),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[]};Oe.prototype.continuePlacement=function(t,e,r,n,i){for(var a=this._bucketParts;this._currentTileIndex2};this._currentPlacementIndex>=0;){var s=r[e[this._currentPlacementIndex]],l=this.placement.collisionIndex.transform.zoom;if(\"symbol\"===s.type&&(!s.minzoom||s.minzoom<=l)&&(!s.maxzoom||s.maxzoom>l)){if(this._inProgressLayer||(this._inProgressLayer=new Oe(s)),this._inProgressLayer.continuePlacement(n[s.source],this.placement,this._showCollisionBoxes,s,o))return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0},ze.prototype.commit=function(t){return this.placement.commit(t),this.placement};var De=512/t.EXTENT/2,Re=function(t,e,r){this.tileID=t,this.indexedSymbolInstances={},this.bucketInstanceId=r;for(var n=0;nt.overscaledZ)for(var s in o){var l=o[s];l.tileID.isChildOf(t)&&l.findMatches(e.symbolInstances,t,i)}else{var c=o[t.scaledTo(Number(a)).key];c&&c.findMatches(e.symbolInstances,t,i)}}for(var u=0;u1?\"@2x\":\"\",l=t.getJSON(r.transformRequest(r.normalizeSpriteURL(e,s,\".json\"),t.ResourceType.SpriteJSON),(function(t,e){l=null,o||(o=t,i=e,u())})),c=t.getImage(r.transformRequest(r.normalizeSpriteURL(e,s,\".png\"),t.ResourceType.SpriteImage),(function(t,e){c=null,o||(o=t,a=e,u())}));function u(){if(o)n(o);else if(i&&a){var e=t.browser.getImageData(a),r={};for(var s in i){var l=i[s],c=l.width,u=l.height,f=l.x,h=l.y,p=l.sdf,d=l.pixelRatio,g=l.stretchX,m=l.stretchY,v=l.content,y=new t.RGBAImage({width:c,height:u});t.RGBAImage.copy(e,y,{x:f,y:h},{x:0,y:0},{width:c,height:u}),r[s]={data:y,pixelRatio:d,sdf:p,stretchX:g,stretchY:m,content:v}}n(null,r)}}return{cancel:function(){l&&(l.cancel(),l=null),c&&(c.cancel(),c=null)}}}(e,this.map._requestManager,(function(e,n){if(r._spriteRequest=null,e)r.fire(new t.ErrorEvent(e));else if(n)for(var i in n)r.imageManager.addImage(i,n[i]);r.imageManager.setLoaded(!0),r._availableImages=r.imageManager.listImages(),r.dispatcher.broadcast(\"setImages\",r._availableImages),r.fire(new t.Event(\"data\",{dataType:\"style\"}))}))},r.prototype._validateLayer=function(e){var r=this.sourceCaches[e.source];if(r){var n=e.sourceLayer;if(n){var i=r.getSource();(\"geojson\"===i.type||i.vectorLayerIds&&-1===i.vectorLayerIds.indexOf(n))&&this.fire(new t.ErrorEvent(new Error('Source layer \"'+n+'\" does not exist on source \"'+i.id+'\" as specified by style layer \"'+e.id+'\"')))}}},r.prototype.loaded=function(){if(!this._loaded)return!1;if(Object.keys(this._updatedSources).length)return!1;for(var t in this.sourceCaches)if(!this.sourceCaches[t].loaded())return!1;return!!this.imageManager.isLoaded()},r.prototype._serializeLayers=function(t){for(var e=[],r=0,n=t;r0)throw new Error(\"Unimplemented: \"+i.map((function(t){return t.command})).join(\", \")+\".\");return n.forEach((function(t){\"setTransition\"!==t.command&&r[t.command].apply(r,t.args)})),this.stylesheet=e,!0},r.prototype.addImage=function(e,r){if(this.getImage(e))return this.fire(new t.ErrorEvent(new Error(\"An image with this name already exists.\")));this.imageManager.addImage(e,r),this._availableImages=this.imageManager.listImages(),this._changedImages[e]=!0,this._changed=!0,this.fire(new t.Event(\"data\",{dataType:\"style\"}))},r.prototype.updateImage=function(t,e){this.imageManager.updateImage(t,e)},r.prototype.getImage=function(t){return this.imageManager.getImage(t)},r.prototype.removeImage=function(e){if(!this.getImage(e))return this.fire(new t.ErrorEvent(new Error(\"No image with this name exists.\")));this.imageManager.removeImage(e),this._availableImages=this.imageManager.listImages(),this._changedImages[e]=!0,this._changed=!0,this.fire(new t.Event(\"data\",{dataType:\"style\"}))},r.prototype.listImages=function(){return this._checkLoaded(),this.imageManager.listImages()},r.prototype.addSource=function(e,r,n){var i=this;if(void 0===n&&(n={}),this._checkLoaded(),void 0!==this.sourceCaches[e])throw new Error(\"There is already a source with this ID\");if(!r.type)throw new Error(\"The type property must be defined, but the only the following properties were given: \"+Object.keys(r).join(\", \")+\".\");if(!([\"vector\",\"raster\",\"geojson\",\"video\",\"image\"].indexOf(r.type)>=0)||!this._validate(t.validateStyle.source,\"sources.\"+e,r,null,n)){this.map&&this.map._collectResourceTiming&&(r.collectResourceTiming=!0);var a=this.sourceCaches[e]=new Ct(e,r,this.dispatcher);a.style=this,a.setEventedParent(this,(function(){return{isSourceLoaded:i.loaded(),source:a.serialize(),sourceId:e}})),a.onAdd(this.map),this._changed=!0}},r.prototype.removeSource=function(e){if(this._checkLoaded(),void 0===this.sourceCaches[e])throw new Error(\"There is no source with this ID\");for(var r in this._layers)if(this._layers[r].source===e)return this.fire(new t.ErrorEvent(new Error('Source \"'+e+'\" cannot be removed while layer \"'+r+'\" is using it.')));var n=this.sourceCaches[e];delete this.sourceCaches[e],delete this._updatedSources[e],n.fire(new t.Event(\"data\",{sourceDataType:\"metadata\",dataType:\"source\",sourceId:e})),n.setEventedParent(null),n.clearTiles(),n.onRemove&&n.onRemove(this.map),this._changed=!0},r.prototype.setGeoJSONSourceData=function(t,e){this._checkLoaded(),this.sourceCaches[t].getSource().setData(e),this._changed=!0},r.prototype.getSource=function(t){return this.sourceCaches[t]&&this.sourceCaches[t].getSource()},r.prototype.addLayer=function(e,r,n){void 0===n&&(n={}),this._checkLoaded();var i=e.id;if(this.getLayer(i))this.fire(new t.ErrorEvent(new Error('Layer with id \"'+i+'\" already exists on this map')));else{var a;if(\"custom\"===e.type){if(je(this,t.validateCustomStyleLayer(e)))return;a=t.createStyleLayer(e)}else{if(\"object\"==typeof e.source&&(this.addSource(i,e.source),e=t.clone$1(e),e=t.extend(e,{source:i})),this._validate(t.validateStyle.layer,\"layers.\"+i,e,{arrayIndex:-1},n))return;a=t.createStyleLayer(e),this._validateLayer(a),a.setEventedParent(this,{layer:{id:i}}),this._serializedLayers[a.id]=a.serialize()}var o=r?this._order.indexOf(r):this._order.length;if(r&&-1===o)this.fire(new t.ErrorEvent(new Error('Layer with id \"'+r+'\" does not exist on this map.')));else{if(this._order.splice(o,0,i),this._layerOrderChanged=!0,this._layers[i]=a,this._removedLayers[i]&&a.source&&\"custom\"!==a.type){var s=this._removedLayers[i];delete this._removedLayers[i],s.type!==a.type?this._updatedSources[a.source]=\"clear\":(this._updatedSources[a.source]=\"reload\",this.sourceCaches[a.source].pause())}this._updateLayer(a),a.onAdd&&a.onAdd(this.map)}}},r.prototype.moveLayer=function(e,r){if(this._checkLoaded(),this._changed=!0,this._layers[e]){if(e!==r){var n=this._order.indexOf(e);this._order.splice(n,1);var i=r?this._order.indexOf(r):this._order.length;r&&-1===i?this.fire(new t.ErrorEvent(new Error('Layer with id \"'+r+'\" does not exist on this map.'))):(this._order.splice(i,0,e),this._layerOrderChanged=!0)}}else this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be moved.\")))},r.prototype.removeLayer=function(e){this._checkLoaded();var r=this._layers[e];if(r){r.setEventedParent(null);var n=this._order.indexOf(e);this._order.splice(n,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[e]=r,delete this._layers[e],delete this._serializedLayers[e],delete this._updatedLayers[e],delete this._updatedPaintProps[e],r.onRemove&&r.onRemove(this.map)}else this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be removed.\")))},r.prototype.getLayer=function(t){return this._layers[t]},r.prototype.hasLayer=function(t){return t in this._layers},r.prototype.setLayerZoomRange=function(e,r,n){this._checkLoaded();var i=this.getLayer(e);i?i.minzoom===r&&i.maxzoom===n||(null!=r&&(i.minzoom=r),null!=n&&(i.maxzoom=n),this._updateLayer(i)):this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot have zoom extent.\")))},r.prototype.setFilter=function(e,r,n){void 0===n&&(n={}),this._checkLoaded();var i=this.getLayer(e);if(i){if(!t.deepEqual(i.filter,r))return null==r?(i.filter=void 0,void this._updateLayer(i)):void(this._validate(t.validateStyle.filter,\"layers.\"+i.id+\".filter\",r,null,n)||(i.filter=t.clone$1(r),this._updateLayer(i)))}else this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be filtered.\")))},r.prototype.getFilter=function(e){return t.clone$1(this.getLayer(e).filter)},r.prototype.setLayoutProperty=function(e,r,n,i){void 0===i&&(i={}),this._checkLoaded();var a=this.getLayer(e);a?t.deepEqual(a.getLayoutProperty(r),n)||(a.setLayoutProperty(r,n,i),this._updateLayer(a)):this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be styled.\")))},r.prototype.getLayoutProperty=function(e,r){var n=this.getLayer(e);if(n)return n.getLayoutProperty(r);this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style.\")))},r.prototype.setPaintProperty=function(e,r,n,i){void 0===i&&(i={}),this._checkLoaded();var a=this.getLayer(e);a?t.deepEqual(a.getPaintProperty(r),n)||(a.setPaintProperty(r,n,i)&&this._updateLayer(a),this._changed=!0,this._updatedPaintProps[e]=!0):this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be styled.\")))},r.prototype.getPaintProperty=function(t,e){return this.getLayer(t).getPaintProperty(e)},r.prototype.setFeatureState=function(e,r){this._checkLoaded();var n=e.source,i=e.sourceLayer,a=this.sourceCaches[n];if(void 0!==a){var o=a.getSource().type;\"geojson\"===o&&i?this.fire(new t.ErrorEvent(new Error(\"GeoJSON sources cannot have a sourceLayer parameter.\"))):\"vector\"!==o||i?(void 0===e.id&&this.fire(new t.ErrorEvent(new Error(\"The feature id parameter must be provided.\"))),a.setFeatureState(i,e.id,r)):this.fire(new t.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")))}else this.fire(new t.ErrorEvent(new Error(\"The source '\"+n+\"' does not exist in the map's style.\")))},r.prototype.removeFeatureState=function(e,r){this._checkLoaded();var n=e.source,i=this.sourceCaches[n];if(void 0!==i){var a=i.getSource().type,o=\"vector\"===a?e.sourceLayer:void 0;\"vector\"!==a||o?r&&\"string\"!=typeof e.id&&\"number\"!=typeof e.id?this.fire(new t.ErrorEvent(new Error(\"A feature id is requred to remove its specific state property.\"))):i.removeFeatureState(o,e.id,r):this.fire(new t.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")))}else this.fire(new t.ErrorEvent(new Error(\"The source '\"+n+\"' does not exist in the map's style.\")))},r.prototype.getFeatureState=function(e){this._checkLoaded();var r=e.source,n=e.sourceLayer,i=this.sourceCaches[r];if(void 0!==i){if(\"vector\"!==i.getSource().type||n)return void 0===e.id&&this.fire(new t.ErrorEvent(new Error(\"The feature id parameter must be provided.\"))),i.getFeatureState(n,e.id);this.fire(new t.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")))}else this.fire(new t.ErrorEvent(new Error(\"The source '\"+r+\"' does not exist in the map's style.\")))},r.prototype.getTransition=function(){return t.extend({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)},r.prototype.serialize=function(){return t.filterObject({version:this.stylesheet.version,name:this.stylesheet.name,metadata:this.stylesheet.metadata,light:this.stylesheet.light,center:this.stylesheet.center,zoom:this.stylesheet.zoom,bearing:this.stylesheet.bearing,pitch:this.stylesheet.pitch,sprite:this.stylesheet.sprite,glyphs:this.stylesheet.glyphs,transition:this.stylesheet.transition,sources:t.mapObject(this.sourceCaches,(function(t){return t.serialize()})),layers:this._serializeLayers(this._order)},(function(t){return void 0!==t}))},r.prototype._updateLayer=function(t){this._updatedLayers[t.id]=!0,t.source&&!this._updatedSources[t.source]&&\"raster\"!==this.sourceCaches[t.source].getSource().type&&(this._updatedSources[t.source]=\"reload\",this.sourceCaches[t.source].pause()),this._changed=!0},r.prototype._flattenAndSortRenderedFeatures=function(t){for(var e=this,r=function(t){return\"fill-extrusion\"===e._layers[t].type},n={},i=[],a=this._order.length-1;a>=0;a--){var o=this._order[a];if(r(o)){n[o]=a;for(var s=0,l=t;s=0;d--){var g=this._order[d];if(r(g))for(var m=i.length-1;m>=0;m--){var v=i[m].feature;if(n[v.layer.id] 0.5) {gl_FragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {gl_FragColor*=.1;}}\",\"attribute vec2 a_pos;attribute vec2 a_anchor_pos;attribute vec2 a_extrude;attribute vec2 a_placed;attribute vec2 a_shift;uniform mat4 u_matrix;uniform vec2 u_extrude_scale;uniform float u_camera_to_center_distance;varying float v_placed;varying float v_notUsed;void main() {vec4 projectedPoint=u_matrix*vec4(a_anchor_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);gl_Position=u_matrix*vec4(a_pos,0.0,1.0);gl_Position.xy+=(a_extrude+a_shift)*u_extrude_scale*gl_Position.w*collision_perspective_ratio;v_placed=a_placed.x;v_notUsed=a_placed.y;}\"),tr=yr(\"varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;void main() {float alpha=0.5*min(v_perspective_ratio,1.0);float stroke_radius=0.9*max(v_perspective_ratio,1.0);float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);gl_FragColor=color*alpha*opacity_t;}\",\"attribute vec2 a_pos;attribute float a_radius;attribute vec2 a_flags;uniform mat4 u_matrix;uniform mat4 u_inv_matrix;uniform vec2 u_viewport_size;uniform float u_camera_to_center_distance;varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;vec3 toTilePosition(vec2 screenPos) {vec4 rayStart=u_inv_matrix*vec4(screenPos,-1.0,1.0);vec4 rayEnd =u_inv_matrix*vec4(screenPos, 1.0,1.0);rayStart.xyz/=rayStart.w;rayEnd.xyz /=rayEnd.w;highp float t=(0.0-rayStart.z)/(rayEnd.z-rayStart.z);return mix(rayStart.xyz,rayEnd.xyz,t);}void main() {vec2 quadCenterPos=a_pos;float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(mix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;vec3 tilePos=toTilePosition(quadCenterPos);vec4 clipPos=u_matrix*vec4(tilePos,1.0);highp float camera_to_anchor_distance=clipPos.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_perspective_ratio=collision_perspective_ratio;v_collision=collision;gl_Position=vec4(clipPos.xyz/clipPos.w,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}\"),er=yr(\"uniform highp vec4 u_color;uniform sampler2D u_overlay;varying vec2 v_uv;void main() {vec4 overlay_color=texture2D(u_overlay,v_uv);gl_FragColor=mix(u_color,overlay_color,overlay_color.a);}\",\"attribute vec2 a_pos;varying vec2 v_uv;uniform mat4 u_matrix;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=u_matrix*vec4(a_pos*u_overlay_scale,0,1);}\"),rr=yr(\"#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float opacity\\ngl_FragColor=color*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float opacity\\ngl_Position=u_matrix*vec4(a_pos,0,1);}\"),nr=yr(\"varying vec2 v_pos;\\n#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 outline_color\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=outline_color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;uniform vec2 u_world;varying vec2 v_pos;\\n#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 outline_color\\n#pragma mapbox: initialize lowp float opacity\\ngl_Position=u_matrix*vec4(a_pos,0,1);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}\"),ir=yr(\"uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=mix(color1,color2,u_fade)*alpha*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;gl_Position=u_matrix*vec4(a_pos,0,1);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}\"),ar=yr(\"uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_fade)*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);}\"),or=yr(\"varying vec4 v_color;void main() {gl_FragColor=v_color;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec4 v_color;\\n#pragma mapbox: define highp float base\\n#pragma mapbox: define highp float height\\n#pragma mapbox: define highp vec4 color\\nvoid main() {\\n#pragma mapbox: initialize highp float base\\n#pragma mapbox: initialize highp float height\\n#pragma mapbox: initialize highp vec4 color\\nvec3 normal=a_normal_ed.xyz;base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);gl_Position=u_matrix*vec4(a_pos,t > 0.0 ? height : base,1);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal/16384.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}\"),sr=yr(\"uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float base\\n#pragma mapbox: initialize lowp float height\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);gl_FragColor=mixedColor*v_lighting;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float base\\n#pragma mapbox: initialize lowp float height\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);float z=t > 0.0 ? height : base;gl_Position=u_matrix*vec4(a_pos,z,1);vec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0\\n? a_pos\\n: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;}\"),lr=yr(\"#ifdef GL_ES\\nprecision highp float;\\n#endif\\nuniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform float u_maxzoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);float exaggeration=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;vec2 deriv=vec2((c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))/ pow(2.0,(u_zoom-u_maxzoom)*exaggeration+19.2562-u_zoom);gl_FragColor=clamp(vec4(deriv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}\"),cr=yr(\"uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent;\\n#define PI 3.141592653589793\\nvoid main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;}\"),ur=yr(\"uniform lowp float u_device_pixel_ratio;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);gl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_linesofar;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}\"),fr=yr(\"uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp float v_lineprogress;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture2D(u_image,vec2(v_lineprogress,0.5));gl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define MAX_LINE_DISTANCE 32767.0\\n#define scale 0.015873016\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_lineprogress;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_lineprogress=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0/MAX_LINE_DISTANCE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}\"),hr=yr(\"uniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture2D(u_image,pos_a),texture2D(u_image,pos_b),u_fade);gl_FragColor=color*alpha*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\n#define LINE_DISTANCE_SCALE 2.0\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}\"),pr=yr(\"uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform float u_sdfgamma;uniform float u_mix;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture2D(u_image,v_tex_a).a;float sdfdist_b=texture2D(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);alpha*=smoothstep(0.5-u_sdfgamma/floorwidth,0.5+u_sdfgamma/floorwidth,sdfdist);gl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\n#define LINE_DISTANCE_SCALE 2.0\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_patternscale_a;uniform float u_tex_y_a;uniform vec2 u_patternscale_b;uniform float u_tex_y_b;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_tex_a=vec2(a_linesofar*u_patternscale_a.x/floorwidth,normal.y*u_patternscale_a.y+u_tex_y_a);v_tex_b=vec2(a_linesofar*u_patternscale_b.x/floorwidth,normal.y*u_patternscale_b.y+u_tex_y_b);v_width2=vec2(outset,inset);}\"),dr=yr(\"uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);gl_FragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos0=(((a_texture_pos/8192.0)-0.5)/u_buffer_scale )+0.5;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}\"),gr=yr(\"uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity;\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\nlowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;varying vec2 v_tex;varying float v_fade_opacity;\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0),0.0,1.0);v_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;v_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));}\"),mr=yr(\"#define SDF_PX 8.0\\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nfloat EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;varying vec2 v_data0;varying vec3 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity);}\"),vr=yr(\"#define SDF_PX 8.0\\n#define SDF 1.0\\n#define ICON 0.0\\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nfloat fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\nreturn;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;varying vec4 v_data0;varying vec4 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}\");function yr(t,e){var r=/#pragma mapbox: ([\\w]+) ([\\w]+) ([\\w]+) ([\\w]+)/g,n={};return{fragmentSource:t=t.replace(r,(function(t,e,r,i,a){return n[a]=!0,\"define\"===e?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\nvarying \"+r+\" \"+i+\" \"+a+\";\\n#else\\nuniform \"+r+\" \"+i+\" u_\"+a+\";\\n#endif\\n\":\"\\n#ifdef HAS_UNIFORM_u_\"+a+\"\\n \"+r+\" \"+i+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\"})),vertexSource:e=e.replace(r,(function(t,e,r,i,a){var o=\"float\"===i?\"vec2\":\"vec4\",s=a.match(/color/)?\"color\":o;return n[a]?\"define\"===e?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\nuniform lowp float u_\"+a+\"_t;\\nattribute \"+r+\" \"+o+\" a_\"+a+\";\\nvarying \"+r+\" \"+i+\" \"+a+\";\\n#else\\nuniform \"+r+\" \"+i+\" u_\"+a+\";\\n#endif\\n\":\"vec4\"===s?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\n \"+a+\" = a_\"+a+\";\\n#else\\n \"+r+\" \"+i+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\":\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\n \"+a+\" = unpack_mix_\"+s+\"(a_\"+a+\", u_\"+a+\"_t);\\n#else\\n \"+r+\" \"+i+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\":\"define\"===e?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\nuniform lowp float u_\"+a+\"_t;\\nattribute \"+r+\" \"+o+\" a_\"+a+\";\\n#else\\nuniform \"+r+\" \"+i+\" u_\"+a+\";\\n#endif\\n\":\"vec4\"===s?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\n \"+r+\" \"+i+\" \"+a+\" = a_\"+a+\";\\n#else\\n \"+r+\" \"+i+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\":\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\n \"+r+\" \"+i+\" \"+a+\" = unpack_mix_\"+s+\"(a_\"+a+\", u_\"+a+\"_t);\\n#else\\n \"+r+\" \"+i+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\"}))}}var xr=Object.freeze({__proto__:null,prelude:Ye,background:We,backgroundPattern:Xe,circle:Ze,clippingMask:Je,heatmap:Ke,heatmapTexture:Qe,collisionBox:$e,collisionCircle:tr,debug:er,fill:rr,fillOutline:nr,fillOutlinePattern:ir,fillPattern:ar,fillExtrusion:or,fillExtrusionPattern:sr,hillshadePrepare:lr,hillshade:cr,line:ur,lineGradient:fr,linePattern:hr,lineSDF:pr,raster:dr,symbolIcon:gr,symbolSDF:mr,symbolTextAndIcon:vr}),br=function(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null};br.prototype.bind=function(t,e,r,n,i,a,o,s){this.context=t;for(var l=this.boundPaintVertexBuffers.length!==n.length,c=0;!l&&c>16,s>>16],u_pixel_coord_lower:[65535&o,65535&s]}}_r.prototype.draw=function(t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g){var m,v=t.gl;if(!this.failedToCreate){for(var y in t.program.set(this.program),t.setDepthMode(r),t.setStencilMode(n),t.setColorMode(i),t.setCullFace(a),this.fixedUniforms)this.fixedUniforms[y].set(o[y]);p&&p.setUniforms(t,this.binderUniforms,f,{zoom:h});for(var x=(m={},m[v.LINES]=2,m[v.TRIANGLES]=3,m[v.LINE_STRIP]=1,m)[e],b=0,_=u.get();b<_.length;b+=1){var w=_[b],T=w.vaos||(w.vaos={});(T[s]||(T[s]=new br)).bind(t,this,l,p?p.getPaintVertexBuffers():[],c,w.vertexOffset,d,g),v.drawElements(e,w.primitiveLength*x,v.UNSIGNED_SHORT,w.primitiveOffset*x*2)}}};var Tr=function(e,r,n,i){var a=r.style.light,o=a.properties.get(\"position\"),s=[o.x,o.y,o.z],l=t.create$1();\"viewport\"===a.properties.get(\"anchor\")&&t.fromRotation(l,-r.transform.angle),t.transformMat3(s,s,l);var c=a.properties.get(\"color\");return{u_matrix:e,u_lightpos:s,u_lightintensity:a.properties.get(\"intensity\"),u_lightcolor:[c.r,c.g,c.b],u_vertical_gradient:+n,u_opacity:i}},kr=function(e,r,n,i,a,o,s){return t.extend(Tr(e,r,n,i),wr(o,r,s),{u_height_factor:-Math.pow(2,a.overscaledZ)/s.tileSize/8})},Ar=function(t){return{u_matrix:t}},Mr=function(e,r,n,i){return t.extend(Ar(e),wr(n,r,i))},Sr=function(t,e){return{u_matrix:t,u_world:e}},Er=function(e,r,n,i,a){return t.extend(Mr(e,r,n,i),{u_world:a})},Lr=function(e,r,n,i){var a,o,s=e.transform;if(\"map\"===i.paint.get(\"circle-pitch-alignment\")){var l=pe(n,1,s.zoom);a=!0,o=[l,l]}else a=!1,o=s.pixelsToGLUnits;return{u_camera_to_center_distance:s.cameraToCenterDistance,u_scale_with_map:+(\"map\"===i.paint.get(\"circle-pitch-scale\")),u_matrix:e.translatePosMatrix(r.posMatrix,n,i.paint.get(\"circle-translate\"),i.paint.get(\"circle-translate-anchor\")),u_pitch_with_map:+a,u_device_pixel_ratio:t.browser.devicePixelRatio,u_extrude_scale:o}},Cr=function(t,e,r){var n=pe(r,1,e.zoom),i=Math.pow(2,e.zoom-r.tileID.overscaledZ),a=r.tileID.overscaleFactor();return{u_matrix:t,u_camera_to_center_distance:e.cameraToCenterDistance,u_pixels_to_tile_units:n,u_extrude_scale:[e.pixelsToGLUnits[0]/(n*i),e.pixelsToGLUnits[1]/(n*i)],u_overscale_factor:a}},Pr=function(t,e,r){return{u_matrix:t,u_inv_matrix:e,u_camera_to_center_distance:r.cameraToCenterDistance,u_viewport_size:[r.width,r.height]}},Ir=function(t,e,r){return void 0===r&&(r=1),{u_matrix:t,u_color:e,u_overlay:0,u_overlay_scale:r}},Or=function(t){return{u_matrix:t}},zr=function(t,e,r,n){return{u_matrix:t,u_extrude_scale:pe(e,1,r),u_intensity:n}};function Dr(e,r){var n=Math.pow(2,r.canonical.z),i=r.canonical.y;return[new t.MercatorCoordinate(0,i/n).toLngLat().lat,new t.MercatorCoordinate(0,(i+1)/n).toLngLat().lat]}var Rr=function(e,r,n){var i=e.transform;return{u_matrix:Ur(e,r,n),u_ratio:1/pe(r,1,i.zoom),u_device_pixel_ratio:t.browser.devicePixelRatio,u_units_to_pixels:[1/i.pixelsToGLUnits[0],1/i.pixelsToGLUnits[1]]}},Fr=function(e,r,n){return t.extend(Rr(e,r,n),{u_image:0})},Br=function(e,r,n,i){var a=e.transform,o=jr(r,a);return{u_matrix:Ur(e,r,n),u_texsize:r.imageAtlasTexture.size,u_ratio:1/pe(r,1,a.zoom),u_device_pixel_ratio:t.browser.devicePixelRatio,u_image:0,u_scale:[o,i.fromScale,i.toScale],u_fade:i.t,u_units_to_pixels:[1/a.pixelsToGLUnits[0],1/a.pixelsToGLUnits[1]]}},Nr=function(e,r,n,i,a){var o=e.transform,s=e.lineAtlas,l=jr(r,o),c=\"round\"===n.layout.get(\"line-cap\"),u=s.getDash(i.from,c),f=s.getDash(i.to,c),h=u.width*a.fromScale,p=f.width*a.toScale;return t.extend(Rr(e,r,n),{u_patternscale_a:[l/h,-u.height/2],u_patternscale_b:[l/p,-f.height/2],u_sdfgamma:s.width/(256*Math.min(h,p)*t.browser.devicePixelRatio)/2,u_image:0,u_tex_y_a:u.y,u_tex_y_b:f.y,u_mix:a.t})};function jr(t,e){return 1/pe(t,1,e.tileZoom)}function Ur(t,e,r){return t.translatePosMatrix(e.tileID.posMatrix,e,r.paint.get(\"line-translate\"),r.paint.get(\"line-translate-anchor\"))}var Vr=function(t,e,r,n,i){return{u_matrix:t,u_tl_parent:e,u_scale_parent:r,u_buffer_scale:1,u_fade_t:n.mix,u_opacity:n.opacity*i.paint.get(\"raster-opacity\"),u_image0:0,u_image1:1,u_brightness_low:i.paint.get(\"raster-brightness-min\"),u_brightness_high:i.paint.get(\"raster-brightness-max\"),u_saturation_factor:(o=i.paint.get(\"raster-saturation\"),o>0?1-1/(1.001-o):-o),u_contrast_factor:(a=i.paint.get(\"raster-contrast\"),a>0?1/(1-a):1+a),u_spin_weights:Hr(i.paint.get(\"raster-hue-rotate\"))};var a,o};function Hr(t){t*=Math.PI/180;var e=Math.sin(t),r=Math.cos(t);return[(2*r+1)/3,(-Math.sqrt(3)*e-r+1)/3,(Math.sqrt(3)*e-r+1)/3]}var qr,Gr=function(t,e,r,n,i,a,o,s,l,c){var u=i.transform;return{u_is_size_zoom_constant:+(\"constant\"===t||\"source\"===t),u_is_size_feature_constant:+(\"constant\"===t||\"camera\"===t),u_size_t:e?e.uSizeT:0,u_size:e?e.uSize:0,u_camera_to_center_distance:u.cameraToCenterDistance,u_pitch:u.pitch/360*2*Math.PI,u_rotate_symbol:+r,u_aspect_ratio:u.width/u.height,u_fade_change:i.options.fadeDuration?i.symbolFadeChange:1,u_matrix:a,u_label_plane_matrix:o,u_coord_matrix:s,u_is_text:+l,u_pitch_with_map:+n,u_texsize:c,u_texture:0}},Yr=function(e,r,n,i,a,o,s,l,c,u,f){var h=a.transform;return t.extend(Gr(e,r,n,i,a,o,s,l,c,u),{u_gamma_scale:i?Math.cos(h._pitch)*h.cameraToCenterDistance:1,u_device_pixel_ratio:t.browser.devicePixelRatio,u_is_halo:+f})},Wr=function(e,r,n,i,a,o,s,l,c,u){return t.extend(Yr(e,r,n,i,a,o,s,l,!0,c,!0),{u_texsize_icon:u,u_texture_icon:1})},Xr=function(t,e,r){return{u_matrix:t,u_opacity:e,u_color:r}},Zr=function(e,r,n,i,a,o){return t.extend(function(t,e,r,n){var i=r.imageManager.getPattern(t.from.toString()),a=r.imageManager.getPattern(t.to.toString()),o=r.imageManager.getPixelSize(),s=o.width,l=o.height,c=Math.pow(2,n.tileID.overscaledZ),u=n.tileSize*Math.pow(2,r.transform.tileZoom)/c,f=u*(n.tileID.canonical.x+n.tileID.wrap*c),h=u*n.tileID.canonical.y;return{u_image:0,u_pattern_tl_a:i.tl,u_pattern_br_a:i.br,u_pattern_tl_b:a.tl,u_pattern_br_b:a.br,u_texsize:[s,l],u_mix:e.t,u_pattern_size_a:i.displaySize,u_pattern_size_b:a.displaySize,u_scale_a:e.fromScale,u_scale_b:e.toScale,u_tile_units_to_pixels:1/pe(n,1,r.transform.tileZoom),u_pixel_coord_upper:[f>>16,h>>16],u_pixel_coord_lower:[65535&f,65535&h]}}(i,o,n,a),{u_matrix:e,u_opacity:r})},Jr={fillExtrusion:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_lightpos:new t.Uniform3f(e,r.u_lightpos),u_lightintensity:new t.Uniform1f(e,r.u_lightintensity),u_lightcolor:new t.Uniform3f(e,r.u_lightcolor),u_vertical_gradient:new t.Uniform1f(e,r.u_vertical_gradient),u_opacity:new t.Uniform1f(e,r.u_opacity)}},fillExtrusionPattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_lightpos:new t.Uniform3f(e,r.u_lightpos),u_lightintensity:new t.Uniform1f(e,r.u_lightintensity),u_lightcolor:new t.Uniform3f(e,r.u_lightcolor),u_vertical_gradient:new t.Uniform1f(e,r.u_vertical_gradient),u_height_factor:new t.Uniform1f(e,r.u_height_factor),u_image:new t.Uniform1i(e,r.u_image),u_texsize:new t.Uniform2f(e,r.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade),u_opacity:new t.Uniform1f(e,r.u_opacity)}},fill:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},fillPattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_image:new t.Uniform1i(e,r.u_image),u_texsize:new t.Uniform2f(e,r.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade)}},fillOutline:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_world:new t.Uniform2f(e,r.u_world)}},fillOutlinePattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_world:new t.Uniform2f(e,r.u_world),u_image:new t.Uniform1i(e,r.u_image),u_texsize:new t.Uniform2f(e,r.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade)}},circle:function(e,r){return{u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_scale_with_map:new t.Uniform1i(e,r.u_scale_with_map),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_extrude_scale:new t.Uniform2f(e,r.u_extrude_scale),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},collisionBox:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pixels_to_tile_units:new t.Uniform1f(e,r.u_pixels_to_tile_units),u_extrude_scale:new t.Uniform2f(e,r.u_extrude_scale),u_overscale_factor:new t.Uniform1f(e,r.u_overscale_factor)}},collisionCircle:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_inv_matrix:new t.UniformMatrix4f(e,r.u_inv_matrix),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_viewport_size:new t.Uniform2f(e,r.u_viewport_size)}},debug:function(e,r){return{u_color:new t.UniformColor(e,r.u_color),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_overlay:new t.Uniform1i(e,r.u_overlay),u_overlay_scale:new t.Uniform1f(e,r.u_overlay_scale)}},clippingMask:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},heatmap:function(e,r){return{u_extrude_scale:new t.Uniform1f(e,r.u_extrude_scale),u_intensity:new t.Uniform1f(e,r.u_intensity),u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},heatmapTexture:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_world:new t.Uniform2f(e,r.u_world),u_image:new t.Uniform1i(e,r.u_image),u_color_ramp:new t.Uniform1i(e,r.u_color_ramp),u_opacity:new t.Uniform1f(e,r.u_opacity)}},hillshade:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_image:new t.Uniform1i(e,r.u_image),u_latrange:new t.Uniform2f(e,r.u_latrange),u_light:new t.Uniform2f(e,r.u_light),u_shadow:new t.UniformColor(e,r.u_shadow),u_highlight:new t.UniformColor(e,r.u_highlight),u_accent:new t.UniformColor(e,r.u_accent)}},hillshadePrepare:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_image:new t.Uniform1i(e,r.u_image),u_dimension:new t.Uniform2f(e,r.u_dimension),u_zoom:new t.Uniform1f(e,r.u_zoom),u_maxzoom:new t.Uniform1f(e,r.u_maxzoom),u_unpack:new t.Uniform4f(e,r.u_unpack)}},line:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels)}},lineGradient:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels),u_image:new t.Uniform1i(e,r.u_image)}},linePattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_texsize:new t.Uniform2f(e,r.u_texsize),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_image:new t.Uniform1i(e,r.u_image),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade)}},lineSDF:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels),u_patternscale_a:new t.Uniform2f(e,r.u_patternscale_a),u_patternscale_b:new t.Uniform2f(e,r.u_patternscale_b),u_sdfgamma:new t.Uniform1f(e,r.u_sdfgamma),u_image:new t.Uniform1i(e,r.u_image),u_tex_y_a:new t.Uniform1f(e,r.u_tex_y_a),u_tex_y_b:new t.Uniform1f(e,r.u_tex_y_b),u_mix:new t.Uniform1f(e,r.u_mix)}},raster:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_tl_parent:new t.Uniform2f(e,r.u_tl_parent),u_scale_parent:new t.Uniform1f(e,r.u_scale_parent),u_buffer_scale:new t.Uniform1f(e,r.u_buffer_scale),u_fade_t:new t.Uniform1f(e,r.u_fade_t),u_opacity:new t.Uniform1f(e,r.u_opacity),u_image0:new t.Uniform1i(e,r.u_image0),u_image1:new t.Uniform1i(e,r.u_image1),u_brightness_low:new t.Uniform1f(e,r.u_brightness_low),u_brightness_high:new t.Uniform1f(e,r.u_brightness_high),u_saturation_factor:new t.Uniform1f(e,r.u_saturation_factor),u_contrast_factor:new t.Uniform1f(e,r.u_contrast_factor),u_spin_weights:new t.Uniform3f(e,r.u_spin_weights)}},symbolIcon:function(e,r){return{u_is_size_zoom_constant:new t.Uniform1i(e,r.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,r.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,r.u_size_t),u_size:new t.Uniform1f(e,r.u_size),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,r.u_pitch),u_rotate_symbol:new t.Uniform1i(e,r.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,r.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,r.u_fade_change),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,r.u_label_plane_matrix),u_coord_matrix:new t.UniformMatrix4f(e,r.u_coord_matrix),u_is_text:new t.Uniform1i(e,r.u_is_text),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_texsize:new t.Uniform2f(e,r.u_texsize),u_texture:new t.Uniform1i(e,r.u_texture)}},symbolSDF:function(e,r){return{u_is_size_zoom_constant:new t.Uniform1i(e,r.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,r.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,r.u_size_t),u_size:new t.Uniform1f(e,r.u_size),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,r.u_pitch),u_rotate_symbol:new t.Uniform1i(e,r.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,r.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,r.u_fade_change),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,r.u_label_plane_matrix),u_coord_matrix:new t.UniformMatrix4f(e,r.u_coord_matrix),u_is_text:new t.Uniform1i(e,r.u_is_text),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_texsize:new t.Uniform2f(e,r.u_texsize),u_texture:new t.Uniform1i(e,r.u_texture),u_gamma_scale:new t.Uniform1f(e,r.u_gamma_scale),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_is_halo:new t.Uniform1i(e,r.u_is_halo)}},symbolTextAndIcon:function(e,r){return{u_is_size_zoom_constant:new t.Uniform1i(e,r.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,r.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,r.u_size_t),u_size:new t.Uniform1f(e,r.u_size),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,r.u_pitch),u_rotate_symbol:new t.Uniform1i(e,r.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,r.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,r.u_fade_change),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,r.u_label_plane_matrix),u_coord_matrix:new t.UniformMatrix4f(e,r.u_coord_matrix),u_is_text:new t.Uniform1i(e,r.u_is_text),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_texsize:new t.Uniform2f(e,r.u_texsize),u_texsize_icon:new t.Uniform2f(e,r.u_texsize_icon),u_texture:new t.Uniform1i(e,r.u_texture),u_texture_icon:new t.Uniform1i(e,r.u_texture_icon),u_gamma_scale:new t.Uniform1f(e,r.u_gamma_scale),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_is_halo:new t.Uniform1i(e,r.u_is_halo)}},background:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_opacity:new t.Uniform1f(e,r.u_opacity),u_color:new t.UniformColor(e,r.u_color)}},backgroundPattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_opacity:new t.Uniform1f(e,r.u_opacity),u_image:new t.Uniform1i(e,r.u_image),u_pattern_tl_a:new t.Uniform2f(e,r.u_pattern_tl_a),u_pattern_br_a:new t.Uniform2f(e,r.u_pattern_br_a),u_pattern_tl_b:new t.Uniform2f(e,r.u_pattern_tl_b),u_pattern_br_b:new t.Uniform2f(e,r.u_pattern_br_b),u_texsize:new t.Uniform2f(e,r.u_texsize),u_mix:new t.Uniform1f(e,r.u_mix),u_pattern_size_a:new t.Uniform2f(e,r.u_pattern_size_a),u_pattern_size_b:new t.Uniform2f(e,r.u_pattern_size_b),u_scale_a:new t.Uniform1f(e,r.u_scale_a),u_scale_b:new t.Uniform1f(e,r.u_scale_b),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_tile_units_to_pixels:new t.Uniform1f(e,r.u_tile_units_to_pixels)}}};function Kr(e,r,n,i,a,o,s){for(var l=e.context,c=l.gl,u=e.useProgram(\"collisionBox\"),f=[],h=0,p=0,d=0;d0){var _=t.create(),w=y;t.mul(_,v.placementInvProjMatrix,e.transform.glCoordMatrix),t.mul(_,_,v.placementViewportMatrix),f.push({circleArray:b,circleOffset:p,transform:w,invTransform:_}),p=h+=b.length/4}x&&u.draw(l,c.LINES,At.disabled,Mt.disabled,e.colorModeForRenderPass(),Et.disabled,Cr(y,e.transform,m),n.id,x.layoutVertexBuffer,x.indexBuffer,x.segments,null,e.transform.zoom,null,null,x.collisionVertexBuffer)}}if(s&&f.length){var T=e.useProgram(\"collisionCircle\"),k=new t.StructArrayLayout2f1f2i16;k.resize(4*h),k._trim();for(var A=0,M=0,S=f;M=0&&(g[v.associatedIconIndex]={shiftedAnchor:S,angle:E})}else ue(v.numGlyphs,p)}if(f){d.clear();for(var C=e.icon.placedSymbolArray,P=0;P0){var s=t.browser.now(),l=(s-e.timeAdded)/o,c=r?(s-r.timeAdded)/o:-1,u=n.getSource(),f=a.coveringZoomLevel({tileSize:u.tileSize,roundZoom:u.roundZoom}),h=!r||Math.abs(r.tileID.overscaledZ-f)>Math.abs(e.tileID.overscaledZ-f),p=h&&e.refreshedUponExpiration?1:t.clamp(h?l:1-c,0,1);return e.refreshedUponExpiration&&l>=1&&(e.refreshedUponExpiration=!1),r?{opacity:1,mix:1-p}:{opacity:p,mix:0}}return{opacity:1,mix:0}}var un=new t.Color(1,0,0,1),fn=new t.Color(0,1,0,1),hn=new t.Color(0,0,1,1),pn=new t.Color(1,0,1,1),dn=new t.Color(0,1,1,1);function gn(t){var e=t.transform.padding;mn(t,t.transform.height-(e.top||0),3,un),mn(t,e.bottom||0,3,fn),vn(t,e.left||0,3,hn),vn(t,t.transform.width-(e.right||0),3,pn);var r=t.transform.centerPoint;!function(t,e,r,n){yn(t,e-1,r-10,2,20,n),yn(t,e-10,r-1,20,2,n)}(t,r.x,t.transform.height-r.y,dn)}function mn(t,e,r,n){yn(t,0,e+r/2,t.transform.width,r,n)}function vn(t,e,r,n){yn(t,e-r/2,0,r,t.transform.height,n)}function yn(e,r,n,i,a,o){var s=e.context,l=s.gl;l.enable(l.SCISSOR_TEST),l.scissor(r*t.browser.devicePixelRatio,n*t.browser.devicePixelRatio,i*t.browser.devicePixelRatio,a*t.browser.devicePixelRatio),s.clear({color:o}),l.disable(l.SCISSOR_TEST)}function xn(e,r,n){var i=e.context,a=i.gl,o=n.posMatrix,s=e.useProgram(\"debug\"),l=At.disabled,c=Mt.disabled,u=e.colorModeForRenderPass();i.activeTexture.set(a.TEXTURE0),e.emptyTexture.bind(a.LINEAR,a.CLAMP_TO_EDGE),s.draw(i,a.LINE_STRIP,l,c,u,Et.disabled,Ir(o,t.Color.red),\"$debug\",e.debugBuffer,e.tileBorderIndexBuffer,e.debugSegments);var f=r.getTileByID(n.key).latestRawTileData,h=f&&f.byteLength||0,p=Math.floor(h/1024),d=r.getTile(n).tileSize,g=512/Math.min(d,512)*(n.overscaledZ/e.transform.zoom)*.5,m=n.canonical.toString();n.overscaledZ!==n.canonical.z&&(m+=\" => \"+n.overscaledZ),function(t,e){t.initDebugOverlayCanvas();var r=t.debugOverlayCanvas,n=t.context.gl,i=t.debugOverlayCanvas.getContext(\"2d\");i.clearRect(0,0,r.width,r.height),i.shadowColor=\"white\",i.shadowBlur=2,i.lineWidth=1.5,i.strokeStyle=\"white\",i.textBaseline=\"top\",i.font=\"bold 36px Open Sans, sans-serif\",i.fillText(e,5,5),i.strokeText(e,5,5),t.debugOverlayTexture.update(r),t.debugOverlayTexture.bind(n.LINEAR,n.CLAMP_TO_EDGE)}(e,m+\" \"+p+\"kb\"),s.draw(i,a.TRIANGLES,l,c,St.alphaBlended,Et.disabled,Ir(o,t.Color.transparent,g),\"$debug\",e.debugBuffer,e.quadTriangleIndexBuffer,e.debugSegments)}var bn={symbol:function(e,r,n,i,a){if(\"translucent\"===e.renderPass){var o=Mt.disabled,s=e.colorModeForRenderPass();n.layout.get(\"text-variable-anchor\")&&function(e,r,n,i,a,o,s){for(var l=r.transform,c=\"map\"===a,u=\"map\"===o,f=0,h=e;f256&&this.clearStencil(),r.setColorMode(St.disabled),r.setDepthMode(At.disabled);var i=this.useProgram(\"clippingMask\");this._tileClippingMaskIDs={};for(var a=0,o=e;a256&&this.clearStencil();var t=this.nextStencilID++,e=this.context.gl;return new Mt({func:e.NOTEQUAL,mask:255},t,255,e.KEEP,e.KEEP,e.REPLACE)},_n.prototype.stencilModeForClipping=function(t){var e=this.context.gl;return new Mt({func:e.EQUAL,mask:255},this._tileClippingMaskIDs[t.key],0,e.KEEP,e.KEEP,e.REPLACE)},_n.prototype.stencilConfigForOverlap=function(t){var e,r=this.context.gl,n=t.sort((function(t,e){return e.overscaledZ-t.overscaledZ})),i=n[n.length-1].overscaledZ,a=n[0].overscaledZ-i+1;if(a>1){this.currentStencilSource=void 0,this.nextStencilID+a>256&&this.clearStencil();for(var o={},s=0;s=0;this.currentLayer--){var w=this.style._layers[i[this.currentLayer]],T=a[w.source],k=u[w.source];this._renderTileClippingMasks(w,k),this.renderLayer(this,T,w,k)}for(this.renderPass=\"translucent\",this.currentLayer=0;this.currentLayer0?e.pop():null},_n.prototype.isPatternMissing=function(t){if(!t)return!1;if(!t.from||!t.to)return!0;var e=this.imageManager.getPattern(t.from.toString()),r=this.imageManager.getPattern(t.to.toString());return!e||!r},_n.prototype.useProgram=function(t,e){this.cache=this.cache||{};var r=\"\"+t+(e?e.cacheKey:\"\")+(this._showOverdrawInspector?\"/overdraw\":\"\");return this.cache[r]||(this.cache[r]=new _r(this.context,xr[t],e,Jr[t],this._showOverdrawInspector)),this.cache[r]},_n.prototype.setCustomLayerDefaults=function(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault()},_n.prototype.setBaseState=function(){var t=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(t.FUNC_ADD)},_n.prototype.initDebugOverlayCanvas=function(){if(null==this.debugOverlayCanvas){this.debugOverlayCanvas=t.window.document.createElement(\"canvas\"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512;var e=this.context.gl;this.debugOverlayTexture=new t.Texture(this.context,this.debugOverlayCanvas,e.RGBA)}},_n.prototype.destroy=function(){this.emptyTexture.destroy(),this.debugOverlayTexture&&this.debugOverlayTexture.destroy()};var wn=function(t,e){this.points=t,this.planes=e};wn.fromInvProjectionMatrix=function(e,r,n){var i=Math.pow(2,n),a=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]].map((function(r){return t.transformMat4([],r,e)})).map((function(e){return t.scale$1([],e,1/e[3]/r*i)})),o=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]].map((function(e){var r=t.sub([],a[e[0]],a[e[1]]),n=t.sub([],a[e[2]],a[e[1]]),i=t.normalize([],t.cross([],r,n)),o=-t.dot(i,a[e[1]]);return i.concat(o)}));return new wn(a,o)};var Tn=function(e,r){this.min=e,this.max=r,this.center=t.scale$2([],t.add([],this.min,this.max),.5)};Tn.prototype.quadrant=function(e){for(var r=[e%2==0,e<2],n=t.clone$2(this.min),i=t.clone$2(this.max),a=0;a=0;if(0===o)return 0;o!==r.length&&(n=!1)}if(n)return 2;for(var l=0;l<3;l++){for(var c=Number.MAX_VALUE,u=-Number.MAX_VALUE,f=0;fthis.max[l]-this.min[l])return 0}return 1};var kn=function(t,e,r,n){if(void 0===t&&(t=0),void 0===e&&(e=0),void 0===r&&(r=0),void 0===n&&(n=0),isNaN(t)||t<0||isNaN(e)||e<0||isNaN(r)||r<0||isNaN(n)||n<0)throw new Error(\"Invalid value for edge-insets, top, bottom, left and right must all be numbers\");this.top=t,this.bottom=e,this.left=r,this.right=n};kn.prototype.interpolate=function(e,r,n){return null!=r.top&&null!=e.top&&(this.top=t.number(e.top,r.top,n)),null!=r.bottom&&null!=e.bottom&&(this.bottom=t.number(e.bottom,r.bottom,n)),null!=r.left&&null!=e.left&&(this.left=t.number(e.left,r.left,n)),null!=r.right&&null!=e.right&&(this.right=t.number(e.right,r.right,n)),this},kn.prototype.getCenter=function(e,r){var n=t.clamp((this.left+e-this.right)/2,0,e),i=t.clamp((this.top+r-this.bottom)/2,0,r);return new t.Point(n,i)},kn.prototype.equals=function(t){return this.top===t.top&&this.bottom===t.bottom&&this.left===t.left&&this.right===t.right},kn.prototype.clone=function(){return new kn(this.top,this.bottom,this.left,this.right)},kn.prototype.toJSON=function(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}};var An=function(e,r,n,i,a){this.tileSize=512,this.maxValidLatitude=85.051129,this._renderWorldCopies=void 0===a||a,this._minZoom=e||0,this._maxZoom=r||22,this._minPitch=null==n?0:n,this._maxPitch=null==i?60:i,this.setMaxBounds(),this.width=0,this.height=0,this._center=new t.LngLat(0,0),this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._edgeInsets=new kn,this._posMatrixCache={},this._alignedPosMatrixCache={}},Mn={minZoom:{configurable:!0},maxZoom:{configurable:!0},minPitch:{configurable:!0},maxPitch:{configurable:!0},renderWorldCopies:{configurable:!0},worldSize:{configurable:!0},centerOffset:{configurable:!0},size:{configurable:!0},bearing:{configurable:!0},pitch:{configurable:!0},fov:{configurable:!0},zoom:{configurable:!0},center:{configurable:!0},padding:{configurable:!0},centerPoint:{configurable:!0},unmodified:{configurable:!0},point:{configurable:!0}};An.prototype.clone=function(){var t=new An(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return t.tileSize=this.tileSize,t.latRange=this.latRange,t.width=this.width,t.height=this.height,t._center=this._center,t.zoom=this.zoom,t.angle=this.angle,t._fov=this._fov,t._pitch=this._pitch,t._unmodified=this._unmodified,t._edgeInsets=this._edgeInsets.clone(),t._calcMatrices(),t},Mn.minZoom.get=function(){return this._minZoom},Mn.minZoom.set=function(t){this._minZoom!==t&&(this._minZoom=t,this.zoom=Math.max(this.zoom,t))},Mn.maxZoom.get=function(){return this._maxZoom},Mn.maxZoom.set=function(t){this._maxZoom!==t&&(this._maxZoom=t,this.zoom=Math.min(this.zoom,t))},Mn.minPitch.get=function(){return this._minPitch},Mn.minPitch.set=function(t){this._minPitch!==t&&(this._minPitch=t,this.pitch=Math.max(this.pitch,t))},Mn.maxPitch.get=function(){return this._maxPitch},Mn.maxPitch.set=function(t){this._maxPitch!==t&&(this._maxPitch=t,this.pitch=Math.min(this.pitch,t))},Mn.renderWorldCopies.get=function(){return this._renderWorldCopies},Mn.renderWorldCopies.set=function(t){void 0===t?t=!0:null===t&&(t=!1),this._renderWorldCopies=t},Mn.worldSize.get=function(){return this.tileSize*this.scale},Mn.centerOffset.get=function(){return this.centerPoint._sub(this.size._div(2))},Mn.size.get=function(){return new t.Point(this.width,this.height)},Mn.bearing.get=function(){return-this.angle/Math.PI*180},Mn.bearing.set=function(e){var r=-t.wrap(e,-180,180)*Math.PI/180;this.angle!==r&&(this._unmodified=!1,this.angle=r,this._calcMatrices(),this.rotationMatrix=t.create$2(),t.rotate(this.rotationMatrix,this.rotationMatrix,this.angle))},Mn.pitch.get=function(){return this._pitch/Math.PI*180},Mn.pitch.set=function(e){var r=t.clamp(e,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==r&&(this._unmodified=!1,this._pitch=r,this._calcMatrices())},Mn.fov.get=function(){return this._fov/Math.PI*180},Mn.fov.set=function(t){t=Math.max(.01,Math.min(60,t)),this._fov!==t&&(this._unmodified=!1,this._fov=t/180*Math.PI,this._calcMatrices())},Mn.zoom.get=function(){return this._zoom},Mn.zoom.set=function(t){var e=Math.min(Math.max(t,this.minZoom),this.maxZoom);this._zoom!==e&&(this._unmodified=!1,this._zoom=e,this.scale=this.zoomScale(e),this.tileZoom=Math.floor(e),this.zoomFraction=e-this.tileZoom,this._constrain(),this._calcMatrices())},Mn.center.get=function(){return this._center},Mn.center.set=function(t){t.lat===this._center.lat&&t.lng===this._center.lng||(this._unmodified=!1,this._center=t,this._constrain(),this._calcMatrices())},Mn.padding.get=function(){return this._edgeInsets.toJSON()},Mn.padding.set=function(t){this._edgeInsets.equals(t)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,t,1),this._calcMatrices())},Mn.centerPoint.get=function(){return this._edgeInsets.getCenter(this.width,this.height)},An.prototype.isPaddingEqual=function(t){return this._edgeInsets.equals(t)},An.prototype.interpolatePadding=function(t,e,r){this._unmodified=!1,this._edgeInsets.interpolate(t,e,r),this._constrain(),this._calcMatrices()},An.prototype.coveringZoomLevel=function(t){var e=(t.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/t.tileSize));return Math.max(0,e)},An.prototype.getVisibleUnwrappedCoordinates=function(e){var r=[new t.UnwrappedTileID(0,e)];if(this._renderWorldCopies)for(var n=this.pointCoordinate(new t.Point(0,0)),i=this.pointCoordinate(new t.Point(this.width,0)),a=this.pointCoordinate(new t.Point(this.width,this.height)),o=this.pointCoordinate(new t.Point(0,this.height)),s=Math.floor(Math.min(n.x,i.x,a.x,o.x)),l=Math.floor(Math.max(n.x,i.x,a.x,o.x)),c=s-1;c<=l+1;c++)0!==c&&r.push(new t.UnwrappedTileID(c,e));return r},An.prototype.coveringTiles=function(e){var r=this.coveringZoomLevel(e),n=r;if(void 0!==e.minzoom&&re.maxzoom&&(r=e.maxzoom);var i=t.MercatorCoordinate.fromLngLat(this.center),a=Math.pow(2,r),o=[a*i.x,a*i.y,0],s=wn.fromInvProjectionMatrix(this.invProjMatrix,this.worldSize,r),l=e.minzoom||0;this.pitch<=60&&this._edgeInsets.top<.1&&(l=r);var c=function(t){return{aabb:new Tn([t*a,0,0],[(t+1)*a,a,0]),zoom:0,x:0,y:0,wrap:t,fullyVisible:!1}},u=[],f=[],h=r,p=e.reparseOverscaled?n:r;if(this._renderWorldCopies)for(var d=1;d<=3;d++)u.push(c(-d)),u.push(c(d));for(u.push(c(0));u.length>0;){var g=u.pop(),m=g.x,v=g.y,y=g.fullyVisible;if(!y){var x=g.aabb.intersects(s);if(0===x)continue;y=2===x}var b=g.aabb.distanceX(o),_=g.aabb.distanceY(o),w=Math.max(Math.abs(b),Math.abs(_)),T=3+(1<T&&g.zoom>=l)f.push({tileID:new t.OverscaledTileID(g.zoom===h?p:g.zoom,g.wrap,g.zoom,m,v),distanceSq:t.sqrLen([o[0]-.5-m,o[1]-.5-v])});else for(var k=0;k<4;k++){var A=(m<<1)+k%2,M=(v<<1)+(k>>1);u.push({aabb:g.aabb.quadrant(k),zoom:g.zoom+1,x:A,y:M,wrap:g.wrap,fullyVisible:y})}}return f.sort((function(t,e){return t.distanceSq-e.distanceSq})).map((function(t){return t.tileID}))},An.prototype.resize=function(t,e){this.width=t,this.height=e,this.pixelsToGLUnits=[2/t,-2/e],this._constrain(),this._calcMatrices()},Mn.unmodified.get=function(){return this._unmodified},An.prototype.zoomScale=function(t){return Math.pow(2,t)},An.prototype.scaleZoom=function(t){return Math.log(t)/Math.LN2},An.prototype.project=function(e){var r=t.clamp(e.lat,-this.maxValidLatitude,this.maxValidLatitude);return new t.Point(t.mercatorXfromLng(e.lng)*this.worldSize,t.mercatorYfromLat(r)*this.worldSize)},An.prototype.unproject=function(e){return new t.MercatorCoordinate(e.x/this.worldSize,e.y/this.worldSize).toLngLat()},Mn.point.get=function(){return this.project(this.center)},An.prototype.setLocationAtPoint=function(e,r){var n=this.pointCoordinate(r),i=this.pointCoordinate(this.centerPoint),a=this.locationCoordinate(e),o=new t.MercatorCoordinate(a.x-(n.x-i.x),a.y-(n.y-i.y));this.center=this.coordinateLocation(o),this._renderWorldCopies&&(this.center=this.center.wrap())},An.prototype.locationPoint=function(t){return this.coordinatePoint(this.locationCoordinate(t))},An.prototype.pointLocation=function(t){return this.coordinateLocation(this.pointCoordinate(t))},An.prototype.locationCoordinate=function(e){return t.MercatorCoordinate.fromLngLat(e)},An.prototype.coordinateLocation=function(t){return t.toLngLat()},An.prototype.pointCoordinate=function(e){var r=[e.x,e.y,0,1],n=[e.x,e.y,1,1];t.transformMat4(r,r,this.pixelMatrixInverse),t.transformMat4(n,n,this.pixelMatrixInverse);var i=r[3],a=n[3],o=r[0]/i,s=n[0]/a,l=r[1]/i,c=n[1]/a,u=r[2]/i,f=n[2]/a,h=u===f?0:(0-u)/(f-u);return new t.MercatorCoordinate(t.number(o,s,h)/this.worldSize,t.number(l,c,h)/this.worldSize)},An.prototype.coordinatePoint=function(e){var r=[e.x*this.worldSize,e.y*this.worldSize,0,1];return t.transformMat4(r,r,this.pixelMatrix),new t.Point(r[0]/r[3],r[1]/r[3])},An.prototype.getBounds=function(){return(new t.LngLatBounds).extend(this.pointLocation(new t.Point(0,0))).extend(this.pointLocation(new t.Point(this.width,0))).extend(this.pointLocation(new t.Point(this.width,this.height))).extend(this.pointLocation(new t.Point(0,this.height)))},An.prototype.getMaxBounds=function(){return this.latRange&&2===this.latRange.length&&this.lngRange&&2===this.lngRange.length?new t.LngLatBounds([this.lngRange[0],this.latRange[0]],[this.lngRange[1],this.latRange[1]]):null},An.prototype.setMaxBounds=function(t){t?(this.lngRange=[t.getWest(),t.getEast()],this.latRange=[t.getSouth(),t.getNorth()],this._constrain()):(this.lngRange=null,this.latRange=[-this.maxValidLatitude,this.maxValidLatitude])},An.prototype.calculatePosMatrix=function(e,r){void 0===r&&(r=!1);var n=e.key,i=r?this._alignedPosMatrixCache:this._posMatrixCache;if(i[n])return i[n];var a=e.canonical,o=this.worldSize/this.zoomScale(a.z),s=a.x+Math.pow(2,a.z)*e.wrap,l=t.identity(new Float64Array(16));return t.translate(l,l,[s*o,a.y*o,0]),t.scale(l,l,[o/t.EXTENT,o/t.EXTENT,1]),t.multiply(l,r?this.alignedProjMatrix:this.projMatrix,l),i[n]=new Float32Array(l),i[n]},An.prototype.customLayerMatrix=function(){return this.mercatorMatrix.slice()},An.prototype._constrain=function(){if(this.center&&this.width&&this.height&&!this._constraining){this._constraining=!0;var e,r,n,i,a=-90,o=90,s=-180,l=180,c=this.size,u=this._unmodified;if(this.latRange){var f=this.latRange;a=t.mercatorYfromLat(f[1])*this.worldSize,e=(o=t.mercatorYfromLat(f[0])*this.worldSize)-ao&&(i=o-m)}if(this.lngRange){var v=p.x,y=c.x/2;v-yl&&(n=l-y)}void 0===n&&void 0===i||(this.center=this.unproject(new t.Point(void 0!==n?n:p.x,void 0!==i?i:p.y))),this._unmodified=u,this._constraining=!1}},An.prototype._calcMatrices=function(){if(this.height){var e=this._fov/2,r=this.centerOffset;this.cameraToCenterDistance=.5/Math.tan(e)*this.height;var n=Math.PI/2+this._pitch,i=this._fov*(.5+r.y/this.height),a=Math.sin(i)*this.cameraToCenterDistance/Math.sin(t.clamp(Math.PI-n-i,.01,Math.PI-.01)),o=this.point,s=o.x,l=o.y,c=1.01*(Math.cos(Math.PI/2-this._pitch)*a+this.cameraToCenterDistance),u=this.height/50,f=new Float64Array(16);t.perspective(f,this._fov,this.width/this.height,u,c),f[8]=2*-r.x/this.width,f[9]=2*r.y/this.height,t.scale(f,f,[1,-1,1]),t.translate(f,f,[0,0,-this.cameraToCenterDistance]),t.rotateX(f,f,this._pitch),t.rotateZ(f,f,this.angle),t.translate(f,f,[-s,-l,0]),this.mercatorMatrix=t.scale([],f,[this.worldSize,this.worldSize,this.worldSize]),t.scale(f,f,[1,1,t.mercatorZfromAltitude(1,this.center.lat)*this.worldSize,1]),this.projMatrix=f,this.invProjMatrix=t.invert([],this.projMatrix);var h=this.width%2/2,p=this.height%2/2,d=Math.cos(this.angle),g=Math.sin(this.angle),m=s-Math.round(s)+d*h+g*p,v=l-Math.round(l)+d*p+g*h,y=new Float64Array(f);if(t.translate(y,y,[m>.5?m-1:m,v>.5?v-1:v,0]),this.alignedProjMatrix=y,f=t.create(),t.scale(f,f,[this.width/2,-this.height/2,1]),t.translate(f,f,[1,-1,0]),this.labelPlaneMatrix=f,f=t.create(),t.scale(f,f,[1,-1,1]),t.translate(f,f,[-1,-1,0]),t.scale(f,f,[2/this.width,2/this.height,1]),this.glCoordMatrix=f,this.pixelMatrix=t.multiply(new Float64Array(16),this.labelPlaneMatrix,this.projMatrix),!(f=t.invert(new Float64Array(16),this.pixelMatrix)))throw new Error(\"failed to invert matrix\");this.pixelMatrixInverse=f,this._posMatrixCache={},this._alignedPosMatrixCache={}}},An.prototype.maxPitchScaleFactor=function(){if(!this.pixelMatrixInverse)return 1;var e=this.pointCoordinate(new t.Point(0,0)),r=[e.x*this.worldSize,e.y*this.worldSize,0,1];return t.transformMat4(r,r,this.pixelMatrix)[3]/this.cameraToCenterDistance},An.prototype.getCameraPoint=function(){var e=this._pitch,r=Math.tan(e)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new t.Point(0,r))},An.prototype.getCameraQueryGeometry=function(e){var r=this.getCameraPoint();if(1===e.length)return[e[0],r];for(var n=r.x,i=r.y,a=r.x,o=r.y,s=0,l=e;s=3&&!t.some((function(t){return isNaN(t)}))){var e=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(t[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+t[2],+t[1]],zoom:+t[0],bearing:e,pitch:+(t[4]||0)}),!0}return!1},Sn.prototype._updateHashUnthrottled=function(){var e=this.getHashString();try{t.window.history.replaceState(t.window.history.state,\"\",e)}catch(t){}};var En={linearity:.3,easing:t.bezier(0,0,.3,1)},Ln=t.extend({deceleration:2500,maxSpeed:1400},En),Cn=t.extend({deceleration:20,maxSpeed:1400},En),Pn=t.extend({deceleration:1e3,maxSpeed:360},En),In=t.extend({deceleration:1e3,maxSpeed:90},En),On=function(t){this._map=t,this.clear()};function zn(t,e){(!t.duration||t.duration0&&r-e[0].time>160;)e.shift()},On.prototype._onMoveEnd=function(e){if(this._drainInertiaBuffer(),!(this._inertiaBuffer.length<2)){for(var r={zoom:0,bearing:0,pitch:0,pan:new t.Point(0,0),pinchAround:void 0,around:void 0},n=0,i=this._inertiaBuffer;n=this._clickTolerance||this._map.fire(new Rn(t.type,this._map,t))},Nn.prototype.dblclick=function(t){return this._firePreventable(new Rn(t.type,this._map,t))},Nn.prototype.mouseover=function(t){this._map.fire(new Rn(t.type,this._map,t))},Nn.prototype.mouseout=function(t){this._map.fire(new Rn(t.type,this._map,t))},Nn.prototype.touchstart=function(t){return this._firePreventable(new Fn(t.type,this._map,t))},Nn.prototype.touchmove=function(t){this._map.fire(new Fn(t.type,this._map,t))},Nn.prototype.touchend=function(t){this._map.fire(new Fn(t.type,this._map,t))},Nn.prototype.touchcancel=function(t){this._map.fire(new Fn(t.type,this._map,t))},Nn.prototype._firePreventable=function(t){if(this._map.fire(t),t.defaultPrevented)return{}},Nn.prototype.isEnabled=function(){return!0},Nn.prototype.isActive=function(){return!1},Nn.prototype.enable=function(){},Nn.prototype.disable=function(){};var jn=function(t){this._map=t};jn.prototype.reset=function(){this._delayContextMenu=!1,delete this._contextMenuEvent},jn.prototype.mousemove=function(t){this._map.fire(new Rn(t.type,this._map,t))},jn.prototype.mousedown=function(){this._delayContextMenu=!0},jn.prototype.mouseup=function(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new Rn(\"contextmenu\",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)},jn.prototype.contextmenu=function(t){this._delayContextMenu?this._contextMenuEvent=t:this._map.fire(new Rn(t.type,this._map,t)),this._map.listens(\"contextmenu\")&&t.preventDefault()},jn.prototype.isEnabled=function(){return!0},jn.prototype.isActive=function(){return!1},jn.prototype.enable=function(){},jn.prototype.disable=function(){};var Un=function(t,e){this._map=t,this._el=t.getCanvasContainer(),this._container=t.getContainer(),this._clickTolerance=e.clickTolerance||1};function Vn(t,e){for(var r={},n=0;nthis.numTouches)&&(this.aborted=!0),this.aborted||(void 0===this.startTime&&(this.startTime=e.timeStamp),n.length===this.numTouches&&(this.centroid=function(e){for(var r=new t.Point(0,0),n=0,i=e;n30)&&(this.aborted=!0)}}},Hn.prototype.touchend=function(t,e,r){if((!this.centroid||t.timeStamp-this.startTime>500)&&(this.aborted=!0),0===r.length){var n=!this.aborted&&this.centroid;if(this.reset(),n)return n}};var qn=function(t){this.singleTap=new Hn(t),this.numTaps=t.numTaps,this.reset()};qn.prototype.reset=function(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset()},qn.prototype.touchstart=function(t,e,r){this.singleTap.touchstart(t,e,r)},qn.prototype.touchmove=function(t,e,r){this.singleTap.touchmove(t,e,r)},qn.prototype.touchend=function(t,e,r){var n=this.singleTap.touchend(t,e,r);if(n){var i=t.timeStamp-this.lastTime<500,a=!this.lastTap||this.lastTap.dist(n)<30;if(i&&a||this.reset(),this.count++,this.lastTime=t.timeStamp,this.lastTap=n,this.count===this.numTaps)return this.reset(),n}};var Gn=function(){this._zoomIn=new qn({numTouches:1,numTaps:2}),this._zoomOut=new qn({numTouches:2,numTaps:1}),this.reset()};Gn.prototype.reset=function(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset()},Gn.prototype.touchstart=function(t,e,r){this._zoomIn.touchstart(t,e,r),this._zoomOut.touchstart(t,e,r)},Gn.prototype.touchmove=function(t,e,r){this._zoomIn.touchmove(t,e,r),this._zoomOut.touchmove(t,e,r)},Gn.prototype.touchend=function(t,e,r){var n=this,i=this._zoomIn.touchend(t,e,r),a=this._zoomOut.touchend(t,e,r);return i?(this._active=!0,t.preventDefault(),setTimeout((function(){return n.reset()}),0),{cameraAnimation:function(e){return e.easeTo({duration:300,zoom:e.getZoom()+1,around:e.unproject(i)},{originalEvent:t})}}):a?(this._active=!0,t.preventDefault(),setTimeout((function(){return n.reset()}),0),{cameraAnimation:function(e){return e.easeTo({duration:300,zoom:e.getZoom()-1,around:e.unproject(a)},{originalEvent:t})}}):void 0},Gn.prototype.touchcancel=function(){this.reset()},Gn.prototype.enable=function(){this._enabled=!0},Gn.prototype.disable=function(){this._enabled=!1,this.reset()},Gn.prototype.isEnabled=function(){return this._enabled},Gn.prototype.isActive=function(){return this._active};var Yn=function(t){this.reset(),this._clickTolerance=t.clickTolerance||1};Yn.prototype.reset=function(){this._active=!1,this._moved=!1,delete this._lastPoint,delete this._eventButton},Yn.prototype._correctButton=function(t,e){return!1},Yn.prototype._move=function(t,e){return{}},Yn.prototype.mousedown=function(t,e){if(!this._lastPoint){var n=r.mouseButton(t);this._correctButton(t,n)&&(this._lastPoint=e,this._eventButton=n)}},Yn.prototype.mousemoveWindow=function(t,e){var r=this._lastPoint;if(r&&(t.preventDefault(),this._moved||!(e.dist(r)0&&(this._active=!0);var i=Vn(n,r),a=new t.Point(0,0),o=new t.Point(0,0),s=0;for(var l in i){var c=i[l],u=this._touches[l];u&&(a._add(c),o._add(c.sub(u)),s++,i[l]=c)}if(this._touches=i,!(sMath.abs(t.x)}var ii=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.reset=function(){t.prototype.reset.call(this),this._valid=void 0,delete this._firstMove,delete this._lastPoints},e.prototype._start=function(t){this._lastPoints=t,ni(t[0].sub(t[1]))&&(this._valid=!1)},e.prototype._move=function(t,e,r){var n=t[0].sub(this._lastPoints[0]),i=t[1].sub(this._lastPoints[1]);if(this._valid=this.gestureBeginsVertically(n,i,r.timeStamp),this._valid){this._lastPoints=t,this._active=!0;return{pitchDelta:-.5*((n.y+i.y)/2)}}},e.prototype.gestureBeginsVertically=function(t,e,r){if(void 0!==this._valid)return this._valid;var n=t.mag()>=2,i=e.mag()>=2;if(n||i){if(!n||!i)return void 0===this._firstMove&&(this._firstMove=r),r-this._firstMove<100&&void 0;var a=t.y>0==e.y>0;return ni(t)&&ni(e)&&a}},e}(Kn),ai={panStep:100,bearingStep:15,pitchStep:10},oi=function(){var t=ai;this._panStep=t.panStep,this._bearingStep=t.bearingStep,this._pitchStep=t.pitchStep};function si(t){return t*(2-t)}oi.prototype.reset=function(){this._active=!1},oi.prototype.keydown=function(t){var e=this;if(!(t.altKey||t.ctrlKey||t.metaKey)){var r=0,n=0,i=0,a=0,o=0;switch(t.keyCode){case 61:case 107:case 171:case 187:r=1;break;case 189:case 109:case 173:r=-1;break;case 37:t.shiftKey?n=-1:(t.preventDefault(),a=-1);break;case 39:t.shiftKey?n=1:(t.preventDefault(),a=1);break;case 38:t.shiftKey?i=1:(t.preventDefault(),o=-1);break;case 40:t.shiftKey?i=-1:(t.preventDefault(),o=1);break;default:return}return{cameraAnimation:function(s){var l=s.getZoom();s.easeTo({duration:300,easeId:\"keyboardHandler\",easing:si,zoom:r?Math.round(l)+r*(t.shiftKey?2:1):l,bearing:s.getBearing()+n*e._bearingStep,pitch:s.getPitch()+i*e._pitchStep,offset:[-a*e._panStep,-o*e._panStep],center:s.getCenter()},{originalEvent:t})}}}},oi.prototype.enable=function(){this._enabled=!0},oi.prototype.disable=function(){this._enabled=!1,this.reset()},oi.prototype.isEnabled=function(){return this._enabled},oi.prototype.isActive=function(){return this._active};var li=function(e,r){this._map=e,this._el=e.getCanvasContainer(),this._handler=r,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=1/450,t.bindAll([\"_onWheel\",\"_onTimeout\",\"_onScrollFrame\",\"_onScrollFinished\"],this)};li.prototype.setZoomRate=function(t){this._defaultZoomRate=t},li.prototype.setWheelZoomRate=function(t){this._wheelZoomRate=t},li.prototype.isEnabled=function(){return!!this._enabled},li.prototype.isActive=function(){return!!this._active||void 0!==this._finishTimeout},li.prototype.isZooming=function(){return!!this._zooming},li.prototype.enable=function(t){this.isEnabled()||(this._enabled=!0,this._aroundCenter=t&&\"center\"===t.around)},li.prototype.disable=function(){this.isEnabled()&&(this._enabled=!1)},li.prototype.wheel=function(e){if(this.isEnabled()){var r=e.deltaMode===t.window.WheelEvent.DOM_DELTA_LINE?40*e.deltaY:e.deltaY,n=t.browser.now(),i=n-(this._lastWheelEventTime||0);this._lastWheelEventTime=n,0!==r&&r%4.000244140625==0?this._type=\"wheel\":0!==r&&Math.abs(r)<4?this._type=\"trackpad\":i>400?(this._type=null,this._lastValue=r,this._timeout=setTimeout(this._onTimeout,40,e)):this._type||(this._type=Math.abs(i*r)<200?\"trackpad\":\"wheel\",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,r+=this._lastValue)),e.shiftKey&&r&&(r/=4),this._type&&(this._lastWheelEvent=e,this._delta-=r,this._active||this._start(e)),e.preventDefault()}},li.prototype._onTimeout=function(t){this._type=\"wheel\",this._delta-=this._lastValue,this._active||this._start(t)},li.prototype._start=function(e){if(this._delta){this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);var n=r.mousePos(this._el,e);this._around=t.LngLat.convert(this._aroundCenter?this._map.getCenter():this._map.unproject(n)),this._aroundPoint=this._map.transform.locationPoint(this._around),this._frameId||(this._frameId=!0,this._handler._triggerRenderFrame())}},li.prototype.renderFrame=function(){return this._onScrollFrame()},li.prototype._onScrollFrame=function(){var e=this;if(this._frameId&&(this._frameId=null,this.isActive())){var r=this._map.transform;if(0!==this._delta){var n=\"wheel\"===this._type&&Math.abs(this._delta)>4.000244140625?this._wheelZoomRate:this._defaultZoomRate,i=2/(1+Math.exp(-Math.abs(this._delta*n)));this._delta<0&&0!==i&&(i=1/i);var a=\"number\"==typeof this._targetZoom?r.zoomScale(this._targetZoom):r.scale;this._targetZoom=Math.min(r.maxZoom,Math.max(r.minZoom,r.scaleZoom(a*i))),\"wheel\"===this._type&&(this._startZoom=r.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0}var o,s=\"number\"==typeof this._targetZoom?this._targetZoom:r.zoom,l=this._startZoom,c=this._easing,u=!1;if(\"wheel\"===this._type&&l&&c){var f=Math.min((t.browser.now()-this._lastWheelEventTime)/200,1),h=c(f);o=t.number(l,s,h),f<1?this._frameId||(this._frameId=!0):u=!0}else o=s,u=!0;return this._active=!0,u&&(this._active=!1,this._finishTimeout=setTimeout((function(){e._zooming=!1,e._handler._triggerRenderFrame(),delete e._targetZoom,delete e._finishTimeout}),200)),{noInertia:!0,needsRenderFrame:!u,zoomDelta:o-r.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}},li.prototype._smoothOutEasing=function(e){var r=t.ease;if(this._prevEase){var n=this._prevEase,i=(t.browser.now()-n.start)/n.duration,a=n.easing(i+.01)-n.easing(i),o=.27/Math.sqrt(a*a+1e-4)*.01,s=Math.sqrt(.0729-o*o);r=t.bezier(o,s,.25,1)}return this._prevEase={start:t.browser.now(),duration:e,easing:r},r},li.prototype.reset=function(){this._active=!1};var ci=function(t,e){this._clickZoom=t,this._tapZoom=e};ci.prototype.enable=function(){this._clickZoom.enable(),this._tapZoom.enable()},ci.prototype.disable=function(){this._clickZoom.disable(),this._tapZoom.disable()},ci.prototype.isEnabled=function(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()},ci.prototype.isActive=function(){return this._clickZoom.isActive()||this._tapZoom.isActive()};var ui=function(){this.reset()};ui.prototype.reset=function(){this._active=!1},ui.prototype.dblclick=function(t,e){return t.preventDefault(),{cameraAnimation:function(r){r.easeTo({duration:300,zoom:r.getZoom()+(t.shiftKey?-1:1),around:r.unproject(e)},{originalEvent:t})}}},ui.prototype.enable=function(){this._enabled=!0},ui.prototype.disable=function(){this._enabled=!1,this.reset()},ui.prototype.isEnabled=function(){return this._enabled},ui.prototype.isActive=function(){return this._active};var fi=function(){this._tap=new qn({numTouches:1,numTaps:1}),this.reset()};fi.prototype.reset=function(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,this._tap.reset()},fi.prototype.touchstart=function(t,e,r){this._swipePoint||(this._tapTime&&t.timeStamp-this._tapTime>500&&this.reset(),this._tapTime?r.length>0&&(this._swipePoint=e[0],this._swipeTouch=r[0].identifier):this._tap.touchstart(t,e,r))},fi.prototype.touchmove=function(t,e,r){if(this._tapTime){if(this._swipePoint){if(r[0].identifier!==this._swipeTouch)return;var n=e[0],i=n.y-this._swipePoint.y;return this._swipePoint=n,t.preventDefault(),this._active=!0,{zoomDelta:i/128}}}else this._tap.touchmove(t,e,r)},fi.prototype.touchend=function(t,e,r){this._tapTime?this._swipePoint&&0===r.length&&this.reset():this._tap.touchend(t,e,r)&&(this._tapTime=t.timeStamp)},fi.prototype.touchcancel=function(){this.reset()},fi.prototype.enable=function(){this._enabled=!0},fi.prototype.disable=function(){this._enabled=!1,this.reset()},fi.prototype.isEnabled=function(){return this._enabled},fi.prototype.isActive=function(){return this._active};var hi=function(t,e,r){this._el=t,this._mousePan=e,this._touchPan=r};hi.prototype.enable=function(t){this._inertiaOptions=t||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add(\"mapboxgl-touch-drag-pan\")},hi.prototype.disable=function(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove(\"mapboxgl-touch-drag-pan\")},hi.prototype.isEnabled=function(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()},hi.prototype.isActive=function(){return this._mousePan.isActive()||this._touchPan.isActive()};var pi=function(t,e,r){this._pitchWithRotate=t.pitchWithRotate,this._mouseRotate=e,this._mousePitch=r};pi.prototype.enable=function(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable()},pi.prototype.disable=function(){this._mouseRotate.disable(),this._mousePitch.disable()},pi.prototype.isEnabled=function(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())},pi.prototype.isActive=function(){return this._mouseRotate.isActive()||this._mousePitch.isActive()};var di=function(t,e,r,n){this._el=t,this._touchZoom=e,this._touchRotate=r,this._tapDragZoom=n,this._rotationDisabled=!1,this._enabled=!0};di.prototype.enable=function(t){this._touchZoom.enable(t),this._rotationDisabled||this._touchRotate.enable(t),this._tapDragZoom.enable(),this._el.classList.add(\"mapboxgl-touch-zoom-rotate\")},di.prototype.disable=function(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove(\"mapboxgl-touch-zoom-rotate\")},di.prototype.isEnabled=function(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()},di.prototype.isActive=function(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()},di.prototype.disableRotation=function(){this._rotationDisabled=!0,this._touchRotate.disable()},di.prototype.enableRotation=function(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable()};var gi=function(t){return t.zoom||t.drag||t.pitch||t.rotate},mi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(t.Event);function vi(t){return t.panDelta&&t.panDelta.mag()||t.zoomDelta||t.bearingDelta||t.pitchDelta}var yi=function(e,n){this._map=e,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new On(e),this._bearingSnap=n.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(n),t.bindAll([\"handleEvent\",\"handleWindowEvent\"],this);var i=this._el;this._listeners=[[i,\"touchstart\",{passive:!1}],[i,\"touchmove\",{passive:!1}],[i,\"touchend\",void 0],[i,\"touchcancel\",void 0],[i,\"mousedown\",void 0],[i,\"mousemove\",void 0],[i,\"mouseup\",void 0],[t.window.document,\"mousemove\",{capture:!0}],[t.window.document,\"mouseup\",void 0],[i,\"mouseover\",void 0],[i,\"mouseout\",void 0],[i,\"dblclick\",void 0],[i,\"click\",void 0],[i,\"keydown\",{capture:!1}],[i,\"keyup\",void 0],[i,\"wheel\",{passive:!1}],[i,\"contextmenu\",void 0],[t.window,\"blur\",void 0]];for(var a=0,o=this._listeners;aa?Math.min(2,_):Math.max(.5,_),w=Math.pow(m,1-e),T=i.unproject(x.add(b.mult(e*w)).mult(g));i.setLocationAtPoint(i.renderWorldCopies?T.wrap():T,d)}n._fireMoveEvents(r)}),(function(t){n._afterEase(r,t)}),e),this},r.prototype._prepareEase=function(e,r,n){void 0===n&&(n={}),this._moving=!0,r||n.moving||this.fire(new t.Event(\"movestart\",e)),this._zooming&&!n.zooming&&this.fire(new t.Event(\"zoomstart\",e)),this._rotating&&!n.rotating&&this.fire(new t.Event(\"rotatestart\",e)),this._pitching&&!n.pitching&&this.fire(new t.Event(\"pitchstart\",e))},r.prototype._fireMoveEvents=function(e){this.fire(new t.Event(\"move\",e)),this._zooming&&this.fire(new t.Event(\"zoom\",e)),this._rotating&&this.fire(new t.Event(\"rotate\",e)),this._pitching&&this.fire(new t.Event(\"pitch\",e))},r.prototype._afterEase=function(e,r){if(!this._easeId||!r||this._easeId!==r){delete this._easeId;var n=this._zooming,i=this._rotating,a=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,n&&this.fire(new t.Event(\"zoomend\",e)),i&&this.fire(new t.Event(\"rotateend\",e)),a&&this.fire(new t.Event(\"pitchend\",e)),this.fire(new t.Event(\"moveend\",e))}},r.prototype.flyTo=function(e,r){var n=this;if(!e.essential&&t.browser.prefersReducedMotion){var i=t.pick(e,[\"center\",\"zoom\",\"bearing\",\"pitch\",\"around\"]);return this.jumpTo(i,r)}this.stop(),e=t.extend({offset:[0,0],speed:1.2,curve:1.42,easing:t.ease},e);var a=this.transform,o=this.getZoom(),s=this.getBearing(),l=this.getPitch(),c=this.getPadding(),u=\"zoom\"in e?t.clamp(+e.zoom,a.minZoom,a.maxZoom):o,f=\"bearing\"in e?this._normalizeBearing(e.bearing,s):s,h=\"pitch\"in e?+e.pitch:l,p=\"padding\"in e?e.padding:a.padding,d=a.zoomScale(u-o),g=t.Point.convert(e.offset),m=a.centerPoint.add(g),v=a.pointLocation(m),y=t.LngLat.convert(e.center||v);this._normalizeCenter(y);var x=a.project(v),b=a.project(y).sub(x),_=e.curve,w=Math.max(a.width,a.height),T=w/d,k=b.mag();if(\"minZoom\"in e){var A=t.clamp(Math.min(e.minZoom,o,u),a.minZoom,a.maxZoom),M=w/a.zoomScale(A-o);_=Math.sqrt(M/k*2)}var S=_*_;function E(t){var e=(T*T-w*w+(t?-1:1)*S*S*k*k)/(2*(t?T:w)*S*k);return Math.log(Math.sqrt(e*e+1)-e)}function L(t){return(Math.exp(t)-Math.exp(-t))/2}function C(t){return(Math.exp(t)+Math.exp(-t))/2}var P=E(0),I=function(t){return C(P)/C(P+_*t)},O=function(t){return w*((C(P)*(L(e=P+_*t)/C(e))-L(P))/S)/k;var e},z=(E(1)-P)/_;if(Math.abs(k)<1e-6||!isFinite(z)){if(Math.abs(w-T)<1e-6)return this.easeTo(e,r);var D=Te.maxDuration&&(e.duration=0),this._zooming=!0,this._rotating=s!==f,this._pitching=h!==l,this._padding=!a.isPaddingEqual(p),this._prepareEase(r,!1),this._ease((function(e){var i=e*z,d=1/I(i);a.zoom=1===e?u:o+a.scaleZoom(d),n._rotating&&(a.bearing=t.number(s,f,e)),n._pitching&&(a.pitch=t.number(l,h,e)),n._padding&&(a.interpolatePadding(c,p,e),m=a.centerPoint.add(g));var v=1===e?y:a.unproject(x.add(b.mult(O(i))).mult(d));a.setLocationAtPoint(a.renderWorldCopies?v.wrap():v,m),n._fireMoveEvents(r)}),(function(){return n._afterEase(r)}),e),this},r.prototype.isEasing=function(){return!!this._easeFrameId},r.prototype.stop=function(){return this._stop()},r.prototype._stop=function(t,e){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){var r=this._onEaseEnd;delete this._onEaseEnd,r.call(this,e)}if(!t){var n=this.handlers;n&&n.stop()}return this},r.prototype._ease=function(e,r,n){!1===n.animate||0===n.duration?(e(1),r()):(this._easeStart=t.browser.now(),this._easeOptions=n,this._onEaseFrame=e,this._onEaseEnd=r,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))},r.prototype._renderFrameCallback=function(){var e=Math.min((t.browser.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(e)),e<1?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()},r.prototype._normalizeBearing=function(e,r){e=t.wrap(e,-180,180);var n=Math.abs(e-r);return Math.abs(e-360-r)180?-360:r<-180?360:0}},r}(t.Evented),bi=function(e){void 0===e&&(e={}),this.options=e,t.bindAll([\"_updateEditLink\",\"_updateData\",\"_updateCompact\"],this)};bi.prototype.getDefaultPosition=function(){return\"bottom-right\"},bi.prototype.onAdd=function(t){var e=this.options&&this.options.compact;return this._map=t,this._container=r.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-attrib\"),this._innerContainer=r.create(\"div\",\"mapboxgl-ctrl-attrib-inner\",this._container),e&&this._container.classList.add(\"mapboxgl-compact\"),this._updateAttributions(),this._updateEditLink(),this._map.on(\"styledata\",this._updateData),this._map.on(\"sourcedata\",this._updateData),this._map.on(\"moveend\",this._updateEditLink),void 0===e&&(this._map.on(\"resize\",this._updateCompact),this._updateCompact()),this._container},bi.prototype.onRemove=function(){r.remove(this._container),this._map.off(\"styledata\",this._updateData),this._map.off(\"sourcedata\",this._updateData),this._map.off(\"moveend\",this._updateEditLink),this._map.off(\"resize\",this._updateCompact),this._map=void 0,this._attribHTML=void 0},bi.prototype._updateEditLink=function(){var e=this._editLink;e||(e=this._editLink=this._container.querySelector(\".mapbox-improve-map\"));var r=[{key:\"owner\",value:this.styleOwner},{key:\"id\",value:this.styleId},{key:\"access_token\",value:this._map._requestManager._customAccessToken||t.config.ACCESS_TOKEN}];if(e){var n=r.reduce((function(t,e,n){return e.value&&(t+=e.key+\"=\"+e.value+(n=0)return!1;return!0}))).join(\" | \");o!==this._attribHTML&&(this._attribHTML=o,t.length?(this._innerContainer.innerHTML=o,this._container.classList.remove(\"mapboxgl-attrib-empty\")):this._container.classList.add(\"mapboxgl-attrib-empty\"),this._editLink=null)}},bi.prototype._updateCompact=function(){this._map.getCanvasContainer().offsetWidth<=640?this._container.classList.add(\"mapboxgl-compact\"):this._container.classList.remove(\"mapboxgl-compact\")};var _i=function(){t.bindAll([\"_updateLogo\"],this),t.bindAll([\"_updateCompact\"],this)};_i.prototype.onAdd=function(t){this._map=t,this._container=r.create(\"div\",\"mapboxgl-ctrl\");var e=r.create(\"a\",\"mapboxgl-ctrl-logo\");return e.target=\"_blank\",e.rel=\"noopener nofollow\",e.href=\"https://www.mapbox.com/\",e.setAttribute(\"aria-label\",this._map._getUIString(\"LogoControl.Title\")),e.setAttribute(\"rel\",\"noopener nofollow\"),this._container.appendChild(e),this._container.style.display=\"none\",this._map.on(\"sourcedata\",this._updateLogo),this._updateLogo(),this._map.on(\"resize\",this._updateCompact),this._updateCompact(),this._container},_i.prototype.onRemove=function(){r.remove(this._container),this._map.off(\"sourcedata\",this._updateLogo),this._map.off(\"resize\",this._updateCompact)},_i.prototype.getDefaultPosition=function(){return\"bottom-left\"},_i.prototype._updateLogo=function(t){t&&\"metadata\"!==t.sourceDataType||(this._container.style.display=this._logoRequired()?\"block\":\"none\")},_i.prototype._logoRequired=function(){if(this._map.style){var t=this._map.style.sourceCaches;for(var e in t){if(t[e].getSource().mapbox_logo)return!0}return!1}},_i.prototype._updateCompact=function(){var t=this._container.children;if(t.length){var e=t[0];this._map.getCanvasContainer().offsetWidth<250?e.classList.add(\"mapboxgl-compact\"):e.classList.remove(\"mapboxgl-compact\")}};var wi=function(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1};wi.prototype.add=function(t){var e=++this._id;return this._queue.push({callback:t,id:e,cancelled:!1}),e},wi.prototype.remove=function(t){for(var e=this._currentlyRunning,r=0,n=e?this._queue.concat(e):this._queue;re.maxZoom)throw new Error(\"maxZoom must be greater than or equal to minZoom\");if(null!=e.minPitch&&null!=e.maxPitch&&e.minPitch>e.maxPitch)throw new Error(\"maxPitch must be greater than or equal to minPitch\");if(null!=e.minPitch&&e.minPitch<0)throw new Error(\"minPitch must be greater than or equal to 0\");if(null!=e.maxPitch&&e.maxPitch>60)throw new Error(\"maxPitch must be less than or equal to 60\");var i=new An(e.minZoom,e.maxZoom,e.minPitch,e.maxPitch,e.renderWorldCopies);if(n.call(this,i,e),this._interactive=e.interactive,this._maxTileCacheSize=e.maxTileCacheSize,this._failIfMajorPerformanceCaveat=e.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=e.preserveDrawingBuffer,this._antialias=e.antialias,this._trackResize=e.trackResize,this._bearingSnap=e.bearingSnap,this._refreshExpiredTiles=e.refreshExpiredTiles,this._fadeDuration=e.fadeDuration,this._crossSourceCollisions=e.crossSourceCollisions,this._crossFadingFactor=1,this._collectResourceTiming=e.collectResourceTiming,this._renderTaskQueue=new wi,this._controls=[],this._mapId=t.uniqueId(),this._locale=t.extend({},Ti,e.locale),this._requestManager=new t.RequestManager(e.transformRequest,e.accessToken),\"string\"==typeof e.container){if(this._container=t.window.document.getElementById(e.container),!this._container)throw new Error(\"Container '\"+e.container+\"' not found.\")}else{if(!(e.container instanceof Ai))throw new Error(\"Invalid type: 'container' must be a String or HTMLElement.\");this._container=e.container}if(e.maxBounds&&this.setMaxBounds(e.maxBounds),t.bindAll([\"_onWindowOnline\",\"_onWindowResize\",\"_contextLost\",\"_contextRestored\"],this),this._setupContainer(),this._setupPainter(),void 0===this.painter)throw new Error(\"Failed to initialize WebGL.\");this.on(\"move\",(function(){return r._update(!1)})),this.on(\"moveend\",(function(){return r._update(!1)})),this.on(\"zoom\",(function(){return r._update(!0)})),void 0!==t.window&&(t.window.addEventListener(\"online\",this._onWindowOnline,!1),t.window.addEventListener(\"resize\",this._onWindowResize,!1)),this.handlers=new yi(this,e);var a=\"string\"==typeof e.hash&&e.hash||void 0;this._hash=e.hash&&new Sn(a).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:e.center,zoom:e.zoom,bearing:e.bearing,pitch:e.pitch}),e.bounds&&(this.resize(),this.fitBounds(e.bounds,t.extend({},e.fitBoundsOptions,{duration:0})))),this.resize(),this._localIdeographFontFamily=e.localIdeographFontFamily,e.style&&this.setStyle(e.style,{localIdeographFontFamily:e.localIdeographFontFamily}),e.attributionControl&&this.addControl(new bi({customAttribution:e.customAttribution})),this.addControl(new _i,e.logoPosition),this.on(\"style.load\",(function(){r.transform.unmodified&&r.jumpTo(r.style.stylesheet)})),this.on(\"data\",(function(e){r._update(\"style\"===e.dataType),r.fire(new t.Event(e.dataType+\"data\",e))})),this.on(\"dataloading\",(function(e){r.fire(new t.Event(e.dataType+\"dataloading\",e))}))}n&&(i.__proto__=n),i.prototype=Object.create(n&&n.prototype),i.prototype.constructor=i;var a={showTileBoundaries:{configurable:!0},showPadding:{configurable:!0},showCollisionBoxes:{configurable:!0},showOverdrawInspector:{configurable:!0},repaint:{configurable:!0},vertices:{configurable:!0},version:{configurable:!0}};return i.prototype._getMapId=function(){return this._mapId},i.prototype.addControl=function(e,r){if(void 0===r&&e.getDefaultPosition&&(r=e.getDefaultPosition()),void 0===r&&(r=\"top-right\"),!e||!e.onAdd)return this.fire(new t.ErrorEvent(new Error(\"Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.\")));var n=e.onAdd(this);this._controls.push(e);var i=this._controlPositions[r];return-1!==r.indexOf(\"bottom\")?i.insertBefore(n,i.firstChild):i.appendChild(n),this},i.prototype.removeControl=function(e){if(!e||!e.onRemove)return this.fire(new t.ErrorEvent(new Error(\"Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.\")));var r=this._controls.indexOf(e);return r>-1&&this._controls.splice(r,1),e.onRemove(this),this},i.prototype.resize=function(e){var r=this._containerDimensions(),n=r[0],i=r[1];this._resizeCanvas(n,i),this.transform.resize(n,i),this.painter.resize(n,i);var a=!this._moving;return a&&(this.stop(),this.fire(new t.Event(\"movestart\",e)).fire(new t.Event(\"move\",e))),this.fire(new t.Event(\"resize\",e)),a&&this.fire(new t.Event(\"moveend\",e)),this},i.prototype.getBounds=function(){return this.transform.getBounds()},i.prototype.getMaxBounds=function(){return this.transform.getMaxBounds()},i.prototype.setMaxBounds=function(e){return this.transform.setMaxBounds(t.LngLatBounds.convert(e)),this._update()},i.prototype.setMinZoom=function(t){if((t=null==t?-2:t)>=-2&&t<=this.transform.maxZoom)return this.transform.minZoom=t,this._update(),this.getZoom()=this.transform.minZoom)return this.transform.maxZoom=t,this._update(),this.getZoom()>t&&this.setZoom(t),this;throw new Error(\"maxZoom must be greater than the current minZoom\")},i.prototype.getMaxZoom=function(){return this.transform.maxZoom},i.prototype.setMinPitch=function(t){if((t=null==t?0:t)<0)throw new Error(\"minPitch must be greater than or equal to 0\");if(t>=0&&t<=this.transform.maxPitch)return this.transform.minPitch=t,this._update(),this.getPitch()60)throw new Error(\"maxPitch must be less than or equal to 60\");if(t>=this.transform.minPitch)return this.transform.maxPitch=t,this._update(),this.getPitch()>t&&this.setPitch(t),this;throw new Error(\"maxPitch must be greater than the current minPitch\")},i.prototype.getMaxPitch=function(){return this.transform.maxPitch},i.prototype.getRenderWorldCopies=function(){return this.transform.renderWorldCopies},i.prototype.setRenderWorldCopies=function(t){return this.transform.renderWorldCopies=t,this._update()},i.prototype.project=function(e){return this.transform.locationPoint(t.LngLat.convert(e))},i.prototype.unproject=function(e){return this.transform.pointLocation(t.Point.convert(e))},i.prototype.isMoving=function(){return this._moving||this.handlers.isMoving()},i.prototype.isZooming=function(){return this._zooming||this.handlers.isZooming()},i.prototype.isRotating=function(){return this._rotating||this.handlers.isRotating()},i.prototype._createDelegatedListener=function(t,e,r){var n,i=this;if(\"mouseenter\"===t||\"mouseover\"===t){var a=!1;return{layer:e,listener:r,delegates:{mousemove:function(n){var o=i.getLayer(e)?i.queryRenderedFeatures(n.point,{layers:[e]}):[];o.length?a||(a=!0,r.call(i,new Rn(t,i,n.originalEvent,{features:o}))):a=!1},mouseout:function(){a=!1}}}}if(\"mouseleave\"===t||\"mouseout\"===t){var o=!1;return{layer:e,listener:r,delegates:{mousemove:function(n){(i.getLayer(e)?i.queryRenderedFeatures(n.point,{layers:[e]}):[]).length?o=!0:o&&(o=!1,r.call(i,new Rn(t,i,n.originalEvent)))},mouseout:function(e){o&&(o=!1,r.call(i,new Rn(t,i,e.originalEvent)))}}}}return{layer:e,listener:r,delegates:(n={},n[t]=function(t){var n=i.getLayer(e)?i.queryRenderedFeatures(t.point,{layers:[e]}):[];n.length&&(t.features=n,r.call(i,t),delete t.features)},n)}},i.prototype.on=function(t,e,r){if(void 0===r)return n.prototype.on.call(this,t,e);var i=this._createDelegatedListener(t,e,r);for(var a in this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[t]=this._delegatedListeners[t]||[],this._delegatedListeners[t].push(i),i.delegates)this.on(a,i.delegates[a]);return this},i.prototype.once=function(t,e,r){if(void 0===r)return n.prototype.once.call(this,t,e);var i=this._createDelegatedListener(t,e,r);for(var a in i.delegates)this.once(a,i.delegates[a]);return this},i.prototype.off=function(t,e,r){var i=this;if(void 0===r)return n.prototype.off.call(this,t,e);return this._delegatedListeners&&this._delegatedListeners[t]&&function(n){for(var a=n[t],o=0;o180;){var s=n.locationPoint(e);if(s.x>=0&&s.y>=0&&s.x<=n.width&&s.y<=n.height)break;e.lng>n.center.lng?e.lng-=360:e.lng+=360}return e}Ii.prototype.down=function(t,e){this.mouseRotate.mousedown(t,e),this.mousePitch&&this.mousePitch.mousedown(t,e),r.disableDrag()},Ii.prototype.move=function(t,e){var r=this.map,n=this.mouseRotate.mousemoveWindow(t,e);if(n&&n.bearingDelta&&r.setBearing(r.getBearing()+n.bearingDelta),this.mousePitch){var i=this.mousePitch.mousemoveWindow(t,e);i&&i.pitchDelta&&r.setPitch(r.getPitch()+i.pitchDelta)}},Ii.prototype.off=function(){var t=this.element;r.removeEventListener(t,\"mousedown\",this.mousedown),r.removeEventListener(t,\"touchstart\",this.touchstart,{passive:!1}),r.removeEventListener(t,\"touchmove\",this.touchmove),r.removeEventListener(t,\"touchend\",this.touchend),r.removeEventListener(t,\"touchcancel\",this.reset),this.offTemp()},Ii.prototype.offTemp=function(){r.enableDrag(),r.removeEventListener(t.window,\"mousemove\",this.mousemove),r.removeEventListener(t.window,\"mouseup\",this.mouseup)},Ii.prototype.mousedown=function(e){this.down(t.extend({},e,{ctrlKey:!0,preventDefault:function(){return e.preventDefault()}}),r.mousePos(this.element,e)),r.addEventListener(t.window,\"mousemove\",this.mousemove),r.addEventListener(t.window,\"mouseup\",this.mouseup)},Ii.prototype.mousemove=function(t){this.move(t,r.mousePos(this.element,t))},Ii.prototype.mouseup=function(t){this.mouseRotate.mouseupWindow(t),this.mousePitch&&this.mousePitch.mouseupWindow(t),this.offTemp()},Ii.prototype.touchstart=function(t){1!==t.targetTouches.length?this.reset():(this._startPos=this._lastPos=r.touchPos(this.element,t.targetTouches)[0],this.down({type:\"mousedown\",button:0,ctrlKey:!0,preventDefault:function(){return t.preventDefault()}},this._startPos))},Ii.prototype.touchmove=function(t){1!==t.targetTouches.length?this.reset():(this._lastPos=r.touchPos(this.element,t.targetTouches)[0],this.move({preventDefault:function(){return t.preventDefault()}},this._lastPos))},Ii.prototype.touchend=function(t){0===t.targetTouches.length&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos)e.getEast()||r.latitudee.getNorth())},n.prototype._setErrorState=function(){switch(this._watchState){case\"WAITING_ACTIVE\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\");break;case\"ACTIVE_LOCK\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\");break;case\"BACKGROUND\":this._watchState=\"BACKGROUND_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\")}},n.prototype._onSuccess=function(e){if(this._map){if(this._isOutOfMapMaxBounds(e))return this._setErrorState(),this.fire(new t.Event(\"outofmaxbounds\",e)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=e,this._watchState){case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"BACKGROUND\":case\"BACKGROUND_ERROR\":this._watchState=\"BACKGROUND\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\")}this.options.showUserLocation&&\"OFF\"!==this._watchState&&this._updateMarker(e),this.options.trackUserLocation&&\"ACTIVE_LOCK\"!==this._watchState||this._updateCamera(e),this.options.showUserLocation&&this._dotElement.classList.remove(\"mapboxgl-user-location-dot-stale\"),this.fire(new t.Event(\"geolocate\",e)),this._finish()}},n.prototype._updateCamera=function(e){var r=new t.LngLat(e.coords.longitude,e.coords.latitude),n=e.coords.accuracy,i=this._map.getBearing(),a=t.extend({bearing:i},this.options.fitBoundsOptions);this._map.fitBounds(r.toBounds(n),a,{geolocateSource:!0})},n.prototype._updateMarker=function(e){if(e){var r=new t.LngLat(e.coords.longitude,e.coords.latitude);this._accuracyCircleMarker.setLngLat(r).addTo(this._map),this._userLocationDotMarker.setLngLat(r).addTo(this._map),this._accuracy=e.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()},n.prototype._updateCircleRadius=function(){var t=this._map._container.clientHeight/2,e=this._map.unproject([0,t]),r=this._map.unproject([1,t]),n=e.distanceTo(r),i=Math.ceil(2*this._accuracy/n);this._circleElement.style.width=i+\"px\",this._circleElement.style.height=i+\"px\"},n.prototype._onZoom=function(){this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()},n.prototype._onError=function(e){if(this._map){if(this.options.trackUserLocation)if(1===e.code){this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.disabled=!0;var r=this._map._getUIString(\"GeolocateControl.LocationNotAvailable\");this._geolocateButton.title=r,this._geolocateButton.setAttribute(\"aria-label\",r),void 0!==this._geolocationWatchID&&this._clearWatch()}else{if(3===e.code&&ji)return;this._setErrorState()}\"OFF\"!==this._watchState&&this.options.showUserLocation&&this._dotElement.classList.add(\"mapboxgl-user-location-dot-stale\"),this.fire(new t.Event(\"error\",e)),this._finish()}},n.prototype._finish=function(){this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},n.prototype._setupUI=function(e){var n=this;if(this._container.addEventListener(\"contextmenu\",(function(t){return t.preventDefault()})),this._geolocateButton=r.create(\"button\",\"mapboxgl-ctrl-geolocate\",this._container),r.create(\"span\",\"mapboxgl-ctrl-icon\",this._geolocateButton).setAttribute(\"aria-hidden\",!0),this._geolocateButton.type=\"button\",!1===e){t.warnOnce(\"Geolocation support is not available so the GeolocateControl will be disabled.\");var i=this._map._getUIString(\"GeolocateControl.LocationNotAvailable\");this._geolocateButton.disabled=!0,this._geolocateButton.title=i,this._geolocateButton.setAttribute(\"aria-label\",i)}else{var a=this._map._getUIString(\"GeolocateControl.FindMyLocation\");this._geolocateButton.title=a,this._geolocateButton.setAttribute(\"aria-label\",a)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this._watchState=\"OFF\"),this.options.showUserLocation&&(this._dotElement=r.create(\"div\",\"mapboxgl-user-location-dot\"),this._userLocationDotMarker=new Fi(this._dotElement),this._circleElement=r.create(\"div\",\"mapboxgl-user-location-accuracy-circle\"),this._accuracyCircleMarker=new Fi({element:this._circleElement,pitchAlignment:\"map\"}),this.options.trackUserLocation&&(this._watchState=\"OFF\"),this._map.on(\"zoom\",this._onZoom)),this._geolocateButton.addEventListener(\"click\",this.trigger.bind(this)),this._setup=!0,this.options.trackUserLocation&&this._map.on(\"movestart\",(function(e){var r=e.originalEvent&&\"resize\"===e.originalEvent.type;e.geolocateSource||\"ACTIVE_LOCK\"!==n._watchState||r||(n._watchState=\"BACKGROUND\",n._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\"),n._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),n.fire(new t.Event(\"trackuserlocationend\")))}))},n.prototype.trigger=function(){if(!this._setup)return t.warnOnce(\"Geolocate control triggered before added to a map\"),!1;if(this.options.trackUserLocation){switch(this._watchState){case\"OFF\":this._watchState=\"WAITING_ACTIVE\",this.fire(new t.Event(\"trackuserlocationstart\"));break;case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":case\"BACKGROUND_ERROR\":Ni--,ji=!1,this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this.fire(new t.Event(\"trackuserlocationend\"));break;case\"BACKGROUND\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new t.Event(\"trackuserlocationstart\"))}switch(this._watchState){case\"WAITING_ACTIVE\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"ACTIVE_LOCK\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"ACTIVE_ERROR\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\");break;case\"BACKGROUND\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\");break;case\"BACKGROUND_ERROR\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background-error\")}if(\"OFF\"===this._watchState&&void 0!==this._geolocationWatchID)this._clearWatch();else if(void 0===this._geolocationWatchID){var e;this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"true\"),++Ni>1?(e={maximumAge:6e5,timeout:0},ji=!0):(e=this.options.positionOptions,ji=!1),this._geolocationWatchID=t.window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,e)}}else t.window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return!0},n.prototype._clearWatch=function(){t.window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this.options.showUserLocation&&this._updateMarker(null)},n}(t.Evented),Vi={maxWidth:100,unit:\"metric\"},Hi=function(e){this.options=t.extend({},Vi,e),t.bindAll([\"_onMove\",\"setUnit\"],this)};function qi(t,e,r){var n=r&&r.maxWidth||100,i=t._container.clientHeight/2,a=t.unproject([0,i]),o=t.unproject([n,i]),s=a.distanceTo(o);if(r&&\"imperial\"===r.unit){var l=3.2808*s;if(l>5280)Gi(e,n,l/5280,t._getUIString(\"ScaleControl.Miles\"));else Gi(e,n,l,t._getUIString(\"ScaleControl.Feet\"))}else if(r&&\"nautical\"===r.unit){Gi(e,n,s/1852,t._getUIString(\"ScaleControl.NauticalMiles\"))}else s>=1e3?Gi(e,n,s/1e3,t._getUIString(\"ScaleControl.Kilometers\")):Gi(e,n,s,t._getUIString(\"ScaleControl.Meters\"))}function Gi(t,e,r,n){var i,a,o,s=(i=r,a=Math.pow(10,(\"\"+Math.floor(i)).length-1),o=(o=i/a)>=10?10:o>=5?5:o>=3?3:o>=2?2:o>=1?1:function(t){var e=Math.pow(10,Math.ceil(-Math.log(t)/Math.LN10));return Math.round(t*e)/e}(o),a*o),l=s/r;t.style.width=e*l+\"px\",t.innerHTML=s+\" \"+n}Hi.prototype.getDefaultPosition=function(){return\"bottom-left\"},Hi.prototype._onMove=function(){qi(this._map,this._container,this.options)},Hi.prototype.onAdd=function(t){return this._map=t,this._container=r.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-scale\",t.getContainer()),this._map.on(\"move\",this._onMove),this._onMove(),this._container},Hi.prototype.onRemove=function(){r.remove(this._container),this._map.off(\"move\",this._onMove),this._map=void 0},Hi.prototype.setUnit=function(t){this.options.unit=t,qi(this._map,this._container,this.options)};var Yi=function(e){this._fullscreen=!1,e&&e.container&&(e.container instanceof t.window.HTMLElement?this._container=e.container:t.warnOnce(\"Full screen control 'container' must be a DOM element.\")),t.bindAll([\"_onClickFullscreen\",\"_changeIcon\"],this),\"onfullscreenchange\"in t.window.document?this._fullscreenchange=\"fullscreenchange\":\"onmozfullscreenchange\"in t.window.document?this._fullscreenchange=\"mozfullscreenchange\":\"onwebkitfullscreenchange\"in t.window.document?this._fullscreenchange=\"webkitfullscreenchange\":\"onmsfullscreenchange\"in t.window.document&&(this._fullscreenchange=\"MSFullscreenChange\")};Yi.prototype.onAdd=function(e){return this._map=e,this._container||(this._container=this._map.getContainer()),this._controlContainer=r.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-group\"),this._checkFullscreenSupport()?this._setupUI():(this._controlContainer.style.display=\"none\",t.warnOnce(\"This device does not support fullscreen mode.\")),this._controlContainer},Yi.prototype.onRemove=function(){r.remove(this._controlContainer),this._map=null,t.window.document.removeEventListener(this._fullscreenchange,this._changeIcon)},Yi.prototype._checkFullscreenSupport=function(){return!!(t.window.document.fullscreenEnabled||t.window.document.mozFullScreenEnabled||t.window.document.msFullscreenEnabled||t.window.document.webkitFullscreenEnabled)},Yi.prototype._setupUI=function(){var e=this._fullscreenButton=r.create(\"button\",\"mapboxgl-ctrl-fullscreen\",this._controlContainer);r.create(\"span\",\"mapboxgl-ctrl-icon\",e).setAttribute(\"aria-hidden\",!0),e.type=\"button\",this._updateTitle(),this._fullscreenButton.addEventListener(\"click\",this._onClickFullscreen),t.window.document.addEventListener(this._fullscreenchange,this._changeIcon)},Yi.prototype._updateTitle=function(){var t=this._getTitle();this._fullscreenButton.setAttribute(\"aria-label\",t),this._fullscreenButton.title=t},Yi.prototype._getTitle=function(){return this._map._getUIString(this._isFullscreen()?\"FullscreenControl.Exit\":\"FullscreenControl.Enter\")},Yi.prototype._isFullscreen=function(){return this._fullscreen},Yi.prototype._changeIcon=function(){(t.window.document.fullscreenElement||t.window.document.mozFullScreenElement||t.window.document.webkitFullscreenElement||t.window.document.msFullscreenElement)===this._container!==this._fullscreen&&(this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle(\"mapboxgl-ctrl-shrink\"),this._fullscreenButton.classList.toggle(\"mapboxgl-ctrl-fullscreen\"),this._updateTitle())},Yi.prototype._onClickFullscreen=function(){this._isFullscreen()?t.window.document.exitFullscreen?t.window.document.exitFullscreen():t.window.document.mozCancelFullScreen?t.window.document.mozCancelFullScreen():t.window.document.msExitFullscreen?t.window.document.msExitFullscreen():t.window.document.webkitCancelFullScreen&&t.window.document.webkitCancelFullScreen():this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen&&this._container.webkitRequestFullscreen()};var Wi={closeButton:!0,closeOnClick:!0,className:\"\",maxWidth:\"240px\"},Xi=function(e){function n(r){e.call(this),this.options=t.extend(Object.create(Wi),r),t.bindAll([\"_update\",\"_onClose\",\"remove\",\"_onMouseMove\",\"_onMouseUp\",\"_onDrag\"],this)}return e&&(n.__proto__=e),n.prototype=Object.create(e&&e.prototype),n.prototype.constructor=n,n.prototype.addTo=function(e){return this._map&&this.remove(),this._map=e,this.options.closeOnClick&&this._map.on(\"click\",this._onClose),this.options.closeOnMove&&this._map.on(\"move\",this._onClose),this._map.on(\"remove\",this.remove),this._update(),this._trackPointer?(this._map.on(\"mousemove\",this._onMouseMove),this._map.on(\"mouseup\",this._onMouseUp),this._container&&this._container.classList.add(\"mapboxgl-popup-track-pointer\"),this._map._canvasContainer.classList.add(\"mapboxgl-track-pointer\")):this._map.on(\"move\",this._update),this.fire(new t.Event(\"open\")),this},n.prototype.isOpen=function(){return!!this._map},n.prototype.remove=function(){return this._content&&r.remove(this._content),this._container&&(r.remove(this._container),delete this._container),this._map&&(this._map.off(\"move\",this._update),this._map.off(\"move\",this._onClose),this._map.off(\"click\",this._onClose),this._map.off(\"remove\",this.remove),this._map.off(\"mousemove\",this._onMouseMove),this._map.off(\"mouseup\",this._onMouseUp),this._map.off(\"drag\",this._onDrag),delete this._map),this.fire(new t.Event(\"close\")),this},n.prototype.getLngLat=function(){return this._lngLat},n.prototype.setLngLat=function(e){return this._lngLat=t.LngLat.convert(e),this._pos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on(\"move\",this._update),this._map.off(\"mousemove\",this._onMouseMove),this._container&&this._container.classList.remove(\"mapboxgl-popup-track-pointer\"),this._map._canvasContainer.classList.remove(\"mapboxgl-track-pointer\")),this},n.prototype.trackPointer=function(){return this._trackPointer=!0,this._pos=null,this._update(),this._map&&(this._map.off(\"move\",this._update),this._map.on(\"mousemove\",this._onMouseMove),this._map.on(\"drag\",this._onDrag),this._container&&this._container.classList.add(\"mapboxgl-popup-track-pointer\"),this._map._canvasContainer.classList.add(\"mapboxgl-track-pointer\")),this},n.prototype.getElement=function(){return this._container},n.prototype.setText=function(e){return this.setDOMContent(t.window.document.createTextNode(e))},n.prototype.setHTML=function(e){var r,n=t.window.document.createDocumentFragment(),i=t.window.document.createElement(\"body\");for(i.innerHTML=e;r=i.firstChild;)n.appendChild(r);return this.setDOMContent(n)},n.prototype.getMaxWidth=function(){return this._container&&this._container.style.maxWidth},n.prototype.setMaxWidth=function(t){return this.options.maxWidth=t,this._update(),this},n.prototype.setDOMContent=function(t){return this._createContent(),this._content.appendChild(t),this._update(),this},n.prototype.addClassName=function(t){this._container&&this._container.classList.add(t)},n.prototype.removeClassName=function(t){this._container&&this._container.classList.remove(t)},n.prototype.toggleClassName=function(t){if(this._container)return this._container.classList.toggle(t)},n.prototype._createContent=function(){this._content&&r.remove(this._content),this._content=r.create(\"div\",\"mapboxgl-popup-content\",this._container),this.options.closeButton&&(this._closeButton=r.create(\"button\",\"mapboxgl-popup-close-button\",this._content),this._closeButton.type=\"button\",this._closeButton.setAttribute(\"aria-label\",\"Close popup\"),this._closeButton.innerHTML=\"×\",this._closeButton.addEventListener(\"click\",this._onClose))},n.prototype._onMouseUp=function(t){this._update(t.point)},n.prototype._onMouseMove=function(t){this._update(t.point)},n.prototype._onDrag=function(t){this._update(t.point)},n.prototype._update=function(e){var n=this,i=this._lngLat||this._trackPointer;if(this._map&&i&&this._content&&(this._container||(this._container=r.create(\"div\",\"mapboxgl-popup\",this._map.getContainer()),this._tip=r.create(\"div\",\"mapboxgl-popup-tip\",this._container),this._container.appendChild(this._content),this.options.className&&this.options.className.split(\" \").forEach((function(t){return n._container.classList.add(t)})),this._trackPointer&&this._container.classList.add(\"mapboxgl-popup-track-pointer\")),this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._map.transform.renderWorldCopies&&!this._trackPointer&&(this._lngLat=Oi(this._lngLat,this._pos,this._map.transform)),!this._trackPointer||e)){var a=this._pos=this._trackPointer&&e?e:this._map.project(this._lngLat),o=this.options.anchor,s=function e(r){if(r){if(\"number\"==typeof r){var n=Math.round(Math.sqrt(.5*Math.pow(r,2)));return{center:new t.Point(0,0),top:new t.Point(0,r),\"top-left\":new t.Point(n,n),\"top-right\":new t.Point(-n,n),bottom:new t.Point(0,-r),\"bottom-left\":new t.Point(n,-n),\"bottom-right\":new t.Point(-n,-n),left:new t.Point(r,0),right:new t.Point(-r,0)}}if(r instanceof t.Point||Array.isArray(r)){var i=t.Point.convert(r);return{center:i,top:i,\"top-left\":i,\"top-right\":i,bottom:i,\"bottom-left\":i,\"bottom-right\":i,left:i,right:i}}return{center:t.Point.convert(r.center||[0,0]),top:t.Point.convert(r.top||[0,0]),\"top-left\":t.Point.convert(r[\"top-left\"]||[0,0]),\"top-right\":t.Point.convert(r[\"top-right\"]||[0,0]),bottom:t.Point.convert(r.bottom||[0,0]),\"bottom-left\":t.Point.convert(r[\"bottom-left\"]||[0,0]),\"bottom-right\":t.Point.convert(r[\"bottom-right\"]||[0,0]),left:t.Point.convert(r.left||[0,0]),right:t.Point.convert(r.right||[0,0])}}return e(new t.Point(0,0))}(this.options.offset);if(!o){var l,c=this._container.offsetWidth,u=this._container.offsetHeight;l=a.y+s.bottom.ythis._map.transform.height-u?[\"bottom\"]:[],a.xthis._map.transform.width-c/2&&l.push(\"right\"),o=0===l.length?\"bottom\":l.join(\"-\")}var f=a.add(s[o]).round();r.setTransform(this._container,zi[o]+\" translate(\"+f.x+\"px,\"+f.y+\"px)\"),Di(this._container,o,\"popup\")}},n.prototype._onClose=function(){this.remove()},n}(t.Evented);var Zi={version:t.version,supported:e,setRTLTextPlugin:t.setRTLTextPlugin,getRTLTextPluginStatus:t.getRTLTextPluginStatus,Map:Ei,NavigationControl:Pi,GeolocateControl:Ui,AttributionControl:bi,ScaleControl:Hi,FullscreenControl:Yi,Popup:Xi,Marker:Fi,Style:qe,LngLat:t.LngLat,LngLatBounds:t.LngLatBounds,Point:t.Point,MercatorCoordinate:t.MercatorCoordinate,Evented:t.Evented,config:t.config,prewarm:function(){Bt().acquire(zt)},clearPrewarmedResources:function(){var t=Rt;t&&(t.isPreloaded()&&1===t.numActive()?(t.release(zt),Rt=null):console.warn(\"Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()\"))},get accessToken(){return t.config.ACCESS_TOKEN},set accessToken(e){t.config.ACCESS_TOKEN=e},get baseApiUrl(){return t.config.API_URL},set baseApiUrl(e){t.config.API_URL=e},get workerCount(){return Dt.workerCount},set workerCount(t){Dt.workerCount=t},get maxParallelImageRequests(){return t.config.MAX_PARALLEL_IMAGE_REQUESTS},set maxParallelImageRequests(e){t.config.MAX_PARALLEL_IMAGE_REQUESTS=e},clearStorage:function(e){t.clearTileCache(e)},workerUrl:\"\"};return Zi})),r}))},{}],240:[function(t,e,r){\"use strict\";e.exports=Math.log2||function(t){return Math.log(t)*Math.LOG2E}},{}],241:[function(t,e,r){\"use strict\";e.exports=function(t,e){e||(e=t,t=window);var r=0,i=0,a=0,o={shift:!1,alt:!1,control:!1,meta:!1},s=!1;function l(t){var e=!1;return\"altKey\"in t&&(e=e||t.altKey!==o.alt,o.alt=!!t.altKey),\"shiftKey\"in t&&(e=e||t.shiftKey!==o.shift,o.shift=!!t.shiftKey),\"ctrlKey\"in t&&(e=e||t.ctrlKey!==o.control,o.control=!!t.ctrlKey),\"metaKey\"in t&&(e=e||t.metaKey!==o.meta,o.meta=!!t.metaKey),e}function c(t,s){var c=n.x(s),u=n.y(s);\"buttons\"in s&&(t=0|s.buttons),(t!==r||c!==i||u!==a||l(s))&&(r=0|t,i=c||0,a=u||0,e&&e(r,i,a,o))}function u(t){c(0,t)}function f(){(r||i||a||o.shift||o.alt||o.meta||o.control)&&(i=a=0,r=0,o.shift=o.alt=o.control=o.meta=!1,e&&e(0,0,0,o))}function h(t){l(t)&&e&&e(r,i,a,o)}function p(t){0===n.buttons(t)?c(0,t):c(r,t)}function d(t){c(r|n.buttons(t),t)}function g(t){c(r&~n.buttons(t),t)}function m(){s||(s=!0,t.addEventListener(\"mousemove\",p),t.addEventListener(\"mousedown\",d),t.addEventListener(\"mouseup\",g),t.addEventListener(\"mouseleave\",u),t.addEventListener(\"mouseenter\",u),t.addEventListener(\"mouseout\",u),t.addEventListener(\"mouseover\",u),t.addEventListener(\"blur\",f),t.addEventListener(\"keyup\",h),t.addEventListener(\"keydown\",h),t.addEventListener(\"keypress\",h),t!==window&&(window.addEventListener(\"blur\",f),window.addEventListener(\"keyup\",h),window.addEventListener(\"keydown\",h),window.addEventListener(\"keypress\",h)))}m();var v={element:t};return Object.defineProperties(v,{enabled:{get:function(){return s},set:function(e){e?m():function(){if(!s)return;s=!1,t.removeEventListener(\"mousemove\",p),t.removeEventListener(\"mousedown\",d),t.removeEventListener(\"mouseup\",g),t.removeEventListener(\"mouseleave\",u),t.removeEventListener(\"mouseenter\",u),t.removeEventListener(\"mouseout\",u),t.removeEventListener(\"mouseover\",u),t.removeEventListener(\"blur\",f),t.removeEventListener(\"keyup\",h),t.removeEventListener(\"keydown\",h),t.removeEventListener(\"keypress\",h),t!==window&&(window.removeEventListener(\"blur\",f),window.removeEventListener(\"keyup\",h),window.removeEventListener(\"keydown\",h),window.removeEventListener(\"keypress\",h))}()},enumerable:!0},buttons:{get:function(){return r},enumerable:!0},x:{get:function(){return i},enumerable:!0},y:{get:function(){return a},enumerable:!0},mods:{get:function(){return o},enumerable:!0}}),v};var n=t(\"mouse-event\")},{\"mouse-event\":243}],242:[function(t,e,r){var n={left:0,top:0};e.exports=function(t,e,r){e=e||t.currentTarget||t.srcElement,Array.isArray(r)||(r=[0,0]);var i=t.clientX||0,a=t.clientY||0,o=(s=e,s===window||s===document||s===document.body?n:s.getBoundingClientRect());var s;return r[0]=i-o.left,r[1]=a-o.top,r}},{}],243:[function(t,e,r){\"use strict\";function n(t){return t.target||t.srcElement||window}r.buttons=function(t){if(\"object\"==typeof t){if(\"buttons\"in t)return t.buttons;if(\"which\"in t){if(2===(e=t.which))return 4;if(3===e)return 2;if(e>0)return 1<=0)return 1<2147483647)throw new RangeError('The value \"'+t+'\" is invalid for option \"size\"');var e=new Uint8Array(t);return e.__proto__=a.prototype,e}function a(t,e,r){if(\"number\"==typeof t){if(\"string\"==typeof e)throw new TypeError('The \"string\" argument must be of type string. Received type number');return l(t)}return o(t,e,r)}function o(t,e,r){if(\"string\"==typeof t)return function(t,e){\"string\"==typeof e&&\"\"!==e||(e=\"utf8\");if(!a.isEncoding(e))throw new TypeError(\"Unknown encoding: \"+e);var r=0|f(t,e),n=i(r),o=n.write(t,e);o!==r&&(n=n.slice(0,o));return n}(t,e);if(ArrayBuffer.isView(t))return c(t);if(null==t)throw TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof t);if(B(t,ArrayBuffer)||t&&B(t.buffer,ArrayBuffer))return function(t,e,r){if(e<0||t.byteLength=2147483647)throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+2147483647..toString(16)+\" bytes\");return 0|t}function f(t,e){if(a.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||B(t,ArrayBuffer))return t.byteLength;if(\"string\"!=typeof t)throw new TypeError('The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);var r=t.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;for(var i=!1;;)switch(e){case\"ascii\":case\"latin1\":case\"binary\":return r;case\"utf8\":case\"utf-8\":return D(t).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*r;case\"hex\":return r>>>1;case\"base64\":return R(t).length;default:if(i)return n?-1:D(t).length;e=(\"\"+e).toLowerCase(),i=!0}}function h(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return\"\";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return\"\";if((r>>>=0)<=(e>>>=0))return\"\";for(t||(t=\"utf8\");;)switch(t){case\"hex\":return M(this,e,r);case\"utf8\":case\"utf-8\":return T(this,e,r);case\"ascii\":return k(this,e,r);case\"latin1\":case\"binary\":return A(this,e,r);case\"base64\":return w(this,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return S(this,e,r);default:if(n)throw new TypeError(\"Unknown encoding: \"+t);t=(t+\"\").toLowerCase(),n=!0}}function p(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function d(t,e,r,n,i){if(0===t.length)return-1;if(\"string\"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),N(r=+r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if(\"string\"==typeof e&&(e=a.from(e,n)),a.isBuffer(e))return 0===e.length?-1:g(t,e,r,n,i);if(\"number\"==typeof e)return e&=255,\"function\"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):g(t,[e],r,n,i);throw new TypeError(\"val must be string, number or Buffer\")}function g(t,e,r,n,i){var a,o=1,s=t.length,l=e.length;if(void 0!==n&&(\"ucs2\"===(n=String(n).toLowerCase())||\"ucs-2\"===n||\"utf16le\"===n||\"utf-16le\"===n)){if(t.length<2||e.length<2)return-1;o=2,s/=2,l/=2,r/=2}function c(t,e){return 1===o?t[e]:t.readUInt16BE(e*o)}if(i){var u=-1;for(a=r;as&&(r=s-l),a=r;a>=0;a--){for(var f=!0,h=0;hi&&(n=i):n=i;var a=e.length;n>a/2&&(n=a/2);for(var o=0;o>8,i=r%256,a.push(i),a.push(n);return a}(e,t.length-r),t,r,n)}function w(t,r,n){return 0===r&&n===t.length?e.fromByteArray(t):e.fromByteArray(t.slice(r,n))}function T(t,e,r){r=Math.min(t.length,r);for(var n=[],i=e;i239?4:c>223?3:c>191?2:1;if(i+f<=r)switch(f){case 1:c<128&&(u=c);break;case 2:128==(192&(a=t[i+1]))&&(l=(31&c)<<6|63&a)>127&&(u=l);break;case 3:a=t[i+1],o=t[i+2],128==(192&a)&&128==(192&o)&&(l=(15&c)<<12|(63&a)<<6|63&o)>2047&&(l<55296||l>57343)&&(u=l);break;case 4:a=t[i+1],o=t[i+2],s=t[i+3],128==(192&a)&&128==(192&o)&&128==(192&s)&&(l=(15&c)<<18|(63&a)<<12|(63&o)<<6|63&s)>65535&&l<1114112&&(u=l)}null===u?(u=65533,f=1):u>65535&&(u-=65536,n.push(u>>>10&1023|55296),u=56320|1023&u),n.push(u),i+=f}return function(t){var e=t.length;if(e<=4096)return String.fromCharCode.apply(String,t);var r=\"\",n=0;for(;ne&&(t+=\" ... \"),\"\"},a.prototype.compare=function(t,e,r,n,i){if(B(t,Uint8Array)&&(t=a.from(t,t.offset,t.byteLength)),!a.isBuffer(t))throw new TypeError('The \"target\" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError(\"out of range index\");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(this===t)return 0;for(var o=(i>>>=0)-(n>>>=0),s=(r>>>=0)-(e>>>=0),l=Math.min(o,s),c=this.slice(n,i),u=t.slice(e,r),f=0;f>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n=\"utf8\")):(n=r,r=void 0)}var i=this.length-e;if((void 0===r||r>i)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");n||(n=\"utf8\");for(var a=!1;;)switch(n){case\"hex\":return m(this,t,e,r);case\"utf8\":case\"utf-8\":return v(this,t,e,r);case\"ascii\":return y(this,t,e,r);case\"latin1\":case\"binary\":return x(this,t,e,r);case\"base64\":return b(this,t,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return _(this,t,e,r);default:if(a)throw new TypeError(\"Unknown encoding: \"+n);n=(\"\"+n).toLowerCase(),a=!0}},a.prototype.toJSON=function(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};function k(t,e,r){var n=\"\";r=Math.min(t.length,r);for(var i=e;in)&&(r=n);for(var i=\"\",a=e;ar)throw new RangeError(\"Trying to access beyond buffer length\")}function L(t,e,r,n,i,o){if(!a.isBuffer(t))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError(\"Index out of range\")}function C(t,e,r,n,i,a){if(r+n>t.length)throw new RangeError(\"Index out of range\");if(r<0)throw new RangeError(\"Index out of range\")}function P(t,e,r,i,a){return e=+e,r>>>=0,a||C(t,0,r,4),n.write(t,e,r,i,23,4),r+4}function I(t,e,r,i,a){return e=+e,r>>>=0,a||C(t,0,r,8),n.write(t,e,r,i,52,8),r+8}a.prototype.slice=function(t,e){var r=this.length;(t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e>>=0,e>>>=0,r||E(t,e,this.length);for(var n=this[t],i=1,a=0;++a>>=0,e>>>=0,r||E(t,e,this.length);for(var n=this[t+--e],i=1;e>0&&(i*=256);)n+=this[t+--e]*i;return n},a.prototype.readUInt8=function(t,e){return t>>>=0,e||E(t,1,this.length),this[t]},a.prototype.readUInt16LE=function(t,e){return t>>>=0,e||E(t,2,this.length),this[t]|this[t+1]<<8},a.prototype.readUInt16BE=function(t,e){return t>>>=0,e||E(t,2,this.length),this[t]<<8|this[t+1]},a.prototype.readUInt32LE=function(t,e){return t>>>=0,e||E(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},a.prototype.readUInt32BE=function(t,e){return t>>>=0,e||E(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},a.prototype.readIntLE=function(t,e,r){t>>>=0,e>>>=0,r||E(t,e,this.length);for(var n=this[t],i=1,a=0;++a=(i*=128)&&(n-=Math.pow(2,8*e)),n},a.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||E(t,e,this.length);for(var n=e,i=1,a=this[t+--n];n>0&&(i*=256);)a+=this[t+--n]*i;return a>=(i*=128)&&(a-=Math.pow(2,8*e)),a},a.prototype.readInt8=function(t,e){return t>>>=0,e||E(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},a.prototype.readInt16LE=function(t,e){t>>>=0,e||E(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt16BE=function(t,e){t>>>=0,e||E(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt32LE=function(t,e){return t>>>=0,e||E(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},a.prototype.readInt32BE=function(t,e){return t>>>=0,e||E(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},a.prototype.readFloatLE=function(t,e){return t>>>=0,e||E(t,4,this.length),n.read(this,t,!0,23,4)},a.prototype.readFloatBE=function(t,e){return t>>>=0,e||E(t,4,this.length),n.read(this,t,!1,23,4)},a.prototype.readDoubleLE=function(t,e){return t>>>=0,e||E(t,8,this.length),n.read(this,t,!0,52,8)},a.prototype.readDoubleBE=function(t,e){return t>>>=0,e||E(t,8,this.length),n.read(this,t,!1,52,8)},a.prototype.writeUIntLE=function(t,e,r,n){(t=+t,e>>>=0,r>>>=0,n)||L(this,t,e,r,Math.pow(2,8*r)-1,0);var i=1,a=0;for(this[e]=255&t;++a>>=0,r>>>=0,n)||L(this,t,e,r,Math.pow(2,8*r)-1,0);var i=r-1,a=1;for(this[e+i]=255&t;--i>=0&&(a*=256);)this[e+i]=t/a&255;return e+r},a.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,1,255,0),this[e]=255&t,e+1},a.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},a.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},a.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},a.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},a.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var i=Math.pow(2,8*r-1);L(this,t,e,r,i-1,-i)}var a=0,o=1,s=0;for(this[e]=255&t;++a>0)-s&255;return e+r},a.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var i=Math.pow(2,8*r-1);L(this,t,e,r,i-1,-i)}var a=r-1,o=1,s=0;for(this[e+a]=255&t;--a>=0&&(o*=256);)t<0&&0===s&&0!==this[e+a+1]&&(s=1),this[e+a]=(t/o>>0)-s&255;return e+r},a.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},a.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},a.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},a.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},a.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},a.prototype.writeFloatLE=function(t,e,r){return P(this,t,e,!0,r)},a.prototype.writeFloatBE=function(t,e,r){return P(this,t,e,!1,r)},a.prototype.writeDoubleLE=function(t,e,r){return I(this,t,e,!0,r)},a.prototype.writeDoubleBE=function(t,e,r){return I(this,t,e,!1,r)},a.prototype.copy=function(t,e,r,n){if(!a.isBuffer(t))throw new TypeError(\"argument should be a Buffer\");if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n=this.length)throw new RangeError(\"Index out of range\");if(n<0)throw new RangeError(\"sourceEnd out of bounds\");n>this.length&&(n=this.length),t.length-e=0;--o)t[o+e]=this[o+r];else Uint8Array.prototype.set.call(t,this.subarray(r,n),e);return i},a.prototype.fill=function(t,e,r,n){if(\"string\"==typeof t){if(\"string\"==typeof e?(n=e,e=0,r=this.length):\"string\"==typeof r&&(n=r,r=this.length),void 0!==n&&\"string\"!=typeof n)throw new TypeError(\"encoding must be a string\");if(\"string\"==typeof n&&!a.isEncoding(n))throw new TypeError(\"Unknown encoding: \"+n);if(1===t.length){var i=t.charCodeAt(0);(\"utf8\"===n&&i<128||\"latin1\"===n)&&(t=i)}}else\"number\"==typeof t&&(t&=255);if(e<0||this.length>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),\"number\"==typeof t)for(o=e;o55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&a.push(239,191,189);continue}if(o+1===n){(e-=3)>-1&&a.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&a.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&a.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;a.push(r)}else if(r<2048){if((e-=2)<0)break;a.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;a.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error(\"Invalid code point\");if((e-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return a}function R(t){return e.toByteArray(function(t){if((t=(t=t.split(\"=\")[0]).trim().replace(O,\"\")).length<2)return\"\";for(;t.length%4!=0;)t+=\"=\";return t}(t))}function F(t,e,r,n){for(var i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function B(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function N(t){return t!=t}}).call(this)}).call(this,t(\"buffer\").Buffer)},{\"base64-js\":79,buffer:85,ieee754:230}],86:[function(t,e,r){e.exports=function(t,e,r){return er?r:t:te?e:t}},{}],87:[function(t,e,r){\"use strict\";var n=t(\"clamp\");function i(t,e){null==e&&(e=!0);var r=t[0],i=t[1],a=t[2],o=t[3];return null==o&&(o=e?1:255),e&&(r*=255,i*=255,a*=255,o*=255),16777216*(r=255&n(r,0,255))+((i=255&n(i,0,255))<<16)+((a=255&n(a,0,255))<<8)+(o=255&n(o,0,255))}e.exports=i,e.exports.to=i,e.exports.from=function(t,e){var r=(t=+t)>>>24,n=(16711680&t)>>>16,i=(65280&t)>>>8,a=255&t;return!1===e?[r,n,i,a]:[r/255,n/255,i/255,a/255]}},{clamp:86}],88:[function(t,e,r){\"use strict\";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},{}],89:[function(t,e,r){\"use strict\";var n=t(\"color-rgba\"),i=t(\"clamp\"),a=t(\"dtype\");e.exports=function(t,e){\"float\"!==e&&e||(e=\"array\"),\"uint\"===e&&(e=\"uint8\"),\"uint_clamped\"===e&&(e=\"uint8_clamped\");var r=new(a(e))(4),o=\"uint8\"!==e&&\"uint8_clamped\"!==e;return t.length&&\"string\"!=typeof t||((t=n(t))[0]/=255,t[1]/=255,t[2]/=255),function(t){return t instanceof Uint8Array||t instanceof Uint8ClampedArray||!!(Array.isArray(t)&&(t[0]>1||0===t[0])&&(t[1]>1||0===t[1])&&(t[2]>1||0===t[2])&&(!t[3]||t[3]>1))}(t)?(r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=null!=t[3]?t[3]:255,o&&(r[0]/=255,r[1]/=255,r[2]/=255,r[3]/=255),r):(o?(r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=null!=t[3]?t[3]:1):(r[0]=i(Math.floor(255*t[0]),0,255),r[1]=i(Math.floor(255*t[1]),0,255),r[2]=i(Math.floor(255*t[2]),0,255),r[3]=null==t[3]?255:i(Math.floor(255*t[3]),0,255)),r)}},{clamp:86,\"color-rgba\":91,dtype:127}],90:[function(t,e,r){(function(r){(function(){\"use strict\";var n=t(\"color-name\"),i=t(\"is-plain-obj\"),a=t(\"defined\");e.exports=function(t){var e,s,l=[],c=1;if(\"string\"==typeof t)if(n[t])l=n[t].slice(),s=\"rgb\";else if(\"transparent\"===t)c=0,s=\"rgb\",l=[0,0,0];else if(/^#[A-Fa-f0-9]+$/.test(t)){var u=(p=t.slice(1)).length;c=1,u<=4?(l=[parseInt(p[0]+p[0],16),parseInt(p[1]+p[1],16),parseInt(p[2]+p[2],16)],4===u&&(c=parseInt(p[3]+p[3],16)/255)):(l=[parseInt(p[0]+p[1],16),parseInt(p[2]+p[3],16),parseInt(p[4]+p[5],16)],8===u&&(c=parseInt(p[6]+p[7],16)/255)),l[0]||(l[0]=0),l[1]||(l[1]=0),l[2]||(l[2]=0),s=\"rgb\"}else if(e=/^((?:rgb|hs[lvb]|hwb|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms)a?)\\s*\\(([^\\)]*)\\)/.exec(t)){var f=e[1],h=\"rgb\"===f,p=f.replace(/a$/,\"\");s=p;u=\"cmyk\"===p?4:\"gray\"===p?1:3;l=e[2].trim().split(/\\s*,\\s*/).map((function(t,e){if(/%$/.test(t))return e===u?parseFloat(t)/100:\"rgb\"===p?255*parseFloat(t)/100:parseFloat(t);if(\"h\"===p[e]){if(/deg$/.test(t))return parseFloat(t);if(void 0!==o[t])return o[t]}return parseFloat(t)})),f===p&&l.push(1),c=h||void 0===l[u]?1:l[u],l=l.slice(0,u)}else t.length>10&&/[0-9](?:\\s|\\/)/.test(t)&&(l=t.match(/([0-9]+)/g).map((function(t){return parseFloat(t)})),s=t.match(/([a-z])/gi).join(\"\").toLowerCase());else if(isNaN(t))if(i(t)){var d=a(t.r,t.red,t.R,null);null!==d?(s=\"rgb\",l=[d,a(t.g,t.green,t.G),a(t.b,t.blue,t.B)]):(s=\"hsl\",l=[a(t.h,t.hue,t.H),a(t.s,t.saturation,t.S),a(t.l,t.lightness,t.L,t.b,t.brightness)]),c=a(t.a,t.alpha,t.opacity,1),null!=t.opacity&&(c/=100)}else(Array.isArray(t)||r.ArrayBuffer&&ArrayBuffer.isView&&ArrayBuffer.isView(t))&&(l=[t[0],t[1],t[2]],s=\"rgb\",c=4===t.length?t[3]:1);else s=\"rgb\",l=[t>>>16,(65280&t)>>>8,255&t];return{space:s,values:l,alpha:c}};var o={red:0,orange:60,yellow:120,green:180,blue:240,purple:300}}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"color-name\":88,defined:124,\"is-plain-obj\":236}],91:[function(t,e,r){\"use strict\";var n=t(\"color-parse\"),i=t(\"color-space/hsl\"),a=t(\"clamp\");e.exports=function(t){var e,r=n(t);return r.space?((e=Array(3))[0]=a(r.values[0],0,255),e[1]=a(r.values[1],0,255),e[2]=a(r.values[2],0,255),\"h\"===r.space[0]&&(e=i.rgb(e)),e.push(a(r.alpha,0,1)),e):[]}},{clamp:86,\"color-parse\":90,\"color-space/hsl\":92}],92:[function(t,e,r){\"use strict\";var n=t(\"./rgb\");e.exports={name:\"hsl\",min:[0,0,0],max:[360,100,100],channel:[\"hue\",\"saturation\",\"lightness\"],alias:[\"HSL\"],rgb:function(t){var e,r,n,i,a,o=t[0]/360,s=t[1]/100,l=t[2]/100;if(0===s)return[a=255*l,a,a];e=2*l-(r=l<.5?l*(1+s):l+s-l*s),i=[0,0,0];for(var c=0;c<3;c++)(n=o+1/3*-(c-1))<0?n++:n>1&&n--,a=6*n<1?e+6*(r-e)*n:2*n<1?r:3*n<2?e+(r-e)*(2/3-n)*6:e,i[c]=255*a;return i}},n.hsl=function(t){var e,r,n=t[0]/255,i=t[1]/255,a=t[2]/255,o=Math.min(n,i,a),s=Math.max(n,i,a),l=s-o;return s===o?e=0:n===s?e=(i-a)/l:i===s?e=2+(a-n)/l:a===s&&(e=4+(n-i)/l),(e=Math.min(60*e,360))<0&&(e+=360),r=(o+s)/2,[e,100*(s===o?0:r<=.5?l/(s+o):l/(2-s-o)),100*r]}},{\"./rgb\":93}],93:[function(t,e,r){\"use strict\";e.exports={name:\"rgb\",min:[0,0,0],max:[255,255,255],channel:[\"red\",\"green\",\"blue\"],alias:[\"RGB\"]}},{}],94:[function(t,e,r){e.exports={AFG:\"afghan\",ALA:\"\\\\b\\\\wland\",ALB:\"albania\",DZA:\"algeria\",ASM:\"^(?=.*americ).*samoa\",AND:\"andorra\",AGO:\"angola\",AIA:\"anguill?a\",ATA:\"antarctica\",ATG:\"antigua\",ARG:\"argentin\",ARM:\"armenia\",ABW:\"^(?!.*bonaire).*\\\\baruba\",AUS:\"australia\",AUT:\"^(?!.*hungary).*austria|\\\\baustri.*\\\\bemp\",AZE:\"azerbaijan\",BHS:\"bahamas\",BHR:\"bahrain\",BGD:\"bangladesh|^(?=.*east).*paki?stan\",BRB:\"barbados\",BLR:\"belarus|byelo\",BEL:\"^(?!.*luxem).*belgium\",BLZ:\"belize|^(?=.*british).*honduras\",BEN:\"benin|dahome\",BMU:\"bermuda\",BTN:\"bhutan\",BOL:\"bolivia\",BES:\"^(?=.*bonaire).*eustatius|^(?=.*carib).*netherlands|\\\\bbes.?islands\",BIH:\"herzegovina|bosnia\",BWA:\"botswana|bechuana\",BVT:\"bouvet\",BRA:\"brazil\",IOT:\"british.?indian.?ocean\",BRN:\"brunei\",BGR:\"bulgaria\",BFA:\"burkina|\\\\bfaso|upper.?volta\",BDI:\"burundi\",CPV:\"verde\",KHM:\"cambodia|kampuchea|khmer\",CMR:\"cameroon\",CAN:\"canada\",CYM:\"cayman\",CALF:\"\\\\bcentral.african.republic\",TCD:\"\\\\bchad\",CHL:\"\\\\bchile\",CHN:\"^(?!.*\\\\bmac)(?!.*\\\\bhong)(?!.*\\\\btai)(?!.*\\\\brep).*china|^(?=.*peo)(?=.*rep).*china\",CXR:\"christmas\",CCK:\"\\\\bcocos|keeling\",COL:\"colombia\",COM:\"comoro\",COG:\"^(?!.*\\\\bdem)(?!.*\\\\bd[\\\\.]?r)(?!.*kinshasa)(?!.*zaire)(?!.*belg)(?!.*l.opoldville)(?!.*free).*\\\\bcongo\",COK:\"\\\\bcook\",CRI:\"costa.?rica\",CIV:\"ivoire|ivory\",HRV:\"croatia\",CUB:\"\\\\bcuba\",CUW:\"^(?!.*bonaire).*\\\\bcura(c|\\xe7)ao\",CYP:\"cyprus\",CSK:\"czechoslovakia\",CZE:\"^(?=.*rep).*czech|czechia|bohemia\",COD:\"\\\\bdem.*congo|congo.*\\\\bdem|congo.*\\\\bd[\\\\.]?r|\\\\bd[\\\\.]?r.*congo|belgian.?congo|congo.?free.?state|kinshasa|zaire|l.opoldville|drc|droc|rdc\",DNK:\"denmark\",DJI:\"djibouti\",DMA:\"dominica(?!n)\",DOM:\"dominican.rep\",ECU:\"ecuador\",EGY:\"egypt\",SLV:\"el.?salvador\",GNQ:\"guine.*eq|eq.*guine|^(?=.*span).*guinea\",ERI:\"eritrea\",EST:\"estonia\",ETH:\"ethiopia|abyssinia\",FLK:\"falkland|malvinas\",FRO:\"faroe|faeroe\",FJI:\"fiji\",FIN:\"finland\",FRA:\"^(?!.*\\\\bdep)(?!.*martinique).*france|french.?republic|\\\\bgaul\",GUF:\"^(?=.*french).*guiana\",PYF:\"french.?polynesia|tahiti\",ATF:\"french.?southern\",GAB:\"gabon\",GMB:\"gambia\",GEO:\"^(?!.*south).*georgia\",DDR:\"german.?democratic.?republic|democratic.?republic.*germany|east.germany\",DEU:\"^(?!.*east).*germany|^(?=.*\\\\bfed.*\\\\brep).*german\",GHA:\"ghana|gold.?coast\",GIB:\"gibraltar\",GRC:\"greece|hellenic|hellas\",GRL:\"greenland\",GRD:\"grenada\",GLP:\"guadeloupe\",GUM:\"\\\\bguam\",GTM:\"guatemala\",GGY:\"guernsey\",GIN:\"^(?!.*eq)(?!.*span)(?!.*bissau)(?!.*portu)(?!.*new).*guinea\",GNB:\"bissau|^(?=.*portu).*guinea\",GUY:\"guyana|british.?guiana\",HTI:\"haiti\",HMD:\"heard.*mcdonald\",VAT:\"holy.?see|vatican|papal.?st\",HND:\"^(?!.*brit).*honduras\",HKG:\"hong.?kong\",HUN:\"^(?!.*austr).*hungary\",ISL:\"iceland\",IND:\"india(?!.*ocea)\",IDN:\"indonesia\",IRN:\"\\\\biran|persia\",IRQ:\"\\\\biraq|mesopotamia\",IRL:\"(^ireland)|(^republic.*ireland)\",IMN:\"^(?=.*isle).*\\\\bman\",ISR:\"israel\",ITA:\"italy\",JAM:\"jamaica\",JPN:\"japan\",JEY:\"jersey\",JOR:\"jordan\",KAZ:\"kazak\",KEN:\"kenya|british.?east.?africa|east.?africa.?prot\",KIR:\"kiribati\",PRK:\"^(?=.*democrat|people|north|d.*p.*.r).*\\\\bkorea|dprk|korea.*(d.*p.*r)\",KWT:\"kuwait\",KGZ:\"kyrgyz|kirghiz\",LAO:\"\\\\blaos?\\\\b\",LVA:\"latvia\",LBN:\"lebanon\",LSO:\"lesotho|basuto\",LBR:\"liberia\",LBY:\"libya\",LIE:\"liechtenstein\",LTU:\"lithuania\",LUX:\"^(?!.*belg).*luxem\",MAC:\"maca(o|u)\",MDG:\"madagascar|malagasy\",MWI:\"malawi|nyasa\",MYS:\"malaysia\",MDV:\"maldive\",MLI:\"\\\\bmali\\\\b\",MLT:\"\\\\bmalta\",MHL:\"marshall\",MTQ:\"martinique\",MRT:\"mauritania\",MUS:\"mauritius\",MYT:\"\\\\bmayotte\",MEX:\"\\\\bmexic\",FSM:\"fed.*micronesia|micronesia.*fed\",MCO:\"monaco\",MNG:\"mongolia\",MNE:\"^(?!.*serbia).*montenegro\",MSR:\"montserrat\",MAR:\"morocco|\\\\bmaroc\",MOZ:\"mozambique\",MMR:\"myanmar|burma\",NAME:\"namibia\",NRU:\"nauru\",NPL:\"nepal\",NLD:\"^(?!.*\\\\bant)(?!.*\\\\bcarib).*netherlands\",ANT:\"^(?=.*\\\\bant).*(nether|dutch)\",NCL:\"new.?caledonia\",NZL:\"new.?zealand\",NIC:\"nicaragua\",NER:\"\\\\bniger(?!ia)\",NGA:\"nigeria\",NIU:\"niue\",NFK:\"norfolk\",MNP:\"mariana\",NOR:\"norway\",OMN:\"\\\\boman|trucial\",PAK:\"^(?!.*east).*paki?stan\",PLW:\"palau\",PSE:\"palestin|\\\\bgaza|west.?bank\",PAN:\"panama\",PNG:\"papua|new.?guinea\",PRY:\"paraguay\",PER:\"peru\",PHL:\"philippines\",PCN:\"pitcairn\",POL:\"poland\",PRT:\"portugal\",PRI:\"puerto.?rico\",QAT:\"qatar\",KOR:\"^(?!.*d.*p.*r)(?!.*democrat)(?!.*people)(?!.*north).*\\\\bkorea(?!.*d.*p.*r)\",MDA:\"moldov|b(a|e)ssarabia\",REU:\"r(e|\\xe9)union\",ROU:\"r(o|u|ou)mania\",RUS:\"\\\\brussia|soviet.?union|u\\\\.?s\\\\.?s\\\\.?r|socialist.?republics\",RWA:\"rwanda\",BLM:\"barth(e|\\xe9)lemy\",SHN:\"helena\",KNA:\"kitts|\\\\bnevis\",LCA:\"\\\\blucia\",MAF:\"^(?=.*collectivity).*martin|^(?=.*france).*martin(?!ique)|^(?=.*french).*martin(?!ique)\",SPM:\"miquelon\",VCT:\"vincent\",WSM:\"^(?!.*amer).*samoa\",SMR:\"san.?marino\",STP:\"\\\\bs(a|\\xe3)o.?tom(e|\\xe9)\",SAU:\"\\\\bsa\\\\w*.?arabia\",SEN:\"senegal\",SRB:\"^(?!.*monte).*serbia\",SYC:\"seychell\",SLE:\"sierra\",SGP:\"singapore\",SXM:\"^(?!.*martin)(?!.*saba).*maarten\",SVK:\"^(?!.*cze).*slovak\",SVN:\"slovenia\",SLB:\"solomon\",SOME:\"somali\",ZAF:\"south.africa|s\\\\\\\\..?africa\",SGS:\"south.?georgia|sandwich\",SSD:\"\\\\bs\\\\w*.?sudan\",ESP:\"spain\",LKA:\"sri.?lanka|ceylon\",SDN:\"^(?!.*\\\\bs(?!u)).*sudan\",SUR:\"surinam|dutch.?guiana\",SJM:\"svalbard\",SWZ:\"swaziland\",SWE:\"sweden\",CHE:\"switz|swiss\",SYR:\"syria\",TWN:\"taiwan|taipei|formosa|^(?!.*peo)(?=.*rep).*china\",TJK:\"tajik\",THA:\"thailand|\\\\bsiam\",MKD:\"macedonia|fyrom\",TLS:\"^(?=.*leste).*timor|^(?=.*east).*timor\",TGO:\"togo\",TKL:\"tokelau\",TON:\"tonga\",TTO:\"trinidad|tobago\",TUN:\"tunisia\",TUR:\"turkey\",TKM:\"turkmen\",TCA:\"turks\",TUV:\"tuvalu\",UGA:\"uganda\",UKR:\"ukrain\",ARE:\"emirates|^u\\\\.?a\\\\.?e\\\\.?$|united.?arab.?em\",GBR:\"united.?kingdom|britain|^u\\\\.?k\\\\.?$\",TZA:\"tanzania\",USA:\"united.?states\\\\b(?!.*islands)|\\\\bu\\\\.?s\\\\.?a\\\\.?\\\\b|^\\\\s*u\\\\.?s\\\\.?\\\\b(?!.*islands)\",UMI:\"minor.?outlying.?is\",URY:\"uruguay\",UZB:\"uzbek\",VUT:\"vanuatu|new.?hebrides\",VEN:\"venezuela\",VNM:\"^(?!.*republic).*viet.?name|^(?=.*socialist).*viet.?name\",VGB:\"^(?=.*\\\\bu\\\\.?\\\\s?k).*virgin|^(?=.*brit).*virgin|^(?=.*kingdom).*virgin\",VIR:\"^(?=.*\\\\bu\\\\.?\\\\s?s).*virgin|^(?=.*states).*virgin\",WLF:\"futuna|wallis\",ESH:\"western.sahara\",YEM:\"^(?!.*arab)(?!.*north)(?!.*sana)(?!.*peo)(?!.*dem)(?!.*south)(?!.*aden)(?!.*\\\\bp\\\\.?d\\\\.?r).*yemen\",YMD:\"^(?=.*peo).*yemen|^(?!.*rep)(?=.*dem).*yemen|^(?=.*south).*yemen|^(?=.*aden).*yemen|^(?=.*\\\\bp\\\\.?d\\\\.?r).*yemen\",YUG:\"yugoslavia\",ZMB:\"zambia|northern.?rhodesia\",EAZ:\"zanzibar\",ZWE:\"zimbabwe|^(?!.*northern).*rhodesia\"}},{}],95:[function(t,e,r){e.exports=[\"xx-small\",\"x-small\",\"small\",\"medium\",\"large\",\"x-large\",\"xx-large\",\"larger\",\"smaller\"]},{}],96:[function(t,e,r){e.exports=[\"normal\",\"condensed\",\"semi-condensed\",\"extra-condensed\",\"ultra-condensed\",\"expanded\",\"semi-expanded\",\"extra-expanded\",\"ultra-expanded\"]},{}],97:[function(t,e,r){e.exports=[\"normal\",\"italic\",\"oblique\"]},{}],98:[function(t,e,r){e.exports=[\"normal\",\"bold\",\"bolder\",\"lighter\",\"100\",\"200\",\"300\",\"400\",\"500\",\"600\",\"700\",\"800\",\"900\"]},{}],99:[function(t,e,r){\"use strict\";e.exports={parse:t(\"./parse\"),stringify:t(\"./stringify\")}},{\"./parse\":101,\"./stringify\":102}],100:[function(t,e,r){\"use strict\";var n=t(\"css-font-size-keywords\");e.exports={isSize:function(t){return/^[\\d\\.]/.test(t)||-1!==t.indexOf(\"/\")||-1!==n.indexOf(t)}}},{\"css-font-size-keywords\":95}],101:[function(t,e,r){\"use strict\";var n=t(\"unquote\"),i=t(\"css-global-keywords\"),a=t(\"css-system-font-keywords\"),o=t(\"css-font-weight-keywords\"),s=t(\"css-font-style-keywords\"),l=t(\"css-font-stretch-keywords\"),c=t(\"string-split-by\"),u=t(\"./lib/util\").isSize;e.exports=h;var f=h.cache={};function h(t){if(\"string\"!=typeof t)throw new Error(\"Font argument must be a string.\");if(f[t])return f[t];if(\"\"===t)throw new Error(\"Cannot parse an empty string.\");if(-1!==a.indexOf(t))return f[t]={system:t};for(var e,r={style:\"normal\",variant:\"normal\",weight:\"normal\",stretch:\"normal\",lineHeight:\"normal\",size:\"1rem\",family:[\"serif\"]},h=c(t,/\\s+/);e=h.shift();){if(-1!==i.indexOf(e))return[\"style\",\"variant\",\"weight\",\"stretch\"].forEach((function(t){r[t]=e})),f[t]=r;if(-1===s.indexOf(e))if(\"normal\"!==e&&\"small-caps\"!==e)if(-1===l.indexOf(e)){if(-1===o.indexOf(e)){if(u(e)){var d=c(e,\"/\");if(r.size=d[0],null!=d[1]?r.lineHeight=p(d[1]):\"/\"===h[0]&&(h.shift(),r.lineHeight=p(h.shift())),!h.length)throw new Error(\"Missing required font-family.\");return r.family=c(h.join(\" \"),/\\s*,\\s*/).map(n),f[t]=r}throw new Error(\"Unknown or unsupported font token: \"+e)}r.weight=e}else r.stretch=e;else r.variant=e;else r.style=e}throw new Error(\"Missing required font-size.\")}function p(t){var e=parseFloat(t);return e.toString()===t?e:t}},{\"./lib/util\":100,\"css-font-stretch-keywords\":96,\"css-font-style-keywords\":97,\"css-font-weight-keywords\":98,\"css-global-keywords\":103,\"css-system-font-keywords\":104,\"string-split-by\":305,unquote:328}],102:[function(t,e,r){\"use strict\";var n=t(\"pick-by-alias\"),i=t(\"./lib/util\").isSize,a=g(t(\"css-global-keywords\")),o=g(t(\"css-system-font-keywords\")),s=g(t(\"css-font-weight-keywords\")),l=g(t(\"css-font-style-keywords\")),c=g(t(\"css-font-stretch-keywords\")),u={normal:1,\"small-caps\":1},f={serif:1,\"sans-serif\":1,monospace:1,cursive:1,fantasy:1,\"system-ui\":1},h=\"1rem\",p=\"serif\";function d(t,e){if(t&&!e[t]&&!a[t])throw Error(\"Unknown keyword `\"+t+\"`\");return t}function g(t){for(var e={},r=0;re?1:t>=e?0:NaN}function r(t){var r;return 1===t.length&&(r=t,t=function(t,n){return e(r(t),n)}),{left:function(e,r,n,i){for(null==n&&(n=0),null==i&&(i=e.length);n>>1;t(e[a],r)<0?n=a+1:i=a}return n},right:function(e,r,n,i){for(null==n&&(n=0),null==i&&(i=e.length);n>>1;t(e[a],r)>0?i=a:n=a+1}return n}}}var n=r(e),i=n.right,a=n.left;function o(t,e){return[t,e]}function s(t){return null===t?NaN:+t}function l(t,e){var r,n,i=t.length,a=0,o=-1,l=0,c=0;if(null==e)for(;++o1)return c/(a-1)}function c(t,e){var r=l(t,e);return r?Math.sqrt(r):r}function u(t,e){var r,n,i,a=t.length,o=-1;if(null==e){for(;++o=r)for(n=i=r;++or&&(n=r),i=r)for(n=i=r;++or&&(n=r),i=0?(a>=v?10:a>=y?5:a>=x?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(a>=v?10:a>=y?5:a>=x?2:1)}function _(t,e,r){var n=Math.abs(e-t)/Math.max(0,r),i=Math.pow(10,Math.floor(Math.log(n)/Math.LN10)),a=n/i;return a>=v?i*=10:a>=y?i*=5:a>=x&&(i*=2),e=1)return+r(t[n-1],n-1,t);var n,i=(n-1)*e,a=Math.floor(i),o=+r(t[a],a,t);return o+(+r(t[a+1],a+1,t)-o)*(i-a)}}function k(t,e){var r,n,i=t.length,a=-1;if(null==e){for(;++a=r)for(n=r;++ar&&(n=r)}else for(;++a=r)for(n=r;++ar&&(n=r);return n}function A(t){if(!(i=t.length))return[];for(var e=-1,r=k(t,M),n=new Array(r);++et?1:e>=t?0:NaN},t.deviation=c,t.extent=u,t.histogram=function(){var t=g,e=u,r=w;function n(n){var a,o,s=n.length,l=new Array(s);for(a=0;af;)h.pop(),--p;var d,g=new Array(p+1);for(a=0;a<=p;++a)(d=g[a]=[]).x0=a>0?h[a-1]:u,d.x1=a=r)for(n=r;++an&&(n=r)}else for(;++a=r)for(n=r;++an&&(n=r);return n},t.mean=function(t,e){var r,n=t.length,i=n,a=-1,o=0;if(null==e)for(;++a=0;)for(e=(n=t[i]).length;--e>=0;)r[--o]=n[e];return r},t.min=k,t.pairs=function(t,e){null==e&&(e=o);for(var r=0,n=t.length-1,i=t[0],a=new Array(n<0?0:n);r0)return[t];if((n=e0)for(t=Math.ceil(t/o),e=Math.floor(e/o),a=new Array(i=Math.ceil(e-t+1));++s=l.length)return null!=t&&n.sort(t),null!=e?e(n):n;for(var s,c,f,h=-1,p=n.length,d=l[i++],g=r(),m=a();++hl.length)return r;var i,a=c[n-1];return null!=e&&n>=l.length?i=r.entries():(i=[],r.each((function(e,r){i.push({key:r,values:t(e,n)})}))),null!=a?i.sort((function(t,e){return a(t.key,e.key)})):i}(u(t,0,a,o),0)},key:function(t){return l.push(t),s},sortKeys:function(t){return c[l.length-1]=t,s},sortValues:function(e){return t=e,s},rollup:function(t){return e=t,s}}},t.set=c,t.map=r,t.keys=function(t){var e=[];for(var r in t)e.push(r);return e},t.values=function(t){var e=[];for(var r in t)e.push(t[r]);return e},t.entries=function(t){var e=[];for(var r in t)e.push({key:r,value:t[r]});return e},Object.defineProperty(t,\"__esModule\",{value:!0})}))},{}],109:[function(t,e,r){!function(t,n){\"object\"==typeof r&&void 0!==e?n(r):n((t=t||self).d3=t.d3||{})}(this,(function(t){\"use strict\";function e(t,e,r){t.prototype=e.prototype=r,r.constructor=t}function r(t,e){var r=Object.create(t.prototype);for(var n in e)r[n]=e[n];return r}function n(){}var i=\"\\\\s*([+-]?\\\\d+)\\\\s*\",a=\"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",o=\"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",s=/^#([0-9a-f]{3,8})$/,l=new RegExp(\"^rgb\\\\(\"+[i,i,i]+\"\\\\)$\"),c=new RegExp(\"^rgb\\\\(\"+[o,o,o]+\"\\\\)$\"),u=new RegExp(\"^rgba\\\\(\"+[i,i,i,a]+\"\\\\)$\"),f=new RegExp(\"^rgba\\\\(\"+[o,o,o,a]+\"\\\\)$\"),h=new RegExp(\"^hsl\\\\(\"+[a,o,o]+\"\\\\)$\"),p=new RegExp(\"^hsla\\\\(\"+[a,o,o,a]+\"\\\\)$\"),d={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function g(){return this.rgb().formatHex()}function m(){return this.rgb().formatRgb()}function v(t){var e,r;return t=(t+\"\").trim().toLowerCase(),(e=s.exec(t))?(r=e[1].length,e=parseInt(e[1],16),6===r?y(e):3===r?new w(e>>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===r?x(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===r?x(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=l.exec(t))?new w(e[1],e[2],e[3],1):(e=c.exec(t))?new w(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=u.exec(t))?x(e[1],e[2],e[3],e[4]):(e=f.exec(t))?x(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=h.exec(t))?M(e[1],e[2]/100,e[3]/100,1):(e=p.exec(t))?M(e[1],e[2]/100,e[3]/100,e[4]):d.hasOwnProperty(t)?y(d[t]):\"transparent\"===t?new w(NaN,NaN,NaN,0):null}function y(t){return new w(t>>16&255,t>>8&255,255&t,1)}function x(t,e,r,n){return n<=0&&(t=e=r=NaN),new w(t,e,r,n)}function b(t){return t instanceof n||(t=v(t)),t?new w((t=t.rgb()).r,t.g,t.b,t.opacity):new w}function _(t,e,r,n){return 1===arguments.length?b(t):new w(t,e,r,null==n?1:n)}function w(t,e,r,n){this.r=+t,this.g=+e,this.b=+r,this.opacity=+n}function T(){return\"#\"+A(this.r)+A(this.g)+A(this.b)}function k(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?\"rgb(\":\"rgba(\")+Math.max(0,Math.min(255,Math.round(this.r)||0))+\", \"+Math.max(0,Math.min(255,Math.round(this.g)||0))+\", \"+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?\")\":\", \"+t+\")\")}function A(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?\"0\":\"\")+t.toString(16)}function M(t,e,r,n){return n<=0?t=e=r=NaN:r<=0||r>=1?t=e=NaN:e<=0&&(t=NaN),new L(t,e,r,n)}function S(t){if(t instanceof L)return new L(t.h,t.s,t.l,t.opacity);if(t instanceof n||(t=v(t)),!t)return new L;if(t instanceof L)return t;var e=(t=t.rgb()).r/255,r=t.g/255,i=t.b/255,a=Math.min(e,r,i),o=Math.max(e,r,i),s=NaN,l=o-a,c=(o+a)/2;return l?(s=e===o?(r-i)/l+6*(r0&&c<1?0:s,new L(s,l,c,t.opacity)}function E(t,e,r,n){return 1===arguments.length?S(t):new L(t,e,r,null==n?1:n)}function L(t,e,r,n){this.h=+t,this.s=+e,this.l=+r,this.opacity=+n}function C(t,e,r){return 255*(t<60?e+(r-e)*t/60:t<180?r:t<240?e+(r-e)*(240-t)/60:e)}e(n,v,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:g,formatHex:g,formatHsl:function(){return S(this).formatHsl()},formatRgb:m,toString:m}),e(w,_,r(n,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new w(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new w(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:T,formatHex:T,formatRgb:k,toString:k})),e(L,E,r(n,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new L(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new L(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*e,i=2*r-n;return new w(C(t>=240?t-240:t+120,i,n),C(t,i,n),C(t<120?t+240:t-120,i,n),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?\"hsl(\":\"hsla(\")+(this.h||0)+\", \"+100*(this.s||0)+\"%, \"+100*(this.l||0)+\"%\"+(1===t?\")\":\", \"+t+\")\")}}));var P=Math.PI/180,I=180/Math.PI,O=6/29,z=3*O*O;function D(t){if(t instanceof F)return new F(t.l,t.a,t.b,t.opacity);if(t instanceof q)return G(t);t instanceof w||(t=b(t));var e,r,n=U(t.r),i=U(t.g),a=U(t.b),o=B((.2225045*n+.7168786*i+.0606169*a)/1);return n===i&&i===a?e=r=o:(e=B((.4360747*n+.3850649*i+.1430804*a)/.96422),r=B((.0139322*n+.0971045*i+.7141733*a)/.82521)),new F(116*o-16,500*(e-o),200*(o-r),t.opacity)}function R(t,e,r,n){return 1===arguments.length?D(t):new F(t,e,r,null==n?1:n)}function F(t,e,r,n){this.l=+t,this.a=+e,this.b=+r,this.opacity=+n}function B(t){return t>.008856451679035631?Math.pow(t,1/3):t/z+4/29}function N(t){return t>O?t*t*t:z*(t-4/29)}function j(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function U(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function V(t){if(t instanceof q)return new q(t.h,t.c,t.l,t.opacity);if(t instanceof F||(t=D(t)),0===t.a&&0===t.b)return new q(NaN,0=0&&(r=t.slice(n+1),t=t.slice(0,n)),t&&!e.hasOwnProperty(t))throw new Error(\"unknown type: \"+t);return{type:t,name:r}}))}function a(t,e){for(var r,n=0,i=t.length;n0)for(var r,n,i=new Array(r),a=0;ah+c||np+c||au.index){var f=h-s.x-s.vx,m=p-s.y-s.vy,v=f*f+m*m;vt.r&&(t.r=t[e].r)}function h(){if(r){var e,i,a=r.length;for(n=new Array(a),e=0;e=c)){(t.data!==r||t.next)&&(0===f&&(d+=(f=o())*f),0===h&&(d+=(h=o())*h),d1?(null==r?u.remove(t):u.set(t,v(r)),e):u.get(t)},find:function(e,r,n){var i,a,o,s,l,c=0,u=t.length;for(null==n?n=1/0:n*=n,c=0;c1?(h.on(t,r),e):h.on(t)}}},t.forceX=function(t){var e,r,n,i=a(.1);function o(t){for(var i,a=0,o=e.length;a1?n[0]+n.slice(2):n,+t.slice(r+1)]}function r(t){return(t=e(Math.abs(t)))?t[1]:NaN}var n,i=/^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;function a(t){if(!(e=i.exec(t)))throw new Error(\"invalid format: \"+t);var e;return new o({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function o(t){this.fill=void 0===t.fill?\" \":t.fill+\"\",this.align=void 0===t.align?\">\":t.align+\"\",this.sign=void 0===t.sign?\"-\":t.sign+\"\",this.symbol=void 0===t.symbol?\"\":t.symbol+\"\",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?\"\":t.type+\"\"}function s(t,r){var n=e(t,r);if(!n)return t+\"\";var i=n[0],a=n[1];return a<0?\"0.\"+new Array(-a).join(\"0\")+i:i.length>a+1?i.slice(0,a+1)+\".\"+i.slice(a+1):i+new Array(a-i.length+2).join(\"0\")}a.prototype=o.prototype,o.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?\"0\":\"\")+(void 0===this.width?\"\":Math.max(1,0|this.width))+(this.comma?\",\":\"\")+(void 0===this.precision?\"\":\".\"+Math.max(0,0|this.precision))+(this.trim?\"~\":\"\")+this.type};var l={\"%\":function(t,e){return(100*t).toFixed(e)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+\"\"},d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString(\"en\").replace(/,/g,\"\"):t.toString(10)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},g:function(t,e){return t.toPrecision(e)},o:function(t){return Math.round(t).toString(8)},p:function(t,e){return s(100*t,e)},r:s,s:function(t,r){var i=e(t,r);if(!i)return t+\"\";var a=i[0],o=i[1],s=o-(n=3*Math.max(-8,Math.min(8,Math.floor(o/3))))+1,l=a.length;return s===l?a:s>l?a+new Array(s-l+1).join(\"0\"):s>0?a.slice(0,s)+\".\"+a.slice(s):\"0.\"+new Array(1-s).join(\"0\")+e(t,Math.max(0,r+s-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}};function c(t){return t}var u,f=Array.prototype.map,h=[\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"\\xb5\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];function p(t){var e,i,o=void 0===t.grouping||void 0===t.thousands?c:(e=f.call(t.grouping,Number),i=t.thousands+\"\",function(t,r){for(var n=t.length,a=[],o=0,s=e[0],l=0;n>0&&s>0&&(l+s+1>r&&(s=Math.max(1,r-l)),a.push(t.substring(n-=s,n+s)),!((l+=s+1)>r));)s=e[o=(o+1)%e.length];return a.reverse().join(i)}),s=void 0===t.currency?\"\":t.currency[0]+\"\",u=void 0===t.currency?\"\":t.currency[1]+\"\",p=void 0===t.decimal?\".\":t.decimal+\"\",d=void 0===t.numerals?c:function(t){return function(e){return e.replace(/[0-9]/g,(function(e){return t[+e]}))}}(f.call(t.numerals,String)),g=void 0===t.percent?\"%\":t.percent+\"\",m=void 0===t.minus?\"-\":t.minus+\"\",v=void 0===t.nan?\"NaN\":t.nan+\"\";function y(t){var e=(t=a(t)).fill,r=t.align,i=t.sign,c=t.symbol,f=t.zero,y=t.width,x=t.comma,b=t.precision,_=t.trim,w=t.type;\"n\"===w?(x=!0,w=\"g\"):l[w]||(void 0===b&&(b=12),_=!0,w=\"g\"),(f||\"0\"===e&&\"=\"===r)&&(f=!0,e=\"0\",r=\"=\");var T=\"$\"===c?s:\"#\"===c&&/[boxX]/.test(w)?\"0\"+w.toLowerCase():\"\",k=\"$\"===c?u:/[%p]/.test(w)?g:\"\",A=l[w],M=/[defgprs%]/.test(w);function S(t){var a,s,l,c=T,u=k;if(\"c\"===w)u=A(t)+u,t=\"\";else{var g=(t=+t)<0||1/t<0;if(t=isNaN(t)?v:A(Math.abs(t),b),_&&(t=function(t){t:for(var e,r=t.length,n=1,i=-1;n0&&(i=0)}return i>0?t.slice(0,i)+t.slice(e+1):t}(t)),g&&0==+t&&\"+\"!==i&&(g=!1),c=(g?\"(\"===i?i:m:\"-\"===i||\"(\"===i?\"\":i)+c,u=(\"s\"===w?h[8+n/3]:\"\")+u+(g&&\"(\"===i?\")\":\"\"),M)for(a=-1,s=t.length;++a(l=t.charCodeAt(a))||l>57){u=(46===l?p+t.slice(a+1):t.slice(a))+u,t=t.slice(0,a);break}}x&&!f&&(t=o(t,1/0));var S=c.length+t.length+u.length,E=S>1)+c+t+u+E.slice(S);break;default:t=E+c+t+u}return d(t)}return b=void 0===b?6:/[gprs]/.test(w)?Math.max(1,Math.min(21,b)):Math.max(0,Math.min(20,b)),S.toString=function(){return t+\"\"},S}return{format:y,formatPrefix:function(t,e){var n=y(((t=a(t)).type=\"f\",t)),i=3*Math.max(-8,Math.min(8,Math.floor(r(e)/3))),o=Math.pow(10,-i),s=h[8+i/3];return function(t){return n(o*t)+s}}}}function d(e){return u=p(e),t.format=u.format,t.formatPrefix=u.formatPrefix,u}d({decimal:\".\",thousands:\",\",grouping:[3],currency:[\"$\",\"\"],minus:\"-\"}),t.FormatSpecifier=o,t.formatDefaultLocale=d,t.formatLocale=p,t.formatSpecifier=a,t.precisionFixed=function(t){return Math.max(0,-r(Math.abs(t)))},t.precisionPrefix=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(r(e)/3)))-r(Math.abs(t)))},t.precisionRound=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,r(e)-r(t))+1},Object.defineProperty(t,\"__esModule\",{value:!0})}))},{}],113:[function(t,e,r){!function(n,i){\"object\"==typeof r&&void 0!==e?i(r,t(\"d3-geo\"),t(\"d3-array\")):i(n.d3=n.d3||{},n.d3,n.d3)}(this,(function(t,e,r){\"use strict\";var n=Math.abs,i=Math.atan,a=Math.atan2,o=Math.cos,s=Math.exp,l=Math.floor,c=Math.log,u=Math.max,f=Math.min,h=Math.pow,p=Math.round,d=Math.sign||function(t){return t>0?1:t<0?-1:0},g=Math.sin,m=Math.tan,v=1e-6,y=Math.PI,x=y/2,b=y/4,_=Math.SQRT1_2,w=L(2),T=L(y),k=2*y,A=180/y,M=y/180;function S(t){return t>1?x:t<-1?-x:Math.asin(t)}function E(t){return t>1?0:t<-1?y:Math.acos(t)}function L(t){return t>0?Math.sqrt(t):0}function C(t){return(s(t)-s(-t))/2}function P(t){return(s(t)+s(-t))/2}function I(t){var e=m(t/2),r=2*c(o(t/2))/(e*e);function i(t,e){var n=o(t),i=o(e),a=g(e),s=i*n,l=-((1-s?c((1+s)/2)/(1-s):-.5)+r/(1+s));return[l*i*g(t),l*a]}return i.invert=function(e,i){var s,l=L(e*e+i*i),u=-t/2,f=50;if(!l)return[0,0];do{var h=u/2,p=o(h),d=g(h),m=d/p,y=-c(n(p));u-=s=(2/m*y-r*m-l)/(-y/(d*d)+1-r/(2*p*p))*(p<0?.7:1)}while(n(s)>v&&--f>0);var x=g(u);return[a(e*x,l*o(u)),S(i*x/l)]},i}function O(t,e){var r=o(e),n=function(t){return t?t/Math.sin(t):1}(E(r*o(t/=2)));return[2*r*g(t)*n,g(e)*n]}function z(t){var e=g(t),r=o(t),i=t>=0?1:-1,s=m(i*t),l=(1+e-r)/2;function c(t,n){var c=o(n),u=o(t/=2);return[(1+c)*g(t),(i*n>-a(u,s)-.001?0:10*-i)+l+g(n)*r-(1+c)*e*u]}return c.invert=function(t,c){var u=0,f=0,h=50;do{var p=o(u),d=g(u),m=o(f),y=g(f),x=1+m,b=x*d-t,_=l+y*r-x*e*p-c,w=x*p/2,T=-d*y,k=e*x*d/2,A=r*m+e*p*y,M=T*k-A*w,S=(_*T-b*A)/M/2,E=(b*k-_*w)/M;n(E)>2&&(E/=2),u-=S,f-=E}while((n(S)>v||n(E)>v)&&--h>0);return i*f>-a(o(u),s)-.001?[2*u,f]:null},c}function D(t,e){var r=m(e/2),n=L(1-r*r),i=1+n*o(t/=2),a=g(t)*n/i,s=r/i,l=a*a,c=s*s;return[4/3*a*(3+l-3*c),4/3*s*(3+3*l-c)]}O.invert=function(t,e){if(!(t*t+4*e*e>y*y+v)){var r=t,i=e,a=25;do{var s,l=g(r),c=g(r/2),u=o(r/2),f=g(i),h=o(i),p=g(2*i),d=f*f,m=h*h,x=c*c,b=1-m*u*u,_=b?E(h*u)*L(s=1/b):s=0,w=2*_*h*c-t,T=_*f-e,k=s*(m*x+_*h*u*d),A=s*(.5*l*p-2*_*f*c),M=.25*s*(p*c-_*f*m*l),S=s*(d*u+_*x*h),C=A*M-S*k;if(!C)break;var P=(T*A-w*S)/C,I=(w*M-T*k)/C;r-=P,i-=I}while((n(P)>v||n(I)>v)&&--a>0);return[r,i]}},D.invert=function(t,e){if(e*=3/8,!(t*=3/8)&&n(e)>1)return null;var r=1+t*t+e*e,i=L((r-L(r*r-4*e*e))/2),s=S(i)/3,l=i?function(t){return c(t+L(t*t-1))}(n(e/i))/3:function(t){return c(t+L(t*t+1))}(n(t))/3,u=o(s),f=P(l),h=f*f-u*u;return[2*d(t)*a(C(l)*u,.25-h),2*d(e)*a(f*g(s),.25+h)]};var R=L(8),F=c(1+w);function B(t,e){var r=n(e);return rx){var l=a(s[1],s[0]),c=L(s[0]*s[0]+s[1]*s[1]),u=r*p((l-x)/r)+x,f=a(g(l-=u),2-o(l));l=u+S(y/c*g(f))-f,s[0]=c*o(l),s[1]=c*g(l)}return s}return s.invert=function(t,n){var s=L(t*t+n*n);if(s>x){var l=a(n,t),c=r*p((l-x)/r)+x,u=l>c?-1:1,f=s*o(c-l),h=1/m(u*E((f-y)/L(y*(y-2*f)+s*s)));l=c+2*i((h+u*L(h*h-3))/3),t=s*o(l),n=s*g(l)}return e.geoAzimuthalEquidistantRaw.invert(t,n)},s}function j(t,r){if(arguments.length<2&&(r=t),1===r)return e.geoAzimuthalEqualAreaRaw;if(r===1/0)return U;function n(n,i){var a=e.geoAzimuthalEqualAreaRaw(n/r,i);return a[0]*=t,a}return n.invert=function(n,i){var a=e.geoAzimuthalEqualAreaRaw.invert(n/t,i);return a[0]*=r,a},n}function U(t,e){return[t*o(e)/o(e/=2),2*g(e)]}function V(t,e,r){var i,a,o,s=100;r=void 0===r?0:+r,e=+e;do{(a=t(r))===(o=t(r+v))&&(o=a+v),r-=i=-1*v*(a-e)/(a-o)}while(s-- >0&&n(i)>v);return s<0?NaN:r}function H(t,e,r){return void 0===e&&(e=40),void 0===r&&(r=1e-12),function(i,a,o,s){var l,c,u;o=void 0===o?0:+o,s=void 0===s?0:+s;for(var f=0;fl)o-=c/=2,s-=u/=2;else{l=g;var m=(o>0?-1:1)*r,v=(s>0?-1:1)*r,y=t(o+m,s),x=t(o,s+v),b=(y[0]-h[0])/m,_=(y[1]-h[1])/m,w=(x[0]-h[0])/v,T=(x[1]-h[1])/v,k=T*b-_*w,A=(n(k)<.5?.5:1)/k;if(o+=c=(d*w-p*T)*A,s+=u=(p*_-d*b)*A,n(c)0&&(i[1]*=1+a/1.5*i[0]*i[0]),i}return e.invert=H(e),e}function G(t,e){var r,i=t*g(e),a=30;do{e-=r=(e+g(e)-i)/(1+o(e))}while(n(r)>v&&--a>0);return e/2}function Y(t,e,r){function n(n,i){return[t*n*o(i=G(r,i)),e*g(i)]}return n.invert=function(n,i){return i=S(i/e),[n/(t*o(i)),S((2*i+g(2*i))/r)]},n}B.invert=function(t,e){if((a=n(e))1e-12&&--u>0);return[t/(o(l)*(R-1/g(l))),d(e)*l]},U.invert=function(t,e){var r=2*S(e/2);return[t*o(r/2)/o(r),r]};var W=Y(w/x,w,y);var X=2.00276,Z=1.11072;function J(t,e){var r=G(y,e);return[X*t/(1/o(e)+Z/o(r)),(e+w*g(r))/X]}function K(t){var r=0,n=e.geoProjectionMutator(t),i=n(r);return i.parallel=function(t){return arguments.length?n(r=t*M):r*A},i}function Q(t,e){return[t*o(e),e]}function $(t){if(!t)return Q;var e=1/m(t);function r(r,n){var i=e+t-n,a=i?r*o(n)/i:i;return[i*g(a),e-i*o(a)]}return r.invert=function(r,n){var i=L(r*r+(n=e-n)*n),s=e+t-i;return[i/o(s)*a(r,n),s]},r}function tt(t){function e(e,r){var n=x-r,i=n?e*t*g(n)/n:n;return[n*g(i)/t,x-n*o(i)]}return e.invert=function(e,r){var n=e*t,i=x-r,o=L(n*n+i*i),s=a(n,i);return[(o?o/g(o):1)*s/t,x-o]},e}J.invert=function(t,e){var r,i,a=X*e,s=e<0?-b:b,l=25;do{i=a-w*g(s),s-=r=(g(2*s)+2*s-y*g(i))/(2*o(2*s)+2+y*o(i)*w*o(s))}while(n(r)>v&&--l>0);return i=a-w*g(s),[t*(1/o(i)+Z/o(s))/X,i]},Q.invert=function(t,e){return[t/o(e),e]};var et=Y(1,4/y,y);function rt(t,e,r,i,s,l){var c,u=o(l);if(n(t)>1||n(l)>1)c=E(r*s+e*i*u);else{var f=g(t/2),h=g(l/2);c=2*S(L(f*f+e*i*h*h))}return n(c)>v?[c,a(i*g(l),e*s-r*i*u)]:[0,0]}function nt(t,e,r){return E((t*t+e*e-r*r)/(2*t*e))}function it(t){return t-2*y*l((t+y)/(2*y))}function at(t,e,r){for(var n,i=[[t[0],t[1],g(t[1]),o(t[1])],[e[0],e[1],g(e[1]),o(e[1])],[r[0],r[1],g(r[1]),o(r[1])]],a=i[2],s=0;s<3;++s,a=n)n=i[s],a.v=rt(n[1]-a[1],a[3],a[2],n[3],n[2],n[0]-a[0]),a.point=[0,0];var l=nt(i[0].v[0],i[2].v[0],i[1].v[0]),c=nt(i[0].v[0],i[1].v[0],i[2].v[0]),u=y-l;i[2].point[1]=0,i[0].point[0]=-(i[1].point[0]=i[0].v[0]/2);var f=[i[2].point[0]=i[0].point[0]+i[2].v[0]*o(l),2*(i[0].point[1]=i[1].point[1]=i[2].v[0]*g(l))];return function(t,e){var r,n=g(e),a=o(e),s=new Array(3);for(r=0;r<3;++r){var l=i[r];if(s[r]=rt(e-l[1],l[3],l[2],a,n,t-l[0]),!s[r][0])return l.point;s[r][1]=it(s[r][1]-l.v[1])}var h=f.slice();for(r=0;r<3;++r){var p=2==r?0:r+1,d=nt(i[r].v[0],s[r][0],s[p][0]);s[r][1]<0&&(d=-d),r?1==r?(d=c-d,h[0]-=s[r][0]*o(d),h[1]-=s[r][0]*g(d)):(d=u-d,h[0]+=s[r][0]*o(d),h[1]+=s[r][0]*g(d)):(h[0]+=s[r][0]*o(d),h[1]-=s[r][0]*g(d))}return h[0]/=3,h[1]/=3,h}}function ot(t){return t[0]*=M,t[1]*=M,t}function st(t,r,n){var i=e.geoCentroid({type:\"MultiPoint\",coordinates:[t,r,n]}),a=[-i[0],-i[1]],o=e.geoRotation(a),s=at(ot(o(t)),ot(o(r)),ot(o(n)));s.invert=H(s);var l=e.geoProjection(s).rotate(a),c=l.center;return delete l.rotate,l.center=function(t){return arguments.length?c(o(t)):o.invert(c())},l.clipAngle(90)}function lt(t,e){var r=L(1-g(e));return[2/T*t*r,T*(1-r)]}function ct(t){var e=m(t);function r(t,r){return[t,(t?t/g(t):1)*(g(r)*o(t)-e*o(r))]}return r.invert=e?function(t,r){t&&(r*=g(t)/t);var n=o(t);return[t,2*a(L(n*n+e*e-r*r)-n,e-r)]}:function(t,e){return[t,S(t?e*m(t)/t:e)]},r}lt.invert=function(t,e){var r=(r=e/T-1)*r;return[r>0?t*L(y/r)/2:0,S(1-r)]};var ut=L(3);function ft(t,e){return[ut*t*(2*o(2*e/3)-1)/T,ut*T*g(e/3)]}function ht(t){var e=o(t);function r(t,r){return[t*e,g(r)/e]}return r.invert=function(t,r){return[t/e,S(r*e)]},r}function pt(t){var e=o(t);function r(t,r){return[t*e,(1+e)*m(r/2)]}return r.invert=function(t,r){return[t/e,2*i(r/(1+e))]},r}function dt(t,e){var r=L(8/(3*y));return[r*t*(1-n(e)/y),r*e]}function gt(t,e){var r=L(4-3*g(n(e)));return[2/L(6*y)*t*r,d(e)*L(2*y/3)*(2-r)]}function mt(t,e){var r=L(y*(4+y));return[2/r*t*(1+L(1-4*e*e/(y*y))),4/r*e]}function vt(t,e){var r=(2+x)*g(e);e/=2;for(var i=0,a=1/0;i<10&&n(a)>v;i++){var s=o(e);e-=a=(e+g(e)*(s+2)-r)/(2*s*(1+s))}return[2/L(y*(4+y))*t*(1+o(e)),2*L(y/(4+y))*g(e)]}function yt(t,e){return[t*(1+o(e))/L(2+y),2*e/L(2+y)]}function xt(t,e){for(var r=(1+x)*g(e),i=0,a=1/0;i<10&&n(a)>v;i++)e-=a=(e+g(e)-r)/(1+o(e));return r=L(2+y),[t*(1+o(e))/r,2*e/r]}ft.invert=function(t,e){var r=3*S(e/(ut*T));return[T*t/(ut*(2*o(2*r/3)-1)),r]},dt.invert=function(t,e){var r=L(8/(3*y)),i=e/r;return[t/(r*(1-n(i)/y)),i]},gt.invert=function(t,e){var r=2-n(e)/L(2*y/3);return[t*L(6*y)/(2*r),d(e)*S((4-r*r)/3)]},mt.invert=function(t,e){var r=L(y*(4+y))/2;return[t*r/(1+L(1-e*e*(4+y)/(4*y))),e*r/2]},vt.invert=function(t,e){var r=e*L((4+y)/y)/2,n=S(r),i=o(n);return[t/(2/L(y*(4+y))*(1+i)),S((n+r*(i+2))/(2+x))]},yt.invert=function(t,e){var r=L(2+y),n=e*r/2;return[r*t/(1+o(n)),n]},xt.invert=function(t,e){var r=1+x,n=L(r/2);return[2*t*n/(1+o(e*=n)),S((e+g(e))/r)]};var bt=3+2*w;function _t(t,e){var r=g(t/=2),n=o(t),a=L(o(e)),s=o(e/=2),l=g(e)/(s+w*n*a),u=L(2/(1+l*l)),f=L((w*s+(n+r)*a)/(w*s+(n-r)*a));return[bt*(u*(f-1/f)-2*c(f)),bt*(u*l*(f+1/f)-2*i(l))]}_t.invert=function(t,e){if(!(r=D.invert(t/1.2,1.065*e)))return null;var r,a=r[0],s=r[1],l=20;t/=bt,e/=bt;do{var h=a/2,p=s/2,d=g(h),m=o(h),y=g(p),b=o(p),T=o(s),k=L(T),A=y/(b+w*m*k),M=A*A,S=L(2/(1+M)),E=(w*b+(m+d)*k)/(w*b+(m-d)*k),C=L(E),P=C-1/C,I=C+1/C,O=S*P-2*c(C)-t,z=S*A*I-2*i(A)-e,R=y&&_*k*d*M/y,F=(w*m*b+k)/(2*(b+w*m*k)*(b+w*m*k)*k),B=-.5*A*S*S*S,N=B*R,j=B*F,U=(U=2*b+w*k*(m-d))*U*C,V=(w*m*b*k+T)/U,H=-w*d*y/(k*U),q=P*N-2*V/C+S*(V+V/E),G=P*j-2*H/C+S*(H+H/E),Y=A*I*N-2*R/(1+M)+S*I*R+S*A*(V-V/E),W=A*I*j-2*F/(1+M)+S*I*F+S*A*(H-H/E),X=G*Y-W*q;if(!X)break;var Z=(z*G-O*W)/X,J=(O*Y-z*q)/X;a-=Z,s=u(-x,f(x,s-J))}while((n(Z)>v||n(J)>v)&&--l>0);return n(n(s)-x)s){var d=L(h),m=a(f,u),b=i*p(m/i),_=m-b,w=t*o(_),T=(t*g(_)-_*g(w))/(x-w),k=Lt(_,T),A=(y-t)/Ct(k,w,y);u=d;var M,S=50;do{u-=M=(t+Ct(k,w,u)*A-d)/(k(u)*A)}while(n(M)>v&&--S>0);f=_*g(u),us){var u=L(c),f=a(l,r),h=i*p(f/i),d=f-h;r=u*o(d),l=u*g(d);for(var m=r-x,v=g(r),b=l/v,_=rv||n(p)>v)&&--x>0);return[d,m]},u}Tt.invert=function(t,e){var r=e/(1+wt);return[t&&t/(wt*L(1-r*r)),2*i(r)]},kt.invert=function(t,e){var r=i(e/T),n=o(r),a=2*r;return[t*T/2/(o(a)*n*n),a]};var It=Pt(2.8284,-1.6988,.75432,-.18071,1.76003,-.38914,.042555);var Ot=Pt(2.583819,-.835827,.170354,-.038094,1.543313,-.411435,.082742);var zt=Pt(5/6*y,-.62636,-.0344,0,1.3493,-.05524,0,.045);function Dt(t,e){var r=t*t,n=e*e;return[t*(1-.162388*n)*(.87-952426e-9*r*r),e*(1+n/12)]}Dt.invert=function(t,e){var r,i=t,a=e,o=50;do{var s=a*a;a-=r=(a*(1+s/12)-e)/(1+s/4)}while(n(r)>v&&--o>0);o=50,t/=1-.162388*s;do{var l=(l=i*i)*l;i-=r=(i*(.87-952426e-9*l)-t)/(.87-.00476213*l)}while(n(r)>v&&--o>0);return[i,a]};var Rt=Pt(2.6516,-.76534,.19123,-.047094,1.36289,-.13965,.031762);function Ft(t){var e=t(x,0)[0]-t(-x,0)[0];function r(r,n){var i=r>0?-.5:.5,a=t(r+i*y,n);return a[0]-=i*e,a}return t.invert&&(r.invert=function(r,n){var i=r>0?-.5:.5,a=t.invert(r+i*e,n),o=a[0]-i*y;return o<-y?o+=2*y:o>y&&(o-=2*y),a[0]=o,a}),r}function Bt(t,e){var r=d(t),i=d(e),s=o(e),l=o(t)*s,c=g(t)*s,u=g(i*e);t=n(a(c,u)),e=S(l),n(t-x)>v&&(t%=x);var f=function(t,e){if(e===x)return[0,0];var r,i,a=g(e),s=a*a,l=s*s,c=1+l,u=1+3*l,f=1-l,h=S(1/L(c)),p=f+s*c*h,d=(1-a)/p,m=L(d),b=d*c,_=L(b),w=m*f;if(0===t)return[0,-(w+s*_)];var T,k=o(e),A=1/k,M=2*a*k,E=(-p*k-(-3*s+h*u)*M*(1-a))/(p*p),C=-A*M,P=-A*(s*c*E+d*u*M),I=-2*A*(f*(.5*E/m)-2*s*m*M),O=4*t/y;if(t>.222*y||e.175*y){if(r=(w+s*L(b*(1+l)-w*w))/(1+l),t>y/4)return[r,r];var z=r,D=.5*r;r=.5*(D+z),i=50;do{var R=L(b-r*r),F=r*(I+C*R)+P*S(r/_)-O;if(!F)break;F<0?D=r:z=r,r=.5*(D+z)}while(n(z-D)>v&&--i>0)}else{r=v,i=25;do{var B=r*r,N=L(b-B),j=I+C*N,U=r*j+P*S(r/_)-O,V=j+(P-C*B)/N;r-=T=N?U/V:0}while(n(T)>v&&--i>0)}return[r,-w-s*L(b-r*r)]}(t>y/4?x-t:t,e);return t>y/4&&(u=f[0],f[0]=-f[1],f[1]=-u),f[0]*=r,f[1]*=-i,f}function Nt(t,e){var r,a,l,c,u,f;if(e=1-v)return r=(1-e)/4,l=1/(a=P(t)),[(c=((f=s(2*(f=t)))-1)/(f+1))+r*((u=a*C(t))-t)/(a*a),l-r*c*l*(u-t),l+r*c*l*(u+t),2*i(s(t))-x+r*(u-t)/a];var h=[1,0,0,0,0,0,0,0,0],p=[L(e),0,0,0,0,0,0,0,0],d=0;for(a=L(1-e),u=1;n(p[d]/h[d])>v&&d<8;)r=h[d++],p[d]=(r-a)/2,h[d]=(r+a)/2,a=L(r*a),u*=2;l=u*h[d]*t;do{l=(S(c=p[d]*g(a=l)/h[d])+l)/2}while(--d);return[g(l),c=o(l),c/o(l-a),l]}function jt(t,e){if(!e)return t;if(1===e)return c(m(t/2+b));for(var r=1,a=L(1-e),o=L(e),s=0;n(o)>v;s++){if(t%y){var l=i(a*m(t)/r);l<0&&(l+=y),t+=l+~~(t/y)*y}else t+=t;o=(r+a)/2,a=L(r*a),o=((r=o)-a)/2}return t/(h(2,s)*r)}function Ut(t,e){var r=(w-1)/(w+1),l=L(1-r*r),u=jt(x,l*l),f=c(m(y/4+n(e)/2)),h=s(-1*f)/L(r),p=function(t,e){var r=t*t,n=e+1,i=1-r-e*e;return[.5*((t>=0?x:-x)-a(i,2*t)),-.25*c(i*i+4*r)+.5*c(n*n+r)]}(h*o(-1*t),h*g(-1*t)),v=function(t,e,r){var a=n(t),o=C(n(e));if(a){var s=1/g(a),l=1/(m(a)*m(a)),c=-(l+r*(o*o*s*s)-1+r),u=(-c+L(c*c-4*((r-1)*l)))/2;return[jt(i(1/L(u)),r)*d(t),jt(i(L((u/l-1)/r)),1-r)*d(e)]}return[0,jt(i(o),1-r)*d(e)]}(p[0],p[1],l*l);return[-v[1],(e>=0?1:-1)*(.5*u-v[0])]}function Vt(t){var e=g(t),r=o(t),i=Ht(t);function s(t,a){var s=i(t,a);t=s[0],a=s[1];var l=g(a),c=o(a),u=o(t),f=E(e*l+r*c*u),h=g(f),p=n(h)>v?f/h:1;return[p*r*g(t),(n(t)>x?p:-p)*(e*c-r*l*u)]}return i.invert=Ht(-t),s.invert=function(t,r){var n=L(t*t+r*r),s=-g(n),l=o(n),c=n*l,u=-r*s,f=n*e,h=L(c*c+u*u-f*f),p=a(c*f+u*h,u*f-c*h),d=(n>x?-1:1)*a(t*s,n*o(p)*l+r*g(p)*s);return i.invert(d,p)},s}function Ht(t){var e=g(t),r=o(t);return function(t,n){var i=o(n),s=o(t)*i,l=g(t)*i,c=g(n);return[a(l,s*r-c*e),S(c*r+s*e)]}}Bt.invert=function(t,e){n(t)>1&&(t=2*d(t)-t),n(e)>1&&(e=2*d(e)-e);var r=d(t),i=d(e),s=-r*t,l=-i*e,c=l/s<1,u=function(t,e){var r=0,i=1,a=.5,s=50;for(;;){var l=a*a,c=L(a),u=S(1/L(1+l)),f=1-l+a*(1+l)*u,h=(1-c)/f,p=L(h),d=h*(1+l),g=p*(1-l),m=L(d-t*t),v=e+g+a*m;if(n(i-r)<1e-12||0==--s||0===v)break;v>0?r=a:i=a,a=.5*(r+i)}if(!s)return null;var x=S(c),b=o(x),_=1/b,w=2*c*b,T=(-f*b-(-3*a+u*(1+3*l))*w*(1-c))/(f*f);return[y/4*(t*(-2*_*(.5*T/p*(1-l)-2*a*p*w)+-_*w*m)+-_*(a*(1+l)*T+h*(1+3*l)*w)*S(t/L(d))),x]}(c?l:s,c?s:l),f=u[0],h=u[1],p=o(h);return c&&(f=-x-f),[r*(a(g(f)*p,-g(h))+y),i*S(o(f)*p)]},Ut.invert=function(t,e){var r,n,o,l,u,f,h=(w-1)/(w+1),p=L(1-h*h),d=jt(x,p*p),g=(n=-t,o=p*p,(r=.5*d-e)?(l=Nt(r,o),n?(f=(u=Nt(n,1-o))[1]*u[1]+o*l[0]*l[0]*u[0]*u[0],[[l[0]*u[2]/f,l[1]*l[2]*u[0]*u[1]/f],[l[1]*u[1]/f,-l[0]*l[2]*u[0]*u[2]/f],[l[2]*u[1]*u[2]/f,-o*l[0]*l[1]*u[0]/f]]):[[l[0],0],[l[1],0],[l[2],0]]):[[0,(u=Nt(n,1-o))[0]/u[1]],[1/u[1],0],[u[2]/u[1],0]]),m=function(t,e){var r=e[0]*e[0]+e[1]*e[1];return[(t[0]*e[0]+t[1]*e[1])/r,(t[1]*e[0]-t[0]*e[1])/r]}(g[0],g[1]);return[a(m[1],m[0])/-1,2*i(s(-.5*c(h*m[0]*m[0]+h*m[1]*m[1])))-x]};var qt=S(1-1/3)*A,Gt=ht(0);function Yt(t){var e=qt*M,r=lt(y,e)[0]-lt(-y,e)[0],i=Gt(0,e)[1],a=lt(0,e)[1],o=T-a,s=k/t,c=4/k,h=i+o*o*4/k;function p(p,d){var g,m=n(d);if(m>e){var v=f(t-1,u(0,l((p+y)/s)));(g=lt(p+=y*(t-1)/t-v*s,m))[0]=g[0]*k/r-k*(t-1)/(2*t)+v*k/t,g[1]=i+4*(g[1]-a)*o/k,d<0&&(g[1]=-g[1])}else g=Gt(p,d);return g[0]*=c,g[1]/=h,g}return p.invert=function(e,p){e/=c;var d=n(p*=h);if(d>i){var g=f(t-1,u(0,l((e+y)/s)));e=(e+y*(t-1)/t-g*s)*r/k;var m=lt.invert(e,.25*(d-i)*k/o+a);return m[0]-=y*(t-1)/t-g*s,p<0&&(m[1]=-m[1]),m}return Gt.invert(e,p)},p}function Wt(t,e){return[t,1&e?90-v:qt]}function Xt(t,e){return[t,1&e?-90+v:-qt]}function Zt(t){return[t[0]*(1-v),t[1]]}function Jt(t){var e,r=1+t,i=S(g(1/r)),s=2*L(y/(e=y+4*i*r)),l=.5*s*(r+L(t*(2+t))),c=t*t,u=r*r;function f(f,h){var p,d,m=1-g(h);if(m&&m<2){var v,b=x-h,_=25;do{var w=g(b),T=o(b),k=i+a(w,r-T),A=1+u-2*r*T;b-=v=(b-c*i-r*w+A*k-.5*m*e)/(2*r*w*k)}while(n(v)>1e-12&&--_>0);p=s*L(A),d=f*k/y}else p=s*(t+m),d=f*i/y;return[p*g(d),l-p*o(d)]}return f.invert=function(t,n){var o=t*t+(n-=l)*n,f=(1+u-o/(s*s))/(2*r),h=E(f),p=g(h),d=i+a(p,r-f);return[S(t/L(o))*y/d,S(1-2*(h-c*i-r*p+(1+u-2*r*f)*d)/e)]},f}function Kt(t,e){return e>-.7109889596207567?((t=W(t,e))[1]+=.0528035274542,t):Q(t,e)}function Qt(t,e){return n(e)>.7109889596207567?((t=W(t,e))[1]-=e>0?.0528035274542:-.0528035274542,t):Q(t,e)}function $t(t,e,r,n){var i=L(4*y/(2*r+(1+t-e/2)*g(2*r)+(t+e)/2*g(4*r)+e/2*g(6*r))),a=L(n*g(r)*L((1+t*o(2*r)+e*o(4*r))/(1+t+e))),s=r*c(1);function l(r){return L(1+t*o(2*r)+e*o(4*r))}function c(n){var i=n*r;return(2*i+(1+t-e/2)*g(2*i)+(t+e)/2*g(4*i)+e/2*g(6*i))/r}function u(t){return l(t)*g(t)}var f=function(t,e){var n=r*V(c,s*g(e)/r,e/y);isNaN(n)&&(n=r*d(e));var u=i*l(n);return[u*a*t/y*o(n),u/a*g(n)]};return f.invert=function(t,e){var n=V(u,e*a/i);return[t*y/(o(n)*i*a*l(n)),S(r*c(n/r)/s)]},0===r&&(i=L(n/y),(f=function(t,e){return[t*i,g(e)/i]}).invert=function(t,e){return[t/i,S(e*i)]}),f}function te(t,e,r,n,i){void 0===n&&(n=1e-8),void 0===i&&(i=20);var a=t(e),o=t(.5*(e+r)),s=t(r);return function t(e,r,n,i,a,o,s,l,c,u,f){if(f.nanEncountered)return NaN;var h,p,d,g,m,v,y,x,b,_;if(p=e(r+.25*(h=n-r)),d=e(n-.25*h),isNaN(p))f.nanEncountered=!0;else{if(!isNaN(d))return _=((v=(g=h*(i+4*p+a)/12)+(m=h*(a+4*d+o)/12))-s)/15,u>c?(f.maxDepthCount++,v+_):Math.abs(_)t?r=n:e=n,n=e+r>>1}while(n>e);var i=c[n+1]-c[n];return i&&(i=(t-c[n+1])/i),(n+1+i)/s}var p=2*f(1)/y*o/r,m=function(t,e){var r=f(n(g(e))),a=i(r)*t;return r/=p,[a,e>=0?r:-r]};return m.invert=function(t,e){var r;return n(e*=p)<1&&(r=d(e)*S(a(n(e))*o)),[t/i(n(e)),r]},m}function re(t,e){return n(t[0]-e[0])=0;--l)n=(e=t[1][l])[0][0],i=e[0][1],a=e[1][1],o=e[2][0],s=e[2][1],c.push(ne([[o-v,s-v],[o-v,a+v],[n+v,a+v],[n+v,i-v]],30));return{type:\"Polygon\",coordinates:[r.merge(c)]}}function ae(t,r,n){var i,a;function o(e,n){for(var i=n<0?-1:1,a=r[+(n<0)],o=0,s=a.length-1;oa[o][2][0];++o);var l=t(e-a[o][1][0],n);return l[0]+=t(a[o][1][0],i*n>i*a[o][0][1]?a[o][0][1]:n)[0],l}n?o.invert=n(o):t.invert&&(o.invert=function(e,n){for(var i=a[+(n<0)],s=r[+(n<0)],l=0,c=i.length;lo&&(r=a,a=o,o=r),[[n,a],[i,o]]}))})),s):r.map((function(t){return t.map((function(t){return[[t[0][0]*A,t[0][1]*A],[t[1][0]*A,t[1][1]*A],[t[2][0]*A,t[2][1]*A]]}))}))},null!=r&&s.lobes(r),s}Kt.invert=function(t,e){return e>-.7109889596207567?W.invert(t,e-.0528035274542):Q.invert(t,e)},Qt.invert=function(t,e){return n(e)>.7109889596207567?W.invert(t,e+(e>0?.0528035274542:-.0528035274542)):Q.invert(t,e)};var oe=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];var se=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];var le=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];var ce=[[[[-180,0],[-90,90],[0,0]],[[0,0],[90,90],[180,0]]],[[[-180,0],[-90,-90],[0,0]],[[0,0],[90,-90],[180,0]]]];var ue=[[[[-180,35],[-30,90],[0,35]],[[0,35],[30,90],[180,35]]],[[[-180,-10],[-102,-90],[-65,-10]],[[-65,-10],[5,-90],[77,-10]],[[77,-10],[103,-90],[180,-10]]]];var fe=[[[[-180,0],[-110,90],[-40,0]],[[-40,0],[0,90],[40,0]],[[40,0],[110,90],[180,0]]],[[[-180,0],[-110,-90],[-40,0]],[[-40,0],[0,-90],[40,0]],[[40,0],[110,-90],[180,0]]]];function he(t,e){return[3/k*t*L(y*y/3-e*e),e]}function pe(t){function e(e,r){if(n(n(r)-x)2)return null;var o=(e/=2)*e,s=(r/=2)*r,l=2*r/(1+o+s);return l=h((1+l)/(1-l),1/t),[a(2*e,1-o-s)/t,S((l-1)/(l+1))]},e}he.invert=function(t,e){return[k/3*t/L(y*y/3-e*e),e]};var de=y/w;function ge(t,e){return[t*(1+L(o(e)))/2,e/(o(e/2)*o(t/6))]}function me(t,e){var r=t*t,n=e*e;return[t*(.975534+n*(-.0143059*r-.119161+-.0547009*n)),e*(1.00384+r*(.0802894+-.02855*n+199025e-9*r)+n*(.0998909+-.0491032*n))]}function ve(t,e){return[g(t)/o(e),m(e)*o(t)]}function ye(t){var e=o(t),r=m(b+t/2);function i(i,a){var o=a-t,s=n(o)=0;)h=(f=t[u])[0]+l*(i=h)-c*p,p=f[1]+l*p+c*i;return[h=l*(i=h)-c*p,p=l*p+c*i]}return r.invert=function(r,s){var l=20,c=r,u=s;do{for(var f,h=e,p=t[h],d=p[0],m=p[1],v=0,y=0;--h>=0;)v=d+c*(f=v)-u*y,y=m+c*y+u*f,d=(p=t[h])[0]+c*(f=d)-u*m,m=p[1]+c*m+u*f;var x,b,_=(v=d+c*(f=v)-u*y)*v+(y=m+c*y+u*f)*y;c-=x=((d=c*(f=d)-u*m-r)*v+(m=c*m+u*f-s)*y)/_,u-=b=(m*v-d*y)/_}while(n(x)+n(b)>1e-12&&--l>0);if(l){var w=L(c*c+u*u),T=2*i(.5*w),k=g(T);return[a(c*k,w*o(T)),w?S(u*k/w):0]}},r}ge.invert=function(t,e){var r=n(t),i=n(e),a=v,s=x;iv||n(b)>v)&&--a>0);return a&&[r,i]},ve.invert=function(t,e){var r=t*t,n=e*e+1,i=r+n,a=t?_*L((i-L(i*i-4*r))/r):1/L(n);return[S(t*a),d(e)*E(a)]},xe.invert=function(t,e){return[t,2.5*i(s(.8*e))-.625*y]};var _e=[[.9972523,0],[.0052513,-.0041175],[.0074606,.0048125],[-.0153783,-.1968253],[.0636871,-.1408027],[.3660976,-.2937382]],we=[[.98879,0],[0,0],[-.050909,0],[0,0],[.075528,0]],Te=[[.984299,0],[.0211642,.0037608],[-.1036018,-.0575102],[-.0329095,-.0320119],[.0499471,.1223335],[.026046,.0899805],[7388e-7,-.1435792],[.0075848,-.1334108],[-.0216473,.0776645],[-.0225161,.0853673]],ke=[[.9245,0],[0,0],[.01943,0]],Ae=[[.721316,0],[0,0],[-.00881625,-.00617325]];function Me(t,r){var n=e.geoProjection(be(t)).rotate(r).clipAngle(90),i=e.geoRotation(r),a=n.center;return delete n.rotate,n.center=function(t){return arguments.length?a(i(t)):i.invert(a())},n}var Se=L(6),Ee=L(7);function Le(t,e){var r=S(7*g(e)/(3*Se));return[Se*t*(2*o(2*r/3)-1)/Ee,9*g(r/3)/Ee]}function Ce(t,e){for(var r,i=(1+_)*g(e),a=e,s=0;s<25&&(a-=r=(g(a/2)+g(a)-i)/(.5*o(a/2)+o(a)),!(n(r)1e-12&&--l>0);return[t/(.84719-.13063*(i=s*s)+(o=i*(a=i*i))*o*(.05494*i-.04515-.02326*a+.00331*o)),s]},Oe.invert=function(t,e){for(var r=e/2,i=0,a=1/0;i<10&&n(a)>v;++i){var s=o(e/2);e-=a=(e-m(e/2)-r)/(1-.5/(s*s))}return[2*t/(1+o(e)),e]};var ze=[[[[-180,0],[-90,90],[0,0]],[[0,0],[90,90],[180,0]]],[[[-180,0],[-90,-90],[0,0]],[[0,0],[90,-90],[180,0]]]];function De(t,e){var r=g(e),i=o(e),a=d(t);if(0===t||n(e)===x)return[0,e];if(0===e)return[t,0];if(n(t)===x)return[t*i,x*r];var s=y/(2*t)-2*t/y,l=2*e/y,c=(1-l*l)/(r-l),u=s*s,f=c*c,h=1+u/f,p=1+f/u,m=(s*r/c-s/2)/h,v=(f*r/u+c/2)/p,b=v*v-(f*r*r/u+c*r-1)/p;return[x*(m+L(m*m+i*i/h)*a),x*(v+L(b<0?0:b)*d(-e*s)*a)]}De.invert=function(t,e){var r=(t/=x)*t,n=r+(e/=x)*e,i=y*y;return[t?(n-1+L((1-n)*(1-n)+4*r))/(2*t)*x:0,V((function(t){return n*(y*g(t)-2*t)*y+4*t*t*(e-g(t))+2*y*t-i*e}),0)]};function Re(t,e){var r=e*e;return[t,e*(1.0148+r*r*(.23185+r*(.02406*r-.14499)))]}function Fe(t,e){if(n(e)=0;)if(n=e[s],r[0]===n[0]&&r[1]===n[1]){if(a)return[a,r];a=r}}}(e.face,r.face),i=Be(n.map(r.project),n.map(e.project));e.transform=r.transform?Ne(r.transform,i):i;for(var a=r.edges,o=0,s=a.length;o1.790857183?e=1.790857183:e<-1.790857183&&(e=-1.790857183);var r,i=e;do{var a=i*i;i-=r=(i*(1.0148+a*a*(.23185+a*(.02406*a-.14499)))-e)/(1.0148+a*a*(5*.23185+a*(.21654*a-1.01493)))}while(n(r)>v);return[t,i]},Fe.invert=function(t,e){if(n(e)v&&--s>0);return l=m(a),[(n(e)n^p>n&&r<(h-c)*(n-u)/(p-u)+c&&(i=!i)}return i}(t[0],r))return t.push(e),!0}))||t.push([e])})),nr=[],t.length?t.length>1?{type:\"MultiPolygon\",coordinates:t}:{type:\"Polygon\",coordinates:t[0]}:null}};function sr(t){var r=t(x,0)[0]-t(-x,0)[0];function i(e,i){var a=n(e)0?e-y:e+y,i),s=(o[0]-o[1])*_,l=(o[0]+o[1])*_;if(a)return[s,l];var c=r*_,u=s>0^l>0?-1:1;return[u*s-d(l)*c,u*l-d(s)*c]}return t.invert&&(i.invert=function(e,i){var a=(e+i)*_,o=(i-e)*_,s=n(a)<.5*r&&n(o)<.5*r;if(!s){var l=r*_,c=a>0^o>0?-1:1,u=-c*e+(o>0?1:-1)*l,f=-c*i+(a>0?1:-1)*l;a=(-u-f)*_,o=(u-f)*_}var h=t.invert(a,o);return s||(h[0]+=a>0?y:-y),h}),e.geoProjection(i).rotate([-90,-90,45]).clipAngle(179.999)}function lr(){return sr(Ut).scale(111.48)}function cr(t){var e=g(t);function r(r,n){var a=e?m(r*e/2)/e:r/2;if(!n)return[2*a,-t];var s=2*i(a*g(n)),l=1/m(n);return[g(s)*l,n+(1-o(s))*l-t]}return r.invert=function(r,a){if(n(a+=t)v&&--u>0);var d=r*(f=m(c)),x=m(n(a)0?x:-x)*(h+o*(d-c)/2+o*o*(d-2*h+c)/2)]}function hr(t,e){var r=function(t){function e(e,r){var n=o(r),i=(t-1)/(t-n*o(e));return[i*n*g(e),i*g(r)]}return e.invert=function(e,r){var n=e*e+r*r,i=L(n),o=(t-L(1-n*(t+1)/(t-1)))/((t-1)/i+i/(t-1));return[a(e*o,i*L(1-o*o)),i?S(r*o/i):0]},e}(t);if(!e)return r;var n=o(e),i=g(e);function s(e,a){var o=r(e,a),s=o[1],l=s*i/(t-1)+n;return[o[0]*n/l,s/l]}return s.invert=function(e,a){var o=(t-1)/(t-1-a*i);return r.invert(o*e,o*a*n)},s}ur.forEach((function(t){t[1]*=1.0144})),fr.invert=function(t,e){var r=e/x,i=90*r,a=f(18,n(i/5)),o=u(0,l(a));do{var s=ur[o][1],c=ur[o+1][1],h=ur[f(19,o+2)][1],p=h-s,d=h-2*c+s,g=2*(n(r)-c)/p,m=d/p,v=g*(1-m*g*(1-2*m*g));if(v>=0||1===o){i=(e>=0?5:-5)*(v+a);var y,b=50;do{v=(a=f(18,n(i)/5))-(o=l(a)),s=ur[o][1],c=ur[o+1][1],h=ur[f(19,o+2)][1],i-=(y=(e>=0?x:-x)*(c+v*(h-s)/2+v*v*(h-2*c+s)/2)-e)*A}while(n(y)>1e-12&&--b>0);break}}while(--o>=0);var _=ur[o][0],w=ur[o+1][0],T=ur[f(19,o+2)][0];return[t/(w+v*(T-_)/2+v*v*(T-2*w+_)/2),i*M]};var pr=-179.9999,dr=179.9999,gr=-89.9999;function mr(t){return t.length>0}function vr(t){return-90===t||90===t?[0,t]:[-180,(e=t,Math.floor(1e4*e)/1e4)];var e}function yr(t){var e=t[0],r=t[1],n=!1;return e<=pr?(e=-180,n=!0):e>=dr&&(e=180,n=!0),r<=gr?(r=-90,n=!0):r>=89.9999&&(r=90,n=!0),n?[e,r]:t}function xr(t){return t.map(yr)}function br(t,e,r){for(var n=0,i=t.length;n=dr||u<=gr||u>=89.9999){a[o]=yr(l);for(var f=o+1;fpr&&pgr&&d<89.9999)break}if(f===o+1)continue;if(o){var g={index:-1,polygon:e,ring:a.slice(0,o+1)};g.ring[g.ring.length-1]=vr(u),r[r.length-1]=g}else r.pop();if(f>=s)break;r.push({index:-1,polygon:e,ring:a=a.slice(f-1)}),a[0]=vr(a[0][1]),o=-1,s=a.length}}}}function _r(t){var e,r,n,i,a,o,s=t.length,l={},c={};for(e=0;e0?y-l:l)*A],u=e.geoProjection(t(s)).rotate(c),f=e.geoRotation(c),h=u.center;return delete u.rotate,u.center=function(t){return arguments.length?h(f(t)):f.invert(h())},u.clipAngle(90)}function Mr(t){var r=o(t);function n(t,n){var i=e.geoGnomonicRaw(t,n);return i[0]*=r,i}return n.invert=function(t,n){return e.geoGnomonicRaw.invert(t/r,n)},n}function Sr(t,e){return Ar(Mr,t,e)}function Er(t){if(!(t*=2))return e.geoAzimuthalEquidistantRaw;var r=-t/2,n=-r,i=t*t,s=m(n),l=.5/g(n);function c(e,a){var s=E(o(a)*o(e-r)),l=E(o(a)*o(e-n));return[((s*=s)-(l*=l))/(2*t),(a<0?-1:1)*L(4*i*l-(i-s+l)*(i-s+l))/(2*t)]}return c.invert=function(t,e){var i,c,u=e*e,f=o(L(u+(i=t+r)*i)),h=o(L(u+(i=t+n)*i));return[a(c=f-h,i=(f+h)*s),(e<0?-1:1)*E(L(i*i+c*c)*l)]},c}function Lr(t,e){return Ar(Er,t,e)}function Cr(t,e){if(n(e)v&&--l>0);return[d(t)*(L(a*a+4)+a)*y/4,x*s]};var Rr=4*y+3*L(3),Fr=2*L(2*y*L(3)/Rr),Br=Y(Fr*L(3)/y,Fr,Rr/6);function Nr(t,e){return[t*L(1-3*e*e/(y*y)),e]}function jr(t,e){var r=o(e),n=o(t)*r,i=1-n,s=o(t=a(g(t)*r,-g(e))),l=g(t);return[l*(r=L(1-n*n))-s*i,-s*r-l*i]}function Ur(t,e){var r=O(t,e);return[(r[0]+t/x)/2,(r[1]+e)/2]}Nr.invert=function(t,e){return[t/L(1-3*e*e/(y*y)),e]},jr.invert=function(t,e){var r=(t*t+e*e)/-2,n=L(-r*(2+r)),i=e*r+t*n,o=t*r-e*n,s=L(o*o+i*i);return[a(n*i,s*(1+r)),s?-S(n*o/s):0]},Ur.invert=function(t,e){var r=t,i=e,a=25;do{var s,l=o(i),c=g(i),u=g(2*i),f=c*c,h=l*l,p=g(r),d=o(r/2),m=g(r/2),y=m*m,b=1-h*d*d,_=b?E(l*d)*L(s=1/b):s=0,w=.5*(2*_*l*m+r/x)-t,T=.5*(_*c+i)-e,k=.5*s*(h*y+_*l*d*f)+.5/x,A=s*(p*u/4-_*c*m),M=.125*s*(u*m-_*c*h*p),S=.5*s*(f*d+_*y*l)+.5,C=A*M-S*k,P=(T*A-w*S)/C,I=(w*M-T*k)/C;r-=P,i-=I}while((n(P)>v||n(I)>v)&&--a>0);return[r,i]},t.geoNaturalEarth=e.geoNaturalEarth1,t.geoNaturalEarthRaw=e.geoNaturalEarth1Raw,t.geoAiry=function(){var t=x,r=e.geoProjectionMutator(I),n=r(t);return n.radius=function(e){return arguments.length?r(t=e*M):t*A},n.scale(179.976).clipAngle(147)},t.geoAiryRaw=I,t.geoAitoff=function(){return e.geoProjection(O).scale(152.63)},t.geoAitoffRaw=O,t.geoArmadillo=function(){var t=20*M,r=t>=0?1:-1,n=m(r*t),i=e.geoProjectionMutator(z),s=i(t),l=s.stream;return s.parallel=function(e){return arguments.length?(n=m((r=(t=e*M)>=0?1:-1)*t),i(t)):t*A},s.stream=function(e){var i=s.rotate(),c=l(e),u=(s.rotate([0,0]),l(e)),f=s.precision();return s.rotate(i),c.sphere=function(){u.polygonStart(),u.lineStart();for(var e=-180*r;r*e<180;e+=90*r)u.point(e,90*r);if(t)for(;r*(e-=3*r*f)>=-180;)u.point(e,r*-a(o(e*M/2),n)*A);u.lineEnd(),u.polygonEnd()},c},s.scale(218.695).center([0,28.0974])},t.geoArmadilloRaw=z,t.geoAugust=function(){return e.geoProjection(D).scale(66.1603)},t.geoAugustRaw=D,t.geoBaker=function(){return e.geoProjection(B).scale(112.314)},t.geoBakerRaw=B,t.geoBerghaus=function(){var t=5,r=e.geoProjectionMutator(N),n=r(t),i=n.stream,s=-o(.01*M),l=g(.01*M);return n.lobes=function(e){return arguments.length?r(t=+e):t},n.stream=function(e){var r=n.rotate(),c=i(e),u=(n.rotate([0,0]),i(e));return n.rotate(r),c.sphere=function(){u.polygonStart(),u.lineStart();for(var e=0,r=360/t,n=2*y/t,i=90-180/t,c=x;e=0;)t.point((e=r[i])[0],e[1]);t.lineEnd(),t.polygonEnd()},t},n.scale(79.4187).parallel(45).clipAngle(179.999)},t.geoHammerRetroazimuthalRaw=Vt,t.geoHealpix=function(){var t=4,n=e.geoProjectionMutator(Yt),i=n(t),a=i.stream;return i.lobes=function(e){return arguments.length?n(t=+e):t},i.stream=function(n){var o=i.rotate(),s=a(n),l=(i.rotate([0,0]),a(n));return i.rotate(o),s.sphere=function(){var n,i;e.geoStream((n=180/t,i=[].concat(r.range(-180,180+n/2,n).map(Wt),r.range(180,-180-n/2,-n).map(Xt)),{type:\"Polygon\",coordinates:[180===n?i.map(Zt):i]}),l)},s},i.scale(239.75)},t.geoHealpixRaw=Yt,t.geoHill=function(){var t=1,r=e.geoProjectionMutator(Jt),n=r(t);return n.ratio=function(e){return arguments.length?r(t=+e):t},n.scale(167.774).center([0,18.67])},t.geoHillRaw=Jt,t.geoHomolosine=function(){return e.geoProjection(Qt).scale(152.63)},t.geoHomolosineRaw=Qt,t.geoHufnagel=function(){var t=1,r=0,n=45*M,i=2,a=e.geoProjectionMutator($t),o=a(t,r,n,i);return o.a=function(e){return arguments.length?a(t=+e,r,n,i):t},o.b=function(e){return arguments.length?a(t,r=+e,n,i):r},o.psiMax=function(e){return arguments.length?a(t,r,n=+e*M,i):n*A},o.ratio=function(e){return arguments.length?a(t,r,n,i=+e):i},o.scale(180.739)},t.geoHufnagelRaw=$t,t.geoHyperelliptical=function(){var t=0,r=2.5,n=1.183136,i=e.geoProjectionMutator(ee),a=i(t,r,n);return a.alpha=function(e){return arguments.length?i(t=+e,r,n):t},a.k=function(e){return arguments.length?i(t,r=+e,n):r},a.gamma=function(e){return arguments.length?i(t,r,n=+e):n},a.scale(152.63)},t.geoHyperellipticalRaw=ee,t.geoInterrupt=ae,t.geoInterruptedBoggs=function(){return ae(J,oe).scale(160.857)},t.geoInterruptedHomolosine=function(){return ae(Qt,se).scale(152.63)},t.geoInterruptedMollweide=function(){return ae(W,le).scale(169.529)},t.geoInterruptedMollweideHemispheres=function(){return ae(W,ce).scale(169.529).rotate([20,0])},t.geoInterruptedSinuMollweide=function(){return ae(Kt,ue,H).rotate([-20,-55]).scale(164.263).center([0,-5.4036])},t.geoInterruptedSinusoidal=function(){return ae(Q,fe).scale(152.63).rotate([-20,0])},t.geoKavrayskiy7=function(){return e.geoProjection(he).scale(158.837)},t.geoKavrayskiy7Raw=he,t.geoLagrange=function(){var t=.5,r=e.geoProjectionMutator(pe),n=r(t);return n.spacing=function(e){return arguments.length?r(t=+e):t},n.scale(124.75)},t.geoLagrangeRaw=pe,t.geoLarrivee=function(){return e.geoProjection(ge).scale(97.2672)},t.geoLarriveeRaw=ge,t.geoLaskowski=function(){return e.geoProjection(me).scale(139.98)},t.geoLaskowskiRaw=me,t.geoLittrow=function(){return e.geoProjection(ve).scale(144.049).clipAngle(89.999)},t.geoLittrowRaw=ve,t.geoLoximuthal=function(){return K(ye).parallel(40).scale(158.837)},t.geoLoximuthalRaw=ye,t.geoMiller=function(){return e.geoProjection(xe).scale(108.318)},t.geoMillerRaw=xe,t.geoModifiedStereographic=Me,t.geoModifiedStereographicRaw=be,t.geoModifiedStereographicAlaska=function(){return Me(_e,[152,-64]).scale(1400).center([-160.908,62.4864]).clipAngle(30).angle(7.8)},t.geoModifiedStereographicGs48=function(){return Me(we,[95,-38]).scale(1e3).clipAngle(55).center([-96.5563,38.8675])},t.geoModifiedStereographicGs50=function(){return Me(Te,[120,-45]).scale(359.513).clipAngle(55).center([-117.474,53.0628])},t.geoModifiedStereographicMiller=function(){return Me(ke,[-20,-18]).scale(209.091).center([20,16.7214]).clipAngle(82)},t.geoModifiedStereographicLee=function(){return Me(Ae,[165,10]).scale(250).clipAngle(130).center([-165,-10])},t.geoMollweide=function(){return e.geoProjection(W).scale(169.529)},t.geoMollweideRaw=W,t.geoMtFlatPolarParabolic=function(){return e.geoProjection(Le).scale(164.859)},t.geoMtFlatPolarParabolicRaw=Le,t.geoMtFlatPolarQuartic=function(){return e.geoProjection(Ce).scale(188.209)},t.geoMtFlatPolarQuarticRaw=Ce,t.geoMtFlatPolarSinusoidal=function(){return e.geoProjection(Pe).scale(166.518)},t.geoMtFlatPolarSinusoidalRaw=Pe,t.geoNaturalEarth2=function(){return e.geoProjection(Ie).scale(175.295)},t.geoNaturalEarth2Raw=Ie,t.geoNellHammer=function(){return e.geoProjection(Oe).scale(152.63)},t.geoNellHammerRaw=Oe,t.geoInterruptedQuarticAuthalic=function(){return ae(j(1/0),ze).rotate([20,0]).scale(152.63)},t.geoNicolosi=function(){return e.geoProjection(De).scale(127.267)},t.geoNicolosiRaw=De,t.geoPatterson=function(){return e.geoProjection(Re).scale(139.319)},t.geoPattersonRaw=Re,t.geoPolyconic=function(){return e.geoProjection(Fe).scale(103.74)},t.geoPolyconicRaw=Fe,t.geoPolyhedral=Ve,t.geoPolyhedralButterfly=function(t){t=t||function(t){var r=e.geoCentroid({type:\"MultiPoint\",coordinates:t});return e.geoGnomonic().scale(1).translate([0,0]).rotate([-r[0],-r[1]])};var r=Ye.map((function(e){return{face:e,project:t(e)}}));return[-1,0,0,1,0,1,4,5].forEach((function(t,e){var n=r[t];n&&(n.children||(n.children=[])).push(r[e])})),Ve(r[0],(function(t,e){return r[t<-y/2?e<0?6:4:t<0?e<0?2:0:t0?[-r[0],0]:[180-r[0],180])};var r=Ye.map((function(e){return{face:e,project:t(e)}}));return[-1,0,0,1,0,1,4,5].forEach((function(t,e){var n=r[t];n&&(n.children||(n.children=[])).push(r[e])})),Ve(r[0],(function(t,e){return r[t<-y/2?e<0?6:4:t<0?e<0?2:0:t2||a[0]!=e[0]||a[1]!=e[1])&&(n.push(a),e=a)}return 1===n.length&&t.length>1&&n.push(r(t[t.length-1])),n}function a(t){return t.map(i)}function o(t){if(null==t)return t;var e;switch(t.type){case\"GeometryCollection\":e={type:\"GeometryCollection\",geometries:t.geometries.map(o)};break;case\"Point\":e={type:\"Point\",coordinates:r(t.coordinates)};break;case\"MultiPoint\":e={type:t.type,coordinates:n(t.coordinates)};break;case\"LineString\":e={type:t.type,coordinates:i(t.coordinates)};break;case\"MultiLineString\":case\"Polygon\":e={type:t.type,coordinates:a(t.coordinates)};break;case\"MultiPolygon\":e={type:\"MultiPolygon\",coordinates:t.coordinates.map(a)};break;default:return t}return null!=t.bbox&&(e.bbox=t.bbox),e}function s(t){var e={type:\"Feature\",properties:t.properties,geometry:o(t.geometry)};return null!=t.id&&(e.id=t.id),null!=t.bbox&&(e.bbox=t.bbox),e}if(null!=t)switch(t.type){case\"Feature\":return s(t);case\"FeatureCollection\":var l={type:\"FeatureCollection\",features:t.features.map(s)};return null!=t.bbox&&(l.bbox=t.bbox),l;default:return o(t)}return t},t.geoQuincuncial=sr,t.geoRectangularPolyconic=function(){return K(cr).scale(131.215)},t.geoRectangularPolyconicRaw=cr,t.geoRobinson=function(){return e.geoProjection(fr).scale(152.63)},t.geoRobinsonRaw=fr,t.geoSatellite=function(){var t=2,r=0,n=e.geoProjectionMutator(hr),i=n(t,r);return i.distance=function(e){return arguments.length?n(t=+e,r):t},i.tilt=function(e){return arguments.length?n(t,r=e*M):r*A},i.scale(432.147).clipAngle(E(1/t)*A-1e-6)},t.geoSatelliteRaw=hr,t.geoSinuMollweide=function(){return e.geoProjection(Kt).rotate([-20,-55]).scale(164.263).center([0,-5.4036])},t.geoSinuMollweideRaw=Kt,t.geoSinusoidal=function(){return e.geoProjection(Q).scale(152.63)},t.geoSinusoidalRaw=Q,t.geoStitch=function(t){if(null==t)return t;switch(t.type){case\"Feature\":return wr(t);case\"FeatureCollection\":var e={type:\"FeatureCollection\",features:t.features.map(wr)};return null!=t.bbox&&(e.bbox=t.bbox),e;default:return Tr(t)}},t.geoTimes=function(){return e.geoProjection(kr).scale(146.153)},t.geoTimesRaw=kr,t.geoTwoPointAzimuthal=Sr,t.geoTwoPointAzimuthalRaw=Mr,t.geoTwoPointAzimuthalUsa=function(){return Sr([-158,21.5],[-77,39]).clipAngle(60).scale(400)},t.geoTwoPointEquidistant=Lr,t.geoTwoPointEquidistantRaw=Er,t.geoTwoPointEquidistantUsa=function(){return Lr([-158,21.5],[-77,39]).clipAngle(130).scale(122.571)},t.geoVanDerGrinten=function(){return e.geoProjection(Cr).scale(79.4183)},t.geoVanDerGrintenRaw=Cr,t.geoVanDerGrinten2=function(){return e.geoProjection(Pr).scale(79.4183)},t.geoVanDerGrinten2Raw=Pr,t.geoVanDerGrinten3=function(){return e.geoProjection(Ir).scale(79.4183)},t.geoVanDerGrinten3Raw=Ir,t.geoVanDerGrinten4=function(){return e.geoProjection(Or).scale(127.16)},t.geoVanDerGrinten4Raw=Or,t.geoWagner=Dr,t.geoWagner7=function(){return Dr().poleline(65).parallels(60).inflation(0).ratio(200).scale(172.633)},t.geoWagnerRaw=zr,t.geoWagner4=function(){return e.geoProjection(Br).scale(176.84)},t.geoWagner4Raw=Br,t.geoWagner6=function(){return e.geoProjection(Nr).scale(152.63)},t.geoWagner6Raw=Nr,t.geoWiechel=function(){return e.geoProjection(jr).rotate([0,-90,45]).scale(124.75).clipAngle(179.999)},t.geoWiechelRaw=jr,t.geoWinkel3=function(){return e.geoProjection(Ur).scale(158.837)},t.geoWinkel3Raw=Ur,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{\"d3-array\":107,\"d3-geo\":114}],114:[function(t,e,r){!function(n,i){\"object\"==typeof r&&void 0!==e?i(r,t(\"d3-array\")):i((n=n||self).d3=n.d3||{},n.d3)}(this,(function(t,e){\"use strict\";function r(){return new n}function n(){this.reset()}n.prototype={constructor:n,reset:function(){this.s=this.t=0},add:function(t){a(i,t,this.t),a(this,i.s,this.s),this.s?this.t+=i.t:this.s=i.t},valueOf:function(){return this.s}};var i=new n;function a(t,e,r){var n=t.s=e+r,i=n-e,a=n-i;t.t=e-a+(r-i)}var o=1e-6,s=Math.PI,l=s/2,c=s/4,u=2*s,f=180/s,h=s/180,p=Math.abs,d=Math.atan,g=Math.atan2,m=Math.cos,v=Math.ceil,y=Math.exp,x=Math.log,b=Math.pow,_=Math.sin,w=Math.sign||function(t){return t>0?1:t<0?-1:0},T=Math.sqrt,k=Math.tan;function A(t){return t>1?0:t<-1?s:Math.acos(t)}function M(t){return t>1?l:t<-1?-l:Math.asin(t)}function S(t){return(t=_(t/2))*t}function E(){}function L(t,e){t&&P.hasOwnProperty(t.type)&&P[t.type](t,e)}var C={Feature:function(t,e){L(t.geometry,e)},FeatureCollection:function(t,e){for(var r=t.features,n=-1,i=r.length;++n=0?1:-1,i=n*r,a=m(e=(e*=h)/2+c),o=_(e),s=N*o,l=B*a+s*m(i),u=s*n*_(i);j.add(g(u,l)),F=t,B=a,N=o}function W(t){return[g(t[1],t[0]),M(t[2])]}function X(t){var e=t[0],r=t[1],n=m(r);return[n*m(e),n*_(e),_(r)]}function Z(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function J(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function K(t,e){t[0]+=e[0],t[1]+=e[1],t[2]+=e[2]}function Q(t,e){return[t[0]*e,t[1]*e,t[2]*e]}function $(t){var e=T(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=e,t[1]/=e,t[2]/=e}var tt,et,rt,nt,it,at,ot,st,lt,ct,ut,ft,ht,pt,dt,gt,mt,vt,yt,xt,bt,_t,wt,Tt,kt,At,Mt=r(),St={point:Et,lineStart:Ct,lineEnd:Pt,polygonStart:function(){St.point=It,St.lineStart=Ot,St.lineEnd=zt,Mt.reset(),V.polygonStart()},polygonEnd:function(){V.polygonEnd(),St.point=Et,St.lineStart=Ct,St.lineEnd=Pt,j<0?(tt=-(rt=180),et=-(nt=90)):Mt>o?nt=90:Mt<-o&&(et=-90),ct[0]=tt,ct[1]=rt},sphere:function(){tt=-(rt=180),et=-(nt=90)}};function Et(t,e){lt.push(ct=[tt=t,rt=t]),ent&&(nt=e)}function Lt(t,e){var r=X([t*h,e*h]);if(st){var n=J(st,r),i=J([n[1],-n[0],0],n);$(i),i=W(i);var a,o=t-it,s=o>0?1:-1,l=i[0]*f*s,c=p(o)>180;c^(s*itnt&&(nt=a):c^(s*it<(l=(l+360)%360-180)&&lnt&&(nt=e)),c?tDt(tt,rt)&&(rt=t):Dt(t,rt)>Dt(tt,rt)&&(tt=t):rt>=tt?(trt&&(rt=t)):t>it?Dt(tt,t)>Dt(tt,rt)&&(rt=t):Dt(t,rt)>Dt(tt,rt)&&(tt=t)}else lt.push(ct=[tt=t,rt=t]);ent&&(nt=e),st=r,it=t}function Ct(){St.point=Lt}function Pt(){ct[0]=tt,ct[1]=rt,St.point=Et,st=null}function It(t,e){if(st){var r=t-it;Mt.add(p(r)>180?r+(r>0?360:-360):r)}else at=t,ot=e;V.point(t,e),Lt(t,e)}function Ot(){V.lineStart()}function zt(){It(at,ot),V.lineEnd(),p(Mt)>o&&(tt=-(rt=180)),ct[0]=tt,ct[1]=rt,st=null}function Dt(t,e){return(e-=t)<0?e+360:e}function Rt(t,e){return t[0]-e[0]}function Ft(t,e){return t[0]<=t[1]?t[0]<=e&&e<=t[1]:es?t+Math.round(-t/u)*u:t,e]}function Qt(t,e,r){return(t%=u)?e||r?Jt(te(t),ee(e,r)):te(t):e||r?ee(e,r):Kt}function $t(t){return function(e,r){return[(e+=t)>s?e-u:e<-s?e+u:e,r]}}function te(t){var e=$t(t);return e.invert=$t(-t),e}function ee(t,e){var r=m(t),n=_(t),i=m(e),a=_(e);function o(t,e){var o=m(e),s=m(t)*o,l=_(t)*o,c=_(e),u=c*r+s*n;return[g(l*i-u*a,s*r-c*n),M(u*i+l*a)]}return o.invert=function(t,e){var o=m(e),s=m(t)*o,l=_(t)*o,c=_(e),u=c*i-l*a;return[g(l*i+c*a,s*r+u*n),M(u*r-s*n)]},o}function re(t){function e(e){return(e=t(e[0]*h,e[1]*h))[0]*=f,e[1]*=f,e}return t=Qt(t[0]*h,t[1]*h,t.length>2?t[2]*h:0),e.invert=function(e){return(e=t.invert(e[0]*h,e[1]*h))[0]*=f,e[1]*=f,e},e}function ne(t,e,r,n,i,a){if(r){var o=m(e),s=_(e),l=n*r;null==i?(i=e+n*u,a=e-l/2):(i=ie(o,i),a=ie(o,a),(n>0?ia)&&(i+=n*u));for(var c,f=i;n>0?f>a:f1&&e.push(e.pop().concat(e.shift()))},result:function(){var r=e;return e=[],t=null,r}}}function oe(t,e){return p(t[0]-e[0])=0;--a)i.point((f=u[a])[0],f[1]);else n(p.x,p.p.x,-1,i);p=p.p}u=(p=p.o).z,d=!d}while(!p.v);i.lineEnd()}}}function ce(t){if(e=t.length){for(var e,r,n=0,i=t[0];++n=0?1:-1,z=O*I,D=z>s,R=T*C;if(ue.add(g(R*O*_(z),k*P+R*m(z))),f+=D?I+O*u:I,D^b>=r^E>=r){var F=J(X(x),X(S));$(F);var B=J(a,F);$(B);var N=(D^I>=0?-1:1)*M(B[2]);(n>N||n===N&&(F[0]||F[1]))&&(h+=D^I>=0?1:-1)}}return(f<-o||f0){for(h||(a.polygonStart(),h=!0),a.lineStart(),t=0;t1&&2&i&&c.push(c.pop().concat(c.shift())),s.push(c.filter(de))}return p}}function de(t){return t.length>1}function ge(t,e){return((t=t.x)[0]<0?t[1]-l-o:l-t[1])-((e=e.x)[0]<0?e[1]-l-o:l-e[1])}var me=pe((function(){return!0}),(function(t){var e,r=NaN,n=NaN,i=NaN;return{lineStart:function(){t.lineStart(),e=1},point:function(a,c){var u=a>0?s:-s,f=p(a-r);p(f-s)0?l:-l),t.point(i,n),t.lineEnd(),t.lineStart(),t.point(u,n),t.point(a,n),e=0):i!==u&&f>=s&&(p(r-i)o?d((_(e)*(a=m(n))*_(r)-_(n)*(i=m(e))*_(t))/(i*a*s)):(e+n)/2}(r,n,a,c),t.point(i,n),t.lineEnd(),t.lineStart(),t.point(u,n),e=0),t.point(r=a,n=c),i=u},lineEnd:function(){t.lineEnd(),r=n=NaN},clean:function(){return 2-e}}}),(function(t,e,r,n){var i;if(null==t)i=r*l,n.point(-s,i),n.point(0,i),n.point(s,i),n.point(s,0),n.point(s,-i),n.point(0,-i),n.point(-s,-i),n.point(-s,0),n.point(-s,i);else if(p(t[0]-e[0])>o){var a=t[0]0,i=p(e)>o;function a(t,r){return m(t)*m(r)>e}function l(t,r,n){var i=[1,0,0],a=J(X(t),X(r)),l=Z(a,a),c=a[0],u=l-c*c;if(!u)return!n&&t;var f=e*l/u,h=-e*c/u,d=J(i,a),g=Q(i,f);K(g,Q(a,h));var m=d,v=Z(g,m),y=Z(m,m),x=v*v-y*(Z(g,g)-1);if(!(x<0)){var b=T(x),_=Q(m,(-v-b)/y);if(K(_,g),_=W(_),!n)return _;var w,k=t[0],A=r[0],M=t[1],S=r[1];A0^_[1]<(p(_[0]-k)s^(k<=_[0]&&_[0]<=A)){var C=Q(m,(-v+b)/y);return K(C,g),[_,W(C)]}}}function c(e,r){var i=n?t:s-t,a=0;return e<-i?a|=1:e>i&&(a|=2),r<-i?a|=4:r>i&&(a|=8),a}return pe(a,(function(t){var e,r,o,u,f;return{lineStart:function(){u=o=!1,f=1},point:function(h,p){var d,g=[h,p],m=a(h,p),v=n?m?0:c(h,p):m?c(h+(h<0?s:-s),p):0;if(!e&&(u=o=m)&&t.lineStart(),m!==o&&(!(d=l(e,g))||oe(e,d)||oe(g,d))&&(g[2]=1),m!==o)f=0,m?(t.lineStart(),d=l(g,e),t.point(d[0],d[1])):(d=l(e,g),t.point(d[0],d[1],2),t.lineEnd()),e=d;else if(i&&e&&n^m){var y;v&r||!(y=l(g,e,!0))||(f=0,n?(t.lineStart(),t.point(y[0][0],y[0][1]),t.point(y[1][0],y[1][1]),t.lineEnd()):(t.point(y[1][0],y[1][1]),t.lineEnd(),t.lineStart(),t.point(y[0][0],y[0][1],3)))}!m||e&&oe(e,g)||t.point(g[0],g[1]),e=g,o=m,r=v},lineEnd:function(){o&&t.lineEnd(),e=null},clean:function(){return f|(u&&o)<<1}}}),(function(e,n,i,a){ne(a,t,r,i,e,n)}),n?[0,-t]:[-s,t-s])}function ye(t,r,n,i){function a(e,a){return t<=e&&e<=n&&r<=a&&a<=i}function s(e,a,o,s){var c=0,f=0;if(null==e||(c=l(e,o))!==(f=l(a,o))||u(e,a)<0^o>0)do{s.point(0===c||3===c?t:n,c>1?i:r)}while((c=(c+o+4)%4)!==f);else s.point(a[0],a[1])}function l(e,i){return p(e[0]-t)0?0:3:p(e[0]-n)0?2:1:p(e[1]-r)0?1:0:i>0?3:2}function c(t,e){return u(t.x,e.x)}function u(t,e){var r=l(t,1),n=l(e,1);return r!==n?r-n:0===r?e[1]-t[1]:1===r?t[0]-e[0]:2===r?t[1]-e[1]:e[0]-t[0]}return function(o){var l,u,f,h,p,d,g,m,v,y,x,b=o,_=ae(),w={point:T,lineStart:function(){w.point=k,u&&u.push(f=[]);y=!0,v=!1,g=m=NaN},lineEnd:function(){l&&(k(h,p),d&&v&&_.rejoin(),l.push(_.result()));w.point=T,v&&b.lineEnd()},polygonStart:function(){b=_,l=[],u=[],x=!0},polygonEnd:function(){var r=function(){for(var e=0,r=0,n=u.length;ri&&(h-a)*(i-o)>(p-o)*(t-a)&&++e:p<=i&&(h-a)*(i-o)<(p-o)*(t-a)&&--e;return e}(),n=x&&r,a=(l=e.merge(l)).length;(n||a)&&(o.polygonStart(),n&&(o.lineStart(),s(null,null,1,o),o.lineEnd()),a&&le(l,c,r,s,o),o.polygonEnd());b=o,l=u=f=null}};function T(t,e){a(t,e)&&b.point(t,e)}function k(e,o){var s=a(e,o);if(u&&f.push([e,o]),y)h=e,p=o,d=s,y=!1,s&&(b.lineStart(),b.point(e,o));else if(s&&v)b.point(e,o);else{var l=[g=Math.max(-1e9,Math.min(1e9,g)),m=Math.max(-1e9,Math.min(1e9,m))],c=[e=Math.max(-1e9,Math.min(1e9,e)),o=Math.max(-1e9,Math.min(1e9,o))];!function(t,e,r,n,i,a){var o,s=t[0],l=t[1],c=0,u=1,f=e[0]-s,h=e[1]-l;if(o=r-s,f||!(o>0)){if(o/=f,f<0){if(o0){if(o>u)return;o>c&&(c=o)}if(o=i-s,f||!(o<0)){if(o/=f,f<0){if(o>u)return;o>c&&(c=o)}else if(f>0){if(o0)){if(o/=h,h<0){if(o0){if(o>u)return;o>c&&(c=o)}if(o=a-l,h||!(o<0)){if(o/=h,h<0){if(o>u)return;o>c&&(c=o)}else if(h>0){if(o0&&(t[0]=s+c*f,t[1]=l+c*h),u<1&&(e[0]=s+u*f,e[1]=l+u*h),!0}}}}}(l,c,t,r,n,i)?s&&(b.lineStart(),b.point(e,o),x=!1):(v||(b.lineStart(),b.point(l[0],l[1])),b.point(c[0],c[1]),s||b.lineEnd(),x=!1)}g=e,m=o,v=s}return w}}var xe,be,_e,we=r(),Te={sphere:E,point:E,lineStart:function(){Te.point=Ae,Te.lineEnd=ke},lineEnd:E,polygonStart:E,polygonEnd:E};function ke(){Te.point=Te.lineEnd=E}function Ae(t,e){xe=t*=h,be=_(e*=h),_e=m(e),Te.point=Me}function Me(t,e){t*=h;var r=_(e*=h),n=m(e),i=p(t-xe),a=m(i),o=n*_(i),s=_e*r-be*n*a,l=be*r+_e*n*a;we.add(g(T(o*o+s*s),l)),xe=t,be=r,_e=n}function Se(t){return we.reset(),z(t,Te),+we}var Ee=[null,null],Le={type:\"LineString\",coordinates:Ee};function Ce(t,e){return Ee[0]=t,Ee[1]=e,Se(Le)}var Pe={Feature:function(t,e){return Oe(t.geometry,e)},FeatureCollection:function(t,e){for(var r=t.features,n=-1,i=r.length;++n0&&(i=Ce(t[a],t[a-1]))>0&&r<=i&&n<=i&&(r+n-i)*(1-Math.pow((r-n)/i,2))<1e-12*i)return!0;r=n}return!1}function Re(t,e){return!!he(t.map(Fe),Be(e))}function Fe(t){return(t=t.map(Be)).pop(),t}function Be(t){return[t[0]*h,t[1]*h]}function Ne(t,r,n){var i=e.range(t,r-o,n).concat(r);return function(t){return i.map((function(e){return[t,e]}))}}function je(t,r,n){var i=e.range(t,r-o,n).concat(r);return function(t){return i.map((function(e){return[e,t]}))}}function Ue(){var t,r,n,i,a,s,l,c,u,f,h,d,g=10,m=g,y=90,x=360,b=2.5;function _(){return{type:\"MultiLineString\",coordinates:w()}}function w(){return e.range(v(i/y)*y,n,y).map(h).concat(e.range(v(c/x)*x,l,x).map(d)).concat(e.range(v(r/g)*g,t,g).filter((function(t){return p(t%y)>o})).map(u)).concat(e.range(v(s/m)*m,a,m).filter((function(t){return p(t%x)>o})).map(f))}return _.lines=function(){return w().map((function(t){return{type:\"LineString\",coordinates:t}}))},_.outline=function(){return{type:\"Polygon\",coordinates:[h(i).concat(d(l).slice(1),h(n).reverse().slice(1),d(c).reverse().slice(1))]}},_.extent=function(t){return arguments.length?_.extentMajor(t).extentMinor(t):_.extentMinor()},_.extentMajor=function(t){return arguments.length?(i=+t[0][0],n=+t[1][0],c=+t[0][1],l=+t[1][1],i>n&&(t=i,i=n,n=t),c>l&&(t=c,c=l,l=t),_.precision(b)):[[i,c],[n,l]]},_.extentMinor=function(e){return arguments.length?(r=+e[0][0],t=+e[1][0],s=+e[0][1],a=+e[1][1],r>t&&(e=r,r=t,t=e),s>a&&(e=s,s=a,a=e),_.precision(b)):[[r,s],[t,a]]},_.step=function(t){return arguments.length?_.stepMajor(t).stepMinor(t):_.stepMinor()},_.stepMajor=function(t){return arguments.length?(y=+t[0],x=+t[1],_):[y,x]},_.stepMinor=function(t){return arguments.length?(g=+t[0],m=+t[1],_):[g,m]},_.precision=function(e){return arguments.length?(b=+e,u=Ne(s,a,90),f=je(r,t,b),h=Ne(c,l,90),d=je(i,n,b),_):b},_.extentMajor([[-180,-90+o],[180,90-o]]).extentMinor([[-180,-80-o],[180,80+o]])}function Ve(t){return t}var He,qe,Ge,Ye,We=r(),Xe=r(),Ze={point:E,lineStart:E,lineEnd:E,polygonStart:function(){Ze.lineStart=Je,Ze.lineEnd=$e},polygonEnd:function(){Ze.lineStart=Ze.lineEnd=Ze.point=E,We.add(p(Xe)),Xe.reset()},result:function(){var t=We/2;return We.reset(),t}};function Je(){Ze.point=Ke}function Ke(t,e){Ze.point=Qe,He=Ge=t,qe=Ye=e}function Qe(t,e){Xe.add(Ye*t-Ge*e),Ge=t,Ye=e}function $e(){Qe(He,qe)}var tr=1/0,er=tr,rr=-tr,nr=rr,ir={point:function(t,e){trr&&(rr=t);enr&&(nr=e)},lineStart:E,lineEnd:E,polygonStart:E,polygonEnd:E,result:function(){var t=[[tr,er],[rr,nr]];return rr=nr=-(er=tr=1/0),t}};var ar,or,sr,lr,cr=0,ur=0,fr=0,hr=0,pr=0,dr=0,gr=0,mr=0,vr=0,yr={point:xr,lineStart:br,lineEnd:Tr,polygonStart:function(){yr.lineStart=kr,yr.lineEnd=Ar},polygonEnd:function(){yr.point=xr,yr.lineStart=br,yr.lineEnd=Tr},result:function(){var t=vr?[gr/vr,mr/vr]:dr?[hr/dr,pr/dr]:fr?[cr/fr,ur/fr]:[NaN,NaN];return cr=ur=fr=hr=pr=dr=gr=mr=vr=0,t}};function xr(t,e){cr+=t,ur+=e,++fr}function br(){yr.point=_r}function _r(t,e){yr.point=wr,xr(sr=t,lr=e)}function wr(t,e){var r=t-sr,n=e-lr,i=T(r*r+n*n);hr+=i*(sr+t)/2,pr+=i*(lr+e)/2,dr+=i,xr(sr=t,lr=e)}function Tr(){yr.point=xr}function kr(){yr.point=Mr}function Ar(){Sr(ar,or)}function Mr(t,e){yr.point=Sr,xr(ar=sr=t,or=lr=e)}function Sr(t,e){var r=t-sr,n=e-lr,i=T(r*r+n*n);hr+=i*(sr+t)/2,pr+=i*(lr+e)/2,dr+=i,gr+=(i=lr*t-sr*e)*(sr+t),mr+=i*(lr+e),vr+=3*i,xr(sr=t,lr=e)}function Er(t){this._context=t}Er.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._context.moveTo(t,e),this._point=1;break;case 1:this._context.lineTo(t,e);break;default:this._context.moveTo(t+this._radius,e),this._context.arc(t,e,this._radius,0,u)}},result:E};var Lr,Cr,Pr,Ir,Or,zr=r(),Dr={point:E,lineStart:function(){Dr.point=Rr},lineEnd:function(){Lr&&Fr(Cr,Pr),Dr.point=E},polygonStart:function(){Lr=!0},polygonEnd:function(){Lr=null},result:function(){var t=+zr;return zr.reset(),t}};function Rr(t,e){Dr.point=Fr,Cr=Ir=t,Pr=Or=e}function Fr(t,e){Ir-=t,Or-=e,zr.add(T(Ir*Ir+Or*Or)),Ir=t,Or=e}function Br(){this._string=[]}function Nr(t){return\"m0,\"+t+\"a\"+t+\",\"+t+\" 0 1,1 0,\"+-2*t+\"a\"+t+\",\"+t+\" 0 1,1 0,\"+2*t+\"z\"}function jr(t){return function(e){var r=new Ur;for(var n in t)r[n]=t[n];return r.stream=e,r}}function Ur(){}function Vr(t,e,r){var n=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=n&&t.clipExtent(null),z(r,t.stream(ir)),e(ir.result()),null!=n&&t.clipExtent(n),t}function Hr(t,e,r){return Vr(t,(function(r){var n=e[1][0]-e[0][0],i=e[1][1]-e[0][1],a=Math.min(n/(r[1][0]-r[0][0]),i/(r[1][1]-r[0][1])),o=+e[0][0]+(n-a*(r[1][0]+r[0][0]))/2,s=+e[0][1]+(i-a*(r[1][1]+r[0][1]))/2;t.scale(150*a).translate([o,s])}),r)}function qr(t,e,r){return Hr(t,[[0,0],e],r)}function Gr(t,e,r){return Vr(t,(function(r){var n=+e,i=n/(r[1][0]-r[0][0]),a=(n-i*(r[1][0]+r[0][0]))/2,o=-i*r[0][1];t.scale(150*i).translate([a,o])}),r)}function Yr(t,e,r){return Vr(t,(function(r){var n=+e,i=n/(r[1][1]-r[0][1]),a=-i*r[0][0],o=(n-i*(r[1][1]+r[0][1]))/2;t.scale(150*i).translate([a,o])}),r)}Br.prototype={_radius:4.5,_circle:Nr(4.5),pointRadius:function(t){return(t=+t)!==this._radius&&(this._radius=t,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push(\"Z\"),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._string.push(\"M\",t,\",\",e),this._point=1;break;case 1:this._string.push(\"L\",t,\",\",e);break;default:null==this._circle&&(this._circle=Nr(this._radius)),this._string.push(\"M\",t,\",\",e,this._circle)}},result:function(){if(this._string.length){var t=this._string.join(\"\");return this._string=[],t}return null}},Ur.prototype={constructor:Ur,point:function(t,e){this.stream.point(t,e)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var Wr=m(30*h);function Xr(t,e){return+e?function(t,e){function r(n,i,a,s,l,c,u,f,h,d,m,v,y,x){var b=u-n,_=f-i,w=b*b+_*_;if(w>4*e&&y--){var k=s+d,A=l+m,S=c+v,E=T(k*k+A*A+S*S),L=M(S/=E),C=p(p(S)-1)e||p((b*z+_*D)/w-.5)>.3||s*d+l*m+c*v2?t[2]%360*h:0,I()):[y*f,x*f,b*f]},C.angle=function(t){return arguments.length?(_=t%360*h,I()):_*f},C.reflectX=function(t){return arguments.length?(w=t?-1:1,I()):w<0},C.reflectY=function(t){return arguments.length?(k=t?-1:1,I()):k<0},C.precision=function(t){return arguments.length?(o=Xr(s,L=t*t),O()):T(L)},C.fitExtent=function(t,e){return Hr(C,t,e)},C.fitSize=function(t,e){return qr(C,t,e)},C.fitWidth=function(t,e){return Gr(C,t,e)},C.fitHeight=function(t,e){return Yr(C,t,e)},function(){return e=t.apply(this,arguments),C.invert=e.invert&&P,I()}}function tn(t){var e=0,r=s/3,n=$r(t),i=n(e,r);return i.parallels=function(t){return arguments.length?n(e=t[0]*h,r=t[1]*h):[e*f,r*f]},i}function en(t,e){var r=_(t),n=(r+_(e))/2;if(p(n)0?e<-l+o&&(e=-l+o):e>l-o&&(e=l-o);var r=i/b(fn(e),n);return[r*_(n*t),i-r*m(n*t)]}return a.invert=function(t,e){var r=i-e,a=w(n)*T(t*t+r*r),o=g(t,p(r))*w(r);return r*n<0&&(o-=s*w(t)*w(r)),[o/n,2*d(b(i/a,1/n))-l]},a}function pn(t,e){return[t,e]}function dn(t,e){var r=m(t),n=t===e?_(t):(r-m(e))/(e-t),i=r/n+t;if(p(n)o&&--i>0);return[t/(.8707+(a=n*n)*(a*(a*a*a*(.003971-.001529*a)-.013791)-.131979)),n]},Tn.invert=on(M),kn.invert=on((function(t){return 2*d(t)})),An.invert=function(t,e){return[-e,2*d(y(t))-l]},t.geoAlbers=nn,t.geoAlbersUsa=function(){var t,e,r,n,i,a,s=nn(),l=rn().rotate([154,0]).center([-2,58.5]).parallels([55,65]),c=rn().rotate([157,0]).center([-3,19.9]).parallels([8,18]),u={point:function(t,e){a=[t,e]}};function f(t){var e=t[0],o=t[1];return a=null,r.point(e,o),a||(n.point(e,o),a)||(i.point(e,o),a)}function h(){return t=e=null,f}return f.invert=function(t){var e=s.scale(),r=s.translate(),n=(t[0]-r[0])/e,i=(t[1]-r[1])/e;return(i>=.12&&i<.234&&n>=-.425&&n<-.214?l:i>=.166&&i<.234&&n>=-.214&&n<-.115?c:s).invert(t)},f.stream=function(r){return t&&e===r?t:(n=[s.stream(e=r),l.stream(r),c.stream(r)],i=n.length,t={point:function(t,e){for(var r=-1;++rDt(n[0],n[1])&&(n[1]=i[1]),Dt(i[0],n[1])>Dt(n[0],n[1])&&(n[0]=i[0])):a.push(n=i);for(o=-1/0,e=0,n=a[r=a.length-1];e<=r;n=i,++e)i=a[e],(s=Dt(n[1],i[0]))>o&&(o=s,tt=i[0],rt=n[1])}return lt=ct=null,tt===1/0||et===1/0?[[NaN,NaN],[NaN,NaN]]:[[tt,et],[rt,nt]]},t.geoCentroid=function(t){ut=ft=ht=pt=dt=gt=mt=vt=yt=xt=bt=0,z(t,Bt);var e=yt,r=xt,n=bt,i=e*e+r*r+n*n;return i<1e-12&&(e=gt,r=mt,n=vt,ft2?t[2]+90:90]):[(t=r())[0],t[1],t[2]-90]},r([0,0,90]).scale(159.155)},t.geoTransverseMercatorRaw=An,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{\"d3-array\":107}],115:[function(t,e,r){!function(t,n){\"object\"==typeof r&&void 0!==e?n(r):n((t=t||self).d3=t.d3||{})}(this,(function(t){\"use strict\";function e(t,e){return t.parent===e.parent?1:2}function r(t,e){return t+e.x}function n(t,e){return Math.max(t,e.y)}function i(t){var e=0,r=t.children,n=r&&r.length;if(n)for(;--n>=0;)e+=r[n].value;else e=1;t.value=e}function a(t,e){var r,n,i,a,s,u=new c(t),f=+t.value&&(u.value=t.value),h=[u];for(null==e&&(e=o);r=h.pop();)if(f&&(r.value=+r.data.value),(i=e(r.data))&&(s=i.length))for(r.children=new Array(s),a=s-1;a>=0;--a)h.push(n=r.children[a]=new c(i[a])),n.parent=r,n.depth=r.depth+1;return u.eachBefore(l)}function o(t){return t.children}function s(t){t.data=t.data.data}function l(t){var e=0;do{t.height=e}while((t=t.parent)&&t.height<++e)}function c(t){this.data=t,this.depth=this.height=0,this.parent=null}c.prototype=a.prototype={constructor:c,count:function(){return this.eachAfter(i)},each:function(t){var e,r,n,i,a=this,o=[a];do{for(e=o.reverse(),o=[];a=e.pop();)if(t(a),r=a.children)for(n=0,i=r.length;n=0;--r)i.push(e[r]);return this},sum:function(t){return this.eachAfter((function(e){for(var r=+t(e.data)||0,n=e.children,i=n&&n.length;--i>=0;)r+=n[i].value;e.value=r}))},sort:function(t){return this.eachBefore((function(e){e.children&&e.children.sort(t)}))},path:function(t){for(var e=this,r=function(t,e){if(t===e)return t;var r=t.ancestors(),n=e.ancestors(),i=null;t=r.pop(),e=n.pop();for(;t===e;)i=t,t=r.pop(),e=n.pop();return i}(e,t),n=[e];e!==r;)e=e.parent,n.push(e);for(var i=n.length;t!==r;)n.splice(i,0,t),t=t.parent;return n},ancestors:function(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e},descendants:function(){var t=[];return this.each((function(e){t.push(e)})),t},leaves:function(){var t=[];return this.eachBefore((function(e){e.children||t.push(e)})),t},links:function(){var t=this,e=[];return t.each((function(r){r!==t&&e.push({source:r.parent,target:r})})),e},copy:function(){return a(this).eachBefore(s)}};var u=Array.prototype.slice;function f(t){for(var e,r,n=0,i=(t=function(t){for(var e,r,n=t.length;n;)r=Math.random()*n--|0,e=t[n],t[n]=t[r],t[r]=e;return t}(u.call(t))).length,a=[];n0&&r*r>n*n+i*i}function g(t,e){for(var r=0;r(o*=o)?(n=(c+o-i)/(2*c),a=Math.sqrt(Math.max(0,o/c-n*n)),r.x=t.x-n*s-a*l,r.y=t.y-n*l+a*s):(n=(c+i-o)/(2*c),a=Math.sqrt(Math.max(0,i/c-n*n)),r.x=e.x+n*s-a*l,r.y=e.y+n*l+a*s)):(r.x=e.x+r.r,r.y=e.y)}function b(t,e){var r=t.r+e.r-1e-6,n=e.x-t.x,i=e.y-t.y;return r>0&&r*r>n*n+i*i}function _(t){var e=t._,r=t.next._,n=e.r+r.r,i=(e.x*r.r+r.x*e.r)/n,a=(e.y*r.r+r.y*e.r)/n;return i*i+a*a}function w(t){this._=t,this.next=null,this.previous=null}function T(t){if(!(i=t.length))return 0;var e,r,n,i,a,o,s,l,c,u,h;if((e=t[0]).x=0,e.y=0,!(i>1))return e.r;if(r=t[1],e.x=-r.r,r.x=e.r,r.y=0,!(i>2))return e.r+r.r;x(r,e,n=t[2]),e=new w(e),r=new w(r),n=new w(n),e.next=n.previous=r,r.next=e.previous=n,n.next=r.previous=e;t:for(s=3;sh&&(h=s),m=u*u*g,(p=Math.max(h/m,m/f))>d){u-=s;break}d=p}v.push(o={value:u,dice:l1?e:1)},r}(G);var X=function t(e){function r(t,r,n,i,a){if((o=t._squarify)&&o.ratio===e)for(var o,s,l,c,u,f=-1,h=o.length,p=t.value;++f1?e:1)},r}(G);t.cluster=function(){var t=e,i=1,a=1,o=!1;function s(e){var s,l=0;e.eachAfter((function(e){var i=e.children;i?(e.x=function(t){return t.reduce(r,0)/t.length}(i),e.y=function(t){return 1+t.reduce(n,0)}(i)):(e.x=s?l+=t(e,s):0,e.y=0,s=e)}));var c=function(t){for(var e;e=t.children;)t=e[0];return t}(e),u=function(t){for(var e;e=t.children;)t=e[e.length-1];return t}(e),f=c.x-t(c,u)/2,h=u.x+t(u,c)/2;return e.eachAfter(o?function(t){t.x=(t.x-e.x)*i,t.y=(e.y-t.y)*a}:function(t){t.x=(t.x-f)/(h-f)*i,t.y=(1-(e.y?t.y/e.y:1))*a})}return s.separation=function(e){return arguments.length?(t=e,s):t},s.size=function(t){return arguments.length?(o=!1,i=+t[0],a=+t[1],s):o?null:[i,a]},s.nodeSize=function(t){return arguments.length?(o=!0,i=+t[0],a=+t[1],s):o?[i,a]:null},s},t.hierarchy=a,t.pack=function(){var t=null,e=1,r=1,n=M;function i(i){return i.x=e/2,i.y=r/2,t?i.eachBefore(L(t)).eachAfter(C(n,.5)).eachBefore(P(1)):i.eachBefore(L(E)).eachAfter(C(M,1)).eachAfter(C(n,i.r/Math.min(e,r))).eachBefore(P(Math.min(e,r)/(2*i.r))),i}return i.radius=function(e){return arguments.length?(t=k(e),i):t},i.size=function(t){return arguments.length?(e=+t[0],r=+t[1],i):[e,r]},i.padding=function(t){return arguments.length?(n=\"function\"==typeof t?t:S(+t),i):n},i},t.packEnclose=f,t.packSiblings=function(t){return T(t),t},t.partition=function(){var t=1,e=1,r=0,n=!1;function i(i){var a=i.height+1;return i.x0=i.y0=r,i.x1=t,i.y1=e/a,i.eachBefore(function(t,e){return function(n){n.children&&O(n,n.x0,t*(n.depth+1)/e,n.x1,t*(n.depth+2)/e);var i=n.x0,a=n.y0,o=n.x1-r,s=n.y1-r;o0)throw new Error(\"cycle\");return a}return r.id=function(e){return arguments.length?(t=A(e),r):t},r.parentId=function(t){return arguments.length?(e=A(t),r):e},r},t.tree=function(){var t=B,e=1,r=1,n=null;function i(i){var l=function(t){for(var e,r,n,i,a,o=new H(t,0),s=[o];e=s.pop();)if(n=e._.children)for(e.children=new Array(a=n.length),i=a-1;i>=0;--i)s.push(r=e.children[i]=new H(n[i],i)),r.parent=e;return(o.parent=new H(null,0)).children=[o],o}(i);if(l.eachAfter(a),l.parent.m=-l.z,l.eachBefore(o),n)i.eachBefore(s);else{var c=i,u=i,f=i;i.eachBefore((function(t){t.xu.x&&(u=t),t.depth>f.depth&&(f=t)}));var h=c===u?1:t(c,u)/2,p=h-c.x,d=e/(u.x+h+p),g=r/(f.depth||1);i.eachBefore((function(t){t.x=(t.x+p)*d,t.y=t.depth*g}))}return i}function a(e){var r=e.children,n=e.parent.children,i=e.i?n[e.i-1]:null;if(r){!function(t){for(var e,r=0,n=0,i=t.children,a=i.length;--a>=0;)(e=i[a]).z+=r,e.m+=r,r+=e.s+(n+=e.c)}(e);var a=(r[0].z+r[r.length-1].z)/2;i?(e.z=i.z+t(e._,i._),e.m=e.z-a):e.z=a}else i&&(e.z=i.z+t(e._,i._));e.parent.A=function(e,r,n){if(r){for(var i,a=e,o=e,s=r,l=a.parent.children[0],c=a.m,u=o.m,f=s.m,h=l.m;s=j(s),a=N(a),s&&a;)l=N(l),(o=j(o)).a=e,(i=s.z+f-a.z-c+t(s._,a._))>0&&(U(V(s,e,n),e,i),c+=i,u+=i),f+=s.m,c+=a.m,h+=l.m,u+=o.m;s&&!j(o)&&(o.t=s,o.m+=f-u),a&&!N(l)&&(l.t=a,l.m+=c-h,n=e)}return n}(e,i,e.parent.A||n[0])}function o(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function s(t){t.x*=e,t.y=t.depth*r}return i.separation=function(e){return arguments.length?(t=e,i):t},i.size=function(t){return arguments.length?(n=!1,e=+t[0],r=+t[1],i):n?null:[e,r]},i.nodeSize=function(t){return arguments.length?(n=!0,e=+t[0],r=+t[1],i):n?[e,r]:null},i},t.treemap=function(){var t=W,e=!1,r=1,n=1,i=[0],a=M,o=M,s=M,l=M,c=M;function u(t){return t.x0=t.y0=0,t.x1=r,t.y1=n,t.eachBefore(f),i=[0],e&&t.eachBefore(I),t}function f(e){var r=i[e.depth],n=e.x0+r,u=e.y0+r,f=e.x1-r,h=e.y1-r;f=r-1){var u=s[e];return u.x0=i,u.y0=a,u.x1=o,void(u.y1=l)}var f=c[e],h=n/2+f,p=e+1,d=r-1;for(;p>>1;c[g]l-a){var y=(i*v+o*m)/n;t(e,p,m,i,a,y,l),t(p,r,v,y,a,o,l)}else{var x=(a*v+l*m)/n;t(e,p,m,i,a,o,x),t(p,r,v,i,x,o,l)}}(0,l,t.value,e,r,n,i)},t.treemapDice=O,t.treemapResquarify=X,t.treemapSlice=q,t.treemapSliceDice=function(t,e,r,n,i){(1&t.depth?q:O)(t,e,r,n,i)},t.treemapSquarify=W,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{}],116:[function(t,e,r){!function(n,i){\"object\"==typeof r&&void 0!==e?i(r,t(\"d3-color\")):i((n=n||self).d3=n.d3||{},n.d3)}(this,(function(t,e){\"use strict\";function r(t,e,r,n,i){var a=t*t,o=a*t;return((1-3*t+3*a-o)*e+(4-6*a+3*o)*r+(1+3*t+3*a-3*o)*n+o*i)/6}function n(t){var e=t.length-1;return function(n){var i=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),a=t[i],o=t[i+1],s=i>0?t[i-1]:2*a-o,l=i180||r<-180?r-360*Math.round(r/360):r):a(isNaN(t)?e:t)}function l(t){return 1==(t=+t)?c:function(e,r){return r-e?function(t,e,r){return t=Math.pow(t,r),e=Math.pow(e,r)-t,r=1/r,function(n){return Math.pow(t+n*e,r)}}(e,r,t):a(isNaN(e)?r:e)}}function c(t,e){var r=e-t;return r?o(t,r):a(isNaN(t)?e:t)}var u=function t(r){var n=l(r);function i(t,r){var i=n((t=e.rgb(t)).r,(r=e.rgb(r)).r),a=n(t.g,r.g),o=n(t.b,r.b),s=c(t.opacity,r.opacity);return function(e){return t.r=i(e),t.g=a(e),t.b=o(e),t.opacity=s(e),t+\"\"}}return i.gamma=t,i}(1);function f(t){return function(r){var n,i,a=r.length,o=new Array(a),s=new Array(a),l=new Array(a);for(n=0;na&&(i=e.slice(a,i),s[o]?s[o]+=i:s[++o]=i),(r=r[0])===(n=n[0])?s[o]?s[o]+=n:s[++o]=n:(s[++o]=null,l.push({i:o,x:y(r,n)})),a=_.lastIndex;return a180?e+=360:e-t>180&&(t+=360),a.push({i:r.push(i(r)+\"rotate(\",null,n)-2,x:y(t,e)})):e&&r.push(i(r)+\"rotate(\"+e+n)}(a.rotate,o.rotate,s,l),function(t,e,r,a){t!==e?a.push({i:r.push(i(r)+\"skewX(\",null,n)-2,x:y(t,e)}):e&&r.push(i(r)+\"skewX(\"+e+n)}(a.skewX,o.skewX,s,l),function(t,e,r,n,a,o){if(t!==r||e!==n){var s=a.push(i(a)+\"scale(\",null,\",\",null,\")\");o.push({i:s-4,x:y(t,r)},{i:s-2,x:y(e,n)})}else 1===r&&1===n||a.push(i(a)+\"scale(\"+r+\",\"+n+\")\")}(a.scaleX,a.scaleY,o.scaleX,o.scaleY,s,l),a=o=null,function(t){for(var e,r=-1,n=l.length;++r1e-6)if(Math.abs(f*l-c*u)>1e-6&&a){var p=n-o,d=i-s,g=l*l+c*c,m=p*p+d*d,v=Math.sqrt(g),y=Math.sqrt(h),x=a*Math.tan((e-Math.acos((g+h-m)/(2*v*y)))/2),b=x/y,_=x/v;Math.abs(b-1)>1e-6&&(this._+=\"L\"+(t+b*u)+\",\"+(r+b*f)),this._+=\"A\"+a+\",\"+a+\",0,0,\"+ +(f*p>u*d)+\",\"+(this._x1=t+_*l)+\",\"+(this._y1=r+_*c)}else this._+=\"L\"+(this._x1=t)+\",\"+(this._y1=r);else;},arc:function(t,i,a,o,s,l){t=+t,i=+i,l=!!l;var c=(a=+a)*Math.cos(o),u=a*Math.sin(o),f=t+c,h=i+u,p=1^l,d=l?o-s:s-o;if(a<0)throw new Error(\"negative radius: \"+a);null===this._x1?this._+=\"M\"+f+\",\"+h:(Math.abs(this._x1-f)>1e-6||Math.abs(this._y1-h)>1e-6)&&(this._+=\"L\"+f+\",\"+h),a&&(d<0&&(d=d%r+r),d>n?this._+=\"A\"+a+\",\"+a+\",0,1,\"+p+\",\"+(t-c)+\",\"+(i-u)+\"A\"+a+\",\"+a+\",0,1,\"+p+\",\"+(this._x1=f)+\",\"+(this._y1=h):d>1e-6&&(this._+=\"A\"+a+\",\"+a+\",0,\"+ +(d>=e)+\",\"+p+\",\"+(this._x1=t+a*Math.cos(s))+\",\"+(this._y1=i+a*Math.sin(s))))},rect:function(t,e,r,n){this._+=\"M\"+(this._x0=this._x1=+t)+\",\"+(this._y0=this._y1=+e)+\"h\"+ +r+\"v\"+ +n+\"h\"+-r+\"Z\"},toString:function(){return this._}},t.path=a,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{}],118:[function(t,e,r){!function(t,n){\"object\"==typeof r&&void 0!==e?n(r):n((t=t||self).d3=t.d3||{})}(this,(function(t){\"use strict\";function e(t,e,r,n){if(isNaN(e)||isNaN(r))return t;var i,a,o,s,l,c,u,f,h,p=t._root,d={data:n},g=t._x0,m=t._y0,v=t._x1,y=t._y1;if(!p)return t._root=d,t;for(;p.length;)if((c=e>=(a=(g+v)/2))?g=a:v=a,(u=r>=(o=(m+y)/2))?m=o:y=o,i=p,!(p=p[f=u<<1|c]))return i[f]=d,t;if(s=+t._x.call(null,p.data),l=+t._y.call(null,p.data),e===s&&r===l)return d.next=p,i?i[f]=d:t._root=d,t;do{i=i?i[f]=new Array(4):t._root=new Array(4),(c=e>=(a=(g+v)/2))?g=a:v=a,(u=r>=(o=(m+y)/2))?m=o:y=o}while((f=u<<1|c)==(h=(l>=o)<<1|s>=a));return i[h]=p,i[f]=d,t}function r(t,e,r,n,i){this.node=t,this.x0=e,this.y0=r,this.x1=n,this.y1=i}function n(t){return t[0]}function i(t){return t[1]}function a(t,e,r){var a=new o(null==e?n:e,null==r?i:r,NaN,NaN,NaN,NaN);return null==t?a:a.addAll(t)}function o(t,e,r,n,i,a){this._x=t,this._y=e,this._x0=r,this._y0=n,this._x1=i,this._y1=a,this._root=void 0}function s(t){for(var e={data:t.data},r=e;t=t.next;)r=r.next={data:t.data};return e}var l=a.prototype=o.prototype;l.copy=function(){var t,e,r=new o(this._x,this._y,this._x0,this._y0,this._x1,this._y1),n=this._root;if(!n)return r;if(!n.length)return r._root=s(n),r;for(t=[{source:n,target:r._root=new Array(4)}];n=t.pop();)for(var i=0;i<4;++i)(e=n.source[i])&&(e.length?t.push({source:e,target:n.target[i]=new Array(4)}):n.target[i]=s(e));return r},l.add=function(t){var r=+this._x.call(null,t),n=+this._y.call(null,t);return e(this.cover(r,n),r,n,t)},l.addAll=function(t){var r,n,i,a,o=t.length,s=new Array(o),l=new Array(o),c=1/0,u=1/0,f=-1/0,h=-1/0;for(n=0;nf&&(f=i),ah&&(h=a));if(c>f||u>h)return this;for(this.cover(c,u).cover(f,h),n=0;nt||t>=i||n>e||e>=a;)switch(s=(ep||(o=c.y0)>d||(s=c.x1)=y)<<1|t>=v)&&(c=g[g.length-1],g[g.length-1]=g[g.length-1-u],g[g.length-1-u]=c)}else{var x=t-+this._x.call(null,m.data),b=e-+this._y.call(null,m.data),_=x*x+b*b;if(_=(s=(d+m)/2))?d=s:m=s,(u=o>=(l=(g+v)/2))?g=l:v=l,e=p,!(p=p[f=u<<1|c]))return this;if(!p.length)break;(e[f+1&3]||e[f+2&3]||e[f+3&3])&&(r=e,h=f)}for(;p.data!==t;)if(n=p,!(p=p.next))return this;return(i=p.next)&&delete p.next,n?(i?n.next=i:delete n.next,this):e?(i?e[f]=i:delete e[f],(p=e[0]||e[1]||e[2]||e[3])&&p===(e[3]||e[2]||e[1]||e[0])&&!p.length&&(r?r[h]=p:this._root=p),this):(this._root=i,this)},l.removeAll=function(t){for(var e=0,r=t.length;e1?0:t<-1?u:Math.acos(t)}function d(t){return t>=1?f:t<=-1?-f:Math.asin(t)}function g(t){return t.innerRadius}function m(t){return t.outerRadius}function v(t){return t.startAngle}function y(t){return t.endAngle}function x(t){return t&&t.padAngle}function b(t,e,r,n,i,a,o,s){var l=r-t,c=n-e,u=o-i,f=s-a,h=f*l-u*c;if(!(h*h<1e-12))return[t+(h=(u*(e-a)-f*(t-i))/h)*l,e+h*c]}function _(t,e,r,n,i,a,s){var l=t-r,u=e-n,f=(s?a:-a)/c(l*l+u*u),h=f*u,p=-f*l,d=t+h,g=e+p,m=r+h,v=n+p,y=(d+m)/2,x=(g+v)/2,b=m-d,_=v-g,w=b*b+_*_,T=i-a,k=d*v-m*g,A=(_<0?-1:1)*c(o(0,T*T*w-k*k)),M=(k*_-b*A)/w,S=(-k*b-_*A)/w,E=(k*_+b*A)/w,L=(-k*b+_*A)/w,C=M-y,P=S-x,I=E-y,O=L-x;return C*C+P*P>I*I+O*O&&(M=E,S=L),{cx:M,cy:S,x01:-h,y01:-p,x11:M*(i/T-1),y11:S*(i/T-1)}}function w(t){this._context=t}function T(t){return new w(t)}function k(t){return t[0]}function A(t){return t[1]}function M(){var t=k,n=A,i=r(!0),a=null,o=T,s=null;function l(r){var l,c,u,f=r.length,h=!1;for(null==a&&(s=o(u=e.path())),l=0;l<=f;++l)!(l=f;--h)c.point(v[h],y[h]);c.lineEnd(),c.areaEnd()}m&&(v[u]=+t(p,u,r),y[u]=+i(p,u,r),c.point(n?+n(p,u,r):v[u],a?+a(p,u,r):y[u]))}if(d)return c=null,d+\"\"||null}function f(){return M().defined(o).curve(l).context(s)}return u.x=function(e){return arguments.length?(t=\"function\"==typeof e?e:r(+e),n=null,u):t},u.x0=function(e){return arguments.length?(t=\"function\"==typeof e?e:r(+e),u):t},u.x1=function(t){return arguments.length?(n=null==t?null:\"function\"==typeof t?t:r(+t),u):n},u.y=function(t){return arguments.length?(i=\"function\"==typeof t?t:r(+t),a=null,u):i},u.y0=function(t){return arguments.length?(i=\"function\"==typeof t?t:r(+t),u):i},u.y1=function(t){return arguments.length?(a=null==t?null:\"function\"==typeof t?t:r(+t),u):a},u.lineX0=u.lineY0=function(){return f().x(t).y(i)},u.lineY1=function(){return f().x(t).y(a)},u.lineX1=function(){return f().x(n).y(i)},u.defined=function(t){return arguments.length?(o=\"function\"==typeof t?t:r(!!t),u):o},u.curve=function(t){return arguments.length?(l=t,null!=s&&(c=l(s)),u):l},u.context=function(t){return arguments.length?(null==t?s=c=null:c=l(s=t),u):s},u}function E(t,e){return et?1:e>=t?0:NaN}function L(t){return t}w.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e)}}};var C=I(T);function P(t){this._curve=t}function I(t){function e(e){return new P(t(e))}return e._curve=t,e}function O(t){var e=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?e(I(t)):e()._curve},t}function z(){return O(M().curve(C))}function D(){var t=S().curve(C),e=t.curve,r=t.lineX0,n=t.lineX1,i=t.lineY0,a=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return O(r())},delete t.lineX0,t.lineEndAngle=function(){return O(n())},delete t.lineX1,t.lineInnerRadius=function(){return O(i())},delete t.lineY0,t.lineOuterRadius=function(){return O(a())},delete t.lineY1,t.curve=function(t){return arguments.length?e(I(t)):e()._curve},t}function R(t,e){return[(e=+e)*Math.cos(t-=Math.PI/2),e*Math.sin(t)]}P.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,e){this._curve.point(e*Math.sin(t),e*-Math.cos(t))}};var F=Array.prototype.slice;function B(t){return t.source}function N(t){return t.target}function j(t){var n=B,i=N,a=k,o=A,s=null;function l(){var r,l=F.call(arguments),c=n.apply(this,l),u=i.apply(this,l);if(s||(s=r=e.path()),t(s,+a.apply(this,(l[0]=c,l)),+o.apply(this,l),+a.apply(this,(l[0]=u,l)),+o.apply(this,l)),r)return s=null,r+\"\"||null}return l.source=function(t){return arguments.length?(n=t,l):n},l.target=function(t){return arguments.length?(i=t,l):i},l.x=function(t){return arguments.length?(a=\"function\"==typeof t?t:r(+t),l):a},l.y=function(t){return arguments.length?(o=\"function\"==typeof t?t:r(+t),l):o},l.context=function(t){return arguments.length?(s=null==t?null:t,l):s},l}function U(t,e,r,n,i){t.moveTo(e,r),t.bezierCurveTo(e=(e+n)/2,r,e,i,n,i)}function V(t,e,r,n,i){t.moveTo(e,r),t.bezierCurveTo(e,r=(r+i)/2,n,r,n,i)}function H(t,e,r,n,i){var a=R(e,r),o=R(e,r=(r+i)/2),s=R(n,r),l=R(n,i);t.moveTo(a[0],a[1]),t.bezierCurveTo(o[0],o[1],s[0],s[1],l[0],l[1])}var q={draw:function(t,e){var r=Math.sqrt(e/u);t.moveTo(r,0),t.arc(0,0,r,0,h)}},G={draw:function(t,e){var r=Math.sqrt(e/5)/2;t.moveTo(-3*r,-r),t.lineTo(-r,-r),t.lineTo(-r,-3*r),t.lineTo(r,-3*r),t.lineTo(r,-r),t.lineTo(3*r,-r),t.lineTo(3*r,r),t.lineTo(r,r),t.lineTo(r,3*r),t.lineTo(-r,3*r),t.lineTo(-r,r),t.lineTo(-3*r,r),t.closePath()}},Y=Math.sqrt(1/3),W=2*Y,X={draw:function(t,e){var r=Math.sqrt(e/W),n=r*Y;t.moveTo(0,-r),t.lineTo(n,0),t.lineTo(0,r),t.lineTo(-n,0),t.closePath()}},Z=Math.sin(u/10)/Math.sin(7*u/10),J=Math.sin(h/10)*Z,K=-Math.cos(h/10)*Z,Q={draw:function(t,e){var r=Math.sqrt(.8908130915292852*e),n=J*r,i=K*r;t.moveTo(0,-r),t.lineTo(n,i);for(var a=1;a<5;++a){var o=h*a/5,s=Math.cos(o),l=Math.sin(o);t.lineTo(l*r,-s*r),t.lineTo(s*n-l*i,l*n+s*i)}t.closePath()}},$={draw:function(t,e){var r=Math.sqrt(e),n=-r/2;t.rect(n,n,r,r)}},tt=Math.sqrt(3),et={draw:function(t,e){var r=-Math.sqrt(e/(3*tt));t.moveTo(0,2*r),t.lineTo(-tt*r,-r),t.lineTo(tt*r,-r),t.closePath()}},rt=-.5,nt=Math.sqrt(3)/2,it=1/Math.sqrt(12),at=3*(it/2+1),ot={draw:function(t,e){var r=Math.sqrt(e/at),n=r/2,i=r*it,a=n,o=r*it+r,s=-a,l=o;t.moveTo(n,i),t.lineTo(a,o),t.lineTo(s,l),t.lineTo(rt*n-nt*i,nt*n+rt*i),t.lineTo(rt*a-nt*o,nt*a+rt*o),t.lineTo(rt*s-nt*l,nt*s+rt*l),t.lineTo(rt*n+nt*i,rt*i-nt*n),t.lineTo(rt*a+nt*o,rt*o-nt*a),t.lineTo(rt*s+nt*l,rt*l-nt*s),t.closePath()}},st=[q,G,X,$,Q,et,ot];function lt(){}function ct(t,e,r){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+r)/6)}function ut(t){this._context=t}function ft(t){this._context=t}function ht(t){this._context=t}function pt(t,e){this._basis=new ut(t),this._beta=e}ut.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:ct(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:ct(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},ft.prototype={areaStart:lt,areaEnd:lt,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:ct(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},ht.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+t)/6,n=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(r,n):this._context.moveTo(r,n);break;case 3:this._point=4;default:ct(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},pt.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,r=t.length-1;if(r>0)for(var n,i=t[0],a=e[0],o=t[r]-i,s=e[r]-a,l=-1;++l<=r;)n=l/r,this._basis.point(this._beta*t[l]+(1-this._beta)*(i+n*o),this._beta*e[l]+(1-this._beta)*(a+n*s));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};var dt=function t(e){function r(t){return 1===e?new ut(t):new pt(t,e)}return r.beta=function(e){return t(+e)},r}(.85);function gt(t,e,r){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-r),t._x2,t._y2)}function mt(t,e){this._context=t,this._k=(1-e)/6}mt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:gt(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:gt(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var vt=function t(e){function r(t){return new mt(t,e)}return r.tension=function(e){return t(+e)},r}(0);function yt(t,e){this._context=t,this._k=(1-e)/6}yt.prototype={areaStart:lt,areaEnd:lt,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:gt(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var xt=function t(e){function r(t){return new yt(t,e)}return r.tension=function(e){return t(+e)},r}(0);function bt(t,e){this._context=t,this._k=(1-e)/6}bt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:gt(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var _t=function t(e){function r(t){return new bt(t,e)}return r.tension=function(e){return t(+e)},r}(0);function wt(t,e,r){var n=t._x1,i=t._y1,a=t._x2,o=t._y2;if(t._l01_a>1e-12){var s=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,l=3*t._l01_a*(t._l01_a+t._l12_a);n=(n*s-t._x0*t._l12_2a+t._x2*t._l01_2a)/l,i=(i*s-t._y0*t._l12_2a+t._y2*t._l01_2a)/l}if(t._l23_a>1e-12){var c=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,u=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*c+t._x1*t._l23_2a-e*t._l12_2a)/u,o=(o*c+t._y1*t._l23_2a-r*t._l12_2a)/u}t._context.bezierCurveTo(n,i,a,o,t._x2,t._y2)}function Tt(t,e){this._context=t,this._alpha=e}Tt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:wt(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var kt=function t(e){function r(t){return e?new Tt(t,e):new mt(t,0)}return r.alpha=function(e){return t(+e)},r}(.5);function At(t,e){this._context=t,this._alpha=e}At.prototype={areaStart:lt,areaEnd:lt,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:wt(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Mt=function t(e){function r(t){return e?new At(t,e):new yt(t,0)}return r.alpha=function(e){return t(+e)},r}(.5);function St(t,e){this._context=t,this._alpha=e}St.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:wt(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Et=function t(e){function r(t){return e?new St(t,e):new bt(t,0)}return r.alpha=function(e){return t(+e)},r}(.5);function Lt(t){this._context=t}function Ct(t){return t<0?-1:1}function Pt(t,e,r){var n=t._x1-t._x0,i=e-t._x1,a=(t._y1-t._y0)/(n||i<0&&-0),o=(r-t._y1)/(i||n<0&&-0),s=(a*i+o*n)/(n+i);return(Ct(a)+Ct(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(s))||0}function It(t,e){var r=t._x1-t._x0;return r?(3*(t._y1-t._y0)/r-e)/2:e}function Ot(t,e,r){var n=t._x0,i=t._y0,a=t._x1,o=t._y1,s=(a-n)/3;t._context.bezierCurveTo(n+s,i+s*e,a-s,o-s*r,a,o)}function zt(t){this._context=t}function Dt(t){this._context=new Rt(t)}function Rt(t){this._context=t}function Ft(t){this._context=t}function Bt(t){var e,r,n=t.length-1,i=new Array(n),a=new Array(n),o=new Array(n);for(i[0]=0,a[0]=2,o[0]=t[0]+2*t[1],e=1;e=0;--e)i[e]=(o[e]-i[e+1])/a[e];for(a[n-1]=(t[n]+i[n-1])/2,e=0;e1)for(var r,n,i,a=1,o=t[e[0]],s=o.length;a=0;)r[e]=e;return r}function Vt(t,e){return t[e]}function Ht(t){var e=t.map(qt);return Ut(t).sort((function(t,r){return e[t]-e[r]}))}function qt(t){for(var e,r=-1,n=0,i=t.length,a=-1/0;++ra&&(a=e,n=r);return n}function Gt(t){var e=t.map(Yt);return Ut(t).sort((function(t,r){return e[t]-e[r]}))}function Yt(t){for(var e,r=0,n=-1,i=t.length;++n=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var r=this._x*(1-this._t)+t*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,e)}}this._x=t,this._y=e}},t.arc=function(){var t=g,o=m,w=r(0),T=null,k=v,A=y,M=x,S=null;function E(){var r,g,m=+t.apply(this,arguments),v=+o.apply(this,arguments),y=k.apply(this,arguments)-f,x=A.apply(this,arguments)-f,E=n(x-y),L=x>y;if(S||(S=r=e.path()),v1e-12)if(E>h-1e-12)S.moveTo(v*a(y),v*l(y)),S.arc(0,0,v,y,x,!L),m>1e-12&&(S.moveTo(m*a(x),m*l(x)),S.arc(0,0,m,x,y,L));else{var C,P,I=y,O=x,z=y,D=x,R=E,F=E,B=M.apply(this,arguments)/2,N=B>1e-12&&(T?+T.apply(this,arguments):c(m*m+v*v)),j=s(n(v-m)/2,+w.apply(this,arguments)),U=j,V=j;if(N>1e-12){var H=d(N/m*l(B)),q=d(N/v*l(B));(R-=2*H)>1e-12?(z+=H*=L?1:-1,D-=H):(R=0,z=D=(y+x)/2),(F-=2*q)>1e-12?(I+=q*=L?1:-1,O-=q):(F=0,I=O=(y+x)/2)}var G=v*a(I),Y=v*l(I),W=m*a(D),X=m*l(D);if(j>1e-12){var Z,J=v*a(O),K=v*l(O),Q=m*a(z),$=m*l(z);if(E1e-12?V>1e-12?(C=_(Q,$,G,Y,v,V,L),P=_(J,K,W,X,v,V,L),S.moveTo(C.cx+C.x01,C.cy+C.y01),V1e-12&&R>1e-12?U>1e-12?(C=_(W,X,J,K,m,-U,L),P=_(G,Y,Q,$,m,-U,L),S.lineTo(C.cx+C.x01,C.cy+C.y01),U0&&(d+=f);for(null!=e?g.sort((function(t,r){return e(m[t],m[r])})):null!=n&&g.sort((function(t,e){return n(r[t],r[e])})),s=0,c=d?(y-p*b)/d:0;s0?f*c:0)+b,m[l]={data:r[l],index:s,value:f,startAngle:v,endAngle:u,padAngle:x};return m}return s.value=function(e){return arguments.length?(t=\"function\"==typeof e?e:r(+e),s):t},s.sortValues=function(t){return arguments.length?(e=t,n=null,s):e},s.sort=function(t){return arguments.length?(n=t,e=null,s):n},s.startAngle=function(t){return arguments.length?(i=\"function\"==typeof t?t:r(+t),s):i},s.endAngle=function(t){return arguments.length?(a=\"function\"==typeof t?t:r(+t),s):a},s.padAngle=function(t){return arguments.length?(o=\"function\"==typeof t?t:r(+t),s):o},s},t.pointRadial=R,t.radialArea=D,t.radialLine=z,t.stack=function(){var t=r([]),e=Ut,n=jt,i=Vt;function a(r){var a,o,s=t.apply(this,arguments),l=r.length,c=s.length,u=new Array(c);for(a=0;a0)for(var r,n,i,a,o,s,l=0,c=t[e[0]].length;l0?(n[0]=a,n[1]=a+=i):i<0?(n[1]=o,n[0]=o+=i):(n[0]=0,n[1]=i)},t.stackOffsetExpand=function(t,e){if((n=t.length)>0){for(var r,n,i,a=0,o=t[0].length;a0){for(var r,n=0,i=t[e[0]],a=i.length;n0&&(n=(r=t[e[0]]).length)>0){for(var r,n,i,a=0,o=1;o=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:mt,s:vt,S:H,u:q,U:G,V:Y,w:W,W:X,x:null,X:null,y:Z,Y:J,Z:K,\"%\":gt},Ct={a:function(t){return f[t.getUTCDay()]},A:function(t){return u[t.getUTCDay()]},b:function(t){return yt[t.getUTCMonth()]},B:function(t){return h[t.getUTCMonth()]},c:null,d:Q,e:Q,f:nt,H:$,I:tt,j:et,L:rt,m:it,M:at,p:function(t){return c[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:mt,s:vt,S:ot,u:st,U:lt,V:ct,w:ut,W:ft,x:null,X:null,y:ht,Y:pt,Z:dt,\"%\":gt},Pt={a:function(t,e,r){var n=Tt.exec(e.slice(r));return n?(t.w=kt[n[0].toLowerCase()],r+n[0].length):-1},A:function(t,e,r){var n=_t.exec(e.slice(r));return n?(t.w=wt[n[0].toLowerCase()],r+n[0].length):-1},b:function(t,e,r){var n=St.exec(e.slice(r));return n?(t.m=Et[n[0].toLowerCase()],r+n[0].length):-1},B:function(t,e,r){var n=At.exec(e.slice(r));return n?(t.m=Mt[n[0].toLowerCase()],r+n[0].length):-1},c:function(t,e,r){return zt(t,a,e,r)},d:A,e:A,f:P,H:S,I:S,j:M,L:C,m:k,M:E,p:function(t,e,r){var n=xt.exec(e.slice(r));return n?(t.p=bt[n[0].toLowerCase()],r+n[0].length):-1},q:T,Q:O,s:z,S:L,u:m,U:v,V:y,w:g,W:x,x:function(t,e,r){return zt(t,o,e,r)},X:function(t,e,r){return zt(t,l,e,r)},y:_,Y:b,Z:w,\"%\":I};function It(t,e){return function(r){var n,i,a,o=[],l=-1,c=0,u=t.length;for(r instanceof Date||(r=new Date(+r));++l53)return null;\"w\"in c||(c.w=1),\"Z\"in c?(l=(s=n(i(c.y,0,1))).getUTCDay(),s=l>4||0===l?e.utcMonday.ceil(s):e.utcMonday(s),s=e.utcDay.offset(s,7*(c.V-1)),c.y=s.getUTCFullYear(),c.m=s.getUTCMonth(),c.d=s.getUTCDate()+(c.w+6)%7):(l=(s=r(i(c.y,0,1))).getDay(),s=l>4||0===l?e.timeMonday.ceil(s):e.timeMonday(s),s=e.timeDay.offset(s,7*(c.V-1)),c.y=s.getFullYear(),c.m=s.getMonth(),c.d=s.getDate()+(c.w+6)%7)}else(\"W\"in c||\"U\"in c)&&(\"w\"in c||(c.w=\"u\"in c?c.u%7:\"W\"in c?1:0),l=\"Z\"in c?n(i(c.y,0,1)).getUTCDay():r(i(c.y,0,1)).getDay(),c.m=0,c.d=\"W\"in c?(c.w+6)%7+7*c.W-(l+5)%7:c.w+7*c.U-(l+6)%7);return\"Z\"in c?(c.H+=c.Z/100|0,c.M+=c.Z%100,n(c)):r(c)}}function zt(t,e,r,n){for(var i,a,o=0,l=e.length,c=r.length;o=c)return-1;if(37===(i=e.charCodeAt(o++))){if(i=e.charAt(o++),!(a=Pt[i in s?e.charAt(o++):i])||(n=a(t,r,n))<0)return-1}else if(i!=r.charCodeAt(n++))return-1}return n}return Lt.x=It(o,Lt),Lt.X=It(l,Lt),Lt.c=It(a,Lt),Ct.x=It(o,Ct),Ct.X=It(l,Ct),Ct.c=It(a,Ct),{format:function(t){var e=It(t+=\"\",Lt);return e.toString=function(){return t},e},parse:function(t){var e=Ot(t+=\"\",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=It(t+=\"\",Ct);return e.toString=function(){return t},e},utcParse:function(t){var e=Ot(t+=\"\",!0);return e.toString=function(){return t},e}}}var o,s={\"-\":\"\",_:\" \",0:\"0\"},l=/^\\s*\\d+/,c=/^%/,u=/[\\\\^$*+?|[\\]().{}]/g;function f(t,e,r){var n=t<0?\"-\":\"\",i=(n?-t:t)+\"\",a=i.length;return n+(a68?1900:2e3),r+n[0].length):-1}function w(t,e,r){var n=/^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(e.slice(r,r+6));return n?(t.Z=n[1]?0:-(n[2]+(n[3]||\"00\")),r+n[0].length):-1}function T(t,e,r){var n=l.exec(e.slice(r,r+1));return n?(t.q=3*n[0]-3,r+n[0].length):-1}function k(t,e,r){var n=l.exec(e.slice(r,r+2));return n?(t.m=n[0]-1,r+n[0].length):-1}function A(t,e,r){var n=l.exec(e.slice(r,r+2));return n?(t.d=+n[0],r+n[0].length):-1}function M(t,e,r){var n=l.exec(e.slice(r,r+3));return n?(t.m=0,t.d=+n[0],r+n[0].length):-1}function S(t,e,r){var n=l.exec(e.slice(r,r+2));return n?(t.H=+n[0],r+n[0].length):-1}function E(t,e,r){var n=l.exec(e.slice(r,r+2));return n?(t.M=+n[0],r+n[0].length):-1}function L(t,e,r){var n=l.exec(e.slice(r,r+2));return n?(t.S=+n[0],r+n[0].length):-1}function C(t,e,r){var n=l.exec(e.slice(r,r+3));return n?(t.L=+n[0],r+n[0].length):-1}function P(t,e,r){var n=l.exec(e.slice(r,r+6));return n?(t.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function I(t,e,r){var n=c.exec(e.slice(r,r+1));return n?r+n[0].length:-1}function O(t,e,r){var n=l.exec(e.slice(r));return n?(t.Q=+n[0],r+n[0].length):-1}function z(t,e,r){var n=l.exec(e.slice(r));return n?(t.s=+n[0],r+n[0].length):-1}function D(t,e){return f(t.getDate(),e,2)}function R(t,e){return f(t.getHours(),e,2)}function F(t,e){return f(t.getHours()%12||12,e,2)}function B(t,r){return f(1+e.timeDay.count(e.timeYear(t),t),r,3)}function N(t,e){return f(t.getMilliseconds(),e,3)}function j(t,e){return N(t,e)+\"000\"}function U(t,e){return f(t.getMonth()+1,e,2)}function V(t,e){return f(t.getMinutes(),e,2)}function H(t,e){return f(t.getSeconds(),e,2)}function q(t){var e=t.getDay();return 0===e?7:e}function G(t,r){return f(e.timeSunday.count(e.timeYear(t)-1,t),r,2)}function Y(t,r){var n=t.getDay();return t=n>=4||0===n?e.timeThursday(t):e.timeThursday.ceil(t),f(e.timeThursday.count(e.timeYear(t),t)+(4===e.timeYear(t).getDay()),r,2)}function W(t){return t.getDay()}function X(t,r){return f(e.timeMonday.count(e.timeYear(t)-1,t),r,2)}function Z(t,e){return f(t.getFullYear()%100,e,2)}function J(t,e){return f(t.getFullYear()%1e4,e,4)}function K(t){var e=t.getTimezoneOffset();return(e>0?\"-\":(e*=-1,\"+\"))+f(e/60|0,\"0\",2)+f(e%60,\"0\",2)}function Q(t,e){return f(t.getUTCDate(),e,2)}function $(t,e){return f(t.getUTCHours(),e,2)}function tt(t,e){return f(t.getUTCHours()%12||12,e,2)}function et(t,r){return f(1+e.utcDay.count(e.utcYear(t),t),r,3)}function rt(t,e){return f(t.getUTCMilliseconds(),e,3)}function nt(t,e){return rt(t,e)+\"000\"}function it(t,e){return f(t.getUTCMonth()+1,e,2)}function at(t,e){return f(t.getUTCMinutes(),e,2)}function ot(t,e){return f(t.getUTCSeconds(),e,2)}function st(t){var e=t.getUTCDay();return 0===e?7:e}function lt(t,r){return f(e.utcSunday.count(e.utcYear(t)-1,t),r,2)}function ct(t,r){var n=t.getUTCDay();return t=n>=4||0===n?e.utcThursday(t):e.utcThursday.ceil(t),f(e.utcThursday.count(e.utcYear(t),t)+(4===e.utcYear(t).getUTCDay()),r,2)}function ut(t){return t.getUTCDay()}function ft(t,r){return f(e.utcMonday.count(e.utcYear(t)-1,t),r,2)}function ht(t,e){return f(t.getUTCFullYear()%100,e,2)}function pt(t,e){return f(t.getUTCFullYear()%1e4,e,4)}function dt(){return\"+0000\"}function gt(){return\"%\"}function mt(t){return+t}function vt(t){return Math.floor(+t/1e3)}function yt(e){return o=a(e),t.timeFormat=o.format,t.timeParse=o.parse,t.utcFormat=o.utcFormat,t.utcParse=o.utcParse,o}yt({dateTime:\"%x, %X\",date:\"%-m/%-d/%Y\",time:\"%-I:%M:%S %p\",periods:[\"AM\",\"PM\"],days:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],shortDays:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],months:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],shortMonths:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"]});var xt=Date.prototype.toISOString?function(t){return t.toISOString()}:t.utcFormat(\"%Y-%m-%dT%H:%M:%S.%LZ\");var bt=+new Date(\"2000-01-01T00:00:00.000Z\")?function(t){var e=new Date(t);return isNaN(e)?null:e}:t.utcParse(\"%Y-%m-%dT%H:%M:%S.%LZ\");t.isoFormat=xt,t.isoParse=bt,t.timeFormatDefaultLocale=yt,t.timeFormatLocale=a,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{\"d3-time\":121}],121:[function(t,e,r){!function(t,n){\"object\"==typeof r&&void 0!==e?n(r):n((t=t||self).d3=t.d3||{})}(this,(function(t){\"use strict\";var e=new Date,r=new Date;function n(t,i,a,o){function s(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return s.floor=function(e){return t(e=new Date(+e)),e},s.ceil=function(e){return t(e=new Date(e-1)),i(e,1),t(e),e},s.round=function(t){var e=s(t),r=s.ceil(t);return t-e0))return o;do{o.push(a=new Date(+e)),i(e,n),t(e)}while(a=r)for(;t(r),!e(r);)r.setTime(r-1)}),(function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;i(t,-1),!e(t););else for(;--r>=0;)for(;i(t,1),!e(t););}))},a&&(s.count=function(n,i){return e.setTime(+n),r.setTime(+i),t(e),t(r),Math.floor(a(e,r))},s.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?s.filter(o?function(e){return o(e)%t==0}:function(e){return s.count(0,e)%t==0}):s:null}),s}var i=n((function(){}),(function(t,e){t.setTime(+t+e)}),(function(t,e){return e-t}));i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?n((function(e){e.setTime(Math.floor(e/t)*t)}),(function(e,r){e.setTime(+e+r*t)}),(function(e,r){return(r-e)/t})):i:null};var a=i.range,o=n((function(t){t.setTime(t-t.getMilliseconds())}),(function(t,e){t.setTime(+t+1e3*e)}),(function(t,e){return(e-t)/1e3}),(function(t){return t.getUTCSeconds()})),s=o.range,l=n((function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds())}),(function(t,e){t.setTime(+t+6e4*e)}),(function(t,e){return(e-t)/6e4}),(function(t){return t.getMinutes()})),c=l.range,u=n((function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds()-6e4*t.getMinutes())}),(function(t,e){t.setTime(+t+36e5*e)}),(function(t,e){return(e-t)/36e5}),(function(t){return t.getHours()})),f=u.range,h=n((function(t){t.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+e)}),(function(t,e){return(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/864e5}),(function(t){return t.getDate()-1})),p=h.range;function d(t){return n((function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+7*e)}),(function(t,e){return(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/6048e5}))}var g=d(0),m=d(1),v=d(2),y=d(3),x=d(4),b=d(5),_=d(6),w=g.range,T=m.range,k=v.range,A=y.range,M=x.range,S=b.range,E=_.range,L=n((function(t){t.setDate(1),t.setHours(0,0,0,0)}),(function(t,e){t.setMonth(t.getMonth()+e)}),(function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())}),(function(t){return t.getMonth()})),C=L.range,P=n((function(t){t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,e){t.setFullYear(t.getFullYear()+e)}),(function(t,e){return e.getFullYear()-t.getFullYear()}),(function(t){return t.getFullYear()}));P.every=function(t){return isFinite(t=Math.floor(t))&&t>0?n((function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),(function(e,r){e.setFullYear(e.getFullYear()+r*t)})):null};var I=P.range,O=n((function(t){t.setUTCSeconds(0,0)}),(function(t,e){t.setTime(+t+6e4*e)}),(function(t,e){return(e-t)/6e4}),(function(t){return t.getUTCMinutes()})),z=O.range,D=n((function(t){t.setUTCMinutes(0,0,0)}),(function(t,e){t.setTime(+t+36e5*e)}),(function(t,e){return(e-t)/36e5}),(function(t){return t.getUTCHours()})),R=D.range,F=n((function(t){t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+e)}),(function(t,e){return(e-t)/864e5}),(function(t){return t.getUTCDate()-1})),B=F.range;function N(t){return n((function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+7*e)}),(function(t,e){return(e-t)/6048e5}))}var j=N(0),U=N(1),V=N(2),H=N(3),q=N(4),G=N(5),Y=N(6),W=j.range,X=U.range,Z=V.range,J=H.range,K=q.range,Q=G.range,$=Y.range,tt=n((function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCMonth(t.getUTCMonth()+e)}),(function(t,e){return e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())}),(function(t){return t.getUTCMonth()})),et=tt.range,rt=n((function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)}),(function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()}),(function(t){return t.getUTCFullYear()}));rt.every=function(t){return isFinite(t=Math.floor(t))&&t>0?n((function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),(function(e,r){e.setUTCFullYear(e.getUTCFullYear()+r*t)})):null};var nt=rt.range;t.timeDay=h,t.timeDays=p,t.timeFriday=b,t.timeFridays=S,t.timeHour=u,t.timeHours=f,t.timeInterval=n,t.timeMillisecond=i,t.timeMilliseconds=a,t.timeMinute=l,t.timeMinutes=c,t.timeMonday=m,t.timeMondays=T,t.timeMonth=L,t.timeMonths=C,t.timeSaturday=_,t.timeSaturdays=E,t.timeSecond=o,t.timeSeconds=s,t.timeSunday=g,t.timeSundays=w,t.timeThursday=x,t.timeThursdays=M,t.timeTuesday=v,t.timeTuesdays=k,t.timeWednesday=y,t.timeWednesdays=A,t.timeWeek=g,t.timeWeeks=w,t.timeYear=P,t.timeYears=I,t.utcDay=F,t.utcDays=B,t.utcFriday=G,t.utcFridays=Q,t.utcHour=D,t.utcHours=R,t.utcMillisecond=i,t.utcMilliseconds=a,t.utcMinute=O,t.utcMinutes=z,t.utcMonday=U,t.utcMondays=X,t.utcMonth=tt,t.utcMonths=et,t.utcSaturday=Y,t.utcSaturdays=$,t.utcSecond=o,t.utcSeconds=s,t.utcSunday=j,t.utcSundays=W,t.utcThursday=q,t.utcThursdays=K,t.utcTuesday=V,t.utcTuesdays=Z,t.utcWednesday=H,t.utcWednesdays=J,t.utcWeek=j,t.utcWeeks=W,t.utcYear=rt,t.utcYears=nt,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{}],122:[function(t,e,r){arguments[4][121][0].apply(r,arguments)},{dup:121}],123:[function(t,e,r){!function(t,n){\"object\"==typeof r&&void 0!==e?n(r):n((t=t||self).d3=t.d3||{})}(this,(function(t){\"use strict\";var e,r,n=0,i=0,a=0,o=0,s=0,l=0,c=\"object\"==typeof performance&&performance.now?performance:Date,u=\"object\"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function f(){return s||(u(h),s=c.now()+l)}function h(){s=0}function p(){this._call=this._time=this._next=null}function d(t,e,r){var n=new p;return n.restart(t,e,r),n}function g(){f(),++n;for(var t,r=e;r;)(t=s-r._time)>=0&&r._call.call(null,t),r=r._next;--n}function m(){s=(o=c.now())+l,n=i=0;try{g()}finally{n=0,function(){var t,n,i=e,a=1/0;for(;i;)i._call?(a>i._time&&(a=i._time),t=i,i=i._next):(n=i._next,i._next=null,i=t?t._next=n:e=n);r=t,y(a)}(),s=0}}function v(){var t=c.now(),e=t-o;e>1e3&&(l-=e,o=t)}function y(t){n||(i&&(i=clearTimeout(i)),t-s>24?(t<1/0&&(i=setTimeout(m,t-c.now()-l)),a&&(a=clearInterval(a))):(a||(o=c.now(),a=setInterval(v,1e3)),n=1,u(m)))}p.prototype=d.prototype={constructor:p,restart:function(t,n,i){if(\"function\"!=typeof t)throw new TypeError(\"callback is not a function\");i=(null==i?f():+i)+(null==n?0:+n),this._next||r===this||(r?r._next=this:e=this,r=this),this._call=t,this._time=i,y()},stop:function(){this._call&&(this._call=null,this._time=1/0,y())}},t.interval=function(t,e,r){var n=new p,i=e;return null==e?(n.restart(t,e,r),n):(e=+e,r=null==r?f():+r,n.restart((function a(o){o+=i,n.restart(a,i+=e,r),t(o)}),e,r),n)},t.now=f,t.timeout=function(t,e,r){var n=new p;return e=null==e?0:+e,n.restart((function(r){n.stop(),t(r+e)}),e,r),n},t.timer=d,t.timerFlush=g,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{}],124:[function(t,e,r){e.exports=function(){for(var t=0;ts*l){var p=(h-f)/s;a[u]=1e3*p}}return a}function o(t){for(var e=[],r=t[0];r<=t[1];r++)for(var n=String.fromCharCode(r),i=t[0];i0)return function(t,e){var r,n;for(r=new Array(t),n=0;n80*r){n=l=t[0],s=c=t[1];for(var b=r;bl&&(l=u),p>c&&(c=p);d=0!==(d=Math.max(l-n,c-s))?1/d:0}return o(y,x,r,n,s,d),x}function i(t,e,r,n,i){var a,o;if(i===E(t,e,r,n)>0)for(a=e;a=e;a-=n)o=A(a,t[a],t[a+1],o);return o&&x(o,o.next)&&(M(o),o=o.next),o}function a(t,e){if(!t)return t;e||(e=t);var r,n=t;do{if(r=!1,n.steiner||!x(n,n.next)&&0!==y(n.prev,n,n.next))n=n.next;else{if(M(n),(n=e=n.prev)===n.next)break;r=!0}}while(r||n!==e);return e}function o(t,e,r,n,i,f,h){if(t){!h&&f&&function(t,e,r,n){var i=t;do{null===i.z&&(i.z=d(i.x,i.y,e,r,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next}while(i!==t);i.prevZ.nextZ=null,i.prevZ=null,function(t){var e,r,n,i,a,o,s,l,c=1;do{for(r=t,t=null,a=null,o=0;r;){for(o++,n=r,s=0,e=0;e0||l>0&&n;)0!==s&&(0===l||!n||r.z<=n.z)?(i=r,r=r.nextZ,s--):(i=n,n=n.nextZ,l--),a?a.nextZ=i:t=i,i.prevZ=a,a=i;r=n}a.nextZ=null,c*=2}while(o>1)}(i)}(t,n,i,f);for(var p,g,m=t;t.prev!==t.next;)if(p=t.prev,g=t.next,f?l(t,n,i,f):s(t))e.push(p.i/r),e.push(t.i/r),e.push(g.i/r),M(t),t=g.next,m=g.next;else if((t=g)===m){h?1===h?o(t=c(a(t),e,r),e,r,n,i,f,2):2===h&&u(t,e,r,n,i,f):o(a(t),e,r,n,i,f,1);break}}}function s(t){var e=t.prev,r=t,n=t.next;if(y(e,r,n)>=0)return!1;for(var i=t.next.next;i!==t.prev;){if(m(e.x,e.y,r.x,r.y,n.x,n.y,i.x,i.y)&&y(i.prev,i,i.next)>=0)return!1;i=i.next}return!0}function l(t,e,r,n){var i=t.prev,a=t,o=t.next;if(y(i,a,o)>=0)return!1;for(var s=i.xa.x?i.x>o.x?i.x:o.x:a.x>o.x?a.x:o.x,u=i.y>a.y?i.y>o.y?i.y:o.y:a.y>o.y?a.y:o.y,f=d(s,l,e,r,n),h=d(c,u,e,r,n),p=t.prevZ,g=t.nextZ;p&&p.z>=f&&g&&g.z<=h;){if(p!==t.prev&&p!==t.next&&m(i.x,i.y,a.x,a.y,o.x,o.y,p.x,p.y)&&y(p.prev,p,p.next)>=0)return!1;if(p=p.prevZ,g!==t.prev&&g!==t.next&&m(i.x,i.y,a.x,a.y,o.x,o.y,g.x,g.y)&&y(g.prev,g,g.next)>=0)return!1;g=g.nextZ}for(;p&&p.z>=f;){if(p!==t.prev&&p!==t.next&&m(i.x,i.y,a.x,a.y,o.x,o.y,p.x,p.y)&&y(p.prev,p,p.next)>=0)return!1;p=p.prevZ}for(;g&&g.z<=h;){if(g!==t.prev&&g!==t.next&&m(i.x,i.y,a.x,a.y,o.x,o.y,g.x,g.y)&&y(g.prev,g,g.next)>=0)return!1;g=g.nextZ}return!0}function c(t,e,r){var n=t;do{var i=n.prev,o=n.next.next;!x(i,o)&&b(i,n,n.next,o)&&T(i,o)&&T(o,i)&&(e.push(i.i/r),e.push(n.i/r),e.push(o.i/r),M(n),M(n.next),n=t=o),n=n.next}while(n!==t);return a(n)}function u(t,e,r,n,i,s){var l=t;do{for(var c=l.next.next;c!==l.prev;){if(l.i!==c.i&&v(l,c)){var u=k(l,c);return l=a(l,l.next),u=a(u,u.next),o(l,e,r,n,i,s),void o(u,e,r,n,i,s)}c=c.next}l=l.next}while(l!==t)}function f(t,e){return t.x-e.x}function h(t,e){if(e=function(t,e){var r,n=e,i=t.x,a=t.y,o=-1/0;do{if(a<=n.y&&a>=n.next.y&&n.next.y!==n.y){var s=n.x+(a-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(s<=i&&s>o){if(o=s,s===i){if(a===n.y)return n;if(a===n.next.y)return n.next}r=n.x=n.x&&n.x>=u&&i!==n.x&&m(ar.x||n.x===r.x&&p(r,n)))&&(r=n,h=l)),n=n.next}while(n!==c);return r}(t,e)){var r=k(e,t);a(e,e.next),a(r,r.next)}}function p(t,e){return y(t.prev,t,e.prev)<0&&y(e.next,t,t.next)<0}function d(t,e,r,n,i){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-r)*i)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-n)*i)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function g(t){var e=t,r=t;do{(e.x=0&&(t-o)*(n-s)-(r-o)*(e-s)>=0&&(r-o)*(a-s)-(i-o)*(n-s)>=0}function v(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){var r=t;do{if(r.i!==t.i&&r.next.i!==t.i&&r.i!==e.i&&r.next.i!==e.i&&b(r,r.next,t,e))return!0;r=r.next}while(r!==t);return!1}(t,e)&&(T(t,e)&&T(e,t)&&function(t,e){var r=t,n=!1,i=(t.x+e.x)/2,a=(t.y+e.y)/2;do{r.y>a!=r.next.y>a&&r.next.y!==r.y&&i<(r.next.x-r.x)*(a-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next}while(r!==t);return n}(t,e)&&(y(t.prev,t,e.prev)||y(t,e.prev,e))||x(t,e)&&y(t.prev,t,t.next)>0&&y(e.prev,e,e.next)>0)}function y(t,e,r){return(e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y)}function x(t,e){return t.x===e.x&&t.y===e.y}function b(t,e,r,n){var i=w(y(t,e,r)),a=w(y(t,e,n)),o=w(y(r,n,t)),s=w(y(r,n,e));return i!==a&&o!==s||(!(0!==i||!_(t,r,e))||(!(0!==a||!_(t,n,e))||(!(0!==o||!_(r,t,n))||!(0!==s||!_(r,e,n)))))}function _(t,e,r){return e.x<=Math.max(t.x,r.x)&&e.x>=Math.min(t.x,r.x)&&e.y<=Math.max(t.y,r.y)&&e.y>=Math.min(t.y,r.y)}function w(t){return t>0?1:t<0?-1:0}function T(t,e){return y(t.prev,t,t.next)<0?y(t,e,t.next)>=0&&y(t,t.prev,e)>=0:y(t,e,t.prev)<0||y(t,t.next,e)<0}function k(t,e){var r=new S(t.i,t.x,t.y),n=new S(e.i,e.x,e.y),i=t.next,a=e.prev;return t.next=e,e.prev=t,r.next=i,i.prev=r,n.next=r,r.prev=n,a.next=n,n.prev=a,n}function A(t,e,r,n){var i=new S(t,e,r);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function M(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function S(t,e,r){this.i=t,this.x=e,this.y=r,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function E(t,e,r,n){for(var i=0,a=e,o=r-n;a0&&(n+=t[i-1].length,r.holes.push(n))}return r}},{}],130:[function(t,e,r){var n=t(\"strongly-connected-components\");e.exports=function(t,e){var r,i=[],a=[],o=[],s={},l=[];function c(t){var e,n,i=!1;for(a.push(t),o[t]=!0,e=0;e=e}))}(e);for(var r,i=n(t).components.filter((function(t){return t.length>1})),a=1/0,o=0;o=55296&&y<=56319&&(w+=t[++r]),w=T?h.call(T,k,w,g):w,e?(p.value=w,d(m,g,p)):m[g]=w,++g;v=g}if(void 0===v)for(v=o(t.length),e&&(m=new e(v)),r=0;r0?1:-1}},{}],141:[function(t,e,r){\"use strict\";var n=t(\"../math/sign\"),i=Math.abs,a=Math.floor;e.exports=function(t){return isNaN(t)?0:0!==(t=Number(t))&&isFinite(t)?n(t)*a(i(t)):t}},{\"../math/sign\":138}],142:[function(t,e,r){\"use strict\";var n=t(\"./to-integer\"),i=Math.max;e.exports=function(t){return i(0,n(t))}},{\"./to-integer\":141}],143:[function(t,e,r){\"use strict\";var n=t(\"./valid-callable\"),i=t(\"./valid-value\"),a=Function.prototype.bind,o=Function.prototype.call,s=Object.keys,l=Object.prototype.propertyIsEnumerable;e.exports=function(t,e){return function(r,c){var u,f=arguments[2],h=arguments[3];return r=Object(i(r)),n(c),u=s(r),h&&u.sort(\"function\"==typeof h?a.call(h,r):void 0),\"function\"!=typeof t&&(t=u[t]),o.call(t,u,(function(t,n){return l.call(r,t)?o.call(c,f,r[t],t,r,n):e}))}}},{\"./valid-callable\":160,\"./valid-value\":162}],144:[function(t,e,r){\"use strict\";e.exports=t(\"./is-implemented\")()?Object.assign:t(\"./shim\")},{\"./is-implemented\":145,\"./shim\":146}],145:[function(t,e,r){\"use strict\";e.exports=function(){var t,e=Object.assign;return\"function\"==typeof e&&(e(t={foo:\"raz\"},{bar:\"dwa\"},{trzy:\"trzy\"}),t.foo+t.bar+t.trzy===\"razdwatrzy\")}},{}],146:[function(t,e,r){\"use strict\";var n=t(\"../keys\"),i=t(\"../valid-value\"),a=Math.max;e.exports=function(t,e){var r,o,s,l=a(arguments.length,2);for(t=Object(i(t)),s=function(n){try{t[n]=e[n]}catch(t){r||(r=t)}},o=1;o-1}},{}],166:[function(t,e,r){\"use strict\";var n=Object.prototype.toString,i=n.call(\"\");e.exports=function(t){return\"string\"==typeof t||t&&\"object\"==typeof t&&(t instanceof String||n.call(t)===i)||!1}},{}],167:[function(t,e,r){\"use strict\";var n=Object.create(null),i=Math.random;e.exports=function(){var t;do{t=i().toString(36).slice(2)}while(n[t]);return t}},{}],168:[function(t,e,r){\"use strict\";var n,i=t(\"es5-ext/object/set-prototype-of\"),a=t(\"es5-ext/string/#/contains\"),o=t(\"d\"),s=t(\"es6-symbol\"),l=t(\"./\"),c=Object.defineProperty;n=e.exports=function(t,e){if(!(this instanceof n))throw new TypeError(\"Constructor requires 'new'\");l.call(this,t),e=e?a.call(e,\"key+value\")?\"key+value\":a.call(e,\"key\")?\"key\":\"value\":\"value\",c(this,\"__kind__\",o(\"\",e))},i&&i(n,l),delete n.prototype.constructor,n.prototype=Object.create(l.prototype,{_resolve:o((function(t){return\"value\"===this.__kind__?this.__list__[t]:\"key+value\"===this.__kind__?[t,this.__list__[t]]:t}))}),c(n.prototype,s.toStringTag,o(\"c\",\"Array Iterator\"))},{\"./\":171,d:106,\"es5-ext/object/set-prototype-of\":157,\"es5-ext/string/#/contains\":163,\"es6-symbol\":175}],169:[function(t,e,r){\"use strict\";var n=t(\"es5-ext/function/is-arguments\"),i=t(\"es5-ext/object/valid-callable\"),a=t(\"es5-ext/string/is-string\"),o=t(\"./get\"),s=Array.isArray,l=Function.prototype.call,c=Array.prototype.some;e.exports=function(t,e){var r,u,f,h,p,d,g,m,v=arguments[2];if(s(t)||n(t)?r=\"array\":a(t)?r=\"string\":t=o(t),i(e),f=function(){h=!0},\"array\"!==r)if(\"string\"!==r)for(u=t.next();!u.done;){if(l.call(e,v,u.value,f),h)return;u=t.next()}else for(d=t.length,p=0;p=55296&&m<=56319&&(g+=t[++p]),l.call(e,v,g,f),!h);++p);else c.call(t,(function(t){return l.call(e,v,t,f),h}))}},{\"./get\":170,\"es5-ext/function/is-arguments\":135,\"es5-ext/object/valid-callable\":160,\"es5-ext/string/is-string\":166}],170:[function(t,e,r){\"use strict\";var n=t(\"es5-ext/function/is-arguments\"),i=t(\"es5-ext/string/is-string\"),a=t(\"./array\"),o=t(\"./string\"),s=t(\"./valid-iterable\"),l=t(\"es6-symbol\").iterator;e.exports=function(t){return\"function\"==typeof s(t)[l]?t[l]():n(t)?new a(t):i(t)?new o(t):new a(t)}},{\"./array\":168,\"./string\":173,\"./valid-iterable\":174,\"es5-ext/function/is-arguments\":135,\"es5-ext/string/is-string\":166,\"es6-symbol\":175}],171:[function(t,e,r){\"use strict\";var n,i=t(\"es5-ext/array/#/clear\"),a=t(\"es5-ext/object/assign\"),o=t(\"es5-ext/object/valid-callable\"),s=t(\"es5-ext/object/valid-value\"),l=t(\"d\"),c=t(\"d/auto-bind\"),u=t(\"es6-symbol\"),f=Object.defineProperty,h=Object.defineProperties;e.exports=n=function(t,e){if(!(this instanceof n))throw new TypeError(\"Constructor requires 'new'\");h(this,{__list__:l(\"w\",s(t)),__context__:l(\"w\",e),__nextIndex__:l(\"w\",0)}),e&&(o(e.on),e.on(\"_add\",this._onAdd),e.on(\"_delete\",this._onDelete),e.on(\"_clear\",this._onClear))},delete n.prototype.constructor,h(n.prototype,a({_next:l((function(){var t;if(this.__list__)return this.__redo__&&void 0!==(t=this.__redo__.shift())?t:this.__nextIndex__=this.__nextIndex__||(++this.__nextIndex__,this.__redo__?(this.__redo__.forEach((function(e,r){e>=t&&(this.__redo__[r]=++e)}),this),this.__redo__.push(t)):f(this,\"__redo__\",l(\"c\",[t])))})),_onDelete:l((function(t){var e;t>=this.__nextIndex__||(--this.__nextIndex__,this.__redo__&&(-1!==(e=this.__redo__.indexOf(t))&&this.__redo__.splice(e,1),this.__redo__.forEach((function(e,r){e>t&&(this.__redo__[r]=--e)}),this)))})),_onClear:l((function(){this.__redo__&&i.call(this.__redo__),this.__nextIndex__=0}))}))),f(n.prototype,u.iterator,l((function(){return this})))},{d:106,\"d/auto-bind\":105,\"es5-ext/array/#/clear\":131,\"es5-ext/object/assign\":144,\"es5-ext/object/valid-callable\":160,\"es5-ext/object/valid-value\":162,\"es6-symbol\":175}],172:[function(t,e,r){\"use strict\";var n=t(\"es5-ext/function/is-arguments\"),i=t(\"es5-ext/object/is-value\"),a=t(\"es5-ext/string/is-string\"),o=t(\"es6-symbol\").iterator,s=Array.isArray;e.exports=function(t){return!!i(t)&&(!!s(t)||(!!a(t)||(!!n(t)||\"function\"==typeof t[o])))}},{\"es5-ext/function/is-arguments\":135,\"es5-ext/object/is-value\":151,\"es5-ext/string/is-string\":166,\"es6-symbol\":175}],173:[function(t,e,r){\"use strict\";var n,i=t(\"es5-ext/object/set-prototype-of\"),a=t(\"d\"),o=t(\"es6-symbol\"),s=t(\"./\"),l=Object.defineProperty;n=e.exports=function(t){if(!(this instanceof n))throw new TypeError(\"Constructor requires 'new'\");t=String(t),s.call(this,t),l(this,\"__length__\",a(\"\",t.length))},i&&i(n,s),delete n.prototype.constructor,n.prototype=Object.create(s.prototype,{_next:a((function(){if(this.__list__)return this.__nextIndex__=55296&&e<=56319?r+this.__list__[this.__nextIndex__++]:r}))}),l(n.prototype,o.toStringTag,a(\"c\",\"String Iterator\"))},{\"./\":171,d:106,\"es5-ext/object/set-prototype-of\":157,\"es6-symbol\":175}],174:[function(t,e,r){\"use strict\";var n=t(\"./is-iterable\");e.exports=function(t){if(!n(t))throw new TypeError(t+\" is not iterable\");return t}},{\"./is-iterable\":172}],175:[function(t,e,r){\"use strict\";e.exports=t(\"./is-implemented\")()?t(\"ext/global-this\").Symbol:t(\"./polyfill\")},{\"./is-implemented\":176,\"./polyfill\":181,\"ext/global-this\":188}],176:[function(t,e,r){\"use strict\";var n=t(\"ext/global-this\"),i={object:!0,symbol:!0};e.exports=function(){var t,e=n.Symbol;if(\"function\"!=typeof e)return!1;t=e(\"test symbol\");try{String(t)}catch(t){return!1}return!!i[typeof e.iterator]&&(!!i[typeof e.toPrimitive]&&!!i[typeof e.toStringTag])}},{\"ext/global-this\":188}],177:[function(t,e,r){\"use strict\";e.exports=function(t){return!!t&&(\"symbol\"==typeof t||!!t.constructor&&(\"Symbol\"===t.constructor.name&&\"Symbol\"===t[t.constructor.toStringTag]))}},{}],178:[function(t,e,r){\"use strict\";var n=t(\"d\"),i=Object.create,a=Object.defineProperty,o=Object.prototype,s=i(null);e.exports=function(t){for(var e,r,i=0;s[t+(i||\"\")];)++i;return s[t+=i||\"\"]=!0,a(o,e=\"@@\"+t,n.gs(null,(function(t){r||(r=!0,a(this,e,n(t)),r=!1)}))),e}},{d:106}],179:[function(t,e,r){\"use strict\";var n=t(\"d\"),i=t(\"ext/global-this\").Symbol;e.exports=function(t){return Object.defineProperties(t,{hasInstance:n(\"\",i&&i.hasInstance||t(\"hasInstance\")),isConcatSpreadable:n(\"\",i&&i.isConcatSpreadable||t(\"isConcatSpreadable\")),iterator:n(\"\",i&&i.iterator||t(\"iterator\")),match:n(\"\",i&&i.match||t(\"match\")),replace:n(\"\",i&&i.replace||t(\"replace\")),search:n(\"\",i&&i.search||t(\"search\")),species:n(\"\",i&&i.species||t(\"species\")),split:n(\"\",i&&i.split||t(\"split\")),toPrimitive:n(\"\",i&&i.toPrimitive||t(\"toPrimitive\")),toStringTag:n(\"\",i&&i.toStringTag||t(\"toStringTag\")),unscopables:n(\"\",i&&i.unscopables||t(\"unscopables\"))})}},{d:106,\"ext/global-this\":188}],180:[function(t,e,r){\"use strict\";var n=t(\"d\"),i=t(\"../../../validate-symbol\"),a=Object.create(null);e.exports=function(t){return Object.defineProperties(t,{for:n((function(e){return a[e]?a[e]:a[e]=t(String(e))})),keyFor:n((function(t){var e;for(e in i(t),a)if(a[e]===t)return e}))})}},{\"../../../validate-symbol\":182,d:106}],181:[function(t,e,r){\"use strict\";var n,i,a,o=t(\"d\"),s=t(\"./validate-symbol\"),l=t(\"ext/global-this\").Symbol,c=t(\"./lib/private/generate-name\"),u=t(\"./lib/private/setup/standard-symbols\"),f=t(\"./lib/private/setup/symbol-registry\"),h=Object.create,p=Object.defineProperties,d=Object.defineProperty;if(\"function\"==typeof l)try{String(l()),a=!0}catch(t){}else l=null;i=function(t){if(this instanceof i)throw new TypeError(\"Symbol is not a constructor\");return n(t)},e.exports=n=function t(e){var r;if(this instanceof t)throw new TypeError(\"Symbol is not a constructor\");return a?l(e):(r=h(i.prototype),e=void 0===e?\"\":String(e),p(r,{__description__:o(\"\",e),__name__:o(\"\",c(e))}))},u(n),f(n),p(i.prototype,{constructor:o(n),toString:o(\"\",(function(){return this.__name__}))}),p(n.prototype,{toString:o((function(){return\"Symbol (\"+s(this).__description__+\")\"})),valueOf:o((function(){return s(this)}))}),d(n.prototype,n.toPrimitive,o(\"\",(function(){var t=s(this);return\"symbol\"==typeof t?t:t.toString()}))),d(n.prototype,n.toStringTag,o(\"c\",\"Symbol\")),d(i.prototype,n.toStringTag,o(\"c\",n.prototype[n.toStringTag])),d(i.prototype,n.toPrimitive,o(\"c\",n.prototype[n.toPrimitive]))},{\"./lib/private/generate-name\":178,\"./lib/private/setup/standard-symbols\":179,\"./lib/private/setup/symbol-registry\":180,\"./validate-symbol\":182,d:106,\"ext/global-this\":188}],182:[function(t,e,r){\"use strict\";var n=t(\"./is-symbol\");e.exports=function(t){if(!n(t))throw new TypeError(t+\" is not a symbol\");return t}},{\"./is-symbol\":177}],183:[function(t,e,r){\"use strict\";e.exports=t(\"./is-implemented\")()?WeakMap:t(\"./polyfill\")},{\"./is-implemented\":184,\"./polyfill\":186}],184:[function(t,e,r){\"use strict\";e.exports=function(){var t,e;if(\"function\"!=typeof WeakMap)return!1;try{t=new WeakMap([[e={},\"one\"],[{},\"two\"],[{},\"three\"]])}catch(t){return!1}return\"[object WeakMap]\"===String(t)&&(\"function\"==typeof t.set&&(t.set({},1)===t&&(\"function\"==typeof t.delete&&(\"function\"==typeof t.has&&\"one\"===t.get(e)))))}},{}],185:[function(t,e,r){\"use strict\";e.exports=\"function\"==typeof WeakMap&&\"[object WeakMap]\"===Object.prototype.toString.call(new WeakMap)},{}],186:[function(t,e,r){\"use strict\";var n,i=t(\"es5-ext/object/is-value\"),a=t(\"es5-ext/object/set-prototype-of\"),o=t(\"es5-ext/object/valid-object\"),s=t(\"es5-ext/object/valid-value\"),l=t(\"es5-ext/string/random-uniq\"),c=t(\"d\"),u=t(\"es6-iterator/get\"),f=t(\"es6-iterator/for-of\"),h=t(\"es6-symbol\").toStringTag,p=t(\"./is-native-implemented\"),d=Array.isArray,g=Object.defineProperty,m=Object.prototype.hasOwnProperty,v=Object.getPrototypeOf;e.exports=n=function(){var t,e=arguments[0];if(!(this instanceof n))throw new TypeError(\"Constructor requires 'new'\");return t=p&&a&&WeakMap!==n?a(new WeakMap,v(this)):this,i(e)&&(d(e)||(e=u(e))),g(t,\"__weakMapData__\",c(\"c\",\"$weakMap$\"+l())),e?(f(e,(function(e){s(e),t.set(e[0],e[1])})),t):t},p&&(a&&a(n,WeakMap),n.prototype=Object.create(WeakMap.prototype,{constructor:c(n)})),Object.defineProperties(n.prototype,{delete:c((function(t){return!!m.call(o(t),this.__weakMapData__)&&(delete t[this.__weakMapData__],!0)})),get:c((function(t){if(m.call(o(t),this.__weakMapData__))return t[this.__weakMapData__]})),has:c((function(t){return m.call(o(t),this.__weakMapData__)})),set:c((function(t,e){return g(o(t),this.__weakMapData__,c(\"c\",e)),this})),toString:c((function(){return\"[object WeakMap]\"}))}),g(n.prototype,h,c(\"c\",\"WeakMap\"))},{\"./is-native-implemented\":185,d:106,\"es5-ext/object/is-value\":151,\"es5-ext/object/set-prototype-of\":157,\"es5-ext/object/valid-object\":161,\"es5-ext/object/valid-value\":162,\"es5-ext/string/random-uniq\":167,\"es6-iterator/for-of\":169,\"es6-iterator/get\":170,\"es6-symbol\":175}],187:[function(t,e,r){var n=function(){if(\"object\"==typeof self&&self)return self;if(\"object\"==typeof window&&window)return window;throw new Error(\"Unable to resolve global `this`\")};e.exports=function(){if(this)return this;try{Object.defineProperty(Object.prototype,\"__global__\",{get:function(){return this},configurable:!0})}catch(t){return n()}try{return __global__||n()}finally{delete Object.prototype.__global__}}()},{}],188:[function(t,e,r){\"use strict\";e.exports=t(\"./is-implemented\")()?globalThis:t(\"./implementation\")},{\"./implementation\":187,\"./is-implemented\":189}],189:[function(t,e,r){\"use strict\";e.exports=function(){return\"object\"==typeof globalThis&&(!!globalThis&&globalThis.Array===Array)}},{}],190:[function(t,e,r){\"use strict\";var n=t(\"is-string-blank\");e.exports=function(t){var e=typeof t;if(\"string\"===e){var r=t;if(0===(t=+t)&&n(r))return!1}else if(\"number\"!==e)return!1;return t-t<1}},{\"is-string-blank\":237}],191:[function(t,e,r){var n=t(\"dtype\");e.exports=function(t,e,r){if(!t)throw new TypeError(\"must specify data as first parameter\");if(r=0|+(r||0),Array.isArray(t)&&t[0]&&\"number\"==typeof t[0][0]){var i,a,o,s,l=t[0].length,c=t.length*l;e&&\"string\"!=typeof e||(e=new(n(e||\"float32\"))(c+r));var u=e.length-r;if(c!==u)throw new Error(\"source length \"+c+\" (\"+l+\"x\"+t.length+\") does not match destination length \"+u);for(i=0,o=r;ie[0]-o[0]/2&&(h=o[0]/2,p+=o[1]);return r}},{\"css-font/stringify\":102}],193:[function(t,e,r){\"use strict\";function n(t,e){e||(e={}),(\"string\"==typeof t||Array.isArray(t))&&(e.family=t);var r=Array.isArray(e.family)?e.family.join(\", \"):e.family;if(!r)throw Error(\"`family` must be defined\");var s=e.size||e.fontSize||e.em||48,l=e.weight||e.fontWeight||\"\",c=(t=[e.style||e.fontStyle||\"\",l,s].join(\" \")+\"px \"+r,e.origin||\"top\");if(n.cache[r]&&s<=n.cache[r].em)return i(n.cache[r],c);var u=e.canvas||n.canvas,f=u.getContext(\"2d\"),h={upper:void 0!==e.upper?e.upper:\"H\",lower:void 0!==e.lower?e.lower:\"x\",descent:void 0!==e.descent?e.descent:\"p\",ascent:void 0!==e.ascent?e.ascent:\"h\",title:void 0!==e.title?e.title:\"i\",overshoot:void 0!==e.overshoot?e.overshoot:\"O\"},p=Math.ceil(1.5*s);u.height=p,u.width=.5*p,f.font=t;var d={top:0};f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillStyle=\"black\",f.fillText(\"H\",0,0);var g=a(f.getImageData(0,0,p,p));f.clearRect(0,0,p,p),f.textBaseline=\"bottom\",f.fillText(\"H\",0,p);var m=a(f.getImageData(0,0,p,p));d.lineHeight=d.bottom=p-m+g,f.clearRect(0,0,p,p),f.textBaseline=\"alphabetic\",f.fillText(\"H\",0,p);var v=p-a(f.getImageData(0,0,p,p))-1+g;d.baseline=d.alphabetic=v,f.clearRect(0,0,p,p),f.textBaseline=\"middle\",f.fillText(\"H\",0,.5*p);var y=a(f.getImageData(0,0,p,p));d.median=d.middle=p-y-1+g-.5*p,f.clearRect(0,0,p,p),f.textBaseline=\"hanging\",f.fillText(\"H\",0,.5*p);var x=a(f.getImageData(0,0,p,p));d.hanging=p-x-1+g-.5*p,f.clearRect(0,0,p,p),f.textBaseline=\"ideographic\",f.fillText(\"H\",0,p);var b=a(f.getImageData(0,0,p,p));if(d.ideographic=p-b-1+g,h.upper&&(f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.upper,0,0),d.upper=a(f.getImageData(0,0,p,p)),d.capHeight=d.baseline-d.upper),h.lower&&(f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.lower,0,0),d.lower=a(f.getImageData(0,0,p,p)),d.xHeight=d.baseline-d.lower),h.title&&(f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.title,0,0),d.title=a(f.getImageData(0,0,p,p))),h.ascent&&(f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.ascent,0,0),d.ascent=a(f.getImageData(0,0,p,p))),h.descent&&(f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.descent,0,0),d.descent=o(f.getImageData(0,0,p,p))),h.overshoot){f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.overshoot,0,0);var _=o(f.getImageData(0,0,p,p));d.overshoot=_-v}for(var w in d)d[w]/=s;return d.em=s,n.cache[r]=d,i(d,c)}function i(t,e){var r={};for(var n in\"string\"==typeof e&&(e=t[e]),t)\"em\"!==n&&(r[n]=t[n]-e);return r}function a(t){for(var e=t.height,r=t.data,n=3;n0;n-=4)if(0!==r[n])return Math.floor(.25*(n-3)/e)}e.exports=n,n.canvas=document.createElement(\"canvas\"),n.cache={}},{}],194:[function(t,e,r){e.exports=function(t,e){if(\"string\"!=typeof t)throw new TypeError(\"must specify type string\");if(e=e||{},\"undefined\"==typeof document&&!e.canvas)return null;var r=e.canvas||document.createElement(\"canvas\");\"number\"==typeof e.width&&(r.width=e.width);\"number\"==typeof e.height&&(r.height=e.height);var n,i=e;try{var a=[t];0===t.indexOf(\"webgl\")&&a.push(\"experimental-\"+t);for(var o=0;o halfCharStep + halfCharWidth ||\\n\\t\\t\\t\\t\\tfloor(uv.x) < halfCharStep - halfCharWidth) return;\\n\\n\\t\\t\\t\\tuv += charId * charStep;\\n\\t\\t\\t\\tuv = uv / atlasSize;\\n\\n\\t\\t\\t\\tvec4 color = fontColor;\\n\\t\\t\\t\\tvec4 mask = texture2D(atlas, uv);\\n\\n\\t\\t\\t\\tfloat maskY = lightness(mask);\\n\\t\\t\\t\\t// float colorY = lightness(color);\\n\\t\\t\\t\\tcolor.a *= maskY;\\n\\t\\t\\t\\tcolor.a *= opacity;\\n\\n\\t\\t\\t\\t// color.a += .1;\\n\\n\\t\\t\\t\\t// antialiasing, see yiq color space y-channel formula\\n\\t\\t\\t\\t// color.rgb += (1. - color.rgb) * (1. - mask.rgb);\\n\\n\\t\\t\\t\\tgl_FragColor = color;\\n\\t\\t\\t}\"});return{regl:t,draw:e,atlas:{}}},T.prototype.update=function(t){var e=this;if(\"string\"==typeof t)t={text:t};else if(!t)return;null!=(t=i(t,{position:\"position positions coord coords coordinates\",font:\"font fontFace fontface typeface cssFont css-font family fontFamily\",fontSize:\"fontSize fontsize size font-size\",text:\"text texts chars characters value values symbols\",align:\"align alignment textAlign textbaseline\",baseline:\"baseline textBaseline textbaseline\",direction:\"dir direction textDirection\",color:\"color colour fill fill-color fillColor textColor textcolor\",kerning:\"kerning kern\",range:\"range dataBox\",viewport:\"vp viewport viewBox viewbox viewPort\",opacity:\"opacity alpha transparency visible visibility opaque\",offset:\"offset positionOffset padding shift indent indentation\"},!0)).opacity&&(Array.isArray(t.opacity)?this.opacity=t.opacity.map((function(t){return parseFloat(t)})):this.opacity=parseFloat(t.opacity)),null!=t.viewport&&(this.viewport=f(t.viewport),this.viewportArray=[this.viewport.x,this.viewport.y,this.viewport.width,this.viewport.height]),null==this.viewport&&(this.viewport={x:0,y:0,width:this.gl.drawingBufferWidth,height:this.gl.drawingBufferHeight},this.viewportArray=[this.viewport.x,this.viewport.y,this.viewport.width,this.viewport.height]),null!=t.kerning&&(this.kerning=t.kerning),null!=t.offset&&(\"number\"==typeof t.offset&&(t.offset=[t.offset,0]),this.positionOffset=y(t.offset)),t.direction&&(this.direction=t.direction),t.range&&(this.range=t.range,this.scale=[1/(t.range[2]-t.range[0]),1/(t.range[3]-t.range[1])],this.translate=[-t.range[0],-t.range[1]]),t.scale&&(this.scale=t.scale),t.translate&&(this.translate=t.translate),this.scale||(this.scale=[1/this.viewport.width,1/this.viewport.height]),this.translate||(this.translate=[0,0]),this.font.length||t.font||(t.font=T.baseFontSize+\"px sans-serif\");var r,a=!1,o=!1;if(t.font&&(Array.isArray(t.font)?t.font:[t.font]).forEach((function(t,r){if(\"string\"==typeof t)try{t=n.parse(t)}catch(e){t=n.parse(T.baseFontSize+\"px \"+t)}else t=n.parse(n.stringify(t));var i=n.stringify({size:T.baseFontSize,family:t.family,stretch:_?t.stretch:void 0,variant:t.variant,weight:t.weight,style:t.style}),s=p(t.size),l=Math.round(s[0]*d(s[1]));if(l!==e.fontSize[r]&&(o=!0,e.fontSize[r]=l),!(e.font[r]&&i==e.font[r].baseString||(a=!0,e.font[r]=T.fonts[i],e.font[r]))){var c=t.family.join(\", \"),u=[t.style];t.style!=t.variant&&u.push(t.variant),t.variant!=t.weight&&u.push(t.weight),_&&t.weight!=t.stretch&&u.push(t.stretch),e.font[r]={baseString:i,family:c,weight:t.weight,stretch:t.stretch,style:t.style,variant:t.variant,width:{},kerning:{},metrics:v(c,{origin:\"top\",fontSize:T.baseFontSize,fontStyle:u.join(\" \")})},T.fonts[i]=e.font[r]}})),(a||o)&&this.font.forEach((function(r,i){var a=n.stringify({size:e.fontSize[i],family:r.family,stretch:_?r.stretch:void 0,variant:r.variant,weight:r.weight,style:r.style});if(e.fontAtlas[i]=e.shader.atlas[a],!e.fontAtlas[i]){var o=r.metrics;e.shader.atlas[a]=e.fontAtlas[i]={fontString:a,step:2*Math.ceil(e.fontSize[i]*o.bottom*.5),em:e.fontSize[i],cols:0,rows:0,height:0,width:0,chars:[],ids:{},texture:e.regl.texture()}}null==t.text&&(t.text=e.text)})),\"string\"==typeof t.text&&t.position&&t.position.length>2){for(var s=Array(.5*t.position.length),h=0;h2){for(var w=!t.position[0].length,k=u.mallocFloat(2*this.count),A=0,M=0;A1?e.align[r]:e.align[0]:e.align;if(\"number\"==typeof n)return n;switch(n){case\"right\":case\"end\":return-t;case\"center\":case\"centre\":case\"middle\":return.5*-t}return 0}))),null==this.baseline&&null==t.baseline&&(t.baseline=0),null!=t.baseline&&(this.baseline=t.baseline,Array.isArray(this.baseline)||(this.baseline=[this.baseline]),this.baselineOffset=this.baseline.map((function(t,r){var n=(e.font[r]||e.font[0]).metrics,i=0;return i+=.5*n.bottom,i+=\"number\"==typeof t?t-n.baseline:-n[t],i*=-1}))),null!=t.color)if(t.color||(t.color=\"transparent\"),\"string\"!=typeof t.color&&isNaN(t.color)){var q;if(\"number\"==typeof t.color[0]&&t.color.length>this.counts.length){var G=t.color.length;q=u.mallocUint8(G);for(var Y=(t.color.subarray||t.color.slice).bind(t.color),W=0;W4||this.baselineOffset.length>1||this.align&&this.align.length>1||this.fontAtlas.length>1||this.positionOffset.length>2){var J=Math.max(.5*this.position.length||0,.25*this.color.length||0,this.baselineOffset.length||0,this.alignOffset.length||0,this.font.length||0,this.opacity.length||0,.5*this.positionOffset.length||0);this.batch=Array(J);for(var K=0;K1?this.counts[K]:this.counts[0],offset:this.textOffsets.length>1?this.textOffsets[K]:this.textOffsets[0],color:this.color?this.color.length<=4?this.color:this.color.subarray(4*K,4*K+4):[0,0,0,255],opacity:Array.isArray(this.opacity)?this.opacity[K]:this.opacity,baseline:null!=this.baselineOffset[K]?this.baselineOffset[K]:this.baselineOffset[0],align:this.align?null!=this.alignOffset[K]?this.alignOffset[K]:this.alignOffset[0]:0,atlas:this.fontAtlas[K]||this.fontAtlas[0],positionOffset:this.positionOffset.length>2?this.positionOffset.subarray(2*K,2*K+2):this.positionOffset}}else this.count?this.batch=[{count:this.count,offset:0,color:this.color||[0,0,0,255],opacity:Array.isArray(this.opacity)?this.opacity[0]:this.opacity,baseline:this.baselineOffset[0],align:this.alignOffset?this.alignOffset[0]:0,atlas:this.fontAtlas[0],positionOffset:this.positionOffset}]:this.batch=[]},T.prototype.destroy=function(){},T.prototype.kerning=!0,T.prototype.position={constant:new Float32Array(2)},T.prototype.translate=null,T.prototype.scale=null,T.prototype.font=null,T.prototype.text=\"\",T.prototype.positionOffset=[0,0],T.prototype.opacity=1,T.prototype.color=new Uint8Array([0,0,0,255]),T.prototype.alignOffset=[0,0],T.maxAtlasSize=1024,T.atlasCanvas=document.createElement(\"canvas\"),T.atlasContext=T.atlasCanvas.getContext(\"2d\",{alpha:!1}),T.baseFontSize=64,T.fonts={},e.exports=T},{\"bit-twiddle\":81,\"color-normalize\":89,\"css-font\":99,\"detect-kerning\":125,\"es6-weak-map\":183,\"flatten-vertex-data\":191,\"font-atlas\":192,\"font-measure\":193,\"gl-util/context\":226,\"is-plain-obj\":236,\"object-assign\":247,\"parse-rect\":249,\"parse-unit\":251,\"pick-by-alias\":253,regl:283,\"to-px\":314,\"typedarray-pool\":327}],226:[function(t,e,r){(function(r){(function(){\"use strict\";var n=t(\"pick-by-alias\");function i(t){if(t.container)if(t.container==document.body)document.body.style.width||(t.canvas.width=t.width||t.pixelRatio*r.innerWidth),document.body.style.height||(t.canvas.height=t.height||t.pixelRatio*r.innerHeight);else{var e=t.container.getBoundingClientRect();t.canvas.width=t.width||e.right-e.left,t.canvas.height=t.height||e.bottom-e.top}}function a(t){return\"function\"==typeof t.getContext&&\"width\"in t&&\"height\"in t}function o(){var t=document.createElement(\"canvas\");return t.style.position=\"absolute\",t.style.top=0,t.style.left=0,t}e.exports=function(t){var e;if(t?\"string\"==typeof t&&(t={container:t}):t={},a(t)?t={container:t}:t=\"string\"==typeof(e=t).nodeName&&\"function\"==typeof e.appendChild&&\"function\"==typeof e.getBoundingClientRect?{container:t}:function(t){return\"function\"==typeof t.drawArrays||\"function\"==typeof t.drawElements}(t)?{gl:t}:n(t,{container:\"container target element el canvas holder parent parentNode wrapper use ref root node\",gl:\"gl context webgl glContext\",attrs:\"attributes attrs contextAttributes\",pixelRatio:\"pixelRatio pxRatio px ratio pxratio pixelratio\",width:\"w width\",height:\"h height\"},!0),t.pixelRatio||(t.pixelRatio=r.pixelRatio||1),t.gl)return t.gl;if(t.canvas&&(t.container=t.canvas.parentNode),t.container){if(\"string\"==typeof t.container){var s=document.querySelector(t.container);if(!s)throw Error(\"Element \"+t.container+\" is not found\");t.container=s}a(t.container)?(t.canvas=t.container,t.container=t.canvas.parentNode):t.canvas||(t.canvas=o(),t.container.appendChild(t.canvas),i(t))}else if(!t.canvas){if(\"undefined\"==typeof document)throw Error(\"Not DOM environment. Use headless-gl.\");t.container=document.body||document.documentElement,t.canvas=o(),t.container.appendChild(t.canvas),i(t)}return t.gl||[\"webgl\",\"experimental-webgl\",\"webgl-experimental\"].some((function(e){try{t.gl=t.canvas.getContext(e,t.attrs)}catch(t){}return t.gl})),t.gl}}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"pick-by-alias\":253}],227:[function(t,e,r){e.exports=function(t){\"string\"==typeof t&&(t=[t]);for(var e=[].slice.call(arguments,1),r=[],n=0;n>1,u=-7,f=r?i-1:0,h=r?-1:1,p=t[e+f];for(f+=h,a=p&(1<<-u)-1,p>>=-u,u+=s;u>0;a=256*a+t[e+f],f+=h,u-=8);for(o=a&(1<<-u)-1,a>>=-u,u+=n;u>0;o=256*o+t[e+f],f+=h,u-=8);if(0===a)a=1-c;else{if(a===l)return o?NaN:1/0*(p?-1:1);o+=Math.pow(2,n),a-=c}return(p?-1:1)*o*Math.pow(2,a-n)},r.write=function(t,e,r,n,i,a){var o,s,l,c=8*a-i-1,u=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:a-1,d=n?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,o=u):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),(e+=o+f>=1?h/l:h*Math.pow(2,1-f))*l>=2&&(o++,l/=2),o+f>=u?(s=0,o=u):o+f>=1?(s=(e*l-1)*Math.pow(2,i),o+=f):(s=e*Math.pow(2,f-1)*Math.pow(2,i),o=0));i>=8;t[r+p]=255&s,p+=d,s/=256,i-=8);for(o=o<0;t[r+p]=255&o,p+=d,o/=256,c-=8);t[r+p-d]|=128*g}},{}],231:[function(t,e,r){\"function\"==typeof Object.create?e.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:e.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}},{}],232:[function(t,e,r){e.exports=!0},{}],233:[function(t,e,r){\"use strict\";e.exports=\"undefined\"!=typeof navigator&&(/MSIE/.test(navigator.userAgent)||/Trident\\//.test(navigator.appVersion))},{}],234:[function(t,e,r){\"use strict\";e.exports=a,e.exports.isMobile=a,e.exports.default=a;var n=/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series[46]0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i,i=/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series[46]0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino|android|ipad|playbook|silk/i;function a(t){t||(t={});var e=t.ua;if(e||\"undefined\"==typeof navigator||(e=navigator.userAgent),e&&e.headers&&\"string\"==typeof e.headers[\"user-agent\"]&&(e=e.headers[\"user-agent\"]),\"string\"!=typeof e)return!1;var r=t.tablet?i.test(e):n.test(e);return!r&&t.tablet&&t.featureDetect&&navigator&&navigator.maxTouchPoints>1&&-1!==e.indexOf(\"Macintosh\")&&-1!==e.indexOf(\"Safari\")&&(r=!0),r}},{}],235:[function(t,e,r){\"use strict\";e.exports=function(t){var e=typeof t;return null!==t&&(\"object\"===e||\"function\"===e)}},{}],236:[function(t,e,r){\"use strict\";var n=Object.prototype.toString;e.exports=function(t){var e;return\"[object Object]\"===n.call(t)&&(null===(e=Object.getPrototypeOf(t))||e===Object.getPrototypeOf({}))}},{}],237:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e,r=t.length,n=0;n13)&&32!==e&&133!==e&&160!==e&&5760!==e&&6158!==e&&(e<8192||e>8205)&&8232!==e&&8233!==e&&8239!==e&&8287!==e&&8288!==e&&12288!==e&&65279!==e)return!1;return!0}},{}],238:[function(t,e,r){\"use strict\";e.exports=function(t){return\"string\"==typeof t&&(t=t.trim(),!!(/^[mzlhvcsqta]\\s*[-+.0-9][^mlhvzcsqta]+/i.test(t)&&/[\\dz]$/i.test(t)&&t.length>4))}},{}],239:[function(t,e,r){!function(t,n){\"object\"==typeof r&&void 0!==e?e.exports=n():(t=t||self).mapboxgl=n()}(this,(function(){\"use strict\";var t,e,r;function n(n,i){if(t)if(e){var a=\"var sharedChunk = {}; (\"+t+\")(sharedChunk); (\"+e+\")(sharedChunk);\",o={};t(o),(r=i(o)).workerUrl=window.URL.createObjectURL(new Blob([a],{type:\"text/javascript\"}))}else e=i;else t=i}return n(0,(function(t){function e(t,e){return t(e={exports:{}},e.exports),e.exports}var r=n;function n(t,e,r,n){this.cx=3*t,this.bx=3*(r-t)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*e,this.by=3*(n-e)-this.cy,this.ay=1-this.cy-this.by,this.p1x=t,this.p1y=n,this.p2x=r,this.p2y=n}n.prototype.sampleCurveX=function(t){return((this.ax*t+this.bx)*t+this.cx)*t},n.prototype.sampleCurveY=function(t){return((this.ay*t+this.by)*t+this.cy)*t},n.prototype.sampleCurveDerivativeX=function(t){return(3*this.ax*t+2*this.bx)*t+this.cx},n.prototype.solveCurveX=function(t,e){var r,n,i,a,o;for(void 0===e&&(e=1e-6),i=t,o=0;o<8;o++){if(a=this.sampleCurveX(i)-t,Math.abs(a)(n=1))return n;for(;ra?r=i:n=i,i=.5*(n-r)+r}return i},n.prototype.solve=function(t,e){return this.sampleCurveY(this.solveCurveX(t,e))};var i=a;function a(t,e){this.x=t,this.y=e}function o(t,e,n,i){var a=new r(t,e,n,i);return function(t){return a.solve(t)}}a.prototype={clone:function(){return new a(this.x,this.y)},add:function(t){return this.clone()._add(t)},sub:function(t){return this.clone()._sub(t)},multByPoint:function(t){return this.clone()._multByPoint(t)},divByPoint:function(t){return this.clone()._divByPoint(t)},mult:function(t){return this.clone()._mult(t)},div:function(t){return this.clone()._div(t)},rotate:function(t){return this.clone()._rotate(t)},rotateAround:function(t,e){return this.clone()._rotateAround(t,e)},matMult:function(t){return this.clone()._matMult(t)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(t){return this.x===t.x&&this.y===t.y},dist:function(t){return Math.sqrt(this.distSqr(t))},distSqr:function(t){var e=t.x-this.x,r=t.y-this.y;return e*e+r*r},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(t){return Math.atan2(this.y-t.y,this.x-t.x)},angleWith:function(t){return this.angleWithSep(t.x,t.y)},angleWithSep:function(t,e){return Math.atan2(this.x*e-this.y*t,this.x*t+this.y*e)},_matMult:function(t){var e=t[0]*this.x+t[1]*this.y,r=t[2]*this.x+t[3]*this.y;return this.x=e,this.y=r,this},_add:function(t){return this.x+=t.x,this.y+=t.y,this},_sub:function(t){return this.x-=t.x,this.y-=t.y,this},_mult:function(t){return this.x*=t,this.y*=t,this},_div:function(t){return this.x/=t,this.y/=t,this},_multByPoint:function(t){return this.x*=t.x,this.y*=t.y,this},_divByPoint:function(t){return this.x/=t.x,this.y/=t.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var t=this.y;return this.y=this.x,this.x=-t,this},_rotate:function(t){var e=Math.cos(t),r=Math.sin(t),n=e*this.x-r*this.y,i=r*this.x+e*this.y;return this.x=n,this.y=i,this},_rotateAround:function(t,e){var r=Math.cos(t),n=Math.sin(t),i=e.x+r*(this.x-e.x)-n*(this.y-e.y),a=e.y+n*(this.x-e.x)+r*(this.y-e.y);return this.x=i,this.y=a,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},a.convert=function(t){return t instanceof a?t:Array.isArray(t)?new a(t[0],t[1]):t};var s=o(.25,.1,.25,1);function l(t,e,r){return Math.min(r,Math.max(e,t))}function c(t,e,r){var n=r-e,i=((t-e)%n+n)%n+e;return i===e?r:i}function u(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];for(var n=0,i=e;n>e/4).toString(16):([1e7]+-[1e3]+-4e3+-8e3+-1e11).replace(/[018]/g,t)}()}function d(t){return!!t&&/^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(t)}function g(t,e){t.forEach((function(t){e[t]&&(e[t]=e[t].bind(e))}))}function m(t,e){return-1!==t.indexOf(e,t.length-e.length)}function v(t,e,r){var n={};for(var i in t)n[i]=e.call(r||this,t[i],i,t);return n}function y(t,e,r){var n={};for(var i in t)e.call(r||this,t[i],i,t)&&(n[i]=t[i]);return n}function x(t){return Array.isArray(t)?t.map(x):\"object\"==typeof t&&t?v(t,x):t}var b={};function _(t){b[t]||(\"undefined\"!=typeof console&&console.warn(t),b[t]=!0)}function w(t,e,r){return(r.y-t.y)*(e.x-t.x)>(e.y-t.y)*(r.x-t.x)}function T(t){for(var e=0,r=0,n=t.length,i=n-1,a=void 0,o=void 0;r@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)(?:\\=(?:([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)|(?:\\\"((?:[^\"\\\\]|\\\\.)*)\\\")))?/g,(function(t,r,n,i){var a=n||i;return e[r]=!a||a.toLowerCase(),\"\"})),e[\"max-age\"]){var r=parseInt(e[\"max-age\"],10);isNaN(r)?delete e[\"max-age\"]:e[\"max-age\"]=r}return e}var M=null;function S(t){if(null==M){var e=t.navigator?t.navigator.userAgent:null;M=!!t.safari||!(!e||!(/\\b(iPad|iPhone|iPod)\\b/.test(e)||e.match(\"Safari\")&&!e.match(\"Chrome\")))}return M}function E(t){try{var e=self[t];return e.setItem(\"_mapbox_test_\",1),e.removeItem(\"_mapbox_test_\"),!0}catch(t){return!1}}var L,C,P,I,O=self.performance&&self.performance.now?self.performance.now.bind(self.performance):Date.now.bind(Date),z=self.requestAnimationFrame||self.mozRequestAnimationFrame||self.webkitRequestAnimationFrame||self.msRequestAnimationFrame,D=self.cancelAnimationFrame||self.mozCancelAnimationFrame||self.webkitCancelAnimationFrame||self.msCancelAnimationFrame,R={now:O,frame:function(t){var e=z(t);return{cancel:function(){return D(e)}}},getImageData:function(t,e){void 0===e&&(e=0);var r=self.document.createElement(\"canvas\"),n=r.getContext(\"2d\");if(!n)throw new Error(\"failed to create canvas 2d context\");return r.width=t.width,r.height=t.height,n.drawImage(t,0,0,t.width,t.height),n.getImageData(-e,-e,t.width+2*e,t.height+2*e)},resolveURL:function(t){return L||(L=self.document.createElement(\"a\")),L.href=t,L.href},hardwareConcurrency:self.navigator.hardwareConcurrency||4,get devicePixelRatio(){return self.devicePixelRatio},get prefersReducedMotion(){return!!self.matchMedia&&(null==C&&(C=self.matchMedia(\"(prefers-reduced-motion: reduce)\")),C.matches)}},F={API_URL:\"https://api.mapbox.com\",get EVENTS_URL(){return this.API_URL?0===this.API_URL.indexOf(\"https://api.mapbox.cn\")?\"https://events.mapbox.cn/events/v2\":0===this.API_URL.indexOf(\"https://api.mapbox.com\")?\"https://events.mapbox.com/events/v2\":null:null},FEEDBACK_URL:\"https://apps.mapbox.com/feedback\",REQUIRE_ACCESS_TOKEN:!0,ACCESS_TOKEN:null,MAX_PARALLEL_IMAGE_REQUESTS:16},B={supported:!1,testSupport:function(t){if(N||!I)return;j?U(t):P=t}},N=!1,j=!1;function U(t){var e=t.createTexture();t.bindTexture(t.TEXTURE_2D,e);try{if(t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,I),t.isContextLost())return;B.supported=!0}catch(t){}t.deleteTexture(e),N=!0}self.document&&((I=self.document.createElement(\"img\")).onload=function(){P&&U(P),P=null,j=!0},I.onerror=function(){N=!0,P=null},I.src=\"data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=\");var V=\"01\";var H=function(t,e){this._transformRequestFn=t,this._customAccessToken=e,this._createSkuToken()};function q(t){return 0===t.indexOf(\"mapbox:\")}H.prototype._createSkuToken=function(){var t=function(){for(var t=\"\",e=0;e<10;e++)t+=\"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"[Math.floor(62*Math.random())];return{token:[\"1\",V,t].join(\"\"),tokenExpiresAt:Date.now()+432e5}}();this._skuToken=t.token,this._skuTokenExpiresAt=t.tokenExpiresAt},H.prototype._isSkuTokenExpired=function(){return Date.now()>this._skuTokenExpiresAt},H.prototype.transformRequest=function(t,e){return this._transformRequestFn&&this._transformRequestFn(t,e)||{url:t}},H.prototype.normalizeStyleURL=function(t,e){if(!q(t))return t;var r=X(t);return r.path=\"/styles/v1\"+r.path,this._makeAPIURL(r,this._customAccessToken||e)},H.prototype.normalizeGlyphsURL=function(t,e){if(!q(t))return t;var r=X(t);return r.path=\"/fonts/v1\"+r.path,this._makeAPIURL(r,this._customAccessToken||e)},H.prototype.normalizeSourceURL=function(t,e){if(!q(t))return t;var r=X(t);return r.path=\"/v4/\"+r.authority+\".json\",r.params.push(\"secure\"),this._makeAPIURL(r,this._customAccessToken||e)},H.prototype.normalizeSpriteURL=function(t,e,r,n){var i=X(t);return q(t)?(i.path=\"/styles/v1\"+i.path+\"/sprite\"+e+r,this._makeAPIURL(i,this._customAccessToken||n)):(i.path+=\"\"+e+r,Z(i))},H.prototype.normalizeTileURL=function(t,e){if(this._isSkuTokenExpired()&&this._createSkuToken(),t&&!q(t))return t;var r=X(t),n=R.devicePixelRatio>=2||512===e?\"@2x\":\"\",i=B.supported?\".webp\":\"$1\";r.path=r.path.replace(/(\\.(png|jpg)\\d*)(?=$)/,\"\"+n+i),r.path=r.path.replace(/^.+\\/v4\\//,\"/\"),r.path=\"/v4\"+r.path;var a=this._customAccessToken||function(t){for(var e=0,r=t;e=1&&self.localStorage.setItem(e,JSON.stringify(this.eventData))}catch(t){_(\"Unable to write to LocalStorage\")}},K.prototype.processRequests=function(t){},K.prototype.postEvent=function(t,e,r,n){var i=this;if(F.EVENTS_URL){var a=X(F.EVENTS_URL);a.params.push(\"access_token=\"+(n||F.ACCESS_TOKEN||\"\"));var o={event:this.type,created:new Date(t).toISOString(),sdkIdentifier:\"mapbox-gl-js\",sdkVersion:\"1.10.1\",skuId:V,userId:this.anonId},s=e?u(o,e):o,l={url:Z(a),headers:{\"Content-Type\":\"text/plain\"},body:JSON.stringify([s])};this.pendingRequest=bt(l,(function(t){i.pendingRequest=null,r(t),i.saveEventData(),i.processRequests(n)}))}},K.prototype.queueRequest=function(t,e){this.queue.push(t),this.processRequests(e)};var Q,$,tt=function(t){function e(){t.call(this,\"map.load\"),this.success={},this.skuToken=\"\"}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.postMapLoadEvent=function(t,e,r,n){this.skuToken=r,(F.EVENTS_URL&&n||F.ACCESS_TOKEN&&Array.isArray(t)&&t.some((function(t){return q(t)||Y(t)})))&&this.queueRequest({id:e,timestamp:Date.now()},n)},e.prototype.processRequests=function(t){var e=this;if(!this.pendingRequest&&0!==this.queue.length){var r=this.queue.shift(),n=r.id,i=r.timestamp;n&&this.success[n]||(this.anonId||this.fetchEventData(),d(this.anonId)||(this.anonId=p()),this.postEvent(i,{skuToken:this.skuToken},(function(t){t||n&&(e.success[n]=!0)}),t))}},e}(K),et=new(function(t){function e(e){t.call(this,\"appUserTurnstile\"),this._customAccessToken=e}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.postTurnstileEvent=function(t,e){F.EVENTS_URL&&F.ACCESS_TOKEN&&Array.isArray(t)&&t.some((function(t){return q(t)||Y(t)}))&&this.queueRequest(Date.now(),e)},e.prototype.processRequests=function(t){var e=this;if(!this.pendingRequest&&0!==this.queue.length){this.anonId&&this.eventData.lastSuccess&&this.eventData.tokenU||this.fetchEventData();var r=J(F.ACCESS_TOKEN),n=r?r.u:F.ACCESS_TOKEN,i=n!==this.eventData.tokenU;d(this.anonId)||(this.anonId=p(),i=!0);var a=this.queue.shift();if(this.eventData.lastSuccess){var o=new Date(this.eventData.lastSuccess),s=new Date(a),l=(a-this.eventData.lastSuccess)/864e5;i=i||l>=1||l<-1||o.getDate()!==s.getDate()}else i=!0;if(!i)return this.processRequests();this.postEvent(a,{\"enabled.telemetry\":!1},(function(t){t||(e.eventData.lastSuccess=a,e.eventData.tokenU=n)}),t)}},e}(K)),rt=et.postTurnstileEvent.bind(et),nt=new tt,it=nt.postMapLoadEvent.bind(nt),at=500,ot=50;function st(){self.caches&&!Q&&(Q=self.caches.open(\"mapbox-tiles\"))}function lt(t,e,r){if(st(),Q){var n={status:e.status,statusText:e.statusText,headers:new self.Headers};e.headers.forEach((function(t,e){return n.headers.set(e,t)}));var i=A(e.headers.get(\"Cache-Control\")||\"\");if(!i[\"no-store\"])i[\"max-age\"]&&n.headers.set(\"Expires\",new Date(r+1e3*i[\"max-age\"]).toUTCString()),new Date(n.headers.get(\"Expires\")).getTime()-r<42e4||function(t,e){if(void 0===$)try{new Response(new ReadableStream),$=!0}catch(t){$=!1}$?e(t.body):t.blob().then(e)}(e,(function(e){var r=new self.Response(e,n);st(),Q&&Q.then((function(e){return e.put(ct(t.url),r)})).catch((function(t){return _(t.message)}))}))}}function ct(t){var e=t.indexOf(\"?\");return e<0?t:t.slice(0,e)}function ut(t,e){if(st(),!Q)return e(null);var r=ct(t.url);Q.then((function(t){t.match(r).then((function(n){var i=function(t){if(!t)return!1;var e=new Date(t.headers.get(\"Expires\")||0),r=A(t.headers.get(\"Cache-Control\")||\"\");return e>Date.now()&&!r[\"no-cache\"]}(n);t.delete(r),i&&t.put(r,n.clone()),e(null,n,i)})).catch(e)})).catch(e)}var ft,ht=1/0;function pt(){return null==ft&&(ft=self.OffscreenCanvas&&new self.OffscreenCanvas(1,1).getContext(\"2d\")&&\"function\"==typeof self.createImageBitmap),ft}var dt={Unknown:\"Unknown\",Style:\"Style\",Source:\"Source\",Tile:\"Tile\",Glyphs:\"Glyphs\",SpriteImage:\"SpriteImage\",SpriteJSON:\"SpriteJSON\",Image:\"Image\"};\"function\"==typeof Object.freeze&&Object.freeze(dt);var gt=function(t){function e(e,r,n){401===r&&Y(n)&&(e+=\": you may have provided an invalid Mapbox access token. See https://www.mapbox.com/api-documentation/#access-tokens-and-token-scopes\"),t.call(this,e),this.status=r,this.url=n,this.name=this.constructor.name,this.message=e}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.toString=function(){return this.name+\": \"+this.message+\" (\"+this.status+\"): \"+this.url},e}(Error),mt=k()?function(){return self.worker&&self.worker.referrer}:function(){return(\"blob:\"===self.location.protocol?self.parent:self).location.href};function vt(t,e){var r,n=new self.AbortController,i=new self.Request(t.url,{method:t.method||\"GET\",body:t.body,credentials:t.credentials,headers:t.headers,referrer:mt(),signal:n.signal}),a=!1,o=!1,s=(r=i.url).indexOf(\"sku=\")>0&&Y(r);\"json\"===t.type&&i.headers.set(\"Accept\",\"application/json\");var l=function(r,n,a){if(!o){if(r&&\"SecurityError\"!==r.message&&_(r),n&&a)return c(n);var l=Date.now();self.fetch(i).then((function(r){if(r.ok){var n=s?r.clone():null;return c(r,n,l)}return e(new gt(r.statusText,r.status,t.url))})).catch((function(t){20!==t.code&&e(new Error(t.message))}))}},c=function(r,n,s){(\"arrayBuffer\"===t.type?r.arrayBuffer():\"json\"===t.type?r.json():r.text()).then((function(t){o||(n&&s&<(i,n,s),a=!0,e(null,t,r.headers.get(\"Cache-Control\"),r.headers.get(\"Expires\")))})).catch((function(t){o||e(new Error(t.message))}))};return s?ut(i,l):l(null,null),{cancel:function(){o=!0,a||n.abort()}}}var yt=function(t,e){if(r=t.url,!(/^file:/.test(r)||/^file:/.test(mt())&&!/^\\w+:/.test(r))){if(self.fetch&&self.Request&&self.AbortController&&self.Request.prototype.hasOwnProperty(\"signal\"))return vt(t,e);if(k()&&self.worker&&self.worker.actor){return self.worker.actor.send(\"getResource\",t,e,void 0,!0)}}var r;return function(t,e){var r=new self.XMLHttpRequest;for(var n in r.open(t.method||\"GET\",t.url,!0),\"arrayBuffer\"===t.type&&(r.responseType=\"arraybuffer\"),t.headers)r.setRequestHeader(n,t.headers[n]);return\"json\"===t.type&&(r.responseType=\"text\",r.setRequestHeader(\"Accept\",\"application/json\")),r.withCredentials=\"include\"===t.credentials,r.onerror=function(){e(new Error(r.statusText))},r.onload=function(){if((r.status>=200&&r.status<300||0===r.status)&&null!==r.response){var n=r.response;if(\"json\"===t.type)try{n=JSON.parse(r.response)}catch(t){return e(t)}e(null,n,r.getResponseHeader(\"Cache-Control\"),r.getResponseHeader(\"Expires\"))}else e(new gt(r.statusText,r.status,t.url))},r.send(t.body),{cancel:function(){return r.abort()}}}(t,e)},xt=function(t,e){return yt(u(t,{type:\"arrayBuffer\"}),e)},bt=function(t,e){return yt(u(t,{method:\"POST\"}),e)};var _t,wt;_t=[],wt=0;var Tt=function(t,e){if(B.supported&&(t.headers||(t.headers={}),t.headers.accept=\"image/webp,*/*\"),wt>=F.MAX_PARALLEL_IMAGE_REQUESTS){var r={requestParameters:t,callback:e,cancelled:!1,cancel:function(){this.cancelled=!0}};return _t.push(r),r}wt++;var n=!1,i=function(){if(!n)for(n=!0,wt--;_t.length&&wt0||this._oneTimeListeners&&this._oneTimeListeners[t]&&this._oneTimeListeners[t].length>0||this._eventedParent&&this._eventedParent.listens(t)},Et.prototype.setEventedParent=function(t,e){return this._eventedParent=t,this._eventedParentData=e,this};var Lt={$version:8,$root:{version:{required:!0,type:\"enum\",values:[8]},name:{type:\"string\"},metadata:{type:\"*\"},center:{type:\"array\",value:\"number\"},zoom:{type:\"number\"},bearing:{type:\"number\",default:0,period:360,units:\"degrees\"},pitch:{type:\"number\",default:0,units:\"degrees\"},light:{type:\"light\"},sources:{required:!0,type:\"sources\"},sprite:{type:\"string\"},glyphs:{type:\"string\"},transition:{type:\"transition\"},layers:{required:!0,type:\"array\",value:\"layer\"}},sources:{\"*\":{type:\"source\"}},source:[\"source_vector\",\"source_raster\",\"source_raster_dem\",\"source_geojson\",\"source_video\",\"source_image\"],source_vector:{type:{required:!0,type:\"enum\",values:{vector:{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.051129,180,85.051129]},scheme:{type:\"enum\",values:{xyz:{},tms:{}},default:\"xyz\"},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},attribution:{type:\"string\"},promoteId:{type:\"promoteId\"},\"*\":{type:\"*\"}},source_raster:{type:{required:!0,type:\"enum\",values:{raster:{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},tileSize:{type:\"number\",default:512,units:\"pixels\"},scheme:{type:\"enum\",values:{xyz:{},tms:{}},default:\"xyz\"},attribution:{type:\"string\"},\"*\":{type:\"*\"}},source_raster_dem:{type:{required:!0,type:\"enum\",values:{\"raster-dem\":{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},tileSize:{type:\"number\",default:512,units:\"pixels\"},attribution:{type:\"string\"},encoding:{type:\"enum\",values:{terrarium:{},mapbox:{}},default:\"mapbox\"},\"*\":{type:\"*\"}},source_geojson:{type:{required:!0,type:\"enum\",values:{geojson:{}}},data:{type:\"*\"},maxzoom:{type:\"number\",default:18},attribution:{type:\"string\"},buffer:{type:\"number\",default:128,maximum:512,minimum:0},tolerance:{type:\"number\",default:.375},cluster:{type:\"boolean\",default:!1},clusterRadius:{type:\"number\",default:50,minimum:0},clusterMaxZoom:{type:\"number\"},clusterProperties:{type:\"*\"},lineMetrics:{type:\"boolean\",default:!1},generateId:{type:\"boolean\",default:!1},promoteId:{type:\"promoteId\"}},source_video:{type:{required:!0,type:\"enum\",values:{video:{}}},urls:{required:!0,type:\"array\",value:\"string\"},coordinates:{required:!0,type:\"array\",length:4,value:{type:\"array\",length:2,value:\"number\"}}},source_image:{type:{required:!0,type:\"enum\",values:{image:{}}},url:{required:!0,type:\"string\"},coordinates:{required:!0,type:\"array\",length:4,value:{type:\"array\",length:2,value:\"number\"}}},layer:{id:{type:\"string\",required:!0},type:{type:\"enum\",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},\"fill-extrusion\":{},raster:{},hillshade:{},background:{}},required:!0},metadata:{type:\"*\"},source:{type:\"string\"},\"source-layer\":{type:\"string\"},minzoom:{type:\"number\",minimum:0,maximum:24},maxzoom:{type:\"number\",minimum:0,maximum:24},filter:{type:\"filter\"},layout:{type:\"layout\"},paint:{type:\"paint\"}},layout:[\"layout_fill\",\"layout_line\",\"layout_circle\",\"layout_heatmap\",\"layout_fill-extrusion\",\"layout_symbol\",\"layout_raster\",\"layout_hillshade\",\"layout_background\"],layout_background:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_fill:{\"fill-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_circle:{\"circle-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_heatmap:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},\"layout_fill-extrusion\":{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_line:{\"line-cap\":{type:\"enum\",values:{butt:{},round:{},square:{}},default:\"butt\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-join\":{type:\"enum\",values:{bevel:{},round:{},miter:{}},default:\"miter\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"line-miter-limit\":{type:\"number\",default:2,requires:[{\"line-join\":\"miter\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-round-limit\":{type:\"number\",default:1.05,requires:[{\"line-join\":\"round\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_symbol:{\"symbol-placement\":{type:\"enum\",values:{point:{},line:{},\"line-center\":{}},default:\"point\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-spacing\":{type:\"number\",default:250,minimum:1,units:\"pixels\",requires:[{\"symbol-placement\":\"line\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-avoid-edges\":{type:\"boolean\",default:!1,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"symbol-z-order\":{type:\"enum\",values:{auto:{},\"viewport-y\":{},source:{}},default:\"auto\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-allow-overlap\":{type:\"boolean\",default:!1,requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-ignore-placement\":{type:\"boolean\",default:!1,requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-optional\":{type:\"boolean\",default:!1,requires:[\"icon-image\",\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-rotation-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-size\":{type:\"number\",default:1,minimum:0,units:\"factor of the original icon size\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-text-fit\":{type:\"enum\",values:{none:{},width:{},height:{},both:{}},default:\"none\",requires:[\"icon-image\",\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-text-fit-padding\":{type:\"array\",value:\"number\",length:4,default:[0,0,0,0],units:\"pixels\",requires:[\"icon-image\",\"text-field\",{\"icon-text-fit\":[\"both\",\"width\",\"height\"]}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-image\":{type:\"resolvedImage\",tokens:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-rotate\":{type:\"number\",default:0,period:360,units:\"degrees\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-padding\":{type:\"number\",default:2,minimum:0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-keep-upright\":{type:\"boolean\",default:!1,requires:[\"icon-image\",{\"icon-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-offset\":{type:\"array\",value:\"number\",length:2,default:[0,0],requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-anchor\":{type:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},default:\"center\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotation-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-field\":{type:\"formatted\",default:\"\",tokens:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-font\":{type:\"array\",value:\"string\",default:[\"Open Sans Regular\",\"Arial Unicode MS Regular\"],requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-size\":{type:\"number\",default:16,minimum:0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-max-width\":{type:\"number\",default:10,minimum:0,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-line-height\":{type:\"number\",default:1.2,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-letter-spacing\":{type:\"number\",default:0,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-justify\":{type:\"enum\",values:{auto:{},left:{},center:{},right:{}},default:\"center\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-radial-offset\":{type:\"number\",units:\"ems\",default:0,requires:[\"text-field\"],\"property-type\":\"data-driven\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]}},\"text-variable-anchor\":{type:\"array\",value:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},requires:[\"text-field\",{\"symbol-placement\":[\"point\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-anchor\":{type:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},default:\"center\",requires:[\"text-field\",{\"!\":\"text-variable-anchor\"}],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-max-angle\":{type:\"number\",default:45,units:\"degrees\",requires:[\"text-field\",{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-writing-mode\":{type:\"array\",value:\"enum\",values:{horizontal:{},vertical:{}},requires:[\"text-field\",{\"symbol-placement\":[\"point\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotate\":{type:\"number\",default:0,period:360,units:\"degrees\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-padding\":{type:\"number\",default:2,minimum:0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-keep-upright\":{type:\"boolean\",default:!0,requires:[\"text-field\",{\"text-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-transform\":{type:\"enum\",values:{none:{},uppercase:{},lowercase:{}},default:\"none\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-offset\":{type:\"array\",value:\"number\",units:\"ems\",length:2,default:[0,0],requires:[\"text-field\",{\"!\":\"text-radial-offset\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-allow-overlap\":{type:\"boolean\",default:!1,requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-ignore-placement\":{type:\"boolean\",default:!1,requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-optional\":{type:\"boolean\",default:!1,requires:[\"text-field\",\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_raster:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_hillshade:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},filter:{type:\"array\",value:\"*\"},filter_operator:{type:\"enum\",values:{\"==\":{},\"!=\":{},\">\":{},\">=\":{},\"<\":{},\"<=\":{},in:{},\"!in\":{},all:{},any:{},none:{},has:{},\"!has\":{},within:{}}},geometry_type:{type:\"enum\",values:{Point:{},LineString:{},Polygon:{}}},function:{expression:{type:\"expression\"},stops:{type:\"array\",value:\"function_stop\"},base:{type:\"number\",default:1,minimum:0},property:{type:\"string\",default:\"$zoom\"},type:{type:\"enum\",values:{identity:{},exponential:{},interval:{},categorical:{}},default:\"exponential\"},colorSpace:{type:\"enum\",values:{rgb:{},lab:{},hcl:{}},default:\"rgb\"},default:{type:\"*\",required:!1}},function_stop:{type:\"array\",minimum:0,maximum:24,value:[\"number\",\"color\"],length:2},expression:{type:\"array\",value:\"*\",minimum:1},expression_name:{type:\"enum\",values:{let:{group:\"Variable binding\"},var:{group:\"Variable binding\"},literal:{group:\"Types\"},array:{group:\"Types\"},at:{group:\"Lookup\"},in:{group:\"Lookup\"},\"index-of\":{group:\"Lookup\"},slice:{group:\"Lookup\"},case:{group:\"Decision\"},match:{group:\"Decision\"},coalesce:{group:\"Decision\"},step:{group:\"Ramps, scales, curves\"},interpolate:{group:\"Ramps, scales, curves\"},\"interpolate-hcl\":{group:\"Ramps, scales, curves\"},\"interpolate-lab\":{group:\"Ramps, scales, curves\"},ln2:{group:\"Math\"},pi:{group:\"Math\"},e:{group:\"Math\"},typeof:{group:\"Types\"},string:{group:\"Types\"},number:{group:\"Types\"},boolean:{group:\"Types\"},object:{group:\"Types\"},collator:{group:\"Types\"},format:{group:\"Types\"},image:{group:\"Types\"},\"number-format\":{group:\"Types\"},\"to-string\":{group:\"Types\"},\"to-number\":{group:\"Types\"},\"to-boolean\":{group:\"Types\"},\"to-rgba\":{group:\"Color\"},\"to-color\":{group:\"Types\"},rgb:{group:\"Color\"},rgba:{group:\"Color\"},get:{group:\"Lookup\"},has:{group:\"Lookup\"},length:{group:\"Lookup\"},properties:{group:\"Feature data\"},\"feature-state\":{group:\"Feature data\"},\"geometry-type\":{group:\"Feature data\"},id:{group:\"Feature data\"},zoom:{group:\"Zoom\"},\"heatmap-density\":{group:\"Heatmap\"},\"line-progress\":{group:\"Feature data\"},accumulated:{group:\"Feature data\"},\"+\":{group:\"Math\"},\"*\":{group:\"Math\"},\"-\":{group:\"Math\"},\"/\":{group:\"Math\"},\"%\":{group:\"Math\"},\"^\":{group:\"Math\"},sqrt:{group:\"Math\"},log10:{group:\"Math\"},ln:{group:\"Math\"},log2:{group:\"Math\"},sin:{group:\"Math\"},cos:{group:\"Math\"},tan:{group:\"Math\"},asin:{group:\"Math\"},acos:{group:\"Math\"},atan:{group:\"Math\"},min:{group:\"Math\"},max:{group:\"Math\"},round:{group:\"Math\"},abs:{group:\"Math\"},ceil:{group:\"Math\"},floor:{group:\"Math\"},distance:{group:\"Math\"},\"==\":{group:\"Decision\"},\"!=\":{group:\"Decision\"},\">\":{group:\"Decision\"},\"<\":{group:\"Decision\"},\">=\":{group:\"Decision\"},\"<=\":{group:\"Decision\"},all:{group:\"Decision\"},any:{group:\"Decision\"},\"!\":{group:\"Decision\"},within:{group:\"Decision\"},\"is-supported-script\":{group:\"String\"},upcase:{group:\"String\"},downcase:{group:\"String\"},concat:{group:\"String\"},\"resolved-locale\":{group:\"String\"}}},light:{anchor:{type:\"enum\",default:\"viewport\",values:{map:{},viewport:{}},\"property-type\":\"data-constant\",transition:!1,expression:{interpolated:!1,parameters:[\"zoom\"]}},position:{type:\"array\",default:[1.15,210,30],length:3,value:\"number\",\"property-type\":\"data-constant\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]}},color:{type:\"color\",\"property-type\":\"data-constant\",default:\"#ffffff\",expression:{interpolated:!0,parameters:[\"zoom\"]},transition:!0},intensity:{type:\"number\",\"property-type\":\"data-constant\",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:[\"zoom\"]},transition:!0}},paint:[\"paint_fill\",\"paint_line\",\"paint_circle\",\"paint_heatmap\",\"paint_fill-extrusion\",\"paint_symbol\",\"paint_raster\",\"paint_hillshade\",\"paint_background\"],paint_fill:{\"fill-antialias\":{type:\"boolean\",default:!0,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"fill-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-outline-color\":{type:\"color\",transition:!0,requires:[{\"!\":\"fill-pattern\"},{\"fill-antialias\":!0}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"fill-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"}},\"paint_fill-extrusion\":{\"fill-extrusion-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"fill-extrusion-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"fill-extrusion-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"fill-extrusion-height\":{type:\"number\",default:0,minimum:0,units:\"meters\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-base\":{type:\"number\",default:0,minimum:0,units:\"meters\",transition:!0,requires:[\"fill-extrusion-height\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-vertical-gradient\":{type:\"boolean\",default:!0,transition:!1,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_line:{\"line-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"line-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"line-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-width\":{type:\"number\",default:1,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-gap-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-offset\":{type:\"number\",default:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-dasharray\":{type:\"array\",value:\"number\",minimum:0,transition:!0,units:\"line widths\",requires:[{\"!\":\"line-pattern\"}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"cross-faded\"},\"line-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"line-gradient\":{type:\"color\",transition:!1,requires:[{\"!\":\"line-dasharray\"},{\"!\":\"line-pattern\"},{source:\"geojson\",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:[\"line-progress\"]},\"property-type\":\"color-ramp\"}},paint_circle:{\"circle-radius\":{type:\"number\",default:5,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-blur\":{type:\"number\",default:0,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"circle-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-scale\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{}},default:\"viewport\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-stroke-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"}},paint_heatmap:{\"heatmap-radius\":{type:\"number\",default:30,minimum:1,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-weight\":{type:\"number\",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-intensity\":{type:\"number\",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"heatmap-color\":{type:\"color\",default:[\"interpolate\",[\"linear\"],[\"heatmap-density\"],0,\"rgba(0, 0, 255, 0)\",.1,\"royalblue\",.3,\"cyan\",.5,\"lime\",.7,\"yellow\",1,\"red\"],transition:!1,expression:{interpolated:!0,parameters:[\"heatmap-density\"]},\"property-type\":\"color-ramp\"},\"heatmap-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_symbol:{\"icon-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-color\":{type:\"color\",default:\"rgba(0, 0, 0, 0)\",transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"icon-image\",\"icon-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-color\":{type:\"color\",default:\"#000000\",transition:!0,overridable:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-color\":{type:\"color\",default:\"rgba(0, 0, 0, 0)\",transition:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"text-field\",\"text-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_raster:{\"raster-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-hue-rotate\":{type:\"number\",default:0,period:360,transition:!0,units:\"degrees\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-min\":{type:\"number\",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-max\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-saturation\":{type:\"number\",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-contrast\":{type:\"number\",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-resampling\":{type:\"enum\",values:{linear:{},nearest:{}},default:\"linear\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-fade-duration\":{type:\"number\",default:300,minimum:0,transition:!1,units:\"milliseconds\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_hillshade:{\"hillshade-illumination-direction\":{type:\"number\",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-illumination-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"viewport\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-exaggeration\":{type:\"number\",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-shadow-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-highlight-color\":{type:\"color\",default:\"#FFFFFF\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-accent-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_background:{\"background-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"background-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"background-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"cross-faded\"},\"background-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},transition:{duration:{type:\"number\",default:300,minimum:0,units:\"milliseconds\"},delay:{type:\"number\",default:0,minimum:0,units:\"milliseconds\"}},\"property-type\":{\"data-driven\":{type:\"property-type\"},\"cross-faded\":{type:\"property-type\"},\"cross-faded-data-driven\":{type:\"property-type\"},\"color-ramp\":{type:\"property-type\"},\"data-constant\":{type:\"property-type\"},constant:{type:\"property-type\"}},promoteId:{\"*\":{type:\"string\"}}},Ct=function(t,e,r,n){this.message=(t?t+\": \":\"\")+r,n&&(this.identifier=n),null!=e&&e.__line__&&(this.line=e.__line__)};function Pt(t){var e=t.key,r=t.value;return r?[new Ct(e,r,\"constants have been deprecated as of v8\")]:[]}function It(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];for(var n=0,i=e;n\":\"value\"===t.itemType.kind?\"array\":\"array<\"+e+\">\"}return t.kind}var Zt=[Ft,Bt,Nt,jt,Ut,Gt,Vt,Wt(Ht),Yt];function Jt(t,e){if(\"error\"===e.kind)return null;if(\"array\"===t.kind){if(\"array\"===e.kind&&(0===e.N&&\"value\"===e.itemType.kind||!Jt(t.itemType,e.itemType))&&(\"number\"!=typeof t.N||t.N===e.N))return null}else{if(t.kind===e.kind)return null;if(\"value\"===t.kind)for(var r=0,n=Zt;r255?255:t}function i(t){return t<0?0:t>1?1:t}function a(t){return\"%\"===t[t.length-1]?n(parseFloat(t)/100*255):n(parseInt(t))}function o(t){return\"%\"===t[t.length-1]?i(parseFloat(t)/100):i(parseFloat(t))}function s(t,e,r){return r<0?r+=1:r>1&&(r-=1),6*r<1?t+(e-t)*r*6:2*r<1?e:3*r<2?t+(e-t)*(2/3-r)*6:t}try{e.parseCSSColor=function(t){var e,i=t.replace(/ /g,\"\").toLowerCase();if(i in r)return r[i].slice();if(\"#\"===i[0])return 4===i.length?(e=parseInt(i.substr(1),16))>=0&&e<=4095?[(3840&e)>>4|(3840&e)>>8,240&e|(240&e)>>4,15&e|(15&e)<<4,1]:null:7===i.length&&(e=parseInt(i.substr(1),16))>=0&&e<=16777215?[(16711680&e)>>16,(65280&e)>>8,255&e,1]:null;var l=i.indexOf(\"(\"),c=i.indexOf(\")\");if(-1!==l&&c+1===i.length){var u=i.substr(0,l),f=i.substr(l+1,c-(l+1)).split(\",\"),h=1;switch(u){case\"rgba\":if(4!==f.length)return null;h=o(f.pop());case\"rgb\":return 3!==f.length?null:[a(f[0]),a(f[1]),a(f[2]),h];case\"hsla\":if(4!==f.length)return null;h=o(f.pop());case\"hsl\":if(3!==f.length)return null;var p=(parseFloat(f[0])%360+360)%360/360,d=o(f[1]),g=o(f[2]),m=g<=.5?g*(d+1):g+d-g*d,v=2*g-m;return[n(255*s(v,m,p+1/3)),n(255*s(v,m,p)),n(255*s(v,m,p-1/3)),h];default:return null}}return null}}catch(t){}})).parseCSSColor,te=function(t,e,r,n){void 0===n&&(n=1),this.r=t,this.g=e,this.b=r,this.a=n};te.parse=function(t){if(t){if(t instanceof te)return t;if(\"string\"==typeof t){var e=$t(t);if(e)return new te(e[0]/255*e[3],e[1]/255*e[3],e[2]/255*e[3],e[3])}}},te.prototype.toString=function(){var t=this.toArray(),e=t[0],r=t[1],n=t[2],i=t[3];return\"rgba(\"+Math.round(e)+\",\"+Math.round(r)+\",\"+Math.round(n)+\",\"+i+\")\"},te.prototype.toArray=function(){var t=this.r,e=this.g,r=this.b,n=this.a;return 0===n?[0,0,0,0]:[255*t/n,255*e/n,255*r/n,n]},te.black=new te(0,0,0,1),te.white=new te(1,1,1,1),te.transparent=new te(0,0,0,0),te.red=new te(1,0,0,1);var ee=function(t,e,r){this.sensitivity=t?e?\"variant\":\"case\":e?\"accent\":\"base\",this.locale=r,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:\"search\"})};ee.prototype.compare=function(t,e){return this.collator.compare(t,e)},ee.prototype.resolvedLocale=function(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale};var re=function(t,e,r,n,i){this.text=t,this.image=e,this.scale=r,this.fontStack=n,this.textColor=i},ne=function(t){this.sections=t};ne.fromString=function(t){return new ne([new re(t,null,null,null,null)])},ne.prototype.isEmpty=function(){return 0===this.sections.length||!this.sections.some((function(t){return 0!==t.text.length||t.image&&0!==t.image.name.length}))},ne.factory=function(t){return t instanceof ne?t:ne.fromString(t)},ne.prototype.toString=function(){return 0===this.sections.length?\"\":this.sections.map((function(t){return t.text})).join(\"\")},ne.prototype.serialize=function(){for(var t=[\"format\"],e=0,r=this.sections;e=0&&t<=255&&\"number\"==typeof e&&e>=0&&e<=255&&\"number\"==typeof r&&r>=0&&r<=255?void 0===n||\"number\"==typeof n&&n>=0&&n<=1?null:\"Invalid rgba value [\"+[t,e,r,n].join(\", \")+\"]: 'a' must be between 0 and 1.\":\"Invalid rgba value [\"+(\"number\"==typeof n?[t,e,r,n]:[t,e,r]).join(\", \")+\"]: 'r', 'g', and 'b' must be between 0 and 255.\"}function oe(t){if(null===t)return!0;if(\"string\"==typeof t)return!0;if(\"boolean\"==typeof t)return!0;if(\"number\"==typeof t)return!0;if(t instanceof te)return!0;if(t instanceof ee)return!0;if(t instanceof ne)return!0;if(t instanceof ie)return!0;if(Array.isArray(t)){for(var e=0,r=t;e2){var s=t[1];if(\"string\"!=typeof s||!(s in fe)||\"object\"===s)return e.error('The item type argument of \"array\" must be one of string, number, boolean',1);a=fe[s],n++}else a=Ht;if(t.length>3){if(null!==t[2]&&(\"number\"!=typeof t[2]||t[2]<0||t[2]!==Math.floor(t[2])))return e.error('The length argument to \"array\" must be a positive integer literal',2);o=t[2],n++}r=Wt(a,o)}else r=fe[i];for(var l=[];n1)&&e.push(n)}}return e.concat(this.args.map((function(t){return t.serialize()})))};var pe=function(t){this.type=Gt,this.sections=t};pe.parse=function(t,e){if(t.length<2)return e.error(\"Expected at least one argument.\");var r=t[1];if(!Array.isArray(r)&&\"object\"==typeof r)return e.error(\"First argument must be an image or text section.\");for(var n=[],i=!1,a=1;a<=t.length-1;++a){var o=t[a];if(i&&\"object\"==typeof o&&!Array.isArray(o)){i=!1;var s=null;if(o[\"font-scale\"]&&!(s=e.parse(o[\"font-scale\"],1,Bt)))return null;var l=null;if(o[\"text-font\"]&&!(l=e.parse(o[\"text-font\"],1,Wt(Nt))))return null;var c=null;if(o[\"text-color\"]&&!(c=e.parse(o[\"text-color\"],1,Ut)))return null;var u=n[n.length-1];u.scale=s,u.font=l,u.textColor=c}else{var f=e.parse(t[a],1,Ht);if(!f)return null;var h=f.type.kind;if(\"string\"!==h&&\"value\"!==h&&\"null\"!==h&&\"resolvedImage\"!==h)return e.error(\"Formatted text type must be 'string', 'value', 'image' or 'null'.\");i=!0,n.push({content:f,scale:null,font:null,textColor:null})}}return new pe(n)},pe.prototype.evaluate=function(t){return new ne(this.sections.map((function(e){var r=e.content.evaluate(t);return se(r)===Yt?new re(\"\",r,null,null,null):new re(le(r),null,e.scale?e.scale.evaluate(t):null,e.font?e.font.evaluate(t).join(\",\"):null,e.textColor?e.textColor.evaluate(t):null)})))},pe.prototype.eachChild=function(t){for(var e=0,r=this.sections;e-1),r},de.prototype.eachChild=function(t){t(this.input)},de.prototype.outputDefined=function(){return!1},de.prototype.serialize=function(){return[\"image\",this.input.serialize()]};var ge={\"to-boolean\":jt,\"to-color\":Ut,\"to-number\":Bt,\"to-string\":Nt},me=function(t,e){this.type=t,this.args=e};me.parse=function(t,e){if(t.length<2)return e.error(\"Expected at least one argument.\");var r=t[0];if((\"to-boolean\"===r||\"to-string\"===r)&&2!==t.length)return e.error(\"Expected one argument.\");for(var n=ge[r],i=[],a=1;a4?\"Invalid rbga value \"+JSON.stringify(e)+\": expected an array containing either three or four numeric values.\":ae(e[0],e[1],e[2],e[3])))return new te(e[0]/255,e[1]/255,e[2]/255,e[3])}throw new ue(r||\"Could not parse color from value '\"+(\"string\"==typeof e?e:String(JSON.stringify(e)))+\"'\")}if(\"number\"===this.type.kind){for(var o=null,s=0,l=this.args;s=e[2])&&(!(t[1]<=e[1])&&!(t[3]>=e[3])))}function Te(t,e){var r,n=(180+t[0])/360,i=(r=t[1],(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+r*Math.PI/360)))/360),a=Math.pow(2,e.z);return[Math.round(n*a*8192),Math.round(i*a*8192)]}function ke(t,e,r){return e[1]>t[1]!=r[1]>t[1]&&t[0]<(r[0]-e[0])*(t[1]-e[1])/(r[1]-e[1])+e[0]}function Ae(t,e){for(var r,n,i,a,o,s,l,c=!1,u=0,f=e.length;u0&&f<0||u<0&&f>0}function Ee(t,e,r){for(var n=0,i=r;nr[2]){var i=.5*n,a=t[0]-r[0]>i?-n:r[0]-t[0]>i?n:0;0===a&&(a=t[0]-r[2]>i?-n:r[2]-t[0]>i?n:0),t[0]+=a}_e(e,t)}function ze(t,e,r,n){for(var i=8192*Math.pow(2,n.z),a=[8192*n.x,8192*n.y],o=[],s=0,l=t;s=0)return!1;var r=!0;return t.eachChild((function(t){r&&!Ne(t,e)&&(r=!1)})),r}Re.parse=function(t,e){if(2!==t.length)return e.error(\"'within' expression requires exactly one argument, but found \"+(t.length-1)+\" instead.\");if(oe(t[1])){var r=t[1];if(\"FeatureCollection\"===r.type)for(var n=0;ne))throw new ue(\"Input is not a number.\");o=s-1}return 0}Ue.prototype.parse=function(t,e,r,n,i){return void 0===i&&(i={}),e?this.concat(e,r,n)._parse(t,i):this._parse(t,i)},Ue.prototype._parse=function(t,e){function r(t,e,r){return\"assert\"===r?new he(e,[t]):\"coerce\"===r?new me(e,[t]):t}if(null!==t&&\"string\"!=typeof t&&\"boolean\"!=typeof t&&\"number\"!=typeof t||(t=[\"literal\",t]),Array.isArray(t)){if(0===t.length)return this.error('Expected an array with at least one element. If you wanted a literal array, use [\"literal\", []].');var n=t[0];if(\"string\"!=typeof n)return this.error(\"Expression name must be a string, but found \"+typeof n+' instead. If you wanted a literal array, use [\"literal\", [...]].',0),null;var i=this.registry[n];if(i){var a=i.parse(t,this);if(!a)return null;if(this.expectedType){var o=this.expectedType,s=a.type;if(\"string\"!==o.kind&&\"number\"!==o.kind&&\"boolean\"!==o.kind&&\"object\"!==o.kind&&\"array\"!==o.kind||\"value\"!==s.kind)if(\"color\"!==o.kind&&\"formatted\"!==o.kind&&\"resolvedImage\"!==o.kind||\"value\"!==s.kind&&\"string\"!==s.kind){if(this.checkSubtype(o,s))return null}else a=r(a,o,e.typeAnnotation||\"coerce\");else a=r(a,o,e.typeAnnotation||\"assert\")}if(!(a instanceof ce)&&\"resolvedImage\"!==a.type.kind&&function t(e){if(e instanceof je)return t(e.boundExpression);if(e instanceof xe&&\"error\"===e.name)return!1;if(e instanceof be)return!1;if(e instanceof Re)return!1;var r=e instanceof me||e instanceof he,n=!0;if(e.eachChild((function(e){n=r?n&&t(e):n&&e instanceof ce})),!n)return!1;return Fe(e)&&Ne(e,[\"zoom\",\"heatmap-density\",\"line-progress\",\"accumulated\",\"is-supported-script\"])}(a)){var l=new ye;try{a=new ce(a.type,a.evaluate(l))}catch(t){return this.error(t.message),null}}return a}return this.error('Unknown expression \"'+n+'\". If you wanted a literal array, use [\"literal\", [...]].',0)}return void 0===t?this.error(\"'undefined' value invalid. Use null instead.\"):\"object\"==typeof t?this.error('Bare objects invalid. Use [\"literal\", {...}] instead.'):this.error(\"Expected an array, but found \"+typeof t+\" instead.\")},Ue.prototype.concat=function(t,e,r){var n=\"number\"==typeof t?this.path.concat(t):this.path,i=r?this.scope.concat(r):this.scope;return new Ue(this.registry,n,e||null,i,this.errors)},Ue.prototype.error=function(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];var n=\"\"+this.key+e.map((function(t){return\"[\"+t+\"]\"})).join(\"\");this.errors.push(new Dt(n,t))},Ue.prototype.checkSubtype=function(t,e){var r=Jt(t,e);return r&&this.error(r),r};var He=function(t,e,r){this.type=t,this.input=e,this.labels=[],this.outputs=[];for(var n=0,i=r;n=o)return e.error('Input/output pairs for \"step\" expressions must be arranged with input values in strictly ascending order.',l);var u=e.parse(s,c,i);if(!u)return null;i=i||u.type,n.push([o,u])}return new He(i,r,n)},He.prototype.evaluate=function(t){var e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);var n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);var i=e.length;return n>=e[i-1]?r[i-1].evaluate(t):r[Ve(e,n)].evaluate(t)},He.prototype.eachChild=function(t){t(this.input);for(var e=0,r=this.outputs;e0&&t.push(this.labels[e]),t.push(this.outputs[e].serialize());return t};var Ge=Object.freeze({__proto__:null,number:qe,color:function(t,e,r){return new te(qe(t.r,e.r,r),qe(t.g,e.g,r),qe(t.b,e.b,r),qe(t.a,e.a,r))},array:function(t,e,r){return t.map((function(t,n){return qe(t,e[n],r)}))}}),Ye=6/29,We=3*Ye*Ye,Xe=Math.PI/180,Ze=180/Math.PI;function Je(t){return t>.008856451679035631?Math.pow(t,1/3):t/We+4/29}function Ke(t){return t>Ye?t*t*t:We*(t-4/29)}function Qe(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function $e(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function tr(t){var e=$e(t.r),r=$e(t.g),n=$e(t.b),i=Je((.4124564*e+.3575761*r+.1804375*n)/.95047),a=Je((.2126729*e+.7151522*r+.072175*n)/1);return{l:116*a-16,a:500*(i-a),b:200*(a-Je((.0193339*e+.119192*r+.9503041*n)/1.08883)),alpha:t.a}}function er(t){var e=(t.l+16)/116,r=isNaN(t.a)?e:e+t.a/500,n=isNaN(t.b)?e:e-t.b/200;return e=1*Ke(e),r=.95047*Ke(r),n=1.08883*Ke(n),new te(Qe(3.2404542*r-1.5371385*e-.4985314*n),Qe(-.969266*r+1.8760108*e+.041556*n),Qe(.0556434*r-.2040259*e+1.0572252*n),t.alpha)}function rr(t,e,r){var n=e-t;return t+r*(n>180||n<-180?n-360*Math.round(n/360):n)}var nr={forward:tr,reverse:er,interpolate:function(t,e,r){return{l:qe(t.l,e.l,r),a:qe(t.a,e.a,r),b:qe(t.b,e.b,r),alpha:qe(t.alpha,e.alpha,r)}}},ir={forward:function(t){var e=tr(t),r=e.l,n=e.a,i=e.b,a=Math.atan2(i,n)*Ze;return{h:a<0?a+360:a,c:Math.sqrt(n*n+i*i),l:r,alpha:t.a}},reverse:function(t){var e=t.h*Xe,r=t.c;return er({l:t.l,a:Math.cos(e)*r,b:Math.sin(e)*r,alpha:t.alpha})},interpolate:function(t,e,r){return{h:rr(t.h,e.h,r),c:qe(t.c,e.c,r),l:qe(t.l,e.l,r),alpha:qe(t.alpha,e.alpha,r)}}},ar=Object.freeze({__proto__:null,lab:nr,hcl:ir}),or=function(t,e,r,n,i){this.type=t,this.operator=e,this.interpolation=r,this.input=n,this.labels=[],this.outputs=[];for(var a=0,o=i;a1})))return e.error(\"Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.\",1);n={name:\"cubic-bezier\",controlPoints:s}}if(t.length-1<4)return e.error(\"Expected at least 4 arguments, but found only \"+(t.length-1)+\".\");if((t.length-1)%2!=0)return e.error(\"Expected an even number of arguments.\");if(!(i=e.parse(i,2,Bt)))return null;var l=[],c=null;\"interpolate-hcl\"===r||\"interpolate-lab\"===r?c=Ut:e.expectedType&&\"value\"!==e.expectedType.kind&&(c=e.expectedType);for(var u=0;u=f)return e.error('Input/output pairs for \"interpolate\" expressions must be arranged with input values in strictly ascending order.',p);var g=e.parse(h,d,c);if(!g)return null;c=c||g.type,l.push([f,g])}return\"number\"===c.kind||\"color\"===c.kind||\"array\"===c.kind&&\"number\"===c.itemType.kind&&\"number\"==typeof c.N?new or(c,r,n,i,l):e.error(\"Type \"+Xt(c)+\" is not interpolatable.\")},or.prototype.evaluate=function(t){var e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);var n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);var i=e.length;if(n>=e[i-1])return r[i-1].evaluate(t);var a=Ve(e,n),o=e[a],s=e[a+1],l=or.interpolationFactor(this.interpolation,n,o,s),c=r[a].evaluate(t),u=r[a+1].evaluate(t);return\"interpolate\"===this.operator?Ge[this.type.kind.toLowerCase()](c,u,l):\"interpolate-hcl\"===this.operator?ir.reverse(ir.interpolate(ir.forward(c),ir.forward(u),l)):nr.reverse(nr.interpolate(nr.forward(c),nr.forward(u),l))},or.prototype.eachChild=function(t){t(this.input);for(var e=0,r=this.outputs;e=r.length)throw new ue(\"Array index out of bounds: \"+e+\" > \"+(r.length-1)+\".\");if(e!==Math.floor(e))throw new ue(\"Array index must be an integer, but found \"+e+\" instead.\");return r[e]},ur.prototype.eachChild=function(t){t(this.index),t(this.input)},ur.prototype.outputDefined=function(){return!1},ur.prototype.serialize=function(){return[\"at\",this.index.serialize(),this.input.serialize()]};var fr=function(t,e){this.type=jt,this.needle=t,this.haystack=e};fr.parse=function(t,e){if(3!==t.length)return e.error(\"Expected 2 arguments, but found \"+(t.length-1)+\" instead.\");var r=e.parse(t[1],1,Ht),n=e.parse(t[2],2,Ht);return r&&n?Kt(r.type,[jt,Nt,Bt,Ft,Ht])?new fr(r,n):e.error(\"Expected first argument to be of type boolean, string, number or null, but found \"+Xt(r.type)+\" instead\"):null},fr.prototype.evaluate=function(t){var e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!r)return!1;if(!Qt(e,[\"boolean\",\"string\",\"number\",\"null\"]))throw new ue(\"Expected first argument to be of type boolean, string, number or null, but found \"+Xt(se(e))+\" instead.\");if(!Qt(r,[\"string\",\"array\"]))throw new ue(\"Expected second argument to be of type array or string, but found \"+Xt(se(r))+\" instead.\");return r.indexOf(e)>=0},fr.prototype.eachChild=function(t){t(this.needle),t(this.haystack)},fr.prototype.outputDefined=function(){return!0},fr.prototype.serialize=function(){return[\"in\",this.needle.serialize(),this.haystack.serialize()]};var hr=function(t,e,r){this.type=Bt,this.needle=t,this.haystack=e,this.fromIndex=r};hr.parse=function(t,e){if(t.length<=2||t.length>=5)return e.error(\"Expected 3 or 4 arguments, but found \"+(t.length-1)+\" instead.\");var r=e.parse(t[1],1,Ht),n=e.parse(t[2],2,Ht);if(!r||!n)return null;if(!Kt(r.type,[jt,Nt,Bt,Ft,Ht]))return e.error(\"Expected first argument to be of type boolean, string, number or null, but found \"+Xt(r.type)+\" instead\");if(4===t.length){var i=e.parse(t[3],3,Bt);return i?new hr(r,n,i):null}return new hr(r,n)},hr.prototype.evaluate=function(t){var e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!Qt(e,[\"boolean\",\"string\",\"number\",\"null\"]))throw new ue(\"Expected first argument to be of type boolean, string, number or null, but found \"+Xt(se(e))+\" instead.\");if(!Qt(r,[\"string\",\"array\"]))throw new ue(\"Expected second argument to be of type array or string, but found \"+Xt(se(r))+\" instead.\");if(this.fromIndex){var n=this.fromIndex.evaluate(t);return r.indexOf(e,n)}return r.indexOf(e)},hr.prototype.eachChild=function(t){t(this.needle),t(this.haystack),this.fromIndex&&t(this.fromIndex)},hr.prototype.outputDefined=function(){return!1},hr.prototype.serialize=function(){if(null!=this.fromIndex&&void 0!==this.fromIndex){var t=this.fromIndex.serialize();return[\"index-of\",this.needle.serialize(),this.haystack.serialize(),t]}return[\"index-of\",this.needle.serialize(),this.haystack.serialize()]};var pr=function(t,e,r,n,i,a){this.inputType=t,this.type=e,this.input=r,this.cases=n,this.outputs=i,this.otherwise=a};pr.parse=function(t,e){if(t.length<5)return e.error(\"Expected at least 4 arguments, but found only \"+(t.length-1)+\".\");if(t.length%2!=1)return e.error(\"Expected an even number of arguments.\");var r,n;e.expectedType&&\"value\"!==e.expectedType.kind&&(n=e.expectedType);for(var i={},a=[],o=2;oNumber.MAX_SAFE_INTEGER)return c.error(\"Branch labels must be integers no larger than \"+Number.MAX_SAFE_INTEGER+\".\");if(\"number\"==typeof h&&Math.floor(h)!==h)return c.error(\"Numeric branch labels must be integer values.\");if(r){if(c.checkSubtype(r,se(h)))return null}else r=se(h);if(void 0!==i[String(h)])return c.error(\"Branch labels must be unique.\");i[String(h)]=a.length}var p=e.parse(l,o,n);if(!p)return null;n=n||p.type,a.push(p)}var d=e.parse(t[1],1,Ht);if(!d)return null;var g=e.parse(t[t.length-1],t.length-1,n);return g?\"value\"!==d.type.kind&&e.concat(1).checkSubtype(r,d.type)?null:new pr(r,n,d,i,a,g):null},pr.prototype.evaluate=function(t){var e=this.input.evaluate(t);return(se(e)===this.inputType&&this.outputs[this.cases[e]]||this.otherwise).evaluate(t)},pr.prototype.eachChild=function(t){t(this.input),this.outputs.forEach(t),t(this.otherwise)},pr.prototype.outputDefined=function(){return this.outputs.every((function(t){return t.outputDefined()}))&&this.otherwise.outputDefined()},pr.prototype.serialize=function(){for(var t=this,e=[\"match\",this.input.serialize()],r=[],n={},i=0,a=Object.keys(this.cases).sort();i=5)return e.error(\"Expected 3 or 4 arguments, but found \"+(t.length-1)+\" instead.\");var r=e.parse(t[1],1,Ht),n=e.parse(t[2],2,Bt);if(!r||!n)return null;if(!Kt(r.type,[Wt(Ht),Nt,Ht]))return e.error(\"Expected first argument to be of type array or string, but found \"+Xt(r.type)+\" instead\");if(4===t.length){var i=e.parse(t[3],3,Bt);return i?new gr(r.type,r,n,i):null}return new gr(r.type,r,n)},gr.prototype.evaluate=function(t){var e=this.input.evaluate(t),r=this.beginIndex.evaluate(t);if(!Qt(e,[\"string\",\"array\"]))throw new ue(\"Expected first argument to be of type array or string, but found \"+Xt(se(e))+\" instead.\");if(this.endIndex){var n=this.endIndex.evaluate(t);return e.slice(r,n)}return e.slice(r)},gr.prototype.eachChild=function(t){t(this.input),t(this.beginIndex),this.endIndex&&t(this.endIndex)},gr.prototype.outputDefined=function(){return!1},gr.prototype.serialize=function(){if(null!=this.endIndex&&void 0!==this.endIndex){var t=this.endIndex.serialize();return[\"slice\",this.input.serialize(),this.beginIndex.serialize(),t]}return[\"slice\",this.input.serialize(),this.beginIndex.serialize()]};var xr=yr(\"==\",(function(t,e,r){return e===r}),vr),br=yr(\"!=\",(function(t,e,r){return e!==r}),(function(t,e,r,n){return!vr(0,e,r,n)})),_r=yr(\"<\",(function(t,e,r){return e\",(function(t,e,r){return e>r}),(function(t,e,r,n){return n.compare(e,r)>0})),Tr=yr(\"<=\",(function(t,e,r){return e<=r}),(function(t,e,r,n){return n.compare(e,r)<=0})),kr=yr(\">=\",(function(t,e,r){return e>=r}),(function(t,e,r,n){return n.compare(e,r)>=0})),Ar=function(t,e,r,n,i){this.type=Nt,this.number=t,this.locale=e,this.currency=r,this.minFractionDigits=n,this.maxFractionDigits=i};Ar.parse=function(t,e){if(3!==t.length)return e.error(\"Expected two arguments.\");var r=e.parse(t[1],1,Bt);if(!r)return null;var n=t[2];if(\"object\"!=typeof n||Array.isArray(n))return e.error(\"NumberFormat options argument must be an object.\");var i=null;if(n.locale&&!(i=e.parse(n.locale,1,Nt)))return null;var a=null;if(n.currency&&!(a=e.parse(n.currency,1,Nt)))return null;var o=null;if(n[\"min-fraction-digits\"]&&!(o=e.parse(n[\"min-fraction-digits\"],1,Bt)))return null;var s=null;return n[\"max-fraction-digits\"]&&!(s=e.parse(n[\"max-fraction-digits\"],1,Bt))?null:new Ar(r,i,a,o,s)},Ar.prototype.evaluate=function(t){return new Intl.NumberFormat(this.locale?this.locale.evaluate(t):[],{style:this.currency?\"currency\":\"decimal\",currency:this.currency?this.currency.evaluate(t):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(t):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(t):void 0}).format(this.number.evaluate(t))},Ar.prototype.eachChild=function(t){t(this.number),this.locale&&t(this.locale),this.currency&&t(this.currency),this.minFractionDigits&&t(this.minFractionDigits),this.maxFractionDigits&&t(this.maxFractionDigits)},Ar.prototype.outputDefined=function(){return!1},Ar.prototype.serialize=function(){var t={};return this.locale&&(t.locale=this.locale.serialize()),this.currency&&(t.currency=this.currency.serialize()),this.minFractionDigits&&(t[\"min-fraction-digits\"]=this.minFractionDigits.serialize()),this.maxFractionDigits&&(t[\"max-fraction-digits\"]=this.maxFractionDigits.serialize()),[\"number-format\",this.number.serialize(),t]};var Mr=function(t){this.type=Bt,this.input=t};Mr.parse=function(t,e){if(2!==t.length)return e.error(\"Expected 1 argument, but found \"+(t.length-1)+\" instead.\");var r=e.parse(t[1],1);return r?\"array\"!==r.type.kind&&\"string\"!==r.type.kind&&\"value\"!==r.type.kind?e.error(\"Expected argument of type string or array, but found \"+Xt(r.type)+\" instead.\"):new Mr(r):null},Mr.prototype.evaluate=function(t){var e=this.input.evaluate(t);if(\"string\"==typeof e)return e.length;if(Array.isArray(e))return e.length;throw new ue(\"Expected value to be of type string or array, but found \"+Xt(se(e))+\" instead.\")},Mr.prototype.eachChild=function(t){t(this.input)},Mr.prototype.outputDefined=function(){return!1},Mr.prototype.serialize=function(){var t=[\"length\"];return this.eachChild((function(e){t.push(e.serialize())})),t};var Sr={\"==\":xr,\"!=\":br,\">\":wr,\"<\":_r,\">=\":kr,\"<=\":Tr,array:he,at:ur,boolean:he,case:dr,coalesce:lr,collator:be,format:pe,image:de,in:fr,\"index-of\":hr,interpolate:or,\"interpolate-hcl\":or,\"interpolate-lab\":or,length:Mr,let:cr,literal:ce,match:pr,number:he,\"number-format\":Ar,object:he,slice:gr,step:He,string:he,\"to-boolean\":me,\"to-color\":me,\"to-number\":me,\"to-string\":me,var:je,within:Re};function Er(t,e){var r=e[0],n=e[1],i=e[2],a=e[3];r=r.evaluate(t),n=n.evaluate(t),i=i.evaluate(t);var o=a?a.evaluate(t):1,s=ae(r,n,i,o);if(s)throw new ue(s);return new te(r/255*o,n/255*o,i/255*o,o)}function Lr(t,e){return t in e}function Cr(t,e){var r=e[t];return void 0===r?null:r}function Pr(t){return{type:t}}function Ir(t){return{result:\"success\",value:t}}function Or(t){return{result:\"error\",value:t}}function zr(t){return\"data-driven\"===t[\"property-type\"]||\"cross-faded-data-driven\"===t[\"property-type\"]}function Dr(t){return!!t.expression&&t.expression.parameters.indexOf(\"zoom\")>-1}function Rr(t){return!!t.expression&&t.expression.interpolated}function Fr(t){return t instanceof Number?\"number\":t instanceof String?\"string\":t instanceof Boolean?\"boolean\":Array.isArray(t)?\"array\":null===t?\"null\":typeof t}function Br(t){return\"object\"==typeof t&&null!==t&&!Array.isArray(t)}function Nr(t){return t}function jr(t,e,r){return void 0!==t?t:void 0!==e?e:void 0!==r?r:void 0}function Ur(t,e,r,n,i){return jr(typeof r===i?n[r]:void 0,t.default,e.default)}function Vr(t,e,r){if(\"number\"!==Fr(r))return jr(t.default,e.default);var n=t.stops.length;if(1===n)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[n-1][0])return t.stops[n-1][1];var i=Ve(t.stops.map((function(t){return t[0]})),r);return t.stops[i][1]}function Hr(t,e,r){var n=void 0!==t.base?t.base:1;if(\"number\"!==Fr(r))return jr(t.default,e.default);var i=t.stops.length;if(1===i)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[i-1][0])return t.stops[i-1][1];var a=Ve(t.stops.map((function(t){return t[0]})),r),o=function(t,e,r,n){var i=n-r,a=t-r;return 0===i?0:1===e?a/i:(Math.pow(e,a)-1)/(Math.pow(e,i)-1)}(r,n,t.stops[a][0],t.stops[a+1][0]),s=t.stops[a][1],l=t.stops[a+1][1],c=Ge[e.type]||Nr;if(t.colorSpace&&\"rgb\"!==t.colorSpace){var u=ar[t.colorSpace];c=function(t,e){return u.reverse(u.interpolate(u.forward(t),u.forward(e),o))}}return\"function\"==typeof s.evaluate?{evaluate:function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var r=s.evaluate.apply(void 0,t),n=l.evaluate.apply(void 0,t);if(void 0!==r&&void 0!==n)return c(r,n,o)}}:c(s,l,o)}function qr(t,e,r){return\"color\"===e.type?r=te.parse(r):\"formatted\"===e.type?r=ne.fromString(r.toString()):\"resolvedImage\"===e.type?r=ie.fromString(r.toString()):Fr(r)===e.type||\"enum\"===e.type&&e.values[r]||(r=void 0),jr(r,t.default,e.default)}xe.register(Sr,{error:[{kind:\"error\"},[Nt],function(t,e){var r=e[0];throw new ue(r.evaluate(t))}],typeof:[Nt,[Ht],function(t,e){return Xt(se(e[0].evaluate(t)))}],\"to-rgba\":[Wt(Bt,4),[Ut],function(t,e){return e[0].evaluate(t).toArray()}],rgb:[Ut,[Bt,Bt,Bt],Er],rgba:[Ut,[Bt,Bt,Bt,Bt],Er],has:{type:jt,overloads:[[[Nt],function(t,e){return Lr(e[0].evaluate(t),t.properties())}],[[Nt,Vt],function(t,e){var r=e[0],n=e[1];return Lr(r.evaluate(t),n.evaluate(t))}]]},get:{type:Ht,overloads:[[[Nt],function(t,e){return Cr(e[0].evaluate(t),t.properties())}],[[Nt,Vt],function(t,e){var r=e[0],n=e[1];return Cr(r.evaluate(t),n.evaluate(t))}]]},\"feature-state\":[Ht,[Nt],function(t,e){return Cr(e[0].evaluate(t),t.featureState||{})}],properties:[Vt,[],function(t){return t.properties()}],\"geometry-type\":[Nt,[],function(t){return t.geometryType()}],id:[Ht,[],function(t){return t.id()}],zoom:[Bt,[],function(t){return t.globals.zoom}],\"heatmap-density\":[Bt,[],function(t){return t.globals.heatmapDensity||0}],\"line-progress\":[Bt,[],function(t){return t.globals.lineProgress||0}],accumulated:[Ht,[],function(t){return void 0===t.globals.accumulated?null:t.globals.accumulated}],\"+\":[Bt,Pr(Bt),function(t,e){for(var r=0,n=0,i=e;n\":[jt,[Nt,Ht],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i>a}],\"filter-id->\":[jt,[Ht],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n>i}],\"filter-<=\":[jt,[Nt,Ht],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i<=a}],\"filter-id-<=\":[jt,[Ht],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n<=i}],\"filter->=\":[jt,[Nt,Ht],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i>=a}],\"filter-id->=\":[jt,[Ht],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n>=i}],\"filter-has\":[jt,[Ht],function(t,e){return e[0].value in t.properties()}],\"filter-has-id\":[jt,[],function(t){return null!==t.id()&&void 0!==t.id()}],\"filter-type-in\":[jt,[Wt(Nt)],function(t,e){return e[0].value.indexOf(t.geometryType())>=0}],\"filter-id-in\":[jt,[Wt(Ht)],function(t,e){return e[0].value.indexOf(t.id())>=0}],\"filter-in-small\":[jt,[Nt,Wt(Ht)],function(t,e){var r=e[0];return e[1].value.indexOf(t.properties()[r.value])>=0}],\"filter-in-large\":[jt,[Nt,Wt(Ht)],function(t,e){var r=e[0],n=e[1];return function(t,e,r,n){for(;r<=n;){var i=r+n>>1;if(e[i]===t)return!0;e[i]>t?n=i-1:r=i+1}return!1}(t.properties()[r.value],n.value,0,n.value.length-1)}],all:{type:jt,overloads:[[[jt,jt],function(t,e){var r=e[0],n=e[1];return r.evaluate(t)&&n.evaluate(t)}],[Pr(jt),function(t,e){for(var r=0,n=e;r0&&\"string\"==typeof t[0]&&t[0]in Sr}function Wr(t,e){var r=new Ue(Sr,[],e?function(t){var e={color:Ut,string:Nt,number:Bt,enum:Nt,boolean:jt,formatted:Gt,resolvedImage:Yt};if(\"array\"===t.type)return Wt(e[t.value]||Ht,t.length);return e[t.type]}(e):void 0),n=r.parse(t,void 0,void 0,void 0,e&&\"string\"===e.type?{typeAnnotation:\"coerce\"}:void 0);return n?Ir(new Gr(n,e)):Or(r.errors)}Gr.prototype.evaluateWithoutErrorHandling=function(t,e,r,n,i,a){return this._evaluator.globals=t,this._evaluator.feature=e,this._evaluator.featureState=r,this._evaluator.canonical=n,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=a,this.expression.evaluate(this._evaluator)},Gr.prototype.evaluate=function(t,e,r,n,i,a){this._evaluator.globals=t,this._evaluator.feature=e||null,this._evaluator.featureState=r||null,this._evaluator.canonical=n,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=a||null;try{var o=this.expression.evaluate(this._evaluator);if(null==o||\"number\"==typeof o&&o!=o)return this._defaultValue;if(this._enumValues&&!(o in this._enumValues))throw new ue(\"Expected value to be one of \"+Object.keys(this._enumValues).map((function(t){return JSON.stringify(t)})).join(\", \")+\", but found \"+JSON.stringify(o)+\" instead.\");return o}catch(t){return this._warningHistory[t.message]||(this._warningHistory[t.message]=!0,\"undefined\"!=typeof console&&console.warn(t.message)),this._defaultValue}};var Xr=function(t,e){this.kind=t,this._styleExpression=e,this.isStateDependent=\"constant\"!==t&&!Be(e.expression)};Xr.prototype.evaluateWithoutErrorHandling=function(t,e,r,n,i,a){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r,n,i,a)},Xr.prototype.evaluate=function(t,e,r,n,i,a){return this._styleExpression.evaluate(t,e,r,n,i,a)};var Zr=function(t,e,r,n){this.kind=t,this.zoomStops=r,this._styleExpression=e,this.isStateDependent=\"camera\"!==t&&!Be(e.expression),this.interpolationType=n};function Jr(t,e){if(\"error\"===(t=Wr(t,e)).result)return t;var r=t.value.expression,n=Fe(r);if(!n&&!zr(e))return Or([new Dt(\"\",\"data expressions not supported\")]);var i=Ne(r,[\"zoom\"]);if(!i&&!Dr(e))return Or([new Dt(\"\",\"zoom expressions not supported\")]);var a=function t(e){var r=null;if(e instanceof cr)r=t(e.result);else if(e instanceof lr)for(var n=0,i=e.args;nn.maximum?[new Ct(e,r,r+\" is greater than the maximum value \"+n.maximum)]:[]}function en(t){var e,r,n,i=t.valueSpec,a=Ot(t.value.type),o={},s=\"categorical\"!==a&&void 0===t.value.property,l=!s,c=\"array\"===Fr(t.value.stops)&&\"array\"===Fr(t.value.stops[0])&&\"object\"===Fr(t.value.stops[0][0]),u=Qr({key:t.key,value:t.value,valueSpec:t.styleSpec.function,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{stops:function(t){if(\"identity\"===a)return[new Ct(t.key,t.value,'identity function may not have a \"stops\" property')];var e=[],r=t.value;e=e.concat($r({key:t.key,value:r,valueSpec:t.valueSpec,style:t.style,styleSpec:t.styleSpec,arrayElementValidator:f})),\"array\"===Fr(r)&&0===r.length&&e.push(new Ct(t.key,r,\"array must have at least one stop\"));return e},default:function(t){return kn({key:t.key,value:t.value,valueSpec:i,style:t.style,styleSpec:t.styleSpec})}}});return\"identity\"===a&&s&&u.push(new Ct(t.key,t.value,'missing required property \"property\"')),\"identity\"===a||t.value.stops||u.push(new Ct(t.key,t.value,'missing required property \"stops\"')),\"exponential\"===a&&t.valueSpec.expression&&!Rr(t.valueSpec)&&u.push(new Ct(t.key,t.value,\"exponential functions not supported\")),t.styleSpec.$version>=8&&(l&&!zr(t.valueSpec)?u.push(new Ct(t.key,t.value,\"property functions not supported\")):s&&!Dr(t.valueSpec)&&u.push(new Ct(t.key,t.value,\"zoom functions not supported\"))),\"categorical\"!==a&&!c||void 0!==t.value.property||u.push(new Ct(t.key,t.value,'\"property\" property is required')),u;function f(t){var e=[],a=t.value,s=t.key;if(\"array\"!==Fr(a))return[new Ct(s,a,\"array expected, \"+Fr(a)+\" found\")];if(2!==a.length)return[new Ct(s,a,\"array length 2 expected, length \"+a.length+\" found\")];if(c){if(\"object\"!==Fr(a[0]))return[new Ct(s,a,\"object expected, \"+Fr(a[0])+\" found\")];if(void 0===a[0].zoom)return[new Ct(s,a,\"object stop key must have zoom\")];if(void 0===a[0].value)return[new Ct(s,a,\"object stop key must have value\")];if(n&&n>Ot(a[0].zoom))return[new Ct(s,a[0].zoom,\"stop zoom values must appear in ascending order\")];Ot(a[0].zoom)!==n&&(n=Ot(a[0].zoom),r=void 0,o={}),e=e.concat(Qr({key:s+\"[0]\",value:a[0],valueSpec:{zoom:{}},style:t.style,styleSpec:t.styleSpec,objectElementValidators:{zoom:tn,value:h}}))}else e=e.concat(h({key:s+\"[0]\",value:a[0],valueSpec:{},style:t.style,styleSpec:t.styleSpec},a));return Yr(zt(a[1]))?e.concat([new Ct(s+\"[1]\",a[1],\"expressions are not allowed in function stops.\")]):e.concat(kn({key:s+\"[1]\",value:a[1],valueSpec:i,style:t.style,styleSpec:t.styleSpec}))}function h(t,n){var s=Fr(t.value),l=Ot(t.value),c=null!==t.value?t.value:n;if(e){if(s!==e)return[new Ct(t.key,c,s+\" stop domain type must match previous stop domain type \"+e)]}else e=s;if(\"number\"!==s&&\"string\"!==s&&\"boolean\"!==s)return[new Ct(t.key,c,\"stop domain value must be a number, string, or boolean\")];if(\"number\"!==s&&\"categorical\"!==a){var u=\"number expected, \"+s+\" found\";return zr(i)&&void 0===a&&(u+='\\nIf you intended to use a categorical function, specify `\"type\": \"categorical\"`.'),[new Ct(t.key,c,u)]}return\"categorical\"!==a||\"number\"!==s||isFinite(l)&&Math.floor(l)===l?\"categorical\"!==a&&\"number\"===s&&void 0!==r&&l=2&&\"$id\"!==t[1]&&\"$type\"!==t[1];case\"in\":return t.length>=3&&(\"string\"!=typeof t[1]||Array.isArray(t[2]));case\"!in\":case\"!has\":case\"none\":return!1;case\"==\":case\"!=\":case\">\":case\">=\":case\"<\":case\"<=\":return 3!==t.length||Array.isArray(t[1])||Array.isArray(t[2]);case\"any\":case\"all\":for(var e=0,r=t.slice(1);ee?1:0}function cn(t){if(!t)return!0;var e,r=t[0];return t.length<=1?\"any\"!==r:\"==\"===r?un(t[1],t[2],\"==\"):\"!=\"===r?pn(un(t[1],t[2],\"==\")):\"<\"===r||\">\"===r||\"<=\"===r||\">=\"===r?un(t[1],t[2],r):\"any\"===r?(e=t.slice(1),[\"any\"].concat(e.map(cn))):\"all\"===r?[\"all\"].concat(t.slice(1).map(cn)):\"none\"===r?[\"all\"].concat(t.slice(1).map(cn).map(pn)):\"in\"===r?fn(t[1],t.slice(2)):\"!in\"===r?pn(fn(t[1],t.slice(2))):\"has\"===r?hn(t[1]):\"!has\"===r?pn(hn(t[1])):\"within\"!==r||t}function un(t,e,r){switch(t){case\"$type\":return[\"filter-type-\"+r,e];case\"$id\":return[\"filter-id-\"+r,e];default:return[\"filter-\"+r,t,e]}}function fn(t,e){if(0===e.length)return!1;switch(t){case\"$type\":return[\"filter-type-in\",[\"literal\",e]];case\"$id\":return[\"filter-id-in\",[\"literal\",e]];default:return e.length>200&&!e.some((function(t){return typeof t!=typeof e[0]}))?[\"filter-in-large\",t,[\"literal\",e.sort(ln)]]:[\"filter-in-small\",t,[\"literal\",e]]}}function hn(t){switch(t){case\"$type\":return!0;case\"$id\":return[\"filter-has-id\"];default:return[\"filter-has\",t]}}function pn(t){return[\"!\",t]}function dn(t){return an(zt(t.value))?rn(It({},t,{expressionContext:\"filter\",valueSpec:{value:\"boolean\"}})):function t(e){var r=e.value,n=e.key;if(\"array\"!==Fr(r))return[new Ct(n,r,\"array expected, \"+Fr(r)+\" found\")];var i,a=e.styleSpec,o=[];if(r.length<1)return[new Ct(n,r,\"filter array must have at least 1 element\")];switch(o=o.concat(nn({key:n+\"[0]\",value:r[0],valueSpec:a.filter_operator,style:e.style,styleSpec:e.styleSpec})),Ot(r[0])){case\"<\":case\"<=\":case\">\":case\">=\":r.length>=2&&\"$type\"===Ot(r[1])&&o.push(new Ct(n,r,'\"$type\" cannot be use with operator \"'+r[0]+'\"'));case\"==\":case\"!=\":3!==r.length&&o.push(new Ct(n,r,'filter array for operator \"'+r[0]+'\" must have 3 elements'));case\"in\":case\"!in\":r.length>=2&&\"string\"!==(i=Fr(r[1]))&&o.push(new Ct(n+\"[1]\",r[1],\"string expected, \"+i+\" found\"));for(var s=2;s=u[p+0]&&n>=u[p+1])?(o[h]=!0,a.push(c[h])):o[h]=!1}}},Dn.prototype._forEachCell=function(t,e,r,n,i,a,o,s){for(var l=this._convertToCellCoord(t),c=this._convertToCellCoord(e),u=this._convertToCellCoord(r),f=this._convertToCellCoord(n),h=l;h<=u;h++)for(var p=c;p<=f;p++){var d=this.d*p+h;if((!s||s(this._convertFromCellCoord(h),this._convertFromCellCoord(p),this._convertFromCellCoord(h+1),this._convertFromCellCoord(p+1)))&&i.call(this,t,e,r,n,d,a,o,s))return}},Dn.prototype._convertFromCellCoord=function(t){return(t-this.padding)/this.scale},Dn.prototype._convertToCellCoord=function(t){return Math.max(0,Math.min(this.d-1,Math.floor(t*this.scale)+this.padding))},Dn.prototype.toArrayBuffer=function(){if(this.arrayBuffer)return this.arrayBuffer;for(var t=this.cells,e=3+this.cells.length+1+1,r=0,n=0;n=0)){var f=t[u];c[u]=Bn[l].shallow.indexOf(u)>=0?f:Hn(f,e)}t instanceof Error&&(c.message=t.message)}if(c.$name)throw new Error(\"$name property is reserved for worker serialization logic.\");return\"Object\"!==l&&(c.$name=l),c}throw new Error(\"can't serialize object of type \"+typeof t)}function qn(t){if(null==t||\"boolean\"==typeof t||\"number\"==typeof t||\"string\"==typeof t||t instanceof Boolean||t instanceof Number||t instanceof String||t instanceof Date||t instanceof RegExp||Un(t)||Vn(t)||ArrayBuffer.isView(t)||t instanceof Rn)return t;if(Array.isArray(t))return t.map(qn);if(\"object\"==typeof t){var e=t.$name||\"Object\",r=Bn[e].klass;if(!r)throw new Error(\"can't deserialize unregistered class \"+e);if(r.deserialize)return r.deserialize(t);for(var n=Object.create(r.prototype),i=0,a=Object.keys(t);i=0?s:qn(s)}}return n}throw new Error(\"can't deserialize object of type \"+typeof t)}var Gn=function(){this.first=!0};Gn.prototype.update=function(t,e){var r=Math.floor(t);return this.first?(this.first=!1,this.lastIntegerZoom=r,this.lastIntegerZoomTime=0,this.lastZoom=t,this.lastFloorZoom=r,!0):(this.lastFloorZoom>r?(this.lastIntegerZoom=r+1,this.lastIntegerZoomTime=e):this.lastFloorZoom=128&&t<=255},Arabic:function(t){return t>=1536&&t<=1791},\"Arabic Supplement\":function(t){return t>=1872&&t<=1919},\"Arabic Extended-A\":function(t){return t>=2208&&t<=2303},\"Hangul Jamo\":function(t){return t>=4352&&t<=4607},\"Unified Canadian Aboriginal Syllabics\":function(t){return t>=5120&&t<=5759},Khmer:function(t){return t>=6016&&t<=6143},\"Unified Canadian Aboriginal Syllabics Extended\":function(t){return t>=6320&&t<=6399},\"General Punctuation\":function(t){return t>=8192&&t<=8303},\"Letterlike Symbols\":function(t){return t>=8448&&t<=8527},\"Number Forms\":function(t){return t>=8528&&t<=8591},\"Miscellaneous Technical\":function(t){return t>=8960&&t<=9215},\"Control Pictures\":function(t){return t>=9216&&t<=9279},\"Optical Character Recognition\":function(t){return t>=9280&&t<=9311},\"Enclosed Alphanumerics\":function(t){return t>=9312&&t<=9471},\"Geometric Shapes\":function(t){return t>=9632&&t<=9727},\"Miscellaneous Symbols\":function(t){return t>=9728&&t<=9983},\"Miscellaneous Symbols and Arrows\":function(t){return t>=11008&&t<=11263},\"CJK Radicals Supplement\":function(t){return t>=11904&&t<=12031},\"Kangxi Radicals\":function(t){return t>=12032&&t<=12255},\"Ideographic Description Characters\":function(t){return t>=12272&&t<=12287},\"CJK Symbols and Punctuation\":function(t){return t>=12288&&t<=12351},Hiragana:function(t){return t>=12352&&t<=12447},Katakana:function(t){return t>=12448&&t<=12543},Bopomofo:function(t){return t>=12544&&t<=12591},\"Hangul Compatibility Jamo\":function(t){return t>=12592&&t<=12687},Kanbun:function(t){return t>=12688&&t<=12703},\"Bopomofo Extended\":function(t){return t>=12704&&t<=12735},\"CJK Strokes\":function(t){return t>=12736&&t<=12783},\"Katakana Phonetic Extensions\":function(t){return t>=12784&&t<=12799},\"Enclosed CJK Letters and Months\":function(t){return t>=12800&&t<=13055},\"CJK Compatibility\":function(t){return t>=13056&&t<=13311},\"CJK Unified Ideographs Extension A\":function(t){return t>=13312&&t<=19903},\"Yijing Hexagram Symbols\":function(t){return t>=19904&&t<=19967},\"CJK Unified Ideographs\":function(t){return t>=19968&&t<=40959},\"Yi Syllables\":function(t){return t>=40960&&t<=42127},\"Yi Radicals\":function(t){return t>=42128&&t<=42191},\"Hangul Jamo Extended-A\":function(t){return t>=43360&&t<=43391},\"Hangul Syllables\":function(t){return t>=44032&&t<=55215},\"Hangul Jamo Extended-B\":function(t){return t>=55216&&t<=55295},\"Private Use Area\":function(t){return t>=57344&&t<=63743},\"CJK Compatibility Ideographs\":function(t){return t>=63744&&t<=64255},\"Arabic Presentation Forms-A\":function(t){return t>=64336&&t<=65023},\"Vertical Forms\":function(t){return t>=65040&&t<=65055},\"CJK Compatibility Forms\":function(t){return t>=65072&&t<=65103},\"Small Form Variants\":function(t){return t>=65104&&t<=65135},\"Arabic Presentation Forms-B\":function(t){return t>=65136&&t<=65279},\"Halfwidth and Fullwidth Forms\":function(t){return t>=65280&&t<=65519}};function Wn(t){for(var e=0,r=t;e=65097&&t<=65103)||(!!Yn[\"CJK Compatibility Ideographs\"](t)||(!!Yn[\"CJK Compatibility\"](t)||(!!Yn[\"CJK Radicals Supplement\"](t)||(!!Yn[\"CJK Strokes\"](t)||(!(!Yn[\"CJK Symbols and Punctuation\"](t)||t>=12296&&t<=12305||t>=12308&&t<=12319||12336===t)||(!!Yn[\"CJK Unified Ideographs Extension A\"](t)||(!!Yn[\"CJK Unified Ideographs\"](t)||(!!Yn[\"Enclosed CJK Letters and Months\"](t)||(!!Yn[\"Hangul Compatibility Jamo\"](t)||(!!Yn[\"Hangul Jamo Extended-A\"](t)||(!!Yn[\"Hangul Jamo Extended-B\"](t)||(!!Yn[\"Hangul Jamo\"](t)||(!!Yn[\"Hangul Syllables\"](t)||(!!Yn.Hiragana(t)||(!!Yn[\"Ideographic Description Characters\"](t)||(!!Yn.Kanbun(t)||(!!Yn[\"Kangxi Radicals\"](t)||(!!Yn[\"Katakana Phonetic Extensions\"](t)||(!(!Yn.Katakana(t)||12540===t)||(!(!Yn[\"Halfwidth and Fullwidth Forms\"](t)||65288===t||65289===t||65293===t||t>=65306&&t<=65310||65339===t||65341===t||65343===t||t>=65371&&t<=65503||65507===t||t>=65512&&t<=65519)||(!(!Yn[\"Small Form Variants\"](t)||t>=65112&&t<=65118||t>=65123&&t<=65126)||(!!Yn[\"Unified Canadian Aboriginal Syllabics\"](t)||(!!Yn[\"Unified Canadian Aboriginal Syllabics Extended\"](t)||(!!Yn[\"Vertical Forms\"](t)||(!!Yn[\"Yijing Hexagram Symbols\"](t)||(!!Yn[\"Yi Syllables\"](t)||!!Yn[\"Yi Radicals\"](t))))))))))))))))))))))))))))))}function Jn(t){return!(Zn(t)||function(t){return!(!Yn[\"Latin-1 Supplement\"](t)||167!==t&&169!==t&&174!==t&&177!==t&&188!==t&&189!==t&&190!==t&&215!==t&&247!==t)||(!(!Yn[\"General Punctuation\"](t)||8214!==t&&8224!==t&&8225!==t&&8240!==t&&8241!==t&&8251!==t&&8252!==t&&8258!==t&&8263!==t&&8264!==t&&8265!==t&&8273!==t)||(!!Yn[\"Letterlike Symbols\"](t)||(!!Yn[\"Number Forms\"](t)||(!(!Yn[\"Miscellaneous Technical\"](t)||!(t>=8960&&t<=8967||t>=8972&&t<=8991||t>=8996&&t<=9e3||9003===t||t>=9085&&t<=9114||t>=9150&&t<=9165||9167===t||t>=9169&&t<=9179||t>=9186&&t<=9215))||(!(!Yn[\"Control Pictures\"](t)||9251===t)||(!!Yn[\"Optical Character Recognition\"](t)||(!!Yn[\"Enclosed Alphanumerics\"](t)||(!!Yn[\"Geometric Shapes\"](t)||(!(!Yn[\"Miscellaneous Symbols\"](t)||t>=9754&&t<=9759)||(!(!Yn[\"Miscellaneous Symbols and Arrows\"](t)||!(t>=11026&&t<=11055||t>=11088&&t<=11097||t>=11192&&t<=11243))||(!!Yn[\"CJK Symbols and Punctuation\"](t)||(!!Yn.Katakana(t)||(!!Yn[\"Private Use Area\"](t)||(!!Yn[\"CJK Compatibility Forms\"](t)||(!!Yn[\"Small Form Variants\"](t)||(!!Yn[\"Halfwidth and Fullwidth Forms\"](t)||(8734===t||8756===t||8757===t||t>=9984&&t<=10087||t>=10102&&t<=10131||65532===t||65533===t)))))))))))))))))}(t))}function Kn(t){return t>=1424&&t<=2303||Yn[\"Arabic Presentation Forms-A\"](t)||Yn[\"Arabic Presentation Forms-B\"](t)}function Qn(t,e){return!(!e&&Kn(t))&&!(t>=2304&&t<=3583||t>=3840&&t<=4255||Yn.Khmer(t))}function $n(t){for(var e=0,r=t;e-1&&(ai=ni),ii&&ii(t)};function li(){ci.fire(new Mt(\"pluginStateChange\",{pluginStatus:ai,pluginURL:oi}))}var ci=new Et,ui=function(){return ai},fi=function(){if(ai!==ti||!oi)throw new Error(\"rtl-text-plugin cannot be downloaded unless a pluginURL is specified\");ai=ei,li(),oi&&xt({url:oi},(function(t){t?si(t):(ai=ri,li())}))},hi={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isLoaded:function(){return ai===ri||null!=hi.applyArabicShaping},isLoading:function(){return ai===ei},setState:function(t){ai=t.pluginStatus,oi=t.pluginURL},isParsed:function(){return null!=hi.applyArabicShaping&&null!=hi.processBidirectionalText&&null!=hi.processStyledBidirectionalText},getPluginURL:function(){return oi}},pi=function(t,e){this.zoom=t,e?(this.now=e.now,this.fadeDuration=e.fadeDuration,this.zoomHistory=e.zoomHistory,this.transition=e.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new Gn,this.transition={})};pi.prototype.isSupportedScript=function(t){return function(t,e){for(var r=0,n=t;rthis.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:e+(1-e)*r}:{fromScale:.5,toScale:1,t:1-(1-r)*e}};var di=function(t,e){this.property=t,this.value=e,this.expression=function(t,e){if(Br(t))return new Kr(t,e);if(Yr(t)){var r=Jr(t,e);if(\"error\"===r.result)throw new Error(r.value.map((function(t){return t.key+\": \"+t.message})).join(\", \"));return r.value}var n=t;return\"string\"==typeof t&&\"color\"===e.type&&(n=te.parse(t)),{kind:\"constant\",evaluate:function(){return n}}}(void 0===e?t.specification.default:e,t.specification)};di.prototype.isDataDriven=function(){return\"source\"===this.expression.kind||\"composite\"===this.expression.kind},di.prototype.possiblyEvaluate=function(t,e,r){return this.property.possiblyEvaluate(this,t,e,r)};var gi=function(t){this.property=t,this.value=new di(t,void 0)};gi.prototype.transitioned=function(t,e){return new vi(this.property,this.value,e,u({},t.transition,this.transition),t.now)},gi.prototype.untransitioned=function(){return new vi(this.property,this.value,null,{},0)};var mi=function(t){this._properties=t,this._values=Object.create(t.defaultTransitionablePropertyValues)};mi.prototype.getValue=function(t){return x(this._values[t].value.value)},mi.prototype.setValue=function(t,e){this._values.hasOwnProperty(t)||(this._values[t]=new gi(this._values[t].property)),this._values[t].value=new di(this._values[t].property,null===e?void 0:x(e))},mi.prototype.getTransition=function(t){return x(this._values[t].transition)},mi.prototype.setTransition=function(t,e){this._values.hasOwnProperty(t)||(this._values[t]=new gi(this._values[t].property)),this._values[t].transition=x(e)||void 0},mi.prototype.serialize=function(){for(var t={},e=0,r=Object.keys(this._values);ethis.end)return this.prior=null,i;if(this.value.isDataDriven())return this.prior=null,i;if(n=1)return 1;var e=t*t,r=e*t;return 4*(t<.5?r:3*(t-e)+r-.75)}(o))}return i};var yi=function(t){this._properties=t,this._values=Object.create(t.defaultTransitioningPropertyValues)};yi.prototype.possiblyEvaluate=function(t,e,r){for(var n=new _i(this._properties),i=0,a=Object.keys(this._values);in.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}},e.prototype.interpolate=function(t){return t},e}(Ti),Ai=function(t){this.specification=t};Ai.prototype.possiblyEvaluate=function(t,e,r,n){if(void 0!==t.value){if(\"constant\"===t.expression.kind){var i=t.expression.evaluate(e,null,{},r,n);return this._calculate(i,i,i,e)}return this._calculate(t.expression.evaluate(new pi(Math.floor(e.zoom-1),e)),t.expression.evaluate(new pi(Math.floor(e.zoom),e)),t.expression.evaluate(new pi(Math.floor(e.zoom+1),e)),e)}},Ai.prototype._calculate=function(t,e,r,n){return n.zoom>n.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}},Ai.prototype.interpolate=function(t){return t};var Mi=function(t){this.specification=t};Mi.prototype.possiblyEvaluate=function(t,e,r,n){return!!t.expression.evaluate(e,null,{},r,n)},Mi.prototype.interpolate=function(){return!1};var Si=function(t){for(var e in this.properties=t,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[],t){var r=t[e];r.specification.overridable&&this.overridableProperties.push(e);var n=this.defaultPropertyValues[e]=new di(r,void 0),i=this.defaultTransitionablePropertyValues[e]=new gi(r);this.defaultTransitioningPropertyValues[e]=i.untransitioned(),this.defaultPossiblyEvaluatedValues[e]=n.possiblyEvaluate({})}};Nn(\"DataDrivenProperty\",Ti),Nn(\"DataConstantProperty\",wi),Nn(\"CrossFadedDataDrivenProperty\",ki),Nn(\"CrossFadedProperty\",Ai),Nn(\"ColorRampProperty\",Mi);var Ei=function(t){function e(e,r){if(t.call(this),this.id=e.id,this.type=e.type,this._featureFilter={filter:function(){return!0},needGeometry:!1},\"custom\"!==e.type&&(e=e,this.metadata=e.metadata,this.minzoom=e.minzoom,this.maxzoom=e.maxzoom,\"background\"!==e.type&&(this.source=e.source,this.sourceLayer=e[\"source-layer\"],this.filter=e.filter),r.layout&&(this._unevaluatedLayout=new xi(r.layout)),r.paint)){for(var n in this._transitionablePaint=new mi(r.paint),e.paint)this.setPaintProperty(n,e.paint[n],{validate:!1});for(var i in e.layout)this.setLayoutProperty(i,e.layout[i],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new _i(r.paint)}}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getCrossfadeParameters=function(){return this._crossfadeParameters},e.prototype.getLayoutProperty=function(t){return\"visibility\"===t?this.visibility:this._unevaluatedLayout.getValue(t)},e.prototype.setLayoutProperty=function(t,e,r){if(void 0===r&&(r={}),null!=e){var n=\"layers.\"+this.id+\".layout.\"+t;if(this._validate(In,n,t,e,r))return}\"visibility\"!==t?this._unevaluatedLayout.setValue(t,e):this.visibility=e},e.prototype.getPaintProperty=function(t){return m(t,\"-transition\")?this._transitionablePaint.getTransition(t.slice(0,-\"-transition\".length)):this._transitionablePaint.getValue(t)},e.prototype.setPaintProperty=function(t,e,r){if(void 0===r&&(r={}),null!=e){var n=\"layers.\"+this.id+\".paint.\"+t;if(this._validate(Pn,n,t,e,r))return!1}if(m(t,\"-transition\"))return this._transitionablePaint.setTransition(t.slice(0,-\"-transition\".length),e||void 0),!1;var i=this._transitionablePaint._values[t],a=\"cross-faded-data-driven\"===i.property.specification[\"property-type\"],o=i.value.isDataDriven(),s=i.value;this._transitionablePaint.setValue(t,e),this._handleSpecialPaintPropertyUpdate(t);var l=this._transitionablePaint._values[t].value;return l.isDataDriven()||o||a||this._handleOverridablePaintPropertyUpdate(t,s,l)},e.prototype._handleSpecialPaintPropertyUpdate=function(t){},e.prototype._handleOverridablePaintPropertyUpdate=function(t,e,r){return!1},e.prototype.isHidden=function(t){return!!(this.minzoom&&t=this.maxzoom)||\"none\"===this.visibility)},e.prototype.updateTransitions=function(t){this._transitioningPaint=this._transitionablePaint.transitioned(t,this._transitioningPaint)},e.prototype.hasTransition=function(){return this._transitioningPaint.hasTransition()},e.prototype.recalculate=function(t,e){t.getCrossfadeParameters&&(this._crossfadeParameters=t.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(t,void 0,e)),this.paint=this._transitioningPaint.possiblyEvaluate(t,void 0,e)},e.prototype.serialize=function(){var t={id:this.id,type:this.type,source:this.source,\"source-layer\":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(t.layout=t.layout||{},t.layout.visibility=this.visibility),y(t,(function(t,e){return!(void 0===t||\"layout\"===e&&!Object.keys(t).length||\"paint\"===e&&!Object.keys(t).length)}))},e.prototype._validate=function(t,e,r,n,i){return void 0===i&&(i={}),(!i||!1!==i.validate)&&On(this,t.call(Ln,{key:e,layerType:this.type,objectKey:r,value:n,styleSpec:Lt,style:{glyphs:!0,sprite:!0}}))},e.prototype.is3D=function(){return!1},e.prototype.isTileClipped=function(){return!1},e.prototype.hasOffscreenPass=function(){return!1},e.prototype.resize=function(){},e.prototype.isStateDependent=function(){for(var t in this.paint._values){var e=this.paint.get(t);if(e instanceof bi&&zr(e.property.specification)&&((\"source\"===e.value.kind||\"composite\"===e.value.kind)&&e.value.isStateDependent))return!0}return!1},e}(Et),Li={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array},Ci=function(t,e){this._structArray=t,this._pos1=e*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8},Pi=function(){this.isTransferred=!1,this.capacity=-1,this.resize(0)};function Ii(t,e){void 0===e&&(e=1);var r=0,n=0;return{members:t.map((function(t){var i,a=(i=t.type,Li[i].BYTES_PER_ELEMENT),o=r=Oi(r,Math.max(e,a)),s=t.components||1;return n=Math.max(n,a),r+=a*s,{name:t.name,type:t.type,components:s,offset:o}})),size:Oi(r,Math.max(n,e)),alignment:e}}function Oi(t,e){return Math.ceil(t/e)*e}Pi.serialize=function(t,e){return t._trim(),e&&(t.isTransferred=!0,e.push(t.arrayBuffer)),{length:t.length,arrayBuffer:t.arrayBuffer}},Pi.deserialize=function(t){var e=Object.create(this.prototype);return e.arrayBuffer=t.arrayBuffer,e.length=t.length,e.capacity=t.arrayBuffer.byteLength/e.bytesPerElement,e._refreshViews(),e},Pi.prototype._trim=function(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())},Pi.prototype.clear=function(){this.length=0},Pi.prototype.resize=function(t){this.reserve(t),this.length=t},Pi.prototype.reserve=function(t){if(t>this.capacity){this.capacity=Math.max(t,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);var e=this.uint8;this._refreshViews(),e&&this.uint8.set(e)}},Pi.prototype._refreshViews=function(){throw new Error(\"_refreshViews() must be implemented by each concrete StructArray layout\")};var zi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var n=2*t;return this.int16[n+0]=e,this.int16[n+1]=r,t},e}(Pi);zi.prototype.bytesPerElement=4,Nn(\"StructArrayLayout2i4\",zi);var Di=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)},e.prototype.emplace=function(t,e,r,n,i){var a=4*t;return this.int16[a+0]=e,this.int16[a+1]=r,this.int16[a+2]=n,this.int16[a+3]=i,t},e}(Pi);Di.prototype.bytesPerElement=8,Nn(\"StructArrayLayout4i8\",Di);var Ri=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a){var o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,a)},e.prototype.emplace=function(t,e,r,n,i,a,o){var s=6*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.int16[s+2]=n,this.int16[s+3]=i,this.int16[s+4]=a,this.int16[s+5]=o,t},e}(Pi);Ri.prototype.bytesPerElement=12,Nn(\"StructArrayLayout2i4i12\",Ri);var Fi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a){var o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,a)},e.prototype.emplace=function(t,e,r,n,i,a,o){var s=4*t,l=8*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.uint8[l+4]=n,this.uint8[l+5]=i,this.uint8[l+6]=a,this.uint8[l+7]=o,t},e}(Pi);Fi.prototype.bytesPerElement=8,Nn(\"StructArrayLayout2i4ub8\",Fi);var Bi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l,c){var u=this.length;return this.resize(u+1),this.emplace(u,t,e,r,n,i,a,o,s,l,c)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,c,u){var f=9*t,h=18*t;return this.uint16[f+0]=e,this.uint16[f+1]=r,this.uint16[f+2]=n,this.uint16[f+3]=i,this.uint16[f+4]=a,this.uint16[f+5]=o,this.uint16[f+6]=s,this.uint16[f+7]=l,this.uint8[h+16]=c,this.uint8[h+17]=u,t},e}(Pi);Bi.prototype.bytesPerElement=18,Nn(\"StructArrayLayout8ui2ub18\",Bi);var Ni=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l,c,u,f){var h=this.length;return this.resize(h+1),this.emplace(h,t,e,r,n,i,a,o,s,l,c,u,f)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,c,u,f,h){var p=12*t;return this.int16[p+0]=e,this.int16[p+1]=r,this.int16[p+2]=n,this.int16[p+3]=i,this.uint16[p+4]=a,this.uint16[p+5]=o,this.uint16[p+6]=s,this.uint16[p+7]=l,this.int16[p+8]=c,this.int16[p+9]=u,this.int16[p+10]=f,this.int16[p+11]=h,t},e}(Pi);Ni.prototype.bytesPerElement=24,Nn(\"StructArrayLayout4i4ui4i24\",Ni);var ji=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=3*t;return this.float32[i+0]=e,this.float32[i+1]=r,this.float32[i+2]=n,t},e}(Pi);ji.prototype.bytesPerElement=12,Nn(\"StructArrayLayout3f12\",ji);var Ui=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){var r=1*t;return this.uint32[r+0]=e,t},e}(Pi);Ui.prototype.bytesPerElement=4,Nn(\"StructArrayLayout1ul4\",Ui);var Vi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l){var c=this.length;return this.resize(c+1),this.emplace(c,t,e,r,n,i,a,o,s,l)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,c){var u=10*t,f=5*t;return this.int16[u+0]=e,this.int16[u+1]=r,this.int16[u+2]=n,this.int16[u+3]=i,this.int16[u+4]=a,this.int16[u+5]=o,this.uint32[f+3]=s,this.uint16[u+8]=l,this.uint16[u+9]=c,t},e}(Pi);Vi.prototype.bytesPerElement=20,Nn(\"StructArrayLayout6i1ul2ui20\",Vi);var Hi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a){var o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,a)},e.prototype.emplace=function(t,e,r,n,i,a,o){var s=6*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.int16[s+2]=n,this.int16[s+3]=i,this.int16[s+4]=a,this.int16[s+5]=o,t},e}(Pi);Hi.prototype.bytesPerElement=12,Nn(\"StructArrayLayout2i2i2i12\",Hi);var qi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i){var a=this.length;return this.resize(a+1),this.emplace(a,t,e,r,n,i)},e.prototype.emplace=function(t,e,r,n,i,a){var o=4*t,s=8*t;return this.float32[o+0]=e,this.float32[o+1]=r,this.float32[o+2]=n,this.int16[s+6]=i,this.int16[s+7]=a,t},e}(Pi);qi.prototype.bytesPerElement=16,Nn(\"StructArrayLayout2f1f2i16\",qi);var Gi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)},e.prototype.emplace=function(t,e,r,n,i){var a=12*t,o=3*t;return this.uint8[a+0]=e,this.uint8[a+1]=r,this.float32[o+1]=n,this.float32[o+2]=i,t},e}(Pi);Gi.prototype.bytesPerElement=12,Nn(\"StructArrayLayout2ub2f12\",Gi);var Yi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=3*t;return this.uint16[i+0]=e,this.uint16[i+1]=r,this.uint16[i+2]=n,t},e}(Pi);Yi.prototype.bytesPerElement=6,Nn(\"StructArrayLayout3ui6\",Yi);var Wi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m){var v=this.length;return this.resize(v+1),this.emplace(v,t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m,v){var y=24*t,x=12*t,b=48*t;return this.int16[y+0]=e,this.int16[y+1]=r,this.uint16[y+2]=n,this.uint16[y+3]=i,this.uint32[x+2]=a,this.uint32[x+3]=o,this.uint32[x+4]=s,this.uint16[y+10]=l,this.uint16[y+11]=c,this.uint16[y+12]=u,this.float32[x+7]=f,this.float32[x+8]=h,this.uint8[b+36]=p,this.uint8[b+37]=d,this.uint8[b+38]=g,this.uint32[x+10]=m,this.int16[y+22]=v,t},e}(Pi);Wi.prototype.bytesPerElement=48,Nn(\"StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48\",Wi);var Xi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m,v,y,x,b,_,w,T,k,A,M,S){var E=this.length;return this.resize(E+1),this.emplace(E,t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m,v,y,x,b,_,w,T,k,A,M,S)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m,v,y,x,b,_,w,T,k,A,M,S,E){var L=34*t,C=17*t;return this.int16[L+0]=e,this.int16[L+1]=r,this.int16[L+2]=n,this.int16[L+3]=i,this.int16[L+4]=a,this.int16[L+5]=o,this.int16[L+6]=s,this.int16[L+7]=l,this.uint16[L+8]=c,this.uint16[L+9]=u,this.uint16[L+10]=f,this.uint16[L+11]=h,this.uint16[L+12]=p,this.uint16[L+13]=d,this.uint16[L+14]=g,this.uint16[L+15]=m,this.uint16[L+16]=v,this.uint16[L+17]=y,this.uint16[L+18]=x,this.uint16[L+19]=b,this.uint16[L+20]=_,this.uint16[L+21]=w,this.uint16[L+22]=T,this.uint32[C+12]=k,this.float32[C+13]=A,this.float32[C+14]=M,this.float32[C+15]=S,this.float32[C+16]=E,t},e}(Pi);Xi.prototype.bytesPerElement=68,Nn(\"StructArrayLayout8i15ui1ul4f68\",Xi);var Zi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){var r=1*t;return this.float32[r+0]=e,t},e}(Pi);Zi.prototype.bytesPerElement=4,Nn(\"StructArrayLayout1f4\",Zi);var Ji=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=3*t;return this.int16[i+0]=e,this.int16[i+1]=r,this.int16[i+2]=n,t},e}(Pi);Ji.prototype.bytesPerElement=6,Nn(\"StructArrayLayout3i6\",Ji);var Ki=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=2*t,a=4*t;return this.uint32[i+0]=e,this.uint16[a+2]=r,this.uint16[a+3]=n,t},e}(Pi);Ki.prototype.bytesPerElement=8,Nn(\"StructArrayLayout1ul2ui8\",Ki);var Qi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var n=2*t;return this.uint16[n+0]=e,this.uint16[n+1]=r,t},e}(Pi);Qi.prototype.bytesPerElement=4,Nn(\"StructArrayLayout2ui4\",Qi);var $i=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){var r=1*t;return this.uint16[r+0]=e,t},e}(Pi);$i.prototype.bytesPerElement=2,Nn(\"StructArrayLayout1ui2\",$i);var ta=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var n=2*t;return this.float32[n+0]=e,this.float32[n+1]=r,t},e}(Pi);ta.prototype.bytesPerElement=8,Nn(\"StructArrayLayout2f8\",ta);var ea=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)},e.prototype.emplace=function(t,e,r,n,i){var a=4*t;return this.float32[a+0]=e,this.float32[a+1]=r,this.float32[a+2]=n,this.float32[a+3]=i,t},e}(Pi);ea.prototype.bytesPerElement=16,Nn(\"StructArrayLayout4f16\",ea);var ra=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={anchorPointX:{configurable:!0},anchorPointY:{configurable:!0},x1:{configurable:!0},y1:{configurable:!0},x2:{configurable:!0},y2:{configurable:!0},featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0},anchorPoint:{configurable:!0}};return r.anchorPointX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorPointY.get=function(){return this._structArray.int16[this._pos2+1]},r.x1.get=function(){return this._structArray.int16[this._pos2+2]},r.y1.get=function(){return this._structArray.int16[this._pos2+3]},r.x2.get=function(){return this._structArray.int16[this._pos2+4]},r.y2.get=function(){return this._structArray.int16[this._pos2+5]},r.featureIndex.get=function(){return this._structArray.uint32[this._pos4+3]},r.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+8]},r.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+9]},r.anchorPoint.get=function(){return new i(this.anchorPointX,this.anchorPointY)},Object.defineProperties(e.prototype,r),e}(Ci);ra.prototype.size=20;var na=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new ra(this,t)},e}(Vi);Nn(\"CollisionBoxArray\",na);var ia=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={anchorX:{configurable:!0},anchorY:{configurable:!0},glyphStartIndex:{configurable:!0},numGlyphs:{configurable:!0},vertexStartIndex:{configurable:!0},lineStartIndex:{configurable:!0},lineLength:{configurable:!0},segment:{configurable:!0},lowerSize:{configurable:!0},upperSize:{configurable:!0},lineOffsetX:{configurable:!0},lineOffsetY:{configurable:!0},writingMode:{configurable:!0},placedOrientation:{configurable:!0},hidden:{configurable:!0},crossTileID:{configurable:!0},associatedIconIndex:{configurable:!0}};return r.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},r.glyphStartIndex.get=function(){return this._structArray.uint16[this._pos2+2]},r.numGlyphs.get=function(){return this._structArray.uint16[this._pos2+3]},r.vertexStartIndex.get=function(){return this._structArray.uint32[this._pos4+2]},r.lineStartIndex.get=function(){return this._structArray.uint32[this._pos4+3]},r.lineLength.get=function(){return this._structArray.uint32[this._pos4+4]},r.segment.get=function(){return this._structArray.uint16[this._pos2+10]},r.lowerSize.get=function(){return this._structArray.uint16[this._pos2+11]},r.upperSize.get=function(){return this._structArray.uint16[this._pos2+12]},r.lineOffsetX.get=function(){return this._structArray.float32[this._pos4+7]},r.lineOffsetY.get=function(){return this._structArray.float32[this._pos4+8]},r.writingMode.get=function(){return this._structArray.uint8[this._pos1+36]},r.placedOrientation.get=function(){return this._structArray.uint8[this._pos1+37]},r.placedOrientation.set=function(t){this._structArray.uint8[this._pos1+37]=t},r.hidden.get=function(){return this._structArray.uint8[this._pos1+38]},r.hidden.set=function(t){this._structArray.uint8[this._pos1+38]=t},r.crossTileID.get=function(){return this._structArray.uint32[this._pos4+10]},r.crossTileID.set=function(t){this._structArray.uint32[this._pos4+10]=t},r.associatedIconIndex.get=function(){return this._structArray.int16[this._pos2+22]},Object.defineProperties(e.prototype,r),e}(Ci);ia.prototype.size=48;var aa=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new ia(this,t)},e}(Wi);Nn(\"PlacedSymbolArray\",aa);var oa=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={anchorX:{configurable:!0},anchorY:{configurable:!0},rightJustifiedTextSymbolIndex:{configurable:!0},centerJustifiedTextSymbolIndex:{configurable:!0},leftJustifiedTextSymbolIndex:{configurable:!0},verticalPlacedTextSymbolIndex:{configurable:!0},placedIconSymbolIndex:{configurable:!0},verticalPlacedIconSymbolIndex:{configurable:!0},key:{configurable:!0},textBoxStartIndex:{configurable:!0},textBoxEndIndex:{configurable:!0},verticalTextBoxStartIndex:{configurable:!0},verticalTextBoxEndIndex:{configurable:!0},iconBoxStartIndex:{configurable:!0},iconBoxEndIndex:{configurable:!0},verticalIconBoxStartIndex:{configurable:!0},verticalIconBoxEndIndex:{configurable:!0},featureIndex:{configurable:!0},numHorizontalGlyphVertices:{configurable:!0},numVerticalGlyphVertices:{configurable:!0},numIconVertices:{configurable:!0},numVerticalIconVertices:{configurable:!0},useRuntimeCollisionCircles:{configurable:!0},crossTileID:{configurable:!0},textBoxScale:{configurable:!0},textOffset0:{configurable:!0},textOffset1:{configurable:!0},collisionCircleDiameter:{configurable:!0}};return r.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},r.rightJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+2]},r.centerJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+3]},r.leftJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+4]},r.verticalPlacedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+5]},r.placedIconSymbolIndex.get=function(){return this._structArray.int16[this._pos2+6]},r.verticalPlacedIconSymbolIndex.get=function(){return this._structArray.int16[this._pos2+7]},r.key.get=function(){return this._structArray.uint16[this._pos2+8]},r.textBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+9]},r.textBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+10]},r.verticalTextBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+11]},r.verticalTextBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+12]},r.iconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+13]},r.iconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+14]},r.verticalIconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+15]},r.verticalIconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+16]},r.featureIndex.get=function(){return this._structArray.uint16[this._pos2+17]},r.numHorizontalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+18]},r.numVerticalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+19]},r.numIconVertices.get=function(){return this._structArray.uint16[this._pos2+20]},r.numVerticalIconVertices.get=function(){return this._structArray.uint16[this._pos2+21]},r.useRuntimeCollisionCircles.get=function(){return this._structArray.uint16[this._pos2+22]},r.crossTileID.get=function(){return this._structArray.uint32[this._pos4+12]},r.crossTileID.set=function(t){this._structArray.uint32[this._pos4+12]=t},r.textBoxScale.get=function(){return this._structArray.float32[this._pos4+13]},r.textOffset0.get=function(){return this._structArray.float32[this._pos4+14]},r.textOffset1.get=function(){return this._structArray.float32[this._pos4+15]},r.collisionCircleDiameter.get=function(){return this._structArray.float32[this._pos4+16]},Object.defineProperties(e.prototype,r),e}(Ci);oa.prototype.size=68;var sa=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new oa(this,t)},e}(Xi);Nn(\"SymbolInstanceArray\",sa);var la=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getoffsetX=function(t){return this.float32[1*t+0]},e}(Zi);Nn(\"GlyphOffsetArray\",la);var ca=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getx=function(t){return this.int16[3*t+0]},e.prototype.gety=function(t){return this.int16[3*t+1]},e.prototype.gettileUnitDistanceFromAnchor=function(t){return this.int16[3*t+2]},e}(Ji);Nn(\"SymbolLineVertexArray\",ca);var ua=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0}};return r.featureIndex.get=function(){return this._structArray.uint32[this._pos4+0]},r.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+2]},r.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+3]},Object.defineProperties(e.prototype,r),e}(Ci);ua.prototype.size=8;var fa=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new ua(this,t)},e}(Ki);Nn(\"FeatureIndexArray\",fa);var ha=Ii([{name:\"a_pos\",components:2,type:\"Int16\"}],4).members,pa=function(t){void 0===t&&(t=[]),this.segments=t};function da(t,e){return 256*(t=l(Math.floor(t),0,255))+(e=l(Math.floor(e),0,255))}pa.prototype.prepareSegment=function(t,e,r,n){var i=this.segments[this.segments.length-1];return t>pa.MAX_VERTEX_ARRAY_LENGTH&&_(\"Max vertices per segment is \"+pa.MAX_VERTEX_ARRAY_LENGTH+\": bucket requested \"+t),(!i||i.vertexLength+t>pa.MAX_VERTEX_ARRAY_LENGTH||i.sortKey!==n)&&(i={vertexOffset:e.length,primitiveOffset:r.length,vertexLength:0,primitiveLength:0},void 0!==n&&(i.sortKey=n),this.segments.push(i)),i},pa.prototype.get=function(){return this.segments},pa.prototype.destroy=function(){for(var t=0,e=this.segments;t>>16)*o&65535)<<16)&4294967295)<<15|l>>>17))*s+(((l>>>16)*s&65535)<<16)&4294967295)<<13|i>>>19))+((5*(i>>>16)&65535)<<16)&4294967295))+((58964+(a>>>16)&65535)<<16);switch(l=0,r){case 3:l^=(255&t.charCodeAt(c+2))<<16;case 2:l^=(255&t.charCodeAt(c+1))<<8;case 1:i^=l=(65535&(l=(l=(65535&(l^=255&t.charCodeAt(c)))*o+(((l>>>16)*o&65535)<<16)&4294967295)<<15|l>>>17))*s+(((l>>>16)*s&65535)<<16)&4294967295}return i^=t.length,i=2246822507*(65535&(i^=i>>>16))+((2246822507*(i>>>16)&65535)<<16)&4294967295,i=3266489909*(65535&(i^=i>>>13))+((3266489909*(i>>>16)&65535)<<16)&4294967295,(i^=i>>>16)>>>0}})),va=e((function(t){t.exports=function(t,e){for(var r,n=t.length,i=e^n,a=0;n>=4;)r=1540483477*(65535&(r=255&t.charCodeAt(a)|(255&t.charCodeAt(++a))<<8|(255&t.charCodeAt(++a))<<16|(255&t.charCodeAt(++a))<<24))+((1540483477*(r>>>16)&65535)<<16),i=1540483477*(65535&i)+((1540483477*(i>>>16)&65535)<<16)^(r=1540483477*(65535&(r^=r>>>24))+((1540483477*(r>>>16)&65535)<<16)),n-=4,++a;switch(n){case 3:i^=(255&t.charCodeAt(a+2))<<16;case 2:i^=(255&t.charCodeAt(a+1))<<8;case 1:i=1540483477*(65535&(i^=255&t.charCodeAt(a)))+((1540483477*(i>>>16)&65535)<<16)}return i=1540483477*(65535&(i^=i>>>13))+((1540483477*(i>>>16)&65535)<<16),(i^=i>>>15)>>>0}})),ya=ma,xa=ma,ba=va;ya.murmur3=xa,ya.murmur2=ba;var _a=function(){this.ids=[],this.positions=[],this.indexed=!1};_a.prototype.add=function(t,e,r,n){this.ids.push(Ta(t)),this.positions.push(e,r,n)},_a.prototype.getPositions=function(t){for(var e=Ta(t),r=0,n=this.ids.length-1;r>1;this.ids[i]>=e?n=i:r=i+1}for(var a=[];this.ids[r]===e;){var o=this.positions[3*r],s=this.positions[3*r+1],l=this.positions[3*r+2];a.push({index:o,start:s,end:l}),r++}return a},_a.serialize=function(t,e){var r=new Float64Array(t.ids),n=new Uint32Array(t.positions);return function t(e,r,n,i){for(;n>1],o=n-1,s=i+1;;){do{o++}while(e[o]a);if(o>=s)break;ka(e,o,s),ka(r,3*o,3*s),ka(r,3*o+1,3*s+1),ka(r,3*o+2,3*s+2)}s-nGa.max||o.yGa.max)&&(_(\"Geometry exceeds allowed extent, reduce your vector tile buffer size\"),o.x=l(o.x,Ga.min,Ga.max),o.y=l(o.y,Ga.min,Ga.max))}return r}function Wa(t,e,r,n,i){t.emplaceBack(2*e+(n+1)/2,2*r+(i+1)/2)}var Xa=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((function(t){return t.id})),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new zi,this.indexArray=new Yi,this.segments=new pa,this.programConfigurations=new Ua(ha,t.layers,t.zoom),this.stateDependentLayerIds=this.layers.filter((function(t){return t.isStateDependent()})).map((function(t){return t.id}))};function Za(t,e){for(var r=0;r1){if($a(t,e))return!0;for(var n=0;n1?t.distSqr(r):t.distSqr(r.sub(e)._mult(i)._add(e))}function no(t,e){for(var r,n,i,a=!1,o=0;oe.y!=i.y>e.y&&e.x<(i.x-n.x)*(e.y-n.y)/(i.y-n.y)+n.x&&(a=!a);return a}function io(t,e){for(var r=!1,n=0,i=t.length-1;ne.y!=o.y>e.y&&e.x<(o.x-a.x)*(e.y-a.y)/(o.y-a.y)+a.x&&(r=!r)}return r}function ao(t,e,r){var n=r[0],i=r[2];if(t.xi.x&&e.x>i.x||t.yi.y&&e.y>i.y)return!1;var a=w(t,e,r[0]);return a!==w(t,e,r[1])||a!==w(t,e,r[2])||a!==w(t,e,r[3])}function oo(t,e,r){var n=e.paint.get(t).value;return\"constant\"===n.kind?n.value:r.programConfigurations.get(e.id).getMaxValue(t)}function so(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function lo(t,e,r,n,a){if(!e[0]&&!e[1])return t;var o=i.convert(e)._mult(a);\"viewport\"===r&&o._rotate(-n);for(var s=[],l=0;l=8192||u<0||u>=8192)){var f=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,t.sortKey),h=f.vertexLength;Wa(this.layoutVertexArray,c,u,-1,-1),Wa(this.layoutVertexArray,c,u,1,-1),Wa(this.layoutVertexArray,c,u,1,1),Wa(this.layoutVertexArray,c,u,-1,1),this.indexArray.emplaceBack(h,h+1,h+2),this.indexArray.emplaceBack(h,h+3,h+2),f.vertexLength+=4,f.primitiveLength+=2}}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,{},n)},Nn(\"CircleBucket\",Xa,{omit:[\"layers\"]});var co=new Si({\"circle-sort-key\":new Ti(Lt.layout_circle[\"circle-sort-key\"])}),uo={paint:new Si({\"circle-radius\":new Ti(Lt.paint_circle[\"circle-radius\"]),\"circle-color\":new Ti(Lt.paint_circle[\"circle-color\"]),\"circle-blur\":new Ti(Lt.paint_circle[\"circle-blur\"]),\"circle-opacity\":new Ti(Lt.paint_circle[\"circle-opacity\"]),\"circle-translate\":new wi(Lt.paint_circle[\"circle-translate\"]),\"circle-translate-anchor\":new wi(Lt.paint_circle[\"circle-translate-anchor\"]),\"circle-pitch-scale\":new wi(Lt.paint_circle[\"circle-pitch-scale\"]),\"circle-pitch-alignment\":new wi(Lt.paint_circle[\"circle-pitch-alignment\"]),\"circle-stroke-width\":new Ti(Lt.paint_circle[\"circle-stroke-width\"]),\"circle-stroke-color\":new Ti(Lt.paint_circle[\"circle-stroke-color\"]),\"circle-stroke-opacity\":new Ti(Lt.paint_circle[\"circle-stroke-opacity\"])}),layout:co},fo=\"undefined\"!=typeof Float32Array?Float32Array:Array;function ho(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function po(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3],s=e[4],l=e[5],c=e[6],u=e[7],f=e[8],h=e[9],p=e[10],d=e[11],g=e[12],m=e[13],v=e[14],y=e[15],x=r[0],b=r[1],_=r[2],w=r[3];return t[0]=x*n+b*s+_*f+w*g,t[1]=x*i+b*l+_*h+w*m,t[2]=x*a+b*c+_*p+w*v,t[3]=x*o+b*u+_*d+w*y,x=r[4],b=r[5],_=r[6],w=r[7],t[4]=x*n+b*s+_*f+w*g,t[5]=x*i+b*l+_*h+w*m,t[6]=x*a+b*c+_*p+w*v,t[7]=x*o+b*u+_*d+w*y,x=r[8],b=r[9],_=r[10],w=r[11],t[8]=x*n+b*s+_*f+w*g,t[9]=x*i+b*l+_*h+w*m,t[10]=x*a+b*c+_*p+w*v,t[11]=x*o+b*u+_*d+w*y,x=r[12],b=r[13],_=r[14],w=r[15],t[12]=x*n+b*s+_*f+w*g,t[13]=x*i+b*l+_*h+w*m,t[14]=x*a+b*c+_*p+w*v,t[15]=x*o+b*u+_*d+w*y,t}Math.hypot||(Math.hypot=function(){for(var t=arguments,e=0,r=arguments.length;r--;)e+=t[r]*t[r];return Math.sqrt(e)});var go=po;var mo,vo,yo=function(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t};mo=new fo(3),fo!=Float32Array&&(mo[0]=0,mo[1]=0,mo[2]=0),vo=mo;function xo(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3];return t[0]=r[0]*n+r[4]*i+r[8]*a+r[12]*o,t[1]=r[1]*n+r[5]*i+r[9]*a+r[13]*o,t[2]=r[2]*n+r[6]*i+r[10]*a+r[14]*o,t[3]=r[3]*n+r[7]*i+r[11]*a+r[15]*o,t}!function(){var t=function(){var t=new fo(4);return fo!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[3]=0),t}()}();var bo=function(t){var e=t[0],r=t[1];return e*e+r*r},_o=(function(){var t=function(){var t=new fo(2);return fo!=Float32Array&&(t[0]=0,t[1]=0),t}()}(),function(t){function e(e){t.call(this,e,uo)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.createBucket=function(t){return new Xa(t)},e.prototype.queryRadius=function(t){var e=t;return oo(\"circle-radius\",this,e)+oo(\"circle-stroke-width\",this,e)+so(this.paint.get(\"circle-translate\"))},e.prototype.queryIntersectsFeature=function(t,e,r,n,i,a,o,s){for(var l=lo(t,this.paint.get(\"circle-translate\"),this.paint.get(\"circle-translate-anchor\"),a.angle,o),c=this.paint.get(\"circle-radius\").evaluate(e,r)+this.paint.get(\"circle-stroke-width\").evaluate(e,r),u=\"map\"===this.paint.get(\"circle-pitch-alignment\"),f=u?l:function(t,e){return t.map((function(t){return wo(t,e)}))}(l,s),h=u?c*o:c,p=0,d=n;pt.width||i.height>t.height||r.x>t.width-i.width||r.y>t.height-i.height)throw new RangeError(\"out of range source coordinates for image copy\");if(i.width>e.width||i.height>e.height||n.x>e.width-i.width||n.y>e.height-i.height)throw new RangeError(\"out of range destination coordinates for image copy\");for(var o=t.data,s=e.data,l=0;l80*r){n=a=t[0],i=o=t[1];for(var d=r;da&&(a=s),l>o&&(o=l);c=0!==(c=Math.max(a-n,o-i))?1/c:0}return jo(h,p,r,n,i,c),p}function Bo(t,e,r,n,i){var a,o;if(i===ls(t,e,r,n)>0)for(a=e;a=e;a-=n)o=as(a,t[a],t[a+1],o);return o&&$o(o,o.next)&&(os(o),o=o.next),o}function No(t,e){if(!t)return t;e||(e=t);var r,n=t;do{if(r=!1,n.steiner||!$o(n,n.next)&&0!==Qo(n.prev,n,n.next))n=n.next;else{if(os(n),(n=e=n.prev)===n.next)break;r=!0}}while(r||n!==e);return e}function jo(t,e,r,n,i,a,o){if(t){!o&&a&&function(t,e,r,n){var i=t;do{null===i.z&&(i.z=Xo(i.x,i.y,e,r,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next}while(i!==t);i.prevZ.nextZ=null,i.prevZ=null,function(t){var e,r,n,i,a,o,s,l,c=1;do{for(r=t,t=null,a=null,o=0;r;){for(o++,n=r,s=0,e=0;e0||l>0&&n;)0!==s&&(0===l||!n||r.z<=n.z)?(i=r,r=r.nextZ,s--):(i=n,n=n.nextZ,l--),a?a.nextZ=i:t=i,i.prevZ=a,a=i;r=n}a.nextZ=null,c*=2}while(o>1)}(i)}(t,n,i,a);for(var s,l,c=t;t.prev!==t.next;)if(s=t.prev,l=t.next,a?Vo(t,n,i,a):Uo(t))e.push(s.i/r),e.push(t.i/r),e.push(l.i/r),os(t),t=l.next,c=l.next;else if((t=l)===c){o?1===o?jo(t=Ho(No(t),e,r),e,r,n,i,a,2):2===o&&qo(t,e,r,n,i,a):jo(No(t),e,r,n,i,a,1);break}}}function Uo(t){var e=t.prev,r=t,n=t.next;if(Qo(e,r,n)>=0)return!1;for(var i=t.next.next;i!==t.prev;){if(Jo(e.x,e.y,r.x,r.y,n.x,n.y,i.x,i.y)&&Qo(i.prev,i,i.next)>=0)return!1;i=i.next}return!0}function Vo(t,e,r,n){var i=t.prev,a=t,o=t.next;if(Qo(i,a,o)>=0)return!1;for(var s=i.xa.x?i.x>o.x?i.x:o.x:a.x>o.x?a.x:o.x,u=i.y>a.y?i.y>o.y?i.y:o.y:a.y>o.y?a.y:o.y,f=Xo(s,l,e,r,n),h=Xo(c,u,e,r,n),p=t.prevZ,d=t.nextZ;p&&p.z>=f&&d&&d.z<=h;){if(p!==t.prev&&p!==t.next&&Jo(i.x,i.y,a.x,a.y,o.x,o.y,p.x,p.y)&&Qo(p.prev,p,p.next)>=0)return!1;if(p=p.prevZ,d!==t.prev&&d!==t.next&&Jo(i.x,i.y,a.x,a.y,o.x,o.y,d.x,d.y)&&Qo(d.prev,d,d.next)>=0)return!1;d=d.nextZ}for(;p&&p.z>=f;){if(p!==t.prev&&p!==t.next&&Jo(i.x,i.y,a.x,a.y,o.x,o.y,p.x,p.y)&&Qo(p.prev,p,p.next)>=0)return!1;p=p.prevZ}for(;d&&d.z<=h;){if(d!==t.prev&&d!==t.next&&Jo(i.x,i.y,a.x,a.y,o.x,o.y,d.x,d.y)&&Qo(d.prev,d,d.next)>=0)return!1;d=d.nextZ}return!0}function Ho(t,e,r){var n=t;do{var i=n.prev,a=n.next.next;!$o(i,a)&&ts(i,n,n.next,a)&&ns(i,a)&&ns(a,i)&&(e.push(i.i/r),e.push(n.i/r),e.push(a.i/r),os(n),os(n.next),n=t=a),n=n.next}while(n!==t);return No(n)}function qo(t,e,r,n,i,a){var o=t;do{for(var s=o.next.next;s!==o.prev;){if(o.i!==s.i&&Ko(o,s)){var l=is(o,s);return o=No(o,o.next),l=No(l,l.next),jo(o,e,r,n,i,a),void jo(l,e,r,n,i,a)}s=s.next}o=o.next}while(o!==t)}function Go(t,e){return t.x-e.x}function Yo(t,e){if(e=function(t,e){var r,n=e,i=t.x,a=t.y,o=-1/0;do{if(a<=n.y&&a>=n.next.y&&n.next.y!==n.y){var s=n.x+(a-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(s<=i&&s>o){if(o=s,s===i){if(a===n.y)return n;if(a===n.next.y)return n.next}r=n.x=n.x&&n.x>=u&&i!==n.x&&Jo(ar.x||n.x===r.x&&Wo(r,n)))&&(r=n,h=l)),n=n.next}while(n!==c);return r}(t,e)){var r=is(e,t);No(e,e.next),No(r,r.next)}}function Wo(t,e){return Qo(t.prev,t,e.prev)<0&&Qo(e.next,t,t.next)<0}function Xo(t,e,r,n,i){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-r)*i)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-n)*i)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function Zo(t){var e=t,r=t;do{(e.x=0&&(t-o)*(n-s)-(r-o)*(e-s)>=0&&(r-o)*(a-s)-(i-o)*(n-s)>=0}function Ko(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){var r=t;do{if(r.i!==t.i&&r.next.i!==t.i&&r.i!==e.i&&r.next.i!==e.i&&ts(r,r.next,t,e))return!0;r=r.next}while(r!==t);return!1}(t,e)&&(ns(t,e)&&ns(e,t)&&function(t,e){var r=t,n=!1,i=(t.x+e.x)/2,a=(t.y+e.y)/2;do{r.y>a!=r.next.y>a&&r.next.y!==r.y&&i<(r.next.x-r.x)*(a-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next}while(r!==t);return n}(t,e)&&(Qo(t.prev,t,e.prev)||Qo(t,e.prev,e))||$o(t,e)&&Qo(t.prev,t,t.next)>0&&Qo(e.prev,e,e.next)>0)}function Qo(t,e,r){return(e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y)}function $o(t,e){return t.x===e.x&&t.y===e.y}function ts(t,e,r,n){var i=rs(Qo(t,e,r)),a=rs(Qo(t,e,n)),o=rs(Qo(r,n,t)),s=rs(Qo(r,n,e));return i!==a&&o!==s||(!(0!==i||!es(t,r,e))||(!(0!==a||!es(t,n,e))||(!(0!==o||!es(r,t,n))||!(0!==s||!es(r,e,n)))))}function es(t,e,r){return e.x<=Math.max(t.x,r.x)&&e.x>=Math.min(t.x,r.x)&&e.y<=Math.max(t.y,r.y)&&e.y>=Math.min(t.y,r.y)}function rs(t){return t>0?1:t<0?-1:0}function ns(t,e){return Qo(t.prev,t,t.next)<0?Qo(t,e,t.next)>=0&&Qo(t,t.prev,e)>=0:Qo(t,e,t.prev)<0||Qo(t,t.next,e)<0}function is(t,e){var r=new ss(t.i,t.x,t.y),n=new ss(e.i,e.x,e.y),i=t.next,a=e.prev;return t.next=e,e.prev=t,r.next=i,i.prev=r,n.next=r,r.prev=n,a.next=n,n.prev=a,n}function as(t,e,r,n){var i=new ss(t,e,r);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function os(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function ss(t,e,r){this.i=t,this.x=e,this.y=r,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function ls(t,e,r,n){for(var i=0,a=e,o=r-n;an;){if(i-n>600){var o=i-n+1,s=r-n+1,l=Math.log(o),c=.5*Math.exp(2*l/3),u=.5*Math.sqrt(l*c*(o-c)/o)*(s-o/2<0?-1:1),f=Math.max(n,Math.floor(r-s*c/o+u)),h=Math.min(i,Math.floor(r+(o-s)*c/o+u));t(e,r,f,h,a)}var p=e[r],d=n,g=i;for(us(e,n,r),a(e[i],p)>0&&us(e,n,i);d0;)g--}0===a(e[n],p)?us(e,n,g):(g++,us(e,g,i)),g<=r&&(n=g+1),r<=g&&(i=g-1)}}(t,e,r||0,n||t.length-1,i||fs)}function us(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function fs(t,e){return te?1:0}function hs(t,e){var r=t.length;if(r<=1)return[t];for(var n,i,a=[],o=0;o1)for(var l=0;l0&&(n+=t[i-1].length,r.holes.push(n))}return r},Do.default=Ro;var ms=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((function(t){return t.id})),this.index=t.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new zi,this.indexArray=new Yi,this.indexArray2=new Qi,this.programConfigurations=new Ua(zo,t.layers,t.zoom),this.segments=new pa,this.segments2=new pa,this.stateDependentLayerIds=this.layers.filter((function(t){return t.isStateDependent()})).map((function(t){return t.id}))};ms.prototype.populate=function(t,e,r){this.hasPattern=ds(\"fill\",this.layers,e);for(var n=this.layers[0].layout.get(\"fill-sort-key\"),i=[],a=0,o=t;a>3}if(a--,1===n||2===n)o+=t.readSVarint(),s+=t.readSVarint(),1===n&&(e&&l.push(e),e=[]),e.push(new i(o,s));else{if(7!==n)throw new Error(\"unknown command \"+n);e&&e.push(e[0].clone())}}return e&&l.push(e),l},ws.prototype.bbox=function(){var t=this._pbf;t.pos=this._geometry;for(var e=t.readVarint()+t.pos,r=1,n=0,i=0,a=0,o=1/0,s=-1/0,l=1/0,c=-1/0;t.pos>3}if(n--,1===r||2===r)(i+=t.readSVarint())s&&(s=i),(a+=t.readSVarint())c&&(c=a);else if(7!==r)throw new Error(\"unknown command \"+r)}return[o,l,s,c]},ws.prototype.toGeoJSON=function(t,e,r){var n,i,a=this.extent*Math.pow(2,r),o=this.extent*t,s=this.extent*e,l=this.loadGeometry(),c=ws.types[this.type];function u(t){for(var e=0;e>3;e=1===n?t.readString():2===n?t.readFloat():3===n?t.readDouble():4===n?t.readVarint64():5===n?t.readVarint():6===n?t.readSVarint():7===n?t.readBoolean():null}return e}(r))}function Es(t,e,r){if(3===t){var n=new As(r,r.readVarint()+r.pos);n.length&&(e[n.name]=n)}}Ms.prototype.feature=function(t){if(t<0||t>=this._features.length)throw new Error(\"feature index out of bounds\");this._pbf.pos=this._features[t];var e=this._pbf.readVarint()+this._pbf.pos;return new _s(this._pbf,e,this.extent,this._keys,this._values)};var Ls={VectorTile:function(t,e){this.layers=t.readFields(Es,{},e)},VectorTileFeature:_s,VectorTileLayer:As},Cs=Ls.VectorTileFeature.types,Ps=Math.pow(2,13);function Is(t,e,r,n,i,a,o,s){t.emplaceBack(e,r,2*Math.floor(n*Ps)+o,i*Ps*2,a*Ps*2,Math.round(s))}var Os=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((function(t){return t.id})),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new Ri,this.indexArray=new Yi,this.programConfigurations=new Ua(bs,t.layers,t.zoom),this.segments=new pa,this.stateDependentLayerIds=this.layers.filter((function(t){return t.isStateDependent()})).map((function(t){return t.id}))};function zs(t,e){return t.x===e.x&&(t.x<0||t.x>8192)||t.y===e.y&&(t.y<0||t.y>8192)}function Ds(t){return t.every((function(t){return t.x<0}))||t.every((function(t){return t.x>8192}))||t.every((function(t){return t.y<0}))||t.every((function(t){return t.y>8192}))}Os.prototype.populate=function(t,e,r){this.features=[],this.hasPattern=ds(\"fill-extrusion\",this.layers,e);for(var n=0,i=t;n=1){var y=d[m-1];if(!zs(v,y)){f.vertexLength+4>pa.MAX_VERTEX_ARRAY_LENGTH&&(f=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));var x=v.sub(y)._perp()._unit(),b=y.dist(v);g+b>32768&&(g=0),Is(this.layoutVertexArray,v.x,v.y,x.x,x.y,0,0,g),Is(this.layoutVertexArray,v.x,v.y,x.x,x.y,0,1,g),g+=b,Is(this.layoutVertexArray,y.x,y.y,x.x,x.y,0,0,g),Is(this.layoutVertexArray,y.x,y.y,x.x,x.y,0,1,g);var _=f.vertexLength;this.indexArray.emplaceBack(_,_+2,_+1),this.indexArray.emplaceBack(_+1,_+2,_+3),f.vertexLength+=4,f.primitiveLength+=2}}}}if(f.vertexLength+l>pa.MAX_VERTEX_ARRAY_LENGTH&&(f=this.segments.prepareSegment(l,this.layoutVertexArray,this.indexArray)),\"Polygon\"===Cs[t.type]){for(var w=[],T=[],k=f.vertexLength,A=0,M=s;A=2&&t[l-1].equals(t[l-2]);)l--;for(var c=0;c0;if(T&&v>c){var A=u.dist(p);if(A>2*f){var M=u.sub(u.sub(p)._mult(f/A)._round());this.updateDistance(p,M),this.addCurrentVertex(M,g,0,0,h),p=M}}var S=p&&d,E=S?r:s?\"butt\":n;if(S&&\"round\"===E&&(_i&&(E=\"bevel\"),\"bevel\"===E&&(_>2&&(E=\"flipbevel\"),_100)y=m.mult(-1);else{var L=_*g.add(m).mag()/g.sub(m).mag();y._perp()._mult(L*(k?-1:1))}this.addCurrentVertex(u,y,0,0,h),this.addCurrentVertex(u,y.mult(-1),0,0,h)}else if(\"bevel\"===E||\"fakeround\"===E){var C=-Math.sqrt(_*_-1),P=k?C:0,I=k?0:C;if(p&&this.addCurrentVertex(u,g,P,I,h),\"fakeround\"===E)for(var O=Math.round(180*w/Math.PI/20),z=1;z2*f){var j=u.add(d.sub(u)._mult(f/N)._round());this.updateDistance(u,j),this.addCurrentVertex(j,m,0,0,h),u=j}}}}},qs.prototype.addCurrentVertex=function(t,e,r,n,i,a){void 0===a&&(a=!1);var o=e.x+e.y*r,s=e.y-e.x*r,l=-e.x+e.y*n,c=-e.y-e.x*n;this.addHalfVertex(t,o,s,a,!1,r,i),this.addHalfVertex(t,l,c,a,!0,-n,i),this.distance>Hs/2&&0===this.totalDistance&&(this.distance=0,this.addCurrentVertex(t,e,r,n,i,a))},qs.prototype.addHalfVertex=function(t,e,r,n,i,a,o){var s=t.x,l=t.y,c=.5*this.scaledDistance;this.layoutVertexArray.emplaceBack((s<<1)+(n?1:0),(l<<1)+(i?1:0),Math.round(63*e)+128,Math.round(63*r)+128,1+(0===a?0:a<0?-1:1)|(63&c)<<2,c>>6);var u=o.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,u),o.primitiveLength++),i?this.e2=u:this.e1=u},qs.prototype.updateScaledDistance=function(){this.scaledDistance=this.totalDistance>0?(this.clipStart+(this.clipEnd-this.clipStart)*this.distance/this.totalDistance)*(Hs-1):this.distance},qs.prototype.updateDistance=function(t,e){this.distance+=t.dist(e),this.updateScaledDistance()},Nn(\"LineBucket\",qs,{omit:[\"layers\",\"patternFeatures\"]});var Gs=new Si({\"line-cap\":new wi(Lt.layout_line[\"line-cap\"]),\"line-join\":new Ti(Lt.layout_line[\"line-join\"]),\"line-miter-limit\":new wi(Lt.layout_line[\"line-miter-limit\"]),\"line-round-limit\":new wi(Lt.layout_line[\"line-round-limit\"]),\"line-sort-key\":new Ti(Lt.layout_line[\"line-sort-key\"])}),Ys={paint:new Si({\"line-opacity\":new Ti(Lt.paint_line[\"line-opacity\"]),\"line-color\":new Ti(Lt.paint_line[\"line-color\"]),\"line-translate\":new wi(Lt.paint_line[\"line-translate\"]),\"line-translate-anchor\":new wi(Lt.paint_line[\"line-translate-anchor\"]),\"line-width\":new Ti(Lt.paint_line[\"line-width\"]),\"line-gap-width\":new Ti(Lt.paint_line[\"line-gap-width\"]),\"line-offset\":new Ti(Lt.paint_line[\"line-offset\"]),\"line-blur\":new Ti(Lt.paint_line[\"line-blur\"]),\"line-dasharray\":new Ai(Lt.paint_line[\"line-dasharray\"]),\"line-pattern\":new ki(Lt.paint_line[\"line-pattern\"]),\"line-gradient\":new Mi(Lt.paint_line[\"line-gradient\"])}),layout:Gs},Ws=new(function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.possiblyEvaluate=function(e,r){return r=new pi(Math.floor(r.zoom),{now:r.now,fadeDuration:r.fadeDuration,zoomHistory:r.zoomHistory,transition:r.transition}),t.prototype.possiblyEvaluate.call(this,e,r)},e.prototype.evaluate=function(e,r,n,i){return r=u({},r,{zoom:Math.floor(r.zoom)}),t.prototype.evaluate.call(this,e,r,n,i)},e}(Ti))(Ys.paint.properties[\"line-width\"].specification);Ws.useIntegerZoom=!0;var Xs=function(t){function e(e){t.call(this,e,Ys)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._handleSpecialPaintPropertyUpdate=function(t){\"line-gradient\"===t&&this._updateGradient()},e.prototype._updateGradient=function(){var t=this._transitionablePaint._values[\"line-gradient\"].value.expression;this.gradient=Co(t,\"lineProgress\"),this.gradientTexture=null},e.prototype.recalculate=function(e,r){t.prototype.recalculate.call(this,e,r),this.paint._values[\"line-floorwidth\"]=Ws.possiblyEvaluate(this._transitioningPaint._values[\"line-width\"].value,e)},e.prototype.createBucket=function(t){return new qs(t)},e.prototype.queryRadius=function(t){var e=t,r=Zs(oo(\"line-width\",this,e),oo(\"line-gap-width\",this,e)),n=oo(\"line-offset\",this,e);return r/2+Math.abs(n)+so(this.paint.get(\"line-translate\"))},e.prototype.queryIntersectsFeature=function(t,e,r,n,a,o,s){var l=lo(t,this.paint.get(\"line-translate\"),this.paint.get(\"line-translate-anchor\"),o.angle,s),c=s/2*Zs(this.paint.get(\"line-width\").evaluate(e,r),this.paint.get(\"line-gap-width\").evaluate(e,r)),u=this.paint.get(\"line-offset\").evaluate(e,r);return u&&(n=function(t,e){for(var r=[],n=new i(0,0),a=0;a=3)for(var a=0;a0?e+2*t:t}var Js=Ii([{name:\"a_pos_offset\",components:4,type:\"Int16\"},{name:\"a_data\",components:4,type:\"Uint16\"},{name:\"a_pixeloffset\",components:4,type:\"Int16\"}],4),Ks=Ii([{name:\"a_projected_pos\",components:3,type:\"Float32\"}],4),Qs=(Ii([{name:\"a_fade_opacity\",components:1,type:\"Uint32\"}],4),Ii([{name:\"a_placed\",components:2,type:\"Uint8\"},{name:\"a_shift\",components:2,type:\"Float32\"}])),$s=(Ii([{type:\"Int16\",name:\"anchorPointX\"},{type:\"Int16\",name:\"anchorPointY\"},{type:\"Int16\",name:\"x1\"},{type:\"Int16\",name:\"y1\"},{type:\"Int16\",name:\"x2\"},{type:\"Int16\",name:\"y2\"},{type:\"Uint32\",name:\"featureIndex\"},{type:\"Uint16\",name:\"sourceLayerIndex\"},{type:\"Uint16\",name:\"bucketIndex\"}]),Ii([{name:\"a_pos\",components:2,type:\"Int16\"},{name:\"a_anchor_pos\",components:2,type:\"Int16\"},{name:\"a_extrude\",components:2,type:\"Int16\"}],4)),tl=Ii([{name:\"a_pos\",components:2,type:\"Float32\"},{name:\"a_radius\",components:1,type:\"Float32\"},{name:\"a_flags\",components:2,type:\"Int16\"}],4);Ii([{name:\"triangle\",components:3,type:\"Uint16\"}]),Ii([{type:\"Int16\",name:\"anchorX\"},{type:\"Int16\",name:\"anchorY\"},{type:\"Uint16\",name:\"glyphStartIndex\"},{type:\"Uint16\",name:\"numGlyphs\"},{type:\"Uint32\",name:\"vertexStartIndex\"},{type:\"Uint32\",name:\"lineStartIndex\"},{type:\"Uint32\",name:\"lineLength\"},{type:\"Uint16\",name:\"segment\"},{type:\"Uint16\",name:\"lowerSize\"},{type:\"Uint16\",name:\"upperSize\"},{type:\"Float32\",name:\"lineOffsetX\"},{type:\"Float32\",name:\"lineOffsetY\"},{type:\"Uint8\",name:\"writingMode\"},{type:\"Uint8\",name:\"placedOrientation\"},{type:\"Uint8\",name:\"hidden\"},{type:\"Uint32\",name:\"crossTileID\"},{type:\"Int16\",name:\"associatedIconIndex\"}]),Ii([{type:\"Int16\",name:\"anchorX\"},{type:\"Int16\",name:\"anchorY\"},{type:\"Int16\",name:\"rightJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"centerJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"leftJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"verticalPlacedTextSymbolIndex\"},{type:\"Int16\",name:\"placedIconSymbolIndex\"},{type:\"Int16\",name:\"verticalPlacedIconSymbolIndex\"},{type:\"Uint16\",name:\"key\"},{type:\"Uint16\",name:\"textBoxStartIndex\"},{type:\"Uint16\",name:\"textBoxEndIndex\"},{type:\"Uint16\",name:\"verticalTextBoxStartIndex\"},{type:\"Uint16\",name:\"verticalTextBoxEndIndex\"},{type:\"Uint16\",name:\"iconBoxStartIndex\"},{type:\"Uint16\",name:\"iconBoxEndIndex\"},{type:\"Uint16\",name:\"verticalIconBoxStartIndex\"},{type:\"Uint16\",name:\"verticalIconBoxEndIndex\"},{type:\"Uint16\",name:\"featureIndex\"},{type:\"Uint16\",name:\"numHorizontalGlyphVertices\"},{type:\"Uint16\",name:\"numVerticalGlyphVertices\"},{type:\"Uint16\",name:\"numIconVertices\"},{type:\"Uint16\",name:\"numVerticalIconVertices\"},{type:\"Uint16\",name:\"useRuntimeCollisionCircles\"},{type:\"Uint32\",name:\"crossTileID\"},{type:\"Float32\",name:\"textBoxScale\"},{type:\"Float32\",components:2,name:\"textOffset\"},{type:\"Float32\",name:\"collisionCircleDiameter\"}]),Ii([{type:\"Float32\",name:\"offsetX\"}]),Ii([{type:\"Int16\",name:\"x\"},{type:\"Int16\",name:\"y\"},{type:\"Int16\",name:\"tileUnitDistanceFromAnchor\"}]);function el(t,e,r){return t.sections.forEach((function(t){t.text=function(t,e,r){var n=e.layout.get(\"text-transform\").evaluate(r,{});return\"uppercase\"===n?t=t.toLocaleUpperCase():\"lowercase\"===n&&(t=t.toLocaleLowerCase()),hi.applyArabicShaping&&(t=hi.applyArabicShaping(t)),t}(t.text,e,r)})),t}var rl={\"!\":\"\\ufe15\",\"#\":\"\\uff03\",$:\"\\uff04\",\"%\":\"\\uff05\",\"&\":\"\\uff06\",\"(\":\"\\ufe35\",\")\":\"\\ufe36\",\"*\":\"\\uff0a\",\"+\":\"\\uff0b\",\",\":\"\\ufe10\",\"-\":\"\\ufe32\",\".\":\"\\u30fb\",\"/\":\"\\uff0f\",\":\":\"\\ufe13\",\";\":\"\\ufe14\",\"<\":\"\\ufe3f\",\"=\":\"\\uff1d\",\">\":\"\\ufe40\",\"?\":\"\\ufe16\",\"@\":\"\\uff20\",\"[\":\"\\ufe47\",\"\\\\\":\"\\uff3c\",\"]\":\"\\ufe48\",\"^\":\"\\uff3e\",_:\"\\ufe33\",\"`\":\"\\uff40\",\"{\":\"\\ufe37\",\"|\":\"\\u2015\",\"}\":\"\\ufe38\",\"~\":\"\\uff5e\",\"\\xa2\":\"\\uffe0\",\"\\xa3\":\"\\uffe1\",\"\\xa5\":\"\\uffe5\",\"\\xa6\":\"\\uffe4\",\"\\xac\":\"\\uffe2\",\"\\xaf\":\"\\uffe3\",\"\\u2013\":\"\\ufe32\",\"\\u2014\":\"\\ufe31\",\"\\u2018\":\"\\ufe43\",\"\\u2019\":\"\\ufe44\",\"\\u201c\":\"\\ufe41\",\"\\u201d\":\"\\ufe42\",\"\\u2026\":\"\\ufe19\",\"\\u2027\":\"\\u30fb\",\"\\u20a9\":\"\\uffe6\",\"\\u3001\":\"\\ufe11\",\"\\u3002\":\"\\ufe12\",\"\\u3008\":\"\\ufe3f\",\"\\u3009\":\"\\ufe40\",\"\\u300a\":\"\\ufe3d\",\"\\u300b\":\"\\ufe3e\",\"\\u300c\":\"\\ufe41\",\"\\u300d\":\"\\ufe42\",\"\\u300e\":\"\\ufe43\",\"\\u300f\":\"\\ufe44\",\"\\u3010\":\"\\ufe3b\",\"\\u3011\":\"\\ufe3c\",\"\\u3014\":\"\\ufe39\",\"\\u3015\":\"\\ufe3a\",\"\\u3016\":\"\\ufe17\",\"\\u3017\":\"\\ufe18\",\"\\uff01\":\"\\ufe15\",\"\\uff08\":\"\\ufe35\",\"\\uff09\":\"\\ufe36\",\"\\uff0c\":\"\\ufe10\",\"\\uff0d\":\"\\ufe32\",\"\\uff0e\":\"\\u30fb\",\"\\uff1a\":\"\\ufe13\",\"\\uff1b\":\"\\ufe14\",\"\\uff1c\":\"\\ufe3f\",\"\\uff1e\":\"\\ufe40\",\"\\uff1f\":\"\\ufe16\",\"\\uff3b\":\"\\ufe47\",\"\\uff3d\":\"\\ufe48\",\"\\uff3f\":\"\\ufe33\",\"\\uff5b\":\"\\ufe37\",\"\\uff5c\":\"\\u2015\",\"\\uff5d\":\"\\ufe38\",\"\\uff5f\":\"\\ufe35\",\"\\uff60\":\"\\ufe36\",\"\\uff61\":\"\\ufe12\",\"\\uff62\":\"\\ufe41\",\"\\uff63\":\"\\ufe42\"};var nl=function(t,e,r,n,i){var a,o,s=8*i-n-1,l=(1<>1,u=-7,f=r?i-1:0,h=r?-1:1,p=t[e+f];for(f+=h,a=p&(1<<-u)-1,p>>=-u,u+=s;u>0;a=256*a+t[e+f],f+=h,u-=8);for(o=a&(1<<-u)-1,a>>=-u,u+=n;u>0;o=256*o+t[e+f],f+=h,u-=8);if(0===a)a=1-c;else{if(a===l)return o?NaN:1/0*(p?-1:1);o+=Math.pow(2,n),a-=c}return(p?-1:1)*o*Math.pow(2,a-n)},il=function(t,e,r,n,i,a){var o,s,l,c=8*a-i-1,u=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:a-1,d=n?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,o=u):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),(e+=o+f>=1?h/l:h*Math.pow(2,1-f))*l>=2&&(o++,l/=2),o+f>=u?(s=0,o=u):o+f>=1?(s=(e*l-1)*Math.pow(2,i),o+=f):(s=e*Math.pow(2,f-1)*Math.pow(2,i),o=0));i>=8;t[r+p]=255&s,p+=d,s/=256,i-=8);for(o=o<0;t[r+p]=255&o,p+=d,o/=256,c-=8);t[r+p-d]|=128*g},al=ol;function ol(t){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(t)?t:new Uint8Array(t||0),this.pos=0,this.type=0,this.length=this.buf.length}ol.Varint=0,ol.Fixed64=1,ol.Bytes=2,ol.Fixed32=5;var sl=\"undefined\"==typeof TextDecoder?null:new TextDecoder(\"utf8\");function ll(t){return t.type===ol.Bytes?t.readVarint()+t.pos:t.pos+1}function cl(t,e,r){return r?4294967296*e+(t>>>0):4294967296*(e>>>0)+(t>>>0)}function ul(t,e,r){var n=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.floor(Math.log(e)/(7*Math.LN2));r.realloc(n);for(var i=r.pos-1;i>=t;i--)r.buf[i+n]=r.buf[i]}function fl(t,e){for(var r=0;r>>8,t[r+2]=e>>>16,t[r+3]=e>>>24}function wl(t,e){return(t[e]|t[e+1]<<8|t[e+2]<<16)+(t[e+3]<<24)}ol.prototype={destroy:function(){this.buf=null},readFields:function(t,e,r){for(r=r||this.length;this.pos>3,a=this.pos;this.type=7&n,t(i,e,this),this.pos===a&&this.skip(n)}return e},readMessage:function(t,e){return this.readFields(t,e,this.readVarint()+this.pos)},readFixed32:function(){var t=bl(this.buf,this.pos);return this.pos+=4,t},readSFixed32:function(){var t=wl(this.buf,this.pos);return this.pos+=4,t},readFixed64:function(){var t=bl(this.buf,this.pos)+4294967296*bl(this.buf,this.pos+4);return this.pos+=8,t},readSFixed64:function(){var t=bl(this.buf,this.pos)+4294967296*wl(this.buf,this.pos+4);return this.pos+=8,t},readFloat:function(){var t=nl(this.buf,this.pos,!0,23,4);return this.pos+=4,t},readDouble:function(){var t=nl(this.buf,this.pos,!0,52,8);return this.pos+=8,t},readVarint:function(t){var e,r,n=this.buf;return e=127&(r=n[this.pos++]),r<128?e:(e|=(127&(r=n[this.pos++]))<<7,r<128?e:(e|=(127&(r=n[this.pos++]))<<14,r<128?e:(e|=(127&(r=n[this.pos++]))<<21,r<128?e:function(t,e,r){var n,i,a=r.buf;if(i=a[r.pos++],n=(112&i)>>4,i<128)return cl(t,n,e);if(i=a[r.pos++],n|=(127&i)<<3,i<128)return cl(t,n,e);if(i=a[r.pos++],n|=(127&i)<<10,i<128)return cl(t,n,e);if(i=a[r.pos++],n|=(127&i)<<17,i<128)return cl(t,n,e);if(i=a[r.pos++],n|=(127&i)<<24,i<128)return cl(t,n,e);if(i=a[r.pos++],n|=(1&i)<<31,i<128)return cl(t,n,e);throw new Error(\"Expected varint not more than 10 bytes\")}(e|=(15&(r=n[this.pos]))<<28,t,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var t=this.readVarint();return t%2==1?(t+1)/-2:t/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var t=this.readVarint()+this.pos,e=this.pos;return this.pos=t,t-e>=12&&sl?function(t,e,r){return sl.decode(t.subarray(e,r))}(this.buf,e,t):function(t,e,r){var n=\"\",i=e;for(;i239?4:l>223?3:l>191?2:1;if(i+u>r)break;1===u?l<128&&(c=l):2===u?128==(192&(a=t[i+1]))&&(c=(31&l)<<6|63&a)<=127&&(c=null):3===u?(a=t[i+1],o=t[i+2],128==(192&a)&&128==(192&o)&&((c=(15&l)<<12|(63&a)<<6|63&o)<=2047||c>=55296&&c<=57343)&&(c=null)):4===u&&(a=t[i+1],o=t[i+2],s=t[i+3],128==(192&a)&&128==(192&o)&&128==(192&s)&&((c=(15&l)<<18|(63&a)<<12|(63&o)<<6|63&s)<=65535||c>=1114112)&&(c=null)),null===c?(c=65533,u=1):c>65535&&(c-=65536,n+=String.fromCharCode(c>>>10&1023|55296),c=56320|1023&c),n+=String.fromCharCode(c),i+=u}return n}(this.buf,e,t)},readBytes:function(){var t=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,t);return this.pos=t,e},readPackedVarint:function(t,e){if(this.type!==ol.Bytes)return t.push(this.readVarint(e));var r=ll(this);for(t=t||[];this.pos127;);else if(e===ol.Bytes)this.pos=this.readVarint()+this.pos;else if(e===ol.Fixed32)this.pos+=4;else{if(e!==ol.Fixed64)throw new Error(\"Unimplemented type: \"+e);this.pos+=8}},writeTag:function(t,e){this.writeVarint(t<<3|e)},realloc:function(t){for(var e=this.length||16;e268435455||t<0?function(t,e){var r,n;t>=0?(r=t%4294967296|0,n=t/4294967296|0):(n=~(-t/4294967296),4294967295^(r=~(-t%4294967296))?r=r+1|0:(r=0,n=n+1|0));if(t>=0x10000000000000000||t<-0x10000000000000000)throw new Error(\"Given varint doesn't fit into 10 bytes\");e.realloc(10),function(t,e,r){r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos]=127&t}(r,0,e),function(t,e){var r=(7&t)<<4;if(e.buf[e.pos++]|=r|((t>>>=3)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;e.buf[e.pos++]=127&t}(n,e)}(t,this):(this.realloc(4),this.buf[this.pos++]=127&t|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=t>>>7&127))))},writeSVarint:function(t){this.writeVarint(t<0?2*-t-1:2*t)},writeBoolean:function(t){this.writeVarint(Boolean(t))},writeString:function(t){t=String(t),this.realloc(4*t.length),this.pos++;var e=this.pos;this.pos=function(t,e,r){for(var n,i,a=0;a55295&&n<57344){if(!i){n>56319||a+1===e.length?(t[r++]=239,t[r++]=191,t[r++]=189):i=n;continue}if(n<56320){t[r++]=239,t[r++]=191,t[r++]=189,i=n;continue}n=i-55296<<10|n-56320|65536,i=null}else i&&(t[r++]=239,t[r++]=191,t[r++]=189,i=null);n<128?t[r++]=n:(n<2048?t[r++]=n>>6|192:(n<65536?t[r++]=n>>12|224:(t[r++]=n>>18|240,t[r++]=n>>12&63|128),t[r++]=n>>6&63|128),t[r++]=63&n|128)}return r}(this.buf,t,this.pos);var r=this.pos-e;r>=128&&ul(e,r,this),this.pos=e-1,this.writeVarint(r),this.pos+=r},writeFloat:function(t){this.realloc(4),il(this.buf,t,this.pos,!0,23,4),this.pos+=4},writeDouble:function(t){this.realloc(8),il(this.buf,t,this.pos,!0,52,8),this.pos+=8},writeBytes:function(t){var e=t.length;this.writeVarint(e),this.realloc(e);for(var r=0;r=128&&ul(r,n,this),this.pos=r-1,this.writeVarint(n),this.pos+=n},writeMessage:function(t,e,r){this.writeTag(t,ol.Bytes),this.writeRawMessage(e,r)},writePackedVarint:function(t,e){e.length&&this.writeMessage(t,fl,e)},writePackedSVarint:function(t,e){e.length&&this.writeMessage(t,hl,e)},writePackedBoolean:function(t,e){e.length&&this.writeMessage(t,gl,e)},writePackedFloat:function(t,e){e.length&&this.writeMessage(t,pl,e)},writePackedDouble:function(t,e){e.length&&this.writeMessage(t,dl,e)},writePackedFixed32:function(t,e){e.length&&this.writeMessage(t,ml,e)},writePackedSFixed32:function(t,e){e.length&&this.writeMessage(t,vl,e)},writePackedFixed64:function(t,e){e.length&&this.writeMessage(t,yl,e)},writePackedSFixed64:function(t,e){e.length&&this.writeMessage(t,xl,e)},writeBytesField:function(t,e){this.writeTag(t,ol.Bytes),this.writeBytes(e)},writeFixed32Field:function(t,e){this.writeTag(t,ol.Fixed32),this.writeFixed32(e)},writeSFixed32Field:function(t,e){this.writeTag(t,ol.Fixed32),this.writeSFixed32(e)},writeFixed64Field:function(t,e){this.writeTag(t,ol.Fixed64),this.writeFixed64(e)},writeSFixed64Field:function(t,e){this.writeTag(t,ol.Fixed64),this.writeSFixed64(e)},writeVarintField:function(t,e){this.writeTag(t,ol.Varint),this.writeVarint(e)},writeSVarintField:function(t,e){this.writeTag(t,ol.Varint),this.writeSVarint(e)},writeStringField:function(t,e){this.writeTag(t,ol.Bytes),this.writeString(e)},writeFloatField:function(t,e){this.writeTag(t,ol.Fixed32),this.writeFloat(e)},writeDoubleField:function(t,e){this.writeTag(t,ol.Fixed64),this.writeDouble(e)},writeBooleanField:function(t,e){this.writeVarintField(t,Boolean(e))}};function Tl(t,e,r){1===t&&r.readMessage(kl,e)}function kl(t,e,r){if(3===t){var n=r.readMessage(Al,{}),i=n.id,a=n.bitmap,o=n.width,s=n.height,l=n.left,c=n.top,u=n.advance;e.push({id:i,bitmap:new So({width:o+6,height:s+6},a),metrics:{width:o,height:s,left:l,top:c,advance:u}})}}function Al(t,e,r){1===t?e.id=r.readVarint():2===t?e.bitmap=r.readBytes():3===t?e.width=r.readVarint():4===t?e.height=r.readVarint():5===t?e.left=r.readSVarint():6===t?e.top=r.readSVarint():7===t&&(e.advance=r.readVarint())}function Ml(t){for(var e=0,r=0,n=0,i=t;n=0;h--){var p=o[h];if(!(f.w>p.w||f.h>p.h)){if(f.x=p.x,f.y=p.y,l=Math.max(l,f.y+f.h),s=Math.max(s,f.x+f.w),f.w===p.w&&f.h===p.h){var d=o.pop();h0&&N>A&&(A=N)}else{var j=r[S.fontStack],U=j&&j[L];if(U&&U.rect)I=U.rect,P=U.metrics;else{var V=e[S.fontStack],H=V&&V[L];if(!H)continue;P=H.metrics}C=24*(_-S.scale)}D?(t.verticalizable=!0,k.push({glyph:L,imageName:O,x:h,y:p+C,vertical:D,scale:S.scale,fontStack:S.fontStack,sectionIndex:E,metrics:P,rect:I}),h+=z*S.scale+c):(k.push({glyph:L,imageName:O,x:h,y:p+C,vertical:D,scale:S.scale,fontStack:S.fontStack,sectionIndex:E,metrics:P,rect:I}),h+=P.advance*S.scale+c)}if(0!==k.length){var q=h-c;d=Math.max(q,d),Vl(k,0,k.length-1,m,A)}h=0;var G=a*_+A;T.lineOffset=Math.max(A,w),p+=G,g=Math.max(G,g),++v}else p+=a,++v}var Y;var W=p- -17,X=Ul(o),Z=X.horizontalAlign,J=X.verticalAlign;(function(t,e,r,n,i,a,o,s,l){var c=(e-r)*i,u=0;u=a!==o?-s*n- -17:(-n*l+.5)*o;for(var f=0,h=t;f=0&&n>=t&&zl[this.text.charCodeAt(n)];n--)r--;this.text=this.text.substring(t,r),this.sectionIndex=this.sectionIndex.slice(t,r)},Il.prototype.substring=function(t,e){var r=new Il;return r.text=this.text.substring(t,e),r.sectionIndex=this.sectionIndex.slice(t,e),r.sections=this.sections,r},Il.prototype.toString=function(){return this.text},Il.prototype.getMaxScale=function(){var t=this;return this.sectionIndex.reduce((function(e,r){return Math.max(e,t.sections[r].scale)}),0)},Il.prototype.addTextSection=function(t,e){this.text+=t.text,this.sections.push(Pl.forText(t.scale,t.fontStack||e));for(var r=this.sections.length-1,n=0;n=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)};var zl={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},Dl={};function Rl(t,e,r,n,i,a){if(e.imageName){var o=n[e.imageName];return o?o.displaySize[0]*e.scale*24/a+i:0}var s=r[e.fontStack],l=s&&s[t];return l?l.metrics.advance*e.scale+i:0}function Fl(t,e,r,n){var i=Math.pow(t-e,2);return n?t=0,f=0,h=0;h-r/2;){if(--o<0)return!1;s-=t[o].dist(a),a=t[o]}s+=t[o].dist(t[o+1]),o++;for(var l=[],c=0;sn;)c-=l.shift().angleDelta;if(c>i)return!1;o++,s+=f.dist(h)}return!0}function Jl(t){for(var e=0,r=0;rc){var d=(c-l)/p,g=qe(f.x,h.x,d),m=qe(f.y,h.y,d),v=new ql(g,m,h.angleTo(f),u);return v._round(),!o||Zl(t,v,s,o,e)?v:void 0}l+=p}}function tc(t,e,r,n,i,a,o,s,l){var c=Kl(n,a,o),u=Ql(n,i),f=u*o,h=0===t[0].x||t[0].x===l||0===t[0].y||t[0].y===l;return e-f=0&&_=0&&w=0&&p+u<=f){var T=new ql(_,w,x,g);T._round(),i&&!Zl(e,T,o,i,a)||d.push(T)}}h+=y}l||d.length||s||(d=t(e,h/2,n,i,a,o,s,!0,c));return d}(t,h?e/2*s%e:(u/2+2*a)*o*s%e,e,c,r,f,h,!1,l)}function ec(t,e,r,n,a){for(var o=[],s=0;s=n&&h.x>=n||(f.x>=n?f=new i(n,f.y+(h.y-f.y)*((n-f.x)/(h.x-f.x)))._round():h.x>=n&&(h=new i(n,f.y+(h.y-f.y)*((n-f.x)/(h.x-f.x)))._round()),f.y>=a&&h.y>=a||(f.y>=a?f=new i(f.x+(h.x-f.x)*((a-f.y)/(h.y-f.y)),a)._round():h.y>=a&&(h=new i(f.x+(h.x-f.x)*((a-f.y)/(h.y-f.y)),a)._round()),c&&f.equals(c[c.length-1])||(c=[f],o.push(c)),c.push(h)))))}return o}function rc(t,e,r,n){var a=[],o=t.image,s=o.pixelRatio,l=o.paddedRect.w-2,c=o.paddedRect.h-2,u=t.right-t.left,f=t.bottom-t.top,h=o.stretchX||[[0,l]],p=o.stretchY||[[0,c]],d=function(t,e){return t+e[1]-e[0]},g=h.reduce(d,0),m=p.reduce(d,0),v=l-g,y=c-m,x=0,b=g,_=0,w=m,T=0,k=v,A=0,M=y;if(o.content&&n){var S=o.content;x=nc(h,0,S[0]),_=nc(p,0,S[1]),b=nc(h,S[0],S[2]),w=nc(p,S[1],S[3]),T=S[0]-x,A=S[1]-_,k=S[2]-S[0]-b,M=S[3]-S[1]-w}var E=function(n,a,l,c){var h=ac(n.stretch-x,b,u,t.left),p=oc(n.fixed-T,k,n.stretch,g),d=ac(a.stretch-_,w,f,t.top),v=oc(a.fixed-A,M,a.stretch,m),y=ac(l.stretch-x,b,u,t.left),S=oc(l.fixed-T,k,l.stretch,g),E=ac(c.stretch-_,w,f,t.top),L=oc(c.fixed-A,M,c.stretch,m),C=new i(h,d),P=new i(y,d),I=new i(y,E),O=new i(h,E),z=new i(p/s,v/s),D=new i(S/s,L/s),R=e*Math.PI/180;if(R){var F=Math.sin(R),B=Math.cos(R),N=[B,-F,F,B];C._matMult(N),P._matMult(N),O._matMult(N),I._matMult(N)}var j=n.stretch+n.fixed,U=l.stretch+l.fixed,V=a.stretch+a.fixed,H=c.stretch+c.fixed;return{tl:C,tr:P,bl:O,br:I,tex:{x:o.paddedRect.x+1+j,y:o.paddedRect.y+1+V,w:U-j,h:H-V},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:z,pixelOffsetBR:D,minFontScaleX:k/s/u,minFontScaleY:M/s/f,isSDF:r}};if(n&&(o.stretchX||o.stretchY))for(var L=ic(h,v,g),C=ic(p,y,m),P=0;P0&&(d=Math.max(10,d),this.circleDiameter=d)}else{var g=o.top*s-l,m=o.bottom*s+l,v=o.left*s-l,y=o.right*s+l,x=o.collisionPadding;if(x&&(v-=x[0]*s,g-=x[1]*s,y+=x[2]*s,m+=x[3]*s),u){var b=new i(v,g),_=new i(y,g),w=new i(v,m),T=new i(y,m),k=u*Math.PI/180;b._rotate(k),_._rotate(k),w._rotate(k),T._rotate(k),v=Math.min(b.x,_.x,w.x,T.x),y=Math.max(b.x,_.x,w.x,T.x),g=Math.min(b.y,_.y,w.y,T.y),m=Math.max(b.y,_.y,w.y,T.y)}t.emplaceBack(e.x,e.y,v,g,y,m,r,n,a)}this.boxEndIndex=t.length},lc=function(t,e){if(void 0===t&&(t=[]),void 0===e&&(e=cc),this.data=t,this.length=this.data.length,this.compare=e,this.length>0)for(var r=(this.length>>1)-1;r>=0;r--)this._down(r)};function cc(t,e){return te?1:0}function uc(t,e,r){void 0===e&&(e=1),void 0===r&&(r=!1);for(var n=1/0,a=1/0,o=-1/0,s=-1/0,l=t[0],c=0;co)&&(o=u.x),(!c||u.y>s)&&(s=u.y)}var f=o-n,h=s-a,p=Math.min(f,h),d=p/2,g=new lc([],fc);if(0===p)return new i(n,a);for(var m=n;my.d||!y.d)&&(y=b,r&&console.log(\"found best %d after %d probes\",Math.round(1e4*b.d)/1e4,x)),b.max-y.d<=e||(d=b.h/2,g.push(new hc(b.p.x-d,b.p.y-d,d,t)),g.push(new hc(b.p.x+d,b.p.y-d,d,t)),g.push(new hc(b.p.x-d,b.p.y+d,d,t)),g.push(new hc(b.p.x+d,b.p.y+d,d,t)),x+=4)}return r&&(console.log(\"num probes: \"+x),console.log(\"best distance: \"+y.d)),y.p}function fc(t,e){return e.max-t.max}function hc(t,e,r,n){this.p=new i(t,e),this.h=r,this.d=function(t,e){for(var r=!1,n=1/0,i=0;it.y!=u.y>t.y&&t.x<(u.x-c.x)*(t.y-c.y)/(u.y-c.y)+c.x&&(r=!r),n=Math.min(n,ro(t,c,u))}return(r?1:-1)*Math.sqrt(n)}(this.p,n),this.max=this.d+this.h*Math.SQRT2}lc.prototype.push=function(t){this.data.push(t),this.length++,this._up(this.length-1)},lc.prototype.pop=function(){if(0!==this.length){var t=this.data[0],e=this.data.pop();return this.length--,this.length>0&&(this.data[0]=e,this._down(0)),t}},lc.prototype.peek=function(){return this.data[0]},lc.prototype._up=function(t){for(var e=this.data,r=this.compare,n=e[t];t>0;){var i=t-1>>1,a=e[i];if(r(n,a)>=0)break;e[t]=a,t=i}e[t]=n},lc.prototype._down=function(t){for(var e=this.data,r=this.compare,n=this.length>>1,i=e[t];t=0)break;e[t]=o,t=a}e[t]=i};var pc=Number.POSITIVE_INFINITY;function dc(t,e){return e[1]!==pc?function(t,e,r){var n=0,i=0;switch(e=Math.abs(e),r=Math.abs(r),t){case\"top-right\":case\"top-left\":case\"top\":i=r-7;break;case\"bottom-right\":case\"bottom-left\":case\"bottom\":i=7-r}switch(t){case\"top-right\":case\"bottom-right\":case\"right\":n=-e;break;case\"top-left\":case\"bottom-left\":case\"left\":n=e}return[n,i]}(t,e[0],e[1]):function(t,e){var r=0,n=0;e<0&&(e=0);var i=e/Math.sqrt(2);switch(t){case\"top-right\":case\"top-left\":n=i-7;break;case\"bottom-right\":case\"bottom-left\":n=7-i;break;case\"bottom\":n=7-e;break;case\"top\":n=e-7}switch(t){case\"top-right\":case\"bottom-right\":r=-i;break;case\"top-left\":case\"bottom-left\":r=i;break;case\"left\":r=e;break;case\"right\":r=-e}return[r,n]}(t,e[0])}function gc(t){switch(t){case\"right\":case\"top-right\":case\"bottom-right\":return\"right\";case\"left\":case\"top-left\":case\"bottom-left\":return\"left\"}return\"center\"}function mc(t,e,r,n,a,o,s,l,c,u,f,h,p,d,g){var m=function(t,e,r,n,a,o,s,l){for(var c=n.layout.get(\"text-rotate\").evaluate(o,{})*Math.PI/180,u=[],f=0,h=e.positionedLines;f32640&&_(t.layerIds[0]+': Value for \"text-size\" is >= 255. Reduce your \"text-size\".'):\"composite\"===v.kind&&((y=[128*d.compositeTextSizes[0].evaluate(s,{},g),128*d.compositeTextSizes[1].evaluate(s,{},g)])[0]>32640||y[1]>32640)&&_(t.layerIds[0]+': Value for \"text-size\" is >= 255. Reduce your \"text-size\".'),t.addSymbols(t.text,m,y,l,o,s,u,e,c.lineStartIndex,c.lineLength,p,g);for(var x=0,b=f;x=0;o--)if(n.dist(a[o])0)&&(\"constant\"!==a.value.kind||a.value.value.length>0),c=\"constant\"!==s.value.kind||!!s.value.value||Object.keys(s.parameters).length>0,u=i.get(\"symbol-sort-key\");if(this.features=[],l||c){for(var f=e.iconDependencies,h=e.glyphDependencies,p=e.availableImages,d=new pi(this.zoom),g=0,m=t;g=0;for(var O=0,z=k.sections;O=0;s--)a[s]={x:e[s].x,y:e[s].y,tileUnitDistanceFromAnchor:i},s>0&&(i+=e[s-1].dist(e[s]));for(var l=0;l0},Mc.prototype.hasIconData=function(){return this.icon.segments.get().length>0},Mc.prototype.hasDebugData=function(){return this.textCollisionBox&&this.iconCollisionBox},Mc.prototype.hasTextCollisionBoxData=function(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0},Mc.prototype.hasIconCollisionBoxData=function(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0},Mc.prototype.addIndicesForPlacedSymbol=function(t,e){for(var r=t.placedSymbolArray.get(e),n=r.vertexStartIndex+4*r.numGlyphs,i=r.vertexStartIndex;i1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(t),this.sortedAngle=t,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(var r=0,n=this.symbolInstanceIndexes;r=0&&n.indexOf(t)===r&&e.addIndicesForPlacedSymbol(e.text,t)})),a.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,a.verticalPlacedTextSymbolIndex),a.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,a.placedIconSymbolIndex),a.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,a.verticalPlacedIconSymbolIndex)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}},Nn(\"SymbolBucket\",Mc,{omit:[\"layers\",\"collisionBoxArray\",\"features\",\"compareText\"]}),Mc.MAX_GLYPHS=65535,Mc.addDynamicAttributes=wc;var Sc=new Si({\"symbol-placement\":new wi(Lt.layout_symbol[\"symbol-placement\"]),\"symbol-spacing\":new wi(Lt.layout_symbol[\"symbol-spacing\"]),\"symbol-avoid-edges\":new wi(Lt.layout_symbol[\"symbol-avoid-edges\"]),\"symbol-sort-key\":new Ti(Lt.layout_symbol[\"symbol-sort-key\"]),\"symbol-z-order\":new wi(Lt.layout_symbol[\"symbol-z-order\"]),\"icon-allow-overlap\":new wi(Lt.layout_symbol[\"icon-allow-overlap\"]),\"icon-ignore-placement\":new wi(Lt.layout_symbol[\"icon-ignore-placement\"]),\"icon-optional\":new wi(Lt.layout_symbol[\"icon-optional\"]),\"icon-rotation-alignment\":new wi(Lt.layout_symbol[\"icon-rotation-alignment\"]),\"icon-size\":new Ti(Lt.layout_symbol[\"icon-size\"]),\"icon-text-fit\":new wi(Lt.layout_symbol[\"icon-text-fit\"]),\"icon-text-fit-padding\":new wi(Lt.layout_symbol[\"icon-text-fit-padding\"]),\"icon-image\":new Ti(Lt.layout_symbol[\"icon-image\"]),\"icon-rotate\":new Ti(Lt.layout_symbol[\"icon-rotate\"]),\"icon-padding\":new wi(Lt.layout_symbol[\"icon-padding\"]),\"icon-keep-upright\":new wi(Lt.layout_symbol[\"icon-keep-upright\"]),\"icon-offset\":new Ti(Lt.layout_symbol[\"icon-offset\"]),\"icon-anchor\":new Ti(Lt.layout_symbol[\"icon-anchor\"]),\"icon-pitch-alignment\":new wi(Lt.layout_symbol[\"icon-pitch-alignment\"]),\"text-pitch-alignment\":new wi(Lt.layout_symbol[\"text-pitch-alignment\"]),\"text-rotation-alignment\":new wi(Lt.layout_symbol[\"text-rotation-alignment\"]),\"text-field\":new Ti(Lt.layout_symbol[\"text-field\"]),\"text-font\":new Ti(Lt.layout_symbol[\"text-font\"]),\"text-size\":new Ti(Lt.layout_symbol[\"text-size\"]),\"text-max-width\":new Ti(Lt.layout_symbol[\"text-max-width\"]),\"text-line-height\":new wi(Lt.layout_symbol[\"text-line-height\"]),\"text-letter-spacing\":new Ti(Lt.layout_symbol[\"text-letter-spacing\"]),\"text-justify\":new Ti(Lt.layout_symbol[\"text-justify\"]),\"text-radial-offset\":new Ti(Lt.layout_symbol[\"text-radial-offset\"]),\"text-variable-anchor\":new wi(Lt.layout_symbol[\"text-variable-anchor\"]),\"text-anchor\":new Ti(Lt.layout_symbol[\"text-anchor\"]),\"text-max-angle\":new wi(Lt.layout_symbol[\"text-max-angle\"]),\"text-writing-mode\":new wi(Lt.layout_symbol[\"text-writing-mode\"]),\"text-rotate\":new Ti(Lt.layout_symbol[\"text-rotate\"]),\"text-padding\":new wi(Lt.layout_symbol[\"text-padding\"]),\"text-keep-upright\":new wi(Lt.layout_symbol[\"text-keep-upright\"]),\"text-transform\":new Ti(Lt.layout_symbol[\"text-transform\"]),\"text-offset\":new Ti(Lt.layout_symbol[\"text-offset\"]),\"text-allow-overlap\":new wi(Lt.layout_symbol[\"text-allow-overlap\"]),\"text-ignore-placement\":new wi(Lt.layout_symbol[\"text-ignore-placement\"]),\"text-optional\":new wi(Lt.layout_symbol[\"text-optional\"])}),Ec={paint:new Si({\"icon-opacity\":new Ti(Lt.paint_symbol[\"icon-opacity\"]),\"icon-color\":new Ti(Lt.paint_symbol[\"icon-color\"]),\"icon-halo-color\":new Ti(Lt.paint_symbol[\"icon-halo-color\"]),\"icon-halo-width\":new Ti(Lt.paint_symbol[\"icon-halo-width\"]),\"icon-halo-blur\":new Ti(Lt.paint_symbol[\"icon-halo-blur\"]),\"icon-translate\":new wi(Lt.paint_symbol[\"icon-translate\"]),\"icon-translate-anchor\":new wi(Lt.paint_symbol[\"icon-translate-anchor\"]),\"text-opacity\":new Ti(Lt.paint_symbol[\"text-opacity\"]),\"text-color\":new Ti(Lt.paint_symbol[\"text-color\"],{runtimeType:Ut,getOverride:function(t){return t.textColor},hasOverride:function(t){return!!t.textColor}}),\"text-halo-color\":new Ti(Lt.paint_symbol[\"text-halo-color\"]),\"text-halo-width\":new Ti(Lt.paint_symbol[\"text-halo-width\"]),\"text-halo-blur\":new Ti(Lt.paint_symbol[\"text-halo-blur\"]),\"text-translate\":new wi(Lt.paint_symbol[\"text-translate\"]),\"text-translate-anchor\":new wi(Lt.paint_symbol[\"text-translate-anchor\"])}),layout:Sc},Lc=function(t){this.type=t.property.overrides?t.property.overrides.runtimeType:Ft,this.defaultValue=t};Lc.prototype.evaluate=function(t){if(t.formattedSection){var e=this.defaultValue.property.overrides;if(e&&e.hasOverride(t.formattedSection))return e.getOverride(t.formattedSection)}return t.feature&&t.featureState?this.defaultValue.evaluate(t.feature,t.featureState):this.defaultValue.property.specification.default},Lc.prototype.eachChild=function(t){this.defaultValue.isConstant()||t(this.defaultValue.value._styleExpression.expression)},Lc.prototype.outputDefined=function(){return!1},Lc.prototype.serialize=function(){return null},Nn(\"FormatSectionOverride\",Lc,{omit:[\"defaultValue\"]});var Cc=function(t){function e(e){t.call(this,e,Ec)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.recalculate=function(e,r){if(t.prototype.recalculate.call(this,e,r),\"auto\"===this.layout.get(\"icon-rotation-alignment\")&&(\"point\"!==this.layout.get(\"symbol-placement\")?this.layout._values[\"icon-rotation-alignment\"]=\"map\":this.layout._values[\"icon-rotation-alignment\"]=\"viewport\"),\"auto\"===this.layout.get(\"text-rotation-alignment\")&&(\"point\"!==this.layout.get(\"symbol-placement\")?this.layout._values[\"text-rotation-alignment\"]=\"map\":this.layout._values[\"text-rotation-alignment\"]=\"viewport\"),\"auto\"===this.layout.get(\"text-pitch-alignment\")&&(this.layout._values[\"text-pitch-alignment\"]=this.layout.get(\"text-rotation-alignment\")),\"auto\"===this.layout.get(\"icon-pitch-alignment\")&&(this.layout._values[\"icon-pitch-alignment\"]=this.layout.get(\"icon-rotation-alignment\")),\"point\"===this.layout.get(\"symbol-placement\")){var n=this.layout.get(\"text-writing-mode\");if(n){for(var i=[],a=0,o=n;a\",targetMapId:n,sourceMapId:a.mapId})}}},qc.prototype.receive=function(t){var e=t.data,r=e.id;if(r&&(!e.targetMapId||this.mapId===e.targetMapId))if(\"\"===e.type){delete this.tasks[r];var n=this.cancelCallbacks[r];delete this.cancelCallbacks[r],n&&n()}else k()||e.mustQueue?(this.tasks[r]=e,this.taskQueue.push(r),this.invoker.trigger()):this.processTask(r,e)},qc.prototype.process=function(){if(this.taskQueue.length){var t=this.taskQueue.shift(),e=this.tasks[t];delete this.tasks[t],this.taskQueue.length&&this.invoker.trigger(),e&&this.processTask(t,e)}},qc.prototype.processTask=function(t,e){var r=this;if(\"\"===e.type){var n=this.callbacks[t];delete this.callbacks[t],n&&(e.error?n(qn(e.error)):n(null,qn(e.data)))}else{var i=!1,a=S(this.globalScope)?void 0:[],o=e.hasCallback?function(e,n){i=!0,delete r.cancelCallbacks[t],r.target.postMessage({id:t,type:\"\",sourceMapId:r.mapId,error:e?Hn(e):null,data:Hn(n,a)},a)}:function(t){i=!0},s=null,l=qn(e.data);if(this.parent[e.type])s=this.parent[e.type](e.sourceMapId,l,o);else if(this.parent.getWorkerSource){var c=e.type.split(\".\");s=this.parent.getWorkerSource(e.sourceMapId,c[0],l.source)[c[1]](l,o)}else o(new Error(\"Could not find function \"+e.type));!i&&s&&s.cancel&&(this.cancelCallbacks[t]=s.cancel)}},qc.prototype.remove=function(){this.invoker.remove(),this.target.removeEventListener(\"message\",this.receive,!1)};var Yc=function(t,e){t&&(e?this.setSouthWest(t).setNorthEast(e):4===t.length?this.setSouthWest([t[0],t[1]]).setNorthEast([t[2],t[3]]):this.setSouthWest(t[0]).setNorthEast(t[1]))};Yc.prototype.setNorthEast=function(t){return this._ne=t instanceof Wc?new Wc(t.lng,t.lat):Wc.convert(t),this},Yc.prototype.setSouthWest=function(t){return this._sw=t instanceof Wc?new Wc(t.lng,t.lat):Wc.convert(t),this},Yc.prototype.extend=function(t){var e,r,n=this._sw,i=this._ne;if(t instanceof Wc)e=t,r=t;else{if(!(t instanceof Yc)){if(Array.isArray(t)){if(4===t.length||t.every(Array.isArray)){var a=t;return this.extend(Yc.convert(a))}var o=t;return this.extend(Wc.convert(o))}return this}if(e=t._sw,r=t._ne,!e||!r)return this}return n||i?(n.lng=Math.min(e.lng,n.lng),n.lat=Math.min(e.lat,n.lat),i.lng=Math.max(r.lng,i.lng),i.lat=Math.max(r.lat,i.lat)):(this._sw=new Wc(e.lng,e.lat),this._ne=new Wc(r.lng,r.lat)),this},Yc.prototype.getCenter=function(){return new Wc((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)},Yc.prototype.getSouthWest=function(){return this._sw},Yc.prototype.getNorthEast=function(){return this._ne},Yc.prototype.getNorthWest=function(){return new Wc(this.getWest(),this.getNorth())},Yc.prototype.getSouthEast=function(){return new Wc(this.getEast(),this.getSouth())},Yc.prototype.getWest=function(){return this._sw.lng},Yc.prototype.getSouth=function(){return this._sw.lat},Yc.prototype.getEast=function(){return this._ne.lng},Yc.prototype.getNorth=function(){return this._ne.lat},Yc.prototype.toArray=function(){return[this._sw.toArray(),this._ne.toArray()]},Yc.prototype.toString=function(){return\"LngLatBounds(\"+this._sw.toString()+\", \"+this._ne.toString()+\")\"},Yc.prototype.isEmpty=function(){return!(this._sw&&this._ne)},Yc.prototype.contains=function(t){var e=Wc.convert(t),r=e.lng,n=e.lat,i=this._sw.lat<=n&&n<=this._ne.lat,a=this._sw.lng<=r&&r<=this._ne.lng;return this._sw.lng>this._ne.lng&&(a=this._sw.lng>=r&&r>=this._ne.lng),i&&a},Yc.convert=function(t){return!t||t instanceof Yc?t:new Yc(t)};var Wc=function(t,e){if(isNaN(t)||isNaN(e))throw new Error(\"Invalid LngLat object: (\"+t+\", \"+e+\")\");if(this.lng=+t,this.lat=+e,this.lat>90||this.lat<-90)throw new Error(\"Invalid LngLat latitude value: must be between -90 and 90\")};Wc.prototype.wrap=function(){return new Wc(c(this.lng,-180,180),this.lat)},Wc.prototype.toArray=function(){return[this.lng,this.lat]},Wc.prototype.toString=function(){return\"LngLat(\"+this.lng+\", \"+this.lat+\")\"},Wc.prototype.distanceTo=function(t){var e=Math.PI/180,r=this.lat*e,n=t.lat*e,i=Math.sin(r)*Math.sin(n)+Math.cos(r)*Math.cos(n)*Math.cos((t.lng-this.lng)*e);return 6371008.8*Math.acos(Math.min(i,1))},Wc.prototype.toBounds=function(t){void 0===t&&(t=0);var e=360*t/40075017,r=e/Math.cos(Math.PI/180*this.lat);return new Yc(new Wc(this.lng-r,this.lat-e),new Wc(this.lng+r,this.lat+e))},Wc.convert=function(t){if(t instanceof Wc)return t;if(Array.isArray(t)&&(2===t.length||3===t.length))return new Wc(Number(t[0]),Number(t[1]));if(!Array.isArray(t)&&\"object\"==typeof t&&null!==t)return new Wc(Number(\"lng\"in t?t.lng:t.lon),Number(t.lat));throw new Error(\"`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]\")};var Xc=2*Math.PI*6371008.8;function Zc(t){return Xc*Math.cos(t*Math.PI/180)}function Jc(t){return(180+t)/360}function Kc(t){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t*Math.PI/360)))/360}function Qc(t,e){return t/Zc(e)}function $c(t){var e=180-360*t;return 360/Math.PI*Math.atan(Math.exp(e*Math.PI/180))-90}var tu=function(t,e,r){void 0===r&&(r=0),this.x=+t,this.y=+e,this.z=+r};tu.fromLngLat=function(t,e){void 0===e&&(e=0);var r=Wc.convert(t);return new tu(Jc(r.lng),Kc(r.lat),Qc(e,r.lat))},tu.prototype.toLngLat=function(){return new Wc(360*this.x-180,$c(this.y))},tu.prototype.toAltitude=function(){return t=this.z,e=this.y,t*Zc($c(e));var t,e},tu.prototype.meterInMercatorCoordinateUnits=function(){return 1/Xc*(t=$c(this.y),1/Math.cos(t*Math.PI/180));var t};var eu=function(t,e,r){this.z=t,this.x=e,this.y=r,this.key=iu(0,t,t,e,r)};eu.prototype.equals=function(t){return this.z===t.z&&this.x===t.x&&this.y===t.y},eu.prototype.url=function(t,e){var r,n,i,a,o,s=(r=this.x,n=this.y,i=this.z,a=Gc(256*r,256*(n=Math.pow(2,i)-n-1),i),o=Gc(256*(r+1),256*(n+1),i),a[0]+\",\"+a[1]+\",\"+o[0]+\",\"+o[1]),l=function(t,e,r){for(var n,i=\"\",a=t;a>0;a--)i+=(e&(n=1<this.canonical.z?new nu(t,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new nu(t,this.wrap,t,this.canonical.x>>e,this.canonical.y>>e)},nu.prototype.calculateScaledKey=function(t,e){var r=this.canonical.z-t;return t>this.canonical.z?iu(this.wrap*+e,t,this.canonical.z,this.canonical.x,this.canonical.y):iu(this.wrap*+e,t,t,this.canonical.x>>r,this.canonical.y>>r)},nu.prototype.isChildOf=function(t){if(t.wrap!==this.wrap)return!1;var e=this.canonical.z-t.canonical.z;return 0===t.overscaledZ||t.overscaledZ>e&&t.canonical.y===this.canonical.y>>e},nu.prototype.children=function(t){if(this.overscaledZ>=t)return[new nu(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];var e=this.canonical.z+1,r=2*this.canonical.x,n=2*this.canonical.y;return[new nu(e,this.wrap,e,r,n),new nu(e,this.wrap,e,r+1,n),new nu(e,this.wrap,e,r,n+1),new nu(e,this.wrap,e,r+1,n+1)]},nu.prototype.isLessThan=function(t){return this.wrapt.wrap)&&(this.overscaledZt.overscaledZ)&&(this.canonical.xt.canonical.x)&&this.canonical.y=this.dim+1||e<-1||e>=this.dim+1)throw new RangeError(\"out of range source coordinates for DEM data\");return(e+1)*this.stride+(t+1)},au.prototype._unpackMapbox=function(t,e,r){return(256*t*256+256*e+r)/10-1e4},au.prototype._unpackTerrarium=function(t,e,r){return 256*t+e+r/256-32768},au.prototype.getPixels=function(){return new Eo({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))},au.prototype.backfillBorder=function(t,e,r){if(this.dim!==t.dim)throw new Error(\"dem dimension mismatch\");var n=e*this.dim,i=e*this.dim+this.dim,a=r*this.dim,o=r*this.dim+this.dim;switch(e){case-1:n=i-1;break;case 1:i=n+1}switch(r){case-1:a=o-1;break;case 1:o=a+1}for(var s=-e*this.dim,l=-r*this.dim,c=a;c=0&&u[3]>=0&&s.insert(o,u[0],u[1],u[2],u[3])}},uu.prototype.loadVTLayers=function(){return this.vtLayers||(this.vtLayers=new Ls.VectorTile(new al(this.rawTileData)).layers,this.sourceLayerCoder=new ou(this.vtLayers?Object.keys(this.vtLayers).sort():[\"_geojsonTileLayer\"])),this.vtLayers},uu.prototype.query=function(t,e,r,n){var a=this;this.loadVTLayers();for(var o=t.params||{},s=8192/t.tileSize/t.scale,l=sn(o.filter),c=t.queryGeometry,u=t.queryPadding*s,f=hu(c),h=this.grid.query(f.minX-u,f.minY-u,f.maxX+u,f.maxY+u),p=hu(t.cameraQueryGeometry),d=this.grid3D.query(p.minX-u,p.minY-u,p.maxX+u,p.maxY+u,(function(e,r,n,a){return function(t,e,r,n,a){for(var o=0,s=t;o=l.x&&a>=l.y)return!0}var c=[new i(e,r),new i(e,a),new i(n,a),new i(n,r)];if(t.length>2)for(var u=0,f=c;u=0)return!0;return!1}(a,f)){var h=this.sourceLayerCoder.decode(r),p=this.vtLayers[h].feature(n);if(i.filter(new pi(this.tileID.overscaledZ),p))for(var d=this.getId(p,h),g=0;gn)i=!1;else if(e)if(this.expirationTimeot&&(t.getActor().send(\"enforceCacheSizeLimit\",at),ht=0)},t.clamp=l,t.clearTileCache=function(t){var e=self.caches.delete(\"mapbox-tiles\");t&&e.catch(t).then((function(){return t()}))},t.clipLine=ec,t.clone=function(t){var e=new fo(16);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e},t.clone$1=x,t.clone$2=function(t){var e=new fo(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e},t.collisionCircleLayout=tl,t.config=F,t.create=function(){var t=new fo(16);return fo!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0),t[0]=1,t[5]=1,t[10]=1,t[15]=1,t},t.create$1=function(){var t=new fo(9);return fo!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[5]=0,t[6]=0,t[7]=0),t[0]=1,t[4]=1,t[8]=1,t},t.create$2=function(){var t=new fo(4);return fo!=Float32Array&&(t[1]=0,t[2]=0),t[0]=1,t[3]=1,t},t.createCommonjsModule=e,t.createExpression=Wr,t.createLayout=Ii,t.createStyleLayer=function(t){return\"custom\"===t.type?new Dc(t):new Rc[t.type](t)},t.cross=function(t,e,r){var n=e[0],i=e[1],a=e[2],o=r[0],s=r[1],l=r[2];return t[0]=i*l-a*s,t[1]=a*o-n*l,t[2]=n*s-i*o,t},t.deepEqual=function t(e,r){if(Array.isArray(e)){if(!Array.isArray(r)||e.length!==r.length)return!1;for(var n=0;n0&&(a=1/Math.sqrt(a)),t[0]=e[0]*a,t[1]=e[1]*a,t[2]=e[2]*a,t},t.number=qe,t.offscreenCanvasSupported=pt,t.ortho=function(t,e,r,n,i,a,o){var s=1/(e-r),l=1/(n-i),c=1/(a-o);return t[0]=-2*s,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*l,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*c,t[11]=0,t[12]=(e+r)*s,t[13]=(i+n)*l,t[14]=(o+a)*c,t[15]=1,t},t.parseGlyphPBF=function(t){return new al(t).readFields(Tl,[])},t.pbf=al,t.performSymbolLayout=function(t,e,r,n,i,a,o){t.createArrays();var s=512*t.overscaling;t.tilePixelRatio=8192/s,t.compareText={},t.iconsNeedLinear=!1;var l=t.layers[0].layout,c=t.layers[0]._unevaluatedLayout._values,u={};if(\"composite\"===t.textSizeData.kind){var f=t.textSizeData,h=f.minZoom,p=f.maxZoom;u.compositeTextSizes=[c[\"text-size\"].possiblyEvaluate(new pi(h),o),c[\"text-size\"].possiblyEvaluate(new pi(p),o)]}if(\"composite\"===t.iconSizeData.kind){var d=t.iconSizeData,g=d.minZoom,m=d.maxZoom;u.compositeIconSizes=[c[\"icon-size\"].possiblyEvaluate(new pi(g),o),c[\"icon-size\"].possiblyEvaluate(new pi(m),o)]}u.layoutTextSize=c[\"text-size\"].possiblyEvaluate(new pi(t.zoom+1),o),u.layoutIconSize=c[\"icon-size\"].possiblyEvaluate(new pi(t.zoom+1),o),u.textMaxSize=c[\"text-size\"].possiblyEvaluate(new pi(18));for(var v=24*l.get(\"text-line-height\"),y=\"map\"===l.get(\"text-rotation-alignment\")&&\"point\"!==l.get(\"symbol-placement\"),x=l.get(\"text-keep-upright\"),b=l.get(\"text-size\"),w=function(){var a=k[T],s=l.get(\"text-font\").evaluate(a,{},o).join(\",\"),c=b.evaluate(a,{},o),f=u.layoutTextSize.evaluate(a,{},o),h=u.layoutIconSize.evaluate(a,{},o),p={horizontal:{},vertical:void 0},d=a.text,g=[0,0];if(d){var m=d.toString(),w=24*l.get(\"text-letter-spacing\").evaluate(a,{},o),A=function(t){for(var e=0,r=t;e=8192||f.y<0||f.y>=8192||function(t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m,v,y,x,b,w,T,k,A){var M,S,E,L,C,P=t.addToLineVertexArray(e,r),I=0,O=0,z=0,D=0,R=-1,F=-1,B={},N=ya(\"\"),j=0,U=0;void 0===s._unevaluatedLayout.getValue(\"text-radial-offset\")?(M=s.layout.get(\"text-offset\").evaluate(b,{},k).map((function(t){return 24*t})),j=M[0],U=M[1]):(j=24*s.layout.get(\"text-radial-offset\").evaluate(b,{},k),U=pc);if(t.allowVerticalPlacement&&n.vertical){var V=s.layout.get(\"text-rotate\").evaluate(b,{},k)+90,H=n.vertical;L=new sc(l,e,c,u,f,H,h,p,d,V),o&&(C=new sc(l,e,c,u,f,o,m,v,d,V))}if(i){var q=s.layout.get(\"icon-rotate\").evaluate(b,{}),G=\"none\"!==s.layout.get(\"icon-text-fit\"),Y=rc(i,q,T,G),W=o?rc(o,q,T,G):void 0;E=new sc(l,e,c,u,f,i,m,v,!1,q),I=4*Y.length;var X=t.iconSizeData,Z=null;\"source\"===X.kind?(Z=[128*s.layout.get(\"icon-size\").evaluate(b,{})])[0]>32640&&_(t.layerIds[0]+': Value for \"icon-size\" is >= 255. Reduce your \"icon-size\".'):\"composite\"===X.kind&&((Z=[128*w.compositeIconSizes[0].evaluate(b,{},k),128*w.compositeIconSizes[1].evaluate(b,{},k)])[0]>32640||Z[1]>32640)&&_(t.layerIds[0]+': Value for \"icon-size\" is >= 255. Reduce your \"icon-size\".'),t.addSymbols(t.icon,Y,Z,x,y,b,!1,e,P.lineStartIndex,P.lineLength,-1,k),R=t.icon.placedSymbolArray.length-1,W&&(O=4*W.length,t.addSymbols(t.icon,W,Z,x,y,b,Cl.vertical,e,P.lineStartIndex,P.lineLength,-1,k),F=t.icon.placedSymbolArray.length-1)}for(var J in n.horizontal){var K=n.horizontal[J];if(!S){N=ya(K.text);var Q=s.layout.get(\"text-rotate\").evaluate(b,{},k);S=new sc(l,e,c,u,f,K,h,p,d,Q)}var $=1===K.positionedLines.length;if(z+=mc(t,e,K,a,s,d,b,g,P,n.vertical?Cl.horizontal:Cl.horizontalOnly,$?Object.keys(n.horizontal):[J],B,R,w,k),$)break}n.vertical&&(D+=mc(t,e,n.vertical,a,s,d,b,g,P,Cl.vertical,[\"vertical\"],B,F,w,k));var tt=S?S.boxStartIndex:t.collisionBoxArray.length,et=S?S.boxEndIndex:t.collisionBoxArray.length,rt=L?L.boxStartIndex:t.collisionBoxArray.length,nt=L?L.boxEndIndex:t.collisionBoxArray.length,it=E?E.boxStartIndex:t.collisionBoxArray.length,at=E?E.boxEndIndex:t.collisionBoxArray.length,ot=C?C.boxStartIndex:t.collisionBoxArray.length,st=C?C.boxEndIndex:t.collisionBoxArray.length,lt=-1,ct=function(t,e){return t&&t.circleDiameter?Math.max(t.circleDiameter,e):e};lt=ct(S,lt),lt=ct(L,lt),lt=ct(E,lt);var ut=(lt=ct(C,lt))>-1?1:0;ut&&(lt*=A/24);t.glyphOffsetArray.length>=Mc.MAX_GLYPHS&&_(\"Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907\");void 0!==b.sortKey&&t.addToSortKeyRanges(t.symbolInstances.length,b.sortKey);t.symbolInstances.emplaceBack(e.x,e.y,B.right>=0?B.right:-1,B.center>=0?B.center:-1,B.left>=0?B.left:-1,B.vertical||-1,R,F,N,tt,et,rt,nt,it,at,ot,st,c,z,D,I,O,ut,0,h,j,U,lt)}(t,f,s,r,n,i,h,t.layers[0],t.collisionBoxArray,e.index,e.sourceLayerIndex,t.index,v,w,A,l,x,T,M,d,e,a,c,u,o)};if(\"line\"===S)for(var P=0,I=ec(e.geometry,0,0,8192,8192);P1){var V=$l(U,k,r.vertical||g,n,24,y);V&&C(U,V)}}else if(\"Polygon\"===e.type)for(var H=0,q=hs(e.geometry,0);H=E.maxzoom))if(\"none\"!==E.visibility)o(S,this.zoom,n),(g[E.id]=E.createBucket({index:u.bucketLayerIDs.length,layers:S,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:b,sourceID:this.source})).populate(_,m,this.tileID.canonical),u.bucketLayerIDs.push(S.map((function(t){return t.id})))}}}var L=t.mapObject(m.glyphDependencies,(function(t){return Object.keys(t).map(Number)}));Object.keys(L).length?a.send(\"getGlyphs\",{uid:this.uid,stacks:L},(function(t,e){f||(f=t,h=e,I.call(l))})):h={};var C=Object.keys(m.iconDependencies);C.length?a.send(\"getImages\",{icons:C,source:this.source,tileID:this.tileID,type:\"icons\"},(function(t,e){f||(f=t,p=e,I.call(l))})):p={};var P=Object.keys(m.patternDependencies);function I(){if(f)return s(f);if(h&&p&&d){var e=new i(h),r=new t.ImageAtlas(p,d);for(var a in g){var l=g[a];l instanceof t.SymbolBucket?(o(l.layers,this.zoom,n),t.performSymbolLayout(l,h,e.positions,p,r.iconPositions,this.showCollisionBoxes,this.tileID.canonical)):l.hasPattern&&(l instanceof t.LineBucket||l instanceof t.FillBucket||l instanceof t.FillExtrusionBucket)&&(o(l.layers,this.zoom,n),l.addFeatures(m,this.tileID.canonical,r.patternPositions))}this.status=\"done\",s(null,{buckets:t.values(g).filter((function(t){return!t.isEmpty()})),featureIndex:u,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:e.image,imageAtlas:r,glyphMap:this.returnDependencies?h:null,iconMap:this.returnDependencies?p:null,glyphPositions:this.returnDependencies?e.positions:null})}}P.length?a.send(\"getImages\",{icons:P,source:this.source,tileID:this.tileID,type:\"patterns\"},(function(t,e){f||(f=t,d=e,I.call(l))})):d={},I.call(this)};var l=function(t,e,r,n){this.actor=t,this.layerIndex=e,this.availableImages=r,this.loadVectorData=n||s,this.loading={},this.loaded={}};l.prototype.loadTile=function(e,r){var n=this,i=e.uid;this.loading||(this.loading={});var o=!!(e&&e.request&&e.request.collectResourceTiming)&&new t.RequestPerformance(e.request),s=this.loading[i]=new a(e);s.abort=this.loadVectorData(e,(function(e,a){if(delete n.loading[i],e||!a)return s.status=\"done\",n.loaded[i]=s,r(e);var l=a.rawData,c={};a.expires&&(c.expires=a.expires),a.cacheControl&&(c.cacheControl=a.cacheControl);var u={};if(o){var f=o.finish();f&&(u.resourceTiming=JSON.parse(JSON.stringify(f)))}s.vectorTile=a.vectorTile,s.parse(a.vectorTile,n.layerIndex,n.availableImages,n.actor,(function(e,n){if(e||!n)return r(e);r(null,t.extend({rawTileData:l.slice(0)},n,c,u))})),n.loaded=n.loaded||{},n.loaded[i]=s}))},l.prototype.reloadTile=function(t,e){var r=this,n=this.loaded,i=t.uid,a=this;if(n&&n[i]){var o=n[i];o.showCollisionBoxes=t.showCollisionBoxes;var s=function(t,n){var i=o.reloadCallback;i&&(delete o.reloadCallback,o.parse(o.vectorTile,a.layerIndex,r.availableImages,a.actor,i)),e(t,n)};\"parsing\"===o.status?o.reloadCallback=s:\"done\"===o.status&&(o.vectorTile?o.parse(o.vectorTile,this.layerIndex,this.availableImages,this.actor,s):s())}},l.prototype.abortTile=function(t,e){var r=this.loading,n=t.uid;r&&r[n]&&r[n].abort&&(r[n].abort(),delete r[n]),e()},l.prototype.removeTile=function(t,e){var r=this.loaded,n=t.uid;r&&r[n]&&delete r[n],e()};var c=t.window.ImageBitmap,u=function(){this.loaded={}};u.prototype.loadTile=function(e,r){var n=e.uid,i=e.encoding,a=e.rawImageData,o=c&&a instanceof c?this.getImageData(a):a,s=new t.DEMData(n,o,i);this.loaded=this.loaded||{},this.loaded[n]=s,r(null,s)},u.prototype.getImageData=function(e){this.offscreenCanvas&&this.offscreenCanvasContext||(this.offscreenCanvas=new OffscreenCanvas(e.width,e.height),this.offscreenCanvasContext=this.offscreenCanvas.getContext(\"2d\")),this.offscreenCanvas.width=e.width,this.offscreenCanvas.height=e.height,this.offscreenCanvasContext.drawImage(e,0,0,e.width,e.height);var r=this.offscreenCanvasContext.getImageData(-1,-1,e.width+2,e.height+2);return this.offscreenCanvasContext.clearRect(0,0,this.offscreenCanvas.width,this.offscreenCanvas.height),new t.RGBAImage({width:r.width,height:r.height},r.data)},u.prototype.removeTile=function(t){var e=this.loaded,r=t.uid;e&&e[r]&&delete e[r]};var f=function t(e,r){var n,i=e&&e.type;if(\"FeatureCollection\"===i)for(n=0;n=0!=!!e&&t.reverse()}var d=t.vectorTile.VectorTileFeature.prototype.toGeoJSON,g=function(e){this._feature=e,this.extent=t.EXTENT,this.type=e.type,this.properties=e.tags,\"id\"in e&&!isNaN(e.id)&&(this.id=parseInt(e.id,10))};g.prototype.loadGeometry=function(){if(1===this._feature.type){for(var e=[],r=0,n=this._feature.geometry;r>31}function P(t,e){for(var r=t.loadGeometry(),n=t.type,i=0,a=0,o=r.length,s=0;s>1;!function t(e,r,n,i,a,o){for(;a>i;){if(a-i>600){var s=a-i+1,l=n-i+1,c=Math.log(s),u=.5*Math.exp(2*c/3),f=.5*Math.sqrt(c*u*(s-u)/s)*(l-s/2<0?-1:1),h=Math.max(i,Math.floor(n-l*u/s+f)),p=Math.min(a,Math.floor(n+(s-l)*u/s+f));t(e,r,n,h,p,o)}var d=r[2*n+o],g=i,m=a;for(z(e,r,i,n),r[2*a+o]>d&&z(e,r,i,a);gd;)m--}r[2*i+o]===d?z(e,r,i,m):(m++,z(e,r,m,a)),m<=n&&(i=m+1),n<=m&&(a=m-1)}}(t,e,o,n,i,a%2),O(t,e,r,n,o-1,a+1),O(t,e,r,o+1,i,a+1)}}function z(t,e,r,n){D(t,r,n),D(e,2*r,2*n),D(e,2*r+1,2*n+1)}function D(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function R(t,e,r,n){var i=t-r,a=e-n;return i*i+a*a}_.fromVectorTileJs=w,_.fromGeojsonVt=T,_.GeoJSONWrapper=k;var F=function(t){return t[0]},B=function(t){return t[1]},N=function(t,e,r,n,i){void 0===e&&(e=F),void 0===r&&(r=B),void 0===n&&(n=64),void 0===i&&(i=Float64Array),this.nodeSize=n,this.points=t;for(var a=t.length<65536?Uint16Array:Uint32Array,o=this.ids=new a(t.length),s=this.coords=new i(2*t.length),l=0;l=r&&s<=i&&l>=n&&l<=a&&u.push(t[d]);else{var g=Math.floor((p+h)/2);s=e[2*g],l=e[2*g+1],s>=r&&s<=i&&l>=n&&l<=a&&u.push(t[g]);var m=(f+1)%2;(0===f?r<=s:n<=l)&&(c.push(p),c.push(g-1),c.push(m)),(0===f?i>=s:a>=l)&&(c.push(g+1),c.push(h),c.push(m))}}return u}(this.ids,this.coords,t,e,r,n,this.nodeSize)},N.prototype.within=function(t,e,r){return function(t,e,r,n,i,a){for(var o=[0,t.length-1,0],s=[],l=i*i;o.length;){var c=o.pop(),u=o.pop(),f=o.pop();if(u-f<=a)for(var h=f;h<=u;h++)R(e[2*h],e[2*h+1],r,n)<=l&&s.push(t[h]);else{var p=Math.floor((f+u)/2),d=e[2*p],g=e[2*p+1];R(d,g,r,n)<=l&&s.push(t[p]);var m=(c+1)%2;(0===c?r-i<=d:n-i<=g)&&(o.push(f),o.push(p-1),o.push(m)),(0===c?r+i>=d:n+i>=g)&&(o.push(p+1),o.push(u),o.push(m))}}return s}(this.ids,this.coords,t,e,r,this.nodeSize)};var j={minZoom:0,maxZoom:16,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:function(t){return t}},U=function(t){this.options=X(Object.create(j),t),this.trees=new Array(this.options.maxZoom+1)};function V(t,e,r,n,i){return{x:t,y:e,zoom:1/0,id:r,parentId:-1,numPoints:n,properties:i}}function H(t,e){var r=t.geometry.coordinates,n=r[0],i=r[1];return{x:Y(n),y:W(i),zoom:1/0,index:e,parentId:-1}}function q(t){return{type:\"Feature\",id:t.id,properties:G(t),geometry:{type:\"Point\",coordinates:[(n=t.x,360*(n-.5)),(e=t.y,r=(180-360*e)*Math.PI/180,360*Math.atan(Math.exp(r))/Math.PI-90)]}};var e,r,n}function G(t){var e=t.numPoints,r=e>=1e4?Math.round(e/1e3)+\"k\":e>=1e3?Math.round(e/100)/10+\"k\":e;return X(X({},t.properties),{cluster:!0,cluster_id:t.id,point_count:e,point_count_abbreviated:r})}function Y(t){return t/360+.5}function W(t){var e=Math.sin(t*Math.PI/180),r=.5-.25*Math.log((1+e)/(1-e))/Math.PI;return r<0?0:r>1?1:r}function X(t,e){for(var r in e)t[r]=e[r];return t}function Z(t){return t.x}function J(t){return t.y}function K(t,e,r,n,i,a){var o=i-r,s=a-n;if(0!==o||0!==s){var l=((t-r)*o+(e-n)*s)/(o*o+s*s);l>1?(r=i,n=a):l>0&&(r+=o*l,n+=s*l)}return(o=t-r)*o+(s=e-n)*s}function Q(t,e,r,n){var i={id:void 0===t?null:t,type:e,geometry:r,tags:n,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return function(t){var e=t.geometry,r=t.type;if(\"Point\"===r||\"MultiPoint\"===r||\"LineString\"===r)$(t,e);else if(\"Polygon\"===r||\"MultiLineString\"===r)for(var n=0;n0&&(o+=n?(i*c-l*a)/2:Math.sqrt(Math.pow(l-i,2)+Math.pow(c-a,2))),i=l,a=c}var u=e.length-3;e[2]=1,function t(e,r,n,i){for(var a,o=i,s=n-r>>1,l=n-r,c=e[r],u=e[r+1],f=e[n],h=e[n+1],p=r+3;po)a=p,o=d;else if(d===o){var g=Math.abs(p-s);gi&&(a-r>3&&t(e,r,a,i),e[a+2]=o,n-a>3&&t(e,a,n,i))}(e,0,u,r),e[u+2]=1,e.size=Math.abs(o),e.start=0,e.end=e.size}function nt(t,e,r,n){for(var i=0;i1?1:r}function ot(t,e,r,n,i,a,o,s){if(n/=e,a>=(r/=e)&&o=n)return null;for(var l=[],c=0;c=r&&d=n)){var g=[];if(\"Point\"===h||\"MultiPoint\"===h)st(f,g,r,n,i);else if(\"LineString\"===h)lt(f,g,r,n,i,!1,s.lineMetrics);else if(\"MultiLineString\"===h)ut(f,g,r,n,i,!1);else if(\"Polygon\"===h)ut(f,g,r,n,i,!0);else if(\"MultiPolygon\"===h)for(var m=0;m=r&&o<=n&&(e.push(t[a]),e.push(t[a+1]),e.push(t[a+2]))}}function lt(t,e,r,n,i,a,o){for(var s,l,c=ct(t),u=0===i?ht:pt,f=t.start,h=0;hr&&(l=u(c,p,d,m,v,r),o&&(c.start=f+s*l)):y>n?x=r&&(l=u(c,p,d,m,v,r),b=!0),x>n&&y<=n&&(l=u(c,p,d,m,v,n),b=!0),!a&&b&&(o&&(c.end=f+s*l),e.push(c),c=ct(t)),o&&(f+=s)}var _=t.length-3;p=t[_],d=t[_+1],g=t[_+2],(y=0===i?p:d)>=r&&y<=n&&ft(c,p,d,g),_=c.length-3,a&&_>=3&&(c[_]!==c[0]||c[_+1]!==c[1])&&ft(c,c[0],c[1],c[2]),c.length&&e.push(c)}function ct(t){var e=[];return e.size=t.size,e.start=t.start,e.end=t.end,e}function ut(t,e,r,n,i,a){for(var o=0;oo.maxX&&(o.maxX=u),f>o.maxY&&(o.maxY=f)}return o}function xt(t,e,r,n){var i=e.geometry,a=e.type,o=[];if(\"Point\"===a||\"MultiPoint\"===a)for(var s=0;s0&&e.size<(i?o:n))r.numPoints+=e.length/3;else{for(var s=[],l=0;lo)&&(r.numSimplified++,s.push(e[l]),s.push(e[l+1])),r.numPoints++;i&&function(t,e){for(var r=0,n=0,i=t.length,a=i-2;n0===e)for(n=0,i=t.length;n24)throw new Error(\"maxZoom should be in the 0-24 range\");if(e.promoteId&&e.generateId)throw new Error(\"promoteId and generateId cannot be used together.\");var n=function(t,e){var r=[];if(\"FeatureCollection\"===t.type)for(var n=0;n=n;c--){var u=+Date.now();s=this._cluster(s,c),this.trees[c]=new N(s,Z,J,a,Float32Array),r&&console.log(\"z%d: %d clusters in %dms\",c,s.length,+Date.now()-u)}return r&&console.timeEnd(\"total time\"),this},U.prototype.getClusters=function(t,e){var r=((t[0]+180)%360+360)%360-180,n=Math.max(-90,Math.min(90,t[1])),i=180===t[2]?180:((t[2]+180)%360+360)%360-180,a=Math.max(-90,Math.min(90,t[3]));if(t[2]-t[0]>=360)r=-180,i=180;else if(r>i){var o=this.getClusters([r,n,180,a],e),s=this.getClusters([-180,n,i,a],e);return o.concat(s)}for(var l=this.trees[this._limitZoom(e)],c=[],u=0,f=l.range(Y(r),W(a),Y(i),W(n));u1?this._map(c,!0):null,m=(l<<5)+(e+1)+this.points.length,v=0,y=f;v>5},U.prototype._getOriginZoom=function(t){return(t-this.points.length)%32},U.prototype._map=function(t,e){if(t.numPoints)return e?X({},t.properties):t.properties;var r=this.points[t.index].properties,n=this.options.map(r);return e&&n===r?X({},n):n},_t.prototype.options={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,tolerance:3,extent:4096,buffer:64,lineMetrics:!1,promoteId:null,generateId:!1,debug:0},_t.prototype.splitTile=function(t,e,r,n,i,a,o){for(var s=[t,e,r,n],l=this.options,c=l.debug;s.length;){n=s.pop(),r=s.pop(),e=s.pop(),t=s.pop();var u=1<1&&console.time(\"creation\"),h=this.tiles[f]=yt(t,e,r,n,l),this.tileCoords.push({z:e,x:r,y:n}),c)){c>1&&(console.log(\"tile z%d-%d-%d (features: %d, points: %d, simplified: %d)\",e,r,n,h.numFeatures,h.numPoints,h.numSimplified),console.timeEnd(\"creation\"));var p=\"z\"+e;this.stats[p]=(this.stats[p]||0)+1,this.total++}if(h.source=t,i){if(e===l.maxZoom||e===i)continue;var d=1<1&&console.time(\"clipping\");var g,m,v,y,x,b,_=.5*l.buffer/l.extent,w=.5-_,T=.5+_,k=1+_;g=m=v=y=null,x=ot(t,u,r-_,r+T,0,h.minX,h.maxX,l),b=ot(t,u,r+w,r+k,0,h.minX,h.maxX,l),t=null,x&&(g=ot(x,u,n-_,n+T,1,h.minY,h.maxY,l),m=ot(x,u,n+w,n+k,1,h.minY,h.maxY,l),x=null),b&&(v=ot(b,u,n-_,n+T,1,h.minY,h.maxY,l),y=ot(b,u,n+w,n+k,1,h.minY,h.maxY,l),b=null),c>1&&console.timeEnd(\"clipping\"),s.push(g||[],e+1,2*r,2*n),s.push(m||[],e+1,2*r,2*n+1),s.push(v||[],e+1,2*r+1,2*n),s.push(y||[],e+1,2*r+1,2*n+1)}}},_t.prototype.getTile=function(t,e,r){var n=this.options,i=n.extent,a=n.debug;if(t<0||t>24)return null;var o=1<1&&console.log(\"drilling down to z%d-%d-%d\",t,e,r);for(var l,c=t,u=e,f=r;!l&&c>0;)c--,u=Math.floor(u/2),f=Math.floor(f/2),l=this.tiles[wt(c,u,f)];return l&&l.source?(a>1&&console.log(\"found parent tile z%d-%d-%d\",c,u,f),a>1&&console.time(\"drilling down\"),this.splitTile(l.source,c,u,f,t,e,r),a>1&&console.timeEnd(\"drilling down\"),this.tiles[s]?mt(this.tiles[s],i):null):null};var kt=function(e){function r(t,r,n,i){e.call(this,t,r,n,Tt),i&&(this.loadGeoJSON=i)}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.loadData=function(t,e){this._pendingCallback&&this._pendingCallback(null,{abandoned:!0}),this._pendingCallback=e,this._pendingLoadDataParams=t,this._state&&\"Idle\"!==this._state?this._state=\"NeedsLoadData\":(this._state=\"Coalescing\",this._loadData())},r.prototype._loadData=function(){var e=this;if(this._pendingCallback&&this._pendingLoadDataParams){var r=this._pendingCallback,n=this._pendingLoadDataParams;delete this._pendingCallback,delete this._pendingLoadDataParams;var i=!!(n&&n.request&&n.request.collectResourceTiming)&&new t.RequestPerformance(n.request);this.loadGeoJSON(n,(function(a,o){if(a||!o)return r(a);if(\"object\"!=typeof o)return r(new Error(\"Input data given to '\"+n.source+\"' is not a valid GeoJSON object.\"));f(o,!0);try{e._geoJSONIndex=n.cluster?new U(function(e){var r=e.superclusterOptions,n=e.clusterProperties;if(!n||!r)return r;for(var i={},a={},o={accumulated:null,zoom:0},s={properties:null},l=Object.keys(n),c=0,u=l;c=0?0:e.button},r.remove=function(t){t.parentNode&&t.parentNode.removeChild(t)};var h=function(e){function r(){e.call(this),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requesters=[],this.patterns={},this.atlasImage=new t.RGBAImage({width:1,height:1}),this.dirty=!0}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.isLoaded=function(){return this.loaded},r.prototype.setLoaded=function(t){if(this.loaded!==t&&(this.loaded=t,t)){for(var e=0,r=this.requesters;e=0?1.2:1))}function v(t,e,r,n,i,a,o){for(var s=0;s65535)e(new Error(\"glyphs > 65535 not supported\"));else if(a.ranges[s])e(null,{stack:r,id:i,glyph:o});else{var l=a.requests[s];l||(l=a.requests[s]=[],x.loadGlyphRange(r,s,n.url,n.requestManager,(function(t,e){if(e){for(var r in e)n._doesCharSupportLocalGlyph(+r)||(a.glyphs[+r]=e[+r]);a.ranges[s]=!0}for(var i=0,o=l;i1&&(l=t[++s]);var u=Math.abs(c-l.left),f=Math.abs(c-l.right),h=Math.min(u,f),p=void 0,d=i/r*(n+1);if(l.isDash){var g=n-Math.abs(d);p=Math.sqrt(h*h+g*g)}else p=n-Math.sqrt(h*h+d*d);this.data[o+c]=Math.max(0,Math.min(255,p+128))}},T.prototype.addRegularDash=function(t){for(var e=t.length-1;e>=0;--e){var r=t[e],n=t[e+1];r.zeroLength?t.splice(e,1):n&&n.isDash===r.isDash&&(n.left=r.left,t.splice(e,1))}var i=t[0],a=t[t.length-1];i.isDash===a.isDash&&(i.left=a.left-this.width,a.right=i.right+this.width);for(var o=this.width*this.nextRow,s=0,l=t[s],c=0;c1&&(l=t[++s]);var u=Math.abs(c-l.left),f=Math.abs(c-l.right),h=Math.min(u,f),p=l.isDash?h:-h;this.data[o+c]=Math.max(0,Math.min(255,p+128))}},T.prototype.addDash=function(e,r){var n=r?7:0,i=2*n+1;if(this.nextRow+i>this.height)return t.warnOnce(\"LineAtlas out of space\"),null;for(var a=0,o=0;o=n&&e.x=i&&e.y0&&(l[new t.OverscaledTileID(e.overscaledZ,a,r.z,i,r.y-1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,e.wrap,r.z,r.x,r.y-1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,s,r.z,o,r.y-1).key]={backfilled:!1}),r.y+10&&(n.resourceTiming=e._resourceTiming,e._resourceTiming=[]),e.fire(new t.Event(\"data\",n))}}))},r.prototype.onAdd=function(t){this.map=t,this.load()},r.prototype.setData=function(e){var r=this;return this._data=e,this.fire(new t.Event(\"dataloading\",{dataType:\"source\"})),this._updateWorkerData((function(e){if(e)r.fire(new t.ErrorEvent(e));else{var n={dataType:\"source\",sourceDataType:\"content\"};r._collectResourceTiming&&r._resourceTiming&&r._resourceTiming.length>0&&(n.resourceTiming=r._resourceTiming,r._resourceTiming=[]),r.fire(new t.Event(\"data\",n))}})),this},r.prototype.getClusterExpansionZoom=function(t,e){return this.actor.send(\"geojson.getClusterExpansionZoom\",{clusterId:t,source:this.id},e),this},r.prototype.getClusterChildren=function(t,e){return this.actor.send(\"geojson.getClusterChildren\",{clusterId:t,source:this.id},e),this},r.prototype.getClusterLeaves=function(t,e,r,n){return this.actor.send(\"geojson.getClusterLeaves\",{source:this.id,clusterId:t,limit:e,offset:r},n),this},r.prototype._updateWorkerData=function(e){var r=this;this._loaded=!1;var n=t.extend({},this.workerOptions),i=this._data;\"string\"==typeof i?(n.request=this.map._requestManager.transformRequest(t.browser.resolveURL(i),t.ResourceType.Source),n.request.collectResourceTiming=this._collectResourceTiming):n.data=JSON.stringify(i),this.actor.send(this.type+\".loadData\",n,(function(t,i){r._removed||i&&i.abandoned||(r._loaded=!0,i&&i.resourceTiming&&i.resourceTiming[r.id]&&(r._resourceTiming=i.resourceTiming[r.id].slice(0)),r.actor.send(r.type+\".coalesce\",{source:n.source},null),e(t))}))},r.prototype.loaded=function(){return this._loaded},r.prototype.loadTile=function(e,r){var n=this,i=e.actor?\"reloadTile\":\"loadTile\";e.actor=this.actor;var a={type:this.type,uid:e.uid,tileID:e.tileID,zoom:e.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:t.browser.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};e.request=this.actor.send(i,a,(function(t,a){return delete e.request,e.unloadVectorData(),e.aborted?r(null):t?r(t):(e.loadVectorData(a,n.map.painter,\"reloadTile\"===i),r(null))}))},r.prototype.abortTile=function(t){t.request&&(t.request.cancel(),delete t.request),t.aborted=!0},r.prototype.unloadTile=function(t){t.unloadVectorData(),this.actor.send(\"removeTile\",{uid:t.uid,type:this.type,source:this.id})},r.prototype.onRemove=function(){this._removed=!0,this.actor.send(\"removeSource\",{type:this.type,source:this.id})},r.prototype.serialize=function(){return t.extend({},this._options,{type:this.type,data:this._data})},r.prototype.hasTransition=function(){return!1},r}(t.Evented),P=t.createLayout([{name:\"a_pos\",type:\"Int16\",components:2},{name:\"a_texture_pos\",type:\"Int16\",components:2}]),I=function(e){function r(t,r,n,i){e.call(this),this.id=t,this.dispatcher=n,this.coordinates=r.coordinates,this.type=\"image\",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(i),this.options=r}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.load=function(e,r){var n=this;this._loaded=!1,this.fire(new t.Event(\"dataloading\",{dataType:\"source\"})),this.url=this.options.url,t.getImage(this.map._requestManager.transformRequest(this.url,t.ResourceType.Image),(function(i,a){n._loaded=!0,i?n.fire(new t.ErrorEvent(i)):a&&(n.image=a,e&&(n.coordinates=e),r&&r(),n._finishLoading())}))},r.prototype.loaded=function(){return this._loaded},r.prototype.updateImage=function(t){var e=this;return this.image&&t.url?(this.options.url=t.url,this.load(t.coordinates,(function(){e.texture=null})),this):this},r.prototype._finishLoading=function(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new t.Event(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})))},r.prototype.onAdd=function(t){this.map=t,this.load()},r.prototype.setCoordinates=function(e){var r=this;this.coordinates=e;var n=e.map(t.MercatorCoordinate.fromLngLat);this.tileID=function(e){for(var r=1/0,n=1/0,i=-1/0,a=-1/0,o=0,s=e;or.end(0)?this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+this.id,null,\"Playback for this video can be set only between the \"+r.start(0)+\" and \"+r.end(0)+\"-second mark.\"))):this.video.currentTime=e}},r.prototype.getVideo=function(){return this.video},r.prototype.onAdd=function(t){this.map||(this.map=t,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))},r.prototype.prepare=function(){if(!(0===Object.keys(this.tiles).length||this.video.readyState<2)){var e=this.map.painter.context,r=e.gl;for(var n in this.boundsBuffer||(this.boundsBuffer=e.createVertexBuffer(this._boundsArray,P.members)),this.boundsSegments||(this.boundsSegments=t.SegmentVector.simpleSegment(0,0,4,2)),this.texture?this.video.paused||(this.texture.bind(r.LINEAR,r.CLAMP_TO_EDGE),r.texSubImage2D(r.TEXTURE_2D,0,0,0,r.RGBA,r.UNSIGNED_BYTE,this.video)):(this.texture=new t.Texture(e,this.video,r.RGBA),this.texture.bind(r.LINEAR,r.CLAMP_TO_EDGE)),this.tiles){var i=this.tiles[n];\"loaded\"!==i.state&&(i.state=\"loaded\",i.texture=this.texture)}}},r.prototype.serialize=function(){return{type:\"video\",urls:this.urls,coordinates:this.coordinates}},r.prototype.hasTransition=function(){return this.video&&!this.video.paused},r}(I),z=function(e){function r(r,n,i,a){e.call(this,r,n,i,a),n.coordinates?Array.isArray(n.coordinates)&&4===n.coordinates.length&&!n.coordinates.some((function(t){return!Array.isArray(t)||2!==t.length||t.some((function(t){return\"number\"!=typeof t}))}))||this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+r,null,'\"coordinates\" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+r,null,'missing required property \"coordinates\"'))),n.animate&&\"boolean\"!=typeof n.animate&&this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+r,null,'optional \"animate\" property must be a boolean value'))),n.canvas?\"string\"==typeof n.canvas||n.canvas instanceof t.window.HTMLCanvasElement||this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+r,null,'\"canvas\" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+r,null,'missing required property \"canvas\"'))),this.options=n,this.animate=void 0===n.animate||n.animate}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.load=function(){this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof t.window.HTMLCanvasElement?this.options.canvas:t.window.document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new t.ErrorEvent(new Error(\"Canvas dimensions cannot be less than or equal to zero.\"))):(this.play=function(){this._playing=!0,this.map.triggerRepaint()},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1)},this._finishLoading())},r.prototype.getCanvas=function(){return this.canvas},r.prototype.onAdd=function(t){this.map=t,this.load(),this.canvas&&this.animate&&this.play()},r.prototype.onRemove=function(){this.pause()},r.prototype.prepare=function(){var e=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,e=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,e=!0),!this._hasInvalidDimensions()&&0!==Object.keys(this.tiles).length){var r=this.map.painter.context,n=r.gl;for(var i in this.boundsBuffer||(this.boundsBuffer=r.createVertexBuffer(this._boundsArray,P.members)),this.boundsSegments||(this.boundsSegments=t.SegmentVector.simpleSegment(0,0,4,2)),this.texture?(e||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new t.Texture(r,this.canvas,n.RGBA,{premultiply:!0}),this.tiles){var a=this.tiles[i];\"loaded\"!==a.state&&(a.state=\"loaded\",a.texture=this.texture)}}},r.prototype.serialize=function(){return{type:\"canvas\",coordinates:this.coordinates}},r.prototype.hasTransition=function(){return this._playing},r.prototype._hasInvalidDimensions=function(){for(var t=0,e=[this.canvas.width,this.canvas.height];tthis.max){var o=this._getAndRemoveByKey(this.order[0]);o&&this.onRemove(o)}return this},N.prototype.has=function(t){return t.wrapped().key in this.data},N.prototype.getAndRemove=function(t){return this.has(t)?this._getAndRemoveByKey(t.wrapped().key):null},N.prototype._getAndRemoveByKey=function(t){var e=this.data[t].shift();return e.timeout&&clearTimeout(e.timeout),0===this.data[t].length&&delete this.data[t],this.order.splice(this.order.indexOf(t),1),e.value},N.prototype.getByKey=function(t){var e=this.data[t];return e?e[0].value:null},N.prototype.get=function(t){return this.has(t)?this.data[t.wrapped().key][0].value:null},N.prototype.remove=function(t,e){if(!this.has(t))return this;var r=t.wrapped().key,n=void 0===e?0:this.data[r].indexOf(e),i=this.data[r][n];return this.data[r].splice(n,1),i.timeout&&clearTimeout(i.timeout),0===this.data[r].length&&delete this.data[r],this.onRemove(i.value),this.order.splice(this.order.indexOf(r),1),this},N.prototype.setMaxSize=function(t){for(this.max=t;this.order.length>this.max;){var e=this._getAndRemoveByKey(this.order[0]);e&&this.onRemove(e)}return this},N.prototype.filter=function(t){var e=[];for(var r in this.data)for(var n=0,i=this.data[r];n1||(Math.abs(r)>1&&(1===Math.abs(r+i)?r+=i:1===Math.abs(r-i)&&(r-=i)),e.dem&&t.dem&&(t.dem.backfillBorder(e.dem,r,n),t.neighboringTiles&&t.neighboringTiles[a]&&(t.neighboringTiles[a].backfilled=!0)))}},r.prototype.getTile=function(t){return this.getTileByID(t.key)},r.prototype.getTileByID=function(t){return this._tiles[t]},r.prototype._retainLoadedChildren=function(t,e,r,n){for(var i in this._tiles){var a=this._tiles[i];if(!(n[i]||!a.hasData()||a.tileID.overscaledZ<=e||a.tileID.overscaledZ>r)){for(var o=a.tileID;a&&a.tileID.overscaledZ>e+1;){var s=a.tileID.scaledTo(a.tileID.overscaledZ-1);(a=this._tiles[s.key])&&a.hasData()&&(o=s)}for(var l=o;l.overscaledZ>e;)if(t[(l=l.scaledTo(l.overscaledZ-1)).key]){n[o.key]=o;break}}}},r.prototype.findLoadedParent=function(t,e){if(t.key in this._loadedParentTiles){var r=this._loadedParentTiles[t.key];return r&&r.tileID.overscaledZ>=e?r:null}for(var n=t.overscaledZ-1;n>=e;n--){var i=t.scaledTo(n),a=this._getLoadedTile(i);if(a)return a}},r.prototype._getLoadedTile=function(t){var e=this._tiles[t.key];return e&&e.hasData()?e:this._cache.getByKey(t.wrapped().key)},r.prototype.updateCacheSize=function(t){var e=(Math.ceil(t.width/this._source.tileSize)+1)*(Math.ceil(t.height/this._source.tileSize)+1),r=Math.floor(5*e),n=\"number\"==typeof this._maxTileCacheSize?Math.min(this._maxTileCacheSize,r):r;this._cache.setMaxSize(n)},r.prototype.handleWrapJump=function(t){var e=(t-(void 0===this._prevLng?t:this._prevLng))/360,r=Math.round(e);if(this._prevLng=t,r){var n={};for(var i in this._tiles){var a=this._tiles[i];a.tileID=a.tileID.unwrapTo(a.tileID.wrap+r),n[a.tileID.key]=a}for(var o in this._tiles=n,this._timers)clearTimeout(this._timers[o]),delete this._timers[o];for(var s in this._tiles){var l=this._tiles[s];this._setTileReloadTimer(s,l)}}},r.prototype.update=function(e){var n=this;if(this.transform=e,this._sourceLoaded&&!this._paused){var i;this.updateCacheSize(e),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used?this._source.tileID?i=e.getVisibleUnwrappedCoordinates(this._source.tileID).map((function(e){return new t.OverscaledTileID(e.canonical.z,e.wrap,e.canonical.z,e.canonical.x,e.canonical.y)})):(i=e.coveringTiles({tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled}),this._source.hasTile&&(i=i.filter((function(t){return n._source.hasTile(t)})))):i=[];var a=e.coveringZoomLevel(this._source),o=Math.max(a-r.maxOverzooming,this._source.minzoom),s=Math.max(a+r.maxUnderzooming,this._source.minzoom),l=this._updateRetainedTiles(i,a);if(It(this._source.type)){for(var c={},u={},f=0,h=Object.keys(l);fthis._source.maxzoom){var m=d.children(this._source.maxzoom)[0],v=this.getTile(m);if(v&&v.hasData()){n[m.key]=m;continue}}else{var y=d.children(this._source.maxzoom);if(n[y[0].key]&&n[y[1].key]&&n[y[2].key]&&n[y[3].key])continue}for(var x=g.wasRequested(),b=d.overscaledZ-1;b>=a;--b){var _=d.scaledTo(b);if(i[_.key])break;if(i[_.key]=!0,!(g=this.getTile(_))&&x&&(g=this._addTile(_)),g&&(n[_.key]=_,x=g.wasRequested(),g.hasData()))break}}}return n},r.prototype._updateLoadedParentTileCache=function(){for(var t in this._loadedParentTiles={},this._tiles){for(var e=[],r=void 0,n=this._tiles[t].tileID;n.overscaledZ>0;){if(n.key in this._loadedParentTiles){r=this._loadedParentTiles[n.key];break}e.push(n.key);var i=n.scaledTo(n.overscaledZ-1);if(r=this._getLoadedTile(i))break;n=i}for(var a=0,o=e;a0||(e.hasData()&&\"reloading\"!==e.state?this._cache.add(e.tileID,e,e.getExpiryTimeout()):(e.aborted=!0,this._abortTile(e),this._unloadTile(e))))},r.prototype.clearTiles=function(){for(var t in this._shouldReloadOnResume=!1,this._paused=!1,this._tiles)this._removeTile(t);this._cache.reset()},r.prototype.tilesIn=function(e,r,n){var i=this,a=[],o=this.transform;if(!o)return a;for(var s=n?o.getCameraQueryGeometry(e):e,l=e.map((function(t){return o.pointCoordinate(t)})),c=s.map((function(t){return o.pointCoordinate(t)})),u=this.getIds(),f=1/0,h=1/0,p=-1/0,d=-1/0,g=0,m=c;g=0&&v[1].y+m>=0){var y=l.map((function(t){return s.getTilePoint(t)})),x=c.map((function(t){return s.getTilePoint(t)}));a.push({tile:n,tileID:s,queryGeometry:y,cameraQueryGeometry:x,scale:g})}}},x=0;x=t.browser.now())return!0}return!1},r.prototype.setFeatureState=function(t,e,r){t=t||\"_geojsonTileLayer\",this._state.updateState(t,e,r)},r.prototype.removeFeatureState=function(t,e,r){t=t||\"_geojsonTileLayer\",this._state.removeFeatureState(t,e,r)},r.prototype.getFeatureState=function(t,e){return t=t||\"_geojsonTileLayer\",this._state.getState(t,e)},r.prototype.setDependencies=function(t,e,r){var n=this._tiles[t];n&&n.setDependencies(e,r)},r.prototype.reloadTilesForDependencies=function(t,e){for(var r in this._tiles){this._tiles[r].hasDependency(t,e)&&this._reloadTile(r,\"reloading\")}this._cache.filter((function(r){return!r.hasDependency(t,e)}))},r}(t.Evented);function Pt(t,e){var r=Math.abs(2*t.wrap)-+(t.wrap<0),n=Math.abs(2*e.wrap)-+(e.wrap<0);return t.overscaledZ-e.overscaledZ||n-r||e.canonical.y-t.canonical.y||e.canonical.x-t.canonical.x}function It(t){return\"raster\"===t||\"image\"===t||\"video\"===t}function Ot(){return new t.window.Worker(Zi.workerUrl)}Ct.maxOverzooming=10,Ct.maxUnderzooming=3;var zt=\"mapboxgl_preloaded_worker_pool\",Dt=function(){this.active={}};Dt.prototype.acquire=function(t){if(!this.workers)for(this.workers=[];this.workers.length0?(i-o)/s:0;return this.points[a].mult(1-l).add(this.points[r].mult(l))};var Kt=function(t,e,r){var n=this.boxCells=[],i=this.circleCells=[];this.xCellCount=Math.ceil(t/r),this.yCellCount=Math.ceil(e/r);for(var a=0;a=-e[0]&&r<=e[0]&&n>=-e[1]&&n<=e[1]}function ne(e,r,n,i,a,o,s,l){var c=i?e.textSizeData:e.iconSizeData,u=t.evaluateSizeForZoom(c,n.transform.zoom),f=[256/n.width*2+1,256/n.height*2+1],h=i?e.text.dynamicLayoutVertexArray:e.icon.dynamicLayoutVertexArray;h.clear();for(var p=e.lineVertexArray,d=i?e.text.placedSymbolArray:e.icon.placedSymbolArray,g=n.transform.width/n.transform.height,m=!1,v=0;vMath.abs(n.x-r.x)*i)return{useVertical:!0};return(e===t.WritingMode.vertical?r.yn.x)?{needsFlipping:!0}:null}function oe(e,r,n,i,a,o,s,l,c,u,f,h,p,d){var g,m=r/24,v=e.lineOffsetX*m,y=e.lineOffsetY*m;if(e.numGlyphs>1){var x=e.glyphStartIndex+e.numGlyphs,b=e.lineStartIndex,_=e.lineStartIndex+e.lineLength,w=ie(m,l,v,y,n,f,h,e,c,o,p);if(!w)return{notEnoughRoom:!0};var T=te(w.first.point,s).point,k=te(w.last.point,s).point;if(i&&!n){var A=ae(e.writingMode,T,k,d);if(A)return A}g=[w.first];for(var M=e.glyphStartIndex+1;M0?C.point:se(h,L,S,1,a),I=ae(e.writingMode,S,P,d);if(I)return I}var O=le(m*l.getoffsetX(e.glyphStartIndex),v,y,n,f,h,e.segment,e.lineStartIndex,e.lineStartIndex+e.lineLength,c,o,p);if(!O)return{notEnoughRoom:!0};g=[O]}for(var z=0,D=g;z0?1:-1,g=0;i&&(d*=-1,g=Math.PI),d<0&&(g+=Math.PI);for(var m=d>0?l+s:l+s+1,v=a,y=a,x=0,b=0,_=Math.abs(p),w=[];x+b<=_;){if((m+=d)=c)return null;if(y=v,w.push(v),void 0===(v=h[m])){var T=new t.Point(u.getx(m),u.gety(m)),k=te(T,f);if(k.signedDistanceFromCamera>0)v=h[m]=k.point;else{var A=m-d;v=se(0===x?o:new t.Point(u.getx(A),u.gety(A)),T,y,_-x+1,f)}}x+=b,b=y.dist(v)}var M=(_-x)/b,S=v.sub(y),E=S.mult(M)._add(y);E._add(S._unit()._perp()._mult(n*d));var L=g+Math.atan2(v.y-y.y,v.x-y.x);return w.push(E),{point:E,angle:L,path:w}}Kt.prototype.keysLength=function(){return this.boxKeys.length+this.circleKeys.length},Kt.prototype.insert=function(t,e,r,n,i){this._forEachCell(e,r,n,i,this._insertBoxCell,this.boxUid++),this.boxKeys.push(t),this.bboxes.push(e),this.bboxes.push(r),this.bboxes.push(n),this.bboxes.push(i)},Kt.prototype.insertCircle=function(t,e,r,n){this._forEachCell(e-n,r-n,e+n,r+n,this._insertCircleCell,this.circleUid++),this.circleKeys.push(t),this.circles.push(e),this.circles.push(r),this.circles.push(n)},Kt.prototype._insertBoxCell=function(t,e,r,n,i,a){this.boxCells[i].push(a)},Kt.prototype._insertCircleCell=function(t,e,r,n,i,a){this.circleCells[i].push(a)},Kt.prototype._query=function(t,e,r,n,i,a){if(r<0||t>this.width||n<0||e>this.height)return!i&&[];var o=[];if(t<=0&&e<=0&&this.width<=r&&this.height<=n){if(i)return!0;for(var s=0;s0:o},Kt.prototype._queryCircle=function(t,e,r,n,i){var a=t-r,o=t+r,s=e-r,l=e+r;if(o<0||a>this.width||l<0||s>this.height)return!n&&[];var c=[],u={hitTest:n,circle:{x:t,y:e,radius:r},seenUids:{box:{},circle:{}}};return this._forEachCell(a,s,o,l,this._queryCellCircle,c,u,i),n?c.length>0:c},Kt.prototype.query=function(t,e,r,n,i){return this._query(t,e,r,n,!1,i)},Kt.prototype.hitTest=function(t,e,r,n,i){return this._query(t,e,r,n,!0,i)},Kt.prototype.hitTestCircle=function(t,e,r,n){return this._queryCircle(t,e,r,!0,n)},Kt.prototype._queryCell=function(t,e,r,n,i,a,o,s){var l=o.seenUids,c=this.boxCells[i];if(null!==c)for(var u=this.bboxes,f=0,h=c;f=u[d+0]&&n>=u[d+1]&&(!s||s(this.boxKeys[p]))){if(o.hitTest)return a.push(!0),!0;a.push({key:this.boxKeys[p],x1:u[d],y1:u[d+1],x2:u[d+2],y2:u[d+3]})}}}var g=this.circleCells[i];if(null!==g)for(var m=this.circles,v=0,y=g;vo*o+s*s},Kt.prototype._circleAndRectCollide=function(t,e,r,n,i,a,o){var s=(a-n)/2,l=Math.abs(t-(n+s));if(l>s+r)return!1;var c=(o-i)/2,u=Math.abs(e-(i+c));if(u>c+r)return!1;if(l<=s||u<=c)return!0;var f=l-s,h=u-c;return f*f+h*h<=r*r};var ce=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function ue(t,e){for(var r=0;r=1;P--)C.push(E.path[P]);for(var I=1;I0){for(var R=C[0].clone(),F=C[0].clone(),B=1;B=A.x&&F.x<=M.x&&R.y>=A.y&&F.y<=M.y?[C]:F.xM.x||F.yM.y?[]:t.clipLine([C],A.x,A.y,M.x,M.y)}for(var N=0,j=D;N=this.screenRightBoundary||n<100||e>this.screenBottomBoundary},he.prototype.isInsideGrid=function(t,e,r,n){return r>=0&&t=0&&e0)return this.prevPlacement&&this.prevPlacement.variableOffsets[f.crossTileID]&&this.prevPlacement.placements[f.crossTileID]&&this.prevPlacement.placements[f.crossTileID].text&&(g=this.prevPlacement.variableOffsets[f.crossTileID].anchor),this.variableOffsets[f.crossTileID]={textOffset:m,width:r,height:n,anchor:t,textBoxScale:i,prevAnchor:g},this.markUsedJustification(h,t,f,p),h.allowVerticalPlacement&&(this.markUsedOrientation(h,p,f),this.placedOrientations[f.crossTileID]=p),{shift:v,placedGlyphBoxes:y}},we.prototype.placeLayerBucketPart=function(e,r,n){var i=this,a=e.parameters,o=a.bucket,s=a.layout,l=a.posMatrix,c=a.textLabelPlaneMatrix,u=a.labelToScreenMatrix,f=a.textPixelRatio,h=a.holdingForFade,p=a.collisionBoxArray,d=a.partiallyEvaluatedTextSize,g=a.collisionGroup,m=s.get(\"text-optional\"),v=s.get(\"icon-optional\"),y=s.get(\"text-allow-overlap\"),x=s.get(\"icon-allow-overlap\"),b=\"map\"===s.get(\"text-rotation-alignment\"),_=\"map\"===s.get(\"text-pitch-alignment\"),w=\"none\"!==s.get(\"icon-text-fit\"),T=\"viewport-y\"===s.get(\"symbol-z-order\"),k=y&&(x||!o.hasIconData()||v),A=x&&(y||!o.hasTextData()||m);!o.collisionArrays&&p&&o.deserializeCollisionBoxes(p);var M=function(e,a){if(!r[e.crossTileID])if(h)i.placements[e.crossTileID]=new me(!1,!1,!1);else{var p,T=!1,M=!1,S=!0,E=null,L={box:null,offscreen:null},C={box:null,offscreen:null},P=null,I=null,O=0,z=0,D=0;a.textFeatureIndex?O=a.textFeatureIndex:e.useRuntimeCollisionCircles&&(O=e.featureIndex),a.verticalTextFeatureIndex&&(z=a.verticalTextFeatureIndex);var R=a.textBox;if(R){var F=function(r){var n=t.WritingMode.horizontal;if(o.allowVerticalPlacement&&!r&&i.prevPlacement){var a=i.prevPlacement.placedOrientations[e.crossTileID];a&&(i.placedOrientations[e.crossTileID]=a,n=a,i.markUsedOrientation(o,n,e))}return n},B=function(r,n){if(o.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&a.verticalTextBox)for(var i=0,s=o.writingModes;i0&&(N=N.filter((function(t){return t!==j.anchor}))).unshift(j.anchor)}var U=function(t,r,n){for(var a=t.x2-t.x1,s=t.y2-t.y1,c=e.textBoxScale,u=w&&!x?r:null,h={box:[],offscreen:!1},p=y?2*N.length:N.length,d=0;d=N.length,k=i.attemptAnchorPlacement(m,t,a,s,c,b,_,f,l,g,v,e,o,n,u);if(k&&(h=k.placedGlyphBoxes)&&h.box&&h.box.length){T=!0,E=k.shift;break}}return h};B((function(){return U(R,a.iconBox,t.WritingMode.horizontal)}),(function(){var r=a.verticalTextBox,n=L&&L.box&&L.box.length;return o.allowVerticalPlacement&&!n&&e.numVerticalGlyphVertices>0&&r?U(r,a.verticalIconBox,t.WritingMode.vertical):{box:null,offscreen:null}})),L&&(T=L.box,S=L.offscreen);var V=F(L&&L.box);if(!T&&i.prevPlacement){var H=i.prevPlacement.variableOffsets[e.crossTileID];H&&(i.variableOffsets[e.crossTileID]=H,i.markUsedJustification(o,H.anchor,e,V))}}else{var q=function(t,r){var n=i.collisionIndex.placeCollisionBox(t,y,f,l,g.predicate);return n&&n.box&&n.box.length&&(i.markUsedOrientation(o,r,e),i.placedOrientations[e.crossTileID]=r),n};B((function(){return q(R,t.WritingMode.horizontal)}),(function(){var r=a.verticalTextBox;return o.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&r?q(r,t.WritingMode.vertical):{box:null,offscreen:null}})),F(L&&L.box&&L.box.length)}}if(T=(p=L)&&p.box&&p.box.length>0,S=p&&p.offscreen,e.useRuntimeCollisionCircles){var G=o.text.placedSymbolArray.get(e.centerJustifiedTextSymbolIndex),Y=t.evaluateSizeForFeature(o.textSizeData,d,G),W=s.get(\"text-padding\"),X=e.collisionCircleDiameter;P=i.collisionIndex.placeCollisionCircles(y,G,o.lineVertexArray,o.glyphOffsetArray,Y,l,c,u,n,_,g.predicate,X,W),T=y||P.circles.length>0&&!P.collisionDetected,S=S&&P.offscreen}if(a.iconFeatureIndex&&(D=a.iconFeatureIndex),a.iconBox){var Z=function(t){var e=w&&E?_e(t,E.x,E.y,b,_,i.transform.angle):t;return i.collisionIndex.placeCollisionBox(e,x,f,l,g.predicate)};M=C&&C.box&&C.box.length&&a.verticalIconBox?(I=Z(a.verticalIconBox)).box.length>0:(I=Z(a.iconBox)).box.length>0,S=S&&I.offscreen}var J=m||0===e.numHorizontalGlyphVertices&&0===e.numVerticalGlyphVertices,K=v||0===e.numIconVertices;if(J||K?K?J||(M=M&&T):T=M&&T:M=T=M&&T,T&&p&&p.box&&(C&&C.box&&z?i.collisionIndex.insertCollisionBox(p.box,s.get(\"text-ignore-placement\"),o.bucketInstanceId,z,g.ID):i.collisionIndex.insertCollisionBox(p.box,s.get(\"text-ignore-placement\"),o.bucketInstanceId,O,g.ID)),M&&I&&i.collisionIndex.insertCollisionBox(I.box,s.get(\"icon-ignore-placement\"),o.bucketInstanceId,D,g.ID),P&&(T&&i.collisionIndex.insertCollisionCircles(P.circles,s.get(\"text-ignore-placement\"),o.bucketInstanceId,O,g.ID),n)){var Q=o.bucketInstanceId,$=i.collisionCircleArrays[Q];void 0===$&&($=i.collisionCircleArrays[Q]=new ve);for(var tt=0;tt=0;--E){var L=S[E];M(o.symbolInstances.get(L),o.collisionArrays[L])}else for(var C=e.symbolInstanceStart;C=0&&(e.text.placedSymbolArray.get(c).crossTileID=a>=0&&c!==a?0:n.crossTileID)}},we.prototype.markUsedOrientation=function(e,r,n){for(var i=r===t.WritingMode.horizontal||r===t.WritingMode.horizontalOnly?r:0,a=r===t.WritingMode.vertical?r:0,o=0,s=[n.leftJustifiedTextSymbolIndex,n.centerJustifiedTextSymbolIndex,n.rightJustifiedTextSymbolIndex];o0||l>0,x=a.numIconVertices>0,b=i.placedOrientations[a.crossTileID],_=b===t.WritingMode.vertical,w=b===t.WritingMode.horizontal||b===t.WritingMode.horizontalOnly;if(y){var T=Pe(v.text),k=_?Ie:T;d(e.text,s,k);var A=w?Ie:T;d(e.text,l,A);var M=v.text.isHidden();[a.rightJustifiedTextSymbolIndex,a.centerJustifiedTextSymbolIndex,a.leftJustifiedTextSymbolIndex].forEach((function(t){t>=0&&(e.text.placedSymbolArray.get(t).hidden=M||_?1:0)})),a.verticalPlacedTextSymbolIndex>=0&&(e.text.placedSymbolArray.get(a.verticalPlacedTextSymbolIndex).hidden=M||w?1:0);var S=i.variableOffsets[a.crossTileID];S&&i.markUsedJustification(e,S.anchor,a,b);var E=i.placedOrientations[a.crossTileID];E&&(i.markUsedJustification(e,\"left\",a,E),i.markUsedOrientation(e,E,a))}if(x){var L=Pe(v.icon),C=!(h&&a.verticalPlacedIconSymbolIndex&&_);if(a.placedIconSymbolIndex>=0){var P=C?L:Ie;d(e.icon,a.numIconVertices,P),e.icon.placedSymbolArray.get(a.placedIconSymbolIndex).hidden=v.icon.isHidden()}if(a.verticalPlacedIconSymbolIndex>=0){var I=C?Ie:L;d(e.icon,a.numVerticalIconVertices,I),e.icon.placedSymbolArray.get(a.verticalPlacedIconSymbolIndex).hidden=v.icon.isHidden()}}if(e.hasIconCollisionBoxData()||e.hasTextCollisionBoxData()){var O=e.collisionArrays[n];if(O){var z=new t.Point(0,0);if(O.textBox||O.verticalTextBox){var D=!0;if(c){var R=i.variableOffsets[g];R?(z=be(R.anchor,R.width,R.height,R.textOffset,R.textBoxScale),u&&z._rotate(f?i.transform.angle:-i.transform.angle)):D=!1}O.textBox&&Te(e.textCollisionBox.collisionVertexArray,v.text.placed,!D||_,z.x,z.y),O.verticalTextBox&&Te(e.textCollisionBox.collisionVertexArray,v.text.placed,!D||w,z.x,z.y)}var F=Boolean(!w&&O.verticalIconBox);O.iconBox&&Te(e.iconCollisionBox.collisionVertexArray,v.icon.placed,F,h?z.x:0,h?z.y:0),O.verticalIconBox&&Te(e.iconCollisionBox.collisionVertexArray,v.icon.placed,!F,h?z.x:0,h?z.y:0)}}},m=0;mt},we.prototype.setStale=function(){this.stale=!0};var ke=Math.pow(2,25),Ae=Math.pow(2,24),Me=Math.pow(2,17),Se=Math.pow(2,16),Ee=Math.pow(2,9),Le=Math.pow(2,8),Ce=Math.pow(2,1);function Pe(t){if(0===t.opacity&&!t.placed)return 0;if(1===t.opacity&&t.placed)return 4294967295;var e=t.placed?1:0,r=Math.floor(127*t.opacity);return r*ke+e*Ae+r*Me+e*Se+r*Ee+e*Le+r*Ce+e}var Ie=0,Oe=function(t){this._sortAcrossTiles=\"viewport-y\"!==t.layout.get(\"symbol-z-order\")&&void 0!==t.layout.get(\"symbol-sort-key\").constantOr(1),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[]};Oe.prototype.continuePlacement=function(t,e,r,n,i){for(var a=this._bucketParts;this._currentTileIndex2};this._currentPlacementIndex>=0;){var s=r[e[this._currentPlacementIndex]],l=this.placement.collisionIndex.transform.zoom;if(\"symbol\"===s.type&&(!s.minzoom||s.minzoom<=l)&&(!s.maxzoom||s.maxzoom>l)){if(this._inProgressLayer||(this._inProgressLayer=new Oe(s)),this._inProgressLayer.continuePlacement(n[s.source],this.placement,this._showCollisionBoxes,s,o))return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0},ze.prototype.commit=function(t){return this.placement.commit(t),this.placement};var De=512/t.EXTENT/2,Re=function(t,e,r){this.tileID=t,this.indexedSymbolInstances={},this.bucketInstanceId=r;for(var n=0;nt.overscaledZ)for(var s in o){var l=o[s];l.tileID.isChildOf(t)&&l.findMatches(e.symbolInstances,t,i)}else{var c=o[t.scaledTo(Number(a)).key];c&&c.findMatches(e.symbolInstances,t,i)}}for(var u=0;u1?\"@2x\":\"\",l=t.getJSON(r.transformRequest(r.normalizeSpriteURL(e,s,\".json\"),t.ResourceType.SpriteJSON),(function(t,e){l=null,o||(o=t,i=e,u())})),c=t.getImage(r.transformRequest(r.normalizeSpriteURL(e,s,\".png\"),t.ResourceType.SpriteImage),(function(t,e){c=null,o||(o=t,a=e,u())}));function u(){if(o)n(o);else if(i&&a){var e=t.browser.getImageData(a),r={};for(var s in i){var l=i[s],c=l.width,u=l.height,f=l.x,h=l.y,p=l.sdf,d=l.pixelRatio,g=l.stretchX,m=l.stretchY,v=l.content,y=new t.RGBAImage({width:c,height:u});t.RGBAImage.copy(e,y,{x:f,y:h},{x:0,y:0},{width:c,height:u}),r[s]={data:y,pixelRatio:d,sdf:p,stretchX:g,stretchY:m,content:v}}n(null,r)}}return{cancel:function(){l&&(l.cancel(),l=null),c&&(c.cancel(),c=null)}}}(e,this.map._requestManager,(function(e,n){if(r._spriteRequest=null,e)r.fire(new t.ErrorEvent(e));else if(n)for(var i in n)r.imageManager.addImage(i,n[i]);r.imageManager.setLoaded(!0),r._availableImages=r.imageManager.listImages(),r.dispatcher.broadcast(\"setImages\",r._availableImages),r.fire(new t.Event(\"data\",{dataType:\"style\"}))}))},r.prototype._validateLayer=function(e){var r=this.sourceCaches[e.source];if(r){var n=e.sourceLayer;if(n){var i=r.getSource();(\"geojson\"===i.type||i.vectorLayerIds&&-1===i.vectorLayerIds.indexOf(n))&&this.fire(new t.ErrorEvent(new Error('Source layer \"'+n+'\" does not exist on source \"'+i.id+'\" as specified by style layer \"'+e.id+'\"')))}}},r.prototype.loaded=function(){if(!this._loaded)return!1;if(Object.keys(this._updatedSources).length)return!1;for(var t in this.sourceCaches)if(!this.sourceCaches[t].loaded())return!1;return!!this.imageManager.isLoaded()},r.prototype._serializeLayers=function(t){for(var e=[],r=0,n=t;r0)throw new Error(\"Unimplemented: \"+i.map((function(t){return t.command})).join(\", \")+\".\");return n.forEach((function(t){\"setTransition\"!==t.command&&r[t.command].apply(r,t.args)})),this.stylesheet=e,!0},r.prototype.addImage=function(e,r){if(this.getImage(e))return this.fire(new t.ErrorEvent(new Error(\"An image with this name already exists.\")));this.imageManager.addImage(e,r),this._availableImages=this.imageManager.listImages(),this._changedImages[e]=!0,this._changed=!0,this.fire(new t.Event(\"data\",{dataType:\"style\"}))},r.prototype.updateImage=function(t,e){this.imageManager.updateImage(t,e)},r.prototype.getImage=function(t){return this.imageManager.getImage(t)},r.prototype.removeImage=function(e){if(!this.getImage(e))return this.fire(new t.ErrorEvent(new Error(\"No image with this name exists.\")));this.imageManager.removeImage(e),this._availableImages=this.imageManager.listImages(),this._changedImages[e]=!0,this._changed=!0,this.fire(new t.Event(\"data\",{dataType:\"style\"}))},r.prototype.listImages=function(){return this._checkLoaded(),this.imageManager.listImages()},r.prototype.addSource=function(e,r,n){var i=this;if(void 0===n&&(n={}),this._checkLoaded(),void 0!==this.sourceCaches[e])throw new Error(\"There is already a source with this ID\");if(!r.type)throw new Error(\"The type property must be defined, but the only the following properties were given: \"+Object.keys(r).join(\", \")+\".\");if(!([\"vector\",\"raster\",\"geojson\",\"video\",\"image\"].indexOf(r.type)>=0)||!this._validate(t.validateStyle.source,\"sources.\"+e,r,null,n)){this.map&&this.map._collectResourceTiming&&(r.collectResourceTiming=!0);var a=this.sourceCaches[e]=new Ct(e,r,this.dispatcher);a.style=this,a.setEventedParent(this,(function(){return{isSourceLoaded:i.loaded(),source:a.serialize(),sourceId:e}})),a.onAdd(this.map),this._changed=!0}},r.prototype.removeSource=function(e){if(this._checkLoaded(),void 0===this.sourceCaches[e])throw new Error(\"There is no source with this ID\");for(var r in this._layers)if(this._layers[r].source===e)return this.fire(new t.ErrorEvent(new Error('Source \"'+e+'\" cannot be removed while layer \"'+r+'\" is using it.')));var n=this.sourceCaches[e];delete this.sourceCaches[e],delete this._updatedSources[e],n.fire(new t.Event(\"data\",{sourceDataType:\"metadata\",dataType:\"source\",sourceId:e})),n.setEventedParent(null),n.clearTiles(),n.onRemove&&n.onRemove(this.map),this._changed=!0},r.prototype.setGeoJSONSourceData=function(t,e){this._checkLoaded(),this.sourceCaches[t].getSource().setData(e),this._changed=!0},r.prototype.getSource=function(t){return this.sourceCaches[t]&&this.sourceCaches[t].getSource()},r.prototype.addLayer=function(e,r,n){void 0===n&&(n={}),this._checkLoaded();var i=e.id;if(this.getLayer(i))this.fire(new t.ErrorEvent(new Error('Layer with id \"'+i+'\" already exists on this map')));else{var a;if(\"custom\"===e.type){if(je(this,t.validateCustomStyleLayer(e)))return;a=t.createStyleLayer(e)}else{if(\"object\"==typeof e.source&&(this.addSource(i,e.source),e=t.clone$1(e),e=t.extend(e,{source:i})),this._validate(t.validateStyle.layer,\"layers.\"+i,e,{arrayIndex:-1},n))return;a=t.createStyleLayer(e),this._validateLayer(a),a.setEventedParent(this,{layer:{id:i}}),this._serializedLayers[a.id]=a.serialize()}var o=r?this._order.indexOf(r):this._order.length;if(r&&-1===o)this.fire(new t.ErrorEvent(new Error('Layer with id \"'+r+'\" does not exist on this map.')));else{if(this._order.splice(o,0,i),this._layerOrderChanged=!0,this._layers[i]=a,this._removedLayers[i]&&a.source&&\"custom\"!==a.type){var s=this._removedLayers[i];delete this._removedLayers[i],s.type!==a.type?this._updatedSources[a.source]=\"clear\":(this._updatedSources[a.source]=\"reload\",this.sourceCaches[a.source].pause())}this._updateLayer(a),a.onAdd&&a.onAdd(this.map)}}},r.prototype.moveLayer=function(e,r){if(this._checkLoaded(),this._changed=!0,this._layers[e]){if(e!==r){var n=this._order.indexOf(e);this._order.splice(n,1);var i=r?this._order.indexOf(r):this._order.length;r&&-1===i?this.fire(new t.ErrorEvent(new Error('Layer with id \"'+r+'\" does not exist on this map.'))):(this._order.splice(i,0,e),this._layerOrderChanged=!0)}}else this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be moved.\")))},r.prototype.removeLayer=function(e){this._checkLoaded();var r=this._layers[e];if(r){r.setEventedParent(null);var n=this._order.indexOf(e);this._order.splice(n,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[e]=r,delete this._layers[e],delete this._serializedLayers[e],delete this._updatedLayers[e],delete this._updatedPaintProps[e],r.onRemove&&r.onRemove(this.map)}else this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be removed.\")))},r.prototype.getLayer=function(t){return this._layers[t]},r.prototype.hasLayer=function(t){return t in this._layers},r.prototype.setLayerZoomRange=function(e,r,n){this._checkLoaded();var i=this.getLayer(e);i?i.minzoom===r&&i.maxzoom===n||(null!=r&&(i.minzoom=r),null!=n&&(i.maxzoom=n),this._updateLayer(i)):this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot have zoom extent.\")))},r.prototype.setFilter=function(e,r,n){void 0===n&&(n={}),this._checkLoaded();var i=this.getLayer(e);if(i){if(!t.deepEqual(i.filter,r))return null==r?(i.filter=void 0,void this._updateLayer(i)):void(this._validate(t.validateStyle.filter,\"layers.\"+i.id+\".filter\",r,null,n)||(i.filter=t.clone$1(r),this._updateLayer(i)))}else this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be filtered.\")))},r.prototype.getFilter=function(e){return t.clone$1(this.getLayer(e).filter)},r.prototype.setLayoutProperty=function(e,r,n,i){void 0===i&&(i={}),this._checkLoaded();var a=this.getLayer(e);a?t.deepEqual(a.getLayoutProperty(r),n)||(a.setLayoutProperty(r,n,i),this._updateLayer(a)):this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be styled.\")))},r.prototype.getLayoutProperty=function(e,r){var n=this.getLayer(e);if(n)return n.getLayoutProperty(r);this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style.\")))},r.prototype.setPaintProperty=function(e,r,n,i){void 0===i&&(i={}),this._checkLoaded();var a=this.getLayer(e);a?t.deepEqual(a.getPaintProperty(r),n)||(a.setPaintProperty(r,n,i)&&this._updateLayer(a),this._changed=!0,this._updatedPaintProps[e]=!0):this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be styled.\")))},r.prototype.getPaintProperty=function(t,e){return this.getLayer(t).getPaintProperty(e)},r.prototype.setFeatureState=function(e,r){this._checkLoaded();var n=e.source,i=e.sourceLayer,a=this.sourceCaches[n];if(void 0!==a){var o=a.getSource().type;\"geojson\"===o&&i?this.fire(new t.ErrorEvent(new Error(\"GeoJSON sources cannot have a sourceLayer parameter.\"))):\"vector\"!==o||i?(void 0===e.id&&this.fire(new t.ErrorEvent(new Error(\"The feature id parameter must be provided.\"))),a.setFeatureState(i,e.id,r)):this.fire(new t.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")))}else this.fire(new t.ErrorEvent(new Error(\"The source '\"+n+\"' does not exist in the map's style.\")))},r.prototype.removeFeatureState=function(e,r){this._checkLoaded();var n=e.source,i=this.sourceCaches[n];if(void 0!==i){var a=i.getSource().type,o=\"vector\"===a?e.sourceLayer:void 0;\"vector\"!==a||o?r&&\"string\"!=typeof e.id&&\"number\"!=typeof e.id?this.fire(new t.ErrorEvent(new Error(\"A feature id is required to remove its specific state property.\"))):i.removeFeatureState(o,e.id,r):this.fire(new t.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")))}else this.fire(new t.ErrorEvent(new Error(\"The source '\"+n+\"' does not exist in the map's style.\")))},r.prototype.getFeatureState=function(e){this._checkLoaded();var r=e.source,n=e.sourceLayer,i=this.sourceCaches[r];if(void 0!==i){if(\"vector\"!==i.getSource().type||n)return void 0===e.id&&this.fire(new t.ErrorEvent(new Error(\"The feature id parameter must be provided.\"))),i.getFeatureState(n,e.id);this.fire(new t.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")))}else this.fire(new t.ErrorEvent(new Error(\"The source '\"+r+\"' does not exist in the map's style.\")))},r.prototype.getTransition=function(){return t.extend({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)},r.prototype.serialize=function(){return t.filterObject({version:this.stylesheet.version,name:this.stylesheet.name,metadata:this.stylesheet.metadata,light:this.stylesheet.light,center:this.stylesheet.center,zoom:this.stylesheet.zoom,bearing:this.stylesheet.bearing,pitch:this.stylesheet.pitch,sprite:this.stylesheet.sprite,glyphs:this.stylesheet.glyphs,transition:this.stylesheet.transition,sources:t.mapObject(this.sourceCaches,(function(t){return t.serialize()})),layers:this._serializeLayers(this._order)},(function(t){return void 0!==t}))},r.prototype._updateLayer=function(t){this._updatedLayers[t.id]=!0,t.source&&!this._updatedSources[t.source]&&\"raster\"!==this.sourceCaches[t.source].getSource().type&&(this._updatedSources[t.source]=\"reload\",this.sourceCaches[t.source].pause()),this._changed=!0},r.prototype._flattenAndSortRenderedFeatures=function(t){for(var e=this,r=function(t){return\"fill-extrusion\"===e._layers[t].type},n={},i=[],a=this._order.length-1;a>=0;a--){var o=this._order[a];if(r(o)){n[o]=a;for(var s=0,l=t;s=0;d--){var g=this._order[d];if(r(g))for(var m=i.length-1;m>=0;m--){var v=i[m].feature;if(n[v.layer.id] 0.5) {gl_FragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {gl_FragColor*=.1;}}\",\"attribute vec2 a_pos;attribute vec2 a_anchor_pos;attribute vec2 a_extrude;attribute vec2 a_placed;attribute vec2 a_shift;uniform mat4 u_matrix;uniform vec2 u_extrude_scale;uniform float u_camera_to_center_distance;varying float v_placed;varying float v_notUsed;void main() {vec4 projectedPoint=u_matrix*vec4(a_anchor_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);gl_Position=u_matrix*vec4(a_pos,0.0,1.0);gl_Position.xy+=(a_extrude+a_shift)*u_extrude_scale*gl_Position.w*collision_perspective_ratio;v_placed=a_placed.x;v_notUsed=a_placed.y;}\"),tr=yr(\"varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;void main() {float alpha=0.5*min(v_perspective_ratio,1.0);float stroke_radius=0.9*max(v_perspective_ratio,1.0);float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);gl_FragColor=color*alpha*opacity_t;}\",\"attribute vec2 a_pos;attribute float a_radius;attribute vec2 a_flags;uniform mat4 u_matrix;uniform mat4 u_inv_matrix;uniform vec2 u_viewport_size;uniform float u_camera_to_center_distance;varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;vec3 toTilePosition(vec2 screenPos) {vec4 rayStart=u_inv_matrix*vec4(screenPos,-1.0,1.0);vec4 rayEnd =u_inv_matrix*vec4(screenPos, 1.0,1.0);rayStart.xyz/=rayStart.w;rayEnd.xyz /=rayEnd.w;highp float t=(0.0-rayStart.z)/(rayEnd.z-rayStart.z);return mix(rayStart.xyz,rayEnd.xyz,t);}void main() {vec2 quadCenterPos=a_pos;float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(mix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;vec3 tilePos=toTilePosition(quadCenterPos);vec4 clipPos=u_matrix*vec4(tilePos,1.0);highp float camera_to_anchor_distance=clipPos.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_perspective_ratio=collision_perspective_ratio;v_collision=collision;gl_Position=vec4(clipPos.xyz/clipPos.w,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}\"),er=yr(\"uniform highp vec4 u_color;uniform sampler2D u_overlay;varying vec2 v_uv;void main() {vec4 overlay_color=texture2D(u_overlay,v_uv);gl_FragColor=mix(u_color,overlay_color,overlay_color.a);}\",\"attribute vec2 a_pos;varying vec2 v_uv;uniform mat4 u_matrix;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=u_matrix*vec4(a_pos*u_overlay_scale,0,1);}\"),rr=yr(\"#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float opacity\\ngl_FragColor=color*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float opacity\\ngl_Position=u_matrix*vec4(a_pos,0,1);}\"),nr=yr(\"varying vec2 v_pos;\\n#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 outline_color\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=outline_color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;uniform vec2 u_world;varying vec2 v_pos;\\n#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 outline_color\\n#pragma mapbox: initialize lowp float opacity\\ngl_Position=u_matrix*vec4(a_pos,0,1);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}\"),ir=yr(\"uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=mix(color1,color2,u_fade)*alpha*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;gl_Position=u_matrix*vec4(a_pos,0,1);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}\"),ar=yr(\"uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_fade)*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);}\"),or=yr(\"varying vec4 v_color;void main() {gl_FragColor=v_color;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec4 v_color;\\n#pragma mapbox: define highp float base\\n#pragma mapbox: define highp float height\\n#pragma mapbox: define highp vec4 color\\nvoid main() {\\n#pragma mapbox: initialize highp float base\\n#pragma mapbox: initialize highp float height\\n#pragma mapbox: initialize highp vec4 color\\nvec3 normal=a_normal_ed.xyz;base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);gl_Position=u_matrix*vec4(a_pos,t > 0.0 ? height : base,1);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal/16384.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}\"),sr=yr(\"uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float base\\n#pragma mapbox: initialize lowp float height\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);gl_FragColor=mixedColor*v_lighting;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float base\\n#pragma mapbox: initialize lowp float height\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);float z=t > 0.0 ? height : base;gl_Position=u_matrix*vec4(a_pos,z,1);vec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0\\n? a_pos\\n: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;}\"),lr=yr(\"#ifdef GL_ES\\nprecision highp float;\\n#endif\\nuniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform float u_maxzoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);float exaggeration=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;vec2 deriv=vec2((c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))/ pow(2.0,(u_zoom-u_maxzoom)*exaggeration+19.2562-u_zoom);gl_FragColor=clamp(vec4(deriv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}\"),cr=yr(\"uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent;\\n#define PI 3.141592653589793\\nvoid main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;}\"),ur=yr(\"uniform lowp float u_device_pixel_ratio;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);gl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_linesofar;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}\"),fr=yr(\"uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp float v_lineprogress;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture2D(u_image,vec2(v_lineprogress,0.5));gl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define MAX_LINE_DISTANCE 32767.0\\n#define scale 0.015873016\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_lineprogress;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_lineprogress=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0/MAX_LINE_DISTANCE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}\"),hr=yr(\"uniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture2D(u_image,pos_a),texture2D(u_image,pos_b),u_fade);gl_FragColor=color*alpha*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\n#define LINE_DISTANCE_SCALE 2.0\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}\"),pr=yr(\"uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform float u_sdfgamma;uniform float u_mix;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture2D(u_image,v_tex_a).a;float sdfdist_b=texture2D(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);alpha*=smoothstep(0.5-u_sdfgamma/floorwidth,0.5+u_sdfgamma/floorwidth,sdfdist);gl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\n#define LINE_DISTANCE_SCALE 2.0\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_patternscale_a;uniform float u_tex_y_a;uniform vec2 u_patternscale_b;uniform float u_tex_y_b;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_tex_a=vec2(a_linesofar*u_patternscale_a.x/floorwidth,normal.y*u_patternscale_a.y+u_tex_y_a);v_tex_b=vec2(a_linesofar*u_patternscale_b.x/floorwidth,normal.y*u_patternscale_b.y+u_tex_y_b);v_width2=vec2(outset,inset);}\"),dr=yr(\"uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);gl_FragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos0=(((a_texture_pos/8192.0)-0.5)/u_buffer_scale )+0.5;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}\"),gr=yr(\"uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity;\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\nlowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;varying vec2 v_tex;varying float v_fade_opacity;\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0),0.0,1.0);v_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;v_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));}\"),mr=yr(\"#define SDF_PX 8.0\\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nfloat EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;varying vec2 v_data0;varying vec3 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity);}\"),vr=yr(\"#define SDF_PX 8.0\\n#define SDF 1.0\\n#define ICON 0.0\\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nfloat fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\nreturn;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;varying vec4 v_data0;varying vec4 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}\");function yr(t,e){var r=/#pragma mapbox: ([\\w]+) ([\\w]+) ([\\w]+) ([\\w]+)/g,n={};return{fragmentSource:t=t.replace(r,(function(t,e,r,i,a){return n[a]=!0,\"define\"===e?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\nvarying \"+r+\" \"+i+\" \"+a+\";\\n#else\\nuniform \"+r+\" \"+i+\" u_\"+a+\";\\n#endif\\n\":\"\\n#ifdef HAS_UNIFORM_u_\"+a+\"\\n \"+r+\" \"+i+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\"})),vertexSource:e=e.replace(r,(function(t,e,r,i,a){var o=\"float\"===i?\"vec2\":\"vec4\",s=a.match(/color/)?\"color\":o;return n[a]?\"define\"===e?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\nuniform lowp float u_\"+a+\"_t;\\nattribute \"+r+\" \"+o+\" a_\"+a+\";\\nvarying \"+r+\" \"+i+\" \"+a+\";\\n#else\\nuniform \"+r+\" \"+i+\" u_\"+a+\";\\n#endif\\n\":\"vec4\"===s?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\n \"+a+\" = a_\"+a+\";\\n#else\\n \"+r+\" \"+i+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\":\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\n \"+a+\" = unpack_mix_\"+s+\"(a_\"+a+\", u_\"+a+\"_t);\\n#else\\n \"+r+\" \"+i+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\":\"define\"===e?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\nuniform lowp float u_\"+a+\"_t;\\nattribute \"+r+\" \"+o+\" a_\"+a+\";\\n#else\\nuniform \"+r+\" \"+i+\" u_\"+a+\";\\n#endif\\n\":\"vec4\"===s?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\n \"+r+\" \"+i+\" \"+a+\" = a_\"+a+\";\\n#else\\n \"+r+\" \"+i+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\":\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\n \"+r+\" \"+i+\" \"+a+\" = unpack_mix_\"+s+\"(a_\"+a+\", u_\"+a+\"_t);\\n#else\\n \"+r+\" \"+i+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\"}))}}var xr=Object.freeze({__proto__:null,prelude:Ye,background:We,backgroundPattern:Xe,circle:Ze,clippingMask:Je,heatmap:Ke,heatmapTexture:Qe,collisionBox:$e,collisionCircle:tr,debug:er,fill:rr,fillOutline:nr,fillOutlinePattern:ir,fillPattern:ar,fillExtrusion:or,fillExtrusionPattern:sr,hillshadePrepare:lr,hillshade:cr,line:ur,lineGradient:fr,linePattern:hr,lineSDF:pr,raster:dr,symbolIcon:gr,symbolSDF:mr,symbolTextAndIcon:vr}),br=function(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null};br.prototype.bind=function(t,e,r,n,i,a,o,s){this.context=t;for(var l=this.boundPaintVertexBuffers.length!==n.length,c=0;!l&&c>16,s>>16],u_pixel_coord_lower:[65535&o,65535&s]}}_r.prototype.draw=function(t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g){var m,v=t.gl;if(!this.failedToCreate){for(var y in t.program.set(this.program),t.setDepthMode(r),t.setStencilMode(n),t.setColorMode(i),t.setCullFace(a),this.fixedUniforms)this.fixedUniforms[y].set(o[y]);p&&p.setUniforms(t,this.binderUniforms,f,{zoom:h});for(var x=(m={},m[v.LINES]=2,m[v.TRIANGLES]=3,m[v.LINE_STRIP]=1,m)[e],b=0,_=u.get();b<_.length;b+=1){var w=_[b],T=w.vaos||(w.vaos={});(T[s]||(T[s]=new br)).bind(t,this,l,p?p.getPaintVertexBuffers():[],c,w.vertexOffset,d,g),v.drawElements(e,w.primitiveLength*x,v.UNSIGNED_SHORT,w.primitiveOffset*x*2)}}};var Tr=function(e,r,n,i){var a=r.style.light,o=a.properties.get(\"position\"),s=[o.x,o.y,o.z],l=t.create$1();\"viewport\"===a.properties.get(\"anchor\")&&t.fromRotation(l,-r.transform.angle),t.transformMat3(s,s,l);var c=a.properties.get(\"color\");return{u_matrix:e,u_lightpos:s,u_lightintensity:a.properties.get(\"intensity\"),u_lightcolor:[c.r,c.g,c.b],u_vertical_gradient:+n,u_opacity:i}},kr=function(e,r,n,i,a,o,s){return t.extend(Tr(e,r,n,i),wr(o,r,s),{u_height_factor:-Math.pow(2,a.overscaledZ)/s.tileSize/8})},Ar=function(t){return{u_matrix:t}},Mr=function(e,r,n,i){return t.extend(Ar(e),wr(n,r,i))},Sr=function(t,e){return{u_matrix:t,u_world:e}},Er=function(e,r,n,i,a){return t.extend(Mr(e,r,n,i),{u_world:a})},Lr=function(e,r,n,i){var a,o,s=e.transform;if(\"map\"===i.paint.get(\"circle-pitch-alignment\")){var l=pe(n,1,s.zoom);a=!0,o=[l,l]}else a=!1,o=s.pixelsToGLUnits;return{u_camera_to_center_distance:s.cameraToCenterDistance,u_scale_with_map:+(\"map\"===i.paint.get(\"circle-pitch-scale\")),u_matrix:e.translatePosMatrix(r.posMatrix,n,i.paint.get(\"circle-translate\"),i.paint.get(\"circle-translate-anchor\")),u_pitch_with_map:+a,u_device_pixel_ratio:t.browser.devicePixelRatio,u_extrude_scale:o}},Cr=function(t,e,r){var n=pe(r,1,e.zoom),i=Math.pow(2,e.zoom-r.tileID.overscaledZ),a=r.tileID.overscaleFactor();return{u_matrix:t,u_camera_to_center_distance:e.cameraToCenterDistance,u_pixels_to_tile_units:n,u_extrude_scale:[e.pixelsToGLUnits[0]/(n*i),e.pixelsToGLUnits[1]/(n*i)],u_overscale_factor:a}},Pr=function(t,e,r){return{u_matrix:t,u_inv_matrix:e,u_camera_to_center_distance:r.cameraToCenterDistance,u_viewport_size:[r.width,r.height]}},Ir=function(t,e,r){return void 0===r&&(r=1),{u_matrix:t,u_color:e,u_overlay:0,u_overlay_scale:r}},Or=function(t){return{u_matrix:t}},zr=function(t,e,r,n){return{u_matrix:t,u_extrude_scale:pe(e,1,r),u_intensity:n}};function Dr(e,r){var n=Math.pow(2,r.canonical.z),i=r.canonical.y;return[new t.MercatorCoordinate(0,i/n).toLngLat().lat,new t.MercatorCoordinate(0,(i+1)/n).toLngLat().lat]}var Rr=function(e,r,n){var i=e.transform;return{u_matrix:Ur(e,r,n),u_ratio:1/pe(r,1,i.zoom),u_device_pixel_ratio:t.browser.devicePixelRatio,u_units_to_pixels:[1/i.pixelsToGLUnits[0],1/i.pixelsToGLUnits[1]]}},Fr=function(e,r,n){return t.extend(Rr(e,r,n),{u_image:0})},Br=function(e,r,n,i){var a=e.transform,o=jr(r,a);return{u_matrix:Ur(e,r,n),u_texsize:r.imageAtlasTexture.size,u_ratio:1/pe(r,1,a.zoom),u_device_pixel_ratio:t.browser.devicePixelRatio,u_image:0,u_scale:[o,i.fromScale,i.toScale],u_fade:i.t,u_units_to_pixels:[1/a.pixelsToGLUnits[0],1/a.pixelsToGLUnits[1]]}},Nr=function(e,r,n,i,a){var o=e.transform,s=e.lineAtlas,l=jr(r,o),c=\"round\"===n.layout.get(\"line-cap\"),u=s.getDash(i.from,c),f=s.getDash(i.to,c),h=u.width*a.fromScale,p=f.width*a.toScale;return t.extend(Rr(e,r,n),{u_patternscale_a:[l/h,-u.height/2],u_patternscale_b:[l/p,-f.height/2],u_sdfgamma:s.width/(256*Math.min(h,p)*t.browser.devicePixelRatio)/2,u_image:0,u_tex_y_a:u.y,u_tex_y_b:f.y,u_mix:a.t})};function jr(t,e){return 1/pe(t,1,e.tileZoom)}function Ur(t,e,r){return t.translatePosMatrix(e.tileID.posMatrix,e,r.paint.get(\"line-translate\"),r.paint.get(\"line-translate-anchor\"))}var Vr=function(t,e,r,n,i){return{u_matrix:t,u_tl_parent:e,u_scale_parent:r,u_buffer_scale:1,u_fade_t:n.mix,u_opacity:n.opacity*i.paint.get(\"raster-opacity\"),u_image0:0,u_image1:1,u_brightness_low:i.paint.get(\"raster-brightness-min\"),u_brightness_high:i.paint.get(\"raster-brightness-max\"),u_saturation_factor:(o=i.paint.get(\"raster-saturation\"),o>0?1-1/(1.001-o):-o),u_contrast_factor:(a=i.paint.get(\"raster-contrast\"),a>0?1/(1-a):1+a),u_spin_weights:Hr(i.paint.get(\"raster-hue-rotate\"))};var a,o};function Hr(t){t*=Math.PI/180;var e=Math.sin(t),r=Math.cos(t);return[(2*r+1)/3,(-Math.sqrt(3)*e-r+1)/3,(Math.sqrt(3)*e-r+1)/3]}var qr,Gr=function(t,e,r,n,i,a,o,s,l,c){var u=i.transform;return{u_is_size_zoom_constant:+(\"constant\"===t||\"source\"===t),u_is_size_feature_constant:+(\"constant\"===t||\"camera\"===t),u_size_t:e?e.uSizeT:0,u_size:e?e.uSize:0,u_camera_to_center_distance:u.cameraToCenterDistance,u_pitch:u.pitch/360*2*Math.PI,u_rotate_symbol:+r,u_aspect_ratio:u.width/u.height,u_fade_change:i.options.fadeDuration?i.symbolFadeChange:1,u_matrix:a,u_label_plane_matrix:o,u_coord_matrix:s,u_is_text:+l,u_pitch_with_map:+n,u_texsize:c,u_texture:0}},Yr=function(e,r,n,i,a,o,s,l,c,u,f){var h=a.transform;return t.extend(Gr(e,r,n,i,a,o,s,l,c,u),{u_gamma_scale:i?Math.cos(h._pitch)*h.cameraToCenterDistance:1,u_device_pixel_ratio:t.browser.devicePixelRatio,u_is_halo:+f})},Wr=function(e,r,n,i,a,o,s,l,c,u){return t.extend(Yr(e,r,n,i,a,o,s,l,!0,c,!0),{u_texsize_icon:u,u_texture_icon:1})},Xr=function(t,e,r){return{u_matrix:t,u_opacity:e,u_color:r}},Zr=function(e,r,n,i,a,o){return t.extend(function(t,e,r,n){var i=r.imageManager.getPattern(t.from.toString()),a=r.imageManager.getPattern(t.to.toString()),o=r.imageManager.getPixelSize(),s=o.width,l=o.height,c=Math.pow(2,n.tileID.overscaledZ),u=n.tileSize*Math.pow(2,r.transform.tileZoom)/c,f=u*(n.tileID.canonical.x+n.tileID.wrap*c),h=u*n.tileID.canonical.y;return{u_image:0,u_pattern_tl_a:i.tl,u_pattern_br_a:i.br,u_pattern_tl_b:a.tl,u_pattern_br_b:a.br,u_texsize:[s,l],u_mix:e.t,u_pattern_size_a:i.displaySize,u_pattern_size_b:a.displaySize,u_scale_a:e.fromScale,u_scale_b:e.toScale,u_tile_units_to_pixels:1/pe(n,1,r.transform.tileZoom),u_pixel_coord_upper:[f>>16,h>>16],u_pixel_coord_lower:[65535&f,65535&h]}}(i,o,n,a),{u_matrix:e,u_opacity:r})},Jr={fillExtrusion:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_lightpos:new t.Uniform3f(e,r.u_lightpos),u_lightintensity:new t.Uniform1f(e,r.u_lightintensity),u_lightcolor:new t.Uniform3f(e,r.u_lightcolor),u_vertical_gradient:new t.Uniform1f(e,r.u_vertical_gradient),u_opacity:new t.Uniform1f(e,r.u_opacity)}},fillExtrusionPattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_lightpos:new t.Uniform3f(e,r.u_lightpos),u_lightintensity:new t.Uniform1f(e,r.u_lightintensity),u_lightcolor:new t.Uniform3f(e,r.u_lightcolor),u_vertical_gradient:new t.Uniform1f(e,r.u_vertical_gradient),u_height_factor:new t.Uniform1f(e,r.u_height_factor),u_image:new t.Uniform1i(e,r.u_image),u_texsize:new t.Uniform2f(e,r.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade),u_opacity:new t.Uniform1f(e,r.u_opacity)}},fill:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},fillPattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_image:new t.Uniform1i(e,r.u_image),u_texsize:new t.Uniform2f(e,r.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade)}},fillOutline:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_world:new t.Uniform2f(e,r.u_world)}},fillOutlinePattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_world:new t.Uniform2f(e,r.u_world),u_image:new t.Uniform1i(e,r.u_image),u_texsize:new t.Uniform2f(e,r.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade)}},circle:function(e,r){return{u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_scale_with_map:new t.Uniform1i(e,r.u_scale_with_map),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_extrude_scale:new t.Uniform2f(e,r.u_extrude_scale),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},collisionBox:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pixels_to_tile_units:new t.Uniform1f(e,r.u_pixels_to_tile_units),u_extrude_scale:new t.Uniform2f(e,r.u_extrude_scale),u_overscale_factor:new t.Uniform1f(e,r.u_overscale_factor)}},collisionCircle:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_inv_matrix:new t.UniformMatrix4f(e,r.u_inv_matrix),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_viewport_size:new t.Uniform2f(e,r.u_viewport_size)}},debug:function(e,r){return{u_color:new t.UniformColor(e,r.u_color),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_overlay:new t.Uniform1i(e,r.u_overlay),u_overlay_scale:new t.Uniform1f(e,r.u_overlay_scale)}},clippingMask:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},heatmap:function(e,r){return{u_extrude_scale:new t.Uniform1f(e,r.u_extrude_scale),u_intensity:new t.Uniform1f(e,r.u_intensity),u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},heatmapTexture:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_world:new t.Uniform2f(e,r.u_world),u_image:new t.Uniform1i(e,r.u_image),u_color_ramp:new t.Uniform1i(e,r.u_color_ramp),u_opacity:new t.Uniform1f(e,r.u_opacity)}},hillshade:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_image:new t.Uniform1i(e,r.u_image),u_latrange:new t.Uniform2f(e,r.u_latrange),u_light:new t.Uniform2f(e,r.u_light),u_shadow:new t.UniformColor(e,r.u_shadow),u_highlight:new t.UniformColor(e,r.u_highlight),u_accent:new t.UniformColor(e,r.u_accent)}},hillshadePrepare:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_image:new t.Uniform1i(e,r.u_image),u_dimension:new t.Uniform2f(e,r.u_dimension),u_zoom:new t.Uniform1f(e,r.u_zoom),u_maxzoom:new t.Uniform1f(e,r.u_maxzoom),u_unpack:new t.Uniform4f(e,r.u_unpack)}},line:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels)}},lineGradient:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels),u_image:new t.Uniform1i(e,r.u_image)}},linePattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_texsize:new t.Uniform2f(e,r.u_texsize),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_image:new t.Uniform1i(e,r.u_image),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade)}},lineSDF:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels),u_patternscale_a:new t.Uniform2f(e,r.u_patternscale_a),u_patternscale_b:new t.Uniform2f(e,r.u_patternscale_b),u_sdfgamma:new t.Uniform1f(e,r.u_sdfgamma),u_image:new t.Uniform1i(e,r.u_image),u_tex_y_a:new t.Uniform1f(e,r.u_tex_y_a),u_tex_y_b:new t.Uniform1f(e,r.u_tex_y_b),u_mix:new t.Uniform1f(e,r.u_mix)}},raster:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_tl_parent:new t.Uniform2f(e,r.u_tl_parent),u_scale_parent:new t.Uniform1f(e,r.u_scale_parent),u_buffer_scale:new t.Uniform1f(e,r.u_buffer_scale),u_fade_t:new t.Uniform1f(e,r.u_fade_t),u_opacity:new t.Uniform1f(e,r.u_opacity),u_image0:new t.Uniform1i(e,r.u_image0),u_image1:new t.Uniform1i(e,r.u_image1),u_brightness_low:new t.Uniform1f(e,r.u_brightness_low),u_brightness_high:new t.Uniform1f(e,r.u_brightness_high),u_saturation_factor:new t.Uniform1f(e,r.u_saturation_factor),u_contrast_factor:new t.Uniform1f(e,r.u_contrast_factor),u_spin_weights:new t.Uniform3f(e,r.u_spin_weights)}},symbolIcon:function(e,r){return{u_is_size_zoom_constant:new t.Uniform1i(e,r.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,r.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,r.u_size_t),u_size:new t.Uniform1f(e,r.u_size),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,r.u_pitch),u_rotate_symbol:new t.Uniform1i(e,r.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,r.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,r.u_fade_change),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,r.u_label_plane_matrix),u_coord_matrix:new t.UniformMatrix4f(e,r.u_coord_matrix),u_is_text:new t.Uniform1i(e,r.u_is_text),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_texsize:new t.Uniform2f(e,r.u_texsize),u_texture:new t.Uniform1i(e,r.u_texture)}},symbolSDF:function(e,r){return{u_is_size_zoom_constant:new t.Uniform1i(e,r.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,r.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,r.u_size_t),u_size:new t.Uniform1f(e,r.u_size),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,r.u_pitch),u_rotate_symbol:new t.Uniform1i(e,r.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,r.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,r.u_fade_change),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,r.u_label_plane_matrix),u_coord_matrix:new t.UniformMatrix4f(e,r.u_coord_matrix),u_is_text:new t.Uniform1i(e,r.u_is_text),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_texsize:new t.Uniform2f(e,r.u_texsize),u_texture:new t.Uniform1i(e,r.u_texture),u_gamma_scale:new t.Uniform1f(e,r.u_gamma_scale),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_is_halo:new t.Uniform1i(e,r.u_is_halo)}},symbolTextAndIcon:function(e,r){return{u_is_size_zoom_constant:new t.Uniform1i(e,r.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,r.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,r.u_size_t),u_size:new t.Uniform1f(e,r.u_size),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,r.u_pitch),u_rotate_symbol:new t.Uniform1i(e,r.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,r.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,r.u_fade_change),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,r.u_label_plane_matrix),u_coord_matrix:new t.UniformMatrix4f(e,r.u_coord_matrix),u_is_text:new t.Uniform1i(e,r.u_is_text),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_texsize:new t.Uniform2f(e,r.u_texsize),u_texsize_icon:new t.Uniform2f(e,r.u_texsize_icon),u_texture:new t.Uniform1i(e,r.u_texture),u_texture_icon:new t.Uniform1i(e,r.u_texture_icon),u_gamma_scale:new t.Uniform1f(e,r.u_gamma_scale),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_is_halo:new t.Uniform1i(e,r.u_is_halo)}},background:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_opacity:new t.Uniform1f(e,r.u_opacity),u_color:new t.UniformColor(e,r.u_color)}},backgroundPattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_opacity:new t.Uniform1f(e,r.u_opacity),u_image:new t.Uniform1i(e,r.u_image),u_pattern_tl_a:new t.Uniform2f(e,r.u_pattern_tl_a),u_pattern_br_a:new t.Uniform2f(e,r.u_pattern_br_a),u_pattern_tl_b:new t.Uniform2f(e,r.u_pattern_tl_b),u_pattern_br_b:new t.Uniform2f(e,r.u_pattern_br_b),u_texsize:new t.Uniform2f(e,r.u_texsize),u_mix:new t.Uniform1f(e,r.u_mix),u_pattern_size_a:new t.Uniform2f(e,r.u_pattern_size_a),u_pattern_size_b:new t.Uniform2f(e,r.u_pattern_size_b),u_scale_a:new t.Uniform1f(e,r.u_scale_a),u_scale_b:new t.Uniform1f(e,r.u_scale_b),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_tile_units_to_pixels:new t.Uniform1f(e,r.u_tile_units_to_pixels)}}};function Kr(e,r,n,i,a,o,s){for(var l=e.context,c=l.gl,u=e.useProgram(\"collisionBox\"),f=[],h=0,p=0,d=0;d0){var _=t.create(),w=y;t.mul(_,v.placementInvProjMatrix,e.transform.glCoordMatrix),t.mul(_,_,v.placementViewportMatrix),f.push({circleArray:b,circleOffset:p,transform:w,invTransform:_}),p=h+=b.length/4}x&&u.draw(l,c.LINES,At.disabled,Mt.disabled,e.colorModeForRenderPass(),Et.disabled,Cr(y,e.transform,m),n.id,x.layoutVertexBuffer,x.indexBuffer,x.segments,null,e.transform.zoom,null,null,x.collisionVertexBuffer)}}if(s&&f.length){var T=e.useProgram(\"collisionCircle\"),k=new t.StructArrayLayout2f1f2i16;k.resize(4*h),k._trim();for(var A=0,M=0,S=f;M=0&&(g[v.associatedIconIndex]={shiftedAnchor:S,angle:E})}else ue(v.numGlyphs,p)}if(f){d.clear();for(var C=e.icon.placedSymbolArray,P=0;P0){var s=t.browser.now(),l=(s-e.timeAdded)/o,c=r?(s-r.timeAdded)/o:-1,u=n.getSource(),f=a.coveringZoomLevel({tileSize:u.tileSize,roundZoom:u.roundZoom}),h=!r||Math.abs(r.tileID.overscaledZ-f)>Math.abs(e.tileID.overscaledZ-f),p=h&&e.refreshedUponExpiration?1:t.clamp(h?l:1-c,0,1);return e.refreshedUponExpiration&&l>=1&&(e.refreshedUponExpiration=!1),r?{opacity:1,mix:1-p}:{opacity:p,mix:0}}return{opacity:1,mix:0}}var un=new t.Color(1,0,0,1),fn=new t.Color(0,1,0,1),hn=new t.Color(0,0,1,1),pn=new t.Color(1,0,1,1),dn=new t.Color(0,1,1,1);function gn(t){var e=t.transform.padding;mn(t,t.transform.height-(e.top||0),3,un),mn(t,e.bottom||0,3,fn),vn(t,e.left||0,3,hn),vn(t,t.transform.width-(e.right||0),3,pn);var r=t.transform.centerPoint;!function(t,e,r,n){yn(t,e-1,r-10,2,20,n),yn(t,e-10,r-1,20,2,n)}(t,r.x,t.transform.height-r.y,dn)}function mn(t,e,r,n){yn(t,0,e+r/2,t.transform.width,r,n)}function vn(t,e,r,n){yn(t,e-r/2,0,r,t.transform.height,n)}function yn(e,r,n,i,a,o){var s=e.context,l=s.gl;l.enable(l.SCISSOR_TEST),l.scissor(r*t.browser.devicePixelRatio,n*t.browser.devicePixelRatio,i*t.browser.devicePixelRatio,a*t.browser.devicePixelRatio),s.clear({color:o}),l.disable(l.SCISSOR_TEST)}function xn(e,r,n){var i=e.context,a=i.gl,o=n.posMatrix,s=e.useProgram(\"debug\"),l=At.disabled,c=Mt.disabled,u=e.colorModeForRenderPass();i.activeTexture.set(a.TEXTURE0),e.emptyTexture.bind(a.LINEAR,a.CLAMP_TO_EDGE),s.draw(i,a.LINE_STRIP,l,c,u,Et.disabled,Ir(o,t.Color.red),\"$debug\",e.debugBuffer,e.tileBorderIndexBuffer,e.debugSegments);var f=r.getTileByID(n.key).latestRawTileData,h=f&&f.byteLength||0,p=Math.floor(h/1024),d=r.getTile(n).tileSize,g=512/Math.min(d,512)*(n.overscaledZ/e.transform.zoom)*.5,m=n.canonical.toString();n.overscaledZ!==n.canonical.z&&(m+=\" => \"+n.overscaledZ),function(t,e){t.initDebugOverlayCanvas();var r=t.debugOverlayCanvas,n=t.context.gl,i=t.debugOverlayCanvas.getContext(\"2d\");i.clearRect(0,0,r.width,r.height),i.shadowColor=\"white\",i.shadowBlur=2,i.lineWidth=1.5,i.strokeStyle=\"white\",i.textBaseline=\"top\",i.font=\"bold 36px Open Sans, sans-serif\",i.fillText(e,5,5),i.strokeText(e,5,5),t.debugOverlayTexture.update(r),t.debugOverlayTexture.bind(n.LINEAR,n.CLAMP_TO_EDGE)}(e,m+\" \"+p+\"kb\"),s.draw(i,a.TRIANGLES,l,c,St.alphaBlended,Et.disabled,Ir(o,t.Color.transparent,g),\"$debug\",e.debugBuffer,e.quadTriangleIndexBuffer,e.debugSegments)}var bn={symbol:function(e,r,n,i,a){if(\"translucent\"===e.renderPass){var o=Mt.disabled,s=e.colorModeForRenderPass();n.layout.get(\"text-variable-anchor\")&&function(e,r,n,i,a,o,s){for(var l=r.transform,c=\"map\"===a,u=\"map\"===o,f=0,h=e;f256&&this.clearStencil(),r.setColorMode(St.disabled),r.setDepthMode(At.disabled);var i=this.useProgram(\"clippingMask\");this._tileClippingMaskIDs={};for(var a=0,o=e;a256&&this.clearStencil();var t=this.nextStencilID++,e=this.context.gl;return new Mt({func:e.NOTEQUAL,mask:255},t,255,e.KEEP,e.KEEP,e.REPLACE)},_n.prototype.stencilModeForClipping=function(t){var e=this.context.gl;return new Mt({func:e.EQUAL,mask:255},this._tileClippingMaskIDs[t.key],0,e.KEEP,e.KEEP,e.REPLACE)},_n.prototype.stencilConfigForOverlap=function(t){var e,r=this.context.gl,n=t.sort((function(t,e){return e.overscaledZ-t.overscaledZ})),i=n[n.length-1].overscaledZ,a=n[0].overscaledZ-i+1;if(a>1){this.currentStencilSource=void 0,this.nextStencilID+a>256&&this.clearStencil();for(var o={},s=0;s=0;this.currentLayer--){var w=this.style._layers[i[this.currentLayer]],T=a[w.source],k=u[w.source];this._renderTileClippingMasks(w,k),this.renderLayer(this,T,w,k)}for(this.renderPass=\"translucent\",this.currentLayer=0;this.currentLayer0?e.pop():null},_n.prototype.isPatternMissing=function(t){if(!t)return!1;if(!t.from||!t.to)return!0;var e=this.imageManager.getPattern(t.from.toString()),r=this.imageManager.getPattern(t.to.toString());return!e||!r},_n.prototype.useProgram=function(t,e){this.cache=this.cache||{};var r=\"\"+t+(e?e.cacheKey:\"\")+(this._showOverdrawInspector?\"/overdraw\":\"\");return this.cache[r]||(this.cache[r]=new _r(this.context,xr[t],e,Jr[t],this._showOverdrawInspector)),this.cache[r]},_n.prototype.setCustomLayerDefaults=function(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault()},_n.prototype.setBaseState=function(){var t=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(t.FUNC_ADD)},_n.prototype.initDebugOverlayCanvas=function(){if(null==this.debugOverlayCanvas){this.debugOverlayCanvas=t.window.document.createElement(\"canvas\"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512;var e=this.context.gl;this.debugOverlayTexture=new t.Texture(this.context,this.debugOverlayCanvas,e.RGBA)}},_n.prototype.destroy=function(){this.emptyTexture.destroy(),this.debugOverlayTexture&&this.debugOverlayTexture.destroy()};var wn=function(t,e){this.points=t,this.planes=e};wn.fromInvProjectionMatrix=function(e,r,n){var i=Math.pow(2,n),a=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]].map((function(r){return t.transformMat4([],r,e)})).map((function(e){return t.scale$1([],e,1/e[3]/r*i)})),o=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]].map((function(e){var r=t.sub([],a[e[0]],a[e[1]]),n=t.sub([],a[e[2]],a[e[1]]),i=t.normalize([],t.cross([],r,n)),o=-t.dot(i,a[e[1]]);return i.concat(o)}));return new wn(a,o)};var Tn=function(e,r){this.min=e,this.max=r,this.center=t.scale$2([],t.add([],this.min,this.max),.5)};Tn.prototype.quadrant=function(e){for(var r=[e%2==0,e<2],n=t.clone$2(this.min),i=t.clone$2(this.max),a=0;a=0;if(0===o)return 0;o!==r.length&&(n=!1)}if(n)return 2;for(var l=0;l<3;l++){for(var c=Number.MAX_VALUE,u=-Number.MAX_VALUE,f=0;fthis.max[l]-this.min[l])return 0}return 1};var kn=function(t,e,r,n){if(void 0===t&&(t=0),void 0===e&&(e=0),void 0===r&&(r=0),void 0===n&&(n=0),isNaN(t)||t<0||isNaN(e)||e<0||isNaN(r)||r<0||isNaN(n)||n<0)throw new Error(\"Invalid value for edge-insets, top, bottom, left and right must all be numbers\");this.top=t,this.bottom=e,this.left=r,this.right=n};kn.prototype.interpolate=function(e,r,n){return null!=r.top&&null!=e.top&&(this.top=t.number(e.top,r.top,n)),null!=r.bottom&&null!=e.bottom&&(this.bottom=t.number(e.bottom,r.bottom,n)),null!=r.left&&null!=e.left&&(this.left=t.number(e.left,r.left,n)),null!=r.right&&null!=e.right&&(this.right=t.number(e.right,r.right,n)),this},kn.prototype.getCenter=function(e,r){var n=t.clamp((this.left+e-this.right)/2,0,e),i=t.clamp((this.top+r-this.bottom)/2,0,r);return new t.Point(n,i)},kn.prototype.equals=function(t){return this.top===t.top&&this.bottom===t.bottom&&this.left===t.left&&this.right===t.right},kn.prototype.clone=function(){return new kn(this.top,this.bottom,this.left,this.right)},kn.prototype.toJSON=function(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}};var An=function(e,r,n,i,a){this.tileSize=512,this.maxValidLatitude=85.051129,this._renderWorldCopies=void 0===a||a,this._minZoom=e||0,this._maxZoom=r||22,this._minPitch=null==n?0:n,this._maxPitch=null==i?60:i,this.setMaxBounds(),this.width=0,this.height=0,this._center=new t.LngLat(0,0),this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._edgeInsets=new kn,this._posMatrixCache={},this._alignedPosMatrixCache={}},Mn={minZoom:{configurable:!0},maxZoom:{configurable:!0},minPitch:{configurable:!0},maxPitch:{configurable:!0},renderWorldCopies:{configurable:!0},worldSize:{configurable:!0},centerOffset:{configurable:!0},size:{configurable:!0},bearing:{configurable:!0},pitch:{configurable:!0},fov:{configurable:!0},zoom:{configurable:!0},center:{configurable:!0},padding:{configurable:!0},centerPoint:{configurable:!0},unmodified:{configurable:!0},point:{configurable:!0}};An.prototype.clone=function(){var t=new An(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return t.tileSize=this.tileSize,t.latRange=this.latRange,t.width=this.width,t.height=this.height,t._center=this._center,t.zoom=this.zoom,t.angle=this.angle,t._fov=this._fov,t._pitch=this._pitch,t._unmodified=this._unmodified,t._edgeInsets=this._edgeInsets.clone(),t._calcMatrices(),t},Mn.minZoom.get=function(){return this._minZoom},Mn.minZoom.set=function(t){this._minZoom!==t&&(this._minZoom=t,this.zoom=Math.max(this.zoom,t))},Mn.maxZoom.get=function(){return this._maxZoom},Mn.maxZoom.set=function(t){this._maxZoom!==t&&(this._maxZoom=t,this.zoom=Math.min(this.zoom,t))},Mn.minPitch.get=function(){return this._minPitch},Mn.minPitch.set=function(t){this._minPitch!==t&&(this._minPitch=t,this.pitch=Math.max(this.pitch,t))},Mn.maxPitch.get=function(){return this._maxPitch},Mn.maxPitch.set=function(t){this._maxPitch!==t&&(this._maxPitch=t,this.pitch=Math.min(this.pitch,t))},Mn.renderWorldCopies.get=function(){return this._renderWorldCopies},Mn.renderWorldCopies.set=function(t){void 0===t?t=!0:null===t&&(t=!1),this._renderWorldCopies=t},Mn.worldSize.get=function(){return this.tileSize*this.scale},Mn.centerOffset.get=function(){return this.centerPoint._sub(this.size._div(2))},Mn.size.get=function(){return new t.Point(this.width,this.height)},Mn.bearing.get=function(){return-this.angle/Math.PI*180},Mn.bearing.set=function(e){var r=-t.wrap(e,-180,180)*Math.PI/180;this.angle!==r&&(this._unmodified=!1,this.angle=r,this._calcMatrices(),this.rotationMatrix=t.create$2(),t.rotate(this.rotationMatrix,this.rotationMatrix,this.angle))},Mn.pitch.get=function(){return this._pitch/Math.PI*180},Mn.pitch.set=function(e){var r=t.clamp(e,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==r&&(this._unmodified=!1,this._pitch=r,this._calcMatrices())},Mn.fov.get=function(){return this._fov/Math.PI*180},Mn.fov.set=function(t){t=Math.max(.01,Math.min(60,t)),this._fov!==t&&(this._unmodified=!1,this._fov=t/180*Math.PI,this._calcMatrices())},Mn.zoom.get=function(){return this._zoom},Mn.zoom.set=function(t){var e=Math.min(Math.max(t,this.minZoom),this.maxZoom);this._zoom!==e&&(this._unmodified=!1,this._zoom=e,this.scale=this.zoomScale(e),this.tileZoom=Math.floor(e),this.zoomFraction=e-this.tileZoom,this._constrain(),this._calcMatrices())},Mn.center.get=function(){return this._center},Mn.center.set=function(t){t.lat===this._center.lat&&t.lng===this._center.lng||(this._unmodified=!1,this._center=t,this._constrain(),this._calcMatrices())},Mn.padding.get=function(){return this._edgeInsets.toJSON()},Mn.padding.set=function(t){this._edgeInsets.equals(t)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,t,1),this._calcMatrices())},Mn.centerPoint.get=function(){return this._edgeInsets.getCenter(this.width,this.height)},An.prototype.isPaddingEqual=function(t){return this._edgeInsets.equals(t)},An.prototype.interpolatePadding=function(t,e,r){this._unmodified=!1,this._edgeInsets.interpolate(t,e,r),this._constrain(),this._calcMatrices()},An.prototype.coveringZoomLevel=function(t){var e=(t.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/t.tileSize));return Math.max(0,e)},An.prototype.getVisibleUnwrappedCoordinates=function(e){var r=[new t.UnwrappedTileID(0,e)];if(this._renderWorldCopies)for(var n=this.pointCoordinate(new t.Point(0,0)),i=this.pointCoordinate(new t.Point(this.width,0)),a=this.pointCoordinate(new t.Point(this.width,this.height)),o=this.pointCoordinate(new t.Point(0,this.height)),s=Math.floor(Math.min(n.x,i.x,a.x,o.x)),l=Math.floor(Math.max(n.x,i.x,a.x,o.x)),c=s-1;c<=l+1;c++)0!==c&&r.push(new t.UnwrappedTileID(c,e));return r},An.prototype.coveringTiles=function(e){var r=this.coveringZoomLevel(e),n=r;if(void 0!==e.minzoom&&re.maxzoom&&(r=e.maxzoom);var i=t.MercatorCoordinate.fromLngLat(this.center),a=Math.pow(2,r),o=[a*i.x,a*i.y,0],s=wn.fromInvProjectionMatrix(this.invProjMatrix,this.worldSize,r),l=e.minzoom||0;this.pitch<=60&&this._edgeInsets.top<.1&&(l=r);var c=function(t){return{aabb:new Tn([t*a,0,0],[(t+1)*a,a,0]),zoom:0,x:0,y:0,wrap:t,fullyVisible:!1}},u=[],f=[],h=r,p=e.reparseOverscaled?n:r;if(this._renderWorldCopies)for(var d=1;d<=3;d++)u.push(c(-d)),u.push(c(d));for(u.push(c(0));u.length>0;){var g=u.pop(),m=g.x,v=g.y,y=g.fullyVisible;if(!y){var x=g.aabb.intersects(s);if(0===x)continue;y=2===x}var b=g.aabb.distanceX(o),_=g.aabb.distanceY(o),w=Math.max(Math.abs(b),Math.abs(_)),T=3+(1<T&&g.zoom>=l)f.push({tileID:new t.OverscaledTileID(g.zoom===h?p:g.zoom,g.wrap,g.zoom,m,v),distanceSq:t.sqrLen([o[0]-.5-m,o[1]-.5-v])});else for(var k=0;k<4;k++){var A=(m<<1)+k%2,M=(v<<1)+(k>>1);u.push({aabb:g.aabb.quadrant(k),zoom:g.zoom+1,x:A,y:M,wrap:g.wrap,fullyVisible:y})}}return f.sort((function(t,e){return t.distanceSq-e.distanceSq})).map((function(t){return t.tileID}))},An.prototype.resize=function(t,e){this.width=t,this.height=e,this.pixelsToGLUnits=[2/t,-2/e],this._constrain(),this._calcMatrices()},Mn.unmodified.get=function(){return this._unmodified},An.prototype.zoomScale=function(t){return Math.pow(2,t)},An.prototype.scaleZoom=function(t){return Math.log(t)/Math.LN2},An.prototype.project=function(e){var r=t.clamp(e.lat,-this.maxValidLatitude,this.maxValidLatitude);return new t.Point(t.mercatorXfromLng(e.lng)*this.worldSize,t.mercatorYfromLat(r)*this.worldSize)},An.prototype.unproject=function(e){return new t.MercatorCoordinate(e.x/this.worldSize,e.y/this.worldSize).toLngLat()},Mn.point.get=function(){return this.project(this.center)},An.prototype.setLocationAtPoint=function(e,r){var n=this.pointCoordinate(r),i=this.pointCoordinate(this.centerPoint),a=this.locationCoordinate(e),o=new t.MercatorCoordinate(a.x-(n.x-i.x),a.y-(n.y-i.y));this.center=this.coordinateLocation(o),this._renderWorldCopies&&(this.center=this.center.wrap())},An.prototype.locationPoint=function(t){return this.coordinatePoint(this.locationCoordinate(t))},An.prototype.pointLocation=function(t){return this.coordinateLocation(this.pointCoordinate(t))},An.prototype.locationCoordinate=function(e){return t.MercatorCoordinate.fromLngLat(e)},An.prototype.coordinateLocation=function(t){return t.toLngLat()},An.prototype.pointCoordinate=function(e){var r=[e.x,e.y,0,1],n=[e.x,e.y,1,1];t.transformMat4(r,r,this.pixelMatrixInverse),t.transformMat4(n,n,this.pixelMatrixInverse);var i=r[3],a=n[3],o=r[0]/i,s=n[0]/a,l=r[1]/i,c=n[1]/a,u=r[2]/i,f=n[2]/a,h=u===f?0:(0-u)/(f-u);return new t.MercatorCoordinate(t.number(o,s,h)/this.worldSize,t.number(l,c,h)/this.worldSize)},An.prototype.coordinatePoint=function(e){var r=[e.x*this.worldSize,e.y*this.worldSize,0,1];return t.transformMat4(r,r,this.pixelMatrix),new t.Point(r[0]/r[3],r[1]/r[3])},An.prototype.getBounds=function(){return(new t.LngLatBounds).extend(this.pointLocation(new t.Point(0,0))).extend(this.pointLocation(new t.Point(this.width,0))).extend(this.pointLocation(new t.Point(this.width,this.height))).extend(this.pointLocation(new t.Point(0,this.height)))},An.prototype.getMaxBounds=function(){return this.latRange&&2===this.latRange.length&&this.lngRange&&2===this.lngRange.length?new t.LngLatBounds([this.lngRange[0],this.latRange[0]],[this.lngRange[1],this.latRange[1]]):null},An.prototype.setMaxBounds=function(t){t?(this.lngRange=[t.getWest(),t.getEast()],this.latRange=[t.getSouth(),t.getNorth()],this._constrain()):(this.lngRange=null,this.latRange=[-this.maxValidLatitude,this.maxValidLatitude])},An.prototype.calculatePosMatrix=function(e,r){void 0===r&&(r=!1);var n=e.key,i=r?this._alignedPosMatrixCache:this._posMatrixCache;if(i[n])return i[n];var a=e.canonical,o=this.worldSize/this.zoomScale(a.z),s=a.x+Math.pow(2,a.z)*e.wrap,l=t.identity(new Float64Array(16));return t.translate(l,l,[s*o,a.y*o,0]),t.scale(l,l,[o/t.EXTENT,o/t.EXTENT,1]),t.multiply(l,r?this.alignedProjMatrix:this.projMatrix,l),i[n]=new Float32Array(l),i[n]},An.prototype.customLayerMatrix=function(){return this.mercatorMatrix.slice()},An.prototype._constrain=function(){if(this.center&&this.width&&this.height&&!this._constraining){this._constraining=!0;var e,r,n,i,a=-90,o=90,s=-180,l=180,c=this.size,u=this._unmodified;if(this.latRange){var f=this.latRange;a=t.mercatorYfromLat(f[1])*this.worldSize,e=(o=t.mercatorYfromLat(f[0])*this.worldSize)-ao&&(i=o-m)}if(this.lngRange){var v=p.x,y=c.x/2;v-yl&&(n=l-y)}void 0===n&&void 0===i||(this.center=this.unproject(new t.Point(void 0!==n?n:p.x,void 0!==i?i:p.y))),this._unmodified=u,this._constraining=!1}},An.prototype._calcMatrices=function(){if(this.height){var e=this._fov/2,r=this.centerOffset;this.cameraToCenterDistance=.5/Math.tan(e)*this.height;var n=Math.PI/2+this._pitch,i=this._fov*(.5+r.y/this.height),a=Math.sin(i)*this.cameraToCenterDistance/Math.sin(t.clamp(Math.PI-n-i,.01,Math.PI-.01)),o=this.point,s=o.x,l=o.y,c=1.01*(Math.cos(Math.PI/2-this._pitch)*a+this.cameraToCenterDistance),u=this.height/50,f=new Float64Array(16);t.perspective(f,this._fov,this.width/this.height,u,c),f[8]=2*-r.x/this.width,f[9]=2*r.y/this.height,t.scale(f,f,[1,-1,1]),t.translate(f,f,[0,0,-this.cameraToCenterDistance]),t.rotateX(f,f,this._pitch),t.rotateZ(f,f,this.angle),t.translate(f,f,[-s,-l,0]),this.mercatorMatrix=t.scale([],f,[this.worldSize,this.worldSize,this.worldSize]),t.scale(f,f,[1,1,t.mercatorZfromAltitude(1,this.center.lat)*this.worldSize,1]),this.projMatrix=f,this.invProjMatrix=t.invert([],this.projMatrix);var h=this.width%2/2,p=this.height%2/2,d=Math.cos(this.angle),g=Math.sin(this.angle),m=s-Math.round(s)+d*h+g*p,v=l-Math.round(l)+d*p+g*h,y=new Float64Array(f);if(t.translate(y,y,[m>.5?m-1:m,v>.5?v-1:v,0]),this.alignedProjMatrix=y,f=t.create(),t.scale(f,f,[this.width/2,-this.height/2,1]),t.translate(f,f,[1,-1,0]),this.labelPlaneMatrix=f,f=t.create(),t.scale(f,f,[1,-1,1]),t.translate(f,f,[-1,-1,0]),t.scale(f,f,[2/this.width,2/this.height,1]),this.glCoordMatrix=f,this.pixelMatrix=t.multiply(new Float64Array(16),this.labelPlaneMatrix,this.projMatrix),!(f=t.invert(new Float64Array(16),this.pixelMatrix)))throw new Error(\"failed to invert matrix\");this.pixelMatrixInverse=f,this._posMatrixCache={},this._alignedPosMatrixCache={}}},An.prototype.maxPitchScaleFactor=function(){if(!this.pixelMatrixInverse)return 1;var e=this.pointCoordinate(new t.Point(0,0)),r=[e.x*this.worldSize,e.y*this.worldSize,0,1];return t.transformMat4(r,r,this.pixelMatrix)[3]/this.cameraToCenterDistance},An.prototype.getCameraPoint=function(){var e=this._pitch,r=Math.tan(e)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new t.Point(0,r))},An.prototype.getCameraQueryGeometry=function(e){var r=this.getCameraPoint();if(1===e.length)return[e[0],r];for(var n=r.x,i=r.y,a=r.x,o=r.y,s=0,l=e;s=3&&!t.some((function(t){return isNaN(t)}))){var e=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(t[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+t[2],+t[1]],zoom:+t[0],bearing:e,pitch:+(t[4]||0)}),!0}return!1},Sn.prototype._updateHashUnthrottled=function(){var e=this.getHashString();try{t.window.history.replaceState(t.window.history.state,\"\",e)}catch(t){}};var En={linearity:.3,easing:t.bezier(0,0,.3,1)},Ln=t.extend({deceleration:2500,maxSpeed:1400},En),Cn=t.extend({deceleration:20,maxSpeed:1400},En),Pn=t.extend({deceleration:1e3,maxSpeed:360},En),In=t.extend({deceleration:1e3,maxSpeed:90},En),On=function(t){this._map=t,this.clear()};function zn(t,e){(!t.duration||t.duration0&&r-e[0].time>160;)e.shift()},On.prototype._onMoveEnd=function(e){if(this._drainInertiaBuffer(),!(this._inertiaBuffer.length<2)){for(var r={zoom:0,bearing:0,pitch:0,pan:new t.Point(0,0),pinchAround:void 0,around:void 0},n=0,i=this._inertiaBuffer;n=this._clickTolerance||this._map.fire(new Rn(t.type,this._map,t))},Nn.prototype.dblclick=function(t){return this._firePreventable(new Rn(t.type,this._map,t))},Nn.prototype.mouseover=function(t){this._map.fire(new Rn(t.type,this._map,t))},Nn.prototype.mouseout=function(t){this._map.fire(new Rn(t.type,this._map,t))},Nn.prototype.touchstart=function(t){return this._firePreventable(new Fn(t.type,this._map,t))},Nn.prototype.touchmove=function(t){this._map.fire(new Fn(t.type,this._map,t))},Nn.prototype.touchend=function(t){this._map.fire(new Fn(t.type,this._map,t))},Nn.prototype.touchcancel=function(t){this._map.fire(new Fn(t.type,this._map,t))},Nn.prototype._firePreventable=function(t){if(this._map.fire(t),t.defaultPrevented)return{}},Nn.prototype.isEnabled=function(){return!0},Nn.prototype.isActive=function(){return!1},Nn.prototype.enable=function(){},Nn.prototype.disable=function(){};var jn=function(t){this._map=t};jn.prototype.reset=function(){this._delayContextMenu=!1,delete this._contextMenuEvent},jn.prototype.mousemove=function(t){this._map.fire(new Rn(t.type,this._map,t))},jn.prototype.mousedown=function(){this._delayContextMenu=!0},jn.prototype.mouseup=function(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new Rn(\"contextmenu\",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)},jn.prototype.contextmenu=function(t){this._delayContextMenu?this._contextMenuEvent=t:this._map.fire(new Rn(t.type,this._map,t)),this._map.listens(\"contextmenu\")&&t.preventDefault()},jn.prototype.isEnabled=function(){return!0},jn.prototype.isActive=function(){return!1},jn.prototype.enable=function(){},jn.prototype.disable=function(){};var Un=function(t,e){this._map=t,this._el=t.getCanvasContainer(),this._container=t.getContainer(),this._clickTolerance=e.clickTolerance||1};function Vn(t,e){for(var r={},n=0;nthis.numTouches)&&(this.aborted=!0),this.aborted||(void 0===this.startTime&&(this.startTime=e.timeStamp),n.length===this.numTouches&&(this.centroid=function(e){for(var r=new t.Point(0,0),n=0,i=e;n30)&&(this.aborted=!0)}}},Hn.prototype.touchend=function(t,e,r){if((!this.centroid||t.timeStamp-this.startTime>500)&&(this.aborted=!0),0===r.length){var n=!this.aborted&&this.centroid;if(this.reset(),n)return n}};var qn=function(t){this.singleTap=new Hn(t),this.numTaps=t.numTaps,this.reset()};qn.prototype.reset=function(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset()},qn.prototype.touchstart=function(t,e,r){this.singleTap.touchstart(t,e,r)},qn.prototype.touchmove=function(t,e,r){this.singleTap.touchmove(t,e,r)},qn.prototype.touchend=function(t,e,r){var n=this.singleTap.touchend(t,e,r);if(n){var i=t.timeStamp-this.lastTime<500,a=!this.lastTap||this.lastTap.dist(n)<30;if(i&&a||this.reset(),this.count++,this.lastTime=t.timeStamp,this.lastTap=n,this.count===this.numTaps)return this.reset(),n}};var Gn=function(){this._zoomIn=new qn({numTouches:1,numTaps:2}),this._zoomOut=new qn({numTouches:2,numTaps:1}),this.reset()};Gn.prototype.reset=function(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset()},Gn.prototype.touchstart=function(t,e,r){this._zoomIn.touchstart(t,e,r),this._zoomOut.touchstart(t,e,r)},Gn.prototype.touchmove=function(t,e,r){this._zoomIn.touchmove(t,e,r),this._zoomOut.touchmove(t,e,r)},Gn.prototype.touchend=function(t,e,r){var n=this,i=this._zoomIn.touchend(t,e,r),a=this._zoomOut.touchend(t,e,r);return i?(this._active=!0,t.preventDefault(),setTimeout((function(){return n.reset()}),0),{cameraAnimation:function(e){return e.easeTo({duration:300,zoom:e.getZoom()+1,around:e.unproject(i)},{originalEvent:t})}}):a?(this._active=!0,t.preventDefault(),setTimeout((function(){return n.reset()}),0),{cameraAnimation:function(e){return e.easeTo({duration:300,zoom:e.getZoom()-1,around:e.unproject(a)},{originalEvent:t})}}):void 0},Gn.prototype.touchcancel=function(){this.reset()},Gn.prototype.enable=function(){this._enabled=!0},Gn.prototype.disable=function(){this._enabled=!1,this.reset()},Gn.prototype.isEnabled=function(){return this._enabled},Gn.prototype.isActive=function(){return this._active};var Yn=function(t){this.reset(),this._clickTolerance=t.clickTolerance||1};Yn.prototype.reset=function(){this._active=!1,this._moved=!1,delete this._lastPoint,delete this._eventButton},Yn.prototype._correctButton=function(t,e){return!1},Yn.prototype._move=function(t,e){return{}},Yn.prototype.mousedown=function(t,e){if(!this._lastPoint){var n=r.mouseButton(t);this._correctButton(t,n)&&(this._lastPoint=e,this._eventButton=n)}},Yn.prototype.mousemoveWindow=function(t,e){var r=this._lastPoint;if(r&&(t.preventDefault(),this._moved||!(e.dist(r)0&&(this._active=!0);var i=Vn(n,r),a=new t.Point(0,0),o=new t.Point(0,0),s=0;for(var l in i){var c=i[l],u=this._touches[l];u&&(a._add(c),o._add(c.sub(u)),s++,i[l]=c)}if(this._touches=i,!(sMath.abs(t.x)}var ii=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.reset=function(){t.prototype.reset.call(this),this._valid=void 0,delete this._firstMove,delete this._lastPoints},e.prototype._start=function(t){this._lastPoints=t,ni(t[0].sub(t[1]))&&(this._valid=!1)},e.prototype._move=function(t,e,r){var n=t[0].sub(this._lastPoints[0]),i=t[1].sub(this._lastPoints[1]);if(this._valid=this.gestureBeginsVertically(n,i,r.timeStamp),this._valid){this._lastPoints=t,this._active=!0;return{pitchDelta:-.5*((n.y+i.y)/2)}}},e.prototype.gestureBeginsVertically=function(t,e,r){if(void 0!==this._valid)return this._valid;var n=t.mag()>=2,i=e.mag()>=2;if(n||i){if(!n||!i)return void 0===this._firstMove&&(this._firstMove=r),r-this._firstMove<100&&void 0;var a=t.y>0==e.y>0;return ni(t)&&ni(e)&&a}},e}(Kn),ai={panStep:100,bearingStep:15,pitchStep:10},oi=function(){var t=ai;this._panStep=t.panStep,this._bearingStep=t.bearingStep,this._pitchStep=t.pitchStep};function si(t){return t*(2-t)}oi.prototype.reset=function(){this._active=!1},oi.prototype.keydown=function(t){var e=this;if(!(t.altKey||t.ctrlKey||t.metaKey)){var r=0,n=0,i=0,a=0,o=0;switch(t.keyCode){case 61:case 107:case 171:case 187:r=1;break;case 189:case 109:case 173:r=-1;break;case 37:t.shiftKey?n=-1:(t.preventDefault(),a=-1);break;case 39:t.shiftKey?n=1:(t.preventDefault(),a=1);break;case 38:t.shiftKey?i=1:(t.preventDefault(),o=-1);break;case 40:t.shiftKey?i=-1:(t.preventDefault(),o=1);break;default:return}return{cameraAnimation:function(s){var l=s.getZoom();s.easeTo({duration:300,easeId:\"keyboardHandler\",easing:si,zoom:r?Math.round(l)+r*(t.shiftKey?2:1):l,bearing:s.getBearing()+n*e._bearingStep,pitch:s.getPitch()+i*e._pitchStep,offset:[-a*e._panStep,-o*e._panStep],center:s.getCenter()},{originalEvent:t})}}}},oi.prototype.enable=function(){this._enabled=!0},oi.prototype.disable=function(){this._enabled=!1,this.reset()},oi.prototype.isEnabled=function(){return this._enabled},oi.prototype.isActive=function(){return this._active};var li=function(e,r){this._map=e,this._el=e.getCanvasContainer(),this._handler=r,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=1/450,t.bindAll([\"_onWheel\",\"_onTimeout\",\"_onScrollFrame\",\"_onScrollFinished\"],this)};li.prototype.setZoomRate=function(t){this._defaultZoomRate=t},li.prototype.setWheelZoomRate=function(t){this._wheelZoomRate=t},li.prototype.isEnabled=function(){return!!this._enabled},li.prototype.isActive=function(){return!!this._active||void 0!==this._finishTimeout},li.prototype.isZooming=function(){return!!this._zooming},li.prototype.enable=function(t){this.isEnabled()||(this._enabled=!0,this._aroundCenter=t&&\"center\"===t.around)},li.prototype.disable=function(){this.isEnabled()&&(this._enabled=!1)},li.prototype.wheel=function(e){if(this.isEnabled()){var r=e.deltaMode===t.window.WheelEvent.DOM_DELTA_LINE?40*e.deltaY:e.deltaY,n=t.browser.now(),i=n-(this._lastWheelEventTime||0);this._lastWheelEventTime=n,0!==r&&r%4.000244140625==0?this._type=\"wheel\":0!==r&&Math.abs(r)<4?this._type=\"trackpad\":i>400?(this._type=null,this._lastValue=r,this._timeout=setTimeout(this._onTimeout,40,e)):this._type||(this._type=Math.abs(i*r)<200?\"trackpad\":\"wheel\",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,r+=this._lastValue)),e.shiftKey&&r&&(r/=4),this._type&&(this._lastWheelEvent=e,this._delta-=r,this._active||this._start(e)),e.preventDefault()}},li.prototype._onTimeout=function(t){this._type=\"wheel\",this._delta-=this._lastValue,this._active||this._start(t)},li.prototype._start=function(e){if(this._delta){this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);var n=r.mousePos(this._el,e);this._around=t.LngLat.convert(this._aroundCenter?this._map.getCenter():this._map.unproject(n)),this._aroundPoint=this._map.transform.locationPoint(this._around),this._frameId||(this._frameId=!0,this._handler._triggerRenderFrame())}},li.prototype.renderFrame=function(){return this._onScrollFrame()},li.prototype._onScrollFrame=function(){var e=this;if(this._frameId&&(this._frameId=null,this.isActive())){var r=this._map.transform;if(0!==this._delta){var n=\"wheel\"===this._type&&Math.abs(this._delta)>4.000244140625?this._wheelZoomRate:this._defaultZoomRate,i=2/(1+Math.exp(-Math.abs(this._delta*n)));this._delta<0&&0!==i&&(i=1/i);var a=\"number\"==typeof this._targetZoom?r.zoomScale(this._targetZoom):r.scale;this._targetZoom=Math.min(r.maxZoom,Math.max(r.minZoom,r.scaleZoom(a*i))),\"wheel\"===this._type&&(this._startZoom=r.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0}var o,s=\"number\"==typeof this._targetZoom?this._targetZoom:r.zoom,l=this._startZoom,c=this._easing,u=!1;if(\"wheel\"===this._type&&l&&c){var f=Math.min((t.browser.now()-this._lastWheelEventTime)/200,1),h=c(f);o=t.number(l,s,h),f<1?this._frameId||(this._frameId=!0):u=!0}else o=s,u=!0;return this._active=!0,u&&(this._active=!1,this._finishTimeout=setTimeout((function(){e._zooming=!1,e._handler._triggerRenderFrame(),delete e._targetZoom,delete e._finishTimeout}),200)),{noInertia:!0,needsRenderFrame:!u,zoomDelta:o-r.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}},li.prototype._smoothOutEasing=function(e){var r=t.ease;if(this._prevEase){var n=this._prevEase,i=(t.browser.now()-n.start)/n.duration,a=n.easing(i+.01)-n.easing(i),o=.27/Math.sqrt(a*a+1e-4)*.01,s=Math.sqrt(.0729-o*o);r=t.bezier(o,s,.25,1)}return this._prevEase={start:t.browser.now(),duration:e,easing:r},r},li.prototype.reset=function(){this._active=!1};var ci=function(t,e){this._clickZoom=t,this._tapZoom=e};ci.prototype.enable=function(){this._clickZoom.enable(),this._tapZoom.enable()},ci.prototype.disable=function(){this._clickZoom.disable(),this._tapZoom.disable()},ci.prototype.isEnabled=function(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()},ci.prototype.isActive=function(){return this._clickZoom.isActive()||this._tapZoom.isActive()};var ui=function(){this.reset()};ui.prototype.reset=function(){this._active=!1},ui.prototype.dblclick=function(t,e){return t.preventDefault(),{cameraAnimation:function(r){r.easeTo({duration:300,zoom:r.getZoom()+(t.shiftKey?-1:1),around:r.unproject(e)},{originalEvent:t})}}},ui.prototype.enable=function(){this._enabled=!0},ui.prototype.disable=function(){this._enabled=!1,this.reset()},ui.prototype.isEnabled=function(){return this._enabled},ui.prototype.isActive=function(){return this._active};var fi=function(){this._tap=new qn({numTouches:1,numTaps:1}),this.reset()};fi.prototype.reset=function(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,this._tap.reset()},fi.prototype.touchstart=function(t,e,r){this._swipePoint||(this._tapTime&&t.timeStamp-this._tapTime>500&&this.reset(),this._tapTime?r.length>0&&(this._swipePoint=e[0],this._swipeTouch=r[0].identifier):this._tap.touchstart(t,e,r))},fi.prototype.touchmove=function(t,e,r){if(this._tapTime){if(this._swipePoint){if(r[0].identifier!==this._swipeTouch)return;var n=e[0],i=n.y-this._swipePoint.y;return this._swipePoint=n,t.preventDefault(),this._active=!0,{zoomDelta:i/128}}}else this._tap.touchmove(t,e,r)},fi.prototype.touchend=function(t,e,r){this._tapTime?this._swipePoint&&0===r.length&&this.reset():this._tap.touchend(t,e,r)&&(this._tapTime=t.timeStamp)},fi.prototype.touchcancel=function(){this.reset()},fi.prototype.enable=function(){this._enabled=!0},fi.prototype.disable=function(){this._enabled=!1,this.reset()},fi.prototype.isEnabled=function(){return this._enabled},fi.prototype.isActive=function(){return this._active};var hi=function(t,e,r){this._el=t,this._mousePan=e,this._touchPan=r};hi.prototype.enable=function(t){this._inertiaOptions=t||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add(\"mapboxgl-touch-drag-pan\")},hi.prototype.disable=function(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove(\"mapboxgl-touch-drag-pan\")},hi.prototype.isEnabled=function(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()},hi.prototype.isActive=function(){return this._mousePan.isActive()||this._touchPan.isActive()};var pi=function(t,e,r){this._pitchWithRotate=t.pitchWithRotate,this._mouseRotate=e,this._mousePitch=r};pi.prototype.enable=function(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable()},pi.prototype.disable=function(){this._mouseRotate.disable(),this._mousePitch.disable()},pi.prototype.isEnabled=function(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())},pi.prototype.isActive=function(){return this._mouseRotate.isActive()||this._mousePitch.isActive()};var di=function(t,e,r,n){this._el=t,this._touchZoom=e,this._touchRotate=r,this._tapDragZoom=n,this._rotationDisabled=!1,this._enabled=!0};di.prototype.enable=function(t){this._touchZoom.enable(t),this._rotationDisabled||this._touchRotate.enable(t),this._tapDragZoom.enable(),this._el.classList.add(\"mapboxgl-touch-zoom-rotate\")},di.prototype.disable=function(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove(\"mapboxgl-touch-zoom-rotate\")},di.prototype.isEnabled=function(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()},di.prototype.isActive=function(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()},di.prototype.disableRotation=function(){this._rotationDisabled=!0,this._touchRotate.disable()},di.prototype.enableRotation=function(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable()};var gi=function(t){return t.zoom||t.drag||t.pitch||t.rotate},mi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(t.Event);function vi(t){return t.panDelta&&t.panDelta.mag()||t.zoomDelta||t.bearingDelta||t.pitchDelta}var yi=function(e,n){this._map=e,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new On(e),this._bearingSnap=n.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(n),t.bindAll([\"handleEvent\",\"handleWindowEvent\"],this);var i=this._el;this._listeners=[[i,\"touchstart\",{passive:!1}],[i,\"touchmove\",{passive:!1}],[i,\"touchend\",void 0],[i,\"touchcancel\",void 0],[i,\"mousedown\",void 0],[i,\"mousemove\",void 0],[i,\"mouseup\",void 0],[t.window.document,\"mousemove\",{capture:!0}],[t.window.document,\"mouseup\",void 0],[i,\"mouseover\",void 0],[i,\"mouseout\",void 0],[i,\"dblclick\",void 0],[i,\"click\",void 0],[i,\"keydown\",{capture:!1}],[i,\"keyup\",void 0],[i,\"wheel\",{passive:!1}],[i,\"contextmenu\",void 0],[t.window,\"blur\",void 0]];for(var a=0,o=this._listeners;aa?Math.min(2,_):Math.max(.5,_),w=Math.pow(m,1-e),T=i.unproject(x.add(b.mult(e*w)).mult(g));i.setLocationAtPoint(i.renderWorldCopies?T.wrap():T,d)}n._fireMoveEvents(r)}),(function(t){n._afterEase(r,t)}),e),this},r.prototype._prepareEase=function(e,r,n){void 0===n&&(n={}),this._moving=!0,r||n.moving||this.fire(new t.Event(\"movestart\",e)),this._zooming&&!n.zooming&&this.fire(new t.Event(\"zoomstart\",e)),this._rotating&&!n.rotating&&this.fire(new t.Event(\"rotatestart\",e)),this._pitching&&!n.pitching&&this.fire(new t.Event(\"pitchstart\",e))},r.prototype._fireMoveEvents=function(e){this.fire(new t.Event(\"move\",e)),this._zooming&&this.fire(new t.Event(\"zoom\",e)),this._rotating&&this.fire(new t.Event(\"rotate\",e)),this._pitching&&this.fire(new t.Event(\"pitch\",e))},r.prototype._afterEase=function(e,r){if(!this._easeId||!r||this._easeId!==r){delete this._easeId;var n=this._zooming,i=this._rotating,a=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,n&&this.fire(new t.Event(\"zoomend\",e)),i&&this.fire(new t.Event(\"rotateend\",e)),a&&this.fire(new t.Event(\"pitchend\",e)),this.fire(new t.Event(\"moveend\",e))}},r.prototype.flyTo=function(e,r){var n=this;if(!e.essential&&t.browser.prefersReducedMotion){var i=t.pick(e,[\"center\",\"zoom\",\"bearing\",\"pitch\",\"around\"]);return this.jumpTo(i,r)}this.stop(),e=t.extend({offset:[0,0],speed:1.2,curve:1.42,easing:t.ease},e);var a=this.transform,o=this.getZoom(),s=this.getBearing(),l=this.getPitch(),c=this.getPadding(),u=\"zoom\"in e?t.clamp(+e.zoom,a.minZoom,a.maxZoom):o,f=\"bearing\"in e?this._normalizeBearing(e.bearing,s):s,h=\"pitch\"in e?+e.pitch:l,p=\"padding\"in e?e.padding:a.padding,d=a.zoomScale(u-o),g=t.Point.convert(e.offset),m=a.centerPoint.add(g),v=a.pointLocation(m),y=t.LngLat.convert(e.center||v);this._normalizeCenter(y);var x=a.project(v),b=a.project(y).sub(x),_=e.curve,w=Math.max(a.width,a.height),T=w/d,k=b.mag();if(\"minZoom\"in e){var A=t.clamp(Math.min(e.minZoom,o,u),a.minZoom,a.maxZoom),M=w/a.zoomScale(A-o);_=Math.sqrt(M/k*2)}var S=_*_;function E(t){var e=(T*T-w*w+(t?-1:1)*S*S*k*k)/(2*(t?T:w)*S*k);return Math.log(Math.sqrt(e*e+1)-e)}function L(t){return(Math.exp(t)-Math.exp(-t))/2}function C(t){return(Math.exp(t)+Math.exp(-t))/2}var P=E(0),I=function(t){return C(P)/C(P+_*t)},O=function(t){return w*((C(P)*(L(e=P+_*t)/C(e))-L(P))/S)/k;var e},z=(E(1)-P)/_;if(Math.abs(k)<1e-6||!isFinite(z)){if(Math.abs(w-T)<1e-6)return this.easeTo(e,r);var D=Te.maxDuration&&(e.duration=0),this._zooming=!0,this._rotating=s!==f,this._pitching=h!==l,this._padding=!a.isPaddingEqual(p),this._prepareEase(r,!1),this._ease((function(e){var i=e*z,d=1/I(i);a.zoom=1===e?u:o+a.scaleZoom(d),n._rotating&&(a.bearing=t.number(s,f,e)),n._pitching&&(a.pitch=t.number(l,h,e)),n._padding&&(a.interpolatePadding(c,p,e),m=a.centerPoint.add(g));var v=1===e?y:a.unproject(x.add(b.mult(O(i))).mult(d));a.setLocationAtPoint(a.renderWorldCopies?v.wrap():v,m),n._fireMoveEvents(r)}),(function(){return n._afterEase(r)}),e),this},r.prototype.isEasing=function(){return!!this._easeFrameId},r.prototype.stop=function(){return this._stop()},r.prototype._stop=function(t,e){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){var r=this._onEaseEnd;delete this._onEaseEnd,r.call(this,e)}if(!t){var n=this.handlers;n&&n.stop()}return this},r.prototype._ease=function(e,r,n){!1===n.animate||0===n.duration?(e(1),r()):(this._easeStart=t.browser.now(),this._easeOptions=n,this._onEaseFrame=e,this._onEaseEnd=r,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))},r.prototype._renderFrameCallback=function(){var e=Math.min((t.browser.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(e)),e<1?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()},r.prototype._normalizeBearing=function(e,r){e=t.wrap(e,-180,180);var n=Math.abs(e-r);return Math.abs(e-360-r)180?-360:r<-180?360:0}},r}(t.Evented),bi=function(e){void 0===e&&(e={}),this.options=e,t.bindAll([\"_updateEditLink\",\"_updateData\",\"_updateCompact\"],this)};bi.prototype.getDefaultPosition=function(){return\"bottom-right\"},bi.prototype.onAdd=function(t){var e=this.options&&this.options.compact;return this._map=t,this._container=r.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-attrib\"),this._innerContainer=r.create(\"div\",\"mapboxgl-ctrl-attrib-inner\",this._container),e&&this._container.classList.add(\"mapboxgl-compact\"),this._updateAttributions(),this._updateEditLink(),this._map.on(\"styledata\",this._updateData),this._map.on(\"sourcedata\",this._updateData),this._map.on(\"moveend\",this._updateEditLink),void 0===e&&(this._map.on(\"resize\",this._updateCompact),this._updateCompact()),this._container},bi.prototype.onRemove=function(){r.remove(this._container),this._map.off(\"styledata\",this._updateData),this._map.off(\"sourcedata\",this._updateData),this._map.off(\"moveend\",this._updateEditLink),this._map.off(\"resize\",this._updateCompact),this._map=void 0,this._attribHTML=void 0},bi.prototype._updateEditLink=function(){var e=this._editLink;e||(e=this._editLink=this._container.querySelector(\".mapbox-improve-map\"));var r=[{key:\"owner\",value:this.styleOwner},{key:\"id\",value:this.styleId},{key:\"access_token\",value:this._map._requestManager._customAccessToken||t.config.ACCESS_TOKEN}];if(e){var n=r.reduce((function(t,e,n){return e.value&&(t+=e.key+\"=\"+e.value+(n=0)return!1;return!0}))).join(\" | \");o!==this._attribHTML&&(this._attribHTML=o,t.length?(this._innerContainer.innerHTML=o,this._container.classList.remove(\"mapboxgl-attrib-empty\")):this._container.classList.add(\"mapboxgl-attrib-empty\"),this._editLink=null)}},bi.prototype._updateCompact=function(){this._map.getCanvasContainer().offsetWidth<=640?this._container.classList.add(\"mapboxgl-compact\"):this._container.classList.remove(\"mapboxgl-compact\")};var _i=function(){t.bindAll([\"_updateLogo\"],this),t.bindAll([\"_updateCompact\"],this)};_i.prototype.onAdd=function(t){this._map=t,this._container=r.create(\"div\",\"mapboxgl-ctrl\");var e=r.create(\"a\",\"mapboxgl-ctrl-logo\");return e.target=\"_blank\",e.rel=\"noopener nofollow\",e.href=\"https://www.mapbox.com/\",e.setAttribute(\"aria-label\",this._map._getUIString(\"LogoControl.Title\")),e.setAttribute(\"rel\",\"noopener nofollow\"),this._container.appendChild(e),this._container.style.display=\"none\",this._map.on(\"sourcedata\",this._updateLogo),this._updateLogo(),this._map.on(\"resize\",this._updateCompact),this._updateCompact(),this._container},_i.prototype.onRemove=function(){r.remove(this._container),this._map.off(\"sourcedata\",this._updateLogo),this._map.off(\"resize\",this._updateCompact)},_i.prototype.getDefaultPosition=function(){return\"bottom-left\"},_i.prototype._updateLogo=function(t){t&&\"metadata\"!==t.sourceDataType||(this._container.style.display=this._logoRequired()?\"block\":\"none\")},_i.prototype._logoRequired=function(){if(this._map.style){var t=this._map.style.sourceCaches;for(var e in t){if(t[e].getSource().mapbox_logo)return!0}return!1}},_i.prototype._updateCompact=function(){var t=this._container.children;if(t.length){var e=t[0];this._map.getCanvasContainer().offsetWidth<250?e.classList.add(\"mapboxgl-compact\"):e.classList.remove(\"mapboxgl-compact\")}};var wi=function(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1};wi.prototype.add=function(t){var e=++this._id;return this._queue.push({callback:t,id:e,cancelled:!1}),e},wi.prototype.remove=function(t){for(var e=this._currentlyRunning,r=0,n=e?this._queue.concat(e):this._queue;re.maxZoom)throw new Error(\"maxZoom must be greater than or equal to minZoom\");if(null!=e.minPitch&&null!=e.maxPitch&&e.minPitch>e.maxPitch)throw new Error(\"maxPitch must be greater than or equal to minPitch\");if(null!=e.minPitch&&e.minPitch<0)throw new Error(\"minPitch must be greater than or equal to 0\");if(null!=e.maxPitch&&e.maxPitch>60)throw new Error(\"maxPitch must be less than or equal to 60\");var i=new An(e.minZoom,e.maxZoom,e.minPitch,e.maxPitch,e.renderWorldCopies);if(n.call(this,i,e),this._interactive=e.interactive,this._maxTileCacheSize=e.maxTileCacheSize,this._failIfMajorPerformanceCaveat=e.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=e.preserveDrawingBuffer,this._antialias=e.antialias,this._trackResize=e.trackResize,this._bearingSnap=e.bearingSnap,this._refreshExpiredTiles=e.refreshExpiredTiles,this._fadeDuration=e.fadeDuration,this._crossSourceCollisions=e.crossSourceCollisions,this._crossFadingFactor=1,this._collectResourceTiming=e.collectResourceTiming,this._renderTaskQueue=new wi,this._controls=[],this._mapId=t.uniqueId(),this._locale=t.extend({},Ti,e.locale),this._requestManager=new t.RequestManager(e.transformRequest,e.accessToken),\"string\"==typeof e.container){if(this._container=t.window.document.getElementById(e.container),!this._container)throw new Error(\"Container '\"+e.container+\"' not found.\")}else{if(!(e.container instanceof Ai))throw new Error(\"Invalid type: 'container' must be a String or HTMLElement.\");this._container=e.container}if(e.maxBounds&&this.setMaxBounds(e.maxBounds),t.bindAll([\"_onWindowOnline\",\"_onWindowResize\",\"_contextLost\",\"_contextRestored\"],this),this._setupContainer(),this._setupPainter(),void 0===this.painter)throw new Error(\"Failed to initialize WebGL.\");this.on(\"move\",(function(){return r._update(!1)})),this.on(\"moveend\",(function(){return r._update(!1)})),this.on(\"zoom\",(function(){return r._update(!0)})),void 0!==t.window&&(t.window.addEventListener(\"online\",this._onWindowOnline,!1),t.window.addEventListener(\"resize\",this._onWindowResize,!1)),this.handlers=new yi(this,e);var a=\"string\"==typeof e.hash&&e.hash||void 0;this._hash=e.hash&&new Sn(a).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:e.center,zoom:e.zoom,bearing:e.bearing,pitch:e.pitch}),e.bounds&&(this.resize(),this.fitBounds(e.bounds,t.extend({},e.fitBoundsOptions,{duration:0})))),this.resize(),this._localIdeographFontFamily=e.localIdeographFontFamily,e.style&&this.setStyle(e.style,{localIdeographFontFamily:e.localIdeographFontFamily}),e.attributionControl&&this.addControl(new bi({customAttribution:e.customAttribution})),this.addControl(new _i,e.logoPosition),this.on(\"style.load\",(function(){r.transform.unmodified&&r.jumpTo(r.style.stylesheet)})),this.on(\"data\",(function(e){r._update(\"style\"===e.dataType),r.fire(new t.Event(e.dataType+\"data\",e))})),this.on(\"dataloading\",(function(e){r.fire(new t.Event(e.dataType+\"dataloading\",e))}))}n&&(i.__proto__=n),i.prototype=Object.create(n&&n.prototype),i.prototype.constructor=i;var a={showTileBoundaries:{configurable:!0},showPadding:{configurable:!0},showCollisionBoxes:{configurable:!0},showOverdrawInspector:{configurable:!0},repaint:{configurable:!0},vertices:{configurable:!0},version:{configurable:!0}};return i.prototype._getMapId=function(){return this._mapId},i.prototype.addControl=function(e,r){if(void 0===r&&e.getDefaultPosition&&(r=e.getDefaultPosition()),void 0===r&&(r=\"top-right\"),!e||!e.onAdd)return this.fire(new t.ErrorEvent(new Error(\"Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.\")));var n=e.onAdd(this);this._controls.push(e);var i=this._controlPositions[r];return-1!==r.indexOf(\"bottom\")?i.insertBefore(n,i.firstChild):i.appendChild(n),this},i.prototype.removeControl=function(e){if(!e||!e.onRemove)return this.fire(new t.ErrorEvent(new Error(\"Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.\")));var r=this._controls.indexOf(e);return r>-1&&this._controls.splice(r,1),e.onRemove(this),this},i.prototype.resize=function(e){var r=this._containerDimensions(),n=r[0],i=r[1];this._resizeCanvas(n,i),this.transform.resize(n,i),this.painter.resize(n,i);var a=!this._moving;return a&&(this.stop(),this.fire(new t.Event(\"movestart\",e)).fire(new t.Event(\"move\",e))),this.fire(new t.Event(\"resize\",e)),a&&this.fire(new t.Event(\"moveend\",e)),this},i.prototype.getBounds=function(){return this.transform.getBounds()},i.prototype.getMaxBounds=function(){return this.transform.getMaxBounds()},i.prototype.setMaxBounds=function(e){return this.transform.setMaxBounds(t.LngLatBounds.convert(e)),this._update()},i.prototype.setMinZoom=function(t){if((t=null==t?-2:t)>=-2&&t<=this.transform.maxZoom)return this.transform.minZoom=t,this._update(),this.getZoom()=this.transform.minZoom)return this.transform.maxZoom=t,this._update(),this.getZoom()>t&&this.setZoom(t),this;throw new Error(\"maxZoom must be greater than the current minZoom\")},i.prototype.getMaxZoom=function(){return this.transform.maxZoom},i.prototype.setMinPitch=function(t){if((t=null==t?0:t)<0)throw new Error(\"minPitch must be greater than or equal to 0\");if(t>=0&&t<=this.transform.maxPitch)return this.transform.minPitch=t,this._update(),this.getPitch()60)throw new Error(\"maxPitch must be less than or equal to 60\");if(t>=this.transform.minPitch)return this.transform.maxPitch=t,this._update(),this.getPitch()>t&&this.setPitch(t),this;throw new Error(\"maxPitch must be greater than the current minPitch\")},i.prototype.getMaxPitch=function(){return this.transform.maxPitch},i.prototype.getRenderWorldCopies=function(){return this.transform.renderWorldCopies},i.prototype.setRenderWorldCopies=function(t){return this.transform.renderWorldCopies=t,this._update()},i.prototype.project=function(e){return this.transform.locationPoint(t.LngLat.convert(e))},i.prototype.unproject=function(e){return this.transform.pointLocation(t.Point.convert(e))},i.prototype.isMoving=function(){return this._moving||this.handlers.isMoving()},i.prototype.isZooming=function(){return this._zooming||this.handlers.isZooming()},i.prototype.isRotating=function(){return this._rotating||this.handlers.isRotating()},i.prototype._createDelegatedListener=function(t,e,r){var n,i=this;if(\"mouseenter\"===t||\"mouseover\"===t){var a=!1;return{layer:e,listener:r,delegates:{mousemove:function(n){var o=i.getLayer(e)?i.queryRenderedFeatures(n.point,{layers:[e]}):[];o.length?a||(a=!0,r.call(i,new Rn(t,i,n.originalEvent,{features:o}))):a=!1},mouseout:function(){a=!1}}}}if(\"mouseleave\"===t||\"mouseout\"===t){var o=!1;return{layer:e,listener:r,delegates:{mousemove:function(n){(i.getLayer(e)?i.queryRenderedFeatures(n.point,{layers:[e]}):[]).length?o=!0:o&&(o=!1,r.call(i,new Rn(t,i,n.originalEvent)))},mouseout:function(e){o&&(o=!1,r.call(i,new Rn(t,i,e.originalEvent)))}}}}return{layer:e,listener:r,delegates:(n={},n[t]=function(t){var n=i.getLayer(e)?i.queryRenderedFeatures(t.point,{layers:[e]}):[];n.length&&(t.features=n,r.call(i,t),delete t.features)},n)}},i.prototype.on=function(t,e,r){if(void 0===r)return n.prototype.on.call(this,t,e);var i=this._createDelegatedListener(t,e,r);for(var a in this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[t]=this._delegatedListeners[t]||[],this._delegatedListeners[t].push(i),i.delegates)this.on(a,i.delegates[a]);return this},i.prototype.once=function(t,e,r){if(void 0===r)return n.prototype.once.call(this,t,e);var i=this._createDelegatedListener(t,e,r);for(var a in i.delegates)this.once(a,i.delegates[a]);return this},i.prototype.off=function(t,e,r){var i=this;if(void 0===r)return n.prototype.off.call(this,t,e);return this._delegatedListeners&&this._delegatedListeners[t]&&function(n){for(var a=n[t],o=0;o180;){var s=n.locationPoint(e);if(s.x>=0&&s.y>=0&&s.x<=n.width&&s.y<=n.height)break;e.lng>n.center.lng?e.lng-=360:e.lng+=360}return e}Ii.prototype.down=function(t,e){this.mouseRotate.mousedown(t,e),this.mousePitch&&this.mousePitch.mousedown(t,e),r.disableDrag()},Ii.prototype.move=function(t,e){var r=this.map,n=this.mouseRotate.mousemoveWindow(t,e);if(n&&n.bearingDelta&&r.setBearing(r.getBearing()+n.bearingDelta),this.mousePitch){var i=this.mousePitch.mousemoveWindow(t,e);i&&i.pitchDelta&&r.setPitch(r.getPitch()+i.pitchDelta)}},Ii.prototype.off=function(){var t=this.element;r.removeEventListener(t,\"mousedown\",this.mousedown),r.removeEventListener(t,\"touchstart\",this.touchstart,{passive:!1}),r.removeEventListener(t,\"touchmove\",this.touchmove),r.removeEventListener(t,\"touchend\",this.touchend),r.removeEventListener(t,\"touchcancel\",this.reset),this.offTemp()},Ii.prototype.offTemp=function(){r.enableDrag(),r.removeEventListener(t.window,\"mousemove\",this.mousemove),r.removeEventListener(t.window,\"mouseup\",this.mouseup)},Ii.prototype.mousedown=function(e){this.down(t.extend({},e,{ctrlKey:!0,preventDefault:function(){return e.preventDefault()}}),r.mousePos(this.element,e)),r.addEventListener(t.window,\"mousemove\",this.mousemove),r.addEventListener(t.window,\"mouseup\",this.mouseup)},Ii.prototype.mousemove=function(t){this.move(t,r.mousePos(this.element,t))},Ii.prototype.mouseup=function(t){this.mouseRotate.mouseupWindow(t),this.mousePitch&&this.mousePitch.mouseupWindow(t),this.offTemp()},Ii.prototype.touchstart=function(t){1!==t.targetTouches.length?this.reset():(this._startPos=this._lastPos=r.touchPos(this.element,t.targetTouches)[0],this.down({type:\"mousedown\",button:0,ctrlKey:!0,preventDefault:function(){return t.preventDefault()}},this._startPos))},Ii.prototype.touchmove=function(t){1!==t.targetTouches.length?this.reset():(this._lastPos=r.touchPos(this.element,t.targetTouches)[0],this.move({preventDefault:function(){return t.preventDefault()}},this._lastPos))},Ii.prototype.touchend=function(t){0===t.targetTouches.length&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos)e.getEast()||r.latitudee.getNorth())},n.prototype._setErrorState=function(){switch(this._watchState){case\"WAITING_ACTIVE\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\");break;case\"ACTIVE_LOCK\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\");break;case\"BACKGROUND\":this._watchState=\"BACKGROUND_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\")}},n.prototype._onSuccess=function(e){if(this._map){if(this._isOutOfMapMaxBounds(e))return this._setErrorState(),this.fire(new t.Event(\"outofmaxbounds\",e)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=e,this._watchState){case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"BACKGROUND\":case\"BACKGROUND_ERROR\":this._watchState=\"BACKGROUND\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\")}this.options.showUserLocation&&\"OFF\"!==this._watchState&&this._updateMarker(e),this.options.trackUserLocation&&\"ACTIVE_LOCK\"!==this._watchState||this._updateCamera(e),this.options.showUserLocation&&this._dotElement.classList.remove(\"mapboxgl-user-location-dot-stale\"),this.fire(new t.Event(\"geolocate\",e)),this._finish()}},n.prototype._updateCamera=function(e){var r=new t.LngLat(e.coords.longitude,e.coords.latitude),n=e.coords.accuracy,i=this._map.getBearing(),a=t.extend({bearing:i},this.options.fitBoundsOptions);this._map.fitBounds(r.toBounds(n),a,{geolocateSource:!0})},n.prototype._updateMarker=function(e){if(e){var r=new t.LngLat(e.coords.longitude,e.coords.latitude);this._accuracyCircleMarker.setLngLat(r).addTo(this._map),this._userLocationDotMarker.setLngLat(r).addTo(this._map),this._accuracy=e.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()},n.prototype._updateCircleRadius=function(){var t=this._map._container.clientHeight/2,e=this._map.unproject([0,t]),r=this._map.unproject([1,t]),n=e.distanceTo(r),i=Math.ceil(2*this._accuracy/n);this._circleElement.style.width=i+\"px\",this._circleElement.style.height=i+\"px\"},n.prototype._onZoom=function(){this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()},n.prototype._onError=function(e){if(this._map){if(this.options.trackUserLocation)if(1===e.code){this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.disabled=!0;var r=this._map._getUIString(\"GeolocateControl.LocationNotAvailable\");this._geolocateButton.title=r,this._geolocateButton.setAttribute(\"aria-label\",r),void 0!==this._geolocationWatchID&&this._clearWatch()}else{if(3===e.code&&ji)return;this._setErrorState()}\"OFF\"!==this._watchState&&this.options.showUserLocation&&this._dotElement.classList.add(\"mapboxgl-user-location-dot-stale\"),this.fire(new t.Event(\"error\",e)),this._finish()}},n.prototype._finish=function(){this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},n.prototype._setupUI=function(e){var n=this;if(this._container.addEventListener(\"contextmenu\",(function(t){return t.preventDefault()})),this._geolocateButton=r.create(\"button\",\"mapboxgl-ctrl-geolocate\",this._container),r.create(\"span\",\"mapboxgl-ctrl-icon\",this._geolocateButton).setAttribute(\"aria-hidden\",!0),this._geolocateButton.type=\"button\",!1===e){t.warnOnce(\"Geolocation support is not available so the GeolocateControl will be disabled.\");var i=this._map._getUIString(\"GeolocateControl.LocationNotAvailable\");this._geolocateButton.disabled=!0,this._geolocateButton.title=i,this._geolocateButton.setAttribute(\"aria-label\",i)}else{var a=this._map._getUIString(\"GeolocateControl.FindMyLocation\");this._geolocateButton.title=a,this._geolocateButton.setAttribute(\"aria-label\",a)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this._watchState=\"OFF\"),this.options.showUserLocation&&(this._dotElement=r.create(\"div\",\"mapboxgl-user-location-dot\"),this._userLocationDotMarker=new Fi(this._dotElement),this._circleElement=r.create(\"div\",\"mapboxgl-user-location-accuracy-circle\"),this._accuracyCircleMarker=new Fi({element:this._circleElement,pitchAlignment:\"map\"}),this.options.trackUserLocation&&(this._watchState=\"OFF\"),this._map.on(\"zoom\",this._onZoom)),this._geolocateButton.addEventListener(\"click\",this.trigger.bind(this)),this._setup=!0,this.options.trackUserLocation&&this._map.on(\"movestart\",(function(e){var r=e.originalEvent&&\"resize\"===e.originalEvent.type;e.geolocateSource||\"ACTIVE_LOCK\"!==n._watchState||r||(n._watchState=\"BACKGROUND\",n._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\"),n._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),n.fire(new t.Event(\"trackuserlocationend\")))}))},n.prototype.trigger=function(){if(!this._setup)return t.warnOnce(\"Geolocate control triggered before added to a map\"),!1;if(this.options.trackUserLocation){switch(this._watchState){case\"OFF\":this._watchState=\"WAITING_ACTIVE\",this.fire(new t.Event(\"trackuserlocationstart\"));break;case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":case\"BACKGROUND_ERROR\":Ni--,ji=!1,this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this.fire(new t.Event(\"trackuserlocationend\"));break;case\"BACKGROUND\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new t.Event(\"trackuserlocationstart\"))}switch(this._watchState){case\"WAITING_ACTIVE\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"ACTIVE_LOCK\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"ACTIVE_ERROR\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\");break;case\"BACKGROUND\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\");break;case\"BACKGROUND_ERROR\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background-error\")}if(\"OFF\"===this._watchState&&void 0!==this._geolocationWatchID)this._clearWatch();else if(void 0===this._geolocationWatchID){var e;this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"true\"),++Ni>1?(e={maximumAge:6e5,timeout:0},ji=!0):(e=this.options.positionOptions,ji=!1),this._geolocationWatchID=t.window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,e)}}else t.window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return!0},n.prototype._clearWatch=function(){t.window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this.options.showUserLocation&&this._updateMarker(null)},n}(t.Evented),Vi={maxWidth:100,unit:\"metric\"},Hi=function(e){this.options=t.extend({},Vi,e),t.bindAll([\"_onMove\",\"setUnit\"],this)};function qi(t,e,r){var n=r&&r.maxWidth||100,i=t._container.clientHeight/2,a=t.unproject([0,i]),o=t.unproject([n,i]),s=a.distanceTo(o);if(r&&\"imperial\"===r.unit){var l=3.2808*s;if(l>5280)Gi(e,n,l/5280,t._getUIString(\"ScaleControl.Miles\"));else Gi(e,n,l,t._getUIString(\"ScaleControl.Feet\"))}else if(r&&\"nautical\"===r.unit){Gi(e,n,s/1852,t._getUIString(\"ScaleControl.NauticalMiles\"))}else s>=1e3?Gi(e,n,s/1e3,t._getUIString(\"ScaleControl.Kilometers\")):Gi(e,n,s,t._getUIString(\"ScaleControl.Meters\"))}function Gi(t,e,r,n){var i,a,o,s=(i=r,a=Math.pow(10,(\"\"+Math.floor(i)).length-1),o=(o=i/a)>=10?10:o>=5?5:o>=3?3:o>=2?2:o>=1?1:function(t){var e=Math.pow(10,Math.ceil(-Math.log(t)/Math.LN10));return Math.round(t*e)/e}(o),a*o),l=s/r;t.style.width=e*l+\"px\",t.innerHTML=s+\" \"+n}Hi.prototype.getDefaultPosition=function(){return\"bottom-left\"},Hi.prototype._onMove=function(){qi(this._map,this._container,this.options)},Hi.prototype.onAdd=function(t){return this._map=t,this._container=r.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-scale\",t.getContainer()),this._map.on(\"move\",this._onMove),this._onMove(),this._container},Hi.prototype.onRemove=function(){r.remove(this._container),this._map.off(\"move\",this._onMove),this._map=void 0},Hi.prototype.setUnit=function(t){this.options.unit=t,qi(this._map,this._container,this.options)};var Yi=function(e){this._fullscreen=!1,e&&e.container&&(e.container instanceof t.window.HTMLElement?this._container=e.container:t.warnOnce(\"Full screen control 'container' must be a DOM element.\")),t.bindAll([\"_onClickFullscreen\",\"_changeIcon\"],this),\"onfullscreenchange\"in t.window.document?this._fullscreenchange=\"fullscreenchange\":\"onmozfullscreenchange\"in t.window.document?this._fullscreenchange=\"mozfullscreenchange\":\"onwebkitfullscreenchange\"in t.window.document?this._fullscreenchange=\"webkitfullscreenchange\":\"onmsfullscreenchange\"in t.window.document&&(this._fullscreenchange=\"MSFullscreenChange\")};Yi.prototype.onAdd=function(e){return this._map=e,this._container||(this._container=this._map.getContainer()),this._controlContainer=r.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-group\"),this._checkFullscreenSupport()?this._setupUI():(this._controlContainer.style.display=\"none\",t.warnOnce(\"This device does not support fullscreen mode.\")),this._controlContainer},Yi.prototype.onRemove=function(){r.remove(this._controlContainer),this._map=null,t.window.document.removeEventListener(this._fullscreenchange,this._changeIcon)},Yi.prototype._checkFullscreenSupport=function(){return!!(t.window.document.fullscreenEnabled||t.window.document.mozFullScreenEnabled||t.window.document.msFullscreenEnabled||t.window.document.webkitFullscreenEnabled)},Yi.prototype._setupUI=function(){var e=this._fullscreenButton=r.create(\"button\",\"mapboxgl-ctrl-fullscreen\",this._controlContainer);r.create(\"span\",\"mapboxgl-ctrl-icon\",e).setAttribute(\"aria-hidden\",!0),e.type=\"button\",this._updateTitle(),this._fullscreenButton.addEventListener(\"click\",this._onClickFullscreen),t.window.document.addEventListener(this._fullscreenchange,this._changeIcon)},Yi.prototype._updateTitle=function(){var t=this._getTitle();this._fullscreenButton.setAttribute(\"aria-label\",t),this._fullscreenButton.title=t},Yi.prototype._getTitle=function(){return this._map._getUIString(this._isFullscreen()?\"FullscreenControl.Exit\":\"FullscreenControl.Enter\")},Yi.prototype._isFullscreen=function(){return this._fullscreen},Yi.prototype._changeIcon=function(){(t.window.document.fullscreenElement||t.window.document.mozFullScreenElement||t.window.document.webkitFullscreenElement||t.window.document.msFullscreenElement)===this._container!==this._fullscreen&&(this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle(\"mapboxgl-ctrl-shrink\"),this._fullscreenButton.classList.toggle(\"mapboxgl-ctrl-fullscreen\"),this._updateTitle())},Yi.prototype._onClickFullscreen=function(){this._isFullscreen()?t.window.document.exitFullscreen?t.window.document.exitFullscreen():t.window.document.mozCancelFullScreen?t.window.document.mozCancelFullScreen():t.window.document.msExitFullscreen?t.window.document.msExitFullscreen():t.window.document.webkitCancelFullScreen&&t.window.document.webkitCancelFullScreen():this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen&&this._container.webkitRequestFullscreen()};var Wi={closeButton:!0,closeOnClick:!0,className:\"\",maxWidth:\"240px\"},Xi=function(e){function n(r){e.call(this),this.options=t.extend(Object.create(Wi),r),t.bindAll([\"_update\",\"_onClose\",\"remove\",\"_onMouseMove\",\"_onMouseUp\",\"_onDrag\"],this)}return e&&(n.__proto__=e),n.prototype=Object.create(e&&e.prototype),n.prototype.constructor=n,n.prototype.addTo=function(e){return this._map&&this.remove(),this._map=e,this.options.closeOnClick&&this._map.on(\"click\",this._onClose),this.options.closeOnMove&&this._map.on(\"move\",this._onClose),this._map.on(\"remove\",this.remove),this._update(),this._trackPointer?(this._map.on(\"mousemove\",this._onMouseMove),this._map.on(\"mouseup\",this._onMouseUp),this._container&&this._container.classList.add(\"mapboxgl-popup-track-pointer\"),this._map._canvasContainer.classList.add(\"mapboxgl-track-pointer\")):this._map.on(\"move\",this._update),this.fire(new t.Event(\"open\")),this},n.prototype.isOpen=function(){return!!this._map},n.prototype.remove=function(){return this._content&&r.remove(this._content),this._container&&(r.remove(this._container),delete this._container),this._map&&(this._map.off(\"move\",this._update),this._map.off(\"move\",this._onClose),this._map.off(\"click\",this._onClose),this._map.off(\"remove\",this.remove),this._map.off(\"mousemove\",this._onMouseMove),this._map.off(\"mouseup\",this._onMouseUp),this._map.off(\"drag\",this._onDrag),delete this._map),this.fire(new t.Event(\"close\")),this},n.prototype.getLngLat=function(){return this._lngLat},n.prototype.setLngLat=function(e){return this._lngLat=t.LngLat.convert(e),this._pos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on(\"move\",this._update),this._map.off(\"mousemove\",this._onMouseMove),this._container&&this._container.classList.remove(\"mapboxgl-popup-track-pointer\"),this._map._canvasContainer.classList.remove(\"mapboxgl-track-pointer\")),this},n.prototype.trackPointer=function(){return this._trackPointer=!0,this._pos=null,this._update(),this._map&&(this._map.off(\"move\",this._update),this._map.on(\"mousemove\",this._onMouseMove),this._map.on(\"drag\",this._onDrag),this._container&&this._container.classList.add(\"mapboxgl-popup-track-pointer\"),this._map._canvasContainer.classList.add(\"mapboxgl-track-pointer\")),this},n.prototype.getElement=function(){return this._container},n.prototype.setText=function(e){return this.setDOMContent(t.window.document.createTextNode(e))},n.prototype.setHTML=function(e){var r,n=t.window.document.createDocumentFragment(),i=t.window.document.createElement(\"body\");for(i.innerHTML=e;r=i.firstChild;)n.appendChild(r);return this.setDOMContent(n)},n.prototype.getMaxWidth=function(){return this._container&&this._container.style.maxWidth},n.prototype.setMaxWidth=function(t){return this.options.maxWidth=t,this._update(),this},n.prototype.setDOMContent=function(t){return this._createContent(),this._content.appendChild(t),this._update(),this},n.prototype.addClassName=function(t){this._container&&this._container.classList.add(t)},n.prototype.removeClassName=function(t){this._container&&this._container.classList.remove(t)},n.prototype.toggleClassName=function(t){if(this._container)return this._container.classList.toggle(t)},n.prototype._createContent=function(){this._content&&r.remove(this._content),this._content=r.create(\"div\",\"mapboxgl-popup-content\",this._container),this.options.closeButton&&(this._closeButton=r.create(\"button\",\"mapboxgl-popup-close-button\",this._content),this._closeButton.type=\"button\",this._closeButton.setAttribute(\"aria-label\",\"Close popup\"),this._closeButton.innerHTML=\"×\",this._closeButton.addEventListener(\"click\",this._onClose))},n.prototype._onMouseUp=function(t){this._update(t.point)},n.prototype._onMouseMove=function(t){this._update(t.point)},n.prototype._onDrag=function(t){this._update(t.point)},n.prototype._update=function(e){var n=this,i=this._lngLat||this._trackPointer;if(this._map&&i&&this._content&&(this._container||(this._container=r.create(\"div\",\"mapboxgl-popup\",this._map.getContainer()),this._tip=r.create(\"div\",\"mapboxgl-popup-tip\",this._container),this._container.appendChild(this._content),this.options.className&&this.options.className.split(\" \").forEach((function(t){return n._container.classList.add(t)})),this._trackPointer&&this._container.classList.add(\"mapboxgl-popup-track-pointer\")),this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._map.transform.renderWorldCopies&&!this._trackPointer&&(this._lngLat=Oi(this._lngLat,this._pos,this._map.transform)),!this._trackPointer||e)){var a=this._pos=this._trackPointer&&e?e:this._map.project(this._lngLat),o=this.options.anchor,s=function e(r){if(r){if(\"number\"==typeof r){var n=Math.round(Math.sqrt(.5*Math.pow(r,2)));return{center:new t.Point(0,0),top:new t.Point(0,r),\"top-left\":new t.Point(n,n),\"top-right\":new t.Point(-n,n),bottom:new t.Point(0,-r),\"bottom-left\":new t.Point(n,-n),\"bottom-right\":new t.Point(-n,-n),left:new t.Point(r,0),right:new t.Point(-r,0)}}if(r instanceof t.Point||Array.isArray(r)){var i=t.Point.convert(r);return{center:i,top:i,\"top-left\":i,\"top-right\":i,bottom:i,\"bottom-left\":i,\"bottom-right\":i,left:i,right:i}}return{center:t.Point.convert(r.center||[0,0]),top:t.Point.convert(r.top||[0,0]),\"top-left\":t.Point.convert(r[\"top-left\"]||[0,0]),\"top-right\":t.Point.convert(r[\"top-right\"]||[0,0]),bottom:t.Point.convert(r.bottom||[0,0]),\"bottom-left\":t.Point.convert(r[\"bottom-left\"]||[0,0]),\"bottom-right\":t.Point.convert(r[\"bottom-right\"]||[0,0]),left:t.Point.convert(r.left||[0,0]),right:t.Point.convert(r.right||[0,0])}}return e(new t.Point(0,0))}(this.options.offset);if(!o){var l,c=this._container.offsetWidth,u=this._container.offsetHeight;l=a.y+s.bottom.ythis._map.transform.height-u?[\"bottom\"]:[],a.xthis._map.transform.width-c/2&&l.push(\"right\"),o=0===l.length?\"bottom\":l.join(\"-\")}var f=a.add(s[o]).round();r.setTransform(this._container,zi[o]+\" translate(\"+f.x+\"px,\"+f.y+\"px)\"),Di(this._container,o,\"popup\")}},n.prototype._onClose=function(){this.remove()},n}(t.Evented);var Zi={version:t.version,supported:e,setRTLTextPlugin:t.setRTLTextPlugin,getRTLTextPluginStatus:t.getRTLTextPluginStatus,Map:Ei,NavigationControl:Pi,GeolocateControl:Ui,AttributionControl:bi,ScaleControl:Hi,FullscreenControl:Yi,Popup:Xi,Marker:Fi,Style:qe,LngLat:t.LngLat,LngLatBounds:t.LngLatBounds,Point:t.Point,MercatorCoordinate:t.MercatorCoordinate,Evented:t.Evented,config:t.config,prewarm:function(){Bt().acquire(zt)},clearPrewarmedResources:function(){var t=Rt;t&&(t.isPreloaded()&&1===t.numActive()?(t.release(zt),Rt=null):console.warn(\"Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()\"))},get accessToken(){return t.config.ACCESS_TOKEN},set accessToken(e){t.config.ACCESS_TOKEN=e},get baseApiUrl(){return t.config.API_URL},set baseApiUrl(e){t.config.API_URL=e},get workerCount(){return Dt.workerCount},set workerCount(t){Dt.workerCount=t},get maxParallelImageRequests(){return t.config.MAX_PARALLEL_IMAGE_REQUESTS},set maxParallelImageRequests(e){t.config.MAX_PARALLEL_IMAGE_REQUESTS=e},clearStorage:function(e){t.clearTileCache(e)},workerUrl:\"\"};return Zi})),r}))},{}],240:[function(t,e,r){\"use strict\";e.exports=Math.log2||function(t){return Math.log(t)*Math.LOG2E}},{}],241:[function(t,e,r){\"use strict\";e.exports=function(t,e){e||(e=t,t=window);var r=0,i=0,a=0,o={shift:!1,alt:!1,control:!1,meta:!1},s=!1;function l(t){var e=!1;return\"altKey\"in t&&(e=e||t.altKey!==o.alt,o.alt=!!t.altKey),\"shiftKey\"in t&&(e=e||t.shiftKey!==o.shift,o.shift=!!t.shiftKey),\"ctrlKey\"in t&&(e=e||t.ctrlKey!==o.control,o.control=!!t.ctrlKey),\"metaKey\"in t&&(e=e||t.metaKey!==o.meta,o.meta=!!t.metaKey),e}function c(t,s){var c=n.x(s),u=n.y(s);\"buttons\"in s&&(t=0|s.buttons),(t!==r||c!==i||u!==a||l(s))&&(r=0|t,i=c||0,a=u||0,e&&e(r,i,a,o))}function u(t){c(0,t)}function f(){(r||i||a||o.shift||o.alt||o.meta||o.control)&&(i=a=0,r=0,o.shift=o.alt=o.control=o.meta=!1,e&&e(0,0,0,o))}function h(t){l(t)&&e&&e(r,i,a,o)}function p(t){0===n.buttons(t)?c(0,t):c(r,t)}function d(t){c(r|n.buttons(t),t)}function g(t){c(r&~n.buttons(t),t)}function m(){s||(s=!0,t.addEventListener(\"mousemove\",p),t.addEventListener(\"mousedown\",d),t.addEventListener(\"mouseup\",g),t.addEventListener(\"mouseleave\",u),t.addEventListener(\"mouseenter\",u),t.addEventListener(\"mouseout\",u),t.addEventListener(\"mouseover\",u),t.addEventListener(\"blur\",f),t.addEventListener(\"keyup\",h),t.addEventListener(\"keydown\",h),t.addEventListener(\"keypress\",h),t!==window&&(window.addEventListener(\"blur\",f),window.addEventListener(\"keyup\",h),window.addEventListener(\"keydown\",h),window.addEventListener(\"keypress\",h)))}m();var v={element:t};return Object.defineProperties(v,{enabled:{get:function(){return s},set:function(e){e?m():function(){if(!s)return;s=!1,t.removeEventListener(\"mousemove\",p),t.removeEventListener(\"mousedown\",d),t.removeEventListener(\"mouseup\",g),t.removeEventListener(\"mouseleave\",u),t.removeEventListener(\"mouseenter\",u),t.removeEventListener(\"mouseout\",u),t.removeEventListener(\"mouseover\",u),t.removeEventListener(\"blur\",f),t.removeEventListener(\"keyup\",h),t.removeEventListener(\"keydown\",h),t.removeEventListener(\"keypress\",h),t!==window&&(window.removeEventListener(\"blur\",f),window.removeEventListener(\"keyup\",h),window.removeEventListener(\"keydown\",h),window.removeEventListener(\"keypress\",h))}()},enumerable:!0},buttons:{get:function(){return r},enumerable:!0},x:{get:function(){return i},enumerable:!0},y:{get:function(){return a},enumerable:!0},mods:{get:function(){return o},enumerable:!0}}),v};var n=t(\"mouse-event\")},{\"mouse-event\":243}],242:[function(t,e,r){var n={left:0,top:0};e.exports=function(t,e,r){e=e||t.currentTarget||t.srcElement,Array.isArray(r)||(r=[0,0]);var i=t.clientX||0,a=t.clientY||0,o=(s=e,s===window||s===document||s===document.body?n:s.getBoundingClientRect());var s;return r[0]=i-o.left,r[1]=a-o.top,r}},{}],243:[function(t,e,r){\"use strict\";function n(t){return t.target||t.srcElement||window}r.buttons=function(t){if(\"object\"==typeof t){if(\"buttons\"in t)return t.buttons;if(\"which\"in t){if(2===(e=t.which))return 4;if(3===e)return 2;if(e>0)return 1<=0)return 1<=-t},pointBetween:function(e,r,n){var i=e[1]-r[1],a=n[0]-r[0],o=e[0]-r[0],s=n[1]-r[1],l=o*a+i*s;return!(l-t)},pointsSameX:function(e,r){return Math.abs(e[0]-r[0])t!=o-i>t&&(a-c)*(i-u)/(o-u)+c-n>t&&(s=!s),a=c,o=u}return s}};return e}},{}],257:[function(t,e,r){var n={toPolygon:function(t,e){function r(e){if(e.length<=0)return t.segments({inverted:!1,regions:[]});function r(e){var r=e.slice(0,e.length-1);return t.segments({inverted:!1,regions:[r]})}for(var n=r(e[0]),i=1;i0}))}function u(t,n){var i=t.seg,a=n.seg,o=i.start,s=i.end,c=a.start,u=a.end;r&&r.checkIntersection(i,a);var f=e.linesIntersect(o,s,c,u);if(!1===f){if(!e.pointsCollinear(o,s,c))return!1;if(e.pointsSame(o,u)||e.pointsSame(s,c))return!1;var h=e.pointsSame(o,c),p=e.pointsSame(s,u);if(h&&p)return n;var d=!h&&e.pointBetween(o,c,u),g=!p&&e.pointBetween(s,c,u);if(h)return g?l(n,s):l(t,u),n;d&&(p||(g?l(n,s):l(t,u)),l(n,o))}else 0===f.alongA&&(-1===f.alongB?l(t,c):0===f.alongB?l(t,f.pt):1===f.alongB&&l(t,u)),0===f.alongB&&(-1===f.alongA?l(n,o):0===f.alongA?l(n,f.pt):1===f.alongA&&l(n,s));return!1}for(var f=[];!a.isEmpty();){var h=a.getHead();if(r&&r.vert(h.pt[0]),h.isStart){r&&r.segmentNew(h.seg,h.primary);var p=c(h),d=p.before?p.before.ev:null,g=p.after?p.after.ev:null;function m(){if(d){var t=u(h,d);if(t)return t}return!!g&&u(h,g)}r&&r.tempStatus(h.seg,!!d&&d.seg,!!g&&g.seg);var v,y=m();if(y){var x;if(t)(x=null===h.seg.myFill.below||h.seg.myFill.above!==h.seg.myFill.below)&&(y.seg.myFill.above=!y.seg.myFill.above);else y.seg.otherFill=h.seg.myFill;r&&r.segmentUpdate(y.seg),h.other.remove(),h.remove()}if(a.getHead()!==h){r&&r.rewind(h.seg);continue}if(t)x=null===h.seg.myFill.below||h.seg.myFill.above!==h.seg.myFill.below,h.seg.myFill.below=g?g.seg.myFill.above:i,h.seg.myFill.above=x?!h.seg.myFill.below:h.seg.myFill.below;else if(null===h.seg.otherFill)v=g?h.primary===g.primary?g.seg.otherFill.above:g.seg.myFill.above:h.primary?o:i,h.seg.otherFill={above:v,below:v};r&&r.status(h.seg,!!d&&d.seg,!!g&&g.seg),h.other.status=p.insert(n.node({ev:h}))}else{var b=h.status;if(null===b)throw new Error(\"PolyBool: Zero-length segment detected; your epsilon is probably too small or too large\");if(s.exists(b.prev)&&s.exists(b.next)&&u(b.prev.ev,b.next.ev),r&&r.statusRemove(b.ev.seg),b.remove(),!h.primary){var _=h.seg.myFill;h.seg.myFill=h.seg.otherFill,h.seg.otherFill=_}f.push(h.seg)}a.getHead().remove()}return r&&r.done(),f}return t?{addRegion:function(t){for(var n,i,a,o=t[t.length-1],l=0;l0&&!this.aborted;){var r=this.ifds_to_read.shift();r.offset&&this.scan_ifd(r.id,r.offset,t)}},a.prototype.read_uint16=function(t){var e=this.input;if(t+2>e.length)throw n(\"unexpected EOF\",\"EBADDATA\");return this.big_endian?256*e[t]+e[t+1]:e[t]+256*e[t+1]},a.prototype.read_uint32=function(t){var e=this.input;if(t+4>e.length)throw n(\"unexpected EOF\",\"EBADDATA\");return this.big_endian?16777216*e[t]+65536*e[t+1]+256*e[t+2]+e[t+3]:e[t]+256*e[t+1]+65536*e[t+2]+16777216*e[t+3]},a.prototype.is_subifd_link=function(t,e){return 0===t&&34665===e||0===t&&34853===e||34665===t&&40965===e},a.prototype.exif_format_length=function(t){switch(t){case 1:case 2:case 6:case 7:return 1;case 3:case 8:return 2;case 4:case 9:case 11:return 4;case 5:case 10:case 12:return 8;default:return 0}},a.prototype.exif_format_read=function(t,e){var r;switch(t){case 1:case 2:return r=this.input[e];case 6:return(r=this.input[e])|33554430*(128&r);case 3:return r=this.read_uint16(e);case 8:return(r=this.read_uint16(e))|131070*(32768&r);case 4:return r=this.read_uint32(e);case 9:return 0|(r=this.read_uint32(e));case 5:case 10:case 11:case 12:case 7:default:return null}},a.prototype.scan_ifd=function(t,e,r){var a=this.read_uint16(e);e+=2;for(var o=0;othis.input.length)throw n(\"unexpected EOF\",\"EBADDATA\");for(var d=[],g=h,m=0;m0&&(this.ifds_to_read.push({id:s,offset:d[0]}),p=!0),!1===r({is_big_endian:this.big_endian,ifd:t,tag:s,format:l,count:c,entry_offset:e+this.start,data_length:f,data_offset:h+this.start,value:d,is_subifd_link:p}))return void(this.aborted=!0);e+=12}0===t&&this.ifds_to_read.push({id:1,offset:this.read_uint32(e)})},e.exports.ExifParser=a,e.exports.get_orientation=function(t){var e=0;try{return new a(t,0,t.length).each((function(t){if(0===t.ifd&&274===t.tag&&Array.isArray(t.value))return e=t.value[0],!1})),e}catch(t){return-1}}},{}],264:[function(t,e,r){\"use strict\";var n=t(\"./common\").readUInt16BE,i=t(\"./common\").readUInt32BE;function a(t,e){if(t.length<4+e)return null;var r=i(t,e);return t.length>4&15,i=15&t[4],a=t[5]>>4&15,o=n(t,6),l=8,c=0;ce.width||t.width===e.width&&t.height>e.height?t:e})),i=r.reduce((function(t,e){return t.height>e.height||t.height===e.height&&t.width>e.width?t:e})),n.width>i.height||n.width===i.height&&n.height>i.width?n:i),s=1;e.transforms.forEach((function(t){var e={1:6,2:5,3:8,4:7,5:4,6:3,7:2,8:1},r={1:4,2:3,3:2,4:1,5:6,6:5,7:8,8:7};if(\"imir\"===t.type&&(s=0===t.value?r[s]:e[s=e[s=r[s]]]),\"irot\"===t.type)for(var n=0;n1&&(h.variants=f.variants),f.orientation&&(h.orientation=f.orientation),f.exif_location&&f.exif_location.offset+f.exif_location.length<=t.length){var p=a(t,f.exif_location.offset),d=t.slice(f.exif_location.offset+p+4,f.exif_location.offset+f.exif_location.length),g=s.get_orientation(d);g>0&&(h.orientation=g)}return h}}}}}}},{\"../common\":262,\"../exif_utils\":263,\"../miaf_utils\":264}],266:[function(t,e,r){\"use strict\";var n=t(\"../common\").str2arr,i=t(\"../common\").sliceEq,a=t(\"../common\").readUInt16LE,o=n(\"BM\");e.exports=function(t){if(!(t.length<26)&&i(t,0,o))return{width:a(t,18),height:a(t,22),type:\"bmp\",mime:\"image/bmp\",wUnits:\"px\",hUnits:\"px\"}}},{\"../common\":262}],267:[function(t,e,r){\"use strict\";var n=t(\"../common\").str2arr,i=t(\"../common\").sliceEq,a=t(\"../common\").readUInt16LE,o=n(\"GIF87a\"),s=n(\"GIF89a\");e.exports=function(t){if(!(t.length<10)&&(i(t,0,o)||i(t,0,s)))return{width:a(t,6),height:a(t,8),type:\"gif\",mime:\"image/gif\",wUnits:\"px\",hUnits:\"px\"}}},{\"../common\":262}],268:[function(t,e,r){\"use strict\";var n=t(\"../common\").readUInt16LE;e.exports=function(t){var e=n(t,0),r=n(t,2),i=n(t,4);if(0===e&&1===r&&i){for(var a=[],o={width:0,height:0},s=0;so.width||c>o.height)&&(o=u)}return{width:o.width,height:o.height,variants:a,type:\"ico\",mime:\"image/x-icon\",wUnits:\"px\",hUnits:\"px\"}}}},{\"../common\":262}],269:[function(t,e,r){\"use strict\";var n=t(\"../common\").readUInt16BE,i=t(\"../common\").str2arr,a=t(\"../common\").sliceEq,o=t(\"../exif_utils\"),s=i(\"Exif\\0\\0\");e.exports=function(t){if(!(t.length<2)&&255===t[0]&&216===t[1]&&255===t[2])for(var e=2;;){for(;;){if(t.length-e<2)return;if(255===t[e++])break}for(var r,i,l=t[e++];255===l;)l=t[e++];if(208<=l&&l<=217||1===l)r=0;else{if(!(192<=l&&l<=254))return;if(t.length-e<2)return;r=n(t,e)-2,e+=2}if(217===l||218===l)return;if(225===l&&r>=10&&a(t,e,s)&&(i=o.get_orientation(t.slice(e+6,e+r))),r>=5&&192<=l&&l<=207&&196!==l&&200!==l&&204!==l){if(t.length-e0&&(c.orientation=i),c}e+=r}}},{\"../common\":262,\"../exif_utils\":263}],270:[function(t,e,r){\"use strict\";var n=t(\"../common\").str2arr,i=t(\"../common\").sliceEq,a=t(\"../common\").readUInt32BE,o=n(\"\\x89PNG\\r\\n\\x1a\\n\"),s=n(\"IHDR\");e.exports=function(t){if(!(t.length<24)&&i(t,0,o)&&i(t,12,s))return{width:a(t,16),height:a(t,20),type:\"png\",mime:\"image/png\",wUnits:\"px\",hUnits:\"px\"}}},{\"../common\":262}],271:[function(t,e,r){\"use strict\";var n=t(\"../common\").str2arr,i=t(\"../common\").sliceEq,a=t(\"../common\").readUInt32BE,o=n(\"8BPS\\0\\x01\");e.exports=function(t){if(!(t.length<22)&&i(t,0,o))return{width:a(t,18),height:a(t,14),type:\"psd\",mime:\"image/vnd.adobe.photoshop\",wUnits:\"px\",hUnits:\"px\"}}},{\"../common\":262}],272:[function(t,e,r){\"use strict\";function n(t){return\"number\"==typeof t&&isFinite(t)&&t>0}var i=/<[-_.:a-zA-Z0-9][^>]*>/,a=/^<([-_.:a-zA-Z0-9]+:)?svg\\s/,o=/[^-]\\bwidth=\"([^%]+?)\"|[^-]\\bwidth='([^%]+?)'/,s=/\\bheight=\"([^%]+?)\"|\\bheight='([^%]+?)'/,l=/\\bview[bB]ox=\"(.+?)\"|\\bview[bB]ox='(.+?)'/,c=/in$|mm$|cm$|pt$|pc$|px$|em$|ex$/;function u(t){return c.test(t)?t.match(c)[0]:\"px\"}e.exports=function(t){if(function(t){var e,r=0,n=t.length;for(239===t[0]&&187===t[1]&&191===t[2]&&(r=3);r>14&16383),type:\"webp\",mime:\"image/webp\",wUnits:\"px\",hUnits:\"px\"}}}function h(t,e){return{width:1+(t[e+6]<<16|t[e+5]<<8|t[e+4]),height:1+(t[e+9]<t.length)){for(;e+8=10?r=r||u(t,e+8):\"VP8L\"===p&&d>=9?r=r||f(t,e+8):\"VP8X\"===p&&d>=10?r=r||h(t,e+8):\"EXIF\"===p&&(n=s.get_orientation(t.slice(e+8,e+8+d)),e=1/0),e+=8+d}else e++;if(r)return n>0&&(r.orientation=n),r}}}},{\"../common\":262,\"../exif_utils\":263}],275:[function(t,e,r){\"use strict\";e.exports={avif:t(\"./parse_sync/avif\"),bmp:t(\"./parse_sync/bmp\"),gif:t(\"./parse_sync/gif\"),ico:t(\"./parse_sync/ico\"),jpeg:t(\"./parse_sync/jpeg\"),png:t(\"./parse_sync/png\"),psd:t(\"./parse_sync/psd\"),svg:t(\"./parse_sync/svg\"),tiff:t(\"./parse_sync/tiff\"),webp:t(\"./parse_sync/webp\")}},{\"./parse_sync/avif\":265,\"./parse_sync/bmp\":266,\"./parse_sync/gif\":267,\"./parse_sync/ico\":268,\"./parse_sync/jpeg\":269,\"./parse_sync/png\":270,\"./parse_sync/psd\":271,\"./parse_sync/svg\":272,\"./parse_sync/tiff\":273,\"./parse_sync/webp\":274}],276:[function(t,e,r){\"use strict\";var n=t(\"./lib/parsers_sync\");e.exports=function(t){return function(t){for(var e=Object.keys(n),r=0;r1)for(var r=1;r1&&(t.scaleRatio=[t.scale[0]*t.viewport.width,t.scale[1]*t.viewport.height],r(t),t.after&&t.after(t))}function T(t){if(t){null!=t.length?\"number\"==typeof t[0]&&(t=[{positions:t}]):Array.isArray(t)||(t=[t]);var e=0,r=0;if(b.groups=x=t.map((function(t,c){var u=x[c];return t?(\"function\"==typeof t?t={after:t}:\"number\"==typeof t[0]&&(t={positions:t}),t=o(t,{color:\"color colors fill\",capSize:\"capSize cap capsize cap-size\",lineWidth:\"lineWidth line-width width line thickness\",opacity:\"opacity alpha\",range:\"range dataBox\",viewport:\"viewport viewBox\",errors:\"errors error\",positions:\"positions position data points\"}),u||(x[c]=u={id:c,scale:null,translate:null,scaleFract:null,translateFract:null,draw:!0},t=s({},y,t)),a(u,t,[{lineWidth:function(t){return.5*+t},capSize:function(t){return.5*+t},opacity:parseFloat,errors:function(t){return t=l(t),r+=t.length,t},positions:function(t,r){return t=l(t,\"float64\"),r.count=Math.floor(t.length/2),r.bounds=n(t,2),r.offset=e,e+=r.count,t}},{color:function(t,e){var r=e.count;if(t||(t=\"transparent\"),!Array.isArray(t)||\"number\"==typeof t[0]){var n=t;t=Array(r);for(var a=0;a 0. && baClipping < length(normalWidth * endBotJoin)) {\\n\\t\\t//handle miter clipping\\n\\t\\tbTopCoord -= normalWidth * endTopJoin;\\n\\t\\tbTopCoord += normalize(endTopJoin * normalWidth) * baClipping;\\n\\t}\\n\\n\\tif (nextReverse) {\\n\\t\\t//make join rectangular\\n\\t\\tvec2 miterShift = normalWidth * endJoinDirection * miterLimit * .5;\\n\\t\\tfloat normalAdjust = 1. - min(miterLimit / endMiterRatio, 1.);\\n\\t\\tbBotCoord = bCoord + miterShift - normalAdjust * normalWidth * currNormal * .5;\\n\\t\\tbTopCoord = bCoord + miterShift + normalAdjust * normalWidth * currNormal * .5;\\n\\t}\\n\\telse if (!prevReverse && abClipping > 0. && abClipping < length(normalWidth * startBotJoin)) {\\n\\t\\t//handle miter clipping\\n\\t\\taBotCoord -= normalWidth * startBotJoin;\\n\\t\\taBotCoord += normalize(startBotJoin * normalWidth) * abClipping;\\n\\t}\\n\\n\\tvec2 aTopPosition = (aTopCoord) * adjustedScale + translate;\\n\\tvec2 aBotPosition = (aBotCoord) * adjustedScale + translate;\\n\\n\\tvec2 bTopPosition = (bTopCoord) * adjustedScale + translate;\\n\\tvec2 bBotPosition = (bBotCoord) * adjustedScale + translate;\\n\\n\\t//position is normalized 0..1 coord on the screen\\n\\tvec2 position = (aTopPosition * lineTop + aBotPosition * lineBot) * lineStart + (bTopPosition * lineTop + bBotPosition * lineBot) * lineEnd;\\n\\n\\tstartCoord = aCoord * scaleRatio + translate * viewport.zw + viewport.xy;\\n\\tendCoord = bCoord * scaleRatio + translate * viewport.zw + viewport.xy;\\n\\n\\tgl_Position = vec4(position * 2.0 - 1.0, depth, 1);\\n\\n\\tenableStartMiter = step(dot(currTangent, prevTangent), .5);\\n\\tenableEndMiter = step(dot(currTangent, nextTangent), .5);\\n\\n\\t//bevel miter cutoffs\\n\\tif (miterMode == 1.) {\\n\\t\\tif (enableStartMiter == 1.) {\\n\\t\\t\\tvec2 startMiterWidth = vec2(startJoinDirection) * thickness * miterLimit * .5;\\n\\t\\t\\tstartCutoff = vec4(aCoord, aCoord);\\n\\t\\t\\tstartCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio;\\n\\t\\t\\tstartCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\\n\\t\\t\\tstartCutoff += viewport.xyxy;\\n\\t\\t\\tstartCutoff += startMiterWidth.xyxy;\\n\\t\\t}\\n\\n\\t\\tif (enableEndMiter == 1.) {\\n\\t\\t\\tvec2 endMiterWidth = vec2(endJoinDirection) * thickness * miterLimit * .5;\\n\\t\\t\\tendCutoff = vec4(bCoord, bCoord);\\n\\t\\t\\tendCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x) / scaleRatio;\\n\\t\\t\\tendCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\\n\\t\\t\\tendCutoff += viewport.xyxy;\\n\\t\\t\\tendCutoff += endMiterWidth.xyxy;\\n\\t\\t}\\n\\t}\\n\\n\\t//round miter cutoffs\\n\\telse if (miterMode == 2.) {\\n\\t\\tif (enableStartMiter == 1.) {\\n\\t\\t\\tvec2 startMiterWidth = vec2(startJoinDirection) * thickness * abs(dot(startJoinDirection, currNormal)) * .5;\\n\\t\\t\\tstartCutoff = vec4(aCoord, aCoord);\\n\\t\\t\\tstartCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio;\\n\\t\\t\\tstartCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\\n\\t\\t\\tstartCutoff += viewport.xyxy;\\n\\t\\t\\tstartCutoff += startMiterWidth.xyxy;\\n\\t\\t}\\n\\n\\t\\tif (enableEndMiter == 1.) {\\n\\t\\t\\tvec2 endMiterWidth = vec2(endJoinDirection) * thickness * abs(dot(endJoinDirection, currNormal)) * .5;\\n\\t\\t\\tendCutoff = vec4(bCoord, bCoord);\\n\\t\\t\\tendCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x) / scaleRatio;\\n\\t\\t\\tendCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\\n\\t\\t\\tendCutoff += viewport.xyxy;\\n\\t\\t\\tendCutoff += endMiterWidth.xyxy;\\n\\t\\t}\\n\\t}\\n}\\n\"]),frag:o([\"precision highp float;\\n#define GLSLIFY 1\\n\\nuniform float dashLength, pixelRatio, thickness, opacity, id, miterMode;\\nuniform sampler2D dashTexture;\\n\\nvarying vec4 fragColor;\\nvarying vec2 tangent;\\nvarying vec4 startCutoff, endCutoff;\\nvarying vec2 startCoord, endCoord;\\nvarying float enableStartMiter, enableEndMiter;\\n\\nfloat distToLine(vec2 p, vec2 a, vec2 b) {\\n\\tvec2 diff = b - a;\\n\\tvec2 perp = normalize(vec2(-diff.y, diff.x));\\n\\treturn dot(p - a, perp);\\n}\\n\\nvoid main() {\\n\\tfloat alpha = 1., distToStart, distToEnd;\\n\\tfloat cutoff = thickness * .5;\\n\\n\\t//bevel miter\\n\\tif (miterMode == 1.) {\\n\\t\\tif (enableStartMiter == 1.) {\\n\\t\\t\\tdistToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw);\\n\\t\\t\\tif (distToStart < -1.) {\\n\\t\\t\\t\\tdiscard;\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\t\\t\\talpha *= min(max(distToStart + 1., 0.), 1.);\\n\\t\\t}\\n\\n\\t\\tif (enableEndMiter == 1.) {\\n\\t\\t\\tdistToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw);\\n\\t\\t\\tif (distToEnd < -1.) {\\n\\t\\t\\t\\tdiscard;\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\t\\t\\talpha *= min(max(distToEnd + 1., 0.), 1.);\\n\\t\\t}\\n\\t}\\n\\n\\t// round miter\\n\\telse if (miterMode == 2.) {\\n\\t\\tif (enableStartMiter == 1.) {\\n\\t\\t\\tdistToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw);\\n\\t\\t\\tif (distToStart < 0.) {\\n\\t\\t\\t\\tfloat radius = length(gl_FragCoord.xy - startCoord);\\n\\n\\t\\t\\t\\tif(radius > cutoff + .5) {\\n\\t\\t\\t\\t\\tdiscard;\\n\\t\\t\\t\\t\\treturn;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\talpha -= smoothstep(cutoff - .5, cutoff + .5, radius);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tif (enableEndMiter == 1.) {\\n\\t\\t\\tdistToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw);\\n\\t\\t\\tif (distToEnd < 0.) {\\n\\t\\t\\t\\tfloat radius = length(gl_FragCoord.xy - endCoord);\\n\\n\\t\\t\\t\\tif(radius > cutoff + .5) {\\n\\t\\t\\t\\t\\tdiscard;\\n\\t\\t\\t\\t\\treturn;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\talpha -= smoothstep(cutoff - .5, cutoff + .5, radius);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\tfloat t = fract(dot(tangent, gl_FragCoord.xy) / dashLength) * .5 + .25;\\n\\tfloat dash = texture2D(dashTexture, vec2(t, .5)).r;\\n\\n\\tgl_FragColor = fragColor;\\n\\tgl_FragColor.a *= alpha * opacity * dash;\\n}\\n\"]),attributes:{lineEnd:{buffer:r,divisor:0,stride:8,offset:0},lineTop:{buffer:r,divisor:0,stride:8,offset:4},aColor:{buffer:t.prop(\"colorBuffer\"),stride:4,offset:0,divisor:1},bColor:{buffer:t.prop(\"colorBuffer\"),stride:4,offset:4,divisor:1},prevCoord:{buffer:t.prop(\"positionBuffer\"),stride:8,offset:0,divisor:1},aCoord:{buffer:t.prop(\"positionBuffer\"),stride:8,offset:8,divisor:1},bCoord:{buffer:t.prop(\"positionBuffer\"),stride:8,offset:16,divisor:1},nextCoord:{buffer:t.prop(\"positionBuffer\"),stride:8,offset:24,divisor:1}}},n))}catch(t){e=i}return{fill:t({primitive:\"triangle\",elements:function(t,e){return e.triangles},offset:0,vert:o([\"precision highp float;\\n#define GLSLIFY 1\\n\\nattribute vec2 position, positionFract;\\n\\nuniform vec4 color;\\nuniform vec2 scale, scaleFract, translate, translateFract;\\nuniform float pixelRatio, id;\\nuniform vec4 viewport;\\nuniform float opacity;\\n\\nvarying vec4 fragColor;\\n\\nconst float MAX_LINES = 256.;\\n\\nvoid main() {\\n\\tfloat depth = (MAX_LINES - 4. - id) / (MAX_LINES);\\n\\n\\tvec2 position = position * scale + translate\\n + positionFract * scale + translateFract\\n + position * scaleFract\\n + positionFract * scaleFract;\\n\\n\\tgl_Position = vec4(position * 2.0 - 1.0, depth, 1);\\n\\n\\tfragColor = color / 255.;\\n\\tfragColor.a *= opacity;\\n}\\n\"]),frag:o([\"precision highp float;\\n#define GLSLIFY 1\\n\\nvarying vec4 fragColor;\\n\\nvoid main() {\\n\\tgl_FragColor = fragColor;\\n}\\n\"]),uniforms:{scale:t.prop(\"scale\"),color:t.prop(\"fill\"),scaleFract:t.prop(\"scaleFract\"),translateFract:t.prop(\"translateFract\"),translate:t.prop(\"translate\"),opacity:t.prop(\"opacity\"),pixelRatio:t.context(\"pixelRatio\"),id:t.prop(\"id\"),viewport:function(t,e){return[e.viewport.x,e.viewport.y,t.viewportWidth,t.viewportHeight]}},attributes:{position:{buffer:t.prop(\"positionBuffer\"),stride:8,offset:8},positionFract:{buffer:t.prop(\"positionFractBuffer\"),stride:8,offset:8}},blend:n.blend,depth:{enable:!1},scissor:n.scissor,stencil:n.stencil,viewport:n.viewport}),rect:i,miter:e}},v.defaults={dashes:null,join:\"miter\",miterLimit:1,thickness:10,cap:\"square\",color:\"black\",opacity:1,overlay:!1,viewport:null,range:null,close:!1,fill:null},v.prototype.render=function(){for(var t,e=[],r=arguments.length;r--;)e[r]=arguments[r];e.length&&(t=this).update.apply(t,e),this.draw()},v.prototype.draw=function(){for(var t=this,e=[],r=arguments.length;r--;)e[r]=arguments[r];return(e.length?e:this.passes).forEach((function(e,r){var n;if(e&&Array.isArray(e))return(n=t).draw.apply(n,e);\"number\"==typeof e&&(e=t.passes[e]),e&&e.count>1&&e.opacity&&(t.regl._refresh(),e.fill&&e.triangles&&e.triangles.length>2&&t.shaders.fill(e),e.thickness&&(e.scale[0]*e.viewport.width>v.precisionThreshold||e.scale[1]*e.viewport.height>v.precisionThreshold||\"rect\"===e.join||!e.join&&(e.thickness<=2||e.count>=v.maxPoints)?t.shaders.rect(e):t.shaders.miter(e)))})),this},v.prototype.update=function(t){var e=this;if(t){null!=t.length?\"number\"==typeof t[0]&&(t=[{positions:t}]):Array.isArray(t)||(t=[t]);var r=this.regl,o=this.gl;if(t.forEach((function(t,f){var d=e.passes[f];if(void 0!==t)if(null!==t){if(\"number\"==typeof t[0]&&(t={positions:t}),t=s(t,{positions:\"positions points data coords\",thickness:\"thickness lineWidth lineWidths line-width linewidth width stroke-width strokewidth strokeWidth\",join:\"lineJoin linejoin join type mode\",miterLimit:\"miterlimit miterLimit\",dashes:\"dash dashes dasharray dash-array dashArray\",color:\"color colour stroke colors colours stroke-color strokeColor\",fill:\"fill fill-color fillColor\",opacity:\"alpha opacity\",overlay:\"overlay crease overlap intersect\",close:\"closed close closed-path closePath\",range:\"range dataBox\",viewport:\"viewport viewBox\",hole:\"holes hole hollow\",splitNull:\"splitNull\"}),d||(e.passes[f]=d={id:f,scale:null,scaleFract:null,translate:null,translateFract:null,count:0,hole:[],depth:0,dashLength:1,dashTexture:r.texture({channels:1,data:new Uint8Array([255]),width:1,height:1,mag:\"linear\",min:\"linear\"}),colorBuffer:r.buffer({usage:\"dynamic\",type:\"uint8\",data:new Uint8Array}),positionBuffer:r.buffer({usage:\"dynamic\",type:\"float\",data:new Uint8Array}),positionFractBuffer:r.buffer({usage:\"dynamic\",type:\"float\",data:new Uint8Array})},t=a({},v.defaults,t)),null!=t.thickness&&(d.thickness=parseFloat(t.thickness)),null!=t.opacity&&(d.opacity=parseFloat(t.opacity)),null!=t.miterLimit&&(d.miterLimit=parseFloat(t.miterLimit)),null!=t.overlay&&(d.overlay=!!t.overlay,f=D}));(I=I.slice(0,R)).push(D)}for(var F=function(t){var e=k.slice(2*z,2*I[t]).concat(D?k.slice(2*D):[]),r=(d.hole||[]).map((function(e){return e-D+(I[t]-z)})),n=c(e,r);n=n.map((function(e){return e+z+(e+zt.length)&&(e=t.length);for(var r=0,n=new Array(e);r 1.0 + delta) {\\n\\t\\tdiscard;\\n\\t}\\n\\n\\talpha -= smoothstep(1.0 - delta, 1.0 + delta, radius);\\n\\n\\tfloat borderRadius = fragBorderRadius;\\n\\tfloat ratio = smoothstep(borderRadius - delta, borderRadius + delta, radius);\\n\\tvec4 color = mix(fragColor, fragBorderColor, ratio);\\n\\tcolor.a *= alpha * opacity;\\n\\tgl_FragColor = color;\\n}\\n\"]),l.vert=h([\"precision highp float;\\n#define GLSLIFY 1\\n\\nattribute float x, y, xFract, yFract;\\nattribute float size, borderSize;\\nattribute vec4 colorId, borderColorId;\\nattribute float isActive;\\n\\nuniform bool constPointSize;\\nuniform float pixelRatio;\\nuniform vec2 paletteSize, scale, scaleFract, translate, translateFract;\\nuniform sampler2D paletteTexture;\\n\\nconst float maxSize = 100.;\\n\\nvarying vec4 fragColor, fragBorderColor;\\nvarying float fragBorderRadius, fragWidth;\\n\\nfloat pointSizeScale = (constPointSize) ? 2. : pixelRatio;\\n\\nbool isDirect = (paletteSize.x < 1.);\\n\\nvec4 getColor(vec4 id) {\\n return isDirect ? id / 255. : texture2D(paletteTexture,\\n vec2(\\n (id.x + .5) / paletteSize.x,\\n (id.y + .5) / paletteSize.y\\n )\\n );\\n}\\n\\nvoid main() {\\n // ignore inactive points\\n if (isActive == 0.) return;\\n\\n vec2 position = vec2(x, y);\\n vec2 positionFract = vec2(xFract, yFract);\\n\\n vec4 color = getColor(colorId);\\n vec4 borderColor = getColor(borderColorId);\\n\\n float size = size * maxSize / 255.;\\n float borderSize = borderSize * maxSize / 255.;\\n\\n gl_PointSize = (size + borderSize) * pointSizeScale;\\n\\n vec2 pos = (position + translate) * scale\\n + (positionFract + translateFract) * scale\\n + (position + translate) * scaleFract\\n + (positionFract + translateFract) * scaleFract;\\n\\n gl_Position = vec4(pos * 2. - 1., 0., 1.);\\n\\n fragBorderRadius = 1. - 2. * borderSize / (size + borderSize);\\n fragColor = color;\\n fragBorderColor = borderColor.a == 0. || borderSize == 0. ? vec4(color.rgb, 0.) : borderColor;\\n fragWidth = 1. / gl_PointSize;\\n}\\n\"]),m&&(l.frag=l.frag.replace(\"smoothstep\",\"smoothStep\"),s.frag=s.frag.replace(\"smoothstep\",\"smoothStep\")),this.drawCircle=t(l)}b.defaults={color:\"black\",borderColor:\"transparent\",borderSize:0,size:12,opacity:1,marker:void 0,viewport:null,range:null,pixelSize:null,count:0,offset:0,bounds:null,positions:[],snap:1e4},b.prototype.render=function(){return arguments.length&&this.update.apply(this,arguments),this.draw(),this},b.prototype.draw=function(){for(var t=this,e=arguments.length,r=new Array(e),n=0;nn)?e.tree=u(t,{bounds:f}):n&&n.length&&(e.tree=n),e.tree){var h={primitive:\"points\",usage:\"static\",data:e.tree,type:\"uint32\"};e.elements?e.elements(h):e.elements=o.elements(h)}var p=v.float32(t);return i({data:p,usage:\"dynamic\"}),a({data:v.fract32(t,p),usage:\"dynamic\"}),s({data:new Uint8Array(c),type:\"uint8\",usage:\"stream\"}),t}},{marker:function(e,r,n){var i=r.activation;if(i.forEach((function(t){return t&&t.destroy&&t.destroy()})),i.length=0,e&&\"number\"!=typeof e[0]){for(var a=[],s=0,l=Math.min(e.length,r.count);s=0)return a;if(t instanceof Uint8Array||t instanceof Uint8ClampedArray)e=t;else{e=new Uint8Array(t.length);for(var o=0,s=t.length;o4*n&&(this.tooManyColors=!0),this.updatePalette(r),1===i.length?i[0]:i},b.prototype.updatePalette=function(t){if(!this.tooManyColors){var e=this.maxColors,r=this.paletteTexture,n=Math.ceil(.25*t.length/e);if(n>1)for(var i=.25*(t=t.slice()).length%e;i2?(s[0],s[2],n=s[1],i=s[3]):s.length?(n=s[0],i=s[1]):(s.x,n=s.y,s.x+s.width,i=s.y+s.height),l.length>2?(a=l[0],o=l[2],l[1],l[3]):l.length?(a=l[0],o=l[1]):(a=l.x,l.y,o=l.x+l.width,l.y+l.height),[a,n,o,i]}function p(t){if(\"number\"==typeof t)return[t,t,t,t];if(2===t.length)return[t[0],t[1],t[0],t[1]];var e=l(t);return[e.x,e.y,e.x+e.width,e.y+e.height]}e.exports=u,u.prototype.render=function(){for(var t,e=this,r=[],n=arguments.length;n--;)r[n]=arguments[n];return r.length&&(t=this).update.apply(t,r),this.regl.attributes.preserveDrawingBuffer?this.draw():(this.dirty?null==this.planned&&(this.planned=o((function(){e.draw(),e.dirty=!0,e.planned=null}))):(this.draw(),this.dirty=!0,o((function(){e.dirty=!1}))),this)},u.prototype.update=function(){for(var t,e=[],r=arguments.length;r--;)e[r]=arguments[r];if(e.length){for(var n=0;nk))&&(s.lower||!(T>>=e))<<3,(e|=r=(15<(t>>>=r))<<2)|(r=(3<(t>>>=r))<<1)|t>>>r>>1}function s(){function t(t){t:{for(var e=16;268435456>=e;e*=16)if(t<=e){t=e;break t}t=0}return 0<(e=r[o(t)>>2]).length?e.pop():new ArrayBuffer(t)}function e(t){r[o(t.byteLength)>>2].push(t)}var r=a(8,(function(){return[]}));return{alloc:t,free:e,allocType:function(e,r){var n=null;switch(e){case 5120:n=new Int8Array(t(r),0,r);break;case 5121:n=new Uint8Array(t(r),0,r);break;case 5122:n=new Int16Array(t(2*r),0,r);break;case 5123:n=new Uint16Array(t(2*r),0,r);break;case 5124:n=new Int32Array(t(4*r),0,r);break;case 5125:n=new Uint32Array(t(4*r),0,r);break;case 5126:n=new Float32Array(t(4*r),0,r);break;default:return null}return n.length!==r?n.subarray(0,r):n},freeType:function(t){e(t.buffer)}}}function l(t){return!!t&&\"object\"==typeof t&&Array.isArray(t.shape)&&Array.isArray(t.stride)&&\"number\"==typeof t.offset&&t.shape.length===t.stride.length&&(Array.isArray(t.data)||W(t.data))}function c(t,e,r,n,i,a){for(var o=0;o(i=s)&&(i=n.buffer.byteLength,5123===f?i>>=1:5125===f&&(i>>=2)),n.vertCount=i,i=o,0>o&&(i=4,1===(o=n.buffer.dimension)&&(i=0),2===o&&(i=1),3===o&&(i=4)),n.primType=i}function o(t){n.elementsCount--,delete s[t.id],t.buffer.destroy(),t.buffer=null}var s={},c=0,u={uint8:5121,uint16:5123};e.oes_element_index_uint&&(u.uint32=5125),i.prototype.bind=function(){this.buffer.bind()};var f=[];return{create:function(t,e){function s(t){if(t)if(\"number\"==typeof t)c(t),f.primType=4,f.vertCount=0|t,f.type=5121;else{var e=null,r=35044,n=-1,i=-1,o=0,h=0;Array.isArray(t)||W(t)||l(t)?e=t:(\"data\"in t&&(e=t.data),\"usage\"in t&&(r=Q[t.usage]),\"primitive\"in t&&(n=rt[t.primitive]),\"count\"in t&&(i=0|t.count),\"type\"in t&&(h=u[t.type]),\"length\"in t?o=0|t.length:(o=i,5123===h||5122===h?o*=2:5125!==h&&5124!==h||(o*=4))),a(f,e,r,n,i,o,h)}else c(),f.primType=4,f.vertCount=0,f.type=5121;return s}var c=r.create(null,34963,!0),f=new i(c._buffer);return n.elementsCount++,s(t),s._reglType=\"elements\",s._elements=f,s.subdata=function(t,e){return c.subdata(t,e),s},s.destroy=function(){o(f)},s},createStream:function(t){var e=f.pop();return e||(e=new i(r.create(null,34963,!0,!1)._buffer)),a(e,t,35040,-1,-1,0,0),e},destroyStream:function(t){f.push(t)},getElements:function(t){return\"function\"==typeof t&&t._elements instanceof i?t._elements:null},clear:function(){X(s).forEach(o)}}}function g(t){for(var e=G.allocType(5123,t.length),r=0;r>>31<<15,i=(a<<1>>>24)-127,a=a>>13&1023;e[r]=-24>i?n:-14>i?n+(a+1024>>-14-i):15>=i,r.height>>=i,p(r,n[i]),t.mipmask|=1<e;++e)t.images[e]=null;return t}function C(t){for(var e=t.images,r=0;re){for(var r=0;r=--this.refCount&&F(this)}}),o.profile&&(a.getTotalTextureSize=function(){var t=0;return Object.keys(yt).forEach((function(e){t+=yt[e].stats.size})),t}),{create2D:function(e,r){function n(t,e){var r=i.texInfo;P.call(r);var a=L();return\"number\"==typeof t?M(a,0|t,\"number\"==typeof e?0|e:0|t):t?(I(r,t),S(a,t)):M(a,1,1),r.genMipmaps&&(a.mipmask=(a.width<<1)-1),i.mipmask=a.mipmask,c(i,a),i.internalformat=a.internalformat,n.width=a.width,n.height=a.height,D(i),E(a,3553),O(r,3553),R(),C(a),o.profile&&(i.stats.size=T(i.internalformat,i.type,a.width,a.height,r.genMipmaps,!1)),n.format=tt[i.internalformat],n.type=et[i.type],n.mag=rt[r.magFilter],n.min=nt[r.minFilter],n.wrapS=it[r.wrapS],n.wrapT=it[r.wrapT],n}var i=new z(3553);return yt[i.id]=i,a.textureCount++,n(e,r),n.subimage=function(t,e,r,a){e|=0,r|=0,a|=0;var o=v();return c(o,i),o.width=0,o.height=0,p(o,t),o.width=o.width||(i.width>>a)-e,o.height=o.height||(i.height>>a)-r,D(i),d(o,3553,e,r,a),R(),k(o),n},n.resize=function(e,r){var a=0|e,s=0|r||a;if(a===i.width&&s===i.height)return n;n.width=i.width=a,n.height=i.height=s,D(i);for(var l=0;i.mipmask>>l;++l){var c=a>>l,u=s>>l;if(!c||!u)break;t.texImage2D(3553,l,i.format,c,u,0,i.format,i.type,null)}return R(),o.profile&&(i.stats.size=T(i.internalformat,i.type,a,s,!1,!1)),n},n._reglType=\"texture2d\",n._texture=i,o.profile&&(n.stats=i.stats),n.destroy=function(){i.decRef()},n},createCube:function(e,r,n,i,s,l){function f(t,e,r,n,i,a){var s,l=h.texInfo;for(P.call(l),s=0;6>s;++s)g[s]=L();if(\"number\"!=typeof t&&t){if(\"object\"==typeof t)if(e)S(g[0],t),S(g[1],e),S(g[2],r),S(g[3],n),S(g[4],i),S(g[5],a);else if(I(l,t),u(h,t),\"faces\"in t)for(t=t.faces,s=0;6>s;++s)c(g[s],h),S(g[s],t[s]);else for(s=0;6>s;++s)S(g[s],t)}else for(t=0|t||1,s=0;6>s;++s)M(g[s],t,t);for(c(h,g[0]),h.mipmask=l.genMipmaps?(g[0].width<<1)-1:g[0].mipmask,h.internalformat=g[0].internalformat,f.width=g[0].width,f.height=g[0].height,D(h),s=0;6>s;++s)E(g[s],34069+s);for(O(l,34067),R(),o.profile&&(h.stats.size=T(h.internalformat,h.type,f.width,f.height,l.genMipmaps,!0)),f.format=tt[h.internalformat],f.type=et[h.type],f.mag=rt[l.magFilter],f.min=nt[l.minFilter],f.wrapS=it[l.wrapS],f.wrapT=it[l.wrapT],s=0;6>s;++s)C(g[s]);return f}var h=new z(34067);yt[h.id]=h,a.cubeCount++;var g=Array(6);return f(e,r,n,i,s,l),f.subimage=function(t,e,r,n,i){r|=0,n|=0,i|=0;var a=v();return c(a,h),a.width=0,a.height=0,p(a,e),a.width=a.width||(h.width>>i)-r,a.height=a.height||(h.height>>i)-n,D(h),d(a,34069+t,r,n,i),R(),k(a),f},f.resize=function(e){if((e|=0)!==h.width){f.width=h.width=e,f.height=h.height=e,D(h);for(var r=0;6>r;++r)for(var n=0;h.mipmask>>n;++n)t.texImage2D(34069+r,n,h.format,e>>n,e>>n,0,h.format,h.type,null);return R(),o.profile&&(h.stats.size=T(h.internalformat,h.type,f.width,f.height,!1,!0)),f}},f._reglType=\"textureCube\",f._texture=h,o.profile&&(f.stats=h.stats),f.destroy=function(){h.decRef()},f},clear:function(){for(var e=0;er;++r)if(0!=(e.mipmask&1<>r,e.height>>r,0,e.internalformat,e.type,null);else for(var n=0;6>n;++n)t.texImage2D(34069+n,r,e.internalformat,e.width>>r,e.height>>r,0,e.internalformat,e.type,null);O(e.texInfo,e.target)}))},refresh:function(){for(var e=0;ei;++i){for(c=0;ct;++t)r[t].resize(n);return e.width=e.height=n,e},_reglType:\"framebufferCube\",destroy:function(){r.forEach((function(t){t.destroy()}))}})},clear:function(){X(k).forEach(m)},restore:function(){x.cur=null,x.next=null,x.dirty=!0,X(k).forEach((function(e){e.framebuffer=t.createFramebuffer(),v(e)}))}})}function M(){this.w=this.z=this.y=this.x=this.state=0,this.buffer=null,this.size=0,this.normalized=!1,this.type=5126,this.divisor=this.stride=this.offset=0}function S(t,e,r,n,i,a,o){function s(){this.id=++f,this.attributes=[],this.elements=null,this.ownsElements=!1,this.offset=this.count=0,this.instances=-1,this.primitive=4;var t=e.oes_vertex_array_object;this.vao=t?t.createVertexArrayOES():null,h[this.id]=this,this.buffers=[]}var c=r.maxAttributes,u=Array(c);for(r=0;r=h.byteLength?c.subdata(h):(c.destroy(),r.buffers[s]=null)),r.buffers[s]||(c=r.buffers[s]=i.create(u,34962,!1,!0)),f.buffer=i.getBuffer(c),f.size=0|f.buffer.dimension,f.normalized=!1,f.type=f.buffer.dtype,f.offset=0,f.stride=0,f.divisor=0,f.state=1,t[s]=1;else i.getBuffer(u)?(f.buffer=i.getBuffer(u),f.size=0|f.buffer.dimension,f.normalized=!1,f.type=f.buffer.dtype,f.offset=0,f.stride=0,f.divisor=0,f.state=1):i.getBuffer(u.buffer)?(f.buffer=i.getBuffer(u.buffer),f.size=0|(+u.size||f.buffer.dimension),f.normalized=!!u.normalized||!1,f.type=\"type\"in u?K[u.type]:f.buffer.dtype,f.offset=0|(u.offset||0),f.stride=0|(u.stride||0),f.divisor=0|(u.divisor||0),f.state=1):\"x\"in u&&(f.x=+u.x||0,f.y=+u.y||0,f.z=+u.z||0,f.w=+u.w||0,f.state=2)}for(c=0;ct&&(t=e.stats.uniformsCount)})),t},r.getMaxAttributesCount=function(){var t=0;return h.forEach((function(e){e.stats.attributesCount>t&&(t=e.stats.attributesCount)})),t}),{clear:function(){var e=t.deleteShader.bind(t);X(c).forEach(e),c={},X(u).forEach(e),u={},h.forEach((function(e){t.deleteProgram(e.program)})),h.length=0,f={},r.shaderCount=0},program:function(e,n,i,a){var o=f[n];o||(o=f[n]={});var p=o[e];if(p&&(p.refCount++,!a))return p;var d=new s(n,e);return r.shaderCount++,l(d,i,a),p||(o[e]=d),h.push(d),j(d,{destroy:function(){if(d.refCount--,0>=d.refCount){t.deleteProgram(d.program);var e=h.indexOf(d);h.splice(e,1),r.shaderCount--}0>=o[d.vertId].refCount&&(t.deleteShader(u[d.vertId]),delete u[d.vertId],delete f[d.fragId][d.vertId]),Object.keys(f[d.fragId]).length||(t.deleteShader(c[d.fragId]),delete c[d.fragId],delete f[d.fragId])}})},restore:function(){c={},u={};for(var t=0;t\"+e+\"?\"+i+\".constant[\"+e+\"]:0;\"})).join(\"\"),\"}}else{\",\"if(\",s,\"(\",i,\".buffer)){\",u,\"=\",a,\".createStream(\",34962,\",\",i,\".buffer);\",\"}else{\",u,\"=\",a,\".getBuffer(\",i,\".buffer);\",\"}\",f,'=\"type\" in ',i,\"?\",o.glTypes,\"[\",i,\".type]:\",u,\".dtype;\",l.normalized,\"=!!\",i,\".normalized;\"),n(\"size\"),n(\"offset\"),n(\"stride\"),n(\"divisor\"),r(\"}}\"),r.exit(\"if(\",l.isStream,\"){\",a,\".destroyStream(\",u,\");\",\"}\"),l}))})),o}function A(t,e,n,i,o){function s(t){var e=c[t];e&&(h[t]=e)}var l=function(t,e){if(\"string\"==typeof(r=t.static).frag&&\"string\"==typeof r.vert){if(0>1)\",s],\");\")}function e(){r(l,\".drawArraysInstancedANGLE(\",[d,g,m,s],\");\")}p&&\"null\"!==p?y?t():(r(\"if(\",p,\"){\"),t(),r(\"}else{\"),e(),r(\"}\")):e()}function o(){function t(){r(u+\".drawElements(\"+[d,m,v,g+\"<<((\"+v+\"-5121)>>1)\"]+\");\")}function e(){r(u+\".drawArrays(\"+[d,g,m]+\");\")}p&&\"null\"!==p?y?t():(r(\"if(\",p,\"){\"),t(),r(\"}else{\"),e(),r(\"}\")):e()}var s,l,c=t.shared,u=c.gl,f=c.draw,h=n.draw,p=function(){var i=h.elements,a=e;return i?((i.contextDep&&n.contextDynamic||i.propDep)&&(a=r),i=i.append(t,a),h.elementsActive&&a(\"if(\"+i+\")\"+u+\".bindBuffer(34963,\"+i+\".buffer.buffer);\")):(i=a.def(),a(i,\"=\",f,\".\",\"elements\",\";\",\"if(\",i,\"){\",u,\".bindBuffer(\",34963,\",\",i,\".buffer.buffer);}\",\"else if(\",c.vao,\".currentVAO){\",i,\"=\",t.shared.elements+\".getElements(\"+c.vao,\".currentVAO.elements);\",nt?\"\":\"if(\"+i+\")\"+u+\".bindBuffer(34963,\"+i+\".buffer.buffer);\",\"}\")),i}(),d=i(\"primitive\"),g=i(\"offset\"),m=function(){var i=h.count,a=e;return i?((i.contextDep&&n.contextDynamic||i.propDep)&&(a=r),i=i.append(t,a)):i=a.def(f,\".\",\"count\"),i}();if(\"number\"==typeof m){if(0===m)return}else r(\"if(\",m,\"){\"),r.exit(\"}\");tt&&(s=i(\"instances\"),l=t.instancing);var v=p+\".type\",y=h.elements&&D(h.elements)&&!h.vaoActive;tt&&(\"number\"!=typeof s||0<=s)?\"string\"==typeof s?(r(\"if(\",s,\">0){\"),a(),r(\"}else if(\",s,\"<0){\"),o(),r(\"}\")):a():o()}function G(t,e,r,n,i){return i=(e=b()).proc(\"body\",i),tt&&(e.instancing=i.def(e.shared.extensions,\".angle_instanced_arrays\")),t(e,i,r,n),e.compile().body}function Y(t,e,r,n){B(t,e),r.useVAO?r.drawVAO?e(t.shared.vao,\".setVAO(\",r.drawVAO.append(t,e),\");\"):e(t.shared.vao,\".setVAO(\",t.shared.vao,\".targetVAO);\"):(e(t.shared.vao,\".setVAO(null);\"),U(t,e,r,n.attributes,(function(){return!0}))),H(t,e,r,n.uniforms,(function(){return!0}),!1),q(t,e,e,r)}function W(t,e,r,n){function i(){return!0}t.batchId=\"a1\",B(t,e),U(t,e,r,n.attributes,i),H(t,e,r,n.uniforms,i,!1),q(t,e,e,r)}function X(t,e,r,n){function i(t){return t.contextDep&&o||t.propDep}function a(t){return!i(t)}B(t,e);var o=r.contextDep,s=e.def(),l=e.def();t.shared.props=l,t.batchId=s;var c=t.scope(),u=t.scope();e(c.entry,\"for(\",s,\"=0;\",s,\"<\",\"a1\",\";++\",s,\"){\",l,\"=\",\"a0\",\"[\",s,\"];\",u,\"}\",c.exit),r.needsContext&&M(t,u,r.context),r.needsFramebuffer&&S(t,u,r.framebuffer),L(t,u,r.state,i),r.profile&&i(r.profile)&&N(t,u,r,!1,!0),n?(r.useVAO?r.drawVAO?i(r.drawVAO)?u(t.shared.vao,\".setVAO(\",r.drawVAO.append(t,u),\");\"):c(t.shared.vao,\".setVAO(\",r.drawVAO.append(t,c),\");\"):c(t.shared.vao,\".setVAO(\",t.shared.vao,\".targetVAO);\"):(c(t.shared.vao,\".setVAO(null);\"),U(t,c,r,n.attributes,a),U(t,u,r,n.attributes,i)),H(t,c,r,n.uniforms,a,!1),H(t,u,r,n.uniforms,i,!0),q(t,c,u,r)):(e=t.global.def(\"{}\"),n=r.shader.progVar.append(t,u),l=u.def(n,\".id\"),c=u.def(e,\"[\",l,\"]\"),u(t.shared.gl,\".useProgram(\",n,\".program);\",\"if(!\",c,\"){\",c,\"=\",e,\"[\",l,\"]=\",t.link((function(e){return G(W,t,r,e,2)})),\"(\",n,\");}\",c,\".call(this,a0[\",s,\"],\",s,\");\"))}function Z(t,r){function n(e){var n=r.shader[e];n&&i.set(a.shader,\".\"+e,n.append(t,i))}var i=t.proc(\"scope\",3);t.batchId=\"a2\";var a=t.shared,o=a.current;M(t,i,r.context),r.framebuffer&&r.framebuffer.append(t,i),O(Object.keys(r.state)).forEach((function(e){var n=r.state[e].append(t,i);m(n)?n.forEach((function(r,n){i.set(t.next[e],\"[\"+n+\"]\",r)})):i.set(a.next,\".\"+e,n)})),N(t,i,r,!0,!0),[\"elements\",\"offset\",\"count\",\"instances\",\"primitive\"].forEach((function(e){var n=r.draw[e];n&&i.set(a.draw,\".\"+e,\"\"+n.append(t,i))})),Object.keys(r.uniforms).forEach((function(n){var o=r.uniforms[n].append(t,i);Array.isArray(o)&&(o=\"[\"+o.join()+\"]\"),i.set(a.uniforms,\"[\"+e.id(n)+\"]\",o)})),Object.keys(r.attributes).forEach((function(e){var n=r.attributes[e].append(t,i),a=t.scopeAttrib(e);Object.keys(new Q).forEach((function(t){i.set(a,\".\"+t,n[t])}))})),r.scopeVAO&&i.set(a.vao,\".targetVAO\",r.scopeVAO.append(t,i)),n(\"vert\"),n(\"frag\"),0=--this.refCount&&o(this)},i.profile&&(n.getTotalRenderbufferSize=function(){var t=0;return Object.keys(u).forEach((function(e){t+=u[e].stats.size})),t}),{create:function(e,r){function o(e,r){var n=0,a=0,u=32854;if(\"object\"==typeof e&&e?(\"shape\"in e?(n=0|(a=e.shape)[0],a=0|a[1]):(\"radius\"in e&&(n=a=0|e.radius),\"width\"in e&&(n=0|e.width),\"height\"in e&&(a=0|e.height)),\"format\"in e&&(u=s[e.format])):\"number\"==typeof e?(n=0|e,a=\"number\"==typeof r?0|r:n):e||(n=a=1),n!==c.width||a!==c.height||u!==c.format)return o.width=c.width=n,o.height=c.height=a,c.format=u,t.bindRenderbuffer(36161,c.renderbuffer),t.renderbufferStorage(36161,u,n,a),i.profile&&(c.stats.size=vt[c.format]*c.width*c.height),o.format=l[c.format],o}var c=new a(t.createRenderbuffer());return u[c.id]=c,n.renderbufferCount++,o(e,r),o.resize=function(e,r){var n=0|e,a=0|r||n;return n===c.width&&a===c.height||(o.width=c.width=n,o.height=c.height=a,t.bindRenderbuffer(36161,c.renderbuffer),t.renderbufferStorage(36161,c.format,n,a),i.profile&&(c.stats.size=vt[c.format]*c.width*c.height)),o},o._reglType=\"renderbuffer\",o._renderbuffer=c,i.profile&&(o.stats=c.stats),o.destroy=function(){c.decRef()},o},clear:function(){X(u).forEach(o)},restore:function(){X(u).forEach((function(e){e.renderbuffer=t.createRenderbuffer(),t.bindRenderbuffer(36161,e.renderbuffer),t.renderbufferStorage(36161,e.format,e.width,e.height)})),t.bindRenderbuffer(36161,null)}}},xt=[];xt[6408]=4,xt[6407]=3;var bt=[];bt[5121]=1,bt[5126]=4,bt[36193]=2;var _t=[\"x\",\"y\",\"z\",\"w\"],wt=\"blend.func blend.equation stencil.func stencil.opFront stencil.opBack sample.coverage viewport scissor.box polygonOffset.offset\".split(\" \"),Tt={0:0,1:1,zero:0,one:1,\"src color\":768,\"one minus src color\":769,\"src alpha\":770,\"one minus src alpha\":771,\"dst color\":774,\"one minus dst color\":775,\"dst alpha\":772,\"one minus dst alpha\":773,\"constant color\":32769,\"one minus constant color\":32770,\"constant alpha\":32771,\"one minus constant alpha\":32772,\"src alpha saturate\":776},kt={never:512,less:513,\"<\":513,equal:514,\"=\":514,\"==\":514,\"===\":514,lequal:515,\"<=\":515,greater:516,\">\":516,notequal:517,\"!=\":517,\"!==\":517,gequal:518,\">=\":518,always:519},At={0:0,zero:0,keep:7680,replace:7681,increment:7682,decrement:7683,\"increment wrap\":34055,\"decrement wrap\":34056,invert:5386},Mt={cw:2304,ccw:2305},St=new z(!1,!1,!1,(function(){}));return function(t){function e(){if(0===J.length)w&&w.update(),tt=null;else{tt=H.next(e),f();for(var t=J.length-1;0<=t;--t){var r=J[t];r&&r(P,null,0)}m.flush(),w&&w.update()}}function r(){!tt&&0=J.length&&n()}}}}function u(){var t=X.viewport,e=X.scissor_box;t[0]=t[1]=e[0]=e[1]=0,P.viewportWidth=P.framebufferWidth=P.drawingBufferWidth=t[2]=e[2]=m.drawingBufferWidth,P.viewportHeight=P.framebufferHeight=P.drawingBufferHeight=t[3]=e[3]=m.drawingBufferHeight}function f(){P.tick+=1,P.time=g(),u(),W.procs.poll()}function h(){F.refresh(),u(),W.procs.refresh(),w&&w.update()}function g(){return(q()-T)/1e3}if(!(t=i(t)))return null;var m=t.gl,v=m.getContextAttributes();m.isContextLost();var y=function(t,e){function r(e){var r;e=e.toLowerCase();try{r=n[e]=t.getExtension(e)}catch(t){}return!!r}for(var n={},i=0;ie;++e)et(j({framebuffer:t.framebuffer.faces[e]},t),l);else et(t,l);else l(0,t)},prop:V.define.bind(null,1),context:V.define.bind(null,2),this:V.define.bind(null,3),draw:s({}),buffer:function(t){return O.create(t,34962,!1,!1)},elements:function(t){return z.create(t,!1)},texture:F.create2D,cube:F.createCube,renderbuffer:U.create,framebuffer:G.create,framebufferCube:G.createCube,vao:D.createVAO,attributes:v,frame:c,on:function(t,e){var r;switch(t){case\"frame\":return c(e);case\"lost\":r=K;break;case\"restore\":r=Q;break;case\"destroy\":r=$}return r.push(e),{cancel:function(){for(var t=0;t2?\"one of \".concat(e,\" \").concat(t.slice(0,r-1).join(\", \"),\", or \")+t[r-1]:2===r?\"one of \".concat(e,\" \").concat(t[0],\" or \").concat(t[1]):\"of \".concat(e,\" \").concat(t[0])}return\"of \".concat(e,\" \").concat(String(t))}i(\"ERR_INVALID_OPT_VALUE\",(function(t,e){return'The value \"'+e+'\" is invalid for option \"'+t+'\"'}),TypeError),i(\"ERR_INVALID_ARG_TYPE\",(function(t,e,r){var n,i,o,s;if(\"string\"==typeof e&&(i=\"not \",e.substr(!o||o<0?0:+o,i.length)===i)?(n=\"must not be\",e=e.replace(/^not /,\"\")):n=\"must be\",function(t,e,r){return(void 0===r||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}(t,\" argument\"))s=\"The \".concat(t,\" \").concat(n,\" \").concat(a(e,\"type\"));else{var l=function(t,e,r){return\"number\"!=typeof r&&(r=0),!(r+e.length>t.length)&&-1!==t.indexOf(e,r)}(t,\".\")?\"property\":\"argument\";s='The \"'.concat(t,'\" ').concat(l,\" \").concat(n,\" \").concat(a(e,\"type\"))}return s+=\". Received type \".concat(typeof r)}),TypeError),i(\"ERR_STREAM_PUSH_AFTER_EOF\",\"stream.push() after EOF\"),i(\"ERR_METHOD_NOT_IMPLEMENTED\",(function(t){return\"The \"+t+\" method is not implemented\"})),i(\"ERR_STREAM_PREMATURE_CLOSE\",\"Premature close\"),i(\"ERR_STREAM_DESTROYED\",(function(t){return\"Cannot call \"+t+\" after a stream was destroyed\"})),i(\"ERR_MULTIPLE_CALLBACK\",\"Callback called multiple times\"),i(\"ERR_STREAM_CANNOT_PIPE\",\"Cannot pipe, not readable\"),i(\"ERR_STREAM_WRITE_AFTER_END\",\"write after end\"),i(\"ERR_STREAM_NULL_VALUES\",\"May not write null values to stream\",TypeError),i(\"ERR_UNKNOWN_ENCODING\",(function(t){return\"Unknown encoding: \"+t}),TypeError),i(\"ERR_STREAM_UNSHIFT_AFTER_END_EVENT\",\"stream.unshift() after end event\"),e.exports.codes=n},{}],287:[function(t,e,r){(function(r){(function(){\"use strict\";var n=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};e.exports=c;var i=t(\"./_stream_readable\"),a=t(\"./_stream_writable\");t(\"inherits\")(c,i);for(var o=n(a.prototype),s=0;s0)if(\"string\"==typeof e||o.objectMode||Object.getPrototypeOf(e)===s.prototype||(e=function(t){return s.from(t)}(e)),n)o.endEmitted?w(t,new _):S(t,o,e,!0);else if(o.ended)w(t,new x);else{if(o.destroyed)return!1;o.reading=!1,o.decoder&&!r?(e=o.decoder.write(e),o.objectMode||0!==e.length?S(t,o,e,!1):P(t,o)):S(t,o,e,!1)}else n||(o.reading=!1,P(t,o));return!o.ended&&(o.lengthe.highWaterMark&&(e.highWaterMark=function(t){return t>=1073741824?t=1073741824:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function L(t){var e=t._readableState;c(\"emitReadable\",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(c(\"emitReadable\",e.flowing),e.emittedReadable=!0,r.nextTick(C,t))}function C(t){var e=t._readableState;c(\"emitReadable_\",e.destroyed,e.length,e.ended),e.destroyed||!e.length&&!e.ended||(t.emit(\"readable\"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,R(t)}function P(t,e){e.readingMore||(e.readingMore=!0,r.nextTick(I,t,e))}function I(t,e){for(;!e.reading&&!e.ended&&(e.length0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount(\"data\")>0&&t.resume()}function z(t){c(\"readable nexttick read 0\"),t.read(0)}function D(t,e){c(\"resume\",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit(\"resume\"),R(t),e.flowing&&!e.reading&&t.read(0)}function R(t){var e=t._readableState;for(c(\"flow\",e.flowing);e.flowing&&null!==t.read(););}function F(t,e){return 0===e.length?null:(e.objectMode?r=e.buffer.shift():!t||t>=e.length?(r=e.decoder?e.buffer.join(\"\"):1===e.buffer.length?e.buffer.first():e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r);var r}function B(t){var e=t._readableState;c(\"endReadable\",e.endEmitted),e.endEmitted||(e.ended=!0,r.nextTick(N,e,t))}function N(t,e){if(c(\"endReadableNT\",t.endEmitted,t.length),!t.endEmitted&&0===t.length&&(t.endEmitted=!0,e.readable=!1,e.emit(\"end\"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}function j(t,e){for(var r=0,n=t.length;r=e.highWaterMark:e.length>0)||e.ended))return c(\"read: emitReadable\",e.length,e.ended),0===e.length&&e.ended?B(this):L(this),null;if(0===(t=E(t,e))&&e.ended)return 0===e.length&&B(this),null;var n,i=e.needReadable;return c(\"need readable\",i),(0===e.length||e.length-t0?F(t,e):null)?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&B(this)),null!==n&&this.emit(\"data\",n),n},A.prototype._read=function(t){w(this,new b(\"_read()\"))},A.prototype.pipe=function(t,e){var n=this,i=this._readableState;switch(i.pipesCount){case 0:i.pipes=t;break;case 1:i.pipes=[i.pipes,t];break;default:i.pipes.push(t)}i.pipesCount+=1,c(\"pipe count=%d opts=%j\",i.pipesCount,e);var o=(!e||!1!==e.end)&&t!==r.stdout&&t!==r.stderr?l:m;function s(e,r){c(\"onunpipe\"),e===n&&r&&!1===r.hasUnpiped&&(r.hasUnpiped=!0,c(\"cleanup\"),t.removeListener(\"close\",d),t.removeListener(\"finish\",g),t.removeListener(\"drain\",u),t.removeListener(\"error\",p),t.removeListener(\"unpipe\",s),n.removeListener(\"end\",l),n.removeListener(\"end\",m),n.removeListener(\"data\",h),f=!0,!i.awaitDrain||t._writableState&&!t._writableState.needDrain||u())}function l(){c(\"onend\"),t.end()}i.endEmitted?r.nextTick(o):n.once(\"end\",o),t.on(\"unpipe\",s);var u=function(t){return function(){var e=t._readableState;c(\"pipeOnDrain\",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&a(t,\"data\")&&(e.flowing=!0,R(t))}}(n);t.on(\"drain\",u);var f=!1;function h(e){c(\"ondata\");var r=t.write(e);c(\"dest.write\",r),!1===r&&((1===i.pipesCount&&i.pipes===t||i.pipesCount>1&&-1!==j(i.pipes,t))&&!f&&(c(\"false write response, pause\",i.awaitDrain),i.awaitDrain++),n.pause())}function p(e){c(\"onerror\",e),m(),t.removeListener(\"error\",p),0===a(t,\"error\")&&w(t,e)}function d(){t.removeListener(\"finish\",g),m()}function g(){c(\"onfinish\"),t.removeListener(\"close\",d),m()}function m(){c(\"unpipe\"),n.unpipe(t)}return n.on(\"data\",h),function(t,e,r){if(\"function\"==typeof t.prependListener)return t.prependListener(e,r);t._events&&t._events[e]?Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]:t.on(e,r)}(t,\"error\",p),t.once(\"close\",d),t.once(\"finish\",g),t.emit(\"pipe\",n),i.flowing||(c(\"pipe resume\"),n.resume()),t},A.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit(\"unpipe\",this,r)),this;if(!t){var n=e.pipes,i=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var a=0;a0,!1!==i.flowing&&this.resume()):\"readable\"===t&&(i.endEmitted||i.readableListening||(i.readableListening=i.needReadable=!0,i.flowing=!1,i.emittedReadable=!1,c(\"on readable\",i.length,i.reading),i.length?L(this):i.reading||r.nextTick(z,this))),n},A.prototype.addListener=A.prototype.on,A.prototype.removeListener=function(t,e){var n=o.prototype.removeListener.call(this,t,e);return\"readable\"===t&&r.nextTick(O,this),n},A.prototype.removeAllListeners=function(t){var e=o.prototype.removeAllListeners.apply(this,arguments);return\"readable\"!==t&&void 0!==t||r.nextTick(O,this),e},A.prototype.resume=function(){var t=this._readableState;return t.flowing||(c(\"resume\"),t.flowing=!t.readableListening,function(t,e){e.resumeScheduled||(e.resumeScheduled=!0,r.nextTick(D,t,e))}(this,t)),t.paused=!1,this},A.prototype.pause=function(){return c(\"call pause flowing=%j\",this._readableState.flowing),!1!==this._readableState.flowing&&(c(\"pause\"),this._readableState.flowing=!1,this.emit(\"pause\")),this._readableState.paused=!0,this},A.prototype.wrap=function(t){var e=this,r=this._readableState,n=!1;for(var i in t.on(\"end\",(function(){if(c(\"wrapped end\"),r.decoder&&!r.ended){var t=r.decoder.end();t&&t.length&&e.push(t)}e.push(null)})),t.on(\"data\",(function(i){(c(\"wrapped data\"),r.decoder&&(i=r.decoder.write(i)),r.objectMode&&null==i)||(r.objectMode||i&&i.length)&&(e.push(i)||(n=!0,t.pause()))})),t)void 0===this[i]&&\"function\"==typeof t[i]&&(this[i]=function(e){return function(){return t[e].apply(t,arguments)}}(i));for(var a=0;a-1))throw new _(t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(A.prototype,\"writableBuffer\",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(A.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),A.prototype._write=function(t,e,r){r(new g(\"_write()\"))},A.prototype._writev=null,A.prototype.end=function(t,e,n){var i=this._writableState;return\"function\"==typeof t?(n=t,t=null,e=null):\"function\"==typeof e&&(n=e,e=null),null!=t&&this.write(t,e),i.corked&&(i.corked=1,this.uncork()),i.ending||function(t,e,n){e.ending=!0,P(t,e),n&&(e.finished?r.nextTick(n):t.once(\"finish\",n));e.ended=!0,t.writable=!1}(this,i,n),this},Object.defineProperty(A.prototype,\"writableLength\",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(A.prototype,\"destroyed\",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),A.prototype.destroy=f.destroy,A.prototype._undestroy=f.undestroy,A.prototype._destroy=function(t,e){e(t)}}).call(this)}).call(this,t(\"_process\"),\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"../errors\":286,\"./_stream_duplex\":287,\"./internal/streams/destroy\":294,\"./internal/streams/state\":298,\"./internal/streams/stream\":299,_process:277,buffer:85,inherits:231,\"util-deprecate\":330}],292:[function(t,e,r){(function(r){(function(){\"use strict\";var n;function i(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var a=t(\"./end-of-stream\"),o=Symbol(\"lastResolve\"),s=Symbol(\"lastReject\"),l=Symbol(\"error\"),c=Symbol(\"ended\"),u=Symbol(\"lastPromise\"),f=Symbol(\"handlePromise\"),h=Symbol(\"stream\");function p(t,e){return{value:t,done:e}}function d(t){var e=t[o];if(null!==e){var r=t[h].read();null!==r&&(t[u]=null,t[o]=null,t[s]=null,e(p(r,!1)))}}function g(t){r.nextTick(d,t)}var m=Object.getPrototypeOf((function(){})),v=Object.setPrototypeOf((i(n={get stream(){return this[h]},next:function(){var t=this,e=this[l];if(null!==e)return Promise.reject(e);if(this[c])return Promise.resolve(p(void 0,!0));if(this[h].destroyed)return new Promise((function(e,n){r.nextTick((function(){t[l]?n(t[l]):e(p(void 0,!0))}))}));var n,i=this[u];if(i)n=new Promise(function(t,e){return function(r,n){t.then((function(){e[c]?r(p(void 0,!0)):e[f](r,n)}),n)}}(i,this));else{var a=this[h].read();if(null!==a)return Promise.resolve(p(a,!1));n=new Promise(this[f])}return this[u]=n,n}},Symbol.asyncIterator,(function(){return this})),i(n,\"return\",(function(){var t=this;return new Promise((function(e,r){t[h].destroy(null,(function(t){t?r(t):e(p(void 0,!0))}))}))})),n),m);e.exports=function(t){var e,r=Object.create(v,(i(e={},h,{value:t,writable:!0}),i(e,o,{value:null,writable:!0}),i(e,s,{value:null,writable:!0}),i(e,l,{value:null,writable:!0}),i(e,c,{value:t._readableState.endEmitted,writable:!0}),i(e,f,{value:function(t,e){var n=r[h].read();n?(r[u]=null,r[o]=null,r[s]=null,t(p(n,!1))):(r[o]=t,r[s]=e)},writable:!0}),e));return r[u]=null,a(t,(function(t){if(t&&\"ERR_STREAM_PREMATURE_CLOSE\"!==t.code){var e=r[s];return null!==e&&(r[u]=null,r[o]=null,r[s]=null,e(t)),void(r[l]=t)}var n=r[o];null!==n&&(r[u]=null,r[o]=null,r[s]=null,n(p(void 0,!0))),r[c]=!0})),t.on(\"readable\",g.bind(null,r)),r}}).call(this)}).call(this,t(\"_process\"))},{\"./end-of-stream\":295,_process:277}],293:[function(t,e,r){\"use strict\";function n(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function i(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function a(t,e){for(var r=0;r0?this.tail.next=e:this.head=e,this.tail=e,++this.length}},{key:\"unshift\",value:function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length}},{key:\"shift\",value:function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}}},{key:\"clear\",value:function(){this.head=this.tail=null,this.length=0}},{key:\"join\",value:function(t){if(0===this.length)return\"\";for(var e=this.head,r=\"\"+e.data;e=e.next;)r+=t+e.data;return r}},{key:\"concat\",value:function(t){if(0===this.length)return o.alloc(0);for(var e,r,n,i=o.allocUnsafe(t>>>0),a=this.head,s=0;a;)e=a.data,r=i,n=s,o.prototype.copy.call(e,r,n),s+=a.data.length,a=a.next;return i}},{key:\"consume\",value:function(t,e){var r;return ti.length?i.length:t;if(a===i.length?n+=i:n+=i.slice(0,t),0==(t-=a)){a===i.length?(++r,e.next?this.head=e.next:this.head=this.tail=null):(this.head=e,e.data=i.slice(a));break}++r}return this.length-=r,n}},{key:\"_getBuffer\",value:function(t){var e=o.allocUnsafe(t),r=this.head,n=1;for(r.data.copy(e),t-=r.data.length;r=r.next;){var i=r.data,a=t>i.length?i.length:t;if(i.copy(e,e.length-t,0,a),0==(t-=a)){a===i.length?(++n,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=i.slice(a));break}++n}return this.length-=n,e}},{key:l,value:function(t,e){return s(this,function(t){for(var e=1;e0,(function(t){n||(n=t),t&&o.forEach(c),a||(o.forEach(c),i(n))}))}));return e.reduce(u)}},{\"../../../errors\":286,\"./end-of-stream\":295}],298:[function(t,e,r){\"use strict\";var n=t(\"../../../errors\").codes.ERR_INVALID_OPT_VALUE;e.exports={getHighWaterMark:function(t,e,r,i){var a=function(t,e,r){return null!=t.highWaterMark?t.highWaterMark:e?t[r]:null}(e,i,r);if(null!=a){if(!isFinite(a)||Math.floor(a)!==a||a<0)throw new n(i?r:\"highWaterMark\",a);return Math.floor(a)}return t.objectMode?16:16384}}},{\"../../../errors\":286}],299:[function(t,e,r){e.exports=t(\"events\").EventEmitter},{events:84}],300:[function(t,e,r){\"use strict\";var n=t(\"safe-buffer\").Buffer,i=n.isEncoding||function(t){switch((t=\"\"+t)&&t.toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":case\"raw\":return!0;default:return!1}};function a(t){var e;switch(this.encoding=function(t){var e=function(t){if(!t)return\"utf8\";for(var e;;)switch(t){case\"utf8\":case\"utf-8\":return\"utf8\";case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return\"utf16le\";case\"latin1\":case\"binary\":return\"latin1\";case\"base64\":case\"ascii\":case\"hex\":return t;default:if(e)return;t=(\"\"+t).toLowerCase(),e=!0}}(t);if(\"string\"!=typeof e&&(n.isEncoding===i||!i(t)))throw new Error(\"Unknown encoding: \"+t);return e||t}(t),this.encoding){case\"utf16le\":this.text=l,this.end=c,e=4;break;case\"utf8\":this.fillLast=s,e=4;break;case\"base64\":this.text=u,this.end=f,e=3;break;default:return this.write=h,void(this.end=p)}this.lastNeed=0,this.lastTotal=0,this.lastChar=n.allocUnsafe(e)}function o(t){return t<=127?0:t>>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function s(t){var e=this.lastTotal-this.lastNeed,r=function(t,e,r){if(128!=(192&e[0]))return t.lastNeed=0,\"\\ufffd\";if(t.lastNeed>1&&e.length>1){if(128!=(192&e[1]))return t.lastNeed=1,\"\\ufffd\";if(t.lastNeed>2&&e.length>2&&128!=(192&e[2]))return t.lastNeed=2,\"\\ufffd\"}}(this,t);return void 0!==r?r:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),void(this.lastNeed-=t.length))}function l(t,e){if((t.length-e)%2==0){var r=t.toString(\"utf16le\",e);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString(\"utf16le\",e,t.length-1)}function c(t){var e=t&&t.length?this.write(t):\"\";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString(\"utf16le\",0,r)}return e}function u(t,e){var r=(t.length-e)%3;return 0===r?t.toString(\"base64\",e):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString(\"base64\",e,t.length-r))}function f(t){var e=t&&t.length?this.write(t):\"\";return this.lastNeed?e+this.lastChar.toString(\"base64\",0,3-this.lastNeed):e}function h(t){return t.toString(this.encoding)}function p(t){return t&&t.length?this.write(t):\"\"}r.StringDecoder=a,a.prototype.write=function(t){if(0===t.length)return\"\";var e,r;if(this.lastNeed){if(void 0===(e=this.fillLast(t)))return\"\";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0)return i>0&&(t.lastNeed=i-1),i;if(--n=0)return i>0&&(t.lastNeed=i-2),i;if(--n=0)return i>0&&(2===i?i=0:t.lastNeed=i-3),i;return 0}(this,t,e);if(!this.lastNeed)return t.toString(\"utf8\",e);this.lastTotal=r;var n=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,n),t.toString(\"utf8\",e,n)},a.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length}},{\"safe-buffer\":284}],301:[function(t,e,r){(function(r,n){(function(){var r=t(\"assert\"),i=t(\"debug\")(\"stream-parser\");e.exports=function(t){var e=t&&\"function\"==typeof t._transform,r=t&&\"function\"==typeof t._write;if(!e&&!r)throw new Error(\"must pass a Writable or Transform stream in\");i(\"extending Parser into stream\"),t._bytes=o,t._skipBytes=s,e&&(t._passthrough=l);e?t._transform=u:t._write=c};function a(t){i(\"initializing parser stream\"),t._parserBytesLeft=0,t._parserBuffers=[],t._parserBuffered=0,t._parserState=-1,t._parserCallback=null,\"function\"==typeof t.push&&(t._parserOutput=t.push.bind(t)),t._parserInit=!0}function o(t,e){r(!this._parserCallback,'there is already a \"callback\" set!'),r(isFinite(t)&&t>0,'can only buffer a finite number of bytes > 0, got \"'+t+'\"'),this._parserInit||a(this),i(\"buffering %o bytes\",t),this._parserBytesLeft=t,this._parserCallback=e,this._parserState=0}function s(t,e){r(!this._parserCallback,'there is already a \"callback\" set!'),r(t>0,'can only skip > 0 bytes, got \"'+t+'\"'),this._parserInit||a(this),i(\"skipping %o bytes\",t),this._parserBytesLeft=t,this._parserCallback=e,this._parserState=1}function l(t,e){r(!this._parserCallback,'There is already a \"callback\" set!'),r(t>0,'can only pass through > 0 bytes, got \"'+t+'\"'),this._parserInit||a(this),i(\"passing through %o bytes\",t),this._parserBytesLeft=t,this._parserCallback=e,this._parserState=2}function c(t,e,r){this._parserInit||a(this),i(\"write(%o bytes)\",t.length),\"function\"==typeof e&&(r=e),h(this,t,null,r)}function u(t,e,r){this._parserInit||a(this),i(\"transform(%o bytes)\",t.length),\"function\"!=typeof e&&(e=this._parserOutput),h(this,t,e,r)}function f(t,e,r,a){if(t._parserBytesLeft-=e.length,i(\"%o bytes left for stream piece\",t._parserBytesLeft),0===t._parserState?(t._parserBuffers.push(e),t._parserBuffered+=e.length):2===t._parserState&&r(e),0!==t._parserBytesLeft)return a;var o=t._parserCallback;if(o&&0===t._parserState&&t._parserBuffers.length>1&&(e=n.concat(t._parserBuffers,t._parserBuffered)),0!==t._parserState&&(e=null),t._parserCallback=null,t._parserBuffered=0,t._parserState=-1,t._parserBuffers.splice(0),o){var s=[];e&&s.push(e),r&&s.push(r);var l=o.length>s.length;l&&s.push(p(a));var c=o.apply(t,s);if(!l||a===c)return a}}var h=p((function t(e,r,n,i){return e._parserBytesLeft<=0?i(new Error(\"got data but not currently parsing anything\")):r.length<=e._parserBytesLeft?function(){return f(e,r,n,i)}:function(){var a=r.slice(0,e._parserBytesLeft);return f(e,a,n,(function(o){return o?i(o):r.length>a.length?function(){return t(e,r.slice(a.length),n,i)}:void 0}))}}));function p(t){return function(){for(var e=t.apply(this,arguments);\"function\"==typeof e;)e=e();return e}}}).call(this)}).call(this,t(\"_process\"),t(\"buffer\").Buffer)},{_process:277,assert:75,buffer:85,debug:302}],302:[function(t,e,r){(function(n){(function(){function i(){var t;try{t=r.storage.debug}catch(t){}return!t&&void 0!==n&&\"env\"in n&&(t=n.env.DEBUG),t}(r=e.exports=t(\"./debug\")).log=function(){return\"object\"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)},r.formatArgs=function(t){var e=this.useColors;if(t[0]=(e?\"%c\":\"\")+this.namespace+(e?\" %c\":\" \")+t[0]+(e?\"%c \":\" \")+\"+\"+r.humanize(this.diff),!e)return;var n=\"color: \"+this.color;t.splice(1,0,n,\"color: inherit\");var i=0,a=0;t[0].replace(/%[a-zA-Z%]/g,(function(t){\"%%\"!==t&&(i++,\"%c\"===t&&(a=i))})),t.splice(a,0,n)},r.save=function(t){try{null==t?r.storage.removeItem(\"debug\"):r.storage.debug=t}catch(t){}},r.load=i,r.useColors=function(){if(\"undefined\"!=typeof window&&window.process&&\"renderer\"===window.process.type)return!0;return\"undefined\"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||\"undefined\"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||\"undefined\"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)&&parseInt(RegExp.$1,10)>=31||\"undefined\"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/)},r.storage=\"undefined\"!=typeof chrome&&void 0!==chrome.storage?chrome.storage.local:function(){try{return window.localStorage}catch(t){}}(),r.colors=[\"lightseagreen\",\"forestgreen\",\"goldenrod\",\"dodgerblue\",\"darkorchid\",\"crimson\"],r.formatters.j=function(t){try{return JSON.stringify(t)}catch(t){return\"[UnexpectedJSONParseError]: \"+t.message}},r.enable(i())}).call(this)}).call(this,t(\"_process\"))},{\"./debug\":303,_process:277}],303:[function(t,e,r){var n;function i(t){function e(){if(e.enabled){var t=e,i=+new Date,a=i-(n||i);t.diff=a,t.prev=n,t.curr=i,n=i;for(var o=new Array(arguments.length),s=0;s0)return function(t){if((t=String(t)).length>100)return;var e=/^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(t);if(!e)return;var r=parseFloat(e[1]);switch((e[2]||\"ms\").toLowerCase()){case\"years\":case\"year\":case\"yrs\":case\"yr\":case\"y\":return 315576e5*r;case\"days\":case\"day\":case\"d\":return r*o;case\"hours\":case\"hour\":case\"hrs\":case\"hr\":case\"h\":return r*a;case\"minutes\":case\"minute\":case\"mins\":case\"min\":case\"m\":return r*i;case\"seconds\":case\"second\":case\"secs\":case\"sec\":case\"s\":return r*n;case\"milliseconds\":case\"millisecond\":case\"msecs\":case\"msec\":case\"ms\":return r;default:return}}(t);if(\"number\"===l&&!1===isNaN(t))return e.long?s(r=t,o,\"day\")||s(r,a,\"hour\")||s(r,i,\"minute\")||s(r,n,\"second\")||r+\" ms\":function(t){if(t>=o)return Math.round(t/o)+\"d\";if(t>=a)return Math.round(t/a)+\"h\";if(t>=i)return Math.round(t/i)+\"m\";if(t>=n)return Math.round(t/n)+\"s\";return t+\"ms\"}(t);throw new Error(\"val is not a non-empty string or a valid number. val=\"+JSON.stringify(t))}},{}],305:[function(t,e,r){\"use strict\";var n=t(\"parenthesis\");e.exports=function(t,e,r){if(null==t)throw Error(\"First argument should be a string\");if(null==e)throw Error(\"Separator should be a string or a RegExp\");r?(\"string\"==typeof r||Array.isArray(r))&&(r={ignore:r}):r={},null==r.escape&&(r.escape=!0),null==r.ignore?r.ignore=[\"[]\",\"()\",\"{}\",\"<>\",'\"\"',\"''\",\"``\",\"\\u201c\\u201d\",\"\\xab\\xbb\"]:(\"string\"==typeof r.ignore&&(r.ignore=[r.ignore]),r.ignore=r.ignore.map((function(t){return 1===t.length&&(t+=t),t})));var i=n.parse(t,{flat:!0,brackets:r.ignore}),a=i[0].split(e);if(r.escape){for(var o=[],s=0;s0;){e=c[c.length-1];var p=t[e];if(a[e]=0&&s[e].push(o[g])}a[e]=d}else{if(n[e]===r[e]){var m=[],v=[],y=0;for(d=l.length-1;d>=0;--d){var x=l[d];if(i[x]=!1,m.push(x),v.push(s[x]),y+=s[x].length,o[x]=f.length,x===e){l.length=d;break}}f.push(m);var b=new Array(y);for(d=0;d1&&(i=1),i<-1&&(i=-1),(t*n-e*r<0?-1:1)*Math.acos(i)};r.default=function(t){var e=t.px,r=t.py,l=t.cx,c=t.cy,u=t.rx,f=t.ry,h=t.xAxisRotation,p=void 0===h?0:h,d=t.largeArcFlag,g=void 0===d?0:d,m=t.sweepFlag,v=void 0===m?0:m,y=[];if(0===u||0===f)return[];var x=Math.sin(p*i/360),b=Math.cos(p*i/360),_=b*(e-l)/2+x*(r-c)/2,w=-x*(e-l)/2+b*(r-c)/2;if(0===_&&0===w)return[];u=Math.abs(u),f=Math.abs(f);var T=Math.pow(_,2)/Math.pow(u,2)+Math.pow(w,2)/Math.pow(f,2);T>1&&(u*=Math.sqrt(T),f*=Math.sqrt(T));var k=function(t,e,r,n,a,o,l,c,u,f,h,p){var d=Math.pow(a,2),g=Math.pow(o,2),m=Math.pow(h,2),v=Math.pow(p,2),y=d*g-d*v-g*m;y<0&&(y=0),y/=d*v+g*m;var x=(y=Math.sqrt(y)*(l===c?-1:1))*a/o*p,b=y*-o/a*h,_=f*x-u*b+(t+r)/2,w=u*x+f*b+(e+n)/2,T=(h-x)/a,k=(p-b)/o,A=(-h-x)/a,M=(-p-b)/o,S=s(1,0,T,k),E=s(T,k,A,M);return 0===c&&E>0&&(E-=i),1===c&&E<0&&(E+=i),[_,w,S,E]}(e,r,l,c,u,f,g,v,x,b,_,w),A=n(k,4),M=A[0],S=A[1],E=A[2],L=A[3],C=Math.abs(L)/(i/4);Math.abs(1-C)<1e-7&&(C=1);var P=Math.max(Math.ceil(C),1);L/=P;for(var I=0;Ie[2]&&(e[2]=c[u+0]),c[u+1]>e[3]&&(e[3]=c[u+1]);return e}},{\"abs-svg-path\":70,assert:75,\"is-svg-path\":238,\"normalize-svg-path\":309,\"parse-svg-path\":250}],309:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e,r=[],o=0,s=0,l=0,c=0,u=null,f=null,h=0,p=0,d=0,g=t.length;d4?(o=m[m.length-4],s=m[m.length-3]):(o=h,s=p),r.push(m)}return r};var n=t(\"svg-arc-to-cubic-bezier\");function i(t,e,r,n){return[\"C\",t,e,r,n,r,n]}function a(t,e,r,n,i,a){return[\"C\",t/3+2/3*r,e/3+2/3*n,i/3+2/3*r,a/3+2/3*n,i,a]}},{\"svg-arc-to-cubic-bezier\":307}],310:[function(t,e,r){\"use strict\";var n,i=t(\"svg-path-bounds\"),a=t(\"parse-svg-path\"),o=t(\"draw-svg-path\"),s=t(\"is-svg-path\"),l=t(\"bitmap-sdf\"),c=document.createElement(\"canvas\"),u=c.getContext(\"2d\");e.exports=function(t,e){if(!s(t))throw Error(\"Argument should be valid svg path string\");e||(e={});var r,f;e.shape?(r=e.shape[0],f=e.shape[1]):(r=c.width=e.w||e.width||200,f=c.height=e.h||e.height||200);var h=Math.min(r,f),p=e.stroke||0,d=e.viewbox||e.viewBox||i(t),g=[r/(d[2]-d[0]),f/(d[3]-d[1])],m=Math.min(g[0]||0,g[1]||0)/2;u.fillStyle=\"black\",u.fillRect(0,0,r,f),u.fillStyle=\"white\",p&&(\"number\"!=typeof p&&(p=1),u.strokeStyle=p>0?\"white\":\"black\",u.lineWidth=Math.abs(p));if(u.translate(.5*r,.5*f),u.scale(m,m),function(){if(null!=n)return n;var t=document.createElement(\"canvas\").getContext(\"2d\");if(t.canvas.width=t.canvas.height=1,!window.Path2D)return n=!1;var e=new Path2D(\"M0,0h1v1h-1v-1Z\");t.fillStyle=\"black\",t.fill(e);var r=t.getImageData(0,0,1,1);return n=r&&r.data&&255===r.data[3]}()){var v=new Path2D(t);u.fill(v),p&&u.stroke(v)}else{var y=a(t);o(u,y),u.fill(),p&&u.stroke()}return u.setTransform(1,0,0,1,0,0),l(u,{cutoff:null!=e.cutoff?e.cutoff:.5,radius:null!=e.radius?e.radius:.5*h})}},{\"bitmap-sdf\":82,\"draw-svg-path\":126,\"is-svg-path\":238,\"parse-svg-path\":250,\"svg-path-bounds\":308}],311:[function(t,e,r){(function(e,n){(function(){var i=t(\"process/browser.js\").nextTick,a=Function.prototype.apply,o=Array.prototype.slice,s={},l=0;function c(t,e){this._id=t,this._clearFn=e}r.setTimeout=function(){return new c(a.call(setTimeout,window,arguments),clearTimeout)},r.setInterval=function(){return new c(a.call(setInterval,window,arguments),clearInterval)},r.clearTimeout=r.clearInterval=function(t){t.close()},c.prototype.unref=c.prototype.ref=function(){},c.prototype.close=function(){this._clearFn.call(window,this._id)},r.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},r.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},r._unrefActive=r.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout((function(){t._onTimeout&&t._onTimeout()}),e))},r.setImmediate=\"function\"==typeof e?e:function(t){var e=l++,n=!(arguments.length<2)&&o.call(arguments,1);return s[e]=!0,i((function(){s[e]&&(n?t.apply(null,n):t.call(null),r.clearImmediate(e))})),e},r.clearImmediate=\"function\"==typeof n?n:function(t){delete s[t]}}).call(this)}).call(this,t(\"timers\").setImmediate,t(\"timers\").clearImmediate)},{\"process/browser.js\":277,timers:311}],312:[function(t,e,r){!function(t){var r=/^\\s+/,n=/\\s+$/,i=0,a=t.round,o=t.min,s=t.max,l=t.random;function c(e,l){if(l=l||{},(e=e||\"\")instanceof c)return e;if(!(this instanceof c))return new c(e,l);var u=function(e){var i={r:0,g:0,b:0},a=1,l=null,c=null,u=null,f=!1,h=!1;\"string\"==typeof e&&(e=function(t){t=t.replace(r,\"\").replace(n,\"\").toLowerCase();var e,i=!1;if(S[t])t=S[t],i=!0;else if(\"transparent\"==t)return{r:0,g:0,b:0,a:0,format:\"name\"};if(e=j.rgb.exec(t))return{r:e[1],g:e[2],b:e[3]};if(e=j.rgba.exec(t))return{r:e[1],g:e[2],b:e[3],a:e[4]};if(e=j.hsl.exec(t))return{h:e[1],s:e[2],l:e[3]};if(e=j.hsla.exec(t))return{h:e[1],s:e[2],l:e[3],a:e[4]};if(e=j.hsv.exec(t))return{h:e[1],s:e[2],v:e[3]};if(e=j.hsva.exec(t))return{h:e[1],s:e[2],v:e[3],a:e[4]};if(e=j.hex8.exec(t))return{r:I(e[1]),g:I(e[2]),b:I(e[3]),a:R(e[4]),format:i?\"name\":\"hex8\"};if(e=j.hex6.exec(t))return{r:I(e[1]),g:I(e[2]),b:I(e[3]),format:i?\"name\":\"hex\"};if(e=j.hex4.exec(t))return{r:I(e[1]+\"\"+e[1]),g:I(e[2]+\"\"+e[2]),b:I(e[3]+\"\"+e[3]),a:R(e[4]+\"\"+e[4]),format:i?\"name\":\"hex8\"};if(e=j.hex3.exec(t))return{r:I(e[1]+\"\"+e[1]),g:I(e[2]+\"\"+e[2]),b:I(e[3]+\"\"+e[3]),format:i?\"name\":\"hex\"};return!1}(e));\"object\"==typeof e&&(U(e.r)&&U(e.g)&&U(e.b)?(p=e.r,d=e.g,g=e.b,i={r:255*C(p,255),g:255*C(d,255),b:255*C(g,255)},f=!0,h=\"%\"===String(e.r).substr(-1)?\"prgb\":\"rgb\"):U(e.h)&&U(e.s)&&U(e.v)?(l=z(e.s),c=z(e.v),i=function(e,r,n){e=6*C(e,360),r=C(r,100),n=C(n,100);var i=t.floor(e),a=e-i,o=n*(1-r),s=n*(1-a*r),l=n*(1-(1-a)*r),c=i%6;return{r:255*[n,s,o,o,l,n][c],g:255*[l,n,n,s,o,o][c],b:255*[o,o,l,n,n,s][c]}}(e.h,l,c),f=!0,h=\"hsv\"):U(e.h)&&U(e.s)&&U(e.l)&&(l=z(e.s),u=z(e.l),i=function(t,e,r){var n,i,a;function o(t,e,r){return r<0&&(r+=1),r>1&&(r-=1),r<1/6?t+6*(e-t)*r:r<.5?e:r<2/3?t+(e-t)*(2/3-r)*6:t}if(t=C(t,360),e=C(e,100),r=C(r,100),0===e)n=i=a=r;else{var s=r<.5?r*(1+e):r+e-r*e,l=2*r-s;n=o(l,s,t+1/3),i=o(l,s,t),a=o(l,s,t-1/3)}return{r:255*n,g:255*i,b:255*a}}(e.h,l,u),f=!0,h=\"hsl\"),e.hasOwnProperty(\"a\")&&(a=e.a));var p,d,g;return a=L(a),{ok:f,format:e.format||h,r:o(255,s(i.r,0)),g:o(255,s(i.g,0)),b:o(255,s(i.b,0)),a:a}}(e);this._originalInput=e,this._r=u.r,this._g=u.g,this._b=u.b,this._a=u.a,this._roundA=a(100*this._a)/100,this._format=l.format||u.format,this._gradientType=l.gradientType,this._r<1&&(this._r=a(this._r)),this._g<1&&(this._g=a(this._g)),this._b<1&&(this._b=a(this._b)),this._ok=u.ok,this._tc_id=i++}function u(t,e,r){t=C(t,255),e=C(e,255),r=C(r,255);var n,i,a=s(t,e,r),l=o(t,e,r),c=(a+l)/2;if(a==l)n=i=0;else{var u=a-l;switch(i=c>.5?u/(2-a-l):u/(a+l),a){case t:n=(e-r)/u+(e>1)+720)%360;--e;)n.h=(n.h+i)%360,a.push(c(n));return a}function M(t,e){e=e||6;for(var r=c(t).toHsv(),n=r.h,i=r.s,a=r.v,o=[],s=1/e;e--;)o.push(c({h:n,s:i,v:a})),a=(a+s)%1;return o}c.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var t=this.toRgb();return(299*t.r+587*t.g+114*t.b)/1e3},getLuminance:function(){var e,r,n,i=this.toRgb();return e=i.r/255,r=i.g/255,n=i.b/255,.2126*(e<=.03928?e/12.92:t.pow((e+.055)/1.055,2.4))+.7152*(r<=.03928?r/12.92:t.pow((r+.055)/1.055,2.4))+.0722*(n<=.03928?n/12.92:t.pow((n+.055)/1.055,2.4))},setAlpha:function(t){return this._a=L(t),this._roundA=a(100*this._a)/100,this},toHsv:function(){var t=f(this._r,this._g,this._b);return{h:360*t.h,s:t.s,v:t.v,a:this._a}},toHsvString:function(){var t=f(this._r,this._g,this._b),e=a(360*t.h),r=a(100*t.s),n=a(100*t.v);return 1==this._a?\"hsv(\"+e+\", \"+r+\"%, \"+n+\"%)\":\"hsva(\"+e+\", \"+r+\"%, \"+n+\"%, \"+this._roundA+\")\"},toHsl:function(){var t=u(this._r,this._g,this._b);return{h:360*t.h,s:t.s,l:t.l,a:this._a}},toHslString:function(){var t=u(this._r,this._g,this._b),e=a(360*t.h),r=a(100*t.s),n=a(100*t.l);return 1==this._a?\"hsl(\"+e+\", \"+r+\"%, \"+n+\"%)\":\"hsla(\"+e+\", \"+r+\"%, \"+n+\"%, \"+this._roundA+\")\"},toHex:function(t){return h(this._r,this._g,this._b,t)},toHexString:function(t){return\"#\"+this.toHex(t)},toHex8:function(t){return function(t,e,r,n,i){var o=[O(a(t).toString(16)),O(a(e).toString(16)),O(a(r).toString(16)),O(D(n))];if(i&&o[0].charAt(0)==o[0].charAt(1)&&o[1].charAt(0)==o[1].charAt(1)&&o[2].charAt(0)==o[2].charAt(1)&&o[3].charAt(0)==o[3].charAt(1))return o[0].charAt(0)+o[1].charAt(0)+o[2].charAt(0)+o[3].charAt(0);return o.join(\"\")}(this._r,this._g,this._b,this._a,t)},toHex8String:function(t){return\"#\"+this.toHex8(t)},toRgb:function(){return{r:a(this._r),g:a(this._g),b:a(this._b),a:this._a}},toRgbString:function(){return 1==this._a?\"rgb(\"+a(this._r)+\", \"+a(this._g)+\", \"+a(this._b)+\")\":\"rgba(\"+a(this._r)+\", \"+a(this._g)+\", \"+a(this._b)+\", \"+this._roundA+\")\"},toPercentageRgb:function(){return{r:a(100*C(this._r,255))+\"%\",g:a(100*C(this._g,255))+\"%\",b:a(100*C(this._b,255))+\"%\",a:this._a}},toPercentageRgbString:function(){return 1==this._a?\"rgb(\"+a(100*C(this._r,255))+\"%, \"+a(100*C(this._g,255))+\"%, \"+a(100*C(this._b,255))+\"%)\":\"rgba(\"+a(100*C(this._r,255))+\"%, \"+a(100*C(this._g,255))+\"%, \"+a(100*C(this._b,255))+\"%, \"+this._roundA+\")\"},toName:function(){return 0===this._a?\"transparent\":!(this._a<1)&&(E[h(this._r,this._g,this._b,!0)]||!1)},toFilter:function(t){var e=\"#\"+p(this._r,this._g,this._b,this._a),r=e,n=this._gradientType?\"GradientType = 1, \":\"\";if(t){var i=c(t);r=\"#\"+p(i._r,i._g,i._b,i._a)}return\"progid:DXImageTransform.Microsoft.gradient(\"+n+\"startColorstr=\"+e+\",endColorstr=\"+r+\")\"},toString:function(t){var e=!!t;t=t||this._format;var r=!1,n=this._a<1&&this._a>=0;return e||!n||\"hex\"!==t&&\"hex6\"!==t&&\"hex3\"!==t&&\"hex4\"!==t&&\"hex8\"!==t&&\"name\"!==t?(\"rgb\"===t&&(r=this.toRgbString()),\"prgb\"===t&&(r=this.toPercentageRgbString()),\"hex\"!==t&&\"hex6\"!==t||(r=this.toHexString()),\"hex3\"===t&&(r=this.toHexString(!0)),\"hex4\"===t&&(r=this.toHex8String(!0)),\"hex8\"===t&&(r=this.toHex8String()),\"name\"===t&&(r=this.toName()),\"hsl\"===t&&(r=this.toHslString()),\"hsv\"===t&&(r=this.toHsvString()),r||this.toHexString()):\"name\"===t&&0===this._a?this.toName():this.toRgbString()},clone:function(){return c(this.toString())},_applyModification:function(t,e){var r=t.apply(null,[this].concat([].slice.call(e)));return this._r=r._r,this._g=r._g,this._b=r._b,this.setAlpha(r._a),this},lighten:function(){return this._applyModification(v,arguments)},brighten:function(){return this._applyModification(y,arguments)},darken:function(){return this._applyModification(x,arguments)},desaturate:function(){return this._applyModification(d,arguments)},saturate:function(){return this._applyModification(g,arguments)},greyscale:function(){return this._applyModification(m,arguments)},spin:function(){return this._applyModification(b,arguments)},_applyCombination:function(t,e){return t.apply(null,[this].concat([].slice.call(e)))},analogous:function(){return this._applyCombination(A,arguments)},complement:function(){return this._applyCombination(_,arguments)},monochromatic:function(){return this._applyCombination(M,arguments)},splitcomplement:function(){return this._applyCombination(k,arguments)},triad:function(){return this._applyCombination(w,arguments)},tetrad:function(){return this._applyCombination(T,arguments)}},c.fromRatio=function(t,e){if(\"object\"==typeof t){var r={};for(var n in t)t.hasOwnProperty(n)&&(r[n]=\"a\"===n?t[n]:z(t[n]));t=r}return c(t,e)},c.equals=function(t,e){return!(!t||!e)&&c(t).toRgbString()==c(e).toRgbString()},c.random=function(){return c.fromRatio({r:l(),g:l(),b:l()})},c.mix=function(t,e,r){r=0===r?0:r||50;var n=c(t).toRgb(),i=c(e).toRgb(),a=r/100;return c({r:(i.r-n.r)*a+n.r,g:(i.g-n.g)*a+n.g,b:(i.b-n.b)*a+n.b,a:(i.a-n.a)*a+n.a})},c.readability=function(e,r){var n=c(e),i=c(r);return(t.max(n.getLuminance(),i.getLuminance())+.05)/(t.min(n.getLuminance(),i.getLuminance())+.05)},c.isReadable=function(t,e,r){var n,i,a=c.readability(t,e);switch(i=!1,(n=function(t){var e,r;e=((t=t||{level:\"AA\",size:\"small\"}).level||\"AA\").toUpperCase(),r=(t.size||\"small\").toLowerCase(),\"AA\"!==e&&\"AAA\"!==e&&(e=\"AA\");\"small\"!==r&&\"large\"!==r&&(r=\"small\");return{level:e,size:r}}(r)).level+n.size){case\"AAsmall\":case\"AAAlarge\":i=a>=4.5;break;case\"AAlarge\":i=a>=3;break;case\"AAAsmall\":i=a>=7}return i},c.mostReadable=function(t,e,r){var n,i,a,o,s=null,l=0;i=(r=r||{}).includeFallbackColors,a=r.level,o=r.size;for(var u=0;ul&&(l=n,s=c(e[u]));return c.isReadable(t,s,{level:a,size:o})||!i?s:(r.includeFallbackColors=!1,c.mostReadable(t,[\"#fff\",\"#000\"],r))};var S=c.names={aliceblue:\"f0f8ff\",antiquewhite:\"faebd7\",aqua:\"0ff\",aquamarine:\"7fffd4\",azure:\"f0ffff\",beige:\"f5f5dc\",bisque:\"ffe4c4\",black:\"000\",blanchedalmond:\"ffebcd\",blue:\"00f\",blueviolet:\"8a2be2\",brown:\"a52a2a\",burlywood:\"deb887\",burntsienna:\"ea7e5d\",cadetblue:\"5f9ea0\",chartreuse:\"7fff00\",chocolate:\"d2691e\",coral:\"ff7f50\",cornflowerblue:\"6495ed\",cornsilk:\"fff8dc\",crimson:\"dc143c\",cyan:\"0ff\",darkblue:\"00008b\",darkcyan:\"008b8b\",darkgoldenrod:\"b8860b\",darkgray:\"a9a9a9\",darkgreen:\"006400\",darkgrey:\"a9a9a9\",darkkhaki:\"bdb76b\",darkmagenta:\"8b008b\",darkolivegreen:\"556b2f\",darkorange:\"ff8c00\",darkorchid:\"9932cc\",darkred:\"8b0000\",darksalmon:\"e9967a\",darkseagreen:\"8fbc8f\",darkslateblue:\"483d8b\",darkslategray:\"2f4f4f\",darkslategrey:\"2f4f4f\",darkturquoise:\"00ced1\",darkviolet:\"9400d3\",deeppink:\"ff1493\",deepskyblue:\"00bfff\",dimgray:\"696969\",dimgrey:\"696969\",dodgerblue:\"1e90ff\",firebrick:\"b22222\",floralwhite:\"fffaf0\",forestgreen:\"228b22\",fuchsia:\"f0f\",gainsboro:\"dcdcdc\",ghostwhite:\"f8f8ff\",gold:\"ffd700\",goldenrod:\"daa520\",gray:\"808080\",green:\"008000\",greenyellow:\"adff2f\",grey:\"808080\",honeydew:\"f0fff0\",hotpink:\"ff69b4\",indianred:\"cd5c5c\",indigo:\"4b0082\",ivory:\"fffff0\",khaki:\"f0e68c\",lavender:\"e6e6fa\",lavenderblush:\"fff0f5\",lawngreen:\"7cfc00\",lemonchiffon:\"fffacd\",lightblue:\"add8e6\",lightcoral:\"f08080\",lightcyan:\"e0ffff\",lightgoldenrodyellow:\"fafad2\",lightgray:\"d3d3d3\",lightgreen:\"90ee90\",lightgrey:\"d3d3d3\",lightpink:\"ffb6c1\",lightsalmon:\"ffa07a\",lightseagreen:\"20b2aa\",lightskyblue:\"87cefa\",lightslategray:\"789\",lightslategrey:\"789\",lightsteelblue:\"b0c4de\",lightyellow:\"ffffe0\",lime:\"0f0\",limegreen:\"32cd32\",linen:\"faf0e6\",magenta:\"f0f\",maroon:\"800000\",mediumaquamarine:\"66cdaa\",mediumblue:\"0000cd\",mediumorchid:\"ba55d3\",mediumpurple:\"9370db\",mediumseagreen:\"3cb371\",mediumslateblue:\"7b68ee\",mediumspringgreen:\"00fa9a\",mediumturquoise:\"48d1cc\",mediumvioletred:\"c71585\",midnightblue:\"191970\",mintcream:\"f5fffa\",mistyrose:\"ffe4e1\",moccasin:\"ffe4b5\",navajowhite:\"ffdead\",navy:\"000080\",oldlace:\"fdf5e6\",olive:\"808000\",olivedrab:\"6b8e23\",orange:\"ffa500\",orangered:\"ff4500\",orchid:\"da70d6\",palegoldenrod:\"eee8aa\",palegreen:\"98fb98\",paleturquoise:\"afeeee\",palevioletred:\"db7093\",papayawhip:\"ffefd5\",peachpuff:\"ffdab9\",peru:\"cd853f\",pink:\"ffc0cb\",plum:\"dda0dd\",powderblue:\"b0e0e6\",purple:\"800080\",rebeccapurple:\"663399\",red:\"f00\",rosybrown:\"bc8f8f\",royalblue:\"4169e1\",saddlebrown:\"8b4513\",salmon:\"fa8072\",sandybrown:\"f4a460\",seagreen:\"2e8b57\",seashell:\"fff5ee\",sienna:\"a0522d\",silver:\"c0c0c0\",skyblue:\"87ceeb\",slateblue:\"6a5acd\",slategray:\"708090\",slategrey:\"708090\",snow:\"fffafa\",springgreen:\"00ff7f\",steelblue:\"4682b4\",tan:\"d2b48c\",teal:\"008080\",thistle:\"d8bfd8\",tomato:\"ff6347\",turquoise:\"40e0d0\",violet:\"ee82ee\",wheat:\"f5deb3\",white:\"fff\",whitesmoke:\"f5f5f5\",yellow:\"ff0\",yellowgreen:\"9acd32\"},E=c.hexNames=function(t){var e={};for(var r in t)t.hasOwnProperty(r)&&(e[t[r]]=r);return e}(S);function L(t){return t=parseFloat(t),(isNaN(t)||t<0||t>1)&&(t=1),t}function C(e,r){(function(t){return\"string\"==typeof t&&-1!=t.indexOf(\".\")&&1===parseFloat(t)})(e)&&(e=\"100%\");var n=function(t){return\"string\"==typeof t&&-1!=t.indexOf(\"%\")}(e);return e=o(r,s(0,parseFloat(e))),n&&(e=parseInt(e*r,10)/100),t.abs(e-r)<1e-6?1:e%r/parseFloat(r)}function P(t){return o(1,s(0,t))}function I(t){return parseInt(t,16)}function O(t){return 1==t.length?\"0\"+t:\"\"+t}function z(t){return t<=1&&(t=100*t+\"%\"),t}function D(e){return t.round(255*parseFloat(e)).toString(16)}function R(t){return I(t)/255}var F,B,N,j=(B=\"[\\\\s|\\\\(]+(\"+(F=\"(?:[-\\\\+]?\\\\d*\\\\.\\\\d+%?)|(?:[-\\\\+]?\\\\d+%?)\")+\")[,|\\\\s]+(\"+F+\")[,|\\\\s]+(\"+F+\")\\\\s*\\\\)?\",N=\"[\\\\s|\\\\(]+(\"+F+\")[,|\\\\s]+(\"+F+\")[,|\\\\s]+(\"+F+\")[,|\\\\s]+(\"+F+\")\\\\s*\\\\)?\",{CSS_UNIT:new RegExp(F),rgb:new RegExp(\"rgb\"+B),rgba:new RegExp(\"rgba\"+N),hsl:new RegExp(\"hsl\"+B),hsla:new RegExp(\"hsla\"+N),hsv:new RegExp(\"hsv\"+B),hsva:new RegExp(\"hsva\"+N),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/});function U(t){return!!j.CSS_UNIT.exec(t)}void 0!==e&&e.exports?e.exports=c:window.tinycolor=c}(Math)},{}],313:[function(t,e,r){\"use strict\";e.exports=i,e.exports.float32=e.exports.float=i,e.exports.fract32=e.exports.fract=function(t,e){if(t.length){if(t instanceof Float32Array)return new Float32Array(t.length);e instanceof Float32Array||(e=i(t));for(var r=0,n=e.length;ro&&(o=t[0]),t[1]s&&(s=t[1])}function c(t){switch(t.type){case\"GeometryCollection\":t.geometries.forEach(c);break;case\"Point\":l(t.coordinates);break;case\"MultiPoint\":t.coordinates.forEach(l)}}for(e in t.arcs.forEach((function(t){for(var e,r=-1,l=t.length;++ro&&(o=e[0]),e[1]s&&(s=e[1])})),t.objects)c(t.objects[e]);return[i,a,o,s]}function i(t,e){var r=e.id,n=e.bbox,i=null==e.properties?{}:e.properties,o=a(t,e);return null==r&&null==n?{type:\"Feature\",properties:i,geometry:o}:null==n?{type:\"Feature\",id:r,properties:i,geometry:o}:{type:\"Feature\",id:r,bbox:n,properties:i,geometry:o}}function a(t,e){var n=r(t.transform),i=t.arcs;function a(t,e){e.length&&e.pop();for(var r=i[t<0?~t:t],a=0,o=r.length;a1)n=l(t,e,r);else for(i=0,n=new Array(a=t.arcs.length);i1)for(var a,s,c=1,u=l(i[0]);cu&&(s=i[0],i[0]=i[c],i[c]=s,u=a);return i})).filter((function(t){return t.length>0}))}}function u(t,e){for(var r=0,n=t.length;r>>1;t[i]=2))throw new Error(\"n must be \\u22652\");var r,i=(l=t.bbox||n(t))[0],a=l[1],o=l[2],s=l[3];e={scale:[o-i?(o-i)/(r-1):1,s-a?(s-a)/(r-1):1],translate:[i,a]}}var l,c,u=f(e),h=t.objects,p={};function d(t){return u(t)}function g(t){var e;switch(t.type){case\"GeometryCollection\":e={type:\"GeometryCollection\",geometries:t.geometries.map(g)};break;case\"Point\":e={type:\"Point\",coordinates:d(t.coordinates)};break;case\"MultiPoint\":e={type:\"MultiPoint\",coordinates:t.coordinates.map(d)};break;default:return t}return null!=t.id&&(e.id=t.id),null!=t.bbox&&(e.bbox=t.bbox),null!=t.properties&&(e.properties=t.properties),e}for(c in h)p[c]=g(h[c]);return{type:\"Topology\",bbox:l,transform:e,objects:p,arcs:t.arcs.map((function(t){var e,r=0,n=1,i=t.length,a=new Array(i);for(a[0]=u(t[0],0);++r\":(e.length>100&&(e=e.slice(0,99)+\"\\u2026\"),e=e.replace(i,(function(t){switch(t){case\"\\n\":return\"\\\\n\";case\"\\r\":return\"\\\\r\";case\"\\u2028\":return\"\\\\u2028\";case\"\\u2029\":return\"\\\\u2029\";default:throw new Error(\"Unexpected character\")}})))}},{\"./safe-to-string\":318}],320:[function(t,e,r){\"use strict\";var n=t(\"../value/is\"),i={object:!0,function:!0,undefined:!0};e.exports=function(t){return!!n(t)&&hasOwnProperty.call(i,typeof t)}},{\"../value/is\":326}],321:[function(t,e,r){\"use strict\";var n=t(\"../lib/resolve-exception\"),i=t(\"./is\");e.exports=function(t){return i(t)?t:n(t,\"%v is not a plain function\",arguments[1])}},{\"../lib/resolve-exception\":317,\"./is\":322}],322:[function(t,e,r){\"use strict\";var n=t(\"../function/is\"),i=/^\\s*class[\\s{/}]/,a=Function.prototype.toString;e.exports=function(t){return!!n(t)&&!i.test(a.call(t))}},{\"../function/is\":316}],323:[function(t,e,r){\"use strict\";var n=t(\"../object/is\");e.exports=function(t){if(!n(t))return!1;try{return!!t.constructor&&t.constructor.prototype===t}catch(t){return!1}}},{\"../object/is\":320}],324:[function(t,e,r){\"use strict\";var n=t(\"../value/is\"),i=t(\"../object/is\"),a=Object.prototype.toString;e.exports=function(t){if(!n(t))return null;if(i(t)){var e=t.toString;if(\"function\"!=typeof e)return null;if(e===a)return null}try{return\"\"+t}catch(t){return null}}},{\"../object/is\":320,\"../value/is\":326}],325:[function(t,e,r){\"use strict\";var n=t(\"../lib/resolve-exception\"),i=t(\"./is\");e.exports=function(t){return i(t)?t:n(t,\"Cannot use %v\",arguments[1])}},{\"../lib/resolve-exception\":317,\"./is\":326}],326:[function(t,e,r){\"use strict\";e.exports=function(t){return null!=t}},{}],327:[function(t,e,r){(function(e){(function(){\"use strict\";var n=t(\"bit-twiddle\"),i=t(\"dup\"),a=t(\"buffer\").Buffer;e.__TYPEDARRAY_POOL||(e.__TYPEDARRAY_POOL={UINT8:i([32,0]),UINT16:i([32,0]),UINT32:i([32,0]),BIGUINT64:i([32,0]),INT8:i([32,0]),INT16:i([32,0]),INT32:i([32,0]),BIGINT64:i([32,0]),FLOAT:i([32,0]),DOUBLE:i([32,0]),DATA:i([32,0]),UINT8C:i([32,0]),BUFFER:i([32,0])});var o=\"undefined\"!=typeof Uint8ClampedArray,s=\"undefined\"!=typeof BigUint64Array,l=\"undefined\"!=typeof BigInt64Array,c=e.__TYPEDARRAY_POOL;c.UINT8C||(c.UINT8C=i([32,0])),c.BIGUINT64||(c.BIGUINT64=i([32,0])),c.BIGINT64||(c.BIGINT64=i([32,0])),c.BUFFER||(c.BUFFER=i([32,0]));var u=c.DATA,f=c.BUFFER;function h(t){if(t){var e=t.length||t.byteLength,r=n.log2(e);u[r].push(t)}}function p(t){t=n.nextPow2(t);var e=n.log2(t),r=u[e];return r.length>0?r.pop():new ArrayBuffer(t)}function d(t){return new Uint8Array(p(t),0,t)}function g(t){return new Uint16Array(p(2*t),0,t)}function m(t){return new Uint32Array(p(4*t),0,t)}function v(t){return new Int8Array(p(t),0,t)}function y(t){return new Int16Array(p(2*t),0,t)}function x(t){return new Int32Array(p(4*t),0,t)}function b(t){return new Float32Array(p(4*t),0,t)}function _(t){return new Float64Array(p(8*t),0,t)}function w(t){return o?new Uint8ClampedArray(p(t),0,t):d(t)}function T(t){return s?new BigUint64Array(p(8*t),0,t):null}function k(t){return l?new BigInt64Array(p(8*t),0,t):null}function A(t){return new DataView(p(t),0,t)}function M(t){t=n.nextPow2(t);var e=n.log2(t),r=f[e];return r.length>0?r.pop():new a(t)}r.free=function(t){if(a.isBuffer(t))f[n.log2(t.length)].push(t);else{if(\"[object ArrayBuffer]\"!==Object.prototype.toString.call(t)&&(t=t.buffer),!t)return;var e=t.length||t.byteLength,r=0|n.log2(e);u[r].push(t)}},r.freeUint8=r.freeUint16=r.freeUint32=r.freeBigUint64=r.freeInt8=r.freeInt16=r.freeInt32=r.freeBigInt64=r.freeFloat32=r.freeFloat=r.freeFloat64=r.freeDouble=r.freeUint8Clamped=r.freeDataView=function(t){h(t.buffer)},r.freeArrayBuffer=h,r.freeBuffer=function(t){f[n.log2(t.length)].push(t)},r.malloc=function(t,e){if(void 0===e||\"arraybuffer\"===e)return p(t);switch(e){case\"uint8\":return d(t);case\"uint16\":return g(t);case\"uint32\":return m(t);case\"int8\":return v(t);case\"int16\":return y(t);case\"int32\":return x(t);case\"float\":case\"float32\":return b(t);case\"double\":case\"float64\":return _(t);case\"uint8_clamped\":return w(t);case\"bigint64\":return k(t);case\"biguint64\":return T(t);case\"buffer\":return M(t);case\"data\":case\"dataview\":return A(t);default:return null}return null},r.mallocArrayBuffer=p,r.mallocUint8=d,r.mallocUint16=g,r.mallocUint32=m,r.mallocInt8=v,r.mallocInt16=y,r.mallocInt32=x,r.mallocFloat32=r.mallocFloat=b,r.mallocFloat64=r.mallocDouble=_,r.mallocUint8Clamped=w,r.mallocBigUint64=T,r.mallocBigInt64=k,r.mallocDataView=A,r.mallocBuffer=M,r.clearCache=function(){for(var t=0;t<32;++t)c.UINT8[t].length=0,c.UINT16[t].length=0,c.UINT32[t].length=0,c.INT8[t].length=0,c.INT16[t].length=0,c.INT32[t].length=0,c.FLOAT[t].length=0,c.DOUBLE[t].length=0,c.BIGUINT64[t].length=0,c.BIGINT64[t].length=0,c.UINT8C[t].length=0,u[t].length=0,f[t].length=0}}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"bit-twiddle\":81,buffer:85,dup:128}],328:[function(t,e,r){var n=/[\\'\\\"]/;e.exports=function(t){return t?(n.test(t.charAt(0))&&(t=t.substr(1)),n.test(t.charAt(t.length-1))&&(t=t.substr(0,t.length-1)),t):\"\"}},{}],329:[function(t,e,r){\"use strict\";e.exports=function(t,e,r){Array.isArray(r)||(r=[].slice.call(arguments,2));for(var n=0,i=r.length;n2111)throw e.replace(/\\{0\\}/,this.local.name);return t},toMonthIndex:function(t,e,r){var i=this.intercalaryMonth(t);if(r&&e!==i||e<1||e>12)throw n.local.invalidMonth.replace(/\\{0\\}/,this.local.name);return i?!r&&e<=i?e-1:e:e-1},toChineseMonth:function(t,e){t.year&&(e=(t=t.year()).month());var r=this.intercalaryMonth(t);if(e<0||e>(r?12:11))throw n.local.invalidMonth.replace(/\\{0\\}/,this.local.name);return r?e>13},isIntercalaryMonth:function(t,e){t.year&&(e=(t=t.year()).month());var r=this.intercalaryMonth(t);return!!r&&r===e},leapYear:function(t){return 0!==this.intercalaryMonth(t)},weekOfYear:function(t,e,r){var i,o=this._validateYear(t,n.local.invalidyear),s=h[o-h[0]],l=s>>9&4095,c=s>>5&15,u=31&s;(i=a.newDate(l,c,u)).add(4-(i.dayOfWeek()||7),\"d\");var f=this.toJD(t,e,r)-i.toJD();return 1+Math.floor(f/7)},monthsInYear:function(t){return this.leapYear(t)?13:12},daysInMonth:function(t,e){t.year&&(e=t.month(),t=t.year()),t=this._validateYear(t);var r=f[t-f[0]];if(e>(r>>13?12:11))throw n.local.invalidMonth.replace(/\\{0\\}/,this.local.name);return r&1<<12-e?30:29},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,s,r,n.local.invalidDate);t=this._validateYear(i.year()),e=i.month(),r=i.day();var o=this.isIntercalaryMonth(t,e),s=this.toChineseMonth(t,e),l=function(t,e,r,n,i){var a,o,s;if(\"object\"==typeof t)o=t,a=e||{};else{var l;if(!(\"number\"==typeof t&&t>=1888&&t<=2111))throw new Error(\"Lunar year outside range 1888-2111\");if(!(\"number\"==typeof e&&e>=1&&e<=12))throw new Error(\"Lunar month outside range 1 - 12\");if(!(\"number\"==typeof r&&r>=1&&r<=30))throw new Error(\"Lunar day outside range 1 - 30\");\"object\"==typeof n?(l=!1,a=n):(l=!!n,a=i||{}),o={year:t,month:e,day:r,isIntercalary:l}}s=o.day-1;var c,u=f[o.year-f[0]],p=u>>13;c=p&&(o.month>p||o.isIntercalary)?o.month:o.month-1;for(var d=0;d>9&4095,(g>>5&15)-1,(31&g)+s);return a.year=m.getFullYear(),a.month=1+m.getMonth(),a.day=m.getDate(),a}(t,s,r,o);return a.toJD(l.year,l.month,l.day)},fromJD:function(t){var e=a.fromJD(t),r=function(t,e,r,n){var i,a;if(\"object\"==typeof t)i=t,a=e||{};else{if(!(\"number\"==typeof t&&t>=1888&&t<=2111))throw new Error(\"Solar year outside range 1888-2111\");if(!(\"number\"==typeof e&&e>=1&&e<=12))throw new Error(\"Solar month outside range 1 - 12\");if(!(\"number\"==typeof r&&r>=1&&r<=31))throw new Error(\"Solar day outside range 1 - 31\");i={year:t,month:e,day:r},a=n||{}}var o=h[i.year-h[0]],s=i.year<<9|i.month<<5|i.day;a.year=s>=o?i.year:i.year-1,o=h[a.year-h[0]];var l,c=new Date(o>>9&4095,(o>>5&15)-1,31&o),u=new Date(i.year,i.month-1,i.day);l=Math.round((u-c)/864e5);var p,d=f[a.year-f[0]];for(p=0;p<13;p++){var g=d&1<<12-p?30:29;if(l>13;!m||p=2&&n<=6},extraInfo:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return{century:o[Math.floor((i.year()-1)/100)+1]||\"\"}},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return t=i.year()+(i.year()<0?1:0),e=i.month(),(r=i.day())+(e>1?16:0)+(e>2?32*(e-2):0)+400*(t-1)+this.jdEpoch-1},fromJD:function(t){t=Math.floor(t+.5)-Math.floor(this.jdEpoch)-1;var e=Math.floor(t/400)+1;t-=400*(e-1),t+=t>15?16:0;var r=Math.floor(t/32)+1,n=t-32*(r-1)+1;return this.newDate(e<=0?e-1:e,r,n)}});var o={20:\"Fruitbat\",21:\"Anchovy\"};n.calendars.discworld=a},{\"../main\":346,\"object-assign\":247}],335:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Ethiopian\",jdEpoch:1724220.5,daysPerMonth:[30,30,30,30,30,30,30,30,30,30,30,30,5],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Ethiopian\",epochs:[\"BEE\",\"EE\"],monthNames:[\"Meskerem\",\"Tikemet\",\"Hidar\",\"Tahesas\",\"Tir\",\"Yekatit\",\"Megabit\",\"Miazia\",\"Genbot\",\"Sene\",\"Hamle\",\"Nehase\",\"Pagume\"],monthNamesShort:[\"Mes\",\"Tik\",\"Hid\",\"Tah\",\"Tir\",\"Yek\",\"Meg\",\"Mia\",\"Gen\",\"Sen\",\"Ham\",\"Neh\",\"Pag\"],dayNames:[\"Ehud\",\"Segno\",\"Maksegno\",\"Irob\",\"Hamus\",\"Arb\",\"Kidame\"],dayNamesShort:[\"Ehu\",\"Seg\",\"Mak\",\"Iro\",\"Ham\",\"Arb\",\"Kid\"],dayNamesMin:[\"Eh\",\"Se\",\"Ma\",\"Ir\",\"Ha\",\"Ar\",\"Ki\"],digits:null,dateFormat:\"dd/mm/yyyy\",firstDay:0,isRTL:!1}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return(t=e.year()+(e.year()<0?1:0))%4==3||t%4==-1},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear||n.regionalOptions[\"\"].invalidYear),13},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(13===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return(t=i.year())<0&&t++,i.day()+30*(i.month()-1)+365*(t-1)+Math.floor(t/4)+this.jdEpoch-1},fromJD:function(t){var e=Math.floor(t)+.5-this.jdEpoch,r=Math.floor((e-Math.floor((e+366)/1461))/365)+1;r<=0&&r--,e=Math.floor(t)+.5-this.newDate(r,1,1).toJD();var n=Math.floor(e/30)+1,i=e-30*(n-1)+1;return this.newDate(r,n,i)}}),n.calendars.ethiopian=a},{\"../main\":346,\"object-assign\":247}],336:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}function o(t,e){return t-e*Math.floor(t/e)}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Hebrew\",jdEpoch:347995.5,daysPerMonth:[30,29,30,29,30,29,30,29,30,29,30,29,29],hasYearZero:!1,minMonth:1,firstMonth:7,minDay:1,regionalOptions:{\"\":{name:\"Hebrew\",epochs:[\"BAM\",\"AM\"],monthNames:[\"Nisan\",\"Iyar\",\"Sivan\",\"Tammuz\",\"Av\",\"Elul\",\"Tishrei\",\"Cheshvan\",\"Kislev\",\"Tevet\",\"Shevat\",\"Adar\",\"Adar II\"],monthNamesShort:[\"Nis\",\"Iya\",\"Siv\",\"Tam\",\"Av\",\"Elu\",\"Tis\",\"Che\",\"Kis\",\"Tev\",\"She\",\"Ada\",\"Ad2\"],dayNames:[\"Yom Rishon\",\"Yom Sheni\",\"Yom Shlishi\",\"Yom Revi'i\",\"Yom Chamishi\",\"Yom Shishi\",\"Yom Shabbat\"],dayNamesShort:[\"Ris\",\"She\",\"Shl\",\"Rev\",\"Cha\",\"Shi\",\"Sha\"],dayNamesMin:[\"Ri\",\"She\",\"Shl\",\"Re\",\"Ch\",\"Shi\",\"Sha\"],digits:null,dateFormat:\"dd/mm/yyyy\",firstDay:0,isRTL:!1}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return this._leapYear(e.year())},_leapYear:function(t){return o(7*(t=t<0?t+1:t)+1,19)<7},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear),this._leapYear(t.year?t.year():t)?13:12},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(t){return t=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear).year(),this.toJD(-1===t?1:t+1,7,1)-this.toJD(t,7,1)},daysInMonth:function(t,e){return t.year&&(e=t.month(),t=t.year()),this._validate(t,e,this.minDay,n.local.invalidMonth),12===e&&this.leapYear(t)||8===e&&5===o(this.daysInYear(t),10)?30:9===e&&3===o(this.daysInYear(t),10)?29:this.daysPerMonth[e-1]},weekDay:function(t,e,r){return 6!==this.dayOfWeek(t,e,r)},extraInfo:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return{yearType:(this.leapYear(i)?\"embolismic\":\"common\")+\" \"+[\"deficient\",\"regular\",\"complete\"][this.daysInYear(i)%10-3]}},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=i.year(),e=i.month(),r=i.day();var a=t<=0?t+1:t,o=this.jdEpoch+this._delay1(a)+this._delay2(a)+r+1;if(e<7){for(var s=7;s<=this.monthsInYear(t);s++)o+=this.daysInMonth(t,s);for(s=1;s=this.toJD(-1===e?1:e+1,7,1);)e++;for(var r=tthis.toJD(e,r,this.daysInMonth(e,r));)r++;var n=t-this.toJD(e,r,1)+1;return this.newDate(e,r,n)}}),n.calendars.hebrew=a},{\"../main\":346,\"object-assign\":247}],337:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Islamic\",jdEpoch:1948439.5,daysPerMonth:[30,29,30,29,30,29,30,29,30,29,30,29],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Islamic\",epochs:[\"BH\",\"AH\"],monthNames:[\"Muharram\",\"Safar\",\"Rabi' al-awwal\",\"Rabi' al-thani\",\"Jumada al-awwal\",\"Jumada al-thani\",\"Rajab\",\"Sha'aban\",\"Ramadan\",\"Shawwal\",\"Dhu al-Qi'dah\",\"Dhu al-Hijjah\"],monthNamesShort:[\"Muh\",\"Saf\",\"Rab1\",\"Rab2\",\"Jum1\",\"Jum2\",\"Raj\",\"Sha'\",\"Ram\",\"Shaw\",\"DhuQ\",\"DhuH\"],dayNames:[\"Yawm al-ahad\",\"Yawm al-ithnayn\",\"Yawm ath-thulaathaa'\",\"Yawm al-arbi'aa'\",\"Yawm al-kham\\u012bs\",\"Yawm al-jum'a\",\"Yawm as-sabt\"],dayNamesShort:[\"Aha\",\"Ith\",\"Thu\",\"Arb\",\"Kha\",\"Jum\",\"Sab\"],dayNamesMin:[\"Ah\",\"It\",\"Th\",\"Ar\",\"Kh\",\"Ju\",\"Sa\"],digits:null,dateFormat:\"yyyy/mm/dd\",firstDay:6,isRTL:!1}},leapYear:function(t){return(11*this._validate(t,this.minMonth,this.minDay,n.local.invalidYear).year()+14)%30<11},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(t){return this.leapYear(t)?355:354},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(12===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return 5!==this.dayOfWeek(t,e,r)},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return t=i.year(),e=i.month(),t=t<=0?t+1:t,(r=i.day())+Math.ceil(29.5*(e-1))+354*(t-1)+Math.floor((3+11*t)/30)+this.jdEpoch-1},fromJD:function(t){t=Math.floor(t)+.5;var e=Math.floor((30*(t-this.jdEpoch)+10646)/10631);e=e<=0?e-1:e;var r=Math.min(12,Math.ceil((t-29-this.toJD(e,1,1))/29.5)+1),n=t-this.toJD(e,r,1)+1;return this.newDate(e,r,n)}}),n.calendars.islamic=a},{\"../main\":346,\"object-assign\":247}],338:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Julian\",jdEpoch:1721423.5,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Julian\",epochs:[\"BC\",\"AD\"],monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],dayNamesShort:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],dayNamesMin:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],digits:null,dateFormat:\"mm/dd/yyyy\",firstDay:0,isRTL:!1}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return(t=e.year()<0?e.year()+1:e.year())%4==0},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(4-(n.dayOfWeek()||7),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(2===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return t=i.year(),e=i.month(),r=i.day(),t<0&&t++,e<=2&&(t--,e+=12),Math.floor(365.25*(t+4716))+Math.floor(30.6001*(e+1))+r-1524.5},fromJD:function(t){var e=Math.floor(t+.5)+1524,r=Math.floor((e-122.1)/365.25),n=Math.floor(365.25*r),i=Math.floor((e-n)/30.6001),a=i-Math.floor(i<14?1:13),o=r-Math.floor(a>2?4716:4715),s=e-n-Math.floor(30.6001*i);return o<=0&&o--,this.newDate(o,a,s)}}),n.calendars.julian=a},{\"../main\":346,\"object-assign\":247}],339:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}function o(t,e){return t-e*Math.floor(t/e)}function s(t,e){return o(t-1,e)+1}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Mayan\",jdEpoch:584282.5,hasYearZero:!0,minMonth:0,firstMonth:0,minDay:0,regionalOptions:{\"\":{name:\"Mayan\",epochs:[\"\",\"\"],monthNames:[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\"],monthNamesShort:[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\"],dayNames:[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\"],dayNamesShort:[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\"],dayNamesMin:[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\"],digits:null,dateFormat:\"YYYY.m.d\",firstDay:0,isRTL:!1,haabMonths:[\"Pop\",\"Uo\",\"Zip\",\"Zotz\",\"Tzec\",\"Xul\",\"Yaxkin\",\"Mol\",\"Chen\",\"Yax\",\"Zac\",\"Ceh\",\"Mac\",\"Kankin\",\"Muan\",\"Pax\",\"Kayab\",\"Cumku\",\"Uayeb\"],tzolkinMonths:[\"Imix\",\"Ik\",\"Akbal\",\"Kan\",\"Chicchan\",\"Cimi\",\"Manik\",\"Lamat\",\"Muluc\",\"Oc\",\"Chuen\",\"Eb\",\"Ben\",\"Ix\",\"Men\",\"Cib\",\"Caban\",\"Etznab\",\"Cauac\",\"Ahau\"]}},leapYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear),!1},formatYear:function(t){t=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear).year();var e=Math.floor(t/400);return t%=400,t+=t<0?400:0,e+\".\"+Math.floor(t/20)+\".\"+t%20},forYear:function(t){if((t=t.split(\".\")).length<3)throw\"Invalid Mayan year\";for(var e=0,r=0;r19||r>0&&n<0)throw\"Invalid Mayan year\";e=20*e+n}return e},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear),18},weekOfYear:function(t,e,r){return this._validate(t,e,r,n.local.invalidDate),0},daysInYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear),360},daysInMonth:function(t,e){return this._validate(t,e,this.minDay,n.local.invalidMonth),20},daysInWeek:function(){return 5},dayOfWeek:function(t,e,r){return this._validate(t,e,r,n.local.invalidDate).day()},weekDay:function(t,e,r){return this._validate(t,e,r,n.local.invalidDate),!0},extraInfo:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate).toJD(),a=this._toHaab(i),o=this._toTzolkin(i);return{haabMonthName:this.local.haabMonths[a[0]-1],haabMonth:a[0],haabDay:a[1],tzolkinDayName:this.local.tzolkinMonths[o[0]-1],tzolkinDay:o[0],tzolkinTrecena:o[1]}},_toHaab:function(t){var e=o((t-=this.jdEpoch)+8+340,365);return[Math.floor(e/20)+1,o(e,20)]},_toTzolkin:function(t){return[s((t-=this.jdEpoch)+20,20),s(t+4,13)]},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return i.day()+20*i.month()+360*i.year()+this.jdEpoch},fromJD:function(t){t=Math.floor(t)+.5-this.jdEpoch;var e=Math.floor(t/360);t%=360,t+=t<0?360:0;var r=Math.floor(t/20),n=t%20;return this.newDate(e,r,n)}}),n.calendars.mayan=a},{\"../main\":346,\"object-assign\":247}],340:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar;var o=n.instance(\"gregorian\");i(a.prototype,{name:\"Nanakshahi\",jdEpoch:2257673.5,daysPerMonth:[31,31,31,31,31,30,30,30,30,30,30,30],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Nanakshahi\",epochs:[\"BN\",\"AN\"],monthNames:[\"Chet\",\"Vaisakh\",\"Jeth\",\"Harh\",\"Sawan\",\"Bhadon\",\"Assu\",\"Katak\",\"Maghar\",\"Poh\",\"Magh\",\"Phagun\"],monthNamesShort:[\"Che\",\"Vai\",\"Jet\",\"Har\",\"Saw\",\"Bha\",\"Ass\",\"Kat\",\"Mgr\",\"Poh\",\"Mgh\",\"Pha\"],dayNames:[\"Somvaar\",\"Mangalvar\",\"Budhvaar\",\"Veervaar\",\"Shukarvaar\",\"Sanicharvaar\",\"Etvaar\"],dayNamesShort:[\"Som\",\"Mangal\",\"Budh\",\"Veer\",\"Shukar\",\"Sanichar\",\"Et\"],dayNamesMin:[\"So\",\"Ma\",\"Bu\",\"Ve\",\"Sh\",\"Sa\",\"Et\"],digits:null,dateFormat:\"dd-mm-yyyy\",firstDay:0,isRTL:!1}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear||n.regionalOptions[\"\"].invalidYear);return o.leapYear(e.year()+(e.year()<1?1:0)+1469)},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(1-(n.dayOfWeek()||7),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(12===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidMonth);(t=i.year())<0&&t++;for(var a=i.day(),s=1;s=this.toJD(e+1,1,1);)e++;for(var r=t-Math.floor(this.toJD(e,1,1)+.5)+1,n=1;r>this.daysInMonth(e,n);)r-=this.daysInMonth(e,n),n++;return this.newDate(e,n,r)}}),n.calendars.nanakshahi=a},{\"../main\":346,\"object-assign\":247}],341:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Nepali\",jdEpoch:1700709.5,daysPerMonth:[31,31,32,32,31,30,30,29,30,29,30,30],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,daysPerYear:365,regionalOptions:{\"\":{name:\"Nepali\",epochs:[\"BBS\",\"ABS\"],monthNames:[\"Baisakh\",\"Jestha\",\"Ashadh\",\"Shrawan\",\"Bhadra\",\"Ashwin\",\"Kartik\",\"Mangsir\",\"Paush\",\"Mangh\",\"Falgun\",\"Chaitra\"],monthNamesShort:[\"Bai\",\"Je\",\"As\",\"Shra\",\"Bha\",\"Ash\",\"Kar\",\"Mang\",\"Pau\",\"Ma\",\"Fal\",\"Chai\"],dayNames:[\"Aaitabaar\",\"Sombaar\",\"Manglbaar\",\"Budhabaar\",\"Bihibaar\",\"Shukrabaar\",\"Shanibaar\"],dayNamesShort:[\"Aaita\",\"Som\",\"Mangl\",\"Budha\",\"Bihi\",\"Shukra\",\"Shani\"],dayNamesMin:[\"Aai\",\"So\",\"Man\",\"Bu\",\"Bi\",\"Shu\",\"Sha\"],digits:null,dateFormat:\"dd/mm/yyyy\",firstDay:1,isRTL:!1}},leapYear:function(t){return this.daysInYear(t)!==this.daysPerYear},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(t){if(t=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear).year(),void 0===this.NEPALI_CALENDAR_DATA[t])return this.daysPerYear;for(var e=0,r=this.minMonth;r<=12;r++)e+=this.NEPALI_CALENDAR_DATA[t][r];return e},daysInMonth:function(t,e){return t.year&&(e=t.month(),t=t.year()),this._validate(t,e,this.minDay,n.local.invalidMonth),void 0===this.NEPALI_CALENDAR_DATA[t]?this.daysPerMonth[e-1]:this.NEPALI_CALENDAR_DATA[t][e]},weekDay:function(t,e,r){return 6!==this.dayOfWeek(t,e,r)},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=i.year(),e=i.month(),r=i.day();var a=n.instance(),o=0,s=e,l=t;this._createMissingCalendarData(t);var c=t-(s>9||9===s&&r>=this.NEPALI_CALENDAR_DATA[l][0]?56:57);for(9!==e&&(o=r,s--);9!==s;)s<=0&&(s=12,l--),o+=this.NEPALI_CALENDAR_DATA[l][s],s--;return 9===e?(o+=r-this.NEPALI_CALENDAR_DATA[l][0])<0&&(o+=a.daysInYear(c)):o+=this.NEPALI_CALENDAR_DATA[l][9]-this.NEPALI_CALENDAR_DATA[l][0],a.newDate(c,1,1).add(o,\"d\").toJD()},fromJD:function(t){var e=n.instance().fromJD(t),r=e.year(),i=e.dayOfYear(),a=r+56;this._createMissingCalendarData(a);for(var o=9,s=this.NEPALI_CALENDAR_DATA[a][0],l=this.NEPALI_CALENDAR_DATA[a][o]-s+1;i>l;)++o>12&&(o=1,a++),l+=this.NEPALI_CALENDAR_DATA[a][o];var c=this.NEPALI_CALENDAR_DATA[a][o]-(l-i);return this.newDate(a,o,c)},_createMissingCalendarData:function(t){var e=this.daysPerMonth.slice(0);e.unshift(17);for(var r=t-1;r0?474:473))%2820+474+38)%2816<682},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-(n.dayOfWeek()+1)%7,\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(12===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return 5!==this.dayOfWeek(t,e,r)},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=i.year(),e=i.month(),r=i.day();var a=t-(t>=0?474:473),s=474+o(a,2820);return r+(e<=7?31*(e-1):30*(e-1)+6)+Math.floor((682*s-110)/2816)+365*(s-1)+1029983*Math.floor(a/2820)+this.jdEpoch-1},fromJD:function(t){var e=(t=Math.floor(t)+.5)-this.toJD(475,1,1),r=Math.floor(e/1029983),n=o(e,1029983),i=2820;if(1029982!==n){var a=Math.floor(n/366),s=o(n,366);i=Math.floor((2134*a+2816*s+2815)/1028522)+a+1}var l=i+2820*r+474;l=l<=0?l-1:l;var c=t-this.toJD(l,1,1)+1,u=c<=186?Math.ceil(c/31):Math.ceil((c-6)/30),f=t-this.toJD(l,u,1)+1;return this.newDate(l,u,f)}}),n.calendars.persian=a,n.calendars.jalali=a},{\"../main\":346,\"object-assign\":247}],343:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\"),a=n.instance();function o(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}o.prototype=new n.baseCalendar,i(o.prototype,{name:\"Taiwan\",jdEpoch:2419402.5,yearsOffset:1911,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Taiwan\",epochs:[\"BROC\",\"ROC\"],monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],dayNamesShort:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],dayNamesMin:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],digits:null,dateFormat:\"yyyy/mm/dd\",firstDay:1,isRTL:!1}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);t=this._t2gYear(e.year());return a.leapYear(t)},weekOfYear:function(t,e,r){var i=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);t=this._t2gYear(i.year());return a.weekOfYear(t,i.month(),i.day())},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(2===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=this._t2gYear(i.year());return a.toJD(t,i.month(),i.day())},fromJD:function(t){var e=a.fromJD(t),r=this._g2tYear(e.year());return this.newDate(r,e.month(),e.day())},_t2gYear:function(t){return t+this.yearsOffset+(t>=-this.yearsOffset&&t<=-1?1:0)},_g2tYear:function(t){return t-this.yearsOffset-(t>=1&&t<=this.yearsOffset?1:0)}}),n.calendars.taiwan=o},{\"../main\":346,\"object-assign\":247}],344:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\"),a=n.instance();function o(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}o.prototype=new n.baseCalendar,i(o.prototype,{name:\"Thai\",jdEpoch:1523098.5,yearsOffset:543,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Thai\",epochs:[\"BBE\",\"BE\"],monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],dayNamesShort:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],dayNamesMin:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],digits:null,dateFormat:\"dd/mm/yyyy\",firstDay:0,isRTL:!1}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);t=this._t2gYear(e.year());return a.leapYear(t)},weekOfYear:function(t,e,r){var i=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);t=this._t2gYear(i.year());return a.weekOfYear(t,i.month(),i.day())},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(2===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=this._t2gYear(i.year());return a.toJD(t,i.month(),i.day())},fromJD:function(t){var e=a.fromJD(t),r=this._g2tYear(e.year());return this.newDate(r,e.month(),e.day())},_t2gYear:function(t){return t-this.yearsOffset-(t>=1&&t<=this.yearsOffset?1:0)},_g2tYear:function(t){return t+this.yearsOffset+(t>=-this.yearsOffset&&t<=-1?1:0)}}),n.calendars.thai=o},{\"../main\":346,\"object-assign\":247}],345:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"UmmAlQura\",hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Umm al-Qura\",epochs:[\"BH\",\"AH\"],monthNames:[\"Al-Muharram\",\"Safar\",\"Rabi' al-awwal\",\"Rabi' Al-Thani\",\"Jumada Al-Awwal\",\"Jumada Al-Thani\",\"Rajab\",\"Sha'aban\",\"Ramadan\",\"Shawwal\",\"Dhu al-Qi'dah\",\"Dhu al-Hijjah\"],monthNamesShort:[\"Muh\",\"Saf\",\"Rab1\",\"Rab2\",\"Jum1\",\"Jum2\",\"Raj\",\"Sha'\",\"Ram\",\"Shaw\",\"DhuQ\",\"DhuH\"],dayNames:[\"Yawm al-Ahad\",\"Yawm al-Ithnain\",\"Yawm al-Thal\\u0101th\\u0101\\u2019\",\"Yawm al-Arba\\u2018\\u0101\\u2019\",\"Yawm al-Kham\\u012bs\",\"Yawm al-Jum\\u2018a\",\"Yawm al-Sabt\"],dayNamesMin:[\"Ah\",\"Ith\",\"Th\",\"Ar\",\"Kh\",\"Ju\",\"Sa\"],digits:null,dateFormat:\"yyyy/mm/dd\",firstDay:6,isRTL:!0}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return 355===this.daysInYear(e.year())},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(t){for(var e=0,r=1;r<=12;r++)e+=this.daysInMonth(t,r);return e},daysInMonth:function(t,e){for(var r=this._validate(t,e,this.minDay,n.local.invalidMonth).toJD()-24e5+.5,i=0,a=0;ar)return o[i]-o[i-1];i++}return 30},weekDay:function(t,e,r){return 5!==this.dayOfWeek(t,e,r)},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate),a=12*(i.year()-1)+i.month()-15292;return i.day()+o[a-1]-1+24e5-.5},fromJD:function(t){for(var e=t-24e5+.5,r=0,n=0;ne);n++)r++;var i=r+15292,a=Math.floor((i-1)/12),s=a+1,l=i-12*a,c=e-o[r-1]+1;return this.newDate(s,l,c)},isValid:function(t,e,r){var i=n.baseCalendar.prototype.isValid.apply(this,arguments);return i&&(i=(t=null!=t.year?t.year:t)>=1276&&t<=1500),i},_validate:function(t,e,r,i){var a=n.baseCalendar.prototype._validate.apply(this,arguments);if(a.year<1276||a.year>1500)throw i.replace(/\\{0\\}/,this.local.name);return a}}),n.calendars.ummalqura=a;var o=[20,50,79,109,138,168,197,227,256,286,315,345,374,404,433,463,492,522,551,581,611,641,670,700,729,759,788,818,847,877,906,936,965,995,1024,1054,1083,1113,1142,1172,1201,1231,1260,1290,1320,1350,1379,1409,1438,1468,1497,1527,1556,1586,1615,1645,1674,1704,1733,1763,1792,1822,1851,1881,1910,1940,1969,1999,2028,2058,2087,2117,2146,2176,2205,2235,2264,2294,2323,2353,2383,2413,2442,2472,2501,2531,2560,2590,2619,2649,2678,2708,2737,2767,2796,2826,2855,2885,2914,2944,2973,3003,3032,3062,3091,3121,3150,3180,3209,3239,3268,3298,3327,3357,3386,3416,3446,3476,3505,3535,3564,3594,3623,3653,3682,3712,3741,3771,3800,3830,3859,3889,3918,3948,3977,4007,4036,4066,4095,4125,4155,4185,4214,4244,4273,4303,4332,4362,4391,4421,4450,4480,4509,4539,4568,4598,4627,4657,4686,4716,4745,4775,4804,4834,4863,4893,4922,4952,4981,5011,5040,5070,5099,5129,5158,5188,5218,5248,5277,5307,5336,5366,5395,5425,5454,5484,5513,5543,5572,5602,5631,5661,5690,5720,5749,5779,5808,5838,5867,5897,5926,5956,5985,6015,6044,6074,6103,6133,6162,6192,6221,6251,6281,6311,6340,6370,6399,6429,6458,6488,6517,6547,6576,6606,6635,6665,6694,6724,6753,6783,6812,6842,6871,6901,6930,6960,6989,7019,7048,7078,7107,7137,7166,7196,7225,7255,7284,7314,7344,7374,7403,7433,7462,7492,7521,7551,7580,7610,7639,7669,7698,7728,7757,7787,7816,7846,7875,7905,7934,7964,7993,8023,8053,8083,8112,8142,8171,8201,8230,8260,8289,8319,8348,8378,8407,8437,8466,8496,8525,8555,8584,8614,8643,8673,8702,8732,8761,8791,8821,8850,8880,8909,8938,8968,8997,9027,9056,9086,9115,9145,9175,9205,9234,9264,9293,9322,9352,9381,9410,9440,9470,9499,9529,9559,9589,9618,9648,9677,9706,9736,9765,9794,9824,9853,9883,9913,9943,9972,10002,10032,10061,10090,10120,10149,10178,10208,10237,10267,10297,10326,10356,10386,10415,10445,10474,10504,10533,10562,10592,10621,10651,10680,10710,10740,10770,10799,10829,10858,10888,10917,10947,10976,11005,11035,11064,11094,11124,11153,11183,11213,11242,11272,11301,11331,11360,11389,11419,11448,11478,11507,11537,11567,11596,11626,11655,11685,11715,11744,11774,11803,11832,11862,11891,11921,11950,11980,12010,12039,12069,12099,12128,12158,12187,12216,12246,12275,12304,12334,12364,12393,12423,12453,12483,12512,12542,12571,12600,12630,12659,12688,12718,12747,12777,12807,12837,12866,12896,12926,12955,12984,13014,13043,13072,13102,13131,13161,13191,13220,13250,13280,13310,13339,13368,13398,13427,13456,13486,13515,13545,13574,13604,13634,13664,13693,13723,13752,13782,13811,13840,13870,13899,13929,13958,13988,14018,14047,14077,14107,14136,14166,14195,14224,14254,14283,14313,14342,14372,14401,14431,14461,14490,14520,14550,14579,14609,14638,14667,14697,14726,14756,14785,14815,14844,14874,14904,14933,14963,14993,15021,15051,15081,15110,15140,15169,15199,15228,15258,15287,15317,15347,15377,15406,15436,15465,15494,15524,15553,15582,15612,15641,15671,15701,15731,15760,15790,15820,15849,15878,15908,15937,15966,15996,16025,16055,16085,16114,16144,16174,16204,16233,16262,16292,16321,16350,16380,16409,16439,16468,16498,16528,16558,16587,16617,16646,16676,16705,16734,16764,16793,16823,16852,16882,16912,16941,16971,17001,17030,17060,17089,17118,17148,17177,17207,17236,17266,17295,17325,17355,17384,17414,17444,17473,17502,17532,17561,17591,17620,17650,17679,17709,17738,17768,17798,17827,17857,17886,17916,17945,17975,18004,18034,18063,18093,18122,18152,18181,18211,18241,18270,18300,18330,18359,18388,18418,18447,18476,18506,18535,18565,18595,18625,18654,18684,18714,18743,18772,18802,18831,18860,18890,18919,18949,18979,19008,19038,19068,19098,19127,19156,19186,19215,19244,19274,19303,19333,19362,19392,19422,19452,19481,19511,19540,19570,19599,19628,19658,19687,19717,19746,19776,19806,19836,19865,19895,19924,19954,19983,20012,20042,20071,20101,20130,20160,20190,20219,20249,20279,20308,20338,20367,20396,20426,20455,20485,20514,20544,20573,20603,20633,20662,20692,20721,20751,20780,20810,20839,20869,20898,20928,20957,20987,21016,21046,21076,21105,21135,21164,21194,21223,21253,21282,21312,21341,21371,21400,21430,21459,21489,21519,21548,21578,21607,21637,21666,21696,21725,21754,21784,21813,21843,21873,21902,21932,21962,21991,22021,22050,22080,22109,22138,22168,22197,22227,22256,22286,22316,22346,22375,22405,22434,22464,22493,22522,22552,22581,22611,22640,22670,22700,22730,22759,22789,22818,22848,22877,22906,22936,22965,22994,23024,23054,23083,23113,23143,23173,23202,23232,23261,23290,23320,23349,23379,23408,23438,23467,23497,23527,23556,23586,23616,23645,23674,23704,23733,23763,23792,23822,23851,23881,23910,23940,23970,23999,24029,24058,24088,24117,24147,24176,24206,24235,24265,24294,24324,24353,24383,24413,24442,24472,24501,24531,24560,24590,24619,24648,24678,24707,24737,24767,24796,24826,24856,24885,24915,24944,24974,25003,25032,25062,25091,25121,25150,25180,25210,25240,25269,25299,25328,25358,25387,25416,25446,25475,25505,25534,25564,25594,25624,25653,25683,25712,25742,25771,25800,25830,25859,25888,25918,25948,25977,26007,26037,26067,26096,26126,26155,26184,26214,26243,26272,26302,26332,26361,26391,26421,26451,26480,26510,26539,26568,26598,26627,26656,26686,26715,26745,26775,26805,26834,26864,26893,26923,26952,26982,27011,27041,27070,27099,27129,27159,27188,27218,27248,27277,27307,27336,27366,27395,27425,27454,27484,27513,27542,27572,27602,27631,27661,27691,27720,27750,27779,27809,27838,27868,27897,27926,27956,27985,28015,28045,28074,28104,28134,28163,28193,28222,28252,28281,28310,28340,28369,28399,28428,28458,28488,28517,28547,28577,28607,28636,28665,28695,28724,28754,28783,28813,28843,28872,28901,28931,28960,28990,29019,29049,29078,29108,29137,29167,29196,29226,29255,29285,29315,29345,29375,29404,29434,29463,29492,29522,29551,29580,29610,29640,29669,29699,29729,29759,29788,29818,29847,29876,29906,29935,29964,29994,30023,30053,30082,30112,30141,30171,30200,30230,30259,30289,30318,30348,30378,30408,30437,30467,30496,30526,30555,30585,30614,30644,30673,30703,30732,30762,30791,30821,30850,30880,30909,30939,30968,30998,31027,31057,31086,31116,31145,31175,31204,31234,31263,31293,31322,31352,31381,31411,31441,31471,31500,31530,31559,31589,31618,31648,31676,31706,31736,31766,31795,31825,31854,31884,31913,31943,31972,32002,32031,32061,32090,32120,32150,32180,32209,32239,32268,32298,32327,32357,32386,32416,32445,32475,32504,32534,32563,32593,32622,32652,32681,32711,32740,32770,32799,32829,32858,32888,32917,32947,32976,33006,33035,33065,33094,33124,33153,33183,33213,33243,33272,33302,33331,33361,33390,33420,33450,33479,33509,33539,33568,33598,33627,33657,33686,33716,33745,33775,33804,33834,33863,33893,33922,33952,33981,34011,34040,34069,34099,34128,34158,34187,34217,34247,34277,34306,34336,34365,34395,34424,34454,34483,34512,34542,34571,34601,34631,34660,34690,34719,34749,34778,34808,34837,34867,34896,34926,34955,34985,35015,35044,35074,35103,35133,35162,35192,35222,35251,35280,35310,35340,35370,35399,35429,35458,35488,35517,35547,35576,35605,35635,35665,35694,35723,35753,35782,35811,35841,35871,35901,35930,35960,35989,36019,36048,36078,36107,36136,36166,36195,36225,36254,36284,36314,36343,36373,36403,36433,36462,36492,36521,36551,36580,36610,36639,36669,36698,36728,36757,36786,36816,36845,36875,36904,36934,36963,36993,37022,37052,37081,37111,37141,37170,37200,37229,37259,37288,37318,37347,37377,37406,37436,37465,37495,37524,37554,37584,37613,37643,37672,37701,37731,37760,37790,37819,37849,37878,37908,37938,37967,37997,38027,38056,38085,38115,38144,38174,38203,38233,38262,38292,38322,38351,38381,38410,38440,38469,38499,38528,38558,38587,38617,38646,38676,38705,38735,38764,38794,38823,38853,38882,38912,38941,38971,39001,39030,39059,39089,39118,39148,39178,39208,39237,39267,39297,39326,39355,39385,39414,39444,39473,39503,39532,39562,39592,39621,39650,39680,39709,39739,39768,39798,39827,39857,39886,39916,39946,39975,40005,40035,40064,40094,40123,40153,40182,40212,40241,40271,40300,40330,40359,40389,40418,40448,40477,40507,40536,40566,40595,40625,40655,40685,40714,40744,40773,40803,40832,40862,40892,40921,40951,40980,41009,41039,41068,41098,41127,41157,41186,41216,41245,41275,41304,41334,41364,41393,41422,41452,41481,41511,41540,41570,41599,41629,41658,41688,41718,41748,41777,41807,41836,41865,41894,41924,41953,41983,42012,42042,42072,42102,42131,42161,42190,42220,42249,42279,42308,42337,42367,42397,42426,42456,42485,42515,42545,42574,42604,42633,42662,42692,42721,42751,42780,42810,42839,42869,42899,42929,42958,42988,43017,43046,43076,43105,43135,43164,43194,43223,43253,43283,43312,43342,43371,43401,43430,43460,43489,43519,43548,43578,43607,43637,43666,43696,43726,43755,43785,43814,43844,43873,43903,43932,43962,43991,44021,44050,44080,44109,44139,44169,44198,44228,44258,44287,44317,44346,44375,44405,44434,44464,44493,44523,44553,44582,44612,44641,44671,44700,44730,44759,44788,44818,44847,44877,44906,44936,44966,44996,45025,45055,45084,45114,45143,45172,45202,45231,45261,45290,45320,45350,45380,45409,45439,45468,45498,45527,45556,45586,45615,45644,45674,45704,45733,45763,45793,45823,45852,45882,45911,45940,45970,45999,46028,46058,46088,46117,46147,46177,46206,46236,46265,46295,46324,46354,46383,46413,46442,46472,46501,46531,46560,46590,46620,46649,46679,46708,46738,46767,46797,46826,46856,46885,46915,46944,46974,47003,47033,47063,47092,47122,47151,47181,47210,47240,47269,47298,47328,47357,47387,47417,47446,47476,47506,47535,47565,47594,47624,47653,47682,47712,47741,47771,47800,47830,47860,47890,47919,47949,47978,48008,48037,48066,48096,48125,48155,48184,48214,48244,48273,48303,48333,48362,48392,48421,48450,48480,48509,48538,48568,48598,48627,48657,48687,48717,48746,48776,48805,48834,48864,48893,48922,48952,48982,49011,49041,49071,49100,49130,49160,49189,49218,49248,49277,49306,49336,49365,49395,49425,49455,49484,49514,49543,49573,49602,49632,49661,49690,49720,49749,49779,49809,49838,49868,49898,49927,49957,49986,50016,50045,50075,50104,50133,50163,50192,50222,50252,50281,50311,50340,50370,50400,50429,50459,50488,50518,50547,50576,50606,50635,50665,50694,50724,50754,50784,50813,50843,50872,50902,50931,50960,50990,51019,51049,51078,51108,51138,51167,51197,51227,51256,51286,51315,51345,51374,51403,51433,51462,51492,51522,51552,51582,51611,51641,51670,51699,51729,51758,51787,51816,51846,51876,51906,51936,51965,51995,52025,52054,52083,52113,52142,52171,52200,52230,52260,52290,52319,52349,52379,52408,52438,52467,52497,52526,52555,52585,52614,52644,52673,52703,52733,52762,52792,52822,52851,52881,52910,52939,52969,52998,53028,53057,53087,53116,53146,53176,53205,53235,53264,53294,53324,53353,53383,53412,53441,53471,53500,53530,53559,53589,53619,53648,53678,53708,53737,53767,53796,53825,53855,53884,53913,53943,53973,54003,54032,54062,54092,54121,54151,54180,54209,54239,54268,54297,54327,54357,54387,54416,54446,54476,54505,54535,54564,54593,54623,54652,54681,54711,54741,54770,54800,54830,54859,54889,54919,54948,54977,55007,55036,55066,55095,55125,55154,55184,55213,55243,55273,55302,55332,55361,55391,55420,55450,55479,55508,55538,55567,55597,55627,55657,55686,55716,55745,55775,55804,55834,55863,55892,55922,55951,55981,56011,56040,56070,56100,56129,56159,56188,56218,56247,56276,56306,56335,56365,56394,56424,56454,56483,56513,56543,56572,56601,56631,56660,56690,56719,56749,56778,56808,56837,56867,56897,56926,56956,56985,57015,57044,57074,57103,57133,57162,57192,57221,57251,57280,57310,57340,57369,57399,57429,57458,57487,57517,57546,57576,57605,57634,57664,57694,57723,57753,57783,57813,57842,57871,57901,57930,57959,57989,58018,58048,58077,58107,58137,58167,58196,58226,58255,58285,58314,58343,58373,58402,58432,58461,58491,58521,58551,58580,58610,58639,58669,58698,58727,58757,58786,58816,58845,58875,58905,58934,58964,58994,59023,59053,59082,59111,59141,59170,59200,59229,59259,59288,59318,59348,59377,59407,59436,59466,59495,59525,59554,59584,59613,59643,59672,59702,59731,59761,59791,59820,59850,59879,59909,59939,59968,59997,60027,60056,60086,60115,60145,60174,60204,60234,60264,60293,60323,60352,60381,60411,60440,60469,60499,60528,60558,60588,60618,60648,60677,60707,60736,60765,60795,60824,60853,60883,60912,60942,60972,61002,61031,61061,61090,61120,61149,61179,61208,61237,61267,61296,61326,61356,61385,61415,61445,61474,61504,61533,61563,61592,61621,61651,61680,61710,61739,61769,61799,61828,61858,61888,61917,61947,61976,62006,62035,62064,62094,62123,62153,62182,62212,62242,62271,62301,62331,62360,62390,62419,62448,62478,62507,62537,62566,62596,62625,62655,62685,62715,62744,62774,62803,62832,62862,62891,62921,62950,62980,63009,63039,63069,63099,63128,63157,63187,63216,63246,63275,63305,63334,63363,63393,63423,63453,63482,63512,63541,63571,63600,63630,63659,63689,63718,63747,63777,63807,63836,63866,63895,63925,63955,63984,64014,64043,64073,64102,64131,64161,64190,64220,64249,64279,64309,64339,64368,64398,64427,64457,64486,64515,64545,64574,64603,64633,64663,64692,64722,64752,64782,64811,64841,64870,64899,64929,64958,64987,65017,65047,65076,65106,65136,65166,65195,65225,65254,65283,65313,65342,65371,65401,65431,65460,65490,65520,65549,65579,65608,65638,65667,65697,65726,65755,65785,65815,65844,65874,65903,65933,65963,65992,66022,66051,66081,66110,66140,66169,66199,66228,66258,66287,66317,66346,66376,66405,66435,66465,66494,66524,66553,66583,66612,66641,66671,66700,66730,66760,66789,66819,66849,66878,66908,66937,66967,66996,67025,67055,67084,67114,67143,67173,67203,67233,67262,67292,67321,67351,67380,67409,67439,67468,67497,67527,67557,67587,67617,67646,67676,67705,67735,67764,67793,67823,67852,67882,67911,67941,67971,68e3,68030,68060,68089,68119,68148,68177,68207,68236,68266,68295,68325,68354,68384,68414,68443,68473,68502,68532,68561,68591,68620,68650,68679,68708,68738,68768,68797,68827,68857,68886,68916,68946,68975,69004,69034,69063,69092,69122,69152,69181,69211,69240,69270,69300,69330,69359,69388,69418,69447,69476,69506,69535,69565,69595,69624,69654,69684,69713,69743,69772,69802,69831,69861,69890,69919,69949,69978,70008,70038,70067,70097,70126,70156,70186,70215,70245,70274,70303,70333,70362,70392,70421,70451,70481,70510,70540,70570,70599,70629,70658,70687,70717,70746,70776,70805,70835,70864,70894,70924,70954,70983,71013,71042,71071,71101,71130,71159,71189,71218,71248,71278,71308,71337,71367,71397,71426,71455,71485,71514,71543,71573,71602,71632,71662,71691,71721,71751,71781,71810,71839,71869,71898,71927,71957,71986,72016,72046,72075,72105,72135,72164,72194,72223,72253,72282,72311,72341,72370,72400,72429,72459,72489,72518,72548,72577,72607,72637,72666,72695,72725,72754,72784,72813,72843,72872,72902,72931,72961,72991,73020,73050,73080,73109,73139,73168,73197,73227,73256,73286,73315,73345,73375,73404,73434,73464,73493,73523,73552,73581,73611,73640,73669,73699,73729,73758,73788,73818,73848,73877,73907,73936,73965,73995,74024,74053,74083,74113,74142,74172,74202,74231,74261,74291,74320,74349,74379,74408,74437,74467,74497,74526,74556,74586,74615,74645,74675,74704,74733,74763,74792,74822,74851,74881,74910,74940,74969,74999,75029,75058,75088,75117,75147,75176,75206,75235,75264,75294,75323,75353,75383,75412,75442,75472,75501,75531,75560,75590,75619,75648,75678,75707,75737,75766,75796,75826,75856,75885,75915,75944,75974,76003,76032,76062,76091,76121,76150,76180,76210,76239,76269,76299,76328,76358,76387,76416,76446,76475,76505,76534,76564,76593,76623,76653,76682,76712,76741,76771,76801,76830,76859,76889,76918,76948,76977,77007,77036,77066,77096,77125,77155,77185,77214,77243,77273,77302,77332,77361,77390,77420,77450,77479,77509,77539,77569,77598,77627,77657,77686,77715,77745,77774,77804,77833,77863,77893,77923,77952,77982,78011,78041,78070,78099,78129,78158,78188,78217,78247,78277,78307,78336,78366,78395,78425,78454,78483,78513,78542,78572,78601,78631,78661,78690,78720,78750,78779,78808,78838,78867,78897,78926,78956,78985,79015,79044,79074,79104,79133,79163,79192,79222,79251,79281,79310,79340,79369,79399,79428,79458,79487,79517,79546,79576,79606,79635,79665,79695,79724,79753,79783,79812,79841,79871,79900,79930,79960,79990]},{\"../main\":346,\"object-assign\":247}],346:[function(t,e,r){var n=t(\"object-assign\");function i(){this.regionalOptions=[],this.regionalOptions[\"\"]={invalidCalendar:\"Calendar {0} not found\",invalidDate:\"Invalid {0} date\",invalidMonth:\"Invalid {0} month\",invalidYear:\"Invalid {0} year\",differentCalendars:\"Cannot mix {0} and {1} dates\"},this.local=this.regionalOptions[\"\"],this.calendars={},this._localCals={}}function a(t,e,r,n){if(this._calendar=t,this._year=e,this._month=r,this._day=n,0===this._calendar._validateLevel&&!this._calendar.isValid(this._year,this._month,this._day))throw(c.local.invalidDate||c.regionalOptions[\"\"].invalidDate).replace(/\\{0\\}/,this._calendar.local.name)}function o(t,e){return\"000000\".substring(0,e-(t=\"\"+t).length)+t}function s(){this.shortYearCutoff=\"+10\"}function l(t){this.local=this.regionalOptions[t]||this.regionalOptions[\"\"]}n(i.prototype,{instance:function(t,e){t=(t||\"gregorian\").toLowerCase(),e=e||\"\";var r=this._localCals[t+\"-\"+e];if(!r&&this.calendars[t]&&(r=new this.calendars[t](e),this._localCals[t+\"-\"+e]=r),!r)throw(this.local.invalidCalendar||this.regionalOptions[\"\"].invalidCalendar).replace(/\\{0\\}/,t);return r},newDate:function(t,e,r,n,i){return(n=(null!=t&&t.year?t.calendar():\"string\"==typeof n?this.instance(n,i):n)||this.instance()).newDate(t,e,r)},substituteDigits:function(t){return function(e){return(e+\"\").replace(/[0-9]/g,(function(e){return t[e]}))}},substituteChineseDigits:function(t,e){return function(r){for(var n=\"\",i=0;r>0;){var a=r%10;n=(0===a?\"\":t[a]+e[i])+n,i++,r=Math.floor(r/10)}return 0===n.indexOf(t[1]+e[1])&&(n=n.substr(1)),n||t[0]}}}),n(a.prototype,{newDate:function(t,e,r){return this._calendar.newDate(null==t?this:t,e,r)},year:function(t){return 0===arguments.length?this._year:this.set(t,\"y\")},month:function(t){return 0===arguments.length?this._month:this.set(t,\"m\")},day:function(t){return 0===arguments.length?this._day:this.set(t,\"d\")},date:function(t,e,r){if(!this._calendar.isValid(t,e,r))throw(c.local.invalidDate||c.regionalOptions[\"\"].invalidDate).replace(/\\{0\\}/,this._calendar.local.name);return this._year=t,this._month=e,this._day=r,this},leapYear:function(){return this._calendar.leapYear(this)},epoch:function(){return this._calendar.epoch(this)},formatYear:function(){return this._calendar.formatYear(this)},monthOfYear:function(){return this._calendar.monthOfYear(this)},weekOfYear:function(){return this._calendar.weekOfYear(this)},daysInYear:function(){return this._calendar.daysInYear(this)},dayOfYear:function(){return this._calendar.dayOfYear(this)},daysInMonth:function(){return this._calendar.daysInMonth(this)},dayOfWeek:function(){return this._calendar.dayOfWeek(this)},weekDay:function(){return this._calendar.weekDay(this)},extraInfo:function(){return this._calendar.extraInfo(this)},add:function(t,e){return this._calendar.add(this,t,e)},set:function(t,e){return this._calendar.set(this,t,e)},compareTo:function(t){if(this._calendar.name!==t._calendar.name)throw(c.local.differentCalendars||c.regionalOptions[\"\"].differentCalendars).replace(/\\{0\\}/,this._calendar.local.name).replace(/\\{1\\}/,t._calendar.local.name);var e=this._year!==t._year?this._year-t._year:this._month!==t._month?this.monthOfYear()-t.monthOfYear():this._day-t._day;return 0===e?0:e<0?-1:1},calendar:function(){return this._calendar},toJD:function(){return this._calendar.toJD(this)},fromJD:function(t){return this._calendar.fromJD(t)},toJSDate:function(){return this._calendar.toJSDate(this)},fromJSDate:function(t){return this._calendar.fromJSDate(t)},toString:function(){return(this.year()<0?\"-\":\"\")+o(Math.abs(this.year()),4)+\"-\"+o(this.month(),2)+\"-\"+o(this.day(),2)}}),n(s.prototype,{_validateLevel:0,newDate:function(t,e,r){return null==t?this.today():(t.year&&(this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate),r=t.day(),e=t.month(),t=t.year()),new a(this,t,e,r))},today:function(){return this.fromJSDate(new Date)},epoch:function(t){return this._validate(t,this.minMonth,this.minDay,c.local.invalidYear||c.regionalOptions[\"\"].invalidYear).year()<0?this.local.epochs[0]:this.local.epochs[1]},formatYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,c.local.invalidYear||c.regionalOptions[\"\"].invalidYear);return(e.year()<0?\"-\":\"\")+o(Math.abs(e.year()),4)},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,c.local.invalidYear||c.regionalOptions[\"\"].invalidYear),12},monthOfYear:function(t,e){var r=this._validate(t,e,this.minDay,c.local.invalidMonth||c.regionalOptions[\"\"].invalidMonth);return(r.month()+this.monthsInYear(r)-this.firstMonth)%this.monthsInYear(r)+this.minMonth},fromMonthOfYear:function(t,e){var r=(e+this.firstMonth-2*this.minMonth)%this.monthsInYear(t)+this.minMonth;return this._validate(t,r,this.minDay,c.local.invalidMonth||c.regionalOptions[\"\"].invalidMonth),r},daysInYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,c.local.invalidYear||c.regionalOptions[\"\"].invalidYear);return this.leapYear(e)?366:365},dayOfYear:function(t,e,r){var n=this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate);return n.toJD()-this.newDate(n.year(),this.fromMonthOfYear(n.year(),this.minMonth),this.minDay).toJD()+1},daysInWeek:function(){return 7},dayOfWeek:function(t,e,r){var n=this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate);return(Math.floor(this.toJD(n))+2)%this.daysInWeek()},extraInfo:function(t,e,r){return this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate),{}},add:function(t,e,r){return this._validate(t,this.minMonth,this.minDay,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate),this._correctAdd(t,this._add(t,e,r),e,r)},_add:function(t,e,r){if(this._validateLevel++,\"d\"===r||\"w\"===r){var n=t.toJD()+e*(\"w\"===r?this.daysInWeek():1),i=t.calendar().fromJD(n);return this._validateLevel--,[i.year(),i.month(),i.day()]}try{var a=t.year()+(\"y\"===r?e:0),o=t.monthOfYear()+(\"m\"===r?e:0);i=t.day();\"y\"===r?(t.month()!==this.fromMonthOfYear(a,o)&&(o=this.newDate(a,t.month(),this.minDay).monthOfYear()),o=Math.min(o,this.monthsInYear(a)),i=Math.min(i,this.daysInMonth(a,this.fromMonthOfYear(a,o)))):\"m\"===r&&(!function(t){for(;oe-1+t.minMonth;)a++,o-=e,e=t.monthsInYear(a)}(this),i=Math.min(i,this.daysInMonth(a,this.fromMonthOfYear(a,o))));var s=[a,this.fromMonthOfYear(a,o),i];return this._validateLevel--,s}catch(t){throw this._validateLevel--,t}},_correctAdd:function(t,e,r,n){if(!(this.hasYearZero||\"y\"!==n&&\"m\"!==n||0!==e[0]&&t.year()>0==e[0]>0)){var i={y:[1,1,\"y\"],m:[1,this.monthsInYear(-1),\"m\"],w:[this.daysInWeek(),this.daysInYear(-1),\"d\"],d:[1,this.daysInYear(-1),\"d\"]}[n],a=r<0?-1:1;e=this._add(t,r*i[0]+a*i[1],i[2])}return t.date(e[0],e[1],e[2])},set:function(t,e,r){this._validate(t,this.minMonth,this.minDay,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate);var n=\"y\"===r?e:t.year(),i=\"m\"===r?e:t.month(),a=\"d\"===r?e:t.day();return\"y\"!==r&&\"m\"!==r||(a=Math.min(a,this.daysInMonth(n,i))),t.date(n,i,a)},isValid:function(t,e,r){this._validateLevel++;var n=this.hasYearZero||0!==t;if(n){var i=this.newDate(t,e,this.minDay);n=e>=this.minMonth&&e-this.minMonth=this.minDay&&r-this.minDay13.5?13:1),c=i-(l>2.5?4716:4715);return c<=0&&c--,this.newDate(c,l,s)},toJSDate:function(t,e,r){var n=this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate),i=new Date(n.year(),n.month()-1,n.day());return i.setHours(0),i.setMinutes(0),i.setSeconds(0),i.setMilliseconds(0),i.setHours(i.getHours()>12?i.getHours()+2:0),i},fromJSDate:function(t){return this.newDate(t.getFullYear(),t.getMonth()+1,t.getDate())}});var c=e.exports=new i;c.cdate=a,c.baseCalendar=s,c.calendars.gregorian=l},{\"object-assign\":247}],347:[function(t,e,r){var n=t(\"object-assign\"),i=t(\"./main\");n(i.regionalOptions[\"\"],{invalidArguments:\"Invalid arguments\",invalidFormat:\"Cannot format a date from another calendar\",missingNumberAt:\"Missing number at position {0}\",unknownNameAt:\"Unknown name at position {0}\",unexpectedLiteralAt:\"Unexpected literal at position {0}\",unexpectedText:\"Additional text found at end\"}),i.local=i.regionalOptions[\"\"],n(i.cdate.prototype,{formatDate:function(t,e){return\"string\"!=typeof t&&(e=t,t=\"\"),this._calendar.formatDate(t||\"\",this,e)}}),n(i.baseCalendar.prototype,{UNIX_EPOCH:i.instance().newDate(1970,1,1).toJD(),SECS_PER_DAY:86400,TICKS_EPOCH:i.instance().jdEpoch,TICKS_PER_DAY:864e9,ATOM:\"yyyy-mm-dd\",COOKIE:\"D, dd M yyyy\",FULL:\"DD, MM d, yyyy\",ISO_8601:\"yyyy-mm-dd\",JULIAN:\"J\",RFC_822:\"D, d M yy\",RFC_850:\"DD, dd-M-yy\",RFC_1036:\"D, d M yy\",RFC_1123:\"D, d M yyyy\",RFC_2822:\"D, d M yyyy\",RSS:\"D, d M yy\",TICKS:\"!\",TIMESTAMP:\"@\",W3C:\"yyyy-mm-dd\",formatDate:function(t,e,r){if(\"string\"!=typeof t&&(r=e,e=t,t=\"\"),!e)return\"\";if(e.calendar()!==this)throw i.local.invalidFormat||i.regionalOptions[\"\"].invalidFormat;t=t||this.local.dateFormat;for(var n,a,o,s,l=(r=r||{}).dayNamesShort||this.local.dayNamesShort,c=r.dayNames||this.local.dayNames,u=r.monthNumbers||this.local.monthNumbers,f=r.monthNamesShort||this.local.monthNamesShort,h=r.monthNames||this.local.monthNames,p=(r.calculateWeek||this.local.calculateWeek,function(e,r){for(var n=1;w+n1}),d=function(t,e,r,n){var i=\"\"+e;if(p(t,n))for(;i.length1},x=function(t,r){var n=y(t,r),a=[2,3,n?4:2,n?4:2,10,11,20][\"oyYJ@!\".indexOf(t)+1],o=new RegExp(\"^-?\\\\d{1,\"+a+\"}\"),s=e.substring(A).match(o);if(!s)throw(i.local.missingNumberAt||i.regionalOptions[\"\"].missingNumberAt).replace(/\\{0\\}/,A);return A+=s[0].length,parseInt(s[0],10)},b=this,_=function(){if(\"function\"==typeof l){y(\"m\");var t=l.call(b,e.substring(A));return A+=t.length,t}return x(\"m\")},w=function(t,r,n,a){for(var o=y(t,a)?n:r,s=0;s-1){p=1,d=g;for(var E=this.daysInMonth(h,p);d>E;E=this.daysInMonth(h,p))p++,d-=E}return f>-1?this.fromJD(f):this.newDate(h,p,d)},determineDate:function(t,e,r,n,i){r&&\"object\"!=typeof r&&(i=n,n=r,r=null),\"string\"!=typeof n&&(i=n,n=\"\");var a=this;return e=e?e.newDate():null,t=null==t?e:\"string\"==typeof t?function(t){try{return a.parseDate(n,t,i)}catch(t){}for(var e=((t=t.toLowerCase()).match(/^c/)&&r?r.newDate():null)||a.today(),o=/([+-]?[0-9]+)\\s*(d|w|m|y)?/g,s=o.exec(t);s;)e.add(parseInt(s[1],10),s[2]||\"d\"),s=o.exec(t);return e}(t):\"number\"==typeof t?isNaN(t)||t===1/0||t===-1/0?e:a.today().add(t,\"d\"):a.newDate(t)}})},{\"./main\":346,\"object-assign\":247}],348:[function(t,e,r){\"use strict\";e.exports=[{path:\"\",backoff:0},{path:\"M-2.4,-3V3L0.6,0Z\",backoff:.6},{path:\"M-3.7,-2.5V2.5L1.3,0Z\",backoff:1.3},{path:\"M-4.45,-3L-1.65,-0.2V0.2L-4.45,3L1.55,0Z\",backoff:1.55},{path:\"M-2.2,-2.2L-0.2,-0.2V0.2L-2.2,2.2L-1.4,3L1.6,0L-1.4,-3Z\",backoff:1.6},{path:\"M-4.4,-2.1L-0.6,-0.2V0.2L-4.4,2.1L-4,3L2,0L-4,-3Z\",backoff:2},{path:\"M2,0A2,2 0 1,1 0,-2A2,2 0 0,1 2,0Z\",backoff:0,noRotate:!0},{path:\"M2,2V-2H-2V2Z\",backoff:0,noRotate:!0}]},{}],349:[function(t,e,r){\"use strict\";var n=t(\"./arrow_paths\"),i=t(\"../../plots/font_attributes\"),a=t(\"../../plots/cartesian/constants\"),o=t(\"../../plot_api/plot_template\").templatedArray;t(\"../../constants/axis_placeable_objects\");e.exports=o(\"annotation\",{visible:{valType:\"boolean\",dflt:!0,editType:\"calc+arraydraw\"},text:{valType:\"string\",editType:\"calc+arraydraw\"},textangle:{valType:\"angle\",dflt:0,editType:\"calc+arraydraw\"},font:i({editType:\"calc+arraydraw\",colorEditType:\"arraydraw\"}),width:{valType:\"number\",min:1,dflt:null,editType:\"calc+arraydraw\"},height:{valType:\"number\",min:1,dflt:null,editType:\"calc+arraydraw\"},opacity:{valType:\"number\",min:0,max:1,dflt:1,editType:\"arraydraw\"},align:{valType:\"enumerated\",values:[\"left\",\"center\",\"right\"],dflt:\"center\",editType:\"arraydraw\"},valign:{valType:\"enumerated\",values:[\"top\",\"middle\",\"bottom\"],dflt:\"middle\",editType:\"arraydraw\"},bgcolor:{valType:\"color\",dflt:\"rgba(0,0,0,0)\",editType:\"arraydraw\"},bordercolor:{valType:\"color\",dflt:\"rgba(0,0,0,0)\",editType:\"arraydraw\"},borderpad:{valType:\"number\",min:0,dflt:1,editType:\"calc+arraydraw\"},borderwidth:{valType:\"number\",min:0,dflt:1,editType:\"calc+arraydraw\"},showarrow:{valType:\"boolean\",dflt:!0,editType:\"calc+arraydraw\"},arrowcolor:{valType:\"color\",editType:\"arraydraw\"},arrowhead:{valType:\"integer\",min:0,max:n.length,dflt:1,editType:\"arraydraw\"},startarrowhead:{valType:\"integer\",min:0,max:n.length,dflt:1,editType:\"arraydraw\"},arrowside:{valType:\"flaglist\",flags:[\"end\",\"start\"],extras:[\"none\"],dflt:\"end\",editType:\"arraydraw\"},arrowsize:{valType:\"number\",min:.3,dflt:1,editType:\"calc+arraydraw\"},startarrowsize:{valType:\"number\",min:.3,dflt:1,editType:\"calc+arraydraw\"},arrowwidth:{valType:\"number\",min:.1,editType:\"calc+arraydraw\"},standoff:{valType:\"number\",min:0,dflt:0,editType:\"calc+arraydraw\"},startstandoff:{valType:\"number\",min:0,dflt:0,editType:\"calc+arraydraw\"},ax:{valType:\"any\",editType:\"calc+arraydraw\"},ay:{valType:\"any\",editType:\"calc+arraydraw\"},axref:{valType:\"enumerated\",dflt:\"pixel\",values:[\"pixel\",a.idRegex.x.toString()],editType:\"calc\"},ayref:{valType:\"enumerated\",dflt:\"pixel\",values:[\"pixel\",a.idRegex.y.toString()],editType:\"calc\"},xref:{valType:\"enumerated\",values:[\"paper\",a.idRegex.x.toString()],editType:\"calc\"},x:{valType:\"any\",editType:\"calc+arraydraw\"},xanchor:{valType:\"enumerated\",values:[\"auto\",\"left\",\"center\",\"right\"],dflt:\"auto\",editType:\"calc+arraydraw\"},xshift:{valType:\"number\",dflt:0,editType:\"calc+arraydraw\"},yref:{valType:\"enumerated\",values:[\"paper\",a.idRegex.y.toString()],editType:\"calc\"},y:{valType:\"any\",editType:\"calc+arraydraw\"},yanchor:{valType:\"enumerated\",values:[\"auto\",\"top\",\"middle\",\"bottom\"],dflt:\"auto\",editType:\"calc+arraydraw\"},yshift:{valType:\"number\",dflt:0,editType:\"calc+arraydraw\"},clicktoshow:{valType:\"enumerated\",values:[!1,\"onoff\",\"onout\"],dflt:!1,editType:\"arraydraw\"},xclick:{valType:\"any\",editType:\"arraydraw\"},yclick:{valType:\"any\",editType:\"arraydraw\"},hovertext:{valType:\"string\",editType:\"arraydraw\"},hoverlabel:{bgcolor:{valType:\"color\",editType:\"arraydraw\"},bordercolor:{valType:\"color\",editType:\"arraydraw\"},font:i({editType:\"arraydraw\"}),editType:\"arraydraw\"},captureevents:{valType:\"boolean\",editType:\"arraydraw\"},editType:\"calc\",_deprecated:{ref:{valType:\"string\",editType:\"calc\"}}})},{\"../../constants/axis_placeable_objects\":472,\"../../plot_api/plot_template\":543,\"../../plots/cartesian/constants\":561,\"../../plots/font_attributes\":585,\"./arrow_paths\":348}],350:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"./draw\").draw;function o(t){var e=t._fullLayout;n.filterVisible(e.annotations).forEach((function(e){var r=i.getFromId(t,e.xref),n=i.getFromId(t,e.yref),a=i.getRefType(e.xref),o=i.getRefType(e.yref);e._extremes={},\"range\"===a&&s(e,r),\"range\"===o&&s(e,n)}))}function s(t,e){var r,n=e._id,a=n.charAt(0),o=t[a],s=t[\"a\"+a],l=t[a+\"ref\"],c=t[\"a\"+a+\"ref\"],u=t[\"_\"+a+\"padplus\"],f=t[\"_\"+a+\"padminus\"],h={x:1,y:-1}[a]*t[a+\"shift\"],p=3*t.arrowsize*t.arrowwidth||0,d=p+h,g=p-h,m=3*t.startarrowsize*t.arrowwidth||0,v=m+h,y=m-h;if(c===l){var x=i.findExtremes(e,[e.r2c(o)],{ppadplus:d,ppadminus:g}),b=i.findExtremes(e,[e.r2c(s)],{ppadplus:Math.max(u,v),ppadminus:Math.max(f,y)});r={min:[x.min[0],b.min[0]],max:[x.max[0],b.max[0]]}}else v=s?v+s:v,y=s?y-s:y,r=i.findExtremes(e,[e.r2c(o)],{ppadplus:Math.max(u,d,v),ppadminus:Math.max(f,g,y)});t._extremes[n]=r}e.exports=function(t){var e=t._fullLayout;if(n.filterVisible(e.annotations).length&&t._fullData.length)return n.syncOrAsync([a,o],t)}},{\"../../lib\":503,\"../../plots/cartesian/axes\":554,\"./draw\":355}],351:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../registry\"),a=t(\"../../plot_api/plot_template\").arrayEditor;function o(t,e){var r,n,i,a,o,l,c,u=t._fullLayout.annotations,f=[],h=[],p=[],d=(e||[]).length;for(r=0;r0||r.explicitOff.length>0},onClick:function(t,e){var r,s,l=o(t,e),c=l.on,u=l.off.concat(l.explicitOff),f={},h=t._fullLayout.annotations;if(!c.length&&!u.length)return;for(r=0;r2/3?\"right\":\"center\"),{center:0,middle:0,left:.5,bottom:-.5,right:-.5,top:.5}[e]}for(var W=!1,X=[\"x\",\"y\"],Z=0;Z1)&&(nt===rt?((pt=it.r2fraction(e[\"a\"+et]))<0||pt>1)&&(W=!0):W=!0),J=it._offset+it.r2p(e[et]),$=.5}else{var dt=\"domain\"===ht;\"x\"===et?(Q=e[et],J=dt?it._offset+it._length*Q:J=T.l+T.w*Q):(Q=1-e[et],J=dt?it._offset+it._length*Q:J=T.t+T.h*Q),$=e.showarrow?.5:Q}if(e.showarrow){ft.head=J;var gt=e[\"a\"+et];if(tt=ot*q(.5,e.xanchor)-st*q(.5,e.yanchor),nt===rt){var mt=l.getRefType(nt);\"domain\"===mt?(\"y\"===et&&(gt=1-gt),ft.tail=it._offset+it._length*gt):\"paper\"===mt?\"y\"===et?(gt=1-gt,ft.tail=T.t+T.h*gt):ft.tail=T.l+T.w*gt:ft.tail=it._offset+it.r2p(gt),K=tt}else ft.tail=J+gt,K=tt+gt;ft.text=ft.tail+tt;var vt=w[\"x\"===et?\"width\":\"height\"];if(\"paper\"===rt&&(ft.head=o.constrain(ft.head,1,vt-1)),\"pixel\"===nt){var yt=-Math.max(ft.tail-3,ft.text),xt=Math.min(ft.tail+3,ft.text)-vt;yt>0?(ft.tail+=yt,ft.text+=yt):xt>0&&(ft.tail-=xt,ft.text-=xt)}ft.tail+=ut,ft.head+=ut}else K=tt=lt*q($,ct),ft.text=J+tt;ft.text+=ut,tt+=ut,K+=ut,e[\"_\"+et+\"padplus\"]=lt/2+K,e[\"_\"+et+\"padminus\"]=lt/2-K,e[\"_\"+et+\"size\"]=lt,e[\"_\"+et+\"shift\"]=tt}if(W)R.remove();else{var bt=0,_t=0;if(\"left\"!==e.align&&(bt=(A-b)*(\"center\"===e.align?.5:1)),\"top\"!==e.valign&&(_t=(D-_)*(\"middle\"===e.valign?.5:1)),f)n.select(\"svg\").attr({x:N+bt-1,y:N+_t}).call(u.setClipUrl,U?L:null,t);else{var wt=N+_t-g.top,Tt=N+bt-g.left;G.call(h.positionText,Tt,wt).call(u.setClipUrl,U?L:null,t)}V.select(\"rect\").call(u.setRect,N,N,A,D),j.call(u.setRect,F/2,F/2,B-F,H-F),R.call(u.setTranslate,Math.round(C.x.text-B/2),Math.round(C.y.text-H/2)),O.attr({transform:\"rotate(\"+P+\",\"+C.x.text+\",\"+C.y.text+\")\"});var kt,At=function(r,n){I.selectAll(\".annotation-arrow-g\").remove();var l=C.x.head,f=C.y.head,h=C.x.tail+r,p=C.y.tail+n,g=C.x.text+r,b=C.y.text+n,_=o.rotationXYMatrix(P,g,b),w=o.apply2DTransform(_),A=o.apply2DTransform2(_),L=+j.attr(\"width\"),z=+j.attr(\"height\"),D=g-.5*L,F=D+L,B=b-.5*z,N=B+z,U=[[D,B,D,N],[D,N,F,N],[F,N,F,B],[F,B,D,B]].map(A);if(!U.reduce((function(t,e){return t^!!o.segmentsIntersect(l,f,l+1e6,f+1e6,e[0],e[1],e[2],e[3])}),!1)){U.forEach((function(t){var e=o.segmentsIntersect(h,p,l,f,t[0],t[1],t[2],t[3]);e&&(h=e.x,p=e.y)}));var V=e.arrowwidth,H=e.arrowcolor,q=e.arrowside,G=I.append(\"g\").style({opacity:c.opacity(H)}).classed(\"annotation-arrow-g\",!0),Y=G.append(\"path\").attr(\"d\",\"M\"+h+\",\"+p+\"L\"+l+\",\"+f).style(\"stroke-width\",V+\"px\").call(c.stroke,c.rgb(H));if(m(Y,q,e),k.annotationPosition&&Y.node().parentNode&&!a){var W=l,X=f;if(e.standoff){var Z=Math.sqrt(Math.pow(l-h,2)+Math.pow(f-p,2));W+=e.standoff*(h-l)/Z,X+=e.standoff*(p-f)/Z}var J,K,Q=G.append(\"path\").classed(\"annotation-arrow\",!0).classed(\"anndrag\",!0).classed(\"cursor-move\",!0).attr({d:\"M3,3H-3V-3H3ZM0,0L\"+(h-W)+\",\"+(p-X),transform:s(W,X)}).style(\"stroke-width\",V+6+\"px\").call(c.stroke,\"rgba(0,0,0,0)\").call(c.fill,\"rgba(0,0,0,0)\");d.init({element:Q.node(),gd:t,prepFn:function(){var t=u.getTranslate(R);J=t.x,K=t.y,v&&v.autorange&&M(v._name+\".autorange\",!0),x&&x.autorange&&M(x._name+\".autorange\",!0)},moveFn:function(t,r){var n=w(J,K),i=n[0]+t,a=n[1]+r;R.call(u.setTranslate,i,a),S(\"x\",y(v,t,\"x\",T,e)),S(\"y\",y(x,r,\"y\",T,e)),e.axref===e.xref&&S(\"ax\",y(v,t,\"ax\",T,e)),e.ayref===e.yref&&S(\"ay\",y(x,r,\"ay\",T,e)),G.attr(\"transform\",s(t,r)),O.attr({transform:\"rotate(\"+P+\",\"+i+\",\"+a+\")\"})},doneFn:function(){i.call(\"_guiRelayout\",t,E());var e=document.querySelector(\".js-notes-box-panel\");e&&e.redraw(e.selectedObj)}})}}};if(e.showarrow&&At(0,0),z)d.init({element:R.node(),gd:t,prepFn:function(){kt=O.attr(\"transform\")},moveFn:function(t,r){var n=\"pointer\";if(e.showarrow)e.axref===e.xref?S(\"ax\",y(v,t,\"ax\",T,e)):S(\"ax\",e.ax+t),e.ayref===e.yref?S(\"ay\",y(x,r,\"ay\",T.w,e)):S(\"ay\",e.ay+r),At(t,r);else{if(a)return;var i,o;if(v)i=y(v,t,\"x\",T,e);else{var l=e._xsize/T.w,c=e.x+(e._xshift-e.xshift)/T.w-l/2;i=d.align(c+t/T.w,l,0,1,e.xanchor)}if(x)o=y(x,r,\"y\",T,e);else{var u=e._ysize/T.h,f=e.y-(e._yshift+e.yshift)/T.h-u/2;o=d.align(f-r/T.h,u,0,1,e.yanchor)}S(\"x\",i),S(\"y\",o),v&&x||(n=d.getCursor(v?.5:i,x?.5:o,e.xanchor,e.yanchor))}O.attr({transform:s(t,r)+kt}),p(R,n)},clickFn:function(r,n){e.captureevents&&t.emit(\"plotly_clickannotation\",Y(n))},doneFn:function(){p(R),i.call(\"_guiRelayout\",t,E());var e=document.querySelector(\".js-notes-box-panel\");e&&e.redraw(e.selectedObj)}})}}}e.exports={draw:function(t){var e=t._fullLayout;e._infolayer.selectAll(\".annotation\").remove();for(var r=0;r=0,x=e.indexOf(\"end\")>=0,b=d.backoff*m+r.standoff,_=g.backoff*v+r.startstandoff;if(\"line\"===p.nodeName){o={x:+t.attr(\"x1\"),y:+t.attr(\"y1\")},u={x:+t.attr(\"x2\"),y:+t.attr(\"y2\")};var w=o.x-u.x,T=o.y-u.y;if(h=(f=Math.atan2(T,w))+Math.PI,b&&_&&b+_>Math.sqrt(w*w+T*T))return void z();if(b){if(b*b>w*w+T*T)return void z();var k=b*Math.cos(f),A=b*Math.sin(f);u.x+=k,u.y+=A,t.attr({x2:u.x,y2:u.y})}if(_){if(_*_>w*w+T*T)return void z();var M=_*Math.cos(f),S=_*Math.sin(f);o.x-=M,o.y-=S,t.attr({x1:o.x,y1:o.y})}}else if(\"path\"===p.nodeName){var E=p.getTotalLength(),L=\"\";if(E1){c=!0;break}}c?t.fullLayout._infolayer.select(\".annotation-\"+t.id+'[data-index=\"'+s+'\"]').remove():(l._pdata=i(t.glplot.cameraParams,[e.xaxis.r2l(l.x)*r[0],e.yaxis.r2l(l.y)*r[1],e.zaxis.r2l(l.z)*r[2]]),n(t.graphDiv,l,s,t.id,l._xa,l._ya))}}},{\"../../plots/gl3d/project\":607,\"../annotations/draw\":355}],362:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\");e.exports={moduleType:\"component\",name:\"annotations3d\",schema:{subplots:{scene:{annotations:t(\"./attributes\")}}},layoutAttributes:t(\"./attributes\"),handleDefaults:t(\"./defaults\"),includeBasePlot:function(t,e){var r=n.subplotsRegistry.gl3d;if(!r)return;for(var a=r.attrRegex,o=Object.keys(t),s=0;s=0))return t;if(3===o)n[o]>1&&(n[o]=1);else if(n[o]>=1)return t}var s=Math.round(255*n[0])+\", \"+Math.round(255*n[1])+\", \"+Math.round(255*n[2]);return a?\"rgba(\"+s+\", \"+n[3]+\")\":\"rgb(\"+s+\")\"}o.tinyRGB=function(t){var e=t.toRgb();return\"rgb(\"+Math.round(e.r)+\", \"+Math.round(e.g)+\", \"+Math.round(e.b)+\")\"},o.rgb=function(t){return o.tinyRGB(n(t))},o.opacity=function(t){return t?n(t).getAlpha():0},o.addOpacity=function(t,e){var r=n(t).toRgb();return\"rgba(\"+Math.round(r.r)+\", \"+Math.round(r.g)+\", \"+Math.round(r.b)+\", \"+e+\")\"},o.combine=function(t,e){var r=n(t).toRgb();if(1===r.a)return n(t).toRgbString();var i=n(e||c).toRgb(),a=1===i.a?i:{r:255*(1-i.a)+i.r*i.a,g:255*(1-i.a)+i.g*i.a,b:255*(1-i.a)+i.b*i.a},o={r:a.r*(1-r.a)+r.r*r.a,g:a.g*(1-r.a)+r.g*r.a,b:a.b*(1-r.a)+r.b*r.a};return n(o).toRgbString()},o.contrast=function(t,e,r){var i=n(t);return 1!==i.getAlpha()&&(i=n(o.combine(t,c))),(i.isDark()?e?i.lighten(e):c:r?i.darken(r):l).toString()},o.stroke=function(t,e){var r=n(e);t.style({stroke:o.tinyRGB(r),\"stroke-opacity\":r.getAlpha()})},o.fill=function(t,e){var r=n(e);t.style({fill:o.tinyRGB(r),\"fill-opacity\":r.getAlpha()})},o.clean=function(t){if(t&&\"object\"==typeof t){var e,r,n,i,s=Object.keys(t);for(e=0;e0?n>=l:n<=l));i++)n>u&&n0?n>=l:n<=l));i++)n>r[0]&&n1){var ct=Math.pow(10,Math.floor(Math.log(lt)/Math.LN10));ot*=ct*c.roundUp(lt/ct,[2,5,10]),(Math.abs(q.start)/q.size+1e-6)%1<2e-6&&(it.tick0=0)}it.dtick=ot}it.domain=o?[rt+I/R.h,rt+K-I/R.h]:[rt+P/R.w,rt+K-P/R.w],it.setScale(),t.attr(\"transform\",u(Math.round(R.l),Math.round(R.t)));var ut,ft=t.select(\".\"+A.cbtitleunshift).attr(\"transform\",u(-Math.round(R.l),-Math.round(R.t))),ht=it.ticklabelposition,pt=it.title.font.size,dt=t.select(\".\"+A.cbaxis),gt=0,mt=0;function vt(n,i){var a={propContainer:it,propName:e._propPrefix+\"title\",traceIndex:e._traceIndex,_meta:e._meta,placeholder:D._dfltTitle.colorbar,containerGroup:t.select(\".\"+A.cbtitle)},o=\"h\"===n.charAt(0)?n.substr(1):\"h\"+n;t.selectAll(\".\"+o+\",.\"+o+\"-math-group\").remove(),g.draw(r,n,f(a,i||{}))}return c.syncOrAsync([a.previousPromises,function(){var t,e;(o&&at||!o&&!at)&&(\"top\"===j&&(t=P+R.l+R.w*O,e=I+R.t+R.h*(1-rt-K)+3+.75*pt),\"bottom\"===j&&(t=P+R.l+R.w*O,e=I+R.t+R.h*(1-rt)-3-.25*pt),\"right\"===j&&(e=I+R.t+R.h*z+3+.75*pt,t=P+R.l+R.w*rt),vt(it._id+\"title\",{attributes:{x:t,y:e,\"text-anchor\":o?\"start\":\"middle\"}}))},function(){if(!o&&!at||o&&at){var a,l=t.select(\".\"+A.cbtitle),f=l.select(\"text\"),h=[-M/2,M/2],d=l.select(\".h\"+it._id+\"title-math-group\").node(),g=15.6;if(f.node()&&(g=parseInt(f.node().style.fontSize,10)*w),d?(a=p.bBox(d),mt=a.width,(gt=a.height)>g&&(h[1]-=(gt-g)/2)):f.node()&&!f.classed(A.jsPlaceholder)&&(a=p.bBox(f.node()),mt=a.width,gt=a.height),o){if(gt){if(gt+=5,\"top\"===j)it.domain[1]-=gt/R.h,h[1]*=-1;else{it.domain[0]+=gt/R.h;var v=m.lineCount(f);h[1]+=(1-v)*g}l.attr(\"transform\",u(h[0],h[1])),it.setScale()}}else mt&&(\"right\"===j&&(it.domain[0]+=(mt+pt/2)/R.w),l.attr(\"transform\",u(h[0],h[1])),it.setScale())}t.selectAll(\".\"+A.cbfills+\",.\"+A.cblines).attr(\"transform\",o?u(0,Math.round(R.h*(1-it.domain[1]))):u(Math.round(R.w*it.domain[0]),0)),dt.attr(\"transform\",o?u(0,Math.round(-R.t)):u(Math.round(-R.l),0));var y=t.select(\".\"+A.cbfills).selectAll(\"rect.\"+A.cbfill).attr(\"style\",\"\").data(Y);y.enter().append(\"rect\").classed(A.cbfill,!0).style(\"stroke\",\"none\"),y.exit().remove();var x=U.map(it.c2p).map(Math.round).sort((function(t,e){return t-e}));y.each((function(t,a){var s=[0===a?U[0]:(Y[a]+Y[a-1])/2,a===Y.length-1?U[1]:(Y[a]+Y[a+1])/2].map(it.c2p).map(Math.round);o&&(s[1]=c.constrain(s[1]+(s[1]>s[0])?1:-1,x[0],x[1]));var l=n.select(this).attr(o?\"x\":\"y\",Q).attr(o?\"y\":\"x\",n.min(s)).attr(o?\"width\":\"height\",Math.max(X,2)).attr(o?\"height\":\"width\",Math.max(n.max(s)-n.min(s),2));if(e._fillgradient)p.gradient(l,r,e._id,o?\"vertical\":\"horizontalreversed\",e._fillgradient,\"fill\");else{var u=H(t).replace(\"e-\",\"\");l.attr(\"fill\",i(u).toHexString())}}));var b=t.select(\".\"+A.cblines).selectAll(\"path.\"+A.cbline).data(B.color&&B.width?W:[]);b.enter().append(\"path\").classed(A.cbline,!0),b.exit().remove(),b.each((function(t){var e=Q,r=Math.round(it.c2p(t))+B.width/2%1;n.select(this).attr(\"d\",\"M\"+(o?e+\",\"+r:r+\",\"+e)+(o?\"h\":\"v\")+X).call(p.lineGroupStyle,B.width,V(t),B.dash)})),dt.selectAll(\"g.\"+it._id+\"tick,path\").remove();var _=Q+X+(M||0)/2-(\"outside\"===e.ticks?1:0),T=s.calcTicks(it),k=s.getTickSigns(it)[2];return s.drawTicks(r,it,{vals:\"inside\"===it.ticks?s.clipEnds(it,T):T,layer:dt,path:s.makeTickPath(it,_,k),transFn:s.makeTransTickFn(it)}),s.drawLabels(r,it,{vals:T,layer:dt,transFn:s.makeTransTickLabelFn(it),labelFns:s.makeLabelFns(it,_)})},function(){if(o&&!at||!o&&at){var t,i,a=it.position||0,s=it._offset+it._length/2;if(\"right\"===j)i=s,t=R.l+R.w*a+10+pt*(it.showticklabels?1:.5);else if(t=s,\"bottom\"===j&&(i=R.t+R.h*a+10+(-1===ht.indexOf(\"inside\")?it.tickfont.size:0)+(\"intside\"!==it.ticks&&e.ticklen||0)),\"top\"===j){var l=N.text.split(\"
\").length;i=R.t+R.h*a+10-X-w*pt*l}vt((o?\"h\":\"v\")+it._id+\"title\",{avoid:{selection:n.select(r).selectAll(\"g.\"+it._id+\"tick\"),side:j,offsetTop:o?0:R.t,offsetLeft:o?R.l:0,maxShift:o?D.width:D.height},attributes:{x:t,y:i,\"text-anchor\":\"middle\"},transform:{rotate:o?-90:0,offset:0}})}},a.previousPromises,function(){var n,s=X+M/2;-1===ht.indexOf(\"inside\")&&(n=p.bBox(dt.node()),s+=o?n.width:n.height),ut=ft.select(\"text\");var c=0,f=o&&\"top\"===j,g=!o&&\"right\"===j,m=0;if(ut.node()&&!ut.classed(A.jsPlaceholder)){var y,x=ft.select(\".h\"+it._id+\"title-math-group\").node();x&&(o&&at||!o&&!at)?(c=(n=p.bBox(x)).width,y=n.height):(c=(n=p.bBox(ft.node())).right-R.l-(o?Q:nt),y=n.bottom-R.t-(o?nt:Q),o||\"top\"!==j||(s+=n.height,m=n.height)),g&&(ut.attr(\"transform\",u(c/2+pt/2,0)),c*=2),s=Math.max(s,o?c:y)}var b=2*(o?P:I)+s+S+M/2,w=0;!o&&N.text&&\"bottom\"===C&&z<=0&&(b+=w=b/2,m+=w),D._hColorbarMoveTitle=w,D._hColorbarMoveCBTitle=m;var F=S+M;t.select(\".\"+A.cbbg).attr(\"x\",(o?Q:nt)-F/2-(o?P:0)).attr(\"y\",(o?nt:Q)-(o?J:I+m-w)).attr(o?\"width\":\"height\",Math.max(b-w,2)).attr(o?\"height\":\"width\",Math.max(J+F,2)).call(d.fill,E).call(d.stroke,e.bordercolor).style(\"stroke-width\",S);var B=g?Math.max(c-10,0):0;if(t.selectAll(\".\"+A.cboutline).attr(\"x\",(o?Q:nt+P)+B).attr(\"y\",(o?nt+I-J:Q)+(f?gt:0)).attr(o?\"width\":\"height\",Math.max(X,2)).attr(o?\"height\":\"width\",Math.max(J-(o?2*I+gt:2*P+B),2)).call(d.stroke,e.outlinecolor).style({fill:\"none\",\"stroke-width\":M}),t.attr(\"transform\",u(R.l-(o?$*b:0),R.t-(o?0:(1-tt)*b-m))),!o&&(S||i(E).getAlpha()&&!i.equals(D.paper_bgcolor,E))){var U=dt.selectAll(\"text\"),V=U[0].length,H=t.select(\".\"+A.cbbg).node(),q=p.bBox(H),G=p.getTranslate(t);U.each((function(t,e){var r=V-1;if(0===e||e===r){var n,i=p.bBox(this),a=p.getTranslate(this);if(e===r){var o=i.right+a.x;(n=q.right+G.x+nt-S-2+O-o)>0&&(n=0)}else if(0===e){var s=i.left+a.x;(n=q.left+G.x+nt+S+2-s)<0&&(n=0)}n&&(V<3?this.setAttribute(\"transform\",\"translate(\"+n+\",0) \"+this.getAttribute(\"transform\")):this.setAttribute(\"visibility\",\"hidden\"))}}))}var Y={},W=T[L],Z=k[L],K=T[C],et=k[C],rt=b-X;o?(\"pixels\"===h?(Y.y=z,Y.t=J*K,Y.b=J*et):(Y.t=Y.b=0,Y.yt=z+l*K,Y.yb=z-l*et),\"pixels\"===_?(Y.x=O,Y.l=b*W,Y.r=b*Z):(Y.l=rt*W,Y.r=rt*Z,Y.xl=O-v*W,Y.xr=O+v*Z)):(\"pixels\"===h?(Y.x=O,Y.l=J*W,Y.r=J*Z):(Y.l=Y.r=0,Y.xl=O+l*W,Y.xr=O-l*Z),\"pixels\"===_?(Y.y=1-z,Y.t=b*K,Y.b=b*et):(Y.t=rt*K,Y.b=rt*et,Y.yt=z-v*K,Y.yb=z+v*et)),a.autoMargin(r,e._id,Y)}],r)}(r,e,t);v&&v.then&&(t._promises||[]).push(v),t._context.edits.colorbarPosition&&function(t,e,r){var n,i,a,s=\"v\"===e.orientation,c=r._fullLayout._size;l.init({element:t.node(),gd:r,prepFn:function(){n=t.attr(\"transform\"),h(t)},moveFn:function(r,o){t.attr(\"transform\",n+u(r,o)),i=l.align((s?e._uFrac:e._vFrac)+r/c.w,s?e._thickFrac:e._lenFrac,0,1,e.xanchor),a=l.align((s?e._vFrac:1-e._uFrac)-o/c.h,s?e._lenFrac:e._thickFrac,0,1,e.yanchor);var f=l.getCursor(i,a,e.xanchor,e.yanchor);h(t,f)},doneFn:function(){if(h(t),void 0!==i&&void 0!==a){var n={};n[e._propPrefix+\"x\"]=i,n[e._propPrefix+\"y\"]=a,void 0!==e._traceIndex?o.call(\"_guiRestyle\",r,n,e._traceIndex):o.call(\"_guiRelayout\",r,n)}}})}(r,e,t)})),e.exit().each((function(e){a.autoMargin(t,e._id)})).remove(),e.order()}}},{\"../../constants/alignment\":471,\"../../lib\":503,\"../../lib/extend\":493,\"../../lib/setcursor\":524,\"../../lib/svg_text_utils\":529,\"../../plots/cartesian/axes\":554,\"../../plots/cartesian/axis_defaults\":556,\"../../plots/cartesian/layout_attributes\":569,\"../../plots/cartesian/position_defaults\":572,\"../../plots/plots\":619,\"../../registry\":638,\"../color\":366,\"../colorscale/helpers\":377,\"../dragelement\":385,\"../drawing\":388,\"../titles\":464,\"./constants\":368,\"@plotly/d3\":58,tinycolor2:312}],371:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t){return n.isPlainObject(t.colorbar)}},{\"../../lib\":503}],372:[function(t,e,r){\"use strict\";e.exports={moduleType:\"component\",name:\"colorbar\",attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),draw:t(\"./draw\").draw,hasColorbar:t(\"./has_colorbar\")}},{\"./attributes\":367,\"./defaults\":369,\"./draw\":370,\"./has_colorbar\":371}],373:[function(t,e,r){\"use strict\";var n=t(\"../colorbar/attributes\"),i=t(\"../../lib/regex\").counter,a=t(\"../../lib/sort_object_keys\"),o=t(\"./scales.js\").scales;a(o);function s(t){return\"`\"+t+\"`\"}e.exports=function(t,e){t=t||\"\";var r,a=(e=e||{}).cLetter||\"c\",l=(\"onlyIfNumerical\"in e?e.onlyIfNumerical:Boolean(t),\"noScale\"in e?e.noScale:\"marker.line\"===t),c=\"showScaleDflt\"in e?e.showScaleDflt:\"z\"===a,u=\"string\"==typeof e.colorscaleDflt?o[e.colorscaleDflt]:null,f=e.editTypeOverride||\"\",h=t?t+\".\":\"\";\"colorAttr\"in e?(r=e.colorAttr,e.colorAttr):s(h+(r={z:\"z\",c:\"color\"}[a]));var p=a+\"auto\",d=a+\"min\",g=a+\"max\",m=a+\"mid\",v=(s(h+p),s(h+d),s(h+g),{});v[d]=v[g]=void 0;var y={};y[p]=!1;var x={};return\"color\"===r&&(x.color={valType:\"color\",arrayOk:!0,editType:f||\"style\"},e.anim&&(x.color.anim=!0)),x[p]={valType:\"boolean\",dflt:!0,editType:\"calc\",impliedEdits:v},x[d]={valType:\"number\",dflt:null,editType:f||\"plot\",impliedEdits:y},x[g]={valType:\"number\",dflt:null,editType:f||\"plot\",impliedEdits:y},x[m]={valType:\"number\",dflt:null,editType:\"calc\",impliedEdits:v},x.colorscale={valType:\"colorscale\",editType:\"calc\",dflt:u,impliedEdits:{autocolorscale:!1}},x.autocolorscale={valType:\"boolean\",dflt:!1!==e.autoColorDflt,editType:\"calc\",impliedEdits:{colorscale:void 0}},x.reversescale={valType:\"boolean\",dflt:!1,editType:\"plot\"},l||(x.showscale={valType:\"boolean\",dflt:c,editType:\"calc\"},x.colorbar=n),e.noColorAxis||(x.coloraxis={valType:\"subplotid\",regex:i(\"coloraxis\"),dflt:null,editType:\"calc\"}),x}},{\"../../lib/regex\":520,\"../../lib/sort_object_keys\":526,\"../colorbar/attributes\":367,\"./scales.js\":381}],374:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../lib\"),a=t(\"./helpers\").extractOpts;e.exports=function(t,e,r){var o,s=t._fullLayout,l=r.vals,c=r.containerStr,u=c?i.nestedProperty(e,c).get():e,f=a(u),h=!1!==f.auto,p=f.min,d=f.max,g=f.mid,m=function(){return i.aggNums(Math.min,null,l)},v=function(){return i.aggNums(Math.max,null,l)};(void 0===p?p=m():h&&(p=u._colorAx&&n(p)?Math.min(p,m()):m()),void 0===d?d=v():h&&(d=u._colorAx&&n(d)?Math.max(d,v()):v()),h&&void 0!==g&&(d-g>g-p?p=g-(d-g):d-g=0?s.colorscale.sequential:s.colorscale.sequentialminus,f._sync(\"colorscale\",o))}},{\"../../lib\":503,\"./helpers\":377,\"fast-isnumeric\":190}],375:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./helpers\").hasColorscale,a=t(\"./helpers\").extractOpts;e.exports=function(t,e){function r(t,e){var r=t[\"_\"+e];void 0!==r&&(t[e]=r)}function o(t,i){var o=i.container?n.nestedProperty(t,i.container).get():t;if(o)if(o.coloraxis)o._colorAx=e[o.coloraxis];else{var s=a(o),l=s.auto;(l||void 0===s.min)&&r(o,i.min),(l||void 0===s.max)&&r(o,i.max),s.autocolorscale&&r(o,\"colorscale\")}}for(var s=0;s=0;n--,i++){var a=t[n];r[i]=[1-a[0],a[1]]}return r}function d(t,e){e=e||{};for(var r=t.domain,o=t.range,l=o.length,c=new Array(l),u=0;u4/3-s?o:s}},{}],383:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=[[\"sw-resize\",\"s-resize\",\"se-resize\"],[\"w-resize\",\"move\",\"e-resize\"],[\"nw-resize\",\"n-resize\",\"ne-resize\"]];e.exports=function(t,e,r,a){return t=\"left\"===r?0:\"center\"===r?1:\"right\"===r?2:n.constrain(Math.floor(3*t),0,2),e=\"bottom\"===a?0:\"middle\"===a?1:\"top\"===a?2:n.constrain(Math.floor(3*e),0,2),i[e][t]}},{\"../../lib\":503}],384:[function(t,e,r){\"use strict\";r.selectMode=function(t){return\"lasso\"===t||\"select\"===t},r.drawMode=function(t){return\"drawclosedpath\"===t||\"drawopenpath\"===t||\"drawline\"===t||\"drawrect\"===t||\"drawcircle\"===t},r.openMode=function(t){return\"drawline\"===t||\"drawopenpath\"===t},r.rectMode=function(t){return\"select\"===t||\"drawline\"===t||\"drawrect\"===t||\"drawcircle\"===t},r.freeMode=function(t){return\"lasso\"===t||\"drawclosedpath\"===t||\"drawopenpath\"===t},r.selectingOrDrawing=function(t){return r.freeMode(t)||r.rectMode(t)}},{}],385:[function(t,e,r){\"use strict\";var n=t(\"mouse-event-offset\"),i=t(\"has-hover\"),a=t(\"has-passive-events\"),o=t(\"../../lib\").removeElement,s=t(\"../../plots/cartesian/constants\"),l=e.exports={};l.align=t(\"./align\"),l.getCursor=t(\"./cursor\");var c=t(\"./unhover\");function u(){var t=document.createElement(\"div\");t.className=\"dragcover\";var e=t.style;return e.position=\"fixed\",e.left=0,e.right=0,e.top=0,e.bottom=0,e.zIndex=999999999,e.background=\"none\",document.body.appendChild(t),t}function f(t){return n(t.changedTouches?t.changedTouches[0]:t,document.body)}l.unhover=c.wrapped,l.unhoverRaw=c.raw,l.init=function(t){var e,r,n,c,h,p,d,g,m=t.gd,v=1,y=m._context.doubleClickDelay,x=t.element;m._mouseDownTime||(m._mouseDownTime=0),x.style.pointerEvents=\"all\",x.onmousedown=_,a?(x._ontouchstart&&x.removeEventListener(\"touchstart\",x._ontouchstart),x._ontouchstart=_,x.addEventListener(\"touchstart\",_,{passive:!1})):x.ontouchstart=_;var b=t.clampFn||function(t,e,r){return Math.abs(t)y&&(v=Math.max(v-1,1)),m._dragged)t.doneFn&&t.doneFn();else if(t.clickFn&&t.clickFn(v,p),!g){var r;try{r=new MouseEvent(\"click\",e)}catch(t){var n=f(e);(r=document.createEvent(\"MouseEvents\")).initMouseEvent(\"click\",e.bubbles,e.cancelable,e.view,e.detail,e.screenX,e.screenY,n[0],n[1],e.ctrlKey,e.altKey,e.shiftKey,e.metaKey,e.button,e.relatedTarget)}d.dispatchEvent(r)}m._dragging=!1,m._dragged=!1}else m._dragged=!1}},l.coverSlip=u},{\"../../lib\":503,\"../../plots/cartesian/constants\":561,\"./align\":382,\"./cursor\":383,\"./unhover\":386,\"has-hover\":228,\"has-passive-events\":229,\"mouse-event-offset\":242}],386:[function(t,e,r){\"use strict\";var n=t(\"../../lib/events\"),i=t(\"../../lib/throttle\"),a=t(\"../../lib/dom\").getGraphDiv,o=t(\"../fx/constants\"),s=e.exports={};s.wrapped=function(t,e,r){(t=a(t))._fullLayout&&i.clear(t._fullLayout._uid+o.HOVERID),s.raw(t,e,r)},s.raw=function(t,e){var r=t._fullLayout,i=t._hoverdata;e||(e={}),e.target&&!t._dragged&&!1===n.triggerHandler(t,\"plotly_beforehover\",e)||(r._hoverlayer.selectAll(\"g\").remove(),r._hoverlayer.selectAll(\"line\").remove(),r._hoverlayer.selectAll(\"circle\").remove(),t._hoverdata=void 0,e.target&&i&&t.emit(\"plotly_unhover\",{event:e,points:i}))}},{\"../../lib/dom\":491,\"../../lib/events\":492,\"../../lib/throttle\":530,\"../fx/constants\":400}],387:[function(t,e,r){\"use strict\";r.dash={valType:\"string\",values:[\"solid\",\"dot\",\"dash\",\"longdash\",\"dashdot\",\"longdashdot\"],dflt:\"solid\",editType:\"style\"},r.pattern={shape:{valType:\"enumerated\",values:[\"\",\"/\",\"\\\\\",\"x\",\"-\",\"|\",\"+\",\".\"],dflt:\"\",arrayOk:!0,editType:\"style\"},fillmode:{valType:\"enumerated\",values:[\"replace\",\"overlay\"],dflt:\"replace\",editType:\"style\"},bgcolor:{valType:\"color\",arrayOk:!0,editType:\"style\"},fgcolor:{valType:\"color\",arrayOk:!0,editType:\"style\"},fgopacity:{valType:\"number\",editType:\"style\",min:0,max:1},size:{valType:\"number\",min:0,dflt:8,arrayOk:!0,editType:\"style\"},solidity:{valType:\"number\",min:0,max:1,dflt:.3,arrayOk:!0,editType:\"style\"},editType:\"style\"}},{}],388:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=i.numberFormat,o=t(\"fast-isnumeric\"),s=t(\"tinycolor2\"),l=t(\"../../registry\"),c=t(\"../color\"),u=t(\"../colorscale\"),f=i.strTranslate,h=t(\"../../lib/svg_text_utils\"),p=t(\"../../constants/xmlns_namespaces\"),d=t(\"../../constants/alignment\").LINE_SPACING,g=t(\"../../constants/interactions\").DESELECTDIM,m=t(\"../../traces/scatter/subtypes\"),v=t(\"../../traces/scatter/make_bubble_size_func\"),y=t(\"../../components/fx/helpers\").appendArrayPointValue,x=e.exports={};x.font=function(t,e,r,n){i.isPlainObject(e)&&(n=e.color,r=e.size,e=e.family),e&&t.style(\"font-family\",e),r+1&&t.style(\"font-size\",r+\"px\"),n&&t.call(c.fill,n)},x.setPosition=function(t,e,r){t.attr(\"x\",e).attr(\"y\",r)},x.setSize=function(t,e,r){t.attr(\"width\",e).attr(\"height\",r)},x.setRect=function(t,e,r,n,i){t.call(x.setPosition,e,r).call(x.setSize,n,i)},x.translatePoint=function(t,e,r,n){var i=r.c2p(t.x),a=n.c2p(t.y);return!!(o(i)&&o(a)&&e.node())&&(\"text\"===e.node().nodeName?e.attr(\"x\",i).attr(\"y\",a):e.attr(\"transform\",f(i,a)),!0)},x.translatePoints=function(t,e,r){t.each((function(t){var i=n.select(this);x.translatePoint(t,i,e,r)}))},x.hideOutsideRangePoint=function(t,e,r,n,i,a){e.attr(\"display\",r.isPtWithinRange(t,i)&&n.isPtWithinRange(t,a)?null:\"none\")},x.hideOutsideRangePoints=function(t,e){if(e._hasClipOnAxisFalse){var r=e.xaxis,i=e.yaxis;t.each((function(e){var a=e[0].trace,o=a.xcalendar,s=a.ycalendar,c=l.traceIs(a,\"bar-like\")?\".bartext\":\".point,.textpoint\";t.selectAll(c).each((function(t){x.hideOutsideRangePoint(t,n.select(this),r,i,o,s)}))}))}},x.crispRound=function(t,e,r){return e&&o(e)?t._context.staticPlot?e:e<1?1:Math.round(e):r||0},x.singleLineStyle=function(t,e,r,n,i){e.style(\"fill\",\"none\");var a=(((t||[])[0]||{}).trace||{}).line||{},o=r||a.width||0,s=i||a.dash||\"\";c.stroke(e,n||a.color),x.dashLine(e,s,o)},x.lineGroupStyle=function(t,e,r,i){t.style(\"fill\",\"none\").each((function(t){var a=(((t||[])[0]||{}).trace||{}).line||{},o=e||a.width||0,s=i||a.dash||\"\";n.select(this).call(c.stroke,r||a.color).call(x.dashLine,s,o)}))},x.dashLine=function(t,e,r){r=+r||0,e=x.dashStyle(e,r),t.style({\"stroke-dasharray\":e,\"stroke-width\":r+\"px\"})},x.dashStyle=function(t,e){e=+e||1;var r=Math.max(e,3);return\"solid\"===t?t=\"\":\"dot\"===t?t=r+\"px,\"+r+\"px\":\"dash\"===t?t=3*r+\"px,\"+3*r+\"px\":\"longdash\"===t?t=5*r+\"px,\"+5*r+\"px\":\"dashdot\"===t?t=3*r+\"px,\"+r+\"px,\"+r+\"px,\"+r+\"px\":\"longdashdot\"===t&&(t=5*r+\"px,\"+2*r+\"px,\"+r+\"px,\"+2*r+\"px\"),t},x.singleFillStyle=function(t){var e=(((n.select(t.node()).data()[0]||[])[0]||{}).trace||{}).fillcolor;e&&t.call(c.fill,e)},x.fillGroupStyle=function(t){t.style(\"stroke-width\",0).each((function(t){var e=n.select(this);t[0].trace&&e.call(c.fill,t[0].trace.fillcolor)}))};var b=t(\"./symbol_defs\");x.symbolNames=[],x.symbolFuncs=[],x.symbolNeedLines={},x.symbolNoDot={},x.symbolNoFill={},x.symbolList=[],Object.keys(b).forEach((function(t){var e=b[t],r=e.n;x.symbolList.push(r,String(r),t,r+100,String(r+100),t+\"-open\"),x.symbolNames[r]=t,x.symbolFuncs[r]=e.f,e.needLine&&(x.symbolNeedLines[r]=!0),e.noDot?x.symbolNoDot[r]=!0:x.symbolList.push(r+200,String(r+200),t+\"-dot\",r+300,String(r+300),t+\"-open-dot\"),e.noFill&&(x.symbolNoFill[r]=!0)}));var _=x.symbolNames.length;function w(t,e){var r=t%100;return x.symbolFuncs[r](e)+(t>=200?\"M0,0.5L0.5,0L0,-0.5L-0.5,0Z\":\"\")}x.symbolNumber=function(t){if(o(t))t=+t;else if(\"string\"==typeof t){var e=0;t.indexOf(\"-open\")>0&&(e=100,t=t.replace(\"-open\",\"\")),t.indexOf(\"-dot\")>0&&(e+=200,t=t.replace(\"-dot\",\"\")),(t=x.symbolNames.indexOf(t))>=0&&(t+=e)}return t%100>=_||t>=400?0:Math.floor(Math.max(t,0))};var T={x1:1,x2:0,y1:0,y2:0},k={x1:0,x2:0,y1:1,y2:0},A=a(\"~f\"),M={radial:{node:\"radialGradient\"},radialreversed:{node:\"radialGradient\",reversed:!0},horizontal:{node:\"linearGradient\",attrs:T},horizontalreversed:{node:\"linearGradient\",attrs:T,reversed:!0},vertical:{node:\"linearGradient\",attrs:k},verticalreversed:{node:\"linearGradient\",attrs:k,reversed:!0}};x.gradient=function(t,e,r,a,o,l){for(var u=o.length,f=M[a],h=new Array(u),p=0;p\"+v(t);d._gradientUrlQueryParts[y]=1},x.pattern=function(t,e,r,a,o,s,l,u,f,h,p,d){var g=\"legend\"===e;u&&(\"overlay\"===f?(h=u,p=c.contrast(h)):(h=void 0,p=u));var m,v,y,x,b,_,w,T,k,A,M,S=r._fullLayout,E=\"p\"+S._uid+\"-\"+a,L={};switch(o){case\"/\":m=s*Math.sqrt(2),v=s*Math.sqrt(2),_=\"path\",L={d:y=\"M-\"+m/4+\",\"+v/4+\"l\"+m/2+\",-\"+v/2+\"M0,\"+v+\"L\"+m+\",0M\"+m/4*3+\",\"+v/4*5+\"l\"+m/2+\",-\"+v/2,opacity:d,stroke:p,\"stroke-width\":(x=l*s)+\"px\"};break;case\"\\\\\":m=s*Math.sqrt(2),v=s*Math.sqrt(2),_=\"path\",L={d:y=\"M\"+m/4*3+\",-\"+v/4+\"l\"+m/2+\",\"+v/2+\"M0,0L\"+m+\",\"+v+\"M-\"+m/4+\",\"+v/4*3+\"l\"+m/2+\",\"+v/2,opacity:d,stroke:p,\"stroke-width\":(x=l*s)+\"px\"};break;case\"x\":m=s*Math.sqrt(2),v=s*Math.sqrt(2),y=\"M-\"+m/4+\",\"+v/4+\"l\"+m/2+\",-\"+v/2+\"M0,\"+v+\"L\"+m+\",0M\"+m/4*3+\",\"+v/4*5+\"l\"+m/2+\",-\"+v/2+\"M\"+m/4*3+\",-\"+v/4+\"l\"+m/2+\",\"+v/2+\"M0,0L\"+m+\",\"+v+\"M-\"+m/4+\",\"+v/4*3+\"l\"+m/2+\",\"+v/2,x=s-s*Math.sqrt(1-l),_=\"path\",L={d:y,opacity:d,stroke:p,\"stroke-width\":x+\"px\"};break;case\"|\":_=\"path\",_=\"path\",L={d:y=\"M\"+(m=s)/2+\",0L\"+m/2+\",\"+(v=s),opacity:d,stroke:p,\"stroke-width\":(x=l*s)+\"px\"};break;case\"-\":_=\"path\",_=\"path\",L={d:y=\"M0,\"+(v=s)/2+\"L\"+(m=s)+\",\"+v/2,opacity:d,stroke:p,\"stroke-width\":(x=l*s)+\"px\"};break;case\"+\":_=\"path\",y=\"M\"+(m=s)/2+\",0L\"+m/2+\",\"+(v=s)+\"M0,\"+v/2+\"L\"+m+\",\"+v/2,x=s-s*Math.sqrt(1-l),_=\"path\",L={d:y,opacity:d,stroke:p,\"stroke-width\":x+\"px\"};break;case\".\":m=s,v=s,l.pattern_filled\";S._patternUrlQueryParts[I]=1},x.initGradients=function(t){var e=t._fullLayout;i.ensureSingle(e._defs,\"g\",\"gradients\").selectAll(\"linearGradient,radialGradient\").remove(),e._gradientUrlQueryParts={}},x.initPatterns=function(t){var e=t._fullLayout;i.ensureSingle(e._defs,\"g\",\"patterns\").selectAll(\"pattern\").remove(),e._patternUrlQueryParts={}},x.getPatternAttr=function(t,e,r){return t&&i.isArrayOrTypedArray(t)?e=100,e.attr(\"d\",w(u,l))}var f,h,p,d=!1;if(t.so)p=s.outlierwidth,h=s.outliercolor,f=o.outliercolor;else{var g=(s||{}).width;p=(t.mlw+1||g+1||(t.trace?(t.trace.marker.line||{}).width:0)+1)-1||0,h=\"mlc\"in t?t.mlcc=n.lineScale(t.mlc):i.isArrayOrTypedArray(s.color)?c.defaultLine:s.color,i.isArrayOrTypedArray(o.color)&&(f=c.defaultLine,d=!0),f=\"mc\"in t?t.mcc=n.markerScale(t.mc):o.color||\"rgba(0,0,0,0)\",n.selectedColorFn&&(f=n.selectedColorFn(t))}if(t.om)e.call(c.stroke,f).style({\"stroke-width\":(p||1)+\"px\",fill:\"none\"});else{e.style(\"stroke-width\",(t.isBlank?0:p)+\"px\");var m=o.gradient,v=t.mgt;v?d=!0:v=m&&m.type,i.isArrayOrTypedArray(v)&&(v=v[0],M[v]||(v=0));var y=o.pattern,b=y&&x.getPatternAttr(y.shape,t.i,\"\");if(v&&\"none\"!==v){var _=t.mgc;_?d=!0:_=m.color;var T=r.uid;d&&(T+=\"-\"+t.i),x.gradient(e,a,T,v,[[0,_],[1,f]],\"fill\")}else if(b){var k=x.getPatternAttr(y.bgcolor,t.i,null),A=x.getPatternAttr(y.fgcolor,t.i,null),S=y.fgopacity,E=x.getPatternAttr(y.size,t.i,8),L=x.getPatternAttr(y.solidity,t.i,.3),C=t.mcc||i.isArrayOrTypedArray(y.shape)||i.isArrayOrTypedArray(y.bgcolor)||i.isArrayOrTypedArray(y.size)||i.isArrayOrTypedArray(y.solidity),P=r.uid;C&&(P+=\"-\"+t.i),x.pattern(e,\"point\",a,P,b,E,L,t.mcc,y.fillmode,k,A,S)}else c.fill(e,f);p&&c.stroke(e,h)}},x.makePointStyleFns=function(t){var e={},r=t.marker;return e.markerScale=x.tryColorscale(r,\"\"),e.lineScale=x.tryColorscale(r,\"line\"),l.traceIs(t,\"symbols\")&&(e.ms2mrc=m.isBubble(t)?v(t):function(){return(r.size||6)/2}),t.selectedpoints&&i.extendFlat(e,x.makeSelectedPointStyleFns(t)),e},x.makeSelectedPointStyleFns=function(t){var e={},r=t.selected||{},n=t.unselected||{},a=t.marker||{},o=r.marker||{},s=n.marker||{},c=a.opacity,u=o.opacity,f=s.opacity,h=void 0!==u,p=void 0!==f;(i.isArrayOrTypedArray(c)||h||p)&&(e.selectedOpacityFn=function(t){var e=void 0===t.mo?a.opacity:t.mo;return t.selected?h?u:e:p?f:g*e});var d=a.color,m=o.color,v=s.color;(m||v)&&(e.selectedColorFn=function(t){var e=t.mcc||d;return t.selected?m||e:v||e});var y=a.size,x=o.size,b=s.size,_=void 0!==x,w=void 0!==b;return l.traceIs(t,\"symbols\")&&(_||w)&&(e.selectedSizeFn=function(t){var e=t.mrc||y/2;return t.selected?_?x/2:e:w?b/2:e}),e},x.makeSelectedTextStyleFns=function(t){var e={},r=t.selected||{},n=t.unselected||{},i=t.textfont||{},a=r.textfont||{},o=n.textfont||{},s=i.color,l=a.color,u=o.color;return e.selectedTextColorFn=function(t){var e=t.tc||s;return t.selected?l||e:u||(l?e:c.addOpacity(e,g))},e},x.selectedPointStyle=function(t,e){if(t.size()&&e.selectedpoints){var r=x.makeSelectedPointStyleFns(e),i=e.marker||{},a=[];r.selectedOpacityFn&&a.push((function(t,e){t.style(\"opacity\",r.selectedOpacityFn(e))})),r.selectedColorFn&&a.push((function(t,e){c.fill(t,r.selectedColorFn(e))})),r.selectedSizeFn&&a.push((function(t,e){var n=e.mx||i.symbol||0,a=r.selectedSizeFn(e);t.attr(\"d\",w(x.symbolNumber(n),a)),e.mrc2=a})),a.length&&t.each((function(t){for(var e=n.select(this),r=0;r0?r:0}x.textPointStyle=function(t,e,r){if(t.size()){var a;if(e.selectedpoints){var o=x.makeSelectedTextStyleFns(e);a=o.selectedTextColorFn}var s=e.texttemplate,l=r._fullLayout;t.each((function(t){var o=n.select(this),c=s?i.extractOption(t,e,\"txt\",\"texttemplate\"):i.extractOption(t,e,\"tx\",\"text\");if(c||0===c){if(s){var u=e._module.formatLabels,f=u?u(t,e,l):{},p={};y(p,e,t.i);var d=e._meta||{};c=i.texttemplateString(c,f,l._d3locale,p,t,d)}var g=t.tp||e.textposition,m=L(t,e),v=a?a(t):t.tc||e.textfont.color;o.call(x.font,t.tf||e.textfont.family,m,v).text(c).call(h.convertToTspans,r).call(E,g,m,t.mrc)}else o.remove()}))}},x.selectedTextStyle=function(t,e){if(t.size()&&e.selectedpoints){var r=x.makeSelectedTextStyleFns(e);t.each((function(t){var i=n.select(this),a=r.selectedTextColorFn(t),o=t.tp||e.textposition,s=L(t,e);c.fill(i,a);var u=l.traceIs(e,\"bar-like\");E(i,o,s,t.mrc2||t.mrc,u)}))}};function C(t,e,r,i){var a=t[0]-e[0],o=t[1]-e[1],s=r[0]-e[0],l=r[1]-e[1],c=Math.pow(a*a+o*o,.25),u=Math.pow(s*s+l*l,.25),f=(u*u*a-c*c*s)*i,h=(u*u*o-c*c*l)*i,p=3*u*(c+u),d=3*c*(c+u);return[[n.round(e[0]+(p&&f/p),2),n.round(e[1]+(p&&h/p),2)],[n.round(e[0]-(d&&f/d),2),n.round(e[1]-(d&&h/d),2)]]}x.smoothopen=function(t,e){if(t.length<3)return\"M\"+t.join(\"L\");var r,n=\"M\"+t[0],i=[];for(r=1;r=1e4&&(x.savedBBoxes={},O=0),r&&(x.savedBBoxes[r]=m),O++,i.extendFlat({},m)},x.setClipUrl=function(t,e,r){t.attr(\"clip-path\",D(e,r))},x.getTranslate=function(t){var e=(t[t.attr?\"attr\":\"getAttribute\"](\"transform\")||\"\").replace(/.*\\btranslate\\((-?\\d*\\.?\\d*)[^-\\d]*(-?\\d*\\.?\\d*)[^\\d].*/,(function(t,e,r){return[e,r].join(\" \")})).split(\" \");return{x:+e[0]||0,y:+e[1]||0}},x.setTranslate=function(t,e,r){var n=t.attr?\"attr\":\"getAttribute\",i=t.attr?\"attr\":\"setAttribute\",a=t[n](\"transform\")||\"\";return e=e||0,r=r||0,a=a.replace(/(\\btranslate\\(.*?\\);?)/,\"\").trim(),a=(a+=f(e,r)).trim(),t[i](\"transform\",a),a},x.getScale=function(t){var e=(t[t.attr?\"attr\":\"getAttribute\"](\"transform\")||\"\").replace(/.*\\bscale\\((\\d*\\.?\\d*)[^\\d]*(\\d*\\.?\\d*)[^\\d].*/,(function(t,e,r){return[e,r].join(\" \")})).split(\" \");return{x:+e[0]||1,y:+e[1]||1}},x.setScale=function(t,e,r){var n=t.attr?\"attr\":\"getAttribute\",i=t.attr?\"attr\":\"setAttribute\",a=t[n](\"transform\")||\"\";return e=e||1,r=r||1,a=a.replace(/(\\bscale\\(.*?\\);?)/,\"\").trim(),a=(a+=\"scale(\"+e+\",\"+r+\")\").trim(),t[i](\"transform\",a),a};var R=/\\s*sc.*/;x.setPointGroupScale=function(t,e,r){if(e=e||1,r=r||1,t){var n=1===e&&1===r?\"\":\"scale(\"+e+\",\"+r+\")\";t.each((function(){var t=(this.getAttribute(\"transform\")||\"\").replace(R,\"\");t=(t+=n).trim(),this.setAttribute(\"transform\",t)}))}};var F=/translate\\([^)]*\\)\\s*$/;x.setTextPointsScale=function(t,e,r){t&&t.each((function(){var t,i=n.select(this),a=i.select(\"text\");if(a.node()){var o=parseFloat(a.attr(\"x\")||0),s=parseFloat(a.attr(\"y\")||0),l=(i.attr(\"transform\")||\"\").match(F);t=1===e&&1===r?[]:[f(o,s),\"scale(\"+e+\",\"+r+\")\",f(-o,-s)],l&&t.push(l),i.attr(\"transform\",t.join(\"\"))}}))}},{\"../../components/fx/helpers\":402,\"../../constants/alignment\":471,\"../../constants/interactions\":478,\"../../constants/xmlns_namespaces\":480,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../../registry\":638,\"../../traces/scatter/make_bubble_size_func\":943,\"../../traces/scatter/subtypes\":951,\"../color\":366,\"../colorscale\":378,\"./symbol_defs\":389,\"@plotly/d3\":58,\"fast-isnumeric\":190,tinycolor2:312}],389:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\");e.exports={circle:{n:0,f:function(t){var e=n.round(t,2);return\"M\"+e+\",0A\"+e+\",\"+e+\" 0 1,1 0,-\"+e+\"A\"+e+\",\"+e+\" 0 0,1 \"+e+\",0Z\"}},square:{n:1,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"H-\"+e+\"V-\"+e+\"H\"+e+\"Z\"}},diamond:{n:2,f:function(t){var e=n.round(1.3*t,2);return\"M\"+e+\",0L0,\"+e+\"L-\"+e+\",0L0,-\"+e+\"Z\"}},cross:{n:3,f:function(t){var e=n.round(.4*t,2),r=n.round(1.2*t,2);return\"M\"+r+\",\"+e+\"H\"+e+\"V\"+r+\"H-\"+e+\"V\"+e+\"H-\"+r+\"V-\"+e+\"H-\"+e+\"V-\"+r+\"H\"+e+\"V-\"+e+\"H\"+r+\"Z\"}},x:{n:4,f:function(t){var e=n.round(.8*t/Math.sqrt(2),2),r=\"l\"+e+\",\"+e,i=\"l\"+e+\",-\"+e,a=\"l-\"+e+\",-\"+e,o=\"l-\"+e+\",\"+e;return\"M0,\"+e+r+i+a+i+a+o+a+o+r+o+r+\"Z\"}},\"triangle-up\":{n:5,f:function(t){var e=n.round(2*t/Math.sqrt(3),2);return\"M-\"+e+\",\"+n.round(t/2,2)+\"H\"+e+\"L0,-\"+n.round(t,2)+\"Z\"}},\"triangle-down\":{n:6,f:function(t){var e=n.round(2*t/Math.sqrt(3),2);return\"M-\"+e+\",-\"+n.round(t/2,2)+\"H\"+e+\"L0,\"+n.round(t,2)+\"Z\"}},\"triangle-left\":{n:7,f:function(t){var e=n.round(2*t/Math.sqrt(3),2);return\"M\"+n.round(t/2,2)+\",-\"+e+\"V\"+e+\"L-\"+n.round(t,2)+\",0Z\"}},\"triangle-right\":{n:8,f:function(t){var e=n.round(2*t/Math.sqrt(3),2);return\"M-\"+n.round(t/2,2)+\",-\"+e+\"V\"+e+\"L\"+n.round(t,2)+\",0Z\"}},\"triangle-ne\":{n:9,f:function(t){var e=n.round(.6*t,2),r=n.round(1.2*t,2);return\"M-\"+r+\",-\"+e+\"H\"+e+\"V\"+r+\"Z\"}},\"triangle-se\":{n:10,f:function(t){var e=n.round(.6*t,2),r=n.round(1.2*t,2);return\"M\"+e+\",-\"+r+\"V\"+e+\"H-\"+r+\"Z\"}},\"triangle-sw\":{n:11,f:function(t){var e=n.round(.6*t,2),r=n.round(1.2*t,2);return\"M\"+r+\",\"+e+\"H-\"+e+\"V-\"+r+\"Z\"}},\"triangle-nw\":{n:12,f:function(t){var e=n.round(.6*t,2),r=n.round(1.2*t,2);return\"M-\"+e+\",\"+r+\"V-\"+e+\"H\"+r+\"Z\"}},pentagon:{n:13,f:function(t){var e=n.round(.951*t,2),r=n.round(.588*t,2),i=n.round(-t,2),a=n.round(-.309*t,2);return\"M\"+e+\",\"+a+\"L\"+r+\",\"+n.round(.809*t,2)+\"H-\"+r+\"L-\"+e+\",\"+a+\"L0,\"+i+\"Z\"}},hexagon:{n:14,f:function(t){var e=n.round(t,2),r=n.round(t/2,2),i=n.round(t*Math.sqrt(3)/2,2);return\"M\"+i+\",-\"+r+\"V\"+r+\"L0,\"+e+\"L-\"+i+\",\"+r+\"V-\"+r+\"L0,-\"+e+\"Z\"}},hexagon2:{n:15,f:function(t){var e=n.round(t,2),r=n.round(t/2,2),i=n.round(t*Math.sqrt(3)/2,2);return\"M-\"+r+\",\"+i+\"H\"+r+\"L\"+e+\",0L\"+r+\",-\"+i+\"H-\"+r+\"L-\"+e+\",0Z\"}},octagon:{n:16,f:function(t){var e=n.round(.924*t,2),r=n.round(.383*t,2);return\"M-\"+r+\",-\"+e+\"H\"+r+\"L\"+e+\",-\"+r+\"V\"+r+\"L\"+r+\",\"+e+\"H-\"+r+\"L-\"+e+\",\"+r+\"V-\"+r+\"Z\"}},star:{n:17,f:function(t){var e=1.4*t,r=n.round(.225*e,2),i=n.round(.951*e,2),a=n.round(.363*e,2),o=n.round(.588*e,2),s=n.round(-e,2),l=n.round(-.309*e,2),c=n.round(.118*e,2),u=n.round(.809*e,2);return\"M\"+r+\",\"+l+\"H\"+i+\"L\"+a+\",\"+c+\"L\"+o+\",\"+u+\"L0,\"+n.round(.382*e,2)+\"L-\"+o+\",\"+u+\"L-\"+a+\",\"+c+\"L-\"+i+\",\"+l+\"H-\"+r+\"L0,\"+s+\"Z\"}},hexagram:{n:18,f:function(t){var e=n.round(.66*t,2),r=n.round(.38*t,2),i=n.round(.76*t,2);return\"M-\"+i+\",0l-\"+r+\",-\"+e+\"h\"+i+\"l\"+r+\",-\"+e+\"l\"+r+\",\"+e+\"h\"+i+\"l-\"+r+\",\"+e+\"l\"+r+\",\"+e+\"h-\"+i+\"l-\"+r+\",\"+e+\"l-\"+r+\",-\"+e+\"h-\"+i+\"Z\"}},\"star-triangle-up\":{n:19,f:function(t){var e=n.round(t*Math.sqrt(3)*.8,2),r=n.round(.8*t,2),i=n.round(1.6*t,2),a=n.round(4*t,2),o=\"A \"+a+\",\"+a+\" 0 0 1 \";return\"M-\"+e+\",\"+r+o+e+\",\"+r+o+\"0,-\"+i+o+\"-\"+e+\",\"+r+\"Z\"}},\"star-triangle-down\":{n:20,f:function(t){var e=n.round(t*Math.sqrt(3)*.8,2),r=n.round(.8*t,2),i=n.round(1.6*t,2),a=n.round(4*t,2),o=\"A \"+a+\",\"+a+\" 0 0 1 \";return\"M\"+e+\",-\"+r+o+\"-\"+e+\",-\"+r+o+\"0,\"+i+o+e+\",-\"+r+\"Z\"}},\"star-square\":{n:21,f:function(t){var e=n.round(1.1*t,2),r=n.round(2*t,2),i=\"A \"+r+\",\"+r+\" 0 0 1 \";return\"M-\"+e+\",-\"+e+i+\"-\"+e+\",\"+e+i+e+\",\"+e+i+e+\",-\"+e+i+\"-\"+e+\",-\"+e+\"Z\"}},\"star-diamond\":{n:22,f:function(t){var e=n.round(1.4*t,2),r=n.round(1.9*t,2),i=\"A \"+r+\",\"+r+\" 0 0 1 \";return\"M-\"+e+\",0\"+i+\"0,\"+e+i+e+\",0\"+i+\"0,-\"+e+i+\"-\"+e+\",0Z\"}},\"diamond-tall\":{n:23,f:function(t){var e=n.round(.7*t,2),r=n.round(1.4*t,2);return\"M0,\"+r+\"L\"+e+\",0L0,-\"+r+\"L-\"+e+\",0Z\"}},\"diamond-wide\":{n:24,f:function(t){var e=n.round(1.4*t,2),r=n.round(.7*t,2);return\"M0,\"+r+\"L\"+e+\",0L0,-\"+r+\"L-\"+e+\",0Z\"}},hourglass:{n:25,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"H-\"+e+\"L\"+e+\",-\"+e+\"H-\"+e+\"Z\"},noDot:!0},bowtie:{n:26,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"V-\"+e+\"L-\"+e+\",\"+e+\"V-\"+e+\"Z\"},noDot:!0},\"circle-cross\":{n:27,f:function(t){var e=n.round(t,2);return\"M0,\"+e+\"V-\"+e+\"M\"+e+\",0H-\"+e+\"M\"+e+\",0A\"+e+\",\"+e+\" 0 1,1 0,-\"+e+\"A\"+e+\",\"+e+\" 0 0,1 \"+e+\",0Z\"},needLine:!0,noDot:!0},\"circle-x\":{n:28,f:function(t){var e=n.round(t,2),r=n.round(t/Math.sqrt(2),2);return\"M\"+r+\",\"+r+\"L-\"+r+\",-\"+r+\"M\"+r+\",-\"+r+\"L-\"+r+\",\"+r+\"M\"+e+\",0A\"+e+\",\"+e+\" 0 1,1 0,-\"+e+\"A\"+e+\",\"+e+\" 0 0,1 \"+e+\",0Z\"},needLine:!0,noDot:!0},\"square-cross\":{n:29,f:function(t){var e=n.round(t,2);return\"M0,\"+e+\"V-\"+e+\"M\"+e+\",0H-\"+e+\"M\"+e+\",\"+e+\"H-\"+e+\"V-\"+e+\"H\"+e+\"Z\"},needLine:!0,noDot:!0},\"square-x\":{n:30,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"L-\"+e+\",-\"+e+\"M\"+e+\",-\"+e+\"L-\"+e+\",\"+e+\"M\"+e+\",\"+e+\"H-\"+e+\"V-\"+e+\"H\"+e+\"Z\"},needLine:!0,noDot:!0},\"diamond-cross\":{n:31,f:function(t){var e=n.round(1.3*t,2);return\"M\"+e+\",0L0,\"+e+\"L-\"+e+\",0L0,-\"+e+\"ZM0,-\"+e+\"V\"+e+\"M-\"+e+\",0H\"+e},needLine:!0,noDot:!0},\"diamond-x\":{n:32,f:function(t){var e=n.round(1.3*t,2),r=n.round(.65*t,2);return\"M\"+e+\",0L0,\"+e+\"L-\"+e+\",0L0,-\"+e+\"ZM-\"+r+\",-\"+r+\"L\"+r+\",\"+r+\"M-\"+r+\",\"+r+\"L\"+r+\",-\"+r},needLine:!0,noDot:!0},\"cross-thin\":{n:33,f:function(t){var e=n.round(1.4*t,2);return\"M0,\"+e+\"V-\"+e+\"M\"+e+\",0H-\"+e},needLine:!0,noDot:!0,noFill:!0},\"x-thin\":{n:34,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"L-\"+e+\",-\"+e+\"M\"+e+\",-\"+e+\"L-\"+e+\",\"+e},needLine:!0,noDot:!0,noFill:!0},asterisk:{n:35,f:function(t){var e=n.round(1.2*t,2),r=n.round(.85*t,2);return\"M0,\"+e+\"V-\"+e+\"M\"+e+\",0H-\"+e+\"M\"+r+\",\"+r+\"L-\"+r+\",-\"+r+\"M\"+r+\",-\"+r+\"L-\"+r+\",\"+r},needLine:!0,noDot:!0,noFill:!0},hash:{n:36,f:function(t){var e=n.round(t/2,2),r=n.round(t,2);return\"M\"+e+\",\"+r+\"V-\"+r+\"m-\"+r+\",0V\"+r+\"M\"+r+\",\"+e+\"H-\"+r+\"m0,-\"+r+\"H\"+r},needLine:!0,noFill:!0},\"y-up\":{n:37,f:function(t){var e=n.round(1.2*t,2),r=n.round(1.6*t,2),i=n.round(.8*t,2);return\"M-\"+e+\",\"+i+\"L0,0M\"+e+\",\"+i+\"L0,0M0,-\"+r+\"L0,0\"},needLine:!0,noDot:!0,noFill:!0},\"y-down\":{n:38,f:function(t){var e=n.round(1.2*t,2),r=n.round(1.6*t,2),i=n.round(.8*t,2);return\"M-\"+e+\",-\"+i+\"L0,0M\"+e+\",-\"+i+\"L0,0M0,\"+r+\"L0,0\"},needLine:!0,noDot:!0,noFill:!0},\"y-left\":{n:39,f:function(t){var e=n.round(1.2*t,2),r=n.round(1.6*t,2),i=n.round(.8*t,2);return\"M\"+i+\",\"+e+\"L0,0M\"+i+\",-\"+e+\"L0,0M-\"+r+\",0L0,0\"},needLine:!0,noDot:!0,noFill:!0},\"y-right\":{n:40,f:function(t){var e=n.round(1.2*t,2),r=n.round(1.6*t,2),i=n.round(.8*t,2);return\"M-\"+i+\",\"+e+\"L0,0M-\"+i+\",-\"+e+\"L0,0M\"+r+\",0L0,0\"},needLine:!0,noDot:!0,noFill:!0},\"line-ew\":{n:41,f:function(t){var e=n.round(1.4*t,2);return\"M\"+e+\",0H-\"+e},needLine:!0,noDot:!0,noFill:!0},\"line-ns\":{n:42,f:function(t){var e=n.round(1.4*t,2);return\"M0,\"+e+\"V-\"+e},needLine:!0,noDot:!0,noFill:!0},\"line-ne\":{n:43,f:function(t){var e=n.round(t,2);return\"M\"+e+\",-\"+e+\"L-\"+e+\",\"+e},needLine:!0,noDot:!0,noFill:!0},\"line-nw\":{n:44,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"L-\"+e+\",-\"+e},needLine:!0,noDot:!0,noFill:!0},\"arrow-up\":{n:45,f:function(t){var e=n.round(t,2);return\"M0,0L-\"+e+\",\"+n.round(2*t,2)+\"H\"+e+\"Z\"},noDot:!0},\"arrow-down\":{n:46,f:function(t){var e=n.round(t,2);return\"M0,0L-\"+e+\",-\"+n.round(2*t,2)+\"H\"+e+\"Z\"},noDot:!0},\"arrow-left\":{n:47,f:function(t){var e=n.round(2*t,2),r=n.round(t,2);return\"M0,0L\"+e+\",-\"+r+\"V\"+r+\"Z\"},noDot:!0},\"arrow-right\":{n:48,f:function(t){var e=n.round(2*t,2),r=n.round(t,2);return\"M0,0L-\"+e+\",-\"+r+\"V\"+r+\"Z\"},noDot:!0},\"arrow-bar-up\":{n:49,f:function(t){var e=n.round(t,2);return\"M-\"+e+\",0H\"+e+\"M0,0L-\"+e+\",\"+n.round(2*t,2)+\"H\"+e+\"Z\"},needLine:!0,noDot:!0},\"arrow-bar-down\":{n:50,f:function(t){var e=n.round(t,2);return\"M-\"+e+\",0H\"+e+\"M0,0L-\"+e+\",-\"+n.round(2*t,2)+\"H\"+e+\"Z\"},needLine:!0,noDot:!0},\"arrow-bar-left\":{n:51,f:function(t){var e=n.round(2*t,2),r=n.round(t,2);return\"M0,-\"+r+\"V\"+r+\"M0,0L\"+e+\",-\"+r+\"V\"+r+\"Z\"},needLine:!0,noDot:!0},\"arrow-bar-right\":{n:52,f:function(t){var e=n.round(2*t,2),r=n.round(t,2);return\"M0,-\"+r+\"V\"+r+\"M0,0L-\"+e+\",-\"+r+\"V\"+r+\"Z\"},needLine:!0,noDot:!0}}},{\"@plotly/d3\":58}],390:[function(t,e,r){\"use strict\";e.exports={visible:{valType:\"boolean\",editType:\"calc\"},type:{valType:\"enumerated\",values:[\"percent\",\"constant\",\"sqrt\",\"data\"],editType:\"calc\"},symmetric:{valType:\"boolean\",editType:\"calc\"},array:{valType:\"data_array\",editType:\"calc\"},arrayminus:{valType:\"data_array\",editType:\"calc\"},value:{valType:\"number\",min:0,dflt:10,editType:\"calc\"},valueminus:{valType:\"number\",min:0,dflt:10,editType:\"calc\"},traceref:{valType:\"integer\",min:0,dflt:0,editType:\"style\"},tracerefminus:{valType:\"integer\",min:0,dflt:0,editType:\"style\"},copy_ystyle:{valType:\"boolean\",editType:\"plot\"},copy_zstyle:{valType:\"boolean\",editType:\"style\"},color:{valType:\"color\",editType:\"style\"},thickness:{valType:\"number\",min:0,dflt:2,editType:\"style\"},width:{valType:\"number\",min:0,editType:\"plot\"},editType:\"calc\",_deprecated:{opacity:{valType:\"number\",editType:\"style\"}}}},{}],391:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../registry\"),a=t(\"../../plots/cartesian/axes\"),o=t(\"../../lib\"),s=t(\"./compute_error\");function l(t,e,r,i){var l=e[\"error_\"+i]||{},c=[];if(l.visible&&-1!==[\"linear\",\"log\"].indexOf(r.type)){for(var u=s(l),f=0;f0;e.each((function(e){var f,h=e[0].trace,p=h.error_x||{},d=h.error_y||{};h.ids&&(f=function(t){return t.id});var g=o.hasMarkers(h)&&h.marker.maxdisplayed>0;d.visible||p.visible||(e=[]);var m=n.select(this).selectAll(\"g.errorbar\").data(e,f);if(m.exit().remove(),e.length){p.visible||m.selectAll(\"path.xerror\").remove(),d.visible||m.selectAll(\"path.yerror\").remove(),m.style(\"opacity\",1);var v=m.enter().append(\"g\").classed(\"errorbar\",!0);u&&v.style(\"opacity\",0).transition().duration(s.duration).style(\"opacity\",1),a.setClipUrl(m,r.layerClipId,t),m.each((function(t){var e=n.select(this),r=function(t,e,r){var n={x:e.c2p(t.x),y:r.c2p(t.y)};void 0!==t.yh&&(n.yh=r.c2p(t.yh),n.ys=r.c2p(t.ys),i(n.ys)||(n.noYS=!0,n.ys=r.c2p(t.ys,!0)));void 0!==t.xh&&(n.xh=e.c2p(t.xh),n.xs=e.c2p(t.xs),i(n.xs)||(n.noXS=!0,n.xs=e.c2p(t.xs,!0)));return n}(t,l,c);if(!g||t.vis){var a,o=e.select(\"path.yerror\");if(d.visible&&i(r.x)&&i(r.yh)&&i(r.ys)){var f=d.width;a=\"M\"+(r.x-f)+\",\"+r.yh+\"h\"+2*f+\"m-\"+f+\",0V\"+r.ys,r.noYS||(a+=\"m-\"+f+\",0h\"+2*f),!o.size()?o=e.append(\"path\").style(\"vector-effect\",\"non-scaling-stroke\").classed(\"yerror\",!0):u&&(o=o.transition().duration(s.duration).ease(s.easing)),o.attr(\"d\",a)}else o.remove();var h=e.select(\"path.xerror\");if(p.visible&&i(r.y)&&i(r.xh)&&i(r.xs)){var m=(p.copy_ystyle?d:p).width;a=\"M\"+r.xh+\",\"+(r.y-m)+\"v\"+2*m+\"m0,-\"+m+\"H\"+r.xs,r.noXS||(a+=\"m0,-\"+m+\"v\"+2*m),!h.size()?h=e.append(\"path\").style(\"vector-effect\",\"non-scaling-stroke\").classed(\"xerror\",!0):u&&(h=h.transition().duration(s.duration).ease(s.easing)),h.attr(\"d\",a)}else h.remove()}}))}}))}},{\"../../traces/scatter/subtypes\":951,\"../drawing\":388,\"@plotly/d3\":58,\"fast-isnumeric\":190}],396:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../color\");e.exports=function(t){t.each((function(t){var e=t[0].trace,r=e.error_y||{},a=e.error_x||{},o=n.select(this);o.selectAll(\"path.yerror\").style(\"stroke-width\",r.thickness+\"px\").call(i.stroke,r.color),a.copy_ystyle&&(a=r),o.selectAll(\"path.xerror\").style(\"stroke-width\",a.thickness+\"px\").call(i.stroke,a.color)}))}},{\"../color\":366,\"@plotly/d3\":58}],397:[function(t,e,r){\"use strict\";var n=t(\"../../plots/font_attributes\"),i=t(\"./layout_attributes\").hoverlabel,a=t(\"../../lib/extend\").extendFlat;e.exports={hoverlabel:{bgcolor:a({},i.bgcolor,{arrayOk:!0}),bordercolor:a({},i.bordercolor,{arrayOk:!0}),font:n({arrayOk:!0,editType:\"none\"}),align:a({},i.align,{arrayOk:!0}),namelength:a({},i.namelength,{arrayOk:!0}),editType:\"none\"}}},{\"../../lib/extend\":493,\"../../plots/font_attributes\":585,\"./layout_attributes\":407}],398:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../registry\");function a(t,e,r,i){i=i||n.identity,Array.isArray(t)&&(e[0][r]=i(t))}e.exports=function(t){var e=t.calcdata,r=t._fullLayout;function o(t){return function(e){return n.coerceHoverinfo({hoverinfo:e},{_module:t._module},r)}}for(var s=0;s=0&&r.index_[0]._length||ot<0||ot>w[0]._length)return d.unhoverRaw(t,e)}if(e.pointerX=at+_[0]._offset,e.pointerY=ot+w[0]._offset,V=\"xval\"in e?v.flat(l,e.xval):v.p2c(_,at),H=\"yval\"in e?v.flat(l,e.yval):v.p2c(w,ot),!i(V[0])||!i(H[0]))return o.warn(\"Fx.hover failed\",e,t),d.unhoverRaw(t,e)}var ct=1/0;function ut(t,r){for(G=0;Gtt&&(et.splice(0,tt),ct=et[0].distance),y&&0!==B&&0===et.length){$.distance=B,$.index=!1;var f=W._module.hoverPoints($,K,Q,\"closest\",{hoverLayer:u._hoverlayer});if(f&&(f=f.filter((function(t){return t.spikeDistance<=B}))),f&&f.length){var h,d=f.filter((function(t){return t.xa.showspikes&&\"hovered data\"!==t.xa.spikesnap}));if(d.length){var g=d[0];i(g.x0)&&i(g.y0)&&(h=ht(g),(!nt.vLinePoint||nt.vLinePoint.spikeDistance>h.spikeDistance)&&(nt.vLinePoint=h))}var m=f.filter((function(t){return t.ya.showspikes&&\"hovered data\"!==t.ya.spikesnap}));if(m.length){var x=m[0];i(x.x0)&&i(x.y0)&&(h=ht(x),(!nt.hLinePoint||nt.hLinePoint.spikeDistance>h.spikeDistance)&&(nt.hLinePoint=h))}}}}}function ft(t,e,r){for(var n,i=null,a=1/0,o=0;o0&&Math.abs(t.distance)Tt-1;Mt--)Ct(et[Mt]);et=St,mt()}var Pt=t._hoverdata,It=[],Ot=j(t),zt=U(t);for(q=0;q1||et.length>1)||\"closest\"===P&&it&&et.length>1,Wt=p.combine(u.plot_bgcolor||p.background,u.paper_bgcolor),Xt=I(et,{gd:t,hovermode:P,rotateLabels:Yt,bgColor:Wt,container:u._hoverlayer,outerContainer:u._paper.node(),commonLabelOpts:u.hoverlabel,hoverdistance:u.hoverdistance});v.isUnifiedHover(P)||(!function(t,e,r){var n,i,a,o,s,l,c,u=0,f=1,h=t.size(),p=new Array(h),d=0;function g(t){var e=t[0],r=t[t.length-1];if(i=e.pmin-e.pos-e.dp+e.size,a=r.pos+r.dp+r.size-e.pmax,i>.01){for(s=t.length-1;s>=0;s--)t[s].dp+=i;n=!1}if(!(a<.01)){if(i<-.01){for(s=t.length-1;s>=0;s--)t[s].dp-=a;n=!1}if(n){var c=0;for(o=0;oe.pmax&&c++;for(o=t.length-1;o>=0&&!(c<=0);o--)(l=t[o]).pos>e.pmax-1&&(l.del=!0,c--);for(o=0;o=0;s--)t[s].dp-=a;for(o=t.length-1;o>=0&&!(c<=0);o--)(l=t[o]).pos+l.dp+l.size>e.pmax&&(l.del=!0,c--)}}}t.each((function(t){var n=t[e],i=\"x\"===n._id.charAt(0),a=n.range;0===d&&a&&a[0]>a[1]!==i&&(f=-1),p[d++]=[{datum:t,traceIndex:t.trace.index,dp:0,pos:t.pos,posref:t.posref,size:t.by*(i?T:1)/2,pmin:0,pmax:i?r.width:r.height}]})),p.sort((function(t,e){return t[0].posref-e[0].posref||f*(e[0].traceIndex-t[0].traceIndex)}));for(;!n&&u<=h;){for(u++,n=!0,o=0;o.01&&y.pmin===x.pmin&&y.pmax===x.pmax){for(s=v.length-1;s>=0;s--)v[s].dp+=i;for(m.push.apply(m,v),p.splice(o+1,1),c=0,s=m.length-1;s>=0;s--)c+=m[s].dp;for(a=c/m.length,s=m.length-1;s>=0;s--)m[s].dp-=a;n=!1}else o++}p.forEach(g)}for(o=p.length-1;o>=0;o--){var b=p[o];for(s=b.length-1;s>=0;s--){var _=b[s],w=_.datum;w.offset=_.dp,w.del=_.del}}}(Xt,Yt?\"xa\":\"ya\",u),z(Xt,Yt,u._invScaleX,u._invScaleY));if(s&&s.tagName){var Zt=m.getComponentMethod(\"annotations\",\"hasClickToShow\")(t,It);f(n.select(s),Zt?\"pointer\":\"\")}if(!s||a||!function(t,e,r){if(!r||r.length!==t._hoverdata.length)return!0;for(var n=r.length-1;n>=0;n--){var i=r[n],a=t._hoverdata[n];if(i.curveNumber!==a.curveNumber||String(i.pointNumber)!==String(a.pointNumber)||String(i.pointNumbers)!==String(a.pointNumbers))return!0}return!1}(t,0,Pt))return;Pt&&t.emit(\"plotly_unhover\",{event:e,points:Pt});t.emit(\"plotly_hover\",{event:e,points:t._hoverdata,xaxes:_,yaxes:w,xvals:V,yvals:H})}(t,e,r,a,s)}))},r.loneHover=function(t,e){var r=!0;Array.isArray(t)||(r=!1,t=[t]);var i=e.gd,a=j(i),o=U(i),s=I(t.map((function(t){var r=t._x0||t.x0||t.x||0,n=t._x1||t.x1||t.x||0,s=t._y0||t.y0||t.y||0,l=t._y1||t.y1||t.y||0,c=t.eventData;if(c){var u=Math.min(r,n),f=Math.max(r,n),h=Math.min(s,l),d=Math.max(s,l),g=t.trace;if(m.traceIs(g,\"gl3d\")){var v=i._fullLayout[g.scene]._scene.container,y=v.offsetLeft,x=v.offsetTop;u+=y,f+=y,h+=x,d+=x}c.bbox={x0:u+o,x1:f+o,y0:h+a,y1:d+a},e.inOut_bbox&&e.inOut_bbox.push(c.bbox)}else c=!1;return{color:t.color||p.defaultLine,x0:t.x0||t.x||0,x1:t.x1||t.x||0,y0:t.y0||t.y||0,y1:t.y1||t.y||0,xLabel:t.xLabel,yLabel:t.yLabel,zLabel:t.zLabel,text:t.text,name:t.name,idealAlign:t.idealAlign,borderColor:t.borderColor,fontFamily:t.fontFamily,fontSize:t.fontSize,fontColor:t.fontColor,nameLength:t.nameLength,textAlign:t.textAlign,trace:t.trace||{index:0,hoverinfo:\"\"},xa:{_offset:0},ya:{_offset:0},index:0,hovertemplate:t.hovertemplate||!1,hovertemplateLabels:t.hovertemplateLabels||!1,eventData:c}})),{gd:i,hovermode:\"closest\",rotateLabels:!1,bgColor:e.bgColor||p.background,container:n.select(e.container),outerContainer:e.outerContainer||e.container}),l=0,c=0;return s.sort((function(t,e){return t.y0-e.y0})).each((function(t,r){var n=t.y0-t.by/2;t.offset=n-5([\\s\\S]*)<\\/extra>/;function I(t,e){var r=e.gd,i=r._fullLayout,a=e.hovermode,c=e.rotateLabels,f=e.bgColor,d=e.container,g=e.outerContainer,w=e.commonLabelOpts||{};if(0===t.length)return[[]];var T=e.fontFamily||y.HOVERFONT,k=e.fontSize||y.HOVERFONTSIZE,A=t[0],E=A.xa,L=A.ya,P=a.charAt(0),I=A[P+\"Label\"],z=V(r,g),D=z.top,R=z.width,F=z.height,B=void 0!==I&&A.distance<=e.hoverdistance&&(\"x\"===a||\"y\"===a);if(B){var N,j,U=!0;for(N=0;Ni.width-b?(m=i.width-b,e.attr(\"d\",\"M\"+(b-M)+\",0L\"+b+\",\"+x+M+\"v\"+x+(2*S+y.height)+\"H-\"+b+\"V\"+x+M+\"H\"+(b-2*M)+\"Z\")):e.attr(\"d\",\"M0,0L\"+M+\",\"+x+M+\"H\"+(S+y.width/2)+\"v\"+x+(2*S+y.height)+\"H-\"+(S+y.width/2)+\"V\"+x+M+\"H-\"+M+\"Z\")}else{var _,C,P;\"right\"===L.side?(_=\"start\",C=1,P=\"\",m=E._offset+E._length):(_=\"end\",C=-1,P=\"-\",m=E._offset),v=L._offset+(A.y0+A.y1)/2,l.attr(\"text-anchor\",_),e.attr(\"d\",\"M0,0L\"+P+M+\",\"+M+\"V\"+(S+y.height/2)+\"h\"+P+(2*S+y.width)+\"V-\"+(S+y.height/2)+\"H\"+P+M+\"V-\"+M+\"Z\");var O,z=y.height/2,R=D-y.top-z,F=\"clip\"+i._uid+\"commonlabel\"+L._id;if(m=0?at:ot+ct=0?ot:vt+ct=0?nt:it+ut=0?it:yt+ut=0,\"top\"!==t.idealAlign&&G||!Y?G?(z+=j/2,t.anchor=\"start\"):t.anchor=\"middle\":(z-=j/2,t.anchor=\"end\");else if(t.pos=z,G=P+N/2+W<=R,Y=P-N/2-W>=0,\"left\"!==t.idealAlign&&G||!Y)if(G)P+=N/2,t.anchor=\"start\";else{t.anchor=\"middle\";var X=W/2,Z=P+X-R,J=P-X;Z>0&&(P-=Z),J<0&&(P+=-J)}else P-=N/2,t.anchor=\"end\";w.attr(\"text-anchor\",t.anchor),E&&A.attr(\"text-anchor\",t.anchor),e.attr(\"transform\",s(P,z)+(c?l(_):\"\"))})),xt}function O(t,e,r,n,i,a){var s=\"\",l=\"\";void 0!==t.nameOverride&&(t.name=t.nameOverride),t.name&&(t.trace._meta&&(t.name=o.templateString(t.name,t.trace._meta)),s=B(t.name,t.nameLength));var c=r.charAt(0),u=\"x\"===c?\"y\":\"x\";void 0!==t.zLabel?(void 0!==t.xLabel&&(l+=\"x: \"+t.xLabel+\"
\"),void 0!==t.yLabel&&(l+=\"y: \"+t.yLabel+\"
\"),\"choropleth\"!==t.trace.type&&\"choroplethmapbox\"!==t.trace.type&&(l+=(l?\"z: \":\"\")+t.zLabel)):e&&t[c+\"Label\"]===i?l=t[u+\"Label\"]||\"\":void 0===t.xLabel?void 0!==t.yLabel&&\"scattercarpet\"!==t.trace.type&&(l=t.yLabel):l=void 0===t.yLabel?t.xLabel:\"(\"+t.xLabel+\", \"+t.yLabel+\")\",!t.text&&0!==t.text||Array.isArray(t.text)||(l+=(l?\"
\":\"\")+t.text),void 0!==t.extraText&&(l+=(l?\"
\":\"\")+t.extraText),a&&\"\"===l&&!t.hovertemplate&&(\"\"===s&&a.remove(),l=s);var f=t.hovertemplate||!1;if(f){var h=t.hovertemplateLabels||t;t[c+\"Label\"]!==i&&(h[c+\"other\"]=h[c+\"Val\"],h[c+\"otherLabel\"]=h[c+\"Label\"]),l=(l=o.hovertemplateString(f,h,n._d3locale,t.eventData[0]||{},t.trace._meta)).replace(P,(function(e,r){return s=B(r,t.nameLength),\"\"}))}return[l,s]}function z(t,e,r,i){var a=function(t){return t*r},o=function(t){return t*i};t.each((function(t){var r=n.select(this);if(t.del)return r.remove();var i=r.select(\"text.nums\"),s=t.anchor,l=\"end\"===s?-1:1,c={start:1,end:-1,middle:0}[s],f=c*(M+S),p=f+c*(t.txwidth+S),d=0,g=t.offset,m=\"middle\"===s;m&&(f-=t.tx2width/2,p+=t.txwidth/2+S),e&&(g*=-A,d=t.offset*k),r.select(\"path\").attr(\"d\",m?\"M-\"+a(t.bx/2+t.tx2width/2)+\",\"+o(g-t.by/2)+\"h\"+a(t.bx)+\"v\"+o(t.by)+\"h-\"+a(t.bx)+\"Z\":\"M0,0L\"+a(l*M+d)+\",\"+o(M+g)+\"v\"+o(t.by/2-M)+\"h\"+a(l*t.bx)+\"v-\"+o(t.by)+\"H\"+a(l*M+d)+\"V\"+o(g-M)+\"Z\");var v=d+f,y=g+t.ty0-t.by/2+S,x=t.textAlign||\"auto\";\"auto\"!==x&&(\"left\"===x&&\"start\"!==s?(i.attr(\"text-anchor\",\"start\"),v=m?-t.bx/2-t.tx2width/2+S:-t.bx-S):\"right\"===x&&\"end\"!==s&&(i.attr(\"text-anchor\",\"end\"),v=m?t.bx/2-t.tx2width/2-S:t.bx+S)),i.call(u.positionText,a(v),o(y)),t.tx2width&&(r.select(\"text.name\").call(u.positionText,a(p+c*S+d),o(g+t.ty0-t.by/2+S)),r.select(\"rect\").call(h.setRect,a(p+(c-1)*t.tx2width/2+d),o(g-t.by/2-1),a(t.tx2width),o(t.by+2)))}))}function D(t,e){var r=t.index,n=t.trace||{},a=t.cd[0],s=t.cd[r]||{};function l(t){return t||i(t)&&0===t}var c=Array.isArray(r)?function(t,e){var i=o.castOption(a,r,t);return l(i)?i:o.extractOption({},n,\"\",e)}:function(t,e){return o.extractOption(s,n,t,e)};function u(e,r,n){var i=c(r,n);l(i)&&(t[e]=i)}if(u(\"hoverinfo\",\"hi\",\"hoverinfo\"),u(\"bgcolor\",\"hbg\",\"hoverlabel.bgcolor\"),u(\"borderColor\",\"hbc\",\"hoverlabel.bordercolor\"),u(\"fontFamily\",\"htf\",\"hoverlabel.font.family\"),u(\"fontSize\",\"hts\",\"hoverlabel.font.size\"),u(\"fontColor\",\"htc\",\"hoverlabel.font.color\"),u(\"nameLength\",\"hnl\",\"hoverlabel.namelength\"),u(\"textAlign\",\"hta\",\"hoverlabel.align\"),t.posref=\"y\"===e||\"closest\"===e&&\"h\"===n.orientation?t.xa._offset+(t.x0+t.x1)/2:t.ya._offset+(t.y0+t.y1)/2,t.x0=o.constrain(t.x0,0,t.xa._length),t.x1=o.constrain(t.x1,0,t.xa._length),t.y0=o.constrain(t.y0,0,t.ya._length),t.y1=o.constrain(t.y1,0,t.ya._length),void 0!==t.xLabelVal&&(t.xLabel=\"xLabel\"in t?t.xLabel:g.hoverLabelText(t.xa,t.xLabelVal,n.xhoverformat),t.xVal=t.xa.c2d(t.xLabelVal)),void 0!==t.yLabelVal&&(t.yLabel=\"yLabel\"in t?t.yLabel:g.hoverLabelText(t.ya,t.yLabelVal,n.yhoverformat),t.yVal=t.ya.c2d(t.yLabelVal)),void 0!==t.zLabelVal&&void 0===t.zLabel&&(t.zLabel=String(t.zLabelVal)),!(isNaN(t.xerr)||\"log\"===t.xa.type&&t.xerr<=0)){var f=g.tickText(t.xa,t.xa.c2l(t.xerr),\"hover\").text;void 0!==t.xerrneg?t.xLabel+=\" +\"+f+\" / -\"+g.tickText(t.xa,t.xa.c2l(t.xerrneg),\"hover\").text:t.xLabel+=\" \\xb1 \"+f,\"x\"===e&&(t.distance+=1)}if(!(isNaN(t.yerr)||\"log\"===t.ya.type&&t.yerr<=0)){var h=g.tickText(t.ya,t.ya.c2l(t.yerr),\"hover\").text;void 0!==t.yerrneg?t.yLabel+=\" +\"+h+\" / -\"+g.tickText(t.ya,t.ya.c2l(t.yerrneg),\"hover\").text:t.yLabel+=\" \\xb1 \"+h,\"y\"===e&&(t.distance+=1)}var p=t.hoverinfo||t.trace.hoverinfo;return p&&\"all\"!==p&&(-1===(p=Array.isArray(p)?p:p.split(\"+\")).indexOf(\"x\")&&(t.xLabel=void 0),-1===p.indexOf(\"y\")&&(t.yLabel=void 0),-1===p.indexOf(\"z\")&&(t.zLabel=void 0),-1===p.indexOf(\"text\")&&(t.text=void 0),-1===p.indexOf(\"name\")&&(t.name=void 0)),t}function R(t,e,r){var n,i,o=r.container,s=r.fullLayout,l=s._size,c=r.event,u=!!e.hLinePoint,f=!!e.vLinePoint;if(o.selectAll(\".spikeline\").remove(),f||u){var d=p.combine(s.plot_bgcolor,s.paper_bgcolor);if(u){var m,v,y=e.hLinePoint;n=y&&y.xa,\"cursor\"===(i=y&&y.ya).spikesnap?(m=c.pointerX,v=c.pointerY):(m=n._offset+y.x,v=i._offset+y.y);var x,b,_=a.readability(y.color,d)<1.5?p.contrast(d):y.color,w=i.spikemode,T=i.spikethickness,k=i.spikecolor||_,A=g.getPxPosition(t,i);if(-1!==w.indexOf(\"toaxis\")||-1!==w.indexOf(\"across\")){if(-1!==w.indexOf(\"toaxis\")&&(x=A,b=m),-1!==w.indexOf(\"across\")){var M=i._counterDomainMin,S=i._counterDomainMax;\"free\"===i.anchor&&(M=Math.min(M,i.position),S=Math.max(S,i.position)),x=l.l+M*l.w,b=l.l+S*l.w}o.insert(\"line\",\":first-child\").attr({x1:x,x2:b,y1:v,y2:v,\"stroke-width\":T,stroke:k,\"stroke-dasharray\":h.dashStyle(i.spikedash,T)}).classed(\"spikeline\",!0).classed(\"crisp\",!0),o.insert(\"line\",\":first-child\").attr({x1:x,x2:b,y1:v,y2:v,\"stroke-width\":T+2,stroke:d}).classed(\"spikeline\",!0).classed(\"crisp\",!0)}-1!==w.indexOf(\"marker\")&&o.insert(\"circle\",\":first-child\").attr({cx:A+(\"right\"!==i.side?T:-T),cy:v,r:T,fill:k}).classed(\"spikeline\",!0)}if(f){var E,L,C=e.vLinePoint;n=C&&C.xa,i=C&&C.ya,\"cursor\"===n.spikesnap?(E=c.pointerX,L=c.pointerY):(E=n._offset+C.x,L=i._offset+C.y);var P,I,O=a.readability(C.color,d)<1.5?p.contrast(d):C.color,z=n.spikemode,D=n.spikethickness,R=n.spikecolor||O,F=g.getPxPosition(t,n);if(-1!==z.indexOf(\"toaxis\")||-1!==z.indexOf(\"across\")){if(-1!==z.indexOf(\"toaxis\")&&(P=F,I=L),-1!==z.indexOf(\"across\")){var B=n._counterDomainMin,N=n._counterDomainMax;\"free\"===n.anchor&&(B=Math.min(B,n.position),N=Math.max(N,n.position)),P=l.t+(1-N)*l.h,I=l.t+(1-B)*l.h}o.insert(\"line\",\":first-child\").attr({x1:E,x2:E,y1:P,y2:I,\"stroke-width\":D,stroke:R,\"stroke-dasharray\":h.dashStyle(n.spikedash,D)}).classed(\"spikeline\",!0).classed(\"crisp\",!0),o.insert(\"line\",\":first-child\").attr({x1:E,x2:E,y1:P,y2:I,\"stroke-width\":D+2,stroke:d}).classed(\"spikeline\",!0).classed(\"crisp\",!0)}-1!==z.indexOf(\"marker\")&&o.insert(\"circle\",\":first-child\").attr({cx:E,cy:F-(\"top\"!==n.side?D:-D),r:D,fill:R}).classed(\"spikeline\",!0)}}}function F(t,e){return!e||(e.vLinePoint!==t._spikepoints.vLinePoint||e.hLinePoint!==t._spikepoints.hLinePoint)}function B(t,e){return u.plainText(t||\"\",{len:e,allowedTags:[\"br\",\"sub\",\"sup\",\"b\",\"i\",\"em\"]})}function N(t,e,r){var n=e[t+\"a\"],i=e[t+\"Val\"],a=e.cd[0];if(\"category\"===n.type)i=n._categoriesMap[i];else if(\"date\"===n.type){var o=e.trace[t+\"periodalignment\"];if(o){var s=e.cd[e.index],l=s[t+\"Start\"];void 0===l&&(l=s[t]);var c=s[t+\"End\"];void 0===c&&(c=s[t]);var u=c-l;\"end\"===o?i+=u:\"middle\"===o&&(i+=u/2)}i=n.d2c(i)}return a&&a.t&&a.t.posLetter===n._id&&(\"group\"!==r.boxmode&&\"group\"!==r.violinmode||(i+=a.t.dPos)),i}function j(t){return t.offsetTop+t.clientTop}function U(t){return t.offsetLeft+t.clientLeft}function V(t,e){var r=t._fullLayout,n=e.getBoundingClientRect(),i=n.x,a=n.y,s=i+n.width,l=a+n.height,c=o.apply3DTransform(r._invTransform)(i,a),u=o.apply3DTransform(r._invTransform)(s,l),f=c[0],h=c[1],p=u[0],d=u[1];return{x:f,y:h,width:p-f,height:d-h,top:Math.min(h,d),left:Math.min(f,p),right:Math.max(f,p),bottom:Math.max(h,d)}}},{\"../../lib\":503,\"../../lib/events\":492,\"../../lib/override_cursor\":514,\"../../lib/svg_text_utils\":529,\"../../plots/cartesian/axes\":554,\"../../registry\":638,\"../color\":366,\"../dragelement\":385,\"../drawing\":388,\"../legend/defaults\":418,\"../legend/draw\":419,\"./constants\":400,\"./helpers\":402,\"@plotly/d3\":58,\"fast-isnumeric\":190,tinycolor2:312}],404:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../color\"),a=t(\"./helpers\").isUnifiedHover;e.exports=function(t,e,r,o){o=o||{};var s=e.legend;function l(t){o.font[t]||(o.font[t]=s?e.legend.font[t]:e.font[t])}e&&a(e.hovermode)&&(o.font||(o.font={}),l(\"size\"),l(\"family\"),l(\"color\"),s?(o.bgcolor||(o.bgcolor=i.combine(e.legend.bgcolor,e.paper_bgcolor)),o.bordercolor||(o.bordercolor=e.legend.bordercolor)):o.bgcolor||(o.bgcolor=e.paper_bgcolor)),r(\"hoverlabel.bgcolor\",o.bgcolor),r(\"hoverlabel.bordercolor\",o.bordercolor),r(\"hoverlabel.namelength\",o.namelength),n.coerceFont(r,\"hoverlabel.font\",o.font),r(\"hoverlabel.align\",o.align)}},{\"../../lib\":503,\"../color\":366,\"./helpers\":402}],405:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e){function r(r,a){return void 0!==e[r]?e[r]:n.coerce(t,e,i,r,a)}return r(\"clickmode\"),r(\"hovermode\")}},{\"../../lib\":503,\"./layout_attributes\":407}],406:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../dragelement\"),o=t(\"./helpers\"),s=t(\"./layout_attributes\"),l=t(\"./hover\");e.exports={moduleType:\"component\",name:\"fx\",constants:t(\"./constants\"),schema:{layout:s},attributes:t(\"./attributes\"),layoutAttributes:s,supplyLayoutGlobalDefaults:t(\"./layout_global_defaults\"),supplyDefaults:t(\"./defaults\"),supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\"),getDistanceFunction:o.getDistanceFunction,getClosest:o.getClosest,inbox:o.inbox,quadrature:o.quadrature,appendArrayPointValue:o.appendArrayPointValue,castHoverOption:function(t,e,r){return i.castOption(t,e,\"hoverlabel.\"+r)},castHoverinfo:function(t,e,r){return i.castOption(t,r,\"hoverinfo\",(function(r){return i.coerceHoverinfo({hoverinfo:r},{_module:t._module},e)}))},hover:l.hover,unhover:a.unhover,loneHover:l.loneHover,loneUnhover:function(t){var e=i.isD3Selection(t)?t:n.select(t);e.selectAll(\"g.hovertext\").remove(),e.selectAll(\".spikeline\").remove()},click:t(\"./click\")}},{\"../../lib\":503,\"../dragelement\":385,\"./attributes\":397,\"./calc\":398,\"./click\":399,\"./constants\":400,\"./defaults\":401,\"./helpers\":402,\"./hover\":403,\"./layout_attributes\":407,\"./layout_defaults\":408,\"./layout_global_defaults\":409,\"@plotly/d3\":58}],407:[function(t,e,r){\"use strict\";var n=t(\"./constants\"),i=t(\"../../plots/font_attributes\"),a=i({editType:\"none\"});a.family.dflt=n.HOVERFONT,a.size.dflt=n.HOVERFONTSIZE,e.exports={clickmode:{valType:\"flaglist\",flags:[\"event\",\"select\"],dflt:\"event\",editType:\"plot\",extras:[\"none\"]},dragmode:{valType:\"enumerated\",values:[\"zoom\",\"pan\",\"select\",\"lasso\",\"drawclosedpath\",\"drawopenpath\",\"drawline\",\"drawrect\",\"drawcircle\",\"orbit\",\"turntable\",!1],dflt:\"zoom\",editType:\"modebar\"},hovermode:{valType:\"enumerated\",values:[\"x\",\"y\",\"closest\",!1,\"x unified\",\"y unified\"],dflt:\"closest\",editType:\"modebar\"},hoverdistance:{valType:\"integer\",min:-1,dflt:20,editType:\"none\"},spikedistance:{valType:\"integer\",min:-1,dflt:-1,editType:\"none\"},hoverlabel:{bgcolor:{valType:\"color\",editType:\"none\"},bordercolor:{valType:\"color\",editType:\"none\"},font:a,grouptitlefont:i({editType:\"none\"}),align:{valType:\"enumerated\",values:[\"left\",\"right\",\"auto\"],dflt:\"auto\",editType:\"none\"},namelength:{valType:\"integer\",min:-1,dflt:15,editType:\"none\"},editType:\"none\"},selectdirection:{valType:\"enumerated\",values:[\"h\",\"v\",\"d\",\"any\"],dflt:\"any\",editType:\"none\"}}},{\"../../plots/font_attributes\":585,\"./constants\":400}],408:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\"),a=t(\"./hovermode_defaults\"),o=t(\"./hoverlabel_defaults\");e.exports=function(t,e){function r(r,a){return n.coerce(t,e,i,r,a)}a(t,e)&&(r(\"hoverdistance\"),r(\"spikedistance\")),\"select\"===r(\"dragmode\")&&r(\"selectdirection\");var s=e._has(\"mapbox\"),l=e._has(\"geo\"),c=e._basePlotModules.length;\"zoom\"===e.dragmode&&((s||l)&&1===c||s&&l&&2===c)&&(e.dragmode=\"pan\"),o(t,e,r),n.coerceFont(r,\"hoverlabel.grouptitlefont\",e.hoverlabel.font)}},{\"../../lib\":503,\"./hoverlabel_defaults\":404,\"./hovermode_defaults\":405,\"./layout_attributes\":407}],409:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./hoverlabel_defaults\"),a=t(\"./layout_attributes\");e.exports=function(t,e){i(t,e,(function(r,i){return n.coerce(t,e,a,r,i)}))}},{\"../../lib\":503,\"./hoverlabel_defaults\":404,\"./layout_attributes\":407}],410:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../lib/regex\").counter,a=t(\"../../plots/domain\").attributes,o=t(\"../../plots/cartesian/constants\").idRegex,s=t(\"../../plot_api/plot_template\"),l={rows:{valType:\"integer\",min:1,editType:\"plot\"},roworder:{valType:\"enumerated\",values:[\"top to bottom\",\"bottom to top\"],dflt:\"top to bottom\",editType:\"plot\"},columns:{valType:\"integer\",min:1,editType:\"plot\"},subplots:{valType:\"info_array\",freeLength:!0,dimensions:2,items:{valType:\"enumerated\",values:[i(\"xy\").toString(),\"\"],editType:\"plot\"},editType:\"plot\"},xaxes:{valType:\"info_array\",freeLength:!0,items:{valType:\"enumerated\",values:[o.x.toString(),\"\"],editType:\"plot\"},editType:\"plot\"},yaxes:{valType:\"info_array\",freeLength:!0,items:{valType:\"enumerated\",values:[o.y.toString(),\"\"],editType:\"plot\"},editType:\"plot\"},pattern:{valType:\"enumerated\",values:[\"independent\",\"coupled\"],dflt:\"coupled\",editType:\"plot\"},xgap:{valType:\"number\",min:0,max:1,editType:\"plot\"},ygap:{valType:\"number\",min:0,max:1,editType:\"plot\"},domain:a({name:\"grid\",editType:\"plot\",noGridCell:!0},{}),xside:{valType:\"enumerated\",values:[\"bottom\",\"bottom plot\",\"top plot\",\"top\"],dflt:\"bottom plot\",editType:\"plot\"},yside:{valType:\"enumerated\",values:[\"left\",\"left plot\",\"right plot\",\"right\"],dflt:\"left plot\",editType:\"plot\"},editType:\"plot\"};function c(t,e,r){var n=e[r+\"axes\"],i=Object.keys((t._splomAxes||{})[r]||{});return Array.isArray(n)?n:i.length?i:void 0}function u(t,e,r,n,i,a){var o=e(t+\"gap\",r),s=e(\"domain.\"+t);e(t+\"side\",n);for(var l=new Array(i),c=s[0],u=(s[1]-c)/(i-o),f=u*(1-o),h=0;h1){if(!h&&!p&&!d)\"independent\"===k(\"pattern\")&&(h=!0);m._hasSubplotGrid=h;var x,b,_=\"top to bottom\"===k(\"roworder\"),w=h?.2:.1,T=h?.3:.1;g&&e._splomGridDflt&&(x=e._splomGridDflt.xside,b=e._splomGridDflt.yside),m._domains={x:u(\"x\",k,w,x,y),y:u(\"y\",k,T,b,v,_)}}else delete e.grid}function k(t,e){return n.coerce(r,m,l,t,e)}},contentDefaults:function(t,e){var r=e.grid;if(r&&r._domains){var n,i,a,o,s,l,u,h=t.grid||{},p=e._subplots,d=r._hasSubplotGrid,g=r.rows,m=r.columns,v=\"independent\"===r.pattern,y=r._axisMap={};if(d){var x=h.subplots||[];l=r.subplots=new Array(g);var b=1;for(n=0;n1);if(!1===_&&(e.legend=void 0),(!1!==_||f.uirevision)&&(p(\"uirevision\",e.uirevision),!1!==_)){p(\"bgcolor\",e.paper_bgcolor),p(\"bordercolor\"),p(\"borderwidth\");var w,T,k,A=i.coerceFont(p,\"font\",e.font),M=\"h\"===p(\"orientation\");if(M?(w=0,n.getComponentMethod(\"rangeslider\",\"isVisible\")(t.xaxis)?(T=1.1,k=\"bottom\"):(T=-.1,k=\"top\")):(w=1.02,T=1,k=\"auto\"),p(\"traceorder\",x),c.isGrouped(e.legend)&&p(\"tracegroupgap\"),p(\"itemsizing\"),p(\"itemwidth\"),p(\"itemclick\"),p(\"itemdoubleclick\"),p(\"groupclick\"),p(\"x\",w),p(\"xanchor\"),p(\"y\",T),p(\"yanchor\",k),p(\"valign\"),i.noneOrAll(f,h,[\"x\",\"y\"]),p(\"title.text\")){p(\"title.side\",M?\"left\":\"top\");var S=i.extendFlat({},A,{size:i.bigFont(A.size)});i.coerceFont(p,\"title.font\",S)}}}},{\"../../lib\":503,\"../../plot_api/plot_template\":543,\"../../plots/attributes\":550,\"../../plots/layout_attributes\":610,\"../../registry\":638,\"./attributes\":416,\"./helpers\":422}],419:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../plots/plots\"),o=t(\"../../registry\"),s=t(\"../../lib/events\"),l=t(\"../dragelement\"),c=t(\"../drawing\"),u=t(\"../color\"),f=t(\"../../lib/svg_text_utils\"),h=t(\"./handle_click\"),p=t(\"./constants\"),d=t(\"../../constants/alignment\"),g=d.LINE_SPACING,m=d.FROM_TL,v=d.FROM_BR,y=t(\"./get_legend_data\"),x=t(\"./style\"),b=t(\"./helpers\");function _(t,e,r,n,i){var a=r.data()[0][0].trace,l={event:i,node:r.node(),curveNumber:a.index,expandedIndex:a._expandedIndex,data:t.data,layout:t.layout,frames:t._transitionData._frames,config:t._context,fullData:t._fullData,fullLayout:t._fullLayout};if(a._group&&(l.group=a._group),o.traceIs(a,\"pie-like\")&&(l.label=r.datum()[0].label),!1!==s.triggerHandler(t,\"plotly_legendclick\",l))if(1===n)e._clickTimeout=setTimeout((function(){t._fullLayout&&h(r,t,n)}),t._context.doubleClickDelay);else if(2===n){e._clickTimeout&&clearTimeout(e._clickTimeout),t._legendMouseDownTime=0,!1!==s.triggerHandler(t,\"plotly_legenddoubleclick\",l)&&h(r,t,n)}}function w(t,e,r){var n,a,s=t.data()[0][0],l=s.trace,u=o.traceIs(l,\"pie-like\"),h=!r._inHover&&e._context.edits.legendText&&!u,d=r._maxNameLength;s.groupTitle?(n=s.groupTitle.text,a=s.groupTitle.font):(a=r.font,r.entries?n=s.text:(n=u?s.label:l.name,l._meta&&(n=i.templateString(n,l._meta))));var g=i.ensureSingle(t,\"text\",\"legendtext\");g.attr(\"text-anchor\",\"start\").call(c.font,a).text(h?T(n,d):n);var m=r.itemwidth+2*p.itemGap;f.positionText(g,m,0),h?g.call(f.makeEditable,{gd:e,text:n}).call(A,t,e,r).on(\"edit\",(function(n){this.text(T(n,d)).call(A,t,e,r);var a=s.trace._fullInput||{},c={};if(o.hasTransform(a,\"groupby\")){var u=o.getTransformIndices(a,\"groupby\"),f=u[u.length-1],h=i.keyedContainer(a,\"transforms[\"+f+\"].styles\",\"target\",\"value.name\");h.set(s.trace._group,n),c=h.constructUpdate()}else c.name=n;return o.call(\"_guiRestyle\",e,c,l.index)})):A(g,t,e,r)}function T(t,e){var r=Math.max(4,e);if(t&&t.trim().length>=r/2)return t;for(var n=r-(t=t||\"\").length;n>0;n--)t+=\" \";return t}function k(t,e){var r,a=e._context.doubleClickDelay,o=1,s=i.ensureSingle(t,\"rect\",\"legendtoggle\",(function(t){e._context.staticPlot||t.style(\"cursor\",\"pointer\").attr(\"pointer-events\",\"all\"),t.call(u.fill,\"rgba(0,0,0,0)\")}));e._context.staticPlot||(s.on(\"mousedown\",(function(){(r=(new Date).getTime())-e._legendMouseDownTimea&&(o=Math.max(o-1,1)),_(e,r,t,o,n.event)}})))}function A(t,e,r,n,i){n._inHover&&t.attr(\"data-notex\",!0),f.convertToTspans(t,r,(function(){!function(t,e,r,n){var i=t.data()[0][0];if(!r._inHover&&i&&!i.trace.showlegend)return void t.remove();var a=t.select(\"g[class*=math-group]\"),o=a.node();r||(r=e._fullLayout.legend);var s,l=r.borderwidth;s=1===n?r.title.font:i.groupTitle?i.groupTitle.font:r.font;var u,h,d=s.size*g;if(o){var m=c.bBox(o);u=m.height,h=m.width,1===n?c.setTranslate(a,l,l+.75*u):c.setTranslate(a,0,.25*u)}else{var v=t.select(1===n?\".legendtitletext\":\".legendtext\"),y=f.lineCount(v),x=v.node();if(u=d*y,h=x?c.bBox(x).width:0,1===n)\"left\"===r.title.side&&(h+=2*p.itemGap),f.positionText(v,l+p.titlePad,l+d);else{var b=2*p.itemGap+r.itemwidth;i.groupTitle&&(b=p.itemGap,h-=r.itemwidth),f.positionText(v,b,-d*((y-1)/2-.3))}}1===n?(r._titleWidth=h,r._titleHeight=u):(i.lineHeight=d,i.height=Math.max(u,16)+3,i.width=h)}(e,r,n,i)}))}function M(t){return i.isRightAnchor(t)?\"right\":i.isCenterAnchor(t)?\"center\":\"left\"}function S(t){return i.isBottomAnchor(t)?\"bottom\":i.isMiddleAnchor(t)?\"middle\":\"top\"}e.exports=function(t,e){return e||(e=t._fullLayout.legend||{}),function(t,e){var r,s,f=t._fullLayout,h=\"legend\"+f._uid,d=e._inHover;d?(r=e.layer,h+=\"-hover\"):r=f._infolayer;if(!r)return;t._legendMouseDownTime||(t._legendMouseDownTime=0);if(d){if(!e.entries)return;s=y(e.entries,e)}else{if(!t.calcdata)return;s=f.showlegend&&y(t.calcdata,e)}var g=f.hiddenlabels||[];if(!(d||f.showlegend&&s.length))return r.selectAll(\".legend\").remove(),f._topdefs.select(\"#\"+h).remove(),a.autoMargin(t,\"legend\");var T=i.ensureSingle(r,\"g\",\"legend\",(function(t){d||t.attr(\"pointer-events\",\"all\")})),E=i.ensureSingleById(f._topdefs,\"clipPath\",h,(function(t){t.append(\"rect\")})),L=i.ensureSingle(T,\"rect\",\"bg\",(function(t){t.attr(\"shape-rendering\",\"crispEdges\")}));L.call(u.stroke,e.bordercolor).call(u.fill,e.bgcolor).style(\"stroke-width\",e.borderwidth+\"px\");var C=i.ensureSingle(T,\"g\",\"scrollbox\"),P=e.title;if(e._titleWidth=0,e._titleHeight=0,P.text){var I=i.ensureSingle(C,\"text\",\"legendtitletext\");I.attr(\"text-anchor\",\"start\").call(c.font,P.font).text(P.text),A(I,C,t,e,1)}else C.selectAll(\".legendtitletext\").remove();var O=i.ensureSingle(T,\"rect\",\"scrollbar\",(function(t){t.attr(p.scrollBarEnterAttrs).call(u.fill,p.scrollBarColor)})),z=C.selectAll(\"g.groups\").data(s);z.enter().append(\"g\").attr(\"class\",\"groups\"),z.exit().remove();var D=z.selectAll(\"g.traces\").data(i.identity);D.enter().append(\"g\").attr(\"class\",\"traces\"),D.exit().remove(),D.style(\"opacity\",(function(t){var e=t[0].trace;return o.traceIs(e,\"pie-like\")?-1!==g.indexOf(t[0].label)?.5:1:\"legendonly\"===e.visible?.5:1})).each((function(){n.select(this).call(w,t,e)})).call(x,t,e).each((function(){d||n.select(this).call(k,t)})),i.syncOrAsync([a.previousPromises,function(){return function(t,e,r,i){var a=t._fullLayout;i||(i=a.legend);var o=a._size,s=b.isVertical(i),l=b.isGrouped(i),u=i.borderwidth,f=2*u,h=p.itemGap,d=i.itemwidth+2*h,g=2*(u+h),m=S(i),v=i.y<0||0===i.y&&\"top\"===m,y=i.y>1||1===i.y&&\"bottom\"===m,x=i.tracegroupgap;i._maxHeight=Math.max(v||y?a.height/2:o.h,30);var _=0;i._width=0,i._height=0;var w=function(t){var e=0,r=0,n=t.title.side;n&&(-1!==n.indexOf(\"left\")&&(e=t._titleWidth),-1!==n.indexOf(\"top\")&&(r=t._titleHeight));return[e,r]}(i);if(s)r.each((function(t){var e=t[0].height;c.setTranslate(this,u+w[0],u+w[1]+i._height+e/2+h),i._height+=e,i._width=Math.max(i._width,t[0].width)})),_=d+i._width,i._width+=h+d+f,i._height+=g,l&&(e.each((function(t,e){c.setTranslate(this,0,e*i.tracegroupgap)})),i._height+=(i._lgroupsLength-1)*i.tracegroupgap);else{var T=M(i),k=i.x<0||0===i.x&&\"right\"===T,A=i.x>1||1===i.x&&\"left\"===T,E=y||v,L=a.width/2;i._maxWidth=Math.max(k?E&&\"left\"===T?o.l+o.w:L:A?E&&\"right\"===T?o.r+o.w:L:o.w,2*d);var C=0,P=0;r.each((function(t){var e=t[0].width+d;C=Math.max(C,e),P+=e})),_=null;var I=0;if(l){var O=0,z=0,D=0;e.each((function(){var t=0,e=0;n.select(this).selectAll(\"g.traces\").each((function(r){var n=r[0].width,i=r[0].height;c.setTranslate(this,w[0],w[1]+u+h+i/2+e),e+=i,t=Math.max(t,d+n)}));var r=t+h;z>0&&r+u+z>i._maxWidth?(I=Math.max(I,z),z=0,D+=O+x,O=e):O=Math.max(O,e),c.setTranslate(this,z,D),z+=r})),i._width=Math.max(I,z)+u,i._height=D+O+g}else{var R=r.size(),F=P+f+(R-1)*h=i._maxWidth&&(I=Math.max(I,U),N=0,j+=B,i._height+=B,B=0),c.setTranslate(this,w[0]+u+N,w[1]+u+j+e/2+h),U=N+r+h,N+=n,B=Math.max(B,e)})),F?(i._width=N+f,i._height=B+g):(i._width=Math.max(I,U)+f,i._height+=B+g)}}i._width=Math.ceil(Math.max(i._width+w[0],i._titleWidth+2*(u+p.titlePad))),i._height=Math.ceil(Math.max(i._height+w[1],i._titleHeight+2*(u+p.itemGap))),i._effHeight=Math.min(i._height,i._maxHeight);var V=t._context.edits,H=V.legendText||V.legendPosition;r.each((function(t){var e=n.select(this).select(\".legendtoggle\"),r=t[0].height,i=H?d:_||d+t[0].width;s||(i+=h/2),c.setRect(e,0,-r/2,i,r)}))}(t,z,D,e)},function(){var s,u,g,y,x=f._size,b=e.borderwidth;if(!d){if(function(t){var e=t._fullLayout.legend,r=M(e),n=S(e);return a.autoMargin(t,\"legend\",{x:e.x,y:e.y,l:e._width*m[r],r:e._width*v[r],b:e._effHeight*v[n],t:e._effHeight*m[n]})}(t))return;var w=x.l+x.w*e.x-m[M(e)]*e._width,k=x.t+x.h*(1-e.y)-m[S(e)]*e._effHeight;if(f.margin.autoexpand){var A=w,P=k;w=i.constrain(w,0,f.width-e._width),k=i.constrain(k,0,f.height-e._effHeight),w!==A&&i.log(\"Constrain legend.x to make legend fit inside graph\"),k!==P&&i.log(\"Constrain legend.y to make legend fit inside graph\")}c.setTranslate(T,w,k)}if(O.on(\".drag\",null),T.on(\"wheel\",null),d||e._height<=e._maxHeight||t._context.staticPlot){var I=e._effHeight;d&&(I=e._height),L.attr({width:e._width-b,height:I-b,x:b/2,y:b/2}),c.setTranslate(C,0,0),E.select(\"rect\").attr({width:e._width-2*b,height:I-2*b,x:b,y:b}),c.setClipUrl(C,h,t),c.setRect(O,0,0,0,0),delete e._scrollY}else{var z,D,R,F=Math.max(p.scrollBarMinHeight,e._effHeight*e._effHeight/e._height),B=e._effHeight-F-2*p.scrollBarMargin,N=e._height-e._effHeight,j=B/N,U=Math.min(e._scrollY||0,N);L.attr({width:e._width-2*b+p.scrollBarWidth+p.scrollBarMargin,height:e._effHeight-b,x:b/2,y:b/2}),E.select(\"rect\").attr({width:e._width-2*b+p.scrollBarWidth+p.scrollBarMargin,height:e._effHeight-2*b,x:b,y:b+U}),c.setClipUrl(C,h,t),q(U,F,j),T.on(\"wheel\",(function(){q(U=i.constrain(e._scrollY+n.event.deltaY/B*N,0,N),F,j),0!==U&&U!==N&&n.event.preventDefault()}));var V=n.behavior.drag().on(\"dragstart\",(function(){var t=n.event.sourceEvent;z=\"touchstart\"===t.type?t.changedTouches[0].clientY:t.clientY,R=U})).on(\"drag\",(function(){var t=n.event.sourceEvent;2===t.buttons||t.ctrlKey||(D=\"touchmove\"===t.type?t.changedTouches[0].clientY:t.clientY,q(U=function(t,e,r){var n=(r-e)/j+t;return i.constrain(n,0,N)}(R,z,D),F,j))}));O.call(V);var H=n.behavior.drag().on(\"dragstart\",(function(){var t=n.event.sourceEvent;\"touchstart\"===t.type&&(z=t.changedTouches[0].clientY,R=U)})).on(\"drag\",(function(){var t=n.event.sourceEvent;\"touchmove\"===t.type&&(D=t.changedTouches[0].clientY,q(U=function(t,e,r){var n=(e-r)/j+t;return i.constrain(n,0,N)}(R,z,D),F,j))}));C.call(H)}function q(r,n,i){e._scrollY=t._fullLayout.legend._scrollY=r,c.setTranslate(C,0,-r),c.setRect(O,e._width,p.scrollBarMargin+r*i,p.scrollBarWidth,n),E.select(\"rect\").attr(\"y\",b+r)}t._context.edits.legendPosition&&(T.classed(\"cursor-move\",!0),l.init({element:T.node(),gd:t,prepFn:function(){var t=c.getTranslate(T);g=t.x,y=t.y},moveFn:function(t,r){var n=g+t,i=y+r;c.setTranslate(T,n,i),s=l.align(n,0,x.l,x.l+x.w,e.xanchor),u=l.align(i,0,x.t+x.h,x.t,e.yanchor)},doneFn:function(){void 0!==s&&void 0!==u&&o.call(\"_guiRelayout\",t,{\"legend.x\":s,\"legend.y\":u})},clickFn:function(e,n){var i=r.selectAll(\"g.traces\").filter((function(){var t=this.getBoundingClientRect();return n.clientX>=t.left&&n.clientX<=t.right&&n.clientY>=t.top&&n.clientY<=t.bottom}));i.size()>0&&_(t,T,i,e,n)}}))}],t)}(t,e)}},{\"../../constants/alignment\":471,\"../../lib\":503,\"../../lib/events\":492,\"../../lib/svg_text_utils\":529,\"../../plots/plots\":619,\"../../registry\":638,\"../color\":366,\"../dragelement\":385,\"../drawing\":388,\"./constants\":417,\"./get_legend_data\":420,\"./handle_click\":421,\"./helpers\":422,\"./style\":424,\"@plotly/d3\":58}],420:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"./helpers\");e.exports=function(t,e){var r,a,o=e._inHover,s=i.isGrouped(e),l=i.isReversed(e),c={},u=[],f=!1,h={},p=0,d=0;function g(t,r){if(\"\"!==t&&i.isGrouped(e))-1===u.indexOf(t)?(u.push(t),f=!0,c[t]=[r]):c[t].push(r);else{var n=\"~~i\"+p;u.push(n),c[n]=[r],p++}}for(r=0;rA&&(k=A)}w[r][0]._groupMinRank=k,w[r][0]._preGroupSort=r}var M=function(t,e){return t.trace.legendrank-e.trace.legendrank||t._preSort-e._preSort};for(w.forEach((function(t,e){t[0]._preGroupSort=e})),w.sort((function(t,e){return t[0]._groupMinRank-e[0]._groupMinRank||t[0]._preGroupSort-e[0]._preGroupSort})),r=0;rr?r:t}e.exports=function(t,e,r){var v=e._fullLayout;r||(r=v.legend);var y=\"constant\"===r.itemsizing,x=r.itemwidth,b=(x+2*p.itemGap)/2,_=o(b,0),w=function(t,e,r,n){var i;if(t+1)i=t;else{if(!(e&&e.width>0))return 0;i=e.width}return y?n:Math.min(i,r)};function T(t,a,o){var u=t[0].trace,f=u.marker||{},h=f.line||{},p=o?u.visible&&u.type===o:i.traceIs(u,\"bar\"),d=n.select(a).select(\"g.legendpoints\").selectAll(\"path.legend\"+o).data(p?[t]:[]);d.enter().append(\"path\").classed(\"legend\"+o,!0).attr(\"d\",\"M6,6H-6V-6H6Z\").attr(\"transform\",_),d.exit().remove(),d.each((function(t){var i=n.select(this),a=t[0],o=w(a.mlw,f.line,5,2);i.style(\"stroke-width\",o+\"px\");var p=a.mcc;if(!r._inHover&&\"mc\"in a){var d=c(f),g=d.mid;void 0===g&&(g=(d.max+d.min)/2),p=s.tryColorscale(f,\"\")(g)}var v=p||a.mc||f.color,y=f.pattern,x=y&&s.getPatternAttr(y.shape,0,\"\");if(x){var b=s.getPatternAttr(y.bgcolor,0,null),_=s.getPatternAttr(y.fgcolor,0,null),T=y.fgopacity,k=m(y.size,8,10),A=m(y.solidity,.5,1),M=\"legend-\"+u.uid;i.call(s.pattern,\"legend\",e,M,x,k,A,p,y.fillmode,b,_,T)}else i.call(l.fill,v);o&&l.stroke(i,a.mlc||h.color)}))}function k(t,e,r){var o=t[0],s=o.trace,l=r?s.visible&&s.type===r:i.traceIs(s,r),c=n.select(e).select(\"g.legendpoints\").selectAll(\"path.legend\"+r).data(l?[t]:[]);if(c.enter().append(\"path\").classed(\"legend\"+r,!0).attr(\"d\",\"M6,6H-6V-6H6Z\").attr(\"transform\",_),c.exit().remove(),c.size()){var u=(s.marker||{}).line,p=w(h(u.width,o.pts),u,5,2),d=a.minExtend(s,{marker:{line:{width:p}}});d.marker.line.color=u.color;var g=a.minExtend(o,{trace:d});f(c,g,d)}}t.each((function(t){var e=n.select(this),i=a.ensureSingle(e,\"g\",\"layers\");i.style(\"opacity\",t[0].trace.opacity);var s=r.valign,l=t[0].lineHeight,c=t[0].height;if(\"middle\"!==s&&l&&c){var u={top:1,bottom:-1}[s]*(.5*(l-c+3));i.attr(\"transform\",o(0,u))}else i.attr(\"transform\",null);i.selectAll(\"g.legendfill\").data([t]).enter().append(\"g\").classed(\"legendfill\",!0),i.selectAll(\"g.legendlines\").data([t]).enter().append(\"g\").classed(\"legendlines\",!0);var f=i.selectAll(\"g.legendsymbols\").data([t]);f.enter().append(\"g\").classed(\"legendsymbols\",!0),f.selectAll(\"g.legendpoints\").data([t]).enter().append(\"g\").classed(\"legendpoints\",!0)})).each((function(t){var r,i=t[0].trace,o=[];if(i.visible)switch(i.type){case\"histogram2d\":case\"heatmap\":o=[[\"M-15,-2V4H15V-2Z\"]],r=!0;break;case\"choropleth\":case\"choroplethmapbox\":o=[[\"M-6,-6V6H6V-6Z\"]],r=!0;break;case\"densitymapbox\":o=[[\"M-6,0 a6,6 0 1,0 12,0 a 6,6 0 1,0 -12,0\"]],r=\"radial\";break;case\"cone\":o=[[\"M-6,2 A2,2 0 0,0 -6,6 V6L6,4Z\"],[\"M-6,-6 A2,2 0 0,0 -6,-2 L6,-4Z\"],[\"M-6,-2 A2,2 0 0,0 -6,2 L6,0Z\"]],r=!1;break;case\"streamtube\":o=[[\"M-6,2 A2,2 0 0,0 -6,6 H6 A2,2 0 0,1 6,2 Z\"],[\"M-6,-6 A2,2 0 0,0 -6,-2 H6 A2,2 0 0,1 6,-6 Z\"],[\"M-6,-2 A2,2 0 0,0 -6,2 H6 A2,2 0 0,1 6,-2 Z\"]],r=!1;break;case\"surface\":o=[[\"M-6,-6 A2,3 0 0,0 -6,0 H6 A2,3 0 0,1 6,-6 Z\"],[\"M-6,1 A2,3 0 0,1 -6,6 H6 A2,3 0 0,0 6,0 Z\"]],r=!0;break;case\"mesh3d\":o=[[\"M-6,6H0L-6,-6Z\"],[\"M6,6H0L6,-6Z\"],[\"M-6,-6H6L0,6Z\"]],r=!1;break;case\"volume\":o=[[\"M-6,6H0L-6,-6Z\"],[\"M6,6H0L6,-6Z\"],[\"M-6,-6H6L0,6Z\"]],r=!0;break;case\"isosurface\":o=[[\"M-6,6H0L-6,-6Z\"],[\"M6,6H0L6,-6Z\"],[\"M-6,-6 A12,24 0 0,0 6,-6 L0,6Z\"]],r=!1}var u=n.select(this).select(\"g.legendpoints\").selectAll(\"path.legend3dandfriends\").data(o);u.enter().append(\"path\").classed(\"legend3dandfriends\",!0).attr(\"transform\",_).style(\"stroke-miterlimit\",1),u.exit().remove(),u.each((function(t,o){var u,f=n.select(this),h=c(i),p=h.colorscale,g=h.reversescale;if(p){if(!r){var m=p.length;u=0===o?p[g?m-1:0][1]:1===o?p[g?0:m-1][1]:p[Math.floor((m-1)/2)][1]}}else{var v=i.vertexcolor||i.facecolor||i.color;u=a.isArrayOrTypedArray(v)?v[o]||v[0]:v}f.attr(\"d\",t[0]),u?f.call(l.fill,u):f.call((function(t){if(t.size()){var n=\"legendfill-\"+i.uid;s.gradient(t,e,n,d(g,\"radial\"===r),p,\"fill\")}}))}))})).each((function(t){var e=t[0].trace,r=\"waterfall\"===e.type;if(t[0]._distinct&&r){var i=t[0].trace[t[0].dir].marker;return t[0].mc=i.color,t[0].mlw=i.line.width,t[0].mlc=i.line.color,T(t,this,\"waterfall\")}var a=[];e.visible&&r&&(a=t[0].hasTotals?[[\"increasing\",\"M-6,-6V6H0Z\"],[\"totals\",\"M6,6H0L-6,-6H-0Z\"],[\"decreasing\",\"M6,6V-6H0Z\"]]:[[\"increasing\",\"M-6,-6V6H6Z\"],[\"decreasing\",\"M6,6V-6H-6Z\"]]);var o=n.select(this).select(\"g.legendpoints\").selectAll(\"path.legendwaterfall\").data(a);o.enter().append(\"path\").classed(\"legendwaterfall\",!0).attr(\"transform\",_).style(\"stroke-miterlimit\",1),o.exit().remove(),o.each((function(t){var r=n.select(this),i=e[t[0]].marker,a=w(void 0,i.line,5,2);r.attr(\"d\",t[1]).style(\"stroke-width\",a+\"px\").call(l.fill,i.color),a&&r.call(l.stroke,i.line.color)}))})).each((function(t){T(t,this,\"funnel\")})).each((function(t){T(t,this)})).each((function(t){var r=t[0].trace,o=n.select(this).select(\"g.legendpoints\").selectAll(\"path.legendbox\").data(r.visible&&i.traceIs(r,\"box-violin\")?[t]:[]);o.enter().append(\"path\").classed(\"legendbox\",!0).attr(\"d\",\"M6,6H-6V-6H6Z\").attr(\"transform\",_),o.exit().remove(),o.each((function(){var t=n.select(this);if(\"all\"!==r.boxpoints&&\"all\"!==r.points||0!==l.opacity(r.fillcolor)||0!==l.opacity((r.line||{}).color)){var i=w(void 0,r.line,5,2);t.style(\"stroke-width\",i+\"px\").call(l.fill,r.fillcolor),i&&l.stroke(t,r.line.color)}else{var c=a.minExtend(r,{marker:{size:y?12:a.constrain(r.marker.size,2,16),sizeref:1,sizemin:1,sizemode:\"diameter\"}});o.call(s.pointStyle,c,e)}}))})).each((function(t){k(t,this,\"funnelarea\")})).each((function(t){k(t,this,\"pie\")})).each((function(t){var r,i,o=g(t),l=o.showFill,f=o.showLine,h=o.showGradientLine,p=o.showGradientFill,m=o.anyFill,v=o.anyLine,y=t[0],b=y.trace,_=c(b),T=_.colorscale,k=_.reversescale,A=u.hasMarkers(b)||!m?\"M5,0\":v?\"M5,-2\":\"M5,-3\",M=n.select(this),S=M.select(\".legendfill\").selectAll(\"path\").data(l||p?[t]:[]);if(S.enter().append(\"path\").classed(\"js-fill\",!0),S.exit().remove(),S.attr(\"d\",A+\"h\"+x+\"v6h-\"+x+\"z\").call(l?s.fillGroupStyle:function(t){if(t.size()){var r=\"legendfill-\"+b.uid;s.gradient(t,e,r,d(k),T,\"fill\")}}),f||h){var E=w(void 0,b.line,10,5);i=a.minExtend(b,{line:{width:E}}),r=[a.minExtend(y,{trace:i})]}var L=M.select(\".legendlines\").selectAll(\"path\").data(f||h?[r]:[]);L.enter().append(\"path\").classed(\"js-line\",!0),L.exit().remove(),L.attr(\"d\",A+(h?\"l\"+x+\",0.0001\":\"h\"+x)).call(f?s.lineGroupStyle:function(t){if(t.size()){var r=\"legendline-\"+b.uid;s.lineGroupStyle(t),s.gradient(t,e,r,d(k),T,\"stroke\")}})})).each((function(t){var r,i,o=g(t),l=o.anyFill,c=o.anyLine,f=o.showLine,h=o.showMarker,p=t[0],d=p.trace,m=!h&&!c&&!l&&u.hasText(d);function v(t,e,r,n){var i=a.nestedProperty(d,t).get(),o=a.isArrayOrTypedArray(i)&&e?e(i):i;if(y&&o&&void 0!==n&&(o=n),r){if(or[1])return r[1]}return o}function x(t){return p._distinct&&p.index&&t[p.index]?t[p.index]:t[0]}if(h||m||f){var b={},w={};if(h){b.mc=v(\"marker.color\",x),b.mx=v(\"marker.symbol\",x),b.mo=v(\"marker.opacity\",a.mean,[.2,1]),b.mlc=v(\"marker.line.color\",x),b.mlw=v(\"marker.line.width\",a.mean,[0,5],2),w.marker={sizeref:1,sizemin:1,sizemode:\"diameter\"};var T=v(\"marker.size\",a.mean,[2,16],12);b.ms=T,w.marker.size=T}f&&(w.line={width:v(\"line.width\",x,[0,10],5)}),m&&(b.tx=\"Aa\",b.tp=v(\"textposition\",x),b.ts=10,b.tc=v(\"textfont.color\",x),b.tf=v(\"textfont.family\",x)),r=[a.minExtend(p,b)],(i=a.minExtend(d,w)).selectedpoints=null,i.texttemplate=null}var k=n.select(this).select(\"g.legendpoints\"),A=k.selectAll(\"path.scatterpts\").data(h?r:[]);A.enter().insert(\"path\",\":first-child\").classed(\"scatterpts\",!0).attr(\"transform\",_),A.exit().remove(),A.call(s.pointStyle,i,e),h&&(r[0].mrc=3);var M=k.selectAll(\"g.pointtext\").data(m?r:[]);M.enter().append(\"g\").classed(\"pointtext\",!0).append(\"text\").attr(\"transform\",_),M.exit().remove(),M.selectAll(\"text\").call(s.textPointStyle,i,e)})).each((function(t){var e=t[0].trace,r=n.select(this).select(\"g.legendpoints\").selectAll(\"path.legendcandle\").data(e.visible&&\"candlestick\"===e.type?[t,t]:[]);r.enter().append(\"path\").classed(\"legendcandle\",!0).attr(\"d\",(function(t,e){return e?\"M-15,0H-8M-8,6V-6H8Z\":\"M15,0H8M8,-6V6H-8Z\"})).attr(\"transform\",_).style(\"stroke-miterlimit\",1),r.exit().remove(),r.each((function(t,r){var i=n.select(this),a=e[r?\"increasing\":\"decreasing\"],o=w(void 0,a.line,5,2);i.style(\"stroke-width\",o+\"px\").call(l.fill,a.fillcolor),o&&l.stroke(i,a.line.color)}))})).each((function(t){var e=t[0].trace,r=n.select(this).select(\"g.legendpoints\").selectAll(\"path.legendohlc\").data(e.visible&&\"ohlc\"===e.type?[t,t]:[]);r.enter().append(\"path\").classed(\"legendohlc\",!0).attr(\"d\",(function(t,e){return e?\"M-15,0H0M-8,-6V0\":\"M15,0H0M8,6V0\"})).attr(\"transform\",_).style(\"stroke-miterlimit\",1),r.exit().remove(),r.each((function(t,r){var i=n.select(this),a=e[r?\"increasing\":\"decreasing\"],o=w(void 0,a.line,5,2);i.style(\"fill\",\"none\").call(s.dashLine,a.line.dash,o),o&&l.stroke(i,a.line.color)}))}))}},{\"../../lib\":503,\"../../registry\":638,\"../../traces/pie/helpers\":905,\"../../traces/pie/style_one\":911,\"../../traces/scatter/subtypes\":951,\"../color\":366,\"../colorscale/helpers\":377,\"../drawing\":388,\"./constants\":417,\"@plotly/d3\":58}],425:[function(t,e,r){\"use strict\";t(\"./constants\");e.exports={editType:\"modebar\",orientation:{valType:\"enumerated\",values:[\"v\",\"h\"],dflt:\"h\",editType:\"modebar\"},bgcolor:{valType:\"color\",editType:\"modebar\"},color:{valType:\"color\",editType:\"modebar\"},activecolor:{valType:\"color\",editType:\"modebar\"},uirevision:{valType:\"any\",editType:\"none\"},add:{valType:\"string\",arrayOk:!0,dflt:\"\",editType:\"modebar\"},remove:{valType:\"string\",arrayOk:!0,dflt:\"\",editType:\"modebar\"}}},{\"./constants\":427}],426:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../plots/plots\"),a=t(\"../../plots/cartesian/axis_ids\"),o=t(\"../../fonts/ploticon\"),s=t(\"../shapes/draw\").eraseActiveShape,l=t(\"../../lib\"),c=l._,u=e.exports={};function f(t,e){var r,i,o=e.currentTarget,s=o.getAttribute(\"data-attr\"),l=o.getAttribute(\"data-val\")||!0,c=t._fullLayout,u={},f=a.list(t,null,!0),h=c._cartesianSpikesEnabled;if(\"zoom\"===s){var p,d=\"in\"===l?.5:2,g=(1+d)/2,m=(1-d)/2;for(i=0;i1?(I=[\"toggleHover\"],O=[\"resetViews\"]):v?(P=[\"zoomInGeo\",\"zoomOutGeo\"],I=[\"hoverClosestGeo\"],O=[\"resetGeo\"]):m?(I=[\"hoverClosest3d\"],O=[\"resetCameraDefault3d\",\"resetCameraLastSave3d\"]):w?(P=[\"zoomInMapbox\",\"zoomOutMapbox\"],I=[\"toggleHover\"],O=[\"resetViewMapbox\"]):b?I=[\"hoverClosestGl2d\"]:y?I=[\"hoverClosestPie\"]:A?(I=[\"hoverClosestCartesian\",\"hoverCompareCartesian\"],O=[\"resetViewSankey\"]):I=[\"toggleHover\"];g&&(I=[\"toggleSpikelines\",\"hoverClosestCartesian\",\"hoverCompareCartesian\"]);(function(t){for(var e=0;e0)){var g=function(t,e,r){for(var n=r.filter((function(r){return e[r].anchor===t._id})),i=0,a=0;a=n.max)e=F[r+1];else if(t=n.pmax)e=F[r+1];else if(t0?h+c:c;return{ppad:c,ppadplus:u?d:g,ppadminus:u?g:d}}return{ppad:c}}function u(t,e,r,n,i){var s=\"category\"===t.type||\"multicategory\"===t.type?t.r2c:t.d2c;if(void 0!==e)return[s(e),s(r)];if(n){var l,c,u,f,h=1/0,p=-1/0,d=n.match(a.segmentRE);for(\"date\"===t.type&&(s=o.decodeDate(s)),l=0;lp&&(p=f)));return p>=h?[h,p]:void 0}}e.exports=function(t){var e=t._fullLayout,r=n.filterVisible(e.shapes);if(r.length&&t._fullData.length)for(var o=0;oy?(k=f,E=\"y0\",A=y,L=\"y1\"):(k=y,E=\"y1\",A=f,L=\"y0\");Z(n),Q(s,r),function(t,e,r){var n=e.xref,i=e.yref,o=a.getFromId(r,n),s=a.getFromId(r,i),l=\"\";\"paper\"===n||o.autorange||(l+=n);\"paper\"===i||s.autorange||(l+=i);u.setClipUrl(t,l?\"clip\"+r._fullLayout._uid+l:null,r)}(e,r,t),X.moveFn=\"move\"===O?J:K,X.altKey=n.altKey},doneFn:function(){if(v(t))return;p(e),$(s),b(e,t,r),n.call(\"_guiRelayout\",t,l.getUpdateObj())},clickFn:function(){if(v(t))return;$(s)}};function Z(r){if(v(t))O=null;else if(R)O=\"path\"===r.target.tagName?\"move\":\"start-point\"===r.target.attributes[\"data-line-point\"].value?\"resize-over-start-point\":\"resize-over-end-point\";else{var n=X.element.getBoundingClientRect(),i=n.right-n.left,a=n.bottom-n.top,o=r.clientX-n.left,s=r.clientY-n.top,l=!F&&i>10&&a>10&&!r.shiftKey?h.getCursor(o/i,1-s/a):\"move\";p(e,l),O=l.split(\"-\")[0]}}function J(n,i){if(\"path\"===r.type){var a=function(t){return t},o=a,l=a;z?B(\"xanchor\",r.xanchor=G(x+n)):(o=function(t){return G(H(t)+n)},N&&\"date\"===N.type&&(o=g.encodeDate(o))),D?B(\"yanchor\",r.yanchor=Y(T+i)):(l=function(t){return Y(q(t)+i)},U&&\"date\"===U.type&&(l=g.encodeDate(l))),B(\"path\",r.path=w(I,o,l))}else z?B(\"xanchor\",r.xanchor=G(x+n)):(B(\"x0\",r.x0=G(c+n)),B(\"x1\",r.x1=G(m+n))),D?B(\"yanchor\",r.yanchor=Y(T+i)):(B(\"y0\",r.y0=Y(f+i)),B(\"y1\",r.y1=Y(y+i)));e.attr(\"d\",_(t,r)),Q(s,r)}function K(n,i){if(F){var a=function(t){return t},o=a,l=a;z?B(\"xanchor\",r.xanchor=G(x+n)):(o=function(t){return G(H(t)+n)},N&&\"date\"===N.type&&(o=g.encodeDate(o))),D?B(\"yanchor\",r.yanchor=Y(T+i)):(l=function(t){return Y(q(t)+i)},U&&\"date\"===U.type&&(l=g.encodeDate(l))),B(\"path\",r.path=w(I,o,l))}else if(R){if(\"resize-over-start-point\"===O){var u=c+n,h=D?f-i:f+i;B(\"x0\",r.x0=z?u:G(u)),B(\"y0\",r.y0=D?h:Y(h))}else if(\"resize-over-end-point\"===O){var p=m+n,d=D?y-i:y+i;B(\"x1\",r.x1=z?p:G(p)),B(\"y1\",r.y1=D?d:Y(d))}}else{var v=function(t){return-1!==O.indexOf(t)},b=v(\"n\"),j=v(\"s\"),V=v(\"w\"),W=v(\"e\"),X=b?k+i:k,Z=j?A+i:A,J=V?M+n:M,K=W?S+n:S;D&&(b&&(X=k-i),j&&(Z=A-i)),(!D&&Z-X>10||D&&X-Z>10)&&(B(E,r[E]=D?X:Y(X)),B(L,r[L]=D?Z:Y(Z))),K-J>10&&(B(C,r[C]=z?J:G(J)),B(P,r[P]=z?K:G(K)))}e.attr(\"d\",_(t,r)),Q(s,r)}function Q(t,e){(z||D)&&function(){var r=\"path\"!==e.type,n=t.selectAll(\".visual-cue\").data([0]);n.enter().append(\"path\").attr({fill:\"#fff\",\"fill-rule\":\"evenodd\",stroke:\"#000\",\"stroke-width\":1}).classed(\"visual-cue\",!0);var a=H(z?e.xanchor:i.midRange(r?[e.x0,e.x1]:g.extractPathCoords(e.path,d.paramIsX))),o=q(D?e.yanchor:i.midRange(r?[e.y0,e.y1]:g.extractPathCoords(e.path,d.paramIsY)));if(a=g.roundPositionForSharpStrokeRendering(a,1),o=g.roundPositionForSharpStrokeRendering(o,1),z&&D){var s=\"M\"+(a-1-1)+\",\"+(o-1-1)+\"h-8v2h8 v8h2v-8 h8v-2h-8 v-8h-2 Z\";n.attr(\"d\",s)}else if(z){var l=\"M\"+(a-1-1)+\",\"+(o-9-1)+\"v18 h2 v-18 Z\";n.attr(\"d\",l)}else{var c=\"M\"+(a-9-1)+\",\"+(o-1-1)+\"h18 v2 h-18 Z\";n.attr(\"d\",c)}}()}function $(t){t.selectAll(\".visual-cue\").remove()}h.init(X),W.node().onmousemove=Z}(t,z,l,e,r,O):!0===l.editable&&z.style(\"pointer-events\",P||c.opacity(S)*M<=.5?\"stroke\":\"all\");z.node().addEventListener(\"click\",(function(){return function(t,e){if(!y(t))return;var r=+e.node().getAttribute(\"data-index\");if(r>=0){if(r===t._fullLayout._activeShapeIndex)return void T(t);t._fullLayout._activeShapeIndex=r,t._fullLayout._deactivateShape=T,m(t)}}(t,z)}))}}function b(t,e,r){var n=(r.xref+r.yref).replace(/paper/g,\"\").replace(/[xyz][1-9]* *domain/g,\"\");u.setClipUrl(t,n?\"clip\"+e._fullLayout._uid+n:null,e)}function _(t,e){var r,n,o,s,l,c,u,f,h=e.type,p=a.getRefType(e.xref),m=a.getRefType(e.yref),v=a.getFromId(t,e.xref),y=a.getFromId(t,e.yref),x=t._fullLayout._size;if(v?\"domain\"===p?n=function(t){return v._offset+v._length*t}:(r=g.shapePositionToRange(v),n=function(t){return v._offset+v.r2p(r(t,!0))}):n=function(t){return x.l+x.w*t},y?\"domain\"===m?s=function(t){return y._offset+y._length*(1-t)}:(o=g.shapePositionToRange(y),s=function(t){return y._offset+y.r2p(o(t,!0))}):s=function(t){return x.t+x.h*(1-t)},\"path\"===h)return v&&\"date\"===v.type&&(n=g.decodeDate(n)),y&&\"date\"===y.type&&(s=g.decodeDate(s)),function(t,e,r){var n=t.path,a=t.xsizemode,o=t.ysizemode,s=t.xanchor,l=t.yanchor;return n.replace(d.segmentRE,(function(t){var n=0,c=t.charAt(0),u=d.paramIsX[c],f=d.paramIsY[c],h=d.numParams[c],p=t.substr(1).replace(d.paramRE,(function(t){return u[n]?t=\"pixel\"===a?e(s)+Number(t):e(t):f[n]&&(t=\"pixel\"===o?r(l)-Number(t):r(t)),++n>h&&(t=\"X\"),t}));return n>h&&(p=p.replace(/[\\s,]*X.*/,\"\"),i.log(\"Ignoring extra params in segment \"+t)),c+p}))}(e,n,s);if(\"pixel\"===e.xsizemode){var b=n(e.xanchor);l=b+e.x0,c=b+e.x1}else l=n(e.x0),c=n(e.x1);if(\"pixel\"===e.ysizemode){var _=s(e.yanchor);u=_-e.y0,f=_-e.y1}else u=s(e.y0),f=s(e.y1);if(\"line\"===h)return\"M\"+l+\",\"+u+\"L\"+c+\",\"+f;if(\"rect\"===h)return\"M\"+l+\",\"+u+\"H\"+c+\"V\"+f+\"H\"+l+\"Z\";var w=(l+c)/2,T=(u+f)/2,k=Math.abs(w-l),A=Math.abs(T-u),M=\"A\"+k+\",\"+A,S=w+k+\",\"+T;return\"M\"+S+M+\" 0 1,1 \"+(w+\",\"+(T-A))+M+\" 0 0,1 \"+S+\"Z\"}function w(t,e,r){return t.replace(d.segmentRE,(function(t){var n=0,i=t.charAt(0),a=d.paramIsX[i],o=d.paramIsY[i],s=d.numParams[i];return i+t.substr(1).replace(d.paramRE,(function(t){return n>=s||(a[n]?t=e(t):o[n]&&(t=r(t)),n++),t}))}))}function T(t){y(t)&&(t._fullLayout._activeShapeIndex>=0&&(l(t),delete t._fullLayout._activeShapeIndex,m(t)))}e.exports={draw:m,drawOne:x,eraseActiveShape:function(t){if(!y(t))return;l(t);var e=t._fullLayout._activeShapeIndex,r=(t.layout||{}).shapes||[];if(e=0&&f(v),r.attr(\"d\",g(e)),A&&!h)&&(k=function(t,e){for(var r=0;r1&&(2!==t.length||\"Z\"!==t[1][0])&&(0===T&&(t[0][0]=\"M\"),e[w]=t,y(),x())}}()}}function I(t,r){!function(t,r){if(e.length)for(var n=0;n0&&l0&&(s=s.transition().duration(e.transition.duration).ease(e.transition.easing)),s.attr(\"transform\",l(o-.5*f.gripWidth,e._dims.currentValueTotalHeight))}}function E(t,e){var r=t._dims;return r.inputAreaStart+f.stepInset+(r.inputAreaLength-2*f.stepInset)*Math.min(1,Math.max(0,e))}function L(t,e){var r=t._dims;return Math.min(1,Math.max(0,(e-f.stepInset-r.inputAreaStart)/(r.inputAreaLength-2*f.stepInset-2*r.inputAreaStart)))}function C(t,e,r){var n=r._dims,i=s.ensureSingle(t,\"rect\",f.railTouchRectClass,(function(n){n.call(A,e,t,r).style(\"pointer-events\",\"all\")}));i.attr({width:n.inputAreaLength,height:Math.max(n.inputAreaWidth,f.tickOffset+r.ticklen+n.labelHeight)}).call(a.fill,r.bgcolor).attr(\"opacity\",0),o.setTranslate(i,0,n.currentValueTotalHeight)}function P(t,e){var r=e._dims,n=r.inputAreaLength-2*f.railInset,i=s.ensureSingle(t,\"rect\",f.railRectClass);i.attr({width:n,height:f.railWidth,rx:f.railRadius,ry:f.railRadius,\"shape-rendering\":\"crispEdges\"}).call(a.stroke,e.bordercolor).call(a.fill,e.bgcolor).style(\"stroke-width\",e.borderwidth+\"px\"),o.setTranslate(i,f.railInset,.5*(r.inputAreaWidth-f.railWidth)+r.currentValueTotalHeight)}e.exports=function(t){var e=t._fullLayout,r=function(t,e){for(var r=t[f.name],n=[],i=0;i0?[0]:[]);function s(e){e._commandObserver&&(e._commandObserver.remove(),delete e._commandObserver),i.autoMargin(t,m(e))}if(a.enter().append(\"g\").classed(f.containerClassName,!0).style(\"cursor\",\"ew-resize\"),a.exit().each((function(){n.select(this).selectAll(\"g.\"+f.groupClassName).each(s)})).remove(),0!==r.length){var l=a.selectAll(\"g.\"+f.groupClassName).data(r,v);l.enter().append(\"g\").classed(f.groupClassName,!0),l.exit().each(s).remove();for(var c=0;c0||h<0){var v={left:[-d,0],right:[d,0],top:[0,-d],bottom:[0,d]}[b.side];e.attr(\"transform\",l(v[0],v[1]))}}}return R.call(F),O&&(E?R.on(\".opacity\",null):(A=0,M=!0,R.text(y).on(\"mouseover.opacity\",(function(){n.select(this).transition().duration(h.SHOW_PLACEHOLDER).style(\"opacity\",1)})).on(\"mouseout.opacity\",(function(){n.select(this).transition().duration(h.HIDE_PLACEHOLDER).style(\"opacity\",0)}))),R.call(f.makeEditable,{gd:t}).on(\"edit\",(function(e){void 0!==x?o.call(\"_guiRestyle\",t,v,e,x):o.call(\"_guiRelayout\",t,v,e)})).on(\"cancel\",(function(){this.text(this.attr(\"data-unformatted\")).call(F)})).on(\"input\",(function(t){this.text(t||\" \").call(f.positionText,_.x,_.y)}))),R.classed(\"js-placeholder\",M),T}}},{\"../../constants/alignment\":471,\"../../constants/interactions\":478,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../../plots/plots\":619,\"../../registry\":638,\"../color\":366,\"../drawing\":388,\"@plotly/d3\":58,\"fast-isnumeric\":190}],465:[function(t,e,r){\"use strict\";var n=t(\"../../plots/font_attributes\"),i=t(\"../color/attributes\"),a=t(\"../../lib/extend\").extendFlat,o=t(\"../../plot_api/edit_types\").overrideAll,s=t(\"../../plots/pad_attributes\"),l=t(\"../../plot_api/plot_template\").templatedArray,c=l(\"button\",{visible:{valType:\"boolean\"},method:{valType:\"enumerated\",values:[\"restyle\",\"relayout\",\"animate\",\"update\",\"skip\"],dflt:\"restyle\"},args:{valType:\"info_array\",freeLength:!0,items:[{valType:\"any\"},{valType:\"any\"},{valType:\"any\"}]},args2:{valType:\"info_array\",freeLength:!0,items:[{valType:\"any\"},{valType:\"any\"},{valType:\"any\"}]},label:{valType:\"string\",dflt:\"\"},execute:{valType:\"boolean\",dflt:!0}});e.exports=o(l(\"updatemenu\",{_arrayAttrRegexps:[/^updatemenus\\[(0|[1-9][0-9]+)\\]\\.buttons/],visible:{valType:\"boolean\"},type:{valType:\"enumerated\",values:[\"dropdown\",\"buttons\"],dflt:\"dropdown\"},direction:{valType:\"enumerated\",values:[\"left\",\"right\",\"up\",\"down\"],dflt:\"down\"},active:{valType:\"integer\",min:-1,dflt:0},showactive:{valType:\"boolean\",dflt:!0},buttons:c,x:{valType:\"number\",min:-2,max:3,dflt:-.05},xanchor:{valType:\"enumerated\",values:[\"auto\",\"left\",\"center\",\"right\"],dflt:\"right\"},y:{valType:\"number\",min:-2,max:3,dflt:1},yanchor:{valType:\"enumerated\",values:[\"auto\",\"top\",\"middle\",\"bottom\"],dflt:\"top\"},pad:a(s({editType:\"arraydraw\"}),{}),font:n({}),bgcolor:{valType:\"color\"},bordercolor:{valType:\"color\",dflt:i.borderLine},borderwidth:{valType:\"number\",min:0,dflt:1,editType:\"arraydraw\"}}),\"arraydraw\",\"from-root\")},{\"../../lib/extend\":493,\"../../plot_api/edit_types\":536,\"../../plot_api/plot_template\":543,\"../../plots/font_attributes\":585,\"../../plots/pad_attributes\":618,\"../color/attributes\":365}],466:[function(t,e,r){\"use strict\";e.exports={name:\"updatemenus\",containerClassName:\"updatemenu-container\",headerGroupClassName:\"updatemenu-header-group\",headerClassName:\"updatemenu-header\",headerArrowClassName:\"updatemenu-header-arrow\",dropdownButtonGroupClassName:\"updatemenu-dropdown-button-group\",dropdownButtonClassName:\"updatemenu-dropdown-button\",buttonClassName:\"updatemenu-button\",itemRectClassName:\"updatemenu-item-rect\",itemTextClassName:\"updatemenu-item-text\",menuIndexAttrName:\"updatemenu-active-index\",autoMarginIdRoot:\"updatemenu-\",blankHeaderOpts:{label:\" \"},minWidth:30,minHeight:30,textPadX:24,arrowPadX:16,rx:2,ry:2,textOffsetX:12,textOffsetY:3,arrowOffsetX:4,gapButtonHeader:5,gapButton:2,activeColor:\"#F4FAFF\",hoverColor:\"#F4FAFF\",arrowSymbol:{left:\"\\u25c4\",right:\"\\u25ba\",up:\"\\u25b2\",down:\"\\u25bc\"}}},{}],467:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../plots/array_container_defaults\"),a=t(\"./attributes\"),o=t(\"./constants\").name,s=a.buttons;function l(t,e,r){function o(r,i){return n.coerce(t,e,a,r,i)}o(\"visible\",i(t,e,{name:\"buttons\",handleItemDefaults:c}).length>0)&&(o(\"active\"),o(\"direction\"),o(\"type\"),o(\"showactive\"),o(\"x\"),o(\"y\"),n.noneOrAll(t,e,[\"x\",\"y\"]),o(\"xanchor\"),o(\"yanchor\"),o(\"pad.t\"),o(\"pad.r\"),o(\"pad.b\"),o(\"pad.l\"),n.coerceFont(o,\"font\",r.font),o(\"bgcolor\",r.paper_bgcolor),o(\"bordercolor\"),o(\"borderwidth\"))}function c(t,e){function r(r,i){return n.coerce(t,e,s,r,i)}r(\"visible\",\"skip\"===t.method||Array.isArray(t.args))&&(r(\"method\"),r(\"args\"),r(\"args2\"),r(\"label\"),r(\"execute\"))}e.exports=function(t,e){i(t,e,{name:o,handleItemDefaults:l})}},{\"../../lib\":503,\"../../plots/array_container_defaults\":549,\"./attributes\":465,\"./constants\":466}],468:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../plots/plots\"),a=t(\"../color\"),o=t(\"../drawing\"),s=t(\"../../lib\"),l=t(\"../../lib/svg_text_utils\"),c=t(\"../../plot_api/plot_template\").arrayEditor,u=t(\"../../constants/alignment\").LINE_SPACING,f=t(\"./constants\"),h=t(\"./scrollbox\");function p(t){return t._index}function d(t,e){return+t.attr(f.menuIndexAttrName)===e._index}function g(t,e,r,n,i,a,o,s){e.active=o,c(t.layout,f.name,e).applyUpdate(\"active\",o),\"buttons\"===e.type?v(t,n,null,null,e):\"dropdown\"===e.type&&(i.attr(f.menuIndexAttrName,\"-1\"),m(t,n,i,a,e),s||v(t,n,i,a,e))}function m(t,e,r,n,i){var a=s.ensureSingle(e,\"g\",f.headerClassName,(function(t){t.style(\"pointer-events\",\"all\")})),l=i._dims,c=i.active,u=i.buttons[c]||f.blankHeaderOpts,h={y:i.pad.t,yPad:0,x:i.pad.l,xPad:0,index:0},p={width:l.headerWidth,height:l.headerHeight};a.call(y,i,u,t).call(M,i,h,p),s.ensureSingle(e,\"text\",f.headerArrowClassName,(function(t){t.attr(\"text-anchor\",\"end\").call(o.font,i.font).text(f.arrowSymbol[i.direction])})).attr({x:l.headerWidth-f.arrowOffsetX+i.pad.l,y:l.headerHeight/2+f.textOffsetY+i.pad.t}),a.on(\"click\",(function(){r.call(S,String(d(r,i)?-1:i._index)),v(t,e,r,n,i)})),a.on(\"mouseover\",(function(){a.call(w)})),a.on(\"mouseout\",(function(){a.call(T,i)})),o.setTranslate(e,l.lx,l.ly)}function v(t,e,r,a,o){r||(r=e).attr(\"pointer-events\",\"all\");var l=function(t){return-1==+t.attr(f.menuIndexAttrName)}(r)&&\"buttons\"!==o.type?[]:o.buttons,c=\"dropdown\"===o.type?f.dropdownButtonClassName:f.buttonClassName,u=r.selectAll(\"g.\"+c).data(s.filterVisible(l)),h=u.enter().append(\"g\").classed(c,!0),p=u.exit();\"dropdown\"===o.type?(h.attr(\"opacity\",\"0\").transition().attr(\"opacity\",\"1\"),p.transition().attr(\"opacity\",\"0\").remove()):p.remove();var d=0,m=0,v=o._dims,x=-1!==[\"up\",\"down\"].indexOf(o.direction);\"dropdown\"===o.type&&(x?m=v.headerHeight+f.gapButtonHeader:d=v.headerWidth+f.gapButtonHeader),\"dropdown\"===o.type&&\"up\"===o.direction&&(m=-f.gapButtonHeader+f.gapButton-v.openHeight),\"dropdown\"===o.type&&\"left\"===o.direction&&(d=-f.gapButtonHeader+f.gapButton-v.openWidth);var b={x:v.lx+d+o.pad.l,y:v.ly+m+o.pad.t,yPad:f.gapButton,xPad:f.gapButton,index:0},k={l:b.x+o.borderwidth,t:b.y+o.borderwidth};u.each((function(s,l){var c=n.select(this);c.call(y,o,s,t).call(M,o,b),c.on(\"click\",(function(){n.event.defaultPrevented||(s.execute&&(s.args2&&o.active===l?(g(t,o,0,e,r,a,-1),i.executeAPICommand(t,s.method,s.args2)):(g(t,o,0,e,r,a,l),i.executeAPICommand(t,s.method,s.args))),t.emit(\"plotly_buttonclicked\",{menu:o,button:s,active:o.active}))})),c.on(\"mouseover\",(function(){c.call(w)})),c.on(\"mouseout\",(function(){c.call(T,o),u.call(_,o)}))})),u.call(_,o),x?(k.w=Math.max(v.openWidth,v.headerWidth),k.h=b.y-k.t):(k.w=b.x-k.l,k.h=Math.max(v.openHeight,v.headerHeight)),k.direction=o.direction,a&&(u.size()?function(t,e,r,n,i,a){var o,s,l,c=i.direction,u=\"up\"===c||\"down\"===c,h=i._dims,p=i.active;if(u)for(s=0,l=0;l0?[0]:[]);if(o.enter().append(\"g\").classed(f.containerClassName,!0).style(\"cursor\",\"pointer\"),o.exit().each((function(){n.select(this).selectAll(\"g.\"+f.headerGroupClassName).each(a)})).remove(),0!==r.length){var l=o.selectAll(\"g.\"+f.headerGroupClassName).data(r,p);l.enter().append(\"g\").classed(f.headerGroupClassName,!0);for(var c=s.ensureSingle(o,\"g\",f.dropdownButtonGroupClassName,(function(t){t.style(\"pointer-events\",\"all\")})),u=0;uw,A=s.barLength+2*s.barPad,M=s.barWidth+2*s.barPad,S=d,E=m+v;E+M>c&&(E=c-M);var L=this.container.selectAll(\"rect.scrollbar-horizontal\").data(k?[0]:[]);L.exit().on(\".drag\",null).remove(),L.enter().append(\"rect\").classed(\"scrollbar-horizontal\",!0).call(i.fill,s.barColor),k?(this.hbar=L.attr({rx:s.barRadius,ry:s.barRadius,x:S,y:E,width:A,height:M}),this._hbarXMin=S+A/2,this._hbarTranslateMax=w-A):(delete this.hbar,delete this._hbarXMin,delete this._hbarTranslateMax);var C=v>T,P=s.barWidth+2*s.barPad,I=s.barLength+2*s.barPad,O=d+g,z=m;O+P>l&&(O=l-P);var D=this.container.selectAll(\"rect.scrollbar-vertical\").data(C?[0]:[]);D.exit().on(\".drag\",null).remove(),D.enter().append(\"rect\").classed(\"scrollbar-vertical\",!0).call(i.fill,s.barColor),C?(this.vbar=D.attr({rx:s.barRadius,ry:s.barRadius,x:O,y:z,width:P,height:I}),this._vbarYMin=z+I/2,this._vbarTranslateMax=T-I):(delete this.vbar,delete this._vbarYMin,delete this._vbarTranslateMax);var R=this.id,F=u-.5,B=C?f+P+.5:f+.5,N=h-.5,j=k?p+M+.5:p+.5,U=o._topdefs.selectAll(\"#\"+R).data(k||C?[0]:[]);if(U.exit().remove(),U.enter().append(\"clipPath\").attr(\"id\",R).append(\"rect\"),k||C?(this._clipRect=U.select(\"rect\").attr({x:Math.floor(F),y:Math.floor(N),width:Math.ceil(B)-Math.floor(F),height:Math.ceil(j)-Math.floor(N)}),this.container.call(a.setClipUrl,R,this.gd),this.bg.attr({x:d,y:m,width:g,height:v})):(this.bg.attr({width:0,height:0}),this.container.on(\"wheel\",null).on(\".drag\",null).call(a.setClipUrl,null),delete this._clipRect),k||C){var V=n.behavior.drag().on(\"dragstart\",(function(){n.event.sourceEvent.preventDefault()})).on(\"drag\",this._onBoxDrag.bind(this));this.container.on(\"wheel\",null).on(\"wheel\",this._onBoxWheel.bind(this)).on(\".drag\",null).call(V);var H=n.behavior.drag().on(\"dragstart\",(function(){n.event.sourceEvent.preventDefault(),n.event.sourceEvent.stopPropagation()})).on(\"drag\",this._onBarDrag.bind(this));k&&this.hbar.on(\".drag\",null).call(H),C&&this.vbar.on(\".drag\",null).call(H)}this.setTranslate(e,r)},s.prototype.disable=function(){(this.hbar||this.vbar)&&(this.bg.attr({width:0,height:0}),this.container.on(\"wheel\",null).on(\".drag\",null).call(a.setClipUrl,null),delete this._clipRect),this.hbar&&(this.hbar.on(\".drag\",null),this.hbar.remove(),delete this.hbar,delete this._hbarXMin,delete this._hbarTranslateMax),this.vbar&&(this.vbar.on(\".drag\",null),this.vbar.remove(),delete this.vbar,delete this._vbarYMin,delete this._vbarTranslateMax)},s.prototype._onBoxDrag=function(){var t=this.translateX,e=this.translateY;this.hbar&&(t-=n.event.dx),this.vbar&&(e-=n.event.dy),this.setTranslate(t,e)},s.prototype._onBoxWheel=function(){var t=this.translateX,e=this.translateY;this.hbar&&(t+=n.event.deltaY),this.vbar&&(e+=n.event.deltaY),this.setTranslate(t,e)},s.prototype._onBarDrag=function(){var t=this.translateX,e=this.translateY;if(this.hbar){var r=t+this._hbarXMin,i=r+this._hbarTranslateMax;t=(o.constrain(n.event.x,r,i)-r)/(i-r)*(this.position.w-this._box.w)}if(this.vbar){var a=e+this._vbarYMin,s=a+this._vbarTranslateMax;e=(o.constrain(n.event.y,a,s)-a)/(s-a)*(this.position.h-this._box.h)}this.setTranslate(t,e)},s.prototype.setTranslate=function(t,e){var r=this.position.w-this._box.w,n=this.position.h-this._box.h;if(t=o.constrain(t||0,0,r),e=o.constrain(e||0,0,n),this.translateX=t,this.translateY=e,this.container.call(a.setTranslate,this._box.l-this.position.l-t,this._box.t-this.position.t-e),this._clipRect&&this._clipRect.attr({x:Math.floor(this.position.l+t-.5),y:Math.floor(this.position.t+e-.5)}),this.hbar){var i=t/r;this.hbar.call(a.setTranslate,t+i*this._hbarTranslateMax,e)}if(this.vbar){var s=e/n;this.vbar.call(a.setTranslate,t,e+s*this._vbarTranslateMax)}}},{\"../../lib\":503,\"../color\":366,\"../drawing\":388,\"@plotly/d3\":58}],471:[function(t,e,r){\"use strict\";e.exports={FROM_BL:{left:0,center:.5,right:1,bottom:0,middle:.5,top:1},FROM_TL:{left:0,center:.5,right:1,bottom:1,middle:.5,top:0},FROM_BR:{left:1,center:.5,right:0,bottom:0,middle:.5,top:1},LINE_SPACING:1.3,CAP_SHIFT:.7,MID_SHIFT:.35,OPPOSITE_SIDE:{left:\"right\",right:\"left\",top:\"bottom\",bottom:\"top\"}}},{}],472:[function(t,e,r){\"use strict\";e.exports={axisRefDescription:function(t,e,r){return[\"If set to a\",t,\"axis id (e.g. *\"+t+\"* or\",\"*\"+t+\"2*), the `\"+t+\"` position refers to a\",t,\"coordinate. If set to *paper*, the `\"+t+\"`\",\"position refers to the distance from the\",e,\"of the plotting\",\"area in normalized coordinates where *0* (*1*) corresponds to the\",e,\"(\"+r+\"). If set to a\",t,\"axis ID followed by\",\"*domain* (separated by a space), the position behaves like for\",\"*paper*, but refers to the distance in fractions of the domain\",\"length from the\",e,\"of the domain of that axis: e.g.,\",\"*\"+t+\"2 domain* refers to the domain of the second\",t,\" axis and a\",t,\"position of 0.5 refers to the\",\"point between the\",e,\"and the\",r,\"of the domain of the\",\"second\",t,\"axis.\"].join(\" \")}}},{}],473:[function(t,e,r){\"use strict\";e.exports={INCREASING:{COLOR:\"#3D9970\",SYMBOL:\"\\u25b2\"},DECREASING:{COLOR:\"#FF4136\",SYMBOL:\"\\u25bc\"}}},{}],474:[function(t,e,r){\"use strict\";e.exports={FORMAT_LINK:\"https://github.com/d3/d3-format/tree/v1.4.5#d3-format\",DATE_FORMAT_LINK:\"https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format\"}},{}],475:[function(t,e,r){\"use strict\";e.exports={COMPARISON_OPS:[\"=\",\"!=\",\"<\",\">=\",\">\",\"<=\"],COMPARISON_OPS2:[\"=\",\"<\",\">=\",\">\",\"<=\"],INTERVAL_OPS:[\"[]\",\"()\",\"[)\",\"(]\",\"][\",\")(\",\"](\",\")[\"],SET_OPS:[\"{}\",\"}{\"],CONSTRAINT_REDUCTION:{\"=\":\"=\",\"<\":\"<\",\"<=\":\"<\",\">\":\">\",\">=\":\">\",\"[]\":\"[]\",\"()\":\"[]\",\"[)\":\"[]\",\"(]\":\"[]\",\"][\":\"][\",\")(\":\"][\",\"](\":\"][\",\")[\":\"][\"}}},{}],476:[function(t,e,r){\"use strict\";e.exports={solid:[[],0],dot:[[.5,1],200],dash:[[.5,1],50],longdash:[[.5,1],10],dashdot:[[.5,.625,.875,1],50],longdashdot:[[.5,.7,.8,1],10]}},{}],477:[function(t,e,r){\"use strict\";e.exports={circle:\"\\u25cf\",\"circle-open\":\"\\u25cb\",square:\"\\u25a0\",\"square-open\":\"\\u25a1\",diamond:\"\\u25c6\",\"diamond-open\":\"\\u25c7\",cross:\"+\",x:\"\\u274c\"}},{}],478:[function(t,e,r){\"use strict\";e.exports={SHOW_PLACEHOLDER:100,HIDE_PLACEHOLDER:1e3,DESELECTDIM:.2}},{}],479:[function(t,e,r){\"use strict\";e.exports={BADNUM:void 0,FP_SAFE:1e-4*Number.MAX_VALUE,ONEMAXYEAR:316224e5,ONEAVGYEAR:315576e5,ONEMINYEAR:31536e6,ONEMAXQUARTER:79488e5,ONEAVGQUARTER:78894e5,ONEMINQUARTER:76896e5,ONEMAXMONTH:26784e5,ONEAVGMONTH:26298e5,ONEMINMONTH:24192e5,ONEWEEK:6048e5,ONEDAY:864e5,ONEHOUR:36e5,ONEMIN:6e4,ONESEC:1e3,EPOCHJD:2440587.5,ALMOST_EQUAL:.999999,LOG_CLIP:10,MINUS_SIGN:\"\\u2212\"}},{}],480:[function(t,e,r){\"use strict\";r.xmlns=\"http://www.w3.org/2000/xmlns/\",r.svg=\"http://www.w3.org/2000/svg\",r.xlink=\"http://www.w3.org/1999/xlink\",r.svgAttrs={xmlns:r.svg,\"xmlns:xlink\":r.xlink}},{}],481:[function(t,e,r){\"use strict\";r.version=t(\"./version\").version,t(\"native-promise-only\"),t(\"../build/plotcss\");for(var n=t(\"./registry\"),i=r.register=n.register,a=t(\"./plot_api\"),o=Object.keys(a),s=0;splotly-logomark\"}}},{}],483:[function(t,e,r){\"use strict\";r.isLeftAnchor=function(t){return\"left\"===t.xanchor||\"auto\"===t.xanchor&&t.x<=1/3},r.isCenterAnchor=function(t){return\"center\"===t.xanchor||\"auto\"===t.xanchor&&t.x>1/3&&t.x<2/3},r.isRightAnchor=function(t){return\"right\"===t.xanchor||\"auto\"===t.xanchor&&t.x>=2/3},r.isTopAnchor=function(t){return\"top\"===t.yanchor||\"auto\"===t.yanchor&&t.y>=2/3},r.isMiddleAnchor=function(t){return\"middle\"===t.yanchor||\"auto\"===t.yanchor&&t.y>1/3&&t.y<2/3},r.isBottomAnchor=function(t){return\"bottom\"===t.yanchor||\"auto\"===t.yanchor&&t.y<=1/3}},{}],484:[function(t,e,r){\"use strict\";var n=t(\"./mod\"),i=n.mod,a=n.modHalf,o=Math.PI,s=2*o;function l(t){return Math.abs(t[1]-t[0])>s-1e-14}function c(t,e){return a(e-t,s)}function u(t,e){if(l(e))return!0;var r,n;e[0](n=i(n,s))&&(n+=s);var a=i(t,s),o=a+s;return a>=r&&a<=n||o>=r&&o<=n}function f(t,e,r,n,i,a,c){i=i||0,a=a||0;var u,f,h,p,d,g=l([r,n]);function m(t,e){return[t*Math.cos(e)+i,a-t*Math.sin(e)]}g?(u=0,f=o,h=s):r=i&&t<=a);var i,a},pathArc:function(t,e,r,n,i){return f(null,t,e,r,n,i,0)},pathSector:function(t,e,r,n,i){return f(null,t,e,r,n,i,1)},pathAnnulus:function(t,e,r,n,i,a){return f(t,e,r,n,i,a,1)}}},{\"./mod\":510}],485:[function(t,e,r){\"use strict\";var n=Array.isArray,i=ArrayBuffer,a=DataView;function o(t){return i.isView(t)&&!(t instanceof a)}function s(t){return n(t)||o(t)}function l(t,e,r){if(s(t)){if(s(t[0])){for(var n=r,i=0;ii.max?e.set(r):e.set(+t)}},integer:{coerceFunction:function(t,e,r,i){t%1||!n(t)||void 0!==i.min&&ti.max?e.set(r):e.set(+t)}},string:{coerceFunction:function(t,e,r,n){if(\"string\"!=typeof t){var i=\"number\"==typeof t;!0!==n.strict&&i?e.set(String(t)):e.set(r)}else n.noBlank&&!t?e.set(r):e.set(t)}},color:{coerceFunction:function(t,e,r){i(t).isValid()?e.set(t):e.set(r)}},colorlist:{coerceFunction:function(t,e,r){Array.isArray(t)&&t.length&&t.every((function(t){return i(t).isValid()}))?e.set(t):e.set(r)}},colorscale:{coerceFunction:function(t,e,r){e.set(o.get(t,r))}},angle:{coerceFunction:function(t,e,r){\"auto\"===t?e.set(\"auto\"):n(t)?e.set(f(+t,360)):e.set(r)}},subplotid:{coerceFunction:function(t,e,r,n){var i=n.regex||u(r);\"string\"==typeof t&&i.test(t)?e.set(t):e.set(r)},validateFunction:function(t,e){var r=e.dflt;return t===r||\"string\"==typeof t&&!!u(r).test(t)}},flaglist:{coerceFunction:function(t,e,r,n){if(\"string\"==typeof t)if(-1===(n.extras||[]).indexOf(t)){for(var i=t.split(\"+\"),a=0;a=n&&t<=i?t:u}if(\"string\"!=typeof t&&\"number\"!=typeof t)return u;t=String(t);var c=_(e),v=t.charAt(0);!c||\"G\"!==v&&\"g\"!==v||(t=t.substr(1),e=\"\");var w=c&&\"chinese\"===e.substr(0,7),T=t.match(w?x:y);if(!T)return u;var k=T[1],A=T[3]||\"1\",M=Number(T[5]||1),S=Number(T[7]||0),E=Number(T[9]||0),L=Number(T[11]||0);if(c){if(2===k.length)return u;var C;k=Number(k);try{var P=m.getComponentMethod(\"calendars\",\"getCal\")(e);if(w){var I=\"i\"===A.charAt(A.length-1);A=parseInt(A,10),C=P.newDate(k,P.toMonthIndex(k,A,I),M)}else C=P.newDate(k,Number(A),M)}catch(t){return u}return C?(C.toJD()-g)*f+S*h+E*p+L*d:u}k=2===k.length?(Number(k)+2e3-b)%100+b:Number(k),A-=1;var O=new Date(Date.UTC(2e3,A,M,S,E));return O.setUTCFullYear(k),O.getUTCMonth()!==A||O.getUTCDate()!==M?u:O.getTime()+L*d},n=r.MIN_MS=r.dateTime2ms(\"-9999\"),i=r.MAX_MS=r.dateTime2ms(\"9999-12-31 23:59:59.9999\"),r.isDateTime=function(t,e){return r.dateTime2ms(t,e)!==u};var T=90*f,k=3*h,A=5*p;function M(t,e,r,n,i){if((e||r||n||i)&&(t+=\" \"+w(e,2)+\":\"+w(r,2),(n||i)&&(t+=\":\"+w(n,2),i))){for(var a=4;i%10==0;)a-=1,i/=10;t+=\".\"+w(i,a)}return t}r.ms2DateTime=function(t,e,r){if(\"number\"!=typeof t||!(t>=n&&t<=i))return u;e||(e=0);var a,o,s,c,y,x,b=Math.floor(10*l(t+.05,1)),w=Math.round(t-b/10);if(_(r)){var S=Math.floor(w/f)+g,E=Math.floor(l(t,f));try{a=m.getComponentMethod(\"calendars\",\"getCal\")(r).fromJD(S).formatDate(\"yyyy-mm-dd\")}catch(t){a=v(\"G%Y-%m-%d\")(new Date(w))}if(\"-\"===a.charAt(0))for(;a.length<11;)a=\"-0\"+a.substr(1);else for(;a.length<10;)a=\"0\"+a;o=e=n+f&&t<=i-f))return u;var e=Math.floor(10*l(t+.05,1)),r=new Date(Math.round(t-e/10));return M(a(\"%Y-%m-%d\")(r),r.getHours(),r.getMinutes(),r.getSeconds(),10*r.getUTCMilliseconds()+e)},r.cleanDate=function(t,e,n){if(t===u)return e;if(r.isJSDate(t)||\"number\"==typeof t&&isFinite(t)){if(_(n))return s.error(\"JS Dates and milliseconds are incompatible with world calendars\",t),e;if(!(t=r.ms2DateTimeLocal(+t))&&void 0!==e)return e}else if(!r.isDateTime(t,n))return s.error(\"unrecognized date\",t),e;return t};var S=/%\\d?f/g,E=/%h/g,L={1:\"1\",2:\"1\",3:\"2\",4:\"2\"};function C(t,e,r,n){t=t.replace(S,(function(t){var r=Math.min(+t.charAt(1)||6,6);return(e/1e3%1+2).toFixed(r).substr(2).replace(/0+$/,\"\")||\"0\"}));var i=new Date(Math.floor(e+.05));if(t=t.replace(E,(function(){return L[r(\"%q\")(i)]})),_(n))try{t=m.getComponentMethod(\"calendars\",\"worldCalFmt\")(t,e,n)}catch(t){return\"Invalid\"}return r(t)(i)}var P=[59,59.9,59.99,59.999,59.9999];r.formatDate=function(t,e,r,n,i,a){if(i=_(i)&&i,!e)if(\"y\"===r)e=a.year;else if(\"m\"===r)e=a.month;else{if(\"d\"!==r)return function(t,e){var r=l(t+.05,f),n=w(Math.floor(r/h),2)+\":\"+w(l(Math.floor(r/p),60),2);if(\"M\"!==e){o(e)||(e=0);var i=(100+Math.min(l(t/d,60),P[e])).toFixed(e).substr(1);e>0&&(i=i.replace(/0+$/,\"\").replace(/[\\.]$/,\"\")),n+=\":\"+i}return n}(t,r)+\"\\n\"+C(a.dayMonthYear,t,n,i);e=a.dayMonth+\"\\n\"+a.year}return C(e,t,n,i)};var I=3*f;r.incrementMonth=function(t,e,r){r=_(r)&&r;var n=l(t,f);if(t=Math.round(t-n),r)try{var i=Math.round(t/f)+g,a=m.getComponentMethod(\"calendars\",\"getCal\")(r),o=a.fromJD(i);return e%12?a.add(o,e,\"m\"):a.add(o,e/12,\"y\"),(o.toJD()-g)*f+n}catch(e){s.error(\"invalid ms \"+t+\" in calendar \"+r)}var c=new Date(t+I);return c.setUTCMonth(c.getUTCMonth()+e)+n-I},r.findExactDates=function(t,e){for(var r,n,i=0,a=0,s=0,l=0,c=_(e)&&m.getComponentMethod(\"calendars\",\"getCal\")(e),u=0;u0&&t[e+1][0]<0)return e;return null}switch(e=\"RUS\"===s||\"FJI\"===s?function(t){var e;if(null===c(t))e=t;else for(e=new Array(t.length),i=0;ie?r[n++]=[t[i][0]+360,t[i][1]]:i===e?(r[n++]=t[i],r[n++]=[t[i][0],-90]):r[n++]=t[i];var a=h.tester(r);a.pts.pop(),l.push(a)}:function(t){l.push(h.tester(t))},a.type){case\"MultiPolygon\":for(r=0;ri&&(i=c,e=l)}else e=r;return o.default(e).geometry.coordinates}(u),n.fIn=t,n.fOut=u,s.push(u)}else c.log([\"Location\",n.loc,\"does not have a valid GeoJSON geometry.\",\"Traces with locationmode *geojson-id* only support\",\"*Polygon* and *MultiPolygon* geometries.\"].join(\" \"))}delete i[r]}switch(r.type){case\"FeatureCollection\":var h=r.features;for(n=0;n100?(clearInterval(a),n(\"Unexpected error while fetching from \"+t)):void i++}),50)}))}for(var o=0;o0&&(r.push(i),i=[])}return i.length>0&&r.push(i),r},r.makeLine=function(t){return 1===t.length?{type:\"LineString\",coordinates:t[0]}:{type:\"MultiLineString\",coordinates:t}},r.makePolygon=function(t){if(1===t.length)return{type:\"Polygon\",coordinates:t};for(var e=new Array(t.length),r=0;r1||g<0||g>1?null:{x:t+l*g,y:e+f*g}}function l(t,e,r,n,i){var a=n*t+i*e;if(a<0)return n*n+i*i;if(a>r){var o=n-t,s=i-e;return o*o+s*s}var l=n*e-i*t;return l*l/r}r.segmentsIntersect=s,r.segmentDistance=function(t,e,r,n,i,a,o,c){if(s(t,e,r,n,i,a,o,c))return 0;var u=r-t,f=n-e,h=o-i,p=c-a,d=u*u+f*f,g=h*h+p*p,m=Math.min(l(u,f,d,i-t,a-e),l(u,f,d,o-t,c-e),l(h,p,g,t-i,e-a),l(h,p,g,r-i,n-a));return Math.sqrt(m)},r.getTextLocation=function(t,e,r,s){if(t===i&&s===a||(n={},i=t,a=s),n[r])return n[r];var l=t.getPointAtLength(o(r-s/2,e)),c=t.getPointAtLength(o(r+s/2,e)),u=Math.atan((c.y-l.y)/(c.x-l.x)),f=t.getPointAtLength(o(r,e)),h={x:(4*f.x+l.x+c.x)/6,y:(4*f.y+l.y+c.y)/6,theta:u};return n[r]=h,h},r.clearLocationCache=function(){i=null},r.getVisibleSegment=function(t,e,r){var n,i,a=e.left,o=e.right,s=e.top,l=e.bottom,c=0,u=t.getTotalLength(),f=u;function h(e){var r=t.getPointAtLength(e);0===e?n=r:e===u&&(i=r);var c=r.xo?r.x-o:0,f=r.yl?r.y-l:0;return Math.sqrt(c*c+f*f)}for(var p=h(c);p;){if((c+=p+r)>f)return;p=h(c)}for(p=h(f);p;){if(c>(f-=p+r))return;p=h(f)}return{min:c,max:f,len:f-c,total:u,isClosed:0===c&&f===u&&Math.abs(n.x-i.x)<.1&&Math.abs(n.y-i.y)<.1}},r.findPointOnPath=function(t,e,r,n){for(var i,a,o,s=(n=n||{}).pathLength||t.getTotalLength(),l=n.tolerance||.001,c=n.iterationLimit||30,u=t.getPointAtLength(0)[r]>t.getPointAtLength(s)[r]?-1:1,f=0,h=0,p=s;f0?p=i:h=i,f++}return a}},{\"./mod\":510}],499:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"tinycolor2\"),a=t(\"color-normalize\"),o=t(\"../components/colorscale\"),s=t(\"../components/color/attributes\").defaultLine,l=t(\"./array\").isArrayOrTypedArray,c=a(s);function u(t,e){var r=t;return r[3]*=e,r}function f(t){if(n(t))return c;var e=a(t);return e.length?e:c}function h(t){return n(t)?t:1}e.exports={formatColor:function(t,e,r){var n,i,s,p,d,g=t.color,m=l(g),v=l(e),y=o.extractOpts(t),x=[];if(n=void 0!==y.colorscale?o.makeColorScaleFuncFromTrace(t):f,i=m?function(t,e){return void 0===t[e]?c:a(n(t[e]))}:f,s=v?function(t,e){return void 0===t[e]?1:h(t[e])}:h,m||v)for(var b=0;b1?(r*t+r*e)/r:t+e,i=String(n).length;if(i>16){var a=String(e).length;if(i>=String(t).length+a){var o=parseFloat(n).toPrecision(12);-1===o.indexOf(\"e+\")&&(n=+o)}}return n}},{}],503:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"d3-time-format\").utcFormat,a=t(\"d3-format\").format,o=t(\"fast-isnumeric\"),s=t(\"../constants/numerical\"),l=s.FP_SAFE,c=-l,u=s.BADNUM,f=e.exports={};f.adjustFormat=function(t){return!t||/^\\d[.]\\df/.test(t)||/[.]\\d%/.test(t)?t:\"0.f\"===t?\"~f\":/^\\d%/.test(t)?\"~%\":/^\\ds/.test(t)?\"~s\":!/^[~,.0$]/.test(t)&&/[&fps]/.test(t)?\"~\"+t:t};var h={};f.warnBadFormat=function(t){var e=String(t);h[e]||(h[e]=1,f.warn('encountered bad format: \"'+e+'\"'))},f.noFormat=function(t){return String(t)},f.numberFormat=function(t){var e;try{e=a(f.adjustFormat(t))}catch(e){return f.warnBadFormat(t),f.noFormat}return e},f.nestedProperty=t(\"./nested_property\"),f.keyedContainer=t(\"./keyed_container\"),f.relativeAttr=t(\"./relative_attr\"),f.isPlainObject=t(\"./is_plain_object\"),f.toLogRange=t(\"./to_log_range\"),f.relinkPrivateKeys=t(\"./relink_private\");var p=t(\"./array\");f.isTypedArray=p.isTypedArray,f.isArrayOrTypedArray=p.isArrayOrTypedArray,f.isArray1D=p.isArray1D,f.ensureArray=p.ensureArray,f.concat=p.concat,f.maxRowLength=p.maxRowLength,f.minRowLength=p.minRowLength;var d=t(\"./mod\");f.mod=d.mod,f.modHalf=d.modHalf;var g=t(\"./coerce\");f.valObjectMeta=g.valObjectMeta,f.coerce=g.coerce,f.coerce2=g.coerce2,f.coerceFont=g.coerceFont,f.coercePattern=g.coercePattern,f.coerceHoverinfo=g.coerceHoverinfo,f.coerceSelectionMarkerOpacity=g.coerceSelectionMarkerOpacity,f.validate=g.validate;var m=t(\"./dates\");f.dateTime2ms=m.dateTime2ms,f.isDateTime=m.isDateTime,f.ms2DateTime=m.ms2DateTime,f.ms2DateTimeLocal=m.ms2DateTimeLocal,f.cleanDate=m.cleanDate,f.isJSDate=m.isJSDate,f.formatDate=m.formatDate,f.incrementMonth=m.incrementMonth,f.dateTick0=m.dateTick0,f.dfltRange=m.dfltRange,f.findExactDates=m.findExactDates,f.MIN_MS=m.MIN_MS,f.MAX_MS=m.MAX_MS;var v=t(\"./search\");f.findBin=v.findBin,f.sorterAsc=v.sorterAsc,f.sorterDes=v.sorterDes,f.distinctVals=v.distinctVals,f.roundUp=v.roundUp,f.sort=v.sort,f.findIndexOfMin=v.findIndexOfMin,f.sortObjectKeys=t(\"./sort_object_keys\");var y=t(\"./stats\");f.aggNums=y.aggNums,f.len=y.len,f.mean=y.mean,f.median=y.median,f.midRange=y.midRange,f.variance=y.variance,f.stdev=y.stdev,f.interp=y.interp;var x=t(\"./matrix\");f.init2dArray=x.init2dArray,f.transposeRagged=x.transposeRagged,f.dot=x.dot,f.translationMatrix=x.translationMatrix,f.rotationMatrix=x.rotationMatrix,f.rotationXYMatrix=x.rotationXYMatrix,f.apply3DTransform=x.apply3DTransform,f.apply2DTransform=x.apply2DTransform,f.apply2DTransform2=x.apply2DTransform2,f.convertCssMatrix=x.convertCssMatrix,f.inverseTransformMatrix=x.inverseTransformMatrix;var b=t(\"./angles\");f.deg2rad=b.deg2rad,f.rad2deg=b.rad2deg,f.angleDelta=b.angleDelta,f.angleDist=b.angleDist,f.isFullCircle=b.isFullCircle,f.isAngleInsideSector=b.isAngleInsideSector,f.isPtInsideSector=b.isPtInsideSector,f.pathArc=b.pathArc,f.pathSector=b.pathSector,f.pathAnnulus=b.pathAnnulus;var _=t(\"./anchor_utils\");f.isLeftAnchor=_.isLeftAnchor,f.isCenterAnchor=_.isCenterAnchor,f.isRightAnchor=_.isRightAnchor,f.isTopAnchor=_.isTopAnchor,f.isMiddleAnchor=_.isMiddleAnchor,f.isBottomAnchor=_.isBottomAnchor;var w=t(\"./geometry2d\");f.segmentsIntersect=w.segmentsIntersect,f.segmentDistance=w.segmentDistance,f.getTextLocation=w.getTextLocation,f.clearLocationCache=w.clearLocationCache,f.getVisibleSegment=w.getVisibleSegment,f.findPointOnPath=w.findPointOnPath;var T=t(\"./extend\");f.extendFlat=T.extendFlat,f.extendDeep=T.extendDeep,f.extendDeepAll=T.extendDeepAll,f.extendDeepNoArrays=T.extendDeepNoArrays;var k=t(\"./loggers\");f.log=k.log,f.warn=k.warn,f.error=k.error;var A=t(\"./regex\");f.counterRegex=A.counter;var M=t(\"./throttle\");f.throttle=M.throttle,f.throttleDone=M.done,f.clearThrottle=M.clear;var S=t(\"./dom\");function E(t){var e={};for(var r in t)for(var n=t[r],i=0;il||t=e)&&(o(t)&&t>=0&&t%1==0)},f.noop=t(\"./noop\"),f.identity=t(\"./identity\"),f.repeat=function(t,e){for(var r=new Array(e),n=0;nr?Math.max(r,Math.min(e,t)):Math.max(e,Math.min(r,t))},f.bBoxIntersect=function(t,e,r){return r=r||0,t.left<=e.right+r&&e.left<=t.right+r&&t.top<=e.bottom+r&&e.top<=t.bottom+r},f.simpleMap=function(t,e,r,n,i){for(var a=t.length,o=new Array(a),s=0;s=Math.pow(2,r)?i>10?(f.warn(\"randstr failed uniqueness\"),l):t(e,r,n,(i||0)+1):l},f.OptionControl=function(t,e){t||(t={}),e||(e=\"opt\");var r={optionList:[],_newoption:function(n){n[e]=t,r[n.name]=n,r.optionList.push(n)}};return r[\"_\"+e]=t,r},f.smooth=function(t,e){if((e=Math.round(e)||0)<2)return t;var r,n,i,a,o=t.length,s=2*o,l=2*e-1,c=new Array(l),u=new Array(o);for(r=0;r=s&&(i-=s*Math.floor(i/s)),i<0?i=-1-i:i>=o&&(i=s-1-i),a+=t[i]*c[n];u[r]=a}return u},f.syncOrAsync=function(t,e,r){var n;function i(){return f.syncOrAsync(t,e,r)}for(;t.length;)if((n=(0,t.splice(0,1)[0])(e))&&n.then)return n.then(i);return r&&r(e)},f.stripTrailingSlash=function(t){return\"/\"===t.substr(-1)?t.substr(0,t.length-1):t},f.noneOrAll=function(t,e,r){if(t){var n,i=!1,a=!0;for(n=0;n0?e:0}))},f.fillArray=function(t,e,r,n){if(n=n||f.identity,f.isArrayOrTypedArray(t))for(var i=0;i1?i+o[1]:\"\";if(a&&(o.length>1||s.length>4||r))for(;n.test(s);)s=s.replace(n,\"$1\"+a+\"$2\");return s+l},f.TEMPLATE_STRING_REGEX=/%{([^\\s%{}:]*)([:|\\|][^}]*)?}/g;var z=/^\\w*$/;f.templateString=function(t,e){var r={};return t.replace(f.TEMPLATE_STRING_REGEX,(function(t,n){var i;return z.test(n)?i=e[n]:(r[n]=r[n]||f.nestedProperty(e,n).get,i=r[n]()),f.isValidTextValue(i)?i:\"\"}))};var D={max:10,count:0,name:\"hovertemplate\"};f.hovertemplateString=function(){return B.apply(D,arguments)};var R={max:10,count:0,name:\"texttemplate\"};f.texttemplateString=function(){return B.apply(R,arguments)};var F=/^[:|\\|]/;function B(t,e,r){var n=this,a=arguments;e||(e={});var o={};return t.replace(f.TEMPLATE_STRING_REGEX,(function(t,s,l){var c,u,h,p=\"_xother\"===s||\"_yother\"===s,d=\"_xother_\"===s||\"_yother_\"===s,g=\"xother_\"===s||\"yother_\"===s,m=\"xother\"===s||\"yother\"===s||p||g||d,v=s;if((p||d)&&(v=v.substring(1)),(g||d)&&(v=v.substring(0,v.length-1)),m){if(void 0===(c=e[v]))return\"\"}else for(h=3;h=48&&o<=57,c=s>=48&&s<=57;if(l&&(n=10*n+o-48),c&&(i=10*i+s-48),!l||!c){if(n!==i)return n-i;if(o!==s)return o-s}}return i-n};var N=2e9;f.seedPseudoRandom=function(){N=2e9},f.pseudoRandom=function(){var t=N;return N=(69069*N+1)%4294967296,Math.abs(N-t)<429496729?f.pseudoRandom():N/4294967296},f.fillText=function(t,e,r){var n=Array.isArray(r)?function(t){r.push(t)}:function(t){r.text=t},i=f.extractOption(t,e,\"htx\",\"hovertext\");if(f.isValidTextValue(i))return n(i);var a=f.extractOption(t,e,\"tx\",\"text\");return f.isValidTextValue(a)?n(a):void 0},f.isValidTextValue=function(t){return t||0===t},f.formatPercent=function(t,e){e=e||0;for(var r=(Math.round(100*t*Math.pow(10,e))*Math.pow(.1,e)).toFixed(e)+\"%\",n=0;n1&&(c=1):c=0,f.strTranslate(i-c*(r+o),a-c*(n+s))+f.strScale(c)+(l?\"rotate(\"+l+(e?\"\":\" \"+r+\" \"+n)+\")\":\"\")},f.ensureUniformFontSize=function(t,e){var r=f.extendFlat({},e);return r.size=Math.max(e.size,t._fullLayout.uniformtext.minsize||0),r},f.join2=function(t,e,r){var n=t.length;return n>1?t.slice(0,-1).join(e)+r+t[n-1]:t.join(e)},f.bigFont=function(t){return Math.round(1.2*t)};var j=f.getFirefoxVersion(),U=null!==j&&j<86;f.getPositionFromD3Event=function(){return U?[n.event.layerX,n.event.layerY]:[n.event.offsetX,n.event.offsetY]}},{\"../constants/numerical\":479,\"./anchor_utils\":483,\"./angles\":484,\"./array\":485,\"./clean_number\":486,\"./clear_responsive\":488,\"./coerce\":489,\"./dates\":490,\"./dom\":491,\"./extend\":493,\"./filter_unique\":494,\"./filter_visible\":495,\"./geometry2d\":498,\"./identity\":501,\"./increment\":502,\"./is_plain_object\":504,\"./keyed_container\":505,\"./localize\":506,\"./loggers\":507,\"./make_trace_groups\":508,\"./matrix\":509,\"./mod\":510,\"./nested_property\":511,\"./noop\":512,\"./notifier\":513,\"./preserve_drawing_buffer\":517,\"./push_unique\":518,\"./regex\":520,\"./relative_attr\":521,\"./relink_private\":522,\"./search\":523,\"./sort_object_keys\":526,\"./stats\":527,\"./throttle\":530,\"./to_log_range\":531,\"@plotly/d3\":58,\"d3-format\":112,\"d3-time-format\":120,\"fast-isnumeric\":190}],504:[function(t,e,r){\"use strict\";e.exports=function(t){return window&&window.process&&window.process.versions?\"[object Object]\"===Object.prototype.toString.call(t):\"[object Object]\"===Object.prototype.toString.call(t)&&Object.getPrototypeOf(t).hasOwnProperty(\"hasOwnProperty\")}},{}],505:[function(t,e,r){\"use strict\";var n=t(\"./nested_property\"),i=/^\\w*$/;e.exports=function(t,e,r,a){var o,s,l;r=r||\"name\",a=a||\"value\";var c={};e&&e.length?(l=n(t,e),s=l.get()):s=t,e=e||\"\";var u={};if(s)for(o=0;o2)return c[e]=2|c[e],h.set(t,null);if(f){for(o=e;o1){var e=[\"LOG:\"];for(t=0;t1){var r=[];for(t=0;t\"),\"long\")}},a.warn=function(){var t;if(n.logging>0){var e=[\"WARN:\"];for(t=0;t0){var r=[];for(t=0;t\"),\"stick\")}},a.error=function(){var t;if(n.logging>0){var e=[\"ERROR:\"];for(t=0;t0){var r=[];for(t=0;t\"),\"stick\")}}},{\"../plot_api/plot_config\":541,\"./notifier\":513}],508:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\");e.exports=function(t,e,r){var i=t.selectAll(\"g.\"+r.replace(/\\s/g,\".\")).data(e,(function(t){return t[0].trace.uid}));i.exit().remove(),i.enter().append(\"g\").attr(\"class\",r),i.order();var a=t.classed(\"rangeplot\")?\"nodeRangePlot3\":\"node3\";return i.each((function(t){t[0][a]=n.select(this)})),i}},{\"@plotly/d3\":58}],509:[function(t,e,r){\"use strict\";var n=t(\"gl-mat4\");r.init2dArray=function(t,e){for(var r=new Array(t),n=0;ne/2?t-Math.round(t/e)*e:t}}},{}],511:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"./array\").isArrayOrTypedArray;function a(t,e){return function(){var r,n,o,s,l,c=t;for(s=0;s/g),l=0;la||c===i||cs)&&(!e||!l(t))}:function(t,e){var l=t[0],c=t[1];if(l===i||la||c===i||cs)return!1;var u,f,h,p,d,g=r.length,m=r[0][0],v=r[0][1],y=0;for(u=1;uMath.max(f,m)||c>Math.max(h,v)))if(cu||Math.abs(n(o,h))>i)return!0;return!1},a.filter=function(t,e){var r=[t[0]],n=0,i=0;function o(o){t.push(o);var s=r.length,l=n;r.splice(i+1);for(var c=l+1;c1&&o(t.pop());return{addPt:o,raw:t,filtered:r}}},{\"../constants/numerical\":479,\"./matrix\":509}],516:[function(t,e,r){(function(r){(function(){\"use strict\";var n=t(\"./show_no_webgl_msg\"),i=t(\"regl\");e.exports=function(t,e){var a=t._fullLayout,o=!0;return a._glcanvas.each((function(n){if(!n.regl&&(!n.pick||a._has(\"parcoords\"))){try{n.regl=i({canvas:this,attributes:{antialias:!n.pick,preserveDrawingBuffer:!0},pixelRatio:t._context.plotGlPixelRatio||r.devicePixelRatio,extensions:e||[]})}catch(t){o=!1}n.regl||(o=!1),o&&this.addEventListener(\"webglcontextlost\",(function(e){t&&t.emit&&t.emit(\"plotly_webglcontextlost\",{event:e,layer:n.key})}),!1)}})),o||n({container:a._glcontainer.node()}),o}}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"./show_no_webgl_msg\":525,regl:283}],517:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"is-mobile\");e.exports=function(t){var e;if(\"string\"!=typeof(e=t&&t.hasOwnProperty(\"userAgent\")?t.userAgent:function(){var t;\"undefined\"!=typeof navigator&&(t=navigator.userAgent);t&&t.headers&&\"string\"==typeof t.headers[\"user-agent\"]&&(t=t.headers[\"user-agent\"]);return t}()))return!0;var r=i({ua:{headers:{\"user-agent\":e}},tablet:!0,featureDetect:!1});if(!r)for(var a=e.split(\" \"),o=1;o-1;s--){var l=a[s];if(\"Version/\"===l.substr(0,8)){var c=l.substr(8).split(\".\")[0];if(n(c)&&(c=+c),c>=13)return!0}}}return r}},{\"fast-isnumeric\":190,\"is-mobile\":234}],518:[function(t,e,r){\"use strict\";e.exports=function(t,e){if(e instanceof RegExp){for(var r=e.toString(),n=0;ni.queueLength&&(t.undoQueue.queue.shift(),t.undoQueue.index--))},startSequence:function(t){t.undoQueue=t.undoQueue||{index:0,queue:[],sequence:!1},t.undoQueue.sequence=!0,t.undoQueue.beginSequence=!0},stopSequence:function(t){t.undoQueue=t.undoQueue||{index:0,queue:[],sequence:!1},t.undoQueue.sequence=!1,t.undoQueue.beginSequence=!1},undo:function(t){var e,r;if(!(void 0===t.undoQueue||isNaN(t.undoQueue.index)||t.undoQueue.index<=0)){for(t.undoQueue.index--,e=t.undoQueue.queue[t.undoQueue.index],t.undoQueue.inSequence=!0,r=0;r=t.undoQueue.queue.length)){for(e=t.undoQueue.queue[t.undoQueue.index],t.undoQueue.inSequence=!0,r=0;re}function u(t,e){return t>=e}r.findBin=function(t,e,r){if(n(e.start))return r?Math.ceil((t-e.start)/e.size-1e-9)-1:Math.floor((t-e.start)/e.size+1e-9);var a,o,f=0,h=e.length,p=0,d=h>1?(e[h-1]-e[0])/(h-1):1;for(o=d>=0?r?s:l:r?u:c,t+=1e-9*d*(r?-1:1)*(d>=0?1:-1);f90&&i.log(\"Long binary search...\"),f-1},r.sorterAsc=function(t,e){return t-e},r.sorterDes=function(t,e){return e-t},r.distinctVals=function(t){var e,n=t.slice();for(n.sort(r.sorterAsc),e=n.length-1;e>-1&&n[e]===o;e--);for(var i,a=n[e]-n[0]||1,s=a/(e||1)/1e4,l=[],c=0;c<=e;c++){var u=n[c],f=u-i;void 0===i?(l.push(u),i=u):f>s&&(a=Math.min(a,f),l.push(u),i=u)}return{vals:l,minDiff:a}},r.roundUp=function(t,e,r){for(var n,i=0,a=e.length-1,o=0,s=r?0:1,l=r?1:0,c=r?Math.ceil:Math.floor;i0&&(n=1),r&&n)return t.sort(e)}return n?t:t.reverse()},r.findIndexOfMin=function(t,e){e=e||a;for(var r,n=1/0,i=0;ia.length)&&(o=a.length),n(e)||(e=!1),i(a[0])){for(l=new Array(o),s=0;st.length-1)return t[t.length-1];var r=e%1;return r*t[Math.ceil(e)]+(1-r)*t[Math.floor(e)]}},{\"./array\":485,\"fast-isnumeric\":190}],528:[function(t,e,r){\"use strict\";var n=t(\"color-normalize\");e.exports=function(t){return t?n(t):[0,0,0,1]}},{\"color-normalize\":89}],529:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../lib\"),a=i.strTranslate,o=t(\"../constants/xmlns_namespaces\"),s=t(\"../constants/alignment\").LINE_SPACING,l=/([^$]*)([$]+[^$]*[$]+)([^$]*)/;r.convertToTspans=function(t,e,d){var A=t.text(),M=!t.attr(\"data-notex\")&&\"undefined\"!=typeof MathJax&&A.match(l),L=n.select(t.node().parentNode);if(!L.empty()){var C=t.attr(\"class\")?t.attr(\"class\").split(\" \")[0]:\"text\";return C+=\"-math\",L.selectAll(\"svg.\"+C).remove(),L.selectAll(\"g.\"+C+\"-group\").remove(),t.style(\"display\",null).attr({\"data-unformatted\":A,\"data-math\":\"N\"}),M?(e&&e._promises||[]).push(new Promise((function(e){t.style(\"display\",\"none\");var r=parseInt(t.node().style.fontSize,10),o={fontSize:r};!function(t,e,r){var a,o,s,l;MathJax.Hub.Queue((function(){return o=i.extendDeepAll({},MathJax.Hub.config),s=MathJax.Hub.processSectionDelay,void 0!==MathJax.Hub.processSectionDelay&&(MathJax.Hub.processSectionDelay=0),MathJax.Hub.Config({messageStyle:\"none\",tex2jax:{inlineMath:[[\"$\",\"$\"],[\"\\\\(\",\"\\\\)\"]]},displayAlign:\"left\"})}),(function(){if(\"SVG\"!==(a=MathJax.Hub.config.menuSettings.renderer))return MathJax.Hub.setRenderer(\"SVG\")}),(function(){var r=\"math-output-\"+i.randstr({},64);return l=n.select(\"body\").append(\"div\").attr({id:r}).style({visibility:\"hidden\",position:\"absolute\"}).style({\"font-size\":e.fontSize+\"px\"}).text(t.replace(c,\"\\\\lt \").replace(u,\"\\\\gt \")),MathJax.Hub.Typeset(l.node())}),(function(){var e=n.select(\"body\").select(\"#MathJax_SVG_glyphs\");if(l.select(\".MathJax_SVG\").empty()||!l.select(\"svg\").node())i.log(\"There was an error in the tex syntax.\",t),r();else{var o=l.select(\"svg\").node().getBoundingClientRect();r(l.select(\".MathJax_SVG\"),e,o)}if(l.remove(),\"SVG\"!==a)return MathJax.Hub.setRenderer(a)}),(function(){return void 0!==s&&(MathJax.Hub.processSectionDelay=s),MathJax.Hub.Config(o)}))}(M[2],o,(function(n,i,o){L.selectAll(\"svg.\"+C).remove(),L.selectAll(\"g.\"+C+\"-group\").remove();var s=n&&n.select(\"svg\");if(!s||!s.node())return P(),void e();var l=L.append(\"g\").classed(C+\"-group\",!0).attr({\"pointer-events\":\"none\",\"data-unformatted\":A,\"data-math\":\"Y\"});l.node().appendChild(s.node()),i&&i.node()&&s.node().insertBefore(i.node().cloneNode(!0),s.node().firstChild);var c=o.width,u=o.height;s.attr({class:C,height:u,preserveAspectRatio:\"xMinYMin meet\"}).style({overflow:\"visible\",\"pointer-events\":\"none\"});var f=t.node().style.fill||\"black\",h=s.select(\"g\");h.attr({fill:f,stroke:f});var p=h.node().getBoundingClientRect(),g=p.width,m=p.height;(g>c||m>u)&&(s.style(\"overflow\",\"hidden\"),g=(p=s.node().getBoundingClientRect()).width,m=p.height);var v=+t.attr(\"x\"),y=+t.attr(\"y\"),x=-(r||t.node().getBoundingClientRect().height)/4;if(\"y\"===C[0])l.attr({transform:\"rotate(\"+[-90,v,y]+\")\"+a(-g/2,x-m/2)});else if(\"l\"===C[0])y=x-m/2;else if(\"a\"===C[0]&&0!==C.indexOf(\"atitle\"))v=0,y=x;else{var b=t.attr(\"text-anchor\");v-=g*(\"middle\"===b?.5:\"end\"===b?1:0),y=y+x-m/2}s.attr({x:v,y:y}),d&&d.call(t,l),e(l)}))}))):P(),t}function P(){L.empty()||(C=t.attr(\"class\")+\"-math\",L.select(\"svg.\"+C).remove()),t.text(\"\").style(\"white-space\",\"pre\"),function(t,e){e=e.replace(g,\" \");var r,a=!1,l=[],c=-1;function u(){c++;var e=document.createElementNS(o.svg,\"tspan\");n.select(e).attr({class:\"line\",dy:c*s+\"em\"}),t.appendChild(e),r=e;var i=l;if(l=[{node:e}],i.length>1)for(var a=1;a doesnt match end tag <\"+t+\">. Pretending it did match.\",e),r=l[l.length-1].node}else i.log(\"Ignoring unexpected end tag .\",e)}y.test(e)?u():(r=t,l=[{node:t}]);for(var L=e.split(m),C=0;C|>|>)/g;var f={sup:\"font-size:70%\",sub:\"font-size:70%\",b:\"font-weight:bold\",i:\"font-style:italic\",a:\"cursor:pointer\",span:\"\",em:\"font-style:italic;font-weight:bold\"},h={sub:\"0.3em\",sup:\"-0.6em\"},p={sub:\"-0.21em\",sup:\"0.42em\"},d=[\"http:\",\"https:\",\"mailto:\",\"\",void 0,\":\"],g=r.NEWLINES=/(\\r\\n?|\\n)/g,m=/(<[^<>]*>)/,v=/<(\\/?)([^ >]*)(\\s+(.*))?>/i,y=//i;r.BR_TAG_ALL=//gi;var x=/(^|[\\s\"'])style\\s*=\\s*(\"([^\"]*);?\"|'([^']*);?')/i,b=/(^|[\\s\"'])href\\s*=\\s*(\"([^\"]*)\"|'([^']*)')/i,_=/(^|[\\s\"'])target\\s*=\\s*(\"([^\"\\s]*)\"|'([^'\\s]*)')/i,w=/(^|[\\s\"'])popup\\s*=\\s*(\"([\\w=,]*)\"|'([\\w=,]*)')/i;function T(t,e){if(!t)return null;var r=t.match(e),n=r&&(r[3]||r[4]);return n&&S(n)}var k=/(^|;)\\s*color:/;r.plainText=function(t,e){for(var r=void 0!==(e=e||{}).len&&-1!==e.len?e.len:1/0,n=void 0!==e.allowedTags?e.allowedTags:[\"br\"],i=\"...\".length,a=t.split(m),o=[],s=\"\",l=0,c=0;ci?o.push(u.substr(0,d-i)+\"...\"):o.push(u.substr(0,d));break}s=\"\"}}return o.join(\"\")};var A={mu:\"\\u03bc\",amp:\"&\",lt:\"<\",gt:\">\",nbsp:\"\\xa0\",times:\"\\xd7\",plusmn:\"\\xb1\",deg:\"\\xb0\"},M=/&(#\\d+|#x[\\da-fA-F]+|[a-z]+);/g;function S(t){return t.replace(M,(function(t,e){return(\"#\"===e.charAt(0)?function(t){if(t>1114111)return;var e=String.fromCodePoint;if(e)return e(t);var r=String.fromCharCode;return t<=65535?r(t):r(55232+(t>>10),t%1024+56320)}(\"x\"===e.charAt(1)?parseInt(e.substr(2),16):parseInt(e.substr(1),10)):A[e])||t}))}function E(t){var e=encodeURI(decodeURI(t)),r=document.createElement(\"a\"),n=document.createElement(\"a\");r.href=t,n.href=e;var i=r.protocol,a=n.protocol;return-1!==d.indexOf(i)&&-1!==d.indexOf(a)?e:\"\"}function L(t,e,r){var n,a,o,s=r.horizontalAlign,l=r.verticalAlign||\"top\",c=t.node().getBoundingClientRect(),u=e.node().getBoundingClientRect();return a=\"bottom\"===l?function(){return c.bottom-n.height}:\"middle\"===l?function(){return c.top+(c.height-n.height)/2}:function(){return c.top},o=\"right\"===s?function(){return c.right-n.width}:\"center\"===s?function(){return c.left+(c.width-n.width)/2}:function(){return c.left},function(){n=this.node().getBoundingClientRect();var t=o()-u.left,e=a()-u.top,s=r.gd||{};if(r.gd){s._fullLayout._calcInverseTransform(s);var l=i.apply3DTransform(s._fullLayout._invTransform)(t,e);t=l[0],e=l[1]}return this.style({top:e+\"px\",left:t+\"px\",\"z-index\":1e3}),this}}r.convertEntities=S,r.sanitizeHTML=function(t){t=t.replace(g,\" \");for(var e=document.createElement(\"p\"),r=e,i=[],a=t.split(m),o=0;oa.ts+e?l():a.timer=setTimeout((function(){l(),a.timer=null}),e)},r.done=function(t){var e=n[t];return e&&e.timer?new Promise((function(t){var r=e.onDone;e.onDone=function(){r&&r(),t(),e.onDone=null}})):Promise.resolve()},r.clear=function(t){if(t)i(n[t]),delete n[t];else for(var e in n)r.clear(e)}},{}],531:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\");e.exports=function(t,e){if(t>0)return Math.log(t)/Math.LN10;var r=Math.log(Math.min(e[0],e[1]))/Math.LN10;return n(r)||(r=Math.log(Math.max(e[0],e[1]))/Math.LN10-6),r}},{\"fast-isnumeric\":190}],532:[function(t,e,r){\"use strict\";var n=e.exports={},i=t(\"../plots/geo/constants\").locationmodeToLayer,a=t(\"topojson-client\").feature;n.getTopojsonName=function(t){return[t.scope.replace(/ /g,\"-\"),\"_\",t.resolution.toString(),\"m\"].join(\"\")},n.getTopojsonPath=function(t,e){return t+e+\".json\"},n.getTopojsonFeatures=function(t,e){var r=i[t.locationmode],n=e.objects[r];return a(e,n).features}},{\"../plots/geo/constants\":587,\"topojson-client\":315}],533:[function(t,e,r){\"use strict\";e.exports={moduleType:\"locale\",name:\"en-US\",dictionary:{\"Click to enter Colorscale title\":\"Click to enter Colorscale title\"},format:{date:\"%m/%d/%Y\"}}},{}],534:[function(t,e,r){\"use strict\";e.exports={moduleType:\"locale\",name:\"en\",dictionary:{\"Click to enter Colorscale title\":\"Click to enter Colourscale title\"},format:{days:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],shortDays:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],months:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],shortMonths:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],periods:[\"AM\",\"PM\"],dateTime:\"%a %b %e %X %Y\",date:\"%d/%m/%Y\",time:\"%H:%M:%S\",decimal:\".\",thousands:\",\",grouping:[3],currency:[\"$\",\"\"],year:\"%Y\",month:\"%b %Y\",dayMonth:\"%b %-d\",dayMonthYear:\"%b %-d, %Y\"}}},{}],535:[function(t,e,r){\"use strict\";var n=t(\"../registry\");e.exports=function(t){for(var e,r,i=n.layoutArrayContainers,a=n.layoutArrayRegexes,o=t.split(\"[\")[0],s=0;s0&&o.log(\"Clearing previous rejected promises from queue.\"),t._promises=[]},r.cleanLayout=function(t){var e,n;t||(t={}),t.xaxis1&&(t.xaxis||(t.xaxis=t.xaxis1),delete t.xaxis1),t.yaxis1&&(t.yaxis||(t.yaxis=t.yaxis1),delete t.yaxis1),t.scene1&&(t.scene||(t.scene=t.scene1),delete t.scene1);var a=(s.subplotsRegistry.cartesian||{}).attrRegex,l=(s.subplotsRegistry.polar||{}).attrRegex,f=(s.subplotsRegistry.ternary||{}).attrRegex,h=(s.subplotsRegistry.gl3d||{}).attrRegex,g=Object.keys(t);for(e=0;e3?(O.x=1.02,O.xanchor=\"left\"):O.x<-2&&(O.x=-.02,O.xanchor=\"right\"),O.y>3?(O.y=1.02,O.yanchor=\"bottom\"):O.y<-2&&(O.y=-.02,O.yanchor=\"top\")),d(t),\"rotate\"===t.dragmode&&(t.dragmode=\"orbit\"),c.clean(t),t.template&&t.template.layout&&r.cleanLayout(t.template.layout),t},r.cleanData=function(t){for(var e=0;e0)return t.substr(0,e)}r.hasParent=function(t,e){for(var r=b(e);r;){if(r in t)return!0;r=b(r)}return!1};var _=[\"x\",\"y\",\"z\"];r.clearAxisTypes=function(t,e,r){for(var n=0;n1&&a.warn(\"Full array edits are incompatible with other edits\",f);var y=r[\"\"][\"\"];if(c(y))e.set(null);else{if(!Array.isArray(y))return a.warn(\"Unrecognized full array edit value\",f,y),!0;e.set(y)}return!g&&(h(m,v),p(t),!0)}var x,b,_,w,T,k,A,M,S=Object.keys(r).map(Number).sort(o),E=e.get(),L=E||[],C=u(v,f).get(),P=[],I=-1,O=L.length;for(x=0;xL.length-(A?0:1))a.warn(\"index out of range\",f,_);else if(void 0!==k)T.length>1&&a.warn(\"Insertion & removal are incompatible with edits to the same index.\",f,_),c(k)?P.push(_):A?(\"add\"===k&&(k={}),L.splice(_,0,k),C&&C.splice(_,0,{})):a.warn(\"Unrecognized full object edit value\",f,_,k),-1===I&&(I=_);else for(b=0;b=0;x--)L.splice(P[x],1),C&&C.splice(P[x],1);if(L.length?E||e.set(L):e.set(null),g)return!1;if(h(m,v),d!==i){var z;if(-1===I)z=S;else{for(O=Math.max(L.length,O),z=[],x=0;x=I);x++)z.push(_);for(x=I;x=t.data.length||i<-t.data.length)throw new Error(r+\" must be valid indices for gd.data.\");if(e.indexOf(i,n+1)>-1||i>=0&&e.indexOf(-t.data.length+i)>-1||i<0&&e.indexOf(t.data.length+i)>-1)throw new Error(\"each index in \"+r+\" must be unique.\")}}function I(t,e,r){if(!Array.isArray(t.data))throw new Error(\"gd.data must be an array.\");if(void 0===e)throw new Error(\"currentIndices is a required argument.\");if(Array.isArray(e)||(e=[e]),P(t,e,\"currentIndices\"),void 0===r||Array.isArray(r)||(r=[r]),void 0!==r&&P(t,r,\"newIndices\"),void 0!==r&&e.length!==r.length)throw new Error(\"current and new indices must be of equal length.\")}function O(t,e,r,n,a){!function(t,e,r,n){var i=o.isPlainObject(n);if(!Array.isArray(t.data))throw new Error(\"gd.data must be an array\");if(!o.isPlainObject(e))throw new Error(\"update must be a key:value object\");if(void 0===r)throw new Error(\"indices must be an integer or array of integers\");for(var a in P(t,r,\"indices\"),e){if(!Array.isArray(e[a])||e[a].length!==r.length)throw new Error(\"attribute \"+a+\" must be an array of length equal to indices array length\");if(i&&(!(a in n)||!Array.isArray(n[a])||n[a].length!==e[a].length))throw new Error(\"when maxPoints is set as a key:value object it must contain a 1:1 corrispondence with the keys and number of traces in the update object\")}}(t,e,r,n);for(var l=function(t,e,r,n){var a,l,c,u,f,h=o.isPlainObject(n),p=[];for(var d in Array.isArray(r)||(r=[r]),r=C(r,t.data.length-1),e)for(var g=0;g-1&&-1===r.indexOf(\"grouptitlefont\")?l(r,r.replace(\"titlefont\",\"title.font\")):r.indexOf(\"titleposition\")>-1?l(r,r.replace(\"titleposition\",\"title.position\")):r.indexOf(\"titleside\")>-1?l(r,r.replace(\"titleside\",\"title.side\")):r.indexOf(\"titleoffset\")>-1&&l(r,r.replace(\"titleoffset\",\"title.offset\")):l(r,r.replace(\"title\",\"title.text\"));function l(e,r){t[r]=t[e],delete t[e]}}function U(t,e,r){t=o.getGraphDiv(t),_.clearPromiseQueue(t);var n={};if(\"string\"==typeof e)n[e]=r;else{if(!o.isPlainObject(e))return o.warn(\"Relayout fail.\",e,r),Promise.reject();n=o.extendFlat({},e)}Object.keys(n).length&&(t.changed=!0);var i=W(t,n),a=i.flags;a.calc&&(t.calcdata=void 0);var s=[h.previousPromises];a.layoutReplot?s.push(w.layoutReplot):Object.keys(n).length&&(V(t,a,i)||h.supplyDefaults(t),a.legend&&s.push(w.doLegend),a.layoutstyle&&s.push(w.layoutStyles),a.axrange&&H(s,i.rangesAltered),a.ticks&&s.push(w.doTicksRelayout),a.modebar&&s.push(w.doModeBar),a.camera&&s.push(w.doCamera),a.colorbars&&s.push(w.doColorBars),s.push(M)),s.push(h.rehover,h.redrag),c.add(t,U,[t,i.undoit],U,[t,i.redoit]);var l=o.syncOrAsync(s,t);return l&&l.then||(l=Promise.resolve(t)),l.then((function(){return t.emit(\"plotly_relayout\",i.eventData),t}))}function V(t,e,r){var n=t._fullLayout;if(!e.axrange)return!1;for(var i in e)if(\"axrange\"!==i&&e[i])return!1;for(var a in r.rangesAltered){var o=p.id2name(a),s=t.layout[o],l=n[o];if(l.autorange=s.autorange,s.range&&(l.range=s.range.slice()),l.cleanRange(),l._matchGroup)for(var c in l._matchGroup)if(c!==a){var u=n[p.id2name(c)];u.autorange=l.autorange,u.range=l.range.slice(),u._input.range=l.range.slice()}}return!0}function H(t,e){var r=e?function(t){var r=[],n=!0;for(var i in e){var a=p.getFromId(t,i);if(r.push(i),-1!==(a.ticklabelposition||\"\").indexOf(\"inside\")&&a._anchorAxis&&r.push(a._anchorAxis._id),a._matchGroup)for(var o in a._matchGroup)e[o]||r.push(o);a.automargin&&(n=!1)}return p.draw(t,r,{skipTitle:n})}:function(t){return p.draw(t,\"redraw\")};t.push(y,w.doAutoRangeAndConstraints,r,w.drawData,w.finalDraw)}var q=/^[xyz]axis[0-9]*\\.range(\\[[0|1]\\])?$/,G=/^[xyz]axis[0-9]*\\.autorange$/,Y=/^[xyz]axis[0-9]*\\.domain(\\[[0|1]\\])?$/;function W(t,e){var r,n,i,a=t.layout,l=t._fullLayout,c=l._guiEditing,h=F(l._preGUI,c),d=Object.keys(e),g=p.list(t),m=o.extendDeepAll({},e),v={};for(j(e),d=Object.keys(e),n=0;n0&&\"string\"!=typeof O.parts[D];)D--;var B=O.parts[D],N=O.parts[D-1]+\".\"+B,U=O.parts.slice(0,D).join(\".\"),V=s(t.layout,U).get(),H=s(l,U).get(),W=O.get();if(void 0!==z){M[I]=z,S[I]=\"reverse\"===B?z:R(W);var Z=f.getLayoutValObject(l,O.parts);if(Z&&Z.impliedEdits&&null!==z)for(var J in Z.impliedEdits)E(o.relativeAttr(I,J),Z.impliedEdits[J]);if(-1!==[\"width\",\"height\"].indexOf(I))if(z){E(\"autosize\",null);var K=\"height\"===I?\"width\":\"height\";E(K,l[K])}else l[I]=t._initialAutoSize[I];else if(\"autosize\"===I)E(\"width\",z?null:l.width),E(\"height\",z?null:l.height);else if(N.match(q))P(N),s(l,U+\"._inputRange\").set(null);else if(N.match(G)){P(N),s(l,U+\"._inputRange\").set(null);var Q=s(l,U).get();Q._inputDomain&&(Q._input.domain=Q._inputDomain.slice())}else N.match(Y)&&s(l,U+\"._inputDomain\").set(null);if(\"type\"===B){L=V;var $=\"linear\"===H.type&&\"log\"===z,tt=\"log\"===H.type&&\"linear\"===z;if($||tt){if(L&&L.range)if(H.autorange)$&&(L.range=L.range[1]>L.range[0]?[1,2]:[2,1]);else{var et=L.range[0],rt=L.range[1];$?(et<=0&&rt<=0&&E(U+\".autorange\",!0),et<=0?et=rt/1e6:rt<=0&&(rt=et/1e6),E(U+\".range[0]\",Math.log(et)/Math.LN10),E(U+\".range[1]\",Math.log(rt)/Math.LN10)):(E(U+\".range[0]\",Math.pow(10,et)),E(U+\".range[1]\",Math.pow(10,rt)))}else E(U+\".autorange\",!0);Array.isArray(l._subplots.polar)&&l._subplots.polar.length&&l[O.parts[0]]&&\"radialaxis\"===O.parts[1]&&delete l[O.parts[0]]._subplot.viewInitial[\"radialaxis.range\"],u.getComponentMethod(\"annotations\",\"convertCoords\")(t,H,z,E),u.getComponentMethod(\"images\",\"convertCoords\")(t,H,z,E)}else E(U+\".autorange\",!0),E(U+\".range\",null);s(l,U+\"._inputRange\").set(null)}else if(B.match(k)){var nt=s(l,I).get(),it=(z||{}).type;it&&\"-\"!==it||(it=\"linear\"),u.getComponentMethod(\"annotations\",\"convertCoords\")(t,nt,it,E),u.getComponentMethod(\"images\",\"convertCoords\")(t,nt,it,E)}var at=b.containerArrayMatch(I);if(at){r=at.array,n=at.index;var ot=at.property,st=Z||{editType:\"calc\"};\"\"!==n&&\"\"===ot&&(b.isAddVal(z)?S[I]=null:b.isRemoveVal(z)?S[I]=(s(a,r).get()||[])[n]:o.warn(\"unrecognized full object value\",e)),T.update(A,st),v[r]||(v[r]={});var lt=v[r][n];lt||(lt=v[r][n]={}),lt[ot]=z,delete e[I]}else\"reverse\"===B?(V.range?V.range.reverse():(E(U+\".autorange\",!0),V.range=[1,0]),H.autorange?A.calc=!0:A.plot=!0):(l._has(\"scatter-like\")&&l._has(\"regl\")&&\"dragmode\"===I&&(\"lasso\"===z||\"select\"===z)&&\"lasso\"!==W&&\"select\"!==W||l._has(\"gl2d\")?A.plot=!0:Z?T.update(A,Z):A.calc=!0,O.set(z))}}for(r in v){b.applyContainerArrayChanges(t,h(a,r),v[r],A,h)||(A.plot=!0)}for(var ct in C){var ut=(L=p.getFromId(t,ct))&&L._constraintGroup;if(ut)for(var ft in A.calc=!0,ut)C[ft]||(p.getFromId(t,ft)._constraintShrinkable=!0)}return(X(t)||e.height||e.width)&&(A.plot=!0),(A.plot||A.calc)&&(A.layoutReplot=!0),{flags:A,rangesAltered:C,undoit:S,redoit:M,eventData:m}}function X(t){var e=t._fullLayout,r=e.width,n=e.height;return t.layout.autosize&&h.plotAutoSize(t,t.layout,e),e.width!==r||e.height!==n}function Z(t,e,n,i){t=o.getGraphDiv(t),_.clearPromiseQueue(t),o.isPlainObject(e)||(e={}),o.isPlainObject(n)||(n={}),Object.keys(e).length&&(t.changed=!0),Object.keys(n).length&&(t.changed=!0);var a=_.coerceTraceIndices(t,i),s=N(t,o.extendFlat({},e),a),l=s.flags,u=W(t,o.extendFlat({},n)),f=u.flags;(l.calc||f.calc)&&(t.calcdata=void 0),l.clearAxisTypes&&_.clearAxisTypes(t,a,n);var p=[];f.layoutReplot?p.push(w.layoutReplot):l.fullReplot?p.push(r._doPlot):(p.push(h.previousPromises),V(t,f,u)||h.supplyDefaults(t),l.style&&p.push(w.doTraceStyle),(l.colorbars||f.colorbars)&&p.push(w.doColorBars),f.legend&&p.push(w.doLegend),f.layoutstyle&&p.push(w.layoutStyles),f.axrange&&H(p,u.rangesAltered),f.ticks&&p.push(w.doTicksRelayout),f.modebar&&p.push(w.doModeBar),f.camera&&p.push(w.doCamera),p.push(M)),p.push(h.rehover,h.redrag),c.add(t,Z,[t,s.undoit,u.undoit,s.traces],Z,[t,s.redoit,u.redoit,s.traces]);var d=o.syncOrAsync(p,t);return d&&d.then||(d=Promise.resolve(t)),d.then((function(){return t.emit(\"plotly_update\",{data:s.eventData,layout:u.eventData}),t}))}function J(t){return function(e){e._fullLayout._guiEditing=!0;var r=t.apply(null,arguments);return e._fullLayout._guiEditing=!1,r}}var K=[{pattern:/^hiddenlabels/,attr:\"legend.uirevision\"},{pattern:/^((x|y)axis\\d*)\\.((auto)?range|title\\.text)/},{pattern:/axis\\d*\\.showspikes$/,attr:\"modebar.uirevision\"},{pattern:/(hover|drag)mode$/,attr:\"modebar.uirevision\"},{pattern:/^(scene\\d*)\\.camera/},{pattern:/^(geo\\d*)\\.(projection|center|fitbounds)/},{pattern:/^(ternary\\d*\\.[abc]axis)\\.(min|title\\.text)$/},{pattern:/^(polar\\d*\\.radialaxis)\\.((auto)?range|angle|title\\.text)/},{pattern:/^(polar\\d*\\.angularaxis)\\.rotation/},{pattern:/^(mapbox\\d*)\\.(center|zoom|bearing|pitch)/},{pattern:/^legend\\.(x|y)$/,attr:\"editrevision\"},{pattern:/^(shapes|annotations)/,attr:\"editrevision\"},{pattern:/^title\\.text$/,attr:\"editrevision\"}],Q=[{pattern:/^selectedpoints$/,attr:\"selectionrevision\"},{pattern:/(^|value\\.)visible$/,attr:\"legend.uirevision\"},{pattern:/^dimensions\\[\\d+\\]\\.constraintrange/},{pattern:/^node\\.(x|y|groups)/},{pattern:/^level$/},{pattern:/(^|value\\.)name$/},{pattern:/colorbar\\.title\\.text$/},{pattern:/colorbar\\.(x|y)$/,attr:\"editrevision\"}];function $(t,e){for(var r=0;r1;)if(n.pop(),void 0!==(r=s(e,n.join(\".\")+\".uirevision\").get()))return r;return e.uirevision}function et(t,e){for(var r=0;r=i.length?i[0]:i[t]:i}function l(t){return Array.isArray(a)?t>=a.length?a[0]:a[t]:a}function c(t,e){var r=0;return function(){if(t&&++r===e)return t()}}return void 0===n._frameWaitingCnt&&(n._frameWaitingCnt=0),new Promise((function(a,u){function f(){n._currentFrame&&n._currentFrame.onComplete&&n._currentFrame.onComplete();var e=n._currentFrame=n._frameQueue.shift();if(e){var r=e.name?e.name.toString():null;t._fullLayout._currentFrame=r,n._lastFrameAt=Date.now(),n._timeToNext=e.frameOpts.duration,h.transition(t,e.frame.data,e.frame.layout,_.coerceTraceIndices(t,e.frame.traces),e.frameOpts,e.transitionOpts).then((function(){e.onComplete&&e.onComplete()})),t.emit(\"plotly_animatingframe\",{name:r,frame:e.frame,animation:{frame:e.frameOpts,transition:e.transitionOpts}})}else t.emit(\"plotly_animated\"),window.cancelAnimationFrame(n._animationRaf),n._animationRaf=null}function p(){t.emit(\"plotly_animating\"),n._lastFrameAt=-1/0,n._timeToNext=0,n._runningTransitions=0,n._currentFrame=null;var e=function(){n._animationRaf=window.requestAnimationFrame(e),Date.now()-n._lastFrameAt>n._timeToNext&&f()};e()}var d,g,m=0;function v(t){return Array.isArray(i)?m>=i.length?t.transitionOpts=i[m]:t.transitionOpts=i[0]:t.transitionOpts=i,m++,t}var y=[],x=null==e,b=Array.isArray(e);if(!x&&!b&&o.isPlainObject(e))y.push({type:\"object\",data:v(o.extendFlat({},e))});else if(x||-1!==[\"string\",\"number\"].indexOf(typeof e))for(d=0;d0&&kk)&&A.push(g);y=A}}y.length>0?function(e){if(0!==e.length){for(var i=0;i=0;n--)if(o.isPlainObject(e[n])){var g=e[n].name,m=(u[g]||d[g]||{}).name,v=e[n].name,y=u[m]||d[m];m&&v&&\"number\"==typeof v&&y&&A<5&&(A++,o.warn('addFrames: overwriting frame \"'+(u[m]||d[m]).name+'\" with a frame whose name of type \"number\" also equates to \"'+m+'\". This is valid but may potentially lead to unexpected behavior since all plotly.js frame names are stored internally as strings.'),5===A&&o.warn(\"addFrames: This API call has yielded too many of these warnings. For the rest of this call, further warnings about numeric frame names will be suppressed.\")),d[g]={name:g},p.push({frame:h.supplyFrameDefaults(e[n]),index:r&&void 0!==r[n]&&null!==r[n]?r[n]:f+n})}p.sort((function(t,e){return t.index>e.index?-1:t.index=0;n--){if(\"number\"==typeof(i=p[n].frame).name&&o.warn(\"Warning: addFrames accepts frames with numeric names, but the numbers areimplicitly cast to strings\"),!i.name)for(;u[i.name=\"frame \"+t._transitionData._counter++];);if(u[i.name]){for(a=0;a=0;r--)n=e[r],a.push({type:\"delete\",index:n}),s.unshift({type:\"insert\",index:n,value:i[n]});var l=h.modifyFrames,u=h.modifyFrames,f=[t,s],p=[t,a];return c&&c.add(t,l,f,u,p),h.modifyFrames(t,a)},r.addTraces=function t(e,n,i){e=o.getGraphDiv(e);var a,s,l=[],u=r.deleteTraces,f=t,h=[e,l],p=[e,n];for(function(t,e,r){var n,i;if(!Array.isArray(t.data))throw new Error(\"gd.data must be an array.\");if(void 0===e)throw new Error(\"traces must be defined.\");for(Array.isArray(e)||(e=[e]),n=0;n=0&&r=0&&r=a.length)return!1;if(2===t.dimensions){if(r++,e.length===r)return t;var o=e[r];if(!y(o))return!1;t=a[i][o]}else t=a[i]}else t=a}}return t}function y(t){return t===Math.round(t)&&t>=0}function x(){var t,e,r={};for(t in f(r,o),n.subplotsRegistry){if((e=n.subplotsRegistry[t]).layoutAttributes)if(Array.isArray(e.attr))for(var i=0;i=l.length)return!1;i=(r=(n.transformsRegistry[l[c].type]||{}).attributes)&&r[e[2]],s=3}else{var u=t._module;if(u||(u=(n.modules[t.type||a.type.dflt]||{})._module),!u)return!1;if(!(i=(r=u.attributes)&&r[o])){var f=u.basePlotModule;f&&f.attributes&&(i=f.attributes[o])}i||(i=a[o])}return v(i,e,s)},r.getLayoutValObject=function(t,e){return v(function(t,e){var r,i,a,s,l=t._basePlotModules;if(l){var c;for(r=0;r=i&&(r._input||{})._templateitemname;o&&(a=i);var s,l=e+\"[\"+a+\"]\";function c(){s={},o&&(s[l]={},s[l].templateitemname=o)}function u(t,e){o?n.nestedProperty(s[l],t).set(e):s[l+\".\"+t]=e}function f(){var t=s;return c(),t}return c(),{modifyBase:function(t,e){s[t]=e},modifyItem:u,getUpdateObj:f,applyUpdate:function(e,r){e&&u(e,r);var i=f();for(var a in i)n.nestedProperty(t,a).set(i[a])}}}},{\"../lib\":503,\"../plots/attributes\":550}],544:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../registry\"),a=t(\"../plots/plots\"),o=t(\"../lib\"),s=t(\"../lib/clear_gl_canvases\"),l=t(\"../components/color\"),c=t(\"../components/drawing\"),u=t(\"../components/titles\"),f=t(\"../components/modebar\"),h=t(\"../plots/cartesian/axes\"),p=t(\"../constants/alignment\"),d=t(\"../plots/cartesian/constraints\"),g=d.enforce,m=d.clean,v=t(\"../plots/cartesian/autorange\").doAutoRange;function y(t,e,r){for(var n=0;n=t[1]||i[1]<=t[0])&&(a[0]e[0]))return!0}return!1}function x(t){var e,i,s,u,d,g,m=t._fullLayout,v=m._size,x=v.p,_=h.list(t,\"\",!0);if(m._paperdiv.style({width:t._context.responsive&&m.autosize&&!t._context._hasZeroWidth&&!t.layout.width?\"100%\":m.width+\"px\",height:t._context.responsive&&m.autosize&&!t._context._hasZeroHeight&&!t.layout.height?\"100%\":m.height+\"px\"}).selectAll(\".main-svg\").call(c.setSize,m.width,m.height),t._context.setBackground(t,m.paper_bgcolor),r.drawMainTitle(t),f.manage(t),!m._has(\"cartesian\"))return a.previousPromises(t);function T(t,e,r){var n=t._lw/2;return\"x\"===t._id.charAt(0)?e?\"top\"===r?e._offset-x-n:e._offset+e._length+x+n:v.t+v.h*(1-(t.position||0))+n%1:e?\"right\"===r?e._offset+e._length+x+n:e._offset-x-n:v.l+v.w*(t.position||0)+n%1}for(e=0;e<_.length;e++){var k=(u=_[e])._anchorAxis;u._linepositions={},u._lw=c.crispRound(t,u.linewidth,1),u._mainLinePosition=T(u,k,u.side),u._mainMirrorPosition=u.mirror&&k?T(u,k,p.OPPOSITE_SIDE[u.side]):null}var A=[],M=[],S=[],E=1===l.opacity(m.paper_bgcolor)&&1===l.opacity(m.plot_bgcolor)&&m.paper_bgcolor===m.plot_bgcolor;for(i in m._plots)if((s=m._plots[i]).mainplot)s.bg&&s.bg.remove(),s.bg=void 0;else{var L=s.xaxis.domain,C=s.yaxis.domain,P=s.plotgroup;if(y(L,C,S)){var I=P.node(),O=s.bg=o.ensureSingle(P,\"rect\",\"bg\");I.insertBefore(O.node(),I.childNodes[0]),M.push(i)}else P.select(\"rect.bg\").remove(),S.push([L,C]),E||(A.push(i),M.push(i))}var z,D,R,F,B,N,j,U,V,H,q,G,Y,W=m._bgLayer.selectAll(\".bg\").data(A);for(W.enter().append(\"rect\").classed(\"bg\",!0),W.exit().remove(),W.each((function(t){m._plots[t].bg=n.select(this)})),e=0;eT?u.push({code:\"unused\",traceType:y,templateCount:w,dataCount:T}):T>w&&u.push({code:\"reused\",traceType:y,templateCount:w,dataCount:T})}}else u.push({code:\"data\"});if(function t(e,r){for(var n in e)if(\"_\"!==n.charAt(0)){var a=e[n],o=g(e,n,r);i(a)?(Array.isArray(e)&&!1===a._template&&a.templateitemname&&u.push({code:\"missing\",path:o,templateitemname:a.templateitemname}),t(a,o)):Array.isArray(a)&&m(a)&&t(a,o)}}({data:p,layout:h},\"\"),u.length)return u.map(v)}},{\"../lib\":503,\"../plots/attributes\":550,\"../plots/plots\":619,\"./plot_config\":541,\"./plot_schema\":542,\"./plot_template\":543}],546:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"./plot_api\"),a=t(\"../plots/plots\"),o=t(\"../lib\"),s=t(\"../snapshot/helpers\"),l=t(\"../snapshot/tosvg\"),c=t(\"../snapshot/svgtoimg\"),u=t(\"../version\").version,f={format:{valType:\"enumerated\",values:[\"png\",\"jpeg\",\"webp\",\"svg\",\"full-json\"],dflt:\"png\"},width:{valType:\"number\",min:1},height:{valType:\"number\",min:1},scale:{valType:\"number\",min:0,dflt:1},setBackground:{valType:\"any\",dflt:!1},imageDataOnly:{valType:\"boolean\",dflt:!1}};e.exports=function(t,e){var r,h,p,d;function g(t){return!(t in e)||o.validate(e[t],f[t])}if(e=e||{},o.isPlainObject(t)?(r=t.data||[],h=t.layout||{},p=t.config||{},d={}):(t=o.getGraphDiv(t),r=o.extendDeep([],t.data),h=o.extendDeep({},t.layout),p=t._context,d=t._fullLayout||{}),!g(\"width\")&&null!==e.width||!g(\"height\")&&null!==e.height)throw new Error(\"Height and width should be pixel values.\");if(!g(\"format\"))throw new Error(\"Export format is not \"+o.join2(f.format.values,\", \",\" or \")+\".\");var m={};function v(t,r){return o.coerce(e,m,f,t,r)}var y=v(\"format\"),x=v(\"width\"),b=v(\"height\"),_=v(\"scale\"),w=v(\"setBackground\"),T=v(\"imageDataOnly\"),k=document.createElement(\"div\");k.style.position=\"absolute\",k.style.left=\"-5000px\",document.body.appendChild(k);var A=o.extendFlat({},h);x?A.width=x:null===e.width&&n(d.width)&&(A.width=d.width),b?A.height=b:null===e.height&&n(d.height)&&(A.height=d.height);var M=o.extendFlat({},p,{_exportedPlot:!0,staticPlot:!0,setBackground:w}),S=s.getRedrawFunc(k);function E(){return new Promise((function(t){setTimeout(t,s.getDelay(k._fullLayout))}))}function L(){return new Promise((function(t,e){var r=l(k,y,_),n=k._fullLayout.width,f=k._fullLayout.height;function h(){i.purge(k),document.body.removeChild(k)}if(\"full-json\"===y){var p=a.graphJson(k,!1,\"keepdata\",\"object\",!0,!0);return p.version=u,p=JSON.stringify(p),h(),t(T?p:s.encodeJSON(p))}if(h(),\"svg\"===y)return t(T?r:s.encodeSVG(r));var d=document.createElement(\"canvas\");d.id=o.randstr(),c({format:y,width:n,height:f,scale:_,canvas:d,svg:r,promise:!0}).then(t).catch(e)}))}return new Promise((function(t,e){i.newPlot(k,r,A,M).then(S).then(E).then(L).then((function(e){t(function(t){return T?t.replace(s.IMAGE_URL_PREFIX,\"\"):t}(e))})).catch((function(t){e(t)}))}))}},{\"../lib\":503,\"../plots/plots\":619,\"../snapshot/helpers\":642,\"../snapshot/svgtoimg\":644,\"../snapshot/tosvg\":646,\"../version\":1119,\"./plot_api\":540,\"fast-isnumeric\":190}],547:[function(t,e,r){\"use strict\";var n=t(\"../lib\"),i=t(\"../plots/plots\"),a=t(\"./plot_schema\"),o=t(\"./plot_config\").dfltConfig,s=n.isPlainObject,l=Array.isArray,c=n.isArrayOrTypedArray;function u(t,e,r,i,a,o){o=o||[];for(var f=Object.keys(t),h=0;hx.length&&i.push(d(\"unused\",a,v.concat(x.length)));var A,M,S,E,L,C=x.length,P=Array.isArray(k);if(P&&(C=Math.min(C,k.length)),2===b.dimensions)for(M=0;Mx[M].length&&i.push(d(\"unused\",a,v.concat(M,x[M].length)));var I=x[M].length;for(A=0;A<(P?Math.min(I,k[M].length):I);A++)S=P?k[M][A]:k,E=y[M][A],L=x[M][A],n.validate(E,S)?L!==E&&L!==+E&&i.push(d(\"dynamic\",a,v.concat(M,A),E,L)):i.push(d(\"value\",a,v.concat(M,A),E))}else i.push(d(\"array\",a,v.concat(M),y[M]));else for(M=0;M1&&p.push(d(\"object\",\"layout\"))),i.supplyDefaults(g);for(var m=g._fullData,v=r.length,y=0;y0&&Math.round(f)===f))return{vals:i};c=f}for(var h=e.calendar,p=\"start\"===l,d=\"end\"===l,g=t[r+\"period0\"],m=a(g,h)||0,v=[],y=[],x=[],b=i.length,_=0;_A;)k=o(k,-c,h);for(;k<=A;)k=o(k,c,h);T=o(k,-c,h)}else{for(k=m+(w=Math.round((A-m)/u))*u;k>A;)k-=u;for(;k<=A;)k+=u;T=k-u}v[_]=p?T:d?k:(T+k)/2,y[_]=T,x[_]=k}return{vals:v,starts:y,ends:x}}},{\"../../constants/numerical\":479,\"../../lib\":503,\"fast-isnumeric\":190}],552:[function(t,e,r){\"use strict\";e.exports={xaxis:{valType:\"subplotid\",dflt:\"x\",editType:\"calc+clearAxisTypes\"},yaxis:{valType:\"subplotid\",dflt:\"y\",editType:\"calc+clearAxisTypes\"}}},{}],553:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"fast-isnumeric\"),a=t(\"../../lib\"),o=t(\"../../constants/numerical\").FP_SAFE,s=t(\"../../registry\"),l=t(\"../../components/drawing\"),c=t(\"./axis_ids\"),u=c.getFromId,f=c.isLinked;function h(t,e){var r,n,i=[],o=t._fullLayout,s=d(o,e,0),l=d(o,e,1),c=g(t,e),u=c.min,f=c.max;if(0===u.length||0===f.length)return a.simpleMap(e.range,e.r2l);var h=u[0].val,m=f[0].val;for(r=1;r0&&((T=E-s(x)-l(b))>L?k/T>C&&(_=x,w=b,C=k/T):k/E>C&&(_={val:x.val,nopad:1},w={val:b.val,nopad:1},C=k/E));if(h===m){var P=h-1,I=h+1;if(M)if(0===h)i=[0,1];else{var O=(h>0?f:u).reduce((function(t,e){return Math.max(t,l(e))}),0),z=h/(1-Math.min(.5,O/E));i=h>0?[0,z]:[z,0]}else i=S?[Math.max(0,P),Math.max(1,I)]:[P,I]}else M?(_.val>=0&&(_={val:0,nopad:1}),w.val<=0&&(w={val:0,nopad:1})):S&&(_.val-C*s(_)<0&&(_={val:0,nopad:1}),w.val<=0&&(w={val:1,nopad:1})),C=(w.val-_.val-p(e,x.val,b.val))/(E-s(_)-l(w)),i=[_.val-C*s(_),w.val+C*l(w)];return v&&i.reverse(),a.simpleMap(i,e.l2r||Number)}function p(t,e,r){var n=0;if(t.rangebreaks)for(var i=t.locateBreaks(e,r),a=0;a0?r.ppadplus:r.ppadminus)||r.ppad||0),S=A((t._m>0?r.ppadminus:r.ppadplus)||r.ppad||0),E=A(r.vpadplus||r.vpad),L=A(r.vpadminus||r.vpad);if(!T){if(h=1/0,p=-1/0,w)for(n=0;n0&&(h=a),a>p&&a-o&&(h=a),a>p&&a=I;n--)P(n);return{min:d,max:g,opts:r}},concatExtremes:g};function g(t,e,r){var n,i,a,o=e._id,s=t._fullData,l=t._fullLayout,c=[],f=[];function h(t,e){for(n=0;n=r&&(c.extrapad||!o)){s=!1;break}i(e,c.val)&&c.pad<=r&&(o||!c.extrapad)&&(t.splice(l,1),l--)}if(s){var u=a&&0===e;t.push({val:e,pad:u?0:r,extrapad:!u&&o})}}function x(t){return i(t)&&Math.abs(t)=e}},{\"../../components/drawing\":388,\"../../constants/numerical\":479,\"../../lib\":503,\"../../registry\":638,\"./axis_ids\":558,\"@plotly/d3\":58,\"fast-isnumeric\":190}],554:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"fast-isnumeric\"),a=t(\"../../plots/plots\"),o=t(\"../../registry\"),s=t(\"../../lib\"),l=s.strTranslate,c=t(\"../../lib/svg_text_utils\"),u=t(\"../../components/titles\"),f=t(\"../../components/color\"),h=t(\"../../components/drawing\"),p=t(\"./layout_attributes\"),d=t(\"./clean_ticks\"),g=t(\"../../constants/numerical\"),m=g.ONEMAXYEAR,v=g.ONEAVGYEAR,y=g.ONEMINYEAR,x=g.ONEMAXQUARTER,b=g.ONEAVGQUARTER,_=g.ONEMINQUARTER,w=g.ONEMAXMONTH,T=g.ONEAVGMONTH,k=g.ONEMINMONTH,A=g.ONEWEEK,M=g.ONEDAY,S=M/2,E=g.ONEHOUR,L=g.ONEMIN,C=g.ONESEC,P=g.MINUS_SIGN,I=g.BADNUM,O={K:\"zeroline\"},z={K:\"gridline\",L:\"path\"},D={K:\"tick\",L:\"path\"},R={K:\"tick\",L:\"text\"},F=t(\"../../constants/alignment\"),B=F.MID_SHIFT,N=F.CAP_SHIFT,j=F.LINE_SPACING,U=F.OPPOSITE_SIDE,V=e.exports={};V.setConvert=t(\"./set_convert\");var H=t(\"./axis_autotype\"),q=t(\"./axis_ids\"),G=q.idSort,Y=q.isLinked;V.id2name=q.id2name,V.name2id=q.name2id,V.cleanId=q.cleanId,V.list=q.list,V.listIds=q.listIds,V.getFromId=q.getFromId,V.getFromTrace=q.getFromTrace;var W=t(\"./autorange\");V.getAutoRange=W.getAutoRange,V.findExtremes=W.findExtremes;function X(t){var e=1e-4*(t[1]-t[0]);return[t[0]-e,t[1]+e]}V.coerceRef=function(t,e,r,n,i,a){var o=n.charAt(n.length-1),l=r._fullLayout._subplots[o+\"axis\"],c=n+\"ref\",u={};return i||(i=l[0]||(\"string\"==typeof a?a:a[0])),a||(a=i),l=l.concat(l.map((function(t){return t+\" domain\"}))),u[c]={valType:\"enumerated\",values:l.concat(a?\"string\"==typeof a?[a]:a:[]),dflt:i},s.coerce(t,e,u,c)},V.getRefType=function(t){return void 0===t?t:\"paper\"===t?\"paper\":\"pixel\"===t?\"pixel\":/( domain)$/.test(t)?\"domain\":\"range\"},V.coercePosition=function(t,e,r,n,i,a){var o,l;if(\"range\"!==V.getRefType(n))o=s.ensureNumber,l=r(i,a);else{var c=V.getFromId(e,n);l=r(i,a=c.fraction2r(a)),o=c.cleanPos}t[i]=o(l)},V.cleanPosition=function(t,e,r){return(\"paper\"===r||\"pixel\"===r?s.ensureNumber:V.getFromId(e,r).cleanPos)(t)},V.redrawComponents=function(t,e){e=e||V.listIds(t);var r=t._fullLayout;function n(n,i,a,s){for(var l=o.getComponentMethod(n,i),c={},u=0;u2e-6||((r-t._forceTick0)/t._minDtick%1+1.000001)%1>2e-6)&&(t._minDtick=0)):t._minDtick=0},V.saveRangeInitial=function(t,e){for(var r=V.list(t,\"\",!0),n=!1,i=0;i.3*h||u(n)||u(a))){var p=r.dtick/2;t+=t+p.8){var o=Number(r.substr(1));a.exactYears>.8&&o%12==0?t=V.tickIncrement(t,\"M6\",\"reverse\")+1.5*M:a.exactMonths>.8?t=V.tickIncrement(t,\"M1\",\"reverse\")+15.5*M:t-=S;var l=V.tickIncrement(t,r);if(l<=n)return l}return t}(y,t,v,c,a)),m=y,0;m<=u;)m=V.tickIncrement(m,v,!1,a);return{start:e.c2r(y,0,a),end:e.c2r(m,0,a),size:v,_dataSpan:u-c}},V.prepTicks=function(t,e){var r=s.simpleMap(t.range,t.r2l,void 0,void 0,e);if(t._dtickInit=t.dtick,t._tick0Init=t.tick0,\"auto\"===t.tickmode||!t.dtick){var n,a=t.nticks;a||(\"category\"===t.type||\"multicategory\"===t.type?(n=t.tickfont?s.bigFont(t.tickfont.size||12):15,a=t._length/n):(n=\"y\"===t._id.charAt(0)?40:80,a=s.constrain(t._length/n,4,9)+1),\"radialaxis\"===t._name&&(a*=2)),\"array\"===t.tickmode&&(a*=100),t._roughDTick=Math.abs(r[1]-r[0])/a,V.autoTicks(t,t._roughDTick),t._minDtick>0&&t.dtick<2*t._minDtick&&(t.dtick=t._minDtick,t.tick0=t.l2r(t._forceTick0))}\"period\"===t.ticklabelmode&&function(t){var e;function r(){return!(i(t.dtick)||\"M\"!==t.dtick.charAt(0))}var n=r(),a=V.getTickFormat(t);if(a){var o=t._dtickInit!==t.dtick;/%[fLQsSMX]/.test(a)||(/%[HI]/.test(a)?(e=E,o&&!n&&t.dticka&&f=o:d<=o;d=V.tickIncrement(d,t.dtick,l,t.calendar)){if(R++,t.rangebreaks&&!l){if(d=u)break}if(P.length>C||d===O)break;O=d;var F=!1;h&&d!==(0|d)&&(F=!0);var B={minor:F,value:d};L>1&&R%L&&(B.skipLabel=!0),P.push(B)}if(p&&function(t,e,r){for(var n=0;n0?(a=n-1,o=n):(a=n,o=n);var s,l=t[a].value,c=t[o].value,u=Math.abs(c-l),f=r||u,h=0;f>=y?h=u>=y&&u<=m?u:v:r===b&&f>=_?h=u>=_&&u<=x?u:b:f>=k?h=u>=k&&u<=w?u:T:r===A&&f>=A?h=A:f>=M?h=M:r===S&&f>=S?h=S:r===E&&f>=E&&(h=E),h>=u&&(h=u,s=!0);var p=i+h;if(e.rangebreaks&&h>0){for(var d=0,g=0;g<84;g++){var L=(g+.5)/84;e.maskBreaks(i*(1-L)+L*p)!==I&&d++}(h*=d/84)||(t[n].drop=!0),s&&u>A&&(h=u)}(h>0||0===n)&&(t[n].periodX=i+h/2)}}(P,t,t._definedDelta),t.rangebreaks){var N=\"y\"===t._id.charAt(0),j=1;\"auto\"===t.tickmode&&(j=t.tickfont?t.tickfont.size:12);var U=NaN;for(z=P.length-1;z>-1;z--)if(P[z].drop)P.splice(z,1);else{P[z].value=Mt(P[z].value,t);var H=t.c2p(P[z].value);(N?U>H-j:Uu||Gu&&(q.periodX=u),G10||\"01-01\"!==n.substr(5)?t._tickround=\"d\":t._tickround=+e.substr(1)%12==0?\"y\":\"m\";else if(e>=M&&a<=10||e>=15*M)t._tickround=\"d\";else if(e>=L&&a<=16||e>=E)t._tickround=\"M\";else if(e>=C&&a<=19||e>=L)t._tickround=\"S\";else{var o=t.l2r(r+e).replace(/^-/,\"\").length;t._tickround=Math.max(a,o)-20,t._tickround<0&&(t._tickround=4)}}else if(i(e)||\"L\"===e.charAt(0)){var s=t.range.map(t.r2d||Number);i(e)||(e=Number(e.substr(1))),t._tickround=2-Math.floor(Math.log(e)/Math.LN10+.01);var l=Math.max(Math.abs(s[0]),Math.abs(s[1])),c=Math.floor(Math.log(l)/Math.LN10+.01),u=void 0===t.minexponent?3:t.minexponent;Math.abs(c)>u&&(ut(t.exponentformat)&&!ft(c)?t._tickexponent=3*Math.round((c-1)/3):t._tickexponent=c)}else t._tickround=null}function lt(t,e,r){var n=t.tickfont||{};return{x:e,dx:0,dy:0,text:r||\"\",fontSize:n.size,font:n.family,fontColor:n.color}}V.autoTicks=function(t,e){var r;function n(t){return Math.pow(t,Math.floor(Math.log(e)/Math.LN10))}if(\"date\"===t.type){t.tick0=s.dateTick0(t.calendar,0);var a=2*e;if(a>v)e/=v,r=n(10),t.dtick=\"M\"+12*ot(e,r,$);else if(a>T)e/=T,t.dtick=\"M\"+ot(e,1,tt);else if(a>M){t.dtick=ot(e,M,t._hasDayOfWeekBreaks?[1,2,7,14]:rt);var o=V.getTickFormat(t),l=\"period\"===t.ticklabelmode;l&&(t._rawTick0=t.tick0),/%[uVW]/.test(o)?t.tick0=s.dateTick0(t.calendar,2):t.tick0=s.dateTick0(t.calendar,1),l&&(t._dowTick0=t.tick0)}else a>E?t.dtick=ot(e,E,tt):a>L?t.dtick=ot(e,L,et):a>C?t.dtick=ot(e,C,et):(r=n(10),t.dtick=ot(e,r,$))}else if(\"log\"===t.type){t.tick0=0;var c=s.simpleMap(t.range,t.r2l);if(e>.7)t.dtick=Math.ceil(e);else if(Math.abs(c[1]-c[0])<1){var u=1.5*Math.abs((c[1]-c[0])/e);e=Math.abs(Math.pow(10,c[1])-Math.pow(10,c[0]))/u,r=n(10),t.dtick=\"L\"+ot(e,r,$)}else t.dtick=e>.3?\"D2\":\"D1\"}else\"category\"===t.type||\"multicategory\"===t.type?(t.tick0=0,t.dtick=Math.ceil(Math.max(e,1))):At(t)?(t.tick0=0,r=1,t.dtick=ot(e,r,at)):(t.tick0=0,r=n(10),t.dtick=ot(e,r,$));if(0===t.dtick&&(t.dtick=1),!i(t.dtick)&&\"string\"!=typeof t.dtick){var f=t.dtick;throw t.dtick=1,\"ax.dtick error: \"+String(f)}},V.tickIncrement=function(t,e,r,a){var o=r?-1:1;if(i(e))return s.increment(t,o*e);var l=e.charAt(0),c=o*Number(e.substr(1));if(\"M\"===l)return s.incrementMonth(t,c,a);if(\"L\"===l)return Math.log(Math.pow(10,t)+c)/Math.LN10;if(\"D\"===l){var u=\"D2\"===e?it:nt,f=t+.01*o,h=s.roundUp(s.mod(f,1),u,r);return Math.floor(f)+Math.log(n.round(Math.pow(10,h),1))/Math.LN10}throw\"unrecognized dtick \"+String(e)},V.tickFirst=function(t,e){var r=t.r2l||Number,a=s.simpleMap(t.range,r,void 0,void 0,e),o=a[1] \")}else t._prevDateHead=l,c+=\"
\"+l;e.text=c}(t,o,r,c):\"log\"===u?function(t,e,r,n,a){var o=t.dtick,l=e.x,c=t.tickformat,u=\"string\"==typeof o&&o.charAt(0);\"never\"===a&&(a=\"\");n&&\"L\"!==u&&(o=\"L3\",u=\"L\");if(c||\"L\"===u)e.text=ht(Math.pow(10,l),t,a,n);else if(i(o)||\"D\"===u&&s.mod(l+.01,1)<.1){var f=Math.round(l),h=Math.abs(f),p=t.exponentformat;\"power\"===p||ut(p)&&ft(f)?(e.text=0===f?1:1===f?\"10\":\"10\"+(f>1?\"\":P)+h+\"\",e.fontSize*=1.25):(\"e\"===p||\"E\"===p)&&h>2?e.text=\"1\"+p+(f>0?\"+\":P)+h:(e.text=ht(Math.pow(10,l),t,\"\",\"fakehover\"),\"D1\"===o&&\"y\"===t._id.charAt(0)&&(e.dy-=e.fontSize/6))}else{if(\"D\"!==u)throw\"unrecognized dtick \"+String(o);e.text=String(Math.round(Math.pow(10,s.mod(l,1)))),e.fontSize*=.75}if(\"D1\"===t.dtick){var d=String(e.text).charAt(0);\"0\"!==d&&\"1\"!==d||(\"y\"===t._id.charAt(0)?e.dx-=e.fontSize/4:(e.dy+=e.fontSize/2,e.dx+=(t.range[1]>t.range[0]?1:-1)*e.fontSize*(l<0?.5:.25)))}}(t,o,0,c,g):\"category\"===u?function(t,e){var r=t._categories[Math.round(e.x)];void 0===r&&(r=\"\");e.text=String(r)}(t,o):\"multicategory\"===u?function(t,e,r){var n=Math.round(e.x),i=t._categories[n]||[],a=void 0===i[1]?\"\":String(i[1]),o=void 0===i[0]?\"\":String(i[0]);r?e.text=o+\" - \"+a:(e.text=a,e.text2=o)}(t,o,r):At(t)?function(t,e,r,n,i){if(\"radians\"!==t.thetaunit||r)e.text=ht(e.x,t,i,n);else{var a=e.x/180;if(0===a)e.text=\"0\";else{var o=function(t){function e(t,e){return Math.abs(t-e)<=1e-6}var r=function(t){for(var r=1;!e(Math.round(t*r)/r,t);)r*=10;return r}(t),n=t*r,i=Math.abs(function t(r,n){return e(n,0)?r:t(n,r%n)}(n,r));return[Math.round(n/i),Math.round(r/i)]}(a);if(o[1]>=100)e.text=ht(s.deg2rad(e.x),t,i,n);else{var l=e.x<0;1===o[1]?1===o[0]?e.text=\"\\u03c0\":e.text=o[0]+\"\\u03c0\":e.text=[\"\",o[0],\"\",\"\\u2044\",\"\",o[1],\"\",\"\\u03c0\"].join(\"\"),l&&(e.text=P+e.text)}}}}(t,o,r,c,g):function(t,e,r,n,i){\"never\"===i?i=\"\":\"all\"===t.showexponent&&Math.abs(e.x/t.dtick)<1e-6&&(i=\"hide\");e.text=ht(e.x,t,i,n)}(t,o,0,c,g),n||(t.tickprefix&&!d(t.showtickprefix)&&(o.text=t.tickprefix+o.text),t.ticksuffix&&!d(t.showticksuffix)&&(o.text+=t.ticksuffix)),\"boundaries\"===t.tickson||t.showdividers){var m=function(e){var r=t.l2p(e);return r>=0&&r<=t._length?e:null};o.xbnd=[m(o.x-.5),m(o.x+t.dtick-.5)]}return o},V.hoverLabelText=function(t,e,r){r&&(t=s.extendFlat({},t,{hoverformat:r}));var n=Array.isArray(e)?e[0]:e,i=Array.isArray(e)?e[1]:void 0;if(void 0!==i&&i!==n)return V.hoverLabelText(t,n,r)+\" - \"+V.hoverLabelText(t,i,r);var a=\"log\"===t.type&&n<=0,o=V.tickText(t,t.c2l(a?-n:n),\"hover\").text;return a?0===n?\"0\":P+o:o};var ct=[\"f\",\"p\",\"n\",\"\\u03bc\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\"];function ut(t){return\"SI\"===t||\"B\"===t}function ft(t){return t>14||t<-15}function ht(t,e,r,n){var a=t<0,o=e._tickround,l=r||e.exponentformat||\"B\",c=e._tickexponent,u=V.getTickFormat(e),f=e.separatethousands;if(n){var h={exponentformat:l,minexponent:e.minexponent,dtick:\"none\"===e.showexponent?e.dtick:i(t)&&Math.abs(t)||1,range:\"none\"===e.showexponent?e.range.map(e.r2d):[0,t||1]};st(h),o=(Number(h._tickround)||0)+4,c=h._tickexponent,e.hoverformat&&(u=e.hoverformat)}if(u)return e._numFormat(u)(t).replace(/-/g,P);var p,d=Math.pow(10,-o)/2;if(\"none\"===l&&(c=0),(t=Math.abs(t))\"+p+\"\":\"B\"===l&&9===c?t+=\"B\":ut(l)&&(t+=ct[c/3+5]));return a?P+t:t}function pt(t,e){for(var r=[],n={},i=0;i1&&r=i.min&&t=0,a=u(t,e[1])<=0;return(r||i)&&(n||a)}if(t.tickformatstops&&t.tickformatstops.length>0)switch(t.type){case\"date\":case\"linear\":for(e=0;e=o(i)))){r=n;break}break;case\"log\":for(e=0;e0?r.bottom-f:0,h)))),e.automargin){n={x:0,y:0,r:0,l:0,t:0,b:0};var p=[0,1];if(\"x\"===d){if(\"b\"===l?n[l]=e._depth:(n[l]=e._depth=Math.max(r.width>0?f-r.top:0,h),p.reverse()),r.width>0){var m=r.right-(e._offset+e._length);m>0&&(n.xr=1,n.r=m);var v=e._offset-r.left;v>0&&(n.xl=0,n.l=v)}}else if(\"l\"===l?n[l]=e._depth=Math.max(r.height>0?f-r.left:0,h):(n[l]=e._depth=Math.max(r.height>0?r.right-f:0,h),p.reverse()),r.height>0){var y=r.bottom-(e._offset+e._length);y>0&&(n.yb=0,n.b=y);var x=e._offset-r.top;x>0&&(n.yt=1,n.t=x)}n[g]=\"free\"===e.anchor?e.position:e._anchorAxis.domain[p[0]],e.title.text!==c._dfltTitle[d]&&(n[l]+=mt(e)+(e.title.standoff||0)),e.mirror&&\"free\"!==e.anchor&&((i={x:0,y:0,r:0,l:0,t:0,b:0})[u]=e.linewidth,e.mirror&&!0!==e.mirror&&(i[u]+=h),!0===e.mirror||\"ticks\"===e.mirror?i[g]=e._anchorAxis.domain[p[1]]:\"all\"!==e.mirror&&\"allticks\"!==e.mirror||(i[g]=[e._counterDomainMin,e._counterDomainMax][p[1]]))}K&&(s=o.getComponentMethod(\"rangeslider\",\"autoMarginOpts\")(t,e)),a.autoMargin(t,xt(e),n),a.autoMargin(t,bt(e),i),a.autoMargin(t,_t(e),s)})),r.skipTitle||K&&\"bottom\"===e.side||Z.push((function(){return function(t,e){var r,n=t._fullLayout,i=e._id,a=i.charAt(0),o=e.title.font.size;if(e.title.hasOwnProperty(\"standoff\"))r=e._depth+e.title.standoff+mt(e);else{var s=St(e);if(\"multicategory\"===e.type)r=e._depth;else{var l=1.5*o;s&&(l=.5*o,\"outside\"===e.ticks&&(l+=e.ticklen)),r=10+l+(e.linewidth?e.linewidth-1:0)}s||(r+=\"x\"===a?\"top\"===e.side?o*(e.showticklabels?1:0):o*(e.showticklabels?1.5:.5):\"right\"===e.side?o*(e.showticklabels?1:.5):o*(e.showticklabels?.5:0))}var c,f,p,d,g=V.getPxPosition(t,e);\"x\"===a?(f=e._offset+e._length/2,p=\"top\"===e.side?g-r:g+r):(p=e._offset+e._length/2,f=\"right\"===e.side?g+r:g-r,c={rotate:\"-90\",offset:0});if(\"multicategory\"!==e.type){var m=e._selections[e._id+\"tick\"];if(d={selection:m,side:e.side},m&&m.node()&&m.node().parentNode){var v=h.getTranslate(m.node().parentNode);d.offsetLeft=v.x,d.offsetTop=v.y}e.title.hasOwnProperty(\"standoff\")&&(d.pad=0)}return u.draw(t,i+\"title\",{propContainer:e,propName:e._name+\".title.text\",placeholder:n._dfltTitle[a],avoid:d,transform:c,attributes:{x:f,y:p,\"text-anchor\":\"middle\"}})}(t,e)})),s.syncOrAsync(Z)}}function Q(t){var r=p+(t||\"tick\");return w[r]||(w[r]=function(t,e){var r,n,i,a;t._selections[e].size()?(r=1/0,n=-1/0,i=1/0,a=-1/0,t._selections[e].each((function(){var t=yt(this),e=h.bBox(t.node().parentNode);r=Math.min(r,e.top),n=Math.max(n,e.bottom),i=Math.min(i,e.left),a=Math.max(a,e.right)}))):(r=0,n=0,i=0,a=0);return{top:r,bottom:n,left:i,right:a,height:n-r,width:a-i}}(e,r)),w[r]}},V.getTickSigns=function(t){var e=t._id.charAt(0),r={x:\"top\",y:\"right\"}[e],n=t.side===r?1:-1,i=[-1,1,n,-n];return\"inside\"!==t.ticks==(\"x\"===e)&&(i=i.map((function(t){return-t}))),t.side&&i.push({l:-1,t:-1,r:1,b:1}[t.side.charAt(0)]),i},V.makeTransTickFn=function(t){return\"x\"===t._id.charAt(0)?function(e){return l(t._offset+t.l2p(e.x),0)}:function(e){return l(0,t._offset+t.l2p(e.x))}},V.makeTransTickLabelFn=function(t){var e=function(t){var e=t.ticklabelposition||\"\",r=function(t){return-1!==e.indexOf(t)},n=r(\"top\"),i=r(\"left\"),a=r(\"right\"),o=r(\"bottom\"),s=r(\"inside\"),l=o||i||n||a;if(!l&&!s)return[0,0];var c=t.side,u=l?(t.tickwidth||0)/2:0,f=3,h=t.tickfont?t.tickfont.size:12;(o||n)&&(u+=h*N,f+=(t.linewidth||0)/2);(i||a)&&(u+=(t.linewidth||0)/2,f+=3);s&&\"top\"===c&&(f-=h*(1-N));(i||n)&&(u=-u);\"bottom\"!==c&&\"right\"!==c||(f=-f);return[l?u:0,s?f:0]}(t),r=e[0],n=e[1];return\"x\"===t._id.charAt(0)?function(e){return l(r+t._offset+t.l2p(dt(e)),n)}:function(e){return l(n,r+t._offset+t.l2p(dt(e)))}},V.makeTickPath=function(t,e,r,n){n=void 0!==n?n:t.ticklen;var i=t._id.charAt(0),a=(t.linewidth||1)/2;return\"x\"===i?\"M0,\"+(e+a*r)+\"v\"+n*r:\"M\"+(e+a*r)+\",0h\"+n*r},V.makeLabelFns=function(t,e,r){var n=t.ticklabelposition||\"\",a=function(t){return-1!==n.indexOf(t)},o=a(\"top\"),l=a(\"left\"),c=a(\"right\"),u=a(\"bottom\")||l||o||c,f=a(\"inside\"),h=\"inside\"===n&&\"inside\"===t.ticks||!f&&\"outside\"===t.ticks&&\"boundaries\"!==t.tickson,p=0,d=0,g=h?t.ticklen:0;if(f?g*=-1:u&&(g=0),h&&(p+=g,r)){var m=s.deg2rad(r);p=g*Math.cos(m)+1,d=g*Math.sin(m)}t.showticklabels&&(h||t.showline)&&(p+=.2*t.tickfont.size);var v,y,x,b,_,w={labelStandoff:p+=(t.linewidth||1)/2*(f?-1:1),labelShift:d},T=0,k=t.side,A=t._id.charAt(0),M=t.tickangle;if(\"x\"===A)b=(_=!f&&\"bottom\"===k||f&&\"top\"===k)?1:-1,f&&(b*=-1),v=d*b,y=e+p*b,x=_?1:-.2,90===Math.abs(M)&&(f?x+=B:x=-90===M&&\"bottom\"===k?N:90===M&&\"top\"===k?B:.5,T=B/2*(M/90)),w.xFn=function(t){return t.dx+v+T*t.fontSize},w.yFn=function(t){return t.dy+y+t.fontSize*x},w.anchorFn=function(t,e){if(u){if(l)return\"end\";if(c)return\"start\"}return i(e)&&0!==e&&180!==e?e*b<0!==f?\"end\":\"start\":\"middle\"},w.heightFn=function(e,r,n){return r<-60||r>60?-.5*n:\"top\"===t.side!==f?-n:0};else if(\"y\"===A){if(b=(_=!f&&\"left\"===k||f&&\"right\"===k)?1:-1,f&&(b*=-1),v=p,y=d*b,x=0,f||90!==Math.abs(M)||(x=-90===M&&\"left\"===k||90===M&&\"right\"===k?N:.5),f){var S=i(M)?+M:0;if(0!==S){var E=s.deg2rad(S);T=Math.abs(Math.sin(E))*N*b,x=0}}w.xFn=function(t){return t.dx+e-(v+t.fontSize*x)*b+T*t.fontSize},w.yFn=function(t){return t.dy+y+t.fontSize*B},w.anchorFn=function(t,e){return i(e)&&90===Math.abs(e)?\"middle\":_?\"end\":\"start\"},w.heightFn=function(e,r,n){return\"right\"===t.side&&(r*=-1),r<-30?-n:r<30?-.5*n:0}}return w},V.drawTicks=function(t,e,r){r=r||{};var n=e._id+\"tick\",i=r.vals;\"period\"===e.ticklabelmode&&(i=i.slice()).shift();var a=r.layer.selectAll(\"path.\"+n).data(e.ticks?i:[],gt);a.exit().remove(),a.enter().append(\"path\").classed(n,1).classed(\"ticks\",1).classed(\"crisp\",!1!==r.crisp).call(f.stroke,e.tickcolor).style(\"stroke-width\",h.crispRound(t,e.tickwidth,1)+\"px\").attr(\"d\",r.path).style(\"display\",null),Et(e,[D]),a.attr(\"transform\",r.transFn)},V.drawGrid=function(t,e,r){r=r||{};var n=e._id+\"grid\",i=r.vals,a=r.counterAxis;if(!1===e.showgrid)i=[];else if(a&&V.shouldShowZeroLine(t,e,a))for(var o=\"array\"===e.tickmode,s=0;sp||a.leftp||a.top+(e.tickangle?0:t.fontSize/4)e[\"_visibleLabelMin_\"+r._id]?l.style(\"display\",\"none\"):\"tick\"!==t.K||i||l.style(\"display\",null)}))}))}))}))},x(v,m+1?m:g);var b=null;e._selections&&(e._selections[f]=v);var _=[function(){return y.length&&Promise.all(y)}];e.automargin&&a._redrawFromAutoMarginCount&&90===m?(b=90,_.push((function(){x(v,m)}))):_.push((function(){if(x(v,g),p.length&&\"x\"===u&&!i(g)&&(\"log\"!==e.type||\"D\"!==String(e.dtick).charAt(0))){b=0;var t,n=0,a=[];if(v.each((function(t){n=Math.max(n,t.fontSize);var r=e.l2p(t.x),i=yt(this),o=h.bBox(i.node());a.push({top:0,bottom:10,height:10,left:r-o.width/2,right:r+o.width/2+2,width:o.width+2})})),\"boundaries\"!==e.tickson&&!e.showdividers||r.secondary){var o=p.length,l=Math.abs((p[o-1].x-p[0].x)*e._m)/(o-1),c=e.ticklabelposition||\"\",f=function(t){return-1!==c.indexOf(t)},d=f(\"top\"),m=f(\"left\"),y=f(\"right\"),_=f(\"bottom\")||m||d||y?(e.tickwidth||0)+6:0,w=l<2.5*n||\"multicategory\"===e.type||\"realaxis\"===e._name;for(t=0;t1)for(n=1;n2*o}(i,e))return\"date\";var m=\"strict\"!==r.autotypenumbers;return function(t,e){for(var r=t.length,n=f(r),i=0,o=0,s={},u=0;u2*i}(i,m)?\"category\":function(t,e){for(var r=t.length,n=0;n=2){var l,c,u=\"\";if(2===o.length)for(l=0;l<2;l++)if(c=x(o[l])){u=g;break}var f=i(\"pattern\",u);if(f===g)for(l=0;l<2;l++)(c=x(o[l]))&&(e.bounds[l]=o[l]=c-1);if(f)for(l=0;l<2;l++)switch(c=o[l],f){case g:if(!n(c))return void(e.enabled=!1);if((c=+c)!==Math.floor(c)||c<0||c>=7)return void(e.enabled=!1);e.bounds[l]=o[l]=c;break;case m:if(!n(c))return void(e.enabled=!1);if((c=+c)<0||c>24)return void(e.enabled=!1);e.bounds[l]=o[l]=c}if(!1===r.autorange){var h=r.range;if(h[0]h[1])return void(e.enabled=!1)}else if(o[0]>h[0]&&o[1]n?1:-1:+(t.substr(1)||1)-+(e.substr(1)||1)},r.ref2id=function(t){return!!/^[xyz]/.test(t)&&t.split(\" \")[0]},r.isLinked=function(t,e){return a(e,t._axisMatchGroups)||a(e,t._axisConstraintGroups)}},{\"../../registry\":638,\"./constants\":561}],559:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,n){if(\"category\"===e.type){var i,a=t.categoryarray,o=Array.isArray(a)&&a.length>0;o&&(i=\"array\");var s,l=r(\"categoryorder\",i);\"array\"===l&&(s=r(\"categoryarray\")),o||\"array\"!==l||(l=e.categoryorder=\"trace\"),\"trace\"===l?e._initialCategories=[]:\"array\"===l?e._initialCategories=s.slice():(s=function(t,e){var r,n,i,a=e.dataAttr||t._id.charAt(0),o={};if(e.axData)r=e.axData;else for(r=[],n=0;nn?i.substr(n):a.substr(r))+o:i+a+t*e:o}function m(t,e){for(var r=e._size,n=r.h/r.w,i={},a=Object.keys(t),o=0;oc*x)||T)for(r=0;rO&&FP&&(P=F);h/=(P-C)/(2*I),C=l.l2r(C),P=l.l2r(P),l.range=l._input.range=S=0?Math.min(t,.9):1/(1/Math.max(t,-.3)+3.222))}function N(t,e,r,n,i){return t.append(\"path\").attr(\"class\",\"zoombox\").style({fill:e>.2?\"rgba(0,0,0,0)\":\"rgba(255,255,255,0)\",\"stroke-width\":0}).attr(\"transform\",c(r,n)).attr(\"d\",i+\"Z\")}function j(t,e,r){return t.append(\"path\").attr(\"class\",\"zoombox-corners\").style({fill:f.background,stroke:f.defaultLine,\"stroke-width\":1,opacity:0}).attr(\"transform\",c(e,r)).attr(\"d\",\"M0,0Z\")}function U(t,e,r,n,i,a){t.attr(\"d\",n+\"M\"+r.l+\",\"+r.t+\"v\"+r.h+\"h\"+r.w+\"v-\"+r.h+\"h-\"+r.w+\"Z\"),V(t,e,i,a)}function V(t,e,r,n){r||(t.transition().style(\"fill\",n>.2?\"rgba(0,0,0,0.4)\":\"rgba(255,255,255,0.3)\").duration(200),e.transition().style(\"opacity\",1).duration(200))}function H(t){n.select(t).selectAll(\".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners\").remove()}function q(t){I&&t.data&&t._context.showTips&&(i.notifier(i._(t,\"Double-click to zoom back out\"),\"long\"),I=!1)}function G(t){var e=Math.floor(Math.min(t.b-t.t,t.r-t.l,P)/2);return\"M\"+(t.l-3.5)+\",\"+(t.t-.5+e)+\"h3v\"+-e+\"h\"+e+\"v-3h-\"+(e+3)+\"ZM\"+(t.r+3.5)+\",\"+(t.t-.5+e)+\"h-3v\"+-e+\"h\"+-e+\"v-3h\"+(e+3)+\"ZM\"+(t.r+3.5)+\",\"+(t.b+.5-e)+\"h-3v\"+e+\"h\"+-e+\"v3h\"+(e+3)+\"ZM\"+(t.l-3.5)+\",\"+(t.b+.5-e)+\"h3v\"+e+\"h\"+e+\"v3h-\"+(e+3)+\"Z\"}function Y(t,e,r,n,a){for(var o,s,l,c,u=!1,f={},h={},p=(a||{}).xaHash,d=(a||{}).yaHash,g=0;g=0)i._fullLayout._deactivateShape(i);else{var o=i._fullLayout.clickmode;if(H(i),2!==t||vt||qt(),mt)o.indexOf(\"select\")>-1&&S(r,i,J,K,e.id,Pt),o.indexOf(\"event\")>-1&&p.click(i,r,e.id);else if(1===t&&vt){var s=g?O:I,c=\"s\"===g||\"w\"===v?0:1,f=s._name+\".range[\"+c+\"]\",h=function(t,e){var r,n=t.range[e],i=Math.abs(n-t.range[1-e]);return\"date\"===t.type?n:\"log\"===t.type?(r=Math.ceil(Math.max(0,-Math.log(i)/Math.LN10))+3,a(\".\"+r+\"g\")(Math.pow(10,n))):(r=Math.floor(Math.log(Math.abs(n))/Math.LN10)-Math.floor(Math.log(i)/Math.LN10)+4,a(\".\"+String(r)+\"g\")(n))}(s,c),d=\"left\",m=\"middle\";if(s.fixedrange)return;g?(m=\"n\"===g?\"top\":\"bottom\",\"right\"===s.side&&(d=\"right\")):\"e\"===v&&(d=\"right\"),i._context.showAxisRangeEntryBoxes&&n.select(bt).call(u.makeEditable,{gd:i,immediate:!0,background:i._fullLayout.paper_bgcolor,text:String(h),fill:s.tickfont?s.tickfont.color:\"#444\",horizontalAlign:d,verticalAlign:m}).on(\"edit\",(function(t){var e=s.d2r(t);void 0!==e&&l.call(\"_guiRelayout\",i,f,e)}))}}}function zt(e,r){if(t._transitioningWithDuration)return!1;var n=Math.max(0,Math.min(tt,pt*e+_t)),i=Math.max(0,Math.min(et,dt*r+wt)),a=Math.abs(n-_t),o=Math.abs(i-wt);function s(){St=\"\",Tt.r=Tt.l,Tt.t=Tt.b,Lt.attr(\"d\",\"M0,0Z\")}if(Tt.l=Math.min(_t,n),Tt.r=Math.max(_t,n),Tt.t=Math.min(wt,i),Tt.b=Math.max(wt,i),rt.isSubplotConstrained)a>P||o>P?(St=\"xy\",a/tt>o/et?(o=a*et/tt,wt>i?Tt.t=wt-o:Tt.b=wt+o):(a=o*tt/et,_t>n?Tt.l=_t-a:Tt.r=_t+a),Lt.attr(\"d\",G(Tt))):s();else if(nt.isSubplotConstrained)if(a>P||o>P){St=\"xy\";var l=Math.min(Tt.l/tt,(et-Tt.b)/et),c=Math.max(Tt.r/tt,(et-Tt.t)/et);Tt.l=l*tt,Tt.r=c*tt,Tt.b=(1-l)*et,Tt.t=(1-c)*et,Lt.attr(\"d\",G(Tt))}else s();else!at||o0){var u;if(nt.isSubplotConstrained||!it&&1===at.length){for(u=0;ug[1]-1/4096&&(e.domain=s),i.noneOrAll(t.domain,e.domain,s)}return r(\"layer\"),e}},{\"../../lib\":503,\"fast-isnumeric\":190}],573:[function(t,e,r){\"use strict\";var n=t(\"./show_dflt\");e.exports=function(t,e,r,i,a){a||(a={});var o=a.tickSuffixDflt,s=n(t);r(\"tickprefix\")&&r(\"showtickprefix\",s),r(\"ticksuffix\",o)&&r(\"showticksuffix\",s)}},{\"./show_dflt\":577}],574:[function(t,e,r){\"use strict\";var n=t(\"../../constants/alignment\").FROM_BL;e.exports=function(t,e,r){void 0===r&&(r=n[t.constraintoward||\"center\"]);var i=[t.r2l(t.range[0]),t.r2l(t.range[1])],a=i[0]+(i[1]-i[0])*r;t.range=t._input.range=[t.l2r(a+(i[0]-a)*e),t.l2r(a+(i[1]-a)*e)],t.setScale()}},{\"../../constants/alignment\":471}],575:[function(t,e,r){\"use strict\";var n=t(\"polybooljs\"),i=t(\"../../registry\"),a=t(\"../../components/drawing\").dashStyle,o=t(\"../../components/color\"),s=t(\"../../components/fx\"),l=t(\"../../components/fx/helpers\").makeEventData,c=t(\"../../components/dragelement/helpers\"),u=c.freeMode,f=c.rectMode,h=c.drawMode,p=c.openMode,d=c.selectMode,g=t(\"../../components/shapes/draw_newshape/display_outlines\"),m=t(\"../../components/shapes/draw_newshape/helpers\").handleEllipse,v=t(\"../../components/shapes/draw_newshape/newshapes\"),y=t(\"../../lib\"),x=t(\"../../lib/polygon\"),b=t(\"../../lib/throttle\"),_=t(\"./axis_ids\").getFromId,w=t(\"../../lib/clear_gl_canvases\"),T=t(\"../../plot_api/subroutines\").redrawReglTraces,k=t(\"./constants\"),A=k.MINSELECT,M=x.filter,S=x.tester,E=t(\"./handle_outline\").clearSelect,L=t(\"./helpers\"),C=L.p2r,P=L.axValue,I=L.getTransform;function O(t,e,r,n,i,a,o){var s,l,c,u,f,h,d,m,v,y=e._hoverdata,x=e._fullLayout.clickmode.indexOf(\"event\")>-1,b=[];if(function(t){return t&&Array.isArray(t)&&!0!==t[0].hoverOnBox}(y)){F(t,e,a);var _=function(t,e){var r,n,i=t[0],a=-1,o=[];for(n=0;n0?function(t,e){var r,n,i,a=[];for(i=0;i0&&a.push(r);if(1===a.length&&a[0]===e.searchInfo&&(n=e.searchInfo.cd[0].trace).selectedpoints.length===e.pointNumbers.length){for(i=0;i1)return!1;if((i+=r.selectedpoints.length)>1)return!1}return 1===i}(s)&&(h=j(_))){for(o&&o.remove(),v=0;v=0&&n._fullLayout._deactivateShape(n),h(e)){var a=n._fullLayout._zoomlayer.selectAll(\".select-outline-\"+r.id);if(a&&n._fullLayout._drawing){var o=v(a,t);o&&i.call(\"_guiRelayout\",n,{shapes:o}),n._fullLayout._drawing=!1}}r.selection={},r.selection.selectionDefs=t.selectionDefs=[],r.selection.mergedPolygons=t.mergedPolygons=[]}function N(t,e,r,n){var i,a,o,s=[],l=e.map((function(t){return t._id})),c=r.map((function(t){return t._id}));for(o=0;o0?n[0]:r;return!!e.selectedpoints&&e.selectedpoints.indexOf(i)>-1}function U(t,e,r){var n,a,o,s;for(n=0;n=0)L._fullLayout._deactivateShape(L);else if(!_){var r=z.clickmode;b.done(gt).then((function(){if(b.clear(gt),2===t){for(ft.remove(),$=0;$-1&&O(e,L,i.xaxes,i.yaxes,i.subplot,i,ft),\"event\"===r&&L.emit(\"plotly_selected\",void 0);s.click(L,e)})).catch(y.error)}},i.doneFn=function(){dt.remove(),b.done(gt).then((function(){b.clear(gt),i.gd.emit(\"plotly_selected\",et),Q&&i.selectionDefs&&(Q.subtract=ut,i.selectionDefs.push(Q),i.mergedPolygons.length=0,[].push.apply(i.mergedPolygons,K)),i.doneFnCompleted&&i.doneFnCompleted(mt)})).catch(y.error),_&&B(i)}},clearSelect:E,clearSelectionsCache:B,selectOnClick:O}},{\"../../components/color\":366,\"../../components/dragelement/helpers\":384,\"../../components/drawing\":388,\"../../components/fx\":406,\"../../components/fx/helpers\":402,\"../../components/shapes/draw_newshape/display_outlines\":454,\"../../components/shapes/draw_newshape/helpers\":455,\"../../components/shapes/draw_newshape/newshapes\":456,\"../../lib\":503,\"../../lib/clear_gl_canvases\":487,\"../../lib/polygon\":515,\"../../lib/throttle\":530,\"../../plot_api/subroutines\":544,\"../../registry\":638,\"./axis_ids\":558,\"./constants\":561,\"./handle_outline\":565,\"./helpers\":566,polybooljs:254}],576:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"d3-time-format\").utcFormat,a=t(\"../../lib\"),o=a.numberFormat,s=t(\"fast-isnumeric\"),l=a.cleanNumber,c=a.ms2DateTime,u=a.dateTime2ms,f=a.ensureNumber,h=a.isArrayOrTypedArray,p=t(\"../../constants/numerical\"),d=p.FP_SAFE,g=p.BADNUM,m=p.LOG_CLIP,v=p.ONEWEEK,y=p.ONEDAY,x=p.ONEHOUR,b=p.ONEMIN,_=p.ONESEC,w=t(\"./axis_ids\"),T=t(\"./constants\"),k=T.HOUR_PATTERN,A=T.WEEKDAY_PATTERN;function M(t){return Math.pow(10,t)}function S(t){return null!=t}e.exports=function(t,e){e=e||{};var r=t._id||\"x\",p=r.charAt(0);function E(e,r){if(e>0)return Math.log(e)/Math.LN10;if(e<=0&&r&&t.range&&2===t.range.length){var n=t.range[0],i=t.range[1];return.5*(n+i-2*m*Math.abs(n-i))}return g}function L(e,r,n,i){if((i||{}).msUTC&&s(e))return+e;var o=u(e,n||t.calendar);if(o===g){if(!s(e))return g;e=+e;var l=Math.floor(10*a.mod(e+.05,1)),c=Math.round(e-l/10);o=u(new Date(c))+l/10}return o}function C(e,r,n){return c(e,r,n||t.calendar)}function P(e){return t._categories[Math.round(e)]}function I(e){if(S(e)){if(void 0===t._categoriesMap&&(t._categoriesMap={}),void 0!==t._categoriesMap[e])return t._categoriesMap[e];t._categories.push(\"number\"==typeof e?String(e):e);var r=t._categories.length-1;return t._categoriesMap[e]=r,r}return g}function O(e){if(t._categoriesMap)return t._categoriesMap[e]}function z(t){var e=O(t);return void 0!==e?e:s(t)?+t:void 0}function D(t){return s(t)?+t:O(t)}function R(t,e,r){return n.round(r+e*t,2)}function F(t,e,r){return(t-r)/e}var B=function(e){return s(e)?R(e,t._m,t._b):g},N=function(e){return F(e,t._m,t._b)};if(t.rangebreaks){var j=\"y\"===p;B=function(e){if(!s(e))return g;var r=t._rangebreaks.length;if(!r)return R(e,t._m,t._b);var n=j;t.range[0]>t.range[1]&&(n=!n);for(var i=n?-1:1,a=i*e,o=0,l=0;lu)){o=a<(c+u)/2?l:l+1;break}o=l+1}var f=t._B[o]||0;return isFinite(f)?R(e,t._m2,f):0},N=function(e){var r=t._rangebreaks.length;if(!r)return F(e,t._m,t._b);for(var n=0,i=0;it._rangebreaks[i].pmax&&(n=i+1);return F(e,t._m2,t._B[n])}}t.c2l=\"log\"===t.type?E:f,t.l2c=\"log\"===t.type?M:f,t.l2p=B,t.p2l=N,t.c2p=\"log\"===t.type?function(t,e){return B(E(t,e))}:B,t.p2c=\"log\"===t.type?function(t){return M(N(t))}:N,-1!==[\"linear\",\"-\"].indexOf(t.type)?(t.d2r=t.r2d=t.d2c=t.r2c=t.d2l=t.r2l=l,t.c2d=t.c2r=t.l2d=t.l2r=f,t.d2p=t.r2p=function(e){return t.l2p(l(e))},t.p2d=t.p2r=N,t.cleanPos=f):\"log\"===t.type?(t.d2r=t.d2l=function(t,e){return E(l(t),e)},t.r2d=t.r2c=function(t){return M(l(t))},t.d2c=t.r2l=l,t.c2d=t.l2r=f,t.c2r=E,t.l2d=M,t.d2p=function(e,r){return t.l2p(t.d2r(e,r))},t.p2d=function(t){return M(N(t))},t.r2p=function(e){return t.l2p(l(e))},t.p2r=N,t.cleanPos=f):\"date\"===t.type?(t.d2r=t.r2d=a.identity,t.d2c=t.r2c=t.d2l=t.r2l=L,t.c2d=t.c2r=t.l2d=t.l2r=C,t.d2p=t.r2p=function(e,r,n){return t.l2p(L(e,0,n))},t.p2d=t.p2r=function(t,e,r){return C(N(t),e,r)},t.cleanPos=function(e){return a.cleanDate(e,g,t.calendar)}):\"category\"===t.type?(t.d2c=t.d2l=I,t.r2d=t.c2d=t.l2d=P,t.d2r=t.d2l_noadd=z,t.r2c=function(e){var r=D(e);return void 0!==r?r:t.fraction2r(.5)},t.l2r=t.c2r=f,t.r2l=D,t.d2p=function(e){return t.l2p(t.r2c(e))},t.p2d=function(t){return P(N(t))},t.r2p=t.d2p,t.p2r=N,t.cleanPos=function(t){return\"string\"==typeof t&&\"\"!==t?t:f(t)}):\"multicategory\"===t.type&&(t.r2d=t.c2d=t.l2d=P,t.d2r=t.d2l_noadd=z,t.r2c=function(e){var r=z(e);return void 0!==r?r:t.fraction2r(.5)},t.r2c_just_indices=O,t.l2r=t.c2r=f,t.r2l=z,t.d2p=function(e){return t.l2p(t.r2c(e))},t.p2d=function(t){return P(N(t))},t.r2p=t.d2p,t.p2r=N,t.cleanPos=function(t){return Array.isArray(t)||\"string\"==typeof t&&\"\"!==t?t:f(t)},t.setupMultiCategory=function(n){var i,o,s=t._traceIndices,l=t._matchGroup;if(l&&0===t._categories.length)for(var c in l)if(c!==r){var u=e[w.id2name(c)];s=s.concat(u._traceIndices)}var f=[[0,{}],[0,{}]],d=[];for(i=0;id&&(o[n]=d),o[0]===o[1]){var c=Math.max(1,Math.abs(1e-6*o[0]));o[0]-=c,o[1]+=c}}else a.nestedProperty(t,e).set(i)},t.setScale=function(r){var n=e._size;if(t.overlaying){var i=w.getFromId({_fullLayout:e},t.overlaying);t.domain=i.domain}var a=r&&t._r?\"_r\":\"range\",o=t.calendar;t.cleanRange(a);var s,l,c=t.r2l(t[a][0],o),u=t.r2l(t[a][1],o),f=\"y\"===p;if((f?(t._offset=n.t+(1-t.domain[1])*n.h,t._length=n.h*(t.domain[1]-t.domain[0]),t._m=t._length/(c-u),t._b=-t._m*u):(t._offset=n.l+t.domain[0]*n.w,t._length=n.w*(t.domain[1]-t.domain[0]),t._m=t._length/(u-c),t._b=-t._m*c),t._rangebreaks=[],t._lBreaks=0,t._m2=0,t._B=[],t.rangebreaks)&&(t._rangebreaks=t.locateBreaks(Math.min(c,u),Math.max(c,u)),t._rangebreaks.length)){for(s=0;su&&(h=!h),h&&t._rangebreaks.reverse();var d=h?-1:1;for(t._m2=d*t._length/(Math.abs(u-c)-t._lBreaks),t._B.push(-t._m2*(f?u:c)),s=0;si&&(i+=7,oi&&(i+=24,o=n&&o=n&&e=s.min&&(ts.max&&(s.max=n),i=!1)}i&&c.push({min:t,max:n})}};for(n=0;nr.duration?(!function(){for(var r={},n=0;n rect\").call(o.setTranslate,0,0).call(o.setScale,1,1),t.plot.call(o.setTranslate,e._offset,r._offset).call(o.setScale,1,1);var n=t.plot.selectAll(\".scatterlayer .trace\");n.selectAll(\".point\").call(o.setPointGroupScale,1,1),n.selectAll(\".textpoint\").call(o.setTextPointsScale,1,1),n.call(o.hideOutsideRangePoints,t)}function m(e,r){var n=e.plotinfo,i=n.xaxis,l=n.yaxis,c=i._length,u=l._length,f=!!e.xr1,h=!!e.yr1,p=[];if(f){var d=a.simpleMap(e.xr0,i.r2l),g=a.simpleMap(e.xr1,i.r2l),m=d[1]-d[0],v=g[1]-g[0];p[0]=(d[0]*(1-r)+r*g[0]-d[0])/(d[1]-d[0])*c,p[2]=c*(1-r+r*v/m),i.range[0]=i.l2r(d[0]*(1-r)+r*g[0]),i.range[1]=i.l2r(d[1]*(1-r)+r*g[1])}else p[0]=0,p[2]=c;if(h){var y=a.simpleMap(e.yr0,l.r2l),x=a.simpleMap(e.yr1,l.r2l),b=y[1]-y[0],_=x[1]-x[0];p[1]=(y[1]*(1-r)+r*x[1]-y[1])/(y[0]-y[1])*u,p[3]=u*(1-r+r*_/b),l.range[0]=i.l2r(y[0]*(1-r)+r*x[0]),l.range[1]=l.l2r(y[1]*(1-r)+r*x[1])}else p[1]=0,p[3]=u;s.drawOne(t,i,{skipTitle:!0}),s.drawOne(t,l,{skipTitle:!0}),s.redrawComponents(t,[i._id,l._id]);var w=f?c/p[2]:1,T=h?u/p[3]:1,k=f?p[0]:0,A=h?p[1]:0,M=f?p[0]/p[2]*c:0,S=h?p[1]/p[3]*u:0,E=i._offset-M,L=l._offset-S;n.clipRect.call(o.setTranslate,k,A).call(o.setScale,1/w,1/T),n.plot.call(o.setTranslate,E,L).call(o.setScale,w,T),o.setPointGroupScale(n.zoomScalePts,1/w,1/T),o.setTextPointsScale(n.zoomScaleTxt,1/w,1/T)}s.redrawComponents(t)}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../registry\":638,\"./axes\":554,\"@plotly/d3\":58}],582:[function(t,e,r){\"use strict\";var n=t(\"../../registry\").traceIs,i=t(\"./axis_autotype\");function a(t){return{v:\"x\",h:\"y\"}[t.orientation||\"v\"]}function o(t,e){var r=a(t),i=n(t,\"box-violin\"),o=n(t._fullInput||{},\"candlestick\");return i&&!o&&e===r&&void 0===t[r]&&void 0===t[r+\"0\"]}e.exports=function(t,e,r,s){r(\"autotypenumbers\",s.autotypenumbersDflt),\"-\"===r(\"type\",(s.splomStash||{}).type)&&(!function(t,e){if(\"-\"!==t.type)return;var r,s=t._id,l=s.charAt(0);-1!==s.indexOf(\"scene\")&&(s=l);var c=function(t,e,r){for(var n=0;n0&&(i[\"_\"+r+\"axes\"]||{})[e])return i;if((i[r+\"axis\"]||r)===e){if(o(i,r))return i;if((i[r]||[]).length||i[r+\"0\"])return i}}}(e,s,l);if(!c)return;if(\"histogram\"===c.type&&l==={v:\"y\",h:\"x\"}[c.orientation||\"v\"])return void(t.type=\"linear\");var u=l+\"calendar\",f=c[u],h={noMultiCategory:!n(c,\"cartesian\")||n(c,\"noMultiCategory\")};\"box\"===c.type&&c._hasPreCompStats&&l==={h:\"x\",v:\"y\"}[c.orientation||\"v\"]&&(h.noMultiCategory=!0);if(h.autotypenumbers=t.autotypenumbers,o(c,l)){var p=a(c),d=[];for(r=0;r0?\".\":\"\")+a;i.isPlainObject(o)?l(o,e,s,n+1):e(s,a,o)}}))}r.manageCommandObserver=function(t,e,n,o){var s={},l=!0;e&&e._commandObserver&&(s=e._commandObserver),s.cache||(s.cache={}),s.lookupTable={};var c=r.hasSimpleAPICommandBindings(t,n,s.lookupTable);if(e&&e._commandObserver){if(c)return s;if(e._commandObserver.remove)return e._commandObserver.remove(),e._commandObserver=null,s}if(c){a(t,c,s.cache),s.check=function(){if(l){var e=a(t,c,s.cache);return e.changed&&o&&void 0!==s.lookupTable[e.value]&&(s.disable(),Promise.resolve(o({value:e.value,type:c.type,prop:c.prop,traces:c.traces,index:s.lookupTable[e.value]})).then(s.enable,s.enable)),e.changed}};for(var u=[\"plotly_relayout\",\"plotly_redraw\",\"plotly_restyle\",\"plotly_update\",\"plotly_animatingframe\",\"plotly_afterplot\"],f=0;f0&&i<0&&(i+=360);var s=(i-n)/4;return{type:\"Polygon\",coordinates:[[[n,a],[n,o],[n+s,o],[n+2*s,o],[n+3*s,o],[i,o],[i,a],[i-s,a],[i-2*s,a],[i-3*s,a],[n,a]]]}}e.exports=function(t){return new M(t)},S.plot=function(t,e,r){var n=this,i=e[this.id],a=[],o=!1;for(var s in w.layerNameToAdjective)if(\"frame\"!==s&&i[\"show\"+s]){o=!0;break}for(var l=0;l0&&a._module.calcGeoJSON(i,e)}if(!this.updateProjection(t,e)){this.viewInitial&&this.scope===r.scope||this.saveViewInitial(r),this.scope=r.scope,this.updateBaseLayers(e,r),this.updateDims(e,r),this.updateFx(e,r),d.generalUpdatePerTraceModule(this.graphDiv,this,t,r);var o=this.layers.frontplot.select(\".scatterlayer\");this.dataPoints.point=o.selectAll(\".point\"),this.dataPoints.text=o.selectAll(\"text\"),this.dataPaths.line=o.selectAll(\".js-line\");var s=this.layers.backplot.select(\".choroplethlayer\");this.dataPaths.choropleth=s.selectAll(\"path\"),this.render()}},S.updateProjection=function(t,e){var r=this.graphDiv,n=e[this.id],l=e._size,u=n.domain,f=n.projection,h=n.lonaxis,p=n.lataxis,d=h._ax,g=p._ax,v=this.projection=function(t){var e=t.projection,r=e.type,n=w.projNames[r];n=\"geo\"+c.titleCase(n);for(var l=(i[n]||s[n])(),u=t._isSatellite?180*Math.acos(1/e.distance)/Math.PI:t._isClipped?w.lonaxisSpan[r]/2:null,f=[\"center\",\"rotate\",\"parallels\",\"clipExtent\"],h=function(t){return t?l:[]},p=0;pu*Math.PI/180}return!1},l.getPath=function(){return a().projection(l)},l.getBounds=function(t){return l.getPath().bounds(t)},l.precision(w.precision),t._isSatellite&&l.tilt(e.tilt).distance(e.distance);u&&l.clipAngle(u-w.clipPad);return l}(n),y=[[l.l+l.w*u.x[0],l.t+l.h*(1-u.y[1])],[l.l+l.w*u.x[1],l.t+l.h*(1-u.y[0])]],x=n.center||{},b=f.rotation||{},_=h.range||[],T=p.range||[];if(n.fitbounds){d._length=y[1][0]-y[0][0],g._length=y[1][1]-y[0][1],d.range=m(r,d),g.range=m(r,g);var k=(d.range[0]+d.range[1])/2,A=(g.range[0]+g.range[1])/2;if(n._isScoped)x={lon:k,lat:A};else if(n._isClipped){x={lon:k,lat:A},b={lon:k,lat:A,roll:b.roll};var M=f.type,S=w.lonaxisSpan[M]/2||180,L=w.lataxisSpan[M]/2||90;_=[k-S,k+S],T=[A-L,A+L]}else x={lon:k,lat:A},b={lon:k,lat:b.lat,roll:b.roll}}v.center([x.lon-b.lon,x.lat-b.lat]).rotate([-b.lon,-b.lat,b.roll]).parallels(f.parallels);var C=E(_,T);v.fitExtent(y,C);var P=this.bounds=v.getBounds(C),I=this.fitScale=v.scale(),O=v.translate();if(n.fitbounds){var z=v.getBounds(E(d.range,g.range)),D=Math.min((P[1][0]-P[0][0])/(z[1][0]-z[0][0]),(P[1][1]-P[0][1])/(z[1][1]-z[0][1]));isFinite(D)?v.scale(D*I):c.warn(\"Something went wrong during\"+this.id+\"fitbounds computations.\")}else v.scale(f.scale*I);var R=this.midPt=[(P[0][0]+P[1][0])/2,(P[0][1]+P[1][1])/2];if(v.translate([O[0]+(R[0]-O[0]),O[1]+(R[1]-O[1])]).clipExtent(P),n._isAlbersUsa){var F=v([x.lon,x.lat]),B=v.translate();v.translate([B[0]-(F[0]-B[0]),B[1]-(F[1]-B[1])])}},S.updateBaseLayers=function(t,e){var r=this,i=r.topojson,a=r.layers,o=r.basePaths;function s(t){return\"lonaxis\"===t||\"lataxis\"===t}function l(t){return Boolean(w.lineLayers[t])}function c(t){return Boolean(w.fillLayers[t])}var u=(this.hasChoropleth?w.layersForChoropleth:w.layers).filter((function(t){return l(t)||c(t)?e[\"show\"+t]:!s(t)||e[t].showgrid})),p=r.framework.selectAll(\".layer\").data(u,String);p.exit().each((function(t){delete a[t],delete o[t],n.select(this).remove()})),p.enter().append(\"g\").attr(\"class\",(function(t){return\"layer \"+t})).each((function(t){var e=a[t]=n.select(this);\"bg\"===t?r.bgRect=e.append(\"rect\").style(\"pointer-events\",\"all\"):s(t)?o[t]=e.append(\"path\").style(\"fill\",\"none\"):\"backplot\"===t?e.append(\"g\").classed(\"choroplethlayer\",!0):\"frontplot\"===t?e.append(\"g\").classed(\"scatterlayer\",!0):l(t)?o[t]=e.append(\"path\").style(\"fill\",\"none\").style(\"stroke-miterlimit\",2):c(t)&&(o[t]=e.append(\"path\").style(\"stroke\",\"none\"))})),p.order(),p.each((function(r){var n=o[r],a=w.layerNameToAdjective[r];\"frame\"===r?n.datum(w.sphereSVG):l(r)||c(r)?n.datum(A(i,i.objects[r])):s(r)&&n.datum(function(t,e,r){var n,i,a,o=e[t],s=w.scopeDefaults[e.scope];\"lonaxis\"===t?(n=s.lonaxisRange,i=s.lataxisRange,a=function(t,e){return[t,e]}):\"lataxis\"===t&&(n=s.lataxisRange,i=s.lonaxisRange,a=function(t,e){return[e,t]});var l={type:\"linear\",range:[n[0],n[1]-1e-6],tick0:o.tick0,dtick:o.dtick};g.setConvert(l,r);var c=g.calcTicks(l);e.isScoped||\"lonaxis\"!==t||c.pop();for(var u=c.length,f=new Array(u),h=0;h-1&&b(n.event,i,[r.xaxis],[r.yaxis],r.id,f),s.indexOf(\"event\")>-1&&p.click(i,n.event))}))}function h(t){return r.projection.invert([t[0]+r.xaxis._offset,t[1]+r.yaxis._offset])}},S.makeFramework=function(){var t=this,e=t.graphDiv,r=e._fullLayout,i=\"clip\"+r._uid+t.id;t.clipDef=r._clips.append(\"clipPath\").attr(\"id\",i),t.clipRect=t.clipDef.append(\"rect\"),t.framework=n.select(t.container).append(\"g\").attr(\"class\",\"geo \"+t.id).call(h.setClipUrl,i,e),t.project=function(e){var r=t.projection(e);return r?[r[0]-t.xaxis._offset,r[1]-t.yaxis._offset]:[null,null]},t.xaxis={_id:\"x\",c2p:function(e){return t.project(e)[0]}},t.yaxis={_id:\"y\",c2p:function(e){return t.project(e)[1]}},t.mockAxis={type:\"linear\",showexponent:\"all\",exponentformat:\"B\"},g.setConvert(t.mockAxis,r)},S.saveViewInitial=function(t){var e,r=t.center||{},n=t.projection,i=n.rotation||{};this.viewInitial={fitbounds:t.fitbounds,\"projection.scale\":n.scale},e=t._isScoped?{\"center.lon\":r.lon,\"center.lat\":r.lat}:t._isClipped?{\"projection.rotation.lon\":i.lon,\"projection.rotation.lat\":i.lat}:{\"center.lon\":r.lon,\"center.lat\":r.lat,\"projection.rotation.lon\":i.lon},c.extendFlat(this.viewInitial,e)},S.render=function(){var t,e=this.projection,r=e.getPath();function n(t){var r=e(t.lonlat);return r?u(r[0],r[1]):null}function i(t){return e.isLonLatOverEdges(t.lonlat)?\"none\":null}for(t in this.basePaths)this.basePaths[t].attr(\"d\",r);for(t in this.dataPaths)this.dataPaths[t].attr(\"d\",(function(t){return r(t.geojson)}));for(t in this.dataPoints)this.dataPoints[t].attr(\"display\",i).attr(\"transform\",n)}},{\"../../components/color\":366,\"../../components/dragelement\":385,\"../../components/drawing\":388,\"../../components/fx\":406,\"../../lib\":503,\"../../lib/geo_location_utils\":496,\"../../lib/topojson_utils\":532,\"../../registry\":638,\"../cartesian/autorange\":553,\"../cartesian/axes\":554,\"../cartesian/select\":575,\"../plots\":619,\"./constants\":587,\"./zoom\":592,\"@plotly/d3\":58,\"d3-geo\":114,\"d3-geo-projection\":113,\"topojson-client\":315}],589:[function(t,e,r){\"use strict\";var n=t(\"../../plots/get_data\").getSubplotCalcData,i=t(\"../../lib\").counterRegex,a=t(\"./geo\"),o=\"geo\",s=i(o),l={};l.geo={valType:\"subplotid\",dflt:o,editType:\"calc\"},e.exports={attr:o,name:o,idRoot:o,idRegex:s,attrRegex:s,attributes:l,layoutAttributes:t(\"./layout_attributes\"),supplyLayoutDefaults:t(\"./layout_defaults\"),plot:function(t){for(var e=t._fullLayout,r=t.calcdata,i=e._subplots.geo,s=0;s0&&P<0&&(P+=360);var I,O,z,D=(C+P)/2;if(!p){var R=d?f.projRotate:[D,0,0];I=r(\"projection.rotation.lon\",R[0]),r(\"projection.rotation.lat\",R[1]),r(\"projection.rotation.roll\",R[2]),r(\"showcoastlines\",!d&&x)&&(r(\"coastlinecolor\"),r(\"coastlinewidth\")),r(\"showocean\",!!x&&void 0)&&r(\"oceancolor\")}(p?(O=-96.6,z=38.7):(O=d?D:I,z=(L[0]+L[1])/2),r(\"center.lon\",O),r(\"center.lat\",z),g&&(r(\"projection.tilt\"),r(\"projection.distance\")),m)&&r(\"projection.parallels\",f.projParallels||[0,60]);r(\"projection.scale\"),r(\"showland\",!!x&&void 0)&&r(\"landcolor\"),r(\"showlakes\",!!x&&void 0)&&r(\"lakecolor\"),r(\"showrivers\",!!x&&void 0)&&(r(\"rivercolor\"),r(\"riverwidth\")),r(\"showcountries\",d&&\"usa\"!==u&&x)&&(r(\"countrycolor\"),r(\"countrywidth\")),(\"usa\"===u||\"north america\"===u&&50===c)&&(r(\"showsubunits\",x),r(\"subunitcolor\"),r(\"subunitwidth\")),d||r(\"showframe\",x)&&(r(\"framecolor\"),r(\"framewidth\")),r(\"bgcolor\"),r(\"fitbounds\")&&(delete e.projection.scale,d?(delete e.center.lon,delete e.center.lat):v?(delete e.center.lon,delete e.center.lat,delete e.projection.rotation.lon,delete e.projection.rotation.lat,delete e.lonaxis.range,delete e.lataxis.range):(delete e.center.lon,delete e.center.lat,delete e.projection.rotation.lon))}e.exports=function(t,e,r){i(t,e,r,{type:\"geo\",attributes:s,handleDefaults:c,fullData:r,partition:\"y\"})}},{\"../../lib\":503,\"../get_data\":593,\"../subplot_defaults\":632,\"./constants\":587,\"./layout_attributes\":590}],592:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../registry\"),o=Math.PI/180,s=180/Math.PI,l={cursor:\"pointer\"},c={cursor:\"auto\"};function u(t,e){return n.behavior.zoom().translate(e.translate()).scale(e.scale())}function f(t,e,r){var n=t.id,o=t.graphDiv,s=o.layout,l=s[n],c=o._fullLayout,u=c[n],f={},h={};function p(t,e){f[n+\".\"+t]=i.nestedProperty(l,t).get(),a.call(\"_storeDirectGUIEdit\",s,c._preGUI,f);var r=i.nestedProperty(u,t);r.get()!==e&&(r.set(e),i.nestedProperty(l,t).set(e),h[n+\".\"+t]=e)}r(p),p(\"projection.scale\",e.scale()/t.fitScale),p(\"fitbounds\",!1),o.emit(\"plotly_relayout\",h)}function h(t,e){var r=u(0,e);function i(r){var n=e.invert(t.midPt);r(\"center.lon\",n[0]),r(\"center.lat\",n[1])}return r.on(\"zoomstart\",(function(){n.select(this).style(l)})).on(\"zoom\",(function(){e.scale(n.event.scale).translate(n.event.translate),t.render();var r=e.invert(t.midPt);t.graphDiv.emit(\"plotly_relayouting\",{\"geo.projection.scale\":e.scale()/t.fitScale,\"geo.center.lon\":r[0],\"geo.center.lat\":r[1]})})).on(\"zoomend\",(function(){n.select(this).style(c),f(t,e,i)})),r}function p(t,e){var r,i,a,o,s,h,p,d,g,m=u(0,e);function v(t){return e.invert(t)}function y(r){var n=e.rotate(),i=e.invert(t.midPt);r(\"projection.rotation.lon\",-n[0]),r(\"center.lon\",i[0]),r(\"center.lat\",i[1])}return m.on(\"zoomstart\",(function(){n.select(this).style(l),r=n.mouse(this),i=e.rotate(),a=e.translate(),o=i,s=v(r)})).on(\"zoom\",(function(){if(h=n.mouse(this),function(t){var r=v(t);if(!r)return!0;var n=e(r);return Math.abs(n[0]-t[0])>2||Math.abs(n[1]-t[1])>2}(r))return m.scale(e.scale()),void m.translate(e.translate());e.scale(n.event.scale),e.translate([a[0],n.event.translate[1]]),s?v(h)&&(d=v(h),p=[o[0]+(d[0]-s[0]),i[1],i[2]],e.rotate(p),o=p):s=v(r=h),g=!0,t.render();var l=e.rotate(),c=e.invert(t.midPt);t.graphDiv.emit(\"plotly_relayouting\",{\"geo.projection.scale\":e.scale()/t.fitScale,\"geo.center.lon\":c[0],\"geo.center.lat\":c[1],\"geo.projection.rotation.lon\":-l[0]})})).on(\"zoomend\",(function(){n.select(this).style(c),g&&f(t,e,y)})),m}function d(t,e){var r,i={r:e.rotate(),k:e.scale()},a=u(0,e),o=function(t){var e=0,r=arguments.length,i=[];for(;++ed?(a=(f>0?90:-90)-p,i=0):(a=Math.asin(f/d)*s-p,i=Math.sqrt(d*d-f*f));var g=180-a-2*p,m=(Math.atan2(h,u)-Math.atan2(c,i))*s,v=(Math.atan2(h,u)-Math.atan2(c,-i))*s;return b(r[0],r[1],a,m)<=b(r[0],r[1],g,v)?[a,m,r[2]]:[g,v,r[2]]}function b(t,e,r,n){var i=_(r-t),a=_(n-e);return Math.sqrt(i*i+a*a)}function _(t){return(t%360+540)%360-180}function w(t,e,r){var n=r*o,i=t.slice(),a=0===e?1:0,s=2===e?1:2,l=Math.cos(n),c=Math.sin(n);return i[a]=t[a]*l-t[s]*c,i[s]=t[s]*l+t[a]*c,i}function T(t){return[Math.atan2(2*(t[0]*t[1]+t[2]*t[3]),1-2*(t[1]*t[1]+t[2]*t[2]))*s,Math.asin(Math.max(-1,Math.min(1,2*(t[0]*t[2]-t[3]*t[1]))))*s,Math.atan2(2*(t[0]*t[3]+t[1]*t[2]),1-2*(t[2]*t[2]+t[3]*t[3]))*s]}function k(t,e){for(var r=0,n=0,i=t.length;nMath.abs(s)?(c.boxEnd[1]=c.boxStart[1]+Math.abs(a)*_*(s>=0?1:-1),c.boxEnd[1]l[3]&&(c.boxEnd[1]=l[3],c.boxEnd[0]=c.boxStart[0]+(l[3]-c.boxStart[1])/Math.abs(_))):(c.boxEnd[0]=c.boxStart[0]+Math.abs(s)/_*(a>=0?1:-1),c.boxEnd[0]l[2]&&(c.boxEnd[0]=l[2],c.boxEnd[1]=c.boxStart[1]+(l[2]-c.boxStart[0])*Math.abs(_)))}}else c.boxEnabled?(a=c.boxStart[0]!==c.boxEnd[0],s=c.boxStart[1]!==c.boxEnd[1],a||s?(a&&(m(0,c.boxStart[0],c.boxEnd[0]),t.xaxis.autorange=!1),s&&(m(1,c.boxStart[1],c.boxEnd[1]),t.yaxis.autorange=!1),t.relayoutCallback()):t.glplot.setDirty(),c.boxEnabled=!1,c.boxInited=!1):c.boxInited&&(c.boxInited=!1);break;case\"pan\":c.boxEnabled=!1,c.boxInited=!1,e?(c.panning||(c.dragStart[0]=n,c.dragStart[1]=i),Math.abs(c.dragStart[0]-n).999&&(g=\"turntable\"):g=\"turntable\")}else g=\"turntable\";r(\"dragmode\",g),r(\"hovermode\",n.getDfltFromLayout(\"hovermode\"))}e.exports=function(t,e,r){var i=e._basePlotModules.length>1;o(t,e,r,{type:\"gl3d\",attributes:l,handleDefaults:u,fullLayout:e,font:e.font,fullData:r,getDfltFromLayout:function(e){if(!i)return n.validate(t[e],l[e])?t[e]:void 0},autotypenumbersDflt:e.autotypenumbers,paper_bgcolor:e.paper_bgcolor,calendar:e.calendar})}},{\"../../../components/color\":366,\"../../../lib\":503,\"../../../registry\":638,\"../../get_data\":593,\"../../subplot_defaults\":632,\"./axis_defaults\":601,\"./layout_attributes\":604}],604:[function(t,e,r){\"use strict\";var n=t(\"./axis_attributes\"),i=t(\"../../domain\").attributes,a=t(\"../../../lib/extend\").extendFlat,o=t(\"../../../lib\").counterRegex;function s(t,e,r){return{x:{valType:\"number\",dflt:t,editType:\"camera\"},y:{valType:\"number\",dflt:e,editType:\"camera\"},z:{valType:\"number\",dflt:r,editType:\"camera\"},editType:\"camera\"}}e.exports={_arrayAttrRegexps:[o(\"scene\",\".annotations\",!0)],bgcolor:{valType:\"color\",dflt:\"rgba(0,0,0,0)\",editType:\"plot\"},camera:{up:a(s(0,0,1),{}),center:a(s(0,0,0),{}),eye:a(s(1.25,1.25,1.25),{}),projection:{type:{valType:\"enumerated\",values:[\"perspective\",\"orthographic\"],dflt:\"perspective\",editType:\"calc\"},editType:\"calc\"},editType:\"camera\"},domain:i({name:\"scene\",editType:\"plot\"}),aspectmode:{valType:\"enumerated\",values:[\"auto\",\"cube\",\"data\",\"manual\"],dflt:\"auto\",editType:\"plot\",impliedEdits:{\"aspectratio.x\":void 0,\"aspectratio.y\":void 0,\"aspectratio.z\":void 0}},aspectratio:{x:{valType:\"number\",min:0,editType:\"plot\",impliedEdits:{\"^aspectmode\":\"manual\"}},y:{valType:\"number\",min:0,editType:\"plot\",impliedEdits:{\"^aspectmode\":\"manual\"}},z:{valType:\"number\",min:0,editType:\"plot\",impliedEdits:{\"^aspectmode\":\"manual\"}},editType:\"plot\",impliedEdits:{aspectmode:\"manual\"}},xaxis:n,yaxis:n,zaxis:n,dragmode:{valType:\"enumerated\",values:[\"orbit\",\"turntable\",\"zoom\",\"pan\",!1],editType:\"plot\"},hovermode:{valType:\"enumerated\",values:[\"closest\",!1],dflt:\"closest\",editType:\"modebar\"},uirevision:{valType:\"any\",editType:\"none\"},editType:\"plot\",_deprecated:{cameraposition:{valType:\"info_array\",editType:\"camera\"}}}},{\"../../../lib\":503,\"../../../lib/extend\":493,\"../../domain\":584,\"./axis_attributes\":600}],605:[function(t,e,r){\"use strict\";var n=t(\"../../../lib/str2rgbarray\"),i=[\"xaxis\",\"yaxis\",\"zaxis\"];function a(){this.enabled=[!0,!0,!0],this.colors=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.drawSides=[!0,!0,!0],this.lineWidth=[1,1,1]}a.prototype.merge=function(t){for(var e=0;e<3;++e){var r=t[i[e]];r.visible?(this.enabled[e]=r.showspikes,this.colors[e]=n(r.spikecolor),this.drawSides[e]=r.spikesides,this.lineWidth[e]=r.spikethickness):(this.enabled[e]=!1,this.drawSides[e]=!1)}},e.exports=function(t){var e=new a;return e.merge(t),e}},{\"../../../lib/str2rgbarray\":528}],606:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e=t.axesOptions,r=t.glplot.axesPixels,s=t.fullSceneLayout,l=[[],[],[]],c=0;c<3;++c){var u=s[a[c]];if(u._length=(r[c].hi-r[c].lo)*r[c].pixelsPerDataUnit/t.dataScale[c],Math.abs(u._length)===1/0||isNaN(u._length))l[c]=[];else{u._input_range=u.range.slice(),u.range[0]=r[c].lo/t.dataScale[c],u.range[1]=r[c].hi/t.dataScale[c],u._m=1/(t.dataScale[c]*r[c].pixelsPerDataUnit),u.range[0]===u.range[1]&&(u.range[0]-=1,u.range[1]+=1);var f=u.tickmode;if(\"auto\"===u.tickmode){u.tickmode=\"linear\";var h=u.nticks||i.constrain(u._length/40,4,9);n.autoTicks(u,Math.abs(u.range[1]-u.range[0])/h)}for(var p=n.calcTicks(u,{msUTC:!0}),d=0;d/g,\" \"));l[c]=p,u.tickmode=f}}e.ticks=l;for(c=0;c<3;++c){o[c]=.5*(t.glplot.bounds[0][c]+t.glplot.bounds[1][c]);for(d=0;d<2;++d)e.bounds[d][c]=t.glplot.bounds[d][c]}t.contourLevels=function(t){for(var e=new Array(3),r=0;r<3;++r){for(var n=t[r],i=new Array(n.length),a=0;ar.deltaY?1.1:1/1.1,a=t.glplot.getAspectratio();t.glplot.setAspectratio({x:n*a.x,y:n*a.y,z:n*a.z})}i(t)}}),!!c&&{passive:!1}),t.glplot.canvas.addEventListener(\"mousemove\",(function(){if(!1!==t.fullSceneLayout.dragmode&&0!==t.camera.mouseListener.buttons){var e=n();t.graphDiv.emit(\"plotly_relayouting\",e)}})),t.staticMode||t.glplot.canvas.addEventListener(\"webglcontextlost\",(function(r){e&&e.emit&&e.emit(\"plotly_webglcontextlost\",{event:r,layer:t.id})}),!1)),t.glplot.oncontextloss=function(){t.recoverContext()},t.glplot.onrender=function(){t.render()},!0},w.render=function(){var t,e=this,r=e.graphDiv,n=e.svgContainer,i=e.container.getBoundingClientRect();r._fullLayout._calcInverseTransform(r);var a=r._fullLayout._invScaleX,o=r._fullLayout._invScaleY,s=i.width*a,l=i.height*o;n.setAttributeNS(null,\"viewBox\",\"0 0 \"+s+\" \"+l),n.setAttributeNS(null,\"width\",s),n.setAttributeNS(null,\"height\",l),b(e),e.glplot.axes.update(e.axesOptions);for(var c=Object.keys(e.traces),u=null,h=e.glplot.selection,g=0;g\")):\"isosurface\"===t.type||\"volume\"===t.type?(T.valueLabel=p.hoverLabelText(e._mockAxis,e._mockAxis.d2l(h.traceCoordinate[3]),t.valuehoverformat),S.push(\"value: \"+T.valueLabel),h.textLabel&&S.push(h.textLabel),x=S.join(\"
\")):x=h.textLabel;var E={x:h.traceCoordinate[0],y:h.traceCoordinate[1],z:h.traceCoordinate[2],data:_._input,fullData:_,curveNumber:_.index,pointNumber:w};d.appendArrayPointValue(E,_,w),t._module.eventData&&(E=_._module.eventData(E,h,_,{},w));var L={points:[E]};if(e.fullSceneLayout.hovermode){var C=[];d.loneHover({trace:_,x:(.5+.5*y[0]/y[3])*s,y:(.5-.5*y[1]/y[3])*l,xLabel:T.xLabel,yLabel:T.yLabel,zLabel:T.zLabel,text:x,name:u.name,color:d.castHoverOption(_,w,\"bgcolor\")||u.color,borderColor:d.castHoverOption(_,w,\"bordercolor\"),fontFamily:d.castHoverOption(_,w,\"font.family\"),fontSize:d.castHoverOption(_,w,\"font.size\"),fontColor:d.castHoverOption(_,w,\"font.color\"),nameLength:d.castHoverOption(_,w,\"namelength\"),textAlign:d.castHoverOption(_,w,\"align\"),hovertemplate:f.castOption(_,w,\"hovertemplate\"),hovertemplateLabels:f.extendFlat({},E,T),eventData:[E]},{container:n,gd:r,inOut_bbox:C}),E.bbox=C[0]}h.buttons&&h.distance<5?r.emit(\"plotly_click\",L):r.emit(\"plotly_hover\",L),this.oldEventData=L}else d.loneUnhover(n),this.oldEventData&&r.emit(\"plotly_unhover\",this.oldEventData),this.oldEventData=void 0;e.drawAnnotations(e)},w.recoverContext=function(){var t=this;t.glplot.dispose();var e=function(){t.glplot.gl.isContextLost()?requestAnimationFrame(e):t.initializeGLPlot()?t.plot.apply(t,t.plotArgs):f.error(\"Catastrophic and unrecoverable WebGL error. Context lost.\")};requestAnimationFrame(e)};var k=[\"xaxis\",\"yaxis\",\"zaxis\"];function A(t,e,r){for(var n=t.fullSceneLayout,i=0;i<3;i++){var a=k[i],o=a.charAt(0),s=n[a],l=e[o],c=e[o+\"calendar\"],u=e[\"_\"+o+\"length\"];if(f.isArrayOrTypedArray(l))for(var h,p=0;p<(u||l.length);p++)if(f.isArrayOrTypedArray(l[p]))for(var d=0;dm[1][a])m[0][a]=-1,m[1][a]=1;else{var L=m[1][a]-m[0][a];m[0][a]-=L/32,m[1][a]+=L/32}if(\"reversed\"===s.autorange){var C=m[0][a];m[0][a]=m[1][a],m[1][a]=C}}else{var P=s.range;m[0][a]=s.r2l(P[0]),m[1][a]=s.r2l(P[1])}m[0][a]===m[1][a]&&(m[0][a]-=1,m[1][a]+=1),v[a]=m[1][a]-m[0][a],this.glplot.setBounds(a,{min:m[0][a]*h[a],max:m[1][a]*h[a]})}var I=c.aspectmode;if(\"cube\"===I)d=[1,1,1];else if(\"manual\"===I){var O=c.aspectratio;d=[O.x,O.y,O.z]}else{if(\"auto\"!==I&&\"data\"!==I)throw new Error(\"scene.js aspectRatio was not one of the enumerated types\");var z=[1,1,1];for(a=0;a<3;++a){var D=y[l=(s=c[k[a]]).type];z[a]=Math.pow(D.acc,1/D.count)/h[a]}d=\"data\"===I||Math.max.apply(null,z)/Math.min.apply(null,z)<=4?z:[1,1,1]}c.aspectratio.x=u.aspectratio.x=d[0],c.aspectratio.y=u.aspectratio.y=d[1],c.aspectratio.z=u.aspectratio.z=d[2],this.glplot.setAspectratio(c.aspectratio),this.viewInitial.aspectratio||(this.viewInitial.aspectratio={x:c.aspectratio.x,y:c.aspectratio.y,z:c.aspectratio.z}),this.viewInitial.aspectmode||(this.viewInitial.aspectmode=c.aspectmode);var R=c.domain||null,F=e._size||null;if(R&&F){var B=this.container.style;B.position=\"absolute\",B.left=F.l+R.x[0]*F.w+\"px\",B.top=F.t+(1-R.y[1])*F.h+\"px\",B.width=F.w*(R.x[1]-R.x[0])+\"px\",B.height=F.h*(R.y[1]-R.y[0])+\"px\"}this.glplot.redraw()}},w.destroy=function(){this.glplot&&(this.camera.mouseListener.enabled=!1,this.container.removeEventListener(\"wheel\",this.camera.wheelListener),this.camera=null,this.glplot.dispose(),this.container.parentNode.removeChild(this.container),this.glplot=null)},w.getCamera=function(){var t;return this.camera.view.recalcMatrix(this.camera.view.lastT()),{up:{x:(t=this.camera).up[0],y:t.up[1],z:t.up[2]},center:{x:t.center[0],y:t.center[1],z:t.center[2]},eye:{x:t.eye[0],y:t.eye[1],z:t.eye[2]},projection:{type:!0===t._ortho?\"orthographic\":\"perspective\"}}},w.setViewport=function(t){var e,r=t.camera;this.camera.lookAt.apply(this,[[(e=r).eye.x,e.eye.y,e.eye.z],[e.center.x,e.center.y,e.center.z],[e.up.x,e.up.y,e.up.z]]),this.glplot.setAspectratio(t.aspectratio),\"orthographic\"===r.projection.type!==this.camera._ortho&&(this.glplot.redraw(),this.glplot.clearRGBA(),this.glplot.dispose(),this.initializeGLPlot())},w.isCameraChanged=function(t){var e=this.getCamera(),r=f.nestedProperty(t,this.id+\".camera\").get();function n(t,e,r,n){var i=[\"up\",\"center\",\"eye\"],a=[\"x\",\"y\",\"z\"];return e[i[r]]&&t[i[r]][a[n]]===e[i[r]][a[n]]}var i=!1;if(void 0===r)i=!0;else{for(var a=0;a<3;a++)for(var o=0;o<3;o++)if(!n(e,r,a,o)){i=!0;break}(!r.projection||e.projection&&e.projection.type!==r.projection.type)&&(i=!0)}return i},w.isAspectChanged=function(t){var e=this.glplot.getAspectratio(),r=f.nestedProperty(t,this.id+\".aspectratio\").get();return void 0===r||r.x!==e.x||r.y!==e.y||r.z!==e.z},w.saveLayout=function(t){var e,r,n,i,a,o,s=this.fullLayout,l=this.isCameraChanged(t),c=this.isAspectChanged(t),h=l||c;if(h){var p={};if(l&&(e=this.getCamera(),n=(r=f.nestedProperty(t,this.id+\".camera\")).get(),p[this.id+\".camera\"]=n),c&&(i=this.glplot.getAspectratio(),o=(a=f.nestedProperty(t,this.id+\".aspectratio\")).get(),p[this.id+\".aspectratio\"]=o),u.call(\"_storeDirectGUIEdit\",t,s._preGUI,p),l)r.set(e),f.nestedProperty(s,this.id+\".camera\").set(e);if(c)a.set(i),f.nestedProperty(s,this.id+\".aspectratio\").set(i),this.glplot.redraw()}return h},w.updateFx=function(t,e){var r=this.camera;if(r)if(\"orbit\"===t)r.mode=\"orbit\",r.keyBindingMode=\"rotate\";else if(\"turntable\"===t){r.up=[0,0,1],r.mode=\"turntable\",r.keyBindingMode=\"rotate\";var n=this.graphDiv,i=n._fullLayout,a=this.fullSceneLayout.camera,o=a.up.x,s=a.up.y,l=a.up.z;if(l/Math.sqrt(o*o+s*s+l*l)<.999){var c=this.id+\".camera.up\",h={x:0,y:0,z:1},p={};p[c]=h;var d=n.layout;u.call(\"_storeDirectGUIEdit\",d,i._preGUI,p),a.up=h,f.nestedProperty(d,c).set(h)}}else r.keyBindingMode=t;this.fullSceneLayout.hovermode=e},w.toImage=function(t){t||(t=\"png\"),this.staticMode&&this.container.appendChild(n),this.glplot.redraw();var e=this.glplot.gl,r=e.drawingBufferWidth,i=e.drawingBufferHeight;e.bindFramebuffer(e.FRAMEBUFFER,null);var a=new Uint8Array(r*i*4);e.readPixels(0,0,r,i,e.RGBA,e.UNSIGNED_BYTE,a),function(t,e,r){for(var n=0,i=r-1;n0)for(var s=255/o,l=0;l<3;++l)t[a+l]=Math.min(s*t[a+l],255)}}(a,r,i);var o=document.createElement(\"canvas\");o.width=r,o.height=i;var s,l=o.getContext(\"2d\"),c=l.createImageData(r,i);switch(c.data.set(a),l.putImageData(c,0,0),t){case\"jpeg\":s=o.toDataURL(\"image/jpeg\");break;case\"webp\":s=o.toDataURL(\"image/webp\");break;default:s=o.toDataURL(\"image/png\")}return this.staticMode&&this.container.removeChild(n),s},w.setConvert=function(){for(var t=0;t<3;t++){var e=this.fullSceneLayout[k[t]];p.setConvert(e,this.fullLayout),e.setScale=f.noop}},w.make4thDimension=function(){var t=this.graphDiv._fullLayout;this._mockAxis={type:\"linear\",showexponent:\"all\",exponentformat:\"B\"},p.setConvert(this._mockAxis,t)},e.exports=_},{\"../../../stackgl_modules\":1120,\"../../components/fx\":406,\"../../lib\":503,\"../../lib/show_no_webgl_msg\":525,\"../../lib/str2rgbarray\":528,\"../../plots/cartesian/axes\":554,\"../../registry\":638,\"./layout/convert\":602,\"./layout/spikes\":605,\"./layout/tick_marks\":606,\"./project\":607,\"has-passive-events\":229,\"webgl-context\":331}],609:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,n){n=n||t.length;for(var i=new Array(n),a=0;aOpenStreetMap
contributors',a=['\\xa9 Carto',i].join(\" \"),o=['Map tiles by Stamen Design','under CC BY 3.0',\"|\",'Data by OpenStreetMap contributors','under ODbL'].join(\" \"),s={\"open-street-map\":{id:\"osm\",version:8,sources:{\"plotly-osm-tiles\":{type:\"raster\",attribution:i,tiles:[\"https://a.tile.openstreetmap.org/{z}/{x}/{y}.png\",\"https://b.tile.openstreetmap.org/{z}/{x}/{y}.png\"],tileSize:256}},layers:[{id:\"plotly-osm-tiles\",type:\"raster\",source:\"plotly-osm-tiles\",minzoom:0,maxzoom:22}]},\"white-bg\":{id:\"white-bg\",version:8,sources:{},layers:[{id:\"white-bg\",type:\"background\",paint:{\"background-color\":\"#FFFFFF\"},minzoom:0,maxzoom:22}]},\"carto-positron\":{id:\"carto-positron\",version:8,sources:{\"plotly-carto-positron\":{type:\"raster\",attribution:a,tiles:[\"https://cartodb-basemaps-c.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png\"],tileSize:256}},layers:[{id:\"plotly-carto-positron\",type:\"raster\",source:\"plotly-carto-positron\",minzoom:0,maxzoom:22}]},\"carto-darkmatter\":{id:\"carto-darkmatter\",version:8,sources:{\"plotly-carto-darkmatter\":{type:\"raster\",attribution:a,tiles:[\"https://cartodb-basemaps-c.global.ssl.fastly.net/dark_all/{z}/{x}/{y}.png\"],tileSize:256}},layers:[{id:\"plotly-carto-darkmatter\",type:\"raster\",source:\"plotly-carto-darkmatter\",minzoom:0,maxzoom:22}]},\"stamen-terrain\":{id:\"stamen-terrain\",version:8,sources:{\"plotly-stamen-terrain\":{type:\"raster\",attribution:o,tiles:[\"https://stamen-tiles.a.ssl.fastly.net/terrain/{z}/{x}/{y}.png\"],tileSize:256}},layers:[{id:\"plotly-stamen-terrain\",type:\"raster\",source:\"plotly-stamen-terrain\",minzoom:0,maxzoom:22}]},\"stamen-toner\":{id:\"stamen-toner\",version:8,sources:{\"plotly-stamen-toner\":{type:\"raster\",attribution:o,tiles:[\"https://stamen-tiles.a.ssl.fastly.net/toner/{z}/{x}/{y}.png\"],tileSize:256}},layers:[{id:\"plotly-stamen-toner\",type:\"raster\",source:\"plotly-stamen-toner\",minzoom:0,maxzoom:22}]},\"stamen-watercolor\":{id:\"stamen-watercolor\",version:8,sources:{\"plotly-stamen-watercolor\":{type:\"raster\",attribution:['Map tiles by Stamen Design','under CC BY 3.0',\"|\",'Data by OpenStreetMap contributors','under CC BY SA'].join(\" \"),tiles:[\"https://stamen-tiles.a.ssl.fastly.net/watercolor/{z}/{x}/{y}.png\"],tileSize:256}},layers:[{id:\"plotly-stamen-watercolor\",type:\"raster\",source:\"plotly-stamen-watercolor\",minzoom:0,maxzoom:22}]}},l=n(s);e.exports={requiredVersion:\"1.10.1\",styleUrlPrefix:\"mapbox://styles/mapbox/\",styleUrlSuffix:\"v9\",styleValuesMapbox:[\"basic\",\"streets\",\"outdoors\",\"light\",\"dark\",\"satellite\",\"satellite-streets\"],styleValueDflt:\"basic\",stylesNonMapbox:s,styleValuesNonMapbox:l,traceLayerPrefix:\"plotly-trace-layer-\",layoutLayerPrefix:\"plotly-layout-layer-\",wrongVersionErrorMsg:[\"Your custom plotly.js bundle is not using the correct mapbox-gl version\",\"Please install mapbox-gl@1.10.1.\"].join(\"\\n\"),noAccessTokenErrorMsg:[\"Missing Mapbox access token.\",\"Mapbox trace type require a Mapbox access token to be registered.\",\"For example:\",\" Plotly.newPlot(gd, data, layout, { mapboxAccessToken: 'my-access-token' });\",\"More info here: https://www.mapbox.com/help/define-access-token/\"].join(\"\\n\"),missingStyleErrorMsg:[\"No valid mapbox style found, please set `mapbox.style` to one of:\",l.join(\", \"),\"or register a Mapbox access token to use a Mapbox-served style.\"].join(\"\\n\"),multipleTokensErrorMsg:[\"Set multiple mapbox access token across different mapbox subplot,\",\"using first token found as mapbox-gl does not allow multipleaccess tokens on the same page.\"].join(\"\\n\"),mapOnErrorMsg:\"Mapbox error.\",mapboxLogo:{path0:\"m 10.5,1.24 c -5.11,0 -9.25,4.15 -9.25,9.25 0,5.1 4.15,9.25 9.25,9.25 5.1,0 9.25,-4.15 9.25,-9.25 0,-5.11 -4.14,-9.25 -9.25,-9.25 z m 4.39,11.53 c -1.93,1.93 -4.78,2.31 -6.7,2.31 -0.7,0 -1.41,-0.05 -2.1,-0.16 0,0 -1.02,-5.64 2.14,-8.81 0.83,-0.83 1.95,-1.28 3.13,-1.28 1.27,0 2.49,0.51 3.39,1.42 1.84,1.84 1.89,4.75 0.14,6.52 z\",path1:\"M 10.5,-0.01 C 4.7,-0.01 0,4.7 0,10.49 c 0,5.79 4.7,10.5 10.5,10.5 5.8,0 10.5,-4.7 10.5,-10.5 C 20.99,4.7 16.3,-0.01 10.5,-0.01 Z m 0,19.75 c -5.11,0 -9.25,-4.15 -9.25,-9.25 0,-5.1 4.14,-9.26 9.25,-9.26 5.11,0 9.25,4.15 9.25,9.25 0,5.13 -4.14,9.26 -9.25,9.26 z\",path2:\"M 14.74,6.25 C 12.9,4.41 9.98,4.35 8.23,6.1 5.07,9.27 6.09,14.91 6.09,14.91 c 0,0 5.64,1.02 8.81,-2.14 C 16.64,11 16.59,8.09 14.74,6.25 Z m -2.27,4.09 -0.91,1.87 -0.9,-1.87 -1.86,-0.91 1.86,-0.9 0.9,-1.87 0.91,1.87 1.86,0.9 z\",polygon:\"11.56,12.21 10.66,10.34 8.8,9.43 10.66,8.53 11.56,6.66 12.47,8.53 14.33,9.43 12.47,10.34\"},styleRules:{map:\"overflow:hidden;position:relative;\",\"missing-css\":\"display:none;\",canary:\"background-color:salmon;\",\"ctrl-bottom-left\":\"position: absolute; pointer-events: none; z-index: 2; bottom: 0; left: 0;\",\"ctrl-bottom-right\":\"position: absolute; pointer-events: none; z-index: 2; right: 0; bottom: 0;\",ctrl:\"clear: both; pointer-events: auto; transform: translate(0, 0);\",\"ctrl-attrib.mapboxgl-compact .mapboxgl-ctrl-attrib-inner\":\"display: none;\",\"ctrl-attrib.mapboxgl-compact:hover .mapboxgl-ctrl-attrib-inner\":\"display: block; margin-top:2px\",\"ctrl-attrib.mapboxgl-compact:hover\":\"padding: 2px 24px 2px 4px; visibility: visible; margin-top: 6px;\",\"ctrl-attrib.mapboxgl-compact::after\":'content: \"\"; cursor: pointer; position: absolute; background-image: url(\\'data:image/svg+xml;charset=utf-8,%3Csvg viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"%3E %3Cpath fill=\"%23333333\" fill-rule=\"evenodd\" d=\"M4,10a6,6 0 1,0 12,0a6,6 0 1,0 -12,0 M9,7a1,1 0 1,0 2,0a1,1 0 1,0 -2,0 M9,10a1,1 0 1,1 2,0l0,3a1,1 0 1,1 -2,0\"/%3E %3C/svg%3E\\'); background-color: rgba(255, 255, 255, 0.5); width: 24px; height: 24px; box-sizing: border-box; border-radius: 12px;',\"ctrl-attrib.mapboxgl-compact\":\"min-height: 20px; padding: 0; margin: 10px; position: relative; background-color: #fff; border-radius: 3px 12px 12px 3px;\",\"ctrl-bottom-right > .mapboxgl-ctrl-attrib.mapboxgl-compact::after\":\"bottom: 0; right: 0\",\"ctrl-bottom-left > .mapboxgl-ctrl-attrib.mapboxgl-compact::after\":\"bottom: 0; left: 0\",\"ctrl-bottom-left .mapboxgl-ctrl\":\"margin: 0 0 10px 10px; float: left;\",\"ctrl-bottom-right .mapboxgl-ctrl\":\"margin: 0 10px 10px 0; float: right;\",\"ctrl-attrib\":\"color: rgba(0, 0, 0, 0.75); text-decoration: none; font-size: 12px\",\"ctrl-attrib a\":\"color: rgba(0, 0, 0, 0.75); text-decoration: none; font-size: 12px\",\"ctrl-attrib a:hover\":\"color: inherit; text-decoration: underline;\",\"ctrl-attrib .mapbox-improve-map\":\"font-weight: bold; margin-left: 2px;\",\"attrib-empty\":\"display: none;\",\"ctrl-logo\":'display:block; width: 21px; height: 21px; background-image: url(\\'data:image/svg+xml;charset=utf-8,%3C?xml version=\"1.0\" encoding=\"utf-8\"?%3E %3Csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 21 21\" style=\"enable-background:new 0 0 21 21;\" xml:space=\"preserve\"%3E%3Cg transform=\"translate(0,0.01)\"%3E%3Cpath d=\"m 10.5,1.24 c -5.11,0 -9.25,4.15 -9.25,9.25 0,5.1 4.15,9.25 9.25,9.25 5.1,0 9.25,-4.15 9.25,-9.25 0,-5.11 -4.14,-9.25 -9.25,-9.25 z m 4.39,11.53 c -1.93,1.93 -4.78,2.31 -6.7,2.31 -0.7,0 -1.41,-0.05 -2.1,-0.16 0,0 -1.02,-5.64 2.14,-8.81 0.83,-0.83 1.95,-1.28 3.13,-1.28 1.27,0 2.49,0.51 3.39,1.42 1.84,1.84 1.89,4.75 0.14,6.52 z\" style=\"opacity:0.9;fill:%23ffffff;enable-background:new\" class=\"st0\"/%3E%3Cpath d=\"M 10.5,-0.01 C 4.7,-0.01 0,4.7 0,10.49 c 0,5.79 4.7,10.5 10.5,10.5 5.8,0 10.5,-4.7 10.5,-10.5 C 20.99,4.7 16.3,-0.01 10.5,-0.01 Z m 0,19.75 c -5.11,0 -9.25,-4.15 -9.25,-9.25 0,-5.1 4.14,-9.26 9.25,-9.26 5.11,0 9.25,4.15 9.25,9.25 0,5.13 -4.14,9.26 -9.25,9.26 z\" style=\"opacity:0.35;enable-background:new\" class=\"st1\"/%3E%3Cpath d=\"M 14.74,6.25 C 12.9,4.41 9.98,4.35 8.23,6.1 5.07,9.27 6.09,14.91 6.09,14.91 c 0,0 5.64,1.02 8.81,-2.14 C 16.64,11 16.59,8.09 14.74,6.25 Z m -2.27,4.09 -0.91,1.87 -0.9,-1.87 -1.86,-0.91 1.86,-0.9 0.9,-1.87 0.91,1.87 1.86,0.9 z\" style=\"opacity:0.35;enable-background:new\" class=\"st1\"/%3E%3Cpolygon points=\"11.56,12.21 10.66,10.34 8.8,9.43 10.66,8.53 11.56,6.66 12.47,8.53 14.33,9.43 12.47,10.34 \" style=\"opacity:0.9;fill:%23ffffff;enable-background:new\" class=\"st0\"/%3E%3C/g%3E%3C/svg%3E\\')'}}},{\"../../lib/sort_object_keys\":526}],612:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t,e){var r=t.split(\" \"),i=r[0],a=r[1],o=n.isArrayOrTypedArray(e)?n.mean(e):e,s=.5+o/100,l=1.5+o/100,c=[\"\",\"\"],u=[0,0];switch(i){case\"top\":c[0]=\"top\",u[1]=-l;break;case\"bottom\":c[0]=\"bottom\",u[1]=l}switch(a){case\"left\":c[1]=\"right\",u[0]=-s;break;case\"right\":c[1]=\"left\",u[0]=s}return{anchor:c[0]&&c[1]?c.join(\"-\"):c[0]?c[0]:c[1]?c[1]:\"center\",offset:u}}},{\"../../lib\":503}],613:[function(t,e,r){\"use strict\";var n=t(\"mapbox-gl/dist/mapbox-gl-unminified\"),i=t(\"../../lib\"),a=i.strTranslate,o=i.strScale,s=t(\"../../plots/get_data\").getSubplotCalcData,l=t(\"../../constants/xmlns_namespaces\"),c=t(\"@plotly/d3\"),u=t(\"../../components/drawing\"),f=t(\"../../lib/svg_text_utils\"),h=t(\"./mapbox\"),p=r.constants=t(\"./constants\");function d(t){return\"string\"==typeof t&&(-1!==p.styleValuesMapbox.indexOf(t)||0===t.indexOf(\"mapbox://\"))}r.name=\"mapbox\",r.attr=\"subplot\",r.idRoot=\"mapbox\",r.idRegex=r.attrRegex=i.counterRegex(\"mapbox\"),r.attributes={subplot:{valType:\"subplotid\",dflt:\"mapbox\",editType:\"calc\"}},r.layoutAttributes=t(\"./layout_attributes\"),r.supplyLayoutDefaults=t(\"./layout_defaults\"),r.plot=function(t){var e=t._fullLayout,r=t.calcdata,a=e._subplots.mapbox;if(n.version!==p.requiredVersion)throw new Error(p.wrongVersionErrorMsg);var o=function(t,e){var r=t._fullLayout;if(\"\"===t._context.mapboxAccessToken)return\"\";for(var n=[],a=[],o=!1,s=!1,l=0;l1&&i.warn(p.multipleTokensErrorMsg),n[0]):(a.length&&i.log([\"Listed mapbox access token(s)\",a.join(\",\"),\"but did not use a Mapbox map style, ignoring token(s).\"].join(\" \")),\"\")}(t,a);n.accessToken=o;for(var l=0;l_/2){var w=v.split(\"|\").join(\"
\");x.text(w).attr(\"data-unformatted\",w).call(f.convertToTspans,t),b=u.bBox(x.node())}x.attr(\"transform\",a(-3,8-b.height)),y.insert(\"rect\",\".static-attribution\").attr({x:-b.width-6,y:-b.height-3,width:b.width+6,height:b.height+3,fill:\"rgba(255, 255, 255, 0.75)\"});var T=1;b.width+6>_&&(T=_/(b.width+6));var k=[n.l+n.w*h.x[1],n.t+n.h*(1-h.y[0])];y.attr(\"transform\",a(k[0],k[1])+o(T))}},r.updateFx=function(t){for(var e=t._fullLayout,r=e._subplots.mapbox,n=0;n0){for(var r=0;r0}function u(t){var e={},r={};switch(t.type){case\"circle\":n.extendFlat(r,{\"circle-radius\":t.circle.radius,\"circle-color\":t.color,\"circle-opacity\":t.opacity});break;case\"line\":n.extendFlat(r,{\"line-width\":t.line.width,\"line-color\":t.color,\"line-opacity\":t.opacity,\"line-dasharray\":t.line.dash});break;case\"fill\":n.extendFlat(r,{\"fill-color\":t.color,\"fill-outline-color\":t.fill.outlinecolor,\"fill-opacity\":t.opacity});break;case\"symbol\":var i=t.symbol,o=a(i.textposition,i.iconsize);n.extendFlat(e,{\"icon-image\":i.icon+\"-15\",\"icon-size\":i.iconsize/10,\"text-field\":i.text,\"text-size\":i.textfont.size,\"text-anchor\":o.anchor,\"text-offset\":o.offset,\"symbol-placement\":i.placement}),n.extendFlat(r,{\"icon-color\":t.color,\"text-color\":i.textfont.color,\"text-opacity\":t.opacity});break;case\"raster\":n.extendFlat(r,{\"raster-fade-duration\":0,\"raster-opacity\":t.opacity})}return{layout:e,paint:r}}l.update=function(t){this.visible?this.needsNewImage(t)?this.updateImage(t):this.needsNewSource(t)?(this.removeLayer(),this.updateSource(t),this.updateLayer(t)):this.needsNewLayer(t)?this.updateLayer(t):this.updateStyle(t):(this.updateSource(t),this.updateLayer(t)),this.visible=c(t)},l.needsNewImage=function(t){return this.subplot.map.getSource(this.idSource)&&\"image\"===this.sourceType&&\"image\"===t.sourcetype&&(this.source!==t.source||JSON.stringify(this.coordinates)!==JSON.stringify(t.coordinates))},l.needsNewSource=function(t){return this.sourceType!==t.sourcetype||JSON.stringify(this.source)!==JSON.stringify(t.source)||this.layerType!==t.type},l.needsNewLayer=function(t){return this.layerType!==t.type||this.below!==this.subplot.belowLookup[\"layout-\"+this.index]},l.lookupBelow=function(){return this.subplot.belowLookup[\"layout-\"+this.index]},l.updateImage=function(t){this.subplot.map.getSource(this.idSource).updateImage({url:t.source,coordinates:t.coordinates});var e=this.findFollowingMapboxLayerId(this.lookupBelow());null!==e&&this.subplot.map.moveLayer(this.idLayer,e)},l.updateSource=function(t){var e=this.subplot.map;if(e.getSource(this.idSource)&&e.removeSource(this.idSource),this.sourceType=t.sourcetype,this.source=t.source,c(t)){var r=function(t){var e,r=t.sourcetype,n=t.source,a={type:r};\"geojson\"===r?e=\"data\":\"vector\"===r?e=\"string\"==typeof n?\"url\":\"tiles\":\"raster\"===r?(e=\"tiles\",a.tileSize=256):\"image\"===r&&(e=\"url\",a.coordinates=t.coordinates);a[e]=n,t.sourceattribution&&(a.attribution=i(t.sourceattribution));return a}(t);e.addSource(this.idSource,r)}},l.findFollowingMapboxLayerId=function(t){if(\"traces\"===t)for(var e=this.subplot.getMapLayers(),r=0;r1)for(r=0;r-1&&v(e.originalEvent,n,[r.xaxis],[r.yaxis],r.id,t),i.indexOf(\"event\")>-1&&c.click(n,e.originalEvent)}}},_.updateFx=function(t){var e=this,r=e.map,n=e.gd;if(!e.isStatic){var a,o=t.dragmode;a=f(o)?function(t,r){(t.range={})[e.id]=[c([r.xmin,r.ymin]),c([r.xmax,r.ymax])]}:function(t,r,n){(t.lassoPoints={})[e.id]=n.filtered.map(c)};var s=e.dragOptions;e.dragOptions=i.extendDeep(s||{},{dragmode:t.dragmode,element:e.div,gd:n,plotinfo:{id:e.id,domain:t[e.id].domain,xaxis:e.xaxis,yaxis:e.yaxis,fillRangeItems:a},xaxes:[e.xaxis],yaxes:[e.yaxis],subplot:e.id}),r.off(\"click\",e.onClickInPanHandler),p(o)||h(o)?(r.dragPan.disable(),r.on(\"zoomstart\",e.clearSelect),e.dragOptions.prepFn=function(t,r,n){d(t,r,n,e.dragOptions,o)},l.init(e.dragOptions)):(r.dragPan.enable(),r.off(\"zoomstart\",e.clearSelect),e.div.onmousedown=null,e.onClickInPanHandler=e.onClickInPanFn(e.dragOptions),r.on(\"click\",e.onClickInPanHandler))}function c(t){var r=e.map.unproject(t);return[r.lng,r.lat]}},_.updateFramework=function(t){var e=t[this.id].domain,r=t._size,n=this.div.style;n.width=r.w*(e.x[1]-e.x[0])+\"px\",n.height=r.h*(e.y[1]-e.y[0])+\"px\",n.left=r.l+e.x[0]*r.w+\"px\",n.top=r.t+(1-e.y[1])*r.h+\"px\",this.xaxis._offset=r.l+e.x[0]*r.w,this.xaxis._length=r.w*(e.x[1]-e.x[0]),this.yaxis._offset=r.t+(1-e.y[1])*r.h,this.yaxis._length=r.h*(e.y[1]-e.y[0])},_.updateLayers=function(t){var e,r=t[this.id].layers,n=this.layerList;if(r.length!==n.length){for(e=0;e=e.width-20?(a[\"text-anchor\"]=\"start\",a.x=5):(a[\"text-anchor\"]=\"end\",a.x=e._paper.attr(\"width\")-7),r.attr(a);var o=r.select(\".js-link-to-tool\"),s=r.select(\".js-link-spacer\"),l=r.select(\".js-sourcelinks\");t._context.showSources&&t._context.showSources(t),t._context.showLink&&function(t,e){e.text(\"\");var r=e.append(\"a\").attr({\"xlink:xlink:href\":\"#\",class:\"link--impt link--embedview\",\"font-weight\":\"bold\"}).text(t._context.linkText+\" \"+String.fromCharCode(187));if(t._context.sendData)r.on(\"click\",(function(){b.sendDataToCloud(t)}));else{var n=window.location.pathname.split(\"/\"),i=window.location.search;r.attr({\"xlink:xlink:show\":\"new\",\"xlink:xlink:href\":\"/\"+n[2].split(\".\")[0]+\"/\"+n[1]+i})}}(t,o),s.text(o.text()&&l.text()?\" - \":\"\")}},b.sendDataToCloud=function(t){var e=(window.PLOTLYENV||{}).BASE_URL||t._context.plotlyServerURL;if(e){t.emit(\"plotly_beforeexport\");var r=n.select(t).append(\"div\").attr(\"id\",\"hiddenform\").style(\"display\",\"none\"),i=r.append(\"form\").attr({action:e+\"/external\",method:\"post\",target:\"_blank\"});return i.append(\"input\").attr({type:\"text\",name:\"data\"}).node().value=b.graphJson(t,!1,\"keepdata\"),i.node().submit(),r.remove(),t.emit(\"plotly_afterexport\"),!1}};var T=[\"days\",\"shortDays\",\"months\",\"shortMonths\",\"periods\",\"dateTime\",\"date\",\"time\",\"decimal\",\"thousands\",\"grouping\",\"currency\"],k=[\"year\",\"month\",\"dayMonth\",\"dayMonthYear\"];function A(t,e){var r=t._context.locale;r||(r=\"en-US\");var n=!1,i={};function a(t){for(var r=!0,a=0;a1&&z.length>1){for(s.getComponentMethod(\"grid\",\"sizeDefaults\")(c,l),o=0;o15&&z.length>15&&0===l.shapes.length&&0===l.images.length,b.linkSubplots(h,l,f,n),b.cleanPlot(h,l,f,n);var N=!(!n._has||!n._has(\"gl2d\")),j=!(!l._has||!l._has(\"gl2d\")),U=!(!n._has||!n._has(\"cartesian\"))||N,V=!(!l._has||!l._has(\"cartesian\"))||j;U&&!V?n._bgLayer.remove():V&&!U&&(l._shouldCreateBgLayer=!0),n._zoomlayer&&!t._dragging&&d({_fullLayout:n}),function(t,e){var r,n=[];e.meta&&(r=e._meta={meta:e.meta,layout:{meta:e.meta}});for(var i=0;i0){var f=1-2*s;n=Math.round(f*n),i=Math.round(f*i)}}var h=b.layoutAttributes.width.min,p=b.layoutAttributes.height.min;n1,g=!e.height&&Math.abs(r.height-i)>1;(g||d)&&(d&&(r.width=n),g&&(r.height=i)),t._initialAutoSize||(t._initialAutoSize={width:n,height:i}),b.sanitizeMargins(r)},b.supplyLayoutModuleDefaults=function(t,e,r,n){var i,a,o,l=s.componentsRegistry,c=e._basePlotModules,f=s.subplotsRegistry.cartesian;for(i in l)(o=l[i]).includeBasePlot&&o.includeBasePlot(t,e);for(var h in c.length||c.push(f),e._has(\"cartesian\")&&(s.getComponentMethod(\"grid\",\"contentDefaults\")(t,e),f.finalizeSubplots(t,e)),e._subplots)e._subplots[h].sort(u.subplotSort);for(a=0;a1&&(r.l/=g,r.r/=g)}if(f){var m=(r.t+r.b)/f;m>1&&(r.t/=m,r.b/=m)}var v=void 0!==r.xl?r.xl:r.x,y=void 0!==r.xr?r.xr:r.x,x=void 0!==r.yt?r.yt:r.y,_=void 0!==r.yb?r.yb:r.y;h[e]={l:{val:v,size:r.l+d},r:{val:y,size:r.r+d},b:{val:_,size:r.b+d},t:{val:x,size:r.t+d}},p[e]=1}else delete h[e],delete p[e];if(!n._replotting)return b.doAutoMargin(t)}},b.doAutoMargin=function(t){var e=t._fullLayout,r=e.width,n=e.height;e._size||(e._size={}),C(e);var i=e._size,a=e.margin,l=u.extendFlat({},i),c=a.l,f=a.r,h=a.t,d=a.b,g=e._pushmargin,m=e._pushmarginIds;if(!1!==e.margin.autoexpand){for(var v in g)m[v]||delete g[v];for(var y in g.base={l:{val:0,size:c},r:{val:1,size:f},t:{val:1,size:h},b:{val:0,size:d}},g){var x=g[y].l||{},_=g[y].b||{},w=x.val,T=x.size,k=_.val,A=_.size;for(var M in g){if(o(T)&&g[M].r){var S=g[M].r.val,E=g[M].r.size;if(S>w){var L=(T*S+(E-r)*w)/(S-w),P=(E*(1-w)+(T-r)*(1-S))/(S-w);L+P>c+f&&(c=L,f=P)}}if(o(A)&&g[M].t){var I=g[M].t.val,O=g[M].t.size;if(I>k){var z=(A*I+(O-n)*k)/(I-k),D=(O*(1-k)+(A-n)*(1-I))/(I-k);z+D>d+h&&(d=z,h=D)}}}}}var R=u.constrain(r-a.l-a.r,2,64),F=u.constrain(n-a.t-a.b,2,64),B=Math.max(0,r-R),N=Math.max(0,n-F);if(B){var j=(c+f)/B;j>1&&(c/=j,f/=j)}if(N){var U=(d+h)/N;U>1&&(d/=U,h/=U)}if(i.l=Math.round(c),i.r=Math.round(f),i.t=Math.round(h),i.b=Math.round(d),i.p=Math.round(a.pad),i.w=Math.round(r)-i.l-i.r,i.h=Math.round(n)-i.t-i.b,!e._replotting&&b.didMarginChange(l,i)){\"_redrawFromAutoMarginCount\"in e?e._redrawFromAutoMarginCount++:e._redrawFromAutoMarginCount=1;var V=3*(1+Object.keys(m).length);if(e._redrawFromAutoMarginCount0&&(t._transitioningWithDuration=!0),t._transitionData._interruptCallbacks.push((function(){n=!0})),r.redraw&&t._transitionData._interruptCallbacks.push((function(){return s.call(\"redraw\",t)})),t._transitionData._interruptCallbacks.push((function(){t.emit(\"plotly_transitioninterrupted\",[])}));var a=0,o=0;function l(){return a++,function(){o++,n||o!==a||function(e){if(!t._transitionData)return;(function(t){if(t)for(;t.length;)t.shift()})(t._transitionData._interruptCallbacks),Promise.resolve().then((function(){if(r.redraw)return s.call(\"redraw\",t)})).then((function(){t._transitioning=!1,t._transitioningWithDuration=!1,t.emit(\"plotly_transitioned\",[])})).then(e)}(i)}}r.runFn(l),setTimeout(l())}))}],a=u.syncOrAsync(i,t);return a&&a.then||(a=Promise.resolve()),a.then((function(){return t}))}b.didMarginChange=function(t,e){for(var r=0;r1)return!0}return!1},b.graphJson=function(t,e,r,n,i,a){(i&&e&&!t._fullData||i&&!e&&!t._fullLayout)&&b.supplyDefaults(t);var o=i?t._fullData:t.data,s=i?t._fullLayout:t.layout,l=(t._transitionData||{})._frames;function c(t,e){if(\"function\"==typeof t)return e?\"_function_\":null;if(u.isPlainObject(t)){var n,i={};return Object.keys(t).sort().forEach((function(a){if(-1===[\"_\",\"[\"].indexOf(a.charAt(0)))if(\"function\"!=typeof t[a]){if(\"keepdata\"===r){if(\"src\"===a.substr(a.length-3))return}else if(\"keepstream\"===r){if(\"string\"==typeof(n=t[a+\"src\"])&&n.indexOf(\":\")>0&&!u.isPlainObject(t.stream))return}else if(\"keepall\"!==r&&\"string\"==typeof(n=t[a+\"src\"])&&n.indexOf(\":\")>0)return;i[a]=c(t[a],e)}else e&&(i[a]=\"_function\")})),i}return Array.isArray(t)?t.map((function(t){return c(t,e)})):u.isTypedArray(t)?u.simpleMap(t,u.identity):u.isJSDate(t)?u.ms2DateTimeLocal(+t):t}var f={data:(o||[]).map((function(t){var r=c(t);return e&&delete r.fit,r}))};if(!e&&(f.layout=c(s),i)){var h=s._size;f.layout.computed={margin:{b:h.b,l:h.l,r:h.r,t:h.t}}}return l&&(f.frames=c(l)),a&&(f.config=c(t._context,!0)),\"object\"===n?f:JSON.stringify(f)},b.modifyFrames=function(t,e){var r,n,i,a=t._transitionData._frames,o=t._transitionData._frameHash;for(r=0;r=0;a--)if(s[a].enabled){r._indexToPoints=s[a]._indexToPoints;break}n&&n.calc&&(o=n.calc(t,r))}Array.isArray(o)&&o[0]||(o=[{x:h,y:h}]),o[0].t||(o[0].t={}),o[0].trace=r,d[e]=o}}for(z(o,c,f),i=0;i1e-10?t:0}function h(t,e,r){e=e||0,r=r||0;for(var n=t.length,i=new Array(n),a=0;a0?r:1/0})),i=n.mod(r+1,e.length);return[e[r],e[i]]},findIntersectionXY:c,findXYatLength:function(t,e,r,n){var i=-e*r,a=e*e+1,o=2*(e*i-r),s=i*i+r*r-t*t,l=Math.sqrt(o*o-4*a*s),c=(-o+l)/(2*a),u=(-o-l)/(2*a);return[[c,e*c+i+n],[u,e*u+i+n]]},clampTiny:f,pathPolygon:function(t,e,r,n,i,a){return\"M\"+h(u(t,e,r,n),i,a).join(\"L\")},pathPolygonAnnulus:function(t,e,r,n,i,a,o){var s,l;t=90||s>90&&l>=450?1:u<=0&&h<=0?0:Math.max(u,h);e=s<=180&&l>=180||s>180&&l>=540?-1:c>=0&&f>=0?0:Math.min(c,f);r=s<=270&&l>=270||s>270&&l>=630?-1:u>=0&&h>=0?0:Math.min(u,h);n=l>=360?1:c<=0&&f<=0?0:Math.max(c,f);return[e,r,n,i]}(p),b=x[2]-x[0],_=x[3]-x[1],w=h/f,T=Math.abs(_/b);w>T?(d=f,y=(h-(g=f*T))/n.h/2,m=[o[0],o[1]],v=[s[0]+y,s[1]-y]):(g=h,y=(f-(d=h/T))/n.w/2,m=[o[0]+y,o[1]-y],v=[s[0],s[1]]),this.xLength2=d,this.yLength2=g,this.xDomain2=m,this.yDomain2=v;var k,A=this.xOffset2=n.l+n.w*m[0],M=this.yOffset2=n.t+n.h*(1-v[1]),S=this.radius=d/b,E=this.innerRadius=this.getHole(e)*S,L=this.cx=A-S*x[0],C=this.cy=M+S*x[3],P=this.cxx=L-A,I=this.cyy=C-M,O=i.side;\"counterclockwise\"===O?(k=O,O=\"top\"):\"clockwise\"===O&&(k=O,O=\"bottom\"),this.radialAxis=this.mockAxis(t,e,i,{_id:\"x\",side:O,_trueSide:k,domain:[E/n.w,S/n.w]}),this.angularAxis=this.mockAxis(t,e,a,{side:\"right\",domain:[0,Math.PI],autorange:!1}),this.doAutoRange(t,e),this.updateAngularAxis(t,e),this.updateRadialAxis(t,e),this.updateRadialAxisTitle(t,e),this.xaxis=this.mockCartesianAxis(t,e,{_id:\"x\",domain:m}),this.yaxis=this.mockCartesianAxis(t,e,{_id:\"y\",domain:v});var z=this.pathSubplot();this.clipPaths.forTraces.select(\"path\").attr(\"d\",z).attr(\"transform\",l(P,I)),r.frontplot.attr(\"transform\",l(A,M)).call(u.setClipUrl,this._hasClipOnAxisFalse?null:this.clipIds.forTraces,this.gd),r.bg.attr(\"d\",z).attr(\"transform\",l(L,C)).call(c.fill,e.bgcolor)},N.mockAxis=function(t,e,r,n){var i=o.extendFlat({},r,n);return d(i,e,t),i},N.mockCartesianAxis=function(t,e,r){var n=this,i=n.isSmith,a=r._id,s=o.extendFlat({type:\"linear\"},r);p(s,t);var l={x:[0,2],y:[1,3]};return s.setRange=function(){var t=n.sectorBBox,r=l[a],i=n.radialAxis._rl,o=(i[1]-i[0])/(1-n.getHole(e));s.range=[t[r[0]]*o,t[r[1]]*o]},s.isPtWithinRange=\"x\"!==a||i?function(){return!0}:function(t){return n.isPtInside(t)},s.setRange(),s.setScale(),s},N.doAutoRange=function(t,e){var r=this.gd,n=this.radialAxis,i=this.getRadial(e);g(r,n);var a=n.range;i.range=a.slice(),i._input.range=a.slice(),n._rl=[n.r2l(a[0],null,\"gregorian\"),n.r2l(a[1],null,\"gregorian\")]},N.updateRadialAxis=function(t,e){var r=this,n=r.gd,i=r.layers,a=r.radius,u=r.innerRadius,f=r.cx,p=r.cy,d=r.getRadial(e),g=D(r.getSector(e)[0],360),m=r.radialAxis,v=u90&&g<=270&&(m.tickangle=180);var x=y?function(t){var e=O(r,C([t.x,0]));return l(e[0]-f,e[1]-p)}:function(t){return l(m.l2p(t.x)+u,0)},b=y?function(t){return I(r,t.x,-1/0,1/0)}:function(t){return r.pathArc(m.r2p(t.x)+u)},_=j(d);if(r.radialTickLayout!==_&&(i[\"radial-axis\"].selectAll(\".xtick\").remove(),r.radialTickLayout=_),v){m.setScale();var w=0,T=y?(m.tickvals||[]).filter((function(t){return t>=0})).map((function(t){return h.tickText(m,t,!0,!1)})):h.calcTicks(m),k=y?T:h.clipEnds(m,T),A=h.getTickSigns(m)[2];y&&((\"top\"===m.ticks&&\"bottom\"===m.side||\"bottom\"===m.ticks&&\"top\"===m.side)&&(A=-A),\"top\"===m.ticks&&\"top\"===m.side&&(w=-m.ticklen),\"bottom\"===m.ticks&&\"bottom\"===m.side&&(w=m.ticklen)),h.drawTicks(n,m,{vals:T,layer:i[\"radial-axis\"],path:h.makeTickPath(m,0,A),transFn:x,crisp:!1}),h.drawGrid(n,m,{vals:k,layer:i[\"radial-grid\"],path:b,transFn:o.noop,crisp:!1}),h.drawLabels(n,m,{vals:T,layer:i[\"radial-axis\"],transFn:x,labelFns:h.makeLabelFns(m,w)})}var M=r.radialAxisAngle=r.vangles?F(U(R(d.angle),r.vangles)):d.angle,S=l(f,p),E=S+s(-M);V(i[\"radial-axis\"],v&&(d.showticklabels||d.ticks),{transform:E}),V(i[\"radial-grid\"],v&&d.showgrid,{transform:y?\"\":S}),V(i[\"radial-line\"].select(\"line\"),v&&d.showline,{x1:y?-a:u,y1:0,x2:a,y2:0,transform:E}).attr(\"stroke-width\",d.linewidth).call(c.stroke,d.linecolor)},N.updateRadialAxisTitle=function(t,e,r){if(!this.isSmith){var n=this.gd,i=this.radius,a=this.cx,o=this.cy,s=this.getRadial(e),l=this.id+\"title\",c=0;if(s.title){var f=u.bBox(this.layers[\"radial-axis\"].node()).height,h=s.title.font.size,p=s.side;c=\"top\"===p?h:\"counterclockwise\"===p?-(f+.4*h):f+.8*h}var d=void 0!==r?r:this.radialAxisAngle,g=R(d),m=Math.cos(g),v=Math.sin(g),y=a+i/2*m+c*v,b=o-i/2*v+c*m;this.layers[\"radial-axis-title\"]=x.draw(n,l,{propContainer:s,propName:this.id+\".radialaxis.title\",placeholder:z(n,\"Click to enter radial axis title\"),attributes:{x:y,y:b,\"text-anchor\":\"middle\"},transform:{rotate:-d}})}},N.updateAngularAxis=function(t,e){var r=this,n=r.gd,i=r.layers,a=r.radius,u=r.innerRadius,f=r.cx,p=r.cy,d=r.getAngular(e),g=r.angularAxis,m=r.isSmith;m||(r.fillViewInitialKey(\"angularaxis.rotation\",d.rotation),g.setGeometry(),g.setScale());var v=m?function(t){var e=O(r,C([0,t.x]));return Math.atan2(e[0]-f,e[1]-p)-Math.PI/2}:function(t){return g.t2g(t.x)};\"linear\"===g.type&&\"radians\"===g.thetaunit&&(g.tick0=F(g.tick0),g.dtick=F(g.dtick));var y=function(t){return l(f+a*Math.cos(t),p-a*Math.sin(t))},x=m?function(t){var e=O(r,C([0,t.x]));return l(e[0],e[1])}:function(t){return y(v(t))},b=m?function(t){var e=O(r,C([0,t.x])),n=Math.atan2(e[0]-f,e[1]-p)-Math.PI/2;return l(e[0],e[1])+s(-F(n))}:function(t){var e=v(t);return y(e)+s(-F(e))},_=m?function(t){return P(r,t.x,0,1/0)}:function(t){var e=v(t),r=Math.cos(e),n=Math.sin(e);return\"M\"+[f+u*r,p-u*n]+\"L\"+[f+a*r,p-a*n]},w=h.makeLabelFns(g,0).labelStandoff,T={xFn:function(t){var e=v(t);return Math.cos(e)*w},yFn:function(t){var e=v(t),r=Math.sin(e)>0?.2:1;return-Math.sin(e)*(w+t.fontSize*r)+Math.abs(Math.cos(e))*(t.fontSize*M)},anchorFn:function(t){var e=v(t),r=Math.cos(e);return Math.abs(r)<.1?\"middle\":r>0?\"start\":\"end\"},heightFn:function(t,e,r){var n=v(t);return-.5*(1+Math.sin(n))*r}},k=j(d);r.angularTickLayout!==k&&(i[\"angular-axis\"].selectAll(\".\"+g._id+\"tick\").remove(),r.angularTickLayout=k);var A,S=m?[1/0].concat(g.tickvals||[]).map((function(t){return h.tickText(g,t,!0,!1)})):h.calcTicks(g);if(m&&(S[0].text=\"\\u221e\",S[0].fontSize*=1.75),\"linear\"===e.gridshape?(A=S.map(v),o.angleDelta(A[0],A[1])<0&&(A=A.slice().reverse())):A=null,r.vangles=A,\"category\"===g.type&&(S=S.filter((function(t){return o.isAngleInsideSector(v(t),r.sectorInRad)}))),g.visible){var E=\"inside\"===g.ticks?-1:1,L=(g.linewidth||1)/2;h.drawTicks(n,g,{vals:S,layer:i[\"angular-axis\"],path:\"M\"+E*L+\",0h\"+E*g.ticklen,transFn:b,crisp:!1}),h.drawGrid(n,g,{vals:S,layer:i[\"angular-grid\"],path:_,transFn:o.noop,crisp:!1}),h.drawLabels(n,g,{vals:S,layer:i[\"angular-axis\"],repositionOnUpdate:!0,transFn:x,labelFns:T})}V(i[\"angular-line\"].select(\"path\"),d.showline,{d:r.pathSubplot(),transform:l(f,p)}).attr(\"stroke-width\",d.linewidth).call(c.stroke,d.linecolor)},N.updateFx=function(t,e){this.gd._context.staticPlot||(!this.isSmith&&(this.updateAngularDrag(t),this.updateRadialDrag(t,e,0),this.updateRadialDrag(t,e,1)),this.updateHoverAndMainDrag(t))},N.updateHoverAndMainDrag=function(t){var e,r,s=this,c=s.isSmith,u=s.gd,f=s.layers,h=t._zoomlayer,p=S.MINZOOM,d=S.OFFEDGE,g=s.radius,x=s.innerRadius,T=s.cx,k=s.cy,A=s.cxx,M=s.cyy,L=s.sectorInRad,C=s.vangles,P=s.radialAxis,I=E.clampTiny,O=E.findXYatLength,z=E.findEnclosingVertexAngles,D=S.cornerHalfWidth,R=S.cornerLen/2,F=m.makeDragger(f,\"path\",\"maindrag\",\"crosshair\");n.select(F).attr(\"d\",s.pathSubplot()).attr(\"transform\",l(T,k)),F.onmousemove=function(t){y.hover(u,t,s.id),u._fullLayout._lasthover=F,u._fullLayout._hoversubplot=s.id},F.onmouseout=function(t){u._dragging||v.unhover(u,t)};var B,N,j,U,V,H,q,G,Y,W={element:F,gd:u,subplot:s.id,plotinfo:{id:s.id,xaxis:s.xaxis,yaxis:s.yaxis},xaxes:[s.xaxis],yaxes:[s.yaxis]};function X(t,e){return Math.sqrt(t*t+e*e)}function Z(t,e){return X(t-A,e-M)}function J(t,e){return Math.atan2(M-e,t-A)}function K(t,e){return[t*Math.cos(e),t*Math.sin(-e)]}function Q(t,e){if(0===t)return s.pathSector(2*D);var r=R/t,n=e-r,i=e+r,a=Math.max(0,Math.min(t,g)),o=a-D,l=a+D;return\"M\"+K(o,n)+\"A\"+[o,o]+\" 0,0,0 \"+K(o,i)+\"L\"+K(l,i)+\"A\"+[l,l]+\" 0,0,1 \"+K(l,n)+\"Z\"}function $(t,e,r){if(0===t)return s.pathSector(2*D);var n,i,a=K(t,e),o=K(t,r),l=I((a[0]+o[0])/2),c=I((a[1]+o[1])/2);if(l&&c){var u=c/l,f=-1/u,h=O(D,u,l,c);n=O(R,f,h[0][0],h[0][1]),i=O(R,f,h[1][0],h[1][1])}else{var p,d;c?(p=R,d=D):(p=D,d=R),n=[[l-p,c-d],[l+p,c-d]],i=[[l-p,c+d],[l+p,c+d]]}return\"M\"+n.join(\"L\")+\"L\"+i.reverse().join(\"L\")+\"Z\"}function tt(t,e){return e=Math.max(Math.min(e,g),x),tp?(t-1&&1===t&&_(e,u,[s.xaxis],[s.yaxis],s.id,W),r.indexOf(\"event\")>-1&&y.click(u,e,s.id)}W.prepFn=function(t,n,a){var l=u._fullLayout.dragmode,f=F.getBoundingClientRect();u._fullLayout._calcInverseTransform(u);var p=u._fullLayout._invTransform;e=u._fullLayout._invScaleX,r=u._fullLayout._invScaleY;var d=o.apply3DTransform(p)(n-f.left,a-f.top);if(B=d[0],N=d[1],C){var v=E.findPolygonOffset(g,L[0],L[1],C);B+=A+v[0],N+=M+v[1]}switch(l){case\"zoom\":W.clickFn=st,c||(W.moveFn=C?it:rt,W.doneFn=at,function(){j=null,U=null,V=s.pathSubplot(),H=!1;var t=u._fullLayout[s.id];q=i(t.bgcolor).getLuminance(),(G=m.makeZoombox(h,q,T,k,V)).attr(\"fill-rule\",\"evenodd\"),Y=m.makeCorners(h,T,k),w(u)}());break;case\"select\":case\"lasso\":b(t,n,a,W,l)}},v.init(W)},N.updateRadialDrag=function(t,e,r){var i=this,c=i.gd,u=i.layers,f=i.radius,h=i.innerRadius,p=i.cx,d=i.cy,g=i.radialAxis,y=S.radialDragBoxSize,x=y/2;if(g.visible){var b,_,T,M=R(i.radialAxisAngle),E=g._rl,L=E[0],C=E[1],P=E[r],I=.75*(E[1]-E[0])/(1-i.getHole(e))/f;r?(b=p+(f+x)*Math.cos(M),_=d-(f+x)*Math.sin(M),T=\"radialdrag\"):(b=p+(h-x)*Math.cos(M),_=d-(h-x)*Math.sin(M),T=\"radialdrag-inner\");var O,z,D,B=m.makeRectDragger(u,T,\"crosshair\",-x,-x,y,y),N={element:B,gd:c};V(n.select(B),g.visible&&h0==(r?D>L:Dn?function(t){return t<=0}:function(t){return t>=0};t.c2g=function(r){var n=t.c2l(r)-e;return(s(n)?n:0)+o},t.g2c=function(r){return t.l2c(r+e-o)},t.g2p=function(t){return t*a},t.c2p=function(e){return t.g2p(t.c2g(e))}}}(t,e);break;case\"angularaxis\":!function(t,e){var r=t.type;if(\"linear\"===r){var i=t.d2c,s=t.c2d;t.d2c=function(t,e){return function(t,e){return\"degrees\"===e?a(t):t}(i(t),e)},t.c2d=function(t,e){return s(function(t,e){return\"degrees\"===e?o(t):t}(t,e))}}t.makeCalcdata=function(e,i){var a,o,s=e[i],l=e._length,c=function(r){return t.d2c(r,e.thetaunit)};if(s){if(n.isTypedArray(s)&&\"linear\"===r){if(l===s.length)return s;if(s.subarray)return s.subarray(0,l)}for(a=new Array(l),o=0;o0?1:0}function i(t){var e=t[0],r=t[1];if(!isFinite(e)||!isFinite(r))return[1,0];var n=(e+1)*(e+1)+r*r;return[(e*e+r*r-1)/n,2*r/n]}function a(t,e){var r=e[0],n=e[1];return[r*t.radius+t.cx,-n*t.radius+t.cy]}function o(t,e){return e*t.radius}e.exports={smith:i,reactanceArc:function(t,e,r,n){var s=a(t,i([r,e])),l=s[0],c=s[1],u=a(t,i([n,e])),f=u[0],h=u[1];if(0===e)return[\"M\"+l+\",\"+c,\"L\"+f+\",\"+h].join(\" \");var p=o(t,1/Math.abs(e));return[\"M\"+l+\",\"+c,\"A\"+p+\",\"+p+\" 0 0,\"+(e<0?1:0)+\" \"+f+\",\"+h].join(\" \")},resistanceArc:function(t,e,r,s){var l=o(t,1/(e+1)),c=a(t,i([e,r])),u=c[0],f=c[1],h=a(t,i([e,s])),p=h[0],d=h[1];if(n(r)!==n(s)){var g=a(t,i([e,0]));return[\"M\"+u+\",\"+f,\"A\"+l+\",\"+l+\" 0 0,\"+(00){for(var n=[],i=0;i=u&&(h.min=0,d.min=0,m.min=0,t.aaxis&&delete t.aaxis.min,t.baxis&&delete t.baxis.min,t.caxis&&delete t.caxis.min)}function g(t,e,r,n){var i=h[e._name];function o(r,n){return a.coerce(t,e,i,r,n)}o(\"uirevision\",n.uirevision),e.type=\"linear\";var p=o(\"color\"),d=p!==i.color.dflt?p:r.font.color,g=e._name.charAt(0).toUpperCase(),m=\"Component \"+g,v=o(\"title.text\",m);e._hovertitle=v===m?v:g,a.coerceFont(o,\"title.font\",{family:r.font.family,size:a.bigFont(r.font.size),color:d}),o(\"min\"),u(t,e,o,\"linear\"),l(t,e,o,\"linear\"),s(t,e,o,\"linear\"),c(t,e,o,{outerTicks:!0}),o(\"showticklabels\")&&(a.coerceFont(o,\"tickfont\",{family:r.font.family,size:r.font.size,color:d}),o(\"tickangle\"),o(\"tickformat\")),f(t,e,o,{dfltColor:p,bgColor:r.bgColor,blend:60,showLine:!0,showGrid:!0,noZeroLine:!0,attributes:i}),o(\"hoverformat\"),o(\"layer\")}e.exports=function(t,e,r){o(t,e,r,{type:\"ternary\",attributes:h,handleDefaults:d,font:e.font,paper_bgcolor:e.paper_bgcolor})}},{\"../../components/color\":366,\"../../lib\":503,\"../../plot_api/plot_template\":543,\"../cartesian/line_grid_defaults\":571,\"../cartesian/prefix_suffix_defaults\":573,\"../cartesian/tick_label_defaults\":578,\"../cartesian/tick_mark_defaults\":579,\"../cartesian/tick_value_defaults\":580,\"../subplot_defaults\":632,\"./layout_attributes\":635}],637:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"tinycolor2\"),a=t(\"../../registry\"),o=t(\"../../lib\"),s=o.strTranslate,l=o._,c=t(\"../../components/color\"),u=t(\"../../components/drawing\"),f=t(\"../cartesian/set_convert\"),h=t(\"../../lib/extend\").extendFlat,p=t(\"../plots\"),d=t(\"../cartesian/axes\"),g=t(\"../../components/dragelement\"),m=t(\"../../components/fx\"),v=t(\"../../components/dragelement/helpers\"),y=v.freeMode,x=v.rectMode,b=t(\"../../components/titles\"),_=t(\"../cartesian/select\").prepSelect,w=t(\"../cartesian/select\").selectOnClick,T=t(\"../cartesian/select\").clearSelect,k=t(\"../cartesian/select\").clearSelectionsCache,A=t(\"../cartesian/constants\");function M(t,e){this.id=t.id,this.graphDiv=t.graphDiv,this.init(e),this.makeFramework(e),this.aTickLayout=null,this.bTickLayout=null,this.cTickLayout=null}e.exports=M;var S=M.prototype;S.init=function(t){this.container=t._ternarylayer,this.defs=t._defs,this.layoutId=t._uid,this.traceHash={},this.layers={}},S.plot=function(t,e){var r=e[this.id],n=e._size;this._hasClipOnAxisFalse=!1;for(var i=0;iE*b?i=(a=b)*E:a=(i=x)/E,o=v*i/x,l=y*a/b,r=e.l+e.w*g-i/2,n=e.t+e.h*(1-m)-a/2,p.x0=r,p.y0=n,p.w=i,p.h=a,p.sum=_,p.xaxis={type:\"linear\",range:[w+2*k-_,_-w-2*T],domain:[g-o/2,g+o/2],_id:\"x\"},f(p.xaxis,p.graphDiv._fullLayout),p.xaxis.setScale(),p.xaxis.isPtWithinRange=function(t){return t.a>=p.aaxis.range[0]&&t.a<=p.aaxis.range[1]&&t.b>=p.baxis.range[1]&&t.b<=p.baxis.range[0]&&t.c>=p.caxis.range[1]&&t.c<=p.caxis.range[0]},p.yaxis={type:\"linear\",range:[w,_-T-k],domain:[m-l/2,m+l/2],_id:\"y\"},f(p.yaxis,p.graphDiv._fullLayout),p.yaxis.setScale(),p.yaxis.isPtWithinRange=function(){return!0};var A=p.yaxis.domain[0],M=p.aaxis=h({},t.aaxis,{range:[w,_-T-k],side:\"left\",tickangle:(+t.aaxis.tickangle||0)-30,domain:[A,A+l*E],anchor:\"free\",position:0,_id:\"y\",_length:i});f(M,p.graphDiv._fullLayout),M.setScale();var S=p.baxis=h({},t.baxis,{range:[_-w-k,T],side:\"bottom\",domain:p.xaxis.domain,anchor:\"free\",position:0,_id:\"x\",_length:i});f(S,p.graphDiv._fullLayout),S.setScale();var L=p.caxis=h({},t.caxis,{range:[_-w-T,k],side:\"right\",tickangle:(+t.caxis.tickangle||0)+30,domain:[A,A+l*E],anchor:\"free\",position:0,_id:\"y\",_length:i});f(L,p.graphDiv._fullLayout),L.setScale();var C=\"M\"+r+\",\"+(n+a)+\"h\"+i+\"l-\"+i/2+\",-\"+a+\"Z\";p.clipDef.select(\"path\").attr(\"d\",C),p.layers.plotbg.select(\"path\").attr(\"d\",C);var P=\"M0,\"+a+\"h\"+i+\"l-\"+i/2+\",-\"+a+\"Z\";p.clipDefRelative.select(\"path\").attr(\"d\",P);var I=s(r,n);p.plotContainer.selectAll(\".scatterlayer,.maplayer\").attr(\"transform\",I),p.clipDefRelative.select(\"path\").attr(\"transform\",null);var O=s(r-S._offset,n+a);p.layers.baxis.attr(\"transform\",O),p.layers.bgrid.attr(\"transform\",O);var z=s(r+i/2,n)+\"rotate(30)\"+s(0,-M._offset);p.layers.aaxis.attr(\"transform\",z),p.layers.agrid.attr(\"transform\",z);var D=s(r+i/2,n)+\"rotate(-30)\"+s(0,-L._offset);p.layers.caxis.attr(\"transform\",D),p.layers.cgrid.attr(\"transform\",D),p.drawAxes(!0),p.layers.aline.select(\"path\").attr(\"d\",M.showline?\"M\"+r+\",\"+(n+a)+\"l\"+i/2+\",-\"+a:\"M0,0\").call(c.stroke,M.linecolor||\"#000\").style(\"stroke-width\",(M.linewidth||0)+\"px\"),p.layers.bline.select(\"path\").attr(\"d\",S.showline?\"M\"+r+\",\"+(n+a)+\"h\"+i:\"M0,0\").call(c.stroke,S.linecolor||\"#000\").style(\"stroke-width\",(S.linewidth||0)+\"px\"),p.layers.cline.select(\"path\").attr(\"d\",L.showline?\"M\"+(r+i/2)+\",\"+n+\"l\"+i/2+\",\"+a:\"M0,0\").call(c.stroke,L.linecolor||\"#000\").style(\"stroke-width\",(L.linewidth||0)+\"px\"),p.graphDiv._context.staticPlot||p.initInteractions(),u.setClipUrl(p.layers.frontplot,p._hasClipOnAxisFalse?null:p.clipId,p.graphDiv)},S.drawAxes=function(t){var e=this.graphDiv,r=this.id.substr(7)+\"title\",n=this.layers,i=this.aaxis,a=this.baxis,o=this.caxis;if(this.drawAx(i),this.drawAx(a),this.drawAx(o),t){var s=Math.max(i.showticklabels?i.tickfont.size/2:0,(o.showticklabels?.75*o.tickfont.size:0)+(\"outside\"===o.ticks?.87*o.ticklen:0)),c=(a.showticklabels?a.tickfont.size:0)+(\"outside\"===a.ticks?a.ticklen:0)+3;n[\"a-title\"]=b.draw(e,\"a\"+r,{propContainer:i,propName:this.id+\".aaxis.title\",placeholder:l(e,\"Click to enter Component A title\"),attributes:{x:this.x0+this.w/2,y:this.y0-i.title.font.size/3-s,\"text-anchor\":\"middle\"}}),n[\"b-title\"]=b.draw(e,\"b\"+r,{propContainer:a,propName:this.id+\".baxis.title\",placeholder:l(e,\"Click to enter Component B title\"),attributes:{x:this.x0-c,y:this.y0+this.h+.83*a.title.font.size+c,\"text-anchor\":\"middle\"}}),n[\"c-title\"]=b.draw(e,\"c\"+r,{propContainer:o,propName:this.id+\".caxis.title\",placeholder:l(e,\"Click to enter Component C title\"),attributes:{x:this.x0+this.w+c,y:this.y0+this.h+.83*o.title.font.size+c,\"text-anchor\":\"middle\"}})}},S.drawAx=function(t){var e,r=this.graphDiv,n=t._name,i=n.charAt(0),a=t._id,s=this.layers[n],l=i+\"tickLayout\",c=(e=t).ticks+String(e.ticklen)+String(e.showticklabels);this[l]!==c&&(s.selectAll(\".\"+a+\"tick\").remove(),this[l]=c),t.setScale();var u=d.calcTicks(t),f=d.clipEnds(t,u),h=d.makeTransTickFn(t),p=d.getTickSigns(t)[2],g=o.deg2rad(30),m=p*(t.linewidth||1)/2,v=p*t.ticklen,y=this.w,x=this.h,b=\"b\"===i?\"M0,\"+m+\"l\"+Math.sin(g)*v+\",\"+Math.cos(g)*v:\"M\"+m+\",0l\"+Math.cos(g)*v+\",\"+-Math.sin(g)*v,_={a:\"M0,0l\"+x+\",-\"+y/2,b:\"M0,0l-\"+y/2+\",-\"+x,c:\"M0,0l-\"+x+\",\"+y/2}[i];d.drawTicks(r,t,{vals:\"inside\"===t.ticks?f:u,layer:s,path:b,transFn:h,crisp:!1}),d.drawGrid(r,t,{vals:f,layer:this.layers[i+\"grid\"],path:_,transFn:h,crisp:!1}),d.drawLabels(r,t,{vals:u,layer:s,transFn:h,labelFns:d.makeLabelFns(t,0,30)})};var L=A.MINZOOM/2+.87,C=\"m-0.87,.5h\"+L+\"v3h-\"+(L+5.2)+\"l\"+(L/2+2.6)+\",-\"+(.87*L+4.5)+\"l2.6,1.5l-\"+L/2+\",\"+.87*L+\"Z\",P=\"m0.87,.5h-\"+L+\"v3h\"+(L+5.2)+\"l-\"+(L/2+2.6)+\",-\"+(.87*L+4.5)+\"l-2.6,1.5l\"+L/2+\",\"+.87*L+\"Z\",I=\"m0,1l\"+L/2+\",\"+.87*L+\"l2.6,-1.5l-\"+(L/2+2.6)+\",-\"+(.87*L+4.5)+\"l-\"+(L/2+2.6)+\",\"+(.87*L+4.5)+\"l2.6,1.5l\"+L/2+\",-\"+.87*L+\"Z\",O=!0;function z(t){n.select(t).selectAll(\".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners\").remove()}S.clearSelect=function(){k(this.dragOptions),T(this.dragOptions.gd)},S.initInteractions=function(){var t,e,r,n,f,h,p,d,v,b,T,k,M=this,S=M.layers.plotbg.select(\"path\").node(),L=M.graphDiv,D=L._fullLayout._zoomlayer;function R(t){var e={};return e[M.id+\".aaxis.min\"]=t.a,e[M.id+\".baxis.min\"]=t.b,e[M.id+\".caxis.min\"]=t.c,e}function F(t,e){var r=L._fullLayout.clickmode;z(L),2===t&&(L.emit(\"plotly_doubleclick\",null),a.call(\"_guiRelayout\",L,R({a:0,b:0,c:0}))),r.indexOf(\"select\")>-1&&1===t&&w(e,L,[M.xaxis],[M.yaxis],M.id,M.dragOptions),r.indexOf(\"event\")>-1&&m.click(L,e,M.id)}function B(t,e){return 1-e/M.h}function N(t,e){return 1-(t+(M.h-e)/Math.sqrt(3))/M.w}function j(t,e){return(t-(M.h-e)/Math.sqrt(3))/M.w}function U(i,a){var o=r+i*t,s=n+a*e,l=Math.max(0,Math.min(1,B(0,n),B(0,s))),c=Math.max(0,Math.min(1,N(r,n),N(o,s))),u=Math.max(0,Math.min(1,j(r,n),j(o,s))),g=(l/2+u)*M.w,m=(1-l/2-c)*M.w,y=(g+m)/2,x=m-g,_=(1-l)*M.h,w=_-x/E;x.2?\"rgba(0,0,0,0.4)\":\"rgba(255,255,255,0.3)\").duration(200),k.transition().style(\"opacity\",1).duration(200),b=!0),L.emit(\"plotly_relayouting\",R(p))}function V(){z(L),p!==f&&(a.call(\"_guiRelayout\",L,R(p)),O&&L.data&&L._context.showTips&&(o.notifier(l(L,\"Double-click to zoom back out\"),\"long\"),O=!1))}function H(t,e){var r=t/M.xaxis._m,n=e/M.yaxis._m,i=[(p={a:f.a-n,b:f.b+(r+n)/2,c:f.c-(r-n)/2}).a,p.b,p.c].sort(o.sorterAsc),a=i.indexOf(p.a),l=i.indexOf(p.b),c=i.indexOf(p.c);i[0]<0&&(i[1]+i[0]/2<0?(i[2]+=i[0]+i[1],i[0]=i[1]=0):(i[2]+=i[0]/2,i[1]+=i[0]/2,i[0]=0),p={a:i[a],b:i[l],c:i[c]},e=(f.a-p.a)*M.yaxis._m,t=(f.c-p.c-f.b+p.b)*M.xaxis._m);var h=s(M.x0+t,M.y0+e);M.plotContainer.selectAll(\".scatterlayer,.maplayer\").attr(\"transform\",h);var d=s(-t,-e);M.clipDefRelative.select(\"path\").attr(\"transform\",d),M.aaxis.range=[p.a,M.sum-p.b-p.c],M.baxis.range=[M.sum-p.a-p.c,p.b],M.caxis.range=[M.sum-p.a-p.b,p.c],M.drawAxes(!1),M._hasClipOnAxisFalse&&M.plotContainer.select(\".scatterlayer\").selectAll(\".trace\").call(u.hideOutsideRangePoints,M),L.emit(\"plotly_relayouting\",R(p))}function q(){a.call(\"_guiRelayout\",L,R(p))}this.dragOptions={element:S,gd:L,plotinfo:{id:M.id,domain:L._fullLayout[M.id].domain,xaxis:M.xaxis,yaxis:M.yaxis},subplot:M.id,prepFn:function(a,l,u){M.dragOptions.xaxes=[M.xaxis],M.dragOptions.yaxes=[M.yaxis],t=L._fullLayout._invScaleX,e=L._fullLayout._invScaleY;var g=M.dragOptions.dragmode=L._fullLayout.dragmode;y(g)?M.dragOptions.minDrag=1:M.dragOptions.minDrag=void 0,\"zoom\"===g?(M.dragOptions.moveFn=U,M.dragOptions.clickFn=F,M.dragOptions.doneFn=V,function(t,e,a){var l=S.getBoundingClientRect();r=e-l.left,n=a-l.top,L._fullLayout._calcInverseTransform(L);var u=L._fullLayout._invTransform,g=o.apply3DTransform(u)(r,n);r=g[0],n=g[1],f={a:M.aaxis.range[0],b:M.baxis.range[1],c:M.caxis.range[1]},p=f,h=M.aaxis.range[1]-f.a,d=i(M.graphDiv._fullLayout[M.id].bgcolor).getLuminance(),v=\"M0,\"+M.h+\"L\"+M.w/2+\", 0L\"+M.w+\",\"+M.h+\"Z\",b=!1,T=D.append(\"path\").attr(\"class\",\"zoombox\").attr(\"transform\",s(M.x0,M.y0)).style({fill:d>.2?\"rgba(0,0,0,0)\":\"rgba(255,255,255,0)\",\"stroke-width\":0}).attr(\"d\",v),k=D.append(\"path\").attr(\"class\",\"zoombox-corners\").attr(\"transform\",s(M.x0,M.y0)).style({fill:c.background,stroke:c.defaultLine,\"stroke-width\":1,opacity:0}).attr(\"d\",\"M0,0Z\"),M.clearSelect(L)}(0,l,u)):\"pan\"===g?(M.dragOptions.moveFn=H,M.dragOptions.clickFn=F,M.dragOptions.doneFn=q,f={a:M.aaxis.range[0],b:M.baxis.range[1],c:M.caxis.range[1]},p=f,M.clearSelect(L)):(x(g)||y(g))&&_(a,l,u,M.dragOptions,g)}},S.onmousemove=function(t){m.hover(L,t,M.id),L._fullLayout._lasthover=S,L._fullLayout._hoversubplot=M.id},S.onmouseout=function(t){L._dragging||g.unhover(L,t)},g.init(this.dragOptions)}},{\"../../components/color\":366,\"../../components/dragelement\":385,\"../../components/dragelement/helpers\":384,\"../../components/drawing\":388,\"../../components/fx\":406,\"../../components/titles\":464,\"../../lib\":503,\"../../lib/extend\":493,\"../../registry\":638,\"../cartesian/axes\":554,\"../cartesian/constants\":561,\"../cartesian/select\":575,\"../cartesian/set_convert\":576,\"../plots\":619,\"@plotly/d3\":58,tinycolor2:312}],638:[function(t,e,r){\"use strict\";var n=t(\"./lib/loggers\"),i=t(\"./lib/noop\"),a=t(\"./lib/push_unique\"),o=t(\"./lib/is_plain_object\"),s=t(\"./lib/dom\").addStyleRule,l=t(\"./lib/extend\"),c=t(\"./plots/attributes\"),u=t(\"./plots/layout_attributes\"),f=l.extendFlat,h=l.extendDeepAll;function p(t){var e=t.name,i=t.categories,a=t.meta;if(r.modules[e])n.log(\"Type \"+e+\" already registered\");else{r.subplotsRegistry[t.basePlotModule.name]||function(t){var e=t.name;if(r.subplotsRegistry[e])return void n.log(\"Plot type \"+e+\" already registered.\");for(var i in v(t),r.subplotsRegistry[e]=t,r.componentsRegistry)b(i,t.name)}(t.basePlotModule);for(var o={},l=0;l-1&&(f[p[r]].title={text:\"\"});for(r=0;r\")?\"\":e.html(t).text()}));return e.remove(),r}(T),T=(T=T.replace(/&(?!\\w+;|\\#[0-9]+;| \\#x[0-9A-F]+;)/g,\"&\")).replace(c,\"'\"),i.isIE()&&(T=(T=(T=T.replace(/\"/gi,\"'\")).replace(/(\\('#)([^']*)('\\))/gi,'(\"#$2\")')).replace(/(\\\\')/gi,'\"')),T}},{\"../components/color\":366,\"../components/drawing\":388,\"../constants/xmlns_namespaces\":480,\"../lib\":503,\"@plotly/d3\":58}],647:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t,e){for(var r=0;rf+c||!n(u))}for(var p=0;pa))return e}return void 0!==r?r:t.dflt},r.coerceColor=function(t,e,r){return i(e).isValid()?e:void 0!==r?r:t.dflt},r.coerceEnumerated=function(t,e,r){return t.coerceNumber&&(e=+e),-1!==t.values.indexOf(e)?e:void 0!==r?r:t.dflt},r.getValue=function(t,e){var r;return Array.isArray(t)?e0?e+=r:u<0&&(e-=r)}return e}function z(t){var e=u,r=t.b,i=O(t);return n.inbox(r-e,i-e,_+(i-e)/(i-r)-1)}var D=t[f+\"a\"],R=t[h+\"a\"];g=Math.abs(D.r2c(D.range[1])-D.r2c(D.range[0]));var F=n.getDistanceFunction(i,p,d,(function(t){return(p(t)+d(t))/2}));if(n.getClosest(m,F,t),!1!==t.index&&m[t.index].p!==c){k||(L=function(t){return Math.min(A(t),t.p-y.bargroupwidth/2)},C=function(t){return Math.max(M(t),t.p+y.bargroupwidth/2)});var B=m[t.index],N=v.base?B.b+B.s:B.s;t[h+\"0\"]=t[h+\"1\"]=R.c2p(B[h],!0),t[h+\"LabelVal\"]=N;var j=y.extents[y.extents.round(B.p)];t[f+\"0\"]=D.c2p(x?L(B):j[0],!0),t[f+\"1\"]=D.c2p(x?C(B):j[1],!0);var U=void 0!==B.orig_p;return t[f+\"LabelVal\"]=U?B.orig_p:B.p,t.labelLabel=l(D,t[f+\"LabelVal\"],v[f+\"hoverformat\"]),t.valueLabel=l(R,t[h+\"LabelVal\"],v[h+\"hoverformat\"]),t.baseLabel=l(R,B.b,v[h+\"hoverformat\"]),t.spikeDistance=(function(t){var e=u,r=t.b,i=O(t);return n.inbox(r-e,i-e,w+(i-e)/(i-r)-1)}(B)+function(t){return P(A(t),M(t),w)}(B))/2,t[f+\"Spike\"]=D.c2p(B.p,!0),o(B,v,t),t.hovertemplate=v.hovertemplate,t}}function f(t,e){var r=e.mcc||t.marker.color,n=e.mlcc||t.marker.line.color,i=s(t,e);return a.opacity(r)?r:a.opacity(n)&&i?n:void 0}e.exports={hoverPoints:function(t,e,r,n,a){var o=u(t,e,r,n,a);if(o){var s=o.cd,l=s[0].trace,c=s[o.index];return o.color=f(l,c),i.getComponentMethod(\"errorbars\",\"hoverInfo\")(c,l,o),[o]}},hoverOnBars:u,getTraceColor:f}},{\"../../components/color\":366,\"../../components/fx\":406,\"../../constants/numerical\":479,\"../../lib\":503,\"../../plots/cartesian/axes\":554,\"../../registry\":638,\"./helpers\":654}],656:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\").supplyDefaults,crossTraceDefaults:t(\"./defaults\").crossTraceDefaults,supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\"),crossTraceCalc:t(\"./cross_trace_calc\").crossTraceCalc,colorbar:t(\"../scatter/marker_colorbar\"),arraysToCalcdata:t(\"./arrays_to_calcdata\"),plot:t(\"./plot\").plot,style:t(\"./style\").style,styleOnSelect:t(\"./style\").styleOnSelect,hoverPoints:t(\"./hover\").hoverPoints,eventData:t(\"./event_data\"),selectPoints:t(\"./select\"),moduleType:\"trace\",name:\"bar\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"bar-like\",\"cartesian\",\"svg\",\"bar\",\"oriented\",\"errorBarsOK\",\"showLegend\",\"zoomScale\"],animatable:!0,meta:{}}},{\"../../plots/cartesian\":568,\"../scatter/marker_colorbar\":944,\"./arrays_to_calcdata\":647,\"./attributes\":648,\"./calc\":649,\"./cross_trace_calc\":651,\"./defaults\":652,\"./event_data\":653,\"./hover\":655,\"./layout_attributes\":657,\"./layout_defaults\":658,\"./plot\":659,\"./select\":660,\"./style\":662}],657:[function(t,e,r){\"use strict\";e.exports={barmode:{valType:\"enumerated\",values:[\"stack\",\"group\",\"overlay\",\"relative\"],dflt:\"group\",editType:\"calc\"},barnorm:{valType:\"enumerated\",values:[\"\",\"fraction\",\"percent\"],dflt:\"\",editType:\"calc\"},bargap:{valType:\"number\",min:0,max:1,editType:\"calc\"},bargroupgap:{valType:\"number\",min:0,max:1,dflt:0,editType:\"calc\"}}},{}],658:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"../../lib\"),o=t(\"./layout_attributes\");e.exports=function(t,e,r){function s(r,n){return a.coerce(t,e,o,r,n)}for(var l=!1,c=!1,u=!1,f={},h=s(\"barmode\"),p=0;p0}function S(t){return\"auto\"===t?0:t}function E(t,e){var r=Math.PI/180*e,n=Math.abs(Math.sin(r)),i=Math.abs(Math.cos(r));return{x:t.width*i+t.height*n,y:t.width*n+t.height*i}}function L(t,e,r,n,i,a){var o=!!a.isHorizontal,s=!!a.constrained,l=a.angle||0,c=a.anchor||\"end\",u=\"end\"===c,f=\"start\"===c,h=((a.leftToRight||0)+1)/2,p=1-h,d=i.width,g=i.height,m=Math.abs(e-t),v=Math.abs(n-r),y=m>2*_&&v>2*_?_:0;m-=2*y,v-=2*y;var x=S(l);\"auto\"!==l||d<=m&&g<=v||!(d>m||g>v)||(d>v||g>m)&&d.01?q:function(t,e,r){return r&&t===e?t:Math.abs(t-e)>=2?q(t):t>e?Math.ceil(t):Math.floor(t)};B=G(B,N,D),N=G(N,B,D),j=G(j,U,!D),U=G(U,j,!D)}var Y=A(a.ensureSingle(I,\"path\"),P,m,v);if(Y.style(\"vector-effect\",\"non-scaling-stroke\").attr(\"d\",isNaN((N-B)*(U-j))||V&&t._context.staticPlot?\"M0,0Z\":\"M\"+B+\",\"+j+\"V\"+U+\"H\"+N+\"V\"+j+\"Z\").call(l.setClipUrl,e.layerClipId,t),!P.uniformtext.mode&&R){var W=l.makePointStyleFns(f);l.singlePointStyle(c,Y,f,W,t)}!function(t,e,r,n,i,s,c,f,p,m,v){var w,T=e.xaxis,M=e.yaxis,C=t._fullLayout;function P(e,r,n){return a.ensureSingle(e,\"text\").text(r).attr({class:\"bartext bartext-\"+w,\"text-anchor\":\"middle\",\"data-notex\":1}).call(l.font,n).call(o.convertToTspans,t)}var I=n[0].trace,O=\"h\"===I.orientation,z=function(t,e,r,n,i){var o,s=e[0].trace;o=s.texttemplate?function(t,e,r,n,i){var o=e[0].trace,s=a.castOption(o,r,\"texttemplate\");if(!s)return\"\";var l,c,f,h,p=\"histogram\"===o.type,d=\"waterfall\"===o.type,g=\"funnel\"===o.type,m=\"h\"===o.orientation;m?(l=\"y\",c=i,f=\"x\",h=n):(l=\"x\",c=n,f=\"y\",h=i);function v(t){return u(h,h.c2l(t),!0).text}var y=e[r],x={};x.label=y.p,x.labelLabel=x[l+\"Label\"]=(_=y.p,u(c,c.c2l(_),!0).text);var _;var w=a.castOption(o,y.i,\"text\");(0===w||w)&&(x.text=w);x.value=y.s,x.valueLabel=x[f+\"Label\"]=v(y.s);var T={};b(T,o,y.i),(p||void 0===T.x)&&(T.x=m?x.value:x.label);(p||void 0===T.y)&&(T.y=m?x.label:x.value);(p||void 0===T.xLabel)&&(T.xLabel=m?x.valueLabel:x.labelLabel);(p||void 0===T.yLabel)&&(T.yLabel=m?x.labelLabel:x.valueLabel);d&&(x.delta=+y.rawS||y.s,x.deltaLabel=v(x.delta),x.final=y.v,x.finalLabel=v(x.final),x.initial=x.final-x.delta,x.initialLabel=v(x.initial));g&&(x.value=y.s,x.valueLabel=v(x.value),x.percentInitial=y.begR,x.percentInitialLabel=a.formatPercent(y.begR),x.percentPrevious=y.difR,x.percentPreviousLabel=a.formatPercent(y.difR),x.percentTotal=y.sumR,x.percenTotalLabel=a.formatPercent(y.sumR));var k=a.castOption(o,y.i,\"customdata\");k&&(x.customdata=k);return a.texttemplateString(s,x,t._d3locale,T,x,o._meta||{})}(t,e,r,n,i):s.textinfo?function(t,e,r,n){var i=t[0].trace,o=\"h\"===i.orientation,s=\"waterfall\"===i.type,l=\"funnel\"===i.type;function c(t){return u(o?r:n,+t,!0).text}var f,h=i.textinfo,p=t[e],d=h.split(\"+\"),g=[],m=function(t){return-1!==d.indexOf(t)};m(\"label\")&&g.push((v=t[e].p,u(o?n:r,v,!0).text));var v;m(\"text\")&&(0===(f=a.castOption(i,p.i,\"text\"))||f)&&g.push(f);if(s){var y=+p.rawS||p.s,x=p.v,b=x-y;m(\"initial\")&&g.push(c(b)),m(\"delta\")&&g.push(c(y)),m(\"final\")&&g.push(c(x))}if(l){m(\"value\")&&g.push(c(p.s));var _=0;m(\"percent initial\")&&_++,m(\"percent previous\")&&_++,m(\"percent total\")&&_++;var w=_>1;m(\"percent initial\")&&(f=a.formatPercent(p.begR),w&&(f+=\" of initial\"),g.push(f)),m(\"percent previous\")&&(f=a.formatPercent(p.difR),w&&(f+=\" of previous\"),g.push(f)),m(\"percent total\")&&(f=a.formatPercent(p.sumR),w&&(f+=\" of total\"),g.push(f))}return g.join(\"
\")}(e,r,n,i):g.getValue(s.text,r);return g.coerceString(y,o)}(C,n,i,T,M);w=function(t,e){var r=g.getValue(t.textposition,e);return g.coerceEnumerated(x,r)}(I,i);var D=\"stack\"===m.mode||\"relative\"===m.mode,R=n[i],F=!D||R._outmost;if(!z||\"none\"===w||(R.isBlank||s===c||f===p)&&(\"auto\"===w||\"inside\"===w))return void r.select(\"text\").remove();var B=C.font,N=d.getBarColor(n[i],I),j=d.getInsideTextFont(I,i,B,N),U=d.getOutsideTextFont(I,i,B),V=r.datum();O?\"log\"===T.type&&V.s0<=0&&(s=T.range[0]=G*(Z/Y):Z>=Y*(X/G);G>0&&Y>0&&(J||K||Q)?w=\"inside\":(w=\"outside\",H.remove(),H=null)}else w=\"inside\";if(!H){W=a.ensureUniformFontSize(t,\"outside\"===w?U:j);var $=(H=P(r,z,W)).attr(\"transform\");if(H.attr(\"transform\",\"\"),q=l.bBox(H.node()),G=q.width,Y=q.height,H.attr(\"transform\",$),G<=0||Y<=0)return void H.remove()}var tt,et,rt=I.textangle;\"outside\"===w?(et=\"both\"===I.constraintext||\"outside\"===I.constraintext,tt=function(t,e,r,n,i,a){var o,s=!!a.isHorizontal,l=!!a.constrained,c=a.angle||0,u=i.width,f=i.height,h=Math.abs(e-t),p=Math.abs(n-r);o=s?p>2*_?_:0:h>2*_?_:0;var d=1;l&&(d=s?Math.min(1,p/f):Math.min(1,h/u));var g=S(c),m=E(i,g),v=(s?m.x:m.y)/2,y=(i.left+i.right)/2,x=(i.top+i.bottom)/2,b=(t+e)/2,w=(r+n)/2,T=0,A=0,M=s?k(e,t):k(r,n);s?(b=e-M*o,T=M*v):(w=n+M*o,A=-M*v);return{textX:y,textY:x,targetX:b,targetY:w,anchorX:T,anchorY:A,scale:d,rotate:g}}(s,c,f,p,q,{isHorizontal:O,constrained:et,angle:rt})):(et=\"both\"===I.constraintext||\"inside\"===I.constraintext,tt=L(s,c,f,p,q,{isHorizontal:O,constrained:et,angle:rt,anchor:I.insidetextanchor}));tt.fontSize=W.size,h(\"histogram\"===I.type?\"bar\":I.type,tt,C),R.transform=tt,A(H,C,m,v).attr(\"transform\",a.getTextTransform(tt))}(t,e,I,r,p,B,N,j,U,m,v),e.layerClipId&&l.hideOutsideRangePoint(c,I.select(\"text\"),w,C,f.xcalendar,f.ycalendar)}));var j=!1===f.cliponaxis;l.setClipUrl(c,j?null:e.layerClipId,t)}));c.getComponentMethod(\"errorbars\",\"plot\")(t,I,e,m)},toMoveInsideBar:L}},{\"../../components/color\":366,\"../../components/drawing\":388,\"../../components/fx/helpers\":402,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../../plots/cartesian/axes\":554,\"../../registry\":638,\"./attributes\":648,\"./constants\":650,\"./helpers\":654,\"./style\":662,\"./uniform_text\":664,\"@plotly/d3\":58,\"fast-isnumeric\":190}],660:[function(t,e,r){\"use strict\";function n(t,e,r,n,i){var a=e.c2p(n?t.s0:t.p0,!0),o=e.c2p(n?t.s1:t.p1,!0),s=r.c2p(n?t.p0:t.s0,!0),l=r.c2p(n?t.p1:t.s1,!0);return i?[(a+o)/2,(s+l)/2]:n?[o,(s+l)/2]:[(a+o)/2,l]}e.exports=function(t,e){var r,i=t.cd,a=t.xaxis,o=t.yaxis,s=i[0].trace,l=\"funnel\"===s.type,c=\"h\"===s.orientation,u=[];if(!1===e)for(r=0;r1||0===i.bargap&&0===i.bargroupgap&&!t[0].trace.marker.line.width)&&n.select(this).attr(\"shape-rendering\",\"crispEdges\")})),e.selectAll(\"g.points\").each((function(e){d(n.select(this),e[0].trace,t)})),s.getComponentMethod(\"errorbars\",\"style\")(e)},styleTextPoints:g,styleOnSelect:function(t,e,r){var i=e[0].trace;i.selectedpoints?function(t,e,r){a.selectedPointStyle(t.selectAll(\"path\"),e),function(t,e,r){t.each((function(t){var i,s=n.select(this);if(t.selected){i=o.ensureUniformFontSize(r,m(s,t,e,r));var l=e.selected.textfont&&e.selected.textfont.color;l&&(i.color=l),a.font(s,i)}else a.selectedTextStyle(s,e)}))}(t.selectAll(\"text\"),e,r)}(r,i,t):(d(r,i,t),s.getComponentMethod(\"errorbars\",\"style\")(r))},getInsideTextFont:y,getOutsideTextFont:x,getBarColor:_,resizeText:l}},{\"../../components/color\":366,\"../../components/drawing\":388,\"../../lib\":503,\"../../registry\":638,\"./attributes\":648,\"./helpers\":654,\"./uniform_text\":664,\"@plotly/d3\":58}],663:[function(t,e,r){\"use strict\";var n=t(\"../../components/color\"),i=t(\"../../components/colorscale/helpers\").hasColorscale,a=t(\"../../components/colorscale/defaults\"),o=t(\"../../lib\").coercePattern;e.exports=function(t,e,r,s,l){var c=r(\"marker.color\",s),u=i(t,\"marker\");u&&a(t,e,l,r,{prefix:\"marker.\",cLetter:\"c\"}),r(\"marker.line.color\",n.defaultLine),i(t,\"marker.line\")&&a(t,e,l,r,{prefix:\"marker.line.\",cLetter:\"c\"}),r(\"marker.line.width\"),r(\"marker.opacity\"),o(r,\"marker.pattern\",c,u),r(\"selected.marker.color\"),r(\"unselected.marker.color\")}},{\"../../components/color\":366,\"../../components/colorscale/defaults\":376,\"../../components/colorscale/helpers\":377,\"../../lib\":503}],664:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\");function a(t){return\"_\"+t+\"Text_minsize\"}e.exports={recordMinTextSize:function(t,e,r){if(r.uniformtext.mode){var n=a(t),i=r.uniformtext.minsize,o=e.scale*e.fontSize;e.hide=o g.point\"}e.selectAll(s).each((function(t){var e=t.transform;e&&(e.scale=l&&e.hide?0:o/e.fontSize,n.select(this).select(\"text\").attr(\"transform\",i.getTextTransform(e)))}))}}}},{\"../../lib\":503,\"@plotly/d3\":58}],665:[function(t,e,r){\"use strict\";var n=t(\"../../plots/template_attributes\").hovertemplateAttrs,i=t(\"../../lib/extend\").extendFlat,a=t(\"../scatterpolar/attributes\"),o=t(\"../bar/attributes\");e.exports={r:a.r,theta:a.theta,r0:a.r0,dr:a.dr,theta0:a.theta0,dtheta:a.dtheta,thetaunit:a.thetaunit,base:i({},o.base,{}),offset:i({},o.offset,{}),width:i({},o.width,{}),text:i({},o.text,{}),hovertext:i({},o.hovertext,{}),marker:o.marker,hoverinfo:a.hoverinfo,hovertemplate:n(),selected:o.selected,unselected:o.unselected}},{\"../../lib/extend\":493,\"../../plots/template_attributes\":633,\"../bar/attributes\":648,\"../scatterpolar/attributes\":1e3}],666:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/helpers\").hasColorscale,i=t(\"../../components/colorscale/calc\"),a=t(\"../bar/arrays_to_calcdata\"),o=t(\"../bar/cross_trace_calc\").setGroupPositions,s=t(\"../scatter/calc_selection\"),l=t(\"../../registry\").traceIs,c=t(\"../../lib\").extendFlat;e.exports={calc:function(t,e){for(var r=t._fullLayout,o=e.subplot,l=r[o].radialaxis,c=r[o].angularaxis,u=l.makeCalcdata(e,\"r\"),f=c.makeCalcdata(e,\"theta\"),h=e._length,p=new Array(h),d=u,g=f,m=0;mh.range[1]&&(x+=Math.PI);if(n.getClosest(c,(function(t){return g(y,x,[t.rp0,t.rp1],[t.thetag0,t.thetag1],d)?m+Math.min(1,Math.abs(t.thetag1-t.thetag0)/v)-1+(t.rp1-y)/(t.rp1-t.rp0)-1:1/0}),t),!1!==t.index){var b=c[t.index];t.x0=t.x1=b.ct[0],t.y0=t.y1=b.ct[1];var _=i.extendFlat({},b,{r:b.s,theta:b.p});return o(b,u,t),s(_,u,f,t),t.hovertemplate=u.hovertemplate,t.color=a(u,b),t.xLabelVal=t.yLabelVal=void 0,b.s<0&&(t.idealAlign=\"left\"),[t]}}},{\"../../components/fx\":406,\"../../lib\":503,\"../../plots/polar/helpers\":621,\"../bar/hover\":655,\"../scatterpolar/hover\":1004}],669:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"barpolar\",basePlotModule:t(\"../../plots/polar\"),categories:[\"polar\",\"bar\",\"showLegend\"],attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\"),supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\").calc,crossTraceCalc:t(\"./calc\").crossTraceCalc,plot:t(\"./plot\"),colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"../scatterpolar/format_labels\"),style:t(\"../bar/style\").style,styleOnSelect:t(\"../bar/style\").styleOnSelect,hoverPoints:t(\"./hover\"),selectPoints:t(\"../bar/select\"),meta:{}}},{\"../../plots/polar\":622,\"../bar/select\":660,\"../bar/style\":662,\"../scatter/marker_colorbar\":944,\"../scatterpolar/format_labels\":1003,\"./attributes\":665,\"./calc\":666,\"./defaults\":667,\"./hover\":668,\"./layout_attributes\":670,\"./layout_defaults\":671,\"./plot\":672}],670:[function(t,e,r){\"use strict\";e.exports={barmode:{valType:\"enumerated\",values:[\"stack\",\"overlay\"],dflt:\"stack\",editType:\"calc\"},bargap:{valType:\"number\",dflt:.1,min:0,max:1,editType:\"calc\"}}},{}],671:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e,r){var a,o={};function s(r,o){return n.coerce(t[a]||{},e[a],i,r,o)}for(var l=0;l0?(c=o,u=l):(c=l,u=o);var f=[s.findEnclosingVertexAngles(c,t.vangles)[0],(c+u)/2,s.findEnclosingVertexAngles(u,t.vangles)[1]];return s.pathPolygonAnnulus(n,i,c,u,f,e,r)};return function(t,n,i,o){return a.pathAnnulus(t,n,i,o,e,r)}}(e),p=e.layers.frontplot.select(\"g.barlayer\");a.makeTraceGroups(p,r,\"trace bars\").each((function(){var r=n.select(this),s=a.ensureSingle(r,\"g\",\"points\").selectAll(\"g.point\").data(a.identity);s.enter().append(\"g\").style(\"vector-effect\",\"non-scaling-stroke\").style(\"stroke-miterlimit\",2).classed(\"point\",!0),s.exit().remove(),s.each((function(t){var e,r=n.select(this),o=t.rp0=u.c2p(t.s0),s=t.rp1=u.c2p(t.s1),p=t.thetag0=f.c2g(t.p0),d=t.thetag1=f.c2g(t.p1);if(i(o)&&i(s)&&i(p)&&i(d)&&o!==s&&p!==d){var g=u.c2g(t.s1),m=(p+d)/2;t.ct=[l.c2p(g*Math.cos(m)),c.c2p(g*Math.sin(m))],e=h(o,s,p,d)}else e=\"M0,0Z\";a.ensureSingle(r,\"path\").attr(\"d\",e)})),o.setClipUrl(r,e._hasClipOnAxisFalse?e.clipIds.forTraces:null,t)}))}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../plots/polar/helpers\":621,\"@plotly/d3\":58,\"fast-isnumeric\":190}],673:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\"),i=t(\"../bar/attributes\"),a=t(\"../../components/color/attributes\"),o=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,s=t(\"../../plots/template_attributes\").hovertemplateAttrs,l=t(\"../../lib/extend\").extendFlat,c=n.marker,u=c.line;e.exports={y:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},x:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},x0:{valType:\"any\",editType:\"calc+clearAxisTypes\"},y0:{valType:\"any\",editType:\"calc+clearAxisTypes\"},dx:{valType:\"number\",editType:\"calc\"},dy:{valType:\"number\",editType:\"calc\"},xperiod:n.xperiod,yperiod:n.yperiod,xperiod0:n.xperiod0,yperiod0:n.yperiod0,xperiodalignment:n.xperiodalignment,yperiodalignment:n.yperiodalignment,xhoverformat:o(\"x\"),yhoverformat:o(\"y\"),name:{valType:\"string\",editType:\"calc+clearAxisTypes\"},q1:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},median:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},q3:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},lowerfence:{valType:\"data_array\",editType:\"calc\"},upperfence:{valType:\"data_array\",editType:\"calc\"},notched:{valType:\"boolean\",editType:\"calc\"},notchwidth:{valType:\"number\",min:0,max:.5,dflt:.25,editType:\"calc\"},notchspan:{valType:\"data_array\",editType:\"calc\"},boxpoints:{valType:\"enumerated\",values:[\"all\",\"outliers\",\"suspectedoutliers\",!1],editType:\"calc\"},jitter:{valType:\"number\",min:0,max:1,editType:\"calc\"},pointpos:{valType:\"number\",min:-2,max:2,editType:\"calc\"},boxmean:{valType:\"enumerated\",values:[!0,\"sd\",!1],editType:\"calc\"},mean:{valType:\"data_array\",editType:\"calc\"},sd:{valType:\"data_array\",editType:\"calc\"},orientation:{valType:\"enumerated\",values:[\"v\",\"h\"],editType:\"calc+clearAxisTypes\"},quartilemethod:{valType:\"enumerated\",values:[\"linear\",\"exclusive\",\"inclusive\"],dflt:\"linear\",editType:\"calc\"},width:{valType:\"number\",min:0,dflt:0,editType:\"calc\"},marker:{outliercolor:{valType:\"color\",dflt:\"rgba(0, 0, 0, 0)\",editType:\"style\"},symbol:l({},c.symbol,{arrayOk:!1,editType:\"plot\"}),opacity:l({},c.opacity,{arrayOk:!1,dflt:1,editType:\"style\"}),size:l({},c.size,{arrayOk:!1,editType:\"calc\"}),color:l({},c.color,{arrayOk:!1,editType:\"style\"}),line:{color:l({},u.color,{arrayOk:!1,dflt:a.defaultLine,editType:\"style\"}),width:l({},u.width,{arrayOk:!1,dflt:0,editType:\"style\"}),outliercolor:{valType:\"color\",editType:\"style\"},outlierwidth:{valType:\"number\",min:0,dflt:1,editType:\"style\"},editType:\"style\"},editType:\"plot\"},line:{color:{valType:\"color\",editType:\"style\"},width:{valType:\"number\",min:0,dflt:2,editType:\"style\"},editType:\"plot\"},fillcolor:n.fillcolor,whiskerwidth:{valType:\"number\",min:0,max:1,dflt:.5,editType:\"calc\"},offsetgroup:i.offsetgroup,alignmentgroup:i.alignmentgroup,selected:{marker:n.selected.marker,editType:\"style\"},unselected:{marker:n.unselected.marker,editType:\"style\"},text:l({},n.text,{}),hovertext:l({},n.hovertext,{}),hovertemplate:s({}),hoveron:{valType:\"flaglist\",flags:[\"boxes\",\"points\"],dflt:\"boxes+points\",editType:\"style\"}}},{\"../../components/color/attributes\":365,\"../../lib/extend\":493,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/template_attributes\":633,\"../bar/attributes\":648,\"../scatter/attributes\":926}],674:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"../../plots/cartesian/align_period\"),o=t(\"../../lib\"),s=t(\"../../constants/numerical\").BADNUM,l=o._;e.exports=function(t,e){var r,c,y,x,b,_,w,T=t._fullLayout,k=i.getFromId(t,e.xaxis||\"x\"),A=i.getFromId(t,e.yaxis||\"y\"),M=[],S=\"violin\"===e.type?\"_numViolins\":\"_numBoxes\";\"h\"===e.orientation?(y=k,x=\"x\",b=A,_=\"y\",w=!!e.yperiodalignment):(y=A,x=\"y\",b=k,_=\"x\",w=!!e.xperiodalignment);var E,L,C,P,I,O,z=function(t,e,r,i){var s,l=e+\"0\"in t,c=\"d\"+e in t;if(e in t||l&&c){var u=r.makeCalcdata(t,e);return[a(t,r,e,u).vals,u]}s=l?t[e+\"0\"]:\"name\"in t&&(\"category\"===r.type||n(t.name)&&-1!==[\"linear\",\"log\"].indexOf(r.type)||o.isDateTime(t.name)&&\"date\"===r.type)?t.name:i;for(var f=\"multicategory\"===r.type?r.r2c_just_indices(s):r.d2c(s,0,t[e+\"calendar\"]),h=t._length,p=new Array(h),d=0;dE.uf};if(e._hasPreCompStats){var U=e[x],V=function(t){return y.d2c((e[t]||[])[r])},H=1/0,q=-1/0;for(r=0;r=E.q1&&E.q3>=E.med){var Y=V(\"lowerfence\");E.lf=Y!==s&&Y<=E.q1?Y:p(E,C,P);var W=V(\"upperfence\");E.uf=W!==s&&W>=E.q3?W:d(E,C,P);var X=V(\"mean\");E.mean=X!==s?X:P?o.mean(C,P):(E.q1+E.q3)/2;var Z=V(\"sd\");E.sd=X!==s&&Z>=0?Z:P?o.stdev(C,P,E.mean):E.q3-E.q1,E.lo=g(E),E.uo=m(E);var J=V(\"notchspan\");J=J!==s&&J>0?J:v(E,P),E.ln=E.med-J,E.un=E.med+J;var K=E.lf,Q=E.uf;e.boxpoints&&C.length&&(K=Math.min(K,C[0]),Q=Math.max(Q,C[P-1])),e.notched&&(K=Math.min(K,E.ln),Q=Math.max(Q,E.un)),E.min=K,E.max=Q}else{var $;o.warn([\"Invalid input - make sure that q1 <= median <= q3\",\"q1 = \"+E.q1,\"median = \"+E.med,\"q3 = \"+E.q3].join(\"\\n\")),$=E.med!==s?E.med:E.q1!==s?E.q3!==s?(E.q1+E.q3)/2:E.q1:E.q3!==s?E.q3:0,E.med=$,E.q1=E.q3=$,E.lf=E.uf=$,E.mean=E.sd=$,E.ln=E.un=$,E.min=E.max=$}H=Math.min(H,E.min),q=Math.max(q,E.max),E.pts2=L.filter(j),M.push(E)}}e._extremes[y._id]=i.findExtremes(y,[H,q],{padded:!0})}else{var tt=y.makeCalcdata(e,x),et=function(t,e){for(var r=t.length,n=new Array(r+1),i=0;i=0&&it0){var ut,ft;if((E={}).pos=E[_]=B[r],L=E.pts=nt[r].sort(f),P=(C=E[x]=L.map(h)).length,E.min=C[0],E.max=C[P-1],E.mean=o.mean(C,P),E.sd=o.stdev(C,P,E.mean),E.med=o.interp(C,.5),P%2&&(lt||ct))lt?(ut=C.slice(0,P/2),ft=C.slice(P/2+1)):ct&&(ut=C.slice(0,P/2+1),ft=C.slice(P/2)),E.q1=o.interp(ut,.5),E.q3=o.interp(ft,.5);else E.q1=o.interp(C,.25),E.q3=o.interp(C,.75);E.lf=p(E,C,P),E.uf=d(E,C,P),E.lo=g(E),E.uo=m(E);var ht=v(E,P);E.ln=E.med-ht,E.un=E.med+ht,at=Math.min(at,E.ln),ot=Math.max(ot,E.un),E.pts2=L.filter(j),M.push(E)}e._extremes[y._id]=i.findExtremes(y,e.notched?tt.concat([at,ot]):tt,{padded:!0})}return function(t,e){if(o.isArrayOrTypedArray(e.selectedpoints))for(var r=0;r0?(M[0].t={num:T[S],dPos:N,posLetter:_,valLetter:x,labels:{med:l(t,\"median:\"),min:l(t,\"min:\"),q1:l(t,\"q1:\"),q3:l(t,\"q3:\"),max:l(t,\"max:\"),mean:\"sd\"===e.boxmean?l(t,\"mean \\xb1 \\u03c3:\"):l(t,\"mean:\"),lf:l(t,\"lower fence:\"),uf:l(t,\"upper fence:\")}},T[S]++,M):[{t:{empty:!0}}]};var c={text:\"tx\",hovertext:\"htx\"};function u(t,e,r){for(var n in c)o.isArrayOrTypedArray(e[n])&&(Array.isArray(r)?o.isArrayOrTypedArray(e[n][r[0]])&&(t[c[n]]=e[n][r[0]][r[1]]):t[c[n]]=e[n][r])}function f(t,e){return t.v-e.v}function h(t){return t.v}function p(t,e,r){return 0===r?t.q1:Math.min(t.q1,e[Math.min(o.findBin(2.5*t.q1-1.5*t.q3,e,!0)+1,r-1)])}function d(t,e,r){return 0===r?t.q3:Math.max(t.q3,e[Math.max(o.findBin(2.5*t.q3-1.5*t.q1,e),0)])}function g(t){return 4*t.q1-3*t.q3}function m(t){return 4*t.q3-3*t.q1}function v(t,e){return 0===e?0:1.57*(t.q3-t.q1)/Math.sqrt(e)}},{\"../../constants/numerical\":479,\"../../lib\":503,\"../../plots/cartesian/align_period\":551,\"../../plots/cartesian/axes\":554,\"fast-isnumeric\":190}],675:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/axes\"),i=t(\"../../lib\"),a=t(\"../../plots/cartesian/constraints\").getAxisGroup,o=[\"v\",\"h\"];function s(t,e,r,o){var s,l,c,u=e.calcdata,f=e._fullLayout,h=o._id,p=h.charAt(0),d=[],g=0;for(s=0;s1,b=1-f[t+\"gap\"],_=1-f[t+\"groupgap\"];for(s=0;s0){var q=E.pointpos,G=E.jitter,Y=E.marker.size/2,W=0;q+G>=0&&((W=V*(q+G))>M?(H=!0,j=Y,B=W):W>R&&(j=Y,B=M)),W<=M&&(B=M);var X=0;q-G<=0&&((X=-V*(q-G))>S?(H=!0,U=Y,N=X):X>F&&(U=Y,N=S)),X<=S&&(N=S)}else B=M,N=S;var Z=new Array(c.length);for(l=0;l0?(m=\"v\",v=x>0?Math.min(_,b):Math.min(b)):x>0?(m=\"h\",v=Math.min(_)):v=0;if(v){e._length=v;var S=r(\"orientation\",m);e._hasPreCompStats?\"v\"===S&&0===x?(r(\"x0\",0),r(\"dx\",1)):\"h\"===S&&0===y&&(r(\"y0\",0),r(\"dy\",1)):\"v\"===S&&0===x?r(\"x0\"):\"h\"===S&&0===y&&r(\"y0\"),i.getComponentMethod(\"calendars\",\"handleTraceDefaults\")(t,e,[\"x\",\"y\"],a)}else e.visible=!1}function f(t,e,r,i){var a=i.prefix,o=n.coerce2(t,e,c,\"marker.outliercolor\"),s=r(\"marker.line.outliercolor\"),l=\"outliers\";e._hasPreCompStats?l=\"all\":(o||s)&&(l=\"suspectedoutliers\");var u=r(a+\"points\",l);u?(r(\"jitter\",\"all\"===u?.3:0),r(\"pointpos\",\"all\"===u?-1.5:0),r(\"marker.symbol\"),r(\"marker.opacity\"),r(\"marker.size\"),r(\"marker.color\",e.line.color),r(\"marker.line.color\"),r(\"marker.line.width\"),\"suspectedoutliers\"===u&&(r(\"marker.line.outliercolor\",e.marker.color),r(\"marker.line.outlierwidth\")),r(\"selected.marker.color\"),r(\"unselected.marker.color\"),r(\"selected.marker.size\"),r(\"unselected.marker.size\"),r(\"text\"),r(\"hovertext\")):delete e.marker;var f=r(\"hoveron\");\"all\"!==f&&-1===f.indexOf(\"points\")||r(\"hovertemplate\"),n.coerceSelectionMarkerOpacity(e,r)}e.exports={supplyDefaults:function(t,e,r,i){function s(r,i){return n.coerce(t,e,c,r,i)}if(u(t,e,s,i),!1!==e.visible){o(t,e,i,s),s(\"xhoverformat\"),s(\"yhoverformat\");var l=e._hasPreCompStats;l&&(s(\"lowerfence\"),s(\"upperfence\")),s(\"line.color\",(t.marker||{}).color||r),s(\"line.width\"),s(\"fillcolor\",a.addOpacity(e.line.color,.5));var h=!1;if(l){var p=s(\"mean\"),d=s(\"sd\");p&&p.length&&(h=!0,d&&d.length&&(h=\"sd\"))}s(\"boxmean\",h),s(\"whiskerwidth\"),s(\"width\"),s(\"quartilemethod\");var g=!1;if(l){var m=s(\"notchspan\");m&&m.length&&(g=!0)}else n.validate(t.notchwidth,c.notchwidth)&&(g=!0);s(\"notched\",g)&&s(\"notchwidth\"),f(t,e,s,{prefix:\"box\"})}},crossTraceDefaults:function(t,e){var r,i;function a(t){return n.coerce(i._input,i,c,t)}for(var o=0;ot.lo&&(x.so=!0)}return a}));h.enter().append(\"path\").classed(\"point\",!0),h.exit().remove(),h.call(a.translatePoints,o,s)}function l(t,e,r,a){var o,s,l=e.val,c=e.pos,u=!!c.rangebreaks,f=a.bPos,h=a.bPosPxOffset||0,p=r.boxmean||(r.meanline||{}).visible;Array.isArray(a.bdPos)?(o=a.bdPos[0],s=a.bdPos[1]):(o=a.bdPos,s=a.bdPos);var d=t.selectAll(\"path.mean\").data(\"box\"===r.type&&r.boxmean||\"violin\"===r.type&&r.box.visible&&r.meanline.visible?i.identity:[]);d.enter().append(\"path\").attr(\"class\",\"mean\").style({fill:\"none\",\"vector-effect\":\"non-scaling-stroke\"}),d.exit().remove(),d.each((function(t){var e=c.c2l(t.pos+f,!0),i=c.l2p(e-o)+h,a=c.l2p(e+s)+h,d=u?(i+a)/2:c.l2p(e)+h,g=l.c2p(t.mean,!0),m=l.c2p(t.mean-t.sd,!0),v=l.c2p(t.mean+t.sd,!0);\"h\"===r.orientation?n.select(this).attr(\"d\",\"M\"+g+\",\"+i+\"V\"+a+(\"sd\"===p?\"m0,0L\"+m+\",\"+d+\"L\"+g+\",\"+i+\"L\"+v+\",\"+d+\"Z\":\"\")):n.select(this).attr(\"d\",\"M\"+i+\",\"+g+\"H\"+a+(\"sd\"===p?\"m0,0L\"+d+\",\"+m+\"L\"+i+\",\"+g+\"L\"+d+\",\"+v+\"Z\":\"\"))}))}e.exports={plot:function(t,e,r,a){var c=e.xaxis,u=e.yaxis;i.makeTraceGroups(a,r,\"trace boxes\").each((function(t){var e,r,i=n.select(this),a=t[0],f=a.t,h=a.trace;(f.wdPos=f.bdPos*h.whiskerwidth,!0!==h.visible||f.empty)?i.remove():(\"h\"===h.orientation?(e=u,r=c):(e=c,r=u),o(i,{pos:e,val:r},h,f),s(i,{x:c,y:u},h,f),l(i,{pos:e,val:r},h,f))}))},plotBoxAndWhiskers:o,plotPoints:s,plotBoxMean:l}},{\"../../components/drawing\":388,\"../../lib\":503,\"@plotly/d3\":58}],683:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r,n,i=t.cd,a=t.xaxis,o=t.yaxis,s=[];if(!1===e)for(r=0;r=10)return null;for(var i=1/0,a=-1/0,o=e.length,s=0;s0?Math.floor:Math.ceil,I=L>0?Math.ceil:Math.floor,O=L>0?Math.min:Math.max,z=L>0?Math.max:Math.min,D=P(S+C),R=I(E-C),F=[[f=M(S)]];for(a=D;a*L=0;i--)a[u-i]=t[f][i],o[u-i]=e[f][i];for(s.push({x:a,y:o,bicubic:l}),i=f,a=[],o=[];i>=0;i--)a[f-i]=t[i][0],o[f-i]=e[i][0];return s.push({x:a,y:o,bicubic:c}),s}},{}],697:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/axes\"),i=t(\"../../lib/extend\").extendFlat;e.exports=function(t,e,r){var a,o,s,l,c,u,f,h,p,d,g,m,v,y,x=t[\"_\"+e],b=t[e+\"axis\"],_=b._gridlines=[],w=b._minorgridlines=[],T=b._boundarylines=[],k=t[\"_\"+r],A=t[r+\"axis\"];\"array\"===b.tickmode&&(b.tickvals=x.slice());var M=t._xctrl,S=t._yctrl,E=M[0].length,L=M.length,C=t._a.length,P=t._b.length;n.prepTicks(b),\"array\"===b.tickmode&&delete b.tickvals;var I=b.smoothing?3:1;function O(n){var i,a,o,s,l,c,u,f,p,d,g,m,v=[],y=[],x={};if(\"b\"===e)for(a=t.b2j(n),o=Math.floor(Math.max(0,Math.min(P-2,a))),s=a-o,x.length=P,x.crossLength=C,x.xy=function(e){return t.evalxy([],e,a)},x.dxy=function(e,r){return t.dxydi([],e,o,r,s)},i=0;i0&&(p=t.dxydi([],i-1,o,0,s),v.push(l[0]+p[0]/3),y.push(l[1]+p[1]/3),d=t.dxydi([],i-1,o,1,s),v.push(f[0]-d[0]/3),y.push(f[1]-d[1]/3)),v.push(f[0]),y.push(f[1]),l=f;else for(i=t.a2i(n),c=Math.floor(Math.max(0,Math.min(C-2,i))),u=i-c,x.length=C,x.crossLength=P,x.xy=function(e){return t.evalxy([],i,e)},x.dxy=function(e,r){return t.dxydj([],c,e,u,r)},a=0;a0&&(g=t.dxydj([],c,a-1,u,0),v.push(l[0]+g[0]/3),y.push(l[1]+g[1]/3),m=t.dxydj([],c,a-1,u,1),v.push(f[0]-m[0]/3),y.push(f[1]-m[1]/3)),v.push(f[0]),y.push(f[1]),l=f;return x.axisLetter=e,x.axis=b,x.crossAxis=A,x.value=n,x.constvar=r,x.index=h,x.x=v,x.y=y,x.smoothing=A.smoothing,x}function z(n){var i,a,o,s,l,c=[],u=[],f={};if(f.length=x.length,f.crossLength=k.length,\"b\"===e)for(o=Math.max(0,Math.min(P-2,n)),l=Math.min(1,Math.max(0,n-o)),f.xy=function(e){return t.evalxy([],e,n)},f.dxy=function(e,r){return t.dxydi([],e,o,r,l)},i=0;ix.length-1||_.push(i(z(o),{color:b.gridcolor,width:b.gridwidth}));for(h=u;hx.length-1||g<0||g>x.length-1))for(m=x[s],v=x[g],a=0;ax[x.length-1]||w.push(i(O(d),{color:b.minorgridcolor,width:b.minorgridwidth}));b.startline&&T.push(i(z(0),{color:b.startlinecolor,width:b.startlinewidth})),b.endline&&T.push(i(z(x.length-1),{color:b.endlinecolor,width:b.endlinewidth}))}else{for(l=5e-15,u=(c=[Math.floor((x[x.length-1]-b.tick0)/b.dtick*(1+l)),Math.ceil((x[0]-b.tick0)/b.dtick/(1+l))].sort((function(t,e){return t-e})))[0],f=c[1],h=u;h<=f;h++)p=b.tick0+b.dtick*h,_.push(i(O(p),{color:b.gridcolor,width:b.gridwidth}));for(h=u-1;hx[x.length-1]||w.push(i(O(d),{color:b.minorgridcolor,width:b.minorgridwidth}));b.startline&&T.push(i(O(x[0]),{color:b.startlinecolor,width:b.startlinewidth})),b.endline&&T.push(i(O(x[x.length-1]),{color:b.endlinecolor,width:b.endlinewidth}))}}},{\"../../lib/extend\":493,\"../../plots/cartesian/axes\":554}],698:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/axes\"),i=t(\"../../lib/extend\").extendFlat;e.exports=function(t,e){var r,a,o,s=e._labels=[],l=e._gridlines;for(r=0;re.length&&(t=t.slice(0,e.length)):t=[],i=0;i90&&(p-=180,l=-l),{angle:p,flip:l,p:t.c2p(n,e,r),offsetMultplier:c}}},{}],712:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../components/drawing\"),a=t(\"./map_1d_array\"),o=t(\"./makepath\"),s=t(\"./orient_text\"),l=t(\"../../lib/svg_text_utils\"),c=t(\"../../lib\"),u=c.strRotate,f=c.strTranslate,h=t(\"../../constants/alignment\");function p(t,e,r,i,s,l){var c=\"const-\"+s+\"-lines\",u=r.selectAll(\".\"+c).data(l);u.enter().append(\"path\").classed(c,!0).style(\"vector-effect\",\"non-scaling-stroke\"),u.each((function(r){var i=r,s=i.x,l=i.y,c=a([],s,t.c2p),u=a([],l,e.c2p),f=\"M\"+o(c,u,i.smoothing);n.select(this).attr(\"d\",f).style(\"stroke-width\",i.width).style(\"stroke\",i.color).style(\"fill\",\"none\")})),u.exit().remove()}function d(t,e,r,a,o,c,h,p){var d=c.selectAll(\"text.\"+p).data(h);d.enter().append(\"text\").classed(p,!0);var g=0,m={};return d.each((function(o,c){var h;if(\"auto\"===o.axis.tickangle)h=s(a,e,r,o.xy,o.dxy);else{var p=(o.axis.tickangle+180)*Math.PI/180;h=s(a,e,r,o.xy,[Math.cos(p),Math.sin(p)])}c||(m={angle:h.angle,flip:h.flip});var d=(o.endAnchor?-1:1)*h.flip,v=n.select(this).attr({\"text-anchor\":d>0?\"start\":\"end\",\"data-notex\":1}).call(i.font,o.font).text(o.text).call(l.convertToTspans,t),y=i.bBox(this);v.attr(\"transform\",f(h.p[0],h.p[1])+u(h.angle)+f(o.axis.labelpadding*d,.3*y.height)),g=Math.max(g,y.width+o.axis.labelpadding)})),d.exit().remove(),m.maxExtent=g,m}e.exports=function(t,e,r,i){var l=e.xaxis,u=e.yaxis,f=t._fullLayout._clips;c.makeTraceGroups(i,r,\"trace\").each((function(e){var r=n.select(this),i=e[0],h=i.trace,g=h.aaxis,m=h.baxis,y=c.ensureSingle(r,\"g\",\"minorlayer\"),x=c.ensureSingle(r,\"g\",\"majorlayer\"),b=c.ensureSingle(r,\"g\",\"boundarylayer\"),_=c.ensureSingle(r,\"g\",\"labellayer\");r.style(\"opacity\",h.opacity),p(l,u,x,g,\"a\",g._gridlines),p(l,u,x,m,\"b\",m._gridlines),p(l,u,y,g,\"a\",g._minorgridlines),p(l,u,y,m,\"b\",m._minorgridlines),p(l,u,b,g,\"a-boundary\",g._boundarylines),p(l,u,b,m,\"b-boundary\",m._boundarylines);var w=d(t,l,u,h,i,_,g._labels,\"a-label\"),T=d(t,l,u,h,i,_,m._labels,\"b-label\");!function(t,e,r,n,i,a,o,l){var u,f,h,p,d=c.aggNums(Math.min,null,r.a),g=c.aggNums(Math.max,null,r.a),m=c.aggNums(Math.min,null,r.b),y=c.aggNums(Math.max,null,r.b);u=.5*(d+g),f=m,h=r.ab2xy(u,f,!0),p=r.dxyda_rough(u,f),void 0===o.angle&&c.extendFlat(o,s(r,i,a,h,r.dxydb_rough(u,f)));v(t,e,r,n,h,p,r.aaxis,i,a,o,\"a-title\"),u=d,f=.5*(m+y),h=r.ab2xy(u,f,!0),p=r.dxydb_rough(u,f),void 0===l.angle&&c.extendFlat(l,s(r,i,a,h,r.dxyda_rough(u,f)));v(t,e,r,n,h,p,r.baxis,i,a,l,\"b-title\")}(t,_,h,i,l,u,w,T),function(t,e,r,n,i){var s,l,u,f,h=r.select(\"#\"+t._clipPathId);h.size()||(h=r.append(\"clipPath\").classed(\"carpetclip\",!0));var p=c.ensureSingle(h,\"path\",\"carpetboundary\"),d=e.clipsegments,g=[];for(f=0;f90&&y<270,b=n.select(this);b.text(h.title.text).call(l.convertToTspans,t),x&&(_=(-l.lineCount(b)+m)*g*a-_),b.attr(\"transform\",f(e.p[0],e.p[1])+u(e.angle)+f(0,_)).attr(\"text-anchor\",\"middle\").call(i.font,h.title.font)})),b.exit().remove()}},{\"../../components/drawing\":388,\"../../constants/alignment\":471,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"./makepath\":709,\"./map_1d_array\":710,\"./orient_text\":711,\"@plotly/d3\":58}],713:[function(t,e,r){\"use strict\";var n=t(\"./constants\"),i=t(\"../../lib/search\").findBin,a=t(\"./compute_control_points\"),o=t(\"./create_spline_evaluator\"),s=t(\"./create_i_derivative_evaluator\"),l=t(\"./create_j_derivative_evaluator\");e.exports=function(t){var e=t._a,r=t._b,c=e.length,u=r.length,f=t.aaxis,h=t.baxis,p=e[0],d=e[c-1],g=r[0],m=r[u-1],v=e[e.length-1]-e[0],y=r[r.length-1]-r[0],x=v*n.RELATIVE_CULL_TOLERANCE,b=y*n.RELATIVE_CULL_TOLERANCE;p-=x,d+=x,g-=b,m+=b,t.isVisible=function(t,e){return t>p&&tg&&ed||em},t.setScale=function(){var e=t._x,r=t._y,n=a(t._xctrl,t._yctrl,e,r,f.smoothing,h.smoothing);t._xctrl=n[0],t._yctrl=n[1],t.evalxy=o([t._xctrl,t._yctrl],c,u,f.smoothing,h.smoothing),t.dxydi=s([t._xctrl,t._yctrl],f.smoothing,h.smoothing),t.dxydj=l([t._xctrl,t._yctrl],f.smoothing,h.smoothing)},t.i2a=function(t){var r=Math.max(0,Math.floor(t[0]),c-2),n=t[0]-r;return(1-n)*e[r]+n*e[r+1]},t.j2b=function(t){var e=Math.max(0,Math.floor(t[1]),c-2),n=t[1]-e;return(1-n)*r[e]+n*r[e+1]},t.ij2ab=function(e){return[t.i2a(e[0]),t.j2b(e[1])]},t.a2i=function(t){var r=Math.max(0,Math.min(i(t,e),c-2)),n=e[r],a=e[r+1];return Math.max(0,Math.min(c-1,r+(t-n)/(a-n)))},t.b2j=function(t){var e=Math.max(0,Math.min(i(t,r),u-2)),n=r[e],a=r[e+1];return Math.max(0,Math.min(u-1,e+(t-n)/(a-n)))},t.ab2ij=function(e){return[t.a2i(e[0]),t.b2j(e[1])]},t.i2c=function(e,r){return t.evalxy([],e,r)},t.ab2xy=function(n,i,a){if(!a&&(ne[c-1]|ir[u-1]))return[!1,!1];var o=t.a2i(n),s=t.b2j(i),l=t.evalxy([],o,s);if(a){var f,h,p,d,g=0,m=0,v=[];ne[c-1]?(f=c-2,h=1,g=(n-e[c-1])/(e[c-1]-e[c-2])):h=o-(f=Math.max(0,Math.min(c-2,Math.floor(o)))),ir[u-1]?(p=u-2,d=1,m=(i-r[u-1])/(r[u-1]-r[u-2])):d=s-(p=Math.max(0,Math.min(u-2,Math.floor(s)))),g&&(t.dxydi(v,f,p,h,d),l[0]+=v[0]*g,l[1]+=v[1]*g),m&&(t.dxydj(v,f,p,h,d),l[0]+=v[0]*m,l[1]+=v[1]*m)}return l},t.c2p=function(t,e,r){return[e.c2p(t[0]),r.c2p(t[1])]},t.p2x=function(t,e,r){return[e.p2c(t[0]),r.p2c(t[1])]},t.dadi=function(t){var r=Math.max(0,Math.min(e.length-2,t));return e[r+1]-e[r]},t.dbdj=function(t){var e=Math.max(0,Math.min(r.length-2,t));return r[e+1]-r[e]},t.dxyda=function(e,r,n,i){var a=t.dxydi(null,e,r,n,i),o=t.dadi(e,n);return[a[0]/o,a[1]/o]},t.dxydb=function(e,r,n,i){var a=t.dxydj(null,e,r,n,i),o=t.dbdj(r,i);return[a[0]/o,a[1]/o]},t.dxyda_rough=function(e,r,n){var i=v*(n||.1),a=t.ab2xy(e+i,r,!0),o=t.ab2xy(e-i,r,!0);return[.5*(a[0]-o[0])/i,.5*(a[1]-o[1])/i]},t.dxydb_rough=function(e,r,n){var i=y*(n||.1),a=t.ab2xy(e,r+i,!0),o=t.ab2xy(e,r-i,!0);return[.5*(a[0]-o[0])/i,.5*(a[1]-o[1])/i]},t.dpdx=function(t){return t._m},t.dpdy=function(t){return t._m}}},{\"../../lib/search\":523,\"./compute_control_points\":701,\"./constants\":702,\"./create_i_derivative_evaluator\":703,\"./create_j_derivative_evaluator\":704,\"./create_spline_evaluator\":705}],714:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t,e,r){var i,a,o,s=[],l=[],c=t[0].length,u=t.length;function f(e,r){var n,i=0,a=0;return e>0&&void 0!==(n=t[r][e-1])&&(a++,i+=n),e0&&void 0!==(n=t[r-1][e])&&(a++,i+=n),r0&&a0&&i1e-5);return n.log(\"Smoother converged to\",k,\"after\",A,\"iterations\"),t}},{\"../../lib\":503}],715:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").isArray1D;e.exports=function(t,e,r){var i=r(\"x\"),a=i&&i.length,o=r(\"y\"),s=o&&o.length;if(!a&&!s)return!1;if(e._cheater=!i,a&&!n(i)||s&&!n(o))e._length=null;else{var l=a?i.length:1/0;s&&(l=Math.min(l,o.length)),e.a&&e.a.length&&(l=Math.min(l,e.a.length)),e.b&&e.b.length&&(l=Math.min(l,e.b.length)),e._length=l}return!0}},{\"../../lib\":503}],716:[function(t,e,r){\"use strict\";var n=t(\"../../plots/template_attributes\").hovertemplateAttrs,i=t(\"../scattergeo/attributes\"),a=t(\"../../components/colorscale/attributes\"),o=t(\"../../plots/attributes\"),s=t(\"../../components/color/attributes\").defaultLine,l=t(\"../../lib/extend\").extendFlat,c=i.marker.line;e.exports=l({locations:{valType:\"data_array\",editType:\"calc\"},locationmode:i.locationmode,z:{valType:\"data_array\",editType:\"calc\"},geojson:l({},i.geojson,{}),featureidkey:i.featureidkey,text:l({},i.text,{}),hovertext:l({},i.hovertext,{}),marker:{line:{color:l({},c.color,{dflt:s}),width:l({},c.width,{dflt:1}),editType:\"calc\"},opacity:{valType:\"number\",arrayOk:!0,min:0,max:1,dflt:1,editType:\"style\"},editType:\"calc\"},selected:{marker:{opacity:i.selected.marker.opacity,editType:\"plot\"},editType:\"plot\"},unselected:{marker:{opacity:i.unselected.marker.opacity,editType:\"plot\"},editType:\"plot\"},hoverinfo:l({},o.hoverinfo,{editType:\"calc\",flags:[\"location\",\"z\",\"text\",\"name\"]}),hovertemplate:n(),showlegend:l({},o.showlegend,{dflt:!1})},a(\"\",{cLetter:\"z\",editTypeOverride:\"calc\"}))},{\"../../components/color/attributes\":365,\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/template_attributes\":633,\"../scattergeo/attributes\":968}],717:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../constants/numerical\").BADNUM,a=t(\"../../components/colorscale/calc\"),o=t(\"../scatter/arrays_to_calcdata\"),s=t(\"../scatter/calc_selection\");function l(t){return t&&\"string\"==typeof t}e.exports=function(t,e){var r,c=e._length,u=new Array(c);r=e.geojson?function(t){return l(t)||n(t)}:l;for(var f=0;f\")}(t,f,o),[t]}},{\"../../lib\":503,\"../../plots/cartesian/axes\":554,\"./attributes\":716}],721:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../heatmap/colorbar\"),calc:t(\"./calc\"),calcGeoJSON:t(\"./plot\").calcGeoJSON,plot:t(\"./plot\").plot,style:t(\"./style\").style,styleOnSelect:t(\"./style\").styleOnSelect,hoverPoints:t(\"./hover\"),eventData:t(\"./event_data\"),selectPoints:t(\"./select\"),moduleType:\"trace\",name:\"choropleth\",basePlotModule:t(\"../../plots/geo\"),categories:[\"geo\",\"noOpacity\",\"showLegend\"],meta:{}}},{\"../../plots/geo\":589,\"../heatmap/colorbar\":795,\"./attributes\":716,\"./calc\":717,\"./defaults\":718,\"./event_data\":719,\"./hover\":720,\"./plot\":722,\"./select\":723,\"./style\":724}],722:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../lib/geo_location_utils\"),o=t(\"../../lib/topojson_utils\").getTopojsonFeatures,s=t(\"../../plots/cartesian/autorange\").findExtremes,l=t(\"./style\").style;e.exports={calcGeoJSON:function(t,e){for(var r=t[0].trace,n=e[r.geo],i=n._subplot,l=r.locationmode,c=r._length,u=\"geojson-id\"===l?a.extractTraceFeature(t):o(r,i.topojson),f=[],h=[],p=0;p=0;n--){var i=r[n].id;if(\"string\"==typeof i&&0===i.indexOf(\"water\"))for(var a=n+1;a=0;r--)t.removeLayer(e[r][1])},s.dispose=function(){var t=this.subplot.map;this._removeLayers(),t.removeSource(this.sourceId)},e.exports=function(t,e){var r=e[0].trace,i=new o(t,r.uid),a=i.sourceId,s=n(e),l=i.below=t.belowLookup[\"trace-\"+r.uid];return t.map.addSource(a,{type:\"geojson\",data:s.geojson}),i._addLayers(s,l),e[0].trace._glTrace=i,i}},{\"../../plots/mapbox/constants\":611,\"./convert\":726}],730:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/attributes\"),i=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,a=t(\"../../plots/template_attributes\").hovertemplateAttrs,o=t(\"../mesh3d/attributes\"),s=t(\"../../plots/attributes\"),l=t(\"../../lib/extend\").extendFlat,c={x:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},y:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},z:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},u:{valType:\"data_array\",editType:\"calc\"},v:{valType:\"data_array\",editType:\"calc\"},w:{valType:\"data_array\",editType:\"calc\"},sizemode:{valType:\"enumerated\",values:[\"scaled\",\"absolute\"],editType:\"calc\",dflt:\"scaled\"},sizeref:{valType:\"number\",editType:\"calc\",min:0},anchor:{valType:\"enumerated\",editType:\"calc\",values:[\"tip\",\"tail\",\"cm\",\"center\"],dflt:\"cm\"},text:{valType:\"string\",dflt:\"\",arrayOk:!0,editType:\"calc\"},hovertext:{valType:\"string\",dflt:\"\",arrayOk:!0,editType:\"calc\"},hovertemplate:a({editType:\"calc\"},{keys:[\"norm\"]}),uhoverformat:i(\"u\",1),vhoverformat:i(\"v\",1),whoverformat:i(\"w\",1),xhoverformat:i(\"x\"),yhoverformat:i(\"y\"),zhoverformat:i(\"z\"),showlegend:l({},s.showlegend,{dflt:!1})};l(c,n(\"\",{colorAttr:\"u/v/w norm\",showScaleDflt:!0,editTypeOverride:\"calc\"}));[\"opacity\",\"lightposition\",\"lighting\"].forEach((function(t){c[t]=o[t]})),c.hoverinfo=l({},s.hoverinfo,{editType:\"calc\",flags:[\"x\",\"y\",\"z\",\"u\",\"v\",\"w\",\"norm\",\"text\",\"name\"],dflt:\"x+y+z+norm+text+name\"}),c.transforms=void 0,e.exports=c},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/template_attributes\":633,\"../mesh3d/attributes\":867}],731:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/calc\");e.exports=function(t,e){for(var r=e.u,i=e.v,a=e.w,o=Math.min(e.x.length,e.y.length,e.z.length,r.length,i.length,a.length),s=-1/0,l=1/0,c=0;co.level||o.starts.length&&a===o.level)}break;case\"constraint\":if(n.prefixBoundary=!1,n.edgepaths.length)return;var s=n.x.length,l=n.y.length,c=-1/0,u=1/0;for(r=0;r\":p>c&&(n.prefixBoundary=!0);break;case\"<\":(pc||n.starts.length&&h===u)&&(n.prefixBoundary=!0);break;case\"][\":f=Math.min(p[0],p[1]),h=Math.max(p[0],p[1]),fc&&(n.prefixBoundary=!0)}}}},{}],738:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale\"),i=t(\"./make_color_map\"),a=t(\"./end_plus\");e.exports={min:\"zmin\",max:\"zmax\",calc:function(t,e,r){var o=e.contours,s=e.line,l=o.size||1,c=o.coloring,u=i(e,{isColorbar:!0});if(\"heatmap\"===c){var f=n.extractOpts(e);r._fillgradient=f.reversescale?n.flipScale(f.colorscale):f.colorscale,r._zrange=[f.min,f.max]}else\"fill\"===c&&(r._fillcolor=u);r._line={color:\"lines\"===c?u:s.color,width:!1!==o.showlines?s.width:0,dash:s.dash},r._levels={start:o.start,end:a(o),size:l}}}},{\"../../components/colorscale\":378,\"./end_plus\":746,\"./make_color_map\":751}],739:[function(t,e,r){\"use strict\";e.exports={BOTTOMSTART:[1,9,13,104,713],TOPSTART:[4,6,7,104,713],LEFTSTART:[8,12,14,208,1114],RIGHTSTART:[2,3,11,208,1114],NEWDELTA:[null,[-1,0],[0,-1],[-1,0],[1,0],null,[0,-1],[-1,0],[0,1],[0,1],null,[0,1],[1,0],[1,0],[0,-1]],CHOOSESADDLE:{104:[4,1],208:[2,8],713:[7,13],1114:[11,14]},SADDLEREMAINDER:{1:4,2:8,4:1,7:13,8:2,11:14,13:7,14:11},LABELDISTANCE:2,LABELINCREASE:10,LABELMIN:3,LABELMAX:10,LABELOPTIMIZER:{EDGECOST:1,ANGLECOST:1,NEIGHBORCOST:5,SAMELEVELFACTOR:10,SAMELEVELDISTANCE:5,MAXCOST:100,INITIALSEARCHPOINTS:10,ITERATIONS:5}}},{}],740:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"./label_defaults\"),a=t(\"../../components/color\"),o=a.addOpacity,s=a.opacity,l=t(\"../../constants/filter_ops\"),c=l.CONSTRAINT_REDUCTION,u=l.COMPARISON_OPS2;e.exports=function(t,e,r,a,l,f){var h,p,d,g=e.contours,m=r(\"contours.operation\");(g._operation=c[m],function(t,e){var r;-1===u.indexOf(e.operation)?(t(\"contours.value\",[0,1]),Array.isArray(e.value)?e.value.length>2?e.value=e.value.slice(2):0===e.length?e.value=[0,1]:e.length<2?(r=parseFloat(e.value[0]),e.value=[r,r+1]):e.value=[parseFloat(e.value[0]),parseFloat(e.value[1])]:n(e.value)&&(r=parseFloat(e.value),e.value=[r,r+1])):(t(\"contours.value\",0),n(e.value)||(Array.isArray(e.value)?e.value=parseFloat(e.value[0]):e.value=0))}(r,g),\"=\"===m?h=g.showlines=!0:(h=r(\"contours.showlines\"),d=r(\"fillcolor\",o((t.line||{}).color||l,.5))),h)&&(p=r(\"line.color\",d&&s(d)?o(e.fillcolor,1):l),r(\"line.width\",2),r(\"line.dash\"));r(\"line.smoothing\"),i(r,a,p,f)}},{\"../../components/color\":366,\"../../constants/filter_ops\":475,\"./label_defaults\":750,\"fast-isnumeric\":190}],741:[function(t,e,r){\"use strict\";var n=t(\"../../constants/filter_ops\"),i=t(\"fast-isnumeric\");function a(t,e){var r,a=Array.isArray(e);function o(t){return i(t)?+t:null}return-1!==n.COMPARISON_OPS2.indexOf(t)?r=o(a?e[0]:e):-1!==n.INTERVAL_OPS.indexOf(t)?r=a?[o(e[0]),o(e[1])]:[o(e),o(e)]:-1!==n.SET_OPS.indexOf(t)&&(r=a?e.map(o):[o(e)]),r}function o(t){return function(e){e=a(t,e);var r=Math.min(e[0],e[1]),n=Math.max(e[0],e[1]);return{start:r,end:n,size:n-r}}}function s(t){return function(e){return{start:e=a(t,e),end:1/0,size:1/0}}}e.exports={\"[]\":o(\"[]\"),\"][\":o(\"][\"),\">\":s(\">\"),\"<\":s(\"<\"),\"=\":s(\"=\")}},{\"../../constants/filter_ops\":475,\"fast-isnumeric\":190}],742:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,n){var i=n(\"contours.start\"),a=n(\"contours.end\"),o=!1===i||!1===a,s=r(\"contours.size\");!(o?e.autocontour=!0:r(\"autocontour\",!1))&&s||r(\"ncontours\")}},{}],743:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");function i(t){return n.extendFlat({},t,{edgepaths:n.extendDeep([],t.edgepaths),paths:n.extendDeep([],t.paths),starts:n.extendDeep([],t.starts)})}e.exports=function(t,e){var r,a,o,s=function(t){return t.reverse()},l=function(t){return t};switch(e){case\"=\":case\"<\":return t;case\">\":for(1!==t.length&&n.warn(\"Contour data invalid for the specified inequality operation.\"),a=t[0],r=0;r1e3){n.warn(\"Too many contours, clipping at 1000\",t);break}return l}},{\"../../lib\":503,\"./constraint_mapping\":741,\"./end_plus\":746}],746:[function(t,e,r){\"use strict\";e.exports=function(t){return t.end+t.size/1e6}},{}],747:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./constants\");function a(t,e,r,n){return Math.abs(t[0]-e[0])20&&e?208===t||1114===t?n=0===r[0]?1:-1:a=0===r[1]?1:-1:-1!==i.BOTTOMSTART.indexOf(t)?a=1:-1!==i.LEFTSTART.indexOf(t)?n=1:-1!==i.TOPSTART.indexOf(t)?a=-1:n=-1;return[n,a]}(f,r,e),p=[s(t,e,[-h[0],-h[1]])],d=t.z.length,g=t.z[0].length,m=e.slice(),v=h.slice();for(c=0;c<1e4;c++){if(f>20?(f=i.CHOOSESADDLE[f][(h[0]||h[1])<0?0:1],t.crossings[u]=i.SADDLEREMAINDER[f]):delete t.crossings[u],!(h=i.NEWDELTA[f])){n.log(\"Found bad marching index:\",f,e,t.level);break}p.push(s(t,e,h)),e[0]+=h[0],e[1]+=h[1],u=e.join(\",\"),a(p[p.length-1],p[p.length-2],o,l)&&p.pop();var y=h[0]&&(e[0]<0||e[0]>g-2)||h[1]&&(e[1]<0||e[1]>d-2);if(e[0]===m[0]&&e[1]===m[1]&&h[0]===v[0]&&h[1]===v[1]||r&&y)break;f=t.crossings[u]}1e4===c&&n.log(\"Infinite loop in contour?\");var x,b,_,w,T,k,A,M,S,E,L,C,P,I,O,z=a(p[0],p[p.length-1],o,l),D=0,R=.2*t.smoothing,F=[],B=0;for(c=1;c=B;c--)if((x=F[c])=B&&x+F[b]M&&S--,t.edgepaths[S]=L.concat(p,E));break}V||(t.edgepaths[M]=p.concat(E))}for(M=0;Mt?0:1)+(e[0][1]>t?0:2)+(e[1][1]>t?0:4)+(e[1][0]>t?0:8);return 5===r||10===r?t>(e[0][0]+e[0][1]+e[1][0]+e[1][1])/4?5===r?713:1114:5===r?104:208:15===r?0:r}e.exports=function(t){var e,r,a,o,s,l,c,u,f,h=t[0].z,p=h.length,d=h[0].length,g=2===p||2===d;for(r=0;r=0&&(n=y,s=l):Math.abs(r[1]-n[1])<.01?Math.abs(r[1]-y[1])<.01&&(y[0]-r[0])*(n[0]-y[0])>=0&&(n=y,s=l):i.log(\"endpt to newendpt is not vert. or horz.\",r,n,y)}if(r=n,s>=0)break;f+=\"L\"+n}if(s===t.edgepaths.length){i.log(\"unclosed perimeter path\");break}h=s,(d=-1===p.indexOf(h))&&(h=p[0],f+=\"Z\")}for(h=0;hn.center?n.right-s:s-n.left)/(u+Math.abs(Math.sin(c)*o)),p=(l>n.middle?n.bottom-l:l-n.top)/(Math.abs(f)+Math.cos(c)*o);if(h<1||p<1)return 1/0;var d=v.EDGECOST*(1/(h-1)+1/(p-1));d+=v.ANGLECOST*c*c;for(var g=s-u,m=l-f,y=s+u,x=l+f,b=0;b2*v.MAXCOST)break;p&&(s/=2),l=(o=c-s/2)+1.5*s}if(h<=v.MAXCOST)return u},r.addLabelData=function(t,e,r,n){var i=e.fontSize,a=e.width+i/3,o=Math.max(0,e.height-i/3),s=t.x,l=t.y,c=t.theta,u=Math.sin(c),f=Math.cos(c),h=function(t,e){return[s+t*f-e*u,l+t*u+e*f]},p=[h(-a/2,-o/2),h(-a/2,o/2),h(a/2,o/2),h(a/2,-o/2)];r.push({text:e.text,x:s,y:l,dy:e.dy,theta:c,level:e.level,width:a,height:o}),n.push(p)},r.drawLabels=function(t,e,r,a,o){var l=t.selectAll(\"text\").data(e,(function(t){return t.text+\",\"+t.x+\",\"+t.y+\",\"+t.theta}));if(l.exit().remove(),l.enter().append(\"text\").attr({\"data-notex\":1,\"text-anchor\":\"middle\"}).each((function(t){var e=t.x+Math.sin(t.theta)*t.dy,i=t.y-Math.cos(t.theta)*t.dy;n.select(this).text(t.text).attr({x:e,y:i,transform:\"rotate(\"+180*t.theta/Math.PI+\" \"+e+\" \"+i+\")\"}).call(s.convertToTspans,r)})),o){for(var c=\"\",u=0;ur.end&&(r.start=r.end=(r.start+r.end)/2),t._input.contours||(t._input.contours={}),i.extendFlat(t._input.contours,{start:r.start,end:r.end,size:r.size}),t._input.autocontour=!0}else if(\"constraint\"!==r.type){var c,u=r.start,f=r.end,h=t._input.contours;if(u>f&&(r.start=h.start=f,f=r.end=h.end=u,u=r.start),!(r.size>0))c=u===f?1:a(u,f,t.ncontours).dtick,h.size=r.size=c}}},{\"../../lib\":503,\"../../plots/cartesian/axes\":554}],755:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../components/drawing\"),a=t(\"../heatmap/style\"),o=t(\"./make_color_map\");e.exports=function(t){var e=n.select(t).selectAll(\"g.contour\");e.style(\"opacity\",(function(t){return t[0].trace.opacity})),e.each((function(t){var e=n.select(this),r=t[0].trace,a=r.contours,s=r.line,l=a.size||1,c=a.start,u=\"constraint\"===a.type,f=!u&&\"lines\"===a.coloring,h=!u&&\"fill\"===a.coloring,p=f||h?o(r):null;e.selectAll(\"g.contourlevel\").each((function(t){n.select(this).selectAll(\"path\").call(i.lineGroupStyle,s.width,f?p(t.level):s.color,s.dash)}));var d=a.labelfont;if(e.selectAll(\"g.contourlabels text\").each((function(t){i.font(n.select(this),{family:d.family,size:d.size,color:d.color||(f?p(t.level):s.color)})})),u)e.selectAll(\"g.contourfill path\").style(\"fill\",r.fillcolor);else if(h){var g;e.selectAll(\"g.contourfill path\").style(\"fill\",(function(t){return void 0===g&&(g=t.level),p(t.level+.5*l)})),void 0===g&&(g=c),e.selectAll(\"g.contourbg path\").style(\"fill\",p(g-.5*l))}})),a(t)}},{\"../../components/drawing\":388,\"../heatmap/style\":805,\"./make_color_map\":751,\"@plotly/d3\":58}],756:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/defaults\"),i=t(\"./label_defaults\");e.exports=function(t,e,r,a,o){var s,l=r(\"contours.coloring\"),c=\"\";\"fill\"===l&&(s=r(\"contours.showlines\")),!1!==s&&(\"lines\"!==l&&(c=r(\"line.color\",\"#000\")),r(\"line.width\",.5),r(\"line.dash\")),\"none\"!==l&&(!0!==t.showlegend&&(e.showlegend=!1),e._dfltShowLegend=!1,n(t,e,a,r,{prefix:\"\",cLetter:\"z\"})),r(\"line.smoothing\"),i(r,a,c,o)}},{\"../../components/colorscale/defaults\":376,\"./label_defaults\":750}],757:[function(t,e,r){\"use strict\";var n=t(\"../heatmap/attributes\"),i=t(\"../contour/attributes\"),a=t(\"../../components/colorscale/attributes\"),o=t(\"../../lib/extend\").extendFlat,s=i.contours;e.exports=o({carpet:{valType:\"string\",editType:\"calc\"},z:n.z,a:n.x,a0:n.x0,da:n.dx,b:n.y,b0:n.y0,db:n.dy,text:n.text,hovertext:n.hovertext,transpose:n.transpose,atype:n.xtype,btype:n.ytype,fillcolor:i.fillcolor,autocontour:i.autocontour,ncontours:i.ncontours,contours:{type:s.type,start:s.start,end:s.end,size:s.size,coloring:{valType:\"enumerated\",values:[\"fill\",\"lines\",\"none\"],dflt:\"fill\",editType:\"calc\"},showlines:s.showlines,showlabels:s.showlabels,labelfont:s.labelfont,labelformat:s.labelformat,operation:s.operation,value:s.value,editType:\"calc\",impliedEdits:{autocontour:!1}},line:{color:i.line.color,width:i.line.width,dash:i.line.dash,smoothing:i.line.smoothing,editType:\"plot\"},transforms:void 0},a(\"\",{cLetter:\"z\",autoColorDflt:!1}))},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../contour/attributes\":735,\"../heatmap/attributes\":792}],758:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/calc\"),i=t(\"../../lib\"),a=t(\"../heatmap/convert_column_xyz\"),o=t(\"../heatmap/clean_2d_array\"),s=t(\"../heatmap/interp2d\"),l=t(\"../heatmap/find_empties\"),c=t(\"../heatmap/make_bound_array\"),u=t(\"./defaults\"),f=t(\"../carpet/lookup_carpetid\"),h=t(\"../contour/set_contours\");e.exports=function(t,e){var r=e._carpetTrace=f(t,e);if(r&&r.visible&&\"legendonly\"!==r.visible){if(!e.a||!e.b){var p=t.data[r.index],d=t.data[e.index];d.a||(d.a=p.a),d.b||(d.b=p.b),u(d,e,e._defaultColor,t._fullLayout)}var g=function(t,e){var r,u,f,h,p,d,g,m=e._carpetTrace,v=m.aaxis,y=m.baxis;v._minDtick=0,y._minDtick=0,i.isArray1D(e.z)&&a(e,v,y,\"a\",\"b\",[\"z\"]);r=e._a=e._a||e.a,h=e._b=e._b||e.b,r=r?v.makeCalcdata(e,\"_a\"):[],h=h?y.makeCalcdata(e,\"_b\"):[],u=e.a0||0,f=e.da||1,p=e.b0||0,d=e.db||1,g=e._z=o(e._z||e.z,e.transpose),e._emptypoints=l(g),s(g,e._emptypoints);var x=i.maxRowLength(g),b=\"scaled\"===e.xtype?\"\":r,_=c(e,b,u,f,x,v),w=\"scaled\"===e.ytype?\"\":h,T=c(e,w,p,d,g.length,y),k={a:_,b:T,z:g};\"levels\"===e.contours.type&&\"none\"!==e.contours.coloring&&n(t,e,{vals:g,containerStr:\"\",cLetter:\"z\"});return[k]}(t,e);return h(e,e._z),g}}},{\"../../components/colorscale/calc\":374,\"../../lib\":503,\"../carpet/lookup_carpetid\":708,\"../contour/set_contours\":754,\"../heatmap/clean_2d_array\":794,\"../heatmap/convert_column_xyz\":796,\"../heatmap/find_empties\":798,\"../heatmap/interp2d\":801,\"../heatmap/make_bound_array\":803,\"./defaults\":759}],759:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../heatmap/xyz_defaults\"),a=t(\"./attributes\"),o=t(\"../contour/constraint_defaults\"),s=t(\"../contour/contours_defaults\"),l=t(\"../contour/style_defaults\");e.exports=function(t,e,r,c){function u(r,i){return n.coerce(t,e,a,r,i)}if(u(\"carpet\"),t.a&&t.b){if(!i(t,e,u,c,\"a\",\"b\"))return void(e.visible=!1);u(\"text\"),\"constraint\"===u(\"contours.type\")?o(t,e,u,c,r,{hasHover:!1}):(s(t,e,u,(function(r){return n.coerce2(t,e,a,r)})),l(t,e,u,c,{hasHover:!1}))}else e._defaultColor=r,e._length=null}},{\"../../lib\":503,\"../contour/constraint_defaults\":740,\"../contour/contours_defaults\":742,\"../contour/style_defaults\":756,\"../heatmap/xyz_defaults\":807,\"./attributes\":757}],760:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../contour/colorbar\"),calc:t(\"./calc\"),plot:t(\"./plot\"),style:t(\"../contour/style\"),moduleType:\"trace\",name:\"contourcarpet\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"cartesian\",\"svg\",\"carpet\",\"contour\",\"symbols\",\"showLegend\",\"hasLines\",\"carpetDependent\",\"noHover\",\"noSortingByValue\"],meta:{}}},{\"../../plots/cartesian\":568,\"../contour/colorbar\":738,\"../contour/style\":755,\"./attributes\":757,\"./calc\":758,\"./defaults\":759,\"./plot\":761}],761:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../carpet/map_1d_array\"),a=t(\"../carpet/makepath\"),o=t(\"../../components/drawing\"),s=t(\"../../lib\"),l=t(\"../contour/make_crossings\"),c=t(\"../contour/find_all_paths\"),u=t(\"../contour/plot\"),f=t(\"../contour/constants\"),h=t(\"../contour/convert_to_constraints\"),p=t(\"../contour/empty_pathinfo\"),d=t(\"../contour/close_boundaries\"),g=t(\"../carpet/lookup_carpetid\"),m=t(\"../carpet/axis_aligned_line\");function v(t,e,r){var n=t.getPointAtLength(e),i=t.getPointAtLength(r),a=i.x-n.x,o=i.y-n.y,s=Math.sqrt(a*a+o*o);return[a/s,o/s]}function y(t){var e=Math.sqrt(t[0]*t[0]+t[1]*t[1]);return[t[0]/e,t[1]/e]}function x(t,e){var r=Math.abs(t[0]*e[0]+t[1]*e[1]);return Math.sqrt(1-r*r)/r}e.exports=function(t,e,r,b){var _=e.xaxis,w=e.yaxis;s.makeTraceGroups(b,r,\"contour\").each((function(r){var b=n.select(this),T=r[0],k=T.trace,A=k._carpetTrace=g(t,k),M=t.calcdata[A.index][0];if(A.visible&&\"legendonly\"!==A.visible){var S=T.a,E=T.b,L=k.contours,C=p(L,e,T),P=\"constraint\"===L.type,I=L._operation,O=P?\"=\"===I?\"lines\":\"fill\":L.coloring,z=[[S[0],E[E.length-1]],[S[S.length-1],E[E.length-1]],[S[S.length-1],E[0]],[S[0],E[0]]];l(C);var D=1e-8*(S[S.length-1]-S[0]),R=1e-8*(E[E.length-1]-E[0]);c(C,D,R);var F,B,N,j,U=C;\"constraint\"===L.type&&(U=h(C,I)),function(t,e){var r,n,i,a,o,s,l,c,u;for(r=0;r=0;j--)F=M.clipsegments[j],B=i([],F.x,_.c2p),N=i([],F.y,w.c2p),B.reverse(),N.reverse(),V.push(a(B,N,F.bicubic));var H=\"M\"+V.join(\"L\")+\"Z\";!function(t,e,r,n,o,l){var c,u,f,h,p=s.ensureSingle(t,\"g\",\"contourbg\").selectAll(\"path\").data(\"fill\"!==l||o?[]:[0]);p.enter().append(\"path\"),p.exit().remove();var d=[];for(h=0;h=0&&(h=L,d=g):Math.abs(f[1]-h[1])=0&&(h=L,d=g):s.log(\"endpt to newendpt is not vert. or horz.\",f,h,L)}if(d>=0)break;y+=S(f,h),f=h}if(d===e.edgepaths.length){s.log(\"unclosed perimeter path\");break}u=d,(b=-1===x.indexOf(u))&&(u=x[0],y+=S(f,h)+\"Z\",f=null)}for(u=0;um&&(n.max=m);n.len=n.max-n.min}(this,r,t,n,c,e.height),!(n.len<(e.width+e.height)*f.LABELMIN)))for(var i=Math.min(Math.ceil(n.len/I),f.LABELMAX),a=0;a0?+p[u]:0),f.push({type:\"Feature\",geometry:{type:\"Point\",coordinates:v},properties:y})}}var b=o.extractOpts(e),_=b.reversescale?o.flipScale(b.colorscale):b.colorscale,w=_[0][1],T=[\"interpolate\",[\"linear\"],[\"heatmap-density\"],0,a.opacity(w)<1?w:a.addOpacity(w,0)];for(u=1;u<_.length;u++)T.push(_[u][0],_[u][1]);var k=[\"interpolate\",[\"linear\"],[\"get\",\"z\"],b.min,0,b.max,1];return i.extendFlat(c.heatmap.paint,{\"heatmap-weight\":d?k:1/(b.max-b.min),\"heatmap-color\":T,\"heatmap-radius\":g?{type:\"identity\",property:\"r\"}:e.radius,\"heatmap-opacity\":e.opacity}),c.geojson={type:\"FeatureCollection\",features:f},c.heatmap.layout.visibility=\"visible\",c}},{\"../../components/color\":366,\"../../components/colorscale\":378,\"../../constants/numerical\":479,\"../../lib\":503,\"../../lib/geojson_utils\":497,\"fast-isnumeric\":190}],765:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../components/colorscale/defaults\"),a=t(\"./attributes\");e.exports=function(t,e,r,o){function s(r,i){return n.coerce(t,e,a,r,i)}var l=s(\"lon\")||[],c=s(\"lat\")||[],u=Math.min(l.length,c.length);u?(e._length=u,s(\"z\"),s(\"radius\"),s(\"below\"),s(\"text\"),s(\"hovertext\"),s(\"hovertemplate\"),i(t,e,o,s,{prefix:\"\",cLetter:\"z\"})):e.visible=!1}},{\"../../components/colorscale/defaults\":376,\"../../lib\":503,\"./attributes\":762}],766:[function(t,e,r){\"use strict\";e.exports=function(t,e){return t.lon=e.lon,t.lat=e.lat,t.z=e.z,t}},{}],767:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/axes\"),i=t(\"../scattermapbox/hover\").hoverPoints,a=t(\"../scattermapbox/hover\").getExtraText;e.exports=function(t,e,r){var o=i(t,e,r);if(o){var s=o[0],l=s.cd,c=l[0].trace,u=l[s.index];if(delete s.color,\"z\"in u){var f=s.subplot.mockAxis;s.z=u.z,s.zLabel=n.tickText(f,f.c2l(u.z),\"hover\").text}return s.extraText=a(c,u,l[0].t.labels),[s]}}},{\"../../plots/cartesian/axes\":554,\"../scattermapbox/hover\":996}],768:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../heatmap/colorbar\"),formatLabels:t(\"../scattermapbox/format_labels\"),calc:t(\"./calc\"),plot:t(\"./plot\"),hoverPoints:t(\"./hover\"),eventData:t(\"./event_data\"),getBelow:function(t,e){for(var r=e.getMapLayers(),n=0;n=0;r--)t.removeLayer(e[r][1])},o.dispose=function(){var t=this.subplot.map;this._removeLayers(),t.removeSource(this.sourceId)},e.exports=function(t,e){var r=e[0].trace,i=new a(t,r.uid),o=i.sourceId,s=n(e),l=i.below=t.belowLookup[\"trace-\"+r.uid];return t.map.addSource(o,{type:\"geojson\",data:s.geojson}),i._addLayers(s,l),i}},{\"../../plots/mapbox/constants\":611,\"./convert\":764}],770:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t,e){for(var r=0;r\"),l.color=function(t,e){var r=t.marker,i=e.mc||r.color,a=e.mlc||r.line.color,o=e.mlw||r.line.width;if(n(i))return i;if(n(a)&&o)return a}(u,h),[l]}}},{\"../../components/color\":366,\"../../lib\":503,\"../bar/hover\":655}],778:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\").supplyDefaults,crossTraceDefaults:t(\"./defaults\").crossTraceDefaults,supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\"),crossTraceCalc:t(\"./cross_trace_calc\"),plot:t(\"./plot\"),style:t(\"./style\").style,hoverPoints:t(\"./hover\"),eventData:t(\"./event_data\"),selectPoints:t(\"../bar/select\"),moduleType:\"trace\",name:\"funnel\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"bar-like\",\"cartesian\",\"svg\",\"oriented\",\"showLegend\",\"zoomScale\"],meta:{}}},{\"../../plots/cartesian\":568,\"../bar/select\":660,\"./attributes\":771,\"./calc\":772,\"./cross_trace_calc\":774,\"./defaults\":775,\"./event_data\":776,\"./hover\":777,\"./layout_attributes\":779,\"./layout_defaults\":780,\"./plot\":781,\"./style\":782}],779:[function(t,e,r){\"use strict\";e.exports={funnelmode:{valType:\"enumerated\",values:[\"stack\",\"group\",\"overlay\"],dflt:\"stack\",editType:\"calc\"},funnelgap:{valType:\"number\",min:0,max:1,editType:\"calc\"},funnelgroupgap:{valType:\"number\",min:0,max:1,dflt:0,editType:\"calc\"}}},{}],780:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e,r){var a=!1;function o(r,a){return n.coerce(t,e,i,r,a)}for(var s=0;s path\").each((function(t){if(!t.isBlank){var e=s.marker;n.select(this).call(a.fill,t.mc||e.color).call(a.stroke,t.mlc||e.line.color).call(i.dashLine,e.line.dash,t.mlw||e.line.width).style(\"opacity\",s.selectedpoints&&!t.selected?o:1)}})),c(r,s,t),r.selectAll(\".regions\").each((function(){n.select(this).selectAll(\"path\").style(\"stroke-width\",0).call(a.fill,s.connector.fillcolor)})),r.selectAll(\".lines\").each((function(){var t=s.connector.line;i.lineGroupStyle(n.select(this).selectAll(\"path\"),t.width,t.color,t.dash)}))}))}}},{\"../../components/color\":366,\"../../components/drawing\":388,\"../../constants/interactions\":478,\"../bar/style\":662,\"../bar/uniform_text\":664,\"@plotly/d3\":58}],783:[function(t,e,r){\"use strict\";var n=t(\"../pie/attributes\"),i=t(\"../../plots/attributes\"),a=t(\"../../plots/domain\").attributes,o=t(\"../../plots/template_attributes\").hovertemplateAttrs,s=t(\"../../plots/template_attributes\").texttemplateAttrs,l=t(\"../../lib/extend\").extendFlat;e.exports={labels:n.labels,label0:n.label0,dlabel:n.dlabel,values:n.values,marker:{colors:n.marker.colors,line:{color:l({},n.marker.line.color,{dflt:null}),width:l({},n.marker.line.width,{dflt:1}),editType:\"calc\"},editType:\"calc\"},text:n.text,hovertext:n.hovertext,scalegroup:l({},n.scalegroup,{}),textinfo:l({},n.textinfo,{flags:[\"label\",\"text\",\"value\",\"percent\"]}),texttemplate:s({editType:\"plot\"},{keys:[\"label\",\"color\",\"value\",\"text\",\"percent\"]}),hoverinfo:l({},i.hoverinfo,{flags:[\"label\",\"text\",\"value\",\"percent\",\"name\"]}),hovertemplate:o({},{keys:[\"label\",\"color\",\"value\",\"text\",\"percent\"]}),textposition:l({},n.textposition,{values:[\"inside\",\"none\"],dflt:\"inside\"}),textfont:n.textfont,insidetextfont:n.insidetextfont,title:{text:n.title.text,font:n.title.font,position:l({},n.title.position,{values:[\"top left\",\"top center\",\"top right\"],dflt:\"top center\"}),editType:\"plot\"},domain:a({name:\"funnelarea\",trace:!0,editType:\"calc\"}),aspectratio:{valType:\"number\",min:0,dflt:1,editType:\"plot\"},baseratio:{valType:\"number\",min:0,max:1,dflt:.333,editType:\"plot\"}}},{\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/domain\":584,\"../../plots/template_attributes\":633,\"../pie/attributes\":900}],784:[function(t,e,r){\"use strict\";var n=t(\"../../plots/plots\");r.name=\"funnelarea\",r.plot=function(t,e,i,a){n.plotBasePlot(r.name,t,e,i,a)},r.clean=function(t,e,i,a){n.cleanBasePlot(r.name,t,e,i,a)}},{\"../../plots/plots\":619}],785:[function(t,e,r){\"use strict\";var n=t(\"../pie/calc\");e.exports={calc:function(t,e){return n.calc(t,e)},crossTraceCalc:function(t){n.crossTraceCalc(t,{type:\"funnelarea\"})}}},{\"../pie/calc\":902}],786:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./attributes\"),a=t(\"../../plots/domain\").defaults,o=t(\"../bar/defaults\").handleText,s=t(\"../pie/defaults\").handleLabelsAndValues;e.exports=function(t,e,r,l){function c(r,a){return n.coerce(t,e,i,r,a)}var u=c(\"labels\"),f=c(\"values\"),h=s(u,f),p=h.len;if(e._hasLabels=h.hasLabels,e._hasValues=h.hasValues,!e._hasLabels&&e._hasValues&&(c(\"label0\"),c(\"dlabel\")),p){e._length=p,c(\"marker.line.width\")&&c(\"marker.line.color\",l.paper_bgcolor),c(\"marker.colors\"),c(\"scalegroup\");var d,g=c(\"text\"),m=c(\"texttemplate\");if(m||(d=c(\"textinfo\",Array.isArray(g)?\"text+percent\":\"percent\")),c(\"hovertext\"),c(\"hovertemplate\"),m||d&&\"none\"!==d){var v=c(\"textposition\");o(t,e,l,c,v,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1})}a(e,l,c),c(\"title.text\")&&(c(\"title.position\"),n.coerceFont(c,\"title.font\",l.font)),c(\"aspectratio\"),c(\"baseratio\")}else e.visible=!1}},{\"../../lib\":503,\"../../plots/domain\":584,\"../bar/defaults\":652,\"../pie/defaults\":903,\"./attributes\":783}],787:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"funnelarea\",basePlotModule:t(\"./base_plot\"),categories:[\"pie-like\",\"funnelarea\",\"showLegend\"],attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\"),supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\").calc,crossTraceCalc:t(\"./calc\").crossTraceCalc,plot:t(\"./plot\"),style:t(\"./style\"),styleOne:t(\"../pie/style_one\"),meta:{}}},{\"../pie/style_one\":911,\"./attributes\":783,\"./base_plot\":784,\"./calc\":785,\"./defaults\":786,\"./layout_attributes\":788,\"./layout_defaults\":789,\"./plot\":790,\"./style\":791}],788:[function(t,e,r){\"use strict\";var n=t(\"../pie/layout_attributes\").hiddenlabels;e.exports={hiddenlabels:n,funnelareacolorway:{valType:\"colorlist\",editType:\"calc\"},extendfunnelareacolors:{valType:\"boolean\",dflt:!0,editType:\"calc\"}}},{\"../pie/layout_attributes\":907}],789:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e){function r(r,a){return n.coerce(t,e,i,r,a)}r(\"hiddenlabels\"),r(\"funnelareacolorway\",e.colorway),r(\"extendfunnelareacolors\")}},{\"../../lib\":503,\"./layout_attributes\":788}],790:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../components/drawing\"),a=t(\"../../lib\"),o=a.strScale,s=a.strTranslate,l=t(\"../../lib/svg_text_utils\"),c=t(\"../bar/plot\").toMoveInsideBar,u=t(\"../bar/uniform_text\"),f=u.recordMinTextSize,h=u.clearMinTextSize,p=t(\"../pie/helpers\"),d=t(\"../pie/plot\"),g=d.attachFxHandlers,m=d.determineInsideTextFont,v=d.layoutAreas,y=d.prerenderTitles,x=d.positionTitleOutside,b=d.formatSliceLabel;function _(t,e){return\"l\"+(e[0]-t[0])+\",\"+(e[1]-t[1])}e.exports=function(t,e){var r=t._fullLayout;h(\"funnelarea\",r),y(e,t),v(e,r._size),a.makeTraceGroups(r._funnelarealayer,e,\"trace\").each((function(e){var u=n.select(this),h=e[0],d=h.trace;!function(t){if(!t.length)return;var e=t[0],r=e.trace,n=r.aspectratio,i=r.baseratio;i>.999&&(i=.999);var a,o=Math.pow(i,2),s=e.vTotal,l=s,c=s*o/(1-o)/s;function u(){var t,e={x:t=Math.sqrt(c),y:-t};return[e.x,e.y]}var f,h,p=[];for(p.push(u()),f=t.length-1;f>-1;f--)if(!(h=t[f]).hidden){var d=h.v/l;c+=d,p.push(u())}var g=1/0,m=-1/0;for(f=0;f-1;f--)if(!(h=t[f]).hidden){var A=p[k+=1][0],M=p[k][1];h.TL=[-A,M],h.TR=[A,M],h.BL=w,h.BR=T,h.pxmid=(S=h.TR,E=h.BR,[.5*(S[0]+E[0]),.5*(S[1]+E[1])]),w=h.TL,T=h.TR}var S,E}(e),u.each((function(){var u=n.select(this).selectAll(\"g.slice\").data(e);u.enter().append(\"g\").classed(\"slice\",!0),u.exit().remove(),u.each((function(o,s){if(o.hidden)n.select(this).selectAll(\"path,g\").remove();else{o.pointNumber=o.i,o.curveNumber=d.index;var u=h.cx,v=h.cy,y=n.select(this),x=y.selectAll(\"path.surface\").data([o]);x.enter().append(\"path\").classed(\"surface\",!0).style({\"pointer-events\":\"all\"}),y.call(g,t,e);var w=\"M\"+(u+o.TR[0])+\",\"+(v+o.TR[1])+_(o.TR,o.BR)+_(o.BR,o.BL)+_(o.BL,o.TL)+\"Z\";x.attr(\"d\",w),b(t,o,h);var T=p.castOption(d.textposition,o.pts),k=y.selectAll(\"g.slicetext\").data(o.text&&\"none\"!==T?[0]:[]);k.enter().append(\"g\").classed(\"slicetext\",!0),k.exit().remove(),k.each((function(){var h=a.ensureSingle(n.select(this),\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),p=a.ensureUniformFontSize(t,m(d,o,r.font));h.text(o.text).attr({class:\"slicetext\",transform:\"\",\"text-anchor\":\"middle\"}).call(i.font,p).call(l.convertToTspans,t);var g,y,x,b=i.bBox(h.node()),_=Math.min(o.BL[1],o.BR[1])+v,w=Math.max(o.TL[1],o.TR[1])+v;y=Math.max(o.TL[0],o.BL[0])+u,x=Math.min(o.TR[0],o.BR[0])+u,(g=c(y,x,_,w,b,{isHorizontal:!0,constrained:!0,angle:0,anchor:\"middle\"})).fontSize=p.size,f(d.type,g,r),e[s].transform=g,h.attr(\"transform\",a.getTextTransform(g))}))}}));var v=n.select(this).selectAll(\"g.titletext\").data(d.title.text?[0]:[]);v.enter().append(\"g\").classed(\"titletext\",!0),v.exit().remove(),v.each((function(){var e=a.ensureSingle(n.select(this),\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),c=d.title.text;d._meta&&(c=a.templateString(c,d._meta)),e.text(c).attr({class:\"titletext\",transform:\"\",\"text-anchor\":\"middle\"}).call(i.font,d.title.font).call(l.convertToTspans,t);var u=x(h,r._size);e.attr(\"transform\",s(u.x,u.y)+o(Math.min(1,u.scale))+s(u.tx,u.ty))}))}))}))}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../bar/plot\":659,\"../bar/uniform_text\":664,\"../pie/helpers\":905,\"../pie/plot\":909,\"@plotly/d3\":58}],791:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../pie/style_one\"),a=t(\"../bar/uniform_text\").resizeText;e.exports=function(t){var e=t._fullLayout._funnelarealayer.selectAll(\".trace\");a(t,e,\"funnelarea\"),e.each((function(t){var e=t[0].trace,r=n.select(this);r.style({opacity:e.opacity}),r.selectAll(\"path.surface\").each((function(t){n.select(this).call(i,t,e)}))}))}},{\"../bar/uniform_text\":664,\"../pie/style_one\":911,\"@plotly/d3\":58}],792:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\"),i=t(\"../../plots/attributes\"),a=t(\"../../plots/font_attributes\"),o=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,s=t(\"../../plots/template_attributes\").hovertemplateAttrs,l=t(\"../../plots/template_attributes\").texttemplateAttrs,c=t(\"../../components/colorscale/attributes\"),u=t(\"../../lib/extend\").extendFlat;e.exports=u({z:{valType:\"data_array\",editType:\"calc\"},x:u({},n.x,{impliedEdits:{xtype:\"array\"}}),x0:u({},n.x0,{impliedEdits:{xtype:\"scaled\"}}),dx:u({},n.dx,{impliedEdits:{xtype:\"scaled\"}}),y:u({},n.y,{impliedEdits:{ytype:\"array\"}}),y0:u({},n.y0,{impliedEdits:{ytype:\"scaled\"}}),dy:u({},n.dy,{impliedEdits:{ytype:\"scaled\"}}),xperiod:u({},n.xperiod,{impliedEdits:{xtype:\"scaled\"}}),yperiod:u({},n.yperiod,{impliedEdits:{ytype:\"scaled\"}}),xperiod0:u({},n.xperiod0,{impliedEdits:{xtype:\"scaled\"}}),yperiod0:u({},n.yperiod0,{impliedEdits:{ytype:\"scaled\"}}),xperiodalignment:u({},n.xperiodalignment,{impliedEdits:{xtype:\"scaled\"}}),yperiodalignment:u({},n.yperiodalignment,{impliedEdits:{ytype:\"scaled\"}}),text:{valType:\"data_array\",editType:\"calc\"},hovertext:{valType:\"data_array\",editType:\"calc\"},transpose:{valType:\"boolean\",dflt:!1,editType:\"calc\"},xtype:{valType:\"enumerated\",values:[\"array\",\"scaled\"],editType:\"calc+clearAxisTypes\"},ytype:{valType:\"enumerated\",values:[\"array\",\"scaled\"],editType:\"calc+clearAxisTypes\"},zsmooth:{valType:\"enumerated\",values:[\"fast\",\"best\",!1],dflt:!1,editType:\"calc\"},hoverongaps:{valType:\"boolean\",dflt:!0,editType:\"none\"},connectgaps:{valType:\"boolean\",editType:\"calc\"},xgap:{valType:\"number\",dflt:0,min:0,editType:\"plot\"},ygap:{valType:\"number\",dflt:0,min:0,editType:\"plot\"},xhoverformat:o(\"x\"),yhoverformat:o(\"y\"),zhoverformat:o(\"z\",1),hovertemplate:s(),texttemplate:l({arrayOk:!1,editType:\"plot\"},{keys:[\"x\",\"y\",\"z\",\"text\"]}),textfont:a({editType:\"plot\",autoSize:!0,autoColor:!0,colorEditType:\"style\"}),showlegend:u({},i.showlegend,{dflt:!1})},{transforms:void 0},c(\"\",{cLetter:\"z\",autoColorDflt:!1}))},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/font_attributes\":585,\"../../plots/template_attributes\":633,\"../scatter/attributes\":926}],793:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\"),a=t(\"../../plots/cartesian/axes\"),o=t(\"../../plots/cartesian/align_period\"),s=t(\"../histogram2d/calc\"),l=t(\"../../components/colorscale/calc\"),c=t(\"./convert_column_xyz\"),u=t(\"./clean_2d_array\"),f=t(\"./interp2d\"),h=t(\"./find_empties\"),p=t(\"./make_bound_array\"),d=t(\"../../constants/numerical\").BADNUM;function g(t){for(var e=[],r=t.length,n=0;nD){O(\"x scale is not linear\");break}}if(x.length&&\"fast\"===P){var R=(x[x.length-1]-x[0])/(x.length-1),F=Math.abs(R/100);for(k=0;kF){O(\"y scale is not linear\");break}}}var B=i.maxRowLength(T),N=\"scaled\"===e.xtype?\"\":r,j=p(e,N,m,v,B,M),U=\"scaled\"===e.ytype?\"\":x,V=p(e,U,b,_,T.length,S);C||(e._extremes[M._id]=a.findExtremes(M,j),e._extremes[S._id]=a.findExtremes(S,V));var H={x:j,y:V,z:T,text:e._text||e.text,hovertext:e._hovertext||e.hovertext};if(e.xperiodalignment&&y&&(H.orig_x=y),e.yperiodalignment&&w&&(H.orig_y=w),N&&N.length===j.length-1&&(H.xCenter=N),U&&U.length===V.length-1&&(H.yCenter=U),L&&(H.xRanges=A.xRanges,H.yRanges=A.yRanges,H.pts=A.pts),E||l(t,e,{vals:T,cLetter:\"z\"}),E&&e.contours&&\"heatmap\"===e.contours.coloring){var q={type:\"contour\"===e.type?\"heatmap\":\"histogram2d\",xcalendar:e.xcalendar,ycalendar:e.ycalendar};H.xfill=p(q,N,m,v,B,M),H.yfill=p(q,U,b,_,T.length,S)}return[H]}},{\"../../components/colorscale/calc\":374,\"../../constants/numerical\":479,\"../../lib\":503,\"../../plots/cartesian/align_period\":551,\"../../plots/cartesian/axes\":554,\"../../registry\":638,\"../histogram2d/calc\":826,\"./clean_2d_array\":794,\"./convert_column_xyz\":796,\"./find_empties\":798,\"./interp2d\":801,\"./make_bound_array\":803}],794:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../lib\"),a=t(\"../../constants/numerical\").BADNUM;e.exports=function(t,e,r,o){var s,l,c,u,f,h;function p(t){if(n(t))return+t}if(e&&e.transpose){for(s=0,f=0;f=0;o--)(s=((f[[(r=(a=h[o])[0])-1,i=a[1]]]||g)[2]+(f[[r+1,i]]||g)[2]+(f[[r,i-1]]||g)[2]+(f[[r,i+1]]||g)[2])/20)&&(l[a]=[r,i,s],h.splice(o,1),c=!0);if(!c)throw\"findEmpties iterated with no new neighbors\";for(a in l)f[a]=l[a],u.push(l[a])}return u.sort((function(t,e){return e[2]-t[2]}))}},{\"../../lib\":503}],799:[function(t,e,r){\"use strict\";var n=t(\"../../components/fx\"),i=t(\"../../lib\"),a=t(\"../../plots/cartesian/axes\"),o=t(\"../../components/colorscale\").extractOpts;e.exports=function(t,e,r,s,l){l||(l={});var c,u,f,h,p=l.isContour,d=t.cd[0],g=d.trace,m=t.xa,v=t.ya,y=d.x,x=d.y,b=d.z,_=d.xCenter,w=d.yCenter,T=d.zmask,k=g.zhoverformat,A=y,M=x;if(!1!==t.index){try{f=Math.round(t.index[1]),h=Math.round(t.index[0])}catch(e){return void i.error(\"Error hovering on heatmap, pointNumber must be [row,col], found:\",t.index)}if(f<0||f>=b[0].length||h<0||h>b.length)return}else{if(n.inbox(e-y[0],e-y[y.length-1],0)>0||n.inbox(r-x[0],r-x[x.length-1],0)>0)return;if(p){var S;for(A=[2*y[0]-y[1]],S=1;Sg&&(v=Math.max(v,Math.abs(t[a][o]-d)/(m-g))))}return v}e.exports=function(t,e){var r,i=1;for(o(t,e),r=0;r.01;r++)i=o(t,e,a(i));return i>.01&&n.log(\"interp2d didn't converge quickly\",i),t}},{\"../../lib\":503}],802:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t,e){t(\"texttemplate\");var r=n.extendFlat({},e.font,{color:\"auto\",size:\"auto\"});n.coerceFont(t,\"textfont\",r)}},{\"../../lib\":503}],803:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\").isArrayOrTypedArray;e.exports=function(t,e,r,a,o,s){var l,c,u,f=[],h=n.traceIs(t,\"contour\"),p=n.traceIs(t,\"histogram\"),d=n.traceIs(t,\"gl2d\");if(i(e)&&e.length>1&&!p&&\"category\"!==s.type){var g=e.length;if(!(g<=o))return h?e.slice(0,o):e.slice(0,o+1);if(h||d)f=e.slice(0,o);else if(1===o)f=[e[0]-.5,e[0]+.5];else{for(f=[1.5*e[0]-.5*e[1]],u=1;u0;)_=w.c2p(R[S]),S--;for(_0;)M=T.c2p(F[S]),S--;if(MGt||Gt>T._length))for(E=Ut;EWt||Wt>w._length)){var Xt=u({x:Yt,y:qt},I,t._fullLayout);Xt.x=Yt,Xt.y=qt;var Zt=P.z[S][E];void 0===Zt?(Xt.z=\"\",Xt.zLabel=\"\"):(Xt.z=Zt,Xt.zLabel=s.tickText(Ft,Zt,\"hover\").text);var Jt=P.text&&P.text[S]&&P.text[S][E];void 0!==Jt&&!1!==Jt||(Jt=\"\"),Xt.text=Jt;var Kt=l.texttemplateString(Dt,Xt,t._fullLayout._d3locale,Xt,I._meta||{});if(Kt){var Qt=Kt.split(\"
\"),$t=Qt.length,te=0;for(L=0;L<$t;L++)te=Math.max(te,Qt[L].length);Ht.push({l:$t,c:te,t:Kt,x:Wt,y:Gt,z:Zt})}}}}var ee=I.textfont,re=ee.family,ne=ee.size,ie=t._fullLayout.font.size;if(!ne||\"auto\"===ne){var ae=1/0,oe=1/0,se=0,le=0;for(L=0;L0&&(a=!0);for(var l=0;la){var o=a-r[t];return r[t]=a,o}}return 0},max:function(t,e,r,i){var a=i[e];if(n(a)){if(a=Number(a),!n(r[t]))return r[t]=a,a;if(r[t]c?t>o?t>1.1*i?i:t>1.1*a?a:o:t>s?s:t>l?l:c:Math.pow(10,Math.floor(Math.log(t)/Math.LN10))}function p(t,e,r,n,a,s){if(n&&t>o){var l=d(e,a,s),c=d(r,a,s),u=t===i?0:1;return l[u]!==c[u]}return Math.floor(r/t)-Math.floor(e/t)>.1}function d(t,e,r){var n=e.c2d(t,i,r).split(\"-\");return\"\"===n[0]&&(n.unshift(),n[0]=\"-\"+n[0]),n}e.exports=function(t,e,r,n,a){var s,l,c=-1.1*e,h=-.1*e,p=t-h,d=r[0],g=r[1],m=Math.min(f(d+h,d+p,n,a),f(g+h,g+p,n,a)),v=Math.min(f(d+c,d+h,n,a),f(g+c,g+h,n,a));if(m>v&&vo){var y=s===i?1:6,x=s===i?\"M12\":\"M1\";return function(e,r){var o=n.c2d(e,i,a),s=o.indexOf(\"-\",y);s>0&&(o=o.substr(0,s));var c=n.d2c(o,0,a);if(cr.r2l(B)&&(j=o.tickIncrement(j,b.size,!0,p)),z.start=r.l2r(j),F||i.nestedProperty(e,v+\".start\").set(z.start)}var U=b.end,V=r.r2l(O.end),H=void 0!==V;if((b.endFound||H)&&V!==r.r2l(U)){var q=H?V:i.aggNums(Math.max,null,d);z.end=r.l2r(q),H||i.nestedProperty(e,v+\".start\").set(z.end)}var G=\"autobin\"+s;return!1===e._input[G]&&(e._input[v]=i.extendFlat({},e[v]||{}),delete e._input[G],delete e[G]),[z,d]}e.exports={calc:function(t,e){var r,a,p,d,g=[],m=[],v=\"h\"===e.orientation,y=o.getFromId(t,v?e.yaxis:e.xaxis),x=v?\"y\":\"x\",b={x:\"y\",y:\"x\"}[x],_=e[x+\"calendar\"],w=e.cumulative,T=h(t,e,y,x),k=T[0],A=T[1],M=\"string\"==typeof k.size,S=[],E=M?S:k,L=[],C=[],P=[],I=0,O=e.histnorm,z=e.histfunc,D=-1!==O.indexOf(\"density\");w.enabled&&D&&(O=O.replace(/ ?density$/,\"\"),D=!1);var R,F=\"max\"===z||\"min\"===z?null:0,B=l.count,N=c[O],j=!1,U=function(t){return y.r2c(t,0,_)};for(i.isArrayOrTypedArray(e[b])&&\"count\"!==z&&(R=e[b],j=\"avg\"===z,B=l[z]),r=U(k.start),p=U(k.end)+(r-o.tickIncrement(r,k.size,!1,_))/1e6;r=0&&d=0;n--)s(n);else if(\"increasing\"===e){for(n=1;n=0;n--)t[n]+=t[n+1];\"exclude\"===r&&(t.push(0),t.shift())}}(m,w.direction,w.currentbin);var K=Math.min(g.length,m.length),Q=[],$=0,tt=K-1;for(r=0;r=$;r--)if(m[r]){tt=r;break}for(r=$;r<=tt;r++)if(n(g[r])&&n(m[r])){var et={p:g[r],s:m[r],b:0};w.enabled||(et.pts=P[r],Y?et.ph0=et.ph1=P[r].length?A[P[r][0]]:g[r]:(e._computePh=!0,et.ph0=q(S[r]),et.ph1=q(S[r+1],!0))),Q.push(et)}return 1===Q.length&&(Q[0].width1=o.tickIncrement(Q[0].p,k.size,!1,_)-Q[0].p),s(Q,e),i.isArrayOrTypedArray(e.selectedpoints)&&i.tagSelected(Q,e,Z),Q},calcAllAutoBins:h}},{\"../../lib\":503,\"../../plots/cartesian/axes\":554,\"../../registry\":638,\"../bar/arrays_to_calcdata\":647,\"./average\":813,\"./bin_functions\":815,\"./bin_label_vals\":816,\"./norm_functions\":824,\"fast-isnumeric\":190}],818:[function(t,e,r){\"use strict\";e.exports={eventDataKeys:[\"binNumber\"]}},{}],819:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../plots/cartesian/axis_ids\"),a=t(\"../../registry\").traceIs,o=t(\"../bar/defaults\").handleGroupingDefaults,s=n.nestedProperty,l=t(\"../../plots/cartesian/constraints\").getAxisGroup,c=[{aStr:{x:\"xbins.start\",y:\"ybins.start\"},name:\"start\"},{aStr:{x:\"xbins.end\",y:\"ybins.end\"},name:\"end\"},{aStr:{x:\"xbins.size\",y:\"ybins.size\"},name:\"size\"},{aStr:{x:\"nbinsx\",y:\"nbinsy\"},name:\"nbins\"}],u=[\"x\",\"y\"];e.exports=function(t,e){var r,f,h,p,d,g,m,v=e._histogramBinOpts={},y=[],x={},b=[];function _(t,e){return n.coerce(r._input,r,r._module.attributes,t,e)}function w(t){return\"v\"===t.orientation?\"x\":\"y\"}function T(t,r,a){var o=t.uid+\"__\"+a;r||(r=o);var s=function(t,r){return i.getFromTrace({_fullLayout:e},t,r).type}(t,a),l=t[a+\"calendar\"]||\"\",c=v[r],u=!0;c&&(s===c.axType&&l===c.calendar?(u=!1,c.traces.push(t),c.dirs.push(a)):(r=o,s!==c.axType&&n.warn([\"Attempted to group the bins of trace\",t.index,\"set on a\",\"type:\"+s,\"axis\",\"with bins on\",\"type:\"+c.axType,\"axis.\"].join(\" \")),l!==c.calendar&&n.warn([\"Attempted to group the bins of trace\",t.index,\"set with a\",l,\"calendar\",\"with bins\",c.calendar?\"on a \"+c.calendar+\" calendar\":\"w/o a set calendar\"].join(\" \")))),u&&(v[r]={traces:[t],dirs:[a],axType:s,calendar:t[a+\"calendar\"]||\"\"}),t[\"_\"+a+\"bingroup\"]=r}for(d=0;dS&&T.splice(S,T.length-S),M.length>S&&M.splice(S,M.length-S);var E=[],L=[],C=[],P=\"string\"==typeof w.size,I=\"string\"==typeof A.size,O=[],z=[],D=P?O:w,R=I?z:A,F=0,B=[],N=[],j=e.histnorm,U=e.histfunc,V=-1!==j.indexOf(\"density\"),H=\"max\"===U||\"min\"===U?null:0,q=a.count,G=o[j],Y=!1,W=[],X=[],Z=\"z\"in e?e.z:\"marker\"in e&&Array.isArray(e.marker.color)?e.marker.color:\"\";Z&&\"count\"!==U&&(Y=\"avg\"===U,q=a[U]);var J=w.size,K=x(w.start),Q=x(w.end)+(K-i.tickIncrement(K,J,!1,v))/1e6;for(r=K;r=0&&p=0&&d-1,flipY:E.tiling.flip.indexOf(\"y\")>-1,orientation:E.tiling.orientation,pad:{inner:E.tiling.pad},maxDepth:E._maxDepth}).descendants(),O=1/0,z=-1/0;I.forEach((function(t){var e=t.depth;e>=E._maxDepth?(t.x0=t.x1=(t.x0+t.x1)/2,t.y0=t.y1=(t.y0+t.y1)/2):(O=Math.min(O,e),z=Math.max(z,e))})),p=p.data(I,u.getPtId),E._maxVisibleLayers=isFinite(z)?z-O+1:0,p.enter().append(\"g\").classed(\"slice\",!0),T(p,!1,{},[g,m],x),p.order();var D=null;if(w&&M){var R=u.getPtId(M);p.each((function(t){null===D&&u.getPtId(t)===R&&(D={x0:t.x0,x1:t.x1,y0:t.y0,y1:t.y1})}))}var F=function(){return D||{x0:0,x1:g,y0:0,y1:m}},B=p;return w&&(B=B.transition().each(\"end\",(function(){var e=n.select(this);u.setSliceCursor(e,t,{hideOnRoot:!0,hideOnLeaves:!1,isTransitioning:!1})}))),B.each((function(s){s._x0=v(s.x0),s._x1=v(s.x1),s._y0=y(s.y0),s._y1=y(s.y1),s._hoverX=v(s.x1-E.tiling.pad),s._hoverY=y(P?s.y1-E.tiling.pad/2:s.y0+E.tiling.pad/2);var p=n.select(this),d=i.ensureSingle(p,\"path\",\"surface\",(function(t){t.style(\"pointer-events\",\"all\")}));w?d.transition().attrTween(\"d\",(function(t){var e=k(t,!1,F(),[g,m],{orientation:E.tiling.orientation,flipX:E.tiling.flip.indexOf(\"x\")>-1,flipY:E.tiling.flip.indexOf(\"y\")>-1});return function(t){return x(e(t))}})):d.attr(\"d\",x),p.call(f,r,t,e,{styleOne:l,eventDataKeys:c.eventDataKeys,transitionTime:c.CLICK_TRANSITION_TIME,transitionEasing:c.CLICK_TRANSITION_EASING}).call(u.setSliceCursor,t,{isTransitioning:t._transitioning}),d.call(l,s,E,{hovered:!1}),s.x0===s.x1||s.y0===s.y1?s._text=\"\":s._text=h(s,r,E,e,S)||\"\";var T=i.ensureSingle(p,\"g\",\"slicetext\"),M=i.ensureSingle(T,\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),I=i.ensureUniformFontSize(t,u.determineTextFont(E,s,S.font));M.text(s._text||\" \").classed(\"slicetext\",!0).attr(\"text-anchor\",C?\"end\":L?\"start\":\"middle\").call(a.font,I).call(o.convertToTspans,t),s.textBB=a.bBox(M.node()),s.transform=b(s,{fontSize:I.size}),s.transform.fontSize=I.size,w?M.transition().attrTween(\"transform\",(function(t){var e=A(t,!1,F(),[g,m]);return function(t){return _(e(t))}})):M.attr(\"transform\",_(s))})),D}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../sunburst/fx\":1050,\"../sunburst/helpers\":1051,\"../sunburst/plot\":1055,\"../treemap/constants\":1074,\"./partition\":842,\"./style\":844,\"@plotly/d3\":58}],839:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"icicle\",basePlotModule:t(\"./base_plot\"),categories:[],animatable:!0,attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\"),supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\").calc,crossTraceCalc:t(\"./calc\").crossTraceCalc,plot:t(\"./plot\"),style:t(\"./style\").style,colorbar:t(\"../scatter/marker_colorbar\"),meta:{}}},{\"../scatter/marker_colorbar\":944,\"./attributes\":834,\"./base_plot\":835,\"./calc\":836,\"./defaults\":837,\"./layout_attributes\":840,\"./layout_defaults\":841,\"./plot\":843,\"./style\":844}],840:[function(t,e,r){\"use strict\";e.exports={iciclecolorway:{valType:\"colorlist\",editType:\"calc\"},extendiciclecolors:{valType:\"boolean\",dflt:!0,editType:\"calc\"}}},{}],841:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e){function r(r,a){return n.coerce(t,e,i,r,a)}r(\"iciclecolorway\",e.colorway),r(\"extendiciclecolors\")}},{\"../../lib\":503,\"./layout_attributes\":840}],842:[function(t,e,r){\"use strict\";var n=t(\"d3-hierarchy\"),i=t(\"../treemap/flip_tree\");e.exports=function(t,e,r){var a=r.flipX,o=r.flipY,s=\"h\"===r.orientation,l=r.maxDepth,c=e[0],u=e[1];l&&(c=(t.height+1)*e[0]/Math.min(t.height+1,l),u=(t.height+1)*e[1]/Math.min(t.height+1,l));var f=n.partition().padding(r.pad.inner).size(s?[e[1],c]:[e[0],u])(t);return(s||a||o)&&i(f,e,{swapXY:s,flipX:a,flipY:o}),f}},{\"../treemap/flip_tree\":1079,\"d3-hierarchy\":115}],843:[function(t,e,r){\"use strict\";var n=t(\"../treemap/draw\"),i=t(\"./draw_descendants\");e.exports=function(t,e,r,a){return n(t,e,r,a,{type:\"icicle\",drawDescendants:i})}},{\"../treemap/draw\":1076,\"./draw_descendants\":838}],844:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../components/color\"),a=t(\"../../lib\"),o=t(\"../bar/uniform_text\").resizeText;function s(t,e,r){var n=e.data.data,o=!e.children,s=n.i,l=a.castOption(r,s,\"marker.line.color\")||i.defaultLine,c=a.castOption(r,s,\"marker.line.width\")||0;t.style(\"stroke-width\",c).call(i.fill,n.color).call(i.stroke,l).style(\"opacity\",o?r.leaf.opacity:null)}e.exports={style:function(t){var e=t._fullLayout._iciclelayer.selectAll(\".trace\");o(t,e,\"icicle\"),e.each((function(t){var e=n.select(this),r=t[0].trace;e.style(\"opacity\",r.opacity),e.selectAll(\"path.surface\").each((function(t){n.select(this).call(s,t,r)}))}))},styleOne:s}},{\"../../components/color\":366,\"../../lib\":503,\"../bar/uniform_text\":664,\"@plotly/d3\":58}],845:[function(t,e,r){\"use strict\";for(var n=t(\"../../plots/attributes\"),i=t(\"../../plots/template_attributes\").hovertemplateAttrs,a=t(\"../../lib/extend\").extendFlat,o=t(\"./constants\").colormodel,s=[\"rgb\",\"rgba\",\"rgba256\",\"hsl\",\"hsla\"],l=[],c=[],u=0;u0||n.inbox(r-o.y0,r-(o.y0+o.h*s.dy),0)>0)){var u,f=Math.floor((e-o.x0)/s.dx),h=Math.floor(Math.abs(r-o.y0)/s.dy);if(s._hasZ?u=o.z[h][f]:s._hasSource&&(u=s._canvas.el.getContext(\"2d\").getImageData(f,h,1,1).data),u){var p,d=o.hi||s.hoverinfo;if(d){var g=d.split(\"+\");-1!==g.indexOf(\"all\")&&(g=[\"color\"]),-1!==g.indexOf(\"color\")&&(p=!0)}var m,v=a.colormodel[s.colormodel],y=v.colormodel||s.colormodel,x=y.length,b=s._scaler(u),_=v.suffix,w=[];(s.hovertemplate||p)&&(w.push(\"[\"+[b[0]+_[0],b[1]+_[1],b[2]+_[2]].join(\", \")),4===x&&w.push(\", \"+b[3]+_[3]),w.push(\"]\"),w=w.join(\"\"),t.extraText=y.toUpperCase()+\": \"+w),Array.isArray(s.hovertext)&&Array.isArray(s.hovertext[h])?m=s.hovertext[h][f]:Array.isArray(s.text)&&Array.isArray(s.text[h])&&(m=s.text[h][f]);var T=c.c2p(o.y0+(h+.5)*s.dy),k=o.x0+(f+.5)*s.dx,A=o.y0+(h+.5)*s.dy,M=\"[\"+u.slice(0,s.colormodel.length).join(\", \")+\"]\";return[i.extendFlat(t,{index:[h,f],x0:l.c2p(o.x0+f*s.dx),x1:l.c2p(o.x0+(f+1)*s.dx),y0:T,y1:T,color:b,xVal:k,xLabelVal:k,yVal:A,yLabelVal:A,zLabelVal:M,text:m,hovertemplateLabels:{zLabel:M,colorLabel:w,\"color[0]Label\":b[0]+_[0],\"color[1]Label\":b[1]+_[1],\"color[2]Label\":b[2]+_[2],\"color[3]Label\":b[3]+_[3]}})]}}}},{\"../../components/fx\":406,\"../../lib\":503,\"./constants\":847}],852:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),calc:t(\"./calc\"),plot:t(\"./plot\"),style:t(\"./style\"),hoverPoints:t(\"./hover\"),eventData:t(\"./event_data\"),moduleType:\"trace\",name:\"image\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"cartesian\",\"svg\",\"2dMap\",\"noSortingByValue\"],animatable:!1,meta:{}}},{\"../../plots/cartesian\":568,\"./attributes\":845,\"./calc\":846,\"./defaults\":848,\"./event_data\":849,\"./hover\":851,\"./plot\":853,\"./style\":854}],853:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=i.strTranslate,o=t(\"../../constants/xmlns_namespaces\"),s=t(\"./constants\"),l=i.isIOS()||i.isSafari()||i.isIE();e.exports=function(t,e,r,c){var u=e.xaxis,f=e.yaxis,h=!(l||t._context._exportedPlot);i.makeTraceGroups(c,r,\"im\").each((function(e){var r=n.select(this),l=e[0],c=l.trace,p=(\"fast\"===c.zsmooth||!1===c.zsmooth&&h)&&!c._hasZ&&c._hasSource&&\"linear\"===u.type&&\"linear\"===f.type;c._realImage=p;var d,g,m,v,y,x,b=l.z,_=l.x0,w=l.y0,T=l.w,k=l.h,A=c.dx,M=c.dy;for(x=0;void 0===d&&x0;)g=u.c2p(_+x*A),x--;for(x=0;void 0===v&&x0;)y=f.c2p(w+x*M),x--;if(gI[0];if(O||z){var D=d+S/2,R=v+E/2;C+=\"transform:\"+a(D+\"px\",R+\"px\")+\"scale(\"+(O?-1:1)+\",\"+(z?-1:1)+\")\"+a(-D+\"px\",-R+\"px\")+\";\"}}L.attr(\"style\",C);var F=new Promise((function(t){if(c._hasZ)t();else if(c._hasSource)if(c._canvas&&c._canvas.el.width===T&&c._canvas.el.height===k&&c._canvas.source===c.source)t();else{var e=document.createElement(\"canvas\");e.width=T,e.height=k;var r=e.getContext(\"2d\");c._image=c._image||new Image;var n=c._image;n.onload=function(){r.drawImage(n,0,0),c._canvas={el:e,source:c.source},t()},n.setAttribute(\"src\",c.source)}})).then((function(){var t;if(c._hasZ)t=B((function(t,e){return b[e][t]})).toDataURL(\"image/png\");else if(c._hasSource)if(p)t=c.source;else{var e=c._canvas.el.getContext(\"2d\").getImageData(0,0,T,k).data;t=B((function(t,r){var n=4*(r*T+t);return[e[n],e[n+1],e[n+2],e[n+3]]})).toDataURL(\"image/png\")}L.attr({\"xlink:href\":t,height:E,width:S,x:d,y:v})}));t._promises.push(F)}function B(t){var e=document.createElement(\"canvas\");e.width=S,e.height=E;var r,n=e.getContext(\"2d\"),a=function(t){return i.constrain(Math.round(u.c2p(_+t*A)-d),0,S)},o=function(t){return i.constrain(Math.round(f.c2p(w+t*M)-v),0,E)},h=s.colormodel[c.colormodel],p=h.colormodel||c.colormodel,g=h.fmt;for(x=0;x0}function T(t){t.each((function(t){y.stroke(n.select(this),t.line.color)})).each((function(t){y.fill(n.select(this),t.color)})).style(\"stroke-width\",(function(t){return t.line.width}))}function k(t,e,r){var n=t._fullLayout,i=o.extendFlat({type:\"linear\",ticks:\"outside\",range:r,showline:!0},e),a={type:\"linear\",_id:\"x\"+e._id},s={letter:\"x\",font:n.font,noHover:!0,noTickson:!0};function l(t,e){return o.coerce(i,a,v,t,e)}return g(i,a,l,s,n),m(i,a,l,s),a}function A(t,e,r){return[Math.min(e/t.width,r/t.height),t,e+\"x\"+r]}function M(t,e,r,i){var a=document.createElementNS(\"http://www.w3.org/2000/svg\",\"text\"),o=n.select(a);return o.text(t).attr(\"x\",0).attr(\"y\",0).attr(\"text-anchor\",r).attr(\"data-unformatted\",t).call(p.convertToTspans,i).call(f.font,e),f.bBox(o.node())}function S(t,e,r,n,i,a){var s=\"_cache\"+e;t[s]&&t[s].key===i||(t[s]={key:i,value:r});var l=o.aggNums(a,null,[t[s].value,n],2);return t[s].value=l,l}e.exports=function(t,e,r,g){var m,v=t._fullLayout;w(r)&&g&&(m=g()),o.makeTraceGroups(v._indicatorlayer,e,\"trace\").each((function(e){var g,E,L,C,P,I=e[0].trace,O=n.select(this),z=I._hasGauge,D=I._isAngular,R=I._isBullet,F=I.domain,B={w:v._size.w*(F.x[1]-F.x[0]),h:v._size.h*(F.y[1]-F.y[0]),l:v._size.l+v._size.w*F.x[0],r:v._size.r+v._size.w*(1-F.x[1]),t:v._size.t+v._size.h*(1-F.y[1]),b:v._size.b+v._size.h*F.y[0]},N=B.l+B.w/2,j=B.t+B.h/2,U=Math.min(B.w/2,B.h),V=h.innerRadius*U,H=I.align||\"center\";if(E=j,z){if(D&&(g=N,E=j+U/2,L=function(t){return function(t,e){var r=Math.sqrt(t.width/2*(t.width/2)+t.height*t.height);return[e/r,t,e]}(t,.9*V)}),R){var q=h.bulletPadding,G=1-h.bulletNumberDomainSize+q;g=B.l+(G+(1-G)*b[H])*B.w,L=function(t){return A(t,(h.bulletNumberDomainSize-q)*B.w,B.h)}}}else g=B.l+b[H]*B.w,L=function(t){return A(t,B.w,B.h)};!function(t,e,r,i){var c,u,h,g=r[0].trace,m=i.numbersX,v=i.numbersY,T=g.align||\"center\",A=x[T],E=i.transitionOpts,L=i.onComplete,C=o.ensureSingle(e,\"g\",\"numbers\"),P=[];g._hasNumber&&P.push(\"number\");g._hasDelta&&(P.push(\"delta\"),\"left\"===g.delta.position&&P.reverse());var I=C.selectAll(\"text\").data(P);function O(e,r,n,i){if(!e.match(\"s\")||n>=0==i>=0||r(n).slice(-1).match(_)||r(i).slice(-1).match(_))return r;var a=e.slice().replace(\"s\",\"f\").replace(/\\d+/,(function(t){return parseInt(t)-1})),o=k(t,{tickformat:a});return function(t){return Math.abs(t)<1?d.tickText(o,t).text:r(t)}}I.enter().append(\"text\"),I.attr(\"text-anchor\",(function(){return A})).attr(\"class\",(function(t){return t})).attr(\"x\",null).attr(\"y\",null).attr(\"dx\",null).attr(\"dy\",null),I.exit().remove();var z,D=g.mode+g.align;g._hasDelta&&(z=function(){var e=k(t,{tickformat:g.delta.valueformat},g._range);e.setScale(),d.prepTicks(e);var i=function(t){return d.tickText(e,t).text},o=function(t){return g.delta.relative?t.relativeDelta:t.delta},s=function(t,e){return 0===t||\"number\"!=typeof t||isNaN(t)?\"-\":(t>0?g.delta.increasing.symbol:g.delta.decreasing.symbol)+e(t)},l=function(t){return t.delta>=0?g.delta.increasing.color:g.delta.decreasing.color};void 0===g._deltaLastValue&&(g._deltaLastValue=o(r[0]));var c=C.select(\"text.delta\");function h(){c.text(s(o(r[0]),i)).call(y.fill,l(r[0])).call(p.convertToTspans,t)}return c.call(f.font,g.delta.font).call(y.fill,l({delta:g._deltaLastValue})),w(E)?c.transition().duration(E.duration).ease(E.easing).tween(\"text\",(function(){var t=n.select(this),e=o(r[0]),c=g._deltaLastValue,u=O(g.delta.valueformat,i,c,e),f=a(c,e);return g._deltaLastValue=e,function(e){t.text(s(f(e),u)),t.call(y.fill,l({delta:f(e)}))}})).each(\"end\",(function(){h(),L&&L()})).each(\"interrupt\",(function(){h(),L&&L()})):h(),u=M(s(o(r[0]),i),g.delta.font,A,t),c}(),D+=g.delta.position+g.delta.font.size+g.delta.font.family+g.delta.valueformat,D+=g.delta.increasing.symbol+g.delta.decreasing.symbol,h=u);g._hasNumber&&(!function(){var e=k(t,{tickformat:g.number.valueformat},g._range);e.setScale(),d.prepTicks(e);var i=function(t){return d.tickText(e,t).text},o=g.number.suffix,s=g.number.prefix,l=C.select(\"text.number\");function u(){var e=\"number\"==typeof r[0].y?s+i(r[0].y)+o:\"-\";l.text(e).call(f.font,g.number.font).call(p.convertToTspans,t)}w(E)?l.transition().duration(E.duration).ease(E.easing).each(\"end\",(function(){u(),L&&L()})).each(\"interrupt\",(function(){u(),L&&L()})).attrTween(\"text\",(function(){var t=n.select(this),e=a(r[0].lastY,r[0].y);g._lastValue=r[0].y;var l=O(g.number.valueformat,i,r[0].lastY,r[0].y);return function(r){t.text(s+l(e(r))+o)}})):u(),c=M(s+i(r[0].y)+o,g.number.font,A,t)}(),D+=g.number.font.size+g.number.font.family+g.number.valueformat+g.number.suffix+g.number.prefix,h=c);if(g._hasDelta&&g._hasNumber){var R,F,B=[(c.left+c.right)/2,(c.top+c.bottom)/2],N=[(u.left+u.right)/2,(u.top+u.bottom)/2],j=.75*g.delta.font.size;\"left\"===g.delta.position&&(R=S(g,\"deltaPos\",0,-1*(c.width*b[g.align]+u.width*(1-b[g.align])+j),D,Math.min),F=B[1]-N[1],h={width:c.width+u.width+j,height:Math.max(c.height,u.height),left:u.left+R,right:c.right,top:Math.min(c.top,u.top+F),bottom:Math.max(c.bottom,u.bottom+F)}),\"right\"===g.delta.position&&(R=S(g,\"deltaPos\",0,c.width*(1-b[g.align])+u.width*b[g.align]+j,D,Math.max),F=B[1]-N[1],h={width:c.width+u.width+j,height:Math.max(c.height,u.height),left:c.left,right:u.right+R,top:Math.min(c.top,u.top+F),bottom:Math.max(c.bottom,u.bottom+F)}),\"bottom\"===g.delta.position&&(R=null,F=u.height,h={width:Math.max(c.width,u.width),height:c.height+u.height,left:Math.min(c.left,u.left),right:Math.max(c.right,u.right),top:c.bottom-c.height,bottom:c.bottom+u.height}),\"top\"===g.delta.position&&(R=null,F=c.top,h={width:Math.max(c.width,u.width),height:c.height+u.height,left:Math.min(c.left,u.left),right:Math.max(c.right,u.right),top:c.bottom-c.height-u.height,bottom:c.bottom}),z.attr({dx:R,dy:F})}(g._hasNumber||g._hasDelta)&&C.attr(\"transform\",(function(){var t=i.numbersScaler(h);D+=t[2];var e,r=S(g,\"numbersScale\",1,t[0],D,Math.min);g._scaleNumbers||(r=1),e=g._isAngular?v-r*h.bottom:v-r*(h.top+h.bottom)/2,g._numbersTop=r*h.top+e;var n=h[T];\"center\"===T&&(n=(h.left+h.right)/2);var a=m-r*n;return a=S(g,\"numbersTranslate\",0,a,D,Math.max),l(a,e)+s(r)}))}(t,O,e,{numbersX:g,numbersY:E,numbersScaler:L,transitionOpts:r,onComplete:m}),z&&(C={range:I.gauge.axis.range,color:I.gauge.bgcolor,line:{color:I.gauge.bordercolor,width:0},thickness:1},P={range:I.gauge.axis.range,color:\"rgba(0, 0, 0, 0)\",line:{color:I.gauge.bordercolor,width:I.gauge.borderwidth},thickness:1});var Y=O.selectAll(\"g.angular\").data(D?e:[]);Y.exit().remove();var W=O.selectAll(\"g.angularaxis\").data(D?e:[]);W.exit().remove(),D&&function(t,e,r,a){var o,s,f,h,p=r[0].trace,g=a.size,m=a.radius,v=a.innerRadius,y=a.gaugeBg,x=a.gaugeOutline,b=[g.l+g.w/2,g.t+g.h/2+m/2],_=a.gauge,A=a.layer,M=a.transitionOpts,S=a.onComplete,E=Math.PI/2;function L(t){var e=p.gauge.axis.range[0],r=(t-e)/(p.gauge.axis.range[1]-e)*Math.PI-E;return r<-E?-E:r>E?E:r}function C(t){return n.svg.arc().innerRadius((v+m)/2-t/2*(m-v)).outerRadius((v+m)/2+t/2*(m-v)).startAngle(-E)}function P(t){t.attr(\"d\",(function(t){return C(t.thickness).startAngle(L(t.range[0])).endAngle(L(t.range[1]))()}))}_.enter().append(\"g\").classed(\"angular\",!0),_.attr(\"transform\",l(b[0],b[1])),A.enter().append(\"g\").classed(\"angularaxis\",!0).classed(\"crisp\",!0),A.selectAll(\"g.xangularaxistick,path,text\").remove(),(o=k(t,p.gauge.axis)).type=\"linear\",o.range=p.gauge.axis.range,o._id=\"xangularaxis\",o.ticklabeloverflow=\"allow\",o.setScale();var I=function(t){return(o.range[0]-t.x)/(o.range[1]-o.range[0])*Math.PI+Math.PI},O={},z=d.makeLabelFns(o,0).labelStandoff;O.xFn=function(t){var e=I(t);return Math.cos(e)*z},O.yFn=function(t){var e=I(t),r=Math.sin(e)>0?.2:1;return-Math.sin(e)*(z+t.fontSize*r)+Math.abs(Math.cos(e))*(t.fontSize*u)},O.anchorFn=function(t){var e=I(t),r=Math.cos(e);return Math.abs(r)<.1?\"middle\":r>0?\"start\":\"end\"},O.heightFn=function(t,e,r){var n=I(t);return-.5*(1+Math.sin(n))*r};var D=function(t){return l(b[0]+m*Math.cos(t),b[1]-m*Math.sin(t))};f=function(t){return D(I(t))};if(s=d.calcTicks(o),h=d.getTickSigns(o)[2],o.visible){h=\"inside\"===o.ticks?-1:1;var R=(o.linewidth||1)/2;d.drawTicks(t,o,{vals:s,layer:A,path:\"M\"+h*R+\",0h\"+h*o.ticklen,transFn:function(t){var e=I(t);return D(e)+\"rotate(\"+-c(e)+\")\"}}),d.drawLabels(t,o,{vals:s,layer:A,transFn:f,labelFns:O})}var F=[y].concat(p.gauge.steps),B=_.selectAll(\"g.bg-arc\").data(F);B.enter().append(\"g\").classed(\"bg-arc\",!0).append(\"path\"),B.select(\"path\").call(P).call(T),B.exit().remove();var N=C(p.gauge.bar.thickness),j=_.selectAll(\"g.value-arc\").data([p.gauge.bar]);j.enter().append(\"g\").classed(\"value-arc\",!0).append(\"path\");var U=j.select(\"path\");w(M)?(U.transition().duration(M.duration).ease(M.easing).each(\"end\",(function(){S&&S()})).each(\"interrupt\",(function(){S&&S()})).attrTween(\"d\",(V=N,H=L(r[0].lastY),q=L(r[0].y),function(){var t=i(H,q);return function(e){return V.endAngle(t(e))()}})),p._lastValue=r[0].y):U.attr(\"d\",\"number\"==typeof r[0].y?N.endAngle(L(r[0].y)):\"M0,0Z\");var V,H,q;U.call(T),j.exit().remove(),F=[];var G=p.gauge.threshold.value;(G||0===G)&&F.push({range:[G,G],color:p.gauge.threshold.color,line:{color:p.gauge.threshold.line.color,width:p.gauge.threshold.line.width},thickness:p.gauge.threshold.thickness});var Y=_.selectAll(\"g.threshold-arc\").data(F);Y.enter().append(\"g\").classed(\"threshold-arc\",!0).append(\"path\"),Y.select(\"path\").call(P).call(T),Y.exit().remove();var W=_.selectAll(\"g.gauge-outline\").data([x]);W.enter().append(\"g\").classed(\"gauge-outline\",!0).append(\"path\"),W.select(\"path\").call(P).call(T),W.exit().remove()}(t,0,e,{radius:U,innerRadius:V,gauge:Y,layer:W,size:B,gaugeBg:C,gaugeOutline:P,transitionOpts:r,onComplete:m});var X=O.selectAll(\"g.bullet\").data(R?e:[]);X.exit().remove();var Z=O.selectAll(\"g.bulletaxis\").data(R?e:[]);Z.exit().remove(),R&&function(t,e,r,n){var i,a,o,s,c,u=r[0].trace,f=n.gauge,p=n.layer,g=n.gaugeBg,m=n.gaugeOutline,v=n.size,x=u.domain,b=n.transitionOpts,_=n.onComplete;f.enter().append(\"g\").classed(\"bullet\",!0),f.attr(\"transform\",l(v.l,v.t)),p.enter().append(\"g\").classed(\"bulletaxis\",!0).classed(\"crisp\",!0),p.selectAll(\"g.xbulletaxistick,path,text\").remove();var A=v.h,M=u.gauge.bar.thickness*A,S=x.x[0],E=x.x[0]+(x.x[1]-x.x[0])*(u._hasNumber||u._hasDelta?1-h.bulletNumberDomainSize:1);(i=k(t,u.gauge.axis))._id=\"xbulletaxis\",i.domain=[S,E],i.setScale(),a=d.calcTicks(i),o=d.makeTransTickFn(i),s=d.getTickSigns(i)[2],c=v.t+v.h,i.visible&&(d.drawTicks(t,i,{vals:\"inside\"===i.ticks?d.clipEnds(i,a):a,layer:p,path:d.makeTickPath(i,c,s),transFn:o}),d.drawLabels(t,i,{vals:a,layer:p,transFn:o,labelFns:d.makeLabelFns(i,c)}));function L(t){t.attr(\"width\",(function(t){return Math.max(0,i.c2p(t.range[1])-i.c2p(t.range[0]))})).attr(\"x\",(function(t){return i.c2p(t.range[0])})).attr(\"y\",(function(t){return.5*(1-t.thickness)*A})).attr(\"height\",(function(t){return t.thickness*A}))}var C=[g].concat(u.gauge.steps),P=f.selectAll(\"g.bg-bullet\").data(C);P.enter().append(\"g\").classed(\"bg-bullet\",!0).append(\"rect\"),P.select(\"rect\").call(L).call(T),P.exit().remove();var I=f.selectAll(\"g.value-bullet\").data([u.gauge.bar]);I.enter().append(\"g\").classed(\"value-bullet\",!0).append(\"rect\"),I.select(\"rect\").attr(\"height\",M).attr(\"y\",(A-M)/2).call(T),w(b)?I.select(\"rect\").transition().duration(b.duration).ease(b.easing).each(\"end\",(function(){_&&_()})).each(\"interrupt\",(function(){_&&_()})).attr(\"width\",Math.max(0,i.c2p(Math.min(u.gauge.axis.range[1],r[0].y)))):I.select(\"rect\").attr(\"width\",\"number\"==typeof r[0].y?Math.max(0,i.c2p(Math.min(u.gauge.axis.range[1],r[0].y))):0);I.exit().remove();var O=r.filter((function(){return u.gauge.threshold.value||0===u.gauge.threshold.value})),z=f.selectAll(\"g.threshold-bullet\").data(O);z.enter().append(\"g\").classed(\"threshold-bullet\",!0).append(\"line\"),z.select(\"line\").attr(\"x1\",i.c2p(u.gauge.threshold.value)).attr(\"x2\",i.c2p(u.gauge.threshold.value)).attr(\"y1\",(1-u.gauge.threshold.thickness)/2*A).attr(\"y2\",(1-(1-u.gauge.threshold.thickness)/2)*A).call(y.stroke,u.gauge.threshold.line.color).style(\"stroke-width\",u.gauge.threshold.line.width),z.exit().remove();var D=f.selectAll(\"g.gauge-outline\").data([m]);D.enter().append(\"g\").classed(\"gauge-outline\",!0).append(\"rect\"),D.select(\"rect\").call(L).call(T),D.exit().remove()}(t,0,e,{gauge:X,layer:Z,size:B,gaugeBg:C,gaugeOutline:P,transitionOpts:r,onComplete:m});var J=O.selectAll(\"text.title\").data(e);J.exit().remove(),J.enter().append(\"text\").classed(\"title\",!0),J.attr(\"text-anchor\",(function(){return R?x.right:x[I.title.align]})).text(I.title.text).call(f.font,I.title.font).call(p.convertToTspans,t),J.attr(\"transform\",(function(){var t,e=B.l+B.w*b[I.title.align],r=h.titlePadding,n=f.bBox(J.node());if(z){if(D)if(I.gauge.axis.visible)t=f.bBox(W.node()).top-r-n.bottom;else t=B.t+B.h/2-U/2-n.bottom-r;R&&(t=E-(n.top+n.bottom)/2,e=B.l-h.bulletPadding*B.w)}else t=I._numbersTop-r-n.bottom;return l(e,t)}))}))}},{\"../../components/color\":366,\"../../components/drawing\":388,\"../../constants/alignment\":471,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../../plots/cartesian/axes\":554,\"../../plots/cartesian/axis_defaults\":556,\"../../plots/cartesian/layout_attributes\":569,\"../../plots/cartesian/position_defaults\":572,\"./constants\":858,\"@plotly/d3\":58,\"d3-interpolate\":116}],862:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/attributes\"),i=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,a=t(\"../../plots/template_attributes\").hovertemplateAttrs,o=t(\"../mesh3d/attributes\"),s=t(\"../../plots/attributes\"),l=t(\"../../lib/extend\").extendFlat,c=t(\"../../plot_api/edit_types\").overrideAll;var u=e.exports=c(l({x:{valType:\"data_array\"},y:{valType:\"data_array\"},z:{valType:\"data_array\"},value:{valType:\"data_array\"},isomin:{valType:\"number\"},isomax:{valType:\"number\"},surface:{show:{valType:\"boolean\",dflt:!0},count:{valType:\"integer\",dflt:2,min:1},fill:{valType:\"number\",min:0,max:1,dflt:1},pattern:{valType:\"flaglist\",flags:[\"A\",\"B\",\"C\",\"D\",\"E\"],extras:[\"all\",\"odd\",\"even\"],dflt:\"all\"}},spaceframe:{show:{valType:\"boolean\",dflt:!1},fill:{valType:\"number\",min:0,max:1,dflt:.15}},slices:{x:{show:{valType:\"boolean\",dflt:!1},locations:{valType:\"data_array\",dflt:[]},fill:{valType:\"number\",min:0,max:1,dflt:1}},y:{show:{valType:\"boolean\",dflt:!1},locations:{valType:\"data_array\",dflt:[]},fill:{valType:\"number\",min:0,max:1,dflt:1}},z:{show:{valType:\"boolean\",dflt:!1},locations:{valType:\"data_array\",dflt:[]},fill:{valType:\"number\",min:0,max:1,dflt:1}}},caps:{x:{show:{valType:\"boolean\",dflt:!0},fill:{valType:\"number\",min:0,max:1,dflt:1}},y:{show:{valType:\"boolean\",dflt:!0},fill:{valType:\"number\",min:0,max:1,dflt:1}},z:{show:{valType:\"boolean\",dflt:!0},fill:{valType:\"number\",min:0,max:1,dflt:1}}},text:{valType:\"string\",dflt:\"\",arrayOk:!0},hovertext:{valType:\"string\",dflt:\"\",arrayOk:!0},hovertemplate:a(),xhoverformat:i(\"x\"),yhoverformat:i(\"y\"),zhoverformat:i(\"z\"),valuehoverformat:i(\"value\",1),showlegend:l({},s.showlegend,{dflt:!1})},n(\"\",{colorAttr:\"`value`\",showScaleDflt:!0,editTypeOverride:\"calc\"}),{opacity:o.opacity,lightposition:o.lightposition,lighting:o.lighting,flatshading:o.flatshading,contour:o.contour,hoverinfo:l({},s.hoverinfo)}),\"calc\",\"nested\");u.flatshading.dflt=!0,u.lighting.facenormalsepsilon.dflt=0,u.x.editType=u.y.editType=u.z.editType=u.value.editType=\"calc+clearAxisTypes\",u.transforms=void 0},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plot_api/edit_types\":536,\"../../plots/attributes\":550,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/template_attributes\":633,\"../mesh3d/attributes\":867}],863:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/calc\"),i=t(\"../streamtube/calc\").processGrid,a=t(\"../streamtube/calc\").filter;e.exports=function(t,e){e._len=Math.min(e.x.length,e.y.length,e.z.length,e.value.length),e._x=a(e.x,e._len),e._y=a(e.y,e._len),e._z=a(e.z,e._len),e._value=a(e.value,e._len);var r=i(e);e._gridFill=r.fill,e._Xs=r.Xs,e._Ys=r.Ys,e._Zs=r.Zs,e._len=r.len;for(var o=1/0,s=-1/0,l=0;l0;r--){var n=Math.min(e[r],e[r-1]),i=Math.max(e[r],e[r-1]);if(i>n&&n-1}function R(t,e){return null===t?e:t}function F(e,r,n){C();var i,a,o,l=[r],c=[n];if(s>=1)l=[r],c=[n];else if(s>0){var u=function(t,e){var r=t[0],n=t[1],i=t[2],a=function(t,e,r){for(var n=[],i=0;i-1?n[p]:L(d,g,v);h[p]=x>-1?x:I(d,g,v,R(e,y))}i=h[0],a=h[1],o=h[2],t._meshI.push(i),t._meshJ.push(a),t._meshK.push(o),++m}}function B(t,e,r,n){var i=t[3];in&&(i=n);for(var a=(t[3]-i)/(t[3]-e[3]+1e-9),o=[],s=0;s<4;s++)o[s]=(1-a)*t[s]+a*e[s];return o}function N(t,e,r){return t>=e&&t<=r}function j(t){var e=.001*(E-S);return t>=S-e&&t<=E+e}function U(e){for(var r=[],n=0;n<4;n++){var i=e[n];r.push([t._x[i],t._y[i],t._z[i],t._value[i]])}return r}function V(t,e,r,n,i,a){a||(a=1),r=[-1,-1,-1];var o=!1,s=[N(e[0][3],n,i),N(e[1][3],n,i),N(e[2][3],n,i)];if(!s[0]&&!s[1]&&!s[2])return!1;var l=function(t,e,r){return j(e[0][3])&&j(e[1][3])&&j(e[2][3])?(F(t,e,r),!0):a<3&&V(t,e,r,S,E,++a)};if(s[0]&&s[1]&&s[2])return l(t,e,r)||o;var c=!1;return[[0,1,2],[2,0,1],[1,2,0]].forEach((function(a){if(s[a[0]]&&s[a[1]]&&!s[a[2]]){var u=e[a[0]],f=e[a[1]],h=e[a[2]],p=B(h,u,n,i),d=B(h,f,n,i);o=l(t,[d,p,u],[-1,-1,r[a[0]]])||o,o=l(t,[u,f,d],[r[a[0]],r[a[1]],-1])||o,c=!0}})),c||[[0,1,2],[1,2,0],[2,0,1]].forEach((function(a){if(s[a[0]]&&!s[a[1]]&&!s[a[2]]){var u=e[a[0]],f=e[a[1]],h=e[a[2]],p=B(f,u,n,i),d=B(h,u,n,i);o=l(t,[d,p,u],[-1,-1,r[a[0]]])||o,c=!0}})),o}function H(t,e,r,n){var i=!1,a=U(e),o=[N(a[0][3],r,n),N(a[1][3],r,n),N(a[2][3],r,n),N(a[3][3],r,n)];if(!(o[0]||o[1]||o[2]||o[3]))return i;if(o[0]&&o[1]&&o[2]&&o[3])return g&&(i=function(t,e,r){var n=function(n,i,a){F(t,[e[n],e[i],e[a]],[r[n],r[i],r[a]])};n(0,1,2),n(3,0,1),n(2,3,0),n(1,2,3)}(t,a,e)||i),i;var s=!1;return[[0,1,2,3],[3,0,1,2],[2,3,0,1],[1,2,3,0]].forEach((function(l){if(o[l[0]]&&o[l[1]]&&o[l[2]]&&!o[l[3]]){var c=a[l[0]],u=a[l[1]],f=a[l[2]],h=a[l[3]];if(g)i=F(t,[c,u,f],[e[l[0]],e[l[1]],e[l[2]]])||i;else{var p=B(h,c,r,n),d=B(h,u,r,n),m=B(h,f,r,n);i=F(null,[p,d,m],[-1,-1,-1])||i}s=!0}})),s?i:([[0,1,2,3],[1,2,3,0],[2,3,0,1],[3,0,1,2],[0,2,3,1],[1,3,2,0]].forEach((function(l){if(o[l[0]]&&o[l[1]]&&!o[l[2]]&&!o[l[3]]){var c=a[l[0]],u=a[l[1]],f=a[l[2]],h=a[l[3]],p=B(f,c,r,n),d=B(f,u,r,n),m=B(h,u,r,n),v=B(h,c,r,n);g?(i=F(t,[c,v,p],[e[l[0]],-1,-1])||i,i=F(t,[u,d,m],[e[l[1]],-1,-1])||i):i=function(t,e,r){var n=function(n,i,a){F(t,[e[n],e[i],e[a]],[r[n],r[i],r[a]])};n(0,1,2),n(2,3,0)}(null,[p,d,m,v],[-1,-1,-1,-1])||i,s=!0}})),s||[[0,1,2,3],[1,2,3,0],[2,3,0,1],[3,0,1,2]].forEach((function(l){if(o[l[0]]&&!o[l[1]]&&!o[l[2]]&&!o[l[3]]){var c=a[l[0]],u=a[l[1]],f=a[l[2]],h=a[l[3]],p=B(u,c,r,n),d=B(f,c,r,n),m=B(h,c,r,n);g?(i=F(t,[c,p,d],[e[l[0]],-1,-1])||i,i=F(t,[c,d,m],[e[l[0]],-1,-1])||i,i=F(t,[c,m,p],[e[l[0]],-1,-1])||i):i=F(null,[p,d,m],[-1,-1,-1])||i,s=!0}})),i)}function q(t,e,r,n,i,a,o,s,l,c,u){var f=!1;return d&&(D(t,\"A\")&&(f=H(null,[e,r,n,a],c,u)||f),D(t,\"B\")&&(f=H(null,[r,n,i,l],c,u)||f),D(t,\"C\")&&(f=H(null,[r,a,o,l],c,u)||f),D(t,\"D\")&&(f=H(null,[n,a,s,l],c,u)||f),D(t,\"E\")&&(f=H(null,[r,n,a,l],c,u)||f)),g&&(f=H(t,[r,n,a,l],c,u)||f),f}function G(t,e,r,n,i,a,o,s){return[!0===s[0]||V(t,U([e,r,n]),[e,r,n],a,o),!0===s[1]||V(t,U([n,i,e]),[n,i,e],a,o)]}function Y(t,e,r,n,i,a,o,s,l){return s?G(t,e,r,i,n,a,o,l):G(t,r,i,n,e,a,o,l)}function W(t,e,r,n,i,a,o){var s,l,c,u,f=!1,h=function(){f=V(t,[s,l,c],[-1,-1,-1],i,a)||f,f=V(t,[c,u,s],[-1,-1,-1],i,a)||f},p=o[0],d=o[1],g=o[2];return p&&(s=O(U([k(e,r-0,n-0)])[0],U([k(e-1,r-0,n-0)])[0],p),l=O(U([k(e,r-0,n-1)])[0],U([k(e-1,r-0,n-1)])[0],p),c=O(U([k(e,r-1,n-1)])[0],U([k(e-1,r-1,n-1)])[0],p),u=O(U([k(e,r-1,n-0)])[0],U([k(e-1,r-1,n-0)])[0],p),h()),d&&(s=O(U([k(e-0,r,n-0)])[0],U([k(e-0,r-1,n-0)])[0],d),l=O(U([k(e-0,r,n-1)])[0],U([k(e-0,r-1,n-1)])[0],d),c=O(U([k(e-1,r,n-1)])[0],U([k(e-1,r-1,n-1)])[0],d),u=O(U([k(e-1,r,n-0)])[0],U([k(e-1,r-1,n-0)])[0],d),h()),g&&(s=O(U([k(e-0,r-0,n)])[0],U([k(e-0,r-0,n-1)])[0],g),l=O(U([k(e-0,r-1,n)])[0],U([k(e-0,r-1,n-1)])[0],g),c=O(U([k(e-1,r-1,n)])[0],U([k(e-1,r-1,n-1)])[0],g),u=O(U([k(e-1,r-0,n)])[0],U([k(e-1,r-0,n-1)])[0],g),h()),f}function X(t,e,r,n,i,a,o,s,l,c,u,f){var h=t;return f?(d&&\"even\"===t&&(h=null),q(h,e,r,n,i,a,o,s,l,c,u)):(d&&\"odd\"===t&&(h=null),q(h,l,s,o,a,i,n,r,e,c,u))}function Z(t,e,r,n,i){for(var a=[],o=0,s=0;sMath.abs(d-M)?[A,d]:[d,M];$(e,T[0],T[1])}}var L=[[Math.min(S,M),Math.max(S,M)],[Math.min(A,E),Math.max(A,E)]];[\"x\",\"y\",\"z\"].forEach((function(e){for(var r=[],n=0;n0&&(u.push(p.id),\"x\"===e?f.push([p.distRatio,0,0]):\"y\"===e?f.push([0,p.distRatio,0]):f.push([0,0,p.distRatio]))}else c=nt(1,\"x\"===e?b-1:\"y\"===e?_-1:w-1);u.length>0&&(r[i]=\"x\"===e?tt(null,u,a,o,f,r[i]):\"y\"===e?et(null,u,a,o,f,r[i]):rt(null,u,a,o,f,r[i]),i++),c.length>0&&(r[i]=\"x\"===e?Z(null,c,a,o,r[i]):\"y\"===e?J(null,c,a,o,r[i]):K(null,c,a,o,r[i]),i++)}var d=t.caps[e];d.show&&d.fill&&(z(d.fill),r[i]=\"x\"===e?Z(null,[0,b-1],a,o,r[i]):\"y\"===e?J(null,[0,_-1],a,o,r[i]):K(null,[0,w-1],a,o,r[i]),i++)}})),0===m&&P(),t._meshX=n,t._meshY=i,t._meshZ=a,t._meshIntensity=o,t._Xs=v,t._Ys=y,t._Zs=x}(),t}e.exports={findNearestOnAxis:l,generateIsoMeshes:h,createIsosurfaceTrace:function(t,e){var r=t.glplot.gl,i=n({gl:r}),a=new c(t,i,e.uid);return i._trace=a,a.update(e),t.glplot.add(i),a}}},{\"../../../stackgl_modules\":1120,\"../../components/colorscale\":378,\"../../lib/gl_format_color\":499,\"../../lib/str2rgbarray\":528,\"../../plots/gl3d/zip3\":609}],865:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../registry\"),a=t(\"./attributes\"),o=t(\"../../components/colorscale/defaults\");function s(t,e,r,n,a){var s=a(\"isomin\"),l=a(\"isomax\");null!=l&&null!=s&&s>l&&(e.isomin=null,e.isomax=null);var c=a(\"x\"),u=a(\"y\"),f=a(\"z\"),h=a(\"value\");c&&c.length&&u&&u.length&&f&&f.length&&h&&h.length?(i.getComponentMethod(\"calendars\",\"handleTraceDefaults\")(t,e,[\"x\",\"y\",\"z\"],n),a(\"valuehoverformat\"),[\"x\",\"y\",\"z\"].forEach((function(t){a(t+\"hoverformat\");var e=\"caps.\"+t;a(e+\".show\")&&a(e+\".fill\");var r=\"slices.\"+t;a(r+\".show\")&&(a(r+\".fill\"),a(r+\".locations\"))})),a(\"spaceframe.show\")&&a(\"spaceframe.fill\"),a(\"surface.show\")&&(a(\"surface.count\"),a(\"surface.fill\"),a(\"surface.pattern\")),a(\"contour.show\")&&(a(\"contour.color\"),a(\"contour.width\")),[\"text\",\"hovertext\",\"hovertemplate\",\"lighting.ambient\",\"lighting.diffuse\",\"lighting.specular\",\"lighting.roughness\",\"lighting.fresnel\",\"lighting.vertexnormalsepsilon\",\"lighting.facenormalsepsilon\",\"lightposition.x\",\"lightposition.y\",\"lightposition.z\",\"flatshading\",\"opacity\"].forEach((function(t){a(t)})),o(t,e,n,a,{prefix:\"\",cLetter:\"c\"}),e._length=null):e.visible=!1}e.exports={supplyDefaults:function(t,e,r,i){s(t,e,r,i,(function(r,i){return n.coerce(t,e,a,r,i)}))},supplyIsoDefaults:s}},{\"../../components/colorscale/defaults\":376,\"../../lib\":503,\"../../registry\":638,\"./attributes\":862}],866:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\").supplyDefaults,calc:t(\"./calc\"),colorbar:{min:\"cmin\",max:\"cmax\"},plot:t(\"./convert\").createIsosurfaceTrace,moduleType:\"trace\",name:\"isosurface\",basePlotModule:t(\"../../plots/gl3d\"),categories:[\"gl3d\",\"showLegend\"],meta:{}}},{\"../../plots/gl3d\":598,\"./attributes\":862,\"./calc\":863,\"./convert\":864,\"./defaults\":865}],867:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/attributes\"),i=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,a=t(\"../../plots/template_attributes\").hovertemplateAttrs,o=t(\"../surface/attributes\"),s=t(\"../../plots/attributes\"),l=t(\"../../lib/extend\").extendFlat;e.exports=l({x:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},y:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},z:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},i:{valType:\"data_array\",editType:\"calc\"},j:{valType:\"data_array\",editType:\"calc\"},k:{valType:\"data_array\",editType:\"calc\"},text:{valType:\"string\",dflt:\"\",arrayOk:!0,editType:\"calc\"},hovertext:{valType:\"string\",dflt:\"\",arrayOk:!0,editType:\"calc\"},hovertemplate:a({editType:\"calc\"}),xhoverformat:i(\"x\"),yhoverformat:i(\"y\"),zhoverformat:i(\"z\"),delaunayaxis:{valType:\"enumerated\",values:[\"x\",\"y\",\"z\"],dflt:\"z\",editType:\"calc\"},alphahull:{valType:\"number\",dflt:-1,editType:\"calc\"},intensity:{valType:\"data_array\",editType:\"calc\"},intensitymode:{valType:\"enumerated\",values:[\"vertex\",\"cell\"],dflt:\"vertex\",editType:\"calc\"},color:{valType:\"color\",editType:\"calc\"},vertexcolor:{valType:\"data_array\",editType:\"calc\"},facecolor:{valType:\"data_array\",editType:\"calc\"},transforms:void 0},n(\"\",{colorAttr:\"`intensity`\",showScaleDflt:!0,editTypeOverride:\"calc\"}),{opacity:o.opacity,flatshading:{valType:\"boolean\",dflt:!1,editType:\"calc\"},contour:{show:l({},o.contours.x.show,{}),color:o.contours.x.color,width:o.contours.x.width,editType:\"calc\"},lightposition:{x:l({},o.lightposition.x,{dflt:1e5}),y:l({},o.lightposition.y,{dflt:1e5}),z:l({},o.lightposition.z,{dflt:0}),editType:\"calc\"},lighting:l({vertexnormalsepsilon:{valType:\"number\",min:0,max:1,dflt:1e-12,editType:\"calc\"},facenormalsepsilon:{valType:\"number\",min:0,max:1,dflt:1e-6,editType:\"calc\"},editType:\"calc\"},o.lighting),hoverinfo:l({},s.hoverinfo,{editType:\"calc\"}),showlegend:l({},s.showlegend,{dflt:!1})})},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/template_attributes\":633,\"../surface/attributes\":1057}],868:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/calc\");e.exports=function(t,e){e.intensity&&n(t,e,{vals:e.intensity,containerStr:\"\",cLetter:\"c\"})}},{\"../../components/colorscale/calc\":374}],869:[function(t,e,r){\"use strict\";var n=t(\"../../../stackgl_modules\").gl_mesh3d,i=t(\"../../../stackgl_modules\").delaunay_triangulate,a=t(\"../../../stackgl_modules\").alpha_shape,o=t(\"../../../stackgl_modules\").convex_hull,s=t(\"../../lib/gl_format_color\").parseColorScale,l=t(\"../../lib/str2rgbarray\"),c=t(\"../../components/colorscale\").extractOpts,u=t(\"../../plots/gl3d/zip3\");function f(t,e,r){this.scene=t,this.uid=r,this.mesh=e,this.name=\"\",this.color=\"#fff\",this.data=null,this.showContour=!1}var h=f.prototype;function p(t){for(var e=[],r=t.length,n=0;n=e-.5)return!1;return!0}h.handlePick=function(t){if(t.object===this.mesh){var e=t.index=t.data.index;t.data._cellCenter?t.traceCoordinate=t.data.dataCoordinate:t.traceCoordinate=[this.data.x[e],this.data.y[e],this.data.z[e]];var r=this.data.hovertext||this.data.text;return Array.isArray(r)&&void 0!==r[e]?t.textLabel=r[e]:r&&(t.textLabel=r),!0}},h.update=function(t){var e=this.scene,r=e.fullSceneLayout;this.data=t;var n,f=t.x.length,h=u(d(r.xaxis,t.x,e.dataScale[0],t.xcalendar),d(r.yaxis,t.y,e.dataScale[1],t.ycalendar),d(r.zaxis,t.z,e.dataScale[2],t.zcalendar));if(t.i&&t.j&&t.k){if(t.i.length!==t.j.length||t.j.length!==t.k.length||!m(t.i,f)||!m(t.j,f)||!m(t.k,f))return;n=u(g(t.i),g(t.j),g(t.k))}else n=0===t.alphahull?o(h):t.alphahull>0?a(t.alphahull,h):function(t,e){for(var r=[\"x\",\"y\",\"z\"].indexOf(t),n=[],a=e.length,o=0;ov):m=A>w,v=A;var M=c(w,T,k,A);M.pos=_,M.yc=(w+A)/2,M.i=b,M.dir=m?\"increasing\":\"decreasing\",M.x=M.pos,M.y=[k,T],y&&(M.orig_p=r[b]),d&&(M.tx=e.text[b]),g&&(M.htx=e.hovertext[b]),x.push(M)}else x.push({pos:_,empty:!0})}return e._extremes[l._id]=a.findExtremes(l,n.concat(h,f),{padded:!0}),x.length&&(x[0].t={labels:{open:i(t,\"open:\")+\" \",high:i(t,\"high:\")+\" \",low:i(t,\"low:\")+\" \",close:i(t,\"close:\")+\" \"}}),x}e.exports={calc:function(t,e){var r=a.getFromId(t,e.xaxis),i=a.getFromId(t,e.yaxis),s=function(t,e,r){var i=r._minDiff;if(!i){var a,s=t._fullData,l=[];for(i=1/0,a=0;a\"+c.labels[x]+n.hoverLabelText(s,b,l.yhoverformat):((y=i.extendFlat({},h)).y0=y.y1=_,y.yLabelVal=b,y.yLabel=c.labels[x]+n.hoverLabelText(s,b,l.yhoverformat),y.name=\"\",f.push(y),m[b]=y)}return f}function h(t,e,r,i){var a=t.cd,o=t.ya,l=a[0].trace,f=a[0].t,h=u(t,e,r,i);if(!h)return[];var p=a[h.index],d=h.index=p.i,g=p.dir;function m(t){return f.labels[t]+n.hoverLabelText(o,l[t][d],l.yhoverformat)}var v=p.hi||l.hoverinfo,y=v.split(\"+\"),x=\"all\"===v,b=x||-1!==y.indexOf(\"y\"),_=x||-1!==y.indexOf(\"text\"),w=b?[m(\"open\"),m(\"high\"),m(\"low\"),m(\"close\")+\" \"+c[g]]:[];return _&&s(p,l,w),h.extraText=w.join(\"
\"),h.y0=h.y1=o.c2p(p.yc,!0),[h]}e.exports={hoverPoints:function(t,e,r,n){return t.cd[0].trace.hoverlabel.split?f(t,e,r,n):h(t,e,r,n)},hoverSplit:f,hoverOnPoints:h}},{\"../../components/color\":366,\"../../components/fx\":406,\"../../constants/delta.js\":473,\"../../lib\":503,\"../../plots/cartesian/axes\":554}],876:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"ohlc\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"cartesian\",\"svg\",\"showLegend\"],meta:{},attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),calc:t(\"./calc\").calc,plot:t(\"./plot\"),style:t(\"./style\"),hoverPoints:t(\"./hover\").hoverPoints,selectPoints:t(\"./select\")}},{\"../../plots/cartesian\":568,\"./attributes\":872,\"./calc\":873,\"./defaults\":874,\"./hover\":875,\"./plot\":878,\"./select\":879,\"./style\":880}],877:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\");e.exports=function(t,e,r,a){var o=r(\"x\"),s=r(\"open\"),l=r(\"high\"),c=r(\"low\"),u=r(\"close\");if(r(\"hoverlabel.split\"),n.getComponentMethod(\"calendars\",\"handleTraceDefaults\")(t,e,[\"x\"],a),s&&l&&c&&u){var f=Math.min(s.length,l.length,c.length,u.length);return o&&(f=Math.min(f,i.minRowLength(o))),e._length=f,f}}},{\"../../lib\":503,\"../../registry\":638}],878:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\");e.exports=function(t,e,r,a){var o=e.yaxis,s=e.xaxis,l=!!s.rangebreaks;i.makeTraceGroups(a,r,\"trace ohlc\").each((function(t){var e=n.select(this),r=t[0],a=r.t;if(!0!==r.trace.visible||a.empty)e.remove();else{var c=a.tickLen,u=e.selectAll(\"path\").data(i.identity);u.enter().append(\"path\"),u.exit().remove(),u.attr(\"d\",(function(t){if(t.empty)return\"M0,0Z\";var e=s.c2p(t.pos-c,!0),r=s.c2p(t.pos+c,!0),n=l?(e+r)/2:s.c2p(t.pos,!0);return\"M\"+e+\",\"+o.c2p(t.o,!0)+\"H\"+n+\"M\"+n+\",\"+o.c2p(t.h,!0)+\"V\"+o.c2p(t.l,!0)+\"M\"+r+\",\"+o.c2p(t.c,!0)+\"H\"+n}))}}))}},{\"../../lib\":503,\"@plotly/d3\":58}],879:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r,n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s=n[0].t.bPos||0;if(!1===e)for(r=0;r=t.length)return!1;if(void 0!==e[t[r]])return!1;e[t[r]]=!0}return!0}(t.map((function(t){return t.displayindex}))))for(e=0;e0;c&&(o=\"array\");var u=r(\"categoryorder\",o);\"array\"===u?(r(\"categoryarray\"),r(\"ticktext\")):(delete t.categoryarray,delete t.ticktext),c||\"array\"!==u||(e.categoryorder=\"trace\")}}e.exports=function(t,e,r,f){function h(r,i){return n.coerce(t,e,l,r,i)}var p=s(t,e,{name:\"dimensions\",handleItemDefaults:u}),d=function(t,e,r,o,s){s(\"line.shape\"),s(\"line.hovertemplate\");var l=s(\"line.color\",o.colorway[0]);if(i(t,\"line\")&&n.isArrayOrTypedArray(l)){if(l.length)return s(\"line.colorscale\"),a(t,e,o,s,{prefix:\"line.\",cLetter:\"c\"}),l.length;e.line.color=r}return 1/0}(t,e,r,f,h);o(e,f,h),Array.isArray(p)&&p.length||(e.visible=!1),c(e,p,\"values\",d),h(\"hoveron\"),h(\"hovertemplate\"),h(\"arrangement\"),h(\"bundlecolors\"),h(\"sortpaths\"),h(\"counts\");var g={family:f.font.family,size:Math.round(f.font.size),color:f.font.color};n.coerceFont(h,\"labelfont\",g);var m={family:f.font.family,size:Math.round(f.font.size/1.2),color:f.font.color};n.coerceFont(h,\"tickfont\",m)}},{\"../../components/colorscale/defaults\":376,\"../../components/colorscale/helpers\":377,\"../../lib\":503,\"../../plots/array_container_defaults\":549,\"../../plots/domain\":584,\"../parcoords/merge_length\":897,\"./attributes\":881}],885:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),calc:t(\"./calc\"),plot:t(\"./plot\"),colorbar:{container:\"line\",min:\"cmin\",max:\"cmax\"},moduleType:\"trace\",name:\"parcats\",basePlotModule:t(\"./base_plot\"),categories:[\"noOpacity\"],meta:{}}},{\"./attributes\":881,\"./base_plot\":882,\"./calc\":883,\"./defaults\":884,\"./plot\":887}],886:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"d3-interpolate\").interpolateNumber,a=t(\"../../plot_api/plot_api\"),o=t(\"../../components/fx\"),s=t(\"../../lib\"),l=s.strTranslate,c=t(\"../../components/drawing\"),u=t(\"tinycolor2\"),f=t(\"../../lib/svg_text_utils\");function h(t,e,r,i){var a=t.map(F.bind(0,e,r)),o=i.selectAll(\"g.parcatslayer\").data([null]);o.enter().append(\"g\").attr(\"class\",\"parcatslayer\").style(\"pointer-events\",\"all\");var u=o.selectAll(\"g.trace.parcats\").data(a,p),h=u.enter().append(\"g\").attr(\"class\",\"trace parcats\");u.attr(\"transform\",(function(t){return l(t.x,t.y)})),h.append(\"g\").attr(\"class\",\"paths\");var y=u.select(\"g.paths\").selectAll(\"path.path\").data((function(t){return t.paths}),p);y.attr(\"fill\",(function(t){return t.model.color}));var x=y.enter().append(\"path\").attr(\"class\",\"path\").attr(\"stroke-opacity\",0).attr(\"fill\",(function(t){return t.model.color})).attr(\"fill-opacity\",0);_(x),y.attr(\"d\",(function(t){return t.svgD})),x.empty()||y.sort(g),y.exit().remove(),y.on(\"mouseover\",m).on(\"mouseout\",v).on(\"click\",b),h.append(\"g\").attr(\"class\",\"dimensions\");var w=u.select(\"g.dimensions\").selectAll(\"g.dimension\").data((function(t){return t.dimensions}),p);w.enter().append(\"g\").attr(\"class\",\"dimension\"),w.attr(\"transform\",(function(t){return l(t.x,0)})),w.exit().remove();var A=w.selectAll(\"g.category\").data((function(t){return t.categories}),p),M=A.enter().append(\"g\").attr(\"class\",\"category\");A.attr(\"transform\",(function(t){return l(0,t.y)})),M.append(\"rect\").attr(\"class\",\"catrect\").attr(\"pointer-events\",\"none\"),A.select(\"rect.catrect\").attr(\"fill\",\"none\").attr(\"width\",(function(t){return t.width})).attr(\"height\",(function(t){return t.height})),T(M);var S=A.selectAll(\"rect.bandrect\").data((function(t){return t.bands}),p);S.each((function(){s.raiseToTop(this)})),S.attr(\"fill\",(function(t){return t.color}));var E=S.enter().append(\"rect\").attr(\"class\",\"bandrect\").attr(\"stroke-opacity\",0).attr(\"fill\",(function(t){return t.color})).attr(\"fill-opacity\",0);S.attr(\"fill\",(function(t){return t.color})).attr(\"width\",(function(t){return t.width})).attr(\"height\",(function(t){return t.height})).attr(\"y\",(function(t){return t.y})).attr(\"cursor\",(function(t){return\"fixed\"===t.parcatsViewModel.arrangement?\"default\":\"perpendicular\"===t.parcatsViewModel.arrangement?\"ns-resize\":\"move\"})),k(E),S.exit().remove(),M.append(\"text\").attr(\"class\",\"catlabel\").attr(\"pointer-events\",\"none\");var z=e._fullLayout.paper_bgcolor;A.select(\"text.catlabel\").attr(\"text-anchor\",(function(t){return d(t)?\"start\":\"end\"})).attr(\"alignment-baseline\",\"middle\").style(\"text-shadow\",f.makeTextShadow(z)).style(\"fill\",\"rgb(0, 0, 0)\").attr(\"x\",(function(t){return d(t)?t.width+5:-5})).attr(\"y\",(function(t){return t.height/2})).text((function(t){return t.model.categoryLabel})).each((function(t){c.font(n.select(this),t.parcatsViewModel.categorylabelfont),f.convertToTspans(n.select(this),e)})),M.append(\"text\").attr(\"class\",\"dimlabel\"),A.select(\"text.dimlabel\").attr(\"text-anchor\",\"middle\").attr(\"alignment-baseline\",\"baseline\").attr(\"cursor\",(function(t){return\"fixed\"===t.parcatsViewModel.arrangement?\"default\":\"ew-resize\"})).attr(\"x\",(function(t){return t.width/2})).attr(\"y\",-5).text((function(t,e){return 0===e?t.parcatsViewModel.model.dimensions[t.model.dimensionInd].dimensionLabel:null})).each((function(t){c.font(n.select(this),t.parcatsViewModel.labelfont)})),A.selectAll(\"rect.bandrect\").on(\"mouseover\",L).on(\"mouseout\",C),A.exit().remove(),w.call(n.behavior.drag().origin((function(t){return{x:t.x,y:0}})).on(\"dragstart\",P).on(\"drag\",I).on(\"dragend\",O)),u.each((function(t){t.traceSelection=n.select(this),t.pathSelection=n.select(this).selectAll(\"g.paths\").selectAll(\"path.path\"),t.dimensionSelection=n.select(this).selectAll(\"g.dimensions\").selectAll(\"g.dimension\")})),u.exit().remove()}function p(t){return t.key}function d(t){var e=t.parcatsViewModel.dimensions.length,r=t.parcatsViewModel.dimensions[e-1].model.dimensionInd;return t.model.dimensionInd===r}function g(t,e){return t.model.rawColor>e.model.rawColor?1:t.model.rawColor\"),L=n.mouse(f)[0];o.loneHover({trace:h,x:b-d.left+g.left,y:_-d.top+g.top,text:E,color:t.model.color,borderColor:\"black\",fontFamily:'Monaco, \"Courier New\", monospace',fontSize:10,fontColor:T,idealAlign:L1&&h.displayInd===f.dimensions.length-1?(i=c.left,a=\"left\"):(i=c.left+c.width,a=\"right\");var g=u.model.count,m=u.model.categoryLabel,v=g/u.parcatsViewModel.model.count,y={countLabel:g,categoryLabel:m,probabilityLabel:v.toFixed(3)},x=[];-1!==u.parcatsViewModel.hoverinfoItems.indexOf(\"count\")&&x.push([\"Count:\",y.countLabel].join(\" \")),-1!==u.parcatsViewModel.hoverinfoItems.indexOf(\"probability\")&&x.push([\"P(\"+y.categoryLabel+\"):\",y.probabilityLabel].join(\" \"));var b=x.join(\"
\");return{trace:p,x:o*(i-e.left),y:s*(d-e.top),text:b,color:\"lightgray\",borderColor:\"black\",fontFamily:'Monaco, \"Courier New\", monospace',fontSize:12,fontColor:\"black\",idealAlign:a,hovertemplate:p.hovertemplate,hovertemplateLabels:y,eventData:[{data:p._input,fullData:p,count:g,category:m,probability:v}]}}function L(t){if(!t.parcatsViewModel.dragDimension&&-1===t.parcatsViewModel.hoverinfoItems.indexOf(\"skip\")){if(n.mouse(this)[1]<-1)return;var e,r=t.parcatsViewModel.graphDiv,i=r._fullLayout,a=i._paperdiv.node().getBoundingClientRect(),l=t.parcatsViewModel.hoveron;if(\"color\"===l?(!function(t){var e=n.select(t).datum(),r=A(e);w(r),r.each((function(){s.raiseToTop(this)})),n.select(t.parentNode).selectAll(\"rect.bandrect\").filter((function(t){return t.color===e.color})).each((function(){s.raiseToTop(this),n.select(this).attr(\"stroke\",\"black\").attr(\"stroke-width\",1.5)}))}(this),S(this,\"plotly_hover\",n.event)):(!function(t){n.select(t.parentNode).selectAll(\"rect.bandrect\").each((function(t){var e=A(t);w(e),e.each((function(){s.raiseToTop(this)}))})),n.select(t.parentNode).select(\"rect.catrect\").attr(\"stroke\",\"black\").attr(\"stroke-width\",2.5)}(this),M(this,\"plotly_hover\",n.event)),-1===t.parcatsViewModel.hoverinfoItems.indexOf(\"none\"))\"category\"===l?e=E(r,a,this):\"color\"===l?e=function(t,e,r){t._fullLayout._calcInverseTransform(t);var i,a,o=t._fullLayout._invScaleX,s=t._fullLayout._invScaleY,l=r.getBoundingClientRect(),c=n.select(r).datum(),f=c.categoryViewModel,h=f.parcatsViewModel,p=h.model.dimensions[f.model.dimensionInd],d=h.trace,g=l.y+l.height/2;h.dimensions.length>1&&p.displayInd===h.dimensions.length-1?(i=l.left,a=\"left\"):(i=l.left+l.width,a=\"right\");var m=f.model.categoryLabel,v=c.parcatsViewModel.model.count,y=0;c.categoryViewModel.bands.forEach((function(t){t.color===c.color&&(y+=t.count)}));var x=f.model.count,b=0;h.pathSelection.each((function(t){t.model.color===c.color&&(b+=t.model.count)}));var _=y/v,w=y/b,T=y/x,k={countLabel:v,categoryLabel:m,probabilityLabel:_.toFixed(3)},A=[];-1!==f.parcatsViewModel.hoverinfoItems.indexOf(\"count\")&&A.push([\"Count:\",k.countLabel].join(\" \")),-1!==f.parcatsViewModel.hoverinfoItems.indexOf(\"probability\")&&(A.push(\"P(color \\u2229 \"+m+\"): \"+k.probabilityLabel),A.push(\"P(\"+m+\" | color): \"+w.toFixed(3)),A.push(\"P(color | \"+m+\"): \"+T.toFixed(3)));var M=A.join(\"
\"),S=u.mostReadable(c.color,[\"black\",\"white\"]);return{trace:d,x:o*(i-e.left),y:s*(g-e.top),text:M,color:c.color,borderColor:\"black\",fontFamily:'Monaco, \"Courier New\", monospace',fontColor:S,fontSize:10,idealAlign:a,hovertemplate:d.hovertemplate,hovertemplateLabels:k,eventData:[{data:d._input,fullData:d,category:m,count:v,probability:_,categorycount:x,colorcount:b,bandcolorcount:y}]}}(r,a,this):\"dimension\"===l&&(e=function(t,e,r){var i=[];return n.select(r.parentNode.parentNode).selectAll(\"g.category\").select(\"rect.catrect\").each((function(){i.push(E(t,e,this))})),i}(r,a,this)),e&&o.loneHover(e,{container:i._hoverlayer.node(),outerContainer:i._paper.node(),gd:r})}}function C(t){var e=t.parcatsViewModel;if(!e.dragDimension&&(_(e.pathSelection),T(e.dimensionSelection.selectAll(\"g.category\")),k(e.dimensionSelection.selectAll(\"g.category\").selectAll(\"rect.bandrect\")),o.loneUnhover(e.graphDiv._fullLayout._hoverlayer.node()),e.pathSelection.sort(g),-1===e.hoverinfoItems.indexOf(\"skip\"))){\"color\"===t.parcatsViewModel.hoveron?S(this,\"plotly_unhover\",n.event):M(this,\"plotly_unhover\",n.event)}}function P(t){\"fixed\"!==t.parcatsViewModel.arrangement&&(t.dragDimensionDisplayInd=t.model.displayInd,t.initialDragDimensionDisplayInds=t.parcatsViewModel.model.dimensions.map((function(t){return t.displayInd})),t.dragHasMoved=!1,t.dragCategoryDisplayInd=null,n.select(this).selectAll(\"g.category\").select(\"rect.catrect\").each((function(e){var r=n.mouse(this)[0],i=n.mouse(this)[1];-2<=r&&r<=e.width+2&&-2<=i&&i<=e.height+2&&(t.dragCategoryDisplayInd=e.model.displayInd,t.initialDragCategoryDisplayInds=t.model.categories.map((function(t){return t.displayInd})),e.model.dragY=e.y,s.raiseToTop(this.parentNode),n.select(this.parentNode).selectAll(\"rect.bandrect\").each((function(e){e.yf.y+f.height/2&&(o.model.displayInd=f.model.displayInd,f.model.displayInd=l),t.dragCategoryDisplayInd=o.model.displayInd}if(null===t.dragCategoryDisplayInd||\"freeform\"===t.parcatsViewModel.arrangement){a.model.dragX=n.event.x;var h=t.parcatsViewModel.dimensions[r],p=t.parcatsViewModel.dimensions[i];void 0!==h&&a.model.dragXp.x&&(a.model.displayInd=p.model.displayInd,p.model.displayInd=t.dragDimensionDisplayInd),t.dragDimensionDisplayInd=a.model.displayInd}j(t.parcatsViewModel),N(t.parcatsViewModel),R(t.parcatsViewModel),D(t.parcatsViewModel)}}function O(t){if(\"fixed\"!==t.parcatsViewModel.arrangement&&null!==t.dragDimensionDisplayInd){n.select(this).selectAll(\"text\").attr(\"font-weight\",\"normal\");var e={},r=z(t.parcatsViewModel),i=t.parcatsViewModel.model.dimensions.map((function(t){return t.displayInd})),o=t.initialDragDimensionDisplayInds.some((function(t,e){return t!==i[e]}));o&&i.forEach((function(r,n){var i=t.parcatsViewModel.model.dimensions[n].containerInd;e[\"dimensions[\"+i+\"].displayindex\"]=r}));var s=!1;if(null!==t.dragCategoryDisplayInd){var l=t.model.categories.map((function(t){return t.displayInd}));if(s=t.initialDragCategoryDisplayInds.some((function(t,e){return t!==l[e]}))){var c=t.model.categories.slice().sort((function(t,e){return t.displayInd-e.displayInd})),u=c.map((function(t){return t.categoryValue})),f=c.map((function(t){return t.categoryLabel}));e[\"dimensions[\"+t.model.containerInd+\"].categoryarray\"]=[u],e[\"dimensions[\"+t.model.containerInd+\"].ticktext\"]=[f],e[\"dimensions[\"+t.model.containerInd+\"].categoryorder\"]=\"array\"}}if(-1===t.parcatsViewModel.hoverinfoItems.indexOf(\"skip\")&&!t.dragHasMoved&&t.potentialClickBand&&(\"color\"===t.parcatsViewModel.hoveron?S(t.potentialClickBand,\"plotly_click\",n.event.sourceEvent):M(t.potentialClickBand,\"plotly_click\",n.event.sourceEvent)),t.model.dragX=null,null!==t.dragCategoryDisplayInd)t.parcatsViewModel.dimensions[t.dragDimensionDisplayInd].categories[t.dragCategoryDisplayInd].model.dragY=null,t.dragCategoryDisplayInd=null;t.dragDimensionDisplayInd=null,t.parcatsViewModel.dragDimension=null,t.dragHasMoved=null,t.potentialClickBand=null,j(t.parcatsViewModel),N(t.parcatsViewModel),n.transition().duration(300).ease(\"cubic-in-out\").each((function(){R(t.parcatsViewModel,!0),D(t.parcatsViewModel,!0)})).each(\"end\",(function(){(o||s)&&a.restyle(t.parcatsViewModel.graphDiv,e,[r])}))}}function z(t){for(var e,r=t.graphDiv._fullData,n=0;n=0;s--)u+=\"C\"+c[s]+\",\"+(e[s+1]+n)+\" \"+l[s]+\",\"+(e[s]+n)+\" \"+(t[s]+r[s])+\",\"+(e[s]+n),u+=\"l-\"+r[s]+\",0 \";return u+=\"Z\"}function N(t){var e=t.dimensions,r=t.model,n=e.map((function(t){return t.categories.map((function(t){return t.y}))})),i=t.model.dimensions.map((function(t){return t.categories.map((function(t){return t.displayInd}))})),a=t.model.dimensions.map((function(t){return t.displayInd})),o=t.dimensions.map((function(t){return t.model.dimensionInd})),s=e.map((function(t){return t.x})),l=e.map((function(t){return t.width})),c=[];for(var u in r.paths)r.paths.hasOwnProperty(u)&&c.push(r.paths[u]);function f(t){var e=t.categoryInds.map((function(t,e){return i[e][t]}));return o.map((function(t){return e[t]}))}c.sort((function(e,r){var n=f(e),i=f(r);return\"backward\"===t.sortpaths&&(n.reverse(),i.reverse()),n.push(e.valueInds[0]),i.push(r.valueInds[0]),t.bundlecolors&&(n.unshift(e.rawColor),i.unshift(r.rawColor)),ni?1:0}));for(var h=new Array(c.length),p=e[0].model.count,d=e[0].categories.map((function(t){return t.height})).reduce((function(t,e){return t+e})),g=0;g0?d*(v.count/p):0;for(var y,x=new Array(n.length),b=0;b1?(t.width-80-16)/(n-1):0)*i;var a,o,s,l,c,u=[],f=t.model.maxCats,h=e.categories.length,p=e.count,d=t.height-8*(f-1),g=8*(f-h)/2,m=e.categories.map((function(t){return{displayInd:t.displayInd,categoryInd:t.categoryInd}}));for(m.sort((function(t,e){return t.displayInd-e.displayInd})),c=0;c0?o.count/p*d:0,s={key:o.valueInds[0],model:o,width:16,height:a,y:null!==o.dragY?o.dragY:g,bands:[],parcatsViewModel:t},g=g+a+8,u.push(s);return{key:e.dimensionInd,x:null!==e.dragX?e.dragX:r,y:0,width:16,model:e,categories:u,parcatsViewModel:t,dragCategoryDisplayInd:null,dragDimensionDisplayInd:null,initialDragDimensionDisplayInds:null,initialDragCategoryDisplayInds:null,dragHasMoved:null,potentialClickBand:null}}e.exports=function(t,e,r,n){h(r,t,n,e)}},{\"../../components/drawing\":388,\"../../components/fx\":406,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../../plot_api/plot_api\":540,\"@plotly/d3\":58,\"d3-interpolate\":116,tinycolor2:312}],887:[function(t,e,r){\"use strict\";var n=t(\"./parcats\");e.exports=function(t,e,r,i){var a=t._fullLayout,o=a._paper,s=a._size;n(t,o,e,{width:s.w,height:s.h,margin:{t:s.t,r:s.r,b:s.b,l:s.l}},r,i)}},{\"./parcats\":886}],888:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/attributes\"),i=t(\"../../plots/cartesian/layout_attributes\"),a=t(\"../../plots/font_attributes\"),o=t(\"../../plots/domain\").attributes,s=t(\"../../lib/extend\").extendFlat,l=t(\"../../plot_api/plot_template\").templatedArray;e.exports={domain:o({name:\"parcoords\",trace:!0,editType:\"plot\"}),labelangle:{valType:\"angle\",dflt:0,editType:\"plot\"},labelside:{valType:\"enumerated\",values:[\"top\",\"bottom\"],dflt:\"top\",editType:\"plot\"},labelfont:a({editType:\"plot\"}),tickfont:a({editType:\"plot\"}),rangefont:a({editType:\"plot\"}),dimensions:l(\"dimension\",{label:{valType:\"string\",editType:\"plot\"},tickvals:s({},i.tickvals,{editType:\"plot\"}),ticktext:s({},i.ticktext,{editType:\"plot\"}),tickformat:s({},i.tickformat,{editType:\"plot\"}),visible:{valType:\"boolean\",dflt:!0,editType:\"plot\"},range:{valType:\"info_array\",items:[{valType:\"number\",editType:\"plot\"},{valType:\"number\",editType:\"plot\"}],editType:\"plot\"},constraintrange:{valType:\"info_array\",freeLength:!0,dimensions:\"1-2\",items:[{valType:\"any\",editType:\"plot\"},{valType:\"any\",editType:\"plot\"}],editType:\"plot\"},multiselect:{valType:\"boolean\",dflt:!0,editType:\"plot\"},values:{valType:\"data_array\",editType:\"calc\"},editType:\"calc\"}),line:s({editType:\"calc\"},n(\"line\",{colorscaleDflt:\"Viridis\",autoColorDflt:!1,editTypeOverride:\"calc\"}))}},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plot_api/plot_template\":543,\"../../plots/cartesian/layout_attributes\":569,\"../../plots/domain\":584,\"../../plots/font_attributes\":585}],889:[function(t,e,r){\"use strict\";var n=t(\"./constants\"),i=t(\"@plotly/d3\"),a=t(\"../../lib/gup\").keyFun,o=t(\"../../lib/gup\").repeat,s=t(\"../../lib\").sorterAsc,l=t(\"../../lib\").strTranslate,c=n.bar.snapRatio;function u(t,e){return t*(1-c)+e*c}var f=n.bar.snapClose;function h(t,e){return t*(1-f)+e*f}function p(t,e,r,n){if(function(t,e){for(var r=0;r=e[r][0]&&t<=e[r][1])return!0;return!1}(r,n))return r;var i=t?-1:1,a=0,o=e.length-1;if(i<0){var s=a;a=o,o=s}for(var l=e[a],c=l,f=a;i*fe){h=r;break}}if(a=u,isNaN(a)&&(a=isNaN(f)||isNaN(h)?isNaN(f)?h:f:e-c[f][1]t[1]+r||e=.9*t[1]+.1*t[0]?\"n\":e<=.9*t[0]+.1*t[1]?\"s\":\"ns\"}(d,e);g&&(o.interval=l[a],o.intervalPix=d,o.region=g)}}if(t.ordinal&&!o.region){var m=t.unitTickvals,y=t.unitToPaddedPx.invert(e);for(r=0;r=x[0]&&y<=x[1]){o.clickableOrdinalRange=x;break}}}return o}function w(t,e){i.event.sourceEvent.stopPropagation();var r=e.height-i.mouse(t)[1]-2*n.verticalPadding,a=e.brush.svgBrush;a.wasDragged=!0,a._dragging=!0,a.grabbingBar?a.newExtent=[r-a.grabPoint,r+a.barLength-a.grabPoint].map(e.unitToPaddedPx.invert):a.newExtent=[a.startExtent,e.unitToPaddedPx.invert(r)].sort(s),e.brush.filterSpecified=!0,a.extent=a.stayingIntervals.concat([a.newExtent]),a.brushCallback(e),b(t.parentNode)}function T(t,e){var r=_(e,e.height-i.mouse(t)[1]-2*n.verticalPadding),a=\"crosshair\";r.clickableOrdinalRange?a=\"pointer\":r.region&&(a=r.region+\"-resize\"),i.select(document.body).style(\"cursor\",a)}function k(t){t.on(\"mousemove\",(function(t){i.event.preventDefault(),t.parent.inBrushDrag||T(this,t)})).on(\"mouseleave\",(function(t){t.parent.inBrushDrag||y()})).call(i.behavior.drag().on(\"dragstart\",(function(t){!function(t,e){i.event.sourceEvent.stopPropagation();var r=e.height-i.mouse(t)[1]-2*n.verticalPadding,a=e.unitToPaddedPx.invert(r),o=e.brush,s=_(e,r),l=s.interval,c=o.svgBrush;if(c.wasDragged=!1,c.grabbingBar=\"ns\"===s.region,c.grabbingBar){var u=l.map(e.unitToPaddedPx);c.grabPoint=r-u[0]-n.verticalPadding,c.barLength=u[1]-u[0]}c.clickableOrdinalRange=s.clickableOrdinalRange,c.stayingIntervals=e.multiselect&&o.filterSpecified?o.filter.getConsolidated():[],l&&(c.stayingIntervals=c.stayingIntervals.filter((function(t){return t[0]!==l[0]&&t[1]!==l[1]}))),c.startExtent=s.region?l[\"s\"===s.region?1:0]:a,e.parent.inBrushDrag=!0,c.brushStartCallback()}(this,t)})).on(\"drag\",(function(t){w(this,t)})).on(\"dragend\",(function(t){!function(t,e){var r=e.brush,n=r.filter,a=r.svgBrush;a._dragging||(T(t,e),w(t,e),e.brush.svgBrush.wasDragged=!1),a._dragging=!1,i.event.sourceEvent.stopPropagation();var o=a.grabbingBar;if(a.grabbingBar=!1,a.grabLocation=void 0,e.parent.inBrushDrag=!1,y(),!a.wasDragged)return a.wasDragged=void 0,a.clickableOrdinalRange?r.filterSpecified&&e.multiselect?a.extent.push(a.clickableOrdinalRange):(a.extent=[a.clickableOrdinalRange],r.filterSpecified=!0):o?(a.extent=a.stayingIntervals,0===a.extent.length&&M(r)):M(r),a.brushCallback(e),b(t.parentNode),void a.brushEndCallback(r.filterSpecified?n.getConsolidated():[]);var s=function(){n.set(n.getConsolidated())};if(e.ordinal){var l=e.unitTickvals;l[l.length-1]a.newExtent[0];a.extent=a.stayingIntervals.concat(c?[a.newExtent]:[]),a.extent.length||M(r),a.brushCallback(e),c?b(t.parentNode,s):(s(),b(t.parentNode))}else s();a.brushEndCallback(r.filterSpecified?n.getConsolidated():[])}(this,t)})))}function A(t,e){return t[0]-e[0]}function M(t){t.filterSpecified=!1,t.svgBrush.extent=[[-1/0,1/0]]}function S(t){for(var e,r=t.slice(),n=[],i=r.shift();i;){for(e=i.slice();(i=r.shift())&&i[0]<=e[1];)e[1]=Math.max(e[1],i[1]);n.push(e)}return 1===n.length&&n[0][0]>n[0][1]&&(n=[]),n}e.exports={makeBrush:function(t,e,r,n,i,a){var o,l=function(){var t,e,r=[];return{set:function(n){1===(r=n.map((function(t){return t.slice().sort(s)})).sort(A)).length&&r[0][0]===-1/0&&r[0][1]===1/0&&(r=[[0,-1]]),t=S(r),e=r.reduce((function(t,e){return[Math.min(t[0],e[0]),Math.max(t[1],e[1])]}),[1/0,-1/0])},get:function(){return r.slice()},getConsolidated:function(){return t},getBounds:function(){return e}}}();return l.set(r),{filter:l,filterSpecified:e,svgBrush:{extent:[],brushStartCallback:n,brushCallback:(o=i,function(t){var e=t.brush,r=function(t){return t.svgBrush.extent.map((function(t){return t.slice()}))}(e).slice();e.filter.set(r),o()}),brushEndCallback:a}}},ensureAxisBrush:function(t,e){var r=t.selectAll(\".\"+n.cn.axisBrush).data(o,a);r.enter().append(\"g\").classed(n.cn.axisBrush,!0),function(t,e){var r=t.selectAll(\".background\").data(o);r.enter().append(\"rect\").classed(\"background\",!0).call(d).call(g).style(\"pointer-events\",\"auto\").attr(\"transform\",l(0,n.verticalPadding)),r.call(k).attr(\"height\",(function(t){return t.height-n.verticalPadding}));var i=t.selectAll(\".highlight-shadow\").data(o);i.enter().append(\"line\").classed(\"highlight-shadow\",!0).attr(\"x\",-n.bar.width/2).attr(\"stroke-width\",n.bar.width+n.bar.strokeWidth).attr(\"stroke\",e).attr(\"opacity\",n.bar.strokeOpacity).attr(\"stroke-linecap\",\"butt\"),i.attr(\"y1\",(function(t){return t.height})).call(x);var a=t.selectAll(\".highlight\").data(o);a.enter().append(\"line\").classed(\"highlight\",!0).attr(\"x\",-n.bar.width/2).attr(\"stroke-width\",n.bar.width-n.bar.strokeWidth).attr(\"stroke\",n.bar.fillColor).attr(\"opacity\",n.bar.fillOpacity).attr(\"stroke-linecap\",\"butt\"),a.attr(\"y1\",(function(t){return t.height})).call(x)}(r,e)},cleanRanges:function(t,e){if(Array.isArray(t[0])?(t=t.map((function(t){return t.sort(s)})),t=e.multiselect?S(t.sort(A)):[t[0]]):t=[t.sort(s)],e.tickvals){var r=e.tickvals.slice().sort(s);if(!(t=t.map((function(t){var e=[p(0,r,t[0],[]),p(1,r,t[1],[])];if(e[1]>e[0])return e})).filter((function(t){return t}))).length)return}return t.length>1?t:t[0]}}},{\"../../lib\":503,\"../../lib/gup\":500,\"./constants\":892,\"@plotly/d3\":58}],890:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../plots/get_data\").getModuleCalcData,a=t(\"./plot\"),o=t(\"../../constants/xmlns_namespaces\");r.name=\"parcoords\",r.plot=function(t){var e=i(t.calcdata,\"parcoords\")[0];e.length&&a(t,e)},r.clean=function(t,e,r,n){var i=n._has&&n._has(\"parcoords\"),a=e._has&&e._has(\"parcoords\");i&&!a&&(n._paperdiv.selectAll(\".parcoords\").remove(),n._glimages.selectAll(\"*\").remove())},r.toSVG=function(t){var e=t._fullLayout._glimages,r=n.select(t).selectAll(\".svg-container\");r.filter((function(t,e){return e===r.size()-1})).selectAll(\".gl-canvas-context, .gl-canvas-focus\").each((function(){var t=this.toDataURL(\"image/png\");e.append(\"svg:image\").attr({xmlns:o.svg,\"xlink:href\":t,preserveAspectRatio:\"none\",x:0,y:0,width:this.style.width,height:this.style.height})})),window.setTimeout((function(){n.selectAll(\"#filterBarPattern\").attr(\"id\",\"filterBarPattern\")}),60)}},{\"../../constants/xmlns_namespaces\":480,\"../../plots/get_data\":593,\"./plot\":899,\"@plotly/d3\":58}],891:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").isArrayOrTypedArray,i=t(\"../../components/colorscale\"),a=t(\"../../lib/gup\").wrap;e.exports=function(t,e){var r,o;return i.hasColorscale(e,\"line\")&&n(e.line.color)?(r=e.line.color,o=i.extractOpts(e.line).colorscale,i.calc(t,e,{vals:r,containerStr:\"line\",cLetter:\"c\"})):(r=function(t){for(var e=new Array(t),r=0;rf&&(n.log(\"parcoords traces support up to \"+f+\" dimensions at the moment\"),d.splice(f));var g=s(t,e,{name:\"dimensions\",layout:l,handleItemDefaults:p}),m=function(t,e,r,o,s){var l=s(\"line.color\",r);if(i(t,\"line\")&&n.isArrayOrTypedArray(l)){if(l.length)return s(\"line.colorscale\"),a(t,e,o,s,{prefix:\"line.\",cLetter:\"c\"}),l.length;e.line.color=r}return 1/0}(t,e,r,l,u);o(e,l,u),Array.isArray(g)&&g.length||(e.visible=!1),h(e,g,\"values\",m);var v={family:l.font.family,size:Math.round(l.font.size/1.2),color:l.font.color};n.coerceFont(u,\"labelfont\",v),n.coerceFont(u,\"tickfont\",v),n.coerceFont(u,\"rangefont\",v),u(\"labelangle\"),u(\"labelside\")}},{\"../../components/colorscale/defaults\":376,\"../../components/colorscale/helpers\":377,\"../../lib\":503,\"../../plots/array_container_defaults\":549,\"../../plots/cartesian/axes\":554,\"../../plots/domain\":584,\"./attributes\":888,\"./axisbrush\":889,\"./constants\":892,\"./merge_length\":897}],894:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").isTypedArray;r.convertTypedArray=function(t){return n(t)?Array.prototype.slice.call(t):t},r.isOrdinal=function(t){return!!t.tickvals},r.isVisible=function(t){return t.visible||!(\"visible\"in t)}},{\"../../lib\":503}],895:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),calc:t(\"./calc\"),plot:t(\"./plot\"),colorbar:{container:\"line\",min:\"cmin\",max:\"cmax\"},moduleType:\"trace\",name:\"parcoords\",basePlotModule:t(\"./base_plot\"),categories:[\"gl\",\"regl\",\"noOpacity\",\"noHover\"],meta:{}}},{\"./attributes\":888,\"./base_plot\":890,\"./calc\":891,\"./defaults\":893,\"./plot\":899}],896:[function(t,e,r){\"use strict\";var n=t(\"glslify\"),i=n([\"precision highp float;\\n#define GLSLIFY 1\\n\\nvarying vec4 fragColor;\\n\\nattribute vec4 p01_04, p05_08, p09_12, p13_16,\\n p17_20, p21_24, p25_28, p29_32,\\n p33_36, p37_40, p41_44, p45_48,\\n p49_52, p53_56, p57_60, colors;\\n\\nuniform mat4 dim0A, dim1A, dim0B, dim1B, dim0C, dim1C, dim0D, dim1D,\\n loA, hiA, loB, hiB, loC, hiC, loD, hiD;\\n\\nuniform vec2 resolution, viewBoxPos, viewBoxSize;\\nuniform float maskHeight;\\nuniform float drwLayer; // 0: context, 1: focus, 2: pick\\nuniform vec4 contextColor;\\nuniform sampler2D maskTexture, palette;\\n\\nbool isPick = (drwLayer > 1.5);\\nbool isContext = (drwLayer < 0.5);\\n\\nconst vec4 ZEROS = vec4(0.0, 0.0, 0.0, 0.0);\\nconst vec4 UNITS = vec4(1.0, 1.0, 1.0, 1.0);\\n\\nfloat val(mat4 p, mat4 v) {\\n return dot(matrixCompMult(p, v) * UNITS, UNITS);\\n}\\n\\nfloat axisY(float ratio, mat4 A, mat4 B, mat4 C, mat4 D) {\\n float y1 = val(A, dim0A) + val(B, dim0B) + val(C, dim0C) + val(D, dim0D);\\n float y2 = val(A, dim1A) + val(B, dim1B) + val(C, dim1C) + val(D, dim1D);\\n return y1 * (1.0 - ratio) + y2 * ratio;\\n}\\n\\nint iMod(int a, int b) {\\n return a - b * (a / b);\\n}\\n\\nbool fOutside(float p, float lo, float hi) {\\n return (lo < hi) && (lo > p || p > hi);\\n}\\n\\nbool vOutside(vec4 p, vec4 lo, vec4 hi) {\\n return (\\n fOutside(p[0], lo[0], hi[0]) ||\\n fOutside(p[1], lo[1], hi[1]) ||\\n fOutside(p[2], lo[2], hi[2]) ||\\n fOutside(p[3], lo[3], hi[3])\\n );\\n}\\n\\nbool mOutside(mat4 p, mat4 lo, mat4 hi) {\\n return (\\n vOutside(p[0], lo[0], hi[0]) ||\\n vOutside(p[1], lo[1], hi[1]) ||\\n vOutside(p[2], lo[2], hi[2]) ||\\n vOutside(p[3], lo[3], hi[3])\\n );\\n}\\n\\nbool outsideBoundingBox(mat4 A, mat4 B, mat4 C, mat4 D) {\\n return mOutside(A, loA, hiA) ||\\n mOutside(B, loB, hiB) ||\\n mOutside(C, loC, hiC) ||\\n mOutside(D, loD, hiD);\\n}\\n\\nbool outsideRasterMask(mat4 A, mat4 B, mat4 C, mat4 D) {\\n mat4 pnts[4];\\n pnts[0] = A;\\n pnts[1] = B;\\n pnts[2] = C;\\n pnts[3] = D;\\n\\n for(int i = 0; i < 4; ++i) {\\n for(int j = 0; j < 4; ++j) {\\n for(int k = 0; k < 4; ++k) {\\n if(0 == iMod(\\n int(255.0 * texture2D(maskTexture,\\n vec2(\\n (float(i * 2 + j / 2) + 0.5) / 8.0,\\n (pnts[i][j][k] * (maskHeight - 1.0) + 1.0) / maskHeight\\n ))[3]\\n ) / int(pow(2.0, float(iMod(j * 4 + k, 8)))),\\n 2\\n )) return true;\\n }\\n }\\n }\\n return false;\\n}\\n\\nvec4 position(bool isContext, float v, mat4 A, mat4 B, mat4 C, mat4 D) {\\n float x = 0.5 * sign(v) + 0.5;\\n float y = axisY(x, A, B, C, D);\\n float z = 1.0 - abs(v);\\n\\n z += isContext ? 0.0 : 2.0 * float(\\n outsideBoundingBox(A, B, C, D) ||\\n outsideRasterMask(A, B, C, D)\\n );\\n\\n return vec4(\\n 2.0 * (vec2(x, y) * viewBoxSize + viewBoxPos) / resolution - 1.0,\\n z,\\n 1.0\\n );\\n}\\n\\nvoid main() {\\n mat4 A = mat4(p01_04, p05_08, p09_12, p13_16);\\n mat4 B = mat4(p17_20, p21_24, p25_28, p29_32);\\n mat4 C = mat4(p33_36, p37_40, p41_44, p45_48);\\n mat4 D = mat4(p49_52, p53_56, p57_60, ZEROS);\\n\\n float v = colors[3];\\n\\n gl_Position = position(isContext, v, A, B, C, D);\\n\\n fragColor =\\n isContext ? vec4(contextColor) :\\n isPick ? vec4(colors.rgb, 1.0) : texture2D(palette, vec2(abs(v), 0.5));\\n}\\n\"]),a=n([\"precision highp float;\\n#define GLSLIFY 1\\n\\nvarying vec4 fragColor;\\n\\nvoid main() {\\n gl_FragColor = fragColor;\\n}\\n\"]),o=t(\"./constants\").maxDimensionCount,s=t(\"../../lib\"),l=new Uint8Array(4),c=new Uint8Array(4),u={shape:[256,1],format:\"rgba\",type:\"uint8\",mag:\"nearest\",min:\"nearest\"};function f(t,e,r,n,i){var a=t._gl;a.enable(a.SCISSOR_TEST),a.scissor(e,r,n,i),t.clear({color:[0,0,0,0],depth:1})}function h(t,e,r,n,i,a){var o=a.key;r.drawCompleted||(!function(t){t.read({x:0,y:0,width:1,height:1,data:l})}(t),r.drawCompleted=!0),function s(l){var c=Math.min(n,i-l*n);0===l&&(window.cancelAnimationFrame(r.currentRafs[o]),delete r.currentRafs[o],f(t,a.scissorX,a.scissorY,a.scissorWidth,a.viewBoxSize[1])),r.clearOnly||(a.count=2*c,a.offset=2*l*n,e(a),l*n+c>>8*e)%256/255}function g(t,e,r){for(var n=new Array(8*e),i=0,a=0;au&&(u=t[i].dim1.canvasX,o=i);0===s&&f(T,0,0,r.canvasWidth,r.canvasHeight);var p=function(t){var e,r,n,i=[[],[]];for(n=0;n<64;n++){var a=!t&&no._length&&(S=S.slice(0,o._length));var L,C=o.tickvals;function P(t,e){return{val:t,text:L[e]}}function I(t,e){return t.val-e.val}if(Array.isArray(C)&&C.length){L=o.ticktext,Array.isArray(L)&&L.length?L.length>C.length?L=L.slice(0,C.length):C.length>L.length&&(C=C.slice(0,L.length)):L=C.map(a(o.tickformat));for(var O=1;O=r||l>=i)return;var c=t.lineLayer.readPixel(s,i-1-l),u=0!==c[3],f=u?c[2]+256*(c[1]+256*c[0]):null,h={x:s,y:l,clientX:e.clientX,clientY:e.clientY,dataIndex:t.model.key,curveNumber:f};f!==B&&(u?a.hover(h):a.unhover&&a.unhover(h),B=f)}})),F.style(\"opacity\",(function(t){return t.pick?0:1})),h.style(\"background\",\"rgba(255, 255, 255, 0)\");var N=h.selectAll(\".\"+y.cn.parcoords).data(R,d);N.exit().remove(),N.enter().append(\"g\").classed(y.cn.parcoords,!0).style(\"shape-rendering\",\"crispEdges\").style(\"pointer-events\",\"none\"),N.attr(\"transform\",(function(t){return c(t.model.translateX,t.model.translateY)}));var j=N.selectAll(\".\"+y.cn.parcoordsControlView).data(g,d);j.enter().append(\"g\").classed(y.cn.parcoordsControlView,!0),j.attr(\"transform\",(function(t){return c(t.model.pad.l,t.model.pad.t)}));var U=j.selectAll(\".\"+y.cn.yAxis).data((function(t){return t.dimensions}),d);U.enter().append(\"g\").classed(y.cn.yAxis,!0),j.each((function(t){O(U,t,_)})),F.each((function(t){if(t.viewModel){!t.lineLayer||a?t.lineLayer=b(this,t):t.lineLayer.update(t),(t.key||0===t.key)&&(t.viewModel[t.key]=t.lineLayer);var e=!t.context||a;t.lineLayer.render(t.viewModel.panels,e)}})),U.attr(\"transform\",(function(t){return c(t.xScale(t.xIndex),0)})),U.call(n.behavior.drag().origin((function(t){return t})).on(\"drag\",(function(t){var e=t.parent;S.linePickActive(!1),t.x=Math.max(-y.overdrag,Math.min(t.model.width+y.overdrag,n.event.x)),t.canvasX=t.x*t.model.canvasPixelRatio,U.sort((function(t,e){return t.x-e.x})).each((function(e,r){e.xIndex=r,e.x=t===e?e.x:e.xScale(e.xIndex),e.canvasX=e.x*e.model.canvasPixelRatio})),O(U,e,_),U.filter((function(e){return 0!==Math.abs(t.xIndex-e.xIndex)})).attr(\"transform\",(function(t){return c(t.xScale(t.xIndex),0)})),n.select(this).attr(\"transform\",c(t.x,0)),U.each((function(r,n,i){i===t.parent.key&&(e.dimensions[n]=r)})),e.contextLayer&&e.contextLayer.render(e.panels,!1,!E(e)),e.focusLayer.render&&e.focusLayer.render(e.panels)})).on(\"dragend\",(function(t){var e=t.parent;t.x=t.xScale(t.xIndex),t.canvasX=t.x*t.model.canvasPixelRatio,O(U,e,_),n.select(this).attr(\"transform\",(function(t){return c(t.x,0)})),e.contextLayer&&e.contextLayer.render(e.panels,!1,!E(e)),e.focusLayer&&e.focusLayer.render(e.panels),e.pickLayer&&e.pickLayer.render(e.panels,!0),S.linePickActive(!0),a&&a.axesMoved&&a.axesMoved(e.key,e.dimensions.map((function(t){return t.crossfilterDimensionIndex})))}))),U.exit().remove();var V=U.selectAll(\".\"+y.cn.axisOverlays).data(g,d);V.enter().append(\"g\").classed(y.cn.axisOverlays,!0),V.selectAll(\".\"+y.cn.axis).remove();var H=V.selectAll(\".\"+y.cn.axis).data(g,d);H.enter().append(\"g\").classed(y.cn.axis,!0),H.each((function(t){var e=t.model.height/t.model.tickDistance,r=t.domainScale,i=r.domain();n.select(this).call(n.svg.axis().orient(\"left\").tickSize(4).outerTickSize(2).ticks(e,t.tickFormat).tickValues(t.ordinal?i:null).tickFormat((function(e){return v.isOrdinal(t)?e:z(t.model.dimensions[t.visibleIndex],e)})).scale(r)),f.font(H.selectAll(\"text\"),t.model.tickFont)})),H.selectAll(\".domain, .tick>line\").attr(\"fill\",\"none\").attr(\"stroke\",\"black\").attr(\"stroke-opacity\",.25).attr(\"stroke-width\",\"1px\"),H.selectAll(\"text\").style(\"text-shadow\",u.makeTextShadow(T)).style(\"cursor\",\"default\");var q=V.selectAll(\".\"+y.cn.axisHeading).data(g,d);q.enter().append(\"g\").classed(y.cn.axisHeading,!0);var G=q.selectAll(\".\"+y.cn.axisTitle).data(g,d);G.enter().append(\"text\").classed(y.cn.axisTitle,!0).attr(\"text-anchor\",\"middle\").style(\"cursor\",\"ew-resize\").style(\"pointer-events\",\"auto\"),G.text((function(t){return t.label})).each((function(e){var r=n.select(this);f.font(r,e.model.labelFont),u.convertToTspans(r,t)})).attr(\"transform\",(function(t){var e=I(t.model.labelAngle,t.model.labelSide),r=y.axisTitleOffset;return(e.dir>0?\"\":c(0,2*r+t.model.height))+l(e.degrees)+c(-r*e.dx,-r*e.dy)})).attr(\"text-anchor\",(function(t){var e=I(t.model.labelAngle,t.model.labelSide);return 2*Math.abs(e.dx)>Math.abs(e.dy)?e.dir*e.dx<0?\"start\":\"end\":\"middle\"}));var Y=V.selectAll(\".\"+y.cn.axisExtent).data(g,d);Y.enter().append(\"g\").classed(y.cn.axisExtent,!0);var W=Y.selectAll(\".\"+y.cn.axisExtentTop).data(g,d);W.enter().append(\"g\").classed(y.cn.axisExtentTop,!0),W.attr(\"transform\",c(0,-y.axisExtentOffset));var X=W.selectAll(\".\"+y.cn.axisExtentTopText).data(g,d);X.enter().append(\"text\").classed(y.cn.axisExtentTopText,!0).call(P),X.text((function(t){return D(t,!0)})).each((function(t){f.font(n.select(this),t.model.rangeFont)}));var Z=Y.selectAll(\".\"+y.cn.axisExtentBottom).data(g,d);Z.enter().append(\"g\").classed(y.cn.axisExtentBottom,!0),Z.attr(\"transform\",(function(t){return c(0,t.model.height+y.axisExtentOffset)}));var J=Z.selectAll(\".\"+y.cn.axisExtentBottomText).data(g,d);J.enter().append(\"text\").classed(y.cn.axisExtentBottomText,!0).attr(\"dy\",\"0.75em\").call(P),J.text((function(t){return D(t,!1)})).each((function(t){f.font(n.select(this),t.model.rangeFont)})),x.ensureAxisBrush(V,T)}},{\"../../components/colorscale\":378,\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/gup\":500,\"../../lib/svg_text_utils\":529,\"../../plots/cartesian/axes\":554,\"./axisbrush\":889,\"./constants\":892,\"./helpers\":894,\"./lines\":896,\"@plotly/d3\":58,\"color-rgba\":91}],899:[function(t,e,r){\"use strict\";var n=t(\"./parcoords\"),i=t(\"../../lib/prepare_regl\"),a=t(\"./helpers\").isVisible;function o(t,e,r){var n=e.indexOf(r),i=t.indexOf(n);return-1===i&&(i+=e.length),i}e.exports=function(t,e){var r=t._fullLayout;if(i(t)){var s={},l={},c={},u={},f=r._size;e.forEach((function(e,r){var n=e[0].trace;c[r]=n.index;var i=u[r]=n._fullInput.index;s[r]=t.data[i].dimensions,l[r]=t.data[i].dimensions.slice()}));n(t,e,{width:f.w,height:f.h,margin:{t:f.t,r:f.r,b:f.b,l:f.l}},{filterChanged:function(e,n,i){var a=l[e][n],o=i.map((function(t){return t.slice()})),s=\"dimensions[\"+n+\"].constraintrange\",f=r._tracePreGUI[t._fullData[c[e]]._fullInput.uid];if(void 0===f[s]){var h=a.constraintrange;f[s]=h||null}var p=t._fullData[c[e]].dimensions[n];o.length?(1===o.length&&(o=o[0]),a.constraintrange=o,p.constraintrange=o.slice(),o=[o]):(delete a.constraintrange,delete p.constraintrange,o=null);var d={};d[s]=o,t.emit(\"plotly_restyle\",[d,[u[e]]])},hover:function(e){t.emit(\"plotly_hover\",e)},unhover:function(e){t.emit(\"plotly_unhover\",e)},axesMoved:function(e,r){var n=function(t,e){return function(r,n){return o(t,e,r)-o(t,e,n)}}(r,l[e].filter(a));s[e].sort(n),l[e].filter((function(t){return!a(t)})).sort((function(t){return l[e].indexOf(t)})).forEach((function(t){s[e].splice(s[e].indexOf(t),1),s[e].splice(l[e].indexOf(t),0,t)})),t.emit(\"plotly_restyle\",[{dimensions:[s[e]]},[u[e]]])}})}}},{\"../../lib/prepare_regl\":516,\"./helpers\":894,\"./parcoords\":898}],900:[function(t,e,r){\"use strict\";var n=t(\"../../plots/attributes\"),i=t(\"../../plots/domain\").attributes,a=t(\"../../plots/font_attributes\"),o=t(\"../../components/color/attributes\"),s=t(\"../../plots/template_attributes\").hovertemplateAttrs,l=t(\"../../plots/template_attributes\").texttemplateAttrs,c=t(\"../../lib/extend\").extendFlat,u=a({editType:\"plot\",arrayOk:!0,colorEditType:\"plot\"});e.exports={labels:{valType:\"data_array\",editType:\"calc\"},label0:{valType:\"number\",dflt:0,editType:\"calc\"},dlabel:{valType:\"number\",dflt:1,editType:\"calc\"},values:{valType:\"data_array\",editType:\"calc\"},marker:{colors:{valType:\"data_array\",editType:\"calc\"},line:{color:{valType:\"color\",dflt:o.defaultLine,arrayOk:!0,editType:\"style\"},width:{valType:\"number\",min:0,dflt:0,arrayOk:!0,editType:\"style\"},editType:\"calc\"},editType:\"calc\"},text:{valType:\"data_array\",editType:\"plot\"},hovertext:{valType:\"string\",dflt:\"\",arrayOk:!0,editType:\"style\"},scalegroup:{valType:\"string\",dflt:\"\",editType:\"calc\"},textinfo:{valType:\"flaglist\",flags:[\"label\",\"text\",\"value\",\"percent\"],extras:[\"none\"],editType:\"calc\"},hoverinfo:c({},n.hoverinfo,{flags:[\"label\",\"text\",\"value\",\"percent\",\"name\"]}),hovertemplate:s({},{keys:[\"label\",\"color\",\"value\",\"percent\",\"text\"]}),texttemplate:l({editType:\"plot\"},{keys:[\"label\",\"color\",\"value\",\"percent\",\"text\"]}),textposition:{valType:\"enumerated\",values:[\"inside\",\"outside\",\"auto\",\"none\"],dflt:\"auto\",arrayOk:!0,editType:\"plot\"},textfont:c({},u,{}),insidetextorientation:{valType:\"enumerated\",values:[\"horizontal\",\"radial\",\"tangential\",\"auto\"],dflt:\"auto\",editType:\"plot\"},insidetextfont:c({},u,{}),outsidetextfont:c({},u,{}),automargin:{valType:\"boolean\",dflt:!1,editType:\"plot\"},title:{text:{valType:\"string\",dflt:\"\",editType:\"plot\"},font:c({},u,{}),position:{valType:\"enumerated\",values:[\"top left\",\"top center\",\"top right\",\"middle center\",\"bottom left\",\"bottom center\",\"bottom right\"],editType:\"plot\"},editType:\"plot\"},domain:i({name:\"pie\",trace:!0,editType:\"calc\"}),hole:{valType:\"number\",min:0,max:1,dflt:0,editType:\"calc\"},sort:{valType:\"boolean\",dflt:!0,editType:\"calc\"},direction:{valType:\"enumerated\",values:[\"clockwise\",\"counterclockwise\"],dflt:\"counterclockwise\",editType:\"calc\"},rotation:{valType:\"number\",min:-360,max:360,dflt:0,editType:\"calc\"},pull:{valType:\"number\",min:0,max:1,dflt:0,arrayOk:!0,editType:\"calc\"},_deprecated:{title:{valType:\"string\",dflt:\"\",editType:\"calc\"},titlefont:c({},u,{}),titleposition:{valType:\"enumerated\",values:[\"top left\",\"top center\",\"top right\",\"middle center\",\"bottom left\",\"bottom center\",\"bottom right\"],editType:\"calc\"}}}},{\"../../components/color/attributes\":365,\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/domain\":584,\"../../plots/font_attributes\":585,\"../../plots/template_attributes\":633}],901:[function(t,e,r){\"use strict\";var n=t(\"../../plots/plots\");r.name=\"pie\",r.plot=function(t,e,i,a){n.plotBasePlot(r.name,t,e,i,a)},r.clean=function(t,e,i,a){n.cleanBasePlot(r.name,t,e,i,a)}},{\"../../plots/plots\":619}],902:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"tinycolor2\"),a=t(\"../../components/color\"),o={};function s(t){return function(e,r){return!!e&&(!!(e=i(e)).isValid()&&(e=a.addOpacity(e,e.getAlpha()),t[r]||(t[r]=e),e))}}function l(t,e){var r,n=JSON.stringify(t),a=e[n];if(!a){for(a=t.slice(),r=0;r=0})),(\"funnelarea\"===e.type?v:e.sort)&&a.sort((function(t,e){return e.v-t.v})),a[0]&&(a[0].vTotal=m),a},crossTraceCalc:function(t,e){var r=(e||{}).type;r||(r=\"pie\");var n=t._fullLayout,i=t.calcdata,a=n[r+\"colorway\"],s=n[\"_\"+r+\"colormap\"];n[\"extend\"+r+\"colors\"]&&(a=l(a,o));for(var c=0,u=0;u0){s=!0;break}}s||(o=0)}return{hasLabels:r,hasValues:a,len:o}}e.exports={handleLabelsAndValues:l,supplyDefaults:function(t,e,r,n){function c(r,n){return i.coerce(t,e,a,r,n)}var u=l(c(\"labels\"),c(\"values\")),f=u.len;if(e._hasLabels=u.hasLabels,e._hasValues=u.hasValues,!e._hasLabels&&e._hasValues&&(c(\"label0\"),c(\"dlabel\")),f){e._length=f,c(\"marker.line.width\")&&c(\"marker.line.color\"),c(\"marker.colors\"),c(\"scalegroup\");var h,p=c(\"text\"),d=c(\"texttemplate\");if(d||(h=c(\"textinfo\",Array.isArray(p)?\"text+percent\":\"percent\")),c(\"hovertext\"),c(\"hovertemplate\"),d||h&&\"none\"!==h){var g=c(\"textposition\");s(t,e,n,c,g,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),(Array.isArray(g)||\"auto\"===g||\"outside\"===g)&&c(\"automargin\"),(\"inside\"===g||\"auto\"===g||Array.isArray(g))&&c(\"insidetextorientation\")}o(e,n,c);var m=c(\"hole\");if(c(\"title.text\")){var v=c(\"title.position\",m?\"middle center\":\"top center\");m||\"middle center\"!==v||(e.title.position=\"top center\"),i.coerceFont(c,\"title.font\",n.font)}c(\"sort\"),c(\"direction\"),c(\"rotation\"),c(\"pull\")}else e.visible=!1}}},{\"../../lib\":503,\"../../plots/domain\":584,\"../bar/defaults\":652,\"./attributes\":900,\"fast-isnumeric\":190}],904:[function(t,e,r){\"use strict\";var n=t(\"../../components/fx/helpers\").appendArrayMultiPointValues;e.exports=function(t,e){var r={curveNumber:e.index,pointNumbers:t.pts,data:e._input,fullData:e,label:t.label,color:t.color,value:t.v,percent:t.percent,text:t.text,bbox:t.bbox,v:t.v};return 1===t.pts.length&&(r.pointNumber=r.i=t.pts[0]),n(r,e,t.pts),\"funnelarea\"===e.type&&(delete r.v,delete r.i),r}},{\"../../components/fx/helpers\":402}],905:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");function i(t){return-1!==t.indexOf(\"e\")?t.replace(/[.]?0+e/,\"e\"):-1!==t.indexOf(\".\")?t.replace(/[.]?0+$/,\"\"):t}r.formatPiePercent=function(t,e){var r=i((100*t).toPrecision(3));return n.numSeparate(r,e)+\"%\"},r.formatPieValue=function(t,e){var r=i(t.toPrecision(10));return n.numSeparate(r,e)},r.getFirstFilled=function(t,e){if(Array.isArray(t))for(var r=0;r\"),name:f.hovertemplate||-1!==h.indexOf(\"name\")?f.name:void 0,idealAlign:t.pxmid[0]<0?\"left\":\"right\",color:m.castOption(_.bgcolor,t.pts)||t.color,borderColor:m.castOption(_.bordercolor,t.pts),fontFamily:m.castOption(w.family,t.pts),fontSize:m.castOption(w.size,t.pts),fontColor:m.castOption(w.color,t.pts),nameLength:m.castOption(_.namelength,t.pts),textAlign:m.castOption(_.align,t.pts),hovertemplate:m.castOption(f.hovertemplate,t.pts),hovertemplateLabels:t,eventData:[v(t,f)]},{container:r._hoverlayer.node(),outerContainer:r._paper.node(),gd:e,inOut_bbox:T}),t.bbox=T[0],c._hasHoverLabel=!0}c._hasHoverEvent=!0,e.emit(\"plotly_hover\",{points:[v(t,f)],event:n.event})}})),t.on(\"mouseout\",(function(t){var r=e._fullLayout,i=e._fullData[c.index],o=n.select(this).datum();c._hasHoverEvent&&(t.originalEvent=n.event,e.emit(\"plotly_unhover\",{points:[v(o,i)],event:n.event}),c._hasHoverEvent=!1),c._hasHoverLabel&&(a.loneUnhover(r._hoverlayer.node()),c._hasHoverLabel=!1)})),t.on(\"click\",(function(t){var r=e._fullLayout,i=e._fullData[c.index];e._dragging||!1===r.hovermode||(e._hoverdata=[v(t,i)],a.click(e,n.event))}))}function b(t,e,r){var n=m.castOption(t.insidetextfont.color,e.pts);!n&&t._input.textfont&&(n=m.castOption(t._input.textfont.color,e.pts));var i=m.castOption(t.insidetextfont.family,e.pts)||m.castOption(t.textfont.family,e.pts)||r.family,a=m.castOption(t.insidetextfont.size,e.pts)||m.castOption(t.textfont.size,e.pts)||r.size;return{color:n||o.contrast(e.color),family:i,size:a}}function _(t,e){for(var r,n,i=0;ie&&e>n||r=-4;m-=2)v(Math.PI*m,\"tan\");for(m=4;m>=-4;m-=2)v(Math.PI*(m+1),\"tan\")}if(f||p){for(m=4;m>=-4;m-=2)v(Math.PI*(m+1.5),\"rad\");for(m=4;m>=-4;m-=2)v(Math.PI*(m+.5),\"rad\")}}if(s||d||f){var y=Math.sqrt(t.width*t.width+t.height*t.height);if((a={scale:i*n*2/y,rCenter:1-i,rotate:0}).textPosAngle=(e.startangle+e.stopangle)/2,a.scale>=1)return a;g.push(a)}(d||p)&&((a=T(t,n,o,l,c)).textPosAngle=(e.startangle+e.stopangle)/2,g.push(a)),(d||h)&&((a=k(t,n,o,l,c)).textPosAngle=(e.startangle+e.stopangle)/2,g.push(a));for(var x=0,b=0,_=0;_=1)break}return g[x]}function T(t,e,r,n,i){e=Math.max(0,e-2*g);var a=t.width/t.height,o=S(a,n,e,r);return{scale:2*o/t.height,rCenter:A(a,o/e),rotate:M(i)}}function k(t,e,r,n,i){e=Math.max(0,e-2*g);var a=t.height/t.width,o=S(a,n,e,r);return{scale:2*o/t.width,rCenter:A(a,o/e),rotate:M(i+Math.PI/2)}}function A(t,e){return Math.cos(e)-t*e}function M(t){return(180/Math.PI*t+720)%180-90}function S(t,e,r,n){var i=t+1/(2*Math.tan(e));return r*Math.min(1/(Math.sqrt(i*i+.5)+i),n/(Math.sqrt(t*t+n/2)+t))}function E(t,e){return t.v!==e.vTotal||e.trace.hole?Math.min(1/(1+1/Math.sin(t.halfangle)),t.ring/2):1}function L(t,e){var r=e.pxmid[0],n=e.pxmid[1],i=t.width/2,a=t.height/2;return r<0&&(i*=-1),n<0&&(a*=-1),{scale:1,rCenter:1,rotate:0,x:i+Math.abs(a)*(i>0?1:-1)/2,y:a/(1+r*r/(n*n)),outside:!0}}function C(t,e){var r,n,i,a=t.trace,o={x:t.cx,y:t.cy},s={tx:0,ty:0};s.ty+=a.title.font.size,i=I(a),-1!==a.title.position.indexOf(\"top\")?(o.y-=(1+i)*t.r,s.ty-=t.titleBox.height):-1!==a.title.position.indexOf(\"bottom\")&&(o.y+=(1+i)*t.r);var l,c,u=(l=t.r,c=t.trace.aspectratio,l/(void 0===c?1:c)),f=e.w*(a.domain.x[1]-a.domain.x[0])/2;return-1!==a.title.position.indexOf(\"left\")?(f+=u,o.x-=(1+i)*u,s.tx+=t.titleBox.width/2):-1!==a.title.position.indexOf(\"center\")?f*=2:-1!==a.title.position.indexOf(\"right\")&&(f+=u,o.x+=(1+i)*u,s.tx-=t.titleBox.width/2),r=f/t.titleBox.width,n=P(t,e)/t.titleBox.height,{x:o.x,y:o.y,scale:Math.min(r,n),tx:s.tx,ty:s.ty}}function P(t,e){var r=t.trace,n=e.h*(r.domain.y[1]-r.domain.y[0]);return Math.min(t.titleBox.height,n/2)}function I(t){var e,r=t.pull;if(!r)return 0;if(Array.isArray(r))for(r=0,e=0;er&&(r=t.pull[e]);return r}function O(t,e){for(var r=[],n=0;n1?(c=r.r,u=c/i.aspectratio):(u=r.r,c=u*i.aspectratio),c*=(1+i.baseratio)/2,l=c*u}o=Math.min(o,l/r.vTotal)}for(n=0;n\")}if(a){var x=l.castOption(i,e.i,\"texttemplate\");if(x){var b=function(t){return{label:t.label,value:t.v,valueLabel:m.formatPieValue(t.v,n.separators),percent:t.v/r.vTotal,percentLabel:m.formatPiePercent(t.v/r.vTotal,n.separators),color:t.color,text:t.text,customdata:l.castOption(i,t.i,\"customdata\")}}(e),_=m.getFirstFilled(i.text,e.pts);(y(_)||\"\"===_)&&(b.text=_),e.text=l.texttemplateString(x,b,t._fullLayout._d3locale,b,i._meta||{})}else e.text=\"\"}}function R(t,e){var r=t.rotate*Math.PI/180,n=Math.cos(r),i=Math.sin(r),a=(e.left+e.right)/2,o=(e.top+e.bottom)/2;t.textX=a*n-o*i,t.textY=a*i+o*n,t.noCenter=!0}e.exports={plot:function(t,e){var r=t._fullLayout,a=r._size;d(\"pie\",r),_(e,t),O(e,a);var h=l.makeTraceGroups(r._pielayer,e,\"trace\").each((function(e){var h=n.select(this),d=e[0],g=d.trace;!function(t){var e,r,n,i=t[0],a=i.r,o=i.trace,s=m.getRotationAngle(o.rotation),l=2*Math.PI/i.vTotal,c=\"px0\",u=\"px1\";if(\"counterclockwise\"===o.direction){for(e=0;ei.vTotal/2?1:0,r.halfangle=Math.PI*Math.min(r.v/i.vTotal,.5),r.ring=1-o.hole,r.rInscribed=E(r,i))}(e),h.attr(\"stroke-linejoin\",\"round\"),h.each((function(){var v=n.select(this).selectAll(\"g.slice\").data(e);v.enter().append(\"g\").classed(\"slice\",!0),v.exit().remove();var y=[[[],[]],[[],[]]],_=!1;v.each((function(i,a){if(i.hidden)n.select(this).selectAll(\"path,g\").remove();else{i.pointNumber=i.i,i.curveNumber=g.index,y[i.pxmid[1]<0?0:1][i.pxmid[0]<0?0:1].push(i);var o=d.cx,c=d.cy,u=n.select(this),h=u.selectAll(\"path.surface\").data([i]);if(h.enter().append(\"path\").classed(\"surface\",!0).style({\"pointer-events\":\"all\"}),u.call(x,t,e),g.pull){var v=+m.castOption(g.pull,i.pts)||0;v>0&&(o+=v*i.pxmid[0],c+=v*i.pxmid[1])}i.cxFinal=o,i.cyFinal=c;var T=g.hole;if(i.v===d.vTotal){var k=\"M\"+(o+i.px0[0])+\",\"+(c+i.px0[1])+C(i.px0,i.pxmid,!0,1)+C(i.pxmid,i.px0,!0,1)+\"Z\";T?h.attr(\"d\",\"M\"+(o+T*i.px0[0])+\",\"+(c+T*i.px0[1])+C(i.px0,i.pxmid,!1,T)+C(i.pxmid,i.px0,!1,T)+\"Z\"+k):h.attr(\"d\",k)}else{var A=C(i.px0,i.px1,!0,1);if(T){var M=1-T;h.attr(\"d\",\"M\"+(o+T*i.px1[0])+\",\"+(c+T*i.px1[1])+C(i.px1,i.px0,!1,T)+\"l\"+M*i.px0[0]+\",\"+M*i.px0[1]+A+\"Z\")}else h.attr(\"d\",\"M\"+o+\",\"+c+\"l\"+i.px0[0]+\",\"+i.px0[1]+A+\"Z\")}D(t,i,d);var S=m.castOption(g.textposition,i.pts),E=u.selectAll(\"g.slicetext\").data(i.text&&\"none\"!==S?[0]:[]);E.enter().append(\"g\").classed(\"slicetext\",!0),E.exit().remove(),E.each((function(){var u=l.ensureSingle(n.select(this),\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),h=l.ensureUniformFontSize(t,\"outside\"===S?function(t,e,r){var n=m.castOption(t.outsidetextfont.color,e.pts)||m.castOption(t.textfont.color,e.pts)||r.color,i=m.castOption(t.outsidetextfont.family,e.pts)||m.castOption(t.textfont.family,e.pts)||r.family,a=m.castOption(t.outsidetextfont.size,e.pts)||m.castOption(t.textfont.size,e.pts)||r.size;return{color:n,family:i,size:a}}(g,i,r.font):b(g,i,r.font));u.text(i.text).attr({class:\"slicetext\",transform:\"\",\"text-anchor\":\"middle\"}).call(s.font,h).call(f.convertToTspans,t);var v,y=s.bBox(u.node());if(\"outside\"===S)v=L(y,i);else if(v=w(y,i,d),\"auto\"===S&&v.scale<1){var x=l.ensureUniformFontSize(t,g.outsidetextfont);u.call(s.font,x),v=L(y=s.bBox(u.node()),i)}var T=v.textPosAngle,k=void 0===T?i.pxmid:z(d.r,T);if(v.targetX=o+k[0]*v.rCenter+(v.x||0),v.targetY=c+k[1]*v.rCenter+(v.y||0),R(v,y),v.outside){var A=v.targetY;i.yLabelMin=A-y.height/2,i.yLabelMid=A,i.yLabelMax=A+y.height/2,i.labelExtraX=0,i.labelExtraY=0,_=!0}v.fontSize=h.size,p(g.type,v,r),e[a].transform=v,u.attr(\"transform\",l.getTextTransform(v))}))}function C(t,e,r,n){var a=n*(e[0]-t[0]),o=n*(e[1]-t[1]);return\"a\"+n*d.r+\",\"+n*d.r+\" 0 \"+i.largeArc+(r?\" 1 \":\" 0 \")+a+\",\"+o}}));var T=n.select(this).selectAll(\"g.titletext\").data(g.title.text?[0]:[]);if(T.enter().append(\"g\").classed(\"titletext\",!0),T.exit().remove(),T.each((function(){var e,r=l.ensureSingle(n.select(this),\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),i=g.title.text;g._meta&&(i=l.templateString(i,g._meta)),r.text(i).attr({class:\"titletext\",transform:\"\",\"text-anchor\":\"middle\"}).call(s.font,g.title.font).call(f.convertToTspans,t),e=\"middle center\"===g.title.position?function(t){var e=Math.sqrt(t.titleBox.width*t.titleBox.width+t.titleBox.height*t.titleBox.height);return{x:t.cx,y:t.cy,scale:t.trace.hole*t.r*2/e,tx:0,ty:-t.titleBox.height/2+t.trace.title.font.size}}(d):C(d,a),r.attr(\"transform\",u(e.x,e.y)+c(Math.min(1,e.scale))+u(e.tx,e.ty))})),_&&function(t,e){var r,n,i,a,o,s,l,c,u,f,h,p,d;function g(t,e){return t.pxmid[1]-e.pxmid[1]}function v(t,e){return e.pxmid[1]-t.pxmid[1]}function y(t,r){r||(r={});var i,c,u,h,p=r.labelExtraY+(n?r.yLabelMax:r.yLabelMin),d=n?t.yLabelMin:t.yLabelMax,g=n?t.yLabelMax:t.yLabelMin,v=t.cyFinal+o(t.px0[1],t.px1[1]),y=p-d;if(y*l>0&&(t.labelExtraY=y),Array.isArray(e.pull))for(c=0;c=(m.castOption(e.pull,u.pts)||0)||((t.pxmid[1]-u.pxmid[1])*l>0?(y=u.cyFinal+o(u.px0[1],u.px1[1])-d-t.labelExtraY)*l>0&&(t.labelExtraY+=y):(g+t.labelExtraY-v)*l>0&&(i=3*s*Math.abs(c-f.indexOf(t)),(h=u.cxFinal+a(u.px0[0],u.px1[0])+i-(t.cxFinal+t.pxmid[0])-t.labelExtraX)*s>0&&(t.labelExtraX+=h)))}for(n=0;n<2;n++)for(i=n?g:v,o=n?Math.max:Math.min,l=n?1:-1,r=0;r<2;r++){for(a=r?Math.max:Math.min,s=r?1:-1,(c=t[n][r]).sort(i),u=t[1-n][r],f=u.concat(c),p=[],h=0;hMath.abs(f)?s+=\"l\"+f*t.pxmid[0]/t.pxmid[1]+\",\"+f+\"H\"+(a+t.labelExtraX+c):s+=\"l\"+t.labelExtraX+\",\"+u+\"v\"+(f-u)+\"h\"+c}else s+=\"V\"+(t.yLabelMid+t.labelExtraY)+\"h\"+c;l.ensureSingle(r,\"path\",\"textline\").call(o.stroke,e.outsidetextfont.color).attr({\"stroke-width\":Math.min(2,e.outsidetextfont.size/8),d:s,fill:\"none\"})}else r.select(\"path.textline\").remove()}))}(v,g),_&&g.automargin){var k=s.bBox(h.node()),A=g.domain,M=a.w*(A.x[1]-A.x[0]),S=a.h*(A.y[1]-A.y[0]),E=(.5*M-d.r)/a.w,P=(.5*S-d.r)/a.h;i.autoMargin(t,\"pie.\"+g.uid+\".automargin\",{xl:A.x[0]-E,xr:A.x[1]+E,yb:A.y[0]-P,yt:A.y[1]+P,l:Math.max(d.cx-d.r-k.left,0),r:Math.max(k.right-(d.cx+d.r),0),b:Math.max(k.bottom-(d.cy+d.r),0),t:Math.max(d.cy-d.r-k.top,0),pad:5})}}))}));setTimeout((function(){h.selectAll(\"tspan\").each((function(){var t=n.select(this);t.attr(\"dy\")&&t.attr(\"dy\",t.attr(\"dy\"))}))}),0)},formatSliceLabel:D,transformInsideText:w,determineInsideTextFont:b,positionTitleOutside:C,prerenderTitles:_,layoutAreas:O,attachFxHandlers:x,computeTransform:R}},{\"../../components/color\":366,\"../../components/drawing\":388,\"../../components/fx\":406,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../../plots/plots\":619,\"../bar/constants\":650,\"../bar/uniform_text\":664,\"./event_data\":904,\"./helpers\":905,\"@plotly/d3\":58}],910:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"./style_one\"),a=t(\"../bar/uniform_text\").resizeText;e.exports=function(t){var e=t._fullLayout._pielayer.selectAll(\".trace\");a(t,e,\"pie\"),e.each((function(t){var e=t[0].trace,r=n.select(this);r.style({opacity:e.opacity}),r.selectAll(\"path.surface\").each((function(t){n.select(this).call(i,t,e)}))}))}},{\"../bar/uniform_text\":664,\"./style_one\":911,\"@plotly/d3\":58}],911:[function(t,e,r){\"use strict\";var n=t(\"../../components/color\"),i=t(\"./helpers\").castOption;e.exports=function(t,e,r){var a=r.marker.line,o=i(a.color,e.pts)||n.defaultLine,s=i(a.width,e.pts)||0;t.style(\"stroke-width\",s).call(n.fill,e.color).call(n.stroke,o)}},{\"../../components/color\":366,\"./helpers\":905}],912:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\");e.exports={x:n.x,y:n.y,xy:{valType:\"data_array\",editType:\"calc\"},indices:{valType:\"data_array\",editType:\"calc\"},xbounds:{valType:\"data_array\",editType:\"calc\"},ybounds:{valType:\"data_array\",editType:\"calc\"},text:n.text,marker:{color:{valType:\"color\",arrayOk:!1,editType:\"calc\"},opacity:{valType:\"number\",min:0,max:1,dflt:1,arrayOk:!1,editType:\"calc\"},blend:{valType:\"boolean\",dflt:null,editType:\"calc\"},sizemin:{valType:\"number\",min:.1,max:2,dflt:.5,editType:\"calc\"},sizemax:{valType:\"number\",min:.1,dflt:20,editType:\"calc\"},border:{color:{valType:\"color\",arrayOk:!1,editType:\"calc\"},arearatio:{valType:\"number\",min:0,max:1,dflt:0,editType:\"calc\"},editType:\"calc\"},editType:\"calc\"},transforms:void 0}},{\"../scatter/attributes\":926}],913:[function(t,e,r){\"use strict\";var n=t(\"../../../stackgl_modules\").gl_pointcloud2d,i=t(\"../../lib/str2rgbarray\"),a=t(\"../../plots/cartesian/autorange\").findExtremes,o=t(\"../scatter/get_trace_color\");function s(t,e){this.scene=t,this.uid=e,this.type=\"pointcloud\",this.pickXData=[],this.pickYData=[],this.xData=[],this.yData=[],this.textLabels=[],this.color=\"rgb(0, 0, 0)\",this.name=\"\",this.hoverinfo=\"all\",this.idToIndex=new Int32Array(0),this.bounds=[0,0,0,0],this.pointcloudOptions={positions:new Float32Array(0),idToIndex:this.idToIndex,sizemin:.5,sizemax:12,color:[0,0,0,1],areaRatio:1,borderColor:[0,0,0,1]},this.pointcloud=n(t.glplot,this.pointcloudOptions),this.pointcloud._trace=this}var l=s.prototype;l.handlePick=function(t){var e=this.idToIndex[t.pointId];return{trace:this,dataCoord:t.dataCoord,traceCoord:this.pickXYData?[this.pickXYData[2*e],this.pickXYData[2*e+1]]:[this.pickXData[e],this.pickYData[e]],textLabel:Array.isArray(this.textLabels)?this.textLabels[e]:this.textLabels,color:this.color,name:this.name,pointIndex:e,hoverinfo:this.hoverinfo}},l.update=function(t){this.index=t.index,this.textLabels=t.text,this.name=t.name,this.hoverinfo=t.hoverinfo,this.bounds=[1/0,1/0,-1/0,-1/0],this.updateFast(t),this.color=o(t,{})},l.updateFast=function(t){var e,r,n,o,s,l,c=this.xData=this.pickXData=t.x,u=this.yData=this.pickYData=t.y,f=this.pickXYData=t.xy,h=t.xbounds&&t.ybounds,p=t.indices,d=this.bounds;if(f){if(n=f,e=f.length>>>1,h)d[0]=t.xbounds[0],d[2]=t.xbounds[1],d[1]=t.ybounds[0],d[3]=t.ybounds[1];else for(l=0;ld[2]&&(d[2]=o),sd[3]&&(d[3]=s);if(p)r=p;else for(r=new Int32Array(e),l=0;ld[2]&&(d[2]=o),sd[3]&&(d[3]=s);this.idToIndex=r,this.pointcloudOptions.idToIndex=r,this.pointcloudOptions.positions=n;var g=i(t.marker.color),m=i(t.marker.border.color),v=t.opacity*t.marker.opacity;g[3]*=v,this.pointcloudOptions.color=g;var y=t.marker.blend;if(null===y){y=c.length<100||u.length<100}this.pointcloudOptions.blend=y,m[3]*=v,this.pointcloudOptions.borderColor=m;var x=t.marker.sizemin,b=Math.max(t.marker.sizemax,t.marker.sizemin);this.pointcloudOptions.sizeMin=x,this.pointcloudOptions.sizeMax=b,this.pointcloudOptions.areaRatio=t.marker.border.arearatio,this.pointcloud.update(this.pointcloudOptions);var _=this.scene.xaxis,w=this.scene.yaxis,T=b/2||.5;t._extremes[_._id]=a(_,[d[0],d[2]],{ppad:T}),t._extremes[w._id]=a(w,[d[1],d[3]],{ppad:T})},l.dispose=function(){this.pointcloud.dispose()},e.exports=function(t,e){var r=new s(t,e.uid);return r.update(e),r}},{\"../../../stackgl_modules\":1120,\"../../lib/str2rgbarray\":528,\"../../plots/cartesian/autorange\":553,\"../scatter/get_trace_color\":936}],914:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./attributes\");e.exports=function(t,e,r){function a(r,a){return n.coerce(t,e,i,r,a)}a(\"x\"),a(\"y\"),a(\"xbounds\"),a(\"ybounds\"),t.xy&&t.xy instanceof Float32Array&&(e.xy=t.xy),t.indices&&t.indices instanceof Int32Array&&(e.indices=t.indices),a(\"text\"),a(\"marker.color\",r),a(\"marker.opacity\"),a(\"marker.blend\"),a(\"marker.sizemin\"),a(\"marker.sizemax\"),a(\"marker.border.color\",r),a(\"marker.border.arearatio\"),e._length=null}},{\"../../lib\":503,\"./attributes\":912}],915:[function(t,e,r){\"use strict\";[\"*pointcloud* trace is deprecated!\",\"Please consider switching to the *scattergl* trace type.\"].join(\" \");e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),calc:t(\"../scatter3d/calc\"),plot:t(\"./convert\"),moduleType:\"trace\",name:\"pointcloud\",basePlotModule:t(\"../../plots/gl2d\"),categories:[\"gl\",\"gl2d\",\"showLegend\"],meta:{}}},{\"../../plots/gl2d\":596,\"../scatter3d/calc\":955,\"./attributes\":912,\"./convert\":913,\"./defaults\":914}],916:[function(t,e,r){\"use strict\";var n=t(\"../../plots/font_attributes\"),i=t(\"../../plots/attributes\"),a=t(\"../../components/color/attributes\"),o=t(\"../../components/fx/attributes\"),s=t(\"../../plots/domain\").attributes,l=t(\"../../plots/template_attributes\").hovertemplateAttrs,c=t(\"../../components/colorscale/attributes\"),u=t(\"../../plot_api/plot_template\").templatedArray,f=t(\"../../plots/cartesian/axis_format_attributes\").descriptionOnlyNumbers,h=t(\"../../lib/extend\").extendFlat,p=t(\"../../plot_api/edit_types\").overrideAll;(e.exports=p({hoverinfo:h({},i.hoverinfo,{flags:[],arrayOk:!1}),hoverlabel:o.hoverlabel,domain:s({name:\"sankey\",trace:!0}),orientation:{valType:\"enumerated\",values:[\"v\",\"h\"],dflt:\"h\"},valueformat:{valType:\"string\",dflt:\".3s\",description:f(\"value\")},valuesuffix:{valType:\"string\",dflt:\"\"},arrangement:{valType:\"enumerated\",values:[\"snap\",\"perpendicular\",\"freeform\",\"fixed\"],dflt:\"snap\"},textfont:n({}),customdata:void 0,node:{label:{valType:\"data_array\",dflt:[]},groups:{valType:\"info_array\",impliedEdits:{x:[],y:[]},dimensions:2,freeLength:!0,dflt:[],items:{valType:\"number\",editType:\"calc\"}},x:{valType:\"data_array\",dflt:[]},y:{valType:\"data_array\",dflt:[]},color:{valType:\"color\",arrayOk:!0},customdata:{valType:\"data_array\",editType:\"calc\"},line:{color:{valType:\"color\",dflt:a.defaultLine,arrayOk:!0},width:{valType:\"number\",min:0,dflt:.5,arrayOk:!0}},pad:{valType:\"number\",arrayOk:!1,min:0,dflt:20},thickness:{valType:\"number\",arrayOk:!1,min:1,dflt:20},hoverinfo:{valType:\"enumerated\",values:[\"all\",\"none\",\"skip\"],dflt:\"all\"},hoverlabel:o.hoverlabel,hovertemplate:l({},{keys:[\"value\",\"label\"]})},link:{label:{valType:\"data_array\",dflt:[]},color:{valType:\"color\",arrayOk:!0},customdata:{valType:\"data_array\",editType:\"calc\"},line:{color:{valType:\"color\",dflt:a.defaultLine,arrayOk:!0},width:{valType:\"number\",min:0,dflt:0,arrayOk:!0}},source:{valType:\"data_array\",dflt:[]},target:{valType:\"data_array\",dflt:[]},value:{valType:\"data_array\",dflt:[]},hoverinfo:{valType:\"enumerated\",values:[\"all\",\"none\",\"skip\"],dflt:\"all\"},hoverlabel:o.hoverlabel,hovertemplate:l({},{keys:[\"value\",\"label\"]}),colorscales:u(\"concentrationscales\",{editType:\"calc\",label:{valType:\"string\",editType:\"calc\",dflt:\"\"},cmax:{valType:\"number\",editType:\"calc\",dflt:1},cmin:{valType:\"number\",editType:\"calc\",dflt:0},colorscale:h(c().colorscale,{dflt:[[0,\"white\"],[1,\"black\"]]})})}},\"calc\",\"nested\")).transforms=void 0},{\"../../components/color/attributes\":365,\"../../components/colorscale/attributes\":373,\"../../components/fx/attributes\":397,\"../../lib/extend\":493,\"../../plot_api/edit_types\":536,\"../../plot_api/plot_template\":543,\"../../plots/attributes\":550,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/domain\":584,\"../../plots/font_attributes\":585,\"../../plots/template_attributes\":633}],917:[function(t,e,r){\"use strict\";var n=t(\"../../plot_api/edit_types\").overrideAll,i=t(\"../../plots/get_data\").getModuleCalcData,a=t(\"./plot\"),o=t(\"../../components/fx/layout_attributes\"),s=t(\"../../lib/setcursor\"),l=t(\"../../components/dragelement\"),c=t(\"../../plots/cartesian/select\").prepSelect,u=t(\"../../lib\"),f=t(\"../../registry\");function h(t,e){var r=t._fullData[e],n=t._fullLayout,i=n.dragmode,a=\"pan\"===n.dragmode?\"move\":\"crosshair\",o=r._bgRect;if(\"pan\"!==i&&\"zoom\"!==i){s(o,a);var h={_id:\"x\",c2p:u.identity,_offset:r._sankey.translateX,_length:r._sankey.width},p={_id:\"y\",c2p:u.identity,_offset:r._sankey.translateY,_length:r._sankey.height},d={gd:t,element:o.node(),plotinfo:{id:e,xaxis:h,yaxis:p,fillRangeItems:u.noop},subplot:e,xaxes:[h],yaxes:[p],doneFnCompleted:function(r){var n,i=t._fullData[e],a=i.node.groups.slice(),o=[];function s(t){for(var e=i._sankey.graph.nodes,r=0;ry&&(y=a.source[e]),a.target[e]>y&&(y=a.target[e]);var x,b=y+1;t.node._count=b;var _=t.node.groups,w={};for(e=0;e<_.length;e++){var T=_[e];for(x=0;x0&&s(E,b)&&s(L,b)&&(!w.hasOwnProperty(E)||!w.hasOwnProperty(L)||w[E]!==w[L])){w.hasOwnProperty(L)&&(L=w[L]),w.hasOwnProperty(E)&&(E=w[E]),L=+L,h[E=+E]=h[L]=!0;var C=\"\";a.label&&a.label[e]&&(C=a.label[e]);var P=null;C&&p.hasOwnProperty(C)&&(P=p[C]),c.push({pointNumber:e,label:C,color:u?a.color[e]:a.color,customdata:f?a.customdata[e]:a.customdata,concentrationscale:P,source:E,target:L,value:+S}),M.source.push(E),M.target.push(L)}}var I=b+_.length,O=o(r.color),z=o(r.customdata),D=[];for(e=0;eb-1,childrenNodes:[],pointNumber:e,label:R,color:O?r.color[e]:r.color,customdata:z?r.customdata[e]:r.customdata})}var F=!1;return function(t,e,r){for(var a=i.init2dArray(t,0),o=0;o1}))}(I,M.source,M.target)&&(F=!0),{circular:F,links:c,nodes:D,groups:_,groupLookup:w}}e.exports=function(t,e){var r=c(e);return a({circular:r.circular,_nodes:r.nodes,_links:r.links,_groups:r.groups,_groupLookup:r.groupLookup})}},{\"../../components/colorscale\":378,\"../../lib\":503,\"../../lib/gup\":500,\"strongly-connected-components\":306}],919:[function(t,e,r){\"use strict\";e.exports={nodeTextOffsetHorizontal:4,nodeTextOffsetVertical:3,nodePadAcross:10,sankeyIterations:50,forceIterations:5,forceTicksPerFrame:10,duration:500,ease:\"linear\",cn:{sankey:\"sankey\",sankeyLinks:\"sankey-links\",sankeyLink:\"sankey-link\",sankeyNodeSet:\"sankey-node-set\",sankeyNode:\"sankey-node\",nodeRect:\"node-rect\",nodeLabel:\"node-label\"}}},{}],920:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./attributes\"),a=t(\"../../components/color\"),o=t(\"tinycolor2\"),s=t(\"../../plots/domain\").defaults,l=t(\"../../components/fx/hoverlabel_defaults\"),c=t(\"../../plot_api/plot_template\"),u=t(\"../../plots/array_container_defaults\");function f(t,e){function r(r,a){return n.coerce(t,e,i.link.colorscales,r,a)}r(\"label\"),r(\"cmin\"),r(\"cmax\"),r(\"colorscale\")}e.exports=function(t,e,r,h){function p(r,a){return n.coerce(t,e,i,r,a)}var d=n.extendDeep(h.hoverlabel,t.hoverlabel),g=t.node,m=c.newContainer(e,\"node\");function v(t,e){return n.coerce(g,m,i.node,t,e)}v(\"label\"),v(\"groups\"),v(\"x\"),v(\"y\"),v(\"pad\"),v(\"thickness\"),v(\"line.color\"),v(\"line.width\"),v(\"hoverinfo\",t.hoverinfo),l(g,m,v,d),v(\"hovertemplate\");var y=h.colorway;v(\"color\",m.label.map((function(t,e){return a.addOpacity(function(t){return y[t%y.length]}(e),.8)}))),v(\"customdata\");var x=t.link||{},b=c.newContainer(e,\"link\");function _(t,e){return n.coerce(x,b,i.link,t,e)}_(\"label\"),_(\"source\"),_(\"target\"),_(\"value\"),_(\"line.color\"),_(\"line.width\"),_(\"hoverinfo\",t.hoverinfo),l(x,b,_,d),_(\"hovertemplate\");var w,T=o(h.paper_bgcolor).getLuminance()<.333?\"rgba(255, 255, 255, 0.6)\":\"rgba(0, 0, 0, 0.2)\";_(\"color\",n.repeat(T,b.value.length)),_(\"customdata\"),u(x,b,{name:\"colorscales\",handleItemDefaults:f}),s(e,h,p),p(\"orientation\"),p(\"valueformat\"),p(\"valuesuffix\"),m.x.length&&m.y.length&&(w=\"freeform\"),p(\"arrangement\",w),n.coerceFont(p,\"textfont\",n.extendFlat({},h.font)),e._length=null}},{\"../../components/color\":366,\"../../components/fx/hoverlabel_defaults\":404,\"../../lib\":503,\"../../plot_api/plot_template\":543,\"../../plots/array_container_defaults\":549,\"../../plots/domain\":584,\"./attributes\":916,tinycolor2:312}],921:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),calc:t(\"./calc\"),plot:t(\"./plot\"),moduleType:\"trace\",name:\"sankey\",basePlotModule:t(\"./base_plot\"),selectPoints:t(\"./select.js\"),categories:[\"noOpacity\"],meta:{}}},{\"./attributes\":916,\"./base_plot\":917,\"./calc\":918,\"./defaults\":920,\"./plot\":922,\"./select.js\":924}],922:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=i.numberFormat,o=t(\"./render\"),s=t(\"../../components/fx\"),l=t(\"../../components/color\"),c=t(\"./constants\").cn,u=i._;function f(t){return\"\"!==t}function h(t,e){return t.filter((function(t){return t.key===e.traceId}))}function p(t,e){n.select(t).select(\"path\").style(\"fill-opacity\",e),n.select(t).select(\"rect\").style(\"fill-opacity\",e)}function d(t){n.select(t).select(\"text.name\").style(\"fill\",\"black\")}function g(t){return function(e){return-1!==t.node.sourceLinks.indexOf(e.link)||-1!==t.node.targetLinks.indexOf(e.link)}}function m(t){return function(e){return-1!==e.node.sourceLinks.indexOf(t.link)||-1!==e.node.targetLinks.indexOf(t.link)}}function v(t,e,r){e&&r&&h(r,e).selectAll(\".\"+c.sankeyLink).filter(g(e)).call(x.bind(0,e,r,!1))}function y(t,e,r){e&&r&&h(r,e).selectAll(\".\"+c.sankeyLink).filter(g(e)).call(b.bind(0,e,r,!1))}function x(t,e,r,n){var i=n.datum().link.label;n.style(\"fill-opacity\",(function(t){if(!t.link.concentrationscale)return.4})),i&&h(e,t).selectAll(\".\"+c.sankeyLink).filter((function(t){return t.link.label===i})).style(\"fill-opacity\",(function(t){if(!t.link.concentrationscale)return.4})),r&&h(e,t).selectAll(\".\"+c.sankeyNode).filter(m(t)).call(v)}function b(t,e,r,n){var i=n.datum().link.label;n.style(\"fill-opacity\",(function(t){return t.tinyColorAlpha})),i&&h(e,t).selectAll(\".\"+c.sankeyLink).filter((function(t){return t.link.label===i})).style(\"fill-opacity\",(function(t){return t.tinyColorAlpha})),r&&h(e,t).selectAll(c.sankeyNode).filter(m(t)).call(y)}function _(t,e){var r=t.hoverlabel||{},n=i.nestedProperty(r,e).get();return!Array.isArray(n)&&n}e.exports=function(t,e){for(var r=t._fullLayout,i=r._paper,h=r._size,g=0;g\"),color:_(o,\"bgcolor\")||l.addOpacity(g.color,1),borderColor:_(o,\"bordercolor\"),fontFamily:_(o,\"font.family\"),fontSize:_(o,\"font.size\"),fontColor:_(o,\"font.color\"),nameLength:_(o,\"namelength\"),textAlign:_(o,\"align\"),idealAlign:n.event.x\"),color:_(o,\"bgcolor\")||i.tinyColorHue,borderColor:_(o,\"bordercolor\"),fontFamily:_(o,\"font.family\"),fontSize:_(o,\"font.size\"),fontColor:_(o,\"font.color\"),nameLength:_(o,\"namelength\"),textAlign:_(o,\"align\"),idealAlign:\"left\",hovertemplate:o.hovertemplate,hovertemplateLabels:y,eventData:[i.node]},{container:r._hoverlayer.node(),outerContainer:r._paper.node(),gd:t});p(w,.85),d(w)}}},unhover:function(e,i,a){!1!==t._fullLayout.hovermode&&(n.select(e).call(y,i,a),\"skip\"!==i.node.trace.node.hoverinfo&&(i.node.fullData=i.node.trace,t.emit(\"plotly_unhover\",{event:n.event,points:[i.node]})),s.loneUnhover(r._hoverlayer.node()))},select:function(e,r,i){var a=r.node;a.originalEvent=n.event,t._hoverdata=[a],n.select(e).call(y,r,i),s.click(t,{target:!0})}}})}},{\"../../components/color\":366,\"../../components/fx\":406,\"../../lib\":503,\"./constants\":919,\"./render\":923,\"@plotly/d3\":58}],923:[function(t,e,r){\"use strict\";var n=t(\"d3-force\"),i=t(\"d3-interpolate\").interpolateNumber,a=t(\"@plotly/d3\"),o=t(\"@plotly/d3-sankey\"),s=t(\"@plotly/d3-sankey-circular\"),l=t(\"./constants\"),c=t(\"tinycolor2\"),u=t(\"../../components/color\"),f=t(\"../../components/drawing\"),h=t(\"../../lib\"),p=h.strTranslate,d=h.strRotate,g=t(\"../../lib/gup\"),m=g.keyFun,v=g.repeat,y=g.unwrap,x=t(\"../../lib/svg_text_utils\"),b=t(\"../../registry\"),_=t(\"../../constants/alignment\"),w=_.CAP_SHIFT,T=_.LINE_SPACING;function k(t,e,r){var n,i=y(e),a=i.trace,u=a.domain,f=\"h\"===a.orientation,p=a.node.pad,d=a.node.thickness,g=t.width*(u.x[1]-u.x[0]),m=t.height*(u.y[1]-u.y[0]),v=i._nodes,x=i._links,b=i.circular;(n=b?s.sankeyCircular().circularLinkGap(0):o.sankey()).iterations(l.sankeyIterations).size(f?[g,m]:[m,g]).nodeWidth(d).nodePadding(p).nodeId((function(t){return t.pointNumber})).nodes(v).links(x);var _,w,T,k=n();for(var A in n.nodePadding()=i||(r=i-e.y0)>1e-6&&(e.y0+=r,e.y1+=r),i=e.y1+p}))}(function(t){var e,r,n=t.map((function(t,e){return{x0:t.x0,index:e}})).sort((function(t,e){return t.x0-e.x0})),i=[],a=-1,o=-1/0;for(_=0;_o+d&&(a+=1,e=s.x0),o=s.x0,i[a]||(i[a]=[]),i[a].push(s),r=e-s.x0,s.x0+=r,s.x1+=r}return i}(v=k.nodes));n.update(k)}return{circular:b,key:r,trace:a,guid:h.randstr(),horizontal:f,width:g,height:m,nodePad:a.node.pad,nodeLineColor:a.node.line.color,nodeLineWidth:a.node.line.width,linkLineColor:a.link.line.color,linkLineWidth:a.link.line.width,valueFormat:a.valueformat,valueSuffix:a.valuesuffix,textFont:a.textfont,translateX:u.x[0]*t.width+t.margin.l,translateY:t.height-u.y[1]*t.height+t.margin.t,dragParallel:f?m:g,dragPerpendicular:f?g:m,arrangement:a.arrangement,sankey:n,graph:k,forceLayouts:{},interactionState:{dragInProgress:!1,hovered:!1}}}function A(t,e,r){var n=c(e.color),i=e.source.label+\"|\"+e.target.label+\"__\"+r;return e.trace=t.trace,e.curveNumber=t.trace.index,{circular:t.circular,key:i,traceId:t.key,pointNumber:e.pointNumber,link:e,tinyColorHue:u.tinyRGB(n),tinyColorAlpha:n.getAlpha(),linkPath:M,linkLineColor:t.linkLineColor,linkLineWidth:t.linkLineWidth,valueFormat:t.valueFormat,valueSuffix:t.valueSuffix,sankey:t.sankey,parent:t,interactionState:t.interactionState,flow:e.flow}}function M(){return function(t){if(t.link.circular)return e=t.link,r=e.width/2,n=e.circularPathData,\"top\"===e.circularLinkType?\"M \"+n.targetX+\" \"+(n.targetY+r)+\" L\"+n.rightInnerExtent+\" \"+(n.targetY+r)+\"A\"+(n.rightLargeArcRadius+r)+\" \"+(n.rightSmallArcRadius+r)+\" 0 0 1 \"+(n.rightFullExtent-r)+\" \"+(n.targetY-n.rightSmallArcRadius)+\"L\"+(n.rightFullExtent-r)+\" \"+n.verticalRightInnerExtent+\"A\"+(n.rightLargeArcRadius+r)+\" \"+(n.rightLargeArcRadius+r)+\" 0 0 1 \"+n.rightInnerExtent+\" \"+(n.verticalFullExtent-r)+\"L\"+n.leftInnerExtent+\" \"+(n.verticalFullExtent-r)+\"A\"+(n.leftLargeArcRadius+r)+\" \"+(n.leftLargeArcRadius+r)+\" 0 0 1 \"+(n.leftFullExtent+r)+\" \"+n.verticalLeftInnerExtent+\"L\"+(n.leftFullExtent+r)+\" \"+(n.sourceY-n.leftSmallArcRadius)+\"A\"+(n.leftLargeArcRadius+r)+\" \"+(n.leftSmallArcRadius+r)+\" 0 0 1 \"+n.leftInnerExtent+\" \"+(n.sourceY+r)+\"L\"+n.sourceX+\" \"+(n.sourceY+r)+\"L\"+n.sourceX+\" \"+(n.sourceY-r)+\"L\"+n.leftInnerExtent+\" \"+(n.sourceY-r)+\"A\"+(n.leftLargeArcRadius-r)+\" \"+(n.leftSmallArcRadius-r)+\" 0 0 0 \"+(n.leftFullExtent-r)+\" \"+(n.sourceY-n.leftSmallArcRadius)+\"L\"+(n.leftFullExtent-r)+\" \"+n.verticalLeftInnerExtent+\"A\"+(n.leftLargeArcRadius-r)+\" \"+(n.leftLargeArcRadius-r)+\" 0 0 0 \"+n.leftInnerExtent+\" \"+(n.verticalFullExtent+r)+\"L\"+n.rightInnerExtent+\" \"+(n.verticalFullExtent+r)+\"A\"+(n.rightLargeArcRadius-r)+\" \"+(n.rightLargeArcRadius-r)+\" 0 0 0 \"+(n.rightFullExtent+r)+\" \"+n.verticalRightInnerExtent+\"L\"+(n.rightFullExtent+r)+\" \"+(n.targetY-n.rightSmallArcRadius)+\"A\"+(n.rightLargeArcRadius-r)+\" \"+(n.rightSmallArcRadius-r)+\" 0 0 0 \"+n.rightInnerExtent+\" \"+(n.targetY-r)+\"L\"+n.targetX+\" \"+(n.targetY-r)+\"Z\":\"M \"+n.targetX+\" \"+(n.targetY-r)+\" L\"+n.rightInnerExtent+\" \"+(n.targetY-r)+\"A\"+(n.rightLargeArcRadius+r)+\" \"+(n.rightSmallArcRadius+r)+\" 0 0 0 \"+(n.rightFullExtent-r)+\" \"+(n.targetY+n.rightSmallArcRadius)+\"L\"+(n.rightFullExtent-r)+\" \"+n.verticalRightInnerExtent+\"A\"+(n.rightLargeArcRadius+r)+\" \"+(n.rightLargeArcRadius+r)+\" 0 0 0 \"+n.rightInnerExtent+\" \"+(n.verticalFullExtent+r)+\"L\"+n.leftInnerExtent+\" \"+(n.verticalFullExtent+r)+\"A\"+(n.leftLargeArcRadius+r)+\" \"+(n.leftLargeArcRadius+r)+\" 0 0 0 \"+(n.leftFullExtent+r)+\" \"+n.verticalLeftInnerExtent+\"L\"+(n.leftFullExtent+r)+\" \"+(n.sourceY+n.leftSmallArcRadius)+\"A\"+(n.leftLargeArcRadius+r)+\" \"+(n.leftSmallArcRadius+r)+\" 0 0 0 \"+n.leftInnerExtent+\" \"+(n.sourceY-r)+\"L\"+n.sourceX+\" \"+(n.sourceY-r)+\"L\"+n.sourceX+\" \"+(n.sourceY+r)+\"L\"+n.leftInnerExtent+\" \"+(n.sourceY+r)+\"A\"+(n.leftLargeArcRadius-r)+\" \"+(n.leftSmallArcRadius-r)+\" 0 0 1 \"+(n.leftFullExtent-r)+\" \"+(n.sourceY+n.leftSmallArcRadius)+\"L\"+(n.leftFullExtent-r)+\" \"+n.verticalLeftInnerExtent+\"A\"+(n.leftLargeArcRadius-r)+\" \"+(n.leftLargeArcRadius-r)+\" 0 0 1 \"+n.leftInnerExtent+\" \"+(n.verticalFullExtent-r)+\"L\"+n.rightInnerExtent+\" \"+(n.verticalFullExtent-r)+\"A\"+(n.rightLargeArcRadius-r)+\" \"+(n.rightLargeArcRadius-r)+\" 0 0 1 \"+(n.rightFullExtent+r)+\" \"+n.verticalRightInnerExtent+\"L\"+(n.rightFullExtent+r)+\" \"+(n.targetY+n.rightSmallArcRadius)+\"A\"+(n.rightLargeArcRadius-r)+\" \"+(n.rightSmallArcRadius-r)+\" 0 0 1 \"+n.rightInnerExtent+\" \"+(n.targetY+r)+\"L\"+n.targetX+\" \"+(n.targetY+r)+\"Z\";var e,r,n,a=t.link.source.x1,o=t.link.target.x0,s=i(a,o),l=s(.5),c=s(.5),u=t.link.y0-t.link.width/2,f=t.link.y0+t.link.width/2,h=t.link.y1-t.link.width/2,p=t.link.y1+t.link.width/2;return\"M\"+a+\",\"+u+\"C\"+l+\",\"+u+\" \"+c+\",\"+h+\" \"+o+\",\"+h+\"L\"+o+\",\"+p+\"C\"+c+\",\"+p+\" \"+l+\",\"+f+\" \"+a+\",\"+f+\"Z\"}}function S(t,e){var r=c(e.color),n=l.nodePadAcross,i=t.nodePad/2;e.dx=e.x1-e.x0,e.dy=e.y1-e.y0;var a=e.dx,o=Math.max(.5,e.dy),s=\"node_\"+e.pointNumber;return e.group&&(s=h.randstr()),e.trace=t.trace,e.curveNumber=t.trace.index,{index:e.pointNumber,key:s,partOfGroup:e.partOfGroup||!1,group:e.group,traceId:t.key,trace:t.trace,node:e,nodePad:t.nodePad,nodeLineColor:t.nodeLineColor,nodeLineWidth:t.nodeLineWidth,textFont:t.textFont,size:t.horizontal?t.height:t.width,visibleWidth:Math.ceil(a),visibleHeight:o,zoneX:-n,zoneY:-i,zoneWidth:a+2*n,zoneHeight:o+2*i,labelY:t.horizontal?e.dy/2+1:e.dx/2+1,left:1===e.originalLayer,sizeAcross:t.width,forceLayouts:t.forceLayouts,horizontal:t.horizontal,darkBackground:r.getBrightness()<=128,tinyColorHue:u.tinyRGB(r),tinyColorAlpha:r.getAlpha(),valueFormat:t.valueFormat,valueSuffix:t.valueSuffix,sankey:t.sankey,graph:t.graph,arrangement:t.arrangement,uniqueNodeLabelPathId:[t.guid,t.key,s].join(\"_\"),interactionState:t.interactionState,figure:t}}function E(t){t.attr(\"transform\",(function(t){return p(t.node.x0.toFixed(3),t.node.y0.toFixed(3))}))}function L(t){t.call(E)}function C(t,e){t.call(L),e.attr(\"d\",M())}function P(t){t.attr(\"width\",(function(t){return t.node.x1-t.node.x0})).attr(\"height\",(function(t){return t.visibleHeight}))}function I(t){return t.link.width>1||t.linkLineWidth>0}function O(t){return p(t.translateX,t.translateY)+(t.horizontal?\"matrix(1 0 0 1 0 0)\":\"matrix(0 1 1 0 0 0)\")}function z(t,e,r){t.on(\".basic\",null).on(\"mouseover.basic\",(function(t){t.interactionState.dragInProgress||t.partOfGroup||(r.hover(this,t,e),t.interactionState.hovered=[this,t])})).on(\"mousemove.basic\",(function(t){t.interactionState.dragInProgress||t.partOfGroup||(r.follow(this,t),t.interactionState.hovered=[this,t])})).on(\"mouseout.basic\",(function(t){t.interactionState.dragInProgress||t.partOfGroup||(r.unhover(this,t,e),t.interactionState.hovered=!1)})).on(\"click.basic\",(function(t){t.interactionState.hovered&&(r.unhover(this,t,e),t.interactionState.hovered=!1),t.interactionState.dragInProgress||t.partOfGroup||r.select(this,t,e)}))}function D(t,e,r,i){var o=a.behavior.drag().origin((function(t){return{x:t.node.x0+t.visibleWidth/2,y:t.node.y0+t.visibleHeight/2}})).on(\"dragstart\",(function(a){if(\"fixed\"!==a.arrangement&&(h.ensureSingle(i._fullLayout._infolayer,\"g\",\"dragcover\",(function(t){i._fullLayout._dragCover=t})),h.raiseToTop(this),a.interactionState.dragInProgress=a.node,F(a.node),a.interactionState.hovered&&(r.nodeEvents.unhover.apply(0,a.interactionState.hovered),a.interactionState.hovered=!1),\"snap\"===a.arrangement)){var o=a.traceId+\"|\"+a.key;a.forceLayouts[o]?a.forceLayouts[o].alpha(1):function(t,e,r,i){!function(t){for(var e=0;e0&&n.forceLayouts[e].alpha(0)}}(0,e,a,r)).stop()}(0,o,a),function(t,e,r,n,i){window.requestAnimationFrame((function a(){var o;for(o=0;o0)window.requestAnimationFrame(a);else{var s=r.node.originalX;r.node.x0=s-r.visibleWidth/2,r.node.x1=s+r.visibleWidth/2,R(r,i)}}))}(t,e,a,o,i)}})).on(\"drag\",(function(r){if(\"fixed\"!==r.arrangement){var n=a.event.x,i=a.event.y;\"snap\"===r.arrangement?(r.node.x0=n-r.visibleWidth/2,r.node.x1=n+r.visibleWidth/2,r.node.y0=i-r.visibleHeight/2,r.node.y1=i+r.visibleHeight/2):(\"freeform\"===r.arrangement&&(r.node.x0=n-r.visibleWidth/2,r.node.x1=n+r.visibleWidth/2),i=Math.max(0,Math.min(r.size-r.visibleHeight/2,i)),r.node.y0=i-r.visibleHeight/2,r.node.y1=i+r.visibleHeight/2),F(r.node),\"snap\"!==r.arrangement&&(r.sankey.update(r.graph),C(t.filter(B(r)),e))}})).on(\"dragend\",(function(t){if(\"fixed\"!==t.arrangement){t.interactionState.dragInProgress=!1;for(var e=0;el&&C[v].gap;)v--;for(x=C[v].s,g=C.length-1;g>v;g--)C[g].s=x;for(;lM[u]&&u=0;i--){var a=t[i];if(\"scatter\"===a.type&&a.xaxis===r.xaxis&&a.yaxis===r.yaxis){a.opacity=void 0;break}}}}}},{}],933:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../registry\"),a=t(\"./attributes\"),o=t(\"./constants\"),s=t(\"./subtypes\"),l=t(\"./xy_defaults\"),c=t(\"./period_defaults\"),u=t(\"./stack_defaults\"),f=t(\"./marker_defaults\"),h=t(\"./line_defaults\"),p=t(\"./line_shape_defaults\"),d=t(\"./text_defaults\"),g=t(\"./fillcolor_defaults\");e.exports=function(t,e,r,m){function v(r,i){return n.coerce(t,e,a,r,i)}var y=l(t,e,m,v);if(y||(e.visible=!1),e.visible){c(t,e,m,v),v(\"xhoverformat\"),v(\"yhoverformat\");var x=u(t,e,m,v),b=!x&&y=Math.min(e,r)&&d<=Math.max(e,r)?0:1/0}var n=Math.max(3,t.mrc||0),i=1-1/n,a=Math.abs(h.c2p(t.x)-d);return a=Math.min(e,r)&&g<=Math.max(e,r)?0:1/0}var n=Math.max(3,t.mrc||0),i=1-1/n,a=Math.abs(p.c2p(t.y)-g);return aW!=(N=z[I][1])>=W&&(R=z[I-1][0],F=z[I][0],N-B&&(D=R+(F-R)*(W-B)/(N-B),H=Math.min(H,D),q=Math.max(q,D)));H=Math.max(H,0),q=Math.min(q,h._length);var X=s.defaultLine;return s.opacity(f.fillcolor)?X=f.fillcolor:s.opacity((f.line||{}).color)&&(X=f.line.color),n.extendFlat(t,{distance:t.maxHoverDistance,x0:H,x1:q,y0:W,y1:W,color:X,hovertemplate:!1}),delete t.index,f.text&&!Array.isArray(f.text)?t.text=String(f.text):t.text=f.name,[t]}}}},{\"../../components/color\":366,\"../../components/fx\":406,\"../../lib\":503,\"../../registry\":638,\"./get_trace_color\":936}],938:[function(t,e,r){\"use strict\";var n=t(\"./subtypes\");e.exports={hasLines:n.hasLines,hasMarkers:n.hasMarkers,hasText:n.hasText,isBubble:n.isBubble,attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),crossTraceDefaults:t(\"./cross_trace_defaults\"),calc:t(\"./calc\").calc,crossTraceCalc:t(\"./cross_trace_calc\"),arraysToCalcdata:t(\"./arrays_to_calcdata\"),plot:t(\"./plot\"),colorbar:t(\"./marker_colorbar\"),formatLabels:t(\"./format_labels\"),style:t(\"./style\").style,styleOnSelect:t(\"./style\").styleOnSelect,hoverPoints:t(\"./hover\"),selectPoints:t(\"./select\"),animatable:!0,moduleType:\"trace\",name:\"scatter\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"cartesian\",\"svg\",\"symbols\",\"errorBarsOK\",\"showLegend\",\"scatter-like\",\"zoomScale\"],meta:{}}},{\"../../plots/cartesian\":568,\"./arrays_to_calcdata\":925,\"./attributes\":926,\"./calc\":927,\"./cross_trace_calc\":931,\"./cross_trace_defaults\":932,\"./defaults\":933,\"./format_labels\":935,\"./hover\":937,\"./marker_colorbar\":944,\"./plot\":947,\"./select\":948,\"./style\":950,\"./subtypes\":951}],939:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").isArrayOrTypedArray,i=t(\"../../components/colorscale/helpers\").hasColorscale,a=t(\"../../components/colorscale/defaults\");e.exports=function(t,e,r,o,s,l){var c=(t.marker||{}).color;(s(\"line.color\",r),i(t,\"line\"))?a(t,e,o,s,{prefix:\"line.\",cLetter:\"c\"}):s(\"line.color\",!n(c)&&c||r);s(\"line.width\"),(l||{}).noDash||s(\"line.dash\")}},{\"../../components/colorscale/defaults\":376,\"../../components/colorscale/helpers\":377,\"../../lib\":503}],940:[function(t,e,r){\"use strict\";var n=t(\"../../constants/numerical\"),i=n.BADNUM,a=n.LOG_CLIP,o=a+.5,s=a-.5,l=t(\"../../lib\"),c=l.segmentsIntersect,u=l.constrain,f=t(\"./constants\");e.exports=function(t,e){var r,n,a,h,p,d,g,m,v,y,x,b,_,w,T,k,A,M,S=e.xaxis,E=e.yaxis,L=\"log\"===S.type,C=\"log\"===E.type,P=S._length,I=E._length,O=e.connectGaps,z=e.baseTolerance,D=e.shape,R=\"linear\"===D,F=e.fill&&\"none\"!==e.fill,B=[],N=f.minTolerance,j=t.length,U=new Array(j),V=0;function H(r){var n=t[r];if(!n)return!1;var a=e.linearized?S.l2p(n.x):S.c2p(n.x),l=e.linearized?E.l2p(n.y):E.c2p(n.y);if(a===i){if(L&&(a=S.c2p(n.x,!0)),a===i)return!1;C&&l===i&&(a*=Math.abs(S._m*I*(S._m>0?o:s)/(E._m*P*(E._m>0?o:s)))),a*=1e3}if(l===i){if(C&&(l=E.c2p(n.y,!0)),l===i)return!1;l*=1e3}return[a,l]}function q(t,e,r,n){var i=r-t,a=n-e,o=.5-t,s=.5-e,l=i*i+a*a,c=i*o+a*s;if(c>0&&crt||t[1]it)return[u(t[0],et,rt),u(t[1],nt,it)]}function st(t,e){return t[0]===e[0]&&(t[0]===et||t[0]===rt)||(t[1]===e[1]&&(t[1]===nt||t[1]===it)||void 0)}function lt(t,e,r){return function(n,i){var a=ot(n),o=ot(i),s=[];if(a&&o&&st(a,o))return s;a&&s.push(a),o&&s.push(o);var c=2*l.constrain((n[t]+i[t])/2,e,r)-((a||n)[t]+(o||i)[t]);c&&((a&&o?c>0==a[t]>o[t]?a:o:a||o)[t]+=c);return s}}function ct(t){var e=t[0],r=t[1],n=e===U[V-1][0],i=r===U[V-1][1];if(!n||!i)if(V>1){var a=e===U[V-2][0],o=r===U[V-2][1];n&&(e===et||e===rt)&&a?o?V--:U[V-1]=t:i&&(r===nt||r===it)&&o?a?V--:U[V-1]=t:U[V++]=t}else U[V++]=t}function ut(t){U[V-1][0]!==t[0]&&U[V-1][1]!==t[1]&&ct([Z,J]),ct(t),K=null,Z=J=0}function ft(t){if(A=t[0]/P,M=t[1]/I,W=t[0]rt?rt:0,X=t[1]it?it:0,W||X){if(V)if(K){var e=$(K,t);e.length>1&&(ut(e[0]),U[V++]=e[1])}else Q=$(U[V-1],t)[0],U[V++]=Q;else U[V++]=[W||t[0],X||t[1]];var r=U[V-1];W&&X&&(r[0]!==W||r[1]!==X)?(K&&(Z!==W&&J!==X?ct(Z&&J?(n=K,a=(i=t)[0]-n[0],o=(i[1]-n[1])/a,(n[1]*i[0]-i[1]*n[0])/a>0?[o>0?et:rt,it]:[o>0?rt:et,nt]):[Z||W,J||X]):Z&&J&&ct([Z,J])),ct([W,X])):Z-W&&J-X&&ct([W||Z,X||J]),K=t,Z=W,J=X}else K&&ut($(K,t)[0]),U[V++]=t;var n,i,a,o}for(\"linear\"===D||\"spline\"===D?$=function(t,e){for(var r=[],n=0,i=0;i<4;i++){var a=at[i],o=c(t[0],t[1],e[0],e[1],a[0],a[1],a[2],a[3]);o&&(!n||Math.abs(o.x-r[0][0])>1||Math.abs(o.y-r[0][1])>1)&&(o=[o.x,o.y],n&&Y(o,t)G(d,ht))break;a=d,(_=v[0]*m[0]+v[1]*m[1])>x?(x=_,h=d,g=!1):_=t.length||!d)break;ft(d),n=d}}else ft(h)}K&&ct([Z||K[0],J||K[1]]),B.push(U.slice(0,V))}return B}},{\"../../constants/numerical\":479,\"../../lib\":503,\"./constants\":930}],941:[function(t,e,r){\"use strict\";e.exports=function(t,e,r){\"spline\"===r(\"line.shape\")&&r(\"line.smoothing\")}},{}],942:[function(t,e,r){\"use strict\";var n={tonextx:1,tonexty:1,tonext:1};e.exports=function(t,e,r){var i,a,o,s,l,c={},u=!1,f=-1,h=0,p=-1;for(a=0;a=0?l=p:(l=p=h,h++),l0?Math.max(r,a):0}}},{\"fast-isnumeric\":190}],944:[function(t,e,r){\"use strict\";e.exports={container:\"marker\",min:\"cmin\",max:\"cmax\"}},{}],945:[function(t,e,r){\"use strict\";var n=t(\"../../components/color\"),i=t(\"../../components/colorscale/helpers\").hasColorscale,a=t(\"../../components/colorscale/defaults\"),o=t(\"./subtypes\");e.exports=function(t,e,r,s,l,c){var u=o.isBubble(t),f=(t.line||{}).color;(c=c||{},f&&(r=f),l(\"marker.symbol\"),l(\"marker.opacity\",u?.7:1),l(\"marker.size\"),l(\"marker.color\",r),i(t,\"marker\")&&a(t,e,s,l,{prefix:\"marker.\",cLetter:\"c\"}),c.noSelect||(l(\"selected.marker.color\"),l(\"unselected.marker.color\"),l(\"selected.marker.size\"),l(\"unselected.marker.size\")),c.noLine||(l(\"marker.line.color\",f&&!Array.isArray(f)&&e.marker.color!==f?f:u?n.background:n.defaultLine),i(t,\"marker.line\")&&a(t,e,s,l,{prefix:\"marker.line.\",cLetter:\"c\"}),l(\"marker.line.width\",u?1:0)),u&&(l(\"marker.sizeref\"),l(\"marker.sizemin\"),l(\"marker.sizemode\")),c.gradient)&&(\"none\"!==l(\"marker.gradient.type\")&&l(\"marker.gradient.color\"))}},{\"../../components/color\":366,\"../../components/colorscale/defaults\":376,\"../../components/colorscale/helpers\":377,\"./subtypes\":951}],946:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").dateTick0,i=t(\"../../constants/numerical\").ONEWEEK;function a(t,e){return n(e,t%i==0?1:0)}e.exports=function(t,e,r,n,i){if(i||(i={x:!0,y:!0}),i.x){var o=n(\"xperiod\");o&&(n(\"xperiod0\",a(o,e.xcalendar)),n(\"xperiodalignment\"))}if(i.y){var s=n(\"yperiod\");s&&(n(\"yperiod0\",a(s,e.ycalendar)),n(\"yperiodalignment\"))}}},{\"../../constants/numerical\":479,\"../../lib\":503}],947:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../registry\"),a=t(\"../../lib\"),o=a.ensureSingle,s=a.identity,l=t(\"../../components/drawing\"),c=t(\"./subtypes\"),u=t(\"./line_points\"),f=t(\"./link_traces\"),h=t(\"../../lib/polygon\").tester;function p(t,e,r,f,p,d,g){var m;!function(t,e,r,i,o){var s=r.xaxis,l=r.yaxis,u=n.extent(a.simpleMap(s.range,s.r2c)),f=n.extent(a.simpleMap(l.range,l.r2c)),h=i[0].trace;if(!c.hasMarkers(h))return;var p=h.marker.maxdisplayed;if(0===p)return;var d=i.filter((function(t){return t.x>=u[0]&&t.x<=u[1]&&t.y>=f[0]&&t.y<=f[1]})),g=Math.ceil(d.length/p),m=0;o.forEach((function(t,r){var n=t[0].trace;c.hasMarkers(n)&&n.marker.maxdisplayed>0&&r0;function y(t){return v?t.transition():t}var x=r.xaxis,b=r.yaxis,_=f[0].trace,w=_.line,T=n.select(d),k=o(T,\"g\",\"errorbars\"),A=o(T,\"g\",\"lines\"),M=o(T,\"g\",\"points\"),S=o(T,\"g\",\"text\");if(i.getComponentMethod(\"errorbars\",\"plot\")(t,k,r,g),!0===_.visible){var E,L;y(T).style(\"opacity\",_.opacity);var C=_.fill.charAt(_.fill.length-1);\"x\"!==C&&\"y\"!==C&&(C=\"\"),f[0][r.isRangePlot?\"nodeRangePlot3\":\"node3\"]=T;var P,I,O=\"\",z=[],D=_._prevtrace;D&&(O=D._prevRevpath||\"\",L=D._nextFill,z=D._polygons);var R,F,B,N,j,U,V,H=\"\",q=\"\",G=[],Y=a.noop;if(E=_._ownFill,c.hasLines(_)||\"none\"!==_.fill){for(L&&L.datum(f),-1!==[\"hv\",\"vh\",\"hvh\",\"vhv\"].indexOf(w.shape)?(R=l.steps(w.shape),F=l.steps(w.shape.split(\"\").reverse().join(\"\"))):R=F=\"spline\"===w.shape?function(t){var e=t[t.length-1];return t.length>1&&t[0][0]===e[0]&&t[0][1]===e[1]?l.smoothclosed(t.slice(1),w.smoothing):l.smoothopen(t,w.smoothing)}:function(t){return\"M\"+t.join(\"L\")},B=function(t){return F(t.reverse())},G=u(f,{xaxis:x,yaxis:b,connectGaps:_.connectgaps,baseTolerance:Math.max(w.width||1,3)/4,shape:w.shape,simplify:w.simplify,fill:_.fill}),V=_._polygons=new Array(G.length),m=0;m1){var r=n.select(this);if(r.datum(f),t)y(r.style(\"opacity\",0).attr(\"d\",P).call(l.lineGroupStyle)).style(\"opacity\",1);else{var i=y(r);i.attr(\"d\",P),l.singleLineStyle(f,i)}}}}}var W=A.selectAll(\".js-line\").data(G);y(W.exit()).style(\"opacity\",0).remove(),W.each(Y(!1)),W.enter().append(\"path\").classed(\"js-line\",!0).style(\"vector-effect\",\"non-scaling-stroke\").call(l.lineGroupStyle).each(Y(!0)),l.setClipUrl(W,r.layerClipId,t),G.length?(E?(E.datum(f),N&&U&&(C?(\"y\"===C?N[1]=U[1]=b.c2p(0,!0):\"x\"===C&&(N[0]=U[0]=x.c2p(0,!0)),y(E).attr(\"d\",\"M\"+U+\"L\"+N+\"L\"+H.substr(1)).call(l.singleFillStyle)):y(E).attr(\"d\",H+\"Z\").call(l.singleFillStyle))):L&&(\"tonext\"===_.fill.substr(0,6)&&H&&O?(\"tonext\"===_.fill?y(L).attr(\"d\",H+\"Z\"+O+\"Z\").call(l.singleFillStyle):y(L).attr(\"d\",H+\"L\"+O.substr(1)+\"Z\").call(l.singleFillStyle),_._polygons=_._polygons.concat(z)):(Z(L),_._polygons=null)),_._prevRevpath=q,_._prevPolygons=V):(E?Z(E):L&&Z(L),_._polygons=_._prevRevpath=_._prevPolygons=null),M.datum(f),S.datum(f),function(e,i,a){var o,u=a[0].trace,f=c.hasMarkers(u),h=c.hasText(u),p=tt(u),d=et,g=et;if(f||h){var m=s,_=u.stackgroup,w=_&&\"infer zero\"===t._fullLayout._scatterStackOpts[x._id+b._id][_].stackgaps;u.marker.maxdisplayed||u._needsCull?m=w?K:J:_&&!w&&(m=Q),f&&(d=m),h&&(g=m)}var T,k=(o=e.selectAll(\"path.point\").data(d,p)).enter().append(\"path\").classed(\"point\",!0);v&&k.call(l.pointStyle,u,t).call(l.translatePoints,x,b).style(\"opacity\",0).transition().style(\"opacity\",1),o.order(),f&&(T=l.makePointStyleFns(u)),o.each((function(e){var i=n.select(this),a=y(i);l.translatePoint(e,a,x,b)?(l.singlePointStyle(e,a,u,T,t),r.layerClipId&&l.hideOutsideRangePoint(e,a,x,b,u.xcalendar,u.ycalendar),u.customdata&&i.classed(\"plotly-customdata\",null!==e.data&&void 0!==e.data)):a.remove()})),v?o.exit().transition().style(\"opacity\",0).remove():o.exit().remove(),(o=i.selectAll(\"g\").data(g,p)).enter().append(\"g\").classed(\"textpoint\",!0).append(\"text\"),o.order(),o.each((function(t){var e=n.select(this),i=y(e.select(\"text\"));l.translatePoint(t,i,x,b)?r.layerClipId&&l.hideOutsideRangePoint(t,e,x,b,u.xcalendar,u.ycalendar):e.remove()})),o.selectAll(\"text\").call(l.textPointStyle,u,t).each((function(t){var e=x.c2p(t.x),r=b.c2p(t.y);n.select(this).selectAll(\"tspan.line\").each((function(){y(n.select(this)).attr({x:e,y:r})}))})),o.exit().remove()}(M,S,f);var X=!1===_.cliponaxis?null:r.layerClipId;l.setClipUrl(M,X,t),l.setClipUrl(S,X,t)}function Z(t){y(t).attr(\"d\",\"M0,0Z\")}function J(t){return t.filter((function(t){return!t.gap&&t.vis}))}function K(t){return t.filter((function(t){return t.vis}))}function Q(t){return t.filter((function(t){return!t.gap}))}function $(t){return t.id}function tt(t){if(t.ids)return $}function et(){return!1}}e.exports=function(t,e,r,i,a,c){var u,h,d=!a,g=!!a&&a.duration>0,m=f(t,e,r);((u=i.selectAll(\"g.trace\").data(m,(function(t){return t[0].trace.uid}))).enter().append(\"g\").attr(\"class\",(function(t){return\"trace scatter trace\"+t[0].trace.uid})).style(\"stroke-miterlimit\",2),u.order(),function(t,e,r){e.each((function(e){var i=o(n.select(this),\"g\",\"fills\");l.setClipUrl(i,r.layerClipId,t);var a=e[0].trace,c=[];a._ownfill&&c.push(\"_ownFill\"),a._nexttrace&&c.push(\"_nextFill\");var u=i.selectAll(\"g\").data(c,s);u.enter().append(\"g\"),u.exit().each((function(t){a[t]=null})).remove(),u.order().each((function(t){a[t]=o(n.select(this),\"path\",\"js-fill\")}))}))}(t,u,e),g)?(c&&(h=c()),n.transition().duration(a.duration).ease(a.easing).each(\"end\",(function(){h&&h()})).each(\"interrupt\",(function(){h&&h()})).each((function(){i.selectAll(\"g.trace\").each((function(r,n){p(t,n,e,r,m,this,a)}))}))):u.each((function(r,n){p(t,n,e,r,m,this,a)}));d&&u.exit().remove(),i.selectAll(\"path:not([d])\").remove()}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/polygon\":515,\"../../registry\":638,\"./line_points\":940,\"./link_traces\":942,\"./subtypes\":951,\"@plotly/d3\":58}],948:[function(t,e,r){\"use strict\";var n=t(\"./subtypes\");e.exports=function(t,e){var r,i,a,o,s=t.cd,l=t.xaxis,c=t.yaxis,u=[],f=s[0].trace;if(!n.hasMarkers(f)&&!n.hasText(f))return[];if(!1===e)for(r=0;r0){var h=i.c2l(u);i._lowerLogErrorBound||(i._lowerLogErrorBound=h),i._lowerErrorBound=Math.min(i._lowerLogErrorBound,h)}}else o[s]=[-l[0]*r,l[1]*r]}return o}e.exports=function(t,e,r){var n=[i(t.x,t.error_x,e[0],r.xaxis),i(t.y,t.error_y,e[1],r.yaxis),i(t.z,t.error_z,e[2],r.zaxis)],a=function(t){for(var e=0;e-1?-1:t.indexOf(\"right\")>-1?1:0}function b(t){return null==t?0:t.indexOf(\"top\")>-1?-1:t.indexOf(\"bottom\")>-1?1:0}function _(t,e){return e(4*t)}function w(t){return p[t]}function T(t,e,r,n,i){var a=null;if(l.isArrayOrTypedArray(t)){a=[];for(var o=0;o=0){var g=function(t,e,r){var n,i=(r+1)%3,a=(r+2)%3,o=[],l=[];for(n=0;n=0&&f(\"surfacecolor\",h||p);for(var d=[\"x\",\"y\",\"z\"],g=0;g<3;++g){var m=\"projection.\"+d[g];f(m+\".show\")&&(f(m+\".opacity\"),f(m+\".scale\"))}var v=n.getComponentMethod(\"errorbars\",\"supplyDefaults\");v(t,e,h||p||r,{axis:\"z\"}),v(t,e,h||p||r,{axis:\"y\",inherit:\"z\"}),v(t,e,h||p||r,{axis:\"x\",inherit:\"z\"})}else e.visible=!1}},{\"../../lib\":503,\"../../registry\":638,\"../scatter/line_defaults\":939,\"../scatter/marker_defaults\":945,\"../scatter/subtypes\":951,\"../scatter/text_defaults\":952,\"./attributes\":954}],959:[function(t,e,r){\"use strict\";e.exports={plot:t(\"./convert\"),attributes:t(\"./attributes\"),markerSymbols:t(\"../../constants/gl3d_markers\"),supplyDefaults:t(\"./defaults\"),colorbar:[{container:\"marker\",min:\"cmin\",max:\"cmax\"},{container:\"line\",min:\"cmin\",max:\"cmax\"}],calc:t(\"./calc\"),moduleType:\"trace\",name:\"scatter3d\",basePlotModule:t(\"../../plots/gl3d\"),categories:[\"gl3d\",\"symbols\",\"showLegend\",\"scatter-like\"],meta:{}}},{\"../../constants/gl3d_markers\":477,\"../../plots/gl3d\":598,\"./attributes\":954,\"./calc\":955,\"./convert\":957,\"./defaults\":958}],960:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\"),i=t(\"../../plots/attributes\"),a=t(\"../../plots/template_attributes\").hovertemplateAttrs,o=t(\"../../plots/template_attributes\").texttemplateAttrs,s=t(\"../../components/colorscale/attributes\"),l=t(\"../../lib/extend\").extendFlat,c=n.marker,u=n.line,f=c.line;e.exports={carpet:{valType:\"string\",editType:\"calc\"},a:{valType:\"data_array\",editType:\"calc\"},b:{valType:\"data_array\",editType:\"calc\"},mode:l({},n.mode,{dflt:\"markers\"}),text:l({},n.text,{}),texttemplate:o({editType:\"plot\"},{keys:[\"a\",\"b\",\"text\"]}),hovertext:l({},n.hovertext,{}),line:{color:u.color,width:u.width,dash:u.dash,shape:l({},u.shape,{values:[\"linear\",\"spline\"]}),smoothing:u.smoothing,editType:\"calc\"},connectgaps:n.connectgaps,fill:l({},n.fill,{values:[\"none\",\"toself\",\"tonext\"],dflt:\"none\"}),fillcolor:n.fillcolor,marker:l({symbol:c.symbol,opacity:c.opacity,maxdisplayed:c.maxdisplayed,size:c.size,sizeref:c.sizeref,sizemin:c.sizemin,sizemode:c.sizemode,line:l({width:f.width,editType:\"calc\"},s(\"marker.line\")),gradient:c.gradient,editType:\"calc\"},s(\"marker\")),textfont:n.textfont,textposition:n.textposition,selected:n.selected,unselected:n.unselected,hoverinfo:l({},i.hoverinfo,{flags:[\"a\",\"b\",\"text\",\"name\"]}),hoveron:n.hoveron,hovertemplate:a()}},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/template_attributes\":633,\"../scatter/attributes\":926}],961:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../scatter/colorscale_calc\"),a=t(\"../scatter/arrays_to_calcdata\"),o=t(\"../scatter/calc_selection\"),s=t(\"../scatter/calc\").calcMarkerSize,l=t(\"../carpet/lookup_carpetid\");e.exports=function(t,e){var r=e._carpetTrace=l(t,e);if(r&&r.visible&&\"legendonly\"!==r.visible){var c;e.xaxis=r.xaxis,e.yaxis=r.yaxis;var u,f,h=e._length,p=new Array(h),d=!1;for(c=0;c\")}return o}function y(t,e){var r;r=t.labelprefix&&t.labelprefix.length>0?t.labelprefix.replace(/ = $/,\"\"):t._hovertitle,m.push(r+\": \"+e.toFixed(3)+t.labelsuffix)}}},{\"../../lib\":503,\"../scatter/hover\":937}],966:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"./format_labels\"),calc:t(\"./calc\"),plot:t(\"./plot\"),style:t(\"../scatter/style\").style,styleOnSelect:t(\"../scatter/style\").styleOnSelect,hoverPoints:t(\"./hover\"),selectPoints:t(\"../scatter/select\"),eventData:t(\"./event_data\"),moduleType:\"trace\",name:\"scattercarpet\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"svg\",\"carpet\",\"symbols\",\"showLegend\",\"carpetDependent\",\"zoomScale\"],meta:{}}},{\"../../plots/cartesian\":568,\"../scatter/marker_colorbar\":944,\"../scatter/select\":948,\"../scatter/style\":950,\"./attributes\":960,\"./calc\":961,\"./defaults\":962,\"./event_data\":963,\"./format_labels\":964,\"./hover\":965,\"./plot\":967}],967:[function(t,e,r){\"use strict\";var n=t(\"../scatter/plot\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"../../components/drawing\");e.exports=function(t,e,r,o){var s,l,c,u=r[0][0].carpet,f={xaxis:i.getFromId(t,u.xaxis||\"x\"),yaxis:i.getFromId(t,u.yaxis||\"y\"),plot:e.plot};for(n(t,f,r,o),s=0;s\")}(c,g,t,l[0].t.labels),t.hovertemplate=c.hovertemplate,[t]}}},{\"../../components/fx\":406,\"../../constants/numerical\":479,\"../../lib\":503,\"../scatter/get_trace_color\":936,\"./attributes\":968}],974:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"./format_labels\"),calc:t(\"./calc\"),calcGeoJSON:t(\"./plot\").calcGeoJSON,plot:t(\"./plot\").plot,style:t(\"./style\"),styleOnSelect:t(\"../scatter/style\").styleOnSelect,hoverPoints:t(\"./hover\"),eventData:t(\"./event_data\"),selectPoints:t(\"./select\"),moduleType:\"trace\",name:\"scattergeo\",basePlotModule:t(\"../../plots/geo\"),categories:[\"geo\",\"symbols\",\"showLegend\",\"scatter-like\"],meta:{}}},{\"../../plots/geo\":589,\"../scatter/marker_colorbar\":944,\"../scatter/style\":950,\"./attributes\":968,\"./calc\":969,\"./defaults\":970,\"./event_data\":971,\"./format_labels\":972,\"./hover\":973,\"./plot\":975,\"./select\":976,\"./style\":977}],975:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../lib/topojson_utils\").getTopojsonFeatures,o=t(\"../../lib/geojson_utils\"),s=t(\"../../lib/geo_location_utils\"),l=t(\"../../plots/cartesian/autorange\").findExtremes,c=t(\"../../constants/numerical\").BADNUM,u=t(\"../scatter/calc\").calcMarkerSize,f=t(\"../scatter/subtypes\"),h=t(\"./style\");e.exports={calcGeoJSON:function(t,e){var r,n,i=t[0].trace,o=e[i.geo],f=o._subplot,h=i._length;if(Array.isArray(i.locations)){var p=i.locationmode,d=\"geojson-id\"===p?s.extractTraceFeature(t):a(i,f.topojson);for(r=0;r=m,w=2*b,T={},k=l.makeCalcdata(e,\"x\"),A=y.makeCalcdata(e,\"y\"),M=s(e,l,\"x\",k),S=s(e,y,\"y\",A),E=M.vals,L=S.vals;e._x=E,e._y=L,e.xperiodalignment&&(e._origX=k,e._xStarts=M.starts,e._xEnds=M.ends),e.yperiodalignment&&(e._origY=A,e._yStarts=S.starts,e._yEnds=S.ends);var C=new Array(w),P=new Array(b);for(r=0;r1&&i.extendFlat(s.line,p.linePositions(t,r,n));if(s.errorX||s.errorY){var l=p.errorBarPositions(t,r,n,a,o);s.errorX&&i.extendFlat(s.errorX,l.x),s.errorY&&i.extendFlat(s.errorY,l.y)}s.text&&(i.extendFlat(s.text,{positions:n},p.textPosition(t,r,s.text,s.marker)),i.extendFlat(s.textSel,{positions:n},p.textPosition(t,r,s.text,s.markerSel)),i.extendFlat(s.textUnsel,{positions:n},p.textPosition(t,r,s.text,s.markerUnsel)));return s}(t,0,e,C,E,L),z=d(t,x);return f(o,e),_?O.marker&&(I=O.marker.sizeAvg||Math.max(O.marker.size,3)):I=c(e,b),u(t,e,l,y,E,L,I),O.errorX&&v(e,l,O.errorX),O.errorY&&v(e,y,O.errorY),O.fill&&!z.fill2d&&(z.fill2d=!0),O.marker&&!z.scatter2d&&(z.scatter2d=!0),O.line&&!z.line2d&&(z.line2d=!0),!O.errorX&&!O.errorY||z.error2d||(z.error2d=!0),O.text&&!z.glText&&(z.glText=!0),O.marker&&(O.marker.snap=b),z.lineOptions.push(O.line),z.errorXOptions.push(O.errorX),z.errorYOptions.push(O.errorY),z.fillOptions.push(O.fill),z.markerOptions.push(O.marker),z.markerSelectedOptions.push(O.markerSel),z.markerUnselectedOptions.push(O.markerUnsel),z.textOptions.push(O.text),z.textSelectedOptions.push(O.textSel),z.textUnselectedOptions.push(O.textUnsel),z.selectBatch.push([]),z.unselectBatch.push([]),T._scene=z,T.index=z.count,T.x=E,T.y=L,T.positions=C,z.count++,[{x:!1,y:!1,t:T,trace:e}]}},{\"../../constants/numerical\":479,\"../../lib\":503,\"../../plots/cartesian/align_period\":551,\"../../plots/cartesian/autorange\":553,\"../../plots/cartesian/axis_ids\":558,\"../scatter/calc\":927,\"../scatter/colorscale_calc\":929,\"./constants\":980,\"./convert\":981,\"./scene_update\":989,\"@plotly/point-cluster\":59}],980:[function(t,e,r){\"use strict\";e.exports={TOO_MANY_POINTS:1e5,SYMBOL_SDF_SIZE:200,SYMBOL_SIZE:20,SYMBOL_STROKE:1,DOT_RE:/-dot/,OPEN_RE:/-open/,DASHES:{solid:[1],dot:[1,1],dash:[4,1],longdash:[8,1],dashdot:[4,1,1,1],longdashdot:[8,1,1,1]}}},{}],981:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"svg-path-sdf\"),a=t(\"color-normalize\"),o=t(\"../../registry\"),s=t(\"../../lib\"),l=t(\"../../components/drawing\"),c=t(\"../../plots/cartesian/axis_ids\"),u=t(\"../../lib/gl_format_color\").formatColor,f=t(\"../scatter/subtypes\"),h=t(\"../scatter/make_bubble_size_func\"),p=t(\"./helpers\"),d=t(\"./constants\"),g=t(\"../../constants/interactions\").DESELECTDIM,m={start:1,left:1,end:-1,right:-1,middle:0,center:0,bottom:1,top:-1},v=t(\"../../components/fx/helpers\").appendArrayPointValue;function y(t,e){var r,i=t._fullLayout,a=e._length,o=e.textfont,l=e.textposition,c=Array.isArray(l)?l:[l],u=o.color,f=o.size,h=o.family,p={},d=t._context.plotGlPixelRatio,g=e.texttemplate;if(g){p.text=[];var m=i._d3locale,y=Array.isArray(g),x=y?Math.min(g.length,a):a,b=y?function(t){return g[t]}:function(){return g};for(r=0;rd.TOO_MANY_POINTS||f.hasMarkers(e)?\"rect\":\"round\";if(c&&e.connectgaps){var h=n[0],p=n[1];for(i=0;i1?l[i]:l[0]:l,d=Array.isArray(c)?c.length>1?c[i]:c[0]:c,g=m[p],v=m[d],y=u?u/.8+1:0,x=-v*y-.5*v;o.offset[i]=[g*y/h,x/h]}}return o}}},{\"../../components/drawing\":388,\"../../components/fx/helpers\":402,\"../../constants/interactions\":478,\"../../lib\":503,\"../../lib/gl_format_color\":499,\"../../plots/cartesian/axis_ids\":558,\"../../registry\":638,\"../scatter/make_bubble_size_func\":943,\"../scatter/subtypes\":951,\"./constants\":980,\"./helpers\":985,\"color-normalize\":89,\"fast-isnumeric\":190,\"svg-path-sdf\":310}],982:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../registry\"),a=t(\"./helpers\"),o=t(\"./attributes\"),s=t(\"../scatter/constants\"),l=t(\"../scatter/subtypes\"),c=t(\"../scatter/xy_defaults\"),u=t(\"../scatter/period_defaults\"),f=t(\"../scatter/marker_defaults\"),h=t(\"../scatter/line_defaults\"),p=t(\"../scatter/fillcolor_defaults\"),d=t(\"../scatter/text_defaults\");e.exports=function(t,e,r,g){function m(r,i){return n.coerce(t,e,o,r,i)}var v=!!t.marker&&a.isOpenSymbol(t.marker.symbol),y=l.isBubble(t),x=c(t,e,g,m);if(x){u(t,e,g,m),m(\"xhoverformat\"),m(\"yhoverformat\");var b=x100},r.isDotSymbol=function(t){return\"string\"==typeof t?n.DOT_RE.test(t):t>200}},{\"./constants\":980}],986:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\"),a=t(\"../scatter/get_trace_color\");function o(t,e,r,o){var s=t.xa,l=t.ya,c=t.distance,u=t.dxy,f=t.index,h={pointNumber:f,x:e[f],y:r[f]};h.tx=Array.isArray(o.text)?o.text[f]:o.text,h.htx=Array.isArray(o.hovertext)?o.hovertext[f]:o.hovertext,h.data=Array.isArray(o.customdata)?o.customdata[f]:o.customdata,h.tp=Array.isArray(o.textposition)?o.textposition[f]:o.textposition;var p=o.textfont;p&&(h.ts=i.isArrayOrTypedArray(p.size)?p.size[f]:p.size,h.tc=Array.isArray(p.color)?p.color[f]:p.color,h.tf=Array.isArray(p.family)?p.family[f]:p.family);var d=o.marker;d&&(h.ms=i.isArrayOrTypedArray(d.size)?d.size[f]:d.size,h.mo=i.isArrayOrTypedArray(d.opacity)?d.opacity[f]:d.opacity,h.mx=i.isArrayOrTypedArray(d.symbol)?d.symbol[f]:d.symbol,h.mc=i.isArrayOrTypedArray(d.color)?d.color[f]:d.color);var g=d&&d.line;g&&(h.mlc=Array.isArray(g.color)?g.color[f]:g.color,h.mlw=i.isArrayOrTypedArray(g.width)?g.width[f]:g.width);var m=d&&d.gradient;m&&\"none\"!==m.type&&(h.mgt=Array.isArray(m.type)?m.type[f]:m.type,h.mgc=Array.isArray(m.color)?m.color[f]:m.color);var v=s.c2p(h.x,!0),y=l.c2p(h.y,!0),x=h.mrc||1,b=o.hoverlabel;b&&(h.hbg=Array.isArray(b.bgcolor)?b.bgcolor[f]:b.bgcolor,h.hbc=Array.isArray(b.bordercolor)?b.bordercolor[f]:b.bordercolor,h.hts=i.isArrayOrTypedArray(b.font.size)?b.font.size[f]:b.font.size,h.htc=Array.isArray(b.font.color)?b.font.color[f]:b.font.color,h.htf=Array.isArray(b.font.family)?b.font.family[f]:b.font.family,h.hnl=i.isArrayOrTypedArray(b.namelength)?b.namelength[f]:b.namelength);var _=o.hoverinfo;_&&(h.hi=Array.isArray(_)?_[f]:_);var w=o.hovertemplate;w&&(h.ht=Array.isArray(w)?w[f]:w);var T={};T[t.index]=h;var k=o._origX,A=o._origY,M=i.extendFlat({},t,{color:a(o,h),x0:v-x,x1:v+x,xLabelVal:k?k[f]:h.x,y0:y-x,y1:y+x,yLabelVal:A?A[f]:h.y,cd:T,distance:c,spikeDistance:u,hovertemplate:h.ht});return h.htx?M.text=h.htx:h.tx?M.text=h.tx:o.text&&(M.text=o.text),i.fillText(h,o,M),n.getComponentMethod(\"errorbars\",\"hoverInfo\")(h,o,M),M}e.exports={hoverPoints:function(t,e,r,n){var i,a,s,l,c,u,f,h,p,d,g=t.cd,m=g[0].t,v=g[0].trace,y=t.xa,x=t.ya,b=m.x,_=m.y,w=y.c2p(e),T=x.c2p(r),k=t.distance;if(m.tree){var A=y.p2c(w-k),M=y.p2c(w+k),S=x.p2c(T-k),E=x.p2c(T+k);i=\"x\"===n?m.tree.range(Math.min(A,M),Math.min(x._rl[0],x._rl[1]),Math.max(A,M),Math.max(x._rl[0],x._rl[1])):m.tree.range(Math.min(A,M),Math.min(S,E),Math.max(A,M),Math.max(S,E))}else i=m.ids;var L=k;if(\"x\"===n){var C=!!v.xperiodalignment,P=!!v.yperiodalignment;for(u=0;u=Math.min(I,O)&&w<=Math.max(I,O)?0:1/0}if(f=Math.min(z,D)&&T<=Math.max(z,D)?0:1/0}d=Math.sqrt(f*f+h*h),s=i[u]}}}else for(u=i.length-1;u>-1;u--)l=b[a=i[u]],c=_[a],f=y.c2p(l)-w,h=x.c2p(c)-T,(p=Math.sqrt(f*f+h*h))v.glText.length){var w=b-v.glText.length;for(d=0;dr&&(isNaN(e[n])||isNaN(e[n+1]));)n-=2;t.positions=e.slice(r,n+2)}return t})),v.line2d.update(v.lineOptions)),v.error2d){var k=(v.errorXOptions||[]).concat(v.errorYOptions||[]);v.error2d.update(k)}v.scatter2d&&v.scatter2d.update(v.markerOptions),v.fillOrder=s.repeat(null,b),v.fill2d&&(v.fillOptions=v.fillOptions.map((function(t,e){var n=r[e];if(t&&n&&n[0]&&n[0].trace){var i,a,o=n[0],s=o.trace,l=o.t,c=v.lineOptions[e],u=[];s._ownfill&&u.push(e),s._nexttrace&&u.push(e+1),u.length&&(v.fillOrder[e]=u);var f,h,p=[],d=c&&c.positions||l.positions;if(\"tozeroy\"===s.fill){for(f=0;ff&&isNaN(d[h+1]);)h-=2;0!==d[f+1]&&(p=[d[f],0]),p=p.concat(d.slice(f,h+2)),0!==d[h+1]&&(p=p.concat([d[h],0]))}else if(\"tozerox\"===s.fill){for(f=0;ff&&isNaN(d[h]);)h-=2;0!==d[f]&&(p=[0,d[f+1]]),p=p.concat(d.slice(f,h+2)),0!==d[h]&&(p=p.concat([0,d[h+1]]))}else if(\"toself\"===s.fill||\"tonext\"===s.fill){for(p=[],i=0,t.splitNull=!0,a=0;a-1;for(d=0;d\")}function u(t){return t+\"\\xb0\"}}e.exports={hoverPoints:function(t,e,r){var o=t.cd,c=o[0].trace,u=t.xa,f=t.ya,h=t.subplot,p=360*(e>=0?Math.floor((e+180)/360):Math.ceil((e-180)/360)),d=e-p;if(n.getClosest(o,(function(t){var e=t.lonlat;if(e[0]===s)return 1/0;var n=i.modHalf(e[0],360),a=e[1],o=h.project([n,a]),l=o.x-u.c2p([d,a]),c=o.y-f.c2p([n,r]),p=Math.max(3,t.mrc||0);return Math.max(Math.sqrt(l*l+c*c)-p,1-3/p)}),t),!1!==t.index){var g=o[t.index],m=g.lonlat,v=[i.modHalf(m[0],360)+p,m[1]],y=u.c2p(v),x=f.c2p(v),b=g.mrc||1;t.x0=y-b,t.x1=y+b,t.y0=x-b,t.y1=x+b;var _={};_[c.subplot]={_subplot:h};var w=c._module.formatLabels(g,c,_);return t.lonLabel=w.lonLabel,t.latLabel=w.latLabel,t.color=a(c,g),t.extraText=l(c,g,o[0].t.labels),t.hovertemplate=c.hovertemplate,[t]}},getExtraText:l}},{\"../../components/fx\":406,\"../../constants/numerical\":479,\"../../lib\":503,\"../scatter/get_trace_color\":936}],997:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"./format_labels\"),calc:t(\"../scattergeo/calc\"),plot:t(\"./plot\"),hoverPoints:t(\"./hover\").hoverPoints,eventData:t(\"./event_data\"),selectPoints:t(\"./select\"),styleOnSelect:function(t,e){e&&e[0].trace._glTrace.update(e)},moduleType:\"trace\",name:\"scattermapbox\",basePlotModule:t(\"../../plots/mapbox\"),categories:[\"mapbox\",\"gl\",\"symbols\",\"showLegend\",\"scatter-like\"],meta:{}}},{\"../../plots/mapbox\":613,\"../scatter/marker_colorbar\":944,\"../scattergeo/calc\":969,\"./attributes\":991,\"./defaults\":993,\"./event_data\":994,\"./format_labels\":995,\"./hover\":996,\"./plot\":998,\"./select\":999}],998:[function(t,e,r){\"use strict\";var n=t(\"./convert\"),i=t(\"../../plots/mapbox/constants\").traceLayerPrefix,a=[\"fill\",\"line\",\"circle\",\"symbol\"];function o(t,e){this.type=\"scattermapbox\",this.subplot=t,this.uid=e,this.sourceIds={fill:\"source-\"+e+\"-fill\",line:\"source-\"+e+\"-line\",circle:\"source-\"+e+\"-circle\",symbol:\"source-\"+e+\"-symbol\"},this.layerIds={fill:i+e+\"-fill\",line:i+e+\"-line\",circle:i+e+\"-circle\",symbol:i+e+\"-symbol\"},this.below=null}var s=o.prototype;s.addSource=function(t,e){this.subplot.map.addSource(this.sourceIds[t],{type:\"geojson\",data:e.geojson})},s.setSourceData=function(t,e){this.subplot.map.getSource(this.sourceIds[t]).setData(e.geojson)},s.addLayer=function(t,e,r){this.subplot.addLayer({type:t,id:this.layerIds[t],source:this.sourceIds[t],layout:e.layout,paint:e.paint},r)},s.update=function(t){var e,r,i,o=this.subplot,s=o.map,l=n(o.gd,t),c=o.belowLookup[\"trace-\"+this.uid];if(c!==this.below){for(e=a.length-1;e>=0;e--)r=a[e],s.removeLayer(this.layerIds[r]);for(e=0;e=0;e--){var r=a[e];t.removeLayer(this.layerIds[r]),t.removeSource(this.sourceIds[r])}},e.exports=function(t,e){for(var r=e[0].trace,i=new o(t,r.uid),s=n(t.gd,e),l=i.below=t.belowLookup[\"trace-\"+r.uid],c=0;c\")}}e.exports={hoverPoints:function(t,e,r,a){var o=n(t,e,r,a);if(o&&!1!==o[0].index){var s=o[0];if(void 0===s.index)return o;var l=t.subplot,c=s.cd[s.index],u=s.trace;if(l.isPtInside(c))return s.xLabelVal=void 0,s.yLabelVal=void 0,i(c,u,l,s),s.hovertemplate=u.hovertemplate,o}},makeHoverPointText:i}},{\"../scatter/hover\":937}],1005:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"scatterpolar\",basePlotModule:t(\"../../plots/polar\"),categories:[\"polar\",\"symbols\",\"showLegend\",\"scatter-like\"],attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\").supplyDefaults,colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"./format_labels\"),calc:t(\"./calc\"),plot:t(\"./plot\"),style:t(\"../scatter/style\").style,styleOnSelect:t(\"../scatter/style\").styleOnSelect,hoverPoints:t(\"./hover\").hoverPoints,selectPoints:t(\"../scatter/select\"),meta:{}}},{\"../../plots/polar\":622,\"../scatter/marker_colorbar\":944,\"../scatter/select\":948,\"../scatter/style\":950,\"./attributes\":1e3,\"./calc\":1001,\"./defaults\":1002,\"./format_labels\":1003,\"./hover\":1004,\"./plot\":1006}],1006:[function(t,e,r){\"use strict\";var n=t(\"../scatter/plot\"),i=t(\"../../constants/numerical\").BADNUM;e.exports=function(t,e,r){for(var a=e.layers.frontplot.select(\"g.scatterlayer\"),o={xaxis:e.xaxis,yaxis:e.yaxis,plot:e.framework,layerClipId:e._hasClipOnAxisFalse?e.clipIds.forTraces:null},s=e.radialAxis,l=e.angularAxis,c=0;c=c&&(y.marker.cluster=d.tree),y.marker&&(y.markerSel.positions=y.markerUnsel.positions=y.marker.positions=_),y.line&&_.length>1&&l.extendFlat(y.line,s.linePositions(t,p,_)),y.text&&(l.extendFlat(y.text,{positions:_},s.textPosition(t,p,y.text,y.marker)),l.extendFlat(y.textSel,{positions:_},s.textPosition(t,p,y.text,y.markerSel)),l.extendFlat(y.textUnsel,{positions:_},s.textPosition(t,p,y.text,y.markerUnsel))),y.fill&&!h.fill2d&&(h.fill2d=!0),y.marker&&!h.scatter2d&&(h.scatter2d=!0),y.line&&!h.line2d&&(h.line2d=!0),y.text&&!h.glText&&(h.glText=!0),h.lineOptions.push(y.line),h.fillOptions.push(y.fill),h.markerOptions.push(y.marker),h.markerSelectedOptions.push(y.markerSel),h.markerUnselectedOptions.push(y.markerUnsel),h.textOptions.push(y.text),h.textSelectedOptions.push(y.textSel),h.textUnselectedOptions.push(y.textUnsel),h.selectBatch.push([]),h.unselectBatch.push([]),d.x=w,d.y=T,d.rawx=w,d.rawy=T,d.r=m,d.theta=v,d.positions=_,d._scene=h,d.index=h.count,h.count++}})),a(t,e,r)}}},{\"../../lib\":503,\"../scattergl/constants\":980,\"../scattergl/convert\":981,\"../scattergl/plot\":988,\"../scattergl/scene_update\":989,\"@plotly/point-cluster\":59,\"fast-isnumeric\":190}],1014:[function(t,e,r){\"use strict\";var n=t(\"../../plots/template_attributes\").hovertemplateAttrs,i=t(\"../../plots/template_attributes\").texttemplateAttrs,a=t(\"../../lib/extend\").extendFlat,o=t(\"../scatter/attributes\"),s=t(\"../../plots/attributes\"),l=o.line;e.exports={mode:o.mode,real:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},imag:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},text:o.text,texttemplate:i({editType:\"plot\"},{keys:[\"real\",\"imag\",\"text\"]}),hovertext:o.hovertext,line:{color:l.color,width:l.width,dash:l.dash,shape:a({},l.shape,{values:[\"linear\",\"spline\"]}),smoothing:l.smoothing,editType:\"calc\"},connectgaps:o.connectgaps,marker:o.marker,cliponaxis:a({},o.cliponaxis,{dflt:!1}),textposition:o.textposition,textfont:o.textfont,fill:a({},o.fill,{values:[\"none\",\"toself\",\"tonext\"],dflt:\"none\"}),fillcolor:o.fillcolor,hoverinfo:a({},s.hoverinfo,{flags:[\"real\",\"imag\",\"text\",\"name\"]}),hoveron:o.hoveron,hovertemplate:n(),selected:o.selected,unselected:o.unselected}},{\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/template_attributes\":633,\"../scatter/attributes\":926}],1015:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../constants/numerical\").BADNUM,a=t(\"../scatter/colorscale_calc\"),o=t(\"../scatter/arrays_to_calcdata\"),s=t(\"../scatter/calc_selection\"),l=t(\"../scatter/calc\").calcMarkerSize;e.exports=function(t,e){for(var r=t._fullLayout,c=e.subplot,u=r[c].realaxis,f=r[c].imaginaryaxis,h=u.makeCalcdata(e,\"real\"),p=f.makeCalcdata(e,\"imag\"),d=e._length,g=new Array(d),m=0;m\")}}e.exports={hoverPoints:function(t,e,r,a){var o=n(t,e,r,a);if(o&&!1!==o[0].index){var s=o[0];if(void 0===s.index)return o;var l=t.subplot,c=s.cd[s.index],u=s.trace;if(l.isPtInside(c))return s.xLabelVal=void 0,s.yLabelVal=void 0,i(c,u,l,s),s.hovertemplate=u.hovertemplate,o}},makeHoverPointText:i}},{\"../scatter/hover\":937}],1019:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"scattersmith\",basePlotModule:t(\"../../plots/smith\"),categories:[\"smith\",\"symbols\",\"showLegend\",\"scatter-like\"],attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"./format_labels\"),calc:t(\"./calc\"),plot:t(\"./plot\"),style:t(\"../scatter/style\").style,styleOnSelect:t(\"../scatter/style\").styleOnSelect,hoverPoints:t(\"./hover\").hoverPoints,selectPoints:t(\"../scatter/select\"),meta:{}}},{\"../../plots/smith\":629,\"../scatter/marker_colorbar\":944,\"../scatter/select\":948,\"../scatter/style\":950,\"./attributes\":1014,\"./calc\":1015,\"./defaults\":1016,\"./format_labels\":1017,\"./hover\":1018,\"./plot\":1020}],1020:[function(t,e,r){\"use strict\";var n=t(\"../scatter/plot\"),i=t(\"../../constants/numerical\").BADNUM,a=t(\"../../plots/smith/helpers\").smith;e.exports=function(t,e,r){for(var o=e.layers.frontplot.select(\"g.scatterlayer\"),s={xaxis:e.xaxis,yaxis:e.yaxis,plot:e.framework,layerClipId:e._hasClipOnAxisFalse?e.clipIds.forTraces:null},l=0;l\"),o.hovertemplate=h.hovertemplate,a}function x(t,e){v.push(t._hovertitle+\": \"+e)}}},{\"../scatter/hover\":937}],1027:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"./format_labels\"),calc:t(\"./calc\"),plot:t(\"./plot\"),style:t(\"../scatter/style\").style,styleOnSelect:t(\"../scatter/style\").styleOnSelect,hoverPoints:t(\"./hover\"),selectPoints:t(\"../scatter/select\"),eventData:t(\"./event_data\"),moduleType:\"trace\",name:\"scatterternary\",basePlotModule:t(\"../../plots/ternary\"),categories:[\"ternary\",\"symbols\",\"showLegend\",\"scatter-like\"],meta:{}}},{\"../../plots/ternary\":634,\"../scatter/marker_colorbar\":944,\"../scatter/select\":948,\"../scatter/style\":950,\"./attributes\":1021,\"./calc\":1022,\"./defaults\":1023,\"./event_data\":1024,\"./format_labels\":1025,\"./hover\":1026,\"./plot\":1028}],1028:[function(t,e,r){\"use strict\";var n=t(\"../scatter/plot\");e.exports=function(t,e,r){var i=e.plotContainer;i.select(\".scatterlayer\").selectAll(\"*\").remove();var a={xaxis:e.xaxis,yaxis:e.yaxis,plot:i,layerClipId:e._hasClipOnAxisFalse?e.clipIdRelative:null},o=e.layers.frontplot.select(\"g.scatterlayer\");n(t,a,r,o)}},{\"../scatter/plot\":947}],1029:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\"),i=t(\"../../components/colorscale/attributes\"),a=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,o=t(\"../../plots/template_attributes\").hovertemplateAttrs,s=t(\"../scattergl/attributes\"),l=t(\"../../plots/cartesian/constants\").idRegex,c=t(\"../../plot_api/plot_template\").templatedArray,u=t(\"../../lib/extend\").extendFlat,f=n.marker,h=f.line,p=u(i(\"marker.line\",{editTypeOverride:\"calc\"}),{width:u({},h.width,{editType:\"calc\"}),editType:\"calc\"}),d=u(i(\"marker\"),{symbol:f.symbol,size:u({},f.size,{editType:\"markerSize\"}),sizeref:f.sizeref,sizemin:f.sizemin,sizemode:f.sizemode,opacity:f.opacity,colorbar:f.colorbar,line:p,editType:\"calc\"});function g(t){return{valType:\"info_array\",freeLength:!0,editType:\"calc\",items:{valType:\"subplotid\",regex:l[t],editType:\"plot\"}}}d.color.editType=d.cmin.editType=d.cmax.editType=\"style\",e.exports={dimensions:c(\"dimension\",{visible:{valType:\"boolean\",dflt:!0,editType:\"calc\"},label:{valType:\"string\",editType:\"calc\"},values:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},axis:{type:{valType:\"enumerated\",values:[\"linear\",\"log\",\"date\",\"category\"],editType:\"calc+clearAxisTypes\"},matches:{valType:\"boolean\",dflt:!1,editType:\"calc\"},editType:\"calc+clearAxisTypes\"},editType:\"calc+clearAxisTypes\"}),text:u({},s.text,{}),hovertext:u({},s.hovertext,{}),hovertemplate:o(),xhoverformat:a(\"x\"),yhoverformat:a(\"y\"),marker:d,xaxes:g(\"x\"),yaxes:g(\"y\"),diagonal:{visible:{valType:\"boolean\",dflt:!0,editType:\"calc\"},editType:\"calc\"},showupperhalf:{valType:\"boolean\",dflt:!0,editType:\"calc\"},showlowerhalf:{valType:\"boolean\",dflt:!0,editType:\"calc\"},selected:{marker:s.selected.marker,editType:\"calc\"},unselected:{marker:s.unselected.marker,editType:\"calc\"},opacity:s.opacity}},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plot_api/plot_template\":543,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/cartesian/constants\":561,\"../../plots/template_attributes\":633,\"../scatter/attributes\":926,\"../scattergl/attributes\":978}],1030:[function(t,e,r){\"use strict\";var n=t(\"regl-line2d\"),i=t(\"../../registry\"),a=t(\"../../lib/prepare_regl\"),o=t(\"../../plots/get_data\").getModuleCalcData,s=t(\"../../plots/cartesian\"),l=t(\"../../plots/cartesian/axis_ids\").getFromId,c=t(\"../../plots/cartesian/axes\").shouldShowZeroLine;function u(t,e,r){for(var n=r.matrixOptions.data.length,i=e._visibleDims,a=r.viewOpts.ranges=new Array(n),o=0;oh?b.sizeAvg||Math.max(b.size,3):a(e,x),p=0;pa&&l||i-1,P=!0;if(o(x)||!!p.selectedpoints||C){var I=p._length;if(p.selectedpoints){g.selectBatch=p.selectedpoints;var O=p.selectedpoints,z={};for(l=0;l1&&(u=g[y-1],h=m[y-1],d=v[y-1]),e=0;eu?\"-\":\"+\")+\"x\")).replace(\"y\",(f>h?\"-\":\"+\")+\"y\")).replace(\"z\",(p>d?\"-\":\"+\")+\"z\");var L=function(){y=0,M=[],S=[],E=[]};(!y||y2?t.slice(1,e-1):2===e?[(t[0]+t[1])/2]:t}function p(t){var e=t.length;return 1===e?[.5,.5]:[t[1]-t[0],t[e-1]-t[e-2]]}function d(t,e){var r=t.fullSceneLayout,i=t.dataScale,u=e._len,f={};function d(t,e){var n=r[e],o=i[c[e]];return a.simpleMap(t,(function(t){return n.d2l(t)*o}))}if(f.vectors=l(d(e._u,\"xaxis\"),d(e._v,\"yaxis\"),d(e._w,\"zaxis\"),u),!u)return{positions:[],cells:[]};var g=d(e._Xs,\"xaxis\"),m=d(e._Ys,\"yaxis\"),v=d(e._Zs,\"zaxis\");if(f.meshgrid=[g,m,v],f.gridFill=e._gridFill,e._slen)f.startingPositions=l(d(e._startsX,\"xaxis\"),d(e._startsY,\"yaxis\"),d(e._startsZ,\"zaxis\"));else{for(var y=m[0],x=h(g),b=h(v),_=new Array(x.length*b.length),w=0,T=0;T=0};v?(r=Math.min(m.length,x.length),l=function(t){return A(m[t])&&M(t)},f=function(t){return String(m[t])}):(r=Math.min(y.length,x.length),l=function(t){return A(y[t])&&M(t)},f=function(t){return String(y[t])}),_&&(r=Math.min(r,b.length));for(var S=0;S1){for(var P=a.randstr(),I=0;I\"),name:A||z(\"name\")?y.name:void 0,color:k(\"hoverlabel.bgcolor\")||x.color,borderColor:k(\"hoverlabel.bordercolor\"),fontFamily:k(\"hoverlabel.font.family\"),fontSize:k(\"hoverlabel.font.size\"),fontColor:k(\"hoverlabel.font.color\"),nameLength:k(\"hoverlabel.namelength\"),textAlign:k(\"hoverlabel.align\"),hovertemplate:A,hovertemplateLabels:P,eventData:l};m&&(F.x0=E-i.rInscribed*i.rpx1,F.x1=E+i.rInscribed*i.rpx1,F.idealAlign=i.pxmid[0]<0?\"left\":\"right\"),v&&(F.x=E,F.idealAlign=E<0?\"left\":\"right\");var B=[];o.loneHover(F,{container:a._hoverlayer.node(),outerContainer:a._paper.node(),gd:r,inOut_bbox:B}),l[0].bbox=B[0],d._hasHoverLabel=!0}if(v){var N=t.select(\"path.surface\");h.styleOne(N,i,y,{hovered:!0})}d._hasHoverEvent=!0,r.emit(\"plotly_hover\",{points:l||[f(i,y,h.eventDataKeys)],event:n.event})}})),t.on(\"mouseout\",(function(e){var i=r._fullLayout,a=r._fullData[d.index],s=n.select(this).datum();if(d._hasHoverEvent&&(e.originalEvent=n.event,r.emit(\"plotly_unhover\",{points:[f(s,a,h.eventDataKeys)],event:n.event}),d._hasHoverEvent=!1),d._hasHoverLabel&&(o.loneUnhover(i._hoverlayer.node()),d._hasHoverLabel=!1),v){var l=t.select(\"path.surface\");h.styleOne(l,s,a,{hovered:!1})}})),t.on(\"click\",(function(t){var e=r._fullLayout,a=r._fullData[d.index],s=m&&(c.isHierarchyRoot(t)||c.isLeaf(t)),u=c.getPtId(t),p=c.isEntry(t)?c.findEntryWithChild(g,u):c.findEntryWithLevel(g,u),v=c.getPtId(p),y={points:[f(t,a,h.eventDataKeys)],event:n.event};s||(y.nextLevel=v);var x=l.triggerHandler(r,\"plotly_\"+d.type+\"click\",y);if(!1!==x&&e.hovermode&&(r._hoverdata=[f(t,a,h.eventDataKeys)],o.click(r,n.event)),!s&&!1!==x&&!r._dragging&&!r._transitioning){i.call(\"_storeDirectGUIEdit\",a,e._tracePreGUI[a.uid],{level:a.level});var b={data:[{level:v}],traces:[d.index]},_={frame:{redraw:!1,duration:h.transitionTime},transition:{duration:h.transitionTime,easing:h.transitionEasing},mode:\"immediate\",fromcurrent:!0};o.loneUnhover(e._hoverlayer.node()),i.call(\"animate\",r,b,_)}}))}},{\"../../components/fx\":406,\"../../components/fx/helpers\":402,\"../../lib\":503,\"../../lib/events\":492,\"../../registry\":638,\"../pie/helpers\":905,\"./helpers\":1051,\"@plotly/d3\":58}],1051:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../components/color\"),a=t(\"../../lib/setcursor\"),o=t(\"../pie/helpers\");function s(t){return t.data.data.pid}r.findEntryWithLevel=function(t,e){var n;return e&&t.eachAfter((function(t){if(r.getPtId(t)===e)return n=t.copy()})),n||t},r.findEntryWithChild=function(t,e){var n;return t.eachAfter((function(t){for(var i=t.children||[],a=0;a0)},r.getMaxDepth=function(t){return t.maxdepth>=0?t.maxdepth:1/0},r.isHeader=function(t,e){return!(r.isLeaf(t)||t.depth===e._maxDepth-1)},r.getParent=function(t,e){return r.findEntryWithLevel(t,s(e))},r.listPath=function(t,e){var n=t.parent;if(!n)return[];var i=e?[n.data[e]]:[n];return r.listPath(n,e).concat(i)},r.getPath=function(t){return r.listPath(t,\"label\").join(\"/\")+\"/\"},r.formatValue=o.formatPieValue,r.formatPercent=function(t,e){var r=n.formatPercent(t,0);return\"0%\"===r&&(r=o.formatPiePercent(t,e)),r}},{\"../../components/color\":366,\"../../lib\":503,\"../../lib/setcursor\":524,\"../pie/helpers\":905}],1052:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"sunburst\",basePlotModule:t(\"./base_plot\"),categories:[],animatable:!0,attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\"),supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\").calc,crossTraceCalc:t(\"./calc\").crossTraceCalc,plot:t(\"./plot\").plot,style:t(\"./style\").style,colorbar:t(\"../scatter/marker_colorbar\"),meta:{}}},{\"../scatter/marker_colorbar\":944,\"./attributes\":1045,\"./base_plot\":1046,\"./calc\":1047,\"./defaults\":1049,\"./layout_attributes\":1053,\"./layout_defaults\":1054,\"./plot\":1055,\"./style\":1056}],1053:[function(t,e,r){\"use strict\";e.exports={sunburstcolorway:{valType:\"colorlist\",editType:\"calc\"},extendsunburstcolors:{valType:\"boolean\",dflt:!0,editType:\"calc\"}}},{}],1054:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e){function r(r,a){return n.coerce(t,e,i,r,a)}r(\"sunburstcolorway\",e.colorway),r(\"extendsunburstcolors\")}},{\"../../lib\":503,\"./layout_attributes\":1053}],1055:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"d3-hierarchy\"),a=t(\"d3-interpolate\").interpolate,o=t(\"../../components/drawing\"),s=t(\"../../lib\"),l=t(\"../../lib/svg_text_utils\"),c=t(\"../bar/uniform_text\"),u=c.recordMinTextSize,f=c.clearMinTextSize,h=t(\"../pie/plot\"),p=t(\"../pie/helpers\").getRotationAngle,d=h.computeTransform,g=h.transformInsideText,m=t(\"./style\").styleOne,v=t(\"../bar/style\").resizeText,y=t(\"./fx\"),x=t(\"./constants\"),b=t(\"./helpers\");function _(t,e,c,f){var h=t._fullLayout,v=!h.uniformtext.mode&&b.hasTransition(f),_=n.select(c).selectAll(\"g.slice\"),T=e[0],k=T.trace,A=T.hierarchy,M=b.findEntryWithLevel(A,k.level),S=b.getMaxDepth(k),E=h._size,L=k.domain,C=E.w*(L.x[1]-L.x[0]),P=E.h*(L.y[1]-L.y[0]),I=.5*Math.min(C,P),O=T.cx=E.l+E.w*(L.x[1]+L.x[0])/2,z=T.cy=E.t+E.h*(1-L.y[0])-P/2;if(!M)return _.remove();var D=null,R={};v&&_.each((function(t){R[b.getPtId(t)]={rpx0:t.rpx0,rpx1:t.rpx1,x0:t.x0,x1:t.x1,transform:t.transform},!D&&b.isEntry(t)&&(D=t)}));var F=function(t){return i.partition().size([2*Math.PI,t.height+1])(t)}(M).descendants(),B=M.height+1,N=0,j=S;T.hasMultipleRoots&&b.isHierarchyRoot(M)&&(F=F.slice(1),B-=1,N=1,j+=1),F=F.filter((function(t){return t.y1<=j}));var U=p(k.rotation);U&&F.forEach((function(t){t.x0+=U,t.x1+=U}));var V=Math.min(B,S),H=function(t){return(t-N)/V*I},q=function(t,e){return[t*Math.cos(e),-t*Math.sin(e)]},G=function(t){return s.pathAnnulus(t.rpx0,t.rpx1,t.x0,t.x1,O,z)},Y=function(t){return O+w(t)[0]*(t.transform.rCenter||0)+(t.transform.x||0)},W=function(t){return z+w(t)[1]*(t.transform.rCenter||0)+(t.transform.y||0)};(_=_.data(F,b.getPtId)).enter().append(\"g\").classed(\"slice\",!0),v?_.exit().transition().each((function(){var t=n.select(this);t.select(\"path.surface\").transition().attrTween(\"d\",(function(t){var e=function(t){var e,r=b.getPtId(t),n=R[r],i=R[b.getPtId(M)];if(i){var o=(t.x1>i.x1?2*Math.PI:0)+U;e=t.rpx1X?2*Math.PI:0)+U;e={x0:i,x1:i}}else e={rpx0:I,rpx1:I},s.extendFlat(e,K(t));else e={rpx0:0,rpx1:0};else e={x0:U,x1:U};return a(e,n)}(t);return function(t){return G(e(t))}})):f.attr(\"d\",G),c.call(y,M,t,e,{eventDataKeys:x.eventDataKeys,transitionTime:x.CLICK_TRANSITION_TIME,transitionEasing:x.CLICK_TRANSITION_EASING}).call(b.setSliceCursor,t,{hideOnRoot:!0,hideOnLeaves:!0,isTransitioning:t._transitioning}),f.call(m,i,k);var p=s.ensureSingle(c,\"g\",\"slicetext\"),_=s.ensureSingle(p,\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),w=s.ensureUniformFontSize(t,b.determineTextFont(k,i,h.font));_.text(r.formatSliceLabel(i,M,k,e,h)).classed(\"slicetext\",!0).attr(\"text-anchor\",\"middle\").call(o.font,w).call(l.convertToTspans,t);var A=o.bBox(_.node());i.transform=g(A,i,T),i.transform.targetX=Y(i),i.transform.targetY=W(i);var S=function(t,e){var r=t.transform;return d(r,e),r.fontSize=w.size,u(k.type,r,h),s.getTextTransform(r)};v?_.transition().attrTween(\"transform\",(function(t){var e=function(t){var e,r=R[b.getPtId(t)],n=t.transform;if(r)e=r;else if(e={rpx1:t.rpx1,transform:{textPosAngle:n.textPosAngle,scale:0,rotate:n.rotate,rCenter:n.rCenter,x:n.x,y:n.y}},D)if(t.parent)if(X){var i=t.x1>X?2*Math.PI:0;e.x0=e.x1=i}else s.extendFlat(e,K(t));else e.x0=e.x1=U;else e.x0=e.x1=U;var o=a(e.transform.textPosAngle,t.transform.textPosAngle),l=a(e.rpx1,t.rpx1),c=a(e.x0,t.x0),f=a(e.x1,t.x1),p=a(e.transform.scale,n.scale),d=a(e.transform.rotate,n.rotate),g=0===n.rCenter?3:0===e.transform.rCenter?1/3:1,m=a(e.transform.rCenter,n.rCenter);return function(t){var e=l(t),r=c(t),i=f(t),a=function(t){return m(Math.pow(t,g))}(t),s={pxmid:q(e,(r+i)/2),rpx1:e,transform:{textPosAngle:o(t),rCenter:a,x:n.x,y:n.y}};return u(k.type,n,h),{transform:{targetX:Y(s),targetY:W(s),scale:p(t),rotate:d(t),rCenter:a}}}}(t);return function(t){return S(e(t),A)}})):_.attr(\"transform\",S(i,A))}))}function w(t){return e=t.rpx1,r=t.transform.textPosAngle,[e*Math.sin(r),-e*Math.cos(r)];var e,r}r.plot=function(t,e,r,i){var a,o,s=t._fullLayout,l=s._sunburstlayer,c=!r,u=!s.uniformtext.mode&&b.hasTransition(r);(f(\"sunburst\",s),(a=l.selectAll(\"g.trace.sunburst\").data(e,(function(t){return t[0].trace.uid}))).enter().append(\"g\").classed(\"trace\",!0).classed(\"sunburst\",!0).attr(\"stroke-linejoin\",\"round\"),a.order(),u)?(i&&(o=i()),n.transition().duration(r.duration).ease(r.easing).each(\"end\",(function(){o&&o()})).each(\"interrupt\",(function(){o&&o()})).each((function(){l.selectAll(\"g.trace\").each((function(e){_(t,e,this,r)}))}))):(a.each((function(e){_(t,e,this,r)})),s.uniformtext.mode&&v(t,s._sunburstlayer.selectAll(\".trace\"),\"sunburst\"));c&&a.exit().remove()},r.formatSliceLabel=function(t,e,r,n,i){var a=r.texttemplate,o=r.textinfo;if(!(a||o&&\"none\"!==o))return\"\";var l=i.separators,c=n[0],u=t.data.data,f=c.hierarchy,h=b.isHierarchyRoot(t),p=b.getParent(f,t),d=b.getValue(t);if(!a){var g,m=o.split(\"+\"),v=function(t){return-1!==m.indexOf(t)},y=[];if(v(\"label\")&&u.label&&y.push(u.label),u.hasOwnProperty(\"v\")&&v(\"value\")&&y.push(b.formatValue(u.v,l)),!h){v(\"current path\")&&y.push(b.getPath(t.data));var x=0;v(\"percent parent\")&&x++,v(\"percent entry\")&&x++,v(\"percent root\")&&x++;var _=x>1;if(x){var w,T=function(t){g=b.formatPercent(w,l),_&&(g+=\" of \"+t),y.push(g)};v(\"percent parent\")&&!h&&(w=d/b.getValue(p),T(\"parent\")),v(\"percent entry\")&&(w=d/b.getValue(e),T(\"entry\")),v(\"percent root\")&&(w=d/b.getValue(f),T(\"root\"))}}return v(\"text\")&&(g=s.castOption(r,u.i,\"text\"),s.isValidTextValue(g)&&y.push(g)),y.join(\"
\")}var k=s.castOption(r,u.i,\"texttemplate\");if(!k)return\"\";var A={};u.label&&(A.label=u.label),u.hasOwnProperty(\"v\")&&(A.value=u.v,A.valueLabel=b.formatValue(u.v,l)),A.currentPath=b.getPath(t.data),h||(A.percentParent=d/b.getValue(p),A.percentParentLabel=b.formatPercent(A.percentParent,l),A.parent=b.getPtLabel(p)),A.percentEntry=d/b.getValue(e),A.percentEntryLabel=b.formatPercent(A.percentEntry,l),A.entry=b.getPtLabel(e),A.percentRoot=d/b.getValue(f),A.percentRootLabel=b.formatPercent(A.percentRoot,l),A.root=b.getPtLabel(f),u.hasOwnProperty(\"color\")&&(A.color=u.color);var M=s.castOption(r,u.i,\"text\");return(s.isValidTextValue(M)||\"\"===M)&&(A.text=M),A.customdata=s.castOption(r,u.i,\"customdata\"),s.texttemplateString(k,A,i._d3locale,A,r._meta||{})}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../bar/style\":662,\"../bar/uniform_text\":664,\"../pie/helpers\":905,\"../pie/plot\":909,\"./constants\":1048,\"./fx\":1050,\"./helpers\":1051,\"./style\":1056,\"@plotly/d3\":58,\"d3-hierarchy\":115,\"d3-interpolate\":116}],1056:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../components/color\"),a=t(\"../../lib\"),o=t(\"../bar/uniform_text\").resizeText;function s(t,e,r){var n=e.data.data,o=!e.children,s=n.i,l=a.castOption(r,s,\"marker.line.color\")||i.defaultLine,c=a.castOption(r,s,\"marker.line.width\")||0;t.style(\"stroke-width\",c).call(i.fill,n.color).call(i.stroke,l).style(\"opacity\",o?r.leaf.opacity:null)}e.exports={style:function(t){var e=t._fullLayout._sunburstlayer.selectAll(\".trace\");o(t,e,\"sunburst\"),e.each((function(t){var e=n.select(this),r=t[0].trace;e.style(\"opacity\",r.opacity),e.selectAll(\"path.surface\").each((function(t){n.select(this).call(s,t,r)}))}))},styleOne:s}},{\"../../components/color\":366,\"../../lib\":503,\"../bar/uniform_text\":664,\"@plotly/d3\":58}],1057:[function(t,e,r){\"use strict\";var n=t(\"../../components/color\"),i=t(\"../../components/colorscale/attributes\"),a=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,o=t(\"../../plots/template_attributes\").hovertemplateAttrs,s=t(\"../../plots/attributes\"),l=t(\"../../lib/extend\").extendFlat,c=t(\"../../plot_api/edit_types\").overrideAll;function u(t){return{show:{valType:\"boolean\",dflt:!1},start:{valType:\"number\",dflt:null,editType:\"plot\"},end:{valType:\"number\",dflt:null,editType:\"plot\"},size:{valType:\"number\",dflt:null,min:0,editType:\"plot\"},project:{x:{valType:\"boolean\",dflt:!1},y:{valType:\"boolean\",dflt:!1},z:{valType:\"boolean\",dflt:!1}},color:{valType:\"color\",dflt:n.defaultLine},usecolormap:{valType:\"boolean\",dflt:!1},width:{valType:\"number\",min:1,max:16,dflt:2},highlight:{valType:\"boolean\",dflt:!0},highlightcolor:{valType:\"color\",dflt:n.defaultLine},highlightwidth:{valType:\"number\",min:1,max:16,dflt:2}}}var f=e.exports=c(l({z:{valType:\"data_array\"},x:{valType:\"data_array\"},y:{valType:\"data_array\"},text:{valType:\"string\",dflt:\"\",arrayOk:!0},hovertext:{valType:\"string\",dflt:\"\",arrayOk:!0},hovertemplate:o(),xhoverformat:a(\"x\"),yhoverformat:a(\"y\"),zhoverformat:a(\"z\"),connectgaps:{valType:\"boolean\",dflt:!1,editType:\"calc\"},surfacecolor:{valType:\"data_array\"}},i(\"\",{colorAttr:\"z or surfacecolor\",showScaleDflt:!0,autoColorDflt:!1,editTypeOverride:\"calc\"}),{contours:{x:u(),y:u(),z:u()},hidesurface:{valType:\"boolean\",dflt:!1},lightposition:{x:{valType:\"number\",min:-1e5,max:1e5,dflt:10},y:{valType:\"number\",min:-1e5,max:1e5,dflt:1e4},z:{valType:\"number\",min:-1e5,max:1e5,dflt:0}},lighting:{ambient:{valType:\"number\",min:0,max:1,dflt:.8},diffuse:{valType:\"number\",min:0,max:1,dflt:.8},specular:{valType:\"number\",min:0,max:2,dflt:.05},roughness:{valType:\"number\",min:0,max:1,dflt:.5},fresnel:{valType:\"number\",min:0,max:5,dflt:.2}},opacity:{valType:\"number\",min:0,max:1,dflt:1},opacityscale:{valType:\"any\",editType:\"calc\"},_deprecated:{zauto:l({},i.zauto,{}),zmin:l({},i.zmin,{}),zmax:l({},i.zmax,{})},hoverinfo:l({},s.hoverinfo),showlegend:l({},s.showlegend,{dflt:!1})}),\"calc\",\"nested\");f.x.editType=f.y.editType=f.z.editType=\"calc+clearAxisTypes\",f.transforms=void 0},{\"../../components/color\":366,\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plot_api/edit_types\":536,\"../../plots/attributes\":550,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/template_attributes\":633}],1058:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/calc\");e.exports=function(t,e){e.surfacecolor?n(t,e,{vals:e.surfacecolor,containerStr:\"\",cLetter:\"c\"}):n(t,e,{vals:e.z,containerStr:\"\",cLetter:\"c\"})}},{\"../../components/colorscale/calc\":374}],1059:[function(t,e,r){\"use strict\";var n=t(\"../../../stackgl_modules\").gl_surface3d,i=t(\"../../../stackgl_modules\").ndarray,a=t(\"../../../stackgl_modules\").ndarray_linear_interpolate.d2,o=t(\"../heatmap/interp2d\"),s=t(\"../heatmap/find_empties\"),l=t(\"../../lib\").isArrayOrTypedArray,c=t(\"../../lib/gl_format_color\").parseColorScale,u=t(\"../../lib/str2rgbarray\"),f=t(\"../../components/colorscale\").extractOpts;function h(t,e,r){this.scene=t,this.uid=r,this.surface=e,this.data=null,this.showContour=[!1,!1,!1],this.contourStart=[null,null,null],this.contourEnd=[null,null,null],this.contourSize=[0,0,0],this.minValues=[1/0,1/0,1/0],this.maxValues=[-1/0,-1/0,-1/0],this.dataScaleX=1,this.dataScaleY=1,this.refineData=!0,this.objectOffset=[0,0,0]}var p=h.prototype;p.getXat=function(t,e,r,n){var i=l(this.data.x)?l(this.data.x[0])?this.data.x[e][t]:this.data.x[t]:t;return void 0===r?i:n.d2l(i,0,r)},p.getYat=function(t,e,r,n){var i=l(this.data.y)?l(this.data.y[0])?this.data.y[e][t]:this.data.y[e]:e;return void 0===r?i:n.d2l(i,0,r)},p.getZat=function(t,e,r,n){var i=this.data.z[e][t];return null===i&&this.data.connectgaps&&this.data._interpolatedZ&&(i=this.data._interpolatedZ[e][t]),void 0===r?i:n.d2l(i,0,r)},p.handlePick=function(t){if(t.object===this.surface){var e=(t.data.index[0]-1)/this.dataScaleX-1,r=(t.data.index[1]-1)/this.dataScaleY-1,n=Math.max(Math.min(Math.round(e),this.data.z[0].length-1),0),i=Math.max(Math.min(Math.round(r),this.data._ylength-1),0);t.index=[n,i],t.traceCoordinate=[this.getXat(n,i),this.getYat(n,i),this.getZat(n,i)],t.dataCoordinate=[this.getXat(n,i,this.data.xcalendar,this.scene.fullSceneLayout.xaxis),this.getYat(n,i,this.data.ycalendar,this.scene.fullSceneLayout.yaxis),this.getZat(n,i,this.data.zcalendar,this.scene.fullSceneLayout.zaxis)];for(var a=0;a<3;a++){var o=t.dataCoordinate[a];null!=o&&(t.dataCoordinate[a]*=this.scene.dataScale[a])}var s=this.data.hovertext||this.data.text;return Array.isArray(s)&&s[i]&&void 0!==s[i][n]?t.textLabel=s[i][n]:t.textLabel=s||\"\",t.data.dataCoordinate=t.dataCoordinate.slice(),this.surface.highlight(t.data),this.scene.glplot.spikes.position=t.dataCoordinate,!0}};var d=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,1063,1069,1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277,1279,1283,1289,1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,1489,1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,1579,1583,1597,1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,1697,1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783,1787,1789,1801,1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,1913,1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003,2011,2017,2027,2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111,2113,2129,2131,2137,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239,2243,2251,2267,2269,2273,2281,2287,2293,2297,2309,2311,2333,2339,2341,2347,2351,2357,2371,2377,2381,2383,2389,2393,2399,2411,2417,2423,2437,2441,2447,2459,2467,2473,2477,2503,2521,2531,2539,2543,2549,2551,2557,2579,2591,2593,2609,2617,2621,2633,2647,2657,2659,2663,2671,2677,2683,2687,2689,2693,2699,2707,2711,2713,2719,2729,2731,2741,2749,2753,2767,2777,2789,2791,2797,2801,2803,2819,2833,2837,2843,2851,2857,2861,2879,2887,2897,2903,2909,2917,2927,2939,2953,2957,2963,2969,2971,2999];function g(t,e){if(t0){r=d[n];break}return r}function y(t,e){if(!(t<1||e<1)){for(var r=m(t),n=m(e),i=1,a=0;a_;)r--,r/=v(r),++r1?n:1},p.refineCoords=function(t){for(var e=this.dataScaleX,r=this.dataScaleY,n=t[0].shape[0],a=t[0].shape[1],o=0|Math.floor(t[0].shape[0]*e+1),s=0|Math.floor(t[0].shape[1]*r+1),l=1+n+1,c=1+a+1,u=i(new Float32Array(l*c),[l,c]),f=[1/e,0,0,0,1/r,0,0,0,1],h=0;h0&&null!==this.contourStart[t]&&null!==this.contourEnd[t]&&this.contourEnd[t]>this.contourStart[t]))for(i[t]=!0,e=this.contourStart[t];ea&&(this.minValues[e]=a),this.maxValues[e]\",maxDimensionCount:60,overdrag:45,releaseTransitionDuration:120,releaseTransitionEase:\"cubic-out\",scrollbarCaptureWidth:18,scrollbarHideDelay:1e3,scrollbarHideDuration:1e3,scrollbarOffset:5,scrollbarWidth:8,transitionDuration:100,transitionEase:\"cubic-out\",uplift:5,wrapSpacer:\" \",wrapSplitCharacter:\" \",cn:{table:\"table\",tableControlView:\"table-control-view\",scrollBackground:\"scroll-background\",yColumn:\"y-column\",columnBlock:\"column-block\",scrollAreaClip:\"scroll-area-clip\",scrollAreaClipRect:\"scroll-area-clip-rect\",columnBoundary:\"column-boundary\",columnBoundaryClippath:\"column-boundary-clippath\",columnBoundaryRect:\"column-boundary-rect\",columnCells:\"column-cells\",columnCell:\"column-cell\",cellRect:\"cell-rect\",cellText:\"cell-text\",cellTextHolder:\"cell-text-holder\",scrollbarKit:\"scrollbar-kit\",scrollbar:\"scrollbar\",scrollbarSlider:\"scrollbar-slider\",scrollbarGlyph:\"scrollbar-glyph\",scrollbarCaptureZone:\"scrollbar-capture-zone\"}}},{}],1066:[function(t,e,r){\"use strict\";var n=t(\"./constants\"),i=t(\"../../lib/extend\").extendFlat,a=t(\"fast-isnumeric\");function o(t){if(Array.isArray(t)){for(var e=0,r=0;r=e||c===t.length-1)&&(n[i]=o,o.key=l++,o.firstRowIndex=s,o.lastRowIndex=c,o={firstRowIndex:null,lastRowIndex:null,rows:[]},i+=a,s=c+1,a=0);return n}e.exports=function(t,e){var r=l(e.cells.values),p=function(t){return t.slice(e.header.values.length,t.length)},d=l(e.header.values);d.length&&!d[0].length&&(d[0]=[\"\"],d=l(d));var g=d.concat(p(r).map((function(){return c((d[0]||[\"\"]).length)}))),m=e.domain,v=Math.floor(t._fullLayout._size.w*(m.x[1]-m.x[0])),y=Math.floor(t._fullLayout._size.h*(m.y[1]-m.y[0])),x=e.header.values.length?g[0].map((function(){return e.header.height})):[n.emptyHeaderHeight],b=r.length?r[0].map((function(){return e.cells.height})):[],_=x.reduce(s,0),w=h(b,y-_+n.uplift),T=f(h(x,_),[]),k=f(w,T),A={},M=e._fullInput.columnorder.concat(p(r.map((function(t,e){return e})))),S=g.map((function(t,r){var n=Array.isArray(e.columnwidth)?e.columnwidth[Math.min(r,e.columnwidth.length-1)]:e.columnwidth;return a(n)?Number(n):1})),E=S.reduce(s,0);S=S.map((function(t){return t/E*v}));var L=Math.max(o(e.header.line.width),o(e.cells.line.width)),C={key:e.uid+t._context.staticPlot,translateX:m.x[0]*t._fullLayout._size.w,translateY:t._fullLayout._size.h*(1-m.y[1]),size:t._fullLayout._size,width:v,maxLineWidth:L,height:y,columnOrder:M,groupHeight:y,rowBlocks:k,headerRowBlocks:T,scrollY:0,cells:i({},e.cells,{values:r}),headerCells:i({},e.header,{values:g}),gdColumns:g.map((function(t){return t[0]})),gdColumnsOriginalOrder:g.map((function(t){return t[0]})),prevPages:[0,0],scrollbarState:{scrollbarScrollInProgress:!1},columns:g.map((function(t,e){var r=A[t];return A[t]=(r||0)+1,{key:t+\"__\"+A[t],label:t,specIndex:e,xIndex:M[e],xScale:u,x:void 0,calcdata:void 0,columnWidth:S[e]}}))};return C.columns.forEach((function(t){t.calcdata=C,t.x=u(t)})),C}},{\"../../lib/extend\":493,\"./constants\":1065,\"fast-isnumeric\":190}],1067:[function(t,e,r){\"use strict\";var n=t(\"../../lib/extend\").extendFlat;r.splitToPanels=function(t){var e=[0,0],r=n({},t,{key:\"header\",type:\"header\",page:0,prevPages:e,currentRepaint:[null,null],dragHandle:!0,values:t.calcdata.headerCells.values[t.specIndex],rowBlocks:t.calcdata.headerRowBlocks,calcdata:n({},t.calcdata,{cells:t.calcdata.headerCells})});return[n({},t,{key:\"cells1\",type:\"cells\",page:0,prevPages:e,currentRepaint:[null,null],dragHandle:!1,values:t.calcdata.cells.values[t.specIndex],rowBlocks:t.calcdata.rowBlocks}),n({},t,{key:\"cells2\",type:\"cells\",page:1,prevPages:e,currentRepaint:[null,null],dragHandle:!1,values:t.calcdata.cells.values[t.specIndex],rowBlocks:t.calcdata.rowBlocks}),r]},r.splitToCells=function(t){var e=function(t){var e=t.rowBlocks[t.page],r=e?e.rows[0].rowIndex:0,n=e?r+e.rows.length:0;return[r,n]}(t);return(t.values||[]).slice(e[0],e[1]).map((function(r,n){return{keyWithinBlock:n+(\"string\"==typeof r&&r.match(/[<$&> ]/)?\"_keybuster_\"+Math.random():\"\"),key:e[0]+n,column:t,calcdata:t.calcdata,page:t.page,rowBlocks:t.rowBlocks,value:r}}))}},{\"../../lib/extend\":493}],1068:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./attributes\"),a=t(\"../../plots/domain\").defaults;e.exports=function(t,e,r,o){function s(r,a){return n.coerce(t,e,i,r,a)}a(e,o,s),s(\"columnwidth\"),s(\"header.values\"),s(\"header.format\"),s(\"header.align\"),s(\"header.prefix\"),s(\"header.suffix\"),s(\"header.height\"),s(\"header.line.width\"),s(\"header.line.color\"),s(\"header.fill.color\"),n.coerceFont(s,\"header.font\",n.extendFlat({},o.font)),function(t,e){for(var r=t.columnorder||[],n=t.header.values.length,i=r.slice(0,n),a=i.slice().sort((function(t,e){return t-e})),o=i.map((function(t){return a.indexOf(t)})),s=o.length;s/i),l=!o||s;t.mayHaveMarkup=o&&i.match(/[<&>]/);var c,u=\"string\"==typeof(c=i)&&c.match(n.latexCheck);t.latex=u;var f,h,p=u?\"\":T(t.calcdata.cells.prefix,e,r)||\"\",d=u?\"\":T(t.calcdata.cells.suffix,e,r)||\"\",g=u?null:T(t.calcdata.cells.format,e,r)||null,m=p+(g?a(g)(t.value):t.value)+d;if(t.wrappingNeeded=!t.wrapped&&!l&&!u&&(f=w(m)),t.cellHeightMayIncrease=s||u||t.mayHaveMarkup||(void 0===f?w(m):f),t.needsConvertToTspans=t.mayHaveMarkup||t.wrappingNeeded||t.latex,t.wrappingNeeded){var v=(\" \"===n.wrapSplitCharacter?m.replace(/i&&n.push(a),i+=l}return n}(i,l,s);1===c.length&&(c[0]===i.length-1?c.unshift(c[0]-1):c.push(c[0]+1)),c[0]%2&&c.reverse(),e.each((function(t,e){t.page=c[e],t.scrollY=l})),e.attr(\"transform\",(function(t){var e=D(t.rowBlocks,t.page)-t.scrollY;return u(0,e)})),t&&(C(t,r,e,c,n.prevPages,n,0),C(t,r,e,c,n.prevPages,n,1),x(r,t))}}function L(t,e,r,a){return function(o){var s=o.calcdata?o.calcdata:o,l=e.filter((function(t){return s.key===t.key})),c=r||s.scrollbarState.dragMultiplier,u=s.scrollY;s.scrollY=void 0===a?s.scrollY+c*i.event.dy:a;var f=l.selectAll(\".\"+n.cn.yColumn).selectAll(\".\"+n.cn.columnBlock).filter(A);return E(t,f,l),s.scrollY===u}}function C(t,e,r,n,i,a,o){n[o]!==i[o]&&(clearTimeout(a.currentRepaint[o]),a.currentRepaint[o]=setTimeout((function(){var a=r.filter((function(t,e){return e===o&&n[e]!==i[e]}));b(t,e,a,r),i[o]=n[o]})))}function P(t,e,r,a){return function(){var o=i.select(e.parentNode);o.each((function(t){var e=t.fragments;o.selectAll(\"tspan.line\").each((function(t,r){e[r].width=this.getComputedTextLength()}));var r,i,a=e[e.length-1].width,s=e.slice(0,-1),l=[],c=0,u=t.column.columnWidth-2*n.cellPad;for(t.value=\"\";s.length;)c+(i=(r=s.shift()).width+a)>u&&(t.value+=l.join(n.wrapSpacer)+n.lineBreaker,l=[],c=0),l.push(r.text),c+=i;c&&(t.value+=l.join(n.wrapSpacer)),t.wrapped=!0})),o.selectAll(\"tspan.line\").remove(),_(o.select(\".\"+n.cn.cellText),r,t,a),i.select(e.parentNode.parentNode).call(z)}}function I(t,e,r,a,o){return function(){if(!o.settledY){var s=i.select(e.parentNode),l=B(o),c=o.key-l.firstRowIndex,f=l.rows[c].rowHeight,h=o.cellHeightMayIncrease?e.parentNode.getBoundingClientRect().height+2*n.cellPad:f,p=Math.max(h,f);p-l.rows[c].rowHeight&&(l.rows[c].rowHeight=p,t.selectAll(\".\"+n.cn.columnCell).call(z),E(null,t.filter(A),0),x(r,a,!0)),s.attr(\"transform\",(function(){var t=this.parentNode.getBoundingClientRect(),e=i.select(this.parentNode).select(\".\"+n.cn.cellRect).node().getBoundingClientRect(),r=this.transform.baseVal.consolidate(),a=e.top-t.top+(r?r.matrix.f:n.cellPad);return u(O(o,i.select(this.parentNode).select(\".\"+n.cn.cellTextHolder).node().getBoundingClientRect().width),a)})),o.settledY=!0}}}function O(t,e){switch(t.align){case\"left\":return n.cellPad;case\"right\":return t.column.columnWidth-(e||0)-n.cellPad;case\"center\":return(t.column.columnWidth-(e||0))/2;default:return n.cellPad}}function z(t){t.attr(\"transform\",(function(t){var e=t.rowBlocks[0].auxiliaryBlocks.reduce((function(t,e){return t+R(e,1/0)}),0),r=R(B(t),t.key);return u(0,r+e)})).selectAll(\".\"+n.cn.cellRect).attr(\"height\",(function(t){return(e=B(t),r=t.key,e.rows[r-e.firstRowIndex]).rowHeight;var e,r}))}function D(t,e){for(var r=0,n=e-1;n>=0;n--)r+=F(t[n]);return r}function R(t,e){for(var r=0,n=0;n\",\"<\",\"|\",\"/\",\"\\\\\"],dflt:\">\",editType:\"plot\"},thickness:{valType:\"number\",min:12,editType:\"plot\"},textfont:u({},s.textfont,{}),editType:\"calc\"},text:s.text,textinfo:l.textinfo,texttemplate:i({editType:\"plot\"},{keys:c.eventDataKeys.concat([\"label\",\"value\"])}),hovertext:s.hovertext,hoverinfo:l.hoverinfo,hovertemplate:n({},{keys:c.eventDataKeys}),textfont:s.textfont,insidetextfont:s.insidetextfont,outsidetextfont:u({},s.outsidetextfont,{}),textposition:{valType:\"enumerated\",values:[\"top left\",\"top center\",\"top right\",\"middle left\",\"middle center\",\"middle right\",\"bottom left\",\"bottom center\",\"bottom right\"],dflt:\"top left\",editType:\"plot\"},sort:s.sort,root:l.root,domain:o({name:\"treemap\",trace:!0,editType:\"calc\"})}},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plots/domain\":584,\"../../plots/template_attributes\":633,\"../pie/attributes\":900,\"../sunburst/attributes\":1045,\"./constants\":1074}],1072:[function(t,e,r){\"use strict\";var n=t(\"../../plots/plots\");r.name=\"treemap\",r.plot=function(t,e,i,a){n.plotBasePlot(r.name,t,e,i,a)},r.clean=function(t,e,i,a){n.cleanBasePlot(r.name,t,e,i,a)}},{\"../../plots/plots\":619}],1073:[function(t,e,r){\"use strict\";var n=t(\"../sunburst/calc\");r.calc=function(t,e){return n.calc(t,e)},r.crossTraceCalc=function(t){return n._runCrossTraceCalc(\"treemap\",t)}},{\"../sunburst/calc\":1047}],1074:[function(t,e,r){\"use strict\";e.exports={CLICK_TRANSITION_TIME:750,CLICK_TRANSITION_EASING:\"poly\",eventDataKeys:[\"currentPath\",\"root\",\"entry\",\"percentRoot\",\"percentEntry\",\"percentParent\"],gapWithPathbar:1}},{}],1075:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./attributes\"),a=t(\"../../components/color\"),o=t(\"../../plots/domain\").defaults,s=t(\"../bar/defaults\").handleText,l=t(\"../bar/constants\").TEXTPAD,c=t(\"../../components/colorscale\"),u=c.hasColorscale,f=c.handleDefaults;e.exports=function(t,e,r,c){function h(r,a){return n.coerce(t,e,i,r,a)}var p=h(\"labels\"),d=h(\"parents\");if(p&&p.length&&d&&d.length){var g=h(\"values\");g&&g.length?h(\"branchvalues\"):h(\"count\"),h(\"level\"),h(\"maxdepth\"),\"squarify\"===h(\"tiling.packing\")&&h(\"tiling.squarifyratio\"),h(\"tiling.flip\"),h(\"tiling.pad\");var m=h(\"text\");h(\"texttemplate\"),e.texttemplate||h(\"textinfo\",Array.isArray(m)?\"text+label\":\"label\"),h(\"hovertext\"),h(\"hovertemplate\");var v=h(\"pathbar.visible\");s(t,e,c,h,\"auto\",{hasPathbar:v,moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),h(\"textposition\");var y=-1!==e.textposition.indexOf(\"bottom\");h(\"marker.line.width\")&&h(\"marker.line.color\",c.paper_bgcolor);var x=h(\"marker.colors\");(e._hasColorscale=u(t,\"marker\",\"colors\")||(t.marker||{}).coloraxis)?f(t,e,c,h,{prefix:\"marker.\",cLetter:\"c\"}):h(\"marker.depthfade\",!(x||[]).length);var b=2*e.textfont.size;h(\"marker.pad.t\",y?b/4:b),h(\"marker.pad.l\",b/4),h(\"marker.pad.r\",b/4),h(\"marker.pad.b\",y?b:b/4),e._hovered={marker:{line:{width:2,color:a.contrast(c.paper_bgcolor)}}},v&&(h(\"pathbar.thickness\",e.pathbar.textfont.size+2*l),h(\"pathbar.side\"),h(\"pathbar.edgeshape\")),h(\"sort\"),h(\"root.color\"),o(e,c,h),e._length=null}else e.visible=!1}},{\"../../components/color\":366,\"../../components/colorscale\":378,\"../../lib\":503,\"../../plots/domain\":584,\"../bar/constants\":650,\"../bar/defaults\":652,\"./attributes\":1071}],1076:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../sunburst/helpers\"),a=t(\"../bar/uniform_text\").clearMinTextSize,o=t(\"../bar/style\").resizeText,s=t(\"./plot_one\");e.exports=function(t,e,r,l,c){var u,f,h=c.type,p=c.drawDescendants,d=t._fullLayout,g=d[\"_\"+h+\"layer\"],m=!r;(a(h,d),(u=g.selectAll(\"g.trace.\"+h).data(e,(function(t){return t[0].trace.uid}))).enter().append(\"g\").classed(\"trace\",!0).classed(h,!0),u.order(),!d.uniformtext.mode&&i.hasTransition(r))?(l&&(f=l()),n.transition().duration(r.duration).ease(r.easing).each(\"end\",(function(){f&&f()})).each(\"interrupt\",(function(){f&&f()})).each((function(){g.selectAll(\"g.trace\").each((function(e){s(t,e,this,r,p)}))}))):(u.each((function(e){s(t,e,this,r,p)})),d.uniformtext.mode&&o(t,g.selectAll(\".trace\"),h));m&&u.exit().remove()}},{\"../bar/style\":662,\"../bar/uniform_text\":664,\"../sunburst/helpers\":1051,\"./plot_one\":1085,\"@plotly/d3\":58}],1077:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../components/drawing\"),o=t(\"../../lib/svg_text_utils\"),s=t(\"./partition\"),l=t(\"./style\").styleOne,c=t(\"./constants\"),u=t(\"../sunburst/helpers\"),f=t(\"../sunburst/fx\");e.exports=function(t,e,r,h,p){var d=p.barDifY,g=p.width,m=p.height,v=p.viewX,y=p.viewY,x=p.pathSlice,b=p.toMoveInsideSlice,_=p.strTransform,w=p.hasTransition,T=p.handleSlicesExit,k=p.makeUpdateSliceInterpolator,A=p.makeUpdateTextInterpolator,M={},S=t._fullLayout,E=e[0],L=E.trace,C=E.hierarchy,P=g/L._entryDepth,I=u.listPath(r.data,\"id\"),O=s(C.copy(),[g,m],{packing:\"dice\",pad:{inner:0,top:0,left:0,right:0,bottom:0}}).descendants();(O=O.filter((function(t){var e=I.indexOf(t.data.id);return-1!==e&&(t.x0=P*e,t.x1=P*(e+1),t.y0=d,t.y1=d+m,t.onPathbar=!0,!0)}))).reverse(),(h=h.data(O,u.getPtId)).enter().append(\"g\").classed(\"pathbar\",!0),T(h,!0,M,[g,m],x),h.order();var z=h;w&&(z=z.transition().each(\"end\",(function(){var e=n.select(this);u.setSliceCursor(e,t,{hideOnRoot:!1,hideOnLeaves:!1,isTransitioning:!1})}))),z.each((function(s){s._x0=v(s.x0),s._x1=v(s.x1),s._y0=y(s.y0),s._y1=y(s.y1),s._hoverX=v(s.x1-Math.min(g,m)/2),s._hoverY=y(s.y1-m/2);var h=n.select(this),p=i.ensureSingle(h,\"path\",\"surface\",(function(t){t.style(\"pointer-events\",\"all\")}));w?p.transition().attrTween(\"d\",(function(t){var e=k(t,!0,M,[g,m]);return function(t){return x(e(t))}})):p.attr(\"d\",x),h.call(f,r,t,e,{styleOne:l,eventDataKeys:c.eventDataKeys,transitionTime:c.CLICK_TRANSITION_TIME,transitionEasing:c.CLICK_TRANSITION_EASING}).call(u.setSliceCursor,t,{hideOnRoot:!1,hideOnLeaves:!1,isTransitioning:t._transitioning}),p.call(l,s,L,{hovered:!1}),s._text=(u.getPtLabel(s)||\"\").split(\"
\").join(\" \")||\"\";var d=i.ensureSingle(h,\"g\",\"slicetext\"),T=i.ensureSingle(d,\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),E=i.ensureUniformFontSize(t,u.determineTextFont(L,s,S.font,{onPathbar:!0}));T.text(s._text||\" \").classed(\"slicetext\",!0).attr(\"text-anchor\",\"start\").call(a.font,E).call(o.convertToTspans,t),s.textBB=a.bBox(T.node()),s.transform=b(s,{fontSize:E.size,onPathbar:!0}),s.transform.fontSize=E.size,w?T.transition().attrTween(\"transform\",(function(t){var e=A(t,!0,M,[g,m]);return function(t){return _(e(t))}})):T.attr(\"transform\",_(s))}))}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../sunburst/fx\":1050,\"../sunburst/helpers\":1051,\"./constants\":1074,\"./partition\":1083,\"./style\":1086,\"@plotly/d3\":58}],1078:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../components/drawing\"),o=t(\"../../lib/svg_text_utils\"),s=t(\"./partition\"),l=t(\"./style\").styleOne,c=t(\"./constants\"),u=t(\"../sunburst/helpers\"),f=t(\"../sunburst/fx\"),h=t(\"../sunburst/plot\").formatSliceLabel;e.exports=function(t,e,r,p,d){var g=d.width,m=d.height,v=d.viewX,y=d.viewY,x=d.pathSlice,b=d.toMoveInsideSlice,_=d.strTransform,w=d.hasTransition,T=d.handleSlicesExit,k=d.makeUpdateSliceInterpolator,A=d.makeUpdateTextInterpolator,M=d.prevEntry,S=t._fullLayout,E=e[0].trace,L=-1!==E.textposition.indexOf(\"left\"),C=-1!==E.textposition.indexOf(\"right\"),P=-1!==E.textposition.indexOf(\"bottom\"),I=!P&&!E.marker.pad.t||P&&!E.marker.pad.b,O=s(r,[g,m],{packing:E.tiling.packing,squarifyratio:E.tiling.squarifyratio,flipX:E.tiling.flip.indexOf(\"x\")>-1,flipY:E.tiling.flip.indexOf(\"y\")>-1,pad:{inner:E.tiling.pad,top:E.marker.pad.t,left:E.marker.pad.l,right:E.marker.pad.r,bottom:E.marker.pad.b}}).descendants(),z=1/0,D=-1/0;O.forEach((function(t){var e=t.depth;e>=E._maxDepth?(t.x0=t.x1=(t.x0+t.x1)/2,t.y0=t.y1=(t.y0+t.y1)/2):(z=Math.min(z,e),D=Math.max(D,e))})),p=p.data(O,u.getPtId),E._maxVisibleLayers=isFinite(D)?D-z+1:0,p.enter().append(\"g\").classed(\"slice\",!0),T(p,!1,{},[g,m],x),p.order();var R=null;if(w&&M){var F=u.getPtId(M);p.each((function(t){null===R&&u.getPtId(t)===F&&(R={x0:t.x0,x1:t.x1,y0:t.y0,y1:t.y1})}))}var B=function(){return R||{x0:0,x1:g,y0:0,y1:m}},N=p;return w&&(N=N.transition().each(\"end\",(function(){var e=n.select(this);u.setSliceCursor(e,t,{hideOnRoot:!0,hideOnLeaves:!1,isTransitioning:!1})}))),N.each((function(s){var p=u.isHeader(s,E);s._x0=v(s.x0),s._x1=v(s.x1),s._y0=y(s.y0),s._y1=y(s.y1),s._hoverX=v(s.x1-E.marker.pad.r),s._hoverY=y(P?s.y1-E.marker.pad.b/2:s.y0+E.marker.pad.t/2);var d=n.select(this),T=i.ensureSingle(d,\"path\",\"surface\",(function(t){t.style(\"pointer-events\",\"all\")}));w?T.transition().attrTween(\"d\",(function(t){var e=k(t,!1,B(),[g,m]);return function(t){return x(e(t))}})):T.attr(\"d\",x),d.call(f,r,t,e,{styleOne:l,eventDataKeys:c.eventDataKeys,transitionTime:c.CLICK_TRANSITION_TIME,transitionEasing:c.CLICK_TRANSITION_EASING}).call(u.setSliceCursor,t,{isTransitioning:t._transitioning}),T.call(l,s,E,{hovered:!1}),s.x0===s.x1||s.y0===s.y1?s._text=\"\":s._text=p?I?\"\":u.getPtLabel(s)||\"\":h(s,r,E,e,S)||\"\";var M=i.ensureSingle(d,\"g\",\"slicetext\"),O=i.ensureSingle(M,\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),z=i.ensureUniformFontSize(t,u.determineTextFont(E,s,S.font));O.text(s._text||\" \").classed(\"slicetext\",!0).attr(\"text-anchor\",C?\"end\":L||p?\"start\":\"middle\").call(a.font,z).call(o.convertToTspans,t),s.textBB=a.bBox(O.node()),s.transform=b(s,{fontSize:z.size,isHeader:p}),s.transform.fontSize=z.size,w?O.transition().attrTween(\"transform\",(function(t){var e=A(t,!1,B(),[g,m]);return function(t){return _(e(t))}})):O.attr(\"transform\",_(s))})),R}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../sunburst/fx\":1050,\"../sunburst/helpers\":1051,\"../sunburst/plot\":1055,\"./constants\":1074,\"./partition\":1083,\"./style\":1086,\"@plotly/d3\":58}],1079:[function(t,e,r){\"use strict\";e.exports=function t(e,r,n){var i;n.swapXY&&(i=e.x0,e.x0=e.y0,e.y0=i,i=e.x1,e.x1=e.y1,e.y1=i),n.flipX&&(i=e.x0,e.x0=r[0]-e.x1,e.x1=r[0]-i),n.flipY&&(i=e.y0,e.y0=r[1]-e.y1,e.y1=r[1]-i);var a=e.children;if(a)for(var o=0;o-1?C+O:-(I+O):0,D={x0:P,x1:P,y0:z,y1:z+I},R=function(t,e,r){var n=v.tiling.pad,i=function(t){return t-n<=e.x0},a=function(t){return t+n>=e.x1},o=function(t){return t-n<=e.y0},s=function(t){return t+n>=e.y1};return t.x0===e.x0&&t.x1===e.x1&&t.y0===e.y0&&t.y1===e.y1?{x0:t.x0,x1:t.x1,y0:t.y0,y1:t.y1}:{x0:i(t.x0-n)?0:a(t.x0-n)?r[0]:t.x0,x1:i(t.x1+n)?0:a(t.x1+n)?r[0]:t.x1,y0:o(t.y0-n)?0:s(t.y0-n)?r[1]:t.y0,y1:o(t.y1+n)?0:s(t.y1+n)?r[1]:t.y1}},F=null,B={},N={},j=null,U=function(t,e){return e?B[h(t)]:N[h(t)]},V=function(t,e,r,n){if(e)return B[h(x)]||D;var i=N[v.level]||r;return function(t){return t.data.depth-b.data.depth=(n-=(y?m:m.r)-s)){var x=(r+n)/2;r=x,n=x}var b;f?i<(b=a-(y?m:m.b))&&b\"===tt?(l.x-=a,c.x-=a,u.x-=a,f.x-=a):\"/\"===tt?(u.x-=a,f.x-=a,o.x-=a/2,s.x-=a/2):\"\\\\\"===tt?(l.x-=a,c.x-=a,o.x-=a/2,s.x-=a/2):\"<\"===tt&&(o.x-=a,s.x-=a),$(l),$(f),$(o),$(c),$(u),$(s),\"M\"+K(l.x,l.y)+\"L\"+K(c.x,c.y)+\"L\"+K(s.x,s.y)+\"L\"+K(u.x,u.y)+\"L\"+K(f.x,f.y)+\"L\"+K(o.x,o.y)+\"Z\"},toMoveInsideSlice:et,makeUpdateSliceInterpolator:nt,makeUpdateTextInterpolator:it,handleSlicesExit:at,hasTransition:A,strTransform:ot}):w.remove()}},{\"../../lib\":503,\"../bar/constants\":650,\"../bar/plot\":659,\"../bar/uniform_text\":664,\"../sunburst/helpers\":1051,\"./constants\":1074,\"./draw_ancestors\":1077,\"@plotly/d3\":58,\"d3-interpolate\":116}],1086:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../components/color\"),a=t(\"../../lib\"),o=t(\"../sunburst/helpers\"),s=t(\"../bar/uniform_text\").resizeText;function l(t,e,r,n){var s,l,c=(n||{}).hovered,u=e.data.data,f=u.i,h=u.color,p=o.isHierarchyRoot(e),d=1;if(c)s=r._hovered.marker.line.color,l=r._hovered.marker.line.width;else if(p&&h===r.root.color)d=100,s=\"rgba(0,0,0,0)\",l=0;else if(s=a.castOption(r,f,\"marker.line.color\")||i.defaultLine,l=a.castOption(r,f,\"marker.line.width\")||0,!r._hasColorscale&&!e.onPathbar){var g=r.marker.depthfade;if(g){var m,v=i.combine(i.addOpacity(r._backgroundColor,.75),h);if(!0===g){var y=o.getMaxDepth(r);m=isFinite(y)?o.isLeaf(e)?0:r._maxVisibleLayers-(e.data.depth-r._entryDepth):e.data.height+1}else m=e.data.depth-r._entryDepth,r._atRootLevel||m++;if(m>0)for(var x=0;x0){var x,b,_,w,T,k=t.xa,A=t.ya;\"h\"===p.orientation?(T=e,x=\"y\",_=A,b=\"x\",w=k):(T=r,x=\"x\",_=k,b=\"y\",w=A);var M=h[t.index];if(T>=M.span[0]&&T<=M.span[1]){var S=n.extendFlat({},t),E=w.c2p(T,!0),L=o.getKdeValue(M,p,T),C=o.getPositionOnKdePath(M,p,E),P=_._offset,I=_._length;S[x+\"0\"]=C[0],S[x+\"1\"]=C[1],S[b+\"0\"]=S[b+\"1\"]=E,S[b+\"Label\"]=b+\": \"+i.hoverLabelText(w,T,p[b+\"hoverformat\"])+\", \"+h[0].t.labels.kde+\" \"+L.toFixed(3),S.spikeDistance=y[0].spikeDistance;var O=x+\"Spike\";S[O]=y[0][O],y[0].spikeDistance=void 0,y[0][O]=void 0,S.hovertemplate=!1,v.push(S),(u={stroke:t.color})[x+\"1\"]=n.constrain(P+C[0],P,P+I),u[x+\"2\"]=n.constrain(P+C[1],P,P+I),u[b+\"1\"]=u[b+\"2\"]=w._offset+E}}g&&(v=v.concat(y))}-1!==d.indexOf(\"points\")&&(c=a.hoverOnPoints(t,e,r));var z=f.selectAll(\".violinline-\"+p.uid).data(u?[0]:[]);return z.enter().append(\"line\").classed(\"violinline-\"+p.uid,!0).attr(\"stroke-width\",1.5),z.exit().remove(),z.attr(u),\"closest\"===s?c?[c]:v:c?(v.push(c),v):v}},{\"../../lib\":503,\"../../plots/cartesian/axes\":554,\"../box/hover\":678,\"./helpers\":1091}],1093:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\"),crossTraceDefaults:t(\"../box/defaults\").crossTraceDefaults,supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\"),crossTraceCalc:t(\"./cross_trace_calc\"),plot:t(\"./plot\"),style:t(\"./style\"),styleOnSelect:t(\"../scatter/style\").styleOnSelect,hoverPoints:t(\"./hover\"),selectPoints:t(\"../box/select\"),moduleType:\"trace\",name:\"violin\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"cartesian\",\"svg\",\"symbols\",\"oriented\",\"box-violin\",\"showLegend\",\"violinLayout\",\"zoomScale\"],meta:{}}},{\"../../plots/cartesian\":568,\"../box/defaults\":676,\"../box/select\":683,\"../scatter/style\":950,\"./attributes\":1087,\"./calc\":1088,\"./cross_trace_calc\":1089,\"./defaults\":1090,\"./hover\":1092,\"./layout_attributes\":1094,\"./layout_defaults\":1095,\"./plot\":1096,\"./style\":1097}],1094:[function(t,e,r){\"use strict\";var n=t(\"../box/layout_attributes\"),i=t(\"../../lib\").extendFlat;e.exports={violinmode:i({},n.boxmode,{}),violingap:i({},n.boxgap,{}),violingroupgap:i({},n.boxgroupgap,{})}},{\"../../lib\":503,\"../box/layout_attributes\":680}],1095:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\"),a=t(\"../box/layout_defaults\");e.exports=function(t,e,r){a._supply(t,e,r,(function(r,a){return n.coerce(t,e,i,r,a)}),\"violin\")}},{\"../../lib\":503,\"../box/layout_defaults\":681,\"./layout_attributes\":1094}],1096:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../components/drawing\"),o=t(\"../box/plot\"),s=t(\"../scatter/line_points\"),l=t(\"./helpers\");e.exports=function(t,e,r,c){var u=t._fullLayout,f=e.xaxis,h=e.yaxis;function p(t){var e=s(t,{xaxis:f,yaxis:h,connectGaps:!0,baseTolerance:.75,shape:\"spline\",simplify:!0,linearized:!0});return a.smoothopen(e[0],1)}i.makeTraceGroups(c,r,\"trace violins\").each((function(t){var r=n.select(this),a=t[0],s=a.t,c=a.trace;if(!0!==c.visible||s.empty)r.remove();else{var d=s.bPos,g=s.bdPos,m=e[s.valLetter+\"axis\"],v=e[s.posLetter+\"axis\"],y=\"both\"===c.side,x=y||\"positive\"===c.side,b=y||\"negative\"===c.side,_=r.selectAll(\"path.violin\").data(i.identity);_.enter().append(\"path\").style(\"vector-effect\",\"non-scaling-stroke\").attr(\"class\",\"violin\"),_.exit().remove(),_.each((function(t){var e,r,i,a,o,l,f,h,_=n.select(this),w=t.density,T=w.length,k=v.c2l(t.pos+d,!0),A=v.l2p(k);if(c.width)e=s.maxKDE/g;else{var M=u._violinScaleGroupStats[c.scalegroup];e=\"count\"===c.scalemode?M.maxKDE/g*(M.maxCount/t.pts.length):M.maxKDE/g}if(x){for(f=new Array(T),o=0;o\")),u.color=function(t,e){var r=t[e.dir].marker,n=r.color,a=r.line.color,o=r.line.width;if(i(n))return n;if(i(a)&&o)return a}(h,m),[u]}function k(t){return n(g,t,h[d+\"hoverformat\"])}}},{\"../../components/color\":366,\"../../constants/delta.js\":473,\"../../plots/cartesian/axes\":554,\"../bar/hover\":655}],1109:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\").supplyDefaults,crossTraceDefaults:t(\"./defaults\").crossTraceDefaults,supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\"),crossTraceCalc:t(\"./cross_trace_calc\"),plot:t(\"./plot\"),style:t(\"./style\").style,hoverPoints:t(\"./hover\"),eventData:t(\"./event_data\"),selectPoints:t(\"../bar/select\"),moduleType:\"trace\",name:\"waterfall\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"bar-like\",\"cartesian\",\"svg\",\"oriented\",\"showLegend\",\"zoomScale\"],meta:{}}},{\"../../plots/cartesian\":568,\"../bar/select\":660,\"./attributes\":1102,\"./calc\":1103,\"./cross_trace_calc\":1105,\"./defaults\":1106,\"./event_data\":1107,\"./hover\":1108,\"./layout_attributes\":1110,\"./layout_defaults\":1111,\"./plot\":1112,\"./style\":1113}],1110:[function(t,e,r){\"use strict\";e.exports={waterfallmode:{valType:\"enumerated\",values:[\"group\",\"overlay\"],dflt:\"group\",editType:\"calc\"},waterfallgap:{valType:\"number\",min:0,max:1,editType:\"calc\"},waterfallgroupgap:{valType:\"number\",min:0,max:1,dflt:0,editType:\"calc\"}}},{}],1111:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e,r){var a=!1;function o(r,a){return n.coerce(t,e,i,r,a)}for(var s=0;s0&&(m+=h?\"M\"+f[0]+\",\"+d[1]+\"V\"+d[0]:\"M\"+f[1]+\",\"+d[0]+\"H\"+f[0]),\"between\"!==p&&(r.isSum||s path\").each((function(t){if(!t.isBlank){var e=s[t.dir].marker;n.select(this).call(a.fill,e.color).call(a.stroke,e.line.color).call(i.dashLine,e.line.dash,e.line.width).style(\"opacity\",s.selectedpoints&&!t.selected?o:1)}})),c(r,s,t),r.selectAll(\".lines\").each((function(){var t=s.connector.line;i.lineGroupStyle(n.select(this).selectAll(\"path\"),t.width,t.color,t.dash)}))}))}}},{\"../../components/color\":366,\"../../components/drawing\":388,\"../../constants/interactions\":478,\"../bar/style\":662,\"../bar/uniform_text\":664,\"@plotly/d3\":58}],1114:[function(t,e,r){\"use strict\";var n=t(\"../plots/cartesian/axes\"),i=t(\"../lib\"),a=t(\"../plot_api/plot_schema\"),o=t(\"./helpers\").pointsAccessorFunction,s=t(\"../constants/numerical\").BADNUM;r.moduleType=\"transform\",r.name=\"aggregate\";var l=r.attributes={enabled:{valType:\"boolean\",dflt:!0,editType:\"calc\"},groups:{valType:\"string\",strict:!0,noBlank:!0,arrayOk:!0,dflt:\"x\",editType:\"calc\"},aggregations:{_isLinkedToArray:\"aggregation\",target:{valType:\"string\",editType:\"calc\"},func:{valType:\"enumerated\",values:[\"count\",\"sum\",\"avg\",\"median\",\"mode\",\"rms\",\"stddev\",\"min\",\"max\",\"first\",\"last\",\"change\",\"range\"],dflt:\"first\",editType:\"calc\"},funcmode:{valType:\"enumerated\",values:[\"sample\",\"population\"],dflt:\"sample\",editType:\"calc\"},enabled:{valType:\"boolean\",dflt:!0,editType:\"calc\"},editType:\"calc\"},editType:\"calc\"},c=l.aggregations;function u(t,e,r,a){if(a.enabled){for(var o=a.target,l=i.nestedProperty(e,o),c=l.get(),u=function(t,e){var r=t.func,n=e.d2c,a=e.c2d;switch(r){case\"count\":return f;case\"first\":return h;case\"last\":return p;case\"sum\":return function(t,e){for(var r=0,i=0;ii&&(i=u,o=c)}}return i?a(o):s};case\"rms\":return function(t,e){for(var r=0,i=0,o=0;o\":return function(t){return h(t)>s};case\">=\":return function(t){return h(t)>=s};case\"[]\":return function(t){var e=h(t);return e>=s[0]&&e<=s[1]};case\"()\":return function(t){var e=h(t);return e>s[0]&&e=s[0]&&es[0]&&e<=s[1]};case\"][\":return function(t){var e=h(t);return e<=s[0]||e>=s[1]};case\")(\":return function(t){var e=h(t);return es[1]};case\"](\":return function(t){var e=h(t);return e<=s[0]||e>s[1]};case\")[\":return function(t){var e=h(t);return e=s[1]};case\"{}\":return function(t){return-1!==s.indexOf(h(t))};case\"}{\":return function(t){return-1===s.indexOf(h(t))}}}(r,a.getDataToCoordFunc(t,e,s,i),h),x={},b={},_=0;d?(m=function(t){x[t.astr]=n.extendDeep([],t.get()),t.set(new Array(f))},v=function(t,e){var r=x[t.astr][e];t.get()[e]=r}):(m=function(t){x[t.astr]=n.extendDeep([],t.get()),t.set([])},v=function(t,e){var r=x[t.astr][e];t.get().push(r)}),k(m);for(var w=o(e.transforms,r),T=0;T1?\"%{group} (%{trace})\":\"%{group}\");var l=t.styles,c=o.styles=[];if(l)for(a=0;a0?o-4:o;for(r=0;r>16&255,l[u++]=e>>8&255,l[u++]=255&e;2===s&&(e=i[t.charCodeAt(r)]<<2|i[t.charCodeAt(r+1)]>>4,l[u++]=255&e);1===s&&(e=i[t.charCodeAt(r)]<<10|i[t.charCodeAt(r+1)]<<4|i[t.charCodeAt(r+2)]>>2,l[u++]=e>>8&255,l[u++]=255&e);return l},r.fromByteArray=function(t){for(var e,r=t.length,i=r%3,a=[],o=0,s=r-i;os?s:o+16383));1===i?(e=t[r-1],a.push(n[e>>2]+n[e<<4&63]+\"==\")):2===i&&(e=(t[r-2]<<8)+t[r-1],a.push(n[e>>10]+n[e>>4&63]+n[e<<2&63]+\"=\"));return a.join(\"\")};for(var n=[],i=[],a=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",s=0,l=o.length;s0)throw new Error(\"Invalid string. Length must be a multiple of 4\");var r=t.indexOf(\"=\");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function u(t,e,r){for(var i,a,o=[],s=e;s>18&63]+n[a>>12&63]+n[a>>6&63]+n[63&a]);return o.join(\"\")}i[\"-\".charCodeAt(0)]=62,i[\"_\".charCodeAt(0)]=63},{}],2:[function(t,e,r){},{}],3:[function(t,e,r){(function(e){(function(){\n", + "var n,i=t(\"./lib/build-log\"),a=t(\"./lib/epsilon\"),o=t(\"./lib/intersecter\"),s=t(\"./lib/segment-chainer\"),l=t(\"./lib/segment-selector\"),c=t(\"./lib/geojson\"),u=!1,f=a();function h(t,e,r){var i=n.segments(t),a=n.segments(e),o=r(n.combine(i,a));return n.polygon(o)}n={buildLog:function(t){return!0===t?u=i():!1===t&&(u=!1),!1!==u&&u.list},epsilon:function(t){return f.epsilon(t)},segments:function(t){var e=o(!0,f,u);return t.regions.forEach(e.addRegion),{segments:e.calculate(t.inverted),inverted:t.inverted}},combine:function(t,e){return{combined:o(!1,f,u).calculate(t.segments,t.inverted,e.segments,e.inverted),inverted1:t.inverted,inverted2:e.inverted}},selectUnion:function(t){return{segments:l.union(t.combined,u),inverted:t.inverted1||t.inverted2}},selectIntersect:function(t){return{segments:l.intersect(t.combined,u),inverted:t.inverted1&&t.inverted2}},selectDifference:function(t){return{segments:l.difference(t.combined,u),inverted:t.inverted1&&!t.inverted2}},selectDifferenceRev:function(t){return{segments:l.differenceRev(t.combined,u),inverted:!t.inverted1&&t.inverted2}},selectXor:function(t){return{segments:l.xor(t.combined,u),inverted:t.inverted1!==t.inverted2}},polygon:function(t){return{regions:s(t.segments,f,u),inverted:t.inverted}},polygonFromGeoJSON:function(t){return c.toPolygon(n,t)},polygonToGeoJSON:function(t){return c.fromPolygon(n,f,t)},union:function(t,e){return h(t,e,n.selectUnion)},intersect:function(t,e){return h(t,e,n.selectIntersect)},difference:function(t,e){return h(t,e,n.selectDifference)},differenceRev:function(t,e){return h(t,e,n.selectDifferenceRev)},xor:function(t,e){return h(t,e,n.selectXor)}},\"object\"==typeof window&&(window.PolyBool=n),e.exports=n},{\"./lib/build-log\":255,\"./lib/epsilon\":256,\"./lib/geojson\":257,\"./lib/intersecter\":258,\"./lib/segment-chainer\":260,\"./lib/segment-selector\":261}],255:[function(t,e,r){e.exports=function(){var t,e=0,r=!1;function n(e,r){return t.list.push({type:e,data:r?JSON.parse(JSON.stringify(r)):void 0}),t}return t={list:[],segmentId:function(){return e++},checkIntersection:function(t,e){return n(\"check\",{seg1:t,seg2:e})},segmentChop:function(t,e){return n(\"div_seg\",{seg:t,pt:e}),n(\"chop\",{seg:t,pt:e})},statusRemove:function(t){return n(\"pop_seg\",{seg:t})},segmentUpdate:function(t){return n(\"seg_update\",{seg:t})},segmentNew:function(t,e){return n(\"new_seg\",{seg:t,primary:e})},segmentRemove:function(t){return n(\"rem_seg\",{seg:t})},tempStatus:function(t,e,r){return n(\"temp_status\",{seg:t,above:e,below:r})},rewind:function(t){return n(\"rewind\",{seg:t})},status:function(t,e,r){return n(\"status\",{seg:t,above:e,below:r})},vert:function(e){return e===r?t:(r=e,n(\"vert\",{x:e}))},log:function(t){return\"string\"!=typeof t&&(t=JSON.stringify(t,!1,\" \")),n(\"log\",{txt:t})},reset:function(){return n(\"reset\")},selected:function(t){return n(\"selected\",{segs:t})},chainStart:function(t){return n(\"chain_start\",{seg:t})},chainRemoveHead:function(t,e){return n(\"chain_rem_head\",{index:t,pt:e})},chainRemoveTail:function(t,e){return n(\"chain_rem_tail\",{index:t,pt:e})},chainNew:function(t,e){return n(\"chain_new\",{pt1:t,pt2:e})},chainMatch:function(t){return n(\"chain_match\",{index:t})},chainClose:function(t){return n(\"chain_close\",{index:t})},chainAddHead:function(t,e){return n(\"chain_add_head\",{index:t,pt:e})},chainAddTail:function(t,e){return n(\"chain_add_tail\",{index:t,pt:e})},chainConnect:function(t,e){return n(\"chain_con\",{index1:t,index2:e})},chainReverse:function(t){return n(\"chain_rev\",{index:t})},chainJoin:function(t,e){return n(\"chain_join\",{index1:t,index2:e})},done:function(){return n(\"done\")}}}},{}],256:[function(t,e,r){e.exports=function(t){\"number\"!=typeof t&&(t=1e-10);var e={epsilon:function(e){return\"number\"==typeof e&&(t=e),t},pointAboveOrOnLine:function(e,r,n){var i=r[0],a=r[1],o=n[0],s=n[1],l=e[0];return(o-i)*(e[1]-a)-(s-a)*(l-i)>=-t},pointBetween:function(e,r,n){var i=e[1]-r[1],a=n[0]-r[0],o=e[0]-r[0],s=n[1]-r[1],l=o*a+i*s;return!(l-t)},pointsSameX:function(e,r){return Math.abs(e[0]-r[0])t!=o-i>t&&(a-c)*(i-u)/(o-u)+c-n>t&&(s=!s),a=c,o=u}return s}};return e}},{}],257:[function(t,e,r){var n={toPolygon:function(t,e){function r(e){if(e.length<=0)return t.segments({inverted:!1,regions:[]});function r(e){var r=e.slice(0,e.length-1);return t.segments({inverted:!1,regions:[r]})}for(var n=r(e[0]),i=1;i0}))}function u(t,n){var i=t.seg,a=n.seg,o=i.start,s=i.end,c=a.start,u=a.end;r&&r.checkIntersection(i,a);var f=e.linesIntersect(o,s,c,u);if(!1===f){if(!e.pointsCollinear(o,s,c))return!1;if(e.pointsSame(o,u)||e.pointsSame(s,c))return!1;var h=e.pointsSame(o,c),p=e.pointsSame(s,u);if(h&&p)return n;var d=!h&&e.pointBetween(o,c,u),g=!p&&e.pointBetween(s,c,u);if(h)return g?l(n,s):l(t,u),n;d&&(p||(g?l(n,s):l(t,u)),l(n,o))}else 0===f.alongA&&(-1===f.alongB?l(t,c):0===f.alongB?l(t,f.pt):1===f.alongB&&l(t,u)),0===f.alongB&&(-1===f.alongA?l(n,o):0===f.alongA?l(n,f.pt):1===f.alongA&&l(n,s));return!1}for(var f=[];!a.isEmpty();){var h=a.getHead();if(r&&r.vert(h.pt[0]),h.isStart){r&&r.segmentNew(h.seg,h.primary);var p=c(h),d=p.before?p.before.ev:null,g=p.after?p.after.ev:null;function m(){if(d){var t=u(h,d);if(t)return t}return!!g&&u(h,g)}r&&r.tempStatus(h.seg,!!d&&d.seg,!!g&&g.seg);var v,y=m();if(y){var x;if(t)(x=null===h.seg.myFill.below||h.seg.myFill.above!==h.seg.myFill.below)&&(y.seg.myFill.above=!y.seg.myFill.above);else y.seg.otherFill=h.seg.myFill;r&&r.segmentUpdate(y.seg),h.other.remove(),h.remove()}if(a.getHead()!==h){r&&r.rewind(h.seg);continue}if(t)x=null===h.seg.myFill.below||h.seg.myFill.above!==h.seg.myFill.below,h.seg.myFill.below=g?g.seg.myFill.above:i,h.seg.myFill.above=x?!h.seg.myFill.below:h.seg.myFill.below;else if(null===h.seg.otherFill)v=g?h.primary===g.primary?g.seg.otherFill.above:g.seg.myFill.above:h.primary?o:i,h.seg.otherFill={above:v,below:v};r&&r.status(h.seg,!!d&&d.seg,!!g&&g.seg),h.other.status=p.insert(n.node({ev:h}))}else{var b=h.status;if(null===b)throw new Error(\"PolyBool: Zero-length segment detected; your epsilon is probably too small or too large\");if(s.exists(b.prev)&&s.exists(b.next)&&u(b.prev.ev,b.next.ev),r&&r.statusRemove(b.ev.seg),b.remove(),!h.primary){var _=h.seg.myFill;h.seg.myFill=h.seg.otherFill,h.seg.otherFill=_}f.push(h.seg)}a.getHead().remove()}return r&&r.done(),f}return t?{addRegion:function(t){for(var n,i,a,o=t[t.length-1],l=0;l0&&!this.aborted;){var r=this.ifds_to_read.shift();r.offset&&this.scan_ifd(r.id,r.offset,t)}},a.prototype.read_uint16=function(t){var e=this.input;if(t+2>e.length)throw n(\"unexpected EOF\",\"EBADDATA\");return this.big_endian?256*e[t]+e[t+1]:e[t]+256*e[t+1]},a.prototype.read_uint32=function(t){var e=this.input;if(t+4>e.length)throw n(\"unexpected EOF\",\"EBADDATA\");return this.big_endian?16777216*e[t]+65536*e[t+1]+256*e[t+2]+e[t+3]:e[t]+256*e[t+1]+65536*e[t+2]+16777216*e[t+3]},a.prototype.is_subifd_link=function(t,e){return 0===t&&34665===e||0===t&&34853===e||34665===t&&40965===e},a.prototype.exif_format_length=function(t){switch(t){case 1:case 2:case 6:case 7:return 1;case 3:case 8:return 2;case 4:case 9:case 11:return 4;case 5:case 10:case 12:return 8;default:return 0}},a.prototype.exif_format_read=function(t,e){var r;switch(t){case 1:case 2:return r=this.input[e];case 6:return(r=this.input[e])|33554430*(128&r);case 3:return r=this.read_uint16(e);case 8:return(r=this.read_uint16(e))|131070*(32768&r);case 4:return r=this.read_uint32(e);case 9:return 0|(r=this.read_uint32(e));case 5:case 10:case 11:case 12:case 7:default:return null}},a.prototype.scan_ifd=function(t,e,r){var a=this.read_uint16(e);e+=2;for(var o=0;othis.input.length)throw n(\"unexpected EOF\",\"EBADDATA\");for(var d=[],g=h,m=0;m0&&(this.ifds_to_read.push({id:s,offset:d[0]}),p=!0),!1===r({is_big_endian:this.big_endian,ifd:t,tag:s,format:l,count:c,entry_offset:e+this.start,data_length:f,data_offset:h+this.start,value:d,is_subifd_link:p}))return void(this.aborted=!0);e+=12}0===t&&this.ifds_to_read.push({id:1,offset:this.read_uint32(e)})},e.exports.ExifParser=a,e.exports.get_orientation=function(t){var e=0;try{return new a(t,0,t.length).each((function(t){if(0===t.ifd&&274===t.tag&&Array.isArray(t.value))return e=t.value[0],!1})),e}catch(t){return-1}}},{}],264:[function(t,e,r){\"use strict\";var n=t(\"./common\").readUInt16BE,i=t(\"./common\").readUInt32BE;function a(t,e){if(t.length<4+e)return null;var r=i(t,e);return t.length>4&15,i=15&t[4],a=t[5]>>4&15,o=n(t,6),l=8,c=0;ce.width||t.width===e.width&&t.height>e.height?t:e})),i=r.reduce((function(t,e){return t.height>e.height||t.height===e.height&&t.width>e.width?t:e})),n.width>i.height||n.width===i.height&&n.height>i.width?n:i),s=1;e.transforms.forEach((function(t){var e={1:6,2:5,3:8,4:7,5:4,6:3,7:2,8:1},r={1:4,2:3,3:2,4:1,5:6,6:5,7:8,8:7};if(\"imir\"===t.type&&(s=0===t.value?r[s]:e[s=e[s=r[s]]]),\"irot\"===t.type)for(var n=0;n1&&(h.variants=f.variants),f.orientation&&(h.orientation=f.orientation),f.exif_location&&f.exif_location.offset+f.exif_location.length<=t.length){var p=a(t,f.exif_location.offset),d=t.slice(f.exif_location.offset+p+4,f.exif_location.offset+f.exif_location.length),g=s.get_orientation(d);g>0&&(h.orientation=g)}return h}}}}}}},{\"../common\":262,\"../exif_utils\":263,\"../miaf_utils\":264}],266:[function(t,e,r){\"use strict\";var n=t(\"../common\").str2arr,i=t(\"../common\").sliceEq,a=t(\"../common\").readUInt16LE,o=n(\"BM\");e.exports=function(t){if(!(t.length<26)&&i(t,0,o))return{width:a(t,18),height:a(t,22),type:\"bmp\",mime:\"image/bmp\",wUnits:\"px\",hUnits:\"px\"}}},{\"../common\":262}],267:[function(t,e,r){\"use strict\";var n=t(\"../common\").str2arr,i=t(\"../common\").sliceEq,a=t(\"../common\").readUInt16LE,o=n(\"GIF87a\"),s=n(\"GIF89a\");e.exports=function(t){if(!(t.length<10)&&(i(t,0,o)||i(t,0,s)))return{width:a(t,6),height:a(t,8),type:\"gif\",mime:\"image/gif\",wUnits:\"px\",hUnits:\"px\"}}},{\"../common\":262}],268:[function(t,e,r){\"use strict\";var n=t(\"../common\").readUInt16LE;e.exports=function(t){var e=n(t,0),r=n(t,2),i=n(t,4);if(0===e&&1===r&&i){for(var a=[],o={width:0,height:0},s=0;so.width||c>o.height)&&(o=u)}return{width:o.width,height:o.height,variants:a,type:\"ico\",mime:\"image/x-icon\",wUnits:\"px\",hUnits:\"px\"}}}},{\"../common\":262}],269:[function(t,e,r){\"use strict\";var n=t(\"../common\").readUInt16BE,i=t(\"../common\").str2arr,a=t(\"../common\").sliceEq,o=t(\"../exif_utils\"),s=i(\"Exif\\0\\0\");e.exports=function(t){if(!(t.length<2)&&255===t[0]&&216===t[1]&&255===t[2])for(var e=2;;){for(;;){if(t.length-e<2)return;if(255===t[e++])break}for(var r,i,l=t[e++];255===l;)l=t[e++];if(208<=l&&l<=217||1===l)r=0;else{if(!(192<=l&&l<=254))return;if(t.length-e<2)return;r=n(t,e)-2,e+=2}if(217===l||218===l)return;if(225===l&&r>=10&&a(t,e,s)&&(i=o.get_orientation(t.slice(e+6,e+r))),r>=5&&192<=l&&l<=207&&196!==l&&200!==l&&204!==l){if(t.length-e0&&(c.orientation=i),c}e+=r}}},{\"../common\":262,\"../exif_utils\":263}],270:[function(t,e,r){\"use strict\";var n=t(\"../common\").str2arr,i=t(\"../common\").sliceEq,a=t(\"../common\").readUInt32BE,o=n(\"\\x89PNG\\r\\n\\x1a\\n\"),s=n(\"IHDR\");e.exports=function(t){if(!(t.length<24)&&i(t,0,o)&&i(t,12,s))return{width:a(t,16),height:a(t,20),type:\"png\",mime:\"image/png\",wUnits:\"px\",hUnits:\"px\"}}},{\"../common\":262}],271:[function(t,e,r){\"use strict\";var n=t(\"../common\").str2arr,i=t(\"../common\").sliceEq,a=t(\"../common\").readUInt32BE,o=n(\"8BPS\\0\\x01\");e.exports=function(t){if(!(t.length<22)&&i(t,0,o))return{width:a(t,18),height:a(t,14),type:\"psd\",mime:\"image/vnd.adobe.photoshop\",wUnits:\"px\",hUnits:\"px\"}}},{\"../common\":262}],272:[function(t,e,r){\"use strict\";function n(t){return\"number\"==typeof t&&isFinite(t)&&t>0}var i=/<[-_.:a-zA-Z0-9][^>]*>/,a=/^<([-_.:a-zA-Z0-9]+:)?svg\\s/,o=/[^-]\\bwidth=\"([^%]+?)\"|[^-]\\bwidth='([^%]+?)'/,s=/\\bheight=\"([^%]+?)\"|\\bheight='([^%]+?)'/,l=/\\bview[bB]ox=\"(.+?)\"|\\bview[bB]ox='(.+?)'/,c=/in$|mm$|cm$|pt$|pc$|px$|em$|ex$/;function u(t){return c.test(t)?t.match(c)[0]:\"px\"}e.exports=function(t){if(function(t){var e,r=0,n=t.length;for(239===t[0]&&187===t[1]&&191===t[2]&&(r=3);r>14&16383),type:\"webp\",mime:\"image/webp\",wUnits:\"px\",hUnits:\"px\"}}}function h(t,e){return{width:1+(t[e+6]<<16|t[e+5]<<8|t[e+4]),height:1+(t[e+9]<t.length)){for(;e+8=10?r=r||u(t,e+8):\"VP8L\"===p&&d>=9?r=r||f(t,e+8):\"VP8X\"===p&&d>=10?r=r||h(t,e+8):\"EXIF\"===p&&(n=s.get_orientation(t.slice(e+8,e+8+d)),e=1/0),e+=8+d}else e++;if(r)return n>0&&(r.orientation=n),r}}}},{\"../common\":262,\"../exif_utils\":263}],275:[function(t,e,r){\"use strict\";e.exports={avif:t(\"./parse_sync/avif\"),bmp:t(\"./parse_sync/bmp\"),gif:t(\"./parse_sync/gif\"),ico:t(\"./parse_sync/ico\"),jpeg:t(\"./parse_sync/jpeg\"),png:t(\"./parse_sync/png\"),psd:t(\"./parse_sync/psd\"),svg:t(\"./parse_sync/svg\"),tiff:t(\"./parse_sync/tiff\"),webp:t(\"./parse_sync/webp\")}},{\"./parse_sync/avif\":265,\"./parse_sync/bmp\":266,\"./parse_sync/gif\":267,\"./parse_sync/ico\":268,\"./parse_sync/jpeg\":269,\"./parse_sync/png\":270,\"./parse_sync/psd\":271,\"./parse_sync/svg\":272,\"./parse_sync/tiff\":273,\"./parse_sync/webp\":274}],276:[function(t,e,r){\"use strict\";var n=t(\"./lib/parsers_sync\");e.exports=function(t){return function(t){for(var e=Object.keys(n),r=0;r1)for(var r=1;r1&&(t.scaleRatio=[t.scale[0]*t.viewport.width,t.scale[1]*t.viewport.height],r(t),t.after&&t.after(t))}function T(t){if(t){null!=t.length?\"number\"==typeof t[0]&&(t=[{positions:t}]):Array.isArray(t)||(t=[t]);var e=0,r=0;if(b.groups=x=t.map((function(t,c){var u=x[c];return t?(\"function\"==typeof t?t={after:t}:\"number\"==typeof t[0]&&(t={positions:t}),t=o(t,{color:\"color colors fill\",capSize:\"capSize cap capsize cap-size\",lineWidth:\"lineWidth line-width width line thickness\",opacity:\"opacity alpha\",range:\"range dataBox\",viewport:\"viewport viewBox\",errors:\"errors error\",positions:\"positions position data points\"}),u||(x[c]=u={id:c,scale:null,translate:null,scaleFract:null,translateFract:null,draw:!0},t=s({},y,t)),a(u,t,[{lineWidth:function(t){return.5*+t},capSize:function(t){return.5*+t},opacity:parseFloat,errors:function(t){return t=l(t),r+=t.length,t},positions:function(t,r){return t=l(t,\"float64\"),r.count=Math.floor(t.length/2),r.bounds=n(t,2),r.offset=e,e+=r.count,t}},{color:function(t,e){var r=e.count;if(t||(t=\"transparent\"),!Array.isArray(t)||\"number\"==typeof t[0]){var n=t;t=Array(r);for(var a=0;a 0. && baClipping < length(normalWidth * endBotJoin)) {\\n\\t\\t//handle miter clipping\\n\\t\\tbTopCoord -= normalWidth * endTopJoin;\\n\\t\\tbTopCoord += normalize(endTopJoin * normalWidth) * baClipping;\\n\\t}\\n\\n\\tif (nextReverse) {\\n\\t\\t//make join rectangular\\n\\t\\tvec2 miterShift = normalWidth * endJoinDirection * miterLimit * .5;\\n\\t\\tfloat normalAdjust = 1. - min(miterLimit / endMiterRatio, 1.);\\n\\t\\tbBotCoord = bCoord + miterShift - normalAdjust * normalWidth * currNormal * .5;\\n\\t\\tbTopCoord = bCoord + miterShift + normalAdjust * normalWidth * currNormal * .5;\\n\\t}\\n\\telse if (!prevReverse && abClipping > 0. && abClipping < length(normalWidth * startBotJoin)) {\\n\\t\\t//handle miter clipping\\n\\t\\taBotCoord -= normalWidth * startBotJoin;\\n\\t\\taBotCoord += normalize(startBotJoin * normalWidth) * abClipping;\\n\\t}\\n\\n\\tvec2 aTopPosition = (aTopCoord) * adjustedScale + translate;\\n\\tvec2 aBotPosition = (aBotCoord) * adjustedScale + translate;\\n\\n\\tvec2 bTopPosition = (bTopCoord) * adjustedScale + translate;\\n\\tvec2 bBotPosition = (bBotCoord) * adjustedScale + translate;\\n\\n\\t//position is normalized 0..1 coord on the screen\\n\\tvec2 position = (aTopPosition * lineTop + aBotPosition * lineBot) * lineStart + (bTopPosition * lineTop + bBotPosition * lineBot) * lineEnd;\\n\\n\\tstartCoord = aCoord * scaleRatio + translate * viewport.zw + viewport.xy;\\n\\tendCoord = bCoord * scaleRatio + translate * viewport.zw + viewport.xy;\\n\\n\\tgl_Position = vec4(position * 2.0 - 1.0, depth, 1);\\n\\n\\tenableStartMiter = step(dot(currTangent, prevTangent), .5);\\n\\tenableEndMiter = step(dot(currTangent, nextTangent), .5);\\n\\n\\t//bevel miter cutoffs\\n\\tif (miterMode == 1.) {\\n\\t\\tif (enableStartMiter == 1.) {\\n\\t\\t\\tvec2 startMiterWidth = vec2(startJoinDirection) * thickness * miterLimit * .5;\\n\\t\\t\\tstartCutoff = vec4(aCoord, aCoord);\\n\\t\\t\\tstartCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio;\\n\\t\\t\\tstartCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\\n\\t\\t\\tstartCutoff += viewport.xyxy;\\n\\t\\t\\tstartCutoff += startMiterWidth.xyxy;\\n\\t\\t}\\n\\n\\t\\tif (enableEndMiter == 1.) {\\n\\t\\t\\tvec2 endMiterWidth = vec2(endJoinDirection) * thickness * miterLimit * .5;\\n\\t\\t\\tendCutoff = vec4(bCoord, bCoord);\\n\\t\\t\\tendCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x) / scaleRatio;\\n\\t\\t\\tendCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\\n\\t\\t\\tendCutoff += viewport.xyxy;\\n\\t\\t\\tendCutoff += endMiterWidth.xyxy;\\n\\t\\t}\\n\\t}\\n\\n\\t//round miter cutoffs\\n\\telse if (miterMode == 2.) {\\n\\t\\tif (enableStartMiter == 1.) {\\n\\t\\t\\tvec2 startMiterWidth = vec2(startJoinDirection) * thickness * abs(dot(startJoinDirection, currNormal)) * .5;\\n\\t\\t\\tstartCutoff = vec4(aCoord, aCoord);\\n\\t\\t\\tstartCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio;\\n\\t\\t\\tstartCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\\n\\t\\t\\tstartCutoff += viewport.xyxy;\\n\\t\\t\\tstartCutoff += startMiterWidth.xyxy;\\n\\t\\t}\\n\\n\\t\\tif (enableEndMiter == 1.) {\\n\\t\\t\\tvec2 endMiterWidth = vec2(endJoinDirection) * thickness * abs(dot(endJoinDirection, currNormal)) * .5;\\n\\t\\t\\tendCutoff = vec4(bCoord, bCoord);\\n\\t\\t\\tendCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x) / scaleRatio;\\n\\t\\t\\tendCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\\n\\t\\t\\tendCutoff += viewport.xyxy;\\n\\t\\t\\tendCutoff += endMiterWidth.xyxy;\\n\\t\\t}\\n\\t}\\n}\\n\"]),frag:o([\"precision highp float;\\n#define GLSLIFY 1\\n\\nuniform float dashLength, pixelRatio, thickness, opacity, id, miterMode;\\nuniform sampler2D dashTexture;\\n\\nvarying vec4 fragColor;\\nvarying vec2 tangent;\\nvarying vec4 startCutoff, endCutoff;\\nvarying vec2 startCoord, endCoord;\\nvarying float enableStartMiter, enableEndMiter;\\n\\nfloat distToLine(vec2 p, vec2 a, vec2 b) {\\n\\tvec2 diff = b - a;\\n\\tvec2 perp = normalize(vec2(-diff.y, diff.x));\\n\\treturn dot(p - a, perp);\\n}\\n\\nvoid main() {\\n\\tfloat alpha = 1., distToStart, distToEnd;\\n\\tfloat cutoff = thickness * .5;\\n\\n\\t//bevel miter\\n\\tif (miterMode == 1.) {\\n\\t\\tif (enableStartMiter == 1.) {\\n\\t\\t\\tdistToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw);\\n\\t\\t\\tif (distToStart < -1.) {\\n\\t\\t\\t\\tdiscard;\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\t\\t\\talpha *= min(max(distToStart + 1., 0.), 1.);\\n\\t\\t}\\n\\n\\t\\tif (enableEndMiter == 1.) {\\n\\t\\t\\tdistToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw);\\n\\t\\t\\tif (distToEnd < -1.) {\\n\\t\\t\\t\\tdiscard;\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\t\\t\\talpha *= min(max(distToEnd + 1., 0.), 1.);\\n\\t\\t}\\n\\t}\\n\\n\\t// round miter\\n\\telse if (miterMode == 2.) {\\n\\t\\tif (enableStartMiter == 1.) {\\n\\t\\t\\tdistToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw);\\n\\t\\t\\tif (distToStart < 0.) {\\n\\t\\t\\t\\tfloat radius = length(gl_FragCoord.xy - startCoord);\\n\\n\\t\\t\\t\\tif(radius > cutoff + .5) {\\n\\t\\t\\t\\t\\tdiscard;\\n\\t\\t\\t\\t\\treturn;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\talpha -= smoothstep(cutoff - .5, cutoff + .5, radius);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tif (enableEndMiter == 1.) {\\n\\t\\t\\tdistToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw);\\n\\t\\t\\tif (distToEnd < 0.) {\\n\\t\\t\\t\\tfloat radius = length(gl_FragCoord.xy - endCoord);\\n\\n\\t\\t\\t\\tif(radius > cutoff + .5) {\\n\\t\\t\\t\\t\\tdiscard;\\n\\t\\t\\t\\t\\treturn;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\talpha -= smoothstep(cutoff - .5, cutoff + .5, radius);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\tfloat t = fract(dot(tangent, gl_FragCoord.xy) / dashLength) * .5 + .25;\\n\\tfloat dash = texture2D(dashTexture, vec2(t, .5)).r;\\n\\n\\tgl_FragColor = fragColor;\\n\\tgl_FragColor.a *= alpha * opacity * dash;\\n}\\n\"]),attributes:{lineEnd:{buffer:r,divisor:0,stride:8,offset:0},lineTop:{buffer:r,divisor:0,stride:8,offset:4},aColor:{buffer:t.prop(\"colorBuffer\"),stride:4,offset:0,divisor:1},bColor:{buffer:t.prop(\"colorBuffer\"),stride:4,offset:4,divisor:1},prevCoord:{buffer:t.prop(\"positionBuffer\"),stride:8,offset:0,divisor:1},aCoord:{buffer:t.prop(\"positionBuffer\"),stride:8,offset:8,divisor:1},bCoord:{buffer:t.prop(\"positionBuffer\"),stride:8,offset:16,divisor:1},nextCoord:{buffer:t.prop(\"positionBuffer\"),stride:8,offset:24,divisor:1}}},n))}catch(t){e=i}return{fill:t({primitive:\"triangle\",elements:function(t,e){return e.triangles},offset:0,vert:o([\"precision highp float;\\n#define GLSLIFY 1\\n\\nattribute vec2 position, positionFract;\\n\\nuniform vec4 color;\\nuniform vec2 scale, scaleFract, translate, translateFract;\\nuniform float pixelRatio, id;\\nuniform vec4 viewport;\\nuniform float opacity;\\n\\nvarying vec4 fragColor;\\n\\nconst float MAX_LINES = 256.;\\n\\nvoid main() {\\n\\tfloat depth = (MAX_LINES - 4. - id) / (MAX_LINES);\\n\\n\\tvec2 position = position * scale + translate\\n + positionFract * scale + translateFract\\n + position * scaleFract\\n + positionFract * scaleFract;\\n\\n\\tgl_Position = vec4(position * 2.0 - 1.0, depth, 1);\\n\\n\\tfragColor = color / 255.;\\n\\tfragColor.a *= opacity;\\n}\\n\"]),frag:o([\"precision highp float;\\n#define GLSLIFY 1\\n\\nvarying vec4 fragColor;\\n\\nvoid main() {\\n\\tgl_FragColor = fragColor;\\n}\\n\"]),uniforms:{scale:t.prop(\"scale\"),color:t.prop(\"fill\"),scaleFract:t.prop(\"scaleFract\"),translateFract:t.prop(\"translateFract\"),translate:t.prop(\"translate\"),opacity:t.prop(\"opacity\"),pixelRatio:t.context(\"pixelRatio\"),id:t.prop(\"id\"),viewport:function(t,e){return[e.viewport.x,e.viewport.y,t.viewportWidth,t.viewportHeight]}},attributes:{position:{buffer:t.prop(\"positionBuffer\"),stride:8,offset:8},positionFract:{buffer:t.prop(\"positionFractBuffer\"),stride:8,offset:8}},blend:n.blend,depth:{enable:!1},scissor:n.scissor,stencil:n.stencil,viewport:n.viewport}),rect:i,miter:e}},v.defaults={dashes:null,join:\"miter\",miterLimit:1,thickness:10,cap:\"square\",color:\"black\",opacity:1,overlay:!1,viewport:null,range:null,close:!1,fill:null},v.prototype.render=function(){for(var t,e=[],r=arguments.length;r--;)e[r]=arguments[r];e.length&&(t=this).update.apply(t,e),this.draw()},v.prototype.draw=function(){for(var t=this,e=[],r=arguments.length;r--;)e[r]=arguments[r];return(e.length?e:this.passes).forEach((function(e,r){var n;if(e&&Array.isArray(e))return(n=t).draw.apply(n,e);\"number\"==typeof e&&(e=t.passes[e]),e&&e.count>1&&e.opacity&&(t.regl._refresh(),e.fill&&e.triangles&&e.triangles.length>2&&t.shaders.fill(e),e.thickness&&(e.scale[0]*e.viewport.width>v.precisionThreshold||e.scale[1]*e.viewport.height>v.precisionThreshold||\"rect\"===e.join||!e.join&&(e.thickness<=2||e.count>=v.maxPoints)?t.shaders.rect(e):t.shaders.miter(e)))})),this},v.prototype.update=function(t){var e=this;if(t){null!=t.length?\"number\"==typeof t[0]&&(t=[{positions:t}]):Array.isArray(t)||(t=[t]);var r=this.regl,o=this.gl;if(t.forEach((function(t,f){var d=e.passes[f];if(void 0!==t)if(null!==t){if(\"number\"==typeof t[0]&&(t={positions:t}),t=s(t,{positions:\"positions points data coords\",thickness:\"thickness lineWidth lineWidths line-width linewidth width stroke-width strokewidth strokeWidth\",join:\"lineJoin linejoin join type mode\",miterLimit:\"miterlimit miterLimit\",dashes:\"dash dashes dasharray dash-array dashArray\",color:\"color colour stroke colors colours stroke-color strokeColor\",fill:\"fill fill-color fillColor\",opacity:\"alpha opacity\",overlay:\"overlay crease overlap intersect\",close:\"closed close closed-path closePath\",range:\"range dataBox\",viewport:\"viewport viewBox\",hole:\"holes hole hollow\",splitNull:\"splitNull\"}),d||(e.passes[f]=d={id:f,scale:null,scaleFract:null,translate:null,translateFract:null,count:0,hole:[],depth:0,dashLength:1,dashTexture:r.texture({channels:1,data:new Uint8Array([255]),width:1,height:1,mag:\"linear\",min:\"linear\"}),colorBuffer:r.buffer({usage:\"dynamic\",type:\"uint8\",data:new Uint8Array}),positionBuffer:r.buffer({usage:\"dynamic\",type:\"float\",data:new Uint8Array}),positionFractBuffer:r.buffer({usage:\"dynamic\",type:\"float\",data:new Uint8Array})},t=a({},v.defaults,t)),null!=t.thickness&&(d.thickness=parseFloat(t.thickness)),null!=t.opacity&&(d.opacity=parseFloat(t.opacity)),null!=t.miterLimit&&(d.miterLimit=parseFloat(t.miterLimit)),null!=t.overlay&&(d.overlay=!!t.overlay,f=D}));(I=I.slice(0,R)).push(D)}for(var F=function(t){var e=k.slice(2*z,2*I[t]).concat(D?k.slice(2*D):[]),r=(d.hole||[]).map((function(e){return e-D+(I[t]-z)})),n=c(e,r);n=n.map((function(e){return e+z+(e+zt.length)&&(e=t.length);for(var r=0,n=new Array(e);r 1.0 + delta) {\\n\\t\\tdiscard;\\n\\t}\\n\\n\\talpha -= smoothstep(1.0 - delta, 1.0 + delta, radius);\\n\\n\\tfloat borderRadius = fragBorderRadius;\\n\\tfloat ratio = smoothstep(borderRadius - delta, borderRadius + delta, radius);\\n\\tvec4 color = mix(fragColor, fragBorderColor, ratio);\\n\\tcolor.a *= alpha * opacity;\\n\\tgl_FragColor = color;\\n}\\n\"]),l.vert=h([\"precision highp float;\\n#define GLSLIFY 1\\n\\nattribute float x, y, xFract, yFract;\\nattribute float size, borderSize;\\nattribute vec4 colorId, borderColorId;\\nattribute float isActive;\\n\\nuniform bool constPointSize;\\nuniform float pixelRatio;\\nuniform vec2 paletteSize, scale, scaleFract, translate, translateFract;\\nuniform sampler2D paletteTexture;\\n\\nconst float maxSize = 100.;\\n\\nvarying vec4 fragColor, fragBorderColor;\\nvarying float fragBorderRadius, fragWidth;\\n\\nfloat pointSizeScale = (constPointSize) ? 2. : pixelRatio;\\n\\nbool isDirect = (paletteSize.x < 1.);\\n\\nvec4 getColor(vec4 id) {\\n return isDirect ? id / 255. : texture2D(paletteTexture,\\n vec2(\\n (id.x + .5) / paletteSize.x,\\n (id.y + .5) / paletteSize.y\\n )\\n );\\n}\\n\\nvoid main() {\\n // ignore inactive points\\n if (isActive == 0.) return;\\n\\n vec2 position = vec2(x, y);\\n vec2 positionFract = vec2(xFract, yFract);\\n\\n vec4 color = getColor(colorId);\\n vec4 borderColor = getColor(borderColorId);\\n\\n float size = size * maxSize / 255.;\\n float borderSize = borderSize * maxSize / 255.;\\n\\n gl_PointSize = (size + borderSize) * pointSizeScale;\\n\\n vec2 pos = (position + translate) * scale\\n + (positionFract + translateFract) * scale\\n + (position + translate) * scaleFract\\n + (positionFract + translateFract) * scaleFract;\\n\\n gl_Position = vec4(pos * 2. - 1., 0., 1.);\\n\\n fragBorderRadius = 1. - 2. * borderSize / (size + borderSize);\\n fragColor = color;\\n fragBorderColor = borderColor.a == 0. || borderSize == 0. ? vec4(color.rgb, 0.) : borderColor;\\n fragWidth = 1. / gl_PointSize;\\n}\\n\"]),m&&(l.frag=l.frag.replace(\"smoothstep\",\"smoothStep\"),s.frag=s.frag.replace(\"smoothstep\",\"smoothStep\")),this.drawCircle=t(l)}b.defaults={color:\"black\",borderColor:\"transparent\",borderSize:0,size:12,opacity:1,marker:void 0,viewport:null,range:null,pixelSize:null,count:0,offset:0,bounds:null,positions:[],snap:1e4},b.prototype.render=function(){return arguments.length&&this.update.apply(this,arguments),this.draw(),this},b.prototype.draw=function(){for(var t=this,e=arguments.length,r=new Array(e),n=0;nn)?e.tree=u(t,{bounds:f}):n&&n.length&&(e.tree=n),e.tree){var h={primitive:\"points\",usage:\"static\",data:e.tree,type:\"uint32\"};e.elements?e.elements(h):e.elements=o.elements(h)}var p=v.float32(t);return i({data:p,usage:\"dynamic\"}),a({data:v.fract32(t,p),usage:\"dynamic\"}),s({data:new Uint8Array(c),type:\"uint8\",usage:\"stream\"}),t}},{marker:function(e,r,n){var i=r.activation;if(i.forEach((function(t){return t&&t.destroy&&t.destroy()})),i.length=0,e&&\"number\"!=typeof e[0]){for(var a=[],s=0,l=Math.min(e.length,r.count);s=0)return a;if(t instanceof Uint8Array||t instanceof Uint8ClampedArray)e=t;else{e=new Uint8Array(t.length);for(var o=0,s=t.length;o4*n&&(this.tooManyColors=!0),this.updatePalette(r),1===i.length?i[0]:i},b.prototype.updatePalette=function(t){if(!this.tooManyColors){var e=this.maxColors,r=this.paletteTexture,n=Math.ceil(.25*t.length/e);if(n>1)for(var i=.25*(t=t.slice()).length%e;i2?(s[0],s[2],n=s[1],i=s[3]):s.length?(n=s[0],i=s[1]):(s.x,n=s.y,s.x+s.width,i=s.y+s.height),l.length>2?(a=l[0],o=l[2],l[1],l[3]):l.length?(a=l[0],o=l[1]):(a=l.x,l.y,o=l.x+l.width,l.y+l.height),[a,n,o,i]}function p(t){if(\"number\"==typeof t)return[t,t,t,t];if(2===t.length)return[t[0],t[1],t[0],t[1]];var e=l(t);return[e.x,e.y,e.x+e.width,e.y+e.height]}e.exports=u,u.prototype.render=function(){for(var t,e=this,r=[],n=arguments.length;n--;)r[n]=arguments[n];return r.length&&(t=this).update.apply(t,r),this.regl.attributes.preserveDrawingBuffer?this.draw():(this.dirty?null==this.planned&&(this.planned=o((function(){e.draw(),e.dirty=!0,e.planned=null}))):(this.draw(),this.dirty=!0,o((function(){e.dirty=!1}))),this)},u.prototype.update=function(){for(var t,e=[],r=arguments.length;r--;)e[r]=arguments[r];if(e.length){for(var n=0;nk))&&(s.lower||!(T>>=e))<<3,(e|=r=(15<(t>>>=r))<<2)|(r=(3<(t>>>=r))<<1)|t>>>r>>1}function s(){function t(t){t:{for(var e=16;268435456>=e;e*=16)if(t<=e){t=e;break t}t=0}return 0<(e=r[o(t)>>2]).length?e.pop():new ArrayBuffer(t)}function e(t){r[o(t.byteLength)>>2].push(t)}var r=a(8,(function(){return[]}));return{alloc:t,free:e,allocType:function(e,r){var n=null;switch(e){case 5120:n=new Int8Array(t(r),0,r);break;case 5121:n=new Uint8Array(t(r),0,r);break;case 5122:n=new Int16Array(t(2*r),0,r);break;case 5123:n=new Uint16Array(t(2*r),0,r);break;case 5124:n=new Int32Array(t(4*r),0,r);break;case 5125:n=new Uint32Array(t(4*r),0,r);break;case 5126:n=new Float32Array(t(4*r),0,r);break;default:return null}return n.length!==r?n.subarray(0,r):n},freeType:function(t){e(t.buffer)}}}function l(t){return!!t&&\"object\"==typeof t&&Array.isArray(t.shape)&&Array.isArray(t.stride)&&\"number\"==typeof t.offset&&t.shape.length===t.stride.length&&(Array.isArray(t.data)||W(t.data))}function c(t,e,r,n,i,a){for(var o=0;o(i=s)&&(i=n.buffer.byteLength,5123===f?i>>=1:5125===f&&(i>>=2)),n.vertCount=i,i=o,0>o&&(i=4,1===(o=n.buffer.dimension)&&(i=0),2===o&&(i=1),3===o&&(i=4)),n.primType=i}function o(t){n.elementsCount--,delete s[t.id],t.buffer.destroy(),t.buffer=null}var s={},c=0,u={uint8:5121,uint16:5123};e.oes_element_index_uint&&(u.uint32=5125),i.prototype.bind=function(){this.buffer.bind()};var f=[];return{create:function(t,e){function s(t){if(t)if(\"number\"==typeof t)c(t),f.primType=4,f.vertCount=0|t,f.type=5121;else{var e=null,r=35044,n=-1,i=-1,o=0,h=0;Array.isArray(t)||W(t)||l(t)?e=t:(\"data\"in t&&(e=t.data),\"usage\"in t&&(r=Q[t.usage]),\"primitive\"in t&&(n=rt[t.primitive]),\"count\"in t&&(i=0|t.count),\"type\"in t&&(h=u[t.type]),\"length\"in t?o=0|t.length:(o=i,5123===h||5122===h?o*=2:5125!==h&&5124!==h||(o*=4))),a(f,e,r,n,i,o,h)}else c(),f.primType=4,f.vertCount=0,f.type=5121;return s}var c=r.create(null,34963,!0),f=new i(c._buffer);return n.elementsCount++,s(t),s._reglType=\"elements\",s._elements=f,s.subdata=function(t,e){return c.subdata(t,e),s},s.destroy=function(){o(f)},s},createStream:function(t){var e=f.pop();return e||(e=new i(r.create(null,34963,!0,!1)._buffer)),a(e,t,35040,-1,-1,0,0),e},destroyStream:function(t){f.push(t)},getElements:function(t){return\"function\"==typeof t&&t._elements instanceof i?t._elements:null},clear:function(){X(s).forEach(o)}}}function g(t){for(var e=G.allocType(5123,t.length),r=0;r>>31<<15,i=(a<<1>>>24)-127,a=a>>13&1023;e[r]=-24>i?n:-14>i?n+(a+1024>>-14-i):15>=i,r.height>>=i,p(r,n[i]),t.mipmask|=1<e;++e)t.images[e]=null;return t}function C(t){for(var e=t.images,r=0;re){for(var r=0;r=--this.refCount&&F(this)}}),o.profile&&(a.getTotalTextureSize=function(){var t=0;return Object.keys(yt).forEach((function(e){t+=yt[e].stats.size})),t}),{create2D:function(e,r){function n(t,e){var r=i.texInfo;P.call(r);var a=L();return\"number\"==typeof t?M(a,0|t,\"number\"==typeof e?0|e:0|t):t?(I(r,t),S(a,t)):M(a,1,1),r.genMipmaps&&(a.mipmask=(a.width<<1)-1),i.mipmask=a.mipmask,c(i,a),i.internalformat=a.internalformat,n.width=a.width,n.height=a.height,D(i),E(a,3553),O(r,3553),R(),C(a),o.profile&&(i.stats.size=T(i.internalformat,i.type,a.width,a.height,r.genMipmaps,!1)),n.format=tt[i.internalformat],n.type=et[i.type],n.mag=rt[r.magFilter],n.min=nt[r.minFilter],n.wrapS=it[r.wrapS],n.wrapT=it[r.wrapT],n}var i=new z(3553);return yt[i.id]=i,a.textureCount++,n(e,r),n.subimage=function(t,e,r,a){e|=0,r|=0,a|=0;var o=v();return c(o,i),o.width=0,o.height=0,p(o,t),o.width=o.width||(i.width>>a)-e,o.height=o.height||(i.height>>a)-r,D(i),d(o,3553,e,r,a),R(),k(o),n},n.resize=function(e,r){var a=0|e,s=0|r||a;if(a===i.width&&s===i.height)return n;n.width=i.width=a,n.height=i.height=s,D(i);for(var l=0;i.mipmask>>l;++l){var c=a>>l,u=s>>l;if(!c||!u)break;t.texImage2D(3553,l,i.format,c,u,0,i.format,i.type,null)}return R(),o.profile&&(i.stats.size=T(i.internalformat,i.type,a,s,!1,!1)),n},n._reglType=\"texture2d\",n._texture=i,o.profile&&(n.stats=i.stats),n.destroy=function(){i.decRef()},n},createCube:function(e,r,n,i,s,l){function f(t,e,r,n,i,a){var s,l=h.texInfo;for(P.call(l),s=0;6>s;++s)g[s]=L();if(\"number\"!=typeof t&&t){if(\"object\"==typeof t)if(e)S(g[0],t),S(g[1],e),S(g[2],r),S(g[3],n),S(g[4],i),S(g[5],a);else if(I(l,t),u(h,t),\"faces\"in t)for(t=t.faces,s=0;6>s;++s)c(g[s],h),S(g[s],t[s]);else for(s=0;6>s;++s)S(g[s],t)}else for(t=0|t||1,s=0;6>s;++s)M(g[s],t,t);for(c(h,g[0]),h.mipmask=l.genMipmaps?(g[0].width<<1)-1:g[0].mipmask,h.internalformat=g[0].internalformat,f.width=g[0].width,f.height=g[0].height,D(h),s=0;6>s;++s)E(g[s],34069+s);for(O(l,34067),R(),o.profile&&(h.stats.size=T(h.internalformat,h.type,f.width,f.height,l.genMipmaps,!0)),f.format=tt[h.internalformat],f.type=et[h.type],f.mag=rt[l.magFilter],f.min=nt[l.minFilter],f.wrapS=it[l.wrapS],f.wrapT=it[l.wrapT],s=0;6>s;++s)C(g[s]);return f}var h=new z(34067);yt[h.id]=h,a.cubeCount++;var g=Array(6);return f(e,r,n,i,s,l),f.subimage=function(t,e,r,n,i){r|=0,n|=0,i|=0;var a=v();return c(a,h),a.width=0,a.height=0,p(a,e),a.width=a.width||(h.width>>i)-r,a.height=a.height||(h.height>>i)-n,D(h),d(a,34069+t,r,n,i),R(),k(a),f},f.resize=function(e){if((e|=0)!==h.width){f.width=h.width=e,f.height=h.height=e,D(h);for(var r=0;6>r;++r)for(var n=0;h.mipmask>>n;++n)t.texImage2D(34069+r,n,h.format,e>>n,e>>n,0,h.format,h.type,null);return R(),o.profile&&(h.stats.size=T(h.internalformat,h.type,f.width,f.height,!1,!0)),f}},f._reglType=\"textureCube\",f._texture=h,o.profile&&(f.stats=h.stats),f.destroy=function(){h.decRef()},f},clear:function(){for(var e=0;er;++r)if(0!=(e.mipmask&1<>r,e.height>>r,0,e.internalformat,e.type,null);else for(var n=0;6>n;++n)t.texImage2D(34069+n,r,e.internalformat,e.width>>r,e.height>>r,0,e.internalformat,e.type,null);O(e.texInfo,e.target)}))},refresh:function(){for(var e=0;ei;++i){for(c=0;ct;++t)r[t].resize(n);return e.width=e.height=n,e},_reglType:\"framebufferCube\",destroy:function(){r.forEach((function(t){t.destroy()}))}})},clear:function(){X(k).forEach(m)},restore:function(){x.cur=null,x.next=null,x.dirty=!0,X(k).forEach((function(e){e.framebuffer=t.createFramebuffer(),v(e)}))}})}function M(){this.w=this.z=this.y=this.x=this.state=0,this.buffer=null,this.size=0,this.normalized=!1,this.type=5126,this.divisor=this.stride=this.offset=0}function S(t,e,r,n,i,a,o){function s(){this.id=++f,this.attributes=[],this.elements=null,this.ownsElements=!1,this.offset=this.count=0,this.instances=-1,this.primitive=4;var t=e.oes_vertex_array_object;this.vao=t?t.createVertexArrayOES():null,h[this.id]=this,this.buffers=[]}var c=r.maxAttributes,u=Array(c);for(r=0;r=h.byteLength?c.subdata(h):(c.destroy(),r.buffers[s]=null)),r.buffers[s]||(c=r.buffers[s]=i.create(u,34962,!1,!0)),f.buffer=i.getBuffer(c),f.size=0|f.buffer.dimension,f.normalized=!1,f.type=f.buffer.dtype,f.offset=0,f.stride=0,f.divisor=0,f.state=1,t[s]=1;else i.getBuffer(u)?(f.buffer=i.getBuffer(u),f.size=0|f.buffer.dimension,f.normalized=!1,f.type=f.buffer.dtype,f.offset=0,f.stride=0,f.divisor=0,f.state=1):i.getBuffer(u.buffer)?(f.buffer=i.getBuffer(u.buffer),f.size=0|(+u.size||f.buffer.dimension),f.normalized=!!u.normalized||!1,f.type=\"type\"in u?K[u.type]:f.buffer.dtype,f.offset=0|(u.offset||0),f.stride=0|(u.stride||0),f.divisor=0|(u.divisor||0),f.state=1):\"x\"in u&&(f.x=+u.x||0,f.y=+u.y||0,f.z=+u.z||0,f.w=+u.w||0,f.state=2)}for(c=0;ct&&(t=e.stats.uniformsCount)})),t},r.getMaxAttributesCount=function(){var t=0;return h.forEach((function(e){e.stats.attributesCount>t&&(t=e.stats.attributesCount)})),t}),{clear:function(){var e=t.deleteShader.bind(t);X(c).forEach(e),c={},X(u).forEach(e),u={},h.forEach((function(e){t.deleteProgram(e.program)})),h.length=0,f={},r.shaderCount=0},program:function(e,n,i,a){var o=f[n];o||(o=f[n]={});var p=o[e];if(p&&(p.refCount++,!a))return p;var d=new s(n,e);return r.shaderCount++,l(d,i,a),p||(o[e]=d),h.push(d),j(d,{destroy:function(){if(d.refCount--,0>=d.refCount){t.deleteProgram(d.program);var e=h.indexOf(d);h.splice(e,1),r.shaderCount--}0>=o[d.vertId].refCount&&(t.deleteShader(u[d.vertId]),delete u[d.vertId],delete f[d.fragId][d.vertId]),Object.keys(f[d.fragId]).length||(t.deleteShader(c[d.fragId]),delete c[d.fragId],delete f[d.fragId])}})},restore:function(){c={},u={};for(var t=0;t\"+e+\"?\"+i+\".constant[\"+e+\"]:0;\"})).join(\"\"),\"}}else{\",\"if(\",s,\"(\",i,\".buffer)){\",u,\"=\",a,\".createStream(\",34962,\",\",i,\".buffer);\",\"}else{\",u,\"=\",a,\".getBuffer(\",i,\".buffer);\",\"}\",f,'=\"type\" in ',i,\"?\",o.glTypes,\"[\",i,\".type]:\",u,\".dtype;\",l.normalized,\"=!!\",i,\".normalized;\"),n(\"size\"),n(\"offset\"),n(\"stride\"),n(\"divisor\"),r(\"}}\"),r.exit(\"if(\",l.isStream,\"){\",a,\".destroyStream(\",u,\");\",\"}\"),l}))})),o}function A(t,e,n,i,o){function s(t){var e=c[t];e&&(h[t]=e)}var l=function(t,e){if(\"string\"==typeof(r=t.static).frag&&\"string\"==typeof r.vert){if(0>1)\",s],\");\")}function e(){r(l,\".drawArraysInstancedANGLE(\",[d,g,m,s],\");\")}p&&\"null\"!==p?y?t():(r(\"if(\",p,\"){\"),t(),r(\"}else{\"),e(),r(\"}\")):e()}function o(){function t(){r(u+\".drawElements(\"+[d,m,v,g+\"<<((\"+v+\"-5121)>>1)\"]+\");\")}function e(){r(u+\".drawArrays(\"+[d,g,m]+\");\")}p&&\"null\"!==p?y?t():(r(\"if(\",p,\"){\"),t(),r(\"}else{\"),e(),r(\"}\")):e()}var s,l,c=t.shared,u=c.gl,f=c.draw,h=n.draw,p=function(){var i=h.elements,a=e;return i?((i.contextDep&&n.contextDynamic||i.propDep)&&(a=r),i=i.append(t,a),h.elementsActive&&a(\"if(\"+i+\")\"+u+\".bindBuffer(34963,\"+i+\".buffer.buffer);\")):(i=a.def(),a(i,\"=\",f,\".\",\"elements\",\";\",\"if(\",i,\"){\",u,\".bindBuffer(\",34963,\",\",i,\".buffer.buffer);}\",\"else if(\",c.vao,\".currentVAO){\",i,\"=\",t.shared.elements+\".getElements(\"+c.vao,\".currentVAO.elements);\",nt?\"\":\"if(\"+i+\")\"+u+\".bindBuffer(34963,\"+i+\".buffer.buffer);\",\"}\")),i}(),d=i(\"primitive\"),g=i(\"offset\"),m=function(){var i=h.count,a=e;return i?((i.contextDep&&n.contextDynamic||i.propDep)&&(a=r),i=i.append(t,a)):i=a.def(f,\".\",\"count\"),i}();if(\"number\"==typeof m){if(0===m)return}else r(\"if(\",m,\"){\"),r.exit(\"}\");tt&&(s=i(\"instances\"),l=t.instancing);var v=p+\".type\",y=h.elements&&D(h.elements)&&!h.vaoActive;tt&&(\"number\"!=typeof s||0<=s)?\"string\"==typeof s?(r(\"if(\",s,\">0){\"),a(),r(\"}else if(\",s,\"<0){\"),o(),r(\"}\")):a():o()}function G(t,e,r,n,i){return i=(e=b()).proc(\"body\",i),tt&&(e.instancing=i.def(e.shared.extensions,\".angle_instanced_arrays\")),t(e,i,r,n),e.compile().body}function Y(t,e,r,n){B(t,e),r.useVAO?r.drawVAO?e(t.shared.vao,\".setVAO(\",r.drawVAO.append(t,e),\");\"):e(t.shared.vao,\".setVAO(\",t.shared.vao,\".targetVAO);\"):(e(t.shared.vao,\".setVAO(null);\"),U(t,e,r,n.attributes,(function(){return!0}))),H(t,e,r,n.uniforms,(function(){return!0}),!1),q(t,e,e,r)}function W(t,e,r,n){function i(){return!0}t.batchId=\"a1\",B(t,e),U(t,e,r,n.attributes,i),H(t,e,r,n.uniforms,i,!1),q(t,e,e,r)}function X(t,e,r,n){function i(t){return t.contextDep&&o||t.propDep}function a(t){return!i(t)}B(t,e);var o=r.contextDep,s=e.def(),l=e.def();t.shared.props=l,t.batchId=s;var c=t.scope(),u=t.scope();e(c.entry,\"for(\",s,\"=0;\",s,\"<\",\"a1\",\";++\",s,\"){\",l,\"=\",\"a0\",\"[\",s,\"];\",u,\"}\",c.exit),r.needsContext&&M(t,u,r.context),r.needsFramebuffer&&S(t,u,r.framebuffer),L(t,u,r.state,i),r.profile&&i(r.profile)&&N(t,u,r,!1,!0),n?(r.useVAO?r.drawVAO?i(r.drawVAO)?u(t.shared.vao,\".setVAO(\",r.drawVAO.append(t,u),\");\"):c(t.shared.vao,\".setVAO(\",r.drawVAO.append(t,c),\");\"):c(t.shared.vao,\".setVAO(\",t.shared.vao,\".targetVAO);\"):(c(t.shared.vao,\".setVAO(null);\"),U(t,c,r,n.attributes,a),U(t,u,r,n.attributes,i)),H(t,c,r,n.uniforms,a,!1),H(t,u,r,n.uniforms,i,!0),q(t,c,u,r)):(e=t.global.def(\"{}\"),n=r.shader.progVar.append(t,u),l=u.def(n,\".id\"),c=u.def(e,\"[\",l,\"]\"),u(t.shared.gl,\".useProgram(\",n,\".program);\",\"if(!\",c,\"){\",c,\"=\",e,\"[\",l,\"]=\",t.link((function(e){return G(W,t,r,e,2)})),\"(\",n,\");}\",c,\".call(this,a0[\",s,\"],\",s,\");\"))}function Z(t,r){function n(e){var n=r.shader[e];n&&i.set(a.shader,\".\"+e,n.append(t,i))}var i=t.proc(\"scope\",3);t.batchId=\"a2\";var a=t.shared,o=a.current;M(t,i,r.context),r.framebuffer&&r.framebuffer.append(t,i),O(Object.keys(r.state)).forEach((function(e){var n=r.state[e].append(t,i);m(n)?n.forEach((function(r,n){i.set(t.next[e],\"[\"+n+\"]\",r)})):i.set(a.next,\".\"+e,n)})),N(t,i,r,!0,!0),[\"elements\",\"offset\",\"count\",\"instances\",\"primitive\"].forEach((function(e){var n=r.draw[e];n&&i.set(a.draw,\".\"+e,\"\"+n.append(t,i))})),Object.keys(r.uniforms).forEach((function(n){var o=r.uniforms[n].append(t,i);Array.isArray(o)&&(o=\"[\"+o.join()+\"]\"),i.set(a.uniforms,\"[\"+e.id(n)+\"]\",o)})),Object.keys(r.attributes).forEach((function(e){var n=r.attributes[e].append(t,i),a=t.scopeAttrib(e);Object.keys(new Q).forEach((function(t){i.set(a,\".\"+t,n[t])}))})),r.scopeVAO&&i.set(a.vao,\".targetVAO\",r.scopeVAO.append(t,i)),n(\"vert\"),n(\"frag\"),0=--this.refCount&&o(this)},i.profile&&(n.getTotalRenderbufferSize=function(){var t=0;return Object.keys(u).forEach((function(e){t+=u[e].stats.size})),t}),{create:function(e,r){function o(e,r){var n=0,a=0,u=32854;if(\"object\"==typeof e&&e?(\"shape\"in e?(n=0|(a=e.shape)[0],a=0|a[1]):(\"radius\"in e&&(n=a=0|e.radius),\"width\"in e&&(n=0|e.width),\"height\"in e&&(a=0|e.height)),\"format\"in e&&(u=s[e.format])):\"number\"==typeof e?(n=0|e,a=\"number\"==typeof r?0|r:n):e||(n=a=1),n!==c.width||a!==c.height||u!==c.format)return o.width=c.width=n,o.height=c.height=a,c.format=u,t.bindRenderbuffer(36161,c.renderbuffer),t.renderbufferStorage(36161,u,n,a),i.profile&&(c.stats.size=vt[c.format]*c.width*c.height),o.format=l[c.format],o}var c=new a(t.createRenderbuffer());return u[c.id]=c,n.renderbufferCount++,o(e,r),o.resize=function(e,r){var n=0|e,a=0|r||n;return n===c.width&&a===c.height||(o.width=c.width=n,o.height=c.height=a,t.bindRenderbuffer(36161,c.renderbuffer),t.renderbufferStorage(36161,c.format,n,a),i.profile&&(c.stats.size=vt[c.format]*c.width*c.height)),o},o._reglType=\"renderbuffer\",o._renderbuffer=c,i.profile&&(o.stats=c.stats),o.destroy=function(){c.decRef()},o},clear:function(){X(u).forEach(o)},restore:function(){X(u).forEach((function(e){e.renderbuffer=t.createRenderbuffer(),t.bindRenderbuffer(36161,e.renderbuffer),t.renderbufferStorage(36161,e.format,e.width,e.height)})),t.bindRenderbuffer(36161,null)}}},xt=[];xt[6408]=4,xt[6407]=3;var bt=[];bt[5121]=1,bt[5126]=4,bt[36193]=2;var _t=[\"x\",\"y\",\"z\",\"w\"],wt=\"blend.func blend.equation stencil.func stencil.opFront stencil.opBack sample.coverage viewport scissor.box polygonOffset.offset\".split(\" \"),Tt={0:0,1:1,zero:0,one:1,\"src color\":768,\"one minus src color\":769,\"src alpha\":770,\"one minus src alpha\":771,\"dst color\":774,\"one minus dst color\":775,\"dst alpha\":772,\"one minus dst alpha\":773,\"constant color\":32769,\"one minus constant color\":32770,\"constant alpha\":32771,\"one minus constant alpha\":32772,\"src alpha saturate\":776},kt={never:512,less:513,\"<\":513,equal:514,\"=\":514,\"==\":514,\"===\":514,lequal:515,\"<=\":515,greater:516,\">\":516,notequal:517,\"!=\":517,\"!==\":517,gequal:518,\">=\":518,always:519},At={0:0,zero:0,keep:7680,replace:7681,increment:7682,decrement:7683,\"increment wrap\":34055,\"decrement wrap\":34056,invert:5386},Mt={cw:2304,ccw:2305},St=new z(!1,!1,!1,(function(){}));return function(t){function e(){if(0===J.length)w&&w.update(),tt=null;else{tt=H.next(e),f();for(var t=J.length-1;0<=t;--t){var r=J[t];r&&r(P,null,0)}m.flush(),w&&w.update()}}function r(){!tt&&0=J.length&&n()}}}}function u(){var t=X.viewport,e=X.scissor_box;t[0]=t[1]=e[0]=e[1]=0,P.viewportWidth=P.framebufferWidth=P.drawingBufferWidth=t[2]=e[2]=m.drawingBufferWidth,P.viewportHeight=P.framebufferHeight=P.drawingBufferHeight=t[3]=e[3]=m.drawingBufferHeight}function f(){P.tick+=1,P.time=g(),u(),W.procs.poll()}function h(){F.refresh(),u(),W.procs.refresh(),w&&w.update()}function g(){return(q()-T)/1e3}if(!(t=i(t)))return null;var m=t.gl,v=m.getContextAttributes();m.isContextLost();var y=function(t,e){function r(e){var r;e=e.toLowerCase();try{r=n[e]=t.getExtension(e)}catch(t){}return!!r}for(var n={},i=0;ie;++e)et(j({framebuffer:t.framebuffer.faces[e]},t),l);else et(t,l);else l(0,t)},prop:V.define.bind(null,1),context:V.define.bind(null,2),this:V.define.bind(null,3),draw:s({}),buffer:function(t){return O.create(t,34962,!1,!1)},elements:function(t){return z.create(t,!1)},texture:F.create2D,cube:F.createCube,renderbuffer:U.create,framebuffer:G.create,framebufferCube:G.createCube,vao:D.createVAO,attributes:v,frame:c,on:function(t,e){var r;switch(t){case\"frame\":return c(e);case\"lost\":r=K;break;case\"restore\":r=Q;break;case\"destroy\":r=$}return r.push(e),{cancel:function(){for(var t=0;t2?\"one of \".concat(e,\" \").concat(t.slice(0,r-1).join(\", \"),\", or \")+t[r-1]:2===r?\"one of \".concat(e,\" \").concat(t[0],\" or \").concat(t[1]):\"of \".concat(e,\" \").concat(t[0])}return\"of \".concat(e,\" \").concat(String(t))}i(\"ERR_INVALID_OPT_VALUE\",(function(t,e){return'The value \"'+e+'\" is invalid for option \"'+t+'\"'}),TypeError),i(\"ERR_INVALID_ARG_TYPE\",(function(t,e,r){var n,i,o,s;if(\"string\"==typeof e&&(i=\"not \",e.substr(!o||o<0?0:+o,i.length)===i)?(n=\"must not be\",e=e.replace(/^not /,\"\")):n=\"must be\",function(t,e,r){return(void 0===r||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}(t,\" argument\"))s=\"The \".concat(t,\" \").concat(n,\" \").concat(a(e,\"type\"));else{var l=function(t,e,r){return\"number\"!=typeof r&&(r=0),!(r+e.length>t.length)&&-1!==t.indexOf(e,r)}(t,\".\")?\"property\":\"argument\";s='The \"'.concat(t,'\" ').concat(l,\" \").concat(n,\" \").concat(a(e,\"type\"))}return s+=\". Received type \".concat(typeof r)}),TypeError),i(\"ERR_STREAM_PUSH_AFTER_EOF\",\"stream.push() after EOF\"),i(\"ERR_METHOD_NOT_IMPLEMENTED\",(function(t){return\"The \"+t+\" method is not implemented\"})),i(\"ERR_STREAM_PREMATURE_CLOSE\",\"Premature close\"),i(\"ERR_STREAM_DESTROYED\",(function(t){return\"Cannot call \"+t+\" after a stream was destroyed\"})),i(\"ERR_MULTIPLE_CALLBACK\",\"Callback called multiple times\"),i(\"ERR_STREAM_CANNOT_PIPE\",\"Cannot pipe, not readable\"),i(\"ERR_STREAM_WRITE_AFTER_END\",\"write after end\"),i(\"ERR_STREAM_NULL_VALUES\",\"May not write null values to stream\",TypeError),i(\"ERR_UNKNOWN_ENCODING\",(function(t){return\"Unknown encoding: \"+t}),TypeError),i(\"ERR_STREAM_UNSHIFT_AFTER_END_EVENT\",\"stream.unshift() after end event\"),e.exports.codes=n},{}],287:[function(t,e,r){(function(r){(function(){\"use strict\";var n=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};e.exports=c;var i=t(\"./_stream_readable\"),a=t(\"./_stream_writable\");t(\"inherits\")(c,i);for(var o=n(a.prototype),s=0;s0)if(\"string\"==typeof e||o.objectMode||Object.getPrototypeOf(e)===s.prototype||(e=function(t){return s.from(t)}(e)),n)o.endEmitted?w(t,new _):S(t,o,e,!0);else if(o.ended)w(t,new x);else{if(o.destroyed)return!1;o.reading=!1,o.decoder&&!r?(e=o.decoder.write(e),o.objectMode||0!==e.length?S(t,o,e,!1):P(t,o)):S(t,o,e,!1)}else n||(o.reading=!1,P(t,o));return!o.ended&&(o.lengthe.highWaterMark&&(e.highWaterMark=function(t){return t>=1073741824?t=1073741824:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function L(t){var e=t._readableState;c(\"emitReadable\",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(c(\"emitReadable\",e.flowing),e.emittedReadable=!0,r.nextTick(C,t))}function C(t){var e=t._readableState;c(\"emitReadable_\",e.destroyed,e.length,e.ended),e.destroyed||!e.length&&!e.ended||(t.emit(\"readable\"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,R(t)}function P(t,e){e.readingMore||(e.readingMore=!0,r.nextTick(I,t,e))}function I(t,e){for(;!e.reading&&!e.ended&&(e.length0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount(\"data\")>0&&t.resume()}function z(t){c(\"readable nexttick read 0\"),t.read(0)}function D(t,e){c(\"resume\",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit(\"resume\"),R(t),e.flowing&&!e.reading&&t.read(0)}function R(t){var e=t._readableState;for(c(\"flow\",e.flowing);e.flowing&&null!==t.read(););}function F(t,e){return 0===e.length?null:(e.objectMode?r=e.buffer.shift():!t||t>=e.length?(r=e.decoder?e.buffer.join(\"\"):1===e.buffer.length?e.buffer.first():e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r);var r}function B(t){var e=t._readableState;c(\"endReadable\",e.endEmitted),e.endEmitted||(e.ended=!0,r.nextTick(N,e,t))}function N(t,e){if(c(\"endReadableNT\",t.endEmitted,t.length),!t.endEmitted&&0===t.length&&(t.endEmitted=!0,e.readable=!1,e.emit(\"end\"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}function j(t,e){for(var r=0,n=t.length;r=e.highWaterMark:e.length>0)||e.ended))return c(\"read: emitReadable\",e.length,e.ended),0===e.length&&e.ended?B(this):L(this),null;if(0===(t=E(t,e))&&e.ended)return 0===e.length&&B(this),null;var n,i=e.needReadable;return c(\"need readable\",i),(0===e.length||e.length-t0?F(t,e):null)?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&B(this)),null!==n&&this.emit(\"data\",n),n},A.prototype._read=function(t){w(this,new b(\"_read()\"))},A.prototype.pipe=function(t,e){var n=this,i=this._readableState;switch(i.pipesCount){case 0:i.pipes=t;break;case 1:i.pipes=[i.pipes,t];break;default:i.pipes.push(t)}i.pipesCount+=1,c(\"pipe count=%d opts=%j\",i.pipesCount,e);var o=(!e||!1!==e.end)&&t!==r.stdout&&t!==r.stderr?l:m;function s(e,r){c(\"onunpipe\"),e===n&&r&&!1===r.hasUnpiped&&(r.hasUnpiped=!0,c(\"cleanup\"),t.removeListener(\"close\",d),t.removeListener(\"finish\",g),t.removeListener(\"drain\",u),t.removeListener(\"error\",p),t.removeListener(\"unpipe\",s),n.removeListener(\"end\",l),n.removeListener(\"end\",m),n.removeListener(\"data\",h),f=!0,!i.awaitDrain||t._writableState&&!t._writableState.needDrain||u())}function l(){c(\"onend\"),t.end()}i.endEmitted?r.nextTick(o):n.once(\"end\",o),t.on(\"unpipe\",s);var u=function(t){return function(){var e=t._readableState;c(\"pipeOnDrain\",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&a(t,\"data\")&&(e.flowing=!0,R(t))}}(n);t.on(\"drain\",u);var f=!1;function h(e){c(\"ondata\");var r=t.write(e);c(\"dest.write\",r),!1===r&&((1===i.pipesCount&&i.pipes===t||i.pipesCount>1&&-1!==j(i.pipes,t))&&!f&&(c(\"false write response, pause\",i.awaitDrain),i.awaitDrain++),n.pause())}function p(e){c(\"onerror\",e),m(),t.removeListener(\"error\",p),0===a(t,\"error\")&&w(t,e)}function d(){t.removeListener(\"finish\",g),m()}function g(){c(\"onfinish\"),t.removeListener(\"close\",d),m()}function m(){c(\"unpipe\"),n.unpipe(t)}return n.on(\"data\",h),function(t,e,r){if(\"function\"==typeof t.prependListener)return t.prependListener(e,r);t._events&&t._events[e]?Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]:t.on(e,r)}(t,\"error\",p),t.once(\"close\",d),t.once(\"finish\",g),t.emit(\"pipe\",n),i.flowing||(c(\"pipe resume\"),n.resume()),t},A.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit(\"unpipe\",this,r)),this;if(!t){var n=e.pipes,i=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var a=0;a0,!1!==i.flowing&&this.resume()):\"readable\"===t&&(i.endEmitted||i.readableListening||(i.readableListening=i.needReadable=!0,i.flowing=!1,i.emittedReadable=!1,c(\"on readable\",i.length,i.reading),i.length?L(this):i.reading||r.nextTick(z,this))),n},A.prototype.addListener=A.prototype.on,A.prototype.removeListener=function(t,e){var n=o.prototype.removeListener.call(this,t,e);return\"readable\"===t&&r.nextTick(O,this),n},A.prototype.removeAllListeners=function(t){var e=o.prototype.removeAllListeners.apply(this,arguments);return\"readable\"!==t&&void 0!==t||r.nextTick(O,this),e},A.prototype.resume=function(){var t=this._readableState;return t.flowing||(c(\"resume\"),t.flowing=!t.readableListening,function(t,e){e.resumeScheduled||(e.resumeScheduled=!0,r.nextTick(D,t,e))}(this,t)),t.paused=!1,this},A.prototype.pause=function(){return c(\"call pause flowing=%j\",this._readableState.flowing),!1!==this._readableState.flowing&&(c(\"pause\"),this._readableState.flowing=!1,this.emit(\"pause\")),this._readableState.paused=!0,this},A.prototype.wrap=function(t){var e=this,r=this._readableState,n=!1;for(var i in t.on(\"end\",(function(){if(c(\"wrapped end\"),r.decoder&&!r.ended){var t=r.decoder.end();t&&t.length&&e.push(t)}e.push(null)})),t.on(\"data\",(function(i){(c(\"wrapped data\"),r.decoder&&(i=r.decoder.write(i)),r.objectMode&&null==i)||(r.objectMode||i&&i.length)&&(e.push(i)||(n=!0,t.pause()))})),t)void 0===this[i]&&\"function\"==typeof t[i]&&(this[i]=function(e){return function(){return t[e].apply(t,arguments)}}(i));for(var a=0;a-1))throw new _(t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(A.prototype,\"writableBuffer\",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(A.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),A.prototype._write=function(t,e,r){r(new g(\"_write()\"))},A.prototype._writev=null,A.prototype.end=function(t,e,n){var i=this._writableState;return\"function\"==typeof t?(n=t,t=null,e=null):\"function\"==typeof e&&(n=e,e=null),null!=t&&this.write(t,e),i.corked&&(i.corked=1,this.uncork()),i.ending||function(t,e,n){e.ending=!0,P(t,e),n&&(e.finished?r.nextTick(n):t.once(\"finish\",n));e.ended=!0,t.writable=!1}(this,i,n),this},Object.defineProperty(A.prototype,\"writableLength\",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(A.prototype,\"destroyed\",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),A.prototype.destroy=f.destroy,A.prototype._undestroy=f.undestroy,A.prototype._destroy=function(t,e){e(t)}}).call(this)}).call(this,t(\"_process\"),\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"../errors\":286,\"./_stream_duplex\":287,\"./internal/streams/destroy\":294,\"./internal/streams/state\":298,\"./internal/streams/stream\":299,_process:277,buffer:85,inherits:231,\"util-deprecate\":330}],292:[function(t,e,r){(function(r){(function(){\"use strict\";var n;function i(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var a=t(\"./end-of-stream\"),o=Symbol(\"lastResolve\"),s=Symbol(\"lastReject\"),l=Symbol(\"error\"),c=Symbol(\"ended\"),u=Symbol(\"lastPromise\"),f=Symbol(\"handlePromise\"),h=Symbol(\"stream\");function p(t,e){return{value:t,done:e}}function d(t){var e=t[o];if(null!==e){var r=t[h].read();null!==r&&(t[u]=null,t[o]=null,t[s]=null,e(p(r,!1)))}}function g(t){r.nextTick(d,t)}var m=Object.getPrototypeOf((function(){})),v=Object.setPrototypeOf((i(n={get stream(){return this[h]},next:function(){var t=this,e=this[l];if(null!==e)return Promise.reject(e);if(this[c])return Promise.resolve(p(void 0,!0));if(this[h].destroyed)return new Promise((function(e,n){r.nextTick((function(){t[l]?n(t[l]):e(p(void 0,!0))}))}));var n,i=this[u];if(i)n=new Promise(function(t,e){return function(r,n){t.then((function(){e[c]?r(p(void 0,!0)):e[f](r,n)}),n)}}(i,this));else{var a=this[h].read();if(null!==a)return Promise.resolve(p(a,!1));n=new Promise(this[f])}return this[u]=n,n}},Symbol.asyncIterator,(function(){return this})),i(n,\"return\",(function(){var t=this;return new Promise((function(e,r){t[h].destroy(null,(function(t){t?r(t):e(p(void 0,!0))}))}))})),n),m);e.exports=function(t){var e,r=Object.create(v,(i(e={},h,{value:t,writable:!0}),i(e,o,{value:null,writable:!0}),i(e,s,{value:null,writable:!0}),i(e,l,{value:null,writable:!0}),i(e,c,{value:t._readableState.endEmitted,writable:!0}),i(e,f,{value:function(t,e){var n=r[h].read();n?(r[u]=null,r[o]=null,r[s]=null,t(p(n,!1))):(r[o]=t,r[s]=e)},writable:!0}),e));return r[u]=null,a(t,(function(t){if(t&&\"ERR_STREAM_PREMATURE_CLOSE\"!==t.code){var e=r[s];return null!==e&&(r[u]=null,r[o]=null,r[s]=null,e(t)),void(r[l]=t)}var n=r[o];null!==n&&(r[u]=null,r[o]=null,r[s]=null,n(p(void 0,!0))),r[c]=!0})),t.on(\"readable\",g.bind(null,r)),r}}).call(this)}).call(this,t(\"_process\"))},{\"./end-of-stream\":295,_process:277}],293:[function(t,e,r){\"use strict\";function n(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function i(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function a(t,e){for(var r=0;r0?this.tail.next=e:this.head=e,this.tail=e,++this.length}},{key:\"unshift\",value:function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length}},{key:\"shift\",value:function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}}},{key:\"clear\",value:function(){this.head=this.tail=null,this.length=0}},{key:\"join\",value:function(t){if(0===this.length)return\"\";for(var e=this.head,r=\"\"+e.data;e=e.next;)r+=t+e.data;return r}},{key:\"concat\",value:function(t){if(0===this.length)return o.alloc(0);for(var e,r,n,i=o.allocUnsafe(t>>>0),a=this.head,s=0;a;)e=a.data,r=i,n=s,o.prototype.copy.call(e,r,n),s+=a.data.length,a=a.next;return i}},{key:\"consume\",value:function(t,e){var r;return ti.length?i.length:t;if(a===i.length?n+=i:n+=i.slice(0,t),0==(t-=a)){a===i.length?(++r,e.next?this.head=e.next:this.head=this.tail=null):(this.head=e,e.data=i.slice(a));break}++r}return this.length-=r,n}},{key:\"_getBuffer\",value:function(t){var e=o.allocUnsafe(t),r=this.head,n=1;for(r.data.copy(e),t-=r.data.length;r=r.next;){var i=r.data,a=t>i.length?i.length:t;if(i.copy(e,e.length-t,0,a),0==(t-=a)){a===i.length?(++n,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=i.slice(a));break}++n}return this.length-=n,e}},{key:l,value:function(t,e){return s(this,function(t){for(var e=1;e0,(function(t){n||(n=t),t&&o.forEach(c),a||(o.forEach(c),i(n))}))}));return e.reduce(u)}},{\"../../../errors\":286,\"./end-of-stream\":295}],298:[function(t,e,r){\"use strict\";var n=t(\"../../../errors\").codes.ERR_INVALID_OPT_VALUE;e.exports={getHighWaterMark:function(t,e,r,i){var a=function(t,e,r){return null!=t.highWaterMark?t.highWaterMark:e?t[r]:null}(e,i,r);if(null!=a){if(!isFinite(a)||Math.floor(a)!==a||a<0)throw new n(i?r:\"highWaterMark\",a);return Math.floor(a)}return t.objectMode?16:16384}}},{\"../../../errors\":286}],299:[function(t,e,r){e.exports=t(\"events\").EventEmitter},{events:84}],300:[function(t,e,r){\"use strict\";var n=t(\"safe-buffer\").Buffer,i=n.isEncoding||function(t){switch((t=\"\"+t)&&t.toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":case\"raw\":return!0;default:return!1}};function a(t){var e;switch(this.encoding=function(t){var e=function(t){if(!t)return\"utf8\";for(var e;;)switch(t){case\"utf8\":case\"utf-8\":return\"utf8\";case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return\"utf16le\";case\"latin1\":case\"binary\":return\"latin1\";case\"base64\":case\"ascii\":case\"hex\":return t;default:if(e)return;t=(\"\"+t).toLowerCase(),e=!0}}(t);if(\"string\"!=typeof e&&(n.isEncoding===i||!i(t)))throw new Error(\"Unknown encoding: \"+t);return e||t}(t),this.encoding){case\"utf16le\":this.text=l,this.end=c,e=4;break;case\"utf8\":this.fillLast=s,e=4;break;case\"base64\":this.text=u,this.end=f,e=3;break;default:return this.write=h,void(this.end=p)}this.lastNeed=0,this.lastTotal=0,this.lastChar=n.allocUnsafe(e)}function o(t){return t<=127?0:t>>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function s(t){var e=this.lastTotal-this.lastNeed,r=function(t,e,r){if(128!=(192&e[0]))return t.lastNeed=0,\"\\ufffd\";if(t.lastNeed>1&&e.length>1){if(128!=(192&e[1]))return t.lastNeed=1,\"\\ufffd\";if(t.lastNeed>2&&e.length>2&&128!=(192&e[2]))return t.lastNeed=2,\"\\ufffd\"}}(this,t);return void 0!==r?r:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),void(this.lastNeed-=t.length))}function l(t,e){if((t.length-e)%2==0){var r=t.toString(\"utf16le\",e);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString(\"utf16le\",e,t.length-1)}function c(t){var e=t&&t.length?this.write(t):\"\";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString(\"utf16le\",0,r)}return e}function u(t,e){var r=(t.length-e)%3;return 0===r?t.toString(\"base64\",e):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString(\"base64\",e,t.length-r))}function f(t){var e=t&&t.length?this.write(t):\"\";return this.lastNeed?e+this.lastChar.toString(\"base64\",0,3-this.lastNeed):e}function h(t){return t.toString(this.encoding)}function p(t){return t&&t.length?this.write(t):\"\"}r.StringDecoder=a,a.prototype.write=function(t){if(0===t.length)return\"\";var e,r;if(this.lastNeed){if(void 0===(e=this.fillLast(t)))return\"\";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0)return i>0&&(t.lastNeed=i-1),i;if(--n=0)return i>0&&(t.lastNeed=i-2),i;if(--n=0)return i>0&&(2===i?i=0:t.lastNeed=i-3),i;return 0}(this,t,e);if(!this.lastNeed)return t.toString(\"utf8\",e);this.lastTotal=r;var n=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,n),t.toString(\"utf8\",e,n)},a.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length}},{\"safe-buffer\":284}],301:[function(t,e,r){(function(r,n){(function(){var r=t(\"assert\"),i=t(\"debug\")(\"stream-parser\");e.exports=function(t){var e=t&&\"function\"==typeof t._transform,r=t&&\"function\"==typeof t._write;if(!e&&!r)throw new Error(\"must pass a Writable or Transform stream in\");i(\"extending Parser into stream\"),t._bytes=o,t._skipBytes=s,e&&(t._passthrough=l);e?t._transform=u:t._write=c};function a(t){i(\"initializing parser stream\"),t._parserBytesLeft=0,t._parserBuffers=[],t._parserBuffered=0,t._parserState=-1,t._parserCallback=null,\"function\"==typeof t.push&&(t._parserOutput=t.push.bind(t)),t._parserInit=!0}function o(t,e){r(!this._parserCallback,'there is already a \"callback\" set!'),r(isFinite(t)&&t>0,'can only buffer a finite number of bytes > 0, got \"'+t+'\"'),this._parserInit||a(this),i(\"buffering %o bytes\",t),this._parserBytesLeft=t,this._parserCallback=e,this._parserState=0}function s(t,e){r(!this._parserCallback,'there is already a \"callback\" set!'),r(t>0,'can only skip > 0 bytes, got \"'+t+'\"'),this._parserInit||a(this),i(\"skipping %o bytes\",t),this._parserBytesLeft=t,this._parserCallback=e,this._parserState=1}function l(t,e){r(!this._parserCallback,'There is already a \"callback\" set!'),r(t>0,'can only pass through > 0 bytes, got \"'+t+'\"'),this._parserInit||a(this),i(\"passing through %o bytes\",t),this._parserBytesLeft=t,this._parserCallback=e,this._parserState=2}function c(t,e,r){this._parserInit||a(this),i(\"write(%o bytes)\",t.length),\"function\"==typeof e&&(r=e),h(this,t,null,r)}function u(t,e,r){this._parserInit||a(this),i(\"transform(%o bytes)\",t.length),\"function\"!=typeof e&&(e=this._parserOutput),h(this,t,e,r)}function f(t,e,r,a){if(t._parserBytesLeft-=e.length,i(\"%o bytes left for stream piece\",t._parserBytesLeft),0===t._parserState?(t._parserBuffers.push(e),t._parserBuffered+=e.length):2===t._parserState&&r(e),0!==t._parserBytesLeft)return a;var o=t._parserCallback;if(o&&0===t._parserState&&t._parserBuffers.length>1&&(e=n.concat(t._parserBuffers,t._parserBuffered)),0!==t._parserState&&(e=null),t._parserCallback=null,t._parserBuffered=0,t._parserState=-1,t._parserBuffers.splice(0),o){var s=[];e&&s.push(e),r&&s.push(r);var l=o.length>s.length;l&&s.push(p(a));var c=o.apply(t,s);if(!l||a===c)return a}}var h=p((function t(e,r,n,i){return e._parserBytesLeft<=0?i(new Error(\"got data but not currently parsing anything\")):r.length<=e._parserBytesLeft?function(){return f(e,r,n,i)}:function(){var a=r.slice(0,e._parserBytesLeft);return f(e,a,n,(function(o){return o?i(o):r.length>a.length?function(){return t(e,r.slice(a.length),n,i)}:void 0}))}}));function p(t){return function(){for(var e=t.apply(this,arguments);\"function\"==typeof e;)e=e();return e}}}).call(this)}).call(this,t(\"_process\"),t(\"buffer\").Buffer)},{_process:277,assert:75,buffer:85,debug:302}],302:[function(t,e,r){(function(n){(function(){function i(){var t;try{t=r.storage.debug}catch(t){}return!t&&void 0!==n&&\"env\"in n&&(t=n.env.DEBUG),t}(r=e.exports=t(\"./debug\")).log=function(){return\"object\"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)},r.formatArgs=function(t){var e=this.useColors;if(t[0]=(e?\"%c\":\"\")+this.namespace+(e?\" %c\":\" \")+t[0]+(e?\"%c \":\" \")+\"+\"+r.humanize(this.diff),!e)return;var n=\"color: \"+this.color;t.splice(1,0,n,\"color: inherit\");var i=0,a=0;t[0].replace(/%[a-zA-Z%]/g,(function(t){\"%%\"!==t&&(i++,\"%c\"===t&&(a=i))})),t.splice(a,0,n)},r.save=function(t){try{null==t?r.storage.removeItem(\"debug\"):r.storage.debug=t}catch(t){}},r.load=i,r.useColors=function(){if(\"undefined\"!=typeof window&&window.process&&\"renderer\"===window.process.type)return!0;return\"undefined\"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||\"undefined\"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||\"undefined\"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)&&parseInt(RegExp.$1,10)>=31||\"undefined\"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/)},r.storage=\"undefined\"!=typeof chrome&&void 0!==chrome.storage?chrome.storage.local:function(){try{return window.localStorage}catch(t){}}(),r.colors=[\"lightseagreen\",\"forestgreen\",\"goldenrod\",\"dodgerblue\",\"darkorchid\",\"crimson\"],r.formatters.j=function(t){try{return JSON.stringify(t)}catch(t){return\"[UnexpectedJSONParseError]: \"+t.message}},r.enable(i())}).call(this)}).call(this,t(\"_process\"))},{\"./debug\":303,_process:277}],303:[function(t,e,r){var n;function i(t){function e(){if(e.enabled){var t=e,i=+new Date,a=i-(n||i);t.diff=a,t.prev=n,t.curr=i,n=i;for(var o=new Array(arguments.length),s=0;s0)return function(t){if((t=String(t)).length>100)return;var e=/^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(t);if(!e)return;var r=parseFloat(e[1]);switch((e[2]||\"ms\").toLowerCase()){case\"years\":case\"year\":case\"yrs\":case\"yr\":case\"y\":return 315576e5*r;case\"days\":case\"day\":case\"d\":return r*o;case\"hours\":case\"hour\":case\"hrs\":case\"hr\":case\"h\":return r*a;case\"minutes\":case\"minute\":case\"mins\":case\"min\":case\"m\":return r*i;case\"seconds\":case\"second\":case\"secs\":case\"sec\":case\"s\":return r*n;case\"milliseconds\":case\"millisecond\":case\"msecs\":case\"msec\":case\"ms\":return r;default:return}}(t);if(\"number\"===l&&!1===isNaN(t))return e.long?s(r=t,o,\"day\")||s(r,a,\"hour\")||s(r,i,\"minute\")||s(r,n,\"second\")||r+\" ms\":function(t){if(t>=o)return Math.round(t/o)+\"d\";if(t>=a)return Math.round(t/a)+\"h\";if(t>=i)return Math.round(t/i)+\"m\";if(t>=n)return Math.round(t/n)+\"s\";return t+\"ms\"}(t);throw new Error(\"val is not a non-empty string or a valid number. val=\"+JSON.stringify(t))}},{}],305:[function(t,e,r){\"use strict\";var n=t(\"parenthesis\");e.exports=function(t,e,r){if(null==t)throw Error(\"First argument should be a string\");if(null==e)throw Error(\"Separator should be a string or a RegExp\");r?(\"string\"==typeof r||Array.isArray(r))&&(r={ignore:r}):r={},null==r.escape&&(r.escape=!0),null==r.ignore?r.ignore=[\"[]\",\"()\",\"{}\",\"<>\",'\"\"',\"''\",\"``\",\"\\u201c\\u201d\",\"\\xab\\xbb\"]:(\"string\"==typeof r.ignore&&(r.ignore=[r.ignore]),r.ignore=r.ignore.map((function(t){return 1===t.length&&(t+=t),t})));var i=n.parse(t,{flat:!0,brackets:r.ignore}),a=i[0].split(e);if(r.escape){for(var o=[],s=0;s0;){e=c[c.length-1];var p=t[e];if(a[e]=0&&s[e].push(o[g])}a[e]=d}else{if(n[e]===r[e]){var m=[],v=[],y=0;for(d=l.length-1;d>=0;--d){var x=l[d];if(i[x]=!1,m.push(x),v.push(s[x]),y+=s[x].length,o[x]=f.length,x===e){l.length=d;break}}f.push(m);var b=new Array(y);for(d=0;d1&&(i=1),i<-1&&(i=-1),(t*n-e*r<0?-1:1)*Math.acos(i)};r.default=function(t){var e=t.px,r=t.py,l=t.cx,c=t.cy,u=t.rx,f=t.ry,h=t.xAxisRotation,p=void 0===h?0:h,d=t.largeArcFlag,g=void 0===d?0:d,m=t.sweepFlag,v=void 0===m?0:m,y=[];if(0===u||0===f)return[];var x=Math.sin(p*i/360),b=Math.cos(p*i/360),_=b*(e-l)/2+x*(r-c)/2,w=-x*(e-l)/2+b*(r-c)/2;if(0===_&&0===w)return[];u=Math.abs(u),f=Math.abs(f);var T=Math.pow(_,2)/Math.pow(u,2)+Math.pow(w,2)/Math.pow(f,2);T>1&&(u*=Math.sqrt(T),f*=Math.sqrt(T));var k=function(t,e,r,n,a,o,l,c,u,f,h,p){var d=Math.pow(a,2),g=Math.pow(o,2),m=Math.pow(h,2),v=Math.pow(p,2),y=d*g-d*v-g*m;y<0&&(y=0),y/=d*v+g*m;var x=(y=Math.sqrt(y)*(l===c?-1:1))*a/o*p,b=y*-o/a*h,_=f*x-u*b+(t+r)/2,w=u*x+f*b+(e+n)/2,T=(h-x)/a,k=(p-b)/o,A=(-h-x)/a,M=(-p-b)/o,S=s(1,0,T,k),E=s(T,k,A,M);return 0===c&&E>0&&(E-=i),1===c&&E<0&&(E+=i),[_,w,S,E]}(e,r,l,c,u,f,g,v,x,b,_,w),A=n(k,4),M=A[0],S=A[1],E=A[2],L=A[3],C=Math.abs(L)/(i/4);Math.abs(1-C)<1e-7&&(C=1);var P=Math.max(Math.ceil(C),1);L/=P;for(var I=0;Ie[2]&&(e[2]=c[u+0]),c[u+1]>e[3]&&(e[3]=c[u+1]);return e}},{\"abs-svg-path\":70,assert:75,\"is-svg-path\":238,\"normalize-svg-path\":309,\"parse-svg-path\":250}],309:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e,r=[],o=0,s=0,l=0,c=0,u=null,f=null,h=0,p=0,d=0,g=t.length;d4?(o=m[m.length-4],s=m[m.length-3]):(o=h,s=p),r.push(m)}return r};var n=t(\"svg-arc-to-cubic-bezier\");function i(t,e,r,n){return[\"C\",t,e,r,n,r,n]}function a(t,e,r,n,i,a){return[\"C\",t/3+2/3*r,e/3+2/3*n,i/3+2/3*r,a/3+2/3*n,i,a]}},{\"svg-arc-to-cubic-bezier\":307}],310:[function(t,e,r){\"use strict\";var n,i=t(\"svg-path-bounds\"),a=t(\"parse-svg-path\"),o=t(\"draw-svg-path\"),s=t(\"is-svg-path\"),l=t(\"bitmap-sdf\"),c=document.createElement(\"canvas\"),u=c.getContext(\"2d\");e.exports=function(t,e){if(!s(t))throw Error(\"Argument should be valid svg path string\");e||(e={});var r,f;e.shape?(r=e.shape[0],f=e.shape[1]):(r=c.width=e.w||e.width||200,f=c.height=e.h||e.height||200);var h=Math.min(r,f),p=e.stroke||0,d=e.viewbox||e.viewBox||i(t),g=[r/(d[2]-d[0]),f/(d[3]-d[1])],m=Math.min(g[0]||0,g[1]||0)/2;u.fillStyle=\"black\",u.fillRect(0,0,r,f),u.fillStyle=\"white\",p&&(\"number\"!=typeof p&&(p=1),u.strokeStyle=p>0?\"white\":\"black\",u.lineWidth=Math.abs(p));if(u.translate(.5*r,.5*f),u.scale(m,m),function(){if(null!=n)return n;var t=document.createElement(\"canvas\").getContext(\"2d\");if(t.canvas.width=t.canvas.height=1,!window.Path2D)return n=!1;var e=new Path2D(\"M0,0h1v1h-1v-1Z\");t.fillStyle=\"black\",t.fill(e);var r=t.getImageData(0,0,1,1);return n=r&&r.data&&255===r.data[3]}()){var v=new Path2D(t);u.fill(v),p&&u.stroke(v)}else{var y=a(t);o(u,y),u.fill(),p&&u.stroke()}return u.setTransform(1,0,0,1,0,0),l(u,{cutoff:null!=e.cutoff?e.cutoff:.5,radius:null!=e.radius?e.radius:.5*h})}},{\"bitmap-sdf\":82,\"draw-svg-path\":126,\"is-svg-path\":238,\"parse-svg-path\":250,\"svg-path-bounds\":308}],311:[function(t,e,r){(function(e,n){(function(){var i=t(\"process/browser.js\").nextTick,a=Function.prototype.apply,o=Array.prototype.slice,s={},l=0;function c(t,e){this._id=t,this._clearFn=e}r.setTimeout=function(){return new c(a.call(setTimeout,window,arguments),clearTimeout)},r.setInterval=function(){return new c(a.call(setInterval,window,arguments),clearInterval)},r.clearTimeout=r.clearInterval=function(t){t.close()},c.prototype.unref=c.prototype.ref=function(){},c.prototype.close=function(){this._clearFn.call(window,this._id)},r.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},r.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},r._unrefActive=r.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout((function(){t._onTimeout&&t._onTimeout()}),e))},r.setImmediate=\"function\"==typeof e?e:function(t){var e=l++,n=!(arguments.length<2)&&o.call(arguments,1);return s[e]=!0,i((function(){s[e]&&(n?t.apply(null,n):t.call(null),r.clearImmediate(e))})),e},r.clearImmediate=\"function\"==typeof n?n:function(t){delete s[t]}}).call(this)}).call(this,t(\"timers\").setImmediate,t(\"timers\").clearImmediate)},{\"process/browser.js\":277,timers:311}],312:[function(t,e,r){!function(t){var r=/^\\s+/,n=/\\s+$/,i=0,a=t.round,o=t.min,s=t.max,l=t.random;function c(e,l){if(l=l||{},(e=e||\"\")instanceof c)return e;if(!(this instanceof c))return new c(e,l);var u=function(e){var i={r:0,g:0,b:0},a=1,l=null,c=null,u=null,f=!1,h=!1;\"string\"==typeof e&&(e=function(t){t=t.replace(r,\"\").replace(n,\"\").toLowerCase();var e,i=!1;if(S[t])t=S[t],i=!0;else if(\"transparent\"==t)return{r:0,g:0,b:0,a:0,format:\"name\"};if(e=j.rgb.exec(t))return{r:e[1],g:e[2],b:e[3]};if(e=j.rgba.exec(t))return{r:e[1],g:e[2],b:e[3],a:e[4]};if(e=j.hsl.exec(t))return{h:e[1],s:e[2],l:e[3]};if(e=j.hsla.exec(t))return{h:e[1],s:e[2],l:e[3],a:e[4]};if(e=j.hsv.exec(t))return{h:e[1],s:e[2],v:e[3]};if(e=j.hsva.exec(t))return{h:e[1],s:e[2],v:e[3],a:e[4]};if(e=j.hex8.exec(t))return{r:I(e[1]),g:I(e[2]),b:I(e[3]),a:R(e[4]),format:i?\"name\":\"hex8\"};if(e=j.hex6.exec(t))return{r:I(e[1]),g:I(e[2]),b:I(e[3]),format:i?\"name\":\"hex\"};if(e=j.hex4.exec(t))return{r:I(e[1]+\"\"+e[1]),g:I(e[2]+\"\"+e[2]),b:I(e[3]+\"\"+e[3]),a:R(e[4]+\"\"+e[4]),format:i?\"name\":\"hex8\"};if(e=j.hex3.exec(t))return{r:I(e[1]+\"\"+e[1]),g:I(e[2]+\"\"+e[2]),b:I(e[3]+\"\"+e[3]),format:i?\"name\":\"hex\"};return!1}(e));\"object\"==typeof e&&(U(e.r)&&U(e.g)&&U(e.b)?(p=e.r,d=e.g,g=e.b,i={r:255*C(p,255),g:255*C(d,255),b:255*C(g,255)},f=!0,h=\"%\"===String(e.r).substr(-1)?\"prgb\":\"rgb\"):U(e.h)&&U(e.s)&&U(e.v)?(l=z(e.s),c=z(e.v),i=function(e,r,n){e=6*C(e,360),r=C(r,100),n=C(n,100);var i=t.floor(e),a=e-i,o=n*(1-r),s=n*(1-a*r),l=n*(1-(1-a)*r),c=i%6;return{r:255*[n,s,o,o,l,n][c],g:255*[l,n,n,s,o,o][c],b:255*[o,o,l,n,n,s][c]}}(e.h,l,c),f=!0,h=\"hsv\"):U(e.h)&&U(e.s)&&U(e.l)&&(l=z(e.s),u=z(e.l),i=function(t,e,r){var n,i,a;function o(t,e,r){return r<0&&(r+=1),r>1&&(r-=1),r<1/6?t+6*(e-t)*r:r<.5?e:r<2/3?t+(e-t)*(2/3-r)*6:t}if(t=C(t,360),e=C(e,100),r=C(r,100),0===e)n=i=a=r;else{var s=r<.5?r*(1+e):r+e-r*e,l=2*r-s;n=o(l,s,t+1/3),i=o(l,s,t),a=o(l,s,t-1/3)}return{r:255*n,g:255*i,b:255*a}}(e.h,l,u),f=!0,h=\"hsl\"),e.hasOwnProperty(\"a\")&&(a=e.a));var p,d,g;return a=L(a),{ok:f,format:e.format||h,r:o(255,s(i.r,0)),g:o(255,s(i.g,0)),b:o(255,s(i.b,0)),a:a}}(e);this._originalInput=e,this._r=u.r,this._g=u.g,this._b=u.b,this._a=u.a,this._roundA=a(100*this._a)/100,this._format=l.format||u.format,this._gradientType=l.gradientType,this._r<1&&(this._r=a(this._r)),this._g<1&&(this._g=a(this._g)),this._b<1&&(this._b=a(this._b)),this._ok=u.ok,this._tc_id=i++}function u(t,e,r){t=C(t,255),e=C(e,255),r=C(r,255);var n,i,a=s(t,e,r),l=o(t,e,r),c=(a+l)/2;if(a==l)n=i=0;else{var u=a-l;switch(i=c>.5?u/(2-a-l):u/(a+l),a){case t:n=(e-r)/u+(e>1)+720)%360;--e;)n.h=(n.h+i)%360,a.push(c(n));return a}function M(t,e){e=e||6;for(var r=c(t).toHsv(),n=r.h,i=r.s,a=r.v,o=[],s=1/e;e--;)o.push(c({h:n,s:i,v:a})),a=(a+s)%1;return o}c.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var t=this.toRgb();return(299*t.r+587*t.g+114*t.b)/1e3},getLuminance:function(){var e,r,n,i=this.toRgb();return e=i.r/255,r=i.g/255,n=i.b/255,.2126*(e<=.03928?e/12.92:t.pow((e+.055)/1.055,2.4))+.7152*(r<=.03928?r/12.92:t.pow((r+.055)/1.055,2.4))+.0722*(n<=.03928?n/12.92:t.pow((n+.055)/1.055,2.4))},setAlpha:function(t){return this._a=L(t),this._roundA=a(100*this._a)/100,this},toHsv:function(){var t=f(this._r,this._g,this._b);return{h:360*t.h,s:t.s,v:t.v,a:this._a}},toHsvString:function(){var t=f(this._r,this._g,this._b),e=a(360*t.h),r=a(100*t.s),n=a(100*t.v);return 1==this._a?\"hsv(\"+e+\", \"+r+\"%, \"+n+\"%)\":\"hsva(\"+e+\", \"+r+\"%, \"+n+\"%, \"+this._roundA+\")\"},toHsl:function(){var t=u(this._r,this._g,this._b);return{h:360*t.h,s:t.s,l:t.l,a:this._a}},toHslString:function(){var t=u(this._r,this._g,this._b),e=a(360*t.h),r=a(100*t.s),n=a(100*t.l);return 1==this._a?\"hsl(\"+e+\", \"+r+\"%, \"+n+\"%)\":\"hsla(\"+e+\", \"+r+\"%, \"+n+\"%, \"+this._roundA+\")\"},toHex:function(t){return h(this._r,this._g,this._b,t)},toHexString:function(t){return\"#\"+this.toHex(t)},toHex8:function(t){return function(t,e,r,n,i){var o=[O(a(t).toString(16)),O(a(e).toString(16)),O(a(r).toString(16)),O(D(n))];if(i&&o[0].charAt(0)==o[0].charAt(1)&&o[1].charAt(0)==o[1].charAt(1)&&o[2].charAt(0)==o[2].charAt(1)&&o[3].charAt(0)==o[3].charAt(1))return o[0].charAt(0)+o[1].charAt(0)+o[2].charAt(0)+o[3].charAt(0);return o.join(\"\")}(this._r,this._g,this._b,this._a,t)},toHex8String:function(t){return\"#\"+this.toHex8(t)},toRgb:function(){return{r:a(this._r),g:a(this._g),b:a(this._b),a:this._a}},toRgbString:function(){return 1==this._a?\"rgb(\"+a(this._r)+\", \"+a(this._g)+\", \"+a(this._b)+\")\":\"rgba(\"+a(this._r)+\", \"+a(this._g)+\", \"+a(this._b)+\", \"+this._roundA+\")\"},toPercentageRgb:function(){return{r:a(100*C(this._r,255))+\"%\",g:a(100*C(this._g,255))+\"%\",b:a(100*C(this._b,255))+\"%\",a:this._a}},toPercentageRgbString:function(){return 1==this._a?\"rgb(\"+a(100*C(this._r,255))+\"%, \"+a(100*C(this._g,255))+\"%, \"+a(100*C(this._b,255))+\"%)\":\"rgba(\"+a(100*C(this._r,255))+\"%, \"+a(100*C(this._g,255))+\"%, \"+a(100*C(this._b,255))+\"%, \"+this._roundA+\")\"},toName:function(){return 0===this._a?\"transparent\":!(this._a<1)&&(E[h(this._r,this._g,this._b,!0)]||!1)},toFilter:function(t){var e=\"#\"+p(this._r,this._g,this._b,this._a),r=e,n=this._gradientType?\"GradientType = 1, \":\"\";if(t){var i=c(t);r=\"#\"+p(i._r,i._g,i._b,i._a)}return\"progid:DXImageTransform.Microsoft.gradient(\"+n+\"startColorstr=\"+e+\",endColorstr=\"+r+\")\"},toString:function(t){var e=!!t;t=t||this._format;var r=!1,n=this._a<1&&this._a>=0;return e||!n||\"hex\"!==t&&\"hex6\"!==t&&\"hex3\"!==t&&\"hex4\"!==t&&\"hex8\"!==t&&\"name\"!==t?(\"rgb\"===t&&(r=this.toRgbString()),\"prgb\"===t&&(r=this.toPercentageRgbString()),\"hex\"!==t&&\"hex6\"!==t||(r=this.toHexString()),\"hex3\"===t&&(r=this.toHexString(!0)),\"hex4\"===t&&(r=this.toHex8String(!0)),\"hex8\"===t&&(r=this.toHex8String()),\"name\"===t&&(r=this.toName()),\"hsl\"===t&&(r=this.toHslString()),\"hsv\"===t&&(r=this.toHsvString()),r||this.toHexString()):\"name\"===t&&0===this._a?this.toName():this.toRgbString()},clone:function(){return c(this.toString())},_applyModification:function(t,e){var r=t.apply(null,[this].concat([].slice.call(e)));return this._r=r._r,this._g=r._g,this._b=r._b,this.setAlpha(r._a),this},lighten:function(){return this._applyModification(v,arguments)},brighten:function(){return this._applyModification(y,arguments)},darken:function(){return this._applyModification(x,arguments)},desaturate:function(){return this._applyModification(d,arguments)},saturate:function(){return this._applyModification(g,arguments)},greyscale:function(){return this._applyModification(m,arguments)},spin:function(){return this._applyModification(b,arguments)},_applyCombination:function(t,e){return t.apply(null,[this].concat([].slice.call(e)))},analogous:function(){return this._applyCombination(A,arguments)},complement:function(){return this._applyCombination(_,arguments)},monochromatic:function(){return this._applyCombination(M,arguments)},splitcomplement:function(){return this._applyCombination(k,arguments)},triad:function(){return this._applyCombination(w,arguments)},tetrad:function(){return this._applyCombination(T,arguments)}},c.fromRatio=function(t,e){if(\"object\"==typeof t){var r={};for(var n in t)t.hasOwnProperty(n)&&(r[n]=\"a\"===n?t[n]:z(t[n]));t=r}return c(t,e)},c.equals=function(t,e){return!(!t||!e)&&c(t).toRgbString()==c(e).toRgbString()},c.random=function(){return c.fromRatio({r:l(),g:l(),b:l()})},c.mix=function(t,e,r){r=0===r?0:r||50;var n=c(t).toRgb(),i=c(e).toRgb(),a=r/100;return c({r:(i.r-n.r)*a+n.r,g:(i.g-n.g)*a+n.g,b:(i.b-n.b)*a+n.b,a:(i.a-n.a)*a+n.a})},c.readability=function(e,r){var n=c(e),i=c(r);return(t.max(n.getLuminance(),i.getLuminance())+.05)/(t.min(n.getLuminance(),i.getLuminance())+.05)},c.isReadable=function(t,e,r){var n,i,a=c.readability(t,e);switch(i=!1,(n=function(t){var e,r;e=((t=t||{level:\"AA\",size:\"small\"}).level||\"AA\").toUpperCase(),r=(t.size||\"small\").toLowerCase(),\"AA\"!==e&&\"AAA\"!==e&&(e=\"AA\");\"small\"!==r&&\"large\"!==r&&(r=\"small\");return{level:e,size:r}}(r)).level+n.size){case\"AAsmall\":case\"AAAlarge\":i=a>=4.5;break;case\"AAlarge\":i=a>=3;break;case\"AAAsmall\":i=a>=7}return i},c.mostReadable=function(t,e,r){var n,i,a,o,s=null,l=0;i=(r=r||{}).includeFallbackColors,a=r.level,o=r.size;for(var u=0;ul&&(l=n,s=c(e[u]));return c.isReadable(t,s,{level:a,size:o})||!i?s:(r.includeFallbackColors=!1,c.mostReadable(t,[\"#fff\",\"#000\"],r))};var S=c.names={aliceblue:\"f0f8ff\",antiquewhite:\"faebd7\",aqua:\"0ff\",aquamarine:\"7fffd4\",azure:\"f0ffff\",beige:\"f5f5dc\",bisque:\"ffe4c4\",black:\"000\",blanchedalmond:\"ffebcd\",blue:\"00f\",blueviolet:\"8a2be2\",brown:\"a52a2a\",burlywood:\"deb887\",burntsienna:\"ea7e5d\",cadetblue:\"5f9ea0\",chartreuse:\"7fff00\",chocolate:\"d2691e\",coral:\"ff7f50\",cornflowerblue:\"6495ed\",cornsilk:\"fff8dc\",crimson:\"dc143c\",cyan:\"0ff\",darkblue:\"00008b\",darkcyan:\"008b8b\",darkgoldenrod:\"b8860b\",darkgray:\"a9a9a9\",darkgreen:\"006400\",darkgrey:\"a9a9a9\",darkkhaki:\"bdb76b\",darkmagenta:\"8b008b\",darkolivegreen:\"556b2f\",darkorange:\"ff8c00\",darkorchid:\"9932cc\",darkred:\"8b0000\",darksalmon:\"e9967a\",darkseagreen:\"8fbc8f\",darkslateblue:\"483d8b\",darkslategray:\"2f4f4f\",darkslategrey:\"2f4f4f\",darkturquoise:\"00ced1\",darkviolet:\"9400d3\",deeppink:\"ff1493\",deepskyblue:\"00bfff\",dimgray:\"696969\",dimgrey:\"696969\",dodgerblue:\"1e90ff\",firebrick:\"b22222\",floralwhite:\"fffaf0\",forestgreen:\"228b22\",fuchsia:\"f0f\",gainsboro:\"dcdcdc\",ghostwhite:\"f8f8ff\",gold:\"ffd700\",goldenrod:\"daa520\",gray:\"808080\",green:\"008000\",greenyellow:\"adff2f\",grey:\"808080\",honeydew:\"f0fff0\",hotpink:\"ff69b4\",indianred:\"cd5c5c\",indigo:\"4b0082\",ivory:\"fffff0\",khaki:\"f0e68c\",lavender:\"e6e6fa\",lavenderblush:\"fff0f5\",lawngreen:\"7cfc00\",lemonchiffon:\"fffacd\",lightblue:\"add8e6\",lightcoral:\"f08080\",lightcyan:\"e0ffff\",lightgoldenrodyellow:\"fafad2\",lightgray:\"d3d3d3\",lightgreen:\"90ee90\",lightgrey:\"d3d3d3\",lightpink:\"ffb6c1\",lightsalmon:\"ffa07a\",lightseagreen:\"20b2aa\",lightskyblue:\"87cefa\",lightslategray:\"789\",lightslategrey:\"789\",lightsteelblue:\"b0c4de\",lightyellow:\"ffffe0\",lime:\"0f0\",limegreen:\"32cd32\",linen:\"faf0e6\",magenta:\"f0f\",maroon:\"800000\",mediumaquamarine:\"66cdaa\",mediumblue:\"0000cd\",mediumorchid:\"ba55d3\",mediumpurple:\"9370db\",mediumseagreen:\"3cb371\",mediumslateblue:\"7b68ee\",mediumspringgreen:\"00fa9a\",mediumturquoise:\"48d1cc\",mediumvioletred:\"c71585\",midnightblue:\"191970\",mintcream:\"f5fffa\",mistyrose:\"ffe4e1\",moccasin:\"ffe4b5\",navajowhite:\"ffdead\",navy:\"000080\",oldlace:\"fdf5e6\",olive:\"808000\",olivedrab:\"6b8e23\",orange:\"ffa500\",orangered:\"ff4500\",orchid:\"da70d6\",palegoldenrod:\"eee8aa\",palegreen:\"98fb98\",paleturquoise:\"afeeee\",palevioletred:\"db7093\",papayawhip:\"ffefd5\",peachpuff:\"ffdab9\",peru:\"cd853f\",pink:\"ffc0cb\",plum:\"dda0dd\",powderblue:\"b0e0e6\",purple:\"800080\",rebeccapurple:\"663399\",red:\"f00\",rosybrown:\"bc8f8f\",royalblue:\"4169e1\",saddlebrown:\"8b4513\",salmon:\"fa8072\",sandybrown:\"f4a460\",seagreen:\"2e8b57\",seashell:\"fff5ee\",sienna:\"a0522d\",silver:\"c0c0c0\",skyblue:\"87ceeb\",slateblue:\"6a5acd\",slategray:\"708090\",slategrey:\"708090\",snow:\"fffafa\",springgreen:\"00ff7f\",steelblue:\"4682b4\",tan:\"d2b48c\",teal:\"008080\",thistle:\"d8bfd8\",tomato:\"ff6347\",turquoise:\"40e0d0\",violet:\"ee82ee\",wheat:\"f5deb3\",white:\"fff\",whitesmoke:\"f5f5f5\",yellow:\"ff0\",yellowgreen:\"9acd32\"},E=c.hexNames=function(t){var e={};for(var r in t)t.hasOwnProperty(r)&&(e[t[r]]=r);return e}(S);function L(t){return t=parseFloat(t),(isNaN(t)||t<0||t>1)&&(t=1),t}function C(e,r){(function(t){return\"string\"==typeof t&&-1!=t.indexOf(\".\")&&1===parseFloat(t)})(e)&&(e=\"100%\");var n=function(t){return\"string\"==typeof t&&-1!=t.indexOf(\"%\")}(e);return e=o(r,s(0,parseFloat(e))),n&&(e=parseInt(e*r,10)/100),t.abs(e-r)<1e-6?1:e%r/parseFloat(r)}function P(t){return o(1,s(0,t))}function I(t){return parseInt(t,16)}function O(t){return 1==t.length?\"0\"+t:\"\"+t}function z(t){return t<=1&&(t=100*t+\"%\"),t}function D(e){return t.round(255*parseFloat(e)).toString(16)}function R(t){return I(t)/255}var F,B,N,j=(B=\"[\\\\s|\\\\(]+(\"+(F=\"(?:[-\\\\+]?\\\\d*\\\\.\\\\d+%?)|(?:[-\\\\+]?\\\\d+%?)\")+\")[,|\\\\s]+(\"+F+\")[,|\\\\s]+(\"+F+\")\\\\s*\\\\)?\",N=\"[\\\\s|\\\\(]+(\"+F+\")[,|\\\\s]+(\"+F+\")[,|\\\\s]+(\"+F+\")[,|\\\\s]+(\"+F+\")\\\\s*\\\\)?\",{CSS_UNIT:new RegExp(F),rgb:new RegExp(\"rgb\"+B),rgba:new RegExp(\"rgba\"+N),hsl:new RegExp(\"hsl\"+B),hsla:new RegExp(\"hsla\"+N),hsv:new RegExp(\"hsv\"+B),hsva:new RegExp(\"hsva\"+N),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/});function U(t){return!!j.CSS_UNIT.exec(t)}void 0!==e&&e.exports?e.exports=c:window.tinycolor=c}(Math)},{}],313:[function(t,e,r){\"use strict\";e.exports=i,e.exports.float32=e.exports.float=i,e.exports.fract32=e.exports.fract=function(t,e){if(t.length){if(t instanceof Float32Array)return new Float32Array(t.length);e instanceof Float32Array||(e=i(t));for(var r=0,n=e.length;ro&&(o=t[0]),t[1]s&&(s=t[1])}function c(t){switch(t.type){case\"GeometryCollection\":t.geometries.forEach(c);break;case\"Point\":l(t.coordinates);break;case\"MultiPoint\":t.coordinates.forEach(l)}}for(e in t.arcs.forEach((function(t){for(var e,r=-1,l=t.length;++ro&&(o=e[0]),e[1]s&&(s=e[1])})),t.objects)c(t.objects[e]);return[i,a,o,s]}function i(t,e){var r=e.id,n=e.bbox,i=null==e.properties?{}:e.properties,o=a(t,e);return null==r&&null==n?{type:\"Feature\",properties:i,geometry:o}:null==n?{type:\"Feature\",id:r,properties:i,geometry:o}:{type:\"Feature\",id:r,bbox:n,properties:i,geometry:o}}function a(t,e){var n=r(t.transform),i=t.arcs;function a(t,e){e.length&&e.pop();for(var r=i[t<0?~t:t],a=0,o=r.length;a1)n=l(t,e,r);else for(i=0,n=new Array(a=t.arcs.length);i1)for(var a,s,c=1,u=l(i[0]);cu&&(s=i[0],i[0]=i[c],i[c]=s,u=a);return i})).filter((function(t){return t.length>0}))}}function u(t,e){for(var r=0,n=t.length;r>>1;t[i]=2))throw new Error(\"n must be \\u22652\");var r,i=(l=t.bbox||n(t))[0],a=l[1],o=l[2],s=l[3];e={scale:[o-i?(o-i)/(r-1):1,s-a?(s-a)/(r-1):1],translate:[i,a]}}var l,c,u=f(e),h=t.objects,p={};function d(t){return u(t)}function g(t){var e;switch(t.type){case\"GeometryCollection\":e={type:\"GeometryCollection\",geometries:t.geometries.map(g)};break;case\"Point\":e={type:\"Point\",coordinates:d(t.coordinates)};break;case\"MultiPoint\":e={type:\"MultiPoint\",coordinates:t.coordinates.map(d)};break;default:return t}return null!=t.id&&(e.id=t.id),null!=t.bbox&&(e.bbox=t.bbox),null!=t.properties&&(e.properties=t.properties),e}for(c in h)p[c]=g(h[c]);return{type:\"Topology\",bbox:l,transform:e,objects:p,arcs:t.arcs.map((function(t){var e,r=0,n=1,i=t.length,a=new Array(i);for(a[0]=u(t[0],0);++r\":(e.length>100&&(e=e.slice(0,99)+\"\\u2026\"),e=e.replace(i,(function(t){switch(t){case\"\\n\":return\"\\\\n\";case\"\\r\":return\"\\\\r\";case\"\\u2028\":return\"\\\\u2028\";case\"\\u2029\":return\"\\\\u2029\";default:throw new Error(\"Unexpected character\")}})))}},{\"./safe-to-string\":318}],320:[function(t,e,r){\"use strict\";var n=t(\"../value/is\"),i={object:!0,function:!0,undefined:!0};e.exports=function(t){return!!n(t)&&hasOwnProperty.call(i,typeof t)}},{\"../value/is\":326}],321:[function(t,e,r){\"use strict\";var n=t(\"../lib/resolve-exception\"),i=t(\"./is\");e.exports=function(t){return i(t)?t:n(t,\"%v is not a plain function\",arguments[1])}},{\"../lib/resolve-exception\":317,\"./is\":322}],322:[function(t,e,r){\"use strict\";var n=t(\"../function/is\"),i=/^\\s*class[\\s{/}]/,a=Function.prototype.toString;e.exports=function(t){return!!n(t)&&!i.test(a.call(t))}},{\"../function/is\":316}],323:[function(t,e,r){\"use strict\";var n=t(\"../object/is\");e.exports=function(t){if(!n(t))return!1;try{return!!t.constructor&&t.constructor.prototype===t}catch(t){return!1}}},{\"../object/is\":320}],324:[function(t,e,r){\"use strict\";var n=t(\"../value/is\"),i=t(\"../object/is\"),a=Object.prototype.toString;e.exports=function(t){if(!n(t))return null;if(i(t)){var e=t.toString;if(\"function\"!=typeof e)return null;if(e===a)return null}try{return\"\"+t}catch(t){return null}}},{\"../object/is\":320,\"../value/is\":326}],325:[function(t,e,r){\"use strict\";var n=t(\"../lib/resolve-exception\"),i=t(\"./is\");e.exports=function(t){return i(t)?t:n(t,\"Cannot use %v\",arguments[1])}},{\"../lib/resolve-exception\":317,\"./is\":326}],326:[function(t,e,r){\"use strict\";e.exports=function(t){return null!=t}},{}],327:[function(t,e,r){(function(e){(function(){\"use strict\";var n=t(\"bit-twiddle\"),i=t(\"dup\"),a=t(\"buffer\").Buffer;e.__TYPEDARRAY_POOL||(e.__TYPEDARRAY_POOL={UINT8:i([32,0]),UINT16:i([32,0]),UINT32:i([32,0]),BIGUINT64:i([32,0]),INT8:i([32,0]),INT16:i([32,0]),INT32:i([32,0]),BIGINT64:i([32,0]),FLOAT:i([32,0]),DOUBLE:i([32,0]),DATA:i([32,0]),UINT8C:i([32,0]),BUFFER:i([32,0])});var o=\"undefined\"!=typeof Uint8ClampedArray,s=\"undefined\"!=typeof BigUint64Array,l=\"undefined\"!=typeof BigInt64Array,c=e.__TYPEDARRAY_POOL;c.UINT8C||(c.UINT8C=i([32,0])),c.BIGUINT64||(c.BIGUINT64=i([32,0])),c.BIGINT64||(c.BIGINT64=i([32,0])),c.BUFFER||(c.BUFFER=i([32,0]));var u=c.DATA,f=c.BUFFER;function h(t){if(t){var e=t.length||t.byteLength,r=n.log2(e);u[r].push(t)}}function p(t){t=n.nextPow2(t);var e=n.log2(t),r=u[e];return r.length>0?r.pop():new ArrayBuffer(t)}function d(t){return new Uint8Array(p(t),0,t)}function g(t){return new Uint16Array(p(2*t),0,t)}function m(t){return new Uint32Array(p(4*t),0,t)}function v(t){return new Int8Array(p(t),0,t)}function y(t){return new Int16Array(p(2*t),0,t)}function x(t){return new Int32Array(p(4*t),0,t)}function b(t){return new Float32Array(p(4*t),0,t)}function _(t){return new Float64Array(p(8*t),0,t)}function w(t){return o?new Uint8ClampedArray(p(t),0,t):d(t)}function T(t){return s?new BigUint64Array(p(8*t),0,t):null}function k(t){return l?new BigInt64Array(p(8*t),0,t):null}function A(t){return new DataView(p(t),0,t)}function M(t){t=n.nextPow2(t);var e=n.log2(t),r=f[e];return r.length>0?r.pop():new a(t)}r.free=function(t){if(a.isBuffer(t))f[n.log2(t.length)].push(t);else{if(\"[object ArrayBuffer]\"!==Object.prototype.toString.call(t)&&(t=t.buffer),!t)return;var e=t.length||t.byteLength,r=0|n.log2(e);u[r].push(t)}},r.freeUint8=r.freeUint16=r.freeUint32=r.freeBigUint64=r.freeInt8=r.freeInt16=r.freeInt32=r.freeBigInt64=r.freeFloat32=r.freeFloat=r.freeFloat64=r.freeDouble=r.freeUint8Clamped=r.freeDataView=function(t){h(t.buffer)},r.freeArrayBuffer=h,r.freeBuffer=function(t){f[n.log2(t.length)].push(t)},r.malloc=function(t,e){if(void 0===e||\"arraybuffer\"===e)return p(t);switch(e){case\"uint8\":return d(t);case\"uint16\":return g(t);case\"uint32\":return m(t);case\"int8\":return v(t);case\"int16\":return y(t);case\"int32\":return x(t);case\"float\":case\"float32\":return b(t);case\"double\":case\"float64\":return _(t);case\"uint8_clamped\":return w(t);case\"bigint64\":return k(t);case\"biguint64\":return T(t);case\"buffer\":return M(t);case\"data\":case\"dataview\":return A(t);default:return null}return null},r.mallocArrayBuffer=p,r.mallocUint8=d,r.mallocUint16=g,r.mallocUint32=m,r.mallocInt8=v,r.mallocInt16=y,r.mallocInt32=x,r.mallocFloat32=r.mallocFloat=b,r.mallocFloat64=r.mallocDouble=_,r.mallocUint8Clamped=w,r.mallocBigUint64=T,r.mallocBigInt64=k,r.mallocDataView=A,r.mallocBuffer=M,r.clearCache=function(){for(var t=0;t<32;++t)c.UINT8[t].length=0,c.UINT16[t].length=0,c.UINT32[t].length=0,c.INT8[t].length=0,c.INT16[t].length=0,c.INT32[t].length=0,c.FLOAT[t].length=0,c.DOUBLE[t].length=0,c.BIGUINT64[t].length=0,c.BIGINT64[t].length=0,c.UINT8C[t].length=0,u[t].length=0,f[t].length=0}}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"bit-twiddle\":81,buffer:85,dup:128}],328:[function(t,e,r){var n=/[\\'\\\"]/;e.exports=function(t){return t?(n.test(t.charAt(0))&&(t=t.substr(1)),n.test(t.charAt(t.length-1))&&(t=t.substr(0,t.length-1)),t):\"\"}},{}],329:[function(t,e,r){\"use strict\";e.exports=function(t,e,r){Array.isArray(r)||(r=[].slice.call(arguments,2));for(var n=0,i=r.length;n2111)throw e.replace(/\\{0\\}/,this.local.name);return t},toMonthIndex:function(t,e,r){var i=this.intercalaryMonth(t);if(r&&e!==i||e<1||e>12)throw n.local.invalidMonth.replace(/\\{0\\}/,this.local.name);return i?!r&&e<=i?e-1:e:e-1},toChineseMonth:function(t,e){t.year&&(e=(t=t.year()).month());var r=this.intercalaryMonth(t);if(e<0||e>(r?12:11))throw n.local.invalidMonth.replace(/\\{0\\}/,this.local.name);return r?e>13},isIntercalaryMonth:function(t,e){t.year&&(e=(t=t.year()).month());var r=this.intercalaryMonth(t);return!!r&&r===e},leap year:function(t){return 0!==this.intercalaryMonth(t)},weekOfYear:function(t,e,r){var i,o=this._validateYear(t,n.local.invalidyear),s=h[o-h[0]],l=s>>9&4095,c=s>>5&15,u=31&s;(i=a.newDate(l,c,u)).add(4-(i.dayOfWeek()||7),\"d\");var f=this.toJD(t,e,r)-i.toJD();return 1+Math.floor(f/7)},monthsInYear:function(t){return this.leap year(t)?13:12},daysInMonth:function(t,e){t.year&&(e=t.month(),t=t.year()),t=this._validateYear(t);var r=f[t-f[0]];if(e>(r>>13?12:11))throw n.local.invalidMonth.replace(/\\{0\\}/,this.local.name);return r&1<<12-e?30:29},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,s,r,n.local.invalidDate);t=this._validateYear(i.year()),e=i.month(),r=i.day();var o=this.isIntercalaryMonth(t,e),s=this.toChineseMonth(t,e),l=function(t,e,r,n,i){var a,o,s;if(\"object\"==typeof t)o=t,a=e||{};else{var l;if(!(\"number\"==typeof t&&t>=1888&&t<=2111))throw new Error(\"Lunar year outside range 1888-2111\");if(!(\"number\"==typeof e&&e>=1&&e<=12))throw new Error(\"Lunar month outside range 1 - 12\");if(!(\"number\"==typeof r&&r>=1&&r<=30))throw new Error(\"Lunar day outside range 1 - 30\");\"object\"==typeof n?(l=!1,a=n):(l=!!n,a=i||{}),o={year:t,month:e,day:r,isIntercalary:l}}s=o.day-1;var c,u=f[o.year-f[0]],p=u>>13;c=p&&(o.month>p||o.isIntercalary)?o.month:o.month-1;for(var d=0;d>9&4095,(g>>5&15)-1,(31&g)+s);return a.year=m.getFullYear(),a.month=1+m.getMonth(),a.day=m.getDate(),a}(t,s,r,o);return a.toJD(l.year,l.month,l.day)},fromJD:function(t){var e=a.fromJD(t),r=function(t,e,r,n){var i,a;if(\"object\"==typeof t)i=t,a=e||{};else{if(!(\"number\"==typeof t&&t>=1888&&t<=2111))throw new Error(\"Solar year outside range 1888-2111\");if(!(\"number\"==typeof e&&e>=1&&e<=12))throw new Error(\"Solar month outside range 1 - 12\");if(!(\"number\"==typeof r&&r>=1&&r<=31))throw new Error(\"Solar day outside range 1 - 31\");i={year:t,month:e,day:r},a=n||{}}var o=h[i.year-h[0]],s=i.year<<9|i.month<<5|i.day;a.year=s>=o?i.year:i.year-1,o=h[a.year-h[0]];var l,c=new Date(o>>9&4095,(o>>5&15)-1,31&o),u=new Date(i.year,i.month-1,i.day);l=Math.round((u-c)/864e5);var p,d=f[a.year-f[0]];for(p=0;p<13;p++){var g=d&1<<12-p?30:29;if(l>13;!m||p=2&&n<=6},extraInfo:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return{century:o[Math.floor((i.year()-1)/100)+1]||\"\"}},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return t=i.year()+(i.year()<0?1:0),e=i.month(),(r=i.day())+(e>1?16:0)+(e>2?32*(e-2):0)+400*(t-1)+this.jdEpoch-1},fromJD:function(t){t=Math.floor(t+.5)-Math.floor(this.jdEpoch)-1;var e=Math.floor(t/400)+1;t-=400*(e-1),t+=t>15?16:0;var r=Math.floor(t/32)+1,n=t-32*(r-1)+1;return this.newDate(e<=0?e-1:e,r,n)}});var o={20:\"Fruitbat\",21:\"Anchovy\"};n.calendars.discworld=a},{\"../main\":346,\"object-assign\":247}],335:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Ethiopian\",jdEpoch:1724220.5,daysPerMonth:[30,30,30,30,30,30,30,30,30,30,30,30,5],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Ethiopian\",epochs:[\"BEE\",\"EE\"],monthNames:[\"Meskerem\",\"Tikemet\",\"Hidar\",\"Tahesas\",\"Tir\",\"Yekatit\",\"Megabit\",\"Miazia\",\"Genbot\",\"Sene\",\"Hamle\",\"Nehase\",\"Pagume\"],monthNamesShort:[\"Mes\",\"Tik\",\"Hid\",\"Tah\",\"Tir\",\"Yek\",\"Meg\",\"Mia\",\"Gen\",\"Sen\",\"Ham\",\"Neh\",\"Pag\"],dayNames:[\"Ehud\",\"Segno\",\"Maksegno\",\"Irob\",\"Hamus\",\"Arb\",\"Kidame\"],dayNamesShort:[\"Ehu\",\"Seg\",\"Mak\",\"Iro\",\"Ham\",\"Arb\",\"Kid\"],dayNamesMin:[\"Eh\",\"Se\",\"Ma\",\"Ir\",\"Ha\",\"Ar\",\"Ki\"],digits:null,dateFormat:\"dd/mm/yyyy\",firstDay:0,isRTL:!1}},leap year:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return(t=e.year()+(e.year()<0?1:0))%4==3||t%4==-1},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear||n.regionalOptions[\"\"].invalidYear),13},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(13===r.month()&&this.leap year(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return(t=i.year())<0&&t++,i.day()+30*(i.month()-1)+365*(t-1)+Math.floor(t/4)+this.jdEpoch-1},fromJD:function(t){var e=Math.floor(t)+.5-this.jdEpoch,r=Math.floor((e-Math.floor((e+366)/1461))/365)+1;r<=0&&r--,e=Math.floor(t)+.5-this.newDate(r,1,1).toJD();var n=Math.floor(e/30)+1,i=e-30*(n-1)+1;return this.newDate(r,n,i)}}),n.calendars.ethiopian=a},{\"../main\":346,\"object-assign\":247}],336:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}function o(t,e){return t-e*Math.floor(t/e)}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Hebrew\",jdEpoch:347995.5,daysPerMonth:[30,29,30,29,30,29,30,29,30,29,30,29,29],hasYearZero:!1,minMonth:1,firstMonth:7,minDay:1,regionalOptions:{\"\":{name:\"Hebrew\",epochs:[\"BAM\",\"AM\"],monthNames:[\"Nisan\",\"Iyar\",\"Sivan\",\"Tammuz\",\"Av\",\"Elul\",\"Tishrei\",\"Cheshvan\",\"Kislev\",\"Tevet\",\"Shevat\",\"Adar\",\"Adar II\"],monthNamesShort:[\"Nis\",\"Iya\",\"Siv\",\"Tam\",\"Av\",\"Elu\",\"Tis\",\"Che\",\"Kis\",\"Tev\",\"She\",\"Ada\",\"Ad2\"],dayNames:[\"Yom Rishon\",\"Yom Sheni\",\"Yom Shlishi\",\"Yom Revi'i\",\"Yom Chamishi\",\"Yom Shishi\",\"Yom Shabbat\"],dayNamesShort:[\"Ris\",\"She\",\"Shl\",\"Rev\",\"Cha\",\"Shi\",\"Sha\"],dayNamesMin:[\"Ri\",\"She\",\"Shl\",\"Re\",\"Ch\",\"Shi\",\"Sha\"],digits:null,dateFormat:\"dd/mm/yyyy\",firstDay:0,isRTL:!1}},leap year:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return this._leapYear(e.year())},_leapYear:function(t){return o(7*(t=t<0?t+1:t)+1,19)<7},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear),this._leapYear(t.year?t.year():t)?13:12},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(t){return t=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear).year(),this.toJD(-1===t?1:t+1,7,1)-this.toJD(t,7,1)},daysInMonth:function(t,e){return t.year&&(e=t.month(),t=t.year()),this._validate(t,e,this.minDay,n.local.invalidMonth),12===e&&this.leap year(t)||8===e&&5===o(this.daysInYear(t),10)?30:9===e&&3===o(this.daysInYear(t),10)?29:this.daysPerMonth[e-1]},weekDay:function(t,e,r){return 6!==this.dayOfWeek(t,e,r)},extraInfo:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return{yearType:(this.leap year(i)?\"embolismic\":\"common\")+\" \"+[\"deficient\",\"regular\",\"complete\"][this.daysInYear(i)%10-3]}},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=i.year(),e=i.month(),r=i.day();var a=t<=0?t+1:t,o=this.jdEpoch+this._delay1(a)+this._delay2(a)+r+1;if(e<7){for(var s=7;s<=this.monthsInYear(t);s++)o+=this.daysInMonth(t,s);for(s=1;s=this.toJD(-1===e?1:e+1,7,1);)e++;for(var r=tthis.toJD(e,r,this.daysInMonth(e,r));)r++;var n=t-this.toJD(e,r,1)+1;return this.newDate(e,r,n)}}),n.calendars.hebrew=a},{\"../main\":346,\"object-assign\":247}],337:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Islamic\",jdEpoch:1948439.5,daysPerMonth:[30,29,30,29,30,29,30,29,30,29,30,29],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Islamic\",epochs:[\"BH\",\"AH\"],monthNames:[\"Muharram\",\"Safar\",\"Rabi' al-awwal\",\"Rabi' al-thani\",\"Jumada al-awwal\",\"Jumada al-thani\",\"Rajab\",\"Sha'aban\",\"Ramadan\",\"Shawwal\",\"Dhu al-Qi'dah\",\"Dhu al-Hijjah\"],monthNamesShort:[\"Muh\",\"Saf\",\"Rab1\",\"Rab2\",\"Jum1\",\"Jum2\",\"Raj\",\"Sha'\",\"Ram\",\"Shaw\",\"DhuQ\",\"DhuH\"],dayNames:[\"Yawm al-ahad\",\"Yawm al-ithnayn\",\"Yawm ath-thulaathaa'\",\"Yawm al-arbi'aa'\",\"Yawm al-kham\\u012bs\",\"Yawm al-jum'a\",\"Yawm as-sabt\"],dayNamesShort:[\"Aha\",\"Ith\",\"Thu\",\"Arb\",\"Kha\",\"Jum\",\"Sab\"],dayNamesMin:[\"Ah\",\"It\",\"Th\",\"Ar\",\"Kh\",\"Ju\",\"Sa\"],digits:null,dateFormat:\"yyyy/mm/dd\",firstDay:6,isRTL:!1}},leap year:function(t){return(11*this._validate(t,this.minMonth,this.minDay,n.local.invalidYear).year()+14)%30<11},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(t){return this.leap year(t)?355:354},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(12===r.month()&&this.leap year(r.year())?1:0)},weekDay:function(t,e,r){return 5!==this.dayOfWeek(t,e,r)},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return t=i.year(),e=i.month(),t=t<=0?t+1:t,(r=i.day())+Math.ceil(29.5*(e-1))+354*(t-1)+Math.floor((3+11*t)/30)+this.jdEpoch-1},fromJD:function(t){t=Math.floor(t)+.5;var e=Math.floor((30*(t-this.jdEpoch)+10646)/10631);e=e<=0?e-1:e;var r=Math.min(12,Math.ceil((t-29-this.toJD(e,1,1))/29.5)+1),n=t-this.toJD(e,r,1)+1;return this.newDate(e,r,n)}}),n.calendars.islamic=a},{\"../main\":346,\"object-assign\":247}],338:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Julian\",jdEpoch:1721423.5,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Julian\",epochs:[\"BC\",\"AD\"],monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],dayNamesShort:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],dayNamesMin:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],digits:null,dateFormat:\"mm/dd/yyyy\",firstDay:0,isRTL:!1}},leap year:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return(t=e.year()<0?e.year()+1:e.year())%4==0},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(4-(n.dayOfWeek()||7),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(2===r.month()&&this.leap year(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return t=i.year(),e=i.month(),r=i.day(),t<0&&t++,e<=2&&(t--,e+=12),Math.floor(365.25*(t+4716))+Math.floor(30.6001*(e+1))+r-1524.5},fromJD:function(t){var e=Math.floor(t+.5)+1524,r=Math.floor((e-122.1)/365.25),n=Math.floor(365.25*r),i=Math.floor((e-n)/30.6001),a=i-Math.floor(i<14?1:13),o=r-Math.floor(a>2?4716:4715),s=e-n-Math.floor(30.6001*i);return o<=0&&o--,this.newDate(o,a,s)}}),n.calendars.julian=a},{\"../main\":346,\"object-assign\":247}],339:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}function o(t,e){return t-e*Math.floor(t/e)}function s(t,e){return o(t-1,e)+1}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Mayan\",jdEpoch:584282.5,hasYearZero:!0,minMonth:0,firstMonth:0,minDay:0,regionalOptions:{\"\":{name:\"Mayan\",epochs:[\"\",\"\"],monthNames:[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\"],monthNamesShort:[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\"],dayNames:[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\"],dayNamesShort:[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\"],dayNamesMin:[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\"],digits:null,dateFormat:\"YYYY.m.d\",firstDay:0,isRTL:!1,haabMonths:[\"Pop\",\"Uo\",\"Zip\",\"Zotz\",\"Tzec\",\"Xul\",\"Yaxkin\",\"Mol\",\"Chen\",\"Yax\",\"Zac\",\"Ceh\",\"Mac\",\"Kankin\",\"Muan\",\"Pax\",\"Kayab\",\"Cumku\",\"Uayeb\"],tzolkinMonths:[\"Imix\",\"Ik\",\"Akbal\",\"Kan\",\"Chicchan\",\"Cimi\",\"Manik\",\"Lamat\",\"Muluc\",\"Oc\",\"Chuen\",\"Eb\",\"Ben\",\"Ix\",\"Men\",\"Cib\",\"Caban\",\"Etznab\",\"Cauac\",\"Ahau\"]}},leap year:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear),!1},formatYear:function(t){t=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear).year();var e=Math.floor(t/400);return t%=400,t+=t<0?400:0,e+\".\"+Math.floor(t/20)+\".\"+t%20},forYear:function(t){if((t=t.split(\".\")).length<3)throw\"Invalid Mayan year\";for(var e=0,r=0;r19||r>0&&n<0)throw\"Invalid Mayan year\";e=20*e+n}return e},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear),18},weekOfYear:function(t,e,r){return this._validate(t,e,r,n.local.invalidDate),0},daysInYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear),360},daysInMonth:function(t,e){return this._validate(t,e,this.minDay,n.local.invalidMonth),20},daysInWeek:function(){return 5},dayOfWeek:function(t,e,r){return this._validate(t,e,r,n.local.invalidDate).day()},weekDay:function(t,e,r){return this._validate(t,e,r,n.local.invalidDate),!0},extraInfo:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate).toJD(),a=this._toHaab(i),o=this._toTzolkin(i);return{haabMonthName:this.local.haabMonths[a[0]-1],haabMonth:a[0],haabDay:a[1],tzolkinDayName:this.local.tzolkinMonths[o[0]-1],tzolkinDay:o[0],tzolkinTrecena:o[1]}},_toHaab:function(t){var e=o((t-=this.jdEpoch)+8+340,365);return[Math.floor(e/20)+1,o(e,20)]},_toTzolkin:function(t){return[s((t-=this.jdEpoch)+20,20),s(t+4,13)]},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return i.day()+20*i.month()+360*i.year()+this.jdEpoch},fromJD:function(t){t=Math.floor(t)+.5-this.jdEpoch;var e=Math.floor(t/360);t%=360,t+=t<0?360:0;var r=Math.floor(t/20),n=t%20;return this.newDate(e,r,n)}}),n.calendars.mayan=a},{\"../main\":346,\"object-assign\":247}],340:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar;var o=n.instance(\"gregorian\");i(a.prototype,{name:\"Nanakshahi\",jdEpoch:2257673.5,daysPerMonth:[31,31,31,31,31,30,30,30,30,30,30,30],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Nanakshahi\",epochs:[\"BN\",\"AN\"],monthNames:[\"Chet\",\"Vaisakh\",\"Jeth\",\"Harh\",\"Sawan\",\"Bhadon\",\"Assu\",\"Katak\",\"Maghar\",\"Poh\",\"Magh\",\"Phagun\"],monthNamesShort:[\"Che\",\"Vai\",\"Jet\",\"Har\",\"Saw\",\"Bha\",\"Ass\",\"Kat\",\"Mgr\",\"Poh\",\"Mgh\",\"Pha\"],dayNames:[\"Somvaar\",\"Mangalvar\",\"Budhvaar\",\"Veervaar\",\"Shukarvaar\",\"Sanicharvaar\",\"Etvaar\"],dayNamesShort:[\"Some\",\"Mangal\",\"Budh\",\"Veer\",\"Shukar\",\"Sanichar\",\"Et\"],dayNamesMin:[\"So\",\"Ma\",\"Bu\",\"Ve\",\"Sh\",\"Sa\",\"Et\"],digits:null,dateFormat:\"dd-mm-yyyy\",firstDay:0,isRTL:!1}},leap year:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear||n.regionalOptions[\"\"].invalidYear);return o.leap year(e.year()+(e.year()<1?1:0)+1469)},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(1-(n.dayOfWeek()||7),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(12===r.month()&&this.leap year(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidMonth);(t=i.year())<0&&t++;for(var a=i.day(),s=1;s=this.toJD(e+1,1,1);)e++;for(var r=t-Math.floor(this.toJD(e,1,1)+.5)+1,n=1;r>this.daysInMonth(e,n);)r-=this.daysInMonth(e,n),n++;return this.newDate(e,n,r)}}),n.calendars.nanakshahi=a},{\"../main\":346,\"object-assign\":247}],341:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Nepali\",jdEpoch:1700709.5,daysPerMonth:[31,31,32,32,31,30,30,29,30,29,30,30],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,daysPerYear:365,regionalOptions:{\"\":{name:\"Nepali\",epochs:[\"BBS\",\"ABS\"],monthNames:[\"Baisakh\",\"Jestha\",\"Ashadh\",\"Shrawan\",\"Bhadra\",\"Ashwin\",\"Kartik\",\"Mangsir\",\"Paush\",\"Mangh\",\"Falgun\",\"Chaitra\"],monthNamesShort:[\"Bai\",\"Je\",\"As\",\"Shra\",\"Bha\",\"Ash\",\"Kar\",\"Mang\",\"Pau\",\"Ma\",\"Fal\",\"Chai\"],dayNames:[\"Aaitabaar\",\"Sombaar\",\"Manglbaar\",\"Budhabaar\",\"Bihibaar\",\"Shukrabaar\",\"Shanibaar\"],dayNamesShort:[\"Aaita\",\"Some\",\"Mangl\",\"Budha\",\"Bihi\",\"Shukra\",\"Shani\"],dayNamesMin:[\"Aai\",\"So\",\"Man\",\"Bu\",\"Bi\",\"Shu\",\"Sha\"],digits:null,dateFormat:\"dd/mm/yyyy\",firstDay:1,isRTL:!1}},leap year:function(t){return this.daysInYear(t)!==this.daysPerYear},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(t){if(t=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear).year(),void 0===this.NEPALI_CALENDAR_DATA[t])return this.daysPerYear;for(var e=0,r=this.minMonth;r<=12;r++)e+=this.NEPALI_CALENDAR_DATA[t][r];return e},daysInMonth:function(t,e){return t.year&&(e=t.month(),t=t.year()),this._validate(t,e,this.minDay,n.local.invalidMonth),void 0===this.NEPALI_CALENDAR_DATA[t]?this.daysPerMonth[e-1]:this.NEPALI_CALENDAR_DATA[t][e]},weekDay:function(t,e,r){return 6!==this.dayOfWeek(t,e,r)},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=i.year(),e=i.month(),r=i.day();var a=n.instance(),o=0,s=e,l=t;this._createMissingCalendarData(t);var c=t-(s>9||9===s&&r>=this.NEPALI_CALENDAR_DATA[l][0]?56:57);for(9!==e&&(o=r,s--);9!==s;)s<=0&&(s=12,l--),o+=this.NEPALI_CALENDAR_DATA[l][s],s--;return 9===e?(o+=r-this.NEPALI_CALENDAR_DATA[l][0])<0&&(o+=a.daysInYear(c)):o+=this.NEPALI_CALENDAR_DATA[l][9]-this.NEPALI_CALENDAR_DATA[l][0],a.newDate(c,1,1).add(o,\"d\").toJD()},fromJD:function(t){var e=n.instance().fromJD(t),r=e.year(),i=e.dayOfYear(),a=r+56;this._createMissingCalendarData(a);for(var o=9,s=this.NEPALI_CALENDAR_DATA[a][0],l=this.NEPALI_CALENDAR_DATA[a][o]-s+1;i>l;)++o>12&&(o=1,a++),l+=this.NEPALI_CALENDAR_DATA[a][o];var c=this.NEPALI_CALENDAR_DATA[a][o]-(l-i);return this.newDate(a,o,c)},_createMissingCalendarData:function(t){var e=this.daysPerMonth.slice(0);e.unshift(17);for(var r=t-1;r0?474:473))%2820+474+38)%2816<682},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-(n.dayOfWeek()+1)%7,\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(12===r.month()&&this.leap year(r.year())?1:0)},weekDay:function(t,e,r){return 5!==this.dayOfWeek(t,e,r)},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=i.year(),e=i.month(),r=i.day();var a=t-(t>=0?474:473),s=474+o(a,2820);return r+(e<=7?31*(e-1):30*(e-1)+6)+Math.floor((682*s-110)/2816)+365*(s-1)+1029983*Math.floor(a/2820)+this.jdEpoch-1},fromJD:function(t){var e=(t=Math.floor(t)+.5)-this.toJD(475,1,1),r=Math.floor(e/1029983),n=o(e,1029983),i=2820;if(1029982!==n){var a=Math.floor(n/366),s=o(n,366);i=Math.floor((2134*a+2816*s+2815)/1028522)+a+1}var l=i+2820*r+474;l=l<=0?l-1:l;var c=t-this.toJD(l,1,1)+1,u=c<=186?Math.ceil(c/31):Math.ceil((c-6)/30),f=t-this.toJD(l,u,1)+1;return this.newDate(l,u,f)}}),n.calendars.persian=a,n.calendars.jalali=a},{\"../main\":346,\"object-assign\":247}],343:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\"),a=n.instance();function o(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}o.prototype=new n.baseCalendar,i(o.prototype,{name:\"Taiwan\",jdEpoch:2419402.5,yearsOffset:1911,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Taiwan\",epochs:[\"BROC\",\"ROC\"],monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],dayNamesShort:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],dayNamesMin:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],digits:null,dateFormat:\"yyyy/mm/dd\",firstDay:1,isRTL:!1}},leap year:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);t=this._t2gYear(e.year());return a.leap year(t)},weekOfYear:function(t,e,r){var i=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);t=this._t2gYear(i.year());return a.weekOfYear(t,i.month(),i.day())},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(2===r.month()&&this.leap year(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=this._t2gYear(i.year());return a.toJD(t,i.month(),i.day())},fromJD:function(t){var e=a.fromJD(t),r=this._g2tYear(e.year());return this.newDate(r,e.month(),e.day())},_t2gYear:function(t){return t+this.yearsOffset+(t>=-this.yearsOffset&&t<=-1?1:0)},_g2tYear:function(t){return t-this.yearsOffset-(t>=1&&t<=this.yearsOffset?1:0)}}),n.calendars.taiwan=o},{\"../main\":346,\"object-assign\":247}],344:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\"),a=n.instance();function o(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}o.prototype=new n.baseCalendar,i(o.prototype,{name:\"Thai\",jdEpoch:1523098.5,yearsOffset:543,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Thai\",epochs:[\"BBE\",\"BE\"],monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],dayNamesShort:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],dayNamesMin:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],digits:null,dateFormat:\"dd/mm/yyyy\",firstDay:0,isRTL:!1}},leap year:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);t=this._t2gYear(e.year());return a.leap year(t)},weekOfYear:function(t,e,r){var i=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);t=this._t2gYear(i.year());return a.weekOfYear(t,i.month(),i.day())},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(2===r.month()&&this.leap year(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=this._t2gYear(i.year());return a.toJD(t,i.month(),i.day())},fromJD:function(t){var e=a.fromJD(t),r=this._g2tYear(e.year());return this.newDate(r,e.month(),e.day())},_t2gYear:function(t){return t-this.yearsOffset-(t>=1&&t<=this.yearsOffset?1:0)},_g2tYear:function(t){return t+this.yearsOffset+(t>=-this.yearsOffset&&t<=-1?1:0)}}),n.calendars.thai=o},{\"../main\":346,\"object-assign\":247}],345:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"UmmAlQura\",hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Umm al-Qura\",epochs:[\"BH\",\"AH\"],monthNames:[\"Al-Muharram\",\"Safar\",\"Rabi' al-awwal\",\"Rabi' Al-Thani\",\"Jumada Al-Awwal\",\"Jumada Al-Thani\",\"Rajab\",\"Sha'aban\",\"Ramadan\",\"Shawwal\",\"Dhu al-Qi'dah\",\"Dhu al-Hijjah\"],monthNamesShort:[\"Muh\",\"Saf\",\"Rab1\",\"Rab2\",\"Jum1\",\"Jum2\",\"Raj\",\"Sha'\",\"Ram\",\"Shaw\",\"DhuQ\",\"DhuH\"],dayNames:[\"Yawm al-Ahad\",\"Yawm al-Ithnain\",\"Yawm al-Thal\\u0101th\\u0101\\u2019\",\"Yawm al-Arba\\u2018\\u0101\\u2019\",\"Yawm al-Kham\\u012bs\",\"Yawm al-Jum\\u2018a\",\"Yawm al-Sabt\"],dayNamesMin:[\"Ah\",\"Ith\",\"Th\",\"Ar\",\"Kh\",\"Ju\",\"Sa\"],digits:null,dateFormat:\"yyyy/mm/dd\",firstDay:6,isRTL:!0}},leap year:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return 355===this.daysInYear(e.year())},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(t){for(var e=0,r=1;r<=12;r++)e+=this.daysInMonth(t,r);return e},daysInMonth:function(t,e){for(var r=this._validate(t,e,this.minDay,n.local.invalidMonth).toJD()-24e5+.5,i=0,a=0;ar)return o[i]-o[i-1];i++}return 30},weekDay:function(t,e,r){return 5!==this.dayOfWeek(t,e,r)},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate),a=12*(i.year()-1)+i.month()-15292;return i.day()+o[a-1]-1+24e5-.5},fromJD:function(t){for(var e=t-24e5+.5,r=0,n=0;ne);n++)r++;var i=r+15292,a=Math.floor((i-1)/12),s=a+1,l=i-12*a,c=e-o[r-1]+1;return this.newDate(s,l,c)},isValid:function(t,e,r){var i=n.baseCalendar.prototype.isValid.apply(this,arguments);return i&&(i=(t=null!=t.year?t.year:t)>=1276&&t<=1500),i},_validate:function(t,e,r,i){var a=n.baseCalendar.prototype._validate.apply(this,arguments);if(a.year<1276||a.year>1500)throw i.replace(/\\{0\\}/,this.local.name);return a}}),n.calendars.ummalqura=a;var o=[20,50,79,109,138,168,197,227,256,286,315,345,374,404,433,463,492,522,551,581,611,641,670,700,729,759,788,818,847,877,906,936,965,995,1024,1054,1083,1113,1142,1172,1201,1231,1260,1290,1320,1350,1379,1409,1438,1468,1497,1527,1556,1586,1615,1645,1674,1704,1733,1763,1792,1822,1851,1881,1910,1940,1969,1999,2028,2058,2087,2117,2146,2176,2205,2235,2264,2294,2323,2353,2383,2413,2442,2472,2501,2531,2560,2590,2619,2649,2678,2708,2737,2767,2796,2826,2855,2885,2914,2944,2973,3003,3032,3062,3091,3121,3150,3180,3209,3239,3268,3298,3327,3357,3386,3416,3446,3476,3505,3535,3564,3594,3623,3653,3682,3712,3741,3771,3800,3830,3859,3889,3918,3948,3977,4007,4036,4066,4095,4125,4155,4185,4214,4244,4273,4303,4332,4362,4391,4421,4450,4480,4509,4539,4568,4598,4627,4657,4686,4716,4745,4775,4804,4834,4863,4893,4922,4952,4981,5011,5040,5070,5099,5129,5158,5188,5218,5248,5277,5307,5336,5366,5395,5425,5454,5484,5513,5543,5572,5602,5631,5661,5690,5720,5749,5779,5808,5838,5867,5897,5926,5956,5985,6015,6044,6074,6103,6133,6162,6192,6221,6251,6281,6311,6340,6370,6399,6429,6458,6488,6517,6547,6576,6606,6635,6665,6694,6724,6753,6783,6812,6842,6871,6901,6930,6960,6989,7019,7048,7078,7107,7137,7166,7196,7225,7255,7284,7314,7344,7374,7403,7433,7462,7492,7521,7551,7580,7610,7639,7669,7698,7728,7757,7787,7816,7846,7875,7905,7934,7964,7993,8023,8053,8083,8112,8142,8171,8201,8230,8260,8289,8319,8348,8378,8407,8437,8466,8496,8525,8555,8584,8614,8643,8673,8702,8732,8761,8791,8821,8850,8880,8909,8938,8968,8997,9027,9056,9086,9115,9145,9175,9205,9234,9264,9293,9322,9352,9381,9410,9440,9470,9499,9529,9559,9589,9618,9648,9677,9706,9736,9765,9794,9824,9853,9883,9913,9943,9972,10002,10032,10061,10090,10120,10149,10178,10208,10237,10267,10297,10326,10356,10386,10415,10445,10474,10504,10533,10562,10592,10621,10651,10680,10710,10740,10770,10799,10829,10858,10888,10917,10947,10976,11005,11035,11064,11094,11124,11153,11183,11213,11242,11272,11301,11331,11360,11389,11419,11448,11478,11507,11537,11567,11596,11626,11655,11685,11715,11744,11774,11803,11832,11862,11891,11921,11950,11980,12010,12039,12069,12099,12128,12158,12187,12216,12246,12275,12304,12334,12364,12393,12423,12453,12483,12512,12542,12571,12600,12630,12659,12688,12718,12747,12777,12807,12837,12866,12896,12926,12955,12984,13014,13043,13072,13102,13131,13161,13191,13220,13250,13280,13310,13339,13368,13398,13427,13456,13486,13515,13545,13574,13604,13634,13664,13693,13723,13752,13782,13811,13840,13870,13899,13929,13958,13988,14018,14047,14077,14107,14136,14166,14195,14224,14254,14283,14313,14342,14372,14401,14431,14461,14490,14520,14550,14579,14609,14638,14667,14697,14726,14756,14785,14815,14844,14874,14904,14933,14963,14993,15021,15051,15081,15110,15140,15169,15199,15228,15258,15287,15317,15347,15377,15406,15436,15465,15494,15524,15553,15582,15612,15641,15671,15701,15731,15760,15790,15820,15849,15878,15908,15937,15966,15996,16025,16055,16085,16114,16144,16174,16204,16233,16262,16292,16321,16350,16380,16409,16439,16468,16498,16528,16558,16587,16617,16646,16676,16705,16734,16764,16793,16823,16852,16882,16912,16941,16971,17001,17030,17060,17089,17118,17148,17177,17207,17236,17266,17295,17325,17355,17384,17414,17444,17473,17502,17532,17561,17591,17620,17650,17679,17709,17738,17768,17798,17827,17857,17886,17916,17945,17975,18004,18034,18063,18093,18122,18152,18181,18211,18241,18270,18300,18330,18359,18388,18418,18447,18476,18506,18535,18565,18595,18625,18654,18684,18714,18743,18772,18802,18831,18860,18890,18919,18949,18979,19008,19038,19068,19098,19127,19156,19186,19215,19244,19274,19303,19333,19362,19392,19422,19452,19481,19511,19540,19570,19599,19628,19658,19687,19717,19746,19776,19806,19836,19865,19895,19924,19954,19983,20012,20042,20071,20101,20130,20160,20190,20219,20249,20279,20308,20338,20367,20396,20426,20455,20485,20514,20544,20573,20603,20633,20662,20692,20721,20751,20780,20810,20839,20869,20898,20928,20957,20987,21016,21046,21076,21105,21135,21164,21194,21223,21253,21282,21312,21341,21371,21400,21430,21459,21489,21519,21548,21578,21607,21637,21666,21696,21725,21754,21784,21813,21843,21873,21902,21932,21962,21991,22021,22050,22080,22109,22138,22168,22197,22227,22256,22286,22316,22346,22375,22405,22434,22464,22493,22522,22552,22581,22611,22640,22670,22700,22730,22759,22789,22818,22848,22877,22906,22936,22965,22994,23024,23054,23083,23113,23143,23173,23202,23232,23261,23290,23320,23349,23379,23408,23438,23467,23497,23527,23556,23586,23616,23645,23674,23704,23733,23763,23792,23822,23851,23881,23910,23940,23970,23999,24029,24058,24088,24117,24147,24176,24206,24235,24265,24294,24324,24353,24383,24413,24442,24472,24501,24531,24560,24590,24619,24648,24678,24707,24737,24767,24796,24826,24856,24885,24915,24944,24974,25003,25032,25062,25091,25121,25150,25180,25210,25240,25269,25299,25328,25358,25387,25416,25446,25475,25505,25534,25564,25594,25624,25653,25683,25712,25742,25771,25800,25830,25859,25888,25918,25948,25977,26007,26037,26067,26096,26126,26155,26184,26214,26243,26272,26302,26332,26361,26391,26421,26451,26480,26510,26539,26568,26598,26627,26656,26686,26715,26745,26775,26805,26834,26864,26893,26923,26952,26982,27011,27041,27070,27099,27129,27159,27188,27218,27248,27277,27307,27336,27366,27395,27425,27454,27484,27513,27542,27572,27602,27631,27661,27691,27720,27750,27779,27809,27838,27868,27897,27926,27956,27985,28015,28045,28074,28104,28134,28163,28193,28222,28252,28281,28310,28340,28369,28399,28428,28458,28488,28517,28547,28577,28607,28636,28665,28695,28724,28754,28783,28813,28843,28872,28901,28931,28960,28990,29019,29049,29078,29108,29137,29167,29196,29226,29255,29285,29315,29345,29375,29404,29434,29463,29492,29522,29551,29580,29610,29640,29669,29699,29729,29759,29788,29818,29847,29876,29906,29935,29964,29994,30023,30053,30082,30112,30141,30171,30200,30230,30259,30289,30318,30348,30378,30408,30437,30467,30496,30526,30555,30585,30614,30644,30673,30703,30732,30762,30791,30821,30850,30880,30909,30939,30968,30998,31027,31057,31086,31116,31145,31175,31204,31234,31263,31293,31322,31352,31381,31411,31441,31471,31500,31530,31559,31589,31618,31648,31676,31706,31736,31766,31795,31825,31854,31884,31913,31943,31972,32002,32031,32061,32090,32120,32150,32180,32209,32239,32268,32298,32327,32357,32386,32416,32445,32475,32504,32534,32563,32593,32622,32652,32681,32711,32740,32770,32799,32829,32858,32888,32917,32947,32976,33006,33035,33065,33094,33124,33153,33183,33213,33243,33272,33302,33331,33361,33390,33420,33450,33479,33509,33539,33568,33598,33627,33657,33686,33716,33745,33775,33804,33834,33863,33893,33922,33952,33981,34011,34040,34069,34099,34128,34158,34187,34217,34247,34277,34306,34336,34365,34395,34424,34454,34483,34512,34542,34571,34601,34631,34660,34690,34719,34749,34778,34808,34837,34867,34896,34926,34955,34985,35015,35044,35074,35103,35133,35162,35192,35222,35251,35280,35310,35340,35370,35399,35429,35458,35488,35517,35547,35576,35605,35635,35665,35694,35723,35753,35782,35811,35841,35871,35901,35930,35960,35989,36019,36048,36078,36107,36136,36166,36195,36225,36254,36284,36314,36343,36373,36403,36433,36462,36492,36521,36551,36580,36610,36639,36669,36698,36728,36757,36786,36816,36845,36875,36904,36934,36963,36993,37022,37052,37081,37111,37141,37170,37200,37229,37259,37288,37318,37347,37377,37406,37436,37465,37495,37524,37554,37584,37613,37643,37672,37701,37731,37760,37790,37819,37849,37878,37908,37938,37967,37997,38027,38056,38085,38115,38144,38174,38203,38233,38262,38292,38322,38351,38381,38410,38440,38469,38499,38528,38558,38587,38617,38646,38676,38705,38735,38764,38794,38823,38853,38882,38912,38941,38971,39001,39030,39059,39089,39118,39148,39178,39208,39237,39267,39297,39326,39355,39385,39414,39444,39473,39503,39532,39562,39592,39621,39650,39680,39709,39739,39768,39798,39827,39857,39886,39916,39946,39975,40005,40035,40064,40094,40123,40153,40182,40212,40241,40271,40300,40330,40359,40389,40418,40448,40477,40507,40536,40566,40595,40625,40655,40685,40714,40744,40773,40803,40832,40862,40892,40921,40951,40980,41009,41039,41068,41098,41127,41157,41186,41216,41245,41275,41304,41334,41364,41393,41422,41452,41481,41511,41540,41570,41599,41629,41658,41688,41718,41748,41777,41807,41836,41865,41894,41924,41953,41983,42012,42042,42072,42102,42131,42161,42190,42220,42249,42279,42308,42337,42367,42397,42426,42456,42485,42515,42545,42574,42604,42633,42662,42692,42721,42751,42780,42810,42839,42869,42899,42929,42958,42988,43017,43046,43076,43105,43135,43164,43194,43223,43253,43283,43312,43342,43371,43401,43430,43460,43489,43519,43548,43578,43607,43637,43666,43696,43726,43755,43785,43814,43844,43873,43903,43932,43962,43991,44021,44050,44080,44109,44139,44169,44198,44228,44258,44287,44317,44346,44375,44405,44434,44464,44493,44523,44553,44582,44612,44641,44671,44700,44730,44759,44788,44818,44847,44877,44906,44936,44966,44996,45025,45055,45084,45114,45143,45172,45202,45231,45261,45290,45320,45350,45380,45409,45439,45468,45498,45527,45556,45586,45615,45644,45674,45704,45733,45763,45793,45823,45852,45882,45911,45940,45970,45999,46028,46058,46088,46117,46147,46177,46206,46236,46265,46295,46324,46354,46383,46413,46442,46472,46501,46531,46560,46590,46620,46649,46679,46708,46738,46767,46797,46826,46856,46885,46915,46944,46974,47003,47033,47063,47092,47122,47151,47181,47210,47240,47269,47298,47328,47357,47387,47417,47446,47476,47506,47535,47565,47594,47624,47653,47682,47712,47741,47771,47800,47830,47860,47890,47919,47949,47978,48008,48037,48066,48096,48125,48155,48184,48214,48244,48273,48303,48333,48362,48392,48421,48450,48480,48509,48538,48568,48598,48627,48657,48687,48717,48746,48776,48805,48834,48864,48893,48922,48952,48982,49011,49041,49071,49100,49130,49160,49189,49218,49248,49277,49306,49336,49365,49395,49425,49455,49484,49514,49543,49573,49602,49632,49661,49690,49720,49749,49779,49809,49838,49868,49898,49927,49957,49986,50016,50045,50075,50104,50133,50163,50192,50222,50252,50281,50311,50340,50370,50400,50429,50459,50488,50518,50547,50576,50606,50635,50665,50694,50724,50754,50784,50813,50843,50872,50902,50931,50960,50990,51019,51049,51078,51108,51138,51167,51197,51227,51256,51286,51315,51345,51374,51403,51433,51462,51492,51522,51552,51582,51611,51641,51670,51699,51729,51758,51787,51816,51846,51876,51906,51936,51965,51995,52025,52054,52083,52113,52142,52171,52200,52230,52260,52290,52319,52349,52379,52408,52438,52467,52497,52526,52555,52585,52614,52644,52673,52703,52733,52762,52792,52822,52851,52881,52910,52939,52969,52998,53028,53057,53087,53116,53146,53176,53205,53235,53264,53294,53324,53353,53383,53412,53441,53471,53500,53530,53559,53589,53619,53648,53678,53708,53737,53767,53796,53825,53855,53884,53913,53943,53973,54003,54032,54062,54092,54121,54151,54180,54209,54239,54268,54297,54327,54357,54387,54416,54446,54476,54505,54535,54564,54593,54623,54652,54681,54711,54741,54770,54800,54830,54859,54889,54919,54948,54977,55007,55036,55066,55095,55125,55154,55184,55213,55243,55273,55302,55332,55361,55391,55420,55450,55479,55508,55538,55567,55597,55627,55657,55686,55716,55745,55775,55804,55834,55863,55892,55922,55951,55981,56011,56040,56070,56100,56129,56159,56188,56218,56247,56276,56306,56335,56365,56394,56424,56454,56483,56513,56543,56572,56601,56631,56660,56690,56719,56749,56778,56808,56837,56867,56897,56926,56956,56985,57015,57044,57074,57103,57133,57162,57192,57221,57251,57280,57310,57340,57369,57399,57429,57458,57487,57517,57546,57576,57605,57634,57664,57694,57723,57753,57783,57813,57842,57871,57901,57930,57959,57989,58018,58048,58077,58107,58137,58167,58196,58226,58255,58285,58314,58343,58373,58402,58432,58461,58491,58521,58551,58580,58610,58639,58669,58698,58727,58757,58786,58816,58845,58875,58905,58934,58964,58994,59023,59053,59082,59111,59141,59170,59200,59229,59259,59288,59318,59348,59377,59407,59436,59466,59495,59525,59554,59584,59613,59643,59672,59702,59731,59761,59791,59820,59850,59879,59909,59939,59968,59997,60027,60056,60086,60115,60145,60174,60204,60234,60264,60293,60323,60352,60381,60411,60440,60469,60499,60528,60558,60588,60618,60648,60677,60707,60736,60765,60795,60824,60853,60883,60912,60942,60972,61002,61031,61061,61090,61120,61149,61179,61208,61237,61267,61296,61326,61356,61385,61415,61445,61474,61504,61533,61563,61592,61621,61651,61680,61710,61739,61769,61799,61828,61858,61888,61917,61947,61976,62006,62035,62064,62094,62123,62153,62182,62212,62242,62271,62301,62331,62360,62390,62419,62448,62478,62507,62537,62566,62596,62625,62655,62685,62715,62744,62774,62803,62832,62862,62891,62921,62950,62980,63009,63039,63069,63099,63128,63157,63187,63216,63246,63275,63305,63334,63363,63393,63423,63453,63482,63512,63541,63571,63600,63630,63659,63689,63718,63747,63777,63807,63836,63866,63895,63925,63955,63984,64014,64043,64073,64102,64131,64161,64190,64220,64249,64279,64309,64339,64368,64398,64427,64457,64486,64515,64545,64574,64603,64633,64663,64692,64722,64752,64782,64811,64841,64870,64899,64929,64958,64987,65017,65047,65076,65106,65136,65166,65195,65225,65254,65283,65313,65342,65371,65401,65431,65460,65490,65520,65549,65579,65608,65638,65667,65697,65726,65755,65785,65815,65844,65874,65903,65933,65963,65992,66022,66051,66081,66110,66140,66169,66199,66228,66258,66287,66317,66346,66376,66405,66435,66465,66494,66524,66553,66583,66612,66641,66671,66700,66730,66760,66789,66819,66849,66878,66908,66937,66967,66996,67025,67055,67084,67114,67143,67173,67203,67233,67262,67292,67321,67351,67380,67409,67439,67468,67497,67527,67557,67587,67617,67646,67676,67705,67735,67764,67793,67823,67852,67882,67911,67941,67971,68e3,68030,68060,68089,68119,68148,68177,68207,68236,68266,68295,68325,68354,68384,68414,68443,68473,68502,68532,68561,68591,68620,68650,68679,68708,68738,68768,68797,68827,68857,68886,68916,68946,68975,69004,69034,69063,69092,69122,69152,69181,69211,69240,69270,69300,69330,69359,69388,69418,69447,69476,69506,69535,69565,69595,69624,69654,69684,69713,69743,69772,69802,69831,69861,69890,69919,69949,69978,70008,70038,70067,70097,70126,70156,70186,70215,70245,70274,70303,70333,70362,70392,70421,70451,70481,70510,70540,70570,70599,70629,70658,70687,70717,70746,70776,70805,70835,70864,70894,70924,70954,70983,71013,71042,71071,71101,71130,71159,71189,71218,71248,71278,71308,71337,71367,71397,71426,71455,71485,71514,71543,71573,71602,71632,71662,71691,71721,71751,71781,71810,71839,71869,71898,71927,71957,71986,72016,72046,72075,72105,72135,72164,72194,72223,72253,72282,72311,72341,72370,72400,72429,72459,72489,72518,72548,72577,72607,72637,72666,72695,72725,72754,72784,72813,72843,72872,72902,72931,72961,72991,73020,73050,73080,73109,73139,73168,73197,73227,73256,73286,73315,73345,73375,73404,73434,73464,73493,73523,73552,73581,73611,73640,73669,73699,73729,73758,73788,73818,73848,73877,73907,73936,73965,73995,74024,74053,74083,74113,74142,74172,74202,74231,74261,74291,74320,74349,74379,74408,74437,74467,74497,74526,74556,74586,74615,74645,74675,74704,74733,74763,74792,74822,74851,74881,74910,74940,74969,74999,75029,75058,75088,75117,75147,75176,75206,75235,75264,75294,75323,75353,75383,75412,75442,75472,75501,75531,75560,75590,75619,75648,75678,75707,75737,75766,75796,75826,75856,75885,75915,75944,75974,76003,76032,76062,76091,76121,76150,76180,76210,76239,76269,76299,76328,76358,76387,76416,76446,76475,76505,76534,76564,76593,76623,76653,76682,76712,76741,76771,76801,76830,76859,76889,76918,76948,76977,77007,77036,77066,77096,77125,77155,77185,77214,77243,77273,77302,77332,77361,77390,77420,77450,77479,77509,77539,77569,77598,77627,77657,77686,77715,77745,77774,77804,77833,77863,77893,77923,77952,77982,78011,78041,78070,78099,78129,78158,78188,78217,78247,78277,78307,78336,78366,78395,78425,78454,78483,78513,78542,78572,78601,78631,78661,78690,78720,78750,78779,78808,78838,78867,78897,78926,78956,78985,79015,79044,79074,79104,79133,79163,79192,79222,79251,79281,79310,79340,79369,79399,79428,79458,79487,79517,79546,79576,79606,79635,79665,79695,79724,79753,79783,79812,79841,79871,79900,79930,79960,79990]},{\"../main\":346,\"object-assign\":247}],346:[function(t,e,r){var n=t(\"object-assign\");function i(){this.regionalOptions=[],this.regionalOptions[\"\"]={invalidCalendar:\"Calendar {0} not found\",invalidDate:\"Invalid {0} date\",invalidMonth:\"Invalid {0} month\",invalidYear:\"Invalid {0} year\",differentCalendars:\"Cannot mix {0} and {1} dates\"},this.local=this.regionalOptions[\"\"],this.calendars={},this._localCals={}}function a(t,e,r,n){if(this._calendar=t,this._year=e,this._month=r,this._day=n,0===this._calendar._validateLevel&&!this._calendar.isValid(this._year,this._month,this._day))throw(c.local.invalidDate||c.regionalOptions[\"\"].invalidDate).replace(/\\{0\\}/,this._calendar.local.name)}function o(t,e){return\"000000\".substring(0,e-(t=\"\"+t).length)+t}function s(){this.shortYearCutoff=\"+10\"}function l(t){this.local=this.regionalOptions[t]||this.regionalOptions[\"\"]}n(i.prototype,{instance:function(t,e){t=(t||\"gregorian\").toLowerCase(),e=e||\"\";var r=this._localCals[t+\"-\"+e];if(!r&&this.calendars[t]&&(r=new this.calendars[t](e),this._localCals[t+\"-\"+e]=r),!r)throw(this.local.invalidCalendar||this.regionalOptions[\"\"].invalidCalendar).replace(/\\{0\\}/,t);return r},newDate:function(t,e,r,n,i){return(n=(null!=t&&t.year?t.calendar():\"string\"==typeof n?this.instance(n,i):n)||this.instance()).newDate(t,e,r)},substituteDigits:function(t){return function(e){return(e+\"\").replace(/[0-9]/g,(function(e){return t[e]}))}},substituteChineseDigits:function(t,e){return function(r){for(var n=\"\",i=0;r>0;){var a=r%10;n=(0===a?\"\":t[a]+e[i])+n,i++,r=Math.floor(r/10)}return 0===n.indexOf(t[1]+e[1])&&(n=n.substr(1)),n||t[0]}}}),n(a.prototype,{newDate:function(t,e,r){return this._calendar.newDate(null==t?this:t,e,r)},year:function(t){return 0===arguments.length?this._year:this.set(t,\"y\")},month:function(t){return 0===arguments.length?this._month:this.set(t,\"m\")},day:function(t){return 0===arguments.length?this._day:this.set(t,\"d\")},date:function(t,e,r){if(!this._calendar.isValid(t,e,r))throw(c.local.invalidDate||c.regionalOptions[\"\"].invalidDate).replace(/\\{0\\}/,this._calendar.local.name);return this._year=t,this._month=e,this._day=r,this},leap year:function(){return this._calendar.leap year(this)},epoch:function(){return this._calendar.epoch(this)},formatYear:function(){return this._calendar.formatYear(this)},monthOfYear:function(){return this._calendar.monthOfYear(this)},weekOfYear:function(){return this._calendar.weekOfYear(this)},daysInYear:function(){return this._calendar.daysInYear(this)},dayOfYear:function(){return this._calendar.dayOfYear(this)},daysInMonth:function(){return this._calendar.daysInMonth(this)},dayOfWeek:function(){return this._calendar.dayOfWeek(this)},weekDay:function(){return this._calendar.weekDay(this)},extraInfo:function(){return this._calendar.extraInfo(this)},add:function(t,e){return this._calendar.add(this,t,e)},set:function(t,e){return this._calendar.set(this,t,e)},compareTo:function(t){if(this._calendar.name!==t._calendar.name)throw(c.local.differentCalendars||c.regionalOptions[\"\"].differentCalendars).replace(/\\{0\\}/,this._calendar.local.name).replace(/\\{1\\}/,t._calendar.local.name);var e=this._year!==t._year?this._year-t._year:this._month!==t._month?this.monthOfYear()-t.monthOfYear():this._day-t._day;return 0===e?0:e<0?-1:1},calendar:function(){return this._calendar},toJD:function(){return this._calendar.toJD(this)},fromJD:function(t){return this._calendar.fromJD(t)},toJSDate:function(){return this._calendar.toJSDate(this)},fromJSDate:function(t){return this._calendar.fromJSDate(t)},toString:function(){return(this.year()<0?\"-\":\"\")+o(Math.abs(this.year()),4)+\"-\"+o(this.month(),2)+\"-\"+o(this.day(),2)}}),n(s.prototype,{_validateLevel:0,newDate:function(t,e,r){return null==t?this.today():(t.year&&(this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate),r=t.day(),e=t.month(),t=t.year()),new a(this,t,e,r))},today:function(){return this.fromJSDate(new Date)},epoch:function(t){return this._validate(t,this.minMonth,this.minDay,c.local.invalidYear||c.regionalOptions[\"\"].invalidYear).year()<0?this.local.epochs[0]:this.local.epochs[1]},formatYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,c.local.invalidYear||c.regionalOptions[\"\"].invalidYear);return(e.year()<0?\"-\":\"\")+o(Math.abs(e.year()),4)},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,c.local.invalidYear||c.regionalOptions[\"\"].invalidYear),12},monthOfYear:function(t,e){var r=this._validate(t,e,this.minDay,c.local.invalidMonth||c.regionalOptions[\"\"].invalidMonth);return(r.month()+this.monthsInYear(r)-this.firstMonth)%this.monthsInYear(r)+this.minMonth},fromMonthOfYear:function(t,e){var r=(e+this.firstMonth-2*this.minMonth)%this.monthsInYear(t)+this.minMonth;return this._validate(t,r,this.minDay,c.local.invalidMonth||c.regionalOptions[\"\"].invalidMonth),r},daysInYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,c.local.invalidYear||c.regionalOptions[\"\"].invalidYear);return this.leap year(e)?366:365},dayOfYear:function(t,e,r){var n=this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate);return n.toJD()-this.newDate(n.year(),this.fromMonthOfYear(n.year(),this.minMonth),this.minDay).toJD()+1},daysInWeek:function(){return 7},dayOfWeek:function(t,e,r){var n=this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate);return(Math.floor(this.toJD(n))+2)%this.daysInWeek()},extraInfo:function(t,e,r){return this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate),{}},add:function(t,e,r){return this._validate(t,this.minMonth,this.minDay,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate),this._correctAdd(t,this._add(t,e,r),e,r)},_add:function(t,e,r){if(this._validateLevel++,\"d\"===r||\"w\"===r){var n=t.toJD()+e*(\"w\"===r?this.daysInWeek():1),i=t.calendar().fromJD(n);return this._validateLevel--,[i.year(),i.month(),i.day()]}try{var a=t.year()+(\"y\"===r?e:0),o=t.monthOfYear()+(\"m\"===r?e:0);i=t.day();\"y\"===r?(t.month()!==this.fromMonthOfYear(a,o)&&(o=this.newDate(a,t.month(),this.minDay).monthOfYear()),o=Math.min(o,this.monthsInYear(a)),i=Math.min(i,this.daysInMonth(a,this.fromMonthOfYear(a,o)))):\"m\"===r&&(!function(t){for(;oe-1+t.minMonth;)a++,o-=e,e=t.monthsInYear(a)}(this),i=Math.min(i,this.daysInMonth(a,this.fromMonthOfYear(a,o))));var s=[a,this.fromMonthOfYear(a,o),i];return this._validateLevel--,s}catch(t){throw this._validateLevel--,t}},_correctAdd:function(t,e,r,n){if(!(this.hasYearZero||\"y\"!==n&&\"m\"!==n||0!==e[0]&&t.year()>0==e[0]>0)){var i={y:[1,1,\"y\"],m:[1,this.monthsInYear(-1),\"m\"],w:[this.daysInWeek(),this.daysInYear(-1),\"d\"],d:[1,this.daysInYear(-1),\"d\"]}[n],a=r<0?-1:1;e=this._add(t,r*i[0]+a*i[1],i[2])}return t.date(e[0],e[1],e[2])},set:function(t,e,r){this._validate(t,this.minMonth,this.minDay,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate);var n=\"y\"===r?e:t.year(),i=\"m\"===r?e:t.month(),a=\"d\"===r?e:t.day();return\"y\"!==r&&\"m\"!==r||(a=Math.min(a,this.daysInMonth(n,i))),t.date(n,i,a)},isValid:function(t,e,r){this._validateLevel++;var n=this.hasYearZero||0!==t;if(n){var i=this.newDate(t,e,this.minDay);n=e>=this.minMonth&&e-this.minMonth=this.minDay&&r-this.minDay13.5?13:1),c=i-(l>2.5?4716:4715);return c<=0&&c--,this.newDate(c,l,s)},toJSDate:function(t,e,r){var n=this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate),i=new Date(n.year(),n.month()-1,n.day());return i.setHours(0),i.setMinutes(0),i.setSeconds(0),i.setMilliseconds(0),i.setHours(i.getHours()>12?i.getHours()+2:0),i},fromJSDate:function(t){return this.newDate(t.getFullYear(),t.getMonth()+1,t.getDate())}});var c=e.exports=new i;c.cdate=a,c.baseCalendar=s,c.calendars.gregorian=l},{\"object-assign\":247}],347:[function(t,e,r){var n=t(\"object-assign\"),i=t(\"./main\");n(i.regionalOptions[\"\"],{invalidArguments:\"Invalid arguments\",invalidFormat:\"Cannot format a date from another calendar\",missingNumberAt:\"Missing number at position {0}\",unknownNameAt:\"Unknown name at position {0}\",unexpectedLiteralAt:\"Unexpected literal at position {0}\",unexpectedText:\"Additional text found at end\"}),i.local=i.regionalOptions[\"\"],n(i.cdate.prototype,{formatDate:function(t,e){return\"string\"!=typeof t&&(e=t,t=\"\"),this._calendar.formatDate(t||\"\",this,e)}}),n(i.baseCalendar.prototype,{UNIX_EPOCH:i.instance().newDate(1970,1,1).toJD(),SECS_PER_DAY:86400,TICKS_EPOCH:i.instance().jdEpoch,TICKS_PER_DAY:864e9,ATOM:\"yyyy-mm-dd\",COOKIE:\"D, dd M yyyy\",FULL:\"DD, MM d, yyyy\",ISO_8601:\"yyyy-mm-dd\",JULIAN:\"J\",RFC_822:\"D, d M yy\",RFC_850:\"DD, dd-M-yy\",RFC_1036:\"D, d M yy\",RFC_1123:\"D, d M yyyy\",RFC_2822:\"D, d M yyyy\",RSS:\"D, d M yy\",TICKS:\"!\",TIMESTAMP:\"@\",W3C:\"yyyy-mm-dd\",formatDate:function(t,e,r){if(\"string\"!=typeof t&&(r=e,e=t,t=\"\"),!e)return\"\";if(e.calendar()!==this)throw i.local.invalidFormat||i.regionalOptions[\"\"].invalidFormat;t=t||this.local.dateFormat;for(var n,a,o,s,l=(r=r||{}).dayNamesShort||this.local.dayNamesShort,c=r.dayNames||this.local.dayNames,u=r.monthNumbers||this.local.monthNumbers,f=r.monthNamesShort||this.local.monthNamesShort,h=r.monthNames||this.local.monthNames,p=(r.calculateWeek||this.local.calculateWeek,function(e,r){for(var n=1;w+n1}),d=function(t,e,r,n){var i=\"\"+e;if(p(t,n))for(;i.length1},x=function(t,r){var n=y(t,r),a=[2,3,n?4:2,n?4:2,10,11,20][\"oyYJ@!\".indexOf(t)+1],o=new RegExp(\"^-?\\\\d{1,\"+a+\"}\"),s=e.substring(A).match(o);if(!s)throw(i.local.missingNumberAt||i.regionalOptions[\"\"].missingNumberAt).replace(/\\{0\\}/,A);return A+=s[0].length,parseInt(s[0],10)},b=this,_=function(){if(\"function\"==typeof l){y(\"m\");var t=l.call(b,e.substring(A));return A+=t.length,t}return x(\"m\")},w=function(t,r,n,a){for(var o=y(t,a)?n:r,s=0;s-1){p=1,d=g;for(var E=this.daysInMonth(h,p);d>E;E=this.daysInMonth(h,p))p++,d-=E}return f>-1?this.fromJD(f):this.newDate(h,p,d)},determineDate:function(t,e,r,n,i){r&&\"object\"!=typeof r&&(i=n,n=r,r=null),\"string\"!=typeof n&&(i=n,n=\"\");var a=this;return e=e?e.newDate():null,t=null==t?e:\"string\"==typeof t?function(t){try{return a.parseDate(n,t,i)}catch(t){}for(var e=((t=t.toLowerCase()).match(/^c/)&&r?r.newDate():null)||a.today(),o=/([+-]?[0-9]+)\\s*(d|w|m|y)?/g,s=o.exec(t);s;)e.add(parseInt(s[1],10),s[2]||\"d\"),s=o.exec(t);return e}(t):\"number\"==typeof t?isNaN(t)||t===1/0||t===-1/0?e:a.today().add(t,\"d\"):a.newDate(t)}})},{\"./main\":346,\"object-assign\":247}],348:[function(t,e,r){\"use strict\";e.exports=[{path:\"\",backoff:0},{path:\"M-2.4,-3V3L0.6,0Z\",backoff:.6},{path:\"M-3.7,-2.5V2.5L1.3,0Z\",backoff:1.3},{path:\"M-4.45,-3L-1.65,-0.2V0.2L-4.45,3L1.55,0Z\",backoff:1.55},{path:\"M-2.2,-2.2L-0.2,-0.2V0.2L-2.2,2.2L-1.4,3L1.6,0L-1.4,-3Z\",backoff:1.6},{path:\"M-4.4,-2.1L-0.6,-0.2V0.2L-4.4,2.1L-4,3L2,0L-4,-3Z\",backoff:2},{path:\"M2,0A2,2 0 1,1 0,-2A2,2 0 0,1 2,0Z\",backoff:0,noRotate:!0},{path:\"M2,2V-2H-2V2Z\",backoff:0,noRotate:!0}]},{}],349:[function(t,e,r){\"use strict\";var n=t(\"./arrow_paths\"),i=t(\"../../plots/font_attributes\"),a=t(\"../../plots/cartesian/constants\"),o=t(\"../../plot_api/plot_template\").templatedArray;t(\"../../constants/axis_placeable_objects\");e.exports=o(\"annotation\",{visible:{valType:\"boolean\",dflt:!0,editType:\"calc+arraydraw\"},text:{valType:\"string\",editType:\"calc+arraydraw\"},textangle:{valType:\"angle\",dflt:0,editType:\"calc+arraydraw\"},font:i({editType:\"calc+arraydraw\",colorEditType:\"arraydraw\"}),width:{valType:\"number\",min:1,dflt:null,editType:\"calc+arraydraw\"},height:{valType:\"number\",min:1,dflt:null,editType:\"calc+arraydraw\"},opacity:{valType:\"number\",min:0,max:1,dflt:1,editType:\"arraydraw\"},align:{valType:\"enumerated\",values:[\"left\",\"center\",\"right\"],dflt:\"center\",editType:\"arraydraw\"},valign:{valType:\"enumerated\",values:[\"top\",\"middle\",\"bottom\"],dflt:\"middle\",editType:\"arraydraw\"},bgcolor:{valType:\"color\",dflt:\"rgba(0,0,0,0)\",editType:\"arraydraw\"},bordercolor:{valType:\"color\",dflt:\"rgba(0,0,0,0)\",editType:\"arraydraw\"},borderpad:{valType:\"number\",min:0,dflt:1,editType:\"calc+arraydraw\"},borderwidth:{valType:\"number\",min:0,dflt:1,editType:\"calc+arraydraw\"},showarrow:{valType:\"boolean\",dflt:!0,editType:\"calc+arraydraw\"},arrowcolor:{valType:\"color\",editType:\"arraydraw\"},arrowhead:{valType:\"integer\",min:0,max:n.length,dflt:1,editType:\"arraydraw\"},startarrowhead:{valType:\"integer\",min:0,max:n.length,dflt:1,editType:\"arraydraw\"},arrowside:{valType:\"flaglist\",flags:[\"end\",\"start\"],extras:[\"none\"],dflt:\"end\",editType:\"arraydraw\"},arrowsize:{valType:\"number\",min:.3,dflt:1,editType:\"calc+arraydraw\"},startarrowsize:{valType:\"number\",min:.3,dflt:1,editType:\"calc+arraydraw\"},arrowwidth:{valType:\"number\",min:.1,editType:\"calc+arraydraw\"},standoff:{valType:\"number\",min:0,dflt:0,editType:\"calc+arraydraw\"},startstandoff:{valType:\"number\",min:0,dflt:0,editType:\"calc+arraydraw\"},ax:{valType:\"any\",editType:\"calc+arraydraw\"},ay:{valType:\"any\",editType:\"calc+arraydraw\"},axref:{valType:\"enumerated\",dflt:\"pixel\",values:[\"pixel\",a.idRegex.x.toString()],editType:\"calc\"},ayref:{valType:\"enumerated\",dflt:\"pixel\",values:[\"pixel\",a.idRegex.y.toString()],editType:\"calc\"},xref:{valType:\"enumerated\",values:[\"paper\",a.idRegex.x.toString()],editType:\"calc\"},x:{valType:\"any\",editType:\"calc+arraydraw\"},xanchor:{valType:\"enumerated\",values:[\"auto\",\"left\",\"center\",\"right\"],dflt:\"auto\",editType:\"calc+arraydraw\"},xshift:{valType:\"number\",dflt:0,editType:\"calc+arraydraw\"},yref:{valType:\"enumerated\",values:[\"paper\",a.idRegex.y.toString()],editType:\"calc\"},y:{valType:\"any\",editType:\"calc+arraydraw\"},yanchor:{valType:\"enumerated\",values:[\"auto\",\"top\",\"middle\",\"bottom\"],dflt:\"auto\",editType:\"calc+arraydraw\"},yshift:{valType:\"number\",dflt:0,editType:\"calc+arraydraw\"},clicktoshow:{valType:\"enumerated\",values:[!1,\"onoff\",\"onout\"],dflt:!1,editType:\"arraydraw\"},xclick:{valType:\"any\",editType:\"arraydraw\"},yclick:{valType:\"any\",editType:\"arraydraw\"},hovertext:{valType:\"string\",editType:\"arraydraw\"},hoverlabel:{bgcolor:{valType:\"color\",editType:\"arraydraw\"},bordercolor:{valType:\"color\",editType:\"arraydraw\"},font:i({editType:\"arraydraw\"}),editType:\"arraydraw\"},captureevents:{valType:\"boolean\",editType:\"arraydraw\"},editType:\"calc\",_deprecated:{ref:{valType:\"string\",editType:\"calc\"}}})},{\"../../constants/axis_placeable_objects\":472,\"../../plot_api/plot_template\":543,\"../../plots/cartesian/constants\":561,\"../../plots/font_attributes\":585,\"./arrow_paths\":348}],350:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"./draw\").draw;function o(t){var e=t._fullLayout;n.filterVisible(e.annotations).forEach((function(e){var r=i.getFromId(t,e.xref),n=i.getFromId(t,e.yref),a=i.getRefType(e.xref),o=i.getRefType(e.yref);e._extremes={},\"range\"===a&&s(e,r),\"range\"===o&&s(e,n)}))}function s(t,e){var r,n=e._id,a=n.charAt(0),o=t[a],s=t[\"a\"+a],l=t[a+\"ref\"],c=t[\"a\"+a+\"ref\"],u=t[\"_\"+a+\"padplus\"],f=t[\"_\"+a+\"padminus\"],h={x:1,y:-1}[a]*t[a+\"shift\"],p=3*t.arrowsize*t.arrowwidth||0,d=p+h,g=p-h,m=3*t.startarrowsize*t.arrowwidth||0,v=m+h,y=m-h;if(c===l){var x=i.findExtremes(e,[e.r2c(o)],{ppadplus:d,ppadminus:g}),b=i.findExtremes(e,[e.r2c(s)],{ppadplus:Math.max(u,v),ppadminus:Math.max(f,y)});r={min:[x.min[0],b.min[0]],max:[x.max[0],b.max[0]]}}else v=s?v+s:v,y=s?y-s:y,r=i.findExtremes(e,[e.r2c(o)],{ppadplus:Math.max(u,d,v),ppadminus:Math.max(f,g,y)});t._extremes[n]=r}e.exports=function(t){var e=t._fullLayout;if(n.filterVisible(e.annotations).length&&t._fullData.length)return n.syncOrAsync([a,o],t)}},{\"../../lib\":503,\"../../plots/cartesian/axes\":554,\"./draw\":355}],351:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../registry\"),a=t(\"../../plot_api/plot_template\").arrayEditor;function o(t,e){var r,n,i,a,o,l,c,u=t._fullLayout.annotations,f=[],h=[],p=[],d=(e||[]).length;for(r=0;r0||r.explicitOff.length>0},onClick:function(t,e){var r,s,l=o(t,e),c=l.on,u=l.off.concat(l.explicitOff),f={},h=t._fullLayout.annotations;if(!c.length&&!u.length)return;for(r=0;r2/3?\"right\":\"center\"),{center:0,middle:0,left:.5,bottom:-.5,right:-.5,top:.5}[e]}for(var W=!1,X=[\"x\",\"y\"],Z=0;Z1)&&(nt===rt?((pt=it.r2fraction(e[\"a\"+et]))<0||pt>1)&&(W=!0):W=!0),J=it._offset+it.r2p(e[et]),$=.5}else{var dt=\"domain\"===ht;\"x\"===et?(Q=e[et],J=dt?it._offset+it._length*Q:J=T.l+T.w*Q):(Q=1-e[et],J=dt?it._offset+it._length*Q:J=T.t+T.h*Q),$=e.showarrow?.5:Q}if(e.showarrow){ft.head=J;var gt=e[\"a\"+et];if(tt=ot*q(.5,e.xanchor)-st*q(.5,e.yanchor),nt===rt){var mt=l.getRefType(nt);\"domain\"===mt?(\"y\"===et&&(gt=1-gt),ft.tail=it._offset+it._length*gt):\"paper\"===mt?\"y\"===et?(gt=1-gt,ft.tail=T.t+T.h*gt):ft.tail=T.l+T.w*gt:ft.tail=it._offset+it.r2p(gt),K=tt}else ft.tail=J+gt,K=tt+gt;ft.text=ft.tail+tt;var vt=w[\"x\"===et?\"width\":\"height\"];if(\"paper\"===rt&&(ft.head=o.constrain(ft.head,1,vt-1)),\"pixel\"===nt){var yt=-Math.max(ft.tail-3,ft.text),xt=Math.min(ft.tail+3,ft.text)-vt;yt>0?(ft.tail+=yt,ft.text+=yt):xt>0&&(ft.tail-=xt,ft.text-=xt)}ft.tail+=ut,ft.head+=ut}else K=tt=lt*q($,ct),ft.text=J+tt;ft.text+=ut,tt+=ut,K+=ut,e[\"_\"+et+\"padplus\"]=lt/2+K,e[\"_\"+et+\"padminus\"]=lt/2-K,e[\"_\"+et+\"size\"]=lt,e[\"_\"+et+\"shift\"]=tt}if(W)R.remove();else{var bt=0,_t=0;if(\"left\"!==e.align&&(bt=(A-b)*(\"center\"===e.align?.5:1)),\"top\"!==e.valign&&(_t=(D-_)*(\"middle\"===e.valign?.5:1)),f)n.select(\"svg\").attr({x:N+bt-1,y:N+_t}).call(u.setClipUrl,U?L:null,t);else{var wt=N+_t-g.top,Tt=N+bt-g.left;G.call(h.positionText,Tt,wt).call(u.setClipUrl,U?L:null,t)}V.select(\"rect\").call(u.setRect,N,N,A,D),j.call(u.setRect,F/2,F/2,B-F,H-F),R.call(u.setTranslate,Math.round(C.x.text-B/2),Math.round(C.y.text-H/2)),O.attr({transform:\"rotate(\"+P+\",\"+C.x.text+\",\"+C.y.text+\")\"});var kt,At=function(r,n){I.selectAll(\".annotation-arrow-g\").remove();var l=C.x.head,f=C.y.head,h=C.x.tail+r,p=C.y.tail+n,g=C.x.text+r,b=C.y.text+n,_=o.rotationXYMatrix(P,g,b),w=o.apply2DTransform(_),A=o.apply2DTransform2(_),L=+j.attr(\"width\"),z=+j.attr(\"height\"),D=g-.5*L,F=D+L,B=b-.5*z,N=B+z,U=[[D,B,D,N],[D,N,F,N],[F,N,F,B],[F,B,D,B]].map(A);if(!U.reduce((function(t,e){return t^!!o.segmentsIntersect(l,f,l+1e6,f+1e6,e[0],e[1],e[2],e[3])}),!1)){U.forEach((function(t){var e=o.segmentsIntersect(h,p,l,f,t[0],t[1],t[2],t[3]);e&&(h=e.x,p=e.y)}));var V=e.arrowwidth,H=e.arrowcolor,q=e.arrowside,G=I.append(\"g\").style({opacity:c.opacity(H)}).classed(\"annotation-arrow-g\",!0),Y=G.append(\"path\").attr(\"d\",\"M\"+h+\",\"+p+\"L\"+l+\",\"+f).style(\"stroke-width\",V+\"px\").call(c.stroke,c.rgb(H));if(m(Y,q,e),k.annotationPosition&&Y.node().parentNode&&!a){var W=l,X=f;if(e.standoff){var Z=Math.sqrt(Math.pow(l-h,2)+Math.pow(f-p,2));W+=e.standoff*(h-l)/Z,X+=e.standoff*(p-f)/Z}var J,K,Q=G.append(\"path\").classed(\"annotation-arrow\",!0).classed(\"anndrag\",!0).classed(\"cursor-move\",!0).attr({d:\"M3,3H-3V-3H3ZM0,0L\"+(h-W)+\",\"+(p-X),transform:s(W,X)}).style(\"stroke-width\",V+6+\"px\").call(c.stroke,\"rgba(0,0,0,0)\").call(c.fill,\"rgba(0,0,0,0)\");d.init({element:Q.node(),gd:t,prepFn:function(){var t=u.getTranslate(R);J=t.x,K=t.y,v&&v.autorange&&M(v._name+\".autorange\",!0),x&&x.autorange&&M(x._name+\".autorange\",!0)},moveFn:function(t,r){var n=w(J,K),i=n[0]+t,a=n[1]+r;R.call(u.setTranslate,i,a),S(\"x\",y(v,t,\"x\",T,e)),S(\"y\",y(x,r,\"y\",T,e)),e.axref===e.xref&&S(\"ax\",y(v,t,\"ax\",T,e)),e.ayref===e.yref&&S(\"ay\",y(x,r,\"ay\",T,e)),G.attr(\"transform\",s(t,r)),O.attr({transform:\"rotate(\"+P+\",\"+i+\",\"+a+\")\"})},doneFn:function(){i.call(\"_guiRelayout\",t,E());var e=document.querySelector(\".js-notes-box-panel\");e&&e.redraw(e.selectedObj)}})}}};if(e.showarrow&&At(0,0),z)d.init({element:R.node(),gd:t,prepFn:function(){kt=O.attr(\"transform\")},moveFn:function(t,r){var n=\"pointer\";if(e.showarrow)e.axref===e.xref?S(\"ax\",y(v,t,\"ax\",T,e)):S(\"ax\",e.ax+t),e.ayref===e.yref?S(\"ay\",y(x,r,\"ay\",T.w,e)):S(\"ay\",e.ay+r),At(t,r);else{if(a)return;var i,o;if(v)i=y(v,t,\"x\",T,e);else{var l=e._xsize/T.w,c=e.x+(e._xshift-e.xshift)/T.w-l/2;i=d.align(c+t/T.w,l,0,1,e.xanchor)}if(x)o=y(x,r,\"y\",T,e);else{var u=e._ysize/T.h,f=e.y-(e._yshift+e.yshift)/T.h-u/2;o=d.align(f-r/T.h,u,0,1,e.yanchor)}S(\"x\",i),S(\"y\",o),v&&x||(n=d.getCursor(v?.5:i,x?.5:o,e.xanchor,e.yanchor))}O.attr({transform:s(t,r)+kt}),p(R,n)},clickFn:function(r,n){e.captureevents&&t.emit(\"plotly_clickannotation\",Y(n))},doneFn:function(){p(R),i.call(\"_guiRelayout\",t,E());var e=document.querySelector(\".js-notes-box-panel\");e&&e.redraw(e.selectedObj)}})}}}e.exports={draw:function(t){var e=t._fullLayout;e._infolayer.selectAll(\".annotation\").remove();for(var r=0;r=0,x=e.indexOf(\"end\")>=0,b=d.backoff*m+r.standoff,_=g.backoff*v+r.startstandoff;if(\"line\"===p.nodeName){o={x:+t.attr(\"x1\"),y:+t.attr(\"y1\")},u={x:+t.attr(\"x2\"),y:+t.attr(\"y2\")};var w=o.x-u.x,T=o.y-u.y;if(h=(f=Math.atan2(T,w))+Math.PI,b&&_&&b+_>Math.sqrt(w*w+T*T))return void z();if(b){if(b*b>w*w+T*T)return void z();var k=b*Math.cos(f),A=b*Math.sin(f);u.x+=k,u.y+=A,t.attr({x2:u.x,y2:u.y})}if(_){if(_*_>w*w+T*T)return void z();var M=_*Math.cos(f),S=_*Math.sin(f);o.x-=M,o.y-=S,t.attr({x1:o.x,y1:o.y})}}else if(\"path\"===p.nodeName){var E=p.getTotalLength(),L=\"\";if(E1){c=!0;break}}c?t.fullLayout._infolayer.select(\".annotation-\"+t.id+'[data-index=\"'+s+'\"]').remove():(l._pdata=i(t.glplot.cameraParams,[e.xaxis.r2l(l.x)*r[0],e.yaxis.r2l(l.y)*r[1],e.zaxis.r2l(l.z)*r[2]]),n(t.graphDiv,l,s,t.id,l._xa,l._ya))}}},{\"../../plots/gl3d/project\":607,\"../annotations/draw\":355}],362:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\");e.exports={moduleType:\"component\",name:\"annotations3d\",schema:{subplots:{scene:{annotations:t(\"./attributes\")}}},layoutAttributes:t(\"./attributes\"),handleDefaults:t(\"./defaults\"),includeBasePlot:function(t,e){var r=n.subplotsRegistry.gl3d;if(!r)return;for(var a=r.attrRegex,o=Object.keys(t),s=0;s=0))return t;if(3===o)n[o]>1&&(n[o]=1);else if(n[o]>=1)return t}var s=Math.round(255*n[0])+\", \"+Math.round(255*n[1])+\", \"+Math.round(255*n[2]);return a?\"rgba(\"+s+\", \"+n[3]+\")\":\"rgb(\"+s+\")\"}o.tinyRGB=function(t){var e=t.toRgb();return\"rgb(\"+Math.round(e.r)+\", \"+Math.round(e.g)+\", \"+Math.round(e.b)+\")\"},o.rgb=function(t){return o.tinyRGB(n(t))},o.opacity=function(t){return t?n(t).getAlpha():0},o.addOpacity=function(t,e){var r=n(t).toRgb();return\"rgba(\"+Math.round(r.r)+\", \"+Math.round(r.g)+\", \"+Math.round(r.b)+\", \"+e+\")\"},o.combine=function(t,e){var r=n(t).toRgb();if(1===r.a)return n(t).toRgbString();var i=n(e||c).toRgb(),a=1===i.a?i:{r:255*(1-i.a)+i.r*i.a,g:255*(1-i.a)+i.g*i.a,b:255*(1-i.a)+i.b*i.a},o={r:a.r*(1-r.a)+r.r*r.a,g:a.g*(1-r.a)+r.g*r.a,b:a.b*(1-r.a)+r.b*r.a};return n(o).toRgbString()},o.contrast=function(t,e,r){var i=n(t);return 1!==i.getAlpha()&&(i=n(o.combine(t,c))),(i.isDark()?e?i.lighten(e):c:r?i.darken(r):l).toString()},o.stroke=function(t,e){var r=n(e);t.style({stroke:o.tinyRGB(r),\"stroke-opacity\":r.getAlpha()})},o.fill=function(t,e){var r=n(e);t.style({fill:o.tinyRGB(r),\"fill-opacity\":r.getAlpha()})},o.clean=function(t){if(t&&\"object\"==typeof t){var e,r,n,i,s=Object.keys(t);for(e=0;e0?n>=l:n<=l));i++)n>u&&n0?n>=l:n<=l));i++)n>r[0]&&n1){var ct=Math.pow(10,Math.floor(Math.log(lt)/Math.LN10));ot*=ct*c.roundUp(lt/ct,[2,5,10]),(Math.abs(q.start)/q.size+1e-6)%1<2e-6&&(it.tick0=0)}it.dtick=ot}it.domain=o?[rt+I/R.h,rt+K-I/R.h]:[rt+P/R.w,rt+K-P/R.w],it.setScale(),t.attr(\"transform\",u(Math.round(R.l),Math.round(R.t)));var ut,ft=t.select(\".\"+A.cbtitleunshift).attr(\"transform\",u(-Math.round(R.l),-Math.round(R.t))),ht=it.ticklabelposition,pt=it.title.font.size,dt=t.select(\".\"+A.cbaxis),gt=0,mt=0;function vt(n,i){var a={propContainer:it,propName:e._propPrefix+\"title\",traceIndex:e._traceIndex,_meta:e._meta,placeholder:D._dfltTitle.colorbar,containerGroup:t.select(\".\"+A.cbtitle)},o=\"h\"===n.charAt(0)?n.substr(1):\"h\"+n;t.selectAll(\".\"+o+\",.\"+o+\"-math-group\").remove(),g.draw(r,n,f(a,i||{}))}return c.syncOrAsync([a.previousPromises,function(){var t,e;(o&&at||!o&&!at)&&(\"top\"===j&&(t=P+R.l+R.w*O,e=I+R.t+R.h*(1-rt-K)+3+.75*pt),\"bottom\"===j&&(t=P+R.l+R.w*O,e=I+R.t+R.h*(1-rt)-3-.25*pt),\"right\"===j&&(e=I+R.t+R.h*z+3+.75*pt,t=P+R.l+R.w*rt),vt(it._id+\"title\",{attributes:{x:t,y:e,\"text-anchor\":o?\"start\":\"middle\"}}))},function(){if(!o&&!at||o&&at){var a,l=t.select(\".\"+A.cbtitle),f=l.select(\"text\"),h=[-M/2,M/2],d=l.select(\".h\"+it._id+\"title-math-group\").node(),g=15.6;if(f.node()&&(g=parseInt(f.node().style.fontSize,10)*w),d?(a=p.bBox(d),mt=a.width,(gt=a.height)>g&&(h[1]-=(gt-g)/2)):f.node()&&!f.classed(A.jsPlaceholder)&&(a=p.bBox(f.node()),mt=a.width,gt=a.height),o){if(gt){if(gt+=5,\"top\"===j)it.domain[1]-=gt/R.h,h[1]*=-1;else{it.domain[0]+=gt/R.h;var v=m.lineCount(f);h[1]+=(1-v)*g}l.attr(\"transform\",u(h[0],h[1])),it.setScale()}}else mt&&(\"right\"===j&&(it.domain[0]+=(mt+pt/2)/R.w),l.attr(\"transform\",u(h[0],h[1])),it.setScale())}t.selectAll(\".\"+A.cbfills+\",.\"+A.cblines).attr(\"transform\",o?u(0,Math.round(R.h*(1-it.domain[1]))):u(Math.round(R.w*it.domain[0]),0)),dt.attr(\"transform\",o?u(0,Math.round(-R.t)):u(Math.round(-R.l),0));var y=t.select(\".\"+A.cbfills).selectAll(\"rect.\"+A.cbfill).attr(\"style\",\"\").data(Y);y.enter().append(\"rect\").classed(A.cbfill,!0).style(\"stroke\",\"none\"),y.exit().remove();var x=U.map(it.c2p).map(Math.round).sort((function(t,e){return t-e}));y.each((function(t,a){var s=[0===a?U[0]:(Y[a]+Y[a-1])/2,a===Y.length-1?U[1]:(Y[a]+Y[a+1])/2].map(it.c2p).map(Math.round);o&&(s[1]=c.constrain(s[1]+(s[1]>s[0])?1:-1,x[0],x[1]));var l=n.select(this).attr(o?\"x\":\"y\",Q).attr(o?\"y\":\"x\",n.min(s)).attr(o?\"width\":\"height\",Math.max(X,2)).attr(o?\"height\":\"width\",Math.max(n.max(s)-n.min(s),2));if(e._fillgradient)p.gradient(l,r,e._id,o?\"vertical\":\"horizontalreversed\",e._fillgradient,\"fill\");else{var u=H(t).replace(\"e-\",\"\");l.attr(\"fill\",i(u).toHexString())}}));var b=t.select(\".\"+A.cblines).selectAll(\"path.\"+A.cbline).data(B.color&&B.width?W:[]);b.enter().append(\"path\").classed(A.cbline,!0),b.exit().remove(),b.each((function(t){var e=Q,r=Math.round(it.c2p(t))+B.width/2%1;n.select(this).attr(\"d\",\"M\"+(o?e+\",\"+r:r+\",\"+e)+(o?\"h\":\"v\")+X).call(p.lineGroupStyle,B.width,V(t),B.dash)})),dt.selectAll(\"g.\"+it._id+\"tick,path\").remove();var _=Q+X+(M||0)/2-(\"outside\"===e.ticks?1:0),T=s.calcTicks(it),k=s.getTickSigns(it)[2];return s.drawTicks(r,it,{vals:\"inside\"===it.ticks?s.clipEnds(it,T):T,layer:dt,path:s.makeTickPath(it,_,k),transFn:s.makeTransTickFn(it)}),s.drawLabels(r,it,{vals:T,layer:dt,transFn:s.makeTransTickLabelFn(it),labelFns:s.makeLabelFns(it,_)})},function(){if(o&&!at||!o&&at){var t,i,a=it.position||0,s=it._offset+it._length/2;if(\"right\"===j)i=s,t=R.l+R.w*a+10+pt*(it.showticklabels?1:.5);else if(t=s,\"bottom\"===j&&(i=R.t+R.h*a+10+(-1===ht.indexOf(\"inside\")?it.tickfont.size:0)+(\"intside\"!==it.ticks&&e.ticklen||0)),\"top\"===j){var l=N.text.split(\"
\").length;i=R.t+R.h*a+10-X-w*pt*l}vt((o?\"h\":\"v\")+it._id+\"title\",{avoid:{selection:n.select(r).selectAll(\"g.\"+it._id+\"tick\"),side:j,offsetTop:o?0:R.t,offsetLeft:o?R.l:0,maxShift:o?D.width:D.height},attributes:{x:t,y:i,\"text-anchor\":\"middle\"},transform:{rotate:o?-90:0,offset:0}})}},a.previousPromises,function(){var n,s=X+M/2;-1===ht.indexOf(\"inside\")&&(n=p.bBox(dt.node()),s+=o?n.width:n.height),ut=ft.select(\"text\");var c=0,f=o&&\"top\"===j,g=!o&&\"right\"===j,m=0;if(ut.node()&&!ut.classed(A.jsPlaceholder)){var y,x=ft.select(\".h\"+it._id+\"title-math-group\").node();x&&(o&&at||!o&&!at)?(c=(n=p.bBox(x)).width,y=n.height):(c=(n=p.bBox(ft.node())).right-R.l-(o?Q:nt),y=n.bottom-R.t-(o?nt:Q),o||\"top\"!==j||(s+=n.height,m=n.height)),g&&(ut.attr(\"transform\",u(c/2+pt/2,0)),c*=2),s=Math.max(s,o?c:y)}var b=2*(o?P:I)+s+S+M/2,w=0;!o&&N.text&&\"bottom\"===C&&z<=0&&(b+=w=b/2,m+=w),D._hColorbarMoveTitle=w,D._hColorbarMoveCBTitle=m;var F=S+M;t.select(\".\"+A.cbbg).attr(\"x\",(o?Q:nt)-F/2-(o?P:0)).attr(\"y\",(o?nt:Q)-(o?J:I+m-w)).attr(o?\"width\":\"height\",Math.max(b-w,2)).attr(o?\"height\":\"width\",Math.max(J+F,2)).call(d.fill,E).call(d.stroke,e.bordercolor).style(\"stroke-width\",S);var B=g?Math.max(c-10,0):0;if(t.selectAll(\".\"+A.cboutline).attr(\"x\",(o?Q:nt+P)+B).attr(\"y\",(o?nt+I-J:Q)+(f?gt:0)).attr(o?\"width\":\"height\",Math.max(X,2)).attr(o?\"height\":\"width\",Math.max(J-(o?2*I+gt:2*P+B),2)).call(d.stroke,e.outlinecolor).style({fill:\"none\",\"stroke-width\":M}),t.attr(\"transform\",u(R.l-(o?$*b:0),R.t-(o?0:(1-tt)*b-m))),!o&&(S||i(E).getAlpha()&&!i.equals(D.paper_bgcolor,E))){var U=dt.selectAll(\"text\"),V=U[0].length,H=t.select(\".\"+A.cbbg).node(),q=p.bBox(H),G=p.getTranslate(t);U.each((function(t,e){var r=V-1;if(0===e||e===r){var n,i=p.bBox(this),a=p.getTranslate(this);if(e===r){var o=i.right+a.x;(n=q.right+G.x+nt-S-2+O-o)>0&&(n=0)}else if(0===e){var s=i.left+a.x;(n=q.left+G.x+nt+S+2-s)<0&&(n=0)}n&&(V<3?this.setAttribute(\"transform\",\"translate(\"+n+\",0) \"+this.getAttribute(\"transform\")):this.setAttribute(\"visibility\",\"hidden\"))}}))}var Y={},W=T[L],Z=k[L],K=T[C],et=k[C],rt=b-X;o?(\"pixels\"===h?(Y.y=z,Y.t=J*K,Y.b=J*et):(Y.t=Y.b=0,Y.yt=z+l*K,Y.yb=z-l*et),\"pixels\"===_?(Y.x=O,Y.l=b*W,Y.r=b*Z):(Y.l=rt*W,Y.r=rt*Z,Y.xl=O-v*W,Y.xr=O+v*Z)):(\"pixels\"===h?(Y.x=O,Y.l=J*W,Y.r=J*Z):(Y.l=Y.r=0,Y.xl=O+l*W,Y.xr=O-l*Z),\"pixels\"===_?(Y.y=1-z,Y.t=b*K,Y.b=b*et):(Y.t=rt*K,Y.b=rt*et,Y.yt=z-v*K,Y.yb=z+v*et)),a.autoMargin(r,e._id,Y)}],r)}(r,e,t);v&&v.then&&(t._promises||[]).push(v),t._context.edits.colorbarPosition&&function(t,e,r){var n,i,a,s=\"v\"===e.orientation,c=r._fullLayout._size;l.init({element:t.node(),gd:r,prepFn:function(){n=t.attr(\"transform\"),h(t)},moveFn:function(r,o){t.attr(\"transform\",n+u(r,o)),i=l.align((s?e._uFrac:e._vFrac)+r/c.w,s?e._thickFrac:e._lenFrac,0,1,e.xanchor),a=l.align((s?e._vFrac:1-e._uFrac)-o/c.h,s?e._lenFrac:e._thickFrac,0,1,e.yanchor);var f=l.getCursor(i,a,e.xanchor,e.yanchor);h(t,f)},doneFn:function(){if(h(t),void 0!==i&&void 0!==a){var n={};n[e._propPrefix+\"x\"]=i,n[e._propPrefix+\"y\"]=a,void 0!==e._traceIndex?o.call(\"_guiRestyle\",r,n,e._traceIndex):o.call(\"_guiRelayout\",r,n)}}})}(r,e,t)})),e.exit().each((function(e){a.autoMargin(t,e._id)})).remove(),e.order()}}},{\"../../constants/alignment\":471,\"../../lib\":503,\"../../lib/extend\":493,\"../../lib/setcursor\":524,\"../../lib/svg_text_utils\":529,\"../../plots/cartesian/axes\":554,\"../../plots/cartesian/axis_defaults\":556,\"../../plots/cartesian/layout_attributes\":569,\"../../plots/cartesian/position_defaults\":572,\"../../plots/plots\":619,\"../../registry\":638,\"../color\":366,\"../colorscale/helpers\":377,\"../dragelement\":385,\"../drawing\":388,\"../titles\":464,\"./constants\":368,\"@plotly/d3\":58,tinycolor2:312}],371:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t){return n.isPlainObject(t.colorbar)}},{\"../../lib\":503}],372:[function(t,e,r){\"use strict\";e.exports={moduleType:\"component\",name:\"colorbar\",attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),draw:t(\"./draw\").draw,hasColorbar:t(\"./has_colorbar\")}},{\"./attributes\":367,\"./defaults\":369,\"./draw\":370,\"./has_colorbar\":371}],373:[function(t,e,r){\"use strict\";var n=t(\"../colorbar/attributes\"),i=t(\"../../lib/regex\").counter,a=t(\"../../lib/sort_object_keys\"),o=t(\"./scales.js\").scales;a(o);function s(t){return\"`\"+t+\"`\"}e.exports=function(t,e){t=t||\"\";var r,a=(e=e||{}).cLetter||\"c\",l=(\"onlyIfNumerical\"in e?e.onlyIfNumerical:Boolean(t),\"noScale\"in e?e.noScale:\"marker.line\"===t),c=\"showScaleDflt\"in e?e.showScaleDflt:\"z\"===a,u=\"string\"==typeof e.colorscaleDflt?o[e.colorscaleDflt]:null,f=e.editTypeOverride||\"\",h=t?t+\".\":\"\";\"colorAttr\"in e?(r=e.colorAttr,e.colorAttr):s(h+(r={z:\"z\",c:\"color\"}[a]));var p=a+\"auto\",d=a+\"min\",g=a+\"max\",m=a+\"mid\",v=(s(h+p),s(h+d),s(h+g),{});v[d]=v[g]=void 0;var y={};y[p]=!1;var x={};return\"color\"===r&&(x.color={valType:\"color\",arrayOk:!0,editType:f||\"style\"},e.anim&&(x.color.anim=!0)),x[p]={valType:\"boolean\",dflt:!0,editType:\"calc\",impliedEdits:v},x[d]={valType:\"number\",dflt:null,editType:f||\"plot\",impliedEdits:y},x[g]={valType:\"number\",dflt:null,editType:f||\"plot\",impliedEdits:y},x[m]={valType:\"number\",dflt:null,editType:\"calc\",impliedEdits:v},x.colorscale={valType:\"colorscale\",editType:\"calc\",dflt:u,impliedEdits:{autocolorscale:!1}},x.autocolorscale={valType:\"boolean\",dflt:!1!==e.autoColorDflt,editType:\"calc\",impliedEdits:{colorscale:void 0}},x.reversescale={valType:\"boolean\",dflt:!1,editType:\"plot\"},l||(x.showscale={valType:\"boolean\",dflt:c,editType:\"calc\"},x.colorbar=n),e.noColorAxis||(x.coloraxis={valType:\"subplotid\",regex:i(\"coloraxis\"),dflt:null,editType:\"calc\"}),x}},{\"../../lib/regex\":520,\"../../lib/sort_object_keys\":526,\"../colorbar/attributes\":367,\"./scales.js\":381}],374:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../lib\"),a=t(\"./helpers\").extractOpts;e.exports=function(t,e,r){var o,s=t._fullLayout,l=r.vals,c=r.containerStr,u=c?i.nestedProperty(e,c).get():e,f=a(u),h=!1!==f.auto,p=f.min,d=f.max,g=f.mid,m=function(){return i.aggNums(Math.min,null,l)},v=function(){return i.aggNums(Math.max,null,l)};(void 0===p?p=m():h&&(p=u._colorAx&&n(p)?Math.min(p,m()):m()),void 0===d?d=v():h&&(d=u._colorAx&&n(d)?Math.max(d,v()):v()),h&&void 0!==g&&(d-g>g-p?p=g-(d-g):d-g=0?s.colorscale.sequential:s.colorscale.sequentialminus,f._sync(\"colorscale\",o))}},{\"../../lib\":503,\"./helpers\":377,\"fast-isnumeric\":190}],375:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./helpers\").hasColorscale,a=t(\"./helpers\").extractOpts;e.exports=function(t,e){function r(t,e){var r=t[\"_\"+e];void 0!==r&&(t[e]=r)}function o(t,i){var o=i.container?n.nestedProperty(t,i.container).get():t;if(o)if(o.coloraxis)o._colorAx=e[o.coloraxis];else{var s=a(o),l=s.auto;(l||void 0===s.min)&&r(o,i.min),(l||void 0===s.max)&&r(o,i.max),s.autocolorscale&&r(o,\"colorscale\")}}for(var s=0;s=0;n--,i++){var a=t[n];r[i]=[1-a[0],a[1]]}return r}function d(t,e){e=e||{};for(var r=t.domain,o=t.range,l=o.length,c=new Array(l),u=0;u4/3-s?o:s}},{}],383:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=[[\"sw-resize\",\"s-resize\",\"se-resize\"],[\"w-resize\",\"move\",\"e-resize\"],[\"nw-resize\",\"n-resize\",\"ne-resize\"]];e.exports=function(t,e,r,a){return t=\"left\"===r?0:\"center\"===r?1:\"right\"===r?2:n.constrain(Math.floor(3*t),0,2),e=\"bottom\"===a?0:\"middle\"===a?1:\"top\"===a?2:n.constrain(Math.floor(3*e),0,2),i[e][t]}},{\"../../lib\":503}],384:[function(t,e,r){\"use strict\";r.selectMode=function(t){return\"lasso\"===t||\"select\"===t},r.drawMode=function(t){return\"drawclosedpath\"===t||\"drawopenpath\"===t||\"drawline\"===t||\"drawrect\"===t||\"drawcircle\"===t},r.openMode=function(t){return\"drawline\"===t||\"drawopenpath\"===t},r.rectMode=function(t){return\"select\"===t||\"drawline\"===t||\"drawrect\"===t||\"drawcircle\"===t},r.freeMode=function(t){return\"lasso\"===t||\"drawclosedpath\"===t||\"drawopenpath\"===t},r.selectingOrDrawing=function(t){return r.freeMode(t)||r.rectMode(t)}},{}],385:[function(t,e,r){\"use strict\";var n=t(\"mouse-event-offset\"),i=t(\"has-hover\"),a=t(\"has-passive-events\"),o=t(\"../../lib\").removeElement,s=t(\"../../plots/cartesian/constants\"),l=e.exports={};l.align=t(\"./align\"),l.getCursor=t(\"./cursor\");var c=t(\"./unhover\");function u(){var t=document.createElement(\"div\");t.className=\"dragcover\";var e=t.style;return e.position=\"fixed\",e.left=0,e.right=0,e.top=0,e.bottom=0,e.zIndex=999999999,e.background=\"none\",document.body.appendChild(t),t}function f(t){return n(t.changedTouches?t.changedTouches[0]:t,document.body)}l.unhover=c.wrapped,l.unhoverRaw=c.raw,l.init=function(t){var e,r,n,c,h,p,d,g,m=t.gd,v=1,y=m._context.doubleClickDelay,x=t.element;m._mouseDownTime||(m._mouseDownTime=0),x.style.pointerEvents=\"all\",x.onmousedown=_,a?(x._ontouchstart&&x.removeEventListener(\"touchstart\",x._ontouchstart),x._ontouchstart=_,x.addEventListener(\"touchstart\",_,{passive:!1})):x.ontouchstart=_;var b=t.clampFn||function(t,e,r){return Math.abs(t)y&&(v=Math.max(v-1,1)),m._dragged)t.doneFn&&t.doneFn();else if(t.clickFn&&t.clickFn(v,p),!g){var r;try{r=new MouseEvent(\"click\",e)}catch(t){var n=f(e);(r=document.createEvent(\"MouseEvents\")).initMouseEvent(\"click\",e.bubbles,e.cancelable,e.view,e.detail,e.screenX,e.screenY,n[0],n[1],e.ctrlKey,e.altKey,e.shiftKey,e.metaKey,e.button,e.relatedTarget)}d.dispatchEvent(r)}m._dragging=!1,m._dragged=!1}else m._dragged=!1}},l.coverSlip=u},{\"../../lib\":503,\"../../plots/cartesian/constants\":561,\"./align\":382,\"./cursor\":383,\"./unhover\":386,\"has-hover\":228,\"has-passive-events\":229,\"mouse-event-offset\":242}],386:[function(t,e,r){\"use strict\";var n=t(\"../../lib/events\"),i=t(\"../../lib/throttle\"),a=t(\"../../lib/dom\").getGraphDiv,o=t(\"../fx/constants\"),s=e.exports={};s.wrapped=function(t,e,r){(t=a(t))._fullLayout&&i.clear(t._fullLayout._uid+o.HOVERID),s.raw(t,e,r)},s.raw=function(t,e){var r=t._fullLayout,i=t._hoverdata;e||(e={}),e.target&&!t._dragged&&!1===n.triggerHandler(t,\"plotly_beforehover\",e)||(r._hoverlayer.selectAll(\"g\").remove(),r._hoverlayer.selectAll(\"line\").remove(),r._hoverlayer.selectAll(\"circle\").remove(),t._hoverdata=void 0,e.target&&i&&t.emit(\"plotly_unhover\",{event:e,points:i}))}},{\"../../lib/dom\":491,\"../../lib/events\":492,\"../../lib/throttle\":530,\"../fx/constants\":400}],387:[function(t,e,r){\"use strict\";r.dash={valType:\"string\",values:[\"solid\",\"dot\",\"dash\",\"longdash\",\"dashdot\",\"longdashdot\"],dflt:\"solid\",editType:\"style\"},r.pattern={shape:{valType:\"enumerated\",values:[\"\",\"/\",\"\\\\\",\"x\",\"-\",\"|\",\"+\",\".\"],dflt:\"\",arrayOk:!0,editType:\"style\"},fillmode:{valType:\"enumerated\",values:[\"replace\",\"overlay\"],dflt:\"replace\",editType:\"style\"},bgcolor:{valType:\"color\",arrayOk:!0,editType:\"style\"},fgcolor:{valType:\"color\",arrayOk:!0,editType:\"style\"},fgopacity:{valType:\"number\",editType:\"style\",min:0,max:1},size:{valType:\"number\",min:0,dflt:8,arrayOk:!0,editType:\"style\"},solidity:{valType:\"number\",min:0,max:1,dflt:.3,arrayOk:!0,editType:\"style\"},editType:\"style\"}},{}],388:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=i.numberFormat,o=t(\"fast-isnumeric\"),s=t(\"tinycolor2\"),l=t(\"../../registry\"),c=t(\"../color\"),u=t(\"../colorscale\"),f=i.strTranslate,h=t(\"../../lib/svg_text_utils\"),p=t(\"../../constants/xmlns_namespaces\"),d=t(\"../../constants/alignment\").LINE_SPACING,g=t(\"../../constants/interactions\").DESELECTDIM,m=t(\"../../traces/scatter/subtypes\"),v=t(\"../../traces/scatter/make_bubble_size_func\"),y=t(\"../../components/fx/helpers\").appendArrayPointValue,x=e.exports={};x.font=function(t,e,r,n){i.isPlainObject(e)&&(n=e.color,r=e.size,e=e.family),e&&t.style(\"font-family\",e),r+1&&t.style(\"font-size\",r+\"px\"),n&&t.call(c.fill,n)},x.setPosition=function(t,e,r){t.attr(\"x\",e).attr(\"y\",r)},x.setSize=function(t,e,r){t.attr(\"width\",e).attr(\"height\",r)},x.setRect=function(t,e,r,n,i){t.call(x.setPosition,e,r).call(x.setSize,n,i)},x.translatePoint=function(t,e,r,n){var i=r.c2p(t.x),a=n.c2p(t.y);return!!(o(i)&&o(a)&&e.node())&&(\"text\"===e.node().nodeName?e.attr(\"x\",i).attr(\"y\",a):e.attr(\"transform\",f(i,a)),!0)},x.translatePoints=function(t,e,r){t.each((function(t){var i=n.select(this);x.translatePoint(t,i,e,r)}))},x.hideOutsideRangePoint=function(t,e,r,n,i,a){e.attr(\"display\",r.isPtWithinRange(t,i)&&n.isPtWithinRange(t,a)?null:\"none\")},x.hideOutsideRangePoints=function(t,e){if(e._hasClipOnAxisFalse){var r=e.xaxis,i=e.yaxis;t.each((function(e){var a=e[0].trace,o=a.xcalendar,s=a.ycalendar,c=l.traceIs(a,\"bar-like\")?\".bartext\":\".point,.textpoint\";t.selectAll(c).each((function(t){x.hideOutsideRangePoint(t,n.select(this),r,i,o,s)}))}))}},x.crispRound=function(t,e,r){return e&&o(e)?t._context.staticPlot?e:e<1?1:Math.round(e):r||0},x.singleLineStyle=function(t,e,r,n,i){e.style(\"fill\",\"none\");var a=(((t||[])[0]||{}).trace||{}).line||{},o=r||a.width||0,s=i||a.dash||\"\";c.stroke(e,n||a.color),x.dashLine(e,s,o)},x.lineGroupStyle=function(t,e,r,i){t.style(\"fill\",\"none\").each((function(t){var a=(((t||[])[0]||{}).trace||{}).line||{},o=e||a.width||0,s=i||a.dash||\"\";n.select(this).call(c.stroke,r||a.color).call(x.dashLine,s,o)}))},x.dashLine=function(t,e,r){r=+r||0,e=x.dashStyle(e,r),t.style({\"stroke-dasharray\":e,\"stroke-width\":r+\"px\"})},x.dashStyle=function(t,e){e=+e||1;var r=Math.max(e,3);return\"solid\"===t?t=\"\":\"dot\"===t?t=r+\"px,\"+r+\"px\":\"dash\"===t?t=3*r+\"px,\"+3*r+\"px\":\"longdash\"===t?t=5*r+\"px,\"+5*r+\"px\":\"dashdot\"===t?t=3*r+\"px,\"+r+\"px,\"+r+\"px,\"+r+\"px\":\"longdashdot\"===t&&(t=5*r+\"px,\"+2*r+\"px,\"+r+\"px,\"+2*r+\"px\"),t},x.singleFillStyle=function(t){var e=(((n.select(t.node()).data()[0]||[])[0]||{}).trace||{}).fillcolor;e&&t.call(c.fill,e)},x.fillGroupStyle=function(t){t.style(\"stroke-width\",0).each((function(t){var e=n.select(this);t[0].trace&&e.call(c.fill,t[0].trace.fillcolor)}))};var b=t(\"./symbol_defs\");x.symbolNames=[],x.symbolFuncs=[],x.symbolNeedLines={},x.symbolNoDot={},x.symbolNoFill={},x.symbolList=[],Object.keys(b).forEach((function(t){var e=b[t],r=e.n;x.symbolList.push(r,String(r),t,r+100,String(r+100),t+\"-open\"),x.symbolNames[r]=t,x.symbolFuncs[r]=e.f,e.needLine&&(x.symbolNeedLines[r]=!0),e.noDot?x.symbolNoDot[r]=!0:x.symbolList.push(r+200,String(r+200),t+\"-dot\",r+300,String(r+300),t+\"-open-dot\"),e.noFill&&(x.symbolNoFill[r]=!0)}));var _=x.symbolNames.length;function w(t,e){var r=t%100;return x.symbolFuncs[r](e)+(t>=200?\"M0,0.5L0.5,0L0,-0.5L-0.5,0Z\":\"\")}x.symbolNumber=function(t){if(o(t))t=+t;else if(\"string\"==typeof t){var e=0;t.indexOf(\"-open\")>0&&(e=100,t=t.replace(\"-open\",\"\")),t.indexOf(\"-dot\")>0&&(e+=200,t=t.replace(\"-dot\",\"\")),(t=x.symbolNames.indexOf(t))>=0&&(t+=e)}return t%100>=_||t>=400?0:Math.floor(Math.max(t,0))};var T={x1:1,x2:0,y1:0,y2:0},k={x1:0,x2:0,y1:1,y2:0},A=a(\"~f\"),M={radial:{node:\"radialGradient\"},radialreversed:{node:\"radialGradient\",reversed:!0},horizontal:{node:\"linearGradient\",attrs:T},horizontalreversed:{node:\"linearGradient\",attrs:T,reversed:!0},vertical:{node:\"linearGradient\",attrs:k},verticalreversed:{node:\"linearGradient\",attrs:k,reversed:!0}};x.gradient=function(t,e,r,a,o,l){for(var u=o.length,f=M[a],h=new Array(u),p=0;p\"+v(t);d._gradientUrlQueryParts[y]=1},x.pattern=function(t,e,r,a,o,s,l,u,f,h,p,d){var g=\"legend\"===e;u&&(\"overlay\"===f?(h=u,p=c.contrast(h)):(h=void 0,p=u));var m,v,y,x,b,_,w,T,k,A,M,S=r._fullLayout,E=\"p\"+S._uid+\"-\"+a,L={};switch(o){case\"/\":m=s*Math.sqrt(2),v=s*Math.sqrt(2),_=\"path\",L={d:y=\"M-\"+m/4+\",\"+v/4+\"l\"+m/2+\",-\"+v/2+\"M0,\"+v+\"L\"+m+\",0M\"+m/4*3+\",\"+v/4*5+\"l\"+m/2+\",-\"+v/2,opacity:d,stroke:p,\"stroke-width\":(x=l*s)+\"px\"};break;case\"\\\\\":m=s*Math.sqrt(2),v=s*Math.sqrt(2),_=\"path\",L={d:y=\"M\"+m/4*3+\",-\"+v/4+\"l\"+m/2+\",\"+v/2+\"M0,0L\"+m+\",\"+v+\"M-\"+m/4+\",\"+v/4*3+\"l\"+m/2+\",\"+v/2,opacity:d,stroke:p,\"stroke-width\":(x=l*s)+\"px\"};break;case\"x\":m=s*Math.sqrt(2),v=s*Math.sqrt(2),y=\"M-\"+m/4+\",\"+v/4+\"l\"+m/2+\",-\"+v/2+\"M0,\"+v+\"L\"+m+\",0M\"+m/4*3+\",\"+v/4*5+\"l\"+m/2+\",-\"+v/2+\"M\"+m/4*3+\",-\"+v/4+\"l\"+m/2+\",\"+v/2+\"M0,0L\"+m+\",\"+v+\"M-\"+m/4+\",\"+v/4*3+\"l\"+m/2+\",\"+v/2,x=s-s*Math.sqrt(1-l),_=\"path\",L={d:y,opacity:d,stroke:p,\"stroke-width\":x+\"px\"};break;case\"|\":_=\"path\",_=\"path\",L={d:y=\"M\"+(m=s)/2+\",0L\"+m/2+\",\"+(v=s),opacity:d,stroke:p,\"stroke-width\":(x=l*s)+\"px\"};break;case\"-\":_=\"path\",_=\"path\",L={d:y=\"M0,\"+(v=s)/2+\"L\"+(m=s)+\",\"+v/2,opacity:d,stroke:p,\"stroke-width\":(x=l*s)+\"px\"};break;case\"+\":_=\"path\",y=\"M\"+(m=s)/2+\",0L\"+m/2+\",\"+(v=s)+\"M0,\"+v/2+\"L\"+m+\",\"+v/2,x=s-s*Math.sqrt(1-l),_=\"path\",L={d:y,opacity:d,stroke:p,\"stroke-width\":x+\"px\"};break;case\".\":m=s,v=s,l.pattern_filled\";S._patternUrlQueryParts[I]=1},x.initGradients=function(t){var e=t._fullLayout;i.ensureSingle(e._defs,\"g\",\"gradients\").selectAll(\"linearGradient,radialGradient\").remove(),e._gradientUrlQueryParts={}},x.initPatterns=function(t){var e=t._fullLayout;i.ensureSingle(e._defs,\"g\",\"patterns\").selectAll(\"pattern\").remove(),e._patternUrlQueryParts={}},x.getPatternAttr=function(t,e,r){return t&&i.isArrayOrTypedArray(t)?e=100,e.attr(\"d\",w(u,l))}var f,h,p,d=!1;if(t.so)p=s.outlierwidth,h=s.outliercolor,f=o.outliercolor;else{var g=(s||{}).width;p=(t.mlw+1||g+1||(t.trace?(t.trace.marker.line||{}).width:0)+1)-1||0,h=\"mlc\"in t?t.mlcc=n.lineScale(t.mlc):i.isArrayOrTypedArray(s.color)?c.defaultLine:s.color,i.isArrayOrTypedArray(o.color)&&(f=c.defaultLine,d=!0),f=\"mc\"in t?t.mcc=n.markerScale(t.mc):o.color||\"rgba(0,0,0,0)\",n.selectedColorFn&&(f=n.selectedColorFn(t))}if(t.om)e.call(c.stroke,f).style({\"stroke-width\":(p||1)+\"px\",fill:\"none\"});else{e.style(\"stroke-width\",(t.isBlank?0:p)+\"px\");var m=o.gradient,v=t.mgt;v?d=!0:v=m&&m.type,i.isArrayOrTypedArray(v)&&(v=v[0],M[v]||(v=0));var y=o.pattern,b=y&&x.getPatternAttr(y.shape,t.i,\"\");if(v&&\"none\"!==v){var _=t.mgc;_?d=!0:_=m.color;var T=r.uid;d&&(T+=\"-\"+t.i),x.gradient(e,a,T,v,[[0,_],[1,f]],\"fill\")}else if(b){var k=x.getPatternAttr(y.bgcolor,t.i,null),A=x.getPatternAttr(y.fgcolor,t.i,null),S=y.fgopacity,E=x.getPatternAttr(y.size,t.i,8),L=x.getPatternAttr(y.solidity,t.i,.3),C=t.mcc||i.isArrayOrTypedArray(y.shape)||i.isArrayOrTypedArray(y.bgcolor)||i.isArrayOrTypedArray(y.size)||i.isArrayOrTypedArray(y.solidity),P=r.uid;C&&(P+=\"-\"+t.i),x.pattern(e,\"point\",a,P,b,E,L,t.mcc,y.fillmode,k,A,S)}else c.fill(e,f);p&&c.stroke(e,h)}},x.makePointStyleFns=function(t){var e={},r=t.marker;return e.markerScale=x.tryColorscale(r,\"\"),e.lineScale=x.tryColorscale(r,\"line\"),l.traceIs(t,\"symbols\")&&(e.ms2mrc=m.isBubble(t)?v(t):function(){return(r.size||6)/2}),t.selectedpoints&&i.extendFlat(e,x.makeSelectedPointStyleFns(t)),e},x.makeSelectedPointStyleFns=function(t){var e={},r=t.selected||{},n=t.unselected||{},a=t.marker||{},o=r.marker||{},s=n.marker||{},c=a.opacity,u=o.opacity,f=s.opacity,h=void 0!==u,p=void 0!==f;(i.isArrayOrTypedArray(c)||h||p)&&(e.selectedOpacityFn=function(t){var e=void 0===t.mo?a.opacity:t.mo;return t.selected?h?u:e:p?f:g*e});var d=a.color,m=o.color,v=s.color;(m||v)&&(e.selectedColorFn=function(t){var e=t.mcc||d;return t.selected?m||e:v||e});var y=a.size,x=o.size,b=s.size,_=void 0!==x,w=void 0!==b;return l.traceIs(t,\"symbols\")&&(_||w)&&(e.selectedSizeFn=function(t){var e=t.mrc||y/2;return t.selected?_?x/2:e:w?b/2:e}),e},x.makeSelectedTextStyleFns=function(t){var e={},r=t.selected||{},n=t.unselected||{},i=t.textfont||{},a=r.textfont||{},o=n.textfont||{},s=i.color,l=a.color,u=o.color;return e.selectedTextColorFn=function(t){var e=t.tc||s;return t.selected?l||e:u||(l?e:c.addOpacity(e,g))},e},x.selectedPointStyle=function(t,e){if(t.size()&&e.selectedpoints){var r=x.makeSelectedPointStyleFns(e),i=e.marker||{},a=[];r.selectedOpacityFn&&a.push((function(t,e){t.style(\"opacity\",r.selectedOpacityFn(e))})),r.selectedColorFn&&a.push((function(t,e){c.fill(t,r.selectedColorFn(e))})),r.selectedSizeFn&&a.push((function(t,e){var n=e.mx||i.symbol||0,a=r.selectedSizeFn(e);t.attr(\"d\",w(x.symbolNumber(n),a)),e.mrc2=a})),a.length&&t.each((function(t){for(var e=n.select(this),r=0;r0?r:0}x.textPointStyle=function(t,e,r){if(t.size()){var a;if(e.selectedpoints){var o=x.makeSelectedTextStyleFns(e);a=o.selectedTextColorFn}var s=e.texttemplate,l=r._fullLayout;t.each((function(t){var o=n.select(this),c=s?i.extractOption(t,e,\"txt\",\"texttemplate\"):i.extractOption(t,e,\"tx\",\"text\");if(c||0===c){if(s){var u=e._module.formatLabels,f=u?u(t,e,l):{},p={};y(p,e,t.i);var d=e._meta||{};c=i.texttemplateString(c,f,l._d3locale,p,t,d)}var g=t.tp||e.textposition,m=L(t,e),v=a?a(t):t.tc||e.textfont.color;o.call(x.font,t.tf||e.textfont.family,m,v).text(c).call(h.convertToTspans,r).call(E,g,m,t.mrc)}else o.remove()}))}},x.selectedTextStyle=function(t,e){if(t.size()&&e.selectedpoints){var r=x.makeSelectedTextStyleFns(e);t.each((function(t){var i=n.select(this),a=r.selectedTextColorFn(t),o=t.tp||e.textposition,s=L(t,e);c.fill(i,a);var u=l.traceIs(e,\"bar-like\");E(i,o,s,t.mrc2||t.mrc,u)}))}};function C(t,e,r,i){var a=t[0]-e[0],o=t[1]-e[1],s=r[0]-e[0],l=r[1]-e[1],c=Math.pow(a*a+o*o,.25),u=Math.pow(s*s+l*l,.25),f=(u*u*a-c*c*s)*i,h=(u*u*o-c*c*l)*i,p=3*u*(c+u),d=3*c*(c+u);return[[n.round(e[0]+(p&&f/p),2),n.round(e[1]+(p&&h/p),2)],[n.round(e[0]-(d&&f/d),2),n.round(e[1]-(d&&h/d),2)]]}x.smoothopen=function(t,e){if(t.length<3)return\"M\"+t.join(\"L\");var r,n=\"M\"+t[0],i=[];for(r=1;r=1e4&&(x.savedBBoxes={},O=0),r&&(x.savedBBoxes[r]=m),O++,i.extendFlat({},m)},x.setClipUrl=function(t,e,r){t.attr(\"clip-path\",D(e,r))},x.getTranslate=function(t){var e=(t[t.attr?\"attr\":\"getAttribute\"](\"transform\")||\"\").replace(/.*\\btranslate\\((-?\\d*\\.?\\d*)[^-\\d]*(-?\\d*\\.?\\d*)[^\\d].*/,(function(t,e,r){return[e,r].join(\" \")})).split(\" \");return{x:+e[0]||0,y:+e[1]||0}},x.setTranslate=function(t,e,r){var n=t.attr?\"attr\":\"getAttribute\",i=t.attr?\"attr\":\"setAttribute\",a=t[n](\"transform\")||\"\";return e=e||0,r=r||0,a=a.replace(/(\\btranslate\\(.*?\\);?)/,\"\").trim(),a=(a+=f(e,r)).trim(),t[i](\"transform\",a),a},x.getScale=function(t){var e=(t[t.attr?\"attr\":\"getAttribute\"](\"transform\")||\"\").replace(/.*\\bscale\\((\\d*\\.?\\d*)[^\\d]*(\\d*\\.?\\d*)[^\\d].*/,(function(t,e,r){return[e,r].join(\" \")})).split(\" \");return{x:+e[0]||1,y:+e[1]||1}},x.setScale=function(t,e,r){var n=t.attr?\"attr\":\"getAttribute\",i=t.attr?\"attr\":\"setAttribute\",a=t[n](\"transform\")||\"\";return e=e||1,r=r||1,a=a.replace(/(\\bscale\\(.*?\\);?)/,\"\").trim(),a=(a+=\"scale(\"+e+\",\"+r+\")\").trim(),t[i](\"transform\",a),a};var R=/\\s*sc.*/;x.setPointGroupScale=function(t,e,r){if(e=e||1,r=r||1,t){var n=1===e&&1===r?\"\":\"scale(\"+e+\",\"+r+\")\";t.each((function(){var t=(this.getAttribute(\"transform\")||\"\").replace(R,\"\");t=(t+=n).trim(),this.setAttribute(\"transform\",t)}))}};var F=/translate\\([^)]*\\)\\s*$/;x.setTextPointsScale=function(t,e,r){t&&t.each((function(){var t,i=n.select(this),a=i.select(\"text\");if(a.node()){var o=parseFloat(a.attr(\"x\")||0),s=parseFloat(a.attr(\"y\")||0),l=(i.attr(\"transform\")||\"\").match(F);t=1===e&&1===r?[]:[f(o,s),\"scale(\"+e+\",\"+r+\")\",f(-o,-s)],l&&t.push(l),i.attr(\"transform\",t.join(\"\"))}}))}},{\"../../components/fx/helpers\":402,\"../../constants/alignment\":471,\"../../constants/interactions\":478,\"../../constants/xmlns_namespaces\":480,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../../registry\":638,\"../../traces/scatter/make_bubble_size_func\":943,\"../../traces/scatter/subtypes\":951,\"../color\":366,\"../colorscale\":378,\"./symbol_defs\":389,\"@plotly/d3\":58,\"fast-isnumeric\":190,tinycolor2:312}],389:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\");e.exports={circle:{n:0,f:function(t){var e=n.round(t,2);return\"M\"+e+\",0A\"+e+\",\"+e+\" 0 1,1 0,-\"+e+\"A\"+e+\",\"+e+\" 0 0,1 \"+e+\",0Z\"}},square:{n:1,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"H-\"+e+\"V-\"+e+\"H\"+e+\"Z\"}},diamond:{n:2,f:function(t){var e=n.round(1.3*t,2);return\"M\"+e+\",0L0,\"+e+\"L-\"+e+\",0L0,-\"+e+\"Z\"}},cross:{n:3,f:function(t){var e=n.round(.4*t,2),r=n.round(1.2*t,2);return\"M\"+r+\",\"+e+\"H\"+e+\"V\"+r+\"H-\"+e+\"V\"+e+\"H-\"+r+\"V-\"+e+\"H-\"+e+\"V-\"+r+\"H\"+e+\"V-\"+e+\"H\"+r+\"Z\"}},x:{n:4,f:function(t){var e=n.round(.8*t/Math.sqrt(2),2),r=\"l\"+e+\",\"+e,i=\"l\"+e+\",-\"+e,a=\"l-\"+e+\",-\"+e,o=\"l-\"+e+\",\"+e;return\"M0,\"+e+r+i+a+i+a+o+a+o+r+o+r+\"Z\"}},\"triangle-up\":{n:5,f:function(t){var e=n.round(2*t/Math.sqrt(3),2);return\"M-\"+e+\",\"+n.round(t/2,2)+\"H\"+e+\"L0,-\"+n.round(t,2)+\"Z\"}},\"triangle-down\":{n:6,f:function(t){var e=n.round(2*t/Math.sqrt(3),2);return\"M-\"+e+\",-\"+n.round(t/2,2)+\"H\"+e+\"L0,\"+n.round(t,2)+\"Z\"}},\"triangle-left\":{n:7,f:function(t){var e=n.round(2*t/Math.sqrt(3),2);return\"M\"+n.round(t/2,2)+\",-\"+e+\"V\"+e+\"L-\"+n.round(t,2)+\",0Z\"}},\"triangle-right\":{n:8,f:function(t){var e=n.round(2*t/Math.sqrt(3),2);return\"M-\"+n.round(t/2,2)+\",-\"+e+\"V\"+e+\"L\"+n.round(t,2)+\",0Z\"}},\"triangle-ne\":{n:9,f:function(t){var e=n.round(.6*t,2),r=n.round(1.2*t,2);return\"M-\"+r+\",-\"+e+\"H\"+e+\"V\"+r+\"Z\"}},\"triangle-se\":{n:10,f:function(t){var e=n.round(.6*t,2),r=n.round(1.2*t,2);return\"M\"+e+\",-\"+r+\"V\"+e+\"H-\"+r+\"Z\"}},\"triangle-sw\":{n:11,f:function(t){var e=n.round(.6*t,2),r=n.round(1.2*t,2);return\"M\"+r+\",\"+e+\"H-\"+e+\"V-\"+r+\"Z\"}},\"triangle-nw\":{n:12,f:function(t){var e=n.round(.6*t,2),r=n.round(1.2*t,2);return\"M-\"+e+\",\"+r+\"V-\"+e+\"H\"+r+\"Z\"}},pentagon:{n:13,f:function(t){var e=n.round(.951*t,2),r=n.round(.588*t,2),i=n.round(-t,2),a=n.round(-.309*t,2);return\"M\"+e+\",\"+a+\"L\"+r+\",\"+n.round(.809*t,2)+\"H-\"+r+\"L-\"+e+\",\"+a+\"L0,\"+i+\"Z\"}},hexagon:{n:14,f:function(t){var e=n.round(t,2),r=n.round(t/2,2),i=n.round(t*Math.sqrt(3)/2,2);return\"M\"+i+\",-\"+r+\"V\"+r+\"L0,\"+e+\"L-\"+i+\",\"+r+\"V-\"+r+\"L0,-\"+e+\"Z\"}},hexagon2:{n:15,f:function(t){var e=n.round(t,2),r=n.round(t/2,2),i=n.round(t*Math.sqrt(3)/2,2);return\"M-\"+r+\",\"+i+\"H\"+r+\"L\"+e+\",0L\"+r+\",-\"+i+\"H-\"+r+\"L-\"+e+\",0Z\"}},octagon:{n:16,f:function(t){var e=n.round(.924*t,2),r=n.round(.383*t,2);return\"M-\"+r+\",-\"+e+\"H\"+r+\"L\"+e+\",-\"+r+\"V\"+r+\"L\"+r+\",\"+e+\"H-\"+r+\"L-\"+e+\",\"+r+\"V-\"+r+\"Z\"}},star:{n:17,f:function(t){var e=1.4*t,r=n.round(.225*e,2),i=n.round(.951*e,2),a=n.round(.363*e,2),o=n.round(.588*e,2),s=n.round(-e,2),l=n.round(-.309*e,2),c=n.round(.118*e,2),u=n.round(.809*e,2);return\"M\"+r+\",\"+l+\"H\"+i+\"L\"+a+\",\"+c+\"L\"+o+\",\"+u+\"L0,\"+n.round(.382*e,2)+\"L-\"+o+\",\"+u+\"L-\"+a+\",\"+c+\"L-\"+i+\",\"+l+\"H-\"+r+\"L0,\"+s+\"Z\"}},hexagram:{n:18,f:function(t){var e=n.round(.66*t,2),r=n.round(.38*t,2),i=n.round(.76*t,2);return\"M-\"+i+\",0l-\"+r+\",-\"+e+\"h\"+i+\"l\"+r+\",-\"+e+\"l\"+r+\",\"+e+\"h\"+i+\"l-\"+r+\",\"+e+\"l\"+r+\",\"+e+\"h-\"+i+\"l-\"+r+\",\"+e+\"l-\"+r+\",-\"+e+\"h-\"+i+\"Z\"}},\"star-triangle-up\":{n:19,f:function(t){var e=n.round(t*Math.sqrt(3)*.8,2),r=n.round(.8*t,2),i=n.round(1.6*t,2),a=n.round(4*t,2),o=\"A \"+a+\",\"+a+\" 0 0 1 \";return\"M-\"+e+\",\"+r+o+e+\",\"+r+o+\"0,-\"+i+o+\"-\"+e+\",\"+r+\"Z\"}},\"star-triangle-down\":{n:20,f:function(t){var e=n.round(t*Math.sqrt(3)*.8,2),r=n.round(.8*t,2),i=n.round(1.6*t,2),a=n.round(4*t,2),o=\"A \"+a+\",\"+a+\" 0 0 1 \";return\"M\"+e+\",-\"+r+o+\"-\"+e+\",-\"+r+o+\"0,\"+i+o+e+\",-\"+r+\"Z\"}},\"star-square\":{n:21,f:function(t){var e=n.round(1.1*t,2),r=n.round(2*t,2),i=\"A \"+r+\",\"+r+\" 0 0 1 \";return\"M-\"+e+\",-\"+e+i+\"-\"+e+\",\"+e+i+e+\",\"+e+i+e+\",-\"+e+i+\"-\"+e+\",-\"+e+\"Z\"}},\"star-diamond\":{n:22,f:function(t){var e=n.round(1.4*t,2),r=n.round(1.9*t,2),i=\"A \"+r+\",\"+r+\" 0 0 1 \";return\"M-\"+e+\",0\"+i+\"0,\"+e+i+e+\",0\"+i+\"0,-\"+e+i+\"-\"+e+\",0Z\"}},\"diamond-tall\":{n:23,f:function(t){var e=n.round(.7*t,2),r=n.round(1.4*t,2);return\"M0,\"+r+\"L\"+e+\",0L0,-\"+r+\"L-\"+e+\",0Z\"}},\"diamond-wide\":{n:24,f:function(t){var e=n.round(1.4*t,2),r=n.round(.7*t,2);return\"M0,\"+r+\"L\"+e+\",0L0,-\"+r+\"L-\"+e+\",0Z\"}},hourglass:{n:25,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"H-\"+e+\"L\"+e+\",-\"+e+\"H-\"+e+\"Z\"},noDot:!0},bowtie:{n:26,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"V-\"+e+\"L-\"+e+\",\"+e+\"V-\"+e+\"Z\"},noDot:!0},\"circle-cross\":{n:27,f:function(t){var e=n.round(t,2);return\"M0,\"+e+\"V-\"+e+\"M\"+e+\",0H-\"+e+\"M\"+e+\",0A\"+e+\",\"+e+\" 0 1,1 0,-\"+e+\"A\"+e+\",\"+e+\" 0 0,1 \"+e+\",0Z\"},needLine:!0,noDot:!0},\"circle-x\":{n:28,f:function(t){var e=n.round(t,2),r=n.round(t/Math.sqrt(2),2);return\"M\"+r+\",\"+r+\"L-\"+r+\",-\"+r+\"M\"+r+\",-\"+r+\"L-\"+r+\",\"+r+\"M\"+e+\",0A\"+e+\",\"+e+\" 0 1,1 0,-\"+e+\"A\"+e+\",\"+e+\" 0 0,1 \"+e+\",0Z\"},needLine:!0,noDot:!0},\"square-cross\":{n:29,f:function(t){var e=n.round(t,2);return\"M0,\"+e+\"V-\"+e+\"M\"+e+\",0H-\"+e+\"M\"+e+\",\"+e+\"H-\"+e+\"V-\"+e+\"H\"+e+\"Z\"},needLine:!0,noDot:!0},\"square-x\":{n:30,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"L-\"+e+\",-\"+e+\"M\"+e+\",-\"+e+\"L-\"+e+\",\"+e+\"M\"+e+\",\"+e+\"H-\"+e+\"V-\"+e+\"H\"+e+\"Z\"},needLine:!0,noDot:!0},\"diamond-cross\":{n:31,f:function(t){var e=n.round(1.3*t,2);return\"M\"+e+\",0L0,\"+e+\"L-\"+e+\",0L0,-\"+e+\"ZM0,-\"+e+\"V\"+e+\"M-\"+e+\",0H\"+e},needLine:!0,noDot:!0},\"diamond-x\":{n:32,f:function(t){var e=n.round(1.3*t,2),r=n.round(.65*t,2);return\"M\"+e+\",0L0,\"+e+\"L-\"+e+\",0L0,-\"+e+\"ZM-\"+r+\",-\"+r+\"L\"+r+\",\"+r+\"M-\"+r+\",\"+r+\"L\"+r+\",-\"+r},needLine:!0,noDot:!0},\"cross-thin\":{n:33,f:function(t){var e=n.round(1.4*t,2);return\"M0,\"+e+\"V-\"+e+\"M\"+e+\",0H-\"+e},needLine:!0,noDot:!0,noFill:!0},\"x-thin\":{n:34,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"L-\"+e+\",-\"+e+\"M\"+e+\",-\"+e+\"L-\"+e+\",\"+e},needLine:!0,noDot:!0,noFill:!0},asterisk:{n:35,f:function(t){var e=n.round(1.2*t,2),r=n.round(.85*t,2);return\"M0,\"+e+\"V-\"+e+\"M\"+e+\",0H-\"+e+\"M\"+r+\",\"+r+\"L-\"+r+\",-\"+r+\"M\"+r+\",-\"+r+\"L-\"+r+\",\"+r},needLine:!0,noDot:!0,noFill:!0},hash:{n:36,f:function(t){var e=n.round(t/2,2),r=n.round(t,2);return\"M\"+e+\",\"+r+\"V-\"+r+\"m-\"+r+\",0V\"+r+\"M\"+r+\",\"+e+\"H-\"+r+\"m0,-\"+r+\"H\"+r},needLine:!0,noFill:!0},\"y-up\":{n:37,f:function(t){var e=n.round(1.2*t,2),r=n.round(1.6*t,2),i=n.round(.8*t,2);return\"M-\"+e+\",\"+i+\"L0,0M\"+e+\",\"+i+\"L0,0M0,-\"+r+\"L0,0\"},needLine:!0,noDot:!0,noFill:!0},\"y-down\":{n:38,f:function(t){var e=n.round(1.2*t,2),r=n.round(1.6*t,2),i=n.round(.8*t,2);return\"M-\"+e+\",-\"+i+\"L0,0M\"+e+\",-\"+i+\"L0,0M0,\"+r+\"L0,0\"},needLine:!0,noDot:!0,noFill:!0},\"y-left\":{n:39,f:function(t){var e=n.round(1.2*t,2),r=n.round(1.6*t,2),i=n.round(.8*t,2);return\"M\"+i+\",\"+e+\"L0,0M\"+i+\",-\"+e+\"L0,0M-\"+r+\",0L0,0\"},needLine:!0,noDot:!0,noFill:!0},\"y-right\":{n:40,f:function(t){var e=n.round(1.2*t,2),r=n.round(1.6*t,2),i=n.round(.8*t,2);return\"M-\"+i+\",\"+e+\"L0,0M-\"+i+\",-\"+e+\"L0,0M\"+r+\",0L0,0\"},needLine:!0,noDot:!0,noFill:!0},\"line-ew\":{n:41,f:function(t){var e=n.round(1.4*t,2);return\"M\"+e+\",0H-\"+e},needLine:!0,noDot:!0,noFill:!0},\"line-ns\":{n:42,f:function(t){var e=n.round(1.4*t,2);return\"M0,\"+e+\"V-\"+e},needLine:!0,noDot:!0,noFill:!0},\"line-ne\":{n:43,f:function(t){var e=n.round(t,2);return\"M\"+e+\",-\"+e+\"L-\"+e+\",\"+e},needLine:!0,noDot:!0,noFill:!0},\"line-nw\":{n:44,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"L-\"+e+\",-\"+e},needLine:!0,noDot:!0,noFill:!0},\"arrow-up\":{n:45,f:function(t){var e=n.round(t,2);return\"M0,0L-\"+e+\",\"+n.round(2*t,2)+\"H\"+e+\"Z\"},noDot:!0},\"arrow-down\":{n:46,f:function(t){var e=n.round(t,2);return\"M0,0L-\"+e+\",-\"+n.round(2*t,2)+\"H\"+e+\"Z\"},noDot:!0},\"arrow-left\":{n:47,f:function(t){var e=n.round(2*t,2),r=n.round(t,2);return\"M0,0L\"+e+\",-\"+r+\"V\"+r+\"Z\"},noDot:!0},\"arrow-right\":{n:48,f:function(t){var e=n.round(2*t,2),r=n.round(t,2);return\"M0,0L-\"+e+\",-\"+r+\"V\"+r+\"Z\"},noDot:!0},\"arrow-bar-up\":{n:49,f:function(t){var e=n.round(t,2);return\"M-\"+e+\",0H\"+e+\"M0,0L-\"+e+\",\"+n.round(2*t,2)+\"H\"+e+\"Z\"},needLine:!0,noDot:!0},\"arrow-bar-down\":{n:50,f:function(t){var e=n.round(t,2);return\"M-\"+e+\",0H\"+e+\"M0,0L-\"+e+\",-\"+n.round(2*t,2)+\"H\"+e+\"Z\"},needLine:!0,noDot:!0},\"arrow-bar-left\":{n:51,f:function(t){var e=n.round(2*t,2),r=n.round(t,2);return\"M0,-\"+r+\"V\"+r+\"M0,0L\"+e+\",-\"+r+\"V\"+r+\"Z\"},needLine:!0,noDot:!0},\"arrow-bar-right\":{n:52,f:function(t){var e=n.round(2*t,2),r=n.round(t,2);return\"M0,-\"+r+\"V\"+r+\"M0,0L-\"+e+\",-\"+r+\"V\"+r+\"Z\"},needLine:!0,noDot:!0}}},{\"@plotly/d3\":58}],390:[function(t,e,r){\"use strict\";e.exports={visible:{valType:\"boolean\",editType:\"calc\"},type:{valType:\"enumerated\",values:[\"percent\",\"constant\",\"sqrt\",\"data\"],editType:\"calc\"},symmetric:{valType:\"boolean\",editType:\"calc\"},array:{valType:\"data_array\",editType:\"calc\"},arrayminus:{valType:\"data_array\",editType:\"calc\"},value:{valType:\"number\",min:0,dflt:10,editType:\"calc\"},valueminus:{valType:\"number\",min:0,dflt:10,editType:\"calc\"},traceref:{valType:\"integer\",min:0,dflt:0,editType:\"style\"},tracerefminus:{valType:\"integer\",min:0,dflt:0,editType:\"style\"},copy_ystyle:{valType:\"boolean\",editType:\"plot\"},copy_zstyle:{valType:\"boolean\",editType:\"style\"},color:{valType:\"color\",editType:\"style\"},thickness:{valType:\"number\",min:0,dflt:2,editType:\"style\"},width:{valType:\"number\",min:0,editType:\"plot\"},editType:\"calc\",_deprecated:{opacity:{valType:\"number\",editType:\"style\"}}}},{}],391:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../registry\"),a=t(\"../../plots/cartesian/axes\"),o=t(\"../../lib\"),s=t(\"./compute_error\");function l(t,e,r,i){var l=e[\"error_\"+i]||{},c=[];if(l.visible&&-1!==[\"linear\",\"log\"].indexOf(r.type)){for(var u=s(l),f=0;f0;e.each((function(e){var f,h=e[0].trace,p=h.error_x||{},d=h.error_y||{};h.ids&&(f=function(t){return t.id});var g=o.hasMarkers(h)&&h.marker.maxdisplayed>0;d.visible||p.visible||(e=[]);var m=n.select(this).selectAll(\"g.errorbar\").data(e,f);if(m.exit().remove(),e.length){p.visible||m.selectAll(\"path.xerror\").remove(),d.visible||m.selectAll(\"path.yerror\").remove(),m.style(\"opacity\",1);var v=m.enter().append(\"g\").classed(\"errorbar\",!0);u&&v.style(\"opacity\",0).transition().duration(s.duration).style(\"opacity\",1),a.setClipUrl(m,r.layerClipId,t),m.each((function(t){var e=n.select(this),r=function(t,e,r){var n={x:e.c2p(t.x),y:r.c2p(t.y)};void 0!==t.yh&&(n.yh=r.c2p(t.yh),n.ys=r.c2p(t.ys),i(n.ys)||(n.noYS=!0,n.ys=r.c2p(t.ys,!0)));void 0!==t.xh&&(n.xh=e.c2p(t.xh),n.xs=e.c2p(t.xs),i(n.xs)||(n.noXS=!0,n.xs=e.c2p(t.xs,!0)));return n}(t,l,c);if(!g||t.vis){var a,o=e.select(\"path.yerror\");if(d.visible&&i(r.x)&&i(r.yh)&&i(r.ys)){var f=d.width;a=\"M\"+(r.x-f)+\",\"+r.yh+\"h\"+2*f+\"m-\"+f+\",0V\"+r.ys,r.noYS||(a+=\"m-\"+f+\",0h\"+2*f),!o.size()?o=e.append(\"path\").style(\"vector-effect\",\"non-scaling-stroke\").classed(\"yerror\",!0):u&&(o=o.transition().duration(s.duration).ease(s.easing)),o.attr(\"d\",a)}else o.remove();var h=e.select(\"path.xerror\");if(p.visible&&i(r.y)&&i(r.xh)&&i(r.xs)){var m=(p.copy_ystyle?d:p).width;a=\"M\"+r.xh+\",\"+(r.y-m)+\"v\"+2*m+\"m0,-\"+m+\"H\"+r.xs,r.noXS||(a+=\"m0,-\"+m+\"v\"+2*m),!h.size()?h=e.append(\"path\").style(\"vector-effect\",\"non-scaling-stroke\").classed(\"xerror\",!0):u&&(h=h.transition().duration(s.duration).ease(s.easing)),h.attr(\"d\",a)}else h.remove()}}))}}))}},{\"../../traces/scatter/subtypes\":951,\"../drawing\":388,\"@plotly/d3\":58,\"fast-isnumeric\":190}],396:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../color\");e.exports=function(t){t.each((function(t){var e=t[0].trace,r=e.error_y||{},a=e.error_x||{},o=n.select(this);o.selectAll(\"path.yerror\").style(\"stroke-width\",r.thickness+\"px\").call(i.stroke,r.color),a.copy_ystyle&&(a=r),o.selectAll(\"path.xerror\").style(\"stroke-width\",a.thickness+\"px\").call(i.stroke,a.color)}))}},{\"../color\":366,\"@plotly/d3\":58}],397:[function(t,e,r){\"use strict\";var n=t(\"../../plots/font_attributes\"),i=t(\"./layout_attributes\").hoverlabel,a=t(\"../../lib/extend\").extendFlat;e.exports={hoverlabel:{bgcolor:a({},i.bgcolor,{arrayOk:!0}),bordercolor:a({},i.bordercolor,{arrayOk:!0}),font:n({arrayOk:!0,editType:\"none\"}),align:a({},i.align,{arrayOk:!0}),namelength:a({},i.namelength,{arrayOk:!0}),editType:\"none\"}}},{\"../../lib/extend\":493,\"../../plots/font_attributes\":585,\"./layout_attributes\":407}],398:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../registry\");function a(t,e,r,i){i=i||n.identity,Array.isArray(t)&&(e[0][r]=i(t))}e.exports=function(t){var e=t.calcdata,r=t._fullLayout;function o(t){return function(e){return n.coerceHoverinfo({hoverinfo:e},{_module:t._module},r)}}for(var s=0;s=0&&r.index_[0]._length||ot<0||ot>w[0]._length)return d.unhoverRaw(t,e)}if(e.pointerX=at+_[0]._offset,e.pointerY=ot+w[0]._offset,V=\"xval\"in e?v.flat(l,e.xval):v.p2c(_,at),H=\"yval\"in e?v.flat(l,e.yval):v.p2c(w,ot),!i(V[0])||!i(H[0]))return o.warn(\"Fx.hover failed\",e,t),d.unhoverRaw(t,e)}var ct=1/0;function ut(t,r){for(G=0;Gtt&&(et.splice(0,tt),ct=et[0].distance),y&&0!==B&&0===et.length){$.distance=B,$.index=!1;var f=W._module.hoverPoints($,K,Q,\"closest\",{hoverLayer:u._hoverlayer});if(f&&(f=f.filter((function(t){return t.spikeDistance<=B}))),f&&f.length){var h,d=f.filter((function(t){return t.xa.showspikes&&\"hovered data\"!==t.xa.spikesnap}));if(d.length){var g=d[0];i(g.x0)&&i(g.y0)&&(h=ht(g),(!nt.vLinePoint||nt.vLinePoint.spikeDistance>h.spikeDistance)&&(nt.vLinePoint=h))}var m=f.filter((function(t){return t.ya.showspikes&&\"hovered data\"!==t.ya.spikesnap}));if(m.length){var x=m[0];i(x.x0)&&i(x.y0)&&(h=ht(x),(!nt.hLinePoint||nt.hLinePoint.spikeDistance>h.spikeDistance)&&(nt.hLinePoint=h))}}}}}function ft(t,e,r){for(var n,i=null,a=1/0,o=0;o0&&Math.abs(t.distance)Tt-1;Mt--)Ct(et[Mt]);et=St,mt()}var Pt=t._hoverdata,It=[],Ot=j(t),zt=U(t);for(q=0;q1||et.length>1)||\"closest\"===P&&it&&et.length>1,Wt=p.combine(u.plot_bgcolor||p.background,u.paper_bgcolor),Xt=I(et,{gd:t,hovermode:P,rotateLabels:Yt,bgColor:Wt,container:u._hoverlayer,outerContainer:u._paper.node(),commonLabelOpts:u.hoverlabel,hoverdistance:u.hoverdistance});v.isUnifiedHover(P)||(!function(t,e,r){var n,i,a,o,s,l,c,u=0,f=1,h=t.size(),p=new Array(h),d=0;function g(t){var e=t[0],r=t[t.length-1];if(i=e.pmin-e.pos-e.dp+e.size,a=r.pos+r.dp+r.size-e.pmax,i>.01){for(s=t.length-1;s>=0;s--)t[s].dp+=i;n=!1}if(!(a<.01)){if(i<-.01){for(s=t.length-1;s>=0;s--)t[s].dp-=a;n=!1}if(n){var c=0;for(o=0;oe.pmax&&c++;for(o=t.length-1;o>=0&&!(c<=0);o--)(l=t[o]).pos>e.pmax-1&&(l.del=!0,c--);for(o=0;o=0;s--)t[s].dp-=a;for(o=t.length-1;o>=0&&!(c<=0);o--)(l=t[o]).pos+l.dp+l.size>e.pmax&&(l.del=!0,c--)}}}t.each((function(t){var n=t[e],i=\"x\"===n._id.charAt(0),a=n.range;0===d&&a&&a[0]>a[1]!==i&&(f=-1),p[d++]=[{datum:t,traceIndex:t.trace.index,dp:0,pos:t.pos,posref:t.posref,size:t.by*(i?T:1)/2,pmin:0,pmax:i?r.width:r.height}]})),p.sort((function(t,e){return t[0].posref-e[0].posref||f*(e[0].traceIndex-t[0].traceIndex)}));for(;!n&&u<=h;){for(u++,n=!0,o=0;o.01&&y.pmin===x.pmin&&y.pmax===x.pmax){for(s=v.length-1;s>=0;s--)v[s].dp+=i;for(m.push.apply(m,v),p.splice(o+1,1),c=0,s=m.length-1;s>=0;s--)c+=m[s].dp;for(a=c/m.length,s=m.length-1;s>=0;s--)m[s].dp-=a;n=!1}else o++}p.forEach(g)}for(o=p.length-1;o>=0;o--){var b=p[o];for(s=b.length-1;s>=0;s--){var _=b[s],w=_.datum;w.offset=_.dp,w.del=_.del}}}(Xt,Yt?\"xa\":\"ya\",u),z(Xt,Yt,u._invScaleX,u._invScaleY));if(s&&s.tagName){var Zt=m.getComponentMethod(\"annotations\",\"hasClickToShow\")(t,It);f(n.select(s),Zt?\"pointer\":\"\")}if(!s||a||!function(t,e,r){if(!r||r.length!==t._hoverdata.length)return!0;for(var n=r.length-1;n>=0;n--){var i=r[n],a=t._hoverdata[n];if(i.curveNumber!==a.curveNumber||String(i.pointNumber)!==String(a.pointNumber)||String(i.pointNumbers)!==String(a.pointNumbers))return!0}return!1}(t,0,Pt))return;Pt&&t.emit(\"plotly_unhover\",{event:e,points:Pt});t.emit(\"plotly_hover\",{event:e,points:t._hoverdata,xaxes:_,yaxes:w,xvals:V,yvals:H})}(t,e,r,a,s)}))},r.loneHover=function(t,e){var r=!0;Array.isArray(t)||(r=!1,t=[t]);var i=e.gd,a=j(i),o=U(i),s=I(t.map((function(t){var r=t._x0||t.x0||t.x||0,n=t._x1||t.x1||t.x||0,s=t._y0||t.y0||t.y||0,l=t._y1||t.y1||t.y||0,c=t.eventData;if(c){var u=Math.min(r,n),f=Math.max(r,n),h=Math.min(s,l),d=Math.max(s,l),g=t.trace;if(m.traceIs(g,\"gl3d\")){var v=i._fullLayout[g.scene]._scene.container,y=v.offsetLeft,x=v.offsetTop;u+=y,f+=y,h+=x,d+=x}c.bbox={x0:u+o,x1:f+o,y0:h+a,y1:d+a},e.inOut_bbox&&e.inOut_bbox.push(c.bbox)}else c=!1;return{color:t.color||p.defaultLine,x0:t.x0||t.x||0,x1:t.x1||t.x||0,y0:t.y0||t.y||0,y1:t.y1||t.y||0,xLabel:t.xLabel,yLabel:t.yLabel,zLabel:t.zLabel,text:t.text,name:t.name,idealAlign:t.idealAlign,borderColor:t.borderColor,fontFamily:t.fontFamily,fontSize:t.fontSize,fontColor:t.fontColor,nameLength:t.nameLength,textAlign:t.textAlign,trace:t.trace||{index:0,hoverinfo:\"\"},xa:{_offset:0},ya:{_offset:0},index:0,hovertemplate:t.hovertemplate||!1,hovertemplateLabels:t.hovertemplateLabels||!1,eventData:c}})),{gd:i,hovermode:\"closest\",rotateLabels:!1,bgColor:e.bgColor||p.background,container:n.select(e.container),outerContainer:e.outerContainer||e.container}),l=0,c=0;return s.sort((function(t,e){return t.y0-e.y0})).each((function(t,r){var n=t.y0-t.by/2;t.offset=n-5([\\s\\S]*)<\\/extra>/;function I(t,e){var r=e.gd,i=r._fullLayout,a=e.hovermode,c=e.rotateLabels,f=e.bgColor,d=e.container,g=e.outerContainer,w=e.commonLabelOpts||{};if(0===t.length)return[[]];var T=e.fontFamily||y.HOVERFONT,k=e.fontSize||y.HOVERFONTSIZE,A=t[0],E=A.xa,L=A.ya,P=a.charAt(0),I=A[P+\"Label\"],z=V(r,g),D=z.top,R=z.width,F=z.height,B=void 0!==I&&A.distance<=e.hoverdistance&&(\"x\"===a||\"y\"===a);if(B){var N,j,U=!0;for(N=0;Ni.width-b?(m=i.width-b,e.attr(\"d\",\"M\"+(b-M)+\",0L\"+b+\",\"+x+M+\"v\"+x+(2*S+y.height)+\"H-\"+b+\"V\"+x+M+\"H\"+(b-2*M)+\"Z\")):e.attr(\"d\",\"M0,0L\"+M+\",\"+x+M+\"H\"+(S+y.width/2)+\"v\"+x+(2*S+y.height)+\"H-\"+(S+y.width/2)+\"V\"+x+M+\"H-\"+M+\"Z\")}else{var _,C,P;\"right\"===L.side?(_=\"start\",C=1,P=\"\",m=E._offset+E._length):(_=\"end\",C=-1,P=\"-\",m=E._offset),v=L._offset+(A.y0+A.y1)/2,l.attr(\"text-anchor\",_),e.attr(\"d\",\"M0,0L\"+P+M+\",\"+M+\"V\"+(S+y.height/2)+\"h\"+P+(2*S+y.width)+\"V-\"+(S+y.height/2)+\"H\"+P+M+\"V-\"+M+\"Z\");var O,z=y.height/2,R=D-y.top-z,F=\"clip\"+i._uid+\"commonlabel\"+L._id;if(m=0?at:ot+ct=0?ot:vt+ct=0?nt:it+ut=0?it:yt+ut=0,\"top\"!==t.idealAlign&&G||!Y?G?(z+=j/2,t.anchor=\"start\"):t.anchor=\"middle\":(z-=j/2,t.anchor=\"end\");else if(t.pos=z,G=P+N/2+W<=R,Y=P-N/2-W>=0,\"left\"!==t.idealAlign&&G||!Y)if(G)P+=N/2,t.anchor=\"start\";else{t.anchor=\"middle\";var X=W/2,Z=P+X-R,J=P-X;Z>0&&(P-=Z),J<0&&(P+=-J)}else P-=N/2,t.anchor=\"end\";w.attr(\"text-anchor\",t.anchor),E&&A.attr(\"text-anchor\",t.anchor),e.attr(\"transform\",s(P,z)+(c?l(_):\"\"))})),xt}function O(t,e,r,n,i,a){var s=\"\",l=\"\";void 0!==t.nameOverride&&(t.name=t.nameOverride),t.name&&(t.trace._meta&&(t.name=o.templateString(t.name,t.trace._meta)),s=B(t.name,t.nameLength));var c=r.charAt(0),u=\"x\"===c?\"y\":\"x\";void 0!==t.zLabel?(void 0!==t.xLabel&&(l+=\"x: \"+t.xLabel+\"
\"),void 0!==t.yLabel&&(l+=\"y: \"+t.yLabel+\"
\"),\"choropleth\"!==t.trace.type&&\"choroplethmapbox\"!==t.trace.type&&(l+=(l?\"z: \":\"\")+t.zLabel)):e&&t[c+\"Label\"]===i?l=t[u+\"Label\"]||\"\":void 0===t.xLabel?void 0!==t.yLabel&&\"scattercarpet\"!==t.trace.type&&(l=t.yLabel):l=void 0===t.yLabel?t.xLabel:\"(\"+t.xLabel+\", \"+t.yLabel+\")\",!t.text&&0!==t.text||Array.isArray(t.text)||(l+=(l?\"
\":\"\")+t.text),void 0!==t.extraText&&(l+=(l?\"
\":\"\")+t.extraText),a&&\"\"===l&&!t.hovertemplate&&(\"\"===s&&a.remove(),l=s);var f=t.hovertemplate||!1;if(f){var h=t.hovertemplateLabels||t;t[c+\"Label\"]!==i&&(h[c+\"other\"]=h[c+\"Val\"],h[c+\"otherLabel\"]=h[c+\"Label\"]),l=(l=o.hovertemplateString(f,h,n._d3locale,t.eventData[0]||{},t.trace._meta)).replace(P,(function(e,r){return s=B(r,t.nameLength),\"\"}))}return[l,s]}function z(t,e,r,i){var a=function(t){return t*r},o=function(t){return t*i};t.each((function(t){var r=n.select(this);if(t.del)return r.remove();var i=r.select(\"text.nums\"),s=t.anchor,l=\"end\"===s?-1:1,c={start:1,end:-1,middle:0}[s],f=c*(M+S),p=f+c*(t.txwidth+S),d=0,g=t.offset,m=\"middle\"===s;m&&(f-=t.tx2width/2,p+=t.txwidth/2+S),e&&(g*=-A,d=t.offset*k),r.select(\"path\").attr(\"d\",m?\"M-\"+a(t.bx/2+t.tx2width/2)+\",\"+o(g-t.by/2)+\"h\"+a(t.bx)+\"v\"+o(t.by)+\"h-\"+a(t.bx)+\"Z\":\"M0,0L\"+a(l*M+d)+\",\"+o(M+g)+\"v\"+o(t.by/2-M)+\"h\"+a(l*t.bx)+\"v-\"+o(t.by)+\"H\"+a(l*M+d)+\"V\"+o(g-M)+\"Z\");var v=d+f,y=g+t.ty0-t.by/2+S,x=t.textAlign||\"auto\";\"auto\"!==x&&(\"left\"===x&&\"start\"!==s?(i.attr(\"text-anchor\",\"start\"),v=m?-t.bx/2-t.tx2width/2+S:-t.bx-S):\"right\"===x&&\"end\"!==s&&(i.attr(\"text-anchor\",\"end\"),v=m?t.bx/2-t.tx2width/2-S:t.bx+S)),i.call(u.positionText,a(v),o(y)),t.tx2width&&(r.select(\"text.name\").call(u.positionText,a(p+c*S+d),o(g+t.ty0-t.by/2+S)),r.select(\"rect\").call(h.setRect,a(p+(c-1)*t.tx2width/2+d),o(g-t.by/2-1),a(t.tx2width),o(t.by+2)))}))}function D(t,e){var r=t.index,n=t.trace||{},a=t.cd[0],s=t.cd[r]||{};function l(t){return t||i(t)&&0===t}var c=Array.isArray(r)?function(t,e){var i=o.castOption(a,r,t);return l(i)?i:o.extractOption({},n,\"\",e)}:function(t,e){return o.extractOption(s,n,t,e)};function u(e,r,n){var i=c(r,n);l(i)&&(t[e]=i)}if(u(\"hoverinfo\",\"hi\",\"hoverinfo\"),u(\"bgcolor\",\"hbg\",\"hoverlabel.bgcolor\"),u(\"borderColor\",\"hbc\",\"hoverlabel.bordercolor\"),u(\"fontFamily\",\"htf\",\"hoverlabel.font.family\"),u(\"fontSize\",\"hts\",\"hoverlabel.font.size\"),u(\"fontColor\",\"htc\",\"hoverlabel.font.color\"),u(\"nameLength\",\"hnl\",\"hoverlabel.namelength\"),u(\"textAlign\",\"hta\",\"hoverlabel.align\"),t.posref=\"y\"===e||\"closest\"===e&&\"h\"===n.orientation?t.xa._offset+(t.x0+t.x1)/2:t.ya._offset+(t.y0+t.y1)/2,t.x0=o.constrain(t.x0,0,t.xa._length),t.x1=o.constrain(t.x1,0,t.xa._length),t.y0=o.constrain(t.y0,0,t.ya._length),t.y1=o.constrain(t.y1,0,t.ya._length),void 0!==t.xLabelVal&&(t.xLabel=\"xLabel\"in t?t.xLabel:g.hoverLabelText(t.xa,t.xLabelVal,n.xhoverformat),t.xVal=t.xa.c2d(t.xLabelVal)),void 0!==t.yLabelVal&&(t.yLabel=\"yLabel\"in t?t.yLabel:g.hoverLabelText(t.ya,t.yLabelVal,n.yhoverformat),t.yVal=t.ya.c2d(t.yLabelVal)),void 0!==t.zLabelVal&&void 0===t.zLabel&&(t.zLabel=String(t.zLabelVal)),!(isNaN(t.xerr)||\"log\"===t.xa.type&&t.xerr<=0)){var f=g.tickText(t.xa,t.xa.c2l(t.xerr),\"hover\").text;void 0!==t.xerrneg?t.xLabel+=\" +\"+f+\" / -\"+g.tickText(t.xa,t.xa.c2l(t.xerrneg),\"hover\").text:t.xLabel+=\" \\xb1 \"+f,\"x\"===e&&(t.distance+=1)}if(!(isNaN(t.yerr)||\"log\"===t.ya.type&&t.yerr<=0)){var h=g.tickText(t.ya,t.ya.c2l(t.yerr),\"hover\").text;void 0!==t.yerrneg?t.yLabel+=\" +\"+h+\" / -\"+g.tickText(t.ya,t.ya.c2l(t.yerrneg),\"hover\").text:t.yLabel+=\" \\xb1 \"+h,\"y\"===e&&(t.distance+=1)}var p=t.hoverinfo||t.trace.hoverinfo;return p&&\"all\"!==p&&(-1===(p=Array.isArray(p)?p:p.split(\"+\")).indexOf(\"x\")&&(t.xLabel=void 0),-1===p.indexOf(\"y\")&&(t.yLabel=void 0),-1===p.indexOf(\"z\")&&(t.zLabel=void 0),-1===p.indexOf(\"text\")&&(t.text=void 0),-1===p.indexOf(\"name\")&&(t.name=void 0)),t}function R(t,e,r){var n,i,o=r.container,s=r.fullLayout,l=s._size,c=r.event,u=!!e.hLinePoint,f=!!e.vLinePoint;if(o.selectAll(\".spikeline\").remove(),f||u){var d=p.combine(s.plot_bgcolor,s.paper_bgcolor);if(u){var m,v,y=e.hLinePoint;n=y&&y.xa,\"cursor\"===(i=y&&y.ya).spikesnap?(m=c.pointerX,v=c.pointerY):(m=n._offset+y.x,v=i._offset+y.y);var x,b,_=a.readability(y.color,d)<1.5?p.contrast(d):y.color,w=i.spikemode,T=i.spikethickness,k=i.spikecolor||_,A=g.getPxPosition(t,i);if(-1!==w.indexOf(\"toaxis\")||-1!==w.indexOf(\"across\")){if(-1!==w.indexOf(\"toaxis\")&&(x=A,b=m),-1!==w.indexOf(\"across\")){var M=i._counterDomainMin,S=i._counterDomainMax;\"free\"===i.anchor&&(M=Math.min(M,i.position),S=Math.max(S,i.position)),x=l.l+M*l.w,b=l.l+S*l.w}o.insert(\"line\",\":first-child\").attr({x1:x,x2:b,y1:v,y2:v,\"stroke-width\":T,stroke:k,\"stroke-dasharray\":h.dashStyle(i.spikedash,T)}).classed(\"spikeline\",!0).classed(\"crisp\",!0),o.insert(\"line\",\":first-child\").attr({x1:x,x2:b,y1:v,y2:v,\"stroke-width\":T+2,stroke:d}).classed(\"spikeline\",!0).classed(\"crisp\",!0)}-1!==w.indexOf(\"marker\")&&o.insert(\"circle\",\":first-child\").attr({cx:A+(\"right\"!==i.side?T:-T),cy:v,r:T,fill:k}).classed(\"spikeline\",!0)}if(f){var E,L,C=e.vLinePoint;n=C&&C.xa,i=C&&C.ya,\"cursor\"===n.spikesnap?(E=c.pointerX,L=c.pointerY):(E=n._offset+C.x,L=i._offset+C.y);var P,I,O=a.readability(C.color,d)<1.5?p.contrast(d):C.color,z=n.spikemode,D=n.spikethickness,R=n.spikecolor||O,F=g.getPxPosition(t,n);if(-1!==z.indexOf(\"toaxis\")||-1!==z.indexOf(\"across\")){if(-1!==z.indexOf(\"toaxis\")&&(P=F,I=L),-1!==z.indexOf(\"across\")){var B=n._counterDomainMin,N=n._counterDomainMax;\"free\"===n.anchor&&(B=Math.min(B,n.position),N=Math.max(N,n.position)),P=l.t+(1-N)*l.h,I=l.t+(1-B)*l.h}o.insert(\"line\",\":first-child\").attr({x1:E,x2:E,y1:P,y2:I,\"stroke-width\":D,stroke:R,\"stroke-dasharray\":h.dashStyle(n.spikedash,D)}).classed(\"spikeline\",!0).classed(\"crisp\",!0),o.insert(\"line\",\":first-child\").attr({x1:E,x2:E,y1:P,y2:I,\"stroke-width\":D+2,stroke:d}).classed(\"spikeline\",!0).classed(\"crisp\",!0)}-1!==z.indexOf(\"marker\")&&o.insert(\"circle\",\":first-child\").attr({cx:E,cy:F-(\"top\"!==n.side?D:-D),r:D,fill:R}).classed(\"spikeline\",!0)}}}function F(t,e){return!e||(e.vLinePoint!==t._spikepoints.vLinePoint||e.hLinePoint!==t._spikepoints.hLinePoint)}function B(t,e){return u.plainText(t||\"\",{len:e,allowedTags:[\"br\",\"sub\",\"sup\",\"b\",\"i\",\"em\"]})}function N(t,e,r){var n=e[t+\"a\"],i=e[t+\"Val\"],a=e.cd[0];if(\"category\"===n.type)i=n._categoriesMap[i];else if(\"date\"===n.type){var o=e.trace[t+\"periodalignment\"];if(o){var s=e.cd[e.index],l=s[t+\"Start\"];void 0===l&&(l=s[t]);var c=s[t+\"End\"];void 0===c&&(c=s[t]);var u=c-l;\"end\"===o?i+=u:\"middle\"===o&&(i+=u/2)}i=n.d2c(i)}return a&&a.t&&a.t.posLetter===n._id&&(\"group\"!==r.boxmode&&\"group\"!==r.violinmode||(i+=a.t.dPos)),i}function j(t){return t.offsetTop+t.clientTop}function U(t){return t.offsetLeft+t.clientLeft}function V(t,e){var r=t._fullLayout,n=e.getBoundingClientRect(),i=n.x,a=n.y,s=i+n.width,l=a+n.height,c=o.apply3DTransform(r._invTransform)(i,a),u=o.apply3DTransform(r._invTransform)(s,l),f=c[0],h=c[1],p=u[0],d=u[1];return{x:f,y:h,width:p-f,height:d-h,top:Math.min(h,d),left:Math.min(f,p),right:Math.max(f,p),bottom:Math.max(h,d)}}},{\"../../lib\":503,\"../../lib/events\":492,\"../../lib/override_cursor\":514,\"../../lib/svg_text_utils\":529,\"../../plots/cartesian/axes\":554,\"../../registry\":638,\"../color\":366,\"../dragelement\":385,\"../drawing\":388,\"../legend/defaults\":418,\"../legend/draw\":419,\"./constants\":400,\"./helpers\":402,\"@plotly/d3\":58,\"fast-isnumeric\":190,tinycolor2:312}],404:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../color\"),a=t(\"./helpers\").isUnifiedHover;e.exports=function(t,e,r,o){o=o||{};var s=e.legend;function l(t){o.font[t]||(o.font[t]=s?e.legend.font[t]:e.font[t])}e&&a(e.hovermode)&&(o.font||(o.font={}),l(\"size\"),l(\"family\"),l(\"color\"),s?(o.bgcolor||(o.bgcolor=i.combine(e.legend.bgcolor,e.paper_bgcolor)),o.bordercolor||(o.bordercolor=e.legend.bordercolor)):o.bgcolor||(o.bgcolor=e.paper_bgcolor)),r(\"hoverlabel.bgcolor\",o.bgcolor),r(\"hoverlabel.bordercolor\",o.bordercolor),r(\"hoverlabel.namelength\",o.namelength),n.coerceFont(r,\"hoverlabel.font\",o.font),r(\"hoverlabel.align\",o.align)}},{\"../../lib\":503,\"../color\":366,\"./helpers\":402}],405:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e){function r(r,a){return void 0!==e[r]?e[r]:n.coerce(t,e,i,r,a)}return r(\"clickmode\"),r(\"hovermode\")}},{\"../../lib\":503,\"./layout_attributes\":407}],406:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../dragelement\"),o=t(\"./helpers\"),s=t(\"./layout_attributes\"),l=t(\"./hover\");e.exports={moduleType:\"component\",name:\"fx\",constants:t(\"./constants\"),schema:{layout:s},attributes:t(\"./attributes\"),layoutAttributes:s,supplyLayoutGlobalDefaults:t(\"./layout_global_defaults\"),supplyDefaults:t(\"./defaults\"),supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\"),getDistanceFunction:o.getDistanceFunction,getClosest:o.getClosest,inbox:o.inbox,quadrature:o.quadrature,appendArrayPointValue:o.appendArrayPointValue,castHoverOption:function(t,e,r){return i.castOption(t,e,\"hoverlabel.\"+r)},castHoverinfo:function(t,e,r){return i.castOption(t,r,\"hoverinfo\",(function(r){return i.coerceHoverinfo({hoverinfo:r},{_module:t._module},e)}))},hover:l.hover,unhover:a.unhover,loneHover:l.loneHover,loneUnhover:function(t){var e=i.isD3Selection(t)?t:n.select(t);e.selectAll(\"g.hovertext\").remove(),e.selectAll(\".spikeline\").remove()},click:t(\"./click\")}},{\"../../lib\":503,\"../dragelement\":385,\"./attributes\":397,\"./calc\":398,\"./click\":399,\"./constants\":400,\"./defaults\":401,\"./helpers\":402,\"./hover\":403,\"./layout_attributes\":407,\"./layout_defaults\":408,\"./layout_global_defaults\":409,\"@plotly/d3\":58}],407:[function(t,e,r){\"use strict\";var n=t(\"./constants\"),i=t(\"../../plots/font_attributes\"),a=i({editType:\"none\"});a.family.dflt=n.HOVERFONT,a.size.dflt=n.HOVERFONTSIZE,e.exports={clickmode:{valType:\"flaglist\",flags:[\"event\",\"select\"],dflt:\"event\",editType:\"plot\",extras:[\"none\"]},dragmode:{valType:\"enumerated\",values:[\"zoom\",\"pan\",\"select\",\"lasso\",\"drawclosedpath\",\"drawopenpath\",\"drawline\",\"drawrect\",\"drawcircle\",\"orbit\",\"turntable\",!1],dflt:\"zoom\",editType:\"modebar\"},hovermode:{valType:\"enumerated\",values:[\"x\",\"y\",\"closest\",!1,\"x unified\",\"y unified\"],dflt:\"closest\",editType:\"modebar\"},hoverdistance:{valType:\"integer\",min:-1,dflt:20,editType:\"none\"},spikedistance:{valType:\"integer\",min:-1,dflt:-1,editType:\"none\"},hoverlabel:{bgcolor:{valType:\"color\",editType:\"none\"},bordercolor:{valType:\"color\",editType:\"none\"},font:a,grouptitlefont:i({editType:\"none\"}),align:{valType:\"enumerated\",values:[\"left\",\"right\",\"auto\"],dflt:\"auto\",editType:\"none\"},namelength:{valType:\"integer\",min:-1,dflt:15,editType:\"none\"},editType:\"none\"},selectdirection:{valType:\"enumerated\",values:[\"h\",\"v\",\"d\",\"any\"],dflt:\"any\",editType:\"none\"}}},{\"../../plots/font_attributes\":585,\"./constants\":400}],408:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\"),a=t(\"./hovermode_defaults\"),o=t(\"./hoverlabel_defaults\");e.exports=function(t,e){function r(r,a){return n.coerce(t,e,i,r,a)}a(t,e)&&(r(\"hoverdistance\"),r(\"spikedistance\")),\"select\"===r(\"dragmode\")&&r(\"selectdirection\");var s=e._has(\"mapbox\"),l=e._has(\"geo\"),c=e._basePlotModules.length;\"zoom\"===e.dragmode&&((s||l)&&1===c||s&&l&&2===c)&&(e.dragmode=\"pan\"),o(t,e,r),n.coerceFont(r,\"hoverlabel.grouptitlefont\",e.hoverlabel.font)}},{\"../../lib\":503,\"./hoverlabel_defaults\":404,\"./hovermode_defaults\":405,\"./layout_attributes\":407}],409:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./hoverlabel_defaults\"),a=t(\"./layout_attributes\");e.exports=function(t,e){i(t,e,(function(r,i){return n.coerce(t,e,a,r,i)}))}},{\"../../lib\":503,\"./hoverlabel_defaults\":404,\"./layout_attributes\":407}],410:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../lib/regex\").counter,a=t(\"../../plots/domain\").attributes,o=t(\"../../plots/cartesian/constants\").idRegex,s=t(\"../../plot_api/plot_template\"),l={rows:{valType:\"integer\",min:1,editType:\"plot\"},roworder:{valType:\"enumerated\",values:[\"top to bottom\",\"bottom to top\"],dflt:\"top to bottom\",editType:\"plot\"},columns:{valType:\"integer\",min:1,editType:\"plot\"},subplots:{valType:\"info_array\",freeLength:!0,dimensions:2,items:{valType:\"enumerated\",values:[i(\"xy\").toString(),\"\"],editType:\"plot\"},editType:\"plot\"},xaxes:{valType:\"info_array\",freeLength:!0,items:{valType:\"enumerated\",values:[o.x.toString(),\"\"],editType:\"plot\"},editType:\"plot\"},yaxes:{valType:\"info_array\",freeLength:!0,items:{valType:\"enumerated\",values:[o.y.toString(),\"\"],editType:\"plot\"},editType:\"plot\"},pattern:{valType:\"enumerated\",values:[\"independent\",\"coupled\"],dflt:\"coupled\",editType:\"plot\"},xgap:{valType:\"number\",min:0,max:1,editType:\"plot\"},ygap:{valType:\"number\",min:0,max:1,editType:\"plot\"},domain:a({name:\"grid\",editType:\"plot\",noGridCell:!0},{}),xside:{valType:\"enumerated\",values:[\"bottom\",\"bottom plot\",\"top plot\",\"top\"],dflt:\"bottom plot\",editType:\"plot\"},yside:{valType:\"enumerated\",values:[\"left\",\"left plot\",\"right plot\",\"right\"],dflt:\"left plot\",editType:\"plot\"},editType:\"plot\"};function c(t,e,r){var n=e[r+\"axes\"],i=Object.keys((t._splomAxes||{})[r]||{});return Array.isArray(n)?n:i.length?i:void 0}function u(t,e,r,n,i,a){var o=e(t+\"gap\",r),s=e(\"domain.\"+t);e(t+\"side\",n);for(var l=new Array(i),c=s[0],u=(s[1]-c)/(i-o),f=u*(1-o),h=0;h1){if(!h&&!p&&!d)\"independent\"===k(\"pattern\")&&(h=!0);m._hasSubplotGrid=h;var x,b,_=\"top to bottom\"===k(\"roworder\"),w=h?.2:.1,T=h?.3:.1;g&&e._splomGridDflt&&(x=e._splomGridDflt.xside,b=e._splomGridDflt.yside),m._domains={x:u(\"x\",k,w,x,y),y:u(\"y\",k,T,b,v,_)}}else delete e.grid}function k(t,e){return n.coerce(r,m,l,t,e)}},contentDefaults:function(t,e){var r=e.grid;if(r&&r._domains){var n,i,a,o,s,l,u,h=t.grid||{},p=e._subplots,d=r._hasSubplotGrid,g=r.rows,m=r.columns,v=\"independent\"===r.pattern,y=r._axisMap={};if(d){var x=h.subplots||[];l=r.subplots=new Array(g);var b=1;for(n=0;n1);if(!1===_&&(e.legend=void 0),(!1!==_||f.uirevision)&&(p(\"uirevision\",e.uirevision),!1!==_)){p(\"bgcolor\",e.paper_bgcolor),p(\"bordercolor\"),p(\"borderwidth\");var w,T,k,A=i.coerceFont(p,\"font\",e.font),M=\"h\"===p(\"orientation\");if(M?(w=0,n.getComponentMethod(\"rangeslider\",\"isVisible\")(t.xaxis)?(T=1.1,k=\"bottom\"):(T=-.1,k=\"top\")):(w=1.02,T=1,k=\"auto\"),p(\"traceorder\",x),c.isGrouped(e.legend)&&p(\"tracegroupgap\"),p(\"itemsizing\"),p(\"itemwidth\"),p(\"itemclick\"),p(\"itemdoubleclick\"),p(\"groupclick\"),p(\"x\",w),p(\"xanchor\"),p(\"y\",T),p(\"yanchor\",k),p(\"valign\"),i.noneOrAll(f,h,[\"x\",\"y\"]),p(\"title.text\")){p(\"title.side\",M?\"left\":\"top\");var S=i.extendFlat({},A,{size:i.bigFont(A.size)});i.coerceFont(p,\"title.font\",S)}}}},{\"../../lib\":503,\"../../plot_api/plot_template\":543,\"../../plots/attributes\":550,\"../../plots/layout_attributes\":610,\"../../registry\":638,\"./attributes\":416,\"./helpers\":422}],419:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../plots/plots\"),o=t(\"../../registry\"),s=t(\"../../lib/events\"),l=t(\"../dragelement\"),c=t(\"../drawing\"),u=t(\"../color\"),f=t(\"../../lib/svg_text_utils\"),h=t(\"./handle_click\"),p=t(\"./constants\"),d=t(\"../../constants/alignment\"),g=d.LINE_SPACING,m=d.FROM_TL,v=d.FROM_BR,y=t(\"./get_legend_data\"),x=t(\"./style\"),b=t(\"./helpers\");function _(t,e,r,n,i){var a=r.data()[0][0].trace,l={event:i,node:r.node(),curveNumber:a.index,expandedIndex:a._expandedIndex,data:t.data,layout:t.layout,frames:t._transitionData._frames,config:t._context,fullData:t._fullData,fullLayout:t._fullLayout};if(a._group&&(l.group=a._group),o.traceIs(a,\"pie-like\")&&(l.label=r.datum()[0].label),!1!==s.triggerHandler(t,\"plotly_legendclick\",l))if(1===n)e._clickTimeout=setTimeout((function(){t._fullLayout&&h(r,t,n)}),t._context.doubleClickDelay);else if(2===n){e._clickTimeout&&clearTimeout(e._clickTimeout),t._legendMouseDownTime=0,!1!==s.triggerHandler(t,\"plotly_legenddoubleclick\",l)&&h(r,t,n)}}function w(t,e,r){var n,a,s=t.data()[0][0],l=s.trace,u=o.traceIs(l,\"pie-like\"),h=!r._inHover&&e._context.edits.legendText&&!u,d=r._maxNameLength;s.groupTitle?(n=s.groupTitle.text,a=s.groupTitle.font):(a=r.font,r.entries?n=s.text:(n=u?s.label:l.name,l._meta&&(n=i.templateString(n,l._meta))));var g=i.ensureSingle(t,\"text\",\"legendtext\");g.attr(\"text-anchor\",\"start\").call(c.font,a).text(h?T(n,d):n);var m=r.itemwidth+2*p.itemGap;f.positionText(g,m,0),h?g.call(f.makeEditable,{gd:e,text:n}).call(A,t,e,r).on(\"edit\",(function(n){this.text(T(n,d)).call(A,t,e,r);var a=s.trace._fullInput||{},c={};if(o.hasTransform(a,\"groupby\")){var u=o.getTransformIndices(a,\"groupby\"),f=u[u.length-1],h=i.keyedContainer(a,\"transforms[\"+f+\"].styles\",\"target\",\"value.name\");h.set(s.trace._group,n),c=h.constructUpdate()}else c.name=n;return o.call(\"_guiRestyle\",e,c,l.index)})):A(g,t,e,r)}function T(t,e){var r=Math.max(4,e);if(t&&t.trim().length>=r/2)return t;for(var n=r-(t=t||\"\").length;n>0;n--)t+=\" \";return t}function k(t,e){var r,a=e._context.doubleClickDelay,o=1,s=i.ensureSingle(t,\"rect\",\"legendtoggle\",(function(t){e._context.staticPlot||t.style(\"cursor\",\"pointer\").attr(\"pointer-events\",\"all\"),t.call(u.fill,\"rgba(0,0,0,0)\")}));e._context.staticPlot||(s.on(\"mousedown\",(function(){(r=(new Date).getTime())-e._legendMouseDownTimea&&(o=Math.max(o-1,1)),_(e,r,t,o,n.event)}})))}function A(t,e,r,n,i){n._inHover&&t.attr(\"data-notex\",!0),f.convertToTspans(t,r,(function(){!function(t,e,r,n){var i=t.data()[0][0];if(!r._inHover&&i&&!i.trace.showlegend)return void t.remove();var a=t.select(\"g[class*=math-group]\"),o=a.node();r||(r=e._fullLayout.legend);var s,l=r.borderwidth;s=1===n?r.title.font:i.groupTitle?i.groupTitle.font:r.font;var u,h,d=s.size*g;if(o){var m=c.bBox(o);u=m.height,h=m.width,1===n?c.setTranslate(a,l,l+.75*u):c.setTranslate(a,0,.25*u)}else{var v=t.select(1===n?\".legendtitletext\":\".legendtext\"),y=f.lineCount(v),x=v.node();if(u=d*y,h=x?c.bBox(x).width:0,1===n)\"left\"===r.title.side&&(h+=2*p.itemGap),f.positionText(v,l+p.titlePad,l+d);else{var b=2*p.itemGap+r.itemwidth;i.groupTitle&&(b=p.itemGap,h-=r.itemwidth),f.positionText(v,b,-d*((y-1)/2-.3))}}1===n?(r._titleWidth=h,r._titleHeight=u):(i.lineHeight=d,i.height=Math.max(u,16)+3,i.width=h)}(e,r,n,i)}))}function M(t){return i.isRightAnchor(t)?\"right\":i.isCenterAnchor(t)?\"center\":\"left\"}function S(t){return i.isBottomAnchor(t)?\"bottom\":i.isMiddleAnchor(t)?\"middle\":\"top\"}e.exports=function(t,e){return e||(e=t._fullLayout.legend||{}),function(t,e){var r,s,f=t._fullLayout,h=\"legend\"+f._uid,d=e._inHover;d?(r=e.layer,h+=\"-hover\"):r=f._infolayer;if(!r)return;t._legendMouseDownTime||(t._legendMouseDownTime=0);if(d){if(!e.entries)return;s=y(e.entries,e)}else{if(!t.calcdata)return;s=f.showlegend&&y(t.calcdata,e)}var g=f.hiddenlabels||[];if(!(d||f.showlegend&&s.length))return r.selectAll(\".legend\").remove(),f._topdefs.select(\"#\"+h).remove(),a.autoMargin(t,\"legend\");var T=i.ensureSingle(r,\"g\",\"legend\",(function(t){d||t.attr(\"pointer-events\",\"all\")})),E=i.ensureSingleById(f._topdefs,\"clipPath\",h,(function(t){t.append(\"rect\")})),L=i.ensureSingle(T,\"rect\",\"bg\",(function(t){t.attr(\"shape-rendering\",\"crispEdges\")}));L.call(u.stroke,e.bordercolor).call(u.fill,e.bgcolor).style(\"stroke-width\",e.borderwidth+\"px\");var C=i.ensureSingle(T,\"g\",\"scrollbox\"),P=e.title;if(e._titleWidth=0,e._titleHeight=0,P.text){var I=i.ensureSingle(C,\"text\",\"legendtitletext\");I.attr(\"text-anchor\",\"start\").call(c.font,P.font).text(P.text),A(I,C,t,e,1)}else C.selectAll(\".legendtitletext\").remove();var O=i.ensureSingle(T,\"rect\",\"scrollbar\",(function(t){t.attr(p.scrollBarEnterAttrs).call(u.fill,p.scrollBarColor)})),z=C.selectAll(\"g.groups\").data(s);z.enter().append(\"g\").attr(\"class\",\"groups\"),z.exit().remove();var D=z.selectAll(\"g.traces\").data(i.identity);D.enter().append(\"g\").attr(\"class\",\"traces\"),D.exit().remove(),D.style(\"opacity\",(function(t){var e=t[0].trace;return o.traceIs(e,\"pie-like\")?-1!==g.indexOf(t[0].label)?.5:1:\"legendonly\"===e.visible?.5:1})).each((function(){n.select(this).call(w,t,e)})).call(x,t,e).each((function(){d||n.select(this).call(k,t)})),i.syncOrAsync([a.previousPromises,function(){return function(t,e,r,i){var a=t._fullLayout;i||(i=a.legend);var o=a._size,s=b.isVertical(i),l=b.isGrouped(i),u=i.borderwidth,f=2*u,h=p.itemGap,d=i.itemwidth+2*h,g=2*(u+h),m=S(i),v=i.y<0||0===i.y&&\"top\"===m,y=i.y>1||1===i.y&&\"bottom\"===m,x=i.tracegroupgap;i._maxHeight=Math.max(v||y?a.height/2:o.h,30);var _=0;i._width=0,i._height=0;var w=function(t){var e=0,r=0,n=t.title.side;n&&(-1!==n.indexOf(\"left\")&&(e=t._titleWidth),-1!==n.indexOf(\"top\")&&(r=t._titleHeight));return[e,r]}(i);if(s)r.each((function(t){var e=t[0].height;c.setTranslate(this,u+w[0],u+w[1]+i._height+e/2+h),i._height+=e,i._width=Math.max(i._width,t[0].width)})),_=d+i._width,i._width+=h+d+f,i._height+=g,l&&(e.each((function(t,e){c.setTranslate(this,0,e*i.tracegroupgap)})),i._height+=(i._lgroupsLength-1)*i.tracegroupgap);else{var T=M(i),k=i.x<0||0===i.x&&\"right\"===T,A=i.x>1||1===i.x&&\"left\"===T,E=y||v,L=a.width/2;i._maxWidth=Math.max(k?E&&\"left\"===T?o.l+o.w:L:A?E&&\"right\"===T?o.r+o.w:L:o.w,2*d);var C=0,P=0;r.each((function(t){var e=t[0].width+d;C=Math.max(C,e),P+=e})),_=null;var I=0;if(l){var O=0,z=0,D=0;e.each((function(){var t=0,e=0;n.select(this).selectAll(\"g.traces\").each((function(r){var n=r[0].width,i=r[0].height;c.setTranslate(this,w[0],w[1]+u+h+i/2+e),e+=i,t=Math.max(t,d+n)}));var r=t+h;z>0&&r+u+z>i._maxWidth?(I=Math.max(I,z),z=0,D+=O+x,O=e):O=Math.max(O,e),c.setTranslate(this,z,D),z+=r})),i._width=Math.max(I,z)+u,i._height=D+O+g}else{var R=r.size(),F=P+f+(R-1)*h=i._maxWidth&&(I=Math.max(I,U),N=0,j+=B,i._height+=B,B=0),c.setTranslate(this,w[0]+u+N,w[1]+u+j+e/2+h),U=N+r+h,N+=n,B=Math.max(B,e)})),F?(i._width=N+f,i._height=B+g):(i._width=Math.max(I,U)+f,i._height+=B+g)}}i._width=Math.ceil(Math.max(i._width+w[0],i._titleWidth+2*(u+p.titlePad))),i._height=Math.ceil(Math.max(i._height+w[1],i._titleHeight+2*(u+p.itemGap))),i._effHeight=Math.min(i._height,i._maxHeight);var V=t._context.edits,H=V.legendText||V.legendPosition;r.each((function(t){var e=n.select(this).select(\".legendtoggle\"),r=t[0].height,i=H?d:_||d+t[0].width;s||(i+=h/2),c.setRect(e,0,-r/2,i,r)}))}(t,z,D,e)},function(){var s,u,g,y,x=f._size,b=e.borderwidth;if(!d){if(function(t){var e=t._fullLayout.legend,r=M(e),n=S(e);return a.autoMargin(t,\"legend\",{x:e.x,y:e.y,l:e._width*m[r],r:e._width*v[r],b:e._effHeight*v[n],t:e._effHeight*m[n]})}(t))return;var w=x.l+x.w*e.x-m[M(e)]*e._width,k=x.t+x.h*(1-e.y)-m[S(e)]*e._effHeight;if(f.margin.autoexpand){var A=w,P=k;w=i.constrain(w,0,f.width-e._width),k=i.constrain(k,0,f.height-e._effHeight),w!==A&&i.log(\"Constrain legend.x to make legend fit inside graph\"),k!==P&&i.log(\"Constrain legend.y to make legend fit inside graph\")}c.setTranslate(T,w,k)}if(O.on(\".drag\",null),T.on(\"wheel\",null),d||e._height<=e._maxHeight||t._context.staticPlot){var I=e._effHeight;d&&(I=e._height),L.attr({width:e._width-b,height:I-b,x:b/2,y:b/2}),c.setTranslate(C,0,0),E.select(\"rect\").attr({width:e._width-2*b,height:I-2*b,x:b,y:b}),c.setClipUrl(C,h,t),c.setRect(O,0,0,0,0),delete e._scrollY}else{var z,D,R,F=Math.max(p.scrollBarMinHeight,e._effHeight*e._effHeight/e._height),B=e._effHeight-F-2*p.scrollBarMargin,N=e._height-e._effHeight,j=B/N,U=Math.min(e._scrollY||0,N);L.attr({width:e._width-2*b+p.scrollBarWidth+p.scrollBarMargin,height:e._effHeight-b,x:b/2,y:b/2}),E.select(\"rect\").attr({width:e._width-2*b+p.scrollBarWidth+p.scrollBarMargin,height:e._effHeight-2*b,x:b,y:b+U}),c.setClipUrl(C,h,t),q(U,F,j),T.on(\"wheel\",(function(){q(U=i.constrain(e._scrollY+n.event.deltaY/B*N,0,N),F,j),0!==U&&U!==N&&n.event.preventDefault()}));var V=n.behavior.drag().on(\"dragstart\",(function(){var t=n.event.sourceEvent;z=\"touchstart\"===t.type?t.changedTouches[0].clientY:t.clientY,R=U})).on(\"drag\",(function(){var t=n.event.sourceEvent;2===t.buttons||t.ctrlKey||(D=\"touchmove\"===t.type?t.changedTouches[0].clientY:t.clientY,q(U=function(t,e,r){var n=(r-e)/j+t;return i.constrain(n,0,N)}(R,z,D),F,j))}));O.call(V);var H=n.behavior.drag().on(\"dragstart\",(function(){var t=n.event.sourceEvent;\"touchstart\"===t.type&&(z=t.changedTouches[0].clientY,R=U)})).on(\"drag\",(function(){var t=n.event.sourceEvent;\"touchmove\"===t.type&&(D=t.changedTouches[0].clientY,q(U=function(t,e,r){var n=(e-r)/j+t;return i.constrain(n,0,N)}(R,z,D),F,j))}));C.call(H)}function q(r,n,i){e._scrollY=t._fullLayout.legend._scrollY=r,c.setTranslate(C,0,-r),c.setRect(O,e._width,p.scrollBarMargin+r*i,p.scrollBarWidth,n),E.select(\"rect\").attr(\"y\",b+r)}t._context.edits.legendPosition&&(T.classed(\"cursor-move\",!0),l.init({element:T.node(),gd:t,prepFn:function(){var t=c.getTranslate(T);g=t.x,y=t.y},moveFn:function(t,r){var n=g+t,i=y+r;c.setTranslate(T,n,i),s=l.align(n,0,x.l,x.l+x.w,e.xanchor),u=l.align(i,0,x.t+x.h,x.t,e.yanchor)},doneFn:function(){void 0!==s&&void 0!==u&&o.call(\"_guiRelayout\",t,{\"legend.x\":s,\"legend.y\":u})},clickFn:function(e,n){var i=r.selectAll(\"g.traces\").filter((function(){var t=this.getBoundingClientRect();return n.clientX>=t.left&&n.clientX<=t.right&&n.clientY>=t.top&&n.clientY<=t.bottom}));i.size()>0&&_(t,T,i,e,n)}}))}],t)}(t,e)}},{\"../../constants/alignment\":471,\"../../lib\":503,\"../../lib/events\":492,\"../../lib/svg_text_utils\":529,\"../../plots/plots\":619,\"../../registry\":638,\"../color\":366,\"../dragelement\":385,\"../drawing\":388,\"./constants\":417,\"./get_legend_data\":420,\"./handle_click\":421,\"./helpers\":422,\"./style\":424,\"@plotly/d3\":58}],420:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"./helpers\");e.exports=function(t,e){var r,a,o=e._inHover,s=i.isGrouped(e),l=i.isReversed(e),c={},u=[],f=!1,h={},p=0,d=0;function g(t,r){if(\"\"!==t&&i.isGrouped(e))-1===u.indexOf(t)?(u.push(t),f=!0,c[t]=[r]):c[t].push(r);else{var n=\"~~i\"+p;u.push(n),c[n]=[r],p++}}for(r=0;rA&&(k=A)}w[r][0]._groupMinRank=k,w[r][0]._preGroupSort=r}var M=function(t,e){return t.trace.legendrank-e.trace.legendrank||t._preSort-e._preSort};for(w.forEach((function(t,e){t[0]._preGroupSort=e})),w.sort((function(t,e){return t[0]._groupMinRank-e[0]._groupMinRank||t[0]._preGroupSort-e[0]._preGroupSort})),r=0;rr?r:t}e.exports=function(t,e,r){var v=e._fullLayout;r||(r=v.legend);var y=\"constant\"===r.itemsizing,x=r.itemwidth,b=(x+2*p.itemGap)/2,_=o(b,0),w=function(t,e,r,n){var i;if(t+1)i=t;else{if(!(e&&e.width>0))return 0;i=e.width}return y?n:Math.min(i,r)};function T(t,a,o){var u=t[0].trace,f=u.marker||{},h=f.line||{},p=o?u.visible&&u.type===o:i.traceIs(u,\"bar\"),d=n.select(a).select(\"g.legendpoints\").selectAll(\"path.legend\"+o).data(p?[t]:[]);d.enter().append(\"path\").classed(\"legend\"+o,!0).attr(\"d\",\"M6,6H-6V-6H6Z\").attr(\"transform\",_),d.exit().remove(),d.each((function(t){var i=n.select(this),a=t[0],o=w(a.mlw,f.line,5,2);i.style(\"stroke-width\",o+\"px\");var p=a.mcc;if(!r._inHover&&\"mc\"in a){var d=c(f),g=d.mid;void 0===g&&(g=(d.max+d.min)/2),p=s.tryColorscale(f,\"\")(g)}var v=p||a.mc||f.color,y=f.pattern,x=y&&s.getPatternAttr(y.shape,0,\"\");if(x){var b=s.getPatternAttr(y.bgcolor,0,null),_=s.getPatternAttr(y.fgcolor,0,null),T=y.fgopacity,k=m(y.size,8,10),A=m(y.solidity,.5,1),M=\"legend-\"+u.uid;i.call(s.pattern,\"legend\",e,M,x,k,A,p,y.fillmode,b,_,T)}else i.call(l.fill,v);o&&l.stroke(i,a.mlc||h.color)}))}function k(t,e,r){var o=t[0],s=o.trace,l=r?s.visible&&s.type===r:i.traceIs(s,r),c=n.select(e).select(\"g.legendpoints\").selectAll(\"path.legend\"+r).data(l?[t]:[]);if(c.enter().append(\"path\").classed(\"legend\"+r,!0).attr(\"d\",\"M6,6H-6V-6H6Z\").attr(\"transform\",_),c.exit().remove(),c.size()){var u=(s.marker||{}).line,p=w(h(u.width,o.pts),u,5,2),d=a.minExtend(s,{marker:{line:{width:p}}});d.marker.line.color=u.color;var g=a.minExtend(o,{trace:d});f(c,g,d)}}t.each((function(t){var e=n.select(this),i=a.ensureSingle(e,\"g\",\"layers\");i.style(\"opacity\",t[0].trace.opacity);var s=r.valign,l=t[0].lineHeight,c=t[0].height;if(\"middle\"!==s&&l&&c){var u={top:1,bottom:-1}[s]*(.5*(l-c+3));i.attr(\"transform\",o(0,u))}else i.attr(\"transform\",null);i.selectAll(\"g.legendfill\").data([t]).enter().append(\"g\").classed(\"legendfill\",!0),i.selectAll(\"g.legendlines\").data([t]).enter().append(\"g\").classed(\"legendlines\",!0);var f=i.selectAll(\"g.legendsymbols\").data([t]);f.enter().append(\"g\").classed(\"legendsymbols\",!0),f.selectAll(\"g.legendpoints\").data([t]).enter().append(\"g\").classed(\"legendpoints\",!0)})).each((function(t){var r,i=t[0].trace,o=[];if(i.visible)switch(i.type){case\"histogram2d\":case\"heatmap\":o=[[\"M-15,-2V4H15V-2Z\"]],r=!0;break;case\"choropleth\":case\"choroplethmapbox\":o=[[\"M-6,-6V6H6V-6Z\"]],r=!0;break;case\"densitymapbox\":o=[[\"M-6,0 a6,6 0 1,0 12,0 a 6,6 0 1,0 -12,0\"]],r=\"radial\";break;case\"cone\":o=[[\"M-6,2 A2,2 0 0,0 -6,6 V6L6,4Z\"],[\"M-6,-6 A2,2 0 0,0 -6,-2 L6,-4Z\"],[\"M-6,-2 A2,2 0 0,0 -6,2 L6,0Z\"]],r=!1;break;case\"streamtube\":o=[[\"M-6,2 A2,2 0 0,0 -6,6 H6 A2,2 0 0,1 6,2 Z\"],[\"M-6,-6 A2,2 0 0,0 -6,-2 H6 A2,2 0 0,1 6,-6 Z\"],[\"M-6,-2 A2,2 0 0,0 -6,2 H6 A2,2 0 0,1 6,-2 Z\"]],r=!1;break;case\"surface\":o=[[\"M-6,-6 A2,3 0 0,0 -6,0 H6 A2,3 0 0,1 6,-6 Z\"],[\"M-6,1 A2,3 0 0,1 -6,6 H6 A2,3 0 0,0 6,0 Z\"]],r=!0;break;case\"mesh3d\":o=[[\"M-6,6H0L-6,-6Z\"],[\"M6,6H0L6,-6Z\"],[\"M-6,-6H6L0,6Z\"]],r=!1;break;case\"volume\":o=[[\"M-6,6H0L-6,-6Z\"],[\"M6,6H0L6,-6Z\"],[\"M-6,-6H6L0,6Z\"]],r=!0;break;case\"isosurface\":o=[[\"M-6,6H0L-6,-6Z\"],[\"M6,6H0L6,-6Z\"],[\"M-6,-6 A12,24 0 0,0 6,-6 L0,6Z\"]],r=!1}var u=n.select(this).select(\"g.legendpoints\").selectAll(\"path.legend3dandfriends\").data(o);u.enter().append(\"path\").classed(\"legend3dandfriends\",!0).attr(\"transform\",_).style(\"stroke-miterlimit\",1),u.exit().remove(),u.each((function(t,o){var u,f=n.select(this),h=c(i),p=h.colorscale,g=h.reversescale;if(p){if(!r){var m=p.length;u=0===o?p[g?m-1:0][1]:1===o?p[g?0:m-1][1]:p[Math.floor((m-1)/2)][1]}}else{var v=i.vertexcolor||i.facecolor||i.color;u=a.isArrayOrTypedArray(v)?v[o]||v[0]:v}f.attr(\"d\",t[0]),u?f.call(l.fill,u):f.call((function(t){if(t.size()){var n=\"legendfill-\"+i.uid;s.gradient(t,e,n,d(g,\"radial\"===r),p,\"fill\")}}))}))})).each((function(t){var e=t[0].trace,r=\"waterfall\"===e.type;if(t[0]._distinct&&r){var i=t[0].trace[t[0].dir].marker;return t[0].mc=i.color,t[0].mlw=i.line.width,t[0].mlc=i.line.color,T(t,this,\"waterfall\")}var a=[];e.visible&&r&&(a=t[0].hasTotals?[[\"increasing\",\"M-6,-6V6H0Z\"],[\"totals\",\"M6,6H0L-6,-6H-0Z\"],[\"decreasing\",\"M6,6V-6H0Z\"]]:[[\"increasing\",\"M-6,-6V6H6Z\"],[\"decreasing\",\"M6,6V-6H-6Z\"]]);var o=n.select(this).select(\"g.legendpoints\").selectAll(\"path.legendwaterfall\").data(a);o.enter().append(\"path\").classed(\"legendwaterfall\",!0).attr(\"transform\",_).style(\"stroke-miterlimit\",1),o.exit().remove(),o.each((function(t){var r=n.select(this),i=e[t[0]].marker,a=w(void 0,i.line,5,2);r.attr(\"d\",t[1]).style(\"stroke-width\",a+\"px\").call(l.fill,i.color),a&&r.call(l.stroke,i.line.color)}))})).each((function(t){T(t,this,\"funnel\")})).each((function(t){T(t,this)})).each((function(t){var r=t[0].trace,o=n.select(this).select(\"g.legendpoints\").selectAll(\"path.legendbox\").data(r.visible&&i.traceIs(r,\"box-violin\")?[t]:[]);o.enter().append(\"path\").classed(\"legendbox\",!0).attr(\"d\",\"M6,6H-6V-6H6Z\").attr(\"transform\",_),o.exit().remove(),o.each((function(){var t=n.select(this);if(\"all\"!==r.boxpoints&&\"all\"!==r.points||0!==l.opacity(r.fillcolor)||0!==l.opacity((r.line||{}).color)){var i=w(void 0,r.line,5,2);t.style(\"stroke-width\",i+\"px\").call(l.fill,r.fillcolor),i&&l.stroke(t,r.line.color)}else{var c=a.minExtend(r,{marker:{size:y?12:a.constrain(r.marker.size,2,16),sizeref:1,sizemin:1,sizemode:\"diameter\"}});o.call(s.pointStyle,c,e)}}))})).each((function(t){k(t,this,\"funnelarea\")})).each((function(t){k(t,this,\"pie\")})).each((function(t){var r,i,o=g(t),l=o.showFill,f=o.showLine,h=o.showGradientLine,p=o.showGradientFill,m=o.anyFill,v=o.anyLine,y=t[0],b=y.trace,_=c(b),T=_.colorscale,k=_.reversescale,A=u.hasMarkers(b)||!m?\"M5,0\":v?\"M5,-2\":\"M5,-3\",M=n.select(this),S=M.select(\".legendfill\").selectAll(\"path\").data(l||p?[t]:[]);if(S.enter().append(\"path\").classed(\"js-fill\",!0),S.exit().remove(),S.attr(\"d\",A+\"h\"+x+\"v6h-\"+x+\"z\").call(l?s.fillGroupStyle:function(t){if(t.size()){var r=\"legendfill-\"+b.uid;s.gradient(t,e,r,d(k),T,\"fill\")}}),f||h){var E=w(void 0,b.line,10,5);i=a.minExtend(b,{line:{width:E}}),r=[a.minExtend(y,{trace:i})]}var L=M.select(\".legendlines\").selectAll(\"path\").data(f||h?[r]:[]);L.enter().append(\"path\").classed(\"js-line\",!0),L.exit().remove(),L.attr(\"d\",A+(h?\"l\"+x+\",0.0001\":\"h\"+x)).call(f?s.lineGroupStyle:function(t){if(t.size()){var r=\"legendline-\"+b.uid;s.lineGroupStyle(t),s.gradient(t,e,r,d(k),T,\"stroke\")}})})).each((function(t){var r,i,o=g(t),l=o.anyFill,c=o.anyLine,f=o.showLine,h=o.showMarker,p=t[0],d=p.trace,m=!h&&!c&&!l&&u.hasText(d);function v(t,e,r,n){var i=a.nestedProperty(d,t).get(),o=a.isArrayOrTypedArray(i)&&e?e(i):i;if(y&&o&&void 0!==n&&(o=n),r){if(or[1])return r[1]}return o}function x(t){return p._distinct&&p.index&&t[p.index]?t[p.index]:t[0]}if(h||m||f){var b={},w={};if(h){b.mc=v(\"marker.color\",x),b.mx=v(\"marker.symbol\",x),b.mo=v(\"marker.opacity\",a.mean,[.2,1]),b.mlc=v(\"marker.line.color\",x),b.mlw=v(\"marker.line.width\",a.mean,[0,5],2),w.marker={sizeref:1,sizemin:1,sizemode:\"diameter\"};var T=v(\"marker.size\",a.mean,[2,16],12);b.ms=T,w.marker.size=T}f&&(w.line={width:v(\"line.width\",x,[0,10],5)}),m&&(b.tx=\"Aa\",b.tp=v(\"textposition\",x),b.ts=10,b.tc=v(\"textfont.color\",x),b.tf=v(\"textfont.family\",x)),r=[a.minExtend(p,b)],(i=a.minExtend(d,w)).selectedpoints=null,i.texttemplate=null}var k=n.select(this).select(\"g.legendpoints\"),A=k.selectAll(\"path.scatterpts\").data(h?r:[]);A.enter().insert(\"path\",\":first-child\").classed(\"scatterpts\",!0).attr(\"transform\",_),A.exit().remove(),A.call(s.pointStyle,i,e),h&&(r[0].mrc=3);var M=k.selectAll(\"g.pointtext\").data(m?r:[]);M.enter().append(\"g\").classed(\"pointtext\",!0).append(\"text\").attr(\"transform\",_),M.exit().remove(),M.selectAll(\"text\").call(s.textPointStyle,i,e)})).each((function(t){var e=t[0].trace,r=n.select(this).select(\"g.legendpoints\").selectAll(\"path.legendcandle\").data(e.visible&&\"candlestick\"===e.type?[t,t]:[]);r.enter().append(\"path\").classed(\"legendcandle\",!0).attr(\"d\",(function(t,e){return e?\"M-15,0H-8M-8,6V-6H8Z\":\"M15,0H8M8,-6V6H-8Z\"})).attr(\"transform\",_).style(\"stroke-miterlimit\",1),r.exit().remove(),r.each((function(t,r){var i=n.select(this),a=e[r?\"increasing\":\"decreasing\"],o=w(void 0,a.line,5,2);i.style(\"stroke-width\",o+\"px\").call(l.fill,a.fillcolor),o&&l.stroke(i,a.line.color)}))})).each((function(t){var e=t[0].trace,r=n.select(this).select(\"g.legendpoints\").selectAll(\"path.legendohlc\").data(e.visible&&\"ohlc\"===e.type?[t,t]:[]);r.enter().append(\"path\").classed(\"legendohlc\",!0).attr(\"d\",(function(t,e){return e?\"M-15,0H0M-8,-6V0\":\"M15,0H0M8,6V0\"})).attr(\"transform\",_).style(\"stroke-miterlimit\",1),r.exit().remove(),r.each((function(t,r){var i=n.select(this),a=e[r?\"increasing\":\"decreasing\"],o=w(void 0,a.line,5,2);i.style(\"fill\",\"none\").call(s.dashLine,a.line.dash,o),o&&l.stroke(i,a.line.color)}))}))}},{\"../../lib\":503,\"../../registry\":638,\"../../traces/pie/helpers\":905,\"../../traces/pie/style_one\":911,\"../../traces/scatter/subtypes\":951,\"../color\":366,\"../colorscale/helpers\":377,\"../drawing\":388,\"./constants\":417,\"@plotly/d3\":58}],425:[function(t,e,r){\"use strict\";t(\"./constants\");e.exports={editType:\"modebar\",orientation:{valType:\"enumerated\",values:[\"v\",\"h\"],dflt:\"h\",editType:\"modebar\"},bgcolor:{valType:\"color\",editType:\"modebar\"},color:{valType:\"color\",editType:\"modebar\"},activecolor:{valType:\"color\",editType:\"modebar\"},uirevision:{valType:\"any\",editType:\"none\"},add:{valType:\"string\",arrayOk:!0,dflt:\"\",editType:\"modebar\"},remove:{valType:\"string\",arrayOk:!0,dflt:\"\",editType:\"modebar\"}}},{\"./constants\":427}],426:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../plots/plots\"),a=t(\"../../plots/cartesian/axis_ids\"),o=t(\"../../fonts/ploticon\"),s=t(\"../shapes/draw\").eraseActiveShape,l=t(\"../../lib\"),c=l._,u=e.exports={};function f(t,e){var r,i,o=e.currentTarget,s=o.getAttribute(\"data-attr\"),l=o.getAttribute(\"data-val\")||!0,c=t._fullLayout,u={},f=a.list(t,null,!0),h=c._cartesianSpikesEnabled;if(\"zoom\"===s){var p,d=\"in\"===l?.5:2,g=(1+d)/2,m=(1-d)/2;for(i=0;i1?(I=[\"toggleHover\"],O=[\"resetViews\"]):v?(P=[\"zoomInGeo\",\"zoomOutGeo\"],I=[\"hoverClosestGeo\"],O=[\"resetGeo\"]):m?(I=[\"hoverClosest3d\"],O=[\"resetCameraDefault3d\",\"resetCameraLastSave3d\"]):w?(P=[\"zoomInMapbox\",\"zoomOutMapbox\"],I=[\"toggleHover\"],O=[\"resetViewMapbox\"]):b?I=[\"hoverClosestGl2d\"]:y?I=[\"hoverClosestPie\"]:A?(I=[\"hoverClosestCartesian\",\"hoverCompareCartesian\"],O=[\"resetViewSankey\"]):I=[\"toggleHover\"];g&&(I=[\"toggleSpikelines\",\"hoverClosestCartesian\",\"hoverCompareCartesian\"]);(function(t){for(var e=0;e0)){var g=function(t,e,r){for(var n=r.filter((function(r){return e[r].anchor===t._id})),i=0,a=0;a=n.max)e=F[r+1];else if(t=n.pmax)e=F[r+1];else if(t0?h+c:c;return{ppad:c,ppadplus:u?d:g,ppadminus:u?g:d}}return{ppad:c}}function u(t,e,r,n,i){var s=\"category\"===t.type||\"multicategory\"===t.type?t.r2c:t.d2c;if(void 0!==e)return[s(e),s(r)];if(n){var l,c,u,f,h=1/0,p=-1/0,d=n.match(a.segmentRE);for(\"date\"===t.type&&(s=o.decodeDate(s)),l=0;lp&&(p=f)));return p>=h?[h,p]:void 0}}e.exports=function(t){var e=t._fullLayout,r=n.filterVisible(e.shapes);if(r.length&&t._fullData.length)for(var o=0;oy?(k=f,E=\"y0\",A=y,L=\"y1\"):(k=y,E=\"y1\",A=f,L=\"y0\");Z(n),Q(s,r),function(t,e,r){var n=e.xref,i=e.yref,o=a.getFromId(r,n),s=a.getFromId(r,i),l=\"\";\"paper\"===n||o.autorange||(l+=n);\"paper\"===i||s.autorange||(l+=i);u.setClipUrl(t,l?\"clip\"+r._fullLayout._uid+l:null,r)}(e,r,t),X.moveFn=\"move\"===O?J:K,X.altKey=n.altKey},doneFn:function(){if(v(t))return;p(e),$(s),b(e,t,r),n.call(\"_guiRelayout\",t,l.getUpdateObj())},clickFn:function(){if(v(t))return;$(s)}};function Z(r){if(v(t))O=null;else if(R)O=\"path\"===r.target.tagName?\"move\":\"start-point\"===r.target.attributes[\"data-line-point\"].value?\"resize-over-start-point\":\"resize-over-end-point\";else{var n=X.element.getBoundingClientRect(),i=n.right-n.left,a=n.bottom-n.top,o=r.clientX-n.left,s=r.clientY-n.top,l=!F&&i>10&&a>10&&!r.shiftKey?h.getCursor(o/i,1-s/a):\"move\";p(e,l),O=l.split(\"-\")[0]}}function J(n,i){if(\"path\"===r.type){var a=function(t){return t},o=a,l=a;z?B(\"xanchor\",r.xanchor=G(x+n)):(o=function(t){return G(H(t)+n)},N&&\"date\"===N.type&&(o=g.encodeDate(o))),D?B(\"yanchor\",r.yanchor=Y(T+i)):(l=function(t){return Y(q(t)+i)},U&&\"date\"===U.type&&(l=g.encodeDate(l))),B(\"path\",r.path=w(I,o,l))}else z?B(\"xanchor\",r.xanchor=G(x+n)):(B(\"x0\",r.x0=G(c+n)),B(\"x1\",r.x1=G(m+n))),D?B(\"yanchor\",r.yanchor=Y(T+i)):(B(\"y0\",r.y0=Y(f+i)),B(\"y1\",r.y1=Y(y+i)));e.attr(\"d\",_(t,r)),Q(s,r)}function K(n,i){if(F){var a=function(t){return t},o=a,l=a;z?B(\"xanchor\",r.xanchor=G(x+n)):(o=function(t){return G(H(t)+n)},N&&\"date\"===N.type&&(o=g.encodeDate(o))),D?B(\"yanchor\",r.yanchor=Y(T+i)):(l=function(t){return Y(q(t)+i)},U&&\"date\"===U.type&&(l=g.encodeDate(l))),B(\"path\",r.path=w(I,o,l))}else if(R){if(\"resize-over-start-point\"===O){var u=c+n,h=D?f-i:f+i;B(\"x0\",r.x0=z?u:G(u)),B(\"y0\",r.y0=D?h:Y(h))}else if(\"resize-over-end-point\"===O){var p=m+n,d=D?y-i:y+i;B(\"x1\",r.x1=z?p:G(p)),B(\"y1\",r.y1=D?d:Y(d))}}else{var v=function(t){return-1!==O.indexOf(t)},b=v(\"n\"),j=v(\"s\"),V=v(\"w\"),W=v(\"e\"),X=b?k+i:k,Z=j?A+i:A,J=V?M+n:M,K=W?S+n:S;D&&(b&&(X=k-i),j&&(Z=A-i)),(!D&&Z-X>10||D&&X-Z>10)&&(B(E,r[E]=D?X:Y(X)),B(L,r[L]=D?Z:Y(Z))),K-J>10&&(B(C,r[C]=z?J:G(J)),B(P,r[P]=z?K:G(K)))}e.attr(\"d\",_(t,r)),Q(s,r)}function Q(t,e){(z||D)&&function(){var r=\"path\"!==e.type,n=t.selectAll(\".visual-cue\").data([0]);n.enter().append(\"path\").attr({fill:\"#fff\",\"fill-rule\":\"evenodd\",stroke:\"#000\",\"stroke-width\":1}).classed(\"visual-cue\",!0);var a=H(z?e.xanchor:i.midRange(r?[e.x0,e.x1]:g.extractPathCoords(e.path,d.paramIsX))),o=q(D?e.yanchor:i.midRange(r?[e.y0,e.y1]:g.extractPathCoords(e.path,d.paramIsY)));if(a=g.roundPositionForSharpStrokeRendering(a,1),o=g.roundPositionForSharpStrokeRendering(o,1),z&&D){var s=\"M\"+(a-1-1)+\",\"+(o-1-1)+\"h-8v2h8 v8h2v-8 h8v-2h-8 v-8h-2 Z\";n.attr(\"d\",s)}else if(z){var l=\"M\"+(a-1-1)+\",\"+(o-9-1)+\"v18 h2 v-18 Z\";n.attr(\"d\",l)}else{var c=\"M\"+(a-9-1)+\",\"+(o-1-1)+\"h18 v2 h-18 Z\";n.attr(\"d\",c)}}()}function $(t){t.selectAll(\".visual-cue\").remove()}h.init(X),W.node().onmousemove=Z}(t,z,l,e,r,O):!0===l.editable&&z.style(\"pointer-events\",P||c.opacity(S)*M<=.5?\"stroke\":\"all\");z.node().addEventListener(\"click\",(function(){return function(t,e){if(!y(t))return;var r=+e.node().getAttribute(\"data-index\");if(r>=0){if(r===t._fullLayout._activeShapeIndex)return void T(t);t._fullLayout._activeShapeIndex=r,t._fullLayout._deactivateShape=T,m(t)}}(t,z)}))}}function b(t,e,r){var n=(r.xref+r.yref).replace(/paper/g,\"\").replace(/[xyz][1-9]* *domain/g,\"\");u.setClipUrl(t,n?\"clip\"+e._fullLayout._uid+n:null,e)}function _(t,e){var r,n,o,s,l,c,u,f,h=e.type,p=a.getRefType(e.xref),m=a.getRefType(e.yref),v=a.getFromId(t,e.xref),y=a.getFromId(t,e.yref),x=t._fullLayout._size;if(v?\"domain\"===p?n=function(t){return v._offset+v._length*t}:(r=g.shapePositionToRange(v),n=function(t){return v._offset+v.r2p(r(t,!0))}):n=function(t){return x.l+x.w*t},y?\"domain\"===m?s=function(t){return y._offset+y._length*(1-t)}:(o=g.shapePositionToRange(y),s=function(t){return y._offset+y.r2p(o(t,!0))}):s=function(t){return x.t+x.h*(1-t)},\"path\"===h)return v&&\"date\"===v.type&&(n=g.decodeDate(n)),y&&\"date\"===y.type&&(s=g.decodeDate(s)),function(t,e,r){var n=t.path,a=t.xsizemode,o=t.ysizemode,s=t.xanchor,l=t.yanchor;return n.replace(d.segmentRE,(function(t){var n=0,c=t.charAt(0),u=d.paramIsX[c],f=d.paramIsY[c],h=d.numParams[c],p=t.substr(1).replace(d.paramRE,(function(t){return u[n]?t=\"pixel\"===a?e(s)+Number(t):e(t):f[n]&&(t=\"pixel\"===o?r(l)-Number(t):r(t)),++n>h&&(t=\"X\"),t}));return n>h&&(p=p.replace(/[\\s,]*X.*/,\"\"),i.log(\"Ignoring extra params in segment \"+t)),c+p}))}(e,n,s);if(\"pixel\"===e.xsizemode){var b=n(e.xanchor);l=b+e.x0,c=b+e.x1}else l=n(e.x0),c=n(e.x1);if(\"pixel\"===e.ysizemode){var _=s(e.yanchor);u=_-e.y0,f=_-e.y1}else u=s(e.y0),f=s(e.y1);if(\"line\"===h)return\"M\"+l+\",\"+u+\"L\"+c+\",\"+f;if(\"rect\"===h)return\"M\"+l+\",\"+u+\"H\"+c+\"V\"+f+\"H\"+l+\"Z\";var w=(l+c)/2,T=(u+f)/2,k=Math.abs(w-l),A=Math.abs(T-u),M=\"A\"+k+\",\"+A,S=w+k+\",\"+T;return\"M\"+S+M+\" 0 1,1 \"+(w+\",\"+(T-A))+M+\" 0 0,1 \"+S+\"Z\"}function w(t,e,r){return t.replace(d.segmentRE,(function(t){var n=0,i=t.charAt(0),a=d.paramIsX[i],o=d.paramIsY[i],s=d.numParams[i];return i+t.substr(1).replace(d.paramRE,(function(t){return n>=s||(a[n]?t=e(t):o[n]&&(t=r(t)),n++),t}))}))}function T(t){y(t)&&(t._fullLayout._activeShapeIndex>=0&&(l(t),delete t._fullLayout._activeShapeIndex,m(t)))}e.exports={draw:m,drawOne:x,eraseActiveShape:function(t){if(!y(t))return;l(t);var e=t._fullLayout._activeShapeIndex,r=(t.layout||{}).shapes||[];if(e=0&&f(v),r.attr(\"d\",g(e)),A&&!h)&&(k=function(t,e){for(var r=0;r1&&(2!==t.length||\"Z\"!==t[1][0])&&(0===T&&(t[0][0]=\"M\"),e[w]=t,y(),x())}}()}}function I(t,r){!function(t,r){if(e.length)for(var n=0;n0&&l0&&(s=s.transition().duration(e.transition.duration).ease(e.transition.easing)),s.attr(\"transform\",l(o-.5*f.gripWidth,e._dims.currentValueTotalHeight))}}function E(t,e){var r=t._dims;return r.inputAreaStart+f.stepInset+(r.inputAreaLength-2*f.stepInset)*Math.min(1,Math.max(0,e))}function L(t,e){var r=t._dims;return Math.min(1,Math.max(0,(e-f.stepInset-r.inputAreaStart)/(r.inputAreaLength-2*f.stepInset-2*r.inputAreaStart)))}function C(t,e,r){var n=r._dims,i=s.ensureSingle(t,\"rect\",f.railTouchRectClass,(function(n){n.call(A,e,t,r).style(\"pointer-events\",\"all\")}));i.attr({width:n.inputAreaLength,height:Math.max(n.inputAreaWidth,f.tickOffset+r.ticklen+n.labelHeight)}).call(a.fill,r.bgcolor).attr(\"opacity\",0),o.setTranslate(i,0,n.currentValueTotalHeight)}function P(t,e){var r=e._dims,n=r.inputAreaLength-2*f.railInset,i=s.ensureSingle(t,\"rect\",f.railRectClass);i.attr({width:n,height:f.railWidth,rx:f.railRadius,ry:f.railRadius,\"shape-rendering\":\"crispEdges\"}).call(a.stroke,e.bordercolor).call(a.fill,e.bgcolor).style(\"stroke-width\",e.borderwidth+\"px\"),o.setTranslate(i,f.railInset,.5*(r.inputAreaWidth-f.railWidth)+r.currentValueTotalHeight)}e.exports=function(t){var e=t._fullLayout,r=function(t,e){for(var r=t[f.name],n=[],i=0;i0?[0]:[]);function s(e){e._commandObserver&&(e._commandObserver.remove(),delete e._commandObserver),i.autoMargin(t,m(e))}if(a.enter().append(\"g\").classed(f.containerClassName,!0).style(\"cursor\",\"ew-resize\"),a.exit().each((function(){n.select(this).selectAll(\"g.\"+f.groupClassName).each(s)})).remove(),0!==r.length){var l=a.selectAll(\"g.\"+f.groupClassName).data(r,v);l.enter().append(\"g\").classed(f.groupClassName,!0),l.exit().each(s).remove();for(var c=0;c0||h<0){var v={left:[-d,0],right:[d,0],top:[0,-d],bottom:[0,d]}[b.side];e.attr(\"transform\",l(v[0],v[1]))}}}return R.call(F),O&&(E?R.on(\".opacity\",null):(A=0,M=!0,R.text(y).on(\"mouseover.opacity\",(function(){n.select(this).transition().duration(h.SHOW_PLACEHOLDER).style(\"opacity\",1)})).on(\"mouseout.opacity\",(function(){n.select(this).transition().duration(h.HIDE_PLACEHOLDER).style(\"opacity\",0)}))),R.call(f.makeEditable,{gd:t}).on(\"edit\",(function(e){void 0!==x?o.call(\"_guiRestyle\",t,v,e,x):o.call(\"_guiRelayout\",t,v,e)})).on(\"cancel\",(function(){this.text(this.attr(\"data-unformatted\")).call(F)})).on(\"input\",(function(t){this.text(t||\" \").call(f.positionText,_.x,_.y)}))),R.classed(\"js-placeholder\",M),T}}},{\"../../constants/alignment\":471,\"../../constants/interactions\":478,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../../plots/plots\":619,\"../../registry\":638,\"../color\":366,\"../drawing\":388,\"@plotly/d3\":58,\"fast-isnumeric\":190}],465:[function(t,e,r){\"use strict\";var n=t(\"../../plots/font_attributes\"),i=t(\"../color/attributes\"),a=t(\"../../lib/extend\").extendFlat,o=t(\"../../plot_api/edit_types\").overrideAll,s=t(\"../../plots/pad_attributes\"),l=t(\"../../plot_api/plot_template\").templatedArray,c=l(\"button\",{visible:{valType:\"boolean\"},method:{valType:\"enumerated\",values:[\"restyle\",\"relayout\",\"animate\",\"update\",\"skip\"],dflt:\"restyle\"},args:{valType:\"info_array\",freeLength:!0,items:[{valType:\"any\"},{valType:\"any\"},{valType:\"any\"}]},args2:{valType:\"info_array\",freeLength:!0,items:[{valType:\"any\"},{valType:\"any\"},{valType:\"any\"}]},label:{valType:\"string\",dflt:\"\"},execute:{valType:\"boolean\",dflt:!0}});e.exports=o(l(\"updatemenu\",{_arrayAttrRegexps:[/^updatemenus\\[(0|[1-9][0-9]+)\\]\\.buttons/],visible:{valType:\"boolean\"},type:{valType:\"enumerated\",values:[\"dropdown\",\"buttons\"],dflt:\"dropdown\"},direction:{valType:\"enumerated\",values:[\"left\",\"right\",\"up\",\"down\"],dflt:\"down\"},active:{valType:\"integer\",min:-1,dflt:0},showactive:{valType:\"boolean\",dflt:!0},buttons:c,x:{valType:\"number\",min:-2,max:3,dflt:-.05},xanchor:{valType:\"enumerated\",values:[\"auto\",\"left\",\"center\",\"right\"],dflt:\"right\"},y:{valType:\"number\",min:-2,max:3,dflt:1},yanchor:{valType:\"enumerated\",values:[\"auto\",\"top\",\"middle\",\"bottom\"],dflt:\"top\"},pad:a(s({editType:\"arraydraw\"}),{}),font:n({}),bgcolor:{valType:\"color\"},bordercolor:{valType:\"color\",dflt:i.borderLine},borderwidth:{valType:\"number\",min:0,dflt:1,editType:\"arraydraw\"}}),\"arraydraw\",\"from-root\")},{\"../../lib/extend\":493,\"../../plot_api/edit_types\":536,\"../../plot_api/plot_template\":543,\"../../plots/font_attributes\":585,\"../../plots/pad_attributes\":618,\"../color/attributes\":365}],466:[function(t,e,r){\"use strict\";e.exports={name:\"updatemenus\",containerClassName:\"updatemenu-container\",headerGroupClassName:\"updatemenu-header-group\",headerClassName:\"updatemenu-header\",headerArrowClassName:\"updatemenu-header-arrow\",dropdownButtonGroupClassName:\"updatemenu-dropdown-button-group\",dropdownButtonClassName:\"updatemenu-dropdown-button\",buttonClassName:\"updatemenu-button\",itemRectClassName:\"updatemenu-item-rect\",itemTextClassName:\"updatemenu-item-text\",menuIndexAttrName:\"updatemenu-active-index\",autoMarginIdRoot:\"updatemenu-\",blankHeaderOpts:{label:\" \"},minWidth:30,minHeight:30,textPadX:24,arrowPadX:16,rx:2,ry:2,textOffsetX:12,textOffsetY:3,arrowOffsetX:4,gapButtonHeader:5,gapButton:2,activeColor:\"#F4FAFF\",hoverColor:\"#F4FAFF\",arrowSymbol:{left:\"\\u25c4\",right:\"\\u25ba\",up:\"\\u25b2\",down:\"\\u25bc\"}}},{}],467:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../plots/array_container_defaults\"),a=t(\"./attributes\"),o=t(\"./constants\").name,s=a.buttons;function l(t,e,r){function o(r,i){return n.coerce(t,e,a,r,i)}o(\"visible\",i(t,e,{name:\"buttons\",handleItemDefaults:c}).length>0)&&(o(\"active\"),o(\"direction\"),o(\"type\"),o(\"showactive\"),o(\"x\"),o(\"y\"),n.noneOrAll(t,e,[\"x\",\"y\"]),o(\"xanchor\"),o(\"yanchor\"),o(\"pad.t\"),o(\"pad.r\"),o(\"pad.b\"),o(\"pad.l\"),n.coerceFont(o,\"font\",r.font),o(\"bgcolor\",r.paper_bgcolor),o(\"bordercolor\"),o(\"borderwidth\"))}function c(t,e){function r(r,i){return n.coerce(t,e,s,r,i)}r(\"visible\",\"skip\"===t.method||Array.isArray(t.args))&&(r(\"method\"),r(\"args\"),r(\"args2\"),r(\"label\"),r(\"execute\"))}e.exports=function(t,e){i(t,e,{name:o,handleItemDefaults:l})}},{\"../../lib\":503,\"../../plots/array_container_defaults\":549,\"./attributes\":465,\"./constants\":466}],468:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../plots/plots\"),a=t(\"../color\"),o=t(\"../drawing\"),s=t(\"../../lib\"),l=t(\"../../lib/svg_text_utils\"),c=t(\"../../plot_api/plot_template\").arrayEditor,u=t(\"../../constants/alignment\").LINE_SPACING,f=t(\"./constants\"),h=t(\"./scrollbox\");function p(t){return t._index}function d(t,e){return+t.attr(f.menuIndexAttrName)===e._index}function g(t,e,r,n,i,a,o,s){e.active=o,c(t.layout,f.name,e).applyUpdate(\"active\",o),\"buttons\"===e.type?v(t,n,null,null,e):\"dropdown\"===e.type&&(i.attr(f.menuIndexAttrName,\"-1\"),m(t,n,i,a,e),s||v(t,n,i,a,e))}function m(t,e,r,n,i){var a=s.ensureSingle(e,\"g\",f.headerClassName,(function(t){t.style(\"pointer-events\",\"all\")})),l=i._dims,c=i.active,u=i.buttons[c]||f.blankHeaderOpts,h={y:i.pad.t,yPad:0,x:i.pad.l,xPad:0,index:0},p={width:l.headerWidth,height:l.headerHeight};a.call(y,i,u,t).call(M,i,h,p),s.ensureSingle(e,\"text\",f.headerArrowClassName,(function(t){t.attr(\"text-anchor\",\"end\").call(o.font,i.font).text(f.arrowSymbol[i.direction])})).attr({x:l.headerWidth-f.arrowOffsetX+i.pad.l,y:l.headerHeight/2+f.textOffsetY+i.pad.t}),a.on(\"click\",(function(){r.call(S,String(d(r,i)?-1:i._index)),v(t,e,r,n,i)})),a.on(\"mouseover\",(function(){a.call(w)})),a.on(\"mouseout\",(function(){a.call(T,i)})),o.setTranslate(e,l.lx,l.ly)}function v(t,e,r,a,o){r||(r=e).attr(\"pointer-events\",\"all\");var l=function(t){return-1==+t.attr(f.menuIndexAttrName)}(r)&&\"buttons\"!==o.type?[]:o.buttons,c=\"dropdown\"===o.type?f.dropdownButtonClassName:f.buttonClassName,u=r.selectAll(\"g.\"+c).data(s.filterVisible(l)),h=u.enter().append(\"g\").classed(c,!0),p=u.exit();\"dropdown\"===o.type?(h.attr(\"opacity\",\"0\").transition().attr(\"opacity\",\"1\"),p.transition().attr(\"opacity\",\"0\").remove()):p.remove();var d=0,m=0,v=o._dims,x=-1!==[\"up\",\"down\"].indexOf(o.direction);\"dropdown\"===o.type&&(x?m=v.headerHeight+f.gapButtonHeader:d=v.headerWidth+f.gapButtonHeader),\"dropdown\"===o.type&&\"up\"===o.direction&&(m=-f.gapButtonHeader+f.gapButton-v.openHeight),\"dropdown\"===o.type&&\"left\"===o.direction&&(d=-f.gapButtonHeader+f.gapButton-v.openWidth);var b={x:v.lx+d+o.pad.l,y:v.ly+m+o.pad.t,yPad:f.gapButton,xPad:f.gapButton,index:0},k={l:b.x+o.borderwidth,t:b.y+o.borderwidth};u.each((function(s,l){var c=n.select(this);c.call(y,o,s,t).call(M,o,b),c.on(\"click\",(function(){n.event.defaultPrevented||(s.execute&&(s.args2&&o.active===l?(g(t,o,0,e,r,a,-1),i.executeAPICommand(t,s.method,s.args2)):(g(t,o,0,e,r,a,l),i.executeAPICommand(t,s.method,s.args))),t.emit(\"plotly_buttonclicked\",{menu:o,button:s,active:o.active}))})),c.on(\"mouseover\",(function(){c.call(w)})),c.on(\"mouseout\",(function(){c.call(T,o),u.call(_,o)}))})),u.call(_,o),x?(k.w=Math.max(v.openWidth,v.headerWidth),k.h=b.y-k.t):(k.w=b.x-k.l,k.h=Math.max(v.openHeight,v.headerHeight)),k.direction=o.direction,a&&(u.size()?function(t,e,r,n,i,a){var o,s,l,c=i.direction,u=\"up\"===c||\"down\"===c,h=i._dims,p=i.active;if(u)for(s=0,l=0;l0?[0]:[]);if(o.enter().append(\"g\").classed(f.containerClassName,!0).style(\"cursor\",\"pointer\"),o.exit().each((function(){n.select(this).selectAll(\"g.\"+f.headerGroupClassName).each(a)})).remove(),0!==r.length){var l=o.selectAll(\"g.\"+f.headerGroupClassName).data(r,p);l.enter().append(\"g\").classed(f.headerGroupClassName,!0);for(var c=s.ensureSingle(o,\"g\",f.dropdownButtonGroupClassName,(function(t){t.style(\"pointer-events\",\"all\")})),u=0;uw,A=s.barLength+2*s.barPad,M=s.barWidth+2*s.barPad,S=d,E=m+v;E+M>c&&(E=c-M);var L=this.container.selectAll(\"rect.scrollbar-horizontal\").data(k?[0]:[]);L.exit().on(\".drag\",null).remove(),L.enter().append(\"rect\").classed(\"scrollbar-horizontal\",!0).call(i.fill,s.barColor),k?(this.hbar=L.attr({rx:s.barRadius,ry:s.barRadius,x:S,y:E,width:A,height:M}),this._hbarXMin=S+A/2,this._hbarTranslateMax=w-A):(delete this.hbar,delete this._hbarXMin,delete this._hbarTranslateMax);var C=v>T,P=s.barWidth+2*s.barPad,I=s.barLength+2*s.barPad,O=d+g,z=m;O+P>l&&(O=l-P);var D=this.container.selectAll(\"rect.scrollbar-vertical\").data(C?[0]:[]);D.exit().on(\".drag\",null).remove(),D.enter().append(\"rect\").classed(\"scrollbar-vertical\",!0).call(i.fill,s.barColor),C?(this.vbar=D.attr({rx:s.barRadius,ry:s.barRadius,x:O,y:z,width:P,height:I}),this._vbarYMin=z+I/2,this._vbarTranslateMax=T-I):(delete this.vbar,delete this._vbarYMin,delete this._vbarTranslateMax);var R=this.id,F=u-.5,B=C?f+P+.5:f+.5,N=h-.5,j=k?p+M+.5:p+.5,U=o._topdefs.selectAll(\"#\"+R).data(k||C?[0]:[]);if(U.exit().remove(),U.enter().append(\"clipPath\").attr(\"id\",R).append(\"rect\"),k||C?(this._clipRect=U.select(\"rect\").attr({x:Math.floor(F),y:Math.floor(N),width:Math.ceil(B)-Math.floor(F),height:Math.ceil(j)-Math.floor(N)}),this.container.call(a.setClipUrl,R,this.gd),this.bg.attr({x:d,y:m,width:g,height:v})):(this.bg.attr({width:0,height:0}),this.container.on(\"wheel\",null).on(\".drag\",null).call(a.setClipUrl,null),delete this._clipRect),k||C){var V=n.behavior.drag().on(\"dragstart\",(function(){n.event.sourceEvent.preventDefault()})).on(\"drag\",this._onBoxDrag.bind(this));this.container.on(\"wheel\",null).on(\"wheel\",this._onBoxWheel.bind(this)).on(\".drag\",null).call(V);var H=n.behavior.drag().on(\"dragstart\",(function(){n.event.sourceEvent.preventDefault(),n.event.sourceEvent.stopPropagation()})).on(\"drag\",this._onBarDrag.bind(this));k&&this.hbar.on(\".drag\",null).call(H),C&&this.vbar.on(\".drag\",null).call(H)}this.setTranslate(e,r)},s.prototype.disable=function(){(this.hbar||this.vbar)&&(this.bg.attr({width:0,height:0}),this.container.on(\"wheel\",null).on(\".drag\",null).call(a.setClipUrl,null),delete this._clipRect),this.hbar&&(this.hbar.on(\".drag\",null),this.hbar.remove(),delete this.hbar,delete this._hbarXMin,delete this._hbarTranslateMax),this.vbar&&(this.vbar.on(\".drag\",null),this.vbar.remove(),delete this.vbar,delete this._vbarYMin,delete this._vbarTranslateMax)},s.prototype._onBoxDrag=function(){var t=this.translateX,e=this.translateY;this.hbar&&(t-=n.event.dx),this.vbar&&(e-=n.event.dy),this.setTranslate(t,e)},s.prototype._onBoxWheel=function(){var t=this.translateX,e=this.translateY;this.hbar&&(t+=n.event.deltaY),this.vbar&&(e+=n.event.deltaY),this.setTranslate(t,e)},s.prototype._onBarDrag=function(){var t=this.translateX,e=this.translateY;if(this.hbar){var r=t+this._hbarXMin,i=r+this._hbarTranslateMax;t=(o.constrain(n.event.x,r,i)-r)/(i-r)*(this.position.w-this._box.w)}if(this.vbar){var a=e+this._vbarYMin,s=a+this._vbarTranslateMax;e=(o.constrain(n.event.y,a,s)-a)/(s-a)*(this.position.h-this._box.h)}this.setTranslate(t,e)},s.prototype.setTranslate=function(t,e){var r=this.position.w-this._box.w,n=this.position.h-this._box.h;if(t=o.constrain(t||0,0,r),e=o.constrain(e||0,0,n),this.translateX=t,this.translateY=e,this.container.call(a.setTranslate,this._box.l-this.position.l-t,this._box.t-this.position.t-e),this._clipRect&&this._clipRect.attr({x:Math.floor(this.position.l+t-.5),y:Math.floor(this.position.t+e-.5)}),this.hbar){var i=t/r;this.hbar.call(a.setTranslate,t+i*this._hbarTranslateMax,e)}if(this.vbar){var s=e/n;this.vbar.call(a.setTranslate,t,e+s*this._vbarTranslateMax)}}},{\"../../lib\":503,\"../color\":366,\"../drawing\":388,\"@plotly/d3\":58}],471:[function(t,e,r){\"use strict\";e.exports={FROM_BL:{left:0,center:.5,right:1,bottom:0,middle:.5,top:1},FROM_TL:{left:0,center:.5,right:1,bottom:1,middle:.5,top:0},FROM_BR:{left:1,center:.5,right:0,bottom:0,middle:.5,top:1},LINE_SPACING:1.3,CAP_SHIFT:.7,MID_SHIFT:.35,OPPOSITE_SIDE:{left:\"right\",right:\"left\",top:\"bottom\",bottom:\"top\"}}},{}],472:[function(t,e,r){\"use strict\";e.exports={axisRefDescription:function(t,e,r){return[\"If set to a\",t,\"axis id (e.g. *\"+t+\"* or\",\"*\"+t+\"2*), the `\"+t+\"` position refers to a\",t,\"coordinate. If set to *paper*, the `\"+t+\"`\",\"position refers to the distance from the\",e,\"of the plotting\",\"area in normalized coordinates where *0* (*1*) corresponds to the\",e,\"(\"+r+\"). If set to a\",t,\"axis ID followed by\",\"*domain* (separated by a space), the position behaves like for\",\"*paper*, but refers to the distance in fractions of the domain\",\"length from the\",e,\"of the domain of that axis: e.g.,\",\"*\"+t+\"2 domain* refers to the domain of the second\",t,\" axis and a\",t,\"position of 0.5 refers to the\",\"point between the\",e,\"and the\",r,\"of the domain of the\",\"second\",t,\"axis.\"].join(\" \")}}},{}],473:[function(t,e,r){\"use strict\";e.exports={INCREASING:{COLOR:\"#3D9970\",SYMBOL:\"\\u25b2\"},DECREASING:{COLOR:\"#FF4136\",SYMBOL:\"\\u25bc\"}}},{}],474:[function(t,e,r){\"use strict\";e.exports={FORMAT_LINK:\"https://github.com/d3/d3-format/tree/v1.4.5#d3-format\",DATE_FORMAT_LINK:\"https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format\"}},{}],475:[function(t,e,r){\"use strict\";e.exports={COMPARISON_OPS:[\"=\",\"!=\",\"<\",\">=\",\">\",\"<=\"],COMPARISON_OPS2:[\"=\",\"<\",\">=\",\">\",\"<=\"],INTERVAL_OPS:[\"[]\",\"()\",\"[)\",\"(]\",\"][\",\")(\",\"](\",\")[\"],SET_OPS:[\"{}\",\"}{\"],CONSTRAINT_REDUCTION:{\"=\":\"=\",\"<\":\"<\",\"<=\":\"<\",\">\":\">\",\">=\":\">\",\"[]\":\"[]\",\"()\":\"[]\",\"[)\":\"[]\",\"(]\":\"[]\",\"][\":\"][\",\")(\":\"][\",\"](\":\"][\",\")[\":\"][\"}}},{}],476:[function(t,e,r){\"use strict\";e.exports={solid:[[],0],dot:[[.5,1],200],dash:[[.5,1],50],longdash:[[.5,1],10],dashdot:[[.5,.625,.875,1],50],longdashdot:[[.5,.7,.8,1],10]}},{}],477:[function(t,e,r){\"use strict\";e.exports={circle:\"\\u25cf\",\"circle-open\":\"\\u25cb\",square:\"\\u25a0\",\"square-open\":\"\\u25a1\",diamond:\"\\u25c6\",\"diamond-open\":\"\\u25c7\",cross:\"+\",x:\"\\u274c\"}},{}],478:[function(t,e,r){\"use strict\";e.exports={SHOW_PLACEHOLDER:100,HIDE_PLACEHOLDER:1e3,DESELECTDIM:.2}},{}],479:[function(t,e,r){\"use strict\";e.exports={BADNUM:void 0,FP_SAFE:1e-4*Number.MAX_VALUE,ONEMAXYEAR:316224e5,ONEAVGYEAR:315576e5,ONEMINYEAR:31536e6,ONEMAXQUARTER:79488e5,ONEAVGQUARTER:78894e5,ONEMINQUARTER:76896e5,ONEMAXMONTH:26784e5,ONEAVGMONTH:26298e5,ONEMINMONTH:24192e5,ONEWEEK:6048e5,ONEDAY:864e5,ONEHOUR:36e5,ONEMIN:6e4,ONESEC:1e3,EPOCHJD:2440587.5,ALMOST_EQUAL:.999999,LOG_CLIP:10,MINUS_SIGN:\"\\u2212\"}},{}],480:[function(t,e,r){\"use strict\";r.xmlns=\"http://www.w3.org/2000/xmlns/\",r.svg=\"http://www.w3.org/2000/svg\",r.xlink=\"http://www.w3.org/1999/xlink\",r.svgAttrs={xmlns:r.svg,\"xmlns:xlink\":r.xlink}},{}],481:[function(t,e,r){\"use strict\";r.version=t(\"./version\").version,t(\"native-promise-only\"),t(\"../build/plotcss\");for(var n=t(\"./registry\"),i=r.register=n.register,a=t(\"./plot_api\"),o=Object.keys(a),s=0;splotly-logomark\"}}},{}],483:[function(t,e,r){\"use strict\";r.isLeftAnchor=function(t){return\"left\"===t.xanchor||\"auto\"===t.xanchor&&t.x<=1/3},r.isCenterAnchor=function(t){return\"center\"===t.xanchor||\"auto\"===t.xanchor&&t.x>1/3&&t.x<2/3},r.isRightAnchor=function(t){return\"right\"===t.xanchor||\"auto\"===t.xanchor&&t.x>=2/3},r.isTopAnchor=function(t){return\"top\"===t.yanchor||\"auto\"===t.yanchor&&t.y>=2/3},r.isMiddleAnchor=function(t){return\"middle\"===t.yanchor||\"auto\"===t.yanchor&&t.y>1/3&&t.y<2/3},r.isBottomAnchor=function(t){return\"bottom\"===t.yanchor||\"auto\"===t.yanchor&&t.y<=1/3}},{}],484:[function(t,e,r){\"use strict\";var n=t(\"./mod\"),i=n.mod,a=n.modHalf,o=Math.PI,s=2*o;function l(t){return Math.abs(t[1]-t[0])>s-1e-14}function c(t,e){return a(e-t,s)}function u(t,e){if(l(e))return!0;var r,n;e[0](n=i(n,s))&&(n+=s);var a=i(t,s),o=a+s;return a>=r&&a<=n||o>=r&&o<=n}function f(t,e,r,n,i,a,c){i=i||0,a=a||0;var u,f,h,p,d,g=l([r,n]);function m(t,e){return[t*Math.cos(e)+i,a-t*Math.sin(e)]}g?(u=0,f=o,h=s):r=i&&t<=a);var i,a},pathArc:function(t,e,r,n,i){return f(null,t,e,r,n,i,0)},pathSector:function(t,e,r,n,i){return f(null,t,e,r,n,i,1)},pathAnnulus:function(t,e,r,n,i,a){return f(t,e,r,n,i,a,1)}}},{\"./mod\":510}],485:[function(t,e,r){\"use strict\";var n=Array.isArray,i=ArrayBuffer,a=DataView;function o(t){return i.isView(t)&&!(t instanceof a)}function s(t){return n(t)||o(t)}function l(t,e,r){if(s(t)){if(s(t[0])){for(var n=r,i=0;ii.max?e.set(r):e.set(+t)}},integer:{coerceFunction:function(t,e,r,i){t%1||!n(t)||void 0!==i.min&&ti.max?e.set(r):e.set(+t)}},string:{coerceFunction:function(t,e,r,n){if(\"string\"!=typeof t){var i=\"number\"==typeof t;!0!==n.strict&&i?e.set(String(t)):e.set(r)}else n.noBlank&&!t?e.set(r):e.set(t)}},color:{coerceFunction:function(t,e,r){i(t).isValid()?e.set(t):e.set(r)}},colorlist:{coerceFunction:function(t,e,r){Array.isArray(t)&&t.length&&t.every((function(t){return i(t).isValid()}))?e.set(t):e.set(r)}},colorscale:{coerceFunction:function(t,e,r){e.set(o.get(t,r))}},angle:{coerceFunction:function(t,e,r){\"auto\"===t?e.set(\"auto\"):n(t)?e.set(f(+t,360)):e.set(r)}},subplotid:{coerceFunction:function(t,e,r,n){var i=n.regex||u(r);\"string\"==typeof t&&i.test(t)?e.set(t):e.set(r)},validateFunction:function(t,e){var r=e.dflt;return t===r||\"string\"==typeof t&&!!u(r).test(t)}},flaglist:{coerceFunction:function(t,e,r,n){if(\"string\"==typeof t)if(-1===(n.extras||[]).indexOf(t)){for(var i=t.split(\"+\"),a=0;a=n&&t<=i?t:u}if(\"string\"!=typeof t&&\"number\"!=typeof t)return u;t=String(t);var c=_(e),v=t.charAt(0);!c||\"G\"!==v&&\"g\"!==v||(t=t.substr(1),e=\"\");var w=c&&\"chinese\"===e.substr(0,7),T=t.match(w?x:y);if(!T)return u;var k=T[1],A=T[3]||\"1\",M=Number(T[5]||1),S=Number(T[7]||0),E=Number(T[9]||0),L=Number(T[11]||0);if(c){if(2===k.length)return u;var C;k=Number(k);try{var P=m.getComponentMethod(\"calendars\",\"getCal\")(e);if(w){var I=\"i\"===A.charAt(A.length-1);A=parseInt(A,10),C=P.newDate(k,P.toMonthIndex(k,A,I),M)}else C=P.newDate(k,Number(A),M)}catch(t){return u}return C?(C.toJD()-g)*f+S*h+E*p+L*d:u}k=2===k.length?(Number(k)+2e3-b)%100+b:Number(k),A-=1;var O=new Date(Date.UTC(2e3,A,M,S,E));return O.setUTCFullYear(k),O.getUTCMonth()!==A||O.getUTCDate()!==M?u:O.getTime()+L*d},n=r.MIN_MS=r.dateTime2ms(\"-9999\"),i=r.MAX_MS=r.dateTime2ms(\"9999-12-31 23:59:59.9999\"),r.isDateTime=function(t,e){return r.dateTime2ms(t,e)!==u};var T=90*f,k=3*h,A=5*p;function M(t,e,r,n,i){if((e||r||n||i)&&(t+=\" \"+w(e,2)+\":\"+w(r,2),(n||i)&&(t+=\":\"+w(n,2),i))){for(var a=4;i%10==0;)a-=1,i/=10;t+=\".\"+w(i,a)}return t}r.ms2DateTime=function(t,e,r){if(\"number\"!=typeof t||!(t>=n&&t<=i))return u;e||(e=0);var a,o,s,c,y,x,b=Math.floor(10*l(t+.05,1)),w=Math.round(t-b/10);if(_(r)){var S=Math.floor(w/f)+g,E=Math.floor(l(t,f));try{a=m.getComponentMethod(\"calendars\",\"getCal\")(r).fromJD(S).formatDate(\"yyyy-mm-dd\")}catch(t){a=v(\"G%Y-%m-%d\")(new Date(w))}if(\"-\"===a.charAt(0))for(;a.length<11;)a=\"-0\"+a.substr(1);else for(;a.length<10;)a=\"0\"+a;o=e=n+f&&t<=i-f))return u;var e=Math.floor(10*l(t+.05,1)),r=new Date(Math.round(t-e/10));return M(a(\"%Y-%m-%d\")(r),r.getHours(),r.getMinutes(),r.getSeconds(),10*r.getUTCMilliseconds()+e)},r.cleanDate=function(t,e,n){if(t===u)return e;if(r.isJSDate(t)||\"number\"==typeof t&&isFinite(t)){if(_(n))return s.error(\"JS Dates and milliseconds are incompatible with world calendars\",t),e;if(!(t=r.ms2DateTimeLocal(+t))&&void 0!==e)return e}else if(!r.isDateTime(t,n))return s.error(\"unrecognized date\",t),e;return t};var S=/%\\d?f/g,E=/%h/g,L={1:\"1\",2:\"1\",3:\"2\",4:\"2\"};function C(t,e,r,n){t=t.replace(S,(function(t){var r=Math.min(+t.charAt(1)||6,6);return(e/1e3%1+2).toFixed(r).substr(2).replace(/0+$/,\"\")||\"0\"}));var i=new Date(Math.floor(e+.05));if(t=t.replace(E,(function(){return L[r(\"%q\")(i)]})),_(n))try{t=m.getComponentMethod(\"calendars\",\"worldCalFmt\")(t,e,n)}catch(t){return\"Invalid\"}return r(t)(i)}var P=[59,59.9,59.99,59.999,59.9999];r.formatDate=function(t,e,r,n,i,a){if(i=_(i)&&i,!e)if(\"y\"===r)e=a.year;else if(\"m\"===r)e=a.month;else{if(\"d\"!==r)return function(t,e){var r=l(t+.05,f),n=w(Math.floor(r/h),2)+\":\"+w(l(Math.floor(r/p),60),2);if(\"M\"!==e){o(e)||(e=0);var i=(100+Math.min(l(t/d,60),P[e])).toFixed(e).substr(1);e>0&&(i=i.replace(/0+$/,\"\").replace(/[\\.]$/,\"\")),n+=\":\"+i}return n}(t,r)+\"\\n\"+C(a.dayMonthYear,t,n,i);e=a.dayMonth+\"\\n\"+a.year}return C(e,t,n,i)};var I=3*f;r.incrementMonth=function(t,e,r){r=_(r)&&r;var n=l(t,f);if(t=Math.round(t-n),r)try{var i=Math.round(t/f)+g,a=m.getComponentMethod(\"calendars\",\"getCal\")(r),o=a.fromJD(i);return e%12?a.add(o,e,\"m\"):a.add(o,e/12,\"y\"),(o.toJD()-g)*f+n}catch(e){s.error(\"invalid ms \"+t+\" in calendar \"+r)}var c=new Date(t+I);return c.setUTCMonth(c.getUTCMonth()+e)+n-I},r.findExactDates=function(t,e){for(var r,n,i=0,a=0,s=0,l=0,c=_(e)&&m.getComponentMethod(\"calendars\",\"getCal\")(e),u=0;u0&&t[e+1][0]<0)return e;return null}switch(e=\"RUS\"===s||\"FJI\"===s?function(t){var e;if(null===c(t))e=t;else for(e=new Array(t.length),i=0;ie?r[n++]=[t[i][0]+360,t[i][1]]:i===e?(r[n++]=t[i],r[n++]=[t[i][0],-90]):r[n++]=t[i];var a=h.tester(r);a.pts.pop(),l.push(a)}:function(t){l.push(h.tester(t))},a.type){case\"MultiPolygon\":for(r=0;ri&&(i=c,e=l)}else e=r;return o.default(e).geometry.coordinates}(u),n.fIn=t,n.fOut=u,s.push(u)}else c.log([\"Location\",n.loc,\"does not have a valid GeoJSON geometry.\",\"Traces with locationmode *geojson-id* only support\",\"*Polygon* and *MultiPolygon* geometries.\"].join(\" \"))}delete i[r]}switch(r.type){case\"FeatureCollection\":var h=r.features;for(n=0;n100?(clearInterval(a),n(\"Unexpected error while fetching from \"+t)):void i++}),50)}))}for(var o=0;o0&&(r.push(i),i=[])}return i.length>0&&r.push(i),r},r.makeLine=function(t){return 1===t.length?{type:\"LineString\",coordinates:t[0]}:{type:\"MultiLineString\",coordinates:t}},r.makePolygon=function(t){if(1===t.length)return{type:\"Polygon\",coordinates:t};for(var e=new Array(t.length),r=0;r1||g<0||g>1?null:{x:t+l*g,y:e+f*g}}function l(t,e,r,n,i){var a=n*t+i*e;if(a<0)return n*n+i*i;if(a>r){var o=n-t,s=i-e;return o*o+s*s}var l=n*e-i*t;return l*l/r}r.segmentsIntersect=s,r.segmentDistance=function(t,e,r,n,i,a,o,c){if(s(t,e,r,n,i,a,o,c))return 0;var u=r-t,f=n-e,h=o-i,p=c-a,d=u*u+f*f,g=h*h+p*p,m=Math.min(l(u,f,d,i-t,a-e),l(u,f,d,o-t,c-e),l(h,p,g,t-i,e-a),l(h,p,g,r-i,n-a));return Math.sqrt(m)},r.getTextLocation=function(t,e,r,s){if(t===i&&s===a||(n={},i=t,a=s),n[r])return n[r];var l=t.getPointAtLength(o(r-s/2,e)),c=t.getPointAtLength(o(r+s/2,e)),u=Math.atan((c.y-l.y)/(c.x-l.x)),f=t.getPointAtLength(o(r,e)),h={x:(4*f.x+l.x+c.x)/6,y:(4*f.y+l.y+c.y)/6,theta:u};return n[r]=h,h},r.clearLocationCache=function(){i=null},r.getVisibleSegment=function(t,e,r){var n,i,a=e.left,o=e.right,s=e.top,l=e.bottom,c=0,u=t.getTotalLength(),f=u;function h(e){var r=t.getPointAtLength(e);0===e?n=r:e===u&&(i=r);var c=r.xo?r.x-o:0,f=r.yl?r.y-l:0;return Math.sqrt(c*c+f*f)}for(var p=h(c);p;){if((c+=p+r)>f)return;p=h(c)}for(p=h(f);p;){if(c>(f-=p+r))return;p=h(f)}return{min:c,max:f,len:f-c,total:u,isClosed:0===c&&f===u&&Math.abs(n.x-i.x)<.1&&Math.abs(n.y-i.y)<.1}},r.findPointOnPath=function(t,e,r,n){for(var i,a,o,s=(n=n||{}).pathLength||t.getTotalLength(),l=n.tolerance||.001,c=n.iterationLimit||30,u=t.getPointAtLength(0)[r]>t.getPointAtLength(s)[r]?-1:1,f=0,h=0,p=s;f0?p=i:h=i,f++}return a}},{\"./mod\":510}],499:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"tinycolor2\"),a=t(\"color-normalize\"),o=t(\"../components/colorscale\"),s=t(\"../components/color/attributes\").defaultLine,l=t(\"./array\").isArrayOrTypedArray,c=a(s);function u(t,e){var r=t;return r[3]*=e,r}function f(t){if(n(t))return c;var e=a(t);return e.length?e:c}function h(t){return n(t)?t:1}e.exports={formatColor:function(t,e,r){var n,i,s,p,d,g=t.color,m=l(g),v=l(e),y=o.extractOpts(t),x=[];if(n=void 0!==y.colorscale?o.makeColorScaleFuncFromTrace(t):f,i=m?function(t,e){return void 0===t[e]?c:a(n(t[e]))}:f,s=v?function(t,e){return void 0===t[e]?1:h(t[e])}:h,m||v)for(var b=0;b1?(r*t+r*e)/r:t+e,i=String(n).length;if(i>16){var a=String(e).length;if(i>=String(t).length+a){var o=parseFloat(n).toPrecision(12);-1===o.indexOf(\"e+\")&&(n=+o)}}return n}},{}],503:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"d3-time-format\").utcFormat,a=t(\"d3-format\").format,o=t(\"fast-isnumeric\"),s=t(\"../constants/numerical\"),l=s.FP_SAFE,c=-l,u=s.BADNUM,f=e.exports={};f.adjustFormat=function(t){return!t||/^\\d[.]\\df/.test(t)||/[.]\\d%/.test(t)?t:\"0.f\"===t?\"~f\":/^\\d%/.test(t)?\"~%\":/^\\ds/.test(t)?\"~s\":!/^[~,.0$]/.test(t)&&/[&fps]/.test(t)?\"~\"+t:t};var h={};f.warnBadFormat=function(t){var e=String(t);h[e]||(h[e]=1,f.warn('encountered bad format: \"'+e+'\"'))},f.noFormat=function(t){return String(t)},f.numberFormat=function(t){var e;try{e=a(f.adjustFormat(t))}catch(e){return f.warnBadFormat(t),f.noFormat}return e},f.nestedProperty=t(\"./nested_property\"),f.keyedContainer=t(\"./keyed_container\"),f.relativeAttr=t(\"./relative_attr\"),f.isPlainObject=t(\"./is_plain_object\"),f.toLogRange=t(\"./to_log_range\"),f.relinkPrivateKeys=t(\"./relink_private\");var p=t(\"./array\");f.isTypedArray=p.isTypedArray,f.isArrayOrTypedArray=p.isArrayOrTypedArray,f.isArray1D=p.isArray1D,f.ensureArray=p.ensureArray,f.concat=p.concat,f.maxRowLength=p.maxRowLength,f.minRowLength=p.minRowLength;var d=t(\"./mod\");f.mod=d.mod,f.modHalf=d.modHalf;var g=t(\"./coerce\");f.valObjectMeta=g.valObjectMeta,f.coerce=g.coerce,f.coerce2=g.coerce2,f.coerceFont=g.coerceFont,f.coercePattern=g.coercePattern,f.coerceHoverinfo=g.coerceHoverinfo,f.coerceSelectionMarkerOpacity=g.coerceSelectionMarkerOpacity,f.validate=g.validate;var m=t(\"./dates\");f.dateTime2ms=m.dateTime2ms,f.isDateTime=m.isDateTime,f.ms2DateTime=m.ms2DateTime,f.ms2DateTimeLocal=m.ms2DateTimeLocal,f.cleanDate=m.cleanDate,f.isJSDate=m.isJSDate,f.formatDate=m.formatDate,f.incrementMonth=m.incrementMonth,f.dateTick0=m.dateTick0,f.dfltRange=m.dfltRange,f.findExactDates=m.findExactDates,f.MIN_MS=m.MIN_MS,f.MAX_MS=m.MAX_MS;var v=t(\"./search\");f.findBin=v.findBin,f.sorterAsc=v.sorterAsc,f.sorterDes=v.sorterDes,f.distinctVals=v.distinctVals,f.roundUp=v.roundUp,f.sort=v.sort,f.findIndexOfMin=v.findIndexOfMin,f.sortObjectKeys=t(\"./sort_object_keys\");var y=t(\"./stats\");f.aggNums=y.aggNums,f.len=y.len,f.mean=y.mean,f.median=y.median,f.midRange=y.midRange,f.variance=y.variance,f.stdev=y.stdev,f.interp=y.interp;var x=t(\"./matrix\");f.init2dArray=x.init2dArray,f.transposeRagged=x.transposeRagged,f.dot=x.dot,f.translationMatrix=x.translationMatrix,f.rotationMatrix=x.rotationMatrix,f.rotationXYMatrix=x.rotationXYMatrix,f.apply3DTransform=x.apply3DTransform,f.apply2DTransform=x.apply2DTransform,f.apply2DTransform2=x.apply2DTransform2,f.convertCssMatrix=x.convertCssMatrix,f.inverseTransformMatrix=x.inverseTransformMatrix;var b=t(\"./angles\");f.deg2rad=b.deg2rad,f.rad2deg=b.rad2deg,f.angleDelta=b.angleDelta,f.angleDist=b.angleDist,f.isFullCircle=b.isFullCircle,f.isAngleInsideSector=b.isAngleInsideSector,f.isPtInsideSector=b.isPtInsideSector,f.pathArc=b.pathArc,f.pathSector=b.pathSector,f.pathAnnulus=b.pathAnnulus;var _=t(\"./anchor_utils\");f.isLeftAnchor=_.isLeftAnchor,f.isCenterAnchor=_.isCenterAnchor,f.isRightAnchor=_.isRightAnchor,f.isTopAnchor=_.isTopAnchor,f.isMiddleAnchor=_.isMiddleAnchor,f.isBottomAnchor=_.isBottomAnchor;var w=t(\"./geometry2d\");f.segmentsIntersect=w.segmentsIntersect,f.segmentDistance=w.segmentDistance,f.getTextLocation=w.getTextLocation,f.clearLocationCache=w.clearLocationCache,f.getVisibleSegment=w.getVisibleSegment,f.findPointOnPath=w.findPointOnPath;var T=t(\"./extend\");f.extendFlat=T.extendFlat,f.extendDeep=T.extendDeep,f.extendDeepAll=T.extendDeepAll,f.extendDeepNoArrays=T.extendDeepNoArrays;var k=t(\"./loggers\");f.log=k.log,f.warn=k.warn,f.error=k.error;var A=t(\"./regex\");f.counterRegex=A.counter;var M=t(\"./throttle\");f.throttle=M.throttle,f.throttleDone=M.done,f.clearThrottle=M.clear;var S=t(\"./dom\");function E(t){var e={};for(var r in t)for(var n=t[r],i=0;il||t=e)&&(o(t)&&t>=0&&t%1==0)},f.noop=t(\"./noop\"),f.identity=t(\"./identity\"),f.repeat=function(t,e){for(var r=new Array(e),n=0;nr?Math.max(r,Math.min(e,t)):Math.max(e,Math.min(r,t))},f.bBoxIntersect=function(t,e,r){return r=r||0,t.left<=e.right+r&&e.left<=t.right+r&&t.top<=e.bottom+r&&e.top<=t.bottom+r},f.simpleMap=function(t,e,r,n,i){for(var a=t.length,o=new Array(a),s=0;s=Math.pow(2,r)?i>10?(f.warn(\"randstr failed uniqueness\"),l):t(e,r,n,(i||0)+1):l},f.OptionControl=function(t,e){t||(t={}),e||(e=\"opt\");var r={optionList:[],_newoption:function(n){n[e]=t,r[n.name]=n,r.optionList.push(n)}};return r[\"_\"+e]=t,r},f.smooth=function(t,e){if((e=Math.round(e)||0)<2)return t;var r,n,i,a,o=t.length,s=2*o,l=2*e-1,c=new Array(l),u=new Array(o);for(r=0;r=s&&(i-=s*Math.floor(i/s)),i<0?i=-1-i:i>=o&&(i=s-1-i),a+=t[i]*c[n];u[r]=a}return u},f.syncOrAsync=function(t,e,r){var n;function i(){return f.syncOrAsync(t,e,r)}for(;t.length;)if((n=(0,t.splice(0,1)[0])(e))&&n.then)return n.then(i);return r&&r(e)},f.stripTrailingSlash=function(t){return\"/\"===t.substr(-1)?t.substr(0,t.length-1):t},f.noneOrAll=function(t,e,r){if(t){var n,i=!1,a=!0;for(n=0;n0?e:0}))},f.fillArray=function(t,e,r,n){if(n=n||f.identity,f.isArrayOrTypedArray(t))for(var i=0;i1?i+o[1]:\"\";if(a&&(o.length>1||s.length>4||r))for(;n.test(s);)s=s.replace(n,\"$1\"+a+\"$2\");return s+l},f.TEMPLATE_STRING_REGEX=/%{([^\\s%{}:]*)([:|\\|][^}]*)?}/g;var z=/^\\w*$/;f.templateString=function(t,e){var r={};return t.replace(f.TEMPLATE_STRING_REGEX,(function(t,n){var i;return z.test(n)?i=e[n]:(r[n]=r[n]||f.nestedProperty(e,n).get,i=r[n]()),f.isValidTextValue(i)?i:\"\"}))};var D={max:10,count:0,name:\"hovertemplate\"};f.hovertemplateString=function(){return B.apply(D,arguments)};var R={max:10,count:0,name:\"texttemplate\"};f.texttemplateString=function(){return B.apply(R,arguments)};var F=/^[:|\\|]/;function B(t,e,r){var n=this,a=arguments;e||(e={});var o={};return t.replace(f.TEMPLATE_STRING_REGEX,(function(t,s,l){var c,u,h,p=\"_xother\"===s||\"_yother\"===s,d=\"_xother_\"===s||\"_yother_\"===s,g=\"xother_\"===s||\"yother_\"===s,m=\"xother\"===s||\"yother\"===s||p||g||d,v=s;if((p||d)&&(v=v.substring(1)),(g||d)&&(v=v.substring(0,v.length-1)),m){if(void 0===(c=e[v]))return\"\"}else for(h=3;h=48&&o<=57,c=s>=48&&s<=57;if(l&&(n=10*n+o-48),c&&(i=10*i+s-48),!l||!c){if(n!==i)return n-i;if(o!==s)return o-s}}return i-n};var N=2e9;f.seedPseudoRandom=function(){N=2e9},f.pseudoRandom=function(){var t=N;return N=(69069*N+1)%4294967296,Math.abs(N-t)<429496729?f.pseudoRandom():N/4294967296},f.fillText=function(t,e,r){var n=Array.isArray(r)?function(t){r.push(t)}:function(t){r.text=t},i=f.extractOption(t,e,\"htx\",\"hovertext\");if(f.isValidTextValue(i))return n(i);var a=f.extractOption(t,e,\"tx\",\"text\");return f.isValidTextValue(a)?n(a):void 0},f.isValidTextValue=function(t){return t||0===t},f.formatPercent=function(t,e){e=e||0;for(var r=(Math.round(100*t*Math.pow(10,e))*Math.pow(.1,e)).toFixed(e)+\"%\",n=0;n1&&(c=1):c=0,f.strTranslate(i-c*(r+o),a-c*(n+s))+f.strScale(c)+(l?\"rotate(\"+l+(e?\"\":\" \"+r+\" \"+n)+\")\":\"\")},f.ensureUniformFontSize=function(t,e){var r=f.extendFlat({},e);return r.size=Math.max(e.size,t._fullLayout.uniformtext.minsize||0),r},f.join2=function(t,e,r){var n=t.length;return n>1?t.slice(0,-1).join(e)+r+t[n-1]:t.join(e)},f.bigFont=function(t){return Math.round(1.2*t)};var j=f.getFirefoxVersion(),U=null!==j&&j<86;f.getPositionFromD3Event=function(){return U?[n.event.layerX,n.event.layerY]:[n.event.offsetX,n.event.offsetY]}},{\"../constants/numerical\":479,\"./anchor_utils\":483,\"./angles\":484,\"./array\":485,\"./clean_number\":486,\"./clear_responsive\":488,\"./coerce\":489,\"./dates\":490,\"./dom\":491,\"./extend\":493,\"./filter_unique\":494,\"./filter_visible\":495,\"./geometry2d\":498,\"./identity\":501,\"./increment\":502,\"./is_plain_object\":504,\"./keyed_container\":505,\"./localize\":506,\"./loggers\":507,\"./make_trace_groups\":508,\"./matrix\":509,\"./mod\":510,\"./nested_property\":511,\"./noop\":512,\"./notifier\":513,\"./preserve_drawing_buffer\":517,\"./push_unique\":518,\"./regex\":520,\"./relative_attr\":521,\"./relink_private\":522,\"./search\":523,\"./sort_object_keys\":526,\"./stats\":527,\"./throttle\":530,\"./to_log_range\":531,\"@plotly/d3\":58,\"d3-format\":112,\"d3-time-format\":120,\"fast-isnumeric\":190}],504:[function(t,e,r){\"use strict\";e.exports=function(t){return window&&window.process&&window.process.versions?\"[object Object]\"===Object.prototype.toString.call(t):\"[object Object]\"===Object.prototype.toString.call(t)&&Object.getPrototypeOf(t).hasOwnProperty(\"hasOwnProperty\")}},{}],505:[function(t,e,r){\"use strict\";var n=t(\"./nested_property\"),i=/^\\w*$/;e.exports=function(t,e,r,a){var o,s,l;r=r||\"name\",a=a||\"value\";var c={};e&&e.length?(l=n(t,e),s=l.get()):s=t,e=e||\"\";var u={};if(s)for(o=0;o2)return c[e]=2|c[e],h.set(t,null);if(f){for(o=e;o1){var e=[\"LOG:\"];for(t=0;t1){var r=[];for(t=0;t\"),\"long\")}},a.warn=function(){var t;if(n.logging>0){var e=[\"WARN:\"];for(t=0;t0){var r=[];for(t=0;t\"),\"stick\")}},a.error=function(){var t;if(n.logging>0){var e=[\"ERROR:\"];for(t=0;t0){var r=[];for(t=0;t\"),\"stick\")}}},{\"../plot_api/plot_config\":541,\"./notifier\":513}],508:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\");e.exports=function(t,e,r){var i=t.selectAll(\"g.\"+r.replace(/\\s/g,\".\")).data(e,(function(t){return t[0].trace.uid}));i.exit().remove(),i.enter().append(\"g\").attr(\"class\",r),i.order();var a=t.classed(\"rangeplot\")?\"nodeRangePlot3\":\"node3\";return i.each((function(t){t[0][a]=n.select(this)})),i}},{\"@plotly/d3\":58}],509:[function(t,e,r){\"use strict\";var n=t(\"gl-mat4\");r.init2dArray=function(t,e){for(var r=new Array(t),n=0;ne/2?t-Math.round(t/e)*e:t}}},{}],511:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"./array\").isArrayOrTypedArray;function a(t,e){return function(){var r,n,o,s,l,c=t;for(s=0;s/g),l=0;la||c===i||cs)&&(!e||!l(t))}:function(t,e){var l=t[0],c=t[1];if(l===i||la||c===i||cs)return!1;var u,f,h,p,d,g=r.length,m=r[0][0],v=r[0][1],y=0;for(u=1;uMath.max(f,m)||c>Math.max(h,v)))if(cu||Math.abs(n(o,h))>i)return!0;return!1},a.filter=function(t,e){var r=[t[0]],n=0,i=0;function o(o){t.push(o);var s=r.length,l=n;r.splice(i+1);for(var c=l+1;c1&&o(t.pop());return{addPt:o,raw:t,filtered:r}}},{\"../constants/numerical\":479,\"./matrix\":509}],516:[function(t,e,r){(function(r){(function(){\"use strict\";var n=t(\"./show_no_webgl_msg\"),i=t(\"regl\");e.exports=function(t,e){var a=t._fullLayout,o=!0;return a._glcanvas.each((function(n){if(!n.regl&&(!n.pick||a._has(\"parcoords\"))){try{n.regl=i({canvas:this,attributes:{antialias:!n.pick,preserveDrawingBuffer:!0},pixelRatio:t._context.plotGlPixelRatio||r.devicePixelRatio,extensions:e||[]})}catch(t){o=!1}n.regl||(o=!1),o&&this.addEventListener(\"webglcontextlost\",(function(e){t&&t.emit&&t.emit(\"plotly_webglcontextlost\",{event:e,layer:n.key})}),!1)}})),o||n({container:a._glcontainer.node()}),o}}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"./show_no_webgl_msg\":525,regl:283}],517:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"is-mobile\");e.exports=function(t){var e;if(\"string\"!=typeof(e=t&&t.hasOwnProperty(\"userAgent\")?t.userAgent:function(){var t;\"undefined\"!=typeof navigator&&(t=navigator.userAgent);t&&t.headers&&\"string\"==typeof t.headers[\"user-agent\"]&&(t=t.headers[\"user-agent\"]);return t}()))return!0;var r=i({ua:{headers:{\"user-agent\":e}},tablet:!0,featureDetect:!1});if(!r)for(var a=e.split(\" \"),o=1;o-1;s--){var l=a[s];if(\"Version/\"===l.substr(0,8)){var c=l.substr(8).split(\".\")[0];if(n(c)&&(c=+c),c>=13)return!0}}}return r}},{\"fast-isnumeric\":190,\"is-mobile\":234}],518:[function(t,e,r){\"use strict\";e.exports=function(t,e){if(e instanceof RegExp){for(var r=e.toString(),n=0;ni.queueLength&&(t.undoQueue.queue.shift(),t.undoQueue.index--))},startSequence:function(t){t.undoQueue=t.undoQueue||{index:0,queue:[],sequence:!1},t.undoQueue.sequence=!0,t.undoQueue.beginSequence=!0},stopSequence:function(t){t.undoQueue=t.undoQueue||{index:0,queue:[],sequence:!1},t.undoQueue.sequence=!1,t.undoQueue.beginSequence=!1},undo:function(t){var e,r;if(!(void 0===t.undoQueue||isNaN(t.undoQueue.index)||t.undoQueue.index<=0)){for(t.undoQueue.index--,e=t.undoQueue.queue[t.undoQueue.index],t.undoQueue.inSequence=!0,r=0;r=t.undoQueue.queue.length)){for(e=t.undoQueue.queue[t.undoQueue.index],t.undoQueue.inSequence=!0,r=0;re}function u(t,e){return t>=e}r.findBin=function(t,e,r){if(n(e.start))return r?Math.ceil((t-e.start)/e.size-1e-9)-1:Math.floor((t-e.start)/e.size+1e-9);var a,o,f=0,h=e.length,p=0,d=h>1?(e[h-1]-e[0])/(h-1):1;for(o=d>=0?r?s:l:r?u:c,t+=1e-9*d*(r?-1:1)*(d>=0?1:-1);f90&&i.log(\"Long binary search...\"),f-1},r.sorterAsc=function(t,e){return t-e},r.sorterDes=function(t,e){return e-t},r.distinctVals=function(t){var e,n=t.slice();for(n.sort(r.sorterAsc),e=n.length-1;e>-1&&n[e]===o;e--);for(var i,a=n[e]-n[0]||1,s=a/(e||1)/1e4,l=[],c=0;c<=e;c++){var u=n[c],f=u-i;void 0===i?(l.push(u),i=u):f>s&&(a=Math.min(a,f),l.push(u),i=u)}return{vals:l,minDiff:a}},r.roundUp=function(t,e,r){for(var n,i=0,a=e.length-1,o=0,s=r?0:1,l=r?1:0,c=r?Math.ceil:Math.floor;i0&&(n=1),r&&n)return t.sort(e)}return n?t:t.reverse()},r.findIndexOfMin=function(t,e){e=e||a;for(var r,n=1/0,i=0;ia.length)&&(o=a.length),n(e)||(e=!1),i(a[0])){for(l=new Array(o),s=0;st.length-1)return t[t.length-1];var r=e%1;return r*t[Math.ceil(e)]+(1-r)*t[Math.floor(e)]}},{\"./array\":485,\"fast-isnumeric\":190}],528:[function(t,e,r){\"use strict\";var n=t(\"color-normalize\");e.exports=function(t){return t?n(t):[0,0,0,1]}},{\"color-normalize\":89}],529:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../lib\"),a=i.strTranslate,o=t(\"../constants/xmlns_namespaces\"),s=t(\"../constants/alignment\").LINE_SPACING,l=/([^$]*)([$]+[^$]*[$]+)([^$]*)/;r.convertToTspans=function(t,e,d){var A=t.text(),M=!t.attr(\"data-notex\")&&\"undefined\"!=typeof MathJax&&A.match(l),L=n.select(t.node().parentNode);if(!L.empty()){var C=t.attr(\"class\")?t.attr(\"class\").split(\" \")[0]:\"text\";return C+=\"-math\",L.selectAll(\"svg.\"+C).remove(),L.selectAll(\"g.\"+C+\"-group\").remove(),t.style(\"display\",null).attr({\"data-unformatted\":A,\"data-math\":\"N\"}),M?(e&&e._promises||[]).push(new Promise((function(e){t.style(\"display\",\"none\");var r=parseInt(t.node().style.fontSize,10),o={fontSize:r};!function(t,e,r){var a,o,s,l;MathJax.Hub.Queue((function(){return o=i.extendDeepAll({},MathJax.Hub.config),s=MathJax.Hub.processSectionDelay,void 0!==MathJax.Hub.processSectionDelay&&(MathJax.Hub.processSectionDelay=0),MathJax.Hub.Config({messageStyle:\"none\",tex2jax:{inlineMath:[[\"$\",\"$\"],[\"\\\\(\",\"\\\\)\"]]},displayAlign:\"left\"})}),(function(){if(\"SVG\"!==(a=MathJax.Hub.config.menuSettings.renderer))return MathJax.Hub.setRenderer(\"SVG\")}),(function(){var r=\"math-output-\"+i.randstr({},64);return l=n.select(\"body\").append(\"div\").attr({id:r}).style({visibility:\"hidden\",position:\"absolute\"}).style({\"font-size\":e.fontSize+\"px\"}).text(t.replace(c,\"\\\\lt \").replace(u,\"\\\\gt \")),MathJax.Hub.Typeset(l.node())}),(function(){var e=n.select(\"body\").select(\"#MathJax_SVG_glyphs\");if(l.select(\".MathJax_SVG\").empty()||!l.select(\"svg\").node())i.log(\"There was an error in the tex syntax.\",t),r();else{var o=l.select(\"svg\").node().getBoundingClientRect();r(l.select(\".MathJax_SVG\"),e,o)}if(l.remove(),\"SVG\"!==a)return MathJax.Hub.setRenderer(a)}),(function(){return void 0!==s&&(MathJax.Hub.processSectionDelay=s),MathJax.Hub.Config(o)}))}(M[2],o,(function(n,i,o){L.selectAll(\"svg.\"+C).remove(),L.selectAll(\"g.\"+C+\"-group\").remove();var s=n&&n.select(\"svg\");if(!s||!s.node())return P(),void e();var l=L.append(\"g\").classed(C+\"-group\",!0).attr({\"pointer-events\":\"none\",\"data-unformatted\":A,\"data-math\":\"Y\"});l.node().appendChild(s.node()),i&&i.node()&&s.node().insertBefore(i.node().cloneNode(!0),s.node().firstChild);var c=o.width,u=o.height;s.attr({class:C,height:u,preserveAspectRatio:\"xMinYMin meet\"}).style({overflow:\"visible\",\"pointer-events\":\"none\"});var f=t.node().style.fill||\"black\",h=s.select(\"g\");h.attr({fill:f,stroke:f});var p=h.node().getBoundingClientRect(),g=p.width,m=p.height;(g>c||m>u)&&(s.style(\"overflow\",\"hidden\"),g=(p=s.node().getBoundingClientRect()).width,m=p.height);var v=+t.attr(\"x\"),y=+t.attr(\"y\"),x=-(r||t.node().getBoundingClientRect().height)/4;if(\"y\"===C[0])l.attr({transform:\"rotate(\"+[-90,v,y]+\")\"+a(-g/2,x-m/2)});else if(\"l\"===C[0])y=x-m/2;else if(\"a\"===C[0]&&0!==C.indexOf(\"atitle\"))v=0,y=x;else{var b=t.attr(\"text-anchor\");v-=g*(\"middle\"===b?.5:\"end\"===b?1:0),y=y+x-m/2}s.attr({x:v,y:y}),d&&d.call(t,l),e(l)}))}))):P(),t}function P(){L.empty()||(C=t.attr(\"class\")+\"-math\",L.select(\"svg.\"+C).remove()),t.text(\"\").style(\"white-space\",\"pre\"),function(t,e){e=e.replace(g,\" \");var r,a=!1,l=[],c=-1;function u(){c++;var e=document.createElementNS(o.svg,\"tspan\");n.select(e).attr({class:\"line\",dy:c*s+\"em\"}),t.appendChild(e),r=e;var i=l;if(l=[{node:e}],i.length>1)for(var a=1;a doesnt match end tag <\"+t+\">. Pretending it did match.\",e),r=l[l.length-1].node}else i.log(\"Ignoring unexpected end tag .\",e)}y.test(e)?u():(r=t,l=[{node:t}]);for(var L=e.split(m),C=0;C|>|>)/g;var f={sup:\"font-size:70%\",sub:\"font-size:70%\",b:\"font-weight:bold\",i:\"font-style:italic\",a:\"cursor:pointer\",span:\"\",em:\"font-style:italic;font-weight:bold\"},h={sub:\"0.3em\",sup:\"-0.6em\"},p={sub:\"-0.21em\",sup:\"0.42em\"},d=[\"http:\",\"https:\",\"mailto:\",\"\",void 0,\":\"],g=r.NEWLINES=/(\\r\\n?|\\n)/g,m=/(<[^<>]*>)/,v=/<(\\/?)([^ >]*)(\\s+(.*))?>/i,y=//i;r.BR_TAG_ALL=//gi;var x=/(^|[\\s\"'])style\\s*=\\s*(\"([^\"]*);?\"|'([^']*);?')/i,b=/(^|[\\s\"'])href\\s*=\\s*(\"([^\"]*)\"|'([^']*)')/i,_=/(^|[\\s\"'])target\\s*=\\s*(\"([^\"\\s]*)\"|'([^'\\s]*)')/i,w=/(^|[\\s\"'])popup\\s*=\\s*(\"([\\w=,]*)\"|'([\\w=,]*)')/i;function T(t,e){if(!t)return null;var r=t.match(e),n=r&&(r[3]||r[4]);return n&&S(n)}var k=/(^|;)\\s*color:/;r.plainText=function(t,e){for(var r=void 0!==(e=e||{}).len&&-1!==e.len?e.len:1/0,n=void 0!==e.allowedTags?e.allowedTags:[\"br\"],i=\"...\".length,a=t.split(m),o=[],s=\"\",l=0,c=0;ci?o.push(u.substr(0,d-i)+\"...\"):o.push(u.substr(0,d));break}s=\"\"}}return o.join(\"\")};var A={mu:\"\\u03bc\",amp:\"&\",lt:\"<\",gt:\">\",nbsp:\"\\xa0\",times:\"\\xd7\",plusmn:\"\\xb1\",deg:\"\\xb0\"},M=/&(#\\d+|#x[\\da-fA-F]+|[a-z]+);/g;function S(t){return t.replace(M,(function(t,e){return(\"#\"===e.charAt(0)?function(t){if(t>1114111)return;var e=String.fromCodePoint;if(e)return e(t);var r=String.fromCharCode;return t<=65535?r(t):r(55232+(t>>10),t%1024+56320)}(\"x\"===e.charAt(1)?parseInt(e.substr(2),16):parseInt(e.substr(1),10)):A[e])||t}))}function E(t){var e=encodeURI(decodeURI(t)),r=document.createElement(\"a\"),n=document.createElement(\"a\");r.href=t,n.href=e;var i=r.protocol,a=n.protocol;return-1!==d.indexOf(i)&&-1!==d.indexOf(a)?e:\"\"}function L(t,e,r){var n,a,o,s=r.horizontalAlign,l=r.verticalAlign||\"top\",c=t.node().getBoundingClientRect(),u=e.node().getBoundingClientRect();return a=\"bottom\"===l?function(){return c.bottom-n.height}:\"middle\"===l?function(){return c.top+(c.height-n.height)/2}:function(){return c.top},o=\"right\"===s?function(){return c.right-n.width}:\"center\"===s?function(){return c.left+(c.width-n.width)/2}:function(){return c.left},function(){n=this.node().getBoundingClientRect();var t=o()-u.left,e=a()-u.top,s=r.gd||{};if(r.gd){s._fullLayout._calcInverseTransform(s);var l=i.apply3DTransform(s._fullLayout._invTransform)(t,e);t=l[0],e=l[1]}return this.style({top:e+\"px\",left:t+\"px\",\"z-index\":1e3}),this}}r.convertEntities=S,r.sanitizeHTML=function(t){t=t.replace(g,\" \");for(var e=document.createElement(\"p\"),r=e,i=[],a=t.split(m),o=0;oa.ts+e?l():a.timer=setTimeout((function(){l(),a.timer=null}),e)},r.done=function(t){var e=n[t];return e&&e.timer?new Promise((function(t){var r=e.onDone;e.onDone=function(){r&&r(),t(),e.onDone=null}})):Promise.resolve()},r.clear=function(t){if(t)i(n[t]),delete n[t];else for(var e in n)r.clear(e)}},{}],531:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\");e.exports=function(t,e){if(t>0)return Math.log(t)/Math.LN10;var r=Math.log(Math.min(e[0],e[1]))/Math.LN10;return n(r)||(r=Math.log(Math.max(e[0],e[1]))/Math.LN10-6),r}},{\"fast-isnumeric\":190}],532:[function(t,e,r){\"use strict\";var n=e.exports={},i=t(\"../plots/geo/constants\").locationmodeToLayer,a=t(\"topojson-client\").feature;n.getTopojsonName=function(t){return[t.scope.replace(/ /g,\"-\"),\"_\",t.resolution.toString(),\"m\"].join(\"\")},n.getTopojsonPath=function(t,e){return t+e+\".json\"},n.getTopojsonFeatures=function(t,e){var r=i[t.locationmode],n=e.objects[r];return a(e,n).features}},{\"../plots/geo/constants\":587,\"topojson-client\":315}],533:[function(t,e,r){\"use strict\";e.exports={moduleType:\"locale\",name:\"en-US\",dictionary:{\"Click to enter Colorscale title\":\"Click to enter Colorscale title\"},format:{date:\"%m/%d/%Y\"}}},{}],534:[function(t,e,r){\"use strict\";e.exports={moduleType:\"locale\",name:\"en\",dictionary:{\"Click to enter Colorscale title\":\"Click to enter Colourscale title\"},format:{days:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],shortDays:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],months:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],shortMonths:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],periods:[\"AM\",\"PM\"],dateTime:\"%a %b %e %X %Y\",date:\"%d/%m/%Y\",time:\"%H:%M:%S\",decimal:\".\",thousands:\",\",grouping:[3],currency:[\"$\",\"\"],year:\"%Y\",month:\"%b %Y\",dayMonth:\"%b %-d\",dayMonthYear:\"%b %-d, %Y\"}}},{}],535:[function(t,e,r){\"use strict\";var n=t(\"../registry\");e.exports=function(t){for(var e,r,i=n.layoutArrayContainers,a=n.layoutArrayRegexes,o=t.split(\"[\")[0],s=0;s0&&o.log(\"Clearing previous rejected promises from queue.\"),t._promises=[]},r.cleanLayout=function(t){var e,n;t||(t={}),t.xaxis1&&(t.xaxis||(t.xaxis=t.xaxis1),delete t.xaxis1),t.yaxis1&&(t.yaxis||(t.yaxis=t.yaxis1),delete t.yaxis1),t.scene1&&(t.scene||(t.scene=t.scene1),delete t.scene1);var a=(s.subplotsRegistry.cartesian||{}).attrRegex,l=(s.subplotsRegistry.polar||{}).attrRegex,f=(s.subplotsRegistry.ternary||{}).attrRegex,h=(s.subplotsRegistry.gl3d||{}).attrRegex,g=Object.keys(t);for(e=0;e3?(O.x=1.02,O.xanchor=\"left\"):O.x<-2&&(O.x=-.02,O.xanchor=\"right\"),O.y>3?(O.y=1.02,O.yanchor=\"bottom\"):O.y<-2&&(O.y=-.02,O.yanchor=\"top\")),d(t),\"rotate\"===t.dragmode&&(t.dragmode=\"orbit\"),c.clean(t),t.template&&t.template.layout&&r.cleanLayout(t.template.layout),t},r.cleanData=function(t){for(var e=0;e0)return t.substr(0,e)}r.hasParent=function(t,e){for(var r=b(e);r;){if(r in t)return!0;r=b(r)}return!1};var _=[\"x\",\"y\",\"z\"];r.clearAxisTypes=function(t,e,r){for(var n=0;n1&&a.warn(\"Full array edits are incompatible with other edits\",f);var y=r[\"\"][\"\"];if(c(y))e.set(null);else{if(!Array.isArray(y))return a.warn(\"Unrecognized full array edit value\",f,y),!0;e.set(y)}return!g&&(h(m,v),p(t),!0)}var x,b,_,w,T,k,A,M,S=Object.keys(r).map(Number).sort(o),E=e.get(),L=E||[],C=u(v,f).get(),P=[],I=-1,O=L.length;for(x=0;xL.length-(A?0:1))a.warn(\"index out of range\",f,_);else if(void 0!==k)T.length>1&&a.warn(\"Insertion & removal are incompatible with edits to the same index.\",f,_),c(k)?P.push(_):A?(\"add\"===k&&(k={}),L.splice(_,0,k),C&&C.splice(_,0,{})):a.warn(\"Unrecognized full object edit value\",f,_,k),-1===I&&(I=_);else for(b=0;b=0;x--)L.splice(P[x],1),C&&C.splice(P[x],1);if(L.length?E||e.set(L):e.set(null),g)return!1;if(h(m,v),d!==i){var z;if(-1===I)z=S;else{for(O=Math.max(L.length,O),z=[],x=0;x=I);x++)z.push(_);for(x=I;x=t.data.length||i<-t.data.length)throw new Error(r+\" must be valid indices for gd.data.\");if(e.indexOf(i,n+1)>-1||i>=0&&e.indexOf(-t.data.length+i)>-1||i<0&&e.indexOf(t.data.length+i)>-1)throw new Error(\"each index in \"+r+\" must be unique.\")}}function I(t,e,r){if(!Array.isArray(t.data))throw new Error(\"gd.data must be an array.\");if(void 0===e)throw new Error(\"currentIndices is a required argument.\");if(Array.isArray(e)||(e=[e]),P(t,e,\"currentIndices\"),void 0===r||Array.isArray(r)||(r=[r]),void 0!==r&&P(t,r,\"newIndices\"),void 0!==r&&e.length!==r.length)throw new Error(\"current and new indices must be of equal length.\")}function O(t,e,r,n,a){!function(t,e,r,n){var i=o.isPlainObject(n);if(!Array.isArray(t.data))throw new Error(\"gd.data must be an array\");if(!o.isPlainObject(e))throw new Error(\"update must be a key:value object\");if(void 0===r)throw new Error(\"indices must be an integer or array of integers\");for(var a in P(t,r,\"indices\"),e){if(!Array.isArray(e[a])||e[a].length!==r.length)throw new Error(\"attribute \"+a+\" must be an array of length equal to indices array length\");if(i&&(!(a in n)||!Array.isArray(n[a])||n[a].length!==e[a].length))throw new Error(\"when maxPoints is set as a key:value object it must contain a 1:1 correspondence with the keys and number of traces in the update object\")}}(t,e,r,n);for(var l=function(t,e,r,n){var a,l,c,u,f,h=o.isPlainObject(n),p=[];for(var d in Array.isArray(r)||(r=[r]),r=C(r,t.data.length-1),e)for(var g=0;g-1&&-1===r.indexOf(\"grouptitlefont\")?l(r,r.replace(\"titlefont\",\"title.font\")):r.indexOf(\"titleposition\")>-1?l(r,r.replace(\"titleposition\",\"title.position\")):r.indexOf(\"titleside\")>-1?l(r,r.replace(\"titleside\",\"title.side\")):r.indexOf(\"titleoffset\")>-1&&l(r,r.replace(\"titleoffset\",\"title.offset\")):l(r,r.replace(\"title\",\"title.text\"));function l(e,r){t[r]=t[e],delete t[e]}}function U(t,e,r){t=o.getGraphDiv(t),_.clearPromiseQueue(t);var n={};if(\"string\"==typeof e)n[e]=r;else{if(!o.isPlainObject(e))return o.warn(\"Relayout fail.\",e,r),Promise.reject();n=o.extendFlat({},e)}Object.keys(n).length&&(t.changed=!0);var i=W(t,n),a=i.flags;a.calc&&(t.calcdata=void 0);var s=[h.previousPromises];a.layoutReplot?s.push(w.layoutReplot):Object.keys(n).length&&(V(t,a,i)||h.supplyDefaults(t),a.legend&&s.push(w.doLegend),a.layoutstyle&&s.push(w.layoutStyles),a.axrange&&H(s,i.rangesAltered),a.ticks&&s.push(w.doTicksRelayout),a.modebar&&s.push(w.doModeBar),a.camera&&s.push(w.doCamera),a.colorbars&&s.push(w.doColorBars),s.push(M)),s.push(h.rehover,h.redrag),c.add(t,U,[t,i.undoit],U,[t,i.redoit]);var l=o.syncOrAsync(s,t);return l&&l.then||(l=Promise.resolve(t)),l.then((function(){return t.emit(\"plotly_relayout\",i.eventData),t}))}function V(t,e,r){var n=t._fullLayout;if(!e.axrange)return!1;for(var i in e)if(\"axrange\"!==i&&e[i])return!1;for(var a in r.rangesAltered){var o=p.id2name(a),s=t.layout[o],l=n[o];if(l.autorange=s.autorange,s.range&&(l.range=s.range.slice()),l.cleanRange(),l._matchGroup)for(var c in l._matchGroup)if(c!==a){var u=n[p.id2name(c)];u.autorange=l.autorange,u.range=l.range.slice(),u._input.range=l.range.slice()}}return!0}function H(t,e){var r=e?function(t){var r=[],n=!0;for(var i in e){var a=p.getFromId(t,i);if(r.push(i),-1!==(a.ticklabelposition||\"\").indexOf(\"inside\")&&a._anchorAxis&&r.push(a._anchorAxis._id),a._matchGroup)for(var o in a._matchGroup)e[o]||r.push(o);a.automargin&&(n=!1)}return p.draw(t,r,{skipTitle:n})}:function(t){return p.draw(t,\"redraw\")};t.push(y,w.doAutoRangeAndConstraints,r,w.drawData,w.finalDraw)}var q=/^[xyz]axis[0-9]*\\.range(\\[[0|1]\\])?$/,G=/^[xyz]axis[0-9]*\\.autorange$/,Y=/^[xyz]axis[0-9]*\\.domain(\\[[0|1]\\])?$/;function W(t,e){var r,n,i,a=t.layout,l=t._fullLayout,c=l._guiEditing,h=F(l._preGUI,c),d=Object.keys(e),g=p.list(t),m=o.extendDeepAll({},e),v={};for(j(e),d=Object.keys(e),n=0;n0&&\"string\"!=typeof O.parts[D];)D--;var B=O.parts[D],N=O.parts[D-1]+\".\"+B,U=O.parts.slice(0,D).join(\".\"),V=s(t.layout,U).get(),H=s(l,U).get(),W=O.get();if(void 0!==z){M[I]=z,S[I]=\"reverse\"===B?z:R(W);var Z=f.getLayoutValObject(l,O.parts);if(Z&&Z.impliedEdits&&null!==z)for(var J in Z.impliedEdits)E(o.relativeAttr(I,J),Z.impliedEdits[J]);if(-1!==[\"width\",\"height\"].indexOf(I))if(z){E(\"autosize\",null);var K=\"height\"===I?\"width\":\"height\";E(K,l[K])}else l[I]=t._initialAutoSize[I];else if(\"autosize\"===I)E(\"width\",z?null:l.width),E(\"height\",z?null:l.height);else if(N.match(q))P(N),s(l,U+\"._inputRange\").set(null);else if(N.match(G)){P(N),s(l,U+\"._inputRange\").set(null);var Q=s(l,U).get();Q._inputDomain&&(Q._input.domain=Q._inputDomain.slice())}else N.match(Y)&&s(l,U+\"._inputDomain\").set(null);if(\"type\"===B){L=V;var $=\"linear\"===H.type&&\"log\"===z,tt=\"log\"===H.type&&\"linear\"===z;if($||tt){if(L&&L.range)if(H.autorange)$&&(L.range=L.range[1]>L.range[0]?[1,2]:[2,1]);else{var et=L.range[0],rt=L.range[1];$?(et<=0&&rt<=0&&E(U+\".autorange\",!0),et<=0?et=rt/1e6:rt<=0&&(rt=et/1e6),E(U+\".range[0]\",Math.log(et)/Math.LN10),E(U+\".range[1]\",Math.log(rt)/Math.LN10)):(E(U+\".range[0]\",Math.pow(10,et)),E(U+\".range[1]\",Math.pow(10,rt)))}else E(U+\".autorange\",!0);Array.isArray(l._subplots.polar)&&l._subplots.polar.length&&l[O.parts[0]]&&\"radialaxis\"===O.parts[1]&&delete l[O.parts[0]]._subplot.viewInitial[\"radialaxis.range\"],u.getComponentMethod(\"annotations\",\"convertCoords\")(t,H,z,E),u.getComponentMethod(\"images\",\"convertCoords\")(t,H,z,E)}else E(U+\".autorange\",!0),E(U+\".range\",null);s(l,U+\"._inputRange\").set(null)}else if(B.match(k)){var nt=s(l,I).get(),it=(z||{}).type;it&&\"-\"!==it||(it=\"linear\"),u.getComponentMethod(\"annotations\",\"convertCoords\")(t,nt,it,E),u.getComponentMethod(\"images\",\"convertCoords\")(t,nt,it,E)}var at=b.containerArrayMatch(I);if(at){r=at.array,n=at.index;var ot=at.property,st=Z||{editType:\"calc\"};\"\"!==n&&\"\"===ot&&(b.isAddVal(z)?S[I]=null:b.isRemoveVal(z)?S[I]=(s(a,r).get()||[])[n]:o.warn(\"unrecognized full object value\",e)),T.update(A,st),v[r]||(v[r]={});var lt=v[r][n];lt||(lt=v[r][n]={}),lt[ot]=z,delete e[I]}else\"reverse\"===B?(V.range?V.range.reverse():(E(U+\".autorange\",!0),V.range=[1,0]),H.autorange?A.calc=!0:A.plot=!0):(l._has(\"scatter-like\")&&l._has(\"regl\")&&\"dragmode\"===I&&(\"lasso\"===z||\"select\"===z)&&\"lasso\"!==W&&\"select\"!==W||l._has(\"gl2d\")?A.plot=!0:Z?T.update(A,Z):A.calc=!0,O.set(z))}}for(r in v){b.applyContainerArrayChanges(t,h(a,r),v[r],A,h)||(A.plot=!0)}for(var ct in C){var ut=(L=p.getFromId(t,ct))&&L._constraintGroup;if(ut)for(var ft in A.calc=!0,ut)C[ft]||(p.getFromId(t,ft)._constraintShrinkable=!0)}return(X(t)||e.height||e.width)&&(A.plot=!0),(A.plot||A.calc)&&(A.layoutReplot=!0),{flags:A,rangesAltered:C,undoit:S,redoit:M,eventData:m}}function X(t){var e=t._fullLayout,r=e.width,n=e.height;return t.layout.autosize&&h.plotAutoSize(t,t.layout,e),e.width!==r||e.height!==n}function Z(t,e,n,i){t=o.getGraphDiv(t),_.clearPromiseQueue(t),o.isPlainObject(e)||(e={}),o.isPlainObject(n)||(n={}),Object.keys(e).length&&(t.changed=!0),Object.keys(n).length&&(t.changed=!0);var a=_.coerceTraceIndices(t,i),s=N(t,o.extendFlat({},e),a),l=s.flags,u=W(t,o.extendFlat({},n)),f=u.flags;(l.calc||f.calc)&&(t.calcdata=void 0),l.clearAxisTypes&&_.clearAxisTypes(t,a,n);var p=[];f.layoutReplot?p.push(w.layoutReplot):l.fullReplot?p.push(r._doPlot):(p.push(h.previousPromises),V(t,f,u)||h.supplyDefaults(t),l.style&&p.push(w.doTraceStyle),(l.colorbars||f.colorbars)&&p.push(w.doColorBars),f.legend&&p.push(w.doLegend),f.layoutstyle&&p.push(w.layoutStyles),f.axrange&&H(p,u.rangesAltered),f.ticks&&p.push(w.doTicksRelayout),f.modebar&&p.push(w.doModeBar),f.camera&&p.push(w.doCamera),p.push(M)),p.push(h.rehover,h.redrag),c.add(t,Z,[t,s.undoit,u.undoit,s.traces],Z,[t,s.redoit,u.redoit,s.traces]);var d=o.syncOrAsync(p,t);return d&&d.then||(d=Promise.resolve(t)),d.then((function(){return t.emit(\"plotly_update\",{data:s.eventData,layout:u.eventData}),t}))}function J(t){return function(e){e._fullLayout._guiEditing=!0;var r=t.apply(null,arguments);return e._fullLayout._guiEditing=!1,r}}var K=[{pattern:/^hiddenlabels/,attr:\"legend.uirevision\"},{pattern:/^((x|y)axis\\d*)\\.((auto)?range|title\\.text)/},{pattern:/axis\\d*\\.showspikes$/,attr:\"modebar.uirevision\"},{pattern:/(hover|drag)mode$/,attr:\"modebar.uirevision\"},{pattern:/^(scene\\d*)\\.camera/},{pattern:/^(geo\\d*)\\.(projection|center|fitbounds)/},{pattern:/^(ternary\\d*\\.[abc]axis)\\.(min|title\\.text)$/},{pattern:/^(polar\\d*\\.radialaxis)\\.((auto)?range|angle|title\\.text)/},{pattern:/^(polar\\d*\\.angularaxis)\\.rotation/},{pattern:/^(mapbox\\d*)\\.(center|zoom|bearing|pitch)/},{pattern:/^legend\\.(x|y)$/,attr:\"editrevision\"},{pattern:/^(shapes|annotations)/,attr:\"editrevision\"},{pattern:/^title\\.text$/,attr:\"editrevision\"}],Q=[{pattern:/^selectedpoints$/,attr:\"selectionrevision\"},{pattern:/(^|value\\.)visible$/,attr:\"legend.uirevision\"},{pattern:/^dimensions\\[\\d+\\]\\.constraintrange/},{pattern:/^node\\.(x|y|groups)/},{pattern:/^level$/},{pattern:/(^|value\\.)name$/},{pattern:/colorbar\\.title\\.text$/},{pattern:/colorbar\\.(x|y)$/,attr:\"editrevision\"}];function $(t,e){for(var r=0;r1;)if(n.pop(),void 0!==(r=s(e,n.join(\".\")+\".uirevision\").get()))return r;return e.uirevision}function et(t,e){for(var r=0;r=i.length?i[0]:i[t]:i}function l(t){return Array.isArray(a)?t>=a.length?a[0]:a[t]:a}function c(t,e){var r=0;return function(){if(t&&++r===e)return t()}}return void 0===n._frameWaitingCnt&&(n._frameWaitingCnt=0),new Promise((function(a,u){function f(){n._currentFrame&&n._currentFrame.onComplete&&n._currentFrame.onComplete();var e=n._currentFrame=n._frameQueue.shift();if(e){var r=e.name?e.name.toString():null;t._fullLayout._currentFrame=r,n._lastFrameAt=Date.now(),n._timeToNext=e.frameOpts.duration,h.transition(t,e.frame.data,e.frame.layout,_.coerceTraceIndices(t,e.frame.traces),e.frameOpts,e.transitionOpts).then((function(){e.onComplete&&e.onComplete()})),t.emit(\"plotly_animatingframe\",{name:r,frame:e.frame,animation:{frame:e.frameOpts,transition:e.transitionOpts}})}else t.emit(\"plotly_animated\"),window.cancelAnimationFrame(n._animationRaf),n._animationRaf=null}function p(){t.emit(\"plotly_animating\"),n._lastFrameAt=-1/0,n._timeToNext=0,n._runningTransitions=0,n._currentFrame=null;var e=function(){n._animationRaf=window.requestAnimationFrame(e),Date.now()-n._lastFrameAt>n._timeToNext&&f()};e()}var d,g,m=0;function v(t){return Array.isArray(i)?m>=i.length?t.transitionOpts=i[m]:t.transitionOpts=i[0]:t.transitionOpts=i,m++,t}var y=[],x=null==e,b=Array.isArray(e);if(!x&&!b&&o.isPlainObject(e))y.push({type:\"object\",data:v(o.extendFlat({},e))});else if(x||-1!==[\"string\",\"number\"].indexOf(typeof e))for(d=0;d0&&kk)&&A.push(g);y=A}}y.length>0?function(e){if(0!==e.length){for(var i=0;i=0;n--)if(o.isPlainObject(e[n])){var g=e[n].name,m=(u[g]||d[g]||{}).name,v=e[n].name,y=u[m]||d[m];m&&v&&\"number\"==typeof v&&y&&A<5&&(A++,o.warn('addFrames: overwriting frame \"'+(u[m]||d[m]).name+'\" with a frame whose name of type \"number\" also equates to \"'+m+'\". This is valid but may potentially lead to unexpected behavior since all plotly.js frame names are stored internally as strings.'),5===A&&o.warn(\"addFrames: This API call has yielded too many of these warnings. For the rest of this call, further warnings about numeric frame names will be suppressed.\")),d[g]={name:g},p.push({frame:h.supplyFrameDefaults(e[n]),index:r&&void 0!==r[n]&&null!==r[n]?r[n]:f+n})}p.sort((function(t,e){return t.index>e.index?-1:t.index=0;n--){if(\"number\"==typeof(i=p[n].frame).name&&o.warn(\"Warning: addFrames accepts frames with numeric names, but the numbers areimplicitly cast to strings\"),!i.name)for(;u[i.name=\"frame \"+t._transitionData._counter++];);if(u[i.name]){for(a=0;a=0;r--)n=e[r],a.push({type:\"delete\",index:n}),s.unshift({type:\"insert\",index:n,value:i[n]});var l=h.modifyFrames,u=h.modifyFrames,f=[t,s],p=[t,a];return c&&c.add(t,l,f,u,p),h.modifyFrames(t,a)},r.addTraces=function t(e,n,i){e=o.getGraphDiv(e);var a,s,l=[],u=r.deleteTraces,f=t,h=[e,l],p=[e,n];for(function(t,e,r){var n,i;if(!Array.isArray(t.data))throw new Error(\"gd.data must be an array.\");if(void 0===e)throw new Error(\"traces must be defined.\");for(Array.isArray(e)||(e=[e]),n=0;n=0&&r=0&&r=a.length)return!1;if(2===t.dimensions){if(r++,e.length===r)return t;var o=e[r];if(!y(o))return!1;t=a[i][o]}else t=a[i]}else t=a}}return t}function y(t){return t===Math.round(t)&&t>=0}function x(){var t,e,r={};for(t in f(r,o),n.subplotsRegistry){if((e=n.subplotsRegistry[t]).layoutAttributes)if(Array.isArray(e.attr))for(var i=0;i=l.length)return!1;i=(r=(n.transformsRegistry[l[c].type]||{}).attributes)&&r[e[2]],s=3}else{var u=t._module;if(u||(u=(n.modules[t.type||a.type.dflt]||{})._module),!u)return!1;if(!(i=(r=u.attributes)&&r[o])){var f=u.basePlotModule;f&&f.attributes&&(i=f.attributes[o])}i||(i=a[o])}return v(i,e,s)},r.getLayoutValObject=function(t,e){return v(function(t,e){var r,i,a,s,l=t._basePlotModules;if(l){var c;for(r=0;r=i&&(r._input||{})._templateitemname;o&&(a=i);var s,l=e+\"[\"+a+\"]\";function c(){s={},o&&(s[l]={},s[l].templateitemname=o)}function u(t,e){o?n.nestedProperty(s[l],t).set(e):s[l+\".\"+t]=e}function f(){var t=s;return c(),t}return c(),{modifyBase:function(t,e){s[t]=e},modifyItem:u,getUpdateObj:f,applyUpdate:function(e,r){e&&u(e,r);var i=f();for(var a in i)n.nestedProperty(t,a).set(i[a])}}}},{\"../lib\":503,\"../plots/attributes\":550}],544:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../registry\"),a=t(\"../plots/plots\"),o=t(\"../lib\"),s=t(\"../lib/clear_gl_canvases\"),l=t(\"../components/color\"),c=t(\"../components/drawing\"),u=t(\"../components/titles\"),f=t(\"../components/modebar\"),h=t(\"../plots/cartesian/axes\"),p=t(\"../constants/alignment\"),d=t(\"../plots/cartesian/constraints\"),g=d.enforce,m=d.clean,v=t(\"../plots/cartesian/autorange\").doAutoRange;function y(t,e,r){for(var n=0;n=t[1]||i[1]<=t[0])&&(a[0]e[0]))return!0}return!1}function x(t){var e,i,s,u,d,g,m=t._fullLayout,v=m._size,x=v.p,_=h.list(t,\"\",!0);if(m._paperdiv.style({width:t._context.responsive&&m.autosize&&!t._context._hasZeroWidth&&!t.layout.width?\"100%\":m.width+\"px\",height:t._context.responsive&&m.autosize&&!t._context._hasZeroHeight&&!t.layout.height?\"100%\":m.height+\"px\"}).selectAll(\".main-svg\").call(c.setSize,m.width,m.height),t._context.setBackground(t,m.paper_bgcolor),r.drawMainTitle(t),f.manage(t),!m._has(\"cartesian\"))return a.previousPromises(t);function T(t,e,r){var n=t._lw/2;return\"x\"===t._id.charAt(0)?e?\"top\"===r?e._offset-x-n:e._offset+e._length+x+n:v.t+v.h*(1-(t.position||0))+n%1:e?\"right\"===r?e._offset+e._length+x+n:e._offset-x-n:v.l+v.w*(t.position||0)+n%1}for(e=0;e<_.length;e++){var k=(u=_[e])._anchorAxis;u._linepositions={},u._lw=c.crispRound(t,u.linewidth,1),u._mainLinePosition=T(u,k,u.side),u._mainMirrorPosition=u.mirror&&k?T(u,k,p.OPPOSITE_SIDE[u.side]):null}var A=[],M=[],S=[],E=1===l.opacity(m.paper_bgcolor)&&1===l.opacity(m.plot_bgcolor)&&m.paper_bgcolor===m.plot_bgcolor;for(i in m._plots)if((s=m._plots[i]).mainplot)s.bg&&s.bg.remove(),s.bg=void 0;else{var L=s.xaxis.domain,C=s.yaxis.domain,P=s.plotgroup;if(y(L,C,S)){var I=P.node(),O=s.bg=o.ensureSingle(P,\"rect\",\"bg\");I.insertBefore(O.node(),I.childNodes[0]),M.push(i)}else P.select(\"rect.bg\").remove(),S.push([L,C]),E||(A.push(i),M.push(i))}var z,D,R,F,B,N,j,U,V,H,q,G,Y,W=m._bgLayer.selectAll(\".bg\").data(A);for(W.enter().append(\"rect\").classed(\"bg\",!0),W.exit().remove(),W.each((function(t){m._plots[t].bg=n.select(this)})),e=0;eT?u.push({code:\"unused\",traceType:y,templateCount:w,dataCount:T}):T>w&&u.push({code:\"reused\",traceType:y,templateCount:w,dataCount:T})}}else u.push({code:\"data\"});if(function t(e,r){for(var n in e)if(\"_\"!==n.charAt(0)){var a=e[n],o=g(e,n,r);i(a)?(Array.isArray(e)&&!1===a._template&&a.templateitemname&&u.push({code:\"missing\",path:o,templateitemname:a.templateitemname}),t(a,o)):Array.isArray(a)&&m(a)&&t(a,o)}}({data:p,layout:h},\"\"),u.length)return u.map(v)}},{\"../lib\":503,\"../plots/attributes\":550,\"../plots/plots\":619,\"./plot_config\":541,\"./plot_schema\":542,\"./plot_template\":543}],546:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"./plot_api\"),a=t(\"../plots/plots\"),o=t(\"../lib\"),s=t(\"../snapshot/helpers\"),l=t(\"../snapshot/tosvg\"),c=t(\"../snapshot/svgtoimg\"),u=t(\"../version\").version,f={format:{valType:\"enumerated\",values:[\"png\",\"jpeg\",\"webp\",\"svg\",\"full-json\"],dflt:\"png\"},width:{valType:\"number\",min:1},height:{valType:\"number\",min:1},scale:{valType:\"number\",min:0,dflt:1},setBackground:{valType:\"any\",dflt:!1},imageDataOnly:{valType:\"boolean\",dflt:!1}};e.exports=function(t,e){var r,h,p,d;function g(t){return!(t in e)||o.validate(e[t],f[t])}if(e=e||{},o.isPlainObject(t)?(r=t.data||[],h=t.layout||{},p=t.config||{},d={}):(t=o.getGraphDiv(t),r=o.extendDeep([],t.data),h=o.extendDeep({},t.layout),p=t._context,d=t._fullLayout||{}),!g(\"width\")&&null!==e.width||!g(\"height\")&&null!==e.height)throw new Error(\"Height and width should be pixel values.\");if(!g(\"format\"))throw new Error(\"Export format is not \"+o.join2(f.format.values,\", \",\" or \")+\".\");var m={};function v(t,r){return o.coerce(e,m,f,t,r)}var y=v(\"format\"),x=v(\"width\"),b=v(\"height\"),_=v(\"scale\"),w=v(\"setBackground\"),T=v(\"imageDataOnly\"),k=document.createElement(\"div\");k.style.position=\"absolute\",k.style.left=\"-5000px\",document.body.appendChild(k);var A=o.extendFlat({},h);x?A.width=x:null===e.width&&n(d.width)&&(A.width=d.width),b?A.height=b:null===e.height&&n(d.height)&&(A.height=d.height);var M=o.extendFlat({},p,{_exportedPlot:!0,staticPlot:!0,setBackground:w}),S=s.getRedrawFunc(k);function E(){return new Promise((function(t){setTimeout(t,s.getDelay(k._fullLayout))}))}function L(){return new Promise((function(t,e){var r=l(k,y,_),n=k._fullLayout.width,f=k._fullLayout.height;function h(){i.purge(k),document.body.removeChild(k)}if(\"full-json\"===y){var p=a.graphJson(k,!1,\"keepdata\",\"object\",!0,!0);return p.version=u,p=JSON.stringify(p),h(),t(T?p:s.encodeJSON(p))}if(h(),\"svg\"===y)return t(T?r:s.encodeSVG(r));var d=document.createElement(\"canvas\");d.id=o.randstr(),c({format:y,width:n,height:f,scale:_,canvas:d,svg:r,promise:!0}).then(t).catch(e)}))}return new Promise((function(t,e){i.newPlot(k,r,A,M).then(S).then(E).then(L).then((function(e){t(function(t){return T?t.replace(s.IMAGE_URL_PREFIX,\"\"):t}(e))})).catch((function(t){e(t)}))}))}},{\"../lib\":503,\"../plots/plots\":619,\"../snapshot/helpers\":642,\"../snapshot/svgtoimg\":644,\"../snapshot/tosvg\":646,\"../version\":1119,\"./plot_api\":540,\"fast-isnumeric\":190}],547:[function(t,e,r){\"use strict\";var n=t(\"../lib\"),i=t(\"../plots/plots\"),a=t(\"./plot_schema\"),o=t(\"./plot_config\").dfltConfig,s=n.isPlainObject,l=Array.isArray,c=n.isArrayOrTypedArray;function u(t,e,r,i,a,o){o=o||[];for(var f=Object.keys(t),h=0;hx.length&&i.push(d(\"unused\",a,v.concat(x.length)));var A,M,S,E,L,C=x.length,P=Array.isArray(k);if(P&&(C=Math.min(C,k.length)),2===b.dimensions)for(M=0;Mx[M].length&&i.push(d(\"unused\",a,v.concat(M,x[M].length)));var I=x[M].length;for(A=0;A<(P?Math.min(I,k[M].length):I);A++)S=P?k[M][A]:k,E=y[M][A],L=x[M][A],n.validate(E,S)?L!==E&&L!==+E&&i.push(d(\"dynamic\",a,v.concat(M,A),E,L)):i.push(d(\"value\",a,v.concat(M,A),E))}else i.push(d(\"array\",a,v.concat(M),y[M]));else for(M=0;M1&&p.push(d(\"object\",\"layout\"))),i.supplyDefaults(g);for(var m=g._fullData,v=r.length,y=0;y0&&Math.round(f)===f))return{vals:i};c=f}for(var h=e.calendar,p=\"start\"===l,d=\"end\"===l,g=t[r+\"period0\"],m=a(g,h)||0,v=[],y=[],x=[],b=i.length,_=0;_A;)k=o(k,-c,h);for(;k<=A;)k=o(k,c,h);T=o(k,-c,h)}else{for(k=m+(w=Math.round((A-m)/u))*u;k>A;)k-=u;for(;k<=A;)k+=u;T=k-u}v[_]=p?T:d?k:(T+k)/2,y[_]=T,x[_]=k}return{vals:v,starts:y,ends:x}}},{\"../../constants/numerical\":479,\"../../lib\":503,\"fast-isnumeric\":190}],552:[function(t,e,r){\"use strict\";e.exports={xaxis:{valType:\"subplotid\",dflt:\"x\",editType:\"calc+clearAxisTypes\"},yaxis:{valType:\"subplotid\",dflt:\"y\",editType:\"calc+clearAxisTypes\"}}},{}],553:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"fast-isnumeric\"),a=t(\"../../lib\"),o=t(\"../../constants/numerical\").FP_SAFE,s=t(\"../../registry\"),l=t(\"../../components/drawing\"),c=t(\"./axis_ids\"),u=c.getFromId,f=c.isLinked;function h(t,e){var r,n,i=[],o=t._fullLayout,s=d(o,e,0),l=d(o,e,1),c=g(t,e),u=c.min,f=c.max;if(0===u.length||0===f.length)return a.simpleMap(e.range,e.r2l);var h=u[0].val,m=f[0].val;for(r=1;r0&&((T=E-s(x)-l(b))>L?k/T>C&&(_=x,w=b,C=k/T):k/E>C&&(_={val:x.val,nopad:1},w={val:b.val,nopad:1},C=k/E));if(h===m){var P=h-1,I=h+1;if(M)if(0===h)i=[0,1];else{var O=(h>0?f:u).reduce((function(t,e){return Math.max(t,l(e))}),0),z=h/(1-Math.min(.5,O/E));i=h>0?[0,z]:[z,0]}else i=S?[Math.max(0,P),Math.max(1,I)]:[P,I]}else M?(_.val>=0&&(_={val:0,nopad:1}),w.val<=0&&(w={val:0,nopad:1})):S&&(_.val-C*s(_)<0&&(_={val:0,nopad:1}),w.val<=0&&(w={val:1,nopad:1})),C=(w.val-_.val-p(e,x.val,b.val))/(E-s(_)-l(w)),i=[_.val-C*s(_),w.val+C*l(w)];return v&&i.reverse(),a.simpleMap(i,e.l2r||Number)}function p(t,e,r){var n=0;if(t.rangebreaks)for(var i=t.locateBreaks(e,r),a=0;a0?r.ppadplus:r.ppadminus)||r.ppad||0),S=A((t._m>0?r.ppadminus:r.ppadplus)||r.ppad||0),E=A(r.vpadplus||r.vpad),L=A(r.vpadminus||r.vpad);if(!T){if(h=1/0,p=-1/0,w)for(n=0;n0&&(h=a),a>p&&a-o&&(h=a),a>p&&a=I;n--)P(n);return{min:d,max:g,opts:r}},concatExtremes:g};function g(t,e,r){var n,i,a,o=e._id,s=t._fullData,l=t._fullLayout,c=[],f=[];function h(t,e){for(n=0;n=r&&(c.extrapad||!o)){s=!1;break}i(e,c.val)&&c.pad<=r&&(o||!c.extrapad)&&(t.splice(l,1),l--)}if(s){var u=a&&0===e;t.push({val:e,pad:u?0:r,extrapad:!u&&o})}}function x(t){return i(t)&&Math.abs(t)=e}},{\"../../components/drawing\":388,\"../../constants/numerical\":479,\"../../lib\":503,\"../../registry\":638,\"./axis_ids\":558,\"@plotly/d3\":58,\"fast-isnumeric\":190}],554:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"fast-isnumeric\"),a=t(\"../../plots/plots\"),o=t(\"../../registry\"),s=t(\"../../lib\"),l=s.strTranslate,c=t(\"../../lib/svg_text_utils\"),u=t(\"../../components/titles\"),f=t(\"../../components/color\"),h=t(\"../../components/drawing\"),p=t(\"./layout_attributes\"),d=t(\"./clean_ticks\"),g=t(\"../../constants/numerical\"),m=g.ONEMAXYEAR,v=g.ONEAVGYEAR,y=g.ONEMINYEAR,x=g.ONEMAXQUARTER,b=g.ONEAVGQUARTER,_=g.ONEMINQUARTER,w=g.ONEMAXMONTH,T=g.ONEAVGMONTH,k=g.ONEMINMONTH,A=g.ONEWEEK,M=g.ONEDAY,S=M/2,E=g.ONEHOUR,L=g.ONEMIN,C=g.ONESEC,P=g.MINUS_SIGN,I=g.BADNUM,O={K:\"zeroline\"},z={K:\"gridline\",L:\"path\"},D={K:\"tick\",L:\"path\"},R={K:\"tick\",L:\"text\"},F=t(\"../../constants/alignment\"),B=F.MID_SHIFT,N=F.CAP_SHIFT,j=F.LINE_SPACING,U=F.OPPOSITE_SIDE,V=e.exports={};V.setConvert=t(\"./set_convert\");var H=t(\"./axis_autotype\"),q=t(\"./axis_ids\"),G=q.idSort,Y=q.isLinked;V.id2name=q.id2name,V.name2id=q.name2id,V.cleanId=q.cleanId,V.list=q.list,V.listIds=q.listIds,V.getFromId=q.getFromId,V.getFromTrace=q.getFromTrace;var W=t(\"./autorange\");V.getAutoRange=W.getAutoRange,V.findExtremes=W.findExtremes;function X(t){var e=1e-4*(t[1]-t[0]);return[t[0]-e,t[1]+e]}V.coerceRef=function(t,e,r,n,i,a){var o=n.charAt(n.length-1),l=r._fullLayout._subplots[o+\"axis\"],c=n+\"ref\",u={};return i||(i=l[0]||(\"string\"==typeof a?a:a[0])),a||(a=i),l=l.concat(l.map((function(t){return t+\" domain\"}))),u[c]={valType:\"enumerated\",values:l.concat(a?\"string\"==typeof a?[a]:a:[]),dflt:i},s.coerce(t,e,u,c)},V.getRefType=function(t){return void 0===t?t:\"paper\"===t?\"paper\":\"pixel\"===t?\"pixel\":/( domain)$/.test(t)?\"domain\":\"range\"},V.coercePosition=function(t,e,r,n,i,a){var o,l;if(\"range\"!==V.getRefType(n))o=s.ensureNumber,l=r(i,a);else{var c=V.getFromId(e,n);l=r(i,a=c.fraction2r(a)),o=c.cleanPos}t[i]=o(l)},V.cleanPosition=function(t,e,r){return(\"paper\"===r||\"pixel\"===r?s.ensureNumber:V.getFromId(e,r).cleanPos)(t)},V.redrawComponents=function(t,e){e=e||V.listIds(t);var r=t._fullLayout;function n(n,i,a,s){for(var l=o.getComponentMethod(n,i),c={},u=0;u2e-6||((r-t._forceTick0)/t._minDtick%1+1.000001)%1>2e-6)&&(t._minDtick=0)):t._minDtick=0},V.saveRangeInitial=function(t,e){for(var r=V.list(t,\"\",!0),n=!1,i=0;i.3*h||u(n)||u(a))){var p=r.dtick/2;t+=t+p.8){var o=Number(r.substr(1));a.exactYears>.8&&o%12==0?t=V.tickIncrement(t,\"M6\",\"reverse\")+1.5*M:a.exactMonths>.8?t=V.tickIncrement(t,\"M1\",\"reverse\")+15.5*M:t-=S;var l=V.tickIncrement(t,r);if(l<=n)return l}return t}(y,t,v,c,a)),m=y,0;m<=u;)m=V.tickIncrement(m,v,!1,a);return{start:e.c2r(y,0,a),end:e.c2r(m,0,a),size:v,_dataSpan:u-c}},V.prepTicks=function(t,e){var r=s.simpleMap(t.range,t.r2l,void 0,void 0,e);if(t._dtickInit=t.dtick,t._tick0Init=t.tick0,\"auto\"===t.tickmode||!t.dtick){var n,a=t.nticks;a||(\"category\"===t.type||\"multicategory\"===t.type?(n=t.tickfont?s.bigFont(t.tickfont.size||12):15,a=t._length/n):(n=\"y\"===t._id.charAt(0)?40:80,a=s.constrain(t._length/n,4,9)+1),\"radialaxis\"===t._name&&(a*=2)),\"array\"===t.tickmode&&(a*=100),t._roughDTick=Math.abs(r[1]-r[0])/a,V.autoTicks(t,t._roughDTick),t._minDtick>0&&t.dtick<2*t._minDtick&&(t.dtick=t._minDtick,t.tick0=t.l2r(t._forceTick0))}\"period\"===t.ticklabelmode&&function(t){var e;function r(){return!(i(t.dtick)||\"M\"!==t.dtick.charAt(0))}var n=r(),a=V.getTickFormat(t);if(a){var o=t._dtickInit!==t.dtick;/%[fLQsSMX]/.test(a)||(/%[HI]/.test(a)?(e=E,o&&!n&&t.dticka&&f=o:d<=o;d=V.tickIncrement(d,t.dtick,l,t.calendar)){if(R++,t.rangebreaks&&!l){if(d=u)break}if(P.length>C||d===O)break;O=d;var F=!1;h&&d!==(0|d)&&(F=!0);var B={minor:F,value:d};L>1&&R%L&&(B.skipLabel=!0),P.push(B)}if(p&&function(t,e,r){for(var n=0;n0?(a=n-1,o=n):(a=n,o=n);var s,l=t[a].value,c=t[o].value,u=Math.abs(c-l),f=r||u,h=0;f>=y?h=u>=y&&u<=m?u:v:r===b&&f>=_?h=u>=_&&u<=x?u:b:f>=k?h=u>=k&&u<=w?u:T:r===A&&f>=A?h=A:f>=M?h=M:r===S&&f>=S?h=S:r===E&&f>=E&&(h=E),h>=u&&(h=u,s=!0);var p=i+h;if(e.rangebreaks&&h>0){for(var d=0,g=0;g<84;g++){var L=(g+.5)/84;e.maskBreaks(i*(1-L)+L*p)!==I&&d++}(h*=d/84)||(t[n].drop=!0),s&&u>A&&(h=u)}(h>0||0===n)&&(t[n].periodX=i+h/2)}}(P,t,t._definedDelta),t.rangebreaks){var N=\"y\"===t._id.charAt(0),j=1;\"auto\"===t.tickmode&&(j=t.tickfont?t.tickfont.size:12);var U=NaN;for(z=P.length-1;z>-1;z--)if(P[z].drop)P.splice(z,1);else{P[z].value=Mt(P[z].value,t);var H=t.c2p(P[z].value);(N?U>H-j:Uu||Gu&&(q.periodX=u),G10||\"01-01\"!==n.substr(5)?t._tickround=\"d\":t._tickround=+e.substr(1)%12==0?\"y\":\"m\";else if(e>=M&&a<=10||e>=15*M)t._tickround=\"d\";else if(e>=L&&a<=16||e>=E)t._tickround=\"M\";else if(e>=C&&a<=19||e>=L)t._tickround=\"S\";else{var o=t.l2r(r+e).replace(/^-/,\"\").length;t._tickround=Math.max(a,o)-20,t._tickround<0&&(t._tickround=4)}}else if(i(e)||\"L\"===e.charAt(0)){var s=t.range.map(t.r2d||Number);i(e)||(e=Number(e.substr(1))),t._tickround=2-Math.floor(Math.log(e)/Math.LN10+.01);var l=Math.max(Math.abs(s[0]),Math.abs(s[1])),c=Math.floor(Math.log(l)/Math.LN10+.01),u=void 0===t.minexponent?3:t.minexponent;Math.abs(c)>u&&(ut(t.exponentformat)&&!ft(c)?t._tickexponent=3*Math.round((c-1)/3):t._tickexponent=c)}else t._tickround=null}function lt(t,e,r){var n=t.tickfont||{};return{x:e,dx:0,dy:0,text:r||\"\",fontSize:n.size,font:n.family,fontColor:n.color}}V.autoTicks=function(t,e){var r;function n(t){return Math.pow(t,Math.floor(Math.log(e)/Math.LN10))}if(\"date\"===t.type){t.tick0=s.dateTick0(t.calendar,0);var a=2*e;if(a>v)e/=v,r=n(10),t.dtick=\"M\"+12*ot(e,r,$);else if(a>T)e/=T,t.dtick=\"M\"+ot(e,1,tt);else if(a>M){t.dtick=ot(e,M,t._hasDayOfWeekBreaks?[1,2,7,14]:rt);var o=V.getTickFormat(t),l=\"period\"===t.ticklabelmode;l&&(t._rawTick0=t.tick0),/%[uVW]/.test(o)?t.tick0=s.dateTick0(t.calendar,2):t.tick0=s.dateTick0(t.calendar,1),l&&(t._dowTick0=t.tick0)}else a>E?t.dtick=ot(e,E,tt):a>L?t.dtick=ot(e,L,et):a>C?t.dtick=ot(e,C,et):(r=n(10),t.dtick=ot(e,r,$))}else if(\"log\"===t.type){t.tick0=0;var c=s.simpleMap(t.range,t.r2l);if(e>.7)t.dtick=Math.ceil(e);else if(Math.abs(c[1]-c[0])<1){var u=1.5*Math.abs((c[1]-c[0])/e);e=Math.abs(Math.pow(10,c[1])-Math.pow(10,c[0]))/u,r=n(10),t.dtick=\"L\"+ot(e,r,$)}else t.dtick=e>.3?\"D2\":\"D1\"}else\"category\"===t.type||\"multicategory\"===t.type?(t.tick0=0,t.dtick=Math.ceil(Math.max(e,1))):At(t)?(t.tick0=0,r=1,t.dtick=ot(e,r,at)):(t.tick0=0,r=n(10),t.dtick=ot(e,r,$));if(0===t.dtick&&(t.dtick=1),!i(t.dtick)&&\"string\"!=typeof t.dtick){var f=t.dtick;throw t.dtick=1,\"ax.dtick error: \"+String(f)}},V.tickIncrement=function(t,e,r,a){var o=r?-1:1;if(i(e))return s.increment(t,o*e);var l=e.charAt(0),c=o*Number(e.substr(1));if(\"M\"===l)return s.incrementMonth(t,c,a);if(\"L\"===l)return Math.log(Math.pow(10,t)+c)/Math.LN10;if(\"D\"===l){var u=\"D2\"===e?it:nt,f=t+.01*o,h=s.roundUp(s.mod(f,1),u,r);return Math.floor(f)+Math.log(n.round(Math.pow(10,h),1))/Math.LN10}throw\"unrecognized dtick \"+String(e)},V.tickFirst=function(t,e){var r=t.r2l||Number,a=s.simpleMap(t.range,r,void 0,void 0,e),o=a[1] \")}else t._prevDateHead=l,c+=\"
\"+l;e.text=c}(t,o,r,c):\"log\"===u?function(t,e,r,n,a){var o=t.dtick,l=e.x,c=t.tickformat,u=\"string\"==typeof o&&o.charAt(0);\"never\"===a&&(a=\"\");n&&\"L\"!==u&&(o=\"L3\",u=\"L\");if(c||\"L\"===u)e.text=ht(Math.pow(10,l),t,a,n);else if(i(o)||\"D\"===u&&s.mod(l+.01,1)<.1){var f=Math.round(l),h=Math.abs(f),p=t.exponentformat;\"power\"===p||ut(p)&&ft(f)?(e.text=0===f?1:1===f?\"10\":\"10\"+(f>1?\"\":P)+h+\"\",e.fontSize*=1.25):(\"e\"===p||\"E\"===p)&&h>2?e.text=\"1\"+p+(f>0?\"+\":P)+h:(e.text=ht(Math.pow(10,l),t,\"\",\"fakehover\"),\"D1\"===o&&\"y\"===t._id.charAt(0)&&(e.dy-=e.fontSize/6))}else{if(\"D\"!==u)throw\"unrecognized dtick \"+String(o);e.text=String(Math.round(Math.pow(10,s.mod(l,1)))),e.fontSize*=.75}if(\"D1\"===t.dtick){var d=String(e.text).charAt(0);\"0\"!==d&&\"1\"!==d||(\"y\"===t._id.charAt(0)?e.dx-=e.fontSize/4:(e.dy+=e.fontSize/2,e.dx+=(t.range[1]>t.range[0]?1:-1)*e.fontSize*(l<0?.5:.25)))}}(t,o,0,c,g):\"category\"===u?function(t,e){var r=t._categories[Math.round(e.x)];void 0===r&&(r=\"\");e.text=String(r)}(t,o):\"multicategory\"===u?function(t,e,r){var n=Math.round(e.x),i=t._categories[n]||[],a=void 0===i[1]?\"\":String(i[1]),o=void 0===i[0]?\"\":String(i[0]);r?e.text=o+\" - \"+a:(e.text=a,e.text2=o)}(t,o,r):At(t)?function(t,e,r,n,i){if(\"radians\"!==t.thetaunit||r)e.text=ht(e.x,t,i,n);else{var a=e.x/180;if(0===a)e.text=\"0\";else{var o=function(t){function e(t,e){return Math.abs(t-e)<=1e-6}var r=function(t){for(var r=1;!e(Math.round(t*r)/r,t);)r*=10;return r}(t),n=t*r,i=Math.abs(function t(r,n){return e(n,0)?r:t(n,r%n)}(n,r));return[Math.round(n/i),Math.round(r/i)]}(a);if(o[1]>=100)e.text=ht(s.deg2rad(e.x),t,i,n);else{var l=e.x<0;1===o[1]?1===o[0]?e.text=\"\\u03c0\":e.text=o[0]+\"\\u03c0\":e.text=[\"\",o[0],\"\",\"\\u2044\",\"\",o[1],\"\",\"\\u03c0\"].join(\"\"),l&&(e.text=P+e.text)}}}}(t,o,r,c,g):function(t,e,r,n,i){\"never\"===i?i=\"\":\"all\"===t.showexponent&&Math.abs(e.x/t.dtick)<1e-6&&(i=\"hide\");e.text=ht(e.x,t,i,n)}(t,o,0,c,g),n||(t.tickprefix&&!d(t.showtickprefix)&&(o.text=t.tickprefix+o.text),t.ticksuffix&&!d(t.showticksuffix)&&(o.text+=t.ticksuffix)),\"boundaries\"===t.tickson||t.showdividers){var m=function(e){var r=t.l2p(e);return r>=0&&r<=t._length?e:null};o.xbnd=[m(o.x-.5),m(o.x+t.dtick-.5)]}return o},V.hoverLabelText=function(t,e,r){r&&(t=s.extendFlat({},t,{hoverformat:r}));var n=Array.isArray(e)?e[0]:e,i=Array.isArray(e)?e[1]:void 0;if(void 0!==i&&i!==n)return V.hoverLabelText(t,n,r)+\" - \"+V.hoverLabelText(t,i,r);var a=\"log\"===t.type&&n<=0,o=V.tickText(t,t.c2l(a?-n:n),\"hover\").text;return a?0===n?\"0\":P+o:o};var ct=[\"f\",\"p\",\"n\",\"\\u03bc\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\"];function ut(t){return\"SI\"===t||\"B\"===t}function ft(t){return t>14||t<-15}function ht(t,e,r,n){var a=t<0,o=e._tickround,l=r||e.exponentformat||\"B\",c=e._tickexponent,u=V.getTickFormat(e),f=e.separatethousands;if(n){var h={exponentformat:l,minexponent:e.minexponent,dtick:\"none\"===e.showexponent?e.dtick:i(t)&&Math.abs(t)||1,range:\"none\"===e.showexponent?e.range.map(e.r2d):[0,t||1]};st(h),o=(Number(h._tickround)||0)+4,c=h._tickexponent,e.hoverformat&&(u=e.hoverformat)}if(u)return e._numFormat(u)(t).replace(/-/g,P);var p,d=Math.pow(10,-o)/2;if(\"none\"===l&&(c=0),(t=Math.abs(t))\"+p+\"\":\"B\"===l&&9===c?t+=\"B\":ut(l)&&(t+=ct[c/3+5]));return a?P+t:t}function pt(t,e){for(var r=[],n={},i=0;i1&&r=i.min&&t=0,a=u(t,e[1])<=0;return(r||i)&&(n||a)}if(t.tickformatstops&&t.tickformatstops.length>0)switch(t.type){case\"date\":case\"linear\":for(e=0;e=o(i)))){r=n;break}break;case\"log\":for(e=0;e0?r.bottom-f:0,h)))),e.automargin){n={x:0,y:0,r:0,l:0,t:0,b:0};var p=[0,1];if(\"x\"===d){if(\"b\"===l?n[l]=e._depth:(n[l]=e._depth=Math.max(r.width>0?f-r.top:0,h),p.reverse()),r.width>0){var m=r.right-(e._offset+e._length);m>0&&(n.xr=1,n.r=m);var v=e._offset-r.left;v>0&&(n.xl=0,n.l=v)}}else if(\"l\"===l?n[l]=e._depth=Math.max(r.height>0?f-r.left:0,h):(n[l]=e._depth=Math.max(r.height>0?r.right-f:0,h),p.reverse()),r.height>0){var y=r.bottom-(e._offset+e._length);y>0&&(n.yb=0,n.b=y);var x=e._offset-r.top;x>0&&(n.yt=1,n.t=x)}n[g]=\"free\"===e.anchor?e.position:e._anchorAxis.domain[p[0]],e.title.text!==c._dfltTitle[d]&&(n[l]+=mt(e)+(e.title.standoff||0)),e.mirror&&\"free\"!==e.anchor&&((i={x:0,y:0,r:0,l:0,t:0,b:0})[u]=e.linewidth,e.mirror&&!0!==e.mirror&&(i[u]+=h),!0===e.mirror||\"ticks\"===e.mirror?i[g]=e._anchorAxis.domain[p[1]]:\"all\"!==e.mirror&&\"allticks\"!==e.mirror||(i[g]=[e._counterDomainMin,e._counterDomainMax][p[1]]))}K&&(s=o.getComponentMethod(\"rangeslider\",\"autoMarginOpts\")(t,e)),a.autoMargin(t,xt(e),n),a.autoMargin(t,bt(e),i),a.autoMargin(t,_t(e),s)})),r.skipTitle||K&&\"bottom\"===e.side||Z.push((function(){return function(t,e){var r,n=t._fullLayout,i=e._id,a=i.charAt(0),o=e.title.font.size;if(e.title.hasOwnProperty(\"standoff\"))r=e._depth+e.title.standoff+mt(e);else{var s=St(e);if(\"multicategory\"===e.type)r=e._depth;else{var l=1.5*o;s&&(l=.5*o,\"outside\"===e.ticks&&(l+=e.ticklen)),r=10+l+(e.linewidth?e.linewidth-1:0)}s||(r+=\"x\"===a?\"top\"===e.side?o*(e.showticklabels?1:0):o*(e.showticklabels?1.5:.5):\"right\"===e.side?o*(e.showticklabels?1:.5):o*(e.showticklabels?.5:0))}var c,f,p,d,g=V.getPxPosition(t,e);\"x\"===a?(f=e._offset+e._length/2,p=\"top\"===e.side?g-r:g+r):(p=e._offset+e._length/2,f=\"right\"===e.side?g+r:g-r,c={rotate:\"-90\",offset:0});if(\"multicategory\"!==e.type){var m=e._selections[e._id+\"tick\"];if(d={selection:m,side:e.side},m&&m.node()&&m.node().parentNode){var v=h.getTranslate(m.node().parentNode);d.offsetLeft=v.x,d.offsetTop=v.y}e.title.hasOwnProperty(\"standoff\")&&(d.pad=0)}return u.draw(t,i+\"title\",{propContainer:e,propName:e._name+\".title.text\",placeholder:n._dfltTitle[a],avoid:d,transform:c,attributes:{x:f,y:p,\"text-anchor\":\"middle\"}})}(t,e)})),s.syncOrAsync(Z)}}function Q(t){var r=p+(t||\"tick\");return w[r]||(w[r]=function(t,e){var r,n,i,a;t._selections[e].size()?(r=1/0,n=-1/0,i=1/0,a=-1/0,t._selections[e].each((function(){var t=yt(this),e=h.bBox(t.node().parentNode);r=Math.min(r,e.top),n=Math.max(n,e.bottom),i=Math.min(i,e.left),a=Math.max(a,e.right)}))):(r=0,n=0,i=0,a=0);return{top:r,bottom:n,left:i,right:a,height:n-r,width:a-i}}(e,r)),w[r]}},V.getTickSigns=function(t){var e=t._id.charAt(0),r={x:\"top\",y:\"right\"}[e],n=t.side===r?1:-1,i=[-1,1,n,-n];return\"inside\"!==t.ticks==(\"x\"===e)&&(i=i.map((function(t){return-t}))),t.side&&i.push({l:-1,t:-1,r:1,b:1}[t.side.charAt(0)]),i},V.makeTransTickFn=function(t){return\"x\"===t._id.charAt(0)?function(e){return l(t._offset+t.l2p(e.x),0)}:function(e){return l(0,t._offset+t.l2p(e.x))}},V.makeTransTickLabelFn=function(t){var e=function(t){var e=t.ticklabelposition||\"\",r=function(t){return-1!==e.indexOf(t)},n=r(\"top\"),i=r(\"left\"),a=r(\"right\"),o=r(\"bottom\"),s=r(\"inside\"),l=o||i||n||a;if(!l&&!s)return[0,0];var c=t.side,u=l?(t.tickwidth||0)/2:0,f=3,h=t.tickfont?t.tickfont.size:12;(o||n)&&(u+=h*N,f+=(t.linewidth||0)/2);(i||a)&&(u+=(t.linewidth||0)/2,f+=3);s&&\"top\"===c&&(f-=h*(1-N));(i||n)&&(u=-u);\"bottom\"!==c&&\"right\"!==c||(f=-f);return[l?u:0,s?f:0]}(t),r=e[0],n=e[1];return\"x\"===t._id.charAt(0)?function(e){return l(r+t._offset+t.l2p(dt(e)),n)}:function(e){return l(n,r+t._offset+t.l2p(dt(e)))}},V.makeTickPath=function(t,e,r,n){n=void 0!==n?n:t.ticklen;var i=t._id.charAt(0),a=(t.linewidth||1)/2;return\"x\"===i?\"M0,\"+(e+a*r)+\"v\"+n*r:\"M\"+(e+a*r)+\",0h\"+n*r},V.makeLabelFns=function(t,e,r){var n=t.ticklabelposition||\"\",a=function(t){return-1!==n.indexOf(t)},o=a(\"top\"),l=a(\"left\"),c=a(\"right\"),u=a(\"bottom\")||l||o||c,f=a(\"inside\"),h=\"inside\"===n&&\"inside\"===t.ticks||!f&&\"outside\"===t.ticks&&\"boundaries\"!==t.tickson,p=0,d=0,g=h?t.ticklen:0;if(f?g*=-1:u&&(g=0),h&&(p+=g,r)){var m=s.deg2rad(r);p=g*Math.cos(m)+1,d=g*Math.sin(m)}t.showticklabels&&(h||t.showline)&&(p+=.2*t.tickfont.size);var v,y,x,b,_,w={labelStandoff:p+=(t.linewidth||1)/2*(f?-1:1),labelShift:d},T=0,k=t.side,A=t._id.charAt(0),M=t.tickangle;if(\"x\"===A)b=(_=!f&&\"bottom\"===k||f&&\"top\"===k)?1:-1,f&&(b*=-1),v=d*b,y=e+p*b,x=_?1:-.2,90===Math.abs(M)&&(f?x+=B:x=-90===M&&\"bottom\"===k?N:90===M&&\"top\"===k?B:.5,T=B/2*(M/90)),w.xFn=function(t){return t.dx+v+T*t.fontSize},w.yFn=function(t){return t.dy+y+t.fontSize*x},w.anchorFn=function(t,e){if(u){if(l)return\"end\";if(c)return\"start\"}return i(e)&&0!==e&&180!==e?e*b<0!==f?\"end\":\"start\":\"middle\"},w.heightFn=function(e,r,n){return r<-60||r>60?-.5*n:\"top\"===t.side!==f?-n:0};else if(\"y\"===A){if(b=(_=!f&&\"left\"===k||f&&\"right\"===k)?1:-1,f&&(b*=-1),v=p,y=d*b,x=0,f||90!==Math.abs(M)||(x=-90===M&&\"left\"===k||90===M&&\"right\"===k?N:.5),f){var S=i(M)?+M:0;if(0!==S){var E=s.deg2rad(S);T=Math.abs(Math.sin(E))*N*b,x=0}}w.xFn=function(t){return t.dx+e-(v+t.fontSize*x)*b+T*t.fontSize},w.yFn=function(t){return t.dy+y+t.fontSize*B},w.anchorFn=function(t,e){return i(e)&&90===Math.abs(e)?\"middle\":_?\"end\":\"start\"},w.heightFn=function(e,r,n){return\"right\"===t.side&&(r*=-1),r<-30?-n:r<30?-.5*n:0}}return w},V.drawTicks=function(t,e,r){r=r||{};var n=e._id+\"tick\",i=r.vals;\"period\"===e.ticklabelmode&&(i=i.slice()).shift();var a=r.layer.selectAll(\"path.\"+n).data(e.ticks?i:[],gt);a.exit().remove(),a.enter().append(\"path\").classed(n,1).classed(\"ticks\",1).classed(\"crisp\",!1!==r.crisp).call(f.stroke,e.tickcolor).style(\"stroke-width\",h.crispRound(t,e.tickwidth,1)+\"px\").attr(\"d\",r.path).style(\"display\",null),Et(e,[D]),a.attr(\"transform\",r.transFn)},V.drawGrid=function(t,e,r){r=r||{};var n=e._id+\"grid\",i=r.vals,a=r.counterAxis;if(!1===e.showgrid)i=[];else if(a&&V.shouldShowZeroLine(t,e,a))for(var o=\"array\"===e.tickmode,s=0;sp||a.leftp||a.top+(e.tickangle?0:t.fontSize/4)e[\"_visibleLabelMin_\"+r._id]?l.style(\"display\",\"none\"):\"tick\"!==t.K||i||l.style(\"display\",null)}))}))}))}))},x(v,m+1?m:g);var b=null;e._selections&&(e._selections[f]=v);var _=[function(){return y.length&&Promise.all(y)}];e.automargin&&a._redrawFromAutoMarginCount&&90===m?(b=90,_.push((function(){x(v,m)}))):_.push((function(){if(x(v,g),p.length&&\"x\"===u&&!i(g)&&(\"log\"!==e.type||\"D\"!==String(e.dtick).charAt(0))){b=0;var t,n=0,a=[];if(v.each((function(t){n=Math.max(n,t.fontSize);var r=e.l2p(t.x),i=yt(this),o=h.bBox(i.node());a.push({top:0,bottom:10,height:10,left:r-o.width/2,right:r+o.width/2+2,width:o.width+2})})),\"boundaries\"!==e.tickson&&!e.showdividers||r.secondary){var o=p.length,l=Math.abs((p[o-1].x-p[0].x)*e._m)/(o-1),c=e.ticklabelposition||\"\",f=function(t){return-1!==c.indexOf(t)},d=f(\"top\"),m=f(\"left\"),y=f(\"right\"),_=f(\"bottom\")||m||d||y?(e.tickwidth||0)+6:0,w=l<2.5*n||\"multicategory\"===e.type||\"realaxis\"===e._name;for(t=0;t1)for(n=1;n2*o}(i,e))return\"date\";var m=\"strict\"!==r.autotypenumbers;return function(t,e){for(var r=t.length,n=f(r),i=0,o=0,s={},u=0;u2*i}(i,m)?\"category\":function(t,e){for(var r=t.length,n=0;n=2){var l,c,u=\"\";if(2===o.length)for(l=0;l<2;l++)if(c=x(o[l])){u=g;break}var f=i(\"pattern\",u);if(f===g)for(l=0;l<2;l++)(c=x(o[l]))&&(e.bounds[l]=o[l]=c-1);if(f)for(l=0;l<2;l++)switch(c=o[l],f){case g:if(!n(c))return void(e.enabled=!1);if((c=+c)!==Math.floor(c)||c<0||c>=7)return void(e.enabled=!1);e.bounds[l]=o[l]=c;break;case m:if(!n(c))return void(e.enabled=!1);if((c=+c)<0||c>24)return void(e.enabled=!1);e.bounds[l]=o[l]=c}if(!1===r.autorange){var h=r.range;if(h[0]h[1])return void(e.enabled=!1)}else if(o[0]>h[0]&&o[1]n?1:-1:+(t.substr(1)||1)-+(e.substr(1)||1)},r.ref2id=function(t){return!!/^[xyz]/.test(t)&&t.split(\" \")[0]},r.isLinked=function(t,e){return a(e,t._axisMatchGroups)||a(e,t._axisConstraintGroups)}},{\"../../registry\":638,\"./constants\":561}],559:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,n){if(\"category\"===e.type){var i,a=t.categoryarray,o=Array.isArray(a)&&a.length>0;o&&(i=\"array\");var s,l=r(\"categoryorder\",i);\"array\"===l&&(s=r(\"categoryarray\")),o||\"array\"!==l||(l=e.categoryorder=\"trace\"),\"trace\"===l?e._initialCategories=[]:\"array\"===l?e._initialCategories=s.slice():(s=function(t,e){var r,n,i,a=e.dataAttr||t._id.charAt(0),o={};if(e.axData)r=e.axData;else for(r=[],n=0;nn?i.substr(n):a.substr(r))+o:i+a+t*e:o}function m(t,e){for(var r=e._size,n=r.h/r.w,i={},a=Object.keys(t),o=0;oc*x)||T)for(r=0;rO&&FP&&(P=F);h/=(P-C)/(2*I),C=l.l2r(C),P=l.l2r(P),l.range=l._input.range=S=0?Math.min(t,.9):1/(1/Math.max(t,-.3)+3.222))}function N(t,e,r,n,i){return t.append(\"path\").attr(\"class\",\"zoombox\").style({fill:e>.2?\"rgba(0,0,0,0)\":\"rgba(255,255,255,0)\",\"stroke-width\":0}).attr(\"transform\",c(r,n)).attr(\"d\",i+\"Z\")}function j(t,e,r){return t.append(\"path\").attr(\"class\",\"zoombox-corners\").style({fill:f.background,stroke:f.defaultLine,\"stroke-width\":1,opacity:0}).attr(\"transform\",c(e,r)).attr(\"d\",\"M0,0Z\")}function U(t,e,r,n,i,a){t.attr(\"d\",n+\"M\"+r.l+\",\"+r.t+\"v\"+r.h+\"h\"+r.w+\"v-\"+r.h+\"h-\"+r.w+\"Z\"),V(t,e,i,a)}function V(t,e,r,n){r||(t.transition().style(\"fill\",n>.2?\"rgba(0,0,0,0.4)\":\"rgba(255,255,255,0.3)\").duration(200),e.transition().style(\"opacity\",1).duration(200))}function H(t){n.select(t).selectAll(\".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners\").remove()}function q(t){I&&t.data&&t._context.showTips&&(i.notifier(i._(t,\"Double-click to zoom back out\"),\"long\"),I=!1)}function G(t){var e=Math.floor(Math.min(t.b-t.t,t.r-t.l,P)/2);return\"M\"+(t.l-3.5)+\",\"+(t.t-.5+e)+\"h3v\"+-e+\"h\"+e+\"v-3h-\"+(e+3)+\"ZM\"+(t.r+3.5)+\",\"+(t.t-.5+e)+\"h-3v\"+-e+\"h\"+-e+\"v-3h\"+(e+3)+\"ZM\"+(t.r+3.5)+\",\"+(t.b+.5-e)+\"h-3v\"+e+\"h\"+-e+\"v3h\"+(e+3)+\"ZM\"+(t.l-3.5)+\",\"+(t.b+.5-e)+\"h3v\"+e+\"h\"+e+\"v3h-\"+(e+3)+\"Z\"}function Y(t,e,r,n,a){for(var o,s,l,c,u=!1,f={},h={},p=(a||{}).xaHash,d=(a||{}).yaHash,g=0;g=0)i._fullLayout._deactivateShape(i);else{var o=i._fullLayout.clickmode;if(H(i),2!==t||vt||qt(),mt)o.indexOf(\"select\")>-1&&S(r,i,J,K,e.id,Pt),o.indexOf(\"event\")>-1&&p.click(i,r,e.id);else if(1===t&&vt){var s=g?O:I,c=\"s\"===g||\"w\"===v?0:1,f=s._name+\".range[\"+c+\"]\",h=function(t,e){var r,n=t.range[e],i=Math.abs(n-t.range[1-e]);return\"date\"===t.type?n:\"log\"===t.type?(r=Math.ceil(Math.max(0,-Math.log(i)/Math.LN10))+3,a(\".\"+r+\"g\")(Math.pow(10,n))):(r=Math.floor(Math.log(Math.abs(n))/Math.LN10)-Math.floor(Math.log(i)/Math.LN10)+4,a(\".\"+String(r)+\"g\")(n))}(s,c),d=\"left\",m=\"middle\";if(s.fixedrange)return;g?(m=\"n\"===g?\"top\":\"bottom\",\"right\"===s.side&&(d=\"right\")):\"e\"===v&&(d=\"right\"),i._context.showAxisRangeEntryBoxes&&n.select(bt).call(u.makeEditable,{gd:i,immediate:!0,background:i._fullLayout.paper_bgcolor,text:String(h),fill:s.tickfont?s.tickfont.color:\"#444\",horizontalAlign:d,verticalAlign:m}).on(\"edit\",(function(t){var e=s.d2r(t);void 0!==e&&l.call(\"_guiRelayout\",i,f,e)}))}}}function zt(e,r){if(t._transitioningWithDuration)return!1;var n=Math.max(0,Math.min(tt,pt*e+_t)),i=Math.max(0,Math.min(et,dt*r+wt)),a=Math.abs(n-_t),o=Math.abs(i-wt);function s(){St=\"\",Tt.r=Tt.l,Tt.t=Tt.b,Lt.attr(\"d\",\"M0,0Z\")}if(Tt.l=Math.min(_t,n),Tt.r=Math.max(_t,n),Tt.t=Math.min(wt,i),Tt.b=Math.max(wt,i),rt.isSubplotConstrained)a>P||o>P?(St=\"xy\",a/tt>o/et?(o=a*et/tt,wt>i?Tt.t=wt-o:Tt.b=wt+o):(a=o*tt/et,_t>n?Tt.l=_t-a:Tt.r=_t+a),Lt.attr(\"d\",G(Tt))):s();else if(nt.isSubplotConstrained)if(a>P||o>P){St=\"xy\";var l=Math.min(Tt.l/tt,(et-Tt.b)/et),c=Math.max(Tt.r/tt,(et-Tt.t)/et);Tt.l=l*tt,Tt.r=c*tt,Tt.b=(1-l)*et,Tt.t=(1-c)*et,Lt.attr(\"d\",G(Tt))}else s();else!at||o0){var u;if(nt.isSubplotConstrained||!it&&1===at.length){for(u=0;ug[1]-1/4096&&(e.domain=s),i.noneOrAll(t.domain,e.domain,s)}return r(\"layer\"),e}},{\"../../lib\":503,\"fast-isnumeric\":190}],573:[function(t,e,r){\"use strict\";var n=t(\"./show_dflt\");e.exports=function(t,e,r,i,a){a||(a={});var o=a.tickSuffixDflt,s=n(t);r(\"tickprefix\")&&r(\"showtickprefix\",s),r(\"ticksuffix\",o)&&r(\"showticksuffix\",s)}},{\"./show_dflt\":577}],574:[function(t,e,r){\"use strict\";var n=t(\"../../constants/alignment\").FROM_BL;e.exports=function(t,e,r){void 0===r&&(r=n[t.constraintoward||\"center\"]);var i=[t.r2l(t.range[0]),t.r2l(t.range[1])],a=i[0]+(i[1]-i[0])*r;t.range=t._input.range=[t.l2r(a+(i[0]-a)*e),t.l2r(a+(i[1]-a)*e)],t.setScale()}},{\"../../constants/alignment\":471}],575:[function(t,e,r){\"use strict\";var n=t(\"polybooljs\"),i=t(\"../../registry\"),a=t(\"../../components/drawing\").dashStyle,o=t(\"../../components/color\"),s=t(\"../../components/fx\"),l=t(\"../../components/fx/helpers\").makeEventData,c=t(\"../../components/dragelement/helpers\"),u=c.freeMode,f=c.rectMode,h=c.drawMode,p=c.openMode,d=c.selectMode,g=t(\"../../components/shapes/draw_newshape/display_outlines\"),m=t(\"../../components/shapes/draw_newshape/helpers\").handleEllipse,v=t(\"../../components/shapes/draw_newshape/newshapes\"),y=t(\"../../lib\"),x=t(\"../../lib/polygon\"),b=t(\"../../lib/throttle\"),_=t(\"./axis_ids\").getFromId,w=t(\"../../lib/clear_gl_canvases\"),T=t(\"../../plot_api/subroutines\").redrawReglTraces,k=t(\"./constants\"),A=k.MINSELECT,M=x.filter,S=x.tester,E=t(\"./handle_outline\").clearSelect,L=t(\"./helpers\"),C=L.p2r,P=L.axValue,I=L.getTransform;function O(t,e,r,n,i,a,o){var s,l,c,u,f,h,d,m,v,y=e._hoverdata,x=e._fullLayout.clickmode.indexOf(\"event\")>-1,b=[];if(function(t){return t&&Array.isArray(t)&&!0!==t[0].hoverOnBox}(y)){F(t,e,a);var _=function(t,e){var r,n,i=t[0],a=-1,o=[];for(n=0;n0?function(t,e){var r,n,i,a=[];for(i=0;i0&&a.push(r);if(1===a.length&&a[0]===e.searchInfo&&(n=e.searchInfo.cd[0].trace).selectedpoints.length===e.pointNumbers.length){for(i=0;i1)return!1;if((i+=r.selectedpoints.length)>1)return!1}return 1===i}(s)&&(h=j(_))){for(o&&o.remove(),v=0;v=0&&n._fullLayout._deactivateShape(n),h(e)){var a=n._fullLayout._zoomlayer.selectAll(\".select-outline-\"+r.id);if(a&&n._fullLayout._drawing){var o=v(a,t);o&&i.call(\"_guiRelayout\",n,{shapes:o}),n._fullLayout._drawing=!1}}r.selection={},r.selection.selectionDefs=t.selectionDefs=[],r.selection.mergedPolygons=t.mergedPolygons=[]}function N(t,e,r,n){var i,a,o,s=[],l=e.map((function(t){return t._id})),c=r.map((function(t){return t._id}));for(o=0;o0?n[0]:r;return!!e.selectedpoints&&e.selectedpoints.indexOf(i)>-1}function U(t,e,r){var n,a,o,s;for(n=0;n=0)L._fullLayout._deactivateShape(L);else if(!_){var r=z.clickmode;b.done(gt).then((function(){if(b.clear(gt),2===t){for(ft.remove(),$=0;$-1&&O(e,L,i.xaxes,i.yaxes,i.subplot,i,ft),\"event\"===r&&L.emit(\"plotly_selected\",void 0);s.click(L,e)})).catch(y.error)}},i.doneFn=function(){dt.remove(),b.done(gt).then((function(){b.clear(gt),i.gd.emit(\"plotly_selected\",et),Q&&i.selectionDefs&&(Q.subtract=ut,i.selectionDefs.push(Q),i.mergedPolygons.length=0,[].push.apply(i.mergedPolygons,K)),i.doneFnCompleted&&i.doneFnCompleted(mt)})).catch(y.error),_&&B(i)}},clearSelect:E,clearSelectionsCache:B,selectOnClick:O}},{\"../../components/color\":366,\"../../components/dragelement/helpers\":384,\"../../components/drawing\":388,\"../../components/fx\":406,\"../../components/fx/helpers\":402,\"../../components/shapes/draw_newshape/display_outlines\":454,\"../../components/shapes/draw_newshape/helpers\":455,\"../../components/shapes/draw_newshape/newshapes\":456,\"../../lib\":503,\"../../lib/clear_gl_canvases\":487,\"../../lib/polygon\":515,\"../../lib/throttle\":530,\"../../plot_api/subroutines\":544,\"../../registry\":638,\"./axis_ids\":558,\"./constants\":561,\"./handle_outline\":565,\"./helpers\":566,polybooljs:254}],576:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"d3-time-format\").utcFormat,a=t(\"../../lib\"),o=a.numberFormat,s=t(\"fast-isnumeric\"),l=a.cleanNumber,c=a.ms2DateTime,u=a.dateTime2ms,f=a.ensureNumber,h=a.isArrayOrTypedArray,p=t(\"../../constants/numerical\"),d=p.FP_SAFE,g=p.BADNUM,m=p.LOG_CLIP,v=p.ONEWEEK,y=p.ONEDAY,x=p.ONEHOUR,b=p.ONEMIN,_=p.ONESEC,w=t(\"./axis_ids\"),T=t(\"./constants\"),k=T.HOUR_PATTERN,A=T.WEEKDAY_PATTERN;function M(t){return Math.pow(10,t)}function S(t){return null!=t}e.exports=function(t,e){e=e||{};var r=t._id||\"x\",p=r.charAt(0);function E(e,r){if(e>0)return Math.log(e)/Math.LN10;if(e<=0&&r&&t.range&&2===t.range.length){var n=t.range[0],i=t.range[1];return.5*(n+i-2*m*Math.abs(n-i))}return g}function L(e,r,n,i){if((i||{}).msUTC&&s(e))return+e;var o=u(e,n||t.calendar);if(o===g){if(!s(e))return g;e=+e;var l=Math.floor(10*a.mod(e+.05,1)),c=Math.round(e-l/10);o=u(new Date(c))+l/10}return o}function C(e,r,n){return c(e,r,n||t.calendar)}function P(e){return t._categories[Math.round(e)]}function I(e){if(S(e)){if(void 0===t._categoriesMap&&(t._categoriesMap={}),void 0!==t._categoriesMap[e])return t._categoriesMap[e];t._categories.push(\"number\"==typeof e?String(e):e);var r=t._categories.length-1;return t._categoriesMap[e]=r,r}return g}function O(e){if(t._categoriesMap)return t._categoriesMap[e]}function z(t){var e=O(t);return void 0!==e?e:s(t)?+t:void 0}function D(t){return s(t)?+t:O(t)}function R(t,e,r){return n.round(r+e*t,2)}function F(t,e,r){return(t-r)/e}var B=function(e){return s(e)?R(e,t._m,t._b):g},N=function(e){return F(e,t._m,t._b)};if(t.rangebreaks){var j=\"y\"===p;B=function(e){if(!s(e))return g;var r=t._rangebreaks.length;if(!r)return R(e,t._m,t._b);var n=j;t.range[0]>t.range[1]&&(n=!n);for(var i=n?-1:1,a=i*e,o=0,l=0;lu)){o=a<(c+u)/2?l:l+1;break}o=l+1}var f=t._B[o]||0;return isFinite(f)?R(e,t._m2,f):0},N=function(e){var r=t._rangebreaks.length;if(!r)return F(e,t._m,t._b);for(var n=0,i=0;it._rangebreaks[i].pmax&&(n=i+1);return F(e,t._m2,t._B[n])}}t.c2l=\"log\"===t.type?E:f,t.l2c=\"log\"===t.type?M:f,t.l2p=B,t.p2l=N,t.c2p=\"log\"===t.type?function(t,e){return B(E(t,e))}:B,t.p2c=\"log\"===t.type?function(t){return M(N(t))}:N,-1!==[\"linear\",\"-\"].indexOf(t.type)?(t.d2r=t.r2d=t.d2c=t.r2c=t.d2l=t.r2l=l,t.c2d=t.c2r=t.l2d=t.l2r=f,t.d2p=t.r2p=function(e){return t.l2p(l(e))},t.p2d=t.p2r=N,t.cleanPos=f):\"log\"===t.type?(t.d2r=t.d2l=function(t,e){return E(l(t),e)},t.r2d=t.r2c=function(t){return M(l(t))},t.d2c=t.r2l=l,t.c2d=t.l2r=f,t.c2r=E,t.l2d=M,t.d2p=function(e,r){return t.l2p(t.d2r(e,r))},t.p2d=function(t){return M(N(t))},t.r2p=function(e){return t.l2p(l(e))},t.p2r=N,t.cleanPos=f):\"date\"===t.type?(t.d2r=t.r2d=a.identity,t.d2c=t.r2c=t.d2l=t.r2l=L,t.c2d=t.c2r=t.l2d=t.l2r=C,t.d2p=t.r2p=function(e,r,n){return t.l2p(L(e,0,n))},t.p2d=t.p2r=function(t,e,r){return C(N(t),e,r)},t.cleanPos=function(e){return a.cleanDate(e,g,t.calendar)}):\"category\"===t.type?(t.d2c=t.d2l=I,t.r2d=t.c2d=t.l2d=P,t.d2r=t.d2l_noadd=z,t.r2c=function(e){var r=D(e);return void 0!==r?r:t.fraction2r(.5)},t.l2r=t.c2r=f,t.r2l=D,t.d2p=function(e){return t.l2p(t.r2c(e))},t.p2d=function(t){return P(N(t))},t.r2p=t.d2p,t.p2r=N,t.cleanPos=function(t){return\"string\"==typeof t&&\"\"!==t?t:f(t)}):\"multicategory\"===t.type&&(t.r2d=t.c2d=t.l2d=P,t.d2r=t.d2l_noadd=z,t.r2c=function(e){var r=z(e);return void 0!==r?r:t.fraction2r(.5)},t.r2c_just_indices=O,t.l2r=t.c2r=f,t.r2l=z,t.d2p=function(e){return t.l2p(t.r2c(e))},t.p2d=function(t){return P(N(t))},t.r2p=t.d2p,t.p2r=N,t.cleanPos=function(t){return Array.isArray(t)||\"string\"==typeof t&&\"\"!==t?t:f(t)},t.setupMultiCategory=function(n){var i,o,s=t._traceIndices,l=t._matchGroup;if(l&&0===t._categories.length)for(var c in l)if(c!==r){var u=e[w.id2name(c)];s=s.concat(u._traceIndices)}var f=[[0,{}],[0,{}]],d=[];for(i=0;id&&(o[n]=d),o[0]===o[1]){var c=Math.max(1,Math.abs(1e-6*o[0]));o[0]-=c,o[1]+=c}}else a.nestedProperty(t,e).set(i)},t.setScale=function(r){var n=e._size;if(t.overlaying){var i=w.getFromId({_fullLayout:e},t.overlaying);t.domain=i.domain}var a=r&&t._r?\"_r\":\"range\",o=t.calendar;t.cleanRange(a);var s,l,c=t.r2l(t[a][0],o),u=t.r2l(t[a][1],o),f=\"y\"===p;if((f?(t._offset=n.t+(1-t.domain[1])*n.h,t._length=n.h*(t.domain[1]-t.domain[0]),t._m=t._length/(c-u),t._b=-t._m*u):(t._offset=n.l+t.domain[0]*n.w,t._length=n.w*(t.domain[1]-t.domain[0]),t._m=t._length/(u-c),t._b=-t._m*c),t._rangebreaks=[],t._lBreaks=0,t._m2=0,t._B=[],t.rangebreaks)&&(t._rangebreaks=t.locateBreaks(Math.min(c,u),Math.max(c,u)),t._rangebreaks.length)){for(s=0;su&&(h=!h),h&&t._rangebreaks.reverse();var d=h?-1:1;for(t._m2=d*t._length/(Math.abs(u-c)-t._lBreaks),t._B.push(-t._m2*(f?u:c)),s=0;si&&(i+=7,oi&&(i+=24,o=n&&o=n&&e=s.min&&(ts.max&&(s.max=n),i=!1)}i&&c.push({min:t,max:n})}};for(n=0;nr.duration?(!function(){for(var r={},n=0;n rect\").call(o.setTranslate,0,0).call(o.setScale,1,1),t.plot.call(o.setTranslate,e._offset,r._offset).call(o.setScale,1,1);var n=t.plot.selectAll(\".scatterlayer .trace\");n.selectAll(\".point\").call(o.setPointGroupScale,1,1),n.selectAll(\".textpoint\").call(o.setTextPointsScale,1,1),n.call(o.hideOutsideRangePoints,t)}function m(e,r){var n=e.plotinfo,i=n.xaxis,l=n.yaxis,c=i._length,u=l._length,f=!!e.xr1,h=!!e.yr1,p=[];if(f){var d=a.simpleMap(e.xr0,i.r2l),g=a.simpleMap(e.xr1,i.r2l),m=d[1]-d[0],v=g[1]-g[0];p[0]=(d[0]*(1-r)+r*g[0]-d[0])/(d[1]-d[0])*c,p[2]=c*(1-r+r*v/m),i.range[0]=i.l2r(d[0]*(1-r)+r*g[0]),i.range[1]=i.l2r(d[1]*(1-r)+r*g[1])}else p[0]=0,p[2]=c;if(h){var y=a.simpleMap(e.yr0,l.r2l),x=a.simpleMap(e.yr1,l.r2l),b=y[1]-y[0],_=x[1]-x[0];p[1]=(y[1]*(1-r)+r*x[1]-y[1])/(y[0]-y[1])*u,p[3]=u*(1-r+r*_/b),l.range[0]=i.l2r(y[0]*(1-r)+r*x[0]),l.range[1]=l.l2r(y[1]*(1-r)+r*x[1])}else p[1]=0,p[3]=u;s.drawOne(t,i,{skipTitle:!0}),s.drawOne(t,l,{skipTitle:!0}),s.redrawComponents(t,[i._id,l._id]);var w=f?c/p[2]:1,T=h?u/p[3]:1,k=f?p[0]:0,A=h?p[1]:0,M=f?p[0]/p[2]*c:0,S=h?p[1]/p[3]*u:0,E=i._offset-M,L=l._offset-S;n.clipRect.call(o.setTranslate,k,A).call(o.setScale,1/w,1/T),n.plot.call(o.setTranslate,E,L).call(o.setScale,w,T),o.setPointGroupScale(n.zoomScalePts,1/w,1/T),o.setTextPointsScale(n.zoomScaleTxt,1/w,1/T)}s.redrawComponents(t)}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../registry\":638,\"./axes\":554,\"@plotly/d3\":58}],582:[function(t,e,r){\"use strict\";var n=t(\"../../registry\").traceIs,i=t(\"./axis_autotype\");function a(t){return{v:\"x\",h:\"y\"}[t.orientation||\"v\"]}function o(t,e){var r=a(t),i=n(t,\"box-violin\"),o=n(t._fullInput||{},\"candlestick\");return i&&!o&&e===r&&void 0===t[r]&&void 0===t[r+\"0\"]}e.exports=function(t,e,r,s){r(\"autotypenumbers\",s.autotypenumbersDflt),\"-\"===r(\"type\",(s.splomStash||{}).type)&&(!function(t,e){if(\"-\"!==t.type)return;var r,s=t._id,l=s.charAt(0);-1!==s.indexOf(\"scene\")&&(s=l);var c=function(t,e,r){for(var n=0;n0&&(i[\"_\"+r+\"axes\"]||{})[e])return i;if((i[r+\"axis\"]||r)===e){if(o(i,r))return i;if((i[r]||[]).length||i[r+\"0\"])return i}}}(e,s,l);if(!c)return;if(\"histogram\"===c.type&&l==={v:\"y\",h:\"x\"}[c.orientation||\"v\"])return void(t.type=\"linear\");var u=l+\"calendar\",f=c[u],h={noMultiCategory:!n(c,\"cartesian\")||n(c,\"noMultiCategory\")};\"box\"===c.type&&c._hasPreCompStats&&l==={h:\"x\",v:\"y\"}[c.orientation||\"v\"]&&(h.noMultiCategory=!0);if(h.autotypenumbers=t.autotypenumbers,o(c,l)){var p=a(c),d=[];for(r=0;r0?\".\":\"\")+a;i.isPlainObject(o)?l(o,e,s,n+1):e(s,a,o)}}))}r.manageCommandObserver=function(t,e,n,o){var s={},l=!0;e&&e._commandObserver&&(s=e._commandObserver),s.cache||(s.cache={}),s.lookupTable={};var c=r.hasSimpleAPICommandBindings(t,n,s.lookupTable);if(e&&e._commandObserver){if(c)return s;if(e._commandObserver.remove)return e._commandObserver.remove(),e._commandObserver=null,s}if(c){a(t,c,s.cache),s.check=function(){if(l){var e=a(t,c,s.cache);return e.changed&&o&&void 0!==s.lookupTable[e.value]&&(s.disable(),Promise.resolve(o({value:e.value,type:c.type,prop:c.prop,traces:c.traces,index:s.lookupTable[e.value]})).then(s.enable,s.enable)),e.changed}};for(var u=[\"plotly_relayout\",\"plotly_redraw\",\"plotly_restyle\",\"plotly_update\",\"plotly_animatingframe\",\"plotly_afterplot\"],f=0;f0&&i<0&&(i+=360);var s=(i-n)/4;return{type:\"Polygon\",coordinates:[[[n,a],[n,o],[n+s,o],[n+2*s,o],[n+3*s,o],[i,o],[i,a],[i-s,a],[i-2*s,a],[i-3*s,a],[n,a]]]}}e.exports=function(t){return new M(t)},S.plot=function(t,e,r){var n=this,i=e[this.id],a=[],o=!1;for(var s in w.layerNameToAdjective)if(\"frame\"!==s&&i[\"show\"+s]){o=!0;break}for(var l=0;l0&&a._module.calcGeoJSON(i,e)}if(!this.updateProjection(t,e)){this.viewInitial&&this.scope===r.scope||this.saveViewInitial(r),this.scope=r.scope,this.updateBaseLayers(e,r),this.updateDims(e,r),this.updateFx(e,r),d.generalUpdatePerTraceModule(this.graphDiv,this,t,r);var o=this.layers.frontplot.select(\".scatterlayer\");this.dataPoints.point=o.selectAll(\".point\"),this.dataPoints.text=o.selectAll(\"text\"),this.dataPaths.line=o.selectAll(\".js-line\");var s=this.layers.backplot.select(\".choroplethlayer\");this.dataPaths.choropleth=s.selectAll(\"path\"),this.render()}},S.updateProjection=function(t,e){var r=this.graphDiv,n=e[this.id],l=e._size,u=n.domain,f=n.projection,h=n.lonaxis,p=n.lataxis,d=h._ax,g=p._ax,v=this.projection=function(t){var e=t.projection,r=e.type,n=w.projNames[r];n=\"geo\"+c.titleCase(n);for(var l=(i[n]||s[n])(),u=t._isSatellite?180*Math.acos(1/e.distance)/Math.PI:t._isClipped?w.lonaxisSpan[r]/2:null,f=[\"center\",\"rotate\",\"parallels\",\"clipExtent\"],h=function(t){return t?l:[]},p=0;pu*Math.PI/180}return!1},l.getPath=function(){return a().projection(l)},l.getBounds=function(t){return l.getPath().bounds(t)},l.precision(w.precision),t._isSatellite&&l.tilt(e.tilt).distance(e.distance);u&&l.clipAngle(u-w.clipPad);return l}(n),y=[[l.l+l.w*u.x[0],l.t+l.h*(1-u.y[1])],[l.l+l.w*u.x[1],l.t+l.h*(1-u.y[0])]],x=n.center||{},b=f.rotation||{},_=h.range||[],T=p.range||[];if(n.fitbounds){d._length=y[1][0]-y[0][0],g._length=y[1][1]-y[0][1],d.range=m(r,d),g.range=m(r,g);var k=(d.range[0]+d.range[1])/2,A=(g.range[0]+g.range[1])/2;if(n._isScoped)x={lon:k,lat:A};else if(n._isClipped){x={lon:k,lat:A},b={lon:k,lat:A,roll:b.roll};var M=f.type,S=w.lonaxisSpan[M]/2||180,L=w.lataxisSpan[M]/2||90;_=[k-S,k+S],T=[A-L,A+L]}else x={lon:k,lat:A},b={lon:k,lat:b.lat,roll:b.roll}}v.center([x.lon-b.lon,x.lat-b.lat]).rotate([-b.lon,-b.lat,b.roll]).parallels(f.parallels);var C=E(_,T);v.fitExtent(y,C);var P=this.bounds=v.getBounds(C),I=this.fitScale=v.scale(),O=v.translate();if(n.fitbounds){var z=v.getBounds(E(d.range,g.range)),D=Math.min((P[1][0]-P[0][0])/(z[1][0]-z[0][0]),(P[1][1]-P[0][1])/(z[1][1]-z[0][1]));isFinite(D)?v.scale(D*I):c.warn(\"Something went wrong during\"+this.id+\"fitbounds computations.\")}else v.scale(f.scale*I);var R=this.midPt=[(P[0][0]+P[1][0])/2,(P[0][1]+P[1][1])/2];if(v.translate([O[0]+(R[0]-O[0]),O[1]+(R[1]-O[1])]).clipExtent(P),n._isAlbersUsa){var F=v([x.lon,x.lat]),B=v.translate();v.translate([B[0]-(F[0]-B[0]),B[1]-(F[1]-B[1])])}},S.updateBaseLayers=function(t,e){var r=this,i=r.topojson,a=r.layers,o=r.basePaths;function s(t){return\"lonaxis\"===t||\"lataxis\"===t}function l(t){return Boolean(w.lineLayers[t])}function c(t){return Boolean(w.fillLayers[t])}var u=(this.hasChoropleth?w.layersForChoropleth:w.layers).filter((function(t){return l(t)||c(t)?e[\"show\"+t]:!s(t)||e[t].showgrid})),p=r.framework.selectAll(\".layer\").data(u,String);p.exit().each((function(t){delete a[t],delete o[t],n.select(this).remove()})),p.enter().append(\"g\").attr(\"class\",(function(t){return\"layer \"+t})).each((function(t){var e=a[t]=n.select(this);\"bg\"===t?r.bgRect=e.append(\"rect\").style(\"pointer-events\",\"all\"):s(t)?o[t]=e.append(\"path\").style(\"fill\",\"none\"):\"backplot\"===t?e.append(\"g\").classed(\"choroplethlayer\",!0):\"frontplot\"===t?e.append(\"g\").classed(\"scatterlayer\",!0):l(t)?o[t]=e.append(\"path\").style(\"fill\",\"none\").style(\"stroke-miterlimit\",2):c(t)&&(o[t]=e.append(\"path\").style(\"stroke\",\"none\"))})),p.order(),p.each((function(r){var n=o[r],a=w.layerNameToAdjective[r];\"frame\"===r?n.datum(w.sphereSVG):l(r)||c(r)?n.datum(A(i,i.objects[r])):s(r)&&n.datum(function(t,e,r){var n,i,a,o=e[t],s=w.scopeDefaults[e.scope];\"lonaxis\"===t?(n=s.lonaxisRange,i=s.lataxisRange,a=function(t,e){return[t,e]}):\"lataxis\"===t&&(n=s.lataxisRange,i=s.lonaxisRange,a=function(t,e){return[e,t]});var l={type:\"linear\",range:[n[0],n[1]-1e-6],tick0:o.tick0,dtick:o.dtick};g.setConvert(l,r);var c=g.calcTicks(l);e.isScoped||\"lonaxis\"!==t||c.pop();for(var u=c.length,f=new Array(u),h=0;h-1&&b(n.event,i,[r.xaxis],[r.yaxis],r.id,f),s.indexOf(\"event\")>-1&&p.click(i,n.event))}))}function h(t){return r.projection.invert([t[0]+r.xaxis._offset,t[1]+r.yaxis._offset])}},S.makeFramework=function(){var t=this,e=t.graphDiv,r=e._fullLayout,i=\"clip\"+r._uid+t.id;t.clipDef=r._clips.append(\"clipPath\").attr(\"id\",i),t.clipRect=t.clipDef.append(\"rect\"),t.framework=n.select(t.container).append(\"g\").attr(\"class\",\"geo \"+t.id).call(h.setClipUrl,i,e),t.project=function(e){var r=t.projection(e);return r?[r[0]-t.xaxis._offset,r[1]-t.yaxis._offset]:[null,null]},t.xaxis={_id:\"x\",c2p:function(e){return t.project(e)[0]}},t.yaxis={_id:\"y\",c2p:function(e){return t.project(e)[1]}},t.mockAxis={type:\"linear\",showexponent:\"all\",exponentformat:\"B\"},g.setConvert(t.mockAxis,r)},S.saveViewInitial=function(t){var e,r=t.center||{},n=t.projection,i=n.rotation||{};this.viewInitial={fitbounds:t.fitbounds,\"projection.scale\":n.scale},e=t._isScoped?{\"center.lon\":r.lon,\"center.lat\":r.lat}:t._isClipped?{\"projection.rotation.lon\":i.lon,\"projection.rotation.lat\":i.lat}:{\"center.lon\":r.lon,\"center.lat\":r.lat,\"projection.rotation.lon\":i.lon},c.extendFlat(this.viewInitial,e)},S.render=function(){var t,e=this.projection,r=e.getPath();function n(t){var r=e(t.lonlat);return r?u(r[0],r[1]):null}function i(t){return e.isLonLatOverEdges(t.lonlat)?\"none\":null}for(t in this.basePaths)this.basePaths[t].attr(\"d\",r);for(t in this.dataPaths)this.dataPaths[t].attr(\"d\",(function(t){return r(t.geojson)}));for(t in this.dataPoints)this.dataPoints[t].attr(\"display\",i).attr(\"transform\",n)}},{\"../../components/color\":366,\"../../components/dragelement\":385,\"../../components/drawing\":388,\"../../components/fx\":406,\"../../lib\":503,\"../../lib/geo_location_utils\":496,\"../../lib/topojson_utils\":532,\"../../registry\":638,\"../cartesian/autorange\":553,\"../cartesian/axes\":554,\"../cartesian/select\":575,\"../plots\":619,\"./constants\":587,\"./zoom\":592,\"@plotly/d3\":58,\"d3-geo\":114,\"d3-geo-projection\":113,\"topojson-client\":315}],589:[function(t,e,r){\"use strict\";var n=t(\"../../plots/get_data\").getSubplotCalcData,i=t(\"../../lib\").counterRegex,a=t(\"./geo\"),o=\"geo\",s=i(o),l={};l.geo={valType:\"subplotid\",dflt:o,editType:\"calc\"},e.exports={attr:o,name:o,idRoot:o,idRegex:s,attrRegex:s,attributes:l,layoutAttributes:t(\"./layout_attributes\"),supplyLayoutDefaults:t(\"./layout_defaults\"),plot:function(t){for(var e=t._fullLayout,r=t.calcdata,i=e._subplots.geo,s=0;s0&&P<0&&(P+=360);var I,O,z,D=(C+P)/2;if(!p){var R=d?f.projRotate:[D,0,0];I=r(\"projection.rotation.lon\",R[0]),r(\"projection.rotation.lat\",R[1]),r(\"projection.rotation.roll\",R[2]),r(\"showcoastlines\",!d&&x)&&(r(\"coastlinecolor\"),r(\"coastlinewidth\")),r(\"showocean\",!!x&&void 0)&&r(\"oceancolor\")}(p?(O=-96.6,z=38.7):(O=d?D:I,z=(L[0]+L[1])/2),r(\"center.lon\",O),r(\"center.lat\",z),g&&(r(\"projection.tilt\"),r(\"projection.distance\")),m)&&r(\"projection.parallels\",f.projParallels||[0,60]);r(\"projection.scale\"),r(\"showland\",!!x&&void 0)&&r(\"landcolor\"),r(\"showlakes\",!!x&&void 0)&&r(\"lakecolor\"),r(\"showrivers\",!!x&&void 0)&&(r(\"rivercolor\"),r(\"riverwidth\")),r(\"showcountries\",d&&\"usa\"!==u&&x)&&(r(\"countrycolor\"),r(\"countrywidth\")),(\"usa\"===u||\"north america\"===u&&50===c)&&(r(\"showsubunits\",x),r(\"subunitcolor\"),r(\"subunitwidth\")),d||r(\"showframe\",x)&&(r(\"framecolor\"),r(\"framewidth\")),r(\"bgcolor\"),r(\"fitbounds\")&&(delete e.projection.scale,d?(delete e.center.lon,delete e.center.lat):v?(delete e.center.lon,delete e.center.lat,delete e.projection.rotation.lon,delete e.projection.rotation.lat,delete e.lonaxis.range,delete e.lataxis.range):(delete e.center.lon,delete e.center.lat,delete e.projection.rotation.lon))}e.exports=function(t,e,r){i(t,e,r,{type:\"geo\",attributes:s,handleDefaults:c,fullData:r,partition:\"y\"})}},{\"../../lib\":503,\"../get_data\":593,\"../subplot_defaults\":632,\"./constants\":587,\"./layout_attributes\":590}],592:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../registry\"),o=Math.PI/180,s=180/Math.PI,l={cursor:\"pointer\"},c={cursor:\"auto\"};function u(t,e){return n.behavior.zoom().translate(e.translate()).scale(e.scale())}function f(t,e,r){var n=t.id,o=t.graphDiv,s=o.layout,l=s[n],c=o._fullLayout,u=c[n],f={},h={};function p(t,e){f[n+\".\"+t]=i.nestedProperty(l,t).get(),a.call(\"_storeDirectGUIEdit\",s,c._preGUI,f);var r=i.nestedProperty(u,t);r.get()!==e&&(r.set(e),i.nestedProperty(l,t).set(e),h[n+\".\"+t]=e)}r(p),p(\"projection.scale\",e.scale()/t.fitScale),p(\"fitbounds\",!1),o.emit(\"plotly_relayout\",h)}function h(t,e){var r=u(0,e);function i(r){var n=e.invert(t.midPt);r(\"center.lon\",n[0]),r(\"center.lat\",n[1])}return r.on(\"zoomstart\",(function(){n.select(this).style(l)})).on(\"zoom\",(function(){e.scale(n.event.scale).translate(n.event.translate),t.render();var r=e.invert(t.midPt);t.graphDiv.emit(\"plotly_relayouting\",{\"geo.projection.scale\":e.scale()/t.fitScale,\"geo.center.lon\":r[0],\"geo.center.lat\":r[1]})})).on(\"zoomend\",(function(){n.select(this).style(c),f(t,e,i)})),r}function p(t,e){var r,i,a,o,s,h,p,d,g,m=u(0,e);function v(t){return e.invert(t)}function y(r){var n=e.rotate(),i=e.invert(t.midPt);r(\"projection.rotation.lon\",-n[0]),r(\"center.lon\",i[0]),r(\"center.lat\",i[1])}return m.on(\"zoomstart\",(function(){n.select(this).style(l),r=n.mouse(this),i=e.rotate(),a=e.translate(),o=i,s=v(r)})).on(\"zoom\",(function(){if(h=n.mouse(this),function(t){var r=v(t);if(!r)return!0;var n=e(r);return Math.abs(n[0]-t[0])>2||Math.abs(n[1]-t[1])>2}(r))return m.scale(e.scale()),void m.translate(e.translate());e.scale(n.event.scale),e.translate([a[0],n.event.translate[1]]),s?v(h)&&(d=v(h),p=[o[0]+(d[0]-s[0]),i[1],i[2]],e.rotate(p),o=p):s=v(r=h),g=!0,t.render();var l=e.rotate(),c=e.invert(t.midPt);t.graphDiv.emit(\"plotly_relayouting\",{\"geo.projection.scale\":e.scale()/t.fitScale,\"geo.center.lon\":c[0],\"geo.center.lat\":c[1],\"geo.projection.rotation.lon\":-l[0]})})).on(\"zoomend\",(function(){n.select(this).style(c),g&&f(t,e,y)})),m}function d(t,e){var r,i={r:e.rotate(),k:e.scale()},a=u(0,e),o=function(t){var e=0,r=arguments.length,i=[];for(;++ed?(a=(f>0?90:-90)-p,i=0):(a=Math.asin(f/d)*s-p,i=Math.sqrt(d*d-f*f));var g=180-a-2*p,m=(Math.atan2(h,u)-Math.atan2(c,i))*s,v=(Math.atan2(h,u)-Math.atan2(c,-i))*s;return b(r[0],r[1],a,m)<=b(r[0],r[1],g,v)?[a,m,r[2]]:[g,v,r[2]]}function b(t,e,r,n){var i=_(r-t),a=_(n-e);return Math.sqrt(i*i+a*a)}function _(t){return(t%360+540)%360-180}function w(t,e,r){var n=r*o,i=t.slice(),a=0===e?1:0,s=2===e?1:2,l=Math.cos(n),c=Math.sin(n);return i[a]=t[a]*l-t[s]*c,i[s]=t[s]*l+t[a]*c,i}function T(t){return[Math.atan2(2*(t[0]*t[1]+t[2]*t[3]),1-2*(t[1]*t[1]+t[2]*t[2]))*s,Math.asin(Math.max(-1,Math.min(1,2*(t[0]*t[2]-t[3]*t[1]))))*s,Math.atan2(2*(t[0]*t[3]+t[1]*t[2]),1-2*(t[2]*t[2]+t[3]*t[3]))*s]}function k(t,e){for(var r=0,n=0,i=t.length;nMath.abs(s)?(c.boxEnd[1]=c.boxStart[1]+Math.abs(a)*_*(s>=0?1:-1),c.boxEnd[1]l[3]&&(c.boxEnd[1]=l[3],c.boxEnd[0]=c.boxStart[0]+(l[3]-c.boxStart[1])/Math.abs(_))):(c.boxEnd[0]=c.boxStart[0]+Math.abs(s)/_*(a>=0?1:-1),c.boxEnd[0]l[2]&&(c.boxEnd[0]=l[2],c.boxEnd[1]=c.boxStart[1]+(l[2]-c.boxStart[0])*Math.abs(_)))}}else c.boxEnabled?(a=c.boxStart[0]!==c.boxEnd[0],s=c.boxStart[1]!==c.boxEnd[1],a||s?(a&&(m(0,c.boxStart[0],c.boxEnd[0]),t.xaxis.autorange=!1),s&&(m(1,c.boxStart[1],c.boxEnd[1]),t.yaxis.autorange=!1),t.relayoutCallback()):t.glplot.setDirty(),c.boxEnabled=!1,c.boxInited=!1):c.boxInited&&(c.boxInited=!1);break;case\"pan\":c.boxEnabled=!1,c.boxInited=!1,e?(c.panning||(c.dragStart[0]=n,c.dragStart[1]=i),Math.abs(c.dragStart[0]-n).999&&(g=\"turntable\"):g=\"turntable\")}else g=\"turntable\";r(\"dragmode\",g),r(\"hovermode\",n.getDfltFromLayout(\"hovermode\"))}e.exports=function(t,e,r){var i=e._basePlotModules.length>1;o(t,e,r,{type:\"gl3d\",attributes:l,handleDefaults:u,fullLayout:e,font:e.font,fullData:r,getDfltFromLayout:function(e){if(!i)return n.validate(t[e],l[e])?t[e]:void 0},autotypenumbersDflt:e.autotypenumbers,paper_bgcolor:e.paper_bgcolor,calendar:e.calendar})}},{\"../../../components/color\":366,\"../../../lib\":503,\"../../../registry\":638,\"../../get_data\":593,\"../../subplot_defaults\":632,\"./axis_defaults\":601,\"./layout_attributes\":604}],604:[function(t,e,r){\"use strict\";var n=t(\"./axis_attributes\"),i=t(\"../../domain\").attributes,a=t(\"../../../lib/extend\").extendFlat,o=t(\"../../../lib\").counterRegex;function s(t,e,r){return{x:{valType:\"number\",dflt:t,editType:\"camera\"},y:{valType:\"number\",dflt:e,editType:\"camera\"},z:{valType:\"number\",dflt:r,editType:\"camera\"},editType:\"camera\"}}e.exports={_arrayAttrRegexps:[o(\"scene\",\".annotations\",!0)],bgcolor:{valType:\"color\",dflt:\"rgba(0,0,0,0)\",editType:\"plot\"},camera:{up:a(s(0,0,1),{}),center:a(s(0,0,0),{}),eye:a(s(1.25,1.25,1.25),{}),projection:{type:{valType:\"enumerated\",values:[\"perspective\",\"orthographic\"],dflt:\"perspective\",editType:\"calc\"},editType:\"calc\"},editType:\"camera\"},domain:i({name:\"scene\",editType:\"plot\"}),aspectmode:{valType:\"enumerated\",values:[\"auto\",\"cube\",\"data\",\"manual\"],dflt:\"auto\",editType:\"plot\",impliedEdits:{\"aspectratio.x\":void 0,\"aspectratio.y\":void 0,\"aspectratio.z\":void 0}},aspectratio:{x:{valType:\"number\",min:0,editType:\"plot\",impliedEdits:{\"^aspectmode\":\"manual\"}},y:{valType:\"number\",min:0,editType:\"plot\",impliedEdits:{\"^aspectmode\":\"manual\"}},z:{valType:\"number\",min:0,editType:\"plot\",impliedEdits:{\"^aspectmode\":\"manual\"}},editType:\"plot\",impliedEdits:{aspectmode:\"manual\"}},xaxis:n,yaxis:n,zaxis:n,dragmode:{valType:\"enumerated\",values:[\"orbit\",\"turntable\",\"zoom\",\"pan\",!1],editType:\"plot\"},hovermode:{valType:\"enumerated\",values:[\"closest\",!1],dflt:\"closest\",editType:\"modebar\"},uirevision:{valType:\"any\",editType:\"none\"},editType:\"plot\",_deprecated:{cameraposition:{valType:\"info_array\",editType:\"camera\"}}}},{\"../../../lib\":503,\"../../../lib/extend\":493,\"../../domain\":584,\"./axis_attributes\":600}],605:[function(t,e,r){\"use strict\";var n=t(\"../../../lib/str2rgbarray\"),i=[\"xaxis\",\"yaxis\",\"zaxis\"];function a(){this.enabled=[!0,!0,!0],this.colors=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.drawSides=[!0,!0,!0],this.lineWidth=[1,1,1]}a.prototype.merge=function(t){for(var e=0;e<3;++e){var r=t[i[e]];r.visible?(this.enabled[e]=r.showspikes,this.colors[e]=n(r.spikecolor),this.drawSides[e]=r.spikesides,this.lineWidth[e]=r.spikethickness):(this.enabled[e]=!1,this.drawSides[e]=!1)}},e.exports=function(t){var e=new a;return e.merge(t),e}},{\"../../../lib/str2rgbarray\":528}],606:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e=t.axesOptions,r=t.glplot.axesPixels,s=t.fullSceneLayout,l=[[],[],[]],c=0;c<3;++c){var u=s[a[c]];if(u._length=(r[c].hi-r[c].lo)*r[c].pixelsPerDataUnit/t.dataScale[c],Math.abs(u._length)===1/0||isNaN(u._length))l[c]=[];else{u._input_range=u.range.slice(),u.range[0]=r[c].lo/t.dataScale[c],u.range[1]=r[c].hi/t.dataScale[c],u._m=1/(t.dataScale[c]*r[c].pixelsPerDataUnit),u.range[0]===u.range[1]&&(u.range[0]-=1,u.range[1]+=1);var f=u.tickmode;if(\"auto\"===u.tickmode){u.tickmode=\"linear\";var h=u.nticks||i.constrain(u._length/40,4,9);n.autoTicks(u,Math.abs(u.range[1]-u.range[0])/h)}for(var p=n.calcTicks(u,{msUTC:!0}),d=0;d/g,\" \"));l[c]=p,u.tickmode=f}}e.ticks=l;for(c=0;c<3;++c){o[c]=.5*(t.glplot.bounds[0][c]+t.glplot.bounds[1][c]);for(d=0;d<2;++d)e.bounds[d][c]=t.glplot.bounds[d][c]}t.contourLevels=function(t){for(var e=new Array(3),r=0;r<3;++r){for(var n=t[r],i=new Array(n.length),a=0;ar.deltaY?1.1:1/1.1,a=t.glplot.getAspectratio();t.glplot.setAspectratio({x:n*a.x,y:n*a.y,z:n*a.z})}i(t)}}),!!c&&{passive:!1}),t.glplot.canvas.addEventListener(\"mousemove\",(function(){if(!1!==t.fullSceneLayout.dragmode&&0!==t.camera.mouseListener.buttons){var e=n();t.graphDiv.emit(\"plotly_relayouting\",e)}})),t.staticMode||t.glplot.canvas.addEventListener(\"webglcontextlost\",(function(r){e&&e.emit&&e.emit(\"plotly_webglcontextlost\",{event:r,layer:t.id})}),!1)),t.glplot.oncontextloss=function(){t.recoverContext()},t.glplot.onrender=function(){t.render()},!0},w.render=function(){var t,e=this,r=e.graphDiv,n=e.svgContainer,i=e.container.getBoundingClientRect();r._fullLayout._calcInverseTransform(r);var a=r._fullLayout._invScaleX,o=r._fullLayout._invScaleY,s=i.width*a,l=i.height*o;n.setAttributeNS(null,\"viewBox\",\"0 0 \"+s+\" \"+l),n.setAttributeNS(null,\"width\",s),n.setAttributeNS(null,\"height\",l),b(e),e.glplot.axes.update(e.axesOptions);for(var c=Object.keys(e.traces),u=null,h=e.glplot.selection,g=0;g\")):\"isosurface\"===t.type||\"volume\"===t.type?(T.valueLabel=p.hoverLabelText(e._mockAxis,e._mockAxis.d2l(h.traceCoordinate[3]),t.valuehoverformat),S.push(\"value: \"+T.valueLabel),h.textLabel&&S.push(h.textLabel),x=S.join(\"
\")):x=h.textLabel;var E={x:h.traceCoordinate[0],y:h.traceCoordinate[1],z:h.traceCoordinate[2],data:_._input,fullData:_,curveNumber:_.index,pointNumber:w};d.appendArrayPointValue(E,_,w),t._module.eventData&&(E=_._module.eventData(E,h,_,{},w));var L={points:[E]};if(e.fullSceneLayout.hovermode){var C=[];d.loneHover({trace:_,x:(.5+.5*y[0]/y[3])*s,y:(.5-.5*y[1]/y[3])*l,xLabel:T.xLabel,yLabel:T.yLabel,zLabel:T.zLabel,text:x,name:u.name,color:d.castHoverOption(_,w,\"bgcolor\")||u.color,borderColor:d.castHoverOption(_,w,\"bordercolor\"),fontFamily:d.castHoverOption(_,w,\"font.family\"),fontSize:d.castHoverOption(_,w,\"font.size\"),fontColor:d.castHoverOption(_,w,\"font.color\"),nameLength:d.castHoverOption(_,w,\"namelength\"),textAlign:d.castHoverOption(_,w,\"align\"),hovertemplate:f.castOption(_,w,\"hovertemplate\"),hovertemplateLabels:f.extendFlat({},E,T),eventData:[E]},{container:n,gd:r,inOut_bbox:C}),E.bbox=C[0]}h.buttons&&h.distance<5?r.emit(\"plotly_click\",L):r.emit(\"plotly_hover\",L),this.oldEventData=L}else d.loneUnhover(n),this.oldEventData&&r.emit(\"plotly_unhover\",this.oldEventData),this.oldEventData=void 0;e.drawAnnotations(e)},w.recoverContext=function(){var t=this;t.glplot.dispose();var e=function(){t.glplot.gl.isContextLost()?requestAnimationFrame(e):t.initializeGLPlot()?t.plot.apply(t,t.plotArgs):f.error(\"Catastrophic and unrecoverable WebGL error. Context lost.\")};requestAnimationFrame(e)};var k=[\"xaxis\",\"yaxis\",\"zaxis\"];function A(t,e,r){for(var n=t.fullSceneLayout,i=0;i<3;i++){var a=k[i],o=a.charAt(0),s=n[a],l=e[o],c=e[o+\"calendar\"],u=e[\"_\"+o+\"length\"];if(f.isArrayOrTypedArray(l))for(var h,p=0;p<(u||l.length);p++)if(f.isArrayOrTypedArray(l[p]))for(var d=0;dm[1][a])m[0][a]=-1,m[1][a]=1;else{var L=m[1][a]-m[0][a];m[0][a]-=L/32,m[1][a]+=L/32}if(\"reversed\"===s.autorange){var C=m[0][a];m[0][a]=m[1][a],m[1][a]=C}}else{var P=s.range;m[0][a]=s.r2l(P[0]),m[1][a]=s.r2l(P[1])}m[0][a]===m[1][a]&&(m[0][a]-=1,m[1][a]+=1),v[a]=m[1][a]-m[0][a],this.glplot.setBounds(a,{min:m[0][a]*h[a],max:m[1][a]*h[a]})}var I=c.aspectmode;if(\"cube\"===I)d=[1,1,1];else if(\"manual\"===I){var O=c.aspectratio;d=[O.x,O.y,O.z]}else{if(\"auto\"!==I&&\"data\"!==I)throw new Error(\"scene.js aspectRatio was not one of the enumerated types\");var z=[1,1,1];for(a=0;a<3;++a){var D=y[l=(s=c[k[a]]).type];z[a]=Math.pow(D.acc,1/D.count)/h[a]}d=\"data\"===I||Math.max.apply(null,z)/Math.min.apply(null,z)<=4?z:[1,1,1]}c.aspectratio.x=u.aspectratio.x=d[0],c.aspectratio.y=u.aspectratio.y=d[1],c.aspectratio.z=u.aspectratio.z=d[2],this.glplot.setAspectratio(c.aspectratio),this.viewInitial.aspectratio||(this.viewInitial.aspectratio={x:c.aspectratio.x,y:c.aspectratio.y,z:c.aspectratio.z}),this.viewInitial.aspectmode||(this.viewInitial.aspectmode=c.aspectmode);var R=c.domain||null,F=e._size||null;if(R&&F){var B=this.container.style;B.position=\"absolute\",B.left=F.l+R.x[0]*F.w+\"px\",B.top=F.t+(1-R.y[1])*F.h+\"px\",B.width=F.w*(R.x[1]-R.x[0])+\"px\",B.height=F.h*(R.y[1]-R.y[0])+\"px\"}this.glplot.redraw()}},w.destroy=function(){this.glplot&&(this.camera.mouseListener.enabled=!1,this.container.removeEventListener(\"wheel\",this.camera.wheelListener),this.camera=null,this.glplot.dispose(),this.container.parentNode.removeChild(this.container),this.glplot=null)},w.getCamera=function(){var t;return this.camera.view.recalcMatrix(this.camera.view.lastT()),{up:{x:(t=this.camera).up[0],y:t.up[1],z:t.up[2]},center:{x:t.center[0],y:t.center[1],z:t.center[2]},eye:{x:t.eye[0],y:t.eye[1],z:t.eye[2]},projection:{type:!0===t._ortho?\"orthographic\":\"perspective\"}}},w.setViewport=function(t){var e,r=t.camera;this.camera.lookAt.apply(this,[[(e=r).eye.x,e.eye.y,e.eye.z],[e.center.x,e.center.y,e.center.z],[e.up.x,e.up.y,e.up.z]]),this.glplot.setAspectratio(t.aspectratio),\"orthographic\"===r.projection.type!==this.camera._ortho&&(this.glplot.redraw(),this.glplot.clearRGBA(),this.glplot.dispose(),this.initializeGLPlot())},w.isCameraChanged=function(t){var e=this.getCamera(),r=f.nestedProperty(t,this.id+\".camera\").get();function n(t,e,r,n){var i=[\"up\",\"center\",\"eye\"],a=[\"x\",\"y\",\"z\"];return e[i[r]]&&t[i[r]][a[n]]===e[i[r]][a[n]]}var i=!1;if(void 0===r)i=!0;else{for(var a=0;a<3;a++)for(var o=0;o<3;o++)if(!n(e,r,a,o)){i=!0;break}(!r.projection||e.projection&&e.projection.type!==r.projection.type)&&(i=!0)}return i},w.isAspectChanged=function(t){var e=this.glplot.getAspectratio(),r=f.nestedProperty(t,this.id+\".aspectratio\").get();return void 0===r||r.x!==e.x||r.y!==e.y||r.z!==e.z},w.saveLayout=function(t){var e,r,n,i,a,o,s=this.fullLayout,l=this.isCameraChanged(t),c=this.isAspectChanged(t),h=l||c;if(h){var p={};if(l&&(e=this.getCamera(),n=(r=f.nestedProperty(t,this.id+\".camera\")).get(),p[this.id+\".camera\"]=n),c&&(i=this.glplot.getAspectratio(),o=(a=f.nestedProperty(t,this.id+\".aspectratio\")).get(),p[this.id+\".aspectratio\"]=o),u.call(\"_storeDirectGUIEdit\",t,s._preGUI,p),l)r.set(e),f.nestedProperty(s,this.id+\".camera\").set(e);if(c)a.set(i),f.nestedProperty(s,this.id+\".aspectratio\").set(i),this.glplot.redraw()}return h},w.updateFx=function(t,e){var r=this.camera;if(r)if(\"orbit\"===t)r.mode=\"orbit\",r.keyBindingMode=\"rotate\";else if(\"turntable\"===t){r.up=[0,0,1],r.mode=\"turntable\",r.keyBindingMode=\"rotate\";var n=this.graphDiv,i=n._fullLayout,a=this.fullSceneLayout.camera,o=a.up.x,s=a.up.y,l=a.up.z;if(l/Math.sqrt(o*o+s*s+l*l)<.999){var c=this.id+\".camera.up\",h={x:0,y:0,z:1},p={};p[c]=h;var d=n.layout;u.call(\"_storeDirectGUIEdit\",d,i._preGUI,p),a.up=h,f.nestedProperty(d,c).set(h)}}else r.keyBindingMode=t;this.fullSceneLayout.hovermode=e},w.toImage=function(t){t||(t=\"png\"),this.staticMode&&this.container.appendChild(n),this.glplot.redraw();var e=this.glplot.gl,r=e.drawingBufferWidth,i=e.drawingBufferHeight;e.bindFramebuffer(e.FRAMEBUFFER,null);var a=new Uint8Array(r*i*4);e.readPixels(0,0,r,i,e.RGBA,e.UNSIGNED_BYTE,a),function(t,e,r){for(var n=0,i=r-1;n0)for(var s=255/o,l=0;l<3;++l)t[a+l]=Math.min(s*t[a+l],255)}}(a,r,i);var o=document.createElement(\"canvas\");o.width=r,o.height=i;var s,l=o.getContext(\"2d\"),c=l.createImageData(r,i);switch(c.data.set(a),l.putImageData(c,0,0),t){case\"jpeg\":s=o.toDataURL(\"image/jpeg\");break;case\"webp\":s=o.toDataURL(\"image/webp\");break;default:s=o.toDataURL(\"image/png\")}return this.staticMode&&this.container.removeChild(n),s},w.setConvert=function(){for(var t=0;t<3;t++){var e=this.fullSceneLayout[k[t]];p.setConvert(e,this.fullLayout),e.setScale=f.noop}},w.make4thDimension=function(){var t=this.graphDiv._fullLayout;this._mockAxis={type:\"linear\",showexponent:\"all\",exponentformat:\"B\"},p.setConvert(this._mockAxis,t)},e.exports=_},{\"../../../stackgl_modules\":1120,\"../../components/fx\":406,\"../../lib\":503,\"../../lib/show_no_webgl_msg\":525,\"../../lib/str2rgbarray\":528,\"../../plots/cartesian/axes\":554,\"../../registry\":638,\"./layout/convert\":602,\"./layout/spikes\":605,\"./layout/tick_marks\":606,\"./project\":607,\"has-passive-events\":229,\"webgl-context\":331}],609:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,n){n=n||t.length;for(var i=new Array(n),a=0;aOpenStreetMap
contributors',a=['\\xa9 Carto',i].join(\" \"),o=['Map tiles by Stamen Design','under CC BY 3.0',\"|\",'Data by OpenStreetMap contributors','under ODbL'].join(\" \"),s={\"open-street-map\":{id:\"osm\",version:8,sources:{\"plotly-osm-tiles\":{type:\"raster\",attribution:i,tiles:[\"https://a.tile.openstreetmap.org/{z}/{x}/{y}.png\",\"https://b.tile.openstreetmap.org/{z}/{x}/{y}.png\"],tileSize:256}},layers:[{id:\"plotly-osm-tiles\",type:\"raster\",source:\"plotly-osm-tiles\",minzoom:0,maxzoom:22}]},\"white-bg\":{id:\"white-bg\",version:8,sources:{},layers:[{id:\"white-bg\",type:\"background\",paint:{\"background-color\":\"#FFFFFF\"},minzoom:0,maxzoom:22}]},\"carto-positron\":{id:\"carto-positron\",version:8,sources:{\"plotly-carto-positron\":{type:\"raster\",attribution:a,tiles:[\"https://cartodb-basemaps-c.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png\"],tileSize:256}},layers:[{id:\"plotly-carto-positron\",type:\"raster\",source:\"plotly-carto-positron\",minzoom:0,maxzoom:22}]},\"carto-darkmatter\":{id:\"carto-darkmatter\",version:8,sources:{\"plotly-carto-darkmatter\":{type:\"raster\",attribution:a,tiles:[\"https://cartodb-basemaps-c.global.ssl.fastly.net/dark_all/{z}/{x}/{y}.png\"],tileSize:256}},layers:[{id:\"plotly-carto-darkmatter\",type:\"raster\",source:\"plotly-carto-darkmatter\",minzoom:0,maxzoom:22}]},\"stamen-terrain\":{id:\"stamen-terrain\",version:8,sources:{\"plotly-stamen-terrain\":{type:\"raster\",attribution:o,tiles:[\"https://stamen-tiles.a.ssl.fastly.net/terrain/{z}/{x}/{y}.png\"],tileSize:256}},layers:[{id:\"plotly-stamen-terrain\",type:\"raster\",source:\"plotly-stamen-terrain\",minzoom:0,maxzoom:22}]},\"stamen-toner\":{id:\"stamen-toner\",version:8,sources:{\"plotly-stamen-toner\":{type:\"raster\",attribution:o,tiles:[\"https://stamen-tiles.a.ssl.fastly.net/toner/{z}/{x}/{y}.png\"],tileSize:256}},layers:[{id:\"plotly-stamen-toner\",type:\"raster\",source:\"plotly-stamen-toner\",minzoom:0,maxzoom:22}]},\"stamen-watercolor\":{id:\"stamen-watercolor\",version:8,sources:{\"plotly-stamen-watercolor\":{type:\"raster\",attribution:['Map tiles by Stamen Design','under CC BY 3.0',\"|\",'Data by OpenStreetMap contributors','under CC BY SA'].join(\" \"),tiles:[\"https://stamen-tiles.a.ssl.fastly.net/watercolor/{z}/{x}/{y}.png\"],tileSize:256}},layers:[{id:\"plotly-stamen-watercolor\",type:\"raster\",source:\"plotly-stamen-watercolor\",minzoom:0,maxzoom:22}]}},l=n(s);e.exports={requiredVersion:\"1.10.1\",styleUrlPrefix:\"mapbox://styles/mapbox/\",styleUrlSuffix:\"v9\",styleValuesMapbox:[\"basic\",\"streets\",\"outdoors\",\"light\",\"dark\",\"satellite\",\"satellite-streets\"],styleValueDflt:\"basic\",stylesNonMapbox:s,styleValuesNonMapbox:l,traceLayerPrefix:\"plotly-trace-layer-\",layoutLayerPrefix:\"plotly-layout-layer-\",wrongVersionErrorMsg:[\"Your custom plotly.js bundle is not using the correct mapbox-gl version\",\"Please install mapbox-gl@1.10.1.\"].join(\"\\n\"),noAccessTokenErrorMsg:[\"Missing Mapbox access token.\",\"Mapbox trace type require a Mapbox access token to be registered.\",\"For example:\",\" Plotly.newPlot(gd, data, layout, { mapboxAccessToken: 'my-access-token' });\",\"More info here: https://www.mapbox.com/help/define-access-token/\"].join(\"\\n\"),missingStyleErrorMsg:[\"No valid mapbox style found, please set `mapbox.style` to one of:\",l.join(\", \"),\"or register a Mapbox access token to use a Mapbox-served style.\"].join(\"\\n\"),multipleTokensErrorMsg:[\"Set multiple mapbox access token across different mapbox subplot,\",\"using first token found as mapbox-gl does not allow multipleaccess tokens on the same page.\"].join(\"\\n\"),mapOnErrorMsg:\"Mapbox error.\",mapboxLogo:{path0:\"m 10.5,1.24 c -5.11,0 -9.25,4.15 -9.25,9.25 0,5.1 4.15,9.25 9.25,9.25 5.1,0 9.25,-4.15 9.25,-9.25 0,-5.11 -4.14,-9.25 -9.25,-9.25 z m 4.39,11.53 c -1.93,1.93 -4.78,2.31 -6.7,2.31 -0.7,0 -1.41,-0.05 -2.1,-0.16 0,0 -1.02,-5.64 2.14,-8.81 0.83,-0.83 1.95,-1.28 3.13,-1.28 1.27,0 2.49,0.51 3.39,1.42 1.84,1.84 1.89,4.75 0.14,6.52 z\",path1:\"M 10.5,-0.01 C 4.7,-0.01 0,4.7 0,10.49 c 0,5.79 4.7,10.5 10.5,10.5 5.8,0 10.5,-4.7 10.5,-10.5 C 20.99,4.7 16.3,-0.01 10.5,-0.01 Z m 0,19.75 c -5.11,0 -9.25,-4.15 -9.25,-9.25 0,-5.1 4.14,-9.26 9.25,-9.26 5.11,0 9.25,4.15 9.25,9.25 0,5.13 -4.14,9.26 -9.25,9.26 z\",path2:\"M 14.74,6.25 C 12.9,4.41 9.98,4.35 8.23,6.1 5.07,9.27 6.09,14.91 6.09,14.91 c 0,0 5.64,1.02 8.81,-2.14 C 16.64,11 16.59,8.09 14.74,6.25 Z m -2.27,4.09 -0.91,1.87 -0.9,-1.87 -1.86,-0.91 1.86,-0.9 0.9,-1.87 0.91,1.87 1.86,0.9 z\",polygon:\"11.56,12.21 10.66,10.34 8.8,9.43 10.66,8.53 11.56,6.66 12.47,8.53 14.33,9.43 12.47,10.34\"},styleRules:{map:\"overflow:hidden;position:relative;\",\"missing-css\":\"display:none;\",canary:\"background-color:salmon;\",\"ctrl-bottom-left\":\"position: absolute; pointer-events: none; z-index: 2; bottom: 0; left: 0;\",\"ctrl-bottom-right\":\"position: absolute; pointer-events: none; z-index: 2; right: 0; bottom: 0;\",ctrl:\"clear: both; pointer-events: auto; transform: translate(0, 0);\",\"ctrl-attrib.mapboxgl-compact .mapboxgl-ctrl-attrib-inner\":\"display: none;\",\"ctrl-attrib.mapboxgl-compact:hover .mapboxgl-ctrl-attrib-inner\":\"display: block; margin-top:2px\",\"ctrl-attrib.mapboxgl-compact:hover\":\"padding: 2px 24px 2px 4px; visibility: visible; margin-top: 6px;\",\"ctrl-attrib.mapboxgl-compact::after\":'content: \"\"; cursor: pointer; position: absolute; background-image: url(\\'data:image/svg+xml;charset=utf-8,%3Csvg viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"%3E %3Cpath fill=\"%23333333\" fill-rule=\"evenodd\" d=\"M4,10a6,6 0 1,0 12,0a6,6 0 1,0 -12,0 M9,7a1,1 0 1,0 2,0a1,1 0 1,0 -2,0 M9,10a1,1 0 1,1 2,0l0,3a1,1 0 1,1 -2,0\"/%3E %3C/svg%3E\\'); background-color: rgba(255, 255, 255, 0.5); width: 24px; height: 24px; box-sizing: border-box; border-radius: 12px;',\"ctrl-attrib.mapboxgl-compact\":\"min-height: 20px; padding: 0; margin: 10px; position: relative; background-color: #fff; border-radius: 3px 12px 12px 3px;\",\"ctrl-bottom-right > .mapboxgl-ctrl-attrib.mapboxgl-compact::after\":\"bottom: 0; right: 0\",\"ctrl-bottom-left > .mapboxgl-ctrl-attrib.mapboxgl-compact::after\":\"bottom: 0; left: 0\",\"ctrl-bottom-left .mapboxgl-ctrl\":\"margin: 0 0 10px 10px; float: left;\",\"ctrl-bottom-right .mapboxgl-ctrl\":\"margin: 0 10px 10px 0; float: right;\",\"ctrl-attrib\":\"color: rgba(0, 0, 0, 0.75); text-decoration: none; font-size: 12px\",\"ctrl-attrib a\":\"color: rgba(0, 0, 0, 0.75); text-decoration: none; font-size: 12px\",\"ctrl-attrib a:hover\":\"color: inherit; text-decoration: underline;\",\"ctrl-attrib .mapbox-improve-map\":\"font-weight: bold; margin-left: 2px;\",\"attrib-empty\":\"display: none;\",\"ctrl-logo\":'display:block; width: 21px; height: 21px; background-image: url(\\'data:image/svg+xml;charset=utf-8,%3C?xml version=\"1.0\" encoding=\"utf-8\"?%3E %3Csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 21 21\" style=\"enable-background:new 0 0 21 21;\" xml:space=\"preserve\"%3E%3Cg transform=\"translate(0,0.01)\"%3E%3Cpath d=\"m 10.5,1.24 c -5.11,0 -9.25,4.15 -9.25,9.25 0,5.1 4.15,9.25 9.25,9.25 5.1,0 9.25,-4.15 9.25,-9.25 0,-5.11 -4.14,-9.25 -9.25,-9.25 z m 4.39,11.53 c -1.93,1.93 -4.78,2.31 -6.7,2.31 -0.7,0 -1.41,-0.05 -2.1,-0.16 0,0 -1.02,-5.64 2.14,-8.81 0.83,-0.83 1.95,-1.28 3.13,-1.28 1.27,0 2.49,0.51 3.39,1.42 1.84,1.84 1.89,4.75 0.14,6.52 z\" style=\"opacity:0.9;fill:%23ffffff;enable-background:new\" class=\"st0\"/%3E%3Cpath d=\"M 10.5,-0.01 C 4.7,-0.01 0,4.7 0,10.49 c 0,5.79 4.7,10.5 10.5,10.5 5.8,0 10.5,-4.7 10.5,-10.5 C 20.99,4.7 16.3,-0.01 10.5,-0.01 Z m 0,19.75 c -5.11,0 -9.25,-4.15 -9.25,-9.25 0,-5.1 4.14,-9.26 9.25,-9.26 5.11,0 9.25,4.15 9.25,9.25 0,5.13 -4.14,9.26 -9.25,9.26 z\" style=\"opacity:0.35;enable-background:new\" class=\"st1\"/%3E%3Cpath d=\"M 14.74,6.25 C 12.9,4.41 9.98,4.35 8.23,6.1 5.07,9.27 6.09,14.91 6.09,14.91 c 0,0 5.64,1.02 8.81,-2.14 C 16.64,11 16.59,8.09 14.74,6.25 Z m -2.27,4.09 -0.91,1.87 -0.9,-1.87 -1.86,-0.91 1.86,-0.9 0.9,-1.87 0.91,1.87 1.86,0.9 z\" style=\"opacity:0.35;enable-background:new\" class=\"st1\"/%3E%3Cpolygon points=\"11.56,12.21 10.66,10.34 8.8,9.43 10.66,8.53 11.56,6.66 12.47,8.53 14.33,9.43 12.47,10.34 \" style=\"opacity:0.9;fill:%23ffffff;enable-background:new\" class=\"st0\"/%3E%3C/g%3E%3C/svg%3E\\')'}}},{\"../../lib/sort_object_keys\":526}],612:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t,e){var r=t.split(\" \"),i=r[0],a=r[1],o=n.isArrayOrTypedArray(e)?n.mean(e):e,s=.5+o/100,l=1.5+o/100,c=[\"\",\"\"],u=[0,0];switch(i){case\"top\":c[0]=\"top\",u[1]=-l;break;case\"bottom\":c[0]=\"bottom\",u[1]=l}switch(a){case\"left\":c[1]=\"right\",u[0]=-s;break;case\"right\":c[1]=\"left\",u[0]=s}return{anchor:c[0]&&c[1]?c.join(\"-\"):c[0]?c[0]:c[1]?c[1]:\"center\",offset:u}}},{\"../../lib\":503}],613:[function(t,e,r){\"use strict\";var n=t(\"mapbox-gl/dist/mapbox-gl-unminified\"),i=t(\"../../lib\"),a=i.strTranslate,o=i.strScale,s=t(\"../../plots/get_data\").getSubplotCalcData,l=t(\"../../constants/xmlns_namespaces\"),c=t(\"@plotly/d3\"),u=t(\"../../components/drawing\"),f=t(\"../../lib/svg_text_utils\"),h=t(\"./mapbox\"),p=r.constants=t(\"./constants\");function d(t){return\"string\"==typeof t&&(-1!==p.styleValuesMapbox.indexOf(t)||0===t.indexOf(\"mapbox://\"))}r.name=\"mapbox\",r.attr=\"subplot\",r.idRoot=\"mapbox\",r.idRegex=r.attrRegex=i.counterRegex(\"mapbox\"),r.attributes={subplot:{valType:\"subplotid\",dflt:\"mapbox\",editType:\"calc\"}},r.layoutAttributes=t(\"./layout_attributes\"),r.supplyLayoutDefaults=t(\"./layout_defaults\"),r.plot=function(t){var e=t._fullLayout,r=t.calcdata,a=e._subplots.mapbox;if(n.version!==p.requiredVersion)throw new Error(p.wrongVersionErrorMsg);var o=function(t,e){var r=t._fullLayout;if(\"\"===t._context.mapboxAccessToken)return\"\";for(var n=[],a=[],o=!1,s=!1,l=0;l1&&i.warn(p.multipleTokensErrorMsg),n[0]):(a.length&&i.log([\"Listed mapbox access token(s)\",a.join(\",\"),\"but did not use a Mapbox map style, ignoring token(s).\"].join(\" \")),\"\")}(t,a);n.accessToken=o;for(var l=0;l_/2){var w=v.split(\"|\").join(\"
\");x.text(w).attr(\"data-unformatted\",w).call(f.convertToTspans,t),b=u.bBox(x.node())}x.attr(\"transform\",a(-3,8-b.height)),y.insert(\"rect\",\".static-attribution\").attr({x:-b.width-6,y:-b.height-3,width:b.width+6,height:b.height+3,fill:\"rgba(255, 255, 255, 0.75)\"});var T=1;b.width+6>_&&(T=_/(b.width+6));var k=[n.l+n.w*h.x[1],n.t+n.h*(1-h.y[0])];y.attr(\"transform\",a(k[0],k[1])+o(T))}},r.updateFx=function(t){for(var e=t._fullLayout,r=e._subplots.mapbox,n=0;n0){for(var r=0;r0}function u(t){var e={},r={};switch(t.type){case\"circle\":n.extendFlat(r,{\"circle-radius\":t.circle.radius,\"circle-color\":t.color,\"circle-opacity\":t.opacity});break;case\"line\":n.extendFlat(r,{\"line-width\":t.line.width,\"line-color\":t.color,\"line-opacity\":t.opacity,\"line-dasharray\":t.line.dash});break;case\"fill\":n.extendFlat(r,{\"fill-color\":t.color,\"fill-outline-color\":t.fill.outlinecolor,\"fill-opacity\":t.opacity});break;case\"symbol\":var i=t.symbol,o=a(i.textposition,i.iconsize);n.extendFlat(e,{\"icon-image\":i.icon+\"-15\",\"icon-size\":i.iconsize/10,\"text-field\":i.text,\"text-size\":i.textfont.size,\"text-anchor\":o.anchor,\"text-offset\":o.offset,\"symbol-placement\":i.placement}),n.extendFlat(r,{\"icon-color\":t.color,\"text-color\":i.textfont.color,\"text-opacity\":t.opacity});break;case\"raster\":n.extendFlat(r,{\"raster-fade-duration\":0,\"raster-opacity\":t.opacity})}return{layout:e,paint:r}}l.update=function(t){this.visible?this.needsNewImage(t)?this.updateImage(t):this.needsNewSource(t)?(this.removeLayer(),this.updateSource(t),this.updateLayer(t)):this.needsNewLayer(t)?this.updateLayer(t):this.updateStyle(t):(this.updateSource(t),this.updateLayer(t)),this.visible=c(t)},l.needsNewImage=function(t){return this.subplot.map.getSource(this.idSource)&&\"image\"===this.sourceType&&\"image\"===t.sourcetype&&(this.source!==t.source||JSON.stringify(this.coordinates)!==JSON.stringify(t.coordinates))},l.needsNewSource=function(t){return this.sourceType!==t.sourcetype||JSON.stringify(this.source)!==JSON.stringify(t.source)||this.layerType!==t.type},l.needsNewLayer=function(t){return this.layerType!==t.type||this.below!==this.subplot.belowLookup[\"layout-\"+this.index]},l.lookupBelow=function(){return this.subplot.belowLookup[\"layout-\"+this.index]},l.updateImage=function(t){this.subplot.map.getSource(this.idSource).updateImage({url:t.source,coordinates:t.coordinates});var e=this.findFollowingMapboxLayerId(this.lookupBelow());null!==e&&this.subplot.map.moveLayer(this.idLayer,e)},l.updateSource=function(t){var e=this.subplot.map;if(e.getSource(this.idSource)&&e.removeSource(this.idSource),this.sourceType=t.sourcetype,this.source=t.source,c(t)){var r=function(t){var e,r=t.sourcetype,n=t.source,a={type:r};\"geojson\"===r?e=\"data\":\"vector\"===r?e=\"string\"==typeof n?\"url\":\"tiles\":\"raster\"===r?(e=\"tiles\",a.tileSize=256):\"image\"===r&&(e=\"url\",a.coordinates=t.coordinates);a[e]=n,t.sourceattribution&&(a.attribution=i(t.sourceattribution));return a}(t);e.addSource(this.idSource,r)}},l.findFollowingMapboxLayerId=function(t){if(\"traces\"===t)for(var e=this.subplot.getMapLayers(),r=0;r1)for(r=0;r-1&&v(e.originalEvent,n,[r.xaxis],[r.yaxis],r.id,t),i.indexOf(\"event\")>-1&&c.click(n,e.originalEvent)}}},_.updateFx=function(t){var e=this,r=e.map,n=e.gd;if(!e.isStatic){var a,o=t.dragmode;a=f(o)?function(t,r){(t.range={})[e.id]=[c([r.xmin,r.ymin]),c([r.xmax,r.ymax])]}:function(t,r,n){(t.lassoPoints={})[e.id]=n.filtered.map(c)};var s=e.dragOptions;e.dragOptions=i.extendDeep(s||{},{dragmode:t.dragmode,element:e.div,gd:n,plotinfo:{id:e.id,domain:t[e.id].domain,xaxis:e.xaxis,yaxis:e.yaxis,fillRangeItems:a},xaxes:[e.xaxis],yaxes:[e.yaxis],subplot:e.id}),r.off(\"click\",e.onClickInPanHandler),p(o)||h(o)?(r.dragPan.disable(),r.on(\"zoomstart\",e.clearSelect),e.dragOptions.prepFn=function(t,r,n){d(t,r,n,e.dragOptions,o)},l.init(e.dragOptions)):(r.dragPan.enable(),r.off(\"zoomstart\",e.clearSelect),e.div.onmousedown=null,e.onClickInPanHandler=e.onClickInPanFn(e.dragOptions),r.on(\"click\",e.onClickInPanHandler))}function c(t){var r=e.map.unproject(t);return[r.lng,r.lat]}},_.updateFramework=function(t){var e=t[this.id].domain,r=t._size,n=this.div.style;n.width=r.w*(e.x[1]-e.x[0])+\"px\",n.height=r.h*(e.y[1]-e.y[0])+\"px\",n.left=r.l+e.x[0]*r.w+\"px\",n.top=r.t+(1-e.y[1])*r.h+\"px\",this.xaxis._offset=r.l+e.x[0]*r.w,this.xaxis._length=r.w*(e.x[1]-e.x[0]),this.yaxis._offset=r.t+(1-e.y[1])*r.h,this.yaxis._length=r.h*(e.y[1]-e.y[0])},_.updateLayers=function(t){var e,r=t[this.id].layers,n=this.layerList;if(r.length!==n.length){for(e=0;e=e.width-20?(a[\"text-anchor\"]=\"start\",a.x=5):(a[\"text-anchor\"]=\"end\",a.x=e._paper.attr(\"width\")-7),r.attr(a);var o=r.select(\".js-link-to-tool\"),s=r.select(\".js-link-spacer\"),l=r.select(\".js-sourcelinks\");t._context.showSources&&t._context.showSources(t),t._context.showLink&&function(t,e){e.text(\"\");var r=e.append(\"a\").attr({\"xlink:xlink:href\":\"#\",class:\"link--impt link--embedview\",\"font-weight\":\"bold\"}).text(t._context.linkText+\" \"+String.fromCharCode(187));if(t._context.sendData)r.on(\"click\",(function(){b.sendDataToCloud(t)}));else{var n=window.location.pathname.split(\"/\"),i=window.location.search;r.attr({\"xlink:xlink:show\":\"new\",\"xlink:xlink:href\":\"/\"+n[2].split(\".\")[0]+\"/\"+n[1]+i})}}(t,o),s.text(o.text()&&l.text()?\" - \":\"\")}},b.sendDataToCloud=function(t){var e=(window.PLOTLYENV||{}).BASE_URL||t._context.plotlyServerURL;if(e){t.emit(\"plotly_beforeexport\");var r=n.select(t).append(\"div\").attr(\"id\",\"hiddenform\").style(\"display\",\"none\"),i=r.append(\"form\").attr({action:e+\"/external\",method:\"post\",target:\"_blank\"});return i.append(\"input\").attr({type:\"text\",name:\"data\"}).node().value=b.graphJson(t,!1,\"keepdata\"),i.node().submit(),r.remove(),t.emit(\"plotly_afterexport\"),!1}};var T=[\"days\",\"shortDays\",\"months\",\"shortMonths\",\"periods\",\"dateTime\",\"date\",\"time\",\"decimal\",\"thousands\",\"grouping\",\"currency\"],k=[\"year\",\"month\",\"dayMonth\",\"dayMonthYear\"];function A(t,e){var r=t._context.locale;r||(r=\"en-US\");var n=!1,i={};function a(t){for(var r=!0,a=0;a1&&z.length>1){for(s.getComponentMethod(\"grid\",\"sizeDefaults\")(c,l),o=0;o15&&z.length>15&&0===l.shapes.length&&0===l.images.length,b.linkSubplots(h,l,f,n),b.cleanPlot(h,l,f,n);var N=!(!n._has||!n._has(\"gl2d\")),j=!(!l._has||!l._has(\"gl2d\")),U=!(!n._has||!n._has(\"cartesian\"))||N,V=!(!l._has||!l._has(\"cartesian\"))||j;U&&!V?n._bgLayer.remove():V&&!U&&(l._shouldCreateBgLayer=!0),n._zoomlayer&&!t._dragging&&d({_fullLayout:n}),function(t,e){var r,n=[];e.meta&&(r=e._meta={meta:e.meta,layout:{meta:e.meta}});for(var i=0;i0){var f=1-2*s;n=Math.round(f*n),i=Math.round(f*i)}}var h=b.layoutAttributes.width.min,p=b.layoutAttributes.height.min;n1,g=!e.height&&Math.abs(r.height-i)>1;(g||d)&&(d&&(r.width=n),g&&(r.height=i)),t._initialAutoSize||(t._initialAutoSize={width:n,height:i}),b.sanitizeMargins(r)},b.supplyLayoutModuleDefaults=function(t,e,r,n){var i,a,o,l=s.componentsRegistry,c=e._basePlotModules,f=s.subplotsRegistry.cartesian;for(i in l)(o=l[i]).includeBasePlot&&o.includeBasePlot(t,e);for(var h in c.length||c.push(f),e._has(\"cartesian\")&&(s.getComponentMethod(\"grid\",\"contentDefaults\")(t,e),f.finalizeSubplots(t,e)),e._subplots)e._subplots[h].sort(u.subplotSort);for(a=0;a1&&(r.l/=g,r.r/=g)}if(f){var m=(r.t+r.b)/f;m>1&&(r.t/=m,r.b/=m)}var v=void 0!==r.xl?r.xl:r.x,y=void 0!==r.xr?r.xr:r.x,x=void 0!==r.yt?r.yt:r.y,_=void 0!==r.yb?r.yb:r.y;h[e]={l:{val:v,size:r.l+d},r:{val:y,size:r.r+d},b:{val:_,size:r.b+d},t:{val:x,size:r.t+d}},p[e]=1}else delete h[e],delete p[e];if(!n._replotting)return b.doAutoMargin(t)}},b.doAutoMargin=function(t){var e=t._fullLayout,r=e.width,n=e.height;e._size||(e._size={}),C(e);var i=e._size,a=e.margin,l=u.extendFlat({},i),c=a.l,f=a.r,h=a.t,d=a.b,g=e._pushmargin,m=e._pushmarginIds;if(!1!==e.margin.autoexpand){for(var v in g)m[v]||delete g[v];for(var y in g.base={l:{val:0,size:c},r:{val:1,size:f},t:{val:1,size:h},b:{val:0,size:d}},g){var x=g[y].l||{},_=g[y].b||{},w=x.val,T=x.size,k=_.val,A=_.size;for(var M in g){if(o(T)&&g[M].r){var S=g[M].r.val,E=g[M].r.size;if(S>w){var L=(T*S+(E-r)*w)/(S-w),P=(E*(1-w)+(T-r)*(1-S))/(S-w);L+P>c+f&&(c=L,f=P)}}if(o(A)&&g[M].t){var I=g[M].t.val,O=g[M].t.size;if(I>k){var z=(A*I+(O-n)*k)/(I-k),D=(O*(1-k)+(A-n)*(1-I))/(I-k);z+D>d+h&&(d=z,h=D)}}}}}var R=u.constrain(r-a.l-a.r,2,64),F=u.constrain(n-a.t-a.b,2,64),B=Math.max(0,r-R),N=Math.max(0,n-F);if(B){var j=(c+f)/B;j>1&&(c/=j,f/=j)}if(N){var U=(d+h)/N;U>1&&(d/=U,h/=U)}if(i.l=Math.round(c),i.r=Math.round(f),i.t=Math.round(h),i.b=Math.round(d),i.p=Math.round(a.pad),i.w=Math.round(r)-i.l-i.r,i.h=Math.round(n)-i.t-i.b,!e._replotting&&b.didMarginChange(l,i)){\"_redrawFromAutoMarginCount\"in e?e._redrawFromAutoMarginCount++:e._redrawFromAutoMarginCount=1;var V=3*(1+Object.keys(m).length);if(e._redrawFromAutoMarginCount0&&(t._transitioningWithDuration=!0),t._transitionData._interruptCallbacks.push((function(){n=!0})),r.redraw&&t._transitionData._interruptCallbacks.push((function(){return s.call(\"redraw\",t)})),t._transitionData._interruptCallbacks.push((function(){t.emit(\"plotly_transitioninterrupted\",[])}));var a=0,o=0;function l(){return a++,function(){o++,n||o!==a||function(e){if(!t._transitionData)return;(function(t){if(t)for(;t.length;)t.shift()})(t._transitionData._interruptCallbacks),Promise.resolve().then((function(){if(r.redraw)return s.call(\"redraw\",t)})).then((function(){t._transitioning=!1,t._transitioningWithDuration=!1,t.emit(\"plotly_transitioned\",[])})).then(e)}(i)}}r.runFn(l),setTimeout(l())}))}],a=u.syncOrAsync(i,t);return a&&a.then||(a=Promise.resolve()),a.then((function(){return t}))}b.didMarginChange=function(t,e){for(var r=0;r1)return!0}return!1},b.graphJson=function(t,e,r,n,i,a){(i&&e&&!t._fullData||i&&!e&&!t._fullLayout)&&b.supplyDefaults(t);var o=i?t._fullData:t.data,s=i?t._fullLayout:t.layout,l=(t._transitionData||{})._frames;function c(t,e){if(\"function\"==typeof t)return e?\"_function_\":null;if(u.isPlainObject(t)){var n,i={};return Object.keys(t).sort().forEach((function(a){if(-1===[\"_\",\"[\"].indexOf(a.charAt(0)))if(\"function\"!=typeof t[a]){if(\"keepdata\"===r){if(\"src\"===a.substr(a.length-3))return}else if(\"keepstream\"===r){if(\"string\"==typeof(n=t[a+\"src\"])&&n.indexOf(\":\")>0&&!u.isPlainObject(t.stream))return}else if(\"keepall\"!==r&&\"string\"==typeof(n=t[a+\"src\"])&&n.indexOf(\":\")>0)return;i[a]=c(t[a],e)}else e&&(i[a]=\"_function\")})),i}return Array.isArray(t)?t.map((function(t){return c(t,e)})):u.isTypedArray(t)?u.simpleMap(t,u.identity):u.isJSDate(t)?u.ms2DateTimeLocal(+t):t}var f={data:(o||[]).map((function(t){var r=c(t);return e&&delete r.fit,r}))};if(!e&&(f.layout=c(s),i)){var h=s._size;f.layout.computed={margin:{b:h.b,l:h.l,r:h.r,t:h.t}}}return l&&(f.frames=c(l)),a&&(f.config=c(t._context,!0)),\"object\"===n?f:JSON.stringify(f)},b.modifyFrames=function(t,e){var r,n,i,a=t._transitionData._frames,o=t._transitionData._frameHash;for(r=0;r=0;a--)if(s[a].enabled){r._indexToPoints=s[a]._indexToPoints;break}n&&n.calc&&(o=n.calc(t,r))}Array.isArray(o)&&o[0]||(o=[{x:h,y:h}]),o[0].t||(o[0].t={}),o[0].trace=r,d[e]=o}}for(z(o,c,f),i=0;i1e-10?t:0}function h(t,e,r){e=e||0,r=r||0;for(var n=t.length,i=new Array(n),a=0;a0?r:1/0})),i=n.mod(r+1,e.length);return[e[r],e[i]]},findIntersectionXY:c,findXYatLength:function(t,e,r,n){var i=-e*r,a=e*e+1,o=2*(e*i-r),s=i*i+r*r-t*t,l=Math.sqrt(o*o-4*a*s),c=(-o+l)/(2*a),u=(-o-l)/(2*a);return[[c,e*c+i+n],[u,e*u+i+n]]},clampTiny:f,pathPolygon:function(t,e,r,n,i,a){return\"M\"+h(u(t,e,r,n),i,a).join(\"L\")},pathPolygonAnnulus:function(t,e,r,n,i,a,o){var s,l;t=90||s>90&&l>=450?1:u<=0&&h<=0?0:Math.max(u,h);e=s<=180&&l>=180||s>180&&l>=540?-1:c>=0&&f>=0?0:Math.min(c,f);r=s<=270&&l>=270||s>270&&l>=630?-1:u>=0&&h>=0?0:Math.min(u,h);n=l>=360?1:c<=0&&f<=0?0:Math.max(c,f);return[e,r,n,i]}(p),b=x[2]-x[0],_=x[3]-x[1],w=h/f,T=Math.abs(_/b);w>T?(d=f,y=(h-(g=f*T))/n.h/2,m=[o[0],o[1]],v=[s[0]+y,s[1]-y]):(g=h,y=(f-(d=h/T))/n.w/2,m=[o[0]+y,o[1]-y],v=[s[0],s[1]]),this.xLength2=d,this.yLength2=g,this.xDomain2=m,this.yDomain2=v;var k,A=this.xOffset2=n.l+n.w*m[0],M=this.yOffset2=n.t+n.h*(1-v[1]),S=this.radius=d/b,E=this.innerRadius=this.getHole(e)*S,L=this.cx=A-S*x[0],C=this.cy=M+S*x[3],P=this.cxx=L-A,I=this.cyy=C-M,O=i.side;\"counterclockwise\"===O?(k=O,O=\"top\"):\"clockwise\"===O&&(k=O,O=\"bottom\"),this.radialAxis=this.mockAxis(t,e,i,{_id:\"x\",side:O,_trueSide:k,domain:[E/n.w,S/n.w]}),this.angularAxis=this.mockAxis(t,e,a,{side:\"right\",domain:[0,Math.PI],autorange:!1}),this.doAutoRange(t,e),this.updateAngularAxis(t,e),this.updateRadialAxis(t,e),this.updateRadialAxisTitle(t,e),this.xaxis=this.mockCartesianAxis(t,e,{_id:\"x\",domain:m}),this.yaxis=this.mockCartesianAxis(t,e,{_id:\"y\",domain:v});var z=this.pathSubplot();this.clipPaths.forTraces.select(\"path\").attr(\"d\",z).attr(\"transform\",l(P,I)),r.frontplot.attr(\"transform\",l(A,M)).call(u.setClipUrl,this._hasClipOnAxisFalse?null:this.clipIds.forTraces,this.gd),r.bg.attr(\"d\",z).attr(\"transform\",l(L,C)).call(c.fill,e.bgcolor)},N.mockAxis=function(t,e,r,n){var i=o.extendFlat({},r,n);return d(i,e,t),i},N.mockCartesianAxis=function(t,e,r){var n=this,i=n.isSmith,a=r._id,s=o.extendFlat({type:\"linear\"},r);p(s,t);var l={x:[0,2],y:[1,3]};return s.setRange=function(){var t=n.sectorBBox,r=l[a],i=n.radialAxis._rl,o=(i[1]-i[0])/(1-n.getHole(e));s.range=[t[r[0]]*o,t[r[1]]*o]},s.isPtWithinRange=\"x\"!==a||i?function(){return!0}:function(t){return n.isPtInside(t)},s.setRange(),s.setScale(),s},N.doAutoRange=function(t,e){var r=this.gd,n=this.radialAxis,i=this.getRadial(e);g(r,n);var a=n.range;i.range=a.slice(),i._input.range=a.slice(),n._rl=[n.r2l(a[0],null,\"gregorian\"),n.r2l(a[1],null,\"gregorian\")]},N.updateRadialAxis=function(t,e){var r=this,n=r.gd,i=r.layers,a=r.radius,u=r.innerRadius,f=r.cx,p=r.cy,d=r.getRadial(e),g=D(r.getSector(e)[0],360),m=r.radialAxis,v=u90&&g<=270&&(m.tickangle=180);var x=y?function(t){var e=O(r,C([t.x,0]));return l(e[0]-f,e[1]-p)}:function(t){return l(m.l2p(t.x)+u,0)},b=y?function(t){return I(r,t.x,-1/0,1/0)}:function(t){return r.pathArc(m.r2p(t.x)+u)},_=j(d);if(r.radialTickLayout!==_&&(i[\"radial-axis\"].selectAll(\".xtick\").remove(),r.radialTickLayout=_),v){m.setScale();var w=0,T=y?(m.tickvals||[]).filter((function(t){return t>=0})).map((function(t){return h.tickText(m,t,!0,!1)})):h.calcTicks(m),k=y?T:h.clipEnds(m,T),A=h.getTickSigns(m)[2];y&&((\"top\"===m.ticks&&\"bottom\"===m.side||\"bottom\"===m.ticks&&\"top\"===m.side)&&(A=-A),\"top\"===m.ticks&&\"top\"===m.side&&(w=-m.ticklen),\"bottom\"===m.ticks&&\"bottom\"===m.side&&(w=m.ticklen)),h.drawTicks(n,m,{vals:T,layer:i[\"radial-axis\"],path:h.makeTickPath(m,0,A),transFn:x,crisp:!1}),h.drawGrid(n,m,{vals:k,layer:i[\"radial-grid\"],path:b,transFn:o.noop,crisp:!1}),h.drawLabels(n,m,{vals:T,layer:i[\"radial-axis\"],transFn:x,labelFns:h.makeLabelFns(m,w)})}var M=r.radialAxisAngle=r.vangles?F(U(R(d.angle),r.vangles)):d.angle,S=l(f,p),E=S+s(-M);V(i[\"radial-axis\"],v&&(d.showticklabels||d.ticks),{transform:E}),V(i[\"radial-grid\"],v&&d.showgrid,{transform:y?\"\":S}),V(i[\"radial-line\"].select(\"line\"),v&&d.showline,{x1:y?-a:u,y1:0,x2:a,y2:0,transform:E}).attr(\"stroke-width\",d.linewidth).call(c.stroke,d.linecolor)},N.updateRadialAxisTitle=function(t,e,r){if(!this.isSmith){var n=this.gd,i=this.radius,a=this.cx,o=this.cy,s=this.getRadial(e),l=this.id+\"title\",c=0;if(s.title){var f=u.bBox(this.layers[\"radial-axis\"].node()).height,h=s.title.font.size,p=s.side;c=\"top\"===p?h:\"counterclockwise\"===p?-(f+.4*h):f+.8*h}var d=void 0!==r?r:this.radialAxisAngle,g=R(d),m=Math.cos(g),v=Math.sin(g),y=a+i/2*m+c*v,b=o-i/2*v+c*m;this.layers[\"radial-axis-title\"]=x.draw(n,l,{propContainer:s,propName:this.id+\".radialaxis.title\",placeholder:z(n,\"Click to enter radial axis title\"),attributes:{x:y,y:b,\"text-anchor\":\"middle\"},transform:{rotate:-d}})}},N.updateAngularAxis=function(t,e){var r=this,n=r.gd,i=r.layers,a=r.radius,u=r.innerRadius,f=r.cx,p=r.cy,d=r.getAngular(e),g=r.angularAxis,m=r.isSmith;m||(r.fillViewInitialKey(\"angularaxis.rotation\",d.rotation),g.setGeometry(),g.setScale());var v=m?function(t){var e=O(r,C([0,t.x]));return Math.atan2(e[0]-f,e[1]-p)-Math.PI/2}:function(t){return g.t2g(t.x)};\"linear\"===g.type&&\"radians\"===g.thetaunit&&(g.tick0=F(g.tick0),g.dtick=F(g.dtick));var y=function(t){return l(f+a*Math.cos(t),p-a*Math.sin(t))},x=m?function(t){var e=O(r,C([0,t.x]));return l(e[0],e[1])}:function(t){return y(v(t))},b=m?function(t){var e=O(r,C([0,t.x])),n=Math.atan2(e[0]-f,e[1]-p)-Math.PI/2;return l(e[0],e[1])+s(-F(n))}:function(t){var e=v(t);return y(e)+s(-F(e))},_=m?function(t){return P(r,t.x,0,1/0)}:function(t){var e=v(t),r=Math.cos(e),n=Math.sin(e);return\"M\"+[f+u*r,p-u*n]+\"L\"+[f+a*r,p-a*n]},w=h.makeLabelFns(g,0).labelStandoff,T={xFn:function(t){var e=v(t);return Math.cos(e)*w},yFn:function(t){var e=v(t),r=Math.sin(e)>0?.2:1;return-Math.sin(e)*(w+t.fontSize*r)+Math.abs(Math.cos(e))*(t.fontSize*M)},anchorFn:function(t){var e=v(t),r=Math.cos(e);return Math.abs(r)<.1?\"middle\":r>0?\"start\":\"end\"},heightFn:function(t,e,r){var n=v(t);return-.5*(1+Math.sin(n))*r}},k=j(d);r.angularTickLayout!==k&&(i[\"angular-axis\"].selectAll(\".\"+g._id+\"tick\").remove(),r.angularTickLayout=k);var A,S=m?[1/0].concat(g.tickvals||[]).map((function(t){return h.tickText(g,t,!0,!1)})):h.calcTicks(g);if(m&&(S[0].text=\"\\u221e\",S[0].fontSize*=1.75),\"linear\"===e.gridshape?(A=S.map(v),o.angleDelta(A[0],A[1])<0&&(A=A.slice().reverse())):A=null,r.vangles=A,\"category\"===g.type&&(S=S.filter((function(t){return o.isAngleInsideSector(v(t),r.sectorInRad)}))),g.visible){var E=\"inside\"===g.ticks?-1:1,L=(g.linewidth||1)/2;h.drawTicks(n,g,{vals:S,layer:i[\"angular-axis\"],path:\"M\"+E*L+\",0h\"+E*g.ticklen,transFn:b,crisp:!1}),h.drawGrid(n,g,{vals:S,layer:i[\"angular-grid\"],path:_,transFn:o.noop,crisp:!1}),h.drawLabels(n,g,{vals:S,layer:i[\"angular-axis\"],repositionOnUpdate:!0,transFn:x,labelFns:T})}V(i[\"angular-line\"].select(\"path\"),d.showline,{d:r.pathSubplot(),transform:l(f,p)}).attr(\"stroke-width\",d.linewidth).call(c.stroke,d.linecolor)},N.updateFx=function(t,e){this.gd._context.staticPlot||(!this.isSmith&&(this.updateAngularDrag(t),this.updateRadialDrag(t,e,0),this.updateRadialDrag(t,e,1)),this.updateHoverAndMainDrag(t))},N.updateHoverAndMainDrag=function(t){var e,r,s=this,c=s.isSmith,u=s.gd,f=s.layers,h=t._zoomlayer,p=S.MINZOOM,d=S.OFFEDGE,g=s.radius,x=s.innerRadius,T=s.cx,k=s.cy,A=s.cxx,M=s.cyy,L=s.sectorInRad,C=s.vangles,P=s.radialAxis,I=E.clampTiny,O=E.findXYatLength,z=E.findEnclosingVertexAngles,D=S.cornerHalfWidth,R=S.cornerLen/2,F=m.makeDragger(f,\"path\",\"maindrag\",\"crosshair\");n.select(F).attr(\"d\",s.pathSubplot()).attr(\"transform\",l(T,k)),F.onmousemove=function(t){y.hover(u,t,s.id),u._fullLayout._lasthover=F,u._fullLayout._hoversubplot=s.id},F.onmouseout=function(t){u._dragging||v.unhover(u,t)};var B,N,j,U,V,H,q,G,Y,W={element:F,gd:u,subplot:s.id,plotinfo:{id:s.id,xaxis:s.xaxis,yaxis:s.yaxis},xaxes:[s.xaxis],yaxes:[s.yaxis]};function X(t,e){return Math.sqrt(t*t+e*e)}function Z(t,e){return X(t-A,e-M)}function J(t,e){return Math.atan2(M-e,t-A)}function K(t,e){return[t*Math.cos(e),t*Math.sin(-e)]}function Q(t,e){if(0===t)return s.pathSector(2*D);var r=R/t,n=e-r,i=e+r,a=Math.max(0,Math.min(t,g)),o=a-D,l=a+D;return\"M\"+K(o,n)+\"A\"+[o,o]+\" 0,0,0 \"+K(o,i)+\"L\"+K(l,i)+\"A\"+[l,l]+\" 0,0,1 \"+K(l,n)+\"Z\"}function $(t,e,r){if(0===t)return s.pathSector(2*D);var n,i,a=K(t,e),o=K(t,r),l=I((a[0]+o[0])/2),c=I((a[1]+o[1])/2);if(l&&c){var u=c/l,f=-1/u,h=O(D,u,l,c);n=O(R,f,h[0][0],h[0][1]),i=O(R,f,h[1][0],h[1][1])}else{var p,d;c?(p=R,d=D):(p=D,d=R),n=[[l-p,c-d],[l+p,c-d]],i=[[l-p,c+d],[l+p,c+d]]}return\"M\"+n.join(\"L\")+\"L\"+i.reverse().join(\"L\")+\"Z\"}function tt(t,e){return e=Math.max(Math.min(e,g),x),tp?(t-1&&1===t&&_(e,u,[s.xaxis],[s.yaxis],s.id,W),r.indexOf(\"event\")>-1&&y.click(u,e,s.id)}W.prepFn=function(t,n,a){var l=u._fullLayout.dragmode,f=F.getBoundingClientRect();u._fullLayout._calcInverseTransform(u);var p=u._fullLayout._invTransform;e=u._fullLayout._invScaleX,r=u._fullLayout._invScaleY;var d=o.apply3DTransform(p)(n-f.left,a-f.top);if(B=d[0],N=d[1],C){var v=E.findPolygonOffset(g,L[0],L[1],C);B+=A+v[0],N+=M+v[1]}switch(l){case\"zoom\":W.clickFn=st,c||(W.moveFn=C?it:rt,W.doneFn=at,function(){j=null,U=null,V=s.pathSubplot(),H=!1;var t=u._fullLayout[s.id];q=i(t.bgcolor).getLuminance(),(G=m.makeZoombox(h,q,T,k,V)).attr(\"fill-rule\",\"evenodd\"),Y=m.makeCorners(h,T,k),w(u)}());break;case\"select\":case\"lasso\":b(t,n,a,W,l)}},v.init(W)},N.updateRadialDrag=function(t,e,r){var i=this,c=i.gd,u=i.layers,f=i.radius,h=i.innerRadius,p=i.cx,d=i.cy,g=i.radialAxis,y=S.radialDragBoxSize,x=y/2;if(g.visible){var b,_,T,M=R(i.radialAxisAngle),E=g._rl,L=E[0],C=E[1],P=E[r],I=.75*(E[1]-E[0])/(1-i.getHole(e))/f;r?(b=p+(f+x)*Math.cos(M),_=d-(f+x)*Math.sin(M),T=\"radialdrag\"):(b=p+(h-x)*Math.cos(M),_=d-(h-x)*Math.sin(M),T=\"radialdrag-inner\");var O,z,D,B=m.makeRectDragger(u,T,\"crosshair\",-x,-x,y,y),N={element:B,gd:c};V(n.select(B),g.visible&&h0==(r?D>L:Dn?function(t){return t<=0}:function(t){return t>=0};t.c2g=function(r){var n=t.c2l(r)-e;return(s(n)?n:0)+o},t.g2c=function(r){return t.l2c(r+e-o)},t.g2p=function(t){return t*a},t.c2p=function(e){return t.g2p(t.c2g(e))}}}(t,e);break;case\"angularaxis\":!function(t,e){var r=t.type;if(\"linear\"===r){var i=t.d2c,s=t.c2d;t.d2c=function(t,e){return function(t,e){return\"degrees\"===e?a(t):t}(i(t),e)},t.c2d=function(t,e){return s(function(t,e){return\"degrees\"===e?o(t):t}(t,e))}}t.makeCalcdata=function(e,i){var a,o,s=e[i],l=e._length,c=function(r){return t.d2c(r,e.thetaunit)};if(s){if(n.isTypedArray(s)&&\"linear\"===r){if(l===s.length)return s;if(s.subarray)return s.subarray(0,l)}for(a=new Array(l),o=0;o0?1:0}function i(t){var e=t[0],r=t[1];if(!isFinite(e)||!isFinite(r))return[1,0];var n=(e+1)*(e+1)+r*r;return[(e*e+r*r-1)/n,2*r/n]}function a(t,e){var r=e[0],n=e[1];return[r*t.radius+t.cx,-n*t.radius+t.cy]}function o(t,e){return e*t.radius}e.exports={smith:i,reactanceArc:function(t,e,r,n){var s=a(t,i([r,e])),l=s[0],c=s[1],u=a(t,i([n,e])),f=u[0],h=u[1];if(0===e)return[\"M\"+l+\",\"+c,\"L\"+f+\",\"+h].join(\" \");var p=o(t,1/Math.abs(e));return[\"M\"+l+\",\"+c,\"A\"+p+\",\"+p+\" 0 0,\"+(e<0?1:0)+\" \"+f+\",\"+h].join(\" \")},resistanceArc:function(t,e,r,s){var l=o(t,1/(e+1)),c=a(t,i([e,r])),u=c[0],f=c[1],h=a(t,i([e,s])),p=h[0],d=h[1];if(n(r)!==n(s)){var g=a(t,i([e,0]));return[\"M\"+u+\",\"+f,\"A\"+l+\",\"+l+\" 0 0,\"+(00){for(var n=[],i=0;i=u&&(h.min=0,d.min=0,m.min=0,t.aaxis&&delete t.aaxis.min,t.baxis&&delete t.baxis.min,t.caxis&&delete t.caxis.min)}function g(t,e,r,n){var i=h[e._name];function o(r,n){return a.coerce(t,e,i,r,n)}o(\"uirevision\",n.uirevision),e.type=\"linear\";var p=o(\"color\"),d=p!==i.color.dflt?p:r.font.color,g=e._name.charAt(0).toUpperCase(),m=\"Component \"+g,v=o(\"title.text\",m);e._hovertitle=v===m?v:g,a.coerceFont(o,\"title.font\",{family:r.font.family,size:a.bigFont(r.font.size),color:d}),o(\"min\"),u(t,e,o,\"linear\"),l(t,e,o,\"linear\"),s(t,e,o,\"linear\"),c(t,e,o,{outerTicks:!0}),o(\"showticklabels\")&&(a.coerceFont(o,\"tickfont\",{family:r.font.family,size:r.font.size,color:d}),o(\"tickangle\"),o(\"tickformat\")),f(t,e,o,{dfltColor:p,bgColor:r.bgColor,blend:60,showLine:!0,showGrid:!0,noZeroLine:!0,attributes:i}),o(\"hoverformat\"),o(\"layer\")}e.exports=function(t,e,r){o(t,e,r,{type:\"ternary\",attributes:h,handleDefaults:d,font:e.font,paper_bgcolor:e.paper_bgcolor})}},{\"../../components/color\":366,\"../../lib\":503,\"../../plot_api/plot_template\":543,\"../cartesian/line_grid_defaults\":571,\"../cartesian/prefix_suffix_defaults\":573,\"../cartesian/tick_label_defaults\":578,\"../cartesian/tick_mark_defaults\":579,\"../cartesian/tick_value_defaults\":580,\"../subplot_defaults\":632,\"./layout_attributes\":635}],637:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"tinycolor2\"),a=t(\"../../registry\"),o=t(\"../../lib\"),s=o.strTranslate,l=o._,c=t(\"../../components/color\"),u=t(\"../../components/drawing\"),f=t(\"../cartesian/set_convert\"),h=t(\"../../lib/extend\").extendFlat,p=t(\"../plots\"),d=t(\"../cartesian/axes\"),g=t(\"../../components/dragelement\"),m=t(\"../../components/fx\"),v=t(\"../../components/dragelement/helpers\"),y=v.freeMode,x=v.rectMode,b=t(\"../../components/titles\"),_=t(\"../cartesian/select\").prepSelect,w=t(\"../cartesian/select\").selectOnClick,T=t(\"../cartesian/select\").clearSelect,k=t(\"../cartesian/select\").clearSelectionsCache,A=t(\"../cartesian/constants\");function M(t,e){this.id=t.id,this.graphDiv=t.graphDiv,this.init(e),this.makeFramework(e),this.aTickLayout=null,this.bTickLayout=null,this.cTickLayout=null}e.exports=M;var S=M.prototype;S.init=function(t){this.container=t._ternarylayer,this.defs=t._defs,this.layoutId=t._uid,this.traceHash={},this.layers={}},S.plot=function(t,e){var r=e[this.id],n=e._size;this._hasClipOnAxisFalse=!1;for(var i=0;iE*b?i=(a=b)*E:a=(i=x)/E,o=v*i/x,l=y*a/b,r=e.l+e.w*g-i/2,n=e.t+e.h*(1-m)-a/2,p.x0=r,p.y0=n,p.w=i,p.h=a,p.sum=_,p.xaxis={type:\"linear\",range:[w+2*k-_,_-w-2*T],domain:[g-o/2,g+o/2],_id:\"x\"},f(p.xaxis,p.graphDiv._fullLayout),p.xaxis.setScale(),p.xaxis.isPtWithinRange=function(t){return t.a>=p.aaxis.range[0]&&t.a<=p.aaxis.range[1]&&t.b>=p.baxis.range[1]&&t.b<=p.baxis.range[0]&&t.c>=p.caxis.range[1]&&t.c<=p.caxis.range[0]},p.yaxis={type:\"linear\",range:[w,_-T-k],domain:[m-l/2,m+l/2],_id:\"y\"},f(p.yaxis,p.graphDiv._fullLayout),p.yaxis.setScale(),p.yaxis.isPtWithinRange=function(){return!0};var A=p.yaxis.domain[0],M=p.aaxis=h({},t.aaxis,{range:[w,_-T-k],side:\"left\",tickangle:(+t.aaxis.tickangle||0)-30,domain:[A,A+l*E],anchor:\"free\",position:0,_id:\"y\",_length:i});f(M,p.graphDiv._fullLayout),M.setScale();var S=p.baxis=h({},t.baxis,{range:[_-w-k,T],side:\"bottom\",domain:p.xaxis.domain,anchor:\"free\",position:0,_id:\"x\",_length:i});f(S,p.graphDiv._fullLayout),S.setScale();var L=p.caxis=h({},t.caxis,{range:[_-w-T,k],side:\"right\",tickangle:(+t.caxis.tickangle||0)+30,domain:[A,A+l*E],anchor:\"free\",position:0,_id:\"y\",_length:i});f(L,p.graphDiv._fullLayout),L.setScale();var C=\"M\"+r+\",\"+(n+a)+\"h\"+i+\"l-\"+i/2+\",-\"+a+\"Z\";p.clipDef.select(\"path\").attr(\"d\",C),p.layers.plotbg.select(\"path\").attr(\"d\",C);var P=\"M0,\"+a+\"h\"+i+\"l-\"+i/2+\",-\"+a+\"Z\";p.clipDefRelative.select(\"path\").attr(\"d\",P);var I=s(r,n);p.plotContainer.selectAll(\".scatterlayer,.maplayer\").attr(\"transform\",I),p.clipDefRelative.select(\"path\").attr(\"transform\",null);var O=s(r-S._offset,n+a);p.layers.baxis.attr(\"transform\",O),p.layers.bgrid.attr(\"transform\",O);var z=s(r+i/2,n)+\"rotate(30)\"+s(0,-M._offset);p.layers.aaxis.attr(\"transform\",z),p.layers.agrid.attr(\"transform\",z);var D=s(r+i/2,n)+\"rotate(-30)\"+s(0,-L._offset);p.layers.caxis.attr(\"transform\",D),p.layers.cgrid.attr(\"transform\",D),p.drawAxes(!0),p.layers.aline.select(\"path\").attr(\"d\",M.showline?\"M\"+r+\",\"+(n+a)+\"l\"+i/2+\",-\"+a:\"M0,0\").call(c.stroke,M.linecolor||\"#000\").style(\"stroke-width\",(M.linewidth||0)+\"px\"),p.layers.bline.select(\"path\").attr(\"d\",S.showline?\"M\"+r+\",\"+(n+a)+\"h\"+i:\"M0,0\").call(c.stroke,S.linecolor||\"#000\").style(\"stroke-width\",(S.linewidth||0)+\"px\"),p.layers.cline.select(\"path\").attr(\"d\",L.showline?\"M\"+(r+i/2)+\",\"+n+\"l\"+i/2+\",\"+a:\"M0,0\").call(c.stroke,L.linecolor||\"#000\").style(\"stroke-width\",(L.linewidth||0)+\"px\"),p.graphDiv._context.staticPlot||p.initInteractions(),u.setClipUrl(p.layers.frontplot,p._hasClipOnAxisFalse?null:p.clipId,p.graphDiv)},S.drawAxes=function(t){var e=this.graphDiv,r=this.id.substr(7)+\"title\",n=this.layers,i=this.aaxis,a=this.baxis,o=this.caxis;if(this.drawAx(i),this.drawAx(a),this.drawAx(o),t){var s=Math.max(i.showticklabels?i.tickfont.size/2:0,(o.showticklabels?.75*o.tickfont.size:0)+(\"outside\"===o.ticks?.87*o.ticklen:0)),c=(a.showticklabels?a.tickfont.size:0)+(\"outside\"===a.ticks?a.ticklen:0)+3;n[\"a-title\"]=b.draw(e,\"a\"+r,{propContainer:i,propName:this.id+\".aaxis.title\",placeholder:l(e,\"Click to enter Component A title\"),attributes:{x:this.x0+this.w/2,y:this.y0-i.title.font.size/3-s,\"text-anchor\":\"middle\"}}),n[\"b-title\"]=b.draw(e,\"b\"+r,{propContainer:a,propName:this.id+\".baxis.title\",placeholder:l(e,\"Click to enter Component B title\"),attributes:{x:this.x0-c,y:this.y0+this.h+.83*a.title.font.size+c,\"text-anchor\":\"middle\"}}),n[\"c-title\"]=b.draw(e,\"c\"+r,{propContainer:o,propName:this.id+\".caxis.title\",placeholder:l(e,\"Click to enter Component C title\"),attributes:{x:this.x0+this.w+c,y:this.y0+this.h+.83*o.title.font.size+c,\"text-anchor\":\"middle\"}})}},S.drawAx=function(t){var e,r=this.graphDiv,n=t._name,i=n.charAt(0),a=t._id,s=this.layers[n],l=i+\"tickLayout\",c=(e=t).ticks+String(e.ticklen)+String(e.showticklabels);this[l]!==c&&(s.selectAll(\".\"+a+\"tick\").remove(),this[l]=c),t.setScale();var u=d.calcTicks(t),f=d.clipEnds(t,u),h=d.makeTransTickFn(t),p=d.getTickSigns(t)[2],g=o.deg2rad(30),m=p*(t.linewidth||1)/2,v=p*t.ticklen,y=this.w,x=this.h,b=\"b\"===i?\"M0,\"+m+\"l\"+Math.sin(g)*v+\",\"+Math.cos(g)*v:\"M\"+m+\",0l\"+Math.cos(g)*v+\",\"+-Math.sin(g)*v,_={a:\"M0,0l\"+x+\",-\"+y/2,b:\"M0,0l-\"+y/2+\",-\"+x,c:\"M0,0l-\"+x+\",\"+y/2}[i];d.drawTicks(r,t,{vals:\"inside\"===t.ticks?f:u,layer:s,path:b,transFn:h,crisp:!1}),d.drawGrid(r,t,{vals:f,layer:this.layers[i+\"grid\"],path:_,transFn:h,crisp:!1}),d.drawLabels(r,t,{vals:u,layer:s,transFn:h,labelFns:d.makeLabelFns(t,0,30)})};var L=A.MINZOOM/2+.87,C=\"m-0.87,.5h\"+L+\"v3h-\"+(L+5.2)+\"l\"+(L/2+2.6)+\",-\"+(.87*L+4.5)+\"l2.6,1.5l-\"+L/2+\",\"+.87*L+\"Z\",P=\"m0.87,.5h-\"+L+\"v3h\"+(L+5.2)+\"l-\"+(L/2+2.6)+\",-\"+(.87*L+4.5)+\"l-2.6,1.5l\"+L/2+\",\"+.87*L+\"Z\",I=\"m0,1l\"+L/2+\",\"+.87*L+\"l2.6,-1.5l-\"+(L/2+2.6)+\",-\"+(.87*L+4.5)+\"l-\"+(L/2+2.6)+\",\"+(.87*L+4.5)+\"l2.6,1.5l\"+L/2+\",-\"+.87*L+\"Z\",O=!0;function z(t){n.select(t).selectAll(\".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners\").remove()}S.clearSelect=function(){k(this.dragOptions),T(this.dragOptions.gd)},S.initInteractions=function(){var t,e,r,n,f,h,p,d,v,b,T,k,M=this,S=M.layers.plotbg.select(\"path\").node(),L=M.graphDiv,D=L._fullLayout._zoomlayer;function R(t){var e={};return e[M.id+\".aaxis.min\"]=t.a,e[M.id+\".baxis.min\"]=t.b,e[M.id+\".caxis.min\"]=t.c,e}function F(t,e){var r=L._fullLayout.clickmode;z(L),2===t&&(L.emit(\"plotly_doubleclick\",null),a.call(\"_guiRelayout\",L,R({a:0,b:0,c:0}))),r.indexOf(\"select\")>-1&&1===t&&w(e,L,[M.xaxis],[M.yaxis],M.id,M.dragOptions),r.indexOf(\"event\")>-1&&m.click(L,e,M.id)}function B(t,e){return 1-e/M.h}function N(t,e){return 1-(t+(M.h-e)/Math.sqrt(3))/M.w}function j(t,e){return(t-(M.h-e)/Math.sqrt(3))/M.w}function U(i,a){var o=r+i*t,s=n+a*e,l=Math.max(0,Math.min(1,B(0,n),B(0,s))),c=Math.max(0,Math.min(1,N(r,n),N(o,s))),u=Math.max(0,Math.min(1,j(r,n),j(o,s))),g=(l/2+u)*M.w,m=(1-l/2-c)*M.w,y=(g+m)/2,x=m-g,_=(1-l)*M.h,w=_-x/E;x.2?\"rgba(0,0,0,0.4)\":\"rgba(255,255,255,0.3)\").duration(200),k.transition().style(\"opacity\",1).duration(200),b=!0),L.emit(\"plotly_relayouting\",R(p))}function V(){z(L),p!==f&&(a.call(\"_guiRelayout\",L,R(p)),O&&L.data&&L._context.showTips&&(o.notifier(l(L,\"Double-click to zoom back out\"),\"long\"),O=!1))}function H(t,e){var r=t/M.xaxis._m,n=e/M.yaxis._m,i=[(p={a:f.a-n,b:f.b+(r+n)/2,c:f.c-(r-n)/2}).a,p.b,p.c].sort(o.sorterAsc),a=i.indexOf(p.a),l=i.indexOf(p.b),c=i.indexOf(p.c);i[0]<0&&(i[1]+i[0]/2<0?(i[2]+=i[0]+i[1],i[0]=i[1]=0):(i[2]+=i[0]/2,i[1]+=i[0]/2,i[0]=0),p={a:i[a],b:i[l],c:i[c]},e=(f.a-p.a)*M.yaxis._m,t=(f.c-p.c-f.b+p.b)*M.xaxis._m);var h=s(M.x0+t,M.y0+e);M.plotContainer.selectAll(\".scatterlayer,.maplayer\").attr(\"transform\",h);var d=s(-t,-e);M.clipDefRelative.select(\"path\").attr(\"transform\",d),M.aaxis.range=[p.a,M.sum-p.b-p.c],M.baxis.range=[M.sum-p.a-p.c,p.b],M.caxis.range=[M.sum-p.a-p.b,p.c],M.drawAxes(!1),M._hasClipOnAxisFalse&&M.plotContainer.select(\".scatterlayer\").selectAll(\".trace\").call(u.hideOutsideRangePoints,M),L.emit(\"plotly_relayouting\",R(p))}function q(){a.call(\"_guiRelayout\",L,R(p))}this.dragOptions={element:S,gd:L,plotinfo:{id:M.id,domain:L._fullLayout[M.id].domain,xaxis:M.xaxis,yaxis:M.yaxis},subplot:M.id,prepFn:function(a,l,u){M.dragOptions.xaxes=[M.xaxis],M.dragOptions.yaxes=[M.yaxis],t=L._fullLayout._invScaleX,e=L._fullLayout._invScaleY;var g=M.dragOptions.dragmode=L._fullLayout.dragmode;y(g)?M.dragOptions.minDrag=1:M.dragOptions.minDrag=void 0,\"zoom\"===g?(M.dragOptions.moveFn=U,M.dragOptions.clickFn=F,M.dragOptions.doneFn=V,function(t,e,a){var l=S.getBoundingClientRect();r=e-l.left,n=a-l.top,L._fullLayout._calcInverseTransform(L);var u=L._fullLayout._invTransform,g=o.apply3DTransform(u)(r,n);r=g[0],n=g[1],f={a:M.aaxis.range[0],b:M.baxis.range[1],c:M.caxis.range[1]},p=f,h=M.aaxis.range[1]-f.a,d=i(M.graphDiv._fullLayout[M.id].bgcolor).getLuminance(),v=\"M0,\"+M.h+\"L\"+M.w/2+\", 0L\"+M.w+\",\"+M.h+\"Z\",b=!1,T=D.append(\"path\").attr(\"class\",\"zoombox\").attr(\"transform\",s(M.x0,M.y0)).style({fill:d>.2?\"rgba(0,0,0,0)\":\"rgba(255,255,255,0)\",\"stroke-width\":0}).attr(\"d\",v),k=D.append(\"path\").attr(\"class\",\"zoombox-corners\").attr(\"transform\",s(M.x0,M.y0)).style({fill:c.background,stroke:c.defaultLine,\"stroke-width\":1,opacity:0}).attr(\"d\",\"M0,0Z\"),M.clearSelect(L)}(0,l,u)):\"pan\"===g?(M.dragOptions.moveFn=H,M.dragOptions.clickFn=F,M.dragOptions.doneFn=q,f={a:M.aaxis.range[0],b:M.baxis.range[1],c:M.caxis.range[1]},p=f,M.clearSelect(L)):(x(g)||y(g))&&_(a,l,u,M.dragOptions,g)}},S.onmousemove=function(t){m.hover(L,t,M.id),L._fullLayout._lasthover=S,L._fullLayout._hoversubplot=M.id},S.onmouseout=function(t){L._dragging||g.unhover(L,t)},g.init(this.dragOptions)}},{\"../../components/color\":366,\"../../components/dragelement\":385,\"../../components/dragelement/helpers\":384,\"../../components/drawing\":388,\"../../components/fx\":406,\"../../components/titles\":464,\"../../lib\":503,\"../../lib/extend\":493,\"../../registry\":638,\"../cartesian/axes\":554,\"../cartesian/constants\":561,\"../cartesian/select\":575,\"../cartesian/set_convert\":576,\"../plots\":619,\"@plotly/d3\":58,tinycolor2:312}],638:[function(t,e,r){\"use strict\";var n=t(\"./lib/loggers\"),i=t(\"./lib/noop\"),a=t(\"./lib/push_unique\"),o=t(\"./lib/is_plain_object\"),s=t(\"./lib/dom\").addStyleRule,l=t(\"./lib/extend\"),c=t(\"./plots/attributes\"),u=t(\"./plots/layout_attributes\"),f=l.extendFlat,h=l.extendDeepAll;function p(t){var e=t.name,i=t.categories,a=t.meta;if(r.modules[e])n.log(\"Type \"+e+\" already registered\");else{r.subplotsRegistry[t.basePlotModule.name]||function(t){var e=t.name;if(r.subplotsRegistry[e])return void n.log(\"Plot type \"+e+\" already registered.\");for(var i in v(t),r.subplotsRegistry[e]=t,r.componentsRegistry)b(i,t.name)}(t.basePlotModule);for(var o={},l=0;l-1&&(f[p[r]].title={text:\"\"});for(r=0;r\")?\"\":e.html(t).text()}));return e.remove(),r}(T),T=(T=T.replace(/&(?!\\w+;|\\#[0-9]+;| \\#x[0-9A-F]+;)/g,\"&\")).replace(c,\"'\"),i.isIE()&&(T=(T=(T=T.replace(/\"/gi,\"'\")).replace(/(\\('#)([^']*)('\\))/gi,'(\"#$2\")')).replace(/(\\\\')/gi,'\"')),T}},{\"../components/color\":366,\"../components/drawing\":388,\"../constants/xmlns_namespaces\":480,\"../lib\":503,\"@plotly/d3\":58}],647:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t,e){for(var r=0;rf+c||!n(u))}for(var p=0;pa))return e}return void 0!==r?r:t.dflt},r.coerceColor=function(t,e,r){return i(e).isValid()?e:void 0!==r?r:t.dflt},r.coerceEnumerated=function(t,e,r){return t.coerceNumber&&(e=+e),-1!==t.values.indexOf(e)?e:void 0!==r?r:t.dflt},r.getValue=function(t,e){var r;return Array.isArray(t)?e0?e+=r:u<0&&(e-=r)}return e}function z(t){var e=u,r=t.b,i=O(t);return n.inbox(r-e,i-e,_+(i-e)/(i-r)-1)}var D=t[f+\"a\"],R=t[h+\"a\"];g=Math.abs(D.r2c(D.range[1])-D.r2c(D.range[0]));var F=n.getDistanceFunction(i,p,d,(function(t){return(p(t)+d(t))/2}));if(n.getClosest(m,F,t),!1!==t.index&&m[t.index].p!==c){k||(L=function(t){return Math.min(A(t),t.p-y.bargroupwidth/2)},C=function(t){return Math.max(M(t),t.p+y.bargroupwidth/2)});var B=m[t.index],N=v.base?B.b+B.s:B.s;t[h+\"0\"]=t[h+\"1\"]=R.c2p(B[h],!0),t[h+\"LabelVal\"]=N;var j=y.extents[y.extents.round(B.p)];t[f+\"0\"]=D.c2p(x?L(B):j[0],!0),t[f+\"1\"]=D.c2p(x?C(B):j[1],!0);var U=void 0!==B.orig_p;return t[f+\"LabelVal\"]=U?B.orig_p:B.p,t.labelLabel=l(D,t[f+\"LabelVal\"],v[f+\"hoverformat\"]),t.valueLabel=l(R,t[h+\"LabelVal\"],v[h+\"hoverformat\"]),t.baseLabel=l(R,B.b,v[h+\"hoverformat\"]),t.spikeDistance=(function(t){var e=u,r=t.b,i=O(t);return n.inbox(r-e,i-e,w+(i-e)/(i-r)-1)}(B)+function(t){return P(A(t),M(t),w)}(B))/2,t[f+\"Spike\"]=D.c2p(B.p,!0),o(B,v,t),t.hovertemplate=v.hovertemplate,t}}function f(t,e){var r=e.mcc||t.marker.color,n=e.mlcc||t.marker.line.color,i=s(t,e);return a.opacity(r)?r:a.opacity(n)&&i?n:void 0}e.exports={hoverPoints:function(t,e,r,n,a){var o=u(t,e,r,n,a);if(o){var s=o.cd,l=s[0].trace,c=s[o.index];return o.color=f(l,c),i.getComponentMethod(\"errorbars\",\"hoverInfo\")(c,l,o),[o]}},hoverOnBars:u,getTraceColor:f}},{\"../../components/color\":366,\"../../components/fx\":406,\"../../constants/numerical\":479,\"../../lib\":503,\"../../plots/cartesian/axes\":554,\"../../registry\":638,\"./helpers\":654}],656:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\").supplyDefaults,crossTraceDefaults:t(\"./defaults\").crossTraceDefaults,supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\"),crossTraceCalc:t(\"./cross_trace_calc\").crossTraceCalc,colorbar:t(\"../scatter/marker_colorbar\"),arraysToCalcdata:t(\"./arrays_to_calcdata\"),plot:t(\"./plot\").plot,style:t(\"./style\").style,styleOnSelect:t(\"./style\").styleOnSelect,hoverPoints:t(\"./hover\").hoverPoints,eventData:t(\"./event_data\"),selectPoints:t(\"./select\"),moduleType:\"trace\",name:\"bar\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"bar-like\",\"cartesian\",\"svg\",\"bar\",\"oriented\",\"errorBarsOK\",\"showLegend\",\"zoomScale\"],animatable:!0,meta:{}}},{\"../../plots/cartesian\":568,\"../scatter/marker_colorbar\":944,\"./arrays_to_calcdata\":647,\"./attributes\":648,\"./calc\":649,\"./cross_trace_calc\":651,\"./defaults\":652,\"./event_data\":653,\"./hover\":655,\"./layout_attributes\":657,\"./layout_defaults\":658,\"./plot\":659,\"./select\":660,\"./style\":662}],657:[function(t,e,r){\"use strict\";e.exports={barmode:{valType:\"enumerated\",values:[\"stack\",\"group\",\"overlay\",\"relative\"],dflt:\"group\",editType:\"calc\"},barnorm:{valType:\"enumerated\",values:[\"\",\"fraction\",\"percent\"],dflt:\"\",editType:\"calc\"},bargap:{valType:\"number\",min:0,max:1,editType:\"calc\"},bargroupgap:{valType:\"number\",min:0,max:1,dflt:0,editType:\"calc\"}}},{}],658:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"../../lib\"),o=t(\"./layout_attributes\");e.exports=function(t,e,r){function s(r,n){return a.coerce(t,e,o,r,n)}for(var l=!1,c=!1,u=!1,f={},h=s(\"barmode\"),p=0;p0}function S(t){return\"auto\"===t?0:t}function E(t,e){var r=Math.PI/180*e,n=Math.abs(Math.sin(r)),i=Math.abs(Math.cos(r));return{x:t.width*i+t.height*n,y:t.width*n+t.height*i}}function L(t,e,r,n,i,a){var o=!!a.isHorizontal,s=!!a.constrained,l=a.angle||0,c=a.anchor||\"end\",u=\"end\"===c,f=\"start\"===c,h=((a.leftToRight||0)+1)/2,p=1-h,d=i.width,g=i.height,m=Math.abs(e-t),v=Math.abs(n-r),y=m>2*_&&v>2*_?_:0;m-=2*y,v-=2*y;var x=S(l);\"auto\"!==l||d<=m&&g<=v||!(d>m||g>v)||(d>v||g>m)&&d.01?q:function(t,e,r){return r&&t===e?t:Math.abs(t-e)>=2?q(t):t>e?Math.ceil(t):Math.floor(t)};B=G(B,N,D),N=G(N,B,D),j=G(j,U,!D),U=G(U,j,!D)}var Y=A(a.ensureSingle(I,\"path\"),P,m,v);if(Y.style(\"vector-effect\",\"non-scaling-stroke\").attr(\"d\",isNaN((N-B)*(U-j))||V&&t._context.staticPlot?\"M0,0Z\":\"M\"+B+\",\"+j+\"V\"+U+\"H\"+N+\"V\"+j+\"Z\").call(l.setClipUrl,e.layerClipId,t),!P.uniformtext.mode&&R){var W=l.makePointStyleFns(f);l.singlePointStyle(c,Y,f,W,t)}!function(t,e,r,n,i,s,c,f,p,m,v){var w,T=e.xaxis,M=e.yaxis,C=t._fullLayout;function P(e,r,n){return a.ensureSingle(e,\"text\").text(r).attr({class:\"bartext bartext-\"+w,\"text-anchor\":\"middle\",\"data-notex\":1}).call(l.font,n).call(o.convertToTspans,t)}var I=n[0].trace,O=\"h\"===I.orientation,z=function(t,e,r,n,i){var o,s=e[0].trace;o=s.texttemplate?function(t,e,r,n,i){var o=e[0].trace,s=a.castOption(o,r,\"texttemplate\");if(!s)return\"\";var l,c,f,h,p=\"histogram\"===o.type,d=\"waterfall\"===o.type,g=\"funnel\"===o.type,m=\"h\"===o.orientation;m?(l=\"y\",c=i,f=\"x\",h=n):(l=\"x\",c=n,f=\"y\",h=i);function v(t){return u(h,h.c2l(t),!0).text}var y=e[r],x={};x.label=y.p,x.labelLabel=x[l+\"Label\"]=(_=y.p,u(c,c.c2l(_),!0).text);var _;var w=a.castOption(o,y.i,\"text\");(0===w||w)&&(x.text=w);x.value=y.s,x.valueLabel=x[f+\"Label\"]=v(y.s);var T={};b(T,o,y.i),(p||void 0===T.x)&&(T.x=m?x.value:x.label);(p||void 0===T.y)&&(T.y=m?x.label:x.value);(p||void 0===T.xLabel)&&(T.xLabel=m?x.valueLabel:x.labelLabel);(p||void 0===T.yLabel)&&(T.yLabel=m?x.labelLabel:x.valueLabel);d&&(x.delta=+y.rawS||y.s,x.deltaLabel=v(x.delta),x.final=y.v,x.finalLabel=v(x.final),x.initial=x.final-x.delta,x.initialLabel=v(x.initial));g&&(x.value=y.s,x.valueLabel=v(x.value),x.percentInitial=y.begR,x.percentInitialLabel=a.formatPercent(y.begR),x.percentPrevious=y.difR,x.percentPreviousLabel=a.formatPercent(y.difR),x.percentTotal=y.sumR,x.percenTotalLabel=a.formatPercent(y.sumR));var k=a.castOption(o,y.i,\"customdata\");k&&(x.customdata=k);return a.texttemplateString(s,x,t._d3locale,T,x,o._meta||{})}(t,e,r,n,i):s.textinfo?function(t,e,r,n){var i=t[0].trace,o=\"h\"===i.orientation,s=\"waterfall\"===i.type,l=\"funnel\"===i.type;function c(t){return u(o?r:n,+t,!0).text}var f,h=i.textinfo,p=t[e],d=h.split(\"+\"),g=[],m=function(t){return-1!==d.indexOf(t)};m(\"label\")&&g.push((v=t[e].p,u(o?n:r,v,!0).text));var v;m(\"text\")&&(0===(f=a.castOption(i,p.i,\"text\"))||f)&&g.push(f);if(s){var y=+p.rawS||p.s,x=p.v,b=x-y;m(\"initial\")&&g.push(c(b)),m(\"delta\")&&g.push(c(y)),m(\"final\")&&g.push(c(x))}if(l){m(\"value\")&&g.push(c(p.s));var _=0;m(\"percent initial\")&&_++,m(\"percent previous\")&&_++,m(\"percent total\")&&_++;var w=_>1;m(\"percent initial\")&&(f=a.formatPercent(p.begR),w&&(f+=\" of initial\"),g.push(f)),m(\"percent previous\")&&(f=a.formatPercent(p.difR),w&&(f+=\" of previous\"),g.push(f)),m(\"percent total\")&&(f=a.formatPercent(p.sumR),w&&(f+=\" of total\"),g.push(f))}return g.join(\"
\")}(e,r,n,i):g.getValue(s.text,r);return g.coerceString(y,o)}(C,n,i,T,M);w=function(t,e){var r=g.getValue(t.textposition,e);return g.coerceEnumerated(x,r)}(I,i);var D=\"stack\"===m.mode||\"relative\"===m.mode,R=n[i],F=!D||R._outmost;if(!z||\"none\"===w||(R.isBlank||s===c||f===p)&&(\"auto\"===w||\"inside\"===w))return void r.select(\"text\").remove();var B=C.font,N=d.getBarColor(n[i],I),j=d.getInsideTextFont(I,i,B,N),U=d.getOutsideTextFont(I,i,B),V=r.datum();O?\"log\"===T.type&&V.s0<=0&&(s=T.range[0]=G*(Z/Y):Z>=Y*(X/G);G>0&&Y>0&&(J||K||Q)?w=\"inside\":(w=\"outside\",H.remove(),H=null)}else w=\"inside\";if(!H){W=a.ensureUniformFontSize(t,\"outside\"===w?U:j);var $=(H=P(r,z,W)).attr(\"transform\");if(H.attr(\"transform\",\"\"),q=l.bBox(H.node()),G=q.width,Y=q.height,H.attr(\"transform\",$),G<=0||Y<=0)return void H.remove()}var tt,et,rt=I.textangle;\"outside\"===w?(et=\"both\"===I.constraintext||\"outside\"===I.constraintext,tt=function(t,e,r,n,i,a){var o,s=!!a.isHorizontal,l=!!a.constrained,c=a.angle||0,u=i.width,f=i.height,h=Math.abs(e-t),p=Math.abs(n-r);o=s?p>2*_?_:0:h>2*_?_:0;var d=1;l&&(d=s?Math.min(1,p/f):Math.min(1,h/u));var g=S(c),m=E(i,g),v=(s?m.x:m.y)/2,y=(i.left+i.right)/2,x=(i.top+i.bottom)/2,b=(t+e)/2,w=(r+n)/2,T=0,A=0,M=s?k(e,t):k(r,n);s?(b=e-M*o,T=M*v):(w=n+M*o,A=-M*v);return{textX:y,textY:x,targetX:b,targetY:w,anchorX:T,anchorY:A,scale:d,rotate:g}}(s,c,f,p,q,{isHorizontal:O,constrained:et,angle:rt})):(et=\"both\"===I.constraintext||\"inside\"===I.constraintext,tt=L(s,c,f,p,q,{isHorizontal:O,constrained:et,angle:rt,anchor:I.insidetextanchor}));tt.fontSize=W.size,h(\"histogram\"===I.type?\"bar\":I.type,tt,C),R.transform=tt,A(H,C,m,v).attr(\"transform\",a.getTextTransform(tt))}(t,e,I,r,p,B,N,j,U,m,v),e.layerClipId&&l.hideOutsideRangePoint(c,I.select(\"text\"),w,C,f.xcalendar,f.ycalendar)}));var j=!1===f.cliponaxis;l.setClipUrl(c,j?null:e.layerClipId,t)}));c.getComponentMethod(\"errorbars\",\"plot\")(t,I,e,m)},toMoveInsideBar:L}},{\"../../components/color\":366,\"../../components/drawing\":388,\"../../components/fx/helpers\":402,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../../plots/cartesian/axes\":554,\"../../registry\":638,\"./attributes\":648,\"./constants\":650,\"./helpers\":654,\"./style\":662,\"./uniform_text\":664,\"@plotly/d3\":58,\"fast-isnumeric\":190}],660:[function(t,e,r){\"use strict\";function n(t,e,r,n,i){var a=e.c2p(n?t.s0:t.p0,!0),o=e.c2p(n?t.s1:t.p1,!0),s=r.c2p(n?t.p0:t.s0,!0),l=r.c2p(n?t.p1:t.s1,!0);return i?[(a+o)/2,(s+l)/2]:n?[o,(s+l)/2]:[(a+o)/2,l]}e.exports=function(t,e){var r,i=t.cd,a=t.xaxis,o=t.yaxis,s=i[0].trace,l=\"funnel\"===s.type,c=\"h\"===s.orientation,u=[];if(!1===e)for(r=0;r1||0===i.bargap&&0===i.bargroupgap&&!t[0].trace.marker.line.width)&&n.select(this).attr(\"shape-rendering\",\"crispEdges\")})),e.selectAll(\"g.points\").each((function(e){d(n.select(this),e[0].trace,t)})),s.getComponentMethod(\"errorbars\",\"style\")(e)},styleTextPoints:g,styleOnSelect:function(t,e,r){var i=e[0].trace;i.selectedpoints?function(t,e,r){a.selectedPointStyle(t.selectAll(\"path\"),e),function(t,e,r){t.each((function(t){var i,s=n.select(this);if(t.selected){i=o.ensureUniformFontSize(r,m(s,t,e,r));var l=e.selected.textfont&&e.selected.textfont.color;l&&(i.color=l),a.font(s,i)}else a.selectedTextStyle(s,e)}))}(t.selectAll(\"text\"),e,r)}(r,i,t):(d(r,i,t),s.getComponentMethod(\"errorbars\",\"style\")(r))},getInsideTextFont:y,getOutsideTextFont:x,getBarColor:_,resizeText:l}},{\"../../components/color\":366,\"../../components/drawing\":388,\"../../lib\":503,\"../../registry\":638,\"./attributes\":648,\"./helpers\":654,\"./uniform_text\":664,\"@plotly/d3\":58}],663:[function(t,e,r){\"use strict\";var n=t(\"../../components/color\"),i=t(\"../../components/colorscale/helpers\").hasColorscale,a=t(\"../../components/colorscale/defaults\"),o=t(\"../../lib\").coercePattern;e.exports=function(t,e,r,s,l){var c=r(\"marker.color\",s),u=i(t,\"marker\");u&&a(t,e,l,r,{prefix:\"marker.\",cLetter:\"c\"}),r(\"marker.line.color\",n.defaultLine),i(t,\"marker.line\")&&a(t,e,l,r,{prefix:\"marker.line.\",cLetter:\"c\"}),r(\"marker.line.width\"),r(\"marker.opacity\"),o(r,\"marker.pattern\",c,u),r(\"selected.marker.color\"),r(\"unselected.marker.color\")}},{\"../../components/color\":366,\"../../components/colorscale/defaults\":376,\"../../components/colorscale/helpers\":377,\"../../lib\":503}],664:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\");function a(t){return\"_\"+t+\"Text_minsize\"}e.exports={recordMinTextSize:function(t,e,r){if(r.uniformtext.mode){var n=a(t),i=r.uniformtext.minsize,o=e.scale*e.fontSize;e.hide=o g.point\"}e.selectAll(s).each((function(t){var e=t.transform;e&&(e.scale=l&&e.hide?0:o/e.fontSize,n.select(this).select(\"text\").attr(\"transform\",i.getTextTransform(e)))}))}}}},{\"../../lib\":503,\"@plotly/d3\":58}],665:[function(t,e,r){\"use strict\";var n=t(\"../../plots/template_attributes\").hovertemplateAttrs,i=t(\"../../lib/extend\").extendFlat,a=t(\"../scatterpolar/attributes\"),o=t(\"../bar/attributes\");e.exports={r:a.r,theta:a.theta,r0:a.r0,dr:a.dr,theta0:a.theta0,dtheta:a.dtheta,thetaunit:a.thetaunit,base:i({},o.base,{}),offset:i({},o.offset,{}),width:i({},o.width,{}),text:i({},o.text,{}),hovertext:i({},o.hovertext,{}),marker:o.marker,hoverinfo:a.hoverinfo,hovertemplate:n(),selected:o.selected,unselected:o.unselected}},{\"../../lib/extend\":493,\"../../plots/template_attributes\":633,\"../bar/attributes\":648,\"../scatterpolar/attributes\":1e3}],666:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/helpers\").hasColorscale,i=t(\"../../components/colorscale/calc\"),a=t(\"../bar/arrays_to_calcdata\"),o=t(\"../bar/cross_trace_calc\").setGroupPositions,s=t(\"../scatter/calc_selection\"),l=t(\"../../registry\").traceIs,c=t(\"../../lib\").extendFlat;e.exports={calc:function(t,e){for(var r=t._fullLayout,o=e.subplot,l=r[o].radialaxis,c=r[o].angularaxis,u=l.makeCalcdata(e,\"r\"),f=c.makeCalcdata(e,\"theta\"),h=e._length,p=new Array(h),d=u,g=f,m=0;mh.range[1]&&(x+=Math.PI);if(n.getClosest(c,(function(t){return g(y,x,[t.rp0,t.rp1],[t.thetag0,t.thetag1],d)?m+Math.min(1,Math.abs(t.thetag1-t.thetag0)/v)-1+(t.rp1-y)/(t.rp1-t.rp0)-1:1/0}),t),!1!==t.index){var b=c[t.index];t.x0=t.x1=b.ct[0],t.y0=t.y1=b.ct[1];var _=i.extendFlat({},b,{r:b.s,theta:b.p});return o(b,u,t),s(_,u,f,t),t.hovertemplate=u.hovertemplate,t.color=a(u,b),t.xLabelVal=t.yLabelVal=void 0,b.s<0&&(t.idealAlign=\"left\"),[t]}}},{\"../../components/fx\":406,\"../../lib\":503,\"../../plots/polar/helpers\":621,\"../bar/hover\":655,\"../scatterpolar/hover\":1004}],669:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"barpolar\",basePlotModule:t(\"../../plots/polar\"),categories:[\"polar\",\"bar\",\"showLegend\"],attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\"),supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\").calc,crossTraceCalc:t(\"./calc\").crossTraceCalc,plot:t(\"./plot\"),colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"../scatterpolar/format_labels\"),style:t(\"../bar/style\").style,styleOnSelect:t(\"../bar/style\").styleOnSelect,hoverPoints:t(\"./hover\"),selectPoints:t(\"../bar/select\"),meta:{}}},{\"../../plots/polar\":622,\"../bar/select\":660,\"../bar/style\":662,\"../scatter/marker_colorbar\":944,\"../scatterpolar/format_labels\":1003,\"./attributes\":665,\"./calc\":666,\"./defaults\":667,\"./hover\":668,\"./layout_attributes\":670,\"./layout_defaults\":671,\"./plot\":672}],670:[function(t,e,r){\"use strict\";e.exports={barmode:{valType:\"enumerated\",values:[\"stack\",\"overlay\"],dflt:\"stack\",editType:\"calc\"},bargap:{valType:\"number\",dflt:.1,min:0,max:1,editType:\"calc\"}}},{}],671:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e,r){var a,o={};function s(r,o){return n.coerce(t[a]||{},e[a],i,r,o)}for(var l=0;l0?(c=o,u=l):(c=l,u=o);var f=[s.findEnclosingVertexAngles(c,t.vangles)[0],(c+u)/2,s.findEnclosingVertexAngles(u,t.vangles)[1]];return s.pathPolygonAnnulus(n,i,c,u,f,e,r)};return function(t,n,i,o){return a.pathAnnulus(t,n,i,o,e,r)}}(e),p=e.layers.frontplot.select(\"g.barlayer\");a.makeTraceGroups(p,r,\"trace bars\").each((function(){var r=n.select(this),s=a.ensureSingle(r,\"g\",\"points\").selectAll(\"g.point\").data(a.identity);s.enter().append(\"g\").style(\"vector-effect\",\"non-scaling-stroke\").style(\"stroke-miterlimit\",2).classed(\"point\",!0),s.exit().remove(),s.each((function(t){var e,r=n.select(this),o=t.rp0=u.c2p(t.s0),s=t.rp1=u.c2p(t.s1),p=t.thetag0=f.c2g(t.p0),d=t.thetag1=f.c2g(t.p1);if(i(o)&&i(s)&&i(p)&&i(d)&&o!==s&&p!==d){var g=u.c2g(t.s1),m=(p+d)/2;t.ct=[l.c2p(g*Math.cos(m)),c.c2p(g*Math.sin(m))],e=h(o,s,p,d)}else e=\"M0,0Z\";a.ensureSingle(r,\"path\").attr(\"d\",e)})),o.setClipUrl(r,e._hasClipOnAxisFalse?e.clipIds.forTraces:null,t)}))}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../plots/polar/helpers\":621,\"@plotly/d3\":58,\"fast-isnumeric\":190}],673:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\"),i=t(\"../bar/attributes\"),a=t(\"../../components/color/attributes\"),o=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,s=t(\"../../plots/template_attributes\").hovertemplateAttrs,l=t(\"../../lib/extend\").extendFlat,c=n.marker,u=c.line;e.exports={y:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},x:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},x0:{valType:\"any\",editType:\"calc+clearAxisTypes\"},y0:{valType:\"any\",editType:\"calc+clearAxisTypes\"},dx:{valType:\"number\",editType:\"calc\"},dy:{valType:\"number\",editType:\"calc\"},xperiod:n.xperiod,yperiod:n.yperiod,xperiod0:n.xperiod0,yperiod0:n.yperiod0,xperiodalignment:n.xperiodalignment,yperiodalignment:n.yperiodalignment,xhoverformat:o(\"x\"),yhoverformat:o(\"y\"),name:{valType:\"string\",editType:\"calc+clearAxisTypes\"},q1:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},median:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},q3:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},lowerfence:{valType:\"data_array\",editType:\"calc\"},upperfence:{valType:\"data_array\",editType:\"calc\"},notched:{valType:\"boolean\",editType:\"calc\"},notchwidth:{valType:\"number\",min:0,max:.5,dflt:.25,editType:\"calc\"},notchspan:{valType:\"data_array\",editType:\"calc\"},boxpoints:{valType:\"enumerated\",values:[\"all\",\"outliers\",\"suspectedoutliers\",!1],editType:\"calc\"},jitter:{valType:\"number\",min:0,max:1,editType:\"calc\"},pointpos:{valType:\"number\",min:-2,max:2,editType:\"calc\"},boxmean:{valType:\"enumerated\",values:[!0,\"sd\",!1],editType:\"calc\"},mean:{valType:\"data_array\",editType:\"calc\"},sd:{valType:\"data_array\",editType:\"calc\"},orientation:{valType:\"enumerated\",values:[\"v\",\"h\"],editType:\"calc+clearAxisTypes\"},quartilemethod:{valType:\"enumerated\",values:[\"linear\",\"exclusive\",\"inclusive\"],dflt:\"linear\",editType:\"calc\"},width:{valType:\"number\",min:0,dflt:0,editType:\"calc\"},marker:{outliercolor:{valType:\"color\",dflt:\"rgba(0, 0, 0, 0)\",editType:\"style\"},symbol:l({},c.symbol,{arrayOk:!1,editType:\"plot\"}),opacity:l({},c.opacity,{arrayOk:!1,dflt:1,editType:\"style\"}),size:l({},c.size,{arrayOk:!1,editType:\"calc\"}),color:l({},c.color,{arrayOk:!1,editType:\"style\"}),line:{color:l({},u.color,{arrayOk:!1,dflt:a.defaultLine,editType:\"style\"}),width:l({},u.width,{arrayOk:!1,dflt:0,editType:\"style\"}),outliercolor:{valType:\"color\",editType:\"style\"},outlierwidth:{valType:\"number\",min:0,dflt:1,editType:\"style\"},editType:\"style\"},editType:\"plot\"},line:{color:{valType:\"color\",editType:\"style\"},width:{valType:\"number\",min:0,dflt:2,editType:\"style\"},editType:\"plot\"},fillcolor:n.fillcolor,whiskerwidth:{valType:\"number\",min:0,max:1,dflt:.5,editType:\"calc\"},offsetgroup:i.offsetgroup,alignmentgroup:i.alignmentgroup,selected:{marker:n.selected.marker,editType:\"style\"},unselected:{marker:n.unselected.marker,editType:\"style\"},text:l({},n.text,{}),hovertext:l({},n.hovertext,{}),hovertemplate:s({}),hoveron:{valType:\"flaglist\",flags:[\"boxes\",\"points\"],dflt:\"boxes+points\",editType:\"style\"}}},{\"../../components/color/attributes\":365,\"../../lib/extend\":493,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/template_attributes\":633,\"../bar/attributes\":648,\"../scatter/attributes\":926}],674:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"../../plots/cartesian/align_period\"),o=t(\"../../lib\"),s=t(\"../../constants/numerical\").BADNUM,l=o._;e.exports=function(t,e){var r,c,y,x,b,_,w,T=t._fullLayout,k=i.getFromId(t,e.xaxis||\"x\"),A=i.getFromId(t,e.yaxis||\"y\"),M=[],S=\"violin\"===e.type?\"_numViolins\":\"_numBoxes\";\"h\"===e.orientation?(y=k,x=\"x\",b=A,_=\"y\",w=!!e.yperiodalignment):(y=A,x=\"y\",b=k,_=\"x\",w=!!e.xperiodalignment);var E,L,C,P,I,O,z=function(t,e,r,i){var s,l=e+\"0\"in t,c=\"d\"+e in t;if(e in t||l&&c){var u=r.makeCalcdata(t,e);return[a(t,r,e,u).vals,u]}s=l?t[e+\"0\"]:\"name\"in t&&(\"category\"===r.type||n(t.name)&&-1!==[\"linear\",\"log\"].indexOf(r.type)||o.isDateTime(t.name)&&\"date\"===r.type)?t.name:i;for(var f=\"multicategory\"===r.type?r.r2c_just_indices(s):r.d2c(s,0,t[e+\"calendar\"]),h=t._length,p=new Array(h),d=0;dE.uf};if(e._hasPreCompStats){var U=e[x],V=function(t){return y.d2c((e[t]||[])[r])},H=1/0,q=-1/0;for(r=0;r=E.q1&&E.q3>=E.med){var Y=V(\"lowerfence\");E.lf=Y!==s&&Y<=E.q1?Y:p(E,C,P);var W=V(\"upperfence\");E.uf=W!==s&&W>=E.q3?W:d(E,C,P);var X=V(\"mean\");E.mean=X!==s?X:P?o.mean(C,P):(E.q1+E.q3)/2;var Z=V(\"sd\");E.sd=X!==s&&Z>=0?Z:P?o.stdev(C,P,E.mean):E.q3-E.q1,E.lo=g(E),E.uo=m(E);var J=V(\"notchspan\");J=J!==s&&J>0?J:v(E,P),E.ln=E.med-J,E.un=E.med+J;var K=E.lf,Q=E.uf;e.boxpoints&&C.length&&(K=Math.min(K,C[0]),Q=Math.max(Q,C[P-1])),e.notched&&(K=Math.min(K,E.ln),Q=Math.max(Q,E.un)),E.min=K,E.max=Q}else{var $;o.warn([\"Invalid input - make sure that q1 <= median <= q3\",\"q1 = \"+E.q1,\"median = \"+E.med,\"q3 = \"+E.q3].join(\"\\n\")),$=E.med!==s?E.med:E.q1!==s?E.q3!==s?(E.q1+E.q3)/2:E.q1:E.q3!==s?E.q3:0,E.med=$,E.q1=E.q3=$,E.lf=E.uf=$,E.mean=E.sd=$,E.ln=E.un=$,E.min=E.max=$}H=Math.min(H,E.min),q=Math.max(q,E.max),E.pts2=L.filter(j),M.push(E)}}e._extremes[y._id]=i.findExtremes(y,[H,q],{padded:!0})}else{var tt=y.makeCalcdata(e,x),et=function(t,e){for(var r=t.length,n=new Array(r+1),i=0;i=0&&it0){var ut,ft;if((E={}).pos=E[_]=B[r],L=E.pts=nt[r].sort(f),P=(C=E[x]=L.map(h)).length,E.min=C[0],E.max=C[P-1],E.mean=o.mean(C,P),E.sd=o.stdev(C,P,E.mean),E.med=o.interp(C,.5),P%2&&(lt||ct))lt?(ut=C.slice(0,P/2),ft=C.slice(P/2+1)):ct&&(ut=C.slice(0,P/2+1),ft=C.slice(P/2)),E.q1=o.interp(ut,.5),E.q3=o.interp(ft,.5);else E.q1=o.interp(C,.25),E.q3=o.interp(C,.75);E.lf=p(E,C,P),E.uf=d(E,C,P),E.lo=g(E),E.uo=m(E);var ht=v(E,P);E.ln=E.med-ht,E.un=E.med+ht,at=Math.min(at,E.ln),ot=Math.max(ot,E.un),E.pts2=L.filter(j),M.push(E)}e._extremes[y._id]=i.findExtremes(y,e.notched?tt.concat([at,ot]):tt,{padded:!0})}return function(t,e){if(o.isArrayOrTypedArray(e.selectedpoints))for(var r=0;r0?(M[0].t={num:T[S],dPos:N,posLetter:_,valLetter:x,labels:{med:l(t,\"median:\"),min:l(t,\"min:\"),q1:l(t,\"q1:\"),q3:l(t,\"q3:\"),max:l(t,\"max:\"),mean:\"sd\"===e.boxmean?l(t,\"mean \\xb1 \\u03c3:\"):l(t,\"mean:\"),lf:l(t,\"lower fence:\"),uf:l(t,\"upper fence:\")}},T[S]++,M):[{t:{empty:!0}}]};var c={text:\"tx\",hovertext:\"htx\"};function u(t,e,r){for(var n in c)o.isArrayOrTypedArray(e[n])&&(Array.isArray(r)?o.isArrayOrTypedArray(e[n][r[0]])&&(t[c[n]]=e[n][r[0]][r[1]]):t[c[n]]=e[n][r])}function f(t,e){return t.v-e.v}function h(t){return t.v}function p(t,e,r){return 0===r?t.q1:Math.min(t.q1,e[Math.min(o.findBin(2.5*t.q1-1.5*t.q3,e,!0)+1,r-1)])}function d(t,e,r){return 0===r?t.q3:Math.max(t.q3,e[Math.max(o.findBin(2.5*t.q3-1.5*t.q1,e),0)])}function g(t){return 4*t.q1-3*t.q3}function m(t){return 4*t.q3-3*t.q1}function v(t,e){return 0===e?0:1.57*(t.q3-t.q1)/Math.sqrt(e)}},{\"../../constants/numerical\":479,\"../../lib\":503,\"../../plots/cartesian/align_period\":551,\"../../plots/cartesian/axes\":554,\"fast-isnumeric\":190}],675:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/axes\"),i=t(\"../../lib\"),a=t(\"../../plots/cartesian/constraints\").getAxisGroup,o=[\"v\",\"h\"];function s(t,e,r,o){var s,l,c,u=e.calcdata,f=e._fullLayout,h=o._id,p=h.charAt(0),d=[],g=0;for(s=0;s1,b=1-f[t+\"gap\"],_=1-f[t+\"groupgap\"];for(s=0;s0){var q=E.pointpos,G=E.jitter,Y=E.marker.size/2,W=0;q+G>=0&&((W=V*(q+G))>M?(H=!0,j=Y,B=W):W>R&&(j=Y,B=M)),W<=M&&(B=M);var X=0;q-G<=0&&((X=-V*(q-G))>S?(H=!0,U=Y,N=X):X>F&&(U=Y,N=S)),X<=S&&(N=S)}else B=M,N=S;var Z=new Array(c.length);for(l=0;l0?(m=\"v\",v=x>0?Math.min(_,b):Math.min(b)):x>0?(m=\"h\",v=Math.min(_)):v=0;if(v){e._length=v;var S=r(\"orientation\",m);e._hasPreCompStats?\"v\"===S&&0===x?(r(\"x0\",0),r(\"dx\",1)):\"h\"===S&&0===y&&(r(\"y0\",0),r(\"dy\",1)):\"v\"===S&&0===x?r(\"x0\"):\"h\"===S&&0===y&&r(\"y0\"),i.getComponentMethod(\"calendars\",\"handleTraceDefaults\")(t,e,[\"x\",\"y\"],a)}else e.visible=!1}function f(t,e,r,i){var a=i.prefix,o=n.coerce2(t,e,c,\"marker.outliercolor\"),s=r(\"marker.line.outliercolor\"),l=\"outliers\";e._hasPreCompStats?l=\"all\":(o||s)&&(l=\"suspectedoutliers\");var u=r(a+\"points\",l);u?(r(\"jitter\",\"all\"===u?.3:0),r(\"pointpos\",\"all\"===u?-1.5:0),r(\"marker.symbol\"),r(\"marker.opacity\"),r(\"marker.size\"),r(\"marker.color\",e.line.color),r(\"marker.line.color\"),r(\"marker.line.width\"),\"suspectedoutliers\"===u&&(r(\"marker.line.outliercolor\",e.marker.color),r(\"marker.line.outlierwidth\")),r(\"selected.marker.color\"),r(\"unselected.marker.color\"),r(\"selected.marker.size\"),r(\"unselected.marker.size\"),r(\"text\"),r(\"hovertext\")):delete e.marker;var f=r(\"hoveron\");\"all\"!==f&&-1===f.indexOf(\"points\")||r(\"hovertemplate\"),n.coerceSelectionMarkerOpacity(e,r)}e.exports={supplyDefaults:function(t,e,r,i){function s(r,i){return n.coerce(t,e,c,r,i)}if(u(t,e,s,i),!1!==e.visible){o(t,e,i,s),s(\"xhoverformat\"),s(\"yhoverformat\");var l=e._hasPreCompStats;l&&(s(\"lowerfence\"),s(\"upperfence\")),s(\"line.color\",(t.marker||{}).color||r),s(\"line.width\"),s(\"fillcolor\",a.addOpacity(e.line.color,.5));var h=!1;if(l){var p=s(\"mean\"),d=s(\"sd\");p&&p.length&&(h=!0,d&&d.length&&(h=\"sd\"))}s(\"boxmean\",h),s(\"whiskerwidth\"),s(\"width\"),s(\"quartilemethod\");var g=!1;if(l){var m=s(\"notchspan\");m&&m.length&&(g=!0)}else n.validate(t.notchwidth,c.notchwidth)&&(g=!0);s(\"notched\",g)&&s(\"notchwidth\"),f(t,e,s,{prefix:\"box\"})}},crossTraceDefaults:function(t,e){var r,i;function a(t){return n.coerce(i._input,i,c,t)}for(var o=0;ot.lo&&(x.so=!0)}return a}));h.enter().append(\"path\").classed(\"point\",!0),h.exit().remove(),h.call(a.translatePoints,o,s)}function l(t,e,r,a){var o,s,l=e.val,c=e.pos,u=!!c.rangebreaks,f=a.bPos,h=a.bPosPxOffset||0,p=r.boxmean||(r.meanline||{}).visible;Array.isArray(a.bdPos)?(o=a.bdPos[0],s=a.bdPos[1]):(o=a.bdPos,s=a.bdPos);var d=t.selectAll(\"path.mean\").data(\"box\"===r.type&&r.boxmean||\"violin\"===r.type&&r.box.visible&&r.meanline.visible?i.identity:[]);d.enter().append(\"path\").attr(\"class\",\"mean\").style({fill:\"none\",\"vector-effect\":\"non-scaling-stroke\"}),d.exit().remove(),d.each((function(t){var e=c.c2l(t.pos+f,!0),i=c.l2p(e-o)+h,a=c.l2p(e+s)+h,d=u?(i+a)/2:c.l2p(e)+h,g=l.c2p(t.mean,!0),m=l.c2p(t.mean-t.sd,!0),v=l.c2p(t.mean+t.sd,!0);\"h\"===r.orientation?n.select(this).attr(\"d\",\"M\"+g+\",\"+i+\"V\"+a+(\"sd\"===p?\"m0,0L\"+m+\",\"+d+\"L\"+g+\",\"+i+\"L\"+v+\",\"+d+\"Z\":\"\")):n.select(this).attr(\"d\",\"M\"+i+\",\"+g+\"H\"+a+(\"sd\"===p?\"m0,0L\"+d+\",\"+m+\"L\"+i+\",\"+g+\"L\"+d+\",\"+v+\"Z\":\"\"))}))}e.exports={plot:function(t,e,r,a){var c=e.xaxis,u=e.yaxis;i.makeTraceGroups(a,r,\"trace boxes\").each((function(t){var e,r,i=n.select(this),a=t[0],f=a.t,h=a.trace;(f.wdPos=f.bdPos*h.whiskerwidth,!0!==h.visible||f.empty)?i.remove():(\"h\"===h.orientation?(e=u,r=c):(e=c,r=u),o(i,{pos:e,val:r},h,f),s(i,{x:c,y:u},h,f),l(i,{pos:e,val:r},h,f))}))},plotBoxAndWhiskers:o,plotPoints:s,plotBoxMean:l}},{\"../../components/drawing\":388,\"../../lib\":503,\"@plotly/d3\":58}],683:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r,n,i=t.cd,a=t.xaxis,o=t.yaxis,s=[];if(!1===e)for(r=0;r=10)return null;for(var i=1/0,a=-1/0,o=e.length,s=0;s0?Math.floor:Math.ceil,I=L>0?Math.ceil:Math.floor,O=L>0?Math.min:Math.max,z=L>0?Math.max:Math.min,D=P(S+C),R=I(E-C),F=[[f=M(S)]];for(a=D;a*L=0;i--)a[u-i]=t[f][i],o[u-i]=e[f][i];for(s.push({x:a,y:o,bicubic:l}),i=f,a=[],o=[];i>=0;i--)a[f-i]=t[i][0],o[f-i]=e[i][0];return s.push({x:a,y:o,bicubic:c}),s}},{}],697:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/axes\"),i=t(\"../../lib/extend\").extendFlat;e.exports=function(t,e,r){var a,o,s,l,c,u,f,h,p,d,g,m,v,y,x=t[\"_\"+e],b=t[e+\"axis\"],_=b._gridlines=[],w=b._minorgridlines=[],T=b._boundarylines=[],k=t[\"_\"+r],A=t[r+\"axis\"];\"array\"===b.tickmode&&(b.tickvals=x.slice());var M=t._xctrl,S=t._yctrl,E=M[0].length,L=M.length,C=t._a.length,P=t._b.length;n.prepTicks(b),\"array\"===b.tickmode&&delete b.tickvals;var I=b.smoothing?3:1;function O(n){var i,a,o,s,l,c,u,f,p,d,g,m,v=[],y=[],x={};if(\"b\"===e)for(a=t.b2j(n),o=Math.floor(Math.max(0,Math.min(P-2,a))),s=a-o,x.length=P,x.crossLength=C,x.xy=function(e){return t.evalxy([],e,a)},x.dxy=function(e,r){return t.dxydi([],e,o,r,s)},i=0;i0&&(p=t.dxydi([],i-1,o,0,s),v.push(l[0]+p[0]/3),y.push(l[1]+p[1]/3),d=t.dxydi([],i-1,o,1,s),v.push(f[0]-d[0]/3),y.push(f[1]-d[1]/3)),v.push(f[0]),y.push(f[1]),l=f;else for(i=t.a2i(n),c=Math.floor(Math.max(0,Math.min(C-2,i))),u=i-c,x.length=C,x.crossLength=P,x.xy=function(e){return t.evalxy([],i,e)},x.dxy=function(e,r){return t.dxydj([],c,e,u,r)},a=0;a0&&(g=t.dxydj([],c,a-1,u,0),v.push(l[0]+g[0]/3),y.push(l[1]+g[1]/3),m=t.dxydj([],c,a-1,u,1),v.push(f[0]-m[0]/3),y.push(f[1]-m[1]/3)),v.push(f[0]),y.push(f[1]),l=f;return x.axisLetter=e,x.axis=b,x.crossAxis=A,x.value=n,x.constvar=r,x.index=h,x.x=v,x.y=y,x.smoothing=A.smoothing,x}function z(n){var i,a,o,s,l,c=[],u=[],f={};if(f.length=x.length,f.crossLength=k.length,\"b\"===e)for(o=Math.max(0,Math.min(P-2,n)),l=Math.min(1,Math.max(0,n-o)),f.xy=function(e){return t.evalxy([],e,n)},f.dxy=function(e,r){return t.dxydi([],e,o,r,l)},i=0;ix.length-1||_.push(i(z(o),{color:b.gridcolor,width:b.gridwidth}));for(h=u;hx.length-1||g<0||g>x.length-1))for(m=x[s],v=x[g],a=0;ax[x.length-1]||w.push(i(O(d),{color:b.minorgridcolor,width:b.minorgridwidth}));b.startline&&T.push(i(z(0),{color:b.startlinecolor,width:b.startlinewidth})),b.endline&&T.push(i(z(x.length-1),{color:b.endlinecolor,width:b.endlinewidth}))}else{for(l=5e-15,u=(c=[Math.floor((x[x.length-1]-b.tick0)/b.dtick*(1+l)),Math.ceil((x[0]-b.tick0)/b.dtick/(1+l))].sort((function(t,e){return t-e})))[0],f=c[1],h=u;h<=f;h++)p=b.tick0+b.dtick*h,_.push(i(O(p),{color:b.gridcolor,width:b.gridwidth}));for(h=u-1;hx[x.length-1]||w.push(i(O(d),{color:b.minorgridcolor,width:b.minorgridwidth}));b.startline&&T.push(i(O(x[0]),{color:b.startlinecolor,width:b.startlinewidth})),b.endline&&T.push(i(O(x[x.length-1]),{color:b.endlinecolor,width:b.endlinewidth}))}}},{\"../../lib/extend\":493,\"../../plots/cartesian/axes\":554}],698:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/axes\"),i=t(\"../../lib/extend\").extendFlat;e.exports=function(t,e){var r,a,o,s=e._labels=[],l=e._gridlines;for(r=0;re.length&&(t=t.slice(0,e.length)):t=[],i=0;i90&&(p-=180,l=-l),{angle:p,flip:l,p:t.c2p(n,e,r),offsetMultplier:c}}},{}],712:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../components/drawing\"),a=t(\"./map_1d_array\"),o=t(\"./makepath\"),s=t(\"./orient_text\"),l=t(\"../../lib/svg_text_utils\"),c=t(\"../../lib\"),u=c.strRotate,f=c.strTranslate,h=t(\"../../constants/alignment\");function p(t,e,r,i,s,l){var c=\"const-\"+s+\"-lines\",u=r.selectAll(\".\"+c).data(l);u.enter().append(\"path\").classed(c,!0).style(\"vector-effect\",\"non-scaling-stroke\"),u.each((function(r){var i=r,s=i.x,l=i.y,c=a([],s,t.c2p),u=a([],l,e.c2p),f=\"M\"+o(c,u,i.smoothing);n.select(this).attr(\"d\",f).style(\"stroke-width\",i.width).style(\"stroke\",i.color).style(\"fill\",\"none\")})),u.exit().remove()}function d(t,e,r,a,o,c,h,p){var d=c.selectAll(\"text.\"+p).data(h);d.enter().append(\"text\").classed(p,!0);var g=0,m={};return d.each((function(o,c){var h;if(\"auto\"===o.axis.tickangle)h=s(a,e,r,o.xy,o.dxy);else{var p=(o.axis.tickangle+180)*Math.PI/180;h=s(a,e,r,o.xy,[Math.cos(p),Math.sin(p)])}c||(m={angle:h.angle,flip:h.flip});var d=(o.endAnchor?-1:1)*h.flip,v=n.select(this).attr({\"text-anchor\":d>0?\"start\":\"end\",\"data-notex\":1}).call(i.font,o.font).text(o.text).call(l.convertToTspans,t),y=i.bBox(this);v.attr(\"transform\",f(h.p[0],h.p[1])+u(h.angle)+f(o.axis.labelpadding*d,.3*y.height)),g=Math.max(g,y.width+o.axis.labelpadding)})),d.exit().remove(),m.maxExtent=g,m}e.exports=function(t,e,r,i){var l=e.xaxis,u=e.yaxis,f=t._fullLayout._clips;c.makeTraceGroups(i,r,\"trace\").each((function(e){var r=n.select(this),i=e[0],h=i.trace,g=h.aaxis,m=h.baxis,y=c.ensureSingle(r,\"g\",\"minorlayer\"),x=c.ensureSingle(r,\"g\",\"majorlayer\"),b=c.ensureSingle(r,\"g\",\"boundarylayer\"),_=c.ensureSingle(r,\"g\",\"labellayer\");r.style(\"opacity\",h.opacity),p(l,u,x,g,\"a\",g._gridlines),p(l,u,x,m,\"b\",m._gridlines),p(l,u,y,g,\"a\",g._minorgridlines),p(l,u,y,m,\"b\",m._minorgridlines),p(l,u,b,g,\"a-boundary\",g._boundarylines),p(l,u,b,m,\"b-boundary\",m._boundarylines);var w=d(t,l,u,h,i,_,g._labels,\"a-label\"),T=d(t,l,u,h,i,_,m._labels,\"b-label\");!function(t,e,r,n,i,a,o,l){var u,f,h,p,d=c.aggNums(Math.min,null,r.a),g=c.aggNums(Math.max,null,r.a),m=c.aggNums(Math.min,null,r.b),y=c.aggNums(Math.max,null,r.b);u=.5*(d+g),f=m,h=r.ab2xy(u,f,!0),p=r.dxyda_rough(u,f),void 0===o.angle&&c.extendFlat(o,s(r,i,a,h,r.dxydb_rough(u,f)));v(t,e,r,n,h,p,r.aaxis,i,a,o,\"a-title\"),u=d,f=.5*(m+y),h=r.ab2xy(u,f,!0),p=r.dxydb_rough(u,f),void 0===l.angle&&c.extendFlat(l,s(r,i,a,h,r.dxyda_rough(u,f)));v(t,e,r,n,h,p,r.baxis,i,a,l,\"b-title\")}(t,_,h,i,l,u,w,T),function(t,e,r,n,i){var s,l,u,f,h=r.select(\"#\"+t._clipPathId);h.size()||(h=r.append(\"clipPath\").classed(\"carpetclip\",!0));var p=c.ensureSingle(h,\"path\",\"carpetboundary\"),d=e.clipsegments,g=[];for(f=0;f90&&y<270,b=n.select(this);b.text(h.title.text).call(l.convertToTspans,t),x&&(_=(-l.lineCount(b)+m)*g*a-_),b.attr(\"transform\",f(e.p[0],e.p[1])+u(e.angle)+f(0,_)).attr(\"text-anchor\",\"middle\").call(i.font,h.title.font)})),b.exit().remove()}},{\"../../components/drawing\":388,\"../../constants/alignment\":471,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"./makepath\":709,\"./map_1d_array\":710,\"./orient_text\":711,\"@plotly/d3\":58}],713:[function(t,e,r){\"use strict\";var n=t(\"./constants\"),i=t(\"../../lib/search\").findBin,a=t(\"./compute_control_points\"),o=t(\"./create_spline_evaluator\"),s=t(\"./create_i_derivative_evaluator\"),l=t(\"./create_j_derivative_evaluator\");e.exports=function(t){var e=t._a,r=t._b,c=e.length,u=r.length,f=t.aaxis,h=t.baxis,p=e[0],d=e[c-1],g=r[0],m=r[u-1],v=e[e.length-1]-e[0],y=r[r.length-1]-r[0],x=v*n.RELATIVE_CULL_TOLERANCE,b=y*n.RELATIVE_CULL_TOLERANCE;p-=x,d+=x,g-=b,m+=b,t.isVisible=function(t,e){return t>p&&tg&&ed||em},t.setScale=function(){var e=t._x,r=t._y,n=a(t._xctrl,t._yctrl,e,r,f.smoothing,h.smoothing);t._xctrl=n[0],t._yctrl=n[1],t.evalxy=o([t._xctrl,t._yctrl],c,u,f.smoothing,h.smoothing),t.dxydi=s([t._xctrl,t._yctrl],f.smoothing,h.smoothing),t.dxydj=l([t._xctrl,t._yctrl],f.smoothing,h.smoothing)},t.i2a=function(t){var r=Math.max(0,Math.floor(t[0]),c-2),n=t[0]-r;return(1-n)*e[r]+n*e[r+1]},t.j2b=function(t){var e=Math.max(0,Math.floor(t[1]),c-2),n=t[1]-e;return(1-n)*r[e]+n*r[e+1]},t.ij2ab=function(e){return[t.i2a(e[0]),t.j2b(e[1])]},t.a2i=function(t){var r=Math.max(0,Math.min(i(t,e),c-2)),n=e[r],a=e[r+1];return Math.max(0,Math.min(c-1,r+(t-n)/(a-n)))},t.b2j=function(t){var e=Math.max(0,Math.min(i(t,r),u-2)),n=r[e],a=r[e+1];return Math.max(0,Math.min(u-1,e+(t-n)/(a-n)))},t.ab2ij=function(e){return[t.a2i(e[0]),t.b2j(e[1])]},t.i2c=function(e,r){return t.evalxy([],e,r)},t.ab2xy=function(n,i,a){if(!a&&(ne[c-1]|ir[u-1]))return[!1,!1];var o=t.a2i(n),s=t.b2j(i),l=t.evalxy([],o,s);if(a){var f,h,p,d,g=0,m=0,v=[];ne[c-1]?(f=c-2,h=1,g=(n-e[c-1])/(e[c-1]-e[c-2])):h=o-(f=Math.max(0,Math.min(c-2,Math.floor(o)))),ir[u-1]?(p=u-2,d=1,m=(i-r[u-1])/(r[u-1]-r[u-2])):d=s-(p=Math.max(0,Math.min(u-2,Math.floor(s)))),g&&(t.dxydi(v,f,p,h,d),l[0]+=v[0]*g,l[1]+=v[1]*g),m&&(t.dxydj(v,f,p,h,d),l[0]+=v[0]*m,l[1]+=v[1]*m)}return l},t.c2p=function(t,e,r){return[e.c2p(t[0]),r.c2p(t[1])]},t.p2x=function(t,e,r){return[e.p2c(t[0]),r.p2c(t[1])]},t.dadi=function(t){var r=Math.max(0,Math.min(e.length-2,t));return e[r+1]-e[r]},t.dbdj=function(t){var e=Math.max(0,Math.min(r.length-2,t));return r[e+1]-r[e]},t.dxyda=function(e,r,n,i){var a=t.dxydi(null,e,r,n,i),o=t.dadi(e,n);return[a[0]/o,a[1]/o]},t.dxydb=function(e,r,n,i){var a=t.dxydj(null,e,r,n,i),o=t.dbdj(r,i);return[a[0]/o,a[1]/o]},t.dxyda_rough=function(e,r,n){var i=v*(n||.1),a=t.ab2xy(e+i,r,!0),o=t.ab2xy(e-i,r,!0);return[.5*(a[0]-o[0])/i,.5*(a[1]-o[1])/i]},t.dxydb_rough=function(e,r,n){var i=y*(n||.1),a=t.ab2xy(e,r+i,!0),o=t.ab2xy(e,r-i,!0);return[.5*(a[0]-o[0])/i,.5*(a[1]-o[1])/i]},t.dpdx=function(t){return t._m},t.dpdy=function(t){return t._m}}},{\"../../lib/search\":523,\"./compute_control_points\":701,\"./constants\":702,\"./create_i_derivative_evaluator\":703,\"./create_j_derivative_evaluator\":704,\"./create_spline_evaluator\":705}],714:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t,e,r){var i,a,o,s=[],l=[],c=t[0].length,u=t.length;function f(e,r){var n,i=0,a=0;return e>0&&void 0!==(n=t[r][e-1])&&(a++,i+=n),e0&&void 0!==(n=t[r-1][e])&&(a++,i+=n),r0&&a0&&i1e-5);return n.log(\"Smoother converged to\",k,\"after\",A,\"iterations\"),t}},{\"../../lib\":503}],715:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").isArray1D;e.exports=function(t,e,r){var i=r(\"x\"),a=i&&i.length,o=r(\"y\"),s=o&&o.length;if(!a&&!s)return!1;if(e._cheater=!i,a&&!n(i)||s&&!n(o))e._length=null;else{var l=a?i.length:1/0;s&&(l=Math.min(l,o.length)),e.a&&e.a.length&&(l=Math.min(l,e.a.length)),e.b&&e.b.length&&(l=Math.min(l,e.b.length)),e._length=l}return!0}},{\"../../lib\":503}],716:[function(t,e,r){\"use strict\";var n=t(\"../../plots/template_attributes\").hovertemplateAttrs,i=t(\"../scattergeo/attributes\"),a=t(\"../../components/colorscale/attributes\"),o=t(\"../../plots/attributes\"),s=t(\"../../components/color/attributes\").defaultLine,l=t(\"../../lib/extend\").extendFlat,c=i.marker.line;e.exports=l({locations:{valType:\"data_array\",editType:\"calc\"},locationmode:i.locationmode,z:{valType:\"data_array\",editType:\"calc\"},geojson:l({},i.geojson,{}),featureidkey:i.featureidkey,text:l({},i.text,{}),hovertext:l({},i.hovertext,{}),marker:{line:{color:l({},c.color,{dflt:s}),width:l({},c.width,{dflt:1}),editType:\"calc\"},opacity:{valType:\"number\",arrayOk:!0,min:0,max:1,dflt:1,editType:\"style\"},editType:\"calc\"},selected:{marker:{opacity:i.selected.marker.opacity,editType:\"plot\"},editType:\"plot\"},unselected:{marker:{opacity:i.unselected.marker.opacity,editType:\"plot\"},editType:\"plot\"},hoverinfo:l({},o.hoverinfo,{editType:\"calc\",flags:[\"location\",\"z\",\"text\",\"name\"]}),hovertemplate:n(),showlegend:l({},o.showlegend,{dflt:!1})},a(\"\",{cLetter:\"z\",editTypeOverride:\"calc\"}))},{\"../../components/color/attributes\":365,\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/template_attributes\":633,\"../scattergeo/attributes\":968}],717:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../constants/numerical\").BADNUM,a=t(\"../../components/colorscale/calc\"),o=t(\"../scatter/arrays_to_calcdata\"),s=t(\"../scatter/calc_selection\");function l(t){return t&&\"string\"==typeof t}e.exports=function(t,e){var r,c=e._length,u=new Array(c);r=e.geojson?function(t){return l(t)||n(t)}:l;for(var f=0;f\")}(t,f,o),[t]}},{\"../../lib\":503,\"../../plots/cartesian/axes\":554,\"./attributes\":716}],721:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../heatmap/colorbar\"),calc:t(\"./calc\"),calcGeoJSON:t(\"./plot\").calcGeoJSON,plot:t(\"./plot\").plot,style:t(\"./style\").style,styleOnSelect:t(\"./style\").styleOnSelect,hoverPoints:t(\"./hover\"),eventData:t(\"./event_data\"),selectPoints:t(\"./select\"),moduleType:\"trace\",name:\"choropleth\",basePlotModule:t(\"../../plots/geo\"),categories:[\"geo\",\"noOpacity\",\"showLegend\"],meta:{}}},{\"../../plots/geo\":589,\"../heatmap/colorbar\":795,\"./attributes\":716,\"./calc\":717,\"./defaults\":718,\"./event_data\":719,\"./hover\":720,\"./plot\":722,\"./select\":723,\"./style\":724}],722:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../lib/geo_location_utils\"),o=t(\"../../lib/topojson_utils\").getTopojsonFeatures,s=t(\"../../plots/cartesian/autorange\").findExtremes,l=t(\"./style\").style;e.exports={calcGeoJSON:function(t,e){for(var r=t[0].trace,n=e[r.geo],i=n._subplot,l=r.locationmode,c=r._length,u=\"geojson-id\"===l?a.extractTraceFeature(t):o(r,i.topojson),f=[],h=[],p=0;p=0;n--){var i=r[n].id;if(\"string\"==typeof i&&0===i.indexOf(\"water\"))for(var a=n+1;a=0;r--)t.removeLayer(e[r][1])},s.dispose=function(){var t=this.subplot.map;this._removeLayers(),t.removeSource(this.sourceId)},e.exports=function(t,e){var r=e[0].trace,i=new o(t,r.uid),a=i.sourceId,s=n(e),l=i.below=t.belowLookup[\"trace-\"+r.uid];return t.map.addSource(a,{type:\"geojson\",data:s.geojson}),i._addLayers(s,l),e[0].trace._glTrace=i,i}},{\"../../plots/mapbox/constants\":611,\"./convert\":726}],730:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/attributes\"),i=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,a=t(\"../../plots/template_attributes\").hovertemplateAttrs,o=t(\"../mesh3d/attributes\"),s=t(\"../../plots/attributes\"),l=t(\"../../lib/extend\").extendFlat,c={x:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},y:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},z:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},u:{valType:\"data_array\",editType:\"calc\"},v:{valType:\"data_array\",editType:\"calc\"},w:{valType:\"data_array\",editType:\"calc\"},sizemode:{valType:\"enumerated\",values:[\"scaled\",\"absolute\"],editType:\"calc\",dflt:\"scaled\"},sizeref:{valType:\"number\",editType:\"calc\",min:0},anchor:{valType:\"enumerated\",editType:\"calc\",values:[\"tip\",\"tail\",\"cm\",\"center\"],dflt:\"cm\"},text:{valType:\"string\",dflt:\"\",arrayOk:!0,editType:\"calc\"},hovertext:{valType:\"string\",dflt:\"\",arrayOk:!0,editType:\"calc\"},hovertemplate:a({editType:\"calc\"},{keys:[\"norm\"]}),uhoverformat:i(\"u\",1),vhoverformat:i(\"v\",1),whoverformat:i(\"w\",1),xhoverformat:i(\"x\"),yhoverformat:i(\"y\"),zhoverformat:i(\"z\"),showlegend:l({},s.showlegend,{dflt:!1})};l(c,n(\"\",{colorAttr:\"u/v/w norm\",showScaleDflt:!0,editTypeOverride:\"calc\"}));[\"opacity\",\"lightposition\",\"lighting\"].forEach((function(t){c[t]=o[t]})),c.hoverinfo=l({},s.hoverinfo,{editType:\"calc\",flags:[\"x\",\"y\",\"z\",\"u\",\"v\",\"w\",\"norm\",\"text\",\"name\"],dflt:\"x+y+z+norm+text+name\"}),c.transforms=void 0,e.exports=c},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/template_attributes\":633,\"../mesh3d/attributes\":867}],731:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/calc\");e.exports=function(t,e){for(var r=e.u,i=e.v,a=e.w,o=Math.min(e.x.length,e.y.length,e.z.length,r.length,i.length,a.length),s=-1/0,l=1/0,c=0;co.level||o.starts.length&&a===o.level)}break;case\"constraint\":if(n.prefixBoundary=!1,n.edgepaths.length)return;var s=n.x.length,l=n.y.length,c=-1/0,u=1/0;for(r=0;r\":p>c&&(n.prefixBoundary=!0);break;case\"<\":(pc||n.starts.length&&h===u)&&(n.prefixBoundary=!0);break;case\"][\":f=Math.min(p[0],p[1]),h=Math.max(p[0],p[1]),fc&&(n.prefixBoundary=!0)}}}},{}],738:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale\"),i=t(\"./make_color_map\"),a=t(\"./end_plus\");e.exports={min:\"zmin\",max:\"zmax\",calc:function(t,e,r){var o=e.contours,s=e.line,l=o.size||1,c=o.coloring,u=i(e,{isColorbar:!0});if(\"heatmap\"===c){var f=n.extractOpts(e);r._fillgradient=f.reversescale?n.flipScale(f.colorscale):f.colorscale,r._zrange=[f.min,f.max]}else\"fill\"===c&&(r._fillcolor=u);r._line={color:\"lines\"===c?u:s.color,width:!1!==o.showlines?s.width:0,dash:s.dash},r._levels={start:o.start,end:a(o),size:l}}}},{\"../../components/colorscale\":378,\"./end_plus\":746,\"./make_color_map\":751}],739:[function(t,e,r){\"use strict\";e.exports={BOTTOMSTART:[1,9,13,104,713],TOPSTART:[4,6,7,104,713],LEFTSTART:[8,12,14,208,1114],RIGHTSTART:[2,3,11,208,1114],NEWDELTA:[null,[-1,0],[0,-1],[-1,0],[1,0],null,[0,-1],[-1,0],[0,1],[0,1],null,[0,1],[1,0],[1,0],[0,-1]],CHOOSESADDLE:{104:[4,1],208:[2,8],713:[7,13],1114:[11,14]},SADDLEREMAINDER:{1:4,2:8,4:1,7:13,8:2,11:14,13:7,14:11},LABELDISTANCE:2,LABELINCREASE:10,LABELMIN:3,LABELMAX:10,LABELOPTIMIZER:{EDGECOST:1,ANGLECOST:1,NEIGHBORCOST:5,SAMELEVELFACTOR:10,SAMELEVELDISTANCE:5,MAXCOST:100,INITIALSEARCHPOINTS:10,ITERATIONS:5}}},{}],740:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"./label_defaults\"),a=t(\"../../components/color\"),o=a.addOpacity,s=a.opacity,l=t(\"../../constants/filter_ops\"),c=l.CONSTRAINT_REDUCTION,u=l.COMPARISON_OPS2;e.exports=function(t,e,r,a,l,f){var h,p,d,g=e.contours,m=r(\"contours.operation\");(g._operation=c[m],function(t,e){var r;-1===u.indexOf(e.operation)?(t(\"contours.value\",[0,1]),Array.isArray(e.value)?e.value.length>2?e.value=e.value.slice(2):0===e.length?e.value=[0,1]:e.length<2?(r=parseFloat(e.value[0]),e.value=[r,r+1]):e.value=[parseFloat(e.value[0]),parseFloat(e.value[1])]:n(e.value)&&(r=parseFloat(e.value),e.value=[r,r+1])):(t(\"contours.value\",0),n(e.value)||(Array.isArray(e.value)?e.value=parseFloat(e.value[0]):e.value=0))}(r,g),\"=\"===m?h=g.showlines=!0:(h=r(\"contours.showlines\"),d=r(\"fillcolor\",o((t.line||{}).color||l,.5))),h)&&(p=r(\"line.color\",d&&s(d)?o(e.fillcolor,1):l),r(\"line.width\",2),r(\"line.dash\"));r(\"line.smoothing\"),i(r,a,p,f)}},{\"../../components/color\":366,\"../../constants/filter_ops\":475,\"./label_defaults\":750,\"fast-isnumeric\":190}],741:[function(t,e,r){\"use strict\";var n=t(\"../../constants/filter_ops\"),i=t(\"fast-isnumeric\");function a(t,e){var r,a=Array.isArray(e);function o(t){return i(t)?+t:null}return-1!==n.COMPARISON_OPS2.indexOf(t)?r=o(a?e[0]:e):-1!==n.INTERVAL_OPS.indexOf(t)?r=a?[o(e[0]),o(e[1])]:[o(e),o(e)]:-1!==n.SET_OPS.indexOf(t)&&(r=a?e.map(o):[o(e)]),r}function o(t){return function(e){e=a(t,e);var r=Math.min(e[0],e[1]),n=Math.max(e[0],e[1]);return{start:r,end:n,size:n-r}}}function s(t){return function(e){return{start:e=a(t,e),end:1/0,size:1/0}}}e.exports={\"[]\":o(\"[]\"),\"][\":o(\"][\"),\">\":s(\">\"),\"<\":s(\"<\"),\"=\":s(\"=\")}},{\"../../constants/filter_ops\":475,\"fast-isnumeric\":190}],742:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,n){var i=n(\"contours.start\"),a=n(\"contours.end\"),o=!1===i||!1===a,s=r(\"contours.size\");!(o?e.autocontour=!0:r(\"autocontour\",!1))&&s||r(\"ncontours\")}},{}],743:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");function i(t){return n.extendFlat({},t,{edgepaths:n.extendDeep([],t.edgepaths),paths:n.extendDeep([],t.paths),starts:n.extendDeep([],t.starts)})}e.exports=function(t,e){var r,a,o,s=function(t){return t.reverse()},l=function(t){return t};switch(e){case\"=\":case\"<\":return t;case\">\":for(1!==t.length&&n.warn(\"Contour data invalid for the specified inequality operation.\"),a=t[0],r=0;r1e3){n.warn(\"Too many contours, clipping at 1000\",t);break}return l}},{\"../../lib\":503,\"./constraint_mapping\":741,\"./end_plus\":746}],746:[function(t,e,r){\"use strict\";e.exports=function(t){return t.end+t.size/1e6}},{}],747:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./constants\");function a(t,e,r,n){return Math.abs(t[0]-e[0])20&&e?208===t||1114===t?n=0===r[0]?1:-1:a=0===r[1]?1:-1:-1!==i.BOTTOMSTART.indexOf(t)?a=1:-1!==i.LEFTSTART.indexOf(t)?n=1:-1!==i.TOPSTART.indexOf(t)?a=-1:n=-1;return[n,a]}(f,r,e),p=[s(t,e,[-h[0],-h[1]])],d=t.z.length,g=t.z[0].length,m=e.slice(),v=h.slice();for(c=0;c<1e4;c++){if(f>20?(f=i.CHOOSESADDLE[f][(h[0]||h[1])<0?0:1],t.crossings[u]=i.SADDLEREMAINDER[f]):delete t.crossings[u],!(h=i.NEWDELTA[f])){n.log(\"Found bad marching index:\",f,e,t.level);break}p.push(s(t,e,h)),e[0]+=h[0],e[1]+=h[1],u=e.join(\",\"),a(p[p.length-1],p[p.length-2],o,l)&&p.pop();var y=h[0]&&(e[0]<0||e[0]>g-2)||h[1]&&(e[1]<0||e[1]>d-2);if(e[0]===m[0]&&e[1]===m[1]&&h[0]===v[0]&&h[1]===v[1]||r&&y)break;f=t.crossings[u]}1e4===c&&n.log(\"Infinite loop in contour?\");var x,b,_,w,T,k,A,M,S,E,L,C,P,I,O,z=a(p[0],p[p.length-1],o,l),D=0,R=.2*t.smoothing,F=[],B=0;for(c=1;c=B;c--)if((x=F[c])=B&&x+F[b]M&&S--,t.edgepaths[S]=L.concat(p,E));break}V||(t.edgepaths[M]=p.concat(E))}for(M=0;Mt?0:1)+(e[0][1]>t?0:2)+(e[1][1]>t?0:4)+(e[1][0]>t?0:8);return 5===r||10===r?t>(e[0][0]+e[0][1]+e[1][0]+e[1][1])/4?5===r?713:1114:5===r?104:208:15===r?0:r}e.exports=function(t){var e,r,a,o,s,l,c,u,f,h=t[0].z,p=h.length,d=h[0].length,g=2===p||2===d;for(r=0;r=0&&(n=y,s=l):Math.abs(r[1]-n[1])<.01?Math.abs(r[1]-y[1])<.01&&(y[0]-r[0])*(n[0]-y[0])>=0&&(n=y,s=l):i.log(\"endpt to newendpt is not vert. or horz.\",r,n,y)}if(r=n,s>=0)break;f+=\"L\"+n}if(s===t.edgepaths.length){i.log(\"unclosed perimeter path\");break}h=s,(d=-1===p.indexOf(h))&&(h=p[0],f+=\"Z\")}for(h=0;hn.center?n.right-s:s-n.left)/(u+Math.abs(Math.sin(c)*o)),p=(l>n.middle?n.bottom-l:l-n.top)/(Math.abs(f)+Math.cos(c)*o);if(h<1||p<1)return 1/0;var d=v.EDGECOST*(1/(h-1)+1/(p-1));d+=v.ANGLECOST*c*c;for(var g=s-u,m=l-f,y=s+u,x=l+f,b=0;b2*v.MAXCOST)break;p&&(s/=2),l=(o=c-s/2)+1.5*s}if(h<=v.MAXCOST)return u},r.addLabelData=function(t,e,r,n){var i=e.fontSize,a=e.width+i/3,o=Math.max(0,e.height-i/3),s=t.x,l=t.y,c=t.theta,u=Math.sin(c),f=Math.cos(c),h=function(t,e){return[s+t*f-e*u,l+t*u+e*f]},p=[h(-a/2,-o/2),h(-a/2,o/2),h(a/2,o/2),h(a/2,-o/2)];r.push({text:e.text,x:s,y:l,dy:e.dy,theta:c,level:e.level,width:a,height:o}),n.push(p)},r.drawLabels=function(t,e,r,a,o){var l=t.selectAll(\"text\").data(e,(function(t){return t.text+\",\"+t.x+\",\"+t.y+\",\"+t.theta}));if(l.exit().remove(),l.enter().append(\"text\").attr({\"data-notex\":1,\"text-anchor\":\"middle\"}).each((function(t){var e=t.x+Math.sin(t.theta)*t.dy,i=t.y-Math.cos(t.theta)*t.dy;n.select(this).text(t.text).attr({x:e,y:i,transform:\"rotate(\"+180*t.theta/Math.PI+\" \"+e+\" \"+i+\")\"}).call(s.convertToTspans,r)})),o){for(var c=\"\",u=0;ur.end&&(r.start=r.end=(r.start+r.end)/2),t._input.contours||(t._input.contours={}),i.extendFlat(t._input.contours,{start:r.start,end:r.end,size:r.size}),t._input.autocontour=!0}else if(\"constraint\"!==r.type){var c,u=r.start,f=r.end,h=t._input.contours;if(u>f&&(r.start=h.start=f,f=r.end=h.end=u,u=r.start),!(r.size>0))c=u===f?1:a(u,f,t.ncontours).dtick,h.size=r.size=c}}},{\"../../lib\":503,\"../../plots/cartesian/axes\":554}],755:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../components/drawing\"),a=t(\"../heatmap/style\"),o=t(\"./make_color_map\");e.exports=function(t){var e=n.select(t).selectAll(\"g.contour\");e.style(\"opacity\",(function(t){return t[0].trace.opacity})),e.each((function(t){var e=n.select(this),r=t[0].trace,a=r.contours,s=r.line,l=a.size||1,c=a.start,u=\"constraint\"===a.type,f=!u&&\"lines\"===a.coloring,h=!u&&\"fill\"===a.coloring,p=f||h?o(r):null;e.selectAll(\"g.contourlevel\").each((function(t){n.select(this).selectAll(\"path\").call(i.lineGroupStyle,s.width,f?p(t.level):s.color,s.dash)}));var d=a.labelfont;if(e.selectAll(\"g.contourlabels text\").each((function(t){i.font(n.select(this),{family:d.family,size:d.size,color:d.color||(f?p(t.level):s.color)})})),u)e.selectAll(\"g.contourfill path\").style(\"fill\",r.fillcolor);else if(h){var g;e.selectAll(\"g.contourfill path\").style(\"fill\",(function(t){return void 0===g&&(g=t.level),p(t.level+.5*l)})),void 0===g&&(g=c),e.selectAll(\"g.contourbg path\").style(\"fill\",p(g-.5*l))}})),a(t)}},{\"../../components/drawing\":388,\"../heatmap/style\":805,\"./make_color_map\":751,\"@plotly/d3\":58}],756:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/defaults\"),i=t(\"./label_defaults\");e.exports=function(t,e,r,a,o){var s,l=r(\"contours.coloring\"),c=\"\";\"fill\"===l&&(s=r(\"contours.showlines\")),!1!==s&&(\"lines\"!==l&&(c=r(\"line.color\",\"#000\")),r(\"line.width\",.5),r(\"line.dash\")),\"none\"!==l&&(!0!==t.showlegend&&(e.showlegend=!1),e._dfltShowLegend=!1,n(t,e,a,r,{prefix:\"\",cLetter:\"z\"})),r(\"line.smoothing\"),i(r,a,c,o)}},{\"../../components/colorscale/defaults\":376,\"./label_defaults\":750}],757:[function(t,e,r){\"use strict\";var n=t(\"../heatmap/attributes\"),i=t(\"../contour/attributes\"),a=t(\"../../components/colorscale/attributes\"),o=t(\"../../lib/extend\").extendFlat,s=i.contours;e.exports=o({carpet:{valType:\"string\",editType:\"calc\"},z:n.z,a:n.x,a0:n.x0,da:n.dx,b:n.y,b0:n.y0,db:n.dy,text:n.text,hovertext:n.hovertext,transpose:n.transpose,atype:n.xtype,btype:n.ytype,fillcolor:i.fillcolor,autocontour:i.autocontour,ncontours:i.ncontours,contours:{type:s.type,start:s.start,end:s.end,size:s.size,coloring:{valType:\"enumerated\",values:[\"fill\",\"lines\",\"none\"],dflt:\"fill\",editType:\"calc\"},showlines:s.showlines,showlabels:s.showlabels,labelfont:s.labelfont,labelformat:s.labelformat,operation:s.operation,value:s.value,editType:\"calc\",impliedEdits:{autocontour:!1}},line:{color:i.line.color,width:i.line.width,dash:i.line.dash,smoothing:i.line.smoothing,editType:\"plot\"},transforms:void 0},a(\"\",{cLetter:\"z\",autoColorDflt:!1}))},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../contour/attributes\":735,\"../heatmap/attributes\":792}],758:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/calc\"),i=t(\"../../lib\"),a=t(\"../heatmap/convert_column_xyz\"),o=t(\"../heatmap/clean_2d_array\"),s=t(\"../heatmap/interp2d\"),l=t(\"../heatmap/find_empties\"),c=t(\"../heatmap/make_bound_array\"),u=t(\"./defaults\"),f=t(\"../carpet/lookup_carpetid\"),h=t(\"../contour/set_contours\");e.exports=function(t,e){var r=e._carpetTrace=f(t,e);if(r&&r.visible&&\"legendonly\"!==r.visible){if(!e.a||!e.b){var p=t.data[r.index],d=t.data[e.index];d.a||(d.a=p.a),d.b||(d.b=p.b),u(d,e,e._defaultColor,t._fullLayout)}var g=function(t,e){var r,u,f,h,p,d,g,m=e._carpetTrace,v=m.aaxis,y=m.baxis;v._minDtick=0,y._minDtick=0,i.isArray1D(e.z)&&a(e,v,y,\"a\",\"b\",[\"z\"]);r=e._a=e._a||e.a,h=e._b=e._b||e.b,r=r?v.makeCalcdata(e,\"_a\"):[],h=h?y.makeCalcdata(e,\"_b\"):[],u=e.a0||0,f=e.da||1,p=e.b0||0,d=e.db||1,g=e._z=o(e._z||e.z,e.transpose),e._emptypoints=l(g),s(g,e._emptypoints);var x=i.maxRowLength(g),b=\"scaled\"===e.xtype?\"\":r,_=c(e,b,u,f,x,v),w=\"scaled\"===e.ytype?\"\":h,T=c(e,w,p,d,g.length,y),k={a:_,b:T,z:g};\"levels\"===e.contours.type&&\"none\"!==e.contours.coloring&&n(t,e,{vals:g,containerStr:\"\",cLetter:\"z\"});return[k]}(t,e);return h(e,e._z),g}}},{\"../../components/colorscale/calc\":374,\"../../lib\":503,\"../carpet/lookup_carpetid\":708,\"../contour/set_contours\":754,\"../heatmap/clean_2d_array\":794,\"../heatmap/convert_column_xyz\":796,\"../heatmap/find_empties\":798,\"../heatmap/interp2d\":801,\"../heatmap/make_bound_array\":803,\"./defaults\":759}],759:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../heatmap/xyz_defaults\"),a=t(\"./attributes\"),o=t(\"../contour/constraint_defaults\"),s=t(\"../contour/contours_defaults\"),l=t(\"../contour/style_defaults\");e.exports=function(t,e,r,c){function u(r,i){return n.coerce(t,e,a,r,i)}if(u(\"carpet\"),t.a&&t.b){if(!i(t,e,u,c,\"a\",\"b\"))return void(e.visible=!1);u(\"text\"),\"constraint\"===u(\"contours.type\")?o(t,e,u,c,r,{hasHover:!1}):(s(t,e,u,(function(r){return n.coerce2(t,e,a,r)})),l(t,e,u,c,{hasHover:!1}))}else e._defaultColor=r,e._length=null}},{\"../../lib\":503,\"../contour/constraint_defaults\":740,\"../contour/contours_defaults\":742,\"../contour/style_defaults\":756,\"../heatmap/xyz_defaults\":807,\"./attributes\":757}],760:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../contour/colorbar\"),calc:t(\"./calc\"),plot:t(\"./plot\"),style:t(\"../contour/style\"),moduleType:\"trace\",name:\"contourcarpet\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"cartesian\",\"svg\",\"carpet\",\"contour\",\"symbols\",\"showLegend\",\"hasLines\",\"carpetDependent\",\"noHover\",\"noSortingByValue\"],meta:{}}},{\"../../plots/cartesian\":568,\"../contour/colorbar\":738,\"../contour/style\":755,\"./attributes\":757,\"./calc\":758,\"./defaults\":759,\"./plot\":761}],761:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../carpet/map_1d_array\"),a=t(\"../carpet/makepath\"),o=t(\"../../components/drawing\"),s=t(\"../../lib\"),l=t(\"../contour/make_crossings\"),c=t(\"../contour/find_all_paths\"),u=t(\"../contour/plot\"),f=t(\"../contour/constants\"),h=t(\"../contour/convert_to_constraints\"),p=t(\"../contour/empty_pathinfo\"),d=t(\"../contour/close_boundaries\"),g=t(\"../carpet/lookup_carpetid\"),m=t(\"../carpet/axis_aligned_line\");function v(t,e,r){var n=t.getPointAtLength(e),i=t.getPointAtLength(r),a=i.x-n.x,o=i.y-n.y,s=Math.sqrt(a*a+o*o);return[a/s,o/s]}function y(t){var e=Math.sqrt(t[0]*t[0]+t[1]*t[1]);return[t[0]/e,t[1]/e]}function x(t,e){var r=Math.abs(t[0]*e[0]+t[1]*e[1]);return Math.sqrt(1-r*r)/r}e.exports=function(t,e,r,b){var _=e.xaxis,w=e.yaxis;s.makeTraceGroups(b,r,\"contour\").each((function(r){var b=n.select(this),T=r[0],k=T.trace,A=k._carpetTrace=g(t,k),M=t.calcdata[A.index][0];if(A.visible&&\"legendonly\"!==A.visible){var S=T.a,E=T.b,L=k.contours,C=p(L,e,T),P=\"constraint\"===L.type,I=L._operation,O=P?\"=\"===I?\"lines\":\"fill\":L.coloring,z=[[S[0],E[E.length-1]],[S[S.length-1],E[E.length-1]],[S[S.length-1],E[0]],[S[0],E[0]]];l(C);var D=1e-8*(S[S.length-1]-S[0]),R=1e-8*(E[E.length-1]-E[0]);c(C,D,R);var F,B,N,j,U=C;\"constraint\"===L.type&&(U=h(C,I)),function(t,e){var r,n,i,a,o,s,l,c,u;for(r=0;r=0;j--)F=M.clipsegments[j],B=i([],F.x,_.c2p),N=i([],F.y,w.c2p),B.reverse(),N.reverse(),V.push(a(B,N,F.bicubic));var H=\"M\"+V.join(\"L\")+\"Z\";!function(t,e,r,n,o,l){var c,u,f,h,p=s.ensureSingle(t,\"g\",\"contourbg\").selectAll(\"path\").data(\"fill\"!==l||o?[]:[0]);p.enter().append(\"path\"),p.exit().remove();var d=[];for(h=0;h=0&&(h=L,d=g):Math.abs(f[1]-h[1])=0&&(h=L,d=g):s.log(\"endpt to newendpt is not vert. or horz.\",f,h,L)}if(d>=0)break;y+=S(f,h),f=h}if(d===e.edgepaths.length){s.log(\"unclosed perimeter path\");break}u=d,(b=-1===x.indexOf(u))&&(u=x[0],y+=S(f,h)+\"Z\",f=null)}for(u=0;um&&(n.max=m);n.len=n.max-n.min}(this,r,t,n,c,e.height),!(n.len<(e.width+e.height)*f.LABELMIN)))for(var i=Math.min(Math.ceil(n.len/I),f.LABELMAX),a=0;a0?+p[u]:0),f.push({type:\"Feature\",geometry:{type:\"Point\",coordinates:v},properties:y})}}var b=o.extractOpts(e),_=b.reversescale?o.flipScale(b.colorscale):b.colorscale,w=_[0][1],T=[\"interpolate\",[\"linear\"],[\"heatmap-density\"],0,a.opacity(w)<1?w:a.addOpacity(w,0)];for(u=1;u<_.length;u++)T.push(_[u][0],_[u][1]);var k=[\"interpolate\",[\"linear\"],[\"get\",\"z\"],b.min,0,b.max,1];return i.extendFlat(c.heatmap.paint,{\"heatmap-weight\":d?k:1/(b.max-b.min),\"heatmap-color\":T,\"heatmap-radius\":g?{type:\"identity\",property:\"r\"}:e.radius,\"heatmap-opacity\":e.opacity}),c.geojson={type:\"FeatureCollection\",features:f},c.heatmap.layout.visibility=\"visible\",c}},{\"../../components/color\":366,\"../../components/colorscale\":378,\"../../constants/numerical\":479,\"../../lib\":503,\"../../lib/geojson_utils\":497,\"fast-isnumeric\":190}],765:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../components/colorscale/defaults\"),a=t(\"./attributes\");e.exports=function(t,e,r,o){function s(r,i){return n.coerce(t,e,a,r,i)}var l=s(\"lon\")||[],c=s(\"lat\")||[],u=Math.min(l.length,c.length);u?(e._length=u,s(\"z\"),s(\"radius\"),s(\"below\"),s(\"text\"),s(\"hovertext\"),s(\"hovertemplate\"),i(t,e,o,s,{prefix:\"\",cLetter:\"z\"})):e.visible=!1}},{\"../../components/colorscale/defaults\":376,\"../../lib\":503,\"./attributes\":762}],766:[function(t,e,r){\"use strict\";e.exports=function(t,e){return t.lon=e.lon,t.lat=e.lat,t.z=e.z,t}},{}],767:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/axes\"),i=t(\"../scattermapbox/hover\").hoverPoints,a=t(\"../scattermapbox/hover\").getExtraText;e.exports=function(t,e,r){var o=i(t,e,r);if(o){var s=o[0],l=s.cd,c=l[0].trace,u=l[s.index];if(delete s.color,\"z\"in u){var f=s.subplot.mockAxis;s.z=u.z,s.zLabel=n.tickText(f,f.c2l(u.z),\"hover\").text}return s.extraText=a(c,u,l[0].t.labels),[s]}}},{\"../../plots/cartesian/axes\":554,\"../scattermapbox/hover\":996}],768:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../heatmap/colorbar\"),formatLabels:t(\"../scattermapbox/format_labels\"),calc:t(\"./calc\"),plot:t(\"./plot\"),hoverPoints:t(\"./hover\"),eventData:t(\"./event_data\"),getBelow:function(t,e){for(var r=e.getMapLayers(),n=0;n=0;r--)t.removeLayer(e[r][1])},o.dispose=function(){var t=this.subplot.map;this._removeLayers(),t.removeSource(this.sourceId)},e.exports=function(t,e){var r=e[0].trace,i=new a(t,r.uid),o=i.sourceId,s=n(e),l=i.below=t.belowLookup[\"trace-\"+r.uid];return t.map.addSource(o,{type:\"geojson\",data:s.geojson}),i._addLayers(s,l),i}},{\"../../plots/mapbox/constants\":611,\"./convert\":764}],770:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t,e){for(var r=0;r\"),l.color=function(t,e){var r=t.marker,i=e.mc||r.color,a=e.mlc||r.line.color,o=e.mlw||r.line.width;if(n(i))return i;if(n(a)&&o)return a}(u,h),[l]}}},{\"../../components/color\":366,\"../../lib\":503,\"../bar/hover\":655}],778:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\").supplyDefaults,crossTraceDefaults:t(\"./defaults\").crossTraceDefaults,supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\"),crossTraceCalc:t(\"./cross_trace_calc\"),plot:t(\"./plot\"),style:t(\"./style\").style,hoverPoints:t(\"./hover\"),eventData:t(\"./event_data\"),selectPoints:t(\"../bar/select\"),moduleType:\"trace\",name:\"funnel\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"bar-like\",\"cartesian\",\"svg\",\"oriented\",\"showLegend\",\"zoomScale\"],meta:{}}},{\"../../plots/cartesian\":568,\"../bar/select\":660,\"./attributes\":771,\"./calc\":772,\"./cross_trace_calc\":774,\"./defaults\":775,\"./event_data\":776,\"./hover\":777,\"./layout_attributes\":779,\"./layout_defaults\":780,\"./plot\":781,\"./style\":782}],779:[function(t,e,r){\"use strict\";e.exports={funnelmode:{valType:\"enumerated\",values:[\"stack\",\"group\",\"overlay\"],dflt:\"stack\",editType:\"calc\"},funnelgap:{valType:\"number\",min:0,max:1,editType:\"calc\"},funnelgroupgap:{valType:\"number\",min:0,max:1,dflt:0,editType:\"calc\"}}},{}],780:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e,r){var a=!1;function o(r,a){return n.coerce(t,e,i,r,a)}for(var s=0;s path\").each((function(t){if(!t.isBlank){var e=s.marker;n.select(this).call(a.fill,t.mc||e.color).call(a.stroke,t.mlc||e.line.color).call(i.dashLine,e.line.dash,t.mlw||e.line.width).style(\"opacity\",s.selectedpoints&&!t.selected?o:1)}})),c(r,s,t),r.selectAll(\".regions\").each((function(){n.select(this).selectAll(\"path\").style(\"stroke-width\",0).call(a.fill,s.connector.fillcolor)})),r.selectAll(\".lines\").each((function(){var t=s.connector.line;i.lineGroupStyle(n.select(this).selectAll(\"path\"),t.width,t.color,t.dash)}))}))}}},{\"../../components/color\":366,\"../../components/drawing\":388,\"../../constants/interactions\":478,\"../bar/style\":662,\"../bar/uniform_text\":664,\"@plotly/d3\":58}],783:[function(t,e,r){\"use strict\";var n=t(\"../pie/attributes\"),i=t(\"../../plots/attributes\"),a=t(\"../../plots/domain\").attributes,o=t(\"../../plots/template_attributes\").hovertemplateAttrs,s=t(\"../../plots/template_attributes\").texttemplateAttrs,l=t(\"../../lib/extend\").extendFlat;e.exports={labels:n.labels,label0:n.label0,dlabel:n.dlabel,values:n.values,marker:{colors:n.marker.colors,line:{color:l({},n.marker.line.color,{dflt:null}),width:l({},n.marker.line.width,{dflt:1}),editType:\"calc\"},editType:\"calc\"},text:n.text,hovertext:n.hovertext,scalegroup:l({},n.scalegroup,{}),textinfo:l({},n.textinfo,{flags:[\"label\",\"text\",\"value\",\"percent\"]}),texttemplate:s({editType:\"plot\"},{keys:[\"label\",\"color\",\"value\",\"text\",\"percent\"]}),hoverinfo:l({},i.hoverinfo,{flags:[\"label\",\"text\",\"value\",\"percent\",\"name\"]}),hovertemplate:o({},{keys:[\"label\",\"color\",\"value\",\"text\",\"percent\"]}),textposition:l({},n.textposition,{values:[\"inside\",\"none\"],dflt:\"inside\"}),textfont:n.textfont,insidetextfont:n.insidetextfont,title:{text:n.title.text,font:n.title.font,position:l({},n.title.position,{values:[\"top left\",\"top center\",\"top right\"],dflt:\"top center\"}),editType:\"plot\"},domain:a({name:\"funnelarea\",trace:!0,editType:\"calc\"}),aspectratio:{valType:\"number\",min:0,dflt:1,editType:\"plot\"},baseratio:{valType:\"number\",min:0,max:1,dflt:.333,editType:\"plot\"}}},{\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/domain\":584,\"../../plots/template_attributes\":633,\"../pie/attributes\":900}],784:[function(t,e,r){\"use strict\";var n=t(\"../../plots/plots\");r.name=\"funnelarea\",r.plot=function(t,e,i,a){n.plotBasePlot(r.name,t,e,i,a)},r.clean=function(t,e,i,a){n.cleanBasePlot(r.name,t,e,i,a)}},{\"../../plots/plots\":619}],785:[function(t,e,r){\"use strict\";var n=t(\"../pie/calc\");e.exports={calc:function(t,e){return n.calc(t,e)},crossTraceCalc:function(t){n.crossTraceCalc(t,{type:\"funnelarea\"})}}},{\"../pie/calc\":902}],786:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./attributes\"),a=t(\"../../plots/domain\").defaults,o=t(\"../bar/defaults\").handleText,s=t(\"../pie/defaults\").handleLabelsAndValues;e.exports=function(t,e,r,l){function c(r,a){return n.coerce(t,e,i,r,a)}var u=c(\"labels\"),f=c(\"values\"),h=s(u,f),p=h.len;if(e._hasLabels=h.hasLabels,e._hasValues=h.hasValues,!e._hasLabels&&e._hasValues&&(c(\"label0\"),c(\"dlabel\")),p){e._length=p,c(\"marker.line.width\")&&c(\"marker.line.color\",l.paper_bgcolor),c(\"marker.colors\"),c(\"scalegroup\");var d,g=c(\"text\"),m=c(\"texttemplate\");if(m||(d=c(\"textinfo\",Array.isArray(g)?\"text+percent\":\"percent\")),c(\"hovertext\"),c(\"hovertemplate\"),m||d&&\"none\"!==d){var v=c(\"textposition\");o(t,e,l,c,v,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1})}a(e,l,c),c(\"title.text\")&&(c(\"title.position\"),n.coerceFont(c,\"title.font\",l.font)),c(\"aspectratio\"),c(\"baseratio\")}else e.visible=!1}},{\"../../lib\":503,\"../../plots/domain\":584,\"../bar/defaults\":652,\"../pie/defaults\":903,\"./attributes\":783}],787:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"funnelarea\",basePlotModule:t(\"./base_plot\"),categories:[\"pie-like\",\"funnelarea\",\"showLegend\"],attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\"),supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\").calc,crossTraceCalc:t(\"./calc\").crossTraceCalc,plot:t(\"./plot\"),style:t(\"./style\"),styleOne:t(\"../pie/style_one\"),meta:{}}},{\"../pie/style_one\":911,\"./attributes\":783,\"./base_plot\":784,\"./calc\":785,\"./defaults\":786,\"./layout_attributes\":788,\"./layout_defaults\":789,\"./plot\":790,\"./style\":791}],788:[function(t,e,r){\"use strict\";var n=t(\"../pie/layout_attributes\").hiddenlabels;e.exports={hiddenlabels:n,funnelareacolorway:{valType:\"colorlist\",editType:\"calc\"},extendfunnelareacolors:{valType:\"boolean\",dflt:!0,editType:\"calc\"}}},{\"../pie/layout_attributes\":907}],789:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e){function r(r,a){return n.coerce(t,e,i,r,a)}r(\"hiddenlabels\"),r(\"funnelareacolorway\",e.colorway),r(\"extendfunnelareacolors\")}},{\"../../lib\":503,\"./layout_attributes\":788}],790:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../components/drawing\"),a=t(\"../../lib\"),o=a.strScale,s=a.strTranslate,l=t(\"../../lib/svg_text_utils\"),c=t(\"../bar/plot\").toMoveInsideBar,u=t(\"../bar/uniform_text\"),f=u.recordMinTextSize,h=u.clearMinTextSize,p=t(\"../pie/helpers\"),d=t(\"../pie/plot\"),g=d.attachFxHandlers,m=d.determineInsideTextFont,v=d.layoutAreas,y=d.prerenderTitles,x=d.positionTitleOutside,b=d.formatSliceLabel;function _(t,e){return\"l\"+(e[0]-t[0])+\",\"+(e[1]-t[1])}e.exports=function(t,e){var r=t._fullLayout;h(\"funnelarea\",r),y(e,t),v(e,r._size),a.makeTraceGroups(r._funnelarealayer,e,\"trace\").each((function(e){var u=n.select(this),h=e[0],d=h.trace;!function(t){if(!t.length)return;var e=t[0],r=e.trace,n=r.aspectratio,i=r.baseratio;i>.999&&(i=.999);var a,o=Math.pow(i,2),s=e.vTotal,l=s,c=s*o/(1-o)/s;function u(){var t,e={x:t=Math.sqrt(c),y:-t};return[e.x,e.y]}var f,h,p=[];for(p.push(u()),f=t.length-1;f>-1;f--)if(!(h=t[f]).hidden){var d=h.v/l;c+=d,p.push(u())}var g=1/0,m=-1/0;for(f=0;f-1;f--)if(!(h=t[f]).hidden){var A=p[k+=1][0],M=p[k][1];h.TL=[-A,M],h.TR=[A,M],h.BL=w,h.BR=T,h.pxmid=(S=h.TR,E=h.BR,[.5*(S[0]+E[0]),.5*(S[1]+E[1])]),w=h.TL,T=h.TR}var S,E}(e),u.each((function(){var u=n.select(this).selectAll(\"g.slice\").data(e);u.enter().append(\"g\").classed(\"slice\",!0),u.exit().remove(),u.each((function(o,s){if(o.hidden)n.select(this).selectAll(\"path,g\").remove();else{o.pointNumber=o.i,o.curveNumber=d.index;var u=h.cx,v=h.cy,y=n.select(this),x=y.selectAll(\"path.surface\").data([o]);x.enter().append(\"path\").classed(\"surface\",!0).style({\"pointer-events\":\"all\"}),y.call(g,t,e);var w=\"M\"+(u+o.TR[0])+\",\"+(v+o.TR[1])+_(o.TR,o.BR)+_(o.BR,o.BL)+_(o.BL,o.TL)+\"Z\";x.attr(\"d\",w),b(t,o,h);var T=p.castOption(d.textposition,o.pts),k=y.selectAll(\"g.slicetext\").data(o.text&&\"none\"!==T?[0]:[]);k.enter().append(\"g\").classed(\"slicetext\",!0),k.exit().remove(),k.each((function(){var h=a.ensureSingle(n.select(this),\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),p=a.ensureUniformFontSize(t,m(d,o,r.font));h.text(o.text).attr({class:\"slicetext\",transform:\"\",\"text-anchor\":\"middle\"}).call(i.font,p).call(l.convertToTspans,t);var g,y,x,b=i.bBox(h.node()),_=Math.min(o.BL[1],o.BR[1])+v,w=Math.max(o.TL[1],o.TR[1])+v;y=Math.max(o.TL[0],o.BL[0])+u,x=Math.min(o.TR[0],o.BR[0])+u,(g=c(y,x,_,w,b,{isHorizontal:!0,constrained:!0,angle:0,anchor:\"middle\"})).fontSize=p.size,f(d.type,g,r),e[s].transform=g,h.attr(\"transform\",a.getTextTransform(g))}))}}));var v=n.select(this).selectAll(\"g.titletext\").data(d.title.text?[0]:[]);v.enter().append(\"g\").classed(\"titletext\",!0),v.exit().remove(),v.each((function(){var e=a.ensureSingle(n.select(this),\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),c=d.title.text;d._meta&&(c=a.templateString(c,d._meta)),e.text(c).attr({class:\"titletext\",transform:\"\",\"text-anchor\":\"middle\"}).call(i.font,d.title.font).call(l.convertToTspans,t);var u=x(h,r._size);e.attr(\"transform\",s(u.x,u.y)+o(Math.min(1,u.scale))+s(u.tx,u.ty))}))}))}))}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../bar/plot\":659,\"../bar/uniform_text\":664,\"../pie/helpers\":905,\"../pie/plot\":909,\"@plotly/d3\":58}],791:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../pie/style_one\"),a=t(\"../bar/uniform_text\").resizeText;e.exports=function(t){var e=t._fullLayout._funnelarealayer.selectAll(\".trace\");a(t,e,\"funnelarea\"),e.each((function(t){var e=t[0].trace,r=n.select(this);r.style({opacity:e.opacity}),r.selectAll(\"path.surface\").each((function(t){n.select(this).call(i,t,e)}))}))}},{\"../bar/uniform_text\":664,\"../pie/style_one\":911,\"@plotly/d3\":58}],792:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\"),i=t(\"../../plots/attributes\"),a=t(\"../../plots/font_attributes\"),o=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,s=t(\"../../plots/template_attributes\").hovertemplateAttrs,l=t(\"../../plots/template_attributes\").texttemplateAttrs,c=t(\"../../components/colorscale/attributes\"),u=t(\"../../lib/extend\").extendFlat;e.exports=u({z:{valType:\"data_array\",editType:\"calc\"},x:u({},n.x,{impliedEdits:{xtype:\"array\"}}),x0:u({},n.x0,{impliedEdits:{xtype:\"scaled\"}}),dx:u({},n.dx,{impliedEdits:{xtype:\"scaled\"}}),y:u({},n.y,{impliedEdits:{ytype:\"array\"}}),y0:u({},n.y0,{impliedEdits:{ytype:\"scaled\"}}),dy:u({},n.dy,{impliedEdits:{ytype:\"scaled\"}}),xperiod:u({},n.xperiod,{impliedEdits:{xtype:\"scaled\"}}),yperiod:u({},n.yperiod,{impliedEdits:{ytype:\"scaled\"}}),xperiod0:u({},n.xperiod0,{impliedEdits:{xtype:\"scaled\"}}),yperiod0:u({},n.yperiod0,{impliedEdits:{ytype:\"scaled\"}}),xperiodalignment:u({},n.xperiodalignment,{impliedEdits:{xtype:\"scaled\"}}),yperiodalignment:u({},n.yperiodalignment,{impliedEdits:{ytype:\"scaled\"}}),text:{valType:\"data_array\",editType:\"calc\"},hovertext:{valType:\"data_array\",editType:\"calc\"},transpose:{valType:\"boolean\",dflt:!1,editType:\"calc\"},xtype:{valType:\"enumerated\",values:[\"array\",\"scaled\"],editType:\"calc+clearAxisTypes\"},ytype:{valType:\"enumerated\",values:[\"array\",\"scaled\"],editType:\"calc+clearAxisTypes\"},zsmooth:{valType:\"enumerated\",values:[\"fast\",\"best\",!1],dflt:!1,editType:\"calc\"},hoverongaps:{valType:\"boolean\",dflt:!0,editType:\"none\"},connectgaps:{valType:\"boolean\",editType:\"calc\"},xgap:{valType:\"number\",dflt:0,min:0,editType:\"plot\"},ygap:{valType:\"number\",dflt:0,min:0,editType:\"plot\"},xhoverformat:o(\"x\"),yhoverformat:o(\"y\"),zhoverformat:o(\"z\",1),hovertemplate:s(),texttemplate:l({arrayOk:!1,editType:\"plot\"},{keys:[\"x\",\"y\",\"z\",\"text\"]}),textfont:a({editType:\"plot\",autoSize:!0,autoColor:!0,colorEditType:\"style\"}),showlegend:u({},i.showlegend,{dflt:!1})},{transforms:void 0},c(\"\",{cLetter:\"z\",autoColorDflt:!1}))},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/font_attributes\":585,\"../../plots/template_attributes\":633,\"../scatter/attributes\":926}],793:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\"),a=t(\"../../plots/cartesian/axes\"),o=t(\"../../plots/cartesian/align_period\"),s=t(\"../histogram2d/calc\"),l=t(\"../../components/colorscale/calc\"),c=t(\"./convert_column_xyz\"),u=t(\"./clean_2d_array\"),f=t(\"./interp2d\"),h=t(\"./find_empties\"),p=t(\"./make_bound_array\"),d=t(\"../../constants/numerical\").BADNUM;function g(t){for(var e=[],r=t.length,n=0;nD){O(\"x scale is not linear\");break}}if(x.length&&\"fast\"===P){var R=(x[x.length-1]-x[0])/(x.length-1),F=Math.abs(R/100);for(k=0;kF){O(\"y scale is not linear\");break}}}var B=i.maxRowLength(T),N=\"scaled\"===e.xtype?\"\":r,j=p(e,N,m,v,B,M),U=\"scaled\"===e.ytype?\"\":x,V=p(e,U,b,_,T.length,S);C||(e._extremes[M._id]=a.findExtremes(M,j),e._extremes[S._id]=a.findExtremes(S,V));var H={x:j,y:V,z:T,text:e._text||e.text,hovertext:e._hovertext||e.hovertext};if(e.xperiodalignment&&y&&(H.orig_x=y),e.yperiodalignment&&w&&(H.orig_y=w),N&&N.length===j.length-1&&(H.xCenter=N),U&&U.length===V.length-1&&(H.yCenter=U),L&&(H.xRanges=A.xRanges,H.yRanges=A.yRanges,H.pts=A.pts),E||l(t,e,{vals:T,cLetter:\"z\"}),E&&e.contours&&\"heatmap\"===e.contours.coloring){var q={type:\"contour\"===e.type?\"heatmap\":\"histogram2d\",xcalendar:e.xcalendar,ycalendar:e.ycalendar};H.xfill=p(q,N,m,v,B,M),H.yfill=p(q,U,b,_,T.length,S)}return[H]}},{\"../../components/colorscale/calc\":374,\"../../constants/numerical\":479,\"../../lib\":503,\"../../plots/cartesian/align_period\":551,\"../../plots/cartesian/axes\":554,\"../../registry\":638,\"../histogram2d/calc\":826,\"./clean_2d_array\":794,\"./convert_column_xyz\":796,\"./find_empties\":798,\"./interp2d\":801,\"./make_bound_array\":803}],794:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../lib\"),a=t(\"../../constants/numerical\").BADNUM;e.exports=function(t,e,r,o){var s,l,c,u,f,h;function p(t){if(n(t))return+t}if(e&&e.transpose){for(s=0,f=0;f=0;o--)(s=((f[[(r=(a=h[o])[0])-1,i=a[1]]]||g)[2]+(f[[r+1,i]]||g)[2]+(f[[r,i-1]]||g)[2]+(f[[r,i+1]]||g)[2])/20)&&(l[a]=[r,i,s],h.splice(o,1),c=!0);if(!c)throw\"findEmpties iterated with no new neighbors\";for(a in l)f[a]=l[a],u.push(l[a])}return u.sort((function(t,e){return e[2]-t[2]}))}},{\"../../lib\":503}],799:[function(t,e,r){\"use strict\";var n=t(\"../../components/fx\"),i=t(\"../../lib\"),a=t(\"../../plots/cartesian/axes\"),o=t(\"../../components/colorscale\").extractOpts;e.exports=function(t,e,r,s,l){l||(l={});var c,u,f,h,p=l.isContour,d=t.cd[0],g=d.trace,m=t.xa,v=t.ya,y=d.x,x=d.y,b=d.z,_=d.xCenter,w=d.yCenter,T=d.zmask,k=g.zhoverformat,A=y,M=x;if(!1!==t.index){try{f=Math.round(t.index[1]),h=Math.round(t.index[0])}catch(e){return void i.error(\"Error hovering on heatmap, pointNumber must be [row,col], found:\",t.index)}if(f<0||f>=b[0].length||h<0||h>b.length)return}else{if(n.inbox(e-y[0],e-y[y.length-1],0)>0||n.inbox(r-x[0],r-x[x.length-1],0)>0)return;if(p){var S;for(A=[2*y[0]-y[1]],S=1;Sg&&(v=Math.max(v,Math.abs(t[a][o]-d)/(m-g))))}return v}e.exports=function(t,e){var r,i=1;for(o(t,e),r=0;r.01;r++)i=o(t,e,a(i));return i>.01&&n.log(\"interp2d didn't converge quickly\",i),t}},{\"../../lib\":503}],802:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t,e){t(\"texttemplate\");var r=n.extendFlat({},e.font,{color:\"auto\",size:\"auto\"});n.coerceFont(t,\"textfont\",r)}},{\"../../lib\":503}],803:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\").isArrayOrTypedArray;e.exports=function(t,e,r,a,o,s){var l,c,u,f=[],h=n.traceIs(t,\"contour\"),p=n.traceIs(t,\"histogram\"),d=n.traceIs(t,\"gl2d\");if(i(e)&&e.length>1&&!p&&\"category\"!==s.type){var g=e.length;if(!(g<=o))return h?e.slice(0,o):e.slice(0,o+1);if(h||d)f=e.slice(0,o);else if(1===o)f=[e[0]-.5,e[0]+.5];else{for(f=[1.5*e[0]-.5*e[1]],u=1;u0;)_=w.c2p(R[S]),S--;for(_0;)M=T.c2p(F[S]),S--;if(MGt||Gt>T._length))for(E=Ut;EWt||Wt>w._length)){var Xt=u({x:Yt,y:qt},I,t._fullLayout);Xt.x=Yt,Xt.y=qt;var Zt=P.z[S][E];void 0===Zt?(Xt.z=\"\",Xt.zLabel=\"\"):(Xt.z=Zt,Xt.zLabel=s.tickText(Ft,Zt,\"hover\").text);var Jt=P.text&&P.text[S]&&P.text[S][E];void 0!==Jt&&!1!==Jt||(Jt=\"\"),Xt.text=Jt;var Kt=l.texttemplateString(Dt,Xt,t._fullLayout._d3locale,Xt,I._meta||{});if(Kt){var Qt=Kt.split(\"
\"),$t=Qt.length,te=0;for(L=0;L<$t;L++)te=Math.max(te,Qt[L].length);Ht.push({l:$t,c:te,t:Kt,x:Wt,y:Gt,z:Zt})}}}}var ee=I.textfont,re=ee.family,ne=ee.size,ie=t._fullLayout.font.size;if(!ne||\"auto\"===ne){var ae=1/0,oe=1/0,se=0,le=0;for(L=0;L0&&(a=!0);for(var l=0;la){var o=a-r[t];return r[t]=a,o}}return 0},max:function(t,e,r,i){var a=i[e];if(n(a)){if(a=Number(a),!n(r[t]))return r[t]=a,a;if(r[t]c?t>o?t>1.1*i?i:t>1.1*a?a:o:t>s?s:t>l?l:c:Math.pow(10,Math.floor(Math.log(t)/Math.LN10))}function p(t,e,r,n,a,s){if(n&&t>o){var l=d(e,a,s),c=d(r,a,s),u=t===i?0:1;return l[u]!==c[u]}return Math.floor(r/t)-Math.floor(e/t)>.1}function d(t,e,r){var n=e.c2d(t,i,r).split(\"-\");return\"\"===n[0]&&(n.unshift(),n[0]=\"-\"+n[0]),n}e.exports=function(t,e,r,n,a){var s,l,c=-1.1*e,h=-.1*e,p=t-h,d=r[0],g=r[1],m=Math.min(f(d+h,d+p,n,a),f(g+h,g+p,n,a)),v=Math.min(f(d+c,d+h,n,a),f(g+c,g+h,n,a));if(m>v&&vo){var y=s===i?1:6,x=s===i?\"M12\":\"M1\";return function(e,r){var o=n.c2d(e,i,a),s=o.indexOf(\"-\",y);s>0&&(o=o.substr(0,s));var c=n.d2c(o,0,a);if(cr.r2l(B)&&(j=o.tickIncrement(j,b.size,!0,p)),z.start=r.l2r(j),F||i.nestedProperty(e,v+\".start\").set(z.start)}var U=b.end,V=r.r2l(O.end),H=void 0!==V;if((b.endFound||H)&&V!==r.r2l(U)){var q=H?V:i.aggNums(Math.max,null,d);z.end=r.l2r(q),H||i.nestedProperty(e,v+\".start\").set(z.end)}var G=\"autobin\"+s;return!1===e._input[G]&&(e._input[v]=i.extendFlat({},e[v]||{}),delete e._input[G],delete e[G]),[z,d]}e.exports={calc:function(t,e){var r,a,p,d,g=[],m=[],v=\"h\"===e.orientation,y=o.getFromId(t,v?e.yaxis:e.xaxis),x=v?\"y\":\"x\",b={x:\"y\",y:\"x\"}[x],_=e[x+\"calendar\"],w=e.cumulative,T=h(t,e,y,x),k=T[0],A=T[1],M=\"string\"==typeof k.size,S=[],E=M?S:k,L=[],C=[],P=[],I=0,O=e.histnorm,z=e.histfunc,D=-1!==O.indexOf(\"density\");w.enabled&&D&&(O=O.replace(/ ?density$/,\"\"),D=!1);var R,F=\"max\"===z||\"min\"===z?null:0,B=l.count,N=c[O],j=!1,U=function(t){return y.r2c(t,0,_)};for(i.isArrayOrTypedArray(e[b])&&\"count\"!==z&&(R=e[b],j=\"avg\"===z,B=l[z]),r=U(k.start),p=U(k.end)+(r-o.tickIncrement(r,k.size,!1,_))/1e6;r=0&&d=0;n--)s(n);else if(\"increasing\"===e){for(n=1;n=0;n--)t[n]+=t[n+1];\"exclude\"===r&&(t.push(0),t.shift())}}(m,w.direction,w.currentbin);var K=Math.min(g.length,m.length),Q=[],$=0,tt=K-1;for(r=0;r=$;r--)if(m[r]){tt=r;break}for(r=$;r<=tt;r++)if(n(g[r])&&n(m[r])){var et={p:g[r],s:m[r],b:0};w.enabled||(et.pts=P[r],Y?et.ph0=et.ph1=P[r].length?A[P[r][0]]:g[r]:(e._computePh=!0,et.ph0=q(S[r]),et.ph1=q(S[r+1],!0))),Q.push(et)}return 1===Q.length&&(Q[0].width1=o.tickIncrement(Q[0].p,k.size,!1,_)-Q[0].p),s(Q,e),i.isArrayOrTypedArray(e.selectedpoints)&&i.tagSelected(Q,e,Z),Q},calcAllAutoBins:h}},{\"../../lib\":503,\"../../plots/cartesian/axes\":554,\"../../registry\":638,\"../bar/arrays_to_calcdata\":647,\"./average\":813,\"./bin_functions\":815,\"./bin_label_vals\":816,\"./norm_functions\":824,\"fast-isnumeric\":190}],818:[function(t,e,r){\"use strict\";e.exports={eventDataKeys:[\"binNumber\"]}},{}],819:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../plots/cartesian/axis_ids\"),a=t(\"../../registry\").traceIs,o=t(\"../bar/defaults\").handleGroupingDefaults,s=n.nestedProperty,l=t(\"../../plots/cartesian/constraints\").getAxisGroup,c=[{aStr:{x:\"xbins.start\",y:\"ybins.start\"},name:\"start\"},{aStr:{x:\"xbins.end\",y:\"ybins.end\"},name:\"end\"},{aStr:{x:\"xbins.size\",y:\"ybins.size\"},name:\"size\"},{aStr:{x:\"nbinsx\",y:\"nbinsy\"},name:\"nbins\"}],u=[\"x\",\"y\"];e.exports=function(t,e){var r,f,h,p,d,g,m,v=e._histogramBinOpts={},y=[],x={},b=[];function _(t,e){return n.coerce(r._input,r,r._module.attributes,t,e)}function w(t){return\"v\"===t.orientation?\"x\":\"y\"}function T(t,r,a){var o=t.uid+\"__\"+a;r||(r=o);var s=function(t,r){return i.getFromTrace({_fullLayout:e},t,r).type}(t,a),l=t[a+\"calendar\"]||\"\",c=v[r],u=!0;c&&(s===c.axType&&l===c.calendar?(u=!1,c.traces.push(t),c.dirs.push(a)):(r=o,s!==c.axType&&n.warn([\"Attempted to group the bins of trace\",t.index,\"set on a\",\"type:\"+s,\"axis\",\"with bins on\",\"type:\"+c.axType,\"axis.\"].join(\" \")),l!==c.calendar&&n.warn([\"Attempted to group the bins of trace\",t.index,\"set with a\",l,\"calendar\",\"with bins\",c.calendar?\"on a \"+c.calendar+\" calendar\":\"w/o a set calendar\"].join(\" \")))),u&&(v[r]={traces:[t],dirs:[a],axType:s,calendar:t[a+\"calendar\"]||\"\"}),t[\"_\"+a+\"bingroup\"]=r}for(d=0;dS&&T.splice(S,T.length-S),M.length>S&&M.splice(S,M.length-S);var E=[],L=[],C=[],P=\"string\"==typeof w.size,I=\"string\"==typeof A.size,O=[],z=[],D=P?O:w,R=I?z:A,F=0,B=[],N=[],j=e.histnorm,U=e.histfunc,V=-1!==j.indexOf(\"density\"),H=\"max\"===U||\"min\"===U?null:0,q=a.count,G=o[j],Y=!1,W=[],X=[],Z=\"z\"in e?e.z:\"marker\"in e&&Array.isArray(e.marker.color)?e.marker.color:\"\";Z&&\"count\"!==U&&(Y=\"avg\"===U,q=a[U]);var J=w.size,K=x(w.start),Q=x(w.end)+(K-i.tickIncrement(K,J,!1,v))/1e6;for(r=K;r=0&&p=0&&d-1,flipY:E.tiling.flip.indexOf(\"y\")>-1,orientation:E.tiling.orientation,pad:{inner:E.tiling.pad},maxDepth:E._maxDepth}).descendants(),O=1/0,z=-1/0;I.forEach((function(t){var e=t.depth;e>=E._maxDepth?(t.x0=t.x1=(t.x0+t.x1)/2,t.y0=t.y1=(t.y0+t.y1)/2):(O=Math.min(O,e),z=Math.max(z,e))})),p=p.data(I,u.getPtId),E._maxVisibleLayers=isFinite(z)?z-O+1:0,p.enter().append(\"g\").classed(\"slice\",!0),T(p,!1,{},[g,m],x),p.order();var D=null;if(w&&M){var R=u.getPtId(M);p.each((function(t){null===D&&u.getPtId(t)===R&&(D={x0:t.x0,x1:t.x1,y0:t.y0,y1:t.y1})}))}var F=function(){return D||{x0:0,x1:g,y0:0,y1:m}},B=p;return w&&(B=B.transition().each(\"end\",(function(){var e=n.select(this);u.setSliceCursor(e,t,{hideOnRoot:!0,hideOnLeaves:!1,isTransitioning:!1})}))),B.each((function(s){s._x0=v(s.x0),s._x1=v(s.x1),s._y0=y(s.y0),s._y1=y(s.y1),s._hoverX=v(s.x1-E.tiling.pad),s._hoverY=y(P?s.y1-E.tiling.pad/2:s.y0+E.tiling.pad/2);var p=n.select(this),d=i.ensureSingle(p,\"path\",\"surface\",(function(t){t.style(\"pointer-events\",\"all\")}));w?d.transition().attrTween(\"d\",(function(t){var e=k(t,!1,F(),[g,m],{orientation:E.tiling.orientation,flipX:E.tiling.flip.indexOf(\"x\")>-1,flipY:E.tiling.flip.indexOf(\"y\")>-1});return function(t){return x(e(t))}})):d.attr(\"d\",x),p.call(f,r,t,e,{styleOne:l,eventDataKeys:c.eventDataKeys,transitionTime:c.CLICK_TRANSITION_TIME,transitionEasing:c.CLICK_TRANSITION_EASING}).call(u.setSliceCursor,t,{isTransitioning:t._transitioning}),d.call(l,s,E,{hovered:!1}),s.x0===s.x1||s.y0===s.y1?s._text=\"\":s._text=h(s,r,E,e,S)||\"\";var T=i.ensureSingle(p,\"g\",\"slicetext\"),M=i.ensureSingle(T,\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),I=i.ensureUniformFontSize(t,u.determineTextFont(E,s,S.font));M.text(s._text||\" \").classed(\"slicetext\",!0).attr(\"text-anchor\",C?\"end\":L?\"start\":\"middle\").call(a.font,I).call(o.convertToTspans,t),s.textBB=a.bBox(M.node()),s.transform=b(s,{fontSize:I.size}),s.transform.fontSize=I.size,w?M.transition().attrTween(\"transform\",(function(t){var e=A(t,!1,F(),[g,m]);return function(t){return _(e(t))}})):M.attr(\"transform\",_(s))})),D}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../sunburst/fx\":1050,\"../sunburst/helpers\":1051,\"../sunburst/plot\":1055,\"../treemap/constants\":1074,\"./partition\":842,\"./style\":844,\"@plotly/d3\":58}],839:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"icicle\",basePlotModule:t(\"./base_plot\"),categories:[],animatable:!0,attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\"),supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\").calc,crossTraceCalc:t(\"./calc\").crossTraceCalc,plot:t(\"./plot\"),style:t(\"./style\").style,colorbar:t(\"../scatter/marker_colorbar\"),meta:{}}},{\"../scatter/marker_colorbar\":944,\"./attributes\":834,\"./base_plot\":835,\"./calc\":836,\"./defaults\":837,\"./layout_attributes\":840,\"./layout_defaults\":841,\"./plot\":843,\"./style\":844}],840:[function(t,e,r){\"use strict\";e.exports={iciclecolorway:{valType:\"colorlist\",editType:\"calc\"},extendiciclecolors:{valType:\"boolean\",dflt:!0,editType:\"calc\"}}},{}],841:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e){function r(r,a){return n.coerce(t,e,i,r,a)}r(\"iciclecolorway\",e.colorway),r(\"extendiciclecolors\")}},{\"../../lib\":503,\"./layout_attributes\":840}],842:[function(t,e,r){\"use strict\";var n=t(\"d3-hierarchy\"),i=t(\"../treemap/flip_tree\");e.exports=function(t,e,r){var a=r.flipX,o=r.flipY,s=\"h\"===r.orientation,l=r.maxDepth,c=e[0],u=e[1];l&&(c=(t.height+1)*e[0]/Math.min(t.height+1,l),u=(t.height+1)*e[1]/Math.min(t.height+1,l));var f=n.partition().padding(r.pad.inner).size(s?[e[1],c]:[e[0],u])(t);return(s||a||o)&&i(f,e,{swapXY:s,flipX:a,flipY:o}),f}},{\"../treemap/flip_tree\":1079,\"d3-hierarchy\":115}],843:[function(t,e,r){\"use strict\";var n=t(\"../treemap/draw\"),i=t(\"./draw_descendants\");e.exports=function(t,e,r,a){return n(t,e,r,a,{type:\"icicle\",drawDescendants:i})}},{\"../treemap/draw\":1076,\"./draw_descendants\":838}],844:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../components/color\"),a=t(\"../../lib\"),o=t(\"../bar/uniform_text\").resizeText;function s(t,e,r){var n=e.data.data,o=!e.children,s=n.i,l=a.castOption(r,s,\"marker.line.color\")||i.defaultLine,c=a.castOption(r,s,\"marker.line.width\")||0;t.style(\"stroke-width\",c).call(i.fill,n.color).call(i.stroke,l).style(\"opacity\",o?r.leaf.opacity:null)}e.exports={style:function(t){var e=t._fullLayout._iciclelayer.selectAll(\".trace\");o(t,e,\"icicle\"),e.each((function(t){var e=n.select(this),r=t[0].trace;e.style(\"opacity\",r.opacity),e.selectAll(\"path.surface\").each((function(t){n.select(this).call(s,t,r)}))}))},styleOne:s}},{\"../../components/color\":366,\"../../lib\":503,\"../bar/uniform_text\":664,\"@plotly/d3\":58}],845:[function(t,e,r){\"use strict\";for(var n=t(\"../../plots/attributes\"),i=t(\"../../plots/template_attributes\").hovertemplateAttrs,a=t(\"../../lib/extend\").extendFlat,o=t(\"./constants\").colormodel,s=[\"rgb\",\"rgba\",\"rgba256\",\"hsl\",\"hsla\"],l=[],c=[],u=0;u0||n.inbox(r-o.y0,r-(o.y0+o.h*s.dy),0)>0)){var u,f=Math.floor((e-o.x0)/s.dx),h=Math.floor(Math.abs(r-o.y0)/s.dy);if(s._hasZ?u=o.z[h][f]:s._hasSource&&(u=s._canvas.el.getContext(\"2d\").getImageData(f,h,1,1).data),u){var p,d=o.hi||s.hoverinfo;if(d){var g=d.split(\"+\");-1!==g.indexOf(\"all\")&&(g=[\"color\"]),-1!==g.indexOf(\"color\")&&(p=!0)}var m,v=a.colormodel[s.colormodel],y=v.colormodel||s.colormodel,x=y.length,b=s._scaler(u),_=v.suffix,w=[];(s.hovertemplate||p)&&(w.push(\"[\"+[b[0]+_[0],b[1]+_[1],b[2]+_[2]].join(\", \")),4===x&&w.push(\", \"+b[3]+_[3]),w.push(\"]\"),w=w.join(\"\"),t.extraText=y.toUpperCase()+\": \"+w),Array.isArray(s.hovertext)&&Array.isArray(s.hovertext[h])?m=s.hovertext[h][f]:Array.isArray(s.text)&&Array.isArray(s.text[h])&&(m=s.text[h][f]);var T=c.c2p(o.y0+(h+.5)*s.dy),k=o.x0+(f+.5)*s.dx,A=o.y0+(h+.5)*s.dy,M=\"[\"+u.slice(0,s.colormodel.length).join(\", \")+\"]\";return[i.extendFlat(t,{index:[h,f],x0:l.c2p(o.x0+f*s.dx),x1:l.c2p(o.x0+(f+1)*s.dx),y0:T,y1:T,color:b,xVal:k,xLabelVal:k,yVal:A,yLabelVal:A,zLabelVal:M,text:m,hovertemplateLabels:{zLabel:M,colorLabel:w,\"color[0]Label\":b[0]+_[0],\"color[1]Label\":b[1]+_[1],\"color[2]Label\":b[2]+_[2],\"color[3]Label\":b[3]+_[3]}})]}}}},{\"../../components/fx\":406,\"../../lib\":503,\"./constants\":847}],852:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),calc:t(\"./calc\"),plot:t(\"./plot\"),style:t(\"./style\"),hoverPoints:t(\"./hover\"),eventData:t(\"./event_data\"),moduleType:\"trace\",name:\"image\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"cartesian\",\"svg\",\"2dMap\",\"noSortingByValue\"],animatable:!1,meta:{}}},{\"../../plots/cartesian\":568,\"./attributes\":845,\"./calc\":846,\"./defaults\":848,\"./event_data\":849,\"./hover\":851,\"./plot\":853,\"./style\":854}],853:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=i.strTranslate,o=t(\"../../constants/xmlns_namespaces\"),s=t(\"./constants\"),l=i.isIOS()||i.isSafari()||i.isIE();e.exports=function(t,e,r,c){var u=e.xaxis,f=e.yaxis,h=!(l||t._context._exportedPlot);i.makeTraceGroups(c,r,\"im\").each((function(e){var r=n.select(this),l=e[0],c=l.trace,p=(\"fast\"===c.zsmooth||!1===c.zsmooth&&h)&&!c._hasZ&&c._hasSource&&\"linear\"===u.type&&\"linear\"===f.type;c._realImage=p;var d,g,m,v,y,x,b=l.z,_=l.x0,w=l.y0,T=l.w,k=l.h,A=c.dx,M=c.dy;for(x=0;void 0===d&&x0;)g=u.c2p(_+x*A),x--;for(x=0;void 0===v&&x0;)y=f.c2p(w+x*M),x--;if(gI[0];if(O||z){var D=d+S/2,R=v+E/2;C+=\"transform:\"+a(D+\"px\",R+\"px\")+\"scale(\"+(O?-1:1)+\",\"+(z?-1:1)+\")\"+a(-D+\"px\",-R+\"px\")+\";\"}}L.attr(\"style\",C);var F=new Promise((function(t){if(c._hasZ)t();else if(c._hasSource)if(c._canvas&&c._canvas.el.width===T&&c._canvas.el.height===k&&c._canvas.source===c.source)t();else{var e=document.createElement(\"canvas\");e.width=T,e.height=k;var r=e.getContext(\"2d\");c._image=c._image||new Image;var n=c._image;n.onload=function(){r.drawImage(n,0,0),c._canvas={el:e,source:c.source},t()},n.setAttribute(\"src\",c.source)}})).then((function(){var t;if(c._hasZ)t=B((function(t,e){return b[e][t]})).toDataURL(\"image/png\");else if(c._hasSource)if(p)t=c.source;else{var e=c._canvas.el.getContext(\"2d\").getImageData(0,0,T,k).data;t=B((function(t,r){var n=4*(r*T+t);return[e[n],e[n+1],e[n+2],e[n+3]]})).toDataURL(\"image/png\")}L.attr({\"xlink:href\":t,height:E,width:S,x:d,y:v})}));t._promises.push(F)}function B(t){var e=document.createElement(\"canvas\");e.width=S,e.height=E;var r,n=e.getContext(\"2d\"),a=function(t){return i.constrain(Math.round(u.c2p(_+t*A)-d),0,S)},o=function(t){return i.constrain(Math.round(f.c2p(w+t*M)-v),0,E)},h=s.colormodel[c.colormodel],p=h.colormodel||c.colormodel,g=h.fmt;for(x=0;x0}function T(t){t.each((function(t){y.stroke(n.select(this),t.line.color)})).each((function(t){y.fill(n.select(this),t.color)})).style(\"stroke-width\",(function(t){return t.line.width}))}function k(t,e,r){var n=t._fullLayout,i=o.extendFlat({type:\"linear\",ticks:\"outside\",range:r,showline:!0},e),a={type:\"linear\",_id:\"x\"+e._id},s={letter:\"x\",font:n.font,noHover:!0,noTickson:!0};function l(t,e){return o.coerce(i,a,v,t,e)}return g(i,a,l,s,n),m(i,a,l,s),a}function A(t,e,r){return[Math.min(e/t.width,r/t.height),t,e+\"x\"+r]}function M(t,e,r,i){var a=document.createElementNS(\"http://www.w3.org/2000/svg\",\"text\"),o=n.select(a);return o.text(t).attr(\"x\",0).attr(\"y\",0).attr(\"text-anchor\",r).attr(\"data-unformatted\",t).call(p.convertToTspans,i).call(f.font,e),f.bBox(o.node())}function S(t,e,r,n,i,a){var s=\"_cache\"+e;t[s]&&t[s].key===i||(t[s]={key:i,value:r});var l=o.aggNums(a,null,[t[s].value,n],2);return t[s].value=l,l}e.exports=function(t,e,r,g){var m,v=t._fullLayout;w(r)&&g&&(m=g()),o.makeTraceGroups(v._indicatorlayer,e,\"trace\").each((function(e){var g,E,L,C,P,I=e[0].trace,O=n.select(this),z=I._hasGauge,D=I._isAngular,R=I._isBullet,F=I.domain,B={w:v._size.w*(F.x[1]-F.x[0]),h:v._size.h*(F.y[1]-F.y[0]),l:v._size.l+v._size.w*F.x[0],r:v._size.r+v._size.w*(1-F.x[1]),t:v._size.t+v._size.h*(1-F.y[1]),b:v._size.b+v._size.h*F.y[0]},N=B.l+B.w/2,j=B.t+B.h/2,U=Math.min(B.w/2,B.h),V=h.innerRadius*U,H=I.align||\"center\";if(E=j,z){if(D&&(g=N,E=j+U/2,L=function(t){return function(t,e){var r=Math.sqrt(t.width/2*(t.width/2)+t.height*t.height);return[e/r,t,e]}(t,.9*V)}),R){var q=h.bulletPadding,G=1-h.bulletNumberDomainSize+q;g=B.l+(G+(1-G)*b[H])*B.w,L=function(t){return A(t,(h.bulletNumberDomainSize-q)*B.w,B.h)}}}else g=B.l+b[H]*B.w,L=function(t){return A(t,B.w,B.h)};!function(t,e,r,i){var c,u,h,g=r[0].trace,m=i.numbersX,v=i.numbersY,T=g.align||\"center\",A=x[T],E=i.transitionOpts,L=i.onComplete,C=o.ensureSingle(e,\"g\",\"numbers\"),P=[];g._hasNumber&&P.push(\"number\");g._hasDelta&&(P.push(\"delta\"),\"left\"===g.delta.position&&P.reverse());var I=C.selectAll(\"text\").data(P);function O(e,r,n,i){if(!e.match(\"s\")||n>=0==i>=0||r(n).slice(-1).match(_)||r(i).slice(-1).match(_))return r;var a=e.slice().replace(\"s\",\"f\").replace(/\\d+/,(function(t){return parseInt(t)-1})),o=k(t,{tickformat:a});return function(t){return Math.abs(t)<1?d.tickText(o,t).text:r(t)}}I.enter().append(\"text\"),I.attr(\"text-anchor\",(function(){return A})).attr(\"class\",(function(t){return t})).attr(\"x\",null).attr(\"y\",null).attr(\"dx\",null).attr(\"dy\",null),I.exit().remove();var z,D=g.mode+g.align;g._hasDelta&&(z=function(){var e=k(t,{tickformat:g.delta.valueformat},g._range);e.setScale(),d.prepTicks(e);var i=function(t){return d.tickText(e,t).text},o=function(t){return g.delta.relative?t.relativeDelta:t.delta},s=function(t,e){return 0===t||\"number\"!=typeof t||isNaN(t)?\"-\":(t>0?g.delta.increasing.symbol:g.delta.decreasing.symbol)+e(t)},l=function(t){return t.delta>=0?g.delta.increasing.color:g.delta.decreasing.color};void 0===g._deltaLastValue&&(g._deltaLastValue=o(r[0]));var c=C.select(\"text.delta\");function h(){c.text(s(o(r[0]),i)).call(y.fill,l(r[0])).call(p.convertToTspans,t)}return c.call(f.font,g.delta.font).call(y.fill,l({delta:g._deltaLastValue})),w(E)?c.transition().duration(E.duration).ease(E.easing).tween(\"text\",(function(){var t=n.select(this),e=o(r[0]),c=g._deltaLastValue,u=O(g.delta.valueformat,i,c,e),f=a(c,e);return g._deltaLastValue=e,function(e){t.text(s(f(e),u)),t.call(y.fill,l({delta:f(e)}))}})).each(\"end\",(function(){h(),L&&L()})).each(\"interrupt\",(function(){h(),L&&L()})):h(),u=M(s(o(r[0]),i),g.delta.font,A,t),c}(),D+=g.delta.position+g.delta.font.size+g.delta.font.family+g.delta.valueformat,D+=g.delta.increasing.symbol+g.delta.decreasing.symbol,h=u);g._hasNumber&&(!function(){var e=k(t,{tickformat:g.number.valueformat},g._range);e.setScale(),d.prepTicks(e);var i=function(t){return d.tickText(e,t).text},o=g.number.suffix,s=g.number.prefix,l=C.select(\"text.number\");function u(){var e=\"number\"==typeof r[0].y?s+i(r[0].y)+o:\"-\";l.text(e).call(f.font,g.number.font).call(p.convertToTspans,t)}w(E)?l.transition().duration(E.duration).ease(E.easing).each(\"end\",(function(){u(),L&&L()})).each(\"interrupt\",(function(){u(),L&&L()})).attrTween(\"text\",(function(){var t=n.select(this),e=a(r[0].lastY,r[0].y);g._lastValue=r[0].y;var l=O(g.number.valueformat,i,r[0].lastY,r[0].y);return function(r){t.text(s+l(e(r))+o)}})):u(),c=M(s+i(r[0].y)+o,g.number.font,A,t)}(),D+=g.number.font.size+g.number.font.family+g.number.valueformat+g.number.suffix+g.number.prefix,h=c);if(g._hasDelta&&g._hasNumber){var R,F,B=[(c.left+c.right)/2,(c.top+c.bottom)/2],N=[(u.left+u.right)/2,(u.top+u.bottom)/2],j=.75*g.delta.font.size;\"left\"===g.delta.position&&(R=S(g,\"deltaPos\",0,-1*(c.width*b[g.align]+u.width*(1-b[g.align])+j),D,Math.min),F=B[1]-N[1],h={width:c.width+u.width+j,height:Math.max(c.height,u.height),left:u.left+R,right:c.right,top:Math.min(c.top,u.top+F),bottom:Math.max(c.bottom,u.bottom+F)}),\"right\"===g.delta.position&&(R=S(g,\"deltaPos\",0,c.width*(1-b[g.align])+u.width*b[g.align]+j,D,Math.max),F=B[1]-N[1],h={width:c.width+u.width+j,height:Math.max(c.height,u.height),left:c.left,right:u.right+R,top:Math.min(c.top,u.top+F),bottom:Math.max(c.bottom,u.bottom+F)}),\"bottom\"===g.delta.position&&(R=null,F=u.height,h={width:Math.max(c.width,u.width),height:c.height+u.height,left:Math.min(c.left,u.left),right:Math.max(c.right,u.right),top:c.bottom-c.height,bottom:c.bottom+u.height}),\"top\"===g.delta.position&&(R=null,F=c.top,h={width:Math.max(c.width,u.width),height:c.height+u.height,left:Math.min(c.left,u.left),right:Math.max(c.right,u.right),top:c.bottom-c.height-u.height,bottom:c.bottom}),z.attr({dx:R,dy:F})}(g._hasNumber||g._hasDelta)&&C.attr(\"transform\",(function(){var t=i.numbersScaler(h);D+=t[2];var e,r=S(g,\"numbersScale\",1,t[0],D,Math.min);g._scaleNumbers||(r=1),e=g._isAngular?v-r*h.bottom:v-r*(h.top+h.bottom)/2,g._numbersTop=r*h.top+e;var n=h[T];\"center\"===T&&(n=(h.left+h.right)/2);var a=m-r*n;return a=S(g,\"numbersTranslate\",0,a,D,Math.max),l(a,e)+s(r)}))}(t,O,e,{numbersX:g,numbersY:E,numbersScaler:L,transitionOpts:r,onComplete:m}),z&&(C={range:I.gauge.axis.range,color:I.gauge.bgcolor,line:{color:I.gauge.bordercolor,width:0},thickness:1},P={range:I.gauge.axis.range,color:\"rgba(0, 0, 0, 0)\",line:{color:I.gauge.bordercolor,width:I.gauge.borderwidth},thickness:1});var Y=O.selectAll(\"g.angular\").data(D?e:[]);Y.exit().remove();var W=O.selectAll(\"g.angularaxis\").data(D?e:[]);W.exit().remove(),D&&function(t,e,r,a){var o,s,f,h,p=r[0].trace,g=a.size,m=a.radius,v=a.innerRadius,y=a.gaugeBg,x=a.gaugeOutline,b=[g.l+g.w/2,g.t+g.h/2+m/2],_=a.gauge,A=a.layer,M=a.transitionOpts,S=a.onComplete,E=Math.PI/2;function L(t){var e=p.gauge.axis.range[0],r=(t-e)/(p.gauge.axis.range[1]-e)*Math.PI-E;return r<-E?-E:r>E?E:r}function C(t){return n.svg.arc().innerRadius((v+m)/2-t/2*(m-v)).outerRadius((v+m)/2+t/2*(m-v)).startAngle(-E)}function P(t){t.attr(\"d\",(function(t){return C(t.thickness).startAngle(L(t.range[0])).endAngle(L(t.range[1]))()}))}_.enter().append(\"g\").classed(\"angular\",!0),_.attr(\"transform\",l(b[0],b[1])),A.enter().append(\"g\").classed(\"angularaxis\",!0).classed(\"crisp\",!0),A.selectAll(\"g.xangularaxistick,path,text\").remove(),(o=k(t,p.gauge.axis)).type=\"linear\",o.range=p.gauge.axis.range,o._id=\"xangularaxis\",o.ticklabeloverflow=\"allow\",o.setScale();var I=function(t){return(o.range[0]-t.x)/(o.range[1]-o.range[0])*Math.PI+Math.PI},O={},z=d.makeLabelFns(o,0).labelStandoff;O.xFn=function(t){var e=I(t);return Math.cos(e)*z},O.yFn=function(t){var e=I(t),r=Math.sin(e)>0?.2:1;return-Math.sin(e)*(z+t.fontSize*r)+Math.abs(Math.cos(e))*(t.fontSize*u)},O.anchorFn=function(t){var e=I(t),r=Math.cos(e);return Math.abs(r)<.1?\"middle\":r>0?\"start\":\"end\"},O.heightFn=function(t,e,r){var n=I(t);return-.5*(1+Math.sin(n))*r};var D=function(t){return l(b[0]+m*Math.cos(t),b[1]-m*Math.sin(t))};f=function(t){return D(I(t))};if(s=d.calcTicks(o),h=d.getTickSigns(o)[2],o.visible){h=\"inside\"===o.ticks?-1:1;var R=(o.linewidth||1)/2;d.drawTicks(t,o,{vals:s,layer:A,path:\"M\"+h*R+\",0h\"+h*o.ticklen,transFn:function(t){var e=I(t);return D(e)+\"rotate(\"+-c(e)+\")\"}}),d.drawLabels(t,o,{vals:s,layer:A,transFn:f,labelFns:O})}var F=[y].concat(p.gauge.steps),B=_.selectAll(\"g.bg-arc\").data(F);B.enter().append(\"g\").classed(\"bg-arc\",!0).append(\"path\"),B.select(\"path\").call(P).call(T),B.exit().remove();var N=C(p.gauge.bar.thickness),j=_.selectAll(\"g.value-arc\").data([p.gauge.bar]);j.enter().append(\"g\").classed(\"value-arc\",!0).append(\"path\");var U=j.select(\"path\");w(M)?(U.transition().duration(M.duration).ease(M.easing).each(\"end\",(function(){S&&S()})).each(\"interrupt\",(function(){S&&S()})).attrTween(\"d\",(V=N,H=L(r[0].lastY),q=L(r[0].y),function(){var t=i(H,q);return function(e){return V.endAngle(t(e))()}})),p._lastValue=r[0].y):U.attr(\"d\",\"number\"==typeof r[0].y?N.endAngle(L(r[0].y)):\"M0,0Z\");var V,H,q;U.call(T),j.exit().remove(),F=[];var G=p.gauge.threshold.value;(G||0===G)&&F.push({range:[G,G],color:p.gauge.threshold.color,line:{color:p.gauge.threshold.line.color,width:p.gauge.threshold.line.width},thickness:p.gauge.threshold.thickness});var Y=_.selectAll(\"g.threshold-arc\").data(F);Y.enter().append(\"g\").classed(\"threshold-arc\",!0).append(\"path\"),Y.select(\"path\").call(P).call(T),Y.exit().remove();var W=_.selectAll(\"g.gauge-outline\").data([x]);W.enter().append(\"g\").classed(\"gauge-outline\",!0).append(\"path\"),W.select(\"path\").call(P).call(T),W.exit().remove()}(t,0,e,{radius:U,innerRadius:V,gauge:Y,layer:W,size:B,gaugeBg:C,gaugeOutline:P,transitionOpts:r,onComplete:m});var X=O.selectAll(\"g.bullet\").data(R?e:[]);X.exit().remove();var Z=O.selectAll(\"g.bulletaxis\").data(R?e:[]);Z.exit().remove(),R&&function(t,e,r,n){var i,a,o,s,c,u=r[0].trace,f=n.gauge,p=n.layer,g=n.gaugeBg,m=n.gaugeOutline,v=n.size,x=u.domain,b=n.transitionOpts,_=n.onComplete;f.enter().append(\"g\").classed(\"bullet\",!0),f.attr(\"transform\",l(v.l,v.t)),p.enter().append(\"g\").classed(\"bulletaxis\",!0).classed(\"crisp\",!0),p.selectAll(\"g.xbulletaxistick,path,text\").remove();var A=v.h,M=u.gauge.bar.thickness*A,S=x.x[0],E=x.x[0]+(x.x[1]-x.x[0])*(u._hasNumber||u._hasDelta?1-h.bulletNumberDomainSize:1);(i=k(t,u.gauge.axis))._id=\"xbulletaxis\",i.domain=[S,E],i.setScale(),a=d.calcTicks(i),o=d.makeTransTickFn(i),s=d.getTickSigns(i)[2],c=v.t+v.h,i.visible&&(d.drawTicks(t,i,{vals:\"inside\"===i.ticks?d.clipEnds(i,a):a,layer:p,path:d.makeTickPath(i,c,s),transFn:o}),d.drawLabels(t,i,{vals:a,layer:p,transFn:o,labelFns:d.makeLabelFns(i,c)}));function L(t){t.attr(\"width\",(function(t){return Math.max(0,i.c2p(t.range[1])-i.c2p(t.range[0]))})).attr(\"x\",(function(t){return i.c2p(t.range[0])})).attr(\"y\",(function(t){return.5*(1-t.thickness)*A})).attr(\"height\",(function(t){return t.thickness*A}))}var C=[g].concat(u.gauge.steps),P=f.selectAll(\"g.bg-bullet\").data(C);P.enter().append(\"g\").classed(\"bg-bullet\",!0).append(\"rect\"),P.select(\"rect\").call(L).call(T),P.exit().remove();var I=f.selectAll(\"g.value-bullet\").data([u.gauge.bar]);I.enter().append(\"g\").classed(\"value-bullet\",!0).append(\"rect\"),I.select(\"rect\").attr(\"height\",M).attr(\"y\",(A-M)/2).call(T),w(b)?I.select(\"rect\").transition().duration(b.duration).ease(b.easing).each(\"end\",(function(){_&&_()})).each(\"interrupt\",(function(){_&&_()})).attr(\"width\",Math.max(0,i.c2p(Math.min(u.gauge.axis.range[1],r[0].y)))):I.select(\"rect\").attr(\"width\",\"number\"==typeof r[0].y?Math.max(0,i.c2p(Math.min(u.gauge.axis.range[1],r[0].y))):0);I.exit().remove();var O=r.filter((function(){return u.gauge.threshold.value||0===u.gauge.threshold.value})),z=f.selectAll(\"g.threshold-bullet\").data(O);z.enter().append(\"g\").classed(\"threshold-bullet\",!0).append(\"line\"),z.select(\"line\").attr(\"x1\",i.c2p(u.gauge.threshold.value)).attr(\"x2\",i.c2p(u.gauge.threshold.value)).attr(\"y1\",(1-u.gauge.threshold.thickness)/2*A).attr(\"y2\",(1-(1-u.gauge.threshold.thickness)/2)*A).call(y.stroke,u.gauge.threshold.line.color).style(\"stroke-width\",u.gauge.threshold.line.width),z.exit().remove();var D=f.selectAll(\"g.gauge-outline\").data([m]);D.enter().append(\"g\").classed(\"gauge-outline\",!0).append(\"rect\"),D.select(\"rect\").call(L).call(T),D.exit().remove()}(t,0,e,{gauge:X,layer:Z,size:B,gaugeBg:C,gaugeOutline:P,transitionOpts:r,onComplete:m});var J=O.selectAll(\"text.title\").data(e);J.exit().remove(),J.enter().append(\"text\").classed(\"title\",!0),J.attr(\"text-anchor\",(function(){return R?x.right:x[I.title.align]})).text(I.title.text).call(f.font,I.title.font).call(p.convertToTspans,t),J.attr(\"transform\",(function(){var t,e=B.l+B.w*b[I.title.align],r=h.titlePadding,n=f.bBox(J.node());if(z){if(D)if(I.gauge.axis.visible)t=f.bBox(W.node()).top-r-n.bottom;else t=B.t+B.h/2-U/2-n.bottom-r;R&&(t=E-(n.top+n.bottom)/2,e=B.l-h.bulletPadding*B.w)}else t=I._numbersTop-r-n.bottom;return l(e,t)}))}))}},{\"../../components/color\":366,\"../../components/drawing\":388,\"../../constants/alignment\":471,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../../plots/cartesian/axes\":554,\"../../plots/cartesian/axis_defaults\":556,\"../../plots/cartesian/layout_attributes\":569,\"../../plots/cartesian/position_defaults\":572,\"./constants\":858,\"@plotly/d3\":58,\"d3-interpolate\":116}],862:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/attributes\"),i=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,a=t(\"../../plots/template_attributes\").hovertemplateAttrs,o=t(\"../mesh3d/attributes\"),s=t(\"../../plots/attributes\"),l=t(\"../../lib/extend\").extendFlat,c=t(\"../../plot_api/edit_types\").overrideAll;var u=e.exports=c(l({x:{valType:\"data_array\"},y:{valType:\"data_array\"},z:{valType:\"data_array\"},value:{valType:\"data_array\"},isomin:{valType:\"number\"},isomax:{valType:\"number\"},surface:{show:{valType:\"boolean\",dflt:!0},count:{valType:\"integer\",dflt:2,min:1},fill:{valType:\"number\",min:0,max:1,dflt:1},pattern:{valType:\"flaglist\",flags:[\"A\",\"B\",\"C\",\"D\",\"E\"],extras:[\"all\",\"odd\",\"even\"],dflt:\"all\"}},spaceframe:{show:{valType:\"boolean\",dflt:!1},fill:{valType:\"number\",min:0,max:1,dflt:.15}},slices:{x:{show:{valType:\"boolean\",dflt:!1},locations:{valType:\"data_array\",dflt:[]},fill:{valType:\"number\",min:0,max:1,dflt:1}},y:{show:{valType:\"boolean\",dflt:!1},locations:{valType:\"data_array\",dflt:[]},fill:{valType:\"number\",min:0,max:1,dflt:1}},z:{show:{valType:\"boolean\",dflt:!1},locations:{valType:\"data_array\",dflt:[]},fill:{valType:\"number\",min:0,max:1,dflt:1}}},caps:{x:{show:{valType:\"boolean\",dflt:!0},fill:{valType:\"number\",min:0,max:1,dflt:1}},y:{show:{valType:\"boolean\",dflt:!0},fill:{valType:\"number\",min:0,max:1,dflt:1}},z:{show:{valType:\"boolean\",dflt:!0},fill:{valType:\"number\",min:0,max:1,dflt:1}}},text:{valType:\"string\",dflt:\"\",arrayOk:!0},hovertext:{valType:\"string\",dflt:\"\",arrayOk:!0},hovertemplate:a(),xhoverformat:i(\"x\"),yhoverformat:i(\"y\"),zhoverformat:i(\"z\"),valuehoverformat:i(\"value\",1),showlegend:l({},s.showlegend,{dflt:!1})},n(\"\",{colorAttr:\"`value`\",showScaleDflt:!0,editTypeOverride:\"calc\"}),{opacity:o.opacity,lightposition:o.lightposition,lighting:o.lighting,flatshading:o.flatshading,contour:o.contour,hoverinfo:l({},s.hoverinfo)}),\"calc\",\"nested\");u.flatshading.dflt=!0,u.lighting.facenormalsepsilon.dflt=0,u.x.editType=u.y.editType=u.z.editType=u.value.editType=\"calc+clearAxisTypes\",u.transforms=void 0},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plot_api/edit_types\":536,\"../../plots/attributes\":550,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/template_attributes\":633,\"../mesh3d/attributes\":867}],863:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/calc\"),i=t(\"../streamtube/calc\").processGrid,a=t(\"../streamtube/calc\").filter;e.exports=function(t,e){e._len=Math.min(e.x.length,e.y.length,e.z.length,e.value.length),e._x=a(e.x,e._len),e._y=a(e.y,e._len),e._z=a(e.z,e._len),e._value=a(e.value,e._len);var r=i(e);e._gridFill=r.fill,e._Xs=r.Xs,e._Ys=r.Ys,e._Zs=r.Zs,e._len=r.len;for(var o=1/0,s=-1/0,l=0;l0;r--){var n=Math.min(e[r],e[r-1]),i=Math.max(e[r],e[r-1]);if(i>n&&n-1}function R(t,e){return null===t?e:t}function F(e,r,n){C();var i,a,o,l=[r],c=[n];if(s>=1)l=[r],c=[n];else if(s>0){var u=function(t,e){var r=t[0],n=t[1],i=t[2],a=function(t,e,r){for(var n=[],i=0;i-1?n[p]:L(d,g,v);h[p]=x>-1?x:I(d,g,v,R(e,y))}i=h[0],a=h[1],o=h[2],t._meshI.push(i),t._meshJ.push(a),t._meshK.push(o),++m}}function B(t,e,r,n){var i=t[3];in&&(i=n);for(var a=(t[3]-i)/(t[3]-e[3]+1e-9),o=[],s=0;s<4;s++)o[s]=(1-a)*t[s]+a*e[s];return o}function N(t,e,r){return t>=e&&t<=r}function j(t){var e=.001*(E-S);return t>=S-e&&t<=E+e}function U(e){for(var r=[],n=0;n<4;n++){var i=e[n];r.push([t._x[i],t._y[i],t._z[i],t._value[i]])}return r}function V(t,e,r,n,i,a){a||(a=1),r=[-1,-1,-1];var o=!1,s=[N(e[0][3],n,i),N(e[1][3],n,i),N(e[2][3],n,i)];if(!s[0]&&!s[1]&&!s[2])return!1;var l=function(t,e,r){return j(e[0][3])&&j(e[1][3])&&j(e[2][3])?(F(t,e,r),!0):a<3&&V(t,e,r,S,E,++a)};if(s[0]&&s[1]&&s[2])return l(t,e,r)||o;var c=!1;return[[0,1,2],[2,0,1],[1,2,0]].forEach((function(a){if(s[a[0]]&&s[a[1]]&&!s[a[2]]){var u=e[a[0]],f=e[a[1]],h=e[a[2]],p=B(h,u,n,i),d=B(h,f,n,i);o=l(t,[d,p,u],[-1,-1,r[a[0]]])||o,o=l(t,[u,f,d],[r[a[0]],r[a[1]],-1])||o,c=!0}})),c||[[0,1,2],[1,2,0],[2,0,1]].forEach((function(a){if(s[a[0]]&&!s[a[1]]&&!s[a[2]]){var u=e[a[0]],f=e[a[1]],h=e[a[2]],p=B(f,u,n,i),d=B(h,u,n,i);o=l(t,[d,p,u],[-1,-1,r[a[0]]])||o,c=!0}})),o}function H(t,e,r,n){var i=!1,a=U(e),o=[N(a[0][3],r,n),N(a[1][3],r,n),N(a[2][3],r,n),N(a[3][3],r,n)];if(!(o[0]||o[1]||o[2]||o[3]))return i;if(o[0]&&o[1]&&o[2]&&o[3])return g&&(i=function(t,e,r){var n=function(n,i,a){F(t,[e[n],e[i],e[a]],[r[n],r[i],r[a]])};n(0,1,2),n(3,0,1),n(2,3,0),n(1,2,3)}(t,a,e)||i),i;var s=!1;return[[0,1,2,3],[3,0,1,2],[2,3,0,1],[1,2,3,0]].forEach((function(l){if(o[l[0]]&&o[l[1]]&&o[l[2]]&&!o[l[3]]){var c=a[l[0]],u=a[l[1]],f=a[l[2]],h=a[l[3]];if(g)i=F(t,[c,u,f],[e[l[0]],e[l[1]],e[l[2]]])||i;else{var p=B(h,c,r,n),d=B(h,u,r,n),m=B(h,f,r,n);i=F(null,[p,d,m],[-1,-1,-1])||i}s=!0}})),s?i:([[0,1,2,3],[1,2,3,0],[2,3,0,1],[3,0,1,2],[0,2,3,1],[1,3,2,0]].forEach((function(l){if(o[l[0]]&&o[l[1]]&&!o[l[2]]&&!o[l[3]]){var c=a[l[0]],u=a[l[1]],f=a[l[2]],h=a[l[3]],p=B(f,c,r,n),d=B(f,u,r,n),m=B(h,u,r,n),v=B(h,c,r,n);g?(i=F(t,[c,v,p],[e[l[0]],-1,-1])||i,i=F(t,[u,d,m],[e[l[1]],-1,-1])||i):i=function(t,e,r){var n=function(n,i,a){F(t,[e[n],e[i],e[a]],[r[n],r[i],r[a]])};n(0,1,2),n(2,3,0)}(null,[p,d,m,v],[-1,-1,-1,-1])||i,s=!0}})),s||[[0,1,2,3],[1,2,3,0],[2,3,0,1],[3,0,1,2]].forEach((function(l){if(o[l[0]]&&!o[l[1]]&&!o[l[2]]&&!o[l[3]]){var c=a[l[0]],u=a[l[1]],f=a[l[2]],h=a[l[3]],p=B(u,c,r,n),d=B(f,c,r,n),m=B(h,c,r,n);g?(i=F(t,[c,p,d],[e[l[0]],-1,-1])||i,i=F(t,[c,d,m],[e[l[0]],-1,-1])||i,i=F(t,[c,m,p],[e[l[0]],-1,-1])||i):i=F(null,[p,d,m],[-1,-1,-1])||i,s=!0}})),i)}function q(t,e,r,n,i,a,o,s,l,c,u){var f=!1;return d&&(D(t,\"A\")&&(f=H(null,[e,r,n,a],c,u)||f),D(t,\"B\")&&(f=H(null,[r,n,i,l],c,u)||f),D(t,\"C\")&&(f=H(null,[r,a,o,l],c,u)||f),D(t,\"D\")&&(f=H(null,[n,a,s,l],c,u)||f),D(t,\"E\")&&(f=H(null,[r,n,a,l],c,u)||f)),g&&(f=H(t,[r,n,a,l],c,u)||f),f}function G(t,e,r,n,i,a,o,s){return[!0===s[0]||V(t,U([e,r,n]),[e,r,n],a,o),!0===s[1]||V(t,U([n,i,e]),[n,i,e],a,o)]}function Y(t,e,r,n,i,a,o,s,l){return s?G(t,e,r,i,n,a,o,l):G(t,r,i,n,e,a,o,l)}function W(t,e,r,n,i,a,o){var s,l,c,u,f=!1,h=function(){f=V(t,[s,l,c],[-1,-1,-1],i,a)||f,f=V(t,[c,u,s],[-1,-1,-1],i,a)||f},p=o[0],d=o[1],g=o[2];return p&&(s=O(U([k(e,r-0,n-0)])[0],U([k(e-1,r-0,n-0)])[0],p),l=O(U([k(e,r-0,n-1)])[0],U([k(e-1,r-0,n-1)])[0],p),c=O(U([k(e,r-1,n-1)])[0],U([k(e-1,r-1,n-1)])[0],p),u=O(U([k(e,r-1,n-0)])[0],U([k(e-1,r-1,n-0)])[0],p),h()),d&&(s=O(U([k(e-0,r,n-0)])[0],U([k(e-0,r-1,n-0)])[0],d),l=O(U([k(e-0,r,n-1)])[0],U([k(e-0,r-1,n-1)])[0],d),c=O(U([k(e-1,r,n-1)])[0],U([k(e-1,r-1,n-1)])[0],d),u=O(U([k(e-1,r,n-0)])[0],U([k(e-1,r-1,n-0)])[0],d),h()),g&&(s=O(U([k(e-0,r-0,n)])[0],U([k(e-0,r-0,n-1)])[0],g),l=O(U([k(e-0,r-1,n)])[0],U([k(e-0,r-1,n-1)])[0],g),c=O(U([k(e-1,r-1,n)])[0],U([k(e-1,r-1,n-1)])[0],g),u=O(U([k(e-1,r-0,n)])[0],U([k(e-1,r-0,n-1)])[0],g),h()),f}function X(t,e,r,n,i,a,o,s,l,c,u,f){var h=t;return f?(d&&\"even\"===t&&(h=null),q(h,e,r,n,i,a,o,s,l,c,u)):(d&&\"odd\"===t&&(h=null),q(h,l,s,o,a,i,n,r,e,c,u))}function Z(t,e,r,n,i){for(var a=[],o=0,s=0;sMath.abs(d-M)?[A,d]:[d,M];$(e,T[0],T[1])}}var L=[[Math.min(S,M),Math.max(S,M)],[Math.min(A,E),Math.max(A,E)]];[\"x\",\"y\",\"z\"].forEach((function(e){for(var r=[],n=0;n0&&(u.push(p.id),\"x\"===e?f.push([p.distRatio,0,0]):\"y\"===e?f.push([0,p.distRatio,0]):f.push([0,0,p.distRatio]))}else c=nt(1,\"x\"===e?b-1:\"y\"===e?_-1:w-1);u.length>0&&(r[i]=\"x\"===e?tt(null,u,a,o,f,r[i]):\"y\"===e?et(null,u,a,o,f,r[i]):rt(null,u,a,o,f,r[i]),i++),c.length>0&&(r[i]=\"x\"===e?Z(null,c,a,o,r[i]):\"y\"===e?J(null,c,a,o,r[i]):K(null,c,a,o,r[i]),i++)}var d=t.caps[e];d.show&&d.fill&&(z(d.fill),r[i]=\"x\"===e?Z(null,[0,b-1],a,o,r[i]):\"y\"===e?J(null,[0,_-1],a,o,r[i]):K(null,[0,w-1],a,o,r[i]),i++)}})),0===m&&P(),t._meshX=n,t._meshY=i,t._meshZ=a,t._meshIntensity=o,t._Xs=v,t._Ys=y,t._Zs=x}(),t}e.exports={findNearestOnAxis:l,generateIsoMeshes:h,createIsosurfaceTrace:function(t,e){var r=t.glplot.gl,i=n({gl:r}),a=new c(t,i,e.uid);return i._trace=a,a.update(e),t.glplot.add(i),a}}},{\"../../../stackgl_modules\":1120,\"../../components/colorscale\":378,\"../../lib/gl_format_color\":499,\"../../lib/str2rgbarray\":528,\"../../plots/gl3d/zip3\":609}],865:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../registry\"),a=t(\"./attributes\"),o=t(\"../../components/colorscale/defaults\");function s(t,e,r,n,a){var s=a(\"isomin\"),l=a(\"isomax\");null!=l&&null!=s&&s>l&&(e.isomin=null,e.isomax=null);var c=a(\"x\"),u=a(\"y\"),f=a(\"z\"),h=a(\"value\");c&&c.length&&u&&u.length&&f&&f.length&&h&&h.length?(i.getComponentMethod(\"calendars\",\"handleTraceDefaults\")(t,e,[\"x\",\"y\",\"z\"],n),a(\"valuehoverformat\"),[\"x\",\"y\",\"z\"].forEach((function(t){a(t+\"hoverformat\");var e=\"caps.\"+t;a(e+\".show\")&&a(e+\".fill\");var r=\"slices.\"+t;a(r+\".show\")&&(a(r+\".fill\"),a(r+\".locations\"))})),a(\"spaceframe.show\")&&a(\"spaceframe.fill\"),a(\"surface.show\")&&(a(\"surface.count\"),a(\"surface.fill\"),a(\"surface.pattern\")),a(\"contour.show\")&&(a(\"contour.color\"),a(\"contour.width\")),[\"text\",\"hovertext\",\"hovertemplate\",\"lighting.ambient\",\"lighting.diffuse\",\"lighting.specular\",\"lighting.roughness\",\"lighting.fresnel\",\"lighting.vertexnormalsepsilon\",\"lighting.facenormalsepsilon\",\"lightposition.x\",\"lightposition.y\",\"lightposition.z\",\"flatshading\",\"opacity\"].forEach((function(t){a(t)})),o(t,e,n,a,{prefix:\"\",cLetter:\"c\"}),e._length=null):e.visible=!1}e.exports={supplyDefaults:function(t,e,r,i){s(t,e,r,i,(function(r,i){return n.coerce(t,e,a,r,i)}))},supplyIsoDefaults:s}},{\"../../components/colorscale/defaults\":376,\"../../lib\":503,\"../../registry\":638,\"./attributes\":862}],866:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\").supplyDefaults,calc:t(\"./calc\"),colorbar:{min:\"cmin\",max:\"cmax\"},plot:t(\"./convert\").createIsosurfaceTrace,moduleType:\"trace\",name:\"isosurface\",basePlotModule:t(\"../../plots/gl3d\"),categories:[\"gl3d\",\"showLegend\"],meta:{}}},{\"../../plots/gl3d\":598,\"./attributes\":862,\"./calc\":863,\"./convert\":864,\"./defaults\":865}],867:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/attributes\"),i=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,a=t(\"../../plots/template_attributes\").hovertemplateAttrs,o=t(\"../surface/attributes\"),s=t(\"../../plots/attributes\"),l=t(\"../../lib/extend\").extendFlat;e.exports=l({x:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},y:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},z:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},i:{valType:\"data_array\",editType:\"calc\"},j:{valType:\"data_array\",editType:\"calc\"},k:{valType:\"data_array\",editType:\"calc\"},text:{valType:\"string\",dflt:\"\",arrayOk:!0,editType:\"calc\"},hovertext:{valType:\"string\",dflt:\"\",arrayOk:!0,editType:\"calc\"},hovertemplate:a({editType:\"calc\"}),xhoverformat:i(\"x\"),yhoverformat:i(\"y\"),zhoverformat:i(\"z\"),delaunayaxis:{valType:\"enumerated\",values:[\"x\",\"y\",\"z\"],dflt:\"z\",editType:\"calc\"},alphahull:{valType:\"number\",dflt:-1,editType:\"calc\"},intensity:{valType:\"data_array\",editType:\"calc\"},intensitymode:{valType:\"enumerated\",values:[\"vertex\",\"cell\"],dflt:\"vertex\",editType:\"calc\"},color:{valType:\"color\",editType:\"calc\"},vertexcolor:{valType:\"data_array\",editType:\"calc\"},facecolor:{valType:\"data_array\",editType:\"calc\"},transforms:void 0},n(\"\",{colorAttr:\"`intensity`\",showScaleDflt:!0,editTypeOverride:\"calc\"}),{opacity:o.opacity,flatshading:{valType:\"boolean\",dflt:!1,editType:\"calc\"},contour:{show:l({},o.contours.x.show,{}),color:o.contours.x.color,width:o.contours.x.width,editType:\"calc\"},lightposition:{x:l({},o.lightposition.x,{dflt:1e5}),y:l({},o.lightposition.y,{dflt:1e5}),z:l({},o.lightposition.z,{dflt:0}),editType:\"calc\"},lighting:l({vertexnormalsepsilon:{valType:\"number\",min:0,max:1,dflt:1e-12,editType:\"calc\"},facenormalsepsilon:{valType:\"number\",min:0,max:1,dflt:1e-6,editType:\"calc\"},editType:\"calc\"},o.lighting),hoverinfo:l({},s.hoverinfo,{editType:\"calc\"}),showlegend:l({},s.showlegend,{dflt:!1})})},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/template_attributes\":633,\"../surface/attributes\":1057}],868:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/calc\");e.exports=function(t,e){e.intensity&&n(t,e,{vals:e.intensity,containerStr:\"\",cLetter:\"c\"})}},{\"../../components/colorscale/calc\":374}],869:[function(t,e,r){\"use strict\";var n=t(\"../../../stackgl_modules\").gl_mesh3d,i=t(\"../../../stackgl_modules\").delaunay_triangulate,a=t(\"../../../stackgl_modules\").alpha_shape,o=t(\"../../../stackgl_modules\").convex_hull,s=t(\"../../lib/gl_format_color\").parseColorScale,l=t(\"../../lib/str2rgbarray\"),c=t(\"../../components/colorscale\").extractOpts,u=t(\"../../plots/gl3d/zip3\");function f(t,e,r){this.scene=t,this.uid=r,this.mesh=e,this.name=\"\",this.color=\"#fff\",this.data=null,this.showContour=!1}var h=f.prototype;function p(t){for(var e=[],r=t.length,n=0;n=e-.5)return!1;return!0}h.handlePick=function(t){if(t.object===this.mesh){var e=t.index=t.data.index;t.data._cellCenter?t.traceCoordinate=t.data.dataCoordinate:t.traceCoordinate=[this.data.x[e],this.data.y[e],this.data.z[e]];var r=this.data.hovertext||this.data.text;return Array.isArray(r)&&void 0!==r[e]?t.textLabel=r[e]:r&&(t.textLabel=r),!0}},h.update=function(t){var e=this.scene,r=e.fullSceneLayout;this.data=t;var n,f=t.x.length,h=u(d(r.xaxis,t.x,e.dataScale[0],t.xcalendar),d(r.yaxis,t.y,e.dataScale[1],t.ycalendar),d(r.zaxis,t.z,e.dataScale[2],t.zcalendar));if(t.i&&t.j&&t.k){if(t.i.length!==t.j.length||t.j.length!==t.k.length||!m(t.i,f)||!m(t.j,f)||!m(t.k,f))return;n=u(g(t.i),g(t.j),g(t.k))}else n=0===t.alphahull?o(h):t.alphahull>0?a(t.alphahull,h):function(t,e){for(var r=[\"x\",\"y\",\"z\"].indexOf(t),n=[],a=e.length,o=0;ov):m=A>w,v=A;var M=c(w,T,k,A);M.pos=_,M.yc=(w+A)/2,M.i=b,M.dir=m?\"increasing\":\"decreasing\",M.x=M.pos,M.y=[k,T],y&&(M.orig_p=r[b]),d&&(M.tx=e.text[b]),g&&(M.htx=e.hovertext[b]),x.push(M)}else x.push({pos:_,empty:!0})}return e._extremes[l._id]=a.findExtremes(l,n.concat(h,f),{padded:!0}),x.length&&(x[0].t={labels:{open:i(t,\"open:\")+\" \",high:i(t,\"high:\")+\" \",low:i(t,\"low:\")+\" \",close:i(t,\"close:\")+\" \"}}),x}e.exports={calc:function(t,e){var r=a.getFromId(t,e.xaxis),i=a.getFromId(t,e.yaxis),s=function(t,e,r){var i=r._minDiff;if(!i){var a,s=t._fullData,l=[];for(i=1/0,a=0;a\"+c.labels[x]+n.hoverLabelText(s,b,l.yhoverformat):((y=i.extendFlat({},h)).y0=y.y1=_,y.yLabelVal=b,y.yLabel=c.labels[x]+n.hoverLabelText(s,b,l.yhoverformat),y.name=\"\",f.push(y),m[b]=y)}return f}function h(t,e,r,i){var a=t.cd,o=t.ya,l=a[0].trace,f=a[0].t,h=u(t,e,r,i);if(!h)return[];var p=a[h.index],d=h.index=p.i,g=p.dir;function m(t){return f.labels[t]+n.hoverLabelText(o,l[t][d],l.yhoverformat)}var v=p.hi||l.hoverinfo,y=v.split(\"+\"),x=\"all\"===v,b=x||-1!==y.indexOf(\"y\"),_=x||-1!==y.indexOf(\"text\"),w=b?[m(\"open\"),m(\"high\"),m(\"low\"),m(\"close\")+\" \"+c[g]]:[];return _&&s(p,l,w),h.extraText=w.join(\"
\"),h.y0=h.y1=o.c2p(p.yc,!0),[h]}e.exports={hoverPoints:function(t,e,r,n){return t.cd[0].trace.hoverlabel.split?f(t,e,r,n):h(t,e,r,n)},hoverSplit:f,hoverOnPoints:h}},{\"../../components/color\":366,\"../../components/fx\":406,\"../../constants/delta.js\":473,\"../../lib\":503,\"../../plots/cartesian/axes\":554}],876:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"ohlc\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"cartesian\",\"svg\",\"showLegend\"],meta:{},attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),calc:t(\"./calc\").calc,plot:t(\"./plot\"),style:t(\"./style\"),hoverPoints:t(\"./hover\").hoverPoints,selectPoints:t(\"./select\")}},{\"../../plots/cartesian\":568,\"./attributes\":872,\"./calc\":873,\"./defaults\":874,\"./hover\":875,\"./plot\":878,\"./select\":879,\"./style\":880}],877:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\");e.exports=function(t,e,r,a){var o=r(\"x\"),s=r(\"open\"),l=r(\"high\"),c=r(\"low\"),u=r(\"close\");if(r(\"hoverlabel.split\"),n.getComponentMethod(\"calendars\",\"handleTraceDefaults\")(t,e,[\"x\"],a),s&&l&&c&&u){var f=Math.min(s.length,l.length,c.length,u.length);return o&&(f=Math.min(f,i.minRowLength(o))),e._length=f,f}}},{\"../../lib\":503,\"../../registry\":638}],878:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\");e.exports=function(t,e,r,a){var o=e.yaxis,s=e.xaxis,l=!!s.rangebreaks;i.makeTraceGroups(a,r,\"trace ohlc\").each((function(t){var e=n.select(this),r=t[0],a=r.t;if(!0!==r.trace.visible||a.empty)e.remove();else{var c=a.tickLen,u=e.selectAll(\"path\").data(i.identity);u.enter().append(\"path\"),u.exit().remove(),u.attr(\"d\",(function(t){if(t.empty)return\"M0,0Z\";var e=s.c2p(t.pos-c,!0),r=s.c2p(t.pos+c,!0),n=l?(e+r)/2:s.c2p(t.pos,!0);return\"M\"+e+\",\"+o.c2p(t.o,!0)+\"H\"+n+\"M\"+n+\",\"+o.c2p(t.h,!0)+\"V\"+o.c2p(t.l,!0)+\"M\"+r+\",\"+o.c2p(t.c,!0)+\"H\"+n}))}}))}},{\"../../lib\":503,\"@plotly/d3\":58}],879:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r,n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s=n[0].t.bPos||0;if(!1===e)for(r=0;r=t.length)return!1;if(void 0!==e[t[r]])return!1;e[t[r]]=!0}return!0}(t.map((function(t){return t.displayindex}))))for(e=0;e0;c&&(o=\"array\");var u=r(\"categoryorder\",o);\"array\"===u?(r(\"categoryarray\"),r(\"ticktext\")):(delete t.categoryarray,delete t.ticktext),c||\"array\"!==u||(e.categoryorder=\"trace\")}}e.exports=function(t,e,r,f){function h(r,i){return n.coerce(t,e,l,r,i)}var p=s(t,e,{name:\"dimensions\",handleItemDefaults:u}),d=function(t,e,r,o,s){s(\"line.shape\"),s(\"line.hovertemplate\");var l=s(\"line.color\",o.colorway[0]);if(i(t,\"line\")&&n.isArrayOrTypedArray(l)){if(l.length)return s(\"line.colorscale\"),a(t,e,o,s,{prefix:\"line.\",cLetter:\"c\"}),l.length;e.line.color=r}return 1/0}(t,e,r,f,h);o(e,f,h),Array.isArray(p)&&p.length||(e.visible=!1),c(e,p,\"values\",d),h(\"hoveron\"),h(\"hovertemplate\"),h(\"arrangement\"),h(\"bundlecolors\"),h(\"sortpaths\"),h(\"counts\");var g={family:f.font.family,size:Math.round(f.font.size),color:f.font.color};n.coerceFont(h,\"labelfont\",g);var m={family:f.font.family,size:Math.round(f.font.size/1.2),color:f.font.color};n.coerceFont(h,\"tickfont\",m)}},{\"../../components/colorscale/defaults\":376,\"../../components/colorscale/helpers\":377,\"../../lib\":503,\"../../plots/array_container_defaults\":549,\"../../plots/domain\":584,\"../parcoords/merge_length\":897,\"./attributes\":881}],885:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),calc:t(\"./calc\"),plot:t(\"./plot\"),colorbar:{container:\"line\",min:\"cmin\",max:\"cmax\"},moduleType:\"trace\",name:\"parcats\",basePlotModule:t(\"./base_plot\"),categories:[\"noOpacity\"],meta:{}}},{\"./attributes\":881,\"./base_plot\":882,\"./calc\":883,\"./defaults\":884,\"./plot\":887}],886:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"d3-interpolate\").interpolateNumber,a=t(\"../../plot_api/plot_api\"),o=t(\"../../components/fx\"),s=t(\"../../lib\"),l=s.strTranslate,c=t(\"../../components/drawing\"),u=t(\"tinycolor2\"),f=t(\"../../lib/svg_text_utils\");function h(t,e,r,i){var a=t.map(F.bind(0,e,r)),o=i.selectAll(\"g.parcatslayer\").data([null]);o.enter().append(\"g\").attr(\"class\",\"parcatslayer\").style(\"pointer-events\",\"all\");var u=o.selectAll(\"g.trace.parcats\").data(a,p),h=u.enter().append(\"g\").attr(\"class\",\"trace parcats\");u.attr(\"transform\",(function(t){return l(t.x,t.y)})),h.append(\"g\").attr(\"class\",\"paths\");var y=u.select(\"g.paths\").selectAll(\"path.path\").data((function(t){return t.paths}),p);y.attr(\"fill\",(function(t){return t.model.color}));var x=y.enter().append(\"path\").attr(\"class\",\"path\").attr(\"stroke-opacity\",0).attr(\"fill\",(function(t){return t.model.color})).attr(\"fill-opacity\",0);_(x),y.attr(\"d\",(function(t){return t.svgD})),x.empty()||y.sort(g),y.exit().remove(),y.on(\"mouseover\",m).on(\"mouseout\",v).on(\"click\",b),h.append(\"g\").attr(\"class\",\"dimensions\");var w=u.select(\"g.dimensions\").selectAll(\"g.dimension\").data((function(t){return t.dimensions}),p);w.enter().append(\"g\").attr(\"class\",\"dimension\"),w.attr(\"transform\",(function(t){return l(t.x,0)})),w.exit().remove();var A=w.selectAll(\"g.category\").data((function(t){return t.categories}),p),M=A.enter().append(\"g\").attr(\"class\",\"category\");A.attr(\"transform\",(function(t){return l(0,t.y)})),M.append(\"rect\").attr(\"class\",\"catrect\").attr(\"pointer-events\",\"none\"),A.select(\"rect.catrect\").attr(\"fill\",\"none\").attr(\"width\",(function(t){return t.width})).attr(\"height\",(function(t){return t.height})),T(M);var S=A.selectAll(\"rect.bandrect\").data((function(t){return t.bands}),p);S.each((function(){s.raiseToTop(this)})),S.attr(\"fill\",(function(t){return t.color}));var E=S.enter().append(\"rect\").attr(\"class\",\"bandrect\").attr(\"stroke-opacity\",0).attr(\"fill\",(function(t){return t.color})).attr(\"fill-opacity\",0);S.attr(\"fill\",(function(t){return t.color})).attr(\"width\",(function(t){return t.width})).attr(\"height\",(function(t){return t.height})).attr(\"y\",(function(t){return t.y})).attr(\"cursor\",(function(t){return\"fixed\"===t.parcatsViewModel.arrangement?\"default\":\"perpendicular\"===t.parcatsViewModel.arrangement?\"ns-resize\":\"move\"})),k(E),S.exit().remove(),M.append(\"text\").attr(\"class\",\"catlabel\").attr(\"pointer-events\",\"none\");var z=e._fullLayout.paper_bgcolor;A.select(\"text.catlabel\").attr(\"text-anchor\",(function(t){return d(t)?\"start\":\"end\"})).attr(\"alignment-baseline\",\"middle\").style(\"text-shadow\",f.makeTextShadow(z)).style(\"fill\",\"rgb(0, 0, 0)\").attr(\"x\",(function(t){return d(t)?t.width+5:-5})).attr(\"y\",(function(t){return t.height/2})).text((function(t){return t.model.categoryLabel})).each((function(t){c.font(n.select(this),t.parcatsViewModel.categorylabelfont),f.convertToTspans(n.select(this),e)})),M.append(\"text\").attr(\"class\",\"dimlabel\"),A.select(\"text.dimlabel\").attr(\"text-anchor\",\"middle\").attr(\"alignment-baseline\",\"baseline\").attr(\"cursor\",(function(t){return\"fixed\"===t.parcatsViewModel.arrangement?\"default\":\"ew-resize\"})).attr(\"x\",(function(t){return t.width/2})).attr(\"y\",-5).text((function(t,e){return 0===e?t.parcatsViewModel.model.dimensions[t.model.dimensionInd].dimensionLabel:null})).each((function(t){c.font(n.select(this),t.parcatsViewModel.labelfont)})),A.selectAll(\"rect.bandrect\").on(\"mouseover\",L).on(\"mouseout\",C),A.exit().remove(),w.call(n.behavior.drag().origin((function(t){return{x:t.x,y:0}})).on(\"dragstart\",P).on(\"drag\",I).on(\"dragend\",O)),u.each((function(t){t.traceSelection=n.select(this),t.pathSelection=n.select(this).selectAll(\"g.paths\").selectAll(\"path.path\"),t.dimensionSelection=n.select(this).selectAll(\"g.dimensions\").selectAll(\"g.dimension\")})),u.exit().remove()}function p(t){return t.key}function d(t){var e=t.parcatsViewModel.dimensions.length,r=t.parcatsViewModel.dimensions[e-1].model.dimensionInd;return t.model.dimensionInd===r}function g(t,e){return t.model.rawColor>e.model.rawColor?1:t.model.rawColor\"),L=n.mouse(f)[0];o.loneHover({trace:h,x:b-d.left+g.left,y:_-d.top+g.top,text:E,color:t.model.color,borderColor:\"black\",fontFamily:'Monaco, \"Courier New\", monospace',fontSize:10,fontColor:T,idealAlign:L1&&h.displayInd===f.dimensions.length-1?(i=c.left,a=\"left\"):(i=c.left+c.width,a=\"right\");var g=u.model.count,m=u.model.categoryLabel,v=g/u.parcatsViewModel.model.count,y={countLabel:g,categoryLabel:m,probabilityLabel:v.toFixed(3)},x=[];-1!==u.parcatsViewModel.hoverinfoItems.indexOf(\"count\")&&x.push([\"Count:\",y.countLabel].join(\" \")),-1!==u.parcatsViewModel.hoverinfoItems.indexOf(\"probability\")&&x.push([\"P(\"+y.categoryLabel+\"):\",y.probabilityLabel].join(\" \"));var b=x.join(\"
\");return{trace:p,x:o*(i-e.left),y:s*(d-e.top),text:b,color:\"lightgray\",borderColor:\"black\",fontFamily:'Monaco, \"Courier New\", monospace',fontSize:12,fontColor:\"black\",idealAlign:a,hovertemplate:p.hovertemplate,hovertemplateLabels:y,eventData:[{data:p._input,fullData:p,count:g,category:m,probability:v}]}}function L(t){if(!t.parcatsViewModel.dragDimension&&-1===t.parcatsViewModel.hoverinfoItems.indexOf(\"skip\")){if(n.mouse(this)[1]<-1)return;var e,r=t.parcatsViewModel.graphDiv,i=r._fullLayout,a=i._paperdiv.node().getBoundingClientRect(),l=t.parcatsViewModel.hoveron;if(\"color\"===l?(!function(t){var e=n.select(t).datum(),r=A(e);w(r),r.each((function(){s.raiseToTop(this)})),n.select(t.parentNode).selectAll(\"rect.bandrect\").filter((function(t){return t.color===e.color})).each((function(){s.raiseToTop(this),n.select(this).attr(\"stroke\",\"black\").attr(\"stroke-width\",1.5)}))}(this),S(this,\"plotly_hover\",n.event)):(!function(t){n.select(t.parentNode).selectAll(\"rect.bandrect\").each((function(t){var e=A(t);w(e),e.each((function(){s.raiseToTop(this)}))})),n.select(t.parentNode).select(\"rect.catrect\").attr(\"stroke\",\"black\").attr(\"stroke-width\",2.5)}(this),M(this,\"plotly_hover\",n.event)),-1===t.parcatsViewModel.hoverinfoItems.indexOf(\"none\"))\"category\"===l?e=E(r,a,this):\"color\"===l?e=function(t,e,r){t._fullLayout._calcInverseTransform(t);var i,a,o=t._fullLayout._invScaleX,s=t._fullLayout._invScaleY,l=r.getBoundingClientRect(),c=n.select(r).datum(),f=c.categoryViewModel,h=f.parcatsViewModel,p=h.model.dimensions[f.model.dimensionInd],d=h.trace,g=l.y+l.height/2;h.dimensions.length>1&&p.displayInd===h.dimensions.length-1?(i=l.left,a=\"left\"):(i=l.left+l.width,a=\"right\");var m=f.model.categoryLabel,v=c.parcatsViewModel.model.count,y=0;c.categoryViewModel.bands.forEach((function(t){t.color===c.color&&(y+=t.count)}));var x=f.model.count,b=0;h.pathSelection.each((function(t){t.model.color===c.color&&(b+=t.model.count)}));var _=y/v,w=y/b,T=y/x,k={countLabel:v,categoryLabel:m,probabilityLabel:_.toFixed(3)},A=[];-1!==f.parcatsViewModel.hoverinfoItems.indexOf(\"count\")&&A.push([\"Count:\",k.countLabel].join(\" \")),-1!==f.parcatsViewModel.hoverinfoItems.indexOf(\"probability\")&&(A.push(\"P(color \\u2229 \"+m+\"): \"+k.probabilityLabel),A.push(\"P(\"+m+\" | color): \"+w.toFixed(3)),A.push(\"P(color | \"+m+\"): \"+T.toFixed(3)));var M=A.join(\"
\"),S=u.mostReadable(c.color,[\"black\",\"white\"]);return{trace:d,x:o*(i-e.left),y:s*(g-e.top),text:M,color:c.color,borderColor:\"black\",fontFamily:'Monaco, \"Courier New\", monospace',fontColor:S,fontSize:10,idealAlign:a,hovertemplate:d.hovertemplate,hovertemplateLabels:k,eventData:[{data:d._input,fullData:d,category:m,count:v,probability:_,categorycount:x,colorcount:b,bandcolorcount:y}]}}(r,a,this):\"dimension\"===l&&(e=function(t,e,r){var i=[];return n.select(r.parentNode.parentNode).selectAll(\"g.category\").select(\"rect.catrect\").each((function(){i.push(E(t,e,this))})),i}(r,a,this)),e&&o.loneHover(e,{container:i._hoverlayer.node(),outerContainer:i._paper.node(),gd:r})}}function C(t){var e=t.parcatsViewModel;if(!e.dragDimension&&(_(e.pathSelection),T(e.dimensionSelection.selectAll(\"g.category\")),k(e.dimensionSelection.selectAll(\"g.category\").selectAll(\"rect.bandrect\")),o.loneUnhover(e.graphDiv._fullLayout._hoverlayer.node()),e.pathSelection.sort(g),-1===e.hoverinfoItems.indexOf(\"skip\"))){\"color\"===t.parcatsViewModel.hoveron?S(this,\"plotly_unhover\",n.event):M(this,\"plotly_unhover\",n.event)}}function P(t){\"fixed\"!==t.parcatsViewModel.arrangement&&(t.dragDimensionDisplayInd=t.model.displayInd,t.initialDragDimensionDisplayInds=t.parcatsViewModel.model.dimensions.map((function(t){return t.displayInd})),t.dragHasMoved=!1,t.dragCategoryDisplayInd=null,n.select(this).selectAll(\"g.category\").select(\"rect.catrect\").each((function(e){var r=n.mouse(this)[0],i=n.mouse(this)[1];-2<=r&&r<=e.width+2&&-2<=i&&i<=e.height+2&&(t.dragCategoryDisplayInd=e.model.displayInd,t.initialDragCategoryDisplayInds=t.model.categories.map((function(t){return t.displayInd})),e.model.dragY=e.y,s.raiseToTop(this.parentNode),n.select(this.parentNode).selectAll(\"rect.bandrect\").each((function(e){e.yf.y+f.height/2&&(o.model.displayInd=f.model.displayInd,f.model.displayInd=l),t.dragCategoryDisplayInd=o.model.displayInd}if(null===t.dragCategoryDisplayInd||\"freeform\"===t.parcatsViewModel.arrangement){a.model.dragX=n.event.x;var h=t.parcatsViewModel.dimensions[r],p=t.parcatsViewModel.dimensions[i];void 0!==h&&a.model.dragXp.x&&(a.model.displayInd=p.model.displayInd,p.model.displayInd=t.dragDimensionDisplayInd),t.dragDimensionDisplayInd=a.model.displayInd}j(t.parcatsViewModel),N(t.parcatsViewModel),R(t.parcatsViewModel),D(t.parcatsViewModel)}}function O(t){if(\"fixed\"!==t.parcatsViewModel.arrangement&&null!==t.dragDimensionDisplayInd){n.select(this).selectAll(\"text\").attr(\"font-weight\",\"normal\");var e={},r=z(t.parcatsViewModel),i=t.parcatsViewModel.model.dimensions.map((function(t){return t.displayInd})),o=t.initialDragDimensionDisplayInds.some((function(t,e){return t!==i[e]}));o&&i.forEach((function(r,n){var i=t.parcatsViewModel.model.dimensions[n].containerInd;e[\"dimensions[\"+i+\"].displayindex\"]=r}));var s=!1;if(null!==t.dragCategoryDisplayInd){var l=t.model.categories.map((function(t){return t.displayInd}));if(s=t.initialDragCategoryDisplayInds.some((function(t,e){return t!==l[e]}))){var c=t.model.categories.slice().sort((function(t,e){return t.displayInd-e.displayInd})),u=c.map((function(t){return t.categoryValue})),f=c.map((function(t){return t.categoryLabel}));e[\"dimensions[\"+t.model.containerInd+\"].categoryarray\"]=[u],e[\"dimensions[\"+t.model.containerInd+\"].ticktext\"]=[f],e[\"dimensions[\"+t.model.containerInd+\"].categoryorder\"]=\"array\"}}if(-1===t.parcatsViewModel.hoverinfoItems.indexOf(\"skip\")&&!t.dragHasMoved&&t.potentialClickBand&&(\"color\"===t.parcatsViewModel.hoveron?S(t.potentialClickBand,\"plotly_click\",n.event.sourceEvent):M(t.potentialClickBand,\"plotly_click\",n.event.sourceEvent)),t.model.dragX=null,null!==t.dragCategoryDisplayInd)t.parcatsViewModel.dimensions[t.dragDimensionDisplayInd].categories[t.dragCategoryDisplayInd].model.dragY=null,t.dragCategoryDisplayInd=null;t.dragDimensionDisplayInd=null,t.parcatsViewModel.dragDimension=null,t.dragHasMoved=null,t.potentialClickBand=null,j(t.parcatsViewModel),N(t.parcatsViewModel),n.transition().duration(300).ease(\"cubic-in-out\").each((function(){R(t.parcatsViewModel,!0),D(t.parcatsViewModel,!0)})).each(\"end\",(function(){(o||s)&&a.restyle(t.parcatsViewModel.graphDiv,e,[r])}))}}function z(t){for(var e,r=t.graphDiv._fullData,n=0;n=0;s--)u+=\"C\"+c[s]+\",\"+(e[s+1]+n)+\" \"+l[s]+\",\"+(e[s]+n)+\" \"+(t[s]+r[s])+\",\"+(e[s]+n),u+=\"l-\"+r[s]+\",0 \";return u+=\"Z\"}function N(t){var e=t.dimensions,r=t.model,n=e.map((function(t){return t.categories.map((function(t){return t.y}))})),i=t.model.dimensions.map((function(t){return t.categories.map((function(t){return t.displayInd}))})),a=t.model.dimensions.map((function(t){return t.displayInd})),o=t.dimensions.map((function(t){return t.model.dimensionInd})),s=e.map((function(t){return t.x})),l=e.map((function(t){return t.width})),c=[];for(var u in r.paths)r.paths.hasOwnProperty(u)&&c.push(r.paths[u]);function f(t){var e=t.categoryInds.map((function(t,e){return i[e][t]}));return o.map((function(t){return e[t]}))}c.sort((function(e,r){var n=f(e),i=f(r);return\"backward\"===t.sortpaths&&(n.reverse(),i.reverse()),n.push(e.valueInds[0]),i.push(r.valueInds[0]),t.bundlecolors&&(n.unshift(e.rawColor),i.unshift(r.rawColor)),ni?1:0}));for(var h=new Array(c.length),p=e[0].model.count,d=e[0].categories.map((function(t){return t.height})).reduce((function(t,e){return t+e})),g=0;g0?d*(v.count/p):0;for(var y,x=new Array(n.length),b=0;b1?(t.width-80-16)/(n-1):0)*i;var a,o,s,l,c,u=[],f=t.model.maxCats,h=e.categories.length,p=e.count,d=t.height-8*(f-1),g=8*(f-h)/2,m=e.categories.map((function(t){return{displayInd:t.displayInd,categoryInd:t.categoryInd}}));for(m.sort((function(t,e){return t.displayInd-e.displayInd})),c=0;c0?o.count/p*d:0,s={key:o.valueInds[0],model:o,width:16,height:a,y:null!==o.dragY?o.dragY:g,bands:[],parcatsViewModel:t},g=g+a+8,u.push(s);return{key:e.dimensionInd,x:null!==e.dragX?e.dragX:r,y:0,width:16,model:e,categories:u,parcatsViewModel:t,dragCategoryDisplayInd:null,dragDimensionDisplayInd:null,initialDragDimensionDisplayInds:null,initialDragCategoryDisplayInds:null,dragHasMoved:null,potentialClickBand:null}}e.exports=function(t,e,r,n){h(r,t,n,e)}},{\"../../components/drawing\":388,\"../../components/fx\":406,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../../plot_api/plot_api\":540,\"@plotly/d3\":58,\"d3-interpolate\":116,tinycolor2:312}],887:[function(t,e,r){\"use strict\";var n=t(\"./parcats\");e.exports=function(t,e,r,i){var a=t._fullLayout,o=a._paper,s=a._size;n(t,o,e,{width:s.w,height:s.h,margin:{t:s.t,r:s.r,b:s.b,l:s.l}},r,i)}},{\"./parcats\":886}],888:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/attributes\"),i=t(\"../../plots/cartesian/layout_attributes\"),a=t(\"../../plots/font_attributes\"),o=t(\"../../plots/domain\").attributes,s=t(\"../../lib/extend\").extendFlat,l=t(\"../../plot_api/plot_template\").templatedArray;e.exports={domain:o({name:\"parcoords\",trace:!0,editType:\"plot\"}),labelangle:{valType:\"angle\",dflt:0,editType:\"plot\"},labelside:{valType:\"enumerated\",values:[\"top\",\"bottom\"],dflt:\"top\",editType:\"plot\"},labelfont:a({editType:\"plot\"}),tickfont:a({editType:\"plot\"}),rangefont:a({editType:\"plot\"}),dimensions:l(\"dimension\",{label:{valType:\"string\",editType:\"plot\"},tickvals:s({},i.tickvals,{editType:\"plot\"}),ticktext:s({},i.ticktext,{editType:\"plot\"}),tickformat:s({},i.tickformat,{editType:\"plot\"}),visible:{valType:\"boolean\",dflt:!0,editType:\"plot\"},range:{valType:\"info_array\",items:[{valType:\"number\",editType:\"plot\"},{valType:\"number\",editType:\"plot\"}],editType:\"plot\"},constraintrange:{valType:\"info_array\",freeLength:!0,dimensions:\"1-2\",items:[{valType:\"any\",editType:\"plot\"},{valType:\"any\",editType:\"plot\"}],editType:\"plot\"},multiselect:{valType:\"boolean\",dflt:!0,editType:\"plot\"},values:{valType:\"data_array\",editType:\"calc\"},editType:\"calc\"}),line:s({editType:\"calc\"},n(\"line\",{colorscaleDflt:\"Viridis\",autoColorDflt:!1,editTypeOverride:\"calc\"}))}},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plot_api/plot_template\":543,\"../../plots/cartesian/layout_attributes\":569,\"../../plots/domain\":584,\"../../plots/font_attributes\":585}],889:[function(t,e,r){\"use strict\";var n=t(\"./constants\"),i=t(\"@plotly/d3\"),a=t(\"../../lib/gup\").keyFun,o=t(\"../../lib/gup\").repeat,s=t(\"../../lib\").sorterAsc,l=t(\"../../lib\").strTranslate,c=n.bar.snapRatio;function u(t,e){return t*(1-c)+e*c}var f=n.bar.snapClose;function h(t,e){return t*(1-f)+e*f}function p(t,e,r,n){if(function(t,e){for(var r=0;r=e[r][0]&&t<=e[r][1])return!0;return!1}(r,n))return r;var i=t?-1:1,a=0,o=e.length-1;if(i<0){var s=a;a=o,o=s}for(var l=e[a],c=l,f=a;i*fe){h=r;break}}if(a=u,isNaN(a)&&(a=isNaN(f)||isNaN(h)?isNaN(f)?h:f:e-c[f][1]t[1]+r||e=.9*t[1]+.1*t[0]?\"n\":e<=.9*t[0]+.1*t[1]?\"s\":\"ns\"}(d,e);g&&(o.interval=l[a],o.intervalPix=d,o.region=g)}}if(t.ordinal&&!o.region){var m=t.unitTickvals,y=t.unitToPaddedPx.invert(e);for(r=0;r=x[0]&&y<=x[1]){o.clickableOrdinalRange=x;break}}}return o}function w(t,e){i.event.sourceEvent.stopPropagation();var r=e.height-i.mouse(t)[1]-2*n.verticalPadding,a=e.brush.svgBrush;a.wasDragged=!0,a._dragging=!0,a.grabbingBar?a.newExtent=[r-a.grabPoint,r+a.barLength-a.grabPoint].map(e.unitToPaddedPx.invert):a.newExtent=[a.startExtent,e.unitToPaddedPx.invert(r)].sort(s),e.brush.filterSpecified=!0,a.extent=a.stayingIntervals.concat([a.newExtent]),a.brushCallback(e),b(t.parentNode)}function T(t,e){var r=_(e,e.height-i.mouse(t)[1]-2*n.verticalPadding),a=\"crosshair\";r.clickableOrdinalRange?a=\"pointer\":r.region&&(a=r.region+\"-resize\"),i.select(document.body).style(\"cursor\",a)}function k(t){t.on(\"mousemove\",(function(t){i.event.preventDefault(),t.parent.inBrushDrag||T(this,t)})).on(\"mouseleave\",(function(t){t.parent.inBrushDrag||y()})).call(i.behavior.drag().on(\"dragstart\",(function(t){!function(t,e){i.event.sourceEvent.stopPropagation();var r=e.height-i.mouse(t)[1]-2*n.verticalPadding,a=e.unitToPaddedPx.invert(r),o=e.brush,s=_(e,r),l=s.interval,c=o.svgBrush;if(c.wasDragged=!1,c.grabbingBar=\"ns\"===s.region,c.grabbingBar){var u=l.map(e.unitToPaddedPx);c.grabPoint=r-u[0]-n.verticalPadding,c.barLength=u[1]-u[0]}c.clickableOrdinalRange=s.clickableOrdinalRange,c.stayingIntervals=e.multiselect&&o.filterSpecified?o.filter.getConsolidated():[],l&&(c.stayingIntervals=c.stayingIntervals.filter((function(t){return t[0]!==l[0]&&t[1]!==l[1]}))),c.startExtent=s.region?l[\"s\"===s.region?1:0]:a,e.parent.inBrushDrag=!0,c.brushStartCallback()}(this,t)})).on(\"drag\",(function(t){w(this,t)})).on(\"dragend\",(function(t){!function(t,e){var r=e.brush,n=r.filter,a=r.svgBrush;a._dragging||(T(t,e),w(t,e),e.brush.svgBrush.wasDragged=!1),a._dragging=!1,i.event.sourceEvent.stopPropagation();var o=a.grabbingBar;if(a.grabbingBar=!1,a.grabLocation=void 0,e.parent.inBrushDrag=!1,y(),!a.wasDragged)return a.wasDragged=void 0,a.clickableOrdinalRange?r.filterSpecified&&e.multiselect?a.extent.push(a.clickableOrdinalRange):(a.extent=[a.clickableOrdinalRange],r.filterSpecified=!0):o?(a.extent=a.stayingIntervals,0===a.extent.length&&M(r)):M(r),a.brushCallback(e),b(t.parentNode),void a.brushEndCallback(r.filterSpecified?n.getConsolidated():[]);var s=function(){n.set(n.getConsolidated())};if(e.ordinal){var l=e.unitTickvals;l[l.length-1]a.newExtent[0];a.extent=a.stayingIntervals.concat(c?[a.newExtent]:[]),a.extent.length||M(r),a.brushCallback(e),c?b(t.parentNode,s):(s(),b(t.parentNode))}else s();a.brushEndCallback(r.filterSpecified?n.getConsolidated():[])}(this,t)})))}function A(t,e){return t[0]-e[0]}function M(t){t.filterSpecified=!1,t.svgBrush.extent=[[-1/0,1/0]]}function S(t){for(var e,r=t.slice(),n=[],i=r.shift();i;){for(e=i.slice();(i=r.shift())&&i[0]<=e[1];)e[1]=Math.max(e[1],i[1]);n.push(e)}return 1===n.length&&n[0][0]>n[0][1]&&(n=[]),n}e.exports={makeBrush:function(t,e,r,n,i,a){var o,l=function(){var t,e,r=[];return{set:function(n){1===(r=n.map((function(t){return t.slice().sort(s)})).sort(A)).length&&r[0][0]===-1/0&&r[0][1]===1/0&&(r=[[0,-1]]),t=S(r),e=r.reduce((function(t,e){return[Math.min(t[0],e[0]),Math.max(t[1],e[1])]}),[1/0,-1/0])},get:function(){return r.slice()},getConsolidated:function(){return t},getBounds:function(){return e}}}();return l.set(r),{filter:l,filterSpecified:e,svgBrush:{extent:[],brushStartCallback:n,brushCallback:(o=i,function(t){var e=t.brush,r=function(t){return t.svgBrush.extent.map((function(t){return t.slice()}))}(e).slice();e.filter.set(r),o()}),brushEndCallback:a}}},ensureAxisBrush:function(t,e){var r=t.selectAll(\".\"+n.cn.axisBrush).data(o,a);r.enter().append(\"g\").classed(n.cn.axisBrush,!0),function(t,e){var r=t.selectAll(\".background\").data(o);r.enter().append(\"rect\").classed(\"background\",!0).call(d).call(g).style(\"pointer-events\",\"auto\").attr(\"transform\",l(0,n.verticalPadding)),r.call(k).attr(\"height\",(function(t){return t.height-n.verticalPadding}));var i=t.selectAll(\".highlight-shadow\").data(o);i.enter().append(\"line\").classed(\"highlight-shadow\",!0).attr(\"x\",-n.bar.width/2).attr(\"stroke-width\",n.bar.width+n.bar.strokeWidth).attr(\"stroke\",e).attr(\"opacity\",n.bar.strokeOpacity).attr(\"stroke-linecap\",\"butt\"),i.attr(\"y1\",(function(t){return t.height})).call(x);var a=t.selectAll(\".highlight\").data(o);a.enter().append(\"line\").classed(\"highlight\",!0).attr(\"x\",-n.bar.width/2).attr(\"stroke-width\",n.bar.width-n.bar.strokeWidth).attr(\"stroke\",n.bar.fillColor).attr(\"opacity\",n.bar.fillOpacity).attr(\"stroke-linecap\",\"butt\"),a.attr(\"y1\",(function(t){return t.height})).call(x)}(r,e)},cleanRanges:function(t,e){if(Array.isArray(t[0])?(t=t.map((function(t){return t.sort(s)})),t=e.multiselect?S(t.sort(A)):[t[0]]):t=[t.sort(s)],e.tickvals){var r=e.tickvals.slice().sort(s);if(!(t=t.map((function(t){var e=[p(0,r,t[0],[]),p(1,r,t[1],[])];if(e[1]>e[0])return e})).filter((function(t){return t}))).length)return}return t.length>1?t:t[0]}}},{\"../../lib\":503,\"../../lib/gup\":500,\"./constants\":892,\"@plotly/d3\":58}],890:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../plots/get_data\").getModuleCalcData,a=t(\"./plot\"),o=t(\"../../constants/xmlns_namespaces\");r.name=\"parcoords\",r.plot=function(t){var e=i(t.calcdata,\"parcoords\")[0];e.length&&a(t,e)},r.clean=function(t,e,r,n){var i=n._has&&n._has(\"parcoords\"),a=e._has&&e._has(\"parcoords\");i&&!a&&(n._paperdiv.selectAll(\".parcoords\").remove(),n._glimages.selectAll(\"*\").remove())},r.toSVG=function(t){var e=t._fullLayout._glimages,r=n.select(t).selectAll(\".svg-container\");r.filter((function(t,e){return e===r.size()-1})).selectAll(\".gl-canvas-context, .gl-canvas-focus\").each((function(){var t=this.toDataURL(\"image/png\");e.append(\"svg:image\").attr({xmlns:o.svg,\"xlink:href\":t,preserveAspectRatio:\"none\",x:0,y:0,width:this.style.width,height:this.style.height})})),window.setTimeout((function(){n.selectAll(\"#filterBarPattern\").attr(\"id\",\"filterBarPattern\")}),60)}},{\"../../constants/xmlns_namespaces\":480,\"../../plots/get_data\":593,\"./plot\":899,\"@plotly/d3\":58}],891:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").isArrayOrTypedArray,i=t(\"../../components/colorscale\"),a=t(\"../../lib/gup\").wrap;e.exports=function(t,e){var r,o;return i.hasColorscale(e,\"line\")&&n(e.line.color)?(r=e.line.color,o=i.extractOpts(e.line).colorscale,i.calc(t,e,{vals:r,containerStr:\"line\",cLetter:\"c\"})):(r=function(t){for(var e=new Array(t),r=0;rf&&(n.log(\"parcoords traces support up to \"+f+\" dimensions at the moment\"),d.splice(f));var g=s(t,e,{name:\"dimensions\",layout:l,handleItemDefaults:p}),m=function(t,e,r,o,s){var l=s(\"line.color\",r);if(i(t,\"line\")&&n.isArrayOrTypedArray(l)){if(l.length)return s(\"line.colorscale\"),a(t,e,o,s,{prefix:\"line.\",cLetter:\"c\"}),l.length;e.line.color=r}return 1/0}(t,e,r,l,u);o(e,l,u),Array.isArray(g)&&g.length||(e.visible=!1),h(e,g,\"values\",m);var v={family:l.font.family,size:Math.round(l.font.size/1.2),color:l.font.color};n.coerceFont(u,\"labelfont\",v),n.coerceFont(u,\"tickfont\",v),n.coerceFont(u,\"rangefont\",v),u(\"labelangle\"),u(\"labelside\")}},{\"../../components/colorscale/defaults\":376,\"../../components/colorscale/helpers\":377,\"../../lib\":503,\"../../plots/array_container_defaults\":549,\"../../plots/cartesian/axes\":554,\"../../plots/domain\":584,\"./attributes\":888,\"./axisbrush\":889,\"./constants\":892,\"./merge_length\":897}],894:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").isTypedArray;r.convertTypedArray=function(t){return n(t)?Array.prototype.slice.call(t):t},r.isOrdinal=function(t){return!!t.tickvals},r.isVisible=function(t){return t.visible||!(\"visible\"in t)}},{\"../../lib\":503}],895:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),calc:t(\"./calc\"),plot:t(\"./plot\"),colorbar:{container:\"line\",min:\"cmin\",max:\"cmax\"},moduleType:\"trace\",name:\"parcoords\",basePlotModule:t(\"./base_plot\"),categories:[\"gl\",\"regl\",\"noOpacity\",\"noHover\"],meta:{}}},{\"./attributes\":888,\"./base_plot\":890,\"./calc\":891,\"./defaults\":893,\"./plot\":899}],896:[function(t,e,r){\"use strict\";var n=t(\"glslify\"),i=n([\"precision highp float;\\n#define GLSLIFY 1\\n\\nvarying vec4 fragColor;\\n\\nattribute vec4 p01_04, p05_08, p09_12, p13_16,\\n p17_20, p21_24, p25_28, p29_32,\\n p33_36, p37_40, p41_44, p45_48,\\n p49_52, p53_56, p57_60, colors;\\n\\nuniform mat4 dim0A, dim1A, dim0B, dim1B, dim0C, dim1C, dim0D, dim1D,\\n loA, hiA, loB, hiB, loC, hiC, loD, hiD;\\n\\nuniform vec2 resolution, viewBoxPos, viewBoxSize;\\nuniform float maskHeight;\\nuniform float drwLayer; // 0: context, 1: focus, 2: pick\\nuniform vec4 contextColor;\\nuniform sampler2D maskTexture, palette;\\n\\nbool isPick = (drwLayer > 1.5);\\nbool isContext = (drwLayer < 0.5);\\n\\nconst vec4 ZEROS = vec4(0.0, 0.0, 0.0, 0.0);\\nconst vec4 UNITS = vec4(1.0, 1.0, 1.0, 1.0);\\n\\nfloat val(mat4 p, mat4 v) {\\n return dot(matrixCompMult(p, v) * UNITS, UNITS);\\n}\\n\\nfloat axisY(float ratio, mat4 A, mat4 B, mat4 C, mat4 D) {\\n float y1 = val(A, dim0A) + val(B, dim0B) + val(C, dim0C) + val(D, dim0D);\\n float y2 = val(A, dim1A) + val(B, dim1B) + val(C, dim1C) + val(D, dim1D);\\n return y1 * (1.0 - ratio) + y2 * ratio;\\n}\\n\\nint iMod(int a, int b) {\\n return a - b * (a / b);\\n}\\n\\nbool fOutside(float p, float lo, float hi) {\\n return (lo < hi) && (lo > p || p > hi);\\n}\\n\\nbool vOutside(vec4 p, vec4 lo, vec4 hi) {\\n return (\\n fOutside(p[0], lo[0], hi[0]) ||\\n fOutside(p[1], lo[1], hi[1]) ||\\n fOutside(p[2], lo[2], hi[2]) ||\\n fOutside(p[3], lo[3], hi[3])\\n );\\n}\\n\\nbool mOutside(mat4 p, mat4 lo, mat4 hi) {\\n return (\\n vOutside(p[0], lo[0], hi[0]) ||\\n vOutside(p[1], lo[1], hi[1]) ||\\n vOutside(p[2], lo[2], hi[2]) ||\\n vOutside(p[3], lo[3], hi[3])\\n );\\n}\\n\\nbool outsideBoundingBox(mat4 A, mat4 B, mat4 C, mat4 D) {\\n return mOutside(A, loA, hiA) ||\\n mOutside(B, loB, hiB) ||\\n mOutside(C, loC, hiC) ||\\n mOutside(D, loD, hiD);\\n}\\n\\nbool outsideRasterMask(mat4 A, mat4 B, mat4 C, mat4 D) {\\n mat4 pnts[4];\\n pnts[0] = A;\\n pnts[1] = B;\\n pnts[2] = C;\\n pnts[3] = D;\\n\\n for(int i = 0; i < 4; ++i) {\\n for(int j = 0; j < 4; ++j) {\\n for(int k = 0; k < 4; ++k) {\\n if(0 == iMod(\\n int(255.0 * texture2D(maskTexture,\\n vec2(\\n (float(i * 2 + j / 2) + 0.5) / 8.0,\\n (pnts[i][j][k] * (maskHeight - 1.0) + 1.0) / maskHeight\\n ))[3]\\n ) / int(pow(2.0, float(iMod(j * 4 + k, 8)))),\\n 2\\n )) return true;\\n }\\n }\\n }\\n return false;\\n}\\n\\nvec4 position(bool isContext, float v, mat4 A, mat4 B, mat4 C, mat4 D) {\\n float x = 0.5 * sign(v) + 0.5;\\n float y = axisY(x, A, B, C, D);\\n float z = 1.0 - abs(v);\\n\\n z += isContext ? 0.0 : 2.0 * float(\\n outsideBoundingBox(A, B, C, D) ||\\n outsideRasterMask(A, B, C, D)\\n );\\n\\n return vec4(\\n 2.0 * (vec2(x, y) * viewBoxSize + viewBoxPos) / resolution - 1.0,\\n z,\\n 1.0\\n );\\n}\\n\\nvoid main() {\\n mat4 A = mat4(p01_04, p05_08, p09_12, p13_16);\\n mat4 B = mat4(p17_20, p21_24, p25_28, p29_32);\\n mat4 C = mat4(p33_36, p37_40, p41_44, p45_48);\\n mat4 D = mat4(p49_52, p53_56, p57_60, ZEROS);\\n\\n float v = colors[3];\\n\\n gl_Position = position(isContext, v, A, B, C, D);\\n\\n fragColor =\\n isContext ? vec4(contextColor) :\\n isPick ? vec4(colors.rgb, 1.0) : texture2D(palette, vec2(abs(v), 0.5));\\n}\\n\"]),a=n([\"precision highp float;\\n#define GLSLIFY 1\\n\\nvarying vec4 fragColor;\\n\\nvoid main() {\\n gl_FragColor = fragColor;\\n}\\n\"]),o=t(\"./constants\").maxDimensionCount,s=t(\"../../lib\"),l=new Uint8Array(4),c=new Uint8Array(4),u={shape:[256,1],format:\"rgba\",type:\"uint8\",mag:\"nearest\",min:\"nearest\"};function f(t,e,r,n,i){var a=t._gl;a.enable(a.SCISSOR_TEST),a.scissor(e,r,n,i),t.clear({color:[0,0,0,0],depth:1})}function h(t,e,r,n,i,a){var o=a.key;r.drawCompleted||(!function(t){t.read({x:0,y:0,width:1,height:1,data:l})}(t),r.drawCompleted=!0),function s(l){var c=Math.min(n,i-l*n);0===l&&(window.cancelAnimationFrame(r.currentRafs[o]),delete r.currentRafs[o],f(t,a.scissorX,a.scissorY,a.scissorWidth,a.viewBoxSize[1])),r.clearOnly||(a.count=2*c,a.offset=2*l*n,e(a),l*n+c>>8*e)%256/255}function g(t,e,r){for(var n=new Array(8*e),i=0,a=0;au&&(u=t[i].dim1.canvasX,o=i);0===s&&f(T,0,0,r.canvasWidth,r.canvasHeight);var p=function(t){var e,r,n,i=[[],[]];for(n=0;n<64;n++){var a=!t&&no._length&&(S=S.slice(0,o._length));var L,C=o.tickvals;function P(t,e){return{val:t,text:L[e]}}function I(t,e){return t.val-e.val}if(Array.isArray(C)&&C.length){L=o.ticktext,Array.isArray(L)&&L.length?L.length>C.length?L=L.slice(0,C.length):C.length>L.length&&(C=C.slice(0,L.length)):L=C.map(a(o.tickformat));for(var O=1;O=r||l>=i)return;var c=t.lineLayer.readPixel(s,i-1-l),u=0!==c[3],f=u?c[2]+256*(c[1]+256*c[0]):null,h={x:s,y:l,clientX:e.clientX,clientY:e.clientY,dataIndex:t.model.key,curveNumber:f};f!==B&&(u?a.hover(h):a.unhover&&a.unhover(h),B=f)}})),F.style(\"opacity\",(function(t){return t.pick?0:1})),h.style(\"background\",\"rgba(255, 255, 255, 0)\");var N=h.selectAll(\".\"+y.cn.parcoords).data(R,d);N.exit().remove(),N.enter().append(\"g\").classed(y.cn.parcoords,!0).style(\"shape-rendering\",\"crispEdges\").style(\"pointer-events\",\"none\"),N.attr(\"transform\",(function(t){return c(t.model.translateX,t.model.translateY)}));var j=N.selectAll(\".\"+y.cn.parcoordsControlView).data(g,d);j.enter().append(\"g\").classed(y.cn.parcoordsControlView,!0),j.attr(\"transform\",(function(t){return c(t.model.pad.l,t.model.pad.t)}));var U=j.selectAll(\".\"+y.cn.yAxis).data((function(t){return t.dimensions}),d);U.enter().append(\"g\").classed(y.cn.yAxis,!0),j.each((function(t){O(U,t,_)})),F.each((function(t){if(t.viewModel){!t.lineLayer||a?t.lineLayer=b(this,t):t.lineLayer.update(t),(t.key||0===t.key)&&(t.viewModel[t.key]=t.lineLayer);var e=!t.context||a;t.lineLayer.render(t.viewModel.panels,e)}})),U.attr(\"transform\",(function(t){return c(t.xScale(t.xIndex),0)})),U.call(n.behavior.drag().origin((function(t){return t})).on(\"drag\",(function(t){var e=t.parent;S.linePickActive(!1),t.x=Math.max(-y.overdrag,Math.min(t.model.width+y.overdrag,n.event.x)),t.canvasX=t.x*t.model.canvasPixelRatio,U.sort((function(t,e){return t.x-e.x})).each((function(e,r){e.xIndex=r,e.x=t===e?e.x:e.xScale(e.xIndex),e.canvasX=e.x*e.model.canvasPixelRatio})),O(U,e,_),U.filter((function(e){return 0!==Math.abs(t.xIndex-e.xIndex)})).attr(\"transform\",(function(t){return c(t.xScale(t.xIndex),0)})),n.select(this).attr(\"transform\",c(t.x,0)),U.each((function(r,n,i){i===t.parent.key&&(e.dimensions[n]=r)})),e.contextLayer&&e.contextLayer.render(e.panels,!1,!E(e)),e.focusLayer.render&&e.focusLayer.render(e.panels)})).on(\"dragend\",(function(t){var e=t.parent;t.x=t.xScale(t.xIndex),t.canvasX=t.x*t.model.canvasPixelRatio,O(U,e,_),n.select(this).attr(\"transform\",(function(t){return c(t.x,0)})),e.contextLayer&&e.contextLayer.render(e.panels,!1,!E(e)),e.focusLayer&&e.focusLayer.render(e.panels),e.pickLayer&&e.pickLayer.render(e.panels,!0),S.linePickActive(!0),a&&a.axesMoved&&a.axesMoved(e.key,e.dimensions.map((function(t){return t.crossfilterDimensionIndex})))}))),U.exit().remove();var V=U.selectAll(\".\"+y.cn.axisOverlays).data(g,d);V.enter().append(\"g\").classed(y.cn.axisOverlays,!0),V.selectAll(\".\"+y.cn.axis).remove();var H=V.selectAll(\".\"+y.cn.axis).data(g,d);H.enter().append(\"g\").classed(y.cn.axis,!0),H.each((function(t){var e=t.model.height/t.model.tickDistance,r=t.domainScale,i=r.domain();n.select(this).call(n.svg.axis().orient(\"left\").tickSize(4).outerTickSize(2).ticks(e,t.tickFormat).tickValues(t.ordinal?i:null).tickFormat((function(e){return v.isOrdinal(t)?e:z(t.model.dimensions[t.visibleIndex],e)})).scale(r)),f.font(H.selectAll(\"text\"),t.model.tickFont)})),H.selectAll(\".domain, .tick>line\").attr(\"fill\",\"none\").attr(\"stroke\",\"black\").attr(\"stroke-opacity\",.25).attr(\"stroke-width\",\"1px\"),H.selectAll(\"text\").style(\"text-shadow\",u.makeTextShadow(T)).style(\"cursor\",\"default\");var q=V.selectAll(\".\"+y.cn.axisHeading).data(g,d);q.enter().append(\"g\").classed(y.cn.axisHeading,!0);var G=q.selectAll(\".\"+y.cn.axisTitle).data(g,d);G.enter().append(\"text\").classed(y.cn.axisTitle,!0).attr(\"text-anchor\",\"middle\").style(\"cursor\",\"ew-resize\").style(\"pointer-events\",\"auto\"),G.text((function(t){return t.label})).each((function(e){var r=n.select(this);f.font(r,e.model.labelFont),u.convertToTspans(r,t)})).attr(\"transform\",(function(t){var e=I(t.model.labelAngle,t.model.labelSide),r=y.axisTitleOffset;return(e.dir>0?\"\":c(0,2*r+t.model.height))+l(e.degrees)+c(-r*e.dx,-r*e.dy)})).attr(\"text-anchor\",(function(t){var e=I(t.model.labelAngle,t.model.labelSide);return 2*Math.abs(e.dx)>Math.abs(e.dy)?e.dir*e.dx<0?\"start\":\"end\":\"middle\"}));var Y=V.selectAll(\".\"+y.cn.axisExtent).data(g,d);Y.enter().append(\"g\").classed(y.cn.axisExtent,!0);var W=Y.selectAll(\".\"+y.cn.axisExtentTop).data(g,d);W.enter().append(\"g\").classed(y.cn.axisExtentTop,!0),W.attr(\"transform\",c(0,-y.axisExtentOffset));var X=W.selectAll(\".\"+y.cn.axisExtentTopText).data(g,d);X.enter().append(\"text\").classed(y.cn.axisExtentTopText,!0).call(P),X.text((function(t){return D(t,!0)})).each((function(t){f.font(n.select(this),t.model.rangeFont)}));var Z=Y.selectAll(\".\"+y.cn.axisExtentBottom).data(g,d);Z.enter().append(\"g\").classed(y.cn.axisExtentBottom,!0),Z.attr(\"transform\",(function(t){return c(0,t.model.height+y.axisExtentOffset)}));var J=Z.selectAll(\".\"+y.cn.axisExtentBottomText).data(g,d);J.enter().append(\"text\").classed(y.cn.axisExtentBottomText,!0).attr(\"dy\",\"0.75em\").call(P),J.text((function(t){return D(t,!1)})).each((function(t){f.font(n.select(this),t.model.rangeFont)})),x.ensureAxisBrush(V,T)}},{\"../../components/colorscale\":378,\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/gup\":500,\"../../lib/svg_text_utils\":529,\"../../plots/cartesian/axes\":554,\"./axisbrush\":889,\"./constants\":892,\"./helpers\":894,\"./lines\":896,\"@plotly/d3\":58,\"color-rgba\":91}],899:[function(t,e,r){\"use strict\";var n=t(\"./parcoords\"),i=t(\"../../lib/prepare_regl\"),a=t(\"./helpers\").isVisible;function o(t,e,r){var n=e.indexOf(r),i=t.indexOf(n);return-1===i&&(i+=e.length),i}e.exports=function(t,e){var r=t._fullLayout;if(i(t)){var s={},l={},c={},u={},f=r._size;e.forEach((function(e,r){var n=e[0].trace;c[r]=n.index;var i=u[r]=n._fullInput.index;s[r]=t.data[i].dimensions,l[r]=t.data[i].dimensions.slice()}));n(t,e,{width:f.w,height:f.h,margin:{t:f.t,r:f.r,b:f.b,l:f.l}},{filterChanged:function(e,n,i){var a=l[e][n],o=i.map((function(t){return t.slice()})),s=\"dimensions[\"+n+\"].constraintrange\",f=r._tracePreGUI[t._fullData[c[e]]._fullInput.uid];if(void 0===f[s]){var h=a.constraintrange;f[s]=h||null}var p=t._fullData[c[e]].dimensions[n];o.length?(1===o.length&&(o=o[0]),a.constraintrange=o,p.constraintrange=o.slice(),o=[o]):(delete a.constraintrange,delete p.constraintrange,o=null);var d={};d[s]=o,t.emit(\"plotly_restyle\",[d,[u[e]]])},hover:function(e){t.emit(\"plotly_hover\",e)},unhover:function(e){t.emit(\"plotly_unhover\",e)},axesMoved:function(e,r){var n=function(t,e){return function(r,n){return o(t,e,r)-o(t,e,n)}}(r,l[e].filter(a));s[e].sort(n),l[e].filter((function(t){return!a(t)})).sort((function(t){return l[e].indexOf(t)})).forEach((function(t){s[e].splice(s[e].indexOf(t),1),s[e].splice(l[e].indexOf(t),0,t)})),t.emit(\"plotly_restyle\",[{dimensions:[s[e]]},[u[e]]])}})}}},{\"../../lib/prepare_regl\":516,\"./helpers\":894,\"./parcoords\":898}],900:[function(t,e,r){\"use strict\";var n=t(\"../../plots/attributes\"),i=t(\"../../plots/domain\").attributes,a=t(\"../../plots/font_attributes\"),o=t(\"../../components/color/attributes\"),s=t(\"../../plots/template_attributes\").hovertemplateAttrs,l=t(\"../../plots/template_attributes\").texttemplateAttrs,c=t(\"../../lib/extend\").extendFlat,u=a({editType:\"plot\",arrayOk:!0,colorEditType:\"plot\"});e.exports={labels:{valType:\"data_array\",editType:\"calc\"},label0:{valType:\"number\",dflt:0,editType:\"calc\"},dlabel:{valType:\"number\",dflt:1,editType:\"calc\"},values:{valType:\"data_array\",editType:\"calc\"},marker:{colors:{valType:\"data_array\",editType:\"calc\"},line:{color:{valType:\"color\",dflt:o.defaultLine,arrayOk:!0,editType:\"style\"},width:{valType:\"number\",min:0,dflt:0,arrayOk:!0,editType:\"style\"},editType:\"calc\"},editType:\"calc\"},text:{valType:\"data_array\",editType:\"plot\"},hovertext:{valType:\"string\",dflt:\"\",arrayOk:!0,editType:\"style\"},scalegroup:{valType:\"string\",dflt:\"\",editType:\"calc\"},textinfo:{valType:\"flaglist\",flags:[\"label\",\"text\",\"value\",\"percent\"],extras:[\"none\"],editType:\"calc\"},hoverinfo:c({},n.hoverinfo,{flags:[\"label\",\"text\",\"value\",\"percent\",\"name\"]}),hovertemplate:s({},{keys:[\"label\",\"color\",\"value\",\"percent\",\"text\"]}),texttemplate:l({editType:\"plot\"},{keys:[\"label\",\"color\",\"value\",\"percent\",\"text\"]}),textposition:{valType:\"enumerated\",values:[\"inside\",\"outside\",\"auto\",\"none\"],dflt:\"auto\",arrayOk:!0,editType:\"plot\"},textfont:c({},u,{}),insidetextorientation:{valType:\"enumerated\",values:[\"horizontal\",\"radial\",\"tangential\",\"auto\"],dflt:\"auto\",editType:\"plot\"},insidetextfont:c({},u,{}),outsidetextfont:c({},u,{}),automargin:{valType:\"boolean\",dflt:!1,editType:\"plot\"},title:{text:{valType:\"string\",dflt:\"\",editType:\"plot\"},font:c({},u,{}),position:{valType:\"enumerated\",values:[\"top left\",\"top center\",\"top right\",\"middle center\",\"bottom left\",\"bottom center\",\"bottom right\"],editType:\"plot\"},editType:\"plot\"},domain:i({name:\"pie\",trace:!0,editType:\"calc\"}),hole:{valType:\"number\",min:0,max:1,dflt:0,editType:\"calc\"},sort:{valType:\"boolean\",dflt:!0,editType:\"calc\"},direction:{valType:\"enumerated\",values:[\"clockwise\",\"counterclockwise\"],dflt:\"counterclockwise\",editType:\"calc\"},rotation:{valType:\"number\",min:-360,max:360,dflt:0,editType:\"calc\"},pull:{valType:\"number\",min:0,max:1,dflt:0,arrayOk:!0,editType:\"calc\"},_deprecated:{title:{valType:\"string\",dflt:\"\",editType:\"calc\"},titlefont:c({},u,{}),titleposition:{valType:\"enumerated\",values:[\"top left\",\"top center\",\"top right\",\"middle center\",\"bottom left\",\"bottom center\",\"bottom right\"],editType:\"calc\"}}}},{\"../../components/color/attributes\":365,\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/domain\":584,\"../../plots/font_attributes\":585,\"../../plots/template_attributes\":633}],901:[function(t,e,r){\"use strict\";var n=t(\"../../plots/plots\");r.name=\"pie\",r.plot=function(t,e,i,a){n.plotBasePlot(r.name,t,e,i,a)},r.clean=function(t,e,i,a){n.cleanBasePlot(r.name,t,e,i,a)}},{\"../../plots/plots\":619}],902:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"tinycolor2\"),a=t(\"../../components/color\"),o={};function s(t){return function(e,r){return!!e&&(!!(e=i(e)).isValid()&&(e=a.addOpacity(e,e.getAlpha()),t[r]||(t[r]=e),e))}}function l(t,e){var r,n=JSON.stringify(t),a=e[n];if(!a){for(a=t.slice(),r=0;r=0})),(\"funnelarea\"===e.type?v:e.sort)&&a.sort((function(t,e){return e.v-t.v})),a[0]&&(a[0].vTotal=m),a},crossTraceCalc:function(t,e){var r=(e||{}).type;r||(r=\"pie\");var n=t._fullLayout,i=t.calcdata,a=n[r+\"colorway\"],s=n[\"_\"+r+\"colormap\"];n[\"extend\"+r+\"colors\"]&&(a=l(a,o));for(var c=0,u=0;u0){s=!0;break}}s||(o=0)}return{hasLabels:r,hasValues:a,len:o}}e.exports={handleLabelsAndValues:l,supplyDefaults:function(t,e,r,n){function c(r,n){return i.coerce(t,e,a,r,n)}var u=l(c(\"labels\"),c(\"values\")),f=u.len;if(e._hasLabels=u.hasLabels,e._hasValues=u.hasValues,!e._hasLabels&&e._hasValues&&(c(\"label0\"),c(\"dlabel\")),f){e._length=f,c(\"marker.line.width\")&&c(\"marker.line.color\"),c(\"marker.colors\"),c(\"scalegroup\");var h,p=c(\"text\"),d=c(\"texttemplate\");if(d||(h=c(\"textinfo\",Array.isArray(p)?\"text+percent\":\"percent\")),c(\"hovertext\"),c(\"hovertemplate\"),d||h&&\"none\"!==h){var g=c(\"textposition\");s(t,e,n,c,g,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),(Array.isArray(g)||\"auto\"===g||\"outside\"===g)&&c(\"automargin\"),(\"inside\"===g||\"auto\"===g||Array.isArray(g))&&c(\"insidetextorientation\")}o(e,n,c);var m=c(\"hole\");if(c(\"title.text\")){var v=c(\"title.position\",m?\"middle center\":\"top center\");m||\"middle center\"!==v||(e.title.position=\"top center\"),i.coerceFont(c,\"title.font\",n.font)}c(\"sort\"),c(\"direction\"),c(\"rotation\"),c(\"pull\")}else e.visible=!1}}},{\"../../lib\":503,\"../../plots/domain\":584,\"../bar/defaults\":652,\"./attributes\":900,\"fast-isnumeric\":190}],904:[function(t,e,r){\"use strict\";var n=t(\"../../components/fx/helpers\").appendArrayMultiPointValues;e.exports=function(t,e){var r={curveNumber:e.index,pointNumbers:t.pts,data:e._input,fullData:e,label:t.label,color:t.color,value:t.v,percent:t.percent,text:t.text,bbox:t.bbox,v:t.v};return 1===t.pts.length&&(r.pointNumber=r.i=t.pts[0]),n(r,e,t.pts),\"funnelarea\"===e.type&&(delete r.v,delete r.i),r}},{\"../../components/fx/helpers\":402}],905:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");function i(t){return-1!==t.indexOf(\"e\")?t.replace(/[.]?0+e/,\"e\"):-1!==t.indexOf(\".\")?t.replace(/[.]?0+$/,\"\"):t}r.formatPiePercent=function(t,e){var r=i((100*t).toPrecision(3));return n.numSeparate(r,e)+\"%\"},r.formatPieValue=function(t,e){var r=i(t.toPrecision(10));return n.numSeparate(r,e)},r.getFirstFilled=function(t,e){if(Array.isArray(t))for(var r=0;r\"),name:f.hovertemplate||-1!==h.indexOf(\"name\")?f.name:void 0,idealAlign:t.pxmid[0]<0?\"left\":\"right\",color:m.castOption(_.bgcolor,t.pts)||t.color,borderColor:m.castOption(_.bordercolor,t.pts),fontFamily:m.castOption(w.family,t.pts),fontSize:m.castOption(w.size,t.pts),fontColor:m.castOption(w.color,t.pts),nameLength:m.castOption(_.namelength,t.pts),textAlign:m.castOption(_.align,t.pts),hovertemplate:m.castOption(f.hovertemplate,t.pts),hovertemplateLabels:t,eventData:[v(t,f)]},{container:r._hoverlayer.node(),outerContainer:r._paper.node(),gd:e,inOut_bbox:T}),t.bbox=T[0],c._hasHoverLabel=!0}c._hasHoverEvent=!0,e.emit(\"plotly_hover\",{points:[v(t,f)],event:n.event})}})),t.on(\"mouseout\",(function(t){var r=e._fullLayout,i=e._fullData[c.index],o=n.select(this).datum();c._hasHoverEvent&&(t.originalEvent=n.event,e.emit(\"plotly_unhover\",{points:[v(o,i)],event:n.event}),c._hasHoverEvent=!1),c._hasHoverLabel&&(a.loneUnhover(r._hoverlayer.node()),c._hasHoverLabel=!1)})),t.on(\"click\",(function(t){var r=e._fullLayout,i=e._fullData[c.index];e._dragging||!1===r.hovermode||(e._hoverdata=[v(t,i)],a.click(e,n.event))}))}function b(t,e,r){var n=m.castOption(t.insidetextfont.color,e.pts);!n&&t._input.textfont&&(n=m.castOption(t._input.textfont.color,e.pts));var i=m.castOption(t.insidetextfont.family,e.pts)||m.castOption(t.textfont.family,e.pts)||r.family,a=m.castOption(t.insidetextfont.size,e.pts)||m.castOption(t.textfont.size,e.pts)||r.size;return{color:n||o.contrast(e.color),family:i,size:a}}function _(t,e){for(var r,n,i=0;ie&&e>n||r=-4;m-=2)v(Math.PI*m,\"tan\");for(m=4;m>=-4;m-=2)v(Math.PI*(m+1),\"tan\")}if(f||p){for(m=4;m>=-4;m-=2)v(Math.PI*(m+1.5),\"rad\");for(m=4;m>=-4;m-=2)v(Math.PI*(m+.5),\"rad\")}}if(s||d||f){var y=Math.sqrt(t.width*t.width+t.height*t.height);if((a={scale:i*n*2/y,rCenter:1-i,rotate:0}).textPosAngle=(e.startangle+e.stopangle)/2,a.scale>=1)return a;g.push(a)}(d||p)&&((a=T(t,n,o,l,c)).textPosAngle=(e.startangle+e.stopangle)/2,g.push(a)),(d||h)&&((a=k(t,n,o,l,c)).textPosAngle=(e.startangle+e.stopangle)/2,g.push(a));for(var x=0,b=0,_=0;_=1)break}return g[x]}function T(t,e,r,n,i){e=Math.max(0,e-2*g);var a=t.width/t.height,o=S(a,n,e,r);return{scale:2*o/t.height,rCenter:A(a,o/e),rotate:M(i)}}function k(t,e,r,n,i){e=Math.max(0,e-2*g);var a=t.height/t.width,o=S(a,n,e,r);return{scale:2*o/t.width,rCenter:A(a,o/e),rotate:M(i+Math.PI/2)}}function A(t,e){return Math.cos(e)-t*e}function M(t){return(180/Math.PI*t+720)%180-90}function S(t,e,r,n){var i=t+1/(2*Math.tan(e));return r*Math.min(1/(Math.sqrt(i*i+.5)+i),n/(Math.sqrt(t*t+n/2)+t))}function E(t,e){return t.v!==e.vTotal||e.trace.hole?Math.min(1/(1+1/Math.sin(t.halfangle)),t.ring/2):1}function L(t,e){var r=e.pxmid[0],n=e.pxmid[1],i=t.width/2,a=t.height/2;return r<0&&(i*=-1),n<0&&(a*=-1),{scale:1,rCenter:1,rotate:0,x:i+Math.abs(a)*(i>0?1:-1)/2,y:a/(1+r*r/(n*n)),outside:!0}}function C(t,e){var r,n,i,a=t.trace,o={x:t.cx,y:t.cy},s={tx:0,ty:0};s.ty+=a.title.font.size,i=I(a),-1!==a.title.position.indexOf(\"top\")?(o.y-=(1+i)*t.r,s.ty-=t.titleBox.height):-1!==a.title.position.indexOf(\"bottom\")&&(o.y+=(1+i)*t.r);var l,c,u=(l=t.r,c=t.trace.aspectratio,l/(void 0===c?1:c)),f=e.w*(a.domain.x[1]-a.domain.x[0])/2;return-1!==a.title.position.indexOf(\"left\")?(f+=u,o.x-=(1+i)*u,s.tx+=t.titleBox.width/2):-1!==a.title.position.indexOf(\"center\")?f*=2:-1!==a.title.position.indexOf(\"right\")&&(f+=u,o.x+=(1+i)*u,s.tx-=t.titleBox.width/2),r=f/t.titleBox.width,n=P(t,e)/t.titleBox.height,{x:o.x,y:o.y,scale:Math.min(r,n),tx:s.tx,ty:s.ty}}function P(t,e){var r=t.trace,n=e.h*(r.domain.y[1]-r.domain.y[0]);return Math.min(t.titleBox.height,n/2)}function I(t){var e,r=t.pull;if(!r)return 0;if(Array.isArray(r))for(r=0,e=0;er&&(r=t.pull[e]);return r}function O(t,e){for(var r=[],n=0;n1?(c=r.r,u=c/i.aspectratio):(u=r.r,c=u*i.aspectratio),c*=(1+i.baseratio)/2,l=c*u}o=Math.min(o,l/r.vTotal)}for(n=0;n\")}if(a){var x=l.castOption(i,e.i,\"texttemplate\");if(x){var b=function(t){return{label:t.label,value:t.v,valueLabel:m.formatPieValue(t.v,n.separators),percent:t.v/r.vTotal,percentLabel:m.formatPiePercent(t.v/r.vTotal,n.separators),color:t.color,text:t.text,customdata:l.castOption(i,t.i,\"customdata\")}}(e),_=m.getFirstFilled(i.text,e.pts);(y(_)||\"\"===_)&&(b.text=_),e.text=l.texttemplateString(x,b,t._fullLayout._d3locale,b,i._meta||{})}else e.text=\"\"}}function R(t,e){var r=t.rotate*Math.PI/180,n=Math.cos(r),i=Math.sin(r),a=(e.left+e.right)/2,o=(e.top+e.bottom)/2;t.textX=a*n-o*i,t.textY=a*i+o*n,t.noCenter=!0}e.exports={plot:function(t,e){var r=t._fullLayout,a=r._size;d(\"pie\",r),_(e,t),O(e,a);var h=l.makeTraceGroups(r._pielayer,e,\"trace\").each((function(e){var h=n.select(this),d=e[0],g=d.trace;!function(t){var e,r,n,i=t[0],a=i.r,o=i.trace,s=m.getRotationAngle(o.rotation),l=2*Math.PI/i.vTotal,c=\"px0\",u=\"px1\";if(\"counterclockwise\"===o.direction){for(e=0;ei.vTotal/2?1:0,r.halfangle=Math.PI*Math.min(r.v/i.vTotal,.5),r.ring=1-o.hole,r.rInscribed=E(r,i))}(e),h.attr(\"stroke-linejoin\",\"round\"),h.each((function(){var v=n.select(this).selectAll(\"g.slice\").data(e);v.enter().append(\"g\").classed(\"slice\",!0),v.exit().remove();var y=[[[],[]],[[],[]]],_=!1;v.each((function(i,a){if(i.hidden)n.select(this).selectAll(\"path,g\").remove();else{i.pointNumber=i.i,i.curveNumber=g.index,y[i.pxmid[1]<0?0:1][i.pxmid[0]<0?0:1].push(i);var o=d.cx,c=d.cy,u=n.select(this),h=u.selectAll(\"path.surface\").data([i]);if(h.enter().append(\"path\").classed(\"surface\",!0).style({\"pointer-events\":\"all\"}),u.call(x,t,e),g.pull){var v=+m.castOption(g.pull,i.pts)||0;v>0&&(o+=v*i.pxmid[0],c+=v*i.pxmid[1])}i.cxFinal=o,i.cyFinal=c;var T=g.hole;if(i.v===d.vTotal){var k=\"M\"+(o+i.px0[0])+\",\"+(c+i.px0[1])+C(i.px0,i.pxmid,!0,1)+C(i.pxmid,i.px0,!0,1)+\"Z\";T?h.attr(\"d\",\"M\"+(o+T*i.px0[0])+\",\"+(c+T*i.px0[1])+C(i.px0,i.pxmid,!1,T)+C(i.pxmid,i.px0,!1,T)+\"Z\"+k):h.attr(\"d\",k)}else{var A=C(i.px0,i.px1,!0,1);if(T){var M=1-T;h.attr(\"d\",\"M\"+(o+T*i.px1[0])+\",\"+(c+T*i.px1[1])+C(i.px1,i.px0,!1,T)+\"l\"+M*i.px0[0]+\",\"+M*i.px0[1]+A+\"Z\")}else h.attr(\"d\",\"M\"+o+\",\"+c+\"l\"+i.px0[0]+\",\"+i.px0[1]+A+\"Z\")}D(t,i,d);var S=m.castOption(g.textposition,i.pts),E=u.selectAll(\"g.slicetext\").data(i.text&&\"none\"!==S?[0]:[]);E.enter().append(\"g\").classed(\"slicetext\",!0),E.exit().remove(),E.each((function(){var u=l.ensureSingle(n.select(this),\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),h=l.ensureUniformFontSize(t,\"outside\"===S?function(t,e,r){var n=m.castOption(t.outsidetextfont.color,e.pts)||m.castOption(t.textfont.color,e.pts)||r.color,i=m.castOption(t.outsidetextfont.family,e.pts)||m.castOption(t.textfont.family,e.pts)||r.family,a=m.castOption(t.outsidetextfont.size,e.pts)||m.castOption(t.textfont.size,e.pts)||r.size;return{color:n,family:i,size:a}}(g,i,r.font):b(g,i,r.font));u.text(i.text).attr({class:\"slicetext\",transform:\"\",\"text-anchor\":\"middle\"}).call(s.font,h).call(f.convertToTspans,t);var v,y=s.bBox(u.node());if(\"outside\"===S)v=L(y,i);else if(v=w(y,i,d),\"auto\"===S&&v.scale<1){var x=l.ensureUniformFontSize(t,g.outsidetextfont);u.call(s.font,x),v=L(y=s.bBox(u.node()),i)}var T=v.textPosAngle,k=void 0===T?i.pxmid:z(d.r,T);if(v.targetX=o+k[0]*v.rCenter+(v.x||0),v.targetY=c+k[1]*v.rCenter+(v.y||0),R(v,y),v.outside){var A=v.targetY;i.yLabelMin=A-y.height/2,i.yLabelMid=A,i.yLabelMax=A+y.height/2,i.labelExtraX=0,i.labelExtraY=0,_=!0}v.fontSize=h.size,p(g.type,v,r),e[a].transform=v,u.attr(\"transform\",l.getTextTransform(v))}))}function C(t,e,r,n){var a=n*(e[0]-t[0]),o=n*(e[1]-t[1]);return\"a\"+n*d.r+\",\"+n*d.r+\" 0 \"+i.largeArc+(r?\" 1 \":\" 0 \")+a+\",\"+o}}));var T=n.select(this).selectAll(\"g.titletext\").data(g.title.text?[0]:[]);if(T.enter().append(\"g\").classed(\"titletext\",!0),T.exit().remove(),T.each((function(){var e,r=l.ensureSingle(n.select(this),\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),i=g.title.text;g._meta&&(i=l.templateString(i,g._meta)),r.text(i).attr({class:\"titletext\",transform:\"\",\"text-anchor\":\"middle\"}).call(s.font,g.title.font).call(f.convertToTspans,t),e=\"middle center\"===g.title.position?function(t){var e=Math.sqrt(t.titleBox.width*t.titleBox.width+t.titleBox.height*t.titleBox.height);return{x:t.cx,y:t.cy,scale:t.trace.hole*t.r*2/e,tx:0,ty:-t.titleBox.height/2+t.trace.title.font.size}}(d):C(d,a),r.attr(\"transform\",u(e.x,e.y)+c(Math.min(1,e.scale))+u(e.tx,e.ty))})),_&&function(t,e){var r,n,i,a,o,s,l,c,u,f,h,p,d;function g(t,e){return t.pxmid[1]-e.pxmid[1]}function v(t,e){return e.pxmid[1]-t.pxmid[1]}function y(t,r){r||(r={});var i,c,u,h,p=r.labelExtraY+(n?r.yLabelMax:r.yLabelMin),d=n?t.yLabelMin:t.yLabelMax,g=n?t.yLabelMax:t.yLabelMin,v=t.cyFinal+o(t.px0[1],t.px1[1]),y=p-d;if(y*l>0&&(t.labelExtraY=y),Array.isArray(e.pull))for(c=0;c=(m.castOption(e.pull,u.pts)||0)||((t.pxmid[1]-u.pxmid[1])*l>0?(y=u.cyFinal+o(u.px0[1],u.px1[1])-d-t.labelExtraY)*l>0&&(t.labelExtraY+=y):(g+t.labelExtraY-v)*l>0&&(i=3*s*Math.abs(c-f.indexOf(t)),(h=u.cxFinal+a(u.px0[0],u.px1[0])+i-(t.cxFinal+t.pxmid[0])-t.labelExtraX)*s>0&&(t.labelExtraX+=h)))}for(n=0;n<2;n++)for(i=n?g:v,o=n?Math.max:Math.min,l=n?1:-1,r=0;r<2;r++){for(a=r?Math.max:Math.min,s=r?1:-1,(c=t[n][r]).sort(i),u=t[1-n][r],f=u.concat(c),p=[],h=0;hMath.abs(f)?s+=\"l\"+f*t.pxmid[0]/t.pxmid[1]+\",\"+f+\"H\"+(a+t.labelExtraX+c):s+=\"l\"+t.labelExtraX+\",\"+u+\"v\"+(f-u)+\"h\"+c}else s+=\"V\"+(t.yLabelMid+t.labelExtraY)+\"h\"+c;l.ensureSingle(r,\"path\",\"textline\").call(o.stroke,e.outsidetextfont.color).attr({\"stroke-width\":Math.min(2,e.outsidetextfont.size/8),d:s,fill:\"none\"})}else r.select(\"path.textline\").remove()}))}(v,g),_&&g.automargin){var k=s.bBox(h.node()),A=g.domain,M=a.w*(A.x[1]-A.x[0]),S=a.h*(A.y[1]-A.y[0]),E=(.5*M-d.r)/a.w,P=(.5*S-d.r)/a.h;i.autoMargin(t,\"pie.\"+g.uid+\".automargin\",{xl:A.x[0]-E,xr:A.x[1]+E,yb:A.y[0]-P,yt:A.y[1]+P,l:Math.max(d.cx-d.r-k.left,0),r:Math.max(k.right-(d.cx+d.r),0),b:Math.max(k.bottom-(d.cy+d.r),0),t:Math.max(d.cy-d.r-k.top,0),pad:5})}}))}));setTimeout((function(){h.selectAll(\"tspan\").each((function(){var t=n.select(this);t.attr(\"dy\")&&t.attr(\"dy\",t.attr(\"dy\"))}))}),0)},formatSliceLabel:D,transformInsideText:w,determineInsideTextFont:b,positionTitleOutside:C,prerenderTitles:_,layoutAreas:O,attachFxHandlers:x,computeTransform:R}},{\"../../components/color\":366,\"../../components/drawing\":388,\"../../components/fx\":406,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../../plots/plots\":619,\"../bar/constants\":650,\"../bar/uniform_text\":664,\"./event_data\":904,\"./helpers\":905,\"@plotly/d3\":58}],910:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"./style_one\"),a=t(\"../bar/uniform_text\").resizeText;e.exports=function(t){var e=t._fullLayout._pielayer.selectAll(\".trace\");a(t,e,\"pie\"),e.each((function(t){var e=t[0].trace,r=n.select(this);r.style({opacity:e.opacity}),r.selectAll(\"path.surface\").each((function(t){n.select(this).call(i,t,e)}))}))}},{\"../bar/uniform_text\":664,\"./style_one\":911,\"@plotly/d3\":58}],911:[function(t,e,r){\"use strict\";var n=t(\"../../components/color\"),i=t(\"./helpers\").castOption;e.exports=function(t,e,r){var a=r.marker.line,o=i(a.color,e.pts)||n.defaultLine,s=i(a.width,e.pts)||0;t.style(\"stroke-width\",s).call(n.fill,e.color).call(n.stroke,o)}},{\"../../components/color\":366,\"./helpers\":905}],912:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\");e.exports={x:n.x,y:n.y,xy:{valType:\"data_array\",editType:\"calc\"},indices:{valType:\"data_array\",editType:\"calc\"},xbounds:{valType:\"data_array\",editType:\"calc\"},ybounds:{valType:\"data_array\",editType:\"calc\"},text:n.text,marker:{color:{valType:\"color\",arrayOk:!1,editType:\"calc\"},opacity:{valType:\"number\",min:0,max:1,dflt:1,arrayOk:!1,editType:\"calc\"},blend:{valType:\"boolean\",dflt:null,editType:\"calc\"},sizemin:{valType:\"number\",min:.1,max:2,dflt:.5,editType:\"calc\"},sizemax:{valType:\"number\",min:.1,dflt:20,editType:\"calc\"},border:{color:{valType:\"color\",arrayOk:!1,editType:\"calc\"},arearatio:{valType:\"number\",min:0,max:1,dflt:0,editType:\"calc\"},editType:\"calc\"},editType:\"calc\"},transforms:void 0}},{\"../scatter/attributes\":926}],913:[function(t,e,r){\"use strict\";var n=t(\"../../../stackgl_modules\").gl_pointcloud2d,i=t(\"../../lib/str2rgbarray\"),a=t(\"../../plots/cartesian/autorange\").findExtremes,o=t(\"../scatter/get_trace_color\");function s(t,e){this.scene=t,this.uid=e,this.type=\"pointcloud\",this.pickXData=[],this.pickYData=[],this.xData=[],this.yData=[],this.textLabels=[],this.color=\"rgb(0, 0, 0)\",this.name=\"\",this.hoverinfo=\"all\",this.idToIndex=new Int32Array(0),this.bounds=[0,0,0,0],this.pointcloudOptions={positions:new Float32Array(0),idToIndex:this.idToIndex,sizemin:.5,sizemax:12,color:[0,0,0,1],areaRatio:1,borderColor:[0,0,0,1]},this.pointcloud=n(t.glplot,this.pointcloudOptions),this.pointcloud._trace=this}var l=s.prototype;l.handlePick=function(t){var e=this.idToIndex[t.pointId];return{trace:this,dataCoord:t.dataCoord,traceCoord:this.pickXYData?[this.pickXYData[2*e],this.pickXYData[2*e+1]]:[this.pickXData[e],this.pickYData[e]],textLabel:Array.isArray(this.textLabels)?this.textLabels[e]:this.textLabels,color:this.color,name:this.name,pointIndex:e,hoverinfo:this.hoverinfo}},l.update=function(t){this.index=t.index,this.textLabels=t.text,this.name=t.name,this.hoverinfo=t.hoverinfo,this.bounds=[1/0,1/0,-1/0,-1/0],this.updateFast(t),this.color=o(t,{})},l.updateFast=function(t){var e,r,n,o,s,l,c=this.xData=this.pickXData=t.x,u=this.yData=this.pickYData=t.y,f=this.pickXYData=t.xy,h=t.xbounds&&t.ybounds,p=t.indices,d=this.bounds;if(f){if(n=f,e=f.length>>>1,h)d[0]=t.xbounds[0],d[2]=t.xbounds[1],d[1]=t.ybounds[0],d[3]=t.ybounds[1];else for(l=0;ld[2]&&(d[2]=o),sd[3]&&(d[3]=s);if(p)r=p;else for(r=new Int32Array(e),l=0;ld[2]&&(d[2]=o),sd[3]&&(d[3]=s);this.idToIndex=r,this.pointcloudOptions.idToIndex=r,this.pointcloudOptions.positions=n;var g=i(t.marker.color),m=i(t.marker.border.color),v=t.opacity*t.marker.opacity;g[3]*=v,this.pointcloudOptions.color=g;var y=t.marker.blend;if(null===y){y=c.length<100||u.length<100}this.pointcloudOptions.blend=y,m[3]*=v,this.pointcloudOptions.borderColor=m;var x=t.marker.sizemin,b=Math.max(t.marker.sizemax,t.marker.sizemin);this.pointcloudOptions.sizeMin=x,this.pointcloudOptions.sizeMax=b,this.pointcloudOptions.areaRatio=t.marker.border.arearatio,this.pointcloud.update(this.pointcloudOptions);var _=this.scene.xaxis,w=this.scene.yaxis,T=b/2||.5;t._extremes[_._id]=a(_,[d[0],d[2]],{ppad:T}),t._extremes[w._id]=a(w,[d[1],d[3]],{ppad:T})},l.dispose=function(){this.pointcloud.dispose()},e.exports=function(t,e){var r=new s(t,e.uid);return r.update(e),r}},{\"../../../stackgl_modules\":1120,\"../../lib/str2rgbarray\":528,\"../../plots/cartesian/autorange\":553,\"../scatter/get_trace_color\":936}],914:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./attributes\");e.exports=function(t,e,r){function a(r,a){return n.coerce(t,e,i,r,a)}a(\"x\"),a(\"y\"),a(\"xbounds\"),a(\"ybounds\"),t.xy&&t.xy instanceof Float32Array&&(e.xy=t.xy),t.indices&&t.indices instanceof Int32Array&&(e.indices=t.indices),a(\"text\"),a(\"marker.color\",r),a(\"marker.opacity\"),a(\"marker.blend\"),a(\"marker.sizemin\"),a(\"marker.sizemax\"),a(\"marker.border.color\",r),a(\"marker.border.arearatio\"),e._length=null}},{\"../../lib\":503,\"./attributes\":912}],915:[function(t,e,r){\"use strict\";[\"*pointcloud* trace is deprecated!\",\"Please consider switching to the *scattergl* trace type.\"].join(\" \");e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),calc:t(\"../scatter3d/calc\"),plot:t(\"./convert\"),moduleType:\"trace\",name:\"pointcloud\",basePlotModule:t(\"../../plots/gl2d\"),categories:[\"gl\",\"gl2d\",\"showLegend\"],meta:{}}},{\"../../plots/gl2d\":596,\"../scatter3d/calc\":955,\"./attributes\":912,\"./convert\":913,\"./defaults\":914}],916:[function(t,e,r){\"use strict\";var n=t(\"../../plots/font_attributes\"),i=t(\"../../plots/attributes\"),a=t(\"../../components/color/attributes\"),o=t(\"../../components/fx/attributes\"),s=t(\"../../plots/domain\").attributes,l=t(\"../../plots/template_attributes\").hovertemplateAttrs,c=t(\"../../components/colorscale/attributes\"),u=t(\"../../plot_api/plot_template\").templatedArray,f=t(\"../../plots/cartesian/axis_format_attributes\").descriptionOnlyNumbers,h=t(\"../../lib/extend\").extendFlat,p=t(\"../../plot_api/edit_types\").overrideAll;(e.exports=p({hoverinfo:h({},i.hoverinfo,{flags:[],arrayOk:!1}),hoverlabel:o.hoverlabel,domain:s({name:\"sankey\",trace:!0}),orientation:{valType:\"enumerated\",values:[\"v\",\"h\"],dflt:\"h\"},valueformat:{valType:\"string\",dflt:\".3s\",description:f(\"value\")},valuesuffix:{valType:\"string\",dflt:\"\"},arrangement:{valType:\"enumerated\",values:[\"snap\",\"perpendicular\",\"freeform\",\"fixed\"],dflt:\"snap\"},textfont:n({}),customdata:void 0,node:{label:{valType:\"data_array\",dflt:[]},groups:{valType:\"info_array\",impliedEdits:{x:[],y:[]},dimensions:2,freeLength:!0,dflt:[],items:{valType:\"number\",editType:\"calc\"}},x:{valType:\"data_array\",dflt:[]},y:{valType:\"data_array\",dflt:[]},color:{valType:\"color\",arrayOk:!0},customdata:{valType:\"data_array\",editType:\"calc\"},line:{color:{valType:\"color\",dflt:a.defaultLine,arrayOk:!0},width:{valType:\"number\",min:0,dflt:.5,arrayOk:!0}},pad:{valType:\"number\",arrayOk:!1,min:0,dflt:20},thickness:{valType:\"number\",arrayOk:!1,min:1,dflt:20},hoverinfo:{valType:\"enumerated\",values:[\"all\",\"none\",\"skip\"],dflt:\"all\"},hoverlabel:o.hoverlabel,hovertemplate:l({},{keys:[\"value\",\"label\"]})},link:{label:{valType:\"data_array\",dflt:[]},color:{valType:\"color\",arrayOk:!0},customdata:{valType:\"data_array\",editType:\"calc\"},line:{color:{valType:\"color\",dflt:a.defaultLine,arrayOk:!0},width:{valType:\"number\",min:0,dflt:0,arrayOk:!0}},source:{valType:\"data_array\",dflt:[]},target:{valType:\"data_array\",dflt:[]},value:{valType:\"data_array\",dflt:[]},hoverinfo:{valType:\"enumerated\",values:[\"all\",\"none\",\"skip\"],dflt:\"all\"},hoverlabel:o.hoverlabel,hovertemplate:l({},{keys:[\"value\",\"label\"]}),colorscales:u(\"concentrationscales\",{editType:\"calc\",label:{valType:\"string\",editType:\"calc\",dflt:\"\"},cmax:{valType:\"number\",editType:\"calc\",dflt:1},cmin:{valType:\"number\",editType:\"calc\",dflt:0},colorscale:h(c().colorscale,{dflt:[[0,\"white\"],[1,\"black\"]]})})}},\"calc\",\"nested\")).transforms=void 0},{\"../../components/color/attributes\":365,\"../../components/colorscale/attributes\":373,\"../../components/fx/attributes\":397,\"../../lib/extend\":493,\"../../plot_api/edit_types\":536,\"../../plot_api/plot_template\":543,\"../../plots/attributes\":550,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/domain\":584,\"../../plots/font_attributes\":585,\"../../plots/template_attributes\":633}],917:[function(t,e,r){\"use strict\";var n=t(\"../../plot_api/edit_types\").overrideAll,i=t(\"../../plots/get_data\").getModuleCalcData,a=t(\"./plot\"),o=t(\"../../components/fx/layout_attributes\"),s=t(\"../../lib/setcursor\"),l=t(\"../../components/dragelement\"),c=t(\"../../plots/cartesian/select\").prepSelect,u=t(\"../../lib\"),f=t(\"../../registry\");function h(t,e){var r=t._fullData[e],n=t._fullLayout,i=n.dragmode,a=\"pan\"===n.dragmode?\"move\":\"crosshair\",o=r._bgRect;if(\"pan\"!==i&&\"zoom\"!==i){s(o,a);var h={_id:\"x\",c2p:u.identity,_offset:r._sankey.translateX,_length:r._sankey.width},p={_id:\"y\",c2p:u.identity,_offset:r._sankey.translateY,_length:r._sankey.height},d={gd:t,element:o.node(),plotinfo:{id:e,xaxis:h,yaxis:p,fillRangeItems:u.noop},subplot:e,xaxes:[h],yaxes:[p],doneFnCompleted:function(r){var n,i=t._fullData[e],a=i.node.groups.slice(),o=[];function s(t){for(var e=i._sankey.graph.nodes,r=0;ry&&(y=a.source[e]),a.target[e]>y&&(y=a.target[e]);var x,b=y+1;t.node._count=b;var _=t.node.groups,w={};for(e=0;e<_.length;e++){var T=_[e];for(x=0;x0&&s(E,b)&&s(L,b)&&(!w.hasOwnProperty(E)||!w.hasOwnProperty(L)||w[E]!==w[L])){w.hasOwnProperty(L)&&(L=w[L]),w.hasOwnProperty(E)&&(E=w[E]),L=+L,h[E=+E]=h[L]=!0;var C=\"\";a.label&&a.label[e]&&(C=a.label[e]);var P=null;C&&p.hasOwnProperty(C)&&(P=p[C]),c.push({pointNumber:e,label:C,color:u?a.color[e]:a.color,customdata:f?a.customdata[e]:a.customdata,concentrationscale:P,source:E,target:L,value:+S}),M.source.push(E),M.target.push(L)}}var I=b+_.length,O=o(r.color),z=o(r.customdata),D=[];for(e=0;eb-1,childrenNodes:[],pointNumber:e,label:R,color:O?r.color[e]:r.color,customdata:z?r.customdata[e]:r.customdata})}var F=!1;return function(t,e,r){for(var a=i.init2dArray(t,0),o=0;o1}))}(I,M.source,M.target)&&(F=!0),{circular:F,links:c,nodes:D,groups:_,groupLookup:w}}e.exports=function(t,e){var r=c(e);return a({circular:r.circular,_nodes:r.nodes,_links:r.links,_groups:r.groups,_groupLookup:r.groupLookup})}},{\"../../components/colorscale\":378,\"../../lib\":503,\"../../lib/gup\":500,\"strongly-connected-components\":306}],919:[function(t,e,r){\"use strict\";e.exports={nodeTextOffsetHorizontal:4,nodeTextOffsetVertical:3,nodePadAcross:10,sankeyIterations:50,forceIterations:5,forceTicksPerFrame:10,duration:500,ease:\"linear\",cn:{sankey:\"sankey\",sankeyLinks:\"sankey-links\",sankeyLink:\"sankey-link\",sankeyNodeSet:\"sankey-node-set\",sankeyNode:\"sankey-node\",nodeRect:\"node-rect\",nodeLabel:\"node-label\"}}},{}],920:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./attributes\"),a=t(\"../../components/color\"),o=t(\"tinycolor2\"),s=t(\"../../plots/domain\").defaults,l=t(\"../../components/fx/hoverlabel_defaults\"),c=t(\"../../plot_api/plot_template\"),u=t(\"../../plots/array_container_defaults\");function f(t,e){function r(r,a){return n.coerce(t,e,i.link.colorscales,r,a)}r(\"label\"),r(\"cmin\"),r(\"cmax\"),r(\"colorscale\")}e.exports=function(t,e,r,h){function p(r,a){return n.coerce(t,e,i,r,a)}var d=n.extendDeep(h.hoverlabel,t.hoverlabel),g=t.node,m=c.newContainer(e,\"node\");function v(t,e){return n.coerce(g,m,i.node,t,e)}v(\"label\"),v(\"groups\"),v(\"x\"),v(\"y\"),v(\"pad\"),v(\"thickness\"),v(\"line.color\"),v(\"line.width\"),v(\"hoverinfo\",t.hoverinfo),l(g,m,v,d),v(\"hovertemplate\");var y=h.colorway;v(\"color\",m.label.map((function(t,e){return a.addOpacity(function(t){return y[t%y.length]}(e),.8)}))),v(\"customdata\");var x=t.link||{},b=c.newContainer(e,\"link\");function _(t,e){return n.coerce(x,b,i.link,t,e)}_(\"label\"),_(\"source\"),_(\"target\"),_(\"value\"),_(\"line.color\"),_(\"line.width\"),_(\"hoverinfo\",t.hoverinfo),l(x,b,_,d),_(\"hovertemplate\");var w,T=o(h.paper_bgcolor).getLuminance()<.333?\"rgba(255, 255, 255, 0.6)\":\"rgba(0, 0, 0, 0.2)\";_(\"color\",n.repeat(T,b.value.length)),_(\"customdata\"),u(x,b,{name:\"colorscales\",handleItemDefaults:f}),s(e,h,p),p(\"orientation\"),p(\"valueformat\"),p(\"valuesuffix\"),m.x.length&&m.y.length&&(w=\"freeform\"),p(\"arrangement\",w),n.coerceFont(p,\"textfont\",n.extendFlat({},h.font)),e._length=null}},{\"../../components/color\":366,\"../../components/fx/hoverlabel_defaults\":404,\"../../lib\":503,\"../../plot_api/plot_template\":543,\"../../plots/array_container_defaults\":549,\"../../plots/domain\":584,\"./attributes\":916,tinycolor2:312}],921:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),calc:t(\"./calc\"),plot:t(\"./plot\"),moduleType:\"trace\",name:\"sankey\",basePlotModule:t(\"./base_plot\"),selectPoints:t(\"./select.js\"),categories:[\"noOpacity\"],meta:{}}},{\"./attributes\":916,\"./base_plot\":917,\"./calc\":918,\"./defaults\":920,\"./plot\":922,\"./select.js\":924}],922:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=i.numberFormat,o=t(\"./render\"),s=t(\"../../components/fx\"),l=t(\"../../components/color\"),c=t(\"./constants\").cn,u=i._;function f(t){return\"\"!==t}function h(t,e){return t.filter((function(t){return t.key===e.traceId}))}function p(t,e){n.select(t).select(\"path\").style(\"fill-opacity\",e),n.select(t).select(\"rect\").style(\"fill-opacity\",e)}function d(t){n.select(t).select(\"text.name\").style(\"fill\",\"black\")}function g(t){return function(e){return-1!==t.node.sourceLinks.indexOf(e.link)||-1!==t.node.targetLinks.indexOf(e.link)}}function m(t){return function(e){return-1!==e.node.sourceLinks.indexOf(t.link)||-1!==e.node.targetLinks.indexOf(t.link)}}function v(t,e,r){e&&r&&h(r,e).selectAll(\".\"+c.sankeyLink).filter(g(e)).call(x.bind(0,e,r,!1))}function y(t,e,r){e&&r&&h(r,e).selectAll(\".\"+c.sankeyLink).filter(g(e)).call(b.bind(0,e,r,!1))}function x(t,e,r,n){var i=n.datum().link.label;n.style(\"fill-opacity\",(function(t){if(!t.link.concentrationscale)return.4})),i&&h(e,t).selectAll(\".\"+c.sankeyLink).filter((function(t){return t.link.label===i})).style(\"fill-opacity\",(function(t){if(!t.link.concentrationscale)return.4})),r&&h(e,t).selectAll(\".\"+c.sankeyNode).filter(m(t)).call(v)}function b(t,e,r,n){var i=n.datum().link.label;n.style(\"fill-opacity\",(function(t){return t.tinyColorAlpha})),i&&h(e,t).selectAll(\".\"+c.sankeyLink).filter((function(t){return t.link.label===i})).style(\"fill-opacity\",(function(t){return t.tinyColorAlpha})),r&&h(e,t).selectAll(c.sankeyNode).filter(m(t)).call(y)}function _(t,e){var r=t.hoverlabel||{},n=i.nestedProperty(r,e).get();return!Array.isArray(n)&&n}e.exports=function(t,e){for(var r=t._fullLayout,i=r._paper,h=r._size,g=0;g\"),color:_(o,\"bgcolor\")||l.addOpacity(g.color,1),borderColor:_(o,\"bordercolor\"),fontFamily:_(o,\"font.family\"),fontSize:_(o,\"font.size\"),fontColor:_(o,\"font.color\"),nameLength:_(o,\"namelength\"),textAlign:_(o,\"align\"),idealAlign:n.event.x\"),color:_(o,\"bgcolor\")||i.tinyColorHue,borderColor:_(o,\"bordercolor\"),fontFamily:_(o,\"font.family\"),fontSize:_(o,\"font.size\"),fontColor:_(o,\"font.color\"),nameLength:_(o,\"namelength\"),textAlign:_(o,\"align\"),idealAlign:\"left\",hovertemplate:o.hovertemplate,hovertemplateLabels:y,eventData:[i.node]},{container:r._hoverlayer.node(),outerContainer:r._paper.node(),gd:t});p(w,.85),d(w)}}},unhover:function(e,i,a){!1!==t._fullLayout.hovermode&&(n.select(e).call(y,i,a),\"skip\"!==i.node.trace.node.hoverinfo&&(i.node.fullData=i.node.trace,t.emit(\"plotly_unhover\",{event:n.event,points:[i.node]})),s.loneUnhover(r._hoverlayer.node()))},select:function(e,r,i){var a=r.node;a.originalEvent=n.event,t._hoverdata=[a],n.select(e).call(y,r,i),s.click(t,{target:!0})}}})}},{\"../../components/color\":366,\"../../components/fx\":406,\"../../lib\":503,\"./constants\":919,\"./render\":923,\"@plotly/d3\":58}],923:[function(t,e,r){\"use strict\";var n=t(\"d3-force\"),i=t(\"d3-interpolate\").interpolateNumber,a=t(\"@plotly/d3\"),o=t(\"@plotly/d3-sankey\"),s=t(\"@plotly/d3-sankey-circular\"),l=t(\"./constants\"),c=t(\"tinycolor2\"),u=t(\"../../components/color\"),f=t(\"../../components/drawing\"),h=t(\"../../lib\"),p=h.strTranslate,d=h.strRotate,g=t(\"../../lib/gup\"),m=g.keyFun,v=g.repeat,y=g.unwrap,x=t(\"../../lib/svg_text_utils\"),b=t(\"../../registry\"),_=t(\"../../constants/alignment\"),w=_.CAP_SHIFT,T=_.LINE_SPACING;function k(t,e,r){var n,i=y(e),a=i.trace,u=a.domain,f=\"h\"===a.orientation,p=a.node.pad,d=a.node.thickness,g=t.width*(u.x[1]-u.x[0]),m=t.height*(u.y[1]-u.y[0]),v=i._nodes,x=i._links,b=i.circular;(n=b?s.sankeyCircular().circularLinkGap(0):o.sankey()).iterations(l.sankeyIterations).size(f?[g,m]:[m,g]).nodeWidth(d).nodePadding(p).nodeId((function(t){return t.pointNumber})).nodes(v).links(x);var _,w,T,k=n();for(var A in n.nodePadding()=i||(r=i-e.y0)>1e-6&&(e.y0+=r,e.y1+=r),i=e.y1+p}))}(function(t){var e,r,n=t.map((function(t,e){return{x0:t.x0,index:e}})).sort((function(t,e){return t.x0-e.x0})),i=[],a=-1,o=-1/0;for(_=0;_o+d&&(a+=1,e=s.x0),o=s.x0,i[a]||(i[a]=[]),i[a].push(s),r=e-s.x0,s.x0+=r,s.x1+=r}return i}(v=k.nodes));n.update(k)}return{circular:b,key:r,trace:a,guid:h.randstr(),horizontal:f,width:g,height:m,nodePad:a.node.pad,nodeLineColor:a.node.line.color,nodeLineWidth:a.node.line.width,linkLineColor:a.link.line.color,linkLineWidth:a.link.line.width,valueFormat:a.valueformat,valueSuffix:a.valuesuffix,textFont:a.textfont,translateX:u.x[0]*t.width+t.margin.l,translateY:t.height-u.y[1]*t.height+t.margin.t,dragParallel:f?m:g,dragPerpendicular:f?g:m,arrangement:a.arrangement,sankey:n,graph:k,forceLayouts:{},interactionState:{dragInProgress:!1,hovered:!1}}}function A(t,e,r){var n=c(e.color),i=e.source.label+\"|\"+e.target.label+\"__\"+r;return e.trace=t.trace,e.curveNumber=t.trace.index,{circular:t.circular,key:i,traceId:t.key,pointNumber:e.pointNumber,link:e,tinyColorHue:u.tinyRGB(n),tinyColorAlpha:n.getAlpha(),linkPath:M,linkLineColor:t.linkLineColor,linkLineWidth:t.linkLineWidth,valueFormat:t.valueFormat,valueSuffix:t.valueSuffix,sankey:t.sankey,parent:t,interactionState:t.interactionState,flow:e.flow}}function M(){return function(t){if(t.link.circular)return e=t.link,r=e.width/2,n=e.circularPathData,\"top\"===e.circularLinkType?\"M \"+n.targetX+\" \"+(n.targetY+r)+\" L\"+n.rightInnerExtent+\" \"+(n.targetY+r)+\"A\"+(n.rightLargeArcRadius+r)+\" \"+(n.rightSmallArcRadius+r)+\" 0 0 1 \"+(n.rightFullExtent-r)+\" \"+(n.targetY-n.rightSmallArcRadius)+\"L\"+(n.rightFullExtent-r)+\" \"+n.verticalRightInnerExtent+\"A\"+(n.rightLargeArcRadius+r)+\" \"+(n.rightLargeArcRadius+r)+\" 0 0 1 \"+n.rightInnerExtent+\" \"+(n.verticalFullExtent-r)+\"L\"+n.leftInnerExtent+\" \"+(n.verticalFullExtent-r)+\"A\"+(n.leftLargeArcRadius+r)+\" \"+(n.leftLargeArcRadius+r)+\" 0 0 1 \"+(n.leftFullExtent+r)+\" \"+n.verticalLeftInnerExtent+\"L\"+(n.leftFullExtent+r)+\" \"+(n.sourceY-n.leftSmallArcRadius)+\"A\"+(n.leftLargeArcRadius+r)+\" \"+(n.leftSmallArcRadius+r)+\" 0 0 1 \"+n.leftInnerExtent+\" \"+(n.sourceY+r)+\"L\"+n.sourceX+\" \"+(n.sourceY+r)+\"L\"+n.sourceX+\" \"+(n.sourceY-r)+\"L\"+n.leftInnerExtent+\" \"+(n.sourceY-r)+\"A\"+(n.leftLargeArcRadius-r)+\" \"+(n.leftSmallArcRadius-r)+\" 0 0 0 \"+(n.leftFullExtent-r)+\" \"+(n.sourceY-n.leftSmallArcRadius)+\"L\"+(n.leftFullExtent-r)+\" \"+n.verticalLeftInnerExtent+\"A\"+(n.leftLargeArcRadius-r)+\" \"+(n.leftLargeArcRadius-r)+\" 0 0 0 \"+n.leftInnerExtent+\" \"+(n.verticalFullExtent+r)+\"L\"+n.rightInnerExtent+\" \"+(n.verticalFullExtent+r)+\"A\"+(n.rightLargeArcRadius-r)+\" \"+(n.rightLargeArcRadius-r)+\" 0 0 0 \"+(n.rightFullExtent+r)+\" \"+n.verticalRightInnerExtent+\"L\"+(n.rightFullExtent+r)+\" \"+(n.targetY-n.rightSmallArcRadius)+\"A\"+(n.rightLargeArcRadius-r)+\" \"+(n.rightSmallArcRadius-r)+\" 0 0 0 \"+n.rightInnerExtent+\" \"+(n.targetY-r)+\"L\"+n.targetX+\" \"+(n.targetY-r)+\"Z\":\"M \"+n.targetX+\" \"+(n.targetY-r)+\" L\"+n.rightInnerExtent+\" \"+(n.targetY-r)+\"A\"+(n.rightLargeArcRadius+r)+\" \"+(n.rightSmallArcRadius+r)+\" 0 0 0 \"+(n.rightFullExtent-r)+\" \"+(n.targetY+n.rightSmallArcRadius)+\"L\"+(n.rightFullExtent-r)+\" \"+n.verticalRightInnerExtent+\"A\"+(n.rightLargeArcRadius+r)+\" \"+(n.rightLargeArcRadius+r)+\" 0 0 0 \"+n.rightInnerExtent+\" \"+(n.verticalFullExtent+r)+\"L\"+n.leftInnerExtent+\" \"+(n.verticalFullExtent+r)+\"A\"+(n.leftLargeArcRadius+r)+\" \"+(n.leftLargeArcRadius+r)+\" 0 0 0 \"+(n.leftFullExtent+r)+\" \"+n.verticalLeftInnerExtent+\"L\"+(n.leftFullExtent+r)+\" \"+(n.sourceY+n.leftSmallArcRadius)+\"A\"+(n.leftLargeArcRadius+r)+\" \"+(n.leftSmallArcRadius+r)+\" 0 0 0 \"+n.leftInnerExtent+\" \"+(n.sourceY-r)+\"L\"+n.sourceX+\" \"+(n.sourceY-r)+\"L\"+n.sourceX+\" \"+(n.sourceY+r)+\"L\"+n.leftInnerExtent+\" \"+(n.sourceY+r)+\"A\"+(n.leftLargeArcRadius-r)+\" \"+(n.leftSmallArcRadius-r)+\" 0 0 1 \"+(n.leftFullExtent-r)+\" \"+(n.sourceY+n.leftSmallArcRadius)+\"L\"+(n.leftFullExtent-r)+\" \"+n.verticalLeftInnerExtent+\"A\"+(n.leftLargeArcRadius-r)+\" \"+(n.leftLargeArcRadius-r)+\" 0 0 1 \"+n.leftInnerExtent+\" \"+(n.verticalFullExtent-r)+\"L\"+n.rightInnerExtent+\" \"+(n.verticalFullExtent-r)+\"A\"+(n.rightLargeArcRadius-r)+\" \"+(n.rightLargeArcRadius-r)+\" 0 0 1 \"+(n.rightFullExtent+r)+\" \"+n.verticalRightInnerExtent+\"L\"+(n.rightFullExtent+r)+\" \"+(n.targetY+n.rightSmallArcRadius)+\"A\"+(n.rightLargeArcRadius-r)+\" \"+(n.rightSmallArcRadius-r)+\" 0 0 1 \"+n.rightInnerExtent+\" \"+(n.targetY+r)+\"L\"+n.targetX+\" \"+(n.targetY+r)+\"Z\";var e,r,n,a=t.link.source.x1,o=t.link.target.x0,s=i(a,o),l=s(.5),c=s(.5),u=t.link.y0-t.link.width/2,f=t.link.y0+t.link.width/2,h=t.link.y1-t.link.width/2,p=t.link.y1+t.link.width/2;return\"M\"+a+\",\"+u+\"C\"+l+\",\"+u+\" \"+c+\",\"+h+\" \"+o+\",\"+h+\"L\"+o+\",\"+p+\"C\"+c+\",\"+p+\" \"+l+\",\"+f+\" \"+a+\",\"+f+\"Z\"}}function S(t,e){var r=c(e.color),n=l.nodePadAcross,i=t.nodePad/2;e.dx=e.x1-e.x0,e.dy=e.y1-e.y0;var a=e.dx,o=Math.max(.5,e.dy),s=\"node_\"+e.pointNumber;return e.group&&(s=h.randstr()),e.trace=t.trace,e.curveNumber=t.trace.index,{index:e.pointNumber,key:s,partOfGroup:e.partOfGroup||!1,group:e.group,traceId:t.key,trace:t.trace,node:e,nodePad:t.nodePad,nodeLineColor:t.nodeLineColor,nodeLineWidth:t.nodeLineWidth,textFont:t.textFont,size:t.horizontal?t.height:t.width,visibleWidth:Math.ceil(a),visibleHeight:o,zoneX:-n,zoneY:-i,zoneWidth:a+2*n,zoneHeight:o+2*i,labelY:t.horizontal?e.dy/2+1:e.dx/2+1,left:1===e.originalLayer,sizeAcross:t.width,forceLayouts:t.forceLayouts,horizontal:t.horizontal,darkBackground:r.getBrightness()<=128,tinyColorHue:u.tinyRGB(r),tinyColorAlpha:r.getAlpha(),valueFormat:t.valueFormat,valueSuffix:t.valueSuffix,sankey:t.sankey,graph:t.graph,arrangement:t.arrangement,uniqueNodeLabelPathId:[t.guid,t.key,s].join(\"_\"),interactionState:t.interactionState,figure:t}}function E(t){t.attr(\"transform\",(function(t){return p(t.node.x0.toFixed(3),t.node.y0.toFixed(3))}))}function L(t){t.call(E)}function C(t,e){t.call(L),e.attr(\"d\",M())}function P(t){t.attr(\"width\",(function(t){return t.node.x1-t.node.x0})).attr(\"height\",(function(t){return t.visibleHeight}))}function I(t){return t.link.width>1||t.linkLineWidth>0}function O(t){return p(t.translateX,t.translateY)+(t.horizontal?\"matrix(1 0 0 1 0 0)\":\"matrix(0 1 1 0 0 0)\")}function z(t,e,r){t.on(\".basic\",null).on(\"mouseover.basic\",(function(t){t.interactionState.dragInProgress||t.partOfGroup||(r.hover(this,t,e),t.interactionState.hovered=[this,t])})).on(\"mousemove.basic\",(function(t){t.interactionState.dragInProgress||t.partOfGroup||(r.follow(this,t),t.interactionState.hovered=[this,t])})).on(\"mouseout.basic\",(function(t){t.interactionState.dragInProgress||t.partOfGroup||(r.unhover(this,t,e),t.interactionState.hovered=!1)})).on(\"click.basic\",(function(t){t.interactionState.hovered&&(r.unhover(this,t,e),t.interactionState.hovered=!1),t.interactionState.dragInProgress||t.partOfGroup||r.select(this,t,e)}))}function D(t,e,r,i){var o=a.behavior.drag().origin((function(t){return{x:t.node.x0+t.visibleWidth/2,y:t.node.y0+t.visibleHeight/2}})).on(\"dragstart\",(function(a){if(\"fixed\"!==a.arrangement&&(h.ensureSingle(i._fullLayout._infolayer,\"g\",\"dragcover\",(function(t){i._fullLayout._dragCover=t})),h.raiseToTop(this),a.interactionState.dragInProgress=a.node,F(a.node),a.interactionState.hovered&&(r.nodeEvents.unhover.apply(0,a.interactionState.hovered),a.interactionState.hovered=!1),\"snap\"===a.arrangement)){var o=a.traceId+\"|\"+a.key;a.forceLayouts[o]?a.forceLayouts[o].alpha(1):function(t,e,r,i){!function(t){for(var e=0;e0&&n.forceLayouts[e].alpha(0)}}(0,e,a,r)).stop()}(0,o,a),function(t,e,r,n,i){window.requestAnimationFrame((function a(){var o;for(o=0;o0)window.requestAnimationFrame(a);else{var s=r.node.originalX;r.node.x0=s-r.visibleWidth/2,r.node.x1=s+r.visibleWidth/2,R(r,i)}}))}(t,e,a,o,i)}})).on(\"drag\",(function(r){if(\"fixed\"!==r.arrangement){var n=a.event.x,i=a.event.y;\"snap\"===r.arrangement?(r.node.x0=n-r.visibleWidth/2,r.node.x1=n+r.visibleWidth/2,r.node.y0=i-r.visibleHeight/2,r.node.y1=i+r.visibleHeight/2):(\"freeform\"===r.arrangement&&(r.node.x0=n-r.visibleWidth/2,r.node.x1=n+r.visibleWidth/2),i=Math.max(0,Math.min(r.size-r.visibleHeight/2,i)),r.node.y0=i-r.visibleHeight/2,r.node.y1=i+r.visibleHeight/2),F(r.node),\"snap\"!==r.arrangement&&(r.sankey.update(r.graph),C(t.filter(B(r)),e))}})).on(\"dragend\",(function(t){if(\"fixed\"!==t.arrangement){t.interactionState.dragInProgress=!1;for(var e=0;el&&C[v].gap;)v--;for(x=C[v].s,g=C.length-1;g>v;g--)C[g].s=x;for(;lM[u]&&u=0;i--){var a=t[i];if(\"scatter\"===a.type&&a.xaxis===r.xaxis&&a.yaxis===r.yaxis){a.opacity=void 0;break}}}}}},{}],933:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../registry\"),a=t(\"./attributes\"),o=t(\"./constants\"),s=t(\"./subtypes\"),l=t(\"./xy_defaults\"),c=t(\"./period_defaults\"),u=t(\"./stack_defaults\"),f=t(\"./marker_defaults\"),h=t(\"./line_defaults\"),p=t(\"./line_shape_defaults\"),d=t(\"./text_defaults\"),g=t(\"./fillcolor_defaults\");e.exports=function(t,e,r,m){function v(r,i){return n.coerce(t,e,a,r,i)}var y=l(t,e,m,v);if(y||(e.visible=!1),e.visible){c(t,e,m,v),v(\"xhoverformat\"),v(\"yhoverformat\");var x=u(t,e,m,v),b=!x&&y=Math.min(e,r)&&d<=Math.max(e,r)?0:1/0}var n=Math.max(3,t.mrc||0),i=1-1/n,a=Math.abs(h.c2p(t.x)-d);return a=Math.min(e,r)&&g<=Math.max(e,r)?0:1/0}var n=Math.max(3,t.mrc||0),i=1-1/n,a=Math.abs(p.c2p(t.y)-g);return aW!=(N=z[I][1])>=W&&(R=z[I-1][0],F=z[I][0],N-B&&(D=R+(F-R)*(W-B)/(N-B),H=Math.min(H,D),q=Math.max(q,D)));H=Math.max(H,0),q=Math.min(q,h._length);var X=s.defaultLine;return s.opacity(f.fillcolor)?X=f.fillcolor:s.opacity((f.line||{}).color)&&(X=f.line.color),n.extendFlat(t,{distance:t.maxHoverDistance,x0:H,x1:q,y0:W,y1:W,color:X,hovertemplate:!1}),delete t.index,f.text&&!Array.isArray(f.text)?t.text=String(f.text):t.text=f.name,[t]}}}},{\"../../components/color\":366,\"../../components/fx\":406,\"../../lib\":503,\"../../registry\":638,\"./get_trace_color\":936}],938:[function(t,e,r){\"use strict\";var n=t(\"./subtypes\");e.exports={hasLines:n.hasLines,hasMarkers:n.hasMarkers,hasText:n.hasText,isBubble:n.isBubble,attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),crossTraceDefaults:t(\"./cross_trace_defaults\"),calc:t(\"./calc\").calc,crossTraceCalc:t(\"./cross_trace_calc\"),arraysToCalcdata:t(\"./arrays_to_calcdata\"),plot:t(\"./plot\"),colorbar:t(\"./marker_colorbar\"),formatLabels:t(\"./format_labels\"),style:t(\"./style\").style,styleOnSelect:t(\"./style\").styleOnSelect,hoverPoints:t(\"./hover\"),selectPoints:t(\"./select\"),animatable:!0,moduleType:\"trace\",name:\"scatter\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"cartesian\",\"svg\",\"symbols\",\"errorBarsOK\",\"showLegend\",\"scatter-like\",\"zoomScale\"],meta:{}}},{\"../../plots/cartesian\":568,\"./arrays_to_calcdata\":925,\"./attributes\":926,\"./calc\":927,\"./cross_trace_calc\":931,\"./cross_trace_defaults\":932,\"./defaults\":933,\"./format_labels\":935,\"./hover\":937,\"./marker_colorbar\":944,\"./plot\":947,\"./select\":948,\"./style\":950,\"./subtypes\":951}],939:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").isArrayOrTypedArray,i=t(\"../../components/colorscale/helpers\").hasColorscale,a=t(\"../../components/colorscale/defaults\");e.exports=function(t,e,r,o,s,l){var c=(t.marker||{}).color;(s(\"line.color\",r),i(t,\"line\"))?a(t,e,o,s,{prefix:\"line.\",cLetter:\"c\"}):s(\"line.color\",!n(c)&&c||r);s(\"line.width\"),(l||{}).noDash||s(\"line.dash\")}},{\"../../components/colorscale/defaults\":376,\"../../components/colorscale/helpers\":377,\"../../lib\":503}],940:[function(t,e,r){\"use strict\";var n=t(\"../../constants/numerical\"),i=n.BADNUM,a=n.LOG_CLIP,o=a+.5,s=a-.5,l=t(\"../../lib\"),c=l.segmentsIntersect,u=l.constrain,f=t(\"./constants\");e.exports=function(t,e){var r,n,a,h,p,d,g,m,v,y,x,b,_,w,T,k,A,M,S=e.xaxis,E=e.yaxis,L=\"log\"===S.type,C=\"log\"===E.type,P=S._length,I=E._length,O=e.connectGaps,z=e.baseTolerance,D=e.shape,R=\"linear\"===D,F=e.fill&&\"none\"!==e.fill,B=[],N=f.minTolerance,j=t.length,U=new Array(j),V=0;function H(r){var n=t[r];if(!n)return!1;var a=e.linearized?S.l2p(n.x):S.c2p(n.x),l=e.linearized?E.l2p(n.y):E.c2p(n.y);if(a===i){if(L&&(a=S.c2p(n.x,!0)),a===i)return!1;C&&l===i&&(a*=Math.abs(S._m*I*(S._m>0?o:s)/(E._m*P*(E._m>0?o:s)))),a*=1e3}if(l===i){if(C&&(l=E.c2p(n.y,!0)),l===i)return!1;l*=1e3}return[a,l]}function q(t,e,r,n){var i=r-t,a=n-e,o=.5-t,s=.5-e,l=i*i+a*a,c=i*o+a*s;if(c>0&&crt||t[1]it)return[u(t[0],et,rt),u(t[1],nt,it)]}function st(t,e){return t[0]===e[0]&&(t[0]===et||t[0]===rt)||(t[1]===e[1]&&(t[1]===nt||t[1]===it)||void 0)}function lt(t,e,r){return function(n,i){var a=ot(n),o=ot(i),s=[];if(a&&o&&st(a,o))return s;a&&s.push(a),o&&s.push(o);var c=2*l.constrain((n[t]+i[t])/2,e,r)-((a||n)[t]+(o||i)[t]);c&&((a&&o?c>0==a[t]>o[t]?a:o:a||o)[t]+=c);return s}}function ct(t){var e=t[0],r=t[1],n=e===U[V-1][0],i=r===U[V-1][1];if(!n||!i)if(V>1){var a=e===U[V-2][0],o=r===U[V-2][1];n&&(e===et||e===rt)&&a?o?V--:U[V-1]=t:i&&(r===nt||r===it)&&o?a?V--:U[V-1]=t:U[V++]=t}else U[V++]=t}function ut(t){U[V-1][0]!==t[0]&&U[V-1][1]!==t[1]&&ct([Z,J]),ct(t),K=null,Z=J=0}function ft(t){if(A=t[0]/P,M=t[1]/I,W=t[0]rt?rt:0,X=t[1]it?it:0,W||X){if(V)if(K){var e=$(K,t);e.length>1&&(ut(e[0]),U[V++]=e[1])}else Q=$(U[V-1],t)[0],U[V++]=Q;else U[V++]=[W||t[0],X||t[1]];var r=U[V-1];W&&X&&(r[0]!==W||r[1]!==X)?(K&&(Z!==W&&J!==X?ct(Z&&J?(n=K,a=(i=t)[0]-n[0],o=(i[1]-n[1])/a,(n[1]*i[0]-i[1]*n[0])/a>0?[o>0?et:rt,it]:[o>0?rt:et,nt]):[Z||W,J||X]):Z&&J&&ct([Z,J])),ct([W,X])):Z-W&&J-X&&ct([W||Z,X||J]),K=t,Z=W,J=X}else K&&ut($(K,t)[0]),U[V++]=t;var n,i,a,o}for(\"linear\"===D||\"spline\"===D?$=function(t,e){for(var r=[],n=0,i=0;i<4;i++){var a=at[i],o=c(t[0],t[1],e[0],e[1],a[0],a[1],a[2],a[3]);o&&(!n||Math.abs(o.x-r[0][0])>1||Math.abs(o.y-r[0][1])>1)&&(o=[o.x,o.y],n&&Y(o,t)G(d,ht))break;a=d,(_=v[0]*m[0]+v[1]*m[1])>x?(x=_,h=d,g=!1):_=t.length||!d)break;ft(d),n=d}}else ft(h)}K&&ct([Z||K[0],J||K[1]]),B.push(U.slice(0,V))}return B}},{\"../../constants/numerical\":479,\"../../lib\":503,\"./constants\":930}],941:[function(t,e,r){\"use strict\";e.exports=function(t,e,r){\"spline\"===r(\"line.shape\")&&r(\"line.smoothing\")}},{}],942:[function(t,e,r){\"use strict\";var n={tonextx:1,tonexty:1,tonext:1};e.exports=function(t,e,r){var i,a,o,s,l,c={},u=!1,f=-1,h=0,p=-1;for(a=0;a=0?l=p:(l=p=h,h++),l0?Math.max(r,a):0}}},{\"fast-isnumeric\":190}],944:[function(t,e,r){\"use strict\";e.exports={container:\"marker\",min:\"cmin\",max:\"cmax\"}},{}],945:[function(t,e,r){\"use strict\";var n=t(\"../../components/color\"),i=t(\"../../components/colorscale/helpers\").hasColorscale,a=t(\"../../components/colorscale/defaults\"),o=t(\"./subtypes\");e.exports=function(t,e,r,s,l,c){var u=o.isBubble(t),f=(t.line||{}).color;(c=c||{},f&&(r=f),l(\"marker.symbol\"),l(\"marker.opacity\",u?.7:1),l(\"marker.size\"),l(\"marker.color\",r),i(t,\"marker\")&&a(t,e,s,l,{prefix:\"marker.\",cLetter:\"c\"}),c.noSelect||(l(\"selected.marker.color\"),l(\"unselected.marker.color\"),l(\"selected.marker.size\"),l(\"unselected.marker.size\")),c.noLine||(l(\"marker.line.color\",f&&!Array.isArray(f)&&e.marker.color!==f?f:u?n.background:n.defaultLine),i(t,\"marker.line\")&&a(t,e,s,l,{prefix:\"marker.line.\",cLetter:\"c\"}),l(\"marker.line.width\",u?1:0)),u&&(l(\"marker.sizeref\"),l(\"marker.sizemin\"),l(\"marker.sizemode\")),c.gradient)&&(\"none\"!==l(\"marker.gradient.type\")&&l(\"marker.gradient.color\"))}},{\"../../components/color\":366,\"../../components/colorscale/defaults\":376,\"../../components/colorscale/helpers\":377,\"./subtypes\":951}],946:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").dateTick0,i=t(\"../../constants/numerical\").ONEWEEK;function a(t,e){return n(e,t%i==0?1:0)}e.exports=function(t,e,r,n,i){if(i||(i={x:!0,y:!0}),i.x){var o=n(\"xperiod\");o&&(n(\"xperiod0\",a(o,e.xcalendar)),n(\"xperiodalignment\"))}if(i.y){var s=n(\"yperiod\");s&&(n(\"yperiod0\",a(s,e.ycalendar)),n(\"yperiodalignment\"))}}},{\"../../constants/numerical\":479,\"../../lib\":503}],947:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../registry\"),a=t(\"../../lib\"),o=a.ensureSingle,s=a.identity,l=t(\"../../components/drawing\"),c=t(\"./subtypes\"),u=t(\"./line_points\"),f=t(\"./link_traces\"),h=t(\"../../lib/polygon\").tester;function p(t,e,r,f,p,d,g){var m;!function(t,e,r,i,o){var s=r.xaxis,l=r.yaxis,u=n.extent(a.simpleMap(s.range,s.r2c)),f=n.extent(a.simpleMap(l.range,l.r2c)),h=i[0].trace;if(!c.hasMarkers(h))return;var p=h.marker.maxdisplayed;if(0===p)return;var d=i.filter((function(t){return t.x>=u[0]&&t.x<=u[1]&&t.y>=f[0]&&t.y<=f[1]})),g=Math.ceil(d.length/p),m=0;o.forEach((function(t,r){var n=t[0].trace;c.hasMarkers(n)&&n.marker.maxdisplayed>0&&r0;function y(t){return v?t.transition():t}var x=r.xaxis,b=r.yaxis,_=f[0].trace,w=_.line,T=n.select(d),k=o(T,\"g\",\"errorbars\"),A=o(T,\"g\",\"lines\"),M=o(T,\"g\",\"points\"),S=o(T,\"g\",\"text\");if(i.getComponentMethod(\"errorbars\",\"plot\")(t,k,r,g),!0===_.visible){var E,L;y(T).style(\"opacity\",_.opacity);var C=_.fill.charAt(_.fill.length-1);\"x\"!==C&&\"y\"!==C&&(C=\"\"),f[0][r.isRangePlot?\"nodeRangePlot3\":\"node3\"]=T;var P,I,O=\"\",z=[],D=_._prevtrace;D&&(O=D._prevRevpath||\"\",L=D._nextFill,z=D._polygons);var R,F,B,N,j,U,V,H=\"\",q=\"\",G=[],Y=a.noop;if(E=_._ownFill,c.hasLines(_)||\"none\"!==_.fill){for(L&&L.datum(f),-1!==[\"hv\",\"vh\",\"hvh\",\"vhv\"].indexOf(w.shape)?(R=l.steps(w.shape),F=l.steps(w.shape.split(\"\").reverse().join(\"\"))):R=F=\"spline\"===w.shape?function(t){var e=t[t.length-1];return t.length>1&&t[0][0]===e[0]&&t[0][1]===e[1]?l.smoothclosed(t.slice(1),w.smoothing):l.smoothopen(t,w.smoothing)}:function(t){return\"M\"+t.join(\"L\")},B=function(t){return F(t.reverse())},G=u(f,{xaxis:x,yaxis:b,connectGaps:_.connectgaps,baseTolerance:Math.max(w.width||1,3)/4,shape:w.shape,simplify:w.simplify,fill:_.fill}),V=_._polygons=new Array(G.length),m=0;m1){var r=n.select(this);if(r.datum(f),t)y(r.style(\"opacity\",0).attr(\"d\",P).call(l.lineGroupStyle)).style(\"opacity\",1);else{var i=y(r);i.attr(\"d\",P),l.singleLineStyle(f,i)}}}}}var W=A.selectAll(\".js-line\").data(G);y(W.exit()).style(\"opacity\",0).remove(),W.each(Y(!1)),W.enter().append(\"path\").classed(\"js-line\",!0).style(\"vector-effect\",\"non-scaling-stroke\").call(l.lineGroupStyle).each(Y(!0)),l.setClipUrl(W,r.layerClipId,t),G.length?(E?(E.datum(f),N&&U&&(C?(\"y\"===C?N[1]=U[1]=b.c2p(0,!0):\"x\"===C&&(N[0]=U[0]=x.c2p(0,!0)),y(E).attr(\"d\",\"M\"+U+\"L\"+N+\"L\"+H.substr(1)).call(l.singleFillStyle)):y(E).attr(\"d\",H+\"Z\").call(l.singleFillStyle))):L&&(\"tonext\"===_.fill.substr(0,6)&&H&&O?(\"tonext\"===_.fill?y(L).attr(\"d\",H+\"Z\"+O+\"Z\").call(l.singleFillStyle):y(L).attr(\"d\",H+\"L\"+O.substr(1)+\"Z\").call(l.singleFillStyle),_._polygons=_._polygons.concat(z)):(Z(L),_._polygons=null)),_._prevRevpath=q,_._prevPolygons=V):(E?Z(E):L&&Z(L),_._polygons=_._prevRevpath=_._prevPolygons=null),M.datum(f),S.datum(f),function(e,i,a){var o,u=a[0].trace,f=c.hasMarkers(u),h=c.hasText(u),p=tt(u),d=et,g=et;if(f||h){var m=s,_=u.stackgroup,w=_&&\"infer zero\"===t._fullLayout._scatterStackOpts[x._id+b._id][_].stackgaps;u.marker.maxdisplayed||u._needsCull?m=w?K:J:_&&!w&&(m=Q),f&&(d=m),h&&(g=m)}var T,k=(o=e.selectAll(\"path.point\").data(d,p)).enter().append(\"path\").classed(\"point\",!0);v&&k.call(l.pointStyle,u,t).call(l.translatePoints,x,b).style(\"opacity\",0).transition().style(\"opacity\",1),o.order(),f&&(T=l.makePointStyleFns(u)),o.each((function(e){var i=n.select(this),a=y(i);l.translatePoint(e,a,x,b)?(l.singlePointStyle(e,a,u,T,t),r.layerClipId&&l.hideOutsideRangePoint(e,a,x,b,u.xcalendar,u.ycalendar),u.customdata&&i.classed(\"plotly-customdata\",null!==e.data&&void 0!==e.data)):a.remove()})),v?o.exit().transition().style(\"opacity\",0).remove():o.exit().remove(),(o=i.selectAll(\"g\").data(g,p)).enter().append(\"g\").classed(\"textpoint\",!0).append(\"text\"),o.order(),o.each((function(t){var e=n.select(this),i=y(e.select(\"text\"));l.translatePoint(t,i,x,b)?r.layerClipId&&l.hideOutsideRangePoint(t,e,x,b,u.xcalendar,u.ycalendar):e.remove()})),o.selectAll(\"text\").call(l.textPointStyle,u,t).each((function(t){var e=x.c2p(t.x),r=b.c2p(t.y);n.select(this).selectAll(\"tspan.line\").each((function(){y(n.select(this)).attr({x:e,y:r})}))})),o.exit().remove()}(M,S,f);var X=!1===_.cliponaxis?null:r.layerClipId;l.setClipUrl(M,X,t),l.setClipUrl(S,X,t)}function Z(t){y(t).attr(\"d\",\"M0,0Z\")}function J(t){return t.filter((function(t){return!t.gap&&t.vis}))}function K(t){return t.filter((function(t){return t.vis}))}function Q(t){return t.filter((function(t){return!t.gap}))}function $(t){return t.id}function tt(t){if(t.ids)return $}function et(){return!1}}e.exports=function(t,e,r,i,a,c){var u,h,d=!a,g=!!a&&a.duration>0,m=f(t,e,r);((u=i.selectAll(\"g.trace\").data(m,(function(t){return t[0].trace.uid}))).enter().append(\"g\").attr(\"class\",(function(t){return\"trace scatter trace\"+t[0].trace.uid})).style(\"stroke-miterlimit\",2),u.order(),function(t,e,r){e.each((function(e){var i=o(n.select(this),\"g\",\"fills\");l.setClipUrl(i,r.layerClipId,t);var a=e[0].trace,c=[];a._ownfill&&c.push(\"_ownFill\"),a._nexttrace&&c.push(\"_nextFill\");var u=i.selectAll(\"g\").data(c,s);u.enter().append(\"g\"),u.exit().each((function(t){a[t]=null})).remove(),u.order().each((function(t){a[t]=o(n.select(this),\"path\",\"js-fill\")}))}))}(t,u,e),g)?(c&&(h=c()),n.transition().duration(a.duration).ease(a.easing).each(\"end\",(function(){h&&h()})).each(\"interrupt\",(function(){h&&h()})).each((function(){i.selectAll(\"g.trace\").each((function(r,n){p(t,n,e,r,m,this,a)}))}))):u.each((function(r,n){p(t,n,e,r,m,this,a)}));d&&u.exit().remove(),i.selectAll(\"path:not([d])\").remove()}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/polygon\":515,\"../../registry\":638,\"./line_points\":940,\"./link_traces\":942,\"./subtypes\":951,\"@plotly/d3\":58}],948:[function(t,e,r){\"use strict\";var n=t(\"./subtypes\");e.exports=function(t,e){var r,i,a,o,s=t.cd,l=t.xaxis,c=t.yaxis,u=[],f=s[0].trace;if(!n.hasMarkers(f)&&!n.hasText(f))return[];if(!1===e)for(r=0;r0){var h=i.c2l(u);i._lowerLogErrorBound||(i._lowerLogErrorBound=h),i._lowerErrorBound=Math.min(i._lowerLogErrorBound,h)}}else o[s]=[-l[0]*r,l[1]*r]}return o}e.exports=function(t,e,r){var n=[i(t.x,t.error_x,e[0],r.xaxis),i(t.y,t.error_y,e[1],r.yaxis),i(t.z,t.error_z,e[2],r.zaxis)],a=function(t){for(var e=0;e-1?-1:t.indexOf(\"right\")>-1?1:0}function b(t){return null==t?0:t.indexOf(\"top\")>-1?-1:t.indexOf(\"bottom\")>-1?1:0}function _(t,e){return e(4*t)}function w(t){return p[t]}function T(t,e,r,n,i){var a=null;if(l.isArrayOrTypedArray(t)){a=[];for(var o=0;o=0){var g=function(t,e,r){var n,i=(r+1)%3,a=(r+2)%3,o=[],l=[];for(n=0;n=0&&f(\"surfacecolor\",h||p);for(var d=[\"x\",\"y\",\"z\"],g=0;g<3;++g){var m=\"projection.\"+d[g];f(m+\".show\")&&(f(m+\".opacity\"),f(m+\".scale\"))}var v=n.getComponentMethod(\"errorbars\",\"supplyDefaults\");v(t,e,h||p||r,{axis:\"z\"}),v(t,e,h||p||r,{axis:\"y\",inherit:\"z\"}),v(t,e,h||p||r,{axis:\"x\",inherit:\"z\"})}else e.visible=!1}},{\"../../lib\":503,\"../../registry\":638,\"../scatter/line_defaults\":939,\"../scatter/marker_defaults\":945,\"../scatter/subtypes\":951,\"../scatter/text_defaults\":952,\"./attributes\":954}],959:[function(t,e,r){\"use strict\";e.exports={plot:t(\"./convert\"),attributes:t(\"./attributes\"),markerSymbols:t(\"../../constants/gl3d_markers\"),supplyDefaults:t(\"./defaults\"),colorbar:[{container:\"marker\",min:\"cmin\",max:\"cmax\"},{container:\"line\",min:\"cmin\",max:\"cmax\"}],calc:t(\"./calc\"),moduleType:\"trace\",name:\"scatter3d\",basePlotModule:t(\"../../plots/gl3d\"),categories:[\"gl3d\",\"symbols\",\"showLegend\",\"scatter-like\"],meta:{}}},{\"../../constants/gl3d_markers\":477,\"../../plots/gl3d\":598,\"./attributes\":954,\"./calc\":955,\"./convert\":957,\"./defaults\":958}],960:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\"),i=t(\"../../plots/attributes\"),a=t(\"../../plots/template_attributes\").hovertemplateAttrs,o=t(\"../../plots/template_attributes\").texttemplateAttrs,s=t(\"../../components/colorscale/attributes\"),l=t(\"../../lib/extend\").extendFlat,c=n.marker,u=n.line,f=c.line;e.exports={carpet:{valType:\"string\",editType:\"calc\"},a:{valType:\"data_array\",editType:\"calc\"},b:{valType:\"data_array\",editType:\"calc\"},mode:l({},n.mode,{dflt:\"markers\"}),text:l({},n.text,{}),texttemplate:o({editType:\"plot\"},{keys:[\"a\",\"b\",\"text\"]}),hovertext:l({},n.hovertext,{}),line:{color:u.color,width:u.width,dash:u.dash,shape:l({},u.shape,{values:[\"linear\",\"spline\"]}),smoothing:u.smoothing,editType:\"calc\"},connectgaps:n.connectgaps,fill:l({},n.fill,{values:[\"none\",\"toself\",\"tonext\"],dflt:\"none\"}),fillcolor:n.fillcolor,marker:l({symbol:c.symbol,opacity:c.opacity,maxdisplayed:c.maxdisplayed,size:c.size,sizeref:c.sizeref,sizemin:c.sizemin,sizemode:c.sizemode,line:l({width:f.width,editType:\"calc\"},s(\"marker.line\")),gradient:c.gradient,editType:\"calc\"},s(\"marker\")),textfont:n.textfont,textposition:n.textposition,selected:n.selected,unselected:n.unselected,hoverinfo:l({},i.hoverinfo,{flags:[\"a\",\"b\",\"text\",\"name\"]}),hoveron:n.hoveron,hovertemplate:a()}},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/template_attributes\":633,\"../scatter/attributes\":926}],961:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../scatter/colorscale_calc\"),a=t(\"../scatter/arrays_to_calcdata\"),o=t(\"../scatter/calc_selection\"),s=t(\"../scatter/calc\").calcMarkerSize,l=t(\"../carpet/lookup_carpetid\");e.exports=function(t,e){var r=e._carpetTrace=l(t,e);if(r&&r.visible&&\"legendonly\"!==r.visible){var c;e.xaxis=r.xaxis,e.yaxis=r.yaxis;var u,f,h=e._length,p=new Array(h),d=!1;for(c=0;c\")}return o}function y(t,e){var r;r=t.labelprefix&&t.labelprefix.length>0?t.labelprefix.replace(/ = $/,\"\"):t._hovertitle,m.push(r+\": \"+e.toFixed(3)+t.labelsuffix)}}},{\"../../lib\":503,\"../scatter/hover\":937}],966:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"./format_labels\"),calc:t(\"./calc\"),plot:t(\"./plot\"),style:t(\"../scatter/style\").style,styleOnSelect:t(\"../scatter/style\").styleOnSelect,hoverPoints:t(\"./hover\"),selectPoints:t(\"../scatter/select\"),eventData:t(\"./event_data\"),moduleType:\"trace\",name:\"scattercarpet\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"svg\",\"carpet\",\"symbols\",\"showLegend\",\"carpetDependent\",\"zoomScale\"],meta:{}}},{\"../../plots/cartesian\":568,\"../scatter/marker_colorbar\":944,\"../scatter/select\":948,\"../scatter/style\":950,\"./attributes\":960,\"./calc\":961,\"./defaults\":962,\"./event_data\":963,\"./format_labels\":964,\"./hover\":965,\"./plot\":967}],967:[function(t,e,r){\"use strict\";var n=t(\"../scatter/plot\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"../../components/drawing\");e.exports=function(t,e,r,o){var s,l,c,u=r[0][0].carpet,f={xaxis:i.getFromId(t,u.xaxis||\"x\"),yaxis:i.getFromId(t,u.yaxis||\"y\"),plot:e.plot};for(n(t,f,r,o),s=0;s\")}(c,g,t,l[0].t.labels),t.hovertemplate=c.hovertemplate,[t]}}},{\"../../components/fx\":406,\"../../constants/numerical\":479,\"../../lib\":503,\"../scatter/get_trace_color\":936,\"./attributes\":968}],974:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"./format_labels\"),calc:t(\"./calc\"),calcGeoJSON:t(\"./plot\").calcGeoJSON,plot:t(\"./plot\").plot,style:t(\"./style\"),styleOnSelect:t(\"../scatter/style\").styleOnSelect,hoverPoints:t(\"./hover\"),eventData:t(\"./event_data\"),selectPoints:t(\"./select\"),moduleType:\"trace\",name:\"scattergeo\",basePlotModule:t(\"../../plots/geo\"),categories:[\"geo\",\"symbols\",\"showLegend\",\"scatter-like\"],meta:{}}},{\"../../plots/geo\":589,\"../scatter/marker_colorbar\":944,\"../scatter/style\":950,\"./attributes\":968,\"./calc\":969,\"./defaults\":970,\"./event_data\":971,\"./format_labels\":972,\"./hover\":973,\"./plot\":975,\"./select\":976,\"./style\":977}],975:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../lib/topojson_utils\").getTopojsonFeatures,o=t(\"../../lib/geojson_utils\"),s=t(\"../../lib/geo_location_utils\"),l=t(\"../../plots/cartesian/autorange\").findExtremes,c=t(\"../../constants/numerical\").BADNUM,u=t(\"../scatter/calc\").calcMarkerSize,f=t(\"../scatter/subtypes\"),h=t(\"./style\");e.exports={calcGeoJSON:function(t,e){var r,n,i=t[0].trace,o=e[i.geo],f=o._subplot,h=i._length;if(Array.isArray(i.locations)){var p=i.locationmode,d=\"geojson-id\"===p?s.extractTraceFeature(t):a(i,f.topojson);for(r=0;r=m,w=2*b,T={},k=l.makeCalcdata(e,\"x\"),A=y.makeCalcdata(e,\"y\"),M=s(e,l,\"x\",k),S=s(e,y,\"y\",A),E=M.vals,L=S.vals;e._x=E,e._y=L,e.xperiodalignment&&(e._origX=k,e._xStarts=M.starts,e._xEnds=M.ends),e.yperiodalignment&&(e._origY=A,e._yStarts=S.starts,e._yEnds=S.ends);var C=new Array(w),P=new Array(b);for(r=0;r1&&i.extendFlat(s.line,p.linePositions(t,r,n));if(s.errorX||s.errorY){var l=p.errorBarPositions(t,r,n,a,o);s.errorX&&i.extendFlat(s.errorX,l.x),s.errorY&&i.extendFlat(s.errorY,l.y)}s.text&&(i.extendFlat(s.text,{positions:n},p.textPosition(t,r,s.text,s.marker)),i.extendFlat(s.textSel,{positions:n},p.textPosition(t,r,s.text,s.markerSel)),i.extendFlat(s.textUnsel,{positions:n},p.textPosition(t,r,s.text,s.markerUnsel)));return s}(t,0,e,C,E,L),z=d(t,x);return f(o,e),_?O.marker&&(I=O.marker.sizeAvg||Math.max(O.marker.size,3)):I=c(e,b),u(t,e,l,y,E,L,I),O.errorX&&v(e,l,O.errorX),O.errorY&&v(e,y,O.errorY),O.fill&&!z.fill2d&&(z.fill2d=!0),O.marker&&!z.scatter2d&&(z.scatter2d=!0),O.line&&!z.line2d&&(z.line2d=!0),!O.errorX&&!O.errorY||z.error2d||(z.error2d=!0),O.text&&!z.glText&&(z.glText=!0),O.marker&&(O.marker.snap=b),z.lineOptions.push(O.line),z.errorXOptions.push(O.errorX),z.errorYOptions.push(O.errorY),z.fillOptions.push(O.fill),z.markerOptions.push(O.marker),z.markerSelectedOptions.push(O.markerSel),z.markerUnselectedOptions.push(O.markerUnsel),z.textOptions.push(O.text),z.textSelectedOptions.push(O.textSel),z.textUnselectedOptions.push(O.textUnsel),z.selectBatch.push([]),z.unselectBatch.push([]),T._scene=z,T.index=z.count,T.x=E,T.y=L,T.positions=C,z.count++,[{x:!1,y:!1,t:T,trace:e}]}},{\"../../constants/numerical\":479,\"../../lib\":503,\"../../plots/cartesian/align_period\":551,\"../../plots/cartesian/autorange\":553,\"../../plots/cartesian/axis_ids\":558,\"../scatter/calc\":927,\"../scatter/colorscale_calc\":929,\"./constants\":980,\"./convert\":981,\"./scene_update\":989,\"@plotly/point-cluster\":59}],980:[function(t,e,r){\"use strict\";e.exports={TOO_MANY_POINTS:1e5,SYMBOL_SDF_SIZE:200,SYMBOL_SIZE:20,SYMBOL_STROKE:1,DOT_RE:/-dot/,OPEN_RE:/-open/,DASHES:{solid:[1],dot:[1,1],dash:[4,1],longdash:[8,1],dashdot:[4,1,1,1],longdashdot:[8,1,1,1]}}},{}],981:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"svg-path-sdf\"),a=t(\"color-normalize\"),o=t(\"../../registry\"),s=t(\"../../lib\"),l=t(\"../../components/drawing\"),c=t(\"../../plots/cartesian/axis_ids\"),u=t(\"../../lib/gl_format_color\").formatColor,f=t(\"../scatter/subtypes\"),h=t(\"../scatter/make_bubble_size_func\"),p=t(\"./helpers\"),d=t(\"./constants\"),g=t(\"../../constants/interactions\").DESELECTDIM,m={start:1,left:1,end:-1,right:-1,middle:0,center:0,bottom:1,top:-1},v=t(\"../../components/fx/helpers\").appendArrayPointValue;function y(t,e){var r,i=t._fullLayout,a=e._length,o=e.textfont,l=e.textposition,c=Array.isArray(l)?l:[l],u=o.color,f=o.size,h=o.family,p={},d=t._context.plotGlPixelRatio,g=e.texttemplate;if(g){p.text=[];var m=i._d3locale,y=Array.isArray(g),x=y?Math.min(g.length,a):a,b=y?function(t){return g[t]}:function(){return g};for(r=0;rd.TOO_MANY_POINTS||f.hasMarkers(e)?\"rect\":\"round\";if(c&&e.connectgaps){var h=n[0],p=n[1];for(i=0;i1?l[i]:l[0]:l,d=Array.isArray(c)?c.length>1?c[i]:c[0]:c,g=m[p],v=m[d],y=u?u/.8+1:0,x=-v*y-.5*v;o.offset[i]=[g*y/h,x/h]}}return o}}},{\"../../components/drawing\":388,\"../../components/fx/helpers\":402,\"../../constants/interactions\":478,\"../../lib\":503,\"../../lib/gl_format_color\":499,\"../../plots/cartesian/axis_ids\":558,\"../../registry\":638,\"../scatter/make_bubble_size_func\":943,\"../scatter/subtypes\":951,\"./constants\":980,\"./helpers\":985,\"color-normalize\":89,\"fast-isnumeric\":190,\"svg-path-sdf\":310}],982:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../registry\"),a=t(\"./helpers\"),o=t(\"./attributes\"),s=t(\"../scatter/constants\"),l=t(\"../scatter/subtypes\"),c=t(\"../scatter/xy_defaults\"),u=t(\"../scatter/period_defaults\"),f=t(\"../scatter/marker_defaults\"),h=t(\"../scatter/line_defaults\"),p=t(\"../scatter/fillcolor_defaults\"),d=t(\"../scatter/text_defaults\");e.exports=function(t,e,r,g){function m(r,i){return n.coerce(t,e,o,r,i)}var v=!!t.marker&&a.isOpenSymbol(t.marker.symbol),y=l.isBubble(t),x=c(t,e,g,m);if(x){u(t,e,g,m),m(\"xhoverformat\"),m(\"yhoverformat\");var b=x100},r.isDotSymbol=function(t){return\"string\"==typeof t?n.DOT_RE.test(t):t>200}},{\"./constants\":980}],986:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\"),a=t(\"../scatter/get_trace_color\");function o(t,e,r,o){var s=t.xa,l=t.ya,c=t.distance,u=t.dxy,f=t.index,h={pointNumber:f,x:e[f],y:r[f]};h.tx=Array.isArray(o.text)?o.text[f]:o.text,h.htx=Array.isArray(o.hovertext)?o.hovertext[f]:o.hovertext,h.data=Array.isArray(o.customdata)?o.customdata[f]:o.customdata,h.tp=Array.isArray(o.textposition)?o.textposition[f]:o.textposition;var p=o.textfont;p&&(h.ts=i.isArrayOrTypedArray(p.size)?p.size[f]:p.size,h.tc=Array.isArray(p.color)?p.color[f]:p.color,h.tf=Array.isArray(p.family)?p.family[f]:p.family);var d=o.marker;d&&(h.ms=i.isArrayOrTypedArray(d.size)?d.size[f]:d.size,h.mo=i.isArrayOrTypedArray(d.opacity)?d.opacity[f]:d.opacity,h.mx=i.isArrayOrTypedArray(d.symbol)?d.symbol[f]:d.symbol,h.mc=i.isArrayOrTypedArray(d.color)?d.color[f]:d.color);var g=d&&d.line;g&&(h.mlc=Array.isArray(g.color)?g.color[f]:g.color,h.mlw=i.isArrayOrTypedArray(g.width)?g.width[f]:g.width);var m=d&&d.gradient;m&&\"none\"!==m.type&&(h.mgt=Array.isArray(m.type)?m.type[f]:m.type,h.mgc=Array.isArray(m.color)?m.color[f]:m.color);var v=s.c2p(h.x,!0),y=l.c2p(h.y,!0),x=h.mrc||1,b=o.hoverlabel;b&&(h.hbg=Array.isArray(b.bgcolor)?b.bgcolor[f]:b.bgcolor,h.hbc=Array.isArray(b.bordercolor)?b.bordercolor[f]:b.bordercolor,h.hts=i.isArrayOrTypedArray(b.font.size)?b.font.size[f]:b.font.size,h.htc=Array.isArray(b.font.color)?b.font.color[f]:b.font.color,h.htf=Array.isArray(b.font.family)?b.font.family[f]:b.font.family,h.hnl=i.isArrayOrTypedArray(b.namelength)?b.namelength[f]:b.namelength);var _=o.hoverinfo;_&&(h.hi=Array.isArray(_)?_[f]:_);var w=o.hovertemplate;w&&(h.ht=Array.isArray(w)?w[f]:w);var T={};T[t.index]=h;var k=o._origX,A=o._origY,M=i.extendFlat({},t,{color:a(o,h),x0:v-x,x1:v+x,xLabelVal:k?k[f]:h.x,y0:y-x,y1:y+x,yLabelVal:A?A[f]:h.y,cd:T,distance:c,spikeDistance:u,hovertemplate:h.ht});return h.htx?M.text=h.htx:h.tx?M.text=h.tx:o.text&&(M.text=o.text),i.fillText(h,o,M),n.getComponentMethod(\"errorbars\",\"hoverInfo\")(h,o,M),M}e.exports={hoverPoints:function(t,e,r,n){var i,a,s,l,c,u,f,h,p,d,g=t.cd,m=g[0].t,v=g[0].trace,y=t.xa,x=t.ya,b=m.x,_=m.y,w=y.c2p(e),T=x.c2p(r),k=t.distance;if(m.tree){var A=y.p2c(w-k),M=y.p2c(w+k),S=x.p2c(T-k),E=x.p2c(T+k);i=\"x\"===n?m.tree.range(Math.min(A,M),Math.min(x._rl[0],x._rl[1]),Math.max(A,M),Math.max(x._rl[0],x._rl[1])):m.tree.range(Math.min(A,M),Math.min(S,E),Math.max(A,M),Math.max(S,E))}else i=m.ids;var L=k;if(\"x\"===n){var C=!!v.xperiodalignment,P=!!v.yperiodalignment;for(u=0;u=Math.min(I,O)&&w<=Math.max(I,O)?0:1/0}if(f=Math.min(z,D)&&T<=Math.max(z,D)?0:1/0}d=Math.sqrt(f*f+h*h),s=i[u]}}}else for(u=i.length-1;u>-1;u--)l=b[a=i[u]],c=_[a],f=y.c2p(l)-w,h=x.c2p(c)-T,(p=Math.sqrt(f*f+h*h))v.glText.length){var w=b-v.glText.length;for(d=0;dr&&(isNaN(e[n])||isNaN(e[n+1]));)n-=2;t.positions=e.slice(r,n+2)}return t})),v.line2d.update(v.lineOptions)),v.error2d){var k=(v.errorXOptions||[]).concat(v.errorYOptions||[]);v.error2d.update(k)}v.scatter2d&&v.scatter2d.update(v.markerOptions),v.fillOrder=s.repeat(null,b),v.fill2d&&(v.fillOptions=v.fillOptions.map((function(t,e){var n=r[e];if(t&&n&&n[0]&&n[0].trace){var i,a,o=n[0],s=o.trace,l=o.t,c=v.lineOptions[e],u=[];s._ownfill&&u.push(e),s._nexttrace&&u.push(e+1),u.length&&(v.fillOrder[e]=u);var f,h,p=[],d=c&&c.positions||l.positions;if(\"tozeroy\"===s.fill){for(f=0;ff&&isNaN(d[h+1]);)h-=2;0!==d[f+1]&&(p=[d[f],0]),p=p.concat(d.slice(f,h+2)),0!==d[h+1]&&(p=p.concat([d[h],0]))}else if(\"tozerox\"===s.fill){for(f=0;ff&&isNaN(d[h]);)h-=2;0!==d[f]&&(p=[0,d[f+1]]),p=p.concat(d.slice(f,h+2)),0!==d[h]&&(p=p.concat([0,d[h+1]]))}else if(\"toself\"===s.fill||\"tonext\"===s.fill){for(p=[],i=0,t.splitNull=!0,a=0;a-1;for(d=0;d\")}function u(t){return t+\"\\xb0\"}}e.exports={hoverPoints:function(t,e,r){var o=t.cd,c=o[0].trace,u=t.xa,f=t.ya,h=t.subplot,p=360*(e>=0?Math.floor((e+180)/360):Math.ceil((e-180)/360)),d=e-p;if(n.getClosest(o,(function(t){var e=t.lonlat;if(e[0]===s)return 1/0;var n=i.modHalf(e[0],360),a=e[1],o=h.project([n,a]),l=o.x-u.c2p([d,a]),c=o.y-f.c2p([n,r]),p=Math.max(3,t.mrc||0);return Math.max(Math.sqrt(l*l+c*c)-p,1-3/p)}),t),!1!==t.index){var g=o[t.index],m=g.lonlat,v=[i.modHalf(m[0],360)+p,m[1]],y=u.c2p(v),x=f.c2p(v),b=g.mrc||1;t.x0=y-b,t.x1=y+b,t.y0=x-b,t.y1=x+b;var _={};_[c.subplot]={_subplot:h};var w=c._module.formatLabels(g,c,_);return t.lonLabel=w.lonLabel,t.latLabel=w.latLabel,t.color=a(c,g),t.extraText=l(c,g,o[0].t.labels),t.hovertemplate=c.hovertemplate,[t]}},getExtraText:l}},{\"../../components/fx\":406,\"../../constants/numerical\":479,\"../../lib\":503,\"../scatter/get_trace_color\":936}],997:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"./format_labels\"),calc:t(\"../scattergeo/calc\"),plot:t(\"./plot\"),hoverPoints:t(\"./hover\").hoverPoints,eventData:t(\"./event_data\"),selectPoints:t(\"./select\"),styleOnSelect:function(t,e){e&&e[0].trace._glTrace.update(e)},moduleType:\"trace\",name:\"scattermapbox\",basePlotModule:t(\"../../plots/mapbox\"),categories:[\"mapbox\",\"gl\",\"symbols\",\"showLegend\",\"scatter-like\"],meta:{}}},{\"../../plots/mapbox\":613,\"../scatter/marker_colorbar\":944,\"../scattergeo/calc\":969,\"./attributes\":991,\"./defaults\":993,\"./event_data\":994,\"./format_labels\":995,\"./hover\":996,\"./plot\":998,\"./select\":999}],998:[function(t,e,r){\"use strict\";var n=t(\"./convert\"),i=t(\"../../plots/mapbox/constants\").traceLayerPrefix,a=[\"fill\",\"line\",\"circle\",\"symbol\"];function o(t,e){this.type=\"scattermapbox\",this.subplot=t,this.uid=e,this.sourceIds={fill:\"source-\"+e+\"-fill\",line:\"source-\"+e+\"-line\",circle:\"source-\"+e+\"-circle\",symbol:\"source-\"+e+\"-symbol\"},this.layerIds={fill:i+e+\"-fill\",line:i+e+\"-line\",circle:i+e+\"-circle\",symbol:i+e+\"-symbol\"},this.below=null}var s=o.prototype;s.addSource=function(t,e){this.subplot.map.addSource(this.sourceIds[t],{type:\"geojson\",data:e.geojson})},s.setSourceData=function(t,e){this.subplot.map.getSource(this.sourceIds[t]).setData(e.geojson)},s.addLayer=function(t,e,r){this.subplot.addLayer({type:t,id:this.layerIds[t],source:this.sourceIds[t],layout:e.layout,paint:e.paint},r)},s.update=function(t){var e,r,i,o=this.subplot,s=o.map,l=n(o.gd,t),c=o.belowLookup[\"trace-\"+this.uid];if(c!==this.below){for(e=a.length-1;e>=0;e--)r=a[e],s.removeLayer(this.layerIds[r]);for(e=0;e=0;e--){var r=a[e];t.removeLayer(this.layerIds[r]),t.removeSource(this.sourceIds[r])}},e.exports=function(t,e){for(var r=e[0].trace,i=new o(t,r.uid),s=n(t.gd,e),l=i.below=t.belowLookup[\"trace-\"+r.uid],c=0;c\")}}e.exports={hoverPoints:function(t,e,r,a){var o=n(t,e,r,a);if(o&&!1!==o[0].index){var s=o[0];if(void 0===s.index)return o;var l=t.subplot,c=s.cd[s.index],u=s.trace;if(l.isPtInside(c))return s.xLabelVal=void 0,s.yLabelVal=void 0,i(c,u,l,s),s.hovertemplate=u.hovertemplate,o}},makeHoverPointText:i}},{\"../scatter/hover\":937}],1005:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"scatterpolar\",basePlotModule:t(\"../../plots/polar\"),categories:[\"polar\",\"symbols\",\"showLegend\",\"scatter-like\"],attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\").supplyDefaults,colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"./format_labels\"),calc:t(\"./calc\"),plot:t(\"./plot\"),style:t(\"../scatter/style\").style,styleOnSelect:t(\"../scatter/style\").styleOnSelect,hoverPoints:t(\"./hover\").hoverPoints,selectPoints:t(\"../scatter/select\"),meta:{}}},{\"../../plots/polar\":622,\"../scatter/marker_colorbar\":944,\"../scatter/select\":948,\"../scatter/style\":950,\"./attributes\":1e3,\"./calc\":1001,\"./defaults\":1002,\"./format_labels\":1003,\"./hover\":1004,\"./plot\":1006}],1006:[function(t,e,r){\"use strict\";var n=t(\"../scatter/plot\"),i=t(\"../../constants/numerical\").BADNUM;e.exports=function(t,e,r){for(var a=e.layers.frontplot.select(\"g.scatterlayer\"),o={xaxis:e.xaxis,yaxis:e.yaxis,plot:e.framework,layerClipId:e._hasClipOnAxisFalse?e.clipIds.forTraces:null},s=e.radialAxis,l=e.angularAxis,c=0;c=c&&(y.marker.cluster=d.tree),y.marker&&(y.markerSel.positions=y.markerUnsel.positions=y.marker.positions=_),y.line&&_.length>1&&l.extendFlat(y.line,s.linePositions(t,p,_)),y.text&&(l.extendFlat(y.text,{positions:_},s.textPosition(t,p,y.text,y.marker)),l.extendFlat(y.textSel,{positions:_},s.textPosition(t,p,y.text,y.markerSel)),l.extendFlat(y.textUnsel,{positions:_},s.textPosition(t,p,y.text,y.markerUnsel))),y.fill&&!h.fill2d&&(h.fill2d=!0),y.marker&&!h.scatter2d&&(h.scatter2d=!0),y.line&&!h.line2d&&(h.line2d=!0),y.text&&!h.glText&&(h.glText=!0),h.lineOptions.push(y.line),h.fillOptions.push(y.fill),h.markerOptions.push(y.marker),h.markerSelectedOptions.push(y.markerSel),h.markerUnselectedOptions.push(y.markerUnsel),h.textOptions.push(y.text),h.textSelectedOptions.push(y.textSel),h.textUnselectedOptions.push(y.textUnsel),h.selectBatch.push([]),h.unselectBatch.push([]),d.x=w,d.y=T,d.rawx=w,d.rawy=T,d.r=m,d.theta=v,d.positions=_,d._scene=h,d.index=h.count,h.count++}})),a(t,e,r)}}},{\"../../lib\":503,\"../scattergl/constants\":980,\"../scattergl/convert\":981,\"../scattergl/plot\":988,\"../scattergl/scene_update\":989,\"@plotly/point-cluster\":59,\"fast-isnumeric\":190}],1014:[function(t,e,r){\"use strict\";var n=t(\"../../plots/template_attributes\").hovertemplateAttrs,i=t(\"../../plots/template_attributes\").texttemplateAttrs,a=t(\"../../lib/extend\").extendFlat,o=t(\"../scatter/attributes\"),s=t(\"../../plots/attributes\"),l=o.line;e.exports={mode:o.mode,real:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},imag:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},text:o.text,texttemplate:i({editType:\"plot\"},{keys:[\"real\",\"imag\",\"text\"]}),hovertext:o.hovertext,line:{color:l.color,width:l.width,dash:l.dash,shape:a({},l.shape,{values:[\"linear\",\"spline\"]}),smoothing:l.smoothing,editType:\"calc\"},connectgaps:o.connectgaps,marker:o.marker,cliponaxis:a({},o.cliponaxis,{dflt:!1}),textposition:o.textposition,textfont:o.textfont,fill:a({},o.fill,{values:[\"none\",\"toself\",\"tonext\"],dflt:\"none\"}),fillcolor:o.fillcolor,hoverinfo:a({},s.hoverinfo,{flags:[\"real\",\"imag\",\"text\",\"name\"]}),hoveron:o.hoveron,hovertemplate:n(),selected:o.selected,unselected:o.unselected}},{\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/template_attributes\":633,\"../scatter/attributes\":926}],1015:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../constants/numerical\").BADNUM,a=t(\"../scatter/colorscale_calc\"),o=t(\"../scatter/arrays_to_calcdata\"),s=t(\"../scatter/calc_selection\"),l=t(\"../scatter/calc\").calcMarkerSize;e.exports=function(t,e){for(var r=t._fullLayout,c=e.subplot,u=r[c].realaxis,f=r[c].imaginaryaxis,h=u.makeCalcdata(e,\"real\"),p=f.makeCalcdata(e,\"imag\"),d=e._length,g=new Array(d),m=0;m\")}}e.exports={hoverPoints:function(t,e,r,a){var o=n(t,e,r,a);if(o&&!1!==o[0].index){var s=o[0];if(void 0===s.index)return o;var l=t.subplot,c=s.cd[s.index],u=s.trace;if(l.isPtInside(c))return s.xLabelVal=void 0,s.yLabelVal=void 0,i(c,u,l,s),s.hovertemplate=u.hovertemplate,o}},makeHoverPointText:i}},{\"../scatter/hover\":937}],1019:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"scattersmith\",basePlotModule:t(\"../../plots/smith\"),categories:[\"smith\",\"symbols\",\"showLegend\",\"scatter-like\"],attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"./format_labels\"),calc:t(\"./calc\"),plot:t(\"./plot\"),style:t(\"../scatter/style\").style,styleOnSelect:t(\"../scatter/style\").styleOnSelect,hoverPoints:t(\"./hover\").hoverPoints,selectPoints:t(\"../scatter/select\"),meta:{}}},{\"../../plots/smith\":629,\"../scatter/marker_colorbar\":944,\"../scatter/select\":948,\"../scatter/style\":950,\"./attributes\":1014,\"./calc\":1015,\"./defaults\":1016,\"./format_labels\":1017,\"./hover\":1018,\"./plot\":1020}],1020:[function(t,e,r){\"use strict\";var n=t(\"../scatter/plot\"),i=t(\"../../constants/numerical\").BADNUM,a=t(\"../../plots/smith/helpers\").smith;e.exports=function(t,e,r){for(var o=e.layers.frontplot.select(\"g.scatterlayer\"),s={xaxis:e.xaxis,yaxis:e.yaxis,plot:e.framework,layerClipId:e._hasClipOnAxisFalse?e.clipIds.forTraces:null},l=0;l\"),o.hovertemplate=h.hovertemplate,a}function x(t,e){v.push(t._hovertitle+\": \"+e)}}},{\"../scatter/hover\":937}],1027:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"./format_labels\"),calc:t(\"./calc\"),plot:t(\"./plot\"),style:t(\"../scatter/style\").style,styleOnSelect:t(\"../scatter/style\").styleOnSelect,hoverPoints:t(\"./hover\"),selectPoints:t(\"../scatter/select\"),eventData:t(\"./event_data\"),moduleType:\"trace\",name:\"scatterternary\",basePlotModule:t(\"../../plots/ternary\"),categories:[\"ternary\",\"symbols\",\"showLegend\",\"scatter-like\"],meta:{}}},{\"../../plots/ternary\":634,\"../scatter/marker_colorbar\":944,\"../scatter/select\":948,\"../scatter/style\":950,\"./attributes\":1021,\"./calc\":1022,\"./defaults\":1023,\"./event_data\":1024,\"./format_labels\":1025,\"./hover\":1026,\"./plot\":1028}],1028:[function(t,e,r){\"use strict\";var n=t(\"../scatter/plot\");e.exports=function(t,e,r){var i=e.plotContainer;i.select(\".scatterlayer\").selectAll(\"*\").remove();var a={xaxis:e.xaxis,yaxis:e.yaxis,plot:i,layerClipId:e._hasClipOnAxisFalse?e.clipIdRelative:null},o=e.layers.frontplot.select(\"g.scatterlayer\");n(t,a,r,o)}},{\"../scatter/plot\":947}],1029:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\"),i=t(\"../../components/colorscale/attributes\"),a=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,o=t(\"../../plots/template_attributes\").hovertemplateAttrs,s=t(\"../scattergl/attributes\"),l=t(\"../../plots/cartesian/constants\").idRegex,c=t(\"../../plot_api/plot_template\").templatedArray,u=t(\"../../lib/extend\").extendFlat,f=n.marker,h=f.line,p=u(i(\"marker.line\",{editTypeOverride:\"calc\"}),{width:u({},h.width,{editType:\"calc\"}),editType:\"calc\"}),d=u(i(\"marker\"),{symbol:f.symbol,size:u({},f.size,{editType:\"markerSize\"}),sizeref:f.sizeref,sizemin:f.sizemin,sizemode:f.sizemode,opacity:f.opacity,colorbar:f.colorbar,line:p,editType:\"calc\"});function g(t){return{valType:\"info_array\",freeLength:!0,editType:\"calc\",items:{valType:\"subplotid\",regex:l[t],editType:\"plot\"}}}d.color.editType=d.cmin.editType=d.cmax.editType=\"style\",e.exports={dimensions:c(\"dimension\",{visible:{valType:\"boolean\",dflt:!0,editType:\"calc\"},label:{valType:\"string\",editType:\"calc\"},values:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},axis:{type:{valType:\"enumerated\",values:[\"linear\",\"log\",\"date\",\"category\"],editType:\"calc+clearAxisTypes\"},matches:{valType:\"boolean\",dflt:!1,editType:\"calc\"},editType:\"calc+clearAxisTypes\"},editType:\"calc+clearAxisTypes\"}),text:u({},s.text,{}),hovertext:u({},s.hovertext,{}),hovertemplate:o(),xhoverformat:a(\"x\"),yhoverformat:a(\"y\"),marker:d,xaxes:g(\"x\"),yaxes:g(\"y\"),diagonal:{visible:{valType:\"boolean\",dflt:!0,editType:\"calc\"},editType:\"calc\"},showupperhalf:{valType:\"boolean\",dflt:!0,editType:\"calc\"},showlowerhalf:{valType:\"boolean\",dflt:!0,editType:\"calc\"},selected:{marker:s.selected.marker,editType:\"calc\"},unselected:{marker:s.unselected.marker,editType:\"calc\"},opacity:s.opacity}},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plot_api/plot_template\":543,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/cartesian/constants\":561,\"../../plots/template_attributes\":633,\"../scatter/attributes\":926,\"../scattergl/attributes\":978}],1030:[function(t,e,r){\"use strict\";var n=t(\"regl-line2d\"),i=t(\"../../registry\"),a=t(\"../../lib/prepare_regl\"),o=t(\"../../plots/get_data\").getModuleCalcData,s=t(\"../../plots/cartesian\"),l=t(\"../../plots/cartesian/axis_ids\").getFromId,c=t(\"../../plots/cartesian/axes\").shouldShowZeroLine;function u(t,e,r){for(var n=r.matrixOptions.data.length,i=e._visibleDims,a=r.viewOpts.ranges=new Array(n),o=0;oh?b.sizeAvg||Math.max(b.size,3):a(e,x),p=0;pa&&l||i-1,P=!0;if(o(x)||!!p.selectedpoints||C){var I=p._length;if(p.selectedpoints){g.selectBatch=p.selectedpoints;var O=p.selectedpoints,z={};for(l=0;l1&&(u=g[y-1],h=m[y-1],d=v[y-1]),e=0;eu?\"-\":\"+\")+\"x\")).replace(\"y\",(f>h?\"-\":\"+\")+\"y\")).replace(\"z\",(p>d?\"-\":\"+\")+\"z\");var L=function(){y=0,M=[],S=[],E=[]};(!y||y2?t.slice(1,e-1):2===e?[(t[0]+t[1])/2]:t}function p(t){var e=t.length;return 1===e?[.5,.5]:[t[1]-t[0],t[e-1]-t[e-2]]}function d(t,e){var r=t.fullSceneLayout,i=t.dataScale,u=e._len,f={};function d(t,e){var n=r[e],o=i[c[e]];return a.simpleMap(t,(function(t){return n.d2l(t)*o}))}if(f.vectors=l(d(e._u,\"xaxis\"),d(e._v,\"yaxis\"),d(e._w,\"zaxis\"),u),!u)return{positions:[],cells:[]};var g=d(e._Xs,\"xaxis\"),m=d(e._Ys,\"yaxis\"),v=d(e._Zs,\"zaxis\");if(f.meshgrid=[g,m,v],f.gridFill=e._gridFill,e._slen)f.startingPositions=l(d(e._startsX,\"xaxis\"),d(e._startsY,\"yaxis\"),d(e._startsZ,\"zaxis\"));else{for(var y=m[0],x=h(g),b=h(v),_=new Array(x.length*b.length),w=0,T=0;T=0};v?(r=Math.min(m.length,x.length),l=function(t){return A(m[t])&&M(t)},f=function(t){return String(m[t])}):(r=Math.min(y.length,x.length),l=function(t){return A(y[t])&&M(t)},f=function(t){return String(y[t])}),_&&(r=Math.min(r,b.length));for(var S=0;S1){for(var P=a.randstr(),I=0;I\"),name:A||z(\"name\")?y.name:void 0,color:k(\"hoverlabel.bgcolor\")||x.color,borderColor:k(\"hoverlabel.bordercolor\"),fontFamily:k(\"hoverlabel.font.family\"),fontSize:k(\"hoverlabel.font.size\"),fontColor:k(\"hoverlabel.font.color\"),nameLength:k(\"hoverlabel.namelength\"),textAlign:k(\"hoverlabel.align\"),hovertemplate:A,hovertemplateLabels:P,eventData:l};m&&(F.x0=E-i.rInscribed*i.rpx1,F.x1=E+i.rInscribed*i.rpx1,F.idealAlign=i.pxmid[0]<0?\"left\":\"right\"),v&&(F.x=E,F.idealAlign=E<0?\"left\":\"right\");var B=[];o.loneHover(F,{container:a._hoverlayer.node(),outerContainer:a._paper.node(),gd:r,inOut_bbox:B}),l[0].bbox=B[0],d._hasHoverLabel=!0}if(v){var N=t.select(\"path.surface\");h.styleOne(N,i,y,{hovered:!0})}d._hasHoverEvent=!0,r.emit(\"plotly_hover\",{points:l||[f(i,y,h.eventDataKeys)],event:n.event})}})),t.on(\"mouseout\",(function(e){var i=r._fullLayout,a=r._fullData[d.index],s=n.select(this).datum();if(d._hasHoverEvent&&(e.originalEvent=n.event,r.emit(\"plotly_unhover\",{points:[f(s,a,h.eventDataKeys)],event:n.event}),d._hasHoverEvent=!1),d._hasHoverLabel&&(o.loneUnhover(i._hoverlayer.node()),d._hasHoverLabel=!1),v){var l=t.select(\"path.surface\");h.styleOne(l,s,a,{hovered:!1})}})),t.on(\"click\",(function(t){var e=r._fullLayout,a=r._fullData[d.index],s=m&&(c.isHierarchyRoot(t)||c.isLeaf(t)),u=c.getPtId(t),p=c.isEntry(t)?c.findEntryWithChild(g,u):c.findEntryWithLevel(g,u),v=c.getPtId(p),y={points:[f(t,a,h.eventDataKeys)],event:n.event};s||(y.nextLevel=v);var x=l.triggerHandler(r,\"plotly_\"+d.type+\"click\",y);if(!1!==x&&e.hovermode&&(r._hoverdata=[f(t,a,h.eventDataKeys)],o.click(r,n.event)),!s&&!1!==x&&!r._dragging&&!r._transitioning){i.call(\"_storeDirectGUIEdit\",a,e._tracePreGUI[a.uid],{level:a.level});var b={data:[{level:v}],traces:[d.index]},_={frame:{redraw:!1,duration:h.transitionTime},transition:{duration:h.transitionTime,easing:h.transitionEasing},mode:\"immediate\",fromcurrent:!0};o.loneUnhover(e._hoverlayer.node()),i.call(\"animate\",r,b,_)}}))}},{\"../../components/fx\":406,\"../../components/fx/helpers\":402,\"../../lib\":503,\"../../lib/events\":492,\"../../registry\":638,\"../pie/helpers\":905,\"./helpers\":1051,\"@plotly/d3\":58}],1051:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../components/color\"),a=t(\"../../lib/setcursor\"),o=t(\"../pie/helpers\");function s(t){return t.data.data.pid}r.findEntryWithLevel=function(t,e){var n;return e&&t.eachAfter((function(t){if(r.getPtId(t)===e)return n=t.copy()})),n||t},r.findEntryWithChild=function(t,e){var n;return t.eachAfter((function(t){for(var i=t.children||[],a=0;a0)},r.getMaxDepth=function(t){return t.maxdepth>=0?t.maxdepth:1/0},r.isHeader=function(t,e){return!(r.isLeaf(t)||t.depth===e._maxDepth-1)},r.getParent=function(t,e){return r.findEntryWithLevel(t,s(e))},r.listPath=function(t,e){var n=t.parent;if(!n)return[];var i=e?[n.data[e]]:[n];return r.listPath(n,e).concat(i)},r.getPath=function(t){return r.listPath(t,\"label\").join(\"/\")+\"/\"},r.formatValue=o.formatPieValue,r.formatPercent=function(t,e){var r=n.formatPercent(t,0);return\"0%\"===r&&(r=o.formatPiePercent(t,e)),r}},{\"../../components/color\":366,\"../../lib\":503,\"../../lib/setcursor\":524,\"../pie/helpers\":905}],1052:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"sunburst\",basePlotModule:t(\"./base_plot\"),categories:[],animatable:!0,attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\"),supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\").calc,crossTraceCalc:t(\"./calc\").crossTraceCalc,plot:t(\"./plot\").plot,style:t(\"./style\").style,colorbar:t(\"../scatter/marker_colorbar\"),meta:{}}},{\"../scatter/marker_colorbar\":944,\"./attributes\":1045,\"./base_plot\":1046,\"./calc\":1047,\"./defaults\":1049,\"./layout_attributes\":1053,\"./layout_defaults\":1054,\"./plot\":1055,\"./style\":1056}],1053:[function(t,e,r){\"use strict\";e.exports={sunburstcolorway:{valType:\"colorlist\",editType:\"calc\"},extendsunburstcolors:{valType:\"boolean\",dflt:!0,editType:\"calc\"}}},{}],1054:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e){function r(r,a){return n.coerce(t,e,i,r,a)}r(\"sunburstcolorway\",e.colorway),r(\"extendsunburstcolors\")}},{\"../../lib\":503,\"./layout_attributes\":1053}],1055:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"d3-hierarchy\"),a=t(\"d3-interpolate\").interpolate,o=t(\"../../components/drawing\"),s=t(\"../../lib\"),l=t(\"../../lib/svg_text_utils\"),c=t(\"../bar/uniform_text\"),u=c.recordMinTextSize,f=c.clearMinTextSize,h=t(\"../pie/plot\"),p=t(\"../pie/helpers\").getRotationAngle,d=h.computeTransform,g=h.transformInsideText,m=t(\"./style\").styleOne,v=t(\"../bar/style\").resizeText,y=t(\"./fx\"),x=t(\"./constants\"),b=t(\"./helpers\");function _(t,e,c,f){var h=t._fullLayout,v=!h.uniformtext.mode&&b.hasTransition(f),_=n.select(c).selectAll(\"g.slice\"),T=e[0],k=T.trace,A=T.hierarchy,M=b.findEntryWithLevel(A,k.level),S=b.getMaxDepth(k),E=h._size,L=k.domain,C=E.w*(L.x[1]-L.x[0]),P=E.h*(L.y[1]-L.y[0]),I=.5*Math.min(C,P),O=T.cx=E.l+E.w*(L.x[1]+L.x[0])/2,z=T.cy=E.t+E.h*(1-L.y[0])-P/2;if(!M)return _.remove();var D=null,R={};v&&_.each((function(t){R[b.getPtId(t)]={rpx0:t.rpx0,rpx1:t.rpx1,x0:t.x0,x1:t.x1,transform:t.transform},!D&&b.isEntry(t)&&(D=t)}));var F=function(t){return i.partition().size([2*Math.PI,t.height+1])(t)}(M).descendants(),B=M.height+1,N=0,j=S;T.hasMultipleRoots&&b.isHierarchyRoot(M)&&(F=F.slice(1),B-=1,N=1,j+=1),F=F.filter((function(t){return t.y1<=j}));var U=p(k.rotation);U&&F.forEach((function(t){t.x0+=U,t.x1+=U}));var V=Math.min(B,S),H=function(t){return(t-N)/V*I},q=function(t,e){return[t*Math.cos(e),-t*Math.sin(e)]},G=function(t){return s.pathAnnulus(t.rpx0,t.rpx1,t.x0,t.x1,O,z)},Y=function(t){return O+w(t)[0]*(t.transform.rCenter||0)+(t.transform.x||0)},W=function(t){return z+w(t)[1]*(t.transform.rCenter||0)+(t.transform.y||0)};(_=_.data(F,b.getPtId)).enter().append(\"g\").classed(\"slice\",!0),v?_.exit().transition().each((function(){var t=n.select(this);t.select(\"path.surface\").transition().attrTween(\"d\",(function(t){var e=function(t){var e,r=b.getPtId(t),n=R[r],i=R[b.getPtId(M)];if(i){var o=(t.x1>i.x1?2*Math.PI:0)+U;e=t.rpx1X?2*Math.PI:0)+U;e={x0:i,x1:i}}else e={rpx0:I,rpx1:I},s.extendFlat(e,K(t));else e={rpx0:0,rpx1:0};else e={x0:U,x1:U};return a(e,n)}(t);return function(t){return G(e(t))}})):f.attr(\"d\",G),c.call(y,M,t,e,{eventDataKeys:x.eventDataKeys,transitionTime:x.CLICK_TRANSITION_TIME,transitionEasing:x.CLICK_TRANSITION_EASING}).call(b.setSliceCursor,t,{hideOnRoot:!0,hideOnLeaves:!0,isTransitioning:t._transitioning}),f.call(m,i,k);var p=s.ensureSingle(c,\"g\",\"slicetext\"),_=s.ensureSingle(p,\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),w=s.ensureUniformFontSize(t,b.determineTextFont(k,i,h.font));_.text(r.formatSliceLabel(i,M,k,e,h)).classed(\"slicetext\",!0).attr(\"text-anchor\",\"middle\").call(o.font,w).call(l.convertToTspans,t);var A=o.bBox(_.node());i.transform=g(A,i,T),i.transform.targetX=Y(i),i.transform.targetY=W(i);var S=function(t,e){var r=t.transform;return d(r,e),r.fontSize=w.size,u(k.type,r,h),s.getTextTransform(r)};v?_.transition().attrTween(\"transform\",(function(t){var e=function(t){var e,r=R[b.getPtId(t)],n=t.transform;if(r)e=r;else if(e={rpx1:t.rpx1,transform:{textPosAngle:n.textPosAngle,scale:0,rotate:n.rotate,rCenter:n.rCenter,x:n.x,y:n.y}},D)if(t.parent)if(X){var i=t.x1>X?2*Math.PI:0;e.x0=e.x1=i}else s.extendFlat(e,K(t));else e.x0=e.x1=U;else e.x0=e.x1=U;var o=a(e.transform.textPosAngle,t.transform.textPosAngle),l=a(e.rpx1,t.rpx1),c=a(e.x0,t.x0),f=a(e.x1,t.x1),p=a(e.transform.scale,n.scale),d=a(e.transform.rotate,n.rotate),g=0===n.rCenter?3:0===e.transform.rCenter?1/3:1,m=a(e.transform.rCenter,n.rCenter);return function(t){var e=l(t),r=c(t),i=f(t),a=function(t){return m(Math.pow(t,g))}(t),s={pxmid:q(e,(r+i)/2),rpx1:e,transform:{textPosAngle:o(t),rCenter:a,x:n.x,y:n.y}};return u(k.type,n,h),{transform:{targetX:Y(s),targetY:W(s),scale:p(t),rotate:d(t),rCenter:a}}}}(t);return function(t){return S(e(t),A)}})):_.attr(\"transform\",S(i,A))}))}function w(t){return e=t.rpx1,r=t.transform.textPosAngle,[e*Math.sin(r),-e*Math.cos(r)];var e,r}r.plot=function(t,e,r,i){var a,o,s=t._fullLayout,l=s._sunburstlayer,c=!r,u=!s.uniformtext.mode&&b.hasTransition(r);(f(\"sunburst\",s),(a=l.selectAll(\"g.trace.sunburst\").data(e,(function(t){return t[0].trace.uid}))).enter().append(\"g\").classed(\"trace\",!0).classed(\"sunburst\",!0).attr(\"stroke-linejoin\",\"round\"),a.order(),u)?(i&&(o=i()),n.transition().duration(r.duration).ease(r.easing).each(\"end\",(function(){o&&o()})).each(\"interrupt\",(function(){o&&o()})).each((function(){l.selectAll(\"g.trace\").each((function(e){_(t,e,this,r)}))}))):(a.each((function(e){_(t,e,this,r)})),s.uniformtext.mode&&v(t,s._sunburstlayer.selectAll(\".trace\"),\"sunburst\"));c&&a.exit().remove()},r.formatSliceLabel=function(t,e,r,n,i){var a=r.texttemplate,o=r.textinfo;if(!(a||o&&\"none\"!==o))return\"\";var l=i.separators,c=n[0],u=t.data.data,f=c.hierarchy,h=b.isHierarchyRoot(t),p=b.getParent(f,t),d=b.getValue(t);if(!a){var g,m=o.split(\"+\"),v=function(t){return-1!==m.indexOf(t)},y=[];if(v(\"label\")&&u.label&&y.push(u.label),u.hasOwnProperty(\"v\")&&v(\"value\")&&y.push(b.formatValue(u.v,l)),!h){v(\"current path\")&&y.push(b.getPath(t.data));var x=0;v(\"percent parent\")&&x++,v(\"percent entry\")&&x++,v(\"percent root\")&&x++;var _=x>1;if(x){var w,T=function(t){g=b.formatPercent(w,l),_&&(g+=\" of \"+t),y.push(g)};v(\"percent parent\")&&!h&&(w=d/b.getValue(p),T(\"parent\")),v(\"percent entry\")&&(w=d/b.getValue(e),T(\"entry\")),v(\"percent root\")&&(w=d/b.getValue(f),T(\"root\"))}}return v(\"text\")&&(g=s.castOption(r,u.i,\"text\"),s.isValidTextValue(g)&&y.push(g)),y.join(\"
\")}var k=s.castOption(r,u.i,\"texttemplate\");if(!k)return\"\";var A={};u.label&&(A.label=u.label),u.hasOwnProperty(\"v\")&&(A.value=u.v,A.valueLabel=b.formatValue(u.v,l)),A.currentPath=b.getPath(t.data),h||(A.percentParent=d/b.getValue(p),A.percentParentLabel=b.formatPercent(A.percentParent,l),A.parent=b.getPtLabel(p)),A.percentEntry=d/b.getValue(e),A.percentEntryLabel=b.formatPercent(A.percentEntry,l),A.entry=b.getPtLabel(e),A.percentRoot=d/b.getValue(f),A.percentRootLabel=b.formatPercent(A.percentRoot,l),A.root=b.getPtLabel(f),u.hasOwnProperty(\"color\")&&(A.color=u.color);var M=s.castOption(r,u.i,\"text\");return(s.isValidTextValue(M)||\"\"===M)&&(A.text=M),A.customdata=s.castOption(r,u.i,\"customdata\"),s.texttemplateString(k,A,i._d3locale,A,r._meta||{})}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../bar/style\":662,\"../bar/uniform_text\":664,\"../pie/helpers\":905,\"../pie/plot\":909,\"./constants\":1048,\"./fx\":1050,\"./helpers\":1051,\"./style\":1056,\"@plotly/d3\":58,\"d3-hierarchy\":115,\"d3-interpolate\":116}],1056:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../components/color\"),a=t(\"../../lib\"),o=t(\"../bar/uniform_text\").resizeText;function s(t,e,r){var n=e.data.data,o=!e.children,s=n.i,l=a.castOption(r,s,\"marker.line.color\")||i.defaultLine,c=a.castOption(r,s,\"marker.line.width\")||0;t.style(\"stroke-width\",c).call(i.fill,n.color).call(i.stroke,l).style(\"opacity\",o?r.leaf.opacity:null)}e.exports={style:function(t){var e=t._fullLayout._sunburstlayer.selectAll(\".trace\");o(t,e,\"sunburst\"),e.each((function(t){var e=n.select(this),r=t[0].trace;e.style(\"opacity\",r.opacity),e.selectAll(\"path.surface\").each((function(t){n.select(this).call(s,t,r)}))}))},styleOne:s}},{\"../../components/color\":366,\"../../lib\":503,\"../bar/uniform_text\":664,\"@plotly/d3\":58}],1057:[function(t,e,r){\"use strict\";var n=t(\"../../components/color\"),i=t(\"../../components/colorscale/attributes\"),a=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,o=t(\"../../plots/template_attributes\").hovertemplateAttrs,s=t(\"../../plots/attributes\"),l=t(\"../../lib/extend\").extendFlat,c=t(\"../../plot_api/edit_types\").overrideAll;function u(t){return{show:{valType:\"boolean\",dflt:!1},start:{valType:\"number\",dflt:null,editType:\"plot\"},end:{valType:\"number\",dflt:null,editType:\"plot\"},size:{valType:\"number\",dflt:null,min:0,editType:\"plot\"},project:{x:{valType:\"boolean\",dflt:!1},y:{valType:\"boolean\",dflt:!1},z:{valType:\"boolean\",dflt:!1}},color:{valType:\"color\",dflt:n.defaultLine},usecolormap:{valType:\"boolean\",dflt:!1},width:{valType:\"number\",min:1,max:16,dflt:2},highlight:{valType:\"boolean\",dflt:!0},highlightcolor:{valType:\"color\",dflt:n.defaultLine},highlightwidth:{valType:\"number\",min:1,max:16,dflt:2}}}var f=e.exports=c(l({z:{valType:\"data_array\"},x:{valType:\"data_array\"},y:{valType:\"data_array\"},text:{valType:\"string\",dflt:\"\",arrayOk:!0},hovertext:{valType:\"string\",dflt:\"\",arrayOk:!0},hovertemplate:o(),xhoverformat:a(\"x\"),yhoverformat:a(\"y\"),zhoverformat:a(\"z\"),connectgaps:{valType:\"boolean\",dflt:!1,editType:\"calc\"},surfacecolor:{valType:\"data_array\"}},i(\"\",{colorAttr:\"z or surfacecolor\",showScaleDflt:!0,autoColorDflt:!1,editTypeOverride:\"calc\"}),{contours:{x:u(),y:u(),z:u()},hidesurface:{valType:\"boolean\",dflt:!1},lightposition:{x:{valType:\"number\",min:-1e5,max:1e5,dflt:10},y:{valType:\"number\",min:-1e5,max:1e5,dflt:1e4},z:{valType:\"number\",min:-1e5,max:1e5,dflt:0}},lighting:{ambient:{valType:\"number\",min:0,max:1,dflt:.8},diffuse:{valType:\"number\",min:0,max:1,dflt:.8},specular:{valType:\"number\",min:0,max:2,dflt:.05},roughness:{valType:\"number\",min:0,max:1,dflt:.5},fresnel:{valType:\"number\",min:0,max:5,dflt:.2}},opacity:{valType:\"number\",min:0,max:1,dflt:1},opacityscale:{valType:\"any\",editType:\"calc\"},_deprecated:{zauto:l({},i.zauto,{}),zmin:l({},i.zmin,{}),zmax:l({},i.zmax,{})},hoverinfo:l({},s.hoverinfo),showlegend:l({},s.showlegend,{dflt:!1})}),\"calc\",\"nested\");f.x.editType=f.y.editType=f.z.editType=\"calc+clearAxisTypes\",f.transforms=void 0},{\"../../components/color\":366,\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plot_api/edit_types\":536,\"../../plots/attributes\":550,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/template_attributes\":633}],1058:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/calc\");e.exports=function(t,e){e.surfacecolor?n(t,e,{vals:e.surfacecolor,containerStr:\"\",cLetter:\"c\"}):n(t,e,{vals:e.z,containerStr:\"\",cLetter:\"c\"})}},{\"../../components/colorscale/calc\":374}],1059:[function(t,e,r){\"use strict\";var n=t(\"../../../stackgl_modules\").gl_surface3d,i=t(\"../../../stackgl_modules\").ndarray,a=t(\"../../../stackgl_modules\").ndarray_linear_interpolate.d2,o=t(\"../heatmap/interp2d\"),s=t(\"../heatmap/find_empties\"),l=t(\"../../lib\").isArrayOrTypedArray,c=t(\"../../lib/gl_format_color\").parseColorScale,u=t(\"../../lib/str2rgbarray\"),f=t(\"../../components/colorscale\").extractOpts;function h(t,e,r){this.scene=t,this.uid=r,this.surface=e,this.data=null,this.showContour=[!1,!1,!1],this.contourStart=[null,null,null],this.contourEnd=[null,null,null],this.contourSize=[0,0,0],this.minValues=[1/0,1/0,1/0],this.maxValues=[-1/0,-1/0,-1/0],this.dataScaleX=1,this.dataScaleY=1,this.refineData=!0,this.objectOffset=[0,0,0]}var p=h.prototype;p.getXat=function(t,e,r,n){var i=l(this.data.x)?l(this.data.x[0])?this.data.x[e][t]:this.data.x[t]:t;return void 0===r?i:n.d2l(i,0,r)},p.getYat=function(t,e,r,n){var i=l(this.data.y)?l(this.data.y[0])?this.data.y[e][t]:this.data.y[e]:e;return void 0===r?i:n.d2l(i,0,r)},p.getZat=function(t,e,r,n){var i=this.data.z[e][t];return null===i&&this.data.connectgaps&&this.data._interpolatedZ&&(i=this.data._interpolatedZ[e][t]),void 0===r?i:n.d2l(i,0,r)},p.handlePick=function(t){if(t.object===this.surface){var e=(t.data.index[0]-1)/this.dataScaleX-1,r=(t.data.index[1]-1)/this.dataScaleY-1,n=Math.max(Math.min(Math.round(e),this.data.z[0].length-1),0),i=Math.max(Math.min(Math.round(r),this.data._ylength-1),0);t.index=[n,i],t.traceCoordinate=[this.getXat(n,i),this.getYat(n,i),this.getZat(n,i)],t.dataCoordinate=[this.getXat(n,i,this.data.xcalendar,this.scene.fullSceneLayout.xaxis),this.getYat(n,i,this.data.ycalendar,this.scene.fullSceneLayout.yaxis),this.getZat(n,i,this.data.zcalendar,this.scene.fullSceneLayout.zaxis)];for(var a=0;a<3;a++){var o=t.dataCoordinate[a];null!=o&&(t.dataCoordinate[a]*=this.scene.dataScale[a])}var s=this.data.hovertext||this.data.text;return Array.isArray(s)&&s[i]&&void 0!==s[i][n]?t.textLabel=s[i][n]:t.textLabel=s||\"\",t.data.dataCoordinate=t.dataCoordinate.slice(),this.surface.highlight(t.data),this.scene.glplot.spikes.position=t.dataCoordinate,!0}};var d=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,1063,1069,1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277,1279,1283,1289,1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,1489,1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,1579,1583,1597,1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,1697,1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783,1787,1789,1801,1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,1913,1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003,2011,2017,2027,2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111,2113,2129,2131,2137,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239,2243,2251,2267,2269,2273,2281,2287,2293,2297,2309,2311,2333,2339,2341,2347,2351,2357,2371,2377,2381,2383,2389,2393,2399,2411,2417,2423,2437,2441,2447,2459,2467,2473,2477,2503,2521,2531,2539,2543,2549,2551,2557,2579,2591,2593,2609,2617,2621,2633,2647,2657,2659,2663,2671,2677,2683,2687,2689,2693,2699,2707,2711,2713,2719,2729,2731,2741,2749,2753,2767,2777,2789,2791,2797,2801,2803,2819,2833,2837,2843,2851,2857,2861,2879,2887,2897,2903,2909,2917,2927,2939,2953,2957,2963,2969,2971,2999];function g(t,e){if(t0){r=d[n];break}return r}function y(t,e){if(!(t<1||e<1)){for(var r=m(t),n=m(e),i=1,a=0;a_;)r--,r/=v(r),++r1?n:1},p.refineCoords=function(t){for(var e=this.dataScaleX,r=this.dataScaleY,n=t[0].shape[0],a=t[0].shape[1],o=0|Math.floor(t[0].shape[0]*e+1),s=0|Math.floor(t[0].shape[1]*r+1),l=1+n+1,c=1+a+1,u=i(new Float32Array(l*c),[l,c]),f=[1/e,0,0,0,1/r,0,0,0,1],h=0;h0&&null!==this.contourStart[t]&&null!==this.contourEnd[t]&&this.contourEnd[t]>this.contourStart[t]))for(i[t]=!0,e=this.contourStart[t];ea&&(this.minValues[e]=a),this.maxValues[e]\",maxDimensionCount:60,overdrag:45,releaseTransitionDuration:120,releaseTransitionEase:\"cubic-out\",scrollbarCaptureWidth:18,scrollbarHideDelay:1e3,scrollbarHideDuration:1e3,scrollbarOffset:5,scrollbarWidth:8,transitionDuration:100,transitionEase:\"cubic-out\",uplift:5,wrapSpacer:\" \",wrapSplitCharacter:\" \",cn:{table:\"table\",tableControlView:\"table-control-view\",scrollBackground:\"scroll-background\",yColumn:\"y-column\",columnBlock:\"column-block\",scrollAreaClip:\"scroll-area-clip\",scrollAreaClipRect:\"scroll-area-clip-rect\",columnBoundary:\"column-boundary\",columnBoundaryClippath:\"column-boundary-clippath\",columnBoundaryRect:\"column-boundary-rect\",columnCells:\"column-cells\",columnCell:\"column-cell\",cellRect:\"cell-rect\",cellText:\"cell-text\",cellTextHolder:\"cell-text-holder\",scrollbarKit:\"scrollbar-kit\",scrollbar:\"scrollbar\",scrollbarSlider:\"scrollbar-slider\",scrollbarGlyph:\"scrollbar-glyph\",scrollbarCaptureZone:\"scrollbar-capture-zone\"}}},{}],1066:[function(t,e,r){\"use strict\";var n=t(\"./constants\"),i=t(\"../../lib/extend\").extendFlat,a=t(\"fast-isnumeric\");function o(t){if(Array.isArray(t)){for(var e=0,r=0;r=e||c===t.length-1)&&(n[i]=o,o.key=l++,o.firstRowIndex=s,o.lastRowIndex=c,o={firstRowIndex:null,lastRowIndex:null,rows:[]},i+=a,s=c+1,a=0);return n}e.exports=function(t,e){var r=l(e.cells.values),p=function(t){return t.slice(e.header.values.length,t.length)},d=l(e.header.values);d.length&&!d[0].length&&(d[0]=[\"\"],d=l(d));var g=d.concat(p(r).map((function(){return c((d[0]||[\"\"]).length)}))),m=e.domain,v=Math.floor(t._fullLayout._size.w*(m.x[1]-m.x[0])),y=Math.floor(t._fullLayout._size.h*(m.y[1]-m.y[0])),x=e.header.values.length?g[0].map((function(){return e.header.height})):[n.emptyHeaderHeight],b=r.length?r[0].map((function(){return e.cells.height})):[],_=x.reduce(s,0),w=h(b,y-_+n.uplift),T=f(h(x,_),[]),k=f(w,T),A={},M=e._fullInput.columnorder.concat(p(r.map((function(t,e){return e})))),S=g.map((function(t,r){var n=Array.isArray(e.columnwidth)?e.columnwidth[Math.min(r,e.columnwidth.length-1)]:e.columnwidth;return a(n)?Number(n):1})),E=S.reduce(s,0);S=S.map((function(t){return t/E*v}));var L=Math.max(o(e.header.line.width),o(e.cells.line.width)),C={key:e.uid+t._context.staticPlot,translateX:m.x[0]*t._fullLayout._size.w,translateY:t._fullLayout._size.h*(1-m.y[1]),size:t._fullLayout._size,width:v,maxLineWidth:L,height:y,columnOrder:M,groupHeight:y,rowBlocks:k,headerRowBlocks:T,scrollY:0,cells:i({},e.cells,{values:r}),headerCells:i({},e.header,{values:g}),gdColumns:g.map((function(t){return t[0]})),gdColumnsOriginalOrder:g.map((function(t){return t[0]})),prevPages:[0,0],scrollbarState:{scrollbarScrollInProgress:!1},columns:g.map((function(t,e){var r=A[t];return A[t]=(r||0)+1,{key:t+\"__\"+A[t],label:t,specIndex:e,xIndex:M[e],xScale:u,x:void 0,calcdata:void 0,columnWidth:S[e]}}))};return C.columns.forEach((function(t){t.calcdata=C,t.x=u(t)})),C}},{\"../../lib/extend\":493,\"./constants\":1065,\"fast-isnumeric\":190}],1067:[function(t,e,r){\"use strict\";var n=t(\"../../lib/extend\").extendFlat;r.splitToPanels=function(t){var e=[0,0],r=n({},t,{key:\"header\",type:\"header\",page:0,prevPages:e,currentRepaint:[null,null],dragHandle:!0,values:t.calcdata.headerCells.values[t.specIndex],rowBlocks:t.calcdata.headerRowBlocks,calcdata:n({},t.calcdata,{cells:t.calcdata.headerCells})});return[n({},t,{key:\"cells1\",type:\"cells\",page:0,prevPages:e,currentRepaint:[null,null],dragHandle:!1,values:t.calcdata.cells.values[t.specIndex],rowBlocks:t.calcdata.rowBlocks}),n({},t,{key:\"cells2\",type:\"cells\",page:1,prevPages:e,currentRepaint:[null,null],dragHandle:!1,values:t.calcdata.cells.values[t.specIndex],rowBlocks:t.calcdata.rowBlocks}),r]},r.splitToCells=function(t){var e=function(t){var e=t.rowBlocks[t.page],r=e?e.rows[0].rowIndex:0,n=e?r+e.rows.length:0;return[r,n]}(t);return(t.values||[]).slice(e[0],e[1]).map((function(r,n){return{keyWithinBlock:n+(\"string\"==typeof r&&r.match(/[<$&> ]/)?\"_keybuster_\"+Math.random():\"\"),key:e[0]+n,column:t,calcdata:t.calcdata,page:t.page,rowBlocks:t.rowBlocks,value:r}}))}},{\"../../lib/extend\":493}],1068:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./attributes\"),a=t(\"../../plots/domain\").defaults;e.exports=function(t,e,r,o){function s(r,a){return n.coerce(t,e,i,r,a)}a(e,o,s),s(\"columnwidth\"),s(\"header.values\"),s(\"header.format\"),s(\"header.align\"),s(\"header.prefix\"),s(\"header.suffix\"),s(\"header.height\"),s(\"header.line.width\"),s(\"header.line.color\"),s(\"header.fill.color\"),n.coerceFont(s,\"header.font\",n.extendFlat({},o.font)),function(t,e){for(var r=t.columnorder||[],n=t.header.values.length,i=r.slice(0,n),a=i.slice().sort((function(t,e){return t-e})),o=i.map((function(t){return a.indexOf(t)})),s=o.length;s/i),l=!o||s;t.mayHaveMarkup=o&&i.match(/[<&>]/);var c,u=\"string\"==typeof(c=i)&&c.match(n.latexCheck);t.latex=u;var f,h,p=u?\"\":T(t.calcdata.cells.prefix,e,r)||\"\",d=u?\"\":T(t.calcdata.cells.suffix,e,r)||\"\",g=u?null:T(t.calcdata.cells.format,e,r)||null,m=p+(g?a(g)(t.value):t.value)+d;if(t.wrappingNeeded=!t.wrapped&&!l&&!u&&(f=w(m)),t.cellHeightMayIncrease=s||u||t.mayHaveMarkup||(void 0===f?w(m):f),t.needsConvertToTspans=t.mayHaveMarkup||t.wrappingNeeded||t.latex,t.wrappingNeeded){var v=(\" \"===n.wrapSplitCharacter?m.replace(/i&&n.push(a),i+=l}return n}(i,l,s);1===c.length&&(c[0]===i.length-1?c.unshift(c[0]-1):c.push(c[0]+1)),c[0]%2&&c.reverse(),e.each((function(t,e){t.page=c[e],t.scrollY=l})),e.attr(\"transform\",(function(t){var e=D(t.rowBlocks,t.page)-t.scrollY;return u(0,e)})),t&&(C(t,r,e,c,n.prevPages,n,0),C(t,r,e,c,n.prevPages,n,1),x(r,t))}}function L(t,e,r,a){return function(o){var s=o.calcdata?o.calcdata:o,l=e.filter((function(t){return s.key===t.key})),c=r||s.scrollbarState.dragMultiplier,u=s.scrollY;s.scrollY=void 0===a?s.scrollY+c*i.event.dy:a;var f=l.selectAll(\".\"+n.cn.yColumn).selectAll(\".\"+n.cn.columnBlock).filter(A);return E(t,f,l),s.scrollY===u}}function C(t,e,r,n,i,a,o){n[o]!==i[o]&&(clearTimeout(a.currentRepaint[o]),a.currentRepaint[o]=setTimeout((function(){var a=r.filter((function(t,e){return e===o&&n[e]!==i[e]}));b(t,e,a,r),i[o]=n[o]})))}function P(t,e,r,a){return function(){var o=i.select(e.parentNode);o.each((function(t){var e=t.fragments;o.selectAll(\"tspan.line\").each((function(t,r){e[r].width=this.getComputedTextLength()}));var r,i,a=e[e.length-1].width,s=e.slice(0,-1),l=[],c=0,u=t.column.columnWidth-2*n.cellPad;for(t.value=\"\";s.length;)c+(i=(r=s.shift()).width+a)>u&&(t.value+=l.join(n.wrapSpacer)+n.lineBreaker,l=[],c=0),l.push(r.text),c+=i;c&&(t.value+=l.join(n.wrapSpacer)),t.wrapped=!0})),o.selectAll(\"tspan.line\").remove(),_(o.select(\".\"+n.cn.cellText),r,t,a),i.select(e.parentNode.parentNode).call(z)}}function I(t,e,r,a,o){return function(){if(!o.settledY){var s=i.select(e.parentNode),l=B(o),c=o.key-l.firstRowIndex,f=l.rows[c].rowHeight,h=o.cellHeightMayIncrease?e.parentNode.getBoundingClientRect().height+2*n.cellPad:f,p=Math.max(h,f);p-l.rows[c].rowHeight&&(l.rows[c].rowHeight=p,t.selectAll(\".\"+n.cn.columnCell).call(z),E(null,t.filter(A),0),x(r,a,!0)),s.attr(\"transform\",(function(){var t=this.parentNode.getBoundingClientRect(),e=i.select(this.parentNode).select(\".\"+n.cn.cellRect).node().getBoundingClientRect(),r=this.transform.baseVal.consolidate(),a=e.top-t.top+(r?r.matrix.f:n.cellPad);return u(O(o,i.select(this.parentNode).select(\".\"+n.cn.cellTextHolder).node().getBoundingClientRect().width),a)})),o.settledY=!0}}}function O(t,e){switch(t.align){case\"left\":return n.cellPad;case\"right\":return t.column.columnWidth-(e||0)-n.cellPad;case\"center\":return(t.column.columnWidth-(e||0))/2;default:return n.cellPad}}function z(t){t.attr(\"transform\",(function(t){var e=t.rowBlocks[0].auxiliaryBlocks.reduce((function(t,e){return t+R(e,1/0)}),0),r=R(B(t),t.key);return u(0,r+e)})).selectAll(\".\"+n.cn.cellRect).attr(\"height\",(function(t){return(e=B(t),r=t.key,e.rows[r-e.firstRowIndex]).rowHeight;var e,r}))}function D(t,e){for(var r=0,n=e-1;n>=0;n--)r+=F(t[n]);return r}function R(t,e){for(var r=0,n=0;n\",\"<\",\"|\",\"/\",\"\\\\\"],dflt:\">\",editType:\"plot\"},thickness:{valType:\"number\",min:12,editType:\"plot\"},textfont:u({},s.textfont,{}),editType:\"calc\"},text:s.text,textinfo:l.textinfo,texttemplate:i({editType:\"plot\"},{keys:c.eventDataKeys.concat([\"label\",\"value\"])}),hovertext:s.hovertext,hoverinfo:l.hoverinfo,hovertemplate:n({},{keys:c.eventDataKeys}),textfont:s.textfont,insidetextfont:s.insidetextfont,outsidetextfont:u({},s.outsidetextfont,{}),textposition:{valType:\"enumerated\",values:[\"top left\",\"top center\",\"top right\",\"middle left\",\"middle center\",\"middle right\",\"bottom left\",\"bottom center\",\"bottom right\"],dflt:\"top left\",editType:\"plot\"},sort:s.sort,root:l.root,domain:o({name:\"treemap\",trace:!0,editType:\"calc\"})}},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plots/domain\":584,\"../../plots/template_attributes\":633,\"../pie/attributes\":900,\"../sunburst/attributes\":1045,\"./constants\":1074}],1072:[function(t,e,r){\"use strict\";var n=t(\"../../plots/plots\");r.name=\"treemap\",r.plot=function(t,e,i,a){n.plotBasePlot(r.name,t,e,i,a)},r.clean=function(t,e,i,a){n.cleanBasePlot(r.name,t,e,i,a)}},{\"../../plots/plots\":619}],1073:[function(t,e,r){\"use strict\";var n=t(\"../sunburst/calc\");r.calc=function(t,e){return n.calc(t,e)},r.crossTraceCalc=function(t){return n._runCrossTraceCalc(\"treemap\",t)}},{\"../sunburst/calc\":1047}],1074:[function(t,e,r){\"use strict\";e.exports={CLICK_TRANSITION_TIME:750,CLICK_TRANSITION_EASING:\"poly\",eventDataKeys:[\"currentPath\",\"root\",\"entry\",\"percentRoot\",\"percentEntry\",\"percentParent\"],gapWithPathbar:1}},{}],1075:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./attributes\"),a=t(\"../../components/color\"),o=t(\"../../plots/domain\").defaults,s=t(\"../bar/defaults\").handleText,l=t(\"../bar/constants\").TEXTPAD,c=t(\"../../components/colorscale\"),u=c.hasColorscale,f=c.handleDefaults;e.exports=function(t,e,r,c){function h(r,a){return n.coerce(t,e,i,r,a)}var p=h(\"labels\"),d=h(\"parents\");if(p&&p.length&&d&&d.length){var g=h(\"values\");g&&g.length?h(\"branchvalues\"):h(\"count\"),h(\"level\"),h(\"maxdepth\"),\"squarify\"===h(\"tiling.packing\")&&h(\"tiling.squarifyratio\"),h(\"tiling.flip\"),h(\"tiling.pad\");var m=h(\"text\");h(\"texttemplate\"),e.texttemplate||h(\"textinfo\",Array.isArray(m)?\"text+label\":\"label\"),h(\"hovertext\"),h(\"hovertemplate\");var v=h(\"pathbar.visible\");s(t,e,c,h,\"auto\",{hasPathbar:v,moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),h(\"textposition\");var y=-1!==e.textposition.indexOf(\"bottom\");h(\"marker.line.width\")&&h(\"marker.line.color\",c.paper_bgcolor);var x=h(\"marker.colors\");(e._hasColorscale=u(t,\"marker\",\"colors\")||(t.marker||{}).coloraxis)?f(t,e,c,h,{prefix:\"marker.\",cLetter:\"c\"}):h(\"marker.depthfade\",!(x||[]).length);var b=2*e.textfont.size;h(\"marker.pad.t\",y?b/4:b),h(\"marker.pad.l\",b/4),h(\"marker.pad.r\",b/4),h(\"marker.pad.b\",y?b:b/4),e._hovered={marker:{line:{width:2,color:a.contrast(c.paper_bgcolor)}}},v&&(h(\"pathbar.thickness\",e.pathbar.textfont.size+2*l),h(\"pathbar.side\"),h(\"pathbar.edgeshape\")),h(\"sort\"),h(\"root.color\"),o(e,c,h),e._length=null}else e.visible=!1}},{\"../../components/color\":366,\"../../components/colorscale\":378,\"../../lib\":503,\"../../plots/domain\":584,\"../bar/constants\":650,\"../bar/defaults\":652,\"./attributes\":1071}],1076:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../sunburst/helpers\"),a=t(\"../bar/uniform_text\").clearMinTextSize,o=t(\"../bar/style\").resizeText,s=t(\"./plot_one\");e.exports=function(t,e,r,l,c){var u,f,h=c.type,p=c.drawDescendants,d=t._fullLayout,g=d[\"_\"+h+\"layer\"],m=!r;(a(h,d),(u=g.selectAll(\"g.trace.\"+h).data(e,(function(t){return t[0].trace.uid}))).enter().append(\"g\").classed(\"trace\",!0).classed(h,!0),u.order(),!d.uniformtext.mode&&i.hasTransition(r))?(l&&(f=l()),n.transition().duration(r.duration).ease(r.easing).each(\"end\",(function(){f&&f()})).each(\"interrupt\",(function(){f&&f()})).each((function(){g.selectAll(\"g.trace\").each((function(e){s(t,e,this,r,p)}))}))):(u.each((function(e){s(t,e,this,r,p)})),d.uniformtext.mode&&o(t,g.selectAll(\".trace\"),h));m&&u.exit().remove()}},{\"../bar/style\":662,\"../bar/uniform_text\":664,\"../sunburst/helpers\":1051,\"./plot_one\":1085,\"@plotly/d3\":58}],1077:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../components/drawing\"),o=t(\"../../lib/svg_text_utils\"),s=t(\"./partition\"),l=t(\"./style\").styleOne,c=t(\"./constants\"),u=t(\"../sunburst/helpers\"),f=t(\"../sunburst/fx\");e.exports=function(t,e,r,h,p){var d=p.barDifY,g=p.width,m=p.height,v=p.viewX,y=p.viewY,x=p.pathSlice,b=p.toMoveInsideSlice,_=p.strTransform,w=p.hasTransition,T=p.handleSlicesExit,k=p.makeUpdateSliceInterpolator,A=p.makeUpdateTextInterpolator,M={},S=t._fullLayout,E=e[0],L=E.trace,C=E.hierarchy,P=g/L._entryDepth,I=u.listPath(r.data,\"id\"),O=s(C.copy(),[g,m],{packing:\"dice\",pad:{inner:0,top:0,left:0,right:0,bottom:0}}).descendants();(O=O.filter((function(t){var e=I.indexOf(t.data.id);return-1!==e&&(t.x0=P*e,t.x1=P*(e+1),t.y0=d,t.y1=d+m,t.onPathbar=!0,!0)}))).reverse(),(h=h.data(O,u.getPtId)).enter().append(\"g\").classed(\"pathbar\",!0),T(h,!0,M,[g,m],x),h.order();var z=h;w&&(z=z.transition().each(\"end\",(function(){var e=n.select(this);u.setSliceCursor(e,t,{hideOnRoot:!1,hideOnLeaves:!1,isTransitioning:!1})}))),z.each((function(s){s._x0=v(s.x0),s._x1=v(s.x1),s._y0=y(s.y0),s._y1=y(s.y1),s._hoverX=v(s.x1-Math.min(g,m)/2),s._hoverY=y(s.y1-m/2);var h=n.select(this),p=i.ensureSingle(h,\"path\",\"surface\",(function(t){t.style(\"pointer-events\",\"all\")}));w?p.transition().attrTween(\"d\",(function(t){var e=k(t,!0,M,[g,m]);return function(t){return x(e(t))}})):p.attr(\"d\",x),h.call(f,r,t,e,{styleOne:l,eventDataKeys:c.eventDataKeys,transitionTime:c.CLICK_TRANSITION_TIME,transitionEasing:c.CLICK_TRANSITION_EASING}).call(u.setSliceCursor,t,{hideOnRoot:!1,hideOnLeaves:!1,isTransitioning:t._transitioning}),p.call(l,s,L,{hovered:!1}),s._text=(u.getPtLabel(s)||\"\").split(\"
\").join(\" \")||\"\";var d=i.ensureSingle(h,\"g\",\"slicetext\"),T=i.ensureSingle(d,\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),E=i.ensureUniformFontSize(t,u.determineTextFont(L,s,S.font,{onPathbar:!0}));T.text(s._text||\" \").classed(\"slicetext\",!0).attr(\"text-anchor\",\"start\").call(a.font,E).call(o.convertToTspans,t),s.textBB=a.bBox(T.node()),s.transform=b(s,{fontSize:E.size,onPathbar:!0}),s.transform.fontSize=E.size,w?T.transition().attrTween(\"transform\",(function(t){var e=A(t,!0,M,[g,m]);return function(t){return _(e(t))}})):T.attr(\"transform\",_(s))}))}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../sunburst/fx\":1050,\"../sunburst/helpers\":1051,\"./constants\":1074,\"./partition\":1083,\"./style\":1086,\"@plotly/d3\":58}],1078:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../components/drawing\"),o=t(\"../../lib/svg_text_utils\"),s=t(\"./partition\"),l=t(\"./style\").styleOne,c=t(\"./constants\"),u=t(\"../sunburst/helpers\"),f=t(\"../sunburst/fx\"),h=t(\"../sunburst/plot\").formatSliceLabel;e.exports=function(t,e,r,p,d){var g=d.width,m=d.height,v=d.viewX,y=d.viewY,x=d.pathSlice,b=d.toMoveInsideSlice,_=d.strTransform,w=d.hasTransition,T=d.handleSlicesExit,k=d.makeUpdateSliceInterpolator,A=d.makeUpdateTextInterpolator,M=d.prevEntry,S=t._fullLayout,E=e[0].trace,L=-1!==E.textposition.indexOf(\"left\"),C=-1!==E.textposition.indexOf(\"right\"),P=-1!==E.textposition.indexOf(\"bottom\"),I=!P&&!E.marker.pad.t||P&&!E.marker.pad.b,O=s(r,[g,m],{packing:E.tiling.packing,squarifyratio:E.tiling.squarifyratio,flipX:E.tiling.flip.indexOf(\"x\")>-1,flipY:E.tiling.flip.indexOf(\"y\")>-1,pad:{inner:E.tiling.pad,top:E.marker.pad.t,left:E.marker.pad.l,right:E.marker.pad.r,bottom:E.marker.pad.b}}).descendants(),z=1/0,D=-1/0;O.forEach((function(t){var e=t.depth;e>=E._maxDepth?(t.x0=t.x1=(t.x0+t.x1)/2,t.y0=t.y1=(t.y0+t.y1)/2):(z=Math.min(z,e),D=Math.max(D,e))})),p=p.data(O,u.getPtId),E._maxVisibleLayers=isFinite(D)?D-z+1:0,p.enter().append(\"g\").classed(\"slice\",!0),T(p,!1,{},[g,m],x),p.order();var R=null;if(w&&M){var F=u.getPtId(M);p.each((function(t){null===R&&u.getPtId(t)===F&&(R={x0:t.x0,x1:t.x1,y0:t.y0,y1:t.y1})}))}var B=function(){return R||{x0:0,x1:g,y0:0,y1:m}},N=p;return w&&(N=N.transition().each(\"end\",(function(){var e=n.select(this);u.setSliceCursor(e,t,{hideOnRoot:!0,hideOnLeaves:!1,isTransitioning:!1})}))),N.each((function(s){var p=u.isHeader(s,E);s._x0=v(s.x0),s._x1=v(s.x1),s._y0=y(s.y0),s._y1=y(s.y1),s._hoverX=v(s.x1-E.marker.pad.r),s._hoverY=y(P?s.y1-E.marker.pad.b/2:s.y0+E.marker.pad.t/2);var d=n.select(this),T=i.ensureSingle(d,\"path\",\"surface\",(function(t){t.style(\"pointer-events\",\"all\")}));w?T.transition().attrTween(\"d\",(function(t){var e=k(t,!1,B(),[g,m]);return function(t){return x(e(t))}})):T.attr(\"d\",x),d.call(f,r,t,e,{styleOne:l,eventDataKeys:c.eventDataKeys,transitionTime:c.CLICK_TRANSITION_TIME,transitionEasing:c.CLICK_TRANSITION_EASING}).call(u.setSliceCursor,t,{isTransitioning:t._transitioning}),T.call(l,s,E,{hovered:!1}),s.x0===s.x1||s.y0===s.y1?s._text=\"\":s._text=p?I?\"\":u.getPtLabel(s)||\"\":h(s,r,E,e,S)||\"\";var M=i.ensureSingle(d,\"g\",\"slicetext\"),O=i.ensureSingle(M,\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),z=i.ensureUniformFontSize(t,u.determineTextFont(E,s,S.font));O.text(s._text||\" \").classed(\"slicetext\",!0).attr(\"text-anchor\",C?\"end\":L||p?\"start\":\"middle\").call(a.font,z).call(o.convertToTspans,t),s.textBB=a.bBox(O.node()),s.transform=b(s,{fontSize:z.size,isHeader:p}),s.transform.fontSize=z.size,w?O.transition().attrTween(\"transform\",(function(t){var e=A(t,!1,B(),[g,m]);return function(t){return _(e(t))}})):O.attr(\"transform\",_(s))})),R}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../sunburst/fx\":1050,\"../sunburst/helpers\":1051,\"../sunburst/plot\":1055,\"./constants\":1074,\"./partition\":1083,\"./style\":1086,\"@plotly/d3\":58}],1079:[function(t,e,r){\"use strict\";e.exports=function t(e,r,n){var i;n.swapXY&&(i=e.x0,e.x0=e.y0,e.y0=i,i=e.x1,e.x1=e.y1,e.y1=i),n.flipX&&(i=e.x0,e.x0=r[0]-e.x1,e.x1=r[0]-i),n.flipY&&(i=e.y0,e.y0=r[1]-e.y1,e.y1=r[1]-i);var a=e.children;if(a)for(var o=0;o-1?C+O:-(I+O):0,D={x0:P,x1:P,y0:z,y1:z+I},R=function(t,e,r){var n=v.tiling.pad,i=function(t){return t-n<=e.x0},a=function(t){return t+n>=e.x1},o=function(t){return t-n<=e.y0},s=function(t){return t+n>=e.y1};return t.x0===e.x0&&t.x1===e.x1&&t.y0===e.y0&&t.y1===e.y1?{x0:t.x0,x1:t.x1,y0:t.y0,y1:t.y1}:{x0:i(t.x0-n)?0:a(t.x0-n)?r[0]:t.x0,x1:i(t.x1+n)?0:a(t.x1+n)?r[0]:t.x1,y0:o(t.y0-n)?0:s(t.y0-n)?r[1]:t.y0,y1:o(t.y1+n)?0:s(t.y1+n)?r[1]:t.y1}},F=null,B={},N={},j=null,U=function(t,e){return e?B[h(t)]:N[h(t)]},V=function(t,e,r,n){if(e)return B[h(x)]||D;var i=N[v.level]||r;return function(t){return t.data.depth-b.data.depth=(n-=(y?m:m.r)-s)){var x=(r+n)/2;r=x,n=x}var b;f?i<(b=a-(y?m:m.b))&&b\"===tt?(l.x-=a,c.x-=a,u.x-=a,f.x-=a):\"/\"===tt?(u.x-=a,f.x-=a,o.x-=a/2,s.x-=a/2):\"\\\\\"===tt?(l.x-=a,c.x-=a,o.x-=a/2,s.x-=a/2):\"<\"===tt&&(o.x-=a,s.x-=a),$(l),$(f),$(o),$(c),$(u),$(s),\"M\"+K(l.x,l.y)+\"L\"+K(c.x,c.y)+\"L\"+K(s.x,s.y)+\"L\"+K(u.x,u.y)+\"L\"+K(f.x,f.y)+\"L\"+K(o.x,o.y)+\"Z\"},toMoveInsideSlice:et,makeUpdateSliceInterpolator:nt,makeUpdateTextInterpolator:it,handleSlicesExit:at,hasTransition:A,strTransform:ot}):w.remove()}},{\"../../lib\":503,\"../bar/constants\":650,\"../bar/plot\":659,\"../bar/uniform_text\":664,\"../sunburst/helpers\":1051,\"./constants\":1074,\"./draw_ancestors\":1077,\"@plotly/d3\":58,\"d3-interpolate\":116}],1086:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../components/color\"),a=t(\"../../lib\"),o=t(\"../sunburst/helpers\"),s=t(\"../bar/uniform_text\").resizeText;function l(t,e,r,n){var s,l,c=(n||{}).hovered,u=e.data.data,f=u.i,h=u.color,p=o.isHierarchyRoot(e),d=1;if(c)s=r._hovered.marker.line.color,l=r._hovered.marker.line.width;else if(p&&h===r.root.color)d=100,s=\"rgba(0,0,0,0)\",l=0;else if(s=a.castOption(r,f,\"marker.line.color\")||i.defaultLine,l=a.castOption(r,f,\"marker.line.width\")||0,!r._hasColorscale&&!e.onPathbar){var g=r.marker.depthfade;if(g){var m,v=i.combine(i.addOpacity(r._backgroundColor,.75),h);if(!0===g){var y=o.getMaxDepth(r);m=isFinite(y)?o.isLeaf(e)?0:r._maxVisibleLayers-(e.data.depth-r._entryDepth):e.data.height+1}else m=e.data.depth-r._entryDepth,r._atRootLevel||m++;if(m>0)for(var x=0;x0){var x,b,_,w,T,k=t.xa,A=t.ya;\"h\"===p.orientation?(T=e,x=\"y\",_=A,b=\"x\",w=k):(T=r,x=\"x\",_=k,b=\"y\",w=A);var M=h[t.index];if(T>=M.span[0]&&T<=M.span[1]){var S=n.extendFlat({},t),E=w.c2p(T,!0),L=o.getKdeValue(M,p,T),C=o.getPositionOnKdePath(M,p,E),P=_._offset,I=_._length;S[x+\"0\"]=C[0],S[x+\"1\"]=C[1],S[b+\"0\"]=S[b+\"1\"]=E,S[b+\"Label\"]=b+\": \"+i.hoverLabelText(w,T,p[b+\"hoverformat\"])+\", \"+h[0].t.labels.kde+\" \"+L.toFixed(3),S.spikeDistance=y[0].spikeDistance;var O=x+\"Spike\";S[O]=y[0][O],y[0].spikeDistance=void 0,y[0][O]=void 0,S.hovertemplate=!1,v.push(S),(u={stroke:t.color})[x+\"1\"]=n.constrain(P+C[0],P,P+I),u[x+\"2\"]=n.constrain(P+C[1],P,P+I),u[b+\"1\"]=u[b+\"2\"]=w._offset+E}}g&&(v=v.concat(y))}-1!==d.indexOf(\"points\")&&(c=a.hoverOnPoints(t,e,r));var z=f.selectAll(\".violinline-\"+p.uid).data(u?[0]:[]);return z.enter().append(\"line\").classed(\"violinline-\"+p.uid,!0).attr(\"stroke-width\",1.5),z.exit().remove(),z.attr(u),\"closest\"===s?c?[c]:v:c?(v.push(c),v):v}},{\"../../lib\":503,\"../../plots/cartesian/axes\":554,\"../box/hover\":678,\"./helpers\":1091}],1093:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\"),crossTraceDefaults:t(\"../box/defaults\").crossTraceDefaults,supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\"),crossTraceCalc:t(\"./cross_trace_calc\"),plot:t(\"./plot\"),style:t(\"./style\"),styleOnSelect:t(\"../scatter/style\").styleOnSelect,hoverPoints:t(\"./hover\"),selectPoints:t(\"../box/select\"),moduleType:\"trace\",name:\"violin\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"cartesian\",\"svg\",\"symbols\",\"oriented\",\"box-violin\",\"showLegend\",\"violinLayout\",\"zoomScale\"],meta:{}}},{\"../../plots/cartesian\":568,\"../box/defaults\":676,\"../box/select\":683,\"../scatter/style\":950,\"./attributes\":1087,\"./calc\":1088,\"./cross_trace_calc\":1089,\"./defaults\":1090,\"./hover\":1092,\"./layout_attributes\":1094,\"./layout_defaults\":1095,\"./plot\":1096,\"./style\":1097}],1094:[function(t,e,r){\"use strict\";var n=t(\"../box/layout_attributes\"),i=t(\"../../lib\").extendFlat;e.exports={violinmode:i({},n.boxmode,{}),violingap:i({},n.boxgap,{}),violingroupgap:i({},n.boxgroupgap,{})}},{\"../../lib\":503,\"../box/layout_attributes\":680}],1095:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\"),a=t(\"../box/layout_defaults\");e.exports=function(t,e,r){a._supply(t,e,r,(function(r,a){return n.coerce(t,e,i,r,a)}),\"violin\")}},{\"../../lib\":503,\"../box/layout_defaults\":681,\"./layout_attributes\":1094}],1096:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../components/drawing\"),o=t(\"../box/plot\"),s=t(\"../scatter/line_points\"),l=t(\"./helpers\");e.exports=function(t,e,r,c){var u=t._fullLayout,f=e.xaxis,h=e.yaxis;function p(t){var e=s(t,{xaxis:f,yaxis:h,connectGaps:!0,baseTolerance:.75,shape:\"spline\",simplify:!0,linearized:!0});return a.smoothopen(e[0],1)}i.makeTraceGroups(c,r,\"trace violins\").each((function(t){var r=n.select(this),a=t[0],s=a.t,c=a.trace;if(!0!==c.visible||s.empty)r.remove();else{var d=s.bPos,g=s.bdPos,m=e[s.valLetter+\"axis\"],v=e[s.posLetter+\"axis\"],y=\"both\"===c.side,x=y||\"positive\"===c.side,b=y||\"negative\"===c.side,_=r.selectAll(\"path.violin\").data(i.identity);_.enter().append(\"path\").style(\"vector-effect\",\"non-scaling-stroke\").attr(\"class\",\"violin\"),_.exit().remove(),_.each((function(t){var e,r,i,a,o,l,f,h,_=n.select(this),w=t.density,T=w.length,k=v.c2l(t.pos+d,!0),A=v.l2p(k);if(c.width)e=s.maxKDE/g;else{var M=u._violinScaleGroupStats[c.scalegroup];e=\"count\"===c.scalemode?M.maxKDE/g*(M.maxCount/t.pts.length):M.maxKDE/g}if(x){for(f=new Array(T),o=0;o\")),u.color=function(t,e){var r=t[e.dir].marker,n=r.color,a=r.line.color,o=r.line.width;if(i(n))return n;if(i(a)&&o)return a}(h,m),[u]}function k(t){return n(g,t,h[d+\"hoverformat\"])}}},{\"../../components/color\":366,\"../../constants/delta.js\":473,\"../../plots/cartesian/axes\":554,\"../bar/hover\":655}],1109:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\").supplyDefaults,crossTraceDefaults:t(\"./defaults\").crossTraceDefaults,supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\"),crossTraceCalc:t(\"./cross_trace_calc\"),plot:t(\"./plot\"),style:t(\"./style\").style,hoverPoints:t(\"./hover\"),eventData:t(\"./event_data\"),selectPoints:t(\"../bar/select\"),moduleType:\"trace\",name:\"waterfall\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"bar-like\",\"cartesian\",\"svg\",\"oriented\",\"showLegend\",\"zoomScale\"],meta:{}}},{\"../../plots/cartesian\":568,\"../bar/select\":660,\"./attributes\":1102,\"./calc\":1103,\"./cross_trace_calc\":1105,\"./defaults\":1106,\"./event_data\":1107,\"./hover\":1108,\"./layout_attributes\":1110,\"./layout_defaults\":1111,\"./plot\":1112,\"./style\":1113}],1110:[function(t,e,r){\"use strict\";e.exports={waterfallmode:{valType:\"enumerated\",values:[\"group\",\"overlay\"],dflt:\"group\",editType:\"calc\"},waterfallgap:{valType:\"number\",min:0,max:1,editType:\"calc\"},waterfallgroupgap:{valType:\"number\",min:0,max:1,dflt:0,editType:\"calc\"}}},{}],1111:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e,r){var a=!1;function o(r,a){return n.coerce(t,e,i,r,a)}for(var s=0;s0&&(m+=h?\"M\"+f[0]+\",\"+d[1]+\"V\"+d[0]:\"M\"+f[1]+\",\"+d[0]+\"H\"+f[0]),\"between\"!==p&&(r.isSum||s path\").each((function(t){if(!t.isBlank){var e=s[t.dir].marker;n.select(this).call(a.fill,e.color).call(a.stroke,e.line.color).call(i.dashLine,e.line.dash,e.line.width).style(\"opacity\",s.selectedpoints&&!t.selected?o:1)}})),c(r,s,t),r.selectAll(\".lines\").each((function(){var t=s.connector.line;i.lineGroupStyle(n.select(this).selectAll(\"path\"),t.width,t.color,t.dash)}))}))}}},{\"../../components/color\":366,\"../../components/drawing\":388,\"../../constants/interactions\":478,\"../bar/style\":662,\"../bar/uniform_text\":664,\"@plotly/d3\":58}],1114:[function(t,e,r){\"use strict\";var n=t(\"../plots/cartesian/axes\"),i=t(\"../lib\"),a=t(\"../plot_api/plot_schema\"),o=t(\"./helpers\").pointsAccessorFunction,s=t(\"../constants/numerical\").BADNUM;r.moduleType=\"transform\",r.name=\"aggregate\";var l=r.attributes={enabled:{valType:\"boolean\",dflt:!0,editType:\"calc\"},groups:{valType:\"string\",strict:!0,noBlank:!0,arrayOk:!0,dflt:\"x\",editType:\"calc\"},aggregations:{_isLinkedToArray:\"aggregation\",target:{valType:\"string\",editType:\"calc\"},func:{valType:\"enumerated\",values:[\"count\",\"sum\",\"avg\",\"median\",\"mode\",\"rms\",\"stddev\",\"min\",\"max\",\"first\",\"last\",\"change\",\"range\"],dflt:\"first\",editType:\"calc\"},funcmode:{valType:\"enumerated\",values:[\"sample\",\"population\"],dflt:\"sample\",editType:\"calc\"},enabled:{valType:\"boolean\",dflt:!0,editType:\"calc\"},editType:\"calc\"},editType:\"calc\"},c=l.aggregations;function u(t,e,r,a){if(a.enabled){for(var o=a.target,l=i.nestedProperty(e,o),c=l.get(),u=function(t,e){var r=t.func,n=e.d2c,a=e.c2d;switch(r){case\"count\":return f;case\"first\":return h;case\"last\":return p;case\"sum\":return function(t,e){for(var r=0,i=0;ii&&(i=u,o=c)}}return i?a(o):s};case\"rms\":return function(t,e){for(var r=0,i=0,o=0;o\":return function(t){return h(t)>s};case\">=\":return function(t){return h(t)>=s};case\"[]\":return function(t){var e=h(t);return e>=s[0]&&e<=s[1]};case\"()\":return function(t){var e=h(t);return e>s[0]&&e=s[0]&&es[0]&&e<=s[1]};case\"][\":return function(t){var e=h(t);return e<=s[0]||e>=s[1]};case\")(\":return function(t){var e=h(t);return es[1]};case\"](\":return function(t){var e=h(t);return e<=s[0]||e>s[1]};case\")[\":return function(t){var e=h(t);return e=s[1]};case\"{}\":return function(t){return-1!==s.indexOf(h(t))};case\"}{\":return function(t){return-1===s.indexOf(h(t))}}}(r,a.getDataToCoordFunc(t,e,s,i),h),x={},b={},_=0;d?(m=function(t){x[t.astr]=n.extendDeep([],t.get()),t.set(new Array(f))},v=function(t,e){var r=x[t.astr][e];t.get()[e]=r}):(m=function(t){x[t.astr]=n.extendDeep([],t.get()),t.set([])},v=function(t,e){var r=x[t.astr][e];t.get().push(r)}),k(m);for(var w=o(e.transforms,r),T=0;T1?\"%{group} (%{trace})\":\"%{group}\");var l=t.styles,c=o.styles=[];if(l)for(a=0;a0?o-4:o;for(r=0;r>16&255,l[u++]=e>>8&255,l[u++]=255&e;2===s&&(e=i[t.charCodeAt(r)]<<2|i[t.charCodeAt(r+1)]>>4,l[u++]=255&e);1===s&&(e=i[t.charCodeAt(r)]<<10|i[t.charCodeAt(r+1)]<<4|i[t.charCodeAt(r+2)]>>2,l[u++]=e>>8&255,l[u++]=255&e);return l},r.fromByteArray=function(t){for(var e,r=t.length,i=r%3,a=[],o=0,s=r-i;os?s:o+16383));1===i?(e=t[r-1],a.push(n[e>>2]+n[e<<4&63]+\"==\")):2===i&&(e=(t[r-2]<<8)+t[r-1],a.push(n[e>>10]+n[e>>4&63]+n[e<<2&63]+\"=\"));return a.join(\"\")};for(var n=[],i=[],a=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",s=0,l=o.length;s0)throw new Error(\"Invalid string. Length must be a multiple of 4\");var r=t.indexOf(\"=\");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function u(t,e,r){for(var i,a,o=[],s=e;s>18&63]+n[a>>12&63]+n[a>>6&63]+n[63&a]);return o.join(\"\")}i[\"-\".charCodeAt(0)]=62,i[\"_\".charCodeAt(0)]=63},{}],2:[function(t,e,r){},{}],3:[function(t,e,r){(function(e){(function(){\n", "/*!\n", " * The buffer module from node.js, for the browser.\n", " *\n", @@ -185,7 +185,7 @@ " * Copyright (c) 2014-2015, Jon Schlinkert.\n", " * Licensed under the MIT License.\n", " */\n", - "\"use strict\";var n,i=\"\";e.exports=function(t,e){if(\"string\"!=typeof t)throw new TypeError(\"expected a string\");if(1===e)return t;if(2===e)return t+t;var r=t.length*e;if(n!==t||void 0===n)n=t,i=\"\";else if(i.length>=r)return i.substr(0,r);for(;r>i.length&&e>1;)1&e&&(i+=t),e>>=1,t+=t;return i=(i+=t).substr(0,r)}},{}],278:[function(t,e,r){(function(t){(function(){e.exports=t.performance&&t.performance.now?function(){return performance.now()}:Date.now||function(){return+new Date}}).call(this)}).call(this,void 0!==n?n:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],279:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e=t.length,r=t[t.length-1],n=e,i=e-2;i>=0;--i){var a=r,o=t[i];(l=o-((r=a+o)-a))&&(t[--n]=r,r=l)}var s=0;for(i=n;i0){if(a<=0)return o;n=i+a}else{if(!(i<0))return o;if(a>=0)return o;n=-(i+a)}var s=33306690738754716e-32*n;return o>=s||o<=-s?o:f(t,e,r)},function(t,e,r,n){var i=t[0]-n[0],a=e[0]-n[0],o=r[0]-n[0],s=t[1]-n[1],l=e[1]-n[1],c=r[1]-n[1],u=t[2]-n[2],f=e[2]-n[2],p=r[2]-n[2],d=a*c,g=o*l,m=o*s,v=i*c,y=i*l,x=a*s,b=u*(d-g)+f*(m-v)+p*(y-x),_=7771561172376103e-31*((Math.abs(d)+Math.abs(g))*Math.abs(u)+(Math.abs(m)+Math.abs(v))*Math.abs(f)+(Math.abs(y)+Math.abs(x))*Math.abs(p));return b>_||-b>_?b:h(t,e,r,n)}];function d(t){var e=p[t.length];return e||(e=p[t.length]=u(t.length)),e.apply(void 0,t)}function g(t,e,r,n,i,a,o){return function(e,r,s,l,c){switch(arguments.length){case 0:case 1:return 0;case 2:return n(e,r);case 3:return i(e,r,s);case 4:return a(e,r,s,l);case 5:return o(e,r,s,l,c)}for(var u=new Array(arguments.length),f=0;f0&&o>0||a<0&&o<0)return!1;var s=n(r,t,e),l=n(i,t,e);if(s>0&&l>0||s<0&&l<0)return!1;if(0===a&&0===o&&0===s&&0===l)return function(t,e,r,n){for(var i=0;i<2;++i){var a=t[i],o=e[i],s=Math.min(a,o),l=Math.max(a,o),c=r[i],u=n[i],f=Math.min(c,u);if(Math.max(c,u)=n?(i=f,(l+=1)=n?(i=f,(l+=1)>1,c=e[2*l+1];if(c===a)return l;a>1,c=e[2*l+1];if(c===a)return l;a>1,c=e[2*l+1];if(c===a)return l;a>1,s=a(t[o],e);s<=0?(0===s&&(i=o),r=o+1):s>0&&(n=o-1)}return i}function u(t,e){for(var r=new Array(t.length),i=0,o=r.length;i=t.length||0!==a(t[m],s)););}return r}function f(t,e){if(e<0)return[];for(var r=[],i=(1<>>u&1&&c.push(i[u]);e.push(c)}return s(e)},r.skeleton=f,r.boundary=function(t){for(var e=[],r=0,n=t.length;r>1:(t>>1)-1}function x(t){for(var e=v(t);;){var r=e,n=2*t+1,i=2*(t+1),a=t;if(n0;){var r=y(t);if(r>=0)if(e0){var t=k[0];return m(0,M-1),M-=1,x(0),t}return-1}function w(t,e){var r=k[t];return c[r]===e?t:(c[r]=-1/0,b(t),_(),c[r]=e,b((M+=1)-1))}function T(t){if(!u[t]){u[t]=!0;var e=s[t],r=l[t];s[r]>=0&&(s[r]=e),l[e]>=0&&(l[e]=r),A[e]>=0&&w(A[e],g(e)),A[r]>=0&&w(A[r],g(r))}}var k=[],A=new Array(a);for(f=0;f>1;f>=0;--f)x(f);for(;;){var S=_();if(S<0||c[S]>r)break;T(S)}var E=[];for(f=0;f=0&&r>=0&&e!==r){var n=A[e],i=A[r];n!==i&&C.push([n,i])}})),i.unique(i.normalize(C)),{positions:E,edges:C}};var n=t(\"robust-orientation\"),i=t(\"simplicial-complex\")},{\"robust-orientation\":284,\"simplicial-complex\":295}],298:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r,a,o,s;if(e[0][0]e[1][0]))return i(e,t);r=e[1],a=e[0]}if(t[0][0]t[1][0]))return-i(t,e);o=t[1],s=t[0]}var l=n(r,a,s),c=n(r,a,o);if(l<0){if(c<=0)return l}else if(l>0){if(c>=0)return l}else if(c)return c;if(l=n(s,o,a),c=n(s,o,r),l<0){if(c<=0)return l}else if(l>0){if(c>=0)return l}else if(c)return c;return a[0]-s[0]};var n=t(\"robust-orientation\");function i(t,e){var r,i,a,o;if(e[0][0]e[1][0])){var s=Math.min(t[0][1],t[1][1]),l=Math.max(t[0][1],t[1][1]),c=Math.min(e[0][1],e[1][1]),u=Math.max(e[0][1],e[1][1]);return lu?s-u:l-u}r=e[1],i=e[0]}t[0][1]0)if(e[0]!==o[1][0])r=t,t=t.right;else{if(l=c(t.right,e))return l;t=t.left}else{if(e[0]!==o[1][0])return t;var l;if(l=c(t.right,e))return l;t=t.left}}return r}function u(t,e,r,n){this.y=t,this.index=e,this.start=r,this.closed=n}function f(t,e,r,n){this.x=t,this.segment=e,this.create=r,this.index=n}s.prototype.castUp=function(t){var e=n.le(this.coordinates,t[0]);if(e<0)return-1;this.slabs[e];var r=c(this.slabs[e],t),i=-1;if(r&&(i=r.value),this.coordinates[e]===t[0]){var s=null;if(r&&(s=r.key),e>0){var u=c(this.slabs[e-1],t);u&&(s?o(u.key,s)>0&&(s=u.key,i=u.value):(i=u.value,s=u.key))}var f=this.horizontal[e];if(f.length>0){var h=n.ge(f,t[1],l);if(h=f.length)return i;p=f[h]}}if(p.start)if(s){var d=a(s[0],s[1],[t[0],p.y]);s[0][0]>s[1][0]&&(d=-d),d>0&&(i=p.index)}else i=p.index;else p.y!==t[1]&&(i=p.index)}}}return i}},{\"./lib/order-segments\":298,\"binary-search-bounds\":31,\"functional-red-black-tree\":69,\"robust-orientation\":284}],300:[function(t,e,r){\"use strict\";var n=t(\"robust-dot-product\"),i=t(\"robust-sum\");function a(t,e){var r=i(n(t,e),[e[e.length-1]]);return r[r.length-1]}function o(t,e,r,n){var i=-e/(n-e);i<0?i=0:i>1&&(i=1);for(var a=1-i,o=t.length,s=new Array(o),l=0;l0||i>0&&u<0){var f=o(s,u,l,i);r.push(f),n.push(f.slice())}u<0?n.push(l.slice()):u>0?r.push(l.slice()):(r.push(l.slice()),n.push(l.slice())),i=u}return{positive:r,negative:n}},e.exports.positive=function(t,e){for(var r=[],n=a(t[t.length-1],e),i=t[t.length-1],s=t[0],l=0;l0||n>0&&c<0)&&r.push(o(i,c,s,n)),c>=0&&r.push(s.slice()),n=c}return r},e.exports.negative=function(t,e){for(var r=[],n=a(t[t.length-1],e),i=t[t.length-1],s=t[0],l=0;l0||n>0&&c<0)&&r.push(o(i,c,s,n)),c<=0&&r.push(s.slice()),n=c}return r}},{\"robust-dot-product\":281,\"robust-sum\":289}],301:[function(t,e,r){!function(){\"use strict\";var t={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\\x25]+/,modulo:/^\\x25{2}/,placeholder:/^\\x25(?:([1-9]\\d*)\\$|\\(([^)]+)\\))?(\\+)?(0|'[^$])?(-)?(\\d+)?(?:\\.(\\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\\d]*)/i,key_access:/^\\.([a-z_][a-z_\\d]*)/i,index_access:/^\\[(\\d+)\\]/,sign:/^[+-]/};function e(t){return i(o(t),arguments)}function n(t,r){return e.apply(null,[t].concat(r||[]))}function i(r,n){var i,a,o,s,l,c,u,f,h,p=1,d=r.length,g=\"\";for(a=0;a=0),s.type){case\"b\":i=parseInt(i,10).toString(2);break;case\"c\":i=String.fromCharCode(parseInt(i,10));break;case\"d\":case\"i\":i=parseInt(i,10);break;case\"j\":i=JSON.stringify(i,null,s.width?parseInt(s.width):0);break;case\"e\":i=s.precision?parseFloat(i).toExponential(s.precision):parseFloat(i).toExponential();break;case\"f\":i=s.precision?parseFloat(i).toFixed(s.precision):parseFloat(i);break;case\"g\":i=s.precision?String(Number(i.toPrecision(s.precision))):parseFloat(i);break;case\"o\":i=(parseInt(i,10)>>>0).toString(8);break;case\"s\":i=String(i),i=s.precision?i.substring(0,s.precision):i;break;case\"t\":i=String(!!i),i=s.precision?i.substring(0,s.precision):i;break;case\"T\":i=Object.prototype.toString.call(i).slice(8,-1).toLowerCase(),i=s.precision?i.substring(0,s.precision):i;break;case\"u\":i=parseInt(i,10)>>>0;break;case\"v\":i=i.valueOf(),i=s.precision?i.substring(0,s.precision):i;break;case\"x\":i=(parseInt(i,10)>>>0).toString(16);break;case\"X\":i=(parseInt(i,10)>>>0).toString(16).toUpperCase()}t.json.test(s.type)?g+=i:(!t.number.test(s.type)||f&&!s.sign?h=\"\":(h=f?\"+\":\"-\",i=i.toString().replace(t.sign,\"\")),c=s.pad_char?\"0\"===s.pad_char?\"0\":s.pad_char.charAt(1):\" \",u=s.width-(h+i).length,l=s.width&&u>0?c.repeat(u):\"\",g+=s.align?h+i+l:\"0\"===c?h+l+i:l+h+i)}return g}var a=Object.create(null);function o(e){if(a[e])return a[e];for(var r,n=e,i=[],o=0;n;){if(null!==(r=t.text.exec(n)))i.push(r[0]);else if(null!==(r=t.modulo.exec(n)))i.push(\"%\");else{if(null===(r=t.placeholder.exec(n)))throw new SyntaxError(\"[sprintf] unexpected placeholder\");if(r[2]){o|=1;var s=[],l=r[2],c=[];if(null===(c=t.key.exec(l)))throw new SyntaxError(\"[sprintf] failed to parse named argument key\");for(s.push(c[1]);\"\"!==(l=l.substring(c[0].length));)if(null!==(c=t.key_access.exec(l)))s.push(c[1]);else{if(null===(c=t.index_access.exec(l)))throw new SyntaxError(\"[sprintf] failed to parse named argument key\");s.push(c[1])}r[2]=s}else o|=2;if(3===o)throw new Error(\"[sprintf] mixing positional and named placeholders is not (yet) supported\");i.push({placeholder:r[0],param_no:r[1],keys:r[2],sign:r[3],pad_char:r[4],align:r[5],width:r[6],precision:r[7],type:r[8]})}n=n.substring(r[0].length)}return a[e]=i}void 0!==r&&(r.sprintf=e,r.vsprintf=n),\"undefined\"!=typeof window&&(window.sprintf=e,window.vsprintf=n)}()},{}],302:[function(t,e,r){\"use strict\";e.exports=function(t,e){if(t.dimension<=0)return{positions:[],cells:[]};if(1===t.dimension)return function(t,e){for(var r=i(t,e),n=r.length,a=new Array(n),o=new Array(n),s=0;sn|0},vertex:function(t,e,r,n,i,a,o,s,l,c,u,f,h){var p=(o<<0)+(s<<1)+(l<<2)+(c<<3)|0;if(0!==p&&15!==p)switch(p){case 0:u.push([t-.5,e-.5]);break;case 1:u.push([t-.25-.25*(n+r-2*h)/(r-n),e-.25-.25*(i+r-2*h)/(r-i)]);break;case 2:u.push([t-.75-.25*(-n-r+2*h)/(n-r),e-.25-.25*(a+n-2*h)/(n-a)]);break;case 3:u.push([t-.5,e-.5-.5*(i+r+a+n-4*h)/(r-i+n-a)]);break;case 4:u.push([t-.25-.25*(a+i-2*h)/(i-a),e-.75-.25*(-i-r+2*h)/(i-r)]);break;case 5:u.push([t-.5-.5*(n+r+a+i-4*h)/(r-n+i-a),e-.5]);break;case 6:u.push([t-.5-.25*(-n-r+a+i)/(n-r+i-a),e-.5-.25*(-i-r+a+n)/(i-r+n-a)]);break;case 7:u.push([t-.75-.25*(a+i-2*h)/(i-a),e-.75-.25*(a+n-2*h)/(n-a)]);break;case 8:u.push([t-.75-.25*(-a-i+2*h)/(a-i),e-.75-.25*(-a-n+2*h)/(a-n)]);break;case 9:u.push([t-.5-.25*(n+r+-a-i)/(r-n+a-i),e-.5-.25*(i+r+-a-n)/(r-i+a-n)]);break;case 10:u.push([t-.5-.5*(-n-r-a-i+4*h)/(n-r+a-i),e-.5]);break;case 11:u.push([t-.25-.25*(-a-i+2*h)/(a-i),e-.75-.25*(i+r-2*h)/(r-i)]);break;case 12:u.push([t-.5,e-.5-.5*(-i-r-a-n+4*h)/(i-r+a-n)]);break;case 13:u.push([t-.75-.25*(n+r-2*h)/(r-n),e-.25-.25*(-a-n+2*h)/(a-n)]);break;case 14:u.push([t-.25-.25*(-n-r+2*h)/(n-r),e-.25-.25*(-i-r+2*h)/(i-r)]);break;case 15:u.push([t-.5,e-.5])}},cell:function(t,e,r,n,i,a,o,s,l){i?s.push([t,e]):s.push([e,t])}});return function(t,e){var r=[],i=[];return n(t,r,i,e),{positions:r,cells:i}}}};var o={}},{\"ndarray-extract-contour\":251,\"zero-crossings\":318}],303:[function(t,e,r){(function(r){(function(){\"use strict\";e.exports=function t(e,r,i){i=i||{};var o=a[e];o||(o=a[e]={\" \":{data:new Float32Array(0),shape:.2}});var s=o[r];if(!s)if(r.length<=1||!/\\d/.test(r))s=o[r]=function(t){for(var e=t.cells,r=t.positions,n=new Float32Array(6*e.length),i=0,a=0,o=0;o0&&(f+=.02);var p=new Float32Array(u),d=0,g=-.5*f;for(h=0;hMath.max(r,n)?i[2]=1:r>Math.max(e,n)?i[0]=1:i[1]=1;for(var a=0,o=0,l=0;l<3;++l)a+=t[l]*t[l],o+=i[l]*t[l];for(l=0;l<3;++l)i[l]-=o/a*t[l];return s(i,i),i}function h(t,e,r,i,a,o,s,l){this.center=n(r),this.up=n(i),this.right=n(a),this.radius=n([o]),this.angle=n([s,l]),this.angle.bounds=[[-1/0,-Math.PI/2],[1/0,Math.PI/2]],this.setDistanceLimits(t,e),this.computedCenter=this.center.curve(0),this.computedUp=this.up.curve(0),this.computedRight=this.right.curve(0),this.computedRadius=this.radius.curve(0),this.computedAngle=this.angle.curve(0),this.computedToward=[0,0,0],this.computedEye=[0,0,0],this.computedMatrix=new Array(16);for(var c=0;c<16;++c)this.computedMatrix[c]=.5;this.recalcMatrix(0)}var p=h.prototype;p.setDistanceLimits=function(t,e){t=t>0?Math.log(t):-1/0,e=e>0?Math.log(e):1/0,e=Math.max(e,t),this.radius.bounds[0][0]=t,this.radius.bounds[1][0]=e},p.getDistanceLimits=function(t){var e=this.radius.bounds[0];return t?(t[0]=Math.exp(e[0][0]),t[1]=Math.exp(e[1][0]),t):[Math.exp(e[0][0]),Math.exp(e[1][0])]},p.recalcMatrix=function(t){this.center.curve(t),this.up.curve(t),this.right.curve(t),this.radius.curve(t),this.angle.curve(t);for(var e=this.computedUp,r=this.computedRight,n=0,i=0,a=0;a<3;++a)i+=e[a]*r[a],n+=e[a]*e[a];var l=Math.sqrt(n),u=0;for(a=0;a<3;++a)r[a]-=e[a]*i/n,u+=r[a]*r[a],e[a]/=l;var f=Math.sqrt(u);for(a=0;a<3;++a)r[a]/=f;var h=this.computedToward;o(h,e,r),s(h,h);var p=Math.exp(this.computedRadius[0]),d=this.computedAngle[0],g=this.computedAngle[1],m=Math.cos(d),v=Math.sin(d),y=Math.cos(g),x=Math.sin(g),b=this.computedCenter,_=m*y,w=v*y,T=x,k=-m*x,A=-v*x,M=y,S=this.computedEye,E=this.computedMatrix;for(a=0;a<3;++a){var L=_*r[a]+w*h[a]+T*e[a];E[4*a+1]=k*r[a]+A*h[a]+M*e[a],E[4*a+2]=L,E[4*a+3]=0}var C=E[1],P=E[5],I=E[9],O=E[2],z=E[6],D=E[10],R=P*D-I*z,F=I*O-C*D,B=C*z-P*O,N=c(R,F,B);R/=N,F/=N,B/=N,E[0]=R,E[4]=F,E[8]=B;for(a=0;a<3;++a)S[a]=b[a]+E[2+4*a]*p;for(a=0;a<3;++a){u=0;for(var j=0;j<3;++j)u+=E[a+4*j]*S[j];E[12+a]=-u}E[15]=1},p.getMatrix=function(t,e){this.recalcMatrix(t);var r=this.computedMatrix;if(e){for(var n=0;n<16;++n)e[n]=r[n];return e}return r};var d=[0,0,0];p.rotate=function(t,e,r,n){if(this.angle.move(t,e,r),n){this.recalcMatrix(t);var i=this.computedMatrix;d[0]=i[2],d[1]=i[6],d[2]=i[10];for(var o=this.computedUp,s=this.computedRight,l=this.computedToward,c=0;c<3;++c)i[4*c]=o[c],i[4*c+1]=s[c],i[4*c+2]=l[c];a(i,i,n,d);for(c=0;c<3;++c)o[c]=i[4*c],s[c]=i[4*c+1];this.up.set(t,o[0],o[1],o[2]),this.right.set(t,s[0],s[1],s[2])}},p.pan=function(t,e,r,n){e=e||0,r=r||0,n=n||0,this.recalcMatrix(t);var i=this.computedMatrix,a=(Math.exp(this.computedRadius[0]),i[1]),o=i[5],s=i[9],l=c(a,o,s);a/=l,o/=l,s/=l;var u=i[0],f=i[4],h=i[8],p=u*a+f*o+h*s,d=c(u-=a*p,f-=o*p,h-=s*p),g=(u/=d)*e+a*r,m=(f/=d)*e+o*r,v=(h/=d)*e+s*r;this.center.move(t,g,m,v);var y=Math.exp(this.computedRadius[0]);y=Math.max(1e-4,y+n),this.radius.set(t,Math.log(y))},p.translate=function(t,e,r,n){this.center.move(t,e||0,r||0,n||0)},p.setMatrix=function(t,e,r,n){var a=1;\"number\"==typeof r&&(a=0|r),(a<0||a>3)&&(a=1);var o=(a+2)%3;e||(this.recalcMatrix(t),e=this.computedMatrix);var s=e[a],l=e[a+4],f=e[a+8];if(n){var h=Math.abs(s),p=Math.abs(l),d=Math.abs(f),g=Math.max(h,p,d);h===g?(s=s<0?-1:1,l=f=0):d===g?(f=f<0?-1:1,s=l=0):(l=l<0?-1:1,s=f=0)}else{var m=c(s,l,f);s/=m,l/=m,f/=m}var v,y,x=e[o],b=e[o+4],_=e[o+8],w=x*s+b*l+_*f,T=c(x-=s*w,b-=l*w,_-=f*w),k=l*(_/=T)-f*(b/=T),A=f*(x/=T)-s*_,M=s*b-l*x,S=c(k,A,M);if(k/=S,A/=S,M/=S,this.center.jump(t,q,G,Y),this.radius.idle(t),this.up.jump(t,s,l,f),this.right.jump(t,x,b,_),2===a){var E=e[1],L=e[5],C=e[9],P=E*x+L*b+C*_,I=E*k+L*A+C*M;v=R<0?-Math.PI/2:Math.PI/2,y=Math.atan2(I,P)}else{var O=e[2],z=e[6],D=e[10],R=O*s+z*l+D*f,F=O*x+z*b+D*_,B=O*k+z*A+D*M;v=Math.asin(u(R)),y=Math.atan2(B,F)}this.angle.jump(t,y,v),this.recalcMatrix(t);var N=e[2],j=e[6],U=e[10],V=this.computedMatrix;i(V,e);var H=V[15],q=V[12]/H,G=V[13]/H,Y=V[14]/H,W=Math.exp(this.computedRadius[0]);this.center.jump(t,q-N*W,G-j*W,Y-U*W)},p.lastT=function(){return Math.max(this.center.lastT(),this.up.lastT(),this.right.lastT(),this.radius.lastT(),this.angle.lastT())},p.idle=function(t){this.center.idle(t),this.up.idle(t),this.right.idle(t),this.radius.idle(t),this.angle.idle(t)},p.flush=function(t){this.center.flush(t),this.up.flush(t),this.right.flush(t),this.radius.flush(t),this.angle.flush(t)},p.setDistance=function(t,e){e>0&&this.radius.set(t,Math.log(e))},p.lookAt=function(t,e,r,n){this.recalcMatrix(t),e=e||this.computedEye,r=r||this.computedCenter;var i=(n=n||this.computedUp)[0],a=n[1],o=n[2],s=c(i,a,o);if(!(s<1e-6)){i/=s,a/=s,o/=s;var l=e[0]-r[0],f=e[1]-r[1],h=e[2]-r[2],p=c(l,f,h);if(!(p<1e-6)){l/=p,f/=p,h/=p;var d=this.computedRight,g=d[0],m=d[1],v=d[2],y=i*g+a*m+o*v,x=c(g-=y*i,m-=y*a,v-=y*o);if(!(x<.01&&(x=c(g=a*h-o*f,m=o*l-i*h,v=i*f-a*l))<1e-6)){g/=x,m/=x,v/=x,this.up.set(t,i,a,o),this.right.set(t,g,m,v),this.center.set(t,r[0],r[1],r[2]),this.radius.set(t,Math.log(p));var b=a*v-o*m,_=o*g-i*v,w=i*m-a*g,T=c(b,_,w),k=i*l+a*f+o*h,A=g*l+m*f+v*h,M=(b/=T)*l+(_/=T)*f+(w/=T)*h,S=Math.asin(u(k)),E=Math.atan2(M,A),L=this.angle._state,C=L[L.length-1],P=L[L.length-2];C%=2*Math.PI;var I=Math.abs(C+2*Math.PI-E),O=Math.abs(C-E),z=Math.abs(C-2*Math.PI-E);I0?r.pop():new ArrayBuffer(t)}function d(t){return new Uint8Array(p(t),0,t)}function g(t){return new Uint16Array(p(2*t),0,t)}function m(t){return new Uint32Array(p(4*t),0,t)}function v(t){return new Int8Array(p(t),0,t)}function y(t){return new Int16Array(p(2*t),0,t)}function x(t){return new Int32Array(p(4*t),0,t)}function b(t){return new Float32Array(p(4*t),0,t)}function _(t){return new Float64Array(p(8*t),0,t)}function w(t){return o?new Uint8ClampedArray(p(t),0,t):d(t)}function T(t){return s?new BigUint64Array(p(8*t),0,t):null}function k(t){return l?new BigInt64Array(p(8*t),0,t):null}function A(t){return new DataView(p(t),0,t)}function M(t){t=n.nextPow2(t);var e=n.log2(t),r=f[e];return r.length>0?r.pop():new a(t)}r.free=function(t){if(a.isBuffer(t))f[n.log2(t.length)].push(t);else{if(\"[object ArrayBuffer]\"!==Object.prototype.toString.call(t)&&(t=t.buffer),!t)return;var e=t.length||t.byteLength,r=0|n.log2(e);u[r].push(t)}},r.freeUint8=r.freeUint16=r.freeUint32=r.freeBigUint64=r.freeInt8=r.freeInt16=r.freeInt32=r.freeBigInt64=r.freeFloat32=r.freeFloat=r.freeFloat64=r.freeDouble=r.freeUint8Clamped=r.freeDataView=function(t){h(t.buffer)},r.freeArrayBuffer=h,r.freeBuffer=function(t){f[n.log2(t.length)].push(t)},r.malloc=function(t,e){if(void 0===e||\"arraybuffer\"===e)return p(t);switch(e){case\"uint8\":return d(t);case\"uint16\":return g(t);case\"uint32\":return m(t);case\"int8\":return v(t);case\"int16\":return y(t);case\"int32\":return x(t);case\"float\":case\"float32\":return b(t);case\"double\":case\"float64\":return _(t);case\"uint8_clamped\":return w(t);case\"bigint64\":return k(t);case\"biguint64\":return T(t);case\"buffer\":return M(t);case\"data\":case\"dataview\":return A(t);default:return null}return null},r.mallocArrayBuffer=p,r.mallocUint8=d,r.mallocUint16=g,r.mallocUint32=m,r.mallocInt8=v,r.mallocInt16=y,r.mallocInt32=x,r.mallocFloat32=r.mallocFloat=b,r.mallocFloat64=r.mallocDouble=_,r.mallocUint8Clamped=w,r.mallocBigUint64=T,r.mallocBigInt64=k,r.mallocDataView=A,r.mallocBuffer=M,r.clearCache=function(){for(var t=0;t<32;++t)c.UINT8[t].length=0,c.UINT16[t].length=0,c.UINT32[t].length=0,c.INT8[t].length=0,c.INT16[t].length=0,c.INT32[t].length=0,c.FLOAT[t].length=0,c.DOUBLE[t].length=0,c.BIGUINT64[t].length=0,c.BIGINT64[t].length=0,c.UINT8C[t].length=0,u[t].length=0,f[t].length=0}}).call(this)}).call(this,void 0!==n?n:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"bit-twiddle\":32,buffer:3,dup:65}],309:[function(t,e,r){\"use strict\";function n(t){this.roots=new Array(t),this.ranks=new Array(t);for(var e=0;e0&&(a=n.size),n.lineSpacing&&n.lineSpacing>0&&(o=n.lineSpacing),n.styletags&&n.styletags.breaklines&&(s.breaklines=!!n.styletags.breaklines),n.styletags&&n.styletags.bolds&&(s.bolds=!!n.styletags.bolds),n.styletags&&n.styletags.italics&&(s.italics=!!n.styletags.italics),n.styletags&&n.styletags.subscripts&&(s.subscripts=!!n.styletags.subscripts),n.styletags&&n.styletags.superscripts&&(s.superscripts=!!n.styletags.superscripts));return r.font=[n.fontStyle,n.fontVariant,n.fontWeight,a+\"px\",n.font].filter((function(t){return t})).join(\" \"),r.textAlign=\"start\",r.textBaseline=\"alphabetic\",r.direction=\"ltr\",h(function(t,e,r,n,a,o){r=r.replace(/\\n/g,\"\"),r=!0===o.breaklines?r.replace(/\\/g,\"\\n\"):r.replace(/\\/g,\" \");var s=\"\",l=[];for(p=0;p-1?parseInt(t[1+i]):0,l=a>-1?parseInt(r[1+a]):0;s!==l&&(n=n.replace(S(),\"?px \"),m*=Math.pow(.75,l-s),n=n.replace(\"?px \",S())),g+=.25*x*(l-s)}if(!0===o.superscripts){var c=t.indexOf(\"+\"),u=r.indexOf(\"+\"),f=c>-1?parseInt(t[1+c]):0,h=u>-1?parseInt(r[1+u]):0;f!==h&&(n=n.replace(S(),\"?px \"),m*=Math.pow(.75,h-f),n=n.replace(\"?px \",S())),g-=.25*x*(h-f)}if(!0===o.bolds){var p=t.indexOf(\"b|\")>-1,d=r.indexOf(\"b|\")>-1;!p&&d&&(n=v?n.replace(\"italic \",\"italic bold \"):\"bold \"+n),p&&!d&&(n=n.replace(\"bold \",\"\"))}if(!0===o.italics){var v=t.indexOf(\"i|\")>-1,y=r.indexOf(\"i|\")>-1;!v&&y&&(n=\"italic \"+n),v&&!y&&(n=n.replace(\"italic \",\"\"))}e.font=n}for(h=0;h\",a=\"\",o=i.length,s=a.length,l=\"+\"===e[0]||\"-\"===e[0],c=0,u=-s;c>-1&&-1!==(c=r.indexOf(i,c))&&-1!==(u=r.indexOf(a,c+o))&&!(u<=c);){for(var f=c;f=u)n[f]=null,r=r.substr(0,f)+\" \"+r.substr(f+1);else if(null!==n[f]){var h=n[f].indexOf(e[0]);-1===h?n[f]+=e:l&&(n[f]=n[f].substr(0,h+1)+(1+parseInt(n[f][h+1]))+n[f].substr(h+2))}var p=c+o,d=r.substr(p,u-p).indexOf(i);c=-1!==d?d:u+s}return n}function u(t,e){var r=n(t,128);return e?a(r.cells,r.positions,.25):{edges:r.cells,positions:r.positions}}function f(t,e,r,n){var i=u(t,n),a=function(t,e,r){for(var n=e.textAlign||\"start\",i=e.textBaseline||\"alphabetic\",a=[1<<30,1<<30],o=[0,0],s=t.length,l=0;l=0?e[a]:i}))},has___:{value:y((function(e){var n=v(e);return n?r in n:t.indexOf(e)>=0}))},set___:{value:y((function(n,i){var a,o=v(n);return o?o[r]=i:(a=t.indexOf(n))>=0?e[a]=i:(a=t.length,e[a]=i,t[a]=n),this}))},delete___:{value:y((function(n){var i,a,o=v(n);return o?r in o&&delete o[r]:!((i=t.indexOf(n))<0)&&(a=t.length-1,t[i]=void 0,e[i]=e[a],t[i]=t[a],t.length=a,e.length=a,!0)}))}})};d.prototype=Object.create(Object.prototype,{get:{value:function(t,e){return this.get___(t,e)},writable:!0,configurable:!0},has:{value:function(t){return this.has___(t)},writable:!0,configurable:!0},set:{value:function(t,e){return this.set___(t,e)},writable:!0,configurable:!0},delete:{value:function(t){return this.delete___(t)},writable:!0,configurable:!0}}),\"function\"==typeof r?function(){function n(){this instanceof d||x();var e,n=new r,i=void 0,a=!1;return e=t?function(t,e){return n.set(t,e),n.has(t)||(i||(i=new d),i.set(t,e)),this}:function(t,e){if(a)try{n.set(t,e)}catch(r){i||(i=new d),i.set___(t,e)}else n.set(t,e);return this},Object.create(d.prototype,{get___:{value:y((function(t,e){return i?n.has(t)?n.get(t):i.get___(t,e):n.get(t,e)}))},has___:{value:y((function(t){return n.has(t)||!!i&&i.has___(t)}))},set___:{value:y(e)},delete___:{value:y((function(t){var e=!!n.delete(t);return i&&i.delete___(t)||e}))},permitHostObjects___:{value:y((function(t){if(t!==g)throw new Error(\"bogus call to permitHostObjects___\");a=!0}))}})}t&&\"undefined\"!=typeof Proxy&&(Proxy=void 0),n.prototype=d.prototype,e.exports=n,Object.defineProperty(WeakMap.prototype,\"constructor\",{value:WeakMap,enumerable:!1,configurable:!0,writable:!0})}():(\"undefined\"!=typeof Proxy&&(Proxy=void 0),e.exports=d)}function g(t){t.permitHostObjects___&&t.permitHostObjects___(g)}function m(t){return!(\"weakmap:\"==t.substr(0,\"weakmap:\".length)&&\"___\"===t.substr(t.length-3))}function v(t){if(t!==Object(t))throw new TypeError(\"Not an object: \"+t);var e=t[l];if(e&&e.key===t)return e;if(s(t)){e={key:t};try{return o(t,l,{value:e,writable:!1,enumerable:!1,configurable:!1}),e}catch(t){return}}}function y(t){return t.prototype=null,Object.freeze(t)}function x(){h||\"undefined\"==typeof console||(h=!0,console.warn(\"WeakMap should be invoked as new WeakMap(), not WeakMap(). This will be an error in the future.\"))}}()},{}],314:[function(t,e,r){var n=t(\"./hidden-store.js\");e.exports=function(){var t={};return function(e){if((\"object\"!=typeof e||null===e)&&\"function\"!=typeof e)throw new Error(\"Weakmap-shim: Key must be object\");var r=e.valueOf(t);return r&&r.identity===t?r:n(e,t)}}},{\"./hidden-store.js\":315}],315:[function(t,e,r){e.exports=function(t,e){var r={identity:e},n=t.valueOf;return Object.defineProperty(t,\"valueOf\",{value:function(t){return t!==e?n.apply(this,arguments):r},writable:!0}),r}},{}],316:[function(t,e,r){var n=t(\"./create-store.js\");e.exports=function(){var t=n();return{get:function(e,r){var n=t(e);return n.hasOwnProperty(\"value\")?n.value:r},set:function(e,r){return t(e).value=r,this},has:function(e){return\"value\"in t(e)},delete:function(e){return delete t(e).value}}}},{\"./create-store.js\":314}],317:[function(t,e,r){\"use strict\";var n,i=function(){return function(t,e,r,n,i,a){var o=t[0],s=r[0],l=[0],c=s;n|=0;var u=0,f=s;for(u=0;u=0!=p>=0&&i.push(l[0]+.5+.5*(h+p)/(h-p)),n+=f,++l[0]}}};e.exports=(n={funcName:{funcName:\"zeroCrossings\"}.funcName},function(t){var e={};return function(r,n,i){var a=r.dtype,o=r.order,s=[a,o.join()].join(),l=e[s];return l||(e[s]=l=t([a,o])),l(r.shape.slice(0),r.data,r.stride,0|r.offset,n,i)}}(i.bind(void 0,n)))},{}],318:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r=[];return e=+e||0,n(t.hi(t.shape[0]-1),r,e),r};var n=t(\"./lib/zc-core\")},{\"./lib/zc-core\":317}]},{},[6])(6)}))}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}]},{},[27])(27)}));\n", + "\"use strict\";var n,i=\"\";e.exports=function(t,e){if(\"string\"!=typeof t)throw new TypeError(\"expected a string\");if(1===e)return t;if(2===e)return t+t;var r=t.length*e;if(n!==t||void 0===n)n=t,i=\"\";else if(i.length>=r)return i.substr(0,r);for(;r>i.length&&e>1;)1&e&&(i+=t),e>>=1,t+=t;return i=(i+=t).substr(0,r)}},{}],278:[function(t,e,r){(function(t){(function(){e.exports=t.performance&&t.performance.now?function(){return performance.now()}:Date.now||function(){return+new Date}}).call(this)}).call(this,void 0!==n?n:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],279:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e=t.length,r=t[t.length-1],n=e,i=e-2;i>=0;--i){var a=r,o=t[i];(l=o-((r=a+o)-a))&&(t[--n]=r,r=l)}var s=0;for(i=n;i0){if(a<=0)return o;n=i+a}else{if(!(i<0))return o;if(a>=0)return o;n=-(i+a)}var s=33306690738754716e-32*n;return o>=s||o<=-s?o:f(t,e,r)},function(t,e,r,n){var i=t[0]-n[0],a=e[0]-n[0],o=r[0]-n[0],s=t[1]-n[1],l=e[1]-n[1],c=r[1]-n[1],u=t[2]-n[2],f=e[2]-n[2],p=r[2]-n[2],d=a*c,g=o*l,m=o*s,v=i*c,y=i*l,x=a*s,b=u*(d-g)+f*(m-v)+p*(y-x),_=7771561172376103e-31*((Math.abs(d)+Math.abs(g))*Math.abs(u)+(Math.abs(m)+Math.abs(v))*Math.abs(f)+(Math.abs(y)+Math.abs(x))*Math.abs(p));return b>_||-b>_?b:h(t,e,r,n)}];function d(t){var e=p[t.length];return e||(e=p[t.length]=u(t.length)),e.apply(void 0,t)}function g(t,e,r,n,i,a,o){return function(e,r,s,l,c){switch(arguments.length){case 0:case 1:return 0;case 2:return n(e,r);case 3:return i(e,r,s);case 4:return a(e,r,s,l);case 5:return o(e,r,s,l,c)}for(var u=new Array(arguments.length),f=0;f0&&o>0||a<0&&o<0)return!1;var s=n(r,t,e),l=n(i,t,e);if(s>0&&l>0||s<0&&l<0)return!1;if(0===a&&0===o&&0===s&&0===l)return function(t,e,r,n){for(var i=0;i<2;++i){var a=t[i],o=e[i],s=Math.min(a,o),l=Math.max(a,o),c=r[i],u=n[i],f=Math.min(c,u);if(Math.max(c,u)=n?(i=f,(l+=1)=n?(i=f,(l+=1)>1,c=e[2*l+1];if(c===a)return l;a>1,c=e[2*l+1];if(c===a)return l;a>1,c=e[2*l+1];if(c===a)return l;a>1,s=a(t[o],e);s<=0?(0===s&&(i=o),r=o+1):s>0&&(n=o-1)}return i}function u(t,e){for(var r=new Array(t.length),i=0,o=r.length;i=t.length||0!==a(t[m],s)););}return r}function f(t,e){if(e<0)return[];for(var r=[],i=(1<>>u&1&&c.push(i[u]);e.push(c)}return s(e)},r.skeleton=f,r.boundary=function(t){for(var e=[],r=0,n=t.length;r>1:(t>>1)-1}function x(t){for(var e=v(t);;){var r=e,n=2*t+1,i=2*(t+1),a=t;if(n0;){var r=y(t);if(r>=0)if(e0){var t=k[0];return m(0,M-1),M-=1,x(0),t}return-1}function w(t,e){var r=k[t];return c[r]===e?t:(c[r]=-1/0,b(t),_(),c[r]=e,b((M+=1)-1))}function T(t){if(!u[t]){u[t]=!0;var e=s[t],r=l[t];s[r]>=0&&(s[r]=e),l[e]>=0&&(l[e]=r),A[e]>=0&&w(A[e],g(e)),A[r]>=0&&w(A[r],g(r))}}var k=[],A=new Array(a);for(f=0;f>1;f>=0;--f)x(f);for(;;){var S=_();if(S<0||c[S]>r)break;T(S)}var E=[];for(f=0;f=0&&r>=0&&e!==r){var n=A[e],i=A[r];n!==i&&C.push([n,i])}})),i.unique(i.normalize(C)),{positions:E,edges:C}};var n=t(\"robust-orientation\"),i=t(\"simplicial-complex\")},{\"robust-orientation\":284,\"simplicial-complex\":295}],298:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r,a,o,s;if(e[0][0]e[1][0]))return i(e,t);r=e[1],a=e[0]}if(t[0][0]t[1][0]))return-i(t,e);o=t[1],s=t[0]}var l=n(r,a,s),c=n(r,a,o);if(l<0){if(c<=0)return l}else if(l>0){if(c>=0)return l}else if(c)return c;if(l=n(s,o,a),c=n(s,o,r),l<0){if(c<=0)return l}else if(l>0){if(c>=0)return l}else if(c)return c;return a[0]-s[0]};var n=t(\"robust-orientation\");function i(t,e){var r,i,a,o;if(e[0][0]e[1][0])){var s=Math.min(t[0][1],t[1][1]),l=Math.max(t[0][1],t[1][1]),c=Math.min(e[0][1],e[1][1]),u=Math.max(e[0][1],e[1][1]);return lu?s-u:l-u}r=e[1],i=e[0]}t[0][1]0)if(e[0]!==o[1][0])r=t,t=t.right;else{if(l=c(t.right,e))return l;t=t.left}else{if(e[0]!==o[1][0])return t;var l;if(l=c(t.right,e))return l;t=t.left}}return r}function u(t,e,r,n){this.y=t,this.index=e,this.start=r,this.closed=n}function f(t,e,r,n){this.x=t,this.segment=e,this.create=r,this.index=n}s.prototype.castUp=function(t){var e=n.le(this.coordinates,t[0]);if(e<0)return-1;this.slabs[e];var r=c(this.slabs[e],t),i=-1;if(r&&(i=r.value),this.coordinates[e]===t[0]){var s=null;if(r&&(s=r.key),e>0){var u=c(this.slabs[e-1],t);u&&(s?o(u.key,s)>0&&(s=u.key,i=u.value):(i=u.value,s=u.key))}var f=this.horizontal[e];if(f.length>0){var h=n.ge(f,t[1],l);if(h=f.length)return i;p=f[h]}}if(p.start)if(s){var d=a(s[0],s[1],[t[0],p.y]);s[0][0]>s[1][0]&&(d=-d),d>0&&(i=p.index)}else i=p.index;else p.y!==t[1]&&(i=p.index)}}}return i}},{\"./lib/order-segments\":298,\"binary-search-bounds\":31,\"functional-red-black-tree\":69,\"robust-orientation\":284}],300:[function(t,e,r){\"use strict\";var n=t(\"robust-dot-product\"),i=t(\"robust-sum\");function a(t,e){var r=i(n(t,e),[e[e.length-1]]);return r[r.length-1]}function o(t,e,r,n){var i=-e/(n-e);i<0?i=0:i>1&&(i=1);for(var a=1-i,o=t.length,s=new Array(o),l=0;l0||i>0&&u<0){var f=o(s,u,l,i);r.push(f),n.push(f.slice())}u<0?n.push(l.slice()):u>0?r.push(l.slice()):(r.push(l.slice()),n.push(l.slice())),i=u}return{positive:r,negative:n}},e.exports.positive=function(t,e){for(var r=[],n=a(t[t.length-1],e),i=t[t.length-1],s=t[0],l=0;l0||n>0&&c<0)&&r.push(o(i,c,s,n)),c>=0&&r.push(s.slice()),n=c}return r},e.exports.negative=function(t,e){for(var r=[],n=a(t[t.length-1],e),i=t[t.length-1],s=t[0],l=0;l0||n>0&&c<0)&&r.push(o(i,c,s,n)),c<=0&&r.push(s.slice()),n=c}return r}},{\"robust-dot-product\":281,\"robust-sum\":289}],301:[function(t,e,r){!function(){\"use strict\";var t={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\\x25]+/,modulo:/^\\x25{2}/,placeholder:/^\\x25(?:([1-9]\\d*)\\$|\\(([^)]+)\\))?(\\+)?(0|'[^$])?(-)?(\\d+)?(?:\\.(\\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\\d]*)/i,key_access:/^\\.([a-z_][a-z_\\d]*)/i,index_access:/^\\[(\\d+)\\]/,sign:/^[+-]/};function e(t){return i(o(t),arguments)}function n(t,r){return e.apply(null,[t].concat(r||[]))}function i(r,n){var i,a,o,s,l,c,u,f,h,p=1,d=r.length,g=\"\";for(a=0;a=0),s.type){case\"b\":i=parseInt(i,10).toString(2);break;case\"c\":i=String.fromCharCode(parseInt(i,10));break;case\"d\":case\"i\":i=parseInt(i,10);break;case\"j\":i=JSON.stringify(i,null,s.width?parseInt(s.width):0);break;case\"e\":i=s.precision?parseFloat(i).toExponential(s.precision):parseFloat(i).toExponential();break;case\"f\":i=s.precision?parseFloat(i).toFixed(s.precision):parseFloat(i);break;case\"g\":i=s.precision?String(Number(i.toPrecision(s.precision))):parseFloat(i);break;case\"o\":i=(parseInt(i,10)>>>0).toString(8);break;case\"s\":i=String(i),i=s.precision?i.substring(0,s.precision):i;break;case\"t\":i=String(!!i),i=s.precision?i.substring(0,s.precision):i;break;case\"T\":i=Object.prototype.toString.call(i).slice(8,-1).toLowerCase(),i=s.precision?i.substring(0,s.precision):i;break;case\"u\":i=parseInt(i,10)>>>0;break;case\"v\":i=i.valueOf(),i=s.precision?i.substring(0,s.precision):i;break;case\"x\":i=(parseInt(i,10)>>>0).toString(16);break;case\"X\":i=(parseInt(i,10)>>>0).toString(16).toUpperCase()}t.json.test(s.type)?g+=i:(!t.number.test(s.type)||f&&!s.sign?h=\"\":(h=f?\"+\":\"-\",i=i.toString().replace(t.sign,\"\")),c=s.pad_char?\"0\"===s.pad_char?\"0\":s.pad_char.charAt(1):\" \",u=s.width-(h+i).length,l=s.width&&u>0?c.repeat(u):\"\",g+=s.align?h+i+l:\"0\"===c?h+l+i:l+h+i)}return g}var a=Object.create(null);function o(e){if(a[e])return a[e];for(var r,n=e,i=[],o=0;n;){if(null!==(r=t.text.exec(n)))i.push(r[0]);else if(null!==(r=t.modulo.exec(n)))i.push(\"%\");else{if(null===(r=t.placeholder.exec(n)))throw new SyntaxError(\"[sprintf] unexpected placeholder\");if(r[2]){o|=1;var s=[],l=r[2],c=[];if(null===(c=t.key.exec(l)))throw new SyntaxError(\"[sprintf] failed to parse named argument key\");for(s.push(c[1]);\"\"!==(l=l.substring(c[0].length));)if(null!==(c=t.key_access.exec(l)))s.push(c[1]);else{if(null===(c=t.index_access.exec(l)))throw new SyntaxError(\"[sprintf] failed to parse named argument key\");s.push(c[1])}r[2]=s}else o|=2;if(3===o)throw new Error(\"[sprintf] mixing positional and named placeholders is not (yet) supported\");i.push({placeholder:r[0],param_no:r[1],keys:r[2],sign:r[3],pad_char:r[4],align:r[5],width:r[6],precision:r[7],type:r[8]})}n=n.substring(r[0].length)}return a[e]=i}void 0!==r&&(r.sprintf=e,r.vsprintf=n),\"undefined\"!=typeof window&&(window.sprintf=e,window.vsprintf=n)}()},{}],302:[function(t,e,r){\"use strict\";e.exports=function(t,e){if(t.dimension<=0)return{positions:[],cells:[]};if(1===t.dimension)return function(t,e){for(var r=i(t,e),n=r.length,a=new Array(n),o=new Array(n),s=0;sn|0},vertex:function(t,e,r,n,i,a,o,s,l,c,u,f,h){var p=(o<<0)+(s<<1)+(l<<2)+(c<<3)|0;if(0!==p&&15!==p)switch(p){case 0:u.push([t-.5,e-.5]);break;case 1:u.push([t-.25-.25*(n+r-2*h)/(r-n),e-.25-.25*(i+r-2*h)/(r-i)]);break;case 2:u.push([t-.75-.25*(-n-r+2*h)/(n-r),e-.25-.25*(a+n-2*h)/(n-a)]);break;case 3:u.push([t-.5,e-.5-.5*(i+r+a+n-4*h)/(r-i+n-a)]);break;case 4:u.push([t-.25-.25*(a+i-2*h)/(i-a),e-.75-.25*(-i-r+2*h)/(i-r)]);break;case 5:u.push([t-.5-.5*(n+r+a+i-4*h)/(r-n+i-a),e-.5]);break;case 6:u.push([t-.5-.25*(-n-r+a+i)/(n-r+i-a),e-.5-.25*(-i-r+a+n)/(i-r+n-a)]);break;case 7:u.push([t-.75-.25*(a+i-2*h)/(i-a),e-.75-.25*(a+n-2*h)/(n-a)]);break;case 8:u.push([t-.75-.25*(-a-i+2*h)/(a-i),e-.75-.25*(-a-n+2*h)/(a-n)]);break;case 9:u.push([t-.5-.25*(n+r+-a-i)/(r-n+a-i),e-.5-.25*(i+r+-a-n)/(r-i+a-n)]);break;case 10:u.push([t-.5-.5*(-n-r-a-i+4*h)/(n-r+a-i),e-.5]);break;case 11:u.push([t-.25-.25*(-a-i+2*h)/(a-i),e-.75-.25*(i+r-2*h)/(r-i)]);break;case 12:u.push([t-.5,e-.5-.5*(-i-r-a-n+4*h)/(i-r+a-n)]);break;case 13:u.push([t-.75-.25*(n+r-2*h)/(r-n),e-.25-.25*(-a-n+2*h)/(a-n)]);break;case 14:u.push([t-.25-.25*(-n-r+2*h)/(n-r),e-.25-.25*(-i-r+2*h)/(i-r)]);break;case 15:u.push([t-.5,e-.5])}},cell:function(t,e,r,n,i,a,o,s,l){i?s.push([t,e]):s.push([e,t])}});return function(t,e){var r=[],i=[];return n(t,r,i,e),{positions:r,cells:i}}}};var o={}},{\"ndarray-extract-contour\":251,\"zero-crossings\":318}],303:[function(t,e,r){(function(r){(function(){\"use strict\";e.exports=function t(e,r,i){i=i||{};var o=a[e];o||(o=a[e]={\" \":{data:new Float32Array(0),shape:.2}});var s=o[r];if(!s)if(r.length<=1||!/\\d/.test(r))s=o[r]=function(t){for(var e=t.cells,r=t.positions,n=new Float32Array(6*e.length),i=0,a=0,o=0;o0&&(f+=.02);var p=new Float32Array(u),d=0,g=-.5*f;for(h=0;hMath.max(r,n)?i[2]=1:r>Math.max(e,n)?i[0]=1:i[1]=1;for(var a=0,o=0,l=0;l<3;++l)a+=t[l]*t[l],o+=i[l]*t[l];for(l=0;l<3;++l)i[l]-=o/a*t[l];return s(i,i),i}function h(t,e,r,i,a,o,s,l){this.center=n(r),this.up=n(i),this.right=n(a),this.radius=n([o]),this.angle=n([s,l]),this.angle.bounds=[[-1/0,-Math.PI/2],[1/0,Math.PI/2]],this.setDistanceLimits(t,e),this.computedCenter=this.center.curve(0),this.computedUp=this.up.curve(0),this.computedRight=this.right.curve(0),this.computedRadius=this.radius.curve(0),this.computedAngle=this.angle.curve(0),this.computedToward=[0,0,0],this.computedEye=[0,0,0],this.computedMatrix=new Array(16);for(var c=0;c<16;++c)this.computedMatrix[c]=.5;this.recalcMatrix(0)}var p=h.prototype;p.setDistanceLimits=function(t,e){t=t>0?Math.log(t):-1/0,e=e>0?Math.log(e):1/0,e=Math.max(e,t),this.radius.bounds[0][0]=t,this.radius.bounds[1][0]=e},p.getDistanceLimits=function(t){var e=this.radius.bounds[0];return t?(t[0]=Math.exp(e[0][0]),t[1]=Math.exp(e[1][0]),t):[Math.exp(e[0][0]),Math.exp(e[1][0])]},p.recalcMatrix=function(t){this.center.curve(t),this.up.curve(t),this.right.curve(t),this.radius.curve(t),this.angle.curve(t);for(var e=this.computedUp,r=this.computedRight,n=0,i=0,a=0;a<3;++a)i+=e[a]*r[a],n+=e[a]*e[a];var l=Math.sqrt(n),u=0;for(a=0;a<3;++a)r[a]-=e[a]*i/n,u+=r[a]*r[a],e[a]/=l;var f=Math.sqrt(u);for(a=0;a<3;++a)r[a]/=f;var h=this.computedToward;o(h,e,r),s(h,h);var p=Math.exp(this.computedRadius[0]),d=this.computedAngle[0],g=this.computedAngle[1],m=Math.cos(d),v=Math.sin(d),y=Math.cos(g),x=Math.sin(g),b=this.computedCenter,_=m*y,w=v*y,T=x,k=-m*x,A=-v*x,M=y,S=this.computedEye,E=this.computedMatrix;for(a=0;a<3;++a){var L=_*r[a]+w*h[a]+T*e[a];E[4*a+1]=k*r[a]+A*h[a]+M*e[a],E[4*a+2]=L,E[4*a+3]=0}var C=E[1],P=E[5],I=E[9],O=E[2],z=E[6],D=E[10],R=P*D-I*z,F=I*O-C*D,B=C*z-P*O,N=c(R,F,B);R/=N,F/=N,B/=N,E[0]=R,E[4]=F,E[8]=B;for(a=0;a<3;++a)S[a]=b[a]+E[2+4*a]*p;for(a=0;a<3;++a){u=0;for(var j=0;j<3;++j)u+=E[a+4*j]*S[j];E[12+a]=-u}E[15]=1},p.getMatrix=function(t,e){this.recalcMatrix(t);var r=this.computedMatrix;if(e){for(var n=0;n<16;++n)e[n]=r[n];return e}return r};var d=[0,0,0];p.rotate=function(t,e,r,n){if(this.angle.move(t,e,r),n){this.recalcMatrix(t);var i=this.computedMatrix;d[0]=i[2],d[1]=i[6],d[2]=i[10];for(var o=this.computedUp,s=this.computedRight,l=this.computedToward,c=0;c<3;++c)i[4*c]=o[c],i[4*c+1]=s[c],i[4*c+2]=l[c];a(i,i,n,d);for(c=0;c<3;++c)o[c]=i[4*c],s[c]=i[4*c+1];this.up.set(t,o[0],o[1],o[2]),this.right.set(t,s[0],s[1],s[2])}},p.pan=function(t,e,r,n){e=e||0,r=r||0,n=n||0,this.recalcMatrix(t);var i=this.computedMatrix,a=(Math.exp(this.computedRadius[0]),i[1]),o=i[5],s=i[9],l=c(a,o,s);a/=l,o/=l,s/=l;var u=i[0],f=i[4],h=i[8],p=u*a+f*o+h*s,d=c(u-=a*p,f-=o*p,h-=s*p),g=(u/=d)*e+a*r,m=(f/=d)*e+o*r,v=(h/=d)*e+s*r;this.center.move(t,g,m,v);var y=Math.exp(this.computedRadius[0]);y=Math.max(1e-4,y+n),this.radius.set(t,Math.log(y))},p.translate=function(t,e,r,n){this.center.move(t,e||0,r||0,n||0)},p.setMatrix=function(t,e,r,n){var a=1;\"number\"==typeof r&&(a=0|r),(a<0||a>3)&&(a=1);var o=(a+2)%3;e||(this.recalcMatrix(t),e=this.computedMatrix);var s=e[a],l=e[a+4],f=e[a+8];if(n){var h=Math.abs(s),p=Math.abs(l),d=Math.abs(f),g=Math.max(h,p,d);h===g?(s=s<0?-1:1,l=f=0):d===g?(f=f<0?-1:1,s=l=0):(l=l<0?-1:1,s=f=0)}else{var m=c(s,l,f);s/=m,l/=m,f/=m}var v,y,x=e[o],b=e[o+4],_=e[o+8],w=x*s+b*l+_*f,T=c(x-=s*w,b-=l*w,_-=f*w),k=l*(_/=T)-f*(b/=T),A=f*(x/=T)-s*_,M=s*b-l*x,S=c(k,A,M);if(k/=S,A/=S,M/=S,this.center.jump(t,q,G,Y),this.radius.idle(t),this.up.jump(t,s,l,f),this.right.jump(t,x,b,_),2===a){var E=e[1],L=e[5],C=e[9],P=E*x+L*b+C*_,I=E*k+L*A+C*M;v=R<0?-Math.PI/2:Math.PI/2,y=Math.atan2(I,P)}else{var O=e[2],z=e[6],D=e[10],R=O*s+z*l+D*f,F=O*x+z*b+D*_,B=O*k+z*A+D*M;v=Math.asin(u(R)),y=Math.atan2(B,F)}this.angle.jump(t,y,v),this.recalcMatrix(t);var N=e[2],j=e[6],U=e[10],V=this.computedMatrix;i(V,e);var H=V[15],q=V[12]/H,G=V[13]/H,Y=V[14]/H,W=Math.exp(this.computedRadius[0]);this.center.jump(t,q-N*W,G-j*W,Y-U*W)},p.lastT=function(){return Math.max(this.center.lastT(),this.up.lastT(),this.right.lastT(),this.radius.lastT(),this.angle.lastT())},p.idle=function(t){this.center.idle(t),this.up.idle(t),this.right.idle(t),this.radius.idle(t),this.angle.idle(t)},p.flush=function(t){this.center.flush(t),this.up.flush(t),this.right.flush(t),this.radius.flush(t),this.angle.flush(t)},p.setDistance=function(t,e){e>0&&this.radius.set(t,Math.log(e))},p.lookAt=function(t,e,r,n){this.recalcMatrix(t),e=e||this.computedEye,r=r||this.computedCenter;var i=(n=n||this.computedUp)[0],a=n[1],o=n[2],s=c(i,a,o);if(!(s<1e-6)){i/=s,a/=s,o/=s;var l=e[0]-r[0],f=e[1]-r[1],h=e[2]-r[2],p=c(l,f,h);if(!(p<1e-6)){l/=p,f/=p,h/=p;var d=this.computedRight,g=d[0],m=d[1],v=d[2],y=i*g+a*m+o*v,x=c(g-=y*i,m-=y*a,v-=y*o);if(!(x<.01&&(x=c(g=a*h-o*f,m=o*l-i*h,v=i*f-a*l))<1e-6)){g/=x,m/=x,v/=x,this.up.set(t,i,a,o),this.right.set(t,g,m,v),this.center.set(t,r[0],r[1],r[2]),this.radius.set(t,Math.log(p));var b=a*v-o*m,_=o*g-i*v,w=i*m-a*g,T=c(b,_,w),k=i*l+a*f+o*h,A=g*l+m*f+v*h,M=(b/=T)*l+(_/=T)*f+(w/=T)*h,S=Math.asin(u(k)),E=Math.atan2(M,A),L=this.angle._state,C=L[L.length-1],P=L[L.length-2];C%=2*Math.PI;var I=Math.abs(C+2*Math.PI-E),O=Math.abs(C-E),z=Math.abs(C-2*Math.PI-E);I0?r.pop():new ArrayBuffer(t)}function d(t){return new Uint8Array(p(t),0,t)}function g(t){return new Uint16Array(p(2*t),0,t)}function m(t){return new Uint32Array(p(4*t),0,t)}function v(t){return new Int8Array(p(t),0,t)}function y(t){return new Int16Array(p(2*t),0,t)}function x(t){return new Int32Array(p(4*t),0,t)}function b(t){return new Float32Array(p(4*t),0,t)}function _(t){return new Float64Array(p(8*t),0,t)}function w(t){return o?new Uint8ClampedArray(p(t),0,t):d(t)}function T(t){return s?new BigUint64Array(p(8*t),0,t):null}function k(t){return l?new BigInt64Array(p(8*t),0,t):null}function A(t){return new DataView(p(t),0,t)}function M(t){t=n.nextPow2(t);var e=n.log2(t),r=f[e];return r.length>0?r.pop():new a(t)}r.free=function(t){if(a.isBuffer(t))f[n.log2(t.length)].push(t);else{if(\"[object ArrayBuffer]\"!==Object.prototype.toString.call(t)&&(t=t.buffer),!t)return;var e=t.length||t.byteLength,r=0|n.log2(e);u[r].push(t)}},r.freeUint8=r.freeUint16=r.freeUint32=r.freeBigUint64=r.freeInt8=r.freeInt16=r.freeInt32=r.freeBigInt64=r.freeFloat32=r.freeFloat=r.freeFloat64=r.freeDouble=r.freeUint8Clamped=r.freeDataView=function(t){h(t.buffer)},r.freeArrayBuffer=h,r.freeBuffer=function(t){f[n.log2(t.length)].push(t)},r.malloc=function(t,e){if(void 0===e||\"arraybuffer\"===e)return p(t);switch(e){case\"uint8\":return d(t);case\"uint16\":return g(t);case\"uint32\":return m(t);case\"int8\":return v(t);case\"int16\":return y(t);case\"int32\":return x(t);case\"float\":case\"float32\":return b(t);case\"double\":case\"float64\":return _(t);case\"uint8_clamped\":return w(t);case\"bigint64\":return k(t);case\"biguint64\":return T(t);case\"buffer\":return M(t);case\"data\":case\"dataview\":return A(t);default:return null}return null},r.mallocArrayBuffer=p,r.mallocUint8=d,r.mallocUint16=g,r.mallocUint32=m,r.mallocInt8=v,r.mallocInt16=y,r.mallocInt32=x,r.mallocFloat32=r.mallocFloat=b,r.mallocFloat64=r.mallocDouble=_,r.mallocUint8Clamped=w,r.mallocBigUint64=T,r.mallocBigInt64=k,r.mallocDataView=A,r.mallocBuffer=M,r.clearCache=function(){for(var t=0;t<32;++t)c.UINT8[t].length=0,c.UINT16[t].length=0,c.UINT32[t].length=0,c.INT8[t].length=0,c.INT16[t].length=0,c.INT32[t].length=0,c.FLOAT[t].length=0,c.DOUBLE[t].length=0,c.BIGUINT64[t].length=0,c.BIGINT64[t].length=0,c.UINT8C[t].length=0,u[t].length=0,f[t].length=0}}).call(this)}).call(this,void 0!==n?n:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"bit-twiddle\":32,buffer:3,dup:65}],309:[function(t,e,r){\"use strict\";function n(t){this.roots=new Array(t),this.ranks=new Array(t);for(var e=0;e0&&(a=n.size),n.lineSpacing&&n.lineSpacing>0&&(o=n.lineSpacing),n.styletags&&n.styletags.breaklines&&(s.breaklines=!!n.styletags.breaklines),n.styletags&&n.styletags.bolds&&(s.bolds=!!n.styletags.bolds),n.styletags&&n.styletags.italics&&(s.italics=!!n.styletags.italics),n.styletags&&n.styletags.subscripts&&(s.subscripts=!!n.styletags.subscripts),n.styletags&&n.styletags.superscripts&&(s.superscripts=!!n.styletags.superscripts));return r.font=[n.fontStyle,n.fontVariant,n.fontWeight,a+\"px\",n.font].filter((function(t){return t})).join(\" \"),r.textAlign=\"start\",r.textBaseline=\"alphabetic\",r.direction=\"ltr\",h(function(t,e,r,n,a,o){r=r.replace(/\\n/g,\"\"),r=!0===o.breaklines?r.replace(/\\/g,\"\\n\"):r.replace(/\\/g,\" \");var s=\"\",l=[];for(p=0;p-1?parseInt(t[1+i]):0,l=a>-1?parseInt(r[1+a]):0;s!==l&&(n=n.replace(S(),\"?px \"),m*=Math.pow(.75,l-s),n=n.replace(\"?px \",S())),g+=.25*x*(l-s)}if(!0===o.superscripts){var c=t.indexOf(\"+\"),u=r.indexOf(\"+\"),f=c>-1?parseInt(t[1+c]):0,h=u>-1?parseInt(r[1+u]):0;f!==h&&(n=n.replace(S(),\"?px \"),m*=Math.pow(.75,h-f),n=n.replace(\"?px \",S())),g-=.25*x*(h-f)}if(!0===o.bolds){var p=t.indexOf(\"b|\")>-1,d=r.indexOf(\"b|\")>-1;!p&&d&&(n=v?n.replace(\"italic \",\"italic bold \"):\"bold \"+n),p&&!d&&(n=n.replace(\"bold \",\"\"))}if(!0===o.italics){var v=t.indexOf(\"i|\")>-1,y=r.indexOf(\"i|\")>-1;!v&&y&&(n=\"italic \"+n),v&&!y&&(n=n.replace(\"italic \",\"\"))}e.font=n}for(h=0;h\",a=\"\",o=i.length,s=a.length,l=\"+\"===e[0]||\"-\"===e[0],c=0,u=-s;c>-1&&-1!==(c=r.indexOf(i,c))&&-1!==(u=r.indexOf(a,c+o))&&!(u<=c);){for(var f=c;f=u)n[f]=null,r=r.substr(0,f)+\" \"+r.substr(f+1);else if(null!==n[f]){var h=n[f].indexOf(e[0]);-1===h?n[f]+=e:l&&(n[f]=n[f].substr(0,h+1)+(1+parseInt(n[f][h+1]))+n[f].substr(h+2))}var p=c+o,d=r.substr(p,u-p).indexOf(i);c=-1!==d?d:u+s}return n}function u(t,e){var r=n(t,128);return e?a(r.cells,r.positions,.25):{edges:r.cells,positions:r.positions}}function f(t,e,r,n){var i=u(t,n),a=function(t,e,r){for(var n=e.textAlign||\"start\",i=e.textBaseline||\"alphabetic\",a=[1<<30,1<<30],o=[0,0],s=t.length,l=0;l=0?e[a]:i}))},has___:{value:y((function(e){var n=v(e);return n?r in n:t.indexOf(e)>=0}))},set___:{value:y((function(n,i){var a,o=v(n);return o?o[r]=i:(a=t.indexOf(n))>=0?e[a]=i:(a=t.length,e[a]=i,t[a]=n),this}))},delete___:{value:y((function(n){var i,a,o=v(n);return o?r in o&&delete o[r]:!((i=t.indexOf(n))<0)&&(a=t.length-1,t[i]=void 0,e[i]=e[a],t[i]=t[a],t.length=a,e.length=a,!0)}))}})};d.prototype=Object.create(Object.prototype,{get:{value:function(t,e){return this.get___(t,e)},writable:!0,configurable:!0},has:{value:function(t){return this.has___(t)},writable:!0,configurable:!0},set:{value:function(t,e){return this.set___(t,e)},writable:!0,configurable:!0},delete:{value:function(t){return this.delete___(t)},writable:!0,configurable:!0}}),\"function\"==typeof r?function(){function n(){this instanceof d||x();var e,n=new r,i=void 0,a=!1;return e=t?function(t,e){return n.set(t,e),n.has(t)||(i||(i=new d),i.set(t,e)),this}:function(t,e){if(a)try{n.set(t,e)}catch(r){i||(i=new d),i.set___(t,e)}else n.set(t,e);return this},Object.create(d.prototype,{get___:{value:y((function(t,e){return i?n.has(t)?n.get(t):i.get___(t,e):n.get(t,e)}))},has___:{value:y((function(t){return n.has(t)||!!i&&i.has___(t)}))},set___:{value:y(e)},delete___:{value:y((function(t){var e=!!n.delete(t);return i&&i.delete___(t)||e}))},permitHostObjects___:{value:y((function(t){if(t!==g)throw new Error(\"bogus call to permitHostObjects___\");a=!0}))}})}t&&\"undefined\"!=typeof Proxy&&(Proxy=void 0),n.prototype=d.prototype,e.exports=n,Object.defineProperty(WeakMap.prototype,\"constructor\",{value:WeakMap,enumerable:!1,configurable:!0,writable:!0})}():(\"undefined\"!=typeof Proxy&&(Proxy=void 0),e.exports=d)}function g(t){t.permitHostObjects___&&t.permitHostObjects___(g)}function m(t){return!(\"weakmap:\"==t.substr(0,\"weakmap:\".length)&&\"___\"===t.substr(t.length-3))}function v(t){if(t!==Object(t))throw new TypeError(\"Not an object: \"+t);var e=t[l];if(e&&e.key===t)return e;if(s(t)){e={key:t};try{return o(t,l,{value:e,writable:!1,enumerable:!1,configurable:!1}),e}catch(t){return}}}function y(t){return t.prototype=null,Object.freeze(t)}function x(){h||\"undefined\"==typeof console||(h=!0,console.warn(\"WeakMap should be invoked as new WeakMap(), not WeakMap(). This will be an error in the future.\"))}}()},{}],314:[function(t,e,r){var n=t(\"./hidden-store.js\");e.exports=function(){var t={};return function(e){if((\"object\"!=typeof e||null===e)&&\"function\"!=typeof e)throw new Error(\"Weakmap-shim: Key must be object\");var r=e.valueOf(t);return r&&r.identity===t?r:n(e,t)}}},{\"./hidden-store.js\":315}],315:[function(t,e,r){e.exports=function(t,e){var r={identity:e},n=t.valueOf;return Object.defineProperty(t,\"valueOf\",{value:function(t){return t!==e?n.apply(this,arguments):r},writable:!0}),r}},{}],316:[function(t,e,r){var n=t(\"./create-store.js\");e.exports=function(){var t=n();return{get:function(e,r){var n=t(e);return n.hasOwnProperty(\"value\")?n.value:r},set:function(e,r){return t(e).value=r,this},has:function(e){return\"value\"in t(e)},delete:function(e){return delete t(e).value}}}},{\"./create-store.js\":314}],317:[function(t,e,r){\"use strict\";var n,i=function(){return function(t,e,r,n,i,a){var o=t[0],s=r[0],l=[0],c=s;n|=0;var u=0,f=s;for(u=0;u=0!=p>=0&&i.push(l[0]+.5+.5*(h+p)/(h-p)),n+=f,++l[0]}}};e.exports=(n={funcName:{funcName:\"zeroCrossings\"}.funcName},function(t){var e={};return function(r,n,i){var a=r.dtype,o=r.order,s=[a,o.join()].join(),l=e[s];return l||(e[s]=l=t([a,o])),l(r.shape.slice(0),r.data,r.stride,0|r.offset,n,i)}}(i.bind(void 0,n)))},{}],318:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r=[];return e=+e||0,n(t.hi(t.shape[0]-1),r,e),r};var n=t(\"./lib/zc-core\")},{\"./lib/zc-core\":317}]},{},[6])(6)}))}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}]},{},[27])(27)}));\n", " });\n", " require(['plotly'], function(Plotly) {\n", " window._Plotly = Plotly;\n", diff --git a/examples/ThinLayers/TL_BioCatNet.py b/examples/ThinLayers/TL_BioCatNet.py index b89c83b7..f9d27eda 100644 --- a/examples/ThinLayers/TL_BioCatNet.py +++ b/examples/ThinLayers/TL_BioCatNet.py @@ -388,7 +388,7 @@ def __getReaction( self ): } - # get appropiate replicates + # get appropriate replicates df_meas = self.comps[ self.comps["MEASUREMENT NO."] == key ] # get numbers of replicates diff --git a/examples/Validation/EnzymeML_Validation_Template.yaml b/examples/Validation/EnzymeML_Validation_Template.yaml index a9a04df3..9937caa2 100644 --- a/examples/Validation/EnzymeML_Validation_Template.yaml +++ b/examples/Validation/EnzymeML_Validation_Template.yaml @@ -140,7 +140,7 @@ protein_dict: - null unit: mandatory: true - description: Unit of the proteins intial concentration. + description: Unit of the proteins initial concentration. range: min: null max: null @@ -230,7 +230,7 @@ complex_dict: - null unit: mandatory: true - description: Unit of the proteins intial concentration. + description: Unit of the proteins initial concentration. range: min: null max: null @@ -279,7 +279,7 @@ reactant_dict: - null unit: mandatory: true - description: Unit of the reactant intial concentration. + description: Unit of the reactant initial concentration. range: min: null max: null diff --git a/examples/Validation/EnzymeML_Validation_Template_Example.yaml b/examples/Validation/EnzymeML_Validation_Template_Example.yaml index 876f520b..dcf1b265 100644 --- a/examples/Validation/EnzymeML_Validation_Template_Example.yaml +++ b/examples/Validation/EnzymeML_Validation_Template_Example.yaml @@ -140,7 +140,7 @@ protein_dict: - null unit: mandatory: true - description: Unit of the proteins intial concentration. + description: Unit of the proteins initial concentration. range: min: null max: null @@ -230,7 +230,7 @@ complex_dict: - null unit: mandatory: true - description: Unit of the proteins intial concentration. + description: Unit of the proteins initial concentration. range: min: null max: null @@ -279,7 +279,7 @@ reactant_dict: - null unit: mandatory: true - description: Unit of the reactant intial concentration. + description: Unit of the reactant initial concentration. range: min: null max: null diff --git a/examples/Validation/ValidateEnzymeML.ipynb b/examples/Validation/ValidateEnzymeML.ipynb index ed41d884..db6f662d 100644 --- a/examples/Validation/ValidateEnzymeML.ipynb +++ b/examples/Validation/ValidateEnzymeML.ipynb @@ -70,7 +70,7 @@ "metadata": {}, "source": [ "### Using an example spreadsheet\n", - "Since the blank validation YAML wont demonstrate all types of checks, we are going to use an example that has been provided in this directory and convert it to YAML." + "Since the blank validation YAML won't demonstrate all types of checks, we are going to use an example that has been provided in this directory and convert it to YAML." ] }, { @@ -94,7 +94,7 @@ "source": [ "### Performing validation\n", "\n", - "Once the YAML file is ready, validation can be done for an example `EnzymeMLDocument` found in this directory. The validation for this example will fail by intention and thus return a report taht will be shown here. Such a report is returned as `Dict` and can be inspected either manually or programmatically. This was done to allow automation workflows to utilize validation." + "Once the YAML file is ready, validation can be done for an example `EnzymeMLDocument` found in this directory. The validation for this example will fail by intention and thus return a report that will be shown here. Such a report is returned as `Dict` and can be inspected either manually or programmatically. This was done to allow automation workflows to utilize validation." ] }, { diff --git a/examples/Visualisation/Visualisation.ipynb b/examples/Visualisation/Visualisation.ipynb index d55d268a..1f3d4d4f 100644 --- a/examples/Visualisation/Visualisation.ipynb +++ b/examples/Visualisation/Visualisation.ipynb @@ -52,7 +52,7 @@ "outputs": [ { "data": { - "image/png": "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Y4ryikj/lE9E+qd8IjJwkWHc13xgLvCsmQHMBJ4ysxPxS6pmFaw7E9g2jGkTERERERE5IMNWcuWce945V++cm+Ocm4MfUL3MObcDuAW4yMziZjYXWAg8NlxpExEREREROVDl7Ir9t8DDwOFmtsXM3tfbus65FcBNwAvAncDlzrlcudImIiIiIiJSamWrFuicu7if5XO6TV8FXFWu9IiIiIiIiJTTsPYWKCIiIiIiMlYpuBIRERERESkBBVciIiIiIiIloOBKRERERESkBBRciYiIiIiIlICCKxERERERkRJQcCUiIiIiIlICCq5ERERERERKQMGViIiIiIhICSi4EhERERERKQEFVyIiIiIiIiWg4EpERERERKQEFFyJiIiIiIiUQNmCKzP7mZk1mNnygnnfMrOVZvacmf3RzMYXLPusma01s1Vmdna50iUiIiIiIlIO5Sy5ug44p9u8u4AjnXNHA6uBzwKY2RLgImBp8J6rzSxcxrSJiIiIiIiUVNmCK+fc/cCebvP+5pzLBpOPADOD8QuAG5xzKefcBmAtcGK50iYiIiIiIlJqI9nm6r3AHcH4DOClgmVbgnk9mNmlZvaEmT3R2NhY5iSKjF7KKyL9Uz4R6Z/yicjAjUhwZWafB7LAr/Oziqzmir3XOXetc26Zc25ZXV1duZIoMuopr4j0T/lEpH/KJyIDFxnuHZrZJcC5wBnOuXwAtQWYVbDaTGDbcKdNRERERERkqIa15MrMzgE+A5zvnGsrWHQLcJGZxc1sLrAQeGw40yYiIiIiInIgylZyZWa/BU4DJpvZFuBL+L0DxoG7zAzgEefcB51zK8zsJuAF/OqClzvncuVKm4iIiIiISKmVLbhyzl1cZPZP+1j/KuCqcqVHRERERESknEayt0AREREREZExQ8GViIiIiIhICSi4EhERERERKQEFVyIiIiIiIiWg4EpERERERKQEFFyJiIiIiIiUgIIrERERERGRElBwJSIiIiIiUgIKrkREREREREpAwZWIiIiIiEgJKLgSEREREREpAQVXIiIiIiIiJaDgSkREREREpATKFlyZ2c/MrMHMlhfMm2hmd5nZmmA4oWDZZ81srZmtMrOzy5UuERERERGRcihnydV1wDnd5l0J3O2cWwjcHUxjZkuAi4ClwXuuNrNwGdMmIiIiIiJSUmULrpxz9wN7us2+ALg+GL8euLBg/g3OuZRzbgOwFjixXGkTEREREREpteFuczXFObcdIBjWB/NnAC8VrLclmNeDmV1qZk+Y2RONjY1lTazIaKa8ItI/5ROR/imfiAzcwdKhhRWZ54qt6Jy71jm3zDm3rK6urszJEhm9lFdE+qd8ItI/5RORgRvu4GqnmU0DCIYNwfwtwKyC9WYC24Y5bSIiIiIiIkM23MHVLcAlwfglwJ8L5l9kZnEzmwssBB4b5rSJiIiIiIgMWaRcGzaz3wKnAZPNbAvwJeDrwE1m9j5gM/BWAOfcCjO7CXgByAKXO+dy5UqbiIiIiIhIqZUtuHLOXdzLojN6Wf8q4KpypUdERERERKScDpYOLUREREREREY1BVciIiIiIiIloOBKRERERESkBBRciYiIiIiIlICCKxERERERkRJQcCUiIiIiIlICCq5ERERERERKQMGViIiIiIhICSi4EhERERERKQEFVyIiIiIiIiWg4EpERERERKQEFFyJiIiIiIiUgIIrERERERGREhiR4MrMPm5mK8xsuZn91swSZjbRzO4yszXBcMJIpE1ERERERGQohj24MrMZwEeAZc65I4EwcBFwJXC3c24hcHcwLSIiIiIiMiqMVLXACFBhZhGgEtgGXABcHyy/HrhwZJImIiIiIiIyeP0GV2Y2xcx+amZ3BNNLzOx9Q92hc24r8N/AZmA7sN859zdginNue7DOdqC+l/RcamZPmNkTjY2NQ02GyJinvCLSP+UTkf4pn4gM3EBKrq4D/gpMD6ZXAx8b6g6DtlQXAHODbVaZ2b8O9P3OuWudc8ucc8vq6uqGmgyRMU95RaR/yici/VM+ERm4gQRXk51zNwEegHMuC+QOYJ9nAhucc43OuQxwM3AysNPMpgEEw4YD2IeIiIiIiMiwGkhw1WpmkwAHYGYvB/YfwD43Ay83s0ozM+AM4EXgFuCSYJ1LgD8fwD5ERERERESGVWQA61yBH/jMN7MHgTrgLUPdoXPuUTP7PfAUkAWeBq4FqoGbgvZcm4G3DnUfIiIiIiIiw63f4Mo595SZvRo4HDBgVVCdb8icc18CvtRtdgq/FEtERERERGTU6Te4MrN3dZv1MjPDOfeLMqVJRERERERk1BlItcATCsYT+KVLTwEKrkRERERERAIDqRb44cJpMxsH/LJsKRIRERERERmFBtJbYHdtwMJSJ0RERERERGQ0G0ibq1sJumHHD8aWADeVM1EiIiIiIiKjzUDaXP13wXgW2OSc21Km9IiIiIiIiIxKA2lzdd9wJERERERERGQ06zW4MrNmOqsDdlkEOOdcbdlSJSIiIiIiMsr0Glw552qGMyEiIiIiIiKj2UDaXAFgZvX4z7kCwDm3uSwpEhERERERGYX67YrdzM43szXABuA+YCNwR5nTJSIiIiIiMqoM5DlXXwNeDqx2zs0FzgAeLGuqRERERERERpmBBFcZ59xuIGRmIefcP4BjD2SnZjbezH5vZivN7EUze4WZTTSzu8xsTTCccCD7EBEREZFh4nmwaw1seMAfet5Ip0hkRAwkuNpnZtXAA8Cvzex7+M+7OhDfA+50zi0GjgFeBK4E7nbOLQTuDqZFRERE5GDmebDyVrjmVLj+XH+48lYFWHJIGkhwdT8wHvgocCewDjhvqDs0s1rgVcBPAZxzaefcPuAC4PpgteuBC4e6DxEREREZJnvWwR8vg0y7P51p96f3rBvZdImMgIEEVwb8FbgXqAZuDKoJDtU8oBH4uZk9bWY/MbMqYIpzbjtAMKwvmhizS83sCTN7orGx8QCSITK2Ka+I9E/5RKR//eaT5h2dgVVeph1adgxPAkUOIv0GV865rzjnlgKXA9OB+8zs7wewzwjwMuBHzrnjgFYGUQXQOXetc26Zc25ZXV3dASRDZGxTXhHpn/KJSP/6zSc1UyFa0XP+83+AVIvaYskhZcDPuQIagB3AbnopVRqgLcAW59yjwfTv8YOrnWY2zTm33cymBfsTERERkYPZxPnwxms6qwZGEjBzGTz5c7/tVbIJcmk/AHvjNbD4PAgNpPKUyOgzkOdcfcjM7sXvZGIy8AHn3NFD3aFzbgfwkpkdHsw6A3gBuAW4JJh3CfDnoe5DRERERIZJKOQHTJc9AO++DT74T3jXrX4g1brbD6xAbbHkkDCQkqvDgI85554p4X4/jN/zYAxYD7wHP9C7yczeB2wG3lrC/YmIiIhIuYRCMHmh/8qrnQG4rutl2qFpa9f1RMaQfoMr51zJu0QPArVlRRadUep9iYiIiMgIyLfF6t7Zxe2fgguuhorxfmcYNVP9qoWqKihjwGDaXImIiIiIDEyxtlgnfgCe/x389Cw/mPJyaoslw8vz/KqpZQrsFVyJiIiISOl1tMVa4nfLXh1cyB75ZvjJGX5gBX7g9Yf3+222Ji8q64WvHOLyD7y++VLIJv2A/03XljSwV3AlIiIiIuVRrC1WqqUzsMrLpeH6N8DsV8Cav0E2pRKtQ8VQS5Kcg3QLtO+F9n2Q3Fdk2G1ZayPsf6lzG9mkX7J62ZKStQNUcCUiIiIiw6dYW6xwDCbOgxdv7ZyXaYebPwAffFAdYIxVuRws/z3c+mE/oA7H4KQPwqSFkNrfe5CU3AfJ/eBle9+2hf12fYnx/rBiAsSquwZX0PnAawVXIiIiIjLqdG+LlS+hqpgI15/bdd1sCn75Rjj67XDEeTDtGDDzl5W57cxBYbiPcaj7yyT9ACgf/AxkPLkP2vd0LcXMpeGh73dOW6gzOMoPxx/mB0qF87oP84FU/reSt2sNXHNq18A+WuFXWS0RBVciIiIiMnx6a4u1Z13PEq1QFKqnwD+/Aw/8N4yb7QdZi98ALQ3w5w91DdDKWYVwJAKdlbf2DEJLdYzO+cFMNukHsek2WH0n/P2LnaVIy94LE+b6pUTFSpDywVI22ceODBK1fsCTD37GzfTHU81+yVV3b/4pLHwtxGt6BkgHorfAfuL8ku1CwZWIiIiIDK9ibbF6u/BdfJ5/Eb/qdr/a4OM/hkd+2HV7mXb4w/vgtVfBhDl+YBCOQSQO4SiEg2Ek3rksvzwU7j+9pQh0nPOrseXSwSsTvNKdQ69g3p4N8Jcruj6E+ffvg1M+4gcd2VRnYNTnsI9lfcml4dH/65yOVXcNkCYv6FpS1Nt4vLb3z3jXGlj1l54lSdOO8QOyUustsC9hkGzOuf7XOkgtW7bMPfHEEyOdDJHhMuRbN8orcogZUl5RPpFDzMGZT/KlQ31d+Cab/Kpj93+rNPu0UBB8xSAS6xZ8BUPnwfZn/WHh+6YdC6FIEBgNIHAqtXDM7/EuEj/w4d7N8ND3eu7jol/DwrP94LTUyl06d+AGnU9UciUiIiIiB4diJVrdJWr9NlgP/6BriUckDm/5uV9lL5uGXMoPbLKpgqAnHUxn+lieHy9Y3trYNbACfzqXhsQ4CI8PArKoPwxFO8fD3ce7Ly+yTigaVHu83E9HxzEm4N23w5QlfkBYygBk1xp4/NqepUiTDy9PYAXDUpI03BRciYiIiMjo0lsVwkWvK8+FeW8dIbz1uvL1ZOh5fslZ92Ocflx5jnEY2iMVNZCAehRRcCUiIiIio8twl3iMROAx3Mc4BkuRRoKCKxEREREZfYazxGOkAo/hLtUZY6VII0HBlYiIiIhIfxR4yACMWDmfmYXN7Gkzuy2Ynmhmd5nZmmA4YaTSJiIi0sHz/PYWGx7wh57X/3tEROSQNJKVKD8KvFgwfSVwt3NuIXB3MC0iIjJy8t0EX3MqXH+uP1x5qwIsEREpakSCKzObCbwB+EnB7AuA64Px64ELhzlZIiIiXe1Z19mAHfzhHy/z54uIiHQzUiVX/wN8Gii89TfFObcdIBjWF3ujmV1qZk+Y2RONjY1lT6jIaKW8ItK/fvNJ846uXS+DP92yY3gSKHIQ0P+JyMANe3BlZucCDc65J4fyfufctc65Zc65ZXV1dSVOncjYobwi0r9+80nNVL/L5e5eehxyObXFkkOC/k9EBm4kegs8BTjfzF4PJIBaM/sVsNPMpjnntpvZNKBhBNImIiLSqfuzbSJxGD8H7v4KrPgj7FoF2VTnM28Wn6dnwoiIHMKG/R/AOfdZ59xM59wc4CLgHufcvwK3AJcEq10C/Hm40yYiItJFx7NtHoB33wYffBA+9BCc+knY8ZwfWIHaYsnBQT1bioy4g+n22teBs8xsDXBWMC0iIjKy8s+2mXOqPwxHYN5pPdfLtEPTVl3gyshQz5YiB4URfYiwc+5e4N5gfDdwxkimR0REZEDybbG6d3Zxy4fh8NfDk9dBNqnqgoc6z/NLM5t3+L+ZifNL9ztwDtKtkGqCVDPsXOGXnubS/vJ8aeplS/TQW5FhNKLBlYiIyKjUoy1WAk66DFb+BR79v871Mu1w86V+VULnleciWwamnIFOb/tbeWvnb6Qw0PayQVDUBMkgOMoHSckmSO0vGO++rKlz2vVTKpXv2VLBlciwUXAlIiIyWB1tsZb4F6/VwcX6/DPgF+d3XTeXhps/4LfRymX8QOxN16o0azj1Fej09R04B5k2SLdBpjUYtkG6pWC8tfi8lp2w9u+dAVCmHW56F4TjkEv1n+ZwHOI1kKj1h/FamDi3c7z7slQz3PHpzpIr8I+zeuqBfXYiMigKrkRERIYi3xarsFSgdnrP6oL1S2BrwdNHskn43bvhuHfC/NNh2rEwYQ6Yda4zEqUsw7m/Uu+zIwhqDYKcVki1dE7vWQ//+E/wMv76mXb43XtgwZkQChcESK0F40GghBt4OkIRiFZBrBIsVLxk6Yhzof4IiI/rGSDFayARzI/EB/cZeB5UTuwZQE6cP7jtiMgBUXAlIiJSKt2rC0Yr4NRPwO/f03U958Ezv4anrvenE+Nh+rF+oDXtGGjbDX/7wvC02xpqqc5gOOdXhcul/R4WM0lYfTv89XP+dDgGJ38YphzZGeDkg6Si083dlrUyqCAIwOX80sTKyX4wFKuG6ikQq4JoZcEwWJYfj1b5yzrG8+tWQSTWuf1da/xOJQoD7WgFnPbZ8lTT6600VaWjIsNKwZWIiEipFLvAda5naVa0At5/tx9YbH8Gtj3jDx/+YWfpSl6mHW66BOoO9y/iQ5HgFQ6G0W7TBcvD0SLr598TTLfv7brfTDv8/r1wwvv9oCKX7gyKCof9zculIZv2q8BlU/QZ/OTS8MC3i3yeET8NseogoAletTMLpoNl8equ04XjrY3wm7f7wWrhd3DJreVrj1Qs0C53SVKx0lQRGVYKrkREREqp+wWu5xW/yK47wl93xss635tNwdO/hr98vNtGXWeVMS8LuawfuHht/rSXC4a9vQqW5zL0W8rjZf2OOSzkt/2JxPzSpY7xbvMStQNbLz9v32Z45Ic993vh1TDnVZ2BUWFJ0IHwPL+d23AHOipJEjnkKLgSEREpp8FcZEfiMPfU4iVdF/6odCUSntcZbO1aBT87p2upTiQBl97rtw0qh11r4Mmf9TzGmSfC+Fml399IBToqSRI55Oj2iYiISLl1fxBxXxf1+epk0Qp/uhylLKGQXyoUq4Spx/ilOoX7e9O1MPnw0u2vu+E4xu4G8x2IiAyRSq5EREQOJsNdyjISpTqqMiciY5SCKxERkYPNcFcnG4nqa6oyJyJjkIIrkQLO80hv2kS2oYFIfT2xww7DynwndST2KSIiIiKlp+BKJOA8j+a77mLbZ67EJZNYIsH0b3ydmrPOKmmw4zwPl07jkklyySQtd9/Nzm98E9Lpsu1TRERERMpPwZUc1MpdquM8D5dM4rW1kVy1mq2f+jSk0/6yZJKtn/wUdR/5COHaWlwqhUun8FIpXLJgPJXGpfLj/stLF85Pdoy7VAqXyfSenmSSbZ+5krmLFhGfO7dkxyky2qmEV0RERoNhD67MbBbwC2Aq4AHXOue+Z2YTgRuBOcBG4G3Oub1D3Y/nOTbubmVnU5IptQnmTKoiFLIDP4BD2HBf3HQvSSIeZ+oX/x+VJ5yAa0/itbXi2tvx2tqCV+F4G157G67XZf60a2vrOxGZDI3fLvJgy2iUUCyGxeNYIk4oFvfH43FCsRjh6hpscoJQPIZ1LIsRisexeKJjPL1tG3uvu77rcSeTZBsbhyW48nI5WrevJte0nXDtNKqmLSIUDpd9vyKDMVylyr3R/4lI/5RPRHwjUXKVBT7hnHvKzGqAJ83sLuDdwN3Oua+b2ZXAlcBnhrIDz3PcuWIHV9z0DMmMRyIa4jtvO5Zzlk5VRh+ioV7cuFwOr7UVr6WFXEsLXsHLn/aXea3dpltayO7dS2bz5s6NpVLs+PwXBpReSyQIVVYSqqjwh5WVWGUF0YkTO6Y7llVVYhUVeK1tNH7/+1BYshSLMetHPyK+YH4QGMWxWAwrUQCS2rCBfTfc6AePBWmP1NWVZPt98XI52p/7EzW3X97xUM3W1/+QiqMvVIAl/SrnzRbnnF9ttrkZr6WV5OrVbPvUpzry5nCW8Or/RKR/yicinYY9uHLObQe2B+PNZvYiMAO4ADgtWO164F6GGFxt3N3akcEBkhmPK256hsUfOZV5ddUHdgCHIJfJ0Pb0Mz2rzF3xCWrf8AYsFCoaHOVaW/svGQIwI1RVRai6mlB1FeGqakLV1URi0a7BVWDiBz5AxdKlhKoquwRKVllJqLKKUEViSMGP8zxis2f1CCCrXvHyst0djx12GNO/8fUe+4wddlhZ9leodftqam6/nOeTU8hZiGMz66m6/XKa65ZQM/1w2LMOmndAjbpIlq76utniMhn/HNDcTK7jfNBccH5o7ry50tzS48ZLfpxcru80DFMJr/5PZDQZqeqzyicinUa0zZWZzQGOAx4FpgSBF8657WZW38t7LgUuBZg9e3bR7e5sSnZk8LxkxqOhOTmmMvmBnkSd55Hbs4dsQwOZhgayOxvINnS+Mo0NZBsaye3eDc713EAuR/Pf/054/LiOgCg8fjyxWTMJBdOh6irC1cF4fp3qfCAVvCori6Y7tWEDG974ph6lOuPf9MayXFBZKETNWWcxd9Eiso2NROrqyv7HVM599pdXck3bIdNO1sIcF1oHQDadInb/VVC/EB65GrLJzod7Lj5PAdZBqpQXVC6dJtfU5L/278frGG8i17Qfb38T6W1babn7HvD886xLJtn60Y9BJALZbL/7sFiMUE1NcH6oIVRdTXTmzM5zRXU14ZrO84bX2sqO//zPjps7EJTwTp48pGPskpZ+8smh8n8io185q88qn4gM3IgFV2ZWDfwB+JhzrslsYMXGzrlrgWsBli1bVuSKH6bUJkhEQ10yuhkk096YqRPc10kUM3L79pFtaOwMlhobOoOo/Pxdu3peCJkRnjSJSH0d0bp6KpYeSaS+HkIhdv3f/3WtMhePM/cPvy/bneORKNWxUIj43LnD2plEufbZX14J106DaAVHpddzQ/bVbHDTeXX4WU5a+1dYfWvnipl2+ONl8MEjwXkqzTrIFDsXTPuPr1F5wgl+6VFhkLQ/CJSCICkfRHUEUE1NuPb2PvdnlZWEEomOwKpQ7TlnE1+4iFBNdddAKT9eU+OXUkfCkGqCVDMkg2HH9P5gfFvHMpfaTs2/hMhu30Vyb5gdz05j+mcuJVZb9C9gcJ9fP/mk2P9JLGLU1yQOeN8y9pW6JMllsx1thvOvfNvj1MZNNHzzmx3/66WsPjuUfGIUPU2IjHkjElyZWRQ/sPq1c+7mYPZOM5sWlFpNAxqGuv05k6r4ztuO7SiijoaNWDjEZb96kguOnc6fn9lKKutGdZ3g5MqVPavpfezjROrrye3diyu4w5sXHjeOSH09kfp64vPnB+N1ROrriQbzI5MnY9Foj/c6zyO+YP6wBzrDXZJ0KKmatojW1/+Qqtsv56LMfawKLeDj8S+zbm+WD4dv5v2RO0hYEEx7Odyj12BPXa/SrAE4kAsq53l+O8XmZnLNLXjNTUHboxY/EGpuIdfcFFSpayazs4H2p57qKF12ySTbPvmpPvcRqqoiNK6WcO04wrW1xOYcRqg2mB5X22U8XFNDqGDczCO1ejlbL7sE85KEox6hqCNcGabutHFEqvdAcqMfIO1qgq3dAqhkE2Ra+/8gLAzxGkjUYhYinN6GzZ5FaP5U5r7xlcTW/S/WciRMnj+gz3Wouv+fAEyuijNFwdWoM5xV5lw6Ta61laa//pWd//lf/n91NMqk97yb+OGH+73UtnZ2ruS1B4FSvvOlXuYX+2/vMx3DVH22ez6JhY1wOMRHb3yGn19yApXx8Ki/qS0yUOaKVfcq5w79IqrrgT3OuY8VzP8WsLugQ4uJzrlP97WtZcuWuSeeeKLosnwJVUNzkvqaBJXRMB+58Rke27Cny3qJaIjbD/I6wV4qRWrlStqfX05y+XKSK5aTWruuaFW9ypNPpmLJER1BVMerro5QPH5A6ej4Y1KgM1KG/G/UW17p3ltgrH4B//uXx7nm0UbG0cJ3oj/iVeHnITEekvu6vjlaAZc94JdgqX1WB+d57L/1Vrb/vy92XFBN+Jd3EJ8zB6+11Q+UmprJtTR3CZQ6A6aW4tVwC1gs5gdA1dVgRnrDhh7rTLjkXVQec0xnYFRb65cixRyWa/NLiJJNnSVFHdP7uk13W55L9f8hRKsgUQvx2o4AiXhNMF3bbbqmYN2CZdFKv8oBwK41cM2pfilqxz6C39/khUU/ov4T2VOv+aTg/2TT7jY+84fnueiEWXz9zUcPZTcSGNZgp1gJ79f/i+rTTsO1t3f2PNveHgQ9PUuGuvQ621swFIzTxyM3egiHu3SyZJVBZ0sV3TpfqgzaFufnd6znD7N79rDlYx/vUX127h9v7i24Kls+qa9JkM56vOe6x9nbmibnHJnc6L6pLYesQf9QRyK4eiXwAPA8flfsAJ/Db3d1EzAb2Ay81Tm3p+hGAn0FV8U8tLaRd/zksR7zb7j0JF4+78Dr7peCS6dJrllDcvkKksuX0758Oak1azqK+cMTJ5I46kiiM2ey76bfdTmB93MSldGv5MFVMU9u3MWe5X/n2w/tY6U3i/dH/8qHzz+FcX+5tOfKSy7wg6lDpH2Wc86vcrtjB5kdO8jubCCz0x9md+wgs3Mnme3b++7IJRQiVFPjlwjV1PhV5oJAKVRbG7Q1qiFcW0MoaI8UrkoQihvheIhQDEKk/ZKgdCuZTSvZfe3/EXJpQlFHKOoRrghRfdLRhCOua4CUaur/IKOVQZAzzg90EuN6Trc04p69gey0M8hmKwlXholuuR07/3uw8LUQKnFvk54HK2/1q6cGPVv28zsr6UVjd9+8cyVX37uO7110LBccO2MouzrkDbZ9kHPOf25gPoBpbfWDoLY2vLbWrvPbCh7D0erPy+7ZQ3L58n5vXPQpEunsRKlYMNQt8Mk0NrLv17/psZlp//WfVJ10ElZRQaiqCotGGWjTiL4Moc1VWfMJwKPrd3PRtY9Q+KmPhpvaMrYN8sbOoPPJSPQW+E96T+gZ5dz31HEVPeoER0LGpKoDK9EZKpfNklq/nuTzfmlU+/IVpFau7Cj2D40bR8XSpVS/970kjjqSiiOPJDJ1KmaG8zyqTjxxRHqZk7FtQlWCT75Yx2Wn1vP3dS38ZMvZ3PX3EL8Iz+awXEHvjRaCVXd2LcnItMPv3wdv+A4seA3UzugsfcjzvGEt6XLZLOm1K8ju3ElkylRiC5ZgkZ6nPpfNkt21KwiSGsju3EFmx06yO3d2BlA7d/aslhMKEZk8mcjUqcTnzSM2dw6t99yFRRyh/CvqqLv0EioXz8EshWXaINUC6VZI54eNndNtrbC3YLnrvee8KDD1mOAYPPCyIaxqPJZsgNppMHFu8QCpx3QwHu5ZLbiHXWuwp64juuH3dKwdrYBJC0ofWIH/+1h8Hly2BFp2QPXIlpBecdYiHtuwh8/d/DzjK6LEIqFRX92pXKVILpcLqrg2B9Va/WFq/QZ2/eAHXdoHbf34FVQuOx4cPYIlr61t4A14zDqDnaoqQpWVuFyuaGA17i1vIbFoYecjOyoq/F5ni5QMWSw2qGNPbdjA/j/c3KNTpopjjyU6ffqgtjUQB2NVes85un/q6uhCuhuuUmznHF5bG0133MGOr37NL+WNx5nxzW+U9LmJw15yVUqDLbnq/hyGkIHn4JT5k7jitYtIZ70h/0H298Nwnkd64yaSK/yqfe3PLyf54osdjcdDVVUkli4lceSRVBzpD6OzZvV5N0vV9A45w1Jy1T2fRMNGNBzCvCz/FbmW87mv85lYNeMI/erNvW8sVu1X26pbDJMX+a+mrXDXF4elpMtlszTf8We2fuFrkEpBLMaEN59PZOpMso27/AAqKHXK7trV4+LNolEik8YRnVhNZFwFkXExotVhIlUQrcgRSaSIRNqwdPPgSof8rfufT6yq8xWv6TodK5yuhnh11+lYNbQ24m79KOnZbyabTBCpzBHb/HvsHTf2VmXuwA2+JGm4lf2O/JY9bZz9P/fTls7hYFRXd+qzgyTn/PZ+zc1BxyfNfhXWLsNgWXOz31lKwTyvdQDt6wrE5szxq7Hnn0FYWFJUlQ96qgrmdV9WiSUSPf47e+t9tpy1PUb64dcDUPZ8sr6xhdd//4EeHV1c/S8v4+ylU8dEB2NjzXB351+0yu5//SdVp5yCa0/i2tsKqt52a4vYUY23SBvF9q5Vdl2+ym6RuKfU1WcPqeAKutYJrquO88j6PXzplhVkPf9zGMofZPcfBvE4Uz7zacLjxpN8YYVfxW/FCr8tBf6XmDjiiI7SqMSRRxKbM+dgOdnKwWtYgivoWXd+x/4k77nuMVJZx6une5w5v4qfveC45eLp1Fx/ete2MJEEnPc9v9Rl12poXAmNq6F5W+87rJ7ivy8chVAUwpFgWGw64g/Dsc7xYJkjRHpPitSOFlLb95PcuIP2VVvIpazHxxeKh4nUhIlWQaQiRzSRJhJrJ5JI+YFTpUc45vUoeMPCRUp/xnVMu2QzqW172fvXR8m15XChOBPffgGVxx2DzXlFZ0AVqShNIDJSgU6+BPIgKEkqYlguGs/+n/vJ5Dr/Q0dLdSeXTpNtbCSz0y+ZbX/hBfb87Oc9ni1mlZX9P6vQrLOaa22+A5QawjW1ftXWbsNwrd9hSm7fPjZfepl/0yO/qTIGOyMV6BzkN0HLnk+K3ayrikdoSWZ5w9HTuHP59lHVwZjnPDY1baKxrZH6ynpm184mZOX9PodznwPNJy6Xw8sHPu3tnePJJF5bOy7Z3jHfaw+CoI7xpL8s2Y5raye7fx/pXvoRGCirqOhsm9ilum6VP10wL7d7t9+sppvZv7ieqhNPLLr5waZnRJ9zVVa9VD0KhYx5ddUdf35m5l8PBDdVkhmPj9/4NIs/+qoB/0GmN21i66c/0/knkUqx86tf87cfjRJfvJja886l4sijSBx5JPH584pWS5KDwDBXWRuxffajez7Z2ZQklfVPfPdtC3HfNj+Yer59Iq+48P+wP32w48LeXfh/2BHn9zyG5H547ndw+yd67nDa0VAxCbwM5DLgZf1hLu2Pp9uCZVnwMrhsmmxThuSuHKndOVJ7HKl9Rnp/CJfrPA9Gq7JUTM4QH5clVp0lWpkjFPWITq4hMnlKH1XlugZMXdYp7GihCNu1hvhv3s7E976PbHuESEXWL0ma/QGYOO8Av5kiRqrKXCjkl4yVq3TsILezKdklsILSVnca6t1jr7W1s1rrzp1kd+zs2i6woYHcrl0DSkP1K19JfOHCokFSx7C6ekjBgvM8ZnzzG8NWtX2kqsyNxOM9DiahkHHO0qks/sipHTfrJlTG+NiNz/DnZzpvuI2Ghw57zuPvm/7O5//5eZK5JIlwgqteeRVnHnZm2YIdz3k8sPl+dq9dzrhmj621YTbNX8qps181qH166XTHg9q91tbOB7a3tgXz/Pnprdtouu22jhst+Z6oo9OnBwGV3/nLYHuthCAASiQIVVT4gU8iCHoqKosGVuMvvojE4YcXVNcN2jRWVXYNmCoqBpWPUxs2sP+WW3uUYkfq6gZ9TL0Zm1f4g7iTu7MpSTrb9UtNZR03P7WFj5+5iE172notsna5HK0PP8LuH/+4y923vKlf/QrjL7xw0PW0pcBwBh7DVQKQy/rtlLIpyCRh9e3w18/50wdf9Sqg+DNMAC7/7bO84ah5HHvCb5li+9lt46kNLeY0jB6pT4yDea/2j7F7r29n/1fRi3TnHNnGRtJr15Jas4bkmjWk1qwhvXYdXmv+xBgmMmUK8SULqVq4kPjChcQXzCN+2Gwym1ex6b2X0r4rCc7IZQyLVzD3huuILD6mpJ9Rh4nzsTO/RPyPlxEv/B1NLGOX4Yd4oDMSessTv3pkM0umjWNXS2rI1Z1669mu8oQTyDU0dARN2YadPdoFes3NPbYXHjeOyJQpRKZOIbF0CZEpU4lMqSc6dSqR+il4qSSb3vmuHqVIdR//WNmCgpF6aPuhHOiMlO436wAue9Vc7lvd2GW9/M2JOZOqBlxd8EBKdZxztGZaaUo3+a9UU5/jje2NrN+3nphFCBMik8vwyfs+SSKSIGIRzIywhXsMQxYiZKGiy4xgnVCIEKEe63rtSWLbGqlatZWKthxVmRCJ6TNZU3UNE3Jx4imPeNIjlswSS+WItGeItKcJt6cJtacItSahPYll+n+4O2ZYItGjBBvniM6YQXTmTD84qqwIAqUKf7wjSEp0liAFr/y0xeO95u3equxOfNe7ypJXh+MZqmOzWmCxbnsjCfjgP3t0G72JqZz9vX/2eOCwc3DE1BpeX+843LWyr7KWyYcv4LTFU8hu3sS+P/6J/X/+M9kdOwhVV/v1OAt+kOq5rwRKHex4nt/OJ5v0t9d9uHst3PFpv7QkLxSBEy/z28LkUpBNdwZGuXTvwx7zCt7r+mmU3XsX08NWLbC77lU7EtEQl5+2gL+9sJPnt+7vsm6fVaM8D7fmb6RXPUu21YhUQezwo7GFr/Ubua9ZQyoIpFKr/UAqt79z++EJE4gvWkR8wQI/iFq0kPiCBYRra4um229zdSvb/t9XO0+iX/siNa87r7ylxwd3lblDwbBXd4pHjFMX1nH3ygYmVMZoTma6dD199hH1ZF/a3GdJVK6lhfTGTbQ9/jgN3/52z4e8d1fQmUp0Sn2PoCk6dQqR+npCFRV9biaXy9J4x63s+0JnPhn/H1+k7nXnEQ6XL5+MRBUr6aLs+aQ3xdpiAbzl+BksO2wiX751Rcd/TW/VBfMlSZ974HOkvBSxUIz3HvleFk5YSHO6ud+gqTndTK6PzoLCFqYmVkNtrJbaWC0GVO1LUfPUWiraclgkTPYVx5GbUcfkyjpyLofnvC6vnMth6SyRliTR1jTR1iSxtjTRljSxNv8VbcsQb80Qb8sQb8uSaMuQaMuRaM8SyfZ/jZ6MQnsM2uP5ofnDYF5bHJIxo63LOtAeMzLxMLmqOF5FHEskCDsjtHk7sYwjmoWI5wi7MJXHv4yq2klEQhEioQjRULRjmB8vnD+Q8fx7zRnNDz9I+/evJdKeIhKJM/lTn2DqmW8gEasgGop2BJul0L00cH9NiEkLjuyrNFBtrgDY8ABcf27P+XNfBRPmwHM3dpQSuAv/j4eiL6dx80omu73ssolUT1vEim1NXHvvGlKZHG/Y8DBv2PIE0195ItGN6/GefxZCIapOfSXj3/hGqk47jdb77juYG62WRjlLkZyDfA9qqWZIN0PDSrj1Iz2DnePfHZR+JCHbHgx7CZgy7Z3rDOT5PH0JRSES99v6dB8WmxeJQzgOkVi3YcHyfZv9bsy7e/dtMOfU7nNHLLiCnu2w5kyq4pH1u4o+3uCqC5fyjpMO63EydJ5H0x13sO2zn/N76QmHiS+YT27PXrKNnXcxQ9XVfvC00A+e4ov88cikSYNL8+BPoiWhi8YRNywXjcXyxG3PbeOKm54l6zmOqYETp1fxbLvxozltNH7uc/7d2ViMie98J+Hx48ls3kR6w0ZSmzaSa+y7ut74f3kHVSee5AdSU6f6D33v5SaBc46MlyGdS5P20qRzaTK5TMd44byXml/i/579P06tOJKKpCOVCHN/+3Ncfty/M7t2NrFwjFgoRjwcJxqOEg/HiYVi/vxwjEho8AHYSFWxUr7sYsSCq+43J2IR4/jZE3l0w26cg+PmxDhmbpqa2DhueSLFz959EnMnV7GtdRur96xmzb41PN3wNA9ufZCe/RF2ClvYD47itR1BUo/pXsarolVd/sN2vfAMjRe/u2tNpUiEqre+kVg0gbe/idz+/eSamvyOXfY3kWtqwhWp2VQoVBO0RSx4sHv+Ye6pfXto/cOferxn4rf+k8mvPgOrqCAbcqRyqc5XNtV1Ongls0nSuTTJXLdhwfydrTvJNjaSXbeBdMgjGzGyM+vJVcYJhyNkvSxZL0vGy/QY7ytQPVCGEQvHiIaiHeecWChGNOwHaPnxWChGJBwsC0U75uXfFw1Fac20cvOam8m6zptXiXCCm867ibnj1KHF4EquLAyVE6C1259X7XTcGV/BbvtIlzYj273FbHrv+/jr1GOoa9/HyduXk8hlaKubxox/uYhJb7yQ6JT6js0c5I1WD1yxUqQL/w8WnNnZXXSqqSA4Kjbd3PnqmC4Ipvor0SkUSfivaEUwrIRowu8kINp9WcEwWlGwTrdh6y740wf9wLtwP++/G+qXlKfkYXAPRx3R4KqY9Y0tXPn7p7jymBhrNu/mzt1x7tuSwnOweGoNb102iwuPmkLlxjW0PvYYLffeS9uTT3UciAekY0bo5S/DW7KA7JzpZA6bSnbyOLIuRy7/8vw7gvkTeLFxz3lkXbZzXZdlb3Ivt667tctJP2IR3rX0XcyonkFFpIJEJEEinKAiUtExXTg/EUkMrm77CFw0Sg/DctFYrF3UU5v2kPvn/fz5zw9yz9SjqW/fy8uT2zlp1UNMbdnVI2HhSZOIHXaY36nRrOk0Ta1mfXYnL976K7aPy5GMQSYM2VgYO+FYqIj7QVE/gVPWG0A1oBIJW7gj0CoMuroHYYVBWiqX4u7Nd/fImx84+gPMqJ5BPBKnIlxBPBInEU4QD8e7jCci/nCggd1I5cuDPKAbseAKIJvL8eKu9exsa2BKZT1HTJ7H7c9v55qHnmLFljTh+E4iNSuYXZ+ioqKFxtRmWjItHe+fXDGZ5lQzJ1YdwYxsDV5FnLtanuSjx3+Uk6efTG28lspIZb8lHi6d9h/D0dhIpqHBDy4KXw3+MLd7d6+dLoSqq4MAaRzhcV0DpHDhg9zz48E6oZoaLNz74yuSGzawsUiVuTk3/4HEvNK34d24fyP//vfLuWTca5nYYuypdly//2/875k/6C3w6JD/L84HXMUCsGLjL+x+ge8//f0e27vo8IuYVj2t43yXyWU6tlt4Dsx4/rkvm8v2mJc/L2a9bJdzZLGA/Gdn/4wTpp5Q7NAUXAG9VydLTIBfnNdjdReKkJt4DJmKxYTGTyGy6U80pN/Kvut+6S8HNtRO44ZFZ/DAjGOoqYjyxuNmcNEJs1ky3a+O5OWybNr9Ao2tO6mvmsLsSUsIlbE6RcdxHmhJkpfzOxpo3wvt+yCZH+4rmLcP9m+BDfcPLgDqYH6nAPHqoKvpYBiv9ud3ma7xu5+O1/jpuu2jPYOdyx6AukVDSEc/RqLXtcHt86ALrjKZDI133krT//taR6mtfeFzPNUWZfP9dzN9/YssbdxBRca/gNo2Ocxzsz1emG1smGo0jANXhp6hIhYhZCHMjNSBllhCR5A1kGAsnUv3uCsWDUX5+qlfZ/HExVTHqqmJ1hAdyPOkBuggv4AbCWW/aCzWS2z9FR+nfe9+mq+9pke3/rsS49hUU0/IUsRDu2ivaqPxXa9n5/QoW5q3sKV5C7uTu7u8pyIFVUlH1DMiEycRqamhNj6uI0jJ35XNBy75u7PF5hUu6/6+XW27uPKBK0l7nbUEYqEY//HK/2BSYhJpL00qlyKTy5DKpTqDuJw/Pz/eY37BdPd5LZkW9qe6Vikeikgo0iPgyo8nwomOgCzjZbj3pXt7BHPvP+r9TK+e3vG+eCTeOV74Kph/MAd0gzwXjFzJVZHP5orjr2Bz0zZ+vfJ6POc6+g1yuQReairTK+fxillHct7i41ladzi7W3fR/Pe7CP/HDzv+f3JfuJzqM8/ksPFz8JLJrgFS0cCpgdy+fT0TGAoRmTSJSF0dkfp6v7ODaJR9N93UtbpuPM7cP/yexIIFB/R59Ga4e7kcid/sxv0beeutbyWZ6wwg+ylJOuD9veWWt5DyOq8NVHJVoM8MXqzNw551PUoJ3JI3kd30IuGmlXhpY8/aKvatqyaXNEIxj1DEI5cKeiBLVND4g19w85Ysty/fQTrrcczMcVy0bCZVNU/ztaf/s/PHeOLnOHP+eeULsDwPb83f2NT4HI0GU9MpZtYeRmjqUX4wlNznB0btezvHuwdM7fv6fyZPpAIqxvvdXe/b3HP5yy6BqUcFwVFh4FTw6qd3tb6OcUSCneFuKzPwfY5ocJXLZdm39kXSDTuI1U9l/IIj2LNmBU9d/i42jUsTcsbkJsesRqgMrtG2TIIVs40XZlby3JQ6khVTWbBlPydu2MLU1hbCHoQjUaqu/DhT5y7taPwbCUU6GvXmxyMWIRwa2PK8YifteCjOda+7jimVU0hmk7Rl20jmkiSzSdqz7R3D9mw7yVyRedlkr/Pz431VU+lIRzhOdbSamlgNNbEaqqPVfuBVMF4bq+2cH63pGNbE/PFIKKKSsuJKetFYrIQqtW4dG978Fr96ay8csLsG1r/9FfylZRVrpmfJxgu7Njcmxacwb/wsZtXOYlbNLGZWzyRkIb77xHd4z7hzmNQaGtTd46E4WC6o4qE417z2Guor60lmkx1VmVK5FMlcsqO6U348metcp/u87sub0k3sSe4pSdrDFu4/GAvHyXgZHtr2UJeALmxhLl58MVOrpnapttQl8C0IkIutEwv76+U7Ucgbwvc4YsHVhv0beNutb+vy/edFLMIrqo/iiFw9FTUTuX7HcxxbeSmPr3XsaEpSHY/w+oUTeEOkkclXfY5QprDpQIjojBnk9u/HaypyfRON+u0U6+qCwKmuc7yujmgQSIUnTuxRonSodOefD9B3te9icsVkDqs9rOylu8N5/hmOfDJ2g6tiijSmd7NPZcM7L/M7Gwg+isSkDHXH5aiatLcjJsh6sDcxnj21E9hTOYGd0QRr0rCmPcMOz6MlkqMt2kYmnCJsHhFgRmU9NZFKYhYiQZiYGXGMuMsPIQ7Enet4xbwcCc8j5nkkvBwxL0c8lyXuZf1hNk08myaWSUKmlUy2nQrPo/dCZfz2PYnxfpBUMaFzPBFMd4wXWR5N+NsYXPW10lHHAIVGLLjKN3jf+4WvsLE2xcq5Udrnz6B21VaOWpuhPrgBvasWdo6D7KuWUXfuhcw87Ehm1cwiYgnufnEnP3toFU9uaMHDmJBsYm5LA4ctncq8YxZy+uHzWVBfTSLa5695UEbionHDvg289da3drkrFgvF+NQJn6IqWkVTuomWdAstmRaa0820ZFpoSbfQnGn2p4Nl7dn2Pvbiy5ee7U3u7RLQhS3M+fPPZ0b1jC4BW5cgLtoZoA3FQV5aVrKLxvwFVcfjNiIR4vPmkd64sWh3xJO+eRV//+mXuf/wHMsPM/ZX+0mZaNUsXtnKjG1R9kTms2bhmazcP4WcF2FSVYzXLK7nrCVTOHVhHfGojViJx1i9oOotmPvx2T9mauXUou1QerRb6aUtS2/z96f2s7NtZ8mPJc+wzhLJcIyQhdjdvrvLuaDUd+RhCG0Tu50rZtXM4roV13H1M1eT9tIYxuzYFPa4Fr768q8y7alNhL72g44Hv3vnnk5s/EQqGprZu3Yj6S1bqGzZ13UfGJ4ZYecRP/54qhYv7ihx6gii6usJjxt3QIHJmG8CMkJG4vwziP0puOqL8zya//Y3tl35Wb8aRyRCePz4Ls/8aI3Bpimw56Nv5bd776DaRdjrtbOfHK7Ixxt1jkm5HJNyOSbnPGo8jyyQNCNtRsqMVCgYBq+0Gclg3DuQ3k+cIxKkIeocEYx5NbOoq5pGTWI8NYmJ1FbWU1MxkZp4TZfGnPk739HQAKsmFZaUhYx6D2bXHUVo4WsP5WBnuA1bcNW9lGp7cie3fe8KmuJZFm2Dozc4KtKQjYbYV+mIpxw1wTWLJRLU3fgLJh1+VI/tPr5xF49vf5RVL+6mcU+Uzak4O9riZIMbuyGDOZOrWDy1hsVTazl8ag2Lp9Ywa0LlkB8sOVovGjNehtZ0K82ZzoCrR2CWbmH9/vU8sPWBHu+PhWJdqnn1piJS0SPgKgzE8ueKwunKSCXPNT7Ht5/4NikvdTCWlpXsorFYN8GYUXP22TTffTdkMgBsmwj3Hhfl/lPGsSezj5o2OGa9x9LtEY5/82VcE3mYN1Qs69KO4b9O+R6bGiq564Wd3LOygeZklngkxCsXTGbmxAriiT1UVLRiXg1H1i/gNYdPOagfsDpYw5k3D6bSud+84TdMr57epb1cvo1IYRXLwjYi3duZdF8nk8uwtWUrD257sEc6StmWBAbZq2ZBp0JVTRn+GV7Po6lVbG/bzgSr4nUPtPOaJ9LUZqN4Z55CZQqS/7ivZ9umUIjotGlEZ84kOmsmoekzeHJ3ln88u5l7ph/LnopxYEbUyzJjfAULZkxkXl0VcyZVMXey/5pSGy9Zj3NySNFDhPOKVeNoX7mSrZ/6dMefIdksyRisWBDmviUeK2eF2F0bfIa7/whAI3T5WD+09L2cOPNUJlVMYlLFJGoi1ax+6TE+cc8HyXg59qWmk85MJp2ZSnXocLa1hEi7CCkXwSIxZk0ex9wpE5g/dSKHT6thXl0Fk2tCfp323u6KFdwZy99ZW797FTdvuJUskDUjf497XDhCY6qR5ub1NKWaurT7KKYyUtlRLakw8KqN+8OaqD9eHa1mdft6frrhRtJemngoztemH8nZRs/nGZXQQX53fEzKl1Jt+dpXeGJmiv3VIQ7b6XjDZkfEg2SEjhsNdVd/j7r9zX4XznR24Tx+wRFFtz2pKsFN/0xw3rJ5zFnYzPHZGm55PMlXzj+a1nSOVTuaWLmjmRXbmrhj+Y6O/9fKWJiFU2pYPKXGD7im+cHXxKr+nyEXshBzx80tS3Wq3vZ35mFnsnDCwgO6aIyGooxPjGd8Ynyf623cv5HHdzxetL76zJqZfjAWlIwVDvMBWr70LB+sNaeb2dayraNErVi1ne6SuSSfvO+TLJm0hOnV05kQn8D4xHgmJiZ2GR8f94ex8OCf/TdS54JsQ0PXwArAOSre8Vb2nbKEx2/6AX85JseqWf6z3Y6bMI9w02YunX4eddMi7Kl2XJN8hLcuuYgvP/Rl/8K+xb+wXzplHkdNDXHu0dPJ5Dwe27CHu17Yye3Pb+fulQ0FO9xPyJ7kohNmsXTGOKaPr2BG8KqKj96/8eHMm6XKl4Mxu3Y2V73yqh4B3YIJC4atdC4RTjC5YnLJ91VMseuul5o2M+mxNTx3y4+56eU5PIOX76zlM8njmXrb44Ry+baJGUJ33Eu6trZopxGzfvJjqk8+ucu8pY3NzL7rLi76zrdYH5/ItvHTeOk159EwrpbNe1q5f00j6Wxn28fKWJjDJlUxb3IVcyZXMndyNXMnVzJnUhUTq2IKvKRkxmTJVY+GxtEoiSVLSL74AqQzJCPw9Hz40ytCbJjmn+Dq98OiLR5zdkeYcda5zHr5mXzigU/1bPB27k3MHd/1j2Dz7iaWN9zFl578escJ9CvHX8mR9WdRV1PFusYWVu1oZvXOZlYGw+37O09+1fEIi6ZUc/jUGhZNqeHwKTUsmlrD5Op4r8e+cf8G3tqtvnL39DnnaM+2dzzvIX8hVfiMh+7zO8ZTTTRnej6MsrtoKEp1tJrKaCVV0SqqolX+eKSq63S0iqpIVZf1uq9bGa3s8oczChoDD7eSl1wV+zPcft9dPPL1TxDO5FiwzQ+eW8cnsFSGyvauz3Kru/EXjF9wRFDKtZNY/RTGLzii12fjFHteVm/PMGlLZ1m9s4WV2/2Aa9WOZlbtbGZPa2dpTF1NnMVT/Txz+NQajphW26NqYb677KE+0PVgV+58kvEyPQK0pxqe4ofP/LDHuosmLCLrZdmX2se+1D68XjrAqYpWdQRaExITuoxPiE/whwXjlZFK7t5894i0JentAZfu+u/wruc/RTKXoi40jqOrF/FcegPfPu07NLY39kjra2a/hpeaXxrQhf1DaxuLPuIgbEau23/2uIooM8ZXBAFXghkTKroEX5Or4wP6vY/1fDJSDvLSuZJXny1sjzTlC5+noXUn999yNbGMY9EWx/h8k8P8A0W7mf2rX/LS+z/QI78Ve26o5znuXbmTxlVrmdDWxN7KWuqC55GGQobnObbtb2fjrjY27GphQzDcuLuNl/a0kfU691+biHSUcM2ZXNVlvDYR7bJP5ZNDzuivFmhm5wDfA8LAT5xzX+9t3d4uGFMbNrD+wjd2eRaBZ7Dx5Dn8dsZmls+B2Y3G4VscR+yMUPnB9xH2XJfqGj8484es3rt6QCcpz3M8uHYnzttIKrebeHgSFprDKQt6r8Kxvz3Dmp3+xeLqHX7QtWpnM/vaMh3rTKqKdQZcwXDRlGpqElGyuRx/Wfc3/uOxL3ak7wsnfpU3zH8tkT669RyMnJejNdtKU6qJh7c9zFcf+WqPdV4353XUxmtpzbTSmmmlLdPmj2c7p9uybb1eZHVXEanoCLwiFmH9/vU92pK8fu7rqa+s97v5Dbr7zTcqjoVjxENdGxnHwjES4UTnusErHOr6OY1UxwAd3dG2NjClyu+OtpfvsKTBVY+2JOEw2foJRLb71WR3jIdYBia0QmTKFCZ/7CM0fOVrB/yQ0WLPBhron5NzjsaWlB9oBflm5Y4m1uxsIRXcoSysWriovoa2TI7rHtpAOuv6DOZKabj/gDu7NG5kSmVdX7+hkhhI7045L0dTuom9qb3sTQavfsZ769kxYpEepfDD1Zak2EXjpq9ewlVtN7M3tbdomg6rPeyALqiLPWA1EQ1x67+/kppElK372ti6L8nWve1s2+e/tgav5mTXzykWDjFtfILp4yoKAq8EM8ZXMn18gunjK4iFQwO+6VFKw51PRuLC+CA/F5S3+myBljhUpTp3OO2aq9nx0St6djH+pz+SXrVqwJ1GDPX/JJPz2LK3nY27Wlm/q5WNu1rZELy27W/vEvdNro4xd3IVh02qIp31uGP5djI5RyxifOX8I3nDUdOoikcIl+l7VT4Z8f2N7uDKzMLAauAsYAvwOHCxc+6FYuv3Fly1Pvoomy95N+A/H+T+pcYvzzDaE2FODi/ibT9Zy7QdKf/u4xc+wrZlM7nyn5/rcUENDPgP8kAuGPPyF46rd7R0BF2rdvolXW3pzhKDGeMrmDmhghe37+ekhTGqKpKYq+ThVRm+fP6RzJlcRSwcIhoOEYuE/PFIiGjYiIVDQyr63rB/I28rdjFVpCSv2HG1Z9tpy7Z1BGHdA7GO8YJlW1u28tyu53psryJS0fF8hAMRsUiX4CxEiO2t27sEcyFCHD/leGrjtR0903V/2njEIp3j3ZYXvqdjmXW+1wjx2Pan+eWLPyXtpUmEE3z+xK9ybvEguaTBVXL9eja+6c0df24OWDkTViypYsHGNMesznTs0BIJ6n/3a5yXG1AJ1XDLBfkvH3Dlqxdu3t1WtN++GeMrGF8ZpSoeoToeCYZhqmKRLvOqeswLdyyrjBV/YvxgSudKYbj3B/4F3G3r/sZVBTd3+vjdDkj+PJEPtPYk97AvtY+9yb2s2LWCOzbe0eM9P33tTzlx2onFNleyi8bCNiOJphS/yz3KE60vsmD8As6ffz5XP3N1yW/GHMh32pTMdAZce9v9IGxfZxC2symJ1y1TTKiMsq890+WCMhyC954yl2njKkhEwySioc5hJEy8y7wwiUjn+EAuMg+FfDIKjrFk+aTwussBm+vg/iONptkTef3dzczd0lnjoL8gChjRTiOSmRyb97SxvrGVjbtbOwKwdQ0t7G7tvR1rLBKiIhqmMhamIhqmotuwMpYfj1ARC1EZi5Aosn5lLNwxPx4J8fC63Xz+T8+TGoYbhMonpcknB1tw9Qrgy865s4PpzwI45/6r2Pq9BVe7Vz3PtovfyZ+PTXPbiSFaK4yXrzYue8s3aJ1Ywe61yxnX7LG/JsSkBUdyyqxXDri6xkjwPMfWfe0d1aJW72zm6c372Lynrf83FxENW0fgFQ37wVcsCL56m5/OeuxK7mRN09PkXJpwKMzSCcczq2YmNYnBt58YiN3t+7jnpbt6dGP7mllnMaliPM55eGTJkSbn0nhkyLkMHulgmCHn0uTI4HUMM8H6ncvz67dkm2ls3wbmAR4WDKtjVURCITxyOHJ4Locji9cxnsMji+PAnk6eS00iHN9NIpzgZ2f9hqOmlPchwrsevI/G932QF2bC44uMh5YYp7wA//bO/yW6e7/fjuoAS6lG2j9W7uQ91/U8R5w8fxIV0TAtqSyt6SytqZw/nsp2uZHRFzOCwCvcGXzFIpjBI+t3d7mADYfg3KOmU1tRumdb5TW1Z7jt+W3kCgqHy7m//D7vWbmTOfVhLJTGeTE2NuR4zeIpZdln4bkgFN1DbNIDfeUTKOFFY7Euo8MW5sZzb2ThhIVlq/JViht2xWRyHjv2dw24ntq8l3tWNpYg1b5o2IhH/OArP+wIwoLgLOs5HljTOObzyXDus9j+EtEQt3/kVObVVRd7S8nyye5Vz9P49nfREEvy/QvCrJppvHqFceV7f07tpl0HZRA1WA+v28XFP360x/x/ffls6qoTtGdytKeztGdytKVzJIOhPz/XOT+doy2TI9f9LscgJKL+dVo4ZERCFgz96XDHdOcw1G29ULfl+fe0p3Pc/eJOcsOUL2Fs5pOD7UppBvBSwfQW4KTCFczsUuBSgNmzZxfdyEvjMoSu/Dce3/i/HPGSx9seizDz0svxpk3l1CnHsGn8Yexq38W8gj/D4WzwPlihkDFrYiWzJlZy5pIpgF9t5HXfu59UtjMHRMPGl85bwqSqOOmcRzrrkck50tmcP+yY57/SWY90zhWZ54+3pbPsb3dkch772zM0NIVIxJZhzuGc8fRex+p4I9FweU6GmZyHeSeQzbXh3wszIuFK/rmqlUi4t26qw0BF8Brs/rK0Z5qhS1mHEYrWEO0lqLDgFYKgxMsDyxUMc0GwlvOng3EXLMu6NMlcM+ARrthMOP4QyVySnW2NHMWBdXHfX15JTajCEgnuPyrNS3XGZ2/KMbcpQfjfa6k78VVEFy44KEupBuOwSVUkoqEe1av+48IjezuJkvMcbd0CrtZUtiMQa0nlus5LdV23oTnVo2Qg58E9qxrKklcyOa/Ln0S595ffZ3Mqx/Mv5QNR/25uOY8xfy4IVWymtv5xPnDE50i1TzjgbfeXTxrbGnt06pFzfpXHcv53hELGvLrqXn+nQxUNhzr+T/LWN7bw0Lqu1RDjEeOP/3YK08dXkMx4JDM5ktlc53jGH09lO8c7hsG8VNafl+r2/n1tGfa2pQ+JfDKc+yy2v2TGo6E5ecC/o/7yyUvjMoQ//2/s+fkP2Topy0dvD3HSW/6d3eNDzFh0FnMXLSoaRMXnzu3RlupgNaU2UfT/5L2nzB305+ucf02WTHu0ZbK0p4sHZMu37ecnD2zo8f4zjqinviZBznNkPYcXDLtOex3TuYJl7ZlcMM//veQ8r2Od1lS2S2AFyidDcbBdLRWLDrt8zc65a4Frwb97Umwj4ysm8u/hP3PxsZcwtS3GntMdn93/J/634syDPpAaqDmTqvju248btmLUfBuA1lT+F+kXT//58lNK/udfuM/3Xvco5y0bTyjSjJet4dYnUvzs3SeVZZ8bdzVz16a7ufbFqzqq+Vx6xOc567BXMmdyTcn3B/D8zjW896539KhuOaWy7oC33V9eyU2vI/eFy3nv139ApCVFOHi6fWb6ZMLhiN+VepHu1EeTOZOq+M7bju2RT+ZMqur1PeGQUZOIUpMY2h2z3trLlCuvDPf+RmKfXc8FNXjZ7/Kbe1Kc+e7EAW+7v3xSX1lPIpwYsR7YhkNv+WTx1NqyVQVSPhm+Y6yvKX8+GV8xkX8P/YlLrngPX2jO0PaBaMd1l4VCoyqI6s1Q/k96Y+aX7sYjYcbR+3/N0TPH8atHNvX4Tj9x1uHKJyXeXynySd6YrBY4Uh0TDLdyVRvpbV+HQj3ce1btZHnDWlyoeVieLTPItislrRZY2JaksJrsqbNfpXxygPs7yOuPj7p9jmRbEv2flG9/B/lvaNTtU/mk/JRPSm8UHOOob3MVwe/Q4gxgK36HFu9wzq0otn5fD7Ib7geHHgqG+6QyEvsciWMcRO9OJe+KXfmkPA6F3+1BfowlfTiq8kl5HOS/oVG5T+WTsecg/w2Nyn2WO58cVMEVgJm9Hvgf/MYzP3POXdXbuoN5SrjIGFDy4EpkjCrpRaPIGKV8ItK/Ud+hBc6524HbRzodIiIiIiIig6HyWhERERERkRJQcCUiIiIiIlICB12bq8Ews0ZgUz+rTQZ2DUNyRpKOcWzo7xh3OefOGcqGB5BX9PmODTpG35DyivIJoGMcK5RPykvHODaUJZ+M6uBqIMzsCefcspFORznpGMeGkTxGfb5jg45x7O57uOgYxwblk/LSMY4N5TpGVQsUEREREREpAQVXIiIiIiIiJXAoBFfXjnQChoGOcWwYyWPU5zs26BjH7r6Hi45xbFA+KS8d49hQlmMc822uREREREREhsOhUHIlIiIiIiJSdgquRERERERESkDBlYiIiIiISAkouBIRERERESkBBVciIiIiIiIloOBKRERERESkBBRciYiIiIiIlICCKxERERERkRJQcCUiIiIiIlICCq5GETM7zcxOLtG2qs3sGjNbZ2YrzOx+MztpiNu618yWDWL9OWa2fIj7Ot/MrhzKew+EmV1oZksKpgd1zH1s93YzGz/Adb9sZlvN7Jng9foD3f9YpbxyaOeVYP0Pm9mq4Dv75oHufyxSPjm084mZ3Vjwf7LRzJ450P2PRconh3w+OdbMHgnyyRNmdmJ/74kcaAIPVWYWcc5lh3m3pwEtwEMl2NZPgA3AQuecZ2bzgCNKsN2ycs7dAtwyAru+ELgNeKGUG3XODTZA+q5z7r9LmYZyU14ZGYdyXjGz04ELgKOdcykzqy9lWspB+WRkHMr5xDn39vy4mX0b2F/KtJSD8snIOJTzCfBN4CvOuTuCm9rfxP9N9LmDg/4FzAFW4v8olwO/Bs4EHgTWACcG61UBPwMeB54GLih4/wPAU8Hr5GD+NOB+4Jlgu6cG81sK9v0W4Lpg/DrgO8A/gG8D84E7gSeD7S8uWO9HwXrrgVcH6Xoxv61gvdcCDwdp+h1QHczfCHwlmP88sDg4hh3A1iC9px7A5zkfP3OHe1n+r8BjwX6uya+Hf3L5dpCuu4G6YP69wDeC96wu+Bx7+9znAMuD8TDwreA7ew64LJh/BfCzYPyo4PupBN4N/KDgc/4+/glvPfCWIsdSBfwFeDbYxtuBM4A/FqxzFnBzwTFeFaz/CDAFOBnYE3xmzwSfX2/H3Nvx9PZb2whMLpbOIsfyZeCTyivKKyiv9JdXbgLOVD5RPkH5pNd8UpBeA17Cv+BXPlE+UT7peix/zc8HLgZ+0+93PdQfyXC+gh9ENviiQ/gZ6mf4J4QLgD8F6/0n8K/B+Pjgg68KfhiJYP5C4Ilg/BPA5wu+mJoBZPDb6PzB301wMgJOAu4pWO+GgvQ1dUv7scGXej9QFbznM8AXC770Dwfj/wb8JBj/Mr1cXAOnBz+e7q+Hiqx7PgU/8G7LjgBuBaLB9NXAu4JxB/xLMP5FOjPavcC3g/HXA38Pxnv73OfQmcEvBb4QjMeBJ4C5wWd1P/DGYN4pwTrvpmsG/12w7hJgbZHjeTPw44LpccH3spLOE9RvgPMKjjE//s2CtF1HwQmkj2Pu7Xh6+61txP8t9EhnkWP5crD+c/i//wnKK8orKK8UyyvP4F8kPQrcB5ygfKJ8gvJJb9dYr8p/lsonyiconxT7bjbj34DYChzWW17Kv0ZTtcANzrnnAcxsBXC3c86Z2fP4Pxjw70acb2afDKYTwGxgG/ADMzsWyAGLguWPAz8zsyj+SeKZAaTjd865nJlV40fVvzOz/LJ4wXq3FqRvZ7e0zwFm4v8oHwzeH8O/k5J3czB8EnhTf4lyzv0D/8RxoM4AjgceD9JVATQEyzzgxmD8VwVphK7pnROMRyn+uRd6LXC0mb0lmB6Hf9LcYGbvxg8krnHOPdhLev/knPOAF8xsSpHlzwP/bWbfAG5zzj0AYGa/BP7VzH4OvAJ4V7B+Gv8knj+Ws3rZb2/HXPR46P+3VjSd3fwI+Br+Sehr+Hey3ltkPeWVPiivHBJ5JQJMAF4OnADcZGbzXPBPGVA+6YPyySGRT/IuBn7byzLlkz4onxwS+eRDwMedc38ws7cBP8Uvwe3VaAquUgXjXsG0R+dxGPBm59yqwjea2ZeBncAx+JF2EsA5d7+ZvQp4A/BLM/uWc+4X+BeveYlu6WgNhiFgn3Pu2H7SW5jWwvTmgLuccxf38/4cA/iegjYG3y2yqM05170h5grgGDMLBZmjy6aA651zn+1vn3T9nIql9+MU+dyL7O/Dzrm/Flm2EL+oeHofaSj8bK37QufcajM7Hv8Ox3+Z2d+cc18Ffo5/lyiJf9LO1+HOFFyA9ffZFzvmXo+nl99af+ksPJadBdv6MZ0not7SBcorPSivdGyrawLHUF4BtuBXN3HAY2bm4d+lbOzl81A+6Ub5pGNbXRM4tvIJZhbBDyKO7ydNoHzSg/JJx7a6JnBs5ZNLgI8G47/Drybbp7HWW+BfgQ9bEPab2XHB/HHA9uDH/E78okHM7DCgwTn3Y/xI9GXB+jvN7AgzC+EXjfbgnGsCNpjZW4NtmZkdM4i0PgKcYmYLgvdXmlmxuwuFmoGaXtLzD+fcsUVePXq4cc6twy8y/UrBZ7XQzC7AL25/iwUNwM1sYvA5gf97yd8VeAfwz37SW/Rz7+avwIeCuwqY2SIzqzKzccD38KsrTCq4GzEoZjYd/yT3K+C/Cb5j59w2/LtqX8Avdu5Pr599N70dT2+/tT7T2W2daQWTb8SvHzxUyivKK12MpbwC/Al4TX67+Hendw0gTcXSqHyifNJhjOUT8O/Ar3TObRlAWvpKo/KJ8kmHMZZPtuG33wP/f2VNf4kZTSVXA/E14H+A54If7kbgXPy6q38IMuM/6LwDchrwKTPL4Efp+eLJK/FLBV7Cv4Ct7mV//wL8yMy+gF8MewN+o7h+OecazS96/a2Z5Yu0v4BfV7k3twK/DzLih13fxfz9eT9+tbK1ZtYG7AY+5Zx7ITievwUnuAxwObAJ/3NbamZP4vcq9Pbim+7Q2+de6Cf4xbpPBd9ZI37vMN8Frg7uKrwP+IeZ3T+E4zwK+Jb5d64z+MW7eb/Gr/s7kF5obgB+bGYfofMkV0xvx3MaxX9rA0ln3jfNL+Z3+L/tywaQ7t4orwyc8sroyys/w68Kshy/usklBXdFB0P5ZOCUT0ZfPgG4iN6rBA6U8snAKZ+MvnzyAeB75pfyJvHbd/XJhvZ/I4ciM2txzvV2sht1zOwHwNPOuZ+OdFpkbFFeEemf8olI/5RPRh8FVzJgYymDB3eAWoGznHOp/tYXGQzlFZH+KZ+I9E/5ZPRRcCUiIiIiIlICY61DCxERERERkRGh4EpERERERKQERnVwdc455zj8ntP00utQeA2Z8opeh9hrSJRP9DrEXkOifKLXIfYatFEdXO3aNZTHlogcepRXRPqnfCLSP+UTkb6N6uBKRERERETkYKHgSkREREREpAQUXImIiIiIiJRA2YIrM/uZmTWY2fIiyz5pZs7MJhfM+6yZrTWzVWZ2drnSJSIiIiKl5XmO9Y0tPLxuF+sbW/C8IfUFIDLqRcq47euAHwC/KJxpZrOAs4DNBfOWABcBS4HpwN/NbJFzLlfG9ImIiIjIAfI8x50rdvDxG58mlXUkoiG+87ZjOWfpVEIhG+nkiQyrspVcOefuB/YUWfRd4NN07d7wAuAG51zKObcBWAucWK60iYiIiEhpbNzdyhU3PUMq61/aJTMeH73haVbvbFaJlhxyylly1YOZnQ9sdc49a9blTsYM4JGC6S3BvGLbuBS4FGD27NllSqnI6Ke8ItI/5ROR/vWXT3Y2JUlmvC7zMjnHm3/0EMfMGs/jG/eQyalESw4Nw9ahhZlVAp8HvlhscZF5RW9tOOeudc4tc84tq6urK2USRcYU5RWR/imfiPSvv3wypTZBItr1kjIaNk6cO5GH1u0mk+ss0fr4jU+zcXerSrRkzBrOkqv5wFwgX2o1E3jKzE7EL6maVbDuTGDbMKZNRERERIZgzqQqvvO2Y7nipmdIZryOEqoJlVH+saqxy7qprOOLf17OSfMm8YN71qiNlow5wxZcOeeeB+rz02a2EVjmnNtlZrcAvzGz7+B3aLEQeGy40iYiIiIiQxMKGecsncrij5xKQ3OS+poEcyZVsXF3K4loqEuVwXAInt68j3+u3d0xL1+itfijr+p4386mJFNq/e0o4JLRpGzBlZn9FjgNmGxmW4AvOed+Wmxd59wKM7sJeAHIAperp0ARERGR0SEUMubVVTOvrrpjXm8lWhXREO+57oku709lHR+74RlmT6rkryt2qI2WjFplC66ccxf3s3xOt+mrgKvKlR4RERERGT6DLdFqSma47bntHfOSGY9//81TvP2EWbx83iQOn1rDvMnVxCJ++y7PcyrlkoPOsPYWKCIiIiKHjsGUaE2ojHLxjx/t8n7PwU2Pb+G3j70E+B1lzK+rZtGUGszg9ue3k8k54hHju28/TqVcMuIUXImIiIjIsBlMiVYiGuLPl5+CA1btaObF7c2s2tHEI+t309Cc6lgvlXX826+fYt7kKmZPqmTauARTayuYOi7O1HEV/vS4BDXxCN0eByRSUgquRERERGRYDaZEa2F9DaGQsXhqLRcc66/78LpdPUq5ACZURtnVkmL51v3sakn3WF4ZCzN1XKJn8FXrB19TxyWYWBkrWvqlaogyEAquRERERGTE9VaiVSyAyT9bq3sp17feekxHwJbK5mhoSrGjKcn2/Ul27G9n+/4kO4Pph9btoqE5Ra7bM7Zi4RBTxsWZWpvoKPWaUhNne1OSXzy0kXRQDfE7bzuW1x05rawBlgK60UfBlYiIiIgcFIqVaBXTWynXnElVHevEI2FmTaxk1sTKXreT8xy7WlIdwdeO/Um2NyX94f4kz23Zx19XJElnvS7vS2Udl//macZXLGdCVYzaiijjKqLUJiKMy48HQ39+wXhFhJpElHA/QZLnOe5csaPHMapd2cFNwZWIiIiIjCqDKeXqSzhkTKlNMKU2AbPGF13HOcffXtjBZb98qseyZXMmkIiG2d+eYX97hpf2tHWMdy8R664mEekIumorIj0CsUzO40f3rSOT87eTfx7Y3H87hcXTasvSdkwlZQdOwZWIiIiIjDoDLeU6UGbGwvqaotUQP/f6I4ru3zlHWzrH/vYMTckM+9sywXjWHwYBWFN+eXuGDbtaaWr3l7dnij/uNZV1vO77/yQWDlFbEaE2CMZqg1KzzulIR6BWbFk8Eu6x7ZEqKRtrAZ2CKxERERGRPgykGmIhM6MqHqEqHmE6FYPeXzrr8fzWfVz840dIZztLwCIh490nzyESDtGU7AzS9rdn2LKnrSNQy5d29SYRDfUIvEJm3Le6gVwQPyYzHh+54Wk+edYiZk6sJB4JE4uEiHe8wsSjIWLhEPFoMB0sG2ip2lis+qjgSkRERESkD6WqhjhQsUiI42ZN4H/eftygAw/nHMmM1xF8+cNsR+DVFJSgFS7b3ZKmoTnZEVjlZXOOr9+5avDpDwcBWEHQFSsSlGU8j3+u2UW+BmUy4/GR3z7Nv79mAXMmVVEVj1AdvKriYaoT/nhFNDzkapHlLilTcCUiIiIi0o/hqoZYuL+hBHRmRkUsTEUs7LclG6D1jS28/vsPdKn6GI8YP7nkBKbWJkhlPVLZHKmMRyrn+cNsjlTWI531uixPd1vurxOMZzxaU1n25jz2tmbo3jQt6zn+5+9r+v5sjG6BV/dxPxCrikeoCeZVxSNUxcI8t3U///P31aSz5Xn4tIIrEREREZGD0HAGdL1VfTxl/uSyldD1FtD9+v0vZ1J1nJZklpaU/2pNFRlPZmlNZ2lO+vMam1Md67Sksv12KpLKOq646RkWf+TUkn3GCq5ERERERA5xw131EXoP6F42e8IB79c5RyrrdQRhLaksj23YzVdve7HLesmMR0NzUsGViIiIiIiUzmip+jgQZkYiGiYRDTO5Og5AZSzMN/+6qkevj/U1A68+2Z9QybbUjZn9zMwazGx5wbxvmdlKM3vOzP5oZuMLln3WzNaa2SozO7tc6RIRERERkYNDPqB7+bzJzKurHpaSskTUD4H66/VxKMpZcnUd8APgFwXz7gI+65zLmtk3gM8CnzGzJcBFwFJgOvB3M1vknCveyb+IiIiIiMggDEfVx7KVXDnn7gf2dJv3N+dcNph8BJgZjF8A3OCcSznnNgBrgRPLlTYRERERETn0lLukrGzB1QC8F7gjGJ8BvFSwbEswrwczu9TMnjCzJxobG8ucRJHRS3lFpH/KJyL9Uz4RGbgRCa7M7PNAFvh1flaR1Yr2neicu9Y5t8w5t6yurq5cSRQZ9ZRXRPqnfCLSP+UTkYEb9t4CzewS4FzgDOdcPoDaAswqWG0msG240yYiIiIiIjJUw1pyZWbnAJ8BznfOtRUsugW4yMziZjYXWAg8NpxpExERERERORBlK7kys98CpwGTzWwL8CX83gHjwF1mBvCIc+6DzrkVZnYT8AJ+dcHL1VOgiIiIiIiMJmULrpxzFxeZ/dM+1r8KuKpc6RERERERESmnkewtUEREREREZMxQcCUiIiIiIlICCq5ERERERERKQMGViIiIiIhICSi4EhERERERKQEFVyIiIiIiIiWg4EpERERERKQEFFyJiIiIiIiUgIIrERERERGRElBwJSIiIiIiUgIKrkREREREREpAwZWIiIiIiEgJlC24MrOfmVmDmS0vmDfRzO4yszXBcELBss+a2VozW2VmZ5crXSIiIiIiIuVQzpKr64Bzus27ErjbObcQuDuYxsyWABcBS4P3XG1m4TKmTUREREREpKTKFlw55+4H9nSbfQFwfTB+PXBhwfwbnHMp59wGYC1wYrnSJiIiIiIiUmrD3eZqinNuO0AwrA/mzwBeKlhvSzBPRERERERkVDhYOrSwIvNc0RXNLjWzJ8zsicbGxjInS2T0Ul4R6Z/yiUj/lE9EBm64g6udZjYNIBg2BPO3ALMK1psJbCu2Aefctc65Zc65ZXV1dWVNrMhoprwi0j/lE5H+KZ+IDNxwB1e3AJcE45cAfy6Yf5GZxc1sLrAQeGyY0yYiIiIiIjJkkXJt2Mx+C5wGTDazLcCXgK8DN5nZ+4DNwFsBnHMrzOwm4AUgC1zunMuVK20iIiIiIiKlVrbgyjl3cS+Lzuhl/auAq8qVHhERERERkXI6WDq0EBERERERGdUUXImIiIiIiJSAgisREREREZESUHAlIiIiIiJSAgquRERERERESkDBlYiIiIiISAkouBIRERERESkBBVciIiIiIiIloOBKRERERESkBBRciYiIiIiIlICCKxERERERkRJQcCUiIiIiIlICCq5ERERERERKYESCKzP7uJmtMLPlZvZbM0uY2UQzu8vM1gTDCSORNhERERERkaEY9uDKzGYAHwGWOeeOBMLARcCVwN3OuYXA3cG0iIiIiIjIqDBS1QIjQIWZRYBKYBtwAXB9sPx64MKRSZqIiIiIiMjgDXtw5ZzbCvw3sBnYDux3zv0NmOKc2x6ssx2oL/Z+M7vUzJ4wsycaGxuHK9kio47yikj/lE9E+qd8IjJw/QZXZjbFzH5qZncE00vM7H1D3WHQluoCYC4wHagys38d6Pudc9c655Y555bV1dUNNRkiY57yikj/lE9E+qd8IjJwAym5ug74K34gBLAa+NgB7PNMYINzrtE5lwFuBk4GdprZNIBg2HAA+xARESkJz3Osb2zh4XW7WN/Ygue5kU6SiIgcpCIDWGeyc+4mM/ssgHMua2a5A9jnZuDlZlYJtANnAE8ArcAlwNeD4Z8PYB8iIiIHzPMcd67YwcdvfJpU1pGIhvjO247lnKVTCYVspJMnIiIHmYGUXLWa2STAAZjZy4H9Q92hc+5R4PfAU8DzQRquxQ+qzjKzNcBZwbSIiMiI2bi7lStueoZU1i+tSmY8Pn7j02zc3TrCKRMRkYPRQEqurgBuAeab2YNAHfCWA9mpc+5LwJe6zU7hl2KJiIgcFHY2JUlmvC7zUlnH7598iY+dsYgt+9rZ2ZRkSm2COZOqVJolInKI6ze4cs49ZWavBg4HDFgVtJUSEREZ06bUJkhEQ10CLAOuvnc9v39yK3vb0mRyqi4oIiK+gfQW+C7gHcDxwMuAi4N5IiIiY9qcSVV8523Hkoj6f5eJaIgfvOM4vnLeUhqbU2RyndUFr7jpGVUXFBE5xA2kWuAJBeMJ/Kp7TwG/KEuKREREDhKhkHHO0qks/sipNDQnqa/xq/89umE33fsMTGY8GpqTzKurHpG0iojIyBtItcAPF06b2Tjgl2VLkYiIyEEkFDLm1VV3CZqKVRcE+PsLDSybPZHNe9vUFktE5BA0kJKr7tqAhaVOiIiIyGiRry54xU3PkMx4xCPGUTPG85N/buCxjXtYtaNJXbeLiByC+g2uzOxW6Kj9EAKWADeVM1EiIiIHs2LVBQ+bWMl3/76aH/xjXcd6+bZYiz9yqqoLiogcAgZScvXfBeNZYJNzbkuZ0iMiIjIqFKsueMqCyV2CK1BbLBGRQ8lA2lzdNxwJERERGe2KtcUKGYTNWN/YonZYIiJjXK/BlZk1Q4/OkMB/xIdzztWWLVUiIiKjUPe2WJGwETLj3T9/nHTO0zOxRETGuF6DK+dczXAmREREZLQr1hZr85423nPd47jgdqXaYYmIjF0D7i3QzOrxn3MFgHNuc1lSJCIiMop1b4u1synZEVjlJTMe63e1KLgSERljQv2tYGbnm9kaYANwH7ARuKPM6RIRERkT8u2wuvvoDc/wv3evoSWVHYFUiYhIOfQbXAFfA14OrHbOzQXOAB4sa6pERETGiHw7rHyAlYiG+NzrF/OKeZP49l2redU3/8FPHlhPMpMb4ZSKiMiBGki1wIxzbreZhcws5Jz7h5l940B2ambjgZ8AR+J3mvFeYBVwIzAHv3Tsbc65vQeyHxERkZFWrB3WnElVXPqq+Ty9eS/fuWs1//GXF/nxA+v58GsW8rZls4iEjI27W9W7oIjIKDOQ4GqfmVUDDwC/NrMG/OddHYjvAXc6595iZjGgEvgccLdz7utmdiVwJfCZA9yPiIjIiCv2TCyA42ZP4JfvO4lH1u/mv/+6ii/8aTnX3LeO0xfXc+Pjm0ll1bugiMhoMpBqgfcD44GPAncC64DzhrpDM6sFXgX8FMA5l3bO7QMuAK4PVrseuHCo+xARERlNXj5vEr/74Cv4+XtOIBEN84uHN5HK+r1g5HsX3Li7dYRTKSIi/RlIcGXAX4F7gWrgRufc7gPY5zygEfi5mT1tZj8xsypginNuO0AwrC+aGLNLzewJM3uisbHxAJIhMrYpr4j072DKJ2bG6YfX85Xzl/RYlsx47GxqH4FUiRxc+UTkYNdvcOWc+4pzbilwOTAduM/M/n4A+4wALwN+5Jw7DmjFrwI4IM65a51zy5xzy+rq6g4gGSJjm/KKSP8OxnwydVxF0d4Fv/jnF7hn5U5c937dRcrsYMwnIgergZRc5TUAO4Dd9FKqNEBbgC3OuUeD6d/jB1s7zWwaQDBsOIB9iIiIjErdexeMR4x3veIwkpkc773uCd549UM8sKZRQZaIyEGo3w4tzOxDwNuBOvxA6APOuReGukPn3A4ze8nMDnfOrcLv2v2F4HUJ8PVg+Oeh7kNERGS06q13wf937hJ+/+QW/vfuNbzzp49x4pyJfPysRbxi/qSRTrKIiAQG0lvgYcDHnHPPlHC/H8bveTAGrAfeg1+KdpOZvQ/YDLy1hPsTEREZNYr1LhjCuPjE2bzpZTO48fGX+ME9a7n4x49w8vxJfOK1izj+sIkjmGIREYEBBFfOuQG3hxqoIFBbVmTRGaXel4iIyFgSj4R51yvm8LZls/j1o5v50b1refOPHubVi+q44qxFHDNr/EgnUUTkkDWYNlciIiJykEhEw7zvlXO5/9Onc+XrFvPcln1c8MMHef/1j7Ni2/6RTp6IyCFJwZWIiMgoVhmL8MFXz+eBz7yGT5y1iMc27OEN3/8nH/rVk6ze2TzSyRMROaQouBIRERkDquMRPnzGQh74zGv4yBkLeWDNLs7+n/v5yG+fZl1jy0gnT0TkkKDgSkREZAwZVxHlirMW8cCnT+eDr57PXS/s5Kzv3McVNz3Dpt2tI508EZExTcGViIjIGDShKsZnzlnMA585nfe9ci5/eW47r/n2fVz5h+fYsrdtpJMnIjImKbgSEREZwyZXx/n8G5bwwKdP550vP4ybn9rK6f99L1/40/Ps2J8c6eSJiIwpA3nOlYiIiIxy9bUJvnz+Ui591Tx+8I+13PDYS9z0xBb+5aTZfPBV82lNZ9nZlGRKrf/Q4lDIRjrJIiKjjoIrERGRQ8j08RX85xuP4kOvns//3rOGXzy8iV89sgnPOXIeJKIhvvO2Yzln6VQFWCIig6RqgSIiIoegWRMr+eZbjuHn715GzvMDK4BkxuOjNzzNizuaRjaBIiKjkIIrERGRQ1g0HMJzXedlco43Xf0Ql//mKe5cvp1kJjcyiRMRGWVULVBEROQQNqU2QSIaIpnxOubFwsbZS6fy4Npd/OW57VTHI5y1ZArnHj2NUxfWEYvo3qyISDFjN7jyPNizDpp3QM1UmDgfQvozEOlC+UTkkDdnUhXfeduxXHHTMyQzXpc2V55zPLx+N7c9u507V+zgj09vpTYR4eylUznvmOmcPH8SkbDOGSIieWMzuPI8WHkr/PEyyLRDtALeeA0sPk8XjiJ5+Xxy86WQTSqfiByiQiHjnKVTWfyRU2loTlJf09lbYAjj1IV1nLqwjq9deCQPrt3Frc9u447lO/jdk1uYWBXjnCOncu7R0zhp7iTC6gBjRDnPI71pE9mGBiL19cQOOwzT+VxkWI1YcGVmYeAJYKtz7lwzmwjcCMwBNgJvc87tHdLG96zrvGAEP8D642Vw2RKYvLAEqRcZA/as8/OF8olI3w6BEt5QyJhXV828uupe14lFQpy+uJ7TF9eTzOS4b3Ujtz23nT8+tZXfPLqZupo4bzhqGucePY2XzZ6gngaHmfM8mu+6i22fuRKXTGKJBNO/8XVqzjpreAKsQyCfiAzESJZcfRR4EagNpq8E7nbOfd3MrgymPzOkLTfv6LxgzMu0Q8sOXTSKBLzmHYQy7V1nZtr9+conIj7VhCgqEQ1z9tKpnL10Km3pLPesbOC2Z7fz28c2c91DG5k2LsEbjprGecdM5+iZ4zBToFUuzvPIbNlCy4MPsvOq/4Rs1p+fTLLtM1cyd9Ei4nPnljcRyiciHUYkuDKzmcAbgKuAK4LZFwCnBePXA/cy1OCqZqqfsbtfOG59CmadDHvX686KHPJao5OpiVZwb3IhUbKcEn4BgPY926gq8/+wyKiRL+HN/59k2v2aER/8p///oTv1VMYinHv0dM49ejotqSx/f2Entz23jesf3shP/rmB2RMrecPRfonWkmm1HYGW5zk27m7Vg4sHyHkema1bSa1ZS2rtWlJr15Bau5b0+g24ZLL4e5JJso2N5Q+ulE9EOoxUydX/AJ8GagrmTXHObQdwzm03s/pibzSzS4FLAWbPnl186xPn+3dM8hk9Eodxs+GuL8KLt8KO59XGRMa8/vLK6mwdE0/9Djf+bQ13ZJdxbfh7nF6xnsrb/g2y+2De6dCyU3+GMqb1+5/SvKPnjbpsEv76WZi8CB7/qf5PClTHI1x43AwuPG4G+9sy/PWFHdz23HauvX89P7p3HfPqqjj36Om84ciprNvVWrQTjUM9wHKeR2bbNlJrguBp7To/mFq/Htfe+VuMTJ1KfMECqk48ifjCBVhlJduu/CykUh3rWCJBpK7ugNM05HzyqzfBhLmw+SHIZSCSgDdd6+cTUNAlY5I55/pfq5Q7NDsXeL1z7t/M7DTgk0Gbq33OufEF6+11zk3oa1vLli1zTzzxRPGF+bq/LTugeiqMnwN3fxke/kHX9aIVcNkDqi4oo8GQrziK5ZX1jS2877pHuexI41fPt7JiT4g5VWn+MvOXVG66GywMLqeLRhmNhpRXiv6n7FoD15za9cLRwn6+SLd0XTeS0J36XuxuSXHnih3c9ux2HtmwG+f8L6nwCiQRDXH7R07ts93XaNNXBxN+ELWd1No1pNet6yyRWr8e19bWsY3IlCnEFywgvmA+sQULgvEFhGtqeuxrkG2uyptPQhGYcTy89Gi3vYbgZZdAvBoeuxayqa7/MzDw/KN2XlJ+g84nIxFc/RfwTiALJPDbXN0MnACcFpRaTQPudc4d3te2+gyuitnwAFx/bs/5F/3GvwOpzCkHt5IGV57nuHPFjo47x2b+Dq4+dyrn3P1a8LKdK+cvGnUTQkaH0l009taWJD4OfnlBz42c+kmoXwK3XK62J71oaE5y9T/Wct1Dm3os+8w5h/OeU+aSiIZHIGWllQ92tn76M35pUjRK7etfh1mI1Lp1pNat6xpE1dURX7igIIBaSHzBfMK1tX3spec+05s2kW1sJFJX119vgeXPJxUTi1935W/edZ93ykf94Ovh/+0ZdHU/DrXzkuFx8AdXXXbeteTqW8Dugg4tJjrnPt3X+wcdXBW7swL+3RXndJdeDnYlDa6gs81DQ3OS6niEL/xpBSu27uPH4a9zWvi5ritf8EOYdZJuQshoULqLRuhZEyJfMtXj/6R7WUxANSR6WN/Ywuu//0CXBxfnJaIhTp4/mdMX1/OaxfXMGF8xAikcPJfL+W2i1q4jvX4dbc88S8vdd/vXFwXCEyYQX3x4EDz5JVLxBQsIjxs33EkemXwSrYA3/Rhu/NeB73TifP9/JzEeKiZAxXhwHjz2Y/AynetF4vDOP8O0Y/z9lLojFZWUHYpGdXA1CbgJmA1sBt7qnNvT1/sHHVwVu8vx+m/DrR8Gr+AOSjgK77sLph6jTCTlN/CTdcmDq+72t2d4x4/uY21DMz+PfpOTg04usBDOOcxCugkho0FpLxqLKfZ/cuH/wd6N8Pcv9Vz/PXdC1WT9nwS6l5wnoiG+8eajGZeIcu/qRu5Z2cDmPX6pzuFTajh9cT1nHFHPcbPGj/hDi10mQ3rzZlLr1vnV+db6pVDpDRtwBe2dwuPHk9u3r8f7Z//ieqpOPHEYU9yrkcknb7wG6o6Aa1/VM+g673/h5vf33M7sV/g3wtv3dr4ybT3XKxSKQqIW4rUFw3H+q8e8wvXGdc6LxPs/lnL/DyqgG2mjK7g6UIMOrqDnnZXmHcWLrMNxmLkMtjwOubQuJg8Vw30SG9yDfMseXAE8u3kPH/3FP9nZkuWa6Hd4VWItLa//EdW3vq/rTYhIHD74oNqXyMGo/BeNMIgSLaB6CrTt9qvb6v8E6FpyXvjgYgDnHOsaW/nHygbuWdnA4xv3kPUc4yqivHpRHa9ZXM+rFtUxsSo24P0N9gG7XipFeuNGv1OJfBC1fh3pjZs6ujsHiE6fTmzBfOLzFxCfP4/Y/PnE588nu3s3G974pi49+Vkiwdw/3lz+3vsGZuTyCQwu6CpW8rtzBfz4NV0fvROOwqmf8K/hUk2QbOocJvd3nZdq6j/t4Xhn4BWJQ+NKv8QsLxSB498NtdP96vORhJ/eHsM4RCogmug6DEf7Ll0biYBuJIK5kbj2Gvj+FFwNWrGqguE4LDwLVt7Wdd1QFC7+LSw4s/RFzVLccGa4vk5iOEi3+nfK0q3+8o7xNn+6y/Lu89qCefnxYBup5p6N4nuvQjQswdXD63bxsRuewrwsO1odp8yM8KHFSV75z3f1XLl+Ccx5JTz1C/WYJgeT4bloLKb7eSSSgBMv9TtT6n5RdvEN+j8ZoKZkhn+u2cU9Kxu4d1UDu1rShAyOmz2B1yyu5/TD6zliWk2vz9Pqq7MH195Oav0GUuuCIGrdelLr1pJ5aYv/fQKEQsRmzfLbQ82fHwRRC4jPm0uosnLQ+xyWh/r2b+TyCQwu6CpHmysv5/8Hdw/CUkEg1j0Y27sRtj5ZZEO9VAceCAv1HpRFEv4546VHup07wnD0xVBdD+GYH6CFY0XGI73MLxgPdVsnFIE1f4M/fWj4/tOHO4Ac/P4UXA3aYBthgn8Hcs4rg9epMGmBX6dad+9La7AZwPMKApjWrsFO0fGWzqAn3QKtjbC520kM/JNOLj24tFsIolUQq/TT3TEevPLjyX3+4wG6e/dt/m+r21YHl4hOg8krxdpC1FUa1/AfvMxb0bliKOL/1vdv6boBdX4hI+/gumjsrYYE+N1ULzrbfx12Smc1JFUF6pXnOZ7bup97Vjbwj5UNPL91PwDTxiU47XC/ndYpCyZRGet82kxqwwbWX/jGLt2UEwoRmTyJbENj57xolPicw/zAqSCIis05jFC8oIrYAA2yg4nhNrL5pDfFgq7+egscyLoHqtjN+GgFXHo/TDjMn59NdhumINsOmWTxYTZVsH6RdVobYfeanmmJxP3gsLDjqXIKx/3rGjM6fjb58Y4bGlbwi7IBrBvM87LQtqvbDg3GzfSP00LBK9yZhlC4YP4gl6XbYN09XTtU6btdrIKrIRlo1Y5I3O8Jatdq2PhPaN7uz6+e4v9Bbn3Sb1gZScCFV8OSN46tP8NS/dk7VxDoBAFOx3hr5/i+TfDIj7qePCwEM5bRUZLUvbRoMMIxiFV1Bj7OFT+JHflmmHx4kUCpyp/OjxcGT5H4wO5G93ayHsGSq+5tIaJhozYRZW9big9Gb+djdgOxWIzW1/+QinGTCf3i/J4bOfptcMrHYcqSoSZZ5EAcXBeNxfJ5JO7nkW1Pw4b7grvEVTD/dFhwln8Ed16pXtAGoKEpyb2r/HZa/1y7i5ZUllgkxBn1Yc6xRpbuf4nQ44+QWrWqx3srT34FVSeeGFTlW0Bs1kwsGh2BoxgRB1c+OdiNRBW9/q4RnPOfH5ZLB68i416ml3W6z8vArlXw5HU903Hkm6B2RtfOWZyjo8QuP96xvNh4L+s2b/dLy7qb92qonOzf8PZy/jDf+ZzzOl+9LfMK1ytYlm7peVMYerupDQquSqi/TOQc7FkPGx+AVXfC6jt6biNWBZWTgp5tJgbDCVBZMN59fmK8X5Q70DSW885mLhvcPWmHVCusvh3+/hXIpfzA5IT3+0FHJqjmlm7tGhwVHQ9eQy1CB6g/AmqmBSVAVUGA1Nt4EPQUG+/+OQ8u0CmNwZ2shyW48pPVtS1ESzLLO37yCC2pHLOrHRctreB3a+GWi6dTc/3p3Z4BFKTbeVC/FI56sx+gTpjTecy6Iy/ldXBdNPaXz9Nt/n/J6jth9d+gqcgffyQOl97nn/+kB5dOk1y5kuYnn2bbw4+Tff55qvY2AJCxMFsnzaSFMDWpFmY0NxLBYYkEc27+A4l580Y49SPm4Mono8FwlpTl9zecAd1IXAcN9z4Hvz8FVyU10EzU2/Ozjjjfv9Bv39PZu03bHr8qWPeqZ4XitX43o30FZIlx0PAC3P9Nv1g5EodXfQqmvQxyyc42QUWHA5w32Kpw+ZKgWHVncNNjurpr8NN9WeF48w746ZldG6uWM8ONdE9A/Z+shy246u7hdbu4+MeP9ph/8wdP4mVtD/b8zGaeBC/eAst/3/kAyZkn+kFWrBLu+LTuyEs5HXwXjQPN587B07+CW/6957JwDKYe5XcznX/VL+nao9khIrN9O+3PPkv7M8/S/swzJF94AZf2/7Mi06ZRccwxVBxzDPvmHs79biJ/WbmLZzbvJeuMRDbFov1bOXzxbI49+RjOPmoak6sPvc+QgzGfSE/DGdCNVAcaanN18DhoMvhgo2DP8xtHdgm6CroX7R6M5cf7C8r6E81Xa8sPKwY+b98WePC7Pbf51p/DvNP9kqDIwHttGpCR7CVnuO5KDc6IBVe9PZPmLcfP4KoLlpJuWEuuaTvh2mlUTVtEKFzwANC9m2D5H/zXzuU9Nx6J+3XW6xcPOX0i3Yzui8aiHS1F4ai3wb7NsP05SPntjAhF/B7WCgOuqUf6N6nGCC+ZJLlihR9IPeu/sjt3AmDxOImlS6k49lg/oDr2GKJTpvTYxsPrdvHxG57izCkRtu5tZ3V7iK1tneez2RMredns8Rw3ewIvmz2BxdNqiI5wl+/DYHTnEymPkbgOGokSwYHvT8HViBiuIMDz/D/U9r2w9h64/RM913ndN2H2y3sGSJHEgfVINRJFxXCwBzvDbcSCq+7tsOIR4xXzJ3Pvqkbm11WxZW8bqawjEQ3xnbcdyzlLp3Z0qdzFU7+CWy7vOT8ShylH+nfhpxwJU5b6r8qJQ06zjC2D7EZ7dF80DqRa+t6NsP3Zrq+ORuHmn5c7gq2jYdrRfs2Hg0ix7xQzMlu2dJRItT/7LMmVKzu6Po/OmtVRKlVx7LEkDl+Exf5/e3ceJ1dZJnr895w6tfaepNcknT0QspGwCkYUUcDBjRnEfZm5Os5V0dEZdRS8oyiKuIxXuderIwOMC27ouODIokhARAiJJCEJ2bdOel+qu/Y67/3jVHVXdVdv6eo1z/fzqc855z2nzlLdb9V5zruN/mCv0AMivy188a830hyO8ezRLp491klL2O3wIuC12LCwkk39AVclNeWByfkgps/szidKnaHJ/j3R4KpYpjoImOpgZ7qqzKlc0xZcQeExab7z+GE+98CevO0CXosHbtrC8urSoTsZ7on8ur+BnpNwepdbcptV1jAQaGWDrgWr3Peos8YZdGk9+28ax/ubYozbMDwv4Houv/1W5ZL8Eq76jW53zrnHm6K2kNm/6cmPfsztwc+2CZx7LslTp0i3twMgoRDBdevcUqnzNxLcsAF7wYIzOl6hQYsHPwgyxtDUHWP7sU6ePdrF9uOd7D7ZQyLtBmQLK4Nsaqxkc2MVm5dUcV59OT57Vv/+zf58ouaE8Y5Bdyb7N/E4TiyGE43S+8jvaL7jDkgkwO9n4RdvL+rviQZXs5VWmTsbTWtwVchwbbHue88lXLq8wE3QWJ7I9za71Qebdw+8Wve5PR6BO95c9bk5QVcm8CqtKVw6qx1oTIpi/BgaYzDRKOlwL064h3Q4jNPbS7qnByfcSzrsTpMnT9Lzm98MjDnEqIOx6k1jVl9bfsB1+jm3M6assnq3ZMsbgH2/cdva2gG4/luT8nuSbGoisn07vY/+gZ5f/Sq/9zERSl/+ckpffDnB88/Hv3IlYo+xg6cxGGnQ4uHEkml2N/Ww/Vgn2491sf1YJ03dbjtgn22xfmEFmxZXsnlJFZsaK6mvCBY8ZnNPjNrysR1zCmk+UUNMdqCTPYaJxdxgpy9C+HeP0PLlr7jBjtfLvHe8ncC552LiCZx4DBOLY+IxnHgcE4vnp8Xi7r7i7tQk4gXSRu5DoNi/JxpczWYa7JxtZlxwNVxbrBsuWMQn/2oNlaEC1XXO5P82lXC7yW/enQm8nnfnw00D24QWDAq41sL81XDwYS1xLbIhpQ4+H9U3fYDA2rU4vb04/cFSgWlPD+negWm2utewbBsrGMQJh4esarznbkouuaTQu/SmcSSxbji9cyDgOvF0fsCVVbse5q9wx5upWJyZLnTnQ/NHrWpuUilie/cR3b6d6PZniTy7ndTp04DbVsrkjjmV0XjvPZRcfHFRLnOynM6WbmUCrudOdpNIud+B9RWB/tKtjYsqaeqO8rGfPjdsadk003wyC0xFsJN7rJ7f/pamj/9L/3d7zYc+RHDT+W7JTzTqBi3RGE4sislOc9MiUZxYDBOLZtJimGg0f1og74+JZSGBAJbfnzcVvw/LH0AC/sw0gBXwI/6Bqfj9WAE/yaZTdNx995Bdj/Ddo8GVUnPYjAuuCrXF2rxkHn861E55wMsHrlzJ2160BL/tGX1nZyLSkVPClSntatnjDiEAbrfwueNrgFvy9fL/BdWrwV/m9s4ZKHen/jJ3kMGJmuoqVqkUiQO7STU3Y9fW4Vt53hk/8XdiMVJt7aQ72km1tZNqbyPd3p6Xljx1iuTx42Pan1VSglVWhqesbOg06MMTtLF8gscPlu3g8aawrASWJ45HIkiqB9NxgvjuHVh2mni3zckn5rlPGu+7G/+5GwsdVm8ax2O4Hm/rN7pDZ3SfyO+1FdzSrYpF7tg3mcAr7Z1P9GSc6OF2Is8fIrprNybijj9o19UR2ryJ4PmbCG7ejAT8HPmbGzCxgf2O8vR4xkqkHPac6ukPtp491smJzmjBbX0e4RfvfzHn1pdPyrk4xuFoz1FaI63UhGpoLG/EkjnaNnEaTGWgkz3eWKpEG2PcAKe313141RdxH3RF+nLS+nB6+zLTzHJfL+mctHQ43J9nx0N8PiQYxAoEsAKB/nkJBrACQaxgAAnkpAVDmbSAG+x85ztD9ln/+c8TuujCvEAKrxeZSP8BuAOKH3799eP57tHgSqk5bMYFV1C4qs2+5jC3PbCHrfvbaJwX4uPXnsu16+om/KU4thNKQ8dhaNntVnP6yw/G935f6dCAKzvfnzbc+gr3/ft/O2WlZSaVIvyb/6Lpls8O/PjeejNl174WsW2MMTh9faTb2ki1t5Nqb+8PlvoDp/YOd76tHaevr+BxrNJS7Pnz8SxYACJEn3kGMIjHYNkGy3aY9/Y3EFregOVJ4LHiWBJBEj0Q7XJ7O412uaUmscx0pN5PxeN+nsFKjNikow6RF04R67DoOFRNw0ffTdnlm5EllxZ895l8lmftb8pYBiqNtLtBVuZluo6RPHqI6N5jRA53ED2VIt5tAwJi8FcmCdVZBJdWETqnEW/j8kypl1sKZkrqCD/+FE2fuq3g/+1s1xKOcd+fj/H/HjtIZUhoDadJZAppLYHVtWWcV1/OeQ3lrG2o4Lz6cipCE2tL6hiHh48+zCcf/ySxdIyAJ8DnXvw5rlpy1XABluaTcTiDtp9D95FKuVXhIpH+0p6BEp7okLTkqSY6v/8DSKcHdmJZ+M85B1LJvMAot9r0sCwLq7QUq6QET2kJVok7n01zesOEH3xoyNuqP/Jhghs3YvUHTZlpNnDynPlDyTMIdiZkKtrwanCl1OwxI4OrkfzhhVZu+/Ue9jWH2dxYySf/6jw2La6cujYIhW4a7QDc+F13vLh4N8TDEOtxh0eI9bjL8e6BtMHrU4WfSI9MoLLR7b3Tst3SMcvOeY1v2UlDOpIiHUkRP9VKz+//hBN3MCnBSQvG8SBllTjRNKmeGCZV+EfXE/Jgl3jwBC3skAdPCOxM56KegIMdSGP703j8KSxJgpMCJ4VJJSCdGL0DUo/PHRg9EyQRqByYFkoLZtIDlW7Qmj1A237M928k0fg3pKI2djCF79hPkDf/sGiDPsJZ/JviOJj9D5LY9xdSfYJdAr5zNiCrXtn/QMAkEsT27CHy7Haizz5LZMd20q1u74RWSQnBjRsInreS0IoaAvU+PMnWvGCM7pMD3cdnGABvOY6nFHxBrFgLsvZ17t80tABKFmSm892pr2RCvd466RRH25+nta+ZmpJaGuefhzV4MPkiOtIW5qGjj/CtPZ8jmorjS9fx0gXvI2SWcbIzxu6mnkzvhAZIs3Ceh9V1fpbXBFiywGbRfJvSgCGWjhFLxQamufM5ae2xdv7U9CccBvJ7wBPgR6/+Ecsq5mbbxMksSTKOgxMOk+7pId3dQ2zfXk7/66chmRzYyOOh/JprEK83r9rbQJW53LRY/nsnILB2Ld6GhrzAyCotwVOaEyyF3KkbRLnzEgiM+JBzqgMdKE7QeibHTBw9Sqq1Fbu6evb3Figii4F7gTrAAb5ljPmaiMwDfggsBY4AbzDGdI60r5Ey+AxvRKrUmZh1wRVA2jH8+JnjfPmhF2gNx9ncWMmupm4SY+m6faImo+OXdDITcHUPDb7iYTj1HGb3/ThlK3FSYHnSWD0HkMUXuV1hO+n+IAUnhUmncGJJ0r0JUn0JN2jqS5GKpElH06QjDqmoIR0zpKPuGOFOapjPSgy238kERg52SPAEwQ5Z2CELT4ntBlOlXuwSH+L1utUkPd6B4M2TTbOHXWd6W0g0tdHzxA7S0TSO8VP56msJbtyALL18IFjyBic2BETWFAz6CDPrpnEqGcch/OBDNH184Oam9pZb8FRWENvxFyLbnyW2c1d/OwnvwoUEN292q/lt3ux2PDGWJ9exbjfI6j4Bhx6FP905dBvLdvNGIXYgP9gaHHz1Ly9w24QFKvr//5x0iocP/pJP/vm2gVKdiz/BVStePWqAZYwh6SSJJCNEU9H+VyQVGZgmo3nroqkoLZEWHjz6IE5OCa0gLCpdhIOT2S5GPBXLC4jGyhKLoB3E7/ETtINub4d9TUO2u+vqu7io7qJCu5iR+WSsAdNYbsqzJfdOdzfp7u7+QCnd051J63HThiz34PT05He4MgyrrAyrrNSt/jZSlbhg7ny2XVCBtJzSoeTp01NafXY6Ap3scccR7Ey1WRFc1QP1xphnRaQM2Aa8Dngn0GGM+YKIfByoMsZ8bKR9DZfBx9LlqlKz0KwMrrL64ilu/++93Pvk0bz0EbtuL4Yp7vjFtB2k+1e/4tRX7urv+ajiFZfjrV9IOgbpzg5SnZ2kOzpJd3SQ6uoa9mmmBAJ45lVhV1bhmTfPna+qwlOVmZ83D6e7naZPfw6SA70hiT84UnukiRt/SdLETfKgjzAz8sl0iB8+zKHXvd5twD6YbRM47zxCm84nuGkzwU2b8NbWTPygw1VFfM9jbjvFSBv0tWembTnT9pzlzPpk4TYiKctLd8l8ukqqaPZ6eaLvBM0eocuyiFgWcY+H1fPXgb+EqHGImjQRJ0nUSRJ14kRTsf5AKW3SBY9RiCAE7SC2ZdOT6Bmy/sLaC2kobSDgCRCwA/3BUXZejI/2sOFUV5qTHSmOtiU51pYkkbLBeAl4ApxTO4+19VWsbahkbUM559SVcSpynDf88gZi6YEb8YAnwI+u+xHLKmdeyVXBcc5gxJt7Ywzpri5SLS1Ed/yF07femt8pjmXhX7USE4u7wVQ4nF+lbjDbxlNe7r4qKrAqyvGUV7jLlRVY5ZnlinLSkQinPnmz+72eoaU6Z4WZH1wNOQGR/wK+kXm91BhzKhOAPWqMOWek9w6XwQ+19nLt1x4jnhq4tkm/gVNq8s3q4AqG77r9A1eu4ANXrp4VY8YYY3C6u0k2NZE4eZJUU1P/fLKpieTxEwV7tgOwysvd4GjePDxVVZlgaV5muRJ73jw3cKqqwp5XhRUKjX4+o7S5mhQzf9w7Da5GYdJpos89R9/Wx+n57/8mcWhob4E1n/gXqm64ASsYLLCHCXIcnP0PcrT1OVotocaBxur1WDlVEXOlnTQ9iR464510xbrojHfSHe+mM9ZJV6SVzr5muqJtdMW76Ir30Jnqo8cZuUeyoOMQNIagYwgah5BjMstuegghKF6CHi8hy0/QDhC0gwTtEEFvCSFfGUFfKUF/BcFABUF/JcHgfALBKiRQzol4F+969CbaTZIkgMhowc6wEimHAy29PH+qh91N3exu6mFPUw/huBtYeCxhcVWQ8tJeDsYfwvEdo6Ssifet+yQvW3wlSxeUFdrtlOST8QRRvmXLOPw3N+QFMFgWgfPWkO7uIdXSMmpPc4F16/A1LsaqqBgIlCrKB5YrBoIpCYXG3BZYS3XOWrMruBKRpcBjwDrgmDGmMmddpzFmyHDyIvIe4D0AjY2NFxw9enTwJuMfe0ep2WFcGXwseWWqFeq6XXBbHFSX+XnrJUt48yWNVJf5i3bM8dbJN8aQbm8nmQ2Wmprc+ZMD886g3pQkFMLbUI+3oQGxvfT+7ndD9rv4ru9QetllRbuuvHPO6y2wFt/KtZPfKcDMHgpizHllJuaTyZJsaaHv8Sfo3foYfX98Eqe7u79xfHz//rwSgMl+Ip9MJ/nZgZ9x+59vJ+EksMXm6qVXUx2qdoOmTBDVFXcDqZ54D4bC9yt+j5+qQBVV/ioq/ZXuK1DpLmemsWgHt277MgkngWUMIccwX7x880WfZlFJvVulN9GbaXPZC4lwznw2PZyzXSYtWbgDmMFSQMyy8HpL8AUqkGy1WW/IbUs2ZL4EfCE3zRsqMF+CYwc42Wexuy3JrlNRnjzUztGWTtpigs9yeODaPdjeVXTUbWHz0oL3PpOeT4YLSHwrV3L49dfnB1Ei7ndIgZIm/zmr8a9chV1bi7e2Bru2FpNO0/SJT+aVuE5FSZIGOmed2RNciUgp8Afgc8aY+0WkayzBVa6RSq4G38B5LHjwQy9hRU3BpzdKzQazvuSqUJXdL92wkZDXw71/Osqj+1rxeoTrNjTwjsuWcv7iygkdr9APe/3nbyO4YQOp06cLBk7JU6eGPBm1ysvxNjTgXbjQnTY04F3YgLdhId6FDXgqK/uffk5Hg+Bxdr98NtCSK9xOKCI7dtC3dSu9Wx8nvncvAJ7qBZS+eAulW15M6EUvwlNRUdQn8sYYuuJdnO47zam+U5zuO83pyGl3mnk1R5rz2iJleS3vQKCUDZAywVKlv7JgetAevWRtIm2uRtmx2119XtDV486f2Iaz7S66GjYSM2lKUnHKTz/vtr/0lbnvS0bcVyKSP++Ms+MD8WDsAJLsI22EGD5KJA7eIOF3/J6yRWsKvutMLnk8+aTQ9yEi7jhnsdiQ7cuvu46e3/42r6r0cN+f01WSpM46syO4EhEv8Cvgt8aYr2TS9lGkaoGDb+A8FqQduH7TQj5//XpOdkW1ows1Y4yjZGXWB1dQuOv2bB481NrLvU8e5SfbTtAbT3H+4kreedlSXrW+/oyqDPZt28axd75r1B6aPPPmDQqcFg5MFzbgKR17deJ0OkXrb35J182f6f/Br/zsp6i+9tV4JqFnsjPofrlox53KgE7H7xmb5MmT9G59nN7HtxJ58k9u1/q2TWjTJkpesoXSLVvwn3POkKpQ6XSKrgN7SLQ046uppXLlmmH/X/uSfXmB0unIaU71nuJ05DTNfc2c7jud1+4H3KCpNlRLfWk9daE6HOPw68O/HrLv77zyO1xcPzmDCGd7C2zra2ZBSS1LJrm3wFG7uB9JOlk46Er2ufvLm3eDNNN2ANnzX0N25bzjV1jLthQ6yqTnk76nnuLYO945JL30qpfT++gfhpSWLv35z0js2zfmgElLktQUmPnBlbjf6Pfgdl7xoZz0O4D2nA4t5hljPjrSvsbSW2BLOEZ1qZ9fPXeKrz68n/PqyznYGiY+FT2VqVlnpg4QmDEngqux6I2n+Om2E9zz5BEOtfaxoNTPWy5p5C2XNFJTHij4HmMMyWPHiDyzjcgzzxDZto3ksWMFt6165zsouexFOHXVODXzSfqEeCpOPF34lUgniKVj7jTlTofbtivWxZ72Pcz3lGM7kLagLd3NssrlhGy3DZUlFiKChQUCFu6yiCCIu56xLfcl+9h6cmteKYBHPFy3/DrmB+djWza2ZeO1vHgtr7ssmTSPt38+u03B7Qets8TiiZNPcOuTtxJ34vgtP7dtuW3SAjodv2d4TjxO5Oln3NKpxx8ncfAgAHZDPaVbXuKWTl166YgPCAZ/vj7Lx/9Y/z9oKG2gJdIyEEBlSqHCifw2hYJQHaymrrSOulAddSV11JfUU1dS1/+aF5iX97c60n2EGwp1vjB8t+Gzz1S3TRx/MDep+cSkUpz+3Ofo+sF9+QcdJYgCNGBSM8msCK5eDGwFdkJ/36OfAJ4CfgQ0AseAG4wxHSPta7w/hF9/ZD9ffuiFvDTt6EJljbeKgUmn3cH+ohGcaNR9RSLu4ID9y1GcaGY5kknLWU51dhB7bmded68jVCE7a4KrLMcxbD3Qxj1/PMLv97VgW8Kr1te7VQYbykjs3+8GU9u2Edn2TP+4O1JZQXLtCo7X2+w4tY3tSw3t5ULChqQtJIM2STNMd89j5LW8+D1+fB4fAU/AndoBEukEh7qHdg6wZt4ayn3lODhupxiZYMgxDgaDMQaDGXnZmP73Z9OiqSit0dYhx/N7/P1dSA/XVqXYAp4AXs9AUJYboA2eLzQtuM7jJZwI88O9PySV8zc7W8fvMcaQPHrULZ3a+hiRPz/tfl/5fIQuuojSl2yhZMsWfMuWjdpQP5FOsK9jH4+eeJR/3/nvBavpAVT6K90gKVRHbUltXuBUX1JPdagarzW+AXCnq8R1yk1l28RpHrIg938Wj4fWr/1vok8/TeiSS4js2AHxuAZRajYadz6Z8mHQjTGPM/yJvnwyj33h0qFNuGJJh5ZwTIOrGaqYJUkmmcTp68uMaN6L0+u+0r29OL19JI4do+Puu/sb05pYjJP/+GECa9eCMQOBUSZIGq3HoiG83sw4F+5LQkFIpYeMo2FiMVKtrZPWPmc2sSzhitXVXLG6msNNnTzwk99z+qffY9f/PQidRwkm3Ce0yeoKWlbOZ+/LKvljTRe7Sjsx8hwAJasCNJ6Is+a4g8948GzegHfxIhaXNw4JjHKX/R7/wLqcNL/tx2f58FiFx/UZ7on87S+5fVKeyI+lBCDtpEmZFMl0kpSTImVSpBx3OWkyaU6KpDMwP3g5O590khzsOsj3935/yLm8ZNFLWBBcMOz7stOkkySSihRML/SeQmLpGG3RtrlTypFj8IMe/H7mvf3tOL1h+h5/guTx4wD4li6l8oYb3NKpiy4asVc/xzgc7j7MrrZd7Gzbya62Xezr3Dfs5wu4wU7jVYS8o/daOV6WWFy15CpWVa2iLdrGguAClpQvmVuBFbhBzYJVkzdEweBjnftq+PvzpryjmSH/s4D4fNR/4fNUvOY1wwZR/mXL9LdOzTlTHlxNp9ryAAGvNaSnsq5IkkOtvdoOaxTTVWXu5Ec/5vYG5PNRfdMHCKxbh4lE8gKjbKDk9PW6wVNvTvDU5y4Xajw7KsfBJBLYtTV4gwvdwCgUdAcJDIaGLocygdOgZSsYRHy+IbsfrvMDu7p6Ih/dnJDu7SO6fTuRbc8QeeYZYs89x5UJt+1US3WQJ9YIzy/2sLcR2ir68FkpVlQuZ1XVBl5ZuYpVVasIeAJ86vFbuOGSq5nXK3SUGu7pfpCvb7x10m7KG8sb+dyLPzfkifyS8iXTdjyP5cGDB7+nOL0wHuk+wv377x8S0L1/0/uL/rkaYzjYdZA3/uqNxHO61g54AiwIzs3eX+NHjnDynz860JNaPE7Ht7+NBAKUvOhFzHvXOyndsgXf4sUF32+MoTnS3B9E7Wrbxe723fRlerYL2SHWLVjH2857G+sXrKfSV8k/PPwPQz7f9QvWT0pglWWJxbKKZXMyQJ42UxnM5UgcPZoXWIHbC2xw40bEsjSIUmeVsyq4Wjq/hK+84fz+ji68HiHks/mH7z2LJW6nF9oOq7Az7ZXHOI5bVS4cJt0Txgn3kA6HB5Z7c9N7cXpy1nd1ke7qGthZIkHrl75c+EC2jae0FKv/VYK9YAHW0qX9y57SUqyS0vzl7KuklFR7G0fe9OYh3bou/LevTtqPgm/JEhpu/8LQbmqXTM6N+Eww0HD+NL6auv6G86n2dvqeeYb2P22l75mn8Rw8jjiGtAVHai2eP9+wd7HFC4s9VNUuZEXlCsqdhVSdKOXowSDR1AJq1y/k+g1L2NxYhYjgGIcPXvihgcCjd3IDHZj6J/LTUQIwlQGkiLC8cjm3bbltygLW6WASCSLPPEP40UcJ//dv87uozlh05zcovfzyIend8W52t+1mV/tAqVRb1K0ia1s251Sdw3XLr2PdgnWsX7CepeVL80peHePM+c9XTa5US8vQB5iJhNbCUGelaR9EeCLOpH784J7KwrEU1//fJ0jnVDX328JvPviSGV9VcKp66zKJBJGdOzn2rr/N/8G3bSrf8AbE43GDoWxQFA67QVJvrzuYqlO4Hn+W+P1Y5WV4ysqxykrxlJXjKS/DiUTpffTRIdvXfPzjhC68EE9pCVZZGVZpKeLzjXkgwGGvc+YPEDjr21xle9Lr/OSniZg4XRU2VuNCQic7KT/dA0DChhcahL2L4fSKKmTDGpbWnsuqqlWsrFrJiooVBOz8Ti2OtUe498kj/PCZ44RjKdYtLOedly3jug312BbsaTtEc6SV2lA1axYsx/YUrtKnxi77/TNVAd04jzfj2lwVKvlPd3TQ+9hWeh99lL4nnsDp60P8foIbNxB5dnvBcafM4nr2dux1S6Ta3VKpoz0DYw4tLV/K+gXr+wOp1fNWj6nEcqr/nmpGKFo+mY4hKJSaIjO/Q4tiKsYP4XADDn/gyhV88MrVHOuMjKm64HR0S7z12GO0H9hFRdihp9zDvBVr2dL4kmGPa4zBRCKku7pIdXb1lwz1vzo7Cy4PHjB1MKusrD8oyg2OrNIyN2jKTrPry8vxlJVl3leGVaC6HEzPl/UM79Z11gZXxhiO9Rzj6Z9/i8SPfs6SZod5ve663gAcWOyh45w6zMbzmL/xIlbWnMuqylVUBirHdZy+eIqfbT/JPX88wv6WXuaFfFy8bB6/39esPYSeXaY1uBocSHkXL6b3kUcGqjjbNt6FC93eLI3Brq2l9KUvpfSlV1By6aUYn5fW3/yS9ls+zYmSOAeX+Dj26s0cKuljf+f+/o49aoI1bhBV7QZT580/j3Jf+YTPX501ipZPdMwpNYdpcDVehQYcFty6wouqgjT3xEimR74pK2avR8m029A7mooSS8WIpqL9r1gq1r+uKdxE3/O7sH//FP5YmmDawr9sOaWhSipiFr7eON7eGN5wDDscxROOYPdEkNTQkc+zTGkIKsqgohypKMeqLMeqqMSqrHAHhfze9yCRwjJgp8Hr9bH0Jz8huGpy6nbrl/UQMzK4KvRgQRCOh4/z9Kk/c2DbIwR+/wznP9dLTTckPXC0GvoC4E1BTTes+PL/puElryjaORljePJgO3f+/gBPHGzPW2dbwh03bOAlq6qZX1qcNkhqxpm24KpQZxQ1H/wgLV/+cn9nOe4ZClVveyuVr389/nPP7S95b4u28fP9P+fbO79NOp0ibhKZCxI2VG/gorqLWLdgHevmr6O2pHZC56rOepPTW+DMfDip1JnS4Gq8Bg84HPBafOmGjTR1Rvnib/eRcgzV5XBufYAjLYZ7/vbSIdUFD3cf5oZf3JDXGNgWmzee+0aCdjAvQMoNlAotZ59I+hOGeWGYHzbM72FgPgzzMmnlUQpKC4SDEA65096gZKbQExR6g5n1mfmekHuj64zzSb4g+D1+gnYQv+32rJbtTS07H7Azadnthlkf8ATw2/4h8ztO76D36AEW9Fr0ltksWLV+xNK5iZrqEshxmnHBVbYEtW3/TpLdXezyNtPk7SN2+CDnPNvOZXscFrW7/1t956/Af8lF+O76KcQHqpdKIED1D+9l/jnri35+w5VMZ80r8bGyupQVNaWsrCllVWZaXxGYcDVTNa2mJLgqVNUvcfQoh173+ry2m8NpvPceAhdewK72XWw9sZWtJ7fyfPvzw25/19V3cVHdRWM+P6VGMeOqzyo1A838rthnGssSrllbx7k3belvh7V0fgnbjrXzkdfHufPJ/6a9YxNb9y1GxPCRH2/jry7wUjOvkyPhgxzoOsDutt15gRVAyqT47p7v4hEPQTtIwA4QtIMEPQEqU34aeoX5YR9VPTaV3UFKuxKUdsUIdkTwd/Rh9xXo2a6yHKmpxl5dg2MJicf+iCcnNnaAeV//EhUvfRmOcUibdH93yGmTJu2kSZokaSc9sOwk++ezXTRn1+cu7+/cz8/2389loXX44w49vhR/juzl8oWXUxWoIpaKEU/HiaVj/YOxhhPh/oFVc9eP1PXviHqAk+6YKyXeEvfzzHy2AU9g4DO2gwQ8AYLeYMH0vOXMe4PeIH7Lz6PHH+XmJ26e0nFXZnhA169QRxR7O/byzB9/wiNNfyBmGy7bY7hxDzQ2OxgRrE3rqfnA9ZRffTV2VZXb5mrFerpu/kx/aWTlZz9F5co1k3LOhXoI9dvCZ167jnAsxcHWXg609PKbXafoiiT7tynxeVhZkxt0lbGyppTFVUFsz8z726ipV6iEqvJ1ryX+wv4hgVXpVVfRu3Vrf3o4CM+t9nFX27386UcfoSvehSUWG6s3ctOmm1hRsYKPPvbRs6Z3RKXUzDEd9yTT0bRmMo931pdcQeEPeXfLQT629Sa2BNbS2dvGPqeLw7FWjNUL4t6oCRb1oUZWVC6irjXFkp88xcLTSUodL97rXklp/RKqwg6p5mZSzadJnm4mdfp0wTZMnuoFeGvrsOtqB6Z1ddi1mWlNDVZgoBF/7PBhjhRoj7T0/p8SWL58wp/JYGMZS2es0k46LxCLpWNDgrNYOsae9j18Z9d3hrz/ikVXUOYrc0v70lGiyWj/PrKlgLG0Oz9RgrCkfAllvjJ8Hh8+yx3ryOvx9pfI5Q4mmx0LKW/eGj7dtmyeOvUUt//5duJOfLSAbtpKrrIdUXTd/BmcWIyDS/08/ua1tBzazZpDCS7Yb2jozJ6lEHjXW1j0jnfjra0puC83SGvGV1Pb31vgZChUMl2oeq8xhva+BAdaeoe8TvcM/M/7PBbLFpSwsraUldWZwKu2lGULSvDbnrzjHmnv0+Edps+kDY6aLaGKHzrE4ev/ekivfp7qatIdHXlVAO3GRnjvm3ng519h6zlpXmgQjAXlvnKuWHQFWxZt4bKGy6jwVwBn0QC7arppydUsMJWBx3R890z1Mc/geFotcLwGf8g+y8e1y67lUNch9rY/TxL3B7K2CxbNX0Z941rqZB1NO6I0b2+luquNc2NtrDr1AvOj3VgM+jwty23QXFuLXVeHt64WuzYzratz06urC46BNJKpbo80HRluogGdMaY/6OqvhpmO5i+n3MAsmoxyoOsAPzvwsyH72VSziZAdIuEkiKfjJNIJEumceWdg2TEj94w4FiNc45QFV4NvJvsSvTS/4a3srE1wYoGwuB3OOWHwpt32iYNPrPqub7LgsivO9HSLanAPoeMNdHpiSQ4ODrpaeznWEekf/9kSaJwXcku7qkuJJtPc9+djJNIGvy189cZN2onG1Jq0hvp4vQTXrye+bx9OX9+QfSz+7n/Se/r4wIOIJX7+8K6NPBjfjsHQYM1jZckSdiWO8sUrvsgl9ZcUPBftvU9NAQ2uxmk6SljO5N7LGINjnP7aR9mB4/NqJmVqNeXWUjoePs6nnvgUCWfgoZHX8vKRCz/C/OB8HMetFZU26f4aUrm1ofrTcrdxBuZTTipvG8c4dMW6ePTEo3n3TxYWF9RegN/292+f3ZdjHByc/nPJXZ+3rUkX3CblpPLuK2HUe0sNrkYzOGMYY3jvQ+9lmVXNnr6DdBi3C7PFgXo2P3aKi55PsawFvGnAsvDU1ZJubsl7KtkTquBwaAEnSmtIeGx86SShZIzGt9zI+r+6kkXVZXgm4aZqqhuPTkfXy1MZ0BWjdC7lpAoGX0OCskxAtrd9L3ftvmvIfoZpW1H04KrQE3kgf/Bm2yZ6zmLYf5hg5vu2JwjBONR++MN0fP3OIWODTVYJ6kwSS6Y51NrHgdZeDjSH3WlLL4da+0g5Q79Xs9UKa8oC1Jb7qS4PUFPmp6bMT215gAWlfnz2mf1fa0nZEJPaxTRAyRVX0PfHP0JyoDpptv3g23Z+lPV2IzvCe2lyOvBa3v4f96wzLflXqohmfXA1FcGOMYaEkyCSjPDgkQf54tNfJOEk8Fk+3r3+3Wys2UjapEmmk/1BTNJJutNMWu60f52TP19o2pvoZXf7bkzOg3tBqA3VIiL5gVMmUMqmzRQe8WCJhW3ZWGLhEU9/msfykHJSdMQ6hryvsayRMl9Z/7bZ7S3cecuyBvYz3NQamt4SaeHBow8OOd4IbVq1zdVIcrsvL+1J8ZD3BDud45yKNNHTd5KrtztsPmyxqKKRkrY+nOZB/5yOg2/hQkKvfS3+ZcvwLVuOb9lSTh06QeLdf88+byN/rl3D8bIaevyl8ALwwlZ8tsXyBSWsqC5lebU7zc6X+M/8TzDVo55bYrGsYtmU3QxM9eCoxRgY1bZsbMsm5A2Nafs189bw/b3fHxLQTUXbikKln3X/61Okwz203H7HwAOEVIrwicO8sFKoChvWHHc7U5FAAO8Vl7NwceOQElT/0qWTfv7TLeD1cF5DOec15Hd9vXV/C2/7ztNDti8L2LSE4+xq6qG9N06B+It5JT434MoJvLLBV025n5qyANVlfgLe/CqIY6n6qM5MwcFRgfl//x4qr3993v9+7LMf5NaT/87xvhMc50T/tpX+Sv7xgn/kM09+RgfpVSpjuMBorAHT4AewfsvPxy7+GBfWXUg8HXdrpySj/bVWcpezTQf609KDOh5L5m9TqFZKwklw51/uHPd1e8TTf6/gtbwjTpNOMi+wAjAYllUsoyZUg23Z/fvzWB5ssfvn+48jg5Yz7/FYOeszy+3Rdm79060knYGHRj7Lxx1X3EFjWSOWZWFLTpCUE7xkj5EbPFlijdo51HAPtr/x8m9Myv3mke4jPHbisUm975qzJVeFnsgf6zlG60MP8OvffZM/LU9T3wkXnPCxeXecij4zEJqKELjwQmLbCw/iODiYOdIaJvzQQ3i/eGv/j2z7h2+hc8PFRJKGg629mVcfxzoipHPuquorAplgq4TlmaBrRU0JdeWj91amT6uLb4aXzhW15Gq4J/LgVvU7WA+PbLQ4VAdXHCvlza/4MN2f/kJeRxTV174aSyztfjdHoeEdAl6LB27a0t/TaCrt0N6XoKUnTks4Rks4TnOPO23pidMajtHcE6e1N573fZFVEfRmgjA/IZ/N7/Y25w2E7vMI33zbBaxtqKA84CXgHf0Hbrxm+PfPpA+OuvT+n/KU5xjN+//C0Y5D/CH9PEcTp/Fa3v7qJ1kBT4Afv/rHGIxW81MzyZSUXBUKloCCv31XNl7J7479jk9s/QRxJ47P8vGWNW+hsbyRrngXnbFOOmOddMQ7aO5r5kDXgTO5BGyx+zu2ynZ+1b+c2wlZzqsl0sJ9++4bsq+PXfQx1i1Yh9fjxRYbr8eLV7zucoGAaTz5vpjt3cdC21xpm6sRqzoNeSL/qVvY3vQMe//wc5adNixpzWxs23kBVFbj975Luq1tTG2aHMfw6N5mWvcdoCrSQ2eonOpzVvLSc2uH3GzEU2mOtUc42NqXF3QdauklHB84jxKfJxNs5QddS+eXEPB69Gn1HDKOgK6owVXfU09x7B3vHLLtqQ+/gX9N/JRwEF7zlOE1TzmUSIDKH96NF2tKOqKYzYqZNx3H0BFJ9AderZlgrDknKDveEaGtNzHifnwei/KgTXnAS1nQS3nApjzopTzg7U8vz6RXBL1D1uWWlBX7GsfzWYwjmJv0wVE7Ll7N9b/667wnvLbY3HPtPZzuO62dUajZYNKDq+FuZJdXLOfGX92Y17bHwmJx+WKO9hwddn9BO0iVv4qqQBWWWOxs2zlkm3evfzdr56/tD5z6exDOWfZa3nFf91QHOjB9wc5Ut/ecjgfb4zje7A+uROQa4GuAB/h3Y8wXhtt2uAweP3w4b5wRR0CM++kkPJC0oSTTRGTeu99N53/+55Cnkst+dn//mCVjeSI/0Ubzxhhaw3EOZIOtzPRgSy8nuwZ6vROBxVUh6isCPHO0Y8jT6jvfspnVtWUEfR5CPpug11O09l7T8aR6qo85w69xUkuuYl74z1d4eWijoVHmc9O9XTSeiCOBAOmb30fpVVexpHLpmZ7CWWWi3wfjcai1l2u/9hjx1MB3udcjfPyacwn4PHRHk/REU/TEkvREk/TEUplpJj2aJJEeuSMWn23lBVtej7DtaGde1UbbEv728qU0VAbxez0EvBZ+e2Dqty0C3vyp3/bg91r47ZFL1s4gmCvqTePgHi7bFni5+Y+3sLdj75Bt77r6Li6ovUA7o1CzQVHzSaESqqM9R4eMAypIf5W3wc6bdx7Pdwwd6+2LL/kiL138UoJ2sD/tbCjVyR5Xv0+m1ewOrkTEg9tS6RXACeBp4E3GmIKjKg6XwXOfyDsCLzTAX5YLizZcxsX/8TTeyMCTEruxkZqbPsCpm2+Zkl73zkQ0keZQ20CwdbC1l50nuznaPrRL90L8tkUoG2z5PIR8HgJeTybNQ9BrD8z3T21C3oG0gO1hx4kuvvLQPhIp0z9W0FVrarE9FrYleLIvkaLcSE710/Hpeho/jmMWNbjK7V79hXkxvvEam9NVwlvXvJXNCzbRc3gfFWGH7jKL+SvXTergzerMFeP/NpZM9wdc3SMFYpn0pq4oB1uH9pQ3EW6wlQm8BgVmxhh2HO/KC+YGV7UcpGg3jYNvqDzink/IGyKWiuU1HNdOKtQsM2n5xG/5uX719RzoOsDTp4e2Qb16ydU8cuyRIfnnP67+D97123eNKWA6W0p11LSb9cHVi4B/NcZcnVn+FwBjzOcLbT9ccNW+bycn3/w27rs4wX9faFHXAe972OZF3/g+9qHjQ6p3lL785SSPH59VbUaGe1r9iVetoSzgJZpIEUmkiSTSRJNpIpnlWDI9kJ5w06OJNJFMeiI18a7EwS1h80h+wOXxSH7aoIBscFoy5bD7VA+5/6KWwKbFlQR9xa+OFk2k2D7oBm4yjzfcMUe4aSxqcHW4+zAfePj9LJNqHgs/S5mnhIA3xLev+XeWlC/RH5BZZCpLyqBwuzK/Ldz/Py+nviJIPJUmlnQGpsk08ZRDbNA0b74/bdB7U2nawnH2NfcOOY/73nMJly4v2Ai5aDeNh7sP84ZfviHvZs8jHu699l6t/qdmu0nNJwAVvgp6k71Desr88at/zAudLwzb5mqs+UqDHTUFZn1vgQuB4znLJ4C8QUBE5D3AewAaGxsL7uR4RRLrY/+TU7u+wWufTHP9s174l/dxvCzOhle8gmWrVw8JpKay171iWDq/hK/euKnopSyptEM06QZe0ZxAbNvRDm57YGgVmHdctoTFVSHSjiFtDI5jSDkD07QxpNOZqeO+HGNIDUrLW5eZ70glGBz7Owa3bVqRG+eDu9/BfQdM5vGGO2Ys6dASjg33RH7MRssrrZFWjvYe4yjHAOhO99Kd7qUt2tbfK6Q+gZ8dLEtYXl064f+ZsVo6v4SvvOH8Id8/a+rKJyWoG66TkJqywAjvGpux5JPBN4xp4w6EPpW9mSo1nc4knwB87WVfoz3WPiRYaixvpLG8sWD+GU++mupejJUai5kWXBX6Vc679TTGfAv4FrhPTwrtpDI4j/d7/ou3b/lb5vdZ7H2j4Z7un/P14FWzMpAqxLKEa9bWce5NW4r6tNr2WJR5LMoC+Y09q0JevvLQC0Nubt7xoqWTdkM33A3VN996waQcc6qPN9Ixi3HTOFpeqQnVEPAEpqUbeDW7Tdb3z3CGC+aWzi+Z8L4nkk/0xk6dLc40n8wLzmNT7aZhg6VC+UfzlZrtZtojthPA4pzlRUDTeHfSWN7ITRd8kDuav8eHur/NF09/l5su+OCcG1Mk+7T60uULWF5dOqnVgLI3NwGv+y9TzJubmXLMs+Eac2XH9Qp43EBOx95R4zGV3z/ZYO6Bm7Zw33su4YGbtkxZz6iaT5Qa3Uj5JBssXVR3EcsqlmnprprzZlqbKxu3Q4uXAydxO7R4szFmd6HtR+oOVOvhFt9Ut+uYjmPO8Gssapsr0Hyi5qxJ6QVN84maYzSfKDW62d3myhiTEpH3A7/F7Yr9ruECq9FosXLxTXW7juk45tlwjXnH1nyi1Kg0nyg1Os0nSrlmVHAFYIx5AHhgus9DKaWUUkoppcZDy2uVUkoppZRSqgg0uFJKKaWUUkqpIphRHVqMl4i0AkdH2WwB0DYFpzOd9BrnhtGusc0Yc82Z7HgMeUU/37lBr9F1RnlF8wmg1zhXaD6ZXHqNc8Ok5JNZHVyNhYg8Y4y5cLrPYzLpNc4N03mN+vnODXqNc/fYU0WvcW7QfDK59Brnhsm6Rq0WqJRSSimllFJFoMGVUkoppZRSShXB2RBcfWu6T2AK6DXODdN5jfr5zg16jXP32FNFr3Fu0HwyufQa54ZJucY53+ZKKaWUUkoppabC2VBypZRSSimllFKTToMrpZRSSimllCqCORtcicg1IrJPRA6IyMen+3yKRUTuEpEWEdmVkzZPRB4Skf2ZadV0nuNEiMhiEfm9iOwRkd0i8sFM+ly6xoCI/FlE/pK5xk9n0qflGudiXtF8MieuUfPJJJvr+QQ0r0z1NWo+mZ00nxT3GudkcCUiHuBO4FrgPOBNInLe9J5V0dwNDB7M7OPAI8aYVcAjmeXZKgV8xBizBrgUeF/mbzeXrjEOXGmM2QicD1wjIpcyDdc4h/PK3Wg+me3XqPlk8t3N3M4noHllyq5R88mspvmkiNc4J4Mr4GLggDHmkDEmAdwHvHaaz6kojDGPAR2Dkl8L3JOZvwd43VSeUzEZY04ZY57NzIeBPcBC5tY1GmNMb2bRm3kZpuca52Re0XwCzP5r1HwyyeZ6PgHNK0ztNWo+maU0nxT3GudqcLUQOJ6zfCKTNlfVGmNOgZtBgJppPp+iEJGlwCbgKebYNYqIR0R2AC3AQ8aY6brGsymvzKn/oSzNJ5pPimxO/Q/l0rwy6deo+WQO0Hwy8Wucq8GVFEjTPudnEREpBX4KfMgY0zPd51Nsxpi0MeZ8YBFwsYism6ZT0bwyi2k+mTKaT2Y5zStTQvPJLKf5pDjmanB1Alics7wIaJqmc5kKzSJSD5CZtkzz+UyIiHhxM/f3jDH3Z5Ln1DVmGWO6gEdx63NPxzWeTXllTv0PaT7RfDJJ5tz/kOaVKbtGzSezmOaT4l3jXA2ungZWicgyEfEBbwR+Mc3nNJl+AbwjM/8O4L+m8VwmREQE+A6wxxjzlZxVc+kaq0WkMjMfBK4C9jI913g25ZW59D+k+cSl+aT45sz/EGheYWqvUfPJLKX5pMjXaIyZky/gVcALwEHgk9N9PkW8rh8Ap4Ak7lOivwPm4/Zwsj8znTfd5zmB63sxbjWC54Admder5tg1bgC2Z65xF/CpTPq0XONczCuaT+bENWo+mfxrmtP5JHONmlem8Bo1n8zOl+aT4l6jZHaslFJKKaWUUmoC5mq1QKWUUkoppZSaUhpcKaWUUkoppVQRaHCllFJKKaWUUkWgwZVSSimllFJKFYEGV0oppZRSSilVBBpcKQBEpFJE/mdmvkFEfjLd56TUTKR5RanRaT5RanSaT+Ym7YpdASAiS4FfGWPWTfe5KDWTaV5RanSaT5QaneaTucme7hNQM8YXgBUisgN3ILU1xph1IvJO4HWAB1gHfBnwAW8D4sCrjDEdIrICuBOoBiLAu40xe6f6IpSaAppXlBqd5hOlRqf5ZA7SaoEq6+PAQWPM+cA/D1q3DngzcDHwOSBijNkEPAm8PbPNt4APGGMuAP4J+D9TcdJKTQPNK0qNTvOJUqPTfDIHacmVGovfG2PCQFhEuoFfZtJ3AhtEpBS4DPixiGTf45/601Rq2mleUWp0mk+UGp3mk1lKgys1FvGceSdn2cH9H7KArsyTF6XOZppXlBqd5hOlRqf5ZJbSaoEqKwyUnckbjTE9wGERuQFAXBuLeXJKzSCaV5QaneYTpUan+WQO0uBKAWCMaQeeEJFdwB1nsIu3AH8nIn8BdgOvLeb5KTVTaF5RanSaT5QaneaTuUm7YldKKaWUUkqpItCSK6WUUkoppZQqAg2ulFJKKaWUUqoINLhSSimllFJKqSLQ4EoppZRSSimlikCDK6WUUkoppZQqAg2ulFJKKaWUUqoINLhSSimllFJKqSLQ4EoppZRSSimlikCDK6WUUkoppZQqAg2ulFJKKaWUUqoINLhSSimllFJKqSLQ4EoppZRSSimlikCDK6WUUkoppZQqAg2ulFJKKaWUUqoINLhSSimllFJKqSLQ4EoppZRSSimlikCDK6WUUkoppZQqAg2ulFJKKaWUUqoINLhSSimllFJKqSLQ4EoppZRSSimlikCDK6WUUkoppZQqAg2ulFJKKaWUUqoINLhSSimllFJKqSLQ4EoppZRSSimlikCDK6WUUkoppZQqAg2ulFJKzQgi8oCIVE73eSillFJnSowx030OSimllFJKKTXracmVUkqpMROREhH5tYj8RUR2iciNInJERG4XkT9nXisz21aLyE9F5OnM6/JMeqmI/IeI7BSR50TkrzPpR0RkQWb+rZl97RCR/ycinszr7sxxd4rIP07fJ6GUUkoNZU/3CSillJpVrgGajDF/BSAiFcDtQI8x5mIReTvwb8B1wNeArxpjHheRRuC3wBrgFqDbGLM+s4+q3AOIyBrgRuByY0xSRP4P8BZgN7DQGLMus13lZF+sUkopNR4aXCmllBqPncCXROR24FfGmK0iAvCDzPofAF/NzF8FnJdZD1AuImWZ9DdmE40xnYOO8XLgAuDpzHuDQAvwS2C5iHwd+DXwYHEvTSmllJoYDa6UUkqNmTHmBRG5AHgV8HkRyQY4uQ14s/MW8CJjTDR3H+JGTCM1+BXgHmPMvwxZIbIRuBp4H/AG4G/P6EKUUkqpSaBtrpRSSo2ZiDQAEWPMd4EvAZszq27MmT6ZmX8QeH/Oe88fJj2vWiDwCPA3IlKTWT9PRJZk2mNZxpif4lYt3IxSSik1g2jJlVJKqfFYD9whIg6QBP4B+AngF5GncB/avSmz7U3AnSLyHO7vzWPAe4HPZtJ3AWng08D92QMYY54XkZuBB0XEyhznfUAU+I9MGsCQki2llFJqOmlX7EoppSZERI4AFxpj2qb7XJRSSqnppNUClVJKKaWUUqoItORKKaWUUkoppYpAS66UUkoppZRSqgg0uFJKKaWUUkqpItDgSimllFJKKaWKQIMrpZRSSimllCoCDa6UUmoOE5G0iOwQkV0i8mMRCWXSa0Xk+yJySES2iciTIvL6zLqXiogRkb/L2c+mTNo/ZZbvFpHDmX3vEJE/Ts8VTh8RqROR+0TkoIg8LyIPiMhqEYnmfC47ROTtIlKW2W5V5r1eEdkpIpdM93UopZQqHh1EWCmlZohwLNm451T41uaeWENdeeDUufVlN5cFvMcmuNuoMeZ8ABH5HvBeEfkq8HPgHmPMmzPrlgCvyXnfTuBG4DuZ5TcCfxm07382xvxkguc36cKJcOMLnS/c2hppbagJ1ZxaVbXq5jJf2YQ+VxER4Ge4n+EbM2nnA7XAwexnPug9/wLcCbwS+Cfgj8aYpyZyHkoppWYWDa6UUmoGCMeSjb/ZefrhT/1i16pY0iHgtfjMa9Zdeu36uquKEGBlbQU2AFcCCWPMN7MrjDFHga/nbHsMKBeRWqAFuAZ4oEjnMWXCiXDjw0cffvi2p25bFUvHCHgCfOKST1x61ZKrrppggPUyIDnoM9whIkuHe4Mx5kci8rci8lHgvcCmCRxfKaXUDKTVApVSagbYcyp8azawAoglHT71i12r9pwK31qM/YuIDVyLWyK1Fnh2DG/7CXADcFlm+/ig9XfkVH37XjHOs9he6Hzh1mxgBRBLx7jtqdtWvdD5wkQ/13XAtmHWrRhULXBLzroPAbcDnzXGdEzwHJRSSs0wWnKllFIzQHNPrCEbWGXFkg4tPbGGCe46KCI7MvNbcav5vTd3AxG5E3gxbmnWRTmrfgT8EDgX+AFukJVrxlcLbI20NmQDq6xYOkZrpHWin+tIClYLzLgGOIUbnCmllJpjtORKKaVmgLrywKmAN/8rOeC1qCkPNE1w11FjzPmZ1weMMQlgN7A5u4Ex5n3Ay4Hq3DcaY04DSeAVwCMTPI9pUROqORXwBPLSAp4A1aHqiX6uu4ELxvMGEWkAbgIuBl4lIhsmeA5KKaVmGA2ulFJqBji3vuzmz7xm3f5sgJVpc7V/TX3ZLZNwuN8BARH5h5y00DDbfgr4mDEmPQnnMelWVa26+ROXfGJ/NsDKtLnav7pq9UQ/198BfhF5dzZBRC4Clozwnq8CtxljTgAfBu7MdIyhlFJqjhBjzHSfg1JKKQZ6C2zpiTXUlAea1tSX3TLRzixEpNcYU1ogvR73Zv8SoBXoA75pjPmhiLwU+CdjzHWD3vOvQK8x5ksicjdwBdCds8nFmZKxGSW3t8DqUHXT6qrVt0y0t0DoL4n6N9wSrBhwBLdN1XPAvpxN7wL2AJ8BLjOZH14R+QXwU2PMPRM9F6WUUjODBldKKaWUUkopVQRaLVAppZRSSimlikCDK6WUUkoppZQqAg2ulFJKKaWUUqoINLhSSimllFJKqSLQ4EoppZRSSimlikCDK6WUUkoppZQqAg2ulFJqDhORc0RkR86rR0Q+NMy2XxORkyJi5aS9U0RaRWS7iOwXkd+KyGWD3vdPIrJXRHaJyF9E5O0566pFJCkifz9pFzkNRCSd+Tx3iciPRSSUSa8Vke+LyCER2SYiT4rI66f7fJVSSk0NDa6UUmqmiPU0cvSP97Dr/oc4+uS9xHoaJ7pLY8w+Y8z5xpjzcQe7jQA/G7xdJqB6PXAceMmg1T80xmwyxqwCvgDcLyJrMu97L/AK3AGE12XeKznvvQH4E/CmiV7LmUqHw42RZ565p+eBBx6KbNt2bzocnvDnCkQzn+s6IAG8V0QE+DnwmDFmuTHmAuCNwKIiHE8ppdQsYE/3CSillMINrPb818M88M+rSEbBG4RX3XEpa157FYHyY0U6ysuBg8aYowXWvQzYBfwQNxB6tNAOjDG/F5FvAe8B/hH4BPAyY0xPZn03cE/OW94EfAT4vogsNMacLNK1jEk6HG4MP/jgw6dv/ewqE4shgQB1t9x8adkrX3mVp6ysWJ/rVmADcCWQMMZ8M7si81l/vUjHUUopNcNpyZVSSs0Ezbtu7Q+sAJJReOCfV9G869YiHuWNwA+GWfemzLqfAdeJiHeE/TwLnCsiZUCZMeZgoY1EZDFQZ4z5M/Aj4MYzPvMzFN+379ZsYAVgYjFO3/rZVfF9+4ryuYqIDVwL7ATW4n42SimlzlIaXCml1EwQPt3QH1hlJaNuehGIiA94DfDjYda9Cvh5pgTqKeCVI+0uZ2pG2O6NuEEVwH1MQ9XAVEtLQzawyjKxGKmW1ol+rkER2QE8AxwDvjN4AxG5M9MG7ekJHksppdQsodUClVJqJiirP4U3SF6A5Q1CWV1TkY5wLfCsMaY5U6L0y0z6N4EmoALY6TYbIoTbNuvXw+xrE7DHGNMjIn0istwYc6jAdm8CakXkLZnlBhFZZYzZX6RrGpVdW3tKAgFyAywJBLBrqif6uUYz7dgG9iuyG/jr7LIx5n0isgA3AFNKKXUW0JIrpZSaCWrX3syr7tiPN+guu22u9lO77pYiHSFb7Q9jzPFsJxeZ9kFvAv6HMWapMWYpsAx4ZbYHvFwicgVue6tvZ5I+D9wpIuWZ9eUi8h4ROQcoMcYszNnv53FLs6aMf/Xqm+tuuXm/BALu+bttrvb7zzmnWJ9rrt8BARH5h5y0IZ+hUkqpuUuMGalGh1JKqSkT62mkedethE83UFbXRO26W4rRmUUmSDoOLM90ODF43QlgabZTikz6/bidWwSBO4CTuIHCYeAzxpgnMtsJ8M/A3wHJzOvLwEogYIz5eM4+NwD3GWPOm+g1jUc6HG6M79t3a6qltcGuqW7yn3POLRPtzEJEeo0xpQXS64GvApcArUAf8E1jzA8ncjyllFKzgwZXSimllFJKKVUEWi1QKaWUUkoppYpAgyullFJKKaWUKgINrpRSSimllFKqCDS4UkoppZRSSqki0OBKKaWUUkoppYpAgyullFJKKaWUKgINrpRSSimllFKqCDS4UkoppZRSSqki0OBKKaWUUkoppYpAgyullFJKKaWUKgINrpRSSimllFKqCP4/TwLWrAvIo1wAAAAASUVORK5CYII=\n", + "image/png": "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Y4ryikj/lE9E+qd8IjJwkWHc13xgLvCsmQHMBJ4ysxPxS6pmFaw7E9g2jGkTERERERE5IMNWcuWce945V++cm+Ocm4MfUL3MObcDuAW4yMziZjYXWAg8NlxpExEREREROVDl7Ir9t8DDwOFmtsXM3tfbus65FcBNwAvAncDlzrlcudImIiIiIiJSamWrFuicu7if5XO6TV8FXFWu9IiIiIiIiJTTsPYWKCIiIiIiMlYpuBIRERERESkBBVciIiIiIiIloOBKRERERESkBBRciYiIiIiIlICCKxERERERkRJQcCUiIiIiIlICCq5ERERERERKQMGViIiIiIhICSi4EhERERERKQEFVyIiIiIiIiWg4EpERERERKQEFFyJiIiIiIiUQNmCKzP7mZk1mNnygnnfMrOVZvacmf3RzMYXLPusma01s1Vmdna50iUiIiIiIlIO5Sy5ug44p9u8u4AjnXNHA6uBzwKY2RLgImBp8J6rzSxcxrSJiIiIiIiUVNmCK+fc/cCebvP+5pzLBpOPADOD8QuAG5xzKefcBmAtcGK50iYiIiIiIlJqI9nm6r3AHcH4DOClgmVbgnk9mNmlZvaEmT3R2NhY5iSKjF7KKyL9Uz4R6Z/yicjAjUhwZWafB7LAr/Oziqzmir3XOXetc26Zc25ZXV1duZIoMuopr4j0T/lEpH/KJyIDFxnuHZrZJcC5wBnOuXwAtQWYVbDaTGDbcKdNRERERERkqIa15MrMzgE+A5zvnGsrWHQLcJGZxc1sLrAQeGw40yYiIiIiInIgylZyZWa/BU4DJpvZFuBL+L0DxoG7zAzgEefcB51zK8zsJuAF/OqClzvncuVKm4iIiIiISKmVLbhyzl1cZPZP+1j/KuCqcqVHRERERESknEayt0AREREREZExQ8GViIiIiIhICSi4EhERERERKQEFVyIiIiIiIiWg4EpERERERKQEFFyJiIiIiIiUgIIrERERERGRElBwJSIiIiIiUgIKrkREREREREpAwZWIiIiIiEgJKLgSEREREREpAQVXIiIiIiIiJaDgSkREREREpATKFlyZ2c/MrMHMlhfMm2hmd5nZmmA4oWDZZ81srZmtMrOzy5UuERERERGRcihnydV1wDnd5l0J3O2cWwjcHUxjZkuAi4ClwXuuNrNwGdMmIiIiIiJSUmULrpxz9wN7us2+ALg+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\n", "text/plain": [ "
" ] @@ -111,7 +111,7 @@ " * @author Feross Aboukhadijeh \n", " * @license MIT\n", " */\n", - "\"use strict\";var e=t(\"base64-js\"),n=t(\"ieee754\");r.Buffer=a,r.SlowBuffer=function(t){+t!=t&&(t=0);return a.alloc(+t)},r.INSPECT_MAX_BYTES=50;function i(t){if(t>2147483647)throw new RangeError('The value \"'+t+'\" is invalid for option \"size\"');var e=new Uint8Array(t);return e.__proto__=a.prototype,e}function a(t,e,r){if(\"number\"==typeof t){if(\"string\"==typeof e)throw new TypeError('The \"string\" argument must be of type string. Received type number');return l(t)}return o(t,e,r)}function o(t,e,r){if(\"string\"==typeof t)return function(t,e){\"string\"==typeof e&&\"\"!==e||(e=\"utf8\");if(!a.isEncoding(e))throw new TypeError(\"Unknown encoding: \"+e);var r=0|f(t,e),n=i(r),o=n.write(t,e);o!==r&&(n=n.slice(0,o));return n}(t,e);if(ArrayBuffer.isView(t))return c(t);if(null==t)throw TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof t);if(B(t,ArrayBuffer)||t&&B(t.buffer,ArrayBuffer))return function(t,e,r){if(e<0||t.byteLength=2147483647)throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+2147483647..toString(16)+\" bytes\");return 0|t}function f(t,e){if(a.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||B(t,ArrayBuffer))return t.byteLength;if(\"string\"!=typeof t)throw new TypeError('The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);var r=t.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;for(var i=!1;;)switch(e){case\"ascii\":case\"latin1\":case\"binary\":return r;case\"utf8\":case\"utf-8\":return D(t).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*r;case\"hex\":return r>>>1;case\"base64\":return R(t).length;default:if(i)return n?-1:D(t).length;e=(\"\"+e).toLowerCase(),i=!0}}function h(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return\"\";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return\"\";if((r>>>=0)<=(e>>>=0))return\"\";for(t||(t=\"utf8\");;)switch(t){case\"hex\":return M(this,e,r);case\"utf8\":case\"utf-8\":return T(this,e,r);case\"ascii\":return k(this,e,r);case\"latin1\":case\"binary\":return A(this,e,r);case\"base64\":return w(this,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return S(this,e,r);default:if(n)throw new TypeError(\"Unknown encoding: \"+t);t=(t+\"\").toLowerCase(),n=!0}}function p(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function d(t,e,r,n,i){if(0===t.length)return-1;if(\"string\"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),N(r=+r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if(\"string\"==typeof e&&(e=a.from(e,n)),a.isBuffer(e))return 0===e.length?-1:g(t,e,r,n,i);if(\"number\"==typeof e)return e&=255,\"function\"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):g(t,[e],r,n,i);throw new TypeError(\"val must be string, number or Buffer\")}function g(t,e,r,n,i){var a,o=1,s=t.length,l=e.length;if(void 0!==n&&(\"ucs2\"===(n=String(n).toLowerCase())||\"ucs-2\"===n||\"utf16le\"===n||\"utf-16le\"===n)){if(t.length<2||e.length<2)return-1;o=2,s/=2,l/=2,r/=2}function c(t,e){return 1===o?t[e]:t.readUInt16BE(e*o)}if(i){var u=-1;for(a=r;as&&(r=s-l),a=r;a>=0;a--){for(var f=!0,h=0;hi&&(n=i):n=i;var a=e.length;n>a/2&&(n=a/2);for(var o=0;o>8,i=r%256,a.push(i),a.push(n);return a}(e,t.length-r),t,r,n)}function w(t,r,n){return 0===r&&n===t.length?e.fromByteArray(t):e.fromByteArray(t.slice(r,n))}function T(t,e,r){r=Math.min(t.length,r);for(var n=[],i=e;i239?4:c>223?3:c>191?2:1;if(i+f<=r)switch(f){case 1:c<128&&(u=c);break;case 2:128==(192&(a=t[i+1]))&&(l=(31&c)<<6|63&a)>127&&(u=l);break;case 3:a=t[i+1],o=t[i+2],128==(192&a)&&128==(192&o)&&(l=(15&c)<<12|(63&a)<<6|63&o)>2047&&(l<55296||l>57343)&&(u=l);break;case 4:a=t[i+1],o=t[i+2],s=t[i+3],128==(192&a)&&128==(192&o)&&128==(192&s)&&(l=(15&c)<<18|(63&a)<<12|(63&o)<<6|63&s)>65535&&l<1114112&&(u=l)}null===u?(u=65533,f=1):u>65535&&(u-=65536,n.push(u>>>10&1023|55296),u=56320|1023&u),n.push(u),i+=f}return function(t){var e=t.length;if(e<=4096)return String.fromCharCode.apply(String,t);var r=\"\",n=0;for(;ne&&(t+=\" ... \"),\"\"},a.prototype.compare=function(t,e,r,n,i){if(B(t,Uint8Array)&&(t=a.from(t,t.offset,t.byteLength)),!a.isBuffer(t))throw new TypeError('The \"target\" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError(\"out of range index\");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(this===t)return 0;for(var o=(i>>>=0)-(n>>>=0),s=(r>>>=0)-(e>>>=0),l=Math.min(o,s),c=this.slice(n,i),u=t.slice(e,r),f=0;f>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n=\"utf8\")):(n=r,r=void 0)}var i=this.length-e;if((void 0===r||r>i)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");n||(n=\"utf8\");for(var a=!1;;)switch(n){case\"hex\":return m(this,t,e,r);case\"utf8\":case\"utf-8\":return v(this,t,e,r);case\"ascii\":return y(this,t,e,r);case\"latin1\":case\"binary\":return x(this,t,e,r);case\"base64\":return b(this,t,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return _(this,t,e,r);default:if(a)throw new TypeError(\"Unknown encoding: \"+n);n=(\"\"+n).toLowerCase(),a=!0}},a.prototype.toJSON=function(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};function k(t,e,r){var n=\"\";r=Math.min(t.length,r);for(var i=e;in)&&(r=n);for(var i=\"\",a=e;ar)throw new RangeError(\"Trying to access beyond buffer length\")}function L(t,e,r,n,i,o){if(!a.isBuffer(t))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError(\"Index out of range\")}function C(t,e,r,n,i,a){if(r+n>t.length)throw new RangeError(\"Index out of range\");if(r<0)throw new RangeError(\"Index out of range\")}function P(t,e,r,i,a){return e=+e,r>>>=0,a||C(t,0,r,4),n.write(t,e,r,i,23,4),r+4}function I(t,e,r,i,a){return e=+e,r>>>=0,a||C(t,0,r,8),n.write(t,e,r,i,52,8),r+8}a.prototype.slice=function(t,e){var r=this.length;(t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e>>=0,e>>>=0,r||E(t,e,this.length);for(var n=this[t],i=1,a=0;++a>>=0,e>>>=0,r||E(t,e,this.length);for(var n=this[t+--e],i=1;e>0&&(i*=256);)n+=this[t+--e]*i;return n},a.prototype.readUInt8=function(t,e){return t>>>=0,e||E(t,1,this.length),this[t]},a.prototype.readUInt16LE=function(t,e){return t>>>=0,e||E(t,2,this.length),this[t]|this[t+1]<<8},a.prototype.readUInt16BE=function(t,e){return t>>>=0,e||E(t,2,this.length),this[t]<<8|this[t+1]},a.prototype.readUInt32LE=function(t,e){return t>>>=0,e||E(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},a.prototype.readUInt32BE=function(t,e){return t>>>=0,e||E(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},a.prototype.readIntLE=function(t,e,r){t>>>=0,e>>>=0,r||E(t,e,this.length);for(var n=this[t],i=1,a=0;++a=(i*=128)&&(n-=Math.pow(2,8*e)),n},a.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||E(t,e,this.length);for(var n=e,i=1,a=this[t+--n];n>0&&(i*=256);)a+=this[t+--n]*i;return a>=(i*=128)&&(a-=Math.pow(2,8*e)),a},a.prototype.readInt8=function(t,e){return t>>>=0,e||E(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},a.prototype.readInt16LE=function(t,e){t>>>=0,e||E(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt16BE=function(t,e){t>>>=0,e||E(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt32LE=function(t,e){return t>>>=0,e||E(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},a.prototype.readInt32BE=function(t,e){return t>>>=0,e||E(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},a.prototype.readFloatLE=function(t,e){return t>>>=0,e||E(t,4,this.length),n.read(this,t,!0,23,4)},a.prototype.readFloatBE=function(t,e){return t>>>=0,e||E(t,4,this.length),n.read(this,t,!1,23,4)},a.prototype.readDoubleLE=function(t,e){return t>>>=0,e||E(t,8,this.length),n.read(this,t,!0,52,8)},a.prototype.readDoubleBE=function(t,e){return t>>>=0,e||E(t,8,this.length),n.read(this,t,!1,52,8)},a.prototype.writeUIntLE=function(t,e,r,n){(t=+t,e>>>=0,r>>>=0,n)||L(this,t,e,r,Math.pow(2,8*r)-1,0);var i=1,a=0;for(this[e]=255&t;++a>>=0,r>>>=0,n)||L(this,t,e,r,Math.pow(2,8*r)-1,0);var i=r-1,a=1;for(this[e+i]=255&t;--i>=0&&(a*=256);)this[e+i]=t/a&255;return e+r},a.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,1,255,0),this[e]=255&t,e+1},a.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},a.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},a.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},a.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},a.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var i=Math.pow(2,8*r-1);L(this,t,e,r,i-1,-i)}var a=0,o=1,s=0;for(this[e]=255&t;++a>0)-s&255;return e+r},a.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var i=Math.pow(2,8*r-1);L(this,t,e,r,i-1,-i)}var a=r-1,o=1,s=0;for(this[e+a]=255&t;--a>=0&&(o*=256);)t<0&&0===s&&0!==this[e+a+1]&&(s=1),this[e+a]=(t/o>>0)-s&255;return e+r},a.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},a.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},a.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},a.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},a.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},a.prototype.writeFloatLE=function(t,e,r){return P(this,t,e,!0,r)},a.prototype.writeFloatBE=function(t,e,r){return P(this,t,e,!1,r)},a.prototype.writeDoubleLE=function(t,e,r){return I(this,t,e,!0,r)},a.prototype.writeDoubleBE=function(t,e,r){return I(this,t,e,!1,r)},a.prototype.copy=function(t,e,r,n){if(!a.isBuffer(t))throw new TypeError(\"argument should be a Buffer\");if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n=this.length)throw new RangeError(\"Index out of range\");if(n<0)throw new RangeError(\"sourceEnd out of bounds\");n>this.length&&(n=this.length),t.length-e=0;--o)t[o+e]=this[o+r];else Uint8Array.prototype.set.call(t,this.subarray(r,n),e);return i},a.prototype.fill=function(t,e,r,n){if(\"string\"==typeof t){if(\"string\"==typeof e?(n=e,e=0,r=this.length):\"string\"==typeof r&&(n=r,r=this.length),void 0!==n&&\"string\"!=typeof n)throw new TypeError(\"encoding must be a string\");if(\"string\"==typeof n&&!a.isEncoding(n))throw new TypeError(\"Unknown encoding: \"+n);if(1===t.length){var i=t.charCodeAt(0);(\"utf8\"===n&&i<128||\"latin1\"===n)&&(t=i)}}else\"number\"==typeof t&&(t&=255);if(e<0||this.length>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),\"number\"==typeof t)for(o=e;o55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&a.push(239,191,189);continue}if(o+1===n){(e-=3)>-1&&a.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&a.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&a.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;a.push(r)}else if(r<2048){if((e-=2)<0)break;a.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;a.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error(\"Invalid code point\");if((e-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return a}function R(t){return e.toByteArray(function(t){if((t=(t=t.split(\"=\")[0]).trim().replace(O,\"\")).length<2)return\"\";for(;t.length%4!=0;)t+=\"=\";return t}(t))}function F(t,e,r,n){for(var i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function B(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function N(t){return t!=t}}).call(this)}).call(this,t(\"buffer\").Buffer)},{\"base64-js\":79,buffer:85,ieee754:230}],86:[function(t,e,r){e.exports=function(t,e,r){return er?r:t:te?e:t}},{}],87:[function(t,e,r){\"use strict\";var n=t(\"clamp\");function i(t,e){null==e&&(e=!0);var r=t[0],i=t[1],a=t[2],o=t[3];return null==o&&(o=e?1:255),e&&(r*=255,i*=255,a*=255,o*=255),16777216*(r=255&n(r,0,255))+((i=255&n(i,0,255))<<16)+((a=255&n(a,0,255))<<8)+(o=255&n(o,0,255))}e.exports=i,e.exports.to=i,e.exports.from=function(t,e){var r=(t=+t)>>>24,n=(16711680&t)>>>16,i=(65280&t)>>>8,a=255&t;return!1===e?[r,n,i,a]:[r/255,n/255,i/255,a/255]}},{clamp:86}],88:[function(t,e,r){\"use strict\";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},{}],89:[function(t,e,r){\"use strict\";var n=t(\"color-rgba\"),i=t(\"clamp\"),a=t(\"dtype\");e.exports=function(t,e){\"float\"!==e&&e||(e=\"array\"),\"uint\"===e&&(e=\"uint8\"),\"uint_clamped\"===e&&(e=\"uint8_clamped\");var r=new(a(e))(4),o=\"uint8\"!==e&&\"uint8_clamped\"!==e;return t.length&&\"string\"!=typeof t||((t=n(t))[0]/=255,t[1]/=255,t[2]/=255),function(t){return t instanceof Uint8Array||t instanceof Uint8ClampedArray||!!(Array.isArray(t)&&(t[0]>1||0===t[0])&&(t[1]>1||0===t[1])&&(t[2]>1||0===t[2])&&(!t[3]||t[3]>1))}(t)?(r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=null!=t[3]?t[3]:255,o&&(r[0]/=255,r[1]/=255,r[2]/=255,r[3]/=255),r):(o?(r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=null!=t[3]?t[3]:1):(r[0]=i(Math.floor(255*t[0]),0,255),r[1]=i(Math.floor(255*t[1]),0,255),r[2]=i(Math.floor(255*t[2]),0,255),r[3]=null==t[3]?255:i(Math.floor(255*t[3]),0,255)),r)}},{clamp:86,\"color-rgba\":91,dtype:127}],90:[function(t,e,r){(function(r){(function(){\"use strict\";var n=t(\"color-name\"),i=t(\"is-plain-obj\"),a=t(\"defined\");e.exports=function(t){var e,s,l=[],c=1;if(\"string\"==typeof t)if(n[t])l=n[t].slice(),s=\"rgb\";else if(\"transparent\"===t)c=0,s=\"rgb\",l=[0,0,0];else if(/^#[A-Fa-f0-9]+$/.test(t)){var u=(p=t.slice(1)).length;c=1,u<=4?(l=[parseInt(p[0]+p[0],16),parseInt(p[1]+p[1],16),parseInt(p[2]+p[2],16)],4===u&&(c=parseInt(p[3]+p[3],16)/255)):(l=[parseInt(p[0]+p[1],16),parseInt(p[2]+p[3],16),parseInt(p[4]+p[5],16)],8===u&&(c=parseInt(p[6]+p[7],16)/255)),l[0]||(l[0]=0),l[1]||(l[1]=0),l[2]||(l[2]=0),s=\"rgb\"}else if(e=/^((?:rgb|hs[lvb]|hwb|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms)a?)\\s*\\(([^\\)]*)\\)/.exec(t)){var f=e[1],h=\"rgb\"===f,p=f.replace(/a$/,\"\");s=p;u=\"cmyk\"===p?4:\"gray\"===p?1:3;l=e[2].trim().split(/\\s*,\\s*/).map((function(t,e){if(/%$/.test(t))return e===u?parseFloat(t)/100:\"rgb\"===p?255*parseFloat(t)/100:parseFloat(t);if(\"h\"===p[e]){if(/deg$/.test(t))return parseFloat(t);if(void 0!==o[t])return o[t]}return parseFloat(t)})),f===p&&l.push(1),c=h||void 0===l[u]?1:l[u],l=l.slice(0,u)}else t.length>10&&/[0-9](?:\\s|\\/)/.test(t)&&(l=t.match(/([0-9]+)/g).map((function(t){return parseFloat(t)})),s=t.match(/([a-z])/gi).join(\"\").toLowerCase());else if(isNaN(t))if(i(t)){var d=a(t.r,t.red,t.R,null);null!==d?(s=\"rgb\",l=[d,a(t.g,t.green,t.G),a(t.b,t.blue,t.B)]):(s=\"hsl\",l=[a(t.h,t.hue,t.H),a(t.s,t.saturation,t.S),a(t.l,t.lightness,t.L,t.b,t.brightness)]),c=a(t.a,t.alpha,t.opacity,1),null!=t.opacity&&(c/=100)}else(Array.isArray(t)||r.ArrayBuffer&&ArrayBuffer.isView&&ArrayBuffer.isView(t))&&(l=[t[0],t[1],t[2]],s=\"rgb\",c=4===t.length?t[3]:1);else s=\"rgb\",l=[t>>>16,(65280&t)>>>8,255&t];return{space:s,values:l,alpha:c}};var o={red:0,orange:60,yellow:120,green:180,blue:240,purple:300}}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"color-name\":88,defined:124,\"is-plain-obj\":236}],91:[function(t,e,r){\"use strict\";var n=t(\"color-parse\"),i=t(\"color-space/hsl\"),a=t(\"clamp\");e.exports=function(t){var e,r=n(t);return r.space?((e=Array(3))[0]=a(r.values[0],0,255),e[1]=a(r.values[1],0,255),e[2]=a(r.values[2],0,255),\"h\"===r.space[0]&&(e=i.rgb(e)),e.push(a(r.alpha,0,1)),e):[]}},{clamp:86,\"color-parse\":90,\"color-space/hsl\":92}],92:[function(t,e,r){\"use strict\";var n=t(\"./rgb\");e.exports={name:\"hsl\",min:[0,0,0],max:[360,100,100],channel:[\"hue\",\"saturation\",\"lightness\"],alias:[\"HSL\"],rgb:function(t){var e,r,n,i,a,o=t[0]/360,s=t[1]/100,l=t[2]/100;if(0===s)return[a=255*l,a,a];e=2*l-(r=l<.5?l*(1+s):l+s-l*s),i=[0,0,0];for(var c=0;c<3;c++)(n=o+1/3*-(c-1))<0?n++:n>1&&n--,a=6*n<1?e+6*(r-e)*n:2*n<1?r:3*n<2?e+(r-e)*(2/3-n)*6:e,i[c]=255*a;return i}},n.hsl=function(t){var e,r,n=t[0]/255,i=t[1]/255,a=t[2]/255,o=Math.min(n,i,a),s=Math.max(n,i,a),l=s-o;return s===o?e=0:n===s?e=(i-a)/l:i===s?e=2+(a-n)/l:a===s&&(e=4+(n-i)/l),(e=Math.min(60*e,360))<0&&(e+=360),r=(o+s)/2,[e,100*(s===o?0:r<=.5?l/(s+o):l/(2-s-o)),100*r]}},{\"./rgb\":93}],93:[function(t,e,r){\"use strict\";e.exports={name:\"rgb\",min:[0,0,0],max:[255,255,255],channel:[\"red\",\"green\",\"blue\"],alias:[\"RGB\"]}},{}],94:[function(t,e,r){e.exports={AFG:\"afghan\",ALA:\"\\\\b\\\\wland\",ALB:\"albania\",DZA:\"algeria\",ASM:\"^(?=.*americ).*samoa\",AND:\"andorra\",AGO:\"angola\",AIA:\"anguill?a\",ATA:\"antarctica\",ATG:\"antigua\",ARG:\"argentin\",ARM:\"armenia\",ABW:\"^(?!.*bonaire).*\\\\baruba\",AUS:\"australia\",AUT:\"^(?!.*hungary).*austria|\\\\baustri.*\\\\bemp\",AZE:\"azerbaijan\",BHS:\"bahamas\",BHR:\"bahrain\",BGD:\"bangladesh|^(?=.*east).*paki?stan\",BRB:\"barbados\",BLR:\"belarus|byelo\",BEL:\"^(?!.*luxem).*belgium\",BLZ:\"belize|^(?=.*british).*honduras\",BEN:\"benin|dahome\",BMU:\"bermuda\",BTN:\"bhutan\",BOL:\"bolivia\",BES:\"^(?=.*bonaire).*eustatius|^(?=.*carib).*netherlands|\\\\bbes.?islands\",BIH:\"herzegovina|bosnia\",BWA:\"botswana|bechuana\",BVT:\"bouvet\",BRA:\"brazil\",IOT:\"british.?indian.?ocean\",BRN:\"brunei\",BGR:\"bulgaria\",BFA:\"burkina|\\\\bfaso|upper.?volta\",BDI:\"burundi\",CPV:\"verde\",KHM:\"cambodia|kampuchea|khmer\",CMR:\"cameroon\",CAN:\"canada\",CYM:\"cayman\",CAF:\"\\\\bcentral.african.republic\",TCD:\"\\\\bchad\",CHL:\"\\\\bchile\",CHN:\"^(?!.*\\\\bmac)(?!.*\\\\bhong)(?!.*\\\\btai)(?!.*\\\\brep).*china|^(?=.*peo)(?=.*rep).*china\",CXR:\"christmas\",CCK:\"\\\\bcocos|keeling\",COL:\"colombia\",COM:\"comoro\",COG:\"^(?!.*\\\\bdem)(?!.*\\\\bd[\\\\.]?r)(?!.*kinshasa)(?!.*zaire)(?!.*belg)(?!.*l.opoldville)(?!.*free).*\\\\bcongo\",COK:\"\\\\bcook\",CRI:\"costa.?rica\",CIV:\"ivoire|ivory\",HRV:\"croatia\",CUB:\"\\\\bcuba\",CUW:\"^(?!.*bonaire).*\\\\bcura(c|\\xe7)ao\",CYP:\"cyprus\",CSK:\"czechoslovakia\",CZE:\"^(?=.*rep).*czech|czechia|bohemia\",COD:\"\\\\bdem.*congo|congo.*\\\\bdem|congo.*\\\\bd[\\\\.]?r|\\\\bd[\\\\.]?r.*congo|belgian.?congo|congo.?free.?state|kinshasa|zaire|l.opoldville|drc|droc|rdc\",DNK:\"denmark\",DJI:\"djibouti\",DMA:\"dominica(?!n)\",DOM:\"dominican.rep\",ECU:\"ecuador\",EGY:\"egypt\",SLV:\"el.?salvador\",GNQ:\"guine.*eq|eq.*guine|^(?=.*span).*guinea\",ERI:\"eritrea\",EST:\"estonia\",ETH:\"ethiopia|abyssinia\",FLK:\"falkland|malvinas\",FRO:\"faroe|faeroe\",FJI:\"fiji\",FIN:\"finland\",FRA:\"^(?!.*\\\\bdep)(?!.*martinique).*france|french.?republic|\\\\bgaul\",GUF:\"^(?=.*french).*guiana\",PYF:\"french.?polynesia|tahiti\",ATF:\"french.?southern\",GAB:\"gabon\",GMB:\"gambia\",GEO:\"^(?!.*south).*georgia\",DDR:\"german.?democratic.?republic|democratic.?republic.*germany|east.germany\",DEU:\"^(?!.*east).*germany|^(?=.*\\\\bfed.*\\\\brep).*german\",GHA:\"ghana|gold.?coast\",GIB:\"gibraltar\",GRC:\"greece|hellenic|hellas\",GRL:\"greenland\",GRD:\"grenada\",GLP:\"guadeloupe\",GUM:\"\\\\bguam\",GTM:\"guatemala\",GGY:\"guernsey\",GIN:\"^(?!.*eq)(?!.*span)(?!.*bissau)(?!.*portu)(?!.*new).*guinea\",GNB:\"bissau|^(?=.*portu).*guinea\",GUY:\"guyana|british.?guiana\",HTI:\"haiti\",HMD:\"heard.*mcdonald\",VAT:\"holy.?see|vatican|papal.?st\",HND:\"^(?!.*brit).*honduras\",HKG:\"hong.?kong\",HUN:\"^(?!.*austr).*hungary\",ISL:\"iceland\",IND:\"india(?!.*ocea)\",IDN:\"indonesia\",IRN:\"\\\\biran|persia\",IRQ:\"\\\\biraq|mesopotamia\",IRL:\"(^ireland)|(^republic.*ireland)\",IMN:\"^(?=.*isle).*\\\\bman\",ISR:\"israel\",ITA:\"italy\",JAM:\"jamaica\",JPN:\"japan\",JEY:\"jersey\",JOR:\"jordan\",KAZ:\"kazak\",KEN:\"kenya|british.?east.?africa|east.?africa.?prot\",KIR:\"kiribati\",PRK:\"^(?=.*democrat|people|north|d.*p.*.r).*\\\\bkorea|dprk|korea.*(d.*p.*r)\",KWT:\"kuwait\",KGZ:\"kyrgyz|kirghiz\",LAO:\"\\\\blaos?\\\\b\",LVA:\"latvia\",LBN:\"lebanon\",LSO:\"lesotho|basuto\",LBR:\"liberia\",LBY:\"libya\",LIE:\"liechtenstein\",LTU:\"lithuania\",LUX:\"^(?!.*belg).*luxem\",MAC:\"maca(o|u)\",MDG:\"madagascar|malagasy\",MWI:\"malawi|nyasa\",MYS:\"malaysia\",MDV:\"maldive\",MLI:\"\\\\bmali\\\\b\",MLT:\"\\\\bmalta\",MHL:\"marshall\",MTQ:\"martinique\",MRT:\"mauritania\",MUS:\"mauritius\",MYT:\"\\\\bmayotte\",MEX:\"\\\\bmexic\",FSM:\"fed.*micronesia|micronesia.*fed\",MCO:\"monaco\",MNG:\"mongolia\",MNE:\"^(?!.*serbia).*montenegro\",MSR:\"montserrat\",MAR:\"morocco|\\\\bmaroc\",MOZ:\"mozambique\",MMR:\"myanmar|burma\",NAM:\"namibia\",NRU:\"nauru\",NPL:\"nepal\",NLD:\"^(?!.*\\\\bant)(?!.*\\\\bcarib).*netherlands\",ANT:\"^(?=.*\\\\bant).*(nether|dutch)\",NCL:\"new.?caledonia\",NZL:\"new.?zealand\",NIC:\"nicaragua\",NER:\"\\\\bniger(?!ia)\",NGA:\"nigeria\",NIU:\"niue\",NFK:\"norfolk\",MNP:\"mariana\",NOR:\"norway\",OMN:\"\\\\boman|trucial\",PAK:\"^(?!.*east).*paki?stan\",PLW:\"palau\",PSE:\"palestin|\\\\bgaza|west.?bank\",PAN:\"panama\",PNG:\"papua|new.?guinea\",PRY:\"paraguay\",PER:\"peru\",PHL:\"philippines\",PCN:\"pitcairn\",POL:\"poland\",PRT:\"portugal\",PRI:\"puerto.?rico\",QAT:\"qatar\",KOR:\"^(?!.*d.*p.*r)(?!.*democrat)(?!.*people)(?!.*north).*\\\\bkorea(?!.*d.*p.*r)\",MDA:\"moldov|b(a|e)ssarabia\",REU:\"r(e|\\xe9)union\",ROU:\"r(o|u|ou)mania\",RUS:\"\\\\brussia|soviet.?union|u\\\\.?s\\\\.?s\\\\.?r|socialist.?republics\",RWA:\"rwanda\",BLM:\"barth(e|\\xe9)lemy\",SHN:\"helena\",KNA:\"kitts|\\\\bnevis\",LCA:\"\\\\blucia\",MAF:\"^(?=.*collectivity).*martin|^(?=.*france).*martin(?!ique)|^(?=.*french).*martin(?!ique)\",SPM:\"miquelon\",VCT:\"vincent\",WSM:\"^(?!.*amer).*samoa\",SMR:\"san.?marino\",STP:\"\\\\bs(a|\\xe3)o.?tom(e|\\xe9)\",SAU:\"\\\\bsa\\\\w*.?arabia\",SEN:\"senegal\",SRB:\"^(?!.*monte).*serbia\",SYC:\"seychell\",SLE:\"sierra\",SGP:\"singapore\",SXM:\"^(?!.*martin)(?!.*saba).*maarten\",SVK:\"^(?!.*cze).*slovak\",SVN:\"slovenia\",SLB:\"solomon\",SOM:\"somali\",ZAF:\"south.africa|s\\\\\\\\..?africa\",SGS:\"south.?georgia|sandwich\",SSD:\"\\\\bs\\\\w*.?sudan\",ESP:\"spain\",LKA:\"sri.?lanka|ceylon\",SDN:\"^(?!.*\\\\bs(?!u)).*sudan\",SUR:\"surinam|dutch.?guiana\",SJM:\"svalbard\",SWZ:\"swaziland\",SWE:\"sweden\",CHE:\"switz|swiss\",SYR:\"syria\",TWN:\"taiwan|taipei|formosa|^(?!.*peo)(?=.*rep).*china\",TJK:\"tajik\",THA:\"thailand|\\\\bsiam\",MKD:\"macedonia|fyrom\",TLS:\"^(?=.*leste).*timor|^(?=.*east).*timor\",TGO:\"togo\",TKL:\"tokelau\",TON:\"tonga\",TTO:\"trinidad|tobago\",TUN:\"tunisia\",TUR:\"turkey\",TKM:\"turkmen\",TCA:\"turks\",TUV:\"tuvalu\",UGA:\"uganda\",UKR:\"ukrain\",ARE:\"emirates|^u\\\\.?a\\\\.?e\\\\.?$|united.?arab.?em\",GBR:\"united.?kingdom|britain|^u\\\\.?k\\\\.?$\",TZA:\"tanzania\",USA:\"united.?states\\\\b(?!.*islands)|\\\\bu\\\\.?s\\\\.?a\\\\.?\\\\b|^\\\\s*u\\\\.?s\\\\.?\\\\b(?!.*islands)\",UMI:\"minor.?outlying.?is\",URY:\"uruguay\",UZB:\"uzbek\",VUT:\"vanuatu|new.?hebrides\",VEN:\"venezuela\",VNM:\"^(?!.*republic).*viet.?nam|^(?=.*socialist).*viet.?nam\",VGB:\"^(?=.*\\\\bu\\\\.?\\\\s?k).*virgin|^(?=.*brit).*virgin|^(?=.*kingdom).*virgin\",VIR:\"^(?=.*\\\\bu\\\\.?\\\\s?s).*virgin|^(?=.*states).*virgin\",WLF:\"futuna|wallis\",ESH:\"western.sahara\",YEM:\"^(?!.*arab)(?!.*north)(?!.*sana)(?!.*peo)(?!.*dem)(?!.*south)(?!.*aden)(?!.*\\\\bp\\\\.?d\\\\.?r).*yemen\",YMD:\"^(?=.*peo).*yemen|^(?!.*rep)(?=.*dem).*yemen|^(?=.*south).*yemen|^(?=.*aden).*yemen|^(?=.*\\\\bp\\\\.?d\\\\.?r).*yemen\",YUG:\"yugoslavia\",ZMB:\"zambia|northern.?rhodesia\",EAZ:\"zanzibar\",ZWE:\"zimbabwe|^(?!.*northern).*rhodesia\"}},{}],95:[function(t,e,r){e.exports=[\"xx-small\",\"x-small\",\"small\",\"medium\",\"large\",\"x-large\",\"xx-large\",\"larger\",\"smaller\"]},{}],96:[function(t,e,r){e.exports=[\"normal\",\"condensed\",\"semi-condensed\",\"extra-condensed\",\"ultra-condensed\",\"expanded\",\"semi-expanded\",\"extra-expanded\",\"ultra-expanded\"]},{}],97:[function(t,e,r){e.exports=[\"normal\",\"italic\",\"oblique\"]},{}],98:[function(t,e,r){e.exports=[\"normal\",\"bold\",\"bolder\",\"lighter\",\"100\",\"200\",\"300\",\"400\",\"500\",\"600\",\"700\",\"800\",\"900\"]},{}],99:[function(t,e,r){\"use strict\";e.exports={parse:t(\"./parse\"),stringify:t(\"./stringify\")}},{\"./parse\":101,\"./stringify\":102}],100:[function(t,e,r){\"use strict\";var n=t(\"css-font-size-keywords\");e.exports={isSize:function(t){return/^[\\d\\.]/.test(t)||-1!==t.indexOf(\"/\")||-1!==n.indexOf(t)}}},{\"css-font-size-keywords\":95}],101:[function(t,e,r){\"use strict\";var n=t(\"unquote\"),i=t(\"css-global-keywords\"),a=t(\"css-system-font-keywords\"),o=t(\"css-font-weight-keywords\"),s=t(\"css-font-style-keywords\"),l=t(\"css-font-stretch-keywords\"),c=t(\"string-split-by\"),u=t(\"./lib/util\").isSize;e.exports=h;var f=h.cache={};function h(t){if(\"string\"!=typeof t)throw new Error(\"Font argument must be a string.\");if(f[t])return f[t];if(\"\"===t)throw new Error(\"Cannot parse an empty string.\");if(-1!==a.indexOf(t))return f[t]={system:t};for(var e,r={style:\"normal\",variant:\"normal\",weight:\"normal\",stretch:\"normal\",lineHeight:\"normal\",size:\"1rem\",family:[\"serif\"]},h=c(t,/\\s+/);e=h.shift();){if(-1!==i.indexOf(e))return[\"style\",\"variant\",\"weight\",\"stretch\"].forEach((function(t){r[t]=e})),f[t]=r;if(-1===s.indexOf(e))if(\"normal\"!==e&&\"small-caps\"!==e)if(-1===l.indexOf(e)){if(-1===o.indexOf(e)){if(u(e)){var d=c(e,\"/\");if(r.size=d[0],null!=d[1]?r.lineHeight=p(d[1]):\"/\"===h[0]&&(h.shift(),r.lineHeight=p(h.shift())),!h.length)throw new Error(\"Missing required font-family.\");return r.family=c(h.join(\" \"),/\\s*,\\s*/).map(n),f[t]=r}throw new Error(\"Unknown or unsupported font token: \"+e)}r.weight=e}else r.stretch=e;else r.variant=e;else r.style=e}throw new Error(\"Missing required font-size.\")}function p(t){var e=parseFloat(t);return e.toString()===t?e:t}},{\"./lib/util\":100,\"css-font-stretch-keywords\":96,\"css-font-style-keywords\":97,\"css-font-weight-keywords\":98,\"css-global-keywords\":103,\"css-system-font-keywords\":104,\"string-split-by\":305,unquote:328}],102:[function(t,e,r){\"use strict\";var n=t(\"pick-by-alias\"),i=t(\"./lib/util\").isSize,a=g(t(\"css-global-keywords\")),o=g(t(\"css-system-font-keywords\")),s=g(t(\"css-font-weight-keywords\")),l=g(t(\"css-font-style-keywords\")),c=g(t(\"css-font-stretch-keywords\")),u={normal:1,\"small-caps\":1},f={serif:1,\"sans-serif\":1,monospace:1,cursive:1,fantasy:1,\"system-ui\":1},h=\"1rem\",p=\"serif\";function d(t,e){if(t&&!e[t]&&!a[t])throw Error(\"Unknown keyword `\"+t+\"`\");return t}function g(t){for(var e={},r=0;re?1:t>=e?0:NaN}function r(t){var r;return 1===t.length&&(r=t,t=function(t,n){return e(r(t),n)}),{left:function(e,r,n,i){for(null==n&&(n=0),null==i&&(i=e.length);n>>1;t(e[a],r)<0?n=a+1:i=a}return n},right:function(e,r,n,i){for(null==n&&(n=0),null==i&&(i=e.length);n>>1;t(e[a],r)>0?i=a:n=a+1}return n}}}var n=r(e),i=n.right,a=n.left;function o(t,e){return[t,e]}function s(t){return null===t?NaN:+t}function l(t,e){var r,n,i=t.length,a=0,o=-1,l=0,c=0;if(null==e)for(;++o1)return c/(a-1)}function c(t,e){var r=l(t,e);return r?Math.sqrt(r):r}function u(t,e){var r,n,i,a=t.length,o=-1;if(null==e){for(;++o=r)for(n=i=r;++or&&(n=r),i=r)for(n=i=r;++or&&(n=r),i=0?(a>=v?10:a>=y?5:a>=x?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(a>=v?10:a>=y?5:a>=x?2:1)}function _(t,e,r){var n=Math.abs(e-t)/Math.max(0,r),i=Math.pow(10,Math.floor(Math.log(n)/Math.LN10)),a=n/i;return a>=v?i*=10:a>=y?i*=5:a>=x&&(i*=2),e=1)return+r(t[n-1],n-1,t);var n,i=(n-1)*e,a=Math.floor(i),o=+r(t[a],a,t);return o+(+r(t[a+1],a+1,t)-o)*(i-a)}}function k(t,e){var r,n,i=t.length,a=-1;if(null==e){for(;++a=r)for(n=r;++ar&&(n=r)}else for(;++a=r)for(n=r;++ar&&(n=r);return n}function A(t){if(!(i=t.length))return[];for(var e=-1,r=k(t,M),n=new Array(r);++et?1:e>=t?0:NaN},t.deviation=c,t.extent=u,t.histogram=function(){var t=g,e=u,r=w;function n(n){var a,o,s=n.length,l=new Array(s);for(a=0;af;)h.pop(),--p;var d,g=new Array(p+1);for(a=0;a<=p;++a)(d=g[a]=[]).x0=a>0?h[a-1]:u,d.x1=a=r)for(n=r;++an&&(n=r)}else for(;++a=r)for(n=r;++an&&(n=r);return n},t.mean=function(t,e){var r,n=t.length,i=n,a=-1,o=0;if(null==e)for(;++a=0;)for(e=(n=t[i]).length;--e>=0;)r[--o]=n[e];return r},t.min=k,t.pairs=function(t,e){null==e&&(e=o);for(var r=0,n=t.length-1,i=t[0],a=new Array(n<0?0:n);r0)return[t];if((n=e0)for(t=Math.ceil(t/o),e=Math.floor(e/o),a=new Array(i=Math.ceil(e-t+1));++s=l.length)return null!=t&&n.sort(t),null!=e?e(n):n;for(var s,c,f,h=-1,p=n.length,d=l[i++],g=r(),m=a();++hl.length)return r;var i,a=c[n-1];return null!=e&&n>=l.length?i=r.entries():(i=[],r.each((function(e,r){i.push({key:r,values:t(e,n)})}))),null!=a?i.sort((function(t,e){return a(t.key,e.key)})):i}(u(t,0,a,o),0)},key:function(t){return l.push(t),s},sortKeys:function(t){return c[l.length-1]=t,s},sortValues:function(e){return t=e,s},rollup:function(t){return e=t,s}}},t.set=c,t.map=r,t.keys=function(t){var e=[];for(var r in t)e.push(r);return e},t.values=function(t){var e=[];for(var r in t)e.push(t[r]);return e},t.entries=function(t){var e=[];for(var r in t)e.push({key:r,value:t[r]});return e},Object.defineProperty(t,\"__esModule\",{value:!0})}))},{}],109:[function(t,e,r){!function(t,n){\"object\"==typeof r&&void 0!==e?n(r):n((t=t||self).d3=t.d3||{})}(this,(function(t){\"use strict\";function e(t,e,r){t.prototype=e.prototype=r,r.constructor=t}function r(t,e){var r=Object.create(t.prototype);for(var n in e)r[n]=e[n];return r}function n(){}var i=\"\\\\s*([+-]?\\\\d+)\\\\s*\",a=\"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",o=\"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",s=/^#([0-9a-f]{3,8})$/,l=new RegExp(\"^rgb\\\\(\"+[i,i,i]+\"\\\\)$\"),c=new RegExp(\"^rgb\\\\(\"+[o,o,o]+\"\\\\)$\"),u=new RegExp(\"^rgba\\\\(\"+[i,i,i,a]+\"\\\\)$\"),f=new RegExp(\"^rgba\\\\(\"+[o,o,o,a]+\"\\\\)$\"),h=new RegExp(\"^hsl\\\\(\"+[a,o,o]+\"\\\\)$\"),p=new RegExp(\"^hsla\\\\(\"+[a,o,o,a]+\"\\\\)$\"),d={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function g(){return this.rgb().formatHex()}function m(){return this.rgb().formatRgb()}function v(t){var e,r;return t=(t+\"\").trim().toLowerCase(),(e=s.exec(t))?(r=e[1].length,e=parseInt(e[1],16),6===r?y(e):3===r?new w(e>>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===r?x(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===r?x(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=l.exec(t))?new w(e[1],e[2],e[3],1):(e=c.exec(t))?new w(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=u.exec(t))?x(e[1],e[2],e[3],e[4]):(e=f.exec(t))?x(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=h.exec(t))?M(e[1],e[2]/100,e[3]/100,1):(e=p.exec(t))?M(e[1],e[2]/100,e[3]/100,e[4]):d.hasOwnProperty(t)?y(d[t]):\"transparent\"===t?new w(NaN,NaN,NaN,0):null}function y(t){return new w(t>>16&255,t>>8&255,255&t,1)}function x(t,e,r,n){return n<=0&&(t=e=r=NaN),new w(t,e,r,n)}function b(t){return t instanceof n||(t=v(t)),t?new w((t=t.rgb()).r,t.g,t.b,t.opacity):new w}function _(t,e,r,n){return 1===arguments.length?b(t):new w(t,e,r,null==n?1:n)}function w(t,e,r,n){this.r=+t,this.g=+e,this.b=+r,this.opacity=+n}function T(){return\"#\"+A(this.r)+A(this.g)+A(this.b)}function k(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?\"rgb(\":\"rgba(\")+Math.max(0,Math.min(255,Math.round(this.r)||0))+\", \"+Math.max(0,Math.min(255,Math.round(this.g)||0))+\", \"+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?\")\":\", \"+t+\")\")}function A(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?\"0\":\"\")+t.toString(16)}function M(t,e,r,n){return n<=0?t=e=r=NaN:r<=0||r>=1?t=e=NaN:e<=0&&(t=NaN),new L(t,e,r,n)}function S(t){if(t instanceof L)return new L(t.h,t.s,t.l,t.opacity);if(t instanceof n||(t=v(t)),!t)return new L;if(t instanceof L)return t;var e=(t=t.rgb()).r/255,r=t.g/255,i=t.b/255,a=Math.min(e,r,i),o=Math.max(e,r,i),s=NaN,l=o-a,c=(o+a)/2;return l?(s=e===o?(r-i)/l+6*(r0&&c<1?0:s,new L(s,l,c,t.opacity)}function E(t,e,r,n){return 1===arguments.length?S(t):new L(t,e,r,null==n?1:n)}function L(t,e,r,n){this.h=+t,this.s=+e,this.l=+r,this.opacity=+n}function C(t,e,r){return 255*(t<60?e+(r-e)*t/60:t<180?r:t<240?e+(r-e)*(240-t)/60:e)}e(n,v,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:g,formatHex:g,formatHsl:function(){return S(this).formatHsl()},formatRgb:m,toString:m}),e(w,_,r(n,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new w(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new w(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:T,formatHex:T,formatRgb:k,toString:k})),e(L,E,r(n,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new L(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new L(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*e,i=2*r-n;return new w(C(t>=240?t-240:t+120,i,n),C(t,i,n),C(t<120?t+240:t-120,i,n),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?\"hsl(\":\"hsla(\")+(this.h||0)+\", \"+100*(this.s||0)+\"%, \"+100*(this.l||0)+\"%\"+(1===t?\")\":\", \"+t+\")\")}}));var P=Math.PI/180,I=180/Math.PI,O=6/29,z=3*O*O;function D(t){if(t instanceof F)return new F(t.l,t.a,t.b,t.opacity);if(t instanceof q)return G(t);t instanceof w||(t=b(t));var e,r,n=U(t.r),i=U(t.g),a=U(t.b),o=B((.2225045*n+.7168786*i+.0606169*a)/1);return n===i&&i===a?e=r=o:(e=B((.4360747*n+.3850649*i+.1430804*a)/.96422),r=B((.0139322*n+.0971045*i+.7141733*a)/.82521)),new F(116*o-16,500*(e-o),200*(o-r),t.opacity)}function R(t,e,r,n){return 1===arguments.length?D(t):new F(t,e,r,null==n?1:n)}function F(t,e,r,n){this.l=+t,this.a=+e,this.b=+r,this.opacity=+n}function B(t){return t>.008856451679035631?Math.pow(t,1/3):t/z+4/29}function N(t){return t>O?t*t*t:z*(t-4/29)}function j(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function U(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function V(t){if(t instanceof q)return new q(t.h,t.c,t.l,t.opacity);if(t instanceof F||(t=D(t)),0===t.a&&0===t.b)return new q(NaN,0=0&&(r=t.slice(n+1),t=t.slice(0,n)),t&&!e.hasOwnProperty(t))throw new Error(\"unknown type: \"+t);return{type:t,name:r}}))}function a(t,e){for(var r,n=0,i=t.length;n0)for(var r,n,i=new Array(r),a=0;ah+c||np+c||au.index){var f=h-s.x-s.vx,m=p-s.y-s.vy,v=f*f+m*m;vt.r&&(t.r=t[e].r)}function h(){if(r){var e,i,a=r.length;for(n=new Array(a),e=0;e=c)){(t.data!==r||t.next)&&(0===f&&(d+=(f=o())*f),0===h&&(d+=(h=o())*h),d1?(null==r?u.remove(t):u.set(t,v(r)),e):u.get(t)},find:function(e,r,n){var i,a,o,s,l,c=0,u=t.length;for(null==n?n=1/0:n*=n,c=0;c1?(h.on(t,r),e):h.on(t)}}},t.forceX=function(t){var e,r,n,i=a(.1);function o(t){for(var i,a=0,o=e.length;a1?n[0]+n.slice(2):n,+t.slice(r+1)]}function r(t){return(t=e(Math.abs(t)))?t[1]:NaN}var n,i=/^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;function a(t){if(!(e=i.exec(t)))throw new Error(\"invalid format: \"+t);var e;return new o({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function o(t){this.fill=void 0===t.fill?\" \":t.fill+\"\",this.align=void 0===t.align?\">\":t.align+\"\",this.sign=void 0===t.sign?\"-\":t.sign+\"\",this.symbol=void 0===t.symbol?\"\":t.symbol+\"\",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?\"\":t.type+\"\"}function s(t,r){var n=e(t,r);if(!n)return t+\"\";var i=n[0],a=n[1];return a<0?\"0.\"+new Array(-a).join(\"0\")+i:i.length>a+1?i.slice(0,a+1)+\".\"+i.slice(a+1):i+new Array(a-i.length+2).join(\"0\")}a.prototype=o.prototype,o.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?\"0\":\"\")+(void 0===this.width?\"\":Math.max(1,0|this.width))+(this.comma?\",\":\"\")+(void 0===this.precision?\"\":\".\"+Math.max(0,0|this.precision))+(this.trim?\"~\":\"\")+this.type};var l={\"%\":function(t,e){return(100*t).toFixed(e)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+\"\"},d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString(\"en\").replace(/,/g,\"\"):t.toString(10)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},g:function(t,e){return t.toPrecision(e)},o:function(t){return Math.round(t).toString(8)},p:function(t,e){return s(100*t,e)},r:s,s:function(t,r){var i=e(t,r);if(!i)return t+\"\";var a=i[0],o=i[1],s=o-(n=3*Math.max(-8,Math.min(8,Math.floor(o/3))))+1,l=a.length;return s===l?a:s>l?a+new Array(s-l+1).join(\"0\"):s>0?a.slice(0,s)+\".\"+a.slice(s):\"0.\"+new Array(1-s).join(\"0\")+e(t,Math.max(0,r+s-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}};function c(t){return t}var u,f=Array.prototype.map,h=[\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"\\xb5\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];function p(t){var e,i,o=void 0===t.grouping||void 0===t.thousands?c:(e=f.call(t.grouping,Number),i=t.thousands+\"\",function(t,r){for(var n=t.length,a=[],o=0,s=e[0],l=0;n>0&&s>0&&(l+s+1>r&&(s=Math.max(1,r-l)),a.push(t.substring(n-=s,n+s)),!((l+=s+1)>r));)s=e[o=(o+1)%e.length];return a.reverse().join(i)}),s=void 0===t.currency?\"\":t.currency[0]+\"\",u=void 0===t.currency?\"\":t.currency[1]+\"\",p=void 0===t.decimal?\".\":t.decimal+\"\",d=void 0===t.numerals?c:function(t){return function(e){return e.replace(/[0-9]/g,(function(e){return t[+e]}))}}(f.call(t.numerals,String)),g=void 0===t.percent?\"%\":t.percent+\"\",m=void 0===t.minus?\"-\":t.minus+\"\",v=void 0===t.nan?\"NaN\":t.nan+\"\";function y(t){var e=(t=a(t)).fill,r=t.align,i=t.sign,c=t.symbol,f=t.zero,y=t.width,x=t.comma,b=t.precision,_=t.trim,w=t.type;\"n\"===w?(x=!0,w=\"g\"):l[w]||(void 0===b&&(b=12),_=!0,w=\"g\"),(f||\"0\"===e&&\"=\"===r)&&(f=!0,e=\"0\",r=\"=\");var T=\"$\"===c?s:\"#\"===c&&/[boxX]/.test(w)?\"0\"+w.toLowerCase():\"\",k=\"$\"===c?u:/[%p]/.test(w)?g:\"\",A=l[w],M=/[defgprs%]/.test(w);function S(t){var a,s,l,c=T,u=k;if(\"c\"===w)u=A(t)+u,t=\"\";else{var g=(t=+t)<0||1/t<0;if(t=isNaN(t)?v:A(Math.abs(t),b),_&&(t=function(t){t:for(var e,r=t.length,n=1,i=-1;n0&&(i=0)}return i>0?t.slice(0,i)+t.slice(e+1):t}(t)),g&&0==+t&&\"+\"!==i&&(g=!1),c=(g?\"(\"===i?i:m:\"-\"===i||\"(\"===i?\"\":i)+c,u=(\"s\"===w?h[8+n/3]:\"\")+u+(g&&\"(\"===i?\")\":\"\"),M)for(a=-1,s=t.length;++a(l=t.charCodeAt(a))||l>57){u=(46===l?p+t.slice(a+1):t.slice(a))+u,t=t.slice(0,a);break}}x&&!f&&(t=o(t,1/0));var S=c.length+t.length+u.length,E=S>1)+c+t+u+E.slice(S);break;default:t=E+c+t+u}return d(t)}return b=void 0===b?6:/[gprs]/.test(w)?Math.max(1,Math.min(21,b)):Math.max(0,Math.min(20,b)),S.toString=function(){return t+\"\"},S}return{format:y,formatPrefix:function(t,e){var n=y(((t=a(t)).type=\"f\",t)),i=3*Math.max(-8,Math.min(8,Math.floor(r(e)/3))),o=Math.pow(10,-i),s=h[8+i/3];return function(t){return n(o*t)+s}}}}function d(e){return u=p(e),t.format=u.format,t.formatPrefix=u.formatPrefix,u}d({decimal:\".\",thousands:\",\",grouping:[3],currency:[\"$\",\"\"],minus:\"-\"}),t.FormatSpecifier=o,t.formatDefaultLocale=d,t.formatLocale=p,t.formatSpecifier=a,t.precisionFixed=function(t){return Math.max(0,-r(Math.abs(t)))},t.precisionPrefix=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(r(e)/3)))-r(Math.abs(t)))},t.precisionRound=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,r(e)-r(t))+1},Object.defineProperty(t,\"__esModule\",{value:!0})}))},{}],113:[function(t,e,r){!function(n,i){\"object\"==typeof r&&void 0!==e?i(r,t(\"d3-geo\"),t(\"d3-array\")):i(n.d3=n.d3||{},n.d3,n.d3)}(this,(function(t,e,r){\"use strict\";var n=Math.abs,i=Math.atan,a=Math.atan2,o=Math.cos,s=Math.exp,l=Math.floor,c=Math.log,u=Math.max,f=Math.min,h=Math.pow,p=Math.round,d=Math.sign||function(t){return t>0?1:t<0?-1:0},g=Math.sin,m=Math.tan,v=1e-6,y=Math.PI,x=y/2,b=y/4,_=Math.SQRT1_2,w=L(2),T=L(y),k=2*y,A=180/y,M=y/180;function S(t){return t>1?x:t<-1?-x:Math.asin(t)}function E(t){return t>1?0:t<-1?y:Math.acos(t)}function L(t){return t>0?Math.sqrt(t):0}function C(t){return(s(t)-s(-t))/2}function P(t){return(s(t)+s(-t))/2}function I(t){var e=m(t/2),r=2*c(o(t/2))/(e*e);function i(t,e){var n=o(t),i=o(e),a=g(e),s=i*n,l=-((1-s?c((1+s)/2)/(1-s):-.5)+r/(1+s));return[l*i*g(t),l*a]}return i.invert=function(e,i){var s,l=L(e*e+i*i),u=-t/2,f=50;if(!l)return[0,0];do{var h=u/2,p=o(h),d=g(h),m=d/p,y=-c(n(p));u-=s=(2/m*y-r*m-l)/(-y/(d*d)+1-r/(2*p*p))*(p<0?.7:1)}while(n(s)>v&&--f>0);var x=g(u);return[a(e*x,l*o(u)),S(i*x/l)]},i}function O(t,e){var r=o(e),n=function(t){return t?t/Math.sin(t):1}(E(r*o(t/=2)));return[2*r*g(t)*n,g(e)*n]}function z(t){var e=g(t),r=o(t),i=t>=0?1:-1,s=m(i*t),l=(1+e-r)/2;function c(t,n){var c=o(n),u=o(t/=2);return[(1+c)*g(t),(i*n>-a(u,s)-.001?0:10*-i)+l+g(n)*r-(1+c)*e*u]}return c.invert=function(t,c){var u=0,f=0,h=50;do{var p=o(u),d=g(u),m=o(f),y=g(f),x=1+m,b=x*d-t,_=l+y*r-x*e*p-c,w=x*p/2,T=-d*y,k=e*x*d/2,A=r*m+e*p*y,M=T*k-A*w,S=(_*T-b*A)/M/2,E=(b*k-_*w)/M;n(E)>2&&(E/=2),u-=S,f-=E}while((n(S)>v||n(E)>v)&&--h>0);return i*f>-a(o(u),s)-.001?[2*u,f]:null},c}function D(t,e){var r=m(e/2),n=L(1-r*r),i=1+n*o(t/=2),a=g(t)*n/i,s=r/i,l=a*a,c=s*s;return[4/3*a*(3+l-3*c),4/3*s*(3+3*l-c)]}O.invert=function(t,e){if(!(t*t+4*e*e>y*y+v)){var r=t,i=e,a=25;do{var s,l=g(r),c=g(r/2),u=o(r/2),f=g(i),h=o(i),p=g(2*i),d=f*f,m=h*h,x=c*c,b=1-m*u*u,_=b?E(h*u)*L(s=1/b):s=0,w=2*_*h*c-t,T=_*f-e,k=s*(m*x+_*h*u*d),A=s*(.5*l*p-2*_*f*c),M=.25*s*(p*c-_*f*m*l),S=s*(d*u+_*x*h),C=A*M-S*k;if(!C)break;var P=(T*A-w*S)/C,I=(w*M-T*k)/C;r-=P,i-=I}while((n(P)>v||n(I)>v)&&--a>0);return[r,i]}},D.invert=function(t,e){if(e*=3/8,!(t*=3/8)&&n(e)>1)return null;var r=1+t*t+e*e,i=L((r-L(r*r-4*e*e))/2),s=S(i)/3,l=i?function(t){return c(t+L(t*t-1))}(n(e/i))/3:function(t){return c(t+L(t*t+1))}(n(t))/3,u=o(s),f=P(l),h=f*f-u*u;return[2*d(t)*a(C(l)*u,.25-h),2*d(e)*a(f*g(s),.25+h)]};var R=L(8),F=c(1+w);function B(t,e){var r=n(e);return rx){var l=a(s[1],s[0]),c=L(s[0]*s[0]+s[1]*s[1]),u=r*p((l-x)/r)+x,f=a(g(l-=u),2-o(l));l=u+S(y/c*g(f))-f,s[0]=c*o(l),s[1]=c*g(l)}return s}return s.invert=function(t,n){var s=L(t*t+n*n);if(s>x){var l=a(n,t),c=r*p((l-x)/r)+x,u=l>c?-1:1,f=s*o(c-l),h=1/m(u*E((f-y)/L(y*(y-2*f)+s*s)));l=c+2*i((h+u*L(h*h-3))/3),t=s*o(l),n=s*g(l)}return e.geoAzimuthalEquidistantRaw.invert(t,n)},s}function j(t,r){if(arguments.length<2&&(r=t),1===r)return e.geoAzimuthalEqualAreaRaw;if(r===1/0)return U;function n(n,i){var a=e.geoAzimuthalEqualAreaRaw(n/r,i);return a[0]*=t,a}return n.invert=function(n,i){var a=e.geoAzimuthalEqualAreaRaw.invert(n/t,i);return a[0]*=r,a},n}function U(t,e){return[t*o(e)/o(e/=2),2*g(e)]}function V(t,e,r){var i,a,o,s=100;r=void 0===r?0:+r,e=+e;do{(a=t(r))===(o=t(r+v))&&(o=a+v),r-=i=-1*v*(a-e)/(a-o)}while(s-- >0&&n(i)>v);return s<0?NaN:r}function H(t,e,r){return void 0===e&&(e=40),void 0===r&&(r=1e-12),function(i,a,o,s){var l,c,u;o=void 0===o?0:+o,s=void 0===s?0:+s;for(var f=0;fl)o-=c/=2,s-=u/=2;else{l=g;var m=(o>0?-1:1)*r,v=(s>0?-1:1)*r,y=t(o+m,s),x=t(o,s+v),b=(y[0]-h[0])/m,_=(y[1]-h[1])/m,w=(x[0]-h[0])/v,T=(x[1]-h[1])/v,k=T*b-_*w,A=(n(k)<.5?.5:1)/k;if(o+=c=(d*w-p*T)*A,s+=u=(p*_-d*b)*A,n(c)0&&(i[1]*=1+a/1.5*i[0]*i[0]),i}return e.invert=H(e),e}function G(t,e){var r,i=t*g(e),a=30;do{e-=r=(e+g(e)-i)/(1+o(e))}while(n(r)>v&&--a>0);return e/2}function Y(t,e,r){function n(n,i){return[t*n*o(i=G(r,i)),e*g(i)]}return n.invert=function(n,i){return i=S(i/e),[n/(t*o(i)),S((2*i+g(2*i))/r)]},n}B.invert=function(t,e){if((a=n(e))1e-12&&--u>0);return[t/(o(l)*(R-1/g(l))),d(e)*l]},U.invert=function(t,e){var r=2*S(e/2);return[t*o(r/2)/o(r),r]};var W=Y(w/x,w,y);var X=2.00276,Z=1.11072;function J(t,e){var r=G(y,e);return[X*t/(1/o(e)+Z/o(r)),(e+w*g(r))/X]}function K(t){var r=0,n=e.geoProjectionMutator(t),i=n(r);return i.parallel=function(t){return arguments.length?n(r=t*M):r*A},i}function Q(t,e){return[t*o(e),e]}function $(t){if(!t)return Q;var e=1/m(t);function r(r,n){var i=e+t-n,a=i?r*o(n)/i:i;return[i*g(a),e-i*o(a)]}return r.invert=function(r,n){var i=L(r*r+(n=e-n)*n),s=e+t-i;return[i/o(s)*a(r,n),s]},r}function tt(t){function e(e,r){var n=x-r,i=n?e*t*g(n)/n:n;return[n*g(i)/t,x-n*o(i)]}return e.invert=function(e,r){var n=e*t,i=x-r,o=L(n*n+i*i),s=a(n,i);return[(o?o/g(o):1)*s/t,x-o]},e}J.invert=function(t,e){var r,i,a=X*e,s=e<0?-b:b,l=25;do{i=a-w*g(s),s-=r=(g(2*s)+2*s-y*g(i))/(2*o(2*s)+2+y*o(i)*w*o(s))}while(n(r)>v&&--l>0);return i=a-w*g(s),[t*(1/o(i)+Z/o(s))/X,i]},Q.invert=function(t,e){return[t/o(e),e]};var et=Y(1,4/y,y);function rt(t,e,r,i,s,l){var c,u=o(l);if(n(t)>1||n(l)>1)c=E(r*s+e*i*u);else{var f=g(t/2),h=g(l/2);c=2*S(L(f*f+e*i*h*h))}return n(c)>v?[c,a(i*g(l),e*s-r*i*u)]:[0,0]}function nt(t,e,r){return E((t*t+e*e-r*r)/(2*t*e))}function it(t){return t-2*y*l((t+y)/(2*y))}function at(t,e,r){for(var n,i=[[t[0],t[1],g(t[1]),o(t[1])],[e[0],e[1],g(e[1]),o(e[1])],[r[0],r[1],g(r[1]),o(r[1])]],a=i[2],s=0;s<3;++s,a=n)n=i[s],a.v=rt(n[1]-a[1],a[3],a[2],n[3],n[2],n[0]-a[0]),a.point=[0,0];var l=nt(i[0].v[0],i[2].v[0],i[1].v[0]),c=nt(i[0].v[0],i[1].v[0],i[2].v[0]),u=y-l;i[2].point[1]=0,i[0].point[0]=-(i[1].point[0]=i[0].v[0]/2);var f=[i[2].point[0]=i[0].point[0]+i[2].v[0]*o(l),2*(i[0].point[1]=i[1].point[1]=i[2].v[0]*g(l))];return function(t,e){var r,n=g(e),a=o(e),s=new Array(3);for(r=0;r<3;++r){var l=i[r];if(s[r]=rt(e-l[1],l[3],l[2],a,n,t-l[0]),!s[r][0])return l.point;s[r][1]=it(s[r][1]-l.v[1])}var h=f.slice();for(r=0;r<3;++r){var p=2==r?0:r+1,d=nt(i[r].v[0],s[r][0],s[p][0]);s[r][1]<0&&(d=-d),r?1==r?(d=c-d,h[0]-=s[r][0]*o(d),h[1]-=s[r][0]*g(d)):(d=u-d,h[0]+=s[r][0]*o(d),h[1]+=s[r][0]*g(d)):(h[0]+=s[r][0]*o(d),h[1]-=s[r][0]*g(d))}return h[0]/=3,h[1]/=3,h}}function ot(t){return t[0]*=M,t[1]*=M,t}function st(t,r,n){var i=e.geoCentroid({type:\"MultiPoint\",coordinates:[t,r,n]}),a=[-i[0],-i[1]],o=e.geoRotation(a),s=at(ot(o(t)),ot(o(r)),ot(o(n)));s.invert=H(s);var l=e.geoProjection(s).rotate(a),c=l.center;return delete l.rotate,l.center=function(t){return arguments.length?c(o(t)):o.invert(c())},l.clipAngle(90)}function lt(t,e){var r=L(1-g(e));return[2/T*t*r,T*(1-r)]}function ct(t){var e=m(t);function r(t,r){return[t,(t?t/g(t):1)*(g(r)*o(t)-e*o(r))]}return r.invert=e?function(t,r){t&&(r*=g(t)/t);var n=o(t);return[t,2*a(L(n*n+e*e-r*r)-n,e-r)]}:function(t,e){return[t,S(t?e*m(t)/t:e)]},r}lt.invert=function(t,e){var r=(r=e/T-1)*r;return[r>0?t*L(y/r)/2:0,S(1-r)]};var ut=L(3);function ft(t,e){return[ut*t*(2*o(2*e/3)-1)/T,ut*T*g(e/3)]}function ht(t){var e=o(t);function r(t,r){return[t*e,g(r)/e]}return r.invert=function(t,r){return[t/e,S(r*e)]},r}function pt(t){var e=o(t);function r(t,r){return[t*e,(1+e)*m(r/2)]}return r.invert=function(t,r){return[t/e,2*i(r/(1+e))]},r}function dt(t,e){var r=L(8/(3*y));return[r*t*(1-n(e)/y),r*e]}function gt(t,e){var r=L(4-3*g(n(e)));return[2/L(6*y)*t*r,d(e)*L(2*y/3)*(2-r)]}function mt(t,e){var r=L(y*(4+y));return[2/r*t*(1+L(1-4*e*e/(y*y))),4/r*e]}function vt(t,e){var r=(2+x)*g(e);e/=2;for(var i=0,a=1/0;i<10&&n(a)>v;i++){var s=o(e);e-=a=(e+g(e)*(s+2)-r)/(2*s*(1+s))}return[2/L(y*(4+y))*t*(1+o(e)),2*L(y/(4+y))*g(e)]}function yt(t,e){return[t*(1+o(e))/L(2+y),2*e/L(2+y)]}function xt(t,e){for(var r=(1+x)*g(e),i=0,a=1/0;i<10&&n(a)>v;i++)e-=a=(e+g(e)-r)/(1+o(e));return r=L(2+y),[t*(1+o(e))/r,2*e/r]}ft.invert=function(t,e){var r=3*S(e/(ut*T));return[T*t/(ut*(2*o(2*r/3)-1)),r]},dt.invert=function(t,e){var r=L(8/(3*y)),i=e/r;return[t/(r*(1-n(i)/y)),i]},gt.invert=function(t,e){var r=2-n(e)/L(2*y/3);return[t*L(6*y)/(2*r),d(e)*S((4-r*r)/3)]},mt.invert=function(t,e){var r=L(y*(4+y))/2;return[t*r/(1+L(1-e*e*(4+y)/(4*y))),e*r/2]},vt.invert=function(t,e){var r=e*L((4+y)/y)/2,n=S(r),i=o(n);return[t/(2/L(y*(4+y))*(1+i)),S((n+r*(i+2))/(2+x))]},yt.invert=function(t,e){var r=L(2+y),n=e*r/2;return[r*t/(1+o(n)),n]},xt.invert=function(t,e){var r=1+x,n=L(r/2);return[2*t*n/(1+o(e*=n)),S((e+g(e))/r)]};var bt=3+2*w;function _t(t,e){var r=g(t/=2),n=o(t),a=L(o(e)),s=o(e/=2),l=g(e)/(s+w*n*a),u=L(2/(1+l*l)),f=L((w*s+(n+r)*a)/(w*s+(n-r)*a));return[bt*(u*(f-1/f)-2*c(f)),bt*(u*l*(f+1/f)-2*i(l))]}_t.invert=function(t,e){if(!(r=D.invert(t/1.2,1.065*e)))return null;var r,a=r[0],s=r[1],l=20;t/=bt,e/=bt;do{var h=a/2,p=s/2,d=g(h),m=o(h),y=g(p),b=o(p),T=o(s),k=L(T),A=y/(b+w*m*k),M=A*A,S=L(2/(1+M)),E=(w*b+(m+d)*k)/(w*b+(m-d)*k),C=L(E),P=C-1/C,I=C+1/C,O=S*P-2*c(C)-t,z=S*A*I-2*i(A)-e,R=y&&_*k*d*M/y,F=(w*m*b+k)/(2*(b+w*m*k)*(b+w*m*k)*k),B=-.5*A*S*S*S,N=B*R,j=B*F,U=(U=2*b+w*k*(m-d))*U*C,V=(w*m*b*k+T)/U,H=-w*d*y/(k*U),q=P*N-2*V/C+S*(V+V/E),G=P*j-2*H/C+S*(H+H/E),Y=A*I*N-2*R/(1+M)+S*I*R+S*A*(V-V/E),W=A*I*j-2*F/(1+M)+S*I*F+S*A*(H-H/E),X=G*Y-W*q;if(!X)break;var Z=(z*G-O*W)/X,J=(O*Y-z*q)/X;a-=Z,s=u(-x,f(x,s-J))}while((n(Z)>v||n(J)>v)&&--l>0);return n(n(s)-x)s){var d=L(h),m=a(f,u),b=i*p(m/i),_=m-b,w=t*o(_),T=(t*g(_)-_*g(w))/(x-w),k=Lt(_,T),A=(y-t)/Ct(k,w,y);u=d;var M,S=50;do{u-=M=(t+Ct(k,w,u)*A-d)/(k(u)*A)}while(n(M)>v&&--S>0);f=_*g(u),us){var u=L(c),f=a(l,r),h=i*p(f/i),d=f-h;r=u*o(d),l=u*g(d);for(var m=r-x,v=g(r),b=l/v,_=rv||n(p)>v)&&--x>0);return[d,m]},u}Tt.invert=function(t,e){var r=e/(1+wt);return[t&&t/(wt*L(1-r*r)),2*i(r)]},kt.invert=function(t,e){var r=i(e/T),n=o(r),a=2*r;return[t*T/2/(o(a)*n*n),a]};var It=Pt(2.8284,-1.6988,.75432,-.18071,1.76003,-.38914,.042555);var Ot=Pt(2.583819,-.835827,.170354,-.038094,1.543313,-.411435,.082742);var zt=Pt(5/6*y,-.62636,-.0344,0,1.3493,-.05524,0,.045);function Dt(t,e){var r=t*t,n=e*e;return[t*(1-.162388*n)*(.87-952426e-9*r*r),e*(1+n/12)]}Dt.invert=function(t,e){var r,i=t,a=e,o=50;do{var s=a*a;a-=r=(a*(1+s/12)-e)/(1+s/4)}while(n(r)>v&&--o>0);o=50,t/=1-.162388*s;do{var l=(l=i*i)*l;i-=r=(i*(.87-952426e-9*l)-t)/(.87-.00476213*l)}while(n(r)>v&&--o>0);return[i,a]};var Rt=Pt(2.6516,-.76534,.19123,-.047094,1.36289,-.13965,.031762);function Ft(t){var e=t(x,0)[0]-t(-x,0)[0];function r(r,n){var i=r>0?-.5:.5,a=t(r+i*y,n);return a[0]-=i*e,a}return t.invert&&(r.invert=function(r,n){var i=r>0?-.5:.5,a=t.invert(r+i*e,n),o=a[0]-i*y;return o<-y?o+=2*y:o>y&&(o-=2*y),a[0]=o,a}),r}function Bt(t,e){var r=d(t),i=d(e),s=o(e),l=o(t)*s,c=g(t)*s,u=g(i*e);t=n(a(c,u)),e=S(l),n(t-x)>v&&(t%=x);var f=function(t,e){if(e===x)return[0,0];var r,i,a=g(e),s=a*a,l=s*s,c=1+l,u=1+3*l,f=1-l,h=S(1/L(c)),p=f+s*c*h,d=(1-a)/p,m=L(d),b=d*c,_=L(b),w=m*f;if(0===t)return[0,-(w+s*_)];var T,k=o(e),A=1/k,M=2*a*k,E=(-p*k-(-3*s+h*u)*M*(1-a))/(p*p),C=-A*M,P=-A*(s*c*E+d*u*M),I=-2*A*(f*(.5*E/m)-2*s*m*M),O=4*t/y;if(t>.222*y||e.175*y){if(r=(w+s*L(b*(1+l)-w*w))/(1+l),t>y/4)return[r,r];var z=r,D=.5*r;r=.5*(D+z),i=50;do{var R=L(b-r*r),F=r*(I+C*R)+P*S(r/_)-O;if(!F)break;F<0?D=r:z=r,r=.5*(D+z)}while(n(z-D)>v&&--i>0)}else{r=v,i=25;do{var B=r*r,N=L(b-B),j=I+C*N,U=r*j+P*S(r/_)-O,V=j+(P-C*B)/N;r-=T=N?U/V:0}while(n(T)>v&&--i>0)}return[r,-w-s*L(b-r*r)]}(t>y/4?x-t:t,e);return t>y/4&&(u=f[0],f[0]=-f[1],f[1]=-u),f[0]*=r,f[1]*=-i,f}function Nt(t,e){var r,a,l,c,u,f;if(e=1-v)return r=(1-e)/4,l=1/(a=P(t)),[(c=((f=s(2*(f=t)))-1)/(f+1))+r*((u=a*C(t))-t)/(a*a),l-r*c*l*(u-t),l+r*c*l*(u+t),2*i(s(t))-x+r*(u-t)/a];var h=[1,0,0,0,0,0,0,0,0],p=[L(e),0,0,0,0,0,0,0,0],d=0;for(a=L(1-e),u=1;n(p[d]/h[d])>v&&d<8;)r=h[d++],p[d]=(r-a)/2,h[d]=(r+a)/2,a=L(r*a),u*=2;l=u*h[d]*t;do{l=(S(c=p[d]*g(a=l)/h[d])+l)/2}while(--d);return[g(l),c=o(l),c/o(l-a),l]}function jt(t,e){if(!e)return t;if(1===e)return c(m(t/2+b));for(var r=1,a=L(1-e),o=L(e),s=0;n(o)>v;s++){if(t%y){var l=i(a*m(t)/r);l<0&&(l+=y),t+=l+~~(t/y)*y}else t+=t;o=(r+a)/2,a=L(r*a),o=((r=o)-a)/2}return t/(h(2,s)*r)}function Ut(t,e){var r=(w-1)/(w+1),l=L(1-r*r),u=jt(x,l*l),f=c(m(y/4+n(e)/2)),h=s(-1*f)/L(r),p=function(t,e){var r=t*t,n=e+1,i=1-r-e*e;return[.5*((t>=0?x:-x)-a(i,2*t)),-.25*c(i*i+4*r)+.5*c(n*n+r)]}(h*o(-1*t),h*g(-1*t)),v=function(t,e,r){var a=n(t),o=C(n(e));if(a){var s=1/g(a),l=1/(m(a)*m(a)),c=-(l+r*(o*o*s*s)-1+r),u=(-c+L(c*c-4*((r-1)*l)))/2;return[jt(i(1/L(u)),r)*d(t),jt(i(L((u/l-1)/r)),1-r)*d(e)]}return[0,jt(i(o),1-r)*d(e)]}(p[0],p[1],l*l);return[-v[1],(e>=0?1:-1)*(.5*u-v[0])]}function Vt(t){var e=g(t),r=o(t),i=Ht(t);function s(t,a){var s=i(t,a);t=s[0],a=s[1];var l=g(a),c=o(a),u=o(t),f=E(e*l+r*c*u),h=g(f),p=n(h)>v?f/h:1;return[p*r*g(t),(n(t)>x?p:-p)*(e*c-r*l*u)]}return i.invert=Ht(-t),s.invert=function(t,r){var n=L(t*t+r*r),s=-g(n),l=o(n),c=n*l,u=-r*s,f=n*e,h=L(c*c+u*u-f*f),p=a(c*f+u*h,u*f-c*h),d=(n>x?-1:1)*a(t*s,n*o(p)*l+r*g(p)*s);return i.invert(d,p)},s}function Ht(t){var e=g(t),r=o(t);return function(t,n){var i=o(n),s=o(t)*i,l=g(t)*i,c=g(n);return[a(l,s*r-c*e),S(c*r+s*e)]}}Bt.invert=function(t,e){n(t)>1&&(t=2*d(t)-t),n(e)>1&&(e=2*d(e)-e);var r=d(t),i=d(e),s=-r*t,l=-i*e,c=l/s<1,u=function(t,e){var r=0,i=1,a=.5,s=50;for(;;){var l=a*a,c=L(a),u=S(1/L(1+l)),f=1-l+a*(1+l)*u,h=(1-c)/f,p=L(h),d=h*(1+l),g=p*(1-l),m=L(d-t*t),v=e+g+a*m;if(n(i-r)<1e-12||0==--s||0===v)break;v>0?r=a:i=a,a=.5*(r+i)}if(!s)return null;var x=S(c),b=o(x),_=1/b,w=2*c*b,T=(-f*b-(-3*a+u*(1+3*l))*w*(1-c))/(f*f);return[y/4*(t*(-2*_*(.5*T/p*(1-l)-2*a*p*w)+-_*w*m)+-_*(a*(1+l)*T+h*(1+3*l)*w)*S(t/L(d))),x]}(c?l:s,c?s:l),f=u[0],h=u[1],p=o(h);return c&&(f=-x-f),[r*(a(g(f)*p,-g(h))+y),i*S(o(f)*p)]},Ut.invert=function(t,e){var r,n,o,l,u,f,h=(w-1)/(w+1),p=L(1-h*h),d=jt(x,p*p),g=(n=-t,o=p*p,(r=.5*d-e)?(l=Nt(r,o),n?(f=(u=Nt(n,1-o))[1]*u[1]+o*l[0]*l[0]*u[0]*u[0],[[l[0]*u[2]/f,l[1]*l[2]*u[0]*u[1]/f],[l[1]*u[1]/f,-l[0]*l[2]*u[0]*u[2]/f],[l[2]*u[1]*u[2]/f,-o*l[0]*l[1]*u[0]/f]]):[[l[0],0],[l[1],0],[l[2],0]]):[[0,(u=Nt(n,1-o))[0]/u[1]],[1/u[1],0],[u[2]/u[1],0]]),m=function(t,e){var r=e[0]*e[0]+e[1]*e[1];return[(t[0]*e[0]+t[1]*e[1])/r,(t[1]*e[0]-t[0]*e[1])/r]}(g[0],g[1]);return[a(m[1],m[0])/-1,2*i(s(-.5*c(h*m[0]*m[0]+h*m[1]*m[1])))-x]};var qt=S(1-1/3)*A,Gt=ht(0);function Yt(t){var e=qt*M,r=lt(y,e)[0]-lt(-y,e)[0],i=Gt(0,e)[1],a=lt(0,e)[1],o=T-a,s=k/t,c=4/k,h=i+o*o*4/k;function p(p,d){var g,m=n(d);if(m>e){var v=f(t-1,u(0,l((p+y)/s)));(g=lt(p+=y*(t-1)/t-v*s,m))[0]=g[0]*k/r-k*(t-1)/(2*t)+v*k/t,g[1]=i+4*(g[1]-a)*o/k,d<0&&(g[1]=-g[1])}else g=Gt(p,d);return g[0]*=c,g[1]/=h,g}return p.invert=function(e,p){e/=c;var d=n(p*=h);if(d>i){var g=f(t-1,u(0,l((e+y)/s)));e=(e+y*(t-1)/t-g*s)*r/k;var m=lt.invert(e,.25*(d-i)*k/o+a);return m[0]-=y*(t-1)/t-g*s,p<0&&(m[1]=-m[1]),m}return Gt.invert(e,p)},p}function Wt(t,e){return[t,1&e?90-v:qt]}function Xt(t,e){return[t,1&e?-90+v:-qt]}function Zt(t){return[t[0]*(1-v),t[1]]}function Jt(t){var e,r=1+t,i=S(g(1/r)),s=2*L(y/(e=y+4*i*r)),l=.5*s*(r+L(t*(2+t))),c=t*t,u=r*r;function f(f,h){var p,d,m=1-g(h);if(m&&m<2){var v,b=x-h,_=25;do{var w=g(b),T=o(b),k=i+a(w,r-T),A=1+u-2*r*T;b-=v=(b-c*i-r*w+A*k-.5*m*e)/(2*r*w*k)}while(n(v)>1e-12&&--_>0);p=s*L(A),d=f*k/y}else p=s*(t+m),d=f*i/y;return[p*g(d),l-p*o(d)]}return f.invert=function(t,n){var o=t*t+(n-=l)*n,f=(1+u-o/(s*s))/(2*r),h=E(f),p=g(h),d=i+a(p,r-f);return[S(t/L(o))*y/d,S(1-2*(h-c*i-r*p+(1+u-2*r*f)*d)/e)]},f}function Kt(t,e){return e>-.7109889596207567?((t=W(t,e))[1]+=.0528035274542,t):Q(t,e)}function Qt(t,e){return n(e)>.7109889596207567?((t=W(t,e))[1]-=e>0?.0528035274542:-.0528035274542,t):Q(t,e)}function $t(t,e,r,n){var i=L(4*y/(2*r+(1+t-e/2)*g(2*r)+(t+e)/2*g(4*r)+e/2*g(6*r))),a=L(n*g(r)*L((1+t*o(2*r)+e*o(4*r))/(1+t+e))),s=r*c(1);function l(r){return L(1+t*o(2*r)+e*o(4*r))}function c(n){var i=n*r;return(2*i+(1+t-e/2)*g(2*i)+(t+e)/2*g(4*i)+e/2*g(6*i))/r}function u(t){return l(t)*g(t)}var f=function(t,e){var n=r*V(c,s*g(e)/r,e/y);isNaN(n)&&(n=r*d(e));var u=i*l(n);return[u*a*t/y*o(n),u/a*g(n)]};return f.invert=function(t,e){var n=V(u,e*a/i);return[t*y/(o(n)*i*a*l(n)),S(r*c(n/r)/s)]},0===r&&(i=L(n/y),(f=function(t,e){return[t*i,g(e)/i]}).invert=function(t,e){return[t/i,S(e*i)]}),f}function te(t,e,r,n,i){void 0===n&&(n=1e-8),void 0===i&&(i=20);var a=t(e),o=t(.5*(e+r)),s=t(r);return function t(e,r,n,i,a,o,s,l,c,u,f){if(f.nanEncountered)return NaN;var h,p,d,g,m,v,y,x,b,_;if(p=e(r+.25*(h=n-r)),d=e(n-.25*h),isNaN(p))f.nanEncountered=!0;else{if(!isNaN(d))return _=((v=(g=h*(i+4*p+a)/12)+(m=h*(a+4*d+o)/12))-s)/15,u>c?(f.maxDepthCount++,v+_):Math.abs(_)t?r=n:e=n,n=e+r>>1}while(n>e);var i=c[n+1]-c[n];return i&&(i=(t-c[n+1])/i),(n+1+i)/s}var p=2*f(1)/y*o/r,m=function(t,e){var r=f(n(g(e))),a=i(r)*t;return r/=p,[a,e>=0?r:-r]};return m.invert=function(t,e){var r;return n(e*=p)<1&&(r=d(e)*S(a(n(e))*o)),[t/i(n(e)),r]},m}function re(t,e){return n(t[0]-e[0])=0;--l)n=(e=t[1][l])[0][0],i=e[0][1],a=e[1][1],o=e[2][0],s=e[2][1],c.push(ne([[o-v,s-v],[o-v,a+v],[n+v,a+v],[n+v,i-v]],30));return{type:\"Polygon\",coordinates:[r.merge(c)]}}function ae(t,r,n){var i,a;function o(e,n){for(var i=n<0?-1:1,a=r[+(n<0)],o=0,s=a.length-1;oa[o][2][0];++o);var l=t(e-a[o][1][0],n);return l[0]+=t(a[o][1][0],i*n>i*a[o][0][1]?a[o][0][1]:n)[0],l}n?o.invert=n(o):t.invert&&(o.invert=function(e,n){for(var i=a[+(n<0)],s=r[+(n<0)],l=0,c=i.length;lo&&(r=a,a=o,o=r),[[n,a],[i,o]]}))})),s):r.map((function(t){return t.map((function(t){return[[t[0][0]*A,t[0][1]*A],[t[1][0]*A,t[1][1]*A],[t[2][0]*A,t[2][1]*A]]}))}))},null!=r&&s.lobes(r),s}Kt.invert=function(t,e){return e>-.7109889596207567?W.invert(t,e-.0528035274542):Q.invert(t,e)},Qt.invert=function(t,e){return n(e)>.7109889596207567?W.invert(t,e+(e>0?.0528035274542:-.0528035274542)):Q.invert(t,e)};var oe=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];var se=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];var le=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];var ce=[[[[-180,0],[-90,90],[0,0]],[[0,0],[90,90],[180,0]]],[[[-180,0],[-90,-90],[0,0]],[[0,0],[90,-90],[180,0]]]];var ue=[[[[-180,35],[-30,90],[0,35]],[[0,35],[30,90],[180,35]]],[[[-180,-10],[-102,-90],[-65,-10]],[[-65,-10],[5,-90],[77,-10]],[[77,-10],[103,-90],[180,-10]]]];var fe=[[[[-180,0],[-110,90],[-40,0]],[[-40,0],[0,90],[40,0]],[[40,0],[110,90],[180,0]]],[[[-180,0],[-110,-90],[-40,0]],[[-40,0],[0,-90],[40,0]],[[40,0],[110,-90],[180,0]]]];function he(t,e){return[3/k*t*L(y*y/3-e*e),e]}function pe(t){function e(e,r){if(n(n(r)-x)2)return null;var o=(e/=2)*e,s=(r/=2)*r,l=2*r/(1+o+s);return l=h((1+l)/(1-l),1/t),[a(2*e,1-o-s)/t,S((l-1)/(l+1))]},e}he.invert=function(t,e){return[k/3*t/L(y*y/3-e*e),e]};var de=y/w;function ge(t,e){return[t*(1+L(o(e)))/2,e/(o(e/2)*o(t/6))]}function me(t,e){var r=t*t,n=e*e;return[t*(.975534+n*(-.0143059*r-.119161+-.0547009*n)),e*(1.00384+r*(.0802894+-.02855*n+199025e-9*r)+n*(.0998909+-.0491032*n))]}function ve(t,e){return[g(t)/o(e),m(e)*o(t)]}function ye(t){var e=o(t),r=m(b+t/2);function i(i,a){var o=a-t,s=n(o)=0;)h=(f=t[u])[0]+l*(i=h)-c*p,p=f[1]+l*p+c*i;return[h=l*(i=h)-c*p,p=l*p+c*i]}return r.invert=function(r,s){var l=20,c=r,u=s;do{for(var f,h=e,p=t[h],d=p[0],m=p[1],v=0,y=0;--h>=0;)v=d+c*(f=v)-u*y,y=m+c*y+u*f,d=(p=t[h])[0]+c*(f=d)-u*m,m=p[1]+c*m+u*f;var x,b,_=(v=d+c*(f=v)-u*y)*v+(y=m+c*y+u*f)*y;c-=x=((d=c*(f=d)-u*m-r)*v+(m=c*m+u*f-s)*y)/_,u-=b=(m*v-d*y)/_}while(n(x)+n(b)>1e-12&&--l>0);if(l){var w=L(c*c+u*u),T=2*i(.5*w),k=g(T);return[a(c*k,w*o(T)),w?S(u*k/w):0]}},r}ge.invert=function(t,e){var r=n(t),i=n(e),a=v,s=x;iv||n(b)>v)&&--a>0);return a&&[r,i]},ve.invert=function(t,e){var r=t*t,n=e*e+1,i=r+n,a=t?_*L((i-L(i*i-4*r))/r):1/L(n);return[S(t*a),d(e)*E(a)]},xe.invert=function(t,e){return[t,2.5*i(s(.8*e))-.625*y]};var _e=[[.9972523,0],[.0052513,-.0041175],[.0074606,.0048125],[-.0153783,-.1968253],[.0636871,-.1408027],[.3660976,-.2937382]],we=[[.98879,0],[0,0],[-.050909,0],[0,0],[.075528,0]],Te=[[.984299,0],[.0211642,.0037608],[-.1036018,-.0575102],[-.0329095,-.0320119],[.0499471,.1223335],[.026046,.0899805],[7388e-7,-.1435792],[.0075848,-.1334108],[-.0216473,.0776645],[-.0225161,.0853673]],ke=[[.9245,0],[0,0],[.01943,0]],Ae=[[.721316,0],[0,0],[-.00881625,-.00617325]];function Me(t,r){var n=e.geoProjection(be(t)).rotate(r).clipAngle(90),i=e.geoRotation(r),a=n.center;return delete n.rotate,n.center=function(t){return arguments.length?a(i(t)):i.invert(a())},n}var Se=L(6),Ee=L(7);function Le(t,e){var r=S(7*g(e)/(3*Se));return[Se*t*(2*o(2*r/3)-1)/Ee,9*g(r/3)/Ee]}function Ce(t,e){for(var r,i=(1+_)*g(e),a=e,s=0;s<25&&(a-=r=(g(a/2)+g(a)-i)/(.5*o(a/2)+o(a)),!(n(r)1e-12&&--l>0);return[t/(.84719-.13063*(i=s*s)+(o=i*(a=i*i))*o*(.05494*i-.04515-.02326*a+.00331*o)),s]},Oe.invert=function(t,e){for(var r=e/2,i=0,a=1/0;i<10&&n(a)>v;++i){var s=o(e/2);e-=a=(e-m(e/2)-r)/(1-.5/(s*s))}return[2*t/(1+o(e)),e]};var ze=[[[[-180,0],[-90,90],[0,0]],[[0,0],[90,90],[180,0]]],[[[-180,0],[-90,-90],[0,0]],[[0,0],[90,-90],[180,0]]]];function De(t,e){var r=g(e),i=o(e),a=d(t);if(0===t||n(e)===x)return[0,e];if(0===e)return[t,0];if(n(t)===x)return[t*i,x*r];var s=y/(2*t)-2*t/y,l=2*e/y,c=(1-l*l)/(r-l),u=s*s,f=c*c,h=1+u/f,p=1+f/u,m=(s*r/c-s/2)/h,v=(f*r/u+c/2)/p,b=v*v-(f*r*r/u+c*r-1)/p;return[x*(m+L(m*m+i*i/h)*a),x*(v+L(b<0?0:b)*d(-e*s)*a)]}De.invert=function(t,e){var r=(t/=x)*t,n=r+(e/=x)*e,i=y*y;return[t?(n-1+L((1-n)*(1-n)+4*r))/(2*t)*x:0,V((function(t){return n*(y*g(t)-2*t)*y+4*t*t*(e-g(t))+2*y*t-i*e}),0)]};function Re(t,e){var r=e*e;return[t,e*(1.0148+r*r*(.23185+r*(.02406*r-.14499)))]}function Fe(t,e){if(n(e)=0;)if(n=e[s],r[0]===n[0]&&r[1]===n[1]){if(a)return[a,r];a=r}}}(e.face,r.face),i=Be(n.map(r.project),n.map(e.project));e.transform=r.transform?Ne(r.transform,i):i;for(var a=r.edges,o=0,s=a.length;o1.790857183?e=1.790857183:e<-1.790857183&&(e=-1.790857183);var r,i=e;do{var a=i*i;i-=r=(i*(1.0148+a*a*(.23185+a*(.02406*a-.14499)))-e)/(1.0148+a*a*(5*.23185+a*(.21654*a-1.01493)))}while(n(r)>v);return[t,i]},Fe.invert=function(t,e){if(n(e)v&&--s>0);return l=m(a),[(n(e)n^p>n&&r<(h-c)*(n-u)/(p-u)+c&&(i=!i)}return i}(t[0],r))return t.push(e),!0}))||t.push([e])})),nr=[],t.length?t.length>1?{type:\"MultiPolygon\",coordinates:t}:{type:\"Polygon\",coordinates:t[0]}:null}};function sr(t){var r=t(x,0)[0]-t(-x,0)[0];function i(e,i){var a=n(e)0?e-y:e+y,i),s=(o[0]-o[1])*_,l=(o[0]+o[1])*_;if(a)return[s,l];var c=r*_,u=s>0^l>0?-1:1;return[u*s-d(l)*c,u*l-d(s)*c]}return t.invert&&(i.invert=function(e,i){var a=(e+i)*_,o=(i-e)*_,s=n(a)<.5*r&&n(o)<.5*r;if(!s){var l=r*_,c=a>0^o>0?-1:1,u=-c*e+(o>0?1:-1)*l,f=-c*i+(a>0?1:-1)*l;a=(-u-f)*_,o=(u-f)*_}var h=t.invert(a,o);return s||(h[0]+=a>0?y:-y),h}),e.geoProjection(i).rotate([-90,-90,45]).clipAngle(179.999)}function lr(){return sr(Ut).scale(111.48)}function cr(t){var e=g(t);function r(r,n){var a=e?m(r*e/2)/e:r/2;if(!n)return[2*a,-t];var s=2*i(a*g(n)),l=1/m(n);return[g(s)*l,n+(1-o(s))*l-t]}return r.invert=function(r,a){if(n(a+=t)v&&--u>0);var d=r*(f=m(c)),x=m(n(a)0?x:-x)*(h+o*(d-c)/2+o*o*(d-2*h+c)/2)]}function hr(t,e){var r=function(t){function e(e,r){var n=o(r),i=(t-1)/(t-n*o(e));return[i*n*g(e),i*g(r)]}return e.invert=function(e,r){var n=e*e+r*r,i=L(n),o=(t-L(1-n*(t+1)/(t-1)))/((t-1)/i+i/(t-1));return[a(e*o,i*L(1-o*o)),i?S(r*o/i):0]},e}(t);if(!e)return r;var n=o(e),i=g(e);function s(e,a){var o=r(e,a),s=o[1],l=s*i/(t-1)+n;return[o[0]*n/l,s/l]}return s.invert=function(e,a){var o=(t-1)/(t-1-a*i);return r.invert(o*e,o*a*n)},s}ur.forEach((function(t){t[1]*=1.0144})),fr.invert=function(t,e){var r=e/x,i=90*r,a=f(18,n(i/5)),o=u(0,l(a));do{var s=ur[o][1],c=ur[o+1][1],h=ur[f(19,o+2)][1],p=h-s,d=h-2*c+s,g=2*(n(r)-c)/p,m=d/p,v=g*(1-m*g*(1-2*m*g));if(v>=0||1===o){i=(e>=0?5:-5)*(v+a);var y,b=50;do{v=(a=f(18,n(i)/5))-(o=l(a)),s=ur[o][1],c=ur[o+1][1],h=ur[f(19,o+2)][1],i-=(y=(e>=0?x:-x)*(c+v*(h-s)/2+v*v*(h-2*c+s)/2)-e)*A}while(n(y)>1e-12&&--b>0);break}}while(--o>=0);var _=ur[o][0],w=ur[o+1][0],T=ur[f(19,o+2)][0];return[t/(w+v*(T-_)/2+v*v*(T-2*w+_)/2),i*M]};var pr=-179.9999,dr=179.9999,gr=-89.9999;function mr(t){return t.length>0}function vr(t){return-90===t||90===t?[0,t]:[-180,(e=t,Math.floor(1e4*e)/1e4)];var e}function yr(t){var e=t[0],r=t[1],n=!1;return e<=pr?(e=-180,n=!0):e>=dr&&(e=180,n=!0),r<=gr?(r=-90,n=!0):r>=89.9999&&(r=90,n=!0),n?[e,r]:t}function xr(t){return t.map(yr)}function br(t,e,r){for(var n=0,i=t.length;n=dr||u<=gr||u>=89.9999){a[o]=yr(l);for(var f=o+1;fpr&&pgr&&d<89.9999)break}if(f===o+1)continue;if(o){var g={index:-1,polygon:e,ring:a.slice(0,o+1)};g.ring[g.ring.length-1]=vr(u),r[r.length-1]=g}else r.pop();if(f>=s)break;r.push({index:-1,polygon:e,ring:a=a.slice(f-1)}),a[0]=vr(a[0][1]),o=-1,s=a.length}}}}function _r(t){var e,r,n,i,a,o,s=t.length,l={},c={};for(e=0;e0?y-l:l)*A],u=e.geoProjection(t(s)).rotate(c),f=e.geoRotation(c),h=u.center;return delete u.rotate,u.center=function(t){return arguments.length?h(f(t)):f.invert(h())},u.clipAngle(90)}function Mr(t){var r=o(t);function n(t,n){var i=e.geoGnomonicRaw(t,n);return i[0]*=r,i}return n.invert=function(t,n){return e.geoGnomonicRaw.invert(t/r,n)},n}function Sr(t,e){return Ar(Mr,t,e)}function Er(t){if(!(t*=2))return e.geoAzimuthalEquidistantRaw;var r=-t/2,n=-r,i=t*t,s=m(n),l=.5/g(n);function c(e,a){var s=E(o(a)*o(e-r)),l=E(o(a)*o(e-n));return[((s*=s)-(l*=l))/(2*t),(a<0?-1:1)*L(4*i*l-(i-s+l)*(i-s+l))/(2*t)]}return c.invert=function(t,e){var i,c,u=e*e,f=o(L(u+(i=t+r)*i)),h=o(L(u+(i=t+n)*i));return[a(c=f-h,i=(f+h)*s),(e<0?-1:1)*E(L(i*i+c*c)*l)]},c}function Lr(t,e){return Ar(Er,t,e)}function Cr(t,e){if(n(e)v&&--l>0);return[d(t)*(L(a*a+4)+a)*y/4,x*s]};var Rr=4*y+3*L(3),Fr=2*L(2*y*L(3)/Rr),Br=Y(Fr*L(3)/y,Fr,Rr/6);function Nr(t,e){return[t*L(1-3*e*e/(y*y)),e]}function jr(t,e){var r=o(e),n=o(t)*r,i=1-n,s=o(t=a(g(t)*r,-g(e))),l=g(t);return[l*(r=L(1-n*n))-s*i,-s*r-l*i]}function Ur(t,e){var r=O(t,e);return[(r[0]+t/x)/2,(r[1]+e)/2]}Nr.invert=function(t,e){return[t/L(1-3*e*e/(y*y)),e]},jr.invert=function(t,e){var r=(t*t+e*e)/-2,n=L(-r*(2+r)),i=e*r+t*n,o=t*r-e*n,s=L(o*o+i*i);return[a(n*i,s*(1+r)),s?-S(n*o/s):0]},Ur.invert=function(t,e){var r=t,i=e,a=25;do{var s,l=o(i),c=g(i),u=g(2*i),f=c*c,h=l*l,p=g(r),d=o(r/2),m=g(r/2),y=m*m,b=1-h*d*d,_=b?E(l*d)*L(s=1/b):s=0,w=.5*(2*_*l*m+r/x)-t,T=.5*(_*c+i)-e,k=.5*s*(h*y+_*l*d*f)+.5/x,A=s*(p*u/4-_*c*m),M=.125*s*(u*m-_*c*h*p),S=.5*s*(f*d+_*y*l)+.5,C=A*M-S*k,P=(T*A-w*S)/C,I=(w*M-T*k)/C;r-=P,i-=I}while((n(P)>v||n(I)>v)&&--a>0);return[r,i]},t.geoNaturalEarth=e.geoNaturalEarth1,t.geoNaturalEarthRaw=e.geoNaturalEarth1Raw,t.geoAiry=function(){var t=x,r=e.geoProjectionMutator(I),n=r(t);return n.radius=function(e){return arguments.length?r(t=e*M):t*A},n.scale(179.976).clipAngle(147)},t.geoAiryRaw=I,t.geoAitoff=function(){return e.geoProjection(O).scale(152.63)},t.geoAitoffRaw=O,t.geoArmadillo=function(){var t=20*M,r=t>=0?1:-1,n=m(r*t),i=e.geoProjectionMutator(z),s=i(t),l=s.stream;return s.parallel=function(e){return arguments.length?(n=m((r=(t=e*M)>=0?1:-1)*t),i(t)):t*A},s.stream=function(e){var i=s.rotate(),c=l(e),u=(s.rotate([0,0]),l(e)),f=s.precision();return s.rotate(i),c.sphere=function(){u.polygonStart(),u.lineStart();for(var e=-180*r;r*e<180;e+=90*r)u.point(e,90*r);if(t)for(;r*(e-=3*r*f)>=-180;)u.point(e,r*-a(o(e*M/2),n)*A);u.lineEnd(),u.polygonEnd()},c},s.scale(218.695).center([0,28.0974])},t.geoArmadilloRaw=z,t.geoAugust=function(){return e.geoProjection(D).scale(66.1603)},t.geoAugustRaw=D,t.geoBaker=function(){return e.geoProjection(B).scale(112.314)},t.geoBakerRaw=B,t.geoBerghaus=function(){var t=5,r=e.geoProjectionMutator(N),n=r(t),i=n.stream,s=-o(.01*M),l=g(.01*M);return n.lobes=function(e){return arguments.length?r(t=+e):t},n.stream=function(e){var r=n.rotate(),c=i(e),u=(n.rotate([0,0]),i(e));return n.rotate(r),c.sphere=function(){u.polygonStart(),u.lineStart();for(var e=0,r=360/t,n=2*y/t,i=90-180/t,c=x;e=0;)t.point((e=r[i])[0],e[1]);t.lineEnd(),t.polygonEnd()},t},n.scale(79.4187).parallel(45).clipAngle(179.999)},t.geoHammerRetroazimuthalRaw=Vt,t.geoHealpix=function(){var t=4,n=e.geoProjectionMutator(Yt),i=n(t),a=i.stream;return i.lobes=function(e){return arguments.length?n(t=+e):t},i.stream=function(n){var o=i.rotate(),s=a(n),l=(i.rotate([0,0]),a(n));return i.rotate(o),s.sphere=function(){var n,i;e.geoStream((n=180/t,i=[].concat(r.range(-180,180+n/2,n).map(Wt),r.range(180,-180-n/2,-n).map(Xt)),{type:\"Polygon\",coordinates:[180===n?i.map(Zt):i]}),l)},s},i.scale(239.75)},t.geoHealpixRaw=Yt,t.geoHill=function(){var t=1,r=e.geoProjectionMutator(Jt),n=r(t);return n.ratio=function(e){return arguments.length?r(t=+e):t},n.scale(167.774).center([0,18.67])},t.geoHillRaw=Jt,t.geoHomolosine=function(){return e.geoProjection(Qt).scale(152.63)},t.geoHomolosineRaw=Qt,t.geoHufnagel=function(){var t=1,r=0,n=45*M,i=2,a=e.geoProjectionMutator($t),o=a(t,r,n,i);return o.a=function(e){return arguments.length?a(t=+e,r,n,i):t},o.b=function(e){return arguments.length?a(t,r=+e,n,i):r},o.psiMax=function(e){return arguments.length?a(t,r,n=+e*M,i):n*A},o.ratio=function(e){return arguments.length?a(t,r,n,i=+e):i},o.scale(180.739)},t.geoHufnagelRaw=$t,t.geoHyperelliptical=function(){var t=0,r=2.5,n=1.183136,i=e.geoProjectionMutator(ee),a=i(t,r,n);return a.alpha=function(e){return arguments.length?i(t=+e,r,n):t},a.k=function(e){return arguments.length?i(t,r=+e,n):r},a.gamma=function(e){return arguments.length?i(t,r,n=+e):n},a.scale(152.63)},t.geoHyperellipticalRaw=ee,t.geoInterrupt=ae,t.geoInterruptedBoggs=function(){return ae(J,oe).scale(160.857)},t.geoInterruptedHomolosine=function(){return ae(Qt,se).scale(152.63)},t.geoInterruptedMollweide=function(){return ae(W,le).scale(169.529)},t.geoInterruptedMollweideHemispheres=function(){return ae(W,ce).scale(169.529).rotate([20,0])},t.geoInterruptedSinuMollweide=function(){return ae(Kt,ue,H).rotate([-20,-55]).scale(164.263).center([0,-5.4036])},t.geoInterruptedSinusoidal=function(){return ae(Q,fe).scale(152.63).rotate([-20,0])},t.geoKavrayskiy7=function(){return e.geoProjection(he).scale(158.837)},t.geoKavrayskiy7Raw=he,t.geoLagrange=function(){var t=.5,r=e.geoProjectionMutator(pe),n=r(t);return n.spacing=function(e){return arguments.length?r(t=+e):t},n.scale(124.75)},t.geoLagrangeRaw=pe,t.geoLarrivee=function(){return e.geoProjection(ge).scale(97.2672)},t.geoLarriveeRaw=ge,t.geoLaskowski=function(){return e.geoProjection(me).scale(139.98)},t.geoLaskowskiRaw=me,t.geoLittrow=function(){return e.geoProjection(ve).scale(144.049).clipAngle(89.999)},t.geoLittrowRaw=ve,t.geoLoximuthal=function(){return K(ye).parallel(40).scale(158.837)},t.geoLoximuthalRaw=ye,t.geoMiller=function(){return e.geoProjection(xe).scale(108.318)},t.geoMillerRaw=xe,t.geoModifiedStereographic=Me,t.geoModifiedStereographicRaw=be,t.geoModifiedStereographicAlaska=function(){return Me(_e,[152,-64]).scale(1400).center([-160.908,62.4864]).clipAngle(30).angle(7.8)},t.geoModifiedStereographicGs48=function(){return Me(we,[95,-38]).scale(1e3).clipAngle(55).center([-96.5563,38.8675])},t.geoModifiedStereographicGs50=function(){return Me(Te,[120,-45]).scale(359.513).clipAngle(55).center([-117.474,53.0628])},t.geoModifiedStereographicMiller=function(){return Me(ke,[-20,-18]).scale(209.091).center([20,16.7214]).clipAngle(82)},t.geoModifiedStereographicLee=function(){return Me(Ae,[165,10]).scale(250).clipAngle(130).center([-165,-10])},t.geoMollweide=function(){return e.geoProjection(W).scale(169.529)},t.geoMollweideRaw=W,t.geoMtFlatPolarParabolic=function(){return e.geoProjection(Le).scale(164.859)},t.geoMtFlatPolarParabolicRaw=Le,t.geoMtFlatPolarQuartic=function(){return e.geoProjection(Ce).scale(188.209)},t.geoMtFlatPolarQuarticRaw=Ce,t.geoMtFlatPolarSinusoidal=function(){return e.geoProjection(Pe).scale(166.518)},t.geoMtFlatPolarSinusoidalRaw=Pe,t.geoNaturalEarth2=function(){return e.geoProjection(Ie).scale(175.295)},t.geoNaturalEarth2Raw=Ie,t.geoNellHammer=function(){return e.geoProjection(Oe).scale(152.63)},t.geoNellHammerRaw=Oe,t.geoInterruptedQuarticAuthalic=function(){return ae(j(1/0),ze).rotate([20,0]).scale(152.63)},t.geoNicolosi=function(){return e.geoProjection(De).scale(127.267)},t.geoNicolosiRaw=De,t.geoPatterson=function(){return e.geoProjection(Re).scale(139.319)},t.geoPattersonRaw=Re,t.geoPolyconic=function(){return e.geoProjection(Fe).scale(103.74)},t.geoPolyconicRaw=Fe,t.geoPolyhedral=Ve,t.geoPolyhedralButterfly=function(t){t=t||function(t){var r=e.geoCentroid({type:\"MultiPoint\",coordinates:t});return e.geoGnomonic().scale(1).translate([0,0]).rotate([-r[0],-r[1]])};var r=Ye.map((function(e){return{face:e,project:t(e)}}));return[-1,0,0,1,0,1,4,5].forEach((function(t,e){var n=r[t];n&&(n.children||(n.children=[])).push(r[e])})),Ve(r[0],(function(t,e){return r[t<-y/2?e<0?6:4:t<0?e<0?2:0:t0?[-r[0],0]:[180-r[0],180])};var r=Ye.map((function(e){return{face:e,project:t(e)}}));return[-1,0,0,1,0,1,4,5].forEach((function(t,e){var n=r[t];n&&(n.children||(n.children=[])).push(r[e])})),Ve(r[0],(function(t,e){return r[t<-y/2?e<0?6:4:t<0?e<0?2:0:t2||a[0]!=e[0]||a[1]!=e[1])&&(n.push(a),e=a)}return 1===n.length&&t.length>1&&n.push(r(t[t.length-1])),n}function a(t){return t.map(i)}function o(t){if(null==t)return t;var e;switch(t.type){case\"GeometryCollection\":e={type:\"GeometryCollection\",geometries:t.geometries.map(o)};break;case\"Point\":e={type:\"Point\",coordinates:r(t.coordinates)};break;case\"MultiPoint\":e={type:t.type,coordinates:n(t.coordinates)};break;case\"LineString\":e={type:t.type,coordinates:i(t.coordinates)};break;case\"MultiLineString\":case\"Polygon\":e={type:t.type,coordinates:a(t.coordinates)};break;case\"MultiPolygon\":e={type:\"MultiPolygon\",coordinates:t.coordinates.map(a)};break;default:return t}return null!=t.bbox&&(e.bbox=t.bbox),e}function s(t){var e={type:\"Feature\",properties:t.properties,geometry:o(t.geometry)};return null!=t.id&&(e.id=t.id),null!=t.bbox&&(e.bbox=t.bbox),e}if(null!=t)switch(t.type){case\"Feature\":return s(t);case\"FeatureCollection\":var l={type:\"FeatureCollection\",features:t.features.map(s)};return null!=t.bbox&&(l.bbox=t.bbox),l;default:return o(t)}return t},t.geoQuincuncial=sr,t.geoRectangularPolyconic=function(){return K(cr).scale(131.215)},t.geoRectangularPolyconicRaw=cr,t.geoRobinson=function(){return e.geoProjection(fr).scale(152.63)},t.geoRobinsonRaw=fr,t.geoSatellite=function(){var t=2,r=0,n=e.geoProjectionMutator(hr),i=n(t,r);return i.distance=function(e){return arguments.length?n(t=+e,r):t},i.tilt=function(e){return arguments.length?n(t,r=e*M):r*A},i.scale(432.147).clipAngle(E(1/t)*A-1e-6)},t.geoSatelliteRaw=hr,t.geoSinuMollweide=function(){return e.geoProjection(Kt).rotate([-20,-55]).scale(164.263).center([0,-5.4036])},t.geoSinuMollweideRaw=Kt,t.geoSinusoidal=function(){return e.geoProjection(Q).scale(152.63)},t.geoSinusoidalRaw=Q,t.geoStitch=function(t){if(null==t)return t;switch(t.type){case\"Feature\":return wr(t);case\"FeatureCollection\":var e={type:\"FeatureCollection\",features:t.features.map(wr)};return null!=t.bbox&&(e.bbox=t.bbox),e;default:return Tr(t)}},t.geoTimes=function(){return e.geoProjection(kr).scale(146.153)},t.geoTimesRaw=kr,t.geoTwoPointAzimuthal=Sr,t.geoTwoPointAzimuthalRaw=Mr,t.geoTwoPointAzimuthalUsa=function(){return Sr([-158,21.5],[-77,39]).clipAngle(60).scale(400)},t.geoTwoPointEquidistant=Lr,t.geoTwoPointEquidistantRaw=Er,t.geoTwoPointEquidistantUsa=function(){return Lr([-158,21.5],[-77,39]).clipAngle(130).scale(122.571)},t.geoVanDerGrinten=function(){return e.geoProjection(Cr).scale(79.4183)},t.geoVanDerGrintenRaw=Cr,t.geoVanDerGrinten2=function(){return e.geoProjection(Pr).scale(79.4183)},t.geoVanDerGrinten2Raw=Pr,t.geoVanDerGrinten3=function(){return e.geoProjection(Ir).scale(79.4183)},t.geoVanDerGrinten3Raw=Ir,t.geoVanDerGrinten4=function(){return e.geoProjection(Or).scale(127.16)},t.geoVanDerGrinten4Raw=Or,t.geoWagner=Dr,t.geoWagner7=function(){return Dr().poleline(65).parallels(60).inflation(0).ratio(200).scale(172.633)},t.geoWagnerRaw=zr,t.geoWagner4=function(){return e.geoProjection(Br).scale(176.84)},t.geoWagner4Raw=Br,t.geoWagner6=function(){return e.geoProjection(Nr).scale(152.63)},t.geoWagner6Raw=Nr,t.geoWiechel=function(){return e.geoProjection(jr).rotate([0,-90,45]).scale(124.75).clipAngle(179.999)},t.geoWiechelRaw=jr,t.geoWinkel3=function(){return e.geoProjection(Ur).scale(158.837)},t.geoWinkel3Raw=Ur,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{\"d3-array\":107,\"d3-geo\":114}],114:[function(t,e,r){!function(n,i){\"object\"==typeof r&&void 0!==e?i(r,t(\"d3-array\")):i((n=n||self).d3=n.d3||{},n.d3)}(this,(function(t,e){\"use strict\";function r(){return new n}function n(){this.reset()}n.prototype={constructor:n,reset:function(){this.s=this.t=0},add:function(t){a(i,t,this.t),a(this,i.s,this.s),this.s?this.t+=i.t:this.s=i.t},valueOf:function(){return this.s}};var i=new n;function a(t,e,r){var n=t.s=e+r,i=n-e,a=n-i;t.t=e-a+(r-i)}var o=1e-6,s=Math.PI,l=s/2,c=s/4,u=2*s,f=180/s,h=s/180,p=Math.abs,d=Math.atan,g=Math.atan2,m=Math.cos,v=Math.ceil,y=Math.exp,x=Math.log,b=Math.pow,_=Math.sin,w=Math.sign||function(t){return t>0?1:t<0?-1:0},T=Math.sqrt,k=Math.tan;function A(t){return t>1?0:t<-1?s:Math.acos(t)}function M(t){return t>1?l:t<-1?-l:Math.asin(t)}function S(t){return(t=_(t/2))*t}function E(){}function L(t,e){t&&P.hasOwnProperty(t.type)&&P[t.type](t,e)}var C={Feature:function(t,e){L(t.geometry,e)},FeatureCollection:function(t,e){for(var r=t.features,n=-1,i=r.length;++n=0?1:-1,i=n*r,a=m(e=(e*=h)/2+c),o=_(e),s=N*o,l=B*a+s*m(i),u=s*n*_(i);j.add(g(u,l)),F=t,B=a,N=o}function W(t){return[g(t[1],t[0]),M(t[2])]}function X(t){var e=t[0],r=t[1],n=m(r);return[n*m(e),n*_(e),_(r)]}function Z(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function J(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function K(t,e){t[0]+=e[0],t[1]+=e[1],t[2]+=e[2]}function Q(t,e){return[t[0]*e,t[1]*e,t[2]*e]}function $(t){var e=T(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=e,t[1]/=e,t[2]/=e}var tt,et,rt,nt,it,at,ot,st,lt,ct,ut,ft,ht,pt,dt,gt,mt,vt,yt,xt,bt,_t,wt,Tt,kt,At,Mt=r(),St={point:Et,lineStart:Ct,lineEnd:Pt,polygonStart:function(){St.point=It,St.lineStart=Ot,St.lineEnd=zt,Mt.reset(),V.polygonStart()},polygonEnd:function(){V.polygonEnd(),St.point=Et,St.lineStart=Ct,St.lineEnd=Pt,j<0?(tt=-(rt=180),et=-(nt=90)):Mt>o?nt=90:Mt<-o&&(et=-90),ct[0]=tt,ct[1]=rt},sphere:function(){tt=-(rt=180),et=-(nt=90)}};function Et(t,e){lt.push(ct=[tt=t,rt=t]),ent&&(nt=e)}function Lt(t,e){var r=X([t*h,e*h]);if(st){var n=J(st,r),i=J([n[1],-n[0],0],n);$(i),i=W(i);var a,o=t-it,s=o>0?1:-1,l=i[0]*f*s,c=p(o)>180;c^(s*itnt&&(nt=a):c^(s*it<(l=(l+360)%360-180)&&lnt&&(nt=e)),c?tDt(tt,rt)&&(rt=t):Dt(t,rt)>Dt(tt,rt)&&(tt=t):rt>=tt?(trt&&(rt=t)):t>it?Dt(tt,t)>Dt(tt,rt)&&(rt=t):Dt(t,rt)>Dt(tt,rt)&&(tt=t)}else lt.push(ct=[tt=t,rt=t]);ent&&(nt=e),st=r,it=t}function Ct(){St.point=Lt}function Pt(){ct[0]=tt,ct[1]=rt,St.point=Et,st=null}function It(t,e){if(st){var r=t-it;Mt.add(p(r)>180?r+(r>0?360:-360):r)}else at=t,ot=e;V.point(t,e),Lt(t,e)}function Ot(){V.lineStart()}function zt(){It(at,ot),V.lineEnd(),p(Mt)>o&&(tt=-(rt=180)),ct[0]=tt,ct[1]=rt,st=null}function Dt(t,e){return(e-=t)<0?e+360:e}function Rt(t,e){return t[0]-e[0]}function Ft(t,e){return t[0]<=t[1]?t[0]<=e&&e<=t[1]:es?t+Math.round(-t/u)*u:t,e]}function Qt(t,e,r){return(t%=u)?e||r?Jt(te(t),ee(e,r)):te(t):e||r?ee(e,r):Kt}function $t(t){return function(e,r){return[(e+=t)>s?e-u:e<-s?e+u:e,r]}}function te(t){var e=$t(t);return e.invert=$t(-t),e}function ee(t,e){var r=m(t),n=_(t),i=m(e),a=_(e);function o(t,e){var o=m(e),s=m(t)*o,l=_(t)*o,c=_(e),u=c*r+s*n;return[g(l*i-u*a,s*r-c*n),M(u*i+l*a)]}return o.invert=function(t,e){var o=m(e),s=m(t)*o,l=_(t)*o,c=_(e),u=c*i-l*a;return[g(l*i+c*a,s*r+u*n),M(u*r-s*n)]},o}function re(t){function e(e){return(e=t(e[0]*h,e[1]*h))[0]*=f,e[1]*=f,e}return t=Qt(t[0]*h,t[1]*h,t.length>2?t[2]*h:0),e.invert=function(e){return(e=t.invert(e[0]*h,e[1]*h))[0]*=f,e[1]*=f,e},e}function ne(t,e,r,n,i,a){if(r){var o=m(e),s=_(e),l=n*r;null==i?(i=e+n*u,a=e-l/2):(i=ie(o,i),a=ie(o,a),(n>0?ia)&&(i+=n*u));for(var c,f=i;n>0?f>a:f1&&e.push(e.pop().concat(e.shift()))},result:function(){var r=e;return e=[],t=null,r}}}function oe(t,e){return p(t[0]-e[0])=0;--a)i.point((f=u[a])[0],f[1]);else n(p.x,p.p.x,-1,i);p=p.p}u=(p=p.o).z,d=!d}while(!p.v);i.lineEnd()}}}function ce(t){if(e=t.length){for(var e,r,n=0,i=t[0];++n=0?1:-1,z=O*I,D=z>s,R=T*C;if(ue.add(g(R*O*_(z),k*P+R*m(z))),f+=D?I+O*u:I,D^b>=r^E>=r){var F=J(X(x),X(S));$(F);var B=J(a,F);$(B);var N=(D^I>=0?-1:1)*M(B[2]);(n>N||n===N&&(F[0]||F[1]))&&(h+=D^I>=0?1:-1)}}return(f<-o||f0){for(h||(a.polygonStart(),h=!0),a.lineStart(),t=0;t1&&2&i&&c.push(c.pop().concat(c.shift())),s.push(c.filter(de))}return p}}function de(t){return t.length>1}function ge(t,e){return((t=t.x)[0]<0?t[1]-l-o:l-t[1])-((e=e.x)[0]<0?e[1]-l-o:l-e[1])}var me=pe((function(){return!0}),(function(t){var e,r=NaN,n=NaN,i=NaN;return{lineStart:function(){t.lineStart(),e=1},point:function(a,c){var u=a>0?s:-s,f=p(a-r);p(f-s)0?l:-l),t.point(i,n),t.lineEnd(),t.lineStart(),t.point(u,n),t.point(a,n),e=0):i!==u&&f>=s&&(p(r-i)o?d((_(e)*(a=m(n))*_(r)-_(n)*(i=m(e))*_(t))/(i*a*s)):(e+n)/2}(r,n,a,c),t.point(i,n),t.lineEnd(),t.lineStart(),t.point(u,n),e=0),t.point(r=a,n=c),i=u},lineEnd:function(){t.lineEnd(),r=n=NaN},clean:function(){return 2-e}}}),(function(t,e,r,n){var i;if(null==t)i=r*l,n.point(-s,i),n.point(0,i),n.point(s,i),n.point(s,0),n.point(s,-i),n.point(0,-i),n.point(-s,-i),n.point(-s,0),n.point(-s,i);else if(p(t[0]-e[0])>o){var a=t[0]0,i=p(e)>o;function a(t,r){return m(t)*m(r)>e}function l(t,r,n){var i=[1,0,0],a=J(X(t),X(r)),l=Z(a,a),c=a[0],u=l-c*c;if(!u)return!n&&t;var f=e*l/u,h=-e*c/u,d=J(i,a),g=Q(i,f);K(g,Q(a,h));var m=d,v=Z(g,m),y=Z(m,m),x=v*v-y*(Z(g,g)-1);if(!(x<0)){var b=T(x),_=Q(m,(-v-b)/y);if(K(_,g),_=W(_),!n)return _;var w,k=t[0],A=r[0],M=t[1],S=r[1];A0^_[1]<(p(_[0]-k)s^(k<=_[0]&&_[0]<=A)){var C=Q(m,(-v+b)/y);return K(C,g),[_,W(C)]}}}function c(e,r){var i=n?t:s-t,a=0;return e<-i?a|=1:e>i&&(a|=2),r<-i?a|=4:r>i&&(a|=8),a}return pe(a,(function(t){var e,r,o,u,f;return{lineStart:function(){u=o=!1,f=1},point:function(h,p){var d,g=[h,p],m=a(h,p),v=n?m?0:c(h,p):m?c(h+(h<0?s:-s),p):0;if(!e&&(u=o=m)&&t.lineStart(),m!==o&&(!(d=l(e,g))||oe(e,d)||oe(g,d))&&(g[2]=1),m!==o)f=0,m?(t.lineStart(),d=l(g,e),t.point(d[0],d[1])):(d=l(e,g),t.point(d[0],d[1],2),t.lineEnd()),e=d;else if(i&&e&&n^m){var y;v&r||!(y=l(g,e,!0))||(f=0,n?(t.lineStart(),t.point(y[0][0],y[0][1]),t.point(y[1][0],y[1][1]),t.lineEnd()):(t.point(y[1][0],y[1][1]),t.lineEnd(),t.lineStart(),t.point(y[0][0],y[0][1],3)))}!m||e&&oe(e,g)||t.point(g[0],g[1]),e=g,o=m,r=v},lineEnd:function(){o&&t.lineEnd(),e=null},clean:function(){return f|(u&&o)<<1}}}),(function(e,n,i,a){ne(a,t,r,i,e,n)}),n?[0,-t]:[-s,t-s])}function ye(t,r,n,i){function a(e,a){return t<=e&&e<=n&&r<=a&&a<=i}function s(e,a,o,s){var c=0,f=0;if(null==e||(c=l(e,o))!==(f=l(a,o))||u(e,a)<0^o>0)do{s.point(0===c||3===c?t:n,c>1?i:r)}while((c=(c+o+4)%4)!==f);else s.point(a[0],a[1])}function l(e,i){return p(e[0]-t)0?0:3:p(e[0]-n)0?2:1:p(e[1]-r)0?1:0:i>0?3:2}function c(t,e){return u(t.x,e.x)}function u(t,e){var r=l(t,1),n=l(e,1);return r!==n?r-n:0===r?e[1]-t[1]:1===r?t[0]-e[0]:2===r?t[1]-e[1]:e[0]-t[0]}return function(o){var l,u,f,h,p,d,g,m,v,y,x,b=o,_=ae(),w={point:T,lineStart:function(){w.point=k,u&&u.push(f=[]);y=!0,v=!1,g=m=NaN},lineEnd:function(){l&&(k(h,p),d&&v&&_.rejoin(),l.push(_.result()));w.point=T,v&&b.lineEnd()},polygonStart:function(){b=_,l=[],u=[],x=!0},polygonEnd:function(){var r=function(){for(var e=0,r=0,n=u.length;ri&&(h-a)*(i-o)>(p-o)*(t-a)&&++e:p<=i&&(h-a)*(i-o)<(p-o)*(t-a)&&--e;return e}(),n=x&&r,a=(l=e.merge(l)).length;(n||a)&&(o.polygonStart(),n&&(o.lineStart(),s(null,null,1,o),o.lineEnd()),a&&le(l,c,r,s,o),o.polygonEnd());b=o,l=u=f=null}};function T(t,e){a(t,e)&&b.point(t,e)}function k(e,o){var s=a(e,o);if(u&&f.push([e,o]),y)h=e,p=o,d=s,y=!1,s&&(b.lineStart(),b.point(e,o));else if(s&&v)b.point(e,o);else{var l=[g=Math.max(-1e9,Math.min(1e9,g)),m=Math.max(-1e9,Math.min(1e9,m))],c=[e=Math.max(-1e9,Math.min(1e9,e)),o=Math.max(-1e9,Math.min(1e9,o))];!function(t,e,r,n,i,a){var o,s=t[0],l=t[1],c=0,u=1,f=e[0]-s,h=e[1]-l;if(o=r-s,f||!(o>0)){if(o/=f,f<0){if(o0){if(o>u)return;o>c&&(c=o)}if(o=i-s,f||!(o<0)){if(o/=f,f<0){if(o>u)return;o>c&&(c=o)}else if(f>0){if(o0)){if(o/=h,h<0){if(o0){if(o>u)return;o>c&&(c=o)}if(o=a-l,h||!(o<0)){if(o/=h,h<0){if(o>u)return;o>c&&(c=o)}else if(h>0){if(o0&&(t[0]=s+c*f,t[1]=l+c*h),u<1&&(e[0]=s+u*f,e[1]=l+u*h),!0}}}}}(l,c,t,r,n,i)?s&&(b.lineStart(),b.point(e,o),x=!1):(v||(b.lineStart(),b.point(l[0],l[1])),b.point(c[0],c[1]),s||b.lineEnd(),x=!1)}g=e,m=o,v=s}return w}}var xe,be,_e,we=r(),Te={sphere:E,point:E,lineStart:function(){Te.point=Ae,Te.lineEnd=ke},lineEnd:E,polygonStart:E,polygonEnd:E};function ke(){Te.point=Te.lineEnd=E}function Ae(t,e){xe=t*=h,be=_(e*=h),_e=m(e),Te.point=Me}function Me(t,e){t*=h;var r=_(e*=h),n=m(e),i=p(t-xe),a=m(i),o=n*_(i),s=_e*r-be*n*a,l=be*r+_e*n*a;we.add(g(T(o*o+s*s),l)),xe=t,be=r,_e=n}function Se(t){return we.reset(),z(t,Te),+we}var Ee=[null,null],Le={type:\"LineString\",coordinates:Ee};function Ce(t,e){return Ee[0]=t,Ee[1]=e,Se(Le)}var Pe={Feature:function(t,e){return Oe(t.geometry,e)},FeatureCollection:function(t,e){for(var r=t.features,n=-1,i=r.length;++n0&&(i=Ce(t[a],t[a-1]))>0&&r<=i&&n<=i&&(r+n-i)*(1-Math.pow((r-n)/i,2))<1e-12*i)return!0;r=n}return!1}function Re(t,e){return!!he(t.map(Fe),Be(e))}function Fe(t){return(t=t.map(Be)).pop(),t}function Be(t){return[t[0]*h,t[1]*h]}function Ne(t,r,n){var i=e.range(t,r-o,n).concat(r);return function(t){return i.map((function(e){return[t,e]}))}}function je(t,r,n){var i=e.range(t,r-o,n).concat(r);return function(t){return i.map((function(e){return[e,t]}))}}function Ue(){var t,r,n,i,a,s,l,c,u,f,h,d,g=10,m=g,y=90,x=360,b=2.5;function _(){return{type:\"MultiLineString\",coordinates:w()}}function w(){return e.range(v(i/y)*y,n,y).map(h).concat(e.range(v(c/x)*x,l,x).map(d)).concat(e.range(v(r/g)*g,t,g).filter((function(t){return p(t%y)>o})).map(u)).concat(e.range(v(s/m)*m,a,m).filter((function(t){return p(t%x)>o})).map(f))}return _.lines=function(){return w().map((function(t){return{type:\"LineString\",coordinates:t}}))},_.outline=function(){return{type:\"Polygon\",coordinates:[h(i).concat(d(l).slice(1),h(n).reverse().slice(1),d(c).reverse().slice(1))]}},_.extent=function(t){return arguments.length?_.extentMajor(t).extentMinor(t):_.extentMinor()},_.extentMajor=function(t){return arguments.length?(i=+t[0][0],n=+t[1][0],c=+t[0][1],l=+t[1][1],i>n&&(t=i,i=n,n=t),c>l&&(t=c,c=l,l=t),_.precision(b)):[[i,c],[n,l]]},_.extentMinor=function(e){return arguments.length?(r=+e[0][0],t=+e[1][0],s=+e[0][1],a=+e[1][1],r>t&&(e=r,r=t,t=e),s>a&&(e=s,s=a,a=e),_.precision(b)):[[r,s],[t,a]]},_.step=function(t){return arguments.length?_.stepMajor(t).stepMinor(t):_.stepMinor()},_.stepMajor=function(t){return arguments.length?(y=+t[0],x=+t[1],_):[y,x]},_.stepMinor=function(t){return arguments.length?(g=+t[0],m=+t[1],_):[g,m]},_.precision=function(e){return arguments.length?(b=+e,u=Ne(s,a,90),f=je(r,t,b),h=Ne(c,l,90),d=je(i,n,b),_):b},_.extentMajor([[-180,-90+o],[180,90-o]]).extentMinor([[-180,-80-o],[180,80+o]])}function Ve(t){return t}var He,qe,Ge,Ye,We=r(),Xe=r(),Ze={point:E,lineStart:E,lineEnd:E,polygonStart:function(){Ze.lineStart=Je,Ze.lineEnd=$e},polygonEnd:function(){Ze.lineStart=Ze.lineEnd=Ze.point=E,We.add(p(Xe)),Xe.reset()},result:function(){var t=We/2;return We.reset(),t}};function Je(){Ze.point=Ke}function Ke(t,e){Ze.point=Qe,He=Ge=t,qe=Ye=e}function Qe(t,e){Xe.add(Ye*t-Ge*e),Ge=t,Ye=e}function $e(){Qe(He,qe)}var tr=1/0,er=tr,rr=-tr,nr=rr,ir={point:function(t,e){trr&&(rr=t);enr&&(nr=e)},lineStart:E,lineEnd:E,polygonStart:E,polygonEnd:E,result:function(){var t=[[tr,er],[rr,nr]];return rr=nr=-(er=tr=1/0),t}};var ar,or,sr,lr,cr=0,ur=0,fr=0,hr=0,pr=0,dr=0,gr=0,mr=0,vr=0,yr={point:xr,lineStart:br,lineEnd:Tr,polygonStart:function(){yr.lineStart=kr,yr.lineEnd=Ar},polygonEnd:function(){yr.point=xr,yr.lineStart=br,yr.lineEnd=Tr},result:function(){var t=vr?[gr/vr,mr/vr]:dr?[hr/dr,pr/dr]:fr?[cr/fr,ur/fr]:[NaN,NaN];return cr=ur=fr=hr=pr=dr=gr=mr=vr=0,t}};function xr(t,e){cr+=t,ur+=e,++fr}function br(){yr.point=_r}function _r(t,e){yr.point=wr,xr(sr=t,lr=e)}function wr(t,e){var r=t-sr,n=e-lr,i=T(r*r+n*n);hr+=i*(sr+t)/2,pr+=i*(lr+e)/2,dr+=i,xr(sr=t,lr=e)}function Tr(){yr.point=xr}function kr(){yr.point=Mr}function Ar(){Sr(ar,or)}function Mr(t,e){yr.point=Sr,xr(ar=sr=t,or=lr=e)}function Sr(t,e){var r=t-sr,n=e-lr,i=T(r*r+n*n);hr+=i*(sr+t)/2,pr+=i*(lr+e)/2,dr+=i,gr+=(i=lr*t-sr*e)*(sr+t),mr+=i*(lr+e),vr+=3*i,xr(sr=t,lr=e)}function Er(t){this._context=t}Er.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._context.moveTo(t,e),this._point=1;break;case 1:this._context.lineTo(t,e);break;default:this._context.moveTo(t+this._radius,e),this._context.arc(t,e,this._radius,0,u)}},result:E};var Lr,Cr,Pr,Ir,Or,zr=r(),Dr={point:E,lineStart:function(){Dr.point=Rr},lineEnd:function(){Lr&&Fr(Cr,Pr),Dr.point=E},polygonStart:function(){Lr=!0},polygonEnd:function(){Lr=null},result:function(){var t=+zr;return zr.reset(),t}};function Rr(t,e){Dr.point=Fr,Cr=Ir=t,Pr=Or=e}function Fr(t,e){Ir-=t,Or-=e,zr.add(T(Ir*Ir+Or*Or)),Ir=t,Or=e}function Br(){this._string=[]}function Nr(t){return\"m0,\"+t+\"a\"+t+\",\"+t+\" 0 1,1 0,\"+-2*t+\"a\"+t+\",\"+t+\" 0 1,1 0,\"+2*t+\"z\"}function jr(t){return function(e){var r=new Ur;for(var n in t)r[n]=t[n];return r.stream=e,r}}function Ur(){}function Vr(t,e,r){var n=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=n&&t.clipExtent(null),z(r,t.stream(ir)),e(ir.result()),null!=n&&t.clipExtent(n),t}function Hr(t,e,r){return Vr(t,(function(r){var n=e[1][0]-e[0][0],i=e[1][1]-e[0][1],a=Math.min(n/(r[1][0]-r[0][0]),i/(r[1][1]-r[0][1])),o=+e[0][0]+(n-a*(r[1][0]+r[0][0]))/2,s=+e[0][1]+(i-a*(r[1][1]+r[0][1]))/2;t.scale(150*a).translate([o,s])}),r)}function qr(t,e,r){return Hr(t,[[0,0],e],r)}function Gr(t,e,r){return Vr(t,(function(r){var n=+e,i=n/(r[1][0]-r[0][0]),a=(n-i*(r[1][0]+r[0][0]))/2,o=-i*r[0][1];t.scale(150*i).translate([a,o])}),r)}function Yr(t,e,r){return Vr(t,(function(r){var n=+e,i=n/(r[1][1]-r[0][1]),a=-i*r[0][0],o=(n-i*(r[1][1]+r[0][1]))/2;t.scale(150*i).translate([a,o])}),r)}Br.prototype={_radius:4.5,_circle:Nr(4.5),pointRadius:function(t){return(t=+t)!==this._radius&&(this._radius=t,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push(\"Z\"),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._string.push(\"M\",t,\",\",e),this._point=1;break;case 1:this._string.push(\"L\",t,\",\",e);break;default:null==this._circle&&(this._circle=Nr(this._radius)),this._string.push(\"M\",t,\",\",e,this._circle)}},result:function(){if(this._string.length){var t=this._string.join(\"\");return this._string=[],t}return null}},Ur.prototype={constructor:Ur,point:function(t,e){this.stream.point(t,e)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var Wr=m(30*h);function Xr(t,e){return+e?function(t,e){function r(n,i,a,s,l,c,u,f,h,d,m,v,y,x){var b=u-n,_=f-i,w=b*b+_*_;if(w>4*e&&y--){var k=s+d,A=l+m,S=c+v,E=T(k*k+A*A+S*S),L=M(S/=E),C=p(p(S)-1)e||p((b*z+_*D)/w-.5)>.3||s*d+l*m+c*v2?t[2]%360*h:0,I()):[y*f,x*f,b*f]},C.angle=function(t){return arguments.length?(_=t%360*h,I()):_*f},C.reflectX=function(t){return arguments.length?(w=t?-1:1,I()):w<0},C.reflectY=function(t){return arguments.length?(k=t?-1:1,I()):k<0},C.precision=function(t){return arguments.length?(o=Xr(s,L=t*t),O()):T(L)},C.fitExtent=function(t,e){return Hr(C,t,e)},C.fitSize=function(t,e){return qr(C,t,e)},C.fitWidth=function(t,e){return Gr(C,t,e)},C.fitHeight=function(t,e){return Yr(C,t,e)},function(){return e=t.apply(this,arguments),C.invert=e.invert&&P,I()}}function tn(t){var e=0,r=s/3,n=$r(t),i=n(e,r);return i.parallels=function(t){return arguments.length?n(e=t[0]*h,r=t[1]*h):[e*f,r*f]},i}function en(t,e){var r=_(t),n=(r+_(e))/2;if(p(n)0?e<-l+o&&(e=-l+o):e>l-o&&(e=l-o);var r=i/b(fn(e),n);return[r*_(n*t),i-r*m(n*t)]}return a.invert=function(t,e){var r=i-e,a=w(n)*T(t*t+r*r),o=g(t,p(r))*w(r);return r*n<0&&(o-=s*w(t)*w(r)),[o/n,2*d(b(i/a,1/n))-l]},a}function pn(t,e){return[t,e]}function dn(t,e){var r=m(t),n=t===e?_(t):(r-m(e))/(e-t),i=r/n+t;if(p(n)o&&--i>0);return[t/(.8707+(a=n*n)*(a*(a*a*a*(.003971-.001529*a)-.013791)-.131979)),n]},Tn.invert=on(M),kn.invert=on((function(t){return 2*d(t)})),An.invert=function(t,e){return[-e,2*d(y(t))-l]},t.geoAlbers=nn,t.geoAlbersUsa=function(){var t,e,r,n,i,a,s=nn(),l=rn().rotate([154,0]).center([-2,58.5]).parallels([55,65]),c=rn().rotate([157,0]).center([-3,19.9]).parallels([8,18]),u={point:function(t,e){a=[t,e]}};function f(t){var e=t[0],o=t[1];return a=null,r.point(e,o),a||(n.point(e,o),a)||(i.point(e,o),a)}function h(){return t=e=null,f}return f.invert=function(t){var e=s.scale(),r=s.translate(),n=(t[0]-r[0])/e,i=(t[1]-r[1])/e;return(i>=.12&&i<.234&&n>=-.425&&n<-.214?l:i>=.166&&i<.234&&n>=-.214&&n<-.115?c:s).invert(t)},f.stream=function(r){return t&&e===r?t:(n=[s.stream(e=r),l.stream(r),c.stream(r)],i=n.length,t={point:function(t,e){for(var r=-1;++rDt(n[0],n[1])&&(n[1]=i[1]),Dt(i[0],n[1])>Dt(n[0],n[1])&&(n[0]=i[0])):a.push(n=i);for(o=-1/0,e=0,n=a[r=a.length-1];e<=r;n=i,++e)i=a[e],(s=Dt(n[1],i[0]))>o&&(o=s,tt=i[0],rt=n[1])}return lt=ct=null,tt===1/0||et===1/0?[[NaN,NaN],[NaN,NaN]]:[[tt,et],[rt,nt]]},t.geoCentroid=function(t){ut=ft=ht=pt=dt=gt=mt=vt=yt=xt=bt=0,z(t,Bt);var e=yt,r=xt,n=bt,i=e*e+r*r+n*n;return i<1e-12&&(e=gt,r=mt,n=vt,ft2?t[2]+90:90]):[(t=r())[0],t[1],t[2]-90]},r([0,0,90]).scale(159.155)},t.geoTransverseMercatorRaw=An,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{\"d3-array\":107}],115:[function(t,e,r){!function(t,n){\"object\"==typeof r&&void 0!==e?n(r):n((t=t||self).d3=t.d3||{})}(this,(function(t){\"use strict\";function e(t,e){return t.parent===e.parent?1:2}function r(t,e){return t+e.x}function n(t,e){return Math.max(t,e.y)}function i(t){var e=0,r=t.children,n=r&&r.length;if(n)for(;--n>=0;)e+=r[n].value;else e=1;t.value=e}function a(t,e){var r,n,i,a,s,u=new c(t),f=+t.value&&(u.value=t.value),h=[u];for(null==e&&(e=o);r=h.pop();)if(f&&(r.value=+r.data.value),(i=e(r.data))&&(s=i.length))for(r.children=new Array(s),a=s-1;a>=0;--a)h.push(n=r.children[a]=new c(i[a])),n.parent=r,n.depth=r.depth+1;return u.eachBefore(l)}function o(t){return t.children}function s(t){t.data=t.data.data}function l(t){var e=0;do{t.height=e}while((t=t.parent)&&t.height<++e)}function c(t){this.data=t,this.depth=this.height=0,this.parent=null}c.prototype=a.prototype={constructor:c,count:function(){return this.eachAfter(i)},each:function(t){var e,r,n,i,a=this,o=[a];do{for(e=o.reverse(),o=[];a=e.pop();)if(t(a),r=a.children)for(n=0,i=r.length;n=0;--r)i.push(e[r]);return this},sum:function(t){return this.eachAfter((function(e){for(var r=+t(e.data)||0,n=e.children,i=n&&n.length;--i>=0;)r+=n[i].value;e.value=r}))},sort:function(t){return this.eachBefore((function(e){e.children&&e.children.sort(t)}))},path:function(t){for(var e=this,r=function(t,e){if(t===e)return t;var r=t.ancestors(),n=e.ancestors(),i=null;t=r.pop(),e=n.pop();for(;t===e;)i=t,t=r.pop(),e=n.pop();return i}(e,t),n=[e];e!==r;)e=e.parent,n.push(e);for(var i=n.length;t!==r;)n.splice(i,0,t),t=t.parent;return n},ancestors:function(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e},descendants:function(){var t=[];return this.each((function(e){t.push(e)})),t},leaves:function(){var t=[];return this.eachBefore((function(e){e.children||t.push(e)})),t},links:function(){var t=this,e=[];return t.each((function(r){r!==t&&e.push({source:r.parent,target:r})})),e},copy:function(){return a(this).eachBefore(s)}};var u=Array.prototype.slice;function f(t){for(var e,r,n=0,i=(t=function(t){for(var e,r,n=t.length;n;)r=Math.random()*n--|0,e=t[n],t[n]=t[r],t[r]=e;return t}(u.call(t))).length,a=[];n0&&r*r>n*n+i*i}function g(t,e){for(var r=0;r(o*=o)?(n=(c+o-i)/(2*c),a=Math.sqrt(Math.max(0,o/c-n*n)),r.x=t.x-n*s-a*l,r.y=t.y-n*l+a*s):(n=(c+i-o)/(2*c),a=Math.sqrt(Math.max(0,i/c-n*n)),r.x=e.x+n*s-a*l,r.y=e.y+n*l+a*s)):(r.x=e.x+r.r,r.y=e.y)}function b(t,e){var r=t.r+e.r-1e-6,n=e.x-t.x,i=e.y-t.y;return r>0&&r*r>n*n+i*i}function _(t){var e=t._,r=t.next._,n=e.r+r.r,i=(e.x*r.r+r.x*e.r)/n,a=(e.y*r.r+r.y*e.r)/n;return i*i+a*a}function w(t){this._=t,this.next=null,this.previous=null}function T(t){if(!(i=t.length))return 0;var e,r,n,i,a,o,s,l,c,u,h;if((e=t[0]).x=0,e.y=0,!(i>1))return e.r;if(r=t[1],e.x=-r.r,r.x=e.r,r.y=0,!(i>2))return e.r+r.r;x(r,e,n=t[2]),e=new w(e),r=new w(r),n=new w(n),e.next=n.previous=r,r.next=e.previous=n,n.next=r.previous=e;t:for(s=3;sh&&(h=s),m=u*u*g,(p=Math.max(h/m,m/f))>d){u-=s;break}d=p}v.push(o={value:u,dice:l1?e:1)},r}(G);var X=function t(e){function r(t,r,n,i,a){if((o=t._squarify)&&o.ratio===e)for(var o,s,l,c,u,f=-1,h=o.length,p=t.value;++f1?e:1)},r}(G);t.cluster=function(){var t=e,i=1,a=1,o=!1;function s(e){var s,l=0;e.eachAfter((function(e){var i=e.children;i?(e.x=function(t){return t.reduce(r,0)/t.length}(i),e.y=function(t){return 1+t.reduce(n,0)}(i)):(e.x=s?l+=t(e,s):0,e.y=0,s=e)}));var c=function(t){for(var e;e=t.children;)t=e[0];return t}(e),u=function(t){for(var e;e=t.children;)t=e[e.length-1];return t}(e),f=c.x-t(c,u)/2,h=u.x+t(u,c)/2;return e.eachAfter(o?function(t){t.x=(t.x-e.x)*i,t.y=(e.y-t.y)*a}:function(t){t.x=(t.x-f)/(h-f)*i,t.y=(1-(e.y?t.y/e.y:1))*a})}return s.separation=function(e){return arguments.length?(t=e,s):t},s.size=function(t){return arguments.length?(o=!1,i=+t[0],a=+t[1],s):o?null:[i,a]},s.nodeSize=function(t){return arguments.length?(o=!0,i=+t[0],a=+t[1],s):o?[i,a]:null},s},t.hierarchy=a,t.pack=function(){var t=null,e=1,r=1,n=M;function i(i){return i.x=e/2,i.y=r/2,t?i.eachBefore(L(t)).eachAfter(C(n,.5)).eachBefore(P(1)):i.eachBefore(L(E)).eachAfter(C(M,1)).eachAfter(C(n,i.r/Math.min(e,r))).eachBefore(P(Math.min(e,r)/(2*i.r))),i}return i.radius=function(e){return arguments.length?(t=k(e),i):t},i.size=function(t){return arguments.length?(e=+t[0],r=+t[1],i):[e,r]},i.padding=function(t){return arguments.length?(n=\"function\"==typeof t?t:S(+t),i):n},i},t.packEnclose=f,t.packSiblings=function(t){return T(t),t},t.partition=function(){var t=1,e=1,r=0,n=!1;function i(i){var a=i.height+1;return i.x0=i.y0=r,i.x1=t,i.y1=e/a,i.eachBefore(function(t,e){return function(n){n.children&&O(n,n.x0,t*(n.depth+1)/e,n.x1,t*(n.depth+2)/e);var i=n.x0,a=n.y0,o=n.x1-r,s=n.y1-r;o0)throw new Error(\"cycle\");return a}return r.id=function(e){return arguments.length?(t=A(e),r):t},r.parentId=function(t){return arguments.length?(e=A(t),r):e},r},t.tree=function(){var t=B,e=1,r=1,n=null;function i(i){var l=function(t){for(var e,r,n,i,a,o=new H(t,0),s=[o];e=s.pop();)if(n=e._.children)for(e.children=new Array(a=n.length),i=a-1;i>=0;--i)s.push(r=e.children[i]=new H(n[i],i)),r.parent=e;return(o.parent=new H(null,0)).children=[o],o}(i);if(l.eachAfter(a),l.parent.m=-l.z,l.eachBefore(o),n)i.eachBefore(s);else{var c=i,u=i,f=i;i.eachBefore((function(t){t.xu.x&&(u=t),t.depth>f.depth&&(f=t)}));var h=c===u?1:t(c,u)/2,p=h-c.x,d=e/(u.x+h+p),g=r/(f.depth||1);i.eachBefore((function(t){t.x=(t.x+p)*d,t.y=t.depth*g}))}return i}function a(e){var r=e.children,n=e.parent.children,i=e.i?n[e.i-1]:null;if(r){!function(t){for(var e,r=0,n=0,i=t.children,a=i.length;--a>=0;)(e=i[a]).z+=r,e.m+=r,r+=e.s+(n+=e.c)}(e);var a=(r[0].z+r[r.length-1].z)/2;i?(e.z=i.z+t(e._,i._),e.m=e.z-a):e.z=a}else i&&(e.z=i.z+t(e._,i._));e.parent.A=function(e,r,n){if(r){for(var i,a=e,o=e,s=r,l=a.parent.children[0],c=a.m,u=o.m,f=s.m,h=l.m;s=j(s),a=N(a),s&&a;)l=N(l),(o=j(o)).a=e,(i=s.z+f-a.z-c+t(s._,a._))>0&&(U(V(s,e,n),e,i),c+=i,u+=i),f+=s.m,c+=a.m,h+=l.m,u+=o.m;s&&!j(o)&&(o.t=s,o.m+=f-u),a&&!N(l)&&(l.t=a,l.m+=c-h,n=e)}return n}(e,i,e.parent.A||n[0])}function o(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function s(t){t.x*=e,t.y=t.depth*r}return i.separation=function(e){return arguments.length?(t=e,i):t},i.size=function(t){return arguments.length?(n=!1,e=+t[0],r=+t[1],i):n?null:[e,r]},i.nodeSize=function(t){return arguments.length?(n=!0,e=+t[0],r=+t[1],i):n?[e,r]:null},i},t.treemap=function(){var t=W,e=!1,r=1,n=1,i=[0],a=M,o=M,s=M,l=M,c=M;function u(t){return t.x0=t.y0=0,t.x1=r,t.y1=n,t.eachBefore(f),i=[0],e&&t.eachBefore(I),t}function f(e){var r=i[e.depth],n=e.x0+r,u=e.y0+r,f=e.x1-r,h=e.y1-r;f=r-1){var u=s[e];return u.x0=i,u.y0=a,u.x1=o,void(u.y1=l)}var f=c[e],h=n/2+f,p=e+1,d=r-1;for(;p>>1;c[g]l-a){var y=(i*v+o*m)/n;t(e,p,m,i,a,y,l),t(p,r,v,y,a,o,l)}else{var x=(a*v+l*m)/n;t(e,p,m,i,a,o,x),t(p,r,v,i,x,o,l)}}(0,l,t.value,e,r,n,i)},t.treemapDice=O,t.treemapResquarify=X,t.treemapSlice=q,t.treemapSliceDice=function(t,e,r,n,i){(1&t.depth?q:O)(t,e,r,n,i)},t.treemapSquarify=W,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{}],116:[function(t,e,r){!function(n,i){\"object\"==typeof r&&void 0!==e?i(r,t(\"d3-color\")):i((n=n||self).d3=n.d3||{},n.d3)}(this,(function(t,e){\"use strict\";function r(t,e,r,n,i){var a=t*t,o=a*t;return((1-3*t+3*a-o)*e+(4-6*a+3*o)*r+(1+3*t+3*a-3*o)*n+o*i)/6}function n(t){var e=t.length-1;return function(n){var i=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),a=t[i],o=t[i+1],s=i>0?t[i-1]:2*a-o,l=i180||r<-180?r-360*Math.round(r/360):r):a(isNaN(t)?e:t)}function l(t){return 1==(t=+t)?c:function(e,r){return r-e?function(t,e,r){return t=Math.pow(t,r),e=Math.pow(e,r)-t,r=1/r,function(n){return Math.pow(t+n*e,r)}}(e,r,t):a(isNaN(e)?r:e)}}function c(t,e){var r=e-t;return r?o(t,r):a(isNaN(t)?e:t)}var u=function t(r){var n=l(r);function i(t,r){var i=n((t=e.rgb(t)).r,(r=e.rgb(r)).r),a=n(t.g,r.g),o=n(t.b,r.b),s=c(t.opacity,r.opacity);return function(e){return t.r=i(e),t.g=a(e),t.b=o(e),t.opacity=s(e),t+\"\"}}return i.gamma=t,i}(1);function f(t){return function(r){var n,i,a=r.length,o=new Array(a),s=new Array(a),l=new Array(a);for(n=0;na&&(i=e.slice(a,i),s[o]?s[o]+=i:s[++o]=i),(r=r[0])===(n=n[0])?s[o]?s[o]+=n:s[++o]=n:(s[++o]=null,l.push({i:o,x:y(r,n)})),a=_.lastIndex;return a180?e+=360:e-t>180&&(t+=360),a.push({i:r.push(i(r)+\"rotate(\",null,n)-2,x:y(t,e)})):e&&r.push(i(r)+\"rotate(\"+e+n)}(a.rotate,o.rotate,s,l),function(t,e,r,a){t!==e?a.push({i:r.push(i(r)+\"skewX(\",null,n)-2,x:y(t,e)}):e&&r.push(i(r)+\"skewX(\"+e+n)}(a.skewX,o.skewX,s,l),function(t,e,r,n,a,o){if(t!==r||e!==n){var s=a.push(i(a)+\"scale(\",null,\",\",null,\")\");o.push({i:s-4,x:y(t,r)},{i:s-2,x:y(e,n)})}else 1===r&&1===n||a.push(i(a)+\"scale(\"+r+\",\"+n+\")\")}(a.scaleX,a.scaleY,o.scaleX,o.scaleY,s,l),a=o=null,function(t){for(var e,r=-1,n=l.length;++r1e-6)if(Math.abs(f*l-c*u)>1e-6&&a){var p=n-o,d=i-s,g=l*l+c*c,m=p*p+d*d,v=Math.sqrt(g),y=Math.sqrt(h),x=a*Math.tan((e-Math.acos((g+h-m)/(2*v*y)))/2),b=x/y,_=x/v;Math.abs(b-1)>1e-6&&(this._+=\"L\"+(t+b*u)+\",\"+(r+b*f)),this._+=\"A\"+a+\",\"+a+\",0,0,\"+ +(f*p>u*d)+\",\"+(this._x1=t+_*l)+\",\"+(this._y1=r+_*c)}else this._+=\"L\"+(this._x1=t)+\",\"+(this._y1=r);else;},arc:function(t,i,a,o,s,l){t=+t,i=+i,l=!!l;var c=(a=+a)*Math.cos(o),u=a*Math.sin(o),f=t+c,h=i+u,p=1^l,d=l?o-s:s-o;if(a<0)throw new Error(\"negative radius: \"+a);null===this._x1?this._+=\"M\"+f+\",\"+h:(Math.abs(this._x1-f)>1e-6||Math.abs(this._y1-h)>1e-6)&&(this._+=\"L\"+f+\",\"+h),a&&(d<0&&(d=d%r+r),d>n?this._+=\"A\"+a+\",\"+a+\",0,1,\"+p+\",\"+(t-c)+\",\"+(i-u)+\"A\"+a+\",\"+a+\",0,1,\"+p+\",\"+(this._x1=f)+\",\"+(this._y1=h):d>1e-6&&(this._+=\"A\"+a+\",\"+a+\",0,\"+ +(d>=e)+\",\"+p+\",\"+(this._x1=t+a*Math.cos(s))+\",\"+(this._y1=i+a*Math.sin(s))))},rect:function(t,e,r,n){this._+=\"M\"+(this._x0=this._x1=+t)+\",\"+(this._y0=this._y1=+e)+\"h\"+ +r+\"v\"+ +n+\"h\"+-r+\"Z\"},toString:function(){return this._}},t.path=a,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{}],118:[function(t,e,r){!function(t,n){\"object\"==typeof r&&void 0!==e?n(r):n((t=t||self).d3=t.d3||{})}(this,(function(t){\"use strict\";function e(t,e,r,n){if(isNaN(e)||isNaN(r))return t;var i,a,o,s,l,c,u,f,h,p=t._root,d={data:n},g=t._x0,m=t._y0,v=t._x1,y=t._y1;if(!p)return t._root=d,t;for(;p.length;)if((c=e>=(a=(g+v)/2))?g=a:v=a,(u=r>=(o=(m+y)/2))?m=o:y=o,i=p,!(p=p[f=u<<1|c]))return i[f]=d,t;if(s=+t._x.call(null,p.data),l=+t._y.call(null,p.data),e===s&&r===l)return d.next=p,i?i[f]=d:t._root=d,t;do{i=i?i[f]=new Array(4):t._root=new Array(4),(c=e>=(a=(g+v)/2))?g=a:v=a,(u=r>=(o=(m+y)/2))?m=o:y=o}while((f=u<<1|c)==(h=(l>=o)<<1|s>=a));return i[h]=p,i[f]=d,t}function r(t,e,r,n,i){this.node=t,this.x0=e,this.y0=r,this.x1=n,this.y1=i}function n(t){return t[0]}function i(t){return t[1]}function a(t,e,r){var a=new o(null==e?n:e,null==r?i:r,NaN,NaN,NaN,NaN);return null==t?a:a.addAll(t)}function o(t,e,r,n,i,a){this._x=t,this._y=e,this._x0=r,this._y0=n,this._x1=i,this._y1=a,this._root=void 0}function s(t){for(var e={data:t.data},r=e;t=t.next;)r=r.next={data:t.data};return e}var l=a.prototype=o.prototype;l.copy=function(){var t,e,r=new o(this._x,this._y,this._x0,this._y0,this._x1,this._y1),n=this._root;if(!n)return r;if(!n.length)return r._root=s(n),r;for(t=[{source:n,target:r._root=new Array(4)}];n=t.pop();)for(var i=0;i<4;++i)(e=n.source[i])&&(e.length?t.push({source:e,target:n.target[i]=new Array(4)}):n.target[i]=s(e));return r},l.add=function(t){var r=+this._x.call(null,t),n=+this._y.call(null,t);return e(this.cover(r,n),r,n,t)},l.addAll=function(t){var r,n,i,a,o=t.length,s=new Array(o),l=new Array(o),c=1/0,u=1/0,f=-1/0,h=-1/0;for(n=0;nf&&(f=i),ah&&(h=a));if(c>f||u>h)return this;for(this.cover(c,u).cover(f,h),n=0;nt||t>=i||n>e||e>=a;)switch(s=(ep||(o=c.y0)>d||(s=c.x1)=y)<<1|t>=v)&&(c=g[g.length-1],g[g.length-1]=g[g.length-1-u],g[g.length-1-u]=c)}else{var x=t-+this._x.call(null,m.data),b=e-+this._y.call(null,m.data),_=x*x+b*b;if(_=(s=(d+m)/2))?d=s:m=s,(u=o>=(l=(g+v)/2))?g=l:v=l,e=p,!(p=p[f=u<<1|c]))return this;if(!p.length)break;(e[f+1&3]||e[f+2&3]||e[f+3&3])&&(r=e,h=f)}for(;p.data!==t;)if(n=p,!(p=p.next))return this;return(i=p.next)&&delete p.next,n?(i?n.next=i:delete n.next,this):e?(i?e[f]=i:delete e[f],(p=e[0]||e[1]||e[2]||e[3])&&p===(e[3]||e[2]||e[1]||e[0])&&!p.length&&(r?r[h]=p:this._root=p),this):(this._root=i,this)},l.removeAll=function(t){for(var e=0,r=t.length;e1?0:t<-1?u:Math.acos(t)}function d(t){return t>=1?f:t<=-1?-f:Math.asin(t)}function g(t){return t.innerRadius}function m(t){return t.outerRadius}function v(t){return t.startAngle}function y(t){return t.endAngle}function x(t){return t&&t.padAngle}function b(t,e,r,n,i,a,o,s){var l=r-t,c=n-e,u=o-i,f=s-a,h=f*l-u*c;if(!(h*h<1e-12))return[t+(h=(u*(e-a)-f*(t-i))/h)*l,e+h*c]}function _(t,e,r,n,i,a,s){var l=t-r,u=e-n,f=(s?a:-a)/c(l*l+u*u),h=f*u,p=-f*l,d=t+h,g=e+p,m=r+h,v=n+p,y=(d+m)/2,x=(g+v)/2,b=m-d,_=v-g,w=b*b+_*_,T=i-a,k=d*v-m*g,A=(_<0?-1:1)*c(o(0,T*T*w-k*k)),M=(k*_-b*A)/w,S=(-k*b-_*A)/w,E=(k*_+b*A)/w,L=(-k*b+_*A)/w,C=M-y,P=S-x,I=E-y,O=L-x;return C*C+P*P>I*I+O*O&&(M=E,S=L),{cx:M,cy:S,x01:-h,y01:-p,x11:M*(i/T-1),y11:S*(i/T-1)}}function w(t){this._context=t}function T(t){return new w(t)}function k(t){return t[0]}function A(t){return t[1]}function M(){var t=k,n=A,i=r(!0),a=null,o=T,s=null;function l(r){var l,c,u,f=r.length,h=!1;for(null==a&&(s=o(u=e.path())),l=0;l<=f;++l)!(l=f;--h)c.point(v[h],y[h]);c.lineEnd(),c.areaEnd()}m&&(v[u]=+t(p,u,r),y[u]=+i(p,u,r),c.point(n?+n(p,u,r):v[u],a?+a(p,u,r):y[u]))}if(d)return c=null,d+\"\"||null}function f(){return M().defined(o).curve(l).context(s)}return u.x=function(e){return arguments.length?(t=\"function\"==typeof e?e:r(+e),n=null,u):t},u.x0=function(e){return arguments.length?(t=\"function\"==typeof e?e:r(+e),u):t},u.x1=function(t){return arguments.length?(n=null==t?null:\"function\"==typeof t?t:r(+t),u):n},u.y=function(t){return arguments.length?(i=\"function\"==typeof t?t:r(+t),a=null,u):i},u.y0=function(t){return arguments.length?(i=\"function\"==typeof t?t:r(+t),u):i},u.y1=function(t){return arguments.length?(a=null==t?null:\"function\"==typeof t?t:r(+t),u):a},u.lineX0=u.lineY0=function(){return f().x(t).y(i)},u.lineY1=function(){return f().x(t).y(a)},u.lineX1=function(){return f().x(n).y(i)},u.defined=function(t){return arguments.length?(o=\"function\"==typeof t?t:r(!!t),u):o},u.curve=function(t){return arguments.length?(l=t,null!=s&&(c=l(s)),u):l},u.context=function(t){return arguments.length?(null==t?s=c=null:c=l(s=t),u):s},u}function E(t,e){return et?1:e>=t?0:NaN}function L(t){return t}w.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e)}}};var C=I(T);function P(t){this._curve=t}function I(t){function e(e){return new P(t(e))}return e._curve=t,e}function O(t){var e=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?e(I(t)):e()._curve},t}function z(){return O(M().curve(C))}function D(){var t=S().curve(C),e=t.curve,r=t.lineX0,n=t.lineX1,i=t.lineY0,a=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return O(r())},delete t.lineX0,t.lineEndAngle=function(){return O(n())},delete t.lineX1,t.lineInnerRadius=function(){return O(i())},delete t.lineY0,t.lineOuterRadius=function(){return O(a())},delete t.lineY1,t.curve=function(t){return arguments.length?e(I(t)):e()._curve},t}function R(t,e){return[(e=+e)*Math.cos(t-=Math.PI/2),e*Math.sin(t)]}P.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,e){this._curve.point(e*Math.sin(t),e*-Math.cos(t))}};var F=Array.prototype.slice;function B(t){return t.source}function N(t){return t.target}function j(t){var n=B,i=N,a=k,o=A,s=null;function l(){var r,l=F.call(arguments),c=n.apply(this,l),u=i.apply(this,l);if(s||(s=r=e.path()),t(s,+a.apply(this,(l[0]=c,l)),+o.apply(this,l),+a.apply(this,(l[0]=u,l)),+o.apply(this,l)),r)return s=null,r+\"\"||null}return l.source=function(t){return arguments.length?(n=t,l):n},l.target=function(t){return arguments.length?(i=t,l):i},l.x=function(t){return arguments.length?(a=\"function\"==typeof t?t:r(+t),l):a},l.y=function(t){return arguments.length?(o=\"function\"==typeof t?t:r(+t),l):o},l.context=function(t){return arguments.length?(s=null==t?null:t,l):s},l}function U(t,e,r,n,i){t.moveTo(e,r),t.bezierCurveTo(e=(e+n)/2,r,e,i,n,i)}function V(t,e,r,n,i){t.moveTo(e,r),t.bezierCurveTo(e,r=(r+i)/2,n,r,n,i)}function H(t,e,r,n,i){var a=R(e,r),o=R(e,r=(r+i)/2),s=R(n,r),l=R(n,i);t.moveTo(a[0],a[1]),t.bezierCurveTo(o[0],o[1],s[0],s[1],l[0],l[1])}var q={draw:function(t,e){var r=Math.sqrt(e/u);t.moveTo(r,0),t.arc(0,0,r,0,h)}},G={draw:function(t,e){var r=Math.sqrt(e/5)/2;t.moveTo(-3*r,-r),t.lineTo(-r,-r),t.lineTo(-r,-3*r),t.lineTo(r,-3*r),t.lineTo(r,-r),t.lineTo(3*r,-r),t.lineTo(3*r,r),t.lineTo(r,r),t.lineTo(r,3*r),t.lineTo(-r,3*r),t.lineTo(-r,r),t.lineTo(-3*r,r),t.closePath()}},Y=Math.sqrt(1/3),W=2*Y,X={draw:function(t,e){var r=Math.sqrt(e/W),n=r*Y;t.moveTo(0,-r),t.lineTo(n,0),t.lineTo(0,r),t.lineTo(-n,0),t.closePath()}},Z=Math.sin(u/10)/Math.sin(7*u/10),J=Math.sin(h/10)*Z,K=-Math.cos(h/10)*Z,Q={draw:function(t,e){var r=Math.sqrt(.8908130915292852*e),n=J*r,i=K*r;t.moveTo(0,-r),t.lineTo(n,i);for(var a=1;a<5;++a){var o=h*a/5,s=Math.cos(o),l=Math.sin(o);t.lineTo(l*r,-s*r),t.lineTo(s*n-l*i,l*n+s*i)}t.closePath()}},$={draw:function(t,e){var r=Math.sqrt(e),n=-r/2;t.rect(n,n,r,r)}},tt=Math.sqrt(3),et={draw:function(t,e){var r=-Math.sqrt(e/(3*tt));t.moveTo(0,2*r),t.lineTo(-tt*r,-r),t.lineTo(tt*r,-r),t.closePath()}},rt=-.5,nt=Math.sqrt(3)/2,it=1/Math.sqrt(12),at=3*(it/2+1),ot={draw:function(t,e){var r=Math.sqrt(e/at),n=r/2,i=r*it,a=n,o=r*it+r,s=-a,l=o;t.moveTo(n,i),t.lineTo(a,o),t.lineTo(s,l),t.lineTo(rt*n-nt*i,nt*n+rt*i),t.lineTo(rt*a-nt*o,nt*a+rt*o),t.lineTo(rt*s-nt*l,nt*s+rt*l),t.lineTo(rt*n+nt*i,rt*i-nt*n),t.lineTo(rt*a+nt*o,rt*o-nt*a),t.lineTo(rt*s+nt*l,rt*l-nt*s),t.closePath()}},st=[q,G,X,$,Q,et,ot];function lt(){}function ct(t,e,r){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+r)/6)}function ut(t){this._context=t}function ft(t){this._context=t}function ht(t){this._context=t}function pt(t,e){this._basis=new ut(t),this._beta=e}ut.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:ct(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:ct(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},ft.prototype={areaStart:lt,areaEnd:lt,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:ct(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},ht.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+t)/6,n=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(r,n):this._context.moveTo(r,n);break;case 3:this._point=4;default:ct(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},pt.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,r=t.length-1;if(r>0)for(var n,i=t[0],a=e[0],o=t[r]-i,s=e[r]-a,l=-1;++l<=r;)n=l/r,this._basis.point(this._beta*t[l]+(1-this._beta)*(i+n*o),this._beta*e[l]+(1-this._beta)*(a+n*s));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};var dt=function t(e){function r(t){return 1===e?new ut(t):new pt(t,e)}return r.beta=function(e){return t(+e)},r}(.85);function gt(t,e,r){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-r),t._x2,t._y2)}function mt(t,e){this._context=t,this._k=(1-e)/6}mt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:gt(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:gt(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var vt=function t(e){function r(t){return new mt(t,e)}return r.tension=function(e){return t(+e)},r}(0);function yt(t,e){this._context=t,this._k=(1-e)/6}yt.prototype={areaStart:lt,areaEnd:lt,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:gt(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var xt=function t(e){function r(t){return new yt(t,e)}return r.tension=function(e){return t(+e)},r}(0);function bt(t,e){this._context=t,this._k=(1-e)/6}bt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:gt(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var _t=function t(e){function r(t){return new bt(t,e)}return r.tension=function(e){return t(+e)},r}(0);function wt(t,e,r){var n=t._x1,i=t._y1,a=t._x2,o=t._y2;if(t._l01_a>1e-12){var s=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,l=3*t._l01_a*(t._l01_a+t._l12_a);n=(n*s-t._x0*t._l12_2a+t._x2*t._l01_2a)/l,i=(i*s-t._y0*t._l12_2a+t._y2*t._l01_2a)/l}if(t._l23_a>1e-12){var c=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,u=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*c+t._x1*t._l23_2a-e*t._l12_2a)/u,o=(o*c+t._y1*t._l23_2a-r*t._l12_2a)/u}t._context.bezierCurveTo(n,i,a,o,t._x2,t._y2)}function Tt(t,e){this._context=t,this._alpha=e}Tt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:wt(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var kt=function t(e){function r(t){return e?new Tt(t,e):new mt(t,0)}return r.alpha=function(e){return t(+e)},r}(.5);function At(t,e){this._context=t,this._alpha=e}At.prototype={areaStart:lt,areaEnd:lt,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:wt(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Mt=function t(e){function r(t){return e?new At(t,e):new yt(t,0)}return r.alpha=function(e){return t(+e)},r}(.5);function St(t,e){this._context=t,this._alpha=e}St.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:wt(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Et=function t(e){function r(t){return e?new St(t,e):new bt(t,0)}return r.alpha=function(e){return t(+e)},r}(.5);function Lt(t){this._context=t}function Ct(t){return t<0?-1:1}function Pt(t,e,r){var n=t._x1-t._x0,i=e-t._x1,a=(t._y1-t._y0)/(n||i<0&&-0),o=(r-t._y1)/(i||n<0&&-0),s=(a*i+o*n)/(n+i);return(Ct(a)+Ct(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(s))||0}function It(t,e){var r=t._x1-t._x0;return r?(3*(t._y1-t._y0)/r-e)/2:e}function Ot(t,e,r){var n=t._x0,i=t._y0,a=t._x1,o=t._y1,s=(a-n)/3;t._context.bezierCurveTo(n+s,i+s*e,a-s,o-s*r,a,o)}function zt(t){this._context=t}function Dt(t){this._context=new Rt(t)}function Rt(t){this._context=t}function Ft(t){this._context=t}function Bt(t){var e,r,n=t.length-1,i=new Array(n),a=new Array(n),o=new Array(n);for(i[0]=0,a[0]=2,o[0]=t[0]+2*t[1],e=1;e=0;--e)i[e]=(o[e]-i[e+1])/a[e];for(a[n-1]=(t[n]+i[n-1])/2,e=0;e1)for(var r,n,i,a=1,o=t[e[0]],s=o.length;a=0;)r[e]=e;return r}function Vt(t,e){return t[e]}function Ht(t){var e=t.map(qt);return Ut(t).sort((function(t,r){return e[t]-e[r]}))}function qt(t){for(var e,r=-1,n=0,i=t.length,a=-1/0;++ra&&(a=e,n=r);return n}function Gt(t){var e=t.map(Yt);return Ut(t).sort((function(t,r){return e[t]-e[r]}))}function Yt(t){for(var e,r=0,n=-1,i=t.length;++n=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var r=this._x*(1-this._t)+t*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,e)}}this._x=t,this._y=e}},t.arc=function(){var t=g,o=m,w=r(0),T=null,k=v,A=y,M=x,S=null;function E(){var r,g,m=+t.apply(this,arguments),v=+o.apply(this,arguments),y=k.apply(this,arguments)-f,x=A.apply(this,arguments)-f,E=n(x-y),L=x>y;if(S||(S=r=e.path()),v1e-12)if(E>h-1e-12)S.moveTo(v*a(y),v*l(y)),S.arc(0,0,v,y,x,!L),m>1e-12&&(S.moveTo(m*a(x),m*l(x)),S.arc(0,0,m,x,y,L));else{var C,P,I=y,O=x,z=y,D=x,R=E,F=E,B=M.apply(this,arguments)/2,N=B>1e-12&&(T?+T.apply(this,arguments):c(m*m+v*v)),j=s(n(v-m)/2,+w.apply(this,arguments)),U=j,V=j;if(N>1e-12){var H=d(N/m*l(B)),q=d(N/v*l(B));(R-=2*H)>1e-12?(z+=H*=L?1:-1,D-=H):(R=0,z=D=(y+x)/2),(F-=2*q)>1e-12?(I+=q*=L?1:-1,O-=q):(F=0,I=O=(y+x)/2)}var G=v*a(I),Y=v*l(I),W=m*a(D),X=m*l(D);if(j>1e-12){var Z,J=v*a(O),K=v*l(O),Q=m*a(z),$=m*l(z);if(E1e-12?V>1e-12?(C=_(Q,$,G,Y,v,V,L),P=_(J,K,W,X,v,V,L),S.moveTo(C.cx+C.x01,C.cy+C.y01),V1e-12&&R>1e-12?U>1e-12?(C=_(W,X,J,K,m,-U,L),P=_(G,Y,Q,$,m,-U,L),S.lineTo(C.cx+C.x01,C.cy+C.y01),U0&&(d+=f);for(null!=e?g.sort((function(t,r){return e(m[t],m[r])})):null!=n&&g.sort((function(t,e){return n(r[t],r[e])})),s=0,c=d?(y-p*b)/d:0;s0?f*c:0)+b,m[l]={data:r[l],index:s,value:f,startAngle:v,endAngle:u,padAngle:x};return m}return s.value=function(e){return arguments.length?(t=\"function\"==typeof e?e:r(+e),s):t},s.sortValues=function(t){return arguments.length?(e=t,n=null,s):e},s.sort=function(t){return arguments.length?(n=t,e=null,s):n},s.startAngle=function(t){return arguments.length?(i=\"function\"==typeof t?t:r(+t),s):i},s.endAngle=function(t){return arguments.length?(a=\"function\"==typeof t?t:r(+t),s):a},s.padAngle=function(t){return arguments.length?(o=\"function\"==typeof t?t:r(+t),s):o},s},t.pointRadial=R,t.radialArea=D,t.radialLine=z,t.stack=function(){var t=r([]),e=Ut,n=jt,i=Vt;function a(r){var a,o,s=t.apply(this,arguments),l=r.length,c=s.length,u=new Array(c);for(a=0;a0)for(var r,n,i,a,o,s,l=0,c=t[e[0]].length;l0?(n[0]=a,n[1]=a+=i):i<0?(n[1]=o,n[0]=o+=i):(n[0]=0,n[1]=i)},t.stackOffsetExpand=function(t,e){if((n=t.length)>0){for(var r,n,i,a=0,o=t[0].length;a0){for(var r,n=0,i=t[e[0]],a=i.length;n0&&(n=(r=t[e[0]]).length)>0){for(var r,n,i,a=0,o=1;o=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:mt,s:vt,S:H,u:q,U:G,V:Y,w:W,W:X,x:null,X:null,y:Z,Y:J,Z:K,\"%\":gt},Ct={a:function(t){return f[t.getUTCDay()]},A:function(t){return u[t.getUTCDay()]},b:function(t){return yt[t.getUTCMonth()]},B:function(t){return h[t.getUTCMonth()]},c:null,d:Q,e:Q,f:nt,H:$,I:tt,j:et,L:rt,m:it,M:at,p:function(t){return c[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:mt,s:vt,S:ot,u:st,U:lt,V:ct,w:ut,W:ft,x:null,X:null,y:ht,Y:pt,Z:dt,\"%\":gt},Pt={a:function(t,e,r){var n=Tt.exec(e.slice(r));return n?(t.w=kt[n[0].toLowerCase()],r+n[0].length):-1},A:function(t,e,r){var n=_t.exec(e.slice(r));return n?(t.w=wt[n[0].toLowerCase()],r+n[0].length):-1},b:function(t,e,r){var n=St.exec(e.slice(r));return n?(t.m=Et[n[0].toLowerCase()],r+n[0].length):-1},B:function(t,e,r){var n=At.exec(e.slice(r));return n?(t.m=Mt[n[0].toLowerCase()],r+n[0].length):-1},c:function(t,e,r){return zt(t,a,e,r)},d:A,e:A,f:P,H:S,I:S,j:M,L:C,m:k,M:E,p:function(t,e,r){var n=xt.exec(e.slice(r));return n?(t.p=bt[n[0].toLowerCase()],r+n[0].length):-1},q:T,Q:O,s:z,S:L,u:m,U:v,V:y,w:g,W:x,x:function(t,e,r){return zt(t,o,e,r)},X:function(t,e,r){return zt(t,l,e,r)},y:_,Y:b,Z:w,\"%\":I};function It(t,e){return function(r){var n,i,a,o=[],l=-1,c=0,u=t.length;for(r instanceof Date||(r=new Date(+r));++l53)return null;\"w\"in c||(c.w=1),\"Z\"in c?(l=(s=n(i(c.y,0,1))).getUTCDay(),s=l>4||0===l?e.utcMonday.ceil(s):e.utcMonday(s),s=e.utcDay.offset(s,7*(c.V-1)),c.y=s.getUTCFullYear(),c.m=s.getUTCMonth(),c.d=s.getUTCDate()+(c.w+6)%7):(l=(s=r(i(c.y,0,1))).getDay(),s=l>4||0===l?e.timeMonday.ceil(s):e.timeMonday(s),s=e.timeDay.offset(s,7*(c.V-1)),c.y=s.getFullYear(),c.m=s.getMonth(),c.d=s.getDate()+(c.w+6)%7)}else(\"W\"in c||\"U\"in c)&&(\"w\"in c||(c.w=\"u\"in c?c.u%7:\"W\"in c?1:0),l=\"Z\"in c?n(i(c.y,0,1)).getUTCDay():r(i(c.y,0,1)).getDay(),c.m=0,c.d=\"W\"in c?(c.w+6)%7+7*c.W-(l+5)%7:c.w+7*c.U-(l+6)%7);return\"Z\"in c?(c.H+=c.Z/100|0,c.M+=c.Z%100,n(c)):r(c)}}function zt(t,e,r,n){for(var i,a,o=0,l=e.length,c=r.length;o=c)return-1;if(37===(i=e.charCodeAt(o++))){if(i=e.charAt(o++),!(a=Pt[i in s?e.charAt(o++):i])||(n=a(t,r,n))<0)return-1}else if(i!=r.charCodeAt(n++))return-1}return n}return Lt.x=It(o,Lt),Lt.X=It(l,Lt),Lt.c=It(a,Lt),Ct.x=It(o,Ct),Ct.X=It(l,Ct),Ct.c=It(a,Ct),{format:function(t){var e=It(t+=\"\",Lt);return e.toString=function(){return t},e},parse:function(t){var e=Ot(t+=\"\",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=It(t+=\"\",Ct);return e.toString=function(){return t},e},utcParse:function(t){var e=Ot(t+=\"\",!0);return e.toString=function(){return t},e}}}var o,s={\"-\":\"\",_:\" \",0:\"0\"},l=/^\\s*\\d+/,c=/^%/,u=/[\\\\^$*+?|[\\]().{}]/g;function f(t,e,r){var n=t<0?\"-\":\"\",i=(n?-t:t)+\"\",a=i.length;return n+(a68?1900:2e3),r+n[0].length):-1}function w(t,e,r){var n=/^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(e.slice(r,r+6));return n?(t.Z=n[1]?0:-(n[2]+(n[3]||\"00\")),r+n[0].length):-1}function T(t,e,r){var n=l.exec(e.slice(r,r+1));return n?(t.q=3*n[0]-3,r+n[0].length):-1}function k(t,e,r){var n=l.exec(e.slice(r,r+2));return n?(t.m=n[0]-1,r+n[0].length):-1}function A(t,e,r){var n=l.exec(e.slice(r,r+2));return n?(t.d=+n[0],r+n[0].length):-1}function M(t,e,r){var n=l.exec(e.slice(r,r+3));return n?(t.m=0,t.d=+n[0],r+n[0].length):-1}function S(t,e,r){var n=l.exec(e.slice(r,r+2));return n?(t.H=+n[0],r+n[0].length):-1}function E(t,e,r){var n=l.exec(e.slice(r,r+2));return n?(t.M=+n[0],r+n[0].length):-1}function L(t,e,r){var n=l.exec(e.slice(r,r+2));return n?(t.S=+n[0],r+n[0].length):-1}function C(t,e,r){var n=l.exec(e.slice(r,r+3));return n?(t.L=+n[0],r+n[0].length):-1}function P(t,e,r){var n=l.exec(e.slice(r,r+6));return n?(t.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function I(t,e,r){var n=c.exec(e.slice(r,r+1));return n?r+n[0].length:-1}function O(t,e,r){var n=l.exec(e.slice(r));return n?(t.Q=+n[0],r+n[0].length):-1}function z(t,e,r){var n=l.exec(e.slice(r));return n?(t.s=+n[0],r+n[0].length):-1}function D(t,e){return f(t.getDate(),e,2)}function R(t,e){return f(t.getHours(),e,2)}function F(t,e){return f(t.getHours()%12||12,e,2)}function B(t,r){return f(1+e.timeDay.count(e.timeYear(t),t),r,3)}function N(t,e){return f(t.getMilliseconds(),e,3)}function j(t,e){return N(t,e)+\"000\"}function U(t,e){return f(t.getMonth()+1,e,2)}function V(t,e){return f(t.getMinutes(),e,2)}function H(t,e){return f(t.getSeconds(),e,2)}function q(t){var e=t.getDay();return 0===e?7:e}function G(t,r){return f(e.timeSunday.count(e.timeYear(t)-1,t),r,2)}function Y(t,r){var n=t.getDay();return t=n>=4||0===n?e.timeThursday(t):e.timeThursday.ceil(t),f(e.timeThursday.count(e.timeYear(t),t)+(4===e.timeYear(t).getDay()),r,2)}function W(t){return t.getDay()}function X(t,r){return f(e.timeMonday.count(e.timeYear(t)-1,t),r,2)}function Z(t,e){return f(t.getFullYear()%100,e,2)}function J(t,e){return f(t.getFullYear()%1e4,e,4)}function K(t){var e=t.getTimezoneOffset();return(e>0?\"-\":(e*=-1,\"+\"))+f(e/60|0,\"0\",2)+f(e%60,\"0\",2)}function Q(t,e){return f(t.getUTCDate(),e,2)}function $(t,e){return f(t.getUTCHours(),e,2)}function tt(t,e){return f(t.getUTCHours()%12||12,e,2)}function et(t,r){return f(1+e.utcDay.count(e.utcYear(t),t),r,3)}function rt(t,e){return f(t.getUTCMilliseconds(),e,3)}function nt(t,e){return rt(t,e)+\"000\"}function it(t,e){return f(t.getUTCMonth()+1,e,2)}function at(t,e){return f(t.getUTCMinutes(),e,2)}function ot(t,e){return f(t.getUTCSeconds(),e,2)}function st(t){var e=t.getUTCDay();return 0===e?7:e}function lt(t,r){return f(e.utcSunday.count(e.utcYear(t)-1,t),r,2)}function ct(t,r){var n=t.getUTCDay();return t=n>=4||0===n?e.utcThursday(t):e.utcThursday.ceil(t),f(e.utcThursday.count(e.utcYear(t),t)+(4===e.utcYear(t).getUTCDay()),r,2)}function ut(t){return t.getUTCDay()}function ft(t,r){return f(e.utcMonday.count(e.utcYear(t)-1,t),r,2)}function ht(t,e){return f(t.getUTCFullYear()%100,e,2)}function pt(t,e){return f(t.getUTCFullYear()%1e4,e,4)}function dt(){return\"+0000\"}function gt(){return\"%\"}function mt(t){return+t}function vt(t){return Math.floor(+t/1e3)}function yt(e){return o=a(e),t.timeFormat=o.format,t.timeParse=o.parse,t.utcFormat=o.utcFormat,t.utcParse=o.utcParse,o}yt({dateTime:\"%x, %X\",date:\"%-m/%-d/%Y\",time:\"%-I:%M:%S %p\",periods:[\"AM\",\"PM\"],days:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],shortDays:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],months:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],shortMonths:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"]});var xt=Date.prototype.toISOString?function(t){return t.toISOString()}:t.utcFormat(\"%Y-%m-%dT%H:%M:%S.%LZ\");var bt=+new Date(\"2000-01-01T00:00:00.000Z\")?function(t){var e=new Date(t);return isNaN(e)?null:e}:t.utcParse(\"%Y-%m-%dT%H:%M:%S.%LZ\");t.isoFormat=xt,t.isoParse=bt,t.timeFormatDefaultLocale=yt,t.timeFormatLocale=a,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{\"d3-time\":121}],121:[function(t,e,r){!function(t,n){\"object\"==typeof r&&void 0!==e?n(r):n((t=t||self).d3=t.d3||{})}(this,(function(t){\"use strict\";var e=new Date,r=new Date;function n(t,i,a,o){function s(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return s.floor=function(e){return t(e=new Date(+e)),e},s.ceil=function(e){return t(e=new Date(e-1)),i(e,1),t(e),e},s.round=function(t){var e=s(t),r=s.ceil(t);return t-e0))return o;do{o.push(a=new Date(+e)),i(e,n),t(e)}while(a=r)for(;t(r),!e(r);)r.setTime(r-1)}),(function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;i(t,-1),!e(t););else for(;--r>=0;)for(;i(t,1),!e(t););}))},a&&(s.count=function(n,i){return e.setTime(+n),r.setTime(+i),t(e),t(r),Math.floor(a(e,r))},s.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?s.filter(o?function(e){return o(e)%t==0}:function(e){return s.count(0,e)%t==0}):s:null}),s}var i=n((function(){}),(function(t,e){t.setTime(+t+e)}),(function(t,e){return e-t}));i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?n((function(e){e.setTime(Math.floor(e/t)*t)}),(function(e,r){e.setTime(+e+r*t)}),(function(e,r){return(r-e)/t})):i:null};var a=i.range,o=n((function(t){t.setTime(t-t.getMilliseconds())}),(function(t,e){t.setTime(+t+1e3*e)}),(function(t,e){return(e-t)/1e3}),(function(t){return t.getUTCSeconds()})),s=o.range,l=n((function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds())}),(function(t,e){t.setTime(+t+6e4*e)}),(function(t,e){return(e-t)/6e4}),(function(t){return t.getMinutes()})),c=l.range,u=n((function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds()-6e4*t.getMinutes())}),(function(t,e){t.setTime(+t+36e5*e)}),(function(t,e){return(e-t)/36e5}),(function(t){return t.getHours()})),f=u.range,h=n((function(t){t.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+e)}),(function(t,e){return(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/864e5}),(function(t){return t.getDate()-1})),p=h.range;function d(t){return n((function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+7*e)}),(function(t,e){return(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/6048e5}))}var g=d(0),m=d(1),v=d(2),y=d(3),x=d(4),b=d(5),_=d(6),w=g.range,T=m.range,k=v.range,A=y.range,M=x.range,S=b.range,E=_.range,L=n((function(t){t.setDate(1),t.setHours(0,0,0,0)}),(function(t,e){t.setMonth(t.getMonth()+e)}),(function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())}),(function(t){return t.getMonth()})),C=L.range,P=n((function(t){t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,e){t.setFullYear(t.getFullYear()+e)}),(function(t,e){return e.getFullYear()-t.getFullYear()}),(function(t){return t.getFullYear()}));P.every=function(t){return isFinite(t=Math.floor(t))&&t>0?n((function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),(function(e,r){e.setFullYear(e.getFullYear()+r*t)})):null};var I=P.range,O=n((function(t){t.setUTCSeconds(0,0)}),(function(t,e){t.setTime(+t+6e4*e)}),(function(t,e){return(e-t)/6e4}),(function(t){return t.getUTCMinutes()})),z=O.range,D=n((function(t){t.setUTCMinutes(0,0,0)}),(function(t,e){t.setTime(+t+36e5*e)}),(function(t,e){return(e-t)/36e5}),(function(t){return t.getUTCHours()})),R=D.range,F=n((function(t){t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+e)}),(function(t,e){return(e-t)/864e5}),(function(t){return t.getUTCDate()-1})),B=F.range;function N(t){return n((function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+7*e)}),(function(t,e){return(e-t)/6048e5}))}var j=N(0),U=N(1),V=N(2),H=N(3),q=N(4),G=N(5),Y=N(6),W=j.range,X=U.range,Z=V.range,J=H.range,K=q.range,Q=G.range,$=Y.range,tt=n((function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCMonth(t.getUTCMonth()+e)}),(function(t,e){return e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())}),(function(t){return t.getUTCMonth()})),et=tt.range,rt=n((function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)}),(function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()}),(function(t){return t.getUTCFullYear()}));rt.every=function(t){return isFinite(t=Math.floor(t))&&t>0?n((function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),(function(e,r){e.setUTCFullYear(e.getUTCFullYear()+r*t)})):null};var nt=rt.range;t.timeDay=h,t.timeDays=p,t.timeFriday=b,t.timeFridays=S,t.timeHour=u,t.timeHours=f,t.timeInterval=n,t.timeMillisecond=i,t.timeMilliseconds=a,t.timeMinute=l,t.timeMinutes=c,t.timeMonday=m,t.timeMondays=T,t.timeMonth=L,t.timeMonths=C,t.timeSaturday=_,t.timeSaturdays=E,t.timeSecond=o,t.timeSeconds=s,t.timeSunday=g,t.timeSundays=w,t.timeThursday=x,t.timeThursdays=M,t.timeTuesday=v,t.timeTuesdays=k,t.timeWednesday=y,t.timeWednesdays=A,t.timeWeek=g,t.timeWeeks=w,t.timeYear=P,t.timeYears=I,t.utcDay=F,t.utcDays=B,t.utcFriday=G,t.utcFridays=Q,t.utcHour=D,t.utcHours=R,t.utcMillisecond=i,t.utcMilliseconds=a,t.utcMinute=O,t.utcMinutes=z,t.utcMonday=U,t.utcMondays=X,t.utcMonth=tt,t.utcMonths=et,t.utcSaturday=Y,t.utcSaturdays=$,t.utcSecond=o,t.utcSeconds=s,t.utcSunday=j,t.utcSundays=W,t.utcThursday=q,t.utcThursdays=K,t.utcTuesday=V,t.utcTuesdays=Z,t.utcWednesday=H,t.utcWednesdays=J,t.utcWeek=j,t.utcWeeks=W,t.utcYear=rt,t.utcYears=nt,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{}],122:[function(t,e,r){arguments[4][121][0].apply(r,arguments)},{dup:121}],123:[function(t,e,r){!function(t,n){\"object\"==typeof r&&void 0!==e?n(r):n((t=t||self).d3=t.d3||{})}(this,(function(t){\"use strict\";var e,r,n=0,i=0,a=0,o=0,s=0,l=0,c=\"object\"==typeof performance&&performance.now?performance:Date,u=\"object\"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function f(){return s||(u(h),s=c.now()+l)}function h(){s=0}function p(){this._call=this._time=this._next=null}function d(t,e,r){var n=new p;return n.restart(t,e,r),n}function g(){f(),++n;for(var t,r=e;r;)(t=s-r._time)>=0&&r._call.call(null,t),r=r._next;--n}function m(){s=(o=c.now())+l,n=i=0;try{g()}finally{n=0,function(){var t,n,i=e,a=1/0;for(;i;)i._call?(a>i._time&&(a=i._time),t=i,i=i._next):(n=i._next,i._next=null,i=t?t._next=n:e=n);r=t,y(a)}(),s=0}}function v(){var t=c.now(),e=t-o;e>1e3&&(l-=e,o=t)}function y(t){n||(i&&(i=clearTimeout(i)),t-s>24?(t<1/0&&(i=setTimeout(m,t-c.now()-l)),a&&(a=clearInterval(a))):(a||(o=c.now(),a=setInterval(v,1e3)),n=1,u(m)))}p.prototype=d.prototype={constructor:p,restart:function(t,n,i){if(\"function\"!=typeof t)throw new TypeError(\"callback is not a function\");i=(null==i?f():+i)+(null==n?0:+n),this._next||r===this||(r?r._next=this:e=this,r=this),this._call=t,this._time=i,y()},stop:function(){this._call&&(this._call=null,this._time=1/0,y())}},t.interval=function(t,e,r){var n=new p,i=e;return null==e?(n.restart(t,e,r),n):(e=+e,r=null==r?f():+r,n.restart((function a(o){o+=i,n.restart(a,i+=e,r),t(o)}),e,r),n)},t.now=f,t.timeout=function(t,e,r){var n=new p;return e=null==e?0:+e,n.restart((function(r){n.stop(),t(r+e)}),e,r),n},t.timer=d,t.timerFlush=g,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{}],124:[function(t,e,r){e.exports=function(){for(var t=0;ts*l){var p=(h-f)/s;a[u]=1e3*p}}return a}function o(t){for(var e=[],r=t[0];r<=t[1];r++)for(var n=String.fromCharCode(r),i=t[0];i0)return function(t,e){var r,n;for(r=new Array(t),n=0;n80*r){n=l=t[0],s=c=t[1];for(var b=r;bl&&(l=u),p>c&&(c=p);d=0!==(d=Math.max(l-n,c-s))?1/d:0}return o(y,x,r,n,s,d),x}function i(t,e,r,n,i){var a,o;if(i===E(t,e,r,n)>0)for(a=e;a=e;a-=n)o=A(a,t[a],t[a+1],o);return o&&x(o,o.next)&&(M(o),o=o.next),o}function a(t,e){if(!t)return t;e||(e=t);var r,n=t;do{if(r=!1,n.steiner||!x(n,n.next)&&0!==y(n.prev,n,n.next))n=n.next;else{if(M(n),(n=e=n.prev)===n.next)break;r=!0}}while(r||n!==e);return e}function o(t,e,r,n,i,f,h){if(t){!h&&f&&function(t,e,r,n){var i=t;do{null===i.z&&(i.z=d(i.x,i.y,e,r,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next}while(i!==t);i.prevZ.nextZ=null,i.prevZ=null,function(t){var e,r,n,i,a,o,s,l,c=1;do{for(r=t,t=null,a=null,o=0;r;){for(o++,n=r,s=0,e=0;e0||l>0&&n;)0!==s&&(0===l||!n||r.z<=n.z)?(i=r,r=r.nextZ,s--):(i=n,n=n.nextZ,l--),a?a.nextZ=i:t=i,i.prevZ=a,a=i;r=n}a.nextZ=null,c*=2}while(o>1)}(i)}(t,n,i,f);for(var p,g,m=t;t.prev!==t.next;)if(p=t.prev,g=t.next,f?l(t,n,i,f):s(t))e.push(p.i/r),e.push(t.i/r),e.push(g.i/r),M(t),t=g.next,m=g.next;else if((t=g)===m){h?1===h?o(t=c(a(t),e,r),e,r,n,i,f,2):2===h&&u(t,e,r,n,i,f):o(a(t),e,r,n,i,f,1);break}}}function s(t){var e=t.prev,r=t,n=t.next;if(y(e,r,n)>=0)return!1;for(var i=t.next.next;i!==t.prev;){if(m(e.x,e.y,r.x,r.y,n.x,n.y,i.x,i.y)&&y(i.prev,i,i.next)>=0)return!1;i=i.next}return!0}function l(t,e,r,n){var i=t.prev,a=t,o=t.next;if(y(i,a,o)>=0)return!1;for(var s=i.xa.x?i.x>o.x?i.x:o.x:a.x>o.x?a.x:o.x,u=i.y>a.y?i.y>o.y?i.y:o.y:a.y>o.y?a.y:o.y,f=d(s,l,e,r,n),h=d(c,u,e,r,n),p=t.prevZ,g=t.nextZ;p&&p.z>=f&&g&&g.z<=h;){if(p!==t.prev&&p!==t.next&&m(i.x,i.y,a.x,a.y,o.x,o.y,p.x,p.y)&&y(p.prev,p,p.next)>=0)return!1;if(p=p.prevZ,g!==t.prev&&g!==t.next&&m(i.x,i.y,a.x,a.y,o.x,o.y,g.x,g.y)&&y(g.prev,g,g.next)>=0)return!1;g=g.nextZ}for(;p&&p.z>=f;){if(p!==t.prev&&p!==t.next&&m(i.x,i.y,a.x,a.y,o.x,o.y,p.x,p.y)&&y(p.prev,p,p.next)>=0)return!1;p=p.prevZ}for(;g&&g.z<=h;){if(g!==t.prev&&g!==t.next&&m(i.x,i.y,a.x,a.y,o.x,o.y,g.x,g.y)&&y(g.prev,g,g.next)>=0)return!1;g=g.nextZ}return!0}function c(t,e,r){var n=t;do{var i=n.prev,o=n.next.next;!x(i,o)&&b(i,n,n.next,o)&&T(i,o)&&T(o,i)&&(e.push(i.i/r),e.push(n.i/r),e.push(o.i/r),M(n),M(n.next),n=t=o),n=n.next}while(n!==t);return a(n)}function u(t,e,r,n,i,s){var l=t;do{for(var c=l.next.next;c!==l.prev;){if(l.i!==c.i&&v(l,c)){var u=k(l,c);return l=a(l,l.next),u=a(u,u.next),o(l,e,r,n,i,s),void o(u,e,r,n,i,s)}c=c.next}l=l.next}while(l!==t)}function f(t,e){return t.x-e.x}function h(t,e){if(e=function(t,e){var r,n=e,i=t.x,a=t.y,o=-1/0;do{if(a<=n.y&&a>=n.next.y&&n.next.y!==n.y){var s=n.x+(a-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(s<=i&&s>o){if(o=s,s===i){if(a===n.y)return n;if(a===n.next.y)return n.next}r=n.x=n.x&&n.x>=u&&i!==n.x&&m(ar.x||n.x===r.x&&p(r,n)))&&(r=n,h=l)),n=n.next}while(n!==c);return r}(t,e)){var r=k(e,t);a(e,e.next),a(r,r.next)}}function p(t,e){return y(t.prev,t,e.prev)<0&&y(e.next,t,t.next)<0}function d(t,e,r,n,i){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-r)*i)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-n)*i)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function g(t){var e=t,r=t;do{(e.x=0&&(t-o)*(n-s)-(r-o)*(e-s)>=0&&(r-o)*(a-s)-(i-o)*(n-s)>=0}function v(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){var r=t;do{if(r.i!==t.i&&r.next.i!==t.i&&r.i!==e.i&&r.next.i!==e.i&&b(r,r.next,t,e))return!0;r=r.next}while(r!==t);return!1}(t,e)&&(T(t,e)&&T(e,t)&&function(t,e){var r=t,n=!1,i=(t.x+e.x)/2,a=(t.y+e.y)/2;do{r.y>a!=r.next.y>a&&r.next.y!==r.y&&i<(r.next.x-r.x)*(a-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next}while(r!==t);return n}(t,e)&&(y(t.prev,t,e.prev)||y(t,e.prev,e))||x(t,e)&&y(t.prev,t,t.next)>0&&y(e.prev,e,e.next)>0)}function y(t,e,r){return(e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y)}function x(t,e){return t.x===e.x&&t.y===e.y}function b(t,e,r,n){var i=w(y(t,e,r)),a=w(y(t,e,n)),o=w(y(r,n,t)),s=w(y(r,n,e));return i!==a&&o!==s||(!(0!==i||!_(t,r,e))||(!(0!==a||!_(t,n,e))||(!(0!==o||!_(r,t,n))||!(0!==s||!_(r,e,n)))))}function _(t,e,r){return e.x<=Math.max(t.x,r.x)&&e.x>=Math.min(t.x,r.x)&&e.y<=Math.max(t.y,r.y)&&e.y>=Math.min(t.y,r.y)}function w(t){return t>0?1:t<0?-1:0}function T(t,e){return y(t.prev,t,t.next)<0?y(t,e,t.next)>=0&&y(t,t.prev,e)>=0:y(t,e,t.prev)<0||y(t,t.next,e)<0}function k(t,e){var r=new S(t.i,t.x,t.y),n=new S(e.i,e.x,e.y),i=t.next,a=e.prev;return t.next=e,e.prev=t,r.next=i,i.prev=r,n.next=r,r.prev=n,a.next=n,n.prev=a,n}function A(t,e,r,n){var i=new S(t,e,r);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function M(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function S(t,e,r){this.i=t,this.x=e,this.y=r,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function E(t,e,r,n){for(var i=0,a=e,o=r-n;a0&&(n+=t[i-1].length,r.holes.push(n))}return r}},{}],130:[function(t,e,r){var n=t(\"strongly-connected-components\");e.exports=function(t,e){var r,i=[],a=[],o=[],s={},l=[];function c(t){var e,n,i=!1;for(a.push(t),o[t]=!0,e=0;e=e}))}(e);for(var r,i=n(t).components.filter((function(t){return t.length>1})),a=1/0,o=0;o=55296&&y<=56319&&(w+=t[++r]),w=T?h.call(T,k,w,g):w,e?(p.value=w,d(m,g,p)):m[g]=w,++g;v=g}if(void 0===v)for(v=o(t.length),e&&(m=new e(v)),r=0;r0?1:-1}},{}],141:[function(t,e,r){\"use strict\";var n=t(\"../math/sign\"),i=Math.abs,a=Math.floor;e.exports=function(t){return isNaN(t)?0:0!==(t=Number(t))&&isFinite(t)?n(t)*a(i(t)):t}},{\"../math/sign\":138}],142:[function(t,e,r){\"use strict\";var n=t(\"./to-integer\"),i=Math.max;e.exports=function(t){return i(0,n(t))}},{\"./to-integer\":141}],143:[function(t,e,r){\"use strict\";var n=t(\"./valid-callable\"),i=t(\"./valid-value\"),a=Function.prototype.bind,o=Function.prototype.call,s=Object.keys,l=Object.prototype.propertyIsEnumerable;e.exports=function(t,e){return function(r,c){var u,f=arguments[2],h=arguments[3];return r=Object(i(r)),n(c),u=s(r),h&&u.sort(\"function\"==typeof h?a.call(h,r):void 0),\"function\"!=typeof t&&(t=u[t]),o.call(t,u,(function(t,n){return l.call(r,t)?o.call(c,f,r[t],t,r,n):e}))}}},{\"./valid-callable\":160,\"./valid-value\":162}],144:[function(t,e,r){\"use strict\";e.exports=t(\"./is-implemented\")()?Object.assign:t(\"./shim\")},{\"./is-implemented\":145,\"./shim\":146}],145:[function(t,e,r){\"use strict\";e.exports=function(){var t,e=Object.assign;return\"function\"==typeof e&&(e(t={foo:\"raz\"},{bar:\"dwa\"},{trzy:\"trzy\"}),t.foo+t.bar+t.trzy===\"razdwatrzy\")}},{}],146:[function(t,e,r){\"use strict\";var n=t(\"../keys\"),i=t(\"../valid-value\"),a=Math.max;e.exports=function(t,e){var r,o,s,l=a(arguments.length,2);for(t=Object(i(t)),s=function(n){try{t[n]=e[n]}catch(t){r||(r=t)}},o=1;o-1}},{}],166:[function(t,e,r){\"use strict\";var n=Object.prototype.toString,i=n.call(\"\");e.exports=function(t){return\"string\"==typeof t||t&&\"object\"==typeof t&&(t instanceof String||n.call(t)===i)||!1}},{}],167:[function(t,e,r){\"use strict\";var n=Object.create(null),i=Math.random;e.exports=function(){var t;do{t=i().toString(36).slice(2)}while(n[t]);return t}},{}],168:[function(t,e,r){\"use strict\";var n,i=t(\"es5-ext/object/set-prototype-of\"),a=t(\"es5-ext/string/#/contains\"),o=t(\"d\"),s=t(\"es6-symbol\"),l=t(\"./\"),c=Object.defineProperty;n=e.exports=function(t,e){if(!(this instanceof n))throw new TypeError(\"Constructor requires 'new'\");l.call(this,t),e=e?a.call(e,\"key+value\")?\"key+value\":a.call(e,\"key\")?\"key\":\"value\":\"value\",c(this,\"__kind__\",o(\"\",e))},i&&i(n,l),delete n.prototype.constructor,n.prototype=Object.create(l.prototype,{_resolve:o((function(t){return\"value\"===this.__kind__?this.__list__[t]:\"key+value\"===this.__kind__?[t,this.__list__[t]]:t}))}),c(n.prototype,s.toStringTag,o(\"c\",\"Array Iterator\"))},{\"./\":171,d:106,\"es5-ext/object/set-prototype-of\":157,\"es5-ext/string/#/contains\":163,\"es6-symbol\":175}],169:[function(t,e,r){\"use strict\";var n=t(\"es5-ext/function/is-arguments\"),i=t(\"es5-ext/object/valid-callable\"),a=t(\"es5-ext/string/is-string\"),o=t(\"./get\"),s=Array.isArray,l=Function.prototype.call,c=Array.prototype.some;e.exports=function(t,e){var r,u,f,h,p,d,g,m,v=arguments[2];if(s(t)||n(t)?r=\"array\":a(t)?r=\"string\":t=o(t),i(e),f=function(){h=!0},\"array\"!==r)if(\"string\"!==r)for(u=t.next();!u.done;){if(l.call(e,v,u.value,f),h)return;u=t.next()}else for(d=t.length,p=0;p=55296&&m<=56319&&(g+=t[++p]),l.call(e,v,g,f),!h);++p);else c.call(t,(function(t){return l.call(e,v,t,f),h}))}},{\"./get\":170,\"es5-ext/function/is-arguments\":135,\"es5-ext/object/valid-callable\":160,\"es5-ext/string/is-string\":166}],170:[function(t,e,r){\"use strict\";var n=t(\"es5-ext/function/is-arguments\"),i=t(\"es5-ext/string/is-string\"),a=t(\"./array\"),o=t(\"./string\"),s=t(\"./valid-iterable\"),l=t(\"es6-symbol\").iterator;e.exports=function(t){return\"function\"==typeof s(t)[l]?t[l]():n(t)?new a(t):i(t)?new o(t):new a(t)}},{\"./array\":168,\"./string\":173,\"./valid-iterable\":174,\"es5-ext/function/is-arguments\":135,\"es5-ext/string/is-string\":166,\"es6-symbol\":175}],171:[function(t,e,r){\"use strict\";var n,i=t(\"es5-ext/array/#/clear\"),a=t(\"es5-ext/object/assign\"),o=t(\"es5-ext/object/valid-callable\"),s=t(\"es5-ext/object/valid-value\"),l=t(\"d\"),c=t(\"d/auto-bind\"),u=t(\"es6-symbol\"),f=Object.defineProperty,h=Object.defineProperties;e.exports=n=function(t,e){if(!(this instanceof n))throw new TypeError(\"Constructor requires 'new'\");h(this,{__list__:l(\"w\",s(t)),__context__:l(\"w\",e),__nextIndex__:l(\"w\",0)}),e&&(o(e.on),e.on(\"_add\",this._onAdd),e.on(\"_delete\",this._onDelete),e.on(\"_clear\",this._onClear))},delete n.prototype.constructor,h(n.prototype,a({_next:l((function(){var t;if(this.__list__)return this.__redo__&&void 0!==(t=this.__redo__.shift())?t:this.__nextIndex__=this.__nextIndex__||(++this.__nextIndex__,this.__redo__?(this.__redo__.forEach((function(e,r){e>=t&&(this.__redo__[r]=++e)}),this),this.__redo__.push(t)):f(this,\"__redo__\",l(\"c\",[t])))})),_onDelete:l((function(t){var e;t>=this.__nextIndex__||(--this.__nextIndex__,this.__redo__&&(-1!==(e=this.__redo__.indexOf(t))&&this.__redo__.splice(e,1),this.__redo__.forEach((function(e,r){e>t&&(this.__redo__[r]=--e)}),this)))})),_onClear:l((function(){this.__redo__&&i.call(this.__redo__),this.__nextIndex__=0}))}))),f(n.prototype,u.iterator,l((function(){return this})))},{d:106,\"d/auto-bind\":105,\"es5-ext/array/#/clear\":131,\"es5-ext/object/assign\":144,\"es5-ext/object/valid-callable\":160,\"es5-ext/object/valid-value\":162,\"es6-symbol\":175}],172:[function(t,e,r){\"use strict\";var n=t(\"es5-ext/function/is-arguments\"),i=t(\"es5-ext/object/is-value\"),a=t(\"es5-ext/string/is-string\"),o=t(\"es6-symbol\").iterator,s=Array.isArray;e.exports=function(t){return!!i(t)&&(!!s(t)||(!!a(t)||(!!n(t)||\"function\"==typeof t[o])))}},{\"es5-ext/function/is-arguments\":135,\"es5-ext/object/is-value\":151,\"es5-ext/string/is-string\":166,\"es6-symbol\":175}],173:[function(t,e,r){\"use strict\";var n,i=t(\"es5-ext/object/set-prototype-of\"),a=t(\"d\"),o=t(\"es6-symbol\"),s=t(\"./\"),l=Object.defineProperty;n=e.exports=function(t){if(!(this instanceof n))throw new TypeError(\"Constructor requires 'new'\");t=String(t),s.call(this,t),l(this,\"__length__\",a(\"\",t.length))},i&&i(n,s),delete n.prototype.constructor,n.prototype=Object.create(s.prototype,{_next:a((function(){if(this.__list__)return this.__nextIndex__=55296&&e<=56319?r+this.__list__[this.__nextIndex__++]:r}))}),l(n.prototype,o.toStringTag,a(\"c\",\"String Iterator\"))},{\"./\":171,d:106,\"es5-ext/object/set-prototype-of\":157,\"es6-symbol\":175}],174:[function(t,e,r){\"use strict\";var n=t(\"./is-iterable\");e.exports=function(t){if(!n(t))throw new TypeError(t+\" is not iterable\");return t}},{\"./is-iterable\":172}],175:[function(t,e,r){\"use strict\";e.exports=t(\"./is-implemented\")()?t(\"ext/global-this\").Symbol:t(\"./polyfill\")},{\"./is-implemented\":176,\"./polyfill\":181,\"ext/global-this\":188}],176:[function(t,e,r){\"use strict\";var n=t(\"ext/global-this\"),i={object:!0,symbol:!0};e.exports=function(){var t,e=n.Symbol;if(\"function\"!=typeof e)return!1;t=e(\"test symbol\");try{String(t)}catch(t){return!1}return!!i[typeof e.iterator]&&(!!i[typeof e.toPrimitive]&&!!i[typeof e.toStringTag])}},{\"ext/global-this\":188}],177:[function(t,e,r){\"use strict\";e.exports=function(t){return!!t&&(\"symbol\"==typeof t||!!t.constructor&&(\"Symbol\"===t.constructor.name&&\"Symbol\"===t[t.constructor.toStringTag]))}},{}],178:[function(t,e,r){\"use strict\";var n=t(\"d\"),i=Object.create,a=Object.defineProperty,o=Object.prototype,s=i(null);e.exports=function(t){for(var e,r,i=0;s[t+(i||\"\")];)++i;return s[t+=i||\"\"]=!0,a(o,e=\"@@\"+t,n.gs(null,(function(t){r||(r=!0,a(this,e,n(t)),r=!1)}))),e}},{d:106}],179:[function(t,e,r){\"use strict\";var n=t(\"d\"),i=t(\"ext/global-this\").Symbol;e.exports=function(t){return Object.defineProperties(t,{hasInstance:n(\"\",i&&i.hasInstance||t(\"hasInstance\")),isConcatSpreadable:n(\"\",i&&i.isConcatSpreadable||t(\"isConcatSpreadable\")),iterator:n(\"\",i&&i.iterator||t(\"iterator\")),match:n(\"\",i&&i.match||t(\"match\")),replace:n(\"\",i&&i.replace||t(\"replace\")),search:n(\"\",i&&i.search||t(\"search\")),species:n(\"\",i&&i.species||t(\"species\")),split:n(\"\",i&&i.split||t(\"split\")),toPrimitive:n(\"\",i&&i.toPrimitive||t(\"toPrimitive\")),toStringTag:n(\"\",i&&i.toStringTag||t(\"toStringTag\")),unscopables:n(\"\",i&&i.unscopables||t(\"unscopables\"))})}},{d:106,\"ext/global-this\":188}],180:[function(t,e,r){\"use strict\";var n=t(\"d\"),i=t(\"../../../validate-symbol\"),a=Object.create(null);e.exports=function(t){return Object.defineProperties(t,{for:n((function(e){return a[e]?a[e]:a[e]=t(String(e))})),keyFor:n((function(t){var e;for(e in i(t),a)if(a[e]===t)return e}))})}},{\"../../../validate-symbol\":182,d:106}],181:[function(t,e,r){\"use strict\";var n,i,a,o=t(\"d\"),s=t(\"./validate-symbol\"),l=t(\"ext/global-this\").Symbol,c=t(\"./lib/private/generate-name\"),u=t(\"./lib/private/setup/standard-symbols\"),f=t(\"./lib/private/setup/symbol-registry\"),h=Object.create,p=Object.defineProperties,d=Object.defineProperty;if(\"function\"==typeof l)try{String(l()),a=!0}catch(t){}else l=null;i=function(t){if(this instanceof i)throw new TypeError(\"Symbol is not a constructor\");return n(t)},e.exports=n=function t(e){var r;if(this instanceof t)throw new TypeError(\"Symbol is not a constructor\");return a?l(e):(r=h(i.prototype),e=void 0===e?\"\":String(e),p(r,{__description__:o(\"\",e),__name__:o(\"\",c(e))}))},u(n),f(n),p(i.prototype,{constructor:o(n),toString:o(\"\",(function(){return this.__name__}))}),p(n.prototype,{toString:o((function(){return\"Symbol (\"+s(this).__description__+\")\"})),valueOf:o((function(){return s(this)}))}),d(n.prototype,n.toPrimitive,o(\"\",(function(){var t=s(this);return\"symbol\"==typeof t?t:t.toString()}))),d(n.prototype,n.toStringTag,o(\"c\",\"Symbol\")),d(i.prototype,n.toStringTag,o(\"c\",n.prototype[n.toStringTag])),d(i.prototype,n.toPrimitive,o(\"c\",n.prototype[n.toPrimitive]))},{\"./lib/private/generate-name\":178,\"./lib/private/setup/standard-symbols\":179,\"./lib/private/setup/symbol-registry\":180,\"./validate-symbol\":182,d:106,\"ext/global-this\":188}],182:[function(t,e,r){\"use strict\";var n=t(\"./is-symbol\");e.exports=function(t){if(!n(t))throw new TypeError(t+\" is not a symbol\");return t}},{\"./is-symbol\":177}],183:[function(t,e,r){\"use strict\";e.exports=t(\"./is-implemented\")()?WeakMap:t(\"./polyfill\")},{\"./is-implemented\":184,\"./polyfill\":186}],184:[function(t,e,r){\"use strict\";e.exports=function(){var t,e;if(\"function\"!=typeof WeakMap)return!1;try{t=new WeakMap([[e={},\"one\"],[{},\"two\"],[{},\"three\"]])}catch(t){return!1}return\"[object WeakMap]\"===String(t)&&(\"function\"==typeof t.set&&(t.set({},1)===t&&(\"function\"==typeof t.delete&&(\"function\"==typeof t.has&&\"one\"===t.get(e)))))}},{}],185:[function(t,e,r){\"use strict\";e.exports=\"function\"==typeof WeakMap&&\"[object WeakMap]\"===Object.prototype.toString.call(new WeakMap)},{}],186:[function(t,e,r){\"use strict\";var n,i=t(\"es5-ext/object/is-value\"),a=t(\"es5-ext/object/set-prototype-of\"),o=t(\"es5-ext/object/valid-object\"),s=t(\"es5-ext/object/valid-value\"),l=t(\"es5-ext/string/random-uniq\"),c=t(\"d\"),u=t(\"es6-iterator/get\"),f=t(\"es6-iterator/for-of\"),h=t(\"es6-symbol\").toStringTag,p=t(\"./is-native-implemented\"),d=Array.isArray,g=Object.defineProperty,m=Object.prototype.hasOwnProperty,v=Object.getPrototypeOf;e.exports=n=function(){var t,e=arguments[0];if(!(this instanceof n))throw new TypeError(\"Constructor requires 'new'\");return t=p&&a&&WeakMap!==n?a(new WeakMap,v(this)):this,i(e)&&(d(e)||(e=u(e))),g(t,\"__weakMapData__\",c(\"c\",\"$weakMap$\"+l())),e?(f(e,(function(e){s(e),t.set(e[0],e[1])})),t):t},p&&(a&&a(n,WeakMap),n.prototype=Object.create(WeakMap.prototype,{constructor:c(n)})),Object.defineProperties(n.prototype,{delete:c((function(t){return!!m.call(o(t),this.__weakMapData__)&&(delete t[this.__weakMapData__],!0)})),get:c((function(t){if(m.call(o(t),this.__weakMapData__))return t[this.__weakMapData__]})),has:c((function(t){return m.call(o(t),this.__weakMapData__)})),set:c((function(t,e){return g(o(t),this.__weakMapData__,c(\"c\",e)),this})),toString:c((function(){return\"[object WeakMap]\"}))}),g(n.prototype,h,c(\"c\",\"WeakMap\"))},{\"./is-native-implemented\":185,d:106,\"es5-ext/object/is-value\":151,\"es5-ext/object/set-prototype-of\":157,\"es5-ext/object/valid-object\":161,\"es5-ext/object/valid-value\":162,\"es5-ext/string/random-uniq\":167,\"es6-iterator/for-of\":169,\"es6-iterator/get\":170,\"es6-symbol\":175}],187:[function(t,e,r){var n=function(){if(\"object\"==typeof self&&self)return self;if(\"object\"==typeof window&&window)return window;throw new Error(\"Unable to resolve global `this`\")};e.exports=function(){if(this)return this;try{Object.defineProperty(Object.prototype,\"__global__\",{get:function(){return this},configurable:!0})}catch(t){return n()}try{return __global__||n()}finally{delete Object.prototype.__global__}}()},{}],188:[function(t,e,r){\"use strict\";e.exports=t(\"./is-implemented\")()?globalThis:t(\"./implementation\")},{\"./implementation\":187,\"./is-implemented\":189}],189:[function(t,e,r){\"use strict\";e.exports=function(){return\"object\"==typeof globalThis&&(!!globalThis&&globalThis.Array===Array)}},{}],190:[function(t,e,r){\"use strict\";var n=t(\"is-string-blank\");e.exports=function(t){var e=typeof t;if(\"string\"===e){var r=t;if(0===(t=+t)&&n(r))return!1}else if(\"number\"!==e)return!1;return t-t<1}},{\"is-string-blank\":237}],191:[function(t,e,r){var n=t(\"dtype\");e.exports=function(t,e,r){if(!t)throw new TypeError(\"must specify data as first parameter\");if(r=0|+(r||0),Array.isArray(t)&&t[0]&&\"number\"==typeof t[0][0]){var i,a,o,s,l=t[0].length,c=t.length*l;e&&\"string\"!=typeof e||(e=new(n(e||\"float32\"))(c+r));var u=e.length-r;if(c!==u)throw new Error(\"source length \"+c+\" (\"+l+\"x\"+t.length+\") does not match destination length \"+u);for(i=0,o=r;ie[0]-o[0]/2&&(h=o[0]/2,p+=o[1]);return r}},{\"css-font/stringify\":102}],193:[function(t,e,r){\"use strict\";function n(t,e){e||(e={}),(\"string\"==typeof t||Array.isArray(t))&&(e.family=t);var r=Array.isArray(e.family)?e.family.join(\", \"):e.family;if(!r)throw Error(\"`family` must be defined\");var s=e.size||e.fontSize||e.em||48,l=e.weight||e.fontWeight||\"\",c=(t=[e.style||e.fontStyle||\"\",l,s].join(\" \")+\"px \"+r,e.origin||\"top\");if(n.cache[r]&&s<=n.cache[r].em)return i(n.cache[r],c);var u=e.canvas||n.canvas,f=u.getContext(\"2d\"),h={upper:void 0!==e.upper?e.upper:\"H\",lower:void 0!==e.lower?e.lower:\"x\",descent:void 0!==e.descent?e.descent:\"p\",ascent:void 0!==e.ascent?e.ascent:\"h\",tittle:void 0!==e.tittle?e.tittle:\"i\",overshoot:void 0!==e.overshoot?e.overshoot:\"O\"},p=Math.ceil(1.5*s);u.height=p,u.width=.5*p,f.font=t;var d={top:0};f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillStyle=\"black\",f.fillText(\"H\",0,0);var g=a(f.getImageData(0,0,p,p));f.clearRect(0,0,p,p),f.textBaseline=\"bottom\",f.fillText(\"H\",0,p);var m=a(f.getImageData(0,0,p,p));d.lineHeight=d.bottom=p-m+g,f.clearRect(0,0,p,p),f.textBaseline=\"alphabetic\",f.fillText(\"H\",0,p);var v=p-a(f.getImageData(0,0,p,p))-1+g;d.baseline=d.alphabetic=v,f.clearRect(0,0,p,p),f.textBaseline=\"middle\",f.fillText(\"H\",0,.5*p);var y=a(f.getImageData(0,0,p,p));d.median=d.middle=p-y-1+g-.5*p,f.clearRect(0,0,p,p),f.textBaseline=\"hanging\",f.fillText(\"H\",0,.5*p);var x=a(f.getImageData(0,0,p,p));d.hanging=p-x-1+g-.5*p,f.clearRect(0,0,p,p),f.textBaseline=\"ideographic\",f.fillText(\"H\",0,p);var b=a(f.getImageData(0,0,p,p));if(d.ideographic=p-b-1+g,h.upper&&(f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.upper,0,0),d.upper=a(f.getImageData(0,0,p,p)),d.capHeight=d.baseline-d.upper),h.lower&&(f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.lower,0,0),d.lower=a(f.getImageData(0,0,p,p)),d.xHeight=d.baseline-d.lower),h.tittle&&(f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.tittle,0,0),d.tittle=a(f.getImageData(0,0,p,p))),h.ascent&&(f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.ascent,0,0),d.ascent=a(f.getImageData(0,0,p,p))),h.descent&&(f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.descent,0,0),d.descent=o(f.getImageData(0,0,p,p))),h.overshoot){f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.overshoot,0,0);var _=o(f.getImageData(0,0,p,p));d.overshoot=_-v}for(var w in d)d[w]/=s;return d.em=s,n.cache[r]=d,i(d,c)}function i(t,e){var r={};for(var n in\"string\"==typeof e&&(e=t[e]),t)\"em\"!==n&&(r[n]=t[n]-e);return r}function a(t){for(var e=t.height,r=t.data,n=3;n0;n-=4)if(0!==r[n])return Math.floor(.25*(n-3)/e)}e.exports=n,n.canvas=document.createElement(\"canvas\"),n.cache={}},{}],194:[function(t,e,r){e.exports=function(t,e){if(\"string\"!=typeof t)throw new TypeError(\"must specify type string\");if(e=e||{},\"undefined\"==typeof document&&!e.canvas)return null;var r=e.canvas||document.createElement(\"canvas\");\"number\"==typeof e.width&&(r.width=e.width);\"number\"==typeof e.height&&(r.height=e.height);var n,i=e;try{var a=[t];0===t.indexOf(\"webgl\")&&a.push(\"experimental-\"+t);for(var o=0;o halfCharStep + halfCharWidth ||\\n\\t\\t\\t\\t\\tfloor(uv.x) < halfCharStep - halfCharWidth) return;\\n\\n\\t\\t\\t\\tuv += charId * charStep;\\n\\t\\t\\t\\tuv = uv / atlasSize;\\n\\n\\t\\t\\t\\tvec4 color = fontColor;\\n\\t\\t\\t\\tvec4 mask = texture2D(atlas, uv);\\n\\n\\t\\t\\t\\tfloat maskY = lightness(mask);\\n\\t\\t\\t\\t// float colorY = lightness(color);\\n\\t\\t\\t\\tcolor.a *= maskY;\\n\\t\\t\\t\\tcolor.a *= opacity;\\n\\n\\t\\t\\t\\t// color.a += .1;\\n\\n\\t\\t\\t\\t// antialiasing, see yiq color space y-channel formula\\n\\t\\t\\t\\t// color.rgb += (1. - color.rgb) * (1. - mask.rgb);\\n\\n\\t\\t\\t\\tgl_FragColor = color;\\n\\t\\t\\t}\"});return{regl:t,draw:e,atlas:{}}},T.prototype.update=function(t){var e=this;if(\"string\"==typeof t)t={text:t};else if(!t)return;null!=(t=i(t,{position:\"position positions coord coords coordinates\",font:\"font fontFace fontface typeface cssFont css-font family fontFamily\",fontSize:\"fontSize fontsize size font-size\",text:\"text texts chars characters value values symbols\",align:\"align alignment textAlign textbaseline\",baseline:\"baseline textBaseline textbaseline\",direction:\"dir direction textDirection\",color:\"color colour fill fill-color fillColor textColor textcolor\",kerning:\"kerning kern\",range:\"range dataBox\",viewport:\"vp viewport viewBox viewbox viewPort\",opacity:\"opacity alpha transparency visible visibility opaque\",offset:\"offset positionOffset padding shift indent indentation\"},!0)).opacity&&(Array.isArray(t.opacity)?this.opacity=t.opacity.map((function(t){return parseFloat(t)})):this.opacity=parseFloat(t.opacity)),null!=t.viewport&&(this.viewport=f(t.viewport),this.viewportArray=[this.viewport.x,this.viewport.y,this.viewport.width,this.viewport.height]),null==this.viewport&&(this.viewport={x:0,y:0,width:this.gl.drawingBufferWidth,height:this.gl.drawingBufferHeight},this.viewportArray=[this.viewport.x,this.viewport.y,this.viewport.width,this.viewport.height]),null!=t.kerning&&(this.kerning=t.kerning),null!=t.offset&&(\"number\"==typeof t.offset&&(t.offset=[t.offset,0]),this.positionOffset=y(t.offset)),t.direction&&(this.direction=t.direction),t.range&&(this.range=t.range,this.scale=[1/(t.range[2]-t.range[0]),1/(t.range[3]-t.range[1])],this.translate=[-t.range[0],-t.range[1]]),t.scale&&(this.scale=t.scale),t.translate&&(this.translate=t.translate),this.scale||(this.scale=[1/this.viewport.width,1/this.viewport.height]),this.translate||(this.translate=[0,0]),this.font.length||t.font||(t.font=T.baseFontSize+\"px sans-serif\");var r,a=!1,o=!1;if(t.font&&(Array.isArray(t.font)?t.font:[t.font]).forEach((function(t,r){if(\"string\"==typeof t)try{t=n.parse(t)}catch(e){t=n.parse(T.baseFontSize+\"px \"+t)}else t=n.parse(n.stringify(t));var i=n.stringify({size:T.baseFontSize,family:t.family,stretch:_?t.stretch:void 0,variant:t.variant,weight:t.weight,style:t.style}),s=p(t.size),l=Math.round(s[0]*d(s[1]));if(l!==e.fontSize[r]&&(o=!0,e.fontSize[r]=l),!(e.font[r]&&i==e.font[r].baseString||(a=!0,e.font[r]=T.fonts[i],e.font[r]))){var c=t.family.join(\", \"),u=[t.style];t.style!=t.variant&&u.push(t.variant),t.variant!=t.weight&&u.push(t.weight),_&&t.weight!=t.stretch&&u.push(t.stretch),e.font[r]={baseString:i,family:c,weight:t.weight,stretch:t.stretch,style:t.style,variant:t.variant,width:{},kerning:{},metrics:v(c,{origin:\"top\",fontSize:T.baseFontSize,fontStyle:u.join(\" \")})},T.fonts[i]=e.font[r]}})),(a||o)&&this.font.forEach((function(r,i){var a=n.stringify({size:e.fontSize[i],family:r.family,stretch:_?r.stretch:void 0,variant:r.variant,weight:r.weight,style:r.style});if(e.fontAtlas[i]=e.shader.atlas[a],!e.fontAtlas[i]){var o=r.metrics;e.shader.atlas[a]=e.fontAtlas[i]={fontString:a,step:2*Math.ceil(e.fontSize[i]*o.bottom*.5),em:e.fontSize[i],cols:0,rows:0,height:0,width:0,chars:[],ids:{},texture:e.regl.texture()}}null==t.text&&(t.text=e.text)})),\"string\"==typeof t.text&&t.position&&t.position.length>2){for(var s=Array(.5*t.position.length),h=0;h2){for(var w=!t.position[0].length,k=u.mallocFloat(2*this.count),A=0,M=0;A1?e.align[r]:e.align[0]:e.align;if(\"number\"==typeof n)return n;switch(n){case\"right\":case\"end\":return-t;case\"center\":case\"centre\":case\"middle\":return.5*-t}return 0}))),null==this.baseline&&null==t.baseline&&(t.baseline=0),null!=t.baseline&&(this.baseline=t.baseline,Array.isArray(this.baseline)||(this.baseline=[this.baseline]),this.baselineOffset=this.baseline.map((function(t,r){var n=(e.font[r]||e.font[0]).metrics,i=0;return i+=.5*n.bottom,i+=\"number\"==typeof t?t-n.baseline:-n[t],i*=-1}))),null!=t.color)if(t.color||(t.color=\"transparent\"),\"string\"!=typeof t.color&&isNaN(t.color)){var q;if(\"number\"==typeof t.color[0]&&t.color.length>this.counts.length){var G=t.color.length;q=u.mallocUint8(G);for(var Y=(t.color.subarray||t.color.slice).bind(t.color),W=0;W4||this.baselineOffset.length>1||this.align&&this.align.length>1||this.fontAtlas.length>1||this.positionOffset.length>2){var J=Math.max(.5*this.position.length||0,.25*this.color.length||0,this.baselineOffset.length||0,this.alignOffset.length||0,this.font.length||0,this.opacity.length||0,.5*this.positionOffset.length||0);this.batch=Array(J);for(var K=0;K1?this.counts[K]:this.counts[0],offset:this.textOffsets.length>1?this.textOffsets[K]:this.textOffsets[0],color:this.color?this.color.length<=4?this.color:this.color.subarray(4*K,4*K+4):[0,0,0,255],opacity:Array.isArray(this.opacity)?this.opacity[K]:this.opacity,baseline:null!=this.baselineOffset[K]?this.baselineOffset[K]:this.baselineOffset[0],align:this.align?null!=this.alignOffset[K]?this.alignOffset[K]:this.alignOffset[0]:0,atlas:this.fontAtlas[K]||this.fontAtlas[0],positionOffset:this.positionOffset.length>2?this.positionOffset.subarray(2*K,2*K+2):this.positionOffset}}else this.count?this.batch=[{count:this.count,offset:0,color:this.color||[0,0,0,255],opacity:Array.isArray(this.opacity)?this.opacity[0]:this.opacity,baseline:this.baselineOffset[0],align:this.alignOffset?this.alignOffset[0]:0,atlas:this.fontAtlas[0],positionOffset:this.positionOffset}]:this.batch=[]},T.prototype.destroy=function(){},T.prototype.kerning=!0,T.prototype.position={constant:new Float32Array(2)},T.prototype.translate=null,T.prototype.scale=null,T.prototype.font=null,T.prototype.text=\"\",T.prototype.positionOffset=[0,0],T.prototype.opacity=1,T.prototype.color=new Uint8Array([0,0,0,255]),T.prototype.alignOffset=[0,0],T.maxAtlasSize=1024,T.atlasCanvas=document.createElement(\"canvas\"),T.atlasContext=T.atlasCanvas.getContext(\"2d\",{alpha:!1}),T.baseFontSize=64,T.fonts={},e.exports=T},{\"bit-twiddle\":81,\"color-normalize\":89,\"css-font\":99,\"detect-kerning\":125,\"es6-weak-map\":183,\"flatten-vertex-data\":191,\"font-atlas\":192,\"font-measure\":193,\"gl-util/context\":226,\"is-plain-obj\":236,\"object-assign\":247,\"parse-rect\":249,\"parse-unit\":251,\"pick-by-alias\":253,regl:283,\"to-px\":314,\"typedarray-pool\":327}],226:[function(t,e,r){(function(r){(function(){\"use strict\";var n=t(\"pick-by-alias\");function i(t){if(t.container)if(t.container==document.body)document.body.style.width||(t.canvas.width=t.width||t.pixelRatio*r.innerWidth),document.body.style.height||(t.canvas.height=t.height||t.pixelRatio*r.innerHeight);else{var e=t.container.getBoundingClientRect();t.canvas.width=t.width||e.right-e.left,t.canvas.height=t.height||e.bottom-e.top}}function a(t){return\"function\"==typeof t.getContext&&\"width\"in t&&\"height\"in t}function o(){var t=document.createElement(\"canvas\");return t.style.position=\"absolute\",t.style.top=0,t.style.left=0,t}e.exports=function(t){var e;if(t?\"string\"==typeof t&&(t={container:t}):t={},a(t)?t={container:t}:t=\"string\"==typeof(e=t).nodeName&&\"function\"==typeof e.appendChild&&\"function\"==typeof e.getBoundingClientRect?{container:t}:function(t){return\"function\"==typeof t.drawArrays||\"function\"==typeof t.drawElements}(t)?{gl:t}:n(t,{container:\"container target element el canvas holder parent parentNode wrapper use ref root node\",gl:\"gl context webgl glContext\",attrs:\"attributes attrs contextAttributes\",pixelRatio:\"pixelRatio pxRatio px ratio pxratio pixelratio\",width:\"w width\",height:\"h height\"},!0),t.pixelRatio||(t.pixelRatio=r.pixelRatio||1),t.gl)return t.gl;if(t.canvas&&(t.container=t.canvas.parentNode),t.container){if(\"string\"==typeof t.container){var s=document.querySelector(t.container);if(!s)throw Error(\"Element \"+t.container+\" is not found\");t.container=s}a(t.container)?(t.canvas=t.container,t.container=t.canvas.parentNode):t.canvas||(t.canvas=o(),t.container.appendChild(t.canvas),i(t))}else if(!t.canvas){if(\"undefined\"==typeof document)throw Error(\"Not DOM environment. Use headless-gl.\");t.container=document.body||document.documentElement,t.canvas=o(),t.container.appendChild(t.canvas),i(t)}return t.gl||[\"webgl\",\"experimental-webgl\",\"webgl-experimental\"].some((function(e){try{t.gl=t.canvas.getContext(e,t.attrs)}catch(t){}return t.gl})),t.gl}}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"pick-by-alias\":253}],227:[function(t,e,r){e.exports=function(t){\"string\"==typeof t&&(t=[t]);for(var e=[].slice.call(arguments,1),r=[],n=0;n>1,u=-7,f=r?i-1:0,h=r?-1:1,p=t[e+f];for(f+=h,a=p&(1<<-u)-1,p>>=-u,u+=s;u>0;a=256*a+t[e+f],f+=h,u-=8);for(o=a&(1<<-u)-1,a>>=-u,u+=n;u>0;o=256*o+t[e+f],f+=h,u-=8);if(0===a)a=1-c;else{if(a===l)return o?NaN:1/0*(p?-1:1);o+=Math.pow(2,n),a-=c}return(p?-1:1)*o*Math.pow(2,a-n)},r.write=function(t,e,r,n,i,a){var o,s,l,c=8*a-i-1,u=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:a-1,d=n?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,o=u):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),(e+=o+f>=1?h/l:h*Math.pow(2,1-f))*l>=2&&(o++,l/=2),o+f>=u?(s=0,o=u):o+f>=1?(s=(e*l-1)*Math.pow(2,i),o+=f):(s=e*Math.pow(2,f-1)*Math.pow(2,i),o=0));i>=8;t[r+p]=255&s,p+=d,s/=256,i-=8);for(o=o<0;t[r+p]=255&o,p+=d,o/=256,c-=8);t[r+p-d]|=128*g}},{}],231:[function(t,e,r){\"function\"==typeof Object.create?e.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:e.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}},{}],232:[function(t,e,r){e.exports=!0},{}],233:[function(t,e,r){\"use strict\";e.exports=\"undefined\"!=typeof navigator&&(/MSIE/.test(navigator.userAgent)||/Trident\\//.test(navigator.appVersion))},{}],234:[function(t,e,r){\"use strict\";e.exports=a,e.exports.isMobile=a,e.exports.default=a;var n=/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series[46]0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i,i=/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series[46]0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino|android|ipad|playbook|silk/i;function a(t){t||(t={});var e=t.ua;if(e||\"undefined\"==typeof navigator||(e=navigator.userAgent),e&&e.headers&&\"string\"==typeof e.headers[\"user-agent\"]&&(e=e.headers[\"user-agent\"]),\"string\"!=typeof e)return!1;var r=t.tablet?i.test(e):n.test(e);return!r&&t.tablet&&t.featureDetect&&navigator&&navigator.maxTouchPoints>1&&-1!==e.indexOf(\"Macintosh\")&&-1!==e.indexOf(\"Safari\")&&(r=!0),r}},{}],235:[function(t,e,r){\"use strict\";e.exports=function(t){var e=typeof t;return null!==t&&(\"object\"===e||\"function\"===e)}},{}],236:[function(t,e,r){\"use strict\";var n=Object.prototype.toString;e.exports=function(t){var e;return\"[object Object]\"===n.call(t)&&(null===(e=Object.getPrototypeOf(t))||e===Object.getPrototypeOf({}))}},{}],237:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e,r=t.length,n=0;n13)&&32!==e&&133!==e&&160!==e&&5760!==e&&6158!==e&&(e<8192||e>8205)&&8232!==e&&8233!==e&&8239!==e&&8287!==e&&8288!==e&&12288!==e&&65279!==e)return!1;return!0}},{}],238:[function(t,e,r){\"use strict\";e.exports=function(t){return\"string\"==typeof t&&(t=t.trim(),!!(/^[mzlhvcsqta]\\s*[-+.0-9][^mlhvzcsqta]+/i.test(t)&&/[\\dz]$/i.test(t)&&t.length>4))}},{}],239:[function(t,e,r){!function(t,n){\"object\"==typeof r&&void 0!==e?e.exports=n():(t=t||self).mapboxgl=n()}(this,(function(){\"use strict\";var t,e,r;function n(n,i){if(t)if(e){var a=\"var sharedChunk = {}; (\"+t+\")(sharedChunk); (\"+e+\")(sharedChunk);\",o={};t(o),(r=i(o)).workerUrl=window.URL.createObjectURL(new Blob([a],{type:\"text/javascript\"}))}else e=i;else t=i}return n(0,(function(t){function e(t,e){return t(e={exports:{}},e.exports),e.exports}var r=n;function n(t,e,r,n){this.cx=3*t,this.bx=3*(r-t)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*e,this.by=3*(n-e)-this.cy,this.ay=1-this.cy-this.by,this.p1x=t,this.p1y=n,this.p2x=r,this.p2y=n}n.prototype.sampleCurveX=function(t){return((this.ax*t+this.bx)*t+this.cx)*t},n.prototype.sampleCurveY=function(t){return((this.ay*t+this.by)*t+this.cy)*t},n.prototype.sampleCurveDerivativeX=function(t){return(3*this.ax*t+2*this.bx)*t+this.cx},n.prototype.solveCurveX=function(t,e){var r,n,i,a,o;for(void 0===e&&(e=1e-6),i=t,o=0;o<8;o++){if(a=this.sampleCurveX(i)-t,Math.abs(a)(n=1))return n;for(;ra?r=i:n=i,i=.5*(n-r)+r}return i},n.prototype.solve=function(t,e){return this.sampleCurveY(this.solveCurveX(t,e))};var i=a;function a(t,e){this.x=t,this.y=e}function o(t,e,n,i){var a=new r(t,e,n,i);return function(t){return a.solve(t)}}a.prototype={clone:function(){return new a(this.x,this.y)},add:function(t){return this.clone()._add(t)},sub:function(t){return this.clone()._sub(t)},multByPoint:function(t){return this.clone()._multByPoint(t)},divByPoint:function(t){return this.clone()._divByPoint(t)},mult:function(t){return this.clone()._mult(t)},div:function(t){return this.clone()._div(t)},rotate:function(t){return this.clone()._rotate(t)},rotateAround:function(t,e){return this.clone()._rotateAround(t,e)},matMult:function(t){return this.clone()._matMult(t)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(t){return this.x===t.x&&this.y===t.y},dist:function(t){return Math.sqrt(this.distSqr(t))},distSqr:function(t){var e=t.x-this.x,r=t.y-this.y;return e*e+r*r},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(t){return Math.atan2(this.y-t.y,this.x-t.x)},angleWith:function(t){return this.angleWithSep(t.x,t.y)},angleWithSep:function(t,e){return Math.atan2(this.x*e-this.y*t,this.x*t+this.y*e)},_matMult:function(t){var e=t[0]*this.x+t[1]*this.y,r=t[2]*this.x+t[3]*this.y;return this.x=e,this.y=r,this},_add:function(t){return this.x+=t.x,this.y+=t.y,this},_sub:function(t){return this.x-=t.x,this.y-=t.y,this},_mult:function(t){return this.x*=t,this.y*=t,this},_div:function(t){return this.x/=t,this.y/=t,this},_multByPoint:function(t){return this.x*=t.x,this.y*=t.y,this},_divByPoint:function(t){return this.x/=t.x,this.y/=t.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var t=this.y;return this.y=this.x,this.x=-t,this},_rotate:function(t){var e=Math.cos(t),r=Math.sin(t),n=e*this.x-r*this.y,i=r*this.x+e*this.y;return this.x=n,this.y=i,this},_rotateAround:function(t,e){var r=Math.cos(t),n=Math.sin(t),i=e.x+r*(this.x-e.x)-n*(this.y-e.y),a=e.y+n*(this.x-e.x)+r*(this.y-e.y);return this.x=i,this.y=a,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},a.convert=function(t){return t instanceof a?t:Array.isArray(t)?new a(t[0],t[1]):t};var s=o(.25,.1,.25,1);function l(t,e,r){return Math.min(r,Math.max(e,t))}function c(t,e,r){var n=r-e,i=((t-e)%n+n)%n+e;return i===e?r:i}function u(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];for(var n=0,i=e;n>e/4).toString(16):([1e7]+-[1e3]+-4e3+-8e3+-1e11).replace(/[018]/g,t)}()}function d(t){return!!t&&/^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(t)}function g(t,e){t.forEach((function(t){e[t]&&(e[t]=e[t].bind(e))}))}function m(t,e){return-1!==t.indexOf(e,t.length-e.length)}function v(t,e,r){var n={};for(var i in t)n[i]=e.call(r||this,t[i],i,t);return n}function y(t,e,r){var n={};for(var i in t)e.call(r||this,t[i],i,t)&&(n[i]=t[i]);return n}function x(t){return Array.isArray(t)?t.map(x):\"object\"==typeof t&&t?v(t,x):t}var b={};function _(t){b[t]||(\"undefined\"!=typeof console&&console.warn(t),b[t]=!0)}function w(t,e,r){return(r.y-t.y)*(e.x-t.x)>(e.y-t.y)*(r.x-t.x)}function T(t){for(var e=0,r=0,n=t.length,i=n-1,a=void 0,o=void 0;r@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)(?:\\=(?:([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)|(?:\\\"((?:[^\"\\\\]|\\\\.)*)\\\")))?/g,(function(t,r,n,i){var a=n||i;return e[r]=!a||a.toLowerCase(),\"\"})),e[\"max-age\"]){var r=parseInt(e[\"max-age\"],10);isNaN(r)?delete e[\"max-age\"]:e[\"max-age\"]=r}return e}var M=null;function S(t){if(null==M){var e=t.navigator?t.navigator.userAgent:null;M=!!t.safari||!(!e||!(/\\b(iPad|iPhone|iPod)\\b/.test(e)||e.match(\"Safari\")&&!e.match(\"Chrome\")))}return M}function E(t){try{var e=self[t];return e.setItem(\"_mapbox_test_\",1),e.removeItem(\"_mapbox_test_\"),!0}catch(t){return!1}}var L,C,P,I,O=self.performance&&self.performance.now?self.performance.now.bind(self.performance):Date.now.bind(Date),z=self.requestAnimationFrame||self.mozRequestAnimationFrame||self.webkitRequestAnimationFrame||self.msRequestAnimationFrame,D=self.cancelAnimationFrame||self.mozCancelAnimationFrame||self.webkitCancelAnimationFrame||self.msCancelAnimationFrame,R={now:O,frame:function(t){var e=z(t);return{cancel:function(){return D(e)}}},getImageData:function(t,e){void 0===e&&(e=0);var r=self.document.createElement(\"canvas\"),n=r.getContext(\"2d\");if(!n)throw new Error(\"failed to create canvas 2d context\");return r.width=t.width,r.height=t.height,n.drawImage(t,0,0,t.width,t.height),n.getImageData(-e,-e,t.width+2*e,t.height+2*e)},resolveURL:function(t){return L||(L=self.document.createElement(\"a\")),L.href=t,L.href},hardwareConcurrency:self.navigator.hardwareConcurrency||4,get devicePixelRatio(){return self.devicePixelRatio},get prefersReducedMotion(){return!!self.matchMedia&&(null==C&&(C=self.matchMedia(\"(prefers-reduced-motion: reduce)\")),C.matches)}},F={API_URL:\"https://api.mapbox.com\",get EVENTS_URL(){return this.API_URL?0===this.API_URL.indexOf(\"https://api.mapbox.cn\")?\"https://events.mapbox.cn/events/v2\":0===this.API_URL.indexOf(\"https://api.mapbox.com\")?\"https://events.mapbox.com/events/v2\":null:null},FEEDBACK_URL:\"https://apps.mapbox.com/feedback\",REQUIRE_ACCESS_TOKEN:!0,ACCESS_TOKEN:null,MAX_PARALLEL_IMAGE_REQUESTS:16},B={supported:!1,testSupport:function(t){if(N||!I)return;j?U(t):P=t}},N=!1,j=!1;function U(t){var e=t.createTexture();t.bindTexture(t.TEXTURE_2D,e);try{if(t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,I),t.isContextLost())return;B.supported=!0}catch(t){}t.deleteTexture(e),N=!0}self.document&&((I=self.document.createElement(\"img\")).onload=function(){P&&U(P),P=null,j=!0},I.onerror=function(){N=!0,P=null},I.src=\"data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=\");var V=\"01\";var H=function(t,e){this._transformRequestFn=t,this._customAccessToken=e,this._createSkuToken()};function q(t){return 0===t.indexOf(\"mapbox:\")}H.prototype._createSkuToken=function(){var t=function(){for(var t=\"\",e=0;e<10;e++)t+=\"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"[Math.floor(62*Math.random())];return{token:[\"1\",V,t].join(\"\"),tokenExpiresAt:Date.now()+432e5}}();this._skuToken=t.token,this._skuTokenExpiresAt=t.tokenExpiresAt},H.prototype._isSkuTokenExpired=function(){return Date.now()>this._skuTokenExpiresAt},H.prototype.transformRequest=function(t,e){return this._transformRequestFn&&this._transformRequestFn(t,e)||{url:t}},H.prototype.normalizeStyleURL=function(t,e){if(!q(t))return t;var r=X(t);return r.path=\"/styles/v1\"+r.path,this._makeAPIURL(r,this._customAccessToken||e)},H.prototype.normalizeGlyphsURL=function(t,e){if(!q(t))return t;var r=X(t);return r.path=\"/fonts/v1\"+r.path,this._makeAPIURL(r,this._customAccessToken||e)},H.prototype.normalizeSourceURL=function(t,e){if(!q(t))return t;var r=X(t);return r.path=\"/v4/\"+r.authority+\".json\",r.params.push(\"secure\"),this._makeAPIURL(r,this._customAccessToken||e)},H.prototype.normalizeSpriteURL=function(t,e,r,n){var i=X(t);return q(t)?(i.path=\"/styles/v1\"+i.path+\"/sprite\"+e+r,this._makeAPIURL(i,this._customAccessToken||n)):(i.path+=\"\"+e+r,Z(i))},H.prototype.normalizeTileURL=function(t,e){if(this._isSkuTokenExpired()&&this._createSkuToken(),t&&!q(t))return t;var r=X(t),n=R.devicePixelRatio>=2||512===e?\"@2x\":\"\",i=B.supported?\".webp\":\"$1\";r.path=r.path.replace(/(\\.(png|jpg)\\d*)(?=$)/,\"\"+n+i),r.path=r.path.replace(/^.+\\/v4\\//,\"/\"),r.path=\"/v4\"+r.path;var a=this._customAccessToken||function(t){for(var e=0,r=t;e=1&&self.localStorage.setItem(e,JSON.stringify(this.eventData))}catch(t){_(\"Unable to write to LocalStorage\")}},K.prototype.processRequests=function(t){},K.prototype.postEvent=function(t,e,r,n){var i=this;if(F.EVENTS_URL){var a=X(F.EVENTS_URL);a.params.push(\"access_token=\"+(n||F.ACCESS_TOKEN||\"\"));var o={event:this.type,created:new Date(t).toISOString(),sdkIdentifier:\"mapbox-gl-js\",sdkVersion:\"1.10.1\",skuId:V,userId:this.anonId},s=e?u(o,e):o,l={url:Z(a),headers:{\"Content-Type\":\"text/plain\"},body:JSON.stringify([s])};this.pendingRequest=bt(l,(function(t){i.pendingRequest=null,r(t),i.saveEventData(),i.processRequests(n)}))}},K.prototype.queueRequest=function(t,e){this.queue.push(t),this.processRequests(e)};var Q,$,tt=function(t){function e(){t.call(this,\"map.load\"),this.success={},this.skuToken=\"\"}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.postMapLoadEvent=function(t,e,r,n){this.skuToken=r,(F.EVENTS_URL&&n||F.ACCESS_TOKEN&&Array.isArray(t)&&t.some((function(t){return q(t)||Y(t)})))&&this.queueRequest({id:e,timestamp:Date.now()},n)},e.prototype.processRequests=function(t){var e=this;if(!this.pendingRequest&&0!==this.queue.length){var r=this.queue.shift(),n=r.id,i=r.timestamp;n&&this.success[n]||(this.anonId||this.fetchEventData(),d(this.anonId)||(this.anonId=p()),this.postEvent(i,{skuToken:this.skuToken},(function(t){t||n&&(e.success[n]=!0)}),t))}},e}(K),et=new(function(t){function e(e){t.call(this,\"appUserTurnstile\"),this._customAccessToken=e}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.postTurnstileEvent=function(t,e){F.EVENTS_URL&&F.ACCESS_TOKEN&&Array.isArray(t)&&t.some((function(t){return q(t)||Y(t)}))&&this.queueRequest(Date.now(),e)},e.prototype.processRequests=function(t){var e=this;if(!this.pendingRequest&&0!==this.queue.length){this.anonId&&this.eventData.lastSuccess&&this.eventData.tokenU||this.fetchEventData();var r=J(F.ACCESS_TOKEN),n=r?r.u:F.ACCESS_TOKEN,i=n!==this.eventData.tokenU;d(this.anonId)||(this.anonId=p(),i=!0);var a=this.queue.shift();if(this.eventData.lastSuccess){var o=new Date(this.eventData.lastSuccess),s=new Date(a),l=(a-this.eventData.lastSuccess)/864e5;i=i||l>=1||l<-1||o.getDate()!==s.getDate()}else i=!0;if(!i)return this.processRequests();this.postEvent(a,{\"enabled.telemetry\":!1},(function(t){t||(e.eventData.lastSuccess=a,e.eventData.tokenU=n)}),t)}},e}(K)),rt=et.postTurnstileEvent.bind(et),nt=new tt,it=nt.postMapLoadEvent.bind(nt),at=500,ot=50;function st(){self.caches&&!Q&&(Q=self.caches.open(\"mapbox-tiles\"))}function lt(t,e,r){if(st(),Q){var n={status:e.status,statusText:e.statusText,headers:new self.Headers};e.headers.forEach((function(t,e){return n.headers.set(e,t)}));var i=A(e.headers.get(\"Cache-Control\")||\"\");if(!i[\"no-store\"])i[\"max-age\"]&&n.headers.set(\"Expires\",new Date(r+1e3*i[\"max-age\"]).toUTCString()),new Date(n.headers.get(\"Expires\")).getTime()-r<42e4||function(t,e){if(void 0===$)try{new Response(new ReadableStream),$=!0}catch(t){$=!1}$?e(t.body):t.blob().then(e)}(e,(function(e){var r=new self.Response(e,n);st(),Q&&Q.then((function(e){return e.put(ct(t.url),r)})).catch((function(t){return _(t.message)}))}))}}function ct(t){var e=t.indexOf(\"?\");return e<0?t:t.slice(0,e)}function ut(t,e){if(st(),!Q)return e(null);var r=ct(t.url);Q.then((function(t){t.match(r).then((function(n){var i=function(t){if(!t)return!1;var e=new Date(t.headers.get(\"Expires\")||0),r=A(t.headers.get(\"Cache-Control\")||\"\");return e>Date.now()&&!r[\"no-cache\"]}(n);t.delete(r),i&&t.put(r,n.clone()),e(null,n,i)})).catch(e)})).catch(e)}var ft,ht=1/0;function pt(){return null==ft&&(ft=self.OffscreenCanvas&&new self.OffscreenCanvas(1,1).getContext(\"2d\")&&\"function\"==typeof self.createImageBitmap),ft}var dt={Unknown:\"Unknown\",Style:\"Style\",Source:\"Source\",Tile:\"Tile\",Glyphs:\"Glyphs\",SpriteImage:\"SpriteImage\",SpriteJSON:\"SpriteJSON\",Image:\"Image\"};\"function\"==typeof Object.freeze&&Object.freeze(dt);var gt=function(t){function e(e,r,n){401===r&&Y(n)&&(e+=\": you may have provided an invalid Mapbox access token. See https://www.mapbox.com/api-documentation/#access-tokens-and-token-scopes\"),t.call(this,e),this.status=r,this.url=n,this.name=this.constructor.name,this.message=e}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.toString=function(){return this.name+\": \"+this.message+\" (\"+this.status+\"): \"+this.url},e}(Error),mt=k()?function(){return self.worker&&self.worker.referrer}:function(){return(\"blob:\"===self.location.protocol?self.parent:self).location.href};function vt(t,e){var r,n=new self.AbortController,i=new self.Request(t.url,{method:t.method||\"GET\",body:t.body,credentials:t.credentials,headers:t.headers,referrer:mt(),signal:n.signal}),a=!1,o=!1,s=(r=i.url).indexOf(\"sku=\")>0&&Y(r);\"json\"===t.type&&i.headers.set(\"Accept\",\"application/json\");var l=function(r,n,a){if(!o){if(r&&\"SecurityError\"!==r.message&&_(r),n&&a)return c(n);var l=Date.now();self.fetch(i).then((function(r){if(r.ok){var n=s?r.clone():null;return c(r,n,l)}return e(new gt(r.statusText,r.status,t.url))})).catch((function(t){20!==t.code&&e(new Error(t.message))}))}},c=function(r,n,s){(\"arrayBuffer\"===t.type?r.arrayBuffer():\"json\"===t.type?r.json():r.text()).then((function(t){o||(n&&s&<(i,n,s),a=!0,e(null,t,r.headers.get(\"Cache-Control\"),r.headers.get(\"Expires\")))})).catch((function(t){o||e(new Error(t.message))}))};return s?ut(i,l):l(null,null),{cancel:function(){o=!0,a||n.abort()}}}var yt=function(t,e){if(r=t.url,!(/^file:/.test(r)||/^file:/.test(mt())&&!/^\\w+:/.test(r))){if(self.fetch&&self.Request&&self.AbortController&&self.Request.prototype.hasOwnProperty(\"signal\"))return vt(t,e);if(k()&&self.worker&&self.worker.actor){return self.worker.actor.send(\"getResource\",t,e,void 0,!0)}}var r;return function(t,e){var r=new self.XMLHttpRequest;for(var n in r.open(t.method||\"GET\",t.url,!0),\"arrayBuffer\"===t.type&&(r.responseType=\"arraybuffer\"),t.headers)r.setRequestHeader(n,t.headers[n]);return\"json\"===t.type&&(r.responseType=\"text\",r.setRequestHeader(\"Accept\",\"application/json\")),r.withCredentials=\"include\"===t.credentials,r.onerror=function(){e(new Error(r.statusText))},r.onload=function(){if((r.status>=200&&r.status<300||0===r.status)&&null!==r.response){var n=r.response;if(\"json\"===t.type)try{n=JSON.parse(r.response)}catch(t){return e(t)}e(null,n,r.getResponseHeader(\"Cache-Control\"),r.getResponseHeader(\"Expires\"))}else e(new gt(r.statusText,r.status,t.url))},r.send(t.body),{cancel:function(){return r.abort()}}}(t,e)},xt=function(t,e){return yt(u(t,{type:\"arrayBuffer\"}),e)},bt=function(t,e){return yt(u(t,{method:\"POST\"}),e)};var _t,wt;_t=[],wt=0;var Tt=function(t,e){if(B.supported&&(t.headers||(t.headers={}),t.headers.accept=\"image/webp,*/*\"),wt>=F.MAX_PARALLEL_IMAGE_REQUESTS){var r={requestParameters:t,callback:e,cancelled:!1,cancel:function(){this.cancelled=!0}};return _t.push(r),r}wt++;var n=!1,i=function(){if(!n)for(n=!0,wt--;_t.length&&wt0||this._oneTimeListeners&&this._oneTimeListeners[t]&&this._oneTimeListeners[t].length>0||this._eventedParent&&this._eventedParent.listens(t)},Et.prototype.setEventedParent=function(t,e){return this._eventedParent=t,this._eventedParentData=e,this};var Lt={$version:8,$root:{version:{required:!0,type:\"enum\",values:[8]},name:{type:\"string\"},metadata:{type:\"*\"},center:{type:\"array\",value:\"number\"},zoom:{type:\"number\"},bearing:{type:\"number\",default:0,period:360,units:\"degrees\"},pitch:{type:\"number\",default:0,units:\"degrees\"},light:{type:\"light\"},sources:{required:!0,type:\"sources\"},sprite:{type:\"string\"},glyphs:{type:\"string\"},transition:{type:\"transition\"},layers:{required:!0,type:\"array\",value:\"layer\"}},sources:{\"*\":{type:\"source\"}},source:[\"source_vector\",\"source_raster\",\"source_raster_dem\",\"source_geojson\",\"source_video\",\"source_image\"],source_vector:{type:{required:!0,type:\"enum\",values:{vector:{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.051129,180,85.051129]},scheme:{type:\"enum\",values:{xyz:{},tms:{}},default:\"xyz\"},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},attribution:{type:\"string\"},promoteId:{type:\"promoteId\"},\"*\":{type:\"*\"}},source_raster:{type:{required:!0,type:\"enum\",values:{raster:{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},tileSize:{type:\"number\",default:512,units:\"pixels\"},scheme:{type:\"enum\",values:{xyz:{},tms:{}},default:\"xyz\"},attribution:{type:\"string\"},\"*\":{type:\"*\"}},source_raster_dem:{type:{required:!0,type:\"enum\",values:{\"raster-dem\":{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},tileSize:{type:\"number\",default:512,units:\"pixels\"},attribution:{type:\"string\"},encoding:{type:\"enum\",values:{terrarium:{},mapbox:{}},default:\"mapbox\"},\"*\":{type:\"*\"}},source_geojson:{type:{required:!0,type:\"enum\",values:{geojson:{}}},data:{type:\"*\"},maxzoom:{type:\"number\",default:18},attribution:{type:\"string\"},buffer:{type:\"number\",default:128,maximum:512,minimum:0},tolerance:{type:\"number\",default:.375},cluster:{type:\"boolean\",default:!1},clusterRadius:{type:\"number\",default:50,minimum:0},clusterMaxZoom:{type:\"number\"},clusterProperties:{type:\"*\"},lineMetrics:{type:\"boolean\",default:!1},generateId:{type:\"boolean\",default:!1},promoteId:{type:\"promoteId\"}},source_video:{type:{required:!0,type:\"enum\",values:{video:{}}},urls:{required:!0,type:\"array\",value:\"string\"},coordinates:{required:!0,type:\"array\",length:4,value:{type:\"array\",length:2,value:\"number\"}}},source_image:{type:{required:!0,type:\"enum\",values:{image:{}}},url:{required:!0,type:\"string\"},coordinates:{required:!0,type:\"array\",length:4,value:{type:\"array\",length:2,value:\"number\"}}},layer:{id:{type:\"string\",required:!0},type:{type:\"enum\",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},\"fill-extrusion\":{},raster:{},hillshade:{},background:{}},required:!0},metadata:{type:\"*\"},source:{type:\"string\"},\"source-layer\":{type:\"string\"},minzoom:{type:\"number\",minimum:0,maximum:24},maxzoom:{type:\"number\",minimum:0,maximum:24},filter:{type:\"filter\"},layout:{type:\"layout\"},paint:{type:\"paint\"}},layout:[\"layout_fill\",\"layout_line\",\"layout_circle\",\"layout_heatmap\",\"layout_fill-extrusion\",\"layout_symbol\",\"layout_raster\",\"layout_hillshade\",\"layout_background\"],layout_background:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_fill:{\"fill-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_circle:{\"circle-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_heatmap:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},\"layout_fill-extrusion\":{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_line:{\"line-cap\":{type:\"enum\",values:{butt:{},round:{},square:{}},default:\"butt\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-join\":{type:\"enum\",values:{bevel:{},round:{},miter:{}},default:\"miter\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"line-miter-limit\":{type:\"number\",default:2,requires:[{\"line-join\":\"miter\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-round-limit\":{type:\"number\",default:1.05,requires:[{\"line-join\":\"round\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_symbol:{\"symbol-placement\":{type:\"enum\",values:{point:{},line:{},\"line-center\":{}},default:\"point\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-spacing\":{type:\"number\",default:250,minimum:1,units:\"pixels\",requires:[{\"symbol-placement\":\"line\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-avoid-edges\":{type:\"boolean\",default:!1,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"symbol-z-order\":{type:\"enum\",values:{auto:{},\"viewport-y\":{},source:{}},default:\"auto\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-allow-overlap\":{type:\"boolean\",default:!1,requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-ignore-placement\":{type:\"boolean\",default:!1,requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-optional\":{type:\"boolean\",default:!1,requires:[\"icon-image\",\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-rotation-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-size\":{type:\"number\",default:1,minimum:0,units:\"factor of the original icon size\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-text-fit\":{type:\"enum\",values:{none:{},width:{},height:{},both:{}},default:\"none\",requires:[\"icon-image\",\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-text-fit-padding\":{type:\"array\",value:\"number\",length:4,default:[0,0,0,0],units:\"pixels\",requires:[\"icon-image\",\"text-field\",{\"icon-text-fit\":[\"both\",\"width\",\"height\"]}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-image\":{type:\"resolvedImage\",tokens:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-rotate\":{type:\"number\",default:0,period:360,units:\"degrees\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-padding\":{type:\"number\",default:2,minimum:0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-keep-upright\":{type:\"boolean\",default:!1,requires:[\"icon-image\",{\"icon-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-offset\":{type:\"array\",value:\"number\",length:2,default:[0,0],requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-anchor\":{type:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},default:\"center\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotation-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-field\":{type:\"formatted\",default:\"\",tokens:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-font\":{type:\"array\",value:\"string\",default:[\"Open Sans Regular\",\"Arial Unicode MS Regular\"],requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-size\":{type:\"number\",default:16,minimum:0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-max-width\":{type:\"number\",default:10,minimum:0,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-line-height\":{type:\"number\",default:1.2,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-letter-spacing\":{type:\"number\",default:0,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-justify\":{type:\"enum\",values:{auto:{},left:{},center:{},right:{}},default:\"center\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-radial-offset\":{type:\"number\",units:\"ems\",default:0,requires:[\"text-field\"],\"property-type\":\"data-driven\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]}},\"text-variable-anchor\":{type:\"array\",value:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},requires:[\"text-field\",{\"symbol-placement\":[\"point\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-anchor\":{type:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},default:\"center\",requires:[\"text-field\",{\"!\":\"text-variable-anchor\"}],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-max-angle\":{type:\"number\",default:45,units:\"degrees\",requires:[\"text-field\",{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-writing-mode\":{type:\"array\",value:\"enum\",values:{horizontal:{},vertical:{}},requires:[\"text-field\",{\"symbol-placement\":[\"point\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotate\":{type:\"number\",default:0,period:360,units:\"degrees\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-padding\":{type:\"number\",default:2,minimum:0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-keep-upright\":{type:\"boolean\",default:!0,requires:[\"text-field\",{\"text-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-transform\":{type:\"enum\",values:{none:{},uppercase:{},lowercase:{}},default:\"none\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-offset\":{type:\"array\",value:\"number\",units:\"ems\",length:2,default:[0,0],requires:[\"text-field\",{\"!\":\"text-radial-offset\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-allow-overlap\":{type:\"boolean\",default:!1,requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-ignore-placement\":{type:\"boolean\",default:!1,requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-optional\":{type:\"boolean\",default:!1,requires:[\"text-field\",\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_raster:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_hillshade:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},filter:{type:\"array\",value:\"*\"},filter_operator:{type:\"enum\",values:{\"==\":{},\"!=\":{},\">\":{},\">=\":{},\"<\":{},\"<=\":{},in:{},\"!in\":{},all:{},any:{},none:{},has:{},\"!has\":{},within:{}}},geometry_type:{type:\"enum\",values:{Point:{},LineString:{},Polygon:{}}},function:{expression:{type:\"expression\"},stops:{type:\"array\",value:\"function_stop\"},base:{type:\"number\",default:1,minimum:0},property:{type:\"string\",default:\"$zoom\"},type:{type:\"enum\",values:{identity:{},exponential:{},interval:{},categorical:{}},default:\"exponential\"},colorSpace:{type:\"enum\",values:{rgb:{},lab:{},hcl:{}},default:\"rgb\"},default:{type:\"*\",required:!1}},function_stop:{type:\"array\",minimum:0,maximum:24,value:[\"number\",\"color\"],length:2},expression:{type:\"array\",value:\"*\",minimum:1},expression_name:{type:\"enum\",values:{let:{group:\"Variable binding\"},var:{group:\"Variable binding\"},literal:{group:\"Types\"},array:{group:\"Types\"},at:{group:\"Lookup\"},in:{group:\"Lookup\"},\"index-of\":{group:\"Lookup\"},slice:{group:\"Lookup\"},case:{group:\"Decision\"},match:{group:\"Decision\"},coalesce:{group:\"Decision\"},step:{group:\"Ramps, scales, curves\"},interpolate:{group:\"Ramps, scales, curves\"},\"interpolate-hcl\":{group:\"Ramps, scales, curves\"},\"interpolate-lab\":{group:\"Ramps, scales, curves\"},ln2:{group:\"Math\"},pi:{group:\"Math\"},e:{group:\"Math\"},typeof:{group:\"Types\"},string:{group:\"Types\"},number:{group:\"Types\"},boolean:{group:\"Types\"},object:{group:\"Types\"},collator:{group:\"Types\"},format:{group:\"Types\"},image:{group:\"Types\"},\"number-format\":{group:\"Types\"},\"to-string\":{group:\"Types\"},\"to-number\":{group:\"Types\"},\"to-boolean\":{group:\"Types\"},\"to-rgba\":{group:\"Color\"},\"to-color\":{group:\"Types\"},rgb:{group:\"Color\"},rgba:{group:\"Color\"},get:{group:\"Lookup\"},has:{group:\"Lookup\"},length:{group:\"Lookup\"},properties:{group:\"Feature data\"},\"feature-state\":{group:\"Feature data\"},\"geometry-type\":{group:\"Feature data\"},id:{group:\"Feature data\"},zoom:{group:\"Zoom\"},\"heatmap-density\":{group:\"Heatmap\"},\"line-progress\":{group:\"Feature data\"},accumulated:{group:\"Feature data\"},\"+\":{group:\"Math\"},\"*\":{group:\"Math\"},\"-\":{group:\"Math\"},\"/\":{group:\"Math\"},\"%\":{group:\"Math\"},\"^\":{group:\"Math\"},sqrt:{group:\"Math\"},log10:{group:\"Math\"},ln:{group:\"Math\"},log2:{group:\"Math\"},sin:{group:\"Math\"},cos:{group:\"Math\"},tan:{group:\"Math\"},asin:{group:\"Math\"},acos:{group:\"Math\"},atan:{group:\"Math\"},min:{group:\"Math\"},max:{group:\"Math\"},round:{group:\"Math\"},abs:{group:\"Math\"},ceil:{group:\"Math\"},floor:{group:\"Math\"},distance:{group:\"Math\"},\"==\":{group:\"Decision\"},\"!=\":{group:\"Decision\"},\">\":{group:\"Decision\"},\"<\":{group:\"Decision\"},\">=\":{group:\"Decision\"},\"<=\":{group:\"Decision\"},all:{group:\"Decision\"},any:{group:\"Decision\"},\"!\":{group:\"Decision\"},within:{group:\"Decision\"},\"is-supported-script\":{group:\"String\"},upcase:{group:\"String\"},downcase:{group:\"String\"},concat:{group:\"String\"},\"resolved-locale\":{group:\"String\"}}},light:{anchor:{type:\"enum\",default:\"viewport\",values:{map:{},viewport:{}},\"property-type\":\"data-constant\",transition:!1,expression:{interpolated:!1,parameters:[\"zoom\"]}},position:{type:\"array\",default:[1.15,210,30],length:3,value:\"number\",\"property-type\":\"data-constant\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]}},color:{type:\"color\",\"property-type\":\"data-constant\",default:\"#ffffff\",expression:{interpolated:!0,parameters:[\"zoom\"]},transition:!0},intensity:{type:\"number\",\"property-type\":\"data-constant\",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:[\"zoom\"]},transition:!0}},paint:[\"paint_fill\",\"paint_line\",\"paint_circle\",\"paint_heatmap\",\"paint_fill-extrusion\",\"paint_symbol\",\"paint_raster\",\"paint_hillshade\",\"paint_background\"],paint_fill:{\"fill-antialias\":{type:\"boolean\",default:!0,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"fill-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-outline-color\":{type:\"color\",transition:!0,requires:[{\"!\":\"fill-pattern\"},{\"fill-antialias\":!0}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"fill-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"}},\"paint_fill-extrusion\":{\"fill-extrusion-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"fill-extrusion-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"fill-extrusion-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"fill-extrusion-height\":{type:\"number\",default:0,minimum:0,units:\"meters\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-base\":{type:\"number\",default:0,minimum:0,units:\"meters\",transition:!0,requires:[\"fill-extrusion-height\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-vertical-gradient\":{type:\"boolean\",default:!0,transition:!1,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_line:{\"line-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"line-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"line-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-width\":{type:\"number\",default:1,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-gap-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-offset\":{type:\"number\",default:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-dasharray\":{type:\"array\",value:\"number\",minimum:0,transition:!0,units:\"line widths\",requires:[{\"!\":\"line-pattern\"}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"cross-faded\"},\"line-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"line-gradient\":{type:\"color\",transition:!1,requires:[{\"!\":\"line-dasharray\"},{\"!\":\"line-pattern\"},{source:\"geojson\",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:[\"line-progress\"]},\"property-type\":\"color-ramp\"}},paint_circle:{\"circle-radius\":{type:\"number\",default:5,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-blur\":{type:\"number\",default:0,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"circle-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-scale\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{}},default:\"viewport\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-stroke-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"}},paint_heatmap:{\"heatmap-radius\":{type:\"number\",default:30,minimum:1,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-weight\":{type:\"number\",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-intensity\":{type:\"number\",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"heatmap-color\":{type:\"color\",default:[\"interpolate\",[\"linear\"],[\"heatmap-density\"],0,\"rgba(0, 0, 255, 0)\",.1,\"royalblue\",.3,\"cyan\",.5,\"lime\",.7,\"yellow\",1,\"red\"],transition:!1,expression:{interpolated:!0,parameters:[\"heatmap-density\"]},\"property-type\":\"color-ramp\"},\"heatmap-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_symbol:{\"icon-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-color\":{type:\"color\",default:\"rgba(0, 0, 0, 0)\",transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"icon-image\",\"icon-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-color\":{type:\"color\",default:\"#000000\",transition:!0,overridable:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-color\":{type:\"color\",default:\"rgba(0, 0, 0, 0)\",transition:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"text-field\",\"text-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_raster:{\"raster-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-hue-rotate\":{type:\"number\",default:0,period:360,transition:!0,units:\"degrees\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-min\":{type:\"number\",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-max\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-saturation\":{type:\"number\",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-contrast\":{type:\"number\",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-resampling\":{type:\"enum\",values:{linear:{},nearest:{}},default:\"linear\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-fade-duration\":{type:\"number\",default:300,minimum:0,transition:!1,units:\"milliseconds\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_hillshade:{\"hillshade-illumination-direction\":{type:\"number\",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-illumination-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"viewport\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-exaggeration\":{type:\"number\",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-shadow-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-highlight-color\":{type:\"color\",default:\"#FFFFFF\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-accent-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_background:{\"background-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"background-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"background-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"cross-faded\"},\"background-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},transition:{duration:{type:\"number\",default:300,minimum:0,units:\"milliseconds\"},delay:{type:\"number\",default:0,minimum:0,units:\"milliseconds\"}},\"property-type\":{\"data-driven\":{type:\"property-type\"},\"cross-faded\":{type:\"property-type\"},\"cross-faded-data-driven\":{type:\"property-type\"},\"color-ramp\":{type:\"property-type\"},\"data-constant\":{type:\"property-type\"},constant:{type:\"property-type\"}},promoteId:{\"*\":{type:\"string\"}}},Ct=function(t,e,r,n){this.message=(t?t+\": \":\"\")+r,n&&(this.identifier=n),null!=e&&e.__line__&&(this.line=e.__line__)};function Pt(t){var e=t.key,r=t.value;return r?[new Ct(e,r,\"constants have been deprecated as of v8\")]:[]}function It(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];for(var n=0,i=e;n\":\"value\"===t.itemType.kind?\"array\":\"array<\"+e+\">\"}return t.kind}var Zt=[Ft,Bt,Nt,jt,Ut,Gt,Vt,Wt(Ht),Yt];function Jt(t,e){if(\"error\"===e.kind)return null;if(\"array\"===t.kind){if(\"array\"===e.kind&&(0===e.N&&\"value\"===e.itemType.kind||!Jt(t.itemType,e.itemType))&&(\"number\"!=typeof t.N||t.N===e.N))return null}else{if(t.kind===e.kind)return null;if(\"value\"===t.kind)for(var r=0,n=Zt;r255?255:t}function i(t){return t<0?0:t>1?1:t}function a(t){return\"%\"===t[t.length-1]?n(parseFloat(t)/100*255):n(parseInt(t))}function o(t){return\"%\"===t[t.length-1]?i(parseFloat(t)/100):i(parseFloat(t))}function s(t,e,r){return r<0?r+=1:r>1&&(r-=1),6*r<1?t+(e-t)*r*6:2*r<1?e:3*r<2?t+(e-t)*(2/3-r)*6:t}try{e.parseCSSColor=function(t){var e,i=t.replace(/ /g,\"\").toLowerCase();if(i in r)return r[i].slice();if(\"#\"===i[0])return 4===i.length?(e=parseInt(i.substr(1),16))>=0&&e<=4095?[(3840&e)>>4|(3840&e)>>8,240&e|(240&e)>>4,15&e|(15&e)<<4,1]:null:7===i.length&&(e=parseInt(i.substr(1),16))>=0&&e<=16777215?[(16711680&e)>>16,(65280&e)>>8,255&e,1]:null;var l=i.indexOf(\"(\"),c=i.indexOf(\")\");if(-1!==l&&c+1===i.length){var u=i.substr(0,l),f=i.substr(l+1,c-(l+1)).split(\",\"),h=1;switch(u){case\"rgba\":if(4!==f.length)return null;h=o(f.pop());case\"rgb\":return 3!==f.length?null:[a(f[0]),a(f[1]),a(f[2]),h];case\"hsla\":if(4!==f.length)return null;h=o(f.pop());case\"hsl\":if(3!==f.length)return null;var p=(parseFloat(f[0])%360+360)%360/360,d=o(f[1]),g=o(f[2]),m=g<=.5?g*(d+1):g+d-g*d,v=2*g-m;return[n(255*s(v,m,p+1/3)),n(255*s(v,m,p)),n(255*s(v,m,p-1/3)),h];default:return null}}return null}}catch(t){}})).parseCSSColor,te=function(t,e,r,n){void 0===n&&(n=1),this.r=t,this.g=e,this.b=r,this.a=n};te.parse=function(t){if(t){if(t instanceof te)return t;if(\"string\"==typeof t){var e=$t(t);if(e)return new te(e[0]/255*e[3],e[1]/255*e[3],e[2]/255*e[3],e[3])}}},te.prototype.toString=function(){var t=this.toArray(),e=t[0],r=t[1],n=t[2],i=t[3];return\"rgba(\"+Math.round(e)+\",\"+Math.round(r)+\",\"+Math.round(n)+\",\"+i+\")\"},te.prototype.toArray=function(){var t=this.r,e=this.g,r=this.b,n=this.a;return 0===n?[0,0,0,0]:[255*t/n,255*e/n,255*r/n,n]},te.black=new te(0,0,0,1),te.white=new te(1,1,1,1),te.transparent=new te(0,0,0,0),te.red=new te(1,0,0,1);var ee=function(t,e,r){this.sensitivity=t?e?\"variant\":\"case\":e?\"accent\":\"base\",this.locale=r,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:\"search\"})};ee.prototype.compare=function(t,e){return this.collator.compare(t,e)},ee.prototype.resolvedLocale=function(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale};var re=function(t,e,r,n,i){this.text=t,this.image=e,this.scale=r,this.fontStack=n,this.textColor=i},ne=function(t){this.sections=t};ne.fromString=function(t){return new ne([new re(t,null,null,null,null)])},ne.prototype.isEmpty=function(){return 0===this.sections.length||!this.sections.some((function(t){return 0!==t.text.length||t.image&&0!==t.image.name.length}))},ne.factory=function(t){return t instanceof ne?t:ne.fromString(t)},ne.prototype.toString=function(){return 0===this.sections.length?\"\":this.sections.map((function(t){return t.text})).join(\"\")},ne.prototype.serialize=function(){for(var t=[\"format\"],e=0,r=this.sections;e=0&&t<=255&&\"number\"==typeof e&&e>=0&&e<=255&&\"number\"==typeof r&&r>=0&&r<=255?void 0===n||\"number\"==typeof n&&n>=0&&n<=1?null:\"Invalid rgba value [\"+[t,e,r,n].join(\", \")+\"]: 'a' must be between 0 and 1.\":\"Invalid rgba value [\"+(\"number\"==typeof n?[t,e,r,n]:[t,e,r]).join(\", \")+\"]: 'r', 'g', and 'b' must be between 0 and 255.\"}function oe(t){if(null===t)return!0;if(\"string\"==typeof t)return!0;if(\"boolean\"==typeof t)return!0;if(\"number\"==typeof t)return!0;if(t instanceof te)return!0;if(t instanceof ee)return!0;if(t instanceof ne)return!0;if(t instanceof ie)return!0;if(Array.isArray(t)){for(var e=0,r=t;e2){var s=t[1];if(\"string\"!=typeof s||!(s in fe)||\"object\"===s)return e.error('The item type argument of \"array\" must be one of string, number, boolean',1);a=fe[s],n++}else a=Ht;if(t.length>3){if(null!==t[2]&&(\"number\"!=typeof t[2]||t[2]<0||t[2]!==Math.floor(t[2])))return e.error('The length argument to \"array\" must be a positive integer literal',2);o=t[2],n++}r=Wt(a,o)}else r=fe[i];for(var l=[];n1)&&e.push(n)}}return e.concat(this.args.map((function(t){return t.serialize()})))};var pe=function(t){this.type=Gt,this.sections=t};pe.parse=function(t,e){if(t.length<2)return e.error(\"Expected at least one argument.\");var r=t[1];if(!Array.isArray(r)&&\"object\"==typeof r)return e.error(\"First argument must be an image or text section.\");for(var n=[],i=!1,a=1;a<=t.length-1;++a){var o=t[a];if(i&&\"object\"==typeof o&&!Array.isArray(o)){i=!1;var s=null;if(o[\"font-scale\"]&&!(s=e.parse(o[\"font-scale\"],1,Bt)))return null;var l=null;if(o[\"text-font\"]&&!(l=e.parse(o[\"text-font\"],1,Wt(Nt))))return null;var c=null;if(o[\"text-color\"]&&!(c=e.parse(o[\"text-color\"],1,Ut)))return null;var u=n[n.length-1];u.scale=s,u.font=l,u.textColor=c}else{var f=e.parse(t[a],1,Ht);if(!f)return null;var h=f.type.kind;if(\"string\"!==h&&\"value\"!==h&&\"null\"!==h&&\"resolvedImage\"!==h)return e.error(\"Formatted text type must be 'string', 'value', 'image' or 'null'.\");i=!0,n.push({content:f,scale:null,font:null,textColor:null})}}return new pe(n)},pe.prototype.evaluate=function(t){return new ne(this.sections.map((function(e){var r=e.content.evaluate(t);return se(r)===Yt?new re(\"\",r,null,null,null):new re(le(r),null,e.scale?e.scale.evaluate(t):null,e.font?e.font.evaluate(t).join(\",\"):null,e.textColor?e.textColor.evaluate(t):null)})))},pe.prototype.eachChild=function(t){for(var e=0,r=this.sections;e-1),r},de.prototype.eachChild=function(t){t(this.input)},de.prototype.outputDefined=function(){return!1},de.prototype.serialize=function(){return[\"image\",this.input.serialize()]};var ge={\"to-boolean\":jt,\"to-color\":Ut,\"to-number\":Bt,\"to-string\":Nt},me=function(t,e){this.type=t,this.args=e};me.parse=function(t,e){if(t.length<2)return e.error(\"Expected at least one argument.\");var r=t[0];if((\"to-boolean\"===r||\"to-string\"===r)&&2!==t.length)return e.error(\"Expected one argument.\");for(var n=ge[r],i=[],a=1;a4?\"Invalid rbga value \"+JSON.stringify(e)+\": expected an array containing either three or four numeric values.\":ae(e[0],e[1],e[2],e[3])))return new te(e[0]/255,e[1]/255,e[2]/255,e[3])}throw new ue(r||\"Could not parse color from value '\"+(\"string\"==typeof e?e:String(JSON.stringify(e)))+\"'\")}if(\"number\"===this.type.kind){for(var o=null,s=0,l=this.args;s=e[2])&&(!(t[1]<=e[1])&&!(t[3]>=e[3])))}function Te(t,e){var r,n=(180+t[0])/360,i=(r=t[1],(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+r*Math.PI/360)))/360),a=Math.pow(2,e.z);return[Math.round(n*a*8192),Math.round(i*a*8192)]}function ke(t,e,r){return e[1]>t[1]!=r[1]>t[1]&&t[0]<(r[0]-e[0])*(t[1]-e[1])/(r[1]-e[1])+e[0]}function Ae(t,e){for(var r,n,i,a,o,s,l,c=!1,u=0,f=e.length;u0&&f<0||u<0&&f>0}function Ee(t,e,r){for(var n=0,i=r;nr[2]){var i=.5*n,a=t[0]-r[0]>i?-n:r[0]-t[0]>i?n:0;0===a&&(a=t[0]-r[2]>i?-n:r[2]-t[0]>i?n:0),t[0]+=a}_e(e,t)}function ze(t,e,r,n){for(var i=8192*Math.pow(2,n.z),a=[8192*n.x,8192*n.y],o=[],s=0,l=t;s=0)return!1;var r=!0;return t.eachChild((function(t){r&&!Ne(t,e)&&(r=!1)})),r}Re.parse=function(t,e){if(2!==t.length)return e.error(\"'within' expression requires exactly one argument, but found \"+(t.length-1)+\" instead.\");if(oe(t[1])){var r=t[1];if(\"FeatureCollection\"===r.type)for(var n=0;ne))throw new ue(\"Input is not a number.\");o=s-1}return 0}Ue.prototype.parse=function(t,e,r,n,i){return void 0===i&&(i={}),e?this.concat(e,r,n)._parse(t,i):this._parse(t,i)},Ue.prototype._parse=function(t,e){function r(t,e,r){return\"assert\"===r?new he(e,[t]):\"coerce\"===r?new me(e,[t]):t}if(null!==t&&\"string\"!=typeof t&&\"boolean\"!=typeof t&&\"number\"!=typeof t||(t=[\"literal\",t]),Array.isArray(t)){if(0===t.length)return this.error('Expected an array with at least one element. If you wanted a literal array, use [\"literal\", []].');var n=t[0];if(\"string\"!=typeof n)return this.error(\"Expression name must be a string, but found \"+typeof n+' instead. If you wanted a literal array, use [\"literal\", [...]].',0),null;var i=this.registry[n];if(i){var a=i.parse(t,this);if(!a)return null;if(this.expectedType){var o=this.expectedType,s=a.type;if(\"string\"!==o.kind&&\"number\"!==o.kind&&\"boolean\"!==o.kind&&\"object\"!==o.kind&&\"array\"!==o.kind||\"value\"!==s.kind)if(\"color\"!==o.kind&&\"formatted\"!==o.kind&&\"resolvedImage\"!==o.kind||\"value\"!==s.kind&&\"string\"!==s.kind){if(this.checkSubtype(o,s))return null}else a=r(a,o,e.typeAnnotation||\"coerce\");else a=r(a,o,e.typeAnnotation||\"assert\")}if(!(a instanceof ce)&&\"resolvedImage\"!==a.type.kind&&function t(e){if(e instanceof je)return t(e.boundExpression);if(e instanceof xe&&\"error\"===e.name)return!1;if(e instanceof be)return!1;if(e instanceof Re)return!1;var r=e instanceof me||e instanceof he,n=!0;if(e.eachChild((function(e){n=r?n&&t(e):n&&e instanceof ce})),!n)return!1;return Fe(e)&&Ne(e,[\"zoom\",\"heatmap-density\",\"line-progress\",\"accumulated\",\"is-supported-script\"])}(a)){var l=new ye;try{a=new ce(a.type,a.evaluate(l))}catch(t){return this.error(t.message),null}}return a}return this.error('Unknown expression \"'+n+'\". If you wanted a literal array, use [\"literal\", [...]].',0)}return void 0===t?this.error(\"'undefined' value invalid. Use null instead.\"):\"object\"==typeof t?this.error('Bare objects invalid. Use [\"literal\", {...}] instead.'):this.error(\"Expected an array, but found \"+typeof t+\" instead.\")},Ue.prototype.concat=function(t,e,r){var n=\"number\"==typeof t?this.path.concat(t):this.path,i=r?this.scope.concat(r):this.scope;return new Ue(this.registry,n,e||null,i,this.errors)},Ue.prototype.error=function(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];var n=\"\"+this.key+e.map((function(t){return\"[\"+t+\"]\"})).join(\"\");this.errors.push(new Dt(n,t))},Ue.prototype.checkSubtype=function(t,e){var r=Jt(t,e);return r&&this.error(r),r};var He=function(t,e,r){this.type=t,this.input=e,this.labels=[],this.outputs=[];for(var n=0,i=r;n=o)return e.error('Input/output pairs for \"step\" expressions must be arranged with input values in strictly ascending order.',l);var u=e.parse(s,c,i);if(!u)return null;i=i||u.type,n.push([o,u])}return new He(i,r,n)},He.prototype.evaluate=function(t){var e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);var n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);var i=e.length;return n>=e[i-1]?r[i-1].evaluate(t):r[Ve(e,n)].evaluate(t)},He.prototype.eachChild=function(t){t(this.input);for(var e=0,r=this.outputs;e0&&t.push(this.labels[e]),t.push(this.outputs[e].serialize());return t};var Ge=Object.freeze({__proto__:null,number:qe,color:function(t,e,r){return new te(qe(t.r,e.r,r),qe(t.g,e.g,r),qe(t.b,e.b,r),qe(t.a,e.a,r))},array:function(t,e,r){return t.map((function(t,n){return qe(t,e[n],r)}))}}),Ye=6/29,We=3*Ye*Ye,Xe=Math.PI/180,Ze=180/Math.PI;function Je(t){return t>.008856451679035631?Math.pow(t,1/3):t/We+4/29}function Ke(t){return t>Ye?t*t*t:We*(t-4/29)}function Qe(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function $e(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function tr(t){var e=$e(t.r),r=$e(t.g),n=$e(t.b),i=Je((.4124564*e+.3575761*r+.1804375*n)/.95047),a=Je((.2126729*e+.7151522*r+.072175*n)/1);return{l:116*a-16,a:500*(i-a),b:200*(a-Je((.0193339*e+.119192*r+.9503041*n)/1.08883)),alpha:t.a}}function er(t){var e=(t.l+16)/116,r=isNaN(t.a)?e:e+t.a/500,n=isNaN(t.b)?e:e-t.b/200;return e=1*Ke(e),r=.95047*Ke(r),n=1.08883*Ke(n),new te(Qe(3.2404542*r-1.5371385*e-.4985314*n),Qe(-.969266*r+1.8760108*e+.041556*n),Qe(.0556434*r-.2040259*e+1.0572252*n),t.alpha)}function rr(t,e,r){var n=e-t;return t+r*(n>180||n<-180?n-360*Math.round(n/360):n)}var nr={forward:tr,reverse:er,interpolate:function(t,e,r){return{l:qe(t.l,e.l,r),a:qe(t.a,e.a,r),b:qe(t.b,e.b,r),alpha:qe(t.alpha,e.alpha,r)}}},ir={forward:function(t){var e=tr(t),r=e.l,n=e.a,i=e.b,a=Math.atan2(i,n)*Ze;return{h:a<0?a+360:a,c:Math.sqrt(n*n+i*i),l:r,alpha:t.a}},reverse:function(t){var e=t.h*Xe,r=t.c;return er({l:t.l,a:Math.cos(e)*r,b:Math.sin(e)*r,alpha:t.alpha})},interpolate:function(t,e,r){return{h:rr(t.h,e.h,r),c:qe(t.c,e.c,r),l:qe(t.l,e.l,r),alpha:qe(t.alpha,e.alpha,r)}}},ar=Object.freeze({__proto__:null,lab:nr,hcl:ir}),or=function(t,e,r,n,i){this.type=t,this.operator=e,this.interpolation=r,this.input=n,this.labels=[],this.outputs=[];for(var a=0,o=i;a1})))return e.error(\"Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.\",1);n={name:\"cubic-bezier\",controlPoints:s}}if(t.length-1<4)return e.error(\"Expected at least 4 arguments, but found only \"+(t.length-1)+\".\");if((t.length-1)%2!=0)return e.error(\"Expected an even number of arguments.\");if(!(i=e.parse(i,2,Bt)))return null;var l=[],c=null;\"interpolate-hcl\"===r||\"interpolate-lab\"===r?c=Ut:e.expectedType&&\"value\"!==e.expectedType.kind&&(c=e.expectedType);for(var u=0;u=f)return e.error('Input/output pairs for \"interpolate\" expressions must be arranged with input values in strictly ascending order.',p);var g=e.parse(h,d,c);if(!g)return null;c=c||g.type,l.push([f,g])}return\"number\"===c.kind||\"color\"===c.kind||\"array\"===c.kind&&\"number\"===c.itemType.kind&&\"number\"==typeof c.N?new or(c,r,n,i,l):e.error(\"Type \"+Xt(c)+\" is not interpolatable.\")},or.prototype.evaluate=function(t){var e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);var n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);var i=e.length;if(n>=e[i-1])return r[i-1].evaluate(t);var a=Ve(e,n),o=e[a],s=e[a+1],l=or.interpolationFactor(this.interpolation,n,o,s),c=r[a].evaluate(t),u=r[a+1].evaluate(t);return\"interpolate\"===this.operator?Ge[this.type.kind.toLowerCase()](c,u,l):\"interpolate-hcl\"===this.operator?ir.reverse(ir.interpolate(ir.forward(c),ir.forward(u),l)):nr.reverse(nr.interpolate(nr.forward(c),nr.forward(u),l))},or.prototype.eachChild=function(t){t(this.input);for(var e=0,r=this.outputs;e=r.length)throw new ue(\"Array index out of bounds: \"+e+\" > \"+(r.length-1)+\".\");if(e!==Math.floor(e))throw new ue(\"Array index must be an integer, but found \"+e+\" instead.\");return r[e]},ur.prototype.eachChild=function(t){t(this.index),t(this.input)},ur.prototype.outputDefined=function(){return!1},ur.prototype.serialize=function(){return[\"at\",this.index.serialize(),this.input.serialize()]};var fr=function(t,e){this.type=jt,this.needle=t,this.haystack=e};fr.parse=function(t,e){if(3!==t.length)return e.error(\"Expected 2 arguments, but found \"+(t.length-1)+\" instead.\");var r=e.parse(t[1],1,Ht),n=e.parse(t[2],2,Ht);return r&&n?Kt(r.type,[jt,Nt,Bt,Ft,Ht])?new fr(r,n):e.error(\"Expected first argument to be of type boolean, string, number or null, but found \"+Xt(r.type)+\" instead\"):null},fr.prototype.evaluate=function(t){var e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!r)return!1;if(!Qt(e,[\"boolean\",\"string\",\"number\",\"null\"]))throw new ue(\"Expected first argument to be of type boolean, string, number or null, but found \"+Xt(se(e))+\" instead.\");if(!Qt(r,[\"string\",\"array\"]))throw new ue(\"Expected second argument to be of type array or string, but found \"+Xt(se(r))+\" instead.\");return r.indexOf(e)>=0},fr.prototype.eachChild=function(t){t(this.needle),t(this.haystack)},fr.prototype.outputDefined=function(){return!0},fr.prototype.serialize=function(){return[\"in\",this.needle.serialize(),this.haystack.serialize()]};var hr=function(t,e,r){this.type=Bt,this.needle=t,this.haystack=e,this.fromIndex=r};hr.parse=function(t,e){if(t.length<=2||t.length>=5)return e.error(\"Expected 3 or 4 arguments, but found \"+(t.length-1)+\" instead.\");var r=e.parse(t[1],1,Ht),n=e.parse(t[2],2,Ht);if(!r||!n)return null;if(!Kt(r.type,[jt,Nt,Bt,Ft,Ht]))return e.error(\"Expected first argument to be of type boolean, string, number or null, but found \"+Xt(r.type)+\" instead\");if(4===t.length){var i=e.parse(t[3],3,Bt);return i?new hr(r,n,i):null}return new hr(r,n)},hr.prototype.evaluate=function(t){var e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!Qt(e,[\"boolean\",\"string\",\"number\",\"null\"]))throw new ue(\"Expected first argument to be of type boolean, string, number or null, but found \"+Xt(se(e))+\" instead.\");if(!Qt(r,[\"string\",\"array\"]))throw new ue(\"Expected second argument to be of type array or string, but found \"+Xt(se(r))+\" instead.\");if(this.fromIndex){var n=this.fromIndex.evaluate(t);return r.indexOf(e,n)}return r.indexOf(e)},hr.prototype.eachChild=function(t){t(this.needle),t(this.haystack),this.fromIndex&&t(this.fromIndex)},hr.prototype.outputDefined=function(){return!1},hr.prototype.serialize=function(){if(null!=this.fromIndex&&void 0!==this.fromIndex){var t=this.fromIndex.serialize();return[\"index-of\",this.needle.serialize(),this.haystack.serialize(),t]}return[\"index-of\",this.needle.serialize(),this.haystack.serialize()]};var pr=function(t,e,r,n,i,a){this.inputType=t,this.type=e,this.input=r,this.cases=n,this.outputs=i,this.otherwise=a};pr.parse=function(t,e){if(t.length<5)return e.error(\"Expected at least 4 arguments, but found only \"+(t.length-1)+\".\");if(t.length%2!=1)return e.error(\"Expected an even number of arguments.\");var r,n;e.expectedType&&\"value\"!==e.expectedType.kind&&(n=e.expectedType);for(var i={},a=[],o=2;oNumber.MAX_SAFE_INTEGER)return c.error(\"Branch labels must be integers no larger than \"+Number.MAX_SAFE_INTEGER+\".\");if(\"number\"==typeof h&&Math.floor(h)!==h)return c.error(\"Numeric branch labels must be integer values.\");if(r){if(c.checkSubtype(r,se(h)))return null}else r=se(h);if(void 0!==i[String(h)])return c.error(\"Branch labels must be unique.\");i[String(h)]=a.length}var p=e.parse(l,o,n);if(!p)return null;n=n||p.type,a.push(p)}var d=e.parse(t[1],1,Ht);if(!d)return null;var g=e.parse(t[t.length-1],t.length-1,n);return g?\"value\"!==d.type.kind&&e.concat(1).checkSubtype(r,d.type)?null:new pr(r,n,d,i,a,g):null},pr.prototype.evaluate=function(t){var e=this.input.evaluate(t);return(se(e)===this.inputType&&this.outputs[this.cases[e]]||this.otherwise).evaluate(t)},pr.prototype.eachChild=function(t){t(this.input),this.outputs.forEach(t),t(this.otherwise)},pr.prototype.outputDefined=function(){return this.outputs.every((function(t){return t.outputDefined()}))&&this.otherwise.outputDefined()},pr.prototype.serialize=function(){for(var t=this,e=[\"match\",this.input.serialize()],r=[],n={},i=0,a=Object.keys(this.cases).sort();i=5)return e.error(\"Expected 3 or 4 arguments, but found \"+(t.length-1)+\" instead.\");var r=e.parse(t[1],1,Ht),n=e.parse(t[2],2,Bt);if(!r||!n)return null;if(!Kt(r.type,[Wt(Ht),Nt,Ht]))return e.error(\"Expected first argument to be of type array or string, but found \"+Xt(r.type)+\" instead\");if(4===t.length){var i=e.parse(t[3],3,Bt);return i?new gr(r.type,r,n,i):null}return new gr(r.type,r,n)},gr.prototype.evaluate=function(t){var e=this.input.evaluate(t),r=this.beginIndex.evaluate(t);if(!Qt(e,[\"string\",\"array\"]))throw new ue(\"Expected first argument to be of type array or string, but found \"+Xt(se(e))+\" instead.\");if(this.endIndex){var n=this.endIndex.evaluate(t);return e.slice(r,n)}return e.slice(r)},gr.prototype.eachChild=function(t){t(this.input),t(this.beginIndex),this.endIndex&&t(this.endIndex)},gr.prototype.outputDefined=function(){return!1},gr.prototype.serialize=function(){if(null!=this.endIndex&&void 0!==this.endIndex){var t=this.endIndex.serialize();return[\"slice\",this.input.serialize(),this.beginIndex.serialize(),t]}return[\"slice\",this.input.serialize(),this.beginIndex.serialize()]};var xr=yr(\"==\",(function(t,e,r){return e===r}),vr),br=yr(\"!=\",(function(t,e,r){return e!==r}),(function(t,e,r,n){return!vr(0,e,r,n)})),_r=yr(\"<\",(function(t,e,r){return e\",(function(t,e,r){return e>r}),(function(t,e,r,n){return n.compare(e,r)>0})),Tr=yr(\"<=\",(function(t,e,r){return e<=r}),(function(t,e,r,n){return n.compare(e,r)<=0})),kr=yr(\">=\",(function(t,e,r){return e>=r}),(function(t,e,r,n){return n.compare(e,r)>=0})),Ar=function(t,e,r,n,i){this.type=Nt,this.number=t,this.locale=e,this.currency=r,this.minFractionDigits=n,this.maxFractionDigits=i};Ar.parse=function(t,e){if(3!==t.length)return e.error(\"Expected two arguments.\");var r=e.parse(t[1],1,Bt);if(!r)return null;var n=t[2];if(\"object\"!=typeof n||Array.isArray(n))return e.error(\"NumberFormat options argument must be an object.\");var i=null;if(n.locale&&!(i=e.parse(n.locale,1,Nt)))return null;var a=null;if(n.currency&&!(a=e.parse(n.currency,1,Nt)))return null;var o=null;if(n[\"min-fraction-digits\"]&&!(o=e.parse(n[\"min-fraction-digits\"],1,Bt)))return null;var s=null;return n[\"max-fraction-digits\"]&&!(s=e.parse(n[\"max-fraction-digits\"],1,Bt))?null:new Ar(r,i,a,o,s)},Ar.prototype.evaluate=function(t){return new Intl.NumberFormat(this.locale?this.locale.evaluate(t):[],{style:this.currency?\"currency\":\"decimal\",currency:this.currency?this.currency.evaluate(t):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(t):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(t):void 0}).format(this.number.evaluate(t))},Ar.prototype.eachChild=function(t){t(this.number),this.locale&&t(this.locale),this.currency&&t(this.currency),this.minFractionDigits&&t(this.minFractionDigits),this.maxFractionDigits&&t(this.maxFractionDigits)},Ar.prototype.outputDefined=function(){return!1},Ar.prototype.serialize=function(){var t={};return this.locale&&(t.locale=this.locale.serialize()),this.currency&&(t.currency=this.currency.serialize()),this.minFractionDigits&&(t[\"min-fraction-digits\"]=this.minFractionDigits.serialize()),this.maxFractionDigits&&(t[\"max-fraction-digits\"]=this.maxFractionDigits.serialize()),[\"number-format\",this.number.serialize(),t]};var Mr=function(t){this.type=Bt,this.input=t};Mr.parse=function(t,e){if(2!==t.length)return e.error(\"Expected 1 argument, but found \"+(t.length-1)+\" instead.\");var r=e.parse(t[1],1);return r?\"array\"!==r.type.kind&&\"string\"!==r.type.kind&&\"value\"!==r.type.kind?e.error(\"Expected argument of type string or array, but found \"+Xt(r.type)+\" instead.\"):new Mr(r):null},Mr.prototype.evaluate=function(t){var e=this.input.evaluate(t);if(\"string\"==typeof e)return e.length;if(Array.isArray(e))return e.length;throw new ue(\"Expected value to be of type string or array, but found \"+Xt(se(e))+\" instead.\")},Mr.prototype.eachChild=function(t){t(this.input)},Mr.prototype.outputDefined=function(){return!1},Mr.prototype.serialize=function(){var t=[\"length\"];return this.eachChild((function(e){t.push(e.serialize())})),t};var Sr={\"==\":xr,\"!=\":br,\">\":wr,\"<\":_r,\">=\":kr,\"<=\":Tr,array:he,at:ur,boolean:he,case:dr,coalesce:lr,collator:be,format:pe,image:de,in:fr,\"index-of\":hr,interpolate:or,\"interpolate-hcl\":or,\"interpolate-lab\":or,length:Mr,let:cr,literal:ce,match:pr,number:he,\"number-format\":Ar,object:he,slice:gr,step:He,string:he,\"to-boolean\":me,\"to-color\":me,\"to-number\":me,\"to-string\":me,var:je,within:Re};function Er(t,e){var r=e[0],n=e[1],i=e[2],a=e[3];r=r.evaluate(t),n=n.evaluate(t),i=i.evaluate(t);var o=a?a.evaluate(t):1,s=ae(r,n,i,o);if(s)throw new ue(s);return new te(r/255*o,n/255*o,i/255*o,o)}function Lr(t,e){return t in e}function Cr(t,e){var r=e[t];return void 0===r?null:r}function Pr(t){return{type:t}}function Ir(t){return{result:\"success\",value:t}}function Or(t){return{result:\"error\",value:t}}function zr(t){return\"data-driven\"===t[\"property-type\"]||\"cross-faded-data-driven\"===t[\"property-type\"]}function Dr(t){return!!t.expression&&t.expression.parameters.indexOf(\"zoom\")>-1}function Rr(t){return!!t.expression&&t.expression.interpolated}function Fr(t){return t instanceof Number?\"number\":t instanceof String?\"string\":t instanceof Boolean?\"boolean\":Array.isArray(t)?\"array\":null===t?\"null\":typeof t}function Br(t){return\"object\"==typeof t&&null!==t&&!Array.isArray(t)}function Nr(t){return t}function jr(t,e,r){return void 0!==t?t:void 0!==e?e:void 0!==r?r:void 0}function Ur(t,e,r,n,i){return jr(typeof r===i?n[r]:void 0,t.default,e.default)}function Vr(t,e,r){if(\"number\"!==Fr(r))return jr(t.default,e.default);var n=t.stops.length;if(1===n)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[n-1][0])return t.stops[n-1][1];var i=Ve(t.stops.map((function(t){return t[0]})),r);return t.stops[i][1]}function Hr(t,e,r){var n=void 0!==t.base?t.base:1;if(\"number\"!==Fr(r))return jr(t.default,e.default);var i=t.stops.length;if(1===i)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[i-1][0])return t.stops[i-1][1];var a=Ve(t.stops.map((function(t){return t[0]})),r),o=function(t,e,r,n){var i=n-r,a=t-r;return 0===i?0:1===e?a/i:(Math.pow(e,a)-1)/(Math.pow(e,i)-1)}(r,n,t.stops[a][0],t.stops[a+1][0]),s=t.stops[a][1],l=t.stops[a+1][1],c=Ge[e.type]||Nr;if(t.colorSpace&&\"rgb\"!==t.colorSpace){var u=ar[t.colorSpace];c=function(t,e){return u.reverse(u.interpolate(u.forward(t),u.forward(e),o))}}return\"function\"==typeof s.evaluate?{evaluate:function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var r=s.evaluate.apply(void 0,t),n=l.evaluate.apply(void 0,t);if(void 0!==r&&void 0!==n)return c(r,n,o)}}:c(s,l,o)}function qr(t,e,r){return\"color\"===e.type?r=te.parse(r):\"formatted\"===e.type?r=ne.fromString(r.toString()):\"resolvedImage\"===e.type?r=ie.fromString(r.toString()):Fr(r)===e.type||\"enum\"===e.type&&e.values[r]||(r=void 0),jr(r,t.default,e.default)}xe.register(Sr,{error:[{kind:\"error\"},[Nt],function(t,e){var r=e[0];throw new ue(r.evaluate(t))}],typeof:[Nt,[Ht],function(t,e){return Xt(se(e[0].evaluate(t)))}],\"to-rgba\":[Wt(Bt,4),[Ut],function(t,e){return e[0].evaluate(t).toArray()}],rgb:[Ut,[Bt,Bt,Bt],Er],rgba:[Ut,[Bt,Bt,Bt,Bt],Er],has:{type:jt,overloads:[[[Nt],function(t,e){return Lr(e[0].evaluate(t),t.properties())}],[[Nt,Vt],function(t,e){var r=e[0],n=e[1];return Lr(r.evaluate(t),n.evaluate(t))}]]},get:{type:Ht,overloads:[[[Nt],function(t,e){return Cr(e[0].evaluate(t),t.properties())}],[[Nt,Vt],function(t,e){var r=e[0],n=e[1];return Cr(r.evaluate(t),n.evaluate(t))}]]},\"feature-state\":[Ht,[Nt],function(t,e){return Cr(e[0].evaluate(t),t.featureState||{})}],properties:[Vt,[],function(t){return t.properties()}],\"geometry-type\":[Nt,[],function(t){return t.geometryType()}],id:[Ht,[],function(t){return t.id()}],zoom:[Bt,[],function(t){return t.globals.zoom}],\"heatmap-density\":[Bt,[],function(t){return t.globals.heatmapDensity||0}],\"line-progress\":[Bt,[],function(t){return t.globals.lineProgress||0}],accumulated:[Ht,[],function(t){return void 0===t.globals.accumulated?null:t.globals.accumulated}],\"+\":[Bt,Pr(Bt),function(t,e){for(var r=0,n=0,i=e;n\":[jt,[Nt,Ht],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i>a}],\"filter-id->\":[jt,[Ht],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n>i}],\"filter-<=\":[jt,[Nt,Ht],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i<=a}],\"filter-id-<=\":[jt,[Ht],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n<=i}],\"filter->=\":[jt,[Nt,Ht],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i>=a}],\"filter-id->=\":[jt,[Ht],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n>=i}],\"filter-has\":[jt,[Ht],function(t,e){return e[0].value in t.properties()}],\"filter-has-id\":[jt,[],function(t){return null!==t.id()&&void 0!==t.id()}],\"filter-type-in\":[jt,[Wt(Nt)],function(t,e){return e[0].value.indexOf(t.geometryType())>=0}],\"filter-id-in\":[jt,[Wt(Ht)],function(t,e){return e[0].value.indexOf(t.id())>=0}],\"filter-in-small\":[jt,[Nt,Wt(Ht)],function(t,e){var r=e[0];return e[1].value.indexOf(t.properties()[r.value])>=0}],\"filter-in-large\":[jt,[Nt,Wt(Ht)],function(t,e){var r=e[0],n=e[1];return function(t,e,r,n){for(;r<=n;){var i=r+n>>1;if(e[i]===t)return!0;e[i]>t?n=i-1:r=i+1}return!1}(t.properties()[r.value],n.value,0,n.value.length-1)}],all:{type:jt,overloads:[[[jt,jt],function(t,e){var r=e[0],n=e[1];return r.evaluate(t)&&n.evaluate(t)}],[Pr(jt),function(t,e){for(var r=0,n=e;r0&&\"string\"==typeof t[0]&&t[0]in Sr}function Wr(t,e){var r=new Ue(Sr,[],e?function(t){var e={color:Ut,string:Nt,number:Bt,enum:Nt,boolean:jt,formatted:Gt,resolvedImage:Yt};if(\"array\"===t.type)return Wt(e[t.value]||Ht,t.length);return e[t.type]}(e):void 0),n=r.parse(t,void 0,void 0,void 0,e&&\"string\"===e.type?{typeAnnotation:\"coerce\"}:void 0);return n?Ir(new Gr(n,e)):Or(r.errors)}Gr.prototype.evaluateWithoutErrorHandling=function(t,e,r,n,i,a){return this._evaluator.globals=t,this._evaluator.feature=e,this._evaluator.featureState=r,this._evaluator.canonical=n,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=a,this.expression.evaluate(this._evaluator)},Gr.prototype.evaluate=function(t,e,r,n,i,a){this._evaluator.globals=t,this._evaluator.feature=e||null,this._evaluator.featureState=r||null,this._evaluator.canonical=n,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=a||null;try{var o=this.expression.evaluate(this._evaluator);if(null==o||\"number\"==typeof o&&o!=o)return this._defaultValue;if(this._enumValues&&!(o in this._enumValues))throw new ue(\"Expected value to be one of \"+Object.keys(this._enumValues).map((function(t){return JSON.stringify(t)})).join(\", \")+\", but found \"+JSON.stringify(o)+\" instead.\");return o}catch(t){return this._warningHistory[t.message]||(this._warningHistory[t.message]=!0,\"undefined\"!=typeof console&&console.warn(t.message)),this._defaultValue}};var Xr=function(t,e){this.kind=t,this._styleExpression=e,this.isStateDependent=\"constant\"!==t&&!Be(e.expression)};Xr.prototype.evaluateWithoutErrorHandling=function(t,e,r,n,i,a){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r,n,i,a)},Xr.prototype.evaluate=function(t,e,r,n,i,a){return this._styleExpression.evaluate(t,e,r,n,i,a)};var Zr=function(t,e,r,n){this.kind=t,this.zoomStops=r,this._styleExpression=e,this.isStateDependent=\"camera\"!==t&&!Be(e.expression),this.interpolationType=n};function Jr(t,e){if(\"error\"===(t=Wr(t,e)).result)return t;var r=t.value.expression,n=Fe(r);if(!n&&!zr(e))return Or([new Dt(\"\",\"data expressions not supported\")]);var i=Ne(r,[\"zoom\"]);if(!i&&!Dr(e))return Or([new Dt(\"\",\"zoom expressions not supported\")]);var a=function t(e){var r=null;if(e instanceof cr)r=t(e.result);else if(e instanceof lr)for(var n=0,i=e.args;nn.maximum?[new Ct(e,r,r+\" is greater than the maximum value \"+n.maximum)]:[]}function en(t){var e,r,n,i=t.valueSpec,a=Ot(t.value.type),o={},s=\"categorical\"!==a&&void 0===t.value.property,l=!s,c=\"array\"===Fr(t.value.stops)&&\"array\"===Fr(t.value.stops[0])&&\"object\"===Fr(t.value.stops[0][0]),u=Qr({key:t.key,value:t.value,valueSpec:t.styleSpec.function,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{stops:function(t){if(\"identity\"===a)return[new Ct(t.key,t.value,'identity function may not have a \"stops\" property')];var e=[],r=t.value;e=e.concat($r({key:t.key,value:r,valueSpec:t.valueSpec,style:t.style,styleSpec:t.styleSpec,arrayElementValidator:f})),\"array\"===Fr(r)&&0===r.length&&e.push(new Ct(t.key,r,\"array must have at least one stop\"));return e},default:function(t){return kn({key:t.key,value:t.value,valueSpec:i,style:t.style,styleSpec:t.styleSpec})}}});return\"identity\"===a&&s&&u.push(new Ct(t.key,t.value,'missing required property \"property\"')),\"identity\"===a||t.value.stops||u.push(new Ct(t.key,t.value,'missing required property \"stops\"')),\"exponential\"===a&&t.valueSpec.expression&&!Rr(t.valueSpec)&&u.push(new Ct(t.key,t.value,\"exponential functions not supported\")),t.styleSpec.$version>=8&&(l&&!zr(t.valueSpec)?u.push(new Ct(t.key,t.value,\"property functions not supported\")):s&&!Dr(t.valueSpec)&&u.push(new Ct(t.key,t.value,\"zoom functions not supported\"))),\"categorical\"!==a&&!c||void 0!==t.value.property||u.push(new Ct(t.key,t.value,'\"property\" property is required')),u;function f(t){var e=[],a=t.value,s=t.key;if(\"array\"!==Fr(a))return[new Ct(s,a,\"array expected, \"+Fr(a)+\" found\")];if(2!==a.length)return[new Ct(s,a,\"array length 2 expected, length \"+a.length+\" found\")];if(c){if(\"object\"!==Fr(a[0]))return[new Ct(s,a,\"object expected, \"+Fr(a[0])+\" found\")];if(void 0===a[0].zoom)return[new Ct(s,a,\"object stop key must have zoom\")];if(void 0===a[0].value)return[new Ct(s,a,\"object stop key must have value\")];if(n&&n>Ot(a[0].zoom))return[new Ct(s,a[0].zoom,\"stop zoom values must appear in ascending order\")];Ot(a[0].zoom)!==n&&(n=Ot(a[0].zoom),r=void 0,o={}),e=e.concat(Qr({key:s+\"[0]\",value:a[0],valueSpec:{zoom:{}},style:t.style,styleSpec:t.styleSpec,objectElementValidators:{zoom:tn,value:h}}))}else e=e.concat(h({key:s+\"[0]\",value:a[0],valueSpec:{},style:t.style,styleSpec:t.styleSpec},a));return Yr(zt(a[1]))?e.concat([new Ct(s+\"[1]\",a[1],\"expressions are not allowed in function stops.\")]):e.concat(kn({key:s+\"[1]\",value:a[1],valueSpec:i,style:t.style,styleSpec:t.styleSpec}))}function h(t,n){var s=Fr(t.value),l=Ot(t.value),c=null!==t.value?t.value:n;if(e){if(s!==e)return[new Ct(t.key,c,s+\" stop domain type must match previous stop domain type \"+e)]}else e=s;if(\"number\"!==s&&\"string\"!==s&&\"boolean\"!==s)return[new Ct(t.key,c,\"stop domain value must be a number, string, or boolean\")];if(\"number\"!==s&&\"categorical\"!==a){var u=\"number expected, \"+s+\" found\";return zr(i)&&void 0===a&&(u+='\\nIf you intended to use a categorical function, specify `\"type\": \"categorical\"`.'),[new Ct(t.key,c,u)]}return\"categorical\"!==a||\"number\"!==s||isFinite(l)&&Math.floor(l)===l?\"categorical\"!==a&&\"number\"===s&&void 0!==r&&l=2&&\"$id\"!==t[1]&&\"$type\"!==t[1];case\"in\":return t.length>=3&&(\"string\"!=typeof t[1]||Array.isArray(t[2]));case\"!in\":case\"!has\":case\"none\":return!1;case\"==\":case\"!=\":case\">\":case\">=\":case\"<\":case\"<=\":return 3!==t.length||Array.isArray(t[1])||Array.isArray(t[2]);case\"any\":case\"all\":for(var e=0,r=t.slice(1);ee?1:0}function cn(t){if(!t)return!0;var e,r=t[0];return t.length<=1?\"any\"!==r:\"==\"===r?un(t[1],t[2],\"==\"):\"!=\"===r?pn(un(t[1],t[2],\"==\")):\"<\"===r||\">\"===r||\"<=\"===r||\">=\"===r?un(t[1],t[2],r):\"any\"===r?(e=t.slice(1),[\"any\"].concat(e.map(cn))):\"all\"===r?[\"all\"].concat(t.slice(1).map(cn)):\"none\"===r?[\"all\"].concat(t.slice(1).map(cn).map(pn)):\"in\"===r?fn(t[1],t.slice(2)):\"!in\"===r?pn(fn(t[1],t.slice(2))):\"has\"===r?hn(t[1]):\"!has\"===r?pn(hn(t[1])):\"within\"!==r||t}function un(t,e,r){switch(t){case\"$type\":return[\"filter-type-\"+r,e];case\"$id\":return[\"filter-id-\"+r,e];default:return[\"filter-\"+r,t,e]}}function fn(t,e){if(0===e.length)return!1;switch(t){case\"$type\":return[\"filter-type-in\",[\"literal\",e]];case\"$id\":return[\"filter-id-in\",[\"literal\",e]];default:return e.length>200&&!e.some((function(t){return typeof t!=typeof e[0]}))?[\"filter-in-large\",t,[\"literal\",e.sort(ln)]]:[\"filter-in-small\",t,[\"literal\",e]]}}function hn(t){switch(t){case\"$type\":return!0;case\"$id\":return[\"filter-has-id\"];default:return[\"filter-has\",t]}}function pn(t){return[\"!\",t]}function dn(t){return an(zt(t.value))?rn(It({},t,{expressionContext:\"filter\",valueSpec:{value:\"boolean\"}})):function t(e){var r=e.value,n=e.key;if(\"array\"!==Fr(r))return[new Ct(n,r,\"array expected, \"+Fr(r)+\" found\")];var i,a=e.styleSpec,o=[];if(r.length<1)return[new Ct(n,r,\"filter array must have at least 1 element\")];switch(o=o.concat(nn({key:n+\"[0]\",value:r[0],valueSpec:a.filter_operator,style:e.style,styleSpec:e.styleSpec})),Ot(r[0])){case\"<\":case\"<=\":case\">\":case\">=\":r.length>=2&&\"$type\"===Ot(r[1])&&o.push(new Ct(n,r,'\"$type\" cannot be use with operator \"'+r[0]+'\"'));case\"==\":case\"!=\":3!==r.length&&o.push(new Ct(n,r,'filter array for operator \"'+r[0]+'\" must have 3 elements'));case\"in\":case\"!in\":r.length>=2&&\"string\"!==(i=Fr(r[1]))&&o.push(new Ct(n+\"[1]\",r[1],\"string expected, \"+i+\" found\"));for(var s=2;s=u[p+0]&&n>=u[p+1])?(o[h]=!0,a.push(c[h])):o[h]=!1}}},Dn.prototype._forEachCell=function(t,e,r,n,i,a,o,s){for(var l=this._convertToCellCoord(t),c=this._convertToCellCoord(e),u=this._convertToCellCoord(r),f=this._convertToCellCoord(n),h=l;h<=u;h++)for(var p=c;p<=f;p++){var d=this.d*p+h;if((!s||s(this._convertFromCellCoord(h),this._convertFromCellCoord(p),this._convertFromCellCoord(h+1),this._convertFromCellCoord(p+1)))&&i.call(this,t,e,r,n,d,a,o,s))return}},Dn.prototype._convertFromCellCoord=function(t){return(t-this.padding)/this.scale},Dn.prototype._convertToCellCoord=function(t){return Math.max(0,Math.min(this.d-1,Math.floor(t*this.scale)+this.padding))},Dn.prototype.toArrayBuffer=function(){if(this.arrayBuffer)return this.arrayBuffer;for(var t=this.cells,e=3+this.cells.length+1+1,r=0,n=0;n=0)){var f=t[u];c[u]=Bn[l].shallow.indexOf(u)>=0?f:Hn(f,e)}t instanceof Error&&(c.message=t.message)}if(c.$name)throw new Error(\"$name property is reserved for worker serialization logic.\");return\"Object\"!==l&&(c.$name=l),c}throw new Error(\"can't serialize object of type \"+typeof t)}function qn(t){if(null==t||\"boolean\"==typeof t||\"number\"==typeof t||\"string\"==typeof t||t instanceof Boolean||t instanceof Number||t instanceof String||t instanceof Date||t instanceof RegExp||Un(t)||Vn(t)||ArrayBuffer.isView(t)||t instanceof Rn)return t;if(Array.isArray(t))return t.map(qn);if(\"object\"==typeof t){var e=t.$name||\"Object\",r=Bn[e].klass;if(!r)throw new Error(\"can't deserialize unregistered class \"+e);if(r.deserialize)return r.deserialize(t);for(var n=Object.create(r.prototype),i=0,a=Object.keys(t);i=0?s:qn(s)}}return n}throw new Error(\"can't deserialize object of type \"+typeof t)}var Gn=function(){this.first=!0};Gn.prototype.update=function(t,e){var r=Math.floor(t);return this.first?(this.first=!1,this.lastIntegerZoom=r,this.lastIntegerZoomTime=0,this.lastZoom=t,this.lastFloorZoom=r,!0):(this.lastFloorZoom>r?(this.lastIntegerZoom=r+1,this.lastIntegerZoomTime=e):this.lastFloorZoom=128&&t<=255},Arabic:function(t){return t>=1536&&t<=1791},\"Arabic Supplement\":function(t){return t>=1872&&t<=1919},\"Arabic Extended-A\":function(t){return t>=2208&&t<=2303},\"Hangul Jamo\":function(t){return t>=4352&&t<=4607},\"Unified Canadian Aboriginal Syllabics\":function(t){return t>=5120&&t<=5759},Khmer:function(t){return t>=6016&&t<=6143},\"Unified Canadian Aboriginal Syllabics Extended\":function(t){return t>=6320&&t<=6399},\"General Punctuation\":function(t){return t>=8192&&t<=8303},\"Letterlike Symbols\":function(t){return t>=8448&&t<=8527},\"Number Forms\":function(t){return t>=8528&&t<=8591},\"Miscellaneous Technical\":function(t){return t>=8960&&t<=9215},\"Control Pictures\":function(t){return t>=9216&&t<=9279},\"Optical Character Recognition\":function(t){return t>=9280&&t<=9311},\"Enclosed Alphanumerics\":function(t){return t>=9312&&t<=9471},\"Geometric Shapes\":function(t){return t>=9632&&t<=9727},\"Miscellaneous Symbols\":function(t){return t>=9728&&t<=9983},\"Miscellaneous Symbols and Arrows\":function(t){return t>=11008&&t<=11263},\"CJK Radicals Supplement\":function(t){return t>=11904&&t<=12031},\"Kangxi Radicals\":function(t){return t>=12032&&t<=12255},\"Ideographic Description Characters\":function(t){return t>=12272&&t<=12287},\"CJK Symbols and Punctuation\":function(t){return t>=12288&&t<=12351},Hiragana:function(t){return t>=12352&&t<=12447},Katakana:function(t){return t>=12448&&t<=12543},Bopomofo:function(t){return t>=12544&&t<=12591},\"Hangul Compatibility Jamo\":function(t){return t>=12592&&t<=12687},Kanbun:function(t){return t>=12688&&t<=12703},\"Bopomofo Extended\":function(t){return t>=12704&&t<=12735},\"CJK Strokes\":function(t){return t>=12736&&t<=12783},\"Katakana Phonetic Extensions\":function(t){return t>=12784&&t<=12799},\"Enclosed CJK Letters and Months\":function(t){return t>=12800&&t<=13055},\"CJK Compatibility\":function(t){return t>=13056&&t<=13311},\"CJK Unified Ideographs Extension A\":function(t){return t>=13312&&t<=19903},\"Yijing Hexagram Symbols\":function(t){return t>=19904&&t<=19967},\"CJK Unified Ideographs\":function(t){return t>=19968&&t<=40959},\"Yi Syllables\":function(t){return t>=40960&&t<=42127},\"Yi Radicals\":function(t){return t>=42128&&t<=42191},\"Hangul Jamo Extended-A\":function(t){return t>=43360&&t<=43391},\"Hangul Syllables\":function(t){return t>=44032&&t<=55215},\"Hangul Jamo Extended-B\":function(t){return t>=55216&&t<=55295},\"Private Use Area\":function(t){return t>=57344&&t<=63743},\"CJK Compatibility Ideographs\":function(t){return t>=63744&&t<=64255},\"Arabic Presentation Forms-A\":function(t){return t>=64336&&t<=65023},\"Vertical Forms\":function(t){return t>=65040&&t<=65055},\"CJK Compatibility Forms\":function(t){return t>=65072&&t<=65103},\"Small Form Variants\":function(t){return t>=65104&&t<=65135},\"Arabic Presentation Forms-B\":function(t){return t>=65136&&t<=65279},\"Halfwidth and Fullwidth Forms\":function(t){return t>=65280&&t<=65519}};function Wn(t){for(var e=0,r=t;e=65097&&t<=65103)||(!!Yn[\"CJK Compatibility Ideographs\"](t)||(!!Yn[\"CJK Compatibility\"](t)||(!!Yn[\"CJK Radicals Supplement\"](t)||(!!Yn[\"CJK Strokes\"](t)||(!(!Yn[\"CJK Symbols and Punctuation\"](t)||t>=12296&&t<=12305||t>=12308&&t<=12319||12336===t)||(!!Yn[\"CJK Unified Ideographs Extension A\"](t)||(!!Yn[\"CJK Unified Ideographs\"](t)||(!!Yn[\"Enclosed CJK Letters and Months\"](t)||(!!Yn[\"Hangul Compatibility Jamo\"](t)||(!!Yn[\"Hangul Jamo Extended-A\"](t)||(!!Yn[\"Hangul Jamo Extended-B\"](t)||(!!Yn[\"Hangul Jamo\"](t)||(!!Yn[\"Hangul Syllables\"](t)||(!!Yn.Hiragana(t)||(!!Yn[\"Ideographic Description Characters\"](t)||(!!Yn.Kanbun(t)||(!!Yn[\"Kangxi Radicals\"](t)||(!!Yn[\"Katakana Phonetic Extensions\"](t)||(!(!Yn.Katakana(t)||12540===t)||(!(!Yn[\"Halfwidth and Fullwidth Forms\"](t)||65288===t||65289===t||65293===t||t>=65306&&t<=65310||65339===t||65341===t||65343===t||t>=65371&&t<=65503||65507===t||t>=65512&&t<=65519)||(!(!Yn[\"Small Form Variants\"](t)||t>=65112&&t<=65118||t>=65123&&t<=65126)||(!!Yn[\"Unified Canadian Aboriginal Syllabics\"](t)||(!!Yn[\"Unified Canadian Aboriginal Syllabics Extended\"](t)||(!!Yn[\"Vertical Forms\"](t)||(!!Yn[\"Yijing Hexagram Symbols\"](t)||(!!Yn[\"Yi Syllables\"](t)||!!Yn[\"Yi Radicals\"](t))))))))))))))))))))))))))))))}function Jn(t){return!(Zn(t)||function(t){return!(!Yn[\"Latin-1 Supplement\"](t)||167!==t&&169!==t&&174!==t&&177!==t&&188!==t&&189!==t&&190!==t&&215!==t&&247!==t)||(!(!Yn[\"General Punctuation\"](t)||8214!==t&&8224!==t&&8225!==t&&8240!==t&&8241!==t&&8251!==t&&8252!==t&&8258!==t&&8263!==t&&8264!==t&&8265!==t&&8273!==t)||(!!Yn[\"Letterlike Symbols\"](t)||(!!Yn[\"Number Forms\"](t)||(!(!Yn[\"Miscellaneous Technical\"](t)||!(t>=8960&&t<=8967||t>=8972&&t<=8991||t>=8996&&t<=9e3||9003===t||t>=9085&&t<=9114||t>=9150&&t<=9165||9167===t||t>=9169&&t<=9179||t>=9186&&t<=9215))||(!(!Yn[\"Control Pictures\"](t)||9251===t)||(!!Yn[\"Optical Character Recognition\"](t)||(!!Yn[\"Enclosed Alphanumerics\"](t)||(!!Yn[\"Geometric Shapes\"](t)||(!(!Yn[\"Miscellaneous Symbols\"](t)||t>=9754&&t<=9759)||(!(!Yn[\"Miscellaneous Symbols and Arrows\"](t)||!(t>=11026&&t<=11055||t>=11088&&t<=11097||t>=11192&&t<=11243))||(!!Yn[\"CJK Symbols and Punctuation\"](t)||(!!Yn.Katakana(t)||(!!Yn[\"Private Use Area\"](t)||(!!Yn[\"CJK Compatibility Forms\"](t)||(!!Yn[\"Small Form Variants\"](t)||(!!Yn[\"Halfwidth and Fullwidth Forms\"](t)||(8734===t||8756===t||8757===t||t>=9984&&t<=10087||t>=10102&&t<=10131||65532===t||65533===t)))))))))))))))))}(t))}function Kn(t){return t>=1424&&t<=2303||Yn[\"Arabic Presentation Forms-A\"](t)||Yn[\"Arabic Presentation Forms-B\"](t)}function Qn(t,e){return!(!e&&Kn(t))&&!(t>=2304&&t<=3583||t>=3840&&t<=4255||Yn.Khmer(t))}function $n(t){for(var e=0,r=t;e-1&&(ai=ni),ii&&ii(t)};function li(){ci.fire(new Mt(\"pluginStateChange\",{pluginStatus:ai,pluginURL:oi}))}var ci=new Et,ui=function(){return ai},fi=function(){if(ai!==ti||!oi)throw new Error(\"rtl-text-plugin cannot be downloaded unless a pluginURL is specified\");ai=ei,li(),oi&&xt({url:oi},(function(t){t?si(t):(ai=ri,li())}))},hi={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isLoaded:function(){return ai===ri||null!=hi.applyArabicShaping},isLoading:function(){return ai===ei},setState:function(t){ai=t.pluginStatus,oi=t.pluginURL},isParsed:function(){return null!=hi.applyArabicShaping&&null!=hi.processBidirectionalText&&null!=hi.processStyledBidirectionalText},getPluginURL:function(){return oi}},pi=function(t,e){this.zoom=t,e?(this.now=e.now,this.fadeDuration=e.fadeDuration,this.zoomHistory=e.zoomHistory,this.transition=e.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new Gn,this.transition={})};pi.prototype.isSupportedScript=function(t){return function(t,e){for(var r=0,n=t;rthis.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:e+(1-e)*r}:{fromScale:.5,toScale:1,t:1-(1-r)*e}};var di=function(t,e){this.property=t,this.value=e,this.expression=function(t,e){if(Br(t))return new Kr(t,e);if(Yr(t)){var r=Jr(t,e);if(\"error\"===r.result)throw new Error(r.value.map((function(t){return t.key+\": \"+t.message})).join(\", \"));return r.value}var n=t;return\"string\"==typeof t&&\"color\"===e.type&&(n=te.parse(t)),{kind:\"constant\",evaluate:function(){return n}}}(void 0===e?t.specification.default:e,t.specification)};di.prototype.isDataDriven=function(){return\"source\"===this.expression.kind||\"composite\"===this.expression.kind},di.prototype.possiblyEvaluate=function(t,e,r){return this.property.possiblyEvaluate(this,t,e,r)};var gi=function(t){this.property=t,this.value=new di(t,void 0)};gi.prototype.transitioned=function(t,e){return new vi(this.property,this.value,e,u({},t.transition,this.transition),t.now)},gi.prototype.untransitioned=function(){return new vi(this.property,this.value,null,{},0)};var mi=function(t){this._properties=t,this._values=Object.create(t.defaultTransitionablePropertyValues)};mi.prototype.getValue=function(t){return x(this._values[t].value.value)},mi.prototype.setValue=function(t,e){this._values.hasOwnProperty(t)||(this._values[t]=new gi(this._values[t].property)),this._values[t].value=new di(this._values[t].property,null===e?void 0:x(e))},mi.prototype.getTransition=function(t){return x(this._values[t].transition)},mi.prototype.setTransition=function(t,e){this._values.hasOwnProperty(t)||(this._values[t]=new gi(this._values[t].property)),this._values[t].transition=x(e)||void 0},mi.prototype.serialize=function(){for(var t={},e=0,r=Object.keys(this._values);ethis.end)return this.prior=null,i;if(this.value.isDataDriven())return this.prior=null,i;if(n=1)return 1;var e=t*t,r=e*t;return 4*(t<.5?r:3*(t-e)+r-.75)}(o))}return i};var yi=function(t){this._properties=t,this._values=Object.create(t.defaultTransitioningPropertyValues)};yi.prototype.possiblyEvaluate=function(t,e,r){for(var n=new _i(this._properties),i=0,a=Object.keys(this._values);in.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}},e.prototype.interpolate=function(t){return t},e}(Ti),Ai=function(t){this.specification=t};Ai.prototype.possiblyEvaluate=function(t,e,r,n){if(void 0!==t.value){if(\"constant\"===t.expression.kind){var i=t.expression.evaluate(e,null,{},r,n);return this._calculate(i,i,i,e)}return this._calculate(t.expression.evaluate(new pi(Math.floor(e.zoom-1),e)),t.expression.evaluate(new pi(Math.floor(e.zoom),e)),t.expression.evaluate(new pi(Math.floor(e.zoom+1),e)),e)}},Ai.prototype._calculate=function(t,e,r,n){return n.zoom>n.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}},Ai.prototype.interpolate=function(t){return t};var Mi=function(t){this.specification=t};Mi.prototype.possiblyEvaluate=function(t,e,r,n){return!!t.expression.evaluate(e,null,{},r,n)},Mi.prototype.interpolate=function(){return!1};var Si=function(t){for(var e in this.properties=t,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[],t){var r=t[e];r.specification.overridable&&this.overridableProperties.push(e);var n=this.defaultPropertyValues[e]=new di(r,void 0),i=this.defaultTransitionablePropertyValues[e]=new gi(r);this.defaultTransitioningPropertyValues[e]=i.untransitioned(),this.defaultPossiblyEvaluatedValues[e]=n.possiblyEvaluate({})}};Nn(\"DataDrivenProperty\",Ti),Nn(\"DataConstantProperty\",wi),Nn(\"CrossFadedDataDrivenProperty\",ki),Nn(\"CrossFadedProperty\",Ai),Nn(\"ColorRampProperty\",Mi);var Ei=function(t){function e(e,r){if(t.call(this),this.id=e.id,this.type=e.type,this._featureFilter={filter:function(){return!0},needGeometry:!1},\"custom\"!==e.type&&(e=e,this.metadata=e.metadata,this.minzoom=e.minzoom,this.maxzoom=e.maxzoom,\"background\"!==e.type&&(this.source=e.source,this.sourceLayer=e[\"source-layer\"],this.filter=e.filter),r.layout&&(this._unevaluatedLayout=new xi(r.layout)),r.paint)){for(var n in this._transitionablePaint=new mi(r.paint),e.paint)this.setPaintProperty(n,e.paint[n],{validate:!1});for(var i in e.layout)this.setLayoutProperty(i,e.layout[i],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new _i(r.paint)}}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getCrossfadeParameters=function(){return this._crossfadeParameters},e.prototype.getLayoutProperty=function(t){return\"visibility\"===t?this.visibility:this._unevaluatedLayout.getValue(t)},e.prototype.setLayoutProperty=function(t,e,r){if(void 0===r&&(r={}),null!=e){var n=\"layers.\"+this.id+\".layout.\"+t;if(this._validate(In,n,t,e,r))return}\"visibility\"!==t?this._unevaluatedLayout.setValue(t,e):this.visibility=e},e.prototype.getPaintProperty=function(t){return m(t,\"-transition\")?this._transitionablePaint.getTransition(t.slice(0,-\"-transition\".length)):this._transitionablePaint.getValue(t)},e.prototype.setPaintProperty=function(t,e,r){if(void 0===r&&(r={}),null!=e){var n=\"layers.\"+this.id+\".paint.\"+t;if(this._validate(Pn,n,t,e,r))return!1}if(m(t,\"-transition\"))return this._transitionablePaint.setTransition(t.slice(0,-\"-transition\".length),e||void 0),!1;var i=this._transitionablePaint._values[t],a=\"cross-faded-data-driven\"===i.property.specification[\"property-type\"],o=i.value.isDataDriven(),s=i.value;this._transitionablePaint.setValue(t,e),this._handleSpecialPaintPropertyUpdate(t);var l=this._transitionablePaint._values[t].value;return l.isDataDriven()||o||a||this._handleOverridablePaintPropertyUpdate(t,s,l)},e.prototype._handleSpecialPaintPropertyUpdate=function(t){},e.prototype._handleOverridablePaintPropertyUpdate=function(t,e,r){return!1},e.prototype.isHidden=function(t){return!!(this.minzoom&&t=this.maxzoom)||\"none\"===this.visibility)},e.prototype.updateTransitions=function(t){this._transitioningPaint=this._transitionablePaint.transitioned(t,this._transitioningPaint)},e.prototype.hasTransition=function(){return this._transitioningPaint.hasTransition()},e.prototype.recalculate=function(t,e){t.getCrossfadeParameters&&(this._crossfadeParameters=t.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(t,void 0,e)),this.paint=this._transitioningPaint.possiblyEvaluate(t,void 0,e)},e.prototype.serialize=function(){var t={id:this.id,type:this.type,source:this.source,\"source-layer\":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(t.layout=t.layout||{},t.layout.visibility=this.visibility),y(t,(function(t,e){return!(void 0===t||\"layout\"===e&&!Object.keys(t).length||\"paint\"===e&&!Object.keys(t).length)}))},e.prototype._validate=function(t,e,r,n,i){return void 0===i&&(i={}),(!i||!1!==i.validate)&&On(this,t.call(Ln,{key:e,layerType:this.type,objectKey:r,value:n,styleSpec:Lt,style:{glyphs:!0,sprite:!0}}))},e.prototype.is3D=function(){return!1},e.prototype.isTileClipped=function(){return!1},e.prototype.hasOffscreenPass=function(){return!1},e.prototype.resize=function(){},e.prototype.isStateDependent=function(){for(var t in this.paint._values){var e=this.paint.get(t);if(e instanceof bi&&zr(e.property.specification)&&((\"source\"===e.value.kind||\"composite\"===e.value.kind)&&e.value.isStateDependent))return!0}return!1},e}(Et),Li={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array},Ci=function(t,e){this._structArray=t,this._pos1=e*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8},Pi=function(){this.isTransferred=!1,this.capacity=-1,this.resize(0)};function Ii(t,e){void 0===e&&(e=1);var r=0,n=0;return{members:t.map((function(t){var i,a=(i=t.type,Li[i].BYTES_PER_ELEMENT),o=r=Oi(r,Math.max(e,a)),s=t.components||1;return n=Math.max(n,a),r+=a*s,{name:t.name,type:t.type,components:s,offset:o}})),size:Oi(r,Math.max(n,e)),alignment:e}}function Oi(t,e){return Math.ceil(t/e)*e}Pi.serialize=function(t,e){return t._trim(),e&&(t.isTransferred=!0,e.push(t.arrayBuffer)),{length:t.length,arrayBuffer:t.arrayBuffer}},Pi.deserialize=function(t){var e=Object.create(this.prototype);return e.arrayBuffer=t.arrayBuffer,e.length=t.length,e.capacity=t.arrayBuffer.byteLength/e.bytesPerElement,e._refreshViews(),e},Pi.prototype._trim=function(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())},Pi.prototype.clear=function(){this.length=0},Pi.prototype.resize=function(t){this.reserve(t),this.length=t},Pi.prototype.reserve=function(t){if(t>this.capacity){this.capacity=Math.max(t,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);var e=this.uint8;this._refreshViews(),e&&this.uint8.set(e)}},Pi.prototype._refreshViews=function(){throw new Error(\"_refreshViews() must be implemented by each concrete StructArray layout\")};var zi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var n=2*t;return this.int16[n+0]=e,this.int16[n+1]=r,t},e}(Pi);zi.prototype.bytesPerElement=4,Nn(\"StructArrayLayout2i4\",zi);var Di=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)},e.prototype.emplace=function(t,e,r,n,i){var a=4*t;return this.int16[a+0]=e,this.int16[a+1]=r,this.int16[a+2]=n,this.int16[a+3]=i,t},e}(Pi);Di.prototype.bytesPerElement=8,Nn(\"StructArrayLayout4i8\",Di);var Ri=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a){var o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,a)},e.prototype.emplace=function(t,e,r,n,i,a,o){var s=6*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.int16[s+2]=n,this.int16[s+3]=i,this.int16[s+4]=a,this.int16[s+5]=o,t},e}(Pi);Ri.prototype.bytesPerElement=12,Nn(\"StructArrayLayout2i4i12\",Ri);var Fi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a){var o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,a)},e.prototype.emplace=function(t,e,r,n,i,a,o){var s=4*t,l=8*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.uint8[l+4]=n,this.uint8[l+5]=i,this.uint8[l+6]=a,this.uint8[l+7]=o,t},e}(Pi);Fi.prototype.bytesPerElement=8,Nn(\"StructArrayLayout2i4ub8\",Fi);var Bi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l,c){var u=this.length;return this.resize(u+1),this.emplace(u,t,e,r,n,i,a,o,s,l,c)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,c,u){var f=9*t,h=18*t;return this.uint16[f+0]=e,this.uint16[f+1]=r,this.uint16[f+2]=n,this.uint16[f+3]=i,this.uint16[f+4]=a,this.uint16[f+5]=o,this.uint16[f+6]=s,this.uint16[f+7]=l,this.uint8[h+16]=c,this.uint8[h+17]=u,t},e}(Pi);Bi.prototype.bytesPerElement=18,Nn(\"StructArrayLayout8ui2ub18\",Bi);var Ni=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l,c,u,f){var h=this.length;return this.resize(h+1),this.emplace(h,t,e,r,n,i,a,o,s,l,c,u,f)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,c,u,f,h){var p=12*t;return this.int16[p+0]=e,this.int16[p+1]=r,this.int16[p+2]=n,this.int16[p+3]=i,this.uint16[p+4]=a,this.uint16[p+5]=o,this.uint16[p+6]=s,this.uint16[p+7]=l,this.int16[p+8]=c,this.int16[p+9]=u,this.int16[p+10]=f,this.int16[p+11]=h,t},e}(Pi);Ni.prototype.bytesPerElement=24,Nn(\"StructArrayLayout4i4ui4i24\",Ni);var ji=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=3*t;return this.float32[i+0]=e,this.float32[i+1]=r,this.float32[i+2]=n,t},e}(Pi);ji.prototype.bytesPerElement=12,Nn(\"StructArrayLayout3f12\",ji);var Ui=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){var r=1*t;return this.uint32[r+0]=e,t},e}(Pi);Ui.prototype.bytesPerElement=4,Nn(\"StructArrayLayout1ul4\",Ui);var Vi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l){var c=this.length;return this.resize(c+1),this.emplace(c,t,e,r,n,i,a,o,s,l)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,c){var u=10*t,f=5*t;return this.int16[u+0]=e,this.int16[u+1]=r,this.int16[u+2]=n,this.int16[u+3]=i,this.int16[u+4]=a,this.int16[u+5]=o,this.uint32[f+3]=s,this.uint16[u+8]=l,this.uint16[u+9]=c,t},e}(Pi);Vi.prototype.bytesPerElement=20,Nn(\"StructArrayLayout6i1ul2ui20\",Vi);var Hi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a){var o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,a)},e.prototype.emplace=function(t,e,r,n,i,a,o){var s=6*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.int16[s+2]=n,this.int16[s+3]=i,this.int16[s+4]=a,this.int16[s+5]=o,t},e}(Pi);Hi.prototype.bytesPerElement=12,Nn(\"StructArrayLayout2i2i2i12\",Hi);var qi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i){var a=this.length;return this.resize(a+1),this.emplace(a,t,e,r,n,i)},e.prototype.emplace=function(t,e,r,n,i,a){var o=4*t,s=8*t;return this.float32[o+0]=e,this.float32[o+1]=r,this.float32[o+2]=n,this.int16[s+6]=i,this.int16[s+7]=a,t},e}(Pi);qi.prototype.bytesPerElement=16,Nn(\"StructArrayLayout2f1f2i16\",qi);var Gi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)},e.prototype.emplace=function(t,e,r,n,i){var a=12*t,o=3*t;return this.uint8[a+0]=e,this.uint8[a+1]=r,this.float32[o+1]=n,this.float32[o+2]=i,t},e}(Pi);Gi.prototype.bytesPerElement=12,Nn(\"StructArrayLayout2ub2f12\",Gi);var Yi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=3*t;return this.uint16[i+0]=e,this.uint16[i+1]=r,this.uint16[i+2]=n,t},e}(Pi);Yi.prototype.bytesPerElement=6,Nn(\"StructArrayLayout3ui6\",Yi);var Wi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m){var v=this.length;return this.resize(v+1),this.emplace(v,t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m,v){var y=24*t,x=12*t,b=48*t;return this.int16[y+0]=e,this.int16[y+1]=r,this.uint16[y+2]=n,this.uint16[y+3]=i,this.uint32[x+2]=a,this.uint32[x+3]=o,this.uint32[x+4]=s,this.uint16[y+10]=l,this.uint16[y+11]=c,this.uint16[y+12]=u,this.float32[x+7]=f,this.float32[x+8]=h,this.uint8[b+36]=p,this.uint8[b+37]=d,this.uint8[b+38]=g,this.uint32[x+10]=m,this.int16[y+22]=v,t},e}(Pi);Wi.prototype.bytesPerElement=48,Nn(\"StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48\",Wi);var Xi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m,v,y,x,b,_,w,T,k,A,M,S){var E=this.length;return this.resize(E+1),this.emplace(E,t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m,v,y,x,b,_,w,T,k,A,M,S)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m,v,y,x,b,_,w,T,k,A,M,S,E){var L=34*t,C=17*t;return this.int16[L+0]=e,this.int16[L+1]=r,this.int16[L+2]=n,this.int16[L+3]=i,this.int16[L+4]=a,this.int16[L+5]=o,this.int16[L+6]=s,this.int16[L+7]=l,this.uint16[L+8]=c,this.uint16[L+9]=u,this.uint16[L+10]=f,this.uint16[L+11]=h,this.uint16[L+12]=p,this.uint16[L+13]=d,this.uint16[L+14]=g,this.uint16[L+15]=m,this.uint16[L+16]=v,this.uint16[L+17]=y,this.uint16[L+18]=x,this.uint16[L+19]=b,this.uint16[L+20]=_,this.uint16[L+21]=w,this.uint16[L+22]=T,this.uint32[C+12]=k,this.float32[C+13]=A,this.float32[C+14]=M,this.float32[C+15]=S,this.float32[C+16]=E,t},e}(Pi);Xi.prototype.bytesPerElement=68,Nn(\"StructArrayLayout8i15ui1ul4f68\",Xi);var Zi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){var r=1*t;return this.float32[r+0]=e,t},e}(Pi);Zi.prototype.bytesPerElement=4,Nn(\"StructArrayLayout1f4\",Zi);var Ji=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=3*t;return this.int16[i+0]=e,this.int16[i+1]=r,this.int16[i+2]=n,t},e}(Pi);Ji.prototype.bytesPerElement=6,Nn(\"StructArrayLayout3i6\",Ji);var Ki=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=2*t,a=4*t;return this.uint32[i+0]=e,this.uint16[a+2]=r,this.uint16[a+3]=n,t},e}(Pi);Ki.prototype.bytesPerElement=8,Nn(\"StructArrayLayout1ul2ui8\",Ki);var Qi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var n=2*t;return this.uint16[n+0]=e,this.uint16[n+1]=r,t},e}(Pi);Qi.prototype.bytesPerElement=4,Nn(\"StructArrayLayout2ui4\",Qi);var $i=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){var r=1*t;return this.uint16[r+0]=e,t},e}(Pi);$i.prototype.bytesPerElement=2,Nn(\"StructArrayLayout1ui2\",$i);var ta=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var n=2*t;return this.float32[n+0]=e,this.float32[n+1]=r,t},e}(Pi);ta.prototype.bytesPerElement=8,Nn(\"StructArrayLayout2f8\",ta);var ea=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)},e.prototype.emplace=function(t,e,r,n,i){var a=4*t;return this.float32[a+0]=e,this.float32[a+1]=r,this.float32[a+2]=n,this.float32[a+3]=i,t},e}(Pi);ea.prototype.bytesPerElement=16,Nn(\"StructArrayLayout4f16\",ea);var ra=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={anchorPointX:{configurable:!0},anchorPointY:{configurable:!0},x1:{configurable:!0},y1:{configurable:!0},x2:{configurable:!0},y2:{configurable:!0},featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0},anchorPoint:{configurable:!0}};return r.anchorPointX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorPointY.get=function(){return this._structArray.int16[this._pos2+1]},r.x1.get=function(){return this._structArray.int16[this._pos2+2]},r.y1.get=function(){return this._structArray.int16[this._pos2+3]},r.x2.get=function(){return this._structArray.int16[this._pos2+4]},r.y2.get=function(){return this._structArray.int16[this._pos2+5]},r.featureIndex.get=function(){return this._structArray.uint32[this._pos4+3]},r.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+8]},r.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+9]},r.anchorPoint.get=function(){return new i(this.anchorPointX,this.anchorPointY)},Object.defineProperties(e.prototype,r),e}(Ci);ra.prototype.size=20;var na=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new ra(this,t)},e}(Vi);Nn(\"CollisionBoxArray\",na);var ia=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={anchorX:{configurable:!0},anchorY:{configurable:!0},glyphStartIndex:{configurable:!0},numGlyphs:{configurable:!0},vertexStartIndex:{configurable:!0},lineStartIndex:{configurable:!0},lineLength:{configurable:!0},segment:{configurable:!0},lowerSize:{configurable:!0},upperSize:{configurable:!0},lineOffsetX:{configurable:!0},lineOffsetY:{configurable:!0},writingMode:{configurable:!0},placedOrientation:{configurable:!0},hidden:{configurable:!0},crossTileID:{configurable:!0},associatedIconIndex:{configurable:!0}};return r.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},r.glyphStartIndex.get=function(){return this._structArray.uint16[this._pos2+2]},r.numGlyphs.get=function(){return this._structArray.uint16[this._pos2+3]},r.vertexStartIndex.get=function(){return this._structArray.uint32[this._pos4+2]},r.lineStartIndex.get=function(){return this._structArray.uint32[this._pos4+3]},r.lineLength.get=function(){return this._structArray.uint32[this._pos4+4]},r.segment.get=function(){return this._structArray.uint16[this._pos2+10]},r.lowerSize.get=function(){return this._structArray.uint16[this._pos2+11]},r.upperSize.get=function(){return this._structArray.uint16[this._pos2+12]},r.lineOffsetX.get=function(){return this._structArray.float32[this._pos4+7]},r.lineOffsetY.get=function(){return this._structArray.float32[this._pos4+8]},r.writingMode.get=function(){return this._structArray.uint8[this._pos1+36]},r.placedOrientation.get=function(){return this._structArray.uint8[this._pos1+37]},r.placedOrientation.set=function(t){this._structArray.uint8[this._pos1+37]=t},r.hidden.get=function(){return this._structArray.uint8[this._pos1+38]},r.hidden.set=function(t){this._structArray.uint8[this._pos1+38]=t},r.crossTileID.get=function(){return this._structArray.uint32[this._pos4+10]},r.crossTileID.set=function(t){this._structArray.uint32[this._pos4+10]=t},r.associatedIconIndex.get=function(){return this._structArray.int16[this._pos2+22]},Object.defineProperties(e.prototype,r),e}(Ci);ia.prototype.size=48;var aa=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new ia(this,t)},e}(Wi);Nn(\"PlacedSymbolArray\",aa);var oa=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={anchorX:{configurable:!0},anchorY:{configurable:!0},rightJustifiedTextSymbolIndex:{configurable:!0},centerJustifiedTextSymbolIndex:{configurable:!0},leftJustifiedTextSymbolIndex:{configurable:!0},verticalPlacedTextSymbolIndex:{configurable:!0},placedIconSymbolIndex:{configurable:!0},verticalPlacedIconSymbolIndex:{configurable:!0},key:{configurable:!0},textBoxStartIndex:{configurable:!0},textBoxEndIndex:{configurable:!0},verticalTextBoxStartIndex:{configurable:!0},verticalTextBoxEndIndex:{configurable:!0},iconBoxStartIndex:{configurable:!0},iconBoxEndIndex:{configurable:!0},verticalIconBoxStartIndex:{configurable:!0},verticalIconBoxEndIndex:{configurable:!0},featureIndex:{configurable:!0},numHorizontalGlyphVertices:{configurable:!0},numVerticalGlyphVertices:{configurable:!0},numIconVertices:{configurable:!0},numVerticalIconVertices:{configurable:!0},useRuntimeCollisionCircles:{configurable:!0},crossTileID:{configurable:!0},textBoxScale:{configurable:!0},textOffset0:{configurable:!0},textOffset1:{configurable:!0},collisionCircleDiameter:{configurable:!0}};return r.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},r.rightJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+2]},r.centerJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+3]},r.leftJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+4]},r.verticalPlacedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+5]},r.placedIconSymbolIndex.get=function(){return this._structArray.int16[this._pos2+6]},r.verticalPlacedIconSymbolIndex.get=function(){return this._structArray.int16[this._pos2+7]},r.key.get=function(){return this._structArray.uint16[this._pos2+8]},r.textBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+9]},r.textBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+10]},r.verticalTextBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+11]},r.verticalTextBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+12]},r.iconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+13]},r.iconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+14]},r.verticalIconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+15]},r.verticalIconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+16]},r.featureIndex.get=function(){return this._structArray.uint16[this._pos2+17]},r.numHorizontalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+18]},r.numVerticalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+19]},r.numIconVertices.get=function(){return this._structArray.uint16[this._pos2+20]},r.numVerticalIconVertices.get=function(){return this._structArray.uint16[this._pos2+21]},r.useRuntimeCollisionCircles.get=function(){return this._structArray.uint16[this._pos2+22]},r.crossTileID.get=function(){return this._structArray.uint32[this._pos4+12]},r.crossTileID.set=function(t){this._structArray.uint32[this._pos4+12]=t},r.textBoxScale.get=function(){return this._structArray.float32[this._pos4+13]},r.textOffset0.get=function(){return this._structArray.float32[this._pos4+14]},r.textOffset1.get=function(){return this._structArray.float32[this._pos4+15]},r.collisionCircleDiameter.get=function(){return this._structArray.float32[this._pos4+16]},Object.defineProperties(e.prototype,r),e}(Ci);oa.prototype.size=68;var sa=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new oa(this,t)},e}(Xi);Nn(\"SymbolInstanceArray\",sa);var la=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getoffsetX=function(t){return this.float32[1*t+0]},e}(Zi);Nn(\"GlyphOffsetArray\",la);var ca=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getx=function(t){return this.int16[3*t+0]},e.prototype.gety=function(t){return this.int16[3*t+1]},e.prototype.gettileUnitDistanceFromAnchor=function(t){return this.int16[3*t+2]},e}(Ji);Nn(\"SymbolLineVertexArray\",ca);var ua=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0}};return r.featureIndex.get=function(){return this._structArray.uint32[this._pos4+0]},r.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+2]},r.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+3]},Object.defineProperties(e.prototype,r),e}(Ci);ua.prototype.size=8;var fa=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new ua(this,t)},e}(Ki);Nn(\"FeatureIndexArray\",fa);var ha=Ii([{name:\"a_pos\",components:2,type:\"Int16\"}],4).members,pa=function(t){void 0===t&&(t=[]),this.segments=t};function da(t,e){return 256*(t=l(Math.floor(t),0,255))+(e=l(Math.floor(e),0,255))}pa.prototype.prepareSegment=function(t,e,r,n){var i=this.segments[this.segments.length-1];return t>pa.MAX_VERTEX_ARRAY_LENGTH&&_(\"Max vertices per segment is \"+pa.MAX_VERTEX_ARRAY_LENGTH+\": bucket requested \"+t),(!i||i.vertexLength+t>pa.MAX_VERTEX_ARRAY_LENGTH||i.sortKey!==n)&&(i={vertexOffset:e.length,primitiveOffset:r.length,vertexLength:0,primitiveLength:0},void 0!==n&&(i.sortKey=n),this.segments.push(i)),i},pa.prototype.get=function(){return this.segments},pa.prototype.destroy=function(){for(var t=0,e=this.segments;t>>16)*o&65535)<<16)&4294967295)<<15|l>>>17))*s+(((l>>>16)*s&65535)<<16)&4294967295)<<13|i>>>19))+((5*(i>>>16)&65535)<<16)&4294967295))+((58964+(a>>>16)&65535)<<16);switch(l=0,r){case 3:l^=(255&t.charCodeAt(c+2))<<16;case 2:l^=(255&t.charCodeAt(c+1))<<8;case 1:i^=l=(65535&(l=(l=(65535&(l^=255&t.charCodeAt(c)))*o+(((l>>>16)*o&65535)<<16)&4294967295)<<15|l>>>17))*s+(((l>>>16)*s&65535)<<16)&4294967295}return i^=t.length,i=2246822507*(65535&(i^=i>>>16))+((2246822507*(i>>>16)&65535)<<16)&4294967295,i=3266489909*(65535&(i^=i>>>13))+((3266489909*(i>>>16)&65535)<<16)&4294967295,(i^=i>>>16)>>>0}})),va=e((function(t){t.exports=function(t,e){for(var r,n=t.length,i=e^n,a=0;n>=4;)r=1540483477*(65535&(r=255&t.charCodeAt(a)|(255&t.charCodeAt(++a))<<8|(255&t.charCodeAt(++a))<<16|(255&t.charCodeAt(++a))<<24))+((1540483477*(r>>>16)&65535)<<16),i=1540483477*(65535&i)+((1540483477*(i>>>16)&65535)<<16)^(r=1540483477*(65535&(r^=r>>>24))+((1540483477*(r>>>16)&65535)<<16)),n-=4,++a;switch(n){case 3:i^=(255&t.charCodeAt(a+2))<<16;case 2:i^=(255&t.charCodeAt(a+1))<<8;case 1:i=1540483477*(65535&(i^=255&t.charCodeAt(a)))+((1540483477*(i>>>16)&65535)<<16)}return i=1540483477*(65535&(i^=i>>>13))+((1540483477*(i>>>16)&65535)<<16),(i^=i>>>15)>>>0}})),ya=ma,xa=ma,ba=va;ya.murmur3=xa,ya.murmur2=ba;var _a=function(){this.ids=[],this.positions=[],this.indexed=!1};_a.prototype.add=function(t,e,r,n){this.ids.push(Ta(t)),this.positions.push(e,r,n)},_a.prototype.getPositions=function(t){for(var e=Ta(t),r=0,n=this.ids.length-1;r>1;this.ids[i]>=e?n=i:r=i+1}for(var a=[];this.ids[r]===e;){var o=this.positions[3*r],s=this.positions[3*r+1],l=this.positions[3*r+2];a.push({index:o,start:s,end:l}),r++}return a},_a.serialize=function(t,e){var r=new Float64Array(t.ids),n=new Uint32Array(t.positions);return function t(e,r,n,i){for(;n>1],o=n-1,s=i+1;;){do{o++}while(e[o]a);if(o>=s)break;ka(e,o,s),ka(r,3*o,3*s),ka(r,3*o+1,3*s+1),ka(r,3*o+2,3*s+2)}s-nGa.max||o.yGa.max)&&(_(\"Geometry exceeds allowed extent, reduce your vector tile buffer size\"),o.x=l(o.x,Ga.min,Ga.max),o.y=l(o.y,Ga.min,Ga.max))}return r}function Wa(t,e,r,n,i){t.emplaceBack(2*e+(n+1)/2,2*r+(i+1)/2)}var Xa=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((function(t){return t.id})),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new zi,this.indexArray=new Yi,this.segments=new pa,this.programConfigurations=new Ua(ha,t.layers,t.zoom),this.stateDependentLayerIds=this.layers.filter((function(t){return t.isStateDependent()})).map((function(t){return t.id}))};function Za(t,e){for(var r=0;r1){if($a(t,e))return!0;for(var n=0;n1?t.distSqr(r):t.distSqr(r.sub(e)._mult(i)._add(e))}function no(t,e){for(var r,n,i,a=!1,o=0;oe.y!=i.y>e.y&&e.x<(i.x-n.x)*(e.y-n.y)/(i.y-n.y)+n.x&&(a=!a);return a}function io(t,e){for(var r=!1,n=0,i=t.length-1;ne.y!=o.y>e.y&&e.x<(o.x-a.x)*(e.y-a.y)/(o.y-a.y)+a.x&&(r=!r)}return r}function ao(t,e,r){var n=r[0],i=r[2];if(t.xi.x&&e.x>i.x||t.yi.y&&e.y>i.y)return!1;var a=w(t,e,r[0]);return a!==w(t,e,r[1])||a!==w(t,e,r[2])||a!==w(t,e,r[3])}function oo(t,e,r){var n=e.paint.get(t).value;return\"constant\"===n.kind?n.value:r.programConfigurations.get(e.id).getMaxValue(t)}function so(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function lo(t,e,r,n,a){if(!e[0]&&!e[1])return t;var o=i.convert(e)._mult(a);\"viewport\"===r&&o._rotate(-n);for(var s=[],l=0;l=8192||u<0||u>=8192)){var f=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,t.sortKey),h=f.vertexLength;Wa(this.layoutVertexArray,c,u,-1,-1),Wa(this.layoutVertexArray,c,u,1,-1),Wa(this.layoutVertexArray,c,u,1,1),Wa(this.layoutVertexArray,c,u,-1,1),this.indexArray.emplaceBack(h,h+1,h+2),this.indexArray.emplaceBack(h,h+3,h+2),f.vertexLength+=4,f.primitiveLength+=2}}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,{},n)},Nn(\"CircleBucket\",Xa,{omit:[\"layers\"]});var co=new Si({\"circle-sort-key\":new Ti(Lt.layout_circle[\"circle-sort-key\"])}),uo={paint:new Si({\"circle-radius\":new Ti(Lt.paint_circle[\"circle-radius\"]),\"circle-color\":new Ti(Lt.paint_circle[\"circle-color\"]),\"circle-blur\":new Ti(Lt.paint_circle[\"circle-blur\"]),\"circle-opacity\":new Ti(Lt.paint_circle[\"circle-opacity\"]),\"circle-translate\":new wi(Lt.paint_circle[\"circle-translate\"]),\"circle-translate-anchor\":new wi(Lt.paint_circle[\"circle-translate-anchor\"]),\"circle-pitch-scale\":new wi(Lt.paint_circle[\"circle-pitch-scale\"]),\"circle-pitch-alignment\":new wi(Lt.paint_circle[\"circle-pitch-alignment\"]),\"circle-stroke-width\":new Ti(Lt.paint_circle[\"circle-stroke-width\"]),\"circle-stroke-color\":new Ti(Lt.paint_circle[\"circle-stroke-color\"]),\"circle-stroke-opacity\":new Ti(Lt.paint_circle[\"circle-stroke-opacity\"])}),layout:co},fo=\"undefined\"!=typeof Float32Array?Float32Array:Array;function ho(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function po(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3],s=e[4],l=e[5],c=e[6],u=e[7],f=e[8],h=e[9],p=e[10],d=e[11],g=e[12],m=e[13],v=e[14],y=e[15],x=r[0],b=r[1],_=r[2],w=r[3];return t[0]=x*n+b*s+_*f+w*g,t[1]=x*i+b*l+_*h+w*m,t[2]=x*a+b*c+_*p+w*v,t[3]=x*o+b*u+_*d+w*y,x=r[4],b=r[5],_=r[6],w=r[7],t[4]=x*n+b*s+_*f+w*g,t[5]=x*i+b*l+_*h+w*m,t[6]=x*a+b*c+_*p+w*v,t[7]=x*o+b*u+_*d+w*y,x=r[8],b=r[9],_=r[10],w=r[11],t[8]=x*n+b*s+_*f+w*g,t[9]=x*i+b*l+_*h+w*m,t[10]=x*a+b*c+_*p+w*v,t[11]=x*o+b*u+_*d+w*y,x=r[12],b=r[13],_=r[14],w=r[15],t[12]=x*n+b*s+_*f+w*g,t[13]=x*i+b*l+_*h+w*m,t[14]=x*a+b*c+_*p+w*v,t[15]=x*o+b*u+_*d+w*y,t}Math.hypot||(Math.hypot=function(){for(var t=arguments,e=0,r=arguments.length;r--;)e+=t[r]*t[r];return Math.sqrt(e)});var go=po;var mo,vo,yo=function(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t};mo=new fo(3),fo!=Float32Array&&(mo[0]=0,mo[1]=0,mo[2]=0),vo=mo;function xo(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3];return t[0]=r[0]*n+r[4]*i+r[8]*a+r[12]*o,t[1]=r[1]*n+r[5]*i+r[9]*a+r[13]*o,t[2]=r[2]*n+r[6]*i+r[10]*a+r[14]*o,t[3]=r[3]*n+r[7]*i+r[11]*a+r[15]*o,t}!function(){var t=function(){var t=new fo(4);return fo!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[3]=0),t}()}();var bo=function(t){var e=t[0],r=t[1];return e*e+r*r},_o=(function(){var t=function(){var t=new fo(2);return fo!=Float32Array&&(t[0]=0,t[1]=0),t}()}(),function(t){function e(e){t.call(this,e,uo)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.createBucket=function(t){return new Xa(t)},e.prototype.queryRadius=function(t){var e=t;return oo(\"circle-radius\",this,e)+oo(\"circle-stroke-width\",this,e)+so(this.paint.get(\"circle-translate\"))},e.prototype.queryIntersectsFeature=function(t,e,r,n,i,a,o,s){for(var l=lo(t,this.paint.get(\"circle-translate\"),this.paint.get(\"circle-translate-anchor\"),a.angle,o),c=this.paint.get(\"circle-radius\").evaluate(e,r)+this.paint.get(\"circle-stroke-width\").evaluate(e,r),u=\"map\"===this.paint.get(\"circle-pitch-alignment\"),f=u?l:function(t,e){return t.map((function(t){return wo(t,e)}))}(l,s),h=u?c*o:c,p=0,d=n;pt.width||i.height>t.height||r.x>t.width-i.width||r.y>t.height-i.height)throw new RangeError(\"out of range source coordinates for image copy\");if(i.width>e.width||i.height>e.height||n.x>e.width-i.width||n.y>e.height-i.height)throw new RangeError(\"out of range destination coordinates for image copy\");for(var o=t.data,s=e.data,l=0;l80*r){n=a=t[0],i=o=t[1];for(var d=r;da&&(a=s),l>o&&(o=l);c=0!==(c=Math.max(a-n,o-i))?1/c:0}return jo(h,p,r,n,i,c),p}function Bo(t,e,r,n,i){var a,o;if(i===ls(t,e,r,n)>0)for(a=e;a=e;a-=n)o=as(a,t[a],t[a+1],o);return o&&$o(o,o.next)&&(os(o),o=o.next),o}function No(t,e){if(!t)return t;e||(e=t);var r,n=t;do{if(r=!1,n.steiner||!$o(n,n.next)&&0!==Qo(n.prev,n,n.next))n=n.next;else{if(os(n),(n=e=n.prev)===n.next)break;r=!0}}while(r||n!==e);return e}function jo(t,e,r,n,i,a,o){if(t){!o&&a&&function(t,e,r,n){var i=t;do{null===i.z&&(i.z=Xo(i.x,i.y,e,r,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next}while(i!==t);i.prevZ.nextZ=null,i.prevZ=null,function(t){var e,r,n,i,a,o,s,l,c=1;do{for(r=t,t=null,a=null,o=0;r;){for(o++,n=r,s=0,e=0;e0||l>0&&n;)0!==s&&(0===l||!n||r.z<=n.z)?(i=r,r=r.nextZ,s--):(i=n,n=n.nextZ,l--),a?a.nextZ=i:t=i,i.prevZ=a,a=i;r=n}a.nextZ=null,c*=2}while(o>1)}(i)}(t,n,i,a);for(var s,l,c=t;t.prev!==t.next;)if(s=t.prev,l=t.next,a?Vo(t,n,i,a):Uo(t))e.push(s.i/r),e.push(t.i/r),e.push(l.i/r),os(t),t=l.next,c=l.next;else if((t=l)===c){o?1===o?jo(t=Ho(No(t),e,r),e,r,n,i,a,2):2===o&&qo(t,e,r,n,i,a):jo(No(t),e,r,n,i,a,1);break}}}function Uo(t){var e=t.prev,r=t,n=t.next;if(Qo(e,r,n)>=0)return!1;for(var i=t.next.next;i!==t.prev;){if(Jo(e.x,e.y,r.x,r.y,n.x,n.y,i.x,i.y)&&Qo(i.prev,i,i.next)>=0)return!1;i=i.next}return!0}function Vo(t,e,r,n){var i=t.prev,a=t,o=t.next;if(Qo(i,a,o)>=0)return!1;for(var s=i.xa.x?i.x>o.x?i.x:o.x:a.x>o.x?a.x:o.x,u=i.y>a.y?i.y>o.y?i.y:o.y:a.y>o.y?a.y:o.y,f=Xo(s,l,e,r,n),h=Xo(c,u,e,r,n),p=t.prevZ,d=t.nextZ;p&&p.z>=f&&d&&d.z<=h;){if(p!==t.prev&&p!==t.next&&Jo(i.x,i.y,a.x,a.y,o.x,o.y,p.x,p.y)&&Qo(p.prev,p,p.next)>=0)return!1;if(p=p.prevZ,d!==t.prev&&d!==t.next&&Jo(i.x,i.y,a.x,a.y,o.x,o.y,d.x,d.y)&&Qo(d.prev,d,d.next)>=0)return!1;d=d.nextZ}for(;p&&p.z>=f;){if(p!==t.prev&&p!==t.next&&Jo(i.x,i.y,a.x,a.y,o.x,o.y,p.x,p.y)&&Qo(p.prev,p,p.next)>=0)return!1;p=p.prevZ}for(;d&&d.z<=h;){if(d!==t.prev&&d!==t.next&&Jo(i.x,i.y,a.x,a.y,o.x,o.y,d.x,d.y)&&Qo(d.prev,d,d.next)>=0)return!1;d=d.nextZ}return!0}function Ho(t,e,r){var n=t;do{var i=n.prev,a=n.next.next;!$o(i,a)&&ts(i,n,n.next,a)&&ns(i,a)&&ns(a,i)&&(e.push(i.i/r),e.push(n.i/r),e.push(a.i/r),os(n),os(n.next),n=t=a),n=n.next}while(n!==t);return No(n)}function qo(t,e,r,n,i,a){var o=t;do{for(var s=o.next.next;s!==o.prev;){if(o.i!==s.i&&Ko(o,s)){var l=is(o,s);return o=No(o,o.next),l=No(l,l.next),jo(o,e,r,n,i,a),void jo(l,e,r,n,i,a)}s=s.next}o=o.next}while(o!==t)}function Go(t,e){return t.x-e.x}function Yo(t,e){if(e=function(t,e){var r,n=e,i=t.x,a=t.y,o=-1/0;do{if(a<=n.y&&a>=n.next.y&&n.next.y!==n.y){var s=n.x+(a-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(s<=i&&s>o){if(o=s,s===i){if(a===n.y)return n;if(a===n.next.y)return n.next}r=n.x=n.x&&n.x>=u&&i!==n.x&&Jo(ar.x||n.x===r.x&&Wo(r,n)))&&(r=n,h=l)),n=n.next}while(n!==c);return r}(t,e)){var r=is(e,t);No(e,e.next),No(r,r.next)}}function Wo(t,e){return Qo(t.prev,t,e.prev)<0&&Qo(e.next,t,t.next)<0}function Xo(t,e,r,n,i){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-r)*i)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-n)*i)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function Zo(t){var e=t,r=t;do{(e.x=0&&(t-o)*(n-s)-(r-o)*(e-s)>=0&&(r-o)*(a-s)-(i-o)*(n-s)>=0}function Ko(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){var r=t;do{if(r.i!==t.i&&r.next.i!==t.i&&r.i!==e.i&&r.next.i!==e.i&&ts(r,r.next,t,e))return!0;r=r.next}while(r!==t);return!1}(t,e)&&(ns(t,e)&&ns(e,t)&&function(t,e){var r=t,n=!1,i=(t.x+e.x)/2,a=(t.y+e.y)/2;do{r.y>a!=r.next.y>a&&r.next.y!==r.y&&i<(r.next.x-r.x)*(a-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next}while(r!==t);return n}(t,e)&&(Qo(t.prev,t,e.prev)||Qo(t,e.prev,e))||$o(t,e)&&Qo(t.prev,t,t.next)>0&&Qo(e.prev,e,e.next)>0)}function Qo(t,e,r){return(e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y)}function $o(t,e){return t.x===e.x&&t.y===e.y}function ts(t,e,r,n){var i=rs(Qo(t,e,r)),a=rs(Qo(t,e,n)),o=rs(Qo(r,n,t)),s=rs(Qo(r,n,e));return i!==a&&o!==s||(!(0!==i||!es(t,r,e))||(!(0!==a||!es(t,n,e))||(!(0!==o||!es(r,t,n))||!(0!==s||!es(r,e,n)))))}function es(t,e,r){return e.x<=Math.max(t.x,r.x)&&e.x>=Math.min(t.x,r.x)&&e.y<=Math.max(t.y,r.y)&&e.y>=Math.min(t.y,r.y)}function rs(t){return t>0?1:t<0?-1:0}function ns(t,e){return Qo(t.prev,t,t.next)<0?Qo(t,e,t.next)>=0&&Qo(t,t.prev,e)>=0:Qo(t,e,t.prev)<0||Qo(t,t.next,e)<0}function is(t,e){var r=new ss(t.i,t.x,t.y),n=new ss(e.i,e.x,e.y),i=t.next,a=e.prev;return t.next=e,e.prev=t,r.next=i,i.prev=r,n.next=r,r.prev=n,a.next=n,n.prev=a,n}function as(t,e,r,n){var i=new ss(t,e,r);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function os(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function ss(t,e,r){this.i=t,this.x=e,this.y=r,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function ls(t,e,r,n){for(var i=0,a=e,o=r-n;an;){if(i-n>600){var o=i-n+1,s=r-n+1,l=Math.log(o),c=.5*Math.exp(2*l/3),u=.5*Math.sqrt(l*c*(o-c)/o)*(s-o/2<0?-1:1),f=Math.max(n,Math.floor(r-s*c/o+u)),h=Math.min(i,Math.floor(r+(o-s)*c/o+u));t(e,r,f,h,a)}var p=e[r],d=n,g=i;for(us(e,n,r),a(e[i],p)>0&&us(e,n,i);d0;)g--}0===a(e[n],p)?us(e,n,g):(g++,us(e,g,i)),g<=r&&(n=g+1),r<=g&&(i=g-1)}}(t,e,r||0,n||t.length-1,i||fs)}function us(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function fs(t,e){return te?1:0}function hs(t,e){var r=t.length;if(r<=1)return[t];for(var n,i,a=[],o=0;o1)for(var l=0;l0&&(n+=t[i-1].length,r.holes.push(n))}return r},Do.default=Ro;var ms=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((function(t){return t.id})),this.index=t.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new zi,this.indexArray=new Yi,this.indexArray2=new Qi,this.programConfigurations=new Ua(zo,t.layers,t.zoom),this.segments=new pa,this.segments2=new pa,this.stateDependentLayerIds=this.layers.filter((function(t){return t.isStateDependent()})).map((function(t){return t.id}))};ms.prototype.populate=function(t,e,r){this.hasPattern=ds(\"fill\",this.layers,e);for(var n=this.layers[0].layout.get(\"fill-sort-key\"),i=[],a=0,o=t;a>3}if(a--,1===n||2===n)o+=t.readSVarint(),s+=t.readSVarint(),1===n&&(e&&l.push(e),e=[]),e.push(new i(o,s));else{if(7!==n)throw new Error(\"unknown command \"+n);e&&e.push(e[0].clone())}}return e&&l.push(e),l},ws.prototype.bbox=function(){var t=this._pbf;t.pos=this._geometry;for(var e=t.readVarint()+t.pos,r=1,n=0,i=0,a=0,o=1/0,s=-1/0,l=1/0,c=-1/0;t.pos>3}if(n--,1===r||2===r)(i+=t.readSVarint())s&&(s=i),(a+=t.readSVarint())c&&(c=a);else if(7!==r)throw new Error(\"unknown command \"+r)}return[o,l,s,c]},ws.prototype.toGeoJSON=function(t,e,r){var n,i,a=this.extent*Math.pow(2,r),o=this.extent*t,s=this.extent*e,l=this.loadGeometry(),c=ws.types[this.type];function u(t){for(var e=0;e>3;e=1===n?t.readString():2===n?t.readFloat():3===n?t.readDouble():4===n?t.readVarint64():5===n?t.readVarint():6===n?t.readSVarint():7===n?t.readBoolean():null}return e}(r))}function Es(t,e,r){if(3===t){var n=new As(r,r.readVarint()+r.pos);n.length&&(e[n.name]=n)}}Ms.prototype.feature=function(t){if(t<0||t>=this._features.length)throw new Error(\"feature index out of bounds\");this._pbf.pos=this._features[t];var e=this._pbf.readVarint()+this._pbf.pos;return new _s(this._pbf,e,this.extent,this._keys,this._values)};var Ls={VectorTile:function(t,e){this.layers=t.readFields(Es,{},e)},VectorTileFeature:_s,VectorTileLayer:As},Cs=Ls.VectorTileFeature.types,Ps=Math.pow(2,13);function Is(t,e,r,n,i,a,o,s){t.emplaceBack(e,r,2*Math.floor(n*Ps)+o,i*Ps*2,a*Ps*2,Math.round(s))}var Os=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((function(t){return t.id})),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new Ri,this.indexArray=new Yi,this.programConfigurations=new Ua(bs,t.layers,t.zoom),this.segments=new pa,this.stateDependentLayerIds=this.layers.filter((function(t){return t.isStateDependent()})).map((function(t){return t.id}))};function zs(t,e){return t.x===e.x&&(t.x<0||t.x>8192)||t.y===e.y&&(t.y<0||t.y>8192)}function Ds(t){return t.every((function(t){return t.x<0}))||t.every((function(t){return t.x>8192}))||t.every((function(t){return t.y<0}))||t.every((function(t){return t.y>8192}))}Os.prototype.populate=function(t,e,r){this.features=[],this.hasPattern=ds(\"fill-extrusion\",this.layers,e);for(var n=0,i=t;n=1){var y=d[m-1];if(!zs(v,y)){f.vertexLength+4>pa.MAX_VERTEX_ARRAY_LENGTH&&(f=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));var x=v.sub(y)._perp()._unit(),b=y.dist(v);g+b>32768&&(g=0),Is(this.layoutVertexArray,v.x,v.y,x.x,x.y,0,0,g),Is(this.layoutVertexArray,v.x,v.y,x.x,x.y,0,1,g),g+=b,Is(this.layoutVertexArray,y.x,y.y,x.x,x.y,0,0,g),Is(this.layoutVertexArray,y.x,y.y,x.x,x.y,0,1,g);var _=f.vertexLength;this.indexArray.emplaceBack(_,_+2,_+1),this.indexArray.emplaceBack(_+1,_+2,_+3),f.vertexLength+=4,f.primitiveLength+=2}}}}if(f.vertexLength+l>pa.MAX_VERTEX_ARRAY_LENGTH&&(f=this.segments.prepareSegment(l,this.layoutVertexArray,this.indexArray)),\"Polygon\"===Cs[t.type]){for(var w=[],T=[],k=f.vertexLength,A=0,M=s;A=2&&t[l-1].equals(t[l-2]);)l--;for(var c=0;c0;if(T&&v>c){var A=u.dist(p);if(A>2*f){var M=u.sub(u.sub(p)._mult(f/A)._round());this.updateDistance(p,M),this.addCurrentVertex(M,g,0,0,h),p=M}}var S=p&&d,E=S?r:s?\"butt\":n;if(S&&\"round\"===E&&(_i&&(E=\"bevel\"),\"bevel\"===E&&(_>2&&(E=\"flipbevel\"),_100)y=m.mult(-1);else{var L=_*g.add(m).mag()/g.sub(m).mag();y._perp()._mult(L*(k?-1:1))}this.addCurrentVertex(u,y,0,0,h),this.addCurrentVertex(u,y.mult(-1),0,0,h)}else if(\"bevel\"===E||\"fakeround\"===E){var C=-Math.sqrt(_*_-1),P=k?C:0,I=k?0:C;if(p&&this.addCurrentVertex(u,g,P,I,h),\"fakeround\"===E)for(var O=Math.round(180*w/Math.PI/20),z=1;z2*f){var j=u.add(d.sub(u)._mult(f/N)._round());this.updateDistance(u,j),this.addCurrentVertex(j,m,0,0,h),u=j}}}}},qs.prototype.addCurrentVertex=function(t,e,r,n,i,a){void 0===a&&(a=!1);var o=e.x+e.y*r,s=e.y-e.x*r,l=-e.x+e.y*n,c=-e.y-e.x*n;this.addHalfVertex(t,o,s,a,!1,r,i),this.addHalfVertex(t,l,c,a,!0,-n,i),this.distance>Hs/2&&0===this.totalDistance&&(this.distance=0,this.addCurrentVertex(t,e,r,n,i,a))},qs.prototype.addHalfVertex=function(t,e,r,n,i,a,o){var s=t.x,l=t.y,c=.5*this.scaledDistance;this.layoutVertexArray.emplaceBack((s<<1)+(n?1:0),(l<<1)+(i?1:0),Math.round(63*e)+128,Math.round(63*r)+128,1+(0===a?0:a<0?-1:1)|(63&c)<<2,c>>6);var u=o.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,u),o.primitiveLength++),i?this.e2=u:this.e1=u},qs.prototype.updateScaledDistance=function(){this.scaledDistance=this.totalDistance>0?(this.clipStart+(this.clipEnd-this.clipStart)*this.distance/this.totalDistance)*(Hs-1):this.distance},qs.prototype.updateDistance=function(t,e){this.distance+=t.dist(e),this.updateScaledDistance()},Nn(\"LineBucket\",qs,{omit:[\"layers\",\"patternFeatures\"]});var Gs=new Si({\"line-cap\":new wi(Lt.layout_line[\"line-cap\"]),\"line-join\":new Ti(Lt.layout_line[\"line-join\"]),\"line-miter-limit\":new wi(Lt.layout_line[\"line-miter-limit\"]),\"line-round-limit\":new wi(Lt.layout_line[\"line-round-limit\"]),\"line-sort-key\":new Ti(Lt.layout_line[\"line-sort-key\"])}),Ys={paint:new Si({\"line-opacity\":new Ti(Lt.paint_line[\"line-opacity\"]),\"line-color\":new Ti(Lt.paint_line[\"line-color\"]),\"line-translate\":new wi(Lt.paint_line[\"line-translate\"]),\"line-translate-anchor\":new wi(Lt.paint_line[\"line-translate-anchor\"]),\"line-width\":new Ti(Lt.paint_line[\"line-width\"]),\"line-gap-width\":new Ti(Lt.paint_line[\"line-gap-width\"]),\"line-offset\":new Ti(Lt.paint_line[\"line-offset\"]),\"line-blur\":new Ti(Lt.paint_line[\"line-blur\"]),\"line-dasharray\":new Ai(Lt.paint_line[\"line-dasharray\"]),\"line-pattern\":new ki(Lt.paint_line[\"line-pattern\"]),\"line-gradient\":new Mi(Lt.paint_line[\"line-gradient\"])}),layout:Gs},Ws=new(function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.possiblyEvaluate=function(e,r){return r=new pi(Math.floor(r.zoom),{now:r.now,fadeDuration:r.fadeDuration,zoomHistory:r.zoomHistory,transition:r.transition}),t.prototype.possiblyEvaluate.call(this,e,r)},e.prototype.evaluate=function(e,r,n,i){return r=u({},r,{zoom:Math.floor(r.zoom)}),t.prototype.evaluate.call(this,e,r,n,i)},e}(Ti))(Ys.paint.properties[\"line-width\"].specification);Ws.useIntegerZoom=!0;var Xs=function(t){function e(e){t.call(this,e,Ys)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._handleSpecialPaintPropertyUpdate=function(t){\"line-gradient\"===t&&this._updateGradient()},e.prototype._updateGradient=function(){var t=this._transitionablePaint._values[\"line-gradient\"].value.expression;this.gradient=Co(t,\"lineProgress\"),this.gradientTexture=null},e.prototype.recalculate=function(e,r){t.prototype.recalculate.call(this,e,r),this.paint._values[\"line-floorwidth\"]=Ws.possiblyEvaluate(this._transitioningPaint._values[\"line-width\"].value,e)},e.prototype.createBucket=function(t){return new qs(t)},e.prototype.queryRadius=function(t){var e=t,r=Zs(oo(\"line-width\",this,e),oo(\"line-gap-width\",this,e)),n=oo(\"line-offset\",this,e);return r/2+Math.abs(n)+so(this.paint.get(\"line-translate\"))},e.prototype.queryIntersectsFeature=function(t,e,r,n,a,o,s){var l=lo(t,this.paint.get(\"line-translate\"),this.paint.get(\"line-translate-anchor\"),o.angle,s),c=s/2*Zs(this.paint.get(\"line-width\").evaluate(e,r),this.paint.get(\"line-gap-width\").evaluate(e,r)),u=this.paint.get(\"line-offset\").evaluate(e,r);return u&&(n=function(t,e){for(var r=[],n=new i(0,0),a=0;a=3)for(var a=0;a0?e+2*t:t}var Js=Ii([{name:\"a_pos_offset\",components:4,type:\"Int16\"},{name:\"a_data\",components:4,type:\"Uint16\"},{name:\"a_pixeloffset\",components:4,type:\"Int16\"}],4),Ks=Ii([{name:\"a_projected_pos\",components:3,type:\"Float32\"}],4),Qs=(Ii([{name:\"a_fade_opacity\",components:1,type:\"Uint32\"}],4),Ii([{name:\"a_placed\",components:2,type:\"Uint8\"},{name:\"a_shift\",components:2,type:\"Float32\"}])),$s=(Ii([{type:\"Int16\",name:\"anchorPointX\"},{type:\"Int16\",name:\"anchorPointY\"},{type:\"Int16\",name:\"x1\"},{type:\"Int16\",name:\"y1\"},{type:\"Int16\",name:\"x2\"},{type:\"Int16\",name:\"y2\"},{type:\"Uint32\",name:\"featureIndex\"},{type:\"Uint16\",name:\"sourceLayerIndex\"},{type:\"Uint16\",name:\"bucketIndex\"}]),Ii([{name:\"a_pos\",components:2,type:\"Int16\"},{name:\"a_anchor_pos\",components:2,type:\"Int16\"},{name:\"a_extrude\",components:2,type:\"Int16\"}],4)),tl=Ii([{name:\"a_pos\",components:2,type:\"Float32\"},{name:\"a_radius\",components:1,type:\"Float32\"},{name:\"a_flags\",components:2,type:\"Int16\"}],4);Ii([{name:\"triangle\",components:3,type:\"Uint16\"}]),Ii([{type:\"Int16\",name:\"anchorX\"},{type:\"Int16\",name:\"anchorY\"},{type:\"Uint16\",name:\"glyphStartIndex\"},{type:\"Uint16\",name:\"numGlyphs\"},{type:\"Uint32\",name:\"vertexStartIndex\"},{type:\"Uint32\",name:\"lineStartIndex\"},{type:\"Uint32\",name:\"lineLength\"},{type:\"Uint16\",name:\"segment\"},{type:\"Uint16\",name:\"lowerSize\"},{type:\"Uint16\",name:\"upperSize\"},{type:\"Float32\",name:\"lineOffsetX\"},{type:\"Float32\",name:\"lineOffsetY\"},{type:\"Uint8\",name:\"writingMode\"},{type:\"Uint8\",name:\"placedOrientation\"},{type:\"Uint8\",name:\"hidden\"},{type:\"Uint32\",name:\"crossTileID\"},{type:\"Int16\",name:\"associatedIconIndex\"}]),Ii([{type:\"Int16\",name:\"anchorX\"},{type:\"Int16\",name:\"anchorY\"},{type:\"Int16\",name:\"rightJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"centerJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"leftJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"verticalPlacedTextSymbolIndex\"},{type:\"Int16\",name:\"placedIconSymbolIndex\"},{type:\"Int16\",name:\"verticalPlacedIconSymbolIndex\"},{type:\"Uint16\",name:\"key\"},{type:\"Uint16\",name:\"textBoxStartIndex\"},{type:\"Uint16\",name:\"textBoxEndIndex\"},{type:\"Uint16\",name:\"verticalTextBoxStartIndex\"},{type:\"Uint16\",name:\"verticalTextBoxEndIndex\"},{type:\"Uint16\",name:\"iconBoxStartIndex\"},{type:\"Uint16\",name:\"iconBoxEndIndex\"},{type:\"Uint16\",name:\"verticalIconBoxStartIndex\"},{type:\"Uint16\",name:\"verticalIconBoxEndIndex\"},{type:\"Uint16\",name:\"featureIndex\"},{type:\"Uint16\",name:\"numHorizontalGlyphVertices\"},{type:\"Uint16\",name:\"numVerticalGlyphVertices\"},{type:\"Uint16\",name:\"numIconVertices\"},{type:\"Uint16\",name:\"numVerticalIconVertices\"},{type:\"Uint16\",name:\"useRuntimeCollisionCircles\"},{type:\"Uint32\",name:\"crossTileID\"},{type:\"Float32\",name:\"textBoxScale\"},{type:\"Float32\",components:2,name:\"textOffset\"},{type:\"Float32\",name:\"collisionCircleDiameter\"}]),Ii([{type:\"Float32\",name:\"offsetX\"}]),Ii([{type:\"Int16\",name:\"x\"},{type:\"Int16\",name:\"y\"},{type:\"Int16\",name:\"tileUnitDistanceFromAnchor\"}]);function el(t,e,r){return t.sections.forEach((function(t){t.text=function(t,e,r){var n=e.layout.get(\"text-transform\").evaluate(r,{});return\"uppercase\"===n?t=t.toLocaleUpperCase():\"lowercase\"===n&&(t=t.toLocaleLowerCase()),hi.applyArabicShaping&&(t=hi.applyArabicShaping(t)),t}(t.text,e,r)})),t}var rl={\"!\":\"\\ufe15\",\"#\":\"\\uff03\",$:\"\\uff04\",\"%\":\"\\uff05\",\"&\":\"\\uff06\",\"(\":\"\\ufe35\",\")\":\"\\ufe36\",\"*\":\"\\uff0a\",\"+\":\"\\uff0b\",\",\":\"\\ufe10\",\"-\":\"\\ufe32\",\".\":\"\\u30fb\",\"/\":\"\\uff0f\",\":\":\"\\ufe13\",\";\":\"\\ufe14\",\"<\":\"\\ufe3f\",\"=\":\"\\uff1d\",\">\":\"\\ufe40\",\"?\":\"\\ufe16\",\"@\":\"\\uff20\",\"[\":\"\\ufe47\",\"\\\\\":\"\\uff3c\",\"]\":\"\\ufe48\",\"^\":\"\\uff3e\",_:\"\\ufe33\",\"`\":\"\\uff40\",\"{\":\"\\ufe37\",\"|\":\"\\u2015\",\"}\":\"\\ufe38\",\"~\":\"\\uff5e\",\"\\xa2\":\"\\uffe0\",\"\\xa3\":\"\\uffe1\",\"\\xa5\":\"\\uffe5\",\"\\xa6\":\"\\uffe4\",\"\\xac\":\"\\uffe2\",\"\\xaf\":\"\\uffe3\",\"\\u2013\":\"\\ufe32\",\"\\u2014\":\"\\ufe31\",\"\\u2018\":\"\\ufe43\",\"\\u2019\":\"\\ufe44\",\"\\u201c\":\"\\ufe41\",\"\\u201d\":\"\\ufe42\",\"\\u2026\":\"\\ufe19\",\"\\u2027\":\"\\u30fb\",\"\\u20a9\":\"\\uffe6\",\"\\u3001\":\"\\ufe11\",\"\\u3002\":\"\\ufe12\",\"\\u3008\":\"\\ufe3f\",\"\\u3009\":\"\\ufe40\",\"\\u300a\":\"\\ufe3d\",\"\\u300b\":\"\\ufe3e\",\"\\u300c\":\"\\ufe41\",\"\\u300d\":\"\\ufe42\",\"\\u300e\":\"\\ufe43\",\"\\u300f\":\"\\ufe44\",\"\\u3010\":\"\\ufe3b\",\"\\u3011\":\"\\ufe3c\",\"\\u3014\":\"\\ufe39\",\"\\u3015\":\"\\ufe3a\",\"\\u3016\":\"\\ufe17\",\"\\u3017\":\"\\ufe18\",\"\\uff01\":\"\\ufe15\",\"\\uff08\":\"\\ufe35\",\"\\uff09\":\"\\ufe36\",\"\\uff0c\":\"\\ufe10\",\"\\uff0d\":\"\\ufe32\",\"\\uff0e\":\"\\u30fb\",\"\\uff1a\":\"\\ufe13\",\"\\uff1b\":\"\\ufe14\",\"\\uff1c\":\"\\ufe3f\",\"\\uff1e\":\"\\ufe40\",\"\\uff1f\":\"\\ufe16\",\"\\uff3b\":\"\\ufe47\",\"\\uff3d\":\"\\ufe48\",\"\\uff3f\":\"\\ufe33\",\"\\uff5b\":\"\\ufe37\",\"\\uff5c\":\"\\u2015\",\"\\uff5d\":\"\\ufe38\",\"\\uff5f\":\"\\ufe35\",\"\\uff60\":\"\\ufe36\",\"\\uff61\":\"\\ufe12\",\"\\uff62\":\"\\ufe41\",\"\\uff63\":\"\\ufe42\"};var nl=function(t,e,r,n,i){var a,o,s=8*i-n-1,l=(1<>1,u=-7,f=r?i-1:0,h=r?-1:1,p=t[e+f];for(f+=h,a=p&(1<<-u)-1,p>>=-u,u+=s;u>0;a=256*a+t[e+f],f+=h,u-=8);for(o=a&(1<<-u)-1,a>>=-u,u+=n;u>0;o=256*o+t[e+f],f+=h,u-=8);if(0===a)a=1-c;else{if(a===l)return o?NaN:1/0*(p?-1:1);o+=Math.pow(2,n),a-=c}return(p?-1:1)*o*Math.pow(2,a-n)},il=function(t,e,r,n,i,a){var o,s,l,c=8*a-i-1,u=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:a-1,d=n?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,o=u):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),(e+=o+f>=1?h/l:h*Math.pow(2,1-f))*l>=2&&(o++,l/=2),o+f>=u?(s=0,o=u):o+f>=1?(s=(e*l-1)*Math.pow(2,i),o+=f):(s=e*Math.pow(2,f-1)*Math.pow(2,i),o=0));i>=8;t[r+p]=255&s,p+=d,s/=256,i-=8);for(o=o<0;t[r+p]=255&o,p+=d,o/=256,c-=8);t[r+p-d]|=128*g},al=ol;function ol(t){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(t)?t:new Uint8Array(t||0),this.pos=0,this.type=0,this.length=this.buf.length}ol.Varint=0,ol.Fixed64=1,ol.Bytes=2,ol.Fixed32=5;var sl=\"undefined\"==typeof TextDecoder?null:new TextDecoder(\"utf8\");function ll(t){return t.type===ol.Bytes?t.readVarint()+t.pos:t.pos+1}function cl(t,e,r){return r?4294967296*e+(t>>>0):4294967296*(e>>>0)+(t>>>0)}function ul(t,e,r){var n=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.floor(Math.log(e)/(7*Math.LN2));r.realloc(n);for(var i=r.pos-1;i>=t;i--)r.buf[i+n]=r.buf[i]}function fl(t,e){for(var r=0;r>>8,t[r+2]=e>>>16,t[r+3]=e>>>24}function wl(t,e){return(t[e]|t[e+1]<<8|t[e+2]<<16)+(t[e+3]<<24)}ol.prototype={destroy:function(){this.buf=null},readFields:function(t,e,r){for(r=r||this.length;this.pos>3,a=this.pos;this.type=7&n,t(i,e,this),this.pos===a&&this.skip(n)}return e},readMessage:function(t,e){return this.readFields(t,e,this.readVarint()+this.pos)},readFixed32:function(){var t=bl(this.buf,this.pos);return this.pos+=4,t},readSFixed32:function(){var t=wl(this.buf,this.pos);return this.pos+=4,t},readFixed64:function(){var t=bl(this.buf,this.pos)+4294967296*bl(this.buf,this.pos+4);return this.pos+=8,t},readSFixed64:function(){var t=bl(this.buf,this.pos)+4294967296*wl(this.buf,this.pos+4);return this.pos+=8,t},readFloat:function(){var t=nl(this.buf,this.pos,!0,23,4);return this.pos+=4,t},readDouble:function(){var t=nl(this.buf,this.pos,!0,52,8);return this.pos+=8,t},readVarint:function(t){var e,r,n=this.buf;return e=127&(r=n[this.pos++]),r<128?e:(e|=(127&(r=n[this.pos++]))<<7,r<128?e:(e|=(127&(r=n[this.pos++]))<<14,r<128?e:(e|=(127&(r=n[this.pos++]))<<21,r<128?e:function(t,e,r){var n,i,a=r.buf;if(i=a[r.pos++],n=(112&i)>>4,i<128)return cl(t,n,e);if(i=a[r.pos++],n|=(127&i)<<3,i<128)return cl(t,n,e);if(i=a[r.pos++],n|=(127&i)<<10,i<128)return cl(t,n,e);if(i=a[r.pos++],n|=(127&i)<<17,i<128)return cl(t,n,e);if(i=a[r.pos++],n|=(127&i)<<24,i<128)return cl(t,n,e);if(i=a[r.pos++],n|=(1&i)<<31,i<128)return cl(t,n,e);throw new Error(\"Expected varint not more than 10 bytes\")}(e|=(15&(r=n[this.pos]))<<28,t,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var t=this.readVarint();return t%2==1?(t+1)/-2:t/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var t=this.readVarint()+this.pos,e=this.pos;return this.pos=t,t-e>=12&&sl?function(t,e,r){return sl.decode(t.subarray(e,r))}(this.buf,e,t):function(t,e,r){var n=\"\",i=e;for(;i239?4:l>223?3:l>191?2:1;if(i+u>r)break;1===u?l<128&&(c=l):2===u?128==(192&(a=t[i+1]))&&(c=(31&l)<<6|63&a)<=127&&(c=null):3===u?(a=t[i+1],o=t[i+2],128==(192&a)&&128==(192&o)&&((c=(15&l)<<12|(63&a)<<6|63&o)<=2047||c>=55296&&c<=57343)&&(c=null)):4===u&&(a=t[i+1],o=t[i+2],s=t[i+3],128==(192&a)&&128==(192&o)&&128==(192&s)&&((c=(15&l)<<18|(63&a)<<12|(63&o)<<6|63&s)<=65535||c>=1114112)&&(c=null)),null===c?(c=65533,u=1):c>65535&&(c-=65536,n+=String.fromCharCode(c>>>10&1023|55296),c=56320|1023&c),n+=String.fromCharCode(c),i+=u}return n}(this.buf,e,t)},readBytes:function(){var t=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,t);return this.pos=t,e},readPackedVarint:function(t,e){if(this.type!==ol.Bytes)return t.push(this.readVarint(e));var r=ll(this);for(t=t||[];this.pos127;);else if(e===ol.Bytes)this.pos=this.readVarint()+this.pos;else if(e===ol.Fixed32)this.pos+=4;else{if(e!==ol.Fixed64)throw new Error(\"Unimplemented type: \"+e);this.pos+=8}},writeTag:function(t,e){this.writeVarint(t<<3|e)},realloc:function(t){for(var e=this.length||16;e268435455||t<0?function(t,e){var r,n;t>=0?(r=t%4294967296|0,n=t/4294967296|0):(n=~(-t/4294967296),4294967295^(r=~(-t%4294967296))?r=r+1|0:(r=0,n=n+1|0));if(t>=0x10000000000000000||t<-0x10000000000000000)throw new Error(\"Given varint doesn't fit into 10 bytes\");e.realloc(10),function(t,e,r){r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos]=127&t}(r,0,e),function(t,e){var r=(7&t)<<4;if(e.buf[e.pos++]|=r|((t>>>=3)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;e.buf[e.pos++]=127&t}(n,e)}(t,this):(this.realloc(4),this.buf[this.pos++]=127&t|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=t>>>7&127))))},writeSVarint:function(t){this.writeVarint(t<0?2*-t-1:2*t)},writeBoolean:function(t){this.writeVarint(Boolean(t))},writeString:function(t){t=String(t),this.realloc(4*t.length),this.pos++;var e=this.pos;this.pos=function(t,e,r){for(var n,i,a=0;a55295&&n<57344){if(!i){n>56319||a+1===e.length?(t[r++]=239,t[r++]=191,t[r++]=189):i=n;continue}if(n<56320){t[r++]=239,t[r++]=191,t[r++]=189,i=n;continue}n=i-55296<<10|n-56320|65536,i=null}else i&&(t[r++]=239,t[r++]=191,t[r++]=189,i=null);n<128?t[r++]=n:(n<2048?t[r++]=n>>6|192:(n<65536?t[r++]=n>>12|224:(t[r++]=n>>18|240,t[r++]=n>>12&63|128),t[r++]=n>>6&63|128),t[r++]=63&n|128)}return r}(this.buf,t,this.pos);var r=this.pos-e;r>=128&&ul(e,r,this),this.pos=e-1,this.writeVarint(r),this.pos+=r},writeFloat:function(t){this.realloc(4),il(this.buf,t,this.pos,!0,23,4),this.pos+=4},writeDouble:function(t){this.realloc(8),il(this.buf,t,this.pos,!0,52,8),this.pos+=8},writeBytes:function(t){var e=t.length;this.writeVarint(e),this.realloc(e);for(var r=0;r=128&&ul(r,n,this),this.pos=r-1,this.writeVarint(n),this.pos+=n},writeMessage:function(t,e,r){this.writeTag(t,ol.Bytes),this.writeRawMessage(e,r)},writePackedVarint:function(t,e){e.length&&this.writeMessage(t,fl,e)},writePackedSVarint:function(t,e){e.length&&this.writeMessage(t,hl,e)},writePackedBoolean:function(t,e){e.length&&this.writeMessage(t,gl,e)},writePackedFloat:function(t,e){e.length&&this.writeMessage(t,pl,e)},writePackedDouble:function(t,e){e.length&&this.writeMessage(t,dl,e)},writePackedFixed32:function(t,e){e.length&&this.writeMessage(t,ml,e)},writePackedSFixed32:function(t,e){e.length&&this.writeMessage(t,vl,e)},writePackedFixed64:function(t,e){e.length&&this.writeMessage(t,yl,e)},writePackedSFixed64:function(t,e){e.length&&this.writeMessage(t,xl,e)},writeBytesField:function(t,e){this.writeTag(t,ol.Bytes),this.writeBytes(e)},writeFixed32Field:function(t,e){this.writeTag(t,ol.Fixed32),this.writeFixed32(e)},writeSFixed32Field:function(t,e){this.writeTag(t,ol.Fixed32),this.writeSFixed32(e)},writeFixed64Field:function(t,e){this.writeTag(t,ol.Fixed64),this.writeFixed64(e)},writeSFixed64Field:function(t,e){this.writeTag(t,ol.Fixed64),this.writeSFixed64(e)},writeVarintField:function(t,e){this.writeTag(t,ol.Varint),this.writeVarint(e)},writeSVarintField:function(t,e){this.writeTag(t,ol.Varint),this.writeSVarint(e)},writeStringField:function(t,e){this.writeTag(t,ol.Bytes),this.writeString(e)},writeFloatField:function(t,e){this.writeTag(t,ol.Fixed32),this.writeFloat(e)},writeDoubleField:function(t,e){this.writeTag(t,ol.Fixed64),this.writeDouble(e)},writeBooleanField:function(t,e){this.writeVarintField(t,Boolean(e))}};function Tl(t,e,r){1===t&&r.readMessage(kl,e)}function kl(t,e,r){if(3===t){var n=r.readMessage(Al,{}),i=n.id,a=n.bitmap,o=n.width,s=n.height,l=n.left,c=n.top,u=n.advance;e.push({id:i,bitmap:new So({width:o+6,height:s+6},a),metrics:{width:o,height:s,left:l,top:c,advance:u}})}}function Al(t,e,r){1===t?e.id=r.readVarint():2===t?e.bitmap=r.readBytes():3===t?e.width=r.readVarint():4===t?e.height=r.readVarint():5===t?e.left=r.readSVarint():6===t?e.top=r.readSVarint():7===t&&(e.advance=r.readVarint())}function Ml(t){for(var e=0,r=0,n=0,i=t;n=0;h--){var p=o[h];if(!(f.w>p.w||f.h>p.h)){if(f.x=p.x,f.y=p.y,l=Math.max(l,f.y+f.h),s=Math.max(s,f.x+f.w),f.w===p.w&&f.h===p.h){var d=o.pop();h0&&N>A&&(A=N)}else{var j=r[S.fontStack],U=j&&j[L];if(U&&U.rect)I=U.rect,P=U.metrics;else{var V=e[S.fontStack],H=V&&V[L];if(!H)continue;P=H.metrics}C=24*(_-S.scale)}D?(t.verticalizable=!0,k.push({glyph:L,imageName:O,x:h,y:p+C,vertical:D,scale:S.scale,fontStack:S.fontStack,sectionIndex:E,metrics:P,rect:I}),h+=z*S.scale+c):(k.push({glyph:L,imageName:O,x:h,y:p+C,vertical:D,scale:S.scale,fontStack:S.fontStack,sectionIndex:E,metrics:P,rect:I}),h+=P.advance*S.scale+c)}if(0!==k.length){var q=h-c;d=Math.max(q,d),Vl(k,0,k.length-1,m,A)}h=0;var G=a*_+A;T.lineOffset=Math.max(A,w),p+=G,g=Math.max(G,g),++v}else p+=a,++v}var Y;var W=p- -17,X=Ul(o),Z=X.horizontalAlign,J=X.verticalAlign;(function(t,e,r,n,i,a,o,s,l){var c=(e-r)*i,u=0;u=a!==o?-s*n- -17:(-n*l+.5)*o;for(var f=0,h=t;f=0&&n>=t&&zl[this.text.charCodeAt(n)];n--)r--;this.text=this.text.substring(t,r),this.sectionIndex=this.sectionIndex.slice(t,r)},Il.prototype.substring=function(t,e){var r=new Il;return r.text=this.text.substring(t,e),r.sectionIndex=this.sectionIndex.slice(t,e),r.sections=this.sections,r},Il.prototype.toString=function(){return this.text},Il.prototype.getMaxScale=function(){var t=this;return this.sectionIndex.reduce((function(e,r){return Math.max(e,t.sections[r].scale)}),0)},Il.prototype.addTextSection=function(t,e){this.text+=t.text,this.sections.push(Pl.forText(t.scale,t.fontStack||e));for(var r=this.sections.length-1,n=0;n=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)};var zl={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},Dl={};function Rl(t,e,r,n,i,a){if(e.imageName){var o=n[e.imageName];return o?o.displaySize[0]*e.scale*24/a+i:0}var s=r[e.fontStack],l=s&&s[t];return l?l.metrics.advance*e.scale+i:0}function Fl(t,e,r,n){var i=Math.pow(t-e,2);return n?t=0,f=0,h=0;h-r/2;){if(--o<0)return!1;s-=t[o].dist(a),a=t[o]}s+=t[o].dist(t[o+1]),o++;for(var l=[],c=0;sn;)c-=l.shift().angleDelta;if(c>i)return!1;o++,s+=f.dist(h)}return!0}function Jl(t){for(var e=0,r=0;rc){var d=(c-l)/p,g=qe(f.x,h.x,d),m=qe(f.y,h.y,d),v=new ql(g,m,h.angleTo(f),u);return v._round(),!o||Zl(t,v,s,o,e)?v:void 0}l+=p}}function tc(t,e,r,n,i,a,o,s,l){var c=Kl(n,a,o),u=Ql(n,i),f=u*o,h=0===t[0].x||t[0].x===l||0===t[0].y||t[0].y===l;return e-f=0&&_=0&&w=0&&p+u<=f){var T=new ql(_,w,x,g);T._round(),i&&!Zl(e,T,o,i,a)||d.push(T)}}h+=y}l||d.length||s||(d=t(e,h/2,n,i,a,o,s,!0,c));return d}(t,h?e/2*s%e:(u/2+2*a)*o*s%e,e,c,r,f,h,!1,l)}function ec(t,e,r,n,a){for(var o=[],s=0;s=n&&h.x>=n||(f.x>=n?f=new i(n,f.y+(h.y-f.y)*((n-f.x)/(h.x-f.x)))._round():h.x>=n&&(h=new i(n,f.y+(h.y-f.y)*((n-f.x)/(h.x-f.x)))._round()),f.y>=a&&h.y>=a||(f.y>=a?f=new i(f.x+(h.x-f.x)*((a-f.y)/(h.y-f.y)),a)._round():h.y>=a&&(h=new i(f.x+(h.x-f.x)*((a-f.y)/(h.y-f.y)),a)._round()),c&&f.equals(c[c.length-1])||(c=[f],o.push(c)),c.push(h)))))}return o}function rc(t,e,r,n){var a=[],o=t.image,s=o.pixelRatio,l=o.paddedRect.w-2,c=o.paddedRect.h-2,u=t.right-t.left,f=t.bottom-t.top,h=o.stretchX||[[0,l]],p=o.stretchY||[[0,c]],d=function(t,e){return t+e[1]-e[0]},g=h.reduce(d,0),m=p.reduce(d,0),v=l-g,y=c-m,x=0,b=g,_=0,w=m,T=0,k=v,A=0,M=y;if(o.content&&n){var S=o.content;x=nc(h,0,S[0]),_=nc(p,0,S[1]),b=nc(h,S[0],S[2]),w=nc(p,S[1],S[3]),T=S[0]-x,A=S[1]-_,k=S[2]-S[0]-b,M=S[3]-S[1]-w}var E=function(n,a,l,c){var h=ac(n.stretch-x,b,u,t.left),p=oc(n.fixed-T,k,n.stretch,g),d=ac(a.stretch-_,w,f,t.top),v=oc(a.fixed-A,M,a.stretch,m),y=ac(l.stretch-x,b,u,t.left),S=oc(l.fixed-T,k,l.stretch,g),E=ac(c.stretch-_,w,f,t.top),L=oc(c.fixed-A,M,c.stretch,m),C=new i(h,d),P=new i(y,d),I=new i(y,E),O=new i(h,E),z=new i(p/s,v/s),D=new i(S/s,L/s),R=e*Math.PI/180;if(R){var F=Math.sin(R),B=Math.cos(R),N=[B,-F,F,B];C._matMult(N),P._matMult(N),O._matMult(N),I._matMult(N)}var j=n.stretch+n.fixed,U=l.stretch+l.fixed,V=a.stretch+a.fixed,H=c.stretch+c.fixed;return{tl:C,tr:P,bl:O,br:I,tex:{x:o.paddedRect.x+1+j,y:o.paddedRect.y+1+V,w:U-j,h:H-V},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:z,pixelOffsetBR:D,minFontScaleX:k/s/u,minFontScaleY:M/s/f,isSDF:r}};if(n&&(o.stretchX||o.stretchY))for(var L=ic(h,v,g),C=ic(p,y,m),P=0;P0&&(d=Math.max(10,d),this.circleDiameter=d)}else{var g=o.top*s-l,m=o.bottom*s+l,v=o.left*s-l,y=o.right*s+l,x=o.collisionPadding;if(x&&(v-=x[0]*s,g-=x[1]*s,y+=x[2]*s,m+=x[3]*s),u){var b=new i(v,g),_=new i(y,g),w=new i(v,m),T=new i(y,m),k=u*Math.PI/180;b._rotate(k),_._rotate(k),w._rotate(k),T._rotate(k),v=Math.min(b.x,_.x,w.x,T.x),y=Math.max(b.x,_.x,w.x,T.x),g=Math.min(b.y,_.y,w.y,T.y),m=Math.max(b.y,_.y,w.y,T.y)}t.emplaceBack(e.x,e.y,v,g,y,m,r,n,a)}this.boxEndIndex=t.length},lc=function(t,e){if(void 0===t&&(t=[]),void 0===e&&(e=cc),this.data=t,this.length=this.data.length,this.compare=e,this.length>0)for(var r=(this.length>>1)-1;r>=0;r--)this._down(r)};function cc(t,e){return te?1:0}function uc(t,e,r){void 0===e&&(e=1),void 0===r&&(r=!1);for(var n=1/0,a=1/0,o=-1/0,s=-1/0,l=t[0],c=0;co)&&(o=u.x),(!c||u.y>s)&&(s=u.y)}var f=o-n,h=s-a,p=Math.min(f,h),d=p/2,g=new lc([],fc);if(0===p)return new i(n,a);for(var m=n;my.d||!y.d)&&(y=b,r&&console.log(\"found best %d after %d probes\",Math.round(1e4*b.d)/1e4,x)),b.max-y.d<=e||(d=b.h/2,g.push(new hc(b.p.x-d,b.p.y-d,d,t)),g.push(new hc(b.p.x+d,b.p.y-d,d,t)),g.push(new hc(b.p.x-d,b.p.y+d,d,t)),g.push(new hc(b.p.x+d,b.p.y+d,d,t)),x+=4)}return r&&(console.log(\"num probes: \"+x),console.log(\"best distance: \"+y.d)),y.p}function fc(t,e){return e.max-t.max}function hc(t,e,r,n){this.p=new i(t,e),this.h=r,this.d=function(t,e){for(var r=!1,n=1/0,i=0;it.y!=u.y>t.y&&t.x<(u.x-c.x)*(t.y-c.y)/(u.y-c.y)+c.x&&(r=!r),n=Math.min(n,ro(t,c,u))}return(r?1:-1)*Math.sqrt(n)}(this.p,n),this.max=this.d+this.h*Math.SQRT2}lc.prototype.push=function(t){this.data.push(t),this.length++,this._up(this.length-1)},lc.prototype.pop=function(){if(0!==this.length){var t=this.data[0],e=this.data.pop();return this.length--,this.length>0&&(this.data[0]=e,this._down(0)),t}},lc.prototype.peek=function(){return this.data[0]},lc.prototype._up=function(t){for(var e=this.data,r=this.compare,n=e[t];t>0;){var i=t-1>>1,a=e[i];if(r(n,a)>=0)break;e[t]=a,t=i}e[t]=n},lc.prototype._down=function(t){for(var e=this.data,r=this.compare,n=this.length>>1,i=e[t];t=0)break;e[t]=o,t=a}e[t]=i};var pc=Number.POSITIVE_INFINITY;function dc(t,e){return e[1]!==pc?function(t,e,r){var n=0,i=0;switch(e=Math.abs(e),r=Math.abs(r),t){case\"top-right\":case\"top-left\":case\"top\":i=r-7;break;case\"bottom-right\":case\"bottom-left\":case\"bottom\":i=7-r}switch(t){case\"top-right\":case\"bottom-right\":case\"right\":n=-e;break;case\"top-left\":case\"bottom-left\":case\"left\":n=e}return[n,i]}(t,e[0],e[1]):function(t,e){var r=0,n=0;e<0&&(e=0);var i=e/Math.sqrt(2);switch(t){case\"top-right\":case\"top-left\":n=i-7;break;case\"bottom-right\":case\"bottom-left\":n=7-i;break;case\"bottom\":n=7-e;break;case\"top\":n=e-7}switch(t){case\"top-right\":case\"bottom-right\":r=-i;break;case\"top-left\":case\"bottom-left\":r=i;break;case\"left\":r=e;break;case\"right\":r=-e}return[r,n]}(t,e[0])}function gc(t){switch(t){case\"right\":case\"top-right\":case\"bottom-right\":return\"right\";case\"left\":case\"top-left\":case\"bottom-left\":return\"left\"}return\"center\"}function mc(t,e,r,n,a,o,s,l,c,u,f,h,p,d,g){var m=function(t,e,r,n,a,o,s,l){for(var c=n.layout.get(\"text-rotate\").evaluate(o,{})*Math.PI/180,u=[],f=0,h=e.positionedLines;f32640&&_(t.layerIds[0]+': Value for \"text-size\" is >= 255. Reduce your \"text-size\".'):\"composite\"===v.kind&&((y=[128*d.compositeTextSizes[0].evaluate(s,{},g),128*d.compositeTextSizes[1].evaluate(s,{},g)])[0]>32640||y[1]>32640)&&_(t.layerIds[0]+': Value for \"text-size\" is >= 255. Reduce your \"text-size\".'),t.addSymbols(t.text,m,y,l,o,s,u,e,c.lineStartIndex,c.lineLength,p,g);for(var x=0,b=f;x=0;o--)if(n.dist(a[o])0)&&(\"constant\"!==a.value.kind||a.value.value.length>0),c=\"constant\"!==s.value.kind||!!s.value.value||Object.keys(s.parameters).length>0,u=i.get(\"symbol-sort-key\");if(this.features=[],l||c){for(var f=e.iconDependencies,h=e.glyphDependencies,p=e.availableImages,d=new pi(this.zoom),g=0,m=t;g=0;for(var O=0,z=k.sections;O=0;s--)a[s]={x:e[s].x,y:e[s].y,tileUnitDistanceFromAnchor:i},s>0&&(i+=e[s-1].dist(e[s]));for(var l=0;l0},Mc.prototype.hasIconData=function(){return this.icon.segments.get().length>0},Mc.prototype.hasDebugData=function(){return this.textCollisionBox&&this.iconCollisionBox},Mc.prototype.hasTextCollisionBoxData=function(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0},Mc.prototype.hasIconCollisionBoxData=function(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0},Mc.prototype.addIndicesForPlacedSymbol=function(t,e){for(var r=t.placedSymbolArray.get(e),n=r.vertexStartIndex+4*r.numGlyphs,i=r.vertexStartIndex;i1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(t),this.sortedAngle=t,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(var r=0,n=this.symbolInstanceIndexes;r=0&&n.indexOf(t)===r&&e.addIndicesForPlacedSymbol(e.text,t)})),a.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,a.verticalPlacedTextSymbolIndex),a.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,a.placedIconSymbolIndex),a.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,a.verticalPlacedIconSymbolIndex)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}},Nn(\"SymbolBucket\",Mc,{omit:[\"layers\",\"collisionBoxArray\",\"features\",\"compareText\"]}),Mc.MAX_GLYPHS=65535,Mc.addDynamicAttributes=wc;var Sc=new Si({\"symbol-placement\":new wi(Lt.layout_symbol[\"symbol-placement\"]),\"symbol-spacing\":new wi(Lt.layout_symbol[\"symbol-spacing\"]),\"symbol-avoid-edges\":new wi(Lt.layout_symbol[\"symbol-avoid-edges\"]),\"symbol-sort-key\":new Ti(Lt.layout_symbol[\"symbol-sort-key\"]),\"symbol-z-order\":new wi(Lt.layout_symbol[\"symbol-z-order\"]),\"icon-allow-overlap\":new wi(Lt.layout_symbol[\"icon-allow-overlap\"]),\"icon-ignore-placement\":new wi(Lt.layout_symbol[\"icon-ignore-placement\"]),\"icon-optional\":new wi(Lt.layout_symbol[\"icon-optional\"]),\"icon-rotation-alignment\":new wi(Lt.layout_symbol[\"icon-rotation-alignment\"]),\"icon-size\":new Ti(Lt.layout_symbol[\"icon-size\"]),\"icon-text-fit\":new wi(Lt.layout_symbol[\"icon-text-fit\"]),\"icon-text-fit-padding\":new wi(Lt.layout_symbol[\"icon-text-fit-padding\"]),\"icon-image\":new Ti(Lt.layout_symbol[\"icon-image\"]),\"icon-rotate\":new Ti(Lt.layout_symbol[\"icon-rotate\"]),\"icon-padding\":new wi(Lt.layout_symbol[\"icon-padding\"]),\"icon-keep-upright\":new wi(Lt.layout_symbol[\"icon-keep-upright\"]),\"icon-offset\":new Ti(Lt.layout_symbol[\"icon-offset\"]),\"icon-anchor\":new Ti(Lt.layout_symbol[\"icon-anchor\"]),\"icon-pitch-alignment\":new wi(Lt.layout_symbol[\"icon-pitch-alignment\"]),\"text-pitch-alignment\":new wi(Lt.layout_symbol[\"text-pitch-alignment\"]),\"text-rotation-alignment\":new wi(Lt.layout_symbol[\"text-rotation-alignment\"]),\"text-field\":new Ti(Lt.layout_symbol[\"text-field\"]),\"text-font\":new Ti(Lt.layout_symbol[\"text-font\"]),\"text-size\":new Ti(Lt.layout_symbol[\"text-size\"]),\"text-max-width\":new Ti(Lt.layout_symbol[\"text-max-width\"]),\"text-line-height\":new wi(Lt.layout_symbol[\"text-line-height\"]),\"text-letter-spacing\":new Ti(Lt.layout_symbol[\"text-letter-spacing\"]),\"text-justify\":new Ti(Lt.layout_symbol[\"text-justify\"]),\"text-radial-offset\":new Ti(Lt.layout_symbol[\"text-radial-offset\"]),\"text-variable-anchor\":new wi(Lt.layout_symbol[\"text-variable-anchor\"]),\"text-anchor\":new Ti(Lt.layout_symbol[\"text-anchor\"]),\"text-max-angle\":new wi(Lt.layout_symbol[\"text-max-angle\"]),\"text-writing-mode\":new wi(Lt.layout_symbol[\"text-writing-mode\"]),\"text-rotate\":new Ti(Lt.layout_symbol[\"text-rotate\"]),\"text-padding\":new wi(Lt.layout_symbol[\"text-padding\"]),\"text-keep-upright\":new wi(Lt.layout_symbol[\"text-keep-upright\"]),\"text-transform\":new Ti(Lt.layout_symbol[\"text-transform\"]),\"text-offset\":new Ti(Lt.layout_symbol[\"text-offset\"]),\"text-allow-overlap\":new wi(Lt.layout_symbol[\"text-allow-overlap\"]),\"text-ignore-placement\":new wi(Lt.layout_symbol[\"text-ignore-placement\"]),\"text-optional\":new wi(Lt.layout_symbol[\"text-optional\"])}),Ec={paint:new Si({\"icon-opacity\":new Ti(Lt.paint_symbol[\"icon-opacity\"]),\"icon-color\":new Ti(Lt.paint_symbol[\"icon-color\"]),\"icon-halo-color\":new Ti(Lt.paint_symbol[\"icon-halo-color\"]),\"icon-halo-width\":new Ti(Lt.paint_symbol[\"icon-halo-width\"]),\"icon-halo-blur\":new Ti(Lt.paint_symbol[\"icon-halo-blur\"]),\"icon-translate\":new wi(Lt.paint_symbol[\"icon-translate\"]),\"icon-translate-anchor\":new wi(Lt.paint_symbol[\"icon-translate-anchor\"]),\"text-opacity\":new Ti(Lt.paint_symbol[\"text-opacity\"]),\"text-color\":new Ti(Lt.paint_symbol[\"text-color\"],{runtimeType:Ut,getOverride:function(t){return t.textColor},hasOverride:function(t){return!!t.textColor}}),\"text-halo-color\":new Ti(Lt.paint_symbol[\"text-halo-color\"]),\"text-halo-width\":new Ti(Lt.paint_symbol[\"text-halo-width\"]),\"text-halo-blur\":new Ti(Lt.paint_symbol[\"text-halo-blur\"]),\"text-translate\":new wi(Lt.paint_symbol[\"text-translate\"]),\"text-translate-anchor\":new wi(Lt.paint_symbol[\"text-translate-anchor\"])}),layout:Sc},Lc=function(t){this.type=t.property.overrides?t.property.overrides.runtimeType:Ft,this.defaultValue=t};Lc.prototype.evaluate=function(t){if(t.formattedSection){var e=this.defaultValue.property.overrides;if(e&&e.hasOverride(t.formattedSection))return e.getOverride(t.formattedSection)}return t.feature&&t.featureState?this.defaultValue.evaluate(t.feature,t.featureState):this.defaultValue.property.specification.default},Lc.prototype.eachChild=function(t){this.defaultValue.isConstant()||t(this.defaultValue.value._styleExpression.expression)},Lc.prototype.outputDefined=function(){return!1},Lc.prototype.serialize=function(){return null},Nn(\"FormatSectionOverride\",Lc,{omit:[\"defaultValue\"]});var Cc=function(t){function e(e){t.call(this,e,Ec)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.recalculate=function(e,r){if(t.prototype.recalculate.call(this,e,r),\"auto\"===this.layout.get(\"icon-rotation-alignment\")&&(\"point\"!==this.layout.get(\"symbol-placement\")?this.layout._values[\"icon-rotation-alignment\"]=\"map\":this.layout._values[\"icon-rotation-alignment\"]=\"viewport\"),\"auto\"===this.layout.get(\"text-rotation-alignment\")&&(\"point\"!==this.layout.get(\"symbol-placement\")?this.layout._values[\"text-rotation-alignment\"]=\"map\":this.layout._values[\"text-rotation-alignment\"]=\"viewport\"),\"auto\"===this.layout.get(\"text-pitch-alignment\")&&(this.layout._values[\"text-pitch-alignment\"]=this.layout.get(\"text-rotation-alignment\")),\"auto\"===this.layout.get(\"icon-pitch-alignment\")&&(this.layout._values[\"icon-pitch-alignment\"]=this.layout.get(\"icon-rotation-alignment\")),\"point\"===this.layout.get(\"symbol-placement\")){var n=this.layout.get(\"text-writing-mode\");if(n){for(var i=[],a=0,o=n;a\",targetMapId:n,sourceMapId:a.mapId})}}},qc.prototype.receive=function(t){var e=t.data,r=e.id;if(r&&(!e.targetMapId||this.mapId===e.targetMapId))if(\"\"===e.type){delete this.tasks[r];var n=this.cancelCallbacks[r];delete this.cancelCallbacks[r],n&&n()}else k()||e.mustQueue?(this.tasks[r]=e,this.taskQueue.push(r),this.invoker.trigger()):this.processTask(r,e)},qc.prototype.process=function(){if(this.taskQueue.length){var t=this.taskQueue.shift(),e=this.tasks[t];delete this.tasks[t],this.taskQueue.length&&this.invoker.trigger(),e&&this.processTask(t,e)}},qc.prototype.processTask=function(t,e){var r=this;if(\"\"===e.type){var n=this.callbacks[t];delete this.callbacks[t],n&&(e.error?n(qn(e.error)):n(null,qn(e.data)))}else{var i=!1,a=S(this.globalScope)?void 0:[],o=e.hasCallback?function(e,n){i=!0,delete r.cancelCallbacks[t],r.target.postMessage({id:t,type:\"\",sourceMapId:r.mapId,error:e?Hn(e):null,data:Hn(n,a)},a)}:function(t){i=!0},s=null,l=qn(e.data);if(this.parent[e.type])s=this.parent[e.type](e.sourceMapId,l,o);else if(this.parent.getWorkerSource){var c=e.type.split(\".\");s=this.parent.getWorkerSource(e.sourceMapId,c[0],l.source)[c[1]](l,o)}else o(new Error(\"Could not find function \"+e.type));!i&&s&&s.cancel&&(this.cancelCallbacks[t]=s.cancel)}},qc.prototype.remove=function(){this.invoker.remove(),this.target.removeEventListener(\"message\",this.receive,!1)};var Yc=function(t,e){t&&(e?this.setSouthWest(t).setNorthEast(e):4===t.length?this.setSouthWest([t[0],t[1]]).setNorthEast([t[2],t[3]]):this.setSouthWest(t[0]).setNorthEast(t[1]))};Yc.prototype.setNorthEast=function(t){return this._ne=t instanceof Wc?new Wc(t.lng,t.lat):Wc.convert(t),this},Yc.prototype.setSouthWest=function(t){return this._sw=t instanceof Wc?new Wc(t.lng,t.lat):Wc.convert(t),this},Yc.prototype.extend=function(t){var e,r,n=this._sw,i=this._ne;if(t instanceof Wc)e=t,r=t;else{if(!(t instanceof Yc)){if(Array.isArray(t)){if(4===t.length||t.every(Array.isArray)){var a=t;return this.extend(Yc.convert(a))}var o=t;return this.extend(Wc.convert(o))}return this}if(e=t._sw,r=t._ne,!e||!r)return this}return n||i?(n.lng=Math.min(e.lng,n.lng),n.lat=Math.min(e.lat,n.lat),i.lng=Math.max(r.lng,i.lng),i.lat=Math.max(r.lat,i.lat)):(this._sw=new Wc(e.lng,e.lat),this._ne=new Wc(r.lng,r.lat)),this},Yc.prototype.getCenter=function(){return new Wc((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)},Yc.prototype.getSouthWest=function(){return this._sw},Yc.prototype.getNorthEast=function(){return this._ne},Yc.prototype.getNorthWest=function(){return new Wc(this.getWest(),this.getNorth())},Yc.prototype.getSouthEast=function(){return new Wc(this.getEast(),this.getSouth())},Yc.prototype.getWest=function(){return this._sw.lng},Yc.prototype.getSouth=function(){return this._sw.lat},Yc.prototype.getEast=function(){return this._ne.lng},Yc.prototype.getNorth=function(){return this._ne.lat},Yc.prototype.toArray=function(){return[this._sw.toArray(),this._ne.toArray()]},Yc.prototype.toString=function(){return\"LngLatBounds(\"+this._sw.toString()+\", \"+this._ne.toString()+\")\"},Yc.prototype.isEmpty=function(){return!(this._sw&&this._ne)},Yc.prototype.contains=function(t){var e=Wc.convert(t),r=e.lng,n=e.lat,i=this._sw.lat<=n&&n<=this._ne.lat,a=this._sw.lng<=r&&r<=this._ne.lng;return this._sw.lng>this._ne.lng&&(a=this._sw.lng>=r&&r>=this._ne.lng),i&&a},Yc.convert=function(t){return!t||t instanceof Yc?t:new Yc(t)};var Wc=function(t,e){if(isNaN(t)||isNaN(e))throw new Error(\"Invalid LngLat object: (\"+t+\", \"+e+\")\");if(this.lng=+t,this.lat=+e,this.lat>90||this.lat<-90)throw new Error(\"Invalid LngLat latitude value: must be between -90 and 90\")};Wc.prototype.wrap=function(){return new Wc(c(this.lng,-180,180),this.lat)},Wc.prototype.toArray=function(){return[this.lng,this.lat]},Wc.prototype.toString=function(){return\"LngLat(\"+this.lng+\", \"+this.lat+\")\"},Wc.prototype.distanceTo=function(t){var e=Math.PI/180,r=this.lat*e,n=t.lat*e,i=Math.sin(r)*Math.sin(n)+Math.cos(r)*Math.cos(n)*Math.cos((t.lng-this.lng)*e);return 6371008.8*Math.acos(Math.min(i,1))},Wc.prototype.toBounds=function(t){void 0===t&&(t=0);var e=360*t/40075017,r=e/Math.cos(Math.PI/180*this.lat);return new Yc(new Wc(this.lng-r,this.lat-e),new Wc(this.lng+r,this.lat+e))},Wc.convert=function(t){if(t instanceof Wc)return t;if(Array.isArray(t)&&(2===t.length||3===t.length))return new Wc(Number(t[0]),Number(t[1]));if(!Array.isArray(t)&&\"object\"==typeof t&&null!==t)return new Wc(Number(\"lng\"in t?t.lng:t.lon),Number(t.lat));throw new Error(\"`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]\")};var Xc=2*Math.PI*6371008.8;function Zc(t){return Xc*Math.cos(t*Math.PI/180)}function Jc(t){return(180+t)/360}function Kc(t){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t*Math.PI/360)))/360}function Qc(t,e){return t/Zc(e)}function $c(t){var e=180-360*t;return 360/Math.PI*Math.atan(Math.exp(e*Math.PI/180))-90}var tu=function(t,e,r){void 0===r&&(r=0),this.x=+t,this.y=+e,this.z=+r};tu.fromLngLat=function(t,e){void 0===e&&(e=0);var r=Wc.convert(t);return new tu(Jc(r.lng),Kc(r.lat),Qc(e,r.lat))},tu.prototype.toLngLat=function(){return new Wc(360*this.x-180,$c(this.y))},tu.prototype.toAltitude=function(){return t=this.z,e=this.y,t*Zc($c(e));var t,e},tu.prototype.meterInMercatorCoordinateUnits=function(){return 1/Xc*(t=$c(this.y),1/Math.cos(t*Math.PI/180));var t};var eu=function(t,e,r){this.z=t,this.x=e,this.y=r,this.key=iu(0,t,t,e,r)};eu.prototype.equals=function(t){return this.z===t.z&&this.x===t.x&&this.y===t.y},eu.prototype.url=function(t,e){var r,n,i,a,o,s=(r=this.x,n=this.y,i=this.z,a=Gc(256*r,256*(n=Math.pow(2,i)-n-1),i),o=Gc(256*(r+1),256*(n+1),i),a[0]+\",\"+a[1]+\",\"+o[0]+\",\"+o[1]),l=function(t,e,r){for(var n,i=\"\",a=t;a>0;a--)i+=(e&(n=1<this.canonical.z?new nu(t,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new nu(t,this.wrap,t,this.canonical.x>>e,this.canonical.y>>e)},nu.prototype.calculateScaledKey=function(t,e){var r=this.canonical.z-t;return t>this.canonical.z?iu(this.wrap*+e,t,this.canonical.z,this.canonical.x,this.canonical.y):iu(this.wrap*+e,t,t,this.canonical.x>>r,this.canonical.y>>r)},nu.prototype.isChildOf=function(t){if(t.wrap!==this.wrap)return!1;var e=this.canonical.z-t.canonical.z;return 0===t.overscaledZ||t.overscaledZ>e&&t.canonical.y===this.canonical.y>>e},nu.prototype.children=function(t){if(this.overscaledZ>=t)return[new nu(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];var e=this.canonical.z+1,r=2*this.canonical.x,n=2*this.canonical.y;return[new nu(e,this.wrap,e,r,n),new nu(e,this.wrap,e,r+1,n),new nu(e,this.wrap,e,r,n+1),new nu(e,this.wrap,e,r+1,n+1)]},nu.prototype.isLessThan=function(t){return this.wrapt.wrap)&&(this.overscaledZt.overscaledZ)&&(this.canonical.xt.canonical.x)&&this.canonical.y=this.dim+1||e<-1||e>=this.dim+1)throw new RangeError(\"out of range source coordinates for DEM data\");return(e+1)*this.stride+(t+1)},au.prototype._unpackMapbox=function(t,e,r){return(256*t*256+256*e+r)/10-1e4},au.prototype._unpackTerrarium=function(t,e,r){return 256*t+e+r/256-32768},au.prototype.getPixels=function(){return new Eo({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))},au.prototype.backfillBorder=function(t,e,r){if(this.dim!==t.dim)throw new Error(\"dem dimension mismatch\");var n=e*this.dim,i=e*this.dim+this.dim,a=r*this.dim,o=r*this.dim+this.dim;switch(e){case-1:n=i-1;break;case 1:i=n+1}switch(r){case-1:a=o-1;break;case 1:o=a+1}for(var s=-e*this.dim,l=-r*this.dim,c=a;c=0&&u[3]>=0&&s.insert(o,u[0],u[1],u[2],u[3])}},uu.prototype.loadVTLayers=function(){return this.vtLayers||(this.vtLayers=new Ls.VectorTile(new al(this.rawTileData)).layers,this.sourceLayerCoder=new ou(this.vtLayers?Object.keys(this.vtLayers).sort():[\"_geojsonTileLayer\"])),this.vtLayers},uu.prototype.query=function(t,e,r,n){var a=this;this.loadVTLayers();for(var o=t.params||{},s=8192/t.tileSize/t.scale,l=sn(o.filter),c=t.queryGeometry,u=t.queryPadding*s,f=hu(c),h=this.grid.query(f.minX-u,f.minY-u,f.maxX+u,f.maxY+u),p=hu(t.cameraQueryGeometry),d=this.grid3D.query(p.minX-u,p.minY-u,p.maxX+u,p.maxY+u,(function(e,r,n,a){return function(t,e,r,n,a){for(var o=0,s=t;o=l.x&&a>=l.y)return!0}var c=[new i(e,r),new i(e,a),new i(n,a),new i(n,r)];if(t.length>2)for(var u=0,f=c;u=0)return!0;return!1}(a,f)){var h=this.sourceLayerCoder.decode(r),p=this.vtLayers[h].feature(n);if(i.filter(new pi(this.tileID.overscaledZ),p))for(var d=this.getId(p,h),g=0;gn)i=!1;else if(e)if(this.expirationTimeot&&(t.getActor().send(\"enforceCacheSizeLimit\",at),ht=0)},t.clamp=l,t.clearTileCache=function(t){var e=self.caches.delete(\"mapbox-tiles\");t&&e.catch(t).then((function(){return t()}))},t.clipLine=ec,t.clone=function(t){var e=new fo(16);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e},t.clone$1=x,t.clone$2=function(t){var e=new fo(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e},t.collisionCircleLayout=tl,t.config=F,t.create=function(){var t=new fo(16);return fo!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0),t[0]=1,t[5]=1,t[10]=1,t[15]=1,t},t.create$1=function(){var t=new fo(9);return fo!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[5]=0,t[6]=0,t[7]=0),t[0]=1,t[4]=1,t[8]=1,t},t.create$2=function(){var t=new fo(4);return fo!=Float32Array&&(t[1]=0,t[2]=0),t[0]=1,t[3]=1,t},t.createCommonjsModule=e,t.createExpression=Wr,t.createLayout=Ii,t.createStyleLayer=function(t){return\"custom\"===t.type?new Dc(t):new Rc[t.type](t)},t.cross=function(t,e,r){var n=e[0],i=e[1],a=e[2],o=r[0],s=r[1],l=r[2];return t[0]=i*l-a*s,t[1]=a*o-n*l,t[2]=n*s-i*o,t},t.deepEqual=function t(e,r){if(Array.isArray(e)){if(!Array.isArray(r)||e.length!==r.length)return!1;for(var n=0;n0&&(a=1/Math.sqrt(a)),t[0]=e[0]*a,t[1]=e[1]*a,t[2]=e[2]*a,t},t.number=qe,t.offscreenCanvasSupported=pt,t.ortho=function(t,e,r,n,i,a,o){var s=1/(e-r),l=1/(n-i),c=1/(a-o);return t[0]=-2*s,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*l,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*c,t[11]=0,t[12]=(e+r)*s,t[13]=(i+n)*l,t[14]=(o+a)*c,t[15]=1,t},t.parseGlyphPBF=function(t){return new al(t).readFields(Tl,[])},t.pbf=al,t.performSymbolLayout=function(t,e,r,n,i,a,o){t.createArrays();var s=512*t.overscaling;t.tilePixelRatio=8192/s,t.compareText={},t.iconsNeedLinear=!1;var l=t.layers[0].layout,c=t.layers[0]._unevaluatedLayout._values,u={};if(\"composite\"===t.textSizeData.kind){var f=t.textSizeData,h=f.minZoom,p=f.maxZoom;u.compositeTextSizes=[c[\"text-size\"].possiblyEvaluate(new pi(h),o),c[\"text-size\"].possiblyEvaluate(new pi(p),o)]}if(\"composite\"===t.iconSizeData.kind){var d=t.iconSizeData,g=d.minZoom,m=d.maxZoom;u.compositeIconSizes=[c[\"icon-size\"].possiblyEvaluate(new pi(g),o),c[\"icon-size\"].possiblyEvaluate(new pi(m),o)]}u.layoutTextSize=c[\"text-size\"].possiblyEvaluate(new pi(t.zoom+1),o),u.layoutIconSize=c[\"icon-size\"].possiblyEvaluate(new pi(t.zoom+1),o),u.textMaxSize=c[\"text-size\"].possiblyEvaluate(new pi(18));for(var v=24*l.get(\"text-line-height\"),y=\"map\"===l.get(\"text-rotation-alignment\")&&\"point\"!==l.get(\"symbol-placement\"),x=l.get(\"text-keep-upright\"),b=l.get(\"text-size\"),w=function(){var a=k[T],s=l.get(\"text-font\").evaluate(a,{},o).join(\",\"),c=b.evaluate(a,{},o),f=u.layoutTextSize.evaluate(a,{},o),h=u.layoutIconSize.evaluate(a,{},o),p={horizontal:{},vertical:void 0},d=a.text,g=[0,0];if(d){var m=d.toString(),w=24*l.get(\"text-letter-spacing\").evaluate(a,{},o),A=function(t){for(var e=0,r=t;e=8192||f.y<0||f.y>=8192||function(t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m,v,y,x,b,w,T,k,A){var M,S,E,L,C,P=t.addToLineVertexArray(e,r),I=0,O=0,z=0,D=0,R=-1,F=-1,B={},N=ya(\"\"),j=0,U=0;void 0===s._unevaluatedLayout.getValue(\"text-radial-offset\")?(M=s.layout.get(\"text-offset\").evaluate(b,{},k).map((function(t){return 24*t})),j=M[0],U=M[1]):(j=24*s.layout.get(\"text-radial-offset\").evaluate(b,{},k),U=pc);if(t.allowVerticalPlacement&&n.vertical){var V=s.layout.get(\"text-rotate\").evaluate(b,{},k)+90,H=n.vertical;L=new sc(l,e,c,u,f,H,h,p,d,V),o&&(C=new sc(l,e,c,u,f,o,m,v,d,V))}if(i){var q=s.layout.get(\"icon-rotate\").evaluate(b,{}),G=\"none\"!==s.layout.get(\"icon-text-fit\"),Y=rc(i,q,T,G),W=o?rc(o,q,T,G):void 0;E=new sc(l,e,c,u,f,i,m,v,!1,q),I=4*Y.length;var X=t.iconSizeData,Z=null;\"source\"===X.kind?(Z=[128*s.layout.get(\"icon-size\").evaluate(b,{})])[0]>32640&&_(t.layerIds[0]+': Value for \"icon-size\" is >= 255. Reduce your \"icon-size\".'):\"composite\"===X.kind&&((Z=[128*w.compositeIconSizes[0].evaluate(b,{},k),128*w.compositeIconSizes[1].evaluate(b,{},k)])[0]>32640||Z[1]>32640)&&_(t.layerIds[0]+': Value for \"icon-size\" is >= 255. Reduce your \"icon-size\".'),t.addSymbols(t.icon,Y,Z,x,y,b,!1,e,P.lineStartIndex,P.lineLength,-1,k),R=t.icon.placedSymbolArray.length-1,W&&(O=4*W.length,t.addSymbols(t.icon,W,Z,x,y,b,Cl.vertical,e,P.lineStartIndex,P.lineLength,-1,k),F=t.icon.placedSymbolArray.length-1)}for(var J in n.horizontal){var K=n.horizontal[J];if(!S){N=ya(K.text);var Q=s.layout.get(\"text-rotate\").evaluate(b,{},k);S=new sc(l,e,c,u,f,K,h,p,d,Q)}var $=1===K.positionedLines.length;if(z+=mc(t,e,K,a,s,d,b,g,P,n.vertical?Cl.horizontal:Cl.horizontalOnly,$?Object.keys(n.horizontal):[J],B,R,w,k),$)break}n.vertical&&(D+=mc(t,e,n.vertical,a,s,d,b,g,P,Cl.vertical,[\"vertical\"],B,F,w,k));var tt=S?S.boxStartIndex:t.collisionBoxArray.length,et=S?S.boxEndIndex:t.collisionBoxArray.length,rt=L?L.boxStartIndex:t.collisionBoxArray.length,nt=L?L.boxEndIndex:t.collisionBoxArray.length,it=E?E.boxStartIndex:t.collisionBoxArray.length,at=E?E.boxEndIndex:t.collisionBoxArray.length,ot=C?C.boxStartIndex:t.collisionBoxArray.length,st=C?C.boxEndIndex:t.collisionBoxArray.length,lt=-1,ct=function(t,e){return t&&t.circleDiameter?Math.max(t.circleDiameter,e):e};lt=ct(S,lt),lt=ct(L,lt),lt=ct(E,lt);var ut=(lt=ct(C,lt))>-1?1:0;ut&&(lt*=A/24);t.glyphOffsetArray.length>=Mc.MAX_GLYPHS&&_(\"Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907\");void 0!==b.sortKey&&t.addToSortKeyRanges(t.symbolInstances.length,b.sortKey);t.symbolInstances.emplaceBack(e.x,e.y,B.right>=0?B.right:-1,B.center>=0?B.center:-1,B.left>=0?B.left:-1,B.vertical||-1,R,F,N,tt,et,rt,nt,it,at,ot,st,c,z,D,I,O,ut,0,h,j,U,lt)}(t,f,s,r,n,i,h,t.layers[0],t.collisionBoxArray,e.index,e.sourceLayerIndex,t.index,v,w,A,l,x,T,M,d,e,a,c,u,o)};if(\"line\"===S)for(var P=0,I=ec(e.geometry,0,0,8192,8192);P1){var V=$l(U,k,r.vertical||g,n,24,y);V&&C(U,V)}}else if(\"Polygon\"===e.type)for(var H=0,q=hs(e.geometry,0);H=E.maxzoom))if(\"none\"!==E.visibility)o(S,this.zoom,n),(g[E.id]=E.createBucket({index:u.bucketLayerIDs.length,layers:S,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:b,sourceID:this.source})).populate(_,m,this.tileID.canonical),u.bucketLayerIDs.push(S.map((function(t){return t.id})))}}}var L=t.mapObject(m.glyphDependencies,(function(t){return Object.keys(t).map(Number)}));Object.keys(L).length?a.send(\"getGlyphs\",{uid:this.uid,stacks:L},(function(t,e){f||(f=t,h=e,I.call(l))})):h={};var C=Object.keys(m.iconDependencies);C.length?a.send(\"getImages\",{icons:C,source:this.source,tileID:this.tileID,type:\"icons\"},(function(t,e){f||(f=t,p=e,I.call(l))})):p={};var P=Object.keys(m.patternDependencies);function I(){if(f)return s(f);if(h&&p&&d){var e=new i(h),r=new t.ImageAtlas(p,d);for(var a in g){var l=g[a];l instanceof t.SymbolBucket?(o(l.layers,this.zoom,n),t.performSymbolLayout(l,h,e.positions,p,r.iconPositions,this.showCollisionBoxes,this.tileID.canonical)):l.hasPattern&&(l instanceof t.LineBucket||l instanceof t.FillBucket||l instanceof t.FillExtrusionBucket)&&(o(l.layers,this.zoom,n),l.addFeatures(m,this.tileID.canonical,r.patternPositions))}this.status=\"done\",s(null,{buckets:t.values(g).filter((function(t){return!t.isEmpty()})),featureIndex:u,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:e.image,imageAtlas:r,glyphMap:this.returnDependencies?h:null,iconMap:this.returnDependencies?p:null,glyphPositions:this.returnDependencies?e.positions:null})}}P.length?a.send(\"getImages\",{icons:P,source:this.source,tileID:this.tileID,type:\"patterns\"},(function(t,e){f||(f=t,d=e,I.call(l))})):d={},I.call(this)};var l=function(t,e,r,n){this.actor=t,this.layerIndex=e,this.availableImages=r,this.loadVectorData=n||s,this.loading={},this.loaded={}};l.prototype.loadTile=function(e,r){var n=this,i=e.uid;this.loading||(this.loading={});var o=!!(e&&e.request&&e.request.collectResourceTiming)&&new t.RequestPerformance(e.request),s=this.loading[i]=new a(e);s.abort=this.loadVectorData(e,(function(e,a){if(delete n.loading[i],e||!a)return s.status=\"done\",n.loaded[i]=s,r(e);var l=a.rawData,c={};a.expires&&(c.expires=a.expires),a.cacheControl&&(c.cacheControl=a.cacheControl);var u={};if(o){var f=o.finish();f&&(u.resourceTiming=JSON.parse(JSON.stringify(f)))}s.vectorTile=a.vectorTile,s.parse(a.vectorTile,n.layerIndex,n.availableImages,n.actor,(function(e,n){if(e||!n)return r(e);r(null,t.extend({rawTileData:l.slice(0)},n,c,u))})),n.loaded=n.loaded||{},n.loaded[i]=s}))},l.prototype.reloadTile=function(t,e){var r=this,n=this.loaded,i=t.uid,a=this;if(n&&n[i]){var o=n[i];o.showCollisionBoxes=t.showCollisionBoxes;var s=function(t,n){var i=o.reloadCallback;i&&(delete o.reloadCallback,o.parse(o.vectorTile,a.layerIndex,r.availableImages,a.actor,i)),e(t,n)};\"parsing\"===o.status?o.reloadCallback=s:\"done\"===o.status&&(o.vectorTile?o.parse(o.vectorTile,this.layerIndex,this.availableImages,this.actor,s):s())}},l.prototype.abortTile=function(t,e){var r=this.loading,n=t.uid;r&&r[n]&&r[n].abort&&(r[n].abort(),delete r[n]),e()},l.prototype.removeTile=function(t,e){var r=this.loaded,n=t.uid;r&&r[n]&&delete r[n],e()};var c=t.window.ImageBitmap,u=function(){this.loaded={}};u.prototype.loadTile=function(e,r){var n=e.uid,i=e.encoding,a=e.rawImageData,o=c&&a instanceof c?this.getImageData(a):a,s=new t.DEMData(n,o,i);this.loaded=this.loaded||{},this.loaded[n]=s,r(null,s)},u.prototype.getImageData=function(e){this.offscreenCanvas&&this.offscreenCanvasContext||(this.offscreenCanvas=new OffscreenCanvas(e.width,e.height),this.offscreenCanvasContext=this.offscreenCanvas.getContext(\"2d\")),this.offscreenCanvas.width=e.width,this.offscreenCanvas.height=e.height,this.offscreenCanvasContext.drawImage(e,0,0,e.width,e.height);var r=this.offscreenCanvasContext.getImageData(-1,-1,e.width+2,e.height+2);return this.offscreenCanvasContext.clearRect(0,0,this.offscreenCanvas.width,this.offscreenCanvas.height),new t.RGBAImage({width:r.width,height:r.height},r.data)},u.prototype.removeTile=function(t){var e=this.loaded,r=t.uid;e&&e[r]&&delete e[r]};var f=function t(e,r){var n,i=e&&e.type;if(\"FeatureCollection\"===i)for(n=0;n=0!=!!e&&t.reverse()}var d=t.vectorTile.VectorTileFeature.prototype.toGeoJSON,g=function(e){this._feature=e,this.extent=t.EXTENT,this.type=e.type,this.properties=e.tags,\"id\"in e&&!isNaN(e.id)&&(this.id=parseInt(e.id,10))};g.prototype.loadGeometry=function(){if(1===this._feature.type){for(var e=[],r=0,n=this._feature.geometry;r>31}function P(t,e){for(var r=t.loadGeometry(),n=t.type,i=0,a=0,o=r.length,s=0;s>1;!function t(e,r,n,i,a,o){for(;a>i;){if(a-i>600){var s=a-i+1,l=n-i+1,c=Math.log(s),u=.5*Math.exp(2*c/3),f=.5*Math.sqrt(c*u*(s-u)/s)*(l-s/2<0?-1:1),h=Math.max(i,Math.floor(n-l*u/s+f)),p=Math.min(a,Math.floor(n+(s-l)*u/s+f));t(e,r,n,h,p,o)}var d=r[2*n+o],g=i,m=a;for(z(e,r,i,n),r[2*a+o]>d&&z(e,r,i,a);gd;)m--}r[2*i+o]===d?z(e,r,i,m):(m++,z(e,r,m,a)),m<=n&&(i=m+1),n<=m&&(a=m-1)}}(t,e,o,n,i,a%2),O(t,e,r,n,o-1,a+1),O(t,e,r,o+1,i,a+1)}}function z(t,e,r,n){D(t,r,n),D(e,2*r,2*n),D(e,2*r+1,2*n+1)}function D(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function R(t,e,r,n){var i=t-r,a=e-n;return i*i+a*a}_.fromVectorTileJs=w,_.fromGeojsonVt=T,_.GeoJSONWrapper=k;var F=function(t){return t[0]},B=function(t){return t[1]},N=function(t,e,r,n,i){void 0===e&&(e=F),void 0===r&&(r=B),void 0===n&&(n=64),void 0===i&&(i=Float64Array),this.nodeSize=n,this.points=t;for(var a=t.length<65536?Uint16Array:Uint32Array,o=this.ids=new a(t.length),s=this.coords=new i(2*t.length),l=0;l=r&&s<=i&&l>=n&&l<=a&&u.push(t[d]);else{var g=Math.floor((p+h)/2);s=e[2*g],l=e[2*g+1],s>=r&&s<=i&&l>=n&&l<=a&&u.push(t[g]);var m=(f+1)%2;(0===f?r<=s:n<=l)&&(c.push(p),c.push(g-1),c.push(m)),(0===f?i>=s:a>=l)&&(c.push(g+1),c.push(h),c.push(m))}}return u}(this.ids,this.coords,t,e,r,n,this.nodeSize)},N.prototype.within=function(t,e,r){return function(t,e,r,n,i,a){for(var o=[0,t.length-1,0],s=[],l=i*i;o.length;){var c=o.pop(),u=o.pop(),f=o.pop();if(u-f<=a)for(var h=f;h<=u;h++)R(e[2*h],e[2*h+1],r,n)<=l&&s.push(t[h]);else{var p=Math.floor((f+u)/2),d=e[2*p],g=e[2*p+1];R(d,g,r,n)<=l&&s.push(t[p]);var m=(c+1)%2;(0===c?r-i<=d:n-i<=g)&&(o.push(f),o.push(p-1),o.push(m)),(0===c?r+i>=d:n+i>=g)&&(o.push(p+1),o.push(u),o.push(m))}}return s}(this.ids,this.coords,t,e,r,this.nodeSize)};var j={minZoom:0,maxZoom:16,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:function(t){return t}},U=function(t){this.options=X(Object.create(j),t),this.trees=new Array(this.options.maxZoom+1)};function V(t,e,r,n,i){return{x:t,y:e,zoom:1/0,id:r,parentId:-1,numPoints:n,properties:i}}function H(t,e){var r=t.geometry.coordinates,n=r[0],i=r[1];return{x:Y(n),y:W(i),zoom:1/0,index:e,parentId:-1}}function q(t){return{type:\"Feature\",id:t.id,properties:G(t),geometry:{type:\"Point\",coordinates:[(n=t.x,360*(n-.5)),(e=t.y,r=(180-360*e)*Math.PI/180,360*Math.atan(Math.exp(r))/Math.PI-90)]}};var e,r,n}function G(t){var e=t.numPoints,r=e>=1e4?Math.round(e/1e3)+\"k\":e>=1e3?Math.round(e/100)/10+\"k\":e;return X(X({},t.properties),{cluster:!0,cluster_id:t.id,point_count:e,point_count_abbreviated:r})}function Y(t){return t/360+.5}function W(t){var e=Math.sin(t*Math.PI/180),r=.5-.25*Math.log((1+e)/(1-e))/Math.PI;return r<0?0:r>1?1:r}function X(t,e){for(var r in e)t[r]=e[r];return t}function Z(t){return t.x}function J(t){return t.y}function K(t,e,r,n,i,a){var o=i-r,s=a-n;if(0!==o||0!==s){var l=((t-r)*o+(e-n)*s)/(o*o+s*s);l>1?(r=i,n=a):l>0&&(r+=o*l,n+=s*l)}return(o=t-r)*o+(s=e-n)*s}function Q(t,e,r,n){var i={id:void 0===t?null:t,type:e,geometry:r,tags:n,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return function(t){var e=t.geometry,r=t.type;if(\"Point\"===r||\"MultiPoint\"===r||\"LineString\"===r)$(t,e);else if(\"Polygon\"===r||\"MultiLineString\"===r)for(var n=0;n0&&(o+=n?(i*c-l*a)/2:Math.sqrt(Math.pow(l-i,2)+Math.pow(c-a,2))),i=l,a=c}var u=e.length-3;e[2]=1,function t(e,r,n,i){for(var a,o=i,s=n-r>>1,l=n-r,c=e[r],u=e[r+1],f=e[n],h=e[n+1],p=r+3;po)a=p,o=d;else if(d===o){var g=Math.abs(p-s);gi&&(a-r>3&&t(e,r,a,i),e[a+2]=o,n-a>3&&t(e,a,n,i))}(e,0,u,r),e[u+2]=1,e.size=Math.abs(o),e.start=0,e.end=e.size}function nt(t,e,r,n){for(var i=0;i1?1:r}function ot(t,e,r,n,i,a,o,s){if(n/=e,a>=(r/=e)&&o=n)return null;for(var l=[],c=0;c=r&&d=n)){var g=[];if(\"Point\"===h||\"MultiPoint\"===h)st(f,g,r,n,i);else if(\"LineString\"===h)lt(f,g,r,n,i,!1,s.lineMetrics);else if(\"MultiLineString\"===h)ut(f,g,r,n,i,!1);else if(\"Polygon\"===h)ut(f,g,r,n,i,!0);else if(\"MultiPolygon\"===h)for(var m=0;m=r&&o<=n&&(e.push(t[a]),e.push(t[a+1]),e.push(t[a+2]))}}function lt(t,e,r,n,i,a,o){for(var s,l,c=ct(t),u=0===i?ht:pt,f=t.start,h=0;hr&&(l=u(c,p,d,m,v,r),o&&(c.start=f+s*l)):y>n?x=r&&(l=u(c,p,d,m,v,r),b=!0),x>n&&y<=n&&(l=u(c,p,d,m,v,n),b=!0),!a&&b&&(o&&(c.end=f+s*l),e.push(c),c=ct(t)),o&&(f+=s)}var _=t.length-3;p=t[_],d=t[_+1],g=t[_+2],(y=0===i?p:d)>=r&&y<=n&&ft(c,p,d,g),_=c.length-3,a&&_>=3&&(c[_]!==c[0]||c[_+1]!==c[1])&&ft(c,c[0],c[1],c[2]),c.length&&e.push(c)}function ct(t){var e=[];return e.size=t.size,e.start=t.start,e.end=t.end,e}function ut(t,e,r,n,i,a){for(var o=0;oo.maxX&&(o.maxX=u),f>o.maxY&&(o.maxY=f)}return o}function xt(t,e,r,n){var i=e.geometry,a=e.type,o=[];if(\"Point\"===a||\"MultiPoint\"===a)for(var s=0;s0&&e.size<(i?o:n))r.numPoints+=e.length/3;else{for(var s=[],l=0;lo)&&(r.numSimplified++,s.push(e[l]),s.push(e[l+1])),r.numPoints++;i&&function(t,e){for(var r=0,n=0,i=t.length,a=i-2;n0===e)for(n=0,i=t.length;n24)throw new Error(\"maxZoom should be in the 0-24 range\");if(e.promoteId&&e.generateId)throw new Error(\"promoteId and generateId cannot be used together.\");var n=function(t,e){var r=[];if(\"FeatureCollection\"===t.type)for(var n=0;n=n;c--){var u=+Date.now();s=this._cluster(s,c),this.trees[c]=new N(s,Z,J,a,Float32Array),r&&console.log(\"z%d: %d clusters in %dms\",c,s.length,+Date.now()-u)}return r&&console.timeEnd(\"total time\"),this},U.prototype.getClusters=function(t,e){var r=((t[0]+180)%360+360)%360-180,n=Math.max(-90,Math.min(90,t[1])),i=180===t[2]?180:((t[2]+180)%360+360)%360-180,a=Math.max(-90,Math.min(90,t[3]));if(t[2]-t[0]>=360)r=-180,i=180;else if(r>i){var o=this.getClusters([r,n,180,a],e),s=this.getClusters([-180,n,i,a],e);return o.concat(s)}for(var l=this.trees[this._limitZoom(e)],c=[],u=0,f=l.range(Y(r),W(a),Y(i),W(n));u1?this._map(c,!0):null,m=(l<<5)+(e+1)+this.points.length,v=0,y=f;v>5},U.prototype._getOriginZoom=function(t){return(t-this.points.length)%32},U.prototype._map=function(t,e){if(t.numPoints)return e?X({},t.properties):t.properties;var r=this.points[t.index].properties,n=this.options.map(r);return e&&n===r?X({},n):n},_t.prototype.options={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,tolerance:3,extent:4096,buffer:64,lineMetrics:!1,promoteId:null,generateId:!1,debug:0},_t.prototype.splitTile=function(t,e,r,n,i,a,o){for(var s=[t,e,r,n],l=this.options,c=l.debug;s.length;){n=s.pop(),r=s.pop(),e=s.pop(),t=s.pop();var u=1<1&&console.time(\"creation\"),h=this.tiles[f]=yt(t,e,r,n,l),this.tileCoords.push({z:e,x:r,y:n}),c)){c>1&&(console.log(\"tile z%d-%d-%d (features: %d, points: %d, simplified: %d)\",e,r,n,h.numFeatures,h.numPoints,h.numSimplified),console.timeEnd(\"creation\"));var p=\"z\"+e;this.stats[p]=(this.stats[p]||0)+1,this.total++}if(h.source=t,i){if(e===l.maxZoom||e===i)continue;var d=1<1&&console.time(\"clipping\");var g,m,v,y,x,b,_=.5*l.buffer/l.extent,w=.5-_,T=.5+_,k=1+_;g=m=v=y=null,x=ot(t,u,r-_,r+T,0,h.minX,h.maxX,l),b=ot(t,u,r+w,r+k,0,h.minX,h.maxX,l),t=null,x&&(g=ot(x,u,n-_,n+T,1,h.minY,h.maxY,l),m=ot(x,u,n+w,n+k,1,h.minY,h.maxY,l),x=null),b&&(v=ot(b,u,n-_,n+T,1,h.minY,h.maxY,l),y=ot(b,u,n+w,n+k,1,h.minY,h.maxY,l),b=null),c>1&&console.timeEnd(\"clipping\"),s.push(g||[],e+1,2*r,2*n),s.push(m||[],e+1,2*r,2*n+1),s.push(v||[],e+1,2*r+1,2*n),s.push(y||[],e+1,2*r+1,2*n+1)}}},_t.prototype.getTile=function(t,e,r){var n=this.options,i=n.extent,a=n.debug;if(t<0||t>24)return null;var o=1<1&&console.log(\"drilling down to z%d-%d-%d\",t,e,r);for(var l,c=t,u=e,f=r;!l&&c>0;)c--,u=Math.floor(u/2),f=Math.floor(f/2),l=this.tiles[wt(c,u,f)];return l&&l.source?(a>1&&console.log(\"found parent tile z%d-%d-%d\",c,u,f),a>1&&console.time(\"drilling down\"),this.splitTile(l.source,c,u,f,t,e,r),a>1&&console.timeEnd(\"drilling down\"),this.tiles[s]?mt(this.tiles[s],i):null):null};var kt=function(e){function r(t,r,n,i){e.call(this,t,r,n,Tt),i&&(this.loadGeoJSON=i)}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.loadData=function(t,e){this._pendingCallback&&this._pendingCallback(null,{abandoned:!0}),this._pendingCallback=e,this._pendingLoadDataParams=t,this._state&&\"Idle\"!==this._state?this._state=\"NeedsLoadData\":(this._state=\"Coalescing\",this._loadData())},r.prototype._loadData=function(){var e=this;if(this._pendingCallback&&this._pendingLoadDataParams){var r=this._pendingCallback,n=this._pendingLoadDataParams;delete this._pendingCallback,delete this._pendingLoadDataParams;var i=!!(n&&n.request&&n.request.collectResourceTiming)&&new t.RequestPerformance(n.request);this.loadGeoJSON(n,(function(a,o){if(a||!o)return r(a);if(\"object\"!=typeof o)return r(new Error(\"Input data given to '\"+n.source+\"' is not a valid GeoJSON object.\"));f(o,!0);try{e._geoJSONIndex=n.cluster?new U(function(e){var r=e.superclusterOptions,n=e.clusterProperties;if(!n||!r)return r;for(var i={},a={},o={accumulated:null,zoom:0},s={properties:null},l=Object.keys(n),c=0,u=l;c=0?0:e.button},r.remove=function(t){t.parentNode&&t.parentNode.removeChild(t)};var h=function(e){function r(){e.call(this),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new t.RGBAImage({width:1,height:1}),this.dirty=!0}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.isLoaded=function(){return this.loaded},r.prototype.setLoaded=function(t){if(this.loaded!==t&&(this.loaded=t,t)){for(var e=0,r=this.requestors;e=0?1.2:1))}function v(t,e,r,n,i,a,o){for(var s=0;s65535)e(new Error(\"glyphs > 65535 not supported\"));else if(a.ranges[s])e(null,{stack:r,id:i,glyph:o});else{var l=a.requests[s];l||(l=a.requests[s]=[],x.loadGlyphRange(r,s,n.url,n.requestManager,(function(t,e){if(e){for(var r in e)n._doesCharSupportLocalGlyph(+r)||(a.glyphs[+r]=e[+r]);a.ranges[s]=!0}for(var i=0,o=l;i1&&(l=t[++s]);var u=Math.abs(c-l.left),f=Math.abs(c-l.right),h=Math.min(u,f),p=void 0,d=i/r*(n+1);if(l.isDash){var g=n-Math.abs(d);p=Math.sqrt(h*h+g*g)}else p=n-Math.sqrt(h*h+d*d);this.data[o+c]=Math.max(0,Math.min(255,p+128))}},T.prototype.addRegularDash=function(t){for(var e=t.length-1;e>=0;--e){var r=t[e],n=t[e+1];r.zeroLength?t.splice(e,1):n&&n.isDash===r.isDash&&(n.left=r.left,t.splice(e,1))}var i=t[0],a=t[t.length-1];i.isDash===a.isDash&&(i.left=a.left-this.width,a.right=i.right+this.width);for(var o=this.width*this.nextRow,s=0,l=t[s],c=0;c1&&(l=t[++s]);var u=Math.abs(c-l.left),f=Math.abs(c-l.right),h=Math.min(u,f),p=l.isDash?h:-h;this.data[o+c]=Math.max(0,Math.min(255,p+128))}},T.prototype.addDash=function(e,r){var n=r?7:0,i=2*n+1;if(this.nextRow+i>this.height)return t.warnOnce(\"LineAtlas out of space\"),null;for(var a=0,o=0;o=n&&e.x=i&&e.y0&&(l[new t.OverscaledTileID(e.overscaledZ,a,r.z,i,r.y-1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,e.wrap,r.z,r.x,r.y-1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,s,r.z,o,r.y-1).key]={backfilled:!1}),r.y+10&&(n.resourceTiming=e._resourceTiming,e._resourceTiming=[]),e.fire(new t.Event(\"data\",n))}}))},r.prototype.onAdd=function(t){this.map=t,this.load()},r.prototype.setData=function(e){var r=this;return this._data=e,this.fire(new t.Event(\"dataloading\",{dataType:\"source\"})),this._updateWorkerData((function(e){if(e)r.fire(new t.ErrorEvent(e));else{var n={dataType:\"source\",sourceDataType:\"content\"};r._collectResourceTiming&&r._resourceTiming&&r._resourceTiming.length>0&&(n.resourceTiming=r._resourceTiming,r._resourceTiming=[]),r.fire(new t.Event(\"data\",n))}})),this},r.prototype.getClusterExpansionZoom=function(t,e){return this.actor.send(\"geojson.getClusterExpansionZoom\",{clusterId:t,source:this.id},e),this},r.prototype.getClusterChildren=function(t,e){return this.actor.send(\"geojson.getClusterChildren\",{clusterId:t,source:this.id},e),this},r.prototype.getClusterLeaves=function(t,e,r,n){return this.actor.send(\"geojson.getClusterLeaves\",{source:this.id,clusterId:t,limit:e,offset:r},n),this},r.prototype._updateWorkerData=function(e){var r=this;this._loaded=!1;var n=t.extend({},this.workerOptions),i=this._data;\"string\"==typeof i?(n.request=this.map._requestManager.transformRequest(t.browser.resolveURL(i),t.ResourceType.Source),n.request.collectResourceTiming=this._collectResourceTiming):n.data=JSON.stringify(i),this.actor.send(this.type+\".loadData\",n,(function(t,i){r._removed||i&&i.abandoned||(r._loaded=!0,i&&i.resourceTiming&&i.resourceTiming[r.id]&&(r._resourceTiming=i.resourceTiming[r.id].slice(0)),r.actor.send(r.type+\".coalesce\",{source:n.source},null),e(t))}))},r.prototype.loaded=function(){return this._loaded},r.prototype.loadTile=function(e,r){var n=this,i=e.actor?\"reloadTile\":\"loadTile\";e.actor=this.actor;var a={type:this.type,uid:e.uid,tileID:e.tileID,zoom:e.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:t.browser.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};e.request=this.actor.send(i,a,(function(t,a){return delete e.request,e.unloadVectorData(),e.aborted?r(null):t?r(t):(e.loadVectorData(a,n.map.painter,\"reloadTile\"===i),r(null))}))},r.prototype.abortTile=function(t){t.request&&(t.request.cancel(),delete t.request),t.aborted=!0},r.prototype.unloadTile=function(t){t.unloadVectorData(),this.actor.send(\"removeTile\",{uid:t.uid,type:this.type,source:this.id})},r.prototype.onRemove=function(){this._removed=!0,this.actor.send(\"removeSource\",{type:this.type,source:this.id})},r.prototype.serialize=function(){return t.extend({},this._options,{type:this.type,data:this._data})},r.prototype.hasTransition=function(){return!1},r}(t.Evented),P=t.createLayout([{name:\"a_pos\",type:\"Int16\",components:2},{name:\"a_texture_pos\",type:\"Int16\",components:2}]),I=function(e){function r(t,r,n,i){e.call(this),this.id=t,this.dispatcher=n,this.coordinates=r.coordinates,this.type=\"image\",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(i),this.options=r}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.load=function(e,r){var n=this;this._loaded=!1,this.fire(new t.Event(\"dataloading\",{dataType:\"source\"})),this.url=this.options.url,t.getImage(this.map._requestManager.transformRequest(this.url,t.ResourceType.Image),(function(i,a){n._loaded=!0,i?n.fire(new t.ErrorEvent(i)):a&&(n.image=a,e&&(n.coordinates=e),r&&r(),n._finishLoading())}))},r.prototype.loaded=function(){return this._loaded},r.prototype.updateImage=function(t){var e=this;return this.image&&t.url?(this.options.url=t.url,this.load(t.coordinates,(function(){e.texture=null})),this):this},r.prototype._finishLoading=function(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new t.Event(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})))},r.prototype.onAdd=function(t){this.map=t,this.load()},r.prototype.setCoordinates=function(e){var r=this;this.coordinates=e;var n=e.map(t.MercatorCoordinate.fromLngLat);this.tileID=function(e){for(var r=1/0,n=1/0,i=-1/0,a=-1/0,o=0,s=e;or.end(0)?this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+this.id,null,\"Playback for this video can be set only between the \"+r.start(0)+\" and \"+r.end(0)+\"-second mark.\"))):this.video.currentTime=e}},r.prototype.getVideo=function(){return this.video},r.prototype.onAdd=function(t){this.map||(this.map=t,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))},r.prototype.prepare=function(){if(!(0===Object.keys(this.tiles).length||this.video.readyState<2)){var e=this.map.painter.context,r=e.gl;for(var n in this.boundsBuffer||(this.boundsBuffer=e.createVertexBuffer(this._boundsArray,P.members)),this.boundsSegments||(this.boundsSegments=t.SegmentVector.simpleSegment(0,0,4,2)),this.texture?this.video.paused||(this.texture.bind(r.LINEAR,r.CLAMP_TO_EDGE),r.texSubImage2D(r.TEXTURE_2D,0,0,0,r.RGBA,r.UNSIGNED_BYTE,this.video)):(this.texture=new t.Texture(e,this.video,r.RGBA),this.texture.bind(r.LINEAR,r.CLAMP_TO_EDGE)),this.tiles){var i=this.tiles[n];\"loaded\"!==i.state&&(i.state=\"loaded\",i.texture=this.texture)}}},r.prototype.serialize=function(){return{type:\"video\",urls:this.urls,coordinates:this.coordinates}},r.prototype.hasTransition=function(){return this.video&&!this.video.paused},r}(I),z=function(e){function r(r,n,i,a){e.call(this,r,n,i,a),n.coordinates?Array.isArray(n.coordinates)&&4===n.coordinates.length&&!n.coordinates.some((function(t){return!Array.isArray(t)||2!==t.length||t.some((function(t){return\"number\"!=typeof t}))}))||this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+r,null,'\"coordinates\" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+r,null,'missing required property \"coordinates\"'))),n.animate&&\"boolean\"!=typeof n.animate&&this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+r,null,'optional \"animate\" property must be a boolean value'))),n.canvas?\"string\"==typeof n.canvas||n.canvas instanceof t.window.HTMLCanvasElement||this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+r,null,'\"canvas\" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+r,null,'missing required property \"canvas\"'))),this.options=n,this.animate=void 0===n.animate||n.animate}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.load=function(){this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof t.window.HTMLCanvasElement?this.options.canvas:t.window.document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new t.ErrorEvent(new Error(\"Canvas dimensions cannot be less than or equal to zero.\"))):(this.play=function(){this._playing=!0,this.map.triggerRepaint()},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1)},this._finishLoading())},r.prototype.getCanvas=function(){return this.canvas},r.prototype.onAdd=function(t){this.map=t,this.load(),this.canvas&&this.animate&&this.play()},r.prototype.onRemove=function(){this.pause()},r.prototype.prepare=function(){var e=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,e=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,e=!0),!this._hasInvalidDimensions()&&0!==Object.keys(this.tiles).length){var r=this.map.painter.context,n=r.gl;for(var i in this.boundsBuffer||(this.boundsBuffer=r.createVertexBuffer(this._boundsArray,P.members)),this.boundsSegments||(this.boundsSegments=t.SegmentVector.simpleSegment(0,0,4,2)),this.texture?(e||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new t.Texture(r,this.canvas,n.RGBA,{premultiply:!0}),this.tiles){var a=this.tiles[i];\"loaded\"!==a.state&&(a.state=\"loaded\",a.texture=this.texture)}}},r.prototype.serialize=function(){return{type:\"canvas\",coordinates:this.coordinates}},r.prototype.hasTransition=function(){return this._playing},r.prototype._hasInvalidDimensions=function(){for(var t=0,e=[this.canvas.width,this.canvas.height];tthis.max){var o=this._getAndRemoveByKey(this.order[0]);o&&this.onRemove(o)}return this},N.prototype.has=function(t){return t.wrapped().key in this.data},N.prototype.getAndRemove=function(t){return this.has(t)?this._getAndRemoveByKey(t.wrapped().key):null},N.prototype._getAndRemoveByKey=function(t){var e=this.data[t].shift();return e.timeout&&clearTimeout(e.timeout),0===this.data[t].length&&delete this.data[t],this.order.splice(this.order.indexOf(t),1),e.value},N.prototype.getByKey=function(t){var e=this.data[t];return e?e[0].value:null},N.prototype.get=function(t){return this.has(t)?this.data[t.wrapped().key][0].value:null},N.prototype.remove=function(t,e){if(!this.has(t))return this;var r=t.wrapped().key,n=void 0===e?0:this.data[r].indexOf(e),i=this.data[r][n];return this.data[r].splice(n,1),i.timeout&&clearTimeout(i.timeout),0===this.data[r].length&&delete this.data[r],this.onRemove(i.value),this.order.splice(this.order.indexOf(r),1),this},N.prototype.setMaxSize=function(t){for(this.max=t;this.order.length>this.max;){var e=this._getAndRemoveByKey(this.order[0]);e&&this.onRemove(e)}return this},N.prototype.filter=function(t){var e=[];for(var r in this.data)for(var n=0,i=this.data[r];n1||(Math.abs(r)>1&&(1===Math.abs(r+i)?r+=i:1===Math.abs(r-i)&&(r-=i)),e.dem&&t.dem&&(t.dem.backfillBorder(e.dem,r,n),t.neighboringTiles&&t.neighboringTiles[a]&&(t.neighboringTiles[a].backfilled=!0)))}},r.prototype.getTile=function(t){return this.getTileByID(t.key)},r.prototype.getTileByID=function(t){return this._tiles[t]},r.prototype._retainLoadedChildren=function(t,e,r,n){for(var i in this._tiles){var a=this._tiles[i];if(!(n[i]||!a.hasData()||a.tileID.overscaledZ<=e||a.tileID.overscaledZ>r)){for(var o=a.tileID;a&&a.tileID.overscaledZ>e+1;){var s=a.tileID.scaledTo(a.tileID.overscaledZ-1);(a=this._tiles[s.key])&&a.hasData()&&(o=s)}for(var l=o;l.overscaledZ>e;)if(t[(l=l.scaledTo(l.overscaledZ-1)).key]){n[o.key]=o;break}}}},r.prototype.findLoadedParent=function(t,e){if(t.key in this._loadedParentTiles){var r=this._loadedParentTiles[t.key];return r&&r.tileID.overscaledZ>=e?r:null}for(var n=t.overscaledZ-1;n>=e;n--){var i=t.scaledTo(n),a=this._getLoadedTile(i);if(a)return a}},r.prototype._getLoadedTile=function(t){var e=this._tiles[t.key];return e&&e.hasData()?e:this._cache.getByKey(t.wrapped().key)},r.prototype.updateCacheSize=function(t){var e=(Math.ceil(t.width/this._source.tileSize)+1)*(Math.ceil(t.height/this._source.tileSize)+1),r=Math.floor(5*e),n=\"number\"==typeof this._maxTileCacheSize?Math.min(this._maxTileCacheSize,r):r;this._cache.setMaxSize(n)},r.prototype.handleWrapJump=function(t){var e=(t-(void 0===this._prevLng?t:this._prevLng))/360,r=Math.round(e);if(this._prevLng=t,r){var n={};for(var i in this._tiles){var a=this._tiles[i];a.tileID=a.tileID.unwrapTo(a.tileID.wrap+r),n[a.tileID.key]=a}for(var o in this._tiles=n,this._timers)clearTimeout(this._timers[o]),delete this._timers[o];for(var s in this._tiles){var l=this._tiles[s];this._setTileReloadTimer(s,l)}}},r.prototype.update=function(e){var n=this;if(this.transform=e,this._sourceLoaded&&!this._paused){var i;this.updateCacheSize(e),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used?this._source.tileID?i=e.getVisibleUnwrappedCoordinates(this._source.tileID).map((function(e){return new t.OverscaledTileID(e.canonical.z,e.wrap,e.canonical.z,e.canonical.x,e.canonical.y)})):(i=e.coveringTiles({tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled}),this._source.hasTile&&(i=i.filter((function(t){return n._source.hasTile(t)})))):i=[];var a=e.coveringZoomLevel(this._source),o=Math.max(a-r.maxOverzooming,this._source.minzoom),s=Math.max(a+r.maxUnderzooming,this._source.minzoom),l=this._updateRetainedTiles(i,a);if(It(this._source.type)){for(var c={},u={},f=0,h=Object.keys(l);fthis._source.maxzoom){var m=d.children(this._source.maxzoom)[0],v=this.getTile(m);if(v&&v.hasData()){n[m.key]=m;continue}}else{var y=d.children(this._source.maxzoom);if(n[y[0].key]&&n[y[1].key]&&n[y[2].key]&&n[y[3].key])continue}for(var x=g.wasRequested(),b=d.overscaledZ-1;b>=a;--b){var _=d.scaledTo(b);if(i[_.key])break;if(i[_.key]=!0,!(g=this.getTile(_))&&x&&(g=this._addTile(_)),g&&(n[_.key]=_,x=g.wasRequested(),g.hasData()))break}}}return n},r.prototype._updateLoadedParentTileCache=function(){for(var t in this._loadedParentTiles={},this._tiles){for(var e=[],r=void 0,n=this._tiles[t].tileID;n.overscaledZ>0;){if(n.key in this._loadedParentTiles){r=this._loadedParentTiles[n.key];break}e.push(n.key);var i=n.scaledTo(n.overscaledZ-1);if(r=this._getLoadedTile(i))break;n=i}for(var a=0,o=e;a0||(e.hasData()&&\"reloading\"!==e.state?this._cache.add(e.tileID,e,e.getExpiryTimeout()):(e.aborted=!0,this._abortTile(e),this._unloadTile(e))))},r.prototype.clearTiles=function(){for(var t in this._shouldReloadOnResume=!1,this._paused=!1,this._tiles)this._removeTile(t);this._cache.reset()},r.prototype.tilesIn=function(e,r,n){var i=this,a=[],o=this.transform;if(!o)return a;for(var s=n?o.getCameraQueryGeometry(e):e,l=e.map((function(t){return o.pointCoordinate(t)})),c=s.map((function(t){return o.pointCoordinate(t)})),u=this.getIds(),f=1/0,h=1/0,p=-1/0,d=-1/0,g=0,m=c;g=0&&v[1].y+m>=0){var y=l.map((function(t){return s.getTilePoint(t)})),x=c.map((function(t){return s.getTilePoint(t)}));a.push({tile:n,tileID:s,queryGeometry:y,cameraQueryGeometry:x,scale:g})}}},x=0;x=t.browser.now())return!0}return!1},r.prototype.setFeatureState=function(t,e,r){t=t||\"_geojsonTileLayer\",this._state.updateState(t,e,r)},r.prototype.removeFeatureState=function(t,e,r){t=t||\"_geojsonTileLayer\",this._state.removeFeatureState(t,e,r)},r.prototype.getFeatureState=function(t,e){return t=t||\"_geojsonTileLayer\",this._state.getState(t,e)},r.prototype.setDependencies=function(t,e,r){var n=this._tiles[t];n&&n.setDependencies(e,r)},r.prototype.reloadTilesForDependencies=function(t,e){for(var r in this._tiles){this._tiles[r].hasDependency(t,e)&&this._reloadTile(r,\"reloading\")}this._cache.filter((function(r){return!r.hasDependency(t,e)}))},r}(t.Evented);function Pt(t,e){var r=Math.abs(2*t.wrap)-+(t.wrap<0),n=Math.abs(2*e.wrap)-+(e.wrap<0);return t.overscaledZ-e.overscaledZ||n-r||e.canonical.y-t.canonical.y||e.canonical.x-t.canonical.x}function It(t){return\"raster\"===t||\"image\"===t||\"video\"===t}function Ot(){return new t.window.Worker(Zi.workerUrl)}Ct.maxOverzooming=10,Ct.maxUnderzooming=3;var zt=\"mapboxgl_preloaded_worker_pool\",Dt=function(){this.active={}};Dt.prototype.acquire=function(t){if(!this.workers)for(this.workers=[];this.workers.length0?(i-o)/s:0;return this.points[a].mult(1-l).add(this.points[r].mult(l))};var Kt=function(t,e,r){var n=this.boxCells=[],i=this.circleCells=[];this.xCellCount=Math.ceil(t/r),this.yCellCount=Math.ceil(e/r);for(var a=0;a=-e[0]&&r<=e[0]&&n>=-e[1]&&n<=e[1]}function ne(e,r,n,i,a,o,s,l){var c=i?e.textSizeData:e.iconSizeData,u=t.evaluateSizeForZoom(c,n.transform.zoom),f=[256/n.width*2+1,256/n.height*2+1],h=i?e.text.dynamicLayoutVertexArray:e.icon.dynamicLayoutVertexArray;h.clear();for(var p=e.lineVertexArray,d=i?e.text.placedSymbolArray:e.icon.placedSymbolArray,g=n.transform.width/n.transform.height,m=!1,v=0;vMath.abs(n.x-r.x)*i)return{useVertical:!0};return(e===t.WritingMode.vertical?r.yn.x)?{needsFlipping:!0}:null}function oe(e,r,n,i,a,o,s,l,c,u,f,h,p,d){var g,m=r/24,v=e.lineOffsetX*m,y=e.lineOffsetY*m;if(e.numGlyphs>1){var x=e.glyphStartIndex+e.numGlyphs,b=e.lineStartIndex,_=e.lineStartIndex+e.lineLength,w=ie(m,l,v,y,n,f,h,e,c,o,p);if(!w)return{notEnoughRoom:!0};var T=te(w.first.point,s).point,k=te(w.last.point,s).point;if(i&&!n){var A=ae(e.writingMode,T,k,d);if(A)return A}g=[w.first];for(var M=e.glyphStartIndex+1;M0?C.point:se(h,L,S,1,a),I=ae(e.writingMode,S,P,d);if(I)return I}var O=le(m*l.getoffsetX(e.glyphStartIndex),v,y,n,f,h,e.segment,e.lineStartIndex,e.lineStartIndex+e.lineLength,c,o,p);if(!O)return{notEnoughRoom:!0};g=[O]}for(var z=0,D=g;z0?1:-1,g=0;i&&(d*=-1,g=Math.PI),d<0&&(g+=Math.PI);for(var m=d>0?l+s:l+s+1,v=a,y=a,x=0,b=0,_=Math.abs(p),w=[];x+b<=_;){if((m+=d)=c)return null;if(y=v,w.push(v),void 0===(v=h[m])){var T=new t.Point(u.getx(m),u.gety(m)),k=te(T,f);if(k.signedDistanceFromCamera>0)v=h[m]=k.point;else{var A=m-d;v=se(0===x?o:new t.Point(u.getx(A),u.gety(A)),T,y,_-x+1,f)}}x+=b,b=y.dist(v)}var M=(_-x)/b,S=v.sub(y),E=S.mult(M)._add(y);E._add(S._unit()._perp()._mult(n*d));var L=g+Math.atan2(v.y-y.y,v.x-y.x);return w.push(E),{point:E,angle:L,path:w}}Kt.prototype.keysLength=function(){return this.boxKeys.length+this.circleKeys.length},Kt.prototype.insert=function(t,e,r,n,i){this._forEachCell(e,r,n,i,this._insertBoxCell,this.boxUid++),this.boxKeys.push(t),this.bboxes.push(e),this.bboxes.push(r),this.bboxes.push(n),this.bboxes.push(i)},Kt.prototype.insertCircle=function(t,e,r,n){this._forEachCell(e-n,r-n,e+n,r+n,this._insertCircleCell,this.circleUid++),this.circleKeys.push(t),this.circles.push(e),this.circles.push(r),this.circles.push(n)},Kt.prototype._insertBoxCell=function(t,e,r,n,i,a){this.boxCells[i].push(a)},Kt.prototype._insertCircleCell=function(t,e,r,n,i,a){this.circleCells[i].push(a)},Kt.prototype._query=function(t,e,r,n,i,a){if(r<0||t>this.width||n<0||e>this.height)return!i&&[];var o=[];if(t<=0&&e<=0&&this.width<=r&&this.height<=n){if(i)return!0;for(var s=0;s0:o},Kt.prototype._queryCircle=function(t,e,r,n,i){var a=t-r,o=t+r,s=e-r,l=e+r;if(o<0||a>this.width||l<0||s>this.height)return!n&&[];var c=[],u={hitTest:n,circle:{x:t,y:e,radius:r},seenUids:{box:{},circle:{}}};return this._forEachCell(a,s,o,l,this._queryCellCircle,c,u,i),n?c.length>0:c},Kt.prototype.query=function(t,e,r,n,i){return this._query(t,e,r,n,!1,i)},Kt.prototype.hitTest=function(t,e,r,n,i){return this._query(t,e,r,n,!0,i)},Kt.prototype.hitTestCircle=function(t,e,r,n){return this._queryCircle(t,e,r,!0,n)},Kt.prototype._queryCell=function(t,e,r,n,i,a,o,s){var l=o.seenUids,c=this.boxCells[i];if(null!==c)for(var u=this.bboxes,f=0,h=c;f=u[d+0]&&n>=u[d+1]&&(!s||s(this.boxKeys[p]))){if(o.hitTest)return a.push(!0),!0;a.push({key:this.boxKeys[p],x1:u[d],y1:u[d+1],x2:u[d+2],y2:u[d+3]})}}}var g=this.circleCells[i];if(null!==g)for(var m=this.circles,v=0,y=g;vo*o+s*s},Kt.prototype._circleAndRectCollide=function(t,e,r,n,i,a,o){var s=(a-n)/2,l=Math.abs(t-(n+s));if(l>s+r)return!1;var c=(o-i)/2,u=Math.abs(e-(i+c));if(u>c+r)return!1;if(l<=s||u<=c)return!0;var f=l-s,h=u-c;return f*f+h*h<=r*r};var ce=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function ue(t,e){for(var r=0;r=1;P--)C.push(E.path[P]);for(var I=1;I0){for(var R=C[0].clone(),F=C[0].clone(),B=1;B=A.x&&F.x<=M.x&&R.y>=A.y&&F.y<=M.y?[C]:F.xM.x||F.yM.y?[]:t.clipLine([C],A.x,A.y,M.x,M.y)}for(var N=0,j=D;N=this.screenRightBoundary||n<100||e>this.screenBottomBoundary},he.prototype.isInsideGrid=function(t,e,r,n){return r>=0&&t=0&&e0)return this.prevPlacement&&this.prevPlacement.variableOffsets[f.crossTileID]&&this.prevPlacement.placements[f.crossTileID]&&this.prevPlacement.placements[f.crossTileID].text&&(g=this.prevPlacement.variableOffsets[f.crossTileID].anchor),this.variableOffsets[f.crossTileID]={textOffset:m,width:r,height:n,anchor:t,textBoxScale:i,prevAnchor:g},this.markUsedJustification(h,t,f,p),h.allowVerticalPlacement&&(this.markUsedOrientation(h,p,f),this.placedOrientations[f.crossTileID]=p),{shift:v,placedGlyphBoxes:y}},we.prototype.placeLayerBucketPart=function(e,r,n){var i=this,a=e.parameters,o=a.bucket,s=a.layout,l=a.posMatrix,c=a.textLabelPlaneMatrix,u=a.labelToScreenMatrix,f=a.textPixelRatio,h=a.holdingForFade,p=a.collisionBoxArray,d=a.partiallyEvaluatedTextSize,g=a.collisionGroup,m=s.get(\"text-optional\"),v=s.get(\"icon-optional\"),y=s.get(\"text-allow-overlap\"),x=s.get(\"icon-allow-overlap\"),b=\"map\"===s.get(\"text-rotation-alignment\"),_=\"map\"===s.get(\"text-pitch-alignment\"),w=\"none\"!==s.get(\"icon-text-fit\"),T=\"viewport-y\"===s.get(\"symbol-z-order\"),k=y&&(x||!o.hasIconData()||v),A=x&&(y||!o.hasTextData()||m);!o.collisionArrays&&p&&o.deserializeCollisionBoxes(p);var M=function(e,a){if(!r[e.crossTileID])if(h)i.placements[e.crossTileID]=new me(!1,!1,!1);else{var p,T=!1,M=!1,S=!0,E=null,L={box:null,offscreen:null},C={box:null,offscreen:null},P=null,I=null,O=0,z=0,D=0;a.textFeatureIndex?O=a.textFeatureIndex:e.useRuntimeCollisionCircles&&(O=e.featureIndex),a.verticalTextFeatureIndex&&(z=a.verticalTextFeatureIndex);var R=a.textBox;if(R){var F=function(r){var n=t.WritingMode.horizontal;if(o.allowVerticalPlacement&&!r&&i.prevPlacement){var a=i.prevPlacement.placedOrientations[e.crossTileID];a&&(i.placedOrientations[e.crossTileID]=a,n=a,i.markUsedOrientation(o,n,e))}return n},B=function(r,n){if(o.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&a.verticalTextBox)for(var i=0,s=o.writingModes;i0&&(N=N.filter((function(t){return t!==j.anchor}))).unshift(j.anchor)}var U=function(t,r,n){for(var a=t.x2-t.x1,s=t.y2-t.y1,c=e.textBoxScale,u=w&&!x?r:null,h={box:[],offscreen:!1},p=y?2*N.length:N.length,d=0;d=N.length,k=i.attemptAnchorPlacement(m,t,a,s,c,b,_,f,l,g,v,e,o,n,u);if(k&&(h=k.placedGlyphBoxes)&&h.box&&h.box.length){T=!0,E=k.shift;break}}return h};B((function(){return U(R,a.iconBox,t.WritingMode.horizontal)}),(function(){var r=a.verticalTextBox,n=L&&L.box&&L.box.length;return o.allowVerticalPlacement&&!n&&e.numVerticalGlyphVertices>0&&r?U(r,a.verticalIconBox,t.WritingMode.vertical):{box:null,offscreen:null}})),L&&(T=L.box,S=L.offscreen);var V=F(L&&L.box);if(!T&&i.prevPlacement){var H=i.prevPlacement.variableOffsets[e.crossTileID];H&&(i.variableOffsets[e.crossTileID]=H,i.markUsedJustification(o,H.anchor,e,V))}}else{var q=function(t,r){var n=i.collisionIndex.placeCollisionBox(t,y,f,l,g.predicate);return n&&n.box&&n.box.length&&(i.markUsedOrientation(o,r,e),i.placedOrientations[e.crossTileID]=r),n};B((function(){return q(R,t.WritingMode.horizontal)}),(function(){var r=a.verticalTextBox;return o.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&r?q(r,t.WritingMode.vertical):{box:null,offscreen:null}})),F(L&&L.box&&L.box.length)}}if(T=(p=L)&&p.box&&p.box.length>0,S=p&&p.offscreen,e.useRuntimeCollisionCircles){var G=o.text.placedSymbolArray.get(e.centerJustifiedTextSymbolIndex),Y=t.evaluateSizeForFeature(o.textSizeData,d,G),W=s.get(\"text-padding\"),X=e.collisionCircleDiameter;P=i.collisionIndex.placeCollisionCircles(y,G,o.lineVertexArray,o.glyphOffsetArray,Y,l,c,u,n,_,g.predicate,X,W),T=y||P.circles.length>0&&!P.collisionDetected,S=S&&P.offscreen}if(a.iconFeatureIndex&&(D=a.iconFeatureIndex),a.iconBox){var Z=function(t){var e=w&&E?_e(t,E.x,E.y,b,_,i.transform.angle):t;return i.collisionIndex.placeCollisionBox(e,x,f,l,g.predicate)};M=C&&C.box&&C.box.length&&a.verticalIconBox?(I=Z(a.verticalIconBox)).box.length>0:(I=Z(a.iconBox)).box.length>0,S=S&&I.offscreen}var J=m||0===e.numHorizontalGlyphVertices&&0===e.numVerticalGlyphVertices,K=v||0===e.numIconVertices;if(J||K?K?J||(M=M&&T):T=M&&T:M=T=M&&T,T&&p&&p.box&&(C&&C.box&&z?i.collisionIndex.insertCollisionBox(p.box,s.get(\"text-ignore-placement\"),o.bucketInstanceId,z,g.ID):i.collisionIndex.insertCollisionBox(p.box,s.get(\"text-ignore-placement\"),o.bucketInstanceId,O,g.ID)),M&&I&&i.collisionIndex.insertCollisionBox(I.box,s.get(\"icon-ignore-placement\"),o.bucketInstanceId,D,g.ID),P&&(T&&i.collisionIndex.insertCollisionCircles(P.circles,s.get(\"text-ignore-placement\"),o.bucketInstanceId,O,g.ID),n)){var Q=o.bucketInstanceId,$=i.collisionCircleArrays[Q];void 0===$&&($=i.collisionCircleArrays[Q]=new ve);for(var tt=0;tt=0;--E){var L=S[E];M(o.symbolInstances.get(L),o.collisionArrays[L])}else for(var C=e.symbolInstanceStart;C=0&&(e.text.placedSymbolArray.get(c).crossTileID=a>=0&&c!==a?0:n.crossTileID)}},we.prototype.markUsedOrientation=function(e,r,n){for(var i=r===t.WritingMode.horizontal||r===t.WritingMode.horizontalOnly?r:0,a=r===t.WritingMode.vertical?r:0,o=0,s=[n.leftJustifiedTextSymbolIndex,n.centerJustifiedTextSymbolIndex,n.rightJustifiedTextSymbolIndex];o0||l>0,x=a.numIconVertices>0,b=i.placedOrientations[a.crossTileID],_=b===t.WritingMode.vertical,w=b===t.WritingMode.horizontal||b===t.WritingMode.horizontalOnly;if(y){var T=Pe(v.text),k=_?Ie:T;d(e.text,s,k);var A=w?Ie:T;d(e.text,l,A);var M=v.text.isHidden();[a.rightJustifiedTextSymbolIndex,a.centerJustifiedTextSymbolIndex,a.leftJustifiedTextSymbolIndex].forEach((function(t){t>=0&&(e.text.placedSymbolArray.get(t).hidden=M||_?1:0)})),a.verticalPlacedTextSymbolIndex>=0&&(e.text.placedSymbolArray.get(a.verticalPlacedTextSymbolIndex).hidden=M||w?1:0);var S=i.variableOffsets[a.crossTileID];S&&i.markUsedJustification(e,S.anchor,a,b);var E=i.placedOrientations[a.crossTileID];E&&(i.markUsedJustification(e,\"left\",a,E),i.markUsedOrientation(e,E,a))}if(x){var L=Pe(v.icon),C=!(h&&a.verticalPlacedIconSymbolIndex&&_);if(a.placedIconSymbolIndex>=0){var P=C?L:Ie;d(e.icon,a.numIconVertices,P),e.icon.placedSymbolArray.get(a.placedIconSymbolIndex).hidden=v.icon.isHidden()}if(a.verticalPlacedIconSymbolIndex>=0){var I=C?Ie:L;d(e.icon,a.numVerticalIconVertices,I),e.icon.placedSymbolArray.get(a.verticalPlacedIconSymbolIndex).hidden=v.icon.isHidden()}}if(e.hasIconCollisionBoxData()||e.hasTextCollisionBoxData()){var O=e.collisionArrays[n];if(O){var z=new t.Point(0,0);if(O.textBox||O.verticalTextBox){var D=!0;if(c){var R=i.variableOffsets[g];R?(z=be(R.anchor,R.width,R.height,R.textOffset,R.textBoxScale),u&&z._rotate(f?i.transform.angle:-i.transform.angle)):D=!1}O.textBox&&Te(e.textCollisionBox.collisionVertexArray,v.text.placed,!D||_,z.x,z.y),O.verticalTextBox&&Te(e.textCollisionBox.collisionVertexArray,v.text.placed,!D||w,z.x,z.y)}var F=Boolean(!w&&O.verticalIconBox);O.iconBox&&Te(e.iconCollisionBox.collisionVertexArray,v.icon.placed,F,h?z.x:0,h?z.y:0),O.verticalIconBox&&Te(e.iconCollisionBox.collisionVertexArray,v.icon.placed,!F,h?z.x:0,h?z.y:0)}}},m=0;mt},we.prototype.setStale=function(){this.stale=!0};var ke=Math.pow(2,25),Ae=Math.pow(2,24),Me=Math.pow(2,17),Se=Math.pow(2,16),Ee=Math.pow(2,9),Le=Math.pow(2,8),Ce=Math.pow(2,1);function Pe(t){if(0===t.opacity&&!t.placed)return 0;if(1===t.opacity&&t.placed)return 4294967295;var e=t.placed?1:0,r=Math.floor(127*t.opacity);return r*ke+e*Ae+r*Me+e*Se+r*Ee+e*Le+r*Ce+e}var Ie=0,Oe=function(t){this._sortAcrossTiles=\"viewport-y\"!==t.layout.get(\"symbol-z-order\")&&void 0!==t.layout.get(\"symbol-sort-key\").constantOr(1),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[]};Oe.prototype.continuePlacement=function(t,e,r,n,i){for(var a=this._bucketParts;this._currentTileIndex2};this._currentPlacementIndex>=0;){var s=r[e[this._currentPlacementIndex]],l=this.placement.collisionIndex.transform.zoom;if(\"symbol\"===s.type&&(!s.minzoom||s.minzoom<=l)&&(!s.maxzoom||s.maxzoom>l)){if(this._inProgressLayer||(this._inProgressLayer=new Oe(s)),this._inProgressLayer.continuePlacement(n[s.source],this.placement,this._showCollisionBoxes,s,o))return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0},ze.prototype.commit=function(t){return this.placement.commit(t),this.placement};var De=512/t.EXTENT/2,Re=function(t,e,r){this.tileID=t,this.indexedSymbolInstances={},this.bucketInstanceId=r;for(var n=0;nt.overscaledZ)for(var s in o){var l=o[s];l.tileID.isChildOf(t)&&l.findMatches(e.symbolInstances,t,i)}else{var c=o[t.scaledTo(Number(a)).key];c&&c.findMatches(e.symbolInstances,t,i)}}for(var u=0;u1?\"@2x\":\"\",l=t.getJSON(r.transformRequest(r.normalizeSpriteURL(e,s,\".json\"),t.ResourceType.SpriteJSON),(function(t,e){l=null,o||(o=t,i=e,u())})),c=t.getImage(r.transformRequest(r.normalizeSpriteURL(e,s,\".png\"),t.ResourceType.SpriteImage),(function(t,e){c=null,o||(o=t,a=e,u())}));function u(){if(o)n(o);else if(i&&a){var e=t.browser.getImageData(a),r={};for(var s in i){var l=i[s],c=l.width,u=l.height,f=l.x,h=l.y,p=l.sdf,d=l.pixelRatio,g=l.stretchX,m=l.stretchY,v=l.content,y=new t.RGBAImage({width:c,height:u});t.RGBAImage.copy(e,y,{x:f,y:h},{x:0,y:0},{width:c,height:u}),r[s]={data:y,pixelRatio:d,sdf:p,stretchX:g,stretchY:m,content:v}}n(null,r)}}return{cancel:function(){l&&(l.cancel(),l=null),c&&(c.cancel(),c=null)}}}(e,this.map._requestManager,(function(e,n){if(r._spriteRequest=null,e)r.fire(new t.ErrorEvent(e));else if(n)for(var i in n)r.imageManager.addImage(i,n[i]);r.imageManager.setLoaded(!0),r._availableImages=r.imageManager.listImages(),r.dispatcher.broadcast(\"setImages\",r._availableImages),r.fire(new t.Event(\"data\",{dataType:\"style\"}))}))},r.prototype._validateLayer=function(e){var r=this.sourceCaches[e.source];if(r){var n=e.sourceLayer;if(n){var i=r.getSource();(\"geojson\"===i.type||i.vectorLayerIds&&-1===i.vectorLayerIds.indexOf(n))&&this.fire(new t.ErrorEvent(new Error('Source layer \"'+n+'\" does not exist on source \"'+i.id+'\" as specified by style layer \"'+e.id+'\"')))}}},r.prototype.loaded=function(){if(!this._loaded)return!1;if(Object.keys(this._updatedSources).length)return!1;for(var t in this.sourceCaches)if(!this.sourceCaches[t].loaded())return!1;return!!this.imageManager.isLoaded()},r.prototype._serializeLayers=function(t){for(var e=[],r=0,n=t;r0)throw new Error(\"Unimplemented: \"+i.map((function(t){return t.command})).join(\", \")+\".\");return n.forEach((function(t){\"setTransition\"!==t.command&&r[t.command].apply(r,t.args)})),this.stylesheet=e,!0},r.prototype.addImage=function(e,r){if(this.getImage(e))return this.fire(new t.ErrorEvent(new Error(\"An image with this name already exists.\")));this.imageManager.addImage(e,r),this._availableImages=this.imageManager.listImages(),this._changedImages[e]=!0,this._changed=!0,this.fire(new t.Event(\"data\",{dataType:\"style\"}))},r.prototype.updateImage=function(t,e){this.imageManager.updateImage(t,e)},r.prototype.getImage=function(t){return this.imageManager.getImage(t)},r.prototype.removeImage=function(e){if(!this.getImage(e))return this.fire(new t.ErrorEvent(new Error(\"No image with this name exists.\")));this.imageManager.removeImage(e),this._availableImages=this.imageManager.listImages(),this._changedImages[e]=!0,this._changed=!0,this.fire(new t.Event(\"data\",{dataType:\"style\"}))},r.prototype.listImages=function(){return this._checkLoaded(),this.imageManager.listImages()},r.prototype.addSource=function(e,r,n){var i=this;if(void 0===n&&(n={}),this._checkLoaded(),void 0!==this.sourceCaches[e])throw new Error(\"There is already a source with this ID\");if(!r.type)throw new Error(\"The type property must be defined, but the only the following properties were given: \"+Object.keys(r).join(\", \")+\".\");if(!([\"vector\",\"raster\",\"geojson\",\"video\",\"image\"].indexOf(r.type)>=0)||!this._validate(t.validateStyle.source,\"sources.\"+e,r,null,n)){this.map&&this.map._collectResourceTiming&&(r.collectResourceTiming=!0);var a=this.sourceCaches[e]=new Ct(e,r,this.dispatcher);a.style=this,a.setEventedParent(this,(function(){return{isSourceLoaded:i.loaded(),source:a.serialize(),sourceId:e}})),a.onAdd(this.map),this._changed=!0}},r.prototype.removeSource=function(e){if(this._checkLoaded(),void 0===this.sourceCaches[e])throw new Error(\"There is no source with this ID\");for(var r in this._layers)if(this._layers[r].source===e)return this.fire(new t.ErrorEvent(new Error('Source \"'+e+'\" cannot be removed while layer \"'+r+'\" is using it.')));var n=this.sourceCaches[e];delete this.sourceCaches[e],delete this._updatedSources[e],n.fire(new t.Event(\"data\",{sourceDataType:\"metadata\",dataType:\"source\",sourceId:e})),n.setEventedParent(null),n.clearTiles(),n.onRemove&&n.onRemove(this.map),this._changed=!0},r.prototype.setGeoJSONSourceData=function(t,e){this._checkLoaded(),this.sourceCaches[t].getSource().setData(e),this._changed=!0},r.prototype.getSource=function(t){return this.sourceCaches[t]&&this.sourceCaches[t].getSource()},r.prototype.addLayer=function(e,r,n){void 0===n&&(n={}),this._checkLoaded();var i=e.id;if(this.getLayer(i))this.fire(new t.ErrorEvent(new Error('Layer with id \"'+i+'\" already exists on this map')));else{var a;if(\"custom\"===e.type){if(je(this,t.validateCustomStyleLayer(e)))return;a=t.createStyleLayer(e)}else{if(\"object\"==typeof e.source&&(this.addSource(i,e.source),e=t.clone$1(e),e=t.extend(e,{source:i})),this._validate(t.validateStyle.layer,\"layers.\"+i,e,{arrayIndex:-1},n))return;a=t.createStyleLayer(e),this._validateLayer(a),a.setEventedParent(this,{layer:{id:i}}),this._serializedLayers[a.id]=a.serialize()}var o=r?this._order.indexOf(r):this._order.length;if(r&&-1===o)this.fire(new t.ErrorEvent(new Error('Layer with id \"'+r+'\" does not exist on this map.')));else{if(this._order.splice(o,0,i),this._layerOrderChanged=!0,this._layers[i]=a,this._removedLayers[i]&&a.source&&\"custom\"!==a.type){var s=this._removedLayers[i];delete this._removedLayers[i],s.type!==a.type?this._updatedSources[a.source]=\"clear\":(this._updatedSources[a.source]=\"reload\",this.sourceCaches[a.source].pause())}this._updateLayer(a),a.onAdd&&a.onAdd(this.map)}}},r.prototype.moveLayer=function(e,r){if(this._checkLoaded(),this._changed=!0,this._layers[e]){if(e!==r){var n=this._order.indexOf(e);this._order.splice(n,1);var i=r?this._order.indexOf(r):this._order.length;r&&-1===i?this.fire(new t.ErrorEvent(new Error('Layer with id \"'+r+'\" does not exist on this map.'))):(this._order.splice(i,0,e),this._layerOrderChanged=!0)}}else this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be moved.\")))},r.prototype.removeLayer=function(e){this._checkLoaded();var r=this._layers[e];if(r){r.setEventedParent(null);var n=this._order.indexOf(e);this._order.splice(n,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[e]=r,delete this._layers[e],delete this._serializedLayers[e],delete this._updatedLayers[e],delete this._updatedPaintProps[e],r.onRemove&&r.onRemove(this.map)}else this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be removed.\")))},r.prototype.getLayer=function(t){return this._layers[t]},r.prototype.hasLayer=function(t){return t in this._layers},r.prototype.setLayerZoomRange=function(e,r,n){this._checkLoaded();var i=this.getLayer(e);i?i.minzoom===r&&i.maxzoom===n||(null!=r&&(i.minzoom=r),null!=n&&(i.maxzoom=n),this._updateLayer(i)):this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot have zoom extent.\")))},r.prototype.setFilter=function(e,r,n){void 0===n&&(n={}),this._checkLoaded();var i=this.getLayer(e);if(i){if(!t.deepEqual(i.filter,r))return null==r?(i.filter=void 0,void this._updateLayer(i)):void(this._validate(t.validateStyle.filter,\"layers.\"+i.id+\".filter\",r,null,n)||(i.filter=t.clone$1(r),this._updateLayer(i)))}else this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be filtered.\")))},r.prototype.getFilter=function(e){return t.clone$1(this.getLayer(e).filter)},r.prototype.setLayoutProperty=function(e,r,n,i){void 0===i&&(i={}),this._checkLoaded();var a=this.getLayer(e);a?t.deepEqual(a.getLayoutProperty(r),n)||(a.setLayoutProperty(r,n,i),this._updateLayer(a)):this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be styled.\")))},r.prototype.getLayoutProperty=function(e,r){var n=this.getLayer(e);if(n)return n.getLayoutProperty(r);this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style.\")))},r.prototype.setPaintProperty=function(e,r,n,i){void 0===i&&(i={}),this._checkLoaded();var a=this.getLayer(e);a?t.deepEqual(a.getPaintProperty(r),n)||(a.setPaintProperty(r,n,i)&&this._updateLayer(a),this._changed=!0,this._updatedPaintProps[e]=!0):this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be styled.\")))},r.prototype.getPaintProperty=function(t,e){return this.getLayer(t).getPaintProperty(e)},r.prototype.setFeatureState=function(e,r){this._checkLoaded();var n=e.source,i=e.sourceLayer,a=this.sourceCaches[n];if(void 0!==a){var o=a.getSource().type;\"geojson\"===o&&i?this.fire(new t.ErrorEvent(new Error(\"GeoJSON sources cannot have a sourceLayer parameter.\"))):\"vector\"!==o||i?(void 0===e.id&&this.fire(new t.ErrorEvent(new Error(\"The feature id parameter must be provided.\"))),a.setFeatureState(i,e.id,r)):this.fire(new t.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")))}else this.fire(new t.ErrorEvent(new Error(\"The source '\"+n+\"' does not exist in the map's style.\")))},r.prototype.removeFeatureState=function(e,r){this._checkLoaded();var n=e.source,i=this.sourceCaches[n];if(void 0!==i){var a=i.getSource().type,o=\"vector\"===a?e.sourceLayer:void 0;\"vector\"!==a||o?r&&\"string\"!=typeof e.id&&\"number\"!=typeof e.id?this.fire(new t.ErrorEvent(new Error(\"A feature id is requred to remove its specific state property.\"))):i.removeFeatureState(o,e.id,r):this.fire(new t.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")))}else this.fire(new t.ErrorEvent(new Error(\"The source '\"+n+\"' does not exist in the map's style.\")))},r.prototype.getFeatureState=function(e){this._checkLoaded();var r=e.source,n=e.sourceLayer,i=this.sourceCaches[r];if(void 0!==i){if(\"vector\"!==i.getSource().type||n)return void 0===e.id&&this.fire(new t.ErrorEvent(new Error(\"The feature id parameter must be provided.\"))),i.getFeatureState(n,e.id);this.fire(new t.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")))}else this.fire(new t.ErrorEvent(new Error(\"The source '\"+r+\"' does not exist in the map's style.\")))},r.prototype.getTransition=function(){return t.extend({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)},r.prototype.serialize=function(){return t.filterObject({version:this.stylesheet.version,name:this.stylesheet.name,metadata:this.stylesheet.metadata,light:this.stylesheet.light,center:this.stylesheet.center,zoom:this.stylesheet.zoom,bearing:this.stylesheet.bearing,pitch:this.stylesheet.pitch,sprite:this.stylesheet.sprite,glyphs:this.stylesheet.glyphs,transition:this.stylesheet.transition,sources:t.mapObject(this.sourceCaches,(function(t){return t.serialize()})),layers:this._serializeLayers(this._order)},(function(t){return void 0!==t}))},r.prototype._updateLayer=function(t){this._updatedLayers[t.id]=!0,t.source&&!this._updatedSources[t.source]&&\"raster\"!==this.sourceCaches[t.source].getSource().type&&(this._updatedSources[t.source]=\"reload\",this.sourceCaches[t.source].pause()),this._changed=!0},r.prototype._flattenAndSortRenderedFeatures=function(t){for(var e=this,r=function(t){return\"fill-extrusion\"===e._layers[t].type},n={},i=[],a=this._order.length-1;a>=0;a--){var o=this._order[a];if(r(o)){n[o]=a;for(var s=0,l=t;s=0;d--){var g=this._order[d];if(r(g))for(var m=i.length-1;m>=0;m--){var v=i[m].feature;if(n[v.layer.id] 0.5) {gl_FragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {gl_FragColor*=.1;}}\",\"attribute vec2 a_pos;attribute vec2 a_anchor_pos;attribute vec2 a_extrude;attribute vec2 a_placed;attribute vec2 a_shift;uniform mat4 u_matrix;uniform vec2 u_extrude_scale;uniform float u_camera_to_center_distance;varying float v_placed;varying float v_notUsed;void main() {vec4 projectedPoint=u_matrix*vec4(a_anchor_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);gl_Position=u_matrix*vec4(a_pos,0.0,1.0);gl_Position.xy+=(a_extrude+a_shift)*u_extrude_scale*gl_Position.w*collision_perspective_ratio;v_placed=a_placed.x;v_notUsed=a_placed.y;}\"),tr=yr(\"varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;void main() {float alpha=0.5*min(v_perspective_ratio,1.0);float stroke_radius=0.9*max(v_perspective_ratio,1.0);float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);gl_FragColor=color*alpha*opacity_t;}\",\"attribute vec2 a_pos;attribute float a_radius;attribute vec2 a_flags;uniform mat4 u_matrix;uniform mat4 u_inv_matrix;uniform vec2 u_viewport_size;uniform float u_camera_to_center_distance;varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;vec3 toTilePosition(vec2 screenPos) {vec4 rayStart=u_inv_matrix*vec4(screenPos,-1.0,1.0);vec4 rayEnd =u_inv_matrix*vec4(screenPos, 1.0,1.0);rayStart.xyz/=rayStart.w;rayEnd.xyz /=rayEnd.w;highp float t=(0.0-rayStart.z)/(rayEnd.z-rayStart.z);return mix(rayStart.xyz,rayEnd.xyz,t);}void main() {vec2 quadCenterPos=a_pos;float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(mix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;vec3 tilePos=toTilePosition(quadCenterPos);vec4 clipPos=u_matrix*vec4(tilePos,1.0);highp float camera_to_anchor_distance=clipPos.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_perspective_ratio=collision_perspective_ratio;v_collision=collision;gl_Position=vec4(clipPos.xyz/clipPos.w,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}\"),er=yr(\"uniform highp vec4 u_color;uniform sampler2D u_overlay;varying vec2 v_uv;void main() {vec4 overlay_color=texture2D(u_overlay,v_uv);gl_FragColor=mix(u_color,overlay_color,overlay_color.a);}\",\"attribute vec2 a_pos;varying vec2 v_uv;uniform mat4 u_matrix;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=u_matrix*vec4(a_pos*u_overlay_scale,0,1);}\"),rr=yr(\"#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float opacity\\ngl_FragColor=color*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float opacity\\ngl_Position=u_matrix*vec4(a_pos,0,1);}\"),nr=yr(\"varying vec2 v_pos;\\n#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 outline_color\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=outline_color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;uniform vec2 u_world;varying vec2 v_pos;\\n#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 outline_color\\n#pragma mapbox: initialize lowp float opacity\\ngl_Position=u_matrix*vec4(a_pos,0,1);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}\"),ir=yr(\"uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=mix(color1,color2,u_fade)*alpha*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;gl_Position=u_matrix*vec4(a_pos,0,1);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}\"),ar=yr(\"uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_fade)*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);}\"),or=yr(\"varying vec4 v_color;void main() {gl_FragColor=v_color;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec4 v_color;\\n#pragma mapbox: define highp float base\\n#pragma mapbox: define highp float height\\n#pragma mapbox: define highp vec4 color\\nvoid main() {\\n#pragma mapbox: initialize highp float base\\n#pragma mapbox: initialize highp float height\\n#pragma mapbox: initialize highp vec4 color\\nvec3 normal=a_normal_ed.xyz;base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);gl_Position=u_matrix*vec4(a_pos,t > 0.0 ? height : base,1);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal/16384.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}\"),sr=yr(\"uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float base\\n#pragma mapbox: initialize lowp float height\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);gl_FragColor=mixedColor*v_lighting;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float base\\n#pragma mapbox: initialize lowp float height\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);float z=t > 0.0 ? height : base;gl_Position=u_matrix*vec4(a_pos,z,1);vec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0\\n? a_pos\\n: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;}\"),lr=yr(\"#ifdef GL_ES\\nprecision highp float;\\n#endif\\nuniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform float u_maxzoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);float exaggeration=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;vec2 deriv=vec2((c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))/ pow(2.0,(u_zoom-u_maxzoom)*exaggeration+19.2562-u_zoom);gl_FragColor=clamp(vec4(deriv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}\"),cr=yr(\"uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent;\\n#define PI 3.141592653589793\\nvoid main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;}\"),ur=yr(\"uniform lowp float u_device_pixel_ratio;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);gl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_linesofar;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}\"),fr=yr(\"uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp float v_lineprogress;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture2D(u_image,vec2(v_lineprogress,0.5));gl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define MAX_LINE_DISTANCE 32767.0\\n#define scale 0.015873016\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_lineprogress;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_lineprogress=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0/MAX_LINE_DISTANCE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}\"),hr=yr(\"uniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture2D(u_image,pos_a),texture2D(u_image,pos_b),u_fade);gl_FragColor=color*alpha*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\n#define LINE_DISTANCE_SCALE 2.0\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}\"),pr=yr(\"uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform float u_sdfgamma;uniform float u_mix;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture2D(u_image,v_tex_a).a;float sdfdist_b=texture2D(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);alpha*=smoothstep(0.5-u_sdfgamma/floorwidth,0.5+u_sdfgamma/floorwidth,sdfdist);gl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\n#define LINE_DISTANCE_SCALE 2.0\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_patternscale_a;uniform float u_tex_y_a;uniform vec2 u_patternscale_b;uniform float u_tex_y_b;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_tex_a=vec2(a_linesofar*u_patternscale_a.x/floorwidth,normal.y*u_patternscale_a.y+u_tex_y_a);v_tex_b=vec2(a_linesofar*u_patternscale_b.x/floorwidth,normal.y*u_patternscale_b.y+u_tex_y_b);v_width2=vec2(outset,inset);}\"),dr=yr(\"uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);gl_FragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos0=(((a_texture_pos/8192.0)-0.5)/u_buffer_scale )+0.5;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}\"),gr=yr(\"uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity;\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\nlowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;varying vec2 v_tex;varying float v_fade_opacity;\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0),0.0,1.0);v_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;v_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));}\"),mr=yr(\"#define SDF_PX 8.0\\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nfloat EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;varying vec2 v_data0;varying vec3 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity);}\"),vr=yr(\"#define SDF_PX 8.0\\n#define SDF 1.0\\n#define ICON 0.0\\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nfloat fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\nreturn;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;varying vec4 v_data0;varying vec4 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}\");function yr(t,e){var r=/#pragma mapbox: ([\\w]+) ([\\w]+) ([\\w]+) ([\\w]+)/g,n={};return{fragmentSource:t=t.replace(r,(function(t,e,r,i,a){return n[a]=!0,\"define\"===e?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\nvarying \"+r+\" \"+i+\" \"+a+\";\\n#else\\nuniform \"+r+\" \"+i+\" u_\"+a+\";\\n#endif\\n\":\"\\n#ifdef HAS_UNIFORM_u_\"+a+\"\\n \"+r+\" \"+i+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\"})),vertexSource:e=e.replace(r,(function(t,e,r,i,a){var o=\"float\"===i?\"vec2\":\"vec4\",s=a.match(/color/)?\"color\":o;return n[a]?\"define\"===e?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\nuniform lowp float u_\"+a+\"_t;\\nattribute \"+r+\" \"+o+\" a_\"+a+\";\\nvarying \"+r+\" \"+i+\" \"+a+\";\\n#else\\nuniform \"+r+\" \"+i+\" u_\"+a+\";\\n#endif\\n\":\"vec4\"===s?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\n \"+a+\" = a_\"+a+\";\\n#else\\n \"+r+\" \"+i+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\":\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\n \"+a+\" = unpack_mix_\"+s+\"(a_\"+a+\", u_\"+a+\"_t);\\n#else\\n \"+r+\" \"+i+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\":\"define\"===e?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\nuniform lowp float u_\"+a+\"_t;\\nattribute \"+r+\" \"+o+\" a_\"+a+\";\\n#else\\nuniform \"+r+\" \"+i+\" u_\"+a+\";\\n#endif\\n\":\"vec4\"===s?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\n \"+r+\" \"+i+\" \"+a+\" = a_\"+a+\";\\n#else\\n \"+r+\" \"+i+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\":\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\n \"+r+\" \"+i+\" \"+a+\" = unpack_mix_\"+s+\"(a_\"+a+\", u_\"+a+\"_t);\\n#else\\n \"+r+\" \"+i+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\"}))}}var xr=Object.freeze({__proto__:null,prelude:Ye,background:We,backgroundPattern:Xe,circle:Ze,clippingMask:Je,heatmap:Ke,heatmapTexture:Qe,collisionBox:$e,collisionCircle:tr,debug:er,fill:rr,fillOutline:nr,fillOutlinePattern:ir,fillPattern:ar,fillExtrusion:or,fillExtrusionPattern:sr,hillshadePrepare:lr,hillshade:cr,line:ur,lineGradient:fr,linePattern:hr,lineSDF:pr,raster:dr,symbolIcon:gr,symbolSDF:mr,symbolTextAndIcon:vr}),br=function(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null};br.prototype.bind=function(t,e,r,n,i,a,o,s){this.context=t;for(var l=this.boundPaintVertexBuffers.length!==n.length,c=0;!l&&c>16,s>>16],u_pixel_coord_lower:[65535&o,65535&s]}}_r.prototype.draw=function(t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g){var m,v=t.gl;if(!this.failedToCreate){for(var y in t.program.set(this.program),t.setDepthMode(r),t.setStencilMode(n),t.setColorMode(i),t.setCullFace(a),this.fixedUniforms)this.fixedUniforms[y].set(o[y]);p&&p.setUniforms(t,this.binderUniforms,f,{zoom:h});for(var x=(m={},m[v.LINES]=2,m[v.TRIANGLES]=3,m[v.LINE_STRIP]=1,m)[e],b=0,_=u.get();b<_.length;b+=1){var w=_[b],T=w.vaos||(w.vaos={});(T[s]||(T[s]=new br)).bind(t,this,l,p?p.getPaintVertexBuffers():[],c,w.vertexOffset,d,g),v.drawElements(e,w.primitiveLength*x,v.UNSIGNED_SHORT,w.primitiveOffset*x*2)}}};var Tr=function(e,r,n,i){var a=r.style.light,o=a.properties.get(\"position\"),s=[o.x,o.y,o.z],l=t.create$1();\"viewport\"===a.properties.get(\"anchor\")&&t.fromRotation(l,-r.transform.angle),t.transformMat3(s,s,l);var c=a.properties.get(\"color\");return{u_matrix:e,u_lightpos:s,u_lightintensity:a.properties.get(\"intensity\"),u_lightcolor:[c.r,c.g,c.b],u_vertical_gradient:+n,u_opacity:i}},kr=function(e,r,n,i,a,o,s){return t.extend(Tr(e,r,n,i),wr(o,r,s),{u_height_factor:-Math.pow(2,a.overscaledZ)/s.tileSize/8})},Ar=function(t){return{u_matrix:t}},Mr=function(e,r,n,i){return t.extend(Ar(e),wr(n,r,i))},Sr=function(t,e){return{u_matrix:t,u_world:e}},Er=function(e,r,n,i,a){return t.extend(Mr(e,r,n,i),{u_world:a})},Lr=function(e,r,n,i){var a,o,s=e.transform;if(\"map\"===i.paint.get(\"circle-pitch-alignment\")){var l=pe(n,1,s.zoom);a=!0,o=[l,l]}else a=!1,o=s.pixelsToGLUnits;return{u_camera_to_center_distance:s.cameraToCenterDistance,u_scale_with_map:+(\"map\"===i.paint.get(\"circle-pitch-scale\")),u_matrix:e.translatePosMatrix(r.posMatrix,n,i.paint.get(\"circle-translate\"),i.paint.get(\"circle-translate-anchor\")),u_pitch_with_map:+a,u_device_pixel_ratio:t.browser.devicePixelRatio,u_extrude_scale:o}},Cr=function(t,e,r){var n=pe(r,1,e.zoom),i=Math.pow(2,e.zoom-r.tileID.overscaledZ),a=r.tileID.overscaleFactor();return{u_matrix:t,u_camera_to_center_distance:e.cameraToCenterDistance,u_pixels_to_tile_units:n,u_extrude_scale:[e.pixelsToGLUnits[0]/(n*i),e.pixelsToGLUnits[1]/(n*i)],u_overscale_factor:a}},Pr=function(t,e,r){return{u_matrix:t,u_inv_matrix:e,u_camera_to_center_distance:r.cameraToCenterDistance,u_viewport_size:[r.width,r.height]}},Ir=function(t,e,r){return void 0===r&&(r=1),{u_matrix:t,u_color:e,u_overlay:0,u_overlay_scale:r}},Or=function(t){return{u_matrix:t}},zr=function(t,e,r,n){return{u_matrix:t,u_extrude_scale:pe(e,1,r),u_intensity:n}};function Dr(e,r){var n=Math.pow(2,r.canonical.z),i=r.canonical.y;return[new t.MercatorCoordinate(0,i/n).toLngLat().lat,new t.MercatorCoordinate(0,(i+1)/n).toLngLat().lat]}var Rr=function(e,r,n){var i=e.transform;return{u_matrix:Ur(e,r,n),u_ratio:1/pe(r,1,i.zoom),u_device_pixel_ratio:t.browser.devicePixelRatio,u_units_to_pixels:[1/i.pixelsToGLUnits[0],1/i.pixelsToGLUnits[1]]}},Fr=function(e,r,n){return t.extend(Rr(e,r,n),{u_image:0})},Br=function(e,r,n,i){var a=e.transform,o=jr(r,a);return{u_matrix:Ur(e,r,n),u_texsize:r.imageAtlasTexture.size,u_ratio:1/pe(r,1,a.zoom),u_device_pixel_ratio:t.browser.devicePixelRatio,u_image:0,u_scale:[o,i.fromScale,i.toScale],u_fade:i.t,u_units_to_pixels:[1/a.pixelsToGLUnits[0],1/a.pixelsToGLUnits[1]]}},Nr=function(e,r,n,i,a){var o=e.transform,s=e.lineAtlas,l=jr(r,o),c=\"round\"===n.layout.get(\"line-cap\"),u=s.getDash(i.from,c),f=s.getDash(i.to,c),h=u.width*a.fromScale,p=f.width*a.toScale;return t.extend(Rr(e,r,n),{u_patternscale_a:[l/h,-u.height/2],u_patternscale_b:[l/p,-f.height/2],u_sdfgamma:s.width/(256*Math.min(h,p)*t.browser.devicePixelRatio)/2,u_image:0,u_tex_y_a:u.y,u_tex_y_b:f.y,u_mix:a.t})};function jr(t,e){return 1/pe(t,1,e.tileZoom)}function Ur(t,e,r){return t.translatePosMatrix(e.tileID.posMatrix,e,r.paint.get(\"line-translate\"),r.paint.get(\"line-translate-anchor\"))}var Vr=function(t,e,r,n,i){return{u_matrix:t,u_tl_parent:e,u_scale_parent:r,u_buffer_scale:1,u_fade_t:n.mix,u_opacity:n.opacity*i.paint.get(\"raster-opacity\"),u_image0:0,u_image1:1,u_brightness_low:i.paint.get(\"raster-brightness-min\"),u_brightness_high:i.paint.get(\"raster-brightness-max\"),u_saturation_factor:(o=i.paint.get(\"raster-saturation\"),o>0?1-1/(1.001-o):-o),u_contrast_factor:(a=i.paint.get(\"raster-contrast\"),a>0?1/(1-a):1+a),u_spin_weights:Hr(i.paint.get(\"raster-hue-rotate\"))};var a,o};function Hr(t){t*=Math.PI/180;var e=Math.sin(t),r=Math.cos(t);return[(2*r+1)/3,(-Math.sqrt(3)*e-r+1)/3,(Math.sqrt(3)*e-r+1)/3]}var qr,Gr=function(t,e,r,n,i,a,o,s,l,c){var u=i.transform;return{u_is_size_zoom_constant:+(\"constant\"===t||\"source\"===t),u_is_size_feature_constant:+(\"constant\"===t||\"camera\"===t),u_size_t:e?e.uSizeT:0,u_size:e?e.uSize:0,u_camera_to_center_distance:u.cameraToCenterDistance,u_pitch:u.pitch/360*2*Math.PI,u_rotate_symbol:+r,u_aspect_ratio:u.width/u.height,u_fade_change:i.options.fadeDuration?i.symbolFadeChange:1,u_matrix:a,u_label_plane_matrix:o,u_coord_matrix:s,u_is_text:+l,u_pitch_with_map:+n,u_texsize:c,u_texture:0}},Yr=function(e,r,n,i,a,o,s,l,c,u,f){var h=a.transform;return t.extend(Gr(e,r,n,i,a,o,s,l,c,u),{u_gamma_scale:i?Math.cos(h._pitch)*h.cameraToCenterDistance:1,u_device_pixel_ratio:t.browser.devicePixelRatio,u_is_halo:+f})},Wr=function(e,r,n,i,a,o,s,l,c,u){return t.extend(Yr(e,r,n,i,a,o,s,l,!0,c,!0),{u_texsize_icon:u,u_texture_icon:1})},Xr=function(t,e,r){return{u_matrix:t,u_opacity:e,u_color:r}},Zr=function(e,r,n,i,a,o){return t.extend(function(t,e,r,n){var i=r.imageManager.getPattern(t.from.toString()),a=r.imageManager.getPattern(t.to.toString()),o=r.imageManager.getPixelSize(),s=o.width,l=o.height,c=Math.pow(2,n.tileID.overscaledZ),u=n.tileSize*Math.pow(2,r.transform.tileZoom)/c,f=u*(n.tileID.canonical.x+n.tileID.wrap*c),h=u*n.tileID.canonical.y;return{u_image:0,u_pattern_tl_a:i.tl,u_pattern_br_a:i.br,u_pattern_tl_b:a.tl,u_pattern_br_b:a.br,u_texsize:[s,l],u_mix:e.t,u_pattern_size_a:i.displaySize,u_pattern_size_b:a.displaySize,u_scale_a:e.fromScale,u_scale_b:e.toScale,u_tile_units_to_pixels:1/pe(n,1,r.transform.tileZoom),u_pixel_coord_upper:[f>>16,h>>16],u_pixel_coord_lower:[65535&f,65535&h]}}(i,o,n,a),{u_matrix:e,u_opacity:r})},Jr={fillExtrusion:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_lightpos:new t.Uniform3f(e,r.u_lightpos),u_lightintensity:new t.Uniform1f(e,r.u_lightintensity),u_lightcolor:new t.Uniform3f(e,r.u_lightcolor),u_vertical_gradient:new t.Uniform1f(e,r.u_vertical_gradient),u_opacity:new t.Uniform1f(e,r.u_opacity)}},fillExtrusionPattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_lightpos:new t.Uniform3f(e,r.u_lightpos),u_lightintensity:new t.Uniform1f(e,r.u_lightintensity),u_lightcolor:new t.Uniform3f(e,r.u_lightcolor),u_vertical_gradient:new t.Uniform1f(e,r.u_vertical_gradient),u_height_factor:new t.Uniform1f(e,r.u_height_factor),u_image:new t.Uniform1i(e,r.u_image),u_texsize:new t.Uniform2f(e,r.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade),u_opacity:new t.Uniform1f(e,r.u_opacity)}},fill:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},fillPattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_image:new t.Uniform1i(e,r.u_image),u_texsize:new t.Uniform2f(e,r.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade)}},fillOutline:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_world:new t.Uniform2f(e,r.u_world)}},fillOutlinePattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_world:new t.Uniform2f(e,r.u_world),u_image:new t.Uniform1i(e,r.u_image),u_texsize:new t.Uniform2f(e,r.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade)}},circle:function(e,r){return{u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_scale_with_map:new t.Uniform1i(e,r.u_scale_with_map),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_extrude_scale:new t.Uniform2f(e,r.u_extrude_scale),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},collisionBox:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pixels_to_tile_units:new t.Uniform1f(e,r.u_pixels_to_tile_units),u_extrude_scale:new t.Uniform2f(e,r.u_extrude_scale),u_overscale_factor:new t.Uniform1f(e,r.u_overscale_factor)}},collisionCircle:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_inv_matrix:new t.UniformMatrix4f(e,r.u_inv_matrix),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_viewport_size:new t.Uniform2f(e,r.u_viewport_size)}},debug:function(e,r){return{u_color:new t.UniformColor(e,r.u_color),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_overlay:new t.Uniform1i(e,r.u_overlay),u_overlay_scale:new t.Uniform1f(e,r.u_overlay_scale)}},clippingMask:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},heatmap:function(e,r){return{u_extrude_scale:new t.Uniform1f(e,r.u_extrude_scale),u_intensity:new t.Uniform1f(e,r.u_intensity),u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},heatmapTexture:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_world:new t.Uniform2f(e,r.u_world),u_image:new t.Uniform1i(e,r.u_image),u_color_ramp:new t.Uniform1i(e,r.u_color_ramp),u_opacity:new t.Uniform1f(e,r.u_opacity)}},hillshade:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_image:new t.Uniform1i(e,r.u_image),u_latrange:new t.Uniform2f(e,r.u_latrange),u_light:new t.Uniform2f(e,r.u_light),u_shadow:new t.UniformColor(e,r.u_shadow),u_highlight:new t.UniformColor(e,r.u_highlight),u_accent:new t.UniformColor(e,r.u_accent)}},hillshadePrepare:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_image:new t.Uniform1i(e,r.u_image),u_dimension:new t.Uniform2f(e,r.u_dimension),u_zoom:new t.Uniform1f(e,r.u_zoom),u_maxzoom:new t.Uniform1f(e,r.u_maxzoom),u_unpack:new t.Uniform4f(e,r.u_unpack)}},line:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels)}},lineGradient:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels),u_image:new t.Uniform1i(e,r.u_image)}},linePattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_texsize:new t.Uniform2f(e,r.u_texsize),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_image:new t.Uniform1i(e,r.u_image),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade)}},lineSDF:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels),u_patternscale_a:new t.Uniform2f(e,r.u_patternscale_a),u_patternscale_b:new t.Uniform2f(e,r.u_patternscale_b),u_sdfgamma:new t.Uniform1f(e,r.u_sdfgamma),u_image:new t.Uniform1i(e,r.u_image),u_tex_y_a:new t.Uniform1f(e,r.u_tex_y_a),u_tex_y_b:new t.Uniform1f(e,r.u_tex_y_b),u_mix:new t.Uniform1f(e,r.u_mix)}},raster:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_tl_parent:new t.Uniform2f(e,r.u_tl_parent),u_scale_parent:new t.Uniform1f(e,r.u_scale_parent),u_buffer_scale:new t.Uniform1f(e,r.u_buffer_scale),u_fade_t:new t.Uniform1f(e,r.u_fade_t),u_opacity:new t.Uniform1f(e,r.u_opacity),u_image0:new t.Uniform1i(e,r.u_image0),u_image1:new t.Uniform1i(e,r.u_image1),u_brightness_low:new t.Uniform1f(e,r.u_brightness_low),u_brightness_high:new t.Uniform1f(e,r.u_brightness_high),u_saturation_factor:new t.Uniform1f(e,r.u_saturation_factor),u_contrast_factor:new t.Uniform1f(e,r.u_contrast_factor),u_spin_weights:new t.Uniform3f(e,r.u_spin_weights)}},symbolIcon:function(e,r){return{u_is_size_zoom_constant:new t.Uniform1i(e,r.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,r.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,r.u_size_t),u_size:new t.Uniform1f(e,r.u_size),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,r.u_pitch),u_rotate_symbol:new t.Uniform1i(e,r.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,r.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,r.u_fade_change),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,r.u_label_plane_matrix),u_coord_matrix:new t.UniformMatrix4f(e,r.u_coord_matrix),u_is_text:new t.Uniform1i(e,r.u_is_text),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_texsize:new t.Uniform2f(e,r.u_texsize),u_texture:new t.Uniform1i(e,r.u_texture)}},symbolSDF:function(e,r){return{u_is_size_zoom_constant:new t.Uniform1i(e,r.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,r.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,r.u_size_t),u_size:new t.Uniform1f(e,r.u_size),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,r.u_pitch),u_rotate_symbol:new t.Uniform1i(e,r.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,r.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,r.u_fade_change),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,r.u_label_plane_matrix),u_coord_matrix:new t.UniformMatrix4f(e,r.u_coord_matrix),u_is_text:new t.Uniform1i(e,r.u_is_text),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_texsize:new t.Uniform2f(e,r.u_texsize),u_texture:new t.Uniform1i(e,r.u_texture),u_gamma_scale:new t.Uniform1f(e,r.u_gamma_scale),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_is_halo:new t.Uniform1i(e,r.u_is_halo)}},symbolTextAndIcon:function(e,r){return{u_is_size_zoom_constant:new t.Uniform1i(e,r.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,r.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,r.u_size_t),u_size:new t.Uniform1f(e,r.u_size),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,r.u_pitch),u_rotate_symbol:new t.Uniform1i(e,r.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,r.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,r.u_fade_change),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,r.u_label_plane_matrix),u_coord_matrix:new t.UniformMatrix4f(e,r.u_coord_matrix),u_is_text:new t.Uniform1i(e,r.u_is_text),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_texsize:new t.Uniform2f(e,r.u_texsize),u_texsize_icon:new t.Uniform2f(e,r.u_texsize_icon),u_texture:new t.Uniform1i(e,r.u_texture),u_texture_icon:new t.Uniform1i(e,r.u_texture_icon),u_gamma_scale:new t.Uniform1f(e,r.u_gamma_scale),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_is_halo:new t.Uniform1i(e,r.u_is_halo)}},background:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_opacity:new t.Uniform1f(e,r.u_opacity),u_color:new t.UniformColor(e,r.u_color)}},backgroundPattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_opacity:new t.Uniform1f(e,r.u_opacity),u_image:new t.Uniform1i(e,r.u_image),u_pattern_tl_a:new t.Uniform2f(e,r.u_pattern_tl_a),u_pattern_br_a:new t.Uniform2f(e,r.u_pattern_br_a),u_pattern_tl_b:new t.Uniform2f(e,r.u_pattern_tl_b),u_pattern_br_b:new t.Uniform2f(e,r.u_pattern_br_b),u_texsize:new t.Uniform2f(e,r.u_texsize),u_mix:new t.Uniform1f(e,r.u_mix),u_pattern_size_a:new t.Uniform2f(e,r.u_pattern_size_a),u_pattern_size_b:new t.Uniform2f(e,r.u_pattern_size_b),u_scale_a:new t.Uniform1f(e,r.u_scale_a),u_scale_b:new t.Uniform1f(e,r.u_scale_b),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_tile_units_to_pixels:new t.Uniform1f(e,r.u_tile_units_to_pixels)}}};function Kr(e,r,n,i,a,o,s){for(var l=e.context,c=l.gl,u=e.useProgram(\"collisionBox\"),f=[],h=0,p=0,d=0;d0){var _=t.create(),w=y;t.mul(_,v.placementInvProjMatrix,e.transform.glCoordMatrix),t.mul(_,_,v.placementViewportMatrix),f.push({circleArray:b,circleOffset:p,transform:w,invTransform:_}),p=h+=b.length/4}x&&u.draw(l,c.LINES,At.disabled,Mt.disabled,e.colorModeForRenderPass(),Et.disabled,Cr(y,e.transform,m),n.id,x.layoutVertexBuffer,x.indexBuffer,x.segments,null,e.transform.zoom,null,null,x.collisionVertexBuffer)}}if(s&&f.length){var T=e.useProgram(\"collisionCircle\"),k=new t.StructArrayLayout2f1f2i16;k.resize(4*h),k._trim();for(var A=0,M=0,S=f;M=0&&(g[v.associatedIconIndex]={shiftedAnchor:S,angle:E})}else ue(v.numGlyphs,p)}if(f){d.clear();for(var C=e.icon.placedSymbolArray,P=0;P0){var s=t.browser.now(),l=(s-e.timeAdded)/o,c=r?(s-r.timeAdded)/o:-1,u=n.getSource(),f=a.coveringZoomLevel({tileSize:u.tileSize,roundZoom:u.roundZoom}),h=!r||Math.abs(r.tileID.overscaledZ-f)>Math.abs(e.tileID.overscaledZ-f),p=h&&e.refreshedUponExpiration?1:t.clamp(h?l:1-c,0,1);return e.refreshedUponExpiration&&l>=1&&(e.refreshedUponExpiration=!1),r?{opacity:1,mix:1-p}:{opacity:p,mix:0}}return{opacity:1,mix:0}}var un=new t.Color(1,0,0,1),fn=new t.Color(0,1,0,1),hn=new t.Color(0,0,1,1),pn=new t.Color(1,0,1,1),dn=new t.Color(0,1,1,1);function gn(t){var e=t.transform.padding;mn(t,t.transform.height-(e.top||0),3,un),mn(t,e.bottom||0,3,fn),vn(t,e.left||0,3,hn),vn(t,t.transform.width-(e.right||0),3,pn);var r=t.transform.centerPoint;!function(t,e,r,n){yn(t,e-1,r-10,2,20,n),yn(t,e-10,r-1,20,2,n)}(t,r.x,t.transform.height-r.y,dn)}function mn(t,e,r,n){yn(t,0,e+r/2,t.transform.width,r,n)}function vn(t,e,r,n){yn(t,e-r/2,0,r,t.transform.height,n)}function yn(e,r,n,i,a,o){var s=e.context,l=s.gl;l.enable(l.SCISSOR_TEST),l.scissor(r*t.browser.devicePixelRatio,n*t.browser.devicePixelRatio,i*t.browser.devicePixelRatio,a*t.browser.devicePixelRatio),s.clear({color:o}),l.disable(l.SCISSOR_TEST)}function xn(e,r,n){var i=e.context,a=i.gl,o=n.posMatrix,s=e.useProgram(\"debug\"),l=At.disabled,c=Mt.disabled,u=e.colorModeForRenderPass();i.activeTexture.set(a.TEXTURE0),e.emptyTexture.bind(a.LINEAR,a.CLAMP_TO_EDGE),s.draw(i,a.LINE_STRIP,l,c,u,Et.disabled,Ir(o,t.Color.red),\"$debug\",e.debugBuffer,e.tileBorderIndexBuffer,e.debugSegments);var f=r.getTileByID(n.key).latestRawTileData,h=f&&f.byteLength||0,p=Math.floor(h/1024),d=r.getTile(n).tileSize,g=512/Math.min(d,512)*(n.overscaledZ/e.transform.zoom)*.5,m=n.canonical.toString();n.overscaledZ!==n.canonical.z&&(m+=\" => \"+n.overscaledZ),function(t,e){t.initDebugOverlayCanvas();var r=t.debugOverlayCanvas,n=t.context.gl,i=t.debugOverlayCanvas.getContext(\"2d\");i.clearRect(0,0,r.width,r.height),i.shadowColor=\"white\",i.shadowBlur=2,i.lineWidth=1.5,i.strokeStyle=\"white\",i.textBaseline=\"top\",i.font=\"bold 36px Open Sans, sans-serif\",i.fillText(e,5,5),i.strokeText(e,5,5),t.debugOverlayTexture.update(r),t.debugOverlayTexture.bind(n.LINEAR,n.CLAMP_TO_EDGE)}(e,m+\" \"+p+\"kb\"),s.draw(i,a.TRIANGLES,l,c,St.alphaBlended,Et.disabled,Ir(o,t.Color.transparent,g),\"$debug\",e.debugBuffer,e.quadTriangleIndexBuffer,e.debugSegments)}var bn={symbol:function(e,r,n,i,a){if(\"translucent\"===e.renderPass){var o=Mt.disabled,s=e.colorModeForRenderPass();n.layout.get(\"text-variable-anchor\")&&function(e,r,n,i,a,o,s){for(var l=r.transform,c=\"map\"===a,u=\"map\"===o,f=0,h=e;f256&&this.clearStencil(),r.setColorMode(St.disabled),r.setDepthMode(At.disabled);var i=this.useProgram(\"clippingMask\");this._tileClippingMaskIDs={};for(var a=0,o=e;a256&&this.clearStencil();var t=this.nextStencilID++,e=this.context.gl;return new Mt({func:e.NOTEQUAL,mask:255},t,255,e.KEEP,e.KEEP,e.REPLACE)},_n.prototype.stencilModeForClipping=function(t){var e=this.context.gl;return new Mt({func:e.EQUAL,mask:255},this._tileClippingMaskIDs[t.key],0,e.KEEP,e.KEEP,e.REPLACE)},_n.prototype.stencilConfigForOverlap=function(t){var e,r=this.context.gl,n=t.sort((function(t,e){return e.overscaledZ-t.overscaledZ})),i=n[n.length-1].overscaledZ,a=n[0].overscaledZ-i+1;if(a>1){this.currentStencilSource=void 0,this.nextStencilID+a>256&&this.clearStencil();for(var o={},s=0;s=0;this.currentLayer--){var w=this.style._layers[i[this.currentLayer]],T=a[w.source],k=u[w.source];this._renderTileClippingMasks(w,k),this.renderLayer(this,T,w,k)}for(this.renderPass=\"translucent\",this.currentLayer=0;this.currentLayer0?e.pop():null},_n.prototype.isPatternMissing=function(t){if(!t)return!1;if(!t.from||!t.to)return!0;var e=this.imageManager.getPattern(t.from.toString()),r=this.imageManager.getPattern(t.to.toString());return!e||!r},_n.prototype.useProgram=function(t,e){this.cache=this.cache||{};var r=\"\"+t+(e?e.cacheKey:\"\")+(this._showOverdrawInspector?\"/overdraw\":\"\");return this.cache[r]||(this.cache[r]=new _r(this.context,xr[t],e,Jr[t],this._showOverdrawInspector)),this.cache[r]},_n.prototype.setCustomLayerDefaults=function(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault()},_n.prototype.setBaseState=function(){var t=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(t.FUNC_ADD)},_n.prototype.initDebugOverlayCanvas=function(){if(null==this.debugOverlayCanvas){this.debugOverlayCanvas=t.window.document.createElement(\"canvas\"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512;var e=this.context.gl;this.debugOverlayTexture=new t.Texture(this.context,this.debugOverlayCanvas,e.RGBA)}},_n.prototype.destroy=function(){this.emptyTexture.destroy(),this.debugOverlayTexture&&this.debugOverlayTexture.destroy()};var wn=function(t,e){this.points=t,this.planes=e};wn.fromInvProjectionMatrix=function(e,r,n){var i=Math.pow(2,n),a=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]].map((function(r){return t.transformMat4([],r,e)})).map((function(e){return t.scale$1([],e,1/e[3]/r*i)})),o=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]].map((function(e){var r=t.sub([],a[e[0]],a[e[1]]),n=t.sub([],a[e[2]],a[e[1]]),i=t.normalize([],t.cross([],r,n)),o=-t.dot(i,a[e[1]]);return i.concat(o)}));return new wn(a,o)};var Tn=function(e,r){this.min=e,this.max=r,this.center=t.scale$2([],t.add([],this.min,this.max),.5)};Tn.prototype.quadrant=function(e){for(var r=[e%2==0,e<2],n=t.clone$2(this.min),i=t.clone$2(this.max),a=0;a=0;if(0===o)return 0;o!==r.length&&(n=!1)}if(n)return 2;for(var l=0;l<3;l++){for(var c=Number.MAX_VALUE,u=-Number.MAX_VALUE,f=0;fthis.max[l]-this.min[l])return 0}return 1};var kn=function(t,e,r,n){if(void 0===t&&(t=0),void 0===e&&(e=0),void 0===r&&(r=0),void 0===n&&(n=0),isNaN(t)||t<0||isNaN(e)||e<0||isNaN(r)||r<0||isNaN(n)||n<0)throw new Error(\"Invalid value for edge-insets, top, bottom, left and right must all be numbers\");this.top=t,this.bottom=e,this.left=r,this.right=n};kn.prototype.interpolate=function(e,r,n){return null!=r.top&&null!=e.top&&(this.top=t.number(e.top,r.top,n)),null!=r.bottom&&null!=e.bottom&&(this.bottom=t.number(e.bottom,r.bottom,n)),null!=r.left&&null!=e.left&&(this.left=t.number(e.left,r.left,n)),null!=r.right&&null!=e.right&&(this.right=t.number(e.right,r.right,n)),this},kn.prototype.getCenter=function(e,r){var n=t.clamp((this.left+e-this.right)/2,0,e),i=t.clamp((this.top+r-this.bottom)/2,0,r);return new t.Point(n,i)},kn.prototype.equals=function(t){return this.top===t.top&&this.bottom===t.bottom&&this.left===t.left&&this.right===t.right},kn.prototype.clone=function(){return new kn(this.top,this.bottom,this.left,this.right)},kn.prototype.toJSON=function(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}};var An=function(e,r,n,i,a){this.tileSize=512,this.maxValidLatitude=85.051129,this._renderWorldCopies=void 0===a||a,this._minZoom=e||0,this._maxZoom=r||22,this._minPitch=null==n?0:n,this._maxPitch=null==i?60:i,this.setMaxBounds(),this.width=0,this.height=0,this._center=new t.LngLat(0,0),this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._edgeInsets=new kn,this._posMatrixCache={},this._alignedPosMatrixCache={}},Mn={minZoom:{configurable:!0},maxZoom:{configurable:!0},minPitch:{configurable:!0},maxPitch:{configurable:!0},renderWorldCopies:{configurable:!0},worldSize:{configurable:!0},centerOffset:{configurable:!0},size:{configurable:!0},bearing:{configurable:!0},pitch:{configurable:!0},fov:{configurable:!0},zoom:{configurable:!0},center:{configurable:!0},padding:{configurable:!0},centerPoint:{configurable:!0},unmodified:{configurable:!0},point:{configurable:!0}};An.prototype.clone=function(){var t=new An(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return t.tileSize=this.tileSize,t.latRange=this.latRange,t.width=this.width,t.height=this.height,t._center=this._center,t.zoom=this.zoom,t.angle=this.angle,t._fov=this._fov,t._pitch=this._pitch,t._unmodified=this._unmodified,t._edgeInsets=this._edgeInsets.clone(),t._calcMatrices(),t},Mn.minZoom.get=function(){return this._minZoom},Mn.minZoom.set=function(t){this._minZoom!==t&&(this._minZoom=t,this.zoom=Math.max(this.zoom,t))},Mn.maxZoom.get=function(){return this._maxZoom},Mn.maxZoom.set=function(t){this._maxZoom!==t&&(this._maxZoom=t,this.zoom=Math.min(this.zoom,t))},Mn.minPitch.get=function(){return this._minPitch},Mn.minPitch.set=function(t){this._minPitch!==t&&(this._minPitch=t,this.pitch=Math.max(this.pitch,t))},Mn.maxPitch.get=function(){return this._maxPitch},Mn.maxPitch.set=function(t){this._maxPitch!==t&&(this._maxPitch=t,this.pitch=Math.min(this.pitch,t))},Mn.renderWorldCopies.get=function(){return this._renderWorldCopies},Mn.renderWorldCopies.set=function(t){void 0===t?t=!0:null===t&&(t=!1),this._renderWorldCopies=t},Mn.worldSize.get=function(){return this.tileSize*this.scale},Mn.centerOffset.get=function(){return this.centerPoint._sub(this.size._div(2))},Mn.size.get=function(){return new t.Point(this.width,this.height)},Mn.bearing.get=function(){return-this.angle/Math.PI*180},Mn.bearing.set=function(e){var r=-t.wrap(e,-180,180)*Math.PI/180;this.angle!==r&&(this._unmodified=!1,this.angle=r,this._calcMatrices(),this.rotationMatrix=t.create$2(),t.rotate(this.rotationMatrix,this.rotationMatrix,this.angle))},Mn.pitch.get=function(){return this._pitch/Math.PI*180},Mn.pitch.set=function(e){var r=t.clamp(e,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==r&&(this._unmodified=!1,this._pitch=r,this._calcMatrices())},Mn.fov.get=function(){return this._fov/Math.PI*180},Mn.fov.set=function(t){t=Math.max(.01,Math.min(60,t)),this._fov!==t&&(this._unmodified=!1,this._fov=t/180*Math.PI,this._calcMatrices())},Mn.zoom.get=function(){return this._zoom},Mn.zoom.set=function(t){var e=Math.min(Math.max(t,this.minZoom),this.maxZoom);this._zoom!==e&&(this._unmodified=!1,this._zoom=e,this.scale=this.zoomScale(e),this.tileZoom=Math.floor(e),this.zoomFraction=e-this.tileZoom,this._constrain(),this._calcMatrices())},Mn.center.get=function(){return this._center},Mn.center.set=function(t){t.lat===this._center.lat&&t.lng===this._center.lng||(this._unmodified=!1,this._center=t,this._constrain(),this._calcMatrices())},Mn.padding.get=function(){return this._edgeInsets.toJSON()},Mn.padding.set=function(t){this._edgeInsets.equals(t)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,t,1),this._calcMatrices())},Mn.centerPoint.get=function(){return this._edgeInsets.getCenter(this.width,this.height)},An.prototype.isPaddingEqual=function(t){return this._edgeInsets.equals(t)},An.prototype.interpolatePadding=function(t,e,r){this._unmodified=!1,this._edgeInsets.interpolate(t,e,r),this._constrain(),this._calcMatrices()},An.prototype.coveringZoomLevel=function(t){var e=(t.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/t.tileSize));return Math.max(0,e)},An.prototype.getVisibleUnwrappedCoordinates=function(e){var r=[new t.UnwrappedTileID(0,e)];if(this._renderWorldCopies)for(var n=this.pointCoordinate(new t.Point(0,0)),i=this.pointCoordinate(new t.Point(this.width,0)),a=this.pointCoordinate(new t.Point(this.width,this.height)),o=this.pointCoordinate(new t.Point(0,this.height)),s=Math.floor(Math.min(n.x,i.x,a.x,o.x)),l=Math.floor(Math.max(n.x,i.x,a.x,o.x)),c=s-1;c<=l+1;c++)0!==c&&r.push(new t.UnwrappedTileID(c,e));return r},An.prototype.coveringTiles=function(e){var r=this.coveringZoomLevel(e),n=r;if(void 0!==e.minzoom&&re.maxzoom&&(r=e.maxzoom);var i=t.MercatorCoordinate.fromLngLat(this.center),a=Math.pow(2,r),o=[a*i.x,a*i.y,0],s=wn.fromInvProjectionMatrix(this.invProjMatrix,this.worldSize,r),l=e.minzoom||0;this.pitch<=60&&this._edgeInsets.top<.1&&(l=r);var c=function(t){return{aabb:new Tn([t*a,0,0],[(t+1)*a,a,0]),zoom:0,x:0,y:0,wrap:t,fullyVisible:!1}},u=[],f=[],h=r,p=e.reparseOverscaled?n:r;if(this._renderWorldCopies)for(var d=1;d<=3;d++)u.push(c(-d)),u.push(c(d));for(u.push(c(0));u.length>0;){var g=u.pop(),m=g.x,v=g.y,y=g.fullyVisible;if(!y){var x=g.aabb.intersects(s);if(0===x)continue;y=2===x}var b=g.aabb.distanceX(o),_=g.aabb.distanceY(o),w=Math.max(Math.abs(b),Math.abs(_)),T=3+(1<T&&g.zoom>=l)f.push({tileID:new t.OverscaledTileID(g.zoom===h?p:g.zoom,g.wrap,g.zoom,m,v),distanceSq:t.sqrLen([o[0]-.5-m,o[1]-.5-v])});else for(var k=0;k<4;k++){var A=(m<<1)+k%2,M=(v<<1)+(k>>1);u.push({aabb:g.aabb.quadrant(k),zoom:g.zoom+1,x:A,y:M,wrap:g.wrap,fullyVisible:y})}}return f.sort((function(t,e){return t.distanceSq-e.distanceSq})).map((function(t){return t.tileID}))},An.prototype.resize=function(t,e){this.width=t,this.height=e,this.pixelsToGLUnits=[2/t,-2/e],this._constrain(),this._calcMatrices()},Mn.unmodified.get=function(){return this._unmodified},An.prototype.zoomScale=function(t){return Math.pow(2,t)},An.prototype.scaleZoom=function(t){return Math.log(t)/Math.LN2},An.prototype.project=function(e){var r=t.clamp(e.lat,-this.maxValidLatitude,this.maxValidLatitude);return new t.Point(t.mercatorXfromLng(e.lng)*this.worldSize,t.mercatorYfromLat(r)*this.worldSize)},An.prototype.unproject=function(e){return new t.MercatorCoordinate(e.x/this.worldSize,e.y/this.worldSize).toLngLat()},Mn.point.get=function(){return this.project(this.center)},An.prototype.setLocationAtPoint=function(e,r){var n=this.pointCoordinate(r),i=this.pointCoordinate(this.centerPoint),a=this.locationCoordinate(e),o=new t.MercatorCoordinate(a.x-(n.x-i.x),a.y-(n.y-i.y));this.center=this.coordinateLocation(o),this._renderWorldCopies&&(this.center=this.center.wrap())},An.prototype.locationPoint=function(t){return this.coordinatePoint(this.locationCoordinate(t))},An.prototype.pointLocation=function(t){return this.coordinateLocation(this.pointCoordinate(t))},An.prototype.locationCoordinate=function(e){return t.MercatorCoordinate.fromLngLat(e)},An.prototype.coordinateLocation=function(t){return t.toLngLat()},An.prototype.pointCoordinate=function(e){var r=[e.x,e.y,0,1],n=[e.x,e.y,1,1];t.transformMat4(r,r,this.pixelMatrixInverse),t.transformMat4(n,n,this.pixelMatrixInverse);var i=r[3],a=n[3],o=r[0]/i,s=n[0]/a,l=r[1]/i,c=n[1]/a,u=r[2]/i,f=n[2]/a,h=u===f?0:(0-u)/(f-u);return new t.MercatorCoordinate(t.number(o,s,h)/this.worldSize,t.number(l,c,h)/this.worldSize)},An.prototype.coordinatePoint=function(e){var r=[e.x*this.worldSize,e.y*this.worldSize,0,1];return t.transformMat4(r,r,this.pixelMatrix),new t.Point(r[0]/r[3],r[1]/r[3])},An.prototype.getBounds=function(){return(new t.LngLatBounds).extend(this.pointLocation(new t.Point(0,0))).extend(this.pointLocation(new t.Point(this.width,0))).extend(this.pointLocation(new t.Point(this.width,this.height))).extend(this.pointLocation(new t.Point(0,this.height)))},An.prototype.getMaxBounds=function(){return this.latRange&&2===this.latRange.length&&this.lngRange&&2===this.lngRange.length?new t.LngLatBounds([this.lngRange[0],this.latRange[0]],[this.lngRange[1],this.latRange[1]]):null},An.prototype.setMaxBounds=function(t){t?(this.lngRange=[t.getWest(),t.getEast()],this.latRange=[t.getSouth(),t.getNorth()],this._constrain()):(this.lngRange=null,this.latRange=[-this.maxValidLatitude,this.maxValidLatitude])},An.prototype.calculatePosMatrix=function(e,r){void 0===r&&(r=!1);var n=e.key,i=r?this._alignedPosMatrixCache:this._posMatrixCache;if(i[n])return i[n];var a=e.canonical,o=this.worldSize/this.zoomScale(a.z),s=a.x+Math.pow(2,a.z)*e.wrap,l=t.identity(new Float64Array(16));return t.translate(l,l,[s*o,a.y*o,0]),t.scale(l,l,[o/t.EXTENT,o/t.EXTENT,1]),t.multiply(l,r?this.alignedProjMatrix:this.projMatrix,l),i[n]=new Float32Array(l),i[n]},An.prototype.customLayerMatrix=function(){return this.mercatorMatrix.slice()},An.prototype._constrain=function(){if(this.center&&this.width&&this.height&&!this._constraining){this._constraining=!0;var e,r,n,i,a=-90,o=90,s=-180,l=180,c=this.size,u=this._unmodified;if(this.latRange){var f=this.latRange;a=t.mercatorYfromLat(f[1])*this.worldSize,e=(o=t.mercatorYfromLat(f[0])*this.worldSize)-ao&&(i=o-m)}if(this.lngRange){var v=p.x,y=c.x/2;v-yl&&(n=l-y)}void 0===n&&void 0===i||(this.center=this.unproject(new t.Point(void 0!==n?n:p.x,void 0!==i?i:p.y))),this._unmodified=u,this._constraining=!1}},An.prototype._calcMatrices=function(){if(this.height){var e=this._fov/2,r=this.centerOffset;this.cameraToCenterDistance=.5/Math.tan(e)*this.height;var n=Math.PI/2+this._pitch,i=this._fov*(.5+r.y/this.height),a=Math.sin(i)*this.cameraToCenterDistance/Math.sin(t.clamp(Math.PI-n-i,.01,Math.PI-.01)),o=this.point,s=o.x,l=o.y,c=1.01*(Math.cos(Math.PI/2-this._pitch)*a+this.cameraToCenterDistance),u=this.height/50,f=new Float64Array(16);t.perspective(f,this._fov,this.width/this.height,u,c),f[8]=2*-r.x/this.width,f[9]=2*r.y/this.height,t.scale(f,f,[1,-1,1]),t.translate(f,f,[0,0,-this.cameraToCenterDistance]),t.rotateX(f,f,this._pitch),t.rotateZ(f,f,this.angle),t.translate(f,f,[-s,-l,0]),this.mercatorMatrix=t.scale([],f,[this.worldSize,this.worldSize,this.worldSize]),t.scale(f,f,[1,1,t.mercatorZfromAltitude(1,this.center.lat)*this.worldSize,1]),this.projMatrix=f,this.invProjMatrix=t.invert([],this.projMatrix);var h=this.width%2/2,p=this.height%2/2,d=Math.cos(this.angle),g=Math.sin(this.angle),m=s-Math.round(s)+d*h+g*p,v=l-Math.round(l)+d*p+g*h,y=new Float64Array(f);if(t.translate(y,y,[m>.5?m-1:m,v>.5?v-1:v,0]),this.alignedProjMatrix=y,f=t.create(),t.scale(f,f,[this.width/2,-this.height/2,1]),t.translate(f,f,[1,-1,0]),this.labelPlaneMatrix=f,f=t.create(),t.scale(f,f,[1,-1,1]),t.translate(f,f,[-1,-1,0]),t.scale(f,f,[2/this.width,2/this.height,1]),this.glCoordMatrix=f,this.pixelMatrix=t.multiply(new Float64Array(16),this.labelPlaneMatrix,this.projMatrix),!(f=t.invert(new Float64Array(16),this.pixelMatrix)))throw new Error(\"failed to invert matrix\");this.pixelMatrixInverse=f,this._posMatrixCache={},this._alignedPosMatrixCache={}}},An.prototype.maxPitchScaleFactor=function(){if(!this.pixelMatrixInverse)return 1;var e=this.pointCoordinate(new t.Point(0,0)),r=[e.x*this.worldSize,e.y*this.worldSize,0,1];return t.transformMat4(r,r,this.pixelMatrix)[3]/this.cameraToCenterDistance},An.prototype.getCameraPoint=function(){var e=this._pitch,r=Math.tan(e)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new t.Point(0,r))},An.prototype.getCameraQueryGeometry=function(e){var r=this.getCameraPoint();if(1===e.length)return[e[0],r];for(var n=r.x,i=r.y,a=r.x,o=r.y,s=0,l=e;s=3&&!t.some((function(t){return isNaN(t)}))){var e=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(t[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+t[2],+t[1]],zoom:+t[0],bearing:e,pitch:+(t[4]||0)}),!0}return!1},Sn.prototype._updateHashUnthrottled=function(){var e=this.getHashString();try{t.window.history.replaceState(t.window.history.state,\"\",e)}catch(t){}};var En={linearity:.3,easing:t.bezier(0,0,.3,1)},Ln=t.extend({deceleration:2500,maxSpeed:1400},En),Cn=t.extend({deceleration:20,maxSpeed:1400},En),Pn=t.extend({deceleration:1e3,maxSpeed:360},En),In=t.extend({deceleration:1e3,maxSpeed:90},En),On=function(t){this._map=t,this.clear()};function zn(t,e){(!t.duration||t.duration0&&r-e[0].time>160;)e.shift()},On.prototype._onMoveEnd=function(e){if(this._drainInertiaBuffer(),!(this._inertiaBuffer.length<2)){for(var r={zoom:0,bearing:0,pitch:0,pan:new t.Point(0,0),pinchAround:void 0,around:void 0},n=0,i=this._inertiaBuffer;n=this._clickTolerance||this._map.fire(new Rn(t.type,this._map,t))},Nn.prototype.dblclick=function(t){return this._firePreventable(new Rn(t.type,this._map,t))},Nn.prototype.mouseover=function(t){this._map.fire(new Rn(t.type,this._map,t))},Nn.prototype.mouseout=function(t){this._map.fire(new Rn(t.type,this._map,t))},Nn.prototype.touchstart=function(t){return this._firePreventable(new Fn(t.type,this._map,t))},Nn.prototype.touchmove=function(t){this._map.fire(new Fn(t.type,this._map,t))},Nn.prototype.touchend=function(t){this._map.fire(new Fn(t.type,this._map,t))},Nn.prototype.touchcancel=function(t){this._map.fire(new Fn(t.type,this._map,t))},Nn.prototype._firePreventable=function(t){if(this._map.fire(t),t.defaultPrevented)return{}},Nn.prototype.isEnabled=function(){return!0},Nn.prototype.isActive=function(){return!1},Nn.prototype.enable=function(){},Nn.prototype.disable=function(){};var jn=function(t){this._map=t};jn.prototype.reset=function(){this._delayContextMenu=!1,delete this._contextMenuEvent},jn.prototype.mousemove=function(t){this._map.fire(new Rn(t.type,this._map,t))},jn.prototype.mousedown=function(){this._delayContextMenu=!0},jn.prototype.mouseup=function(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new Rn(\"contextmenu\",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)},jn.prototype.contextmenu=function(t){this._delayContextMenu?this._contextMenuEvent=t:this._map.fire(new Rn(t.type,this._map,t)),this._map.listens(\"contextmenu\")&&t.preventDefault()},jn.prototype.isEnabled=function(){return!0},jn.prototype.isActive=function(){return!1},jn.prototype.enable=function(){},jn.prototype.disable=function(){};var Un=function(t,e){this._map=t,this._el=t.getCanvasContainer(),this._container=t.getContainer(),this._clickTolerance=e.clickTolerance||1};function Vn(t,e){for(var r={},n=0;nthis.numTouches)&&(this.aborted=!0),this.aborted||(void 0===this.startTime&&(this.startTime=e.timeStamp),n.length===this.numTouches&&(this.centroid=function(e){for(var r=new t.Point(0,0),n=0,i=e;n30)&&(this.aborted=!0)}}},Hn.prototype.touchend=function(t,e,r){if((!this.centroid||t.timeStamp-this.startTime>500)&&(this.aborted=!0),0===r.length){var n=!this.aborted&&this.centroid;if(this.reset(),n)return n}};var qn=function(t){this.singleTap=new Hn(t),this.numTaps=t.numTaps,this.reset()};qn.prototype.reset=function(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset()},qn.prototype.touchstart=function(t,e,r){this.singleTap.touchstart(t,e,r)},qn.prototype.touchmove=function(t,e,r){this.singleTap.touchmove(t,e,r)},qn.prototype.touchend=function(t,e,r){var n=this.singleTap.touchend(t,e,r);if(n){var i=t.timeStamp-this.lastTime<500,a=!this.lastTap||this.lastTap.dist(n)<30;if(i&&a||this.reset(),this.count++,this.lastTime=t.timeStamp,this.lastTap=n,this.count===this.numTaps)return this.reset(),n}};var Gn=function(){this._zoomIn=new qn({numTouches:1,numTaps:2}),this._zoomOut=new qn({numTouches:2,numTaps:1}),this.reset()};Gn.prototype.reset=function(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset()},Gn.prototype.touchstart=function(t,e,r){this._zoomIn.touchstart(t,e,r),this._zoomOut.touchstart(t,e,r)},Gn.prototype.touchmove=function(t,e,r){this._zoomIn.touchmove(t,e,r),this._zoomOut.touchmove(t,e,r)},Gn.prototype.touchend=function(t,e,r){var n=this,i=this._zoomIn.touchend(t,e,r),a=this._zoomOut.touchend(t,e,r);return i?(this._active=!0,t.preventDefault(),setTimeout((function(){return n.reset()}),0),{cameraAnimation:function(e){return e.easeTo({duration:300,zoom:e.getZoom()+1,around:e.unproject(i)},{originalEvent:t})}}):a?(this._active=!0,t.preventDefault(),setTimeout((function(){return n.reset()}),0),{cameraAnimation:function(e){return e.easeTo({duration:300,zoom:e.getZoom()-1,around:e.unproject(a)},{originalEvent:t})}}):void 0},Gn.prototype.touchcancel=function(){this.reset()},Gn.prototype.enable=function(){this._enabled=!0},Gn.prototype.disable=function(){this._enabled=!1,this.reset()},Gn.prototype.isEnabled=function(){return this._enabled},Gn.prototype.isActive=function(){return this._active};var Yn=function(t){this.reset(),this._clickTolerance=t.clickTolerance||1};Yn.prototype.reset=function(){this._active=!1,this._moved=!1,delete this._lastPoint,delete this._eventButton},Yn.prototype._correctButton=function(t,e){return!1},Yn.prototype._move=function(t,e){return{}},Yn.prototype.mousedown=function(t,e){if(!this._lastPoint){var n=r.mouseButton(t);this._correctButton(t,n)&&(this._lastPoint=e,this._eventButton=n)}},Yn.prototype.mousemoveWindow=function(t,e){var r=this._lastPoint;if(r&&(t.preventDefault(),this._moved||!(e.dist(r)0&&(this._active=!0);var i=Vn(n,r),a=new t.Point(0,0),o=new t.Point(0,0),s=0;for(var l in i){var c=i[l],u=this._touches[l];u&&(a._add(c),o._add(c.sub(u)),s++,i[l]=c)}if(this._touches=i,!(sMath.abs(t.x)}var ii=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.reset=function(){t.prototype.reset.call(this),this._valid=void 0,delete this._firstMove,delete this._lastPoints},e.prototype._start=function(t){this._lastPoints=t,ni(t[0].sub(t[1]))&&(this._valid=!1)},e.prototype._move=function(t,e,r){var n=t[0].sub(this._lastPoints[0]),i=t[1].sub(this._lastPoints[1]);if(this._valid=this.gestureBeginsVertically(n,i,r.timeStamp),this._valid){this._lastPoints=t,this._active=!0;return{pitchDelta:-.5*((n.y+i.y)/2)}}},e.prototype.gestureBeginsVertically=function(t,e,r){if(void 0!==this._valid)return this._valid;var n=t.mag()>=2,i=e.mag()>=2;if(n||i){if(!n||!i)return void 0===this._firstMove&&(this._firstMove=r),r-this._firstMove<100&&void 0;var a=t.y>0==e.y>0;return ni(t)&&ni(e)&&a}},e}(Kn),ai={panStep:100,bearingStep:15,pitchStep:10},oi=function(){var t=ai;this._panStep=t.panStep,this._bearingStep=t.bearingStep,this._pitchStep=t.pitchStep};function si(t){return t*(2-t)}oi.prototype.reset=function(){this._active=!1},oi.prototype.keydown=function(t){var e=this;if(!(t.altKey||t.ctrlKey||t.metaKey)){var r=0,n=0,i=0,a=0,o=0;switch(t.keyCode){case 61:case 107:case 171:case 187:r=1;break;case 189:case 109:case 173:r=-1;break;case 37:t.shiftKey?n=-1:(t.preventDefault(),a=-1);break;case 39:t.shiftKey?n=1:(t.preventDefault(),a=1);break;case 38:t.shiftKey?i=1:(t.preventDefault(),o=-1);break;case 40:t.shiftKey?i=-1:(t.preventDefault(),o=1);break;default:return}return{cameraAnimation:function(s){var l=s.getZoom();s.easeTo({duration:300,easeId:\"keyboardHandler\",easing:si,zoom:r?Math.round(l)+r*(t.shiftKey?2:1):l,bearing:s.getBearing()+n*e._bearingStep,pitch:s.getPitch()+i*e._pitchStep,offset:[-a*e._panStep,-o*e._panStep],center:s.getCenter()},{originalEvent:t})}}}},oi.prototype.enable=function(){this._enabled=!0},oi.prototype.disable=function(){this._enabled=!1,this.reset()},oi.prototype.isEnabled=function(){return this._enabled},oi.prototype.isActive=function(){return this._active};var li=function(e,r){this._map=e,this._el=e.getCanvasContainer(),this._handler=r,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=1/450,t.bindAll([\"_onWheel\",\"_onTimeout\",\"_onScrollFrame\",\"_onScrollFinished\"],this)};li.prototype.setZoomRate=function(t){this._defaultZoomRate=t},li.prototype.setWheelZoomRate=function(t){this._wheelZoomRate=t},li.prototype.isEnabled=function(){return!!this._enabled},li.prototype.isActive=function(){return!!this._active||void 0!==this._finishTimeout},li.prototype.isZooming=function(){return!!this._zooming},li.prototype.enable=function(t){this.isEnabled()||(this._enabled=!0,this._aroundCenter=t&&\"center\"===t.around)},li.prototype.disable=function(){this.isEnabled()&&(this._enabled=!1)},li.prototype.wheel=function(e){if(this.isEnabled()){var r=e.deltaMode===t.window.WheelEvent.DOM_DELTA_LINE?40*e.deltaY:e.deltaY,n=t.browser.now(),i=n-(this._lastWheelEventTime||0);this._lastWheelEventTime=n,0!==r&&r%4.000244140625==0?this._type=\"wheel\":0!==r&&Math.abs(r)<4?this._type=\"trackpad\":i>400?(this._type=null,this._lastValue=r,this._timeout=setTimeout(this._onTimeout,40,e)):this._type||(this._type=Math.abs(i*r)<200?\"trackpad\":\"wheel\",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,r+=this._lastValue)),e.shiftKey&&r&&(r/=4),this._type&&(this._lastWheelEvent=e,this._delta-=r,this._active||this._start(e)),e.preventDefault()}},li.prototype._onTimeout=function(t){this._type=\"wheel\",this._delta-=this._lastValue,this._active||this._start(t)},li.prototype._start=function(e){if(this._delta){this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);var n=r.mousePos(this._el,e);this._around=t.LngLat.convert(this._aroundCenter?this._map.getCenter():this._map.unproject(n)),this._aroundPoint=this._map.transform.locationPoint(this._around),this._frameId||(this._frameId=!0,this._handler._triggerRenderFrame())}},li.prototype.renderFrame=function(){return this._onScrollFrame()},li.prototype._onScrollFrame=function(){var e=this;if(this._frameId&&(this._frameId=null,this.isActive())){var r=this._map.transform;if(0!==this._delta){var n=\"wheel\"===this._type&&Math.abs(this._delta)>4.000244140625?this._wheelZoomRate:this._defaultZoomRate,i=2/(1+Math.exp(-Math.abs(this._delta*n)));this._delta<0&&0!==i&&(i=1/i);var a=\"number\"==typeof this._targetZoom?r.zoomScale(this._targetZoom):r.scale;this._targetZoom=Math.min(r.maxZoom,Math.max(r.minZoom,r.scaleZoom(a*i))),\"wheel\"===this._type&&(this._startZoom=r.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0}var o,s=\"number\"==typeof this._targetZoom?this._targetZoom:r.zoom,l=this._startZoom,c=this._easing,u=!1;if(\"wheel\"===this._type&&l&&c){var f=Math.min((t.browser.now()-this._lastWheelEventTime)/200,1),h=c(f);o=t.number(l,s,h),f<1?this._frameId||(this._frameId=!0):u=!0}else o=s,u=!0;return this._active=!0,u&&(this._active=!1,this._finishTimeout=setTimeout((function(){e._zooming=!1,e._handler._triggerRenderFrame(),delete e._targetZoom,delete e._finishTimeout}),200)),{noInertia:!0,needsRenderFrame:!u,zoomDelta:o-r.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}},li.prototype._smoothOutEasing=function(e){var r=t.ease;if(this._prevEase){var n=this._prevEase,i=(t.browser.now()-n.start)/n.duration,a=n.easing(i+.01)-n.easing(i),o=.27/Math.sqrt(a*a+1e-4)*.01,s=Math.sqrt(.0729-o*o);r=t.bezier(o,s,.25,1)}return this._prevEase={start:t.browser.now(),duration:e,easing:r},r},li.prototype.reset=function(){this._active=!1};var ci=function(t,e){this._clickZoom=t,this._tapZoom=e};ci.prototype.enable=function(){this._clickZoom.enable(),this._tapZoom.enable()},ci.prototype.disable=function(){this._clickZoom.disable(),this._tapZoom.disable()},ci.prototype.isEnabled=function(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()},ci.prototype.isActive=function(){return this._clickZoom.isActive()||this._tapZoom.isActive()};var ui=function(){this.reset()};ui.prototype.reset=function(){this._active=!1},ui.prototype.dblclick=function(t,e){return t.preventDefault(),{cameraAnimation:function(r){r.easeTo({duration:300,zoom:r.getZoom()+(t.shiftKey?-1:1),around:r.unproject(e)},{originalEvent:t})}}},ui.prototype.enable=function(){this._enabled=!0},ui.prototype.disable=function(){this._enabled=!1,this.reset()},ui.prototype.isEnabled=function(){return this._enabled},ui.prototype.isActive=function(){return this._active};var fi=function(){this._tap=new qn({numTouches:1,numTaps:1}),this.reset()};fi.prototype.reset=function(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,this._tap.reset()},fi.prototype.touchstart=function(t,e,r){this._swipePoint||(this._tapTime&&t.timeStamp-this._tapTime>500&&this.reset(),this._tapTime?r.length>0&&(this._swipePoint=e[0],this._swipeTouch=r[0].identifier):this._tap.touchstart(t,e,r))},fi.prototype.touchmove=function(t,e,r){if(this._tapTime){if(this._swipePoint){if(r[0].identifier!==this._swipeTouch)return;var n=e[0],i=n.y-this._swipePoint.y;return this._swipePoint=n,t.preventDefault(),this._active=!0,{zoomDelta:i/128}}}else this._tap.touchmove(t,e,r)},fi.prototype.touchend=function(t,e,r){this._tapTime?this._swipePoint&&0===r.length&&this.reset():this._tap.touchend(t,e,r)&&(this._tapTime=t.timeStamp)},fi.prototype.touchcancel=function(){this.reset()},fi.prototype.enable=function(){this._enabled=!0},fi.prototype.disable=function(){this._enabled=!1,this.reset()},fi.prototype.isEnabled=function(){return this._enabled},fi.prototype.isActive=function(){return this._active};var hi=function(t,e,r){this._el=t,this._mousePan=e,this._touchPan=r};hi.prototype.enable=function(t){this._inertiaOptions=t||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add(\"mapboxgl-touch-drag-pan\")},hi.prototype.disable=function(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove(\"mapboxgl-touch-drag-pan\")},hi.prototype.isEnabled=function(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()},hi.prototype.isActive=function(){return this._mousePan.isActive()||this._touchPan.isActive()};var pi=function(t,e,r){this._pitchWithRotate=t.pitchWithRotate,this._mouseRotate=e,this._mousePitch=r};pi.prototype.enable=function(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable()},pi.prototype.disable=function(){this._mouseRotate.disable(),this._mousePitch.disable()},pi.prototype.isEnabled=function(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())},pi.prototype.isActive=function(){return this._mouseRotate.isActive()||this._mousePitch.isActive()};var di=function(t,e,r,n){this._el=t,this._touchZoom=e,this._touchRotate=r,this._tapDragZoom=n,this._rotationDisabled=!1,this._enabled=!0};di.prototype.enable=function(t){this._touchZoom.enable(t),this._rotationDisabled||this._touchRotate.enable(t),this._tapDragZoom.enable(),this._el.classList.add(\"mapboxgl-touch-zoom-rotate\")},di.prototype.disable=function(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove(\"mapboxgl-touch-zoom-rotate\")},di.prototype.isEnabled=function(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()},di.prototype.isActive=function(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()},di.prototype.disableRotation=function(){this._rotationDisabled=!0,this._touchRotate.disable()},di.prototype.enableRotation=function(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable()};var gi=function(t){return t.zoom||t.drag||t.pitch||t.rotate},mi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(t.Event);function vi(t){return t.panDelta&&t.panDelta.mag()||t.zoomDelta||t.bearingDelta||t.pitchDelta}var yi=function(e,n){this._map=e,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new On(e),this._bearingSnap=n.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(n),t.bindAll([\"handleEvent\",\"handleWindowEvent\"],this);var i=this._el;this._listeners=[[i,\"touchstart\",{passive:!1}],[i,\"touchmove\",{passive:!1}],[i,\"touchend\",void 0],[i,\"touchcancel\",void 0],[i,\"mousedown\",void 0],[i,\"mousemove\",void 0],[i,\"mouseup\",void 0],[t.window.document,\"mousemove\",{capture:!0}],[t.window.document,\"mouseup\",void 0],[i,\"mouseover\",void 0],[i,\"mouseout\",void 0],[i,\"dblclick\",void 0],[i,\"click\",void 0],[i,\"keydown\",{capture:!1}],[i,\"keyup\",void 0],[i,\"wheel\",{passive:!1}],[i,\"contextmenu\",void 0],[t.window,\"blur\",void 0]];for(var a=0,o=this._listeners;aa?Math.min(2,_):Math.max(.5,_),w=Math.pow(m,1-e),T=i.unproject(x.add(b.mult(e*w)).mult(g));i.setLocationAtPoint(i.renderWorldCopies?T.wrap():T,d)}n._fireMoveEvents(r)}),(function(t){n._afterEase(r,t)}),e),this},r.prototype._prepareEase=function(e,r,n){void 0===n&&(n={}),this._moving=!0,r||n.moving||this.fire(new t.Event(\"movestart\",e)),this._zooming&&!n.zooming&&this.fire(new t.Event(\"zoomstart\",e)),this._rotating&&!n.rotating&&this.fire(new t.Event(\"rotatestart\",e)),this._pitching&&!n.pitching&&this.fire(new t.Event(\"pitchstart\",e))},r.prototype._fireMoveEvents=function(e){this.fire(new t.Event(\"move\",e)),this._zooming&&this.fire(new t.Event(\"zoom\",e)),this._rotating&&this.fire(new t.Event(\"rotate\",e)),this._pitching&&this.fire(new t.Event(\"pitch\",e))},r.prototype._afterEase=function(e,r){if(!this._easeId||!r||this._easeId!==r){delete this._easeId;var n=this._zooming,i=this._rotating,a=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,n&&this.fire(new t.Event(\"zoomend\",e)),i&&this.fire(new t.Event(\"rotateend\",e)),a&&this.fire(new t.Event(\"pitchend\",e)),this.fire(new t.Event(\"moveend\",e))}},r.prototype.flyTo=function(e,r){var n=this;if(!e.essential&&t.browser.prefersReducedMotion){var i=t.pick(e,[\"center\",\"zoom\",\"bearing\",\"pitch\",\"around\"]);return this.jumpTo(i,r)}this.stop(),e=t.extend({offset:[0,0],speed:1.2,curve:1.42,easing:t.ease},e);var a=this.transform,o=this.getZoom(),s=this.getBearing(),l=this.getPitch(),c=this.getPadding(),u=\"zoom\"in e?t.clamp(+e.zoom,a.minZoom,a.maxZoom):o,f=\"bearing\"in e?this._normalizeBearing(e.bearing,s):s,h=\"pitch\"in e?+e.pitch:l,p=\"padding\"in e?e.padding:a.padding,d=a.zoomScale(u-o),g=t.Point.convert(e.offset),m=a.centerPoint.add(g),v=a.pointLocation(m),y=t.LngLat.convert(e.center||v);this._normalizeCenter(y);var x=a.project(v),b=a.project(y).sub(x),_=e.curve,w=Math.max(a.width,a.height),T=w/d,k=b.mag();if(\"minZoom\"in e){var A=t.clamp(Math.min(e.minZoom,o,u),a.minZoom,a.maxZoom),M=w/a.zoomScale(A-o);_=Math.sqrt(M/k*2)}var S=_*_;function E(t){var e=(T*T-w*w+(t?-1:1)*S*S*k*k)/(2*(t?T:w)*S*k);return Math.log(Math.sqrt(e*e+1)-e)}function L(t){return(Math.exp(t)-Math.exp(-t))/2}function C(t){return(Math.exp(t)+Math.exp(-t))/2}var P=E(0),I=function(t){return C(P)/C(P+_*t)},O=function(t){return w*((C(P)*(L(e=P+_*t)/C(e))-L(P))/S)/k;var e},z=(E(1)-P)/_;if(Math.abs(k)<1e-6||!isFinite(z)){if(Math.abs(w-T)<1e-6)return this.easeTo(e,r);var D=Te.maxDuration&&(e.duration=0),this._zooming=!0,this._rotating=s!==f,this._pitching=h!==l,this._padding=!a.isPaddingEqual(p),this._prepareEase(r,!1),this._ease((function(e){var i=e*z,d=1/I(i);a.zoom=1===e?u:o+a.scaleZoom(d),n._rotating&&(a.bearing=t.number(s,f,e)),n._pitching&&(a.pitch=t.number(l,h,e)),n._padding&&(a.interpolatePadding(c,p,e),m=a.centerPoint.add(g));var v=1===e?y:a.unproject(x.add(b.mult(O(i))).mult(d));a.setLocationAtPoint(a.renderWorldCopies?v.wrap():v,m),n._fireMoveEvents(r)}),(function(){return n._afterEase(r)}),e),this},r.prototype.isEasing=function(){return!!this._easeFrameId},r.prototype.stop=function(){return this._stop()},r.prototype._stop=function(t,e){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){var r=this._onEaseEnd;delete this._onEaseEnd,r.call(this,e)}if(!t){var n=this.handlers;n&&n.stop()}return this},r.prototype._ease=function(e,r,n){!1===n.animate||0===n.duration?(e(1),r()):(this._easeStart=t.browser.now(),this._easeOptions=n,this._onEaseFrame=e,this._onEaseEnd=r,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))},r.prototype._renderFrameCallback=function(){var e=Math.min((t.browser.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(e)),e<1?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()},r.prototype._normalizeBearing=function(e,r){e=t.wrap(e,-180,180);var n=Math.abs(e-r);return Math.abs(e-360-r)180?-360:r<-180?360:0}},r}(t.Evented),bi=function(e){void 0===e&&(e={}),this.options=e,t.bindAll([\"_updateEditLink\",\"_updateData\",\"_updateCompact\"],this)};bi.prototype.getDefaultPosition=function(){return\"bottom-right\"},bi.prototype.onAdd=function(t){var e=this.options&&this.options.compact;return this._map=t,this._container=r.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-attrib\"),this._innerContainer=r.create(\"div\",\"mapboxgl-ctrl-attrib-inner\",this._container),e&&this._container.classList.add(\"mapboxgl-compact\"),this._updateAttributions(),this._updateEditLink(),this._map.on(\"styledata\",this._updateData),this._map.on(\"sourcedata\",this._updateData),this._map.on(\"moveend\",this._updateEditLink),void 0===e&&(this._map.on(\"resize\",this._updateCompact),this._updateCompact()),this._container},bi.prototype.onRemove=function(){r.remove(this._container),this._map.off(\"styledata\",this._updateData),this._map.off(\"sourcedata\",this._updateData),this._map.off(\"moveend\",this._updateEditLink),this._map.off(\"resize\",this._updateCompact),this._map=void 0,this._attribHTML=void 0},bi.prototype._updateEditLink=function(){var e=this._editLink;e||(e=this._editLink=this._container.querySelector(\".mapbox-improve-map\"));var r=[{key:\"owner\",value:this.styleOwner},{key:\"id\",value:this.styleId},{key:\"access_token\",value:this._map._requestManager._customAccessToken||t.config.ACCESS_TOKEN}];if(e){var n=r.reduce((function(t,e,n){return e.value&&(t+=e.key+\"=\"+e.value+(n=0)return!1;return!0}))).join(\" | \");o!==this._attribHTML&&(this._attribHTML=o,t.length?(this._innerContainer.innerHTML=o,this._container.classList.remove(\"mapboxgl-attrib-empty\")):this._container.classList.add(\"mapboxgl-attrib-empty\"),this._editLink=null)}},bi.prototype._updateCompact=function(){this._map.getCanvasContainer().offsetWidth<=640?this._container.classList.add(\"mapboxgl-compact\"):this._container.classList.remove(\"mapboxgl-compact\")};var _i=function(){t.bindAll([\"_updateLogo\"],this),t.bindAll([\"_updateCompact\"],this)};_i.prototype.onAdd=function(t){this._map=t,this._container=r.create(\"div\",\"mapboxgl-ctrl\");var e=r.create(\"a\",\"mapboxgl-ctrl-logo\");return e.target=\"_blank\",e.rel=\"noopener nofollow\",e.href=\"https://www.mapbox.com/\",e.setAttribute(\"aria-label\",this._map._getUIString(\"LogoControl.Title\")),e.setAttribute(\"rel\",\"noopener nofollow\"),this._container.appendChild(e),this._container.style.display=\"none\",this._map.on(\"sourcedata\",this._updateLogo),this._updateLogo(),this._map.on(\"resize\",this._updateCompact),this._updateCompact(),this._container},_i.prototype.onRemove=function(){r.remove(this._container),this._map.off(\"sourcedata\",this._updateLogo),this._map.off(\"resize\",this._updateCompact)},_i.prototype.getDefaultPosition=function(){return\"bottom-left\"},_i.prototype._updateLogo=function(t){t&&\"metadata\"!==t.sourceDataType||(this._container.style.display=this._logoRequired()?\"block\":\"none\")},_i.prototype._logoRequired=function(){if(this._map.style){var t=this._map.style.sourceCaches;for(var e in t){if(t[e].getSource().mapbox_logo)return!0}return!1}},_i.prototype._updateCompact=function(){var t=this._container.children;if(t.length){var e=t[0];this._map.getCanvasContainer().offsetWidth<250?e.classList.add(\"mapboxgl-compact\"):e.classList.remove(\"mapboxgl-compact\")}};var wi=function(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1};wi.prototype.add=function(t){var e=++this._id;return this._queue.push({callback:t,id:e,cancelled:!1}),e},wi.prototype.remove=function(t){for(var e=this._currentlyRunning,r=0,n=e?this._queue.concat(e):this._queue;re.maxZoom)throw new Error(\"maxZoom must be greater than or equal to minZoom\");if(null!=e.minPitch&&null!=e.maxPitch&&e.minPitch>e.maxPitch)throw new Error(\"maxPitch must be greater than or equal to minPitch\");if(null!=e.minPitch&&e.minPitch<0)throw new Error(\"minPitch must be greater than or equal to 0\");if(null!=e.maxPitch&&e.maxPitch>60)throw new Error(\"maxPitch must be less than or equal to 60\");var i=new An(e.minZoom,e.maxZoom,e.minPitch,e.maxPitch,e.renderWorldCopies);if(n.call(this,i,e),this._interactive=e.interactive,this._maxTileCacheSize=e.maxTileCacheSize,this._failIfMajorPerformanceCaveat=e.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=e.preserveDrawingBuffer,this._antialias=e.antialias,this._trackResize=e.trackResize,this._bearingSnap=e.bearingSnap,this._refreshExpiredTiles=e.refreshExpiredTiles,this._fadeDuration=e.fadeDuration,this._crossSourceCollisions=e.crossSourceCollisions,this._crossFadingFactor=1,this._collectResourceTiming=e.collectResourceTiming,this._renderTaskQueue=new wi,this._controls=[],this._mapId=t.uniqueId(),this._locale=t.extend({},Ti,e.locale),this._requestManager=new t.RequestManager(e.transformRequest,e.accessToken),\"string\"==typeof e.container){if(this._container=t.window.document.getElementById(e.container),!this._container)throw new Error(\"Container '\"+e.container+\"' not found.\")}else{if(!(e.container instanceof Ai))throw new Error(\"Invalid type: 'container' must be a String or HTMLElement.\");this._container=e.container}if(e.maxBounds&&this.setMaxBounds(e.maxBounds),t.bindAll([\"_onWindowOnline\",\"_onWindowResize\",\"_contextLost\",\"_contextRestored\"],this),this._setupContainer(),this._setupPainter(),void 0===this.painter)throw new Error(\"Failed to initialize WebGL.\");this.on(\"move\",(function(){return r._update(!1)})),this.on(\"moveend\",(function(){return r._update(!1)})),this.on(\"zoom\",(function(){return r._update(!0)})),void 0!==t.window&&(t.window.addEventListener(\"online\",this._onWindowOnline,!1),t.window.addEventListener(\"resize\",this._onWindowResize,!1)),this.handlers=new yi(this,e);var a=\"string\"==typeof e.hash&&e.hash||void 0;this._hash=e.hash&&new Sn(a).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:e.center,zoom:e.zoom,bearing:e.bearing,pitch:e.pitch}),e.bounds&&(this.resize(),this.fitBounds(e.bounds,t.extend({},e.fitBoundsOptions,{duration:0})))),this.resize(),this._localIdeographFontFamily=e.localIdeographFontFamily,e.style&&this.setStyle(e.style,{localIdeographFontFamily:e.localIdeographFontFamily}),e.attributionControl&&this.addControl(new bi({customAttribution:e.customAttribution})),this.addControl(new _i,e.logoPosition),this.on(\"style.load\",(function(){r.transform.unmodified&&r.jumpTo(r.style.stylesheet)})),this.on(\"data\",(function(e){r._update(\"style\"===e.dataType),r.fire(new t.Event(e.dataType+\"data\",e))})),this.on(\"dataloading\",(function(e){r.fire(new t.Event(e.dataType+\"dataloading\",e))}))}n&&(i.__proto__=n),i.prototype=Object.create(n&&n.prototype),i.prototype.constructor=i;var a={showTileBoundaries:{configurable:!0},showPadding:{configurable:!0},showCollisionBoxes:{configurable:!0},showOverdrawInspector:{configurable:!0},repaint:{configurable:!0},vertices:{configurable:!0},version:{configurable:!0}};return i.prototype._getMapId=function(){return this._mapId},i.prototype.addControl=function(e,r){if(void 0===r&&e.getDefaultPosition&&(r=e.getDefaultPosition()),void 0===r&&(r=\"top-right\"),!e||!e.onAdd)return this.fire(new t.ErrorEvent(new Error(\"Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.\")));var n=e.onAdd(this);this._controls.push(e);var i=this._controlPositions[r];return-1!==r.indexOf(\"bottom\")?i.insertBefore(n,i.firstChild):i.appendChild(n),this},i.prototype.removeControl=function(e){if(!e||!e.onRemove)return this.fire(new t.ErrorEvent(new Error(\"Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.\")));var r=this._controls.indexOf(e);return r>-1&&this._controls.splice(r,1),e.onRemove(this),this},i.prototype.resize=function(e){var r=this._containerDimensions(),n=r[0],i=r[1];this._resizeCanvas(n,i),this.transform.resize(n,i),this.painter.resize(n,i);var a=!this._moving;return a&&(this.stop(),this.fire(new t.Event(\"movestart\",e)).fire(new t.Event(\"move\",e))),this.fire(new t.Event(\"resize\",e)),a&&this.fire(new t.Event(\"moveend\",e)),this},i.prototype.getBounds=function(){return this.transform.getBounds()},i.prototype.getMaxBounds=function(){return this.transform.getMaxBounds()},i.prototype.setMaxBounds=function(e){return this.transform.setMaxBounds(t.LngLatBounds.convert(e)),this._update()},i.prototype.setMinZoom=function(t){if((t=null==t?-2:t)>=-2&&t<=this.transform.maxZoom)return this.transform.minZoom=t,this._update(),this.getZoom()=this.transform.minZoom)return this.transform.maxZoom=t,this._update(),this.getZoom()>t&&this.setZoom(t),this;throw new Error(\"maxZoom must be greater than the current minZoom\")},i.prototype.getMaxZoom=function(){return this.transform.maxZoom},i.prototype.setMinPitch=function(t){if((t=null==t?0:t)<0)throw new Error(\"minPitch must be greater than or equal to 0\");if(t>=0&&t<=this.transform.maxPitch)return this.transform.minPitch=t,this._update(),this.getPitch()60)throw new Error(\"maxPitch must be less than or equal to 60\");if(t>=this.transform.minPitch)return this.transform.maxPitch=t,this._update(),this.getPitch()>t&&this.setPitch(t),this;throw new Error(\"maxPitch must be greater than the current minPitch\")},i.prototype.getMaxPitch=function(){return this.transform.maxPitch},i.prototype.getRenderWorldCopies=function(){return this.transform.renderWorldCopies},i.prototype.setRenderWorldCopies=function(t){return this.transform.renderWorldCopies=t,this._update()},i.prototype.project=function(e){return this.transform.locationPoint(t.LngLat.convert(e))},i.prototype.unproject=function(e){return this.transform.pointLocation(t.Point.convert(e))},i.prototype.isMoving=function(){return this._moving||this.handlers.isMoving()},i.prototype.isZooming=function(){return this._zooming||this.handlers.isZooming()},i.prototype.isRotating=function(){return this._rotating||this.handlers.isRotating()},i.prototype._createDelegatedListener=function(t,e,r){var n,i=this;if(\"mouseenter\"===t||\"mouseover\"===t){var a=!1;return{layer:e,listener:r,delegates:{mousemove:function(n){var o=i.getLayer(e)?i.queryRenderedFeatures(n.point,{layers:[e]}):[];o.length?a||(a=!0,r.call(i,new Rn(t,i,n.originalEvent,{features:o}))):a=!1},mouseout:function(){a=!1}}}}if(\"mouseleave\"===t||\"mouseout\"===t){var o=!1;return{layer:e,listener:r,delegates:{mousemove:function(n){(i.getLayer(e)?i.queryRenderedFeatures(n.point,{layers:[e]}):[]).length?o=!0:o&&(o=!1,r.call(i,new Rn(t,i,n.originalEvent)))},mouseout:function(e){o&&(o=!1,r.call(i,new Rn(t,i,e.originalEvent)))}}}}return{layer:e,listener:r,delegates:(n={},n[t]=function(t){var n=i.getLayer(e)?i.queryRenderedFeatures(t.point,{layers:[e]}):[];n.length&&(t.features=n,r.call(i,t),delete t.features)},n)}},i.prototype.on=function(t,e,r){if(void 0===r)return n.prototype.on.call(this,t,e);var i=this._createDelegatedListener(t,e,r);for(var a in this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[t]=this._delegatedListeners[t]||[],this._delegatedListeners[t].push(i),i.delegates)this.on(a,i.delegates[a]);return this},i.prototype.once=function(t,e,r){if(void 0===r)return n.prototype.once.call(this,t,e);var i=this._createDelegatedListener(t,e,r);for(var a in i.delegates)this.once(a,i.delegates[a]);return this},i.prototype.off=function(t,e,r){var i=this;if(void 0===r)return n.prototype.off.call(this,t,e);return this._delegatedListeners&&this._delegatedListeners[t]&&function(n){for(var a=n[t],o=0;o180;){var s=n.locationPoint(e);if(s.x>=0&&s.y>=0&&s.x<=n.width&&s.y<=n.height)break;e.lng>n.center.lng?e.lng-=360:e.lng+=360}return e}Ii.prototype.down=function(t,e){this.mouseRotate.mousedown(t,e),this.mousePitch&&this.mousePitch.mousedown(t,e),r.disableDrag()},Ii.prototype.move=function(t,e){var r=this.map,n=this.mouseRotate.mousemoveWindow(t,e);if(n&&n.bearingDelta&&r.setBearing(r.getBearing()+n.bearingDelta),this.mousePitch){var i=this.mousePitch.mousemoveWindow(t,e);i&&i.pitchDelta&&r.setPitch(r.getPitch()+i.pitchDelta)}},Ii.prototype.off=function(){var t=this.element;r.removeEventListener(t,\"mousedown\",this.mousedown),r.removeEventListener(t,\"touchstart\",this.touchstart,{passive:!1}),r.removeEventListener(t,\"touchmove\",this.touchmove),r.removeEventListener(t,\"touchend\",this.touchend),r.removeEventListener(t,\"touchcancel\",this.reset),this.offTemp()},Ii.prototype.offTemp=function(){r.enableDrag(),r.removeEventListener(t.window,\"mousemove\",this.mousemove),r.removeEventListener(t.window,\"mouseup\",this.mouseup)},Ii.prototype.mousedown=function(e){this.down(t.extend({},e,{ctrlKey:!0,preventDefault:function(){return e.preventDefault()}}),r.mousePos(this.element,e)),r.addEventListener(t.window,\"mousemove\",this.mousemove),r.addEventListener(t.window,\"mouseup\",this.mouseup)},Ii.prototype.mousemove=function(t){this.move(t,r.mousePos(this.element,t))},Ii.prototype.mouseup=function(t){this.mouseRotate.mouseupWindow(t),this.mousePitch&&this.mousePitch.mouseupWindow(t),this.offTemp()},Ii.prototype.touchstart=function(t){1!==t.targetTouches.length?this.reset():(this._startPos=this._lastPos=r.touchPos(this.element,t.targetTouches)[0],this.down({type:\"mousedown\",button:0,ctrlKey:!0,preventDefault:function(){return t.preventDefault()}},this._startPos))},Ii.prototype.touchmove=function(t){1!==t.targetTouches.length?this.reset():(this._lastPos=r.touchPos(this.element,t.targetTouches)[0],this.move({preventDefault:function(){return t.preventDefault()}},this._lastPos))},Ii.prototype.touchend=function(t){0===t.targetTouches.length&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos)e.getEast()||r.latitudee.getNorth())},n.prototype._setErrorState=function(){switch(this._watchState){case\"WAITING_ACTIVE\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\");break;case\"ACTIVE_LOCK\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\");break;case\"BACKGROUND\":this._watchState=\"BACKGROUND_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\")}},n.prototype._onSuccess=function(e){if(this._map){if(this._isOutOfMapMaxBounds(e))return this._setErrorState(),this.fire(new t.Event(\"outofmaxbounds\",e)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=e,this._watchState){case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"BACKGROUND\":case\"BACKGROUND_ERROR\":this._watchState=\"BACKGROUND\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\")}this.options.showUserLocation&&\"OFF\"!==this._watchState&&this._updateMarker(e),this.options.trackUserLocation&&\"ACTIVE_LOCK\"!==this._watchState||this._updateCamera(e),this.options.showUserLocation&&this._dotElement.classList.remove(\"mapboxgl-user-location-dot-stale\"),this.fire(new t.Event(\"geolocate\",e)),this._finish()}},n.prototype._updateCamera=function(e){var r=new t.LngLat(e.coords.longitude,e.coords.latitude),n=e.coords.accuracy,i=this._map.getBearing(),a=t.extend({bearing:i},this.options.fitBoundsOptions);this._map.fitBounds(r.toBounds(n),a,{geolocateSource:!0})},n.prototype._updateMarker=function(e){if(e){var r=new t.LngLat(e.coords.longitude,e.coords.latitude);this._accuracyCircleMarker.setLngLat(r).addTo(this._map),this._userLocationDotMarker.setLngLat(r).addTo(this._map),this._accuracy=e.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()},n.prototype._updateCircleRadius=function(){var t=this._map._container.clientHeight/2,e=this._map.unproject([0,t]),r=this._map.unproject([1,t]),n=e.distanceTo(r),i=Math.ceil(2*this._accuracy/n);this._circleElement.style.width=i+\"px\",this._circleElement.style.height=i+\"px\"},n.prototype._onZoom=function(){this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()},n.prototype._onError=function(e){if(this._map){if(this.options.trackUserLocation)if(1===e.code){this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.disabled=!0;var r=this._map._getUIString(\"GeolocateControl.LocationNotAvailable\");this._geolocateButton.title=r,this._geolocateButton.setAttribute(\"aria-label\",r),void 0!==this._geolocationWatchID&&this._clearWatch()}else{if(3===e.code&&ji)return;this._setErrorState()}\"OFF\"!==this._watchState&&this.options.showUserLocation&&this._dotElement.classList.add(\"mapboxgl-user-location-dot-stale\"),this.fire(new t.Event(\"error\",e)),this._finish()}},n.prototype._finish=function(){this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},n.prototype._setupUI=function(e){var n=this;if(this._container.addEventListener(\"contextmenu\",(function(t){return t.preventDefault()})),this._geolocateButton=r.create(\"button\",\"mapboxgl-ctrl-geolocate\",this._container),r.create(\"span\",\"mapboxgl-ctrl-icon\",this._geolocateButton).setAttribute(\"aria-hidden\",!0),this._geolocateButton.type=\"button\",!1===e){t.warnOnce(\"Geolocation support is not available so the GeolocateControl will be disabled.\");var i=this._map._getUIString(\"GeolocateControl.LocationNotAvailable\");this._geolocateButton.disabled=!0,this._geolocateButton.title=i,this._geolocateButton.setAttribute(\"aria-label\",i)}else{var a=this._map._getUIString(\"GeolocateControl.FindMyLocation\");this._geolocateButton.title=a,this._geolocateButton.setAttribute(\"aria-label\",a)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this._watchState=\"OFF\"),this.options.showUserLocation&&(this._dotElement=r.create(\"div\",\"mapboxgl-user-location-dot\"),this._userLocationDotMarker=new Fi(this._dotElement),this._circleElement=r.create(\"div\",\"mapboxgl-user-location-accuracy-circle\"),this._accuracyCircleMarker=new Fi({element:this._circleElement,pitchAlignment:\"map\"}),this.options.trackUserLocation&&(this._watchState=\"OFF\"),this._map.on(\"zoom\",this._onZoom)),this._geolocateButton.addEventListener(\"click\",this.trigger.bind(this)),this._setup=!0,this.options.trackUserLocation&&this._map.on(\"movestart\",(function(e){var r=e.originalEvent&&\"resize\"===e.originalEvent.type;e.geolocateSource||\"ACTIVE_LOCK\"!==n._watchState||r||(n._watchState=\"BACKGROUND\",n._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\"),n._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),n.fire(new t.Event(\"trackuserlocationend\")))}))},n.prototype.trigger=function(){if(!this._setup)return t.warnOnce(\"Geolocate control triggered before added to a map\"),!1;if(this.options.trackUserLocation){switch(this._watchState){case\"OFF\":this._watchState=\"WAITING_ACTIVE\",this.fire(new t.Event(\"trackuserlocationstart\"));break;case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":case\"BACKGROUND_ERROR\":Ni--,ji=!1,this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this.fire(new t.Event(\"trackuserlocationend\"));break;case\"BACKGROUND\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new t.Event(\"trackuserlocationstart\"))}switch(this._watchState){case\"WAITING_ACTIVE\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"ACTIVE_LOCK\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"ACTIVE_ERROR\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\");break;case\"BACKGROUND\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\");break;case\"BACKGROUND_ERROR\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background-error\")}if(\"OFF\"===this._watchState&&void 0!==this._geolocationWatchID)this._clearWatch();else if(void 0===this._geolocationWatchID){var e;this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"true\"),++Ni>1?(e={maximumAge:6e5,timeout:0},ji=!0):(e=this.options.positionOptions,ji=!1),this._geolocationWatchID=t.window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,e)}}else t.window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return!0},n.prototype._clearWatch=function(){t.window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this.options.showUserLocation&&this._updateMarker(null)},n}(t.Evented),Vi={maxWidth:100,unit:\"metric\"},Hi=function(e){this.options=t.extend({},Vi,e),t.bindAll([\"_onMove\",\"setUnit\"],this)};function qi(t,e,r){var n=r&&r.maxWidth||100,i=t._container.clientHeight/2,a=t.unproject([0,i]),o=t.unproject([n,i]),s=a.distanceTo(o);if(r&&\"imperial\"===r.unit){var l=3.2808*s;if(l>5280)Gi(e,n,l/5280,t._getUIString(\"ScaleControl.Miles\"));else Gi(e,n,l,t._getUIString(\"ScaleControl.Feet\"))}else if(r&&\"nautical\"===r.unit){Gi(e,n,s/1852,t._getUIString(\"ScaleControl.NauticalMiles\"))}else s>=1e3?Gi(e,n,s/1e3,t._getUIString(\"ScaleControl.Kilometers\")):Gi(e,n,s,t._getUIString(\"ScaleControl.Meters\"))}function Gi(t,e,r,n){var i,a,o,s=(i=r,a=Math.pow(10,(\"\"+Math.floor(i)).length-1),o=(o=i/a)>=10?10:o>=5?5:o>=3?3:o>=2?2:o>=1?1:function(t){var e=Math.pow(10,Math.ceil(-Math.log(t)/Math.LN10));return Math.round(t*e)/e}(o),a*o),l=s/r;t.style.width=e*l+\"px\",t.innerHTML=s+\" \"+n}Hi.prototype.getDefaultPosition=function(){return\"bottom-left\"},Hi.prototype._onMove=function(){qi(this._map,this._container,this.options)},Hi.prototype.onAdd=function(t){return this._map=t,this._container=r.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-scale\",t.getContainer()),this._map.on(\"move\",this._onMove),this._onMove(),this._container},Hi.prototype.onRemove=function(){r.remove(this._container),this._map.off(\"move\",this._onMove),this._map=void 0},Hi.prototype.setUnit=function(t){this.options.unit=t,qi(this._map,this._container,this.options)};var Yi=function(e){this._fullscreen=!1,e&&e.container&&(e.container instanceof t.window.HTMLElement?this._container=e.container:t.warnOnce(\"Full screen control 'container' must be a DOM element.\")),t.bindAll([\"_onClickFullscreen\",\"_changeIcon\"],this),\"onfullscreenchange\"in t.window.document?this._fullscreenchange=\"fullscreenchange\":\"onmozfullscreenchange\"in t.window.document?this._fullscreenchange=\"mozfullscreenchange\":\"onwebkitfullscreenchange\"in t.window.document?this._fullscreenchange=\"webkitfullscreenchange\":\"onmsfullscreenchange\"in t.window.document&&(this._fullscreenchange=\"MSFullscreenChange\")};Yi.prototype.onAdd=function(e){return this._map=e,this._container||(this._container=this._map.getContainer()),this._controlContainer=r.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-group\"),this._checkFullscreenSupport()?this._setupUI():(this._controlContainer.style.display=\"none\",t.warnOnce(\"This device does not support fullscreen mode.\")),this._controlContainer},Yi.prototype.onRemove=function(){r.remove(this._controlContainer),this._map=null,t.window.document.removeEventListener(this._fullscreenchange,this._changeIcon)},Yi.prototype._checkFullscreenSupport=function(){return!!(t.window.document.fullscreenEnabled||t.window.document.mozFullScreenEnabled||t.window.document.msFullscreenEnabled||t.window.document.webkitFullscreenEnabled)},Yi.prototype._setupUI=function(){var e=this._fullscreenButton=r.create(\"button\",\"mapboxgl-ctrl-fullscreen\",this._controlContainer);r.create(\"span\",\"mapboxgl-ctrl-icon\",e).setAttribute(\"aria-hidden\",!0),e.type=\"button\",this._updateTitle(),this._fullscreenButton.addEventListener(\"click\",this._onClickFullscreen),t.window.document.addEventListener(this._fullscreenchange,this._changeIcon)},Yi.prototype._updateTitle=function(){var t=this._getTitle();this._fullscreenButton.setAttribute(\"aria-label\",t),this._fullscreenButton.title=t},Yi.prototype._getTitle=function(){return this._map._getUIString(this._isFullscreen()?\"FullscreenControl.Exit\":\"FullscreenControl.Enter\")},Yi.prototype._isFullscreen=function(){return this._fullscreen},Yi.prototype._changeIcon=function(){(t.window.document.fullscreenElement||t.window.document.mozFullScreenElement||t.window.document.webkitFullscreenElement||t.window.document.msFullscreenElement)===this._container!==this._fullscreen&&(this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle(\"mapboxgl-ctrl-shrink\"),this._fullscreenButton.classList.toggle(\"mapboxgl-ctrl-fullscreen\"),this._updateTitle())},Yi.prototype._onClickFullscreen=function(){this._isFullscreen()?t.window.document.exitFullscreen?t.window.document.exitFullscreen():t.window.document.mozCancelFullScreen?t.window.document.mozCancelFullScreen():t.window.document.msExitFullscreen?t.window.document.msExitFullscreen():t.window.document.webkitCancelFullScreen&&t.window.document.webkitCancelFullScreen():this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen&&this._container.webkitRequestFullscreen()};var Wi={closeButton:!0,closeOnClick:!0,className:\"\",maxWidth:\"240px\"},Xi=function(e){function n(r){e.call(this),this.options=t.extend(Object.create(Wi),r),t.bindAll([\"_update\",\"_onClose\",\"remove\",\"_onMouseMove\",\"_onMouseUp\",\"_onDrag\"],this)}return e&&(n.__proto__=e),n.prototype=Object.create(e&&e.prototype),n.prototype.constructor=n,n.prototype.addTo=function(e){return this._map&&this.remove(),this._map=e,this.options.closeOnClick&&this._map.on(\"click\",this._onClose),this.options.closeOnMove&&this._map.on(\"move\",this._onClose),this._map.on(\"remove\",this.remove),this._update(),this._trackPointer?(this._map.on(\"mousemove\",this._onMouseMove),this._map.on(\"mouseup\",this._onMouseUp),this._container&&this._container.classList.add(\"mapboxgl-popup-track-pointer\"),this._map._canvasContainer.classList.add(\"mapboxgl-track-pointer\")):this._map.on(\"move\",this._update),this.fire(new t.Event(\"open\")),this},n.prototype.isOpen=function(){return!!this._map},n.prototype.remove=function(){return this._content&&r.remove(this._content),this._container&&(r.remove(this._container),delete this._container),this._map&&(this._map.off(\"move\",this._update),this._map.off(\"move\",this._onClose),this._map.off(\"click\",this._onClose),this._map.off(\"remove\",this.remove),this._map.off(\"mousemove\",this._onMouseMove),this._map.off(\"mouseup\",this._onMouseUp),this._map.off(\"drag\",this._onDrag),delete this._map),this.fire(new t.Event(\"close\")),this},n.prototype.getLngLat=function(){return this._lngLat},n.prototype.setLngLat=function(e){return this._lngLat=t.LngLat.convert(e),this._pos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on(\"move\",this._update),this._map.off(\"mousemove\",this._onMouseMove),this._container&&this._container.classList.remove(\"mapboxgl-popup-track-pointer\"),this._map._canvasContainer.classList.remove(\"mapboxgl-track-pointer\")),this},n.prototype.trackPointer=function(){return this._trackPointer=!0,this._pos=null,this._update(),this._map&&(this._map.off(\"move\",this._update),this._map.on(\"mousemove\",this._onMouseMove),this._map.on(\"drag\",this._onDrag),this._container&&this._container.classList.add(\"mapboxgl-popup-track-pointer\"),this._map._canvasContainer.classList.add(\"mapboxgl-track-pointer\")),this},n.prototype.getElement=function(){return this._container},n.prototype.setText=function(e){return this.setDOMContent(t.window.document.createTextNode(e))},n.prototype.setHTML=function(e){var r,n=t.window.document.createDocumentFragment(),i=t.window.document.createElement(\"body\");for(i.innerHTML=e;r=i.firstChild;)n.appendChild(r);return this.setDOMContent(n)},n.prototype.getMaxWidth=function(){return this._container&&this._container.style.maxWidth},n.prototype.setMaxWidth=function(t){return this.options.maxWidth=t,this._update(),this},n.prototype.setDOMContent=function(t){return this._createContent(),this._content.appendChild(t),this._update(),this},n.prototype.addClassName=function(t){this._container&&this._container.classList.add(t)},n.prototype.removeClassName=function(t){this._container&&this._container.classList.remove(t)},n.prototype.toggleClassName=function(t){if(this._container)return this._container.classList.toggle(t)},n.prototype._createContent=function(){this._content&&r.remove(this._content),this._content=r.create(\"div\",\"mapboxgl-popup-content\",this._container),this.options.closeButton&&(this._closeButton=r.create(\"button\",\"mapboxgl-popup-close-button\",this._content),this._closeButton.type=\"button\",this._closeButton.setAttribute(\"aria-label\",\"Close popup\"),this._closeButton.innerHTML=\"×\",this._closeButton.addEventListener(\"click\",this._onClose))},n.prototype._onMouseUp=function(t){this._update(t.point)},n.prototype._onMouseMove=function(t){this._update(t.point)},n.prototype._onDrag=function(t){this._update(t.point)},n.prototype._update=function(e){var n=this,i=this._lngLat||this._trackPointer;if(this._map&&i&&this._content&&(this._container||(this._container=r.create(\"div\",\"mapboxgl-popup\",this._map.getContainer()),this._tip=r.create(\"div\",\"mapboxgl-popup-tip\",this._container),this._container.appendChild(this._content),this.options.className&&this.options.className.split(\" \").forEach((function(t){return n._container.classList.add(t)})),this._trackPointer&&this._container.classList.add(\"mapboxgl-popup-track-pointer\")),this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._map.transform.renderWorldCopies&&!this._trackPointer&&(this._lngLat=Oi(this._lngLat,this._pos,this._map.transform)),!this._trackPointer||e)){var a=this._pos=this._trackPointer&&e?e:this._map.project(this._lngLat),o=this.options.anchor,s=function e(r){if(r){if(\"number\"==typeof r){var n=Math.round(Math.sqrt(.5*Math.pow(r,2)));return{center:new t.Point(0,0),top:new t.Point(0,r),\"top-left\":new t.Point(n,n),\"top-right\":new t.Point(-n,n),bottom:new t.Point(0,-r),\"bottom-left\":new t.Point(n,-n),\"bottom-right\":new t.Point(-n,-n),left:new t.Point(r,0),right:new t.Point(-r,0)}}if(r instanceof t.Point||Array.isArray(r)){var i=t.Point.convert(r);return{center:i,top:i,\"top-left\":i,\"top-right\":i,bottom:i,\"bottom-left\":i,\"bottom-right\":i,left:i,right:i}}return{center:t.Point.convert(r.center||[0,0]),top:t.Point.convert(r.top||[0,0]),\"top-left\":t.Point.convert(r[\"top-left\"]||[0,0]),\"top-right\":t.Point.convert(r[\"top-right\"]||[0,0]),bottom:t.Point.convert(r.bottom||[0,0]),\"bottom-left\":t.Point.convert(r[\"bottom-left\"]||[0,0]),\"bottom-right\":t.Point.convert(r[\"bottom-right\"]||[0,0]),left:t.Point.convert(r.left||[0,0]),right:t.Point.convert(r.right||[0,0])}}return e(new t.Point(0,0))}(this.options.offset);if(!o){var l,c=this._container.offsetWidth,u=this._container.offsetHeight;l=a.y+s.bottom.ythis._map.transform.height-u?[\"bottom\"]:[],a.xthis._map.transform.width-c/2&&l.push(\"right\"),o=0===l.length?\"bottom\":l.join(\"-\")}var f=a.add(s[o]).round();r.setTransform(this._container,zi[o]+\" translate(\"+f.x+\"px,\"+f.y+\"px)\"),Di(this._container,o,\"popup\")}},n.prototype._onClose=function(){this.remove()},n}(t.Evented);var Zi={version:t.version,supported:e,setRTLTextPlugin:t.setRTLTextPlugin,getRTLTextPluginStatus:t.getRTLTextPluginStatus,Map:Ei,NavigationControl:Pi,GeolocateControl:Ui,AttributionControl:bi,ScaleControl:Hi,FullscreenControl:Yi,Popup:Xi,Marker:Fi,Style:qe,LngLat:t.LngLat,LngLatBounds:t.LngLatBounds,Point:t.Point,MercatorCoordinate:t.MercatorCoordinate,Evented:t.Evented,config:t.config,prewarm:function(){Bt().acquire(zt)},clearPrewarmedResources:function(){var t=Rt;t&&(t.isPreloaded()&&1===t.numActive()?(t.release(zt),Rt=null):console.warn(\"Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()\"))},get accessToken(){return t.config.ACCESS_TOKEN},set accessToken(e){t.config.ACCESS_TOKEN=e},get baseApiUrl(){return t.config.API_URL},set baseApiUrl(e){t.config.API_URL=e},get workerCount(){return Dt.workerCount},set workerCount(t){Dt.workerCount=t},get maxParallelImageRequests(){return t.config.MAX_PARALLEL_IMAGE_REQUESTS},set maxParallelImageRequests(e){t.config.MAX_PARALLEL_IMAGE_REQUESTS=e},clearStorage:function(e){t.clearTileCache(e)},workerUrl:\"\"};return Zi})),r}))},{}],240:[function(t,e,r){\"use strict\";e.exports=Math.log2||function(t){return Math.log(t)*Math.LOG2E}},{}],241:[function(t,e,r){\"use strict\";e.exports=function(t,e){e||(e=t,t=window);var r=0,i=0,a=0,o={shift:!1,alt:!1,control:!1,meta:!1},s=!1;function l(t){var e=!1;return\"altKey\"in t&&(e=e||t.altKey!==o.alt,o.alt=!!t.altKey),\"shiftKey\"in t&&(e=e||t.shiftKey!==o.shift,o.shift=!!t.shiftKey),\"ctrlKey\"in t&&(e=e||t.ctrlKey!==o.control,o.control=!!t.ctrlKey),\"metaKey\"in t&&(e=e||t.metaKey!==o.meta,o.meta=!!t.metaKey),e}function c(t,s){var c=n.x(s),u=n.y(s);\"buttons\"in s&&(t=0|s.buttons),(t!==r||c!==i||u!==a||l(s))&&(r=0|t,i=c||0,a=u||0,e&&e(r,i,a,o))}function u(t){c(0,t)}function f(){(r||i||a||o.shift||o.alt||o.meta||o.control)&&(i=a=0,r=0,o.shift=o.alt=o.control=o.meta=!1,e&&e(0,0,0,o))}function h(t){l(t)&&e&&e(r,i,a,o)}function p(t){0===n.buttons(t)?c(0,t):c(r,t)}function d(t){c(r|n.buttons(t),t)}function g(t){c(r&~n.buttons(t),t)}function m(){s||(s=!0,t.addEventListener(\"mousemove\",p),t.addEventListener(\"mousedown\",d),t.addEventListener(\"mouseup\",g),t.addEventListener(\"mouseleave\",u),t.addEventListener(\"mouseenter\",u),t.addEventListener(\"mouseout\",u),t.addEventListener(\"mouseover\",u),t.addEventListener(\"blur\",f),t.addEventListener(\"keyup\",h),t.addEventListener(\"keydown\",h),t.addEventListener(\"keypress\",h),t!==window&&(window.addEventListener(\"blur\",f),window.addEventListener(\"keyup\",h),window.addEventListener(\"keydown\",h),window.addEventListener(\"keypress\",h)))}m();var v={element:t};return Object.defineProperties(v,{enabled:{get:function(){return s},set:function(e){e?m():function(){if(!s)return;s=!1,t.removeEventListener(\"mousemove\",p),t.removeEventListener(\"mousedown\",d),t.removeEventListener(\"mouseup\",g),t.removeEventListener(\"mouseleave\",u),t.removeEventListener(\"mouseenter\",u),t.removeEventListener(\"mouseout\",u),t.removeEventListener(\"mouseover\",u),t.removeEventListener(\"blur\",f),t.removeEventListener(\"keyup\",h),t.removeEventListener(\"keydown\",h),t.removeEventListener(\"keypress\",h),t!==window&&(window.removeEventListener(\"blur\",f),window.removeEventListener(\"keyup\",h),window.removeEventListener(\"keydown\",h),window.removeEventListener(\"keypress\",h))}()},enumerable:!0},buttons:{get:function(){return r},enumerable:!0},x:{get:function(){return i},enumerable:!0},y:{get:function(){return a},enumerable:!0},mods:{get:function(){return o},enumerable:!0}}),v};var n=t(\"mouse-event\")},{\"mouse-event\":243}],242:[function(t,e,r){var n={left:0,top:0};e.exports=function(t,e,r){e=e||t.currentTarget||t.srcElement,Array.isArray(r)||(r=[0,0]);var i=t.clientX||0,a=t.clientY||0,o=(s=e,s===window||s===document||s===document.body?n:s.getBoundingClientRect());var s;return r[0]=i-o.left,r[1]=a-o.top,r}},{}],243:[function(t,e,r){\"use strict\";function n(t){return t.target||t.srcElement||window}r.buttons=function(t){if(\"object\"==typeof t){if(\"buttons\"in t)return t.buttons;if(\"which\"in t){if(2===(e=t.which))return 4;if(3===e)return 2;if(e>0)return 1<=0)return 1<2147483647)throw new RangeError('The value \"'+t+'\" is invalid for option \"size\"');var e=new Uint8Array(t);return e.__proto__=a.prototype,e}function a(t,e,r){if(\"number\"==typeof t){if(\"string\"==typeof e)throw new TypeError('The \"string\" argument must be of type string. Received type number');return l(t)}return o(t,e,r)}function o(t,e,r){if(\"string\"==typeof t)return function(t,e){\"string\"==typeof e&&\"\"!==e||(e=\"utf8\");if(!a.isEncoding(e))throw new TypeError(\"Unknown encoding: \"+e);var r=0|f(t,e),n=i(r),o=n.write(t,e);o!==r&&(n=n.slice(0,o));return n}(t,e);if(ArrayBuffer.isView(t))return c(t);if(null==t)throw TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof t);if(B(t,ArrayBuffer)||t&&B(t.buffer,ArrayBuffer))return function(t,e,r){if(e<0||t.byteLength=2147483647)throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+2147483647..toString(16)+\" bytes\");return 0|t}function f(t,e){if(a.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||B(t,ArrayBuffer))return t.byteLength;if(\"string\"!=typeof t)throw new TypeError('The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);var r=t.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;for(var i=!1;;)switch(e){case\"ascii\":case\"latin1\":case\"binary\":return r;case\"utf8\":case\"utf-8\":return D(t).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*r;case\"hex\":return r>>>1;case\"base64\":return R(t).length;default:if(i)return n?-1:D(t).length;e=(\"\"+e).toLowerCase(),i=!0}}function h(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return\"\";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return\"\";if((r>>>=0)<=(e>>>=0))return\"\";for(t||(t=\"utf8\");;)switch(t){case\"hex\":return M(this,e,r);case\"utf8\":case\"utf-8\":return T(this,e,r);case\"ascii\":return k(this,e,r);case\"latin1\":case\"binary\":return A(this,e,r);case\"base64\":return w(this,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return S(this,e,r);default:if(n)throw new TypeError(\"Unknown encoding: \"+t);t=(t+\"\").toLowerCase(),n=!0}}function p(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function d(t,e,r,n,i){if(0===t.length)return-1;if(\"string\"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),N(r=+r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if(\"string\"==typeof e&&(e=a.from(e,n)),a.isBuffer(e))return 0===e.length?-1:g(t,e,r,n,i);if(\"number\"==typeof e)return e&=255,\"function\"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):g(t,[e],r,n,i);throw new TypeError(\"val must be string, number or Buffer\")}function g(t,e,r,n,i){var a,o=1,s=t.length,l=e.length;if(void 0!==n&&(\"ucs2\"===(n=String(n).toLowerCase())||\"ucs-2\"===n||\"utf16le\"===n||\"utf-16le\"===n)){if(t.length<2||e.length<2)return-1;o=2,s/=2,l/=2,r/=2}function c(t,e){return 1===o?t[e]:t.readUInt16BE(e*o)}if(i){var u=-1;for(a=r;as&&(r=s-l),a=r;a>=0;a--){for(var f=!0,h=0;hi&&(n=i):n=i;var a=e.length;n>a/2&&(n=a/2);for(var o=0;o>8,i=r%256,a.push(i),a.push(n);return a}(e,t.length-r),t,r,n)}function w(t,r,n){return 0===r&&n===t.length?e.fromByteArray(t):e.fromByteArray(t.slice(r,n))}function T(t,e,r){r=Math.min(t.length,r);for(var n=[],i=e;i239?4:c>223?3:c>191?2:1;if(i+f<=r)switch(f){case 1:c<128&&(u=c);break;case 2:128==(192&(a=t[i+1]))&&(l=(31&c)<<6|63&a)>127&&(u=l);break;case 3:a=t[i+1],o=t[i+2],128==(192&a)&&128==(192&o)&&(l=(15&c)<<12|(63&a)<<6|63&o)>2047&&(l<55296||l>57343)&&(u=l);break;case 4:a=t[i+1],o=t[i+2],s=t[i+3],128==(192&a)&&128==(192&o)&&128==(192&s)&&(l=(15&c)<<18|(63&a)<<12|(63&o)<<6|63&s)>65535&&l<1114112&&(u=l)}null===u?(u=65533,f=1):u>65535&&(u-=65536,n.push(u>>>10&1023|55296),u=56320|1023&u),n.push(u),i+=f}return function(t){var e=t.length;if(e<=4096)return String.fromCharCode.apply(String,t);var r=\"\",n=0;for(;ne&&(t+=\" ... \"),\"\"},a.prototype.compare=function(t,e,r,n,i){if(B(t,Uint8Array)&&(t=a.from(t,t.offset,t.byteLength)),!a.isBuffer(t))throw new TypeError('The \"target\" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError(\"out of range index\");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(this===t)return 0;for(var o=(i>>>=0)-(n>>>=0),s=(r>>>=0)-(e>>>=0),l=Math.min(o,s),c=this.slice(n,i),u=t.slice(e,r),f=0;f>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n=\"utf8\")):(n=r,r=void 0)}var i=this.length-e;if((void 0===r||r>i)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");n||(n=\"utf8\");for(var a=!1;;)switch(n){case\"hex\":return m(this,t,e,r);case\"utf8\":case\"utf-8\":return v(this,t,e,r);case\"ascii\":return y(this,t,e,r);case\"latin1\":case\"binary\":return x(this,t,e,r);case\"base64\":return b(this,t,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return _(this,t,e,r);default:if(a)throw new TypeError(\"Unknown encoding: \"+n);n=(\"\"+n).toLowerCase(),a=!0}},a.prototype.toJSON=function(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};function k(t,e,r){var n=\"\";r=Math.min(t.length,r);for(var i=e;in)&&(r=n);for(var i=\"\",a=e;ar)throw new RangeError(\"Trying to access beyond buffer length\")}function L(t,e,r,n,i,o){if(!a.isBuffer(t))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError(\"Index out of range\")}function C(t,e,r,n,i,a){if(r+n>t.length)throw new RangeError(\"Index out of range\");if(r<0)throw new RangeError(\"Index out of range\")}function P(t,e,r,i,a){return e=+e,r>>>=0,a||C(t,0,r,4),n.write(t,e,r,i,23,4),r+4}function I(t,e,r,i,a){return e=+e,r>>>=0,a||C(t,0,r,8),n.write(t,e,r,i,52,8),r+8}a.prototype.slice=function(t,e){var r=this.length;(t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e>>=0,e>>>=0,r||E(t,e,this.length);for(var n=this[t],i=1,a=0;++a>>=0,e>>>=0,r||E(t,e,this.length);for(var n=this[t+--e],i=1;e>0&&(i*=256);)n+=this[t+--e]*i;return n},a.prototype.readUInt8=function(t,e){return t>>>=0,e||E(t,1,this.length),this[t]},a.prototype.readUInt16LE=function(t,e){return t>>>=0,e||E(t,2,this.length),this[t]|this[t+1]<<8},a.prototype.readUInt16BE=function(t,e){return t>>>=0,e||E(t,2,this.length),this[t]<<8|this[t+1]},a.prototype.readUInt32LE=function(t,e){return t>>>=0,e||E(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},a.prototype.readUInt32BE=function(t,e){return t>>>=0,e||E(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},a.prototype.readIntLE=function(t,e,r){t>>>=0,e>>>=0,r||E(t,e,this.length);for(var n=this[t],i=1,a=0;++a=(i*=128)&&(n-=Math.pow(2,8*e)),n},a.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||E(t,e,this.length);for(var n=e,i=1,a=this[t+--n];n>0&&(i*=256);)a+=this[t+--n]*i;return a>=(i*=128)&&(a-=Math.pow(2,8*e)),a},a.prototype.readInt8=function(t,e){return t>>>=0,e||E(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},a.prototype.readInt16LE=function(t,e){t>>>=0,e||E(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt16BE=function(t,e){t>>>=0,e||E(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt32LE=function(t,e){return t>>>=0,e||E(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},a.prototype.readInt32BE=function(t,e){return t>>>=0,e||E(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},a.prototype.readFloatLE=function(t,e){return t>>>=0,e||E(t,4,this.length),n.read(this,t,!0,23,4)},a.prototype.readFloatBE=function(t,e){return t>>>=0,e||E(t,4,this.length),n.read(this,t,!1,23,4)},a.prototype.readDoubleLE=function(t,e){return t>>>=0,e||E(t,8,this.length),n.read(this,t,!0,52,8)},a.prototype.readDoubleBE=function(t,e){return t>>>=0,e||E(t,8,this.length),n.read(this,t,!1,52,8)},a.prototype.writeUIntLE=function(t,e,r,n){(t=+t,e>>>=0,r>>>=0,n)||L(this,t,e,r,Math.pow(2,8*r)-1,0);var i=1,a=0;for(this[e]=255&t;++a>>=0,r>>>=0,n)||L(this,t,e,r,Math.pow(2,8*r)-1,0);var i=r-1,a=1;for(this[e+i]=255&t;--i>=0&&(a*=256);)this[e+i]=t/a&255;return e+r},a.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,1,255,0),this[e]=255&t,e+1},a.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},a.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},a.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},a.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},a.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var i=Math.pow(2,8*r-1);L(this,t,e,r,i-1,-i)}var a=0,o=1,s=0;for(this[e]=255&t;++a>0)-s&255;return e+r},a.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var i=Math.pow(2,8*r-1);L(this,t,e,r,i-1,-i)}var a=r-1,o=1,s=0;for(this[e+a]=255&t;--a>=0&&(o*=256);)t<0&&0===s&&0!==this[e+a+1]&&(s=1),this[e+a]=(t/o>>0)-s&255;return e+r},a.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},a.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},a.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},a.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},a.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},a.prototype.writeFloatLE=function(t,e,r){return P(this,t,e,!0,r)},a.prototype.writeFloatBE=function(t,e,r){return P(this,t,e,!1,r)},a.prototype.writeDoubleLE=function(t,e,r){return I(this,t,e,!0,r)},a.prototype.writeDoubleBE=function(t,e,r){return I(this,t,e,!1,r)},a.prototype.copy=function(t,e,r,n){if(!a.isBuffer(t))throw new TypeError(\"argument should be a Buffer\");if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n=this.length)throw new RangeError(\"Index out of range\");if(n<0)throw new RangeError(\"sourceEnd out of bounds\");n>this.length&&(n=this.length),t.length-e=0;--o)t[o+e]=this[o+r];else Uint8Array.prototype.set.call(t,this.subarray(r,n),e);return i},a.prototype.fill=function(t,e,r,n){if(\"string\"==typeof t){if(\"string\"==typeof e?(n=e,e=0,r=this.length):\"string\"==typeof r&&(n=r,r=this.length),void 0!==n&&\"string\"!=typeof n)throw new TypeError(\"encoding must be a string\");if(\"string\"==typeof n&&!a.isEncoding(n))throw new TypeError(\"Unknown encoding: \"+n);if(1===t.length){var i=t.charCodeAt(0);(\"utf8\"===n&&i<128||\"latin1\"===n)&&(t=i)}}else\"number\"==typeof t&&(t&=255);if(e<0||this.length>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),\"number\"==typeof t)for(o=e;o55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&a.push(239,191,189);continue}if(o+1===n){(e-=3)>-1&&a.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&a.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&a.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;a.push(r)}else if(r<2048){if((e-=2)<0)break;a.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;a.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error(\"Invalid code point\");if((e-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return a}function R(t){return e.toByteArray(function(t){if((t=(t=t.split(\"=\")[0]).trim().replace(O,\"\")).length<2)return\"\";for(;t.length%4!=0;)t+=\"=\";return t}(t))}function F(t,e,r,n){for(var i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function B(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function N(t){return t!=t}}).call(this)}).call(this,t(\"buffer\").Buffer)},{\"base64-js\":79,buffer:85,ieee754:230}],86:[function(t,e,r){e.exports=function(t,e,r){return er?r:t:te?e:t}},{}],87:[function(t,e,r){\"use strict\";var n=t(\"clamp\");function i(t,e){null==e&&(e=!0);var r=t[0],i=t[1],a=t[2],o=t[3];return null==o&&(o=e?1:255),e&&(r*=255,i*=255,a*=255,o*=255),16777216*(r=255&n(r,0,255))+((i=255&n(i,0,255))<<16)+((a=255&n(a,0,255))<<8)+(o=255&n(o,0,255))}e.exports=i,e.exports.to=i,e.exports.from=function(t,e){var r=(t=+t)>>>24,n=(16711680&t)>>>16,i=(65280&t)>>>8,a=255&t;return!1===e?[r,n,i,a]:[r/255,n/255,i/255,a/255]}},{clamp:86}],88:[function(t,e,r){\"use strict\";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},{}],89:[function(t,e,r){\"use strict\";var n=t(\"color-rgba\"),i=t(\"clamp\"),a=t(\"dtype\");e.exports=function(t,e){\"float\"!==e&&e||(e=\"array\"),\"uint\"===e&&(e=\"uint8\"),\"uint_clamped\"===e&&(e=\"uint8_clamped\");var r=new(a(e))(4),o=\"uint8\"!==e&&\"uint8_clamped\"!==e;return t.length&&\"string\"!=typeof t||((t=n(t))[0]/=255,t[1]/=255,t[2]/=255),function(t){return t instanceof Uint8Array||t instanceof Uint8ClampedArray||!!(Array.isArray(t)&&(t[0]>1||0===t[0])&&(t[1]>1||0===t[1])&&(t[2]>1||0===t[2])&&(!t[3]||t[3]>1))}(t)?(r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=null!=t[3]?t[3]:255,o&&(r[0]/=255,r[1]/=255,r[2]/=255,r[3]/=255),r):(o?(r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=null!=t[3]?t[3]:1):(r[0]=i(Math.floor(255*t[0]),0,255),r[1]=i(Math.floor(255*t[1]),0,255),r[2]=i(Math.floor(255*t[2]),0,255),r[3]=null==t[3]?255:i(Math.floor(255*t[3]),0,255)),r)}},{clamp:86,\"color-rgba\":91,dtype:127}],90:[function(t,e,r){(function(r){(function(){\"use strict\";var n=t(\"color-name\"),i=t(\"is-plain-obj\"),a=t(\"defined\");e.exports=function(t){var e,s,l=[],c=1;if(\"string\"==typeof t)if(n[t])l=n[t].slice(),s=\"rgb\";else if(\"transparent\"===t)c=0,s=\"rgb\",l=[0,0,0];else if(/^#[A-Fa-f0-9]+$/.test(t)){var u=(p=t.slice(1)).length;c=1,u<=4?(l=[parseInt(p[0]+p[0],16),parseInt(p[1]+p[1],16),parseInt(p[2]+p[2],16)],4===u&&(c=parseInt(p[3]+p[3],16)/255)):(l=[parseInt(p[0]+p[1],16),parseInt(p[2]+p[3],16),parseInt(p[4]+p[5],16)],8===u&&(c=parseInt(p[6]+p[7],16)/255)),l[0]||(l[0]=0),l[1]||(l[1]=0),l[2]||(l[2]=0),s=\"rgb\"}else if(e=/^((?:rgb|hs[lvb]|hwb|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms)a?)\\s*\\(([^\\)]*)\\)/.exec(t)){var f=e[1],h=\"rgb\"===f,p=f.replace(/a$/,\"\");s=p;u=\"cmyk\"===p?4:\"gray\"===p?1:3;l=e[2].trim().split(/\\s*,\\s*/).map((function(t,e){if(/%$/.test(t))return e===u?parseFloat(t)/100:\"rgb\"===p?255*parseFloat(t)/100:parseFloat(t);if(\"h\"===p[e]){if(/deg$/.test(t))return parseFloat(t);if(void 0!==o[t])return o[t]}return parseFloat(t)})),f===p&&l.push(1),c=h||void 0===l[u]?1:l[u],l=l.slice(0,u)}else t.length>10&&/[0-9](?:\\s|\\/)/.test(t)&&(l=t.match(/([0-9]+)/g).map((function(t){return parseFloat(t)})),s=t.match(/([a-z])/gi).join(\"\").toLowerCase());else if(isNaN(t))if(i(t)){var d=a(t.r,t.red,t.R,null);null!==d?(s=\"rgb\",l=[d,a(t.g,t.green,t.G),a(t.b,t.blue,t.B)]):(s=\"hsl\",l=[a(t.h,t.hue,t.H),a(t.s,t.saturation,t.S),a(t.l,t.lightness,t.L,t.b,t.brightness)]),c=a(t.a,t.alpha,t.opacity,1),null!=t.opacity&&(c/=100)}else(Array.isArray(t)||r.ArrayBuffer&&ArrayBuffer.isView&&ArrayBuffer.isView(t))&&(l=[t[0],t[1],t[2]],s=\"rgb\",c=4===t.length?t[3]:1);else s=\"rgb\",l=[t>>>16,(65280&t)>>>8,255&t];return{space:s,values:l,alpha:c}};var o={red:0,orange:60,yellow:120,green:180,blue:240,purple:300}}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"color-name\":88,defined:124,\"is-plain-obj\":236}],91:[function(t,e,r){\"use strict\";var n=t(\"color-parse\"),i=t(\"color-space/hsl\"),a=t(\"clamp\");e.exports=function(t){var e,r=n(t);return r.space?((e=Array(3))[0]=a(r.values[0],0,255),e[1]=a(r.values[1],0,255),e[2]=a(r.values[2],0,255),\"h\"===r.space[0]&&(e=i.rgb(e)),e.push(a(r.alpha,0,1)),e):[]}},{clamp:86,\"color-parse\":90,\"color-space/hsl\":92}],92:[function(t,e,r){\"use strict\";var n=t(\"./rgb\");e.exports={name:\"hsl\",min:[0,0,0],max:[360,100,100],channel:[\"hue\",\"saturation\",\"lightness\"],alias:[\"HSL\"],rgb:function(t){var e,r,n,i,a,o=t[0]/360,s=t[1]/100,l=t[2]/100;if(0===s)return[a=255*l,a,a];e=2*l-(r=l<.5?l*(1+s):l+s-l*s),i=[0,0,0];for(var c=0;c<3;c++)(n=o+1/3*-(c-1))<0?n++:n>1&&n--,a=6*n<1?e+6*(r-e)*n:2*n<1?r:3*n<2?e+(r-e)*(2/3-n)*6:e,i[c]=255*a;return i}},n.hsl=function(t){var e,r,n=t[0]/255,i=t[1]/255,a=t[2]/255,o=Math.min(n,i,a),s=Math.max(n,i,a),l=s-o;return s===o?e=0:n===s?e=(i-a)/l:i===s?e=2+(a-n)/l:a===s&&(e=4+(n-i)/l),(e=Math.min(60*e,360))<0&&(e+=360),r=(o+s)/2,[e,100*(s===o?0:r<=.5?l/(s+o):l/(2-s-o)),100*r]}},{\"./rgb\":93}],93:[function(t,e,r){\"use strict\";e.exports={name:\"rgb\",min:[0,0,0],max:[255,255,255],channel:[\"red\",\"green\",\"blue\"],alias:[\"RGB\"]}},{}],94:[function(t,e,r){e.exports={AFG:\"afghan\",ALA:\"\\\\b\\\\wland\",ALB:\"albania\",DZA:\"algeria\",ASM:\"^(?=.*americ).*samoa\",AND:\"andorra\",AGO:\"angola\",AIA:\"anguill?a\",ATA:\"antarctica\",ATG:\"antigua\",ARG:\"argentin\",ARM:\"armenia\",ABW:\"^(?!.*bonaire).*\\\\baruba\",AUS:\"australia\",AUT:\"^(?!.*hungary).*austria|\\\\baustri.*\\\\bemp\",AZE:\"azerbaijan\",BHS:\"bahamas\",BHR:\"bahrain\",BGD:\"bangladesh|^(?=.*east).*paki?stan\",BRB:\"barbados\",BLR:\"belarus|byelo\",BEL:\"^(?!.*luxem).*belgium\",BLZ:\"belize|^(?=.*british).*honduras\",BEN:\"benin|dahome\",BMU:\"bermuda\",BTN:\"bhutan\",BOL:\"bolivia\",BES:\"^(?=.*bonaire).*eustatius|^(?=.*carib).*netherlands|\\\\bbes.?islands\",BIH:\"herzegovina|bosnia\",BWA:\"botswana|bechuana\",BVT:\"bouvet\",BRA:\"brazil\",IOT:\"british.?indian.?ocean\",BRN:\"brunei\",BGR:\"bulgaria\",BFA:\"burkina|\\\\bfaso|upper.?volta\",BDI:\"burundi\",CPV:\"verde\",KHM:\"cambodia|kampuchea|khmer\",CMR:\"cameroon\",CAN:\"canada\",CYM:\"cayman\",CALF:\"\\\\bcentral.african.republic\",TCD:\"\\\\bchad\",CHL:\"\\\\bchile\",CHN:\"^(?!.*\\\\bmac)(?!.*\\\\bhong)(?!.*\\\\btai)(?!.*\\\\brep).*china|^(?=.*peo)(?=.*rep).*china\",CXR:\"christmas\",CCK:\"\\\\bcocos|keeling\",COL:\"colombia\",COM:\"comoro\",COG:\"^(?!.*\\\\bdem)(?!.*\\\\bd[\\\\.]?r)(?!.*kinshasa)(?!.*zaire)(?!.*belg)(?!.*l.opoldville)(?!.*free).*\\\\bcongo\",COK:\"\\\\bcook\",CRI:\"costa.?rica\",CIV:\"ivoire|ivory\",HRV:\"croatia\",CUB:\"\\\\bcuba\",CUW:\"^(?!.*bonaire).*\\\\bcura(c|\\xe7)ao\",CYP:\"cyprus\",CSK:\"czechoslovakia\",CZE:\"^(?=.*rep).*czech|czechia|bohemia\",COD:\"\\\\bdem.*congo|congo.*\\\\bdem|congo.*\\\\bd[\\\\.]?r|\\\\bd[\\\\.]?r.*congo|belgian.?congo|congo.?free.?state|kinshasa|zaire|l.opoldville|drc|droc|rdc\",DNK:\"denmark\",DJI:\"djibouti\",DMA:\"dominica(?!n)\",DOM:\"dominican.rep\",ECU:\"ecuador\",EGY:\"egypt\",SLV:\"el.?salvador\",GNQ:\"guine.*eq|eq.*guine|^(?=.*span).*guinea\",ERI:\"eritrea\",EST:\"estonia\",ETH:\"ethiopia|abyssinia\",FLK:\"falkland|malvinas\",FRO:\"faroe|faeroe\",FJI:\"fiji\",FIN:\"finland\",FRA:\"^(?!.*\\\\bdep)(?!.*martinique).*france|french.?republic|\\\\bgaul\",GUF:\"^(?=.*french).*guiana\",PYF:\"french.?polynesia|tahiti\",ATF:\"french.?southern\",GAB:\"gabon\",GMB:\"gambia\",GEO:\"^(?!.*south).*georgia\",DDR:\"german.?democratic.?republic|democratic.?republic.*germany|east.germany\",DEU:\"^(?!.*east).*germany|^(?=.*\\\\bfed.*\\\\brep).*german\",GHA:\"ghana|gold.?coast\",GIB:\"gibraltar\",GRC:\"greece|hellenic|hellas\",GRL:\"greenland\",GRD:\"grenada\",GLP:\"guadeloupe\",GUM:\"\\\\bguam\",GTM:\"guatemala\",GGY:\"guernsey\",GIN:\"^(?!.*eq)(?!.*span)(?!.*bissau)(?!.*portu)(?!.*new).*guinea\",GNB:\"bissau|^(?=.*portu).*guinea\",GUY:\"guyana|british.?guiana\",HTI:\"haiti\",HMD:\"heard.*mcdonald\",VAT:\"holy.?see|vatican|papal.?st\",HND:\"^(?!.*brit).*honduras\",HKG:\"hong.?kong\",HUN:\"^(?!.*austr).*hungary\",ISL:\"iceland\",IND:\"india(?!.*ocea)\",IDN:\"indonesia\",IRN:\"\\\\biran|persia\",IRQ:\"\\\\biraq|mesopotamia\",IRL:\"(^ireland)|(^republic.*ireland)\",IMN:\"^(?=.*isle).*\\\\bman\",ISR:\"israel\",ITA:\"italy\",JAM:\"jamaica\",JPN:\"japan\",JEY:\"jersey\",JOR:\"jordan\",KAZ:\"kazak\",KEN:\"kenya|british.?east.?africa|east.?africa.?prot\",KIR:\"kiribati\",PRK:\"^(?=.*democrat|people|north|d.*p.*.r).*\\\\bkorea|dprk|korea.*(d.*p.*r)\",KWT:\"kuwait\",KGZ:\"kyrgyz|kirghiz\",LAO:\"\\\\blaos?\\\\b\",LVA:\"latvia\",LBN:\"lebanon\",LSO:\"lesotho|basuto\",LBR:\"liberia\",LBY:\"libya\",LIE:\"liechtenstein\",LTU:\"lithuania\",LUX:\"^(?!.*belg).*luxem\",MAC:\"maca(o|u)\",MDG:\"madagascar|malagasy\",MWI:\"malawi|nyasa\",MYS:\"malaysia\",MDV:\"maldive\",MLI:\"\\\\bmali\\\\b\",MLT:\"\\\\bmalta\",MHL:\"marshall\",MTQ:\"martinique\",MRT:\"mauritania\",MUS:\"mauritius\",MYT:\"\\\\bmayotte\",MEX:\"\\\\bmexic\",FSM:\"fed.*micronesia|micronesia.*fed\",MCO:\"monaco\",MNG:\"mongolia\",MNE:\"^(?!.*serbia).*montenegro\",MSR:\"montserrat\",MAR:\"morocco|\\\\bmaroc\",MOZ:\"mozambique\",MMR:\"myanmar|burma\",NAME:\"namibia\",NRU:\"nauru\",NPL:\"nepal\",NLD:\"^(?!.*\\\\bant)(?!.*\\\\bcarib).*netherlands\",ANT:\"^(?=.*\\\\bant).*(nether|dutch)\",NCL:\"new.?caledonia\",NZL:\"new.?zealand\",NIC:\"nicaragua\",NER:\"\\\\bniger(?!ia)\",NGA:\"nigeria\",NIU:\"niue\",NFK:\"norfolk\",MNP:\"mariana\",NOR:\"norway\",OMN:\"\\\\boman|trucial\",PAK:\"^(?!.*east).*paki?stan\",PLW:\"palau\",PSE:\"palestin|\\\\bgaza|west.?bank\",PAN:\"panama\",PNG:\"papua|new.?guinea\",PRY:\"paraguay\",PER:\"peru\",PHL:\"philippines\",PCN:\"pitcairn\",POL:\"poland\",PRT:\"portugal\",PRI:\"puerto.?rico\",QAT:\"qatar\",KOR:\"^(?!.*d.*p.*r)(?!.*democrat)(?!.*people)(?!.*north).*\\\\bkorea(?!.*d.*p.*r)\",MDA:\"moldov|b(a|e)ssarabia\",REU:\"r(e|\\xe9)union\",ROU:\"r(o|u|ou)mania\",RUS:\"\\\\brussia|soviet.?union|u\\\\.?s\\\\.?s\\\\.?r|socialist.?republics\",RWA:\"rwanda\",BLM:\"barth(e|\\xe9)lemy\",SHN:\"helena\",KNA:\"kitts|\\\\bnevis\",LCA:\"\\\\blucia\",MAF:\"^(?=.*collectivity).*martin|^(?=.*france).*martin(?!ique)|^(?=.*french).*martin(?!ique)\",SPM:\"miquelon\",VCT:\"vincent\",WSM:\"^(?!.*amer).*samoa\",SMR:\"san.?marino\",STP:\"\\\\bs(a|\\xe3)o.?tom(e|\\xe9)\",SAU:\"\\\\bsa\\\\w*.?arabia\",SEN:\"senegal\",SRB:\"^(?!.*monte).*serbia\",SYC:\"seychell\",SLE:\"sierra\",SGP:\"singapore\",SXM:\"^(?!.*martin)(?!.*saba).*maarten\",SVK:\"^(?!.*cze).*slovak\",SVN:\"slovenia\",SLB:\"solomon\",SOME:\"somali\",ZAF:\"south.africa|s\\\\\\\\..?africa\",SGS:\"south.?georgia|sandwich\",SSD:\"\\\\bs\\\\w*.?sudan\",ESP:\"spain\",LKA:\"sri.?lanka|ceylon\",SDN:\"^(?!.*\\\\bs(?!u)).*sudan\",SUR:\"surinam|dutch.?guiana\",SJM:\"svalbard\",SWZ:\"swaziland\",SWE:\"sweden\",CHE:\"switz|swiss\",SYR:\"syria\",TWN:\"taiwan|taipei|formosa|^(?!.*peo)(?=.*rep).*china\",TJK:\"tajik\",THA:\"thailand|\\\\bsiam\",MKD:\"macedonia|fyrom\",TLS:\"^(?=.*leste).*timor|^(?=.*east).*timor\",TGO:\"togo\",TKL:\"tokelau\",TON:\"tonga\",TTO:\"trinidad|tobago\",TUN:\"tunisia\",TUR:\"turkey\",TKM:\"turkmen\",TCA:\"turks\",TUV:\"tuvalu\",UGA:\"uganda\",UKR:\"ukrain\",ARE:\"emirates|^u\\\\.?a\\\\.?e\\\\.?$|united.?arab.?em\",GBR:\"united.?kingdom|britain|^u\\\\.?k\\\\.?$\",TZA:\"tanzania\",USA:\"united.?states\\\\b(?!.*islands)|\\\\bu\\\\.?s\\\\.?a\\\\.?\\\\b|^\\\\s*u\\\\.?s\\\\.?\\\\b(?!.*islands)\",UMI:\"minor.?outlying.?is\",URY:\"uruguay\",UZB:\"uzbek\",VUT:\"vanuatu|new.?hebrides\",VEN:\"venezuela\",VNM:\"^(?!.*republic).*viet.?name|^(?=.*socialist).*viet.?name\",VGB:\"^(?=.*\\\\bu\\\\.?\\\\s?k).*virgin|^(?=.*brit).*virgin|^(?=.*kingdom).*virgin\",VIR:\"^(?=.*\\\\bu\\\\.?\\\\s?s).*virgin|^(?=.*states).*virgin\",WLF:\"futuna|wallis\",ESH:\"western.sahara\",YEM:\"^(?!.*arab)(?!.*north)(?!.*sana)(?!.*peo)(?!.*dem)(?!.*south)(?!.*aden)(?!.*\\\\bp\\\\.?d\\\\.?r).*yemen\",YMD:\"^(?=.*peo).*yemen|^(?!.*rep)(?=.*dem).*yemen|^(?=.*south).*yemen|^(?=.*aden).*yemen|^(?=.*\\\\bp\\\\.?d\\\\.?r).*yemen\",YUG:\"yugoslavia\",ZMB:\"zambia|northern.?rhodesia\",EAZ:\"zanzibar\",ZWE:\"zimbabwe|^(?!.*northern).*rhodesia\"}},{}],95:[function(t,e,r){e.exports=[\"xx-small\",\"x-small\",\"small\",\"medium\",\"large\",\"x-large\",\"xx-large\",\"larger\",\"smaller\"]},{}],96:[function(t,e,r){e.exports=[\"normal\",\"condensed\",\"semi-condensed\",\"extra-condensed\",\"ultra-condensed\",\"expanded\",\"semi-expanded\",\"extra-expanded\",\"ultra-expanded\"]},{}],97:[function(t,e,r){e.exports=[\"normal\",\"italic\",\"oblique\"]},{}],98:[function(t,e,r){e.exports=[\"normal\",\"bold\",\"bolder\",\"lighter\",\"100\",\"200\",\"300\",\"400\",\"500\",\"600\",\"700\",\"800\",\"900\"]},{}],99:[function(t,e,r){\"use strict\";e.exports={parse:t(\"./parse\"),stringify:t(\"./stringify\")}},{\"./parse\":101,\"./stringify\":102}],100:[function(t,e,r){\"use strict\";var n=t(\"css-font-size-keywords\");e.exports={isSize:function(t){return/^[\\d\\.]/.test(t)||-1!==t.indexOf(\"/\")||-1!==n.indexOf(t)}}},{\"css-font-size-keywords\":95}],101:[function(t,e,r){\"use strict\";var n=t(\"unquote\"),i=t(\"css-global-keywords\"),a=t(\"css-system-font-keywords\"),o=t(\"css-font-weight-keywords\"),s=t(\"css-font-style-keywords\"),l=t(\"css-font-stretch-keywords\"),c=t(\"string-split-by\"),u=t(\"./lib/util\").isSize;e.exports=h;var f=h.cache={};function h(t){if(\"string\"!=typeof t)throw new Error(\"Font argument must be a string.\");if(f[t])return f[t];if(\"\"===t)throw new Error(\"Cannot parse an empty string.\");if(-1!==a.indexOf(t))return f[t]={system:t};for(var e,r={style:\"normal\",variant:\"normal\",weight:\"normal\",stretch:\"normal\",lineHeight:\"normal\",size:\"1rem\",family:[\"serif\"]},h=c(t,/\\s+/);e=h.shift();){if(-1!==i.indexOf(e))return[\"style\",\"variant\",\"weight\",\"stretch\"].forEach((function(t){r[t]=e})),f[t]=r;if(-1===s.indexOf(e))if(\"normal\"!==e&&\"small-caps\"!==e)if(-1===l.indexOf(e)){if(-1===o.indexOf(e)){if(u(e)){var d=c(e,\"/\");if(r.size=d[0],null!=d[1]?r.lineHeight=p(d[1]):\"/\"===h[0]&&(h.shift(),r.lineHeight=p(h.shift())),!h.length)throw new Error(\"Missing required font-family.\");return r.family=c(h.join(\" \"),/\\s*,\\s*/).map(n),f[t]=r}throw new Error(\"Unknown or unsupported font token: \"+e)}r.weight=e}else r.stretch=e;else r.variant=e;else r.style=e}throw new Error(\"Missing required font-size.\")}function p(t){var e=parseFloat(t);return e.toString()===t?e:t}},{\"./lib/util\":100,\"css-font-stretch-keywords\":96,\"css-font-style-keywords\":97,\"css-font-weight-keywords\":98,\"css-global-keywords\":103,\"css-system-font-keywords\":104,\"string-split-by\":305,unquote:328}],102:[function(t,e,r){\"use strict\";var n=t(\"pick-by-alias\"),i=t(\"./lib/util\").isSize,a=g(t(\"css-global-keywords\")),o=g(t(\"css-system-font-keywords\")),s=g(t(\"css-font-weight-keywords\")),l=g(t(\"css-font-style-keywords\")),c=g(t(\"css-font-stretch-keywords\")),u={normal:1,\"small-caps\":1},f={serif:1,\"sans-serif\":1,monospace:1,cursive:1,fantasy:1,\"system-ui\":1},h=\"1rem\",p=\"serif\";function d(t,e){if(t&&!e[t]&&!a[t])throw Error(\"Unknown keyword `\"+t+\"`\");return t}function g(t){for(var e={},r=0;re?1:t>=e?0:NaN}function r(t){var r;return 1===t.length&&(r=t,t=function(t,n){return e(r(t),n)}),{left:function(e,r,n,i){for(null==n&&(n=0),null==i&&(i=e.length);n>>1;t(e[a],r)<0?n=a+1:i=a}return n},right:function(e,r,n,i){for(null==n&&(n=0),null==i&&(i=e.length);n>>1;t(e[a],r)>0?i=a:n=a+1}return n}}}var n=r(e),i=n.right,a=n.left;function o(t,e){return[t,e]}function s(t){return null===t?NaN:+t}function l(t,e){var r,n,i=t.length,a=0,o=-1,l=0,c=0;if(null==e)for(;++o1)return c/(a-1)}function c(t,e){var r=l(t,e);return r?Math.sqrt(r):r}function u(t,e){var r,n,i,a=t.length,o=-1;if(null==e){for(;++o=r)for(n=i=r;++or&&(n=r),i=r)for(n=i=r;++or&&(n=r),i=0?(a>=v?10:a>=y?5:a>=x?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(a>=v?10:a>=y?5:a>=x?2:1)}function _(t,e,r){var n=Math.abs(e-t)/Math.max(0,r),i=Math.pow(10,Math.floor(Math.log(n)/Math.LN10)),a=n/i;return a>=v?i*=10:a>=y?i*=5:a>=x&&(i*=2),e=1)return+r(t[n-1],n-1,t);var n,i=(n-1)*e,a=Math.floor(i),o=+r(t[a],a,t);return o+(+r(t[a+1],a+1,t)-o)*(i-a)}}function k(t,e){var r,n,i=t.length,a=-1;if(null==e){for(;++a=r)for(n=r;++ar&&(n=r)}else for(;++a=r)for(n=r;++ar&&(n=r);return n}function A(t){if(!(i=t.length))return[];for(var e=-1,r=k(t,M),n=new Array(r);++et?1:e>=t?0:NaN},t.deviation=c,t.extent=u,t.histogram=function(){var t=g,e=u,r=w;function n(n){var a,o,s=n.length,l=new Array(s);for(a=0;af;)h.pop(),--p;var d,g=new Array(p+1);for(a=0;a<=p;++a)(d=g[a]=[]).x0=a>0?h[a-1]:u,d.x1=a=r)for(n=r;++an&&(n=r)}else for(;++a=r)for(n=r;++an&&(n=r);return n},t.mean=function(t,e){var r,n=t.length,i=n,a=-1,o=0;if(null==e)for(;++a=0;)for(e=(n=t[i]).length;--e>=0;)r[--o]=n[e];return r},t.min=k,t.pairs=function(t,e){null==e&&(e=o);for(var r=0,n=t.length-1,i=t[0],a=new Array(n<0?0:n);r0)return[t];if((n=e0)for(t=Math.ceil(t/o),e=Math.floor(e/o),a=new Array(i=Math.ceil(e-t+1));++s=l.length)return null!=t&&n.sort(t),null!=e?e(n):n;for(var s,c,f,h=-1,p=n.length,d=l[i++],g=r(),m=a();++hl.length)return r;var i,a=c[n-1];return null!=e&&n>=l.length?i=r.entries():(i=[],r.each((function(e,r){i.push({key:r,values:t(e,n)})}))),null!=a?i.sort((function(t,e){return a(t.key,e.key)})):i}(u(t,0,a,o),0)},key:function(t){return l.push(t),s},sortKeys:function(t){return c[l.length-1]=t,s},sortValues:function(e){return t=e,s},rollup:function(t){return e=t,s}}},t.set=c,t.map=r,t.keys=function(t){var e=[];for(var r in t)e.push(r);return e},t.values=function(t){var e=[];for(var r in t)e.push(t[r]);return e},t.entries=function(t){var e=[];for(var r in t)e.push({key:r,value:t[r]});return e},Object.defineProperty(t,\"__esModule\",{value:!0})}))},{}],109:[function(t,e,r){!function(t,n){\"object\"==typeof r&&void 0!==e?n(r):n((t=t||self).d3=t.d3||{})}(this,(function(t){\"use strict\";function e(t,e,r){t.prototype=e.prototype=r,r.constructor=t}function r(t,e){var r=Object.create(t.prototype);for(var n in e)r[n]=e[n];return r}function n(){}var i=\"\\\\s*([+-]?\\\\d+)\\\\s*\",a=\"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",o=\"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",s=/^#([0-9a-f]{3,8})$/,l=new RegExp(\"^rgb\\\\(\"+[i,i,i]+\"\\\\)$\"),c=new RegExp(\"^rgb\\\\(\"+[o,o,o]+\"\\\\)$\"),u=new RegExp(\"^rgba\\\\(\"+[i,i,i,a]+\"\\\\)$\"),f=new RegExp(\"^rgba\\\\(\"+[o,o,o,a]+\"\\\\)$\"),h=new RegExp(\"^hsl\\\\(\"+[a,o,o]+\"\\\\)$\"),p=new RegExp(\"^hsla\\\\(\"+[a,o,o,a]+\"\\\\)$\"),d={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function g(){return this.rgb().formatHex()}function m(){return this.rgb().formatRgb()}function v(t){var e,r;return t=(t+\"\").trim().toLowerCase(),(e=s.exec(t))?(r=e[1].length,e=parseInt(e[1],16),6===r?y(e):3===r?new w(e>>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===r?x(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===r?x(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=l.exec(t))?new w(e[1],e[2],e[3],1):(e=c.exec(t))?new w(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=u.exec(t))?x(e[1],e[2],e[3],e[4]):(e=f.exec(t))?x(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=h.exec(t))?M(e[1],e[2]/100,e[3]/100,1):(e=p.exec(t))?M(e[1],e[2]/100,e[3]/100,e[4]):d.hasOwnProperty(t)?y(d[t]):\"transparent\"===t?new w(NaN,NaN,NaN,0):null}function y(t){return new w(t>>16&255,t>>8&255,255&t,1)}function x(t,e,r,n){return n<=0&&(t=e=r=NaN),new w(t,e,r,n)}function b(t){return t instanceof n||(t=v(t)),t?new w((t=t.rgb()).r,t.g,t.b,t.opacity):new w}function _(t,e,r,n){return 1===arguments.length?b(t):new w(t,e,r,null==n?1:n)}function w(t,e,r,n){this.r=+t,this.g=+e,this.b=+r,this.opacity=+n}function T(){return\"#\"+A(this.r)+A(this.g)+A(this.b)}function k(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?\"rgb(\":\"rgba(\")+Math.max(0,Math.min(255,Math.round(this.r)||0))+\", \"+Math.max(0,Math.min(255,Math.round(this.g)||0))+\", \"+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?\")\":\", \"+t+\")\")}function A(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?\"0\":\"\")+t.toString(16)}function M(t,e,r,n){return n<=0?t=e=r=NaN:r<=0||r>=1?t=e=NaN:e<=0&&(t=NaN),new L(t,e,r,n)}function S(t){if(t instanceof L)return new L(t.h,t.s,t.l,t.opacity);if(t instanceof n||(t=v(t)),!t)return new L;if(t instanceof L)return t;var e=(t=t.rgb()).r/255,r=t.g/255,i=t.b/255,a=Math.min(e,r,i),o=Math.max(e,r,i),s=NaN,l=o-a,c=(o+a)/2;return l?(s=e===o?(r-i)/l+6*(r0&&c<1?0:s,new L(s,l,c,t.opacity)}function E(t,e,r,n){return 1===arguments.length?S(t):new L(t,e,r,null==n?1:n)}function L(t,e,r,n){this.h=+t,this.s=+e,this.l=+r,this.opacity=+n}function C(t,e,r){return 255*(t<60?e+(r-e)*t/60:t<180?r:t<240?e+(r-e)*(240-t)/60:e)}e(n,v,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:g,formatHex:g,formatHsl:function(){return S(this).formatHsl()},formatRgb:m,toString:m}),e(w,_,r(n,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new w(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new w(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:T,formatHex:T,formatRgb:k,toString:k})),e(L,E,r(n,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new L(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new L(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*e,i=2*r-n;return new w(C(t>=240?t-240:t+120,i,n),C(t,i,n),C(t<120?t+240:t-120,i,n),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?\"hsl(\":\"hsla(\")+(this.h||0)+\", \"+100*(this.s||0)+\"%, \"+100*(this.l||0)+\"%\"+(1===t?\")\":\", \"+t+\")\")}}));var P=Math.PI/180,I=180/Math.PI,O=6/29,z=3*O*O;function D(t){if(t instanceof F)return new F(t.l,t.a,t.b,t.opacity);if(t instanceof q)return G(t);t instanceof w||(t=b(t));var e,r,n=U(t.r),i=U(t.g),a=U(t.b),o=B((.2225045*n+.7168786*i+.0606169*a)/1);return n===i&&i===a?e=r=o:(e=B((.4360747*n+.3850649*i+.1430804*a)/.96422),r=B((.0139322*n+.0971045*i+.7141733*a)/.82521)),new F(116*o-16,500*(e-o),200*(o-r),t.opacity)}function R(t,e,r,n){return 1===arguments.length?D(t):new F(t,e,r,null==n?1:n)}function F(t,e,r,n){this.l=+t,this.a=+e,this.b=+r,this.opacity=+n}function B(t){return t>.008856451679035631?Math.pow(t,1/3):t/z+4/29}function N(t){return t>O?t*t*t:z*(t-4/29)}function j(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function U(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function V(t){if(t instanceof q)return new q(t.h,t.c,t.l,t.opacity);if(t instanceof F||(t=D(t)),0===t.a&&0===t.b)return new q(NaN,0=0&&(r=t.slice(n+1),t=t.slice(0,n)),t&&!e.hasOwnProperty(t))throw new Error(\"unknown type: \"+t);return{type:t,name:r}}))}function a(t,e){for(var r,n=0,i=t.length;n0)for(var r,n,i=new Array(r),a=0;ah+c||np+c||au.index){var f=h-s.x-s.vx,m=p-s.y-s.vy,v=f*f+m*m;vt.r&&(t.r=t[e].r)}function h(){if(r){var e,i,a=r.length;for(n=new Array(a),e=0;e=c)){(t.data!==r||t.next)&&(0===f&&(d+=(f=o())*f),0===h&&(d+=(h=o())*h),d1?(null==r?u.remove(t):u.set(t,v(r)),e):u.get(t)},find:function(e,r,n){var i,a,o,s,l,c=0,u=t.length;for(null==n?n=1/0:n*=n,c=0;c1?(h.on(t,r),e):h.on(t)}}},t.forceX=function(t){var e,r,n,i=a(.1);function o(t){for(var i,a=0,o=e.length;a1?n[0]+n.slice(2):n,+t.slice(r+1)]}function r(t){return(t=e(Math.abs(t)))?t[1]:NaN}var n,i=/^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;function a(t){if(!(e=i.exec(t)))throw new Error(\"invalid format: \"+t);var e;return new o({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function o(t){this.fill=void 0===t.fill?\" \":t.fill+\"\",this.align=void 0===t.align?\">\":t.align+\"\",this.sign=void 0===t.sign?\"-\":t.sign+\"\",this.symbol=void 0===t.symbol?\"\":t.symbol+\"\",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?\"\":t.type+\"\"}function s(t,r){var n=e(t,r);if(!n)return t+\"\";var i=n[0],a=n[1];return a<0?\"0.\"+new Array(-a).join(\"0\")+i:i.length>a+1?i.slice(0,a+1)+\".\"+i.slice(a+1):i+new Array(a-i.length+2).join(\"0\")}a.prototype=o.prototype,o.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?\"0\":\"\")+(void 0===this.width?\"\":Math.max(1,0|this.width))+(this.comma?\",\":\"\")+(void 0===this.precision?\"\":\".\"+Math.max(0,0|this.precision))+(this.trim?\"~\":\"\")+this.type};var l={\"%\":function(t,e){return(100*t).toFixed(e)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+\"\"},d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString(\"en\").replace(/,/g,\"\"):t.toString(10)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},g:function(t,e){return t.toPrecision(e)},o:function(t){return Math.round(t).toString(8)},p:function(t,e){return s(100*t,e)},r:s,s:function(t,r){var i=e(t,r);if(!i)return t+\"\";var a=i[0],o=i[1],s=o-(n=3*Math.max(-8,Math.min(8,Math.floor(o/3))))+1,l=a.length;return s===l?a:s>l?a+new Array(s-l+1).join(\"0\"):s>0?a.slice(0,s)+\".\"+a.slice(s):\"0.\"+new Array(1-s).join(\"0\")+e(t,Math.max(0,r+s-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}};function c(t){return t}var u,f=Array.prototype.map,h=[\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"\\xb5\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];function p(t){var e,i,o=void 0===t.grouping||void 0===t.thousands?c:(e=f.call(t.grouping,Number),i=t.thousands+\"\",function(t,r){for(var n=t.length,a=[],o=0,s=e[0],l=0;n>0&&s>0&&(l+s+1>r&&(s=Math.max(1,r-l)),a.push(t.substring(n-=s,n+s)),!((l+=s+1)>r));)s=e[o=(o+1)%e.length];return a.reverse().join(i)}),s=void 0===t.currency?\"\":t.currency[0]+\"\",u=void 0===t.currency?\"\":t.currency[1]+\"\",p=void 0===t.decimal?\".\":t.decimal+\"\",d=void 0===t.numerals?c:function(t){return function(e){return e.replace(/[0-9]/g,(function(e){return t[+e]}))}}(f.call(t.numerals,String)),g=void 0===t.percent?\"%\":t.percent+\"\",m=void 0===t.minus?\"-\":t.minus+\"\",v=void 0===t.nan?\"NaN\":t.nan+\"\";function y(t){var e=(t=a(t)).fill,r=t.align,i=t.sign,c=t.symbol,f=t.zero,y=t.width,x=t.comma,b=t.precision,_=t.trim,w=t.type;\"n\"===w?(x=!0,w=\"g\"):l[w]||(void 0===b&&(b=12),_=!0,w=\"g\"),(f||\"0\"===e&&\"=\"===r)&&(f=!0,e=\"0\",r=\"=\");var T=\"$\"===c?s:\"#\"===c&&/[boxX]/.test(w)?\"0\"+w.toLowerCase():\"\",k=\"$\"===c?u:/[%p]/.test(w)?g:\"\",A=l[w],M=/[defgprs%]/.test(w);function S(t){var a,s,l,c=T,u=k;if(\"c\"===w)u=A(t)+u,t=\"\";else{var g=(t=+t)<0||1/t<0;if(t=isNaN(t)?v:A(Math.abs(t),b),_&&(t=function(t){t:for(var e,r=t.length,n=1,i=-1;n0&&(i=0)}return i>0?t.slice(0,i)+t.slice(e+1):t}(t)),g&&0==+t&&\"+\"!==i&&(g=!1),c=(g?\"(\"===i?i:m:\"-\"===i||\"(\"===i?\"\":i)+c,u=(\"s\"===w?h[8+n/3]:\"\")+u+(g&&\"(\"===i?\")\":\"\"),M)for(a=-1,s=t.length;++a(l=t.charCodeAt(a))||l>57){u=(46===l?p+t.slice(a+1):t.slice(a))+u,t=t.slice(0,a);break}}x&&!f&&(t=o(t,1/0));var S=c.length+t.length+u.length,E=S>1)+c+t+u+E.slice(S);break;default:t=E+c+t+u}return d(t)}return b=void 0===b?6:/[gprs]/.test(w)?Math.max(1,Math.min(21,b)):Math.max(0,Math.min(20,b)),S.toString=function(){return t+\"\"},S}return{format:y,formatPrefix:function(t,e){var n=y(((t=a(t)).type=\"f\",t)),i=3*Math.max(-8,Math.min(8,Math.floor(r(e)/3))),o=Math.pow(10,-i),s=h[8+i/3];return function(t){return n(o*t)+s}}}}function d(e){return u=p(e),t.format=u.format,t.formatPrefix=u.formatPrefix,u}d({decimal:\".\",thousands:\",\",grouping:[3],currency:[\"$\",\"\"],minus:\"-\"}),t.FormatSpecifier=o,t.formatDefaultLocale=d,t.formatLocale=p,t.formatSpecifier=a,t.precisionFixed=function(t){return Math.max(0,-r(Math.abs(t)))},t.precisionPrefix=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(r(e)/3)))-r(Math.abs(t)))},t.precisionRound=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,r(e)-r(t))+1},Object.defineProperty(t,\"__esModule\",{value:!0})}))},{}],113:[function(t,e,r){!function(n,i){\"object\"==typeof r&&void 0!==e?i(r,t(\"d3-geo\"),t(\"d3-array\")):i(n.d3=n.d3||{},n.d3,n.d3)}(this,(function(t,e,r){\"use strict\";var n=Math.abs,i=Math.atan,a=Math.atan2,o=Math.cos,s=Math.exp,l=Math.floor,c=Math.log,u=Math.max,f=Math.min,h=Math.pow,p=Math.round,d=Math.sign||function(t){return t>0?1:t<0?-1:0},g=Math.sin,m=Math.tan,v=1e-6,y=Math.PI,x=y/2,b=y/4,_=Math.SQRT1_2,w=L(2),T=L(y),k=2*y,A=180/y,M=y/180;function S(t){return t>1?x:t<-1?-x:Math.asin(t)}function E(t){return t>1?0:t<-1?y:Math.acos(t)}function L(t){return t>0?Math.sqrt(t):0}function C(t){return(s(t)-s(-t))/2}function P(t){return(s(t)+s(-t))/2}function I(t){var e=m(t/2),r=2*c(o(t/2))/(e*e);function i(t,e){var n=o(t),i=o(e),a=g(e),s=i*n,l=-((1-s?c((1+s)/2)/(1-s):-.5)+r/(1+s));return[l*i*g(t),l*a]}return i.invert=function(e,i){var s,l=L(e*e+i*i),u=-t/2,f=50;if(!l)return[0,0];do{var h=u/2,p=o(h),d=g(h),m=d/p,y=-c(n(p));u-=s=(2/m*y-r*m-l)/(-y/(d*d)+1-r/(2*p*p))*(p<0?.7:1)}while(n(s)>v&&--f>0);var x=g(u);return[a(e*x,l*o(u)),S(i*x/l)]},i}function O(t,e){var r=o(e),n=function(t){return t?t/Math.sin(t):1}(E(r*o(t/=2)));return[2*r*g(t)*n,g(e)*n]}function z(t){var e=g(t),r=o(t),i=t>=0?1:-1,s=m(i*t),l=(1+e-r)/2;function c(t,n){var c=o(n),u=o(t/=2);return[(1+c)*g(t),(i*n>-a(u,s)-.001?0:10*-i)+l+g(n)*r-(1+c)*e*u]}return c.invert=function(t,c){var u=0,f=0,h=50;do{var p=o(u),d=g(u),m=o(f),y=g(f),x=1+m,b=x*d-t,_=l+y*r-x*e*p-c,w=x*p/2,T=-d*y,k=e*x*d/2,A=r*m+e*p*y,M=T*k-A*w,S=(_*T-b*A)/M/2,E=(b*k-_*w)/M;n(E)>2&&(E/=2),u-=S,f-=E}while((n(S)>v||n(E)>v)&&--h>0);return i*f>-a(o(u),s)-.001?[2*u,f]:null},c}function D(t,e){var r=m(e/2),n=L(1-r*r),i=1+n*o(t/=2),a=g(t)*n/i,s=r/i,l=a*a,c=s*s;return[4/3*a*(3+l-3*c),4/3*s*(3+3*l-c)]}O.invert=function(t,e){if(!(t*t+4*e*e>y*y+v)){var r=t,i=e,a=25;do{var s,l=g(r),c=g(r/2),u=o(r/2),f=g(i),h=o(i),p=g(2*i),d=f*f,m=h*h,x=c*c,b=1-m*u*u,_=b?E(h*u)*L(s=1/b):s=0,w=2*_*h*c-t,T=_*f-e,k=s*(m*x+_*h*u*d),A=s*(.5*l*p-2*_*f*c),M=.25*s*(p*c-_*f*m*l),S=s*(d*u+_*x*h),C=A*M-S*k;if(!C)break;var P=(T*A-w*S)/C,I=(w*M-T*k)/C;r-=P,i-=I}while((n(P)>v||n(I)>v)&&--a>0);return[r,i]}},D.invert=function(t,e){if(e*=3/8,!(t*=3/8)&&n(e)>1)return null;var r=1+t*t+e*e,i=L((r-L(r*r-4*e*e))/2),s=S(i)/3,l=i?function(t){return c(t+L(t*t-1))}(n(e/i))/3:function(t){return c(t+L(t*t+1))}(n(t))/3,u=o(s),f=P(l),h=f*f-u*u;return[2*d(t)*a(C(l)*u,.25-h),2*d(e)*a(f*g(s),.25+h)]};var R=L(8),F=c(1+w);function B(t,e){var r=n(e);return rx){var l=a(s[1],s[0]),c=L(s[0]*s[0]+s[1]*s[1]),u=r*p((l-x)/r)+x,f=a(g(l-=u),2-o(l));l=u+S(y/c*g(f))-f,s[0]=c*o(l),s[1]=c*g(l)}return s}return s.invert=function(t,n){var s=L(t*t+n*n);if(s>x){var l=a(n,t),c=r*p((l-x)/r)+x,u=l>c?-1:1,f=s*o(c-l),h=1/m(u*E((f-y)/L(y*(y-2*f)+s*s)));l=c+2*i((h+u*L(h*h-3))/3),t=s*o(l),n=s*g(l)}return e.geoAzimuthalEquidistantRaw.invert(t,n)},s}function j(t,r){if(arguments.length<2&&(r=t),1===r)return e.geoAzimuthalEqualAreaRaw;if(r===1/0)return U;function n(n,i){var a=e.geoAzimuthalEqualAreaRaw(n/r,i);return a[0]*=t,a}return n.invert=function(n,i){var a=e.geoAzimuthalEqualAreaRaw.invert(n/t,i);return a[0]*=r,a},n}function U(t,e){return[t*o(e)/o(e/=2),2*g(e)]}function V(t,e,r){var i,a,o,s=100;r=void 0===r?0:+r,e=+e;do{(a=t(r))===(o=t(r+v))&&(o=a+v),r-=i=-1*v*(a-e)/(a-o)}while(s-- >0&&n(i)>v);return s<0?NaN:r}function H(t,e,r){return void 0===e&&(e=40),void 0===r&&(r=1e-12),function(i,a,o,s){var l,c,u;o=void 0===o?0:+o,s=void 0===s?0:+s;for(var f=0;fl)o-=c/=2,s-=u/=2;else{l=g;var m=(o>0?-1:1)*r,v=(s>0?-1:1)*r,y=t(o+m,s),x=t(o,s+v),b=(y[0]-h[0])/m,_=(y[1]-h[1])/m,w=(x[0]-h[0])/v,T=(x[1]-h[1])/v,k=T*b-_*w,A=(n(k)<.5?.5:1)/k;if(o+=c=(d*w-p*T)*A,s+=u=(p*_-d*b)*A,n(c)0&&(i[1]*=1+a/1.5*i[0]*i[0]),i}return e.invert=H(e),e}function G(t,e){var r,i=t*g(e),a=30;do{e-=r=(e+g(e)-i)/(1+o(e))}while(n(r)>v&&--a>0);return e/2}function Y(t,e,r){function n(n,i){return[t*n*o(i=G(r,i)),e*g(i)]}return n.invert=function(n,i){return i=S(i/e),[n/(t*o(i)),S((2*i+g(2*i))/r)]},n}B.invert=function(t,e){if((a=n(e))1e-12&&--u>0);return[t/(o(l)*(R-1/g(l))),d(e)*l]},U.invert=function(t,e){var r=2*S(e/2);return[t*o(r/2)/o(r),r]};var W=Y(w/x,w,y);var X=2.00276,Z=1.11072;function J(t,e){var r=G(y,e);return[X*t/(1/o(e)+Z/o(r)),(e+w*g(r))/X]}function K(t){var r=0,n=e.geoProjectionMutator(t),i=n(r);return i.parallel=function(t){return arguments.length?n(r=t*M):r*A},i}function Q(t,e){return[t*o(e),e]}function $(t){if(!t)return Q;var e=1/m(t);function r(r,n){var i=e+t-n,a=i?r*o(n)/i:i;return[i*g(a),e-i*o(a)]}return r.invert=function(r,n){var i=L(r*r+(n=e-n)*n),s=e+t-i;return[i/o(s)*a(r,n),s]},r}function tt(t){function e(e,r){var n=x-r,i=n?e*t*g(n)/n:n;return[n*g(i)/t,x-n*o(i)]}return e.invert=function(e,r){var n=e*t,i=x-r,o=L(n*n+i*i),s=a(n,i);return[(o?o/g(o):1)*s/t,x-o]},e}J.invert=function(t,e){var r,i,a=X*e,s=e<0?-b:b,l=25;do{i=a-w*g(s),s-=r=(g(2*s)+2*s-y*g(i))/(2*o(2*s)+2+y*o(i)*w*o(s))}while(n(r)>v&&--l>0);return i=a-w*g(s),[t*(1/o(i)+Z/o(s))/X,i]},Q.invert=function(t,e){return[t/o(e),e]};var et=Y(1,4/y,y);function rt(t,e,r,i,s,l){var c,u=o(l);if(n(t)>1||n(l)>1)c=E(r*s+e*i*u);else{var f=g(t/2),h=g(l/2);c=2*S(L(f*f+e*i*h*h))}return n(c)>v?[c,a(i*g(l),e*s-r*i*u)]:[0,0]}function nt(t,e,r){return E((t*t+e*e-r*r)/(2*t*e))}function it(t){return t-2*y*l((t+y)/(2*y))}function at(t,e,r){for(var n,i=[[t[0],t[1],g(t[1]),o(t[1])],[e[0],e[1],g(e[1]),o(e[1])],[r[0],r[1],g(r[1]),o(r[1])]],a=i[2],s=0;s<3;++s,a=n)n=i[s],a.v=rt(n[1]-a[1],a[3],a[2],n[3],n[2],n[0]-a[0]),a.point=[0,0];var l=nt(i[0].v[0],i[2].v[0],i[1].v[0]),c=nt(i[0].v[0],i[1].v[0],i[2].v[0]),u=y-l;i[2].point[1]=0,i[0].point[0]=-(i[1].point[0]=i[0].v[0]/2);var f=[i[2].point[0]=i[0].point[0]+i[2].v[0]*o(l),2*(i[0].point[1]=i[1].point[1]=i[2].v[0]*g(l))];return function(t,e){var r,n=g(e),a=o(e),s=new Array(3);for(r=0;r<3;++r){var l=i[r];if(s[r]=rt(e-l[1],l[3],l[2],a,n,t-l[0]),!s[r][0])return l.point;s[r][1]=it(s[r][1]-l.v[1])}var h=f.slice();for(r=0;r<3;++r){var p=2==r?0:r+1,d=nt(i[r].v[0],s[r][0],s[p][0]);s[r][1]<0&&(d=-d),r?1==r?(d=c-d,h[0]-=s[r][0]*o(d),h[1]-=s[r][0]*g(d)):(d=u-d,h[0]+=s[r][0]*o(d),h[1]+=s[r][0]*g(d)):(h[0]+=s[r][0]*o(d),h[1]-=s[r][0]*g(d))}return h[0]/=3,h[1]/=3,h}}function ot(t){return t[0]*=M,t[1]*=M,t}function st(t,r,n){var i=e.geoCentroid({type:\"MultiPoint\",coordinates:[t,r,n]}),a=[-i[0],-i[1]],o=e.geoRotation(a),s=at(ot(o(t)),ot(o(r)),ot(o(n)));s.invert=H(s);var l=e.geoProjection(s).rotate(a),c=l.center;return delete l.rotate,l.center=function(t){return arguments.length?c(o(t)):o.invert(c())},l.clipAngle(90)}function lt(t,e){var r=L(1-g(e));return[2/T*t*r,T*(1-r)]}function ct(t){var e=m(t);function r(t,r){return[t,(t?t/g(t):1)*(g(r)*o(t)-e*o(r))]}return r.invert=e?function(t,r){t&&(r*=g(t)/t);var n=o(t);return[t,2*a(L(n*n+e*e-r*r)-n,e-r)]}:function(t,e){return[t,S(t?e*m(t)/t:e)]},r}lt.invert=function(t,e){var r=(r=e/T-1)*r;return[r>0?t*L(y/r)/2:0,S(1-r)]};var ut=L(3);function ft(t,e){return[ut*t*(2*o(2*e/3)-1)/T,ut*T*g(e/3)]}function ht(t){var e=o(t);function r(t,r){return[t*e,g(r)/e]}return r.invert=function(t,r){return[t/e,S(r*e)]},r}function pt(t){var e=o(t);function r(t,r){return[t*e,(1+e)*m(r/2)]}return r.invert=function(t,r){return[t/e,2*i(r/(1+e))]},r}function dt(t,e){var r=L(8/(3*y));return[r*t*(1-n(e)/y),r*e]}function gt(t,e){var r=L(4-3*g(n(e)));return[2/L(6*y)*t*r,d(e)*L(2*y/3)*(2-r)]}function mt(t,e){var r=L(y*(4+y));return[2/r*t*(1+L(1-4*e*e/(y*y))),4/r*e]}function vt(t,e){var r=(2+x)*g(e);e/=2;for(var i=0,a=1/0;i<10&&n(a)>v;i++){var s=o(e);e-=a=(e+g(e)*(s+2)-r)/(2*s*(1+s))}return[2/L(y*(4+y))*t*(1+o(e)),2*L(y/(4+y))*g(e)]}function yt(t,e){return[t*(1+o(e))/L(2+y),2*e/L(2+y)]}function xt(t,e){for(var r=(1+x)*g(e),i=0,a=1/0;i<10&&n(a)>v;i++)e-=a=(e+g(e)-r)/(1+o(e));return r=L(2+y),[t*(1+o(e))/r,2*e/r]}ft.invert=function(t,e){var r=3*S(e/(ut*T));return[T*t/(ut*(2*o(2*r/3)-1)),r]},dt.invert=function(t,e){var r=L(8/(3*y)),i=e/r;return[t/(r*(1-n(i)/y)),i]},gt.invert=function(t,e){var r=2-n(e)/L(2*y/3);return[t*L(6*y)/(2*r),d(e)*S((4-r*r)/3)]},mt.invert=function(t,e){var r=L(y*(4+y))/2;return[t*r/(1+L(1-e*e*(4+y)/(4*y))),e*r/2]},vt.invert=function(t,e){var r=e*L((4+y)/y)/2,n=S(r),i=o(n);return[t/(2/L(y*(4+y))*(1+i)),S((n+r*(i+2))/(2+x))]},yt.invert=function(t,e){var r=L(2+y),n=e*r/2;return[r*t/(1+o(n)),n]},xt.invert=function(t,e){var r=1+x,n=L(r/2);return[2*t*n/(1+o(e*=n)),S((e+g(e))/r)]};var bt=3+2*w;function _t(t,e){var r=g(t/=2),n=o(t),a=L(o(e)),s=o(e/=2),l=g(e)/(s+w*n*a),u=L(2/(1+l*l)),f=L((w*s+(n+r)*a)/(w*s+(n-r)*a));return[bt*(u*(f-1/f)-2*c(f)),bt*(u*l*(f+1/f)-2*i(l))]}_t.invert=function(t,e){if(!(r=D.invert(t/1.2,1.065*e)))return null;var r,a=r[0],s=r[1],l=20;t/=bt,e/=bt;do{var h=a/2,p=s/2,d=g(h),m=o(h),y=g(p),b=o(p),T=o(s),k=L(T),A=y/(b+w*m*k),M=A*A,S=L(2/(1+M)),E=(w*b+(m+d)*k)/(w*b+(m-d)*k),C=L(E),P=C-1/C,I=C+1/C,O=S*P-2*c(C)-t,z=S*A*I-2*i(A)-e,R=y&&_*k*d*M/y,F=(w*m*b+k)/(2*(b+w*m*k)*(b+w*m*k)*k),B=-.5*A*S*S*S,N=B*R,j=B*F,U=(U=2*b+w*k*(m-d))*U*C,V=(w*m*b*k+T)/U,H=-w*d*y/(k*U),q=P*N-2*V/C+S*(V+V/E),G=P*j-2*H/C+S*(H+H/E),Y=A*I*N-2*R/(1+M)+S*I*R+S*A*(V-V/E),W=A*I*j-2*F/(1+M)+S*I*F+S*A*(H-H/E),X=G*Y-W*q;if(!X)break;var Z=(z*G-O*W)/X,J=(O*Y-z*q)/X;a-=Z,s=u(-x,f(x,s-J))}while((n(Z)>v||n(J)>v)&&--l>0);return n(n(s)-x)s){var d=L(h),m=a(f,u),b=i*p(m/i),_=m-b,w=t*o(_),T=(t*g(_)-_*g(w))/(x-w),k=Lt(_,T),A=(y-t)/Ct(k,w,y);u=d;var M,S=50;do{u-=M=(t+Ct(k,w,u)*A-d)/(k(u)*A)}while(n(M)>v&&--S>0);f=_*g(u),us){var u=L(c),f=a(l,r),h=i*p(f/i),d=f-h;r=u*o(d),l=u*g(d);for(var m=r-x,v=g(r),b=l/v,_=rv||n(p)>v)&&--x>0);return[d,m]},u}Tt.invert=function(t,e){var r=e/(1+wt);return[t&&t/(wt*L(1-r*r)),2*i(r)]},kt.invert=function(t,e){var r=i(e/T),n=o(r),a=2*r;return[t*T/2/(o(a)*n*n),a]};var It=Pt(2.8284,-1.6988,.75432,-.18071,1.76003,-.38914,.042555);var Ot=Pt(2.583819,-.835827,.170354,-.038094,1.543313,-.411435,.082742);var zt=Pt(5/6*y,-.62636,-.0344,0,1.3493,-.05524,0,.045);function Dt(t,e){var r=t*t,n=e*e;return[t*(1-.162388*n)*(.87-952426e-9*r*r),e*(1+n/12)]}Dt.invert=function(t,e){var r,i=t,a=e,o=50;do{var s=a*a;a-=r=(a*(1+s/12)-e)/(1+s/4)}while(n(r)>v&&--o>0);o=50,t/=1-.162388*s;do{var l=(l=i*i)*l;i-=r=(i*(.87-952426e-9*l)-t)/(.87-.00476213*l)}while(n(r)>v&&--o>0);return[i,a]};var Rt=Pt(2.6516,-.76534,.19123,-.047094,1.36289,-.13965,.031762);function Ft(t){var e=t(x,0)[0]-t(-x,0)[0];function r(r,n){var i=r>0?-.5:.5,a=t(r+i*y,n);return a[0]-=i*e,a}return t.invert&&(r.invert=function(r,n){var i=r>0?-.5:.5,a=t.invert(r+i*e,n),o=a[0]-i*y;return o<-y?o+=2*y:o>y&&(o-=2*y),a[0]=o,a}),r}function Bt(t,e){var r=d(t),i=d(e),s=o(e),l=o(t)*s,c=g(t)*s,u=g(i*e);t=n(a(c,u)),e=S(l),n(t-x)>v&&(t%=x);var f=function(t,e){if(e===x)return[0,0];var r,i,a=g(e),s=a*a,l=s*s,c=1+l,u=1+3*l,f=1-l,h=S(1/L(c)),p=f+s*c*h,d=(1-a)/p,m=L(d),b=d*c,_=L(b),w=m*f;if(0===t)return[0,-(w+s*_)];var T,k=o(e),A=1/k,M=2*a*k,E=(-p*k-(-3*s+h*u)*M*(1-a))/(p*p),C=-A*M,P=-A*(s*c*E+d*u*M),I=-2*A*(f*(.5*E/m)-2*s*m*M),O=4*t/y;if(t>.222*y||e.175*y){if(r=(w+s*L(b*(1+l)-w*w))/(1+l),t>y/4)return[r,r];var z=r,D=.5*r;r=.5*(D+z),i=50;do{var R=L(b-r*r),F=r*(I+C*R)+P*S(r/_)-O;if(!F)break;F<0?D=r:z=r,r=.5*(D+z)}while(n(z-D)>v&&--i>0)}else{r=v,i=25;do{var B=r*r,N=L(b-B),j=I+C*N,U=r*j+P*S(r/_)-O,V=j+(P-C*B)/N;r-=T=N?U/V:0}while(n(T)>v&&--i>0)}return[r,-w-s*L(b-r*r)]}(t>y/4?x-t:t,e);return t>y/4&&(u=f[0],f[0]=-f[1],f[1]=-u),f[0]*=r,f[1]*=-i,f}function Nt(t,e){var r,a,l,c,u,f;if(e=1-v)return r=(1-e)/4,l=1/(a=P(t)),[(c=((f=s(2*(f=t)))-1)/(f+1))+r*((u=a*C(t))-t)/(a*a),l-r*c*l*(u-t),l+r*c*l*(u+t),2*i(s(t))-x+r*(u-t)/a];var h=[1,0,0,0,0,0,0,0,0],p=[L(e),0,0,0,0,0,0,0,0],d=0;for(a=L(1-e),u=1;n(p[d]/h[d])>v&&d<8;)r=h[d++],p[d]=(r-a)/2,h[d]=(r+a)/2,a=L(r*a),u*=2;l=u*h[d]*t;do{l=(S(c=p[d]*g(a=l)/h[d])+l)/2}while(--d);return[g(l),c=o(l),c/o(l-a),l]}function jt(t,e){if(!e)return t;if(1===e)return c(m(t/2+b));for(var r=1,a=L(1-e),o=L(e),s=0;n(o)>v;s++){if(t%y){var l=i(a*m(t)/r);l<0&&(l+=y),t+=l+~~(t/y)*y}else t+=t;o=(r+a)/2,a=L(r*a),o=((r=o)-a)/2}return t/(h(2,s)*r)}function Ut(t,e){var r=(w-1)/(w+1),l=L(1-r*r),u=jt(x,l*l),f=c(m(y/4+n(e)/2)),h=s(-1*f)/L(r),p=function(t,e){var r=t*t,n=e+1,i=1-r-e*e;return[.5*((t>=0?x:-x)-a(i,2*t)),-.25*c(i*i+4*r)+.5*c(n*n+r)]}(h*o(-1*t),h*g(-1*t)),v=function(t,e,r){var a=n(t),o=C(n(e));if(a){var s=1/g(a),l=1/(m(a)*m(a)),c=-(l+r*(o*o*s*s)-1+r),u=(-c+L(c*c-4*((r-1)*l)))/2;return[jt(i(1/L(u)),r)*d(t),jt(i(L((u/l-1)/r)),1-r)*d(e)]}return[0,jt(i(o),1-r)*d(e)]}(p[0],p[1],l*l);return[-v[1],(e>=0?1:-1)*(.5*u-v[0])]}function Vt(t){var e=g(t),r=o(t),i=Ht(t);function s(t,a){var s=i(t,a);t=s[0],a=s[1];var l=g(a),c=o(a),u=o(t),f=E(e*l+r*c*u),h=g(f),p=n(h)>v?f/h:1;return[p*r*g(t),(n(t)>x?p:-p)*(e*c-r*l*u)]}return i.invert=Ht(-t),s.invert=function(t,r){var n=L(t*t+r*r),s=-g(n),l=o(n),c=n*l,u=-r*s,f=n*e,h=L(c*c+u*u-f*f),p=a(c*f+u*h,u*f-c*h),d=(n>x?-1:1)*a(t*s,n*o(p)*l+r*g(p)*s);return i.invert(d,p)},s}function Ht(t){var e=g(t),r=o(t);return function(t,n){var i=o(n),s=o(t)*i,l=g(t)*i,c=g(n);return[a(l,s*r-c*e),S(c*r+s*e)]}}Bt.invert=function(t,e){n(t)>1&&(t=2*d(t)-t),n(e)>1&&(e=2*d(e)-e);var r=d(t),i=d(e),s=-r*t,l=-i*e,c=l/s<1,u=function(t,e){var r=0,i=1,a=.5,s=50;for(;;){var l=a*a,c=L(a),u=S(1/L(1+l)),f=1-l+a*(1+l)*u,h=(1-c)/f,p=L(h),d=h*(1+l),g=p*(1-l),m=L(d-t*t),v=e+g+a*m;if(n(i-r)<1e-12||0==--s||0===v)break;v>0?r=a:i=a,a=.5*(r+i)}if(!s)return null;var x=S(c),b=o(x),_=1/b,w=2*c*b,T=(-f*b-(-3*a+u*(1+3*l))*w*(1-c))/(f*f);return[y/4*(t*(-2*_*(.5*T/p*(1-l)-2*a*p*w)+-_*w*m)+-_*(a*(1+l)*T+h*(1+3*l)*w)*S(t/L(d))),x]}(c?l:s,c?s:l),f=u[0],h=u[1],p=o(h);return c&&(f=-x-f),[r*(a(g(f)*p,-g(h))+y),i*S(o(f)*p)]},Ut.invert=function(t,e){var r,n,o,l,u,f,h=(w-1)/(w+1),p=L(1-h*h),d=jt(x,p*p),g=(n=-t,o=p*p,(r=.5*d-e)?(l=Nt(r,o),n?(f=(u=Nt(n,1-o))[1]*u[1]+o*l[0]*l[0]*u[0]*u[0],[[l[0]*u[2]/f,l[1]*l[2]*u[0]*u[1]/f],[l[1]*u[1]/f,-l[0]*l[2]*u[0]*u[2]/f],[l[2]*u[1]*u[2]/f,-o*l[0]*l[1]*u[0]/f]]):[[l[0],0],[l[1],0],[l[2],0]]):[[0,(u=Nt(n,1-o))[0]/u[1]],[1/u[1],0],[u[2]/u[1],0]]),m=function(t,e){var r=e[0]*e[0]+e[1]*e[1];return[(t[0]*e[0]+t[1]*e[1])/r,(t[1]*e[0]-t[0]*e[1])/r]}(g[0],g[1]);return[a(m[1],m[0])/-1,2*i(s(-.5*c(h*m[0]*m[0]+h*m[1]*m[1])))-x]};var qt=S(1-1/3)*A,Gt=ht(0);function Yt(t){var e=qt*M,r=lt(y,e)[0]-lt(-y,e)[0],i=Gt(0,e)[1],a=lt(0,e)[1],o=T-a,s=k/t,c=4/k,h=i+o*o*4/k;function p(p,d){var g,m=n(d);if(m>e){var v=f(t-1,u(0,l((p+y)/s)));(g=lt(p+=y*(t-1)/t-v*s,m))[0]=g[0]*k/r-k*(t-1)/(2*t)+v*k/t,g[1]=i+4*(g[1]-a)*o/k,d<0&&(g[1]=-g[1])}else g=Gt(p,d);return g[0]*=c,g[1]/=h,g}return p.invert=function(e,p){e/=c;var d=n(p*=h);if(d>i){var g=f(t-1,u(0,l((e+y)/s)));e=(e+y*(t-1)/t-g*s)*r/k;var m=lt.invert(e,.25*(d-i)*k/o+a);return m[0]-=y*(t-1)/t-g*s,p<0&&(m[1]=-m[1]),m}return Gt.invert(e,p)},p}function Wt(t,e){return[t,1&e?90-v:qt]}function Xt(t,e){return[t,1&e?-90+v:-qt]}function Zt(t){return[t[0]*(1-v),t[1]]}function Jt(t){var e,r=1+t,i=S(g(1/r)),s=2*L(y/(e=y+4*i*r)),l=.5*s*(r+L(t*(2+t))),c=t*t,u=r*r;function f(f,h){var p,d,m=1-g(h);if(m&&m<2){var v,b=x-h,_=25;do{var w=g(b),T=o(b),k=i+a(w,r-T),A=1+u-2*r*T;b-=v=(b-c*i-r*w+A*k-.5*m*e)/(2*r*w*k)}while(n(v)>1e-12&&--_>0);p=s*L(A),d=f*k/y}else p=s*(t+m),d=f*i/y;return[p*g(d),l-p*o(d)]}return f.invert=function(t,n){var o=t*t+(n-=l)*n,f=(1+u-o/(s*s))/(2*r),h=E(f),p=g(h),d=i+a(p,r-f);return[S(t/L(o))*y/d,S(1-2*(h-c*i-r*p+(1+u-2*r*f)*d)/e)]},f}function Kt(t,e){return e>-.7109889596207567?((t=W(t,e))[1]+=.0528035274542,t):Q(t,e)}function Qt(t,e){return n(e)>.7109889596207567?((t=W(t,e))[1]-=e>0?.0528035274542:-.0528035274542,t):Q(t,e)}function $t(t,e,r,n){var i=L(4*y/(2*r+(1+t-e/2)*g(2*r)+(t+e)/2*g(4*r)+e/2*g(6*r))),a=L(n*g(r)*L((1+t*o(2*r)+e*o(4*r))/(1+t+e))),s=r*c(1);function l(r){return L(1+t*o(2*r)+e*o(4*r))}function c(n){var i=n*r;return(2*i+(1+t-e/2)*g(2*i)+(t+e)/2*g(4*i)+e/2*g(6*i))/r}function u(t){return l(t)*g(t)}var f=function(t,e){var n=r*V(c,s*g(e)/r,e/y);isNaN(n)&&(n=r*d(e));var u=i*l(n);return[u*a*t/y*o(n),u/a*g(n)]};return f.invert=function(t,e){var n=V(u,e*a/i);return[t*y/(o(n)*i*a*l(n)),S(r*c(n/r)/s)]},0===r&&(i=L(n/y),(f=function(t,e){return[t*i,g(e)/i]}).invert=function(t,e){return[t/i,S(e*i)]}),f}function te(t,e,r,n,i){void 0===n&&(n=1e-8),void 0===i&&(i=20);var a=t(e),o=t(.5*(e+r)),s=t(r);return function t(e,r,n,i,a,o,s,l,c,u,f){if(f.nanEncountered)return NaN;var h,p,d,g,m,v,y,x,b,_;if(p=e(r+.25*(h=n-r)),d=e(n-.25*h),isNaN(p))f.nanEncountered=!0;else{if(!isNaN(d))return _=((v=(g=h*(i+4*p+a)/12)+(m=h*(a+4*d+o)/12))-s)/15,u>c?(f.maxDepthCount++,v+_):Math.abs(_)t?r=n:e=n,n=e+r>>1}while(n>e);var i=c[n+1]-c[n];return i&&(i=(t-c[n+1])/i),(n+1+i)/s}var p=2*f(1)/y*o/r,m=function(t,e){var r=f(n(g(e))),a=i(r)*t;return r/=p,[a,e>=0?r:-r]};return m.invert=function(t,e){var r;return n(e*=p)<1&&(r=d(e)*S(a(n(e))*o)),[t/i(n(e)),r]},m}function re(t,e){return n(t[0]-e[0])=0;--l)n=(e=t[1][l])[0][0],i=e[0][1],a=e[1][1],o=e[2][0],s=e[2][1],c.push(ne([[o-v,s-v],[o-v,a+v],[n+v,a+v],[n+v,i-v]],30));return{type:\"Polygon\",coordinates:[r.merge(c)]}}function ae(t,r,n){var i,a;function o(e,n){for(var i=n<0?-1:1,a=r[+(n<0)],o=0,s=a.length-1;oa[o][2][0];++o);var l=t(e-a[o][1][0],n);return l[0]+=t(a[o][1][0],i*n>i*a[o][0][1]?a[o][0][1]:n)[0],l}n?o.invert=n(o):t.invert&&(o.invert=function(e,n){for(var i=a[+(n<0)],s=r[+(n<0)],l=0,c=i.length;lo&&(r=a,a=o,o=r),[[n,a],[i,o]]}))})),s):r.map((function(t){return t.map((function(t){return[[t[0][0]*A,t[0][1]*A],[t[1][0]*A,t[1][1]*A],[t[2][0]*A,t[2][1]*A]]}))}))},null!=r&&s.lobes(r),s}Kt.invert=function(t,e){return e>-.7109889596207567?W.invert(t,e-.0528035274542):Q.invert(t,e)},Qt.invert=function(t,e){return n(e)>.7109889596207567?W.invert(t,e+(e>0?.0528035274542:-.0528035274542)):Q.invert(t,e)};var oe=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];var se=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];var le=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];var ce=[[[[-180,0],[-90,90],[0,0]],[[0,0],[90,90],[180,0]]],[[[-180,0],[-90,-90],[0,0]],[[0,0],[90,-90],[180,0]]]];var ue=[[[[-180,35],[-30,90],[0,35]],[[0,35],[30,90],[180,35]]],[[[-180,-10],[-102,-90],[-65,-10]],[[-65,-10],[5,-90],[77,-10]],[[77,-10],[103,-90],[180,-10]]]];var fe=[[[[-180,0],[-110,90],[-40,0]],[[-40,0],[0,90],[40,0]],[[40,0],[110,90],[180,0]]],[[[-180,0],[-110,-90],[-40,0]],[[-40,0],[0,-90],[40,0]],[[40,0],[110,-90],[180,0]]]];function he(t,e){return[3/k*t*L(y*y/3-e*e),e]}function pe(t){function e(e,r){if(n(n(r)-x)2)return null;var o=(e/=2)*e,s=(r/=2)*r,l=2*r/(1+o+s);return l=h((1+l)/(1-l),1/t),[a(2*e,1-o-s)/t,S((l-1)/(l+1))]},e}he.invert=function(t,e){return[k/3*t/L(y*y/3-e*e),e]};var de=y/w;function ge(t,e){return[t*(1+L(o(e)))/2,e/(o(e/2)*o(t/6))]}function me(t,e){var r=t*t,n=e*e;return[t*(.975534+n*(-.0143059*r-.119161+-.0547009*n)),e*(1.00384+r*(.0802894+-.02855*n+199025e-9*r)+n*(.0998909+-.0491032*n))]}function ve(t,e){return[g(t)/o(e),m(e)*o(t)]}function ye(t){var e=o(t),r=m(b+t/2);function i(i,a){var o=a-t,s=n(o)=0;)h=(f=t[u])[0]+l*(i=h)-c*p,p=f[1]+l*p+c*i;return[h=l*(i=h)-c*p,p=l*p+c*i]}return r.invert=function(r,s){var l=20,c=r,u=s;do{for(var f,h=e,p=t[h],d=p[0],m=p[1],v=0,y=0;--h>=0;)v=d+c*(f=v)-u*y,y=m+c*y+u*f,d=(p=t[h])[0]+c*(f=d)-u*m,m=p[1]+c*m+u*f;var x,b,_=(v=d+c*(f=v)-u*y)*v+(y=m+c*y+u*f)*y;c-=x=((d=c*(f=d)-u*m-r)*v+(m=c*m+u*f-s)*y)/_,u-=b=(m*v-d*y)/_}while(n(x)+n(b)>1e-12&&--l>0);if(l){var w=L(c*c+u*u),T=2*i(.5*w),k=g(T);return[a(c*k,w*o(T)),w?S(u*k/w):0]}},r}ge.invert=function(t,e){var r=n(t),i=n(e),a=v,s=x;iv||n(b)>v)&&--a>0);return a&&[r,i]},ve.invert=function(t,e){var r=t*t,n=e*e+1,i=r+n,a=t?_*L((i-L(i*i-4*r))/r):1/L(n);return[S(t*a),d(e)*E(a)]},xe.invert=function(t,e){return[t,2.5*i(s(.8*e))-.625*y]};var _e=[[.9972523,0],[.0052513,-.0041175],[.0074606,.0048125],[-.0153783,-.1968253],[.0636871,-.1408027],[.3660976,-.2937382]],we=[[.98879,0],[0,0],[-.050909,0],[0,0],[.075528,0]],Te=[[.984299,0],[.0211642,.0037608],[-.1036018,-.0575102],[-.0329095,-.0320119],[.0499471,.1223335],[.026046,.0899805],[7388e-7,-.1435792],[.0075848,-.1334108],[-.0216473,.0776645],[-.0225161,.0853673]],ke=[[.9245,0],[0,0],[.01943,0]],Ae=[[.721316,0],[0,0],[-.00881625,-.00617325]];function Me(t,r){var n=e.geoProjection(be(t)).rotate(r).clipAngle(90),i=e.geoRotation(r),a=n.center;return delete n.rotate,n.center=function(t){return arguments.length?a(i(t)):i.invert(a())},n}var Se=L(6),Ee=L(7);function Le(t,e){var r=S(7*g(e)/(3*Se));return[Se*t*(2*o(2*r/3)-1)/Ee,9*g(r/3)/Ee]}function Ce(t,e){for(var r,i=(1+_)*g(e),a=e,s=0;s<25&&(a-=r=(g(a/2)+g(a)-i)/(.5*o(a/2)+o(a)),!(n(r)1e-12&&--l>0);return[t/(.84719-.13063*(i=s*s)+(o=i*(a=i*i))*o*(.05494*i-.04515-.02326*a+.00331*o)),s]},Oe.invert=function(t,e){for(var r=e/2,i=0,a=1/0;i<10&&n(a)>v;++i){var s=o(e/2);e-=a=(e-m(e/2)-r)/(1-.5/(s*s))}return[2*t/(1+o(e)),e]};var ze=[[[[-180,0],[-90,90],[0,0]],[[0,0],[90,90],[180,0]]],[[[-180,0],[-90,-90],[0,0]],[[0,0],[90,-90],[180,0]]]];function De(t,e){var r=g(e),i=o(e),a=d(t);if(0===t||n(e)===x)return[0,e];if(0===e)return[t,0];if(n(t)===x)return[t*i,x*r];var s=y/(2*t)-2*t/y,l=2*e/y,c=(1-l*l)/(r-l),u=s*s,f=c*c,h=1+u/f,p=1+f/u,m=(s*r/c-s/2)/h,v=(f*r/u+c/2)/p,b=v*v-(f*r*r/u+c*r-1)/p;return[x*(m+L(m*m+i*i/h)*a),x*(v+L(b<0?0:b)*d(-e*s)*a)]}De.invert=function(t,e){var r=(t/=x)*t,n=r+(e/=x)*e,i=y*y;return[t?(n-1+L((1-n)*(1-n)+4*r))/(2*t)*x:0,V((function(t){return n*(y*g(t)-2*t)*y+4*t*t*(e-g(t))+2*y*t-i*e}),0)]};function Re(t,e){var r=e*e;return[t,e*(1.0148+r*r*(.23185+r*(.02406*r-.14499)))]}function Fe(t,e){if(n(e)=0;)if(n=e[s],r[0]===n[0]&&r[1]===n[1]){if(a)return[a,r];a=r}}}(e.face,r.face),i=Be(n.map(r.project),n.map(e.project));e.transform=r.transform?Ne(r.transform,i):i;for(var a=r.edges,o=0,s=a.length;o1.790857183?e=1.790857183:e<-1.790857183&&(e=-1.790857183);var r,i=e;do{var a=i*i;i-=r=(i*(1.0148+a*a*(.23185+a*(.02406*a-.14499)))-e)/(1.0148+a*a*(5*.23185+a*(.21654*a-1.01493)))}while(n(r)>v);return[t,i]},Fe.invert=function(t,e){if(n(e)v&&--s>0);return l=m(a),[(n(e)n^p>n&&r<(h-c)*(n-u)/(p-u)+c&&(i=!i)}return i}(t[0],r))return t.push(e),!0}))||t.push([e])})),nr=[],t.length?t.length>1?{type:\"MultiPolygon\",coordinates:t}:{type:\"Polygon\",coordinates:t[0]}:null}};function sr(t){var r=t(x,0)[0]-t(-x,0)[0];function i(e,i){var a=n(e)0?e-y:e+y,i),s=(o[0]-o[1])*_,l=(o[0]+o[1])*_;if(a)return[s,l];var c=r*_,u=s>0^l>0?-1:1;return[u*s-d(l)*c,u*l-d(s)*c]}return t.invert&&(i.invert=function(e,i){var a=(e+i)*_,o=(i-e)*_,s=n(a)<.5*r&&n(o)<.5*r;if(!s){var l=r*_,c=a>0^o>0?-1:1,u=-c*e+(o>0?1:-1)*l,f=-c*i+(a>0?1:-1)*l;a=(-u-f)*_,o=(u-f)*_}var h=t.invert(a,o);return s||(h[0]+=a>0?y:-y),h}),e.geoProjection(i).rotate([-90,-90,45]).clipAngle(179.999)}function lr(){return sr(Ut).scale(111.48)}function cr(t){var e=g(t);function r(r,n){var a=e?m(r*e/2)/e:r/2;if(!n)return[2*a,-t];var s=2*i(a*g(n)),l=1/m(n);return[g(s)*l,n+(1-o(s))*l-t]}return r.invert=function(r,a){if(n(a+=t)v&&--u>0);var d=r*(f=m(c)),x=m(n(a)0?x:-x)*(h+o*(d-c)/2+o*o*(d-2*h+c)/2)]}function hr(t,e){var r=function(t){function e(e,r){var n=o(r),i=(t-1)/(t-n*o(e));return[i*n*g(e),i*g(r)]}return e.invert=function(e,r){var n=e*e+r*r,i=L(n),o=(t-L(1-n*(t+1)/(t-1)))/((t-1)/i+i/(t-1));return[a(e*o,i*L(1-o*o)),i?S(r*o/i):0]},e}(t);if(!e)return r;var n=o(e),i=g(e);function s(e,a){var o=r(e,a),s=o[1],l=s*i/(t-1)+n;return[o[0]*n/l,s/l]}return s.invert=function(e,a){var o=(t-1)/(t-1-a*i);return r.invert(o*e,o*a*n)},s}ur.forEach((function(t){t[1]*=1.0144})),fr.invert=function(t,e){var r=e/x,i=90*r,a=f(18,n(i/5)),o=u(0,l(a));do{var s=ur[o][1],c=ur[o+1][1],h=ur[f(19,o+2)][1],p=h-s,d=h-2*c+s,g=2*(n(r)-c)/p,m=d/p,v=g*(1-m*g*(1-2*m*g));if(v>=0||1===o){i=(e>=0?5:-5)*(v+a);var y,b=50;do{v=(a=f(18,n(i)/5))-(o=l(a)),s=ur[o][1],c=ur[o+1][1],h=ur[f(19,o+2)][1],i-=(y=(e>=0?x:-x)*(c+v*(h-s)/2+v*v*(h-2*c+s)/2)-e)*A}while(n(y)>1e-12&&--b>0);break}}while(--o>=0);var _=ur[o][0],w=ur[o+1][0],T=ur[f(19,o+2)][0];return[t/(w+v*(T-_)/2+v*v*(T-2*w+_)/2),i*M]};var pr=-179.9999,dr=179.9999,gr=-89.9999;function mr(t){return t.length>0}function vr(t){return-90===t||90===t?[0,t]:[-180,(e=t,Math.floor(1e4*e)/1e4)];var e}function yr(t){var e=t[0],r=t[1],n=!1;return e<=pr?(e=-180,n=!0):e>=dr&&(e=180,n=!0),r<=gr?(r=-90,n=!0):r>=89.9999&&(r=90,n=!0),n?[e,r]:t}function xr(t){return t.map(yr)}function br(t,e,r){for(var n=0,i=t.length;n=dr||u<=gr||u>=89.9999){a[o]=yr(l);for(var f=o+1;fpr&&pgr&&d<89.9999)break}if(f===o+1)continue;if(o){var g={index:-1,polygon:e,ring:a.slice(0,o+1)};g.ring[g.ring.length-1]=vr(u),r[r.length-1]=g}else r.pop();if(f>=s)break;r.push({index:-1,polygon:e,ring:a=a.slice(f-1)}),a[0]=vr(a[0][1]),o=-1,s=a.length}}}}function _r(t){var e,r,n,i,a,o,s=t.length,l={},c={};for(e=0;e0?y-l:l)*A],u=e.geoProjection(t(s)).rotate(c),f=e.geoRotation(c),h=u.center;return delete u.rotate,u.center=function(t){return arguments.length?h(f(t)):f.invert(h())},u.clipAngle(90)}function Mr(t){var r=o(t);function n(t,n){var i=e.geoGnomonicRaw(t,n);return i[0]*=r,i}return n.invert=function(t,n){return e.geoGnomonicRaw.invert(t/r,n)},n}function Sr(t,e){return Ar(Mr,t,e)}function Er(t){if(!(t*=2))return e.geoAzimuthalEquidistantRaw;var r=-t/2,n=-r,i=t*t,s=m(n),l=.5/g(n);function c(e,a){var s=E(o(a)*o(e-r)),l=E(o(a)*o(e-n));return[((s*=s)-(l*=l))/(2*t),(a<0?-1:1)*L(4*i*l-(i-s+l)*(i-s+l))/(2*t)]}return c.invert=function(t,e){var i,c,u=e*e,f=o(L(u+(i=t+r)*i)),h=o(L(u+(i=t+n)*i));return[a(c=f-h,i=(f+h)*s),(e<0?-1:1)*E(L(i*i+c*c)*l)]},c}function Lr(t,e){return Ar(Er,t,e)}function Cr(t,e){if(n(e)v&&--l>0);return[d(t)*(L(a*a+4)+a)*y/4,x*s]};var Rr=4*y+3*L(3),Fr=2*L(2*y*L(3)/Rr),Br=Y(Fr*L(3)/y,Fr,Rr/6);function Nr(t,e){return[t*L(1-3*e*e/(y*y)),e]}function jr(t,e){var r=o(e),n=o(t)*r,i=1-n,s=o(t=a(g(t)*r,-g(e))),l=g(t);return[l*(r=L(1-n*n))-s*i,-s*r-l*i]}function Ur(t,e){var r=O(t,e);return[(r[0]+t/x)/2,(r[1]+e)/2]}Nr.invert=function(t,e){return[t/L(1-3*e*e/(y*y)),e]},jr.invert=function(t,e){var r=(t*t+e*e)/-2,n=L(-r*(2+r)),i=e*r+t*n,o=t*r-e*n,s=L(o*o+i*i);return[a(n*i,s*(1+r)),s?-S(n*o/s):0]},Ur.invert=function(t,e){var r=t,i=e,a=25;do{var s,l=o(i),c=g(i),u=g(2*i),f=c*c,h=l*l,p=g(r),d=o(r/2),m=g(r/2),y=m*m,b=1-h*d*d,_=b?E(l*d)*L(s=1/b):s=0,w=.5*(2*_*l*m+r/x)-t,T=.5*(_*c+i)-e,k=.5*s*(h*y+_*l*d*f)+.5/x,A=s*(p*u/4-_*c*m),M=.125*s*(u*m-_*c*h*p),S=.5*s*(f*d+_*y*l)+.5,C=A*M-S*k,P=(T*A-w*S)/C,I=(w*M-T*k)/C;r-=P,i-=I}while((n(P)>v||n(I)>v)&&--a>0);return[r,i]},t.geoNaturalEarth=e.geoNaturalEarth1,t.geoNaturalEarthRaw=e.geoNaturalEarth1Raw,t.geoAiry=function(){var t=x,r=e.geoProjectionMutator(I),n=r(t);return n.radius=function(e){return arguments.length?r(t=e*M):t*A},n.scale(179.976).clipAngle(147)},t.geoAiryRaw=I,t.geoAitoff=function(){return e.geoProjection(O).scale(152.63)},t.geoAitoffRaw=O,t.geoArmadillo=function(){var t=20*M,r=t>=0?1:-1,n=m(r*t),i=e.geoProjectionMutator(z),s=i(t),l=s.stream;return s.parallel=function(e){return arguments.length?(n=m((r=(t=e*M)>=0?1:-1)*t),i(t)):t*A},s.stream=function(e){var i=s.rotate(),c=l(e),u=(s.rotate([0,0]),l(e)),f=s.precision();return s.rotate(i),c.sphere=function(){u.polygonStart(),u.lineStart();for(var e=-180*r;r*e<180;e+=90*r)u.point(e,90*r);if(t)for(;r*(e-=3*r*f)>=-180;)u.point(e,r*-a(o(e*M/2),n)*A);u.lineEnd(),u.polygonEnd()},c},s.scale(218.695).center([0,28.0974])},t.geoArmadilloRaw=z,t.geoAugust=function(){return e.geoProjection(D).scale(66.1603)},t.geoAugustRaw=D,t.geoBaker=function(){return e.geoProjection(B).scale(112.314)},t.geoBakerRaw=B,t.geoBerghaus=function(){var t=5,r=e.geoProjectionMutator(N),n=r(t),i=n.stream,s=-o(.01*M),l=g(.01*M);return n.lobes=function(e){return arguments.length?r(t=+e):t},n.stream=function(e){var r=n.rotate(),c=i(e),u=(n.rotate([0,0]),i(e));return n.rotate(r),c.sphere=function(){u.polygonStart(),u.lineStart();for(var e=0,r=360/t,n=2*y/t,i=90-180/t,c=x;e=0;)t.point((e=r[i])[0],e[1]);t.lineEnd(),t.polygonEnd()},t},n.scale(79.4187).parallel(45).clipAngle(179.999)},t.geoHammerRetroazimuthalRaw=Vt,t.geoHealpix=function(){var t=4,n=e.geoProjectionMutator(Yt),i=n(t),a=i.stream;return i.lobes=function(e){return arguments.length?n(t=+e):t},i.stream=function(n){var o=i.rotate(),s=a(n),l=(i.rotate([0,0]),a(n));return i.rotate(o),s.sphere=function(){var n,i;e.geoStream((n=180/t,i=[].concat(r.range(-180,180+n/2,n).map(Wt),r.range(180,-180-n/2,-n).map(Xt)),{type:\"Polygon\",coordinates:[180===n?i.map(Zt):i]}),l)},s},i.scale(239.75)},t.geoHealpixRaw=Yt,t.geoHill=function(){var t=1,r=e.geoProjectionMutator(Jt),n=r(t);return n.ratio=function(e){return arguments.length?r(t=+e):t},n.scale(167.774).center([0,18.67])},t.geoHillRaw=Jt,t.geoHomolosine=function(){return e.geoProjection(Qt).scale(152.63)},t.geoHomolosineRaw=Qt,t.geoHufnagel=function(){var t=1,r=0,n=45*M,i=2,a=e.geoProjectionMutator($t),o=a(t,r,n,i);return o.a=function(e){return arguments.length?a(t=+e,r,n,i):t},o.b=function(e){return arguments.length?a(t,r=+e,n,i):r},o.psiMax=function(e){return arguments.length?a(t,r,n=+e*M,i):n*A},o.ratio=function(e){return arguments.length?a(t,r,n,i=+e):i},o.scale(180.739)},t.geoHufnagelRaw=$t,t.geoHyperelliptical=function(){var t=0,r=2.5,n=1.183136,i=e.geoProjectionMutator(ee),a=i(t,r,n);return a.alpha=function(e){return arguments.length?i(t=+e,r,n):t},a.k=function(e){return arguments.length?i(t,r=+e,n):r},a.gamma=function(e){return arguments.length?i(t,r,n=+e):n},a.scale(152.63)},t.geoHyperellipticalRaw=ee,t.geoInterrupt=ae,t.geoInterruptedBoggs=function(){return ae(J,oe).scale(160.857)},t.geoInterruptedHomolosine=function(){return ae(Qt,se).scale(152.63)},t.geoInterruptedMollweide=function(){return ae(W,le).scale(169.529)},t.geoInterruptedMollweideHemispheres=function(){return ae(W,ce).scale(169.529).rotate([20,0])},t.geoInterruptedSinuMollweide=function(){return ae(Kt,ue,H).rotate([-20,-55]).scale(164.263).center([0,-5.4036])},t.geoInterruptedSinusoidal=function(){return ae(Q,fe).scale(152.63).rotate([-20,0])},t.geoKavrayskiy7=function(){return e.geoProjection(he).scale(158.837)},t.geoKavrayskiy7Raw=he,t.geoLagrange=function(){var t=.5,r=e.geoProjectionMutator(pe),n=r(t);return n.spacing=function(e){return arguments.length?r(t=+e):t},n.scale(124.75)},t.geoLagrangeRaw=pe,t.geoLarrivee=function(){return e.geoProjection(ge).scale(97.2672)},t.geoLarriveeRaw=ge,t.geoLaskowski=function(){return e.geoProjection(me).scale(139.98)},t.geoLaskowskiRaw=me,t.geoLittrow=function(){return e.geoProjection(ve).scale(144.049).clipAngle(89.999)},t.geoLittrowRaw=ve,t.geoLoximuthal=function(){return K(ye).parallel(40).scale(158.837)},t.geoLoximuthalRaw=ye,t.geoMiller=function(){return e.geoProjection(xe).scale(108.318)},t.geoMillerRaw=xe,t.geoModifiedStereographic=Me,t.geoModifiedStereographicRaw=be,t.geoModifiedStereographicAlaska=function(){return Me(_e,[152,-64]).scale(1400).center([-160.908,62.4864]).clipAngle(30).angle(7.8)},t.geoModifiedStereographicGs48=function(){return Me(we,[95,-38]).scale(1e3).clipAngle(55).center([-96.5563,38.8675])},t.geoModifiedStereographicGs50=function(){return Me(Te,[120,-45]).scale(359.513).clipAngle(55).center([-117.474,53.0628])},t.geoModifiedStereographicMiller=function(){return Me(ke,[-20,-18]).scale(209.091).center([20,16.7214]).clipAngle(82)},t.geoModifiedStereographicLee=function(){return Me(Ae,[165,10]).scale(250).clipAngle(130).center([-165,-10])},t.geoMollweide=function(){return e.geoProjection(W).scale(169.529)},t.geoMollweideRaw=W,t.geoMtFlatPolarParabolic=function(){return e.geoProjection(Le).scale(164.859)},t.geoMtFlatPolarParabolicRaw=Le,t.geoMtFlatPolarQuartic=function(){return e.geoProjection(Ce).scale(188.209)},t.geoMtFlatPolarQuarticRaw=Ce,t.geoMtFlatPolarSinusoidal=function(){return e.geoProjection(Pe).scale(166.518)},t.geoMtFlatPolarSinusoidalRaw=Pe,t.geoNaturalEarth2=function(){return e.geoProjection(Ie).scale(175.295)},t.geoNaturalEarth2Raw=Ie,t.geoNellHammer=function(){return e.geoProjection(Oe).scale(152.63)},t.geoNellHammerRaw=Oe,t.geoInterruptedQuarticAuthalic=function(){return ae(j(1/0),ze).rotate([20,0]).scale(152.63)},t.geoNicolosi=function(){return e.geoProjection(De).scale(127.267)},t.geoNicolosiRaw=De,t.geoPatterson=function(){return e.geoProjection(Re).scale(139.319)},t.geoPattersonRaw=Re,t.geoPolyconic=function(){return e.geoProjection(Fe).scale(103.74)},t.geoPolyconicRaw=Fe,t.geoPolyhedral=Ve,t.geoPolyhedralButterfly=function(t){t=t||function(t){var r=e.geoCentroid({type:\"MultiPoint\",coordinates:t});return e.geoGnomonic().scale(1).translate([0,0]).rotate([-r[0],-r[1]])};var r=Ye.map((function(e){return{face:e,project:t(e)}}));return[-1,0,0,1,0,1,4,5].forEach((function(t,e){var n=r[t];n&&(n.children||(n.children=[])).push(r[e])})),Ve(r[0],(function(t,e){return r[t<-y/2?e<0?6:4:t<0?e<0?2:0:t0?[-r[0],0]:[180-r[0],180])};var r=Ye.map((function(e){return{face:e,project:t(e)}}));return[-1,0,0,1,0,1,4,5].forEach((function(t,e){var n=r[t];n&&(n.children||(n.children=[])).push(r[e])})),Ve(r[0],(function(t,e){return r[t<-y/2?e<0?6:4:t<0?e<0?2:0:t2||a[0]!=e[0]||a[1]!=e[1])&&(n.push(a),e=a)}return 1===n.length&&t.length>1&&n.push(r(t[t.length-1])),n}function a(t){return t.map(i)}function o(t){if(null==t)return t;var e;switch(t.type){case\"GeometryCollection\":e={type:\"GeometryCollection\",geometries:t.geometries.map(o)};break;case\"Point\":e={type:\"Point\",coordinates:r(t.coordinates)};break;case\"MultiPoint\":e={type:t.type,coordinates:n(t.coordinates)};break;case\"LineString\":e={type:t.type,coordinates:i(t.coordinates)};break;case\"MultiLineString\":case\"Polygon\":e={type:t.type,coordinates:a(t.coordinates)};break;case\"MultiPolygon\":e={type:\"MultiPolygon\",coordinates:t.coordinates.map(a)};break;default:return t}return null!=t.bbox&&(e.bbox=t.bbox),e}function s(t){var e={type:\"Feature\",properties:t.properties,geometry:o(t.geometry)};return null!=t.id&&(e.id=t.id),null!=t.bbox&&(e.bbox=t.bbox),e}if(null!=t)switch(t.type){case\"Feature\":return s(t);case\"FeatureCollection\":var l={type:\"FeatureCollection\",features:t.features.map(s)};return null!=t.bbox&&(l.bbox=t.bbox),l;default:return o(t)}return t},t.geoQuincuncial=sr,t.geoRectangularPolyconic=function(){return K(cr).scale(131.215)},t.geoRectangularPolyconicRaw=cr,t.geoRobinson=function(){return e.geoProjection(fr).scale(152.63)},t.geoRobinsonRaw=fr,t.geoSatellite=function(){var t=2,r=0,n=e.geoProjectionMutator(hr),i=n(t,r);return i.distance=function(e){return arguments.length?n(t=+e,r):t},i.tilt=function(e){return arguments.length?n(t,r=e*M):r*A},i.scale(432.147).clipAngle(E(1/t)*A-1e-6)},t.geoSatelliteRaw=hr,t.geoSinuMollweide=function(){return e.geoProjection(Kt).rotate([-20,-55]).scale(164.263).center([0,-5.4036])},t.geoSinuMollweideRaw=Kt,t.geoSinusoidal=function(){return e.geoProjection(Q).scale(152.63)},t.geoSinusoidalRaw=Q,t.geoStitch=function(t){if(null==t)return t;switch(t.type){case\"Feature\":return wr(t);case\"FeatureCollection\":var e={type:\"FeatureCollection\",features:t.features.map(wr)};return null!=t.bbox&&(e.bbox=t.bbox),e;default:return Tr(t)}},t.geoTimes=function(){return e.geoProjection(kr).scale(146.153)},t.geoTimesRaw=kr,t.geoTwoPointAzimuthal=Sr,t.geoTwoPointAzimuthalRaw=Mr,t.geoTwoPointAzimuthalUsa=function(){return Sr([-158,21.5],[-77,39]).clipAngle(60).scale(400)},t.geoTwoPointEquidistant=Lr,t.geoTwoPointEquidistantRaw=Er,t.geoTwoPointEquidistantUsa=function(){return Lr([-158,21.5],[-77,39]).clipAngle(130).scale(122.571)},t.geoVanDerGrinten=function(){return e.geoProjection(Cr).scale(79.4183)},t.geoVanDerGrintenRaw=Cr,t.geoVanDerGrinten2=function(){return e.geoProjection(Pr).scale(79.4183)},t.geoVanDerGrinten2Raw=Pr,t.geoVanDerGrinten3=function(){return e.geoProjection(Ir).scale(79.4183)},t.geoVanDerGrinten3Raw=Ir,t.geoVanDerGrinten4=function(){return e.geoProjection(Or).scale(127.16)},t.geoVanDerGrinten4Raw=Or,t.geoWagner=Dr,t.geoWagner7=function(){return Dr().poleline(65).parallels(60).inflation(0).ratio(200).scale(172.633)},t.geoWagnerRaw=zr,t.geoWagner4=function(){return e.geoProjection(Br).scale(176.84)},t.geoWagner4Raw=Br,t.geoWagner6=function(){return e.geoProjection(Nr).scale(152.63)},t.geoWagner6Raw=Nr,t.geoWiechel=function(){return e.geoProjection(jr).rotate([0,-90,45]).scale(124.75).clipAngle(179.999)},t.geoWiechelRaw=jr,t.geoWinkel3=function(){return e.geoProjection(Ur).scale(158.837)},t.geoWinkel3Raw=Ur,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{\"d3-array\":107,\"d3-geo\":114}],114:[function(t,e,r){!function(n,i){\"object\"==typeof r&&void 0!==e?i(r,t(\"d3-array\")):i((n=n||self).d3=n.d3||{},n.d3)}(this,(function(t,e){\"use strict\";function r(){return new n}function n(){this.reset()}n.prototype={constructor:n,reset:function(){this.s=this.t=0},add:function(t){a(i,t,this.t),a(this,i.s,this.s),this.s?this.t+=i.t:this.s=i.t},valueOf:function(){return this.s}};var i=new n;function a(t,e,r){var n=t.s=e+r,i=n-e,a=n-i;t.t=e-a+(r-i)}var o=1e-6,s=Math.PI,l=s/2,c=s/4,u=2*s,f=180/s,h=s/180,p=Math.abs,d=Math.atan,g=Math.atan2,m=Math.cos,v=Math.ceil,y=Math.exp,x=Math.log,b=Math.pow,_=Math.sin,w=Math.sign||function(t){return t>0?1:t<0?-1:0},T=Math.sqrt,k=Math.tan;function A(t){return t>1?0:t<-1?s:Math.acos(t)}function M(t){return t>1?l:t<-1?-l:Math.asin(t)}function S(t){return(t=_(t/2))*t}function E(){}function L(t,e){t&&P.hasOwnProperty(t.type)&&P[t.type](t,e)}var C={Feature:function(t,e){L(t.geometry,e)},FeatureCollection:function(t,e){for(var r=t.features,n=-1,i=r.length;++n=0?1:-1,i=n*r,a=m(e=(e*=h)/2+c),o=_(e),s=N*o,l=B*a+s*m(i),u=s*n*_(i);j.add(g(u,l)),F=t,B=a,N=o}function W(t){return[g(t[1],t[0]),M(t[2])]}function X(t){var e=t[0],r=t[1],n=m(r);return[n*m(e),n*_(e),_(r)]}function Z(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function J(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function K(t,e){t[0]+=e[0],t[1]+=e[1],t[2]+=e[2]}function Q(t,e){return[t[0]*e,t[1]*e,t[2]*e]}function $(t){var e=T(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=e,t[1]/=e,t[2]/=e}var tt,et,rt,nt,it,at,ot,st,lt,ct,ut,ft,ht,pt,dt,gt,mt,vt,yt,xt,bt,_t,wt,Tt,kt,At,Mt=r(),St={point:Et,lineStart:Ct,lineEnd:Pt,polygonStart:function(){St.point=It,St.lineStart=Ot,St.lineEnd=zt,Mt.reset(),V.polygonStart()},polygonEnd:function(){V.polygonEnd(),St.point=Et,St.lineStart=Ct,St.lineEnd=Pt,j<0?(tt=-(rt=180),et=-(nt=90)):Mt>o?nt=90:Mt<-o&&(et=-90),ct[0]=tt,ct[1]=rt},sphere:function(){tt=-(rt=180),et=-(nt=90)}};function Et(t,e){lt.push(ct=[tt=t,rt=t]),ent&&(nt=e)}function Lt(t,e){var r=X([t*h,e*h]);if(st){var n=J(st,r),i=J([n[1],-n[0],0],n);$(i),i=W(i);var a,o=t-it,s=o>0?1:-1,l=i[0]*f*s,c=p(o)>180;c^(s*itnt&&(nt=a):c^(s*it<(l=(l+360)%360-180)&&lnt&&(nt=e)),c?tDt(tt,rt)&&(rt=t):Dt(t,rt)>Dt(tt,rt)&&(tt=t):rt>=tt?(trt&&(rt=t)):t>it?Dt(tt,t)>Dt(tt,rt)&&(rt=t):Dt(t,rt)>Dt(tt,rt)&&(tt=t)}else lt.push(ct=[tt=t,rt=t]);ent&&(nt=e),st=r,it=t}function Ct(){St.point=Lt}function Pt(){ct[0]=tt,ct[1]=rt,St.point=Et,st=null}function It(t,e){if(st){var r=t-it;Mt.add(p(r)>180?r+(r>0?360:-360):r)}else at=t,ot=e;V.point(t,e),Lt(t,e)}function Ot(){V.lineStart()}function zt(){It(at,ot),V.lineEnd(),p(Mt)>o&&(tt=-(rt=180)),ct[0]=tt,ct[1]=rt,st=null}function Dt(t,e){return(e-=t)<0?e+360:e}function Rt(t,e){return t[0]-e[0]}function Ft(t,e){return t[0]<=t[1]?t[0]<=e&&e<=t[1]:es?t+Math.round(-t/u)*u:t,e]}function Qt(t,e,r){return(t%=u)?e||r?Jt(te(t),ee(e,r)):te(t):e||r?ee(e,r):Kt}function $t(t){return function(e,r){return[(e+=t)>s?e-u:e<-s?e+u:e,r]}}function te(t){var e=$t(t);return e.invert=$t(-t),e}function ee(t,e){var r=m(t),n=_(t),i=m(e),a=_(e);function o(t,e){var o=m(e),s=m(t)*o,l=_(t)*o,c=_(e),u=c*r+s*n;return[g(l*i-u*a,s*r-c*n),M(u*i+l*a)]}return o.invert=function(t,e){var o=m(e),s=m(t)*o,l=_(t)*o,c=_(e),u=c*i-l*a;return[g(l*i+c*a,s*r+u*n),M(u*r-s*n)]},o}function re(t){function e(e){return(e=t(e[0]*h,e[1]*h))[0]*=f,e[1]*=f,e}return t=Qt(t[0]*h,t[1]*h,t.length>2?t[2]*h:0),e.invert=function(e){return(e=t.invert(e[0]*h,e[1]*h))[0]*=f,e[1]*=f,e},e}function ne(t,e,r,n,i,a){if(r){var o=m(e),s=_(e),l=n*r;null==i?(i=e+n*u,a=e-l/2):(i=ie(o,i),a=ie(o,a),(n>0?ia)&&(i+=n*u));for(var c,f=i;n>0?f>a:f1&&e.push(e.pop().concat(e.shift()))},result:function(){var r=e;return e=[],t=null,r}}}function oe(t,e){return p(t[0]-e[0])=0;--a)i.point((f=u[a])[0],f[1]);else n(p.x,p.p.x,-1,i);p=p.p}u=(p=p.o).z,d=!d}while(!p.v);i.lineEnd()}}}function ce(t){if(e=t.length){for(var e,r,n=0,i=t[0];++n=0?1:-1,z=O*I,D=z>s,R=T*C;if(ue.add(g(R*O*_(z),k*P+R*m(z))),f+=D?I+O*u:I,D^b>=r^E>=r){var F=J(X(x),X(S));$(F);var B=J(a,F);$(B);var N=(D^I>=0?-1:1)*M(B[2]);(n>N||n===N&&(F[0]||F[1]))&&(h+=D^I>=0?1:-1)}}return(f<-o||f0){for(h||(a.polygonStart(),h=!0),a.lineStart(),t=0;t1&&2&i&&c.push(c.pop().concat(c.shift())),s.push(c.filter(de))}return p}}function de(t){return t.length>1}function ge(t,e){return((t=t.x)[0]<0?t[1]-l-o:l-t[1])-((e=e.x)[0]<0?e[1]-l-o:l-e[1])}var me=pe((function(){return!0}),(function(t){var e,r=NaN,n=NaN,i=NaN;return{lineStart:function(){t.lineStart(),e=1},point:function(a,c){var u=a>0?s:-s,f=p(a-r);p(f-s)0?l:-l),t.point(i,n),t.lineEnd(),t.lineStart(),t.point(u,n),t.point(a,n),e=0):i!==u&&f>=s&&(p(r-i)o?d((_(e)*(a=m(n))*_(r)-_(n)*(i=m(e))*_(t))/(i*a*s)):(e+n)/2}(r,n,a,c),t.point(i,n),t.lineEnd(),t.lineStart(),t.point(u,n),e=0),t.point(r=a,n=c),i=u},lineEnd:function(){t.lineEnd(),r=n=NaN},clean:function(){return 2-e}}}),(function(t,e,r,n){var i;if(null==t)i=r*l,n.point(-s,i),n.point(0,i),n.point(s,i),n.point(s,0),n.point(s,-i),n.point(0,-i),n.point(-s,-i),n.point(-s,0),n.point(-s,i);else if(p(t[0]-e[0])>o){var a=t[0]0,i=p(e)>o;function a(t,r){return m(t)*m(r)>e}function l(t,r,n){var i=[1,0,0],a=J(X(t),X(r)),l=Z(a,a),c=a[0],u=l-c*c;if(!u)return!n&&t;var f=e*l/u,h=-e*c/u,d=J(i,a),g=Q(i,f);K(g,Q(a,h));var m=d,v=Z(g,m),y=Z(m,m),x=v*v-y*(Z(g,g)-1);if(!(x<0)){var b=T(x),_=Q(m,(-v-b)/y);if(K(_,g),_=W(_),!n)return _;var w,k=t[0],A=r[0],M=t[1],S=r[1];A0^_[1]<(p(_[0]-k)s^(k<=_[0]&&_[0]<=A)){var C=Q(m,(-v+b)/y);return K(C,g),[_,W(C)]}}}function c(e,r){var i=n?t:s-t,a=0;return e<-i?a|=1:e>i&&(a|=2),r<-i?a|=4:r>i&&(a|=8),a}return pe(a,(function(t){var e,r,o,u,f;return{lineStart:function(){u=o=!1,f=1},point:function(h,p){var d,g=[h,p],m=a(h,p),v=n?m?0:c(h,p):m?c(h+(h<0?s:-s),p):0;if(!e&&(u=o=m)&&t.lineStart(),m!==o&&(!(d=l(e,g))||oe(e,d)||oe(g,d))&&(g[2]=1),m!==o)f=0,m?(t.lineStart(),d=l(g,e),t.point(d[0],d[1])):(d=l(e,g),t.point(d[0],d[1],2),t.lineEnd()),e=d;else if(i&&e&&n^m){var y;v&r||!(y=l(g,e,!0))||(f=0,n?(t.lineStart(),t.point(y[0][0],y[0][1]),t.point(y[1][0],y[1][1]),t.lineEnd()):(t.point(y[1][0],y[1][1]),t.lineEnd(),t.lineStart(),t.point(y[0][0],y[0][1],3)))}!m||e&&oe(e,g)||t.point(g[0],g[1]),e=g,o=m,r=v},lineEnd:function(){o&&t.lineEnd(),e=null},clean:function(){return f|(u&&o)<<1}}}),(function(e,n,i,a){ne(a,t,r,i,e,n)}),n?[0,-t]:[-s,t-s])}function ye(t,r,n,i){function a(e,a){return t<=e&&e<=n&&r<=a&&a<=i}function s(e,a,o,s){var c=0,f=0;if(null==e||(c=l(e,o))!==(f=l(a,o))||u(e,a)<0^o>0)do{s.point(0===c||3===c?t:n,c>1?i:r)}while((c=(c+o+4)%4)!==f);else s.point(a[0],a[1])}function l(e,i){return p(e[0]-t)0?0:3:p(e[0]-n)0?2:1:p(e[1]-r)0?1:0:i>0?3:2}function c(t,e){return u(t.x,e.x)}function u(t,e){var r=l(t,1),n=l(e,1);return r!==n?r-n:0===r?e[1]-t[1]:1===r?t[0]-e[0]:2===r?t[1]-e[1]:e[0]-t[0]}return function(o){var l,u,f,h,p,d,g,m,v,y,x,b=o,_=ae(),w={point:T,lineStart:function(){w.point=k,u&&u.push(f=[]);y=!0,v=!1,g=m=NaN},lineEnd:function(){l&&(k(h,p),d&&v&&_.rejoin(),l.push(_.result()));w.point=T,v&&b.lineEnd()},polygonStart:function(){b=_,l=[],u=[],x=!0},polygonEnd:function(){var r=function(){for(var e=0,r=0,n=u.length;ri&&(h-a)*(i-o)>(p-o)*(t-a)&&++e:p<=i&&(h-a)*(i-o)<(p-o)*(t-a)&&--e;return e}(),n=x&&r,a=(l=e.merge(l)).length;(n||a)&&(o.polygonStart(),n&&(o.lineStart(),s(null,null,1,o),o.lineEnd()),a&&le(l,c,r,s,o),o.polygonEnd());b=o,l=u=f=null}};function T(t,e){a(t,e)&&b.point(t,e)}function k(e,o){var s=a(e,o);if(u&&f.push([e,o]),y)h=e,p=o,d=s,y=!1,s&&(b.lineStart(),b.point(e,o));else if(s&&v)b.point(e,o);else{var l=[g=Math.max(-1e9,Math.min(1e9,g)),m=Math.max(-1e9,Math.min(1e9,m))],c=[e=Math.max(-1e9,Math.min(1e9,e)),o=Math.max(-1e9,Math.min(1e9,o))];!function(t,e,r,n,i,a){var o,s=t[0],l=t[1],c=0,u=1,f=e[0]-s,h=e[1]-l;if(o=r-s,f||!(o>0)){if(o/=f,f<0){if(o0){if(o>u)return;o>c&&(c=o)}if(o=i-s,f||!(o<0)){if(o/=f,f<0){if(o>u)return;o>c&&(c=o)}else if(f>0){if(o0)){if(o/=h,h<0){if(o0){if(o>u)return;o>c&&(c=o)}if(o=a-l,h||!(o<0)){if(o/=h,h<0){if(o>u)return;o>c&&(c=o)}else if(h>0){if(o0&&(t[0]=s+c*f,t[1]=l+c*h),u<1&&(e[0]=s+u*f,e[1]=l+u*h),!0}}}}}(l,c,t,r,n,i)?s&&(b.lineStart(),b.point(e,o),x=!1):(v||(b.lineStart(),b.point(l[0],l[1])),b.point(c[0],c[1]),s||b.lineEnd(),x=!1)}g=e,m=o,v=s}return w}}var xe,be,_e,we=r(),Te={sphere:E,point:E,lineStart:function(){Te.point=Ae,Te.lineEnd=ke},lineEnd:E,polygonStart:E,polygonEnd:E};function ke(){Te.point=Te.lineEnd=E}function Ae(t,e){xe=t*=h,be=_(e*=h),_e=m(e),Te.point=Me}function Me(t,e){t*=h;var r=_(e*=h),n=m(e),i=p(t-xe),a=m(i),o=n*_(i),s=_e*r-be*n*a,l=be*r+_e*n*a;we.add(g(T(o*o+s*s),l)),xe=t,be=r,_e=n}function Se(t){return we.reset(),z(t,Te),+we}var Ee=[null,null],Le={type:\"LineString\",coordinates:Ee};function Ce(t,e){return Ee[0]=t,Ee[1]=e,Se(Le)}var Pe={Feature:function(t,e){return Oe(t.geometry,e)},FeatureCollection:function(t,e){for(var r=t.features,n=-1,i=r.length;++n0&&(i=Ce(t[a],t[a-1]))>0&&r<=i&&n<=i&&(r+n-i)*(1-Math.pow((r-n)/i,2))<1e-12*i)return!0;r=n}return!1}function Re(t,e){return!!he(t.map(Fe),Be(e))}function Fe(t){return(t=t.map(Be)).pop(),t}function Be(t){return[t[0]*h,t[1]*h]}function Ne(t,r,n){var i=e.range(t,r-o,n).concat(r);return function(t){return i.map((function(e){return[t,e]}))}}function je(t,r,n){var i=e.range(t,r-o,n).concat(r);return function(t){return i.map((function(e){return[e,t]}))}}function Ue(){var t,r,n,i,a,s,l,c,u,f,h,d,g=10,m=g,y=90,x=360,b=2.5;function _(){return{type:\"MultiLineString\",coordinates:w()}}function w(){return e.range(v(i/y)*y,n,y).map(h).concat(e.range(v(c/x)*x,l,x).map(d)).concat(e.range(v(r/g)*g,t,g).filter((function(t){return p(t%y)>o})).map(u)).concat(e.range(v(s/m)*m,a,m).filter((function(t){return p(t%x)>o})).map(f))}return _.lines=function(){return w().map((function(t){return{type:\"LineString\",coordinates:t}}))},_.outline=function(){return{type:\"Polygon\",coordinates:[h(i).concat(d(l).slice(1),h(n).reverse().slice(1),d(c).reverse().slice(1))]}},_.extent=function(t){return arguments.length?_.extentMajor(t).extentMinor(t):_.extentMinor()},_.extentMajor=function(t){return arguments.length?(i=+t[0][0],n=+t[1][0],c=+t[0][1],l=+t[1][1],i>n&&(t=i,i=n,n=t),c>l&&(t=c,c=l,l=t),_.precision(b)):[[i,c],[n,l]]},_.extentMinor=function(e){return arguments.length?(r=+e[0][0],t=+e[1][0],s=+e[0][1],a=+e[1][1],r>t&&(e=r,r=t,t=e),s>a&&(e=s,s=a,a=e),_.precision(b)):[[r,s],[t,a]]},_.step=function(t){return arguments.length?_.stepMajor(t).stepMinor(t):_.stepMinor()},_.stepMajor=function(t){return arguments.length?(y=+t[0],x=+t[1],_):[y,x]},_.stepMinor=function(t){return arguments.length?(g=+t[0],m=+t[1],_):[g,m]},_.precision=function(e){return arguments.length?(b=+e,u=Ne(s,a,90),f=je(r,t,b),h=Ne(c,l,90),d=je(i,n,b),_):b},_.extentMajor([[-180,-90+o],[180,90-o]]).extentMinor([[-180,-80-o],[180,80+o]])}function Ve(t){return t}var He,qe,Ge,Ye,We=r(),Xe=r(),Ze={point:E,lineStart:E,lineEnd:E,polygonStart:function(){Ze.lineStart=Je,Ze.lineEnd=$e},polygonEnd:function(){Ze.lineStart=Ze.lineEnd=Ze.point=E,We.add(p(Xe)),Xe.reset()},result:function(){var t=We/2;return We.reset(),t}};function Je(){Ze.point=Ke}function Ke(t,e){Ze.point=Qe,He=Ge=t,qe=Ye=e}function Qe(t,e){Xe.add(Ye*t-Ge*e),Ge=t,Ye=e}function $e(){Qe(He,qe)}var tr=1/0,er=tr,rr=-tr,nr=rr,ir={point:function(t,e){trr&&(rr=t);enr&&(nr=e)},lineStart:E,lineEnd:E,polygonStart:E,polygonEnd:E,result:function(){var t=[[tr,er],[rr,nr]];return rr=nr=-(er=tr=1/0),t}};var ar,or,sr,lr,cr=0,ur=0,fr=0,hr=0,pr=0,dr=0,gr=0,mr=0,vr=0,yr={point:xr,lineStart:br,lineEnd:Tr,polygonStart:function(){yr.lineStart=kr,yr.lineEnd=Ar},polygonEnd:function(){yr.point=xr,yr.lineStart=br,yr.lineEnd=Tr},result:function(){var t=vr?[gr/vr,mr/vr]:dr?[hr/dr,pr/dr]:fr?[cr/fr,ur/fr]:[NaN,NaN];return cr=ur=fr=hr=pr=dr=gr=mr=vr=0,t}};function xr(t,e){cr+=t,ur+=e,++fr}function br(){yr.point=_r}function _r(t,e){yr.point=wr,xr(sr=t,lr=e)}function wr(t,e){var r=t-sr,n=e-lr,i=T(r*r+n*n);hr+=i*(sr+t)/2,pr+=i*(lr+e)/2,dr+=i,xr(sr=t,lr=e)}function Tr(){yr.point=xr}function kr(){yr.point=Mr}function Ar(){Sr(ar,or)}function Mr(t,e){yr.point=Sr,xr(ar=sr=t,or=lr=e)}function Sr(t,e){var r=t-sr,n=e-lr,i=T(r*r+n*n);hr+=i*(sr+t)/2,pr+=i*(lr+e)/2,dr+=i,gr+=(i=lr*t-sr*e)*(sr+t),mr+=i*(lr+e),vr+=3*i,xr(sr=t,lr=e)}function Er(t){this._context=t}Er.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._context.moveTo(t,e),this._point=1;break;case 1:this._context.lineTo(t,e);break;default:this._context.moveTo(t+this._radius,e),this._context.arc(t,e,this._radius,0,u)}},result:E};var Lr,Cr,Pr,Ir,Or,zr=r(),Dr={point:E,lineStart:function(){Dr.point=Rr},lineEnd:function(){Lr&&Fr(Cr,Pr),Dr.point=E},polygonStart:function(){Lr=!0},polygonEnd:function(){Lr=null},result:function(){var t=+zr;return zr.reset(),t}};function Rr(t,e){Dr.point=Fr,Cr=Ir=t,Pr=Or=e}function Fr(t,e){Ir-=t,Or-=e,zr.add(T(Ir*Ir+Or*Or)),Ir=t,Or=e}function Br(){this._string=[]}function Nr(t){return\"m0,\"+t+\"a\"+t+\",\"+t+\" 0 1,1 0,\"+-2*t+\"a\"+t+\",\"+t+\" 0 1,1 0,\"+2*t+\"z\"}function jr(t){return function(e){var r=new Ur;for(var n in t)r[n]=t[n];return r.stream=e,r}}function Ur(){}function Vr(t,e,r){var n=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=n&&t.clipExtent(null),z(r,t.stream(ir)),e(ir.result()),null!=n&&t.clipExtent(n),t}function Hr(t,e,r){return Vr(t,(function(r){var n=e[1][0]-e[0][0],i=e[1][1]-e[0][1],a=Math.min(n/(r[1][0]-r[0][0]),i/(r[1][1]-r[0][1])),o=+e[0][0]+(n-a*(r[1][0]+r[0][0]))/2,s=+e[0][1]+(i-a*(r[1][1]+r[0][1]))/2;t.scale(150*a).translate([o,s])}),r)}function qr(t,e,r){return Hr(t,[[0,0],e],r)}function Gr(t,e,r){return Vr(t,(function(r){var n=+e,i=n/(r[1][0]-r[0][0]),a=(n-i*(r[1][0]+r[0][0]))/2,o=-i*r[0][1];t.scale(150*i).translate([a,o])}),r)}function Yr(t,e,r){return Vr(t,(function(r){var n=+e,i=n/(r[1][1]-r[0][1]),a=-i*r[0][0],o=(n-i*(r[1][1]+r[0][1]))/2;t.scale(150*i).translate([a,o])}),r)}Br.prototype={_radius:4.5,_circle:Nr(4.5),pointRadius:function(t){return(t=+t)!==this._radius&&(this._radius=t,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push(\"Z\"),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._string.push(\"M\",t,\",\",e),this._point=1;break;case 1:this._string.push(\"L\",t,\",\",e);break;default:null==this._circle&&(this._circle=Nr(this._radius)),this._string.push(\"M\",t,\",\",e,this._circle)}},result:function(){if(this._string.length){var t=this._string.join(\"\");return this._string=[],t}return null}},Ur.prototype={constructor:Ur,point:function(t,e){this.stream.point(t,e)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var Wr=m(30*h);function Xr(t,e){return+e?function(t,e){function r(n,i,a,s,l,c,u,f,h,d,m,v,y,x){var b=u-n,_=f-i,w=b*b+_*_;if(w>4*e&&y--){var k=s+d,A=l+m,S=c+v,E=T(k*k+A*A+S*S),L=M(S/=E),C=p(p(S)-1)e||p((b*z+_*D)/w-.5)>.3||s*d+l*m+c*v2?t[2]%360*h:0,I()):[y*f,x*f,b*f]},C.angle=function(t){return arguments.length?(_=t%360*h,I()):_*f},C.reflectX=function(t){return arguments.length?(w=t?-1:1,I()):w<0},C.reflectY=function(t){return arguments.length?(k=t?-1:1,I()):k<0},C.precision=function(t){return arguments.length?(o=Xr(s,L=t*t),O()):T(L)},C.fitExtent=function(t,e){return Hr(C,t,e)},C.fitSize=function(t,e){return qr(C,t,e)},C.fitWidth=function(t,e){return Gr(C,t,e)},C.fitHeight=function(t,e){return Yr(C,t,e)},function(){return e=t.apply(this,arguments),C.invert=e.invert&&P,I()}}function tn(t){var e=0,r=s/3,n=$r(t),i=n(e,r);return i.parallels=function(t){return arguments.length?n(e=t[0]*h,r=t[1]*h):[e*f,r*f]},i}function en(t,e){var r=_(t),n=(r+_(e))/2;if(p(n)0?e<-l+o&&(e=-l+o):e>l-o&&(e=l-o);var r=i/b(fn(e),n);return[r*_(n*t),i-r*m(n*t)]}return a.invert=function(t,e){var r=i-e,a=w(n)*T(t*t+r*r),o=g(t,p(r))*w(r);return r*n<0&&(o-=s*w(t)*w(r)),[o/n,2*d(b(i/a,1/n))-l]},a}function pn(t,e){return[t,e]}function dn(t,e){var r=m(t),n=t===e?_(t):(r-m(e))/(e-t),i=r/n+t;if(p(n)o&&--i>0);return[t/(.8707+(a=n*n)*(a*(a*a*a*(.003971-.001529*a)-.013791)-.131979)),n]},Tn.invert=on(M),kn.invert=on((function(t){return 2*d(t)})),An.invert=function(t,e){return[-e,2*d(y(t))-l]},t.geoAlbers=nn,t.geoAlbersUsa=function(){var t,e,r,n,i,a,s=nn(),l=rn().rotate([154,0]).center([-2,58.5]).parallels([55,65]),c=rn().rotate([157,0]).center([-3,19.9]).parallels([8,18]),u={point:function(t,e){a=[t,e]}};function f(t){var e=t[0],o=t[1];return a=null,r.point(e,o),a||(n.point(e,o),a)||(i.point(e,o),a)}function h(){return t=e=null,f}return f.invert=function(t){var e=s.scale(),r=s.translate(),n=(t[0]-r[0])/e,i=(t[1]-r[1])/e;return(i>=.12&&i<.234&&n>=-.425&&n<-.214?l:i>=.166&&i<.234&&n>=-.214&&n<-.115?c:s).invert(t)},f.stream=function(r){return t&&e===r?t:(n=[s.stream(e=r),l.stream(r),c.stream(r)],i=n.length,t={point:function(t,e){for(var r=-1;++rDt(n[0],n[1])&&(n[1]=i[1]),Dt(i[0],n[1])>Dt(n[0],n[1])&&(n[0]=i[0])):a.push(n=i);for(o=-1/0,e=0,n=a[r=a.length-1];e<=r;n=i,++e)i=a[e],(s=Dt(n[1],i[0]))>o&&(o=s,tt=i[0],rt=n[1])}return lt=ct=null,tt===1/0||et===1/0?[[NaN,NaN],[NaN,NaN]]:[[tt,et],[rt,nt]]},t.geoCentroid=function(t){ut=ft=ht=pt=dt=gt=mt=vt=yt=xt=bt=0,z(t,Bt);var e=yt,r=xt,n=bt,i=e*e+r*r+n*n;return i<1e-12&&(e=gt,r=mt,n=vt,ft2?t[2]+90:90]):[(t=r())[0],t[1],t[2]-90]},r([0,0,90]).scale(159.155)},t.geoTransverseMercatorRaw=An,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{\"d3-array\":107}],115:[function(t,e,r){!function(t,n){\"object\"==typeof r&&void 0!==e?n(r):n((t=t||self).d3=t.d3||{})}(this,(function(t){\"use strict\";function e(t,e){return t.parent===e.parent?1:2}function r(t,e){return t+e.x}function n(t,e){return Math.max(t,e.y)}function i(t){var e=0,r=t.children,n=r&&r.length;if(n)for(;--n>=0;)e+=r[n].value;else e=1;t.value=e}function a(t,e){var r,n,i,a,s,u=new c(t),f=+t.value&&(u.value=t.value),h=[u];for(null==e&&(e=o);r=h.pop();)if(f&&(r.value=+r.data.value),(i=e(r.data))&&(s=i.length))for(r.children=new Array(s),a=s-1;a>=0;--a)h.push(n=r.children[a]=new c(i[a])),n.parent=r,n.depth=r.depth+1;return u.eachBefore(l)}function o(t){return t.children}function s(t){t.data=t.data.data}function l(t){var e=0;do{t.height=e}while((t=t.parent)&&t.height<++e)}function c(t){this.data=t,this.depth=this.height=0,this.parent=null}c.prototype=a.prototype={constructor:c,count:function(){return this.eachAfter(i)},each:function(t){var e,r,n,i,a=this,o=[a];do{for(e=o.reverse(),o=[];a=e.pop();)if(t(a),r=a.children)for(n=0,i=r.length;n=0;--r)i.push(e[r]);return this},sum:function(t){return this.eachAfter((function(e){for(var r=+t(e.data)||0,n=e.children,i=n&&n.length;--i>=0;)r+=n[i].value;e.value=r}))},sort:function(t){return this.eachBefore((function(e){e.children&&e.children.sort(t)}))},path:function(t){for(var e=this,r=function(t,e){if(t===e)return t;var r=t.ancestors(),n=e.ancestors(),i=null;t=r.pop(),e=n.pop();for(;t===e;)i=t,t=r.pop(),e=n.pop();return i}(e,t),n=[e];e!==r;)e=e.parent,n.push(e);for(var i=n.length;t!==r;)n.splice(i,0,t),t=t.parent;return n},ancestors:function(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e},descendants:function(){var t=[];return this.each((function(e){t.push(e)})),t},leaves:function(){var t=[];return this.eachBefore((function(e){e.children||t.push(e)})),t},links:function(){var t=this,e=[];return t.each((function(r){r!==t&&e.push({source:r.parent,target:r})})),e},copy:function(){return a(this).eachBefore(s)}};var u=Array.prototype.slice;function f(t){for(var e,r,n=0,i=(t=function(t){for(var e,r,n=t.length;n;)r=Math.random()*n--|0,e=t[n],t[n]=t[r],t[r]=e;return t}(u.call(t))).length,a=[];n0&&r*r>n*n+i*i}function g(t,e){for(var r=0;r(o*=o)?(n=(c+o-i)/(2*c),a=Math.sqrt(Math.max(0,o/c-n*n)),r.x=t.x-n*s-a*l,r.y=t.y-n*l+a*s):(n=(c+i-o)/(2*c),a=Math.sqrt(Math.max(0,i/c-n*n)),r.x=e.x+n*s-a*l,r.y=e.y+n*l+a*s)):(r.x=e.x+r.r,r.y=e.y)}function b(t,e){var r=t.r+e.r-1e-6,n=e.x-t.x,i=e.y-t.y;return r>0&&r*r>n*n+i*i}function _(t){var e=t._,r=t.next._,n=e.r+r.r,i=(e.x*r.r+r.x*e.r)/n,a=(e.y*r.r+r.y*e.r)/n;return i*i+a*a}function w(t){this._=t,this.next=null,this.previous=null}function T(t){if(!(i=t.length))return 0;var e,r,n,i,a,o,s,l,c,u,h;if((e=t[0]).x=0,e.y=0,!(i>1))return e.r;if(r=t[1],e.x=-r.r,r.x=e.r,r.y=0,!(i>2))return e.r+r.r;x(r,e,n=t[2]),e=new w(e),r=new w(r),n=new w(n),e.next=n.previous=r,r.next=e.previous=n,n.next=r.previous=e;t:for(s=3;sh&&(h=s),m=u*u*g,(p=Math.max(h/m,m/f))>d){u-=s;break}d=p}v.push(o={value:u,dice:l1?e:1)},r}(G);var X=function t(e){function r(t,r,n,i,a){if((o=t._squarify)&&o.ratio===e)for(var o,s,l,c,u,f=-1,h=o.length,p=t.value;++f1?e:1)},r}(G);t.cluster=function(){var t=e,i=1,a=1,o=!1;function s(e){var s,l=0;e.eachAfter((function(e){var i=e.children;i?(e.x=function(t){return t.reduce(r,0)/t.length}(i),e.y=function(t){return 1+t.reduce(n,0)}(i)):(e.x=s?l+=t(e,s):0,e.y=0,s=e)}));var c=function(t){for(var e;e=t.children;)t=e[0];return t}(e),u=function(t){for(var e;e=t.children;)t=e[e.length-1];return t}(e),f=c.x-t(c,u)/2,h=u.x+t(u,c)/2;return e.eachAfter(o?function(t){t.x=(t.x-e.x)*i,t.y=(e.y-t.y)*a}:function(t){t.x=(t.x-f)/(h-f)*i,t.y=(1-(e.y?t.y/e.y:1))*a})}return s.separation=function(e){return arguments.length?(t=e,s):t},s.size=function(t){return arguments.length?(o=!1,i=+t[0],a=+t[1],s):o?null:[i,a]},s.nodeSize=function(t){return arguments.length?(o=!0,i=+t[0],a=+t[1],s):o?[i,a]:null},s},t.hierarchy=a,t.pack=function(){var t=null,e=1,r=1,n=M;function i(i){return i.x=e/2,i.y=r/2,t?i.eachBefore(L(t)).eachAfter(C(n,.5)).eachBefore(P(1)):i.eachBefore(L(E)).eachAfter(C(M,1)).eachAfter(C(n,i.r/Math.min(e,r))).eachBefore(P(Math.min(e,r)/(2*i.r))),i}return i.radius=function(e){return arguments.length?(t=k(e),i):t},i.size=function(t){return arguments.length?(e=+t[0],r=+t[1],i):[e,r]},i.padding=function(t){return arguments.length?(n=\"function\"==typeof t?t:S(+t),i):n},i},t.packEnclose=f,t.packSiblings=function(t){return T(t),t},t.partition=function(){var t=1,e=1,r=0,n=!1;function i(i){var a=i.height+1;return i.x0=i.y0=r,i.x1=t,i.y1=e/a,i.eachBefore(function(t,e){return function(n){n.children&&O(n,n.x0,t*(n.depth+1)/e,n.x1,t*(n.depth+2)/e);var i=n.x0,a=n.y0,o=n.x1-r,s=n.y1-r;o0)throw new Error(\"cycle\");return a}return r.id=function(e){return arguments.length?(t=A(e),r):t},r.parentId=function(t){return arguments.length?(e=A(t),r):e},r},t.tree=function(){var t=B,e=1,r=1,n=null;function i(i){var l=function(t){for(var e,r,n,i,a,o=new H(t,0),s=[o];e=s.pop();)if(n=e._.children)for(e.children=new Array(a=n.length),i=a-1;i>=0;--i)s.push(r=e.children[i]=new H(n[i],i)),r.parent=e;return(o.parent=new H(null,0)).children=[o],o}(i);if(l.eachAfter(a),l.parent.m=-l.z,l.eachBefore(o),n)i.eachBefore(s);else{var c=i,u=i,f=i;i.eachBefore((function(t){t.xu.x&&(u=t),t.depth>f.depth&&(f=t)}));var h=c===u?1:t(c,u)/2,p=h-c.x,d=e/(u.x+h+p),g=r/(f.depth||1);i.eachBefore((function(t){t.x=(t.x+p)*d,t.y=t.depth*g}))}return i}function a(e){var r=e.children,n=e.parent.children,i=e.i?n[e.i-1]:null;if(r){!function(t){for(var e,r=0,n=0,i=t.children,a=i.length;--a>=0;)(e=i[a]).z+=r,e.m+=r,r+=e.s+(n+=e.c)}(e);var a=(r[0].z+r[r.length-1].z)/2;i?(e.z=i.z+t(e._,i._),e.m=e.z-a):e.z=a}else i&&(e.z=i.z+t(e._,i._));e.parent.A=function(e,r,n){if(r){for(var i,a=e,o=e,s=r,l=a.parent.children[0],c=a.m,u=o.m,f=s.m,h=l.m;s=j(s),a=N(a),s&&a;)l=N(l),(o=j(o)).a=e,(i=s.z+f-a.z-c+t(s._,a._))>0&&(U(V(s,e,n),e,i),c+=i,u+=i),f+=s.m,c+=a.m,h+=l.m,u+=o.m;s&&!j(o)&&(o.t=s,o.m+=f-u),a&&!N(l)&&(l.t=a,l.m+=c-h,n=e)}return n}(e,i,e.parent.A||n[0])}function o(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function s(t){t.x*=e,t.y=t.depth*r}return i.separation=function(e){return arguments.length?(t=e,i):t},i.size=function(t){return arguments.length?(n=!1,e=+t[0],r=+t[1],i):n?null:[e,r]},i.nodeSize=function(t){return arguments.length?(n=!0,e=+t[0],r=+t[1],i):n?[e,r]:null},i},t.treemap=function(){var t=W,e=!1,r=1,n=1,i=[0],a=M,o=M,s=M,l=M,c=M;function u(t){return t.x0=t.y0=0,t.x1=r,t.y1=n,t.eachBefore(f),i=[0],e&&t.eachBefore(I),t}function f(e){var r=i[e.depth],n=e.x0+r,u=e.y0+r,f=e.x1-r,h=e.y1-r;f=r-1){var u=s[e];return u.x0=i,u.y0=a,u.x1=o,void(u.y1=l)}var f=c[e],h=n/2+f,p=e+1,d=r-1;for(;p>>1;c[g]l-a){var y=(i*v+o*m)/n;t(e,p,m,i,a,y,l),t(p,r,v,y,a,o,l)}else{var x=(a*v+l*m)/n;t(e,p,m,i,a,o,x),t(p,r,v,i,x,o,l)}}(0,l,t.value,e,r,n,i)},t.treemapDice=O,t.treemapResquarify=X,t.treemapSlice=q,t.treemapSliceDice=function(t,e,r,n,i){(1&t.depth?q:O)(t,e,r,n,i)},t.treemapSquarify=W,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{}],116:[function(t,e,r){!function(n,i){\"object\"==typeof r&&void 0!==e?i(r,t(\"d3-color\")):i((n=n||self).d3=n.d3||{},n.d3)}(this,(function(t,e){\"use strict\";function r(t,e,r,n,i){var a=t*t,o=a*t;return((1-3*t+3*a-o)*e+(4-6*a+3*o)*r+(1+3*t+3*a-3*o)*n+o*i)/6}function n(t){var e=t.length-1;return function(n){var i=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),a=t[i],o=t[i+1],s=i>0?t[i-1]:2*a-o,l=i180||r<-180?r-360*Math.round(r/360):r):a(isNaN(t)?e:t)}function l(t){return 1==(t=+t)?c:function(e,r){return r-e?function(t,e,r){return t=Math.pow(t,r),e=Math.pow(e,r)-t,r=1/r,function(n){return Math.pow(t+n*e,r)}}(e,r,t):a(isNaN(e)?r:e)}}function c(t,e){var r=e-t;return r?o(t,r):a(isNaN(t)?e:t)}var u=function t(r){var n=l(r);function i(t,r){var i=n((t=e.rgb(t)).r,(r=e.rgb(r)).r),a=n(t.g,r.g),o=n(t.b,r.b),s=c(t.opacity,r.opacity);return function(e){return t.r=i(e),t.g=a(e),t.b=o(e),t.opacity=s(e),t+\"\"}}return i.gamma=t,i}(1);function f(t){return function(r){var n,i,a=r.length,o=new Array(a),s=new Array(a),l=new Array(a);for(n=0;na&&(i=e.slice(a,i),s[o]?s[o]+=i:s[++o]=i),(r=r[0])===(n=n[0])?s[o]?s[o]+=n:s[++o]=n:(s[++o]=null,l.push({i:o,x:y(r,n)})),a=_.lastIndex;return a180?e+=360:e-t>180&&(t+=360),a.push({i:r.push(i(r)+\"rotate(\",null,n)-2,x:y(t,e)})):e&&r.push(i(r)+\"rotate(\"+e+n)}(a.rotate,o.rotate,s,l),function(t,e,r,a){t!==e?a.push({i:r.push(i(r)+\"skewX(\",null,n)-2,x:y(t,e)}):e&&r.push(i(r)+\"skewX(\"+e+n)}(a.skewX,o.skewX,s,l),function(t,e,r,n,a,o){if(t!==r||e!==n){var s=a.push(i(a)+\"scale(\",null,\",\",null,\")\");o.push({i:s-4,x:y(t,r)},{i:s-2,x:y(e,n)})}else 1===r&&1===n||a.push(i(a)+\"scale(\"+r+\",\"+n+\")\")}(a.scaleX,a.scaleY,o.scaleX,o.scaleY,s,l),a=o=null,function(t){for(var e,r=-1,n=l.length;++r1e-6)if(Math.abs(f*l-c*u)>1e-6&&a){var p=n-o,d=i-s,g=l*l+c*c,m=p*p+d*d,v=Math.sqrt(g),y=Math.sqrt(h),x=a*Math.tan((e-Math.acos((g+h-m)/(2*v*y)))/2),b=x/y,_=x/v;Math.abs(b-1)>1e-6&&(this._+=\"L\"+(t+b*u)+\",\"+(r+b*f)),this._+=\"A\"+a+\",\"+a+\",0,0,\"+ +(f*p>u*d)+\",\"+(this._x1=t+_*l)+\",\"+(this._y1=r+_*c)}else this._+=\"L\"+(this._x1=t)+\",\"+(this._y1=r);else;},arc:function(t,i,a,o,s,l){t=+t,i=+i,l=!!l;var c=(a=+a)*Math.cos(o),u=a*Math.sin(o),f=t+c,h=i+u,p=1^l,d=l?o-s:s-o;if(a<0)throw new Error(\"negative radius: \"+a);null===this._x1?this._+=\"M\"+f+\",\"+h:(Math.abs(this._x1-f)>1e-6||Math.abs(this._y1-h)>1e-6)&&(this._+=\"L\"+f+\",\"+h),a&&(d<0&&(d=d%r+r),d>n?this._+=\"A\"+a+\",\"+a+\",0,1,\"+p+\",\"+(t-c)+\",\"+(i-u)+\"A\"+a+\",\"+a+\",0,1,\"+p+\",\"+(this._x1=f)+\",\"+(this._y1=h):d>1e-6&&(this._+=\"A\"+a+\",\"+a+\",0,\"+ +(d>=e)+\",\"+p+\",\"+(this._x1=t+a*Math.cos(s))+\",\"+(this._y1=i+a*Math.sin(s))))},rect:function(t,e,r,n){this._+=\"M\"+(this._x0=this._x1=+t)+\",\"+(this._y0=this._y1=+e)+\"h\"+ +r+\"v\"+ +n+\"h\"+-r+\"Z\"},toString:function(){return this._}},t.path=a,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{}],118:[function(t,e,r){!function(t,n){\"object\"==typeof r&&void 0!==e?n(r):n((t=t||self).d3=t.d3||{})}(this,(function(t){\"use strict\";function e(t,e,r,n){if(isNaN(e)||isNaN(r))return t;var i,a,o,s,l,c,u,f,h,p=t._root,d={data:n},g=t._x0,m=t._y0,v=t._x1,y=t._y1;if(!p)return t._root=d,t;for(;p.length;)if((c=e>=(a=(g+v)/2))?g=a:v=a,(u=r>=(o=(m+y)/2))?m=o:y=o,i=p,!(p=p[f=u<<1|c]))return i[f]=d,t;if(s=+t._x.call(null,p.data),l=+t._y.call(null,p.data),e===s&&r===l)return d.next=p,i?i[f]=d:t._root=d,t;do{i=i?i[f]=new Array(4):t._root=new Array(4),(c=e>=(a=(g+v)/2))?g=a:v=a,(u=r>=(o=(m+y)/2))?m=o:y=o}while((f=u<<1|c)==(h=(l>=o)<<1|s>=a));return i[h]=p,i[f]=d,t}function r(t,e,r,n,i){this.node=t,this.x0=e,this.y0=r,this.x1=n,this.y1=i}function n(t){return t[0]}function i(t){return t[1]}function a(t,e,r){var a=new o(null==e?n:e,null==r?i:r,NaN,NaN,NaN,NaN);return null==t?a:a.addAll(t)}function o(t,e,r,n,i,a){this._x=t,this._y=e,this._x0=r,this._y0=n,this._x1=i,this._y1=a,this._root=void 0}function s(t){for(var e={data:t.data},r=e;t=t.next;)r=r.next={data:t.data};return e}var l=a.prototype=o.prototype;l.copy=function(){var t,e,r=new o(this._x,this._y,this._x0,this._y0,this._x1,this._y1),n=this._root;if(!n)return r;if(!n.length)return r._root=s(n),r;for(t=[{source:n,target:r._root=new Array(4)}];n=t.pop();)for(var i=0;i<4;++i)(e=n.source[i])&&(e.length?t.push({source:e,target:n.target[i]=new Array(4)}):n.target[i]=s(e));return r},l.add=function(t){var r=+this._x.call(null,t),n=+this._y.call(null,t);return e(this.cover(r,n),r,n,t)},l.addAll=function(t){var r,n,i,a,o=t.length,s=new Array(o),l=new Array(o),c=1/0,u=1/0,f=-1/0,h=-1/0;for(n=0;nf&&(f=i),ah&&(h=a));if(c>f||u>h)return this;for(this.cover(c,u).cover(f,h),n=0;nt||t>=i||n>e||e>=a;)switch(s=(ep||(o=c.y0)>d||(s=c.x1)=y)<<1|t>=v)&&(c=g[g.length-1],g[g.length-1]=g[g.length-1-u],g[g.length-1-u]=c)}else{var x=t-+this._x.call(null,m.data),b=e-+this._y.call(null,m.data),_=x*x+b*b;if(_=(s=(d+m)/2))?d=s:m=s,(u=o>=(l=(g+v)/2))?g=l:v=l,e=p,!(p=p[f=u<<1|c]))return this;if(!p.length)break;(e[f+1&3]||e[f+2&3]||e[f+3&3])&&(r=e,h=f)}for(;p.data!==t;)if(n=p,!(p=p.next))return this;return(i=p.next)&&delete p.next,n?(i?n.next=i:delete n.next,this):e?(i?e[f]=i:delete e[f],(p=e[0]||e[1]||e[2]||e[3])&&p===(e[3]||e[2]||e[1]||e[0])&&!p.length&&(r?r[h]=p:this._root=p),this):(this._root=i,this)},l.removeAll=function(t){for(var e=0,r=t.length;e1?0:t<-1?u:Math.acos(t)}function d(t){return t>=1?f:t<=-1?-f:Math.asin(t)}function g(t){return t.innerRadius}function m(t){return t.outerRadius}function v(t){return t.startAngle}function y(t){return t.endAngle}function x(t){return t&&t.padAngle}function b(t,e,r,n,i,a,o,s){var l=r-t,c=n-e,u=o-i,f=s-a,h=f*l-u*c;if(!(h*h<1e-12))return[t+(h=(u*(e-a)-f*(t-i))/h)*l,e+h*c]}function _(t,e,r,n,i,a,s){var l=t-r,u=e-n,f=(s?a:-a)/c(l*l+u*u),h=f*u,p=-f*l,d=t+h,g=e+p,m=r+h,v=n+p,y=(d+m)/2,x=(g+v)/2,b=m-d,_=v-g,w=b*b+_*_,T=i-a,k=d*v-m*g,A=(_<0?-1:1)*c(o(0,T*T*w-k*k)),M=(k*_-b*A)/w,S=(-k*b-_*A)/w,E=(k*_+b*A)/w,L=(-k*b+_*A)/w,C=M-y,P=S-x,I=E-y,O=L-x;return C*C+P*P>I*I+O*O&&(M=E,S=L),{cx:M,cy:S,x01:-h,y01:-p,x11:M*(i/T-1),y11:S*(i/T-1)}}function w(t){this._context=t}function T(t){return new w(t)}function k(t){return t[0]}function A(t){return t[1]}function M(){var t=k,n=A,i=r(!0),a=null,o=T,s=null;function l(r){var l,c,u,f=r.length,h=!1;for(null==a&&(s=o(u=e.path())),l=0;l<=f;++l)!(l=f;--h)c.point(v[h],y[h]);c.lineEnd(),c.areaEnd()}m&&(v[u]=+t(p,u,r),y[u]=+i(p,u,r),c.point(n?+n(p,u,r):v[u],a?+a(p,u,r):y[u]))}if(d)return c=null,d+\"\"||null}function f(){return M().defined(o).curve(l).context(s)}return u.x=function(e){return arguments.length?(t=\"function\"==typeof e?e:r(+e),n=null,u):t},u.x0=function(e){return arguments.length?(t=\"function\"==typeof e?e:r(+e),u):t},u.x1=function(t){return arguments.length?(n=null==t?null:\"function\"==typeof t?t:r(+t),u):n},u.y=function(t){return arguments.length?(i=\"function\"==typeof t?t:r(+t),a=null,u):i},u.y0=function(t){return arguments.length?(i=\"function\"==typeof t?t:r(+t),u):i},u.y1=function(t){return arguments.length?(a=null==t?null:\"function\"==typeof t?t:r(+t),u):a},u.lineX0=u.lineY0=function(){return f().x(t).y(i)},u.lineY1=function(){return f().x(t).y(a)},u.lineX1=function(){return f().x(n).y(i)},u.defined=function(t){return arguments.length?(o=\"function\"==typeof t?t:r(!!t),u):o},u.curve=function(t){return arguments.length?(l=t,null!=s&&(c=l(s)),u):l},u.context=function(t){return arguments.length?(null==t?s=c=null:c=l(s=t),u):s},u}function E(t,e){return et?1:e>=t?0:NaN}function L(t){return t}w.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e)}}};var C=I(T);function P(t){this._curve=t}function I(t){function e(e){return new P(t(e))}return e._curve=t,e}function O(t){var e=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?e(I(t)):e()._curve},t}function z(){return O(M().curve(C))}function D(){var t=S().curve(C),e=t.curve,r=t.lineX0,n=t.lineX1,i=t.lineY0,a=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return O(r())},delete t.lineX0,t.lineEndAngle=function(){return O(n())},delete t.lineX1,t.lineInnerRadius=function(){return O(i())},delete t.lineY0,t.lineOuterRadius=function(){return O(a())},delete t.lineY1,t.curve=function(t){return arguments.length?e(I(t)):e()._curve},t}function R(t,e){return[(e=+e)*Math.cos(t-=Math.PI/2),e*Math.sin(t)]}P.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,e){this._curve.point(e*Math.sin(t),e*-Math.cos(t))}};var F=Array.prototype.slice;function B(t){return t.source}function N(t){return t.target}function j(t){var n=B,i=N,a=k,o=A,s=null;function l(){var r,l=F.call(arguments),c=n.apply(this,l),u=i.apply(this,l);if(s||(s=r=e.path()),t(s,+a.apply(this,(l[0]=c,l)),+o.apply(this,l),+a.apply(this,(l[0]=u,l)),+o.apply(this,l)),r)return s=null,r+\"\"||null}return l.source=function(t){return arguments.length?(n=t,l):n},l.target=function(t){return arguments.length?(i=t,l):i},l.x=function(t){return arguments.length?(a=\"function\"==typeof t?t:r(+t),l):a},l.y=function(t){return arguments.length?(o=\"function\"==typeof t?t:r(+t),l):o},l.context=function(t){return arguments.length?(s=null==t?null:t,l):s},l}function U(t,e,r,n,i){t.moveTo(e,r),t.bezierCurveTo(e=(e+n)/2,r,e,i,n,i)}function V(t,e,r,n,i){t.moveTo(e,r),t.bezierCurveTo(e,r=(r+i)/2,n,r,n,i)}function H(t,e,r,n,i){var a=R(e,r),o=R(e,r=(r+i)/2),s=R(n,r),l=R(n,i);t.moveTo(a[0],a[1]),t.bezierCurveTo(o[0],o[1],s[0],s[1],l[0],l[1])}var q={draw:function(t,e){var r=Math.sqrt(e/u);t.moveTo(r,0),t.arc(0,0,r,0,h)}},G={draw:function(t,e){var r=Math.sqrt(e/5)/2;t.moveTo(-3*r,-r),t.lineTo(-r,-r),t.lineTo(-r,-3*r),t.lineTo(r,-3*r),t.lineTo(r,-r),t.lineTo(3*r,-r),t.lineTo(3*r,r),t.lineTo(r,r),t.lineTo(r,3*r),t.lineTo(-r,3*r),t.lineTo(-r,r),t.lineTo(-3*r,r),t.closePath()}},Y=Math.sqrt(1/3),W=2*Y,X={draw:function(t,e){var r=Math.sqrt(e/W),n=r*Y;t.moveTo(0,-r),t.lineTo(n,0),t.lineTo(0,r),t.lineTo(-n,0),t.closePath()}},Z=Math.sin(u/10)/Math.sin(7*u/10),J=Math.sin(h/10)*Z,K=-Math.cos(h/10)*Z,Q={draw:function(t,e){var r=Math.sqrt(.8908130915292852*e),n=J*r,i=K*r;t.moveTo(0,-r),t.lineTo(n,i);for(var a=1;a<5;++a){var o=h*a/5,s=Math.cos(o),l=Math.sin(o);t.lineTo(l*r,-s*r),t.lineTo(s*n-l*i,l*n+s*i)}t.closePath()}},$={draw:function(t,e){var r=Math.sqrt(e),n=-r/2;t.rect(n,n,r,r)}},tt=Math.sqrt(3),et={draw:function(t,e){var r=-Math.sqrt(e/(3*tt));t.moveTo(0,2*r),t.lineTo(-tt*r,-r),t.lineTo(tt*r,-r),t.closePath()}},rt=-.5,nt=Math.sqrt(3)/2,it=1/Math.sqrt(12),at=3*(it/2+1),ot={draw:function(t,e){var r=Math.sqrt(e/at),n=r/2,i=r*it,a=n,o=r*it+r,s=-a,l=o;t.moveTo(n,i),t.lineTo(a,o),t.lineTo(s,l),t.lineTo(rt*n-nt*i,nt*n+rt*i),t.lineTo(rt*a-nt*o,nt*a+rt*o),t.lineTo(rt*s-nt*l,nt*s+rt*l),t.lineTo(rt*n+nt*i,rt*i-nt*n),t.lineTo(rt*a+nt*o,rt*o-nt*a),t.lineTo(rt*s+nt*l,rt*l-nt*s),t.closePath()}},st=[q,G,X,$,Q,et,ot];function lt(){}function ct(t,e,r){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+r)/6)}function ut(t){this._context=t}function ft(t){this._context=t}function ht(t){this._context=t}function pt(t,e){this._basis=new ut(t),this._beta=e}ut.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:ct(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:ct(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},ft.prototype={areaStart:lt,areaEnd:lt,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:ct(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},ht.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+t)/6,n=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(r,n):this._context.moveTo(r,n);break;case 3:this._point=4;default:ct(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},pt.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,r=t.length-1;if(r>0)for(var n,i=t[0],a=e[0],o=t[r]-i,s=e[r]-a,l=-1;++l<=r;)n=l/r,this._basis.point(this._beta*t[l]+(1-this._beta)*(i+n*o),this._beta*e[l]+(1-this._beta)*(a+n*s));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};var dt=function t(e){function r(t){return 1===e?new ut(t):new pt(t,e)}return r.beta=function(e){return t(+e)},r}(.85);function gt(t,e,r){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-r),t._x2,t._y2)}function mt(t,e){this._context=t,this._k=(1-e)/6}mt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:gt(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:gt(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var vt=function t(e){function r(t){return new mt(t,e)}return r.tension=function(e){return t(+e)},r}(0);function yt(t,e){this._context=t,this._k=(1-e)/6}yt.prototype={areaStart:lt,areaEnd:lt,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:gt(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var xt=function t(e){function r(t){return new yt(t,e)}return r.tension=function(e){return t(+e)},r}(0);function bt(t,e){this._context=t,this._k=(1-e)/6}bt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:gt(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var _t=function t(e){function r(t){return new bt(t,e)}return r.tension=function(e){return t(+e)},r}(0);function wt(t,e,r){var n=t._x1,i=t._y1,a=t._x2,o=t._y2;if(t._l01_a>1e-12){var s=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,l=3*t._l01_a*(t._l01_a+t._l12_a);n=(n*s-t._x0*t._l12_2a+t._x2*t._l01_2a)/l,i=(i*s-t._y0*t._l12_2a+t._y2*t._l01_2a)/l}if(t._l23_a>1e-12){var c=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,u=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*c+t._x1*t._l23_2a-e*t._l12_2a)/u,o=(o*c+t._y1*t._l23_2a-r*t._l12_2a)/u}t._context.bezierCurveTo(n,i,a,o,t._x2,t._y2)}function Tt(t,e){this._context=t,this._alpha=e}Tt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:wt(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var kt=function t(e){function r(t){return e?new Tt(t,e):new mt(t,0)}return r.alpha=function(e){return t(+e)},r}(.5);function At(t,e){this._context=t,this._alpha=e}At.prototype={areaStart:lt,areaEnd:lt,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:wt(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Mt=function t(e){function r(t){return e?new At(t,e):new yt(t,0)}return r.alpha=function(e){return t(+e)},r}(.5);function St(t,e){this._context=t,this._alpha=e}St.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:wt(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Et=function t(e){function r(t){return e?new St(t,e):new bt(t,0)}return r.alpha=function(e){return t(+e)},r}(.5);function Lt(t){this._context=t}function Ct(t){return t<0?-1:1}function Pt(t,e,r){var n=t._x1-t._x0,i=e-t._x1,a=(t._y1-t._y0)/(n||i<0&&-0),o=(r-t._y1)/(i||n<0&&-0),s=(a*i+o*n)/(n+i);return(Ct(a)+Ct(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(s))||0}function It(t,e){var r=t._x1-t._x0;return r?(3*(t._y1-t._y0)/r-e)/2:e}function Ot(t,e,r){var n=t._x0,i=t._y0,a=t._x1,o=t._y1,s=(a-n)/3;t._context.bezierCurveTo(n+s,i+s*e,a-s,o-s*r,a,o)}function zt(t){this._context=t}function Dt(t){this._context=new Rt(t)}function Rt(t){this._context=t}function Ft(t){this._context=t}function Bt(t){var e,r,n=t.length-1,i=new Array(n),a=new Array(n),o=new Array(n);for(i[0]=0,a[0]=2,o[0]=t[0]+2*t[1],e=1;e=0;--e)i[e]=(o[e]-i[e+1])/a[e];for(a[n-1]=(t[n]+i[n-1])/2,e=0;e1)for(var r,n,i,a=1,o=t[e[0]],s=o.length;a=0;)r[e]=e;return r}function Vt(t,e){return t[e]}function Ht(t){var e=t.map(qt);return Ut(t).sort((function(t,r){return e[t]-e[r]}))}function qt(t){for(var e,r=-1,n=0,i=t.length,a=-1/0;++ra&&(a=e,n=r);return n}function Gt(t){var e=t.map(Yt);return Ut(t).sort((function(t,r){return e[t]-e[r]}))}function Yt(t){for(var e,r=0,n=-1,i=t.length;++n=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var r=this._x*(1-this._t)+t*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,e)}}this._x=t,this._y=e}},t.arc=function(){var t=g,o=m,w=r(0),T=null,k=v,A=y,M=x,S=null;function E(){var r,g,m=+t.apply(this,arguments),v=+o.apply(this,arguments),y=k.apply(this,arguments)-f,x=A.apply(this,arguments)-f,E=n(x-y),L=x>y;if(S||(S=r=e.path()),v1e-12)if(E>h-1e-12)S.moveTo(v*a(y),v*l(y)),S.arc(0,0,v,y,x,!L),m>1e-12&&(S.moveTo(m*a(x),m*l(x)),S.arc(0,0,m,x,y,L));else{var C,P,I=y,O=x,z=y,D=x,R=E,F=E,B=M.apply(this,arguments)/2,N=B>1e-12&&(T?+T.apply(this,arguments):c(m*m+v*v)),j=s(n(v-m)/2,+w.apply(this,arguments)),U=j,V=j;if(N>1e-12){var H=d(N/m*l(B)),q=d(N/v*l(B));(R-=2*H)>1e-12?(z+=H*=L?1:-1,D-=H):(R=0,z=D=(y+x)/2),(F-=2*q)>1e-12?(I+=q*=L?1:-1,O-=q):(F=0,I=O=(y+x)/2)}var G=v*a(I),Y=v*l(I),W=m*a(D),X=m*l(D);if(j>1e-12){var Z,J=v*a(O),K=v*l(O),Q=m*a(z),$=m*l(z);if(E1e-12?V>1e-12?(C=_(Q,$,G,Y,v,V,L),P=_(J,K,W,X,v,V,L),S.moveTo(C.cx+C.x01,C.cy+C.y01),V1e-12&&R>1e-12?U>1e-12?(C=_(W,X,J,K,m,-U,L),P=_(G,Y,Q,$,m,-U,L),S.lineTo(C.cx+C.x01,C.cy+C.y01),U0&&(d+=f);for(null!=e?g.sort((function(t,r){return e(m[t],m[r])})):null!=n&&g.sort((function(t,e){return n(r[t],r[e])})),s=0,c=d?(y-p*b)/d:0;s0?f*c:0)+b,m[l]={data:r[l],index:s,value:f,startAngle:v,endAngle:u,padAngle:x};return m}return s.value=function(e){return arguments.length?(t=\"function\"==typeof e?e:r(+e),s):t},s.sortValues=function(t){return arguments.length?(e=t,n=null,s):e},s.sort=function(t){return arguments.length?(n=t,e=null,s):n},s.startAngle=function(t){return arguments.length?(i=\"function\"==typeof t?t:r(+t),s):i},s.endAngle=function(t){return arguments.length?(a=\"function\"==typeof t?t:r(+t),s):a},s.padAngle=function(t){return arguments.length?(o=\"function\"==typeof t?t:r(+t),s):o},s},t.pointRadial=R,t.radialArea=D,t.radialLine=z,t.stack=function(){var t=r([]),e=Ut,n=jt,i=Vt;function a(r){var a,o,s=t.apply(this,arguments),l=r.length,c=s.length,u=new Array(c);for(a=0;a0)for(var r,n,i,a,o,s,l=0,c=t[e[0]].length;l0?(n[0]=a,n[1]=a+=i):i<0?(n[1]=o,n[0]=o+=i):(n[0]=0,n[1]=i)},t.stackOffsetExpand=function(t,e){if((n=t.length)>0){for(var r,n,i,a=0,o=t[0].length;a0){for(var r,n=0,i=t[e[0]],a=i.length;n0&&(n=(r=t[e[0]]).length)>0){for(var r,n,i,a=0,o=1;o=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:mt,s:vt,S:H,u:q,U:G,V:Y,w:W,W:X,x:null,X:null,y:Z,Y:J,Z:K,\"%\":gt},Ct={a:function(t){return f[t.getUTCDay()]},A:function(t){return u[t.getUTCDay()]},b:function(t){return yt[t.getUTCMonth()]},B:function(t){return h[t.getUTCMonth()]},c:null,d:Q,e:Q,f:nt,H:$,I:tt,j:et,L:rt,m:it,M:at,p:function(t){return c[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:mt,s:vt,S:ot,u:st,U:lt,V:ct,w:ut,W:ft,x:null,X:null,y:ht,Y:pt,Z:dt,\"%\":gt},Pt={a:function(t,e,r){var n=Tt.exec(e.slice(r));return n?(t.w=kt[n[0].toLowerCase()],r+n[0].length):-1},A:function(t,e,r){var n=_t.exec(e.slice(r));return n?(t.w=wt[n[0].toLowerCase()],r+n[0].length):-1},b:function(t,e,r){var n=St.exec(e.slice(r));return n?(t.m=Et[n[0].toLowerCase()],r+n[0].length):-1},B:function(t,e,r){var n=At.exec(e.slice(r));return n?(t.m=Mt[n[0].toLowerCase()],r+n[0].length):-1},c:function(t,e,r){return zt(t,a,e,r)},d:A,e:A,f:P,H:S,I:S,j:M,L:C,m:k,M:E,p:function(t,e,r){var n=xt.exec(e.slice(r));return n?(t.p=bt[n[0].toLowerCase()],r+n[0].length):-1},q:T,Q:O,s:z,S:L,u:m,U:v,V:y,w:g,W:x,x:function(t,e,r){return zt(t,o,e,r)},X:function(t,e,r){return zt(t,l,e,r)},y:_,Y:b,Z:w,\"%\":I};function It(t,e){return function(r){var n,i,a,o=[],l=-1,c=0,u=t.length;for(r instanceof Date||(r=new Date(+r));++l53)return null;\"w\"in c||(c.w=1),\"Z\"in c?(l=(s=n(i(c.y,0,1))).getUTCDay(),s=l>4||0===l?e.utcMonday.ceil(s):e.utcMonday(s),s=e.utcDay.offset(s,7*(c.V-1)),c.y=s.getUTCFullYear(),c.m=s.getUTCMonth(),c.d=s.getUTCDate()+(c.w+6)%7):(l=(s=r(i(c.y,0,1))).getDay(),s=l>4||0===l?e.timeMonday.ceil(s):e.timeMonday(s),s=e.timeDay.offset(s,7*(c.V-1)),c.y=s.getFullYear(),c.m=s.getMonth(),c.d=s.getDate()+(c.w+6)%7)}else(\"W\"in c||\"U\"in c)&&(\"w\"in c||(c.w=\"u\"in c?c.u%7:\"W\"in c?1:0),l=\"Z\"in c?n(i(c.y,0,1)).getUTCDay():r(i(c.y,0,1)).getDay(),c.m=0,c.d=\"W\"in c?(c.w+6)%7+7*c.W-(l+5)%7:c.w+7*c.U-(l+6)%7);return\"Z\"in c?(c.H+=c.Z/100|0,c.M+=c.Z%100,n(c)):r(c)}}function zt(t,e,r,n){for(var i,a,o=0,l=e.length,c=r.length;o=c)return-1;if(37===(i=e.charCodeAt(o++))){if(i=e.charAt(o++),!(a=Pt[i in s?e.charAt(o++):i])||(n=a(t,r,n))<0)return-1}else if(i!=r.charCodeAt(n++))return-1}return n}return Lt.x=It(o,Lt),Lt.X=It(l,Lt),Lt.c=It(a,Lt),Ct.x=It(o,Ct),Ct.X=It(l,Ct),Ct.c=It(a,Ct),{format:function(t){var e=It(t+=\"\",Lt);return e.toString=function(){return t},e},parse:function(t){var e=Ot(t+=\"\",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=It(t+=\"\",Ct);return e.toString=function(){return t},e},utcParse:function(t){var e=Ot(t+=\"\",!0);return e.toString=function(){return t},e}}}var o,s={\"-\":\"\",_:\" \",0:\"0\"},l=/^\\s*\\d+/,c=/^%/,u=/[\\\\^$*+?|[\\]().{}]/g;function f(t,e,r){var n=t<0?\"-\":\"\",i=(n?-t:t)+\"\",a=i.length;return n+(a68?1900:2e3),r+n[0].length):-1}function w(t,e,r){var n=/^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(e.slice(r,r+6));return n?(t.Z=n[1]?0:-(n[2]+(n[3]||\"00\")),r+n[0].length):-1}function T(t,e,r){var n=l.exec(e.slice(r,r+1));return n?(t.q=3*n[0]-3,r+n[0].length):-1}function k(t,e,r){var n=l.exec(e.slice(r,r+2));return n?(t.m=n[0]-1,r+n[0].length):-1}function A(t,e,r){var n=l.exec(e.slice(r,r+2));return n?(t.d=+n[0],r+n[0].length):-1}function M(t,e,r){var n=l.exec(e.slice(r,r+3));return n?(t.m=0,t.d=+n[0],r+n[0].length):-1}function S(t,e,r){var n=l.exec(e.slice(r,r+2));return n?(t.H=+n[0],r+n[0].length):-1}function E(t,e,r){var n=l.exec(e.slice(r,r+2));return n?(t.M=+n[0],r+n[0].length):-1}function L(t,e,r){var n=l.exec(e.slice(r,r+2));return n?(t.S=+n[0],r+n[0].length):-1}function C(t,e,r){var n=l.exec(e.slice(r,r+3));return n?(t.L=+n[0],r+n[0].length):-1}function P(t,e,r){var n=l.exec(e.slice(r,r+6));return n?(t.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function I(t,e,r){var n=c.exec(e.slice(r,r+1));return n?r+n[0].length:-1}function O(t,e,r){var n=l.exec(e.slice(r));return n?(t.Q=+n[0],r+n[0].length):-1}function z(t,e,r){var n=l.exec(e.slice(r));return n?(t.s=+n[0],r+n[0].length):-1}function D(t,e){return f(t.getDate(),e,2)}function R(t,e){return f(t.getHours(),e,2)}function F(t,e){return f(t.getHours()%12||12,e,2)}function B(t,r){return f(1+e.timeDay.count(e.timeYear(t),t),r,3)}function N(t,e){return f(t.getMilliseconds(),e,3)}function j(t,e){return N(t,e)+\"000\"}function U(t,e){return f(t.getMonth()+1,e,2)}function V(t,e){return f(t.getMinutes(),e,2)}function H(t,e){return f(t.getSeconds(),e,2)}function q(t){var e=t.getDay();return 0===e?7:e}function G(t,r){return f(e.timeSunday.count(e.timeYear(t)-1,t),r,2)}function Y(t,r){var n=t.getDay();return t=n>=4||0===n?e.timeThursday(t):e.timeThursday.ceil(t),f(e.timeThursday.count(e.timeYear(t),t)+(4===e.timeYear(t).getDay()),r,2)}function W(t){return t.getDay()}function X(t,r){return f(e.timeMonday.count(e.timeYear(t)-1,t),r,2)}function Z(t,e){return f(t.getFullYear()%100,e,2)}function J(t,e){return f(t.getFullYear()%1e4,e,4)}function K(t){var e=t.getTimezoneOffset();return(e>0?\"-\":(e*=-1,\"+\"))+f(e/60|0,\"0\",2)+f(e%60,\"0\",2)}function Q(t,e){return f(t.getUTCDate(),e,2)}function $(t,e){return f(t.getUTCHours(),e,2)}function tt(t,e){return f(t.getUTCHours()%12||12,e,2)}function et(t,r){return f(1+e.utcDay.count(e.utcYear(t),t),r,3)}function rt(t,e){return f(t.getUTCMilliseconds(),e,3)}function nt(t,e){return rt(t,e)+\"000\"}function it(t,e){return f(t.getUTCMonth()+1,e,2)}function at(t,e){return f(t.getUTCMinutes(),e,2)}function ot(t,e){return f(t.getUTCSeconds(),e,2)}function st(t){var e=t.getUTCDay();return 0===e?7:e}function lt(t,r){return f(e.utcSunday.count(e.utcYear(t)-1,t),r,2)}function ct(t,r){var n=t.getUTCDay();return t=n>=4||0===n?e.utcThursday(t):e.utcThursday.ceil(t),f(e.utcThursday.count(e.utcYear(t),t)+(4===e.utcYear(t).getUTCDay()),r,2)}function ut(t){return t.getUTCDay()}function ft(t,r){return f(e.utcMonday.count(e.utcYear(t)-1,t),r,2)}function ht(t,e){return f(t.getUTCFullYear()%100,e,2)}function pt(t,e){return f(t.getUTCFullYear()%1e4,e,4)}function dt(){return\"+0000\"}function gt(){return\"%\"}function mt(t){return+t}function vt(t){return Math.floor(+t/1e3)}function yt(e){return o=a(e),t.timeFormat=o.format,t.timeParse=o.parse,t.utcFormat=o.utcFormat,t.utcParse=o.utcParse,o}yt({dateTime:\"%x, %X\",date:\"%-m/%-d/%Y\",time:\"%-I:%M:%S %p\",periods:[\"AM\",\"PM\"],days:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],shortDays:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],months:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],shortMonths:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"]});var xt=Date.prototype.toISOString?function(t){return t.toISOString()}:t.utcFormat(\"%Y-%m-%dT%H:%M:%S.%LZ\");var bt=+new Date(\"2000-01-01T00:00:00.000Z\")?function(t){var e=new Date(t);return isNaN(e)?null:e}:t.utcParse(\"%Y-%m-%dT%H:%M:%S.%LZ\");t.isoFormat=xt,t.isoParse=bt,t.timeFormatDefaultLocale=yt,t.timeFormatLocale=a,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{\"d3-time\":121}],121:[function(t,e,r){!function(t,n){\"object\"==typeof r&&void 0!==e?n(r):n((t=t||self).d3=t.d3||{})}(this,(function(t){\"use strict\";var e=new Date,r=new Date;function n(t,i,a,o){function s(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return s.floor=function(e){return t(e=new Date(+e)),e},s.ceil=function(e){return t(e=new Date(e-1)),i(e,1),t(e),e},s.round=function(t){var e=s(t),r=s.ceil(t);return t-e0))return o;do{o.push(a=new Date(+e)),i(e,n),t(e)}while(a=r)for(;t(r),!e(r);)r.setTime(r-1)}),(function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;i(t,-1),!e(t););else for(;--r>=0;)for(;i(t,1),!e(t););}))},a&&(s.count=function(n,i){return e.setTime(+n),r.setTime(+i),t(e),t(r),Math.floor(a(e,r))},s.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?s.filter(o?function(e){return o(e)%t==0}:function(e){return s.count(0,e)%t==0}):s:null}),s}var i=n((function(){}),(function(t,e){t.setTime(+t+e)}),(function(t,e){return e-t}));i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?n((function(e){e.setTime(Math.floor(e/t)*t)}),(function(e,r){e.setTime(+e+r*t)}),(function(e,r){return(r-e)/t})):i:null};var a=i.range,o=n((function(t){t.setTime(t-t.getMilliseconds())}),(function(t,e){t.setTime(+t+1e3*e)}),(function(t,e){return(e-t)/1e3}),(function(t){return t.getUTCSeconds()})),s=o.range,l=n((function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds())}),(function(t,e){t.setTime(+t+6e4*e)}),(function(t,e){return(e-t)/6e4}),(function(t){return t.getMinutes()})),c=l.range,u=n((function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds()-6e4*t.getMinutes())}),(function(t,e){t.setTime(+t+36e5*e)}),(function(t,e){return(e-t)/36e5}),(function(t){return t.getHours()})),f=u.range,h=n((function(t){t.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+e)}),(function(t,e){return(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/864e5}),(function(t){return t.getDate()-1})),p=h.range;function d(t){return n((function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+7*e)}),(function(t,e){return(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/6048e5}))}var g=d(0),m=d(1),v=d(2),y=d(3),x=d(4),b=d(5),_=d(6),w=g.range,T=m.range,k=v.range,A=y.range,M=x.range,S=b.range,E=_.range,L=n((function(t){t.setDate(1),t.setHours(0,0,0,0)}),(function(t,e){t.setMonth(t.getMonth()+e)}),(function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())}),(function(t){return t.getMonth()})),C=L.range,P=n((function(t){t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,e){t.setFullYear(t.getFullYear()+e)}),(function(t,e){return e.getFullYear()-t.getFullYear()}),(function(t){return t.getFullYear()}));P.every=function(t){return isFinite(t=Math.floor(t))&&t>0?n((function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),(function(e,r){e.setFullYear(e.getFullYear()+r*t)})):null};var I=P.range,O=n((function(t){t.setUTCSeconds(0,0)}),(function(t,e){t.setTime(+t+6e4*e)}),(function(t,e){return(e-t)/6e4}),(function(t){return t.getUTCMinutes()})),z=O.range,D=n((function(t){t.setUTCMinutes(0,0,0)}),(function(t,e){t.setTime(+t+36e5*e)}),(function(t,e){return(e-t)/36e5}),(function(t){return t.getUTCHours()})),R=D.range,F=n((function(t){t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+e)}),(function(t,e){return(e-t)/864e5}),(function(t){return t.getUTCDate()-1})),B=F.range;function N(t){return n((function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+7*e)}),(function(t,e){return(e-t)/6048e5}))}var j=N(0),U=N(1),V=N(2),H=N(3),q=N(4),G=N(5),Y=N(6),W=j.range,X=U.range,Z=V.range,J=H.range,K=q.range,Q=G.range,$=Y.range,tt=n((function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCMonth(t.getUTCMonth()+e)}),(function(t,e){return e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())}),(function(t){return t.getUTCMonth()})),et=tt.range,rt=n((function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)}),(function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()}),(function(t){return t.getUTCFullYear()}));rt.every=function(t){return isFinite(t=Math.floor(t))&&t>0?n((function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),(function(e,r){e.setUTCFullYear(e.getUTCFullYear()+r*t)})):null};var nt=rt.range;t.timeDay=h,t.timeDays=p,t.timeFriday=b,t.timeFridays=S,t.timeHour=u,t.timeHours=f,t.timeInterval=n,t.timeMillisecond=i,t.timeMilliseconds=a,t.timeMinute=l,t.timeMinutes=c,t.timeMonday=m,t.timeMondays=T,t.timeMonth=L,t.timeMonths=C,t.timeSaturday=_,t.timeSaturdays=E,t.timeSecond=o,t.timeSeconds=s,t.timeSunday=g,t.timeSundays=w,t.timeThursday=x,t.timeThursdays=M,t.timeTuesday=v,t.timeTuesdays=k,t.timeWednesday=y,t.timeWednesdays=A,t.timeWeek=g,t.timeWeeks=w,t.timeYear=P,t.timeYears=I,t.utcDay=F,t.utcDays=B,t.utcFriday=G,t.utcFridays=Q,t.utcHour=D,t.utcHours=R,t.utcMillisecond=i,t.utcMilliseconds=a,t.utcMinute=O,t.utcMinutes=z,t.utcMonday=U,t.utcMondays=X,t.utcMonth=tt,t.utcMonths=et,t.utcSaturday=Y,t.utcSaturdays=$,t.utcSecond=o,t.utcSeconds=s,t.utcSunday=j,t.utcSundays=W,t.utcThursday=q,t.utcThursdays=K,t.utcTuesday=V,t.utcTuesdays=Z,t.utcWednesday=H,t.utcWednesdays=J,t.utcWeek=j,t.utcWeeks=W,t.utcYear=rt,t.utcYears=nt,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{}],122:[function(t,e,r){arguments[4][121][0].apply(r,arguments)},{dup:121}],123:[function(t,e,r){!function(t,n){\"object\"==typeof r&&void 0!==e?n(r):n((t=t||self).d3=t.d3||{})}(this,(function(t){\"use strict\";var e,r,n=0,i=0,a=0,o=0,s=0,l=0,c=\"object\"==typeof performance&&performance.now?performance:Date,u=\"object\"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function f(){return s||(u(h),s=c.now()+l)}function h(){s=0}function p(){this._call=this._time=this._next=null}function d(t,e,r){var n=new p;return n.restart(t,e,r),n}function g(){f(),++n;for(var t,r=e;r;)(t=s-r._time)>=0&&r._call.call(null,t),r=r._next;--n}function m(){s=(o=c.now())+l,n=i=0;try{g()}finally{n=0,function(){var t,n,i=e,a=1/0;for(;i;)i._call?(a>i._time&&(a=i._time),t=i,i=i._next):(n=i._next,i._next=null,i=t?t._next=n:e=n);r=t,y(a)}(),s=0}}function v(){var t=c.now(),e=t-o;e>1e3&&(l-=e,o=t)}function y(t){n||(i&&(i=clearTimeout(i)),t-s>24?(t<1/0&&(i=setTimeout(m,t-c.now()-l)),a&&(a=clearInterval(a))):(a||(o=c.now(),a=setInterval(v,1e3)),n=1,u(m)))}p.prototype=d.prototype={constructor:p,restart:function(t,n,i){if(\"function\"!=typeof t)throw new TypeError(\"callback is not a function\");i=(null==i?f():+i)+(null==n?0:+n),this._next||r===this||(r?r._next=this:e=this,r=this),this._call=t,this._time=i,y()},stop:function(){this._call&&(this._call=null,this._time=1/0,y())}},t.interval=function(t,e,r){var n=new p,i=e;return null==e?(n.restart(t,e,r),n):(e=+e,r=null==r?f():+r,n.restart((function a(o){o+=i,n.restart(a,i+=e,r),t(o)}),e,r),n)},t.now=f,t.timeout=function(t,e,r){var n=new p;return e=null==e?0:+e,n.restart((function(r){n.stop(),t(r+e)}),e,r),n},t.timer=d,t.timerFlush=g,Object.defineProperty(t,\"__esModule\",{value:!0})}))},{}],124:[function(t,e,r){e.exports=function(){for(var t=0;ts*l){var p=(h-f)/s;a[u]=1e3*p}}return a}function o(t){for(var e=[],r=t[0];r<=t[1];r++)for(var n=String.fromCharCode(r),i=t[0];i0)return function(t,e){var r,n;for(r=new Array(t),n=0;n80*r){n=l=t[0],s=c=t[1];for(var b=r;bl&&(l=u),p>c&&(c=p);d=0!==(d=Math.max(l-n,c-s))?1/d:0}return o(y,x,r,n,s,d),x}function i(t,e,r,n,i){var a,o;if(i===E(t,e,r,n)>0)for(a=e;a=e;a-=n)o=A(a,t[a],t[a+1],o);return o&&x(o,o.next)&&(M(o),o=o.next),o}function a(t,e){if(!t)return t;e||(e=t);var r,n=t;do{if(r=!1,n.steiner||!x(n,n.next)&&0!==y(n.prev,n,n.next))n=n.next;else{if(M(n),(n=e=n.prev)===n.next)break;r=!0}}while(r||n!==e);return e}function o(t,e,r,n,i,f,h){if(t){!h&&f&&function(t,e,r,n){var i=t;do{null===i.z&&(i.z=d(i.x,i.y,e,r,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next}while(i!==t);i.prevZ.nextZ=null,i.prevZ=null,function(t){var e,r,n,i,a,o,s,l,c=1;do{for(r=t,t=null,a=null,o=0;r;){for(o++,n=r,s=0,e=0;e0||l>0&&n;)0!==s&&(0===l||!n||r.z<=n.z)?(i=r,r=r.nextZ,s--):(i=n,n=n.nextZ,l--),a?a.nextZ=i:t=i,i.prevZ=a,a=i;r=n}a.nextZ=null,c*=2}while(o>1)}(i)}(t,n,i,f);for(var p,g,m=t;t.prev!==t.next;)if(p=t.prev,g=t.next,f?l(t,n,i,f):s(t))e.push(p.i/r),e.push(t.i/r),e.push(g.i/r),M(t),t=g.next,m=g.next;else if((t=g)===m){h?1===h?o(t=c(a(t),e,r),e,r,n,i,f,2):2===h&&u(t,e,r,n,i,f):o(a(t),e,r,n,i,f,1);break}}}function s(t){var e=t.prev,r=t,n=t.next;if(y(e,r,n)>=0)return!1;for(var i=t.next.next;i!==t.prev;){if(m(e.x,e.y,r.x,r.y,n.x,n.y,i.x,i.y)&&y(i.prev,i,i.next)>=0)return!1;i=i.next}return!0}function l(t,e,r,n){var i=t.prev,a=t,o=t.next;if(y(i,a,o)>=0)return!1;for(var s=i.xa.x?i.x>o.x?i.x:o.x:a.x>o.x?a.x:o.x,u=i.y>a.y?i.y>o.y?i.y:o.y:a.y>o.y?a.y:o.y,f=d(s,l,e,r,n),h=d(c,u,e,r,n),p=t.prevZ,g=t.nextZ;p&&p.z>=f&&g&&g.z<=h;){if(p!==t.prev&&p!==t.next&&m(i.x,i.y,a.x,a.y,o.x,o.y,p.x,p.y)&&y(p.prev,p,p.next)>=0)return!1;if(p=p.prevZ,g!==t.prev&&g!==t.next&&m(i.x,i.y,a.x,a.y,o.x,o.y,g.x,g.y)&&y(g.prev,g,g.next)>=0)return!1;g=g.nextZ}for(;p&&p.z>=f;){if(p!==t.prev&&p!==t.next&&m(i.x,i.y,a.x,a.y,o.x,o.y,p.x,p.y)&&y(p.prev,p,p.next)>=0)return!1;p=p.prevZ}for(;g&&g.z<=h;){if(g!==t.prev&&g!==t.next&&m(i.x,i.y,a.x,a.y,o.x,o.y,g.x,g.y)&&y(g.prev,g,g.next)>=0)return!1;g=g.nextZ}return!0}function c(t,e,r){var n=t;do{var i=n.prev,o=n.next.next;!x(i,o)&&b(i,n,n.next,o)&&T(i,o)&&T(o,i)&&(e.push(i.i/r),e.push(n.i/r),e.push(o.i/r),M(n),M(n.next),n=t=o),n=n.next}while(n!==t);return a(n)}function u(t,e,r,n,i,s){var l=t;do{for(var c=l.next.next;c!==l.prev;){if(l.i!==c.i&&v(l,c)){var u=k(l,c);return l=a(l,l.next),u=a(u,u.next),o(l,e,r,n,i,s),void o(u,e,r,n,i,s)}c=c.next}l=l.next}while(l!==t)}function f(t,e){return t.x-e.x}function h(t,e){if(e=function(t,e){var r,n=e,i=t.x,a=t.y,o=-1/0;do{if(a<=n.y&&a>=n.next.y&&n.next.y!==n.y){var s=n.x+(a-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(s<=i&&s>o){if(o=s,s===i){if(a===n.y)return n;if(a===n.next.y)return n.next}r=n.x=n.x&&n.x>=u&&i!==n.x&&m(ar.x||n.x===r.x&&p(r,n)))&&(r=n,h=l)),n=n.next}while(n!==c);return r}(t,e)){var r=k(e,t);a(e,e.next),a(r,r.next)}}function p(t,e){return y(t.prev,t,e.prev)<0&&y(e.next,t,t.next)<0}function d(t,e,r,n,i){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-r)*i)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-n)*i)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function g(t){var e=t,r=t;do{(e.x=0&&(t-o)*(n-s)-(r-o)*(e-s)>=0&&(r-o)*(a-s)-(i-o)*(n-s)>=0}function v(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){var r=t;do{if(r.i!==t.i&&r.next.i!==t.i&&r.i!==e.i&&r.next.i!==e.i&&b(r,r.next,t,e))return!0;r=r.next}while(r!==t);return!1}(t,e)&&(T(t,e)&&T(e,t)&&function(t,e){var r=t,n=!1,i=(t.x+e.x)/2,a=(t.y+e.y)/2;do{r.y>a!=r.next.y>a&&r.next.y!==r.y&&i<(r.next.x-r.x)*(a-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next}while(r!==t);return n}(t,e)&&(y(t.prev,t,e.prev)||y(t,e.prev,e))||x(t,e)&&y(t.prev,t,t.next)>0&&y(e.prev,e,e.next)>0)}function y(t,e,r){return(e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y)}function x(t,e){return t.x===e.x&&t.y===e.y}function b(t,e,r,n){var i=w(y(t,e,r)),a=w(y(t,e,n)),o=w(y(r,n,t)),s=w(y(r,n,e));return i!==a&&o!==s||(!(0!==i||!_(t,r,e))||(!(0!==a||!_(t,n,e))||(!(0!==o||!_(r,t,n))||!(0!==s||!_(r,e,n)))))}function _(t,e,r){return e.x<=Math.max(t.x,r.x)&&e.x>=Math.min(t.x,r.x)&&e.y<=Math.max(t.y,r.y)&&e.y>=Math.min(t.y,r.y)}function w(t){return t>0?1:t<0?-1:0}function T(t,e){return y(t.prev,t,t.next)<0?y(t,e,t.next)>=0&&y(t,t.prev,e)>=0:y(t,e,t.prev)<0||y(t,t.next,e)<0}function k(t,e){var r=new S(t.i,t.x,t.y),n=new S(e.i,e.x,e.y),i=t.next,a=e.prev;return t.next=e,e.prev=t,r.next=i,i.prev=r,n.next=r,r.prev=n,a.next=n,n.prev=a,n}function A(t,e,r,n){var i=new S(t,e,r);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function M(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function S(t,e,r){this.i=t,this.x=e,this.y=r,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function E(t,e,r,n){for(var i=0,a=e,o=r-n;a0&&(n+=t[i-1].length,r.holes.push(n))}return r}},{}],130:[function(t,e,r){var n=t(\"strongly-connected-components\");e.exports=function(t,e){var r,i=[],a=[],o=[],s={},l=[];function c(t){var e,n,i=!1;for(a.push(t),o[t]=!0,e=0;e=e}))}(e);for(var r,i=n(t).components.filter((function(t){return t.length>1})),a=1/0,o=0;o=55296&&y<=56319&&(w+=t[++r]),w=T?h.call(T,k,w,g):w,e?(p.value=w,d(m,g,p)):m[g]=w,++g;v=g}if(void 0===v)for(v=o(t.length),e&&(m=new e(v)),r=0;r0?1:-1}},{}],141:[function(t,e,r){\"use strict\";var n=t(\"../math/sign\"),i=Math.abs,a=Math.floor;e.exports=function(t){return isNaN(t)?0:0!==(t=Number(t))&&isFinite(t)?n(t)*a(i(t)):t}},{\"../math/sign\":138}],142:[function(t,e,r){\"use strict\";var n=t(\"./to-integer\"),i=Math.max;e.exports=function(t){return i(0,n(t))}},{\"./to-integer\":141}],143:[function(t,e,r){\"use strict\";var n=t(\"./valid-callable\"),i=t(\"./valid-value\"),a=Function.prototype.bind,o=Function.prototype.call,s=Object.keys,l=Object.prototype.propertyIsEnumerable;e.exports=function(t,e){return function(r,c){var u,f=arguments[2],h=arguments[3];return r=Object(i(r)),n(c),u=s(r),h&&u.sort(\"function\"==typeof h?a.call(h,r):void 0),\"function\"!=typeof t&&(t=u[t]),o.call(t,u,(function(t,n){return l.call(r,t)?o.call(c,f,r[t],t,r,n):e}))}}},{\"./valid-callable\":160,\"./valid-value\":162}],144:[function(t,e,r){\"use strict\";e.exports=t(\"./is-implemented\")()?Object.assign:t(\"./shim\")},{\"./is-implemented\":145,\"./shim\":146}],145:[function(t,e,r){\"use strict\";e.exports=function(){var t,e=Object.assign;return\"function\"==typeof e&&(e(t={foo:\"raz\"},{bar:\"dwa\"},{trzy:\"trzy\"}),t.foo+t.bar+t.trzy===\"razdwatrzy\")}},{}],146:[function(t,e,r){\"use strict\";var n=t(\"../keys\"),i=t(\"../valid-value\"),a=Math.max;e.exports=function(t,e){var r,o,s,l=a(arguments.length,2);for(t=Object(i(t)),s=function(n){try{t[n]=e[n]}catch(t){r||(r=t)}},o=1;o-1}},{}],166:[function(t,e,r){\"use strict\";var n=Object.prototype.toString,i=n.call(\"\");e.exports=function(t){return\"string\"==typeof t||t&&\"object\"==typeof t&&(t instanceof String||n.call(t)===i)||!1}},{}],167:[function(t,e,r){\"use strict\";var n=Object.create(null),i=Math.random;e.exports=function(){var t;do{t=i().toString(36).slice(2)}while(n[t]);return t}},{}],168:[function(t,e,r){\"use strict\";var n,i=t(\"es5-ext/object/set-prototype-of\"),a=t(\"es5-ext/string/#/contains\"),o=t(\"d\"),s=t(\"es6-symbol\"),l=t(\"./\"),c=Object.defineProperty;n=e.exports=function(t,e){if(!(this instanceof n))throw new TypeError(\"Constructor requires 'new'\");l.call(this,t),e=e?a.call(e,\"key+value\")?\"key+value\":a.call(e,\"key\")?\"key\":\"value\":\"value\",c(this,\"__kind__\",o(\"\",e))},i&&i(n,l),delete n.prototype.constructor,n.prototype=Object.create(l.prototype,{_resolve:o((function(t){return\"value\"===this.__kind__?this.__list__[t]:\"key+value\"===this.__kind__?[t,this.__list__[t]]:t}))}),c(n.prototype,s.toStringTag,o(\"c\",\"Array Iterator\"))},{\"./\":171,d:106,\"es5-ext/object/set-prototype-of\":157,\"es5-ext/string/#/contains\":163,\"es6-symbol\":175}],169:[function(t,e,r){\"use strict\";var n=t(\"es5-ext/function/is-arguments\"),i=t(\"es5-ext/object/valid-callable\"),a=t(\"es5-ext/string/is-string\"),o=t(\"./get\"),s=Array.isArray,l=Function.prototype.call,c=Array.prototype.some;e.exports=function(t,e){var r,u,f,h,p,d,g,m,v=arguments[2];if(s(t)||n(t)?r=\"array\":a(t)?r=\"string\":t=o(t),i(e),f=function(){h=!0},\"array\"!==r)if(\"string\"!==r)for(u=t.next();!u.done;){if(l.call(e,v,u.value,f),h)return;u=t.next()}else for(d=t.length,p=0;p=55296&&m<=56319&&(g+=t[++p]),l.call(e,v,g,f),!h);++p);else c.call(t,(function(t){return l.call(e,v,t,f),h}))}},{\"./get\":170,\"es5-ext/function/is-arguments\":135,\"es5-ext/object/valid-callable\":160,\"es5-ext/string/is-string\":166}],170:[function(t,e,r){\"use strict\";var n=t(\"es5-ext/function/is-arguments\"),i=t(\"es5-ext/string/is-string\"),a=t(\"./array\"),o=t(\"./string\"),s=t(\"./valid-iterable\"),l=t(\"es6-symbol\").iterator;e.exports=function(t){return\"function\"==typeof s(t)[l]?t[l]():n(t)?new a(t):i(t)?new o(t):new a(t)}},{\"./array\":168,\"./string\":173,\"./valid-iterable\":174,\"es5-ext/function/is-arguments\":135,\"es5-ext/string/is-string\":166,\"es6-symbol\":175}],171:[function(t,e,r){\"use strict\";var n,i=t(\"es5-ext/array/#/clear\"),a=t(\"es5-ext/object/assign\"),o=t(\"es5-ext/object/valid-callable\"),s=t(\"es5-ext/object/valid-value\"),l=t(\"d\"),c=t(\"d/auto-bind\"),u=t(\"es6-symbol\"),f=Object.defineProperty,h=Object.defineProperties;e.exports=n=function(t,e){if(!(this instanceof n))throw new TypeError(\"Constructor requires 'new'\");h(this,{__list__:l(\"w\",s(t)),__context__:l(\"w\",e),__nextIndex__:l(\"w\",0)}),e&&(o(e.on),e.on(\"_add\",this._onAdd),e.on(\"_delete\",this._onDelete),e.on(\"_clear\",this._onClear))},delete n.prototype.constructor,h(n.prototype,a({_next:l((function(){var t;if(this.__list__)return this.__redo__&&void 0!==(t=this.__redo__.shift())?t:this.__nextIndex__=this.__nextIndex__||(++this.__nextIndex__,this.__redo__?(this.__redo__.forEach((function(e,r){e>=t&&(this.__redo__[r]=++e)}),this),this.__redo__.push(t)):f(this,\"__redo__\",l(\"c\",[t])))})),_onDelete:l((function(t){var e;t>=this.__nextIndex__||(--this.__nextIndex__,this.__redo__&&(-1!==(e=this.__redo__.indexOf(t))&&this.__redo__.splice(e,1),this.__redo__.forEach((function(e,r){e>t&&(this.__redo__[r]=--e)}),this)))})),_onClear:l((function(){this.__redo__&&i.call(this.__redo__),this.__nextIndex__=0}))}))),f(n.prototype,u.iterator,l((function(){return this})))},{d:106,\"d/auto-bind\":105,\"es5-ext/array/#/clear\":131,\"es5-ext/object/assign\":144,\"es5-ext/object/valid-callable\":160,\"es5-ext/object/valid-value\":162,\"es6-symbol\":175}],172:[function(t,e,r){\"use strict\";var n=t(\"es5-ext/function/is-arguments\"),i=t(\"es5-ext/object/is-value\"),a=t(\"es5-ext/string/is-string\"),o=t(\"es6-symbol\").iterator,s=Array.isArray;e.exports=function(t){return!!i(t)&&(!!s(t)||(!!a(t)||(!!n(t)||\"function\"==typeof t[o])))}},{\"es5-ext/function/is-arguments\":135,\"es5-ext/object/is-value\":151,\"es5-ext/string/is-string\":166,\"es6-symbol\":175}],173:[function(t,e,r){\"use strict\";var n,i=t(\"es5-ext/object/set-prototype-of\"),a=t(\"d\"),o=t(\"es6-symbol\"),s=t(\"./\"),l=Object.defineProperty;n=e.exports=function(t){if(!(this instanceof n))throw new TypeError(\"Constructor requires 'new'\");t=String(t),s.call(this,t),l(this,\"__length__\",a(\"\",t.length))},i&&i(n,s),delete n.prototype.constructor,n.prototype=Object.create(s.prototype,{_next:a((function(){if(this.__list__)return this.__nextIndex__=55296&&e<=56319?r+this.__list__[this.__nextIndex__++]:r}))}),l(n.prototype,o.toStringTag,a(\"c\",\"String Iterator\"))},{\"./\":171,d:106,\"es5-ext/object/set-prototype-of\":157,\"es6-symbol\":175}],174:[function(t,e,r){\"use strict\";var n=t(\"./is-iterable\");e.exports=function(t){if(!n(t))throw new TypeError(t+\" is not iterable\");return t}},{\"./is-iterable\":172}],175:[function(t,e,r){\"use strict\";e.exports=t(\"./is-implemented\")()?t(\"ext/global-this\").Symbol:t(\"./polyfill\")},{\"./is-implemented\":176,\"./polyfill\":181,\"ext/global-this\":188}],176:[function(t,e,r){\"use strict\";var n=t(\"ext/global-this\"),i={object:!0,symbol:!0};e.exports=function(){var t,e=n.Symbol;if(\"function\"!=typeof e)return!1;t=e(\"test symbol\");try{String(t)}catch(t){return!1}return!!i[typeof e.iterator]&&(!!i[typeof e.toPrimitive]&&!!i[typeof e.toStringTag])}},{\"ext/global-this\":188}],177:[function(t,e,r){\"use strict\";e.exports=function(t){return!!t&&(\"symbol\"==typeof t||!!t.constructor&&(\"Symbol\"===t.constructor.name&&\"Symbol\"===t[t.constructor.toStringTag]))}},{}],178:[function(t,e,r){\"use strict\";var n=t(\"d\"),i=Object.create,a=Object.defineProperty,o=Object.prototype,s=i(null);e.exports=function(t){for(var e,r,i=0;s[t+(i||\"\")];)++i;return s[t+=i||\"\"]=!0,a(o,e=\"@@\"+t,n.gs(null,(function(t){r||(r=!0,a(this,e,n(t)),r=!1)}))),e}},{d:106}],179:[function(t,e,r){\"use strict\";var n=t(\"d\"),i=t(\"ext/global-this\").Symbol;e.exports=function(t){return Object.defineProperties(t,{hasInstance:n(\"\",i&&i.hasInstance||t(\"hasInstance\")),isConcatSpreadable:n(\"\",i&&i.isConcatSpreadable||t(\"isConcatSpreadable\")),iterator:n(\"\",i&&i.iterator||t(\"iterator\")),match:n(\"\",i&&i.match||t(\"match\")),replace:n(\"\",i&&i.replace||t(\"replace\")),search:n(\"\",i&&i.search||t(\"search\")),species:n(\"\",i&&i.species||t(\"species\")),split:n(\"\",i&&i.split||t(\"split\")),toPrimitive:n(\"\",i&&i.toPrimitive||t(\"toPrimitive\")),toStringTag:n(\"\",i&&i.toStringTag||t(\"toStringTag\")),unscopables:n(\"\",i&&i.unscopables||t(\"unscopables\"))})}},{d:106,\"ext/global-this\":188}],180:[function(t,e,r){\"use strict\";var n=t(\"d\"),i=t(\"../../../validate-symbol\"),a=Object.create(null);e.exports=function(t){return Object.defineProperties(t,{for:n((function(e){return a[e]?a[e]:a[e]=t(String(e))})),keyFor:n((function(t){var e;for(e in i(t),a)if(a[e]===t)return e}))})}},{\"../../../validate-symbol\":182,d:106}],181:[function(t,e,r){\"use strict\";var n,i,a,o=t(\"d\"),s=t(\"./validate-symbol\"),l=t(\"ext/global-this\").Symbol,c=t(\"./lib/private/generate-name\"),u=t(\"./lib/private/setup/standard-symbols\"),f=t(\"./lib/private/setup/symbol-registry\"),h=Object.create,p=Object.defineProperties,d=Object.defineProperty;if(\"function\"==typeof l)try{String(l()),a=!0}catch(t){}else l=null;i=function(t){if(this instanceof i)throw new TypeError(\"Symbol is not a constructor\");return n(t)},e.exports=n=function t(e){var r;if(this instanceof t)throw new TypeError(\"Symbol is not a constructor\");return a?l(e):(r=h(i.prototype),e=void 0===e?\"\":String(e),p(r,{__description__:o(\"\",e),__name__:o(\"\",c(e))}))},u(n),f(n),p(i.prototype,{constructor:o(n),toString:o(\"\",(function(){return this.__name__}))}),p(n.prototype,{toString:o((function(){return\"Symbol (\"+s(this).__description__+\")\"})),valueOf:o((function(){return s(this)}))}),d(n.prototype,n.toPrimitive,o(\"\",(function(){var t=s(this);return\"symbol\"==typeof t?t:t.toString()}))),d(n.prototype,n.toStringTag,o(\"c\",\"Symbol\")),d(i.prototype,n.toStringTag,o(\"c\",n.prototype[n.toStringTag])),d(i.prototype,n.toPrimitive,o(\"c\",n.prototype[n.toPrimitive]))},{\"./lib/private/generate-name\":178,\"./lib/private/setup/standard-symbols\":179,\"./lib/private/setup/symbol-registry\":180,\"./validate-symbol\":182,d:106,\"ext/global-this\":188}],182:[function(t,e,r){\"use strict\";var n=t(\"./is-symbol\");e.exports=function(t){if(!n(t))throw new TypeError(t+\" is not a symbol\");return t}},{\"./is-symbol\":177}],183:[function(t,e,r){\"use strict\";e.exports=t(\"./is-implemented\")()?WeakMap:t(\"./polyfill\")},{\"./is-implemented\":184,\"./polyfill\":186}],184:[function(t,e,r){\"use strict\";e.exports=function(){var t,e;if(\"function\"!=typeof WeakMap)return!1;try{t=new WeakMap([[e={},\"one\"],[{},\"two\"],[{},\"three\"]])}catch(t){return!1}return\"[object WeakMap]\"===String(t)&&(\"function\"==typeof t.set&&(t.set({},1)===t&&(\"function\"==typeof t.delete&&(\"function\"==typeof t.has&&\"one\"===t.get(e)))))}},{}],185:[function(t,e,r){\"use strict\";e.exports=\"function\"==typeof WeakMap&&\"[object WeakMap]\"===Object.prototype.toString.call(new WeakMap)},{}],186:[function(t,e,r){\"use strict\";var n,i=t(\"es5-ext/object/is-value\"),a=t(\"es5-ext/object/set-prototype-of\"),o=t(\"es5-ext/object/valid-object\"),s=t(\"es5-ext/object/valid-value\"),l=t(\"es5-ext/string/random-uniq\"),c=t(\"d\"),u=t(\"es6-iterator/get\"),f=t(\"es6-iterator/for-of\"),h=t(\"es6-symbol\").toStringTag,p=t(\"./is-native-implemented\"),d=Array.isArray,g=Object.defineProperty,m=Object.prototype.hasOwnProperty,v=Object.getPrototypeOf;e.exports=n=function(){var t,e=arguments[0];if(!(this instanceof n))throw new TypeError(\"Constructor requires 'new'\");return t=p&&a&&WeakMap!==n?a(new WeakMap,v(this)):this,i(e)&&(d(e)||(e=u(e))),g(t,\"__weakMapData__\",c(\"c\",\"$weakMap$\"+l())),e?(f(e,(function(e){s(e),t.set(e[0],e[1])})),t):t},p&&(a&&a(n,WeakMap),n.prototype=Object.create(WeakMap.prototype,{constructor:c(n)})),Object.defineProperties(n.prototype,{delete:c((function(t){return!!m.call(o(t),this.__weakMapData__)&&(delete t[this.__weakMapData__],!0)})),get:c((function(t){if(m.call(o(t),this.__weakMapData__))return t[this.__weakMapData__]})),has:c((function(t){return m.call(o(t),this.__weakMapData__)})),set:c((function(t,e){return g(o(t),this.__weakMapData__,c(\"c\",e)),this})),toString:c((function(){return\"[object WeakMap]\"}))}),g(n.prototype,h,c(\"c\",\"WeakMap\"))},{\"./is-native-implemented\":185,d:106,\"es5-ext/object/is-value\":151,\"es5-ext/object/set-prototype-of\":157,\"es5-ext/object/valid-object\":161,\"es5-ext/object/valid-value\":162,\"es5-ext/string/random-uniq\":167,\"es6-iterator/for-of\":169,\"es6-iterator/get\":170,\"es6-symbol\":175}],187:[function(t,e,r){var n=function(){if(\"object\"==typeof self&&self)return self;if(\"object\"==typeof window&&window)return window;throw new Error(\"Unable to resolve global `this`\")};e.exports=function(){if(this)return this;try{Object.defineProperty(Object.prototype,\"__global__\",{get:function(){return this},configurable:!0})}catch(t){return n()}try{return __global__||n()}finally{delete Object.prototype.__global__}}()},{}],188:[function(t,e,r){\"use strict\";e.exports=t(\"./is-implemented\")()?globalThis:t(\"./implementation\")},{\"./implementation\":187,\"./is-implemented\":189}],189:[function(t,e,r){\"use strict\";e.exports=function(){return\"object\"==typeof globalThis&&(!!globalThis&&globalThis.Array===Array)}},{}],190:[function(t,e,r){\"use strict\";var n=t(\"is-string-blank\");e.exports=function(t){var e=typeof t;if(\"string\"===e){var r=t;if(0===(t=+t)&&n(r))return!1}else if(\"number\"!==e)return!1;return t-t<1}},{\"is-string-blank\":237}],191:[function(t,e,r){var n=t(\"dtype\");e.exports=function(t,e,r){if(!t)throw new TypeError(\"must specify data as first parameter\");if(r=0|+(r||0),Array.isArray(t)&&t[0]&&\"number\"==typeof t[0][0]){var i,a,o,s,l=t[0].length,c=t.length*l;e&&\"string\"!=typeof e||(e=new(n(e||\"float32\"))(c+r));var u=e.length-r;if(c!==u)throw new Error(\"source length \"+c+\" (\"+l+\"x\"+t.length+\") does not match destination length \"+u);for(i=0,o=r;ie[0]-o[0]/2&&(h=o[0]/2,p+=o[1]);return r}},{\"css-font/stringify\":102}],193:[function(t,e,r){\"use strict\";function n(t,e){e||(e={}),(\"string\"==typeof t||Array.isArray(t))&&(e.family=t);var r=Array.isArray(e.family)?e.family.join(\", \"):e.family;if(!r)throw Error(\"`family` must be defined\");var s=e.size||e.fontSize||e.em||48,l=e.weight||e.fontWeight||\"\",c=(t=[e.style||e.fontStyle||\"\",l,s].join(\" \")+\"px \"+r,e.origin||\"top\");if(n.cache[r]&&s<=n.cache[r].em)return i(n.cache[r],c);var u=e.canvas||n.canvas,f=u.getContext(\"2d\"),h={upper:void 0!==e.upper?e.upper:\"H\",lower:void 0!==e.lower?e.lower:\"x\",descent:void 0!==e.descent?e.descent:\"p\",ascent:void 0!==e.ascent?e.ascent:\"h\",title:void 0!==e.title?e.title:\"i\",overshoot:void 0!==e.overshoot?e.overshoot:\"O\"},p=Math.ceil(1.5*s);u.height=p,u.width=.5*p,f.font=t;var d={top:0};f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillStyle=\"black\",f.fillText(\"H\",0,0);var g=a(f.getImageData(0,0,p,p));f.clearRect(0,0,p,p),f.textBaseline=\"bottom\",f.fillText(\"H\",0,p);var m=a(f.getImageData(0,0,p,p));d.lineHeight=d.bottom=p-m+g,f.clearRect(0,0,p,p),f.textBaseline=\"alphabetic\",f.fillText(\"H\",0,p);var v=p-a(f.getImageData(0,0,p,p))-1+g;d.baseline=d.alphabetic=v,f.clearRect(0,0,p,p),f.textBaseline=\"middle\",f.fillText(\"H\",0,.5*p);var y=a(f.getImageData(0,0,p,p));d.median=d.middle=p-y-1+g-.5*p,f.clearRect(0,0,p,p),f.textBaseline=\"hanging\",f.fillText(\"H\",0,.5*p);var x=a(f.getImageData(0,0,p,p));d.hanging=p-x-1+g-.5*p,f.clearRect(0,0,p,p),f.textBaseline=\"ideographic\",f.fillText(\"H\",0,p);var b=a(f.getImageData(0,0,p,p));if(d.ideographic=p-b-1+g,h.upper&&(f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.upper,0,0),d.upper=a(f.getImageData(0,0,p,p)),d.capHeight=d.baseline-d.upper),h.lower&&(f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.lower,0,0),d.lower=a(f.getImageData(0,0,p,p)),d.xHeight=d.baseline-d.lower),h.title&&(f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.title,0,0),d.title=a(f.getImageData(0,0,p,p))),h.ascent&&(f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.ascent,0,0),d.ascent=a(f.getImageData(0,0,p,p))),h.descent&&(f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.descent,0,0),d.descent=o(f.getImageData(0,0,p,p))),h.overshoot){f.clearRect(0,0,p,p),f.textBaseline=\"top\",f.fillText(h.overshoot,0,0);var _=o(f.getImageData(0,0,p,p));d.overshoot=_-v}for(var w in d)d[w]/=s;return d.em=s,n.cache[r]=d,i(d,c)}function i(t,e){var r={};for(var n in\"string\"==typeof e&&(e=t[e]),t)\"em\"!==n&&(r[n]=t[n]-e);return r}function a(t){for(var e=t.height,r=t.data,n=3;n0;n-=4)if(0!==r[n])return Math.floor(.25*(n-3)/e)}e.exports=n,n.canvas=document.createElement(\"canvas\"),n.cache={}},{}],194:[function(t,e,r){e.exports=function(t,e){if(\"string\"!=typeof t)throw new TypeError(\"must specify type string\");if(e=e||{},\"undefined\"==typeof document&&!e.canvas)return null;var r=e.canvas||document.createElement(\"canvas\");\"number\"==typeof e.width&&(r.width=e.width);\"number\"==typeof e.height&&(r.height=e.height);var n,i=e;try{var a=[t];0===t.indexOf(\"webgl\")&&a.push(\"experimental-\"+t);for(var o=0;o halfCharStep + halfCharWidth ||\\n\\t\\t\\t\\t\\tfloor(uv.x) < halfCharStep - halfCharWidth) return;\\n\\n\\t\\t\\t\\tuv += charId * charStep;\\n\\t\\t\\t\\tuv = uv / atlasSize;\\n\\n\\t\\t\\t\\tvec4 color = fontColor;\\n\\t\\t\\t\\tvec4 mask = texture2D(atlas, uv);\\n\\n\\t\\t\\t\\tfloat maskY = lightness(mask);\\n\\t\\t\\t\\t// float colorY = lightness(color);\\n\\t\\t\\t\\tcolor.a *= maskY;\\n\\t\\t\\t\\tcolor.a *= opacity;\\n\\n\\t\\t\\t\\t// color.a += .1;\\n\\n\\t\\t\\t\\t// antialiasing, see yiq color space y-channel formula\\n\\t\\t\\t\\t// color.rgb += (1. - color.rgb) * (1. - mask.rgb);\\n\\n\\t\\t\\t\\tgl_FragColor = color;\\n\\t\\t\\t}\"});return{regl:t,draw:e,atlas:{}}},T.prototype.update=function(t){var e=this;if(\"string\"==typeof t)t={text:t};else if(!t)return;null!=(t=i(t,{position:\"position positions coord coords coordinates\",font:\"font fontFace fontface typeface cssFont css-font family fontFamily\",fontSize:\"fontSize fontsize size font-size\",text:\"text texts chars characters value values symbols\",align:\"align alignment textAlign textbaseline\",baseline:\"baseline textBaseline textbaseline\",direction:\"dir direction textDirection\",color:\"color colour fill fill-color fillColor textColor textcolor\",kerning:\"kerning kern\",range:\"range dataBox\",viewport:\"vp viewport viewBox viewbox viewPort\",opacity:\"opacity alpha transparency visible visibility opaque\",offset:\"offset positionOffset padding shift indent indentation\"},!0)).opacity&&(Array.isArray(t.opacity)?this.opacity=t.opacity.map((function(t){return parseFloat(t)})):this.opacity=parseFloat(t.opacity)),null!=t.viewport&&(this.viewport=f(t.viewport),this.viewportArray=[this.viewport.x,this.viewport.y,this.viewport.width,this.viewport.height]),null==this.viewport&&(this.viewport={x:0,y:0,width:this.gl.drawingBufferWidth,height:this.gl.drawingBufferHeight},this.viewportArray=[this.viewport.x,this.viewport.y,this.viewport.width,this.viewport.height]),null!=t.kerning&&(this.kerning=t.kerning),null!=t.offset&&(\"number\"==typeof t.offset&&(t.offset=[t.offset,0]),this.positionOffset=y(t.offset)),t.direction&&(this.direction=t.direction),t.range&&(this.range=t.range,this.scale=[1/(t.range[2]-t.range[0]),1/(t.range[3]-t.range[1])],this.translate=[-t.range[0],-t.range[1]]),t.scale&&(this.scale=t.scale),t.translate&&(this.translate=t.translate),this.scale||(this.scale=[1/this.viewport.width,1/this.viewport.height]),this.translate||(this.translate=[0,0]),this.font.length||t.font||(t.font=T.baseFontSize+\"px sans-serif\");var r,a=!1,o=!1;if(t.font&&(Array.isArray(t.font)?t.font:[t.font]).forEach((function(t,r){if(\"string\"==typeof t)try{t=n.parse(t)}catch(e){t=n.parse(T.baseFontSize+\"px \"+t)}else t=n.parse(n.stringify(t));var i=n.stringify({size:T.baseFontSize,family:t.family,stretch:_?t.stretch:void 0,variant:t.variant,weight:t.weight,style:t.style}),s=p(t.size),l=Math.round(s[0]*d(s[1]));if(l!==e.fontSize[r]&&(o=!0,e.fontSize[r]=l),!(e.font[r]&&i==e.font[r].baseString||(a=!0,e.font[r]=T.fonts[i],e.font[r]))){var c=t.family.join(\", \"),u=[t.style];t.style!=t.variant&&u.push(t.variant),t.variant!=t.weight&&u.push(t.weight),_&&t.weight!=t.stretch&&u.push(t.stretch),e.font[r]={baseString:i,family:c,weight:t.weight,stretch:t.stretch,style:t.style,variant:t.variant,width:{},kerning:{},metrics:v(c,{origin:\"top\",fontSize:T.baseFontSize,fontStyle:u.join(\" \")})},T.fonts[i]=e.font[r]}})),(a||o)&&this.font.forEach((function(r,i){var a=n.stringify({size:e.fontSize[i],family:r.family,stretch:_?r.stretch:void 0,variant:r.variant,weight:r.weight,style:r.style});if(e.fontAtlas[i]=e.shader.atlas[a],!e.fontAtlas[i]){var o=r.metrics;e.shader.atlas[a]=e.fontAtlas[i]={fontString:a,step:2*Math.ceil(e.fontSize[i]*o.bottom*.5),em:e.fontSize[i],cols:0,rows:0,height:0,width:0,chars:[],ids:{},texture:e.regl.texture()}}null==t.text&&(t.text=e.text)})),\"string\"==typeof t.text&&t.position&&t.position.length>2){for(var s=Array(.5*t.position.length),h=0;h2){for(var w=!t.position[0].length,k=u.mallocFloat(2*this.count),A=0,M=0;A1?e.align[r]:e.align[0]:e.align;if(\"number\"==typeof n)return n;switch(n){case\"right\":case\"end\":return-t;case\"center\":case\"centre\":case\"middle\":return.5*-t}return 0}))),null==this.baseline&&null==t.baseline&&(t.baseline=0),null!=t.baseline&&(this.baseline=t.baseline,Array.isArray(this.baseline)||(this.baseline=[this.baseline]),this.baselineOffset=this.baseline.map((function(t,r){var n=(e.font[r]||e.font[0]).metrics,i=0;return i+=.5*n.bottom,i+=\"number\"==typeof t?t-n.baseline:-n[t],i*=-1}))),null!=t.color)if(t.color||(t.color=\"transparent\"),\"string\"!=typeof t.color&&isNaN(t.color)){var q;if(\"number\"==typeof t.color[0]&&t.color.length>this.counts.length){var G=t.color.length;q=u.mallocUint8(G);for(var Y=(t.color.subarray||t.color.slice).bind(t.color),W=0;W4||this.baselineOffset.length>1||this.align&&this.align.length>1||this.fontAtlas.length>1||this.positionOffset.length>2){var J=Math.max(.5*this.position.length||0,.25*this.color.length||0,this.baselineOffset.length||0,this.alignOffset.length||0,this.font.length||0,this.opacity.length||0,.5*this.positionOffset.length||0);this.batch=Array(J);for(var K=0;K1?this.counts[K]:this.counts[0],offset:this.textOffsets.length>1?this.textOffsets[K]:this.textOffsets[0],color:this.color?this.color.length<=4?this.color:this.color.subarray(4*K,4*K+4):[0,0,0,255],opacity:Array.isArray(this.opacity)?this.opacity[K]:this.opacity,baseline:null!=this.baselineOffset[K]?this.baselineOffset[K]:this.baselineOffset[0],align:this.align?null!=this.alignOffset[K]?this.alignOffset[K]:this.alignOffset[0]:0,atlas:this.fontAtlas[K]||this.fontAtlas[0],positionOffset:this.positionOffset.length>2?this.positionOffset.subarray(2*K,2*K+2):this.positionOffset}}else this.count?this.batch=[{count:this.count,offset:0,color:this.color||[0,0,0,255],opacity:Array.isArray(this.opacity)?this.opacity[0]:this.opacity,baseline:this.baselineOffset[0],align:this.alignOffset?this.alignOffset[0]:0,atlas:this.fontAtlas[0],positionOffset:this.positionOffset}]:this.batch=[]},T.prototype.destroy=function(){},T.prototype.kerning=!0,T.prototype.position={constant:new Float32Array(2)},T.prototype.translate=null,T.prototype.scale=null,T.prototype.font=null,T.prototype.text=\"\",T.prototype.positionOffset=[0,0],T.prototype.opacity=1,T.prototype.color=new Uint8Array([0,0,0,255]),T.prototype.alignOffset=[0,0],T.maxAtlasSize=1024,T.atlasCanvas=document.createElement(\"canvas\"),T.atlasContext=T.atlasCanvas.getContext(\"2d\",{alpha:!1}),T.baseFontSize=64,T.fonts={},e.exports=T},{\"bit-twiddle\":81,\"color-normalize\":89,\"css-font\":99,\"detect-kerning\":125,\"es6-weak-map\":183,\"flatten-vertex-data\":191,\"font-atlas\":192,\"font-measure\":193,\"gl-util/context\":226,\"is-plain-obj\":236,\"object-assign\":247,\"parse-rect\":249,\"parse-unit\":251,\"pick-by-alias\":253,regl:283,\"to-px\":314,\"typedarray-pool\":327}],226:[function(t,e,r){(function(r){(function(){\"use strict\";var n=t(\"pick-by-alias\");function i(t){if(t.container)if(t.container==document.body)document.body.style.width||(t.canvas.width=t.width||t.pixelRatio*r.innerWidth),document.body.style.height||(t.canvas.height=t.height||t.pixelRatio*r.innerHeight);else{var e=t.container.getBoundingClientRect();t.canvas.width=t.width||e.right-e.left,t.canvas.height=t.height||e.bottom-e.top}}function a(t){return\"function\"==typeof t.getContext&&\"width\"in t&&\"height\"in t}function o(){var t=document.createElement(\"canvas\");return t.style.position=\"absolute\",t.style.top=0,t.style.left=0,t}e.exports=function(t){var e;if(t?\"string\"==typeof t&&(t={container:t}):t={},a(t)?t={container:t}:t=\"string\"==typeof(e=t).nodeName&&\"function\"==typeof e.appendChild&&\"function\"==typeof e.getBoundingClientRect?{container:t}:function(t){return\"function\"==typeof t.drawArrays||\"function\"==typeof t.drawElements}(t)?{gl:t}:n(t,{container:\"container target element el canvas holder parent parentNode wrapper use ref root node\",gl:\"gl context webgl glContext\",attrs:\"attributes attrs contextAttributes\",pixelRatio:\"pixelRatio pxRatio px ratio pxratio pixelratio\",width:\"w width\",height:\"h height\"},!0),t.pixelRatio||(t.pixelRatio=r.pixelRatio||1),t.gl)return t.gl;if(t.canvas&&(t.container=t.canvas.parentNode),t.container){if(\"string\"==typeof t.container){var s=document.querySelector(t.container);if(!s)throw Error(\"Element \"+t.container+\" is not found\");t.container=s}a(t.container)?(t.canvas=t.container,t.container=t.canvas.parentNode):t.canvas||(t.canvas=o(),t.container.appendChild(t.canvas),i(t))}else if(!t.canvas){if(\"undefined\"==typeof document)throw Error(\"Not DOM environment. Use headless-gl.\");t.container=document.body||document.documentElement,t.canvas=o(),t.container.appendChild(t.canvas),i(t)}return t.gl||[\"webgl\",\"experimental-webgl\",\"webgl-experimental\"].some((function(e){try{t.gl=t.canvas.getContext(e,t.attrs)}catch(t){}return t.gl})),t.gl}}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"pick-by-alias\":253}],227:[function(t,e,r){e.exports=function(t){\"string\"==typeof t&&(t=[t]);for(var e=[].slice.call(arguments,1),r=[],n=0;n>1,u=-7,f=r?i-1:0,h=r?-1:1,p=t[e+f];for(f+=h,a=p&(1<<-u)-1,p>>=-u,u+=s;u>0;a=256*a+t[e+f],f+=h,u-=8);for(o=a&(1<<-u)-1,a>>=-u,u+=n;u>0;o=256*o+t[e+f],f+=h,u-=8);if(0===a)a=1-c;else{if(a===l)return o?NaN:1/0*(p?-1:1);o+=Math.pow(2,n),a-=c}return(p?-1:1)*o*Math.pow(2,a-n)},r.write=function(t,e,r,n,i,a){var o,s,l,c=8*a-i-1,u=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:a-1,d=n?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,o=u):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),(e+=o+f>=1?h/l:h*Math.pow(2,1-f))*l>=2&&(o++,l/=2),o+f>=u?(s=0,o=u):o+f>=1?(s=(e*l-1)*Math.pow(2,i),o+=f):(s=e*Math.pow(2,f-1)*Math.pow(2,i),o=0));i>=8;t[r+p]=255&s,p+=d,s/=256,i-=8);for(o=o<0;t[r+p]=255&o,p+=d,o/=256,c-=8);t[r+p-d]|=128*g}},{}],231:[function(t,e,r){\"function\"==typeof Object.create?e.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:e.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}},{}],232:[function(t,e,r){e.exports=!0},{}],233:[function(t,e,r){\"use strict\";e.exports=\"undefined\"!=typeof navigator&&(/MSIE/.test(navigator.userAgent)||/Trident\\//.test(navigator.appVersion))},{}],234:[function(t,e,r){\"use strict\";e.exports=a,e.exports.isMobile=a,e.exports.default=a;var n=/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series[46]0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i,i=/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series[46]0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino|android|ipad|playbook|silk/i;function a(t){t||(t={});var e=t.ua;if(e||\"undefined\"==typeof navigator||(e=navigator.userAgent),e&&e.headers&&\"string\"==typeof e.headers[\"user-agent\"]&&(e=e.headers[\"user-agent\"]),\"string\"!=typeof e)return!1;var r=t.tablet?i.test(e):n.test(e);return!r&&t.tablet&&t.featureDetect&&navigator&&navigator.maxTouchPoints>1&&-1!==e.indexOf(\"Macintosh\")&&-1!==e.indexOf(\"Safari\")&&(r=!0),r}},{}],235:[function(t,e,r){\"use strict\";e.exports=function(t){var e=typeof t;return null!==t&&(\"object\"===e||\"function\"===e)}},{}],236:[function(t,e,r){\"use strict\";var n=Object.prototype.toString;e.exports=function(t){var e;return\"[object Object]\"===n.call(t)&&(null===(e=Object.getPrototypeOf(t))||e===Object.getPrototypeOf({}))}},{}],237:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e,r=t.length,n=0;n13)&&32!==e&&133!==e&&160!==e&&5760!==e&&6158!==e&&(e<8192||e>8205)&&8232!==e&&8233!==e&&8239!==e&&8287!==e&&8288!==e&&12288!==e&&65279!==e)return!1;return!0}},{}],238:[function(t,e,r){\"use strict\";e.exports=function(t){return\"string\"==typeof t&&(t=t.trim(),!!(/^[mzlhvcsqta]\\s*[-+.0-9][^mlhvzcsqta]+/i.test(t)&&/[\\dz]$/i.test(t)&&t.length>4))}},{}],239:[function(t,e,r){!function(t,n){\"object\"==typeof r&&void 0!==e?e.exports=n():(t=t||self).mapboxgl=n()}(this,(function(){\"use strict\";var t,e,r;function n(n,i){if(t)if(e){var a=\"var sharedChunk = {}; (\"+t+\")(sharedChunk); (\"+e+\")(sharedChunk);\",o={};t(o),(r=i(o)).workerUrl=window.URL.createObjectURL(new Blob([a],{type:\"text/javascript\"}))}else e=i;else t=i}return n(0,(function(t){function e(t,e){return t(e={exports:{}},e.exports),e.exports}var r=n;function n(t,e,r,n){this.cx=3*t,this.bx=3*(r-t)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*e,this.by=3*(n-e)-this.cy,this.ay=1-this.cy-this.by,this.p1x=t,this.p1y=n,this.p2x=r,this.p2y=n}n.prototype.sampleCurveX=function(t){return((this.ax*t+this.bx)*t+this.cx)*t},n.prototype.sampleCurveY=function(t){return((this.ay*t+this.by)*t+this.cy)*t},n.prototype.sampleCurveDerivativeX=function(t){return(3*this.ax*t+2*this.bx)*t+this.cx},n.prototype.solveCurveX=function(t,e){var r,n,i,a,o;for(void 0===e&&(e=1e-6),i=t,o=0;o<8;o++){if(a=this.sampleCurveX(i)-t,Math.abs(a)(n=1))return n;for(;ra?r=i:n=i,i=.5*(n-r)+r}return i},n.prototype.solve=function(t,e){return this.sampleCurveY(this.solveCurveX(t,e))};var i=a;function a(t,e){this.x=t,this.y=e}function o(t,e,n,i){var a=new r(t,e,n,i);return function(t){return a.solve(t)}}a.prototype={clone:function(){return new a(this.x,this.y)},add:function(t){return this.clone()._add(t)},sub:function(t){return this.clone()._sub(t)},multByPoint:function(t){return this.clone()._multByPoint(t)},divByPoint:function(t){return this.clone()._divByPoint(t)},mult:function(t){return this.clone()._mult(t)},div:function(t){return this.clone()._div(t)},rotate:function(t){return this.clone()._rotate(t)},rotateAround:function(t,e){return this.clone()._rotateAround(t,e)},matMult:function(t){return this.clone()._matMult(t)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(t){return this.x===t.x&&this.y===t.y},dist:function(t){return Math.sqrt(this.distSqr(t))},distSqr:function(t){var e=t.x-this.x,r=t.y-this.y;return e*e+r*r},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(t){return Math.atan2(this.y-t.y,this.x-t.x)},angleWith:function(t){return this.angleWithSep(t.x,t.y)},angleWithSep:function(t,e){return Math.atan2(this.x*e-this.y*t,this.x*t+this.y*e)},_matMult:function(t){var e=t[0]*this.x+t[1]*this.y,r=t[2]*this.x+t[3]*this.y;return this.x=e,this.y=r,this},_add:function(t){return this.x+=t.x,this.y+=t.y,this},_sub:function(t){return this.x-=t.x,this.y-=t.y,this},_mult:function(t){return this.x*=t,this.y*=t,this},_div:function(t){return this.x/=t,this.y/=t,this},_multByPoint:function(t){return this.x*=t.x,this.y*=t.y,this},_divByPoint:function(t){return this.x/=t.x,this.y/=t.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var t=this.y;return this.y=this.x,this.x=-t,this},_rotate:function(t){var e=Math.cos(t),r=Math.sin(t),n=e*this.x-r*this.y,i=r*this.x+e*this.y;return this.x=n,this.y=i,this},_rotateAround:function(t,e){var r=Math.cos(t),n=Math.sin(t),i=e.x+r*(this.x-e.x)-n*(this.y-e.y),a=e.y+n*(this.x-e.x)+r*(this.y-e.y);return this.x=i,this.y=a,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},a.convert=function(t){return t instanceof a?t:Array.isArray(t)?new a(t[0],t[1]):t};var s=o(.25,.1,.25,1);function l(t,e,r){return Math.min(r,Math.max(e,t))}function c(t,e,r){var n=r-e,i=((t-e)%n+n)%n+e;return i===e?r:i}function u(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];for(var n=0,i=e;n>e/4).toString(16):([1e7]+-[1e3]+-4e3+-8e3+-1e11).replace(/[018]/g,t)}()}function d(t){return!!t&&/^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(t)}function g(t,e){t.forEach((function(t){e[t]&&(e[t]=e[t].bind(e))}))}function m(t,e){return-1!==t.indexOf(e,t.length-e.length)}function v(t,e,r){var n={};for(var i in t)n[i]=e.call(r||this,t[i],i,t);return n}function y(t,e,r){var n={};for(var i in t)e.call(r||this,t[i],i,t)&&(n[i]=t[i]);return n}function x(t){return Array.isArray(t)?t.map(x):\"object\"==typeof t&&t?v(t,x):t}var b={};function _(t){b[t]||(\"undefined\"!=typeof console&&console.warn(t),b[t]=!0)}function w(t,e,r){return(r.y-t.y)*(e.x-t.x)>(e.y-t.y)*(r.x-t.x)}function T(t){for(var e=0,r=0,n=t.length,i=n-1,a=void 0,o=void 0;r@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)(?:\\=(?:([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)|(?:\\\"((?:[^\"\\\\]|\\\\.)*)\\\")))?/g,(function(t,r,n,i){var a=n||i;return e[r]=!a||a.toLowerCase(),\"\"})),e[\"max-age\"]){var r=parseInt(e[\"max-age\"],10);isNaN(r)?delete e[\"max-age\"]:e[\"max-age\"]=r}return e}var M=null;function S(t){if(null==M){var e=t.navigator?t.navigator.userAgent:null;M=!!t.safari||!(!e||!(/\\b(iPad|iPhone|iPod)\\b/.test(e)||e.match(\"Safari\")&&!e.match(\"Chrome\")))}return M}function E(t){try{var e=self[t];return e.setItem(\"_mapbox_test_\",1),e.removeItem(\"_mapbox_test_\"),!0}catch(t){return!1}}var L,C,P,I,O=self.performance&&self.performance.now?self.performance.now.bind(self.performance):Date.now.bind(Date),z=self.requestAnimationFrame||self.mozRequestAnimationFrame||self.webkitRequestAnimationFrame||self.msRequestAnimationFrame,D=self.cancelAnimationFrame||self.mozCancelAnimationFrame||self.webkitCancelAnimationFrame||self.msCancelAnimationFrame,R={now:O,frame:function(t){var e=z(t);return{cancel:function(){return D(e)}}},getImageData:function(t,e){void 0===e&&(e=0);var r=self.document.createElement(\"canvas\"),n=r.getContext(\"2d\");if(!n)throw new Error(\"failed to create canvas 2d context\");return r.width=t.width,r.height=t.height,n.drawImage(t,0,0,t.width,t.height),n.getImageData(-e,-e,t.width+2*e,t.height+2*e)},resolveURL:function(t){return L||(L=self.document.createElement(\"a\")),L.href=t,L.href},hardwareConcurrency:self.navigator.hardwareConcurrency||4,get devicePixelRatio(){return self.devicePixelRatio},get prefersReducedMotion(){return!!self.matchMedia&&(null==C&&(C=self.matchMedia(\"(prefers-reduced-motion: reduce)\")),C.matches)}},F={API_URL:\"https://api.mapbox.com\",get EVENTS_URL(){return this.API_URL?0===this.API_URL.indexOf(\"https://api.mapbox.cn\")?\"https://events.mapbox.cn/events/v2\":0===this.API_URL.indexOf(\"https://api.mapbox.com\")?\"https://events.mapbox.com/events/v2\":null:null},FEEDBACK_URL:\"https://apps.mapbox.com/feedback\",REQUIRE_ACCESS_TOKEN:!0,ACCESS_TOKEN:null,MAX_PARALLEL_IMAGE_REQUESTS:16},B={supported:!1,testSupport:function(t){if(N||!I)return;j?U(t):P=t}},N=!1,j=!1;function U(t){var e=t.createTexture();t.bindTexture(t.TEXTURE_2D,e);try{if(t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,I),t.isContextLost())return;B.supported=!0}catch(t){}t.deleteTexture(e),N=!0}self.document&&((I=self.document.createElement(\"img\")).onload=function(){P&&U(P),P=null,j=!0},I.onerror=function(){N=!0,P=null},I.src=\"data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=\");var V=\"01\";var H=function(t,e){this._transformRequestFn=t,this._customAccessToken=e,this._createSkuToken()};function q(t){return 0===t.indexOf(\"mapbox:\")}H.prototype._createSkuToken=function(){var t=function(){for(var t=\"\",e=0;e<10;e++)t+=\"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"[Math.floor(62*Math.random())];return{token:[\"1\",V,t].join(\"\"),tokenExpiresAt:Date.now()+432e5}}();this._skuToken=t.token,this._skuTokenExpiresAt=t.tokenExpiresAt},H.prototype._isSkuTokenExpired=function(){return Date.now()>this._skuTokenExpiresAt},H.prototype.transformRequest=function(t,e){return this._transformRequestFn&&this._transformRequestFn(t,e)||{url:t}},H.prototype.normalizeStyleURL=function(t,e){if(!q(t))return t;var r=X(t);return r.path=\"/styles/v1\"+r.path,this._makeAPIURL(r,this._customAccessToken||e)},H.prototype.normalizeGlyphsURL=function(t,e){if(!q(t))return t;var r=X(t);return r.path=\"/fonts/v1\"+r.path,this._makeAPIURL(r,this._customAccessToken||e)},H.prototype.normalizeSourceURL=function(t,e){if(!q(t))return t;var r=X(t);return r.path=\"/v4/\"+r.authority+\".json\",r.params.push(\"secure\"),this._makeAPIURL(r,this._customAccessToken||e)},H.prototype.normalizeSpriteURL=function(t,e,r,n){var i=X(t);return q(t)?(i.path=\"/styles/v1\"+i.path+\"/sprite\"+e+r,this._makeAPIURL(i,this._customAccessToken||n)):(i.path+=\"\"+e+r,Z(i))},H.prototype.normalizeTileURL=function(t,e){if(this._isSkuTokenExpired()&&this._createSkuToken(),t&&!q(t))return t;var r=X(t),n=R.devicePixelRatio>=2||512===e?\"@2x\":\"\",i=B.supported?\".webp\":\"$1\";r.path=r.path.replace(/(\\.(png|jpg)\\d*)(?=$)/,\"\"+n+i),r.path=r.path.replace(/^.+\\/v4\\//,\"/\"),r.path=\"/v4\"+r.path;var a=this._customAccessToken||function(t){for(var e=0,r=t;e=1&&self.localStorage.setItem(e,JSON.stringify(this.eventData))}catch(t){_(\"Unable to write to LocalStorage\")}},K.prototype.processRequests=function(t){},K.prototype.postEvent=function(t,e,r,n){var i=this;if(F.EVENTS_URL){var a=X(F.EVENTS_URL);a.params.push(\"access_token=\"+(n||F.ACCESS_TOKEN||\"\"));var o={event:this.type,created:new Date(t).toISOString(),sdkIdentifier:\"mapbox-gl-js\",sdkVersion:\"1.10.1\",skuId:V,userId:this.anonId},s=e?u(o,e):o,l={url:Z(a),headers:{\"Content-Type\":\"text/plain\"},body:JSON.stringify([s])};this.pendingRequest=bt(l,(function(t){i.pendingRequest=null,r(t),i.saveEventData(),i.processRequests(n)}))}},K.prototype.queueRequest=function(t,e){this.queue.push(t),this.processRequests(e)};var Q,$,tt=function(t){function e(){t.call(this,\"map.load\"),this.success={},this.skuToken=\"\"}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.postMapLoadEvent=function(t,e,r,n){this.skuToken=r,(F.EVENTS_URL&&n||F.ACCESS_TOKEN&&Array.isArray(t)&&t.some((function(t){return q(t)||Y(t)})))&&this.queueRequest({id:e,timestamp:Date.now()},n)},e.prototype.processRequests=function(t){var e=this;if(!this.pendingRequest&&0!==this.queue.length){var r=this.queue.shift(),n=r.id,i=r.timestamp;n&&this.success[n]||(this.anonId||this.fetchEventData(),d(this.anonId)||(this.anonId=p()),this.postEvent(i,{skuToken:this.skuToken},(function(t){t||n&&(e.success[n]=!0)}),t))}},e}(K),et=new(function(t){function e(e){t.call(this,\"appUserTurnstile\"),this._customAccessToken=e}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.postTurnstileEvent=function(t,e){F.EVENTS_URL&&F.ACCESS_TOKEN&&Array.isArray(t)&&t.some((function(t){return q(t)||Y(t)}))&&this.queueRequest(Date.now(),e)},e.prototype.processRequests=function(t){var e=this;if(!this.pendingRequest&&0!==this.queue.length){this.anonId&&this.eventData.lastSuccess&&this.eventData.tokenU||this.fetchEventData();var r=J(F.ACCESS_TOKEN),n=r?r.u:F.ACCESS_TOKEN,i=n!==this.eventData.tokenU;d(this.anonId)||(this.anonId=p(),i=!0);var a=this.queue.shift();if(this.eventData.lastSuccess){var o=new Date(this.eventData.lastSuccess),s=new Date(a),l=(a-this.eventData.lastSuccess)/864e5;i=i||l>=1||l<-1||o.getDate()!==s.getDate()}else i=!0;if(!i)return this.processRequests();this.postEvent(a,{\"enabled.telemetry\":!1},(function(t){t||(e.eventData.lastSuccess=a,e.eventData.tokenU=n)}),t)}},e}(K)),rt=et.postTurnstileEvent.bind(et),nt=new tt,it=nt.postMapLoadEvent.bind(nt),at=500,ot=50;function st(){self.caches&&!Q&&(Q=self.caches.open(\"mapbox-tiles\"))}function lt(t,e,r){if(st(),Q){var n={status:e.status,statusText:e.statusText,headers:new self.Headers};e.headers.forEach((function(t,e){return n.headers.set(e,t)}));var i=A(e.headers.get(\"Cache-Control\")||\"\");if(!i[\"no-store\"])i[\"max-age\"]&&n.headers.set(\"Expires\",new Date(r+1e3*i[\"max-age\"]).toUTCString()),new Date(n.headers.get(\"Expires\")).getTime()-r<42e4||function(t,e){if(void 0===$)try{new Response(new ReadableStream),$=!0}catch(t){$=!1}$?e(t.body):t.blob().then(e)}(e,(function(e){var r=new self.Response(e,n);st(),Q&&Q.then((function(e){return e.put(ct(t.url),r)})).catch((function(t){return _(t.message)}))}))}}function ct(t){var e=t.indexOf(\"?\");return e<0?t:t.slice(0,e)}function ut(t,e){if(st(),!Q)return e(null);var r=ct(t.url);Q.then((function(t){t.match(r).then((function(n){var i=function(t){if(!t)return!1;var e=new Date(t.headers.get(\"Expires\")||0),r=A(t.headers.get(\"Cache-Control\")||\"\");return e>Date.now()&&!r[\"no-cache\"]}(n);t.delete(r),i&&t.put(r,n.clone()),e(null,n,i)})).catch(e)})).catch(e)}var ft,ht=1/0;function pt(){return null==ft&&(ft=self.OffscreenCanvas&&new self.OffscreenCanvas(1,1).getContext(\"2d\")&&\"function\"==typeof self.createImageBitmap),ft}var dt={Unknown:\"Unknown\",Style:\"Style\",Source:\"Source\",Tile:\"Tile\",Glyphs:\"Glyphs\",SpriteImage:\"SpriteImage\",SpriteJSON:\"SpriteJSON\",Image:\"Image\"};\"function\"==typeof Object.freeze&&Object.freeze(dt);var gt=function(t){function e(e,r,n){401===r&&Y(n)&&(e+=\": you may have provided an invalid Mapbox access token. See https://www.mapbox.com/api-documentation/#access-tokens-and-token-scopes\"),t.call(this,e),this.status=r,this.url=n,this.name=this.constructor.name,this.message=e}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.toString=function(){return this.name+\": \"+this.message+\" (\"+this.status+\"): \"+this.url},e}(Error),mt=k()?function(){return self.worker&&self.worker.referrer}:function(){return(\"blob:\"===self.location.protocol?self.parent:self).location.href};function vt(t,e){var r,n=new self.AbortController,i=new self.Request(t.url,{method:t.method||\"GET\",body:t.body,credentials:t.credentials,headers:t.headers,referrer:mt(),signal:n.signal}),a=!1,o=!1,s=(r=i.url).indexOf(\"sku=\")>0&&Y(r);\"json\"===t.type&&i.headers.set(\"Accept\",\"application/json\");var l=function(r,n,a){if(!o){if(r&&\"SecurityError\"!==r.message&&_(r),n&&a)return c(n);var l=Date.now();self.fetch(i).then((function(r){if(r.ok){var n=s?r.clone():null;return c(r,n,l)}return e(new gt(r.statusText,r.status,t.url))})).catch((function(t){20!==t.code&&e(new Error(t.message))}))}},c=function(r,n,s){(\"arrayBuffer\"===t.type?r.arrayBuffer():\"json\"===t.type?r.json():r.text()).then((function(t){o||(n&&s&<(i,n,s),a=!0,e(null,t,r.headers.get(\"Cache-Control\"),r.headers.get(\"Expires\")))})).catch((function(t){o||e(new Error(t.message))}))};return s?ut(i,l):l(null,null),{cancel:function(){o=!0,a||n.abort()}}}var yt=function(t,e){if(r=t.url,!(/^file:/.test(r)||/^file:/.test(mt())&&!/^\\w+:/.test(r))){if(self.fetch&&self.Request&&self.AbortController&&self.Request.prototype.hasOwnProperty(\"signal\"))return vt(t,e);if(k()&&self.worker&&self.worker.actor){return self.worker.actor.send(\"getResource\",t,e,void 0,!0)}}var r;return function(t,e){var r=new self.XMLHttpRequest;for(var n in r.open(t.method||\"GET\",t.url,!0),\"arrayBuffer\"===t.type&&(r.responseType=\"arraybuffer\"),t.headers)r.setRequestHeader(n,t.headers[n]);return\"json\"===t.type&&(r.responseType=\"text\",r.setRequestHeader(\"Accept\",\"application/json\")),r.withCredentials=\"include\"===t.credentials,r.onerror=function(){e(new Error(r.statusText))},r.onload=function(){if((r.status>=200&&r.status<300||0===r.status)&&null!==r.response){var n=r.response;if(\"json\"===t.type)try{n=JSON.parse(r.response)}catch(t){return e(t)}e(null,n,r.getResponseHeader(\"Cache-Control\"),r.getResponseHeader(\"Expires\"))}else e(new gt(r.statusText,r.status,t.url))},r.send(t.body),{cancel:function(){return r.abort()}}}(t,e)},xt=function(t,e){return yt(u(t,{type:\"arrayBuffer\"}),e)},bt=function(t,e){return yt(u(t,{method:\"POST\"}),e)};var _t,wt;_t=[],wt=0;var Tt=function(t,e){if(B.supported&&(t.headers||(t.headers={}),t.headers.accept=\"image/webp,*/*\"),wt>=F.MAX_PARALLEL_IMAGE_REQUESTS){var r={requestParameters:t,callback:e,cancelled:!1,cancel:function(){this.cancelled=!0}};return _t.push(r),r}wt++;var n=!1,i=function(){if(!n)for(n=!0,wt--;_t.length&&wt0||this._oneTimeListeners&&this._oneTimeListeners[t]&&this._oneTimeListeners[t].length>0||this._eventedParent&&this._eventedParent.listens(t)},Et.prototype.setEventedParent=function(t,e){return this._eventedParent=t,this._eventedParentData=e,this};var Lt={$version:8,$root:{version:{required:!0,type:\"enum\",values:[8]},name:{type:\"string\"},metadata:{type:\"*\"},center:{type:\"array\",value:\"number\"},zoom:{type:\"number\"},bearing:{type:\"number\",default:0,period:360,units:\"degrees\"},pitch:{type:\"number\",default:0,units:\"degrees\"},light:{type:\"light\"},sources:{required:!0,type:\"sources\"},sprite:{type:\"string\"},glyphs:{type:\"string\"},transition:{type:\"transition\"},layers:{required:!0,type:\"array\",value:\"layer\"}},sources:{\"*\":{type:\"source\"}},source:[\"source_vector\",\"source_raster\",\"source_raster_dem\",\"source_geojson\",\"source_video\",\"source_image\"],source_vector:{type:{required:!0,type:\"enum\",values:{vector:{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.051129,180,85.051129]},scheme:{type:\"enum\",values:{xyz:{},tms:{}},default:\"xyz\"},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},attribution:{type:\"string\"},promoteId:{type:\"promoteId\"},\"*\":{type:\"*\"}},source_raster:{type:{required:!0,type:\"enum\",values:{raster:{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},tileSize:{type:\"number\",default:512,units:\"pixels\"},scheme:{type:\"enum\",values:{xyz:{},tms:{}},default:\"xyz\"},attribution:{type:\"string\"},\"*\":{type:\"*\"}},source_raster_dem:{type:{required:!0,type:\"enum\",values:{\"raster-dem\":{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},tileSize:{type:\"number\",default:512,units:\"pixels\"},attribution:{type:\"string\"},encoding:{type:\"enum\",values:{terrarium:{},mapbox:{}},default:\"mapbox\"},\"*\":{type:\"*\"}},source_geojson:{type:{required:!0,type:\"enum\",values:{geojson:{}}},data:{type:\"*\"},maxzoom:{type:\"number\",default:18},attribution:{type:\"string\"},buffer:{type:\"number\",default:128,maximum:512,minimum:0},tolerance:{type:\"number\",default:.375},cluster:{type:\"boolean\",default:!1},clusterRadius:{type:\"number\",default:50,minimum:0},clusterMaxZoom:{type:\"number\"},clusterProperties:{type:\"*\"},lineMetrics:{type:\"boolean\",default:!1},generateId:{type:\"boolean\",default:!1},promoteId:{type:\"promoteId\"}},source_video:{type:{required:!0,type:\"enum\",values:{video:{}}},urls:{required:!0,type:\"array\",value:\"string\"},coordinates:{required:!0,type:\"array\",length:4,value:{type:\"array\",length:2,value:\"number\"}}},source_image:{type:{required:!0,type:\"enum\",values:{image:{}}},url:{required:!0,type:\"string\"},coordinates:{required:!0,type:\"array\",length:4,value:{type:\"array\",length:2,value:\"number\"}}},layer:{id:{type:\"string\",required:!0},type:{type:\"enum\",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},\"fill-extrusion\":{},raster:{},hillshade:{},background:{}},required:!0},metadata:{type:\"*\"},source:{type:\"string\"},\"source-layer\":{type:\"string\"},minzoom:{type:\"number\",minimum:0,maximum:24},maxzoom:{type:\"number\",minimum:0,maximum:24},filter:{type:\"filter\"},layout:{type:\"layout\"},paint:{type:\"paint\"}},layout:[\"layout_fill\",\"layout_line\",\"layout_circle\",\"layout_heatmap\",\"layout_fill-extrusion\",\"layout_symbol\",\"layout_raster\",\"layout_hillshade\",\"layout_background\"],layout_background:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_fill:{\"fill-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_circle:{\"circle-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_heatmap:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},\"layout_fill-extrusion\":{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_line:{\"line-cap\":{type:\"enum\",values:{butt:{},round:{},square:{}},default:\"butt\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-join\":{type:\"enum\",values:{bevel:{},round:{},miter:{}},default:\"miter\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"line-miter-limit\":{type:\"number\",default:2,requires:[{\"line-join\":\"miter\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-round-limit\":{type:\"number\",default:1.05,requires:[{\"line-join\":\"round\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_symbol:{\"symbol-placement\":{type:\"enum\",values:{point:{},line:{},\"line-center\":{}},default:\"point\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-spacing\":{type:\"number\",default:250,minimum:1,units:\"pixels\",requires:[{\"symbol-placement\":\"line\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-avoid-edges\":{type:\"boolean\",default:!1,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"symbol-z-order\":{type:\"enum\",values:{auto:{},\"viewport-y\":{},source:{}},default:\"auto\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-allow-overlap\":{type:\"boolean\",default:!1,requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-ignore-placement\":{type:\"boolean\",default:!1,requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-optional\":{type:\"boolean\",default:!1,requires:[\"icon-image\",\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-rotation-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-size\":{type:\"number\",default:1,minimum:0,units:\"factor of the original icon size\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-text-fit\":{type:\"enum\",values:{none:{},width:{},height:{},both:{}},default:\"none\",requires:[\"icon-image\",\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-text-fit-padding\":{type:\"array\",value:\"number\",length:4,default:[0,0,0,0],units:\"pixels\",requires:[\"icon-image\",\"text-field\",{\"icon-text-fit\":[\"both\",\"width\",\"height\"]}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-image\":{type:\"resolvedImage\",tokens:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-rotate\":{type:\"number\",default:0,period:360,units:\"degrees\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-padding\":{type:\"number\",default:2,minimum:0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-keep-upright\":{type:\"boolean\",default:!1,requires:[\"icon-image\",{\"icon-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-offset\":{type:\"array\",value:\"number\",length:2,default:[0,0],requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-anchor\":{type:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},default:\"center\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotation-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-field\":{type:\"formatted\",default:\"\",tokens:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-font\":{type:\"array\",value:\"string\",default:[\"Open Sans Regular\",\"Arial Unicode MS Regular\"],requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-size\":{type:\"number\",default:16,minimum:0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-max-width\":{type:\"number\",default:10,minimum:0,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-line-height\":{type:\"number\",default:1.2,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-letter-spacing\":{type:\"number\",default:0,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-justify\":{type:\"enum\",values:{auto:{},left:{},center:{},right:{}},default:\"center\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-radial-offset\":{type:\"number\",units:\"ems\",default:0,requires:[\"text-field\"],\"property-type\":\"data-driven\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]}},\"text-variable-anchor\":{type:\"array\",value:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},requires:[\"text-field\",{\"symbol-placement\":[\"point\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-anchor\":{type:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},default:\"center\",requires:[\"text-field\",{\"!\":\"text-variable-anchor\"}],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-max-angle\":{type:\"number\",default:45,units:\"degrees\",requires:[\"text-field\",{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-writing-mode\":{type:\"array\",value:\"enum\",values:{horizontal:{},vertical:{}},requires:[\"text-field\",{\"symbol-placement\":[\"point\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotate\":{type:\"number\",default:0,period:360,units:\"degrees\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-padding\":{type:\"number\",default:2,minimum:0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-keep-upright\":{type:\"boolean\",default:!0,requires:[\"text-field\",{\"text-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-transform\":{type:\"enum\",values:{none:{},uppercase:{},lowercase:{}},default:\"none\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-offset\":{type:\"array\",value:\"number\",units:\"ems\",length:2,default:[0,0],requires:[\"text-field\",{\"!\":\"text-radial-offset\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-allow-overlap\":{type:\"boolean\",default:!1,requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-ignore-placement\":{type:\"boolean\",default:!1,requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-optional\":{type:\"boolean\",default:!1,requires:[\"text-field\",\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_raster:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_hillshade:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},filter:{type:\"array\",value:\"*\"},filter_operator:{type:\"enum\",values:{\"==\":{},\"!=\":{},\">\":{},\">=\":{},\"<\":{},\"<=\":{},in:{},\"!in\":{},all:{},any:{},none:{},has:{},\"!has\":{},within:{}}},geometry_type:{type:\"enum\",values:{Point:{},LineString:{},Polygon:{}}},function:{expression:{type:\"expression\"},stops:{type:\"array\",value:\"function_stop\"},base:{type:\"number\",default:1,minimum:0},property:{type:\"string\",default:\"$zoom\"},type:{type:\"enum\",values:{identity:{},exponential:{},interval:{},categorical:{}},default:\"exponential\"},colorSpace:{type:\"enum\",values:{rgb:{},lab:{},hcl:{}},default:\"rgb\"},default:{type:\"*\",required:!1}},function_stop:{type:\"array\",minimum:0,maximum:24,value:[\"number\",\"color\"],length:2},expression:{type:\"array\",value:\"*\",minimum:1},expression_name:{type:\"enum\",values:{let:{group:\"Variable binding\"},var:{group:\"Variable binding\"},literal:{group:\"Types\"},array:{group:\"Types\"},at:{group:\"Lookup\"},in:{group:\"Lookup\"},\"index-of\":{group:\"Lookup\"},slice:{group:\"Lookup\"},case:{group:\"Decision\"},match:{group:\"Decision\"},coalesce:{group:\"Decision\"},step:{group:\"Ramps, scales, curves\"},interpolate:{group:\"Ramps, scales, curves\"},\"interpolate-hcl\":{group:\"Ramps, scales, curves\"},\"interpolate-lab\":{group:\"Ramps, scales, curves\"},ln2:{group:\"Math\"},pi:{group:\"Math\"},e:{group:\"Math\"},typeof:{group:\"Types\"},string:{group:\"Types\"},number:{group:\"Types\"},boolean:{group:\"Types\"},object:{group:\"Types\"},collator:{group:\"Types\"},format:{group:\"Types\"},image:{group:\"Types\"},\"number-format\":{group:\"Types\"},\"to-string\":{group:\"Types\"},\"to-number\":{group:\"Types\"},\"to-boolean\":{group:\"Types\"},\"to-rgba\":{group:\"Color\"},\"to-color\":{group:\"Types\"},rgb:{group:\"Color\"},rgba:{group:\"Color\"},get:{group:\"Lookup\"},has:{group:\"Lookup\"},length:{group:\"Lookup\"},properties:{group:\"Feature data\"},\"feature-state\":{group:\"Feature data\"},\"geometry-type\":{group:\"Feature data\"},id:{group:\"Feature data\"},zoom:{group:\"Zoom\"},\"heatmap-density\":{group:\"Heatmap\"},\"line-progress\":{group:\"Feature data\"},accumulated:{group:\"Feature data\"},\"+\":{group:\"Math\"},\"*\":{group:\"Math\"},\"-\":{group:\"Math\"},\"/\":{group:\"Math\"},\"%\":{group:\"Math\"},\"^\":{group:\"Math\"},sqrt:{group:\"Math\"},log10:{group:\"Math\"},ln:{group:\"Math\"},log2:{group:\"Math\"},sin:{group:\"Math\"},cos:{group:\"Math\"},tan:{group:\"Math\"},asin:{group:\"Math\"},acos:{group:\"Math\"},atan:{group:\"Math\"},min:{group:\"Math\"},max:{group:\"Math\"},round:{group:\"Math\"},abs:{group:\"Math\"},ceil:{group:\"Math\"},floor:{group:\"Math\"},distance:{group:\"Math\"},\"==\":{group:\"Decision\"},\"!=\":{group:\"Decision\"},\">\":{group:\"Decision\"},\"<\":{group:\"Decision\"},\">=\":{group:\"Decision\"},\"<=\":{group:\"Decision\"},all:{group:\"Decision\"},any:{group:\"Decision\"},\"!\":{group:\"Decision\"},within:{group:\"Decision\"},\"is-supported-script\":{group:\"String\"},upcase:{group:\"String\"},downcase:{group:\"String\"},concat:{group:\"String\"},\"resolved-locale\":{group:\"String\"}}},light:{anchor:{type:\"enum\",default:\"viewport\",values:{map:{},viewport:{}},\"property-type\":\"data-constant\",transition:!1,expression:{interpolated:!1,parameters:[\"zoom\"]}},position:{type:\"array\",default:[1.15,210,30],length:3,value:\"number\",\"property-type\":\"data-constant\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]}},color:{type:\"color\",\"property-type\":\"data-constant\",default:\"#ffffff\",expression:{interpolated:!0,parameters:[\"zoom\"]},transition:!0},intensity:{type:\"number\",\"property-type\":\"data-constant\",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:[\"zoom\"]},transition:!0}},paint:[\"paint_fill\",\"paint_line\",\"paint_circle\",\"paint_heatmap\",\"paint_fill-extrusion\",\"paint_symbol\",\"paint_raster\",\"paint_hillshade\",\"paint_background\"],paint_fill:{\"fill-antialias\":{type:\"boolean\",default:!0,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"fill-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-outline-color\":{type:\"color\",transition:!0,requires:[{\"!\":\"fill-pattern\"},{\"fill-antialias\":!0}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"fill-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"}},\"paint_fill-extrusion\":{\"fill-extrusion-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"fill-extrusion-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"fill-extrusion-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"fill-extrusion-height\":{type:\"number\",default:0,minimum:0,units:\"meters\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-base\":{type:\"number\",default:0,minimum:0,units:\"meters\",transition:!0,requires:[\"fill-extrusion-height\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-vertical-gradient\":{type:\"boolean\",default:!0,transition:!1,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_line:{\"line-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"line-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"line-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-width\":{type:\"number\",default:1,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-gap-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-offset\":{type:\"number\",default:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-dasharray\":{type:\"array\",value:\"number\",minimum:0,transition:!0,units:\"line widths\",requires:[{\"!\":\"line-pattern\"}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"cross-faded\"},\"line-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"line-gradient\":{type:\"color\",transition:!1,requires:[{\"!\":\"line-dasharray\"},{\"!\":\"line-pattern\"},{source:\"geojson\",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:[\"line-progress\"]},\"property-type\":\"color-ramp\"}},paint_circle:{\"circle-radius\":{type:\"number\",default:5,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-blur\":{type:\"number\",default:0,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"circle-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-scale\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{}},default:\"viewport\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-stroke-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"}},paint_heatmap:{\"heatmap-radius\":{type:\"number\",default:30,minimum:1,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-weight\":{type:\"number\",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-intensity\":{type:\"number\",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"heatmap-color\":{type:\"color\",default:[\"interpolate\",[\"linear\"],[\"heatmap-density\"],0,\"rgba(0, 0, 255, 0)\",.1,\"royalblue\",.3,\"cyan\",.5,\"lime\",.7,\"yellow\",1,\"red\"],transition:!1,expression:{interpolated:!0,parameters:[\"heatmap-density\"]},\"property-type\":\"color-ramp\"},\"heatmap-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_symbol:{\"icon-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-color\":{type:\"color\",default:\"rgba(0, 0, 0, 0)\",transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"icon-image\",\"icon-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-color\":{type:\"color\",default:\"#000000\",transition:!0,overridable:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-color\":{type:\"color\",default:\"rgba(0, 0, 0, 0)\",transition:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"text-field\",\"text-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_raster:{\"raster-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-hue-rotate\":{type:\"number\",default:0,period:360,transition:!0,units:\"degrees\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-min\":{type:\"number\",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-max\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-saturation\":{type:\"number\",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-contrast\":{type:\"number\",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-resampling\":{type:\"enum\",values:{linear:{},nearest:{}},default:\"linear\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-fade-duration\":{type:\"number\",default:300,minimum:0,transition:!1,units:\"milliseconds\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_hillshade:{\"hillshade-illumination-direction\":{type:\"number\",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-illumination-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"viewport\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-exaggeration\":{type:\"number\",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-shadow-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-highlight-color\":{type:\"color\",default:\"#FFFFFF\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-accent-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_background:{\"background-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"background-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"background-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"cross-faded\"},\"background-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},transition:{duration:{type:\"number\",default:300,minimum:0,units:\"milliseconds\"},delay:{type:\"number\",default:0,minimum:0,units:\"milliseconds\"}},\"property-type\":{\"data-driven\":{type:\"property-type\"},\"cross-faded\":{type:\"property-type\"},\"cross-faded-data-driven\":{type:\"property-type\"},\"color-ramp\":{type:\"property-type\"},\"data-constant\":{type:\"property-type\"},constant:{type:\"property-type\"}},promoteId:{\"*\":{type:\"string\"}}},Ct=function(t,e,r,n){this.message=(t?t+\": \":\"\")+r,n&&(this.identifier=n),null!=e&&e.__line__&&(this.line=e.__line__)};function Pt(t){var e=t.key,r=t.value;return r?[new Ct(e,r,\"constants have been deprecated as of v8\")]:[]}function It(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];for(var n=0,i=e;n\":\"value\"===t.itemType.kind?\"array\":\"array<\"+e+\">\"}return t.kind}var Zt=[Ft,Bt,Nt,jt,Ut,Gt,Vt,Wt(Ht),Yt];function Jt(t,e){if(\"error\"===e.kind)return null;if(\"array\"===t.kind){if(\"array\"===e.kind&&(0===e.N&&\"value\"===e.itemType.kind||!Jt(t.itemType,e.itemType))&&(\"number\"!=typeof t.N||t.N===e.N))return null}else{if(t.kind===e.kind)return null;if(\"value\"===t.kind)for(var r=0,n=Zt;r255?255:t}function i(t){return t<0?0:t>1?1:t}function a(t){return\"%\"===t[t.length-1]?n(parseFloat(t)/100*255):n(parseInt(t))}function o(t){return\"%\"===t[t.length-1]?i(parseFloat(t)/100):i(parseFloat(t))}function s(t,e,r){return r<0?r+=1:r>1&&(r-=1),6*r<1?t+(e-t)*r*6:2*r<1?e:3*r<2?t+(e-t)*(2/3-r)*6:t}try{e.parseCSSColor=function(t){var e,i=t.replace(/ /g,\"\").toLowerCase();if(i in r)return r[i].slice();if(\"#\"===i[0])return 4===i.length?(e=parseInt(i.substr(1),16))>=0&&e<=4095?[(3840&e)>>4|(3840&e)>>8,240&e|(240&e)>>4,15&e|(15&e)<<4,1]:null:7===i.length&&(e=parseInt(i.substr(1),16))>=0&&e<=16777215?[(16711680&e)>>16,(65280&e)>>8,255&e,1]:null;var l=i.indexOf(\"(\"),c=i.indexOf(\")\");if(-1!==l&&c+1===i.length){var u=i.substr(0,l),f=i.substr(l+1,c-(l+1)).split(\",\"),h=1;switch(u){case\"rgba\":if(4!==f.length)return null;h=o(f.pop());case\"rgb\":return 3!==f.length?null:[a(f[0]),a(f[1]),a(f[2]),h];case\"hsla\":if(4!==f.length)return null;h=o(f.pop());case\"hsl\":if(3!==f.length)return null;var p=(parseFloat(f[0])%360+360)%360/360,d=o(f[1]),g=o(f[2]),m=g<=.5?g*(d+1):g+d-g*d,v=2*g-m;return[n(255*s(v,m,p+1/3)),n(255*s(v,m,p)),n(255*s(v,m,p-1/3)),h];default:return null}}return null}}catch(t){}})).parseCSSColor,te=function(t,e,r,n){void 0===n&&(n=1),this.r=t,this.g=e,this.b=r,this.a=n};te.parse=function(t){if(t){if(t instanceof te)return t;if(\"string\"==typeof t){var e=$t(t);if(e)return new te(e[0]/255*e[3],e[1]/255*e[3],e[2]/255*e[3],e[3])}}},te.prototype.toString=function(){var t=this.toArray(),e=t[0],r=t[1],n=t[2],i=t[3];return\"rgba(\"+Math.round(e)+\",\"+Math.round(r)+\",\"+Math.round(n)+\",\"+i+\")\"},te.prototype.toArray=function(){var t=this.r,e=this.g,r=this.b,n=this.a;return 0===n?[0,0,0,0]:[255*t/n,255*e/n,255*r/n,n]},te.black=new te(0,0,0,1),te.white=new te(1,1,1,1),te.transparent=new te(0,0,0,0),te.red=new te(1,0,0,1);var ee=function(t,e,r){this.sensitivity=t?e?\"variant\":\"case\":e?\"accent\":\"base\",this.locale=r,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:\"search\"})};ee.prototype.compare=function(t,e){return this.collator.compare(t,e)},ee.prototype.resolvedLocale=function(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale};var re=function(t,e,r,n,i){this.text=t,this.image=e,this.scale=r,this.fontStack=n,this.textColor=i},ne=function(t){this.sections=t};ne.fromString=function(t){return new ne([new re(t,null,null,null,null)])},ne.prototype.isEmpty=function(){return 0===this.sections.length||!this.sections.some((function(t){return 0!==t.text.length||t.image&&0!==t.image.name.length}))},ne.factory=function(t){return t instanceof ne?t:ne.fromString(t)},ne.prototype.toString=function(){return 0===this.sections.length?\"\":this.sections.map((function(t){return t.text})).join(\"\")},ne.prototype.serialize=function(){for(var t=[\"format\"],e=0,r=this.sections;e=0&&t<=255&&\"number\"==typeof e&&e>=0&&e<=255&&\"number\"==typeof r&&r>=0&&r<=255?void 0===n||\"number\"==typeof n&&n>=0&&n<=1?null:\"Invalid rgba value [\"+[t,e,r,n].join(\", \")+\"]: 'a' must be between 0 and 1.\":\"Invalid rgba value [\"+(\"number\"==typeof n?[t,e,r,n]:[t,e,r]).join(\", \")+\"]: 'r', 'g', and 'b' must be between 0 and 255.\"}function oe(t){if(null===t)return!0;if(\"string\"==typeof t)return!0;if(\"boolean\"==typeof t)return!0;if(\"number\"==typeof t)return!0;if(t instanceof te)return!0;if(t instanceof ee)return!0;if(t instanceof ne)return!0;if(t instanceof ie)return!0;if(Array.isArray(t)){for(var e=0,r=t;e2){var s=t[1];if(\"string\"!=typeof s||!(s in fe)||\"object\"===s)return e.error('The item type argument of \"array\" must be one of string, number, boolean',1);a=fe[s],n++}else a=Ht;if(t.length>3){if(null!==t[2]&&(\"number\"!=typeof t[2]||t[2]<0||t[2]!==Math.floor(t[2])))return e.error('The length argument to \"array\" must be a positive integer literal',2);o=t[2],n++}r=Wt(a,o)}else r=fe[i];for(var l=[];n1)&&e.push(n)}}return e.concat(this.args.map((function(t){return t.serialize()})))};var pe=function(t){this.type=Gt,this.sections=t};pe.parse=function(t,e){if(t.length<2)return e.error(\"Expected at least one argument.\");var r=t[1];if(!Array.isArray(r)&&\"object\"==typeof r)return e.error(\"First argument must be an image or text section.\");for(var n=[],i=!1,a=1;a<=t.length-1;++a){var o=t[a];if(i&&\"object\"==typeof o&&!Array.isArray(o)){i=!1;var s=null;if(o[\"font-scale\"]&&!(s=e.parse(o[\"font-scale\"],1,Bt)))return null;var l=null;if(o[\"text-font\"]&&!(l=e.parse(o[\"text-font\"],1,Wt(Nt))))return null;var c=null;if(o[\"text-color\"]&&!(c=e.parse(o[\"text-color\"],1,Ut)))return null;var u=n[n.length-1];u.scale=s,u.font=l,u.textColor=c}else{var f=e.parse(t[a],1,Ht);if(!f)return null;var h=f.type.kind;if(\"string\"!==h&&\"value\"!==h&&\"null\"!==h&&\"resolvedImage\"!==h)return e.error(\"Formatted text type must be 'string', 'value', 'image' or 'null'.\");i=!0,n.push({content:f,scale:null,font:null,textColor:null})}}return new pe(n)},pe.prototype.evaluate=function(t){return new ne(this.sections.map((function(e){var r=e.content.evaluate(t);return se(r)===Yt?new re(\"\",r,null,null,null):new re(le(r),null,e.scale?e.scale.evaluate(t):null,e.font?e.font.evaluate(t).join(\",\"):null,e.textColor?e.textColor.evaluate(t):null)})))},pe.prototype.eachChild=function(t){for(var e=0,r=this.sections;e-1),r},de.prototype.eachChild=function(t){t(this.input)},de.prototype.outputDefined=function(){return!1},de.prototype.serialize=function(){return[\"image\",this.input.serialize()]};var ge={\"to-boolean\":jt,\"to-color\":Ut,\"to-number\":Bt,\"to-string\":Nt},me=function(t,e){this.type=t,this.args=e};me.parse=function(t,e){if(t.length<2)return e.error(\"Expected at least one argument.\");var r=t[0];if((\"to-boolean\"===r||\"to-string\"===r)&&2!==t.length)return e.error(\"Expected one argument.\");for(var n=ge[r],i=[],a=1;a4?\"Invalid rbga value \"+JSON.stringify(e)+\": expected an array containing either three or four numeric values.\":ae(e[0],e[1],e[2],e[3])))return new te(e[0]/255,e[1]/255,e[2]/255,e[3])}throw new ue(r||\"Could not parse color from value '\"+(\"string\"==typeof e?e:String(JSON.stringify(e)))+\"'\")}if(\"number\"===this.type.kind){for(var o=null,s=0,l=this.args;s=e[2])&&(!(t[1]<=e[1])&&!(t[3]>=e[3])))}function Te(t,e){var r,n=(180+t[0])/360,i=(r=t[1],(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+r*Math.PI/360)))/360),a=Math.pow(2,e.z);return[Math.round(n*a*8192),Math.round(i*a*8192)]}function ke(t,e,r){return e[1]>t[1]!=r[1]>t[1]&&t[0]<(r[0]-e[0])*(t[1]-e[1])/(r[1]-e[1])+e[0]}function Ae(t,e){for(var r,n,i,a,o,s,l,c=!1,u=0,f=e.length;u0&&f<0||u<0&&f>0}function Ee(t,e,r){for(var n=0,i=r;nr[2]){var i=.5*n,a=t[0]-r[0]>i?-n:r[0]-t[0]>i?n:0;0===a&&(a=t[0]-r[2]>i?-n:r[2]-t[0]>i?n:0),t[0]+=a}_e(e,t)}function ze(t,e,r,n){for(var i=8192*Math.pow(2,n.z),a=[8192*n.x,8192*n.y],o=[],s=0,l=t;s=0)return!1;var r=!0;return t.eachChild((function(t){r&&!Ne(t,e)&&(r=!1)})),r}Re.parse=function(t,e){if(2!==t.length)return e.error(\"'within' expression requires exactly one argument, but found \"+(t.length-1)+\" instead.\");if(oe(t[1])){var r=t[1];if(\"FeatureCollection\"===r.type)for(var n=0;ne))throw new ue(\"Input is not a number.\");o=s-1}return 0}Ue.prototype.parse=function(t,e,r,n,i){return void 0===i&&(i={}),e?this.concat(e,r,n)._parse(t,i):this._parse(t,i)},Ue.prototype._parse=function(t,e){function r(t,e,r){return\"assert\"===r?new he(e,[t]):\"coerce\"===r?new me(e,[t]):t}if(null!==t&&\"string\"!=typeof t&&\"boolean\"!=typeof t&&\"number\"!=typeof t||(t=[\"literal\",t]),Array.isArray(t)){if(0===t.length)return this.error('Expected an array with at least one element. If you wanted a literal array, use [\"literal\", []].');var n=t[0];if(\"string\"!=typeof n)return this.error(\"Expression name must be a string, but found \"+typeof n+' instead. If you wanted a literal array, use [\"literal\", [...]].',0),null;var i=this.registry[n];if(i){var a=i.parse(t,this);if(!a)return null;if(this.expectedType){var o=this.expectedType,s=a.type;if(\"string\"!==o.kind&&\"number\"!==o.kind&&\"boolean\"!==o.kind&&\"object\"!==o.kind&&\"array\"!==o.kind||\"value\"!==s.kind)if(\"color\"!==o.kind&&\"formatted\"!==o.kind&&\"resolvedImage\"!==o.kind||\"value\"!==s.kind&&\"string\"!==s.kind){if(this.checkSubtype(o,s))return null}else a=r(a,o,e.typeAnnotation||\"coerce\");else a=r(a,o,e.typeAnnotation||\"assert\")}if(!(a instanceof ce)&&\"resolvedImage\"!==a.type.kind&&function t(e){if(e instanceof je)return t(e.boundExpression);if(e instanceof xe&&\"error\"===e.name)return!1;if(e instanceof be)return!1;if(e instanceof Re)return!1;var r=e instanceof me||e instanceof he,n=!0;if(e.eachChild((function(e){n=r?n&&t(e):n&&e instanceof ce})),!n)return!1;return Fe(e)&&Ne(e,[\"zoom\",\"heatmap-density\",\"line-progress\",\"accumulated\",\"is-supported-script\"])}(a)){var l=new ye;try{a=new ce(a.type,a.evaluate(l))}catch(t){return this.error(t.message),null}}return a}return this.error('Unknown expression \"'+n+'\". If you wanted a literal array, use [\"literal\", [...]].',0)}return void 0===t?this.error(\"'undefined' value invalid. Use null instead.\"):\"object\"==typeof t?this.error('Bare objects invalid. Use [\"literal\", {...}] instead.'):this.error(\"Expected an array, but found \"+typeof t+\" instead.\")},Ue.prototype.concat=function(t,e,r){var n=\"number\"==typeof t?this.path.concat(t):this.path,i=r?this.scope.concat(r):this.scope;return new Ue(this.registry,n,e||null,i,this.errors)},Ue.prototype.error=function(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];var n=\"\"+this.key+e.map((function(t){return\"[\"+t+\"]\"})).join(\"\");this.errors.push(new Dt(n,t))},Ue.prototype.checkSubtype=function(t,e){var r=Jt(t,e);return r&&this.error(r),r};var He=function(t,e,r){this.type=t,this.input=e,this.labels=[],this.outputs=[];for(var n=0,i=r;n=o)return e.error('Input/output pairs for \"step\" expressions must be arranged with input values in strictly ascending order.',l);var u=e.parse(s,c,i);if(!u)return null;i=i||u.type,n.push([o,u])}return new He(i,r,n)},He.prototype.evaluate=function(t){var e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);var n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);var i=e.length;return n>=e[i-1]?r[i-1].evaluate(t):r[Ve(e,n)].evaluate(t)},He.prototype.eachChild=function(t){t(this.input);for(var e=0,r=this.outputs;e0&&t.push(this.labels[e]),t.push(this.outputs[e].serialize());return t};var Ge=Object.freeze({__proto__:null,number:qe,color:function(t,e,r){return new te(qe(t.r,e.r,r),qe(t.g,e.g,r),qe(t.b,e.b,r),qe(t.a,e.a,r))},array:function(t,e,r){return t.map((function(t,n){return qe(t,e[n],r)}))}}),Ye=6/29,We=3*Ye*Ye,Xe=Math.PI/180,Ze=180/Math.PI;function Je(t){return t>.008856451679035631?Math.pow(t,1/3):t/We+4/29}function Ke(t){return t>Ye?t*t*t:We*(t-4/29)}function Qe(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function $e(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function tr(t){var e=$e(t.r),r=$e(t.g),n=$e(t.b),i=Je((.4124564*e+.3575761*r+.1804375*n)/.95047),a=Je((.2126729*e+.7151522*r+.072175*n)/1);return{l:116*a-16,a:500*(i-a),b:200*(a-Je((.0193339*e+.119192*r+.9503041*n)/1.08883)),alpha:t.a}}function er(t){var e=(t.l+16)/116,r=isNaN(t.a)?e:e+t.a/500,n=isNaN(t.b)?e:e-t.b/200;return e=1*Ke(e),r=.95047*Ke(r),n=1.08883*Ke(n),new te(Qe(3.2404542*r-1.5371385*e-.4985314*n),Qe(-.969266*r+1.8760108*e+.041556*n),Qe(.0556434*r-.2040259*e+1.0572252*n),t.alpha)}function rr(t,e,r){var n=e-t;return t+r*(n>180||n<-180?n-360*Math.round(n/360):n)}var nr={forward:tr,reverse:er,interpolate:function(t,e,r){return{l:qe(t.l,e.l,r),a:qe(t.a,e.a,r),b:qe(t.b,e.b,r),alpha:qe(t.alpha,e.alpha,r)}}},ir={forward:function(t){var e=tr(t),r=e.l,n=e.a,i=e.b,a=Math.atan2(i,n)*Ze;return{h:a<0?a+360:a,c:Math.sqrt(n*n+i*i),l:r,alpha:t.a}},reverse:function(t){var e=t.h*Xe,r=t.c;return er({l:t.l,a:Math.cos(e)*r,b:Math.sin(e)*r,alpha:t.alpha})},interpolate:function(t,e,r){return{h:rr(t.h,e.h,r),c:qe(t.c,e.c,r),l:qe(t.l,e.l,r),alpha:qe(t.alpha,e.alpha,r)}}},ar=Object.freeze({__proto__:null,lab:nr,hcl:ir}),or=function(t,e,r,n,i){this.type=t,this.operator=e,this.interpolation=r,this.input=n,this.labels=[],this.outputs=[];for(var a=0,o=i;a1})))return e.error(\"Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.\",1);n={name:\"cubic-bezier\",controlPoints:s}}if(t.length-1<4)return e.error(\"Expected at least 4 arguments, but found only \"+(t.length-1)+\".\");if((t.length-1)%2!=0)return e.error(\"Expected an even number of arguments.\");if(!(i=e.parse(i,2,Bt)))return null;var l=[],c=null;\"interpolate-hcl\"===r||\"interpolate-lab\"===r?c=Ut:e.expectedType&&\"value\"!==e.expectedType.kind&&(c=e.expectedType);for(var u=0;u=f)return e.error('Input/output pairs for \"interpolate\" expressions must be arranged with input values in strictly ascending order.',p);var g=e.parse(h,d,c);if(!g)return null;c=c||g.type,l.push([f,g])}return\"number\"===c.kind||\"color\"===c.kind||\"array\"===c.kind&&\"number\"===c.itemType.kind&&\"number\"==typeof c.N?new or(c,r,n,i,l):e.error(\"Type \"+Xt(c)+\" is not interpolatable.\")},or.prototype.evaluate=function(t){var e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);var n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);var i=e.length;if(n>=e[i-1])return r[i-1].evaluate(t);var a=Ve(e,n),o=e[a],s=e[a+1],l=or.interpolationFactor(this.interpolation,n,o,s),c=r[a].evaluate(t),u=r[a+1].evaluate(t);return\"interpolate\"===this.operator?Ge[this.type.kind.toLowerCase()](c,u,l):\"interpolate-hcl\"===this.operator?ir.reverse(ir.interpolate(ir.forward(c),ir.forward(u),l)):nr.reverse(nr.interpolate(nr.forward(c),nr.forward(u),l))},or.prototype.eachChild=function(t){t(this.input);for(var e=0,r=this.outputs;e=r.length)throw new ue(\"Array index out of bounds: \"+e+\" > \"+(r.length-1)+\".\");if(e!==Math.floor(e))throw new ue(\"Array index must be an integer, but found \"+e+\" instead.\");return r[e]},ur.prototype.eachChild=function(t){t(this.index),t(this.input)},ur.prototype.outputDefined=function(){return!1},ur.prototype.serialize=function(){return[\"at\",this.index.serialize(),this.input.serialize()]};var fr=function(t,e){this.type=jt,this.needle=t,this.haystack=e};fr.parse=function(t,e){if(3!==t.length)return e.error(\"Expected 2 arguments, but found \"+(t.length-1)+\" instead.\");var r=e.parse(t[1],1,Ht),n=e.parse(t[2],2,Ht);return r&&n?Kt(r.type,[jt,Nt,Bt,Ft,Ht])?new fr(r,n):e.error(\"Expected first argument to be of type boolean, string, number or null, but found \"+Xt(r.type)+\" instead\"):null},fr.prototype.evaluate=function(t){var e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!r)return!1;if(!Qt(e,[\"boolean\",\"string\",\"number\",\"null\"]))throw new ue(\"Expected first argument to be of type boolean, string, number or null, but found \"+Xt(se(e))+\" instead.\");if(!Qt(r,[\"string\",\"array\"]))throw new ue(\"Expected second argument to be of type array or string, but found \"+Xt(se(r))+\" instead.\");return r.indexOf(e)>=0},fr.prototype.eachChild=function(t){t(this.needle),t(this.haystack)},fr.prototype.outputDefined=function(){return!0},fr.prototype.serialize=function(){return[\"in\",this.needle.serialize(),this.haystack.serialize()]};var hr=function(t,e,r){this.type=Bt,this.needle=t,this.haystack=e,this.fromIndex=r};hr.parse=function(t,e){if(t.length<=2||t.length>=5)return e.error(\"Expected 3 or 4 arguments, but found \"+(t.length-1)+\" instead.\");var r=e.parse(t[1],1,Ht),n=e.parse(t[2],2,Ht);if(!r||!n)return null;if(!Kt(r.type,[jt,Nt,Bt,Ft,Ht]))return e.error(\"Expected first argument to be of type boolean, string, number or null, but found \"+Xt(r.type)+\" instead\");if(4===t.length){var i=e.parse(t[3],3,Bt);return i?new hr(r,n,i):null}return new hr(r,n)},hr.prototype.evaluate=function(t){var e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!Qt(e,[\"boolean\",\"string\",\"number\",\"null\"]))throw new ue(\"Expected first argument to be of type boolean, string, number or null, but found \"+Xt(se(e))+\" instead.\");if(!Qt(r,[\"string\",\"array\"]))throw new ue(\"Expected second argument to be of type array or string, but found \"+Xt(se(r))+\" instead.\");if(this.fromIndex){var n=this.fromIndex.evaluate(t);return r.indexOf(e,n)}return r.indexOf(e)},hr.prototype.eachChild=function(t){t(this.needle),t(this.haystack),this.fromIndex&&t(this.fromIndex)},hr.prototype.outputDefined=function(){return!1},hr.prototype.serialize=function(){if(null!=this.fromIndex&&void 0!==this.fromIndex){var t=this.fromIndex.serialize();return[\"index-of\",this.needle.serialize(),this.haystack.serialize(),t]}return[\"index-of\",this.needle.serialize(),this.haystack.serialize()]};var pr=function(t,e,r,n,i,a){this.inputType=t,this.type=e,this.input=r,this.cases=n,this.outputs=i,this.otherwise=a};pr.parse=function(t,e){if(t.length<5)return e.error(\"Expected at least 4 arguments, but found only \"+(t.length-1)+\".\");if(t.length%2!=1)return e.error(\"Expected an even number of arguments.\");var r,n;e.expectedType&&\"value\"!==e.expectedType.kind&&(n=e.expectedType);for(var i={},a=[],o=2;oNumber.MAX_SAFE_INTEGER)return c.error(\"Branch labels must be integers no larger than \"+Number.MAX_SAFE_INTEGER+\".\");if(\"number\"==typeof h&&Math.floor(h)!==h)return c.error(\"Numeric branch labels must be integer values.\");if(r){if(c.checkSubtype(r,se(h)))return null}else r=se(h);if(void 0!==i[String(h)])return c.error(\"Branch labels must be unique.\");i[String(h)]=a.length}var p=e.parse(l,o,n);if(!p)return null;n=n||p.type,a.push(p)}var d=e.parse(t[1],1,Ht);if(!d)return null;var g=e.parse(t[t.length-1],t.length-1,n);return g?\"value\"!==d.type.kind&&e.concat(1).checkSubtype(r,d.type)?null:new pr(r,n,d,i,a,g):null},pr.prototype.evaluate=function(t){var e=this.input.evaluate(t);return(se(e)===this.inputType&&this.outputs[this.cases[e]]||this.otherwise).evaluate(t)},pr.prototype.eachChild=function(t){t(this.input),this.outputs.forEach(t),t(this.otherwise)},pr.prototype.outputDefined=function(){return this.outputs.every((function(t){return t.outputDefined()}))&&this.otherwise.outputDefined()},pr.prototype.serialize=function(){for(var t=this,e=[\"match\",this.input.serialize()],r=[],n={},i=0,a=Object.keys(this.cases).sort();i=5)return e.error(\"Expected 3 or 4 arguments, but found \"+(t.length-1)+\" instead.\");var r=e.parse(t[1],1,Ht),n=e.parse(t[2],2,Bt);if(!r||!n)return null;if(!Kt(r.type,[Wt(Ht),Nt,Ht]))return e.error(\"Expected first argument to be of type array or string, but found \"+Xt(r.type)+\" instead\");if(4===t.length){var i=e.parse(t[3],3,Bt);return i?new gr(r.type,r,n,i):null}return new gr(r.type,r,n)},gr.prototype.evaluate=function(t){var e=this.input.evaluate(t),r=this.beginIndex.evaluate(t);if(!Qt(e,[\"string\",\"array\"]))throw new ue(\"Expected first argument to be of type array or string, but found \"+Xt(se(e))+\" instead.\");if(this.endIndex){var n=this.endIndex.evaluate(t);return e.slice(r,n)}return e.slice(r)},gr.prototype.eachChild=function(t){t(this.input),t(this.beginIndex),this.endIndex&&t(this.endIndex)},gr.prototype.outputDefined=function(){return!1},gr.prototype.serialize=function(){if(null!=this.endIndex&&void 0!==this.endIndex){var t=this.endIndex.serialize();return[\"slice\",this.input.serialize(),this.beginIndex.serialize(),t]}return[\"slice\",this.input.serialize(),this.beginIndex.serialize()]};var xr=yr(\"==\",(function(t,e,r){return e===r}),vr),br=yr(\"!=\",(function(t,e,r){return e!==r}),(function(t,e,r,n){return!vr(0,e,r,n)})),_r=yr(\"<\",(function(t,e,r){return e\",(function(t,e,r){return e>r}),(function(t,e,r,n){return n.compare(e,r)>0})),Tr=yr(\"<=\",(function(t,e,r){return e<=r}),(function(t,e,r,n){return n.compare(e,r)<=0})),kr=yr(\">=\",(function(t,e,r){return e>=r}),(function(t,e,r,n){return n.compare(e,r)>=0})),Ar=function(t,e,r,n,i){this.type=Nt,this.number=t,this.locale=e,this.currency=r,this.minFractionDigits=n,this.maxFractionDigits=i};Ar.parse=function(t,e){if(3!==t.length)return e.error(\"Expected two arguments.\");var r=e.parse(t[1],1,Bt);if(!r)return null;var n=t[2];if(\"object\"!=typeof n||Array.isArray(n))return e.error(\"NumberFormat options argument must be an object.\");var i=null;if(n.locale&&!(i=e.parse(n.locale,1,Nt)))return null;var a=null;if(n.currency&&!(a=e.parse(n.currency,1,Nt)))return null;var o=null;if(n[\"min-fraction-digits\"]&&!(o=e.parse(n[\"min-fraction-digits\"],1,Bt)))return null;var s=null;return n[\"max-fraction-digits\"]&&!(s=e.parse(n[\"max-fraction-digits\"],1,Bt))?null:new Ar(r,i,a,o,s)},Ar.prototype.evaluate=function(t){return new Intl.NumberFormat(this.locale?this.locale.evaluate(t):[],{style:this.currency?\"currency\":\"decimal\",currency:this.currency?this.currency.evaluate(t):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(t):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(t):void 0}).format(this.number.evaluate(t))},Ar.prototype.eachChild=function(t){t(this.number),this.locale&&t(this.locale),this.currency&&t(this.currency),this.minFractionDigits&&t(this.minFractionDigits),this.maxFractionDigits&&t(this.maxFractionDigits)},Ar.prototype.outputDefined=function(){return!1},Ar.prototype.serialize=function(){var t={};return this.locale&&(t.locale=this.locale.serialize()),this.currency&&(t.currency=this.currency.serialize()),this.minFractionDigits&&(t[\"min-fraction-digits\"]=this.minFractionDigits.serialize()),this.maxFractionDigits&&(t[\"max-fraction-digits\"]=this.maxFractionDigits.serialize()),[\"number-format\",this.number.serialize(),t]};var Mr=function(t){this.type=Bt,this.input=t};Mr.parse=function(t,e){if(2!==t.length)return e.error(\"Expected 1 argument, but found \"+(t.length-1)+\" instead.\");var r=e.parse(t[1],1);return r?\"array\"!==r.type.kind&&\"string\"!==r.type.kind&&\"value\"!==r.type.kind?e.error(\"Expected argument of type string or array, but found \"+Xt(r.type)+\" instead.\"):new Mr(r):null},Mr.prototype.evaluate=function(t){var e=this.input.evaluate(t);if(\"string\"==typeof e)return e.length;if(Array.isArray(e))return e.length;throw new ue(\"Expected value to be of type string or array, but found \"+Xt(se(e))+\" instead.\")},Mr.prototype.eachChild=function(t){t(this.input)},Mr.prototype.outputDefined=function(){return!1},Mr.prototype.serialize=function(){var t=[\"length\"];return this.eachChild((function(e){t.push(e.serialize())})),t};var Sr={\"==\":xr,\"!=\":br,\">\":wr,\"<\":_r,\">=\":kr,\"<=\":Tr,array:he,at:ur,boolean:he,case:dr,coalesce:lr,collator:be,format:pe,image:de,in:fr,\"index-of\":hr,interpolate:or,\"interpolate-hcl\":or,\"interpolate-lab\":or,length:Mr,let:cr,literal:ce,match:pr,number:he,\"number-format\":Ar,object:he,slice:gr,step:He,string:he,\"to-boolean\":me,\"to-color\":me,\"to-number\":me,\"to-string\":me,var:je,within:Re};function Er(t,e){var r=e[0],n=e[1],i=e[2],a=e[3];r=r.evaluate(t),n=n.evaluate(t),i=i.evaluate(t);var o=a?a.evaluate(t):1,s=ae(r,n,i,o);if(s)throw new ue(s);return new te(r/255*o,n/255*o,i/255*o,o)}function Lr(t,e){return t in e}function Cr(t,e){var r=e[t];return void 0===r?null:r}function Pr(t){return{type:t}}function Ir(t){return{result:\"success\",value:t}}function Or(t){return{result:\"error\",value:t}}function zr(t){return\"data-driven\"===t[\"property-type\"]||\"cross-faded-data-driven\"===t[\"property-type\"]}function Dr(t){return!!t.expression&&t.expression.parameters.indexOf(\"zoom\")>-1}function Rr(t){return!!t.expression&&t.expression.interpolated}function Fr(t){return t instanceof Number?\"number\":t instanceof String?\"string\":t instanceof Boolean?\"boolean\":Array.isArray(t)?\"array\":null===t?\"null\":typeof t}function Br(t){return\"object\"==typeof t&&null!==t&&!Array.isArray(t)}function Nr(t){return t}function jr(t,e,r){return void 0!==t?t:void 0!==e?e:void 0!==r?r:void 0}function Ur(t,e,r,n,i){return jr(typeof r===i?n[r]:void 0,t.default,e.default)}function Vr(t,e,r){if(\"number\"!==Fr(r))return jr(t.default,e.default);var n=t.stops.length;if(1===n)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[n-1][0])return t.stops[n-1][1];var i=Ve(t.stops.map((function(t){return t[0]})),r);return t.stops[i][1]}function Hr(t,e,r){var n=void 0!==t.base?t.base:1;if(\"number\"!==Fr(r))return jr(t.default,e.default);var i=t.stops.length;if(1===i)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[i-1][0])return t.stops[i-1][1];var a=Ve(t.stops.map((function(t){return t[0]})),r),o=function(t,e,r,n){var i=n-r,a=t-r;return 0===i?0:1===e?a/i:(Math.pow(e,a)-1)/(Math.pow(e,i)-1)}(r,n,t.stops[a][0],t.stops[a+1][0]),s=t.stops[a][1],l=t.stops[a+1][1],c=Ge[e.type]||Nr;if(t.colorSpace&&\"rgb\"!==t.colorSpace){var u=ar[t.colorSpace];c=function(t,e){return u.reverse(u.interpolate(u.forward(t),u.forward(e),o))}}return\"function\"==typeof s.evaluate?{evaluate:function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var r=s.evaluate.apply(void 0,t),n=l.evaluate.apply(void 0,t);if(void 0!==r&&void 0!==n)return c(r,n,o)}}:c(s,l,o)}function qr(t,e,r){return\"color\"===e.type?r=te.parse(r):\"formatted\"===e.type?r=ne.fromString(r.toString()):\"resolvedImage\"===e.type?r=ie.fromString(r.toString()):Fr(r)===e.type||\"enum\"===e.type&&e.values[r]||(r=void 0),jr(r,t.default,e.default)}xe.register(Sr,{error:[{kind:\"error\"},[Nt],function(t,e){var r=e[0];throw new ue(r.evaluate(t))}],typeof:[Nt,[Ht],function(t,e){return Xt(se(e[0].evaluate(t)))}],\"to-rgba\":[Wt(Bt,4),[Ut],function(t,e){return e[0].evaluate(t).toArray()}],rgb:[Ut,[Bt,Bt,Bt],Er],rgba:[Ut,[Bt,Bt,Bt,Bt],Er],has:{type:jt,overloads:[[[Nt],function(t,e){return Lr(e[0].evaluate(t),t.properties())}],[[Nt,Vt],function(t,e){var r=e[0],n=e[1];return Lr(r.evaluate(t),n.evaluate(t))}]]},get:{type:Ht,overloads:[[[Nt],function(t,e){return Cr(e[0].evaluate(t),t.properties())}],[[Nt,Vt],function(t,e){var r=e[0],n=e[1];return Cr(r.evaluate(t),n.evaluate(t))}]]},\"feature-state\":[Ht,[Nt],function(t,e){return Cr(e[0].evaluate(t),t.featureState||{})}],properties:[Vt,[],function(t){return t.properties()}],\"geometry-type\":[Nt,[],function(t){return t.geometryType()}],id:[Ht,[],function(t){return t.id()}],zoom:[Bt,[],function(t){return t.globals.zoom}],\"heatmap-density\":[Bt,[],function(t){return t.globals.heatmapDensity||0}],\"line-progress\":[Bt,[],function(t){return t.globals.lineProgress||0}],accumulated:[Ht,[],function(t){return void 0===t.globals.accumulated?null:t.globals.accumulated}],\"+\":[Bt,Pr(Bt),function(t,e){for(var r=0,n=0,i=e;n\":[jt,[Nt,Ht],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i>a}],\"filter-id->\":[jt,[Ht],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n>i}],\"filter-<=\":[jt,[Nt,Ht],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i<=a}],\"filter-id-<=\":[jt,[Ht],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n<=i}],\"filter->=\":[jt,[Nt,Ht],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i>=a}],\"filter-id->=\":[jt,[Ht],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n>=i}],\"filter-has\":[jt,[Ht],function(t,e){return e[0].value in t.properties()}],\"filter-has-id\":[jt,[],function(t){return null!==t.id()&&void 0!==t.id()}],\"filter-type-in\":[jt,[Wt(Nt)],function(t,e){return e[0].value.indexOf(t.geometryType())>=0}],\"filter-id-in\":[jt,[Wt(Ht)],function(t,e){return e[0].value.indexOf(t.id())>=0}],\"filter-in-small\":[jt,[Nt,Wt(Ht)],function(t,e){var r=e[0];return e[1].value.indexOf(t.properties()[r.value])>=0}],\"filter-in-large\":[jt,[Nt,Wt(Ht)],function(t,e){var r=e[0],n=e[1];return function(t,e,r,n){for(;r<=n;){var i=r+n>>1;if(e[i]===t)return!0;e[i]>t?n=i-1:r=i+1}return!1}(t.properties()[r.value],n.value,0,n.value.length-1)}],all:{type:jt,overloads:[[[jt,jt],function(t,e){var r=e[0],n=e[1];return r.evaluate(t)&&n.evaluate(t)}],[Pr(jt),function(t,e){for(var r=0,n=e;r0&&\"string\"==typeof t[0]&&t[0]in Sr}function Wr(t,e){var r=new Ue(Sr,[],e?function(t){var e={color:Ut,string:Nt,number:Bt,enum:Nt,boolean:jt,formatted:Gt,resolvedImage:Yt};if(\"array\"===t.type)return Wt(e[t.value]||Ht,t.length);return e[t.type]}(e):void 0),n=r.parse(t,void 0,void 0,void 0,e&&\"string\"===e.type?{typeAnnotation:\"coerce\"}:void 0);return n?Ir(new Gr(n,e)):Or(r.errors)}Gr.prototype.evaluateWithoutErrorHandling=function(t,e,r,n,i,a){return this._evaluator.globals=t,this._evaluator.feature=e,this._evaluator.featureState=r,this._evaluator.canonical=n,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=a,this.expression.evaluate(this._evaluator)},Gr.prototype.evaluate=function(t,e,r,n,i,a){this._evaluator.globals=t,this._evaluator.feature=e||null,this._evaluator.featureState=r||null,this._evaluator.canonical=n,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=a||null;try{var o=this.expression.evaluate(this._evaluator);if(null==o||\"number\"==typeof o&&o!=o)return this._defaultValue;if(this._enumValues&&!(o in this._enumValues))throw new ue(\"Expected value to be one of \"+Object.keys(this._enumValues).map((function(t){return JSON.stringify(t)})).join(\", \")+\", but found \"+JSON.stringify(o)+\" instead.\");return o}catch(t){return this._warningHistory[t.message]||(this._warningHistory[t.message]=!0,\"undefined\"!=typeof console&&console.warn(t.message)),this._defaultValue}};var Xr=function(t,e){this.kind=t,this._styleExpression=e,this.isStateDependent=\"constant\"!==t&&!Be(e.expression)};Xr.prototype.evaluateWithoutErrorHandling=function(t,e,r,n,i,a){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r,n,i,a)},Xr.prototype.evaluate=function(t,e,r,n,i,a){return this._styleExpression.evaluate(t,e,r,n,i,a)};var Zr=function(t,e,r,n){this.kind=t,this.zoomStops=r,this._styleExpression=e,this.isStateDependent=\"camera\"!==t&&!Be(e.expression),this.interpolationType=n};function Jr(t,e){if(\"error\"===(t=Wr(t,e)).result)return t;var r=t.value.expression,n=Fe(r);if(!n&&!zr(e))return Or([new Dt(\"\",\"data expressions not supported\")]);var i=Ne(r,[\"zoom\"]);if(!i&&!Dr(e))return Or([new Dt(\"\",\"zoom expressions not supported\")]);var a=function t(e){var r=null;if(e instanceof cr)r=t(e.result);else if(e instanceof lr)for(var n=0,i=e.args;nn.maximum?[new Ct(e,r,r+\" is greater than the maximum value \"+n.maximum)]:[]}function en(t){var e,r,n,i=t.valueSpec,a=Ot(t.value.type),o={},s=\"categorical\"!==a&&void 0===t.value.property,l=!s,c=\"array\"===Fr(t.value.stops)&&\"array\"===Fr(t.value.stops[0])&&\"object\"===Fr(t.value.stops[0][0]),u=Qr({key:t.key,value:t.value,valueSpec:t.styleSpec.function,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{stops:function(t){if(\"identity\"===a)return[new Ct(t.key,t.value,'identity function may not have a \"stops\" property')];var e=[],r=t.value;e=e.concat($r({key:t.key,value:r,valueSpec:t.valueSpec,style:t.style,styleSpec:t.styleSpec,arrayElementValidator:f})),\"array\"===Fr(r)&&0===r.length&&e.push(new Ct(t.key,r,\"array must have at least one stop\"));return e},default:function(t){return kn({key:t.key,value:t.value,valueSpec:i,style:t.style,styleSpec:t.styleSpec})}}});return\"identity\"===a&&s&&u.push(new Ct(t.key,t.value,'missing required property \"property\"')),\"identity\"===a||t.value.stops||u.push(new Ct(t.key,t.value,'missing required property \"stops\"')),\"exponential\"===a&&t.valueSpec.expression&&!Rr(t.valueSpec)&&u.push(new Ct(t.key,t.value,\"exponential functions not supported\")),t.styleSpec.$version>=8&&(l&&!zr(t.valueSpec)?u.push(new Ct(t.key,t.value,\"property functions not supported\")):s&&!Dr(t.valueSpec)&&u.push(new Ct(t.key,t.value,\"zoom functions not supported\"))),\"categorical\"!==a&&!c||void 0!==t.value.property||u.push(new Ct(t.key,t.value,'\"property\" property is required')),u;function f(t){var e=[],a=t.value,s=t.key;if(\"array\"!==Fr(a))return[new Ct(s,a,\"array expected, \"+Fr(a)+\" found\")];if(2!==a.length)return[new Ct(s,a,\"array length 2 expected, length \"+a.length+\" found\")];if(c){if(\"object\"!==Fr(a[0]))return[new Ct(s,a,\"object expected, \"+Fr(a[0])+\" found\")];if(void 0===a[0].zoom)return[new Ct(s,a,\"object stop key must have zoom\")];if(void 0===a[0].value)return[new Ct(s,a,\"object stop key must have value\")];if(n&&n>Ot(a[0].zoom))return[new Ct(s,a[0].zoom,\"stop zoom values must appear in ascending order\")];Ot(a[0].zoom)!==n&&(n=Ot(a[0].zoom),r=void 0,o={}),e=e.concat(Qr({key:s+\"[0]\",value:a[0],valueSpec:{zoom:{}},style:t.style,styleSpec:t.styleSpec,objectElementValidators:{zoom:tn,value:h}}))}else e=e.concat(h({key:s+\"[0]\",value:a[0],valueSpec:{},style:t.style,styleSpec:t.styleSpec},a));return Yr(zt(a[1]))?e.concat([new Ct(s+\"[1]\",a[1],\"expressions are not allowed in function stops.\")]):e.concat(kn({key:s+\"[1]\",value:a[1],valueSpec:i,style:t.style,styleSpec:t.styleSpec}))}function h(t,n){var s=Fr(t.value),l=Ot(t.value),c=null!==t.value?t.value:n;if(e){if(s!==e)return[new Ct(t.key,c,s+\" stop domain type must match previous stop domain type \"+e)]}else e=s;if(\"number\"!==s&&\"string\"!==s&&\"boolean\"!==s)return[new Ct(t.key,c,\"stop domain value must be a number, string, or boolean\")];if(\"number\"!==s&&\"categorical\"!==a){var u=\"number expected, \"+s+\" found\";return zr(i)&&void 0===a&&(u+='\\nIf you intended to use a categorical function, specify `\"type\": \"categorical\"`.'),[new Ct(t.key,c,u)]}return\"categorical\"!==a||\"number\"!==s||isFinite(l)&&Math.floor(l)===l?\"categorical\"!==a&&\"number\"===s&&void 0!==r&&l=2&&\"$id\"!==t[1]&&\"$type\"!==t[1];case\"in\":return t.length>=3&&(\"string\"!=typeof t[1]||Array.isArray(t[2]));case\"!in\":case\"!has\":case\"none\":return!1;case\"==\":case\"!=\":case\">\":case\">=\":case\"<\":case\"<=\":return 3!==t.length||Array.isArray(t[1])||Array.isArray(t[2]);case\"any\":case\"all\":for(var e=0,r=t.slice(1);ee?1:0}function cn(t){if(!t)return!0;var e,r=t[0];return t.length<=1?\"any\"!==r:\"==\"===r?un(t[1],t[2],\"==\"):\"!=\"===r?pn(un(t[1],t[2],\"==\")):\"<\"===r||\">\"===r||\"<=\"===r||\">=\"===r?un(t[1],t[2],r):\"any\"===r?(e=t.slice(1),[\"any\"].concat(e.map(cn))):\"all\"===r?[\"all\"].concat(t.slice(1).map(cn)):\"none\"===r?[\"all\"].concat(t.slice(1).map(cn).map(pn)):\"in\"===r?fn(t[1],t.slice(2)):\"!in\"===r?pn(fn(t[1],t.slice(2))):\"has\"===r?hn(t[1]):\"!has\"===r?pn(hn(t[1])):\"within\"!==r||t}function un(t,e,r){switch(t){case\"$type\":return[\"filter-type-\"+r,e];case\"$id\":return[\"filter-id-\"+r,e];default:return[\"filter-\"+r,t,e]}}function fn(t,e){if(0===e.length)return!1;switch(t){case\"$type\":return[\"filter-type-in\",[\"literal\",e]];case\"$id\":return[\"filter-id-in\",[\"literal\",e]];default:return e.length>200&&!e.some((function(t){return typeof t!=typeof e[0]}))?[\"filter-in-large\",t,[\"literal\",e.sort(ln)]]:[\"filter-in-small\",t,[\"literal\",e]]}}function hn(t){switch(t){case\"$type\":return!0;case\"$id\":return[\"filter-has-id\"];default:return[\"filter-has\",t]}}function pn(t){return[\"!\",t]}function dn(t){return an(zt(t.value))?rn(It({},t,{expressionContext:\"filter\",valueSpec:{value:\"boolean\"}})):function t(e){var r=e.value,n=e.key;if(\"array\"!==Fr(r))return[new Ct(n,r,\"array expected, \"+Fr(r)+\" found\")];var i,a=e.styleSpec,o=[];if(r.length<1)return[new Ct(n,r,\"filter array must have at least 1 element\")];switch(o=o.concat(nn({key:n+\"[0]\",value:r[0],valueSpec:a.filter_operator,style:e.style,styleSpec:e.styleSpec})),Ot(r[0])){case\"<\":case\"<=\":case\">\":case\">=\":r.length>=2&&\"$type\"===Ot(r[1])&&o.push(new Ct(n,r,'\"$type\" cannot be use with operator \"'+r[0]+'\"'));case\"==\":case\"!=\":3!==r.length&&o.push(new Ct(n,r,'filter array for operator \"'+r[0]+'\" must have 3 elements'));case\"in\":case\"!in\":r.length>=2&&\"string\"!==(i=Fr(r[1]))&&o.push(new Ct(n+\"[1]\",r[1],\"string expected, \"+i+\" found\"));for(var s=2;s=u[p+0]&&n>=u[p+1])?(o[h]=!0,a.push(c[h])):o[h]=!1}}},Dn.prototype._forEachCell=function(t,e,r,n,i,a,o,s){for(var l=this._convertToCellCoord(t),c=this._convertToCellCoord(e),u=this._convertToCellCoord(r),f=this._convertToCellCoord(n),h=l;h<=u;h++)for(var p=c;p<=f;p++){var d=this.d*p+h;if((!s||s(this._convertFromCellCoord(h),this._convertFromCellCoord(p),this._convertFromCellCoord(h+1),this._convertFromCellCoord(p+1)))&&i.call(this,t,e,r,n,d,a,o,s))return}},Dn.prototype._convertFromCellCoord=function(t){return(t-this.padding)/this.scale},Dn.prototype._convertToCellCoord=function(t){return Math.max(0,Math.min(this.d-1,Math.floor(t*this.scale)+this.padding))},Dn.prototype.toArrayBuffer=function(){if(this.arrayBuffer)return this.arrayBuffer;for(var t=this.cells,e=3+this.cells.length+1+1,r=0,n=0;n=0)){var f=t[u];c[u]=Bn[l].shallow.indexOf(u)>=0?f:Hn(f,e)}t instanceof Error&&(c.message=t.message)}if(c.$name)throw new Error(\"$name property is reserved for worker serialization logic.\");return\"Object\"!==l&&(c.$name=l),c}throw new Error(\"can't serialize object of type \"+typeof t)}function qn(t){if(null==t||\"boolean\"==typeof t||\"number\"==typeof t||\"string\"==typeof t||t instanceof Boolean||t instanceof Number||t instanceof String||t instanceof Date||t instanceof RegExp||Un(t)||Vn(t)||ArrayBuffer.isView(t)||t instanceof Rn)return t;if(Array.isArray(t))return t.map(qn);if(\"object\"==typeof t){var e=t.$name||\"Object\",r=Bn[e].klass;if(!r)throw new Error(\"can't deserialize unregistered class \"+e);if(r.deserialize)return r.deserialize(t);for(var n=Object.create(r.prototype),i=0,a=Object.keys(t);i=0?s:qn(s)}}return n}throw new Error(\"can't deserialize object of type \"+typeof t)}var Gn=function(){this.first=!0};Gn.prototype.update=function(t,e){var r=Math.floor(t);return this.first?(this.first=!1,this.lastIntegerZoom=r,this.lastIntegerZoomTime=0,this.lastZoom=t,this.lastFloorZoom=r,!0):(this.lastFloorZoom>r?(this.lastIntegerZoom=r+1,this.lastIntegerZoomTime=e):this.lastFloorZoom=128&&t<=255},Arabic:function(t){return t>=1536&&t<=1791},\"Arabic Supplement\":function(t){return t>=1872&&t<=1919},\"Arabic Extended-A\":function(t){return t>=2208&&t<=2303},\"Hangul Jamo\":function(t){return t>=4352&&t<=4607},\"Unified Canadian Aboriginal Syllabics\":function(t){return t>=5120&&t<=5759},Khmer:function(t){return t>=6016&&t<=6143},\"Unified Canadian Aboriginal Syllabics Extended\":function(t){return t>=6320&&t<=6399},\"General Punctuation\":function(t){return t>=8192&&t<=8303},\"Letterlike Symbols\":function(t){return t>=8448&&t<=8527},\"Number Forms\":function(t){return t>=8528&&t<=8591},\"Miscellaneous Technical\":function(t){return t>=8960&&t<=9215},\"Control Pictures\":function(t){return t>=9216&&t<=9279},\"Optical Character Recognition\":function(t){return t>=9280&&t<=9311},\"Enclosed Alphanumerics\":function(t){return t>=9312&&t<=9471},\"Geometric Shapes\":function(t){return t>=9632&&t<=9727},\"Miscellaneous Symbols\":function(t){return t>=9728&&t<=9983},\"Miscellaneous Symbols and Arrows\":function(t){return t>=11008&&t<=11263},\"CJK Radicals Supplement\":function(t){return t>=11904&&t<=12031},\"Kangxi Radicals\":function(t){return t>=12032&&t<=12255},\"Ideographic Description Characters\":function(t){return t>=12272&&t<=12287},\"CJK Symbols and Punctuation\":function(t){return t>=12288&&t<=12351},Hiragana:function(t){return t>=12352&&t<=12447},Katakana:function(t){return t>=12448&&t<=12543},Bopomofo:function(t){return t>=12544&&t<=12591},\"Hangul Compatibility Jamo\":function(t){return t>=12592&&t<=12687},Kanbun:function(t){return t>=12688&&t<=12703},\"Bopomofo Extended\":function(t){return t>=12704&&t<=12735},\"CJK Strokes\":function(t){return t>=12736&&t<=12783},\"Katakana Phonetic Extensions\":function(t){return t>=12784&&t<=12799},\"Enclosed CJK Letters and Months\":function(t){return t>=12800&&t<=13055},\"CJK Compatibility\":function(t){return t>=13056&&t<=13311},\"CJK Unified Ideographs Extension A\":function(t){return t>=13312&&t<=19903},\"Yijing Hexagram Symbols\":function(t){return t>=19904&&t<=19967},\"CJK Unified Ideographs\":function(t){return t>=19968&&t<=40959},\"Yi Syllables\":function(t){return t>=40960&&t<=42127},\"Yi Radicals\":function(t){return t>=42128&&t<=42191},\"Hangul Jamo Extended-A\":function(t){return t>=43360&&t<=43391},\"Hangul Syllables\":function(t){return t>=44032&&t<=55215},\"Hangul Jamo Extended-B\":function(t){return t>=55216&&t<=55295},\"Private Use Area\":function(t){return t>=57344&&t<=63743},\"CJK Compatibility Ideographs\":function(t){return t>=63744&&t<=64255},\"Arabic Presentation Forms-A\":function(t){return t>=64336&&t<=65023},\"Vertical Forms\":function(t){return t>=65040&&t<=65055},\"CJK Compatibility Forms\":function(t){return t>=65072&&t<=65103},\"Small Form Variants\":function(t){return t>=65104&&t<=65135},\"Arabic Presentation Forms-B\":function(t){return t>=65136&&t<=65279},\"Halfwidth and Fullwidth Forms\":function(t){return t>=65280&&t<=65519}};function Wn(t){for(var e=0,r=t;e=65097&&t<=65103)||(!!Yn[\"CJK Compatibility Ideographs\"](t)||(!!Yn[\"CJK Compatibility\"](t)||(!!Yn[\"CJK Radicals Supplement\"](t)||(!!Yn[\"CJK Strokes\"](t)||(!(!Yn[\"CJK Symbols and Punctuation\"](t)||t>=12296&&t<=12305||t>=12308&&t<=12319||12336===t)||(!!Yn[\"CJK Unified Ideographs Extension A\"](t)||(!!Yn[\"CJK Unified Ideographs\"](t)||(!!Yn[\"Enclosed CJK Letters and Months\"](t)||(!!Yn[\"Hangul Compatibility Jamo\"](t)||(!!Yn[\"Hangul Jamo Extended-A\"](t)||(!!Yn[\"Hangul Jamo Extended-B\"](t)||(!!Yn[\"Hangul Jamo\"](t)||(!!Yn[\"Hangul Syllables\"](t)||(!!Yn.Hiragana(t)||(!!Yn[\"Ideographic Description Characters\"](t)||(!!Yn.Kanbun(t)||(!!Yn[\"Kangxi Radicals\"](t)||(!!Yn[\"Katakana Phonetic Extensions\"](t)||(!(!Yn.Katakana(t)||12540===t)||(!(!Yn[\"Halfwidth and Fullwidth Forms\"](t)||65288===t||65289===t||65293===t||t>=65306&&t<=65310||65339===t||65341===t||65343===t||t>=65371&&t<=65503||65507===t||t>=65512&&t<=65519)||(!(!Yn[\"Small Form Variants\"](t)||t>=65112&&t<=65118||t>=65123&&t<=65126)||(!!Yn[\"Unified Canadian Aboriginal Syllabics\"](t)||(!!Yn[\"Unified Canadian Aboriginal Syllabics Extended\"](t)||(!!Yn[\"Vertical Forms\"](t)||(!!Yn[\"Yijing Hexagram Symbols\"](t)||(!!Yn[\"Yi Syllables\"](t)||!!Yn[\"Yi Radicals\"](t))))))))))))))))))))))))))))))}function Jn(t){return!(Zn(t)||function(t){return!(!Yn[\"Latin-1 Supplement\"](t)||167!==t&&169!==t&&174!==t&&177!==t&&188!==t&&189!==t&&190!==t&&215!==t&&247!==t)||(!(!Yn[\"General Punctuation\"](t)||8214!==t&&8224!==t&&8225!==t&&8240!==t&&8241!==t&&8251!==t&&8252!==t&&8258!==t&&8263!==t&&8264!==t&&8265!==t&&8273!==t)||(!!Yn[\"Letterlike Symbols\"](t)||(!!Yn[\"Number Forms\"](t)||(!(!Yn[\"Miscellaneous Technical\"](t)||!(t>=8960&&t<=8967||t>=8972&&t<=8991||t>=8996&&t<=9e3||9003===t||t>=9085&&t<=9114||t>=9150&&t<=9165||9167===t||t>=9169&&t<=9179||t>=9186&&t<=9215))||(!(!Yn[\"Control Pictures\"](t)||9251===t)||(!!Yn[\"Optical Character Recognition\"](t)||(!!Yn[\"Enclosed Alphanumerics\"](t)||(!!Yn[\"Geometric Shapes\"](t)||(!(!Yn[\"Miscellaneous Symbols\"](t)||t>=9754&&t<=9759)||(!(!Yn[\"Miscellaneous Symbols and Arrows\"](t)||!(t>=11026&&t<=11055||t>=11088&&t<=11097||t>=11192&&t<=11243))||(!!Yn[\"CJK Symbols and Punctuation\"](t)||(!!Yn.Katakana(t)||(!!Yn[\"Private Use Area\"](t)||(!!Yn[\"CJK Compatibility Forms\"](t)||(!!Yn[\"Small Form Variants\"](t)||(!!Yn[\"Halfwidth and Fullwidth Forms\"](t)||(8734===t||8756===t||8757===t||t>=9984&&t<=10087||t>=10102&&t<=10131||65532===t||65533===t)))))))))))))))))}(t))}function Kn(t){return t>=1424&&t<=2303||Yn[\"Arabic Presentation Forms-A\"](t)||Yn[\"Arabic Presentation Forms-B\"](t)}function Qn(t,e){return!(!e&&Kn(t))&&!(t>=2304&&t<=3583||t>=3840&&t<=4255||Yn.Khmer(t))}function $n(t){for(var e=0,r=t;e-1&&(ai=ni),ii&&ii(t)};function li(){ci.fire(new Mt(\"pluginStateChange\",{pluginStatus:ai,pluginURL:oi}))}var ci=new Et,ui=function(){return ai},fi=function(){if(ai!==ti||!oi)throw new Error(\"rtl-text-plugin cannot be downloaded unless a pluginURL is specified\");ai=ei,li(),oi&&xt({url:oi},(function(t){t?si(t):(ai=ri,li())}))},hi={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isLoaded:function(){return ai===ri||null!=hi.applyArabicShaping},isLoading:function(){return ai===ei},setState:function(t){ai=t.pluginStatus,oi=t.pluginURL},isParsed:function(){return null!=hi.applyArabicShaping&&null!=hi.processBidirectionalText&&null!=hi.processStyledBidirectionalText},getPluginURL:function(){return oi}},pi=function(t,e){this.zoom=t,e?(this.now=e.now,this.fadeDuration=e.fadeDuration,this.zoomHistory=e.zoomHistory,this.transition=e.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new Gn,this.transition={})};pi.prototype.isSupportedScript=function(t){return function(t,e){for(var r=0,n=t;rthis.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:e+(1-e)*r}:{fromScale:.5,toScale:1,t:1-(1-r)*e}};var di=function(t,e){this.property=t,this.value=e,this.expression=function(t,e){if(Br(t))return new Kr(t,e);if(Yr(t)){var r=Jr(t,e);if(\"error\"===r.result)throw new Error(r.value.map((function(t){return t.key+\": \"+t.message})).join(\", \"));return r.value}var n=t;return\"string\"==typeof t&&\"color\"===e.type&&(n=te.parse(t)),{kind:\"constant\",evaluate:function(){return n}}}(void 0===e?t.specification.default:e,t.specification)};di.prototype.isDataDriven=function(){return\"source\"===this.expression.kind||\"composite\"===this.expression.kind},di.prototype.possiblyEvaluate=function(t,e,r){return this.property.possiblyEvaluate(this,t,e,r)};var gi=function(t){this.property=t,this.value=new di(t,void 0)};gi.prototype.transitioned=function(t,e){return new vi(this.property,this.value,e,u({},t.transition,this.transition),t.now)},gi.prototype.untransitioned=function(){return new vi(this.property,this.value,null,{},0)};var mi=function(t){this._properties=t,this._values=Object.create(t.defaultTransitionablePropertyValues)};mi.prototype.getValue=function(t){return x(this._values[t].value.value)},mi.prototype.setValue=function(t,e){this._values.hasOwnProperty(t)||(this._values[t]=new gi(this._values[t].property)),this._values[t].value=new di(this._values[t].property,null===e?void 0:x(e))},mi.prototype.getTransition=function(t){return x(this._values[t].transition)},mi.prototype.setTransition=function(t,e){this._values.hasOwnProperty(t)||(this._values[t]=new gi(this._values[t].property)),this._values[t].transition=x(e)||void 0},mi.prototype.serialize=function(){for(var t={},e=0,r=Object.keys(this._values);ethis.end)return this.prior=null,i;if(this.value.isDataDriven())return this.prior=null,i;if(n=1)return 1;var e=t*t,r=e*t;return 4*(t<.5?r:3*(t-e)+r-.75)}(o))}return i};var yi=function(t){this._properties=t,this._values=Object.create(t.defaultTransitioningPropertyValues)};yi.prototype.possiblyEvaluate=function(t,e,r){for(var n=new _i(this._properties),i=0,a=Object.keys(this._values);in.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}},e.prototype.interpolate=function(t){return t},e}(Ti),Ai=function(t){this.specification=t};Ai.prototype.possiblyEvaluate=function(t,e,r,n){if(void 0!==t.value){if(\"constant\"===t.expression.kind){var i=t.expression.evaluate(e,null,{},r,n);return this._calculate(i,i,i,e)}return this._calculate(t.expression.evaluate(new pi(Math.floor(e.zoom-1),e)),t.expression.evaluate(new pi(Math.floor(e.zoom),e)),t.expression.evaluate(new pi(Math.floor(e.zoom+1),e)),e)}},Ai.prototype._calculate=function(t,e,r,n){return n.zoom>n.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}},Ai.prototype.interpolate=function(t){return t};var Mi=function(t){this.specification=t};Mi.prototype.possiblyEvaluate=function(t,e,r,n){return!!t.expression.evaluate(e,null,{},r,n)},Mi.prototype.interpolate=function(){return!1};var Si=function(t){for(var e in this.properties=t,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[],t){var r=t[e];r.specification.overridable&&this.overridableProperties.push(e);var n=this.defaultPropertyValues[e]=new di(r,void 0),i=this.defaultTransitionablePropertyValues[e]=new gi(r);this.defaultTransitioningPropertyValues[e]=i.untransitioned(),this.defaultPossiblyEvaluatedValues[e]=n.possiblyEvaluate({})}};Nn(\"DataDrivenProperty\",Ti),Nn(\"DataConstantProperty\",wi),Nn(\"CrossFadedDataDrivenProperty\",ki),Nn(\"CrossFadedProperty\",Ai),Nn(\"ColorRampProperty\",Mi);var Ei=function(t){function e(e,r){if(t.call(this),this.id=e.id,this.type=e.type,this._featureFilter={filter:function(){return!0},needGeometry:!1},\"custom\"!==e.type&&(e=e,this.metadata=e.metadata,this.minzoom=e.minzoom,this.maxzoom=e.maxzoom,\"background\"!==e.type&&(this.source=e.source,this.sourceLayer=e[\"source-layer\"],this.filter=e.filter),r.layout&&(this._unevaluatedLayout=new xi(r.layout)),r.paint)){for(var n in this._transitionablePaint=new mi(r.paint),e.paint)this.setPaintProperty(n,e.paint[n],{validate:!1});for(var i in e.layout)this.setLayoutProperty(i,e.layout[i],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new _i(r.paint)}}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getCrossfadeParameters=function(){return this._crossfadeParameters},e.prototype.getLayoutProperty=function(t){return\"visibility\"===t?this.visibility:this._unevaluatedLayout.getValue(t)},e.prototype.setLayoutProperty=function(t,e,r){if(void 0===r&&(r={}),null!=e){var n=\"layers.\"+this.id+\".layout.\"+t;if(this._validate(In,n,t,e,r))return}\"visibility\"!==t?this._unevaluatedLayout.setValue(t,e):this.visibility=e},e.prototype.getPaintProperty=function(t){return m(t,\"-transition\")?this._transitionablePaint.getTransition(t.slice(0,-\"-transition\".length)):this._transitionablePaint.getValue(t)},e.prototype.setPaintProperty=function(t,e,r){if(void 0===r&&(r={}),null!=e){var n=\"layers.\"+this.id+\".paint.\"+t;if(this._validate(Pn,n,t,e,r))return!1}if(m(t,\"-transition\"))return this._transitionablePaint.setTransition(t.slice(0,-\"-transition\".length),e||void 0),!1;var i=this._transitionablePaint._values[t],a=\"cross-faded-data-driven\"===i.property.specification[\"property-type\"],o=i.value.isDataDriven(),s=i.value;this._transitionablePaint.setValue(t,e),this._handleSpecialPaintPropertyUpdate(t);var l=this._transitionablePaint._values[t].value;return l.isDataDriven()||o||a||this._handleOverridablePaintPropertyUpdate(t,s,l)},e.prototype._handleSpecialPaintPropertyUpdate=function(t){},e.prototype._handleOverridablePaintPropertyUpdate=function(t,e,r){return!1},e.prototype.isHidden=function(t){return!!(this.minzoom&&t=this.maxzoom)||\"none\"===this.visibility)},e.prototype.updateTransitions=function(t){this._transitioningPaint=this._transitionablePaint.transitioned(t,this._transitioningPaint)},e.prototype.hasTransition=function(){return this._transitioningPaint.hasTransition()},e.prototype.recalculate=function(t,e){t.getCrossfadeParameters&&(this._crossfadeParameters=t.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(t,void 0,e)),this.paint=this._transitioningPaint.possiblyEvaluate(t,void 0,e)},e.prototype.serialize=function(){var t={id:this.id,type:this.type,source:this.source,\"source-layer\":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(t.layout=t.layout||{},t.layout.visibility=this.visibility),y(t,(function(t,e){return!(void 0===t||\"layout\"===e&&!Object.keys(t).length||\"paint\"===e&&!Object.keys(t).length)}))},e.prototype._validate=function(t,e,r,n,i){return void 0===i&&(i={}),(!i||!1!==i.validate)&&On(this,t.call(Ln,{key:e,layerType:this.type,objectKey:r,value:n,styleSpec:Lt,style:{glyphs:!0,sprite:!0}}))},e.prototype.is3D=function(){return!1},e.prototype.isTileClipped=function(){return!1},e.prototype.hasOffscreenPass=function(){return!1},e.prototype.resize=function(){},e.prototype.isStateDependent=function(){for(var t in this.paint._values){var e=this.paint.get(t);if(e instanceof bi&&zr(e.property.specification)&&((\"source\"===e.value.kind||\"composite\"===e.value.kind)&&e.value.isStateDependent))return!0}return!1},e}(Et),Li={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array},Ci=function(t,e){this._structArray=t,this._pos1=e*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8},Pi=function(){this.isTransferred=!1,this.capacity=-1,this.resize(0)};function Ii(t,e){void 0===e&&(e=1);var r=0,n=0;return{members:t.map((function(t){var i,a=(i=t.type,Li[i].BYTES_PER_ELEMENT),o=r=Oi(r,Math.max(e,a)),s=t.components||1;return n=Math.max(n,a),r+=a*s,{name:t.name,type:t.type,components:s,offset:o}})),size:Oi(r,Math.max(n,e)),alignment:e}}function Oi(t,e){return Math.ceil(t/e)*e}Pi.serialize=function(t,e){return t._trim(),e&&(t.isTransferred=!0,e.push(t.arrayBuffer)),{length:t.length,arrayBuffer:t.arrayBuffer}},Pi.deserialize=function(t){var e=Object.create(this.prototype);return e.arrayBuffer=t.arrayBuffer,e.length=t.length,e.capacity=t.arrayBuffer.byteLength/e.bytesPerElement,e._refreshViews(),e},Pi.prototype._trim=function(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())},Pi.prototype.clear=function(){this.length=0},Pi.prototype.resize=function(t){this.reserve(t),this.length=t},Pi.prototype.reserve=function(t){if(t>this.capacity){this.capacity=Math.max(t,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);var e=this.uint8;this._refreshViews(),e&&this.uint8.set(e)}},Pi.prototype._refreshViews=function(){throw new Error(\"_refreshViews() must be implemented by each concrete StructArray layout\")};var zi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var n=2*t;return this.int16[n+0]=e,this.int16[n+1]=r,t},e}(Pi);zi.prototype.bytesPerElement=4,Nn(\"StructArrayLayout2i4\",zi);var Di=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)},e.prototype.emplace=function(t,e,r,n,i){var a=4*t;return this.int16[a+0]=e,this.int16[a+1]=r,this.int16[a+2]=n,this.int16[a+3]=i,t},e}(Pi);Di.prototype.bytesPerElement=8,Nn(\"StructArrayLayout4i8\",Di);var Ri=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a){var o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,a)},e.prototype.emplace=function(t,e,r,n,i,a,o){var s=6*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.int16[s+2]=n,this.int16[s+3]=i,this.int16[s+4]=a,this.int16[s+5]=o,t},e}(Pi);Ri.prototype.bytesPerElement=12,Nn(\"StructArrayLayout2i4i12\",Ri);var Fi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a){var o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,a)},e.prototype.emplace=function(t,e,r,n,i,a,o){var s=4*t,l=8*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.uint8[l+4]=n,this.uint8[l+5]=i,this.uint8[l+6]=a,this.uint8[l+7]=o,t},e}(Pi);Fi.prototype.bytesPerElement=8,Nn(\"StructArrayLayout2i4ub8\",Fi);var Bi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l,c){var u=this.length;return this.resize(u+1),this.emplace(u,t,e,r,n,i,a,o,s,l,c)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,c,u){var f=9*t,h=18*t;return this.uint16[f+0]=e,this.uint16[f+1]=r,this.uint16[f+2]=n,this.uint16[f+3]=i,this.uint16[f+4]=a,this.uint16[f+5]=o,this.uint16[f+6]=s,this.uint16[f+7]=l,this.uint8[h+16]=c,this.uint8[h+17]=u,t},e}(Pi);Bi.prototype.bytesPerElement=18,Nn(\"StructArrayLayout8ui2ub18\",Bi);var Ni=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l,c,u,f){var h=this.length;return this.resize(h+1),this.emplace(h,t,e,r,n,i,a,o,s,l,c,u,f)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,c,u,f,h){var p=12*t;return this.int16[p+0]=e,this.int16[p+1]=r,this.int16[p+2]=n,this.int16[p+3]=i,this.uint16[p+4]=a,this.uint16[p+5]=o,this.uint16[p+6]=s,this.uint16[p+7]=l,this.int16[p+8]=c,this.int16[p+9]=u,this.int16[p+10]=f,this.int16[p+11]=h,t},e}(Pi);Ni.prototype.bytesPerElement=24,Nn(\"StructArrayLayout4i4ui4i24\",Ni);var ji=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=3*t;return this.float32[i+0]=e,this.float32[i+1]=r,this.float32[i+2]=n,t},e}(Pi);ji.prototype.bytesPerElement=12,Nn(\"StructArrayLayout3f12\",ji);var Ui=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){var r=1*t;return this.uint32[r+0]=e,t},e}(Pi);Ui.prototype.bytesPerElement=4,Nn(\"StructArrayLayout1ul4\",Ui);var Vi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l){var c=this.length;return this.resize(c+1),this.emplace(c,t,e,r,n,i,a,o,s,l)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,c){var u=10*t,f=5*t;return this.int16[u+0]=e,this.int16[u+1]=r,this.int16[u+2]=n,this.int16[u+3]=i,this.int16[u+4]=a,this.int16[u+5]=o,this.uint32[f+3]=s,this.uint16[u+8]=l,this.uint16[u+9]=c,t},e}(Pi);Vi.prototype.bytesPerElement=20,Nn(\"StructArrayLayout6i1ul2ui20\",Vi);var Hi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a){var o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,a)},e.prototype.emplace=function(t,e,r,n,i,a,o){var s=6*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.int16[s+2]=n,this.int16[s+3]=i,this.int16[s+4]=a,this.int16[s+5]=o,t},e}(Pi);Hi.prototype.bytesPerElement=12,Nn(\"StructArrayLayout2i2i2i12\",Hi);var qi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i){var a=this.length;return this.resize(a+1),this.emplace(a,t,e,r,n,i)},e.prototype.emplace=function(t,e,r,n,i,a){var o=4*t,s=8*t;return this.float32[o+0]=e,this.float32[o+1]=r,this.float32[o+2]=n,this.int16[s+6]=i,this.int16[s+7]=a,t},e}(Pi);qi.prototype.bytesPerElement=16,Nn(\"StructArrayLayout2f1f2i16\",qi);var Gi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)},e.prototype.emplace=function(t,e,r,n,i){var a=12*t,o=3*t;return this.uint8[a+0]=e,this.uint8[a+1]=r,this.float32[o+1]=n,this.float32[o+2]=i,t},e}(Pi);Gi.prototype.bytesPerElement=12,Nn(\"StructArrayLayout2ub2f12\",Gi);var Yi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=3*t;return this.uint16[i+0]=e,this.uint16[i+1]=r,this.uint16[i+2]=n,t},e}(Pi);Yi.prototype.bytesPerElement=6,Nn(\"StructArrayLayout3ui6\",Yi);var Wi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m){var v=this.length;return this.resize(v+1),this.emplace(v,t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m,v){var y=24*t,x=12*t,b=48*t;return this.int16[y+0]=e,this.int16[y+1]=r,this.uint16[y+2]=n,this.uint16[y+3]=i,this.uint32[x+2]=a,this.uint32[x+3]=o,this.uint32[x+4]=s,this.uint16[y+10]=l,this.uint16[y+11]=c,this.uint16[y+12]=u,this.float32[x+7]=f,this.float32[x+8]=h,this.uint8[b+36]=p,this.uint8[b+37]=d,this.uint8[b+38]=g,this.uint32[x+10]=m,this.int16[y+22]=v,t},e}(Pi);Wi.prototype.bytesPerElement=48,Nn(\"StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48\",Wi);var Xi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m,v,y,x,b,_,w,T,k,A,M,S){var E=this.length;return this.resize(E+1),this.emplace(E,t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m,v,y,x,b,_,w,T,k,A,M,S)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m,v,y,x,b,_,w,T,k,A,M,S,E){var L=34*t,C=17*t;return this.int16[L+0]=e,this.int16[L+1]=r,this.int16[L+2]=n,this.int16[L+3]=i,this.int16[L+4]=a,this.int16[L+5]=o,this.int16[L+6]=s,this.int16[L+7]=l,this.uint16[L+8]=c,this.uint16[L+9]=u,this.uint16[L+10]=f,this.uint16[L+11]=h,this.uint16[L+12]=p,this.uint16[L+13]=d,this.uint16[L+14]=g,this.uint16[L+15]=m,this.uint16[L+16]=v,this.uint16[L+17]=y,this.uint16[L+18]=x,this.uint16[L+19]=b,this.uint16[L+20]=_,this.uint16[L+21]=w,this.uint16[L+22]=T,this.uint32[C+12]=k,this.float32[C+13]=A,this.float32[C+14]=M,this.float32[C+15]=S,this.float32[C+16]=E,t},e}(Pi);Xi.prototype.bytesPerElement=68,Nn(\"StructArrayLayout8i15ui1ul4f68\",Xi);var Zi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){var r=1*t;return this.float32[r+0]=e,t},e}(Pi);Zi.prototype.bytesPerElement=4,Nn(\"StructArrayLayout1f4\",Zi);var Ji=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=3*t;return this.int16[i+0]=e,this.int16[i+1]=r,this.int16[i+2]=n,t},e}(Pi);Ji.prototype.bytesPerElement=6,Nn(\"StructArrayLayout3i6\",Ji);var Ki=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=2*t,a=4*t;return this.uint32[i+0]=e,this.uint16[a+2]=r,this.uint16[a+3]=n,t},e}(Pi);Ki.prototype.bytesPerElement=8,Nn(\"StructArrayLayout1ul2ui8\",Ki);var Qi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var n=2*t;return this.uint16[n+0]=e,this.uint16[n+1]=r,t},e}(Pi);Qi.prototype.bytesPerElement=4,Nn(\"StructArrayLayout2ui4\",Qi);var $i=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){var r=1*t;return this.uint16[r+0]=e,t},e}(Pi);$i.prototype.bytesPerElement=2,Nn(\"StructArrayLayout1ui2\",$i);var ta=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var n=2*t;return this.float32[n+0]=e,this.float32[n+1]=r,t},e}(Pi);ta.prototype.bytesPerElement=8,Nn(\"StructArrayLayout2f8\",ta);var ea=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)},e.prototype.emplace=function(t,e,r,n,i){var a=4*t;return this.float32[a+0]=e,this.float32[a+1]=r,this.float32[a+2]=n,this.float32[a+3]=i,t},e}(Pi);ea.prototype.bytesPerElement=16,Nn(\"StructArrayLayout4f16\",ea);var ra=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={anchorPointX:{configurable:!0},anchorPointY:{configurable:!0},x1:{configurable:!0},y1:{configurable:!0},x2:{configurable:!0},y2:{configurable:!0},featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0},anchorPoint:{configurable:!0}};return r.anchorPointX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorPointY.get=function(){return this._structArray.int16[this._pos2+1]},r.x1.get=function(){return this._structArray.int16[this._pos2+2]},r.y1.get=function(){return this._structArray.int16[this._pos2+3]},r.x2.get=function(){return this._structArray.int16[this._pos2+4]},r.y2.get=function(){return this._structArray.int16[this._pos2+5]},r.featureIndex.get=function(){return this._structArray.uint32[this._pos4+3]},r.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+8]},r.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+9]},r.anchorPoint.get=function(){return new i(this.anchorPointX,this.anchorPointY)},Object.defineProperties(e.prototype,r),e}(Ci);ra.prototype.size=20;var na=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new ra(this,t)},e}(Vi);Nn(\"CollisionBoxArray\",na);var ia=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={anchorX:{configurable:!0},anchorY:{configurable:!0},glyphStartIndex:{configurable:!0},numGlyphs:{configurable:!0},vertexStartIndex:{configurable:!0},lineStartIndex:{configurable:!0},lineLength:{configurable:!0},segment:{configurable:!0},lowerSize:{configurable:!0},upperSize:{configurable:!0},lineOffsetX:{configurable:!0},lineOffsetY:{configurable:!0},writingMode:{configurable:!0},placedOrientation:{configurable:!0},hidden:{configurable:!0},crossTileID:{configurable:!0},associatedIconIndex:{configurable:!0}};return r.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},r.glyphStartIndex.get=function(){return this._structArray.uint16[this._pos2+2]},r.numGlyphs.get=function(){return this._structArray.uint16[this._pos2+3]},r.vertexStartIndex.get=function(){return this._structArray.uint32[this._pos4+2]},r.lineStartIndex.get=function(){return this._structArray.uint32[this._pos4+3]},r.lineLength.get=function(){return this._structArray.uint32[this._pos4+4]},r.segment.get=function(){return this._structArray.uint16[this._pos2+10]},r.lowerSize.get=function(){return this._structArray.uint16[this._pos2+11]},r.upperSize.get=function(){return this._structArray.uint16[this._pos2+12]},r.lineOffsetX.get=function(){return this._structArray.float32[this._pos4+7]},r.lineOffsetY.get=function(){return this._structArray.float32[this._pos4+8]},r.writingMode.get=function(){return this._structArray.uint8[this._pos1+36]},r.placedOrientation.get=function(){return this._structArray.uint8[this._pos1+37]},r.placedOrientation.set=function(t){this._structArray.uint8[this._pos1+37]=t},r.hidden.get=function(){return this._structArray.uint8[this._pos1+38]},r.hidden.set=function(t){this._structArray.uint8[this._pos1+38]=t},r.crossTileID.get=function(){return this._structArray.uint32[this._pos4+10]},r.crossTileID.set=function(t){this._structArray.uint32[this._pos4+10]=t},r.associatedIconIndex.get=function(){return this._structArray.int16[this._pos2+22]},Object.defineProperties(e.prototype,r),e}(Ci);ia.prototype.size=48;var aa=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new ia(this,t)},e}(Wi);Nn(\"PlacedSymbolArray\",aa);var oa=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={anchorX:{configurable:!0},anchorY:{configurable:!0},rightJustifiedTextSymbolIndex:{configurable:!0},centerJustifiedTextSymbolIndex:{configurable:!0},leftJustifiedTextSymbolIndex:{configurable:!0},verticalPlacedTextSymbolIndex:{configurable:!0},placedIconSymbolIndex:{configurable:!0},verticalPlacedIconSymbolIndex:{configurable:!0},key:{configurable:!0},textBoxStartIndex:{configurable:!0},textBoxEndIndex:{configurable:!0},verticalTextBoxStartIndex:{configurable:!0},verticalTextBoxEndIndex:{configurable:!0},iconBoxStartIndex:{configurable:!0},iconBoxEndIndex:{configurable:!0},verticalIconBoxStartIndex:{configurable:!0},verticalIconBoxEndIndex:{configurable:!0},featureIndex:{configurable:!0},numHorizontalGlyphVertices:{configurable:!0},numVerticalGlyphVertices:{configurable:!0},numIconVertices:{configurable:!0},numVerticalIconVertices:{configurable:!0},useRuntimeCollisionCircles:{configurable:!0},crossTileID:{configurable:!0},textBoxScale:{configurable:!0},textOffset0:{configurable:!0},textOffset1:{configurable:!0},collisionCircleDiameter:{configurable:!0}};return r.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},r.rightJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+2]},r.centerJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+3]},r.leftJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+4]},r.verticalPlacedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+5]},r.placedIconSymbolIndex.get=function(){return this._structArray.int16[this._pos2+6]},r.verticalPlacedIconSymbolIndex.get=function(){return this._structArray.int16[this._pos2+7]},r.key.get=function(){return this._structArray.uint16[this._pos2+8]},r.textBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+9]},r.textBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+10]},r.verticalTextBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+11]},r.verticalTextBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+12]},r.iconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+13]},r.iconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+14]},r.verticalIconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+15]},r.verticalIconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+16]},r.featureIndex.get=function(){return this._structArray.uint16[this._pos2+17]},r.numHorizontalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+18]},r.numVerticalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+19]},r.numIconVertices.get=function(){return this._structArray.uint16[this._pos2+20]},r.numVerticalIconVertices.get=function(){return this._structArray.uint16[this._pos2+21]},r.useRuntimeCollisionCircles.get=function(){return this._structArray.uint16[this._pos2+22]},r.crossTileID.get=function(){return this._structArray.uint32[this._pos4+12]},r.crossTileID.set=function(t){this._structArray.uint32[this._pos4+12]=t},r.textBoxScale.get=function(){return this._structArray.float32[this._pos4+13]},r.textOffset0.get=function(){return this._structArray.float32[this._pos4+14]},r.textOffset1.get=function(){return this._structArray.float32[this._pos4+15]},r.collisionCircleDiameter.get=function(){return this._structArray.float32[this._pos4+16]},Object.defineProperties(e.prototype,r),e}(Ci);oa.prototype.size=68;var sa=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new oa(this,t)},e}(Xi);Nn(\"SymbolInstanceArray\",sa);var la=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getoffsetX=function(t){return this.float32[1*t+0]},e}(Zi);Nn(\"GlyphOffsetArray\",la);var ca=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getx=function(t){return this.int16[3*t+0]},e.prototype.gety=function(t){return this.int16[3*t+1]},e.prototype.gettileUnitDistanceFromAnchor=function(t){return this.int16[3*t+2]},e}(Ji);Nn(\"SymbolLineVertexArray\",ca);var ua=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0}};return r.featureIndex.get=function(){return this._structArray.uint32[this._pos4+0]},r.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+2]},r.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+3]},Object.defineProperties(e.prototype,r),e}(Ci);ua.prototype.size=8;var fa=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new ua(this,t)},e}(Ki);Nn(\"FeatureIndexArray\",fa);var ha=Ii([{name:\"a_pos\",components:2,type:\"Int16\"}],4).members,pa=function(t){void 0===t&&(t=[]),this.segments=t};function da(t,e){return 256*(t=l(Math.floor(t),0,255))+(e=l(Math.floor(e),0,255))}pa.prototype.prepareSegment=function(t,e,r,n){var i=this.segments[this.segments.length-1];return t>pa.MAX_VERTEX_ARRAY_LENGTH&&_(\"Max vertices per segment is \"+pa.MAX_VERTEX_ARRAY_LENGTH+\": bucket requested \"+t),(!i||i.vertexLength+t>pa.MAX_VERTEX_ARRAY_LENGTH||i.sortKey!==n)&&(i={vertexOffset:e.length,primitiveOffset:r.length,vertexLength:0,primitiveLength:0},void 0!==n&&(i.sortKey=n),this.segments.push(i)),i},pa.prototype.get=function(){return this.segments},pa.prototype.destroy=function(){for(var t=0,e=this.segments;t>>16)*o&65535)<<16)&4294967295)<<15|l>>>17))*s+(((l>>>16)*s&65535)<<16)&4294967295)<<13|i>>>19))+((5*(i>>>16)&65535)<<16)&4294967295))+((58964+(a>>>16)&65535)<<16);switch(l=0,r){case 3:l^=(255&t.charCodeAt(c+2))<<16;case 2:l^=(255&t.charCodeAt(c+1))<<8;case 1:i^=l=(65535&(l=(l=(65535&(l^=255&t.charCodeAt(c)))*o+(((l>>>16)*o&65535)<<16)&4294967295)<<15|l>>>17))*s+(((l>>>16)*s&65535)<<16)&4294967295}return i^=t.length,i=2246822507*(65535&(i^=i>>>16))+((2246822507*(i>>>16)&65535)<<16)&4294967295,i=3266489909*(65535&(i^=i>>>13))+((3266489909*(i>>>16)&65535)<<16)&4294967295,(i^=i>>>16)>>>0}})),va=e((function(t){t.exports=function(t,e){for(var r,n=t.length,i=e^n,a=0;n>=4;)r=1540483477*(65535&(r=255&t.charCodeAt(a)|(255&t.charCodeAt(++a))<<8|(255&t.charCodeAt(++a))<<16|(255&t.charCodeAt(++a))<<24))+((1540483477*(r>>>16)&65535)<<16),i=1540483477*(65535&i)+((1540483477*(i>>>16)&65535)<<16)^(r=1540483477*(65535&(r^=r>>>24))+((1540483477*(r>>>16)&65535)<<16)),n-=4,++a;switch(n){case 3:i^=(255&t.charCodeAt(a+2))<<16;case 2:i^=(255&t.charCodeAt(a+1))<<8;case 1:i=1540483477*(65535&(i^=255&t.charCodeAt(a)))+((1540483477*(i>>>16)&65535)<<16)}return i=1540483477*(65535&(i^=i>>>13))+((1540483477*(i>>>16)&65535)<<16),(i^=i>>>15)>>>0}})),ya=ma,xa=ma,ba=va;ya.murmur3=xa,ya.murmur2=ba;var _a=function(){this.ids=[],this.positions=[],this.indexed=!1};_a.prototype.add=function(t,e,r,n){this.ids.push(Ta(t)),this.positions.push(e,r,n)},_a.prototype.getPositions=function(t){for(var e=Ta(t),r=0,n=this.ids.length-1;r>1;this.ids[i]>=e?n=i:r=i+1}for(var a=[];this.ids[r]===e;){var o=this.positions[3*r],s=this.positions[3*r+1],l=this.positions[3*r+2];a.push({index:o,start:s,end:l}),r++}return a},_a.serialize=function(t,e){var r=new Float64Array(t.ids),n=new Uint32Array(t.positions);return function t(e,r,n,i){for(;n>1],o=n-1,s=i+1;;){do{o++}while(e[o]a);if(o>=s)break;ka(e,o,s),ka(r,3*o,3*s),ka(r,3*o+1,3*s+1),ka(r,3*o+2,3*s+2)}s-nGa.max||o.yGa.max)&&(_(\"Geometry exceeds allowed extent, reduce your vector tile buffer size\"),o.x=l(o.x,Ga.min,Ga.max),o.y=l(o.y,Ga.min,Ga.max))}return r}function Wa(t,e,r,n,i){t.emplaceBack(2*e+(n+1)/2,2*r+(i+1)/2)}var Xa=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((function(t){return t.id})),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new zi,this.indexArray=new Yi,this.segments=new pa,this.programConfigurations=new Ua(ha,t.layers,t.zoom),this.stateDependentLayerIds=this.layers.filter((function(t){return t.isStateDependent()})).map((function(t){return t.id}))};function Za(t,e){for(var r=0;r1){if($a(t,e))return!0;for(var n=0;n1?t.distSqr(r):t.distSqr(r.sub(e)._mult(i)._add(e))}function no(t,e){for(var r,n,i,a=!1,o=0;oe.y!=i.y>e.y&&e.x<(i.x-n.x)*(e.y-n.y)/(i.y-n.y)+n.x&&(a=!a);return a}function io(t,e){for(var r=!1,n=0,i=t.length-1;ne.y!=o.y>e.y&&e.x<(o.x-a.x)*(e.y-a.y)/(o.y-a.y)+a.x&&(r=!r)}return r}function ao(t,e,r){var n=r[0],i=r[2];if(t.xi.x&&e.x>i.x||t.yi.y&&e.y>i.y)return!1;var a=w(t,e,r[0]);return a!==w(t,e,r[1])||a!==w(t,e,r[2])||a!==w(t,e,r[3])}function oo(t,e,r){var n=e.paint.get(t).value;return\"constant\"===n.kind?n.value:r.programConfigurations.get(e.id).getMaxValue(t)}function so(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function lo(t,e,r,n,a){if(!e[0]&&!e[1])return t;var o=i.convert(e)._mult(a);\"viewport\"===r&&o._rotate(-n);for(var s=[],l=0;l=8192||u<0||u>=8192)){var f=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,t.sortKey),h=f.vertexLength;Wa(this.layoutVertexArray,c,u,-1,-1),Wa(this.layoutVertexArray,c,u,1,-1),Wa(this.layoutVertexArray,c,u,1,1),Wa(this.layoutVertexArray,c,u,-1,1),this.indexArray.emplaceBack(h,h+1,h+2),this.indexArray.emplaceBack(h,h+3,h+2),f.vertexLength+=4,f.primitiveLength+=2}}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,{},n)},Nn(\"CircleBucket\",Xa,{omit:[\"layers\"]});var co=new Si({\"circle-sort-key\":new Ti(Lt.layout_circle[\"circle-sort-key\"])}),uo={paint:new Si({\"circle-radius\":new Ti(Lt.paint_circle[\"circle-radius\"]),\"circle-color\":new Ti(Lt.paint_circle[\"circle-color\"]),\"circle-blur\":new Ti(Lt.paint_circle[\"circle-blur\"]),\"circle-opacity\":new Ti(Lt.paint_circle[\"circle-opacity\"]),\"circle-translate\":new wi(Lt.paint_circle[\"circle-translate\"]),\"circle-translate-anchor\":new wi(Lt.paint_circle[\"circle-translate-anchor\"]),\"circle-pitch-scale\":new wi(Lt.paint_circle[\"circle-pitch-scale\"]),\"circle-pitch-alignment\":new wi(Lt.paint_circle[\"circle-pitch-alignment\"]),\"circle-stroke-width\":new Ti(Lt.paint_circle[\"circle-stroke-width\"]),\"circle-stroke-color\":new Ti(Lt.paint_circle[\"circle-stroke-color\"]),\"circle-stroke-opacity\":new Ti(Lt.paint_circle[\"circle-stroke-opacity\"])}),layout:co},fo=\"undefined\"!=typeof Float32Array?Float32Array:Array;function ho(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function po(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3],s=e[4],l=e[5],c=e[6],u=e[7],f=e[8],h=e[9],p=e[10],d=e[11],g=e[12],m=e[13],v=e[14],y=e[15],x=r[0],b=r[1],_=r[2],w=r[3];return t[0]=x*n+b*s+_*f+w*g,t[1]=x*i+b*l+_*h+w*m,t[2]=x*a+b*c+_*p+w*v,t[3]=x*o+b*u+_*d+w*y,x=r[4],b=r[5],_=r[6],w=r[7],t[4]=x*n+b*s+_*f+w*g,t[5]=x*i+b*l+_*h+w*m,t[6]=x*a+b*c+_*p+w*v,t[7]=x*o+b*u+_*d+w*y,x=r[8],b=r[9],_=r[10],w=r[11],t[8]=x*n+b*s+_*f+w*g,t[9]=x*i+b*l+_*h+w*m,t[10]=x*a+b*c+_*p+w*v,t[11]=x*o+b*u+_*d+w*y,x=r[12],b=r[13],_=r[14],w=r[15],t[12]=x*n+b*s+_*f+w*g,t[13]=x*i+b*l+_*h+w*m,t[14]=x*a+b*c+_*p+w*v,t[15]=x*o+b*u+_*d+w*y,t}Math.hypot||(Math.hypot=function(){for(var t=arguments,e=0,r=arguments.length;r--;)e+=t[r]*t[r];return Math.sqrt(e)});var go=po;var mo,vo,yo=function(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t};mo=new fo(3),fo!=Float32Array&&(mo[0]=0,mo[1]=0,mo[2]=0),vo=mo;function xo(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3];return t[0]=r[0]*n+r[4]*i+r[8]*a+r[12]*o,t[1]=r[1]*n+r[5]*i+r[9]*a+r[13]*o,t[2]=r[2]*n+r[6]*i+r[10]*a+r[14]*o,t[3]=r[3]*n+r[7]*i+r[11]*a+r[15]*o,t}!function(){var t=function(){var t=new fo(4);return fo!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[3]=0),t}()}();var bo=function(t){var e=t[0],r=t[1];return e*e+r*r},_o=(function(){var t=function(){var t=new fo(2);return fo!=Float32Array&&(t[0]=0,t[1]=0),t}()}(),function(t){function e(e){t.call(this,e,uo)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.createBucket=function(t){return new Xa(t)},e.prototype.queryRadius=function(t){var e=t;return oo(\"circle-radius\",this,e)+oo(\"circle-stroke-width\",this,e)+so(this.paint.get(\"circle-translate\"))},e.prototype.queryIntersectsFeature=function(t,e,r,n,i,a,o,s){for(var l=lo(t,this.paint.get(\"circle-translate\"),this.paint.get(\"circle-translate-anchor\"),a.angle,o),c=this.paint.get(\"circle-radius\").evaluate(e,r)+this.paint.get(\"circle-stroke-width\").evaluate(e,r),u=\"map\"===this.paint.get(\"circle-pitch-alignment\"),f=u?l:function(t,e){return t.map((function(t){return wo(t,e)}))}(l,s),h=u?c*o:c,p=0,d=n;pt.width||i.height>t.height||r.x>t.width-i.width||r.y>t.height-i.height)throw new RangeError(\"out of range source coordinates for image copy\");if(i.width>e.width||i.height>e.height||n.x>e.width-i.width||n.y>e.height-i.height)throw new RangeError(\"out of range destination coordinates for image copy\");for(var o=t.data,s=e.data,l=0;l80*r){n=a=t[0],i=o=t[1];for(var d=r;da&&(a=s),l>o&&(o=l);c=0!==(c=Math.max(a-n,o-i))?1/c:0}return jo(h,p,r,n,i,c),p}function Bo(t,e,r,n,i){var a,o;if(i===ls(t,e,r,n)>0)for(a=e;a=e;a-=n)o=as(a,t[a],t[a+1],o);return o&&$o(o,o.next)&&(os(o),o=o.next),o}function No(t,e){if(!t)return t;e||(e=t);var r,n=t;do{if(r=!1,n.steiner||!$o(n,n.next)&&0!==Qo(n.prev,n,n.next))n=n.next;else{if(os(n),(n=e=n.prev)===n.next)break;r=!0}}while(r||n!==e);return e}function jo(t,e,r,n,i,a,o){if(t){!o&&a&&function(t,e,r,n){var i=t;do{null===i.z&&(i.z=Xo(i.x,i.y,e,r,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next}while(i!==t);i.prevZ.nextZ=null,i.prevZ=null,function(t){var e,r,n,i,a,o,s,l,c=1;do{for(r=t,t=null,a=null,o=0;r;){for(o++,n=r,s=0,e=0;e0||l>0&&n;)0!==s&&(0===l||!n||r.z<=n.z)?(i=r,r=r.nextZ,s--):(i=n,n=n.nextZ,l--),a?a.nextZ=i:t=i,i.prevZ=a,a=i;r=n}a.nextZ=null,c*=2}while(o>1)}(i)}(t,n,i,a);for(var s,l,c=t;t.prev!==t.next;)if(s=t.prev,l=t.next,a?Vo(t,n,i,a):Uo(t))e.push(s.i/r),e.push(t.i/r),e.push(l.i/r),os(t),t=l.next,c=l.next;else if((t=l)===c){o?1===o?jo(t=Ho(No(t),e,r),e,r,n,i,a,2):2===o&&qo(t,e,r,n,i,a):jo(No(t),e,r,n,i,a,1);break}}}function Uo(t){var e=t.prev,r=t,n=t.next;if(Qo(e,r,n)>=0)return!1;for(var i=t.next.next;i!==t.prev;){if(Jo(e.x,e.y,r.x,r.y,n.x,n.y,i.x,i.y)&&Qo(i.prev,i,i.next)>=0)return!1;i=i.next}return!0}function Vo(t,e,r,n){var i=t.prev,a=t,o=t.next;if(Qo(i,a,o)>=0)return!1;for(var s=i.xa.x?i.x>o.x?i.x:o.x:a.x>o.x?a.x:o.x,u=i.y>a.y?i.y>o.y?i.y:o.y:a.y>o.y?a.y:o.y,f=Xo(s,l,e,r,n),h=Xo(c,u,e,r,n),p=t.prevZ,d=t.nextZ;p&&p.z>=f&&d&&d.z<=h;){if(p!==t.prev&&p!==t.next&&Jo(i.x,i.y,a.x,a.y,o.x,o.y,p.x,p.y)&&Qo(p.prev,p,p.next)>=0)return!1;if(p=p.prevZ,d!==t.prev&&d!==t.next&&Jo(i.x,i.y,a.x,a.y,o.x,o.y,d.x,d.y)&&Qo(d.prev,d,d.next)>=0)return!1;d=d.nextZ}for(;p&&p.z>=f;){if(p!==t.prev&&p!==t.next&&Jo(i.x,i.y,a.x,a.y,o.x,o.y,p.x,p.y)&&Qo(p.prev,p,p.next)>=0)return!1;p=p.prevZ}for(;d&&d.z<=h;){if(d!==t.prev&&d!==t.next&&Jo(i.x,i.y,a.x,a.y,o.x,o.y,d.x,d.y)&&Qo(d.prev,d,d.next)>=0)return!1;d=d.nextZ}return!0}function Ho(t,e,r){var n=t;do{var i=n.prev,a=n.next.next;!$o(i,a)&&ts(i,n,n.next,a)&&ns(i,a)&&ns(a,i)&&(e.push(i.i/r),e.push(n.i/r),e.push(a.i/r),os(n),os(n.next),n=t=a),n=n.next}while(n!==t);return No(n)}function qo(t,e,r,n,i,a){var o=t;do{for(var s=o.next.next;s!==o.prev;){if(o.i!==s.i&&Ko(o,s)){var l=is(o,s);return o=No(o,o.next),l=No(l,l.next),jo(o,e,r,n,i,a),void jo(l,e,r,n,i,a)}s=s.next}o=o.next}while(o!==t)}function Go(t,e){return t.x-e.x}function Yo(t,e){if(e=function(t,e){var r,n=e,i=t.x,a=t.y,o=-1/0;do{if(a<=n.y&&a>=n.next.y&&n.next.y!==n.y){var s=n.x+(a-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(s<=i&&s>o){if(o=s,s===i){if(a===n.y)return n;if(a===n.next.y)return n.next}r=n.x=n.x&&n.x>=u&&i!==n.x&&Jo(ar.x||n.x===r.x&&Wo(r,n)))&&(r=n,h=l)),n=n.next}while(n!==c);return r}(t,e)){var r=is(e,t);No(e,e.next),No(r,r.next)}}function Wo(t,e){return Qo(t.prev,t,e.prev)<0&&Qo(e.next,t,t.next)<0}function Xo(t,e,r,n,i){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-r)*i)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-n)*i)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function Zo(t){var e=t,r=t;do{(e.x=0&&(t-o)*(n-s)-(r-o)*(e-s)>=0&&(r-o)*(a-s)-(i-o)*(n-s)>=0}function Ko(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){var r=t;do{if(r.i!==t.i&&r.next.i!==t.i&&r.i!==e.i&&r.next.i!==e.i&&ts(r,r.next,t,e))return!0;r=r.next}while(r!==t);return!1}(t,e)&&(ns(t,e)&&ns(e,t)&&function(t,e){var r=t,n=!1,i=(t.x+e.x)/2,a=(t.y+e.y)/2;do{r.y>a!=r.next.y>a&&r.next.y!==r.y&&i<(r.next.x-r.x)*(a-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next}while(r!==t);return n}(t,e)&&(Qo(t.prev,t,e.prev)||Qo(t,e.prev,e))||$o(t,e)&&Qo(t.prev,t,t.next)>0&&Qo(e.prev,e,e.next)>0)}function Qo(t,e,r){return(e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y)}function $o(t,e){return t.x===e.x&&t.y===e.y}function ts(t,e,r,n){var i=rs(Qo(t,e,r)),a=rs(Qo(t,e,n)),o=rs(Qo(r,n,t)),s=rs(Qo(r,n,e));return i!==a&&o!==s||(!(0!==i||!es(t,r,e))||(!(0!==a||!es(t,n,e))||(!(0!==o||!es(r,t,n))||!(0!==s||!es(r,e,n)))))}function es(t,e,r){return e.x<=Math.max(t.x,r.x)&&e.x>=Math.min(t.x,r.x)&&e.y<=Math.max(t.y,r.y)&&e.y>=Math.min(t.y,r.y)}function rs(t){return t>0?1:t<0?-1:0}function ns(t,e){return Qo(t.prev,t,t.next)<0?Qo(t,e,t.next)>=0&&Qo(t,t.prev,e)>=0:Qo(t,e,t.prev)<0||Qo(t,t.next,e)<0}function is(t,e){var r=new ss(t.i,t.x,t.y),n=new ss(e.i,e.x,e.y),i=t.next,a=e.prev;return t.next=e,e.prev=t,r.next=i,i.prev=r,n.next=r,r.prev=n,a.next=n,n.prev=a,n}function as(t,e,r,n){var i=new ss(t,e,r);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function os(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function ss(t,e,r){this.i=t,this.x=e,this.y=r,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function ls(t,e,r,n){for(var i=0,a=e,o=r-n;an;){if(i-n>600){var o=i-n+1,s=r-n+1,l=Math.log(o),c=.5*Math.exp(2*l/3),u=.5*Math.sqrt(l*c*(o-c)/o)*(s-o/2<0?-1:1),f=Math.max(n,Math.floor(r-s*c/o+u)),h=Math.min(i,Math.floor(r+(o-s)*c/o+u));t(e,r,f,h,a)}var p=e[r],d=n,g=i;for(us(e,n,r),a(e[i],p)>0&&us(e,n,i);d0;)g--}0===a(e[n],p)?us(e,n,g):(g++,us(e,g,i)),g<=r&&(n=g+1),r<=g&&(i=g-1)}}(t,e,r||0,n||t.length-1,i||fs)}function us(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function fs(t,e){return te?1:0}function hs(t,e){var r=t.length;if(r<=1)return[t];for(var n,i,a=[],o=0;o1)for(var l=0;l0&&(n+=t[i-1].length,r.holes.push(n))}return r},Do.default=Ro;var ms=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((function(t){return t.id})),this.index=t.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new zi,this.indexArray=new Yi,this.indexArray2=new Qi,this.programConfigurations=new Ua(zo,t.layers,t.zoom),this.segments=new pa,this.segments2=new pa,this.stateDependentLayerIds=this.layers.filter((function(t){return t.isStateDependent()})).map((function(t){return t.id}))};ms.prototype.populate=function(t,e,r){this.hasPattern=ds(\"fill\",this.layers,e);for(var n=this.layers[0].layout.get(\"fill-sort-key\"),i=[],a=0,o=t;a>3}if(a--,1===n||2===n)o+=t.readSVarint(),s+=t.readSVarint(),1===n&&(e&&l.push(e),e=[]),e.push(new i(o,s));else{if(7!==n)throw new Error(\"unknown command \"+n);e&&e.push(e[0].clone())}}return e&&l.push(e),l},ws.prototype.bbox=function(){var t=this._pbf;t.pos=this._geometry;for(var e=t.readVarint()+t.pos,r=1,n=0,i=0,a=0,o=1/0,s=-1/0,l=1/0,c=-1/0;t.pos>3}if(n--,1===r||2===r)(i+=t.readSVarint())s&&(s=i),(a+=t.readSVarint())c&&(c=a);else if(7!==r)throw new Error(\"unknown command \"+r)}return[o,l,s,c]},ws.prototype.toGeoJSON=function(t,e,r){var n,i,a=this.extent*Math.pow(2,r),o=this.extent*t,s=this.extent*e,l=this.loadGeometry(),c=ws.types[this.type];function u(t){for(var e=0;e>3;e=1===n?t.readString():2===n?t.readFloat():3===n?t.readDouble():4===n?t.readVarint64():5===n?t.readVarint():6===n?t.readSVarint():7===n?t.readBoolean():null}return e}(r))}function Es(t,e,r){if(3===t){var n=new As(r,r.readVarint()+r.pos);n.length&&(e[n.name]=n)}}Ms.prototype.feature=function(t){if(t<0||t>=this._features.length)throw new Error(\"feature index out of bounds\");this._pbf.pos=this._features[t];var e=this._pbf.readVarint()+this._pbf.pos;return new _s(this._pbf,e,this.extent,this._keys,this._values)};var Ls={VectorTile:function(t,e){this.layers=t.readFields(Es,{},e)},VectorTileFeature:_s,VectorTileLayer:As},Cs=Ls.VectorTileFeature.types,Ps=Math.pow(2,13);function Is(t,e,r,n,i,a,o,s){t.emplaceBack(e,r,2*Math.floor(n*Ps)+o,i*Ps*2,a*Ps*2,Math.round(s))}var Os=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((function(t){return t.id})),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new Ri,this.indexArray=new Yi,this.programConfigurations=new Ua(bs,t.layers,t.zoom),this.segments=new pa,this.stateDependentLayerIds=this.layers.filter((function(t){return t.isStateDependent()})).map((function(t){return t.id}))};function zs(t,e){return t.x===e.x&&(t.x<0||t.x>8192)||t.y===e.y&&(t.y<0||t.y>8192)}function Ds(t){return t.every((function(t){return t.x<0}))||t.every((function(t){return t.x>8192}))||t.every((function(t){return t.y<0}))||t.every((function(t){return t.y>8192}))}Os.prototype.populate=function(t,e,r){this.features=[],this.hasPattern=ds(\"fill-extrusion\",this.layers,e);for(var n=0,i=t;n=1){var y=d[m-1];if(!zs(v,y)){f.vertexLength+4>pa.MAX_VERTEX_ARRAY_LENGTH&&(f=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));var x=v.sub(y)._perp()._unit(),b=y.dist(v);g+b>32768&&(g=0),Is(this.layoutVertexArray,v.x,v.y,x.x,x.y,0,0,g),Is(this.layoutVertexArray,v.x,v.y,x.x,x.y,0,1,g),g+=b,Is(this.layoutVertexArray,y.x,y.y,x.x,x.y,0,0,g),Is(this.layoutVertexArray,y.x,y.y,x.x,x.y,0,1,g);var _=f.vertexLength;this.indexArray.emplaceBack(_,_+2,_+1),this.indexArray.emplaceBack(_+1,_+2,_+3),f.vertexLength+=4,f.primitiveLength+=2}}}}if(f.vertexLength+l>pa.MAX_VERTEX_ARRAY_LENGTH&&(f=this.segments.prepareSegment(l,this.layoutVertexArray,this.indexArray)),\"Polygon\"===Cs[t.type]){for(var w=[],T=[],k=f.vertexLength,A=0,M=s;A=2&&t[l-1].equals(t[l-2]);)l--;for(var c=0;c0;if(T&&v>c){var A=u.dist(p);if(A>2*f){var M=u.sub(u.sub(p)._mult(f/A)._round());this.updateDistance(p,M),this.addCurrentVertex(M,g,0,0,h),p=M}}var S=p&&d,E=S?r:s?\"butt\":n;if(S&&\"round\"===E&&(_i&&(E=\"bevel\"),\"bevel\"===E&&(_>2&&(E=\"flipbevel\"),_100)y=m.mult(-1);else{var L=_*g.add(m).mag()/g.sub(m).mag();y._perp()._mult(L*(k?-1:1))}this.addCurrentVertex(u,y,0,0,h),this.addCurrentVertex(u,y.mult(-1),0,0,h)}else if(\"bevel\"===E||\"fakeround\"===E){var C=-Math.sqrt(_*_-1),P=k?C:0,I=k?0:C;if(p&&this.addCurrentVertex(u,g,P,I,h),\"fakeround\"===E)for(var O=Math.round(180*w/Math.PI/20),z=1;z2*f){var j=u.add(d.sub(u)._mult(f/N)._round());this.updateDistance(u,j),this.addCurrentVertex(j,m,0,0,h),u=j}}}}},qs.prototype.addCurrentVertex=function(t,e,r,n,i,a){void 0===a&&(a=!1);var o=e.x+e.y*r,s=e.y-e.x*r,l=-e.x+e.y*n,c=-e.y-e.x*n;this.addHalfVertex(t,o,s,a,!1,r,i),this.addHalfVertex(t,l,c,a,!0,-n,i),this.distance>Hs/2&&0===this.totalDistance&&(this.distance=0,this.addCurrentVertex(t,e,r,n,i,a))},qs.prototype.addHalfVertex=function(t,e,r,n,i,a,o){var s=t.x,l=t.y,c=.5*this.scaledDistance;this.layoutVertexArray.emplaceBack((s<<1)+(n?1:0),(l<<1)+(i?1:0),Math.round(63*e)+128,Math.round(63*r)+128,1+(0===a?0:a<0?-1:1)|(63&c)<<2,c>>6);var u=o.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,u),o.primitiveLength++),i?this.e2=u:this.e1=u},qs.prototype.updateScaledDistance=function(){this.scaledDistance=this.totalDistance>0?(this.clipStart+(this.clipEnd-this.clipStart)*this.distance/this.totalDistance)*(Hs-1):this.distance},qs.prototype.updateDistance=function(t,e){this.distance+=t.dist(e),this.updateScaledDistance()},Nn(\"LineBucket\",qs,{omit:[\"layers\",\"patternFeatures\"]});var Gs=new Si({\"line-cap\":new wi(Lt.layout_line[\"line-cap\"]),\"line-join\":new Ti(Lt.layout_line[\"line-join\"]),\"line-miter-limit\":new wi(Lt.layout_line[\"line-miter-limit\"]),\"line-round-limit\":new wi(Lt.layout_line[\"line-round-limit\"]),\"line-sort-key\":new Ti(Lt.layout_line[\"line-sort-key\"])}),Ys={paint:new Si({\"line-opacity\":new Ti(Lt.paint_line[\"line-opacity\"]),\"line-color\":new Ti(Lt.paint_line[\"line-color\"]),\"line-translate\":new wi(Lt.paint_line[\"line-translate\"]),\"line-translate-anchor\":new wi(Lt.paint_line[\"line-translate-anchor\"]),\"line-width\":new Ti(Lt.paint_line[\"line-width\"]),\"line-gap-width\":new Ti(Lt.paint_line[\"line-gap-width\"]),\"line-offset\":new Ti(Lt.paint_line[\"line-offset\"]),\"line-blur\":new Ti(Lt.paint_line[\"line-blur\"]),\"line-dasharray\":new Ai(Lt.paint_line[\"line-dasharray\"]),\"line-pattern\":new ki(Lt.paint_line[\"line-pattern\"]),\"line-gradient\":new Mi(Lt.paint_line[\"line-gradient\"])}),layout:Gs},Ws=new(function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.possiblyEvaluate=function(e,r){return r=new pi(Math.floor(r.zoom),{now:r.now,fadeDuration:r.fadeDuration,zoomHistory:r.zoomHistory,transition:r.transition}),t.prototype.possiblyEvaluate.call(this,e,r)},e.prototype.evaluate=function(e,r,n,i){return r=u({},r,{zoom:Math.floor(r.zoom)}),t.prototype.evaluate.call(this,e,r,n,i)},e}(Ti))(Ys.paint.properties[\"line-width\"].specification);Ws.useIntegerZoom=!0;var Xs=function(t){function e(e){t.call(this,e,Ys)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._handleSpecialPaintPropertyUpdate=function(t){\"line-gradient\"===t&&this._updateGradient()},e.prototype._updateGradient=function(){var t=this._transitionablePaint._values[\"line-gradient\"].value.expression;this.gradient=Co(t,\"lineProgress\"),this.gradientTexture=null},e.prototype.recalculate=function(e,r){t.prototype.recalculate.call(this,e,r),this.paint._values[\"line-floorwidth\"]=Ws.possiblyEvaluate(this._transitioningPaint._values[\"line-width\"].value,e)},e.prototype.createBucket=function(t){return new qs(t)},e.prototype.queryRadius=function(t){var e=t,r=Zs(oo(\"line-width\",this,e),oo(\"line-gap-width\",this,e)),n=oo(\"line-offset\",this,e);return r/2+Math.abs(n)+so(this.paint.get(\"line-translate\"))},e.prototype.queryIntersectsFeature=function(t,e,r,n,a,o,s){var l=lo(t,this.paint.get(\"line-translate\"),this.paint.get(\"line-translate-anchor\"),o.angle,s),c=s/2*Zs(this.paint.get(\"line-width\").evaluate(e,r),this.paint.get(\"line-gap-width\").evaluate(e,r)),u=this.paint.get(\"line-offset\").evaluate(e,r);return u&&(n=function(t,e){for(var r=[],n=new i(0,0),a=0;a=3)for(var a=0;a0?e+2*t:t}var Js=Ii([{name:\"a_pos_offset\",components:4,type:\"Int16\"},{name:\"a_data\",components:4,type:\"Uint16\"},{name:\"a_pixeloffset\",components:4,type:\"Int16\"}],4),Ks=Ii([{name:\"a_projected_pos\",components:3,type:\"Float32\"}],4),Qs=(Ii([{name:\"a_fade_opacity\",components:1,type:\"Uint32\"}],4),Ii([{name:\"a_placed\",components:2,type:\"Uint8\"},{name:\"a_shift\",components:2,type:\"Float32\"}])),$s=(Ii([{type:\"Int16\",name:\"anchorPointX\"},{type:\"Int16\",name:\"anchorPointY\"},{type:\"Int16\",name:\"x1\"},{type:\"Int16\",name:\"y1\"},{type:\"Int16\",name:\"x2\"},{type:\"Int16\",name:\"y2\"},{type:\"Uint32\",name:\"featureIndex\"},{type:\"Uint16\",name:\"sourceLayerIndex\"},{type:\"Uint16\",name:\"bucketIndex\"}]),Ii([{name:\"a_pos\",components:2,type:\"Int16\"},{name:\"a_anchor_pos\",components:2,type:\"Int16\"},{name:\"a_extrude\",components:2,type:\"Int16\"}],4)),tl=Ii([{name:\"a_pos\",components:2,type:\"Float32\"},{name:\"a_radius\",components:1,type:\"Float32\"},{name:\"a_flags\",components:2,type:\"Int16\"}],4);Ii([{name:\"triangle\",components:3,type:\"Uint16\"}]),Ii([{type:\"Int16\",name:\"anchorX\"},{type:\"Int16\",name:\"anchorY\"},{type:\"Uint16\",name:\"glyphStartIndex\"},{type:\"Uint16\",name:\"numGlyphs\"},{type:\"Uint32\",name:\"vertexStartIndex\"},{type:\"Uint32\",name:\"lineStartIndex\"},{type:\"Uint32\",name:\"lineLength\"},{type:\"Uint16\",name:\"segment\"},{type:\"Uint16\",name:\"lowerSize\"},{type:\"Uint16\",name:\"upperSize\"},{type:\"Float32\",name:\"lineOffsetX\"},{type:\"Float32\",name:\"lineOffsetY\"},{type:\"Uint8\",name:\"writingMode\"},{type:\"Uint8\",name:\"placedOrientation\"},{type:\"Uint8\",name:\"hidden\"},{type:\"Uint32\",name:\"crossTileID\"},{type:\"Int16\",name:\"associatedIconIndex\"}]),Ii([{type:\"Int16\",name:\"anchorX\"},{type:\"Int16\",name:\"anchorY\"},{type:\"Int16\",name:\"rightJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"centerJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"leftJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"verticalPlacedTextSymbolIndex\"},{type:\"Int16\",name:\"placedIconSymbolIndex\"},{type:\"Int16\",name:\"verticalPlacedIconSymbolIndex\"},{type:\"Uint16\",name:\"key\"},{type:\"Uint16\",name:\"textBoxStartIndex\"},{type:\"Uint16\",name:\"textBoxEndIndex\"},{type:\"Uint16\",name:\"verticalTextBoxStartIndex\"},{type:\"Uint16\",name:\"verticalTextBoxEndIndex\"},{type:\"Uint16\",name:\"iconBoxStartIndex\"},{type:\"Uint16\",name:\"iconBoxEndIndex\"},{type:\"Uint16\",name:\"verticalIconBoxStartIndex\"},{type:\"Uint16\",name:\"verticalIconBoxEndIndex\"},{type:\"Uint16\",name:\"featureIndex\"},{type:\"Uint16\",name:\"numHorizontalGlyphVertices\"},{type:\"Uint16\",name:\"numVerticalGlyphVertices\"},{type:\"Uint16\",name:\"numIconVertices\"},{type:\"Uint16\",name:\"numVerticalIconVertices\"},{type:\"Uint16\",name:\"useRuntimeCollisionCircles\"},{type:\"Uint32\",name:\"crossTileID\"},{type:\"Float32\",name:\"textBoxScale\"},{type:\"Float32\",components:2,name:\"textOffset\"},{type:\"Float32\",name:\"collisionCircleDiameter\"}]),Ii([{type:\"Float32\",name:\"offsetX\"}]),Ii([{type:\"Int16\",name:\"x\"},{type:\"Int16\",name:\"y\"},{type:\"Int16\",name:\"tileUnitDistanceFromAnchor\"}]);function el(t,e,r){return t.sections.forEach((function(t){t.text=function(t,e,r){var n=e.layout.get(\"text-transform\").evaluate(r,{});return\"uppercase\"===n?t=t.toLocaleUpperCase():\"lowercase\"===n&&(t=t.toLocaleLowerCase()),hi.applyArabicShaping&&(t=hi.applyArabicShaping(t)),t}(t.text,e,r)})),t}var rl={\"!\":\"\\ufe15\",\"#\":\"\\uff03\",$:\"\\uff04\",\"%\":\"\\uff05\",\"&\":\"\\uff06\",\"(\":\"\\ufe35\",\")\":\"\\ufe36\",\"*\":\"\\uff0a\",\"+\":\"\\uff0b\",\",\":\"\\ufe10\",\"-\":\"\\ufe32\",\".\":\"\\u30fb\",\"/\":\"\\uff0f\",\":\":\"\\ufe13\",\";\":\"\\ufe14\",\"<\":\"\\ufe3f\",\"=\":\"\\uff1d\",\">\":\"\\ufe40\",\"?\":\"\\ufe16\",\"@\":\"\\uff20\",\"[\":\"\\ufe47\",\"\\\\\":\"\\uff3c\",\"]\":\"\\ufe48\",\"^\":\"\\uff3e\",_:\"\\ufe33\",\"`\":\"\\uff40\",\"{\":\"\\ufe37\",\"|\":\"\\u2015\",\"}\":\"\\ufe38\",\"~\":\"\\uff5e\",\"\\xa2\":\"\\uffe0\",\"\\xa3\":\"\\uffe1\",\"\\xa5\":\"\\uffe5\",\"\\xa6\":\"\\uffe4\",\"\\xac\":\"\\uffe2\",\"\\xaf\":\"\\uffe3\",\"\\u2013\":\"\\ufe32\",\"\\u2014\":\"\\ufe31\",\"\\u2018\":\"\\ufe43\",\"\\u2019\":\"\\ufe44\",\"\\u201c\":\"\\ufe41\",\"\\u201d\":\"\\ufe42\",\"\\u2026\":\"\\ufe19\",\"\\u2027\":\"\\u30fb\",\"\\u20a9\":\"\\uffe6\",\"\\u3001\":\"\\ufe11\",\"\\u3002\":\"\\ufe12\",\"\\u3008\":\"\\ufe3f\",\"\\u3009\":\"\\ufe40\",\"\\u300a\":\"\\ufe3d\",\"\\u300b\":\"\\ufe3e\",\"\\u300c\":\"\\ufe41\",\"\\u300d\":\"\\ufe42\",\"\\u300e\":\"\\ufe43\",\"\\u300f\":\"\\ufe44\",\"\\u3010\":\"\\ufe3b\",\"\\u3011\":\"\\ufe3c\",\"\\u3014\":\"\\ufe39\",\"\\u3015\":\"\\ufe3a\",\"\\u3016\":\"\\ufe17\",\"\\u3017\":\"\\ufe18\",\"\\uff01\":\"\\ufe15\",\"\\uff08\":\"\\ufe35\",\"\\uff09\":\"\\ufe36\",\"\\uff0c\":\"\\ufe10\",\"\\uff0d\":\"\\ufe32\",\"\\uff0e\":\"\\u30fb\",\"\\uff1a\":\"\\ufe13\",\"\\uff1b\":\"\\ufe14\",\"\\uff1c\":\"\\ufe3f\",\"\\uff1e\":\"\\ufe40\",\"\\uff1f\":\"\\ufe16\",\"\\uff3b\":\"\\ufe47\",\"\\uff3d\":\"\\ufe48\",\"\\uff3f\":\"\\ufe33\",\"\\uff5b\":\"\\ufe37\",\"\\uff5c\":\"\\u2015\",\"\\uff5d\":\"\\ufe38\",\"\\uff5f\":\"\\ufe35\",\"\\uff60\":\"\\ufe36\",\"\\uff61\":\"\\ufe12\",\"\\uff62\":\"\\ufe41\",\"\\uff63\":\"\\ufe42\"};var nl=function(t,e,r,n,i){var a,o,s=8*i-n-1,l=(1<>1,u=-7,f=r?i-1:0,h=r?-1:1,p=t[e+f];for(f+=h,a=p&(1<<-u)-1,p>>=-u,u+=s;u>0;a=256*a+t[e+f],f+=h,u-=8);for(o=a&(1<<-u)-1,a>>=-u,u+=n;u>0;o=256*o+t[e+f],f+=h,u-=8);if(0===a)a=1-c;else{if(a===l)return o?NaN:1/0*(p?-1:1);o+=Math.pow(2,n),a-=c}return(p?-1:1)*o*Math.pow(2,a-n)},il=function(t,e,r,n,i,a){var o,s,l,c=8*a-i-1,u=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:a-1,d=n?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,o=u):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),(e+=o+f>=1?h/l:h*Math.pow(2,1-f))*l>=2&&(o++,l/=2),o+f>=u?(s=0,o=u):o+f>=1?(s=(e*l-1)*Math.pow(2,i),o+=f):(s=e*Math.pow(2,f-1)*Math.pow(2,i),o=0));i>=8;t[r+p]=255&s,p+=d,s/=256,i-=8);for(o=o<0;t[r+p]=255&o,p+=d,o/=256,c-=8);t[r+p-d]|=128*g},al=ol;function ol(t){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(t)?t:new Uint8Array(t||0),this.pos=0,this.type=0,this.length=this.buf.length}ol.Varint=0,ol.Fixed64=1,ol.Bytes=2,ol.Fixed32=5;var sl=\"undefined\"==typeof TextDecoder?null:new TextDecoder(\"utf8\");function ll(t){return t.type===ol.Bytes?t.readVarint()+t.pos:t.pos+1}function cl(t,e,r){return r?4294967296*e+(t>>>0):4294967296*(e>>>0)+(t>>>0)}function ul(t,e,r){var n=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.floor(Math.log(e)/(7*Math.LN2));r.realloc(n);for(var i=r.pos-1;i>=t;i--)r.buf[i+n]=r.buf[i]}function fl(t,e){for(var r=0;r>>8,t[r+2]=e>>>16,t[r+3]=e>>>24}function wl(t,e){return(t[e]|t[e+1]<<8|t[e+2]<<16)+(t[e+3]<<24)}ol.prototype={destroy:function(){this.buf=null},readFields:function(t,e,r){for(r=r||this.length;this.pos>3,a=this.pos;this.type=7&n,t(i,e,this),this.pos===a&&this.skip(n)}return e},readMessage:function(t,e){return this.readFields(t,e,this.readVarint()+this.pos)},readFixed32:function(){var t=bl(this.buf,this.pos);return this.pos+=4,t},readSFixed32:function(){var t=wl(this.buf,this.pos);return this.pos+=4,t},readFixed64:function(){var t=bl(this.buf,this.pos)+4294967296*bl(this.buf,this.pos+4);return this.pos+=8,t},readSFixed64:function(){var t=bl(this.buf,this.pos)+4294967296*wl(this.buf,this.pos+4);return this.pos+=8,t},readFloat:function(){var t=nl(this.buf,this.pos,!0,23,4);return this.pos+=4,t},readDouble:function(){var t=nl(this.buf,this.pos,!0,52,8);return this.pos+=8,t},readVarint:function(t){var e,r,n=this.buf;return e=127&(r=n[this.pos++]),r<128?e:(e|=(127&(r=n[this.pos++]))<<7,r<128?e:(e|=(127&(r=n[this.pos++]))<<14,r<128?e:(e|=(127&(r=n[this.pos++]))<<21,r<128?e:function(t,e,r){var n,i,a=r.buf;if(i=a[r.pos++],n=(112&i)>>4,i<128)return cl(t,n,e);if(i=a[r.pos++],n|=(127&i)<<3,i<128)return cl(t,n,e);if(i=a[r.pos++],n|=(127&i)<<10,i<128)return cl(t,n,e);if(i=a[r.pos++],n|=(127&i)<<17,i<128)return cl(t,n,e);if(i=a[r.pos++],n|=(127&i)<<24,i<128)return cl(t,n,e);if(i=a[r.pos++],n|=(1&i)<<31,i<128)return cl(t,n,e);throw new Error(\"Expected varint not more than 10 bytes\")}(e|=(15&(r=n[this.pos]))<<28,t,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var t=this.readVarint();return t%2==1?(t+1)/-2:t/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var t=this.readVarint()+this.pos,e=this.pos;return this.pos=t,t-e>=12&&sl?function(t,e,r){return sl.decode(t.subarray(e,r))}(this.buf,e,t):function(t,e,r){var n=\"\",i=e;for(;i239?4:l>223?3:l>191?2:1;if(i+u>r)break;1===u?l<128&&(c=l):2===u?128==(192&(a=t[i+1]))&&(c=(31&l)<<6|63&a)<=127&&(c=null):3===u?(a=t[i+1],o=t[i+2],128==(192&a)&&128==(192&o)&&((c=(15&l)<<12|(63&a)<<6|63&o)<=2047||c>=55296&&c<=57343)&&(c=null)):4===u&&(a=t[i+1],o=t[i+2],s=t[i+3],128==(192&a)&&128==(192&o)&&128==(192&s)&&((c=(15&l)<<18|(63&a)<<12|(63&o)<<6|63&s)<=65535||c>=1114112)&&(c=null)),null===c?(c=65533,u=1):c>65535&&(c-=65536,n+=String.fromCharCode(c>>>10&1023|55296),c=56320|1023&c),n+=String.fromCharCode(c),i+=u}return n}(this.buf,e,t)},readBytes:function(){var t=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,t);return this.pos=t,e},readPackedVarint:function(t,e){if(this.type!==ol.Bytes)return t.push(this.readVarint(e));var r=ll(this);for(t=t||[];this.pos127;);else if(e===ol.Bytes)this.pos=this.readVarint()+this.pos;else if(e===ol.Fixed32)this.pos+=4;else{if(e!==ol.Fixed64)throw new Error(\"Unimplemented type: \"+e);this.pos+=8}},writeTag:function(t,e){this.writeVarint(t<<3|e)},realloc:function(t){for(var e=this.length||16;e268435455||t<0?function(t,e){var r,n;t>=0?(r=t%4294967296|0,n=t/4294967296|0):(n=~(-t/4294967296),4294967295^(r=~(-t%4294967296))?r=r+1|0:(r=0,n=n+1|0));if(t>=0x10000000000000000||t<-0x10000000000000000)throw new Error(\"Given varint doesn't fit into 10 bytes\");e.realloc(10),function(t,e,r){r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos]=127&t}(r,0,e),function(t,e){var r=(7&t)<<4;if(e.buf[e.pos++]|=r|((t>>>=3)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;e.buf[e.pos++]=127&t}(n,e)}(t,this):(this.realloc(4),this.buf[this.pos++]=127&t|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=t>>>7&127))))},writeSVarint:function(t){this.writeVarint(t<0?2*-t-1:2*t)},writeBoolean:function(t){this.writeVarint(Boolean(t))},writeString:function(t){t=String(t),this.realloc(4*t.length),this.pos++;var e=this.pos;this.pos=function(t,e,r){for(var n,i,a=0;a55295&&n<57344){if(!i){n>56319||a+1===e.length?(t[r++]=239,t[r++]=191,t[r++]=189):i=n;continue}if(n<56320){t[r++]=239,t[r++]=191,t[r++]=189,i=n;continue}n=i-55296<<10|n-56320|65536,i=null}else i&&(t[r++]=239,t[r++]=191,t[r++]=189,i=null);n<128?t[r++]=n:(n<2048?t[r++]=n>>6|192:(n<65536?t[r++]=n>>12|224:(t[r++]=n>>18|240,t[r++]=n>>12&63|128),t[r++]=n>>6&63|128),t[r++]=63&n|128)}return r}(this.buf,t,this.pos);var r=this.pos-e;r>=128&&ul(e,r,this),this.pos=e-1,this.writeVarint(r),this.pos+=r},writeFloat:function(t){this.realloc(4),il(this.buf,t,this.pos,!0,23,4),this.pos+=4},writeDouble:function(t){this.realloc(8),il(this.buf,t,this.pos,!0,52,8),this.pos+=8},writeBytes:function(t){var e=t.length;this.writeVarint(e),this.realloc(e);for(var r=0;r=128&&ul(r,n,this),this.pos=r-1,this.writeVarint(n),this.pos+=n},writeMessage:function(t,e,r){this.writeTag(t,ol.Bytes),this.writeRawMessage(e,r)},writePackedVarint:function(t,e){e.length&&this.writeMessage(t,fl,e)},writePackedSVarint:function(t,e){e.length&&this.writeMessage(t,hl,e)},writePackedBoolean:function(t,e){e.length&&this.writeMessage(t,gl,e)},writePackedFloat:function(t,e){e.length&&this.writeMessage(t,pl,e)},writePackedDouble:function(t,e){e.length&&this.writeMessage(t,dl,e)},writePackedFixed32:function(t,e){e.length&&this.writeMessage(t,ml,e)},writePackedSFixed32:function(t,e){e.length&&this.writeMessage(t,vl,e)},writePackedFixed64:function(t,e){e.length&&this.writeMessage(t,yl,e)},writePackedSFixed64:function(t,e){e.length&&this.writeMessage(t,xl,e)},writeBytesField:function(t,e){this.writeTag(t,ol.Bytes),this.writeBytes(e)},writeFixed32Field:function(t,e){this.writeTag(t,ol.Fixed32),this.writeFixed32(e)},writeSFixed32Field:function(t,e){this.writeTag(t,ol.Fixed32),this.writeSFixed32(e)},writeFixed64Field:function(t,e){this.writeTag(t,ol.Fixed64),this.writeFixed64(e)},writeSFixed64Field:function(t,e){this.writeTag(t,ol.Fixed64),this.writeSFixed64(e)},writeVarintField:function(t,e){this.writeTag(t,ol.Varint),this.writeVarint(e)},writeSVarintField:function(t,e){this.writeTag(t,ol.Varint),this.writeSVarint(e)},writeStringField:function(t,e){this.writeTag(t,ol.Bytes),this.writeString(e)},writeFloatField:function(t,e){this.writeTag(t,ol.Fixed32),this.writeFloat(e)},writeDoubleField:function(t,e){this.writeTag(t,ol.Fixed64),this.writeDouble(e)},writeBooleanField:function(t,e){this.writeVarintField(t,Boolean(e))}};function Tl(t,e,r){1===t&&r.readMessage(kl,e)}function kl(t,e,r){if(3===t){var n=r.readMessage(Al,{}),i=n.id,a=n.bitmap,o=n.width,s=n.height,l=n.left,c=n.top,u=n.advance;e.push({id:i,bitmap:new So({width:o+6,height:s+6},a),metrics:{width:o,height:s,left:l,top:c,advance:u}})}}function Al(t,e,r){1===t?e.id=r.readVarint():2===t?e.bitmap=r.readBytes():3===t?e.width=r.readVarint():4===t?e.height=r.readVarint():5===t?e.left=r.readSVarint():6===t?e.top=r.readSVarint():7===t&&(e.advance=r.readVarint())}function Ml(t){for(var e=0,r=0,n=0,i=t;n=0;h--){var p=o[h];if(!(f.w>p.w||f.h>p.h)){if(f.x=p.x,f.y=p.y,l=Math.max(l,f.y+f.h),s=Math.max(s,f.x+f.w),f.w===p.w&&f.h===p.h){var d=o.pop();h0&&N>A&&(A=N)}else{var j=r[S.fontStack],U=j&&j[L];if(U&&U.rect)I=U.rect,P=U.metrics;else{var V=e[S.fontStack],H=V&&V[L];if(!H)continue;P=H.metrics}C=24*(_-S.scale)}D?(t.verticalizable=!0,k.push({glyph:L,imageName:O,x:h,y:p+C,vertical:D,scale:S.scale,fontStack:S.fontStack,sectionIndex:E,metrics:P,rect:I}),h+=z*S.scale+c):(k.push({glyph:L,imageName:O,x:h,y:p+C,vertical:D,scale:S.scale,fontStack:S.fontStack,sectionIndex:E,metrics:P,rect:I}),h+=P.advance*S.scale+c)}if(0!==k.length){var q=h-c;d=Math.max(q,d),Vl(k,0,k.length-1,m,A)}h=0;var G=a*_+A;T.lineOffset=Math.max(A,w),p+=G,g=Math.max(G,g),++v}else p+=a,++v}var Y;var W=p- -17,X=Ul(o),Z=X.horizontalAlign,J=X.verticalAlign;(function(t,e,r,n,i,a,o,s,l){var c=(e-r)*i,u=0;u=a!==o?-s*n- -17:(-n*l+.5)*o;for(var f=0,h=t;f=0&&n>=t&&zl[this.text.charCodeAt(n)];n--)r--;this.text=this.text.substring(t,r),this.sectionIndex=this.sectionIndex.slice(t,r)},Il.prototype.substring=function(t,e){var r=new Il;return r.text=this.text.substring(t,e),r.sectionIndex=this.sectionIndex.slice(t,e),r.sections=this.sections,r},Il.prototype.toString=function(){return this.text},Il.prototype.getMaxScale=function(){var t=this;return this.sectionIndex.reduce((function(e,r){return Math.max(e,t.sections[r].scale)}),0)},Il.prototype.addTextSection=function(t,e){this.text+=t.text,this.sections.push(Pl.forText(t.scale,t.fontStack||e));for(var r=this.sections.length-1,n=0;n=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)};var zl={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},Dl={};function Rl(t,e,r,n,i,a){if(e.imageName){var o=n[e.imageName];return o?o.displaySize[0]*e.scale*24/a+i:0}var s=r[e.fontStack],l=s&&s[t];return l?l.metrics.advance*e.scale+i:0}function Fl(t,e,r,n){var i=Math.pow(t-e,2);return n?t=0,f=0,h=0;h-r/2;){if(--o<0)return!1;s-=t[o].dist(a),a=t[o]}s+=t[o].dist(t[o+1]),o++;for(var l=[],c=0;sn;)c-=l.shift().angleDelta;if(c>i)return!1;o++,s+=f.dist(h)}return!0}function Jl(t){for(var e=0,r=0;rc){var d=(c-l)/p,g=qe(f.x,h.x,d),m=qe(f.y,h.y,d),v=new ql(g,m,h.angleTo(f),u);return v._round(),!o||Zl(t,v,s,o,e)?v:void 0}l+=p}}function tc(t,e,r,n,i,a,o,s,l){var c=Kl(n,a,o),u=Ql(n,i),f=u*o,h=0===t[0].x||t[0].x===l||0===t[0].y||t[0].y===l;return e-f=0&&_=0&&w=0&&p+u<=f){var T=new ql(_,w,x,g);T._round(),i&&!Zl(e,T,o,i,a)||d.push(T)}}h+=y}l||d.length||s||(d=t(e,h/2,n,i,a,o,s,!0,c));return d}(t,h?e/2*s%e:(u/2+2*a)*o*s%e,e,c,r,f,h,!1,l)}function ec(t,e,r,n,a){for(var o=[],s=0;s=n&&h.x>=n||(f.x>=n?f=new i(n,f.y+(h.y-f.y)*((n-f.x)/(h.x-f.x)))._round():h.x>=n&&(h=new i(n,f.y+(h.y-f.y)*((n-f.x)/(h.x-f.x)))._round()),f.y>=a&&h.y>=a||(f.y>=a?f=new i(f.x+(h.x-f.x)*((a-f.y)/(h.y-f.y)),a)._round():h.y>=a&&(h=new i(f.x+(h.x-f.x)*((a-f.y)/(h.y-f.y)),a)._round()),c&&f.equals(c[c.length-1])||(c=[f],o.push(c)),c.push(h)))))}return o}function rc(t,e,r,n){var a=[],o=t.image,s=o.pixelRatio,l=o.paddedRect.w-2,c=o.paddedRect.h-2,u=t.right-t.left,f=t.bottom-t.top,h=o.stretchX||[[0,l]],p=o.stretchY||[[0,c]],d=function(t,e){return t+e[1]-e[0]},g=h.reduce(d,0),m=p.reduce(d,0),v=l-g,y=c-m,x=0,b=g,_=0,w=m,T=0,k=v,A=0,M=y;if(o.content&&n){var S=o.content;x=nc(h,0,S[0]),_=nc(p,0,S[1]),b=nc(h,S[0],S[2]),w=nc(p,S[1],S[3]),T=S[0]-x,A=S[1]-_,k=S[2]-S[0]-b,M=S[3]-S[1]-w}var E=function(n,a,l,c){var h=ac(n.stretch-x,b,u,t.left),p=oc(n.fixed-T,k,n.stretch,g),d=ac(a.stretch-_,w,f,t.top),v=oc(a.fixed-A,M,a.stretch,m),y=ac(l.stretch-x,b,u,t.left),S=oc(l.fixed-T,k,l.stretch,g),E=ac(c.stretch-_,w,f,t.top),L=oc(c.fixed-A,M,c.stretch,m),C=new i(h,d),P=new i(y,d),I=new i(y,E),O=new i(h,E),z=new i(p/s,v/s),D=new i(S/s,L/s),R=e*Math.PI/180;if(R){var F=Math.sin(R),B=Math.cos(R),N=[B,-F,F,B];C._matMult(N),P._matMult(N),O._matMult(N),I._matMult(N)}var j=n.stretch+n.fixed,U=l.stretch+l.fixed,V=a.stretch+a.fixed,H=c.stretch+c.fixed;return{tl:C,tr:P,bl:O,br:I,tex:{x:o.paddedRect.x+1+j,y:o.paddedRect.y+1+V,w:U-j,h:H-V},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:z,pixelOffsetBR:D,minFontScaleX:k/s/u,minFontScaleY:M/s/f,isSDF:r}};if(n&&(o.stretchX||o.stretchY))for(var L=ic(h,v,g),C=ic(p,y,m),P=0;P0&&(d=Math.max(10,d),this.circleDiameter=d)}else{var g=o.top*s-l,m=o.bottom*s+l,v=o.left*s-l,y=o.right*s+l,x=o.collisionPadding;if(x&&(v-=x[0]*s,g-=x[1]*s,y+=x[2]*s,m+=x[3]*s),u){var b=new i(v,g),_=new i(y,g),w=new i(v,m),T=new i(y,m),k=u*Math.PI/180;b._rotate(k),_._rotate(k),w._rotate(k),T._rotate(k),v=Math.min(b.x,_.x,w.x,T.x),y=Math.max(b.x,_.x,w.x,T.x),g=Math.min(b.y,_.y,w.y,T.y),m=Math.max(b.y,_.y,w.y,T.y)}t.emplaceBack(e.x,e.y,v,g,y,m,r,n,a)}this.boxEndIndex=t.length},lc=function(t,e){if(void 0===t&&(t=[]),void 0===e&&(e=cc),this.data=t,this.length=this.data.length,this.compare=e,this.length>0)for(var r=(this.length>>1)-1;r>=0;r--)this._down(r)};function cc(t,e){return te?1:0}function uc(t,e,r){void 0===e&&(e=1),void 0===r&&(r=!1);for(var n=1/0,a=1/0,o=-1/0,s=-1/0,l=t[0],c=0;co)&&(o=u.x),(!c||u.y>s)&&(s=u.y)}var f=o-n,h=s-a,p=Math.min(f,h),d=p/2,g=new lc([],fc);if(0===p)return new i(n,a);for(var m=n;my.d||!y.d)&&(y=b,r&&console.log(\"found best %d after %d probes\",Math.round(1e4*b.d)/1e4,x)),b.max-y.d<=e||(d=b.h/2,g.push(new hc(b.p.x-d,b.p.y-d,d,t)),g.push(new hc(b.p.x+d,b.p.y-d,d,t)),g.push(new hc(b.p.x-d,b.p.y+d,d,t)),g.push(new hc(b.p.x+d,b.p.y+d,d,t)),x+=4)}return r&&(console.log(\"num probes: \"+x),console.log(\"best distance: \"+y.d)),y.p}function fc(t,e){return e.max-t.max}function hc(t,e,r,n){this.p=new i(t,e),this.h=r,this.d=function(t,e){for(var r=!1,n=1/0,i=0;it.y!=u.y>t.y&&t.x<(u.x-c.x)*(t.y-c.y)/(u.y-c.y)+c.x&&(r=!r),n=Math.min(n,ro(t,c,u))}return(r?1:-1)*Math.sqrt(n)}(this.p,n),this.max=this.d+this.h*Math.SQRT2}lc.prototype.push=function(t){this.data.push(t),this.length++,this._up(this.length-1)},lc.prototype.pop=function(){if(0!==this.length){var t=this.data[0],e=this.data.pop();return this.length--,this.length>0&&(this.data[0]=e,this._down(0)),t}},lc.prototype.peek=function(){return this.data[0]},lc.prototype._up=function(t){for(var e=this.data,r=this.compare,n=e[t];t>0;){var i=t-1>>1,a=e[i];if(r(n,a)>=0)break;e[t]=a,t=i}e[t]=n},lc.prototype._down=function(t){for(var e=this.data,r=this.compare,n=this.length>>1,i=e[t];t=0)break;e[t]=o,t=a}e[t]=i};var pc=Number.POSITIVE_INFINITY;function dc(t,e){return e[1]!==pc?function(t,e,r){var n=0,i=0;switch(e=Math.abs(e),r=Math.abs(r),t){case\"top-right\":case\"top-left\":case\"top\":i=r-7;break;case\"bottom-right\":case\"bottom-left\":case\"bottom\":i=7-r}switch(t){case\"top-right\":case\"bottom-right\":case\"right\":n=-e;break;case\"top-left\":case\"bottom-left\":case\"left\":n=e}return[n,i]}(t,e[0],e[1]):function(t,e){var r=0,n=0;e<0&&(e=0);var i=e/Math.sqrt(2);switch(t){case\"top-right\":case\"top-left\":n=i-7;break;case\"bottom-right\":case\"bottom-left\":n=7-i;break;case\"bottom\":n=7-e;break;case\"top\":n=e-7}switch(t){case\"top-right\":case\"bottom-right\":r=-i;break;case\"top-left\":case\"bottom-left\":r=i;break;case\"left\":r=e;break;case\"right\":r=-e}return[r,n]}(t,e[0])}function gc(t){switch(t){case\"right\":case\"top-right\":case\"bottom-right\":return\"right\";case\"left\":case\"top-left\":case\"bottom-left\":return\"left\"}return\"center\"}function mc(t,e,r,n,a,o,s,l,c,u,f,h,p,d,g){var m=function(t,e,r,n,a,o,s,l){for(var c=n.layout.get(\"text-rotate\").evaluate(o,{})*Math.PI/180,u=[],f=0,h=e.positionedLines;f32640&&_(t.layerIds[0]+': Value for \"text-size\" is >= 255. Reduce your \"text-size\".'):\"composite\"===v.kind&&((y=[128*d.compositeTextSizes[0].evaluate(s,{},g),128*d.compositeTextSizes[1].evaluate(s,{},g)])[0]>32640||y[1]>32640)&&_(t.layerIds[0]+': Value for \"text-size\" is >= 255. Reduce your \"text-size\".'),t.addSymbols(t.text,m,y,l,o,s,u,e,c.lineStartIndex,c.lineLength,p,g);for(var x=0,b=f;x=0;o--)if(n.dist(a[o])0)&&(\"constant\"!==a.value.kind||a.value.value.length>0),c=\"constant\"!==s.value.kind||!!s.value.value||Object.keys(s.parameters).length>0,u=i.get(\"symbol-sort-key\");if(this.features=[],l||c){for(var f=e.iconDependencies,h=e.glyphDependencies,p=e.availableImages,d=new pi(this.zoom),g=0,m=t;g=0;for(var O=0,z=k.sections;O=0;s--)a[s]={x:e[s].x,y:e[s].y,tileUnitDistanceFromAnchor:i},s>0&&(i+=e[s-1].dist(e[s]));for(var l=0;l0},Mc.prototype.hasIconData=function(){return this.icon.segments.get().length>0},Mc.prototype.hasDebugData=function(){return this.textCollisionBox&&this.iconCollisionBox},Mc.prototype.hasTextCollisionBoxData=function(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0},Mc.prototype.hasIconCollisionBoxData=function(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0},Mc.prototype.addIndicesForPlacedSymbol=function(t,e){for(var r=t.placedSymbolArray.get(e),n=r.vertexStartIndex+4*r.numGlyphs,i=r.vertexStartIndex;i1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(t),this.sortedAngle=t,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(var r=0,n=this.symbolInstanceIndexes;r=0&&n.indexOf(t)===r&&e.addIndicesForPlacedSymbol(e.text,t)})),a.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,a.verticalPlacedTextSymbolIndex),a.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,a.placedIconSymbolIndex),a.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,a.verticalPlacedIconSymbolIndex)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}},Nn(\"SymbolBucket\",Mc,{omit:[\"layers\",\"collisionBoxArray\",\"features\",\"compareText\"]}),Mc.MAX_GLYPHS=65535,Mc.addDynamicAttributes=wc;var Sc=new Si({\"symbol-placement\":new wi(Lt.layout_symbol[\"symbol-placement\"]),\"symbol-spacing\":new wi(Lt.layout_symbol[\"symbol-spacing\"]),\"symbol-avoid-edges\":new wi(Lt.layout_symbol[\"symbol-avoid-edges\"]),\"symbol-sort-key\":new Ti(Lt.layout_symbol[\"symbol-sort-key\"]),\"symbol-z-order\":new wi(Lt.layout_symbol[\"symbol-z-order\"]),\"icon-allow-overlap\":new wi(Lt.layout_symbol[\"icon-allow-overlap\"]),\"icon-ignore-placement\":new wi(Lt.layout_symbol[\"icon-ignore-placement\"]),\"icon-optional\":new wi(Lt.layout_symbol[\"icon-optional\"]),\"icon-rotation-alignment\":new wi(Lt.layout_symbol[\"icon-rotation-alignment\"]),\"icon-size\":new Ti(Lt.layout_symbol[\"icon-size\"]),\"icon-text-fit\":new wi(Lt.layout_symbol[\"icon-text-fit\"]),\"icon-text-fit-padding\":new wi(Lt.layout_symbol[\"icon-text-fit-padding\"]),\"icon-image\":new Ti(Lt.layout_symbol[\"icon-image\"]),\"icon-rotate\":new Ti(Lt.layout_symbol[\"icon-rotate\"]),\"icon-padding\":new wi(Lt.layout_symbol[\"icon-padding\"]),\"icon-keep-upright\":new wi(Lt.layout_symbol[\"icon-keep-upright\"]),\"icon-offset\":new Ti(Lt.layout_symbol[\"icon-offset\"]),\"icon-anchor\":new Ti(Lt.layout_symbol[\"icon-anchor\"]),\"icon-pitch-alignment\":new wi(Lt.layout_symbol[\"icon-pitch-alignment\"]),\"text-pitch-alignment\":new wi(Lt.layout_symbol[\"text-pitch-alignment\"]),\"text-rotation-alignment\":new wi(Lt.layout_symbol[\"text-rotation-alignment\"]),\"text-field\":new Ti(Lt.layout_symbol[\"text-field\"]),\"text-font\":new Ti(Lt.layout_symbol[\"text-font\"]),\"text-size\":new Ti(Lt.layout_symbol[\"text-size\"]),\"text-max-width\":new Ti(Lt.layout_symbol[\"text-max-width\"]),\"text-line-height\":new wi(Lt.layout_symbol[\"text-line-height\"]),\"text-letter-spacing\":new Ti(Lt.layout_symbol[\"text-letter-spacing\"]),\"text-justify\":new Ti(Lt.layout_symbol[\"text-justify\"]),\"text-radial-offset\":new Ti(Lt.layout_symbol[\"text-radial-offset\"]),\"text-variable-anchor\":new wi(Lt.layout_symbol[\"text-variable-anchor\"]),\"text-anchor\":new Ti(Lt.layout_symbol[\"text-anchor\"]),\"text-max-angle\":new wi(Lt.layout_symbol[\"text-max-angle\"]),\"text-writing-mode\":new wi(Lt.layout_symbol[\"text-writing-mode\"]),\"text-rotate\":new Ti(Lt.layout_symbol[\"text-rotate\"]),\"text-padding\":new wi(Lt.layout_symbol[\"text-padding\"]),\"text-keep-upright\":new wi(Lt.layout_symbol[\"text-keep-upright\"]),\"text-transform\":new Ti(Lt.layout_symbol[\"text-transform\"]),\"text-offset\":new Ti(Lt.layout_symbol[\"text-offset\"]),\"text-allow-overlap\":new wi(Lt.layout_symbol[\"text-allow-overlap\"]),\"text-ignore-placement\":new wi(Lt.layout_symbol[\"text-ignore-placement\"]),\"text-optional\":new wi(Lt.layout_symbol[\"text-optional\"])}),Ec={paint:new Si({\"icon-opacity\":new Ti(Lt.paint_symbol[\"icon-opacity\"]),\"icon-color\":new Ti(Lt.paint_symbol[\"icon-color\"]),\"icon-halo-color\":new Ti(Lt.paint_symbol[\"icon-halo-color\"]),\"icon-halo-width\":new Ti(Lt.paint_symbol[\"icon-halo-width\"]),\"icon-halo-blur\":new Ti(Lt.paint_symbol[\"icon-halo-blur\"]),\"icon-translate\":new wi(Lt.paint_symbol[\"icon-translate\"]),\"icon-translate-anchor\":new wi(Lt.paint_symbol[\"icon-translate-anchor\"]),\"text-opacity\":new Ti(Lt.paint_symbol[\"text-opacity\"]),\"text-color\":new Ti(Lt.paint_symbol[\"text-color\"],{runtimeType:Ut,getOverride:function(t){return t.textColor},hasOverride:function(t){return!!t.textColor}}),\"text-halo-color\":new Ti(Lt.paint_symbol[\"text-halo-color\"]),\"text-halo-width\":new Ti(Lt.paint_symbol[\"text-halo-width\"]),\"text-halo-blur\":new Ti(Lt.paint_symbol[\"text-halo-blur\"]),\"text-translate\":new wi(Lt.paint_symbol[\"text-translate\"]),\"text-translate-anchor\":new wi(Lt.paint_symbol[\"text-translate-anchor\"])}),layout:Sc},Lc=function(t){this.type=t.property.overrides?t.property.overrides.runtimeType:Ft,this.defaultValue=t};Lc.prototype.evaluate=function(t){if(t.formattedSection){var e=this.defaultValue.property.overrides;if(e&&e.hasOverride(t.formattedSection))return e.getOverride(t.formattedSection)}return t.feature&&t.featureState?this.defaultValue.evaluate(t.feature,t.featureState):this.defaultValue.property.specification.default},Lc.prototype.eachChild=function(t){this.defaultValue.isConstant()||t(this.defaultValue.value._styleExpression.expression)},Lc.prototype.outputDefined=function(){return!1},Lc.prototype.serialize=function(){return null},Nn(\"FormatSectionOverride\",Lc,{omit:[\"defaultValue\"]});var Cc=function(t){function e(e){t.call(this,e,Ec)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.recalculate=function(e,r){if(t.prototype.recalculate.call(this,e,r),\"auto\"===this.layout.get(\"icon-rotation-alignment\")&&(\"point\"!==this.layout.get(\"symbol-placement\")?this.layout._values[\"icon-rotation-alignment\"]=\"map\":this.layout._values[\"icon-rotation-alignment\"]=\"viewport\"),\"auto\"===this.layout.get(\"text-rotation-alignment\")&&(\"point\"!==this.layout.get(\"symbol-placement\")?this.layout._values[\"text-rotation-alignment\"]=\"map\":this.layout._values[\"text-rotation-alignment\"]=\"viewport\"),\"auto\"===this.layout.get(\"text-pitch-alignment\")&&(this.layout._values[\"text-pitch-alignment\"]=this.layout.get(\"text-rotation-alignment\")),\"auto\"===this.layout.get(\"icon-pitch-alignment\")&&(this.layout._values[\"icon-pitch-alignment\"]=this.layout.get(\"icon-rotation-alignment\")),\"point\"===this.layout.get(\"symbol-placement\")){var n=this.layout.get(\"text-writing-mode\");if(n){for(var i=[],a=0,o=n;a\",targetMapId:n,sourceMapId:a.mapId})}}},qc.prototype.receive=function(t){var e=t.data,r=e.id;if(r&&(!e.targetMapId||this.mapId===e.targetMapId))if(\"\"===e.type){delete this.tasks[r];var n=this.cancelCallbacks[r];delete this.cancelCallbacks[r],n&&n()}else k()||e.mustQueue?(this.tasks[r]=e,this.taskQueue.push(r),this.invoker.trigger()):this.processTask(r,e)},qc.prototype.process=function(){if(this.taskQueue.length){var t=this.taskQueue.shift(),e=this.tasks[t];delete this.tasks[t],this.taskQueue.length&&this.invoker.trigger(),e&&this.processTask(t,e)}},qc.prototype.processTask=function(t,e){var r=this;if(\"\"===e.type){var n=this.callbacks[t];delete this.callbacks[t],n&&(e.error?n(qn(e.error)):n(null,qn(e.data)))}else{var i=!1,a=S(this.globalScope)?void 0:[],o=e.hasCallback?function(e,n){i=!0,delete r.cancelCallbacks[t],r.target.postMessage({id:t,type:\"\",sourceMapId:r.mapId,error:e?Hn(e):null,data:Hn(n,a)},a)}:function(t){i=!0},s=null,l=qn(e.data);if(this.parent[e.type])s=this.parent[e.type](e.sourceMapId,l,o);else if(this.parent.getWorkerSource){var c=e.type.split(\".\");s=this.parent.getWorkerSource(e.sourceMapId,c[0],l.source)[c[1]](l,o)}else o(new Error(\"Could not find function \"+e.type));!i&&s&&s.cancel&&(this.cancelCallbacks[t]=s.cancel)}},qc.prototype.remove=function(){this.invoker.remove(),this.target.removeEventListener(\"message\",this.receive,!1)};var Yc=function(t,e){t&&(e?this.setSouthWest(t).setNorthEast(e):4===t.length?this.setSouthWest([t[0],t[1]]).setNorthEast([t[2],t[3]]):this.setSouthWest(t[0]).setNorthEast(t[1]))};Yc.prototype.setNorthEast=function(t){return this._ne=t instanceof Wc?new Wc(t.lng,t.lat):Wc.convert(t),this},Yc.prototype.setSouthWest=function(t){return this._sw=t instanceof Wc?new Wc(t.lng,t.lat):Wc.convert(t),this},Yc.prototype.extend=function(t){var e,r,n=this._sw,i=this._ne;if(t instanceof Wc)e=t,r=t;else{if(!(t instanceof Yc)){if(Array.isArray(t)){if(4===t.length||t.every(Array.isArray)){var a=t;return this.extend(Yc.convert(a))}var o=t;return this.extend(Wc.convert(o))}return this}if(e=t._sw,r=t._ne,!e||!r)return this}return n||i?(n.lng=Math.min(e.lng,n.lng),n.lat=Math.min(e.lat,n.lat),i.lng=Math.max(r.lng,i.lng),i.lat=Math.max(r.lat,i.lat)):(this._sw=new Wc(e.lng,e.lat),this._ne=new Wc(r.lng,r.lat)),this},Yc.prototype.getCenter=function(){return new Wc((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)},Yc.prototype.getSouthWest=function(){return this._sw},Yc.prototype.getNorthEast=function(){return this._ne},Yc.prototype.getNorthWest=function(){return new Wc(this.getWest(),this.getNorth())},Yc.prototype.getSouthEast=function(){return new Wc(this.getEast(),this.getSouth())},Yc.prototype.getWest=function(){return this._sw.lng},Yc.prototype.getSouth=function(){return this._sw.lat},Yc.prototype.getEast=function(){return this._ne.lng},Yc.prototype.getNorth=function(){return this._ne.lat},Yc.prototype.toArray=function(){return[this._sw.toArray(),this._ne.toArray()]},Yc.prototype.toString=function(){return\"LngLatBounds(\"+this._sw.toString()+\", \"+this._ne.toString()+\")\"},Yc.prototype.isEmpty=function(){return!(this._sw&&this._ne)},Yc.prototype.contains=function(t){var e=Wc.convert(t),r=e.lng,n=e.lat,i=this._sw.lat<=n&&n<=this._ne.lat,a=this._sw.lng<=r&&r<=this._ne.lng;return this._sw.lng>this._ne.lng&&(a=this._sw.lng>=r&&r>=this._ne.lng),i&&a},Yc.convert=function(t){return!t||t instanceof Yc?t:new Yc(t)};var Wc=function(t,e){if(isNaN(t)||isNaN(e))throw new Error(\"Invalid LngLat object: (\"+t+\", \"+e+\")\");if(this.lng=+t,this.lat=+e,this.lat>90||this.lat<-90)throw new Error(\"Invalid LngLat latitude value: must be between -90 and 90\")};Wc.prototype.wrap=function(){return new Wc(c(this.lng,-180,180),this.lat)},Wc.prototype.toArray=function(){return[this.lng,this.lat]},Wc.prototype.toString=function(){return\"LngLat(\"+this.lng+\", \"+this.lat+\")\"},Wc.prototype.distanceTo=function(t){var e=Math.PI/180,r=this.lat*e,n=t.lat*e,i=Math.sin(r)*Math.sin(n)+Math.cos(r)*Math.cos(n)*Math.cos((t.lng-this.lng)*e);return 6371008.8*Math.acos(Math.min(i,1))},Wc.prototype.toBounds=function(t){void 0===t&&(t=0);var e=360*t/40075017,r=e/Math.cos(Math.PI/180*this.lat);return new Yc(new Wc(this.lng-r,this.lat-e),new Wc(this.lng+r,this.lat+e))},Wc.convert=function(t){if(t instanceof Wc)return t;if(Array.isArray(t)&&(2===t.length||3===t.length))return new Wc(Number(t[0]),Number(t[1]));if(!Array.isArray(t)&&\"object\"==typeof t&&null!==t)return new Wc(Number(\"lng\"in t?t.lng:t.lon),Number(t.lat));throw new Error(\"`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]\")};var Xc=2*Math.PI*6371008.8;function Zc(t){return Xc*Math.cos(t*Math.PI/180)}function Jc(t){return(180+t)/360}function Kc(t){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t*Math.PI/360)))/360}function Qc(t,e){return t/Zc(e)}function $c(t){var e=180-360*t;return 360/Math.PI*Math.atan(Math.exp(e*Math.PI/180))-90}var tu=function(t,e,r){void 0===r&&(r=0),this.x=+t,this.y=+e,this.z=+r};tu.fromLngLat=function(t,e){void 0===e&&(e=0);var r=Wc.convert(t);return new tu(Jc(r.lng),Kc(r.lat),Qc(e,r.lat))},tu.prototype.toLngLat=function(){return new Wc(360*this.x-180,$c(this.y))},tu.prototype.toAltitude=function(){return t=this.z,e=this.y,t*Zc($c(e));var t,e},tu.prototype.meterInMercatorCoordinateUnits=function(){return 1/Xc*(t=$c(this.y),1/Math.cos(t*Math.PI/180));var t};var eu=function(t,e,r){this.z=t,this.x=e,this.y=r,this.key=iu(0,t,t,e,r)};eu.prototype.equals=function(t){return this.z===t.z&&this.x===t.x&&this.y===t.y},eu.prototype.url=function(t,e){var r,n,i,a,o,s=(r=this.x,n=this.y,i=this.z,a=Gc(256*r,256*(n=Math.pow(2,i)-n-1),i),o=Gc(256*(r+1),256*(n+1),i),a[0]+\",\"+a[1]+\",\"+o[0]+\",\"+o[1]),l=function(t,e,r){for(var n,i=\"\",a=t;a>0;a--)i+=(e&(n=1<this.canonical.z?new nu(t,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new nu(t,this.wrap,t,this.canonical.x>>e,this.canonical.y>>e)},nu.prototype.calculateScaledKey=function(t,e){var r=this.canonical.z-t;return t>this.canonical.z?iu(this.wrap*+e,t,this.canonical.z,this.canonical.x,this.canonical.y):iu(this.wrap*+e,t,t,this.canonical.x>>r,this.canonical.y>>r)},nu.prototype.isChildOf=function(t){if(t.wrap!==this.wrap)return!1;var e=this.canonical.z-t.canonical.z;return 0===t.overscaledZ||t.overscaledZ>e&&t.canonical.y===this.canonical.y>>e},nu.prototype.children=function(t){if(this.overscaledZ>=t)return[new nu(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];var e=this.canonical.z+1,r=2*this.canonical.x,n=2*this.canonical.y;return[new nu(e,this.wrap,e,r,n),new nu(e,this.wrap,e,r+1,n),new nu(e,this.wrap,e,r,n+1),new nu(e,this.wrap,e,r+1,n+1)]},nu.prototype.isLessThan=function(t){return this.wrapt.wrap)&&(this.overscaledZt.overscaledZ)&&(this.canonical.xt.canonical.x)&&this.canonical.y=this.dim+1||e<-1||e>=this.dim+1)throw new RangeError(\"out of range source coordinates for DEM data\");return(e+1)*this.stride+(t+1)},au.prototype._unpackMapbox=function(t,e,r){return(256*t*256+256*e+r)/10-1e4},au.prototype._unpackTerrarium=function(t,e,r){return 256*t+e+r/256-32768},au.prototype.getPixels=function(){return new Eo({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))},au.prototype.backfillBorder=function(t,e,r){if(this.dim!==t.dim)throw new Error(\"dem dimension mismatch\");var n=e*this.dim,i=e*this.dim+this.dim,a=r*this.dim,o=r*this.dim+this.dim;switch(e){case-1:n=i-1;break;case 1:i=n+1}switch(r){case-1:a=o-1;break;case 1:o=a+1}for(var s=-e*this.dim,l=-r*this.dim,c=a;c=0&&u[3]>=0&&s.insert(o,u[0],u[1],u[2],u[3])}},uu.prototype.loadVTLayers=function(){return this.vtLayers||(this.vtLayers=new Ls.VectorTile(new al(this.rawTileData)).layers,this.sourceLayerCoder=new ou(this.vtLayers?Object.keys(this.vtLayers).sort():[\"_geojsonTileLayer\"])),this.vtLayers},uu.prototype.query=function(t,e,r,n){var a=this;this.loadVTLayers();for(var o=t.params||{},s=8192/t.tileSize/t.scale,l=sn(o.filter),c=t.queryGeometry,u=t.queryPadding*s,f=hu(c),h=this.grid.query(f.minX-u,f.minY-u,f.maxX+u,f.maxY+u),p=hu(t.cameraQueryGeometry),d=this.grid3D.query(p.minX-u,p.minY-u,p.maxX+u,p.maxY+u,(function(e,r,n,a){return function(t,e,r,n,a){for(var o=0,s=t;o=l.x&&a>=l.y)return!0}var c=[new i(e,r),new i(e,a),new i(n,a),new i(n,r)];if(t.length>2)for(var u=0,f=c;u=0)return!0;return!1}(a,f)){var h=this.sourceLayerCoder.decode(r),p=this.vtLayers[h].feature(n);if(i.filter(new pi(this.tileID.overscaledZ),p))for(var d=this.getId(p,h),g=0;gn)i=!1;else if(e)if(this.expirationTimeot&&(t.getActor().send(\"enforceCacheSizeLimit\",at),ht=0)},t.clamp=l,t.clearTileCache=function(t){var e=self.caches.delete(\"mapbox-tiles\");t&&e.catch(t).then((function(){return t()}))},t.clipLine=ec,t.clone=function(t){var e=new fo(16);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e},t.clone$1=x,t.clone$2=function(t){var e=new fo(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e},t.collisionCircleLayout=tl,t.config=F,t.create=function(){var t=new fo(16);return fo!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0),t[0]=1,t[5]=1,t[10]=1,t[15]=1,t},t.create$1=function(){var t=new fo(9);return fo!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[5]=0,t[6]=0,t[7]=0),t[0]=1,t[4]=1,t[8]=1,t},t.create$2=function(){var t=new fo(4);return fo!=Float32Array&&(t[1]=0,t[2]=0),t[0]=1,t[3]=1,t},t.createCommonjsModule=e,t.createExpression=Wr,t.createLayout=Ii,t.createStyleLayer=function(t){return\"custom\"===t.type?new Dc(t):new Rc[t.type](t)},t.cross=function(t,e,r){var n=e[0],i=e[1],a=e[2],o=r[0],s=r[1],l=r[2];return t[0]=i*l-a*s,t[1]=a*o-n*l,t[2]=n*s-i*o,t},t.deepEqual=function t(e,r){if(Array.isArray(e)){if(!Array.isArray(r)||e.length!==r.length)return!1;for(var n=0;n0&&(a=1/Math.sqrt(a)),t[0]=e[0]*a,t[1]=e[1]*a,t[2]=e[2]*a,t},t.number=qe,t.offscreenCanvasSupported=pt,t.ortho=function(t,e,r,n,i,a,o){var s=1/(e-r),l=1/(n-i),c=1/(a-o);return t[0]=-2*s,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*l,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*c,t[11]=0,t[12]=(e+r)*s,t[13]=(i+n)*l,t[14]=(o+a)*c,t[15]=1,t},t.parseGlyphPBF=function(t){return new al(t).readFields(Tl,[])},t.pbf=al,t.performSymbolLayout=function(t,e,r,n,i,a,o){t.createArrays();var s=512*t.overscaling;t.tilePixelRatio=8192/s,t.compareText={},t.iconsNeedLinear=!1;var l=t.layers[0].layout,c=t.layers[0]._unevaluatedLayout._values,u={};if(\"composite\"===t.textSizeData.kind){var f=t.textSizeData,h=f.minZoom,p=f.maxZoom;u.compositeTextSizes=[c[\"text-size\"].possiblyEvaluate(new pi(h),o),c[\"text-size\"].possiblyEvaluate(new pi(p),o)]}if(\"composite\"===t.iconSizeData.kind){var d=t.iconSizeData,g=d.minZoom,m=d.maxZoom;u.compositeIconSizes=[c[\"icon-size\"].possiblyEvaluate(new pi(g),o),c[\"icon-size\"].possiblyEvaluate(new pi(m),o)]}u.layoutTextSize=c[\"text-size\"].possiblyEvaluate(new pi(t.zoom+1),o),u.layoutIconSize=c[\"icon-size\"].possiblyEvaluate(new pi(t.zoom+1),o),u.textMaxSize=c[\"text-size\"].possiblyEvaluate(new pi(18));for(var v=24*l.get(\"text-line-height\"),y=\"map\"===l.get(\"text-rotation-alignment\")&&\"point\"!==l.get(\"symbol-placement\"),x=l.get(\"text-keep-upright\"),b=l.get(\"text-size\"),w=function(){var a=k[T],s=l.get(\"text-font\").evaluate(a,{},o).join(\",\"),c=b.evaluate(a,{},o),f=u.layoutTextSize.evaluate(a,{},o),h=u.layoutIconSize.evaluate(a,{},o),p={horizontal:{},vertical:void 0},d=a.text,g=[0,0];if(d){var m=d.toString(),w=24*l.get(\"text-letter-spacing\").evaluate(a,{},o),A=function(t){for(var e=0,r=t;e=8192||f.y<0||f.y>=8192||function(t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g,m,v,y,x,b,w,T,k,A){var M,S,E,L,C,P=t.addToLineVertexArray(e,r),I=0,O=0,z=0,D=0,R=-1,F=-1,B={},N=ya(\"\"),j=0,U=0;void 0===s._unevaluatedLayout.getValue(\"text-radial-offset\")?(M=s.layout.get(\"text-offset\").evaluate(b,{},k).map((function(t){return 24*t})),j=M[0],U=M[1]):(j=24*s.layout.get(\"text-radial-offset\").evaluate(b,{},k),U=pc);if(t.allowVerticalPlacement&&n.vertical){var V=s.layout.get(\"text-rotate\").evaluate(b,{},k)+90,H=n.vertical;L=new sc(l,e,c,u,f,H,h,p,d,V),o&&(C=new sc(l,e,c,u,f,o,m,v,d,V))}if(i){var q=s.layout.get(\"icon-rotate\").evaluate(b,{}),G=\"none\"!==s.layout.get(\"icon-text-fit\"),Y=rc(i,q,T,G),W=o?rc(o,q,T,G):void 0;E=new sc(l,e,c,u,f,i,m,v,!1,q),I=4*Y.length;var X=t.iconSizeData,Z=null;\"source\"===X.kind?(Z=[128*s.layout.get(\"icon-size\").evaluate(b,{})])[0]>32640&&_(t.layerIds[0]+': Value for \"icon-size\" is >= 255. Reduce your \"icon-size\".'):\"composite\"===X.kind&&((Z=[128*w.compositeIconSizes[0].evaluate(b,{},k),128*w.compositeIconSizes[1].evaluate(b,{},k)])[0]>32640||Z[1]>32640)&&_(t.layerIds[0]+': Value for \"icon-size\" is >= 255. Reduce your \"icon-size\".'),t.addSymbols(t.icon,Y,Z,x,y,b,!1,e,P.lineStartIndex,P.lineLength,-1,k),R=t.icon.placedSymbolArray.length-1,W&&(O=4*W.length,t.addSymbols(t.icon,W,Z,x,y,b,Cl.vertical,e,P.lineStartIndex,P.lineLength,-1,k),F=t.icon.placedSymbolArray.length-1)}for(var J in n.horizontal){var K=n.horizontal[J];if(!S){N=ya(K.text);var Q=s.layout.get(\"text-rotate\").evaluate(b,{},k);S=new sc(l,e,c,u,f,K,h,p,d,Q)}var $=1===K.positionedLines.length;if(z+=mc(t,e,K,a,s,d,b,g,P,n.vertical?Cl.horizontal:Cl.horizontalOnly,$?Object.keys(n.horizontal):[J],B,R,w,k),$)break}n.vertical&&(D+=mc(t,e,n.vertical,a,s,d,b,g,P,Cl.vertical,[\"vertical\"],B,F,w,k));var tt=S?S.boxStartIndex:t.collisionBoxArray.length,et=S?S.boxEndIndex:t.collisionBoxArray.length,rt=L?L.boxStartIndex:t.collisionBoxArray.length,nt=L?L.boxEndIndex:t.collisionBoxArray.length,it=E?E.boxStartIndex:t.collisionBoxArray.length,at=E?E.boxEndIndex:t.collisionBoxArray.length,ot=C?C.boxStartIndex:t.collisionBoxArray.length,st=C?C.boxEndIndex:t.collisionBoxArray.length,lt=-1,ct=function(t,e){return t&&t.circleDiameter?Math.max(t.circleDiameter,e):e};lt=ct(S,lt),lt=ct(L,lt),lt=ct(E,lt);var ut=(lt=ct(C,lt))>-1?1:0;ut&&(lt*=A/24);t.glyphOffsetArray.length>=Mc.MAX_GLYPHS&&_(\"Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907\");void 0!==b.sortKey&&t.addToSortKeyRanges(t.symbolInstances.length,b.sortKey);t.symbolInstances.emplaceBack(e.x,e.y,B.right>=0?B.right:-1,B.center>=0?B.center:-1,B.left>=0?B.left:-1,B.vertical||-1,R,F,N,tt,et,rt,nt,it,at,ot,st,c,z,D,I,O,ut,0,h,j,U,lt)}(t,f,s,r,n,i,h,t.layers[0],t.collisionBoxArray,e.index,e.sourceLayerIndex,t.index,v,w,A,l,x,T,M,d,e,a,c,u,o)};if(\"line\"===S)for(var P=0,I=ec(e.geometry,0,0,8192,8192);P1){var V=$l(U,k,r.vertical||g,n,24,y);V&&C(U,V)}}else if(\"Polygon\"===e.type)for(var H=0,q=hs(e.geometry,0);H=E.maxzoom))if(\"none\"!==E.visibility)o(S,this.zoom,n),(g[E.id]=E.createBucket({index:u.bucketLayerIDs.length,layers:S,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:b,sourceID:this.source})).populate(_,m,this.tileID.canonical),u.bucketLayerIDs.push(S.map((function(t){return t.id})))}}}var L=t.mapObject(m.glyphDependencies,(function(t){return Object.keys(t).map(Number)}));Object.keys(L).length?a.send(\"getGlyphs\",{uid:this.uid,stacks:L},(function(t,e){f||(f=t,h=e,I.call(l))})):h={};var C=Object.keys(m.iconDependencies);C.length?a.send(\"getImages\",{icons:C,source:this.source,tileID:this.tileID,type:\"icons\"},(function(t,e){f||(f=t,p=e,I.call(l))})):p={};var P=Object.keys(m.patternDependencies);function I(){if(f)return s(f);if(h&&p&&d){var e=new i(h),r=new t.ImageAtlas(p,d);for(var a in g){var l=g[a];l instanceof t.SymbolBucket?(o(l.layers,this.zoom,n),t.performSymbolLayout(l,h,e.positions,p,r.iconPositions,this.showCollisionBoxes,this.tileID.canonical)):l.hasPattern&&(l instanceof t.LineBucket||l instanceof t.FillBucket||l instanceof t.FillExtrusionBucket)&&(o(l.layers,this.zoom,n),l.addFeatures(m,this.tileID.canonical,r.patternPositions))}this.status=\"done\",s(null,{buckets:t.values(g).filter((function(t){return!t.isEmpty()})),featureIndex:u,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:e.image,imageAtlas:r,glyphMap:this.returnDependencies?h:null,iconMap:this.returnDependencies?p:null,glyphPositions:this.returnDependencies?e.positions:null})}}P.length?a.send(\"getImages\",{icons:P,source:this.source,tileID:this.tileID,type:\"patterns\"},(function(t,e){f||(f=t,d=e,I.call(l))})):d={},I.call(this)};var l=function(t,e,r,n){this.actor=t,this.layerIndex=e,this.availableImages=r,this.loadVectorData=n||s,this.loading={},this.loaded={}};l.prototype.loadTile=function(e,r){var n=this,i=e.uid;this.loading||(this.loading={});var o=!!(e&&e.request&&e.request.collectResourceTiming)&&new t.RequestPerformance(e.request),s=this.loading[i]=new a(e);s.abort=this.loadVectorData(e,(function(e,a){if(delete n.loading[i],e||!a)return s.status=\"done\",n.loaded[i]=s,r(e);var l=a.rawData,c={};a.expires&&(c.expires=a.expires),a.cacheControl&&(c.cacheControl=a.cacheControl);var u={};if(o){var f=o.finish();f&&(u.resourceTiming=JSON.parse(JSON.stringify(f)))}s.vectorTile=a.vectorTile,s.parse(a.vectorTile,n.layerIndex,n.availableImages,n.actor,(function(e,n){if(e||!n)return r(e);r(null,t.extend({rawTileData:l.slice(0)},n,c,u))})),n.loaded=n.loaded||{},n.loaded[i]=s}))},l.prototype.reloadTile=function(t,e){var r=this,n=this.loaded,i=t.uid,a=this;if(n&&n[i]){var o=n[i];o.showCollisionBoxes=t.showCollisionBoxes;var s=function(t,n){var i=o.reloadCallback;i&&(delete o.reloadCallback,o.parse(o.vectorTile,a.layerIndex,r.availableImages,a.actor,i)),e(t,n)};\"parsing\"===o.status?o.reloadCallback=s:\"done\"===o.status&&(o.vectorTile?o.parse(o.vectorTile,this.layerIndex,this.availableImages,this.actor,s):s())}},l.prototype.abortTile=function(t,e){var r=this.loading,n=t.uid;r&&r[n]&&r[n].abort&&(r[n].abort(),delete r[n]),e()},l.prototype.removeTile=function(t,e){var r=this.loaded,n=t.uid;r&&r[n]&&delete r[n],e()};var c=t.window.ImageBitmap,u=function(){this.loaded={}};u.prototype.loadTile=function(e,r){var n=e.uid,i=e.encoding,a=e.rawImageData,o=c&&a instanceof c?this.getImageData(a):a,s=new t.DEMData(n,o,i);this.loaded=this.loaded||{},this.loaded[n]=s,r(null,s)},u.prototype.getImageData=function(e){this.offscreenCanvas&&this.offscreenCanvasContext||(this.offscreenCanvas=new OffscreenCanvas(e.width,e.height),this.offscreenCanvasContext=this.offscreenCanvas.getContext(\"2d\")),this.offscreenCanvas.width=e.width,this.offscreenCanvas.height=e.height,this.offscreenCanvasContext.drawImage(e,0,0,e.width,e.height);var r=this.offscreenCanvasContext.getImageData(-1,-1,e.width+2,e.height+2);return this.offscreenCanvasContext.clearRect(0,0,this.offscreenCanvas.width,this.offscreenCanvas.height),new t.RGBAImage({width:r.width,height:r.height},r.data)},u.prototype.removeTile=function(t){var e=this.loaded,r=t.uid;e&&e[r]&&delete e[r]};var f=function t(e,r){var n,i=e&&e.type;if(\"FeatureCollection\"===i)for(n=0;n=0!=!!e&&t.reverse()}var d=t.vectorTile.VectorTileFeature.prototype.toGeoJSON,g=function(e){this._feature=e,this.extent=t.EXTENT,this.type=e.type,this.properties=e.tags,\"id\"in e&&!isNaN(e.id)&&(this.id=parseInt(e.id,10))};g.prototype.loadGeometry=function(){if(1===this._feature.type){for(var e=[],r=0,n=this._feature.geometry;r>31}function P(t,e){for(var r=t.loadGeometry(),n=t.type,i=0,a=0,o=r.length,s=0;s>1;!function t(e,r,n,i,a,o){for(;a>i;){if(a-i>600){var s=a-i+1,l=n-i+1,c=Math.log(s),u=.5*Math.exp(2*c/3),f=.5*Math.sqrt(c*u*(s-u)/s)*(l-s/2<0?-1:1),h=Math.max(i,Math.floor(n-l*u/s+f)),p=Math.min(a,Math.floor(n+(s-l)*u/s+f));t(e,r,n,h,p,o)}var d=r[2*n+o],g=i,m=a;for(z(e,r,i,n),r[2*a+o]>d&&z(e,r,i,a);gd;)m--}r[2*i+o]===d?z(e,r,i,m):(m++,z(e,r,m,a)),m<=n&&(i=m+1),n<=m&&(a=m-1)}}(t,e,o,n,i,a%2),O(t,e,r,n,o-1,a+1),O(t,e,r,o+1,i,a+1)}}function z(t,e,r,n){D(t,r,n),D(e,2*r,2*n),D(e,2*r+1,2*n+1)}function D(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function R(t,e,r,n){var i=t-r,a=e-n;return i*i+a*a}_.fromVectorTileJs=w,_.fromGeojsonVt=T,_.GeoJSONWrapper=k;var F=function(t){return t[0]},B=function(t){return t[1]},N=function(t,e,r,n,i){void 0===e&&(e=F),void 0===r&&(r=B),void 0===n&&(n=64),void 0===i&&(i=Float64Array),this.nodeSize=n,this.points=t;for(var a=t.length<65536?Uint16Array:Uint32Array,o=this.ids=new a(t.length),s=this.coords=new i(2*t.length),l=0;l=r&&s<=i&&l>=n&&l<=a&&u.push(t[d]);else{var g=Math.floor((p+h)/2);s=e[2*g],l=e[2*g+1],s>=r&&s<=i&&l>=n&&l<=a&&u.push(t[g]);var m=(f+1)%2;(0===f?r<=s:n<=l)&&(c.push(p),c.push(g-1),c.push(m)),(0===f?i>=s:a>=l)&&(c.push(g+1),c.push(h),c.push(m))}}return u}(this.ids,this.coords,t,e,r,n,this.nodeSize)},N.prototype.within=function(t,e,r){return function(t,e,r,n,i,a){for(var o=[0,t.length-1,0],s=[],l=i*i;o.length;){var c=o.pop(),u=o.pop(),f=o.pop();if(u-f<=a)for(var h=f;h<=u;h++)R(e[2*h],e[2*h+1],r,n)<=l&&s.push(t[h]);else{var p=Math.floor((f+u)/2),d=e[2*p],g=e[2*p+1];R(d,g,r,n)<=l&&s.push(t[p]);var m=(c+1)%2;(0===c?r-i<=d:n-i<=g)&&(o.push(f),o.push(p-1),o.push(m)),(0===c?r+i>=d:n+i>=g)&&(o.push(p+1),o.push(u),o.push(m))}}return s}(this.ids,this.coords,t,e,r,this.nodeSize)};var j={minZoom:0,maxZoom:16,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:function(t){return t}},U=function(t){this.options=X(Object.create(j),t),this.trees=new Array(this.options.maxZoom+1)};function V(t,e,r,n,i){return{x:t,y:e,zoom:1/0,id:r,parentId:-1,numPoints:n,properties:i}}function H(t,e){var r=t.geometry.coordinates,n=r[0],i=r[1];return{x:Y(n),y:W(i),zoom:1/0,index:e,parentId:-1}}function q(t){return{type:\"Feature\",id:t.id,properties:G(t),geometry:{type:\"Point\",coordinates:[(n=t.x,360*(n-.5)),(e=t.y,r=(180-360*e)*Math.PI/180,360*Math.atan(Math.exp(r))/Math.PI-90)]}};var e,r,n}function G(t){var e=t.numPoints,r=e>=1e4?Math.round(e/1e3)+\"k\":e>=1e3?Math.round(e/100)/10+\"k\":e;return X(X({},t.properties),{cluster:!0,cluster_id:t.id,point_count:e,point_count_abbreviated:r})}function Y(t){return t/360+.5}function W(t){var e=Math.sin(t*Math.PI/180),r=.5-.25*Math.log((1+e)/(1-e))/Math.PI;return r<0?0:r>1?1:r}function X(t,e){for(var r in e)t[r]=e[r];return t}function Z(t){return t.x}function J(t){return t.y}function K(t,e,r,n,i,a){var o=i-r,s=a-n;if(0!==o||0!==s){var l=((t-r)*o+(e-n)*s)/(o*o+s*s);l>1?(r=i,n=a):l>0&&(r+=o*l,n+=s*l)}return(o=t-r)*o+(s=e-n)*s}function Q(t,e,r,n){var i={id:void 0===t?null:t,type:e,geometry:r,tags:n,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return function(t){var e=t.geometry,r=t.type;if(\"Point\"===r||\"MultiPoint\"===r||\"LineString\"===r)$(t,e);else if(\"Polygon\"===r||\"MultiLineString\"===r)for(var n=0;n0&&(o+=n?(i*c-l*a)/2:Math.sqrt(Math.pow(l-i,2)+Math.pow(c-a,2))),i=l,a=c}var u=e.length-3;e[2]=1,function t(e,r,n,i){for(var a,o=i,s=n-r>>1,l=n-r,c=e[r],u=e[r+1],f=e[n],h=e[n+1],p=r+3;po)a=p,o=d;else if(d===o){var g=Math.abs(p-s);gi&&(a-r>3&&t(e,r,a,i),e[a+2]=o,n-a>3&&t(e,a,n,i))}(e,0,u,r),e[u+2]=1,e.size=Math.abs(o),e.start=0,e.end=e.size}function nt(t,e,r,n){for(var i=0;i1?1:r}function ot(t,e,r,n,i,a,o,s){if(n/=e,a>=(r/=e)&&o=n)return null;for(var l=[],c=0;c=r&&d=n)){var g=[];if(\"Point\"===h||\"MultiPoint\"===h)st(f,g,r,n,i);else if(\"LineString\"===h)lt(f,g,r,n,i,!1,s.lineMetrics);else if(\"MultiLineString\"===h)ut(f,g,r,n,i,!1);else if(\"Polygon\"===h)ut(f,g,r,n,i,!0);else if(\"MultiPolygon\"===h)for(var m=0;m=r&&o<=n&&(e.push(t[a]),e.push(t[a+1]),e.push(t[a+2]))}}function lt(t,e,r,n,i,a,o){for(var s,l,c=ct(t),u=0===i?ht:pt,f=t.start,h=0;hr&&(l=u(c,p,d,m,v,r),o&&(c.start=f+s*l)):y>n?x=r&&(l=u(c,p,d,m,v,r),b=!0),x>n&&y<=n&&(l=u(c,p,d,m,v,n),b=!0),!a&&b&&(o&&(c.end=f+s*l),e.push(c),c=ct(t)),o&&(f+=s)}var _=t.length-3;p=t[_],d=t[_+1],g=t[_+2],(y=0===i?p:d)>=r&&y<=n&&ft(c,p,d,g),_=c.length-3,a&&_>=3&&(c[_]!==c[0]||c[_+1]!==c[1])&&ft(c,c[0],c[1],c[2]),c.length&&e.push(c)}function ct(t){var e=[];return e.size=t.size,e.start=t.start,e.end=t.end,e}function ut(t,e,r,n,i,a){for(var o=0;oo.maxX&&(o.maxX=u),f>o.maxY&&(o.maxY=f)}return o}function xt(t,e,r,n){var i=e.geometry,a=e.type,o=[];if(\"Point\"===a||\"MultiPoint\"===a)for(var s=0;s0&&e.size<(i?o:n))r.numPoints+=e.length/3;else{for(var s=[],l=0;lo)&&(r.numSimplified++,s.push(e[l]),s.push(e[l+1])),r.numPoints++;i&&function(t,e){for(var r=0,n=0,i=t.length,a=i-2;n0===e)for(n=0,i=t.length;n24)throw new Error(\"maxZoom should be in the 0-24 range\");if(e.promoteId&&e.generateId)throw new Error(\"promoteId and generateId cannot be used together.\");var n=function(t,e){var r=[];if(\"FeatureCollection\"===t.type)for(var n=0;n=n;c--){var u=+Date.now();s=this._cluster(s,c),this.trees[c]=new N(s,Z,J,a,Float32Array),r&&console.log(\"z%d: %d clusters in %dms\",c,s.length,+Date.now()-u)}return r&&console.timeEnd(\"total time\"),this},U.prototype.getClusters=function(t,e){var r=((t[0]+180)%360+360)%360-180,n=Math.max(-90,Math.min(90,t[1])),i=180===t[2]?180:((t[2]+180)%360+360)%360-180,a=Math.max(-90,Math.min(90,t[3]));if(t[2]-t[0]>=360)r=-180,i=180;else if(r>i){var o=this.getClusters([r,n,180,a],e),s=this.getClusters([-180,n,i,a],e);return o.concat(s)}for(var l=this.trees[this._limitZoom(e)],c=[],u=0,f=l.range(Y(r),W(a),Y(i),W(n));u1?this._map(c,!0):null,m=(l<<5)+(e+1)+this.points.length,v=0,y=f;v>5},U.prototype._getOriginZoom=function(t){return(t-this.points.length)%32},U.prototype._map=function(t,e){if(t.numPoints)return e?X({},t.properties):t.properties;var r=this.points[t.index].properties,n=this.options.map(r);return e&&n===r?X({},n):n},_t.prototype.options={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,tolerance:3,extent:4096,buffer:64,lineMetrics:!1,promoteId:null,generateId:!1,debug:0},_t.prototype.splitTile=function(t,e,r,n,i,a,o){for(var s=[t,e,r,n],l=this.options,c=l.debug;s.length;){n=s.pop(),r=s.pop(),e=s.pop(),t=s.pop();var u=1<1&&console.time(\"creation\"),h=this.tiles[f]=yt(t,e,r,n,l),this.tileCoords.push({z:e,x:r,y:n}),c)){c>1&&(console.log(\"tile z%d-%d-%d (features: %d, points: %d, simplified: %d)\",e,r,n,h.numFeatures,h.numPoints,h.numSimplified),console.timeEnd(\"creation\"));var p=\"z\"+e;this.stats[p]=(this.stats[p]||0)+1,this.total++}if(h.source=t,i){if(e===l.maxZoom||e===i)continue;var d=1<1&&console.time(\"clipping\");var g,m,v,y,x,b,_=.5*l.buffer/l.extent,w=.5-_,T=.5+_,k=1+_;g=m=v=y=null,x=ot(t,u,r-_,r+T,0,h.minX,h.maxX,l),b=ot(t,u,r+w,r+k,0,h.minX,h.maxX,l),t=null,x&&(g=ot(x,u,n-_,n+T,1,h.minY,h.maxY,l),m=ot(x,u,n+w,n+k,1,h.minY,h.maxY,l),x=null),b&&(v=ot(b,u,n-_,n+T,1,h.minY,h.maxY,l),y=ot(b,u,n+w,n+k,1,h.minY,h.maxY,l),b=null),c>1&&console.timeEnd(\"clipping\"),s.push(g||[],e+1,2*r,2*n),s.push(m||[],e+1,2*r,2*n+1),s.push(v||[],e+1,2*r+1,2*n),s.push(y||[],e+1,2*r+1,2*n+1)}}},_t.prototype.getTile=function(t,e,r){var n=this.options,i=n.extent,a=n.debug;if(t<0||t>24)return null;var o=1<1&&console.log(\"drilling down to z%d-%d-%d\",t,e,r);for(var l,c=t,u=e,f=r;!l&&c>0;)c--,u=Math.floor(u/2),f=Math.floor(f/2),l=this.tiles[wt(c,u,f)];return l&&l.source?(a>1&&console.log(\"found parent tile z%d-%d-%d\",c,u,f),a>1&&console.time(\"drilling down\"),this.splitTile(l.source,c,u,f,t,e,r),a>1&&console.timeEnd(\"drilling down\"),this.tiles[s]?mt(this.tiles[s],i):null):null};var kt=function(e){function r(t,r,n,i){e.call(this,t,r,n,Tt),i&&(this.loadGeoJSON=i)}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.loadData=function(t,e){this._pendingCallback&&this._pendingCallback(null,{abandoned:!0}),this._pendingCallback=e,this._pendingLoadDataParams=t,this._state&&\"Idle\"!==this._state?this._state=\"NeedsLoadData\":(this._state=\"Coalescing\",this._loadData())},r.prototype._loadData=function(){var e=this;if(this._pendingCallback&&this._pendingLoadDataParams){var r=this._pendingCallback,n=this._pendingLoadDataParams;delete this._pendingCallback,delete this._pendingLoadDataParams;var i=!!(n&&n.request&&n.request.collectResourceTiming)&&new t.RequestPerformance(n.request);this.loadGeoJSON(n,(function(a,o){if(a||!o)return r(a);if(\"object\"!=typeof o)return r(new Error(\"Input data given to '\"+n.source+\"' is not a valid GeoJSON object.\"));f(o,!0);try{e._geoJSONIndex=n.cluster?new U(function(e){var r=e.superclusterOptions,n=e.clusterProperties;if(!n||!r)return r;for(var i={},a={},o={accumulated:null,zoom:0},s={properties:null},l=Object.keys(n),c=0,u=l;c=0?0:e.button},r.remove=function(t){t.parentNode&&t.parentNode.removeChild(t)};var h=function(e){function r(){e.call(this),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requesters=[],this.patterns={},this.atlasImage=new t.RGBAImage({width:1,height:1}),this.dirty=!0}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.isLoaded=function(){return this.loaded},r.prototype.setLoaded=function(t){if(this.loaded!==t&&(this.loaded=t,t)){for(var e=0,r=this.requesters;e=0?1.2:1))}function v(t,e,r,n,i,a,o){for(var s=0;s65535)e(new Error(\"glyphs > 65535 not supported\"));else if(a.ranges[s])e(null,{stack:r,id:i,glyph:o});else{var l=a.requests[s];l||(l=a.requests[s]=[],x.loadGlyphRange(r,s,n.url,n.requestManager,(function(t,e){if(e){for(var r in e)n._doesCharSupportLocalGlyph(+r)||(a.glyphs[+r]=e[+r]);a.ranges[s]=!0}for(var i=0,o=l;i1&&(l=t[++s]);var u=Math.abs(c-l.left),f=Math.abs(c-l.right),h=Math.min(u,f),p=void 0,d=i/r*(n+1);if(l.isDash){var g=n-Math.abs(d);p=Math.sqrt(h*h+g*g)}else p=n-Math.sqrt(h*h+d*d);this.data[o+c]=Math.max(0,Math.min(255,p+128))}},T.prototype.addRegularDash=function(t){for(var e=t.length-1;e>=0;--e){var r=t[e],n=t[e+1];r.zeroLength?t.splice(e,1):n&&n.isDash===r.isDash&&(n.left=r.left,t.splice(e,1))}var i=t[0],a=t[t.length-1];i.isDash===a.isDash&&(i.left=a.left-this.width,a.right=i.right+this.width);for(var o=this.width*this.nextRow,s=0,l=t[s],c=0;c1&&(l=t[++s]);var u=Math.abs(c-l.left),f=Math.abs(c-l.right),h=Math.min(u,f),p=l.isDash?h:-h;this.data[o+c]=Math.max(0,Math.min(255,p+128))}},T.prototype.addDash=function(e,r){var n=r?7:0,i=2*n+1;if(this.nextRow+i>this.height)return t.warnOnce(\"LineAtlas out of space\"),null;for(var a=0,o=0;o=n&&e.x=i&&e.y0&&(l[new t.OverscaledTileID(e.overscaledZ,a,r.z,i,r.y-1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,e.wrap,r.z,r.x,r.y-1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,s,r.z,o,r.y-1).key]={backfilled:!1}),r.y+10&&(n.resourceTiming=e._resourceTiming,e._resourceTiming=[]),e.fire(new t.Event(\"data\",n))}}))},r.prototype.onAdd=function(t){this.map=t,this.load()},r.prototype.setData=function(e){var r=this;return this._data=e,this.fire(new t.Event(\"dataloading\",{dataType:\"source\"})),this._updateWorkerData((function(e){if(e)r.fire(new t.ErrorEvent(e));else{var n={dataType:\"source\",sourceDataType:\"content\"};r._collectResourceTiming&&r._resourceTiming&&r._resourceTiming.length>0&&(n.resourceTiming=r._resourceTiming,r._resourceTiming=[]),r.fire(new t.Event(\"data\",n))}})),this},r.prototype.getClusterExpansionZoom=function(t,e){return this.actor.send(\"geojson.getClusterExpansionZoom\",{clusterId:t,source:this.id},e),this},r.prototype.getClusterChildren=function(t,e){return this.actor.send(\"geojson.getClusterChildren\",{clusterId:t,source:this.id},e),this},r.prototype.getClusterLeaves=function(t,e,r,n){return this.actor.send(\"geojson.getClusterLeaves\",{source:this.id,clusterId:t,limit:e,offset:r},n),this},r.prototype._updateWorkerData=function(e){var r=this;this._loaded=!1;var n=t.extend({},this.workerOptions),i=this._data;\"string\"==typeof i?(n.request=this.map._requestManager.transformRequest(t.browser.resolveURL(i),t.ResourceType.Source),n.request.collectResourceTiming=this._collectResourceTiming):n.data=JSON.stringify(i),this.actor.send(this.type+\".loadData\",n,(function(t,i){r._removed||i&&i.abandoned||(r._loaded=!0,i&&i.resourceTiming&&i.resourceTiming[r.id]&&(r._resourceTiming=i.resourceTiming[r.id].slice(0)),r.actor.send(r.type+\".coalesce\",{source:n.source},null),e(t))}))},r.prototype.loaded=function(){return this._loaded},r.prototype.loadTile=function(e,r){var n=this,i=e.actor?\"reloadTile\":\"loadTile\";e.actor=this.actor;var a={type:this.type,uid:e.uid,tileID:e.tileID,zoom:e.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:t.browser.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};e.request=this.actor.send(i,a,(function(t,a){return delete e.request,e.unloadVectorData(),e.aborted?r(null):t?r(t):(e.loadVectorData(a,n.map.painter,\"reloadTile\"===i),r(null))}))},r.prototype.abortTile=function(t){t.request&&(t.request.cancel(),delete t.request),t.aborted=!0},r.prototype.unloadTile=function(t){t.unloadVectorData(),this.actor.send(\"removeTile\",{uid:t.uid,type:this.type,source:this.id})},r.prototype.onRemove=function(){this._removed=!0,this.actor.send(\"removeSource\",{type:this.type,source:this.id})},r.prototype.serialize=function(){return t.extend({},this._options,{type:this.type,data:this._data})},r.prototype.hasTransition=function(){return!1},r}(t.Evented),P=t.createLayout([{name:\"a_pos\",type:\"Int16\",components:2},{name:\"a_texture_pos\",type:\"Int16\",components:2}]),I=function(e){function r(t,r,n,i){e.call(this),this.id=t,this.dispatcher=n,this.coordinates=r.coordinates,this.type=\"image\",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(i),this.options=r}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.load=function(e,r){var n=this;this._loaded=!1,this.fire(new t.Event(\"dataloading\",{dataType:\"source\"})),this.url=this.options.url,t.getImage(this.map._requestManager.transformRequest(this.url,t.ResourceType.Image),(function(i,a){n._loaded=!0,i?n.fire(new t.ErrorEvent(i)):a&&(n.image=a,e&&(n.coordinates=e),r&&r(),n._finishLoading())}))},r.prototype.loaded=function(){return this._loaded},r.prototype.updateImage=function(t){var e=this;return this.image&&t.url?(this.options.url=t.url,this.load(t.coordinates,(function(){e.texture=null})),this):this},r.prototype._finishLoading=function(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new t.Event(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})))},r.prototype.onAdd=function(t){this.map=t,this.load()},r.prototype.setCoordinates=function(e){var r=this;this.coordinates=e;var n=e.map(t.MercatorCoordinate.fromLngLat);this.tileID=function(e){for(var r=1/0,n=1/0,i=-1/0,a=-1/0,o=0,s=e;or.end(0)?this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+this.id,null,\"Playback for this video can be set only between the \"+r.start(0)+\" and \"+r.end(0)+\"-second mark.\"))):this.video.currentTime=e}},r.prototype.getVideo=function(){return this.video},r.prototype.onAdd=function(t){this.map||(this.map=t,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))},r.prototype.prepare=function(){if(!(0===Object.keys(this.tiles).length||this.video.readyState<2)){var e=this.map.painter.context,r=e.gl;for(var n in this.boundsBuffer||(this.boundsBuffer=e.createVertexBuffer(this._boundsArray,P.members)),this.boundsSegments||(this.boundsSegments=t.SegmentVector.simpleSegment(0,0,4,2)),this.texture?this.video.paused||(this.texture.bind(r.LINEAR,r.CLAMP_TO_EDGE),r.texSubImage2D(r.TEXTURE_2D,0,0,0,r.RGBA,r.UNSIGNED_BYTE,this.video)):(this.texture=new t.Texture(e,this.video,r.RGBA),this.texture.bind(r.LINEAR,r.CLAMP_TO_EDGE)),this.tiles){var i=this.tiles[n];\"loaded\"!==i.state&&(i.state=\"loaded\",i.texture=this.texture)}}},r.prototype.serialize=function(){return{type:\"video\",urls:this.urls,coordinates:this.coordinates}},r.prototype.hasTransition=function(){return this.video&&!this.video.paused},r}(I),z=function(e){function r(r,n,i,a){e.call(this,r,n,i,a),n.coordinates?Array.isArray(n.coordinates)&&4===n.coordinates.length&&!n.coordinates.some((function(t){return!Array.isArray(t)||2!==t.length||t.some((function(t){return\"number\"!=typeof t}))}))||this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+r,null,'\"coordinates\" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+r,null,'missing required property \"coordinates\"'))),n.animate&&\"boolean\"!=typeof n.animate&&this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+r,null,'optional \"animate\" property must be a boolean value'))),n.canvas?\"string\"==typeof n.canvas||n.canvas instanceof t.window.HTMLCanvasElement||this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+r,null,'\"canvas\" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new t.ErrorEvent(new t.ValidationError(\"sources.\"+r,null,'missing required property \"canvas\"'))),this.options=n,this.animate=void 0===n.animate||n.animate}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.load=function(){this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof t.window.HTMLCanvasElement?this.options.canvas:t.window.document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new t.ErrorEvent(new Error(\"Canvas dimensions cannot be less than or equal to zero.\"))):(this.play=function(){this._playing=!0,this.map.triggerRepaint()},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1)},this._finishLoading())},r.prototype.getCanvas=function(){return this.canvas},r.prototype.onAdd=function(t){this.map=t,this.load(),this.canvas&&this.animate&&this.play()},r.prototype.onRemove=function(){this.pause()},r.prototype.prepare=function(){var e=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,e=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,e=!0),!this._hasInvalidDimensions()&&0!==Object.keys(this.tiles).length){var r=this.map.painter.context,n=r.gl;for(var i in this.boundsBuffer||(this.boundsBuffer=r.createVertexBuffer(this._boundsArray,P.members)),this.boundsSegments||(this.boundsSegments=t.SegmentVector.simpleSegment(0,0,4,2)),this.texture?(e||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new t.Texture(r,this.canvas,n.RGBA,{premultiply:!0}),this.tiles){var a=this.tiles[i];\"loaded\"!==a.state&&(a.state=\"loaded\",a.texture=this.texture)}}},r.prototype.serialize=function(){return{type:\"canvas\",coordinates:this.coordinates}},r.prototype.hasTransition=function(){return this._playing},r.prototype._hasInvalidDimensions=function(){for(var t=0,e=[this.canvas.width,this.canvas.height];tthis.max){var o=this._getAndRemoveByKey(this.order[0]);o&&this.onRemove(o)}return this},N.prototype.has=function(t){return t.wrapped().key in this.data},N.prototype.getAndRemove=function(t){return this.has(t)?this._getAndRemoveByKey(t.wrapped().key):null},N.prototype._getAndRemoveByKey=function(t){var e=this.data[t].shift();return e.timeout&&clearTimeout(e.timeout),0===this.data[t].length&&delete this.data[t],this.order.splice(this.order.indexOf(t),1),e.value},N.prototype.getByKey=function(t){var e=this.data[t];return e?e[0].value:null},N.prototype.get=function(t){return this.has(t)?this.data[t.wrapped().key][0].value:null},N.prototype.remove=function(t,e){if(!this.has(t))return this;var r=t.wrapped().key,n=void 0===e?0:this.data[r].indexOf(e),i=this.data[r][n];return this.data[r].splice(n,1),i.timeout&&clearTimeout(i.timeout),0===this.data[r].length&&delete this.data[r],this.onRemove(i.value),this.order.splice(this.order.indexOf(r),1),this},N.prototype.setMaxSize=function(t){for(this.max=t;this.order.length>this.max;){var e=this._getAndRemoveByKey(this.order[0]);e&&this.onRemove(e)}return this},N.prototype.filter=function(t){var e=[];for(var r in this.data)for(var n=0,i=this.data[r];n1||(Math.abs(r)>1&&(1===Math.abs(r+i)?r+=i:1===Math.abs(r-i)&&(r-=i)),e.dem&&t.dem&&(t.dem.backfillBorder(e.dem,r,n),t.neighboringTiles&&t.neighboringTiles[a]&&(t.neighboringTiles[a].backfilled=!0)))}},r.prototype.getTile=function(t){return this.getTileByID(t.key)},r.prototype.getTileByID=function(t){return this._tiles[t]},r.prototype._retainLoadedChildren=function(t,e,r,n){for(var i in this._tiles){var a=this._tiles[i];if(!(n[i]||!a.hasData()||a.tileID.overscaledZ<=e||a.tileID.overscaledZ>r)){for(var o=a.tileID;a&&a.tileID.overscaledZ>e+1;){var s=a.tileID.scaledTo(a.tileID.overscaledZ-1);(a=this._tiles[s.key])&&a.hasData()&&(o=s)}for(var l=o;l.overscaledZ>e;)if(t[(l=l.scaledTo(l.overscaledZ-1)).key]){n[o.key]=o;break}}}},r.prototype.findLoadedParent=function(t,e){if(t.key in this._loadedParentTiles){var r=this._loadedParentTiles[t.key];return r&&r.tileID.overscaledZ>=e?r:null}for(var n=t.overscaledZ-1;n>=e;n--){var i=t.scaledTo(n),a=this._getLoadedTile(i);if(a)return a}},r.prototype._getLoadedTile=function(t){var e=this._tiles[t.key];return e&&e.hasData()?e:this._cache.getByKey(t.wrapped().key)},r.prototype.updateCacheSize=function(t){var e=(Math.ceil(t.width/this._source.tileSize)+1)*(Math.ceil(t.height/this._source.tileSize)+1),r=Math.floor(5*e),n=\"number\"==typeof this._maxTileCacheSize?Math.min(this._maxTileCacheSize,r):r;this._cache.setMaxSize(n)},r.prototype.handleWrapJump=function(t){var e=(t-(void 0===this._prevLng?t:this._prevLng))/360,r=Math.round(e);if(this._prevLng=t,r){var n={};for(var i in this._tiles){var a=this._tiles[i];a.tileID=a.tileID.unwrapTo(a.tileID.wrap+r),n[a.tileID.key]=a}for(var o in this._tiles=n,this._timers)clearTimeout(this._timers[o]),delete this._timers[o];for(var s in this._tiles){var l=this._tiles[s];this._setTileReloadTimer(s,l)}}},r.prototype.update=function(e){var n=this;if(this.transform=e,this._sourceLoaded&&!this._paused){var i;this.updateCacheSize(e),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used?this._source.tileID?i=e.getVisibleUnwrappedCoordinates(this._source.tileID).map((function(e){return new t.OverscaledTileID(e.canonical.z,e.wrap,e.canonical.z,e.canonical.x,e.canonical.y)})):(i=e.coveringTiles({tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled}),this._source.hasTile&&(i=i.filter((function(t){return n._source.hasTile(t)})))):i=[];var a=e.coveringZoomLevel(this._source),o=Math.max(a-r.maxOverzooming,this._source.minzoom),s=Math.max(a+r.maxUnderzooming,this._source.minzoom),l=this._updateRetainedTiles(i,a);if(It(this._source.type)){for(var c={},u={},f=0,h=Object.keys(l);fthis._source.maxzoom){var m=d.children(this._source.maxzoom)[0],v=this.getTile(m);if(v&&v.hasData()){n[m.key]=m;continue}}else{var y=d.children(this._source.maxzoom);if(n[y[0].key]&&n[y[1].key]&&n[y[2].key]&&n[y[3].key])continue}for(var x=g.wasRequested(),b=d.overscaledZ-1;b>=a;--b){var _=d.scaledTo(b);if(i[_.key])break;if(i[_.key]=!0,!(g=this.getTile(_))&&x&&(g=this._addTile(_)),g&&(n[_.key]=_,x=g.wasRequested(),g.hasData()))break}}}return n},r.prototype._updateLoadedParentTileCache=function(){for(var t in this._loadedParentTiles={},this._tiles){for(var e=[],r=void 0,n=this._tiles[t].tileID;n.overscaledZ>0;){if(n.key in this._loadedParentTiles){r=this._loadedParentTiles[n.key];break}e.push(n.key);var i=n.scaledTo(n.overscaledZ-1);if(r=this._getLoadedTile(i))break;n=i}for(var a=0,o=e;a0||(e.hasData()&&\"reloading\"!==e.state?this._cache.add(e.tileID,e,e.getExpiryTimeout()):(e.aborted=!0,this._abortTile(e),this._unloadTile(e))))},r.prototype.clearTiles=function(){for(var t in this._shouldReloadOnResume=!1,this._paused=!1,this._tiles)this._removeTile(t);this._cache.reset()},r.prototype.tilesIn=function(e,r,n){var i=this,a=[],o=this.transform;if(!o)return a;for(var s=n?o.getCameraQueryGeometry(e):e,l=e.map((function(t){return o.pointCoordinate(t)})),c=s.map((function(t){return o.pointCoordinate(t)})),u=this.getIds(),f=1/0,h=1/0,p=-1/0,d=-1/0,g=0,m=c;g=0&&v[1].y+m>=0){var y=l.map((function(t){return s.getTilePoint(t)})),x=c.map((function(t){return s.getTilePoint(t)}));a.push({tile:n,tileID:s,queryGeometry:y,cameraQueryGeometry:x,scale:g})}}},x=0;x=t.browser.now())return!0}return!1},r.prototype.setFeatureState=function(t,e,r){t=t||\"_geojsonTileLayer\",this._state.updateState(t,e,r)},r.prototype.removeFeatureState=function(t,e,r){t=t||\"_geojsonTileLayer\",this._state.removeFeatureState(t,e,r)},r.prototype.getFeatureState=function(t,e){return t=t||\"_geojsonTileLayer\",this._state.getState(t,e)},r.prototype.setDependencies=function(t,e,r){var n=this._tiles[t];n&&n.setDependencies(e,r)},r.prototype.reloadTilesForDependencies=function(t,e){for(var r in this._tiles){this._tiles[r].hasDependency(t,e)&&this._reloadTile(r,\"reloading\")}this._cache.filter((function(r){return!r.hasDependency(t,e)}))},r}(t.Evented);function Pt(t,e){var r=Math.abs(2*t.wrap)-+(t.wrap<0),n=Math.abs(2*e.wrap)-+(e.wrap<0);return t.overscaledZ-e.overscaledZ||n-r||e.canonical.y-t.canonical.y||e.canonical.x-t.canonical.x}function It(t){return\"raster\"===t||\"image\"===t||\"video\"===t}function Ot(){return new t.window.Worker(Zi.workerUrl)}Ct.maxOverzooming=10,Ct.maxUnderzooming=3;var zt=\"mapboxgl_preloaded_worker_pool\",Dt=function(){this.active={}};Dt.prototype.acquire=function(t){if(!this.workers)for(this.workers=[];this.workers.length0?(i-o)/s:0;return this.points[a].mult(1-l).add(this.points[r].mult(l))};var Kt=function(t,e,r){var n=this.boxCells=[],i=this.circleCells=[];this.xCellCount=Math.ceil(t/r),this.yCellCount=Math.ceil(e/r);for(var a=0;a=-e[0]&&r<=e[0]&&n>=-e[1]&&n<=e[1]}function ne(e,r,n,i,a,o,s,l){var c=i?e.textSizeData:e.iconSizeData,u=t.evaluateSizeForZoom(c,n.transform.zoom),f=[256/n.width*2+1,256/n.height*2+1],h=i?e.text.dynamicLayoutVertexArray:e.icon.dynamicLayoutVertexArray;h.clear();for(var p=e.lineVertexArray,d=i?e.text.placedSymbolArray:e.icon.placedSymbolArray,g=n.transform.width/n.transform.height,m=!1,v=0;vMath.abs(n.x-r.x)*i)return{useVertical:!0};return(e===t.WritingMode.vertical?r.yn.x)?{needsFlipping:!0}:null}function oe(e,r,n,i,a,o,s,l,c,u,f,h,p,d){var g,m=r/24,v=e.lineOffsetX*m,y=e.lineOffsetY*m;if(e.numGlyphs>1){var x=e.glyphStartIndex+e.numGlyphs,b=e.lineStartIndex,_=e.lineStartIndex+e.lineLength,w=ie(m,l,v,y,n,f,h,e,c,o,p);if(!w)return{notEnoughRoom:!0};var T=te(w.first.point,s).point,k=te(w.last.point,s).point;if(i&&!n){var A=ae(e.writingMode,T,k,d);if(A)return A}g=[w.first];for(var M=e.glyphStartIndex+1;M0?C.point:se(h,L,S,1,a),I=ae(e.writingMode,S,P,d);if(I)return I}var O=le(m*l.getoffsetX(e.glyphStartIndex),v,y,n,f,h,e.segment,e.lineStartIndex,e.lineStartIndex+e.lineLength,c,o,p);if(!O)return{notEnoughRoom:!0};g=[O]}for(var z=0,D=g;z0?1:-1,g=0;i&&(d*=-1,g=Math.PI),d<0&&(g+=Math.PI);for(var m=d>0?l+s:l+s+1,v=a,y=a,x=0,b=0,_=Math.abs(p),w=[];x+b<=_;){if((m+=d)=c)return null;if(y=v,w.push(v),void 0===(v=h[m])){var T=new t.Point(u.getx(m),u.gety(m)),k=te(T,f);if(k.signedDistanceFromCamera>0)v=h[m]=k.point;else{var A=m-d;v=se(0===x?o:new t.Point(u.getx(A),u.gety(A)),T,y,_-x+1,f)}}x+=b,b=y.dist(v)}var M=(_-x)/b,S=v.sub(y),E=S.mult(M)._add(y);E._add(S._unit()._perp()._mult(n*d));var L=g+Math.atan2(v.y-y.y,v.x-y.x);return w.push(E),{point:E,angle:L,path:w}}Kt.prototype.keysLength=function(){return this.boxKeys.length+this.circleKeys.length},Kt.prototype.insert=function(t,e,r,n,i){this._forEachCell(e,r,n,i,this._insertBoxCell,this.boxUid++),this.boxKeys.push(t),this.bboxes.push(e),this.bboxes.push(r),this.bboxes.push(n),this.bboxes.push(i)},Kt.prototype.insertCircle=function(t,e,r,n){this._forEachCell(e-n,r-n,e+n,r+n,this._insertCircleCell,this.circleUid++),this.circleKeys.push(t),this.circles.push(e),this.circles.push(r),this.circles.push(n)},Kt.prototype._insertBoxCell=function(t,e,r,n,i,a){this.boxCells[i].push(a)},Kt.prototype._insertCircleCell=function(t,e,r,n,i,a){this.circleCells[i].push(a)},Kt.prototype._query=function(t,e,r,n,i,a){if(r<0||t>this.width||n<0||e>this.height)return!i&&[];var o=[];if(t<=0&&e<=0&&this.width<=r&&this.height<=n){if(i)return!0;for(var s=0;s0:o},Kt.prototype._queryCircle=function(t,e,r,n,i){var a=t-r,o=t+r,s=e-r,l=e+r;if(o<0||a>this.width||l<0||s>this.height)return!n&&[];var c=[],u={hitTest:n,circle:{x:t,y:e,radius:r},seenUids:{box:{},circle:{}}};return this._forEachCell(a,s,o,l,this._queryCellCircle,c,u,i),n?c.length>0:c},Kt.prototype.query=function(t,e,r,n,i){return this._query(t,e,r,n,!1,i)},Kt.prototype.hitTest=function(t,e,r,n,i){return this._query(t,e,r,n,!0,i)},Kt.prototype.hitTestCircle=function(t,e,r,n){return this._queryCircle(t,e,r,!0,n)},Kt.prototype._queryCell=function(t,e,r,n,i,a,o,s){var l=o.seenUids,c=this.boxCells[i];if(null!==c)for(var u=this.bboxes,f=0,h=c;f=u[d+0]&&n>=u[d+1]&&(!s||s(this.boxKeys[p]))){if(o.hitTest)return a.push(!0),!0;a.push({key:this.boxKeys[p],x1:u[d],y1:u[d+1],x2:u[d+2],y2:u[d+3]})}}}var g=this.circleCells[i];if(null!==g)for(var m=this.circles,v=0,y=g;vo*o+s*s},Kt.prototype._circleAndRectCollide=function(t,e,r,n,i,a,o){var s=(a-n)/2,l=Math.abs(t-(n+s));if(l>s+r)return!1;var c=(o-i)/2,u=Math.abs(e-(i+c));if(u>c+r)return!1;if(l<=s||u<=c)return!0;var f=l-s,h=u-c;return f*f+h*h<=r*r};var ce=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function ue(t,e){for(var r=0;r=1;P--)C.push(E.path[P]);for(var I=1;I0){for(var R=C[0].clone(),F=C[0].clone(),B=1;B=A.x&&F.x<=M.x&&R.y>=A.y&&F.y<=M.y?[C]:F.xM.x||F.yM.y?[]:t.clipLine([C],A.x,A.y,M.x,M.y)}for(var N=0,j=D;N=this.screenRightBoundary||n<100||e>this.screenBottomBoundary},he.prototype.isInsideGrid=function(t,e,r,n){return r>=0&&t=0&&e0)return this.prevPlacement&&this.prevPlacement.variableOffsets[f.crossTileID]&&this.prevPlacement.placements[f.crossTileID]&&this.prevPlacement.placements[f.crossTileID].text&&(g=this.prevPlacement.variableOffsets[f.crossTileID].anchor),this.variableOffsets[f.crossTileID]={textOffset:m,width:r,height:n,anchor:t,textBoxScale:i,prevAnchor:g},this.markUsedJustification(h,t,f,p),h.allowVerticalPlacement&&(this.markUsedOrientation(h,p,f),this.placedOrientations[f.crossTileID]=p),{shift:v,placedGlyphBoxes:y}},we.prototype.placeLayerBucketPart=function(e,r,n){var i=this,a=e.parameters,o=a.bucket,s=a.layout,l=a.posMatrix,c=a.textLabelPlaneMatrix,u=a.labelToScreenMatrix,f=a.textPixelRatio,h=a.holdingForFade,p=a.collisionBoxArray,d=a.partiallyEvaluatedTextSize,g=a.collisionGroup,m=s.get(\"text-optional\"),v=s.get(\"icon-optional\"),y=s.get(\"text-allow-overlap\"),x=s.get(\"icon-allow-overlap\"),b=\"map\"===s.get(\"text-rotation-alignment\"),_=\"map\"===s.get(\"text-pitch-alignment\"),w=\"none\"!==s.get(\"icon-text-fit\"),T=\"viewport-y\"===s.get(\"symbol-z-order\"),k=y&&(x||!o.hasIconData()||v),A=x&&(y||!o.hasTextData()||m);!o.collisionArrays&&p&&o.deserializeCollisionBoxes(p);var M=function(e,a){if(!r[e.crossTileID])if(h)i.placements[e.crossTileID]=new me(!1,!1,!1);else{var p,T=!1,M=!1,S=!0,E=null,L={box:null,offscreen:null},C={box:null,offscreen:null},P=null,I=null,O=0,z=0,D=0;a.textFeatureIndex?O=a.textFeatureIndex:e.useRuntimeCollisionCircles&&(O=e.featureIndex),a.verticalTextFeatureIndex&&(z=a.verticalTextFeatureIndex);var R=a.textBox;if(R){var F=function(r){var n=t.WritingMode.horizontal;if(o.allowVerticalPlacement&&!r&&i.prevPlacement){var a=i.prevPlacement.placedOrientations[e.crossTileID];a&&(i.placedOrientations[e.crossTileID]=a,n=a,i.markUsedOrientation(o,n,e))}return n},B=function(r,n){if(o.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&a.verticalTextBox)for(var i=0,s=o.writingModes;i0&&(N=N.filter((function(t){return t!==j.anchor}))).unshift(j.anchor)}var U=function(t,r,n){for(var a=t.x2-t.x1,s=t.y2-t.y1,c=e.textBoxScale,u=w&&!x?r:null,h={box:[],offscreen:!1},p=y?2*N.length:N.length,d=0;d=N.length,k=i.attemptAnchorPlacement(m,t,a,s,c,b,_,f,l,g,v,e,o,n,u);if(k&&(h=k.placedGlyphBoxes)&&h.box&&h.box.length){T=!0,E=k.shift;break}}return h};B((function(){return U(R,a.iconBox,t.WritingMode.horizontal)}),(function(){var r=a.verticalTextBox,n=L&&L.box&&L.box.length;return o.allowVerticalPlacement&&!n&&e.numVerticalGlyphVertices>0&&r?U(r,a.verticalIconBox,t.WritingMode.vertical):{box:null,offscreen:null}})),L&&(T=L.box,S=L.offscreen);var V=F(L&&L.box);if(!T&&i.prevPlacement){var H=i.prevPlacement.variableOffsets[e.crossTileID];H&&(i.variableOffsets[e.crossTileID]=H,i.markUsedJustification(o,H.anchor,e,V))}}else{var q=function(t,r){var n=i.collisionIndex.placeCollisionBox(t,y,f,l,g.predicate);return n&&n.box&&n.box.length&&(i.markUsedOrientation(o,r,e),i.placedOrientations[e.crossTileID]=r),n};B((function(){return q(R,t.WritingMode.horizontal)}),(function(){var r=a.verticalTextBox;return o.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&r?q(r,t.WritingMode.vertical):{box:null,offscreen:null}})),F(L&&L.box&&L.box.length)}}if(T=(p=L)&&p.box&&p.box.length>0,S=p&&p.offscreen,e.useRuntimeCollisionCircles){var G=o.text.placedSymbolArray.get(e.centerJustifiedTextSymbolIndex),Y=t.evaluateSizeForFeature(o.textSizeData,d,G),W=s.get(\"text-padding\"),X=e.collisionCircleDiameter;P=i.collisionIndex.placeCollisionCircles(y,G,o.lineVertexArray,o.glyphOffsetArray,Y,l,c,u,n,_,g.predicate,X,W),T=y||P.circles.length>0&&!P.collisionDetected,S=S&&P.offscreen}if(a.iconFeatureIndex&&(D=a.iconFeatureIndex),a.iconBox){var Z=function(t){var e=w&&E?_e(t,E.x,E.y,b,_,i.transform.angle):t;return i.collisionIndex.placeCollisionBox(e,x,f,l,g.predicate)};M=C&&C.box&&C.box.length&&a.verticalIconBox?(I=Z(a.verticalIconBox)).box.length>0:(I=Z(a.iconBox)).box.length>0,S=S&&I.offscreen}var J=m||0===e.numHorizontalGlyphVertices&&0===e.numVerticalGlyphVertices,K=v||0===e.numIconVertices;if(J||K?K?J||(M=M&&T):T=M&&T:M=T=M&&T,T&&p&&p.box&&(C&&C.box&&z?i.collisionIndex.insertCollisionBox(p.box,s.get(\"text-ignore-placement\"),o.bucketInstanceId,z,g.ID):i.collisionIndex.insertCollisionBox(p.box,s.get(\"text-ignore-placement\"),o.bucketInstanceId,O,g.ID)),M&&I&&i.collisionIndex.insertCollisionBox(I.box,s.get(\"icon-ignore-placement\"),o.bucketInstanceId,D,g.ID),P&&(T&&i.collisionIndex.insertCollisionCircles(P.circles,s.get(\"text-ignore-placement\"),o.bucketInstanceId,O,g.ID),n)){var Q=o.bucketInstanceId,$=i.collisionCircleArrays[Q];void 0===$&&($=i.collisionCircleArrays[Q]=new ve);for(var tt=0;tt=0;--E){var L=S[E];M(o.symbolInstances.get(L),o.collisionArrays[L])}else for(var C=e.symbolInstanceStart;C=0&&(e.text.placedSymbolArray.get(c).crossTileID=a>=0&&c!==a?0:n.crossTileID)}},we.prototype.markUsedOrientation=function(e,r,n){for(var i=r===t.WritingMode.horizontal||r===t.WritingMode.horizontalOnly?r:0,a=r===t.WritingMode.vertical?r:0,o=0,s=[n.leftJustifiedTextSymbolIndex,n.centerJustifiedTextSymbolIndex,n.rightJustifiedTextSymbolIndex];o0||l>0,x=a.numIconVertices>0,b=i.placedOrientations[a.crossTileID],_=b===t.WritingMode.vertical,w=b===t.WritingMode.horizontal||b===t.WritingMode.horizontalOnly;if(y){var T=Pe(v.text),k=_?Ie:T;d(e.text,s,k);var A=w?Ie:T;d(e.text,l,A);var M=v.text.isHidden();[a.rightJustifiedTextSymbolIndex,a.centerJustifiedTextSymbolIndex,a.leftJustifiedTextSymbolIndex].forEach((function(t){t>=0&&(e.text.placedSymbolArray.get(t).hidden=M||_?1:0)})),a.verticalPlacedTextSymbolIndex>=0&&(e.text.placedSymbolArray.get(a.verticalPlacedTextSymbolIndex).hidden=M||w?1:0);var S=i.variableOffsets[a.crossTileID];S&&i.markUsedJustification(e,S.anchor,a,b);var E=i.placedOrientations[a.crossTileID];E&&(i.markUsedJustification(e,\"left\",a,E),i.markUsedOrientation(e,E,a))}if(x){var L=Pe(v.icon),C=!(h&&a.verticalPlacedIconSymbolIndex&&_);if(a.placedIconSymbolIndex>=0){var P=C?L:Ie;d(e.icon,a.numIconVertices,P),e.icon.placedSymbolArray.get(a.placedIconSymbolIndex).hidden=v.icon.isHidden()}if(a.verticalPlacedIconSymbolIndex>=0){var I=C?Ie:L;d(e.icon,a.numVerticalIconVertices,I),e.icon.placedSymbolArray.get(a.verticalPlacedIconSymbolIndex).hidden=v.icon.isHidden()}}if(e.hasIconCollisionBoxData()||e.hasTextCollisionBoxData()){var O=e.collisionArrays[n];if(O){var z=new t.Point(0,0);if(O.textBox||O.verticalTextBox){var D=!0;if(c){var R=i.variableOffsets[g];R?(z=be(R.anchor,R.width,R.height,R.textOffset,R.textBoxScale),u&&z._rotate(f?i.transform.angle:-i.transform.angle)):D=!1}O.textBox&&Te(e.textCollisionBox.collisionVertexArray,v.text.placed,!D||_,z.x,z.y),O.verticalTextBox&&Te(e.textCollisionBox.collisionVertexArray,v.text.placed,!D||w,z.x,z.y)}var F=Boolean(!w&&O.verticalIconBox);O.iconBox&&Te(e.iconCollisionBox.collisionVertexArray,v.icon.placed,F,h?z.x:0,h?z.y:0),O.verticalIconBox&&Te(e.iconCollisionBox.collisionVertexArray,v.icon.placed,!F,h?z.x:0,h?z.y:0)}}},m=0;mt},we.prototype.setStale=function(){this.stale=!0};var ke=Math.pow(2,25),Ae=Math.pow(2,24),Me=Math.pow(2,17),Se=Math.pow(2,16),Ee=Math.pow(2,9),Le=Math.pow(2,8),Ce=Math.pow(2,1);function Pe(t){if(0===t.opacity&&!t.placed)return 0;if(1===t.opacity&&t.placed)return 4294967295;var e=t.placed?1:0,r=Math.floor(127*t.opacity);return r*ke+e*Ae+r*Me+e*Se+r*Ee+e*Le+r*Ce+e}var Ie=0,Oe=function(t){this._sortAcrossTiles=\"viewport-y\"!==t.layout.get(\"symbol-z-order\")&&void 0!==t.layout.get(\"symbol-sort-key\").constantOr(1),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[]};Oe.prototype.continuePlacement=function(t,e,r,n,i){for(var a=this._bucketParts;this._currentTileIndex2};this._currentPlacementIndex>=0;){var s=r[e[this._currentPlacementIndex]],l=this.placement.collisionIndex.transform.zoom;if(\"symbol\"===s.type&&(!s.minzoom||s.minzoom<=l)&&(!s.maxzoom||s.maxzoom>l)){if(this._inProgressLayer||(this._inProgressLayer=new Oe(s)),this._inProgressLayer.continuePlacement(n[s.source],this.placement,this._showCollisionBoxes,s,o))return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0},ze.prototype.commit=function(t){return this.placement.commit(t),this.placement};var De=512/t.EXTENT/2,Re=function(t,e,r){this.tileID=t,this.indexedSymbolInstances={},this.bucketInstanceId=r;for(var n=0;nt.overscaledZ)for(var s in o){var l=o[s];l.tileID.isChildOf(t)&&l.findMatches(e.symbolInstances,t,i)}else{var c=o[t.scaledTo(Number(a)).key];c&&c.findMatches(e.symbolInstances,t,i)}}for(var u=0;u1?\"@2x\":\"\",l=t.getJSON(r.transformRequest(r.normalizeSpriteURL(e,s,\".json\"),t.ResourceType.SpriteJSON),(function(t,e){l=null,o||(o=t,i=e,u())})),c=t.getImage(r.transformRequest(r.normalizeSpriteURL(e,s,\".png\"),t.ResourceType.SpriteImage),(function(t,e){c=null,o||(o=t,a=e,u())}));function u(){if(o)n(o);else if(i&&a){var e=t.browser.getImageData(a),r={};for(var s in i){var l=i[s],c=l.width,u=l.height,f=l.x,h=l.y,p=l.sdf,d=l.pixelRatio,g=l.stretchX,m=l.stretchY,v=l.content,y=new t.RGBAImage({width:c,height:u});t.RGBAImage.copy(e,y,{x:f,y:h},{x:0,y:0},{width:c,height:u}),r[s]={data:y,pixelRatio:d,sdf:p,stretchX:g,stretchY:m,content:v}}n(null,r)}}return{cancel:function(){l&&(l.cancel(),l=null),c&&(c.cancel(),c=null)}}}(e,this.map._requestManager,(function(e,n){if(r._spriteRequest=null,e)r.fire(new t.ErrorEvent(e));else if(n)for(var i in n)r.imageManager.addImage(i,n[i]);r.imageManager.setLoaded(!0),r._availableImages=r.imageManager.listImages(),r.dispatcher.broadcast(\"setImages\",r._availableImages),r.fire(new t.Event(\"data\",{dataType:\"style\"}))}))},r.prototype._validateLayer=function(e){var r=this.sourceCaches[e.source];if(r){var n=e.sourceLayer;if(n){var i=r.getSource();(\"geojson\"===i.type||i.vectorLayerIds&&-1===i.vectorLayerIds.indexOf(n))&&this.fire(new t.ErrorEvent(new Error('Source layer \"'+n+'\" does not exist on source \"'+i.id+'\" as specified by style layer \"'+e.id+'\"')))}}},r.prototype.loaded=function(){if(!this._loaded)return!1;if(Object.keys(this._updatedSources).length)return!1;for(var t in this.sourceCaches)if(!this.sourceCaches[t].loaded())return!1;return!!this.imageManager.isLoaded()},r.prototype._serializeLayers=function(t){for(var e=[],r=0,n=t;r0)throw new Error(\"Unimplemented: \"+i.map((function(t){return t.command})).join(\", \")+\".\");return n.forEach((function(t){\"setTransition\"!==t.command&&r[t.command].apply(r,t.args)})),this.stylesheet=e,!0},r.prototype.addImage=function(e,r){if(this.getImage(e))return this.fire(new t.ErrorEvent(new Error(\"An image with this name already exists.\")));this.imageManager.addImage(e,r),this._availableImages=this.imageManager.listImages(),this._changedImages[e]=!0,this._changed=!0,this.fire(new t.Event(\"data\",{dataType:\"style\"}))},r.prototype.updateImage=function(t,e){this.imageManager.updateImage(t,e)},r.prototype.getImage=function(t){return this.imageManager.getImage(t)},r.prototype.removeImage=function(e){if(!this.getImage(e))return this.fire(new t.ErrorEvent(new Error(\"No image with this name exists.\")));this.imageManager.removeImage(e),this._availableImages=this.imageManager.listImages(),this._changedImages[e]=!0,this._changed=!0,this.fire(new t.Event(\"data\",{dataType:\"style\"}))},r.prototype.listImages=function(){return this._checkLoaded(),this.imageManager.listImages()},r.prototype.addSource=function(e,r,n){var i=this;if(void 0===n&&(n={}),this._checkLoaded(),void 0!==this.sourceCaches[e])throw new Error(\"There is already a source with this ID\");if(!r.type)throw new Error(\"The type property must be defined, but the only the following properties were given: \"+Object.keys(r).join(\", \")+\".\");if(!([\"vector\",\"raster\",\"geojson\",\"video\",\"image\"].indexOf(r.type)>=0)||!this._validate(t.validateStyle.source,\"sources.\"+e,r,null,n)){this.map&&this.map._collectResourceTiming&&(r.collectResourceTiming=!0);var a=this.sourceCaches[e]=new Ct(e,r,this.dispatcher);a.style=this,a.setEventedParent(this,(function(){return{isSourceLoaded:i.loaded(),source:a.serialize(),sourceId:e}})),a.onAdd(this.map),this._changed=!0}},r.prototype.removeSource=function(e){if(this._checkLoaded(),void 0===this.sourceCaches[e])throw new Error(\"There is no source with this ID\");for(var r in this._layers)if(this._layers[r].source===e)return this.fire(new t.ErrorEvent(new Error('Source \"'+e+'\" cannot be removed while layer \"'+r+'\" is using it.')));var n=this.sourceCaches[e];delete this.sourceCaches[e],delete this._updatedSources[e],n.fire(new t.Event(\"data\",{sourceDataType:\"metadata\",dataType:\"source\",sourceId:e})),n.setEventedParent(null),n.clearTiles(),n.onRemove&&n.onRemove(this.map),this._changed=!0},r.prototype.setGeoJSONSourceData=function(t,e){this._checkLoaded(),this.sourceCaches[t].getSource().setData(e),this._changed=!0},r.prototype.getSource=function(t){return this.sourceCaches[t]&&this.sourceCaches[t].getSource()},r.prototype.addLayer=function(e,r,n){void 0===n&&(n={}),this._checkLoaded();var i=e.id;if(this.getLayer(i))this.fire(new t.ErrorEvent(new Error('Layer with id \"'+i+'\" already exists on this map')));else{var a;if(\"custom\"===e.type){if(je(this,t.validateCustomStyleLayer(e)))return;a=t.createStyleLayer(e)}else{if(\"object\"==typeof e.source&&(this.addSource(i,e.source),e=t.clone$1(e),e=t.extend(e,{source:i})),this._validate(t.validateStyle.layer,\"layers.\"+i,e,{arrayIndex:-1},n))return;a=t.createStyleLayer(e),this._validateLayer(a),a.setEventedParent(this,{layer:{id:i}}),this._serializedLayers[a.id]=a.serialize()}var o=r?this._order.indexOf(r):this._order.length;if(r&&-1===o)this.fire(new t.ErrorEvent(new Error('Layer with id \"'+r+'\" does not exist on this map.')));else{if(this._order.splice(o,0,i),this._layerOrderChanged=!0,this._layers[i]=a,this._removedLayers[i]&&a.source&&\"custom\"!==a.type){var s=this._removedLayers[i];delete this._removedLayers[i],s.type!==a.type?this._updatedSources[a.source]=\"clear\":(this._updatedSources[a.source]=\"reload\",this.sourceCaches[a.source].pause())}this._updateLayer(a),a.onAdd&&a.onAdd(this.map)}}},r.prototype.moveLayer=function(e,r){if(this._checkLoaded(),this._changed=!0,this._layers[e]){if(e!==r){var n=this._order.indexOf(e);this._order.splice(n,1);var i=r?this._order.indexOf(r):this._order.length;r&&-1===i?this.fire(new t.ErrorEvent(new Error('Layer with id \"'+r+'\" does not exist on this map.'))):(this._order.splice(i,0,e),this._layerOrderChanged=!0)}}else this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be moved.\")))},r.prototype.removeLayer=function(e){this._checkLoaded();var r=this._layers[e];if(r){r.setEventedParent(null);var n=this._order.indexOf(e);this._order.splice(n,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[e]=r,delete this._layers[e],delete this._serializedLayers[e],delete this._updatedLayers[e],delete this._updatedPaintProps[e],r.onRemove&&r.onRemove(this.map)}else this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be removed.\")))},r.prototype.getLayer=function(t){return this._layers[t]},r.prototype.hasLayer=function(t){return t in this._layers},r.prototype.setLayerZoomRange=function(e,r,n){this._checkLoaded();var i=this.getLayer(e);i?i.minzoom===r&&i.maxzoom===n||(null!=r&&(i.minzoom=r),null!=n&&(i.maxzoom=n),this._updateLayer(i)):this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot have zoom extent.\")))},r.prototype.setFilter=function(e,r,n){void 0===n&&(n={}),this._checkLoaded();var i=this.getLayer(e);if(i){if(!t.deepEqual(i.filter,r))return null==r?(i.filter=void 0,void this._updateLayer(i)):void(this._validate(t.validateStyle.filter,\"layers.\"+i.id+\".filter\",r,null,n)||(i.filter=t.clone$1(r),this._updateLayer(i)))}else this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be filtered.\")))},r.prototype.getFilter=function(e){return t.clone$1(this.getLayer(e).filter)},r.prototype.setLayoutProperty=function(e,r,n,i){void 0===i&&(i={}),this._checkLoaded();var a=this.getLayer(e);a?t.deepEqual(a.getLayoutProperty(r),n)||(a.setLayoutProperty(r,n,i),this._updateLayer(a)):this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be styled.\")))},r.prototype.getLayoutProperty=function(e,r){var n=this.getLayer(e);if(n)return n.getLayoutProperty(r);this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style.\")))},r.prototype.setPaintProperty=function(e,r,n,i){void 0===i&&(i={}),this._checkLoaded();var a=this.getLayer(e);a?t.deepEqual(a.getPaintProperty(r),n)||(a.setPaintProperty(r,n,i)&&this._updateLayer(a),this._changed=!0,this._updatedPaintProps[e]=!0):this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be styled.\")))},r.prototype.getPaintProperty=function(t,e){return this.getLayer(t).getPaintProperty(e)},r.prototype.setFeatureState=function(e,r){this._checkLoaded();var n=e.source,i=e.sourceLayer,a=this.sourceCaches[n];if(void 0!==a){var o=a.getSource().type;\"geojson\"===o&&i?this.fire(new t.ErrorEvent(new Error(\"GeoJSON sources cannot have a sourceLayer parameter.\"))):\"vector\"!==o||i?(void 0===e.id&&this.fire(new t.ErrorEvent(new Error(\"The feature id parameter must be provided.\"))),a.setFeatureState(i,e.id,r)):this.fire(new t.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")))}else this.fire(new t.ErrorEvent(new Error(\"The source '\"+n+\"' does not exist in the map's style.\")))},r.prototype.removeFeatureState=function(e,r){this._checkLoaded();var n=e.source,i=this.sourceCaches[n];if(void 0!==i){var a=i.getSource().type,o=\"vector\"===a?e.sourceLayer:void 0;\"vector\"!==a||o?r&&\"string\"!=typeof e.id&&\"number\"!=typeof e.id?this.fire(new t.ErrorEvent(new Error(\"A feature id is required to remove its specific state property.\"))):i.removeFeatureState(o,e.id,r):this.fire(new t.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")))}else this.fire(new t.ErrorEvent(new Error(\"The source '\"+n+\"' does not exist in the map's style.\")))},r.prototype.getFeatureState=function(e){this._checkLoaded();var r=e.source,n=e.sourceLayer,i=this.sourceCaches[r];if(void 0!==i){if(\"vector\"!==i.getSource().type||n)return void 0===e.id&&this.fire(new t.ErrorEvent(new Error(\"The feature id parameter must be provided.\"))),i.getFeatureState(n,e.id);this.fire(new t.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")))}else this.fire(new t.ErrorEvent(new Error(\"The source '\"+r+\"' does not exist in the map's style.\")))},r.prototype.getTransition=function(){return t.extend({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)},r.prototype.serialize=function(){return t.filterObject({version:this.stylesheet.version,name:this.stylesheet.name,metadata:this.stylesheet.metadata,light:this.stylesheet.light,center:this.stylesheet.center,zoom:this.stylesheet.zoom,bearing:this.stylesheet.bearing,pitch:this.stylesheet.pitch,sprite:this.stylesheet.sprite,glyphs:this.stylesheet.glyphs,transition:this.stylesheet.transition,sources:t.mapObject(this.sourceCaches,(function(t){return t.serialize()})),layers:this._serializeLayers(this._order)},(function(t){return void 0!==t}))},r.prototype._updateLayer=function(t){this._updatedLayers[t.id]=!0,t.source&&!this._updatedSources[t.source]&&\"raster\"!==this.sourceCaches[t.source].getSource().type&&(this._updatedSources[t.source]=\"reload\",this.sourceCaches[t.source].pause()),this._changed=!0},r.prototype._flattenAndSortRenderedFeatures=function(t){for(var e=this,r=function(t){return\"fill-extrusion\"===e._layers[t].type},n={},i=[],a=this._order.length-1;a>=0;a--){var o=this._order[a];if(r(o)){n[o]=a;for(var s=0,l=t;s=0;d--){var g=this._order[d];if(r(g))for(var m=i.length-1;m>=0;m--){var v=i[m].feature;if(n[v.layer.id] 0.5) {gl_FragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {gl_FragColor*=.1;}}\",\"attribute vec2 a_pos;attribute vec2 a_anchor_pos;attribute vec2 a_extrude;attribute vec2 a_placed;attribute vec2 a_shift;uniform mat4 u_matrix;uniform vec2 u_extrude_scale;uniform float u_camera_to_center_distance;varying float v_placed;varying float v_notUsed;void main() {vec4 projectedPoint=u_matrix*vec4(a_anchor_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);gl_Position=u_matrix*vec4(a_pos,0.0,1.0);gl_Position.xy+=(a_extrude+a_shift)*u_extrude_scale*gl_Position.w*collision_perspective_ratio;v_placed=a_placed.x;v_notUsed=a_placed.y;}\"),tr=yr(\"varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;void main() {float alpha=0.5*min(v_perspective_ratio,1.0);float stroke_radius=0.9*max(v_perspective_ratio,1.0);float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);gl_FragColor=color*alpha*opacity_t;}\",\"attribute vec2 a_pos;attribute float a_radius;attribute vec2 a_flags;uniform mat4 u_matrix;uniform mat4 u_inv_matrix;uniform vec2 u_viewport_size;uniform float u_camera_to_center_distance;varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;vec3 toTilePosition(vec2 screenPos) {vec4 rayStart=u_inv_matrix*vec4(screenPos,-1.0,1.0);vec4 rayEnd =u_inv_matrix*vec4(screenPos, 1.0,1.0);rayStart.xyz/=rayStart.w;rayEnd.xyz /=rayEnd.w;highp float t=(0.0-rayStart.z)/(rayEnd.z-rayStart.z);return mix(rayStart.xyz,rayEnd.xyz,t);}void main() {vec2 quadCenterPos=a_pos;float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(mix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;vec3 tilePos=toTilePosition(quadCenterPos);vec4 clipPos=u_matrix*vec4(tilePos,1.0);highp float camera_to_anchor_distance=clipPos.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_perspective_ratio=collision_perspective_ratio;v_collision=collision;gl_Position=vec4(clipPos.xyz/clipPos.w,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}\"),er=yr(\"uniform highp vec4 u_color;uniform sampler2D u_overlay;varying vec2 v_uv;void main() {vec4 overlay_color=texture2D(u_overlay,v_uv);gl_FragColor=mix(u_color,overlay_color,overlay_color.a);}\",\"attribute vec2 a_pos;varying vec2 v_uv;uniform mat4 u_matrix;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=u_matrix*vec4(a_pos*u_overlay_scale,0,1);}\"),rr=yr(\"#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float opacity\\ngl_FragColor=color*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float opacity\\ngl_Position=u_matrix*vec4(a_pos,0,1);}\"),nr=yr(\"varying vec2 v_pos;\\n#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 outline_color\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=outline_color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;uniform vec2 u_world;varying vec2 v_pos;\\n#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 outline_color\\n#pragma mapbox: initialize lowp float opacity\\ngl_Position=u_matrix*vec4(a_pos,0,1);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}\"),ir=yr(\"uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=mix(color1,color2,u_fade)*alpha*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;gl_Position=u_matrix*vec4(a_pos,0,1);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}\"),ar=yr(\"uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_fade)*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);}\"),or=yr(\"varying vec4 v_color;void main() {gl_FragColor=v_color;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec4 v_color;\\n#pragma mapbox: define highp float base\\n#pragma mapbox: define highp float height\\n#pragma mapbox: define highp vec4 color\\nvoid main() {\\n#pragma mapbox: initialize highp float base\\n#pragma mapbox: initialize highp float height\\n#pragma mapbox: initialize highp vec4 color\\nvec3 normal=a_normal_ed.xyz;base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);gl_Position=u_matrix*vec4(a_pos,t > 0.0 ? height : base,1);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal/16384.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}\"),sr=yr(\"uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float base\\n#pragma mapbox: initialize lowp float height\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);gl_FragColor=mixedColor*v_lighting;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float base\\n#pragma mapbox: initialize lowp float height\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);float z=t > 0.0 ? height : base;gl_Position=u_matrix*vec4(a_pos,z,1);vec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0\\n? a_pos\\n: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;}\"),lr=yr(\"#ifdef GL_ES\\nprecision highp float;\\n#endif\\nuniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform float u_maxzoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);float exaggeration=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;vec2 deriv=vec2((c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))/ pow(2.0,(u_zoom-u_maxzoom)*exaggeration+19.2562-u_zoom);gl_FragColor=clamp(vec4(deriv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}\"),cr=yr(\"uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent;\\n#define PI 3.141592653589793\\nvoid main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;}\"),ur=yr(\"uniform lowp float u_device_pixel_ratio;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);gl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_linesofar;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}\"),fr=yr(\"uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp float v_lineprogress;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture2D(u_image,vec2(v_lineprogress,0.5));gl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define MAX_LINE_DISTANCE 32767.0\\n#define scale 0.015873016\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_lineprogress;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_lineprogress=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0/MAX_LINE_DISTANCE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}\"),hr=yr(\"uniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture2D(u_image,pos_a),texture2D(u_image,pos_b),u_fade);gl_FragColor=color*alpha*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\n#define LINE_DISTANCE_SCALE 2.0\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}\"),pr=yr(\"uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform float u_sdfgamma;uniform float u_mix;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture2D(u_image,v_tex_a).a;float sdfdist_b=texture2D(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);alpha*=smoothstep(0.5-u_sdfgamma/floorwidth,0.5+u_sdfgamma/floorwidth,sdfdist);gl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\n#define LINE_DISTANCE_SCALE 2.0\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_patternscale_a;uniform float u_tex_y_a;uniform vec2 u_patternscale_b;uniform float u_tex_y_b;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_tex_a=vec2(a_linesofar*u_patternscale_a.x/floorwidth,normal.y*u_patternscale_a.y+u_tex_y_a);v_tex_b=vec2(a_linesofar*u_patternscale_b.x/floorwidth,normal.y*u_patternscale_b.y+u_tex_y_b);v_width2=vec2(outset,inset);}\"),dr=yr(\"uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);gl_FragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos0=(((a_texture_pos/8192.0)-0.5)/u_buffer_scale )+0.5;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}\"),gr=yr(\"uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity;\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\nlowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;varying vec2 v_tex;varying float v_fade_opacity;\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0),0.0,1.0);v_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;v_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));}\"),mr=yr(\"#define SDF_PX 8.0\\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nfloat EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;varying vec2 v_data0;varying vec3 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity);}\"),vr=yr(\"#define SDF_PX 8.0\\n#define SDF 1.0\\n#define ICON 0.0\\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nfloat fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\nreturn;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;varying vec4 v_data0;varying vec4 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}\");function yr(t,e){var r=/#pragma mapbox: ([\\w]+) ([\\w]+) ([\\w]+) ([\\w]+)/g,n={};return{fragmentSource:t=t.replace(r,(function(t,e,r,i,a){return n[a]=!0,\"define\"===e?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\nvarying \"+r+\" \"+i+\" \"+a+\";\\n#else\\nuniform \"+r+\" \"+i+\" u_\"+a+\";\\n#endif\\n\":\"\\n#ifdef HAS_UNIFORM_u_\"+a+\"\\n \"+r+\" \"+i+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\"})),vertexSource:e=e.replace(r,(function(t,e,r,i,a){var o=\"float\"===i?\"vec2\":\"vec4\",s=a.match(/color/)?\"color\":o;return n[a]?\"define\"===e?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\nuniform lowp float u_\"+a+\"_t;\\nattribute \"+r+\" \"+o+\" a_\"+a+\";\\nvarying \"+r+\" \"+i+\" \"+a+\";\\n#else\\nuniform \"+r+\" \"+i+\" u_\"+a+\";\\n#endif\\n\":\"vec4\"===s?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\n \"+a+\" = a_\"+a+\";\\n#else\\n \"+r+\" \"+i+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\":\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\n \"+a+\" = unpack_mix_\"+s+\"(a_\"+a+\", u_\"+a+\"_t);\\n#else\\n \"+r+\" \"+i+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\":\"define\"===e?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\nuniform lowp float u_\"+a+\"_t;\\nattribute \"+r+\" \"+o+\" a_\"+a+\";\\n#else\\nuniform \"+r+\" \"+i+\" u_\"+a+\";\\n#endif\\n\":\"vec4\"===s?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\n \"+r+\" \"+i+\" \"+a+\" = a_\"+a+\";\\n#else\\n \"+r+\" \"+i+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\":\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\n \"+r+\" \"+i+\" \"+a+\" = unpack_mix_\"+s+\"(a_\"+a+\", u_\"+a+\"_t);\\n#else\\n \"+r+\" \"+i+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\"}))}}var xr=Object.freeze({__proto__:null,prelude:Ye,background:We,backgroundPattern:Xe,circle:Ze,clippingMask:Je,heatmap:Ke,heatmapTexture:Qe,collisionBox:$e,collisionCircle:tr,debug:er,fill:rr,fillOutline:nr,fillOutlinePattern:ir,fillPattern:ar,fillExtrusion:or,fillExtrusionPattern:sr,hillshadePrepare:lr,hillshade:cr,line:ur,lineGradient:fr,linePattern:hr,lineSDF:pr,raster:dr,symbolIcon:gr,symbolSDF:mr,symbolTextAndIcon:vr}),br=function(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null};br.prototype.bind=function(t,e,r,n,i,a,o,s){this.context=t;for(var l=this.boundPaintVertexBuffers.length!==n.length,c=0;!l&&c>16,s>>16],u_pixel_coord_lower:[65535&o,65535&s]}}_r.prototype.draw=function(t,e,r,n,i,a,o,s,l,c,u,f,h,p,d,g){var m,v=t.gl;if(!this.failedToCreate){for(var y in t.program.set(this.program),t.setDepthMode(r),t.setStencilMode(n),t.setColorMode(i),t.setCullFace(a),this.fixedUniforms)this.fixedUniforms[y].set(o[y]);p&&p.setUniforms(t,this.binderUniforms,f,{zoom:h});for(var x=(m={},m[v.LINES]=2,m[v.TRIANGLES]=3,m[v.LINE_STRIP]=1,m)[e],b=0,_=u.get();b<_.length;b+=1){var w=_[b],T=w.vaos||(w.vaos={});(T[s]||(T[s]=new br)).bind(t,this,l,p?p.getPaintVertexBuffers():[],c,w.vertexOffset,d,g),v.drawElements(e,w.primitiveLength*x,v.UNSIGNED_SHORT,w.primitiveOffset*x*2)}}};var Tr=function(e,r,n,i){var a=r.style.light,o=a.properties.get(\"position\"),s=[o.x,o.y,o.z],l=t.create$1();\"viewport\"===a.properties.get(\"anchor\")&&t.fromRotation(l,-r.transform.angle),t.transformMat3(s,s,l);var c=a.properties.get(\"color\");return{u_matrix:e,u_lightpos:s,u_lightintensity:a.properties.get(\"intensity\"),u_lightcolor:[c.r,c.g,c.b],u_vertical_gradient:+n,u_opacity:i}},kr=function(e,r,n,i,a,o,s){return t.extend(Tr(e,r,n,i),wr(o,r,s),{u_height_factor:-Math.pow(2,a.overscaledZ)/s.tileSize/8})},Ar=function(t){return{u_matrix:t}},Mr=function(e,r,n,i){return t.extend(Ar(e),wr(n,r,i))},Sr=function(t,e){return{u_matrix:t,u_world:e}},Er=function(e,r,n,i,a){return t.extend(Mr(e,r,n,i),{u_world:a})},Lr=function(e,r,n,i){var a,o,s=e.transform;if(\"map\"===i.paint.get(\"circle-pitch-alignment\")){var l=pe(n,1,s.zoom);a=!0,o=[l,l]}else a=!1,o=s.pixelsToGLUnits;return{u_camera_to_center_distance:s.cameraToCenterDistance,u_scale_with_map:+(\"map\"===i.paint.get(\"circle-pitch-scale\")),u_matrix:e.translatePosMatrix(r.posMatrix,n,i.paint.get(\"circle-translate\"),i.paint.get(\"circle-translate-anchor\")),u_pitch_with_map:+a,u_device_pixel_ratio:t.browser.devicePixelRatio,u_extrude_scale:o}},Cr=function(t,e,r){var n=pe(r,1,e.zoom),i=Math.pow(2,e.zoom-r.tileID.overscaledZ),a=r.tileID.overscaleFactor();return{u_matrix:t,u_camera_to_center_distance:e.cameraToCenterDistance,u_pixels_to_tile_units:n,u_extrude_scale:[e.pixelsToGLUnits[0]/(n*i),e.pixelsToGLUnits[1]/(n*i)],u_overscale_factor:a}},Pr=function(t,e,r){return{u_matrix:t,u_inv_matrix:e,u_camera_to_center_distance:r.cameraToCenterDistance,u_viewport_size:[r.width,r.height]}},Ir=function(t,e,r){return void 0===r&&(r=1),{u_matrix:t,u_color:e,u_overlay:0,u_overlay_scale:r}},Or=function(t){return{u_matrix:t}},zr=function(t,e,r,n){return{u_matrix:t,u_extrude_scale:pe(e,1,r),u_intensity:n}};function Dr(e,r){var n=Math.pow(2,r.canonical.z),i=r.canonical.y;return[new t.MercatorCoordinate(0,i/n).toLngLat().lat,new t.MercatorCoordinate(0,(i+1)/n).toLngLat().lat]}var Rr=function(e,r,n){var i=e.transform;return{u_matrix:Ur(e,r,n),u_ratio:1/pe(r,1,i.zoom),u_device_pixel_ratio:t.browser.devicePixelRatio,u_units_to_pixels:[1/i.pixelsToGLUnits[0],1/i.pixelsToGLUnits[1]]}},Fr=function(e,r,n){return t.extend(Rr(e,r,n),{u_image:0})},Br=function(e,r,n,i){var a=e.transform,o=jr(r,a);return{u_matrix:Ur(e,r,n),u_texsize:r.imageAtlasTexture.size,u_ratio:1/pe(r,1,a.zoom),u_device_pixel_ratio:t.browser.devicePixelRatio,u_image:0,u_scale:[o,i.fromScale,i.toScale],u_fade:i.t,u_units_to_pixels:[1/a.pixelsToGLUnits[0],1/a.pixelsToGLUnits[1]]}},Nr=function(e,r,n,i,a){var o=e.transform,s=e.lineAtlas,l=jr(r,o),c=\"round\"===n.layout.get(\"line-cap\"),u=s.getDash(i.from,c),f=s.getDash(i.to,c),h=u.width*a.fromScale,p=f.width*a.toScale;return t.extend(Rr(e,r,n),{u_patternscale_a:[l/h,-u.height/2],u_patternscale_b:[l/p,-f.height/2],u_sdfgamma:s.width/(256*Math.min(h,p)*t.browser.devicePixelRatio)/2,u_image:0,u_tex_y_a:u.y,u_tex_y_b:f.y,u_mix:a.t})};function jr(t,e){return 1/pe(t,1,e.tileZoom)}function Ur(t,e,r){return t.translatePosMatrix(e.tileID.posMatrix,e,r.paint.get(\"line-translate\"),r.paint.get(\"line-translate-anchor\"))}var Vr=function(t,e,r,n,i){return{u_matrix:t,u_tl_parent:e,u_scale_parent:r,u_buffer_scale:1,u_fade_t:n.mix,u_opacity:n.opacity*i.paint.get(\"raster-opacity\"),u_image0:0,u_image1:1,u_brightness_low:i.paint.get(\"raster-brightness-min\"),u_brightness_high:i.paint.get(\"raster-brightness-max\"),u_saturation_factor:(o=i.paint.get(\"raster-saturation\"),o>0?1-1/(1.001-o):-o),u_contrast_factor:(a=i.paint.get(\"raster-contrast\"),a>0?1/(1-a):1+a),u_spin_weights:Hr(i.paint.get(\"raster-hue-rotate\"))};var a,o};function Hr(t){t*=Math.PI/180;var e=Math.sin(t),r=Math.cos(t);return[(2*r+1)/3,(-Math.sqrt(3)*e-r+1)/3,(Math.sqrt(3)*e-r+1)/3]}var qr,Gr=function(t,e,r,n,i,a,o,s,l,c){var u=i.transform;return{u_is_size_zoom_constant:+(\"constant\"===t||\"source\"===t),u_is_size_feature_constant:+(\"constant\"===t||\"camera\"===t),u_size_t:e?e.uSizeT:0,u_size:e?e.uSize:0,u_camera_to_center_distance:u.cameraToCenterDistance,u_pitch:u.pitch/360*2*Math.PI,u_rotate_symbol:+r,u_aspect_ratio:u.width/u.height,u_fade_change:i.options.fadeDuration?i.symbolFadeChange:1,u_matrix:a,u_label_plane_matrix:o,u_coord_matrix:s,u_is_text:+l,u_pitch_with_map:+n,u_texsize:c,u_texture:0}},Yr=function(e,r,n,i,a,o,s,l,c,u,f){var h=a.transform;return t.extend(Gr(e,r,n,i,a,o,s,l,c,u),{u_gamma_scale:i?Math.cos(h._pitch)*h.cameraToCenterDistance:1,u_device_pixel_ratio:t.browser.devicePixelRatio,u_is_halo:+f})},Wr=function(e,r,n,i,a,o,s,l,c,u){return t.extend(Yr(e,r,n,i,a,o,s,l,!0,c,!0),{u_texsize_icon:u,u_texture_icon:1})},Xr=function(t,e,r){return{u_matrix:t,u_opacity:e,u_color:r}},Zr=function(e,r,n,i,a,o){return t.extend(function(t,e,r,n){var i=r.imageManager.getPattern(t.from.toString()),a=r.imageManager.getPattern(t.to.toString()),o=r.imageManager.getPixelSize(),s=o.width,l=o.height,c=Math.pow(2,n.tileID.overscaledZ),u=n.tileSize*Math.pow(2,r.transform.tileZoom)/c,f=u*(n.tileID.canonical.x+n.tileID.wrap*c),h=u*n.tileID.canonical.y;return{u_image:0,u_pattern_tl_a:i.tl,u_pattern_br_a:i.br,u_pattern_tl_b:a.tl,u_pattern_br_b:a.br,u_texsize:[s,l],u_mix:e.t,u_pattern_size_a:i.displaySize,u_pattern_size_b:a.displaySize,u_scale_a:e.fromScale,u_scale_b:e.toScale,u_tile_units_to_pixels:1/pe(n,1,r.transform.tileZoom),u_pixel_coord_upper:[f>>16,h>>16],u_pixel_coord_lower:[65535&f,65535&h]}}(i,o,n,a),{u_matrix:e,u_opacity:r})},Jr={fillExtrusion:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_lightpos:new t.Uniform3f(e,r.u_lightpos),u_lightintensity:new t.Uniform1f(e,r.u_lightintensity),u_lightcolor:new t.Uniform3f(e,r.u_lightcolor),u_vertical_gradient:new t.Uniform1f(e,r.u_vertical_gradient),u_opacity:new t.Uniform1f(e,r.u_opacity)}},fillExtrusionPattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_lightpos:new t.Uniform3f(e,r.u_lightpos),u_lightintensity:new t.Uniform1f(e,r.u_lightintensity),u_lightcolor:new t.Uniform3f(e,r.u_lightcolor),u_vertical_gradient:new t.Uniform1f(e,r.u_vertical_gradient),u_height_factor:new t.Uniform1f(e,r.u_height_factor),u_image:new t.Uniform1i(e,r.u_image),u_texsize:new t.Uniform2f(e,r.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade),u_opacity:new t.Uniform1f(e,r.u_opacity)}},fill:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},fillPattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_image:new t.Uniform1i(e,r.u_image),u_texsize:new t.Uniform2f(e,r.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade)}},fillOutline:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_world:new t.Uniform2f(e,r.u_world)}},fillOutlinePattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_world:new t.Uniform2f(e,r.u_world),u_image:new t.Uniform1i(e,r.u_image),u_texsize:new t.Uniform2f(e,r.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade)}},circle:function(e,r){return{u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_scale_with_map:new t.Uniform1i(e,r.u_scale_with_map),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_extrude_scale:new t.Uniform2f(e,r.u_extrude_scale),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},collisionBox:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pixels_to_tile_units:new t.Uniform1f(e,r.u_pixels_to_tile_units),u_extrude_scale:new t.Uniform2f(e,r.u_extrude_scale),u_overscale_factor:new t.Uniform1f(e,r.u_overscale_factor)}},collisionCircle:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_inv_matrix:new t.UniformMatrix4f(e,r.u_inv_matrix),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_viewport_size:new t.Uniform2f(e,r.u_viewport_size)}},debug:function(e,r){return{u_color:new t.UniformColor(e,r.u_color),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_overlay:new t.Uniform1i(e,r.u_overlay),u_overlay_scale:new t.Uniform1f(e,r.u_overlay_scale)}},clippingMask:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},heatmap:function(e,r){return{u_extrude_scale:new t.Uniform1f(e,r.u_extrude_scale),u_intensity:new t.Uniform1f(e,r.u_intensity),u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},heatmapTexture:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_world:new t.Uniform2f(e,r.u_world),u_image:new t.Uniform1i(e,r.u_image),u_color_ramp:new t.Uniform1i(e,r.u_color_ramp),u_opacity:new t.Uniform1f(e,r.u_opacity)}},hillshade:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_image:new t.Uniform1i(e,r.u_image),u_latrange:new t.Uniform2f(e,r.u_latrange),u_light:new t.Uniform2f(e,r.u_light),u_shadow:new t.UniformColor(e,r.u_shadow),u_highlight:new t.UniformColor(e,r.u_highlight),u_accent:new t.UniformColor(e,r.u_accent)}},hillshadePrepare:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_image:new t.Uniform1i(e,r.u_image),u_dimension:new t.Uniform2f(e,r.u_dimension),u_zoom:new t.Uniform1f(e,r.u_zoom),u_maxzoom:new t.Uniform1f(e,r.u_maxzoom),u_unpack:new t.Uniform4f(e,r.u_unpack)}},line:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels)}},lineGradient:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels),u_image:new t.Uniform1i(e,r.u_image)}},linePattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_texsize:new t.Uniform2f(e,r.u_texsize),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_image:new t.Uniform1i(e,r.u_image),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade)}},lineSDF:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels),u_patternscale_a:new t.Uniform2f(e,r.u_patternscale_a),u_patternscale_b:new t.Uniform2f(e,r.u_patternscale_b),u_sdfgamma:new t.Uniform1f(e,r.u_sdfgamma),u_image:new t.Uniform1i(e,r.u_image),u_tex_y_a:new t.Uniform1f(e,r.u_tex_y_a),u_tex_y_b:new t.Uniform1f(e,r.u_tex_y_b),u_mix:new t.Uniform1f(e,r.u_mix)}},raster:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_tl_parent:new t.Uniform2f(e,r.u_tl_parent),u_scale_parent:new t.Uniform1f(e,r.u_scale_parent),u_buffer_scale:new t.Uniform1f(e,r.u_buffer_scale),u_fade_t:new t.Uniform1f(e,r.u_fade_t),u_opacity:new t.Uniform1f(e,r.u_opacity),u_image0:new t.Uniform1i(e,r.u_image0),u_image1:new t.Uniform1i(e,r.u_image1),u_brightness_low:new t.Uniform1f(e,r.u_brightness_low),u_brightness_high:new t.Uniform1f(e,r.u_brightness_high),u_saturation_factor:new t.Uniform1f(e,r.u_saturation_factor),u_contrast_factor:new t.Uniform1f(e,r.u_contrast_factor),u_spin_weights:new t.Uniform3f(e,r.u_spin_weights)}},symbolIcon:function(e,r){return{u_is_size_zoom_constant:new t.Uniform1i(e,r.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,r.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,r.u_size_t),u_size:new t.Uniform1f(e,r.u_size),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,r.u_pitch),u_rotate_symbol:new t.Uniform1i(e,r.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,r.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,r.u_fade_change),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,r.u_label_plane_matrix),u_coord_matrix:new t.UniformMatrix4f(e,r.u_coord_matrix),u_is_text:new t.Uniform1i(e,r.u_is_text),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_texsize:new t.Uniform2f(e,r.u_texsize),u_texture:new t.Uniform1i(e,r.u_texture)}},symbolSDF:function(e,r){return{u_is_size_zoom_constant:new t.Uniform1i(e,r.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,r.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,r.u_size_t),u_size:new t.Uniform1f(e,r.u_size),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,r.u_pitch),u_rotate_symbol:new t.Uniform1i(e,r.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,r.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,r.u_fade_change),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,r.u_label_plane_matrix),u_coord_matrix:new t.UniformMatrix4f(e,r.u_coord_matrix),u_is_text:new t.Uniform1i(e,r.u_is_text),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_texsize:new t.Uniform2f(e,r.u_texsize),u_texture:new t.Uniform1i(e,r.u_texture),u_gamma_scale:new t.Uniform1f(e,r.u_gamma_scale),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_is_halo:new t.Uniform1i(e,r.u_is_halo)}},symbolTextAndIcon:function(e,r){return{u_is_size_zoom_constant:new t.Uniform1i(e,r.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,r.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,r.u_size_t),u_size:new t.Uniform1f(e,r.u_size),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,r.u_pitch),u_rotate_symbol:new t.Uniform1i(e,r.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,r.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,r.u_fade_change),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,r.u_label_plane_matrix),u_coord_matrix:new t.UniformMatrix4f(e,r.u_coord_matrix),u_is_text:new t.Uniform1i(e,r.u_is_text),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_texsize:new t.Uniform2f(e,r.u_texsize),u_texsize_icon:new t.Uniform2f(e,r.u_texsize_icon),u_texture:new t.Uniform1i(e,r.u_texture),u_texture_icon:new t.Uniform1i(e,r.u_texture_icon),u_gamma_scale:new t.Uniform1f(e,r.u_gamma_scale),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_is_halo:new t.Uniform1i(e,r.u_is_halo)}},background:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_opacity:new t.Uniform1f(e,r.u_opacity),u_color:new t.UniformColor(e,r.u_color)}},backgroundPattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_opacity:new t.Uniform1f(e,r.u_opacity),u_image:new t.Uniform1i(e,r.u_image),u_pattern_tl_a:new t.Uniform2f(e,r.u_pattern_tl_a),u_pattern_br_a:new t.Uniform2f(e,r.u_pattern_br_a),u_pattern_tl_b:new t.Uniform2f(e,r.u_pattern_tl_b),u_pattern_br_b:new t.Uniform2f(e,r.u_pattern_br_b),u_texsize:new t.Uniform2f(e,r.u_texsize),u_mix:new t.Uniform1f(e,r.u_mix),u_pattern_size_a:new t.Uniform2f(e,r.u_pattern_size_a),u_pattern_size_b:new t.Uniform2f(e,r.u_pattern_size_b),u_scale_a:new t.Uniform1f(e,r.u_scale_a),u_scale_b:new t.Uniform1f(e,r.u_scale_b),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_tile_units_to_pixels:new t.Uniform1f(e,r.u_tile_units_to_pixels)}}};function Kr(e,r,n,i,a,o,s){for(var l=e.context,c=l.gl,u=e.useProgram(\"collisionBox\"),f=[],h=0,p=0,d=0;d0){var _=t.create(),w=y;t.mul(_,v.placementInvProjMatrix,e.transform.glCoordMatrix),t.mul(_,_,v.placementViewportMatrix),f.push({circleArray:b,circleOffset:p,transform:w,invTransform:_}),p=h+=b.length/4}x&&u.draw(l,c.LINES,At.disabled,Mt.disabled,e.colorModeForRenderPass(),Et.disabled,Cr(y,e.transform,m),n.id,x.layoutVertexBuffer,x.indexBuffer,x.segments,null,e.transform.zoom,null,null,x.collisionVertexBuffer)}}if(s&&f.length){var T=e.useProgram(\"collisionCircle\"),k=new t.StructArrayLayout2f1f2i16;k.resize(4*h),k._trim();for(var A=0,M=0,S=f;M=0&&(g[v.associatedIconIndex]={shiftedAnchor:S,angle:E})}else ue(v.numGlyphs,p)}if(f){d.clear();for(var C=e.icon.placedSymbolArray,P=0;P0){var s=t.browser.now(),l=(s-e.timeAdded)/o,c=r?(s-r.timeAdded)/o:-1,u=n.getSource(),f=a.coveringZoomLevel({tileSize:u.tileSize,roundZoom:u.roundZoom}),h=!r||Math.abs(r.tileID.overscaledZ-f)>Math.abs(e.tileID.overscaledZ-f),p=h&&e.refreshedUponExpiration?1:t.clamp(h?l:1-c,0,1);return e.refreshedUponExpiration&&l>=1&&(e.refreshedUponExpiration=!1),r?{opacity:1,mix:1-p}:{opacity:p,mix:0}}return{opacity:1,mix:0}}var un=new t.Color(1,0,0,1),fn=new t.Color(0,1,0,1),hn=new t.Color(0,0,1,1),pn=new t.Color(1,0,1,1),dn=new t.Color(0,1,1,1);function gn(t){var e=t.transform.padding;mn(t,t.transform.height-(e.top||0),3,un),mn(t,e.bottom||0,3,fn),vn(t,e.left||0,3,hn),vn(t,t.transform.width-(e.right||0),3,pn);var r=t.transform.centerPoint;!function(t,e,r,n){yn(t,e-1,r-10,2,20,n),yn(t,e-10,r-1,20,2,n)}(t,r.x,t.transform.height-r.y,dn)}function mn(t,e,r,n){yn(t,0,e+r/2,t.transform.width,r,n)}function vn(t,e,r,n){yn(t,e-r/2,0,r,t.transform.height,n)}function yn(e,r,n,i,a,o){var s=e.context,l=s.gl;l.enable(l.SCISSOR_TEST),l.scissor(r*t.browser.devicePixelRatio,n*t.browser.devicePixelRatio,i*t.browser.devicePixelRatio,a*t.browser.devicePixelRatio),s.clear({color:o}),l.disable(l.SCISSOR_TEST)}function xn(e,r,n){var i=e.context,a=i.gl,o=n.posMatrix,s=e.useProgram(\"debug\"),l=At.disabled,c=Mt.disabled,u=e.colorModeForRenderPass();i.activeTexture.set(a.TEXTURE0),e.emptyTexture.bind(a.LINEAR,a.CLAMP_TO_EDGE),s.draw(i,a.LINE_STRIP,l,c,u,Et.disabled,Ir(o,t.Color.red),\"$debug\",e.debugBuffer,e.tileBorderIndexBuffer,e.debugSegments);var f=r.getTileByID(n.key).latestRawTileData,h=f&&f.byteLength||0,p=Math.floor(h/1024),d=r.getTile(n).tileSize,g=512/Math.min(d,512)*(n.overscaledZ/e.transform.zoom)*.5,m=n.canonical.toString();n.overscaledZ!==n.canonical.z&&(m+=\" => \"+n.overscaledZ),function(t,e){t.initDebugOverlayCanvas();var r=t.debugOverlayCanvas,n=t.context.gl,i=t.debugOverlayCanvas.getContext(\"2d\");i.clearRect(0,0,r.width,r.height),i.shadowColor=\"white\",i.shadowBlur=2,i.lineWidth=1.5,i.strokeStyle=\"white\",i.textBaseline=\"top\",i.font=\"bold 36px Open Sans, sans-serif\",i.fillText(e,5,5),i.strokeText(e,5,5),t.debugOverlayTexture.update(r),t.debugOverlayTexture.bind(n.LINEAR,n.CLAMP_TO_EDGE)}(e,m+\" \"+p+\"kb\"),s.draw(i,a.TRIANGLES,l,c,St.alphaBlended,Et.disabled,Ir(o,t.Color.transparent,g),\"$debug\",e.debugBuffer,e.quadTriangleIndexBuffer,e.debugSegments)}var bn={symbol:function(e,r,n,i,a){if(\"translucent\"===e.renderPass){var o=Mt.disabled,s=e.colorModeForRenderPass();n.layout.get(\"text-variable-anchor\")&&function(e,r,n,i,a,o,s){for(var l=r.transform,c=\"map\"===a,u=\"map\"===o,f=0,h=e;f256&&this.clearStencil(),r.setColorMode(St.disabled),r.setDepthMode(At.disabled);var i=this.useProgram(\"clippingMask\");this._tileClippingMaskIDs={};for(var a=0,o=e;a256&&this.clearStencil();var t=this.nextStencilID++,e=this.context.gl;return new Mt({func:e.NOTEQUAL,mask:255},t,255,e.KEEP,e.KEEP,e.REPLACE)},_n.prototype.stencilModeForClipping=function(t){var e=this.context.gl;return new Mt({func:e.EQUAL,mask:255},this._tileClippingMaskIDs[t.key],0,e.KEEP,e.KEEP,e.REPLACE)},_n.prototype.stencilConfigForOverlap=function(t){var e,r=this.context.gl,n=t.sort((function(t,e){return e.overscaledZ-t.overscaledZ})),i=n[n.length-1].overscaledZ,a=n[0].overscaledZ-i+1;if(a>1){this.currentStencilSource=void 0,this.nextStencilID+a>256&&this.clearStencil();for(var o={},s=0;s=0;this.currentLayer--){var w=this.style._layers[i[this.currentLayer]],T=a[w.source],k=u[w.source];this._renderTileClippingMasks(w,k),this.renderLayer(this,T,w,k)}for(this.renderPass=\"translucent\",this.currentLayer=0;this.currentLayer0?e.pop():null},_n.prototype.isPatternMissing=function(t){if(!t)return!1;if(!t.from||!t.to)return!0;var e=this.imageManager.getPattern(t.from.toString()),r=this.imageManager.getPattern(t.to.toString());return!e||!r},_n.prototype.useProgram=function(t,e){this.cache=this.cache||{};var r=\"\"+t+(e?e.cacheKey:\"\")+(this._showOverdrawInspector?\"/overdraw\":\"\");return this.cache[r]||(this.cache[r]=new _r(this.context,xr[t],e,Jr[t],this._showOverdrawInspector)),this.cache[r]},_n.prototype.setCustomLayerDefaults=function(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault()},_n.prototype.setBaseState=function(){var t=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(t.FUNC_ADD)},_n.prototype.initDebugOverlayCanvas=function(){if(null==this.debugOverlayCanvas){this.debugOverlayCanvas=t.window.document.createElement(\"canvas\"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512;var e=this.context.gl;this.debugOverlayTexture=new t.Texture(this.context,this.debugOverlayCanvas,e.RGBA)}},_n.prototype.destroy=function(){this.emptyTexture.destroy(),this.debugOverlayTexture&&this.debugOverlayTexture.destroy()};var wn=function(t,e){this.points=t,this.planes=e};wn.fromInvProjectionMatrix=function(e,r,n){var i=Math.pow(2,n),a=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]].map((function(r){return t.transformMat4([],r,e)})).map((function(e){return t.scale$1([],e,1/e[3]/r*i)})),o=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]].map((function(e){var r=t.sub([],a[e[0]],a[e[1]]),n=t.sub([],a[e[2]],a[e[1]]),i=t.normalize([],t.cross([],r,n)),o=-t.dot(i,a[e[1]]);return i.concat(o)}));return new wn(a,o)};var Tn=function(e,r){this.min=e,this.max=r,this.center=t.scale$2([],t.add([],this.min,this.max),.5)};Tn.prototype.quadrant=function(e){for(var r=[e%2==0,e<2],n=t.clone$2(this.min),i=t.clone$2(this.max),a=0;a=0;if(0===o)return 0;o!==r.length&&(n=!1)}if(n)return 2;for(var l=0;l<3;l++){for(var c=Number.MAX_VALUE,u=-Number.MAX_VALUE,f=0;fthis.max[l]-this.min[l])return 0}return 1};var kn=function(t,e,r,n){if(void 0===t&&(t=0),void 0===e&&(e=0),void 0===r&&(r=0),void 0===n&&(n=0),isNaN(t)||t<0||isNaN(e)||e<0||isNaN(r)||r<0||isNaN(n)||n<0)throw new Error(\"Invalid value for edge-insets, top, bottom, left and right must all be numbers\");this.top=t,this.bottom=e,this.left=r,this.right=n};kn.prototype.interpolate=function(e,r,n){return null!=r.top&&null!=e.top&&(this.top=t.number(e.top,r.top,n)),null!=r.bottom&&null!=e.bottom&&(this.bottom=t.number(e.bottom,r.bottom,n)),null!=r.left&&null!=e.left&&(this.left=t.number(e.left,r.left,n)),null!=r.right&&null!=e.right&&(this.right=t.number(e.right,r.right,n)),this},kn.prototype.getCenter=function(e,r){var n=t.clamp((this.left+e-this.right)/2,0,e),i=t.clamp((this.top+r-this.bottom)/2,0,r);return new t.Point(n,i)},kn.prototype.equals=function(t){return this.top===t.top&&this.bottom===t.bottom&&this.left===t.left&&this.right===t.right},kn.prototype.clone=function(){return new kn(this.top,this.bottom,this.left,this.right)},kn.prototype.toJSON=function(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}};var An=function(e,r,n,i,a){this.tileSize=512,this.maxValidLatitude=85.051129,this._renderWorldCopies=void 0===a||a,this._minZoom=e||0,this._maxZoom=r||22,this._minPitch=null==n?0:n,this._maxPitch=null==i?60:i,this.setMaxBounds(),this.width=0,this.height=0,this._center=new t.LngLat(0,0),this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._edgeInsets=new kn,this._posMatrixCache={},this._alignedPosMatrixCache={}},Mn={minZoom:{configurable:!0},maxZoom:{configurable:!0},minPitch:{configurable:!0},maxPitch:{configurable:!0},renderWorldCopies:{configurable:!0},worldSize:{configurable:!0},centerOffset:{configurable:!0},size:{configurable:!0},bearing:{configurable:!0},pitch:{configurable:!0},fov:{configurable:!0},zoom:{configurable:!0},center:{configurable:!0},padding:{configurable:!0},centerPoint:{configurable:!0},unmodified:{configurable:!0},point:{configurable:!0}};An.prototype.clone=function(){var t=new An(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return t.tileSize=this.tileSize,t.latRange=this.latRange,t.width=this.width,t.height=this.height,t._center=this._center,t.zoom=this.zoom,t.angle=this.angle,t._fov=this._fov,t._pitch=this._pitch,t._unmodified=this._unmodified,t._edgeInsets=this._edgeInsets.clone(),t._calcMatrices(),t},Mn.minZoom.get=function(){return this._minZoom},Mn.minZoom.set=function(t){this._minZoom!==t&&(this._minZoom=t,this.zoom=Math.max(this.zoom,t))},Mn.maxZoom.get=function(){return this._maxZoom},Mn.maxZoom.set=function(t){this._maxZoom!==t&&(this._maxZoom=t,this.zoom=Math.min(this.zoom,t))},Mn.minPitch.get=function(){return this._minPitch},Mn.minPitch.set=function(t){this._minPitch!==t&&(this._minPitch=t,this.pitch=Math.max(this.pitch,t))},Mn.maxPitch.get=function(){return this._maxPitch},Mn.maxPitch.set=function(t){this._maxPitch!==t&&(this._maxPitch=t,this.pitch=Math.min(this.pitch,t))},Mn.renderWorldCopies.get=function(){return this._renderWorldCopies},Mn.renderWorldCopies.set=function(t){void 0===t?t=!0:null===t&&(t=!1),this._renderWorldCopies=t},Mn.worldSize.get=function(){return this.tileSize*this.scale},Mn.centerOffset.get=function(){return this.centerPoint._sub(this.size._div(2))},Mn.size.get=function(){return new t.Point(this.width,this.height)},Mn.bearing.get=function(){return-this.angle/Math.PI*180},Mn.bearing.set=function(e){var r=-t.wrap(e,-180,180)*Math.PI/180;this.angle!==r&&(this._unmodified=!1,this.angle=r,this._calcMatrices(),this.rotationMatrix=t.create$2(),t.rotate(this.rotationMatrix,this.rotationMatrix,this.angle))},Mn.pitch.get=function(){return this._pitch/Math.PI*180},Mn.pitch.set=function(e){var r=t.clamp(e,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==r&&(this._unmodified=!1,this._pitch=r,this._calcMatrices())},Mn.fov.get=function(){return this._fov/Math.PI*180},Mn.fov.set=function(t){t=Math.max(.01,Math.min(60,t)),this._fov!==t&&(this._unmodified=!1,this._fov=t/180*Math.PI,this._calcMatrices())},Mn.zoom.get=function(){return this._zoom},Mn.zoom.set=function(t){var e=Math.min(Math.max(t,this.minZoom),this.maxZoom);this._zoom!==e&&(this._unmodified=!1,this._zoom=e,this.scale=this.zoomScale(e),this.tileZoom=Math.floor(e),this.zoomFraction=e-this.tileZoom,this._constrain(),this._calcMatrices())},Mn.center.get=function(){return this._center},Mn.center.set=function(t){t.lat===this._center.lat&&t.lng===this._center.lng||(this._unmodified=!1,this._center=t,this._constrain(),this._calcMatrices())},Mn.padding.get=function(){return this._edgeInsets.toJSON()},Mn.padding.set=function(t){this._edgeInsets.equals(t)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,t,1),this._calcMatrices())},Mn.centerPoint.get=function(){return this._edgeInsets.getCenter(this.width,this.height)},An.prototype.isPaddingEqual=function(t){return this._edgeInsets.equals(t)},An.prototype.interpolatePadding=function(t,e,r){this._unmodified=!1,this._edgeInsets.interpolate(t,e,r),this._constrain(),this._calcMatrices()},An.prototype.coveringZoomLevel=function(t){var e=(t.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/t.tileSize));return Math.max(0,e)},An.prototype.getVisibleUnwrappedCoordinates=function(e){var r=[new t.UnwrappedTileID(0,e)];if(this._renderWorldCopies)for(var n=this.pointCoordinate(new t.Point(0,0)),i=this.pointCoordinate(new t.Point(this.width,0)),a=this.pointCoordinate(new t.Point(this.width,this.height)),o=this.pointCoordinate(new t.Point(0,this.height)),s=Math.floor(Math.min(n.x,i.x,a.x,o.x)),l=Math.floor(Math.max(n.x,i.x,a.x,o.x)),c=s-1;c<=l+1;c++)0!==c&&r.push(new t.UnwrappedTileID(c,e));return r},An.prototype.coveringTiles=function(e){var r=this.coveringZoomLevel(e),n=r;if(void 0!==e.minzoom&&re.maxzoom&&(r=e.maxzoom);var i=t.MercatorCoordinate.fromLngLat(this.center),a=Math.pow(2,r),o=[a*i.x,a*i.y,0],s=wn.fromInvProjectionMatrix(this.invProjMatrix,this.worldSize,r),l=e.minzoom||0;this.pitch<=60&&this._edgeInsets.top<.1&&(l=r);var c=function(t){return{aabb:new Tn([t*a,0,0],[(t+1)*a,a,0]),zoom:0,x:0,y:0,wrap:t,fullyVisible:!1}},u=[],f=[],h=r,p=e.reparseOverscaled?n:r;if(this._renderWorldCopies)for(var d=1;d<=3;d++)u.push(c(-d)),u.push(c(d));for(u.push(c(0));u.length>0;){var g=u.pop(),m=g.x,v=g.y,y=g.fullyVisible;if(!y){var x=g.aabb.intersects(s);if(0===x)continue;y=2===x}var b=g.aabb.distanceX(o),_=g.aabb.distanceY(o),w=Math.max(Math.abs(b),Math.abs(_)),T=3+(1<T&&g.zoom>=l)f.push({tileID:new t.OverscaledTileID(g.zoom===h?p:g.zoom,g.wrap,g.zoom,m,v),distanceSq:t.sqrLen([o[0]-.5-m,o[1]-.5-v])});else for(var k=0;k<4;k++){var A=(m<<1)+k%2,M=(v<<1)+(k>>1);u.push({aabb:g.aabb.quadrant(k),zoom:g.zoom+1,x:A,y:M,wrap:g.wrap,fullyVisible:y})}}return f.sort((function(t,e){return t.distanceSq-e.distanceSq})).map((function(t){return t.tileID}))},An.prototype.resize=function(t,e){this.width=t,this.height=e,this.pixelsToGLUnits=[2/t,-2/e],this._constrain(),this._calcMatrices()},Mn.unmodified.get=function(){return this._unmodified},An.prototype.zoomScale=function(t){return Math.pow(2,t)},An.prototype.scaleZoom=function(t){return Math.log(t)/Math.LN2},An.prototype.project=function(e){var r=t.clamp(e.lat,-this.maxValidLatitude,this.maxValidLatitude);return new t.Point(t.mercatorXfromLng(e.lng)*this.worldSize,t.mercatorYfromLat(r)*this.worldSize)},An.prototype.unproject=function(e){return new t.MercatorCoordinate(e.x/this.worldSize,e.y/this.worldSize).toLngLat()},Mn.point.get=function(){return this.project(this.center)},An.prototype.setLocationAtPoint=function(e,r){var n=this.pointCoordinate(r),i=this.pointCoordinate(this.centerPoint),a=this.locationCoordinate(e),o=new t.MercatorCoordinate(a.x-(n.x-i.x),a.y-(n.y-i.y));this.center=this.coordinateLocation(o),this._renderWorldCopies&&(this.center=this.center.wrap())},An.prototype.locationPoint=function(t){return this.coordinatePoint(this.locationCoordinate(t))},An.prototype.pointLocation=function(t){return this.coordinateLocation(this.pointCoordinate(t))},An.prototype.locationCoordinate=function(e){return t.MercatorCoordinate.fromLngLat(e)},An.prototype.coordinateLocation=function(t){return t.toLngLat()},An.prototype.pointCoordinate=function(e){var r=[e.x,e.y,0,1],n=[e.x,e.y,1,1];t.transformMat4(r,r,this.pixelMatrixInverse),t.transformMat4(n,n,this.pixelMatrixInverse);var i=r[3],a=n[3],o=r[0]/i,s=n[0]/a,l=r[1]/i,c=n[1]/a,u=r[2]/i,f=n[2]/a,h=u===f?0:(0-u)/(f-u);return new t.MercatorCoordinate(t.number(o,s,h)/this.worldSize,t.number(l,c,h)/this.worldSize)},An.prototype.coordinatePoint=function(e){var r=[e.x*this.worldSize,e.y*this.worldSize,0,1];return t.transformMat4(r,r,this.pixelMatrix),new t.Point(r[0]/r[3],r[1]/r[3])},An.prototype.getBounds=function(){return(new t.LngLatBounds).extend(this.pointLocation(new t.Point(0,0))).extend(this.pointLocation(new t.Point(this.width,0))).extend(this.pointLocation(new t.Point(this.width,this.height))).extend(this.pointLocation(new t.Point(0,this.height)))},An.prototype.getMaxBounds=function(){return this.latRange&&2===this.latRange.length&&this.lngRange&&2===this.lngRange.length?new t.LngLatBounds([this.lngRange[0],this.latRange[0]],[this.lngRange[1],this.latRange[1]]):null},An.prototype.setMaxBounds=function(t){t?(this.lngRange=[t.getWest(),t.getEast()],this.latRange=[t.getSouth(),t.getNorth()],this._constrain()):(this.lngRange=null,this.latRange=[-this.maxValidLatitude,this.maxValidLatitude])},An.prototype.calculatePosMatrix=function(e,r){void 0===r&&(r=!1);var n=e.key,i=r?this._alignedPosMatrixCache:this._posMatrixCache;if(i[n])return i[n];var a=e.canonical,o=this.worldSize/this.zoomScale(a.z),s=a.x+Math.pow(2,a.z)*e.wrap,l=t.identity(new Float64Array(16));return t.translate(l,l,[s*o,a.y*o,0]),t.scale(l,l,[o/t.EXTENT,o/t.EXTENT,1]),t.multiply(l,r?this.alignedProjMatrix:this.projMatrix,l),i[n]=new Float32Array(l),i[n]},An.prototype.customLayerMatrix=function(){return this.mercatorMatrix.slice()},An.prototype._constrain=function(){if(this.center&&this.width&&this.height&&!this._constraining){this._constraining=!0;var e,r,n,i,a=-90,o=90,s=-180,l=180,c=this.size,u=this._unmodified;if(this.latRange){var f=this.latRange;a=t.mercatorYfromLat(f[1])*this.worldSize,e=(o=t.mercatorYfromLat(f[0])*this.worldSize)-ao&&(i=o-m)}if(this.lngRange){var v=p.x,y=c.x/2;v-yl&&(n=l-y)}void 0===n&&void 0===i||(this.center=this.unproject(new t.Point(void 0!==n?n:p.x,void 0!==i?i:p.y))),this._unmodified=u,this._constraining=!1}},An.prototype._calcMatrices=function(){if(this.height){var e=this._fov/2,r=this.centerOffset;this.cameraToCenterDistance=.5/Math.tan(e)*this.height;var n=Math.PI/2+this._pitch,i=this._fov*(.5+r.y/this.height),a=Math.sin(i)*this.cameraToCenterDistance/Math.sin(t.clamp(Math.PI-n-i,.01,Math.PI-.01)),o=this.point,s=o.x,l=o.y,c=1.01*(Math.cos(Math.PI/2-this._pitch)*a+this.cameraToCenterDistance),u=this.height/50,f=new Float64Array(16);t.perspective(f,this._fov,this.width/this.height,u,c),f[8]=2*-r.x/this.width,f[9]=2*r.y/this.height,t.scale(f,f,[1,-1,1]),t.translate(f,f,[0,0,-this.cameraToCenterDistance]),t.rotateX(f,f,this._pitch),t.rotateZ(f,f,this.angle),t.translate(f,f,[-s,-l,0]),this.mercatorMatrix=t.scale([],f,[this.worldSize,this.worldSize,this.worldSize]),t.scale(f,f,[1,1,t.mercatorZfromAltitude(1,this.center.lat)*this.worldSize,1]),this.projMatrix=f,this.invProjMatrix=t.invert([],this.projMatrix);var h=this.width%2/2,p=this.height%2/2,d=Math.cos(this.angle),g=Math.sin(this.angle),m=s-Math.round(s)+d*h+g*p,v=l-Math.round(l)+d*p+g*h,y=new Float64Array(f);if(t.translate(y,y,[m>.5?m-1:m,v>.5?v-1:v,0]),this.alignedProjMatrix=y,f=t.create(),t.scale(f,f,[this.width/2,-this.height/2,1]),t.translate(f,f,[1,-1,0]),this.labelPlaneMatrix=f,f=t.create(),t.scale(f,f,[1,-1,1]),t.translate(f,f,[-1,-1,0]),t.scale(f,f,[2/this.width,2/this.height,1]),this.glCoordMatrix=f,this.pixelMatrix=t.multiply(new Float64Array(16),this.labelPlaneMatrix,this.projMatrix),!(f=t.invert(new Float64Array(16),this.pixelMatrix)))throw new Error(\"failed to invert matrix\");this.pixelMatrixInverse=f,this._posMatrixCache={},this._alignedPosMatrixCache={}}},An.prototype.maxPitchScaleFactor=function(){if(!this.pixelMatrixInverse)return 1;var e=this.pointCoordinate(new t.Point(0,0)),r=[e.x*this.worldSize,e.y*this.worldSize,0,1];return t.transformMat4(r,r,this.pixelMatrix)[3]/this.cameraToCenterDistance},An.prototype.getCameraPoint=function(){var e=this._pitch,r=Math.tan(e)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new t.Point(0,r))},An.prototype.getCameraQueryGeometry=function(e){var r=this.getCameraPoint();if(1===e.length)return[e[0],r];for(var n=r.x,i=r.y,a=r.x,o=r.y,s=0,l=e;s=3&&!t.some((function(t){return isNaN(t)}))){var e=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(t[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+t[2],+t[1]],zoom:+t[0],bearing:e,pitch:+(t[4]||0)}),!0}return!1},Sn.prototype._updateHashUnthrottled=function(){var e=this.getHashString();try{t.window.history.replaceState(t.window.history.state,\"\",e)}catch(t){}};var En={linearity:.3,easing:t.bezier(0,0,.3,1)},Ln=t.extend({deceleration:2500,maxSpeed:1400},En),Cn=t.extend({deceleration:20,maxSpeed:1400},En),Pn=t.extend({deceleration:1e3,maxSpeed:360},En),In=t.extend({deceleration:1e3,maxSpeed:90},En),On=function(t){this._map=t,this.clear()};function zn(t,e){(!t.duration||t.duration0&&r-e[0].time>160;)e.shift()},On.prototype._onMoveEnd=function(e){if(this._drainInertiaBuffer(),!(this._inertiaBuffer.length<2)){for(var r={zoom:0,bearing:0,pitch:0,pan:new t.Point(0,0),pinchAround:void 0,around:void 0},n=0,i=this._inertiaBuffer;n=this._clickTolerance||this._map.fire(new Rn(t.type,this._map,t))},Nn.prototype.dblclick=function(t){return this._firePreventable(new Rn(t.type,this._map,t))},Nn.prototype.mouseover=function(t){this._map.fire(new Rn(t.type,this._map,t))},Nn.prototype.mouseout=function(t){this._map.fire(new Rn(t.type,this._map,t))},Nn.prototype.touchstart=function(t){return this._firePreventable(new Fn(t.type,this._map,t))},Nn.prototype.touchmove=function(t){this._map.fire(new Fn(t.type,this._map,t))},Nn.prototype.touchend=function(t){this._map.fire(new Fn(t.type,this._map,t))},Nn.prototype.touchcancel=function(t){this._map.fire(new Fn(t.type,this._map,t))},Nn.prototype._firePreventable=function(t){if(this._map.fire(t),t.defaultPrevented)return{}},Nn.prototype.isEnabled=function(){return!0},Nn.prototype.isActive=function(){return!1},Nn.prototype.enable=function(){},Nn.prototype.disable=function(){};var jn=function(t){this._map=t};jn.prototype.reset=function(){this._delayContextMenu=!1,delete this._contextMenuEvent},jn.prototype.mousemove=function(t){this._map.fire(new Rn(t.type,this._map,t))},jn.prototype.mousedown=function(){this._delayContextMenu=!0},jn.prototype.mouseup=function(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new Rn(\"contextmenu\",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)},jn.prototype.contextmenu=function(t){this._delayContextMenu?this._contextMenuEvent=t:this._map.fire(new Rn(t.type,this._map,t)),this._map.listens(\"contextmenu\")&&t.preventDefault()},jn.prototype.isEnabled=function(){return!0},jn.prototype.isActive=function(){return!1},jn.prototype.enable=function(){},jn.prototype.disable=function(){};var Un=function(t,e){this._map=t,this._el=t.getCanvasContainer(),this._container=t.getContainer(),this._clickTolerance=e.clickTolerance||1};function Vn(t,e){for(var r={},n=0;nthis.numTouches)&&(this.aborted=!0),this.aborted||(void 0===this.startTime&&(this.startTime=e.timeStamp),n.length===this.numTouches&&(this.centroid=function(e){for(var r=new t.Point(0,0),n=0,i=e;n30)&&(this.aborted=!0)}}},Hn.prototype.touchend=function(t,e,r){if((!this.centroid||t.timeStamp-this.startTime>500)&&(this.aborted=!0),0===r.length){var n=!this.aborted&&this.centroid;if(this.reset(),n)return n}};var qn=function(t){this.singleTap=new Hn(t),this.numTaps=t.numTaps,this.reset()};qn.prototype.reset=function(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset()},qn.prototype.touchstart=function(t,e,r){this.singleTap.touchstart(t,e,r)},qn.prototype.touchmove=function(t,e,r){this.singleTap.touchmove(t,e,r)},qn.prototype.touchend=function(t,e,r){var n=this.singleTap.touchend(t,e,r);if(n){var i=t.timeStamp-this.lastTime<500,a=!this.lastTap||this.lastTap.dist(n)<30;if(i&&a||this.reset(),this.count++,this.lastTime=t.timeStamp,this.lastTap=n,this.count===this.numTaps)return this.reset(),n}};var Gn=function(){this._zoomIn=new qn({numTouches:1,numTaps:2}),this._zoomOut=new qn({numTouches:2,numTaps:1}),this.reset()};Gn.prototype.reset=function(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset()},Gn.prototype.touchstart=function(t,e,r){this._zoomIn.touchstart(t,e,r),this._zoomOut.touchstart(t,e,r)},Gn.prototype.touchmove=function(t,e,r){this._zoomIn.touchmove(t,e,r),this._zoomOut.touchmove(t,e,r)},Gn.prototype.touchend=function(t,e,r){var n=this,i=this._zoomIn.touchend(t,e,r),a=this._zoomOut.touchend(t,e,r);return i?(this._active=!0,t.preventDefault(),setTimeout((function(){return n.reset()}),0),{cameraAnimation:function(e){return e.easeTo({duration:300,zoom:e.getZoom()+1,around:e.unproject(i)},{originalEvent:t})}}):a?(this._active=!0,t.preventDefault(),setTimeout((function(){return n.reset()}),0),{cameraAnimation:function(e){return e.easeTo({duration:300,zoom:e.getZoom()-1,around:e.unproject(a)},{originalEvent:t})}}):void 0},Gn.prototype.touchcancel=function(){this.reset()},Gn.prototype.enable=function(){this._enabled=!0},Gn.prototype.disable=function(){this._enabled=!1,this.reset()},Gn.prototype.isEnabled=function(){return this._enabled},Gn.prototype.isActive=function(){return this._active};var Yn=function(t){this.reset(),this._clickTolerance=t.clickTolerance||1};Yn.prototype.reset=function(){this._active=!1,this._moved=!1,delete this._lastPoint,delete this._eventButton},Yn.prototype._correctButton=function(t,e){return!1},Yn.prototype._move=function(t,e){return{}},Yn.prototype.mousedown=function(t,e){if(!this._lastPoint){var n=r.mouseButton(t);this._correctButton(t,n)&&(this._lastPoint=e,this._eventButton=n)}},Yn.prototype.mousemoveWindow=function(t,e){var r=this._lastPoint;if(r&&(t.preventDefault(),this._moved||!(e.dist(r)0&&(this._active=!0);var i=Vn(n,r),a=new t.Point(0,0),o=new t.Point(0,0),s=0;for(var l in i){var c=i[l],u=this._touches[l];u&&(a._add(c),o._add(c.sub(u)),s++,i[l]=c)}if(this._touches=i,!(sMath.abs(t.x)}var ii=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.reset=function(){t.prototype.reset.call(this),this._valid=void 0,delete this._firstMove,delete this._lastPoints},e.prototype._start=function(t){this._lastPoints=t,ni(t[0].sub(t[1]))&&(this._valid=!1)},e.prototype._move=function(t,e,r){var n=t[0].sub(this._lastPoints[0]),i=t[1].sub(this._lastPoints[1]);if(this._valid=this.gestureBeginsVertically(n,i,r.timeStamp),this._valid){this._lastPoints=t,this._active=!0;return{pitchDelta:-.5*((n.y+i.y)/2)}}},e.prototype.gestureBeginsVertically=function(t,e,r){if(void 0!==this._valid)return this._valid;var n=t.mag()>=2,i=e.mag()>=2;if(n||i){if(!n||!i)return void 0===this._firstMove&&(this._firstMove=r),r-this._firstMove<100&&void 0;var a=t.y>0==e.y>0;return ni(t)&&ni(e)&&a}},e}(Kn),ai={panStep:100,bearingStep:15,pitchStep:10},oi=function(){var t=ai;this._panStep=t.panStep,this._bearingStep=t.bearingStep,this._pitchStep=t.pitchStep};function si(t){return t*(2-t)}oi.prototype.reset=function(){this._active=!1},oi.prototype.keydown=function(t){var e=this;if(!(t.altKey||t.ctrlKey||t.metaKey)){var r=0,n=0,i=0,a=0,o=0;switch(t.keyCode){case 61:case 107:case 171:case 187:r=1;break;case 189:case 109:case 173:r=-1;break;case 37:t.shiftKey?n=-1:(t.preventDefault(),a=-1);break;case 39:t.shiftKey?n=1:(t.preventDefault(),a=1);break;case 38:t.shiftKey?i=1:(t.preventDefault(),o=-1);break;case 40:t.shiftKey?i=-1:(t.preventDefault(),o=1);break;default:return}return{cameraAnimation:function(s){var l=s.getZoom();s.easeTo({duration:300,easeId:\"keyboardHandler\",easing:si,zoom:r?Math.round(l)+r*(t.shiftKey?2:1):l,bearing:s.getBearing()+n*e._bearingStep,pitch:s.getPitch()+i*e._pitchStep,offset:[-a*e._panStep,-o*e._panStep],center:s.getCenter()},{originalEvent:t})}}}},oi.prototype.enable=function(){this._enabled=!0},oi.prototype.disable=function(){this._enabled=!1,this.reset()},oi.prototype.isEnabled=function(){return this._enabled},oi.prototype.isActive=function(){return this._active};var li=function(e,r){this._map=e,this._el=e.getCanvasContainer(),this._handler=r,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=1/450,t.bindAll([\"_onWheel\",\"_onTimeout\",\"_onScrollFrame\",\"_onScrollFinished\"],this)};li.prototype.setZoomRate=function(t){this._defaultZoomRate=t},li.prototype.setWheelZoomRate=function(t){this._wheelZoomRate=t},li.prototype.isEnabled=function(){return!!this._enabled},li.prototype.isActive=function(){return!!this._active||void 0!==this._finishTimeout},li.prototype.isZooming=function(){return!!this._zooming},li.prototype.enable=function(t){this.isEnabled()||(this._enabled=!0,this._aroundCenter=t&&\"center\"===t.around)},li.prototype.disable=function(){this.isEnabled()&&(this._enabled=!1)},li.prototype.wheel=function(e){if(this.isEnabled()){var r=e.deltaMode===t.window.WheelEvent.DOM_DELTA_LINE?40*e.deltaY:e.deltaY,n=t.browser.now(),i=n-(this._lastWheelEventTime||0);this._lastWheelEventTime=n,0!==r&&r%4.000244140625==0?this._type=\"wheel\":0!==r&&Math.abs(r)<4?this._type=\"trackpad\":i>400?(this._type=null,this._lastValue=r,this._timeout=setTimeout(this._onTimeout,40,e)):this._type||(this._type=Math.abs(i*r)<200?\"trackpad\":\"wheel\",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,r+=this._lastValue)),e.shiftKey&&r&&(r/=4),this._type&&(this._lastWheelEvent=e,this._delta-=r,this._active||this._start(e)),e.preventDefault()}},li.prototype._onTimeout=function(t){this._type=\"wheel\",this._delta-=this._lastValue,this._active||this._start(t)},li.prototype._start=function(e){if(this._delta){this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);var n=r.mousePos(this._el,e);this._around=t.LngLat.convert(this._aroundCenter?this._map.getCenter():this._map.unproject(n)),this._aroundPoint=this._map.transform.locationPoint(this._around),this._frameId||(this._frameId=!0,this._handler._triggerRenderFrame())}},li.prototype.renderFrame=function(){return this._onScrollFrame()},li.prototype._onScrollFrame=function(){var e=this;if(this._frameId&&(this._frameId=null,this.isActive())){var r=this._map.transform;if(0!==this._delta){var n=\"wheel\"===this._type&&Math.abs(this._delta)>4.000244140625?this._wheelZoomRate:this._defaultZoomRate,i=2/(1+Math.exp(-Math.abs(this._delta*n)));this._delta<0&&0!==i&&(i=1/i);var a=\"number\"==typeof this._targetZoom?r.zoomScale(this._targetZoom):r.scale;this._targetZoom=Math.min(r.maxZoom,Math.max(r.minZoom,r.scaleZoom(a*i))),\"wheel\"===this._type&&(this._startZoom=r.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0}var o,s=\"number\"==typeof this._targetZoom?this._targetZoom:r.zoom,l=this._startZoom,c=this._easing,u=!1;if(\"wheel\"===this._type&&l&&c){var f=Math.min((t.browser.now()-this._lastWheelEventTime)/200,1),h=c(f);o=t.number(l,s,h),f<1?this._frameId||(this._frameId=!0):u=!0}else o=s,u=!0;return this._active=!0,u&&(this._active=!1,this._finishTimeout=setTimeout((function(){e._zooming=!1,e._handler._triggerRenderFrame(),delete e._targetZoom,delete e._finishTimeout}),200)),{noInertia:!0,needsRenderFrame:!u,zoomDelta:o-r.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}},li.prototype._smoothOutEasing=function(e){var r=t.ease;if(this._prevEase){var n=this._prevEase,i=(t.browser.now()-n.start)/n.duration,a=n.easing(i+.01)-n.easing(i),o=.27/Math.sqrt(a*a+1e-4)*.01,s=Math.sqrt(.0729-o*o);r=t.bezier(o,s,.25,1)}return this._prevEase={start:t.browser.now(),duration:e,easing:r},r},li.prototype.reset=function(){this._active=!1};var ci=function(t,e){this._clickZoom=t,this._tapZoom=e};ci.prototype.enable=function(){this._clickZoom.enable(),this._tapZoom.enable()},ci.prototype.disable=function(){this._clickZoom.disable(),this._tapZoom.disable()},ci.prototype.isEnabled=function(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()},ci.prototype.isActive=function(){return this._clickZoom.isActive()||this._tapZoom.isActive()};var ui=function(){this.reset()};ui.prototype.reset=function(){this._active=!1},ui.prototype.dblclick=function(t,e){return t.preventDefault(),{cameraAnimation:function(r){r.easeTo({duration:300,zoom:r.getZoom()+(t.shiftKey?-1:1),around:r.unproject(e)},{originalEvent:t})}}},ui.prototype.enable=function(){this._enabled=!0},ui.prototype.disable=function(){this._enabled=!1,this.reset()},ui.prototype.isEnabled=function(){return this._enabled},ui.prototype.isActive=function(){return this._active};var fi=function(){this._tap=new qn({numTouches:1,numTaps:1}),this.reset()};fi.prototype.reset=function(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,this._tap.reset()},fi.prototype.touchstart=function(t,e,r){this._swipePoint||(this._tapTime&&t.timeStamp-this._tapTime>500&&this.reset(),this._tapTime?r.length>0&&(this._swipePoint=e[0],this._swipeTouch=r[0].identifier):this._tap.touchstart(t,e,r))},fi.prototype.touchmove=function(t,e,r){if(this._tapTime){if(this._swipePoint){if(r[0].identifier!==this._swipeTouch)return;var n=e[0],i=n.y-this._swipePoint.y;return this._swipePoint=n,t.preventDefault(),this._active=!0,{zoomDelta:i/128}}}else this._tap.touchmove(t,e,r)},fi.prototype.touchend=function(t,e,r){this._tapTime?this._swipePoint&&0===r.length&&this.reset():this._tap.touchend(t,e,r)&&(this._tapTime=t.timeStamp)},fi.prototype.touchcancel=function(){this.reset()},fi.prototype.enable=function(){this._enabled=!0},fi.prototype.disable=function(){this._enabled=!1,this.reset()},fi.prototype.isEnabled=function(){return this._enabled},fi.prototype.isActive=function(){return this._active};var hi=function(t,e,r){this._el=t,this._mousePan=e,this._touchPan=r};hi.prototype.enable=function(t){this._inertiaOptions=t||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add(\"mapboxgl-touch-drag-pan\")},hi.prototype.disable=function(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove(\"mapboxgl-touch-drag-pan\")},hi.prototype.isEnabled=function(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()},hi.prototype.isActive=function(){return this._mousePan.isActive()||this._touchPan.isActive()};var pi=function(t,e,r){this._pitchWithRotate=t.pitchWithRotate,this._mouseRotate=e,this._mousePitch=r};pi.prototype.enable=function(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable()},pi.prototype.disable=function(){this._mouseRotate.disable(),this._mousePitch.disable()},pi.prototype.isEnabled=function(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())},pi.prototype.isActive=function(){return this._mouseRotate.isActive()||this._mousePitch.isActive()};var di=function(t,e,r,n){this._el=t,this._touchZoom=e,this._touchRotate=r,this._tapDragZoom=n,this._rotationDisabled=!1,this._enabled=!0};di.prototype.enable=function(t){this._touchZoom.enable(t),this._rotationDisabled||this._touchRotate.enable(t),this._tapDragZoom.enable(),this._el.classList.add(\"mapboxgl-touch-zoom-rotate\")},di.prototype.disable=function(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove(\"mapboxgl-touch-zoom-rotate\")},di.prototype.isEnabled=function(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()},di.prototype.isActive=function(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()},di.prototype.disableRotation=function(){this._rotationDisabled=!0,this._touchRotate.disable()},di.prototype.enableRotation=function(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable()};var gi=function(t){return t.zoom||t.drag||t.pitch||t.rotate},mi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(t.Event);function vi(t){return t.panDelta&&t.panDelta.mag()||t.zoomDelta||t.bearingDelta||t.pitchDelta}var yi=function(e,n){this._map=e,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new On(e),this._bearingSnap=n.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(n),t.bindAll([\"handleEvent\",\"handleWindowEvent\"],this);var i=this._el;this._listeners=[[i,\"touchstart\",{passive:!1}],[i,\"touchmove\",{passive:!1}],[i,\"touchend\",void 0],[i,\"touchcancel\",void 0],[i,\"mousedown\",void 0],[i,\"mousemove\",void 0],[i,\"mouseup\",void 0],[t.window.document,\"mousemove\",{capture:!0}],[t.window.document,\"mouseup\",void 0],[i,\"mouseover\",void 0],[i,\"mouseout\",void 0],[i,\"dblclick\",void 0],[i,\"click\",void 0],[i,\"keydown\",{capture:!1}],[i,\"keyup\",void 0],[i,\"wheel\",{passive:!1}],[i,\"contextmenu\",void 0],[t.window,\"blur\",void 0]];for(var a=0,o=this._listeners;aa?Math.min(2,_):Math.max(.5,_),w=Math.pow(m,1-e),T=i.unproject(x.add(b.mult(e*w)).mult(g));i.setLocationAtPoint(i.renderWorldCopies?T.wrap():T,d)}n._fireMoveEvents(r)}),(function(t){n._afterEase(r,t)}),e),this},r.prototype._prepareEase=function(e,r,n){void 0===n&&(n={}),this._moving=!0,r||n.moving||this.fire(new t.Event(\"movestart\",e)),this._zooming&&!n.zooming&&this.fire(new t.Event(\"zoomstart\",e)),this._rotating&&!n.rotating&&this.fire(new t.Event(\"rotatestart\",e)),this._pitching&&!n.pitching&&this.fire(new t.Event(\"pitchstart\",e))},r.prototype._fireMoveEvents=function(e){this.fire(new t.Event(\"move\",e)),this._zooming&&this.fire(new t.Event(\"zoom\",e)),this._rotating&&this.fire(new t.Event(\"rotate\",e)),this._pitching&&this.fire(new t.Event(\"pitch\",e))},r.prototype._afterEase=function(e,r){if(!this._easeId||!r||this._easeId!==r){delete this._easeId;var n=this._zooming,i=this._rotating,a=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,n&&this.fire(new t.Event(\"zoomend\",e)),i&&this.fire(new t.Event(\"rotateend\",e)),a&&this.fire(new t.Event(\"pitchend\",e)),this.fire(new t.Event(\"moveend\",e))}},r.prototype.flyTo=function(e,r){var n=this;if(!e.essential&&t.browser.prefersReducedMotion){var i=t.pick(e,[\"center\",\"zoom\",\"bearing\",\"pitch\",\"around\"]);return this.jumpTo(i,r)}this.stop(),e=t.extend({offset:[0,0],speed:1.2,curve:1.42,easing:t.ease},e);var a=this.transform,o=this.getZoom(),s=this.getBearing(),l=this.getPitch(),c=this.getPadding(),u=\"zoom\"in e?t.clamp(+e.zoom,a.minZoom,a.maxZoom):o,f=\"bearing\"in e?this._normalizeBearing(e.bearing,s):s,h=\"pitch\"in e?+e.pitch:l,p=\"padding\"in e?e.padding:a.padding,d=a.zoomScale(u-o),g=t.Point.convert(e.offset),m=a.centerPoint.add(g),v=a.pointLocation(m),y=t.LngLat.convert(e.center||v);this._normalizeCenter(y);var x=a.project(v),b=a.project(y).sub(x),_=e.curve,w=Math.max(a.width,a.height),T=w/d,k=b.mag();if(\"minZoom\"in e){var A=t.clamp(Math.min(e.minZoom,o,u),a.minZoom,a.maxZoom),M=w/a.zoomScale(A-o);_=Math.sqrt(M/k*2)}var S=_*_;function E(t){var e=(T*T-w*w+(t?-1:1)*S*S*k*k)/(2*(t?T:w)*S*k);return Math.log(Math.sqrt(e*e+1)-e)}function L(t){return(Math.exp(t)-Math.exp(-t))/2}function C(t){return(Math.exp(t)+Math.exp(-t))/2}var P=E(0),I=function(t){return C(P)/C(P+_*t)},O=function(t){return w*((C(P)*(L(e=P+_*t)/C(e))-L(P))/S)/k;var e},z=(E(1)-P)/_;if(Math.abs(k)<1e-6||!isFinite(z)){if(Math.abs(w-T)<1e-6)return this.easeTo(e,r);var D=Te.maxDuration&&(e.duration=0),this._zooming=!0,this._rotating=s!==f,this._pitching=h!==l,this._padding=!a.isPaddingEqual(p),this._prepareEase(r,!1),this._ease((function(e){var i=e*z,d=1/I(i);a.zoom=1===e?u:o+a.scaleZoom(d),n._rotating&&(a.bearing=t.number(s,f,e)),n._pitching&&(a.pitch=t.number(l,h,e)),n._padding&&(a.interpolatePadding(c,p,e),m=a.centerPoint.add(g));var v=1===e?y:a.unproject(x.add(b.mult(O(i))).mult(d));a.setLocationAtPoint(a.renderWorldCopies?v.wrap():v,m),n._fireMoveEvents(r)}),(function(){return n._afterEase(r)}),e),this},r.prototype.isEasing=function(){return!!this._easeFrameId},r.prototype.stop=function(){return this._stop()},r.prototype._stop=function(t,e){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){var r=this._onEaseEnd;delete this._onEaseEnd,r.call(this,e)}if(!t){var n=this.handlers;n&&n.stop()}return this},r.prototype._ease=function(e,r,n){!1===n.animate||0===n.duration?(e(1),r()):(this._easeStart=t.browser.now(),this._easeOptions=n,this._onEaseFrame=e,this._onEaseEnd=r,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))},r.prototype._renderFrameCallback=function(){var e=Math.min((t.browser.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(e)),e<1?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()},r.prototype._normalizeBearing=function(e,r){e=t.wrap(e,-180,180);var n=Math.abs(e-r);return Math.abs(e-360-r)180?-360:r<-180?360:0}},r}(t.Evented),bi=function(e){void 0===e&&(e={}),this.options=e,t.bindAll([\"_updateEditLink\",\"_updateData\",\"_updateCompact\"],this)};bi.prototype.getDefaultPosition=function(){return\"bottom-right\"},bi.prototype.onAdd=function(t){var e=this.options&&this.options.compact;return this._map=t,this._container=r.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-attrib\"),this._innerContainer=r.create(\"div\",\"mapboxgl-ctrl-attrib-inner\",this._container),e&&this._container.classList.add(\"mapboxgl-compact\"),this._updateAttributions(),this._updateEditLink(),this._map.on(\"styledata\",this._updateData),this._map.on(\"sourcedata\",this._updateData),this._map.on(\"moveend\",this._updateEditLink),void 0===e&&(this._map.on(\"resize\",this._updateCompact),this._updateCompact()),this._container},bi.prototype.onRemove=function(){r.remove(this._container),this._map.off(\"styledata\",this._updateData),this._map.off(\"sourcedata\",this._updateData),this._map.off(\"moveend\",this._updateEditLink),this._map.off(\"resize\",this._updateCompact),this._map=void 0,this._attribHTML=void 0},bi.prototype._updateEditLink=function(){var e=this._editLink;e||(e=this._editLink=this._container.querySelector(\".mapbox-improve-map\"));var r=[{key:\"owner\",value:this.styleOwner},{key:\"id\",value:this.styleId},{key:\"access_token\",value:this._map._requestManager._customAccessToken||t.config.ACCESS_TOKEN}];if(e){var n=r.reduce((function(t,e,n){return e.value&&(t+=e.key+\"=\"+e.value+(n=0)return!1;return!0}))).join(\" | \");o!==this._attribHTML&&(this._attribHTML=o,t.length?(this._innerContainer.innerHTML=o,this._container.classList.remove(\"mapboxgl-attrib-empty\")):this._container.classList.add(\"mapboxgl-attrib-empty\"),this._editLink=null)}},bi.prototype._updateCompact=function(){this._map.getCanvasContainer().offsetWidth<=640?this._container.classList.add(\"mapboxgl-compact\"):this._container.classList.remove(\"mapboxgl-compact\")};var _i=function(){t.bindAll([\"_updateLogo\"],this),t.bindAll([\"_updateCompact\"],this)};_i.prototype.onAdd=function(t){this._map=t,this._container=r.create(\"div\",\"mapboxgl-ctrl\");var e=r.create(\"a\",\"mapboxgl-ctrl-logo\");return e.target=\"_blank\",e.rel=\"noopener nofollow\",e.href=\"https://www.mapbox.com/\",e.setAttribute(\"aria-label\",this._map._getUIString(\"LogoControl.Title\")),e.setAttribute(\"rel\",\"noopener nofollow\"),this._container.appendChild(e),this._container.style.display=\"none\",this._map.on(\"sourcedata\",this._updateLogo),this._updateLogo(),this._map.on(\"resize\",this._updateCompact),this._updateCompact(),this._container},_i.prototype.onRemove=function(){r.remove(this._container),this._map.off(\"sourcedata\",this._updateLogo),this._map.off(\"resize\",this._updateCompact)},_i.prototype.getDefaultPosition=function(){return\"bottom-left\"},_i.prototype._updateLogo=function(t){t&&\"metadata\"!==t.sourceDataType||(this._container.style.display=this._logoRequired()?\"block\":\"none\")},_i.prototype._logoRequired=function(){if(this._map.style){var t=this._map.style.sourceCaches;for(var e in t){if(t[e].getSource().mapbox_logo)return!0}return!1}},_i.prototype._updateCompact=function(){var t=this._container.children;if(t.length){var e=t[0];this._map.getCanvasContainer().offsetWidth<250?e.classList.add(\"mapboxgl-compact\"):e.classList.remove(\"mapboxgl-compact\")}};var wi=function(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1};wi.prototype.add=function(t){var e=++this._id;return this._queue.push({callback:t,id:e,cancelled:!1}),e},wi.prototype.remove=function(t){for(var e=this._currentlyRunning,r=0,n=e?this._queue.concat(e):this._queue;re.maxZoom)throw new Error(\"maxZoom must be greater than or equal to minZoom\");if(null!=e.minPitch&&null!=e.maxPitch&&e.minPitch>e.maxPitch)throw new Error(\"maxPitch must be greater than or equal to minPitch\");if(null!=e.minPitch&&e.minPitch<0)throw new Error(\"minPitch must be greater than or equal to 0\");if(null!=e.maxPitch&&e.maxPitch>60)throw new Error(\"maxPitch must be less than or equal to 60\");var i=new An(e.minZoom,e.maxZoom,e.minPitch,e.maxPitch,e.renderWorldCopies);if(n.call(this,i,e),this._interactive=e.interactive,this._maxTileCacheSize=e.maxTileCacheSize,this._failIfMajorPerformanceCaveat=e.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=e.preserveDrawingBuffer,this._antialias=e.antialias,this._trackResize=e.trackResize,this._bearingSnap=e.bearingSnap,this._refreshExpiredTiles=e.refreshExpiredTiles,this._fadeDuration=e.fadeDuration,this._crossSourceCollisions=e.crossSourceCollisions,this._crossFadingFactor=1,this._collectResourceTiming=e.collectResourceTiming,this._renderTaskQueue=new wi,this._controls=[],this._mapId=t.uniqueId(),this._locale=t.extend({},Ti,e.locale),this._requestManager=new t.RequestManager(e.transformRequest,e.accessToken),\"string\"==typeof e.container){if(this._container=t.window.document.getElementById(e.container),!this._container)throw new Error(\"Container '\"+e.container+\"' not found.\")}else{if(!(e.container instanceof Ai))throw new Error(\"Invalid type: 'container' must be a String or HTMLElement.\");this._container=e.container}if(e.maxBounds&&this.setMaxBounds(e.maxBounds),t.bindAll([\"_onWindowOnline\",\"_onWindowResize\",\"_contextLost\",\"_contextRestored\"],this),this._setupContainer(),this._setupPainter(),void 0===this.painter)throw new Error(\"Failed to initialize WebGL.\");this.on(\"move\",(function(){return r._update(!1)})),this.on(\"moveend\",(function(){return r._update(!1)})),this.on(\"zoom\",(function(){return r._update(!0)})),void 0!==t.window&&(t.window.addEventListener(\"online\",this._onWindowOnline,!1),t.window.addEventListener(\"resize\",this._onWindowResize,!1)),this.handlers=new yi(this,e);var a=\"string\"==typeof e.hash&&e.hash||void 0;this._hash=e.hash&&new Sn(a).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:e.center,zoom:e.zoom,bearing:e.bearing,pitch:e.pitch}),e.bounds&&(this.resize(),this.fitBounds(e.bounds,t.extend({},e.fitBoundsOptions,{duration:0})))),this.resize(),this._localIdeographFontFamily=e.localIdeographFontFamily,e.style&&this.setStyle(e.style,{localIdeographFontFamily:e.localIdeographFontFamily}),e.attributionControl&&this.addControl(new bi({customAttribution:e.customAttribution})),this.addControl(new _i,e.logoPosition),this.on(\"style.load\",(function(){r.transform.unmodified&&r.jumpTo(r.style.stylesheet)})),this.on(\"data\",(function(e){r._update(\"style\"===e.dataType),r.fire(new t.Event(e.dataType+\"data\",e))})),this.on(\"dataloading\",(function(e){r.fire(new t.Event(e.dataType+\"dataloading\",e))}))}n&&(i.__proto__=n),i.prototype=Object.create(n&&n.prototype),i.prototype.constructor=i;var a={showTileBoundaries:{configurable:!0},showPadding:{configurable:!0},showCollisionBoxes:{configurable:!0},showOverdrawInspector:{configurable:!0},repaint:{configurable:!0},vertices:{configurable:!0},version:{configurable:!0}};return i.prototype._getMapId=function(){return this._mapId},i.prototype.addControl=function(e,r){if(void 0===r&&e.getDefaultPosition&&(r=e.getDefaultPosition()),void 0===r&&(r=\"top-right\"),!e||!e.onAdd)return this.fire(new t.ErrorEvent(new Error(\"Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.\")));var n=e.onAdd(this);this._controls.push(e);var i=this._controlPositions[r];return-1!==r.indexOf(\"bottom\")?i.insertBefore(n,i.firstChild):i.appendChild(n),this},i.prototype.removeControl=function(e){if(!e||!e.onRemove)return this.fire(new t.ErrorEvent(new Error(\"Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.\")));var r=this._controls.indexOf(e);return r>-1&&this._controls.splice(r,1),e.onRemove(this),this},i.prototype.resize=function(e){var r=this._containerDimensions(),n=r[0],i=r[1];this._resizeCanvas(n,i),this.transform.resize(n,i),this.painter.resize(n,i);var a=!this._moving;return a&&(this.stop(),this.fire(new t.Event(\"movestart\",e)).fire(new t.Event(\"move\",e))),this.fire(new t.Event(\"resize\",e)),a&&this.fire(new t.Event(\"moveend\",e)),this},i.prototype.getBounds=function(){return this.transform.getBounds()},i.prototype.getMaxBounds=function(){return this.transform.getMaxBounds()},i.prototype.setMaxBounds=function(e){return this.transform.setMaxBounds(t.LngLatBounds.convert(e)),this._update()},i.prototype.setMinZoom=function(t){if((t=null==t?-2:t)>=-2&&t<=this.transform.maxZoom)return this.transform.minZoom=t,this._update(),this.getZoom()=this.transform.minZoom)return this.transform.maxZoom=t,this._update(),this.getZoom()>t&&this.setZoom(t),this;throw new Error(\"maxZoom must be greater than the current minZoom\")},i.prototype.getMaxZoom=function(){return this.transform.maxZoom},i.prototype.setMinPitch=function(t){if((t=null==t?0:t)<0)throw new Error(\"minPitch must be greater than or equal to 0\");if(t>=0&&t<=this.transform.maxPitch)return this.transform.minPitch=t,this._update(),this.getPitch()60)throw new Error(\"maxPitch must be less than or equal to 60\");if(t>=this.transform.minPitch)return this.transform.maxPitch=t,this._update(),this.getPitch()>t&&this.setPitch(t),this;throw new Error(\"maxPitch must be greater than the current minPitch\")},i.prototype.getMaxPitch=function(){return this.transform.maxPitch},i.prototype.getRenderWorldCopies=function(){return this.transform.renderWorldCopies},i.prototype.setRenderWorldCopies=function(t){return this.transform.renderWorldCopies=t,this._update()},i.prototype.project=function(e){return this.transform.locationPoint(t.LngLat.convert(e))},i.prototype.unproject=function(e){return this.transform.pointLocation(t.Point.convert(e))},i.prototype.isMoving=function(){return this._moving||this.handlers.isMoving()},i.prototype.isZooming=function(){return this._zooming||this.handlers.isZooming()},i.prototype.isRotating=function(){return this._rotating||this.handlers.isRotating()},i.prototype._createDelegatedListener=function(t,e,r){var n,i=this;if(\"mouseenter\"===t||\"mouseover\"===t){var a=!1;return{layer:e,listener:r,delegates:{mousemove:function(n){var o=i.getLayer(e)?i.queryRenderedFeatures(n.point,{layers:[e]}):[];o.length?a||(a=!0,r.call(i,new Rn(t,i,n.originalEvent,{features:o}))):a=!1},mouseout:function(){a=!1}}}}if(\"mouseleave\"===t||\"mouseout\"===t){var o=!1;return{layer:e,listener:r,delegates:{mousemove:function(n){(i.getLayer(e)?i.queryRenderedFeatures(n.point,{layers:[e]}):[]).length?o=!0:o&&(o=!1,r.call(i,new Rn(t,i,n.originalEvent)))},mouseout:function(e){o&&(o=!1,r.call(i,new Rn(t,i,e.originalEvent)))}}}}return{layer:e,listener:r,delegates:(n={},n[t]=function(t){var n=i.getLayer(e)?i.queryRenderedFeatures(t.point,{layers:[e]}):[];n.length&&(t.features=n,r.call(i,t),delete t.features)},n)}},i.prototype.on=function(t,e,r){if(void 0===r)return n.prototype.on.call(this,t,e);var i=this._createDelegatedListener(t,e,r);for(var a in this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[t]=this._delegatedListeners[t]||[],this._delegatedListeners[t].push(i),i.delegates)this.on(a,i.delegates[a]);return this},i.prototype.once=function(t,e,r){if(void 0===r)return n.prototype.once.call(this,t,e);var i=this._createDelegatedListener(t,e,r);for(var a in i.delegates)this.once(a,i.delegates[a]);return this},i.prototype.off=function(t,e,r){var i=this;if(void 0===r)return n.prototype.off.call(this,t,e);return this._delegatedListeners&&this._delegatedListeners[t]&&function(n){for(var a=n[t],o=0;o180;){var s=n.locationPoint(e);if(s.x>=0&&s.y>=0&&s.x<=n.width&&s.y<=n.height)break;e.lng>n.center.lng?e.lng-=360:e.lng+=360}return e}Ii.prototype.down=function(t,e){this.mouseRotate.mousedown(t,e),this.mousePitch&&this.mousePitch.mousedown(t,e),r.disableDrag()},Ii.prototype.move=function(t,e){var r=this.map,n=this.mouseRotate.mousemoveWindow(t,e);if(n&&n.bearingDelta&&r.setBearing(r.getBearing()+n.bearingDelta),this.mousePitch){var i=this.mousePitch.mousemoveWindow(t,e);i&&i.pitchDelta&&r.setPitch(r.getPitch()+i.pitchDelta)}},Ii.prototype.off=function(){var t=this.element;r.removeEventListener(t,\"mousedown\",this.mousedown),r.removeEventListener(t,\"touchstart\",this.touchstart,{passive:!1}),r.removeEventListener(t,\"touchmove\",this.touchmove),r.removeEventListener(t,\"touchend\",this.touchend),r.removeEventListener(t,\"touchcancel\",this.reset),this.offTemp()},Ii.prototype.offTemp=function(){r.enableDrag(),r.removeEventListener(t.window,\"mousemove\",this.mousemove),r.removeEventListener(t.window,\"mouseup\",this.mouseup)},Ii.prototype.mousedown=function(e){this.down(t.extend({},e,{ctrlKey:!0,preventDefault:function(){return e.preventDefault()}}),r.mousePos(this.element,e)),r.addEventListener(t.window,\"mousemove\",this.mousemove),r.addEventListener(t.window,\"mouseup\",this.mouseup)},Ii.prototype.mousemove=function(t){this.move(t,r.mousePos(this.element,t))},Ii.prototype.mouseup=function(t){this.mouseRotate.mouseupWindow(t),this.mousePitch&&this.mousePitch.mouseupWindow(t),this.offTemp()},Ii.prototype.touchstart=function(t){1!==t.targetTouches.length?this.reset():(this._startPos=this._lastPos=r.touchPos(this.element,t.targetTouches)[0],this.down({type:\"mousedown\",button:0,ctrlKey:!0,preventDefault:function(){return t.preventDefault()}},this._startPos))},Ii.prototype.touchmove=function(t){1!==t.targetTouches.length?this.reset():(this._lastPos=r.touchPos(this.element,t.targetTouches)[0],this.move({preventDefault:function(){return t.preventDefault()}},this._lastPos))},Ii.prototype.touchend=function(t){0===t.targetTouches.length&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos)e.getEast()||r.latitudee.getNorth())},n.prototype._setErrorState=function(){switch(this._watchState){case\"WAITING_ACTIVE\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\");break;case\"ACTIVE_LOCK\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\");break;case\"BACKGROUND\":this._watchState=\"BACKGROUND_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\")}},n.prototype._onSuccess=function(e){if(this._map){if(this._isOutOfMapMaxBounds(e))return this._setErrorState(),this.fire(new t.Event(\"outofmaxbounds\",e)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=e,this._watchState){case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"BACKGROUND\":case\"BACKGROUND_ERROR\":this._watchState=\"BACKGROUND\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\")}this.options.showUserLocation&&\"OFF\"!==this._watchState&&this._updateMarker(e),this.options.trackUserLocation&&\"ACTIVE_LOCK\"!==this._watchState||this._updateCamera(e),this.options.showUserLocation&&this._dotElement.classList.remove(\"mapboxgl-user-location-dot-stale\"),this.fire(new t.Event(\"geolocate\",e)),this._finish()}},n.prototype._updateCamera=function(e){var r=new t.LngLat(e.coords.longitude,e.coords.latitude),n=e.coords.accuracy,i=this._map.getBearing(),a=t.extend({bearing:i},this.options.fitBoundsOptions);this._map.fitBounds(r.toBounds(n),a,{geolocateSource:!0})},n.prototype._updateMarker=function(e){if(e){var r=new t.LngLat(e.coords.longitude,e.coords.latitude);this._accuracyCircleMarker.setLngLat(r).addTo(this._map),this._userLocationDotMarker.setLngLat(r).addTo(this._map),this._accuracy=e.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()},n.prototype._updateCircleRadius=function(){var t=this._map._container.clientHeight/2,e=this._map.unproject([0,t]),r=this._map.unproject([1,t]),n=e.distanceTo(r),i=Math.ceil(2*this._accuracy/n);this._circleElement.style.width=i+\"px\",this._circleElement.style.height=i+\"px\"},n.prototype._onZoom=function(){this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()},n.prototype._onError=function(e){if(this._map){if(this.options.trackUserLocation)if(1===e.code){this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.disabled=!0;var r=this._map._getUIString(\"GeolocateControl.LocationNotAvailable\");this._geolocateButton.title=r,this._geolocateButton.setAttribute(\"aria-label\",r),void 0!==this._geolocationWatchID&&this._clearWatch()}else{if(3===e.code&&ji)return;this._setErrorState()}\"OFF\"!==this._watchState&&this.options.showUserLocation&&this._dotElement.classList.add(\"mapboxgl-user-location-dot-stale\"),this.fire(new t.Event(\"error\",e)),this._finish()}},n.prototype._finish=function(){this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},n.prototype._setupUI=function(e){var n=this;if(this._container.addEventListener(\"contextmenu\",(function(t){return t.preventDefault()})),this._geolocateButton=r.create(\"button\",\"mapboxgl-ctrl-geolocate\",this._container),r.create(\"span\",\"mapboxgl-ctrl-icon\",this._geolocateButton).setAttribute(\"aria-hidden\",!0),this._geolocateButton.type=\"button\",!1===e){t.warnOnce(\"Geolocation support is not available so the GeolocateControl will be disabled.\");var i=this._map._getUIString(\"GeolocateControl.LocationNotAvailable\");this._geolocateButton.disabled=!0,this._geolocateButton.title=i,this._geolocateButton.setAttribute(\"aria-label\",i)}else{var a=this._map._getUIString(\"GeolocateControl.FindMyLocation\");this._geolocateButton.title=a,this._geolocateButton.setAttribute(\"aria-label\",a)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this._watchState=\"OFF\"),this.options.showUserLocation&&(this._dotElement=r.create(\"div\",\"mapboxgl-user-location-dot\"),this._userLocationDotMarker=new Fi(this._dotElement),this._circleElement=r.create(\"div\",\"mapboxgl-user-location-accuracy-circle\"),this._accuracyCircleMarker=new Fi({element:this._circleElement,pitchAlignment:\"map\"}),this.options.trackUserLocation&&(this._watchState=\"OFF\"),this._map.on(\"zoom\",this._onZoom)),this._geolocateButton.addEventListener(\"click\",this.trigger.bind(this)),this._setup=!0,this.options.trackUserLocation&&this._map.on(\"movestart\",(function(e){var r=e.originalEvent&&\"resize\"===e.originalEvent.type;e.geolocateSource||\"ACTIVE_LOCK\"!==n._watchState||r||(n._watchState=\"BACKGROUND\",n._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\"),n._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),n.fire(new t.Event(\"trackuserlocationend\")))}))},n.prototype.trigger=function(){if(!this._setup)return t.warnOnce(\"Geolocate control triggered before added to a map\"),!1;if(this.options.trackUserLocation){switch(this._watchState){case\"OFF\":this._watchState=\"WAITING_ACTIVE\",this.fire(new t.Event(\"trackuserlocationstart\"));break;case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":case\"BACKGROUND_ERROR\":Ni--,ji=!1,this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this.fire(new t.Event(\"trackuserlocationend\"));break;case\"BACKGROUND\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new t.Event(\"trackuserlocationstart\"))}switch(this._watchState){case\"WAITING_ACTIVE\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"ACTIVE_LOCK\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"ACTIVE_ERROR\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\");break;case\"BACKGROUND\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\");break;case\"BACKGROUND_ERROR\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background-error\")}if(\"OFF\"===this._watchState&&void 0!==this._geolocationWatchID)this._clearWatch();else if(void 0===this._geolocationWatchID){var e;this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"true\"),++Ni>1?(e={maximumAge:6e5,timeout:0},ji=!0):(e=this.options.positionOptions,ji=!1),this._geolocationWatchID=t.window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,e)}}else t.window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return!0},n.prototype._clearWatch=function(){t.window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this.options.showUserLocation&&this._updateMarker(null)},n}(t.Evented),Vi={maxWidth:100,unit:\"metric\"},Hi=function(e){this.options=t.extend({},Vi,e),t.bindAll([\"_onMove\",\"setUnit\"],this)};function qi(t,e,r){var n=r&&r.maxWidth||100,i=t._container.clientHeight/2,a=t.unproject([0,i]),o=t.unproject([n,i]),s=a.distanceTo(o);if(r&&\"imperial\"===r.unit){var l=3.2808*s;if(l>5280)Gi(e,n,l/5280,t._getUIString(\"ScaleControl.Miles\"));else Gi(e,n,l,t._getUIString(\"ScaleControl.Feet\"))}else if(r&&\"nautical\"===r.unit){Gi(e,n,s/1852,t._getUIString(\"ScaleControl.NauticalMiles\"))}else s>=1e3?Gi(e,n,s/1e3,t._getUIString(\"ScaleControl.Kilometers\")):Gi(e,n,s,t._getUIString(\"ScaleControl.Meters\"))}function Gi(t,e,r,n){var i,a,o,s=(i=r,a=Math.pow(10,(\"\"+Math.floor(i)).length-1),o=(o=i/a)>=10?10:o>=5?5:o>=3?3:o>=2?2:o>=1?1:function(t){var e=Math.pow(10,Math.ceil(-Math.log(t)/Math.LN10));return Math.round(t*e)/e}(o),a*o),l=s/r;t.style.width=e*l+\"px\",t.innerHTML=s+\" \"+n}Hi.prototype.getDefaultPosition=function(){return\"bottom-left\"},Hi.prototype._onMove=function(){qi(this._map,this._container,this.options)},Hi.prototype.onAdd=function(t){return this._map=t,this._container=r.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-scale\",t.getContainer()),this._map.on(\"move\",this._onMove),this._onMove(),this._container},Hi.prototype.onRemove=function(){r.remove(this._container),this._map.off(\"move\",this._onMove),this._map=void 0},Hi.prototype.setUnit=function(t){this.options.unit=t,qi(this._map,this._container,this.options)};var Yi=function(e){this._fullscreen=!1,e&&e.container&&(e.container instanceof t.window.HTMLElement?this._container=e.container:t.warnOnce(\"Full screen control 'container' must be a DOM element.\")),t.bindAll([\"_onClickFullscreen\",\"_changeIcon\"],this),\"onfullscreenchange\"in t.window.document?this._fullscreenchange=\"fullscreenchange\":\"onmozfullscreenchange\"in t.window.document?this._fullscreenchange=\"mozfullscreenchange\":\"onwebkitfullscreenchange\"in t.window.document?this._fullscreenchange=\"webkitfullscreenchange\":\"onmsfullscreenchange\"in t.window.document&&(this._fullscreenchange=\"MSFullscreenChange\")};Yi.prototype.onAdd=function(e){return this._map=e,this._container||(this._container=this._map.getContainer()),this._controlContainer=r.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-group\"),this._checkFullscreenSupport()?this._setupUI():(this._controlContainer.style.display=\"none\",t.warnOnce(\"This device does not support fullscreen mode.\")),this._controlContainer},Yi.prototype.onRemove=function(){r.remove(this._controlContainer),this._map=null,t.window.document.removeEventListener(this._fullscreenchange,this._changeIcon)},Yi.prototype._checkFullscreenSupport=function(){return!!(t.window.document.fullscreenEnabled||t.window.document.mozFullScreenEnabled||t.window.document.msFullscreenEnabled||t.window.document.webkitFullscreenEnabled)},Yi.prototype._setupUI=function(){var e=this._fullscreenButton=r.create(\"button\",\"mapboxgl-ctrl-fullscreen\",this._controlContainer);r.create(\"span\",\"mapboxgl-ctrl-icon\",e).setAttribute(\"aria-hidden\",!0),e.type=\"button\",this._updateTitle(),this._fullscreenButton.addEventListener(\"click\",this._onClickFullscreen),t.window.document.addEventListener(this._fullscreenchange,this._changeIcon)},Yi.prototype._updateTitle=function(){var t=this._getTitle();this._fullscreenButton.setAttribute(\"aria-label\",t),this._fullscreenButton.title=t},Yi.prototype._getTitle=function(){return this._map._getUIString(this._isFullscreen()?\"FullscreenControl.Exit\":\"FullscreenControl.Enter\")},Yi.prototype._isFullscreen=function(){return this._fullscreen},Yi.prototype._changeIcon=function(){(t.window.document.fullscreenElement||t.window.document.mozFullScreenElement||t.window.document.webkitFullscreenElement||t.window.document.msFullscreenElement)===this._container!==this._fullscreen&&(this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle(\"mapboxgl-ctrl-shrink\"),this._fullscreenButton.classList.toggle(\"mapboxgl-ctrl-fullscreen\"),this._updateTitle())},Yi.prototype._onClickFullscreen=function(){this._isFullscreen()?t.window.document.exitFullscreen?t.window.document.exitFullscreen():t.window.document.mozCancelFullScreen?t.window.document.mozCancelFullScreen():t.window.document.msExitFullscreen?t.window.document.msExitFullscreen():t.window.document.webkitCancelFullScreen&&t.window.document.webkitCancelFullScreen():this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen&&this._container.webkitRequestFullscreen()};var Wi={closeButton:!0,closeOnClick:!0,className:\"\",maxWidth:\"240px\"},Xi=function(e){function n(r){e.call(this),this.options=t.extend(Object.create(Wi),r),t.bindAll([\"_update\",\"_onClose\",\"remove\",\"_onMouseMove\",\"_onMouseUp\",\"_onDrag\"],this)}return e&&(n.__proto__=e),n.prototype=Object.create(e&&e.prototype),n.prototype.constructor=n,n.prototype.addTo=function(e){return this._map&&this.remove(),this._map=e,this.options.closeOnClick&&this._map.on(\"click\",this._onClose),this.options.closeOnMove&&this._map.on(\"move\",this._onClose),this._map.on(\"remove\",this.remove),this._update(),this._trackPointer?(this._map.on(\"mousemove\",this._onMouseMove),this._map.on(\"mouseup\",this._onMouseUp),this._container&&this._container.classList.add(\"mapboxgl-popup-track-pointer\"),this._map._canvasContainer.classList.add(\"mapboxgl-track-pointer\")):this._map.on(\"move\",this._update),this.fire(new t.Event(\"open\")),this},n.prototype.isOpen=function(){return!!this._map},n.prototype.remove=function(){return this._content&&r.remove(this._content),this._container&&(r.remove(this._container),delete this._container),this._map&&(this._map.off(\"move\",this._update),this._map.off(\"move\",this._onClose),this._map.off(\"click\",this._onClose),this._map.off(\"remove\",this.remove),this._map.off(\"mousemove\",this._onMouseMove),this._map.off(\"mouseup\",this._onMouseUp),this._map.off(\"drag\",this._onDrag),delete this._map),this.fire(new t.Event(\"close\")),this},n.prototype.getLngLat=function(){return this._lngLat},n.prototype.setLngLat=function(e){return this._lngLat=t.LngLat.convert(e),this._pos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on(\"move\",this._update),this._map.off(\"mousemove\",this._onMouseMove),this._container&&this._container.classList.remove(\"mapboxgl-popup-track-pointer\"),this._map._canvasContainer.classList.remove(\"mapboxgl-track-pointer\")),this},n.prototype.trackPointer=function(){return this._trackPointer=!0,this._pos=null,this._update(),this._map&&(this._map.off(\"move\",this._update),this._map.on(\"mousemove\",this._onMouseMove),this._map.on(\"drag\",this._onDrag),this._container&&this._container.classList.add(\"mapboxgl-popup-track-pointer\"),this._map._canvasContainer.classList.add(\"mapboxgl-track-pointer\")),this},n.prototype.getElement=function(){return this._container},n.prototype.setText=function(e){return this.setDOMContent(t.window.document.createTextNode(e))},n.prototype.setHTML=function(e){var r,n=t.window.document.createDocumentFragment(),i=t.window.document.createElement(\"body\");for(i.innerHTML=e;r=i.firstChild;)n.appendChild(r);return this.setDOMContent(n)},n.prototype.getMaxWidth=function(){return this._container&&this._container.style.maxWidth},n.prototype.setMaxWidth=function(t){return this.options.maxWidth=t,this._update(),this},n.prototype.setDOMContent=function(t){return this._createContent(),this._content.appendChild(t),this._update(),this},n.prototype.addClassName=function(t){this._container&&this._container.classList.add(t)},n.prototype.removeClassName=function(t){this._container&&this._container.classList.remove(t)},n.prototype.toggleClassName=function(t){if(this._container)return this._container.classList.toggle(t)},n.prototype._createContent=function(){this._content&&r.remove(this._content),this._content=r.create(\"div\",\"mapboxgl-popup-content\",this._container),this.options.closeButton&&(this._closeButton=r.create(\"button\",\"mapboxgl-popup-close-button\",this._content),this._closeButton.type=\"button\",this._closeButton.setAttribute(\"aria-label\",\"Close popup\"),this._closeButton.innerHTML=\"×\",this._closeButton.addEventListener(\"click\",this._onClose))},n.prototype._onMouseUp=function(t){this._update(t.point)},n.prototype._onMouseMove=function(t){this._update(t.point)},n.prototype._onDrag=function(t){this._update(t.point)},n.prototype._update=function(e){var n=this,i=this._lngLat||this._trackPointer;if(this._map&&i&&this._content&&(this._container||(this._container=r.create(\"div\",\"mapboxgl-popup\",this._map.getContainer()),this._tip=r.create(\"div\",\"mapboxgl-popup-tip\",this._container),this._container.appendChild(this._content),this.options.className&&this.options.className.split(\" \").forEach((function(t){return n._container.classList.add(t)})),this._trackPointer&&this._container.classList.add(\"mapboxgl-popup-track-pointer\")),this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._map.transform.renderWorldCopies&&!this._trackPointer&&(this._lngLat=Oi(this._lngLat,this._pos,this._map.transform)),!this._trackPointer||e)){var a=this._pos=this._trackPointer&&e?e:this._map.project(this._lngLat),o=this.options.anchor,s=function e(r){if(r){if(\"number\"==typeof r){var n=Math.round(Math.sqrt(.5*Math.pow(r,2)));return{center:new t.Point(0,0),top:new t.Point(0,r),\"top-left\":new t.Point(n,n),\"top-right\":new t.Point(-n,n),bottom:new t.Point(0,-r),\"bottom-left\":new t.Point(n,-n),\"bottom-right\":new t.Point(-n,-n),left:new t.Point(r,0),right:new t.Point(-r,0)}}if(r instanceof t.Point||Array.isArray(r)){var i=t.Point.convert(r);return{center:i,top:i,\"top-left\":i,\"top-right\":i,bottom:i,\"bottom-left\":i,\"bottom-right\":i,left:i,right:i}}return{center:t.Point.convert(r.center||[0,0]),top:t.Point.convert(r.top||[0,0]),\"top-left\":t.Point.convert(r[\"top-left\"]||[0,0]),\"top-right\":t.Point.convert(r[\"top-right\"]||[0,0]),bottom:t.Point.convert(r.bottom||[0,0]),\"bottom-left\":t.Point.convert(r[\"bottom-left\"]||[0,0]),\"bottom-right\":t.Point.convert(r[\"bottom-right\"]||[0,0]),left:t.Point.convert(r.left||[0,0]),right:t.Point.convert(r.right||[0,0])}}return e(new t.Point(0,0))}(this.options.offset);if(!o){var l,c=this._container.offsetWidth,u=this._container.offsetHeight;l=a.y+s.bottom.ythis._map.transform.height-u?[\"bottom\"]:[],a.xthis._map.transform.width-c/2&&l.push(\"right\"),o=0===l.length?\"bottom\":l.join(\"-\")}var f=a.add(s[o]).round();r.setTransform(this._container,zi[o]+\" translate(\"+f.x+\"px,\"+f.y+\"px)\"),Di(this._container,o,\"popup\")}},n.prototype._onClose=function(){this.remove()},n}(t.Evented);var Zi={version:t.version,supported:e,setRTLTextPlugin:t.setRTLTextPlugin,getRTLTextPluginStatus:t.getRTLTextPluginStatus,Map:Ei,NavigationControl:Pi,GeolocateControl:Ui,AttributionControl:bi,ScaleControl:Hi,FullscreenControl:Yi,Popup:Xi,Marker:Fi,Style:qe,LngLat:t.LngLat,LngLatBounds:t.LngLatBounds,Point:t.Point,MercatorCoordinate:t.MercatorCoordinate,Evented:t.Evented,config:t.config,prewarm:function(){Bt().acquire(zt)},clearPrewarmedResources:function(){var t=Rt;t&&(t.isPreloaded()&&1===t.numActive()?(t.release(zt),Rt=null):console.warn(\"Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()\"))},get accessToken(){return t.config.ACCESS_TOKEN},set accessToken(e){t.config.ACCESS_TOKEN=e},get baseApiUrl(){return t.config.API_URL},set baseApiUrl(e){t.config.API_URL=e},get workerCount(){return Dt.workerCount},set workerCount(t){Dt.workerCount=t},get maxParallelImageRequests(){return t.config.MAX_PARALLEL_IMAGE_REQUESTS},set maxParallelImageRequests(e){t.config.MAX_PARALLEL_IMAGE_REQUESTS=e},clearStorage:function(e){t.clearTileCache(e)},workerUrl:\"\"};return Zi})),r}))},{}],240:[function(t,e,r){\"use strict\";e.exports=Math.log2||function(t){return Math.log(t)*Math.LOG2E}},{}],241:[function(t,e,r){\"use strict\";e.exports=function(t,e){e||(e=t,t=window);var r=0,i=0,a=0,o={shift:!1,alt:!1,control:!1,meta:!1},s=!1;function l(t){var e=!1;return\"altKey\"in t&&(e=e||t.altKey!==o.alt,o.alt=!!t.altKey),\"shiftKey\"in t&&(e=e||t.shiftKey!==o.shift,o.shift=!!t.shiftKey),\"ctrlKey\"in t&&(e=e||t.ctrlKey!==o.control,o.control=!!t.ctrlKey),\"metaKey\"in t&&(e=e||t.metaKey!==o.meta,o.meta=!!t.metaKey),e}function c(t,s){var c=n.x(s),u=n.y(s);\"buttons\"in s&&(t=0|s.buttons),(t!==r||c!==i||u!==a||l(s))&&(r=0|t,i=c||0,a=u||0,e&&e(r,i,a,o))}function u(t){c(0,t)}function f(){(r||i||a||o.shift||o.alt||o.meta||o.control)&&(i=a=0,r=0,o.shift=o.alt=o.control=o.meta=!1,e&&e(0,0,0,o))}function h(t){l(t)&&e&&e(r,i,a,o)}function p(t){0===n.buttons(t)?c(0,t):c(r,t)}function d(t){c(r|n.buttons(t),t)}function g(t){c(r&~n.buttons(t),t)}function m(){s||(s=!0,t.addEventListener(\"mousemove\",p),t.addEventListener(\"mousedown\",d),t.addEventListener(\"mouseup\",g),t.addEventListener(\"mouseleave\",u),t.addEventListener(\"mouseenter\",u),t.addEventListener(\"mouseout\",u),t.addEventListener(\"mouseover\",u),t.addEventListener(\"blur\",f),t.addEventListener(\"keyup\",h),t.addEventListener(\"keydown\",h),t.addEventListener(\"keypress\",h),t!==window&&(window.addEventListener(\"blur\",f),window.addEventListener(\"keyup\",h),window.addEventListener(\"keydown\",h),window.addEventListener(\"keypress\",h)))}m();var v={element:t};return Object.defineProperties(v,{enabled:{get:function(){return s},set:function(e){e?m():function(){if(!s)return;s=!1,t.removeEventListener(\"mousemove\",p),t.removeEventListener(\"mousedown\",d),t.removeEventListener(\"mouseup\",g),t.removeEventListener(\"mouseleave\",u),t.removeEventListener(\"mouseenter\",u),t.removeEventListener(\"mouseout\",u),t.removeEventListener(\"mouseover\",u),t.removeEventListener(\"blur\",f),t.removeEventListener(\"keyup\",h),t.removeEventListener(\"keydown\",h),t.removeEventListener(\"keypress\",h),t!==window&&(window.removeEventListener(\"blur\",f),window.removeEventListener(\"keyup\",h),window.removeEventListener(\"keydown\",h),window.removeEventListener(\"keypress\",h))}()},enumerable:!0},buttons:{get:function(){return r},enumerable:!0},x:{get:function(){return i},enumerable:!0},y:{get:function(){return a},enumerable:!0},mods:{get:function(){return o},enumerable:!0}}),v};var n=t(\"mouse-event\")},{\"mouse-event\":243}],242:[function(t,e,r){var n={left:0,top:0};e.exports=function(t,e,r){e=e||t.currentTarget||t.srcElement,Array.isArray(r)||(r=[0,0]);var i=t.clientX||0,a=t.clientY||0,o=(s=e,s===window||s===document||s===document.body?n:s.getBoundingClientRect());var s;return r[0]=i-o.left,r[1]=a-o.top,r}},{}],243:[function(t,e,r){\"use strict\";function n(t){return t.target||t.srcElement||window}r.buttons=function(t){if(\"object\"==typeof t){if(\"buttons\"in t)return t.buttons;if(\"which\"in t){if(2===(e=t.which))return 4;if(3===e)return 2;if(e>0)return 1<=0)return 1<=-t},pointBetween:function(e,r,n){var i=e[1]-r[1],a=n[0]-r[0],o=e[0]-r[0],s=n[1]-r[1],l=o*a+i*s;return!(l-t)},pointsSameX:function(e,r){return Math.abs(e[0]-r[0])t!=o-i>t&&(a-c)*(i-u)/(o-u)+c-n>t&&(s=!s),a=c,o=u}return s}};return e}},{}],257:[function(t,e,r){var n={toPolygon:function(t,e){function r(e){if(e.length<=0)return t.segments({inverted:!1,regions:[]});function r(e){var r=e.slice(0,e.length-1);return t.segments({inverted:!1,regions:[r]})}for(var n=r(e[0]),i=1;i0}))}function u(t,n){var i=t.seg,a=n.seg,o=i.start,s=i.end,c=a.start,u=a.end;r&&r.checkIntersection(i,a);var f=e.linesIntersect(o,s,c,u);if(!1===f){if(!e.pointsCollinear(o,s,c))return!1;if(e.pointsSame(o,u)||e.pointsSame(s,c))return!1;var h=e.pointsSame(o,c),p=e.pointsSame(s,u);if(h&&p)return n;var d=!h&&e.pointBetween(o,c,u),g=!p&&e.pointBetween(s,c,u);if(h)return g?l(n,s):l(t,u),n;d&&(p||(g?l(n,s):l(t,u)),l(n,o))}else 0===f.alongA&&(-1===f.alongB?l(t,c):0===f.alongB?l(t,f.pt):1===f.alongB&&l(t,u)),0===f.alongB&&(-1===f.alongA?l(n,o):0===f.alongA?l(n,f.pt):1===f.alongA&&l(n,s));return!1}for(var f=[];!a.isEmpty();){var h=a.getHead();if(r&&r.vert(h.pt[0]),h.isStart){r&&r.segmentNew(h.seg,h.primary);var p=c(h),d=p.before?p.before.ev:null,g=p.after?p.after.ev:null;function m(){if(d){var t=u(h,d);if(t)return t}return!!g&&u(h,g)}r&&r.tempStatus(h.seg,!!d&&d.seg,!!g&&g.seg);var v,y=m();if(y){var x;if(t)(x=null===h.seg.myFill.below||h.seg.myFill.above!==h.seg.myFill.below)&&(y.seg.myFill.above=!y.seg.myFill.above);else y.seg.otherFill=h.seg.myFill;r&&r.segmentUpdate(y.seg),h.other.remove(),h.remove()}if(a.getHead()!==h){r&&r.rewind(h.seg);continue}if(t)x=null===h.seg.myFill.below||h.seg.myFill.above!==h.seg.myFill.below,h.seg.myFill.below=g?g.seg.myFill.above:i,h.seg.myFill.above=x?!h.seg.myFill.below:h.seg.myFill.below;else if(null===h.seg.otherFill)v=g?h.primary===g.primary?g.seg.otherFill.above:g.seg.myFill.above:h.primary?o:i,h.seg.otherFill={above:v,below:v};r&&r.status(h.seg,!!d&&d.seg,!!g&&g.seg),h.other.status=p.insert(n.node({ev:h}))}else{var b=h.status;if(null===b)throw new Error(\"PolyBool: Zero-length segment detected; your epsilon is probably too small or too large\");if(s.exists(b.prev)&&s.exists(b.next)&&u(b.prev.ev,b.next.ev),r&&r.statusRemove(b.ev.seg),b.remove(),!h.primary){var _=h.seg.myFill;h.seg.myFill=h.seg.otherFill,h.seg.otherFill=_}f.push(h.seg)}a.getHead().remove()}return r&&r.done(),f}return t?{addRegion:function(t){for(var n,i,a,o=t[t.length-1],l=0;l0&&!this.aborted;){var r=this.ifds_to_read.shift();r.offset&&this.scan_ifd(r.id,r.offset,t)}},a.prototype.read_uint16=function(t){var e=this.input;if(t+2>e.length)throw n(\"unexpected EOF\",\"EBADDATA\");return this.big_endian?256*e[t]+e[t+1]:e[t]+256*e[t+1]},a.prototype.read_uint32=function(t){var e=this.input;if(t+4>e.length)throw n(\"unexpected EOF\",\"EBADDATA\");return this.big_endian?16777216*e[t]+65536*e[t+1]+256*e[t+2]+e[t+3]:e[t]+256*e[t+1]+65536*e[t+2]+16777216*e[t+3]},a.prototype.is_subifd_link=function(t,e){return 0===t&&34665===e||0===t&&34853===e||34665===t&&40965===e},a.prototype.exif_format_length=function(t){switch(t){case 1:case 2:case 6:case 7:return 1;case 3:case 8:return 2;case 4:case 9:case 11:return 4;case 5:case 10:case 12:return 8;default:return 0}},a.prototype.exif_format_read=function(t,e){var r;switch(t){case 1:case 2:return r=this.input[e];case 6:return(r=this.input[e])|33554430*(128&r);case 3:return r=this.read_uint16(e);case 8:return(r=this.read_uint16(e))|131070*(32768&r);case 4:return r=this.read_uint32(e);case 9:return 0|(r=this.read_uint32(e));case 5:case 10:case 11:case 12:case 7:default:return null}},a.prototype.scan_ifd=function(t,e,r){var a=this.read_uint16(e);e+=2;for(var o=0;othis.input.length)throw n(\"unexpected EOF\",\"EBADDATA\");for(var d=[],g=h,m=0;m0&&(this.ifds_to_read.push({id:s,offset:d[0]}),p=!0),!1===r({is_big_endian:this.big_endian,ifd:t,tag:s,format:l,count:c,entry_offset:e+this.start,data_length:f,data_offset:h+this.start,value:d,is_subifd_link:p}))return void(this.aborted=!0);e+=12}0===t&&this.ifds_to_read.push({id:1,offset:this.read_uint32(e)})},e.exports.ExifParser=a,e.exports.get_orientation=function(t){var e=0;try{return new a(t,0,t.length).each((function(t){if(0===t.ifd&&274===t.tag&&Array.isArray(t.value))return e=t.value[0],!1})),e}catch(t){return-1}}},{}],264:[function(t,e,r){\"use strict\";var n=t(\"./common\").readUInt16BE,i=t(\"./common\").readUInt32BE;function a(t,e){if(t.length<4+e)return null;var r=i(t,e);return t.length>4&15,i=15&t[4],a=t[5]>>4&15,o=n(t,6),l=8,c=0;ce.width||t.width===e.width&&t.height>e.height?t:e})),i=r.reduce((function(t,e){return t.height>e.height||t.height===e.height&&t.width>e.width?t:e})),n.width>i.height||n.width===i.height&&n.height>i.width?n:i),s=1;e.transforms.forEach((function(t){var e={1:6,2:5,3:8,4:7,5:4,6:3,7:2,8:1},r={1:4,2:3,3:2,4:1,5:6,6:5,7:8,8:7};if(\"imir\"===t.type&&(s=0===t.value?r[s]:e[s=e[s=r[s]]]),\"irot\"===t.type)for(var n=0;n1&&(h.variants=f.variants),f.orientation&&(h.orientation=f.orientation),f.exif_location&&f.exif_location.offset+f.exif_location.length<=t.length){var p=a(t,f.exif_location.offset),d=t.slice(f.exif_location.offset+p+4,f.exif_location.offset+f.exif_location.length),g=s.get_orientation(d);g>0&&(h.orientation=g)}return h}}}}}}},{\"../common\":262,\"../exif_utils\":263,\"../miaf_utils\":264}],266:[function(t,e,r){\"use strict\";var n=t(\"../common\").str2arr,i=t(\"../common\").sliceEq,a=t(\"../common\").readUInt16LE,o=n(\"BM\");e.exports=function(t){if(!(t.length<26)&&i(t,0,o))return{width:a(t,18),height:a(t,22),type:\"bmp\",mime:\"image/bmp\",wUnits:\"px\",hUnits:\"px\"}}},{\"../common\":262}],267:[function(t,e,r){\"use strict\";var n=t(\"../common\").str2arr,i=t(\"../common\").sliceEq,a=t(\"../common\").readUInt16LE,o=n(\"GIF87a\"),s=n(\"GIF89a\");e.exports=function(t){if(!(t.length<10)&&(i(t,0,o)||i(t,0,s)))return{width:a(t,6),height:a(t,8),type:\"gif\",mime:\"image/gif\",wUnits:\"px\",hUnits:\"px\"}}},{\"../common\":262}],268:[function(t,e,r){\"use strict\";var n=t(\"../common\").readUInt16LE;e.exports=function(t){var e=n(t,0),r=n(t,2),i=n(t,4);if(0===e&&1===r&&i){for(var a=[],o={width:0,height:0},s=0;so.width||c>o.height)&&(o=u)}return{width:o.width,height:o.height,variants:a,type:\"ico\",mime:\"image/x-icon\",wUnits:\"px\",hUnits:\"px\"}}}},{\"../common\":262}],269:[function(t,e,r){\"use strict\";var n=t(\"../common\").readUInt16BE,i=t(\"../common\").str2arr,a=t(\"../common\").sliceEq,o=t(\"../exif_utils\"),s=i(\"Exif\\0\\0\");e.exports=function(t){if(!(t.length<2)&&255===t[0]&&216===t[1]&&255===t[2])for(var e=2;;){for(;;){if(t.length-e<2)return;if(255===t[e++])break}for(var r,i,l=t[e++];255===l;)l=t[e++];if(208<=l&&l<=217||1===l)r=0;else{if(!(192<=l&&l<=254))return;if(t.length-e<2)return;r=n(t,e)-2,e+=2}if(217===l||218===l)return;if(225===l&&r>=10&&a(t,e,s)&&(i=o.get_orientation(t.slice(e+6,e+r))),r>=5&&192<=l&&l<=207&&196!==l&&200!==l&&204!==l){if(t.length-e0&&(c.orientation=i),c}e+=r}}},{\"../common\":262,\"../exif_utils\":263}],270:[function(t,e,r){\"use strict\";var n=t(\"../common\").str2arr,i=t(\"../common\").sliceEq,a=t(\"../common\").readUInt32BE,o=n(\"\\x89PNG\\r\\n\\x1a\\n\"),s=n(\"IHDR\");e.exports=function(t){if(!(t.length<24)&&i(t,0,o)&&i(t,12,s))return{width:a(t,16),height:a(t,20),type:\"png\",mime:\"image/png\",wUnits:\"px\",hUnits:\"px\"}}},{\"../common\":262}],271:[function(t,e,r){\"use strict\";var n=t(\"../common\").str2arr,i=t(\"../common\").sliceEq,a=t(\"../common\").readUInt32BE,o=n(\"8BPS\\0\\x01\");e.exports=function(t){if(!(t.length<22)&&i(t,0,o))return{width:a(t,18),height:a(t,14),type:\"psd\",mime:\"image/vnd.adobe.photoshop\",wUnits:\"px\",hUnits:\"px\"}}},{\"../common\":262}],272:[function(t,e,r){\"use strict\";function n(t){return\"number\"==typeof t&&isFinite(t)&&t>0}var i=/<[-_.:a-zA-Z0-9][^>]*>/,a=/^<([-_.:a-zA-Z0-9]+:)?svg\\s/,o=/[^-]\\bwidth=\"([^%]+?)\"|[^-]\\bwidth='([^%]+?)'/,s=/\\bheight=\"([^%]+?)\"|\\bheight='([^%]+?)'/,l=/\\bview[bB]ox=\"(.+?)\"|\\bview[bB]ox='(.+?)'/,c=/in$|mm$|cm$|pt$|pc$|px$|em$|ex$/;function u(t){return c.test(t)?t.match(c)[0]:\"px\"}e.exports=function(t){if(function(t){var e,r=0,n=t.length;for(239===t[0]&&187===t[1]&&191===t[2]&&(r=3);r>14&16383),type:\"webp\",mime:\"image/webp\",wUnits:\"px\",hUnits:\"px\"}}}function h(t,e){return{width:1+(t[e+6]<<16|t[e+5]<<8|t[e+4]),height:1+(t[e+9]<t.length)){for(;e+8=10?r=r||u(t,e+8):\"VP8L\"===p&&d>=9?r=r||f(t,e+8):\"VP8X\"===p&&d>=10?r=r||h(t,e+8):\"EXIF\"===p&&(n=s.get_orientation(t.slice(e+8,e+8+d)),e=1/0),e+=8+d}else e++;if(r)return n>0&&(r.orientation=n),r}}}},{\"../common\":262,\"../exif_utils\":263}],275:[function(t,e,r){\"use strict\";e.exports={avif:t(\"./parse_sync/avif\"),bmp:t(\"./parse_sync/bmp\"),gif:t(\"./parse_sync/gif\"),ico:t(\"./parse_sync/ico\"),jpeg:t(\"./parse_sync/jpeg\"),png:t(\"./parse_sync/png\"),psd:t(\"./parse_sync/psd\"),svg:t(\"./parse_sync/svg\"),tiff:t(\"./parse_sync/tiff\"),webp:t(\"./parse_sync/webp\")}},{\"./parse_sync/avif\":265,\"./parse_sync/bmp\":266,\"./parse_sync/gif\":267,\"./parse_sync/ico\":268,\"./parse_sync/jpeg\":269,\"./parse_sync/png\":270,\"./parse_sync/psd\":271,\"./parse_sync/svg\":272,\"./parse_sync/tiff\":273,\"./parse_sync/webp\":274}],276:[function(t,e,r){\"use strict\";var n=t(\"./lib/parsers_sync\");e.exports=function(t){return function(t){for(var e=Object.keys(n),r=0;r1)for(var r=1;r1&&(t.scaleRatio=[t.scale[0]*t.viewport.width,t.scale[1]*t.viewport.height],r(t),t.after&&t.after(t))}function T(t){if(t){null!=t.length?\"number\"==typeof t[0]&&(t=[{positions:t}]):Array.isArray(t)||(t=[t]);var e=0,r=0;if(b.groups=x=t.map((function(t,c){var u=x[c];return t?(\"function\"==typeof t?t={after:t}:\"number\"==typeof t[0]&&(t={positions:t}),t=o(t,{color:\"color colors fill\",capSize:\"capSize cap capsize cap-size\",lineWidth:\"lineWidth line-width width line thickness\",opacity:\"opacity alpha\",range:\"range dataBox\",viewport:\"viewport viewBox\",errors:\"errors error\",positions:\"positions position data points\"}),u||(x[c]=u={id:c,scale:null,translate:null,scaleFract:null,translateFract:null,draw:!0},t=s({},y,t)),a(u,t,[{lineWidth:function(t){return.5*+t},capSize:function(t){return.5*+t},opacity:parseFloat,errors:function(t){return t=l(t),r+=t.length,t},positions:function(t,r){return t=l(t,\"float64\"),r.count=Math.floor(t.length/2),r.bounds=n(t,2),r.offset=e,e+=r.count,t}},{color:function(t,e){var r=e.count;if(t||(t=\"transparent\"),!Array.isArray(t)||\"number\"==typeof t[0]){var n=t;t=Array(r);for(var a=0;a 0. && baClipping < length(normalWidth * endBotJoin)) {\\n\\t\\t//handle miter clipping\\n\\t\\tbTopCoord -= normalWidth * endTopJoin;\\n\\t\\tbTopCoord += normalize(endTopJoin * normalWidth) * baClipping;\\n\\t}\\n\\n\\tif (nextReverse) {\\n\\t\\t//make join rectangular\\n\\t\\tvec2 miterShift = normalWidth * endJoinDirection * miterLimit * .5;\\n\\t\\tfloat normalAdjust = 1. - min(miterLimit / endMiterRatio, 1.);\\n\\t\\tbBotCoord = bCoord + miterShift - normalAdjust * normalWidth * currNormal * .5;\\n\\t\\tbTopCoord = bCoord + miterShift + normalAdjust * normalWidth * currNormal * .5;\\n\\t}\\n\\telse if (!prevReverse && abClipping > 0. && abClipping < length(normalWidth * startBotJoin)) {\\n\\t\\t//handle miter clipping\\n\\t\\taBotCoord -= normalWidth * startBotJoin;\\n\\t\\taBotCoord += normalize(startBotJoin * normalWidth) * abClipping;\\n\\t}\\n\\n\\tvec2 aTopPosition = (aTopCoord) * adjustedScale + translate;\\n\\tvec2 aBotPosition = (aBotCoord) * adjustedScale + translate;\\n\\n\\tvec2 bTopPosition = (bTopCoord) * adjustedScale + translate;\\n\\tvec2 bBotPosition = (bBotCoord) * adjustedScale + translate;\\n\\n\\t//position is normalized 0..1 coord on the screen\\n\\tvec2 position = (aTopPosition * lineTop + aBotPosition * lineBot) * lineStart + (bTopPosition * lineTop + bBotPosition * lineBot) * lineEnd;\\n\\n\\tstartCoord = aCoord * scaleRatio + translate * viewport.zw + viewport.xy;\\n\\tendCoord = bCoord * scaleRatio + translate * viewport.zw + viewport.xy;\\n\\n\\tgl_Position = vec4(position * 2.0 - 1.0, depth, 1);\\n\\n\\tenableStartMiter = step(dot(currTangent, prevTangent), .5);\\n\\tenableEndMiter = step(dot(currTangent, nextTangent), .5);\\n\\n\\t//bevel miter cutoffs\\n\\tif (miterMode == 1.) {\\n\\t\\tif (enableStartMiter == 1.) {\\n\\t\\t\\tvec2 startMiterWidth = vec2(startJoinDirection) * thickness * miterLimit * .5;\\n\\t\\t\\tstartCutoff = vec4(aCoord, aCoord);\\n\\t\\t\\tstartCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio;\\n\\t\\t\\tstartCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\\n\\t\\t\\tstartCutoff += viewport.xyxy;\\n\\t\\t\\tstartCutoff += startMiterWidth.xyxy;\\n\\t\\t}\\n\\n\\t\\tif (enableEndMiter == 1.) {\\n\\t\\t\\tvec2 endMiterWidth = vec2(endJoinDirection) * thickness * miterLimit * .5;\\n\\t\\t\\tendCutoff = vec4(bCoord, bCoord);\\n\\t\\t\\tendCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x) / scaleRatio;\\n\\t\\t\\tendCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\\n\\t\\t\\tendCutoff += viewport.xyxy;\\n\\t\\t\\tendCutoff += endMiterWidth.xyxy;\\n\\t\\t}\\n\\t}\\n\\n\\t//round miter cutoffs\\n\\telse if (miterMode == 2.) {\\n\\t\\tif (enableStartMiter == 1.) {\\n\\t\\t\\tvec2 startMiterWidth = vec2(startJoinDirection) * thickness * abs(dot(startJoinDirection, currNormal)) * .5;\\n\\t\\t\\tstartCutoff = vec4(aCoord, aCoord);\\n\\t\\t\\tstartCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio;\\n\\t\\t\\tstartCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\\n\\t\\t\\tstartCutoff += viewport.xyxy;\\n\\t\\t\\tstartCutoff += startMiterWidth.xyxy;\\n\\t\\t}\\n\\n\\t\\tif (enableEndMiter == 1.) {\\n\\t\\t\\tvec2 endMiterWidth = vec2(endJoinDirection) * thickness * abs(dot(endJoinDirection, currNormal)) * .5;\\n\\t\\t\\tendCutoff = vec4(bCoord, bCoord);\\n\\t\\t\\tendCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x) / scaleRatio;\\n\\t\\t\\tendCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\\n\\t\\t\\tendCutoff += viewport.xyxy;\\n\\t\\t\\tendCutoff += endMiterWidth.xyxy;\\n\\t\\t}\\n\\t}\\n}\\n\"]),frag:o([\"precision highp float;\\n#define GLSLIFY 1\\n\\nuniform float dashLength, pixelRatio, thickness, opacity, id, miterMode;\\nuniform sampler2D dashTexture;\\n\\nvarying vec4 fragColor;\\nvarying vec2 tangent;\\nvarying vec4 startCutoff, endCutoff;\\nvarying vec2 startCoord, endCoord;\\nvarying float enableStartMiter, enableEndMiter;\\n\\nfloat distToLine(vec2 p, vec2 a, vec2 b) {\\n\\tvec2 diff = b - a;\\n\\tvec2 perp = normalize(vec2(-diff.y, diff.x));\\n\\treturn dot(p - a, perp);\\n}\\n\\nvoid main() {\\n\\tfloat alpha = 1., distToStart, distToEnd;\\n\\tfloat cutoff = thickness * .5;\\n\\n\\t//bevel miter\\n\\tif (miterMode == 1.) {\\n\\t\\tif (enableStartMiter == 1.) {\\n\\t\\t\\tdistToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw);\\n\\t\\t\\tif (distToStart < -1.) {\\n\\t\\t\\t\\tdiscard;\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\t\\t\\talpha *= min(max(distToStart + 1., 0.), 1.);\\n\\t\\t}\\n\\n\\t\\tif (enableEndMiter == 1.) {\\n\\t\\t\\tdistToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw);\\n\\t\\t\\tif (distToEnd < -1.) {\\n\\t\\t\\t\\tdiscard;\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\t\\t\\talpha *= min(max(distToEnd + 1., 0.), 1.);\\n\\t\\t}\\n\\t}\\n\\n\\t// round miter\\n\\telse if (miterMode == 2.) {\\n\\t\\tif (enableStartMiter == 1.) {\\n\\t\\t\\tdistToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw);\\n\\t\\t\\tif (distToStart < 0.) {\\n\\t\\t\\t\\tfloat radius = length(gl_FragCoord.xy - startCoord);\\n\\n\\t\\t\\t\\tif(radius > cutoff + .5) {\\n\\t\\t\\t\\t\\tdiscard;\\n\\t\\t\\t\\t\\treturn;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\talpha -= smoothstep(cutoff - .5, cutoff + .5, radius);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tif (enableEndMiter == 1.) {\\n\\t\\t\\tdistToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw);\\n\\t\\t\\tif (distToEnd < 0.) {\\n\\t\\t\\t\\tfloat radius = length(gl_FragCoord.xy - endCoord);\\n\\n\\t\\t\\t\\tif(radius > cutoff + .5) {\\n\\t\\t\\t\\t\\tdiscard;\\n\\t\\t\\t\\t\\treturn;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\talpha -= smoothstep(cutoff - .5, cutoff + .5, radius);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\tfloat t = fract(dot(tangent, gl_FragCoord.xy) / dashLength) * .5 + .25;\\n\\tfloat dash = texture2D(dashTexture, vec2(t, .5)).r;\\n\\n\\tgl_FragColor = fragColor;\\n\\tgl_FragColor.a *= alpha * opacity * dash;\\n}\\n\"]),attributes:{lineEnd:{buffer:r,divisor:0,stride:8,offset:0},lineTop:{buffer:r,divisor:0,stride:8,offset:4},aColor:{buffer:t.prop(\"colorBuffer\"),stride:4,offset:0,divisor:1},bColor:{buffer:t.prop(\"colorBuffer\"),stride:4,offset:4,divisor:1},prevCoord:{buffer:t.prop(\"positionBuffer\"),stride:8,offset:0,divisor:1},aCoord:{buffer:t.prop(\"positionBuffer\"),stride:8,offset:8,divisor:1},bCoord:{buffer:t.prop(\"positionBuffer\"),stride:8,offset:16,divisor:1},nextCoord:{buffer:t.prop(\"positionBuffer\"),stride:8,offset:24,divisor:1}}},n))}catch(t){e=i}return{fill:t({primitive:\"triangle\",elements:function(t,e){return e.triangles},offset:0,vert:o([\"precision highp float;\\n#define GLSLIFY 1\\n\\nattribute vec2 position, positionFract;\\n\\nuniform vec4 color;\\nuniform vec2 scale, scaleFract, translate, translateFract;\\nuniform float pixelRatio, id;\\nuniform vec4 viewport;\\nuniform float opacity;\\n\\nvarying vec4 fragColor;\\n\\nconst float MAX_LINES = 256.;\\n\\nvoid main() {\\n\\tfloat depth = (MAX_LINES - 4. - id) / (MAX_LINES);\\n\\n\\tvec2 position = position * scale + translate\\n + positionFract * scale + translateFract\\n + position * scaleFract\\n + positionFract * scaleFract;\\n\\n\\tgl_Position = vec4(position * 2.0 - 1.0, depth, 1);\\n\\n\\tfragColor = color / 255.;\\n\\tfragColor.a *= opacity;\\n}\\n\"]),frag:o([\"precision highp float;\\n#define GLSLIFY 1\\n\\nvarying vec4 fragColor;\\n\\nvoid main() {\\n\\tgl_FragColor = fragColor;\\n}\\n\"]),uniforms:{scale:t.prop(\"scale\"),color:t.prop(\"fill\"),scaleFract:t.prop(\"scaleFract\"),translateFract:t.prop(\"translateFract\"),translate:t.prop(\"translate\"),opacity:t.prop(\"opacity\"),pixelRatio:t.context(\"pixelRatio\"),id:t.prop(\"id\"),viewport:function(t,e){return[e.viewport.x,e.viewport.y,t.viewportWidth,t.viewportHeight]}},attributes:{position:{buffer:t.prop(\"positionBuffer\"),stride:8,offset:8},positionFract:{buffer:t.prop(\"positionFractBuffer\"),stride:8,offset:8}},blend:n.blend,depth:{enable:!1},scissor:n.scissor,stencil:n.stencil,viewport:n.viewport}),rect:i,miter:e}},v.defaults={dashes:null,join:\"miter\",miterLimit:1,thickness:10,cap:\"square\",color:\"black\",opacity:1,overlay:!1,viewport:null,range:null,close:!1,fill:null},v.prototype.render=function(){for(var t,e=[],r=arguments.length;r--;)e[r]=arguments[r];e.length&&(t=this).update.apply(t,e),this.draw()},v.prototype.draw=function(){for(var t=this,e=[],r=arguments.length;r--;)e[r]=arguments[r];return(e.length?e:this.passes).forEach((function(e,r){var n;if(e&&Array.isArray(e))return(n=t).draw.apply(n,e);\"number\"==typeof e&&(e=t.passes[e]),e&&e.count>1&&e.opacity&&(t.regl._refresh(),e.fill&&e.triangles&&e.triangles.length>2&&t.shaders.fill(e),e.thickness&&(e.scale[0]*e.viewport.width>v.precisionThreshold||e.scale[1]*e.viewport.height>v.precisionThreshold||\"rect\"===e.join||!e.join&&(e.thickness<=2||e.count>=v.maxPoints)?t.shaders.rect(e):t.shaders.miter(e)))})),this},v.prototype.update=function(t){var e=this;if(t){null!=t.length?\"number\"==typeof t[0]&&(t=[{positions:t}]):Array.isArray(t)||(t=[t]);var r=this.regl,o=this.gl;if(t.forEach((function(t,f){var d=e.passes[f];if(void 0!==t)if(null!==t){if(\"number\"==typeof t[0]&&(t={positions:t}),t=s(t,{positions:\"positions points data coords\",thickness:\"thickness lineWidth lineWidths line-width linewidth width stroke-width strokewidth strokeWidth\",join:\"lineJoin linejoin join type mode\",miterLimit:\"miterlimit miterLimit\",dashes:\"dash dashes dasharray dash-array dashArray\",color:\"color colour stroke colors colours stroke-color strokeColor\",fill:\"fill fill-color fillColor\",opacity:\"alpha opacity\",overlay:\"overlay crease overlap intersect\",close:\"closed close closed-path closePath\",range:\"range dataBox\",viewport:\"viewport viewBox\",hole:\"holes hole hollow\",splitNull:\"splitNull\"}),d||(e.passes[f]=d={id:f,scale:null,scaleFract:null,translate:null,translateFract:null,count:0,hole:[],depth:0,dashLength:1,dashTexture:r.texture({channels:1,data:new Uint8Array([255]),width:1,height:1,mag:\"linear\",min:\"linear\"}),colorBuffer:r.buffer({usage:\"dynamic\",type:\"uint8\",data:new Uint8Array}),positionBuffer:r.buffer({usage:\"dynamic\",type:\"float\",data:new Uint8Array}),positionFractBuffer:r.buffer({usage:\"dynamic\",type:\"float\",data:new Uint8Array})},t=a({},v.defaults,t)),null!=t.thickness&&(d.thickness=parseFloat(t.thickness)),null!=t.opacity&&(d.opacity=parseFloat(t.opacity)),null!=t.miterLimit&&(d.miterLimit=parseFloat(t.miterLimit)),null!=t.overlay&&(d.overlay=!!t.overlay,f=D}));(I=I.slice(0,R)).push(D)}for(var F=function(t){var e=k.slice(2*z,2*I[t]).concat(D?k.slice(2*D):[]),r=(d.hole||[]).map((function(e){return e-D+(I[t]-z)})),n=c(e,r);n=n.map((function(e){return e+z+(e+zt.length)&&(e=t.length);for(var r=0,n=new Array(e);r 1.0 + delta) {\\n\\t\\tdiscard;\\n\\t}\\n\\n\\talpha -= smoothstep(1.0 - delta, 1.0 + delta, radius);\\n\\n\\tfloat borderRadius = fragBorderRadius;\\n\\tfloat ratio = smoothstep(borderRadius - delta, borderRadius + delta, radius);\\n\\tvec4 color = mix(fragColor, fragBorderColor, ratio);\\n\\tcolor.a *= alpha * opacity;\\n\\tgl_FragColor = color;\\n}\\n\"]),l.vert=h([\"precision highp float;\\n#define GLSLIFY 1\\n\\nattribute float x, y, xFract, yFract;\\nattribute float size, borderSize;\\nattribute vec4 colorId, borderColorId;\\nattribute float isActive;\\n\\nuniform bool constPointSize;\\nuniform float pixelRatio;\\nuniform vec2 paletteSize, scale, scaleFract, translate, translateFract;\\nuniform sampler2D paletteTexture;\\n\\nconst float maxSize = 100.;\\n\\nvarying vec4 fragColor, fragBorderColor;\\nvarying float fragBorderRadius, fragWidth;\\n\\nfloat pointSizeScale = (constPointSize) ? 2. : pixelRatio;\\n\\nbool isDirect = (paletteSize.x < 1.);\\n\\nvec4 getColor(vec4 id) {\\n return isDirect ? id / 255. : texture2D(paletteTexture,\\n vec2(\\n (id.x + .5) / paletteSize.x,\\n (id.y + .5) / paletteSize.y\\n )\\n );\\n}\\n\\nvoid main() {\\n // ignore inactive points\\n if (isActive == 0.) return;\\n\\n vec2 position = vec2(x, y);\\n vec2 positionFract = vec2(xFract, yFract);\\n\\n vec4 color = getColor(colorId);\\n vec4 borderColor = getColor(borderColorId);\\n\\n float size = size * maxSize / 255.;\\n float borderSize = borderSize * maxSize / 255.;\\n\\n gl_PointSize = (size + borderSize) * pointSizeScale;\\n\\n vec2 pos = (position + translate) * scale\\n + (positionFract + translateFract) * scale\\n + (position + translate) * scaleFract\\n + (positionFract + translateFract) * scaleFract;\\n\\n gl_Position = vec4(pos * 2. - 1., 0., 1.);\\n\\n fragBorderRadius = 1. - 2. * borderSize / (size + borderSize);\\n fragColor = color;\\n fragBorderColor = borderColor.a == 0. || borderSize == 0. ? vec4(color.rgb, 0.) : borderColor;\\n fragWidth = 1. / gl_PointSize;\\n}\\n\"]),m&&(l.frag=l.frag.replace(\"smoothstep\",\"smoothStep\"),s.frag=s.frag.replace(\"smoothstep\",\"smoothStep\")),this.drawCircle=t(l)}b.defaults={color:\"black\",borderColor:\"transparent\",borderSize:0,size:12,opacity:1,marker:void 0,viewport:null,range:null,pixelSize:null,count:0,offset:0,bounds:null,positions:[],snap:1e4},b.prototype.render=function(){return arguments.length&&this.update.apply(this,arguments),this.draw(),this},b.prototype.draw=function(){for(var t=this,e=arguments.length,r=new Array(e),n=0;nn)?e.tree=u(t,{bounds:f}):n&&n.length&&(e.tree=n),e.tree){var h={primitive:\"points\",usage:\"static\",data:e.tree,type:\"uint32\"};e.elements?e.elements(h):e.elements=o.elements(h)}var p=v.float32(t);return i({data:p,usage:\"dynamic\"}),a({data:v.fract32(t,p),usage:\"dynamic\"}),s({data:new Uint8Array(c),type:\"uint8\",usage:\"stream\"}),t}},{marker:function(e,r,n){var i=r.activation;if(i.forEach((function(t){return t&&t.destroy&&t.destroy()})),i.length=0,e&&\"number\"!=typeof e[0]){for(var a=[],s=0,l=Math.min(e.length,r.count);s=0)return a;if(t instanceof Uint8Array||t instanceof Uint8ClampedArray)e=t;else{e=new Uint8Array(t.length);for(var o=0,s=t.length;o4*n&&(this.tooManyColors=!0),this.updatePalette(r),1===i.length?i[0]:i},b.prototype.updatePalette=function(t){if(!this.tooManyColors){var e=this.maxColors,r=this.paletteTexture,n=Math.ceil(.25*t.length/e);if(n>1)for(var i=.25*(t=t.slice()).length%e;i2?(s[0],s[2],n=s[1],i=s[3]):s.length?(n=s[0],i=s[1]):(s.x,n=s.y,s.x+s.width,i=s.y+s.height),l.length>2?(a=l[0],o=l[2],l[1],l[3]):l.length?(a=l[0],o=l[1]):(a=l.x,l.y,o=l.x+l.width,l.y+l.height),[a,n,o,i]}function p(t){if(\"number\"==typeof t)return[t,t,t,t];if(2===t.length)return[t[0],t[1],t[0],t[1]];var e=l(t);return[e.x,e.y,e.x+e.width,e.y+e.height]}e.exports=u,u.prototype.render=function(){for(var t,e=this,r=[],n=arguments.length;n--;)r[n]=arguments[n];return r.length&&(t=this).update.apply(t,r),this.regl.attributes.preserveDrawingBuffer?this.draw():(this.dirty?null==this.planned&&(this.planned=o((function(){e.draw(),e.dirty=!0,e.planned=null}))):(this.draw(),this.dirty=!0,o((function(){e.dirty=!1}))),this)},u.prototype.update=function(){for(var t,e=[],r=arguments.length;r--;)e[r]=arguments[r];if(e.length){for(var n=0;nk))&&(s.lower||!(T>>=e))<<3,(e|=r=(15<(t>>>=r))<<2)|(r=(3<(t>>>=r))<<1)|t>>>r>>1}function s(){function t(t){t:{for(var e=16;268435456>=e;e*=16)if(t<=e){t=e;break t}t=0}return 0<(e=r[o(t)>>2]).length?e.pop():new ArrayBuffer(t)}function e(t){r[o(t.byteLength)>>2].push(t)}var r=a(8,(function(){return[]}));return{alloc:t,free:e,allocType:function(e,r){var n=null;switch(e){case 5120:n=new Int8Array(t(r),0,r);break;case 5121:n=new Uint8Array(t(r),0,r);break;case 5122:n=new Int16Array(t(2*r),0,r);break;case 5123:n=new Uint16Array(t(2*r),0,r);break;case 5124:n=new Int32Array(t(4*r),0,r);break;case 5125:n=new Uint32Array(t(4*r),0,r);break;case 5126:n=new Float32Array(t(4*r),0,r);break;default:return null}return n.length!==r?n.subarray(0,r):n},freeType:function(t){e(t.buffer)}}}function l(t){return!!t&&\"object\"==typeof t&&Array.isArray(t.shape)&&Array.isArray(t.stride)&&\"number\"==typeof t.offset&&t.shape.length===t.stride.length&&(Array.isArray(t.data)||W(t.data))}function c(t,e,r,n,i,a){for(var o=0;o(i=s)&&(i=n.buffer.byteLength,5123===f?i>>=1:5125===f&&(i>>=2)),n.vertCount=i,i=o,0>o&&(i=4,1===(o=n.buffer.dimension)&&(i=0),2===o&&(i=1),3===o&&(i=4)),n.primType=i}function o(t){n.elementsCount--,delete s[t.id],t.buffer.destroy(),t.buffer=null}var s={},c=0,u={uint8:5121,uint16:5123};e.oes_element_index_uint&&(u.uint32=5125),i.prototype.bind=function(){this.buffer.bind()};var f=[];return{create:function(t,e){function s(t){if(t)if(\"number\"==typeof t)c(t),f.primType=4,f.vertCount=0|t,f.type=5121;else{var e=null,r=35044,n=-1,i=-1,o=0,h=0;Array.isArray(t)||W(t)||l(t)?e=t:(\"data\"in t&&(e=t.data),\"usage\"in t&&(r=Q[t.usage]),\"primitive\"in t&&(n=rt[t.primitive]),\"count\"in t&&(i=0|t.count),\"type\"in t&&(h=u[t.type]),\"length\"in t?o=0|t.length:(o=i,5123===h||5122===h?o*=2:5125!==h&&5124!==h||(o*=4))),a(f,e,r,n,i,o,h)}else c(),f.primType=4,f.vertCount=0,f.type=5121;return s}var c=r.create(null,34963,!0),f=new i(c._buffer);return n.elementsCount++,s(t),s._reglType=\"elements\",s._elements=f,s.subdata=function(t,e){return c.subdata(t,e),s},s.destroy=function(){o(f)},s},createStream:function(t){var e=f.pop();return e||(e=new i(r.create(null,34963,!0,!1)._buffer)),a(e,t,35040,-1,-1,0,0),e},destroyStream:function(t){f.push(t)},getElements:function(t){return\"function\"==typeof t&&t._elements instanceof i?t._elements:null},clear:function(){X(s).forEach(o)}}}function g(t){for(var e=G.allocType(5123,t.length),r=0;r>>31<<15,i=(a<<1>>>24)-127,a=a>>13&1023;e[r]=-24>i?n:-14>i?n+(a+1024>>-14-i):15>=i,r.height>>=i,p(r,n[i]),t.mipmask|=1<e;++e)t.images[e]=null;return t}function C(t){for(var e=t.images,r=0;re){for(var r=0;r=--this.refCount&&F(this)}}),o.profile&&(a.getTotalTextureSize=function(){var t=0;return Object.keys(yt).forEach((function(e){t+=yt[e].stats.size})),t}),{create2D:function(e,r){function n(t,e){var r=i.texInfo;P.call(r);var a=L();return\"number\"==typeof t?M(a,0|t,\"number\"==typeof e?0|e:0|t):t?(I(r,t),S(a,t)):M(a,1,1),r.genMipmaps&&(a.mipmask=(a.width<<1)-1),i.mipmask=a.mipmask,c(i,a),i.internalformat=a.internalformat,n.width=a.width,n.height=a.height,D(i),E(a,3553),O(r,3553),R(),C(a),o.profile&&(i.stats.size=T(i.internalformat,i.type,a.width,a.height,r.genMipmaps,!1)),n.format=tt[i.internalformat],n.type=et[i.type],n.mag=rt[r.magFilter],n.min=nt[r.minFilter],n.wrapS=it[r.wrapS],n.wrapT=it[r.wrapT],n}var i=new z(3553);return yt[i.id]=i,a.textureCount++,n(e,r),n.subimage=function(t,e,r,a){e|=0,r|=0,a|=0;var o=v();return c(o,i),o.width=0,o.height=0,p(o,t),o.width=o.width||(i.width>>a)-e,o.height=o.height||(i.height>>a)-r,D(i),d(o,3553,e,r,a),R(),k(o),n},n.resize=function(e,r){var a=0|e,s=0|r||a;if(a===i.width&&s===i.height)return n;n.width=i.width=a,n.height=i.height=s,D(i);for(var l=0;i.mipmask>>l;++l){var c=a>>l,u=s>>l;if(!c||!u)break;t.texImage2D(3553,l,i.format,c,u,0,i.format,i.type,null)}return R(),o.profile&&(i.stats.size=T(i.internalformat,i.type,a,s,!1,!1)),n},n._reglType=\"texture2d\",n._texture=i,o.profile&&(n.stats=i.stats),n.destroy=function(){i.decRef()},n},createCube:function(e,r,n,i,s,l){function f(t,e,r,n,i,a){var s,l=h.texInfo;for(P.call(l),s=0;6>s;++s)g[s]=L();if(\"number\"!=typeof t&&t){if(\"object\"==typeof t)if(e)S(g[0],t),S(g[1],e),S(g[2],r),S(g[3],n),S(g[4],i),S(g[5],a);else if(I(l,t),u(h,t),\"faces\"in t)for(t=t.faces,s=0;6>s;++s)c(g[s],h),S(g[s],t[s]);else for(s=0;6>s;++s)S(g[s],t)}else for(t=0|t||1,s=0;6>s;++s)M(g[s],t,t);for(c(h,g[0]),h.mipmask=l.genMipmaps?(g[0].width<<1)-1:g[0].mipmask,h.internalformat=g[0].internalformat,f.width=g[0].width,f.height=g[0].height,D(h),s=0;6>s;++s)E(g[s],34069+s);for(O(l,34067),R(),o.profile&&(h.stats.size=T(h.internalformat,h.type,f.width,f.height,l.genMipmaps,!0)),f.format=tt[h.internalformat],f.type=et[h.type],f.mag=rt[l.magFilter],f.min=nt[l.minFilter],f.wrapS=it[l.wrapS],f.wrapT=it[l.wrapT],s=0;6>s;++s)C(g[s]);return f}var h=new z(34067);yt[h.id]=h,a.cubeCount++;var g=Array(6);return f(e,r,n,i,s,l),f.subimage=function(t,e,r,n,i){r|=0,n|=0,i|=0;var a=v();return c(a,h),a.width=0,a.height=0,p(a,e),a.width=a.width||(h.width>>i)-r,a.height=a.height||(h.height>>i)-n,D(h),d(a,34069+t,r,n,i),R(),k(a),f},f.resize=function(e){if((e|=0)!==h.width){f.width=h.width=e,f.height=h.height=e,D(h);for(var r=0;6>r;++r)for(var n=0;h.mipmask>>n;++n)t.texImage2D(34069+r,n,h.format,e>>n,e>>n,0,h.format,h.type,null);return R(),o.profile&&(h.stats.size=T(h.internalformat,h.type,f.width,f.height,!1,!0)),f}},f._reglType=\"textureCube\",f._texture=h,o.profile&&(f.stats=h.stats),f.destroy=function(){h.decRef()},f},clear:function(){for(var e=0;er;++r)if(0!=(e.mipmask&1<>r,e.height>>r,0,e.internalformat,e.type,null);else for(var n=0;6>n;++n)t.texImage2D(34069+n,r,e.internalformat,e.width>>r,e.height>>r,0,e.internalformat,e.type,null);O(e.texInfo,e.target)}))},refresh:function(){for(var e=0;ei;++i){for(c=0;ct;++t)r[t].resize(n);return e.width=e.height=n,e},_reglType:\"framebufferCube\",destroy:function(){r.forEach((function(t){t.destroy()}))}})},clear:function(){X(k).forEach(m)},restore:function(){x.cur=null,x.next=null,x.dirty=!0,X(k).forEach((function(e){e.framebuffer=t.createFramebuffer(),v(e)}))}})}function M(){this.w=this.z=this.y=this.x=this.state=0,this.buffer=null,this.size=0,this.normalized=!1,this.type=5126,this.divisor=this.stride=this.offset=0}function S(t,e,r,n,i,a,o){function s(){this.id=++f,this.attributes=[],this.elements=null,this.ownsElements=!1,this.offset=this.count=0,this.instances=-1,this.primitive=4;var t=e.oes_vertex_array_object;this.vao=t?t.createVertexArrayOES():null,h[this.id]=this,this.buffers=[]}var c=r.maxAttributes,u=Array(c);for(r=0;r=h.byteLength?c.subdata(h):(c.destroy(),r.buffers[s]=null)),r.buffers[s]||(c=r.buffers[s]=i.create(u,34962,!1,!0)),f.buffer=i.getBuffer(c),f.size=0|f.buffer.dimension,f.normalized=!1,f.type=f.buffer.dtype,f.offset=0,f.stride=0,f.divisor=0,f.state=1,t[s]=1;else i.getBuffer(u)?(f.buffer=i.getBuffer(u),f.size=0|f.buffer.dimension,f.normalized=!1,f.type=f.buffer.dtype,f.offset=0,f.stride=0,f.divisor=0,f.state=1):i.getBuffer(u.buffer)?(f.buffer=i.getBuffer(u.buffer),f.size=0|(+u.size||f.buffer.dimension),f.normalized=!!u.normalized||!1,f.type=\"type\"in u?K[u.type]:f.buffer.dtype,f.offset=0|(u.offset||0),f.stride=0|(u.stride||0),f.divisor=0|(u.divisor||0),f.state=1):\"x\"in u&&(f.x=+u.x||0,f.y=+u.y||0,f.z=+u.z||0,f.w=+u.w||0,f.state=2)}for(c=0;ct&&(t=e.stats.uniformsCount)})),t},r.getMaxAttributesCount=function(){var t=0;return h.forEach((function(e){e.stats.attributesCount>t&&(t=e.stats.attributesCount)})),t}),{clear:function(){var e=t.deleteShader.bind(t);X(c).forEach(e),c={},X(u).forEach(e),u={},h.forEach((function(e){t.deleteProgram(e.program)})),h.length=0,f={},r.shaderCount=0},program:function(e,n,i,a){var o=f[n];o||(o=f[n]={});var p=o[e];if(p&&(p.refCount++,!a))return p;var d=new s(n,e);return r.shaderCount++,l(d,i,a),p||(o[e]=d),h.push(d),j(d,{destroy:function(){if(d.refCount--,0>=d.refCount){t.deleteProgram(d.program);var e=h.indexOf(d);h.splice(e,1),r.shaderCount--}0>=o[d.vertId].refCount&&(t.deleteShader(u[d.vertId]),delete u[d.vertId],delete f[d.fragId][d.vertId]),Object.keys(f[d.fragId]).length||(t.deleteShader(c[d.fragId]),delete c[d.fragId],delete f[d.fragId])}})},restore:function(){c={},u={};for(var t=0;t\"+e+\"?\"+i+\".constant[\"+e+\"]:0;\"})).join(\"\"),\"}}else{\",\"if(\",s,\"(\",i,\".buffer)){\",u,\"=\",a,\".createStream(\",34962,\",\",i,\".buffer);\",\"}else{\",u,\"=\",a,\".getBuffer(\",i,\".buffer);\",\"}\",f,'=\"type\" in ',i,\"?\",o.glTypes,\"[\",i,\".type]:\",u,\".dtype;\",l.normalized,\"=!!\",i,\".normalized;\"),n(\"size\"),n(\"offset\"),n(\"stride\"),n(\"divisor\"),r(\"}}\"),r.exit(\"if(\",l.isStream,\"){\",a,\".destroyStream(\",u,\");\",\"}\"),l}))})),o}function A(t,e,n,i,o){function s(t){var e=c[t];e&&(h[t]=e)}var l=function(t,e){if(\"string\"==typeof(r=t.static).frag&&\"string\"==typeof r.vert){if(0>1)\",s],\");\")}function e(){r(l,\".drawArraysInstancedANGLE(\",[d,g,m,s],\");\")}p&&\"null\"!==p?y?t():(r(\"if(\",p,\"){\"),t(),r(\"}else{\"),e(),r(\"}\")):e()}function o(){function t(){r(u+\".drawElements(\"+[d,m,v,g+\"<<((\"+v+\"-5121)>>1)\"]+\");\")}function e(){r(u+\".drawArrays(\"+[d,g,m]+\");\")}p&&\"null\"!==p?y?t():(r(\"if(\",p,\"){\"),t(),r(\"}else{\"),e(),r(\"}\")):e()}var s,l,c=t.shared,u=c.gl,f=c.draw,h=n.draw,p=function(){var i=h.elements,a=e;return i?((i.contextDep&&n.contextDynamic||i.propDep)&&(a=r),i=i.append(t,a),h.elementsActive&&a(\"if(\"+i+\")\"+u+\".bindBuffer(34963,\"+i+\".buffer.buffer);\")):(i=a.def(),a(i,\"=\",f,\".\",\"elements\",\";\",\"if(\",i,\"){\",u,\".bindBuffer(\",34963,\",\",i,\".buffer.buffer);}\",\"else if(\",c.vao,\".currentVAO){\",i,\"=\",t.shared.elements+\".getElements(\"+c.vao,\".currentVAO.elements);\",nt?\"\":\"if(\"+i+\")\"+u+\".bindBuffer(34963,\"+i+\".buffer.buffer);\",\"}\")),i}(),d=i(\"primitive\"),g=i(\"offset\"),m=function(){var i=h.count,a=e;return i?((i.contextDep&&n.contextDynamic||i.propDep)&&(a=r),i=i.append(t,a)):i=a.def(f,\".\",\"count\"),i}();if(\"number\"==typeof m){if(0===m)return}else r(\"if(\",m,\"){\"),r.exit(\"}\");tt&&(s=i(\"instances\"),l=t.instancing);var v=p+\".type\",y=h.elements&&D(h.elements)&&!h.vaoActive;tt&&(\"number\"!=typeof s||0<=s)?\"string\"==typeof s?(r(\"if(\",s,\">0){\"),a(),r(\"}else if(\",s,\"<0){\"),o(),r(\"}\")):a():o()}function G(t,e,r,n,i){return i=(e=b()).proc(\"body\",i),tt&&(e.instancing=i.def(e.shared.extensions,\".angle_instanced_arrays\")),t(e,i,r,n),e.compile().body}function Y(t,e,r,n){B(t,e),r.useVAO?r.drawVAO?e(t.shared.vao,\".setVAO(\",r.drawVAO.append(t,e),\");\"):e(t.shared.vao,\".setVAO(\",t.shared.vao,\".targetVAO);\"):(e(t.shared.vao,\".setVAO(null);\"),U(t,e,r,n.attributes,(function(){return!0}))),H(t,e,r,n.uniforms,(function(){return!0}),!1),q(t,e,e,r)}function W(t,e,r,n){function i(){return!0}t.batchId=\"a1\",B(t,e),U(t,e,r,n.attributes,i),H(t,e,r,n.uniforms,i,!1),q(t,e,e,r)}function X(t,e,r,n){function i(t){return t.contextDep&&o||t.propDep}function a(t){return!i(t)}B(t,e);var o=r.contextDep,s=e.def(),l=e.def();t.shared.props=l,t.batchId=s;var c=t.scope(),u=t.scope();e(c.entry,\"for(\",s,\"=0;\",s,\"<\",\"a1\",\";++\",s,\"){\",l,\"=\",\"a0\",\"[\",s,\"];\",u,\"}\",c.exit),r.needsContext&&M(t,u,r.context),r.needsFramebuffer&&S(t,u,r.framebuffer),L(t,u,r.state,i),r.profile&&i(r.profile)&&N(t,u,r,!1,!0),n?(r.useVAO?r.drawVAO?i(r.drawVAO)?u(t.shared.vao,\".setVAO(\",r.drawVAO.append(t,u),\");\"):c(t.shared.vao,\".setVAO(\",r.drawVAO.append(t,c),\");\"):c(t.shared.vao,\".setVAO(\",t.shared.vao,\".targetVAO);\"):(c(t.shared.vao,\".setVAO(null);\"),U(t,c,r,n.attributes,a),U(t,u,r,n.attributes,i)),H(t,c,r,n.uniforms,a,!1),H(t,u,r,n.uniforms,i,!0),q(t,c,u,r)):(e=t.global.def(\"{}\"),n=r.shader.progVar.append(t,u),l=u.def(n,\".id\"),c=u.def(e,\"[\",l,\"]\"),u(t.shared.gl,\".useProgram(\",n,\".program);\",\"if(!\",c,\"){\",c,\"=\",e,\"[\",l,\"]=\",t.link((function(e){return G(W,t,r,e,2)})),\"(\",n,\");}\",c,\".call(this,a0[\",s,\"],\",s,\");\"))}function Z(t,r){function n(e){var n=r.shader[e];n&&i.set(a.shader,\".\"+e,n.append(t,i))}var i=t.proc(\"scope\",3);t.batchId=\"a2\";var a=t.shared,o=a.current;M(t,i,r.context),r.framebuffer&&r.framebuffer.append(t,i),O(Object.keys(r.state)).forEach((function(e){var n=r.state[e].append(t,i);m(n)?n.forEach((function(r,n){i.set(t.next[e],\"[\"+n+\"]\",r)})):i.set(a.next,\".\"+e,n)})),N(t,i,r,!0,!0),[\"elements\",\"offset\",\"count\",\"instances\",\"primitive\"].forEach((function(e){var n=r.draw[e];n&&i.set(a.draw,\".\"+e,\"\"+n.append(t,i))})),Object.keys(r.uniforms).forEach((function(n){var o=r.uniforms[n].append(t,i);Array.isArray(o)&&(o=\"[\"+o.join()+\"]\"),i.set(a.uniforms,\"[\"+e.id(n)+\"]\",o)})),Object.keys(r.attributes).forEach((function(e){var n=r.attributes[e].append(t,i),a=t.scopeAttrib(e);Object.keys(new Q).forEach((function(t){i.set(a,\".\"+t,n[t])}))})),r.scopeVAO&&i.set(a.vao,\".targetVAO\",r.scopeVAO.append(t,i)),n(\"vert\"),n(\"frag\"),0=--this.refCount&&o(this)},i.profile&&(n.getTotalRenderbufferSize=function(){var t=0;return Object.keys(u).forEach((function(e){t+=u[e].stats.size})),t}),{create:function(e,r){function o(e,r){var n=0,a=0,u=32854;if(\"object\"==typeof e&&e?(\"shape\"in e?(n=0|(a=e.shape)[0],a=0|a[1]):(\"radius\"in e&&(n=a=0|e.radius),\"width\"in e&&(n=0|e.width),\"height\"in e&&(a=0|e.height)),\"format\"in e&&(u=s[e.format])):\"number\"==typeof e?(n=0|e,a=\"number\"==typeof r?0|r:n):e||(n=a=1),n!==c.width||a!==c.height||u!==c.format)return o.width=c.width=n,o.height=c.height=a,c.format=u,t.bindRenderbuffer(36161,c.renderbuffer),t.renderbufferStorage(36161,u,n,a),i.profile&&(c.stats.size=vt[c.format]*c.width*c.height),o.format=l[c.format],o}var c=new a(t.createRenderbuffer());return u[c.id]=c,n.renderbufferCount++,o(e,r),o.resize=function(e,r){var n=0|e,a=0|r||n;return n===c.width&&a===c.height||(o.width=c.width=n,o.height=c.height=a,t.bindRenderbuffer(36161,c.renderbuffer),t.renderbufferStorage(36161,c.format,n,a),i.profile&&(c.stats.size=vt[c.format]*c.width*c.height)),o},o._reglType=\"renderbuffer\",o._renderbuffer=c,i.profile&&(o.stats=c.stats),o.destroy=function(){c.decRef()},o},clear:function(){X(u).forEach(o)},restore:function(){X(u).forEach((function(e){e.renderbuffer=t.createRenderbuffer(),t.bindRenderbuffer(36161,e.renderbuffer),t.renderbufferStorage(36161,e.format,e.width,e.height)})),t.bindRenderbuffer(36161,null)}}},xt=[];xt[6408]=4,xt[6407]=3;var bt=[];bt[5121]=1,bt[5126]=4,bt[36193]=2;var _t=[\"x\",\"y\",\"z\",\"w\"],wt=\"blend.func blend.equation stencil.func stencil.opFront stencil.opBack sample.coverage viewport scissor.box polygonOffset.offset\".split(\" \"),Tt={0:0,1:1,zero:0,one:1,\"src color\":768,\"one minus src color\":769,\"src alpha\":770,\"one minus src alpha\":771,\"dst color\":774,\"one minus dst color\":775,\"dst alpha\":772,\"one minus dst alpha\":773,\"constant color\":32769,\"one minus constant color\":32770,\"constant alpha\":32771,\"one minus constant alpha\":32772,\"src alpha saturate\":776},kt={never:512,less:513,\"<\":513,equal:514,\"=\":514,\"==\":514,\"===\":514,lequal:515,\"<=\":515,greater:516,\">\":516,notequal:517,\"!=\":517,\"!==\":517,gequal:518,\">=\":518,always:519},At={0:0,zero:0,keep:7680,replace:7681,increment:7682,decrement:7683,\"increment wrap\":34055,\"decrement wrap\":34056,invert:5386},Mt={cw:2304,ccw:2305},St=new z(!1,!1,!1,(function(){}));return function(t){function e(){if(0===J.length)w&&w.update(),tt=null;else{tt=H.next(e),f();for(var t=J.length-1;0<=t;--t){var r=J[t];r&&r(P,null,0)}m.flush(),w&&w.update()}}function r(){!tt&&0=J.length&&n()}}}}function u(){var t=X.viewport,e=X.scissor_box;t[0]=t[1]=e[0]=e[1]=0,P.viewportWidth=P.framebufferWidth=P.drawingBufferWidth=t[2]=e[2]=m.drawingBufferWidth,P.viewportHeight=P.framebufferHeight=P.drawingBufferHeight=t[3]=e[3]=m.drawingBufferHeight}function f(){P.tick+=1,P.time=g(),u(),W.procs.poll()}function h(){F.refresh(),u(),W.procs.refresh(),w&&w.update()}function g(){return(q()-T)/1e3}if(!(t=i(t)))return null;var m=t.gl,v=m.getContextAttributes();m.isContextLost();var y=function(t,e){function r(e){var r;e=e.toLowerCase();try{r=n[e]=t.getExtension(e)}catch(t){}return!!r}for(var n={},i=0;ie;++e)et(j({framebuffer:t.framebuffer.faces[e]},t),l);else et(t,l);else l(0,t)},prop:V.define.bind(null,1),context:V.define.bind(null,2),this:V.define.bind(null,3),draw:s({}),buffer:function(t){return O.create(t,34962,!1,!1)},elements:function(t){return z.create(t,!1)},texture:F.create2D,cube:F.createCube,renderbuffer:U.create,framebuffer:G.create,framebufferCube:G.createCube,vao:D.createVAO,attributes:v,frame:c,on:function(t,e){var r;switch(t){case\"frame\":return c(e);case\"lost\":r=K;break;case\"restore\":r=Q;break;case\"destroy\":r=$}return r.push(e),{cancel:function(){for(var t=0;t2?\"one of \".concat(e,\" \").concat(t.slice(0,r-1).join(\", \"),\", or \")+t[r-1]:2===r?\"one of \".concat(e,\" \").concat(t[0],\" or \").concat(t[1]):\"of \".concat(e,\" \").concat(t[0])}return\"of \".concat(e,\" \").concat(String(t))}i(\"ERR_INVALID_OPT_VALUE\",(function(t,e){return'The value \"'+e+'\" is invalid for option \"'+t+'\"'}),TypeError),i(\"ERR_INVALID_ARG_TYPE\",(function(t,e,r){var n,i,o,s;if(\"string\"==typeof e&&(i=\"not \",e.substr(!o||o<0?0:+o,i.length)===i)?(n=\"must not be\",e=e.replace(/^not /,\"\")):n=\"must be\",function(t,e,r){return(void 0===r||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}(t,\" argument\"))s=\"The \".concat(t,\" \").concat(n,\" \").concat(a(e,\"type\"));else{var l=function(t,e,r){return\"number\"!=typeof r&&(r=0),!(r+e.length>t.length)&&-1!==t.indexOf(e,r)}(t,\".\")?\"property\":\"argument\";s='The \"'.concat(t,'\" ').concat(l,\" \").concat(n,\" \").concat(a(e,\"type\"))}return s+=\". Received type \".concat(typeof r)}),TypeError),i(\"ERR_STREAM_PUSH_AFTER_EOF\",\"stream.push() after EOF\"),i(\"ERR_METHOD_NOT_IMPLEMENTED\",(function(t){return\"The \"+t+\" method is not implemented\"})),i(\"ERR_STREAM_PREMATURE_CLOSE\",\"Premature close\"),i(\"ERR_STREAM_DESTROYED\",(function(t){return\"Cannot call \"+t+\" after a stream was destroyed\"})),i(\"ERR_MULTIPLE_CALLBACK\",\"Callback called multiple times\"),i(\"ERR_STREAM_CANNOT_PIPE\",\"Cannot pipe, not readable\"),i(\"ERR_STREAM_WRITE_AFTER_END\",\"write after end\"),i(\"ERR_STREAM_NULL_VALUES\",\"May not write null values to stream\",TypeError),i(\"ERR_UNKNOWN_ENCODING\",(function(t){return\"Unknown encoding: \"+t}),TypeError),i(\"ERR_STREAM_UNSHIFT_AFTER_END_EVENT\",\"stream.unshift() after end event\"),e.exports.codes=n},{}],287:[function(t,e,r){(function(r){(function(){\"use strict\";var n=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};e.exports=c;var i=t(\"./_stream_readable\"),a=t(\"./_stream_writable\");t(\"inherits\")(c,i);for(var o=n(a.prototype),s=0;s0)if(\"string\"==typeof e||o.objectMode||Object.getPrototypeOf(e)===s.prototype||(e=function(t){return s.from(t)}(e)),n)o.endEmitted?w(t,new _):S(t,o,e,!0);else if(o.ended)w(t,new x);else{if(o.destroyed)return!1;o.reading=!1,o.decoder&&!r?(e=o.decoder.write(e),o.objectMode||0!==e.length?S(t,o,e,!1):P(t,o)):S(t,o,e,!1)}else n||(o.reading=!1,P(t,o));return!o.ended&&(o.lengthe.highWaterMark&&(e.highWaterMark=function(t){return t>=1073741824?t=1073741824:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function L(t){var e=t._readableState;c(\"emitReadable\",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(c(\"emitReadable\",e.flowing),e.emittedReadable=!0,r.nextTick(C,t))}function C(t){var e=t._readableState;c(\"emitReadable_\",e.destroyed,e.length,e.ended),e.destroyed||!e.length&&!e.ended||(t.emit(\"readable\"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,R(t)}function P(t,e){e.readingMore||(e.readingMore=!0,r.nextTick(I,t,e))}function I(t,e){for(;!e.reading&&!e.ended&&(e.length0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount(\"data\")>0&&t.resume()}function z(t){c(\"readable nexttick read 0\"),t.read(0)}function D(t,e){c(\"resume\",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit(\"resume\"),R(t),e.flowing&&!e.reading&&t.read(0)}function R(t){var e=t._readableState;for(c(\"flow\",e.flowing);e.flowing&&null!==t.read(););}function F(t,e){return 0===e.length?null:(e.objectMode?r=e.buffer.shift():!t||t>=e.length?(r=e.decoder?e.buffer.join(\"\"):1===e.buffer.length?e.buffer.first():e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r);var r}function B(t){var e=t._readableState;c(\"endReadable\",e.endEmitted),e.endEmitted||(e.ended=!0,r.nextTick(N,e,t))}function N(t,e){if(c(\"endReadableNT\",t.endEmitted,t.length),!t.endEmitted&&0===t.length&&(t.endEmitted=!0,e.readable=!1,e.emit(\"end\"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}function j(t,e){for(var r=0,n=t.length;r=e.highWaterMark:e.length>0)||e.ended))return c(\"read: emitReadable\",e.length,e.ended),0===e.length&&e.ended?B(this):L(this),null;if(0===(t=E(t,e))&&e.ended)return 0===e.length&&B(this),null;var n,i=e.needReadable;return c(\"need readable\",i),(0===e.length||e.length-t0?F(t,e):null)?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&B(this)),null!==n&&this.emit(\"data\",n),n},A.prototype._read=function(t){w(this,new b(\"_read()\"))},A.prototype.pipe=function(t,e){var n=this,i=this._readableState;switch(i.pipesCount){case 0:i.pipes=t;break;case 1:i.pipes=[i.pipes,t];break;default:i.pipes.push(t)}i.pipesCount+=1,c(\"pipe count=%d opts=%j\",i.pipesCount,e);var o=(!e||!1!==e.end)&&t!==r.stdout&&t!==r.stderr?l:m;function s(e,r){c(\"onunpipe\"),e===n&&r&&!1===r.hasUnpiped&&(r.hasUnpiped=!0,c(\"cleanup\"),t.removeListener(\"close\",d),t.removeListener(\"finish\",g),t.removeListener(\"drain\",u),t.removeListener(\"error\",p),t.removeListener(\"unpipe\",s),n.removeListener(\"end\",l),n.removeListener(\"end\",m),n.removeListener(\"data\",h),f=!0,!i.awaitDrain||t._writableState&&!t._writableState.needDrain||u())}function l(){c(\"onend\"),t.end()}i.endEmitted?r.nextTick(o):n.once(\"end\",o),t.on(\"unpipe\",s);var u=function(t){return function(){var e=t._readableState;c(\"pipeOnDrain\",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&a(t,\"data\")&&(e.flowing=!0,R(t))}}(n);t.on(\"drain\",u);var f=!1;function h(e){c(\"ondata\");var r=t.write(e);c(\"dest.write\",r),!1===r&&((1===i.pipesCount&&i.pipes===t||i.pipesCount>1&&-1!==j(i.pipes,t))&&!f&&(c(\"false write response, pause\",i.awaitDrain),i.awaitDrain++),n.pause())}function p(e){c(\"onerror\",e),m(),t.removeListener(\"error\",p),0===a(t,\"error\")&&w(t,e)}function d(){t.removeListener(\"finish\",g),m()}function g(){c(\"onfinish\"),t.removeListener(\"close\",d),m()}function m(){c(\"unpipe\"),n.unpipe(t)}return n.on(\"data\",h),function(t,e,r){if(\"function\"==typeof t.prependListener)return t.prependListener(e,r);t._events&&t._events[e]?Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]:t.on(e,r)}(t,\"error\",p),t.once(\"close\",d),t.once(\"finish\",g),t.emit(\"pipe\",n),i.flowing||(c(\"pipe resume\"),n.resume()),t},A.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit(\"unpipe\",this,r)),this;if(!t){var n=e.pipes,i=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var a=0;a0,!1!==i.flowing&&this.resume()):\"readable\"===t&&(i.endEmitted||i.readableListening||(i.readableListening=i.needReadable=!0,i.flowing=!1,i.emittedReadable=!1,c(\"on readable\",i.length,i.reading),i.length?L(this):i.reading||r.nextTick(z,this))),n},A.prototype.addListener=A.prototype.on,A.prototype.removeListener=function(t,e){var n=o.prototype.removeListener.call(this,t,e);return\"readable\"===t&&r.nextTick(O,this),n},A.prototype.removeAllListeners=function(t){var e=o.prototype.removeAllListeners.apply(this,arguments);return\"readable\"!==t&&void 0!==t||r.nextTick(O,this),e},A.prototype.resume=function(){var t=this._readableState;return t.flowing||(c(\"resume\"),t.flowing=!t.readableListening,function(t,e){e.resumeScheduled||(e.resumeScheduled=!0,r.nextTick(D,t,e))}(this,t)),t.paused=!1,this},A.prototype.pause=function(){return c(\"call pause flowing=%j\",this._readableState.flowing),!1!==this._readableState.flowing&&(c(\"pause\"),this._readableState.flowing=!1,this.emit(\"pause\")),this._readableState.paused=!0,this},A.prototype.wrap=function(t){var e=this,r=this._readableState,n=!1;for(var i in t.on(\"end\",(function(){if(c(\"wrapped end\"),r.decoder&&!r.ended){var t=r.decoder.end();t&&t.length&&e.push(t)}e.push(null)})),t.on(\"data\",(function(i){(c(\"wrapped data\"),r.decoder&&(i=r.decoder.write(i)),r.objectMode&&null==i)||(r.objectMode||i&&i.length)&&(e.push(i)||(n=!0,t.pause()))})),t)void 0===this[i]&&\"function\"==typeof t[i]&&(this[i]=function(e){return function(){return t[e].apply(t,arguments)}}(i));for(var a=0;a-1))throw new _(t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(A.prototype,\"writableBuffer\",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(A.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),A.prototype._write=function(t,e,r){r(new g(\"_write()\"))},A.prototype._writev=null,A.prototype.end=function(t,e,n){var i=this._writableState;return\"function\"==typeof t?(n=t,t=null,e=null):\"function\"==typeof e&&(n=e,e=null),null!=t&&this.write(t,e),i.corked&&(i.corked=1,this.uncork()),i.ending||function(t,e,n){e.ending=!0,P(t,e),n&&(e.finished?r.nextTick(n):t.once(\"finish\",n));e.ended=!0,t.writable=!1}(this,i,n),this},Object.defineProperty(A.prototype,\"writableLength\",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(A.prototype,\"destroyed\",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),A.prototype.destroy=f.destroy,A.prototype._undestroy=f.undestroy,A.prototype._destroy=function(t,e){e(t)}}).call(this)}).call(this,t(\"_process\"),\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"../errors\":286,\"./_stream_duplex\":287,\"./internal/streams/destroy\":294,\"./internal/streams/state\":298,\"./internal/streams/stream\":299,_process:277,buffer:85,inherits:231,\"util-deprecate\":330}],292:[function(t,e,r){(function(r){(function(){\"use strict\";var n;function i(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var a=t(\"./end-of-stream\"),o=Symbol(\"lastResolve\"),s=Symbol(\"lastReject\"),l=Symbol(\"error\"),c=Symbol(\"ended\"),u=Symbol(\"lastPromise\"),f=Symbol(\"handlePromise\"),h=Symbol(\"stream\");function p(t,e){return{value:t,done:e}}function d(t){var e=t[o];if(null!==e){var r=t[h].read();null!==r&&(t[u]=null,t[o]=null,t[s]=null,e(p(r,!1)))}}function g(t){r.nextTick(d,t)}var m=Object.getPrototypeOf((function(){})),v=Object.setPrototypeOf((i(n={get stream(){return this[h]},next:function(){var t=this,e=this[l];if(null!==e)return Promise.reject(e);if(this[c])return Promise.resolve(p(void 0,!0));if(this[h].destroyed)return new Promise((function(e,n){r.nextTick((function(){t[l]?n(t[l]):e(p(void 0,!0))}))}));var n,i=this[u];if(i)n=new Promise(function(t,e){return function(r,n){t.then((function(){e[c]?r(p(void 0,!0)):e[f](r,n)}),n)}}(i,this));else{var a=this[h].read();if(null!==a)return Promise.resolve(p(a,!1));n=new Promise(this[f])}return this[u]=n,n}},Symbol.asyncIterator,(function(){return this})),i(n,\"return\",(function(){var t=this;return new Promise((function(e,r){t[h].destroy(null,(function(t){t?r(t):e(p(void 0,!0))}))}))})),n),m);e.exports=function(t){var e,r=Object.create(v,(i(e={},h,{value:t,writable:!0}),i(e,o,{value:null,writable:!0}),i(e,s,{value:null,writable:!0}),i(e,l,{value:null,writable:!0}),i(e,c,{value:t._readableState.endEmitted,writable:!0}),i(e,f,{value:function(t,e){var n=r[h].read();n?(r[u]=null,r[o]=null,r[s]=null,t(p(n,!1))):(r[o]=t,r[s]=e)},writable:!0}),e));return r[u]=null,a(t,(function(t){if(t&&\"ERR_STREAM_PREMATURE_CLOSE\"!==t.code){var e=r[s];return null!==e&&(r[u]=null,r[o]=null,r[s]=null,e(t)),void(r[l]=t)}var n=r[o];null!==n&&(r[u]=null,r[o]=null,r[s]=null,n(p(void 0,!0))),r[c]=!0})),t.on(\"readable\",g.bind(null,r)),r}}).call(this)}).call(this,t(\"_process\"))},{\"./end-of-stream\":295,_process:277}],293:[function(t,e,r){\"use strict\";function n(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function i(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function a(t,e){for(var r=0;r0?this.tail.next=e:this.head=e,this.tail=e,++this.length}},{key:\"unshift\",value:function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length}},{key:\"shift\",value:function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}}},{key:\"clear\",value:function(){this.head=this.tail=null,this.length=0}},{key:\"join\",value:function(t){if(0===this.length)return\"\";for(var e=this.head,r=\"\"+e.data;e=e.next;)r+=t+e.data;return r}},{key:\"concat\",value:function(t){if(0===this.length)return o.alloc(0);for(var e,r,n,i=o.allocUnsafe(t>>>0),a=this.head,s=0;a;)e=a.data,r=i,n=s,o.prototype.copy.call(e,r,n),s+=a.data.length,a=a.next;return i}},{key:\"consume\",value:function(t,e){var r;return ti.length?i.length:t;if(a===i.length?n+=i:n+=i.slice(0,t),0==(t-=a)){a===i.length?(++r,e.next?this.head=e.next:this.head=this.tail=null):(this.head=e,e.data=i.slice(a));break}++r}return this.length-=r,n}},{key:\"_getBuffer\",value:function(t){var e=o.allocUnsafe(t),r=this.head,n=1;for(r.data.copy(e),t-=r.data.length;r=r.next;){var i=r.data,a=t>i.length?i.length:t;if(i.copy(e,e.length-t,0,a),0==(t-=a)){a===i.length?(++n,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=i.slice(a));break}++n}return this.length-=n,e}},{key:l,value:function(t,e){return s(this,function(t){for(var e=1;e0,(function(t){n||(n=t),t&&o.forEach(c),a||(o.forEach(c),i(n))}))}));return e.reduce(u)}},{\"../../../errors\":286,\"./end-of-stream\":295}],298:[function(t,e,r){\"use strict\";var n=t(\"../../../errors\").codes.ERR_INVALID_OPT_VALUE;e.exports={getHighWaterMark:function(t,e,r,i){var a=function(t,e,r){return null!=t.highWaterMark?t.highWaterMark:e?t[r]:null}(e,i,r);if(null!=a){if(!isFinite(a)||Math.floor(a)!==a||a<0)throw new n(i?r:\"highWaterMark\",a);return Math.floor(a)}return t.objectMode?16:16384}}},{\"../../../errors\":286}],299:[function(t,e,r){e.exports=t(\"events\").EventEmitter},{events:84}],300:[function(t,e,r){\"use strict\";var n=t(\"safe-buffer\").Buffer,i=n.isEncoding||function(t){switch((t=\"\"+t)&&t.toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":case\"raw\":return!0;default:return!1}};function a(t){var e;switch(this.encoding=function(t){var e=function(t){if(!t)return\"utf8\";for(var e;;)switch(t){case\"utf8\":case\"utf-8\":return\"utf8\";case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return\"utf16le\";case\"latin1\":case\"binary\":return\"latin1\";case\"base64\":case\"ascii\":case\"hex\":return t;default:if(e)return;t=(\"\"+t).toLowerCase(),e=!0}}(t);if(\"string\"!=typeof e&&(n.isEncoding===i||!i(t)))throw new Error(\"Unknown encoding: \"+t);return e||t}(t),this.encoding){case\"utf16le\":this.text=l,this.end=c,e=4;break;case\"utf8\":this.fillLast=s,e=4;break;case\"base64\":this.text=u,this.end=f,e=3;break;default:return this.write=h,void(this.end=p)}this.lastNeed=0,this.lastTotal=0,this.lastChar=n.allocUnsafe(e)}function o(t){return t<=127?0:t>>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function s(t){var e=this.lastTotal-this.lastNeed,r=function(t,e,r){if(128!=(192&e[0]))return t.lastNeed=0,\"\\ufffd\";if(t.lastNeed>1&&e.length>1){if(128!=(192&e[1]))return t.lastNeed=1,\"\\ufffd\";if(t.lastNeed>2&&e.length>2&&128!=(192&e[2]))return t.lastNeed=2,\"\\ufffd\"}}(this,t);return void 0!==r?r:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),void(this.lastNeed-=t.length))}function l(t,e){if((t.length-e)%2==0){var r=t.toString(\"utf16le\",e);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString(\"utf16le\",e,t.length-1)}function c(t){var e=t&&t.length?this.write(t):\"\";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString(\"utf16le\",0,r)}return e}function u(t,e){var r=(t.length-e)%3;return 0===r?t.toString(\"base64\",e):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString(\"base64\",e,t.length-r))}function f(t){var e=t&&t.length?this.write(t):\"\";return this.lastNeed?e+this.lastChar.toString(\"base64\",0,3-this.lastNeed):e}function h(t){return t.toString(this.encoding)}function p(t){return t&&t.length?this.write(t):\"\"}r.StringDecoder=a,a.prototype.write=function(t){if(0===t.length)return\"\";var e,r;if(this.lastNeed){if(void 0===(e=this.fillLast(t)))return\"\";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0)return i>0&&(t.lastNeed=i-1),i;if(--n=0)return i>0&&(t.lastNeed=i-2),i;if(--n=0)return i>0&&(2===i?i=0:t.lastNeed=i-3),i;return 0}(this,t,e);if(!this.lastNeed)return t.toString(\"utf8\",e);this.lastTotal=r;var n=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,n),t.toString(\"utf8\",e,n)},a.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length}},{\"safe-buffer\":284}],301:[function(t,e,r){(function(r,n){(function(){var r=t(\"assert\"),i=t(\"debug\")(\"stream-parser\");e.exports=function(t){var e=t&&\"function\"==typeof t._transform,r=t&&\"function\"==typeof t._write;if(!e&&!r)throw new Error(\"must pass a Writable or Transform stream in\");i(\"extending Parser into stream\"),t._bytes=o,t._skipBytes=s,e&&(t._passthrough=l);e?t._transform=u:t._write=c};function a(t){i(\"initializing parser stream\"),t._parserBytesLeft=0,t._parserBuffers=[],t._parserBuffered=0,t._parserState=-1,t._parserCallback=null,\"function\"==typeof t.push&&(t._parserOutput=t.push.bind(t)),t._parserInit=!0}function o(t,e){r(!this._parserCallback,'there is already a \"callback\" set!'),r(isFinite(t)&&t>0,'can only buffer a finite number of bytes > 0, got \"'+t+'\"'),this._parserInit||a(this),i(\"buffering %o bytes\",t),this._parserBytesLeft=t,this._parserCallback=e,this._parserState=0}function s(t,e){r(!this._parserCallback,'there is already a \"callback\" set!'),r(t>0,'can only skip > 0 bytes, got \"'+t+'\"'),this._parserInit||a(this),i(\"skipping %o bytes\",t),this._parserBytesLeft=t,this._parserCallback=e,this._parserState=1}function l(t,e){r(!this._parserCallback,'There is already a \"callback\" set!'),r(t>0,'can only pass through > 0 bytes, got \"'+t+'\"'),this._parserInit||a(this),i(\"passing through %o bytes\",t),this._parserBytesLeft=t,this._parserCallback=e,this._parserState=2}function c(t,e,r){this._parserInit||a(this),i(\"write(%o bytes)\",t.length),\"function\"==typeof e&&(r=e),h(this,t,null,r)}function u(t,e,r){this._parserInit||a(this),i(\"transform(%o bytes)\",t.length),\"function\"!=typeof e&&(e=this._parserOutput),h(this,t,e,r)}function f(t,e,r,a){if(t._parserBytesLeft-=e.length,i(\"%o bytes left for stream piece\",t._parserBytesLeft),0===t._parserState?(t._parserBuffers.push(e),t._parserBuffered+=e.length):2===t._parserState&&r(e),0!==t._parserBytesLeft)return a;var o=t._parserCallback;if(o&&0===t._parserState&&t._parserBuffers.length>1&&(e=n.concat(t._parserBuffers,t._parserBuffered)),0!==t._parserState&&(e=null),t._parserCallback=null,t._parserBuffered=0,t._parserState=-1,t._parserBuffers.splice(0),o){var s=[];e&&s.push(e),r&&s.push(r);var l=o.length>s.length;l&&s.push(p(a));var c=o.apply(t,s);if(!l||a===c)return a}}var h=p((function t(e,r,n,i){return e._parserBytesLeft<=0?i(new Error(\"got data but not currently parsing anything\")):r.length<=e._parserBytesLeft?function(){return f(e,r,n,i)}:function(){var a=r.slice(0,e._parserBytesLeft);return f(e,a,n,(function(o){return o?i(o):r.length>a.length?function(){return t(e,r.slice(a.length),n,i)}:void 0}))}}));function p(t){return function(){for(var e=t.apply(this,arguments);\"function\"==typeof e;)e=e();return e}}}).call(this)}).call(this,t(\"_process\"),t(\"buffer\").Buffer)},{_process:277,assert:75,buffer:85,debug:302}],302:[function(t,e,r){(function(n){(function(){function i(){var t;try{t=r.storage.debug}catch(t){}return!t&&void 0!==n&&\"env\"in n&&(t=n.env.DEBUG),t}(r=e.exports=t(\"./debug\")).log=function(){return\"object\"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)},r.formatArgs=function(t){var e=this.useColors;if(t[0]=(e?\"%c\":\"\")+this.namespace+(e?\" %c\":\" \")+t[0]+(e?\"%c \":\" \")+\"+\"+r.humanize(this.diff),!e)return;var n=\"color: \"+this.color;t.splice(1,0,n,\"color: inherit\");var i=0,a=0;t[0].replace(/%[a-zA-Z%]/g,(function(t){\"%%\"!==t&&(i++,\"%c\"===t&&(a=i))})),t.splice(a,0,n)},r.save=function(t){try{null==t?r.storage.removeItem(\"debug\"):r.storage.debug=t}catch(t){}},r.load=i,r.useColors=function(){if(\"undefined\"!=typeof window&&window.process&&\"renderer\"===window.process.type)return!0;return\"undefined\"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||\"undefined\"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||\"undefined\"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)&&parseInt(RegExp.$1,10)>=31||\"undefined\"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/)},r.storage=\"undefined\"!=typeof chrome&&void 0!==chrome.storage?chrome.storage.local:function(){try{return window.localStorage}catch(t){}}(),r.colors=[\"lightseagreen\",\"forestgreen\",\"goldenrod\",\"dodgerblue\",\"darkorchid\",\"crimson\"],r.formatters.j=function(t){try{return JSON.stringify(t)}catch(t){return\"[UnexpectedJSONParseError]: \"+t.message}},r.enable(i())}).call(this)}).call(this,t(\"_process\"))},{\"./debug\":303,_process:277}],303:[function(t,e,r){var n;function i(t){function e(){if(e.enabled){var t=e,i=+new Date,a=i-(n||i);t.diff=a,t.prev=n,t.curr=i,n=i;for(var o=new Array(arguments.length),s=0;s0)return function(t){if((t=String(t)).length>100)return;var e=/^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(t);if(!e)return;var r=parseFloat(e[1]);switch((e[2]||\"ms\").toLowerCase()){case\"years\":case\"year\":case\"yrs\":case\"yr\":case\"y\":return 315576e5*r;case\"days\":case\"day\":case\"d\":return r*o;case\"hours\":case\"hour\":case\"hrs\":case\"hr\":case\"h\":return r*a;case\"minutes\":case\"minute\":case\"mins\":case\"min\":case\"m\":return r*i;case\"seconds\":case\"second\":case\"secs\":case\"sec\":case\"s\":return r*n;case\"milliseconds\":case\"millisecond\":case\"msecs\":case\"msec\":case\"ms\":return r;default:return}}(t);if(\"number\"===l&&!1===isNaN(t))return e.long?s(r=t,o,\"day\")||s(r,a,\"hour\")||s(r,i,\"minute\")||s(r,n,\"second\")||r+\" ms\":function(t){if(t>=o)return Math.round(t/o)+\"d\";if(t>=a)return Math.round(t/a)+\"h\";if(t>=i)return Math.round(t/i)+\"m\";if(t>=n)return Math.round(t/n)+\"s\";return t+\"ms\"}(t);throw new Error(\"val is not a non-empty string or a valid number. val=\"+JSON.stringify(t))}},{}],305:[function(t,e,r){\"use strict\";var n=t(\"parenthesis\");e.exports=function(t,e,r){if(null==t)throw Error(\"First argument should be a string\");if(null==e)throw Error(\"Separator should be a string or a RegExp\");r?(\"string\"==typeof r||Array.isArray(r))&&(r={ignore:r}):r={},null==r.escape&&(r.escape=!0),null==r.ignore?r.ignore=[\"[]\",\"()\",\"{}\",\"<>\",'\"\"',\"''\",\"``\",\"\\u201c\\u201d\",\"\\xab\\xbb\"]:(\"string\"==typeof r.ignore&&(r.ignore=[r.ignore]),r.ignore=r.ignore.map((function(t){return 1===t.length&&(t+=t),t})));var i=n.parse(t,{flat:!0,brackets:r.ignore}),a=i[0].split(e);if(r.escape){for(var o=[],s=0;s0;){e=c[c.length-1];var p=t[e];if(a[e]=0&&s[e].push(o[g])}a[e]=d}else{if(n[e]===r[e]){var m=[],v=[],y=0;for(d=l.length-1;d>=0;--d){var x=l[d];if(i[x]=!1,m.push(x),v.push(s[x]),y+=s[x].length,o[x]=f.length,x===e){l.length=d;break}}f.push(m);var b=new Array(y);for(d=0;d1&&(i=1),i<-1&&(i=-1),(t*n-e*r<0?-1:1)*Math.acos(i)};r.default=function(t){var e=t.px,r=t.py,l=t.cx,c=t.cy,u=t.rx,f=t.ry,h=t.xAxisRotation,p=void 0===h?0:h,d=t.largeArcFlag,g=void 0===d?0:d,m=t.sweepFlag,v=void 0===m?0:m,y=[];if(0===u||0===f)return[];var x=Math.sin(p*i/360),b=Math.cos(p*i/360),_=b*(e-l)/2+x*(r-c)/2,w=-x*(e-l)/2+b*(r-c)/2;if(0===_&&0===w)return[];u=Math.abs(u),f=Math.abs(f);var T=Math.pow(_,2)/Math.pow(u,2)+Math.pow(w,2)/Math.pow(f,2);T>1&&(u*=Math.sqrt(T),f*=Math.sqrt(T));var k=function(t,e,r,n,a,o,l,c,u,f,h,p){var d=Math.pow(a,2),g=Math.pow(o,2),m=Math.pow(h,2),v=Math.pow(p,2),y=d*g-d*v-g*m;y<0&&(y=0),y/=d*v+g*m;var x=(y=Math.sqrt(y)*(l===c?-1:1))*a/o*p,b=y*-o/a*h,_=f*x-u*b+(t+r)/2,w=u*x+f*b+(e+n)/2,T=(h-x)/a,k=(p-b)/o,A=(-h-x)/a,M=(-p-b)/o,S=s(1,0,T,k),E=s(T,k,A,M);return 0===c&&E>0&&(E-=i),1===c&&E<0&&(E+=i),[_,w,S,E]}(e,r,l,c,u,f,g,v,x,b,_,w),A=n(k,4),M=A[0],S=A[1],E=A[2],L=A[3],C=Math.abs(L)/(i/4);Math.abs(1-C)<1e-7&&(C=1);var P=Math.max(Math.ceil(C),1);L/=P;for(var I=0;Ie[2]&&(e[2]=c[u+0]),c[u+1]>e[3]&&(e[3]=c[u+1]);return e}},{\"abs-svg-path\":70,assert:75,\"is-svg-path\":238,\"normalize-svg-path\":309,\"parse-svg-path\":250}],309:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e,r=[],o=0,s=0,l=0,c=0,u=null,f=null,h=0,p=0,d=0,g=t.length;d4?(o=m[m.length-4],s=m[m.length-3]):(o=h,s=p),r.push(m)}return r};var n=t(\"svg-arc-to-cubic-bezier\");function i(t,e,r,n){return[\"C\",t,e,r,n,r,n]}function a(t,e,r,n,i,a){return[\"C\",t/3+2/3*r,e/3+2/3*n,i/3+2/3*r,a/3+2/3*n,i,a]}},{\"svg-arc-to-cubic-bezier\":307}],310:[function(t,e,r){\"use strict\";var n,i=t(\"svg-path-bounds\"),a=t(\"parse-svg-path\"),o=t(\"draw-svg-path\"),s=t(\"is-svg-path\"),l=t(\"bitmap-sdf\"),c=document.createElement(\"canvas\"),u=c.getContext(\"2d\");e.exports=function(t,e){if(!s(t))throw Error(\"Argument should be valid svg path string\");e||(e={});var r,f;e.shape?(r=e.shape[0],f=e.shape[1]):(r=c.width=e.w||e.width||200,f=c.height=e.h||e.height||200);var h=Math.min(r,f),p=e.stroke||0,d=e.viewbox||e.viewBox||i(t),g=[r/(d[2]-d[0]),f/(d[3]-d[1])],m=Math.min(g[0]||0,g[1]||0)/2;u.fillStyle=\"black\",u.fillRect(0,0,r,f),u.fillStyle=\"white\",p&&(\"number\"!=typeof p&&(p=1),u.strokeStyle=p>0?\"white\":\"black\",u.lineWidth=Math.abs(p));if(u.translate(.5*r,.5*f),u.scale(m,m),function(){if(null!=n)return n;var t=document.createElement(\"canvas\").getContext(\"2d\");if(t.canvas.width=t.canvas.height=1,!window.Path2D)return n=!1;var e=new Path2D(\"M0,0h1v1h-1v-1Z\");t.fillStyle=\"black\",t.fill(e);var r=t.getImageData(0,0,1,1);return n=r&&r.data&&255===r.data[3]}()){var v=new Path2D(t);u.fill(v),p&&u.stroke(v)}else{var y=a(t);o(u,y),u.fill(),p&&u.stroke()}return u.setTransform(1,0,0,1,0,0),l(u,{cutoff:null!=e.cutoff?e.cutoff:.5,radius:null!=e.radius?e.radius:.5*h})}},{\"bitmap-sdf\":82,\"draw-svg-path\":126,\"is-svg-path\":238,\"parse-svg-path\":250,\"svg-path-bounds\":308}],311:[function(t,e,r){(function(e,n){(function(){var i=t(\"process/browser.js\").nextTick,a=Function.prototype.apply,o=Array.prototype.slice,s={},l=0;function c(t,e){this._id=t,this._clearFn=e}r.setTimeout=function(){return new c(a.call(setTimeout,window,arguments),clearTimeout)},r.setInterval=function(){return new c(a.call(setInterval,window,arguments),clearInterval)},r.clearTimeout=r.clearInterval=function(t){t.close()},c.prototype.unref=c.prototype.ref=function(){},c.prototype.close=function(){this._clearFn.call(window,this._id)},r.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},r.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},r._unrefActive=r.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout((function(){t._onTimeout&&t._onTimeout()}),e))},r.setImmediate=\"function\"==typeof e?e:function(t){var e=l++,n=!(arguments.length<2)&&o.call(arguments,1);return s[e]=!0,i((function(){s[e]&&(n?t.apply(null,n):t.call(null),r.clearImmediate(e))})),e},r.clearImmediate=\"function\"==typeof n?n:function(t){delete s[t]}}).call(this)}).call(this,t(\"timers\").setImmediate,t(\"timers\").clearImmediate)},{\"process/browser.js\":277,timers:311}],312:[function(t,e,r){!function(t){var r=/^\\s+/,n=/\\s+$/,i=0,a=t.round,o=t.min,s=t.max,l=t.random;function c(e,l){if(l=l||{},(e=e||\"\")instanceof c)return e;if(!(this instanceof c))return new c(e,l);var u=function(e){var i={r:0,g:0,b:0},a=1,l=null,c=null,u=null,f=!1,h=!1;\"string\"==typeof e&&(e=function(t){t=t.replace(r,\"\").replace(n,\"\").toLowerCase();var e,i=!1;if(S[t])t=S[t],i=!0;else if(\"transparent\"==t)return{r:0,g:0,b:0,a:0,format:\"name\"};if(e=j.rgb.exec(t))return{r:e[1],g:e[2],b:e[3]};if(e=j.rgba.exec(t))return{r:e[1],g:e[2],b:e[3],a:e[4]};if(e=j.hsl.exec(t))return{h:e[1],s:e[2],l:e[3]};if(e=j.hsla.exec(t))return{h:e[1],s:e[2],l:e[3],a:e[4]};if(e=j.hsv.exec(t))return{h:e[1],s:e[2],v:e[3]};if(e=j.hsva.exec(t))return{h:e[1],s:e[2],v:e[3],a:e[4]};if(e=j.hex8.exec(t))return{r:I(e[1]),g:I(e[2]),b:I(e[3]),a:R(e[4]),format:i?\"name\":\"hex8\"};if(e=j.hex6.exec(t))return{r:I(e[1]),g:I(e[2]),b:I(e[3]),format:i?\"name\":\"hex\"};if(e=j.hex4.exec(t))return{r:I(e[1]+\"\"+e[1]),g:I(e[2]+\"\"+e[2]),b:I(e[3]+\"\"+e[3]),a:R(e[4]+\"\"+e[4]),format:i?\"name\":\"hex8\"};if(e=j.hex3.exec(t))return{r:I(e[1]+\"\"+e[1]),g:I(e[2]+\"\"+e[2]),b:I(e[3]+\"\"+e[3]),format:i?\"name\":\"hex\"};return!1}(e));\"object\"==typeof e&&(U(e.r)&&U(e.g)&&U(e.b)?(p=e.r,d=e.g,g=e.b,i={r:255*C(p,255),g:255*C(d,255),b:255*C(g,255)},f=!0,h=\"%\"===String(e.r).substr(-1)?\"prgb\":\"rgb\"):U(e.h)&&U(e.s)&&U(e.v)?(l=z(e.s),c=z(e.v),i=function(e,r,n){e=6*C(e,360),r=C(r,100),n=C(n,100);var i=t.floor(e),a=e-i,o=n*(1-r),s=n*(1-a*r),l=n*(1-(1-a)*r),c=i%6;return{r:255*[n,s,o,o,l,n][c],g:255*[l,n,n,s,o,o][c],b:255*[o,o,l,n,n,s][c]}}(e.h,l,c),f=!0,h=\"hsv\"):U(e.h)&&U(e.s)&&U(e.l)&&(l=z(e.s),u=z(e.l),i=function(t,e,r){var n,i,a;function o(t,e,r){return r<0&&(r+=1),r>1&&(r-=1),r<1/6?t+6*(e-t)*r:r<.5?e:r<2/3?t+(e-t)*(2/3-r)*6:t}if(t=C(t,360),e=C(e,100),r=C(r,100),0===e)n=i=a=r;else{var s=r<.5?r*(1+e):r+e-r*e,l=2*r-s;n=o(l,s,t+1/3),i=o(l,s,t),a=o(l,s,t-1/3)}return{r:255*n,g:255*i,b:255*a}}(e.h,l,u),f=!0,h=\"hsl\"),e.hasOwnProperty(\"a\")&&(a=e.a));var p,d,g;return a=L(a),{ok:f,format:e.format||h,r:o(255,s(i.r,0)),g:o(255,s(i.g,0)),b:o(255,s(i.b,0)),a:a}}(e);this._originalInput=e,this._r=u.r,this._g=u.g,this._b=u.b,this._a=u.a,this._roundA=a(100*this._a)/100,this._format=l.format||u.format,this._gradientType=l.gradientType,this._r<1&&(this._r=a(this._r)),this._g<1&&(this._g=a(this._g)),this._b<1&&(this._b=a(this._b)),this._ok=u.ok,this._tc_id=i++}function u(t,e,r){t=C(t,255),e=C(e,255),r=C(r,255);var n,i,a=s(t,e,r),l=o(t,e,r),c=(a+l)/2;if(a==l)n=i=0;else{var u=a-l;switch(i=c>.5?u/(2-a-l):u/(a+l),a){case t:n=(e-r)/u+(e>1)+720)%360;--e;)n.h=(n.h+i)%360,a.push(c(n));return a}function M(t,e){e=e||6;for(var r=c(t).toHsv(),n=r.h,i=r.s,a=r.v,o=[],s=1/e;e--;)o.push(c({h:n,s:i,v:a})),a=(a+s)%1;return o}c.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var t=this.toRgb();return(299*t.r+587*t.g+114*t.b)/1e3},getLuminance:function(){var e,r,n,i=this.toRgb();return e=i.r/255,r=i.g/255,n=i.b/255,.2126*(e<=.03928?e/12.92:t.pow((e+.055)/1.055,2.4))+.7152*(r<=.03928?r/12.92:t.pow((r+.055)/1.055,2.4))+.0722*(n<=.03928?n/12.92:t.pow((n+.055)/1.055,2.4))},setAlpha:function(t){return this._a=L(t),this._roundA=a(100*this._a)/100,this},toHsv:function(){var t=f(this._r,this._g,this._b);return{h:360*t.h,s:t.s,v:t.v,a:this._a}},toHsvString:function(){var t=f(this._r,this._g,this._b),e=a(360*t.h),r=a(100*t.s),n=a(100*t.v);return 1==this._a?\"hsv(\"+e+\", \"+r+\"%, \"+n+\"%)\":\"hsva(\"+e+\", \"+r+\"%, \"+n+\"%, \"+this._roundA+\")\"},toHsl:function(){var t=u(this._r,this._g,this._b);return{h:360*t.h,s:t.s,l:t.l,a:this._a}},toHslString:function(){var t=u(this._r,this._g,this._b),e=a(360*t.h),r=a(100*t.s),n=a(100*t.l);return 1==this._a?\"hsl(\"+e+\", \"+r+\"%, \"+n+\"%)\":\"hsla(\"+e+\", \"+r+\"%, \"+n+\"%, \"+this._roundA+\")\"},toHex:function(t){return h(this._r,this._g,this._b,t)},toHexString:function(t){return\"#\"+this.toHex(t)},toHex8:function(t){return function(t,e,r,n,i){var o=[O(a(t).toString(16)),O(a(e).toString(16)),O(a(r).toString(16)),O(D(n))];if(i&&o[0].charAt(0)==o[0].charAt(1)&&o[1].charAt(0)==o[1].charAt(1)&&o[2].charAt(0)==o[2].charAt(1)&&o[3].charAt(0)==o[3].charAt(1))return o[0].charAt(0)+o[1].charAt(0)+o[2].charAt(0)+o[3].charAt(0);return o.join(\"\")}(this._r,this._g,this._b,this._a,t)},toHex8String:function(t){return\"#\"+this.toHex8(t)},toRgb:function(){return{r:a(this._r),g:a(this._g),b:a(this._b),a:this._a}},toRgbString:function(){return 1==this._a?\"rgb(\"+a(this._r)+\", \"+a(this._g)+\", \"+a(this._b)+\")\":\"rgba(\"+a(this._r)+\", \"+a(this._g)+\", \"+a(this._b)+\", \"+this._roundA+\")\"},toPercentageRgb:function(){return{r:a(100*C(this._r,255))+\"%\",g:a(100*C(this._g,255))+\"%\",b:a(100*C(this._b,255))+\"%\",a:this._a}},toPercentageRgbString:function(){return 1==this._a?\"rgb(\"+a(100*C(this._r,255))+\"%, \"+a(100*C(this._g,255))+\"%, \"+a(100*C(this._b,255))+\"%)\":\"rgba(\"+a(100*C(this._r,255))+\"%, \"+a(100*C(this._g,255))+\"%, \"+a(100*C(this._b,255))+\"%, \"+this._roundA+\")\"},toName:function(){return 0===this._a?\"transparent\":!(this._a<1)&&(E[h(this._r,this._g,this._b,!0)]||!1)},toFilter:function(t){var e=\"#\"+p(this._r,this._g,this._b,this._a),r=e,n=this._gradientType?\"GradientType = 1, \":\"\";if(t){var i=c(t);r=\"#\"+p(i._r,i._g,i._b,i._a)}return\"progid:DXImageTransform.Microsoft.gradient(\"+n+\"startColorstr=\"+e+\",endColorstr=\"+r+\")\"},toString:function(t){var e=!!t;t=t||this._format;var r=!1,n=this._a<1&&this._a>=0;return e||!n||\"hex\"!==t&&\"hex6\"!==t&&\"hex3\"!==t&&\"hex4\"!==t&&\"hex8\"!==t&&\"name\"!==t?(\"rgb\"===t&&(r=this.toRgbString()),\"prgb\"===t&&(r=this.toPercentageRgbString()),\"hex\"!==t&&\"hex6\"!==t||(r=this.toHexString()),\"hex3\"===t&&(r=this.toHexString(!0)),\"hex4\"===t&&(r=this.toHex8String(!0)),\"hex8\"===t&&(r=this.toHex8String()),\"name\"===t&&(r=this.toName()),\"hsl\"===t&&(r=this.toHslString()),\"hsv\"===t&&(r=this.toHsvString()),r||this.toHexString()):\"name\"===t&&0===this._a?this.toName():this.toRgbString()},clone:function(){return c(this.toString())},_applyModification:function(t,e){var r=t.apply(null,[this].concat([].slice.call(e)));return this._r=r._r,this._g=r._g,this._b=r._b,this.setAlpha(r._a),this},lighten:function(){return this._applyModification(v,arguments)},brighten:function(){return this._applyModification(y,arguments)},darken:function(){return this._applyModification(x,arguments)},desaturate:function(){return this._applyModification(d,arguments)},saturate:function(){return this._applyModification(g,arguments)},greyscale:function(){return this._applyModification(m,arguments)},spin:function(){return this._applyModification(b,arguments)},_applyCombination:function(t,e){return t.apply(null,[this].concat([].slice.call(e)))},analogous:function(){return this._applyCombination(A,arguments)},complement:function(){return this._applyCombination(_,arguments)},monochromatic:function(){return this._applyCombination(M,arguments)},splitcomplement:function(){return this._applyCombination(k,arguments)},triad:function(){return this._applyCombination(w,arguments)},tetrad:function(){return this._applyCombination(T,arguments)}},c.fromRatio=function(t,e){if(\"object\"==typeof t){var r={};for(var n in t)t.hasOwnProperty(n)&&(r[n]=\"a\"===n?t[n]:z(t[n]));t=r}return c(t,e)},c.equals=function(t,e){return!(!t||!e)&&c(t).toRgbString()==c(e).toRgbString()},c.random=function(){return c.fromRatio({r:l(),g:l(),b:l()})},c.mix=function(t,e,r){r=0===r?0:r||50;var n=c(t).toRgb(),i=c(e).toRgb(),a=r/100;return c({r:(i.r-n.r)*a+n.r,g:(i.g-n.g)*a+n.g,b:(i.b-n.b)*a+n.b,a:(i.a-n.a)*a+n.a})},c.readability=function(e,r){var n=c(e),i=c(r);return(t.max(n.getLuminance(),i.getLuminance())+.05)/(t.min(n.getLuminance(),i.getLuminance())+.05)},c.isReadable=function(t,e,r){var n,i,a=c.readability(t,e);switch(i=!1,(n=function(t){var e,r;e=((t=t||{level:\"AA\",size:\"small\"}).level||\"AA\").toUpperCase(),r=(t.size||\"small\").toLowerCase(),\"AA\"!==e&&\"AAA\"!==e&&(e=\"AA\");\"small\"!==r&&\"large\"!==r&&(r=\"small\");return{level:e,size:r}}(r)).level+n.size){case\"AAsmall\":case\"AAAlarge\":i=a>=4.5;break;case\"AAlarge\":i=a>=3;break;case\"AAAsmall\":i=a>=7}return i},c.mostReadable=function(t,e,r){var n,i,a,o,s=null,l=0;i=(r=r||{}).includeFallbackColors,a=r.level,o=r.size;for(var u=0;ul&&(l=n,s=c(e[u]));return c.isReadable(t,s,{level:a,size:o})||!i?s:(r.includeFallbackColors=!1,c.mostReadable(t,[\"#fff\",\"#000\"],r))};var S=c.names={aliceblue:\"f0f8ff\",antiquewhite:\"faebd7\",aqua:\"0ff\",aquamarine:\"7fffd4\",azure:\"f0ffff\",beige:\"f5f5dc\",bisque:\"ffe4c4\",black:\"000\",blanchedalmond:\"ffebcd\",blue:\"00f\",blueviolet:\"8a2be2\",brown:\"a52a2a\",burlywood:\"deb887\",burntsienna:\"ea7e5d\",cadetblue:\"5f9ea0\",chartreuse:\"7fff00\",chocolate:\"d2691e\",coral:\"ff7f50\",cornflowerblue:\"6495ed\",cornsilk:\"fff8dc\",crimson:\"dc143c\",cyan:\"0ff\",darkblue:\"00008b\",darkcyan:\"008b8b\",darkgoldenrod:\"b8860b\",darkgray:\"a9a9a9\",darkgreen:\"006400\",darkgrey:\"a9a9a9\",darkkhaki:\"bdb76b\",darkmagenta:\"8b008b\",darkolivegreen:\"556b2f\",darkorange:\"ff8c00\",darkorchid:\"9932cc\",darkred:\"8b0000\",darksalmon:\"e9967a\",darkseagreen:\"8fbc8f\",darkslateblue:\"483d8b\",darkslategray:\"2f4f4f\",darkslategrey:\"2f4f4f\",darkturquoise:\"00ced1\",darkviolet:\"9400d3\",deeppink:\"ff1493\",deepskyblue:\"00bfff\",dimgray:\"696969\",dimgrey:\"696969\",dodgerblue:\"1e90ff\",firebrick:\"b22222\",floralwhite:\"fffaf0\",forestgreen:\"228b22\",fuchsia:\"f0f\",gainsboro:\"dcdcdc\",ghostwhite:\"f8f8ff\",gold:\"ffd700\",goldenrod:\"daa520\",gray:\"808080\",green:\"008000\",greenyellow:\"adff2f\",grey:\"808080\",honeydew:\"f0fff0\",hotpink:\"ff69b4\",indianred:\"cd5c5c\",indigo:\"4b0082\",ivory:\"fffff0\",khaki:\"f0e68c\",lavender:\"e6e6fa\",lavenderblush:\"fff0f5\",lawngreen:\"7cfc00\",lemonchiffon:\"fffacd\",lightblue:\"add8e6\",lightcoral:\"f08080\",lightcyan:\"e0ffff\",lightgoldenrodyellow:\"fafad2\",lightgray:\"d3d3d3\",lightgreen:\"90ee90\",lightgrey:\"d3d3d3\",lightpink:\"ffb6c1\",lightsalmon:\"ffa07a\",lightseagreen:\"20b2aa\",lightskyblue:\"87cefa\",lightslategray:\"789\",lightslategrey:\"789\",lightsteelblue:\"b0c4de\",lightyellow:\"ffffe0\",lime:\"0f0\",limegreen:\"32cd32\",linen:\"faf0e6\",magenta:\"f0f\",maroon:\"800000\",mediumaquamarine:\"66cdaa\",mediumblue:\"0000cd\",mediumorchid:\"ba55d3\",mediumpurple:\"9370db\",mediumseagreen:\"3cb371\",mediumslateblue:\"7b68ee\",mediumspringgreen:\"00fa9a\",mediumturquoise:\"48d1cc\",mediumvioletred:\"c71585\",midnightblue:\"191970\",mintcream:\"f5fffa\",mistyrose:\"ffe4e1\",moccasin:\"ffe4b5\",navajowhite:\"ffdead\",navy:\"000080\",oldlace:\"fdf5e6\",olive:\"808000\",olivedrab:\"6b8e23\",orange:\"ffa500\",orangered:\"ff4500\",orchid:\"da70d6\",palegoldenrod:\"eee8aa\",palegreen:\"98fb98\",paleturquoise:\"afeeee\",palevioletred:\"db7093\",papayawhip:\"ffefd5\",peachpuff:\"ffdab9\",peru:\"cd853f\",pink:\"ffc0cb\",plum:\"dda0dd\",powderblue:\"b0e0e6\",purple:\"800080\",rebeccapurple:\"663399\",red:\"f00\",rosybrown:\"bc8f8f\",royalblue:\"4169e1\",saddlebrown:\"8b4513\",salmon:\"fa8072\",sandybrown:\"f4a460\",seagreen:\"2e8b57\",seashell:\"fff5ee\",sienna:\"a0522d\",silver:\"c0c0c0\",skyblue:\"87ceeb\",slateblue:\"6a5acd\",slategray:\"708090\",slategrey:\"708090\",snow:\"fffafa\",springgreen:\"00ff7f\",steelblue:\"4682b4\",tan:\"d2b48c\",teal:\"008080\",thistle:\"d8bfd8\",tomato:\"ff6347\",turquoise:\"40e0d0\",violet:\"ee82ee\",wheat:\"f5deb3\",white:\"fff\",whitesmoke:\"f5f5f5\",yellow:\"ff0\",yellowgreen:\"9acd32\"},E=c.hexNames=function(t){var e={};for(var r in t)t.hasOwnProperty(r)&&(e[t[r]]=r);return e}(S);function L(t){return t=parseFloat(t),(isNaN(t)||t<0||t>1)&&(t=1),t}function C(e,r){(function(t){return\"string\"==typeof t&&-1!=t.indexOf(\".\")&&1===parseFloat(t)})(e)&&(e=\"100%\");var n=function(t){return\"string\"==typeof t&&-1!=t.indexOf(\"%\")}(e);return e=o(r,s(0,parseFloat(e))),n&&(e=parseInt(e*r,10)/100),t.abs(e-r)<1e-6?1:e%r/parseFloat(r)}function P(t){return o(1,s(0,t))}function I(t){return parseInt(t,16)}function O(t){return 1==t.length?\"0\"+t:\"\"+t}function z(t){return t<=1&&(t=100*t+\"%\"),t}function D(e){return t.round(255*parseFloat(e)).toString(16)}function R(t){return I(t)/255}var F,B,N,j=(B=\"[\\\\s|\\\\(]+(\"+(F=\"(?:[-\\\\+]?\\\\d*\\\\.\\\\d+%?)|(?:[-\\\\+]?\\\\d+%?)\")+\")[,|\\\\s]+(\"+F+\")[,|\\\\s]+(\"+F+\")\\\\s*\\\\)?\",N=\"[\\\\s|\\\\(]+(\"+F+\")[,|\\\\s]+(\"+F+\")[,|\\\\s]+(\"+F+\")[,|\\\\s]+(\"+F+\")\\\\s*\\\\)?\",{CSS_UNIT:new RegExp(F),rgb:new RegExp(\"rgb\"+B),rgba:new RegExp(\"rgba\"+N),hsl:new RegExp(\"hsl\"+B),hsla:new RegExp(\"hsla\"+N),hsv:new RegExp(\"hsv\"+B),hsva:new RegExp(\"hsva\"+N),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/});function U(t){return!!j.CSS_UNIT.exec(t)}void 0!==e&&e.exports?e.exports=c:window.tinycolor=c}(Math)},{}],313:[function(t,e,r){\"use strict\";e.exports=i,e.exports.float32=e.exports.float=i,e.exports.fract32=e.exports.fract=function(t,e){if(t.length){if(t instanceof Float32Array)return new Float32Array(t.length);e instanceof Float32Array||(e=i(t));for(var r=0,n=e.length;ro&&(o=t[0]),t[1]s&&(s=t[1])}function c(t){switch(t.type){case\"GeometryCollection\":t.geometries.forEach(c);break;case\"Point\":l(t.coordinates);break;case\"MultiPoint\":t.coordinates.forEach(l)}}for(e in t.arcs.forEach((function(t){for(var e,r=-1,l=t.length;++ro&&(o=e[0]),e[1]s&&(s=e[1])})),t.objects)c(t.objects[e]);return[i,a,o,s]}function i(t,e){var r=e.id,n=e.bbox,i=null==e.properties?{}:e.properties,o=a(t,e);return null==r&&null==n?{type:\"Feature\",properties:i,geometry:o}:null==n?{type:\"Feature\",id:r,properties:i,geometry:o}:{type:\"Feature\",id:r,bbox:n,properties:i,geometry:o}}function a(t,e){var n=r(t.transform),i=t.arcs;function a(t,e){e.length&&e.pop();for(var r=i[t<0?~t:t],a=0,o=r.length;a1)n=l(t,e,r);else for(i=0,n=new Array(a=t.arcs.length);i1)for(var a,s,c=1,u=l(i[0]);cu&&(s=i[0],i[0]=i[c],i[c]=s,u=a);return i})).filter((function(t){return t.length>0}))}}function u(t,e){for(var r=0,n=t.length;r>>1;t[i]=2))throw new Error(\"n must be \\u22652\");var r,i=(l=t.bbox||n(t))[0],a=l[1],o=l[2],s=l[3];e={scale:[o-i?(o-i)/(r-1):1,s-a?(s-a)/(r-1):1],translate:[i,a]}}var l,c,u=f(e),h=t.objects,p={};function d(t){return u(t)}function g(t){var e;switch(t.type){case\"GeometryCollection\":e={type:\"GeometryCollection\",geometries:t.geometries.map(g)};break;case\"Point\":e={type:\"Point\",coordinates:d(t.coordinates)};break;case\"MultiPoint\":e={type:\"MultiPoint\",coordinates:t.coordinates.map(d)};break;default:return t}return null!=t.id&&(e.id=t.id),null!=t.bbox&&(e.bbox=t.bbox),null!=t.properties&&(e.properties=t.properties),e}for(c in h)p[c]=g(h[c]);return{type:\"Topology\",bbox:l,transform:e,objects:p,arcs:t.arcs.map((function(t){var e,r=0,n=1,i=t.length,a=new Array(i);for(a[0]=u(t[0],0);++r\":(e.length>100&&(e=e.slice(0,99)+\"\\u2026\"),e=e.replace(i,(function(t){switch(t){case\"\\n\":return\"\\\\n\";case\"\\r\":return\"\\\\r\";case\"\\u2028\":return\"\\\\u2028\";case\"\\u2029\":return\"\\\\u2029\";default:throw new Error(\"Unexpected character\")}})))}},{\"./safe-to-string\":318}],320:[function(t,e,r){\"use strict\";var n=t(\"../value/is\"),i={object:!0,function:!0,undefined:!0};e.exports=function(t){return!!n(t)&&hasOwnProperty.call(i,typeof t)}},{\"../value/is\":326}],321:[function(t,e,r){\"use strict\";var n=t(\"../lib/resolve-exception\"),i=t(\"./is\");e.exports=function(t){return i(t)?t:n(t,\"%v is not a plain function\",arguments[1])}},{\"../lib/resolve-exception\":317,\"./is\":322}],322:[function(t,e,r){\"use strict\";var n=t(\"../function/is\"),i=/^\\s*class[\\s{/}]/,a=Function.prototype.toString;e.exports=function(t){return!!n(t)&&!i.test(a.call(t))}},{\"../function/is\":316}],323:[function(t,e,r){\"use strict\";var n=t(\"../object/is\");e.exports=function(t){if(!n(t))return!1;try{return!!t.constructor&&t.constructor.prototype===t}catch(t){return!1}}},{\"../object/is\":320}],324:[function(t,e,r){\"use strict\";var n=t(\"../value/is\"),i=t(\"../object/is\"),a=Object.prototype.toString;e.exports=function(t){if(!n(t))return null;if(i(t)){var e=t.toString;if(\"function\"!=typeof e)return null;if(e===a)return null}try{return\"\"+t}catch(t){return null}}},{\"../object/is\":320,\"../value/is\":326}],325:[function(t,e,r){\"use strict\";var n=t(\"../lib/resolve-exception\"),i=t(\"./is\");e.exports=function(t){return i(t)?t:n(t,\"Cannot use %v\",arguments[1])}},{\"../lib/resolve-exception\":317,\"./is\":326}],326:[function(t,e,r){\"use strict\";e.exports=function(t){return null!=t}},{}],327:[function(t,e,r){(function(e){(function(){\"use strict\";var n=t(\"bit-twiddle\"),i=t(\"dup\"),a=t(\"buffer\").Buffer;e.__TYPEDARRAY_POOL||(e.__TYPEDARRAY_POOL={UINT8:i([32,0]),UINT16:i([32,0]),UINT32:i([32,0]),BIGUINT64:i([32,0]),INT8:i([32,0]),INT16:i([32,0]),INT32:i([32,0]),BIGINT64:i([32,0]),FLOAT:i([32,0]),DOUBLE:i([32,0]),DATA:i([32,0]),UINT8C:i([32,0]),BUFFER:i([32,0])});var o=\"undefined\"!=typeof Uint8ClampedArray,s=\"undefined\"!=typeof BigUint64Array,l=\"undefined\"!=typeof BigInt64Array,c=e.__TYPEDARRAY_POOL;c.UINT8C||(c.UINT8C=i([32,0])),c.BIGUINT64||(c.BIGUINT64=i([32,0])),c.BIGINT64||(c.BIGINT64=i([32,0])),c.BUFFER||(c.BUFFER=i([32,0]));var u=c.DATA,f=c.BUFFER;function h(t){if(t){var e=t.length||t.byteLength,r=n.log2(e);u[r].push(t)}}function p(t){t=n.nextPow2(t);var e=n.log2(t),r=u[e];return r.length>0?r.pop():new ArrayBuffer(t)}function d(t){return new Uint8Array(p(t),0,t)}function g(t){return new Uint16Array(p(2*t),0,t)}function m(t){return new Uint32Array(p(4*t),0,t)}function v(t){return new Int8Array(p(t),0,t)}function y(t){return new Int16Array(p(2*t),0,t)}function x(t){return new Int32Array(p(4*t),0,t)}function b(t){return new Float32Array(p(4*t),0,t)}function _(t){return new Float64Array(p(8*t),0,t)}function w(t){return o?new Uint8ClampedArray(p(t),0,t):d(t)}function T(t){return s?new BigUint64Array(p(8*t),0,t):null}function k(t){return l?new BigInt64Array(p(8*t),0,t):null}function A(t){return new DataView(p(t),0,t)}function M(t){t=n.nextPow2(t);var e=n.log2(t),r=f[e];return r.length>0?r.pop():new a(t)}r.free=function(t){if(a.isBuffer(t))f[n.log2(t.length)].push(t);else{if(\"[object ArrayBuffer]\"!==Object.prototype.toString.call(t)&&(t=t.buffer),!t)return;var e=t.length||t.byteLength,r=0|n.log2(e);u[r].push(t)}},r.freeUint8=r.freeUint16=r.freeUint32=r.freeBigUint64=r.freeInt8=r.freeInt16=r.freeInt32=r.freeBigInt64=r.freeFloat32=r.freeFloat=r.freeFloat64=r.freeDouble=r.freeUint8Clamped=r.freeDataView=function(t){h(t.buffer)},r.freeArrayBuffer=h,r.freeBuffer=function(t){f[n.log2(t.length)].push(t)},r.malloc=function(t,e){if(void 0===e||\"arraybuffer\"===e)return p(t);switch(e){case\"uint8\":return d(t);case\"uint16\":return g(t);case\"uint32\":return m(t);case\"int8\":return v(t);case\"int16\":return y(t);case\"int32\":return x(t);case\"float\":case\"float32\":return b(t);case\"double\":case\"float64\":return _(t);case\"uint8_clamped\":return w(t);case\"bigint64\":return k(t);case\"biguint64\":return T(t);case\"buffer\":return M(t);case\"data\":case\"dataview\":return A(t);default:return null}return null},r.mallocArrayBuffer=p,r.mallocUint8=d,r.mallocUint16=g,r.mallocUint32=m,r.mallocInt8=v,r.mallocInt16=y,r.mallocInt32=x,r.mallocFloat32=r.mallocFloat=b,r.mallocFloat64=r.mallocDouble=_,r.mallocUint8Clamped=w,r.mallocBigUint64=T,r.mallocBigInt64=k,r.mallocDataView=A,r.mallocBuffer=M,r.clearCache=function(){for(var t=0;t<32;++t)c.UINT8[t].length=0,c.UINT16[t].length=0,c.UINT32[t].length=0,c.INT8[t].length=0,c.INT16[t].length=0,c.INT32[t].length=0,c.FLOAT[t].length=0,c.DOUBLE[t].length=0,c.BIGUINT64[t].length=0,c.BIGINT64[t].length=0,c.UINT8C[t].length=0,u[t].length=0,f[t].length=0}}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"bit-twiddle\":81,buffer:85,dup:128}],328:[function(t,e,r){var n=/[\\'\\\"]/;e.exports=function(t){return t?(n.test(t.charAt(0))&&(t=t.substr(1)),n.test(t.charAt(t.length-1))&&(t=t.substr(0,t.length-1)),t):\"\"}},{}],329:[function(t,e,r){\"use strict\";e.exports=function(t,e,r){Array.isArray(r)||(r=[].slice.call(arguments,2));for(var n=0,i=r.length;n2111)throw e.replace(/\\{0\\}/,this.local.name);return t},toMonthIndex:function(t,e,r){var i=this.intercalaryMonth(t);if(r&&e!==i||e<1||e>12)throw n.local.invalidMonth.replace(/\\{0\\}/,this.local.name);return i?!r&&e<=i?e-1:e:e-1},toChineseMonth:function(t,e){t.year&&(e=(t=t.year()).month());var r=this.intercalaryMonth(t);if(e<0||e>(r?12:11))throw n.local.invalidMonth.replace(/\\{0\\}/,this.local.name);return r?e>13},isIntercalaryMonth:function(t,e){t.year&&(e=(t=t.year()).month());var r=this.intercalaryMonth(t);return!!r&&r===e},leapYear:function(t){return 0!==this.intercalaryMonth(t)},weekOfYear:function(t,e,r){var i,o=this._validateYear(t,n.local.invalidyear),s=h[o-h[0]],l=s>>9&4095,c=s>>5&15,u=31&s;(i=a.newDate(l,c,u)).add(4-(i.dayOfWeek()||7),\"d\");var f=this.toJD(t,e,r)-i.toJD();return 1+Math.floor(f/7)},monthsInYear:function(t){return this.leapYear(t)?13:12},daysInMonth:function(t,e){t.year&&(e=t.month(),t=t.year()),t=this._validateYear(t);var r=f[t-f[0]];if(e>(r>>13?12:11))throw n.local.invalidMonth.replace(/\\{0\\}/,this.local.name);return r&1<<12-e?30:29},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,s,r,n.local.invalidDate);t=this._validateYear(i.year()),e=i.month(),r=i.day();var o=this.isIntercalaryMonth(t,e),s=this.toChineseMonth(t,e),l=function(t,e,r,n,i){var a,o,s;if(\"object\"==typeof t)o=t,a=e||{};else{var l;if(!(\"number\"==typeof t&&t>=1888&&t<=2111))throw new Error(\"Lunar year outside range 1888-2111\");if(!(\"number\"==typeof e&&e>=1&&e<=12))throw new Error(\"Lunar month outside range 1 - 12\");if(!(\"number\"==typeof r&&r>=1&&r<=30))throw new Error(\"Lunar day outside range 1 - 30\");\"object\"==typeof n?(l=!1,a=n):(l=!!n,a=i||{}),o={year:t,month:e,day:r,isIntercalary:l}}s=o.day-1;var c,u=f[o.year-f[0]],p=u>>13;c=p&&(o.month>p||o.isIntercalary)?o.month:o.month-1;for(var d=0;d>9&4095,(g>>5&15)-1,(31&g)+s);return a.year=m.getFullYear(),a.month=1+m.getMonth(),a.day=m.getDate(),a}(t,s,r,o);return a.toJD(l.year,l.month,l.day)},fromJD:function(t){var e=a.fromJD(t),r=function(t,e,r,n){var i,a;if(\"object\"==typeof t)i=t,a=e||{};else{if(!(\"number\"==typeof t&&t>=1888&&t<=2111))throw new Error(\"Solar year outside range 1888-2111\");if(!(\"number\"==typeof e&&e>=1&&e<=12))throw new Error(\"Solar month outside range 1 - 12\");if(!(\"number\"==typeof r&&r>=1&&r<=31))throw new Error(\"Solar day outside range 1 - 31\");i={year:t,month:e,day:r},a=n||{}}var o=h[i.year-h[0]],s=i.year<<9|i.month<<5|i.day;a.year=s>=o?i.year:i.year-1,o=h[a.year-h[0]];var l,c=new Date(o>>9&4095,(o>>5&15)-1,31&o),u=new Date(i.year,i.month-1,i.day);l=Math.round((u-c)/864e5);var p,d=f[a.year-f[0]];for(p=0;p<13;p++){var g=d&1<<12-p?30:29;if(l>13;!m||p=2&&n<=6},extraInfo:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return{century:o[Math.floor((i.year()-1)/100)+1]||\"\"}},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return t=i.year()+(i.year()<0?1:0),e=i.month(),(r=i.day())+(e>1?16:0)+(e>2?32*(e-2):0)+400*(t-1)+this.jdEpoch-1},fromJD:function(t){t=Math.floor(t+.5)-Math.floor(this.jdEpoch)-1;var e=Math.floor(t/400)+1;t-=400*(e-1),t+=t>15?16:0;var r=Math.floor(t/32)+1,n=t-32*(r-1)+1;return this.newDate(e<=0?e-1:e,r,n)}});var o={20:\"Fruitbat\",21:\"Anchovy\"};n.calendars.discworld=a},{\"../main\":346,\"object-assign\":247}],335:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Ethiopian\",jdEpoch:1724220.5,daysPerMonth:[30,30,30,30,30,30,30,30,30,30,30,30,5],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Ethiopian\",epochs:[\"BEE\",\"EE\"],monthNames:[\"Meskerem\",\"Tikemet\",\"Hidar\",\"Tahesas\",\"Tir\",\"Yekatit\",\"Megabit\",\"Miazia\",\"Genbot\",\"Sene\",\"Hamle\",\"Nehase\",\"Pagume\"],monthNamesShort:[\"Mes\",\"Tik\",\"Hid\",\"Tah\",\"Tir\",\"Yek\",\"Meg\",\"Mia\",\"Gen\",\"Sen\",\"Ham\",\"Neh\",\"Pag\"],dayNames:[\"Ehud\",\"Segno\",\"Maksegno\",\"Irob\",\"Hamus\",\"Arb\",\"Kidame\"],dayNamesShort:[\"Ehu\",\"Seg\",\"Mak\",\"Iro\",\"Ham\",\"Arb\",\"Kid\"],dayNamesMin:[\"Eh\",\"Se\",\"Ma\",\"Ir\",\"Ha\",\"Ar\",\"Ki\"],digits:null,dateFormat:\"dd/mm/yyyy\",firstDay:0,isRTL:!1}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return(t=e.year()+(e.year()<0?1:0))%4==3||t%4==-1},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear||n.regionalOptions[\"\"].invalidYear),13},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(13===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return(t=i.year())<0&&t++,i.day()+30*(i.month()-1)+365*(t-1)+Math.floor(t/4)+this.jdEpoch-1},fromJD:function(t){var e=Math.floor(t)+.5-this.jdEpoch,r=Math.floor((e-Math.floor((e+366)/1461))/365)+1;r<=0&&r--,e=Math.floor(t)+.5-this.newDate(r,1,1).toJD();var n=Math.floor(e/30)+1,i=e-30*(n-1)+1;return this.newDate(r,n,i)}}),n.calendars.ethiopian=a},{\"../main\":346,\"object-assign\":247}],336:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}function o(t,e){return t-e*Math.floor(t/e)}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Hebrew\",jdEpoch:347995.5,daysPerMonth:[30,29,30,29,30,29,30,29,30,29,30,29,29],hasYearZero:!1,minMonth:1,firstMonth:7,minDay:1,regionalOptions:{\"\":{name:\"Hebrew\",epochs:[\"BAM\",\"AM\"],monthNames:[\"Nisan\",\"Iyar\",\"Sivan\",\"Tammuz\",\"Av\",\"Elul\",\"Tishrei\",\"Cheshvan\",\"Kislev\",\"Tevet\",\"Shevat\",\"Adar\",\"Adar II\"],monthNamesShort:[\"Nis\",\"Iya\",\"Siv\",\"Tam\",\"Av\",\"Elu\",\"Tis\",\"Che\",\"Kis\",\"Tev\",\"She\",\"Ada\",\"Ad2\"],dayNames:[\"Yom Rishon\",\"Yom Sheni\",\"Yom Shlishi\",\"Yom Revi'i\",\"Yom Chamishi\",\"Yom Shishi\",\"Yom Shabbat\"],dayNamesShort:[\"Ris\",\"She\",\"Shl\",\"Rev\",\"Cha\",\"Shi\",\"Sha\"],dayNamesMin:[\"Ri\",\"She\",\"Shl\",\"Re\",\"Ch\",\"Shi\",\"Sha\"],digits:null,dateFormat:\"dd/mm/yyyy\",firstDay:0,isRTL:!1}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return this._leapYear(e.year())},_leapYear:function(t){return o(7*(t=t<0?t+1:t)+1,19)<7},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear),this._leapYear(t.year?t.year():t)?13:12},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(t){return t=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear).year(),this.toJD(-1===t?1:t+1,7,1)-this.toJD(t,7,1)},daysInMonth:function(t,e){return t.year&&(e=t.month(),t=t.year()),this._validate(t,e,this.minDay,n.local.invalidMonth),12===e&&this.leapYear(t)||8===e&&5===o(this.daysInYear(t),10)?30:9===e&&3===o(this.daysInYear(t),10)?29:this.daysPerMonth[e-1]},weekDay:function(t,e,r){return 6!==this.dayOfWeek(t,e,r)},extraInfo:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return{yearType:(this.leapYear(i)?\"embolismic\":\"common\")+\" \"+[\"deficient\",\"regular\",\"complete\"][this.daysInYear(i)%10-3]}},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=i.year(),e=i.month(),r=i.day();var a=t<=0?t+1:t,o=this.jdEpoch+this._delay1(a)+this._delay2(a)+r+1;if(e<7){for(var s=7;s<=this.monthsInYear(t);s++)o+=this.daysInMonth(t,s);for(s=1;s=this.toJD(-1===e?1:e+1,7,1);)e++;for(var r=tthis.toJD(e,r,this.daysInMonth(e,r));)r++;var n=t-this.toJD(e,r,1)+1;return this.newDate(e,r,n)}}),n.calendars.hebrew=a},{\"../main\":346,\"object-assign\":247}],337:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Islamic\",jdEpoch:1948439.5,daysPerMonth:[30,29,30,29,30,29,30,29,30,29,30,29],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Islamic\",epochs:[\"BH\",\"AH\"],monthNames:[\"Muharram\",\"Safar\",\"Rabi' al-awwal\",\"Rabi' al-thani\",\"Jumada al-awwal\",\"Jumada al-thani\",\"Rajab\",\"Sha'aban\",\"Ramadan\",\"Shawwal\",\"Dhu al-Qi'dah\",\"Dhu al-Hijjah\"],monthNamesShort:[\"Muh\",\"Saf\",\"Rab1\",\"Rab2\",\"Jum1\",\"Jum2\",\"Raj\",\"Sha'\",\"Ram\",\"Shaw\",\"DhuQ\",\"DhuH\"],dayNames:[\"Yawm al-ahad\",\"Yawm al-ithnayn\",\"Yawm ath-thulaathaa'\",\"Yawm al-arbi'aa'\",\"Yawm al-kham\\u012bs\",\"Yawm al-jum'a\",\"Yawm as-sabt\"],dayNamesShort:[\"Aha\",\"Ith\",\"Thu\",\"Arb\",\"Kha\",\"Jum\",\"Sab\"],dayNamesMin:[\"Ah\",\"It\",\"Th\",\"Ar\",\"Kh\",\"Ju\",\"Sa\"],digits:null,dateFormat:\"yyyy/mm/dd\",firstDay:6,isRTL:!1}},leapYear:function(t){return(11*this._validate(t,this.minMonth,this.minDay,n.local.invalidYear).year()+14)%30<11},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(t){return this.leapYear(t)?355:354},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(12===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return 5!==this.dayOfWeek(t,e,r)},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return t=i.year(),e=i.month(),t=t<=0?t+1:t,(r=i.day())+Math.ceil(29.5*(e-1))+354*(t-1)+Math.floor((3+11*t)/30)+this.jdEpoch-1},fromJD:function(t){t=Math.floor(t)+.5;var e=Math.floor((30*(t-this.jdEpoch)+10646)/10631);e=e<=0?e-1:e;var r=Math.min(12,Math.ceil((t-29-this.toJD(e,1,1))/29.5)+1),n=t-this.toJD(e,r,1)+1;return this.newDate(e,r,n)}}),n.calendars.islamic=a},{\"../main\":346,\"object-assign\":247}],338:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Julian\",jdEpoch:1721423.5,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Julian\",epochs:[\"BC\",\"AD\"],monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],dayNamesShort:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],dayNamesMin:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],digits:null,dateFormat:\"mm/dd/yyyy\",firstDay:0,isRTL:!1}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return(t=e.year()<0?e.year()+1:e.year())%4==0},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(4-(n.dayOfWeek()||7),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(2===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return t=i.year(),e=i.month(),r=i.day(),t<0&&t++,e<=2&&(t--,e+=12),Math.floor(365.25*(t+4716))+Math.floor(30.6001*(e+1))+r-1524.5},fromJD:function(t){var e=Math.floor(t+.5)+1524,r=Math.floor((e-122.1)/365.25),n=Math.floor(365.25*r),i=Math.floor((e-n)/30.6001),a=i-Math.floor(i<14?1:13),o=r-Math.floor(a>2?4716:4715),s=e-n-Math.floor(30.6001*i);return o<=0&&o--,this.newDate(o,a,s)}}),n.calendars.julian=a},{\"../main\":346,\"object-assign\":247}],339:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}function o(t,e){return t-e*Math.floor(t/e)}function s(t,e){return o(t-1,e)+1}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Mayan\",jdEpoch:584282.5,hasYearZero:!0,minMonth:0,firstMonth:0,minDay:0,regionalOptions:{\"\":{name:\"Mayan\",epochs:[\"\",\"\"],monthNames:[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\"],monthNamesShort:[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\"],dayNames:[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\"],dayNamesShort:[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\"],dayNamesMin:[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\"],digits:null,dateFormat:\"YYYY.m.d\",firstDay:0,isRTL:!1,haabMonths:[\"Pop\",\"Uo\",\"Zip\",\"Zotz\",\"Tzec\",\"Xul\",\"Yaxkin\",\"Mol\",\"Chen\",\"Yax\",\"Zac\",\"Ceh\",\"Mac\",\"Kankin\",\"Muan\",\"Pax\",\"Kayab\",\"Cumku\",\"Uayeb\"],tzolkinMonths:[\"Imix\",\"Ik\",\"Akbal\",\"Kan\",\"Chicchan\",\"Cimi\",\"Manik\",\"Lamat\",\"Muluc\",\"Oc\",\"Chuen\",\"Eb\",\"Ben\",\"Ix\",\"Men\",\"Cib\",\"Caban\",\"Etznab\",\"Cauac\",\"Ahau\"]}},leapYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear),!1},formatYear:function(t){t=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear).year();var e=Math.floor(t/400);return t%=400,t+=t<0?400:0,e+\".\"+Math.floor(t/20)+\".\"+t%20},forYear:function(t){if((t=t.split(\".\")).length<3)throw\"Invalid Mayan year\";for(var e=0,r=0;r19||r>0&&n<0)throw\"Invalid Mayan year\";e=20*e+n}return e},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear),18},weekOfYear:function(t,e,r){return this._validate(t,e,r,n.local.invalidDate),0},daysInYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear),360},daysInMonth:function(t,e){return this._validate(t,e,this.minDay,n.local.invalidMonth),20},daysInWeek:function(){return 5},dayOfWeek:function(t,e,r){return this._validate(t,e,r,n.local.invalidDate).day()},weekDay:function(t,e,r){return this._validate(t,e,r,n.local.invalidDate),!0},extraInfo:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate).toJD(),a=this._toHaab(i),o=this._toTzolkin(i);return{haabMonthName:this.local.haabMonths[a[0]-1],haabMonth:a[0],haabDay:a[1],tzolkinDayName:this.local.tzolkinMonths[o[0]-1],tzolkinDay:o[0],tzolkinTrecena:o[1]}},_toHaab:function(t){var e=o((t-=this.jdEpoch)+8+340,365);return[Math.floor(e/20)+1,o(e,20)]},_toTzolkin:function(t){return[s((t-=this.jdEpoch)+20,20),s(t+4,13)]},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return i.day()+20*i.month()+360*i.year()+this.jdEpoch},fromJD:function(t){t=Math.floor(t)+.5-this.jdEpoch;var e=Math.floor(t/360);t%=360,t+=t<0?360:0;var r=Math.floor(t/20),n=t%20;return this.newDate(e,r,n)}}),n.calendars.mayan=a},{\"../main\":346,\"object-assign\":247}],340:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar;var o=n.instance(\"gregorian\");i(a.prototype,{name:\"Nanakshahi\",jdEpoch:2257673.5,daysPerMonth:[31,31,31,31,31,30,30,30,30,30,30,30],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Nanakshahi\",epochs:[\"BN\",\"AN\"],monthNames:[\"Chet\",\"Vaisakh\",\"Jeth\",\"Harh\",\"Sawan\",\"Bhadon\",\"Assu\",\"Katak\",\"Maghar\",\"Poh\",\"Magh\",\"Phagun\"],monthNamesShort:[\"Che\",\"Vai\",\"Jet\",\"Har\",\"Saw\",\"Bha\",\"Ass\",\"Kat\",\"Mgr\",\"Poh\",\"Mgh\",\"Pha\"],dayNames:[\"Somvaar\",\"Mangalvar\",\"Budhvaar\",\"Veervaar\",\"Shukarvaar\",\"Sanicharvaar\",\"Etvaar\"],dayNamesShort:[\"Som\",\"Mangal\",\"Budh\",\"Veer\",\"Shukar\",\"Sanichar\",\"Et\"],dayNamesMin:[\"So\",\"Ma\",\"Bu\",\"Ve\",\"Sh\",\"Sa\",\"Et\"],digits:null,dateFormat:\"dd-mm-yyyy\",firstDay:0,isRTL:!1}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear||n.regionalOptions[\"\"].invalidYear);return o.leapYear(e.year()+(e.year()<1?1:0)+1469)},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(1-(n.dayOfWeek()||7),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(12===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidMonth);(t=i.year())<0&&t++;for(var a=i.day(),s=1;s=this.toJD(e+1,1,1);)e++;for(var r=t-Math.floor(this.toJD(e,1,1)+.5)+1,n=1;r>this.daysInMonth(e,n);)r-=this.daysInMonth(e,n),n++;return this.newDate(e,n,r)}}),n.calendars.nanakshahi=a},{\"../main\":346,\"object-assign\":247}],341:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Nepali\",jdEpoch:1700709.5,daysPerMonth:[31,31,32,32,31,30,30,29,30,29,30,30],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,daysPerYear:365,regionalOptions:{\"\":{name:\"Nepali\",epochs:[\"BBS\",\"ABS\"],monthNames:[\"Baisakh\",\"Jestha\",\"Ashadh\",\"Shrawan\",\"Bhadra\",\"Ashwin\",\"Kartik\",\"Mangsir\",\"Paush\",\"Mangh\",\"Falgun\",\"Chaitra\"],monthNamesShort:[\"Bai\",\"Je\",\"As\",\"Shra\",\"Bha\",\"Ash\",\"Kar\",\"Mang\",\"Pau\",\"Ma\",\"Fal\",\"Chai\"],dayNames:[\"Aaitabaar\",\"Sombaar\",\"Manglbaar\",\"Budhabaar\",\"Bihibaar\",\"Shukrabaar\",\"Shanibaar\"],dayNamesShort:[\"Aaita\",\"Som\",\"Mangl\",\"Budha\",\"Bihi\",\"Shukra\",\"Shani\"],dayNamesMin:[\"Aai\",\"So\",\"Man\",\"Bu\",\"Bi\",\"Shu\",\"Sha\"],digits:null,dateFormat:\"dd/mm/yyyy\",firstDay:1,isRTL:!1}},leapYear:function(t){return this.daysInYear(t)!==this.daysPerYear},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(t){if(t=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear).year(),void 0===this.NEPALI_CALENDAR_DATA[t])return this.daysPerYear;for(var e=0,r=this.minMonth;r<=12;r++)e+=this.NEPALI_CALENDAR_DATA[t][r];return e},daysInMonth:function(t,e){return t.year&&(e=t.month(),t=t.year()),this._validate(t,e,this.minDay,n.local.invalidMonth),void 0===this.NEPALI_CALENDAR_DATA[t]?this.daysPerMonth[e-1]:this.NEPALI_CALENDAR_DATA[t][e]},weekDay:function(t,e,r){return 6!==this.dayOfWeek(t,e,r)},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=i.year(),e=i.month(),r=i.day();var a=n.instance(),o=0,s=e,l=t;this._createMissingCalendarData(t);var c=t-(s>9||9===s&&r>=this.NEPALI_CALENDAR_DATA[l][0]?56:57);for(9!==e&&(o=r,s--);9!==s;)s<=0&&(s=12,l--),o+=this.NEPALI_CALENDAR_DATA[l][s],s--;return 9===e?(o+=r-this.NEPALI_CALENDAR_DATA[l][0])<0&&(o+=a.daysInYear(c)):o+=this.NEPALI_CALENDAR_DATA[l][9]-this.NEPALI_CALENDAR_DATA[l][0],a.newDate(c,1,1).add(o,\"d\").toJD()},fromJD:function(t){var e=n.instance().fromJD(t),r=e.year(),i=e.dayOfYear(),a=r+56;this._createMissingCalendarData(a);for(var o=9,s=this.NEPALI_CALENDAR_DATA[a][0],l=this.NEPALI_CALENDAR_DATA[a][o]-s+1;i>l;)++o>12&&(o=1,a++),l+=this.NEPALI_CALENDAR_DATA[a][o];var c=this.NEPALI_CALENDAR_DATA[a][o]-(l-i);return this.newDate(a,o,c)},_createMissingCalendarData:function(t){var e=this.daysPerMonth.slice(0);e.unshift(17);for(var r=t-1;r0?474:473))%2820+474+38)%2816<682},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-(n.dayOfWeek()+1)%7,\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(12===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return 5!==this.dayOfWeek(t,e,r)},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=i.year(),e=i.month(),r=i.day();var a=t-(t>=0?474:473),s=474+o(a,2820);return r+(e<=7?31*(e-1):30*(e-1)+6)+Math.floor((682*s-110)/2816)+365*(s-1)+1029983*Math.floor(a/2820)+this.jdEpoch-1},fromJD:function(t){var e=(t=Math.floor(t)+.5)-this.toJD(475,1,1),r=Math.floor(e/1029983),n=o(e,1029983),i=2820;if(1029982!==n){var a=Math.floor(n/366),s=o(n,366);i=Math.floor((2134*a+2816*s+2815)/1028522)+a+1}var l=i+2820*r+474;l=l<=0?l-1:l;var c=t-this.toJD(l,1,1)+1,u=c<=186?Math.ceil(c/31):Math.ceil((c-6)/30),f=t-this.toJD(l,u,1)+1;return this.newDate(l,u,f)}}),n.calendars.persian=a,n.calendars.jalali=a},{\"../main\":346,\"object-assign\":247}],343:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\"),a=n.instance();function o(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}o.prototype=new n.baseCalendar,i(o.prototype,{name:\"Taiwan\",jdEpoch:2419402.5,yearsOffset:1911,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Taiwan\",epochs:[\"BROC\",\"ROC\"],monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],dayNamesShort:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],dayNamesMin:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],digits:null,dateFormat:\"yyyy/mm/dd\",firstDay:1,isRTL:!1}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);t=this._t2gYear(e.year());return a.leapYear(t)},weekOfYear:function(t,e,r){var i=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);t=this._t2gYear(i.year());return a.weekOfYear(t,i.month(),i.day())},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(2===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=this._t2gYear(i.year());return a.toJD(t,i.month(),i.day())},fromJD:function(t){var e=a.fromJD(t),r=this._g2tYear(e.year());return this.newDate(r,e.month(),e.day())},_t2gYear:function(t){return t+this.yearsOffset+(t>=-this.yearsOffset&&t<=-1?1:0)},_g2tYear:function(t){return t-this.yearsOffset-(t>=1&&t<=this.yearsOffset?1:0)}}),n.calendars.taiwan=o},{\"../main\":346,\"object-assign\":247}],344:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\"),a=n.instance();function o(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}o.prototype=new n.baseCalendar,i(o.prototype,{name:\"Thai\",jdEpoch:1523098.5,yearsOffset:543,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Thai\",epochs:[\"BBE\",\"BE\"],monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],dayNamesShort:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],dayNamesMin:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],digits:null,dateFormat:\"dd/mm/yyyy\",firstDay:0,isRTL:!1}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);t=this._t2gYear(e.year());return a.leapYear(t)},weekOfYear:function(t,e,r){var i=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);t=this._t2gYear(i.year());return a.weekOfYear(t,i.month(),i.day())},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(2===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=this._t2gYear(i.year());return a.toJD(t,i.month(),i.day())},fromJD:function(t){var e=a.fromJD(t),r=this._g2tYear(e.year());return this.newDate(r,e.month(),e.day())},_t2gYear:function(t){return t-this.yearsOffset-(t>=1&&t<=this.yearsOffset?1:0)},_g2tYear:function(t){return t+this.yearsOffset+(t>=-this.yearsOffset&&t<=-1?1:0)}}),n.calendars.thai=o},{\"../main\":346,\"object-assign\":247}],345:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"UmmAlQura\",hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Umm al-Qura\",epochs:[\"BH\",\"AH\"],monthNames:[\"Al-Muharram\",\"Safar\",\"Rabi' al-awwal\",\"Rabi' Al-Thani\",\"Jumada Al-Awwal\",\"Jumada Al-Thani\",\"Rajab\",\"Sha'aban\",\"Ramadan\",\"Shawwal\",\"Dhu al-Qi'dah\",\"Dhu al-Hijjah\"],monthNamesShort:[\"Muh\",\"Saf\",\"Rab1\",\"Rab2\",\"Jum1\",\"Jum2\",\"Raj\",\"Sha'\",\"Ram\",\"Shaw\",\"DhuQ\",\"DhuH\"],dayNames:[\"Yawm al-Ahad\",\"Yawm al-Ithnain\",\"Yawm al-Thal\\u0101th\\u0101\\u2019\",\"Yawm al-Arba\\u2018\\u0101\\u2019\",\"Yawm al-Kham\\u012bs\",\"Yawm al-Jum\\u2018a\",\"Yawm al-Sabt\"],dayNamesMin:[\"Ah\",\"Ith\",\"Th\",\"Ar\",\"Kh\",\"Ju\",\"Sa\"],digits:null,dateFormat:\"yyyy/mm/dd\",firstDay:6,isRTL:!0}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return 355===this.daysInYear(e.year())},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(t){for(var e=0,r=1;r<=12;r++)e+=this.daysInMonth(t,r);return e},daysInMonth:function(t,e){for(var r=this._validate(t,e,this.minDay,n.local.invalidMonth).toJD()-24e5+.5,i=0,a=0;ar)return o[i]-o[i-1];i++}return 30},weekDay:function(t,e,r){return 5!==this.dayOfWeek(t,e,r)},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate),a=12*(i.year()-1)+i.month()-15292;return i.day()+o[a-1]-1+24e5-.5},fromJD:function(t){for(var e=t-24e5+.5,r=0,n=0;ne);n++)r++;var i=r+15292,a=Math.floor((i-1)/12),s=a+1,l=i-12*a,c=e-o[r-1]+1;return this.newDate(s,l,c)},isValid:function(t,e,r){var i=n.baseCalendar.prototype.isValid.apply(this,arguments);return i&&(i=(t=null!=t.year?t.year:t)>=1276&&t<=1500),i},_validate:function(t,e,r,i){var a=n.baseCalendar.prototype._validate.apply(this,arguments);if(a.year<1276||a.year>1500)throw i.replace(/\\{0\\}/,this.local.name);return a}}),n.calendars.ummalqura=a;var o=[20,50,79,109,138,168,197,227,256,286,315,345,374,404,433,463,492,522,551,581,611,641,670,700,729,759,788,818,847,877,906,936,965,995,1024,1054,1083,1113,1142,1172,1201,1231,1260,1290,1320,1350,1379,1409,1438,1468,1497,1527,1556,1586,1615,1645,1674,1704,1733,1763,1792,1822,1851,1881,1910,1940,1969,1999,2028,2058,2087,2117,2146,2176,2205,2235,2264,2294,2323,2353,2383,2413,2442,2472,2501,2531,2560,2590,2619,2649,2678,2708,2737,2767,2796,2826,2855,2885,2914,2944,2973,3003,3032,3062,3091,3121,3150,3180,3209,3239,3268,3298,3327,3357,3386,3416,3446,3476,3505,3535,3564,3594,3623,3653,3682,3712,3741,3771,3800,3830,3859,3889,3918,3948,3977,4007,4036,4066,4095,4125,4155,4185,4214,4244,4273,4303,4332,4362,4391,4421,4450,4480,4509,4539,4568,4598,4627,4657,4686,4716,4745,4775,4804,4834,4863,4893,4922,4952,4981,5011,5040,5070,5099,5129,5158,5188,5218,5248,5277,5307,5336,5366,5395,5425,5454,5484,5513,5543,5572,5602,5631,5661,5690,5720,5749,5779,5808,5838,5867,5897,5926,5956,5985,6015,6044,6074,6103,6133,6162,6192,6221,6251,6281,6311,6340,6370,6399,6429,6458,6488,6517,6547,6576,6606,6635,6665,6694,6724,6753,6783,6812,6842,6871,6901,6930,6960,6989,7019,7048,7078,7107,7137,7166,7196,7225,7255,7284,7314,7344,7374,7403,7433,7462,7492,7521,7551,7580,7610,7639,7669,7698,7728,7757,7787,7816,7846,7875,7905,7934,7964,7993,8023,8053,8083,8112,8142,8171,8201,8230,8260,8289,8319,8348,8378,8407,8437,8466,8496,8525,8555,8584,8614,8643,8673,8702,8732,8761,8791,8821,8850,8880,8909,8938,8968,8997,9027,9056,9086,9115,9145,9175,9205,9234,9264,9293,9322,9352,9381,9410,9440,9470,9499,9529,9559,9589,9618,9648,9677,9706,9736,9765,9794,9824,9853,9883,9913,9943,9972,10002,10032,10061,10090,10120,10149,10178,10208,10237,10267,10297,10326,10356,10386,10415,10445,10474,10504,10533,10562,10592,10621,10651,10680,10710,10740,10770,10799,10829,10858,10888,10917,10947,10976,11005,11035,11064,11094,11124,11153,11183,11213,11242,11272,11301,11331,11360,11389,11419,11448,11478,11507,11537,11567,11596,11626,11655,11685,11715,11744,11774,11803,11832,11862,11891,11921,11950,11980,12010,12039,12069,12099,12128,12158,12187,12216,12246,12275,12304,12334,12364,12393,12423,12453,12483,12512,12542,12571,12600,12630,12659,12688,12718,12747,12777,12807,12837,12866,12896,12926,12955,12984,13014,13043,13072,13102,13131,13161,13191,13220,13250,13280,13310,13339,13368,13398,13427,13456,13486,13515,13545,13574,13604,13634,13664,13693,13723,13752,13782,13811,13840,13870,13899,13929,13958,13988,14018,14047,14077,14107,14136,14166,14195,14224,14254,14283,14313,14342,14372,14401,14431,14461,14490,14520,14550,14579,14609,14638,14667,14697,14726,14756,14785,14815,14844,14874,14904,14933,14963,14993,15021,15051,15081,15110,15140,15169,15199,15228,15258,15287,15317,15347,15377,15406,15436,15465,15494,15524,15553,15582,15612,15641,15671,15701,15731,15760,15790,15820,15849,15878,15908,15937,15966,15996,16025,16055,16085,16114,16144,16174,16204,16233,16262,16292,16321,16350,16380,16409,16439,16468,16498,16528,16558,16587,16617,16646,16676,16705,16734,16764,16793,16823,16852,16882,16912,16941,16971,17001,17030,17060,17089,17118,17148,17177,17207,17236,17266,17295,17325,17355,17384,17414,17444,17473,17502,17532,17561,17591,17620,17650,17679,17709,17738,17768,17798,17827,17857,17886,17916,17945,17975,18004,18034,18063,18093,18122,18152,18181,18211,18241,18270,18300,18330,18359,18388,18418,18447,18476,18506,18535,18565,18595,18625,18654,18684,18714,18743,18772,18802,18831,18860,18890,18919,18949,18979,19008,19038,19068,19098,19127,19156,19186,19215,19244,19274,19303,19333,19362,19392,19422,19452,19481,19511,19540,19570,19599,19628,19658,19687,19717,19746,19776,19806,19836,19865,19895,19924,19954,19983,20012,20042,20071,20101,20130,20160,20190,20219,20249,20279,20308,20338,20367,20396,20426,20455,20485,20514,20544,20573,20603,20633,20662,20692,20721,20751,20780,20810,20839,20869,20898,20928,20957,20987,21016,21046,21076,21105,21135,21164,21194,21223,21253,21282,21312,21341,21371,21400,21430,21459,21489,21519,21548,21578,21607,21637,21666,21696,21725,21754,21784,21813,21843,21873,21902,21932,21962,21991,22021,22050,22080,22109,22138,22168,22197,22227,22256,22286,22316,22346,22375,22405,22434,22464,22493,22522,22552,22581,22611,22640,22670,22700,22730,22759,22789,22818,22848,22877,22906,22936,22965,22994,23024,23054,23083,23113,23143,23173,23202,23232,23261,23290,23320,23349,23379,23408,23438,23467,23497,23527,23556,23586,23616,23645,23674,23704,23733,23763,23792,23822,23851,23881,23910,23940,23970,23999,24029,24058,24088,24117,24147,24176,24206,24235,24265,24294,24324,24353,24383,24413,24442,24472,24501,24531,24560,24590,24619,24648,24678,24707,24737,24767,24796,24826,24856,24885,24915,24944,24974,25003,25032,25062,25091,25121,25150,25180,25210,25240,25269,25299,25328,25358,25387,25416,25446,25475,25505,25534,25564,25594,25624,25653,25683,25712,25742,25771,25800,25830,25859,25888,25918,25948,25977,26007,26037,26067,26096,26126,26155,26184,26214,26243,26272,26302,26332,26361,26391,26421,26451,26480,26510,26539,26568,26598,26627,26656,26686,26715,26745,26775,26805,26834,26864,26893,26923,26952,26982,27011,27041,27070,27099,27129,27159,27188,27218,27248,27277,27307,27336,27366,27395,27425,27454,27484,27513,27542,27572,27602,27631,27661,27691,27720,27750,27779,27809,27838,27868,27897,27926,27956,27985,28015,28045,28074,28104,28134,28163,28193,28222,28252,28281,28310,28340,28369,28399,28428,28458,28488,28517,28547,28577,28607,28636,28665,28695,28724,28754,28783,28813,28843,28872,28901,28931,28960,28990,29019,29049,29078,29108,29137,29167,29196,29226,29255,29285,29315,29345,29375,29404,29434,29463,29492,29522,29551,29580,29610,29640,29669,29699,29729,29759,29788,29818,29847,29876,29906,29935,29964,29994,30023,30053,30082,30112,30141,30171,30200,30230,30259,30289,30318,30348,30378,30408,30437,30467,30496,30526,30555,30585,30614,30644,30673,30703,30732,30762,30791,30821,30850,30880,30909,30939,30968,30998,31027,31057,31086,31116,31145,31175,31204,31234,31263,31293,31322,31352,31381,31411,31441,31471,31500,31530,31559,31589,31618,31648,31676,31706,31736,31766,31795,31825,31854,31884,31913,31943,31972,32002,32031,32061,32090,32120,32150,32180,32209,32239,32268,32298,32327,32357,32386,32416,32445,32475,32504,32534,32563,32593,32622,32652,32681,32711,32740,32770,32799,32829,32858,32888,32917,32947,32976,33006,33035,33065,33094,33124,33153,33183,33213,33243,33272,33302,33331,33361,33390,33420,33450,33479,33509,33539,33568,33598,33627,33657,33686,33716,33745,33775,33804,33834,33863,33893,33922,33952,33981,34011,34040,34069,34099,34128,34158,34187,34217,34247,34277,34306,34336,34365,34395,34424,34454,34483,34512,34542,34571,34601,34631,34660,34690,34719,34749,34778,34808,34837,34867,34896,34926,34955,34985,35015,35044,35074,35103,35133,35162,35192,35222,35251,35280,35310,35340,35370,35399,35429,35458,35488,35517,35547,35576,35605,35635,35665,35694,35723,35753,35782,35811,35841,35871,35901,35930,35960,35989,36019,36048,36078,36107,36136,36166,36195,36225,36254,36284,36314,36343,36373,36403,36433,36462,36492,36521,36551,36580,36610,36639,36669,36698,36728,36757,36786,36816,36845,36875,36904,36934,36963,36993,37022,37052,37081,37111,37141,37170,37200,37229,37259,37288,37318,37347,37377,37406,37436,37465,37495,37524,37554,37584,37613,37643,37672,37701,37731,37760,37790,37819,37849,37878,37908,37938,37967,37997,38027,38056,38085,38115,38144,38174,38203,38233,38262,38292,38322,38351,38381,38410,38440,38469,38499,38528,38558,38587,38617,38646,38676,38705,38735,38764,38794,38823,38853,38882,38912,38941,38971,39001,39030,39059,39089,39118,39148,39178,39208,39237,39267,39297,39326,39355,39385,39414,39444,39473,39503,39532,39562,39592,39621,39650,39680,39709,39739,39768,39798,39827,39857,39886,39916,39946,39975,40005,40035,40064,40094,40123,40153,40182,40212,40241,40271,40300,40330,40359,40389,40418,40448,40477,40507,40536,40566,40595,40625,40655,40685,40714,40744,40773,40803,40832,40862,40892,40921,40951,40980,41009,41039,41068,41098,41127,41157,41186,41216,41245,41275,41304,41334,41364,41393,41422,41452,41481,41511,41540,41570,41599,41629,41658,41688,41718,41748,41777,41807,41836,41865,41894,41924,41953,41983,42012,42042,42072,42102,42131,42161,42190,42220,42249,42279,42308,42337,42367,42397,42426,42456,42485,42515,42545,42574,42604,42633,42662,42692,42721,42751,42780,42810,42839,42869,42899,42929,42958,42988,43017,43046,43076,43105,43135,43164,43194,43223,43253,43283,43312,43342,43371,43401,43430,43460,43489,43519,43548,43578,43607,43637,43666,43696,43726,43755,43785,43814,43844,43873,43903,43932,43962,43991,44021,44050,44080,44109,44139,44169,44198,44228,44258,44287,44317,44346,44375,44405,44434,44464,44493,44523,44553,44582,44612,44641,44671,44700,44730,44759,44788,44818,44847,44877,44906,44936,44966,44996,45025,45055,45084,45114,45143,45172,45202,45231,45261,45290,45320,45350,45380,45409,45439,45468,45498,45527,45556,45586,45615,45644,45674,45704,45733,45763,45793,45823,45852,45882,45911,45940,45970,45999,46028,46058,46088,46117,46147,46177,46206,46236,46265,46295,46324,46354,46383,46413,46442,46472,46501,46531,46560,46590,46620,46649,46679,46708,46738,46767,46797,46826,46856,46885,46915,46944,46974,47003,47033,47063,47092,47122,47151,47181,47210,47240,47269,47298,47328,47357,47387,47417,47446,47476,47506,47535,47565,47594,47624,47653,47682,47712,47741,47771,47800,47830,47860,47890,47919,47949,47978,48008,48037,48066,48096,48125,48155,48184,48214,48244,48273,48303,48333,48362,48392,48421,48450,48480,48509,48538,48568,48598,48627,48657,48687,48717,48746,48776,48805,48834,48864,48893,48922,48952,48982,49011,49041,49071,49100,49130,49160,49189,49218,49248,49277,49306,49336,49365,49395,49425,49455,49484,49514,49543,49573,49602,49632,49661,49690,49720,49749,49779,49809,49838,49868,49898,49927,49957,49986,50016,50045,50075,50104,50133,50163,50192,50222,50252,50281,50311,50340,50370,50400,50429,50459,50488,50518,50547,50576,50606,50635,50665,50694,50724,50754,50784,50813,50843,50872,50902,50931,50960,50990,51019,51049,51078,51108,51138,51167,51197,51227,51256,51286,51315,51345,51374,51403,51433,51462,51492,51522,51552,51582,51611,51641,51670,51699,51729,51758,51787,51816,51846,51876,51906,51936,51965,51995,52025,52054,52083,52113,52142,52171,52200,52230,52260,52290,52319,52349,52379,52408,52438,52467,52497,52526,52555,52585,52614,52644,52673,52703,52733,52762,52792,52822,52851,52881,52910,52939,52969,52998,53028,53057,53087,53116,53146,53176,53205,53235,53264,53294,53324,53353,53383,53412,53441,53471,53500,53530,53559,53589,53619,53648,53678,53708,53737,53767,53796,53825,53855,53884,53913,53943,53973,54003,54032,54062,54092,54121,54151,54180,54209,54239,54268,54297,54327,54357,54387,54416,54446,54476,54505,54535,54564,54593,54623,54652,54681,54711,54741,54770,54800,54830,54859,54889,54919,54948,54977,55007,55036,55066,55095,55125,55154,55184,55213,55243,55273,55302,55332,55361,55391,55420,55450,55479,55508,55538,55567,55597,55627,55657,55686,55716,55745,55775,55804,55834,55863,55892,55922,55951,55981,56011,56040,56070,56100,56129,56159,56188,56218,56247,56276,56306,56335,56365,56394,56424,56454,56483,56513,56543,56572,56601,56631,56660,56690,56719,56749,56778,56808,56837,56867,56897,56926,56956,56985,57015,57044,57074,57103,57133,57162,57192,57221,57251,57280,57310,57340,57369,57399,57429,57458,57487,57517,57546,57576,57605,57634,57664,57694,57723,57753,57783,57813,57842,57871,57901,57930,57959,57989,58018,58048,58077,58107,58137,58167,58196,58226,58255,58285,58314,58343,58373,58402,58432,58461,58491,58521,58551,58580,58610,58639,58669,58698,58727,58757,58786,58816,58845,58875,58905,58934,58964,58994,59023,59053,59082,59111,59141,59170,59200,59229,59259,59288,59318,59348,59377,59407,59436,59466,59495,59525,59554,59584,59613,59643,59672,59702,59731,59761,59791,59820,59850,59879,59909,59939,59968,59997,60027,60056,60086,60115,60145,60174,60204,60234,60264,60293,60323,60352,60381,60411,60440,60469,60499,60528,60558,60588,60618,60648,60677,60707,60736,60765,60795,60824,60853,60883,60912,60942,60972,61002,61031,61061,61090,61120,61149,61179,61208,61237,61267,61296,61326,61356,61385,61415,61445,61474,61504,61533,61563,61592,61621,61651,61680,61710,61739,61769,61799,61828,61858,61888,61917,61947,61976,62006,62035,62064,62094,62123,62153,62182,62212,62242,62271,62301,62331,62360,62390,62419,62448,62478,62507,62537,62566,62596,62625,62655,62685,62715,62744,62774,62803,62832,62862,62891,62921,62950,62980,63009,63039,63069,63099,63128,63157,63187,63216,63246,63275,63305,63334,63363,63393,63423,63453,63482,63512,63541,63571,63600,63630,63659,63689,63718,63747,63777,63807,63836,63866,63895,63925,63955,63984,64014,64043,64073,64102,64131,64161,64190,64220,64249,64279,64309,64339,64368,64398,64427,64457,64486,64515,64545,64574,64603,64633,64663,64692,64722,64752,64782,64811,64841,64870,64899,64929,64958,64987,65017,65047,65076,65106,65136,65166,65195,65225,65254,65283,65313,65342,65371,65401,65431,65460,65490,65520,65549,65579,65608,65638,65667,65697,65726,65755,65785,65815,65844,65874,65903,65933,65963,65992,66022,66051,66081,66110,66140,66169,66199,66228,66258,66287,66317,66346,66376,66405,66435,66465,66494,66524,66553,66583,66612,66641,66671,66700,66730,66760,66789,66819,66849,66878,66908,66937,66967,66996,67025,67055,67084,67114,67143,67173,67203,67233,67262,67292,67321,67351,67380,67409,67439,67468,67497,67527,67557,67587,67617,67646,67676,67705,67735,67764,67793,67823,67852,67882,67911,67941,67971,68e3,68030,68060,68089,68119,68148,68177,68207,68236,68266,68295,68325,68354,68384,68414,68443,68473,68502,68532,68561,68591,68620,68650,68679,68708,68738,68768,68797,68827,68857,68886,68916,68946,68975,69004,69034,69063,69092,69122,69152,69181,69211,69240,69270,69300,69330,69359,69388,69418,69447,69476,69506,69535,69565,69595,69624,69654,69684,69713,69743,69772,69802,69831,69861,69890,69919,69949,69978,70008,70038,70067,70097,70126,70156,70186,70215,70245,70274,70303,70333,70362,70392,70421,70451,70481,70510,70540,70570,70599,70629,70658,70687,70717,70746,70776,70805,70835,70864,70894,70924,70954,70983,71013,71042,71071,71101,71130,71159,71189,71218,71248,71278,71308,71337,71367,71397,71426,71455,71485,71514,71543,71573,71602,71632,71662,71691,71721,71751,71781,71810,71839,71869,71898,71927,71957,71986,72016,72046,72075,72105,72135,72164,72194,72223,72253,72282,72311,72341,72370,72400,72429,72459,72489,72518,72548,72577,72607,72637,72666,72695,72725,72754,72784,72813,72843,72872,72902,72931,72961,72991,73020,73050,73080,73109,73139,73168,73197,73227,73256,73286,73315,73345,73375,73404,73434,73464,73493,73523,73552,73581,73611,73640,73669,73699,73729,73758,73788,73818,73848,73877,73907,73936,73965,73995,74024,74053,74083,74113,74142,74172,74202,74231,74261,74291,74320,74349,74379,74408,74437,74467,74497,74526,74556,74586,74615,74645,74675,74704,74733,74763,74792,74822,74851,74881,74910,74940,74969,74999,75029,75058,75088,75117,75147,75176,75206,75235,75264,75294,75323,75353,75383,75412,75442,75472,75501,75531,75560,75590,75619,75648,75678,75707,75737,75766,75796,75826,75856,75885,75915,75944,75974,76003,76032,76062,76091,76121,76150,76180,76210,76239,76269,76299,76328,76358,76387,76416,76446,76475,76505,76534,76564,76593,76623,76653,76682,76712,76741,76771,76801,76830,76859,76889,76918,76948,76977,77007,77036,77066,77096,77125,77155,77185,77214,77243,77273,77302,77332,77361,77390,77420,77450,77479,77509,77539,77569,77598,77627,77657,77686,77715,77745,77774,77804,77833,77863,77893,77923,77952,77982,78011,78041,78070,78099,78129,78158,78188,78217,78247,78277,78307,78336,78366,78395,78425,78454,78483,78513,78542,78572,78601,78631,78661,78690,78720,78750,78779,78808,78838,78867,78897,78926,78956,78985,79015,79044,79074,79104,79133,79163,79192,79222,79251,79281,79310,79340,79369,79399,79428,79458,79487,79517,79546,79576,79606,79635,79665,79695,79724,79753,79783,79812,79841,79871,79900,79930,79960,79990]},{\"../main\":346,\"object-assign\":247}],346:[function(t,e,r){var n=t(\"object-assign\");function i(){this.regionalOptions=[],this.regionalOptions[\"\"]={invalidCalendar:\"Calendar {0} not found\",invalidDate:\"Invalid {0} date\",invalidMonth:\"Invalid {0} month\",invalidYear:\"Invalid {0} year\",differentCalendars:\"Cannot mix {0} and {1} dates\"},this.local=this.regionalOptions[\"\"],this.calendars={},this._localCals={}}function a(t,e,r,n){if(this._calendar=t,this._year=e,this._month=r,this._day=n,0===this._calendar._validateLevel&&!this._calendar.isValid(this._year,this._month,this._day))throw(c.local.invalidDate||c.regionalOptions[\"\"].invalidDate).replace(/\\{0\\}/,this._calendar.local.name)}function o(t,e){return\"000000\".substring(0,e-(t=\"\"+t).length)+t}function s(){this.shortYearCutoff=\"+10\"}function l(t){this.local=this.regionalOptions[t]||this.regionalOptions[\"\"]}n(i.prototype,{instance:function(t,e){t=(t||\"gregorian\").toLowerCase(),e=e||\"\";var r=this._localCals[t+\"-\"+e];if(!r&&this.calendars[t]&&(r=new this.calendars[t](e),this._localCals[t+\"-\"+e]=r),!r)throw(this.local.invalidCalendar||this.regionalOptions[\"\"].invalidCalendar).replace(/\\{0\\}/,t);return r},newDate:function(t,e,r,n,i){return(n=(null!=t&&t.year?t.calendar():\"string\"==typeof n?this.instance(n,i):n)||this.instance()).newDate(t,e,r)},substituteDigits:function(t){return function(e){return(e+\"\").replace(/[0-9]/g,(function(e){return t[e]}))}},substituteChineseDigits:function(t,e){return function(r){for(var n=\"\",i=0;r>0;){var a=r%10;n=(0===a?\"\":t[a]+e[i])+n,i++,r=Math.floor(r/10)}return 0===n.indexOf(t[1]+e[1])&&(n=n.substr(1)),n||t[0]}}}),n(a.prototype,{newDate:function(t,e,r){return this._calendar.newDate(null==t?this:t,e,r)},year:function(t){return 0===arguments.length?this._year:this.set(t,\"y\")},month:function(t){return 0===arguments.length?this._month:this.set(t,\"m\")},day:function(t){return 0===arguments.length?this._day:this.set(t,\"d\")},date:function(t,e,r){if(!this._calendar.isValid(t,e,r))throw(c.local.invalidDate||c.regionalOptions[\"\"].invalidDate).replace(/\\{0\\}/,this._calendar.local.name);return this._year=t,this._month=e,this._day=r,this},leapYear:function(){return this._calendar.leapYear(this)},epoch:function(){return this._calendar.epoch(this)},formatYear:function(){return this._calendar.formatYear(this)},monthOfYear:function(){return this._calendar.monthOfYear(this)},weekOfYear:function(){return this._calendar.weekOfYear(this)},daysInYear:function(){return this._calendar.daysInYear(this)},dayOfYear:function(){return this._calendar.dayOfYear(this)},daysInMonth:function(){return this._calendar.daysInMonth(this)},dayOfWeek:function(){return this._calendar.dayOfWeek(this)},weekDay:function(){return this._calendar.weekDay(this)},extraInfo:function(){return this._calendar.extraInfo(this)},add:function(t,e){return this._calendar.add(this,t,e)},set:function(t,e){return this._calendar.set(this,t,e)},compareTo:function(t){if(this._calendar.name!==t._calendar.name)throw(c.local.differentCalendars||c.regionalOptions[\"\"].differentCalendars).replace(/\\{0\\}/,this._calendar.local.name).replace(/\\{1\\}/,t._calendar.local.name);var e=this._year!==t._year?this._year-t._year:this._month!==t._month?this.monthOfYear()-t.monthOfYear():this._day-t._day;return 0===e?0:e<0?-1:1},calendar:function(){return this._calendar},toJD:function(){return this._calendar.toJD(this)},fromJD:function(t){return this._calendar.fromJD(t)},toJSDate:function(){return this._calendar.toJSDate(this)},fromJSDate:function(t){return this._calendar.fromJSDate(t)},toString:function(){return(this.year()<0?\"-\":\"\")+o(Math.abs(this.year()),4)+\"-\"+o(this.month(),2)+\"-\"+o(this.day(),2)}}),n(s.prototype,{_validateLevel:0,newDate:function(t,e,r){return null==t?this.today():(t.year&&(this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate),r=t.day(),e=t.month(),t=t.year()),new a(this,t,e,r))},today:function(){return this.fromJSDate(new Date)},epoch:function(t){return this._validate(t,this.minMonth,this.minDay,c.local.invalidYear||c.regionalOptions[\"\"].invalidYear).year()<0?this.local.epochs[0]:this.local.epochs[1]},formatYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,c.local.invalidYear||c.regionalOptions[\"\"].invalidYear);return(e.year()<0?\"-\":\"\")+o(Math.abs(e.year()),4)},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,c.local.invalidYear||c.regionalOptions[\"\"].invalidYear),12},monthOfYear:function(t,e){var r=this._validate(t,e,this.minDay,c.local.invalidMonth||c.regionalOptions[\"\"].invalidMonth);return(r.month()+this.monthsInYear(r)-this.firstMonth)%this.monthsInYear(r)+this.minMonth},fromMonthOfYear:function(t,e){var r=(e+this.firstMonth-2*this.minMonth)%this.monthsInYear(t)+this.minMonth;return this._validate(t,r,this.minDay,c.local.invalidMonth||c.regionalOptions[\"\"].invalidMonth),r},daysInYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,c.local.invalidYear||c.regionalOptions[\"\"].invalidYear);return this.leapYear(e)?366:365},dayOfYear:function(t,e,r){var n=this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate);return n.toJD()-this.newDate(n.year(),this.fromMonthOfYear(n.year(),this.minMonth),this.minDay).toJD()+1},daysInWeek:function(){return 7},dayOfWeek:function(t,e,r){var n=this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate);return(Math.floor(this.toJD(n))+2)%this.daysInWeek()},extraInfo:function(t,e,r){return this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate),{}},add:function(t,e,r){return this._validate(t,this.minMonth,this.minDay,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate),this._correctAdd(t,this._add(t,e,r),e,r)},_add:function(t,e,r){if(this._validateLevel++,\"d\"===r||\"w\"===r){var n=t.toJD()+e*(\"w\"===r?this.daysInWeek():1),i=t.calendar().fromJD(n);return this._validateLevel--,[i.year(),i.month(),i.day()]}try{var a=t.year()+(\"y\"===r?e:0),o=t.monthOfYear()+(\"m\"===r?e:0);i=t.day();\"y\"===r?(t.month()!==this.fromMonthOfYear(a,o)&&(o=this.newDate(a,t.month(),this.minDay).monthOfYear()),o=Math.min(o,this.monthsInYear(a)),i=Math.min(i,this.daysInMonth(a,this.fromMonthOfYear(a,o)))):\"m\"===r&&(!function(t){for(;oe-1+t.minMonth;)a++,o-=e,e=t.monthsInYear(a)}(this),i=Math.min(i,this.daysInMonth(a,this.fromMonthOfYear(a,o))));var s=[a,this.fromMonthOfYear(a,o),i];return this._validateLevel--,s}catch(t){throw this._validateLevel--,t}},_correctAdd:function(t,e,r,n){if(!(this.hasYearZero||\"y\"!==n&&\"m\"!==n||0!==e[0]&&t.year()>0==e[0]>0)){var i={y:[1,1,\"y\"],m:[1,this.monthsInYear(-1),\"m\"],w:[this.daysInWeek(),this.daysInYear(-1),\"d\"],d:[1,this.daysInYear(-1),\"d\"]}[n],a=r<0?-1:1;e=this._add(t,r*i[0]+a*i[1],i[2])}return t.date(e[0],e[1],e[2])},set:function(t,e,r){this._validate(t,this.minMonth,this.minDay,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate);var n=\"y\"===r?e:t.year(),i=\"m\"===r?e:t.month(),a=\"d\"===r?e:t.day();return\"y\"!==r&&\"m\"!==r||(a=Math.min(a,this.daysInMonth(n,i))),t.date(n,i,a)},isValid:function(t,e,r){this._validateLevel++;var n=this.hasYearZero||0!==t;if(n){var i=this.newDate(t,e,this.minDay);n=e>=this.minMonth&&e-this.minMonth=this.minDay&&r-this.minDay13.5?13:1),c=i-(l>2.5?4716:4715);return c<=0&&c--,this.newDate(c,l,s)},toJSDate:function(t,e,r){var n=this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate),i=new Date(n.year(),n.month()-1,n.day());return i.setHours(0),i.setMinutes(0),i.setSeconds(0),i.setMilliseconds(0),i.setHours(i.getHours()>12?i.getHours()+2:0),i},fromJSDate:function(t){return this.newDate(t.getFullYear(),t.getMonth()+1,t.getDate())}});var c=e.exports=new i;c.cdate=a,c.baseCalendar=s,c.calendars.gregorian=l},{\"object-assign\":247}],347:[function(t,e,r){var n=t(\"object-assign\"),i=t(\"./main\");n(i.regionalOptions[\"\"],{invalidArguments:\"Invalid arguments\",invalidFormat:\"Cannot format a date from another calendar\",missingNumberAt:\"Missing number at position {0}\",unknownNameAt:\"Unknown name at position {0}\",unexpectedLiteralAt:\"Unexpected literal at position {0}\",unexpectedText:\"Additional text found at end\"}),i.local=i.regionalOptions[\"\"],n(i.cdate.prototype,{formatDate:function(t,e){return\"string\"!=typeof t&&(e=t,t=\"\"),this._calendar.formatDate(t||\"\",this,e)}}),n(i.baseCalendar.prototype,{UNIX_EPOCH:i.instance().newDate(1970,1,1).toJD(),SECS_PER_DAY:86400,TICKS_EPOCH:i.instance().jdEpoch,TICKS_PER_DAY:864e9,ATOM:\"yyyy-mm-dd\",COOKIE:\"D, dd M yyyy\",FULL:\"DD, MM d, yyyy\",ISO_8601:\"yyyy-mm-dd\",JULIAN:\"J\",RFC_822:\"D, d M yy\",RFC_850:\"DD, dd-M-yy\",RFC_1036:\"D, d M yy\",RFC_1123:\"D, d M yyyy\",RFC_2822:\"D, d M yyyy\",RSS:\"D, d M yy\",TICKS:\"!\",TIMESTAMP:\"@\",W3C:\"yyyy-mm-dd\",formatDate:function(t,e,r){if(\"string\"!=typeof t&&(r=e,e=t,t=\"\"),!e)return\"\";if(e.calendar()!==this)throw i.local.invalidFormat||i.regionalOptions[\"\"].invalidFormat;t=t||this.local.dateFormat;for(var n,a,o,s,l=(r=r||{}).dayNamesShort||this.local.dayNamesShort,c=r.dayNames||this.local.dayNames,u=r.monthNumbers||this.local.monthNumbers,f=r.monthNamesShort||this.local.monthNamesShort,h=r.monthNames||this.local.monthNames,p=(r.calculateWeek||this.local.calculateWeek,function(e,r){for(var n=1;w+n1}),d=function(t,e,r,n){var i=\"\"+e;if(p(t,n))for(;i.length1},x=function(t,r){var n=y(t,r),a=[2,3,n?4:2,n?4:2,10,11,20][\"oyYJ@!\".indexOf(t)+1],o=new RegExp(\"^-?\\\\d{1,\"+a+\"}\"),s=e.substring(A).match(o);if(!s)throw(i.local.missingNumberAt||i.regionalOptions[\"\"].missingNumberAt).replace(/\\{0\\}/,A);return A+=s[0].length,parseInt(s[0],10)},b=this,_=function(){if(\"function\"==typeof l){y(\"m\");var t=l.call(b,e.substring(A));return A+=t.length,t}return x(\"m\")},w=function(t,r,n,a){for(var o=y(t,a)?n:r,s=0;s-1){p=1,d=g;for(var E=this.daysInMonth(h,p);d>E;E=this.daysInMonth(h,p))p++,d-=E}return f>-1?this.fromJD(f):this.newDate(h,p,d)},determineDate:function(t,e,r,n,i){r&&\"object\"!=typeof r&&(i=n,n=r,r=null),\"string\"!=typeof n&&(i=n,n=\"\");var a=this;return e=e?e.newDate():null,t=null==t?e:\"string\"==typeof t?function(t){try{return a.parseDate(n,t,i)}catch(t){}for(var e=((t=t.toLowerCase()).match(/^c/)&&r?r.newDate():null)||a.today(),o=/([+-]?[0-9]+)\\s*(d|w|m|y)?/g,s=o.exec(t);s;)e.add(parseInt(s[1],10),s[2]||\"d\"),s=o.exec(t);return e}(t):\"number\"==typeof t?isNaN(t)||t===1/0||t===-1/0?e:a.today().add(t,\"d\"):a.newDate(t)}})},{\"./main\":346,\"object-assign\":247}],348:[function(t,e,r){\"use strict\";e.exports=[{path:\"\",backoff:0},{path:\"M-2.4,-3V3L0.6,0Z\",backoff:.6},{path:\"M-3.7,-2.5V2.5L1.3,0Z\",backoff:1.3},{path:\"M-4.45,-3L-1.65,-0.2V0.2L-4.45,3L1.55,0Z\",backoff:1.55},{path:\"M-2.2,-2.2L-0.2,-0.2V0.2L-2.2,2.2L-1.4,3L1.6,0L-1.4,-3Z\",backoff:1.6},{path:\"M-4.4,-2.1L-0.6,-0.2V0.2L-4.4,2.1L-4,3L2,0L-4,-3Z\",backoff:2},{path:\"M2,0A2,2 0 1,1 0,-2A2,2 0 0,1 2,0Z\",backoff:0,noRotate:!0},{path:\"M2,2V-2H-2V2Z\",backoff:0,noRotate:!0}]},{}],349:[function(t,e,r){\"use strict\";var n=t(\"./arrow_paths\"),i=t(\"../../plots/font_attributes\"),a=t(\"../../plots/cartesian/constants\"),o=t(\"../../plot_api/plot_template\").templatedArray;t(\"../../constants/axis_placeable_objects\");e.exports=o(\"annotation\",{visible:{valType:\"boolean\",dflt:!0,editType:\"calc+arraydraw\"},text:{valType:\"string\",editType:\"calc+arraydraw\"},textangle:{valType:\"angle\",dflt:0,editType:\"calc+arraydraw\"},font:i({editType:\"calc+arraydraw\",colorEditType:\"arraydraw\"}),width:{valType:\"number\",min:1,dflt:null,editType:\"calc+arraydraw\"},height:{valType:\"number\",min:1,dflt:null,editType:\"calc+arraydraw\"},opacity:{valType:\"number\",min:0,max:1,dflt:1,editType:\"arraydraw\"},align:{valType:\"enumerated\",values:[\"left\",\"center\",\"right\"],dflt:\"center\",editType:\"arraydraw\"},valign:{valType:\"enumerated\",values:[\"top\",\"middle\",\"bottom\"],dflt:\"middle\",editType:\"arraydraw\"},bgcolor:{valType:\"color\",dflt:\"rgba(0,0,0,0)\",editType:\"arraydraw\"},bordercolor:{valType:\"color\",dflt:\"rgba(0,0,0,0)\",editType:\"arraydraw\"},borderpad:{valType:\"number\",min:0,dflt:1,editType:\"calc+arraydraw\"},borderwidth:{valType:\"number\",min:0,dflt:1,editType:\"calc+arraydraw\"},showarrow:{valType:\"boolean\",dflt:!0,editType:\"calc+arraydraw\"},arrowcolor:{valType:\"color\",editType:\"arraydraw\"},arrowhead:{valType:\"integer\",min:0,max:n.length,dflt:1,editType:\"arraydraw\"},startarrowhead:{valType:\"integer\",min:0,max:n.length,dflt:1,editType:\"arraydraw\"},arrowside:{valType:\"flaglist\",flags:[\"end\",\"start\"],extras:[\"none\"],dflt:\"end\",editType:\"arraydraw\"},arrowsize:{valType:\"number\",min:.3,dflt:1,editType:\"calc+arraydraw\"},startarrowsize:{valType:\"number\",min:.3,dflt:1,editType:\"calc+arraydraw\"},arrowwidth:{valType:\"number\",min:.1,editType:\"calc+arraydraw\"},standoff:{valType:\"number\",min:0,dflt:0,editType:\"calc+arraydraw\"},startstandoff:{valType:\"number\",min:0,dflt:0,editType:\"calc+arraydraw\"},ax:{valType:\"any\",editType:\"calc+arraydraw\"},ay:{valType:\"any\",editType:\"calc+arraydraw\"},axref:{valType:\"enumerated\",dflt:\"pixel\",values:[\"pixel\",a.idRegex.x.toString()],editType:\"calc\"},ayref:{valType:\"enumerated\",dflt:\"pixel\",values:[\"pixel\",a.idRegex.y.toString()],editType:\"calc\"},xref:{valType:\"enumerated\",values:[\"paper\",a.idRegex.x.toString()],editType:\"calc\"},x:{valType:\"any\",editType:\"calc+arraydraw\"},xanchor:{valType:\"enumerated\",values:[\"auto\",\"left\",\"center\",\"right\"],dflt:\"auto\",editType:\"calc+arraydraw\"},xshift:{valType:\"number\",dflt:0,editType:\"calc+arraydraw\"},yref:{valType:\"enumerated\",values:[\"paper\",a.idRegex.y.toString()],editType:\"calc\"},y:{valType:\"any\",editType:\"calc+arraydraw\"},yanchor:{valType:\"enumerated\",values:[\"auto\",\"top\",\"middle\",\"bottom\"],dflt:\"auto\",editType:\"calc+arraydraw\"},yshift:{valType:\"number\",dflt:0,editType:\"calc+arraydraw\"},clicktoshow:{valType:\"enumerated\",values:[!1,\"onoff\",\"onout\"],dflt:!1,editType:\"arraydraw\"},xclick:{valType:\"any\",editType:\"arraydraw\"},yclick:{valType:\"any\",editType:\"arraydraw\"},hovertext:{valType:\"string\",editType:\"arraydraw\"},hoverlabel:{bgcolor:{valType:\"color\",editType:\"arraydraw\"},bordercolor:{valType:\"color\",editType:\"arraydraw\"},font:i({editType:\"arraydraw\"}),editType:\"arraydraw\"},captureevents:{valType:\"boolean\",editType:\"arraydraw\"},editType:\"calc\",_deprecated:{ref:{valType:\"string\",editType:\"calc\"}}})},{\"../../constants/axis_placeable_objects\":472,\"../../plot_api/plot_template\":543,\"../../plots/cartesian/constants\":561,\"../../plots/font_attributes\":585,\"./arrow_paths\":348}],350:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"./draw\").draw;function o(t){var e=t._fullLayout;n.filterVisible(e.annotations).forEach((function(e){var r=i.getFromId(t,e.xref),n=i.getFromId(t,e.yref),a=i.getRefType(e.xref),o=i.getRefType(e.yref);e._extremes={},\"range\"===a&&s(e,r),\"range\"===o&&s(e,n)}))}function s(t,e){var r,n=e._id,a=n.charAt(0),o=t[a],s=t[\"a\"+a],l=t[a+\"ref\"],c=t[\"a\"+a+\"ref\"],u=t[\"_\"+a+\"padplus\"],f=t[\"_\"+a+\"padminus\"],h={x:1,y:-1}[a]*t[a+\"shift\"],p=3*t.arrowsize*t.arrowwidth||0,d=p+h,g=p-h,m=3*t.startarrowsize*t.arrowwidth||0,v=m+h,y=m-h;if(c===l){var x=i.findExtremes(e,[e.r2c(o)],{ppadplus:d,ppadminus:g}),b=i.findExtremes(e,[e.r2c(s)],{ppadplus:Math.max(u,v),ppadminus:Math.max(f,y)});r={min:[x.min[0],b.min[0]],max:[x.max[0],b.max[0]]}}else v=s?v+s:v,y=s?y-s:y,r=i.findExtremes(e,[e.r2c(o)],{ppadplus:Math.max(u,d,v),ppadminus:Math.max(f,g,y)});t._extremes[n]=r}e.exports=function(t){var e=t._fullLayout;if(n.filterVisible(e.annotations).length&&t._fullData.length)return n.syncOrAsync([a,o],t)}},{\"../../lib\":503,\"../../plots/cartesian/axes\":554,\"./draw\":355}],351:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../registry\"),a=t(\"../../plot_api/plot_template\").arrayEditor;function o(t,e){var r,n,i,a,o,l,c,u=t._fullLayout.annotations,f=[],h=[],p=[],d=(e||[]).length;for(r=0;r0||r.explicitOff.length>0},onClick:function(t,e){var r,s,l=o(t,e),c=l.on,u=l.off.concat(l.explicitOff),f={},h=t._fullLayout.annotations;if(!c.length&&!u.length)return;for(r=0;r2/3?\"right\":\"center\"),{center:0,middle:0,left:.5,bottom:-.5,right:-.5,top:.5}[e]}for(var W=!1,X=[\"x\",\"y\"],Z=0;Z1)&&(nt===rt?((pt=it.r2fraction(e[\"a\"+et]))<0||pt>1)&&(W=!0):W=!0),J=it._offset+it.r2p(e[et]),$=.5}else{var dt=\"domain\"===ht;\"x\"===et?(Q=e[et],J=dt?it._offset+it._length*Q:J=T.l+T.w*Q):(Q=1-e[et],J=dt?it._offset+it._length*Q:J=T.t+T.h*Q),$=e.showarrow?.5:Q}if(e.showarrow){ft.head=J;var gt=e[\"a\"+et];if(tt=ot*q(.5,e.xanchor)-st*q(.5,e.yanchor),nt===rt){var mt=l.getRefType(nt);\"domain\"===mt?(\"y\"===et&&(gt=1-gt),ft.tail=it._offset+it._length*gt):\"paper\"===mt?\"y\"===et?(gt=1-gt,ft.tail=T.t+T.h*gt):ft.tail=T.l+T.w*gt:ft.tail=it._offset+it.r2p(gt),K=tt}else ft.tail=J+gt,K=tt+gt;ft.text=ft.tail+tt;var vt=w[\"x\"===et?\"width\":\"height\"];if(\"paper\"===rt&&(ft.head=o.constrain(ft.head,1,vt-1)),\"pixel\"===nt){var yt=-Math.max(ft.tail-3,ft.text),xt=Math.min(ft.tail+3,ft.text)-vt;yt>0?(ft.tail+=yt,ft.text+=yt):xt>0&&(ft.tail-=xt,ft.text-=xt)}ft.tail+=ut,ft.head+=ut}else K=tt=lt*q($,ct),ft.text=J+tt;ft.text+=ut,tt+=ut,K+=ut,e[\"_\"+et+\"padplus\"]=lt/2+K,e[\"_\"+et+\"padminus\"]=lt/2-K,e[\"_\"+et+\"size\"]=lt,e[\"_\"+et+\"shift\"]=tt}if(W)R.remove();else{var bt=0,_t=0;if(\"left\"!==e.align&&(bt=(A-b)*(\"center\"===e.align?.5:1)),\"top\"!==e.valign&&(_t=(D-_)*(\"middle\"===e.valign?.5:1)),f)n.select(\"svg\").attr({x:N+bt-1,y:N+_t}).call(u.setClipUrl,U?L:null,t);else{var wt=N+_t-g.top,Tt=N+bt-g.left;G.call(h.positionText,Tt,wt).call(u.setClipUrl,U?L:null,t)}V.select(\"rect\").call(u.setRect,N,N,A,D),j.call(u.setRect,F/2,F/2,B-F,H-F),R.call(u.setTranslate,Math.round(C.x.text-B/2),Math.round(C.y.text-H/2)),O.attr({transform:\"rotate(\"+P+\",\"+C.x.text+\",\"+C.y.text+\")\"});var kt,At=function(r,n){I.selectAll(\".annotation-arrow-g\").remove();var l=C.x.head,f=C.y.head,h=C.x.tail+r,p=C.y.tail+n,g=C.x.text+r,b=C.y.text+n,_=o.rotationXYMatrix(P,g,b),w=o.apply2DTransform(_),A=o.apply2DTransform2(_),L=+j.attr(\"width\"),z=+j.attr(\"height\"),D=g-.5*L,F=D+L,B=b-.5*z,N=B+z,U=[[D,B,D,N],[D,N,F,N],[F,N,F,B],[F,B,D,B]].map(A);if(!U.reduce((function(t,e){return t^!!o.segmentsIntersect(l,f,l+1e6,f+1e6,e[0],e[1],e[2],e[3])}),!1)){U.forEach((function(t){var e=o.segmentsIntersect(h,p,l,f,t[0],t[1],t[2],t[3]);e&&(h=e.x,p=e.y)}));var V=e.arrowwidth,H=e.arrowcolor,q=e.arrowside,G=I.append(\"g\").style({opacity:c.opacity(H)}).classed(\"annotation-arrow-g\",!0),Y=G.append(\"path\").attr(\"d\",\"M\"+h+\",\"+p+\"L\"+l+\",\"+f).style(\"stroke-width\",V+\"px\").call(c.stroke,c.rgb(H));if(m(Y,q,e),k.annotationPosition&&Y.node().parentNode&&!a){var W=l,X=f;if(e.standoff){var Z=Math.sqrt(Math.pow(l-h,2)+Math.pow(f-p,2));W+=e.standoff*(h-l)/Z,X+=e.standoff*(p-f)/Z}var J,K,Q=G.append(\"path\").classed(\"annotation-arrow\",!0).classed(\"anndrag\",!0).classed(\"cursor-move\",!0).attr({d:\"M3,3H-3V-3H3ZM0,0L\"+(h-W)+\",\"+(p-X),transform:s(W,X)}).style(\"stroke-width\",V+6+\"px\").call(c.stroke,\"rgba(0,0,0,0)\").call(c.fill,\"rgba(0,0,0,0)\");d.init({element:Q.node(),gd:t,prepFn:function(){var t=u.getTranslate(R);J=t.x,K=t.y,v&&v.autorange&&M(v._name+\".autorange\",!0),x&&x.autorange&&M(x._name+\".autorange\",!0)},moveFn:function(t,r){var n=w(J,K),i=n[0]+t,a=n[1]+r;R.call(u.setTranslate,i,a),S(\"x\",y(v,t,\"x\",T,e)),S(\"y\",y(x,r,\"y\",T,e)),e.axref===e.xref&&S(\"ax\",y(v,t,\"ax\",T,e)),e.ayref===e.yref&&S(\"ay\",y(x,r,\"ay\",T,e)),G.attr(\"transform\",s(t,r)),O.attr({transform:\"rotate(\"+P+\",\"+i+\",\"+a+\")\"})},doneFn:function(){i.call(\"_guiRelayout\",t,E());var e=document.querySelector(\".js-notes-box-panel\");e&&e.redraw(e.selectedObj)}})}}};if(e.showarrow&&At(0,0),z)d.init({element:R.node(),gd:t,prepFn:function(){kt=O.attr(\"transform\")},moveFn:function(t,r){var n=\"pointer\";if(e.showarrow)e.axref===e.xref?S(\"ax\",y(v,t,\"ax\",T,e)):S(\"ax\",e.ax+t),e.ayref===e.yref?S(\"ay\",y(x,r,\"ay\",T.w,e)):S(\"ay\",e.ay+r),At(t,r);else{if(a)return;var i,o;if(v)i=y(v,t,\"x\",T,e);else{var l=e._xsize/T.w,c=e.x+(e._xshift-e.xshift)/T.w-l/2;i=d.align(c+t/T.w,l,0,1,e.xanchor)}if(x)o=y(x,r,\"y\",T,e);else{var u=e._ysize/T.h,f=e.y-(e._yshift+e.yshift)/T.h-u/2;o=d.align(f-r/T.h,u,0,1,e.yanchor)}S(\"x\",i),S(\"y\",o),v&&x||(n=d.getCursor(v?.5:i,x?.5:o,e.xanchor,e.yanchor))}O.attr({transform:s(t,r)+kt}),p(R,n)},clickFn:function(r,n){e.captureevents&&t.emit(\"plotly_clickannotation\",Y(n))},doneFn:function(){p(R),i.call(\"_guiRelayout\",t,E());var e=document.querySelector(\".js-notes-box-panel\");e&&e.redraw(e.selectedObj)}})}}}e.exports={draw:function(t){var e=t._fullLayout;e._infolayer.selectAll(\".annotation\").remove();for(var r=0;r=0,x=e.indexOf(\"end\")>=0,b=d.backoff*m+r.standoff,_=g.backoff*v+r.startstandoff;if(\"line\"===p.nodeName){o={x:+t.attr(\"x1\"),y:+t.attr(\"y1\")},u={x:+t.attr(\"x2\"),y:+t.attr(\"y2\")};var w=o.x-u.x,T=o.y-u.y;if(h=(f=Math.atan2(T,w))+Math.PI,b&&_&&b+_>Math.sqrt(w*w+T*T))return void z();if(b){if(b*b>w*w+T*T)return void z();var k=b*Math.cos(f),A=b*Math.sin(f);u.x+=k,u.y+=A,t.attr({x2:u.x,y2:u.y})}if(_){if(_*_>w*w+T*T)return void z();var M=_*Math.cos(f),S=_*Math.sin(f);o.x-=M,o.y-=S,t.attr({x1:o.x,y1:o.y})}}else if(\"path\"===p.nodeName){var E=p.getTotalLength(),L=\"\";if(E1){c=!0;break}}c?t.fullLayout._infolayer.select(\".annotation-\"+t.id+'[data-index=\"'+s+'\"]').remove():(l._pdata=i(t.glplot.cameraParams,[e.xaxis.r2l(l.x)*r[0],e.yaxis.r2l(l.y)*r[1],e.zaxis.r2l(l.z)*r[2]]),n(t.graphDiv,l,s,t.id,l._xa,l._ya))}}},{\"../../plots/gl3d/project\":607,\"../annotations/draw\":355}],362:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\");e.exports={moduleType:\"component\",name:\"annotations3d\",schema:{subplots:{scene:{annotations:t(\"./attributes\")}}},layoutAttributes:t(\"./attributes\"),handleDefaults:t(\"./defaults\"),includeBasePlot:function(t,e){var r=n.subplotsRegistry.gl3d;if(!r)return;for(var a=r.attrRegex,o=Object.keys(t),s=0;s=0))return t;if(3===o)n[o]>1&&(n[o]=1);else if(n[o]>=1)return t}var s=Math.round(255*n[0])+\", \"+Math.round(255*n[1])+\", \"+Math.round(255*n[2]);return a?\"rgba(\"+s+\", \"+n[3]+\")\":\"rgb(\"+s+\")\"}o.tinyRGB=function(t){var e=t.toRgb();return\"rgb(\"+Math.round(e.r)+\", \"+Math.round(e.g)+\", \"+Math.round(e.b)+\")\"},o.rgb=function(t){return o.tinyRGB(n(t))},o.opacity=function(t){return t?n(t).getAlpha():0},o.addOpacity=function(t,e){var r=n(t).toRgb();return\"rgba(\"+Math.round(r.r)+\", \"+Math.round(r.g)+\", \"+Math.round(r.b)+\", \"+e+\")\"},o.combine=function(t,e){var r=n(t).toRgb();if(1===r.a)return n(t).toRgbString();var i=n(e||c).toRgb(),a=1===i.a?i:{r:255*(1-i.a)+i.r*i.a,g:255*(1-i.a)+i.g*i.a,b:255*(1-i.a)+i.b*i.a},o={r:a.r*(1-r.a)+r.r*r.a,g:a.g*(1-r.a)+r.g*r.a,b:a.b*(1-r.a)+r.b*r.a};return n(o).toRgbString()},o.contrast=function(t,e,r){var i=n(t);return 1!==i.getAlpha()&&(i=n(o.combine(t,c))),(i.isDark()?e?i.lighten(e):c:r?i.darken(r):l).toString()},o.stroke=function(t,e){var r=n(e);t.style({stroke:o.tinyRGB(r),\"stroke-opacity\":r.getAlpha()})},o.fill=function(t,e){var r=n(e);t.style({fill:o.tinyRGB(r),\"fill-opacity\":r.getAlpha()})},o.clean=function(t){if(t&&\"object\"==typeof t){var e,r,n,i,s=Object.keys(t);for(e=0;e0?n>=l:n<=l));i++)n>u&&n0?n>=l:n<=l));i++)n>r[0]&&n1){var ct=Math.pow(10,Math.floor(Math.log(lt)/Math.LN10));ot*=ct*c.roundUp(lt/ct,[2,5,10]),(Math.abs(q.start)/q.size+1e-6)%1<2e-6&&(it.tick0=0)}it.dtick=ot}it.domain=o?[rt+I/R.h,rt+K-I/R.h]:[rt+P/R.w,rt+K-P/R.w],it.setScale(),t.attr(\"transform\",u(Math.round(R.l),Math.round(R.t)));var ut,ft=t.select(\".\"+A.cbtitleunshift).attr(\"transform\",u(-Math.round(R.l),-Math.round(R.t))),ht=it.ticklabelposition,pt=it.title.font.size,dt=t.select(\".\"+A.cbaxis),gt=0,mt=0;function vt(n,i){var a={propContainer:it,propName:e._propPrefix+\"title\",traceIndex:e._traceIndex,_meta:e._meta,placeholder:D._dfltTitle.colorbar,containerGroup:t.select(\".\"+A.cbtitle)},o=\"h\"===n.charAt(0)?n.substr(1):\"h\"+n;t.selectAll(\".\"+o+\",.\"+o+\"-math-group\").remove(),g.draw(r,n,f(a,i||{}))}return c.syncOrAsync([a.previousPromises,function(){var t,e;(o&&at||!o&&!at)&&(\"top\"===j&&(t=P+R.l+R.w*O,e=I+R.t+R.h*(1-rt-K)+3+.75*pt),\"bottom\"===j&&(t=P+R.l+R.w*O,e=I+R.t+R.h*(1-rt)-3-.25*pt),\"right\"===j&&(e=I+R.t+R.h*z+3+.75*pt,t=P+R.l+R.w*rt),vt(it._id+\"title\",{attributes:{x:t,y:e,\"text-anchor\":o?\"start\":\"middle\"}}))},function(){if(!o&&!at||o&&at){var a,l=t.select(\".\"+A.cbtitle),f=l.select(\"text\"),h=[-M/2,M/2],d=l.select(\".h\"+it._id+\"title-math-group\").node(),g=15.6;if(f.node()&&(g=parseInt(f.node().style.fontSize,10)*w),d?(a=p.bBox(d),mt=a.width,(gt=a.height)>g&&(h[1]-=(gt-g)/2)):f.node()&&!f.classed(A.jsPlaceholder)&&(a=p.bBox(f.node()),mt=a.width,gt=a.height),o){if(gt){if(gt+=5,\"top\"===j)it.domain[1]-=gt/R.h,h[1]*=-1;else{it.domain[0]+=gt/R.h;var v=m.lineCount(f);h[1]+=(1-v)*g}l.attr(\"transform\",u(h[0],h[1])),it.setScale()}}else mt&&(\"right\"===j&&(it.domain[0]+=(mt+pt/2)/R.w),l.attr(\"transform\",u(h[0],h[1])),it.setScale())}t.selectAll(\".\"+A.cbfills+\",.\"+A.cblines).attr(\"transform\",o?u(0,Math.round(R.h*(1-it.domain[1]))):u(Math.round(R.w*it.domain[0]),0)),dt.attr(\"transform\",o?u(0,Math.round(-R.t)):u(Math.round(-R.l),0));var y=t.select(\".\"+A.cbfills).selectAll(\"rect.\"+A.cbfill).attr(\"style\",\"\").data(Y);y.enter().append(\"rect\").classed(A.cbfill,!0).style(\"stroke\",\"none\"),y.exit().remove();var x=U.map(it.c2p).map(Math.round).sort((function(t,e){return t-e}));y.each((function(t,a){var s=[0===a?U[0]:(Y[a]+Y[a-1])/2,a===Y.length-1?U[1]:(Y[a]+Y[a+1])/2].map(it.c2p).map(Math.round);o&&(s[1]=c.constrain(s[1]+(s[1]>s[0])?1:-1,x[0],x[1]));var l=n.select(this).attr(o?\"x\":\"y\",Q).attr(o?\"y\":\"x\",n.min(s)).attr(o?\"width\":\"height\",Math.max(X,2)).attr(o?\"height\":\"width\",Math.max(n.max(s)-n.min(s),2));if(e._fillgradient)p.gradient(l,r,e._id,o?\"vertical\":\"horizontalreversed\",e._fillgradient,\"fill\");else{var u=H(t).replace(\"e-\",\"\");l.attr(\"fill\",i(u).toHexString())}}));var b=t.select(\".\"+A.cblines).selectAll(\"path.\"+A.cbline).data(B.color&&B.width?W:[]);b.enter().append(\"path\").classed(A.cbline,!0),b.exit().remove(),b.each((function(t){var e=Q,r=Math.round(it.c2p(t))+B.width/2%1;n.select(this).attr(\"d\",\"M\"+(o?e+\",\"+r:r+\",\"+e)+(o?\"h\":\"v\")+X).call(p.lineGroupStyle,B.width,V(t),B.dash)})),dt.selectAll(\"g.\"+it._id+\"tick,path\").remove();var _=Q+X+(M||0)/2-(\"outside\"===e.ticks?1:0),T=s.calcTicks(it),k=s.getTickSigns(it)[2];return s.drawTicks(r,it,{vals:\"inside\"===it.ticks?s.clipEnds(it,T):T,layer:dt,path:s.makeTickPath(it,_,k),transFn:s.makeTransTickFn(it)}),s.drawLabels(r,it,{vals:T,layer:dt,transFn:s.makeTransTickLabelFn(it),labelFns:s.makeLabelFns(it,_)})},function(){if(o&&!at||!o&&at){var t,i,a=it.position||0,s=it._offset+it._length/2;if(\"right\"===j)i=s,t=R.l+R.w*a+10+pt*(it.showticklabels?1:.5);else if(t=s,\"bottom\"===j&&(i=R.t+R.h*a+10+(-1===ht.indexOf(\"inside\")?it.tickfont.size:0)+(\"intside\"!==it.ticks&&e.ticklen||0)),\"top\"===j){var l=N.text.split(\"
\").length;i=R.t+R.h*a+10-X-w*pt*l}vt((o?\"h\":\"v\")+it._id+\"title\",{avoid:{selection:n.select(r).selectAll(\"g.\"+it._id+\"tick\"),side:j,offsetTop:o?0:R.t,offsetLeft:o?R.l:0,maxShift:o?D.width:D.height},attributes:{x:t,y:i,\"text-anchor\":\"middle\"},transform:{rotate:o?-90:0,offset:0}})}},a.previousPromises,function(){var n,s=X+M/2;-1===ht.indexOf(\"inside\")&&(n=p.bBox(dt.node()),s+=o?n.width:n.height),ut=ft.select(\"text\");var c=0,f=o&&\"top\"===j,g=!o&&\"right\"===j,m=0;if(ut.node()&&!ut.classed(A.jsPlaceholder)){var y,x=ft.select(\".h\"+it._id+\"title-math-group\").node();x&&(o&&at||!o&&!at)?(c=(n=p.bBox(x)).width,y=n.height):(c=(n=p.bBox(ft.node())).right-R.l-(o?Q:nt),y=n.bottom-R.t-(o?nt:Q),o||\"top\"!==j||(s+=n.height,m=n.height)),g&&(ut.attr(\"transform\",u(c/2+pt/2,0)),c*=2),s=Math.max(s,o?c:y)}var b=2*(o?P:I)+s+S+M/2,w=0;!o&&N.text&&\"bottom\"===C&&z<=0&&(b+=w=b/2,m+=w),D._hColorbarMoveTitle=w,D._hColorbarMoveCBTitle=m;var F=S+M;t.select(\".\"+A.cbbg).attr(\"x\",(o?Q:nt)-F/2-(o?P:0)).attr(\"y\",(o?nt:Q)-(o?J:I+m-w)).attr(o?\"width\":\"height\",Math.max(b-w,2)).attr(o?\"height\":\"width\",Math.max(J+F,2)).call(d.fill,E).call(d.stroke,e.bordercolor).style(\"stroke-width\",S);var B=g?Math.max(c-10,0):0;if(t.selectAll(\".\"+A.cboutline).attr(\"x\",(o?Q:nt+P)+B).attr(\"y\",(o?nt+I-J:Q)+(f?gt:0)).attr(o?\"width\":\"height\",Math.max(X,2)).attr(o?\"height\":\"width\",Math.max(J-(o?2*I+gt:2*P+B),2)).call(d.stroke,e.outlinecolor).style({fill:\"none\",\"stroke-width\":M}),t.attr(\"transform\",u(R.l-(o?$*b:0),R.t-(o?0:(1-tt)*b-m))),!o&&(S||i(E).getAlpha()&&!i.equals(D.paper_bgcolor,E))){var U=dt.selectAll(\"text\"),V=U[0].length,H=t.select(\".\"+A.cbbg).node(),q=p.bBox(H),G=p.getTranslate(t);U.each((function(t,e){var r=V-1;if(0===e||e===r){var n,i=p.bBox(this),a=p.getTranslate(this);if(e===r){var o=i.right+a.x;(n=q.right+G.x+nt-S-2+O-o)>0&&(n=0)}else if(0===e){var s=i.left+a.x;(n=q.left+G.x+nt+S+2-s)<0&&(n=0)}n&&(V<3?this.setAttribute(\"transform\",\"translate(\"+n+\",0) \"+this.getAttribute(\"transform\")):this.setAttribute(\"visibility\",\"hidden\"))}}))}var Y={},W=T[L],Z=k[L],K=T[C],et=k[C],rt=b-X;o?(\"pixels\"===h?(Y.y=z,Y.t=J*K,Y.b=J*et):(Y.t=Y.b=0,Y.yt=z+l*K,Y.yb=z-l*et),\"pixels\"===_?(Y.x=O,Y.l=b*W,Y.r=b*Z):(Y.l=rt*W,Y.r=rt*Z,Y.xl=O-v*W,Y.xr=O+v*Z)):(\"pixels\"===h?(Y.x=O,Y.l=J*W,Y.r=J*Z):(Y.l=Y.r=0,Y.xl=O+l*W,Y.xr=O-l*Z),\"pixels\"===_?(Y.y=1-z,Y.t=b*K,Y.b=b*et):(Y.t=rt*K,Y.b=rt*et,Y.yt=z-v*K,Y.yb=z+v*et)),a.autoMargin(r,e._id,Y)}],r)}(r,e,t);v&&v.then&&(t._promises||[]).push(v),t._context.edits.colorbarPosition&&function(t,e,r){var n,i,a,s=\"v\"===e.orientation,c=r._fullLayout._size;l.init({element:t.node(),gd:r,prepFn:function(){n=t.attr(\"transform\"),h(t)},moveFn:function(r,o){t.attr(\"transform\",n+u(r,o)),i=l.align((s?e._uFrac:e._vFrac)+r/c.w,s?e._thickFrac:e._lenFrac,0,1,e.xanchor),a=l.align((s?e._vFrac:1-e._uFrac)-o/c.h,s?e._lenFrac:e._thickFrac,0,1,e.yanchor);var f=l.getCursor(i,a,e.xanchor,e.yanchor);h(t,f)},doneFn:function(){if(h(t),void 0!==i&&void 0!==a){var n={};n[e._propPrefix+\"x\"]=i,n[e._propPrefix+\"y\"]=a,void 0!==e._traceIndex?o.call(\"_guiRestyle\",r,n,e._traceIndex):o.call(\"_guiRelayout\",r,n)}}})}(r,e,t)})),e.exit().each((function(e){a.autoMargin(t,e._id)})).remove(),e.order()}}},{\"../../constants/alignment\":471,\"../../lib\":503,\"../../lib/extend\":493,\"../../lib/setcursor\":524,\"../../lib/svg_text_utils\":529,\"../../plots/cartesian/axes\":554,\"../../plots/cartesian/axis_defaults\":556,\"../../plots/cartesian/layout_attributes\":569,\"../../plots/cartesian/position_defaults\":572,\"../../plots/plots\":619,\"../../registry\":638,\"../color\":366,\"../colorscale/helpers\":377,\"../dragelement\":385,\"../drawing\":388,\"../titles\":464,\"./constants\":368,\"@plotly/d3\":58,tinycolor2:312}],371:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t){return n.isPlainObject(t.colorbar)}},{\"../../lib\":503}],372:[function(t,e,r){\"use strict\";e.exports={moduleType:\"component\",name:\"colorbar\",attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),draw:t(\"./draw\").draw,hasColorbar:t(\"./has_colorbar\")}},{\"./attributes\":367,\"./defaults\":369,\"./draw\":370,\"./has_colorbar\":371}],373:[function(t,e,r){\"use strict\";var n=t(\"../colorbar/attributes\"),i=t(\"../../lib/regex\").counter,a=t(\"../../lib/sort_object_keys\"),o=t(\"./scales.js\").scales;a(o);function s(t){return\"`\"+t+\"`\"}e.exports=function(t,e){t=t||\"\";var r,a=(e=e||{}).cLetter||\"c\",l=(\"onlyIfNumerical\"in e?e.onlyIfNumerical:Boolean(t),\"noScale\"in e?e.noScale:\"marker.line\"===t),c=\"showScaleDflt\"in e?e.showScaleDflt:\"z\"===a,u=\"string\"==typeof e.colorscaleDflt?o[e.colorscaleDflt]:null,f=e.editTypeOverride||\"\",h=t?t+\".\":\"\";\"colorAttr\"in e?(r=e.colorAttr,e.colorAttr):s(h+(r={z:\"z\",c:\"color\"}[a]));var p=a+\"auto\",d=a+\"min\",g=a+\"max\",m=a+\"mid\",v=(s(h+p),s(h+d),s(h+g),{});v[d]=v[g]=void 0;var y={};y[p]=!1;var x={};return\"color\"===r&&(x.color={valType:\"color\",arrayOk:!0,editType:f||\"style\"},e.anim&&(x.color.anim=!0)),x[p]={valType:\"boolean\",dflt:!0,editType:\"calc\",impliedEdits:v},x[d]={valType:\"number\",dflt:null,editType:f||\"plot\",impliedEdits:y},x[g]={valType:\"number\",dflt:null,editType:f||\"plot\",impliedEdits:y},x[m]={valType:\"number\",dflt:null,editType:\"calc\",impliedEdits:v},x.colorscale={valType:\"colorscale\",editType:\"calc\",dflt:u,impliedEdits:{autocolorscale:!1}},x.autocolorscale={valType:\"boolean\",dflt:!1!==e.autoColorDflt,editType:\"calc\",impliedEdits:{colorscale:void 0}},x.reversescale={valType:\"boolean\",dflt:!1,editType:\"plot\"},l||(x.showscale={valType:\"boolean\",dflt:c,editType:\"calc\"},x.colorbar=n),e.noColorAxis||(x.coloraxis={valType:\"subplotid\",regex:i(\"coloraxis\"),dflt:null,editType:\"calc\"}),x}},{\"../../lib/regex\":520,\"../../lib/sort_object_keys\":526,\"../colorbar/attributes\":367,\"./scales.js\":381}],374:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../lib\"),a=t(\"./helpers\").extractOpts;e.exports=function(t,e,r){var o,s=t._fullLayout,l=r.vals,c=r.containerStr,u=c?i.nestedProperty(e,c).get():e,f=a(u),h=!1!==f.auto,p=f.min,d=f.max,g=f.mid,m=function(){return i.aggNums(Math.min,null,l)},v=function(){return i.aggNums(Math.max,null,l)};(void 0===p?p=m():h&&(p=u._colorAx&&n(p)?Math.min(p,m()):m()),void 0===d?d=v():h&&(d=u._colorAx&&n(d)?Math.max(d,v()):v()),h&&void 0!==g&&(d-g>g-p?p=g-(d-g):d-g=0?s.colorscale.sequential:s.colorscale.sequentialminus,f._sync(\"colorscale\",o))}},{\"../../lib\":503,\"./helpers\":377,\"fast-isnumeric\":190}],375:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./helpers\").hasColorscale,a=t(\"./helpers\").extractOpts;e.exports=function(t,e){function r(t,e){var r=t[\"_\"+e];void 0!==r&&(t[e]=r)}function o(t,i){var o=i.container?n.nestedProperty(t,i.container).get():t;if(o)if(o.coloraxis)o._colorAx=e[o.coloraxis];else{var s=a(o),l=s.auto;(l||void 0===s.min)&&r(o,i.min),(l||void 0===s.max)&&r(o,i.max),s.autocolorscale&&r(o,\"colorscale\")}}for(var s=0;s=0;n--,i++){var a=t[n];r[i]=[1-a[0],a[1]]}return r}function d(t,e){e=e||{};for(var r=t.domain,o=t.range,l=o.length,c=new Array(l),u=0;u4/3-s?o:s}},{}],383:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=[[\"sw-resize\",\"s-resize\",\"se-resize\"],[\"w-resize\",\"move\",\"e-resize\"],[\"nw-resize\",\"n-resize\",\"ne-resize\"]];e.exports=function(t,e,r,a){return t=\"left\"===r?0:\"center\"===r?1:\"right\"===r?2:n.constrain(Math.floor(3*t),0,2),e=\"bottom\"===a?0:\"middle\"===a?1:\"top\"===a?2:n.constrain(Math.floor(3*e),0,2),i[e][t]}},{\"../../lib\":503}],384:[function(t,e,r){\"use strict\";r.selectMode=function(t){return\"lasso\"===t||\"select\"===t},r.drawMode=function(t){return\"drawclosedpath\"===t||\"drawopenpath\"===t||\"drawline\"===t||\"drawrect\"===t||\"drawcircle\"===t},r.openMode=function(t){return\"drawline\"===t||\"drawopenpath\"===t},r.rectMode=function(t){return\"select\"===t||\"drawline\"===t||\"drawrect\"===t||\"drawcircle\"===t},r.freeMode=function(t){return\"lasso\"===t||\"drawclosedpath\"===t||\"drawopenpath\"===t},r.selectingOrDrawing=function(t){return r.freeMode(t)||r.rectMode(t)}},{}],385:[function(t,e,r){\"use strict\";var n=t(\"mouse-event-offset\"),i=t(\"has-hover\"),a=t(\"has-passive-events\"),o=t(\"../../lib\").removeElement,s=t(\"../../plots/cartesian/constants\"),l=e.exports={};l.align=t(\"./align\"),l.getCursor=t(\"./cursor\");var c=t(\"./unhover\");function u(){var t=document.createElement(\"div\");t.className=\"dragcover\";var e=t.style;return e.position=\"fixed\",e.left=0,e.right=0,e.top=0,e.bottom=0,e.zIndex=999999999,e.background=\"none\",document.body.appendChild(t),t}function f(t){return n(t.changedTouches?t.changedTouches[0]:t,document.body)}l.unhover=c.wrapped,l.unhoverRaw=c.raw,l.init=function(t){var e,r,n,c,h,p,d,g,m=t.gd,v=1,y=m._context.doubleClickDelay,x=t.element;m._mouseDownTime||(m._mouseDownTime=0),x.style.pointerEvents=\"all\",x.onmousedown=_,a?(x._ontouchstart&&x.removeEventListener(\"touchstart\",x._ontouchstart),x._ontouchstart=_,x.addEventListener(\"touchstart\",_,{passive:!1})):x.ontouchstart=_;var b=t.clampFn||function(t,e,r){return Math.abs(t)y&&(v=Math.max(v-1,1)),m._dragged)t.doneFn&&t.doneFn();else if(t.clickFn&&t.clickFn(v,p),!g){var r;try{r=new MouseEvent(\"click\",e)}catch(t){var n=f(e);(r=document.createEvent(\"MouseEvents\")).initMouseEvent(\"click\",e.bubbles,e.cancelable,e.view,e.detail,e.screenX,e.screenY,n[0],n[1],e.ctrlKey,e.altKey,e.shiftKey,e.metaKey,e.button,e.relatedTarget)}d.dispatchEvent(r)}m._dragging=!1,m._dragged=!1}else m._dragged=!1}},l.coverSlip=u},{\"../../lib\":503,\"../../plots/cartesian/constants\":561,\"./align\":382,\"./cursor\":383,\"./unhover\":386,\"has-hover\":228,\"has-passive-events\":229,\"mouse-event-offset\":242}],386:[function(t,e,r){\"use strict\";var n=t(\"../../lib/events\"),i=t(\"../../lib/throttle\"),a=t(\"../../lib/dom\").getGraphDiv,o=t(\"../fx/constants\"),s=e.exports={};s.wrapped=function(t,e,r){(t=a(t))._fullLayout&&i.clear(t._fullLayout._uid+o.HOVERID),s.raw(t,e,r)},s.raw=function(t,e){var r=t._fullLayout,i=t._hoverdata;e||(e={}),e.target&&!t._dragged&&!1===n.triggerHandler(t,\"plotly_beforehover\",e)||(r._hoverlayer.selectAll(\"g\").remove(),r._hoverlayer.selectAll(\"line\").remove(),r._hoverlayer.selectAll(\"circle\").remove(),t._hoverdata=void 0,e.target&&i&&t.emit(\"plotly_unhover\",{event:e,points:i}))}},{\"../../lib/dom\":491,\"../../lib/events\":492,\"../../lib/throttle\":530,\"../fx/constants\":400}],387:[function(t,e,r){\"use strict\";r.dash={valType:\"string\",values:[\"solid\",\"dot\",\"dash\",\"longdash\",\"dashdot\",\"longdashdot\"],dflt:\"solid\",editType:\"style\"},r.pattern={shape:{valType:\"enumerated\",values:[\"\",\"/\",\"\\\\\",\"x\",\"-\",\"|\",\"+\",\".\"],dflt:\"\",arrayOk:!0,editType:\"style\"},fillmode:{valType:\"enumerated\",values:[\"replace\",\"overlay\"],dflt:\"replace\",editType:\"style\"},bgcolor:{valType:\"color\",arrayOk:!0,editType:\"style\"},fgcolor:{valType:\"color\",arrayOk:!0,editType:\"style\"},fgopacity:{valType:\"number\",editType:\"style\",min:0,max:1},size:{valType:\"number\",min:0,dflt:8,arrayOk:!0,editType:\"style\"},solidity:{valType:\"number\",min:0,max:1,dflt:.3,arrayOk:!0,editType:\"style\"},editType:\"style\"}},{}],388:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=i.numberFormat,o=t(\"fast-isnumeric\"),s=t(\"tinycolor2\"),l=t(\"../../registry\"),c=t(\"../color\"),u=t(\"../colorscale\"),f=i.strTranslate,h=t(\"../../lib/svg_text_utils\"),p=t(\"../../constants/xmlns_namespaces\"),d=t(\"../../constants/alignment\").LINE_SPACING,g=t(\"../../constants/interactions\").DESELECTDIM,m=t(\"../../traces/scatter/subtypes\"),v=t(\"../../traces/scatter/make_bubble_size_func\"),y=t(\"../../components/fx/helpers\").appendArrayPointValue,x=e.exports={};x.font=function(t,e,r,n){i.isPlainObject(e)&&(n=e.color,r=e.size,e=e.family),e&&t.style(\"font-family\",e),r+1&&t.style(\"font-size\",r+\"px\"),n&&t.call(c.fill,n)},x.setPosition=function(t,e,r){t.attr(\"x\",e).attr(\"y\",r)},x.setSize=function(t,e,r){t.attr(\"width\",e).attr(\"height\",r)},x.setRect=function(t,e,r,n,i){t.call(x.setPosition,e,r).call(x.setSize,n,i)},x.translatePoint=function(t,e,r,n){var i=r.c2p(t.x),a=n.c2p(t.y);return!!(o(i)&&o(a)&&e.node())&&(\"text\"===e.node().nodeName?e.attr(\"x\",i).attr(\"y\",a):e.attr(\"transform\",f(i,a)),!0)},x.translatePoints=function(t,e,r){t.each((function(t){var i=n.select(this);x.translatePoint(t,i,e,r)}))},x.hideOutsideRangePoint=function(t,e,r,n,i,a){e.attr(\"display\",r.isPtWithinRange(t,i)&&n.isPtWithinRange(t,a)?null:\"none\")},x.hideOutsideRangePoints=function(t,e){if(e._hasClipOnAxisFalse){var r=e.xaxis,i=e.yaxis;t.each((function(e){var a=e[0].trace,o=a.xcalendar,s=a.ycalendar,c=l.traceIs(a,\"bar-like\")?\".bartext\":\".point,.textpoint\";t.selectAll(c).each((function(t){x.hideOutsideRangePoint(t,n.select(this),r,i,o,s)}))}))}},x.crispRound=function(t,e,r){return e&&o(e)?t._context.staticPlot?e:e<1?1:Math.round(e):r||0},x.singleLineStyle=function(t,e,r,n,i){e.style(\"fill\",\"none\");var a=(((t||[])[0]||{}).trace||{}).line||{},o=r||a.width||0,s=i||a.dash||\"\";c.stroke(e,n||a.color),x.dashLine(e,s,o)},x.lineGroupStyle=function(t,e,r,i){t.style(\"fill\",\"none\").each((function(t){var a=(((t||[])[0]||{}).trace||{}).line||{},o=e||a.width||0,s=i||a.dash||\"\";n.select(this).call(c.stroke,r||a.color).call(x.dashLine,s,o)}))},x.dashLine=function(t,e,r){r=+r||0,e=x.dashStyle(e,r),t.style({\"stroke-dasharray\":e,\"stroke-width\":r+\"px\"})},x.dashStyle=function(t,e){e=+e||1;var r=Math.max(e,3);return\"solid\"===t?t=\"\":\"dot\"===t?t=r+\"px,\"+r+\"px\":\"dash\"===t?t=3*r+\"px,\"+3*r+\"px\":\"longdash\"===t?t=5*r+\"px,\"+5*r+\"px\":\"dashdot\"===t?t=3*r+\"px,\"+r+\"px,\"+r+\"px,\"+r+\"px\":\"longdashdot\"===t&&(t=5*r+\"px,\"+2*r+\"px,\"+r+\"px,\"+2*r+\"px\"),t},x.singleFillStyle=function(t){var e=(((n.select(t.node()).data()[0]||[])[0]||{}).trace||{}).fillcolor;e&&t.call(c.fill,e)},x.fillGroupStyle=function(t){t.style(\"stroke-width\",0).each((function(t){var e=n.select(this);t[0].trace&&e.call(c.fill,t[0].trace.fillcolor)}))};var b=t(\"./symbol_defs\");x.symbolNames=[],x.symbolFuncs=[],x.symbolNeedLines={},x.symbolNoDot={},x.symbolNoFill={},x.symbolList=[],Object.keys(b).forEach((function(t){var e=b[t],r=e.n;x.symbolList.push(r,String(r),t,r+100,String(r+100),t+\"-open\"),x.symbolNames[r]=t,x.symbolFuncs[r]=e.f,e.needLine&&(x.symbolNeedLines[r]=!0),e.noDot?x.symbolNoDot[r]=!0:x.symbolList.push(r+200,String(r+200),t+\"-dot\",r+300,String(r+300),t+\"-open-dot\"),e.noFill&&(x.symbolNoFill[r]=!0)}));var _=x.symbolNames.length;function w(t,e){var r=t%100;return x.symbolFuncs[r](e)+(t>=200?\"M0,0.5L0.5,0L0,-0.5L-0.5,0Z\":\"\")}x.symbolNumber=function(t){if(o(t))t=+t;else if(\"string\"==typeof t){var e=0;t.indexOf(\"-open\")>0&&(e=100,t=t.replace(\"-open\",\"\")),t.indexOf(\"-dot\")>0&&(e+=200,t=t.replace(\"-dot\",\"\")),(t=x.symbolNames.indexOf(t))>=0&&(t+=e)}return t%100>=_||t>=400?0:Math.floor(Math.max(t,0))};var T={x1:1,x2:0,y1:0,y2:0},k={x1:0,x2:0,y1:1,y2:0},A=a(\"~f\"),M={radial:{node:\"radialGradient\"},radialreversed:{node:\"radialGradient\",reversed:!0},horizontal:{node:\"linearGradient\",attrs:T},horizontalreversed:{node:\"linearGradient\",attrs:T,reversed:!0},vertical:{node:\"linearGradient\",attrs:k},verticalreversed:{node:\"linearGradient\",attrs:k,reversed:!0}};x.gradient=function(t,e,r,a,o,l){for(var u=o.length,f=M[a],h=new Array(u),p=0;p\"+v(t);d._gradientUrlQueryParts[y]=1},x.pattern=function(t,e,r,a,o,s,l,u,f,h,p,d){var g=\"legend\"===e;u&&(\"overlay\"===f?(h=u,p=c.contrast(h)):(h=void 0,p=u));var m,v,y,x,b,_,w,T,k,A,M,S=r._fullLayout,E=\"p\"+S._uid+\"-\"+a,L={};switch(o){case\"/\":m=s*Math.sqrt(2),v=s*Math.sqrt(2),_=\"path\",L={d:y=\"M-\"+m/4+\",\"+v/4+\"l\"+m/2+\",-\"+v/2+\"M0,\"+v+\"L\"+m+\",0M\"+m/4*3+\",\"+v/4*5+\"l\"+m/2+\",-\"+v/2,opacity:d,stroke:p,\"stroke-width\":(x=l*s)+\"px\"};break;case\"\\\\\":m=s*Math.sqrt(2),v=s*Math.sqrt(2),_=\"path\",L={d:y=\"M\"+m/4*3+\",-\"+v/4+\"l\"+m/2+\",\"+v/2+\"M0,0L\"+m+\",\"+v+\"M-\"+m/4+\",\"+v/4*3+\"l\"+m/2+\",\"+v/2,opacity:d,stroke:p,\"stroke-width\":(x=l*s)+\"px\"};break;case\"x\":m=s*Math.sqrt(2),v=s*Math.sqrt(2),y=\"M-\"+m/4+\",\"+v/4+\"l\"+m/2+\",-\"+v/2+\"M0,\"+v+\"L\"+m+\",0M\"+m/4*3+\",\"+v/4*5+\"l\"+m/2+\",-\"+v/2+\"M\"+m/4*3+\",-\"+v/4+\"l\"+m/2+\",\"+v/2+\"M0,0L\"+m+\",\"+v+\"M-\"+m/4+\",\"+v/4*3+\"l\"+m/2+\",\"+v/2,x=s-s*Math.sqrt(1-l),_=\"path\",L={d:y,opacity:d,stroke:p,\"stroke-width\":x+\"px\"};break;case\"|\":_=\"path\",_=\"path\",L={d:y=\"M\"+(m=s)/2+\",0L\"+m/2+\",\"+(v=s),opacity:d,stroke:p,\"stroke-width\":(x=l*s)+\"px\"};break;case\"-\":_=\"path\",_=\"path\",L={d:y=\"M0,\"+(v=s)/2+\"L\"+(m=s)+\",\"+v/2,opacity:d,stroke:p,\"stroke-width\":(x=l*s)+\"px\"};break;case\"+\":_=\"path\",y=\"M\"+(m=s)/2+\",0L\"+m/2+\",\"+(v=s)+\"M0,\"+v/2+\"L\"+m+\",\"+v/2,x=s-s*Math.sqrt(1-l),_=\"path\",L={d:y,opacity:d,stroke:p,\"stroke-width\":x+\"px\"};break;case\".\":m=s,v=s,l.pattern_filled\";S._patternUrlQueryParts[I]=1},x.initGradients=function(t){var e=t._fullLayout;i.ensureSingle(e._defs,\"g\",\"gradients\").selectAll(\"linearGradient,radialGradient\").remove(),e._gradientUrlQueryParts={}},x.initPatterns=function(t){var e=t._fullLayout;i.ensureSingle(e._defs,\"g\",\"patterns\").selectAll(\"pattern\").remove(),e._patternUrlQueryParts={}},x.getPatternAttr=function(t,e,r){return t&&i.isArrayOrTypedArray(t)?e=100,e.attr(\"d\",w(u,l))}var f,h,p,d=!1;if(t.so)p=s.outlierwidth,h=s.outliercolor,f=o.outliercolor;else{var g=(s||{}).width;p=(t.mlw+1||g+1||(t.trace?(t.trace.marker.line||{}).width:0)+1)-1||0,h=\"mlc\"in t?t.mlcc=n.lineScale(t.mlc):i.isArrayOrTypedArray(s.color)?c.defaultLine:s.color,i.isArrayOrTypedArray(o.color)&&(f=c.defaultLine,d=!0),f=\"mc\"in t?t.mcc=n.markerScale(t.mc):o.color||\"rgba(0,0,0,0)\",n.selectedColorFn&&(f=n.selectedColorFn(t))}if(t.om)e.call(c.stroke,f).style({\"stroke-width\":(p||1)+\"px\",fill:\"none\"});else{e.style(\"stroke-width\",(t.isBlank?0:p)+\"px\");var m=o.gradient,v=t.mgt;v?d=!0:v=m&&m.type,i.isArrayOrTypedArray(v)&&(v=v[0],M[v]||(v=0));var y=o.pattern,b=y&&x.getPatternAttr(y.shape,t.i,\"\");if(v&&\"none\"!==v){var _=t.mgc;_?d=!0:_=m.color;var T=r.uid;d&&(T+=\"-\"+t.i),x.gradient(e,a,T,v,[[0,_],[1,f]],\"fill\")}else if(b){var k=x.getPatternAttr(y.bgcolor,t.i,null),A=x.getPatternAttr(y.fgcolor,t.i,null),S=y.fgopacity,E=x.getPatternAttr(y.size,t.i,8),L=x.getPatternAttr(y.solidity,t.i,.3),C=t.mcc||i.isArrayOrTypedArray(y.shape)||i.isArrayOrTypedArray(y.bgcolor)||i.isArrayOrTypedArray(y.size)||i.isArrayOrTypedArray(y.solidity),P=r.uid;C&&(P+=\"-\"+t.i),x.pattern(e,\"point\",a,P,b,E,L,t.mcc,y.fillmode,k,A,S)}else c.fill(e,f);p&&c.stroke(e,h)}},x.makePointStyleFns=function(t){var e={},r=t.marker;return e.markerScale=x.tryColorscale(r,\"\"),e.lineScale=x.tryColorscale(r,\"line\"),l.traceIs(t,\"symbols\")&&(e.ms2mrc=m.isBubble(t)?v(t):function(){return(r.size||6)/2}),t.selectedpoints&&i.extendFlat(e,x.makeSelectedPointStyleFns(t)),e},x.makeSelectedPointStyleFns=function(t){var e={},r=t.selected||{},n=t.unselected||{},a=t.marker||{},o=r.marker||{},s=n.marker||{},c=a.opacity,u=o.opacity,f=s.opacity,h=void 0!==u,p=void 0!==f;(i.isArrayOrTypedArray(c)||h||p)&&(e.selectedOpacityFn=function(t){var e=void 0===t.mo?a.opacity:t.mo;return t.selected?h?u:e:p?f:g*e});var d=a.color,m=o.color,v=s.color;(m||v)&&(e.selectedColorFn=function(t){var e=t.mcc||d;return t.selected?m||e:v||e});var y=a.size,x=o.size,b=s.size,_=void 0!==x,w=void 0!==b;return l.traceIs(t,\"symbols\")&&(_||w)&&(e.selectedSizeFn=function(t){var e=t.mrc||y/2;return t.selected?_?x/2:e:w?b/2:e}),e},x.makeSelectedTextStyleFns=function(t){var e={},r=t.selected||{},n=t.unselected||{},i=t.textfont||{},a=r.textfont||{},o=n.textfont||{},s=i.color,l=a.color,u=o.color;return e.selectedTextColorFn=function(t){var e=t.tc||s;return t.selected?l||e:u||(l?e:c.addOpacity(e,g))},e},x.selectedPointStyle=function(t,e){if(t.size()&&e.selectedpoints){var r=x.makeSelectedPointStyleFns(e),i=e.marker||{},a=[];r.selectedOpacityFn&&a.push((function(t,e){t.style(\"opacity\",r.selectedOpacityFn(e))})),r.selectedColorFn&&a.push((function(t,e){c.fill(t,r.selectedColorFn(e))})),r.selectedSizeFn&&a.push((function(t,e){var n=e.mx||i.symbol||0,a=r.selectedSizeFn(e);t.attr(\"d\",w(x.symbolNumber(n),a)),e.mrc2=a})),a.length&&t.each((function(t){for(var e=n.select(this),r=0;r0?r:0}x.textPointStyle=function(t,e,r){if(t.size()){var a;if(e.selectedpoints){var o=x.makeSelectedTextStyleFns(e);a=o.selectedTextColorFn}var s=e.texttemplate,l=r._fullLayout;t.each((function(t){var o=n.select(this),c=s?i.extractOption(t,e,\"txt\",\"texttemplate\"):i.extractOption(t,e,\"tx\",\"text\");if(c||0===c){if(s){var u=e._module.formatLabels,f=u?u(t,e,l):{},p={};y(p,e,t.i);var d=e._meta||{};c=i.texttemplateString(c,f,l._d3locale,p,t,d)}var g=t.tp||e.textposition,m=L(t,e),v=a?a(t):t.tc||e.textfont.color;o.call(x.font,t.tf||e.textfont.family,m,v).text(c).call(h.convertToTspans,r).call(E,g,m,t.mrc)}else o.remove()}))}},x.selectedTextStyle=function(t,e){if(t.size()&&e.selectedpoints){var r=x.makeSelectedTextStyleFns(e);t.each((function(t){var i=n.select(this),a=r.selectedTextColorFn(t),o=t.tp||e.textposition,s=L(t,e);c.fill(i,a);var u=l.traceIs(e,\"bar-like\");E(i,o,s,t.mrc2||t.mrc,u)}))}};function C(t,e,r,i){var a=t[0]-e[0],o=t[1]-e[1],s=r[0]-e[0],l=r[1]-e[1],c=Math.pow(a*a+o*o,.25),u=Math.pow(s*s+l*l,.25),f=(u*u*a-c*c*s)*i,h=(u*u*o-c*c*l)*i,p=3*u*(c+u),d=3*c*(c+u);return[[n.round(e[0]+(p&&f/p),2),n.round(e[1]+(p&&h/p),2)],[n.round(e[0]-(d&&f/d),2),n.round(e[1]-(d&&h/d),2)]]}x.smoothopen=function(t,e){if(t.length<3)return\"M\"+t.join(\"L\");var r,n=\"M\"+t[0],i=[];for(r=1;r=1e4&&(x.savedBBoxes={},O=0),r&&(x.savedBBoxes[r]=m),O++,i.extendFlat({},m)},x.setClipUrl=function(t,e,r){t.attr(\"clip-path\",D(e,r))},x.getTranslate=function(t){var e=(t[t.attr?\"attr\":\"getAttribute\"](\"transform\")||\"\").replace(/.*\\btranslate\\((-?\\d*\\.?\\d*)[^-\\d]*(-?\\d*\\.?\\d*)[^\\d].*/,(function(t,e,r){return[e,r].join(\" \")})).split(\" \");return{x:+e[0]||0,y:+e[1]||0}},x.setTranslate=function(t,e,r){var n=t.attr?\"attr\":\"getAttribute\",i=t.attr?\"attr\":\"setAttribute\",a=t[n](\"transform\")||\"\";return e=e||0,r=r||0,a=a.replace(/(\\btranslate\\(.*?\\);?)/,\"\").trim(),a=(a+=f(e,r)).trim(),t[i](\"transform\",a),a},x.getScale=function(t){var e=(t[t.attr?\"attr\":\"getAttribute\"](\"transform\")||\"\").replace(/.*\\bscale\\((\\d*\\.?\\d*)[^\\d]*(\\d*\\.?\\d*)[^\\d].*/,(function(t,e,r){return[e,r].join(\" \")})).split(\" \");return{x:+e[0]||1,y:+e[1]||1}},x.setScale=function(t,e,r){var n=t.attr?\"attr\":\"getAttribute\",i=t.attr?\"attr\":\"setAttribute\",a=t[n](\"transform\")||\"\";return e=e||1,r=r||1,a=a.replace(/(\\bscale\\(.*?\\);?)/,\"\").trim(),a=(a+=\"scale(\"+e+\",\"+r+\")\").trim(),t[i](\"transform\",a),a};var R=/\\s*sc.*/;x.setPointGroupScale=function(t,e,r){if(e=e||1,r=r||1,t){var n=1===e&&1===r?\"\":\"scale(\"+e+\",\"+r+\")\";t.each((function(){var t=(this.getAttribute(\"transform\")||\"\").replace(R,\"\");t=(t+=n).trim(),this.setAttribute(\"transform\",t)}))}};var F=/translate\\([^)]*\\)\\s*$/;x.setTextPointsScale=function(t,e,r){t&&t.each((function(){var t,i=n.select(this),a=i.select(\"text\");if(a.node()){var o=parseFloat(a.attr(\"x\")||0),s=parseFloat(a.attr(\"y\")||0),l=(i.attr(\"transform\")||\"\").match(F);t=1===e&&1===r?[]:[f(o,s),\"scale(\"+e+\",\"+r+\")\",f(-o,-s)],l&&t.push(l),i.attr(\"transform\",t.join(\"\"))}}))}},{\"../../components/fx/helpers\":402,\"../../constants/alignment\":471,\"../../constants/interactions\":478,\"../../constants/xmlns_namespaces\":480,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../../registry\":638,\"../../traces/scatter/make_bubble_size_func\":943,\"../../traces/scatter/subtypes\":951,\"../color\":366,\"../colorscale\":378,\"./symbol_defs\":389,\"@plotly/d3\":58,\"fast-isnumeric\":190,tinycolor2:312}],389:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\");e.exports={circle:{n:0,f:function(t){var e=n.round(t,2);return\"M\"+e+\",0A\"+e+\",\"+e+\" 0 1,1 0,-\"+e+\"A\"+e+\",\"+e+\" 0 0,1 \"+e+\",0Z\"}},square:{n:1,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"H-\"+e+\"V-\"+e+\"H\"+e+\"Z\"}},diamond:{n:2,f:function(t){var e=n.round(1.3*t,2);return\"M\"+e+\",0L0,\"+e+\"L-\"+e+\",0L0,-\"+e+\"Z\"}},cross:{n:3,f:function(t){var e=n.round(.4*t,2),r=n.round(1.2*t,2);return\"M\"+r+\",\"+e+\"H\"+e+\"V\"+r+\"H-\"+e+\"V\"+e+\"H-\"+r+\"V-\"+e+\"H-\"+e+\"V-\"+r+\"H\"+e+\"V-\"+e+\"H\"+r+\"Z\"}},x:{n:4,f:function(t){var e=n.round(.8*t/Math.sqrt(2),2),r=\"l\"+e+\",\"+e,i=\"l\"+e+\",-\"+e,a=\"l-\"+e+\",-\"+e,o=\"l-\"+e+\",\"+e;return\"M0,\"+e+r+i+a+i+a+o+a+o+r+o+r+\"Z\"}},\"triangle-up\":{n:5,f:function(t){var e=n.round(2*t/Math.sqrt(3),2);return\"M-\"+e+\",\"+n.round(t/2,2)+\"H\"+e+\"L0,-\"+n.round(t,2)+\"Z\"}},\"triangle-down\":{n:6,f:function(t){var e=n.round(2*t/Math.sqrt(3),2);return\"M-\"+e+\",-\"+n.round(t/2,2)+\"H\"+e+\"L0,\"+n.round(t,2)+\"Z\"}},\"triangle-left\":{n:7,f:function(t){var e=n.round(2*t/Math.sqrt(3),2);return\"M\"+n.round(t/2,2)+\",-\"+e+\"V\"+e+\"L-\"+n.round(t,2)+\",0Z\"}},\"triangle-right\":{n:8,f:function(t){var e=n.round(2*t/Math.sqrt(3),2);return\"M-\"+n.round(t/2,2)+\",-\"+e+\"V\"+e+\"L\"+n.round(t,2)+\",0Z\"}},\"triangle-ne\":{n:9,f:function(t){var e=n.round(.6*t,2),r=n.round(1.2*t,2);return\"M-\"+r+\",-\"+e+\"H\"+e+\"V\"+r+\"Z\"}},\"triangle-se\":{n:10,f:function(t){var e=n.round(.6*t,2),r=n.round(1.2*t,2);return\"M\"+e+\",-\"+r+\"V\"+e+\"H-\"+r+\"Z\"}},\"triangle-sw\":{n:11,f:function(t){var e=n.round(.6*t,2),r=n.round(1.2*t,2);return\"M\"+r+\",\"+e+\"H-\"+e+\"V-\"+r+\"Z\"}},\"triangle-nw\":{n:12,f:function(t){var e=n.round(.6*t,2),r=n.round(1.2*t,2);return\"M-\"+e+\",\"+r+\"V-\"+e+\"H\"+r+\"Z\"}},pentagon:{n:13,f:function(t){var e=n.round(.951*t,2),r=n.round(.588*t,2),i=n.round(-t,2),a=n.round(-.309*t,2);return\"M\"+e+\",\"+a+\"L\"+r+\",\"+n.round(.809*t,2)+\"H-\"+r+\"L-\"+e+\",\"+a+\"L0,\"+i+\"Z\"}},hexagon:{n:14,f:function(t){var e=n.round(t,2),r=n.round(t/2,2),i=n.round(t*Math.sqrt(3)/2,2);return\"M\"+i+\",-\"+r+\"V\"+r+\"L0,\"+e+\"L-\"+i+\",\"+r+\"V-\"+r+\"L0,-\"+e+\"Z\"}},hexagon2:{n:15,f:function(t){var e=n.round(t,2),r=n.round(t/2,2),i=n.round(t*Math.sqrt(3)/2,2);return\"M-\"+r+\",\"+i+\"H\"+r+\"L\"+e+\",0L\"+r+\",-\"+i+\"H-\"+r+\"L-\"+e+\",0Z\"}},octagon:{n:16,f:function(t){var e=n.round(.924*t,2),r=n.round(.383*t,2);return\"M-\"+r+\",-\"+e+\"H\"+r+\"L\"+e+\",-\"+r+\"V\"+r+\"L\"+r+\",\"+e+\"H-\"+r+\"L-\"+e+\",\"+r+\"V-\"+r+\"Z\"}},star:{n:17,f:function(t){var e=1.4*t,r=n.round(.225*e,2),i=n.round(.951*e,2),a=n.round(.363*e,2),o=n.round(.588*e,2),s=n.round(-e,2),l=n.round(-.309*e,2),c=n.round(.118*e,2),u=n.round(.809*e,2);return\"M\"+r+\",\"+l+\"H\"+i+\"L\"+a+\",\"+c+\"L\"+o+\",\"+u+\"L0,\"+n.round(.382*e,2)+\"L-\"+o+\",\"+u+\"L-\"+a+\",\"+c+\"L-\"+i+\",\"+l+\"H-\"+r+\"L0,\"+s+\"Z\"}},hexagram:{n:18,f:function(t){var e=n.round(.66*t,2),r=n.round(.38*t,2),i=n.round(.76*t,2);return\"M-\"+i+\",0l-\"+r+\",-\"+e+\"h\"+i+\"l\"+r+\",-\"+e+\"l\"+r+\",\"+e+\"h\"+i+\"l-\"+r+\",\"+e+\"l\"+r+\",\"+e+\"h-\"+i+\"l-\"+r+\",\"+e+\"l-\"+r+\",-\"+e+\"h-\"+i+\"Z\"}},\"star-triangle-up\":{n:19,f:function(t){var e=n.round(t*Math.sqrt(3)*.8,2),r=n.round(.8*t,2),i=n.round(1.6*t,2),a=n.round(4*t,2),o=\"A \"+a+\",\"+a+\" 0 0 1 \";return\"M-\"+e+\",\"+r+o+e+\",\"+r+o+\"0,-\"+i+o+\"-\"+e+\",\"+r+\"Z\"}},\"star-triangle-down\":{n:20,f:function(t){var e=n.round(t*Math.sqrt(3)*.8,2),r=n.round(.8*t,2),i=n.round(1.6*t,2),a=n.round(4*t,2),o=\"A \"+a+\",\"+a+\" 0 0 1 \";return\"M\"+e+\",-\"+r+o+\"-\"+e+\",-\"+r+o+\"0,\"+i+o+e+\",-\"+r+\"Z\"}},\"star-square\":{n:21,f:function(t){var e=n.round(1.1*t,2),r=n.round(2*t,2),i=\"A \"+r+\",\"+r+\" 0 0 1 \";return\"M-\"+e+\",-\"+e+i+\"-\"+e+\",\"+e+i+e+\",\"+e+i+e+\",-\"+e+i+\"-\"+e+\",-\"+e+\"Z\"}},\"star-diamond\":{n:22,f:function(t){var e=n.round(1.4*t,2),r=n.round(1.9*t,2),i=\"A \"+r+\",\"+r+\" 0 0 1 \";return\"M-\"+e+\",0\"+i+\"0,\"+e+i+e+\",0\"+i+\"0,-\"+e+i+\"-\"+e+\",0Z\"}},\"diamond-tall\":{n:23,f:function(t){var e=n.round(.7*t,2),r=n.round(1.4*t,2);return\"M0,\"+r+\"L\"+e+\",0L0,-\"+r+\"L-\"+e+\",0Z\"}},\"diamond-wide\":{n:24,f:function(t){var e=n.round(1.4*t,2),r=n.round(.7*t,2);return\"M0,\"+r+\"L\"+e+\",0L0,-\"+r+\"L-\"+e+\",0Z\"}},hourglass:{n:25,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"H-\"+e+\"L\"+e+\",-\"+e+\"H-\"+e+\"Z\"},noDot:!0},bowtie:{n:26,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"V-\"+e+\"L-\"+e+\",\"+e+\"V-\"+e+\"Z\"},noDot:!0},\"circle-cross\":{n:27,f:function(t){var e=n.round(t,2);return\"M0,\"+e+\"V-\"+e+\"M\"+e+\",0H-\"+e+\"M\"+e+\",0A\"+e+\",\"+e+\" 0 1,1 0,-\"+e+\"A\"+e+\",\"+e+\" 0 0,1 \"+e+\",0Z\"},needLine:!0,noDot:!0},\"circle-x\":{n:28,f:function(t){var e=n.round(t,2),r=n.round(t/Math.sqrt(2),2);return\"M\"+r+\",\"+r+\"L-\"+r+\",-\"+r+\"M\"+r+\",-\"+r+\"L-\"+r+\",\"+r+\"M\"+e+\",0A\"+e+\",\"+e+\" 0 1,1 0,-\"+e+\"A\"+e+\",\"+e+\" 0 0,1 \"+e+\",0Z\"},needLine:!0,noDot:!0},\"square-cross\":{n:29,f:function(t){var e=n.round(t,2);return\"M0,\"+e+\"V-\"+e+\"M\"+e+\",0H-\"+e+\"M\"+e+\",\"+e+\"H-\"+e+\"V-\"+e+\"H\"+e+\"Z\"},needLine:!0,noDot:!0},\"square-x\":{n:30,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"L-\"+e+\",-\"+e+\"M\"+e+\",-\"+e+\"L-\"+e+\",\"+e+\"M\"+e+\",\"+e+\"H-\"+e+\"V-\"+e+\"H\"+e+\"Z\"},needLine:!0,noDot:!0},\"diamond-cross\":{n:31,f:function(t){var e=n.round(1.3*t,2);return\"M\"+e+\",0L0,\"+e+\"L-\"+e+\",0L0,-\"+e+\"ZM0,-\"+e+\"V\"+e+\"M-\"+e+\",0H\"+e},needLine:!0,noDot:!0},\"diamond-x\":{n:32,f:function(t){var e=n.round(1.3*t,2),r=n.round(.65*t,2);return\"M\"+e+\",0L0,\"+e+\"L-\"+e+\",0L0,-\"+e+\"ZM-\"+r+\",-\"+r+\"L\"+r+\",\"+r+\"M-\"+r+\",\"+r+\"L\"+r+\",-\"+r},needLine:!0,noDot:!0},\"cross-thin\":{n:33,f:function(t){var e=n.round(1.4*t,2);return\"M0,\"+e+\"V-\"+e+\"M\"+e+\",0H-\"+e},needLine:!0,noDot:!0,noFill:!0},\"x-thin\":{n:34,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"L-\"+e+\",-\"+e+\"M\"+e+\",-\"+e+\"L-\"+e+\",\"+e},needLine:!0,noDot:!0,noFill:!0},asterisk:{n:35,f:function(t){var e=n.round(1.2*t,2),r=n.round(.85*t,2);return\"M0,\"+e+\"V-\"+e+\"M\"+e+\",0H-\"+e+\"M\"+r+\",\"+r+\"L-\"+r+\",-\"+r+\"M\"+r+\",-\"+r+\"L-\"+r+\",\"+r},needLine:!0,noDot:!0,noFill:!0},hash:{n:36,f:function(t){var e=n.round(t/2,2),r=n.round(t,2);return\"M\"+e+\",\"+r+\"V-\"+r+\"m-\"+r+\",0V\"+r+\"M\"+r+\",\"+e+\"H-\"+r+\"m0,-\"+r+\"H\"+r},needLine:!0,noFill:!0},\"y-up\":{n:37,f:function(t){var e=n.round(1.2*t,2),r=n.round(1.6*t,2),i=n.round(.8*t,2);return\"M-\"+e+\",\"+i+\"L0,0M\"+e+\",\"+i+\"L0,0M0,-\"+r+\"L0,0\"},needLine:!0,noDot:!0,noFill:!0},\"y-down\":{n:38,f:function(t){var e=n.round(1.2*t,2),r=n.round(1.6*t,2),i=n.round(.8*t,2);return\"M-\"+e+\",-\"+i+\"L0,0M\"+e+\",-\"+i+\"L0,0M0,\"+r+\"L0,0\"},needLine:!0,noDot:!0,noFill:!0},\"y-left\":{n:39,f:function(t){var e=n.round(1.2*t,2),r=n.round(1.6*t,2),i=n.round(.8*t,2);return\"M\"+i+\",\"+e+\"L0,0M\"+i+\",-\"+e+\"L0,0M-\"+r+\",0L0,0\"},needLine:!0,noDot:!0,noFill:!0},\"y-right\":{n:40,f:function(t){var e=n.round(1.2*t,2),r=n.round(1.6*t,2),i=n.round(.8*t,2);return\"M-\"+i+\",\"+e+\"L0,0M-\"+i+\",-\"+e+\"L0,0M\"+r+\",0L0,0\"},needLine:!0,noDot:!0,noFill:!0},\"line-ew\":{n:41,f:function(t){var e=n.round(1.4*t,2);return\"M\"+e+\",0H-\"+e},needLine:!0,noDot:!0,noFill:!0},\"line-ns\":{n:42,f:function(t){var e=n.round(1.4*t,2);return\"M0,\"+e+\"V-\"+e},needLine:!0,noDot:!0,noFill:!0},\"line-ne\":{n:43,f:function(t){var e=n.round(t,2);return\"M\"+e+\",-\"+e+\"L-\"+e+\",\"+e},needLine:!0,noDot:!0,noFill:!0},\"line-nw\":{n:44,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"L-\"+e+\",-\"+e},needLine:!0,noDot:!0,noFill:!0},\"arrow-up\":{n:45,f:function(t){var e=n.round(t,2);return\"M0,0L-\"+e+\",\"+n.round(2*t,2)+\"H\"+e+\"Z\"},noDot:!0},\"arrow-down\":{n:46,f:function(t){var e=n.round(t,2);return\"M0,0L-\"+e+\",-\"+n.round(2*t,2)+\"H\"+e+\"Z\"},noDot:!0},\"arrow-left\":{n:47,f:function(t){var e=n.round(2*t,2),r=n.round(t,2);return\"M0,0L\"+e+\",-\"+r+\"V\"+r+\"Z\"},noDot:!0},\"arrow-right\":{n:48,f:function(t){var e=n.round(2*t,2),r=n.round(t,2);return\"M0,0L-\"+e+\",-\"+r+\"V\"+r+\"Z\"},noDot:!0},\"arrow-bar-up\":{n:49,f:function(t){var e=n.round(t,2);return\"M-\"+e+\",0H\"+e+\"M0,0L-\"+e+\",\"+n.round(2*t,2)+\"H\"+e+\"Z\"},needLine:!0,noDot:!0},\"arrow-bar-down\":{n:50,f:function(t){var e=n.round(t,2);return\"M-\"+e+\",0H\"+e+\"M0,0L-\"+e+\",-\"+n.round(2*t,2)+\"H\"+e+\"Z\"},needLine:!0,noDot:!0},\"arrow-bar-left\":{n:51,f:function(t){var e=n.round(2*t,2),r=n.round(t,2);return\"M0,-\"+r+\"V\"+r+\"M0,0L\"+e+\",-\"+r+\"V\"+r+\"Z\"},needLine:!0,noDot:!0},\"arrow-bar-right\":{n:52,f:function(t){var e=n.round(2*t,2),r=n.round(t,2);return\"M0,-\"+r+\"V\"+r+\"M0,0L-\"+e+\",-\"+r+\"V\"+r+\"Z\"},needLine:!0,noDot:!0}}},{\"@plotly/d3\":58}],390:[function(t,e,r){\"use strict\";e.exports={visible:{valType:\"boolean\",editType:\"calc\"},type:{valType:\"enumerated\",values:[\"percent\",\"constant\",\"sqrt\",\"data\"],editType:\"calc\"},symmetric:{valType:\"boolean\",editType:\"calc\"},array:{valType:\"data_array\",editType:\"calc\"},arrayminus:{valType:\"data_array\",editType:\"calc\"},value:{valType:\"number\",min:0,dflt:10,editType:\"calc\"},valueminus:{valType:\"number\",min:0,dflt:10,editType:\"calc\"},traceref:{valType:\"integer\",min:0,dflt:0,editType:\"style\"},tracerefminus:{valType:\"integer\",min:0,dflt:0,editType:\"style\"},copy_ystyle:{valType:\"boolean\",editType:\"plot\"},copy_zstyle:{valType:\"boolean\",editType:\"style\"},color:{valType:\"color\",editType:\"style\"},thickness:{valType:\"number\",min:0,dflt:2,editType:\"style\"},width:{valType:\"number\",min:0,editType:\"plot\"},editType:\"calc\",_deprecated:{opacity:{valType:\"number\",editType:\"style\"}}}},{}],391:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../registry\"),a=t(\"../../plots/cartesian/axes\"),o=t(\"../../lib\"),s=t(\"./compute_error\");function l(t,e,r,i){var l=e[\"error_\"+i]||{},c=[];if(l.visible&&-1!==[\"linear\",\"log\"].indexOf(r.type)){for(var u=s(l),f=0;f0;e.each((function(e){var f,h=e[0].trace,p=h.error_x||{},d=h.error_y||{};h.ids&&(f=function(t){return t.id});var g=o.hasMarkers(h)&&h.marker.maxdisplayed>0;d.visible||p.visible||(e=[]);var m=n.select(this).selectAll(\"g.errorbar\").data(e,f);if(m.exit().remove(),e.length){p.visible||m.selectAll(\"path.xerror\").remove(),d.visible||m.selectAll(\"path.yerror\").remove(),m.style(\"opacity\",1);var v=m.enter().append(\"g\").classed(\"errorbar\",!0);u&&v.style(\"opacity\",0).transition().duration(s.duration).style(\"opacity\",1),a.setClipUrl(m,r.layerClipId,t),m.each((function(t){var e=n.select(this),r=function(t,e,r){var n={x:e.c2p(t.x),y:r.c2p(t.y)};void 0!==t.yh&&(n.yh=r.c2p(t.yh),n.ys=r.c2p(t.ys),i(n.ys)||(n.noYS=!0,n.ys=r.c2p(t.ys,!0)));void 0!==t.xh&&(n.xh=e.c2p(t.xh),n.xs=e.c2p(t.xs),i(n.xs)||(n.noXS=!0,n.xs=e.c2p(t.xs,!0)));return n}(t,l,c);if(!g||t.vis){var a,o=e.select(\"path.yerror\");if(d.visible&&i(r.x)&&i(r.yh)&&i(r.ys)){var f=d.width;a=\"M\"+(r.x-f)+\",\"+r.yh+\"h\"+2*f+\"m-\"+f+\",0V\"+r.ys,r.noYS||(a+=\"m-\"+f+\",0h\"+2*f),!o.size()?o=e.append(\"path\").style(\"vector-effect\",\"non-scaling-stroke\").classed(\"yerror\",!0):u&&(o=o.transition().duration(s.duration).ease(s.easing)),o.attr(\"d\",a)}else o.remove();var h=e.select(\"path.xerror\");if(p.visible&&i(r.y)&&i(r.xh)&&i(r.xs)){var m=(p.copy_ystyle?d:p).width;a=\"M\"+r.xh+\",\"+(r.y-m)+\"v\"+2*m+\"m0,-\"+m+\"H\"+r.xs,r.noXS||(a+=\"m0,-\"+m+\"v\"+2*m),!h.size()?h=e.append(\"path\").style(\"vector-effect\",\"non-scaling-stroke\").classed(\"xerror\",!0):u&&(h=h.transition().duration(s.duration).ease(s.easing)),h.attr(\"d\",a)}else h.remove()}}))}}))}},{\"../../traces/scatter/subtypes\":951,\"../drawing\":388,\"@plotly/d3\":58,\"fast-isnumeric\":190}],396:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../color\");e.exports=function(t){t.each((function(t){var e=t[0].trace,r=e.error_y||{},a=e.error_x||{},o=n.select(this);o.selectAll(\"path.yerror\").style(\"stroke-width\",r.thickness+\"px\").call(i.stroke,r.color),a.copy_ystyle&&(a=r),o.selectAll(\"path.xerror\").style(\"stroke-width\",a.thickness+\"px\").call(i.stroke,a.color)}))}},{\"../color\":366,\"@plotly/d3\":58}],397:[function(t,e,r){\"use strict\";var n=t(\"../../plots/font_attributes\"),i=t(\"./layout_attributes\").hoverlabel,a=t(\"../../lib/extend\").extendFlat;e.exports={hoverlabel:{bgcolor:a({},i.bgcolor,{arrayOk:!0}),bordercolor:a({},i.bordercolor,{arrayOk:!0}),font:n({arrayOk:!0,editType:\"none\"}),align:a({},i.align,{arrayOk:!0}),namelength:a({},i.namelength,{arrayOk:!0}),editType:\"none\"}}},{\"../../lib/extend\":493,\"../../plots/font_attributes\":585,\"./layout_attributes\":407}],398:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../registry\");function a(t,e,r,i){i=i||n.identity,Array.isArray(t)&&(e[0][r]=i(t))}e.exports=function(t){var e=t.calcdata,r=t._fullLayout;function o(t){return function(e){return n.coerceHoverinfo({hoverinfo:e},{_module:t._module},r)}}for(var s=0;s=0&&r.index_[0]._length||ot<0||ot>w[0]._length)return d.unhoverRaw(t,e)}if(e.pointerX=at+_[0]._offset,e.pointerY=ot+w[0]._offset,V=\"xval\"in e?v.flat(l,e.xval):v.p2c(_,at),H=\"yval\"in e?v.flat(l,e.yval):v.p2c(w,ot),!i(V[0])||!i(H[0]))return o.warn(\"Fx.hover failed\",e,t),d.unhoverRaw(t,e)}var ct=1/0;function ut(t,r){for(G=0;Gtt&&(et.splice(0,tt),ct=et[0].distance),y&&0!==B&&0===et.length){$.distance=B,$.index=!1;var f=W._module.hoverPoints($,K,Q,\"closest\",{hoverLayer:u._hoverlayer});if(f&&(f=f.filter((function(t){return t.spikeDistance<=B}))),f&&f.length){var h,d=f.filter((function(t){return t.xa.showspikes&&\"hovered data\"!==t.xa.spikesnap}));if(d.length){var g=d[0];i(g.x0)&&i(g.y0)&&(h=ht(g),(!nt.vLinePoint||nt.vLinePoint.spikeDistance>h.spikeDistance)&&(nt.vLinePoint=h))}var m=f.filter((function(t){return t.ya.showspikes&&\"hovered data\"!==t.ya.spikesnap}));if(m.length){var x=m[0];i(x.x0)&&i(x.y0)&&(h=ht(x),(!nt.hLinePoint||nt.hLinePoint.spikeDistance>h.spikeDistance)&&(nt.hLinePoint=h))}}}}}function ft(t,e,r){for(var n,i=null,a=1/0,o=0;o0&&Math.abs(t.distance)Tt-1;Mt--)Ct(et[Mt]);et=St,mt()}var Pt=t._hoverdata,It=[],Ot=j(t),zt=U(t);for(q=0;q1||et.length>1)||\"closest\"===P&&it&&et.length>1,Wt=p.combine(u.plot_bgcolor||p.background,u.paper_bgcolor),Xt=I(et,{gd:t,hovermode:P,rotateLabels:Yt,bgColor:Wt,container:u._hoverlayer,outerContainer:u._paper.node(),commonLabelOpts:u.hoverlabel,hoverdistance:u.hoverdistance});v.isUnifiedHover(P)||(!function(t,e,r){var n,i,a,o,s,l,c,u=0,f=1,h=t.size(),p=new Array(h),d=0;function g(t){var e=t[0],r=t[t.length-1];if(i=e.pmin-e.pos-e.dp+e.size,a=r.pos+r.dp+r.size-e.pmax,i>.01){for(s=t.length-1;s>=0;s--)t[s].dp+=i;n=!1}if(!(a<.01)){if(i<-.01){for(s=t.length-1;s>=0;s--)t[s].dp-=a;n=!1}if(n){var c=0;for(o=0;oe.pmax&&c++;for(o=t.length-1;o>=0&&!(c<=0);o--)(l=t[o]).pos>e.pmax-1&&(l.del=!0,c--);for(o=0;o=0;s--)t[s].dp-=a;for(o=t.length-1;o>=0&&!(c<=0);o--)(l=t[o]).pos+l.dp+l.size>e.pmax&&(l.del=!0,c--)}}}t.each((function(t){var n=t[e],i=\"x\"===n._id.charAt(0),a=n.range;0===d&&a&&a[0]>a[1]!==i&&(f=-1),p[d++]=[{datum:t,traceIndex:t.trace.index,dp:0,pos:t.pos,posref:t.posref,size:t.by*(i?T:1)/2,pmin:0,pmax:i?r.width:r.height}]})),p.sort((function(t,e){return t[0].posref-e[0].posref||f*(e[0].traceIndex-t[0].traceIndex)}));for(;!n&&u<=h;){for(u++,n=!0,o=0;o.01&&y.pmin===x.pmin&&y.pmax===x.pmax){for(s=v.length-1;s>=0;s--)v[s].dp+=i;for(m.push.apply(m,v),p.splice(o+1,1),c=0,s=m.length-1;s>=0;s--)c+=m[s].dp;for(a=c/m.length,s=m.length-1;s>=0;s--)m[s].dp-=a;n=!1}else o++}p.forEach(g)}for(o=p.length-1;o>=0;o--){var b=p[o];for(s=b.length-1;s>=0;s--){var _=b[s],w=_.datum;w.offset=_.dp,w.del=_.del}}}(Xt,Yt?\"xa\":\"ya\",u),z(Xt,Yt,u._invScaleX,u._invScaleY));if(s&&s.tagName){var Zt=m.getComponentMethod(\"annotations\",\"hasClickToShow\")(t,It);f(n.select(s),Zt?\"pointer\":\"\")}if(!s||a||!function(t,e,r){if(!r||r.length!==t._hoverdata.length)return!0;for(var n=r.length-1;n>=0;n--){var i=r[n],a=t._hoverdata[n];if(i.curveNumber!==a.curveNumber||String(i.pointNumber)!==String(a.pointNumber)||String(i.pointNumbers)!==String(a.pointNumbers))return!0}return!1}(t,0,Pt))return;Pt&&t.emit(\"plotly_unhover\",{event:e,points:Pt});t.emit(\"plotly_hover\",{event:e,points:t._hoverdata,xaxes:_,yaxes:w,xvals:V,yvals:H})}(t,e,r,a,s)}))},r.loneHover=function(t,e){var r=!0;Array.isArray(t)||(r=!1,t=[t]);var i=e.gd,a=j(i),o=U(i),s=I(t.map((function(t){var r=t._x0||t.x0||t.x||0,n=t._x1||t.x1||t.x||0,s=t._y0||t.y0||t.y||0,l=t._y1||t.y1||t.y||0,c=t.eventData;if(c){var u=Math.min(r,n),f=Math.max(r,n),h=Math.min(s,l),d=Math.max(s,l),g=t.trace;if(m.traceIs(g,\"gl3d\")){var v=i._fullLayout[g.scene]._scene.container,y=v.offsetLeft,x=v.offsetTop;u+=y,f+=y,h+=x,d+=x}c.bbox={x0:u+o,x1:f+o,y0:h+a,y1:d+a},e.inOut_bbox&&e.inOut_bbox.push(c.bbox)}else c=!1;return{color:t.color||p.defaultLine,x0:t.x0||t.x||0,x1:t.x1||t.x||0,y0:t.y0||t.y||0,y1:t.y1||t.y||0,xLabel:t.xLabel,yLabel:t.yLabel,zLabel:t.zLabel,text:t.text,name:t.name,idealAlign:t.idealAlign,borderColor:t.borderColor,fontFamily:t.fontFamily,fontSize:t.fontSize,fontColor:t.fontColor,nameLength:t.nameLength,textAlign:t.textAlign,trace:t.trace||{index:0,hoverinfo:\"\"},xa:{_offset:0},ya:{_offset:0},index:0,hovertemplate:t.hovertemplate||!1,hovertemplateLabels:t.hovertemplateLabels||!1,eventData:c}})),{gd:i,hovermode:\"closest\",rotateLabels:!1,bgColor:e.bgColor||p.background,container:n.select(e.container),outerContainer:e.outerContainer||e.container}),l=0,c=0;return s.sort((function(t,e){return t.y0-e.y0})).each((function(t,r){var n=t.y0-t.by/2;t.offset=n-5([\\s\\S]*)<\\/extra>/;function I(t,e){var r=e.gd,i=r._fullLayout,a=e.hovermode,c=e.rotateLabels,f=e.bgColor,d=e.container,g=e.outerContainer,w=e.commonLabelOpts||{};if(0===t.length)return[[]];var T=e.fontFamily||y.HOVERFONT,k=e.fontSize||y.HOVERFONTSIZE,A=t[0],E=A.xa,L=A.ya,P=a.charAt(0),I=A[P+\"Label\"],z=V(r,g),D=z.top,R=z.width,F=z.height,B=void 0!==I&&A.distance<=e.hoverdistance&&(\"x\"===a||\"y\"===a);if(B){var N,j,U=!0;for(N=0;Ni.width-b?(m=i.width-b,e.attr(\"d\",\"M\"+(b-M)+\",0L\"+b+\",\"+x+M+\"v\"+x+(2*S+y.height)+\"H-\"+b+\"V\"+x+M+\"H\"+(b-2*M)+\"Z\")):e.attr(\"d\",\"M0,0L\"+M+\",\"+x+M+\"H\"+(S+y.width/2)+\"v\"+x+(2*S+y.height)+\"H-\"+(S+y.width/2)+\"V\"+x+M+\"H-\"+M+\"Z\")}else{var _,C,P;\"right\"===L.side?(_=\"start\",C=1,P=\"\",m=E._offset+E._length):(_=\"end\",C=-1,P=\"-\",m=E._offset),v=L._offset+(A.y0+A.y1)/2,l.attr(\"text-anchor\",_),e.attr(\"d\",\"M0,0L\"+P+M+\",\"+M+\"V\"+(S+y.height/2)+\"h\"+P+(2*S+y.width)+\"V-\"+(S+y.height/2)+\"H\"+P+M+\"V-\"+M+\"Z\");var O,z=y.height/2,R=D-y.top-z,F=\"clip\"+i._uid+\"commonlabel\"+L._id;if(m=0?at:ot+ct=0?ot:vt+ct=0?nt:it+ut=0?it:yt+ut=0,\"top\"!==t.idealAlign&&G||!Y?G?(z+=j/2,t.anchor=\"start\"):t.anchor=\"middle\":(z-=j/2,t.anchor=\"end\");else if(t.pos=z,G=P+N/2+W<=R,Y=P-N/2-W>=0,\"left\"!==t.idealAlign&&G||!Y)if(G)P+=N/2,t.anchor=\"start\";else{t.anchor=\"middle\";var X=W/2,Z=P+X-R,J=P-X;Z>0&&(P-=Z),J<0&&(P+=-J)}else P-=N/2,t.anchor=\"end\";w.attr(\"text-anchor\",t.anchor),E&&A.attr(\"text-anchor\",t.anchor),e.attr(\"transform\",s(P,z)+(c?l(_):\"\"))})),xt}function O(t,e,r,n,i,a){var s=\"\",l=\"\";void 0!==t.nameOverride&&(t.name=t.nameOverride),t.name&&(t.trace._meta&&(t.name=o.templateString(t.name,t.trace._meta)),s=B(t.name,t.nameLength));var c=r.charAt(0),u=\"x\"===c?\"y\":\"x\";void 0!==t.zLabel?(void 0!==t.xLabel&&(l+=\"x: \"+t.xLabel+\"
\"),void 0!==t.yLabel&&(l+=\"y: \"+t.yLabel+\"
\"),\"choropleth\"!==t.trace.type&&\"choroplethmapbox\"!==t.trace.type&&(l+=(l?\"z: \":\"\")+t.zLabel)):e&&t[c+\"Label\"]===i?l=t[u+\"Label\"]||\"\":void 0===t.xLabel?void 0!==t.yLabel&&\"scattercarpet\"!==t.trace.type&&(l=t.yLabel):l=void 0===t.yLabel?t.xLabel:\"(\"+t.xLabel+\", \"+t.yLabel+\")\",!t.text&&0!==t.text||Array.isArray(t.text)||(l+=(l?\"
\":\"\")+t.text),void 0!==t.extraText&&(l+=(l?\"
\":\"\")+t.extraText),a&&\"\"===l&&!t.hovertemplate&&(\"\"===s&&a.remove(),l=s);var f=t.hovertemplate||!1;if(f){var h=t.hovertemplateLabels||t;t[c+\"Label\"]!==i&&(h[c+\"other\"]=h[c+\"Val\"],h[c+\"otherLabel\"]=h[c+\"Label\"]),l=(l=o.hovertemplateString(f,h,n._d3locale,t.eventData[0]||{},t.trace._meta)).replace(P,(function(e,r){return s=B(r,t.nameLength),\"\"}))}return[l,s]}function z(t,e,r,i){var a=function(t){return t*r},o=function(t){return t*i};t.each((function(t){var r=n.select(this);if(t.del)return r.remove();var i=r.select(\"text.nums\"),s=t.anchor,l=\"end\"===s?-1:1,c={start:1,end:-1,middle:0}[s],f=c*(M+S),p=f+c*(t.txwidth+S),d=0,g=t.offset,m=\"middle\"===s;m&&(f-=t.tx2width/2,p+=t.txwidth/2+S),e&&(g*=-A,d=t.offset*k),r.select(\"path\").attr(\"d\",m?\"M-\"+a(t.bx/2+t.tx2width/2)+\",\"+o(g-t.by/2)+\"h\"+a(t.bx)+\"v\"+o(t.by)+\"h-\"+a(t.bx)+\"Z\":\"M0,0L\"+a(l*M+d)+\",\"+o(M+g)+\"v\"+o(t.by/2-M)+\"h\"+a(l*t.bx)+\"v-\"+o(t.by)+\"H\"+a(l*M+d)+\"V\"+o(g-M)+\"Z\");var v=d+f,y=g+t.ty0-t.by/2+S,x=t.textAlign||\"auto\";\"auto\"!==x&&(\"left\"===x&&\"start\"!==s?(i.attr(\"text-anchor\",\"start\"),v=m?-t.bx/2-t.tx2width/2+S:-t.bx-S):\"right\"===x&&\"end\"!==s&&(i.attr(\"text-anchor\",\"end\"),v=m?t.bx/2-t.tx2width/2-S:t.bx+S)),i.call(u.positionText,a(v),o(y)),t.tx2width&&(r.select(\"text.name\").call(u.positionText,a(p+c*S+d),o(g+t.ty0-t.by/2+S)),r.select(\"rect\").call(h.setRect,a(p+(c-1)*t.tx2width/2+d),o(g-t.by/2-1),a(t.tx2width),o(t.by+2)))}))}function D(t,e){var r=t.index,n=t.trace||{},a=t.cd[0],s=t.cd[r]||{};function l(t){return t||i(t)&&0===t}var c=Array.isArray(r)?function(t,e){var i=o.castOption(a,r,t);return l(i)?i:o.extractOption({},n,\"\",e)}:function(t,e){return o.extractOption(s,n,t,e)};function u(e,r,n){var i=c(r,n);l(i)&&(t[e]=i)}if(u(\"hoverinfo\",\"hi\",\"hoverinfo\"),u(\"bgcolor\",\"hbg\",\"hoverlabel.bgcolor\"),u(\"borderColor\",\"hbc\",\"hoverlabel.bordercolor\"),u(\"fontFamily\",\"htf\",\"hoverlabel.font.family\"),u(\"fontSize\",\"hts\",\"hoverlabel.font.size\"),u(\"fontColor\",\"htc\",\"hoverlabel.font.color\"),u(\"nameLength\",\"hnl\",\"hoverlabel.namelength\"),u(\"textAlign\",\"hta\",\"hoverlabel.align\"),t.posref=\"y\"===e||\"closest\"===e&&\"h\"===n.orientation?t.xa._offset+(t.x0+t.x1)/2:t.ya._offset+(t.y0+t.y1)/2,t.x0=o.constrain(t.x0,0,t.xa._length),t.x1=o.constrain(t.x1,0,t.xa._length),t.y0=o.constrain(t.y0,0,t.ya._length),t.y1=o.constrain(t.y1,0,t.ya._length),void 0!==t.xLabelVal&&(t.xLabel=\"xLabel\"in t?t.xLabel:g.hoverLabelText(t.xa,t.xLabelVal,n.xhoverformat),t.xVal=t.xa.c2d(t.xLabelVal)),void 0!==t.yLabelVal&&(t.yLabel=\"yLabel\"in t?t.yLabel:g.hoverLabelText(t.ya,t.yLabelVal,n.yhoverformat),t.yVal=t.ya.c2d(t.yLabelVal)),void 0!==t.zLabelVal&&void 0===t.zLabel&&(t.zLabel=String(t.zLabelVal)),!(isNaN(t.xerr)||\"log\"===t.xa.type&&t.xerr<=0)){var f=g.tickText(t.xa,t.xa.c2l(t.xerr),\"hover\").text;void 0!==t.xerrneg?t.xLabel+=\" +\"+f+\" / -\"+g.tickText(t.xa,t.xa.c2l(t.xerrneg),\"hover\").text:t.xLabel+=\" \\xb1 \"+f,\"x\"===e&&(t.distance+=1)}if(!(isNaN(t.yerr)||\"log\"===t.ya.type&&t.yerr<=0)){var h=g.tickText(t.ya,t.ya.c2l(t.yerr),\"hover\").text;void 0!==t.yerrneg?t.yLabel+=\" +\"+h+\" / -\"+g.tickText(t.ya,t.ya.c2l(t.yerrneg),\"hover\").text:t.yLabel+=\" \\xb1 \"+h,\"y\"===e&&(t.distance+=1)}var p=t.hoverinfo||t.trace.hoverinfo;return p&&\"all\"!==p&&(-1===(p=Array.isArray(p)?p:p.split(\"+\")).indexOf(\"x\")&&(t.xLabel=void 0),-1===p.indexOf(\"y\")&&(t.yLabel=void 0),-1===p.indexOf(\"z\")&&(t.zLabel=void 0),-1===p.indexOf(\"text\")&&(t.text=void 0),-1===p.indexOf(\"name\")&&(t.name=void 0)),t}function R(t,e,r){var n,i,o=r.container,s=r.fullLayout,l=s._size,c=r.event,u=!!e.hLinePoint,f=!!e.vLinePoint;if(o.selectAll(\".spikeline\").remove(),f||u){var d=p.combine(s.plot_bgcolor,s.paper_bgcolor);if(u){var m,v,y=e.hLinePoint;n=y&&y.xa,\"cursor\"===(i=y&&y.ya).spikesnap?(m=c.pointerX,v=c.pointerY):(m=n._offset+y.x,v=i._offset+y.y);var x,b,_=a.readability(y.color,d)<1.5?p.contrast(d):y.color,w=i.spikemode,T=i.spikethickness,k=i.spikecolor||_,A=g.getPxPosition(t,i);if(-1!==w.indexOf(\"toaxis\")||-1!==w.indexOf(\"across\")){if(-1!==w.indexOf(\"toaxis\")&&(x=A,b=m),-1!==w.indexOf(\"across\")){var M=i._counterDomainMin,S=i._counterDomainMax;\"free\"===i.anchor&&(M=Math.min(M,i.position),S=Math.max(S,i.position)),x=l.l+M*l.w,b=l.l+S*l.w}o.insert(\"line\",\":first-child\").attr({x1:x,x2:b,y1:v,y2:v,\"stroke-width\":T,stroke:k,\"stroke-dasharray\":h.dashStyle(i.spikedash,T)}).classed(\"spikeline\",!0).classed(\"crisp\",!0),o.insert(\"line\",\":first-child\").attr({x1:x,x2:b,y1:v,y2:v,\"stroke-width\":T+2,stroke:d}).classed(\"spikeline\",!0).classed(\"crisp\",!0)}-1!==w.indexOf(\"marker\")&&o.insert(\"circle\",\":first-child\").attr({cx:A+(\"right\"!==i.side?T:-T),cy:v,r:T,fill:k}).classed(\"spikeline\",!0)}if(f){var E,L,C=e.vLinePoint;n=C&&C.xa,i=C&&C.ya,\"cursor\"===n.spikesnap?(E=c.pointerX,L=c.pointerY):(E=n._offset+C.x,L=i._offset+C.y);var P,I,O=a.readability(C.color,d)<1.5?p.contrast(d):C.color,z=n.spikemode,D=n.spikethickness,R=n.spikecolor||O,F=g.getPxPosition(t,n);if(-1!==z.indexOf(\"toaxis\")||-1!==z.indexOf(\"across\")){if(-1!==z.indexOf(\"toaxis\")&&(P=F,I=L),-1!==z.indexOf(\"across\")){var B=n._counterDomainMin,N=n._counterDomainMax;\"free\"===n.anchor&&(B=Math.min(B,n.position),N=Math.max(N,n.position)),P=l.t+(1-N)*l.h,I=l.t+(1-B)*l.h}o.insert(\"line\",\":first-child\").attr({x1:E,x2:E,y1:P,y2:I,\"stroke-width\":D,stroke:R,\"stroke-dasharray\":h.dashStyle(n.spikedash,D)}).classed(\"spikeline\",!0).classed(\"crisp\",!0),o.insert(\"line\",\":first-child\").attr({x1:E,x2:E,y1:P,y2:I,\"stroke-width\":D+2,stroke:d}).classed(\"spikeline\",!0).classed(\"crisp\",!0)}-1!==z.indexOf(\"marker\")&&o.insert(\"circle\",\":first-child\").attr({cx:E,cy:F-(\"top\"!==n.side?D:-D),r:D,fill:R}).classed(\"spikeline\",!0)}}}function F(t,e){return!e||(e.vLinePoint!==t._spikepoints.vLinePoint||e.hLinePoint!==t._spikepoints.hLinePoint)}function B(t,e){return u.plainText(t||\"\",{len:e,allowedTags:[\"br\",\"sub\",\"sup\",\"b\",\"i\",\"em\"]})}function N(t,e,r){var n=e[t+\"a\"],i=e[t+\"Val\"],a=e.cd[0];if(\"category\"===n.type)i=n._categoriesMap[i];else if(\"date\"===n.type){var o=e.trace[t+\"periodalignment\"];if(o){var s=e.cd[e.index],l=s[t+\"Start\"];void 0===l&&(l=s[t]);var c=s[t+\"End\"];void 0===c&&(c=s[t]);var u=c-l;\"end\"===o?i+=u:\"middle\"===o&&(i+=u/2)}i=n.d2c(i)}return a&&a.t&&a.t.posLetter===n._id&&(\"group\"!==r.boxmode&&\"group\"!==r.violinmode||(i+=a.t.dPos)),i}function j(t){return t.offsetTop+t.clientTop}function U(t){return t.offsetLeft+t.clientLeft}function V(t,e){var r=t._fullLayout,n=e.getBoundingClientRect(),i=n.x,a=n.y,s=i+n.width,l=a+n.height,c=o.apply3DTransform(r._invTransform)(i,a),u=o.apply3DTransform(r._invTransform)(s,l),f=c[0],h=c[1],p=u[0],d=u[1];return{x:f,y:h,width:p-f,height:d-h,top:Math.min(h,d),left:Math.min(f,p),right:Math.max(f,p),bottom:Math.max(h,d)}}},{\"../../lib\":503,\"../../lib/events\":492,\"../../lib/override_cursor\":514,\"../../lib/svg_text_utils\":529,\"../../plots/cartesian/axes\":554,\"../../registry\":638,\"../color\":366,\"../dragelement\":385,\"../drawing\":388,\"../legend/defaults\":418,\"../legend/draw\":419,\"./constants\":400,\"./helpers\":402,\"@plotly/d3\":58,\"fast-isnumeric\":190,tinycolor2:312}],404:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../color\"),a=t(\"./helpers\").isUnifiedHover;e.exports=function(t,e,r,o){o=o||{};var s=e.legend;function l(t){o.font[t]||(o.font[t]=s?e.legend.font[t]:e.font[t])}e&&a(e.hovermode)&&(o.font||(o.font={}),l(\"size\"),l(\"family\"),l(\"color\"),s?(o.bgcolor||(o.bgcolor=i.combine(e.legend.bgcolor,e.paper_bgcolor)),o.bordercolor||(o.bordercolor=e.legend.bordercolor)):o.bgcolor||(o.bgcolor=e.paper_bgcolor)),r(\"hoverlabel.bgcolor\",o.bgcolor),r(\"hoverlabel.bordercolor\",o.bordercolor),r(\"hoverlabel.namelength\",o.namelength),n.coerceFont(r,\"hoverlabel.font\",o.font),r(\"hoverlabel.align\",o.align)}},{\"../../lib\":503,\"../color\":366,\"./helpers\":402}],405:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e){function r(r,a){return void 0!==e[r]?e[r]:n.coerce(t,e,i,r,a)}return r(\"clickmode\"),r(\"hovermode\")}},{\"../../lib\":503,\"./layout_attributes\":407}],406:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../dragelement\"),o=t(\"./helpers\"),s=t(\"./layout_attributes\"),l=t(\"./hover\");e.exports={moduleType:\"component\",name:\"fx\",constants:t(\"./constants\"),schema:{layout:s},attributes:t(\"./attributes\"),layoutAttributes:s,supplyLayoutGlobalDefaults:t(\"./layout_global_defaults\"),supplyDefaults:t(\"./defaults\"),supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\"),getDistanceFunction:o.getDistanceFunction,getClosest:o.getClosest,inbox:o.inbox,quadrature:o.quadrature,appendArrayPointValue:o.appendArrayPointValue,castHoverOption:function(t,e,r){return i.castOption(t,e,\"hoverlabel.\"+r)},castHoverinfo:function(t,e,r){return i.castOption(t,r,\"hoverinfo\",(function(r){return i.coerceHoverinfo({hoverinfo:r},{_module:t._module},e)}))},hover:l.hover,unhover:a.unhover,loneHover:l.loneHover,loneUnhover:function(t){var e=i.isD3Selection(t)?t:n.select(t);e.selectAll(\"g.hovertext\").remove(),e.selectAll(\".spikeline\").remove()},click:t(\"./click\")}},{\"../../lib\":503,\"../dragelement\":385,\"./attributes\":397,\"./calc\":398,\"./click\":399,\"./constants\":400,\"./defaults\":401,\"./helpers\":402,\"./hover\":403,\"./layout_attributes\":407,\"./layout_defaults\":408,\"./layout_global_defaults\":409,\"@plotly/d3\":58}],407:[function(t,e,r){\"use strict\";var n=t(\"./constants\"),i=t(\"../../plots/font_attributes\"),a=i({editType:\"none\"});a.family.dflt=n.HOVERFONT,a.size.dflt=n.HOVERFONTSIZE,e.exports={clickmode:{valType:\"flaglist\",flags:[\"event\",\"select\"],dflt:\"event\",editType:\"plot\",extras:[\"none\"]},dragmode:{valType:\"enumerated\",values:[\"zoom\",\"pan\",\"select\",\"lasso\",\"drawclosedpath\",\"drawopenpath\",\"drawline\",\"drawrect\",\"drawcircle\",\"orbit\",\"turntable\",!1],dflt:\"zoom\",editType:\"modebar\"},hovermode:{valType:\"enumerated\",values:[\"x\",\"y\",\"closest\",!1,\"x unified\",\"y unified\"],dflt:\"closest\",editType:\"modebar\"},hoverdistance:{valType:\"integer\",min:-1,dflt:20,editType:\"none\"},spikedistance:{valType:\"integer\",min:-1,dflt:-1,editType:\"none\"},hoverlabel:{bgcolor:{valType:\"color\",editType:\"none\"},bordercolor:{valType:\"color\",editType:\"none\"},font:a,grouptitlefont:i({editType:\"none\"}),align:{valType:\"enumerated\",values:[\"left\",\"right\",\"auto\"],dflt:\"auto\",editType:\"none\"},namelength:{valType:\"integer\",min:-1,dflt:15,editType:\"none\"},editType:\"none\"},selectdirection:{valType:\"enumerated\",values:[\"h\",\"v\",\"d\",\"any\"],dflt:\"any\",editType:\"none\"}}},{\"../../plots/font_attributes\":585,\"./constants\":400}],408:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\"),a=t(\"./hovermode_defaults\"),o=t(\"./hoverlabel_defaults\");e.exports=function(t,e){function r(r,a){return n.coerce(t,e,i,r,a)}a(t,e)&&(r(\"hoverdistance\"),r(\"spikedistance\")),\"select\"===r(\"dragmode\")&&r(\"selectdirection\");var s=e._has(\"mapbox\"),l=e._has(\"geo\"),c=e._basePlotModules.length;\"zoom\"===e.dragmode&&((s||l)&&1===c||s&&l&&2===c)&&(e.dragmode=\"pan\"),o(t,e,r),n.coerceFont(r,\"hoverlabel.grouptitlefont\",e.hoverlabel.font)}},{\"../../lib\":503,\"./hoverlabel_defaults\":404,\"./hovermode_defaults\":405,\"./layout_attributes\":407}],409:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./hoverlabel_defaults\"),a=t(\"./layout_attributes\");e.exports=function(t,e){i(t,e,(function(r,i){return n.coerce(t,e,a,r,i)}))}},{\"../../lib\":503,\"./hoverlabel_defaults\":404,\"./layout_attributes\":407}],410:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../lib/regex\").counter,a=t(\"../../plots/domain\").attributes,o=t(\"../../plots/cartesian/constants\").idRegex,s=t(\"../../plot_api/plot_template\"),l={rows:{valType:\"integer\",min:1,editType:\"plot\"},roworder:{valType:\"enumerated\",values:[\"top to bottom\",\"bottom to top\"],dflt:\"top to bottom\",editType:\"plot\"},columns:{valType:\"integer\",min:1,editType:\"plot\"},subplots:{valType:\"info_array\",freeLength:!0,dimensions:2,items:{valType:\"enumerated\",values:[i(\"xy\").toString(),\"\"],editType:\"plot\"},editType:\"plot\"},xaxes:{valType:\"info_array\",freeLength:!0,items:{valType:\"enumerated\",values:[o.x.toString(),\"\"],editType:\"plot\"},editType:\"plot\"},yaxes:{valType:\"info_array\",freeLength:!0,items:{valType:\"enumerated\",values:[o.y.toString(),\"\"],editType:\"plot\"},editType:\"plot\"},pattern:{valType:\"enumerated\",values:[\"independent\",\"coupled\"],dflt:\"coupled\",editType:\"plot\"},xgap:{valType:\"number\",min:0,max:1,editType:\"plot\"},ygap:{valType:\"number\",min:0,max:1,editType:\"plot\"},domain:a({name:\"grid\",editType:\"plot\",noGridCell:!0},{}),xside:{valType:\"enumerated\",values:[\"bottom\",\"bottom plot\",\"top plot\",\"top\"],dflt:\"bottom plot\",editType:\"plot\"},yside:{valType:\"enumerated\",values:[\"left\",\"left plot\",\"right plot\",\"right\"],dflt:\"left plot\",editType:\"plot\"},editType:\"plot\"};function c(t,e,r){var n=e[r+\"axes\"],i=Object.keys((t._splomAxes||{})[r]||{});return Array.isArray(n)?n:i.length?i:void 0}function u(t,e,r,n,i,a){var o=e(t+\"gap\",r),s=e(\"domain.\"+t);e(t+\"side\",n);for(var l=new Array(i),c=s[0],u=(s[1]-c)/(i-o),f=u*(1-o),h=0;h1){if(!h&&!p&&!d)\"independent\"===k(\"pattern\")&&(h=!0);m._hasSubplotGrid=h;var x,b,_=\"top to bottom\"===k(\"roworder\"),w=h?.2:.1,T=h?.3:.1;g&&e._splomGridDflt&&(x=e._splomGridDflt.xside,b=e._splomGridDflt.yside),m._domains={x:u(\"x\",k,w,x,y),y:u(\"y\",k,T,b,v,_)}}else delete e.grid}function k(t,e){return n.coerce(r,m,l,t,e)}},contentDefaults:function(t,e){var r=e.grid;if(r&&r._domains){var n,i,a,o,s,l,u,h=t.grid||{},p=e._subplots,d=r._hasSubplotGrid,g=r.rows,m=r.columns,v=\"independent\"===r.pattern,y=r._axisMap={};if(d){var x=h.subplots||[];l=r.subplots=new Array(g);var b=1;for(n=0;n1);if(!1===_&&(e.legend=void 0),(!1!==_||f.uirevision)&&(p(\"uirevision\",e.uirevision),!1!==_)){p(\"bgcolor\",e.paper_bgcolor),p(\"bordercolor\"),p(\"borderwidth\");var w,T,k,A=i.coerceFont(p,\"font\",e.font),M=\"h\"===p(\"orientation\");if(M?(w=0,n.getComponentMethod(\"rangeslider\",\"isVisible\")(t.xaxis)?(T=1.1,k=\"bottom\"):(T=-.1,k=\"top\")):(w=1.02,T=1,k=\"auto\"),p(\"traceorder\",x),c.isGrouped(e.legend)&&p(\"tracegroupgap\"),p(\"itemsizing\"),p(\"itemwidth\"),p(\"itemclick\"),p(\"itemdoubleclick\"),p(\"groupclick\"),p(\"x\",w),p(\"xanchor\"),p(\"y\",T),p(\"yanchor\",k),p(\"valign\"),i.noneOrAll(f,h,[\"x\",\"y\"]),p(\"title.text\")){p(\"title.side\",M?\"left\":\"top\");var S=i.extendFlat({},A,{size:i.bigFont(A.size)});i.coerceFont(p,\"title.font\",S)}}}},{\"../../lib\":503,\"../../plot_api/plot_template\":543,\"../../plots/attributes\":550,\"../../plots/layout_attributes\":610,\"../../registry\":638,\"./attributes\":416,\"./helpers\":422}],419:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../plots/plots\"),o=t(\"../../registry\"),s=t(\"../../lib/events\"),l=t(\"../dragelement\"),c=t(\"../drawing\"),u=t(\"../color\"),f=t(\"../../lib/svg_text_utils\"),h=t(\"./handle_click\"),p=t(\"./constants\"),d=t(\"../../constants/alignment\"),g=d.LINE_SPACING,m=d.FROM_TL,v=d.FROM_BR,y=t(\"./get_legend_data\"),x=t(\"./style\"),b=t(\"./helpers\");function _(t,e,r,n,i){var a=r.data()[0][0].trace,l={event:i,node:r.node(),curveNumber:a.index,expandedIndex:a._expandedIndex,data:t.data,layout:t.layout,frames:t._transitionData._frames,config:t._context,fullData:t._fullData,fullLayout:t._fullLayout};if(a._group&&(l.group=a._group),o.traceIs(a,\"pie-like\")&&(l.label=r.datum()[0].label),!1!==s.triggerHandler(t,\"plotly_legendclick\",l))if(1===n)e._clickTimeout=setTimeout((function(){t._fullLayout&&h(r,t,n)}),t._context.doubleClickDelay);else if(2===n){e._clickTimeout&&clearTimeout(e._clickTimeout),t._legendMouseDownTime=0,!1!==s.triggerHandler(t,\"plotly_legenddoubleclick\",l)&&h(r,t,n)}}function w(t,e,r){var n,a,s=t.data()[0][0],l=s.trace,u=o.traceIs(l,\"pie-like\"),h=!r._inHover&&e._context.edits.legendText&&!u,d=r._maxNameLength;s.groupTitle?(n=s.groupTitle.text,a=s.groupTitle.font):(a=r.font,r.entries?n=s.text:(n=u?s.label:l.name,l._meta&&(n=i.templateString(n,l._meta))));var g=i.ensureSingle(t,\"text\",\"legendtext\");g.attr(\"text-anchor\",\"start\").call(c.font,a).text(h?T(n,d):n);var m=r.itemwidth+2*p.itemGap;f.positionText(g,m,0),h?g.call(f.makeEditable,{gd:e,text:n}).call(A,t,e,r).on(\"edit\",(function(n){this.text(T(n,d)).call(A,t,e,r);var a=s.trace._fullInput||{},c={};if(o.hasTransform(a,\"groupby\")){var u=o.getTransformIndices(a,\"groupby\"),f=u[u.length-1],h=i.keyedContainer(a,\"transforms[\"+f+\"].styles\",\"target\",\"value.name\");h.set(s.trace._group,n),c=h.constructUpdate()}else c.name=n;return o.call(\"_guiRestyle\",e,c,l.index)})):A(g,t,e,r)}function T(t,e){var r=Math.max(4,e);if(t&&t.trim().length>=r/2)return t;for(var n=r-(t=t||\"\").length;n>0;n--)t+=\" \";return t}function k(t,e){var r,a=e._context.doubleClickDelay,o=1,s=i.ensureSingle(t,\"rect\",\"legendtoggle\",(function(t){e._context.staticPlot||t.style(\"cursor\",\"pointer\").attr(\"pointer-events\",\"all\"),t.call(u.fill,\"rgba(0,0,0,0)\")}));e._context.staticPlot||(s.on(\"mousedown\",(function(){(r=(new Date).getTime())-e._legendMouseDownTimea&&(o=Math.max(o-1,1)),_(e,r,t,o,n.event)}})))}function A(t,e,r,n,i){n._inHover&&t.attr(\"data-notex\",!0),f.convertToTspans(t,r,(function(){!function(t,e,r,n){var i=t.data()[0][0];if(!r._inHover&&i&&!i.trace.showlegend)return void t.remove();var a=t.select(\"g[class*=math-group]\"),o=a.node();r||(r=e._fullLayout.legend);var s,l=r.borderwidth;s=1===n?r.title.font:i.groupTitle?i.groupTitle.font:r.font;var u,h,d=s.size*g;if(o){var m=c.bBox(o);u=m.height,h=m.width,1===n?c.setTranslate(a,l,l+.75*u):c.setTranslate(a,0,.25*u)}else{var v=t.select(1===n?\".legendtitletext\":\".legendtext\"),y=f.lineCount(v),x=v.node();if(u=d*y,h=x?c.bBox(x).width:0,1===n)\"left\"===r.title.side&&(h+=2*p.itemGap),f.positionText(v,l+p.titlePad,l+d);else{var b=2*p.itemGap+r.itemwidth;i.groupTitle&&(b=p.itemGap,h-=r.itemwidth),f.positionText(v,b,-d*((y-1)/2-.3))}}1===n?(r._titleWidth=h,r._titleHeight=u):(i.lineHeight=d,i.height=Math.max(u,16)+3,i.width=h)}(e,r,n,i)}))}function M(t){return i.isRightAnchor(t)?\"right\":i.isCenterAnchor(t)?\"center\":\"left\"}function S(t){return i.isBottomAnchor(t)?\"bottom\":i.isMiddleAnchor(t)?\"middle\":\"top\"}e.exports=function(t,e){return e||(e=t._fullLayout.legend||{}),function(t,e){var r,s,f=t._fullLayout,h=\"legend\"+f._uid,d=e._inHover;d?(r=e.layer,h+=\"-hover\"):r=f._infolayer;if(!r)return;t._legendMouseDownTime||(t._legendMouseDownTime=0);if(d){if(!e.entries)return;s=y(e.entries,e)}else{if(!t.calcdata)return;s=f.showlegend&&y(t.calcdata,e)}var g=f.hiddenlabels||[];if(!(d||f.showlegend&&s.length))return r.selectAll(\".legend\").remove(),f._topdefs.select(\"#\"+h).remove(),a.autoMargin(t,\"legend\");var T=i.ensureSingle(r,\"g\",\"legend\",(function(t){d||t.attr(\"pointer-events\",\"all\")})),E=i.ensureSingleById(f._topdefs,\"clipPath\",h,(function(t){t.append(\"rect\")})),L=i.ensureSingle(T,\"rect\",\"bg\",(function(t){t.attr(\"shape-rendering\",\"crispEdges\")}));L.call(u.stroke,e.bordercolor).call(u.fill,e.bgcolor).style(\"stroke-width\",e.borderwidth+\"px\");var C=i.ensureSingle(T,\"g\",\"scrollbox\"),P=e.title;if(e._titleWidth=0,e._titleHeight=0,P.text){var I=i.ensureSingle(C,\"text\",\"legendtitletext\");I.attr(\"text-anchor\",\"start\").call(c.font,P.font).text(P.text),A(I,C,t,e,1)}else C.selectAll(\".legendtitletext\").remove();var O=i.ensureSingle(T,\"rect\",\"scrollbar\",(function(t){t.attr(p.scrollBarEnterAttrs).call(u.fill,p.scrollBarColor)})),z=C.selectAll(\"g.groups\").data(s);z.enter().append(\"g\").attr(\"class\",\"groups\"),z.exit().remove();var D=z.selectAll(\"g.traces\").data(i.identity);D.enter().append(\"g\").attr(\"class\",\"traces\"),D.exit().remove(),D.style(\"opacity\",(function(t){var e=t[0].trace;return o.traceIs(e,\"pie-like\")?-1!==g.indexOf(t[0].label)?.5:1:\"legendonly\"===e.visible?.5:1})).each((function(){n.select(this).call(w,t,e)})).call(x,t,e).each((function(){d||n.select(this).call(k,t)})),i.syncOrAsync([a.previousPromises,function(){return function(t,e,r,i){var a=t._fullLayout;i||(i=a.legend);var o=a._size,s=b.isVertical(i),l=b.isGrouped(i),u=i.borderwidth,f=2*u,h=p.itemGap,d=i.itemwidth+2*h,g=2*(u+h),m=S(i),v=i.y<0||0===i.y&&\"top\"===m,y=i.y>1||1===i.y&&\"bottom\"===m,x=i.tracegroupgap;i._maxHeight=Math.max(v||y?a.height/2:o.h,30);var _=0;i._width=0,i._height=0;var w=function(t){var e=0,r=0,n=t.title.side;n&&(-1!==n.indexOf(\"left\")&&(e=t._titleWidth),-1!==n.indexOf(\"top\")&&(r=t._titleHeight));return[e,r]}(i);if(s)r.each((function(t){var e=t[0].height;c.setTranslate(this,u+w[0],u+w[1]+i._height+e/2+h),i._height+=e,i._width=Math.max(i._width,t[0].width)})),_=d+i._width,i._width+=h+d+f,i._height+=g,l&&(e.each((function(t,e){c.setTranslate(this,0,e*i.tracegroupgap)})),i._height+=(i._lgroupsLength-1)*i.tracegroupgap);else{var T=M(i),k=i.x<0||0===i.x&&\"right\"===T,A=i.x>1||1===i.x&&\"left\"===T,E=y||v,L=a.width/2;i._maxWidth=Math.max(k?E&&\"left\"===T?o.l+o.w:L:A?E&&\"right\"===T?o.r+o.w:L:o.w,2*d);var C=0,P=0;r.each((function(t){var e=t[0].width+d;C=Math.max(C,e),P+=e})),_=null;var I=0;if(l){var O=0,z=0,D=0;e.each((function(){var t=0,e=0;n.select(this).selectAll(\"g.traces\").each((function(r){var n=r[0].width,i=r[0].height;c.setTranslate(this,w[0],w[1]+u+h+i/2+e),e+=i,t=Math.max(t,d+n)}));var r=t+h;z>0&&r+u+z>i._maxWidth?(I=Math.max(I,z),z=0,D+=O+x,O=e):O=Math.max(O,e),c.setTranslate(this,z,D),z+=r})),i._width=Math.max(I,z)+u,i._height=D+O+g}else{var R=r.size(),F=P+f+(R-1)*h=i._maxWidth&&(I=Math.max(I,U),N=0,j+=B,i._height+=B,B=0),c.setTranslate(this,w[0]+u+N,w[1]+u+j+e/2+h),U=N+r+h,N+=n,B=Math.max(B,e)})),F?(i._width=N+f,i._height=B+g):(i._width=Math.max(I,U)+f,i._height+=B+g)}}i._width=Math.ceil(Math.max(i._width+w[0],i._titleWidth+2*(u+p.titlePad))),i._height=Math.ceil(Math.max(i._height+w[1],i._titleHeight+2*(u+p.itemGap))),i._effHeight=Math.min(i._height,i._maxHeight);var V=t._context.edits,H=V.legendText||V.legendPosition;r.each((function(t){var e=n.select(this).select(\".legendtoggle\"),r=t[0].height,i=H?d:_||d+t[0].width;s||(i+=h/2),c.setRect(e,0,-r/2,i,r)}))}(t,z,D,e)},function(){var s,u,g,y,x=f._size,b=e.borderwidth;if(!d){if(function(t){var e=t._fullLayout.legend,r=M(e),n=S(e);return a.autoMargin(t,\"legend\",{x:e.x,y:e.y,l:e._width*m[r],r:e._width*v[r],b:e._effHeight*v[n],t:e._effHeight*m[n]})}(t))return;var w=x.l+x.w*e.x-m[M(e)]*e._width,k=x.t+x.h*(1-e.y)-m[S(e)]*e._effHeight;if(f.margin.autoexpand){var A=w,P=k;w=i.constrain(w,0,f.width-e._width),k=i.constrain(k,0,f.height-e._effHeight),w!==A&&i.log(\"Constrain legend.x to make legend fit inside graph\"),k!==P&&i.log(\"Constrain legend.y to make legend fit inside graph\")}c.setTranslate(T,w,k)}if(O.on(\".drag\",null),T.on(\"wheel\",null),d||e._height<=e._maxHeight||t._context.staticPlot){var I=e._effHeight;d&&(I=e._height),L.attr({width:e._width-b,height:I-b,x:b/2,y:b/2}),c.setTranslate(C,0,0),E.select(\"rect\").attr({width:e._width-2*b,height:I-2*b,x:b,y:b}),c.setClipUrl(C,h,t),c.setRect(O,0,0,0,0),delete e._scrollY}else{var z,D,R,F=Math.max(p.scrollBarMinHeight,e._effHeight*e._effHeight/e._height),B=e._effHeight-F-2*p.scrollBarMargin,N=e._height-e._effHeight,j=B/N,U=Math.min(e._scrollY||0,N);L.attr({width:e._width-2*b+p.scrollBarWidth+p.scrollBarMargin,height:e._effHeight-b,x:b/2,y:b/2}),E.select(\"rect\").attr({width:e._width-2*b+p.scrollBarWidth+p.scrollBarMargin,height:e._effHeight-2*b,x:b,y:b+U}),c.setClipUrl(C,h,t),q(U,F,j),T.on(\"wheel\",(function(){q(U=i.constrain(e._scrollY+n.event.deltaY/B*N,0,N),F,j),0!==U&&U!==N&&n.event.preventDefault()}));var V=n.behavior.drag().on(\"dragstart\",(function(){var t=n.event.sourceEvent;z=\"touchstart\"===t.type?t.changedTouches[0].clientY:t.clientY,R=U})).on(\"drag\",(function(){var t=n.event.sourceEvent;2===t.buttons||t.ctrlKey||(D=\"touchmove\"===t.type?t.changedTouches[0].clientY:t.clientY,q(U=function(t,e,r){var n=(r-e)/j+t;return i.constrain(n,0,N)}(R,z,D),F,j))}));O.call(V);var H=n.behavior.drag().on(\"dragstart\",(function(){var t=n.event.sourceEvent;\"touchstart\"===t.type&&(z=t.changedTouches[0].clientY,R=U)})).on(\"drag\",(function(){var t=n.event.sourceEvent;\"touchmove\"===t.type&&(D=t.changedTouches[0].clientY,q(U=function(t,e,r){var n=(e-r)/j+t;return i.constrain(n,0,N)}(R,z,D),F,j))}));C.call(H)}function q(r,n,i){e._scrollY=t._fullLayout.legend._scrollY=r,c.setTranslate(C,0,-r),c.setRect(O,e._width,p.scrollBarMargin+r*i,p.scrollBarWidth,n),E.select(\"rect\").attr(\"y\",b+r)}t._context.edits.legendPosition&&(T.classed(\"cursor-move\",!0),l.init({element:T.node(),gd:t,prepFn:function(){var t=c.getTranslate(T);g=t.x,y=t.y},moveFn:function(t,r){var n=g+t,i=y+r;c.setTranslate(T,n,i),s=l.align(n,0,x.l,x.l+x.w,e.xanchor),u=l.align(i,0,x.t+x.h,x.t,e.yanchor)},doneFn:function(){void 0!==s&&void 0!==u&&o.call(\"_guiRelayout\",t,{\"legend.x\":s,\"legend.y\":u})},clickFn:function(e,n){var i=r.selectAll(\"g.traces\").filter((function(){var t=this.getBoundingClientRect();return n.clientX>=t.left&&n.clientX<=t.right&&n.clientY>=t.top&&n.clientY<=t.bottom}));i.size()>0&&_(t,T,i,e,n)}}))}],t)}(t,e)}},{\"../../constants/alignment\":471,\"../../lib\":503,\"../../lib/events\":492,\"../../lib/svg_text_utils\":529,\"../../plots/plots\":619,\"../../registry\":638,\"../color\":366,\"../dragelement\":385,\"../drawing\":388,\"./constants\":417,\"./get_legend_data\":420,\"./handle_click\":421,\"./helpers\":422,\"./style\":424,\"@plotly/d3\":58}],420:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"./helpers\");e.exports=function(t,e){var r,a,o=e._inHover,s=i.isGrouped(e),l=i.isReversed(e),c={},u=[],f=!1,h={},p=0,d=0;function g(t,r){if(\"\"!==t&&i.isGrouped(e))-1===u.indexOf(t)?(u.push(t),f=!0,c[t]=[r]):c[t].push(r);else{var n=\"~~i\"+p;u.push(n),c[n]=[r],p++}}for(r=0;rA&&(k=A)}w[r][0]._groupMinRank=k,w[r][0]._preGroupSort=r}var M=function(t,e){return t.trace.legendrank-e.trace.legendrank||t._preSort-e._preSort};for(w.forEach((function(t,e){t[0]._preGroupSort=e})),w.sort((function(t,e){return t[0]._groupMinRank-e[0]._groupMinRank||t[0]._preGroupSort-e[0]._preGroupSort})),r=0;rr?r:t}e.exports=function(t,e,r){var v=e._fullLayout;r||(r=v.legend);var y=\"constant\"===r.itemsizing,x=r.itemwidth,b=(x+2*p.itemGap)/2,_=o(b,0),w=function(t,e,r,n){var i;if(t+1)i=t;else{if(!(e&&e.width>0))return 0;i=e.width}return y?n:Math.min(i,r)};function T(t,a,o){var u=t[0].trace,f=u.marker||{},h=f.line||{},p=o?u.visible&&u.type===o:i.traceIs(u,\"bar\"),d=n.select(a).select(\"g.legendpoints\").selectAll(\"path.legend\"+o).data(p?[t]:[]);d.enter().append(\"path\").classed(\"legend\"+o,!0).attr(\"d\",\"M6,6H-6V-6H6Z\").attr(\"transform\",_),d.exit().remove(),d.each((function(t){var i=n.select(this),a=t[0],o=w(a.mlw,f.line,5,2);i.style(\"stroke-width\",o+\"px\");var p=a.mcc;if(!r._inHover&&\"mc\"in a){var d=c(f),g=d.mid;void 0===g&&(g=(d.max+d.min)/2),p=s.tryColorscale(f,\"\")(g)}var v=p||a.mc||f.color,y=f.pattern,x=y&&s.getPatternAttr(y.shape,0,\"\");if(x){var b=s.getPatternAttr(y.bgcolor,0,null),_=s.getPatternAttr(y.fgcolor,0,null),T=y.fgopacity,k=m(y.size,8,10),A=m(y.solidity,.5,1),M=\"legend-\"+u.uid;i.call(s.pattern,\"legend\",e,M,x,k,A,p,y.fillmode,b,_,T)}else i.call(l.fill,v);o&&l.stroke(i,a.mlc||h.color)}))}function k(t,e,r){var o=t[0],s=o.trace,l=r?s.visible&&s.type===r:i.traceIs(s,r),c=n.select(e).select(\"g.legendpoints\").selectAll(\"path.legend\"+r).data(l?[t]:[]);if(c.enter().append(\"path\").classed(\"legend\"+r,!0).attr(\"d\",\"M6,6H-6V-6H6Z\").attr(\"transform\",_),c.exit().remove(),c.size()){var u=(s.marker||{}).line,p=w(h(u.width,o.pts),u,5,2),d=a.minExtend(s,{marker:{line:{width:p}}});d.marker.line.color=u.color;var g=a.minExtend(o,{trace:d});f(c,g,d)}}t.each((function(t){var e=n.select(this),i=a.ensureSingle(e,\"g\",\"layers\");i.style(\"opacity\",t[0].trace.opacity);var s=r.valign,l=t[0].lineHeight,c=t[0].height;if(\"middle\"!==s&&l&&c){var u={top:1,bottom:-1}[s]*(.5*(l-c+3));i.attr(\"transform\",o(0,u))}else i.attr(\"transform\",null);i.selectAll(\"g.legendfill\").data([t]).enter().append(\"g\").classed(\"legendfill\",!0),i.selectAll(\"g.legendlines\").data([t]).enter().append(\"g\").classed(\"legendlines\",!0);var f=i.selectAll(\"g.legendsymbols\").data([t]);f.enter().append(\"g\").classed(\"legendsymbols\",!0),f.selectAll(\"g.legendpoints\").data([t]).enter().append(\"g\").classed(\"legendpoints\",!0)})).each((function(t){var r,i=t[0].trace,o=[];if(i.visible)switch(i.type){case\"histogram2d\":case\"heatmap\":o=[[\"M-15,-2V4H15V-2Z\"]],r=!0;break;case\"choropleth\":case\"choroplethmapbox\":o=[[\"M-6,-6V6H6V-6Z\"]],r=!0;break;case\"densitymapbox\":o=[[\"M-6,0 a6,6 0 1,0 12,0 a 6,6 0 1,0 -12,0\"]],r=\"radial\";break;case\"cone\":o=[[\"M-6,2 A2,2 0 0,0 -6,6 V6L6,4Z\"],[\"M-6,-6 A2,2 0 0,0 -6,-2 L6,-4Z\"],[\"M-6,-2 A2,2 0 0,0 -6,2 L6,0Z\"]],r=!1;break;case\"streamtube\":o=[[\"M-6,2 A2,2 0 0,0 -6,6 H6 A2,2 0 0,1 6,2 Z\"],[\"M-6,-6 A2,2 0 0,0 -6,-2 H6 A2,2 0 0,1 6,-6 Z\"],[\"M-6,-2 A2,2 0 0,0 -6,2 H6 A2,2 0 0,1 6,-2 Z\"]],r=!1;break;case\"surface\":o=[[\"M-6,-6 A2,3 0 0,0 -6,0 H6 A2,3 0 0,1 6,-6 Z\"],[\"M-6,1 A2,3 0 0,1 -6,6 H6 A2,3 0 0,0 6,0 Z\"]],r=!0;break;case\"mesh3d\":o=[[\"M-6,6H0L-6,-6Z\"],[\"M6,6H0L6,-6Z\"],[\"M-6,-6H6L0,6Z\"]],r=!1;break;case\"volume\":o=[[\"M-6,6H0L-6,-6Z\"],[\"M6,6H0L6,-6Z\"],[\"M-6,-6H6L0,6Z\"]],r=!0;break;case\"isosurface\":o=[[\"M-6,6H0L-6,-6Z\"],[\"M6,6H0L6,-6Z\"],[\"M-6,-6 A12,24 0 0,0 6,-6 L0,6Z\"]],r=!1}var u=n.select(this).select(\"g.legendpoints\").selectAll(\"path.legend3dandfriends\").data(o);u.enter().append(\"path\").classed(\"legend3dandfriends\",!0).attr(\"transform\",_).style(\"stroke-miterlimit\",1),u.exit().remove(),u.each((function(t,o){var u,f=n.select(this),h=c(i),p=h.colorscale,g=h.reversescale;if(p){if(!r){var m=p.length;u=0===o?p[g?m-1:0][1]:1===o?p[g?0:m-1][1]:p[Math.floor((m-1)/2)][1]}}else{var v=i.vertexcolor||i.facecolor||i.color;u=a.isArrayOrTypedArray(v)?v[o]||v[0]:v}f.attr(\"d\",t[0]),u?f.call(l.fill,u):f.call((function(t){if(t.size()){var n=\"legendfill-\"+i.uid;s.gradient(t,e,n,d(g,\"radial\"===r),p,\"fill\")}}))}))})).each((function(t){var e=t[0].trace,r=\"waterfall\"===e.type;if(t[0]._distinct&&r){var i=t[0].trace[t[0].dir].marker;return t[0].mc=i.color,t[0].mlw=i.line.width,t[0].mlc=i.line.color,T(t,this,\"waterfall\")}var a=[];e.visible&&r&&(a=t[0].hasTotals?[[\"increasing\",\"M-6,-6V6H0Z\"],[\"totals\",\"M6,6H0L-6,-6H-0Z\"],[\"decreasing\",\"M6,6V-6H0Z\"]]:[[\"increasing\",\"M-6,-6V6H6Z\"],[\"decreasing\",\"M6,6V-6H-6Z\"]]);var o=n.select(this).select(\"g.legendpoints\").selectAll(\"path.legendwaterfall\").data(a);o.enter().append(\"path\").classed(\"legendwaterfall\",!0).attr(\"transform\",_).style(\"stroke-miterlimit\",1),o.exit().remove(),o.each((function(t){var r=n.select(this),i=e[t[0]].marker,a=w(void 0,i.line,5,2);r.attr(\"d\",t[1]).style(\"stroke-width\",a+\"px\").call(l.fill,i.color),a&&r.call(l.stroke,i.line.color)}))})).each((function(t){T(t,this,\"funnel\")})).each((function(t){T(t,this)})).each((function(t){var r=t[0].trace,o=n.select(this).select(\"g.legendpoints\").selectAll(\"path.legendbox\").data(r.visible&&i.traceIs(r,\"box-violin\")?[t]:[]);o.enter().append(\"path\").classed(\"legendbox\",!0).attr(\"d\",\"M6,6H-6V-6H6Z\").attr(\"transform\",_),o.exit().remove(),o.each((function(){var t=n.select(this);if(\"all\"!==r.boxpoints&&\"all\"!==r.points||0!==l.opacity(r.fillcolor)||0!==l.opacity((r.line||{}).color)){var i=w(void 0,r.line,5,2);t.style(\"stroke-width\",i+\"px\").call(l.fill,r.fillcolor),i&&l.stroke(t,r.line.color)}else{var c=a.minExtend(r,{marker:{size:y?12:a.constrain(r.marker.size,2,16),sizeref:1,sizemin:1,sizemode:\"diameter\"}});o.call(s.pointStyle,c,e)}}))})).each((function(t){k(t,this,\"funnelarea\")})).each((function(t){k(t,this,\"pie\")})).each((function(t){var r,i,o=g(t),l=o.showFill,f=o.showLine,h=o.showGradientLine,p=o.showGradientFill,m=o.anyFill,v=o.anyLine,y=t[0],b=y.trace,_=c(b),T=_.colorscale,k=_.reversescale,A=u.hasMarkers(b)||!m?\"M5,0\":v?\"M5,-2\":\"M5,-3\",M=n.select(this),S=M.select(\".legendfill\").selectAll(\"path\").data(l||p?[t]:[]);if(S.enter().append(\"path\").classed(\"js-fill\",!0),S.exit().remove(),S.attr(\"d\",A+\"h\"+x+\"v6h-\"+x+\"z\").call(l?s.fillGroupStyle:function(t){if(t.size()){var r=\"legendfill-\"+b.uid;s.gradient(t,e,r,d(k),T,\"fill\")}}),f||h){var E=w(void 0,b.line,10,5);i=a.minExtend(b,{line:{width:E}}),r=[a.minExtend(y,{trace:i})]}var L=M.select(\".legendlines\").selectAll(\"path\").data(f||h?[r]:[]);L.enter().append(\"path\").classed(\"js-line\",!0),L.exit().remove(),L.attr(\"d\",A+(h?\"l\"+x+\",0.0001\":\"h\"+x)).call(f?s.lineGroupStyle:function(t){if(t.size()){var r=\"legendline-\"+b.uid;s.lineGroupStyle(t),s.gradient(t,e,r,d(k),T,\"stroke\")}})})).each((function(t){var r,i,o=g(t),l=o.anyFill,c=o.anyLine,f=o.showLine,h=o.showMarker,p=t[0],d=p.trace,m=!h&&!c&&!l&&u.hasText(d);function v(t,e,r,n){var i=a.nestedProperty(d,t).get(),o=a.isArrayOrTypedArray(i)&&e?e(i):i;if(y&&o&&void 0!==n&&(o=n),r){if(or[1])return r[1]}return o}function x(t){return p._distinct&&p.index&&t[p.index]?t[p.index]:t[0]}if(h||m||f){var b={},w={};if(h){b.mc=v(\"marker.color\",x),b.mx=v(\"marker.symbol\",x),b.mo=v(\"marker.opacity\",a.mean,[.2,1]),b.mlc=v(\"marker.line.color\",x),b.mlw=v(\"marker.line.width\",a.mean,[0,5],2),w.marker={sizeref:1,sizemin:1,sizemode:\"diameter\"};var T=v(\"marker.size\",a.mean,[2,16],12);b.ms=T,w.marker.size=T}f&&(w.line={width:v(\"line.width\",x,[0,10],5)}),m&&(b.tx=\"Aa\",b.tp=v(\"textposition\",x),b.ts=10,b.tc=v(\"textfont.color\",x),b.tf=v(\"textfont.family\",x)),r=[a.minExtend(p,b)],(i=a.minExtend(d,w)).selectedpoints=null,i.texttemplate=null}var k=n.select(this).select(\"g.legendpoints\"),A=k.selectAll(\"path.scatterpts\").data(h?r:[]);A.enter().insert(\"path\",\":first-child\").classed(\"scatterpts\",!0).attr(\"transform\",_),A.exit().remove(),A.call(s.pointStyle,i,e),h&&(r[0].mrc=3);var M=k.selectAll(\"g.pointtext\").data(m?r:[]);M.enter().append(\"g\").classed(\"pointtext\",!0).append(\"text\").attr(\"transform\",_),M.exit().remove(),M.selectAll(\"text\").call(s.textPointStyle,i,e)})).each((function(t){var e=t[0].trace,r=n.select(this).select(\"g.legendpoints\").selectAll(\"path.legendcandle\").data(e.visible&&\"candlestick\"===e.type?[t,t]:[]);r.enter().append(\"path\").classed(\"legendcandle\",!0).attr(\"d\",(function(t,e){return e?\"M-15,0H-8M-8,6V-6H8Z\":\"M15,0H8M8,-6V6H-8Z\"})).attr(\"transform\",_).style(\"stroke-miterlimit\",1),r.exit().remove(),r.each((function(t,r){var i=n.select(this),a=e[r?\"increasing\":\"decreasing\"],o=w(void 0,a.line,5,2);i.style(\"stroke-width\",o+\"px\").call(l.fill,a.fillcolor),o&&l.stroke(i,a.line.color)}))})).each((function(t){var e=t[0].trace,r=n.select(this).select(\"g.legendpoints\").selectAll(\"path.legendohlc\").data(e.visible&&\"ohlc\"===e.type?[t,t]:[]);r.enter().append(\"path\").classed(\"legendohlc\",!0).attr(\"d\",(function(t,e){return e?\"M-15,0H0M-8,-6V0\":\"M15,0H0M8,6V0\"})).attr(\"transform\",_).style(\"stroke-miterlimit\",1),r.exit().remove(),r.each((function(t,r){var i=n.select(this),a=e[r?\"increasing\":\"decreasing\"],o=w(void 0,a.line,5,2);i.style(\"fill\",\"none\").call(s.dashLine,a.line.dash,o),o&&l.stroke(i,a.line.color)}))}))}},{\"../../lib\":503,\"../../registry\":638,\"../../traces/pie/helpers\":905,\"../../traces/pie/style_one\":911,\"../../traces/scatter/subtypes\":951,\"../color\":366,\"../colorscale/helpers\":377,\"../drawing\":388,\"./constants\":417,\"@plotly/d3\":58}],425:[function(t,e,r){\"use strict\";t(\"./constants\");e.exports={editType:\"modebar\",orientation:{valType:\"enumerated\",values:[\"v\",\"h\"],dflt:\"h\",editType:\"modebar\"},bgcolor:{valType:\"color\",editType:\"modebar\"},color:{valType:\"color\",editType:\"modebar\"},activecolor:{valType:\"color\",editType:\"modebar\"},uirevision:{valType:\"any\",editType:\"none\"},add:{valType:\"string\",arrayOk:!0,dflt:\"\",editType:\"modebar\"},remove:{valType:\"string\",arrayOk:!0,dflt:\"\",editType:\"modebar\"}}},{\"./constants\":427}],426:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../plots/plots\"),a=t(\"../../plots/cartesian/axis_ids\"),o=t(\"../../fonts/ploticon\"),s=t(\"../shapes/draw\").eraseActiveShape,l=t(\"../../lib\"),c=l._,u=e.exports={};function f(t,e){var r,i,o=e.currentTarget,s=o.getAttribute(\"data-attr\"),l=o.getAttribute(\"data-val\")||!0,c=t._fullLayout,u={},f=a.list(t,null,!0),h=c._cartesianSpikesEnabled;if(\"zoom\"===s){var p,d=\"in\"===l?.5:2,g=(1+d)/2,m=(1-d)/2;for(i=0;i1?(I=[\"toggleHover\"],O=[\"resetViews\"]):v?(P=[\"zoomInGeo\",\"zoomOutGeo\"],I=[\"hoverClosestGeo\"],O=[\"resetGeo\"]):m?(I=[\"hoverClosest3d\"],O=[\"resetCameraDefault3d\",\"resetCameraLastSave3d\"]):w?(P=[\"zoomInMapbox\",\"zoomOutMapbox\"],I=[\"toggleHover\"],O=[\"resetViewMapbox\"]):b?I=[\"hoverClosestGl2d\"]:y?I=[\"hoverClosestPie\"]:A?(I=[\"hoverClosestCartesian\",\"hoverCompareCartesian\"],O=[\"resetViewSankey\"]):I=[\"toggleHover\"];g&&(I=[\"toggleSpikelines\",\"hoverClosestCartesian\",\"hoverCompareCartesian\"]);(function(t){for(var e=0;e0)){var g=function(t,e,r){for(var n=r.filter((function(r){return e[r].anchor===t._id})),i=0,a=0;a=n.max)e=F[r+1];else if(t=n.pmax)e=F[r+1];else if(t0?h+c:c;return{ppad:c,ppadplus:u?d:g,ppadminus:u?g:d}}return{ppad:c}}function u(t,e,r,n,i){var s=\"category\"===t.type||\"multicategory\"===t.type?t.r2c:t.d2c;if(void 0!==e)return[s(e),s(r)];if(n){var l,c,u,f,h=1/0,p=-1/0,d=n.match(a.segmentRE);for(\"date\"===t.type&&(s=o.decodeDate(s)),l=0;lp&&(p=f)));return p>=h?[h,p]:void 0}}e.exports=function(t){var e=t._fullLayout,r=n.filterVisible(e.shapes);if(r.length&&t._fullData.length)for(var o=0;oy?(k=f,E=\"y0\",A=y,L=\"y1\"):(k=y,E=\"y1\",A=f,L=\"y0\");Z(n),Q(s,r),function(t,e,r){var n=e.xref,i=e.yref,o=a.getFromId(r,n),s=a.getFromId(r,i),l=\"\";\"paper\"===n||o.autorange||(l+=n);\"paper\"===i||s.autorange||(l+=i);u.setClipUrl(t,l?\"clip\"+r._fullLayout._uid+l:null,r)}(e,r,t),X.moveFn=\"move\"===O?J:K,X.altKey=n.altKey},doneFn:function(){if(v(t))return;p(e),$(s),b(e,t,r),n.call(\"_guiRelayout\",t,l.getUpdateObj())},clickFn:function(){if(v(t))return;$(s)}};function Z(r){if(v(t))O=null;else if(R)O=\"path\"===r.target.tagName?\"move\":\"start-point\"===r.target.attributes[\"data-line-point\"].value?\"resize-over-start-point\":\"resize-over-end-point\";else{var n=X.element.getBoundingClientRect(),i=n.right-n.left,a=n.bottom-n.top,o=r.clientX-n.left,s=r.clientY-n.top,l=!F&&i>10&&a>10&&!r.shiftKey?h.getCursor(o/i,1-s/a):\"move\";p(e,l),O=l.split(\"-\")[0]}}function J(n,i){if(\"path\"===r.type){var a=function(t){return t},o=a,l=a;z?B(\"xanchor\",r.xanchor=G(x+n)):(o=function(t){return G(H(t)+n)},N&&\"date\"===N.type&&(o=g.encodeDate(o))),D?B(\"yanchor\",r.yanchor=Y(T+i)):(l=function(t){return Y(q(t)+i)},U&&\"date\"===U.type&&(l=g.encodeDate(l))),B(\"path\",r.path=w(I,o,l))}else z?B(\"xanchor\",r.xanchor=G(x+n)):(B(\"x0\",r.x0=G(c+n)),B(\"x1\",r.x1=G(m+n))),D?B(\"yanchor\",r.yanchor=Y(T+i)):(B(\"y0\",r.y0=Y(f+i)),B(\"y1\",r.y1=Y(y+i)));e.attr(\"d\",_(t,r)),Q(s,r)}function K(n,i){if(F){var a=function(t){return t},o=a,l=a;z?B(\"xanchor\",r.xanchor=G(x+n)):(o=function(t){return G(H(t)+n)},N&&\"date\"===N.type&&(o=g.encodeDate(o))),D?B(\"yanchor\",r.yanchor=Y(T+i)):(l=function(t){return Y(q(t)+i)},U&&\"date\"===U.type&&(l=g.encodeDate(l))),B(\"path\",r.path=w(I,o,l))}else if(R){if(\"resize-over-start-point\"===O){var u=c+n,h=D?f-i:f+i;B(\"x0\",r.x0=z?u:G(u)),B(\"y0\",r.y0=D?h:Y(h))}else if(\"resize-over-end-point\"===O){var p=m+n,d=D?y-i:y+i;B(\"x1\",r.x1=z?p:G(p)),B(\"y1\",r.y1=D?d:Y(d))}}else{var v=function(t){return-1!==O.indexOf(t)},b=v(\"n\"),j=v(\"s\"),V=v(\"w\"),W=v(\"e\"),X=b?k+i:k,Z=j?A+i:A,J=V?M+n:M,K=W?S+n:S;D&&(b&&(X=k-i),j&&(Z=A-i)),(!D&&Z-X>10||D&&X-Z>10)&&(B(E,r[E]=D?X:Y(X)),B(L,r[L]=D?Z:Y(Z))),K-J>10&&(B(C,r[C]=z?J:G(J)),B(P,r[P]=z?K:G(K)))}e.attr(\"d\",_(t,r)),Q(s,r)}function Q(t,e){(z||D)&&function(){var r=\"path\"!==e.type,n=t.selectAll(\".visual-cue\").data([0]);n.enter().append(\"path\").attr({fill:\"#fff\",\"fill-rule\":\"evenodd\",stroke:\"#000\",\"stroke-width\":1}).classed(\"visual-cue\",!0);var a=H(z?e.xanchor:i.midRange(r?[e.x0,e.x1]:g.extractPathCoords(e.path,d.paramIsX))),o=q(D?e.yanchor:i.midRange(r?[e.y0,e.y1]:g.extractPathCoords(e.path,d.paramIsY)));if(a=g.roundPositionForSharpStrokeRendering(a,1),o=g.roundPositionForSharpStrokeRendering(o,1),z&&D){var s=\"M\"+(a-1-1)+\",\"+(o-1-1)+\"h-8v2h8 v8h2v-8 h8v-2h-8 v-8h-2 Z\";n.attr(\"d\",s)}else if(z){var l=\"M\"+(a-1-1)+\",\"+(o-9-1)+\"v18 h2 v-18 Z\";n.attr(\"d\",l)}else{var c=\"M\"+(a-9-1)+\",\"+(o-1-1)+\"h18 v2 h-18 Z\";n.attr(\"d\",c)}}()}function $(t){t.selectAll(\".visual-cue\").remove()}h.init(X),W.node().onmousemove=Z}(t,z,l,e,r,O):!0===l.editable&&z.style(\"pointer-events\",P||c.opacity(S)*M<=.5?\"stroke\":\"all\");z.node().addEventListener(\"click\",(function(){return function(t,e){if(!y(t))return;var r=+e.node().getAttribute(\"data-index\");if(r>=0){if(r===t._fullLayout._activeShapeIndex)return void T(t);t._fullLayout._activeShapeIndex=r,t._fullLayout._deactivateShape=T,m(t)}}(t,z)}))}}function b(t,e,r){var n=(r.xref+r.yref).replace(/paper/g,\"\").replace(/[xyz][1-9]* *domain/g,\"\");u.setClipUrl(t,n?\"clip\"+e._fullLayout._uid+n:null,e)}function _(t,e){var r,n,o,s,l,c,u,f,h=e.type,p=a.getRefType(e.xref),m=a.getRefType(e.yref),v=a.getFromId(t,e.xref),y=a.getFromId(t,e.yref),x=t._fullLayout._size;if(v?\"domain\"===p?n=function(t){return v._offset+v._length*t}:(r=g.shapePositionToRange(v),n=function(t){return v._offset+v.r2p(r(t,!0))}):n=function(t){return x.l+x.w*t},y?\"domain\"===m?s=function(t){return y._offset+y._length*(1-t)}:(o=g.shapePositionToRange(y),s=function(t){return y._offset+y.r2p(o(t,!0))}):s=function(t){return x.t+x.h*(1-t)},\"path\"===h)return v&&\"date\"===v.type&&(n=g.decodeDate(n)),y&&\"date\"===y.type&&(s=g.decodeDate(s)),function(t,e,r){var n=t.path,a=t.xsizemode,o=t.ysizemode,s=t.xanchor,l=t.yanchor;return n.replace(d.segmentRE,(function(t){var n=0,c=t.charAt(0),u=d.paramIsX[c],f=d.paramIsY[c],h=d.numParams[c],p=t.substr(1).replace(d.paramRE,(function(t){return u[n]?t=\"pixel\"===a?e(s)+Number(t):e(t):f[n]&&(t=\"pixel\"===o?r(l)-Number(t):r(t)),++n>h&&(t=\"X\"),t}));return n>h&&(p=p.replace(/[\\s,]*X.*/,\"\"),i.log(\"Ignoring extra params in segment \"+t)),c+p}))}(e,n,s);if(\"pixel\"===e.xsizemode){var b=n(e.xanchor);l=b+e.x0,c=b+e.x1}else l=n(e.x0),c=n(e.x1);if(\"pixel\"===e.ysizemode){var _=s(e.yanchor);u=_-e.y0,f=_-e.y1}else u=s(e.y0),f=s(e.y1);if(\"line\"===h)return\"M\"+l+\",\"+u+\"L\"+c+\",\"+f;if(\"rect\"===h)return\"M\"+l+\",\"+u+\"H\"+c+\"V\"+f+\"H\"+l+\"Z\";var w=(l+c)/2,T=(u+f)/2,k=Math.abs(w-l),A=Math.abs(T-u),M=\"A\"+k+\",\"+A,S=w+k+\",\"+T;return\"M\"+S+M+\" 0 1,1 \"+(w+\",\"+(T-A))+M+\" 0 0,1 \"+S+\"Z\"}function w(t,e,r){return t.replace(d.segmentRE,(function(t){var n=0,i=t.charAt(0),a=d.paramIsX[i],o=d.paramIsY[i],s=d.numParams[i];return i+t.substr(1).replace(d.paramRE,(function(t){return n>=s||(a[n]?t=e(t):o[n]&&(t=r(t)),n++),t}))}))}function T(t){y(t)&&(t._fullLayout._activeShapeIndex>=0&&(l(t),delete t._fullLayout._activeShapeIndex,m(t)))}e.exports={draw:m,drawOne:x,eraseActiveShape:function(t){if(!y(t))return;l(t);var e=t._fullLayout._activeShapeIndex,r=(t.layout||{}).shapes||[];if(e=0&&f(v),r.attr(\"d\",g(e)),A&&!h)&&(k=function(t,e){for(var r=0;r1&&(2!==t.length||\"Z\"!==t[1][0])&&(0===T&&(t[0][0]=\"M\"),e[w]=t,y(),x())}}()}}function I(t,r){!function(t,r){if(e.length)for(var n=0;n0&&l0&&(s=s.transition().duration(e.transition.duration).ease(e.transition.easing)),s.attr(\"transform\",l(o-.5*f.gripWidth,e._dims.currentValueTotalHeight))}}function E(t,e){var r=t._dims;return r.inputAreaStart+f.stepInset+(r.inputAreaLength-2*f.stepInset)*Math.min(1,Math.max(0,e))}function L(t,e){var r=t._dims;return Math.min(1,Math.max(0,(e-f.stepInset-r.inputAreaStart)/(r.inputAreaLength-2*f.stepInset-2*r.inputAreaStart)))}function C(t,e,r){var n=r._dims,i=s.ensureSingle(t,\"rect\",f.railTouchRectClass,(function(n){n.call(A,e,t,r).style(\"pointer-events\",\"all\")}));i.attr({width:n.inputAreaLength,height:Math.max(n.inputAreaWidth,f.tickOffset+r.ticklen+n.labelHeight)}).call(a.fill,r.bgcolor).attr(\"opacity\",0),o.setTranslate(i,0,n.currentValueTotalHeight)}function P(t,e){var r=e._dims,n=r.inputAreaLength-2*f.railInset,i=s.ensureSingle(t,\"rect\",f.railRectClass);i.attr({width:n,height:f.railWidth,rx:f.railRadius,ry:f.railRadius,\"shape-rendering\":\"crispEdges\"}).call(a.stroke,e.bordercolor).call(a.fill,e.bgcolor).style(\"stroke-width\",e.borderwidth+\"px\"),o.setTranslate(i,f.railInset,.5*(r.inputAreaWidth-f.railWidth)+r.currentValueTotalHeight)}e.exports=function(t){var e=t._fullLayout,r=function(t,e){for(var r=t[f.name],n=[],i=0;i0?[0]:[]);function s(e){e._commandObserver&&(e._commandObserver.remove(),delete e._commandObserver),i.autoMargin(t,m(e))}if(a.enter().append(\"g\").classed(f.containerClassName,!0).style(\"cursor\",\"ew-resize\"),a.exit().each((function(){n.select(this).selectAll(\"g.\"+f.groupClassName).each(s)})).remove(),0!==r.length){var l=a.selectAll(\"g.\"+f.groupClassName).data(r,v);l.enter().append(\"g\").classed(f.groupClassName,!0),l.exit().each(s).remove();for(var c=0;c0||h<0){var v={left:[-d,0],right:[d,0],top:[0,-d],bottom:[0,d]}[b.side];e.attr(\"transform\",l(v[0],v[1]))}}}return R.call(F),O&&(E?R.on(\".opacity\",null):(A=0,M=!0,R.text(y).on(\"mouseover.opacity\",(function(){n.select(this).transition().duration(h.SHOW_PLACEHOLDER).style(\"opacity\",1)})).on(\"mouseout.opacity\",(function(){n.select(this).transition().duration(h.HIDE_PLACEHOLDER).style(\"opacity\",0)}))),R.call(f.makeEditable,{gd:t}).on(\"edit\",(function(e){void 0!==x?o.call(\"_guiRestyle\",t,v,e,x):o.call(\"_guiRelayout\",t,v,e)})).on(\"cancel\",(function(){this.text(this.attr(\"data-unformatted\")).call(F)})).on(\"input\",(function(t){this.text(t||\" \").call(f.positionText,_.x,_.y)}))),R.classed(\"js-placeholder\",M),T}}},{\"../../constants/alignment\":471,\"../../constants/interactions\":478,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../../plots/plots\":619,\"../../registry\":638,\"../color\":366,\"../drawing\":388,\"@plotly/d3\":58,\"fast-isnumeric\":190}],465:[function(t,e,r){\"use strict\";var n=t(\"../../plots/font_attributes\"),i=t(\"../color/attributes\"),a=t(\"../../lib/extend\").extendFlat,o=t(\"../../plot_api/edit_types\").overrideAll,s=t(\"../../plots/pad_attributes\"),l=t(\"../../plot_api/plot_template\").templatedArray,c=l(\"button\",{visible:{valType:\"boolean\"},method:{valType:\"enumerated\",values:[\"restyle\",\"relayout\",\"animate\",\"update\",\"skip\"],dflt:\"restyle\"},args:{valType:\"info_array\",freeLength:!0,items:[{valType:\"any\"},{valType:\"any\"},{valType:\"any\"}]},args2:{valType:\"info_array\",freeLength:!0,items:[{valType:\"any\"},{valType:\"any\"},{valType:\"any\"}]},label:{valType:\"string\",dflt:\"\"},execute:{valType:\"boolean\",dflt:!0}});e.exports=o(l(\"updatemenu\",{_arrayAttrRegexps:[/^updatemenus\\[(0|[1-9][0-9]+)\\]\\.buttons/],visible:{valType:\"boolean\"},type:{valType:\"enumerated\",values:[\"dropdown\",\"buttons\"],dflt:\"dropdown\"},direction:{valType:\"enumerated\",values:[\"left\",\"right\",\"up\",\"down\"],dflt:\"down\"},active:{valType:\"integer\",min:-1,dflt:0},showactive:{valType:\"boolean\",dflt:!0},buttons:c,x:{valType:\"number\",min:-2,max:3,dflt:-.05},xanchor:{valType:\"enumerated\",values:[\"auto\",\"left\",\"center\",\"right\"],dflt:\"right\"},y:{valType:\"number\",min:-2,max:3,dflt:1},yanchor:{valType:\"enumerated\",values:[\"auto\",\"top\",\"middle\",\"bottom\"],dflt:\"top\"},pad:a(s({editType:\"arraydraw\"}),{}),font:n({}),bgcolor:{valType:\"color\"},bordercolor:{valType:\"color\",dflt:i.borderLine},borderwidth:{valType:\"number\",min:0,dflt:1,editType:\"arraydraw\"}}),\"arraydraw\",\"from-root\")},{\"../../lib/extend\":493,\"../../plot_api/edit_types\":536,\"../../plot_api/plot_template\":543,\"../../plots/font_attributes\":585,\"../../plots/pad_attributes\":618,\"../color/attributes\":365}],466:[function(t,e,r){\"use strict\";e.exports={name:\"updatemenus\",containerClassName:\"updatemenu-container\",headerGroupClassName:\"updatemenu-header-group\",headerClassName:\"updatemenu-header\",headerArrowClassName:\"updatemenu-header-arrow\",dropdownButtonGroupClassName:\"updatemenu-dropdown-button-group\",dropdownButtonClassName:\"updatemenu-dropdown-button\",buttonClassName:\"updatemenu-button\",itemRectClassName:\"updatemenu-item-rect\",itemTextClassName:\"updatemenu-item-text\",menuIndexAttrName:\"updatemenu-active-index\",autoMarginIdRoot:\"updatemenu-\",blankHeaderOpts:{label:\" \"},minWidth:30,minHeight:30,textPadX:24,arrowPadX:16,rx:2,ry:2,textOffsetX:12,textOffsetY:3,arrowOffsetX:4,gapButtonHeader:5,gapButton:2,activeColor:\"#F4FAFF\",hoverColor:\"#F4FAFF\",arrowSymbol:{left:\"\\u25c4\",right:\"\\u25ba\",up:\"\\u25b2\",down:\"\\u25bc\"}}},{}],467:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../plots/array_container_defaults\"),a=t(\"./attributes\"),o=t(\"./constants\").name,s=a.buttons;function l(t,e,r){function o(r,i){return n.coerce(t,e,a,r,i)}o(\"visible\",i(t,e,{name:\"buttons\",handleItemDefaults:c}).length>0)&&(o(\"active\"),o(\"direction\"),o(\"type\"),o(\"showactive\"),o(\"x\"),o(\"y\"),n.noneOrAll(t,e,[\"x\",\"y\"]),o(\"xanchor\"),o(\"yanchor\"),o(\"pad.t\"),o(\"pad.r\"),o(\"pad.b\"),o(\"pad.l\"),n.coerceFont(o,\"font\",r.font),o(\"bgcolor\",r.paper_bgcolor),o(\"bordercolor\"),o(\"borderwidth\"))}function c(t,e){function r(r,i){return n.coerce(t,e,s,r,i)}r(\"visible\",\"skip\"===t.method||Array.isArray(t.args))&&(r(\"method\"),r(\"args\"),r(\"args2\"),r(\"label\"),r(\"execute\"))}e.exports=function(t,e){i(t,e,{name:o,handleItemDefaults:l})}},{\"../../lib\":503,\"../../plots/array_container_defaults\":549,\"./attributes\":465,\"./constants\":466}],468:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../plots/plots\"),a=t(\"../color\"),o=t(\"../drawing\"),s=t(\"../../lib\"),l=t(\"../../lib/svg_text_utils\"),c=t(\"../../plot_api/plot_template\").arrayEditor,u=t(\"../../constants/alignment\").LINE_SPACING,f=t(\"./constants\"),h=t(\"./scrollbox\");function p(t){return t._index}function d(t,e){return+t.attr(f.menuIndexAttrName)===e._index}function g(t,e,r,n,i,a,o,s){e.active=o,c(t.layout,f.name,e).applyUpdate(\"active\",o),\"buttons\"===e.type?v(t,n,null,null,e):\"dropdown\"===e.type&&(i.attr(f.menuIndexAttrName,\"-1\"),m(t,n,i,a,e),s||v(t,n,i,a,e))}function m(t,e,r,n,i){var a=s.ensureSingle(e,\"g\",f.headerClassName,(function(t){t.style(\"pointer-events\",\"all\")})),l=i._dims,c=i.active,u=i.buttons[c]||f.blankHeaderOpts,h={y:i.pad.t,yPad:0,x:i.pad.l,xPad:0,index:0},p={width:l.headerWidth,height:l.headerHeight};a.call(y,i,u,t).call(M,i,h,p),s.ensureSingle(e,\"text\",f.headerArrowClassName,(function(t){t.attr(\"text-anchor\",\"end\").call(o.font,i.font).text(f.arrowSymbol[i.direction])})).attr({x:l.headerWidth-f.arrowOffsetX+i.pad.l,y:l.headerHeight/2+f.textOffsetY+i.pad.t}),a.on(\"click\",(function(){r.call(S,String(d(r,i)?-1:i._index)),v(t,e,r,n,i)})),a.on(\"mouseover\",(function(){a.call(w)})),a.on(\"mouseout\",(function(){a.call(T,i)})),o.setTranslate(e,l.lx,l.ly)}function v(t,e,r,a,o){r||(r=e).attr(\"pointer-events\",\"all\");var l=function(t){return-1==+t.attr(f.menuIndexAttrName)}(r)&&\"buttons\"!==o.type?[]:o.buttons,c=\"dropdown\"===o.type?f.dropdownButtonClassName:f.buttonClassName,u=r.selectAll(\"g.\"+c).data(s.filterVisible(l)),h=u.enter().append(\"g\").classed(c,!0),p=u.exit();\"dropdown\"===o.type?(h.attr(\"opacity\",\"0\").transition().attr(\"opacity\",\"1\"),p.transition().attr(\"opacity\",\"0\").remove()):p.remove();var d=0,m=0,v=o._dims,x=-1!==[\"up\",\"down\"].indexOf(o.direction);\"dropdown\"===o.type&&(x?m=v.headerHeight+f.gapButtonHeader:d=v.headerWidth+f.gapButtonHeader),\"dropdown\"===o.type&&\"up\"===o.direction&&(m=-f.gapButtonHeader+f.gapButton-v.openHeight),\"dropdown\"===o.type&&\"left\"===o.direction&&(d=-f.gapButtonHeader+f.gapButton-v.openWidth);var b={x:v.lx+d+o.pad.l,y:v.ly+m+o.pad.t,yPad:f.gapButton,xPad:f.gapButton,index:0},k={l:b.x+o.borderwidth,t:b.y+o.borderwidth};u.each((function(s,l){var c=n.select(this);c.call(y,o,s,t).call(M,o,b),c.on(\"click\",(function(){n.event.defaultPrevented||(s.execute&&(s.args2&&o.active===l?(g(t,o,0,e,r,a,-1),i.executeAPICommand(t,s.method,s.args2)):(g(t,o,0,e,r,a,l),i.executeAPICommand(t,s.method,s.args))),t.emit(\"plotly_buttonclicked\",{menu:o,button:s,active:o.active}))})),c.on(\"mouseover\",(function(){c.call(w)})),c.on(\"mouseout\",(function(){c.call(T,o),u.call(_,o)}))})),u.call(_,o),x?(k.w=Math.max(v.openWidth,v.headerWidth),k.h=b.y-k.t):(k.w=b.x-k.l,k.h=Math.max(v.openHeight,v.headerHeight)),k.direction=o.direction,a&&(u.size()?function(t,e,r,n,i,a){var o,s,l,c=i.direction,u=\"up\"===c||\"down\"===c,h=i._dims,p=i.active;if(u)for(s=0,l=0;l0?[0]:[]);if(o.enter().append(\"g\").classed(f.containerClassName,!0).style(\"cursor\",\"pointer\"),o.exit().each((function(){n.select(this).selectAll(\"g.\"+f.headerGroupClassName).each(a)})).remove(),0!==r.length){var l=o.selectAll(\"g.\"+f.headerGroupClassName).data(r,p);l.enter().append(\"g\").classed(f.headerGroupClassName,!0);for(var c=s.ensureSingle(o,\"g\",f.dropdownButtonGroupClassName,(function(t){t.style(\"pointer-events\",\"all\")})),u=0;uw,A=s.barLength+2*s.barPad,M=s.barWidth+2*s.barPad,S=d,E=m+v;E+M>c&&(E=c-M);var L=this.container.selectAll(\"rect.scrollbar-horizontal\").data(k?[0]:[]);L.exit().on(\".drag\",null).remove(),L.enter().append(\"rect\").classed(\"scrollbar-horizontal\",!0).call(i.fill,s.barColor),k?(this.hbar=L.attr({rx:s.barRadius,ry:s.barRadius,x:S,y:E,width:A,height:M}),this._hbarXMin=S+A/2,this._hbarTranslateMax=w-A):(delete this.hbar,delete this._hbarXMin,delete this._hbarTranslateMax);var C=v>T,P=s.barWidth+2*s.barPad,I=s.barLength+2*s.barPad,O=d+g,z=m;O+P>l&&(O=l-P);var D=this.container.selectAll(\"rect.scrollbar-vertical\").data(C?[0]:[]);D.exit().on(\".drag\",null).remove(),D.enter().append(\"rect\").classed(\"scrollbar-vertical\",!0).call(i.fill,s.barColor),C?(this.vbar=D.attr({rx:s.barRadius,ry:s.barRadius,x:O,y:z,width:P,height:I}),this._vbarYMin=z+I/2,this._vbarTranslateMax=T-I):(delete this.vbar,delete this._vbarYMin,delete this._vbarTranslateMax);var R=this.id,F=u-.5,B=C?f+P+.5:f+.5,N=h-.5,j=k?p+M+.5:p+.5,U=o._topdefs.selectAll(\"#\"+R).data(k||C?[0]:[]);if(U.exit().remove(),U.enter().append(\"clipPath\").attr(\"id\",R).append(\"rect\"),k||C?(this._clipRect=U.select(\"rect\").attr({x:Math.floor(F),y:Math.floor(N),width:Math.ceil(B)-Math.floor(F),height:Math.ceil(j)-Math.floor(N)}),this.container.call(a.setClipUrl,R,this.gd),this.bg.attr({x:d,y:m,width:g,height:v})):(this.bg.attr({width:0,height:0}),this.container.on(\"wheel\",null).on(\".drag\",null).call(a.setClipUrl,null),delete this._clipRect),k||C){var V=n.behavior.drag().on(\"dragstart\",(function(){n.event.sourceEvent.preventDefault()})).on(\"drag\",this._onBoxDrag.bind(this));this.container.on(\"wheel\",null).on(\"wheel\",this._onBoxWheel.bind(this)).on(\".drag\",null).call(V);var H=n.behavior.drag().on(\"dragstart\",(function(){n.event.sourceEvent.preventDefault(),n.event.sourceEvent.stopPropagation()})).on(\"drag\",this._onBarDrag.bind(this));k&&this.hbar.on(\".drag\",null).call(H),C&&this.vbar.on(\".drag\",null).call(H)}this.setTranslate(e,r)},s.prototype.disable=function(){(this.hbar||this.vbar)&&(this.bg.attr({width:0,height:0}),this.container.on(\"wheel\",null).on(\".drag\",null).call(a.setClipUrl,null),delete this._clipRect),this.hbar&&(this.hbar.on(\".drag\",null),this.hbar.remove(),delete this.hbar,delete this._hbarXMin,delete this._hbarTranslateMax),this.vbar&&(this.vbar.on(\".drag\",null),this.vbar.remove(),delete this.vbar,delete this._vbarYMin,delete this._vbarTranslateMax)},s.prototype._onBoxDrag=function(){var t=this.translateX,e=this.translateY;this.hbar&&(t-=n.event.dx),this.vbar&&(e-=n.event.dy),this.setTranslate(t,e)},s.prototype._onBoxWheel=function(){var t=this.translateX,e=this.translateY;this.hbar&&(t+=n.event.deltaY),this.vbar&&(e+=n.event.deltaY),this.setTranslate(t,e)},s.prototype._onBarDrag=function(){var t=this.translateX,e=this.translateY;if(this.hbar){var r=t+this._hbarXMin,i=r+this._hbarTranslateMax;t=(o.constrain(n.event.x,r,i)-r)/(i-r)*(this.position.w-this._box.w)}if(this.vbar){var a=e+this._vbarYMin,s=a+this._vbarTranslateMax;e=(o.constrain(n.event.y,a,s)-a)/(s-a)*(this.position.h-this._box.h)}this.setTranslate(t,e)},s.prototype.setTranslate=function(t,e){var r=this.position.w-this._box.w,n=this.position.h-this._box.h;if(t=o.constrain(t||0,0,r),e=o.constrain(e||0,0,n),this.translateX=t,this.translateY=e,this.container.call(a.setTranslate,this._box.l-this.position.l-t,this._box.t-this.position.t-e),this._clipRect&&this._clipRect.attr({x:Math.floor(this.position.l+t-.5),y:Math.floor(this.position.t+e-.5)}),this.hbar){var i=t/r;this.hbar.call(a.setTranslate,t+i*this._hbarTranslateMax,e)}if(this.vbar){var s=e/n;this.vbar.call(a.setTranslate,t,e+s*this._vbarTranslateMax)}}},{\"../../lib\":503,\"../color\":366,\"../drawing\":388,\"@plotly/d3\":58}],471:[function(t,e,r){\"use strict\";e.exports={FROM_BL:{left:0,center:.5,right:1,bottom:0,middle:.5,top:1},FROM_TL:{left:0,center:.5,right:1,bottom:1,middle:.5,top:0},FROM_BR:{left:1,center:.5,right:0,bottom:0,middle:.5,top:1},LINE_SPACING:1.3,CAP_SHIFT:.7,MID_SHIFT:.35,OPPOSITE_SIDE:{left:\"right\",right:\"left\",top:\"bottom\",bottom:\"top\"}}},{}],472:[function(t,e,r){\"use strict\";e.exports={axisRefDescription:function(t,e,r){return[\"If set to a\",t,\"axis id (e.g. *\"+t+\"* or\",\"*\"+t+\"2*), the `\"+t+\"` position refers to a\",t,\"coordinate. If set to *paper*, the `\"+t+\"`\",\"position refers to the distance from the\",e,\"of the plotting\",\"area in normalized coordinates where *0* (*1*) corresponds to the\",e,\"(\"+r+\"). If set to a\",t,\"axis ID followed by\",\"*domain* (separated by a space), the position behaves like for\",\"*paper*, but refers to the distance in fractions of the domain\",\"length from the\",e,\"of the domain of that axis: e.g.,\",\"*\"+t+\"2 domain* refers to the domain of the second\",t,\" axis and a\",t,\"position of 0.5 refers to the\",\"point between the\",e,\"and the\",r,\"of the domain of the\",\"second\",t,\"axis.\"].join(\" \")}}},{}],473:[function(t,e,r){\"use strict\";e.exports={INCREASING:{COLOR:\"#3D9970\",SYMBOL:\"\\u25b2\"},DECREASING:{COLOR:\"#FF4136\",SYMBOL:\"\\u25bc\"}}},{}],474:[function(t,e,r){\"use strict\";e.exports={FORMAT_LINK:\"https://github.com/d3/d3-format/tree/v1.4.5#d3-format\",DATE_FORMAT_LINK:\"https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format\"}},{}],475:[function(t,e,r){\"use strict\";e.exports={COMPARISON_OPS:[\"=\",\"!=\",\"<\",\">=\",\">\",\"<=\"],COMPARISON_OPS2:[\"=\",\"<\",\">=\",\">\",\"<=\"],INTERVAL_OPS:[\"[]\",\"()\",\"[)\",\"(]\",\"][\",\")(\",\"](\",\")[\"],SET_OPS:[\"{}\",\"}{\"],CONSTRAINT_REDUCTION:{\"=\":\"=\",\"<\":\"<\",\"<=\":\"<\",\">\":\">\",\">=\":\">\",\"[]\":\"[]\",\"()\":\"[]\",\"[)\":\"[]\",\"(]\":\"[]\",\"][\":\"][\",\")(\":\"][\",\"](\":\"][\",\")[\":\"][\"}}},{}],476:[function(t,e,r){\"use strict\";e.exports={solid:[[],0],dot:[[.5,1],200],dash:[[.5,1],50],longdash:[[.5,1],10],dashdot:[[.5,.625,.875,1],50],longdashdot:[[.5,.7,.8,1],10]}},{}],477:[function(t,e,r){\"use strict\";e.exports={circle:\"\\u25cf\",\"circle-open\":\"\\u25cb\",square:\"\\u25a0\",\"square-open\":\"\\u25a1\",diamond:\"\\u25c6\",\"diamond-open\":\"\\u25c7\",cross:\"+\",x:\"\\u274c\"}},{}],478:[function(t,e,r){\"use strict\";e.exports={SHOW_PLACEHOLDER:100,HIDE_PLACEHOLDER:1e3,DESELECTDIM:.2}},{}],479:[function(t,e,r){\"use strict\";e.exports={BADNUM:void 0,FP_SAFE:1e-4*Number.MAX_VALUE,ONEMAXYEAR:316224e5,ONEAVGYEAR:315576e5,ONEMINYEAR:31536e6,ONEMAXQUARTER:79488e5,ONEAVGQUARTER:78894e5,ONEMINQUARTER:76896e5,ONEMAXMONTH:26784e5,ONEAVGMONTH:26298e5,ONEMINMONTH:24192e5,ONEWEEK:6048e5,ONEDAY:864e5,ONEHOUR:36e5,ONEMIN:6e4,ONESEC:1e3,EPOCHJD:2440587.5,ALMOST_EQUAL:.999999,LOG_CLIP:10,MINUS_SIGN:\"\\u2212\"}},{}],480:[function(t,e,r){\"use strict\";r.xmlns=\"http://www.w3.org/2000/xmlns/\",r.svg=\"http://www.w3.org/2000/svg\",r.xlink=\"http://www.w3.org/1999/xlink\",r.svgAttrs={xmlns:r.svg,\"xmlns:xlink\":r.xlink}},{}],481:[function(t,e,r){\"use strict\";r.version=t(\"./version\").version,t(\"native-promise-only\"),t(\"../build/plotcss\");for(var n=t(\"./registry\"),i=r.register=n.register,a=t(\"./plot_api\"),o=Object.keys(a),s=0;splotly-logomark\"}}},{}],483:[function(t,e,r){\"use strict\";r.isLeftAnchor=function(t){return\"left\"===t.xanchor||\"auto\"===t.xanchor&&t.x<=1/3},r.isCenterAnchor=function(t){return\"center\"===t.xanchor||\"auto\"===t.xanchor&&t.x>1/3&&t.x<2/3},r.isRightAnchor=function(t){return\"right\"===t.xanchor||\"auto\"===t.xanchor&&t.x>=2/3},r.isTopAnchor=function(t){return\"top\"===t.yanchor||\"auto\"===t.yanchor&&t.y>=2/3},r.isMiddleAnchor=function(t){return\"middle\"===t.yanchor||\"auto\"===t.yanchor&&t.y>1/3&&t.y<2/3},r.isBottomAnchor=function(t){return\"bottom\"===t.yanchor||\"auto\"===t.yanchor&&t.y<=1/3}},{}],484:[function(t,e,r){\"use strict\";var n=t(\"./mod\"),i=n.mod,a=n.modHalf,o=Math.PI,s=2*o;function l(t){return Math.abs(t[1]-t[0])>s-1e-14}function c(t,e){return a(e-t,s)}function u(t,e){if(l(e))return!0;var r,n;e[0](n=i(n,s))&&(n+=s);var a=i(t,s),o=a+s;return a>=r&&a<=n||o>=r&&o<=n}function f(t,e,r,n,i,a,c){i=i||0,a=a||0;var u,f,h,p,d,g=l([r,n]);function m(t,e){return[t*Math.cos(e)+i,a-t*Math.sin(e)]}g?(u=0,f=o,h=s):r=i&&t<=a);var i,a},pathArc:function(t,e,r,n,i){return f(null,t,e,r,n,i,0)},pathSector:function(t,e,r,n,i){return f(null,t,e,r,n,i,1)},pathAnnulus:function(t,e,r,n,i,a){return f(t,e,r,n,i,a,1)}}},{\"./mod\":510}],485:[function(t,e,r){\"use strict\";var n=Array.isArray,i=ArrayBuffer,a=DataView;function o(t){return i.isView(t)&&!(t instanceof a)}function s(t){return n(t)||o(t)}function l(t,e,r){if(s(t)){if(s(t[0])){for(var n=r,i=0;ii.max?e.set(r):e.set(+t)}},integer:{coerceFunction:function(t,e,r,i){t%1||!n(t)||void 0!==i.min&&ti.max?e.set(r):e.set(+t)}},string:{coerceFunction:function(t,e,r,n){if(\"string\"!=typeof t){var i=\"number\"==typeof t;!0!==n.strict&&i?e.set(String(t)):e.set(r)}else n.noBlank&&!t?e.set(r):e.set(t)}},color:{coerceFunction:function(t,e,r){i(t).isValid()?e.set(t):e.set(r)}},colorlist:{coerceFunction:function(t,e,r){Array.isArray(t)&&t.length&&t.every((function(t){return i(t).isValid()}))?e.set(t):e.set(r)}},colorscale:{coerceFunction:function(t,e,r){e.set(o.get(t,r))}},angle:{coerceFunction:function(t,e,r){\"auto\"===t?e.set(\"auto\"):n(t)?e.set(f(+t,360)):e.set(r)}},subplotid:{coerceFunction:function(t,e,r,n){var i=n.regex||u(r);\"string\"==typeof t&&i.test(t)?e.set(t):e.set(r)},validateFunction:function(t,e){var r=e.dflt;return t===r||\"string\"==typeof t&&!!u(r).test(t)}},flaglist:{coerceFunction:function(t,e,r,n){if(\"string\"==typeof t)if(-1===(n.extras||[]).indexOf(t)){for(var i=t.split(\"+\"),a=0;a=n&&t<=i?t:u}if(\"string\"!=typeof t&&\"number\"!=typeof t)return u;t=String(t);var c=_(e),v=t.charAt(0);!c||\"G\"!==v&&\"g\"!==v||(t=t.substr(1),e=\"\");var w=c&&\"chinese\"===e.substr(0,7),T=t.match(w?x:y);if(!T)return u;var k=T[1],A=T[3]||\"1\",M=Number(T[5]||1),S=Number(T[7]||0),E=Number(T[9]||0),L=Number(T[11]||0);if(c){if(2===k.length)return u;var C;k=Number(k);try{var P=m.getComponentMethod(\"calendars\",\"getCal\")(e);if(w){var I=\"i\"===A.charAt(A.length-1);A=parseInt(A,10),C=P.newDate(k,P.toMonthIndex(k,A,I),M)}else C=P.newDate(k,Number(A),M)}catch(t){return u}return C?(C.toJD()-g)*f+S*h+E*p+L*d:u}k=2===k.length?(Number(k)+2e3-b)%100+b:Number(k),A-=1;var O=new Date(Date.UTC(2e3,A,M,S,E));return O.setUTCFullYear(k),O.getUTCMonth()!==A||O.getUTCDate()!==M?u:O.getTime()+L*d},n=r.MIN_MS=r.dateTime2ms(\"-9999\"),i=r.MAX_MS=r.dateTime2ms(\"9999-12-31 23:59:59.9999\"),r.isDateTime=function(t,e){return r.dateTime2ms(t,e)!==u};var T=90*f,k=3*h,A=5*p;function M(t,e,r,n,i){if((e||r||n||i)&&(t+=\" \"+w(e,2)+\":\"+w(r,2),(n||i)&&(t+=\":\"+w(n,2),i))){for(var a=4;i%10==0;)a-=1,i/=10;t+=\".\"+w(i,a)}return t}r.ms2DateTime=function(t,e,r){if(\"number\"!=typeof t||!(t>=n&&t<=i))return u;e||(e=0);var a,o,s,c,y,x,b=Math.floor(10*l(t+.05,1)),w=Math.round(t-b/10);if(_(r)){var S=Math.floor(w/f)+g,E=Math.floor(l(t,f));try{a=m.getComponentMethod(\"calendars\",\"getCal\")(r).fromJD(S).formatDate(\"yyyy-mm-dd\")}catch(t){a=v(\"G%Y-%m-%d\")(new Date(w))}if(\"-\"===a.charAt(0))for(;a.length<11;)a=\"-0\"+a.substr(1);else for(;a.length<10;)a=\"0\"+a;o=e=n+f&&t<=i-f))return u;var e=Math.floor(10*l(t+.05,1)),r=new Date(Math.round(t-e/10));return M(a(\"%Y-%m-%d\")(r),r.getHours(),r.getMinutes(),r.getSeconds(),10*r.getUTCMilliseconds()+e)},r.cleanDate=function(t,e,n){if(t===u)return e;if(r.isJSDate(t)||\"number\"==typeof t&&isFinite(t)){if(_(n))return s.error(\"JS Dates and milliseconds are incompatible with world calendars\",t),e;if(!(t=r.ms2DateTimeLocal(+t))&&void 0!==e)return e}else if(!r.isDateTime(t,n))return s.error(\"unrecognized date\",t),e;return t};var S=/%\\d?f/g,E=/%h/g,L={1:\"1\",2:\"1\",3:\"2\",4:\"2\"};function C(t,e,r,n){t=t.replace(S,(function(t){var r=Math.min(+t.charAt(1)||6,6);return(e/1e3%1+2).toFixed(r).substr(2).replace(/0+$/,\"\")||\"0\"}));var i=new Date(Math.floor(e+.05));if(t=t.replace(E,(function(){return L[r(\"%q\")(i)]})),_(n))try{t=m.getComponentMethod(\"calendars\",\"worldCalFmt\")(t,e,n)}catch(t){return\"Invalid\"}return r(t)(i)}var P=[59,59.9,59.99,59.999,59.9999];r.formatDate=function(t,e,r,n,i,a){if(i=_(i)&&i,!e)if(\"y\"===r)e=a.year;else if(\"m\"===r)e=a.month;else{if(\"d\"!==r)return function(t,e){var r=l(t+.05,f),n=w(Math.floor(r/h),2)+\":\"+w(l(Math.floor(r/p),60),2);if(\"M\"!==e){o(e)||(e=0);var i=(100+Math.min(l(t/d,60),P[e])).toFixed(e).substr(1);e>0&&(i=i.replace(/0+$/,\"\").replace(/[\\.]$/,\"\")),n+=\":\"+i}return n}(t,r)+\"\\n\"+C(a.dayMonthYear,t,n,i);e=a.dayMonth+\"\\n\"+a.year}return C(e,t,n,i)};var I=3*f;r.incrementMonth=function(t,e,r){r=_(r)&&r;var n=l(t,f);if(t=Math.round(t-n),r)try{var i=Math.round(t/f)+g,a=m.getComponentMethod(\"calendars\",\"getCal\")(r),o=a.fromJD(i);return e%12?a.add(o,e,\"m\"):a.add(o,e/12,\"y\"),(o.toJD()-g)*f+n}catch(e){s.error(\"invalid ms \"+t+\" in calendar \"+r)}var c=new Date(t+I);return c.setUTCMonth(c.getUTCMonth()+e)+n-I},r.findExactDates=function(t,e){for(var r,n,i=0,a=0,s=0,l=0,c=_(e)&&m.getComponentMethod(\"calendars\",\"getCal\")(e),u=0;u0&&t[e+1][0]<0)return e;return null}switch(e=\"RUS\"===s||\"FJI\"===s?function(t){var e;if(null===c(t))e=t;else for(e=new Array(t.length),i=0;ie?r[n++]=[t[i][0]+360,t[i][1]]:i===e?(r[n++]=t[i],r[n++]=[t[i][0],-90]):r[n++]=t[i];var a=h.tester(r);a.pts.pop(),l.push(a)}:function(t){l.push(h.tester(t))},a.type){case\"MultiPolygon\":for(r=0;ri&&(i=c,e=l)}else e=r;return o.default(e).geometry.coordinates}(u),n.fIn=t,n.fOut=u,s.push(u)}else c.log([\"Location\",n.loc,\"does not have a valid GeoJSON geometry.\",\"Traces with locationmode *geojson-id* only support\",\"*Polygon* and *MultiPolygon* geometries.\"].join(\" \"))}delete i[r]}switch(r.type){case\"FeatureCollection\":var h=r.features;for(n=0;n100?(clearInterval(a),n(\"Unexpected error while fetching from \"+t)):void i++}),50)}))}for(var o=0;o0&&(r.push(i),i=[])}return i.length>0&&r.push(i),r},r.makeLine=function(t){return 1===t.length?{type:\"LineString\",coordinates:t[0]}:{type:\"MultiLineString\",coordinates:t}},r.makePolygon=function(t){if(1===t.length)return{type:\"Polygon\",coordinates:t};for(var e=new Array(t.length),r=0;r1||g<0||g>1?null:{x:t+l*g,y:e+f*g}}function l(t,e,r,n,i){var a=n*t+i*e;if(a<0)return n*n+i*i;if(a>r){var o=n-t,s=i-e;return o*o+s*s}var l=n*e-i*t;return l*l/r}r.segmentsIntersect=s,r.segmentDistance=function(t,e,r,n,i,a,o,c){if(s(t,e,r,n,i,a,o,c))return 0;var u=r-t,f=n-e,h=o-i,p=c-a,d=u*u+f*f,g=h*h+p*p,m=Math.min(l(u,f,d,i-t,a-e),l(u,f,d,o-t,c-e),l(h,p,g,t-i,e-a),l(h,p,g,r-i,n-a));return Math.sqrt(m)},r.getTextLocation=function(t,e,r,s){if(t===i&&s===a||(n={},i=t,a=s),n[r])return n[r];var l=t.getPointAtLength(o(r-s/2,e)),c=t.getPointAtLength(o(r+s/2,e)),u=Math.atan((c.y-l.y)/(c.x-l.x)),f=t.getPointAtLength(o(r,e)),h={x:(4*f.x+l.x+c.x)/6,y:(4*f.y+l.y+c.y)/6,theta:u};return n[r]=h,h},r.clearLocationCache=function(){i=null},r.getVisibleSegment=function(t,e,r){var n,i,a=e.left,o=e.right,s=e.top,l=e.bottom,c=0,u=t.getTotalLength(),f=u;function h(e){var r=t.getPointAtLength(e);0===e?n=r:e===u&&(i=r);var c=r.xo?r.x-o:0,f=r.yl?r.y-l:0;return Math.sqrt(c*c+f*f)}for(var p=h(c);p;){if((c+=p+r)>f)return;p=h(c)}for(p=h(f);p;){if(c>(f-=p+r))return;p=h(f)}return{min:c,max:f,len:f-c,total:u,isClosed:0===c&&f===u&&Math.abs(n.x-i.x)<.1&&Math.abs(n.y-i.y)<.1}},r.findPointOnPath=function(t,e,r,n){for(var i,a,o,s=(n=n||{}).pathLength||t.getTotalLength(),l=n.tolerance||.001,c=n.iterationLimit||30,u=t.getPointAtLength(0)[r]>t.getPointAtLength(s)[r]?-1:1,f=0,h=0,p=s;f0?p=i:h=i,f++}return a}},{\"./mod\":510}],499:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"tinycolor2\"),a=t(\"color-normalize\"),o=t(\"../components/colorscale\"),s=t(\"../components/color/attributes\").defaultLine,l=t(\"./array\").isArrayOrTypedArray,c=a(s);function u(t,e){var r=t;return r[3]*=e,r}function f(t){if(n(t))return c;var e=a(t);return e.length?e:c}function h(t){return n(t)?t:1}e.exports={formatColor:function(t,e,r){var n,i,s,p,d,g=t.color,m=l(g),v=l(e),y=o.extractOpts(t),x=[];if(n=void 0!==y.colorscale?o.makeColorScaleFuncFromTrace(t):f,i=m?function(t,e){return void 0===t[e]?c:a(n(t[e]))}:f,s=v?function(t,e){return void 0===t[e]?1:h(t[e])}:h,m||v)for(var b=0;b1?(r*t+r*e)/r:t+e,i=String(n).length;if(i>16){var a=String(e).length;if(i>=String(t).length+a){var o=parseFloat(n).toPrecision(12);-1===o.indexOf(\"e+\")&&(n=+o)}}return n}},{}],503:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"d3-time-format\").utcFormat,a=t(\"d3-format\").format,o=t(\"fast-isnumeric\"),s=t(\"../constants/numerical\"),l=s.FP_SAFE,c=-l,u=s.BADNUM,f=e.exports={};f.adjustFormat=function(t){return!t||/^\\d[.]\\df/.test(t)||/[.]\\d%/.test(t)?t:\"0.f\"===t?\"~f\":/^\\d%/.test(t)?\"~%\":/^\\ds/.test(t)?\"~s\":!/^[~,.0$]/.test(t)&&/[&fps]/.test(t)?\"~\"+t:t};var h={};f.warnBadFormat=function(t){var e=String(t);h[e]||(h[e]=1,f.warn('encountered bad format: \"'+e+'\"'))},f.noFormat=function(t){return String(t)},f.numberFormat=function(t){var e;try{e=a(f.adjustFormat(t))}catch(e){return f.warnBadFormat(t),f.noFormat}return e},f.nestedProperty=t(\"./nested_property\"),f.keyedContainer=t(\"./keyed_container\"),f.relativeAttr=t(\"./relative_attr\"),f.isPlainObject=t(\"./is_plain_object\"),f.toLogRange=t(\"./to_log_range\"),f.relinkPrivateKeys=t(\"./relink_private\");var p=t(\"./array\");f.isTypedArray=p.isTypedArray,f.isArrayOrTypedArray=p.isArrayOrTypedArray,f.isArray1D=p.isArray1D,f.ensureArray=p.ensureArray,f.concat=p.concat,f.maxRowLength=p.maxRowLength,f.minRowLength=p.minRowLength;var d=t(\"./mod\");f.mod=d.mod,f.modHalf=d.modHalf;var g=t(\"./coerce\");f.valObjectMeta=g.valObjectMeta,f.coerce=g.coerce,f.coerce2=g.coerce2,f.coerceFont=g.coerceFont,f.coercePattern=g.coercePattern,f.coerceHoverinfo=g.coerceHoverinfo,f.coerceSelectionMarkerOpacity=g.coerceSelectionMarkerOpacity,f.validate=g.validate;var m=t(\"./dates\");f.dateTime2ms=m.dateTime2ms,f.isDateTime=m.isDateTime,f.ms2DateTime=m.ms2DateTime,f.ms2DateTimeLocal=m.ms2DateTimeLocal,f.cleanDate=m.cleanDate,f.isJSDate=m.isJSDate,f.formatDate=m.formatDate,f.incrementMonth=m.incrementMonth,f.dateTick0=m.dateTick0,f.dfltRange=m.dfltRange,f.findExactDates=m.findExactDates,f.MIN_MS=m.MIN_MS,f.MAX_MS=m.MAX_MS;var v=t(\"./search\");f.findBin=v.findBin,f.sorterAsc=v.sorterAsc,f.sorterDes=v.sorterDes,f.distinctVals=v.distinctVals,f.roundUp=v.roundUp,f.sort=v.sort,f.findIndexOfMin=v.findIndexOfMin,f.sortObjectKeys=t(\"./sort_object_keys\");var y=t(\"./stats\");f.aggNums=y.aggNums,f.len=y.len,f.mean=y.mean,f.median=y.median,f.midRange=y.midRange,f.variance=y.variance,f.stdev=y.stdev,f.interp=y.interp;var x=t(\"./matrix\");f.init2dArray=x.init2dArray,f.transposeRagged=x.transposeRagged,f.dot=x.dot,f.translationMatrix=x.translationMatrix,f.rotationMatrix=x.rotationMatrix,f.rotationXYMatrix=x.rotationXYMatrix,f.apply3DTransform=x.apply3DTransform,f.apply2DTransform=x.apply2DTransform,f.apply2DTransform2=x.apply2DTransform2,f.convertCssMatrix=x.convertCssMatrix,f.inverseTransformMatrix=x.inverseTransformMatrix;var b=t(\"./angles\");f.deg2rad=b.deg2rad,f.rad2deg=b.rad2deg,f.angleDelta=b.angleDelta,f.angleDist=b.angleDist,f.isFullCircle=b.isFullCircle,f.isAngleInsideSector=b.isAngleInsideSector,f.isPtInsideSector=b.isPtInsideSector,f.pathArc=b.pathArc,f.pathSector=b.pathSector,f.pathAnnulus=b.pathAnnulus;var _=t(\"./anchor_utils\");f.isLeftAnchor=_.isLeftAnchor,f.isCenterAnchor=_.isCenterAnchor,f.isRightAnchor=_.isRightAnchor,f.isTopAnchor=_.isTopAnchor,f.isMiddleAnchor=_.isMiddleAnchor,f.isBottomAnchor=_.isBottomAnchor;var w=t(\"./geometry2d\");f.segmentsIntersect=w.segmentsIntersect,f.segmentDistance=w.segmentDistance,f.getTextLocation=w.getTextLocation,f.clearLocationCache=w.clearLocationCache,f.getVisibleSegment=w.getVisibleSegment,f.findPointOnPath=w.findPointOnPath;var T=t(\"./extend\");f.extendFlat=T.extendFlat,f.extendDeep=T.extendDeep,f.extendDeepAll=T.extendDeepAll,f.extendDeepNoArrays=T.extendDeepNoArrays;var k=t(\"./loggers\");f.log=k.log,f.warn=k.warn,f.error=k.error;var A=t(\"./regex\");f.counterRegex=A.counter;var M=t(\"./throttle\");f.throttle=M.throttle,f.throttleDone=M.done,f.clearThrottle=M.clear;var S=t(\"./dom\");function E(t){var e={};for(var r in t)for(var n=t[r],i=0;il||t=e)&&(o(t)&&t>=0&&t%1==0)},f.noop=t(\"./noop\"),f.identity=t(\"./identity\"),f.repeat=function(t,e){for(var r=new Array(e),n=0;nr?Math.max(r,Math.min(e,t)):Math.max(e,Math.min(r,t))},f.bBoxIntersect=function(t,e,r){return r=r||0,t.left<=e.right+r&&e.left<=t.right+r&&t.top<=e.bottom+r&&e.top<=t.bottom+r},f.simpleMap=function(t,e,r,n,i){for(var a=t.length,o=new Array(a),s=0;s=Math.pow(2,r)?i>10?(f.warn(\"randstr failed uniqueness\"),l):t(e,r,n,(i||0)+1):l},f.OptionControl=function(t,e){t||(t={}),e||(e=\"opt\");var r={optionList:[],_newoption:function(n){n[e]=t,r[n.name]=n,r.optionList.push(n)}};return r[\"_\"+e]=t,r},f.smooth=function(t,e){if((e=Math.round(e)||0)<2)return t;var r,n,i,a,o=t.length,s=2*o,l=2*e-1,c=new Array(l),u=new Array(o);for(r=0;r=s&&(i-=s*Math.floor(i/s)),i<0?i=-1-i:i>=o&&(i=s-1-i),a+=t[i]*c[n];u[r]=a}return u},f.syncOrAsync=function(t,e,r){var n;function i(){return f.syncOrAsync(t,e,r)}for(;t.length;)if((n=(0,t.splice(0,1)[0])(e))&&n.then)return n.then(i);return r&&r(e)},f.stripTrailingSlash=function(t){return\"/\"===t.substr(-1)?t.substr(0,t.length-1):t},f.noneOrAll=function(t,e,r){if(t){var n,i=!1,a=!0;for(n=0;n0?e:0}))},f.fillArray=function(t,e,r,n){if(n=n||f.identity,f.isArrayOrTypedArray(t))for(var i=0;i1?i+o[1]:\"\";if(a&&(o.length>1||s.length>4||r))for(;n.test(s);)s=s.replace(n,\"$1\"+a+\"$2\");return s+l},f.TEMPLATE_STRING_REGEX=/%{([^\\s%{}:]*)([:|\\|][^}]*)?}/g;var z=/^\\w*$/;f.templateString=function(t,e){var r={};return t.replace(f.TEMPLATE_STRING_REGEX,(function(t,n){var i;return z.test(n)?i=e[n]:(r[n]=r[n]||f.nestedProperty(e,n).get,i=r[n]()),f.isValidTextValue(i)?i:\"\"}))};var D={max:10,count:0,name:\"hovertemplate\"};f.hovertemplateString=function(){return B.apply(D,arguments)};var R={max:10,count:0,name:\"texttemplate\"};f.texttemplateString=function(){return B.apply(R,arguments)};var F=/^[:|\\|]/;function B(t,e,r){var n=this,a=arguments;e||(e={});var o={};return t.replace(f.TEMPLATE_STRING_REGEX,(function(t,s,l){var c,u,h,p=\"_xother\"===s||\"_yother\"===s,d=\"_xother_\"===s||\"_yother_\"===s,g=\"xother_\"===s||\"yother_\"===s,m=\"xother\"===s||\"yother\"===s||p||g||d,v=s;if((p||d)&&(v=v.substring(1)),(g||d)&&(v=v.substring(0,v.length-1)),m){if(void 0===(c=e[v]))return\"\"}else for(h=3;h=48&&o<=57,c=s>=48&&s<=57;if(l&&(n=10*n+o-48),c&&(i=10*i+s-48),!l||!c){if(n!==i)return n-i;if(o!==s)return o-s}}return i-n};var N=2e9;f.seedPseudoRandom=function(){N=2e9},f.pseudoRandom=function(){var t=N;return N=(69069*N+1)%4294967296,Math.abs(N-t)<429496729?f.pseudoRandom():N/4294967296},f.fillText=function(t,e,r){var n=Array.isArray(r)?function(t){r.push(t)}:function(t){r.text=t},i=f.extractOption(t,e,\"htx\",\"hovertext\");if(f.isValidTextValue(i))return n(i);var a=f.extractOption(t,e,\"tx\",\"text\");return f.isValidTextValue(a)?n(a):void 0},f.isValidTextValue=function(t){return t||0===t},f.formatPercent=function(t,e){e=e||0;for(var r=(Math.round(100*t*Math.pow(10,e))*Math.pow(.1,e)).toFixed(e)+\"%\",n=0;n1&&(c=1):c=0,f.strTranslate(i-c*(r+o),a-c*(n+s))+f.strScale(c)+(l?\"rotate(\"+l+(e?\"\":\" \"+r+\" \"+n)+\")\":\"\")},f.ensureUniformFontSize=function(t,e){var r=f.extendFlat({},e);return r.size=Math.max(e.size,t._fullLayout.uniformtext.minsize||0),r},f.join2=function(t,e,r){var n=t.length;return n>1?t.slice(0,-1).join(e)+r+t[n-1]:t.join(e)},f.bigFont=function(t){return Math.round(1.2*t)};var j=f.getFirefoxVersion(),U=null!==j&&j<86;f.getPositionFromD3Event=function(){return U?[n.event.layerX,n.event.layerY]:[n.event.offsetX,n.event.offsetY]}},{\"../constants/numerical\":479,\"./anchor_utils\":483,\"./angles\":484,\"./array\":485,\"./clean_number\":486,\"./clear_responsive\":488,\"./coerce\":489,\"./dates\":490,\"./dom\":491,\"./extend\":493,\"./filter_unique\":494,\"./filter_visible\":495,\"./geometry2d\":498,\"./identity\":501,\"./increment\":502,\"./is_plain_object\":504,\"./keyed_container\":505,\"./localize\":506,\"./loggers\":507,\"./make_trace_groups\":508,\"./matrix\":509,\"./mod\":510,\"./nested_property\":511,\"./noop\":512,\"./notifier\":513,\"./preserve_drawing_buffer\":517,\"./push_unique\":518,\"./regex\":520,\"./relative_attr\":521,\"./relink_private\":522,\"./search\":523,\"./sort_object_keys\":526,\"./stats\":527,\"./throttle\":530,\"./to_log_range\":531,\"@plotly/d3\":58,\"d3-format\":112,\"d3-time-format\":120,\"fast-isnumeric\":190}],504:[function(t,e,r){\"use strict\";e.exports=function(t){return window&&window.process&&window.process.versions?\"[object Object]\"===Object.prototype.toString.call(t):\"[object Object]\"===Object.prototype.toString.call(t)&&Object.getPrototypeOf(t).hasOwnProperty(\"hasOwnProperty\")}},{}],505:[function(t,e,r){\"use strict\";var n=t(\"./nested_property\"),i=/^\\w*$/;e.exports=function(t,e,r,a){var o,s,l;r=r||\"name\",a=a||\"value\";var c={};e&&e.length?(l=n(t,e),s=l.get()):s=t,e=e||\"\";var u={};if(s)for(o=0;o2)return c[e]=2|c[e],h.set(t,null);if(f){for(o=e;o1){var e=[\"LOG:\"];for(t=0;t1){var r=[];for(t=0;t\"),\"long\")}},a.warn=function(){var t;if(n.logging>0){var e=[\"WARN:\"];for(t=0;t0){var r=[];for(t=0;t\"),\"stick\")}},a.error=function(){var t;if(n.logging>0){var e=[\"ERROR:\"];for(t=0;t0){var r=[];for(t=0;t\"),\"stick\")}}},{\"../plot_api/plot_config\":541,\"./notifier\":513}],508:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\");e.exports=function(t,e,r){var i=t.selectAll(\"g.\"+r.replace(/\\s/g,\".\")).data(e,(function(t){return t[0].trace.uid}));i.exit().remove(),i.enter().append(\"g\").attr(\"class\",r),i.order();var a=t.classed(\"rangeplot\")?\"nodeRangePlot3\":\"node3\";return i.each((function(t){t[0][a]=n.select(this)})),i}},{\"@plotly/d3\":58}],509:[function(t,e,r){\"use strict\";var n=t(\"gl-mat4\");r.init2dArray=function(t,e){for(var r=new Array(t),n=0;ne/2?t-Math.round(t/e)*e:t}}},{}],511:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"./array\").isArrayOrTypedArray;function a(t,e){return function(){var r,n,o,s,l,c=t;for(s=0;s/g),l=0;la||c===i||cs)&&(!e||!l(t))}:function(t,e){var l=t[0],c=t[1];if(l===i||la||c===i||cs)return!1;var u,f,h,p,d,g=r.length,m=r[0][0],v=r[0][1],y=0;for(u=1;uMath.max(f,m)||c>Math.max(h,v)))if(cu||Math.abs(n(o,h))>i)return!0;return!1},a.filter=function(t,e){var r=[t[0]],n=0,i=0;function o(o){t.push(o);var s=r.length,l=n;r.splice(i+1);for(var c=l+1;c1&&o(t.pop());return{addPt:o,raw:t,filtered:r}}},{\"../constants/numerical\":479,\"./matrix\":509}],516:[function(t,e,r){(function(r){(function(){\"use strict\";var n=t(\"./show_no_webgl_msg\"),i=t(\"regl\");e.exports=function(t,e){var a=t._fullLayout,o=!0;return a._glcanvas.each((function(n){if(!n.regl&&(!n.pick||a._has(\"parcoords\"))){try{n.regl=i({canvas:this,attributes:{antialias:!n.pick,preserveDrawingBuffer:!0},pixelRatio:t._context.plotGlPixelRatio||r.devicePixelRatio,extensions:e||[]})}catch(t){o=!1}n.regl||(o=!1),o&&this.addEventListener(\"webglcontextlost\",(function(e){t&&t.emit&&t.emit(\"plotly_webglcontextlost\",{event:e,layer:n.key})}),!1)}})),o||n({container:a._glcontainer.node()}),o}}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"./show_no_webgl_msg\":525,regl:283}],517:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"is-mobile\");e.exports=function(t){var e;if(\"string\"!=typeof(e=t&&t.hasOwnProperty(\"userAgent\")?t.userAgent:function(){var t;\"undefined\"!=typeof navigator&&(t=navigator.userAgent);t&&t.headers&&\"string\"==typeof t.headers[\"user-agent\"]&&(t=t.headers[\"user-agent\"]);return t}()))return!0;var r=i({ua:{headers:{\"user-agent\":e}},tablet:!0,featureDetect:!1});if(!r)for(var a=e.split(\" \"),o=1;o-1;s--){var l=a[s];if(\"Version/\"===l.substr(0,8)){var c=l.substr(8).split(\".\")[0];if(n(c)&&(c=+c),c>=13)return!0}}}return r}},{\"fast-isnumeric\":190,\"is-mobile\":234}],518:[function(t,e,r){\"use strict\";e.exports=function(t,e){if(e instanceof RegExp){for(var r=e.toString(),n=0;ni.queueLength&&(t.undoQueue.queue.shift(),t.undoQueue.index--))},startSequence:function(t){t.undoQueue=t.undoQueue||{index:0,queue:[],sequence:!1},t.undoQueue.sequence=!0,t.undoQueue.beginSequence=!0},stopSequence:function(t){t.undoQueue=t.undoQueue||{index:0,queue:[],sequence:!1},t.undoQueue.sequence=!1,t.undoQueue.beginSequence=!1},undo:function(t){var e,r;if(!(void 0===t.undoQueue||isNaN(t.undoQueue.index)||t.undoQueue.index<=0)){for(t.undoQueue.index--,e=t.undoQueue.queue[t.undoQueue.index],t.undoQueue.inSequence=!0,r=0;r=t.undoQueue.queue.length)){for(e=t.undoQueue.queue[t.undoQueue.index],t.undoQueue.inSequence=!0,r=0;re}function u(t,e){return t>=e}r.findBin=function(t,e,r){if(n(e.start))return r?Math.ceil((t-e.start)/e.size-1e-9)-1:Math.floor((t-e.start)/e.size+1e-9);var a,o,f=0,h=e.length,p=0,d=h>1?(e[h-1]-e[0])/(h-1):1;for(o=d>=0?r?s:l:r?u:c,t+=1e-9*d*(r?-1:1)*(d>=0?1:-1);f90&&i.log(\"Long binary search...\"),f-1},r.sorterAsc=function(t,e){return t-e},r.sorterDes=function(t,e){return e-t},r.distinctVals=function(t){var e,n=t.slice();for(n.sort(r.sorterAsc),e=n.length-1;e>-1&&n[e]===o;e--);for(var i,a=n[e]-n[0]||1,s=a/(e||1)/1e4,l=[],c=0;c<=e;c++){var u=n[c],f=u-i;void 0===i?(l.push(u),i=u):f>s&&(a=Math.min(a,f),l.push(u),i=u)}return{vals:l,minDiff:a}},r.roundUp=function(t,e,r){for(var n,i=0,a=e.length-1,o=0,s=r?0:1,l=r?1:0,c=r?Math.ceil:Math.floor;i0&&(n=1),r&&n)return t.sort(e)}return n?t:t.reverse()},r.findIndexOfMin=function(t,e){e=e||a;for(var r,n=1/0,i=0;ia.length)&&(o=a.length),n(e)||(e=!1),i(a[0])){for(l=new Array(o),s=0;st.length-1)return t[t.length-1];var r=e%1;return r*t[Math.ceil(e)]+(1-r)*t[Math.floor(e)]}},{\"./array\":485,\"fast-isnumeric\":190}],528:[function(t,e,r){\"use strict\";var n=t(\"color-normalize\");e.exports=function(t){return t?n(t):[0,0,0,1]}},{\"color-normalize\":89}],529:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../lib\"),a=i.strTranslate,o=t(\"../constants/xmlns_namespaces\"),s=t(\"../constants/alignment\").LINE_SPACING,l=/([^$]*)([$]+[^$]*[$]+)([^$]*)/;r.convertToTspans=function(t,e,d){var A=t.text(),M=!t.attr(\"data-notex\")&&\"undefined\"!=typeof MathJax&&A.match(l),L=n.select(t.node().parentNode);if(!L.empty()){var C=t.attr(\"class\")?t.attr(\"class\").split(\" \")[0]:\"text\";return C+=\"-math\",L.selectAll(\"svg.\"+C).remove(),L.selectAll(\"g.\"+C+\"-group\").remove(),t.style(\"display\",null).attr({\"data-unformatted\":A,\"data-math\":\"N\"}),M?(e&&e._promises||[]).push(new Promise((function(e){t.style(\"display\",\"none\");var r=parseInt(t.node().style.fontSize,10),o={fontSize:r};!function(t,e,r){var a,o,s,l;MathJax.Hub.Queue((function(){return o=i.extendDeepAll({},MathJax.Hub.config),s=MathJax.Hub.processSectionDelay,void 0!==MathJax.Hub.processSectionDelay&&(MathJax.Hub.processSectionDelay=0),MathJax.Hub.Config({messageStyle:\"none\",tex2jax:{inlineMath:[[\"$\",\"$\"],[\"\\\\(\",\"\\\\)\"]]},displayAlign:\"left\"})}),(function(){if(\"SVG\"!==(a=MathJax.Hub.config.menuSettings.renderer))return MathJax.Hub.setRenderer(\"SVG\")}),(function(){var r=\"math-output-\"+i.randstr({},64);return l=n.select(\"body\").append(\"div\").attr({id:r}).style({visibility:\"hidden\",position:\"absolute\"}).style({\"font-size\":e.fontSize+\"px\"}).text(t.replace(c,\"\\\\lt \").replace(u,\"\\\\gt \")),MathJax.Hub.Typeset(l.node())}),(function(){var e=n.select(\"body\").select(\"#MathJax_SVG_glyphs\");if(l.select(\".MathJax_SVG\").empty()||!l.select(\"svg\").node())i.log(\"There was an error in the tex syntax.\",t),r();else{var o=l.select(\"svg\").node().getBoundingClientRect();r(l.select(\".MathJax_SVG\"),e,o)}if(l.remove(),\"SVG\"!==a)return MathJax.Hub.setRenderer(a)}),(function(){return void 0!==s&&(MathJax.Hub.processSectionDelay=s),MathJax.Hub.Config(o)}))}(M[2],o,(function(n,i,o){L.selectAll(\"svg.\"+C).remove(),L.selectAll(\"g.\"+C+\"-group\").remove();var s=n&&n.select(\"svg\");if(!s||!s.node())return P(),void e();var l=L.append(\"g\").classed(C+\"-group\",!0).attr({\"pointer-events\":\"none\",\"data-unformatted\":A,\"data-math\":\"Y\"});l.node().appendChild(s.node()),i&&i.node()&&s.node().insertBefore(i.node().cloneNode(!0),s.node().firstChild);var c=o.width,u=o.height;s.attr({class:C,height:u,preserveAspectRatio:\"xMinYMin meet\"}).style({overflow:\"visible\",\"pointer-events\":\"none\"});var f=t.node().style.fill||\"black\",h=s.select(\"g\");h.attr({fill:f,stroke:f});var p=h.node().getBoundingClientRect(),g=p.width,m=p.height;(g>c||m>u)&&(s.style(\"overflow\",\"hidden\"),g=(p=s.node().getBoundingClientRect()).width,m=p.height);var v=+t.attr(\"x\"),y=+t.attr(\"y\"),x=-(r||t.node().getBoundingClientRect().height)/4;if(\"y\"===C[0])l.attr({transform:\"rotate(\"+[-90,v,y]+\")\"+a(-g/2,x-m/2)});else if(\"l\"===C[0])y=x-m/2;else if(\"a\"===C[0]&&0!==C.indexOf(\"atitle\"))v=0,y=x;else{var b=t.attr(\"text-anchor\");v-=g*(\"middle\"===b?.5:\"end\"===b?1:0),y=y+x-m/2}s.attr({x:v,y:y}),d&&d.call(t,l),e(l)}))}))):P(),t}function P(){L.empty()||(C=t.attr(\"class\")+\"-math\",L.select(\"svg.\"+C).remove()),t.text(\"\").style(\"white-space\",\"pre\"),function(t,e){e=e.replace(g,\" \");var r,a=!1,l=[],c=-1;function u(){c++;var e=document.createElementNS(o.svg,\"tspan\");n.select(e).attr({class:\"line\",dy:c*s+\"em\"}),t.appendChild(e),r=e;var i=l;if(l=[{node:e}],i.length>1)for(var a=1;a doesnt match end tag <\"+t+\">. Pretending it did match.\",e),r=l[l.length-1].node}else i.log(\"Ignoring unexpected end tag .\",e)}y.test(e)?u():(r=t,l=[{node:t}]);for(var L=e.split(m),C=0;C|>|>)/g;var f={sup:\"font-size:70%\",sub:\"font-size:70%\",b:\"font-weight:bold\",i:\"font-style:italic\",a:\"cursor:pointer\",span:\"\",em:\"font-style:italic;font-weight:bold\"},h={sub:\"0.3em\",sup:\"-0.6em\"},p={sub:\"-0.21em\",sup:\"0.42em\"},d=[\"http:\",\"https:\",\"mailto:\",\"\",void 0,\":\"],g=r.NEWLINES=/(\\r\\n?|\\n)/g,m=/(<[^<>]*>)/,v=/<(\\/?)([^ >]*)(\\s+(.*))?>/i,y=//i;r.BR_TAG_ALL=//gi;var x=/(^|[\\s\"'])style\\s*=\\s*(\"([^\"]*);?\"|'([^']*);?')/i,b=/(^|[\\s\"'])href\\s*=\\s*(\"([^\"]*)\"|'([^']*)')/i,_=/(^|[\\s\"'])target\\s*=\\s*(\"([^\"\\s]*)\"|'([^'\\s]*)')/i,w=/(^|[\\s\"'])popup\\s*=\\s*(\"([\\w=,]*)\"|'([\\w=,]*)')/i;function T(t,e){if(!t)return null;var r=t.match(e),n=r&&(r[3]||r[4]);return n&&S(n)}var k=/(^|;)\\s*color:/;r.plainText=function(t,e){for(var r=void 0!==(e=e||{}).len&&-1!==e.len?e.len:1/0,n=void 0!==e.allowedTags?e.allowedTags:[\"br\"],i=\"...\".length,a=t.split(m),o=[],s=\"\",l=0,c=0;ci?o.push(u.substr(0,d-i)+\"...\"):o.push(u.substr(0,d));break}s=\"\"}}return o.join(\"\")};var A={mu:\"\\u03bc\",amp:\"&\",lt:\"<\",gt:\">\",nbsp:\"\\xa0\",times:\"\\xd7\",plusmn:\"\\xb1\",deg:\"\\xb0\"},M=/&(#\\d+|#x[\\da-fA-F]+|[a-z]+);/g;function S(t){return t.replace(M,(function(t,e){return(\"#\"===e.charAt(0)?function(t){if(t>1114111)return;var e=String.fromCodePoint;if(e)return e(t);var r=String.fromCharCode;return t<=65535?r(t):r(55232+(t>>10),t%1024+56320)}(\"x\"===e.charAt(1)?parseInt(e.substr(2),16):parseInt(e.substr(1),10)):A[e])||t}))}function E(t){var e=encodeURI(decodeURI(t)),r=document.createElement(\"a\"),n=document.createElement(\"a\");r.href=t,n.href=e;var i=r.protocol,a=n.protocol;return-1!==d.indexOf(i)&&-1!==d.indexOf(a)?e:\"\"}function L(t,e,r){var n,a,o,s=r.horizontalAlign,l=r.verticalAlign||\"top\",c=t.node().getBoundingClientRect(),u=e.node().getBoundingClientRect();return a=\"bottom\"===l?function(){return c.bottom-n.height}:\"middle\"===l?function(){return c.top+(c.height-n.height)/2}:function(){return c.top},o=\"right\"===s?function(){return c.right-n.width}:\"center\"===s?function(){return c.left+(c.width-n.width)/2}:function(){return c.left},function(){n=this.node().getBoundingClientRect();var t=o()-u.left,e=a()-u.top,s=r.gd||{};if(r.gd){s._fullLayout._calcInverseTransform(s);var l=i.apply3DTransform(s._fullLayout._invTransform)(t,e);t=l[0],e=l[1]}return this.style({top:e+\"px\",left:t+\"px\",\"z-index\":1e3}),this}}r.convertEntities=S,r.sanitizeHTML=function(t){t=t.replace(g,\" \");for(var e=document.createElement(\"p\"),r=e,i=[],a=t.split(m),o=0;oa.ts+e?l():a.timer=setTimeout((function(){l(),a.timer=null}),e)},r.done=function(t){var e=n[t];return e&&e.timer?new Promise((function(t){var r=e.onDone;e.onDone=function(){r&&r(),t(),e.onDone=null}})):Promise.resolve()},r.clear=function(t){if(t)i(n[t]),delete n[t];else for(var e in n)r.clear(e)}},{}],531:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\");e.exports=function(t,e){if(t>0)return Math.log(t)/Math.LN10;var r=Math.log(Math.min(e[0],e[1]))/Math.LN10;return n(r)||(r=Math.log(Math.max(e[0],e[1]))/Math.LN10-6),r}},{\"fast-isnumeric\":190}],532:[function(t,e,r){\"use strict\";var n=e.exports={},i=t(\"../plots/geo/constants\").locationmodeToLayer,a=t(\"topojson-client\").feature;n.getTopojsonName=function(t){return[t.scope.replace(/ /g,\"-\"),\"_\",t.resolution.toString(),\"m\"].join(\"\")},n.getTopojsonPath=function(t,e){return t+e+\".json\"},n.getTopojsonFeatures=function(t,e){var r=i[t.locationmode],n=e.objects[r];return a(e,n).features}},{\"../plots/geo/constants\":587,\"topojson-client\":315}],533:[function(t,e,r){\"use strict\";e.exports={moduleType:\"locale\",name:\"en-US\",dictionary:{\"Click to enter Colorscale title\":\"Click to enter Colorscale title\"},format:{date:\"%m/%d/%Y\"}}},{}],534:[function(t,e,r){\"use strict\";e.exports={moduleType:\"locale\",name:\"en\",dictionary:{\"Click to enter Colorscale title\":\"Click to enter Colourscale title\"},format:{days:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],shortDays:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],months:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],shortMonths:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],periods:[\"AM\",\"PM\"],dateTime:\"%a %b %e %X %Y\",date:\"%d/%m/%Y\",time:\"%H:%M:%S\",decimal:\".\",thousands:\",\",grouping:[3],currency:[\"$\",\"\"],year:\"%Y\",month:\"%b %Y\",dayMonth:\"%b %-d\",dayMonthYear:\"%b %-d, %Y\"}}},{}],535:[function(t,e,r){\"use strict\";var n=t(\"../registry\");e.exports=function(t){for(var e,r,i=n.layoutArrayContainers,a=n.layoutArrayRegexes,o=t.split(\"[\")[0],s=0;s0&&o.log(\"Clearing previous rejected promises from queue.\"),t._promises=[]},r.cleanLayout=function(t){var e,n;t||(t={}),t.xaxis1&&(t.xaxis||(t.xaxis=t.xaxis1),delete t.xaxis1),t.yaxis1&&(t.yaxis||(t.yaxis=t.yaxis1),delete t.yaxis1),t.scene1&&(t.scene||(t.scene=t.scene1),delete t.scene1);var a=(s.subplotsRegistry.cartesian||{}).attrRegex,l=(s.subplotsRegistry.polar||{}).attrRegex,f=(s.subplotsRegistry.ternary||{}).attrRegex,h=(s.subplotsRegistry.gl3d||{}).attrRegex,g=Object.keys(t);for(e=0;e3?(O.x=1.02,O.xanchor=\"left\"):O.x<-2&&(O.x=-.02,O.xanchor=\"right\"),O.y>3?(O.y=1.02,O.yanchor=\"bottom\"):O.y<-2&&(O.y=-.02,O.yanchor=\"top\")),d(t),\"rotate\"===t.dragmode&&(t.dragmode=\"orbit\"),c.clean(t),t.template&&t.template.layout&&r.cleanLayout(t.template.layout),t},r.cleanData=function(t){for(var e=0;e0)return t.substr(0,e)}r.hasParent=function(t,e){for(var r=b(e);r;){if(r in t)return!0;r=b(r)}return!1};var _=[\"x\",\"y\",\"z\"];r.clearAxisTypes=function(t,e,r){for(var n=0;n1&&a.warn(\"Full array edits are incompatible with other edits\",f);var y=r[\"\"][\"\"];if(c(y))e.set(null);else{if(!Array.isArray(y))return a.warn(\"Unrecognized full array edit value\",f,y),!0;e.set(y)}return!g&&(h(m,v),p(t),!0)}var x,b,_,w,T,k,A,M,S=Object.keys(r).map(Number).sort(o),E=e.get(),L=E||[],C=u(v,f).get(),P=[],I=-1,O=L.length;for(x=0;xL.length-(A?0:1))a.warn(\"index out of range\",f,_);else if(void 0!==k)T.length>1&&a.warn(\"Insertion & removal are incompatible with edits to the same index.\",f,_),c(k)?P.push(_):A?(\"add\"===k&&(k={}),L.splice(_,0,k),C&&C.splice(_,0,{})):a.warn(\"Unrecognized full object edit value\",f,_,k),-1===I&&(I=_);else for(b=0;b=0;x--)L.splice(P[x],1),C&&C.splice(P[x],1);if(L.length?E||e.set(L):e.set(null),g)return!1;if(h(m,v),d!==i){var z;if(-1===I)z=S;else{for(O=Math.max(L.length,O),z=[],x=0;x=I);x++)z.push(_);for(x=I;x=t.data.length||i<-t.data.length)throw new Error(r+\" must be valid indices for gd.data.\");if(e.indexOf(i,n+1)>-1||i>=0&&e.indexOf(-t.data.length+i)>-1||i<0&&e.indexOf(t.data.length+i)>-1)throw new Error(\"each index in \"+r+\" must be unique.\")}}function I(t,e,r){if(!Array.isArray(t.data))throw new Error(\"gd.data must be an array.\");if(void 0===e)throw new Error(\"currentIndices is a required argument.\");if(Array.isArray(e)||(e=[e]),P(t,e,\"currentIndices\"),void 0===r||Array.isArray(r)||(r=[r]),void 0!==r&&P(t,r,\"newIndices\"),void 0!==r&&e.length!==r.length)throw new Error(\"current and new indices must be of equal length.\")}function O(t,e,r,n,a){!function(t,e,r,n){var i=o.isPlainObject(n);if(!Array.isArray(t.data))throw new Error(\"gd.data must be an array\");if(!o.isPlainObject(e))throw new Error(\"update must be a key:value object\");if(void 0===r)throw new Error(\"indices must be an integer or array of integers\");for(var a in P(t,r,\"indices\"),e){if(!Array.isArray(e[a])||e[a].length!==r.length)throw new Error(\"attribute \"+a+\" must be an array of length equal to indices array length\");if(i&&(!(a in n)||!Array.isArray(n[a])||n[a].length!==e[a].length))throw new Error(\"when maxPoints is set as a key:value object it must contain a 1:1 corrispondence with the keys and number of traces in the update object\")}}(t,e,r,n);for(var l=function(t,e,r,n){var a,l,c,u,f,h=o.isPlainObject(n),p=[];for(var d in Array.isArray(r)||(r=[r]),r=C(r,t.data.length-1),e)for(var g=0;g-1&&-1===r.indexOf(\"grouptitlefont\")?l(r,r.replace(\"titlefont\",\"title.font\")):r.indexOf(\"titleposition\")>-1?l(r,r.replace(\"titleposition\",\"title.position\")):r.indexOf(\"titleside\")>-1?l(r,r.replace(\"titleside\",\"title.side\")):r.indexOf(\"titleoffset\")>-1&&l(r,r.replace(\"titleoffset\",\"title.offset\")):l(r,r.replace(\"title\",\"title.text\"));function l(e,r){t[r]=t[e],delete t[e]}}function U(t,e,r){t=o.getGraphDiv(t),_.clearPromiseQueue(t);var n={};if(\"string\"==typeof e)n[e]=r;else{if(!o.isPlainObject(e))return o.warn(\"Relayout fail.\",e,r),Promise.reject();n=o.extendFlat({},e)}Object.keys(n).length&&(t.changed=!0);var i=W(t,n),a=i.flags;a.calc&&(t.calcdata=void 0);var s=[h.previousPromises];a.layoutReplot?s.push(w.layoutReplot):Object.keys(n).length&&(V(t,a,i)||h.supplyDefaults(t),a.legend&&s.push(w.doLegend),a.layoutstyle&&s.push(w.layoutStyles),a.axrange&&H(s,i.rangesAltered),a.ticks&&s.push(w.doTicksRelayout),a.modebar&&s.push(w.doModeBar),a.camera&&s.push(w.doCamera),a.colorbars&&s.push(w.doColorBars),s.push(M)),s.push(h.rehover,h.redrag),c.add(t,U,[t,i.undoit],U,[t,i.redoit]);var l=o.syncOrAsync(s,t);return l&&l.then||(l=Promise.resolve(t)),l.then((function(){return t.emit(\"plotly_relayout\",i.eventData),t}))}function V(t,e,r){var n=t._fullLayout;if(!e.axrange)return!1;for(var i in e)if(\"axrange\"!==i&&e[i])return!1;for(var a in r.rangesAltered){var o=p.id2name(a),s=t.layout[o],l=n[o];if(l.autorange=s.autorange,s.range&&(l.range=s.range.slice()),l.cleanRange(),l._matchGroup)for(var c in l._matchGroup)if(c!==a){var u=n[p.id2name(c)];u.autorange=l.autorange,u.range=l.range.slice(),u._input.range=l.range.slice()}}return!0}function H(t,e){var r=e?function(t){var r=[],n=!0;for(var i in e){var a=p.getFromId(t,i);if(r.push(i),-1!==(a.ticklabelposition||\"\").indexOf(\"inside\")&&a._anchorAxis&&r.push(a._anchorAxis._id),a._matchGroup)for(var o in a._matchGroup)e[o]||r.push(o);a.automargin&&(n=!1)}return p.draw(t,r,{skipTitle:n})}:function(t){return p.draw(t,\"redraw\")};t.push(y,w.doAutoRangeAndConstraints,r,w.drawData,w.finalDraw)}var q=/^[xyz]axis[0-9]*\\.range(\\[[0|1]\\])?$/,G=/^[xyz]axis[0-9]*\\.autorange$/,Y=/^[xyz]axis[0-9]*\\.domain(\\[[0|1]\\])?$/;function W(t,e){var r,n,i,a=t.layout,l=t._fullLayout,c=l._guiEditing,h=F(l._preGUI,c),d=Object.keys(e),g=p.list(t),m=o.extendDeepAll({},e),v={};for(j(e),d=Object.keys(e),n=0;n0&&\"string\"!=typeof O.parts[D];)D--;var B=O.parts[D],N=O.parts[D-1]+\".\"+B,U=O.parts.slice(0,D).join(\".\"),V=s(t.layout,U).get(),H=s(l,U).get(),W=O.get();if(void 0!==z){M[I]=z,S[I]=\"reverse\"===B?z:R(W);var Z=f.getLayoutValObject(l,O.parts);if(Z&&Z.impliedEdits&&null!==z)for(var J in Z.impliedEdits)E(o.relativeAttr(I,J),Z.impliedEdits[J]);if(-1!==[\"width\",\"height\"].indexOf(I))if(z){E(\"autosize\",null);var K=\"height\"===I?\"width\":\"height\";E(K,l[K])}else l[I]=t._initialAutoSize[I];else if(\"autosize\"===I)E(\"width\",z?null:l.width),E(\"height\",z?null:l.height);else if(N.match(q))P(N),s(l,U+\"._inputRange\").set(null);else if(N.match(G)){P(N),s(l,U+\"._inputRange\").set(null);var Q=s(l,U).get();Q._inputDomain&&(Q._input.domain=Q._inputDomain.slice())}else N.match(Y)&&s(l,U+\"._inputDomain\").set(null);if(\"type\"===B){L=V;var $=\"linear\"===H.type&&\"log\"===z,tt=\"log\"===H.type&&\"linear\"===z;if($||tt){if(L&&L.range)if(H.autorange)$&&(L.range=L.range[1]>L.range[0]?[1,2]:[2,1]);else{var et=L.range[0],rt=L.range[1];$?(et<=0&&rt<=0&&E(U+\".autorange\",!0),et<=0?et=rt/1e6:rt<=0&&(rt=et/1e6),E(U+\".range[0]\",Math.log(et)/Math.LN10),E(U+\".range[1]\",Math.log(rt)/Math.LN10)):(E(U+\".range[0]\",Math.pow(10,et)),E(U+\".range[1]\",Math.pow(10,rt)))}else E(U+\".autorange\",!0);Array.isArray(l._subplots.polar)&&l._subplots.polar.length&&l[O.parts[0]]&&\"radialaxis\"===O.parts[1]&&delete l[O.parts[0]]._subplot.viewInitial[\"radialaxis.range\"],u.getComponentMethod(\"annotations\",\"convertCoords\")(t,H,z,E),u.getComponentMethod(\"images\",\"convertCoords\")(t,H,z,E)}else E(U+\".autorange\",!0),E(U+\".range\",null);s(l,U+\"._inputRange\").set(null)}else if(B.match(k)){var nt=s(l,I).get(),it=(z||{}).type;it&&\"-\"!==it||(it=\"linear\"),u.getComponentMethod(\"annotations\",\"convertCoords\")(t,nt,it,E),u.getComponentMethod(\"images\",\"convertCoords\")(t,nt,it,E)}var at=b.containerArrayMatch(I);if(at){r=at.array,n=at.index;var ot=at.property,st=Z||{editType:\"calc\"};\"\"!==n&&\"\"===ot&&(b.isAddVal(z)?S[I]=null:b.isRemoveVal(z)?S[I]=(s(a,r).get()||[])[n]:o.warn(\"unrecognized full object value\",e)),T.update(A,st),v[r]||(v[r]={});var lt=v[r][n];lt||(lt=v[r][n]={}),lt[ot]=z,delete e[I]}else\"reverse\"===B?(V.range?V.range.reverse():(E(U+\".autorange\",!0),V.range=[1,0]),H.autorange?A.calc=!0:A.plot=!0):(l._has(\"scatter-like\")&&l._has(\"regl\")&&\"dragmode\"===I&&(\"lasso\"===z||\"select\"===z)&&\"lasso\"!==W&&\"select\"!==W||l._has(\"gl2d\")?A.plot=!0:Z?T.update(A,Z):A.calc=!0,O.set(z))}}for(r in v){b.applyContainerArrayChanges(t,h(a,r),v[r],A,h)||(A.plot=!0)}for(var ct in C){var ut=(L=p.getFromId(t,ct))&&L._constraintGroup;if(ut)for(var ft in A.calc=!0,ut)C[ft]||(p.getFromId(t,ft)._constraintShrinkable=!0)}return(X(t)||e.height||e.width)&&(A.plot=!0),(A.plot||A.calc)&&(A.layoutReplot=!0),{flags:A,rangesAltered:C,undoit:S,redoit:M,eventData:m}}function X(t){var e=t._fullLayout,r=e.width,n=e.height;return t.layout.autosize&&h.plotAutoSize(t,t.layout,e),e.width!==r||e.height!==n}function Z(t,e,n,i){t=o.getGraphDiv(t),_.clearPromiseQueue(t),o.isPlainObject(e)||(e={}),o.isPlainObject(n)||(n={}),Object.keys(e).length&&(t.changed=!0),Object.keys(n).length&&(t.changed=!0);var a=_.coerceTraceIndices(t,i),s=N(t,o.extendFlat({},e),a),l=s.flags,u=W(t,o.extendFlat({},n)),f=u.flags;(l.calc||f.calc)&&(t.calcdata=void 0),l.clearAxisTypes&&_.clearAxisTypes(t,a,n);var p=[];f.layoutReplot?p.push(w.layoutReplot):l.fullReplot?p.push(r._doPlot):(p.push(h.previousPromises),V(t,f,u)||h.supplyDefaults(t),l.style&&p.push(w.doTraceStyle),(l.colorbars||f.colorbars)&&p.push(w.doColorBars),f.legend&&p.push(w.doLegend),f.layoutstyle&&p.push(w.layoutStyles),f.axrange&&H(p,u.rangesAltered),f.ticks&&p.push(w.doTicksRelayout),f.modebar&&p.push(w.doModeBar),f.camera&&p.push(w.doCamera),p.push(M)),p.push(h.rehover,h.redrag),c.add(t,Z,[t,s.undoit,u.undoit,s.traces],Z,[t,s.redoit,u.redoit,s.traces]);var d=o.syncOrAsync(p,t);return d&&d.then||(d=Promise.resolve(t)),d.then((function(){return t.emit(\"plotly_update\",{data:s.eventData,layout:u.eventData}),t}))}function J(t){return function(e){e._fullLayout._guiEditing=!0;var r=t.apply(null,arguments);return e._fullLayout._guiEditing=!1,r}}var K=[{pattern:/^hiddenlabels/,attr:\"legend.uirevision\"},{pattern:/^((x|y)axis\\d*)\\.((auto)?range|title\\.text)/},{pattern:/axis\\d*\\.showspikes$/,attr:\"modebar.uirevision\"},{pattern:/(hover|drag)mode$/,attr:\"modebar.uirevision\"},{pattern:/^(scene\\d*)\\.camera/},{pattern:/^(geo\\d*)\\.(projection|center|fitbounds)/},{pattern:/^(ternary\\d*\\.[abc]axis)\\.(min|title\\.text)$/},{pattern:/^(polar\\d*\\.radialaxis)\\.((auto)?range|angle|title\\.text)/},{pattern:/^(polar\\d*\\.angularaxis)\\.rotation/},{pattern:/^(mapbox\\d*)\\.(center|zoom|bearing|pitch)/},{pattern:/^legend\\.(x|y)$/,attr:\"editrevision\"},{pattern:/^(shapes|annotations)/,attr:\"editrevision\"},{pattern:/^title\\.text$/,attr:\"editrevision\"}],Q=[{pattern:/^selectedpoints$/,attr:\"selectionrevision\"},{pattern:/(^|value\\.)visible$/,attr:\"legend.uirevision\"},{pattern:/^dimensions\\[\\d+\\]\\.constraintrange/},{pattern:/^node\\.(x|y|groups)/},{pattern:/^level$/},{pattern:/(^|value\\.)name$/},{pattern:/colorbar\\.title\\.text$/},{pattern:/colorbar\\.(x|y)$/,attr:\"editrevision\"}];function $(t,e){for(var r=0;r1;)if(n.pop(),void 0!==(r=s(e,n.join(\".\")+\".uirevision\").get()))return r;return e.uirevision}function et(t,e){for(var r=0;r=i.length?i[0]:i[t]:i}function l(t){return Array.isArray(a)?t>=a.length?a[0]:a[t]:a}function c(t,e){var r=0;return function(){if(t&&++r===e)return t()}}return void 0===n._frameWaitingCnt&&(n._frameWaitingCnt=0),new Promise((function(a,u){function f(){n._currentFrame&&n._currentFrame.onComplete&&n._currentFrame.onComplete();var e=n._currentFrame=n._frameQueue.shift();if(e){var r=e.name?e.name.toString():null;t._fullLayout._currentFrame=r,n._lastFrameAt=Date.now(),n._timeToNext=e.frameOpts.duration,h.transition(t,e.frame.data,e.frame.layout,_.coerceTraceIndices(t,e.frame.traces),e.frameOpts,e.transitionOpts).then((function(){e.onComplete&&e.onComplete()})),t.emit(\"plotly_animatingframe\",{name:r,frame:e.frame,animation:{frame:e.frameOpts,transition:e.transitionOpts}})}else t.emit(\"plotly_animated\"),window.cancelAnimationFrame(n._animationRaf),n._animationRaf=null}function p(){t.emit(\"plotly_animating\"),n._lastFrameAt=-1/0,n._timeToNext=0,n._runningTransitions=0,n._currentFrame=null;var e=function(){n._animationRaf=window.requestAnimationFrame(e),Date.now()-n._lastFrameAt>n._timeToNext&&f()};e()}var d,g,m=0;function v(t){return Array.isArray(i)?m>=i.length?t.transitionOpts=i[m]:t.transitionOpts=i[0]:t.transitionOpts=i,m++,t}var y=[],x=null==e,b=Array.isArray(e);if(!x&&!b&&o.isPlainObject(e))y.push({type:\"object\",data:v(o.extendFlat({},e))});else if(x||-1!==[\"string\",\"number\"].indexOf(typeof e))for(d=0;d0&&kk)&&A.push(g);y=A}}y.length>0?function(e){if(0!==e.length){for(var i=0;i=0;n--)if(o.isPlainObject(e[n])){var g=e[n].name,m=(u[g]||d[g]||{}).name,v=e[n].name,y=u[m]||d[m];m&&v&&\"number\"==typeof v&&y&&A<5&&(A++,o.warn('addFrames: overwriting frame \"'+(u[m]||d[m]).name+'\" with a frame whose name of type \"number\" also equates to \"'+m+'\". This is valid but may potentially lead to unexpected behavior since all plotly.js frame names are stored internally as strings.'),5===A&&o.warn(\"addFrames: This API call has yielded too many of these warnings. For the rest of this call, further warnings about numeric frame names will be suppressed.\")),d[g]={name:g},p.push({frame:h.supplyFrameDefaults(e[n]),index:r&&void 0!==r[n]&&null!==r[n]?r[n]:f+n})}p.sort((function(t,e){return t.index>e.index?-1:t.index=0;n--){if(\"number\"==typeof(i=p[n].frame).name&&o.warn(\"Warning: addFrames accepts frames with numeric names, but the numbers areimplicitly cast to strings\"),!i.name)for(;u[i.name=\"frame \"+t._transitionData._counter++];);if(u[i.name]){for(a=0;a=0;r--)n=e[r],a.push({type:\"delete\",index:n}),s.unshift({type:\"insert\",index:n,value:i[n]});var l=h.modifyFrames,u=h.modifyFrames,f=[t,s],p=[t,a];return c&&c.add(t,l,f,u,p),h.modifyFrames(t,a)},r.addTraces=function t(e,n,i){e=o.getGraphDiv(e);var a,s,l=[],u=r.deleteTraces,f=t,h=[e,l],p=[e,n];for(function(t,e,r){var n,i;if(!Array.isArray(t.data))throw new Error(\"gd.data must be an array.\");if(void 0===e)throw new Error(\"traces must be defined.\");for(Array.isArray(e)||(e=[e]),n=0;n=0&&r=0&&r=a.length)return!1;if(2===t.dimensions){if(r++,e.length===r)return t;var o=e[r];if(!y(o))return!1;t=a[i][o]}else t=a[i]}else t=a}}return t}function y(t){return t===Math.round(t)&&t>=0}function x(){var t,e,r={};for(t in f(r,o),n.subplotsRegistry){if((e=n.subplotsRegistry[t]).layoutAttributes)if(Array.isArray(e.attr))for(var i=0;i=l.length)return!1;i=(r=(n.transformsRegistry[l[c].type]||{}).attributes)&&r[e[2]],s=3}else{var u=t._module;if(u||(u=(n.modules[t.type||a.type.dflt]||{})._module),!u)return!1;if(!(i=(r=u.attributes)&&r[o])){var f=u.basePlotModule;f&&f.attributes&&(i=f.attributes[o])}i||(i=a[o])}return v(i,e,s)},r.getLayoutValObject=function(t,e){return v(function(t,e){var r,i,a,s,l=t._basePlotModules;if(l){var c;for(r=0;r=i&&(r._input||{})._templateitemname;o&&(a=i);var s,l=e+\"[\"+a+\"]\";function c(){s={},o&&(s[l]={},s[l].templateitemname=o)}function u(t,e){o?n.nestedProperty(s[l],t).set(e):s[l+\".\"+t]=e}function f(){var t=s;return c(),t}return c(),{modifyBase:function(t,e){s[t]=e},modifyItem:u,getUpdateObj:f,applyUpdate:function(e,r){e&&u(e,r);var i=f();for(var a in i)n.nestedProperty(t,a).set(i[a])}}}},{\"../lib\":503,\"../plots/attributes\":550}],544:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../registry\"),a=t(\"../plots/plots\"),o=t(\"../lib\"),s=t(\"../lib/clear_gl_canvases\"),l=t(\"../components/color\"),c=t(\"../components/drawing\"),u=t(\"../components/titles\"),f=t(\"../components/modebar\"),h=t(\"../plots/cartesian/axes\"),p=t(\"../constants/alignment\"),d=t(\"../plots/cartesian/constraints\"),g=d.enforce,m=d.clean,v=t(\"../plots/cartesian/autorange\").doAutoRange;function y(t,e,r){for(var n=0;n=t[1]||i[1]<=t[0])&&(a[0]e[0]))return!0}return!1}function x(t){var e,i,s,u,d,g,m=t._fullLayout,v=m._size,x=v.p,_=h.list(t,\"\",!0);if(m._paperdiv.style({width:t._context.responsive&&m.autosize&&!t._context._hasZeroWidth&&!t.layout.width?\"100%\":m.width+\"px\",height:t._context.responsive&&m.autosize&&!t._context._hasZeroHeight&&!t.layout.height?\"100%\":m.height+\"px\"}).selectAll(\".main-svg\").call(c.setSize,m.width,m.height),t._context.setBackground(t,m.paper_bgcolor),r.drawMainTitle(t),f.manage(t),!m._has(\"cartesian\"))return a.previousPromises(t);function T(t,e,r){var n=t._lw/2;return\"x\"===t._id.charAt(0)?e?\"top\"===r?e._offset-x-n:e._offset+e._length+x+n:v.t+v.h*(1-(t.position||0))+n%1:e?\"right\"===r?e._offset+e._length+x+n:e._offset-x-n:v.l+v.w*(t.position||0)+n%1}for(e=0;e<_.length;e++){var k=(u=_[e])._anchorAxis;u._linepositions={},u._lw=c.crispRound(t,u.linewidth,1),u._mainLinePosition=T(u,k,u.side),u._mainMirrorPosition=u.mirror&&k?T(u,k,p.OPPOSITE_SIDE[u.side]):null}var A=[],M=[],S=[],E=1===l.opacity(m.paper_bgcolor)&&1===l.opacity(m.plot_bgcolor)&&m.paper_bgcolor===m.plot_bgcolor;for(i in m._plots)if((s=m._plots[i]).mainplot)s.bg&&s.bg.remove(),s.bg=void 0;else{var L=s.xaxis.domain,C=s.yaxis.domain,P=s.plotgroup;if(y(L,C,S)){var I=P.node(),O=s.bg=o.ensureSingle(P,\"rect\",\"bg\");I.insertBefore(O.node(),I.childNodes[0]),M.push(i)}else P.select(\"rect.bg\").remove(),S.push([L,C]),E||(A.push(i),M.push(i))}var z,D,R,F,B,N,j,U,V,H,q,G,Y,W=m._bgLayer.selectAll(\".bg\").data(A);for(W.enter().append(\"rect\").classed(\"bg\",!0),W.exit().remove(),W.each((function(t){m._plots[t].bg=n.select(this)})),e=0;eT?u.push({code:\"unused\",traceType:y,templateCount:w,dataCount:T}):T>w&&u.push({code:\"reused\",traceType:y,templateCount:w,dataCount:T})}}else u.push({code:\"data\"});if(function t(e,r){for(var n in e)if(\"_\"!==n.charAt(0)){var a=e[n],o=g(e,n,r);i(a)?(Array.isArray(e)&&!1===a._template&&a.templateitemname&&u.push({code:\"missing\",path:o,templateitemname:a.templateitemname}),t(a,o)):Array.isArray(a)&&m(a)&&t(a,o)}}({data:p,layout:h},\"\"),u.length)return u.map(v)}},{\"../lib\":503,\"../plots/attributes\":550,\"../plots/plots\":619,\"./plot_config\":541,\"./plot_schema\":542,\"./plot_template\":543}],546:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"./plot_api\"),a=t(\"../plots/plots\"),o=t(\"../lib\"),s=t(\"../snapshot/helpers\"),l=t(\"../snapshot/tosvg\"),c=t(\"../snapshot/svgtoimg\"),u=t(\"../version\").version,f={format:{valType:\"enumerated\",values:[\"png\",\"jpeg\",\"webp\",\"svg\",\"full-json\"],dflt:\"png\"},width:{valType:\"number\",min:1},height:{valType:\"number\",min:1},scale:{valType:\"number\",min:0,dflt:1},setBackground:{valType:\"any\",dflt:!1},imageDataOnly:{valType:\"boolean\",dflt:!1}};e.exports=function(t,e){var r,h,p,d;function g(t){return!(t in e)||o.validate(e[t],f[t])}if(e=e||{},o.isPlainObject(t)?(r=t.data||[],h=t.layout||{},p=t.config||{},d={}):(t=o.getGraphDiv(t),r=o.extendDeep([],t.data),h=o.extendDeep({},t.layout),p=t._context,d=t._fullLayout||{}),!g(\"width\")&&null!==e.width||!g(\"height\")&&null!==e.height)throw new Error(\"Height and width should be pixel values.\");if(!g(\"format\"))throw new Error(\"Export format is not \"+o.join2(f.format.values,\", \",\" or \")+\".\");var m={};function v(t,r){return o.coerce(e,m,f,t,r)}var y=v(\"format\"),x=v(\"width\"),b=v(\"height\"),_=v(\"scale\"),w=v(\"setBackground\"),T=v(\"imageDataOnly\"),k=document.createElement(\"div\");k.style.position=\"absolute\",k.style.left=\"-5000px\",document.body.appendChild(k);var A=o.extendFlat({},h);x?A.width=x:null===e.width&&n(d.width)&&(A.width=d.width),b?A.height=b:null===e.height&&n(d.height)&&(A.height=d.height);var M=o.extendFlat({},p,{_exportedPlot:!0,staticPlot:!0,setBackground:w}),S=s.getRedrawFunc(k);function E(){return new Promise((function(t){setTimeout(t,s.getDelay(k._fullLayout))}))}function L(){return new Promise((function(t,e){var r=l(k,y,_),n=k._fullLayout.width,f=k._fullLayout.height;function h(){i.purge(k),document.body.removeChild(k)}if(\"full-json\"===y){var p=a.graphJson(k,!1,\"keepdata\",\"object\",!0,!0);return p.version=u,p=JSON.stringify(p),h(),t(T?p:s.encodeJSON(p))}if(h(),\"svg\"===y)return t(T?r:s.encodeSVG(r));var d=document.createElement(\"canvas\");d.id=o.randstr(),c({format:y,width:n,height:f,scale:_,canvas:d,svg:r,promise:!0}).then(t).catch(e)}))}return new Promise((function(t,e){i.newPlot(k,r,A,M).then(S).then(E).then(L).then((function(e){t(function(t){return T?t.replace(s.IMAGE_URL_PREFIX,\"\"):t}(e))})).catch((function(t){e(t)}))}))}},{\"../lib\":503,\"../plots/plots\":619,\"../snapshot/helpers\":642,\"../snapshot/svgtoimg\":644,\"../snapshot/tosvg\":646,\"../version\":1119,\"./plot_api\":540,\"fast-isnumeric\":190}],547:[function(t,e,r){\"use strict\";var n=t(\"../lib\"),i=t(\"../plots/plots\"),a=t(\"./plot_schema\"),o=t(\"./plot_config\").dfltConfig,s=n.isPlainObject,l=Array.isArray,c=n.isArrayOrTypedArray;function u(t,e,r,i,a,o){o=o||[];for(var f=Object.keys(t),h=0;hx.length&&i.push(d(\"unused\",a,v.concat(x.length)));var A,M,S,E,L,C=x.length,P=Array.isArray(k);if(P&&(C=Math.min(C,k.length)),2===b.dimensions)for(M=0;Mx[M].length&&i.push(d(\"unused\",a,v.concat(M,x[M].length)));var I=x[M].length;for(A=0;A<(P?Math.min(I,k[M].length):I);A++)S=P?k[M][A]:k,E=y[M][A],L=x[M][A],n.validate(E,S)?L!==E&&L!==+E&&i.push(d(\"dynamic\",a,v.concat(M,A),E,L)):i.push(d(\"value\",a,v.concat(M,A),E))}else i.push(d(\"array\",a,v.concat(M),y[M]));else for(M=0;M1&&p.push(d(\"object\",\"layout\"))),i.supplyDefaults(g);for(var m=g._fullData,v=r.length,y=0;y0&&Math.round(f)===f))return{vals:i};c=f}for(var h=e.calendar,p=\"start\"===l,d=\"end\"===l,g=t[r+\"period0\"],m=a(g,h)||0,v=[],y=[],x=[],b=i.length,_=0;_A;)k=o(k,-c,h);for(;k<=A;)k=o(k,c,h);T=o(k,-c,h)}else{for(k=m+(w=Math.round((A-m)/u))*u;k>A;)k-=u;for(;k<=A;)k+=u;T=k-u}v[_]=p?T:d?k:(T+k)/2,y[_]=T,x[_]=k}return{vals:v,starts:y,ends:x}}},{\"../../constants/numerical\":479,\"../../lib\":503,\"fast-isnumeric\":190}],552:[function(t,e,r){\"use strict\";e.exports={xaxis:{valType:\"subplotid\",dflt:\"x\",editType:\"calc+clearAxisTypes\"},yaxis:{valType:\"subplotid\",dflt:\"y\",editType:\"calc+clearAxisTypes\"}}},{}],553:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"fast-isnumeric\"),a=t(\"../../lib\"),o=t(\"../../constants/numerical\").FP_SAFE,s=t(\"../../registry\"),l=t(\"../../components/drawing\"),c=t(\"./axis_ids\"),u=c.getFromId,f=c.isLinked;function h(t,e){var r,n,i=[],o=t._fullLayout,s=d(o,e,0),l=d(o,e,1),c=g(t,e),u=c.min,f=c.max;if(0===u.length||0===f.length)return a.simpleMap(e.range,e.r2l);var h=u[0].val,m=f[0].val;for(r=1;r0&&((T=E-s(x)-l(b))>L?k/T>C&&(_=x,w=b,C=k/T):k/E>C&&(_={val:x.val,nopad:1},w={val:b.val,nopad:1},C=k/E));if(h===m){var P=h-1,I=h+1;if(M)if(0===h)i=[0,1];else{var O=(h>0?f:u).reduce((function(t,e){return Math.max(t,l(e))}),0),z=h/(1-Math.min(.5,O/E));i=h>0?[0,z]:[z,0]}else i=S?[Math.max(0,P),Math.max(1,I)]:[P,I]}else M?(_.val>=0&&(_={val:0,nopad:1}),w.val<=0&&(w={val:0,nopad:1})):S&&(_.val-C*s(_)<0&&(_={val:0,nopad:1}),w.val<=0&&(w={val:1,nopad:1})),C=(w.val-_.val-p(e,x.val,b.val))/(E-s(_)-l(w)),i=[_.val-C*s(_),w.val+C*l(w)];return v&&i.reverse(),a.simpleMap(i,e.l2r||Number)}function p(t,e,r){var n=0;if(t.rangebreaks)for(var i=t.locateBreaks(e,r),a=0;a0?r.ppadplus:r.ppadminus)||r.ppad||0),S=A((t._m>0?r.ppadminus:r.ppadplus)||r.ppad||0),E=A(r.vpadplus||r.vpad),L=A(r.vpadminus||r.vpad);if(!T){if(h=1/0,p=-1/0,w)for(n=0;n0&&(h=a),a>p&&a-o&&(h=a),a>p&&a=I;n--)P(n);return{min:d,max:g,opts:r}},concatExtremes:g};function g(t,e,r){var n,i,a,o=e._id,s=t._fullData,l=t._fullLayout,c=[],f=[];function h(t,e){for(n=0;n=r&&(c.extrapad||!o)){s=!1;break}i(e,c.val)&&c.pad<=r&&(o||!c.extrapad)&&(t.splice(l,1),l--)}if(s){var u=a&&0===e;t.push({val:e,pad:u?0:r,extrapad:!u&&o})}}function x(t){return i(t)&&Math.abs(t)=e}},{\"../../components/drawing\":388,\"../../constants/numerical\":479,\"../../lib\":503,\"../../registry\":638,\"./axis_ids\":558,\"@plotly/d3\":58,\"fast-isnumeric\":190}],554:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"fast-isnumeric\"),a=t(\"../../plots/plots\"),o=t(\"../../registry\"),s=t(\"../../lib\"),l=s.strTranslate,c=t(\"../../lib/svg_text_utils\"),u=t(\"../../components/titles\"),f=t(\"../../components/color\"),h=t(\"../../components/drawing\"),p=t(\"./layout_attributes\"),d=t(\"./clean_ticks\"),g=t(\"../../constants/numerical\"),m=g.ONEMAXYEAR,v=g.ONEAVGYEAR,y=g.ONEMINYEAR,x=g.ONEMAXQUARTER,b=g.ONEAVGQUARTER,_=g.ONEMINQUARTER,w=g.ONEMAXMONTH,T=g.ONEAVGMONTH,k=g.ONEMINMONTH,A=g.ONEWEEK,M=g.ONEDAY,S=M/2,E=g.ONEHOUR,L=g.ONEMIN,C=g.ONESEC,P=g.MINUS_SIGN,I=g.BADNUM,O={K:\"zeroline\"},z={K:\"gridline\",L:\"path\"},D={K:\"tick\",L:\"path\"},R={K:\"tick\",L:\"text\"},F=t(\"../../constants/alignment\"),B=F.MID_SHIFT,N=F.CAP_SHIFT,j=F.LINE_SPACING,U=F.OPPOSITE_SIDE,V=e.exports={};V.setConvert=t(\"./set_convert\");var H=t(\"./axis_autotype\"),q=t(\"./axis_ids\"),G=q.idSort,Y=q.isLinked;V.id2name=q.id2name,V.name2id=q.name2id,V.cleanId=q.cleanId,V.list=q.list,V.listIds=q.listIds,V.getFromId=q.getFromId,V.getFromTrace=q.getFromTrace;var W=t(\"./autorange\");V.getAutoRange=W.getAutoRange,V.findExtremes=W.findExtremes;function X(t){var e=1e-4*(t[1]-t[0]);return[t[0]-e,t[1]+e]}V.coerceRef=function(t,e,r,n,i,a){var o=n.charAt(n.length-1),l=r._fullLayout._subplots[o+\"axis\"],c=n+\"ref\",u={};return i||(i=l[0]||(\"string\"==typeof a?a:a[0])),a||(a=i),l=l.concat(l.map((function(t){return t+\" domain\"}))),u[c]={valType:\"enumerated\",values:l.concat(a?\"string\"==typeof a?[a]:a:[]),dflt:i},s.coerce(t,e,u,c)},V.getRefType=function(t){return void 0===t?t:\"paper\"===t?\"paper\":\"pixel\"===t?\"pixel\":/( domain)$/.test(t)?\"domain\":\"range\"},V.coercePosition=function(t,e,r,n,i,a){var o,l;if(\"range\"!==V.getRefType(n))o=s.ensureNumber,l=r(i,a);else{var c=V.getFromId(e,n);l=r(i,a=c.fraction2r(a)),o=c.cleanPos}t[i]=o(l)},V.cleanPosition=function(t,e,r){return(\"paper\"===r||\"pixel\"===r?s.ensureNumber:V.getFromId(e,r).cleanPos)(t)},V.redrawComponents=function(t,e){e=e||V.listIds(t);var r=t._fullLayout;function n(n,i,a,s){for(var l=o.getComponentMethod(n,i),c={},u=0;u2e-6||((r-t._forceTick0)/t._minDtick%1+1.000001)%1>2e-6)&&(t._minDtick=0)):t._minDtick=0},V.saveRangeInitial=function(t,e){for(var r=V.list(t,\"\",!0),n=!1,i=0;i.3*h||u(n)||u(a))){var p=r.dtick/2;t+=t+p.8){var o=Number(r.substr(1));a.exactYears>.8&&o%12==0?t=V.tickIncrement(t,\"M6\",\"reverse\")+1.5*M:a.exactMonths>.8?t=V.tickIncrement(t,\"M1\",\"reverse\")+15.5*M:t-=S;var l=V.tickIncrement(t,r);if(l<=n)return l}return t}(y,t,v,c,a)),m=y,0;m<=u;)m=V.tickIncrement(m,v,!1,a);return{start:e.c2r(y,0,a),end:e.c2r(m,0,a),size:v,_dataSpan:u-c}},V.prepTicks=function(t,e){var r=s.simpleMap(t.range,t.r2l,void 0,void 0,e);if(t._dtickInit=t.dtick,t._tick0Init=t.tick0,\"auto\"===t.tickmode||!t.dtick){var n,a=t.nticks;a||(\"category\"===t.type||\"multicategory\"===t.type?(n=t.tickfont?s.bigFont(t.tickfont.size||12):15,a=t._length/n):(n=\"y\"===t._id.charAt(0)?40:80,a=s.constrain(t._length/n,4,9)+1),\"radialaxis\"===t._name&&(a*=2)),\"array\"===t.tickmode&&(a*=100),t._roughDTick=Math.abs(r[1]-r[0])/a,V.autoTicks(t,t._roughDTick),t._minDtick>0&&t.dtick<2*t._minDtick&&(t.dtick=t._minDtick,t.tick0=t.l2r(t._forceTick0))}\"period\"===t.ticklabelmode&&function(t){var e;function r(){return!(i(t.dtick)||\"M\"!==t.dtick.charAt(0))}var n=r(),a=V.getTickFormat(t);if(a){var o=t._dtickInit!==t.dtick;/%[fLQsSMX]/.test(a)||(/%[HI]/.test(a)?(e=E,o&&!n&&t.dticka&&f=o:d<=o;d=V.tickIncrement(d,t.dtick,l,t.calendar)){if(R++,t.rangebreaks&&!l){if(d=u)break}if(P.length>C||d===O)break;O=d;var F=!1;h&&d!==(0|d)&&(F=!0);var B={minor:F,value:d};L>1&&R%L&&(B.skipLabel=!0),P.push(B)}if(p&&function(t,e,r){for(var n=0;n0?(a=n-1,o=n):(a=n,o=n);var s,l=t[a].value,c=t[o].value,u=Math.abs(c-l),f=r||u,h=0;f>=y?h=u>=y&&u<=m?u:v:r===b&&f>=_?h=u>=_&&u<=x?u:b:f>=k?h=u>=k&&u<=w?u:T:r===A&&f>=A?h=A:f>=M?h=M:r===S&&f>=S?h=S:r===E&&f>=E&&(h=E),h>=u&&(h=u,s=!0);var p=i+h;if(e.rangebreaks&&h>0){for(var d=0,g=0;g<84;g++){var L=(g+.5)/84;e.maskBreaks(i*(1-L)+L*p)!==I&&d++}(h*=d/84)||(t[n].drop=!0),s&&u>A&&(h=u)}(h>0||0===n)&&(t[n].periodX=i+h/2)}}(P,t,t._definedDelta),t.rangebreaks){var N=\"y\"===t._id.charAt(0),j=1;\"auto\"===t.tickmode&&(j=t.tickfont?t.tickfont.size:12);var U=NaN;for(z=P.length-1;z>-1;z--)if(P[z].drop)P.splice(z,1);else{P[z].value=Mt(P[z].value,t);var H=t.c2p(P[z].value);(N?U>H-j:Uu||Gu&&(q.periodX=u),G10||\"01-01\"!==n.substr(5)?t._tickround=\"d\":t._tickround=+e.substr(1)%12==0?\"y\":\"m\";else if(e>=M&&a<=10||e>=15*M)t._tickround=\"d\";else if(e>=L&&a<=16||e>=E)t._tickround=\"M\";else if(e>=C&&a<=19||e>=L)t._tickround=\"S\";else{var o=t.l2r(r+e).replace(/^-/,\"\").length;t._tickround=Math.max(a,o)-20,t._tickround<0&&(t._tickround=4)}}else if(i(e)||\"L\"===e.charAt(0)){var s=t.range.map(t.r2d||Number);i(e)||(e=Number(e.substr(1))),t._tickround=2-Math.floor(Math.log(e)/Math.LN10+.01);var l=Math.max(Math.abs(s[0]),Math.abs(s[1])),c=Math.floor(Math.log(l)/Math.LN10+.01),u=void 0===t.minexponent?3:t.minexponent;Math.abs(c)>u&&(ut(t.exponentformat)&&!ft(c)?t._tickexponent=3*Math.round((c-1)/3):t._tickexponent=c)}else t._tickround=null}function lt(t,e,r){var n=t.tickfont||{};return{x:e,dx:0,dy:0,text:r||\"\",fontSize:n.size,font:n.family,fontColor:n.color}}V.autoTicks=function(t,e){var r;function n(t){return Math.pow(t,Math.floor(Math.log(e)/Math.LN10))}if(\"date\"===t.type){t.tick0=s.dateTick0(t.calendar,0);var a=2*e;if(a>v)e/=v,r=n(10),t.dtick=\"M\"+12*ot(e,r,$);else if(a>T)e/=T,t.dtick=\"M\"+ot(e,1,tt);else if(a>M){t.dtick=ot(e,M,t._hasDayOfWeekBreaks?[1,2,7,14]:rt);var o=V.getTickFormat(t),l=\"period\"===t.ticklabelmode;l&&(t._rawTick0=t.tick0),/%[uVW]/.test(o)?t.tick0=s.dateTick0(t.calendar,2):t.tick0=s.dateTick0(t.calendar,1),l&&(t._dowTick0=t.tick0)}else a>E?t.dtick=ot(e,E,tt):a>L?t.dtick=ot(e,L,et):a>C?t.dtick=ot(e,C,et):(r=n(10),t.dtick=ot(e,r,$))}else if(\"log\"===t.type){t.tick0=0;var c=s.simpleMap(t.range,t.r2l);if(e>.7)t.dtick=Math.ceil(e);else if(Math.abs(c[1]-c[0])<1){var u=1.5*Math.abs((c[1]-c[0])/e);e=Math.abs(Math.pow(10,c[1])-Math.pow(10,c[0]))/u,r=n(10),t.dtick=\"L\"+ot(e,r,$)}else t.dtick=e>.3?\"D2\":\"D1\"}else\"category\"===t.type||\"multicategory\"===t.type?(t.tick0=0,t.dtick=Math.ceil(Math.max(e,1))):At(t)?(t.tick0=0,r=1,t.dtick=ot(e,r,at)):(t.tick0=0,r=n(10),t.dtick=ot(e,r,$));if(0===t.dtick&&(t.dtick=1),!i(t.dtick)&&\"string\"!=typeof t.dtick){var f=t.dtick;throw t.dtick=1,\"ax.dtick error: \"+String(f)}},V.tickIncrement=function(t,e,r,a){var o=r?-1:1;if(i(e))return s.increment(t,o*e);var l=e.charAt(0),c=o*Number(e.substr(1));if(\"M\"===l)return s.incrementMonth(t,c,a);if(\"L\"===l)return Math.log(Math.pow(10,t)+c)/Math.LN10;if(\"D\"===l){var u=\"D2\"===e?it:nt,f=t+.01*o,h=s.roundUp(s.mod(f,1),u,r);return Math.floor(f)+Math.log(n.round(Math.pow(10,h),1))/Math.LN10}throw\"unrecognized dtick \"+String(e)},V.tickFirst=function(t,e){var r=t.r2l||Number,a=s.simpleMap(t.range,r,void 0,void 0,e),o=a[1] \")}else t._prevDateHead=l,c+=\"
\"+l;e.text=c}(t,o,r,c):\"log\"===u?function(t,e,r,n,a){var o=t.dtick,l=e.x,c=t.tickformat,u=\"string\"==typeof o&&o.charAt(0);\"never\"===a&&(a=\"\");n&&\"L\"!==u&&(o=\"L3\",u=\"L\");if(c||\"L\"===u)e.text=ht(Math.pow(10,l),t,a,n);else if(i(o)||\"D\"===u&&s.mod(l+.01,1)<.1){var f=Math.round(l),h=Math.abs(f),p=t.exponentformat;\"power\"===p||ut(p)&&ft(f)?(e.text=0===f?1:1===f?\"10\":\"10\"+(f>1?\"\":P)+h+\"\",e.fontSize*=1.25):(\"e\"===p||\"E\"===p)&&h>2?e.text=\"1\"+p+(f>0?\"+\":P)+h:(e.text=ht(Math.pow(10,l),t,\"\",\"fakehover\"),\"D1\"===o&&\"y\"===t._id.charAt(0)&&(e.dy-=e.fontSize/6))}else{if(\"D\"!==u)throw\"unrecognized dtick \"+String(o);e.text=String(Math.round(Math.pow(10,s.mod(l,1)))),e.fontSize*=.75}if(\"D1\"===t.dtick){var d=String(e.text).charAt(0);\"0\"!==d&&\"1\"!==d||(\"y\"===t._id.charAt(0)?e.dx-=e.fontSize/4:(e.dy+=e.fontSize/2,e.dx+=(t.range[1]>t.range[0]?1:-1)*e.fontSize*(l<0?.5:.25)))}}(t,o,0,c,g):\"category\"===u?function(t,e){var r=t._categories[Math.round(e.x)];void 0===r&&(r=\"\");e.text=String(r)}(t,o):\"multicategory\"===u?function(t,e,r){var n=Math.round(e.x),i=t._categories[n]||[],a=void 0===i[1]?\"\":String(i[1]),o=void 0===i[0]?\"\":String(i[0]);r?e.text=o+\" - \"+a:(e.text=a,e.text2=o)}(t,o,r):At(t)?function(t,e,r,n,i){if(\"radians\"!==t.thetaunit||r)e.text=ht(e.x,t,i,n);else{var a=e.x/180;if(0===a)e.text=\"0\";else{var o=function(t){function e(t,e){return Math.abs(t-e)<=1e-6}var r=function(t){for(var r=1;!e(Math.round(t*r)/r,t);)r*=10;return r}(t),n=t*r,i=Math.abs(function t(r,n){return e(n,0)?r:t(n,r%n)}(n,r));return[Math.round(n/i),Math.round(r/i)]}(a);if(o[1]>=100)e.text=ht(s.deg2rad(e.x),t,i,n);else{var l=e.x<0;1===o[1]?1===o[0]?e.text=\"\\u03c0\":e.text=o[0]+\"\\u03c0\":e.text=[\"\",o[0],\"\",\"\\u2044\",\"\",o[1],\"\",\"\\u03c0\"].join(\"\"),l&&(e.text=P+e.text)}}}}(t,o,r,c,g):function(t,e,r,n,i){\"never\"===i?i=\"\":\"all\"===t.showexponent&&Math.abs(e.x/t.dtick)<1e-6&&(i=\"hide\");e.text=ht(e.x,t,i,n)}(t,o,0,c,g),n||(t.tickprefix&&!d(t.showtickprefix)&&(o.text=t.tickprefix+o.text),t.ticksuffix&&!d(t.showticksuffix)&&(o.text+=t.ticksuffix)),\"boundaries\"===t.tickson||t.showdividers){var m=function(e){var r=t.l2p(e);return r>=0&&r<=t._length?e:null};o.xbnd=[m(o.x-.5),m(o.x+t.dtick-.5)]}return o},V.hoverLabelText=function(t,e,r){r&&(t=s.extendFlat({},t,{hoverformat:r}));var n=Array.isArray(e)?e[0]:e,i=Array.isArray(e)?e[1]:void 0;if(void 0!==i&&i!==n)return V.hoverLabelText(t,n,r)+\" - \"+V.hoverLabelText(t,i,r);var a=\"log\"===t.type&&n<=0,o=V.tickText(t,t.c2l(a?-n:n),\"hover\").text;return a?0===n?\"0\":P+o:o};var ct=[\"f\",\"p\",\"n\",\"\\u03bc\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\"];function ut(t){return\"SI\"===t||\"B\"===t}function ft(t){return t>14||t<-15}function ht(t,e,r,n){var a=t<0,o=e._tickround,l=r||e.exponentformat||\"B\",c=e._tickexponent,u=V.getTickFormat(e),f=e.separatethousands;if(n){var h={exponentformat:l,minexponent:e.minexponent,dtick:\"none\"===e.showexponent?e.dtick:i(t)&&Math.abs(t)||1,range:\"none\"===e.showexponent?e.range.map(e.r2d):[0,t||1]};st(h),o=(Number(h._tickround)||0)+4,c=h._tickexponent,e.hoverformat&&(u=e.hoverformat)}if(u)return e._numFormat(u)(t).replace(/-/g,P);var p,d=Math.pow(10,-o)/2;if(\"none\"===l&&(c=0),(t=Math.abs(t))\"+p+\"\":\"B\"===l&&9===c?t+=\"B\":ut(l)&&(t+=ct[c/3+5]));return a?P+t:t}function pt(t,e){for(var r=[],n={},i=0;i1&&r=i.min&&t=0,a=u(t,e[1])<=0;return(r||i)&&(n||a)}if(t.tickformatstops&&t.tickformatstops.length>0)switch(t.type){case\"date\":case\"linear\":for(e=0;e=o(i)))){r=n;break}break;case\"log\":for(e=0;e0?r.bottom-f:0,h)))),e.automargin){n={x:0,y:0,r:0,l:0,t:0,b:0};var p=[0,1];if(\"x\"===d){if(\"b\"===l?n[l]=e._depth:(n[l]=e._depth=Math.max(r.width>0?f-r.top:0,h),p.reverse()),r.width>0){var m=r.right-(e._offset+e._length);m>0&&(n.xr=1,n.r=m);var v=e._offset-r.left;v>0&&(n.xl=0,n.l=v)}}else if(\"l\"===l?n[l]=e._depth=Math.max(r.height>0?f-r.left:0,h):(n[l]=e._depth=Math.max(r.height>0?r.right-f:0,h),p.reverse()),r.height>0){var y=r.bottom-(e._offset+e._length);y>0&&(n.yb=0,n.b=y);var x=e._offset-r.top;x>0&&(n.yt=1,n.t=x)}n[g]=\"free\"===e.anchor?e.position:e._anchorAxis.domain[p[0]],e.title.text!==c._dfltTitle[d]&&(n[l]+=mt(e)+(e.title.standoff||0)),e.mirror&&\"free\"!==e.anchor&&((i={x:0,y:0,r:0,l:0,t:0,b:0})[u]=e.linewidth,e.mirror&&!0!==e.mirror&&(i[u]+=h),!0===e.mirror||\"ticks\"===e.mirror?i[g]=e._anchorAxis.domain[p[1]]:\"all\"!==e.mirror&&\"allticks\"!==e.mirror||(i[g]=[e._counterDomainMin,e._counterDomainMax][p[1]]))}K&&(s=o.getComponentMethod(\"rangeslider\",\"autoMarginOpts\")(t,e)),a.autoMargin(t,xt(e),n),a.autoMargin(t,bt(e),i),a.autoMargin(t,_t(e),s)})),r.skipTitle||K&&\"bottom\"===e.side||Z.push((function(){return function(t,e){var r,n=t._fullLayout,i=e._id,a=i.charAt(0),o=e.title.font.size;if(e.title.hasOwnProperty(\"standoff\"))r=e._depth+e.title.standoff+mt(e);else{var s=St(e);if(\"multicategory\"===e.type)r=e._depth;else{var l=1.5*o;s&&(l=.5*o,\"outside\"===e.ticks&&(l+=e.ticklen)),r=10+l+(e.linewidth?e.linewidth-1:0)}s||(r+=\"x\"===a?\"top\"===e.side?o*(e.showticklabels?1:0):o*(e.showticklabels?1.5:.5):\"right\"===e.side?o*(e.showticklabels?1:.5):o*(e.showticklabels?.5:0))}var c,f,p,d,g=V.getPxPosition(t,e);\"x\"===a?(f=e._offset+e._length/2,p=\"top\"===e.side?g-r:g+r):(p=e._offset+e._length/2,f=\"right\"===e.side?g+r:g-r,c={rotate:\"-90\",offset:0});if(\"multicategory\"!==e.type){var m=e._selections[e._id+\"tick\"];if(d={selection:m,side:e.side},m&&m.node()&&m.node().parentNode){var v=h.getTranslate(m.node().parentNode);d.offsetLeft=v.x,d.offsetTop=v.y}e.title.hasOwnProperty(\"standoff\")&&(d.pad=0)}return u.draw(t,i+\"title\",{propContainer:e,propName:e._name+\".title.text\",placeholder:n._dfltTitle[a],avoid:d,transform:c,attributes:{x:f,y:p,\"text-anchor\":\"middle\"}})}(t,e)})),s.syncOrAsync(Z)}}function Q(t){var r=p+(t||\"tick\");return w[r]||(w[r]=function(t,e){var r,n,i,a;t._selections[e].size()?(r=1/0,n=-1/0,i=1/0,a=-1/0,t._selections[e].each((function(){var t=yt(this),e=h.bBox(t.node().parentNode);r=Math.min(r,e.top),n=Math.max(n,e.bottom),i=Math.min(i,e.left),a=Math.max(a,e.right)}))):(r=0,n=0,i=0,a=0);return{top:r,bottom:n,left:i,right:a,height:n-r,width:a-i}}(e,r)),w[r]}},V.getTickSigns=function(t){var e=t._id.charAt(0),r={x:\"top\",y:\"right\"}[e],n=t.side===r?1:-1,i=[-1,1,n,-n];return\"inside\"!==t.ticks==(\"x\"===e)&&(i=i.map((function(t){return-t}))),t.side&&i.push({l:-1,t:-1,r:1,b:1}[t.side.charAt(0)]),i},V.makeTransTickFn=function(t){return\"x\"===t._id.charAt(0)?function(e){return l(t._offset+t.l2p(e.x),0)}:function(e){return l(0,t._offset+t.l2p(e.x))}},V.makeTransTickLabelFn=function(t){var e=function(t){var e=t.ticklabelposition||\"\",r=function(t){return-1!==e.indexOf(t)},n=r(\"top\"),i=r(\"left\"),a=r(\"right\"),o=r(\"bottom\"),s=r(\"inside\"),l=o||i||n||a;if(!l&&!s)return[0,0];var c=t.side,u=l?(t.tickwidth||0)/2:0,f=3,h=t.tickfont?t.tickfont.size:12;(o||n)&&(u+=h*N,f+=(t.linewidth||0)/2);(i||a)&&(u+=(t.linewidth||0)/2,f+=3);s&&\"top\"===c&&(f-=h*(1-N));(i||n)&&(u=-u);\"bottom\"!==c&&\"right\"!==c||(f=-f);return[l?u:0,s?f:0]}(t),r=e[0],n=e[1];return\"x\"===t._id.charAt(0)?function(e){return l(r+t._offset+t.l2p(dt(e)),n)}:function(e){return l(n,r+t._offset+t.l2p(dt(e)))}},V.makeTickPath=function(t,e,r,n){n=void 0!==n?n:t.ticklen;var i=t._id.charAt(0),a=(t.linewidth||1)/2;return\"x\"===i?\"M0,\"+(e+a*r)+\"v\"+n*r:\"M\"+(e+a*r)+\",0h\"+n*r},V.makeLabelFns=function(t,e,r){var n=t.ticklabelposition||\"\",a=function(t){return-1!==n.indexOf(t)},o=a(\"top\"),l=a(\"left\"),c=a(\"right\"),u=a(\"bottom\")||l||o||c,f=a(\"inside\"),h=\"inside\"===n&&\"inside\"===t.ticks||!f&&\"outside\"===t.ticks&&\"boundaries\"!==t.tickson,p=0,d=0,g=h?t.ticklen:0;if(f?g*=-1:u&&(g=0),h&&(p+=g,r)){var m=s.deg2rad(r);p=g*Math.cos(m)+1,d=g*Math.sin(m)}t.showticklabels&&(h||t.showline)&&(p+=.2*t.tickfont.size);var v,y,x,b,_,w={labelStandoff:p+=(t.linewidth||1)/2*(f?-1:1),labelShift:d},T=0,k=t.side,A=t._id.charAt(0),M=t.tickangle;if(\"x\"===A)b=(_=!f&&\"bottom\"===k||f&&\"top\"===k)?1:-1,f&&(b*=-1),v=d*b,y=e+p*b,x=_?1:-.2,90===Math.abs(M)&&(f?x+=B:x=-90===M&&\"bottom\"===k?N:90===M&&\"top\"===k?B:.5,T=B/2*(M/90)),w.xFn=function(t){return t.dx+v+T*t.fontSize},w.yFn=function(t){return t.dy+y+t.fontSize*x},w.anchorFn=function(t,e){if(u){if(l)return\"end\";if(c)return\"start\"}return i(e)&&0!==e&&180!==e?e*b<0!==f?\"end\":\"start\":\"middle\"},w.heightFn=function(e,r,n){return r<-60||r>60?-.5*n:\"top\"===t.side!==f?-n:0};else if(\"y\"===A){if(b=(_=!f&&\"left\"===k||f&&\"right\"===k)?1:-1,f&&(b*=-1),v=p,y=d*b,x=0,f||90!==Math.abs(M)||(x=-90===M&&\"left\"===k||90===M&&\"right\"===k?N:.5),f){var S=i(M)?+M:0;if(0!==S){var E=s.deg2rad(S);T=Math.abs(Math.sin(E))*N*b,x=0}}w.xFn=function(t){return t.dx+e-(v+t.fontSize*x)*b+T*t.fontSize},w.yFn=function(t){return t.dy+y+t.fontSize*B},w.anchorFn=function(t,e){return i(e)&&90===Math.abs(e)?\"middle\":_?\"end\":\"start\"},w.heightFn=function(e,r,n){return\"right\"===t.side&&(r*=-1),r<-30?-n:r<30?-.5*n:0}}return w},V.drawTicks=function(t,e,r){r=r||{};var n=e._id+\"tick\",i=r.vals;\"period\"===e.ticklabelmode&&(i=i.slice()).shift();var a=r.layer.selectAll(\"path.\"+n).data(e.ticks?i:[],gt);a.exit().remove(),a.enter().append(\"path\").classed(n,1).classed(\"ticks\",1).classed(\"crisp\",!1!==r.crisp).call(f.stroke,e.tickcolor).style(\"stroke-width\",h.crispRound(t,e.tickwidth,1)+\"px\").attr(\"d\",r.path).style(\"display\",null),Et(e,[D]),a.attr(\"transform\",r.transFn)},V.drawGrid=function(t,e,r){r=r||{};var n=e._id+\"grid\",i=r.vals,a=r.counterAxis;if(!1===e.showgrid)i=[];else if(a&&V.shouldShowZeroLine(t,e,a))for(var o=\"array\"===e.tickmode,s=0;sp||a.leftp||a.top+(e.tickangle?0:t.fontSize/4)e[\"_visibleLabelMin_\"+r._id]?l.style(\"display\",\"none\"):\"tick\"!==t.K||i||l.style(\"display\",null)}))}))}))}))},x(v,m+1?m:g);var b=null;e._selections&&(e._selections[f]=v);var _=[function(){return y.length&&Promise.all(y)}];e.automargin&&a._redrawFromAutoMarginCount&&90===m?(b=90,_.push((function(){x(v,m)}))):_.push((function(){if(x(v,g),p.length&&\"x\"===u&&!i(g)&&(\"log\"!==e.type||\"D\"!==String(e.dtick).charAt(0))){b=0;var t,n=0,a=[];if(v.each((function(t){n=Math.max(n,t.fontSize);var r=e.l2p(t.x),i=yt(this),o=h.bBox(i.node());a.push({top:0,bottom:10,height:10,left:r-o.width/2,right:r+o.width/2+2,width:o.width+2})})),\"boundaries\"!==e.tickson&&!e.showdividers||r.secondary){var o=p.length,l=Math.abs((p[o-1].x-p[0].x)*e._m)/(o-1),c=e.ticklabelposition||\"\",f=function(t){return-1!==c.indexOf(t)},d=f(\"top\"),m=f(\"left\"),y=f(\"right\"),_=f(\"bottom\")||m||d||y?(e.tickwidth||0)+6:0,w=l<2.5*n||\"multicategory\"===e.type||\"realaxis\"===e._name;for(t=0;t1)for(n=1;n2*o}(i,e))return\"date\";var m=\"strict\"!==r.autotypenumbers;return function(t,e){for(var r=t.length,n=f(r),i=0,o=0,s={},u=0;u2*i}(i,m)?\"category\":function(t,e){for(var r=t.length,n=0;n=2){var l,c,u=\"\";if(2===o.length)for(l=0;l<2;l++)if(c=x(o[l])){u=g;break}var f=i(\"pattern\",u);if(f===g)for(l=0;l<2;l++)(c=x(o[l]))&&(e.bounds[l]=o[l]=c-1);if(f)for(l=0;l<2;l++)switch(c=o[l],f){case g:if(!n(c))return void(e.enabled=!1);if((c=+c)!==Math.floor(c)||c<0||c>=7)return void(e.enabled=!1);e.bounds[l]=o[l]=c;break;case m:if(!n(c))return void(e.enabled=!1);if((c=+c)<0||c>24)return void(e.enabled=!1);e.bounds[l]=o[l]=c}if(!1===r.autorange){var h=r.range;if(h[0]h[1])return void(e.enabled=!1)}else if(o[0]>h[0]&&o[1]n?1:-1:+(t.substr(1)||1)-+(e.substr(1)||1)},r.ref2id=function(t){return!!/^[xyz]/.test(t)&&t.split(\" \")[0]},r.isLinked=function(t,e){return a(e,t._axisMatchGroups)||a(e,t._axisConstraintGroups)}},{\"../../registry\":638,\"./constants\":561}],559:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,n){if(\"category\"===e.type){var i,a=t.categoryarray,o=Array.isArray(a)&&a.length>0;o&&(i=\"array\");var s,l=r(\"categoryorder\",i);\"array\"===l&&(s=r(\"categoryarray\")),o||\"array\"!==l||(l=e.categoryorder=\"trace\"),\"trace\"===l?e._initialCategories=[]:\"array\"===l?e._initialCategories=s.slice():(s=function(t,e){var r,n,i,a=e.dataAttr||t._id.charAt(0),o={};if(e.axData)r=e.axData;else for(r=[],n=0;nn?i.substr(n):a.substr(r))+o:i+a+t*e:o}function m(t,e){for(var r=e._size,n=r.h/r.w,i={},a=Object.keys(t),o=0;oc*x)||T)for(r=0;rO&&FP&&(P=F);h/=(P-C)/(2*I),C=l.l2r(C),P=l.l2r(P),l.range=l._input.range=S=0?Math.min(t,.9):1/(1/Math.max(t,-.3)+3.222))}function N(t,e,r,n,i){return t.append(\"path\").attr(\"class\",\"zoombox\").style({fill:e>.2?\"rgba(0,0,0,0)\":\"rgba(255,255,255,0)\",\"stroke-width\":0}).attr(\"transform\",c(r,n)).attr(\"d\",i+\"Z\")}function j(t,e,r){return t.append(\"path\").attr(\"class\",\"zoombox-corners\").style({fill:f.background,stroke:f.defaultLine,\"stroke-width\":1,opacity:0}).attr(\"transform\",c(e,r)).attr(\"d\",\"M0,0Z\")}function U(t,e,r,n,i,a){t.attr(\"d\",n+\"M\"+r.l+\",\"+r.t+\"v\"+r.h+\"h\"+r.w+\"v-\"+r.h+\"h-\"+r.w+\"Z\"),V(t,e,i,a)}function V(t,e,r,n){r||(t.transition().style(\"fill\",n>.2?\"rgba(0,0,0,0.4)\":\"rgba(255,255,255,0.3)\").duration(200),e.transition().style(\"opacity\",1).duration(200))}function H(t){n.select(t).selectAll(\".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners\").remove()}function q(t){I&&t.data&&t._context.showTips&&(i.notifier(i._(t,\"Double-click to zoom back out\"),\"long\"),I=!1)}function G(t){var e=Math.floor(Math.min(t.b-t.t,t.r-t.l,P)/2);return\"M\"+(t.l-3.5)+\",\"+(t.t-.5+e)+\"h3v\"+-e+\"h\"+e+\"v-3h-\"+(e+3)+\"ZM\"+(t.r+3.5)+\",\"+(t.t-.5+e)+\"h-3v\"+-e+\"h\"+-e+\"v-3h\"+(e+3)+\"ZM\"+(t.r+3.5)+\",\"+(t.b+.5-e)+\"h-3v\"+e+\"h\"+-e+\"v3h\"+(e+3)+\"ZM\"+(t.l-3.5)+\",\"+(t.b+.5-e)+\"h3v\"+e+\"h\"+e+\"v3h-\"+(e+3)+\"Z\"}function Y(t,e,r,n,a){for(var o,s,l,c,u=!1,f={},h={},p=(a||{}).xaHash,d=(a||{}).yaHash,g=0;g=0)i._fullLayout._deactivateShape(i);else{var o=i._fullLayout.clickmode;if(H(i),2!==t||vt||qt(),mt)o.indexOf(\"select\")>-1&&S(r,i,J,K,e.id,Pt),o.indexOf(\"event\")>-1&&p.click(i,r,e.id);else if(1===t&&vt){var s=g?O:I,c=\"s\"===g||\"w\"===v?0:1,f=s._name+\".range[\"+c+\"]\",h=function(t,e){var r,n=t.range[e],i=Math.abs(n-t.range[1-e]);return\"date\"===t.type?n:\"log\"===t.type?(r=Math.ceil(Math.max(0,-Math.log(i)/Math.LN10))+3,a(\".\"+r+\"g\")(Math.pow(10,n))):(r=Math.floor(Math.log(Math.abs(n))/Math.LN10)-Math.floor(Math.log(i)/Math.LN10)+4,a(\".\"+String(r)+\"g\")(n))}(s,c),d=\"left\",m=\"middle\";if(s.fixedrange)return;g?(m=\"n\"===g?\"top\":\"bottom\",\"right\"===s.side&&(d=\"right\")):\"e\"===v&&(d=\"right\"),i._context.showAxisRangeEntryBoxes&&n.select(bt).call(u.makeEditable,{gd:i,immediate:!0,background:i._fullLayout.paper_bgcolor,text:String(h),fill:s.tickfont?s.tickfont.color:\"#444\",horizontalAlign:d,verticalAlign:m}).on(\"edit\",(function(t){var e=s.d2r(t);void 0!==e&&l.call(\"_guiRelayout\",i,f,e)}))}}}function zt(e,r){if(t._transitioningWithDuration)return!1;var n=Math.max(0,Math.min(tt,pt*e+_t)),i=Math.max(0,Math.min(et,dt*r+wt)),a=Math.abs(n-_t),o=Math.abs(i-wt);function s(){St=\"\",Tt.r=Tt.l,Tt.t=Tt.b,Lt.attr(\"d\",\"M0,0Z\")}if(Tt.l=Math.min(_t,n),Tt.r=Math.max(_t,n),Tt.t=Math.min(wt,i),Tt.b=Math.max(wt,i),rt.isSubplotConstrained)a>P||o>P?(St=\"xy\",a/tt>o/et?(o=a*et/tt,wt>i?Tt.t=wt-o:Tt.b=wt+o):(a=o*tt/et,_t>n?Tt.l=_t-a:Tt.r=_t+a),Lt.attr(\"d\",G(Tt))):s();else if(nt.isSubplotConstrained)if(a>P||o>P){St=\"xy\";var l=Math.min(Tt.l/tt,(et-Tt.b)/et),c=Math.max(Tt.r/tt,(et-Tt.t)/et);Tt.l=l*tt,Tt.r=c*tt,Tt.b=(1-l)*et,Tt.t=(1-c)*et,Lt.attr(\"d\",G(Tt))}else s();else!at||o0){var u;if(nt.isSubplotConstrained||!it&&1===at.length){for(u=0;ug[1]-1/4096&&(e.domain=s),i.noneOrAll(t.domain,e.domain,s)}return r(\"layer\"),e}},{\"../../lib\":503,\"fast-isnumeric\":190}],573:[function(t,e,r){\"use strict\";var n=t(\"./show_dflt\");e.exports=function(t,e,r,i,a){a||(a={});var o=a.tickSuffixDflt,s=n(t);r(\"tickprefix\")&&r(\"showtickprefix\",s),r(\"ticksuffix\",o)&&r(\"showticksuffix\",s)}},{\"./show_dflt\":577}],574:[function(t,e,r){\"use strict\";var n=t(\"../../constants/alignment\").FROM_BL;e.exports=function(t,e,r){void 0===r&&(r=n[t.constraintoward||\"center\"]);var i=[t.r2l(t.range[0]),t.r2l(t.range[1])],a=i[0]+(i[1]-i[0])*r;t.range=t._input.range=[t.l2r(a+(i[0]-a)*e),t.l2r(a+(i[1]-a)*e)],t.setScale()}},{\"../../constants/alignment\":471}],575:[function(t,e,r){\"use strict\";var n=t(\"polybooljs\"),i=t(\"../../registry\"),a=t(\"../../components/drawing\").dashStyle,o=t(\"../../components/color\"),s=t(\"../../components/fx\"),l=t(\"../../components/fx/helpers\").makeEventData,c=t(\"../../components/dragelement/helpers\"),u=c.freeMode,f=c.rectMode,h=c.drawMode,p=c.openMode,d=c.selectMode,g=t(\"../../components/shapes/draw_newshape/display_outlines\"),m=t(\"../../components/shapes/draw_newshape/helpers\").handleEllipse,v=t(\"../../components/shapes/draw_newshape/newshapes\"),y=t(\"../../lib\"),x=t(\"../../lib/polygon\"),b=t(\"../../lib/throttle\"),_=t(\"./axis_ids\").getFromId,w=t(\"../../lib/clear_gl_canvases\"),T=t(\"../../plot_api/subroutines\").redrawReglTraces,k=t(\"./constants\"),A=k.MINSELECT,M=x.filter,S=x.tester,E=t(\"./handle_outline\").clearSelect,L=t(\"./helpers\"),C=L.p2r,P=L.axValue,I=L.getTransform;function O(t,e,r,n,i,a,o){var s,l,c,u,f,h,d,m,v,y=e._hoverdata,x=e._fullLayout.clickmode.indexOf(\"event\")>-1,b=[];if(function(t){return t&&Array.isArray(t)&&!0!==t[0].hoverOnBox}(y)){F(t,e,a);var _=function(t,e){var r,n,i=t[0],a=-1,o=[];for(n=0;n0?function(t,e){var r,n,i,a=[];for(i=0;i0&&a.push(r);if(1===a.length&&a[0]===e.searchInfo&&(n=e.searchInfo.cd[0].trace).selectedpoints.length===e.pointNumbers.length){for(i=0;i1)return!1;if((i+=r.selectedpoints.length)>1)return!1}return 1===i}(s)&&(h=j(_))){for(o&&o.remove(),v=0;v=0&&n._fullLayout._deactivateShape(n),h(e)){var a=n._fullLayout._zoomlayer.selectAll(\".select-outline-\"+r.id);if(a&&n._fullLayout._drawing){var o=v(a,t);o&&i.call(\"_guiRelayout\",n,{shapes:o}),n._fullLayout._drawing=!1}}r.selection={},r.selection.selectionDefs=t.selectionDefs=[],r.selection.mergedPolygons=t.mergedPolygons=[]}function N(t,e,r,n){var i,a,o,s=[],l=e.map((function(t){return t._id})),c=r.map((function(t){return t._id}));for(o=0;o0?n[0]:r;return!!e.selectedpoints&&e.selectedpoints.indexOf(i)>-1}function U(t,e,r){var n,a,o,s;for(n=0;n=0)L._fullLayout._deactivateShape(L);else if(!_){var r=z.clickmode;b.done(gt).then((function(){if(b.clear(gt),2===t){for(ft.remove(),$=0;$-1&&O(e,L,i.xaxes,i.yaxes,i.subplot,i,ft),\"event\"===r&&L.emit(\"plotly_selected\",void 0);s.click(L,e)})).catch(y.error)}},i.doneFn=function(){dt.remove(),b.done(gt).then((function(){b.clear(gt),i.gd.emit(\"plotly_selected\",et),Q&&i.selectionDefs&&(Q.subtract=ut,i.selectionDefs.push(Q),i.mergedPolygons.length=0,[].push.apply(i.mergedPolygons,K)),i.doneFnCompleted&&i.doneFnCompleted(mt)})).catch(y.error),_&&B(i)}},clearSelect:E,clearSelectionsCache:B,selectOnClick:O}},{\"../../components/color\":366,\"../../components/dragelement/helpers\":384,\"../../components/drawing\":388,\"../../components/fx\":406,\"../../components/fx/helpers\":402,\"../../components/shapes/draw_newshape/display_outlines\":454,\"../../components/shapes/draw_newshape/helpers\":455,\"../../components/shapes/draw_newshape/newshapes\":456,\"../../lib\":503,\"../../lib/clear_gl_canvases\":487,\"../../lib/polygon\":515,\"../../lib/throttle\":530,\"../../plot_api/subroutines\":544,\"../../registry\":638,\"./axis_ids\":558,\"./constants\":561,\"./handle_outline\":565,\"./helpers\":566,polybooljs:254}],576:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"d3-time-format\").utcFormat,a=t(\"../../lib\"),o=a.numberFormat,s=t(\"fast-isnumeric\"),l=a.cleanNumber,c=a.ms2DateTime,u=a.dateTime2ms,f=a.ensureNumber,h=a.isArrayOrTypedArray,p=t(\"../../constants/numerical\"),d=p.FP_SAFE,g=p.BADNUM,m=p.LOG_CLIP,v=p.ONEWEEK,y=p.ONEDAY,x=p.ONEHOUR,b=p.ONEMIN,_=p.ONESEC,w=t(\"./axis_ids\"),T=t(\"./constants\"),k=T.HOUR_PATTERN,A=T.WEEKDAY_PATTERN;function M(t){return Math.pow(10,t)}function S(t){return null!=t}e.exports=function(t,e){e=e||{};var r=t._id||\"x\",p=r.charAt(0);function E(e,r){if(e>0)return Math.log(e)/Math.LN10;if(e<=0&&r&&t.range&&2===t.range.length){var n=t.range[0],i=t.range[1];return.5*(n+i-2*m*Math.abs(n-i))}return g}function L(e,r,n,i){if((i||{}).msUTC&&s(e))return+e;var o=u(e,n||t.calendar);if(o===g){if(!s(e))return g;e=+e;var l=Math.floor(10*a.mod(e+.05,1)),c=Math.round(e-l/10);o=u(new Date(c))+l/10}return o}function C(e,r,n){return c(e,r,n||t.calendar)}function P(e){return t._categories[Math.round(e)]}function I(e){if(S(e)){if(void 0===t._categoriesMap&&(t._categoriesMap={}),void 0!==t._categoriesMap[e])return t._categoriesMap[e];t._categories.push(\"number\"==typeof e?String(e):e);var r=t._categories.length-1;return t._categoriesMap[e]=r,r}return g}function O(e){if(t._categoriesMap)return t._categoriesMap[e]}function z(t){var e=O(t);return void 0!==e?e:s(t)?+t:void 0}function D(t){return s(t)?+t:O(t)}function R(t,e,r){return n.round(r+e*t,2)}function F(t,e,r){return(t-r)/e}var B=function(e){return s(e)?R(e,t._m,t._b):g},N=function(e){return F(e,t._m,t._b)};if(t.rangebreaks){var j=\"y\"===p;B=function(e){if(!s(e))return g;var r=t._rangebreaks.length;if(!r)return R(e,t._m,t._b);var n=j;t.range[0]>t.range[1]&&(n=!n);for(var i=n?-1:1,a=i*e,o=0,l=0;lu)){o=a<(c+u)/2?l:l+1;break}o=l+1}var f=t._B[o]||0;return isFinite(f)?R(e,t._m2,f):0},N=function(e){var r=t._rangebreaks.length;if(!r)return F(e,t._m,t._b);for(var n=0,i=0;it._rangebreaks[i].pmax&&(n=i+1);return F(e,t._m2,t._B[n])}}t.c2l=\"log\"===t.type?E:f,t.l2c=\"log\"===t.type?M:f,t.l2p=B,t.p2l=N,t.c2p=\"log\"===t.type?function(t,e){return B(E(t,e))}:B,t.p2c=\"log\"===t.type?function(t){return M(N(t))}:N,-1!==[\"linear\",\"-\"].indexOf(t.type)?(t.d2r=t.r2d=t.d2c=t.r2c=t.d2l=t.r2l=l,t.c2d=t.c2r=t.l2d=t.l2r=f,t.d2p=t.r2p=function(e){return t.l2p(l(e))},t.p2d=t.p2r=N,t.cleanPos=f):\"log\"===t.type?(t.d2r=t.d2l=function(t,e){return E(l(t),e)},t.r2d=t.r2c=function(t){return M(l(t))},t.d2c=t.r2l=l,t.c2d=t.l2r=f,t.c2r=E,t.l2d=M,t.d2p=function(e,r){return t.l2p(t.d2r(e,r))},t.p2d=function(t){return M(N(t))},t.r2p=function(e){return t.l2p(l(e))},t.p2r=N,t.cleanPos=f):\"date\"===t.type?(t.d2r=t.r2d=a.identity,t.d2c=t.r2c=t.d2l=t.r2l=L,t.c2d=t.c2r=t.l2d=t.l2r=C,t.d2p=t.r2p=function(e,r,n){return t.l2p(L(e,0,n))},t.p2d=t.p2r=function(t,e,r){return C(N(t),e,r)},t.cleanPos=function(e){return a.cleanDate(e,g,t.calendar)}):\"category\"===t.type?(t.d2c=t.d2l=I,t.r2d=t.c2d=t.l2d=P,t.d2r=t.d2l_noadd=z,t.r2c=function(e){var r=D(e);return void 0!==r?r:t.fraction2r(.5)},t.l2r=t.c2r=f,t.r2l=D,t.d2p=function(e){return t.l2p(t.r2c(e))},t.p2d=function(t){return P(N(t))},t.r2p=t.d2p,t.p2r=N,t.cleanPos=function(t){return\"string\"==typeof t&&\"\"!==t?t:f(t)}):\"multicategory\"===t.type&&(t.r2d=t.c2d=t.l2d=P,t.d2r=t.d2l_noadd=z,t.r2c=function(e){var r=z(e);return void 0!==r?r:t.fraction2r(.5)},t.r2c_just_indices=O,t.l2r=t.c2r=f,t.r2l=z,t.d2p=function(e){return t.l2p(t.r2c(e))},t.p2d=function(t){return P(N(t))},t.r2p=t.d2p,t.p2r=N,t.cleanPos=function(t){return Array.isArray(t)||\"string\"==typeof t&&\"\"!==t?t:f(t)},t.setupMultiCategory=function(n){var i,o,s=t._traceIndices,l=t._matchGroup;if(l&&0===t._categories.length)for(var c in l)if(c!==r){var u=e[w.id2name(c)];s=s.concat(u._traceIndices)}var f=[[0,{}],[0,{}]],d=[];for(i=0;id&&(o[n]=d),o[0]===o[1]){var c=Math.max(1,Math.abs(1e-6*o[0]));o[0]-=c,o[1]+=c}}else a.nestedProperty(t,e).set(i)},t.setScale=function(r){var n=e._size;if(t.overlaying){var i=w.getFromId({_fullLayout:e},t.overlaying);t.domain=i.domain}var a=r&&t._r?\"_r\":\"range\",o=t.calendar;t.cleanRange(a);var s,l,c=t.r2l(t[a][0],o),u=t.r2l(t[a][1],o),f=\"y\"===p;if((f?(t._offset=n.t+(1-t.domain[1])*n.h,t._length=n.h*(t.domain[1]-t.domain[0]),t._m=t._length/(c-u),t._b=-t._m*u):(t._offset=n.l+t.domain[0]*n.w,t._length=n.w*(t.domain[1]-t.domain[0]),t._m=t._length/(u-c),t._b=-t._m*c),t._rangebreaks=[],t._lBreaks=0,t._m2=0,t._B=[],t.rangebreaks)&&(t._rangebreaks=t.locateBreaks(Math.min(c,u),Math.max(c,u)),t._rangebreaks.length)){for(s=0;su&&(h=!h),h&&t._rangebreaks.reverse();var d=h?-1:1;for(t._m2=d*t._length/(Math.abs(u-c)-t._lBreaks),t._B.push(-t._m2*(f?u:c)),s=0;si&&(i+=7,oi&&(i+=24,o=n&&o=n&&e=s.min&&(ts.max&&(s.max=n),i=!1)}i&&c.push({min:t,max:n})}};for(n=0;nr.duration?(!function(){for(var r={},n=0;n rect\").call(o.setTranslate,0,0).call(o.setScale,1,1),t.plot.call(o.setTranslate,e._offset,r._offset).call(o.setScale,1,1);var n=t.plot.selectAll(\".scatterlayer .trace\");n.selectAll(\".point\").call(o.setPointGroupScale,1,1),n.selectAll(\".textpoint\").call(o.setTextPointsScale,1,1),n.call(o.hideOutsideRangePoints,t)}function m(e,r){var n=e.plotinfo,i=n.xaxis,l=n.yaxis,c=i._length,u=l._length,f=!!e.xr1,h=!!e.yr1,p=[];if(f){var d=a.simpleMap(e.xr0,i.r2l),g=a.simpleMap(e.xr1,i.r2l),m=d[1]-d[0],v=g[1]-g[0];p[0]=(d[0]*(1-r)+r*g[0]-d[0])/(d[1]-d[0])*c,p[2]=c*(1-r+r*v/m),i.range[0]=i.l2r(d[0]*(1-r)+r*g[0]),i.range[1]=i.l2r(d[1]*(1-r)+r*g[1])}else p[0]=0,p[2]=c;if(h){var y=a.simpleMap(e.yr0,l.r2l),x=a.simpleMap(e.yr1,l.r2l),b=y[1]-y[0],_=x[1]-x[0];p[1]=(y[1]*(1-r)+r*x[1]-y[1])/(y[0]-y[1])*u,p[3]=u*(1-r+r*_/b),l.range[0]=i.l2r(y[0]*(1-r)+r*x[0]),l.range[1]=l.l2r(y[1]*(1-r)+r*x[1])}else p[1]=0,p[3]=u;s.drawOne(t,i,{skipTitle:!0}),s.drawOne(t,l,{skipTitle:!0}),s.redrawComponents(t,[i._id,l._id]);var w=f?c/p[2]:1,T=h?u/p[3]:1,k=f?p[0]:0,A=h?p[1]:0,M=f?p[0]/p[2]*c:0,S=h?p[1]/p[3]*u:0,E=i._offset-M,L=l._offset-S;n.clipRect.call(o.setTranslate,k,A).call(o.setScale,1/w,1/T),n.plot.call(o.setTranslate,E,L).call(o.setScale,w,T),o.setPointGroupScale(n.zoomScalePts,1/w,1/T),o.setTextPointsScale(n.zoomScaleTxt,1/w,1/T)}s.redrawComponents(t)}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../registry\":638,\"./axes\":554,\"@plotly/d3\":58}],582:[function(t,e,r){\"use strict\";var n=t(\"../../registry\").traceIs,i=t(\"./axis_autotype\");function a(t){return{v:\"x\",h:\"y\"}[t.orientation||\"v\"]}function o(t,e){var r=a(t),i=n(t,\"box-violin\"),o=n(t._fullInput||{},\"candlestick\");return i&&!o&&e===r&&void 0===t[r]&&void 0===t[r+\"0\"]}e.exports=function(t,e,r,s){r(\"autotypenumbers\",s.autotypenumbersDflt),\"-\"===r(\"type\",(s.splomStash||{}).type)&&(!function(t,e){if(\"-\"!==t.type)return;var r,s=t._id,l=s.charAt(0);-1!==s.indexOf(\"scene\")&&(s=l);var c=function(t,e,r){for(var n=0;n0&&(i[\"_\"+r+\"axes\"]||{})[e])return i;if((i[r+\"axis\"]||r)===e){if(o(i,r))return i;if((i[r]||[]).length||i[r+\"0\"])return i}}}(e,s,l);if(!c)return;if(\"histogram\"===c.type&&l==={v:\"y\",h:\"x\"}[c.orientation||\"v\"])return void(t.type=\"linear\");var u=l+\"calendar\",f=c[u],h={noMultiCategory:!n(c,\"cartesian\")||n(c,\"noMultiCategory\")};\"box\"===c.type&&c._hasPreCompStats&&l==={h:\"x\",v:\"y\"}[c.orientation||\"v\"]&&(h.noMultiCategory=!0);if(h.autotypenumbers=t.autotypenumbers,o(c,l)){var p=a(c),d=[];for(r=0;r0?\".\":\"\")+a;i.isPlainObject(o)?l(o,e,s,n+1):e(s,a,o)}}))}r.manageCommandObserver=function(t,e,n,o){var s={},l=!0;e&&e._commandObserver&&(s=e._commandObserver),s.cache||(s.cache={}),s.lookupTable={};var c=r.hasSimpleAPICommandBindings(t,n,s.lookupTable);if(e&&e._commandObserver){if(c)return s;if(e._commandObserver.remove)return e._commandObserver.remove(),e._commandObserver=null,s}if(c){a(t,c,s.cache),s.check=function(){if(l){var e=a(t,c,s.cache);return e.changed&&o&&void 0!==s.lookupTable[e.value]&&(s.disable(),Promise.resolve(o({value:e.value,type:c.type,prop:c.prop,traces:c.traces,index:s.lookupTable[e.value]})).then(s.enable,s.enable)),e.changed}};for(var u=[\"plotly_relayout\",\"plotly_redraw\",\"plotly_restyle\",\"plotly_update\",\"plotly_animatingframe\",\"plotly_afterplot\"],f=0;f0&&i<0&&(i+=360);var s=(i-n)/4;return{type:\"Polygon\",coordinates:[[[n,a],[n,o],[n+s,o],[n+2*s,o],[n+3*s,o],[i,o],[i,a],[i-s,a],[i-2*s,a],[i-3*s,a],[n,a]]]}}e.exports=function(t){return new M(t)},S.plot=function(t,e,r){var n=this,i=e[this.id],a=[],o=!1;for(var s in w.layerNameToAdjective)if(\"frame\"!==s&&i[\"show\"+s]){o=!0;break}for(var l=0;l0&&a._module.calcGeoJSON(i,e)}if(!this.updateProjection(t,e)){this.viewInitial&&this.scope===r.scope||this.saveViewInitial(r),this.scope=r.scope,this.updateBaseLayers(e,r),this.updateDims(e,r),this.updateFx(e,r),d.generalUpdatePerTraceModule(this.graphDiv,this,t,r);var o=this.layers.frontplot.select(\".scatterlayer\");this.dataPoints.point=o.selectAll(\".point\"),this.dataPoints.text=o.selectAll(\"text\"),this.dataPaths.line=o.selectAll(\".js-line\");var s=this.layers.backplot.select(\".choroplethlayer\");this.dataPaths.choropleth=s.selectAll(\"path\"),this.render()}},S.updateProjection=function(t,e){var r=this.graphDiv,n=e[this.id],l=e._size,u=n.domain,f=n.projection,h=n.lonaxis,p=n.lataxis,d=h._ax,g=p._ax,v=this.projection=function(t){var e=t.projection,r=e.type,n=w.projNames[r];n=\"geo\"+c.titleCase(n);for(var l=(i[n]||s[n])(),u=t._isSatellite?180*Math.acos(1/e.distance)/Math.PI:t._isClipped?w.lonaxisSpan[r]/2:null,f=[\"center\",\"rotate\",\"parallels\",\"clipExtent\"],h=function(t){return t?l:[]},p=0;pu*Math.PI/180}return!1},l.getPath=function(){return a().projection(l)},l.getBounds=function(t){return l.getPath().bounds(t)},l.precision(w.precision),t._isSatellite&&l.tilt(e.tilt).distance(e.distance);u&&l.clipAngle(u-w.clipPad);return l}(n),y=[[l.l+l.w*u.x[0],l.t+l.h*(1-u.y[1])],[l.l+l.w*u.x[1],l.t+l.h*(1-u.y[0])]],x=n.center||{},b=f.rotation||{},_=h.range||[],T=p.range||[];if(n.fitbounds){d._length=y[1][0]-y[0][0],g._length=y[1][1]-y[0][1],d.range=m(r,d),g.range=m(r,g);var k=(d.range[0]+d.range[1])/2,A=(g.range[0]+g.range[1])/2;if(n._isScoped)x={lon:k,lat:A};else if(n._isClipped){x={lon:k,lat:A},b={lon:k,lat:A,roll:b.roll};var M=f.type,S=w.lonaxisSpan[M]/2||180,L=w.lataxisSpan[M]/2||90;_=[k-S,k+S],T=[A-L,A+L]}else x={lon:k,lat:A},b={lon:k,lat:b.lat,roll:b.roll}}v.center([x.lon-b.lon,x.lat-b.lat]).rotate([-b.lon,-b.lat,b.roll]).parallels(f.parallels);var C=E(_,T);v.fitExtent(y,C);var P=this.bounds=v.getBounds(C),I=this.fitScale=v.scale(),O=v.translate();if(n.fitbounds){var z=v.getBounds(E(d.range,g.range)),D=Math.min((P[1][0]-P[0][0])/(z[1][0]-z[0][0]),(P[1][1]-P[0][1])/(z[1][1]-z[0][1]));isFinite(D)?v.scale(D*I):c.warn(\"Something went wrong during\"+this.id+\"fitbounds computations.\")}else v.scale(f.scale*I);var R=this.midPt=[(P[0][0]+P[1][0])/2,(P[0][1]+P[1][1])/2];if(v.translate([O[0]+(R[0]-O[0]),O[1]+(R[1]-O[1])]).clipExtent(P),n._isAlbersUsa){var F=v([x.lon,x.lat]),B=v.translate();v.translate([B[0]-(F[0]-B[0]),B[1]-(F[1]-B[1])])}},S.updateBaseLayers=function(t,e){var r=this,i=r.topojson,a=r.layers,o=r.basePaths;function s(t){return\"lonaxis\"===t||\"lataxis\"===t}function l(t){return Boolean(w.lineLayers[t])}function c(t){return Boolean(w.fillLayers[t])}var u=(this.hasChoropleth?w.layersForChoropleth:w.layers).filter((function(t){return l(t)||c(t)?e[\"show\"+t]:!s(t)||e[t].showgrid})),p=r.framework.selectAll(\".layer\").data(u,String);p.exit().each((function(t){delete a[t],delete o[t],n.select(this).remove()})),p.enter().append(\"g\").attr(\"class\",(function(t){return\"layer \"+t})).each((function(t){var e=a[t]=n.select(this);\"bg\"===t?r.bgRect=e.append(\"rect\").style(\"pointer-events\",\"all\"):s(t)?o[t]=e.append(\"path\").style(\"fill\",\"none\"):\"backplot\"===t?e.append(\"g\").classed(\"choroplethlayer\",!0):\"frontplot\"===t?e.append(\"g\").classed(\"scatterlayer\",!0):l(t)?o[t]=e.append(\"path\").style(\"fill\",\"none\").style(\"stroke-miterlimit\",2):c(t)&&(o[t]=e.append(\"path\").style(\"stroke\",\"none\"))})),p.order(),p.each((function(r){var n=o[r],a=w.layerNameToAdjective[r];\"frame\"===r?n.datum(w.sphereSVG):l(r)||c(r)?n.datum(A(i,i.objects[r])):s(r)&&n.datum(function(t,e,r){var n,i,a,o=e[t],s=w.scopeDefaults[e.scope];\"lonaxis\"===t?(n=s.lonaxisRange,i=s.lataxisRange,a=function(t,e){return[t,e]}):\"lataxis\"===t&&(n=s.lataxisRange,i=s.lonaxisRange,a=function(t,e){return[e,t]});var l={type:\"linear\",range:[n[0],n[1]-1e-6],tick0:o.tick0,dtick:o.dtick};g.setConvert(l,r);var c=g.calcTicks(l);e.isScoped||\"lonaxis\"!==t||c.pop();for(var u=c.length,f=new Array(u),h=0;h-1&&b(n.event,i,[r.xaxis],[r.yaxis],r.id,f),s.indexOf(\"event\")>-1&&p.click(i,n.event))}))}function h(t){return r.projection.invert([t[0]+r.xaxis._offset,t[1]+r.yaxis._offset])}},S.makeFramework=function(){var t=this,e=t.graphDiv,r=e._fullLayout,i=\"clip\"+r._uid+t.id;t.clipDef=r._clips.append(\"clipPath\").attr(\"id\",i),t.clipRect=t.clipDef.append(\"rect\"),t.framework=n.select(t.container).append(\"g\").attr(\"class\",\"geo \"+t.id).call(h.setClipUrl,i,e),t.project=function(e){var r=t.projection(e);return r?[r[0]-t.xaxis._offset,r[1]-t.yaxis._offset]:[null,null]},t.xaxis={_id:\"x\",c2p:function(e){return t.project(e)[0]}},t.yaxis={_id:\"y\",c2p:function(e){return t.project(e)[1]}},t.mockAxis={type:\"linear\",showexponent:\"all\",exponentformat:\"B\"},g.setConvert(t.mockAxis,r)},S.saveViewInitial=function(t){var e,r=t.center||{},n=t.projection,i=n.rotation||{};this.viewInitial={fitbounds:t.fitbounds,\"projection.scale\":n.scale},e=t._isScoped?{\"center.lon\":r.lon,\"center.lat\":r.lat}:t._isClipped?{\"projection.rotation.lon\":i.lon,\"projection.rotation.lat\":i.lat}:{\"center.lon\":r.lon,\"center.lat\":r.lat,\"projection.rotation.lon\":i.lon},c.extendFlat(this.viewInitial,e)},S.render=function(){var t,e=this.projection,r=e.getPath();function n(t){var r=e(t.lonlat);return r?u(r[0],r[1]):null}function i(t){return e.isLonLatOverEdges(t.lonlat)?\"none\":null}for(t in this.basePaths)this.basePaths[t].attr(\"d\",r);for(t in this.dataPaths)this.dataPaths[t].attr(\"d\",(function(t){return r(t.geojson)}));for(t in this.dataPoints)this.dataPoints[t].attr(\"display\",i).attr(\"transform\",n)}},{\"../../components/color\":366,\"../../components/dragelement\":385,\"../../components/drawing\":388,\"../../components/fx\":406,\"../../lib\":503,\"../../lib/geo_location_utils\":496,\"../../lib/topojson_utils\":532,\"../../registry\":638,\"../cartesian/autorange\":553,\"../cartesian/axes\":554,\"../cartesian/select\":575,\"../plots\":619,\"./constants\":587,\"./zoom\":592,\"@plotly/d3\":58,\"d3-geo\":114,\"d3-geo-projection\":113,\"topojson-client\":315}],589:[function(t,e,r){\"use strict\";var n=t(\"../../plots/get_data\").getSubplotCalcData,i=t(\"../../lib\").counterRegex,a=t(\"./geo\"),o=\"geo\",s=i(o),l={};l.geo={valType:\"subplotid\",dflt:o,editType:\"calc\"},e.exports={attr:o,name:o,idRoot:o,idRegex:s,attrRegex:s,attributes:l,layoutAttributes:t(\"./layout_attributes\"),supplyLayoutDefaults:t(\"./layout_defaults\"),plot:function(t){for(var e=t._fullLayout,r=t.calcdata,i=e._subplots.geo,s=0;s0&&P<0&&(P+=360);var I,O,z,D=(C+P)/2;if(!p){var R=d?f.projRotate:[D,0,0];I=r(\"projection.rotation.lon\",R[0]),r(\"projection.rotation.lat\",R[1]),r(\"projection.rotation.roll\",R[2]),r(\"showcoastlines\",!d&&x)&&(r(\"coastlinecolor\"),r(\"coastlinewidth\")),r(\"showocean\",!!x&&void 0)&&r(\"oceancolor\")}(p?(O=-96.6,z=38.7):(O=d?D:I,z=(L[0]+L[1])/2),r(\"center.lon\",O),r(\"center.lat\",z),g&&(r(\"projection.tilt\"),r(\"projection.distance\")),m)&&r(\"projection.parallels\",f.projParallels||[0,60]);r(\"projection.scale\"),r(\"showland\",!!x&&void 0)&&r(\"landcolor\"),r(\"showlakes\",!!x&&void 0)&&r(\"lakecolor\"),r(\"showrivers\",!!x&&void 0)&&(r(\"rivercolor\"),r(\"riverwidth\")),r(\"showcountries\",d&&\"usa\"!==u&&x)&&(r(\"countrycolor\"),r(\"countrywidth\")),(\"usa\"===u||\"north america\"===u&&50===c)&&(r(\"showsubunits\",x),r(\"subunitcolor\"),r(\"subunitwidth\")),d||r(\"showframe\",x)&&(r(\"framecolor\"),r(\"framewidth\")),r(\"bgcolor\"),r(\"fitbounds\")&&(delete e.projection.scale,d?(delete e.center.lon,delete e.center.lat):v?(delete e.center.lon,delete e.center.lat,delete e.projection.rotation.lon,delete e.projection.rotation.lat,delete e.lonaxis.range,delete e.lataxis.range):(delete e.center.lon,delete e.center.lat,delete e.projection.rotation.lon))}e.exports=function(t,e,r){i(t,e,r,{type:\"geo\",attributes:s,handleDefaults:c,fullData:r,partition:\"y\"})}},{\"../../lib\":503,\"../get_data\":593,\"../subplot_defaults\":632,\"./constants\":587,\"./layout_attributes\":590}],592:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../registry\"),o=Math.PI/180,s=180/Math.PI,l={cursor:\"pointer\"},c={cursor:\"auto\"};function u(t,e){return n.behavior.zoom().translate(e.translate()).scale(e.scale())}function f(t,e,r){var n=t.id,o=t.graphDiv,s=o.layout,l=s[n],c=o._fullLayout,u=c[n],f={},h={};function p(t,e){f[n+\".\"+t]=i.nestedProperty(l,t).get(),a.call(\"_storeDirectGUIEdit\",s,c._preGUI,f);var r=i.nestedProperty(u,t);r.get()!==e&&(r.set(e),i.nestedProperty(l,t).set(e),h[n+\".\"+t]=e)}r(p),p(\"projection.scale\",e.scale()/t.fitScale),p(\"fitbounds\",!1),o.emit(\"plotly_relayout\",h)}function h(t,e){var r=u(0,e);function i(r){var n=e.invert(t.midPt);r(\"center.lon\",n[0]),r(\"center.lat\",n[1])}return r.on(\"zoomstart\",(function(){n.select(this).style(l)})).on(\"zoom\",(function(){e.scale(n.event.scale).translate(n.event.translate),t.render();var r=e.invert(t.midPt);t.graphDiv.emit(\"plotly_relayouting\",{\"geo.projection.scale\":e.scale()/t.fitScale,\"geo.center.lon\":r[0],\"geo.center.lat\":r[1]})})).on(\"zoomend\",(function(){n.select(this).style(c),f(t,e,i)})),r}function p(t,e){var r,i,a,o,s,h,p,d,g,m=u(0,e);function v(t){return e.invert(t)}function y(r){var n=e.rotate(),i=e.invert(t.midPt);r(\"projection.rotation.lon\",-n[0]),r(\"center.lon\",i[0]),r(\"center.lat\",i[1])}return m.on(\"zoomstart\",(function(){n.select(this).style(l),r=n.mouse(this),i=e.rotate(),a=e.translate(),o=i,s=v(r)})).on(\"zoom\",(function(){if(h=n.mouse(this),function(t){var r=v(t);if(!r)return!0;var n=e(r);return Math.abs(n[0]-t[0])>2||Math.abs(n[1]-t[1])>2}(r))return m.scale(e.scale()),void m.translate(e.translate());e.scale(n.event.scale),e.translate([a[0],n.event.translate[1]]),s?v(h)&&(d=v(h),p=[o[0]+(d[0]-s[0]),i[1],i[2]],e.rotate(p),o=p):s=v(r=h),g=!0,t.render();var l=e.rotate(),c=e.invert(t.midPt);t.graphDiv.emit(\"plotly_relayouting\",{\"geo.projection.scale\":e.scale()/t.fitScale,\"geo.center.lon\":c[0],\"geo.center.lat\":c[1],\"geo.projection.rotation.lon\":-l[0]})})).on(\"zoomend\",(function(){n.select(this).style(c),g&&f(t,e,y)})),m}function d(t,e){var r,i={r:e.rotate(),k:e.scale()},a=u(0,e),o=function(t){var e=0,r=arguments.length,i=[];for(;++ed?(a=(f>0?90:-90)-p,i=0):(a=Math.asin(f/d)*s-p,i=Math.sqrt(d*d-f*f));var g=180-a-2*p,m=(Math.atan2(h,u)-Math.atan2(c,i))*s,v=(Math.atan2(h,u)-Math.atan2(c,-i))*s;return b(r[0],r[1],a,m)<=b(r[0],r[1],g,v)?[a,m,r[2]]:[g,v,r[2]]}function b(t,e,r,n){var i=_(r-t),a=_(n-e);return Math.sqrt(i*i+a*a)}function _(t){return(t%360+540)%360-180}function w(t,e,r){var n=r*o,i=t.slice(),a=0===e?1:0,s=2===e?1:2,l=Math.cos(n),c=Math.sin(n);return i[a]=t[a]*l-t[s]*c,i[s]=t[s]*l+t[a]*c,i}function T(t){return[Math.atan2(2*(t[0]*t[1]+t[2]*t[3]),1-2*(t[1]*t[1]+t[2]*t[2]))*s,Math.asin(Math.max(-1,Math.min(1,2*(t[0]*t[2]-t[3]*t[1]))))*s,Math.atan2(2*(t[0]*t[3]+t[1]*t[2]),1-2*(t[2]*t[2]+t[3]*t[3]))*s]}function k(t,e){for(var r=0,n=0,i=t.length;nMath.abs(s)?(c.boxEnd[1]=c.boxStart[1]+Math.abs(a)*_*(s>=0?1:-1),c.boxEnd[1]l[3]&&(c.boxEnd[1]=l[3],c.boxEnd[0]=c.boxStart[0]+(l[3]-c.boxStart[1])/Math.abs(_))):(c.boxEnd[0]=c.boxStart[0]+Math.abs(s)/_*(a>=0?1:-1),c.boxEnd[0]l[2]&&(c.boxEnd[0]=l[2],c.boxEnd[1]=c.boxStart[1]+(l[2]-c.boxStart[0])*Math.abs(_)))}}else c.boxEnabled?(a=c.boxStart[0]!==c.boxEnd[0],s=c.boxStart[1]!==c.boxEnd[1],a||s?(a&&(m(0,c.boxStart[0],c.boxEnd[0]),t.xaxis.autorange=!1),s&&(m(1,c.boxStart[1],c.boxEnd[1]),t.yaxis.autorange=!1),t.relayoutCallback()):t.glplot.setDirty(),c.boxEnabled=!1,c.boxInited=!1):c.boxInited&&(c.boxInited=!1);break;case\"pan\":c.boxEnabled=!1,c.boxInited=!1,e?(c.panning||(c.dragStart[0]=n,c.dragStart[1]=i),Math.abs(c.dragStart[0]-n).999&&(g=\"turntable\"):g=\"turntable\")}else g=\"turntable\";r(\"dragmode\",g),r(\"hovermode\",n.getDfltFromLayout(\"hovermode\"))}e.exports=function(t,e,r){var i=e._basePlotModules.length>1;o(t,e,r,{type:\"gl3d\",attributes:l,handleDefaults:u,fullLayout:e,font:e.font,fullData:r,getDfltFromLayout:function(e){if(!i)return n.validate(t[e],l[e])?t[e]:void 0},autotypenumbersDflt:e.autotypenumbers,paper_bgcolor:e.paper_bgcolor,calendar:e.calendar})}},{\"../../../components/color\":366,\"../../../lib\":503,\"../../../registry\":638,\"../../get_data\":593,\"../../subplot_defaults\":632,\"./axis_defaults\":601,\"./layout_attributes\":604}],604:[function(t,e,r){\"use strict\";var n=t(\"./axis_attributes\"),i=t(\"../../domain\").attributes,a=t(\"../../../lib/extend\").extendFlat,o=t(\"../../../lib\").counterRegex;function s(t,e,r){return{x:{valType:\"number\",dflt:t,editType:\"camera\"},y:{valType:\"number\",dflt:e,editType:\"camera\"},z:{valType:\"number\",dflt:r,editType:\"camera\"},editType:\"camera\"}}e.exports={_arrayAttrRegexps:[o(\"scene\",\".annotations\",!0)],bgcolor:{valType:\"color\",dflt:\"rgba(0,0,0,0)\",editType:\"plot\"},camera:{up:a(s(0,0,1),{}),center:a(s(0,0,0),{}),eye:a(s(1.25,1.25,1.25),{}),projection:{type:{valType:\"enumerated\",values:[\"perspective\",\"orthographic\"],dflt:\"perspective\",editType:\"calc\"},editType:\"calc\"},editType:\"camera\"},domain:i({name:\"scene\",editType:\"plot\"}),aspectmode:{valType:\"enumerated\",values:[\"auto\",\"cube\",\"data\",\"manual\"],dflt:\"auto\",editType:\"plot\",impliedEdits:{\"aspectratio.x\":void 0,\"aspectratio.y\":void 0,\"aspectratio.z\":void 0}},aspectratio:{x:{valType:\"number\",min:0,editType:\"plot\",impliedEdits:{\"^aspectmode\":\"manual\"}},y:{valType:\"number\",min:0,editType:\"plot\",impliedEdits:{\"^aspectmode\":\"manual\"}},z:{valType:\"number\",min:0,editType:\"plot\",impliedEdits:{\"^aspectmode\":\"manual\"}},editType:\"plot\",impliedEdits:{aspectmode:\"manual\"}},xaxis:n,yaxis:n,zaxis:n,dragmode:{valType:\"enumerated\",values:[\"orbit\",\"turntable\",\"zoom\",\"pan\",!1],editType:\"plot\"},hovermode:{valType:\"enumerated\",values:[\"closest\",!1],dflt:\"closest\",editType:\"modebar\"},uirevision:{valType:\"any\",editType:\"none\"},editType:\"plot\",_deprecated:{cameraposition:{valType:\"info_array\",editType:\"camera\"}}}},{\"../../../lib\":503,\"../../../lib/extend\":493,\"../../domain\":584,\"./axis_attributes\":600}],605:[function(t,e,r){\"use strict\";var n=t(\"../../../lib/str2rgbarray\"),i=[\"xaxis\",\"yaxis\",\"zaxis\"];function a(){this.enabled=[!0,!0,!0],this.colors=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.drawSides=[!0,!0,!0],this.lineWidth=[1,1,1]}a.prototype.merge=function(t){for(var e=0;e<3;++e){var r=t[i[e]];r.visible?(this.enabled[e]=r.showspikes,this.colors[e]=n(r.spikecolor),this.drawSides[e]=r.spikesides,this.lineWidth[e]=r.spikethickness):(this.enabled[e]=!1,this.drawSides[e]=!1)}},e.exports=function(t){var e=new a;return e.merge(t),e}},{\"../../../lib/str2rgbarray\":528}],606:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e=t.axesOptions,r=t.glplot.axesPixels,s=t.fullSceneLayout,l=[[],[],[]],c=0;c<3;++c){var u=s[a[c]];if(u._length=(r[c].hi-r[c].lo)*r[c].pixelsPerDataUnit/t.dataScale[c],Math.abs(u._length)===1/0||isNaN(u._length))l[c]=[];else{u._input_range=u.range.slice(),u.range[0]=r[c].lo/t.dataScale[c],u.range[1]=r[c].hi/t.dataScale[c],u._m=1/(t.dataScale[c]*r[c].pixelsPerDataUnit),u.range[0]===u.range[1]&&(u.range[0]-=1,u.range[1]+=1);var f=u.tickmode;if(\"auto\"===u.tickmode){u.tickmode=\"linear\";var h=u.nticks||i.constrain(u._length/40,4,9);n.autoTicks(u,Math.abs(u.range[1]-u.range[0])/h)}for(var p=n.calcTicks(u,{msUTC:!0}),d=0;d/g,\" \"));l[c]=p,u.tickmode=f}}e.ticks=l;for(c=0;c<3;++c){o[c]=.5*(t.glplot.bounds[0][c]+t.glplot.bounds[1][c]);for(d=0;d<2;++d)e.bounds[d][c]=t.glplot.bounds[d][c]}t.contourLevels=function(t){for(var e=new Array(3),r=0;r<3;++r){for(var n=t[r],i=new Array(n.length),a=0;ar.deltaY?1.1:1/1.1,a=t.glplot.getAspectratio();t.glplot.setAspectratio({x:n*a.x,y:n*a.y,z:n*a.z})}i(t)}}),!!c&&{passive:!1}),t.glplot.canvas.addEventListener(\"mousemove\",(function(){if(!1!==t.fullSceneLayout.dragmode&&0!==t.camera.mouseListener.buttons){var e=n();t.graphDiv.emit(\"plotly_relayouting\",e)}})),t.staticMode||t.glplot.canvas.addEventListener(\"webglcontextlost\",(function(r){e&&e.emit&&e.emit(\"plotly_webglcontextlost\",{event:r,layer:t.id})}),!1)),t.glplot.oncontextloss=function(){t.recoverContext()},t.glplot.onrender=function(){t.render()},!0},w.render=function(){var t,e=this,r=e.graphDiv,n=e.svgContainer,i=e.container.getBoundingClientRect();r._fullLayout._calcInverseTransform(r);var a=r._fullLayout._invScaleX,o=r._fullLayout._invScaleY,s=i.width*a,l=i.height*o;n.setAttributeNS(null,\"viewBox\",\"0 0 \"+s+\" \"+l),n.setAttributeNS(null,\"width\",s),n.setAttributeNS(null,\"height\",l),b(e),e.glplot.axes.update(e.axesOptions);for(var c=Object.keys(e.traces),u=null,h=e.glplot.selection,g=0;g\")):\"isosurface\"===t.type||\"volume\"===t.type?(T.valueLabel=p.hoverLabelText(e._mockAxis,e._mockAxis.d2l(h.traceCoordinate[3]),t.valuehoverformat),S.push(\"value: \"+T.valueLabel),h.textLabel&&S.push(h.textLabel),x=S.join(\"
\")):x=h.textLabel;var E={x:h.traceCoordinate[0],y:h.traceCoordinate[1],z:h.traceCoordinate[2],data:_._input,fullData:_,curveNumber:_.index,pointNumber:w};d.appendArrayPointValue(E,_,w),t._module.eventData&&(E=_._module.eventData(E,h,_,{},w));var L={points:[E]};if(e.fullSceneLayout.hovermode){var C=[];d.loneHover({trace:_,x:(.5+.5*y[0]/y[3])*s,y:(.5-.5*y[1]/y[3])*l,xLabel:T.xLabel,yLabel:T.yLabel,zLabel:T.zLabel,text:x,name:u.name,color:d.castHoverOption(_,w,\"bgcolor\")||u.color,borderColor:d.castHoverOption(_,w,\"bordercolor\"),fontFamily:d.castHoverOption(_,w,\"font.family\"),fontSize:d.castHoverOption(_,w,\"font.size\"),fontColor:d.castHoverOption(_,w,\"font.color\"),nameLength:d.castHoverOption(_,w,\"namelength\"),textAlign:d.castHoverOption(_,w,\"align\"),hovertemplate:f.castOption(_,w,\"hovertemplate\"),hovertemplateLabels:f.extendFlat({},E,T),eventData:[E]},{container:n,gd:r,inOut_bbox:C}),E.bbox=C[0]}h.buttons&&h.distance<5?r.emit(\"plotly_click\",L):r.emit(\"plotly_hover\",L),this.oldEventData=L}else d.loneUnhover(n),this.oldEventData&&r.emit(\"plotly_unhover\",this.oldEventData),this.oldEventData=void 0;e.drawAnnotations(e)},w.recoverContext=function(){var t=this;t.glplot.dispose();var e=function(){t.glplot.gl.isContextLost()?requestAnimationFrame(e):t.initializeGLPlot()?t.plot.apply(t,t.plotArgs):f.error(\"Catastrophic and unrecoverable WebGL error. Context lost.\")};requestAnimationFrame(e)};var k=[\"xaxis\",\"yaxis\",\"zaxis\"];function A(t,e,r){for(var n=t.fullSceneLayout,i=0;i<3;i++){var a=k[i],o=a.charAt(0),s=n[a],l=e[o],c=e[o+\"calendar\"],u=e[\"_\"+o+\"length\"];if(f.isArrayOrTypedArray(l))for(var h,p=0;p<(u||l.length);p++)if(f.isArrayOrTypedArray(l[p]))for(var d=0;dm[1][a])m[0][a]=-1,m[1][a]=1;else{var L=m[1][a]-m[0][a];m[0][a]-=L/32,m[1][a]+=L/32}if(\"reversed\"===s.autorange){var C=m[0][a];m[0][a]=m[1][a],m[1][a]=C}}else{var P=s.range;m[0][a]=s.r2l(P[0]),m[1][a]=s.r2l(P[1])}m[0][a]===m[1][a]&&(m[0][a]-=1,m[1][a]+=1),v[a]=m[1][a]-m[0][a],this.glplot.setBounds(a,{min:m[0][a]*h[a],max:m[1][a]*h[a]})}var I=c.aspectmode;if(\"cube\"===I)d=[1,1,1];else if(\"manual\"===I){var O=c.aspectratio;d=[O.x,O.y,O.z]}else{if(\"auto\"!==I&&\"data\"!==I)throw new Error(\"scene.js aspectRatio was not one of the enumerated types\");var z=[1,1,1];for(a=0;a<3;++a){var D=y[l=(s=c[k[a]]).type];z[a]=Math.pow(D.acc,1/D.count)/h[a]}d=\"data\"===I||Math.max.apply(null,z)/Math.min.apply(null,z)<=4?z:[1,1,1]}c.aspectratio.x=u.aspectratio.x=d[0],c.aspectratio.y=u.aspectratio.y=d[1],c.aspectratio.z=u.aspectratio.z=d[2],this.glplot.setAspectratio(c.aspectratio),this.viewInitial.aspectratio||(this.viewInitial.aspectratio={x:c.aspectratio.x,y:c.aspectratio.y,z:c.aspectratio.z}),this.viewInitial.aspectmode||(this.viewInitial.aspectmode=c.aspectmode);var R=c.domain||null,F=e._size||null;if(R&&F){var B=this.container.style;B.position=\"absolute\",B.left=F.l+R.x[0]*F.w+\"px\",B.top=F.t+(1-R.y[1])*F.h+\"px\",B.width=F.w*(R.x[1]-R.x[0])+\"px\",B.height=F.h*(R.y[1]-R.y[0])+\"px\"}this.glplot.redraw()}},w.destroy=function(){this.glplot&&(this.camera.mouseListener.enabled=!1,this.container.removeEventListener(\"wheel\",this.camera.wheelListener),this.camera=null,this.glplot.dispose(),this.container.parentNode.removeChild(this.container),this.glplot=null)},w.getCamera=function(){var t;return this.camera.view.recalcMatrix(this.camera.view.lastT()),{up:{x:(t=this.camera).up[0],y:t.up[1],z:t.up[2]},center:{x:t.center[0],y:t.center[1],z:t.center[2]},eye:{x:t.eye[0],y:t.eye[1],z:t.eye[2]},projection:{type:!0===t._ortho?\"orthographic\":\"perspective\"}}},w.setViewport=function(t){var e,r=t.camera;this.camera.lookAt.apply(this,[[(e=r).eye.x,e.eye.y,e.eye.z],[e.center.x,e.center.y,e.center.z],[e.up.x,e.up.y,e.up.z]]),this.glplot.setAspectratio(t.aspectratio),\"orthographic\"===r.projection.type!==this.camera._ortho&&(this.glplot.redraw(),this.glplot.clearRGBA(),this.glplot.dispose(),this.initializeGLPlot())},w.isCameraChanged=function(t){var e=this.getCamera(),r=f.nestedProperty(t,this.id+\".camera\").get();function n(t,e,r,n){var i=[\"up\",\"center\",\"eye\"],a=[\"x\",\"y\",\"z\"];return e[i[r]]&&t[i[r]][a[n]]===e[i[r]][a[n]]}var i=!1;if(void 0===r)i=!0;else{for(var a=0;a<3;a++)for(var o=0;o<3;o++)if(!n(e,r,a,o)){i=!0;break}(!r.projection||e.projection&&e.projection.type!==r.projection.type)&&(i=!0)}return i},w.isAspectChanged=function(t){var e=this.glplot.getAspectratio(),r=f.nestedProperty(t,this.id+\".aspectratio\").get();return void 0===r||r.x!==e.x||r.y!==e.y||r.z!==e.z},w.saveLayout=function(t){var e,r,n,i,a,o,s=this.fullLayout,l=this.isCameraChanged(t),c=this.isAspectChanged(t),h=l||c;if(h){var p={};if(l&&(e=this.getCamera(),n=(r=f.nestedProperty(t,this.id+\".camera\")).get(),p[this.id+\".camera\"]=n),c&&(i=this.glplot.getAspectratio(),o=(a=f.nestedProperty(t,this.id+\".aspectratio\")).get(),p[this.id+\".aspectratio\"]=o),u.call(\"_storeDirectGUIEdit\",t,s._preGUI,p),l)r.set(e),f.nestedProperty(s,this.id+\".camera\").set(e);if(c)a.set(i),f.nestedProperty(s,this.id+\".aspectratio\").set(i),this.glplot.redraw()}return h},w.updateFx=function(t,e){var r=this.camera;if(r)if(\"orbit\"===t)r.mode=\"orbit\",r.keyBindingMode=\"rotate\";else if(\"turntable\"===t){r.up=[0,0,1],r.mode=\"turntable\",r.keyBindingMode=\"rotate\";var n=this.graphDiv,i=n._fullLayout,a=this.fullSceneLayout.camera,o=a.up.x,s=a.up.y,l=a.up.z;if(l/Math.sqrt(o*o+s*s+l*l)<.999){var c=this.id+\".camera.up\",h={x:0,y:0,z:1},p={};p[c]=h;var d=n.layout;u.call(\"_storeDirectGUIEdit\",d,i._preGUI,p),a.up=h,f.nestedProperty(d,c).set(h)}}else r.keyBindingMode=t;this.fullSceneLayout.hovermode=e},w.toImage=function(t){t||(t=\"png\"),this.staticMode&&this.container.appendChild(n),this.glplot.redraw();var e=this.glplot.gl,r=e.drawingBufferWidth,i=e.drawingBufferHeight;e.bindFramebuffer(e.FRAMEBUFFER,null);var a=new Uint8Array(r*i*4);e.readPixels(0,0,r,i,e.RGBA,e.UNSIGNED_BYTE,a),function(t,e,r){for(var n=0,i=r-1;n0)for(var s=255/o,l=0;l<3;++l)t[a+l]=Math.min(s*t[a+l],255)}}(a,r,i);var o=document.createElement(\"canvas\");o.width=r,o.height=i;var s,l=o.getContext(\"2d\"),c=l.createImageData(r,i);switch(c.data.set(a),l.putImageData(c,0,0),t){case\"jpeg\":s=o.toDataURL(\"image/jpeg\");break;case\"webp\":s=o.toDataURL(\"image/webp\");break;default:s=o.toDataURL(\"image/png\")}return this.staticMode&&this.container.removeChild(n),s},w.setConvert=function(){for(var t=0;t<3;t++){var e=this.fullSceneLayout[k[t]];p.setConvert(e,this.fullLayout),e.setScale=f.noop}},w.make4thDimension=function(){var t=this.graphDiv._fullLayout;this._mockAxis={type:\"linear\",showexponent:\"all\",exponentformat:\"B\"},p.setConvert(this._mockAxis,t)},e.exports=_},{\"../../../stackgl_modules\":1120,\"../../components/fx\":406,\"../../lib\":503,\"../../lib/show_no_webgl_msg\":525,\"../../lib/str2rgbarray\":528,\"../../plots/cartesian/axes\":554,\"../../registry\":638,\"./layout/convert\":602,\"./layout/spikes\":605,\"./layout/tick_marks\":606,\"./project\":607,\"has-passive-events\":229,\"webgl-context\":331}],609:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,n){n=n||t.length;for(var i=new Array(n),a=0;aOpenStreetMap
contributors',a=['\\xa9 Carto',i].join(\" \"),o=['Map tiles by Stamen Design','under CC BY 3.0',\"|\",'Data by OpenStreetMap contributors','under ODbL'].join(\" \"),s={\"open-street-map\":{id:\"osm\",version:8,sources:{\"plotly-osm-tiles\":{type:\"raster\",attribution:i,tiles:[\"https://a.tile.openstreetmap.org/{z}/{x}/{y}.png\",\"https://b.tile.openstreetmap.org/{z}/{x}/{y}.png\"],tileSize:256}},layers:[{id:\"plotly-osm-tiles\",type:\"raster\",source:\"plotly-osm-tiles\",minzoom:0,maxzoom:22}]},\"white-bg\":{id:\"white-bg\",version:8,sources:{},layers:[{id:\"white-bg\",type:\"background\",paint:{\"background-color\":\"#FFFFFF\"},minzoom:0,maxzoom:22}]},\"carto-positron\":{id:\"carto-positron\",version:8,sources:{\"plotly-carto-positron\":{type:\"raster\",attribution:a,tiles:[\"https://cartodb-basemaps-c.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png\"],tileSize:256}},layers:[{id:\"plotly-carto-positron\",type:\"raster\",source:\"plotly-carto-positron\",minzoom:0,maxzoom:22}]},\"carto-darkmatter\":{id:\"carto-darkmatter\",version:8,sources:{\"plotly-carto-darkmatter\":{type:\"raster\",attribution:a,tiles:[\"https://cartodb-basemaps-c.global.ssl.fastly.net/dark_all/{z}/{x}/{y}.png\"],tileSize:256}},layers:[{id:\"plotly-carto-darkmatter\",type:\"raster\",source:\"plotly-carto-darkmatter\",minzoom:0,maxzoom:22}]},\"stamen-terrain\":{id:\"stamen-terrain\",version:8,sources:{\"plotly-stamen-terrain\":{type:\"raster\",attribution:o,tiles:[\"https://stamen-tiles.a.ssl.fastly.net/terrain/{z}/{x}/{y}.png\"],tileSize:256}},layers:[{id:\"plotly-stamen-terrain\",type:\"raster\",source:\"plotly-stamen-terrain\",minzoom:0,maxzoom:22}]},\"stamen-toner\":{id:\"stamen-toner\",version:8,sources:{\"plotly-stamen-toner\":{type:\"raster\",attribution:o,tiles:[\"https://stamen-tiles.a.ssl.fastly.net/toner/{z}/{x}/{y}.png\"],tileSize:256}},layers:[{id:\"plotly-stamen-toner\",type:\"raster\",source:\"plotly-stamen-toner\",minzoom:0,maxzoom:22}]},\"stamen-watercolor\":{id:\"stamen-watercolor\",version:8,sources:{\"plotly-stamen-watercolor\":{type:\"raster\",attribution:['Map tiles by Stamen Design','under CC BY 3.0',\"|\",'Data by OpenStreetMap contributors','under CC BY SA'].join(\" \"),tiles:[\"https://stamen-tiles.a.ssl.fastly.net/watercolor/{z}/{x}/{y}.png\"],tileSize:256}},layers:[{id:\"plotly-stamen-watercolor\",type:\"raster\",source:\"plotly-stamen-watercolor\",minzoom:0,maxzoom:22}]}},l=n(s);e.exports={requiredVersion:\"1.10.1\",styleUrlPrefix:\"mapbox://styles/mapbox/\",styleUrlSuffix:\"v9\",styleValuesMapbox:[\"basic\",\"streets\",\"outdoors\",\"light\",\"dark\",\"satellite\",\"satellite-streets\"],styleValueDflt:\"basic\",stylesNonMapbox:s,styleValuesNonMapbox:l,traceLayerPrefix:\"plotly-trace-layer-\",layoutLayerPrefix:\"plotly-layout-layer-\",wrongVersionErrorMsg:[\"Your custom plotly.js bundle is not using the correct mapbox-gl version\",\"Please install mapbox-gl@1.10.1.\"].join(\"\\n\"),noAccessTokenErrorMsg:[\"Missing Mapbox access token.\",\"Mapbox trace type require a Mapbox access token to be registered.\",\"For example:\",\" Plotly.newPlot(gd, data, layout, { mapboxAccessToken: 'my-access-token' });\",\"More info here: https://www.mapbox.com/help/define-access-token/\"].join(\"\\n\"),missingStyleErrorMsg:[\"No valid mapbox style found, please set `mapbox.style` to one of:\",l.join(\", \"),\"or register a Mapbox access token to use a Mapbox-served style.\"].join(\"\\n\"),multipleTokensErrorMsg:[\"Set multiple mapbox access token across different mapbox subplot,\",\"using first token found as mapbox-gl does not allow multipleaccess tokens on the same page.\"].join(\"\\n\"),mapOnErrorMsg:\"Mapbox error.\",mapboxLogo:{path0:\"m 10.5,1.24 c -5.11,0 -9.25,4.15 -9.25,9.25 0,5.1 4.15,9.25 9.25,9.25 5.1,0 9.25,-4.15 9.25,-9.25 0,-5.11 -4.14,-9.25 -9.25,-9.25 z m 4.39,11.53 c -1.93,1.93 -4.78,2.31 -6.7,2.31 -0.7,0 -1.41,-0.05 -2.1,-0.16 0,0 -1.02,-5.64 2.14,-8.81 0.83,-0.83 1.95,-1.28 3.13,-1.28 1.27,0 2.49,0.51 3.39,1.42 1.84,1.84 1.89,4.75 0.14,6.52 z\",path1:\"M 10.5,-0.01 C 4.7,-0.01 0,4.7 0,10.49 c 0,5.79 4.7,10.5 10.5,10.5 5.8,0 10.5,-4.7 10.5,-10.5 C 20.99,4.7 16.3,-0.01 10.5,-0.01 Z m 0,19.75 c -5.11,0 -9.25,-4.15 -9.25,-9.25 0,-5.1 4.14,-9.26 9.25,-9.26 5.11,0 9.25,4.15 9.25,9.25 0,5.13 -4.14,9.26 -9.25,9.26 z\",path2:\"M 14.74,6.25 C 12.9,4.41 9.98,4.35 8.23,6.1 5.07,9.27 6.09,14.91 6.09,14.91 c 0,0 5.64,1.02 8.81,-2.14 C 16.64,11 16.59,8.09 14.74,6.25 Z m -2.27,4.09 -0.91,1.87 -0.9,-1.87 -1.86,-0.91 1.86,-0.9 0.9,-1.87 0.91,1.87 1.86,0.9 z\",polygon:\"11.56,12.21 10.66,10.34 8.8,9.43 10.66,8.53 11.56,6.66 12.47,8.53 14.33,9.43 12.47,10.34\"},styleRules:{map:\"overflow:hidden;position:relative;\",\"missing-css\":\"display:none;\",canary:\"background-color:salmon;\",\"ctrl-bottom-left\":\"position: absolute; pointer-events: none; z-index: 2; bottom: 0; left: 0;\",\"ctrl-bottom-right\":\"position: absolute; pointer-events: none; z-index: 2; right: 0; bottom: 0;\",ctrl:\"clear: both; pointer-events: auto; transform: translate(0, 0);\",\"ctrl-attrib.mapboxgl-compact .mapboxgl-ctrl-attrib-inner\":\"display: none;\",\"ctrl-attrib.mapboxgl-compact:hover .mapboxgl-ctrl-attrib-inner\":\"display: block; margin-top:2px\",\"ctrl-attrib.mapboxgl-compact:hover\":\"padding: 2px 24px 2px 4px; visibility: visible; margin-top: 6px;\",\"ctrl-attrib.mapboxgl-compact::after\":'content: \"\"; cursor: pointer; position: absolute; background-image: url(\\'data:image/svg+xml;charset=utf-8,%3Csvg viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"%3E %3Cpath fill=\"%23333333\" fill-rule=\"evenodd\" d=\"M4,10a6,6 0 1,0 12,0a6,6 0 1,0 -12,0 M9,7a1,1 0 1,0 2,0a1,1 0 1,0 -2,0 M9,10a1,1 0 1,1 2,0l0,3a1,1 0 1,1 -2,0\"/%3E %3C/svg%3E\\'); background-color: rgba(255, 255, 255, 0.5); width: 24px; height: 24px; box-sizing: border-box; border-radius: 12px;',\"ctrl-attrib.mapboxgl-compact\":\"min-height: 20px; padding: 0; margin: 10px; position: relative; background-color: #fff; border-radius: 3px 12px 12px 3px;\",\"ctrl-bottom-right > .mapboxgl-ctrl-attrib.mapboxgl-compact::after\":\"bottom: 0; right: 0\",\"ctrl-bottom-left > .mapboxgl-ctrl-attrib.mapboxgl-compact::after\":\"bottom: 0; left: 0\",\"ctrl-bottom-left .mapboxgl-ctrl\":\"margin: 0 0 10px 10px; float: left;\",\"ctrl-bottom-right .mapboxgl-ctrl\":\"margin: 0 10px 10px 0; float: right;\",\"ctrl-attrib\":\"color: rgba(0, 0, 0, 0.75); text-decoration: none; font-size: 12px\",\"ctrl-attrib a\":\"color: rgba(0, 0, 0, 0.75); text-decoration: none; font-size: 12px\",\"ctrl-attrib a:hover\":\"color: inherit; text-decoration: underline;\",\"ctrl-attrib .mapbox-improve-map\":\"font-weight: bold; margin-left: 2px;\",\"attrib-empty\":\"display: none;\",\"ctrl-logo\":'display:block; width: 21px; height: 21px; background-image: url(\\'data:image/svg+xml;charset=utf-8,%3C?xml version=\"1.0\" encoding=\"utf-8\"?%3E %3Csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 21 21\" style=\"enable-background:new 0 0 21 21;\" xml:space=\"preserve\"%3E%3Cg transform=\"translate(0,0.01)\"%3E%3Cpath d=\"m 10.5,1.24 c -5.11,0 -9.25,4.15 -9.25,9.25 0,5.1 4.15,9.25 9.25,9.25 5.1,0 9.25,-4.15 9.25,-9.25 0,-5.11 -4.14,-9.25 -9.25,-9.25 z m 4.39,11.53 c -1.93,1.93 -4.78,2.31 -6.7,2.31 -0.7,0 -1.41,-0.05 -2.1,-0.16 0,0 -1.02,-5.64 2.14,-8.81 0.83,-0.83 1.95,-1.28 3.13,-1.28 1.27,0 2.49,0.51 3.39,1.42 1.84,1.84 1.89,4.75 0.14,6.52 z\" style=\"opacity:0.9;fill:%23ffffff;enable-background:new\" class=\"st0\"/%3E%3Cpath d=\"M 10.5,-0.01 C 4.7,-0.01 0,4.7 0,10.49 c 0,5.79 4.7,10.5 10.5,10.5 5.8,0 10.5,-4.7 10.5,-10.5 C 20.99,4.7 16.3,-0.01 10.5,-0.01 Z m 0,19.75 c -5.11,0 -9.25,-4.15 -9.25,-9.25 0,-5.1 4.14,-9.26 9.25,-9.26 5.11,0 9.25,4.15 9.25,9.25 0,5.13 -4.14,9.26 -9.25,9.26 z\" style=\"opacity:0.35;enable-background:new\" class=\"st1\"/%3E%3Cpath d=\"M 14.74,6.25 C 12.9,4.41 9.98,4.35 8.23,6.1 5.07,9.27 6.09,14.91 6.09,14.91 c 0,0 5.64,1.02 8.81,-2.14 C 16.64,11 16.59,8.09 14.74,6.25 Z m -2.27,4.09 -0.91,1.87 -0.9,-1.87 -1.86,-0.91 1.86,-0.9 0.9,-1.87 0.91,1.87 1.86,0.9 z\" style=\"opacity:0.35;enable-background:new\" class=\"st1\"/%3E%3Cpolygon points=\"11.56,12.21 10.66,10.34 8.8,9.43 10.66,8.53 11.56,6.66 12.47,8.53 14.33,9.43 12.47,10.34 \" style=\"opacity:0.9;fill:%23ffffff;enable-background:new\" class=\"st0\"/%3E%3C/g%3E%3C/svg%3E\\')'}}},{\"../../lib/sort_object_keys\":526}],612:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t,e){var r=t.split(\" \"),i=r[0],a=r[1],o=n.isArrayOrTypedArray(e)?n.mean(e):e,s=.5+o/100,l=1.5+o/100,c=[\"\",\"\"],u=[0,0];switch(i){case\"top\":c[0]=\"top\",u[1]=-l;break;case\"bottom\":c[0]=\"bottom\",u[1]=l}switch(a){case\"left\":c[1]=\"right\",u[0]=-s;break;case\"right\":c[1]=\"left\",u[0]=s}return{anchor:c[0]&&c[1]?c.join(\"-\"):c[0]?c[0]:c[1]?c[1]:\"center\",offset:u}}},{\"../../lib\":503}],613:[function(t,e,r){\"use strict\";var n=t(\"mapbox-gl/dist/mapbox-gl-unminified\"),i=t(\"../../lib\"),a=i.strTranslate,o=i.strScale,s=t(\"../../plots/get_data\").getSubplotCalcData,l=t(\"../../constants/xmlns_namespaces\"),c=t(\"@plotly/d3\"),u=t(\"../../components/drawing\"),f=t(\"../../lib/svg_text_utils\"),h=t(\"./mapbox\"),p=r.constants=t(\"./constants\");function d(t){return\"string\"==typeof t&&(-1!==p.styleValuesMapbox.indexOf(t)||0===t.indexOf(\"mapbox://\"))}r.name=\"mapbox\",r.attr=\"subplot\",r.idRoot=\"mapbox\",r.idRegex=r.attrRegex=i.counterRegex(\"mapbox\"),r.attributes={subplot:{valType:\"subplotid\",dflt:\"mapbox\",editType:\"calc\"}},r.layoutAttributes=t(\"./layout_attributes\"),r.supplyLayoutDefaults=t(\"./layout_defaults\"),r.plot=function(t){var e=t._fullLayout,r=t.calcdata,a=e._subplots.mapbox;if(n.version!==p.requiredVersion)throw new Error(p.wrongVersionErrorMsg);var o=function(t,e){var r=t._fullLayout;if(\"\"===t._context.mapboxAccessToken)return\"\";for(var n=[],a=[],o=!1,s=!1,l=0;l1&&i.warn(p.multipleTokensErrorMsg),n[0]):(a.length&&i.log([\"Listed mapbox access token(s)\",a.join(\",\"),\"but did not use a Mapbox map style, ignoring token(s).\"].join(\" \")),\"\")}(t,a);n.accessToken=o;for(var l=0;l_/2){var w=v.split(\"|\").join(\"
\");x.text(w).attr(\"data-unformatted\",w).call(f.convertToTspans,t),b=u.bBox(x.node())}x.attr(\"transform\",a(-3,8-b.height)),y.insert(\"rect\",\".static-attribution\").attr({x:-b.width-6,y:-b.height-3,width:b.width+6,height:b.height+3,fill:\"rgba(255, 255, 255, 0.75)\"});var T=1;b.width+6>_&&(T=_/(b.width+6));var k=[n.l+n.w*h.x[1],n.t+n.h*(1-h.y[0])];y.attr(\"transform\",a(k[0],k[1])+o(T))}},r.updateFx=function(t){for(var e=t._fullLayout,r=e._subplots.mapbox,n=0;n0){for(var r=0;r0}function u(t){var e={},r={};switch(t.type){case\"circle\":n.extendFlat(r,{\"circle-radius\":t.circle.radius,\"circle-color\":t.color,\"circle-opacity\":t.opacity});break;case\"line\":n.extendFlat(r,{\"line-width\":t.line.width,\"line-color\":t.color,\"line-opacity\":t.opacity,\"line-dasharray\":t.line.dash});break;case\"fill\":n.extendFlat(r,{\"fill-color\":t.color,\"fill-outline-color\":t.fill.outlinecolor,\"fill-opacity\":t.opacity});break;case\"symbol\":var i=t.symbol,o=a(i.textposition,i.iconsize);n.extendFlat(e,{\"icon-image\":i.icon+\"-15\",\"icon-size\":i.iconsize/10,\"text-field\":i.text,\"text-size\":i.textfont.size,\"text-anchor\":o.anchor,\"text-offset\":o.offset,\"symbol-placement\":i.placement}),n.extendFlat(r,{\"icon-color\":t.color,\"text-color\":i.textfont.color,\"text-opacity\":t.opacity});break;case\"raster\":n.extendFlat(r,{\"raster-fade-duration\":0,\"raster-opacity\":t.opacity})}return{layout:e,paint:r}}l.update=function(t){this.visible?this.needsNewImage(t)?this.updateImage(t):this.needsNewSource(t)?(this.removeLayer(),this.updateSource(t),this.updateLayer(t)):this.needsNewLayer(t)?this.updateLayer(t):this.updateStyle(t):(this.updateSource(t),this.updateLayer(t)),this.visible=c(t)},l.needsNewImage=function(t){return this.subplot.map.getSource(this.idSource)&&\"image\"===this.sourceType&&\"image\"===t.sourcetype&&(this.source!==t.source||JSON.stringify(this.coordinates)!==JSON.stringify(t.coordinates))},l.needsNewSource=function(t){return this.sourceType!==t.sourcetype||JSON.stringify(this.source)!==JSON.stringify(t.source)||this.layerType!==t.type},l.needsNewLayer=function(t){return this.layerType!==t.type||this.below!==this.subplot.belowLookup[\"layout-\"+this.index]},l.lookupBelow=function(){return this.subplot.belowLookup[\"layout-\"+this.index]},l.updateImage=function(t){this.subplot.map.getSource(this.idSource).updateImage({url:t.source,coordinates:t.coordinates});var e=this.findFollowingMapboxLayerId(this.lookupBelow());null!==e&&this.subplot.map.moveLayer(this.idLayer,e)},l.updateSource=function(t){var e=this.subplot.map;if(e.getSource(this.idSource)&&e.removeSource(this.idSource),this.sourceType=t.sourcetype,this.source=t.source,c(t)){var r=function(t){var e,r=t.sourcetype,n=t.source,a={type:r};\"geojson\"===r?e=\"data\":\"vector\"===r?e=\"string\"==typeof n?\"url\":\"tiles\":\"raster\"===r?(e=\"tiles\",a.tileSize=256):\"image\"===r&&(e=\"url\",a.coordinates=t.coordinates);a[e]=n,t.sourceattribution&&(a.attribution=i(t.sourceattribution));return a}(t);e.addSource(this.idSource,r)}},l.findFollowingMapboxLayerId=function(t){if(\"traces\"===t)for(var e=this.subplot.getMapLayers(),r=0;r1)for(r=0;r-1&&v(e.originalEvent,n,[r.xaxis],[r.yaxis],r.id,t),i.indexOf(\"event\")>-1&&c.click(n,e.originalEvent)}}},_.updateFx=function(t){var e=this,r=e.map,n=e.gd;if(!e.isStatic){var a,o=t.dragmode;a=f(o)?function(t,r){(t.range={})[e.id]=[c([r.xmin,r.ymin]),c([r.xmax,r.ymax])]}:function(t,r,n){(t.lassoPoints={})[e.id]=n.filtered.map(c)};var s=e.dragOptions;e.dragOptions=i.extendDeep(s||{},{dragmode:t.dragmode,element:e.div,gd:n,plotinfo:{id:e.id,domain:t[e.id].domain,xaxis:e.xaxis,yaxis:e.yaxis,fillRangeItems:a},xaxes:[e.xaxis],yaxes:[e.yaxis],subplot:e.id}),r.off(\"click\",e.onClickInPanHandler),p(o)||h(o)?(r.dragPan.disable(),r.on(\"zoomstart\",e.clearSelect),e.dragOptions.prepFn=function(t,r,n){d(t,r,n,e.dragOptions,o)},l.init(e.dragOptions)):(r.dragPan.enable(),r.off(\"zoomstart\",e.clearSelect),e.div.onmousedown=null,e.onClickInPanHandler=e.onClickInPanFn(e.dragOptions),r.on(\"click\",e.onClickInPanHandler))}function c(t){var r=e.map.unproject(t);return[r.lng,r.lat]}},_.updateFramework=function(t){var e=t[this.id].domain,r=t._size,n=this.div.style;n.width=r.w*(e.x[1]-e.x[0])+\"px\",n.height=r.h*(e.y[1]-e.y[0])+\"px\",n.left=r.l+e.x[0]*r.w+\"px\",n.top=r.t+(1-e.y[1])*r.h+\"px\",this.xaxis._offset=r.l+e.x[0]*r.w,this.xaxis._length=r.w*(e.x[1]-e.x[0]),this.yaxis._offset=r.t+(1-e.y[1])*r.h,this.yaxis._length=r.h*(e.y[1]-e.y[0])},_.updateLayers=function(t){var e,r=t[this.id].layers,n=this.layerList;if(r.length!==n.length){for(e=0;e=e.width-20?(a[\"text-anchor\"]=\"start\",a.x=5):(a[\"text-anchor\"]=\"end\",a.x=e._paper.attr(\"width\")-7),r.attr(a);var o=r.select(\".js-link-to-tool\"),s=r.select(\".js-link-spacer\"),l=r.select(\".js-sourcelinks\");t._context.showSources&&t._context.showSources(t),t._context.showLink&&function(t,e){e.text(\"\");var r=e.append(\"a\").attr({\"xlink:xlink:href\":\"#\",class:\"link--impt link--embedview\",\"font-weight\":\"bold\"}).text(t._context.linkText+\" \"+String.fromCharCode(187));if(t._context.sendData)r.on(\"click\",(function(){b.sendDataToCloud(t)}));else{var n=window.location.pathname.split(\"/\"),i=window.location.search;r.attr({\"xlink:xlink:show\":\"new\",\"xlink:xlink:href\":\"/\"+n[2].split(\".\")[0]+\"/\"+n[1]+i})}}(t,o),s.text(o.text()&&l.text()?\" - \":\"\")}},b.sendDataToCloud=function(t){var e=(window.PLOTLYENV||{}).BASE_URL||t._context.plotlyServerURL;if(e){t.emit(\"plotly_beforeexport\");var r=n.select(t).append(\"div\").attr(\"id\",\"hiddenform\").style(\"display\",\"none\"),i=r.append(\"form\").attr({action:e+\"/external\",method:\"post\",target:\"_blank\"});return i.append(\"input\").attr({type:\"text\",name:\"data\"}).node().value=b.graphJson(t,!1,\"keepdata\"),i.node().submit(),r.remove(),t.emit(\"plotly_afterexport\"),!1}};var T=[\"days\",\"shortDays\",\"months\",\"shortMonths\",\"periods\",\"dateTime\",\"date\",\"time\",\"decimal\",\"thousands\",\"grouping\",\"currency\"],k=[\"year\",\"month\",\"dayMonth\",\"dayMonthYear\"];function A(t,e){var r=t._context.locale;r||(r=\"en-US\");var n=!1,i={};function a(t){for(var r=!0,a=0;a1&&z.length>1){for(s.getComponentMethod(\"grid\",\"sizeDefaults\")(c,l),o=0;o15&&z.length>15&&0===l.shapes.length&&0===l.images.length,b.linkSubplots(h,l,f,n),b.cleanPlot(h,l,f,n);var N=!(!n._has||!n._has(\"gl2d\")),j=!(!l._has||!l._has(\"gl2d\")),U=!(!n._has||!n._has(\"cartesian\"))||N,V=!(!l._has||!l._has(\"cartesian\"))||j;U&&!V?n._bgLayer.remove():V&&!U&&(l._shouldCreateBgLayer=!0),n._zoomlayer&&!t._dragging&&d({_fullLayout:n}),function(t,e){var r,n=[];e.meta&&(r=e._meta={meta:e.meta,layout:{meta:e.meta}});for(var i=0;i0){var f=1-2*s;n=Math.round(f*n),i=Math.round(f*i)}}var h=b.layoutAttributes.width.min,p=b.layoutAttributes.height.min;n1,g=!e.height&&Math.abs(r.height-i)>1;(g||d)&&(d&&(r.width=n),g&&(r.height=i)),t._initialAutoSize||(t._initialAutoSize={width:n,height:i}),b.sanitizeMargins(r)},b.supplyLayoutModuleDefaults=function(t,e,r,n){var i,a,o,l=s.componentsRegistry,c=e._basePlotModules,f=s.subplotsRegistry.cartesian;for(i in l)(o=l[i]).includeBasePlot&&o.includeBasePlot(t,e);for(var h in c.length||c.push(f),e._has(\"cartesian\")&&(s.getComponentMethod(\"grid\",\"contentDefaults\")(t,e),f.finalizeSubplots(t,e)),e._subplots)e._subplots[h].sort(u.subplotSort);for(a=0;a1&&(r.l/=g,r.r/=g)}if(f){var m=(r.t+r.b)/f;m>1&&(r.t/=m,r.b/=m)}var v=void 0!==r.xl?r.xl:r.x,y=void 0!==r.xr?r.xr:r.x,x=void 0!==r.yt?r.yt:r.y,_=void 0!==r.yb?r.yb:r.y;h[e]={l:{val:v,size:r.l+d},r:{val:y,size:r.r+d},b:{val:_,size:r.b+d},t:{val:x,size:r.t+d}},p[e]=1}else delete h[e],delete p[e];if(!n._replotting)return b.doAutoMargin(t)}},b.doAutoMargin=function(t){var e=t._fullLayout,r=e.width,n=e.height;e._size||(e._size={}),C(e);var i=e._size,a=e.margin,l=u.extendFlat({},i),c=a.l,f=a.r,h=a.t,d=a.b,g=e._pushmargin,m=e._pushmarginIds;if(!1!==e.margin.autoexpand){for(var v in g)m[v]||delete g[v];for(var y in g.base={l:{val:0,size:c},r:{val:1,size:f},t:{val:1,size:h},b:{val:0,size:d}},g){var x=g[y].l||{},_=g[y].b||{},w=x.val,T=x.size,k=_.val,A=_.size;for(var M in g){if(o(T)&&g[M].r){var S=g[M].r.val,E=g[M].r.size;if(S>w){var L=(T*S+(E-r)*w)/(S-w),P=(E*(1-w)+(T-r)*(1-S))/(S-w);L+P>c+f&&(c=L,f=P)}}if(o(A)&&g[M].t){var I=g[M].t.val,O=g[M].t.size;if(I>k){var z=(A*I+(O-n)*k)/(I-k),D=(O*(1-k)+(A-n)*(1-I))/(I-k);z+D>d+h&&(d=z,h=D)}}}}}var R=u.constrain(r-a.l-a.r,2,64),F=u.constrain(n-a.t-a.b,2,64),B=Math.max(0,r-R),N=Math.max(0,n-F);if(B){var j=(c+f)/B;j>1&&(c/=j,f/=j)}if(N){var U=(d+h)/N;U>1&&(d/=U,h/=U)}if(i.l=Math.round(c),i.r=Math.round(f),i.t=Math.round(h),i.b=Math.round(d),i.p=Math.round(a.pad),i.w=Math.round(r)-i.l-i.r,i.h=Math.round(n)-i.t-i.b,!e._replotting&&b.didMarginChange(l,i)){\"_redrawFromAutoMarginCount\"in e?e._redrawFromAutoMarginCount++:e._redrawFromAutoMarginCount=1;var V=3*(1+Object.keys(m).length);if(e._redrawFromAutoMarginCount0&&(t._transitioningWithDuration=!0),t._transitionData._interruptCallbacks.push((function(){n=!0})),r.redraw&&t._transitionData._interruptCallbacks.push((function(){return s.call(\"redraw\",t)})),t._transitionData._interruptCallbacks.push((function(){t.emit(\"plotly_transitioninterrupted\",[])}));var a=0,o=0;function l(){return a++,function(){o++,n||o!==a||function(e){if(!t._transitionData)return;(function(t){if(t)for(;t.length;)t.shift()})(t._transitionData._interruptCallbacks),Promise.resolve().then((function(){if(r.redraw)return s.call(\"redraw\",t)})).then((function(){t._transitioning=!1,t._transitioningWithDuration=!1,t.emit(\"plotly_transitioned\",[])})).then(e)}(i)}}r.runFn(l),setTimeout(l())}))}],a=u.syncOrAsync(i,t);return a&&a.then||(a=Promise.resolve()),a.then((function(){return t}))}b.didMarginChange=function(t,e){for(var r=0;r1)return!0}return!1},b.graphJson=function(t,e,r,n,i,a){(i&&e&&!t._fullData||i&&!e&&!t._fullLayout)&&b.supplyDefaults(t);var o=i?t._fullData:t.data,s=i?t._fullLayout:t.layout,l=(t._transitionData||{})._frames;function c(t,e){if(\"function\"==typeof t)return e?\"_function_\":null;if(u.isPlainObject(t)){var n,i={};return Object.keys(t).sort().forEach((function(a){if(-1===[\"_\",\"[\"].indexOf(a.charAt(0)))if(\"function\"!=typeof t[a]){if(\"keepdata\"===r){if(\"src\"===a.substr(a.length-3))return}else if(\"keepstream\"===r){if(\"string\"==typeof(n=t[a+\"src\"])&&n.indexOf(\":\")>0&&!u.isPlainObject(t.stream))return}else if(\"keepall\"!==r&&\"string\"==typeof(n=t[a+\"src\"])&&n.indexOf(\":\")>0)return;i[a]=c(t[a],e)}else e&&(i[a]=\"_function\")})),i}return Array.isArray(t)?t.map((function(t){return c(t,e)})):u.isTypedArray(t)?u.simpleMap(t,u.identity):u.isJSDate(t)?u.ms2DateTimeLocal(+t):t}var f={data:(o||[]).map((function(t){var r=c(t);return e&&delete r.fit,r}))};if(!e&&(f.layout=c(s),i)){var h=s._size;f.layout.computed={margin:{b:h.b,l:h.l,r:h.r,t:h.t}}}return l&&(f.frames=c(l)),a&&(f.config=c(t._context,!0)),\"object\"===n?f:JSON.stringify(f)},b.modifyFrames=function(t,e){var r,n,i,a=t._transitionData._frames,o=t._transitionData._frameHash;for(r=0;r=0;a--)if(s[a].enabled){r._indexToPoints=s[a]._indexToPoints;break}n&&n.calc&&(o=n.calc(t,r))}Array.isArray(o)&&o[0]||(o=[{x:h,y:h}]),o[0].t||(o[0].t={}),o[0].trace=r,d[e]=o}}for(z(o,c,f),i=0;i1e-10?t:0}function h(t,e,r){e=e||0,r=r||0;for(var n=t.length,i=new Array(n),a=0;a0?r:1/0})),i=n.mod(r+1,e.length);return[e[r],e[i]]},findIntersectionXY:c,findXYatLength:function(t,e,r,n){var i=-e*r,a=e*e+1,o=2*(e*i-r),s=i*i+r*r-t*t,l=Math.sqrt(o*o-4*a*s),c=(-o+l)/(2*a),u=(-o-l)/(2*a);return[[c,e*c+i+n],[u,e*u+i+n]]},clampTiny:f,pathPolygon:function(t,e,r,n,i,a){return\"M\"+h(u(t,e,r,n),i,a).join(\"L\")},pathPolygonAnnulus:function(t,e,r,n,i,a,o){var s,l;t=90||s>90&&l>=450?1:u<=0&&h<=0?0:Math.max(u,h);e=s<=180&&l>=180||s>180&&l>=540?-1:c>=0&&f>=0?0:Math.min(c,f);r=s<=270&&l>=270||s>270&&l>=630?-1:u>=0&&h>=0?0:Math.min(u,h);n=l>=360?1:c<=0&&f<=0?0:Math.max(c,f);return[e,r,n,i]}(p),b=x[2]-x[0],_=x[3]-x[1],w=h/f,T=Math.abs(_/b);w>T?(d=f,y=(h-(g=f*T))/n.h/2,m=[o[0],o[1]],v=[s[0]+y,s[1]-y]):(g=h,y=(f-(d=h/T))/n.w/2,m=[o[0]+y,o[1]-y],v=[s[0],s[1]]),this.xLength2=d,this.yLength2=g,this.xDomain2=m,this.yDomain2=v;var k,A=this.xOffset2=n.l+n.w*m[0],M=this.yOffset2=n.t+n.h*(1-v[1]),S=this.radius=d/b,E=this.innerRadius=this.getHole(e)*S,L=this.cx=A-S*x[0],C=this.cy=M+S*x[3],P=this.cxx=L-A,I=this.cyy=C-M,O=i.side;\"counterclockwise\"===O?(k=O,O=\"top\"):\"clockwise\"===O&&(k=O,O=\"bottom\"),this.radialAxis=this.mockAxis(t,e,i,{_id:\"x\",side:O,_trueSide:k,domain:[E/n.w,S/n.w]}),this.angularAxis=this.mockAxis(t,e,a,{side:\"right\",domain:[0,Math.PI],autorange:!1}),this.doAutoRange(t,e),this.updateAngularAxis(t,e),this.updateRadialAxis(t,e),this.updateRadialAxisTitle(t,e),this.xaxis=this.mockCartesianAxis(t,e,{_id:\"x\",domain:m}),this.yaxis=this.mockCartesianAxis(t,e,{_id:\"y\",domain:v});var z=this.pathSubplot();this.clipPaths.forTraces.select(\"path\").attr(\"d\",z).attr(\"transform\",l(P,I)),r.frontplot.attr(\"transform\",l(A,M)).call(u.setClipUrl,this._hasClipOnAxisFalse?null:this.clipIds.forTraces,this.gd),r.bg.attr(\"d\",z).attr(\"transform\",l(L,C)).call(c.fill,e.bgcolor)},N.mockAxis=function(t,e,r,n){var i=o.extendFlat({},r,n);return d(i,e,t),i},N.mockCartesianAxis=function(t,e,r){var n=this,i=n.isSmith,a=r._id,s=o.extendFlat({type:\"linear\"},r);p(s,t);var l={x:[0,2],y:[1,3]};return s.setRange=function(){var t=n.sectorBBox,r=l[a],i=n.radialAxis._rl,o=(i[1]-i[0])/(1-n.getHole(e));s.range=[t[r[0]]*o,t[r[1]]*o]},s.isPtWithinRange=\"x\"!==a||i?function(){return!0}:function(t){return n.isPtInside(t)},s.setRange(),s.setScale(),s},N.doAutoRange=function(t,e){var r=this.gd,n=this.radialAxis,i=this.getRadial(e);g(r,n);var a=n.range;i.range=a.slice(),i._input.range=a.slice(),n._rl=[n.r2l(a[0],null,\"gregorian\"),n.r2l(a[1],null,\"gregorian\")]},N.updateRadialAxis=function(t,e){var r=this,n=r.gd,i=r.layers,a=r.radius,u=r.innerRadius,f=r.cx,p=r.cy,d=r.getRadial(e),g=D(r.getSector(e)[0],360),m=r.radialAxis,v=u90&&g<=270&&(m.tickangle=180);var x=y?function(t){var e=O(r,C([t.x,0]));return l(e[0]-f,e[1]-p)}:function(t){return l(m.l2p(t.x)+u,0)},b=y?function(t){return I(r,t.x,-1/0,1/0)}:function(t){return r.pathArc(m.r2p(t.x)+u)},_=j(d);if(r.radialTickLayout!==_&&(i[\"radial-axis\"].selectAll(\".xtick\").remove(),r.radialTickLayout=_),v){m.setScale();var w=0,T=y?(m.tickvals||[]).filter((function(t){return t>=0})).map((function(t){return h.tickText(m,t,!0,!1)})):h.calcTicks(m),k=y?T:h.clipEnds(m,T),A=h.getTickSigns(m)[2];y&&((\"top\"===m.ticks&&\"bottom\"===m.side||\"bottom\"===m.ticks&&\"top\"===m.side)&&(A=-A),\"top\"===m.ticks&&\"top\"===m.side&&(w=-m.ticklen),\"bottom\"===m.ticks&&\"bottom\"===m.side&&(w=m.ticklen)),h.drawTicks(n,m,{vals:T,layer:i[\"radial-axis\"],path:h.makeTickPath(m,0,A),transFn:x,crisp:!1}),h.drawGrid(n,m,{vals:k,layer:i[\"radial-grid\"],path:b,transFn:o.noop,crisp:!1}),h.drawLabels(n,m,{vals:T,layer:i[\"radial-axis\"],transFn:x,labelFns:h.makeLabelFns(m,w)})}var M=r.radialAxisAngle=r.vangles?F(U(R(d.angle),r.vangles)):d.angle,S=l(f,p),E=S+s(-M);V(i[\"radial-axis\"],v&&(d.showticklabels||d.ticks),{transform:E}),V(i[\"radial-grid\"],v&&d.showgrid,{transform:y?\"\":S}),V(i[\"radial-line\"].select(\"line\"),v&&d.showline,{x1:y?-a:u,y1:0,x2:a,y2:0,transform:E}).attr(\"stroke-width\",d.linewidth).call(c.stroke,d.linecolor)},N.updateRadialAxisTitle=function(t,e,r){if(!this.isSmith){var n=this.gd,i=this.radius,a=this.cx,o=this.cy,s=this.getRadial(e),l=this.id+\"title\",c=0;if(s.title){var f=u.bBox(this.layers[\"radial-axis\"].node()).height,h=s.title.font.size,p=s.side;c=\"top\"===p?h:\"counterclockwise\"===p?-(f+.4*h):f+.8*h}var d=void 0!==r?r:this.radialAxisAngle,g=R(d),m=Math.cos(g),v=Math.sin(g),y=a+i/2*m+c*v,b=o-i/2*v+c*m;this.layers[\"radial-axis-title\"]=x.draw(n,l,{propContainer:s,propName:this.id+\".radialaxis.title\",placeholder:z(n,\"Click to enter radial axis title\"),attributes:{x:y,y:b,\"text-anchor\":\"middle\"},transform:{rotate:-d}})}},N.updateAngularAxis=function(t,e){var r=this,n=r.gd,i=r.layers,a=r.radius,u=r.innerRadius,f=r.cx,p=r.cy,d=r.getAngular(e),g=r.angularAxis,m=r.isSmith;m||(r.fillViewInitialKey(\"angularaxis.rotation\",d.rotation),g.setGeometry(),g.setScale());var v=m?function(t){var e=O(r,C([0,t.x]));return Math.atan2(e[0]-f,e[1]-p)-Math.PI/2}:function(t){return g.t2g(t.x)};\"linear\"===g.type&&\"radians\"===g.thetaunit&&(g.tick0=F(g.tick0),g.dtick=F(g.dtick));var y=function(t){return l(f+a*Math.cos(t),p-a*Math.sin(t))},x=m?function(t){var e=O(r,C([0,t.x]));return l(e[0],e[1])}:function(t){return y(v(t))},b=m?function(t){var e=O(r,C([0,t.x])),n=Math.atan2(e[0]-f,e[1]-p)-Math.PI/2;return l(e[0],e[1])+s(-F(n))}:function(t){var e=v(t);return y(e)+s(-F(e))},_=m?function(t){return P(r,t.x,0,1/0)}:function(t){var e=v(t),r=Math.cos(e),n=Math.sin(e);return\"M\"+[f+u*r,p-u*n]+\"L\"+[f+a*r,p-a*n]},w=h.makeLabelFns(g,0).labelStandoff,T={xFn:function(t){var e=v(t);return Math.cos(e)*w},yFn:function(t){var e=v(t),r=Math.sin(e)>0?.2:1;return-Math.sin(e)*(w+t.fontSize*r)+Math.abs(Math.cos(e))*(t.fontSize*M)},anchorFn:function(t){var e=v(t),r=Math.cos(e);return Math.abs(r)<.1?\"middle\":r>0?\"start\":\"end\"},heightFn:function(t,e,r){var n=v(t);return-.5*(1+Math.sin(n))*r}},k=j(d);r.angularTickLayout!==k&&(i[\"angular-axis\"].selectAll(\".\"+g._id+\"tick\").remove(),r.angularTickLayout=k);var A,S=m?[1/0].concat(g.tickvals||[]).map((function(t){return h.tickText(g,t,!0,!1)})):h.calcTicks(g);if(m&&(S[0].text=\"\\u221e\",S[0].fontSize*=1.75),\"linear\"===e.gridshape?(A=S.map(v),o.angleDelta(A[0],A[1])<0&&(A=A.slice().reverse())):A=null,r.vangles=A,\"category\"===g.type&&(S=S.filter((function(t){return o.isAngleInsideSector(v(t),r.sectorInRad)}))),g.visible){var E=\"inside\"===g.ticks?-1:1,L=(g.linewidth||1)/2;h.drawTicks(n,g,{vals:S,layer:i[\"angular-axis\"],path:\"M\"+E*L+\",0h\"+E*g.ticklen,transFn:b,crisp:!1}),h.drawGrid(n,g,{vals:S,layer:i[\"angular-grid\"],path:_,transFn:o.noop,crisp:!1}),h.drawLabels(n,g,{vals:S,layer:i[\"angular-axis\"],repositionOnUpdate:!0,transFn:x,labelFns:T})}V(i[\"angular-line\"].select(\"path\"),d.showline,{d:r.pathSubplot(),transform:l(f,p)}).attr(\"stroke-width\",d.linewidth).call(c.stroke,d.linecolor)},N.updateFx=function(t,e){this.gd._context.staticPlot||(!this.isSmith&&(this.updateAngularDrag(t),this.updateRadialDrag(t,e,0),this.updateRadialDrag(t,e,1)),this.updateHoverAndMainDrag(t))},N.updateHoverAndMainDrag=function(t){var e,r,s=this,c=s.isSmith,u=s.gd,f=s.layers,h=t._zoomlayer,p=S.MINZOOM,d=S.OFFEDGE,g=s.radius,x=s.innerRadius,T=s.cx,k=s.cy,A=s.cxx,M=s.cyy,L=s.sectorInRad,C=s.vangles,P=s.radialAxis,I=E.clampTiny,O=E.findXYatLength,z=E.findEnclosingVertexAngles,D=S.cornerHalfWidth,R=S.cornerLen/2,F=m.makeDragger(f,\"path\",\"maindrag\",\"crosshair\");n.select(F).attr(\"d\",s.pathSubplot()).attr(\"transform\",l(T,k)),F.onmousemove=function(t){y.hover(u,t,s.id),u._fullLayout._lasthover=F,u._fullLayout._hoversubplot=s.id},F.onmouseout=function(t){u._dragging||v.unhover(u,t)};var B,N,j,U,V,H,q,G,Y,W={element:F,gd:u,subplot:s.id,plotinfo:{id:s.id,xaxis:s.xaxis,yaxis:s.yaxis},xaxes:[s.xaxis],yaxes:[s.yaxis]};function X(t,e){return Math.sqrt(t*t+e*e)}function Z(t,e){return X(t-A,e-M)}function J(t,e){return Math.atan2(M-e,t-A)}function K(t,e){return[t*Math.cos(e),t*Math.sin(-e)]}function Q(t,e){if(0===t)return s.pathSector(2*D);var r=R/t,n=e-r,i=e+r,a=Math.max(0,Math.min(t,g)),o=a-D,l=a+D;return\"M\"+K(o,n)+\"A\"+[o,o]+\" 0,0,0 \"+K(o,i)+\"L\"+K(l,i)+\"A\"+[l,l]+\" 0,0,1 \"+K(l,n)+\"Z\"}function $(t,e,r){if(0===t)return s.pathSector(2*D);var n,i,a=K(t,e),o=K(t,r),l=I((a[0]+o[0])/2),c=I((a[1]+o[1])/2);if(l&&c){var u=c/l,f=-1/u,h=O(D,u,l,c);n=O(R,f,h[0][0],h[0][1]),i=O(R,f,h[1][0],h[1][1])}else{var p,d;c?(p=R,d=D):(p=D,d=R),n=[[l-p,c-d],[l+p,c-d]],i=[[l-p,c+d],[l+p,c+d]]}return\"M\"+n.join(\"L\")+\"L\"+i.reverse().join(\"L\")+\"Z\"}function tt(t,e){return e=Math.max(Math.min(e,g),x),tp?(t-1&&1===t&&_(e,u,[s.xaxis],[s.yaxis],s.id,W),r.indexOf(\"event\")>-1&&y.click(u,e,s.id)}W.prepFn=function(t,n,a){var l=u._fullLayout.dragmode,f=F.getBoundingClientRect();u._fullLayout._calcInverseTransform(u);var p=u._fullLayout._invTransform;e=u._fullLayout._invScaleX,r=u._fullLayout._invScaleY;var d=o.apply3DTransform(p)(n-f.left,a-f.top);if(B=d[0],N=d[1],C){var v=E.findPolygonOffset(g,L[0],L[1],C);B+=A+v[0],N+=M+v[1]}switch(l){case\"zoom\":W.clickFn=st,c||(W.moveFn=C?it:rt,W.doneFn=at,function(){j=null,U=null,V=s.pathSubplot(),H=!1;var t=u._fullLayout[s.id];q=i(t.bgcolor).getLuminance(),(G=m.makeZoombox(h,q,T,k,V)).attr(\"fill-rule\",\"evenodd\"),Y=m.makeCorners(h,T,k),w(u)}());break;case\"select\":case\"lasso\":b(t,n,a,W,l)}},v.init(W)},N.updateRadialDrag=function(t,e,r){var i=this,c=i.gd,u=i.layers,f=i.radius,h=i.innerRadius,p=i.cx,d=i.cy,g=i.radialAxis,y=S.radialDragBoxSize,x=y/2;if(g.visible){var b,_,T,M=R(i.radialAxisAngle),E=g._rl,L=E[0],C=E[1],P=E[r],I=.75*(E[1]-E[0])/(1-i.getHole(e))/f;r?(b=p+(f+x)*Math.cos(M),_=d-(f+x)*Math.sin(M),T=\"radialdrag\"):(b=p+(h-x)*Math.cos(M),_=d-(h-x)*Math.sin(M),T=\"radialdrag-inner\");var O,z,D,B=m.makeRectDragger(u,T,\"crosshair\",-x,-x,y,y),N={element:B,gd:c};V(n.select(B),g.visible&&h0==(r?D>L:Dn?function(t){return t<=0}:function(t){return t>=0};t.c2g=function(r){var n=t.c2l(r)-e;return(s(n)?n:0)+o},t.g2c=function(r){return t.l2c(r+e-o)},t.g2p=function(t){return t*a},t.c2p=function(e){return t.g2p(t.c2g(e))}}}(t,e);break;case\"angularaxis\":!function(t,e){var r=t.type;if(\"linear\"===r){var i=t.d2c,s=t.c2d;t.d2c=function(t,e){return function(t,e){return\"degrees\"===e?a(t):t}(i(t),e)},t.c2d=function(t,e){return s(function(t,e){return\"degrees\"===e?o(t):t}(t,e))}}t.makeCalcdata=function(e,i){var a,o,s=e[i],l=e._length,c=function(r){return t.d2c(r,e.thetaunit)};if(s){if(n.isTypedArray(s)&&\"linear\"===r){if(l===s.length)return s;if(s.subarray)return s.subarray(0,l)}for(a=new Array(l),o=0;o0?1:0}function i(t){var e=t[0],r=t[1];if(!isFinite(e)||!isFinite(r))return[1,0];var n=(e+1)*(e+1)+r*r;return[(e*e+r*r-1)/n,2*r/n]}function a(t,e){var r=e[0],n=e[1];return[r*t.radius+t.cx,-n*t.radius+t.cy]}function o(t,e){return e*t.radius}e.exports={smith:i,reactanceArc:function(t,e,r,n){var s=a(t,i([r,e])),l=s[0],c=s[1],u=a(t,i([n,e])),f=u[0],h=u[1];if(0===e)return[\"M\"+l+\",\"+c,\"L\"+f+\",\"+h].join(\" \");var p=o(t,1/Math.abs(e));return[\"M\"+l+\",\"+c,\"A\"+p+\",\"+p+\" 0 0,\"+(e<0?1:0)+\" \"+f+\",\"+h].join(\" \")},resistanceArc:function(t,e,r,s){var l=o(t,1/(e+1)),c=a(t,i([e,r])),u=c[0],f=c[1],h=a(t,i([e,s])),p=h[0],d=h[1];if(n(r)!==n(s)){var g=a(t,i([e,0]));return[\"M\"+u+\",\"+f,\"A\"+l+\",\"+l+\" 0 0,\"+(00){for(var n=[],i=0;i=u&&(h.min=0,d.min=0,m.min=0,t.aaxis&&delete t.aaxis.min,t.baxis&&delete t.baxis.min,t.caxis&&delete t.caxis.min)}function g(t,e,r,n){var i=h[e._name];function o(r,n){return a.coerce(t,e,i,r,n)}o(\"uirevision\",n.uirevision),e.type=\"linear\";var p=o(\"color\"),d=p!==i.color.dflt?p:r.font.color,g=e._name.charAt(0).toUpperCase(),m=\"Component \"+g,v=o(\"title.text\",m);e._hovertitle=v===m?v:g,a.coerceFont(o,\"title.font\",{family:r.font.family,size:a.bigFont(r.font.size),color:d}),o(\"min\"),u(t,e,o,\"linear\"),l(t,e,o,\"linear\"),s(t,e,o,\"linear\"),c(t,e,o,{outerTicks:!0}),o(\"showticklabels\")&&(a.coerceFont(o,\"tickfont\",{family:r.font.family,size:r.font.size,color:d}),o(\"tickangle\"),o(\"tickformat\")),f(t,e,o,{dfltColor:p,bgColor:r.bgColor,blend:60,showLine:!0,showGrid:!0,noZeroLine:!0,attributes:i}),o(\"hoverformat\"),o(\"layer\")}e.exports=function(t,e,r){o(t,e,r,{type:\"ternary\",attributes:h,handleDefaults:d,font:e.font,paper_bgcolor:e.paper_bgcolor})}},{\"../../components/color\":366,\"../../lib\":503,\"../../plot_api/plot_template\":543,\"../cartesian/line_grid_defaults\":571,\"../cartesian/prefix_suffix_defaults\":573,\"../cartesian/tick_label_defaults\":578,\"../cartesian/tick_mark_defaults\":579,\"../cartesian/tick_value_defaults\":580,\"../subplot_defaults\":632,\"./layout_attributes\":635}],637:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"tinycolor2\"),a=t(\"../../registry\"),o=t(\"../../lib\"),s=o.strTranslate,l=o._,c=t(\"../../components/color\"),u=t(\"../../components/drawing\"),f=t(\"../cartesian/set_convert\"),h=t(\"../../lib/extend\").extendFlat,p=t(\"../plots\"),d=t(\"../cartesian/axes\"),g=t(\"../../components/dragelement\"),m=t(\"../../components/fx\"),v=t(\"../../components/dragelement/helpers\"),y=v.freeMode,x=v.rectMode,b=t(\"../../components/titles\"),_=t(\"../cartesian/select\").prepSelect,w=t(\"../cartesian/select\").selectOnClick,T=t(\"../cartesian/select\").clearSelect,k=t(\"../cartesian/select\").clearSelectionsCache,A=t(\"../cartesian/constants\");function M(t,e){this.id=t.id,this.graphDiv=t.graphDiv,this.init(e),this.makeFramework(e),this.aTickLayout=null,this.bTickLayout=null,this.cTickLayout=null}e.exports=M;var S=M.prototype;S.init=function(t){this.container=t._ternarylayer,this.defs=t._defs,this.layoutId=t._uid,this.traceHash={},this.layers={}},S.plot=function(t,e){var r=e[this.id],n=e._size;this._hasClipOnAxisFalse=!1;for(var i=0;iE*b?i=(a=b)*E:a=(i=x)/E,o=v*i/x,l=y*a/b,r=e.l+e.w*g-i/2,n=e.t+e.h*(1-m)-a/2,p.x0=r,p.y0=n,p.w=i,p.h=a,p.sum=_,p.xaxis={type:\"linear\",range:[w+2*k-_,_-w-2*T],domain:[g-o/2,g+o/2],_id:\"x\"},f(p.xaxis,p.graphDiv._fullLayout),p.xaxis.setScale(),p.xaxis.isPtWithinRange=function(t){return t.a>=p.aaxis.range[0]&&t.a<=p.aaxis.range[1]&&t.b>=p.baxis.range[1]&&t.b<=p.baxis.range[0]&&t.c>=p.caxis.range[1]&&t.c<=p.caxis.range[0]},p.yaxis={type:\"linear\",range:[w,_-T-k],domain:[m-l/2,m+l/2],_id:\"y\"},f(p.yaxis,p.graphDiv._fullLayout),p.yaxis.setScale(),p.yaxis.isPtWithinRange=function(){return!0};var A=p.yaxis.domain[0],M=p.aaxis=h({},t.aaxis,{range:[w,_-T-k],side:\"left\",tickangle:(+t.aaxis.tickangle||0)-30,domain:[A,A+l*E],anchor:\"free\",position:0,_id:\"y\",_length:i});f(M,p.graphDiv._fullLayout),M.setScale();var S=p.baxis=h({},t.baxis,{range:[_-w-k,T],side:\"bottom\",domain:p.xaxis.domain,anchor:\"free\",position:0,_id:\"x\",_length:i});f(S,p.graphDiv._fullLayout),S.setScale();var L=p.caxis=h({},t.caxis,{range:[_-w-T,k],side:\"right\",tickangle:(+t.caxis.tickangle||0)+30,domain:[A,A+l*E],anchor:\"free\",position:0,_id:\"y\",_length:i});f(L,p.graphDiv._fullLayout),L.setScale();var C=\"M\"+r+\",\"+(n+a)+\"h\"+i+\"l-\"+i/2+\",-\"+a+\"Z\";p.clipDef.select(\"path\").attr(\"d\",C),p.layers.plotbg.select(\"path\").attr(\"d\",C);var P=\"M0,\"+a+\"h\"+i+\"l-\"+i/2+\",-\"+a+\"Z\";p.clipDefRelative.select(\"path\").attr(\"d\",P);var I=s(r,n);p.plotContainer.selectAll(\".scatterlayer,.maplayer\").attr(\"transform\",I),p.clipDefRelative.select(\"path\").attr(\"transform\",null);var O=s(r-S._offset,n+a);p.layers.baxis.attr(\"transform\",O),p.layers.bgrid.attr(\"transform\",O);var z=s(r+i/2,n)+\"rotate(30)\"+s(0,-M._offset);p.layers.aaxis.attr(\"transform\",z),p.layers.agrid.attr(\"transform\",z);var D=s(r+i/2,n)+\"rotate(-30)\"+s(0,-L._offset);p.layers.caxis.attr(\"transform\",D),p.layers.cgrid.attr(\"transform\",D),p.drawAxes(!0),p.layers.aline.select(\"path\").attr(\"d\",M.showline?\"M\"+r+\",\"+(n+a)+\"l\"+i/2+\",-\"+a:\"M0,0\").call(c.stroke,M.linecolor||\"#000\").style(\"stroke-width\",(M.linewidth||0)+\"px\"),p.layers.bline.select(\"path\").attr(\"d\",S.showline?\"M\"+r+\",\"+(n+a)+\"h\"+i:\"M0,0\").call(c.stroke,S.linecolor||\"#000\").style(\"stroke-width\",(S.linewidth||0)+\"px\"),p.layers.cline.select(\"path\").attr(\"d\",L.showline?\"M\"+(r+i/2)+\",\"+n+\"l\"+i/2+\",\"+a:\"M0,0\").call(c.stroke,L.linecolor||\"#000\").style(\"stroke-width\",(L.linewidth||0)+\"px\"),p.graphDiv._context.staticPlot||p.initInteractions(),u.setClipUrl(p.layers.frontplot,p._hasClipOnAxisFalse?null:p.clipId,p.graphDiv)},S.drawAxes=function(t){var e=this.graphDiv,r=this.id.substr(7)+\"title\",n=this.layers,i=this.aaxis,a=this.baxis,o=this.caxis;if(this.drawAx(i),this.drawAx(a),this.drawAx(o),t){var s=Math.max(i.showticklabels?i.tickfont.size/2:0,(o.showticklabels?.75*o.tickfont.size:0)+(\"outside\"===o.ticks?.87*o.ticklen:0)),c=(a.showticklabels?a.tickfont.size:0)+(\"outside\"===a.ticks?a.ticklen:0)+3;n[\"a-title\"]=b.draw(e,\"a\"+r,{propContainer:i,propName:this.id+\".aaxis.title\",placeholder:l(e,\"Click to enter Component A title\"),attributes:{x:this.x0+this.w/2,y:this.y0-i.title.font.size/3-s,\"text-anchor\":\"middle\"}}),n[\"b-title\"]=b.draw(e,\"b\"+r,{propContainer:a,propName:this.id+\".baxis.title\",placeholder:l(e,\"Click to enter Component B title\"),attributes:{x:this.x0-c,y:this.y0+this.h+.83*a.title.font.size+c,\"text-anchor\":\"middle\"}}),n[\"c-title\"]=b.draw(e,\"c\"+r,{propContainer:o,propName:this.id+\".caxis.title\",placeholder:l(e,\"Click to enter Component C title\"),attributes:{x:this.x0+this.w+c,y:this.y0+this.h+.83*o.title.font.size+c,\"text-anchor\":\"middle\"}})}},S.drawAx=function(t){var e,r=this.graphDiv,n=t._name,i=n.charAt(0),a=t._id,s=this.layers[n],l=i+\"tickLayout\",c=(e=t).ticks+String(e.ticklen)+String(e.showticklabels);this[l]!==c&&(s.selectAll(\".\"+a+\"tick\").remove(),this[l]=c),t.setScale();var u=d.calcTicks(t),f=d.clipEnds(t,u),h=d.makeTransTickFn(t),p=d.getTickSigns(t)[2],g=o.deg2rad(30),m=p*(t.linewidth||1)/2,v=p*t.ticklen,y=this.w,x=this.h,b=\"b\"===i?\"M0,\"+m+\"l\"+Math.sin(g)*v+\",\"+Math.cos(g)*v:\"M\"+m+\",0l\"+Math.cos(g)*v+\",\"+-Math.sin(g)*v,_={a:\"M0,0l\"+x+\",-\"+y/2,b:\"M0,0l-\"+y/2+\",-\"+x,c:\"M0,0l-\"+x+\",\"+y/2}[i];d.drawTicks(r,t,{vals:\"inside\"===t.ticks?f:u,layer:s,path:b,transFn:h,crisp:!1}),d.drawGrid(r,t,{vals:f,layer:this.layers[i+\"grid\"],path:_,transFn:h,crisp:!1}),d.drawLabels(r,t,{vals:u,layer:s,transFn:h,labelFns:d.makeLabelFns(t,0,30)})};var L=A.MINZOOM/2+.87,C=\"m-0.87,.5h\"+L+\"v3h-\"+(L+5.2)+\"l\"+(L/2+2.6)+\",-\"+(.87*L+4.5)+\"l2.6,1.5l-\"+L/2+\",\"+.87*L+\"Z\",P=\"m0.87,.5h-\"+L+\"v3h\"+(L+5.2)+\"l-\"+(L/2+2.6)+\",-\"+(.87*L+4.5)+\"l-2.6,1.5l\"+L/2+\",\"+.87*L+\"Z\",I=\"m0,1l\"+L/2+\",\"+.87*L+\"l2.6,-1.5l-\"+(L/2+2.6)+\",-\"+(.87*L+4.5)+\"l-\"+(L/2+2.6)+\",\"+(.87*L+4.5)+\"l2.6,1.5l\"+L/2+\",-\"+.87*L+\"Z\",O=!0;function z(t){n.select(t).selectAll(\".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners\").remove()}S.clearSelect=function(){k(this.dragOptions),T(this.dragOptions.gd)},S.initInteractions=function(){var t,e,r,n,f,h,p,d,v,b,T,k,M=this,S=M.layers.plotbg.select(\"path\").node(),L=M.graphDiv,D=L._fullLayout._zoomlayer;function R(t){var e={};return e[M.id+\".aaxis.min\"]=t.a,e[M.id+\".baxis.min\"]=t.b,e[M.id+\".caxis.min\"]=t.c,e}function F(t,e){var r=L._fullLayout.clickmode;z(L),2===t&&(L.emit(\"plotly_doubleclick\",null),a.call(\"_guiRelayout\",L,R({a:0,b:0,c:0}))),r.indexOf(\"select\")>-1&&1===t&&w(e,L,[M.xaxis],[M.yaxis],M.id,M.dragOptions),r.indexOf(\"event\")>-1&&m.click(L,e,M.id)}function B(t,e){return 1-e/M.h}function N(t,e){return 1-(t+(M.h-e)/Math.sqrt(3))/M.w}function j(t,e){return(t-(M.h-e)/Math.sqrt(3))/M.w}function U(i,a){var o=r+i*t,s=n+a*e,l=Math.max(0,Math.min(1,B(0,n),B(0,s))),c=Math.max(0,Math.min(1,N(r,n),N(o,s))),u=Math.max(0,Math.min(1,j(r,n),j(o,s))),g=(l/2+u)*M.w,m=(1-l/2-c)*M.w,y=(g+m)/2,x=m-g,_=(1-l)*M.h,w=_-x/E;x.2?\"rgba(0,0,0,0.4)\":\"rgba(255,255,255,0.3)\").duration(200),k.transition().style(\"opacity\",1).duration(200),b=!0),L.emit(\"plotly_relayouting\",R(p))}function V(){z(L),p!==f&&(a.call(\"_guiRelayout\",L,R(p)),O&&L.data&&L._context.showTips&&(o.notifier(l(L,\"Double-click to zoom back out\"),\"long\"),O=!1))}function H(t,e){var r=t/M.xaxis._m,n=e/M.yaxis._m,i=[(p={a:f.a-n,b:f.b+(r+n)/2,c:f.c-(r-n)/2}).a,p.b,p.c].sort(o.sorterAsc),a=i.indexOf(p.a),l=i.indexOf(p.b),c=i.indexOf(p.c);i[0]<0&&(i[1]+i[0]/2<0?(i[2]+=i[0]+i[1],i[0]=i[1]=0):(i[2]+=i[0]/2,i[1]+=i[0]/2,i[0]=0),p={a:i[a],b:i[l],c:i[c]},e=(f.a-p.a)*M.yaxis._m,t=(f.c-p.c-f.b+p.b)*M.xaxis._m);var h=s(M.x0+t,M.y0+e);M.plotContainer.selectAll(\".scatterlayer,.maplayer\").attr(\"transform\",h);var d=s(-t,-e);M.clipDefRelative.select(\"path\").attr(\"transform\",d),M.aaxis.range=[p.a,M.sum-p.b-p.c],M.baxis.range=[M.sum-p.a-p.c,p.b],M.caxis.range=[M.sum-p.a-p.b,p.c],M.drawAxes(!1),M._hasClipOnAxisFalse&&M.plotContainer.select(\".scatterlayer\").selectAll(\".trace\").call(u.hideOutsideRangePoints,M),L.emit(\"plotly_relayouting\",R(p))}function q(){a.call(\"_guiRelayout\",L,R(p))}this.dragOptions={element:S,gd:L,plotinfo:{id:M.id,domain:L._fullLayout[M.id].domain,xaxis:M.xaxis,yaxis:M.yaxis},subplot:M.id,prepFn:function(a,l,u){M.dragOptions.xaxes=[M.xaxis],M.dragOptions.yaxes=[M.yaxis],t=L._fullLayout._invScaleX,e=L._fullLayout._invScaleY;var g=M.dragOptions.dragmode=L._fullLayout.dragmode;y(g)?M.dragOptions.minDrag=1:M.dragOptions.minDrag=void 0,\"zoom\"===g?(M.dragOptions.moveFn=U,M.dragOptions.clickFn=F,M.dragOptions.doneFn=V,function(t,e,a){var l=S.getBoundingClientRect();r=e-l.left,n=a-l.top,L._fullLayout._calcInverseTransform(L);var u=L._fullLayout._invTransform,g=o.apply3DTransform(u)(r,n);r=g[0],n=g[1],f={a:M.aaxis.range[0],b:M.baxis.range[1],c:M.caxis.range[1]},p=f,h=M.aaxis.range[1]-f.a,d=i(M.graphDiv._fullLayout[M.id].bgcolor).getLuminance(),v=\"M0,\"+M.h+\"L\"+M.w/2+\", 0L\"+M.w+\",\"+M.h+\"Z\",b=!1,T=D.append(\"path\").attr(\"class\",\"zoombox\").attr(\"transform\",s(M.x0,M.y0)).style({fill:d>.2?\"rgba(0,0,0,0)\":\"rgba(255,255,255,0)\",\"stroke-width\":0}).attr(\"d\",v),k=D.append(\"path\").attr(\"class\",\"zoombox-corners\").attr(\"transform\",s(M.x0,M.y0)).style({fill:c.background,stroke:c.defaultLine,\"stroke-width\":1,opacity:0}).attr(\"d\",\"M0,0Z\"),M.clearSelect(L)}(0,l,u)):\"pan\"===g?(M.dragOptions.moveFn=H,M.dragOptions.clickFn=F,M.dragOptions.doneFn=q,f={a:M.aaxis.range[0],b:M.baxis.range[1],c:M.caxis.range[1]},p=f,M.clearSelect(L)):(x(g)||y(g))&&_(a,l,u,M.dragOptions,g)}},S.onmousemove=function(t){m.hover(L,t,M.id),L._fullLayout._lasthover=S,L._fullLayout._hoversubplot=M.id},S.onmouseout=function(t){L._dragging||g.unhover(L,t)},g.init(this.dragOptions)}},{\"../../components/color\":366,\"../../components/dragelement\":385,\"../../components/dragelement/helpers\":384,\"../../components/drawing\":388,\"../../components/fx\":406,\"../../components/titles\":464,\"../../lib\":503,\"../../lib/extend\":493,\"../../registry\":638,\"../cartesian/axes\":554,\"../cartesian/constants\":561,\"../cartesian/select\":575,\"../cartesian/set_convert\":576,\"../plots\":619,\"@plotly/d3\":58,tinycolor2:312}],638:[function(t,e,r){\"use strict\";var n=t(\"./lib/loggers\"),i=t(\"./lib/noop\"),a=t(\"./lib/push_unique\"),o=t(\"./lib/is_plain_object\"),s=t(\"./lib/dom\").addStyleRule,l=t(\"./lib/extend\"),c=t(\"./plots/attributes\"),u=t(\"./plots/layout_attributes\"),f=l.extendFlat,h=l.extendDeepAll;function p(t){var e=t.name,i=t.categories,a=t.meta;if(r.modules[e])n.log(\"Type \"+e+\" already registered\");else{r.subplotsRegistry[t.basePlotModule.name]||function(t){var e=t.name;if(r.subplotsRegistry[e])return void n.log(\"Plot type \"+e+\" already registered.\");for(var i in v(t),r.subplotsRegistry[e]=t,r.componentsRegistry)b(i,t.name)}(t.basePlotModule);for(var o={},l=0;l-1&&(f[p[r]].title={text:\"\"});for(r=0;r\")?\"\":e.html(t).text()}));return e.remove(),r}(T),T=(T=T.replace(/&(?!\\w+;|\\#[0-9]+;| \\#x[0-9A-F]+;)/g,\"&\")).replace(c,\"'\"),i.isIE()&&(T=(T=(T=T.replace(/\"/gi,\"'\")).replace(/(\\('#)([^']*)('\\))/gi,'(\"#$2\")')).replace(/(\\\\')/gi,'\"')),T}},{\"../components/color\":366,\"../components/drawing\":388,\"../constants/xmlns_namespaces\":480,\"../lib\":503,\"@plotly/d3\":58}],647:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t,e){for(var r=0;rf+c||!n(u))}for(var p=0;pa))return e}return void 0!==r?r:t.dflt},r.coerceColor=function(t,e,r){return i(e).isValid()?e:void 0!==r?r:t.dflt},r.coerceEnumerated=function(t,e,r){return t.coerceNumber&&(e=+e),-1!==t.values.indexOf(e)?e:void 0!==r?r:t.dflt},r.getValue=function(t,e){var r;return Array.isArray(t)?e0?e+=r:u<0&&(e-=r)}return e}function z(t){var e=u,r=t.b,i=O(t);return n.inbox(r-e,i-e,_+(i-e)/(i-r)-1)}var D=t[f+\"a\"],R=t[h+\"a\"];g=Math.abs(D.r2c(D.range[1])-D.r2c(D.range[0]));var F=n.getDistanceFunction(i,p,d,(function(t){return(p(t)+d(t))/2}));if(n.getClosest(m,F,t),!1!==t.index&&m[t.index].p!==c){k||(L=function(t){return Math.min(A(t),t.p-y.bargroupwidth/2)},C=function(t){return Math.max(M(t),t.p+y.bargroupwidth/2)});var B=m[t.index],N=v.base?B.b+B.s:B.s;t[h+\"0\"]=t[h+\"1\"]=R.c2p(B[h],!0),t[h+\"LabelVal\"]=N;var j=y.extents[y.extents.round(B.p)];t[f+\"0\"]=D.c2p(x?L(B):j[0],!0),t[f+\"1\"]=D.c2p(x?C(B):j[1],!0);var U=void 0!==B.orig_p;return t[f+\"LabelVal\"]=U?B.orig_p:B.p,t.labelLabel=l(D,t[f+\"LabelVal\"],v[f+\"hoverformat\"]),t.valueLabel=l(R,t[h+\"LabelVal\"],v[h+\"hoverformat\"]),t.baseLabel=l(R,B.b,v[h+\"hoverformat\"]),t.spikeDistance=(function(t){var e=u,r=t.b,i=O(t);return n.inbox(r-e,i-e,w+(i-e)/(i-r)-1)}(B)+function(t){return P(A(t),M(t),w)}(B))/2,t[f+\"Spike\"]=D.c2p(B.p,!0),o(B,v,t),t.hovertemplate=v.hovertemplate,t}}function f(t,e){var r=e.mcc||t.marker.color,n=e.mlcc||t.marker.line.color,i=s(t,e);return a.opacity(r)?r:a.opacity(n)&&i?n:void 0}e.exports={hoverPoints:function(t,e,r,n,a){var o=u(t,e,r,n,a);if(o){var s=o.cd,l=s[0].trace,c=s[o.index];return o.color=f(l,c),i.getComponentMethod(\"errorbars\",\"hoverInfo\")(c,l,o),[o]}},hoverOnBars:u,getTraceColor:f}},{\"../../components/color\":366,\"../../components/fx\":406,\"../../constants/numerical\":479,\"../../lib\":503,\"../../plots/cartesian/axes\":554,\"../../registry\":638,\"./helpers\":654}],656:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\").supplyDefaults,crossTraceDefaults:t(\"./defaults\").crossTraceDefaults,supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\"),crossTraceCalc:t(\"./cross_trace_calc\").crossTraceCalc,colorbar:t(\"../scatter/marker_colorbar\"),arraysToCalcdata:t(\"./arrays_to_calcdata\"),plot:t(\"./plot\").plot,style:t(\"./style\").style,styleOnSelect:t(\"./style\").styleOnSelect,hoverPoints:t(\"./hover\").hoverPoints,eventData:t(\"./event_data\"),selectPoints:t(\"./select\"),moduleType:\"trace\",name:\"bar\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"bar-like\",\"cartesian\",\"svg\",\"bar\",\"oriented\",\"errorBarsOK\",\"showLegend\",\"zoomScale\"],animatable:!0,meta:{}}},{\"../../plots/cartesian\":568,\"../scatter/marker_colorbar\":944,\"./arrays_to_calcdata\":647,\"./attributes\":648,\"./calc\":649,\"./cross_trace_calc\":651,\"./defaults\":652,\"./event_data\":653,\"./hover\":655,\"./layout_attributes\":657,\"./layout_defaults\":658,\"./plot\":659,\"./select\":660,\"./style\":662}],657:[function(t,e,r){\"use strict\";e.exports={barmode:{valType:\"enumerated\",values:[\"stack\",\"group\",\"overlay\",\"relative\"],dflt:\"group\",editType:\"calc\"},barnorm:{valType:\"enumerated\",values:[\"\",\"fraction\",\"percent\"],dflt:\"\",editType:\"calc\"},bargap:{valType:\"number\",min:0,max:1,editType:\"calc\"},bargroupgap:{valType:\"number\",min:0,max:1,dflt:0,editType:\"calc\"}}},{}],658:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"../../lib\"),o=t(\"./layout_attributes\");e.exports=function(t,e,r){function s(r,n){return a.coerce(t,e,o,r,n)}for(var l=!1,c=!1,u=!1,f={},h=s(\"barmode\"),p=0;p0}function S(t){return\"auto\"===t?0:t}function E(t,e){var r=Math.PI/180*e,n=Math.abs(Math.sin(r)),i=Math.abs(Math.cos(r));return{x:t.width*i+t.height*n,y:t.width*n+t.height*i}}function L(t,e,r,n,i,a){var o=!!a.isHorizontal,s=!!a.constrained,l=a.angle||0,c=a.anchor||\"end\",u=\"end\"===c,f=\"start\"===c,h=((a.leftToRight||0)+1)/2,p=1-h,d=i.width,g=i.height,m=Math.abs(e-t),v=Math.abs(n-r),y=m>2*_&&v>2*_?_:0;m-=2*y,v-=2*y;var x=S(l);\"auto\"!==l||d<=m&&g<=v||!(d>m||g>v)||(d>v||g>m)&&d.01?q:function(t,e,r){return r&&t===e?t:Math.abs(t-e)>=2?q(t):t>e?Math.ceil(t):Math.floor(t)};B=G(B,N,D),N=G(N,B,D),j=G(j,U,!D),U=G(U,j,!D)}var Y=A(a.ensureSingle(I,\"path\"),P,m,v);if(Y.style(\"vector-effect\",\"non-scaling-stroke\").attr(\"d\",isNaN((N-B)*(U-j))||V&&t._context.staticPlot?\"M0,0Z\":\"M\"+B+\",\"+j+\"V\"+U+\"H\"+N+\"V\"+j+\"Z\").call(l.setClipUrl,e.layerClipId,t),!P.uniformtext.mode&&R){var W=l.makePointStyleFns(f);l.singlePointStyle(c,Y,f,W,t)}!function(t,e,r,n,i,s,c,f,p,m,v){var w,T=e.xaxis,M=e.yaxis,C=t._fullLayout;function P(e,r,n){return a.ensureSingle(e,\"text\").text(r).attr({class:\"bartext bartext-\"+w,\"text-anchor\":\"middle\",\"data-notex\":1}).call(l.font,n).call(o.convertToTspans,t)}var I=n[0].trace,O=\"h\"===I.orientation,z=function(t,e,r,n,i){var o,s=e[0].trace;o=s.texttemplate?function(t,e,r,n,i){var o=e[0].trace,s=a.castOption(o,r,\"texttemplate\");if(!s)return\"\";var l,c,f,h,p=\"histogram\"===o.type,d=\"waterfall\"===o.type,g=\"funnel\"===o.type,m=\"h\"===o.orientation;m?(l=\"y\",c=i,f=\"x\",h=n):(l=\"x\",c=n,f=\"y\",h=i);function v(t){return u(h,h.c2l(t),!0).text}var y=e[r],x={};x.label=y.p,x.labelLabel=x[l+\"Label\"]=(_=y.p,u(c,c.c2l(_),!0).text);var _;var w=a.castOption(o,y.i,\"text\");(0===w||w)&&(x.text=w);x.value=y.s,x.valueLabel=x[f+\"Label\"]=v(y.s);var T={};b(T,o,y.i),(p||void 0===T.x)&&(T.x=m?x.value:x.label);(p||void 0===T.y)&&(T.y=m?x.label:x.value);(p||void 0===T.xLabel)&&(T.xLabel=m?x.valueLabel:x.labelLabel);(p||void 0===T.yLabel)&&(T.yLabel=m?x.labelLabel:x.valueLabel);d&&(x.delta=+y.rawS||y.s,x.deltaLabel=v(x.delta),x.final=y.v,x.finalLabel=v(x.final),x.initial=x.final-x.delta,x.initialLabel=v(x.initial));g&&(x.value=y.s,x.valueLabel=v(x.value),x.percentInitial=y.begR,x.percentInitialLabel=a.formatPercent(y.begR),x.percentPrevious=y.difR,x.percentPreviousLabel=a.formatPercent(y.difR),x.percentTotal=y.sumR,x.percenTotalLabel=a.formatPercent(y.sumR));var k=a.castOption(o,y.i,\"customdata\");k&&(x.customdata=k);return a.texttemplateString(s,x,t._d3locale,T,x,o._meta||{})}(t,e,r,n,i):s.textinfo?function(t,e,r,n){var i=t[0].trace,o=\"h\"===i.orientation,s=\"waterfall\"===i.type,l=\"funnel\"===i.type;function c(t){return u(o?r:n,+t,!0).text}var f,h=i.textinfo,p=t[e],d=h.split(\"+\"),g=[],m=function(t){return-1!==d.indexOf(t)};m(\"label\")&&g.push((v=t[e].p,u(o?n:r,v,!0).text));var v;m(\"text\")&&(0===(f=a.castOption(i,p.i,\"text\"))||f)&&g.push(f);if(s){var y=+p.rawS||p.s,x=p.v,b=x-y;m(\"initial\")&&g.push(c(b)),m(\"delta\")&&g.push(c(y)),m(\"final\")&&g.push(c(x))}if(l){m(\"value\")&&g.push(c(p.s));var _=0;m(\"percent initial\")&&_++,m(\"percent previous\")&&_++,m(\"percent total\")&&_++;var w=_>1;m(\"percent initial\")&&(f=a.formatPercent(p.begR),w&&(f+=\" of initial\"),g.push(f)),m(\"percent previous\")&&(f=a.formatPercent(p.difR),w&&(f+=\" of previous\"),g.push(f)),m(\"percent total\")&&(f=a.formatPercent(p.sumR),w&&(f+=\" of total\"),g.push(f))}return g.join(\"
\")}(e,r,n,i):g.getValue(s.text,r);return g.coerceString(y,o)}(C,n,i,T,M);w=function(t,e){var r=g.getValue(t.textposition,e);return g.coerceEnumerated(x,r)}(I,i);var D=\"stack\"===m.mode||\"relative\"===m.mode,R=n[i],F=!D||R._outmost;if(!z||\"none\"===w||(R.isBlank||s===c||f===p)&&(\"auto\"===w||\"inside\"===w))return void r.select(\"text\").remove();var B=C.font,N=d.getBarColor(n[i],I),j=d.getInsideTextFont(I,i,B,N),U=d.getOutsideTextFont(I,i,B),V=r.datum();O?\"log\"===T.type&&V.s0<=0&&(s=T.range[0]=G*(Z/Y):Z>=Y*(X/G);G>0&&Y>0&&(J||K||Q)?w=\"inside\":(w=\"outside\",H.remove(),H=null)}else w=\"inside\";if(!H){W=a.ensureUniformFontSize(t,\"outside\"===w?U:j);var $=(H=P(r,z,W)).attr(\"transform\");if(H.attr(\"transform\",\"\"),q=l.bBox(H.node()),G=q.width,Y=q.height,H.attr(\"transform\",$),G<=0||Y<=0)return void H.remove()}var tt,et,rt=I.textangle;\"outside\"===w?(et=\"both\"===I.constraintext||\"outside\"===I.constraintext,tt=function(t,e,r,n,i,a){var o,s=!!a.isHorizontal,l=!!a.constrained,c=a.angle||0,u=i.width,f=i.height,h=Math.abs(e-t),p=Math.abs(n-r);o=s?p>2*_?_:0:h>2*_?_:0;var d=1;l&&(d=s?Math.min(1,p/f):Math.min(1,h/u));var g=S(c),m=E(i,g),v=(s?m.x:m.y)/2,y=(i.left+i.right)/2,x=(i.top+i.bottom)/2,b=(t+e)/2,w=(r+n)/2,T=0,A=0,M=s?k(e,t):k(r,n);s?(b=e-M*o,T=M*v):(w=n+M*o,A=-M*v);return{textX:y,textY:x,targetX:b,targetY:w,anchorX:T,anchorY:A,scale:d,rotate:g}}(s,c,f,p,q,{isHorizontal:O,constrained:et,angle:rt})):(et=\"both\"===I.constraintext||\"inside\"===I.constraintext,tt=L(s,c,f,p,q,{isHorizontal:O,constrained:et,angle:rt,anchor:I.insidetextanchor}));tt.fontSize=W.size,h(\"histogram\"===I.type?\"bar\":I.type,tt,C),R.transform=tt,A(H,C,m,v).attr(\"transform\",a.getTextTransform(tt))}(t,e,I,r,p,B,N,j,U,m,v),e.layerClipId&&l.hideOutsideRangePoint(c,I.select(\"text\"),w,C,f.xcalendar,f.ycalendar)}));var j=!1===f.cliponaxis;l.setClipUrl(c,j?null:e.layerClipId,t)}));c.getComponentMethod(\"errorbars\",\"plot\")(t,I,e,m)},toMoveInsideBar:L}},{\"../../components/color\":366,\"../../components/drawing\":388,\"../../components/fx/helpers\":402,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../../plots/cartesian/axes\":554,\"../../registry\":638,\"./attributes\":648,\"./constants\":650,\"./helpers\":654,\"./style\":662,\"./uniform_text\":664,\"@plotly/d3\":58,\"fast-isnumeric\":190}],660:[function(t,e,r){\"use strict\";function n(t,e,r,n,i){var a=e.c2p(n?t.s0:t.p0,!0),o=e.c2p(n?t.s1:t.p1,!0),s=r.c2p(n?t.p0:t.s0,!0),l=r.c2p(n?t.p1:t.s1,!0);return i?[(a+o)/2,(s+l)/2]:n?[o,(s+l)/2]:[(a+o)/2,l]}e.exports=function(t,e){var r,i=t.cd,a=t.xaxis,o=t.yaxis,s=i[0].trace,l=\"funnel\"===s.type,c=\"h\"===s.orientation,u=[];if(!1===e)for(r=0;r1||0===i.bargap&&0===i.bargroupgap&&!t[0].trace.marker.line.width)&&n.select(this).attr(\"shape-rendering\",\"crispEdges\")})),e.selectAll(\"g.points\").each((function(e){d(n.select(this),e[0].trace,t)})),s.getComponentMethod(\"errorbars\",\"style\")(e)},styleTextPoints:g,styleOnSelect:function(t,e,r){var i=e[0].trace;i.selectedpoints?function(t,e,r){a.selectedPointStyle(t.selectAll(\"path\"),e),function(t,e,r){t.each((function(t){var i,s=n.select(this);if(t.selected){i=o.ensureUniformFontSize(r,m(s,t,e,r));var l=e.selected.textfont&&e.selected.textfont.color;l&&(i.color=l),a.font(s,i)}else a.selectedTextStyle(s,e)}))}(t.selectAll(\"text\"),e,r)}(r,i,t):(d(r,i,t),s.getComponentMethod(\"errorbars\",\"style\")(r))},getInsideTextFont:y,getOutsideTextFont:x,getBarColor:_,resizeText:l}},{\"../../components/color\":366,\"../../components/drawing\":388,\"../../lib\":503,\"../../registry\":638,\"./attributes\":648,\"./helpers\":654,\"./uniform_text\":664,\"@plotly/d3\":58}],663:[function(t,e,r){\"use strict\";var n=t(\"../../components/color\"),i=t(\"../../components/colorscale/helpers\").hasColorscale,a=t(\"../../components/colorscale/defaults\"),o=t(\"../../lib\").coercePattern;e.exports=function(t,e,r,s,l){var c=r(\"marker.color\",s),u=i(t,\"marker\");u&&a(t,e,l,r,{prefix:\"marker.\",cLetter:\"c\"}),r(\"marker.line.color\",n.defaultLine),i(t,\"marker.line\")&&a(t,e,l,r,{prefix:\"marker.line.\",cLetter:\"c\"}),r(\"marker.line.width\"),r(\"marker.opacity\"),o(r,\"marker.pattern\",c,u),r(\"selected.marker.color\"),r(\"unselected.marker.color\")}},{\"../../components/color\":366,\"../../components/colorscale/defaults\":376,\"../../components/colorscale/helpers\":377,\"../../lib\":503}],664:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\");function a(t){return\"_\"+t+\"Text_minsize\"}e.exports={recordMinTextSize:function(t,e,r){if(r.uniformtext.mode){var n=a(t),i=r.uniformtext.minsize,o=e.scale*e.fontSize;e.hide=o g.point\"}e.selectAll(s).each((function(t){var e=t.transform;e&&(e.scale=l&&e.hide?0:o/e.fontSize,n.select(this).select(\"text\").attr(\"transform\",i.getTextTransform(e)))}))}}}},{\"../../lib\":503,\"@plotly/d3\":58}],665:[function(t,e,r){\"use strict\";var n=t(\"../../plots/template_attributes\").hovertemplateAttrs,i=t(\"../../lib/extend\").extendFlat,a=t(\"../scatterpolar/attributes\"),o=t(\"../bar/attributes\");e.exports={r:a.r,theta:a.theta,r0:a.r0,dr:a.dr,theta0:a.theta0,dtheta:a.dtheta,thetaunit:a.thetaunit,base:i({},o.base,{}),offset:i({},o.offset,{}),width:i({},o.width,{}),text:i({},o.text,{}),hovertext:i({},o.hovertext,{}),marker:o.marker,hoverinfo:a.hoverinfo,hovertemplate:n(),selected:o.selected,unselected:o.unselected}},{\"../../lib/extend\":493,\"../../plots/template_attributes\":633,\"../bar/attributes\":648,\"../scatterpolar/attributes\":1e3}],666:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/helpers\").hasColorscale,i=t(\"../../components/colorscale/calc\"),a=t(\"../bar/arrays_to_calcdata\"),o=t(\"../bar/cross_trace_calc\").setGroupPositions,s=t(\"../scatter/calc_selection\"),l=t(\"../../registry\").traceIs,c=t(\"../../lib\").extendFlat;e.exports={calc:function(t,e){for(var r=t._fullLayout,o=e.subplot,l=r[o].radialaxis,c=r[o].angularaxis,u=l.makeCalcdata(e,\"r\"),f=c.makeCalcdata(e,\"theta\"),h=e._length,p=new Array(h),d=u,g=f,m=0;mh.range[1]&&(x+=Math.PI);if(n.getClosest(c,(function(t){return g(y,x,[t.rp0,t.rp1],[t.thetag0,t.thetag1],d)?m+Math.min(1,Math.abs(t.thetag1-t.thetag0)/v)-1+(t.rp1-y)/(t.rp1-t.rp0)-1:1/0}),t),!1!==t.index){var b=c[t.index];t.x0=t.x1=b.ct[0],t.y0=t.y1=b.ct[1];var _=i.extendFlat({},b,{r:b.s,theta:b.p});return o(b,u,t),s(_,u,f,t),t.hovertemplate=u.hovertemplate,t.color=a(u,b),t.xLabelVal=t.yLabelVal=void 0,b.s<0&&(t.idealAlign=\"left\"),[t]}}},{\"../../components/fx\":406,\"../../lib\":503,\"../../plots/polar/helpers\":621,\"../bar/hover\":655,\"../scatterpolar/hover\":1004}],669:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"barpolar\",basePlotModule:t(\"../../plots/polar\"),categories:[\"polar\",\"bar\",\"showLegend\"],attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\"),supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\").calc,crossTraceCalc:t(\"./calc\").crossTraceCalc,plot:t(\"./plot\"),colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"../scatterpolar/format_labels\"),style:t(\"../bar/style\").style,styleOnSelect:t(\"../bar/style\").styleOnSelect,hoverPoints:t(\"./hover\"),selectPoints:t(\"../bar/select\"),meta:{}}},{\"../../plots/polar\":622,\"../bar/select\":660,\"../bar/style\":662,\"../scatter/marker_colorbar\":944,\"../scatterpolar/format_labels\":1003,\"./attributes\":665,\"./calc\":666,\"./defaults\":667,\"./hover\":668,\"./layout_attributes\":670,\"./layout_defaults\":671,\"./plot\":672}],670:[function(t,e,r){\"use strict\";e.exports={barmode:{valType:\"enumerated\",values:[\"stack\",\"overlay\"],dflt:\"stack\",editType:\"calc\"},bargap:{valType:\"number\",dflt:.1,min:0,max:1,editType:\"calc\"}}},{}],671:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e,r){var a,o={};function s(r,o){return n.coerce(t[a]||{},e[a],i,r,o)}for(var l=0;l0?(c=o,u=l):(c=l,u=o);var f=[s.findEnclosingVertexAngles(c,t.vangles)[0],(c+u)/2,s.findEnclosingVertexAngles(u,t.vangles)[1]];return s.pathPolygonAnnulus(n,i,c,u,f,e,r)};return function(t,n,i,o){return a.pathAnnulus(t,n,i,o,e,r)}}(e),p=e.layers.frontplot.select(\"g.barlayer\");a.makeTraceGroups(p,r,\"trace bars\").each((function(){var r=n.select(this),s=a.ensureSingle(r,\"g\",\"points\").selectAll(\"g.point\").data(a.identity);s.enter().append(\"g\").style(\"vector-effect\",\"non-scaling-stroke\").style(\"stroke-miterlimit\",2).classed(\"point\",!0),s.exit().remove(),s.each((function(t){var e,r=n.select(this),o=t.rp0=u.c2p(t.s0),s=t.rp1=u.c2p(t.s1),p=t.thetag0=f.c2g(t.p0),d=t.thetag1=f.c2g(t.p1);if(i(o)&&i(s)&&i(p)&&i(d)&&o!==s&&p!==d){var g=u.c2g(t.s1),m=(p+d)/2;t.ct=[l.c2p(g*Math.cos(m)),c.c2p(g*Math.sin(m))],e=h(o,s,p,d)}else e=\"M0,0Z\";a.ensureSingle(r,\"path\").attr(\"d\",e)})),o.setClipUrl(r,e._hasClipOnAxisFalse?e.clipIds.forTraces:null,t)}))}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../plots/polar/helpers\":621,\"@plotly/d3\":58,\"fast-isnumeric\":190}],673:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\"),i=t(\"../bar/attributes\"),a=t(\"../../components/color/attributes\"),o=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,s=t(\"../../plots/template_attributes\").hovertemplateAttrs,l=t(\"../../lib/extend\").extendFlat,c=n.marker,u=c.line;e.exports={y:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},x:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},x0:{valType:\"any\",editType:\"calc+clearAxisTypes\"},y0:{valType:\"any\",editType:\"calc+clearAxisTypes\"},dx:{valType:\"number\",editType:\"calc\"},dy:{valType:\"number\",editType:\"calc\"},xperiod:n.xperiod,yperiod:n.yperiod,xperiod0:n.xperiod0,yperiod0:n.yperiod0,xperiodalignment:n.xperiodalignment,yperiodalignment:n.yperiodalignment,xhoverformat:o(\"x\"),yhoverformat:o(\"y\"),name:{valType:\"string\",editType:\"calc+clearAxisTypes\"},q1:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},median:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},q3:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},lowerfence:{valType:\"data_array\",editType:\"calc\"},upperfence:{valType:\"data_array\",editType:\"calc\"},notched:{valType:\"boolean\",editType:\"calc\"},notchwidth:{valType:\"number\",min:0,max:.5,dflt:.25,editType:\"calc\"},notchspan:{valType:\"data_array\",editType:\"calc\"},boxpoints:{valType:\"enumerated\",values:[\"all\",\"outliers\",\"suspectedoutliers\",!1],editType:\"calc\"},jitter:{valType:\"number\",min:0,max:1,editType:\"calc\"},pointpos:{valType:\"number\",min:-2,max:2,editType:\"calc\"},boxmean:{valType:\"enumerated\",values:[!0,\"sd\",!1],editType:\"calc\"},mean:{valType:\"data_array\",editType:\"calc\"},sd:{valType:\"data_array\",editType:\"calc\"},orientation:{valType:\"enumerated\",values:[\"v\",\"h\"],editType:\"calc+clearAxisTypes\"},quartilemethod:{valType:\"enumerated\",values:[\"linear\",\"exclusive\",\"inclusive\"],dflt:\"linear\",editType:\"calc\"},width:{valType:\"number\",min:0,dflt:0,editType:\"calc\"},marker:{outliercolor:{valType:\"color\",dflt:\"rgba(0, 0, 0, 0)\",editType:\"style\"},symbol:l({},c.symbol,{arrayOk:!1,editType:\"plot\"}),opacity:l({},c.opacity,{arrayOk:!1,dflt:1,editType:\"style\"}),size:l({},c.size,{arrayOk:!1,editType:\"calc\"}),color:l({},c.color,{arrayOk:!1,editType:\"style\"}),line:{color:l({},u.color,{arrayOk:!1,dflt:a.defaultLine,editType:\"style\"}),width:l({},u.width,{arrayOk:!1,dflt:0,editType:\"style\"}),outliercolor:{valType:\"color\",editType:\"style\"},outlierwidth:{valType:\"number\",min:0,dflt:1,editType:\"style\"},editType:\"style\"},editType:\"plot\"},line:{color:{valType:\"color\",editType:\"style\"},width:{valType:\"number\",min:0,dflt:2,editType:\"style\"},editType:\"plot\"},fillcolor:n.fillcolor,whiskerwidth:{valType:\"number\",min:0,max:1,dflt:.5,editType:\"calc\"},offsetgroup:i.offsetgroup,alignmentgroup:i.alignmentgroup,selected:{marker:n.selected.marker,editType:\"style\"},unselected:{marker:n.unselected.marker,editType:\"style\"},text:l({},n.text,{}),hovertext:l({},n.hovertext,{}),hovertemplate:s({}),hoveron:{valType:\"flaglist\",flags:[\"boxes\",\"points\"],dflt:\"boxes+points\",editType:\"style\"}}},{\"../../components/color/attributes\":365,\"../../lib/extend\":493,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/template_attributes\":633,\"../bar/attributes\":648,\"../scatter/attributes\":926}],674:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"../../plots/cartesian/align_period\"),o=t(\"../../lib\"),s=t(\"../../constants/numerical\").BADNUM,l=o._;e.exports=function(t,e){var r,c,y,x,b,_,w,T=t._fullLayout,k=i.getFromId(t,e.xaxis||\"x\"),A=i.getFromId(t,e.yaxis||\"y\"),M=[],S=\"violin\"===e.type?\"_numViolins\":\"_numBoxes\";\"h\"===e.orientation?(y=k,x=\"x\",b=A,_=\"y\",w=!!e.yperiodalignment):(y=A,x=\"y\",b=k,_=\"x\",w=!!e.xperiodalignment);var E,L,C,P,I,O,z=function(t,e,r,i){var s,l=e+\"0\"in t,c=\"d\"+e in t;if(e in t||l&&c){var u=r.makeCalcdata(t,e);return[a(t,r,e,u).vals,u]}s=l?t[e+\"0\"]:\"name\"in t&&(\"category\"===r.type||n(t.name)&&-1!==[\"linear\",\"log\"].indexOf(r.type)||o.isDateTime(t.name)&&\"date\"===r.type)?t.name:i;for(var f=\"multicategory\"===r.type?r.r2c_just_indices(s):r.d2c(s,0,t[e+\"calendar\"]),h=t._length,p=new Array(h),d=0;dE.uf};if(e._hasPreCompStats){var U=e[x],V=function(t){return y.d2c((e[t]||[])[r])},H=1/0,q=-1/0;for(r=0;r=E.q1&&E.q3>=E.med){var Y=V(\"lowerfence\");E.lf=Y!==s&&Y<=E.q1?Y:p(E,C,P);var W=V(\"upperfence\");E.uf=W!==s&&W>=E.q3?W:d(E,C,P);var X=V(\"mean\");E.mean=X!==s?X:P?o.mean(C,P):(E.q1+E.q3)/2;var Z=V(\"sd\");E.sd=X!==s&&Z>=0?Z:P?o.stdev(C,P,E.mean):E.q3-E.q1,E.lo=g(E),E.uo=m(E);var J=V(\"notchspan\");J=J!==s&&J>0?J:v(E,P),E.ln=E.med-J,E.un=E.med+J;var K=E.lf,Q=E.uf;e.boxpoints&&C.length&&(K=Math.min(K,C[0]),Q=Math.max(Q,C[P-1])),e.notched&&(K=Math.min(K,E.ln),Q=Math.max(Q,E.un)),E.min=K,E.max=Q}else{var $;o.warn([\"Invalid input - make sure that q1 <= median <= q3\",\"q1 = \"+E.q1,\"median = \"+E.med,\"q3 = \"+E.q3].join(\"\\n\")),$=E.med!==s?E.med:E.q1!==s?E.q3!==s?(E.q1+E.q3)/2:E.q1:E.q3!==s?E.q3:0,E.med=$,E.q1=E.q3=$,E.lf=E.uf=$,E.mean=E.sd=$,E.ln=E.un=$,E.min=E.max=$}H=Math.min(H,E.min),q=Math.max(q,E.max),E.pts2=L.filter(j),M.push(E)}}e._extremes[y._id]=i.findExtremes(y,[H,q],{padded:!0})}else{var tt=y.makeCalcdata(e,x),et=function(t,e){for(var r=t.length,n=new Array(r+1),i=0;i=0&&it0){var ut,ft;if((E={}).pos=E[_]=B[r],L=E.pts=nt[r].sort(f),P=(C=E[x]=L.map(h)).length,E.min=C[0],E.max=C[P-1],E.mean=o.mean(C,P),E.sd=o.stdev(C,P,E.mean),E.med=o.interp(C,.5),P%2&&(lt||ct))lt?(ut=C.slice(0,P/2),ft=C.slice(P/2+1)):ct&&(ut=C.slice(0,P/2+1),ft=C.slice(P/2)),E.q1=o.interp(ut,.5),E.q3=o.interp(ft,.5);else E.q1=o.interp(C,.25),E.q3=o.interp(C,.75);E.lf=p(E,C,P),E.uf=d(E,C,P),E.lo=g(E),E.uo=m(E);var ht=v(E,P);E.ln=E.med-ht,E.un=E.med+ht,at=Math.min(at,E.ln),ot=Math.max(ot,E.un),E.pts2=L.filter(j),M.push(E)}e._extremes[y._id]=i.findExtremes(y,e.notched?tt.concat([at,ot]):tt,{padded:!0})}return function(t,e){if(o.isArrayOrTypedArray(e.selectedpoints))for(var r=0;r0?(M[0].t={num:T[S],dPos:N,posLetter:_,valLetter:x,labels:{med:l(t,\"median:\"),min:l(t,\"min:\"),q1:l(t,\"q1:\"),q3:l(t,\"q3:\"),max:l(t,\"max:\"),mean:\"sd\"===e.boxmean?l(t,\"mean \\xb1 \\u03c3:\"):l(t,\"mean:\"),lf:l(t,\"lower fence:\"),uf:l(t,\"upper fence:\")}},T[S]++,M):[{t:{empty:!0}}]};var c={text:\"tx\",hovertext:\"htx\"};function u(t,e,r){for(var n in c)o.isArrayOrTypedArray(e[n])&&(Array.isArray(r)?o.isArrayOrTypedArray(e[n][r[0]])&&(t[c[n]]=e[n][r[0]][r[1]]):t[c[n]]=e[n][r])}function f(t,e){return t.v-e.v}function h(t){return t.v}function p(t,e,r){return 0===r?t.q1:Math.min(t.q1,e[Math.min(o.findBin(2.5*t.q1-1.5*t.q3,e,!0)+1,r-1)])}function d(t,e,r){return 0===r?t.q3:Math.max(t.q3,e[Math.max(o.findBin(2.5*t.q3-1.5*t.q1,e),0)])}function g(t){return 4*t.q1-3*t.q3}function m(t){return 4*t.q3-3*t.q1}function v(t,e){return 0===e?0:1.57*(t.q3-t.q1)/Math.sqrt(e)}},{\"../../constants/numerical\":479,\"../../lib\":503,\"../../plots/cartesian/align_period\":551,\"../../plots/cartesian/axes\":554,\"fast-isnumeric\":190}],675:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/axes\"),i=t(\"../../lib\"),a=t(\"../../plots/cartesian/constraints\").getAxisGroup,o=[\"v\",\"h\"];function s(t,e,r,o){var s,l,c,u=e.calcdata,f=e._fullLayout,h=o._id,p=h.charAt(0),d=[],g=0;for(s=0;s1,b=1-f[t+\"gap\"],_=1-f[t+\"groupgap\"];for(s=0;s0){var q=E.pointpos,G=E.jitter,Y=E.marker.size/2,W=0;q+G>=0&&((W=V*(q+G))>M?(H=!0,j=Y,B=W):W>R&&(j=Y,B=M)),W<=M&&(B=M);var X=0;q-G<=0&&((X=-V*(q-G))>S?(H=!0,U=Y,N=X):X>F&&(U=Y,N=S)),X<=S&&(N=S)}else B=M,N=S;var Z=new Array(c.length);for(l=0;l0?(m=\"v\",v=x>0?Math.min(_,b):Math.min(b)):x>0?(m=\"h\",v=Math.min(_)):v=0;if(v){e._length=v;var S=r(\"orientation\",m);e._hasPreCompStats?\"v\"===S&&0===x?(r(\"x0\",0),r(\"dx\",1)):\"h\"===S&&0===y&&(r(\"y0\",0),r(\"dy\",1)):\"v\"===S&&0===x?r(\"x0\"):\"h\"===S&&0===y&&r(\"y0\"),i.getComponentMethod(\"calendars\",\"handleTraceDefaults\")(t,e,[\"x\",\"y\"],a)}else e.visible=!1}function f(t,e,r,i){var a=i.prefix,o=n.coerce2(t,e,c,\"marker.outliercolor\"),s=r(\"marker.line.outliercolor\"),l=\"outliers\";e._hasPreCompStats?l=\"all\":(o||s)&&(l=\"suspectedoutliers\");var u=r(a+\"points\",l);u?(r(\"jitter\",\"all\"===u?.3:0),r(\"pointpos\",\"all\"===u?-1.5:0),r(\"marker.symbol\"),r(\"marker.opacity\"),r(\"marker.size\"),r(\"marker.color\",e.line.color),r(\"marker.line.color\"),r(\"marker.line.width\"),\"suspectedoutliers\"===u&&(r(\"marker.line.outliercolor\",e.marker.color),r(\"marker.line.outlierwidth\")),r(\"selected.marker.color\"),r(\"unselected.marker.color\"),r(\"selected.marker.size\"),r(\"unselected.marker.size\"),r(\"text\"),r(\"hovertext\")):delete e.marker;var f=r(\"hoveron\");\"all\"!==f&&-1===f.indexOf(\"points\")||r(\"hovertemplate\"),n.coerceSelectionMarkerOpacity(e,r)}e.exports={supplyDefaults:function(t,e,r,i){function s(r,i){return n.coerce(t,e,c,r,i)}if(u(t,e,s,i),!1!==e.visible){o(t,e,i,s),s(\"xhoverformat\"),s(\"yhoverformat\");var l=e._hasPreCompStats;l&&(s(\"lowerfence\"),s(\"upperfence\")),s(\"line.color\",(t.marker||{}).color||r),s(\"line.width\"),s(\"fillcolor\",a.addOpacity(e.line.color,.5));var h=!1;if(l){var p=s(\"mean\"),d=s(\"sd\");p&&p.length&&(h=!0,d&&d.length&&(h=\"sd\"))}s(\"boxmean\",h),s(\"whiskerwidth\"),s(\"width\"),s(\"quartilemethod\");var g=!1;if(l){var m=s(\"notchspan\");m&&m.length&&(g=!0)}else n.validate(t.notchwidth,c.notchwidth)&&(g=!0);s(\"notched\",g)&&s(\"notchwidth\"),f(t,e,s,{prefix:\"box\"})}},crossTraceDefaults:function(t,e){var r,i;function a(t){return n.coerce(i._input,i,c,t)}for(var o=0;ot.lo&&(x.so=!0)}return a}));h.enter().append(\"path\").classed(\"point\",!0),h.exit().remove(),h.call(a.translatePoints,o,s)}function l(t,e,r,a){var o,s,l=e.val,c=e.pos,u=!!c.rangebreaks,f=a.bPos,h=a.bPosPxOffset||0,p=r.boxmean||(r.meanline||{}).visible;Array.isArray(a.bdPos)?(o=a.bdPos[0],s=a.bdPos[1]):(o=a.bdPos,s=a.bdPos);var d=t.selectAll(\"path.mean\").data(\"box\"===r.type&&r.boxmean||\"violin\"===r.type&&r.box.visible&&r.meanline.visible?i.identity:[]);d.enter().append(\"path\").attr(\"class\",\"mean\").style({fill:\"none\",\"vector-effect\":\"non-scaling-stroke\"}),d.exit().remove(),d.each((function(t){var e=c.c2l(t.pos+f,!0),i=c.l2p(e-o)+h,a=c.l2p(e+s)+h,d=u?(i+a)/2:c.l2p(e)+h,g=l.c2p(t.mean,!0),m=l.c2p(t.mean-t.sd,!0),v=l.c2p(t.mean+t.sd,!0);\"h\"===r.orientation?n.select(this).attr(\"d\",\"M\"+g+\",\"+i+\"V\"+a+(\"sd\"===p?\"m0,0L\"+m+\",\"+d+\"L\"+g+\",\"+i+\"L\"+v+\",\"+d+\"Z\":\"\")):n.select(this).attr(\"d\",\"M\"+i+\",\"+g+\"H\"+a+(\"sd\"===p?\"m0,0L\"+d+\",\"+m+\"L\"+i+\",\"+g+\"L\"+d+\",\"+v+\"Z\":\"\"))}))}e.exports={plot:function(t,e,r,a){var c=e.xaxis,u=e.yaxis;i.makeTraceGroups(a,r,\"trace boxes\").each((function(t){var e,r,i=n.select(this),a=t[0],f=a.t,h=a.trace;(f.wdPos=f.bdPos*h.whiskerwidth,!0!==h.visible||f.empty)?i.remove():(\"h\"===h.orientation?(e=u,r=c):(e=c,r=u),o(i,{pos:e,val:r},h,f),s(i,{x:c,y:u},h,f),l(i,{pos:e,val:r},h,f))}))},plotBoxAndWhiskers:o,plotPoints:s,plotBoxMean:l}},{\"../../components/drawing\":388,\"../../lib\":503,\"@plotly/d3\":58}],683:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r,n,i=t.cd,a=t.xaxis,o=t.yaxis,s=[];if(!1===e)for(r=0;r=10)return null;for(var i=1/0,a=-1/0,o=e.length,s=0;s0?Math.floor:Math.ceil,I=L>0?Math.ceil:Math.floor,O=L>0?Math.min:Math.max,z=L>0?Math.max:Math.min,D=P(S+C),R=I(E-C),F=[[f=M(S)]];for(a=D;a*L=0;i--)a[u-i]=t[f][i],o[u-i]=e[f][i];for(s.push({x:a,y:o,bicubic:l}),i=f,a=[],o=[];i>=0;i--)a[f-i]=t[i][0],o[f-i]=e[i][0];return s.push({x:a,y:o,bicubic:c}),s}},{}],697:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/axes\"),i=t(\"../../lib/extend\").extendFlat;e.exports=function(t,e,r){var a,o,s,l,c,u,f,h,p,d,g,m,v,y,x=t[\"_\"+e],b=t[e+\"axis\"],_=b._gridlines=[],w=b._minorgridlines=[],T=b._boundarylines=[],k=t[\"_\"+r],A=t[r+\"axis\"];\"array\"===b.tickmode&&(b.tickvals=x.slice());var M=t._xctrl,S=t._yctrl,E=M[0].length,L=M.length,C=t._a.length,P=t._b.length;n.prepTicks(b),\"array\"===b.tickmode&&delete b.tickvals;var I=b.smoothing?3:1;function O(n){var i,a,o,s,l,c,u,f,p,d,g,m,v=[],y=[],x={};if(\"b\"===e)for(a=t.b2j(n),o=Math.floor(Math.max(0,Math.min(P-2,a))),s=a-o,x.length=P,x.crossLength=C,x.xy=function(e){return t.evalxy([],e,a)},x.dxy=function(e,r){return t.dxydi([],e,o,r,s)},i=0;i0&&(p=t.dxydi([],i-1,o,0,s),v.push(l[0]+p[0]/3),y.push(l[1]+p[1]/3),d=t.dxydi([],i-1,o,1,s),v.push(f[0]-d[0]/3),y.push(f[1]-d[1]/3)),v.push(f[0]),y.push(f[1]),l=f;else for(i=t.a2i(n),c=Math.floor(Math.max(0,Math.min(C-2,i))),u=i-c,x.length=C,x.crossLength=P,x.xy=function(e){return t.evalxy([],i,e)},x.dxy=function(e,r){return t.dxydj([],c,e,u,r)},a=0;a0&&(g=t.dxydj([],c,a-1,u,0),v.push(l[0]+g[0]/3),y.push(l[1]+g[1]/3),m=t.dxydj([],c,a-1,u,1),v.push(f[0]-m[0]/3),y.push(f[1]-m[1]/3)),v.push(f[0]),y.push(f[1]),l=f;return x.axisLetter=e,x.axis=b,x.crossAxis=A,x.value=n,x.constvar=r,x.index=h,x.x=v,x.y=y,x.smoothing=A.smoothing,x}function z(n){var i,a,o,s,l,c=[],u=[],f={};if(f.length=x.length,f.crossLength=k.length,\"b\"===e)for(o=Math.max(0,Math.min(P-2,n)),l=Math.min(1,Math.max(0,n-o)),f.xy=function(e){return t.evalxy([],e,n)},f.dxy=function(e,r){return t.dxydi([],e,o,r,l)},i=0;ix.length-1||_.push(i(z(o),{color:b.gridcolor,width:b.gridwidth}));for(h=u;hx.length-1||g<0||g>x.length-1))for(m=x[s],v=x[g],a=0;ax[x.length-1]||w.push(i(O(d),{color:b.minorgridcolor,width:b.minorgridwidth}));b.startline&&T.push(i(z(0),{color:b.startlinecolor,width:b.startlinewidth})),b.endline&&T.push(i(z(x.length-1),{color:b.endlinecolor,width:b.endlinewidth}))}else{for(l=5e-15,u=(c=[Math.floor((x[x.length-1]-b.tick0)/b.dtick*(1+l)),Math.ceil((x[0]-b.tick0)/b.dtick/(1+l))].sort((function(t,e){return t-e})))[0],f=c[1],h=u;h<=f;h++)p=b.tick0+b.dtick*h,_.push(i(O(p),{color:b.gridcolor,width:b.gridwidth}));for(h=u-1;hx[x.length-1]||w.push(i(O(d),{color:b.minorgridcolor,width:b.minorgridwidth}));b.startline&&T.push(i(O(x[0]),{color:b.startlinecolor,width:b.startlinewidth})),b.endline&&T.push(i(O(x[x.length-1]),{color:b.endlinecolor,width:b.endlinewidth}))}}},{\"../../lib/extend\":493,\"../../plots/cartesian/axes\":554}],698:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/axes\"),i=t(\"../../lib/extend\").extendFlat;e.exports=function(t,e){var r,a,o,s=e._labels=[],l=e._gridlines;for(r=0;re.length&&(t=t.slice(0,e.length)):t=[],i=0;i90&&(p-=180,l=-l),{angle:p,flip:l,p:t.c2p(n,e,r),offsetMultplier:c}}},{}],712:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../components/drawing\"),a=t(\"./map_1d_array\"),o=t(\"./makepath\"),s=t(\"./orient_text\"),l=t(\"../../lib/svg_text_utils\"),c=t(\"../../lib\"),u=c.strRotate,f=c.strTranslate,h=t(\"../../constants/alignment\");function p(t,e,r,i,s,l){var c=\"const-\"+s+\"-lines\",u=r.selectAll(\".\"+c).data(l);u.enter().append(\"path\").classed(c,!0).style(\"vector-effect\",\"non-scaling-stroke\"),u.each((function(r){var i=r,s=i.x,l=i.y,c=a([],s,t.c2p),u=a([],l,e.c2p),f=\"M\"+o(c,u,i.smoothing);n.select(this).attr(\"d\",f).style(\"stroke-width\",i.width).style(\"stroke\",i.color).style(\"fill\",\"none\")})),u.exit().remove()}function d(t,e,r,a,o,c,h,p){var d=c.selectAll(\"text.\"+p).data(h);d.enter().append(\"text\").classed(p,!0);var g=0,m={};return d.each((function(o,c){var h;if(\"auto\"===o.axis.tickangle)h=s(a,e,r,o.xy,o.dxy);else{var p=(o.axis.tickangle+180)*Math.PI/180;h=s(a,e,r,o.xy,[Math.cos(p),Math.sin(p)])}c||(m={angle:h.angle,flip:h.flip});var d=(o.endAnchor?-1:1)*h.flip,v=n.select(this).attr({\"text-anchor\":d>0?\"start\":\"end\",\"data-notex\":1}).call(i.font,o.font).text(o.text).call(l.convertToTspans,t),y=i.bBox(this);v.attr(\"transform\",f(h.p[0],h.p[1])+u(h.angle)+f(o.axis.labelpadding*d,.3*y.height)),g=Math.max(g,y.width+o.axis.labelpadding)})),d.exit().remove(),m.maxExtent=g,m}e.exports=function(t,e,r,i){var l=e.xaxis,u=e.yaxis,f=t._fullLayout._clips;c.makeTraceGroups(i,r,\"trace\").each((function(e){var r=n.select(this),i=e[0],h=i.trace,g=h.aaxis,m=h.baxis,y=c.ensureSingle(r,\"g\",\"minorlayer\"),x=c.ensureSingle(r,\"g\",\"majorlayer\"),b=c.ensureSingle(r,\"g\",\"boundarylayer\"),_=c.ensureSingle(r,\"g\",\"labellayer\");r.style(\"opacity\",h.opacity),p(l,u,x,g,\"a\",g._gridlines),p(l,u,x,m,\"b\",m._gridlines),p(l,u,y,g,\"a\",g._minorgridlines),p(l,u,y,m,\"b\",m._minorgridlines),p(l,u,b,g,\"a-boundary\",g._boundarylines),p(l,u,b,m,\"b-boundary\",m._boundarylines);var w=d(t,l,u,h,i,_,g._labels,\"a-label\"),T=d(t,l,u,h,i,_,m._labels,\"b-label\");!function(t,e,r,n,i,a,o,l){var u,f,h,p,d=c.aggNums(Math.min,null,r.a),g=c.aggNums(Math.max,null,r.a),m=c.aggNums(Math.min,null,r.b),y=c.aggNums(Math.max,null,r.b);u=.5*(d+g),f=m,h=r.ab2xy(u,f,!0),p=r.dxyda_rough(u,f),void 0===o.angle&&c.extendFlat(o,s(r,i,a,h,r.dxydb_rough(u,f)));v(t,e,r,n,h,p,r.aaxis,i,a,o,\"a-title\"),u=d,f=.5*(m+y),h=r.ab2xy(u,f,!0),p=r.dxydb_rough(u,f),void 0===l.angle&&c.extendFlat(l,s(r,i,a,h,r.dxyda_rough(u,f)));v(t,e,r,n,h,p,r.baxis,i,a,l,\"b-title\")}(t,_,h,i,l,u,w,T),function(t,e,r,n,i){var s,l,u,f,h=r.select(\"#\"+t._clipPathId);h.size()||(h=r.append(\"clipPath\").classed(\"carpetclip\",!0));var p=c.ensureSingle(h,\"path\",\"carpetboundary\"),d=e.clipsegments,g=[];for(f=0;f90&&y<270,b=n.select(this);b.text(h.title.text).call(l.convertToTspans,t),x&&(_=(-l.lineCount(b)+m)*g*a-_),b.attr(\"transform\",f(e.p[0],e.p[1])+u(e.angle)+f(0,_)).attr(\"text-anchor\",\"middle\").call(i.font,h.title.font)})),b.exit().remove()}},{\"../../components/drawing\":388,\"../../constants/alignment\":471,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"./makepath\":709,\"./map_1d_array\":710,\"./orient_text\":711,\"@plotly/d3\":58}],713:[function(t,e,r){\"use strict\";var n=t(\"./constants\"),i=t(\"../../lib/search\").findBin,a=t(\"./compute_control_points\"),o=t(\"./create_spline_evaluator\"),s=t(\"./create_i_derivative_evaluator\"),l=t(\"./create_j_derivative_evaluator\");e.exports=function(t){var e=t._a,r=t._b,c=e.length,u=r.length,f=t.aaxis,h=t.baxis,p=e[0],d=e[c-1],g=r[0],m=r[u-1],v=e[e.length-1]-e[0],y=r[r.length-1]-r[0],x=v*n.RELATIVE_CULL_TOLERANCE,b=y*n.RELATIVE_CULL_TOLERANCE;p-=x,d+=x,g-=b,m+=b,t.isVisible=function(t,e){return t>p&&tg&&ed||em},t.setScale=function(){var e=t._x,r=t._y,n=a(t._xctrl,t._yctrl,e,r,f.smoothing,h.smoothing);t._xctrl=n[0],t._yctrl=n[1],t.evalxy=o([t._xctrl,t._yctrl],c,u,f.smoothing,h.smoothing),t.dxydi=s([t._xctrl,t._yctrl],f.smoothing,h.smoothing),t.dxydj=l([t._xctrl,t._yctrl],f.smoothing,h.smoothing)},t.i2a=function(t){var r=Math.max(0,Math.floor(t[0]),c-2),n=t[0]-r;return(1-n)*e[r]+n*e[r+1]},t.j2b=function(t){var e=Math.max(0,Math.floor(t[1]),c-2),n=t[1]-e;return(1-n)*r[e]+n*r[e+1]},t.ij2ab=function(e){return[t.i2a(e[0]),t.j2b(e[1])]},t.a2i=function(t){var r=Math.max(0,Math.min(i(t,e),c-2)),n=e[r],a=e[r+1];return Math.max(0,Math.min(c-1,r+(t-n)/(a-n)))},t.b2j=function(t){var e=Math.max(0,Math.min(i(t,r),u-2)),n=r[e],a=r[e+1];return Math.max(0,Math.min(u-1,e+(t-n)/(a-n)))},t.ab2ij=function(e){return[t.a2i(e[0]),t.b2j(e[1])]},t.i2c=function(e,r){return t.evalxy([],e,r)},t.ab2xy=function(n,i,a){if(!a&&(ne[c-1]|ir[u-1]))return[!1,!1];var o=t.a2i(n),s=t.b2j(i),l=t.evalxy([],o,s);if(a){var f,h,p,d,g=0,m=0,v=[];ne[c-1]?(f=c-2,h=1,g=(n-e[c-1])/(e[c-1]-e[c-2])):h=o-(f=Math.max(0,Math.min(c-2,Math.floor(o)))),ir[u-1]?(p=u-2,d=1,m=(i-r[u-1])/(r[u-1]-r[u-2])):d=s-(p=Math.max(0,Math.min(u-2,Math.floor(s)))),g&&(t.dxydi(v,f,p,h,d),l[0]+=v[0]*g,l[1]+=v[1]*g),m&&(t.dxydj(v,f,p,h,d),l[0]+=v[0]*m,l[1]+=v[1]*m)}return l},t.c2p=function(t,e,r){return[e.c2p(t[0]),r.c2p(t[1])]},t.p2x=function(t,e,r){return[e.p2c(t[0]),r.p2c(t[1])]},t.dadi=function(t){var r=Math.max(0,Math.min(e.length-2,t));return e[r+1]-e[r]},t.dbdj=function(t){var e=Math.max(0,Math.min(r.length-2,t));return r[e+1]-r[e]},t.dxyda=function(e,r,n,i){var a=t.dxydi(null,e,r,n,i),o=t.dadi(e,n);return[a[0]/o,a[1]/o]},t.dxydb=function(e,r,n,i){var a=t.dxydj(null,e,r,n,i),o=t.dbdj(r,i);return[a[0]/o,a[1]/o]},t.dxyda_rough=function(e,r,n){var i=v*(n||.1),a=t.ab2xy(e+i,r,!0),o=t.ab2xy(e-i,r,!0);return[.5*(a[0]-o[0])/i,.5*(a[1]-o[1])/i]},t.dxydb_rough=function(e,r,n){var i=y*(n||.1),a=t.ab2xy(e,r+i,!0),o=t.ab2xy(e,r-i,!0);return[.5*(a[0]-o[0])/i,.5*(a[1]-o[1])/i]},t.dpdx=function(t){return t._m},t.dpdy=function(t){return t._m}}},{\"../../lib/search\":523,\"./compute_control_points\":701,\"./constants\":702,\"./create_i_derivative_evaluator\":703,\"./create_j_derivative_evaluator\":704,\"./create_spline_evaluator\":705}],714:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t,e,r){var i,a,o,s=[],l=[],c=t[0].length,u=t.length;function f(e,r){var n,i=0,a=0;return e>0&&void 0!==(n=t[r][e-1])&&(a++,i+=n),e0&&void 0!==(n=t[r-1][e])&&(a++,i+=n),r0&&a0&&i1e-5);return n.log(\"Smoother converged to\",k,\"after\",A,\"iterations\"),t}},{\"../../lib\":503}],715:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").isArray1D;e.exports=function(t,e,r){var i=r(\"x\"),a=i&&i.length,o=r(\"y\"),s=o&&o.length;if(!a&&!s)return!1;if(e._cheater=!i,a&&!n(i)||s&&!n(o))e._length=null;else{var l=a?i.length:1/0;s&&(l=Math.min(l,o.length)),e.a&&e.a.length&&(l=Math.min(l,e.a.length)),e.b&&e.b.length&&(l=Math.min(l,e.b.length)),e._length=l}return!0}},{\"../../lib\":503}],716:[function(t,e,r){\"use strict\";var n=t(\"../../plots/template_attributes\").hovertemplateAttrs,i=t(\"../scattergeo/attributes\"),a=t(\"../../components/colorscale/attributes\"),o=t(\"../../plots/attributes\"),s=t(\"../../components/color/attributes\").defaultLine,l=t(\"../../lib/extend\").extendFlat,c=i.marker.line;e.exports=l({locations:{valType:\"data_array\",editType:\"calc\"},locationmode:i.locationmode,z:{valType:\"data_array\",editType:\"calc\"},geojson:l({},i.geojson,{}),featureidkey:i.featureidkey,text:l({},i.text,{}),hovertext:l({},i.hovertext,{}),marker:{line:{color:l({},c.color,{dflt:s}),width:l({},c.width,{dflt:1}),editType:\"calc\"},opacity:{valType:\"number\",arrayOk:!0,min:0,max:1,dflt:1,editType:\"style\"},editType:\"calc\"},selected:{marker:{opacity:i.selected.marker.opacity,editType:\"plot\"},editType:\"plot\"},unselected:{marker:{opacity:i.unselected.marker.opacity,editType:\"plot\"},editType:\"plot\"},hoverinfo:l({},o.hoverinfo,{editType:\"calc\",flags:[\"location\",\"z\",\"text\",\"name\"]}),hovertemplate:n(),showlegend:l({},o.showlegend,{dflt:!1})},a(\"\",{cLetter:\"z\",editTypeOverride:\"calc\"}))},{\"../../components/color/attributes\":365,\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/template_attributes\":633,\"../scattergeo/attributes\":968}],717:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../constants/numerical\").BADNUM,a=t(\"../../components/colorscale/calc\"),o=t(\"../scatter/arrays_to_calcdata\"),s=t(\"../scatter/calc_selection\");function l(t){return t&&\"string\"==typeof t}e.exports=function(t,e){var r,c=e._length,u=new Array(c);r=e.geojson?function(t){return l(t)||n(t)}:l;for(var f=0;f\")}(t,f,o),[t]}},{\"../../lib\":503,\"../../plots/cartesian/axes\":554,\"./attributes\":716}],721:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../heatmap/colorbar\"),calc:t(\"./calc\"),calcGeoJSON:t(\"./plot\").calcGeoJSON,plot:t(\"./plot\").plot,style:t(\"./style\").style,styleOnSelect:t(\"./style\").styleOnSelect,hoverPoints:t(\"./hover\"),eventData:t(\"./event_data\"),selectPoints:t(\"./select\"),moduleType:\"trace\",name:\"choropleth\",basePlotModule:t(\"../../plots/geo\"),categories:[\"geo\",\"noOpacity\",\"showLegend\"],meta:{}}},{\"../../plots/geo\":589,\"../heatmap/colorbar\":795,\"./attributes\":716,\"./calc\":717,\"./defaults\":718,\"./event_data\":719,\"./hover\":720,\"./plot\":722,\"./select\":723,\"./style\":724}],722:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../lib/geo_location_utils\"),o=t(\"../../lib/topojson_utils\").getTopojsonFeatures,s=t(\"../../plots/cartesian/autorange\").findExtremes,l=t(\"./style\").style;e.exports={calcGeoJSON:function(t,e){for(var r=t[0].trace,n=e[r.geo],i=n._subplot,l=r.locationmode,c=r._length,u=\"geojson-id\"===l?a.extractTraceFeature(t):o(r,i.topojson),f=[],h=[],p=0;p=0;n--){var i=r[n].id;if(\"string\"==typeof i&&0===i.indexOf(\"water\"))for(var a=n+1;a=0;r--)t.removeLayer(e[r][1])},s.dispose=function(){var t=this.subplot.map;this._removeLayers(),t.removeSource(this.sourceId)},e.exports=function(t,e){var r=e[0].trace,i=new o(t,r.uid),a=i.sourceId,s=n(e),l=i.below=t.belowLookup[\"trace-\"+r.uid];return t.map.addSource(a,{type:\"geojson\",data:s.geojson}),i._addLayers(s,l),e[0].trace._glTrace=i,i}},{\"../../plots/mapbox/constants\":611,\"./convert\":726}],730:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/attributes\"),i=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,a=t(\"../../plots/template_attributes\").hovertemplateAttrs,o=t(\"../mesh3d/attributes\"),s=t(\"../../plots/attributes\"),l=t(\"../../lib/extend\").extendFlat,c={x:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},y:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},z:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},u:{valType:\"data_array\",editType:\"calc\"},v:{valType:\"data_array\",editType:\"calc\"},w:{valType:\"data_array\",editType:\"calc\"},sizemode:{valType:\"enumerated\",values:[\"scaled\",\"absolute\"],editType:\"calc\",dflt:\"scaled\"},sizeref:{valType:\"number\",editType:\"calc\",min:0},anchor:{valType:\"enumerated\",editType:\"calc\",values:[\"tip\",\"tail\",\"cm\",\"center\"],dflt:\"cm\"},text:{valType:\"string\",dflt:\"\",arrayOk:!0,editType:\"calc\"},hovertext:{valType:\"string\",dflt:\"\",arrayOk:!0,editType:\"calc\"},hovertemplate:a({editType:\"calc\"},{keys:[\"norm\"]}),uhoverformat:i(\"u\",1),vhoverformat:i(\"v\",1),whoverformat:i(\"w\",1),xhoverformat:i(\"x\"),yhoverformat:i(\"y\"),zhoverformat:i(\"z\"),showlegend:l({},s.showlegend,{dflt:!1})};l(c,n(\"\",{colorAttr:\"u/v/w norm\",showScaleDflt:!0,editTypeOverride:\"calc\"}));[\"opacity\",\"lightposition\",\"lighting\"].forEach((function(t){c[t]=o[t]})),c.hoverinfo=l({},s.hoverinfo,{editType:\"calc\",flags:[\"x\",\"y\",\"z\",\"u\",\"v\",\"w\",\"norm\",\"text\",\"name\"],dflt:\"x+y+z+norm+text+name\"}),c.transforms=void 0,e.exports=c},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/template_attributes\":633,\"../mesh3d/attributes\":867}],731:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/calc\");e.exports=function(t,e){for(var r=e.u,i=e.v,a=e.w,o=Math.min(e.x.length,e.y.length,e.z.length,r.length,i.length,a.length),s=-1/0,l=1/0,c=0;co.level||o.starts.length&&a===o.level)}break;case\"constraint\":if(n.prefixBoundary=!1,n.edgepaths.length)return;var s=n.x.length,l=n.y.length,c=-1/0,u=1/0;for(r=0;r\":p>c&&(n.prefixBoundary=!0);break;case\"<\":(pc||n.starts.length&&h===u)&&(n.prefixBoundary=!0);break;case\"][\":f=Math.min(p[0],p[1]),h=Math.max(p[0],p[1]),fc&&(n.prefixBoundary=!0)}}}},{}],738:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale\"),i=t(\"./make_color_map\"),a=t(\"./end_plus\");e.exports={min:\"zmin\",max:\"zmax\",calc:function(t,e,r){var o=e.contours,s=e.line,l=o.size||1,c=o.coloring,u=i(e,{isColorbar:!0});if(\"heatmap\"===c){var f=n.extractOpts(e);r._fillgradient=f.reversescale?n.flipScale(f.colorscale):f.colorscale,r._zrange=[f.min,f.max]}else\"fill\"===c&&(r._fillcolor=u);r._line={color:\"lines\"===c?u:s.color,width:!1!==o.showlines?s.width:0,dash:s.dash},r._levels={start:o.start,end:a(o),size:l}}}},{\"../../components/colorscale\":378,\"./end_plus\":746,\"./make_color_map\":751}],739:[function(t,e,r){\"use strict\";e.exports={BOTTOMSTART:[1,9,13,104,713],TOPSTART:[4,6,7,104,713],LEFTSTART:[8,12,14,208,1114],RIGHTSTART:[2,3,11,208,1114],NEWDELTA:[null,[-1,0],[0,-1],[-1,0],[1,0],null,[0,-1],[-1,0],[0,1],[0,1],null,[0,1],[1,0],[1,0],[0,-1]],CHOOSESADDLE:{104:[4,1],208:[2,8],713:[7,13],1114:[11,14]},SADDLEREMAINDER:{1:4,2:8,4:1,7:13,8:2,11:14,13:7,14:11},LABELDISTANCE:2,LABELINCREASE:10,LABELMIN:3,LABELMAX:10,LABELOPTIMIZER:{EDGECOST:1,ANGLECOST:1,NEIGHBORCOST:5,SAMELEVELFACTOR:10,SAMELEVELDISTANCE:5,MAXCOST:100,INITIALSEARCHPOINTS:10,ITERATIONS:5}}},{}],740:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"./label_defaults\"),a=t(\"../../components/color\"),o=a.addOpacity,s=a.opacity,l=t(\"../../constants/filter_ops\"),c=l.CONSTRAINT_REDUCTION,u=l.COMPARISON_OPS2;e.exports=function(t,e,r,a,l,f){var h,p,d,g=e.contours,m=r(\"contours.operation\");(g._operation=c[m],function(t,e){var r;-1===u.indexOf(e.operation)?(t(\"contours.value\",[0,1]),Array.isArray(e.value)?e.value.length>2?e.value=e.value.slice(2):0===e.length?e.value=[0,1]:e.length<2?(r=parseFloat(e.value[0]),e.value=[r,r+1]):e.value=[parseFloat(e.value[0]),parseFloat(e.value[1])]:n(e.value)&&(r=parseFloat(e.value),e.value=[r,r+1])):(t(\"contours.value\",0),n(e.value)||(Array.isArray(e.value)?e.value=parseFloat(e.value[0]):e.value=0))}(r,g),\"=\"===m?h=g.showlines=!0:(h=r(\"contours.showlines\"),d=r(\"fillcolor\",o((t.line||{}).color||l,.5))),h)&&(p=r(\"line.color\",d&&s(d)?o(e.fillcolor,1):l),r(\"line.width\",2),r(\"line.dash\"));r(\"line.smoothing\"),i(r,a,p,f)}},{\"../../components/color\":366,\"../../constants/filter_ops\":475,\"./label_defaults\":750,\"fast-isnumeric\":190}],741:[function(t,e,r){\"use strict\";var n=t(\"../../constants/filter_ops\"),i=t(\"fast-isnumeric\");function a(t,e){var r,a=Array.isArray(e);function o(t){return i(t)?+t:null}return-1!==n.COMPARISON_OPS2.indexOf(t)?r=o(a?e[0]:e):-1!==n.INTERVAL_OPS.indexOf(t)?r=a?[o(e[0]),o(e[1])]:[o(e),o(e)]:-1!==n.SET_OPS.indexOf(t)&&(r=a?e.map(o):[o(e)]),r}function o(t){return function(e){e=a(t,e);var r=Math.min(e[0],e[1]),n=Math.max(e[0],e[1]);return{start:r,end:n,size:n-r}}}function s(t){return function(e){return{start:e=a(t,e),end:1/0,size:1/0}}}e.exports={\"[]\":o(\"[]\"),\"][\":o(\"][\"),\">\":s(\">\"),\"<\":s(\"<\"),\"=\":s(\"=\")}},{\"../../constants/filter_ops\":475,\"fast-isnumeric\":190}],742:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,n){var i=n(\"contours.start\"),a=n(\"contours.end\"),o=!1===i||!1===a,s=r(\"contours.size\");!(o?e.autocontour=!0:r(\"autocontour\",!1))&&s||r(\"ncontours\")}},{}],743:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");function i(t){return n.extendFlat({},t,{edgepaths:n.extendDeep([],t.edgepaths),paths:n.extendDeep([],t.paths),starts:n.extendDeep([],t.starts)})}e.exports=function(t,e){var r,a,o,s=function(t){return t.reverse()},l=function(t){return t};switch(e){case\"=\":case\"<\":return t;case\">\":for(1!==t.length&&n.warn(\"Contour data invalid for the specified inequality operation.\"),a=t[0],r=0;r1e3){n.warn(\"Too many contours, clipping at 1000\",t);break}return l}},{\"../../lib\":503,\"./constraint_mapping\":741,\"./end_plus\":746}],746:[function(t,e,r){\"use strict\";e.exports=function(t){return t.end+t.size/1e6}},{}],747:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./constants\");function a(t,e,r,n){return Math.abs(t[0]-e[0])20&&e?208===t||1114===t?n=0===r[0]?1:-1:a=0===r[1]?1:-1:-1!==i.BOTTOMSTART.indexOf(t)?a=1:-1!==i.LEFTSTART.indexOf(t)?n=1:-1!==i.TOPSTART.indexOf(t)?a=-1:n=-1;return[n,a]}(f,r,e),p=[s(t,e,[-h[0],-h[1]])],d=t.z.length,g=t.z[0].length,m=e.slice(),v=h.slice();for(c=0;c<1e4;c++){if(f>20?(f=i.CHOOSESADDLE[f][(h[0]||h[1])<0?0:1],t.crossings[u]=i.SADDLEREMAINDER[f]):delete t.crossings[u],!(h=i.NEWDELTA[f])){n.log(\"Found bad marching index:\",f,e,t.level);break}p.push(s(t,e,h)),e[0]+=h[0],e[1]+=h[1],u=e.join(\",\"),a(p[p.length-1],p[p.length-2],o,l)&&p.pop();var y=h[0]&&(e[0]<0||e[0]>g-2)||h[1]&&(e[1]<0||e[1]>d-2);if(e[0]===m[0]&&e[1]===m[1]&&h[0]===v[0]&&h[1]===v[1]||r&&y)break;f=t.crossings[u]}1e4===c&&n.log(\"Infinite loop in contour?\");var x,b,_,w,T,k,A,M,S,E,L,C,P,I,O,z=a(p[0],p[p.length-1],o,l),D=0,R=.2*t.smoothing,F=[],B=0;for(c=1;c=B;c--)if((x=F[c])=B&&x+F[b]M&&S--,t.edgepaths[S]=L.concat(p,E));break}V||(t.edgepaths[M]=p.concat(E))}for(M=0;Mt?0:1)+(e[0][1]>t?0:2)+(e[1][1]>t?0:4)+(e[1][0]>t?0:8);return 5===r||10===r?t>(e[0][0]+e[0][1]+e[1][0]+e[1][1])/4?5===r?713:1114:5===r?104:208:15===r?0:r}e.exports=function(t){var e,r,a,o,s,l,c,u,f,h=t[0].z,p=h.length,d=h[0].length,g=2===p||2===d;for(r=0;r=0&&(n=y,s=l):Math.abs(r[1]-n[1])<.01?Math.abs(r[1]-y[1])<.01&&(y[0]-r[0])*(n[0]-y[0])>=0&&(n=y,s=l):i.log(\"endpt to newendpt is not vert. or horz.\",r,n,y)}if(r=n,s>=0)break;f+=\"L\"+n}if(s===t.edgepaths.length){i.log(\"unclosed perimeter path\");break}h=s,(d=-1===p.indexOf(h))&&(h=p[0],f+=\"Z\")}for(h=0;hn.center?n.right-s:s-n.left)/(u+Math.abs(Math.sin(c)*o)),p=(l>n.middle?n.bottom-l:l-n.top)/(Math.abs(f)+Math.cos(c)*o);if(h<1||p<1)return 1/0;var d=v.EDGECOST*(1/(h-1)+1/(p-1));d+=v.ANGLECOST*c*c;for(var g=s-u,m=l-f,y=s+u,x=l+f,b=0;b2*v.MAXCOST)break;p&&(s/=2),l=(o=c-s/2)+1.5*s}if(h<=v.MAXCOST)return u},r.addLabelData=function(t,e,r,n){var i=e.fontSize,a=e.width+i/3,o=Math.max(0,e.height-i/3),s=t.x,l=t.y,c=t.theta,u=Math.sin(c),f=Math.cos(c),h=function(t,e){return[s+t*f-e*u,l+t*u+e*f]},p=[h(-a/2,-o/2),h(-a/2,o/2),h(a/2,o/2),h(a/2,-o/2)];r.push({text:e.text,x:s,y:l,dy:e.dy,theta:c,level:e.level,width:a,height:o}),n.push(p)},r.drawLabels=function(t,e,r,a,o){var l=t.selectAll(\"text\").data(e,(function(t){return t.text+\",\"+t.x+\",\"+t.y+\",\"+t.theta}));if(l.exit().remove(),l.enter().append(\"text\").attr({\"data-notex\":1,\"text-anchor\":\"middle\"}).each((function(t){var e=t.x+Math.sin(t.theta)*t.dy,i=t.y-Math.cos(t.theta)*t.dy;n.select(this).text(t.text).attr({x:e,y:i,transform:\"rotate(\"+180*t.theta/Math.PI+\" \"+e+\" \"+i+\")\"}).call(s.convertToTspans,r)})),o){for(var c=\"\",u=0;ur.end&&(r.start=r.end=(r.start+r.end)/2),t._input.contours||(t._input.contours={}),i.extendFlat(t._input.contours,{start:r.start,end:r.end,size:r.size}),t._input.autocontour=!0}else if(\"constraint\"!==r.type){var c,u=r.start,f=r.end,h=t._input.contours;if(u>f&&(r.start=h.start=f,f=r.end=h.end=u,u=r.start),!(r.size>0))c=u===f?1:a(u,f,t.ncontours).dtick,h.size=r.size=c}}},{\"../../lib\":503,\"../../plots/cartesian/axes\":554}],755:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../components/drawing\"),a=t(\"../heatmap/style\"),o=t(\"./make_color_map\");e.exports=function(t){var e=n.select(t).selectAll(\"g.contour\");e.style(\"opacity\",(function(t){return t[0].trace.opacity})),e.each((function(t){var e=n.select(this),r=t[0].trace,a=r.contours,s=r.line,l=a.size||1,c=a.start,u=\"constraint\"===a.type,f=!u&&\"lines\"===a.coloring,h=!u&&\"fill\"===a.coloring,p=f||h?o(r):null;e.selectAll(\"g.contourlevel\").each((function(t){n.select(this).selectAll(\"path\").call(i.lineGroupStyle,s.width,f?p(t.level):s.color,s.dash)}));var d=a.labelfont;if(e.selectAll(\"g.contourlabels text\").each((function(t){i.font(n.select(this),{family:d.family,size:d.size,color:d.color||(f?p(t.level):s.color)})})),u)e.selectAll(\"g.contourfill path\").style(\"fill\",r.fillcolor);else if(h){var g;e.selectAll(\"g.contourfill path\").style(\"fill\",(function(t){return void 0===g&&(g=t.level),p(t.level+.5*l)})),void 0===g&&(g=c),e.selectAll(\"g.contourbg path\").style(\"fill\",p(g-.5*l))}})),a(t)}},{\"../../components/drawing\":388,\"../heatmap/style\":805,\"./make_color_map\":751,\"@plotly/d3\":58}],756:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/defaults\"),i=t(\"./label_defaults\");e.exports=function(t,e,r,a,o){var s,l=r(\"contours.coloring\"),c=\"\";\"fill\"===l&&(s=r(\"contours.showlines\")),!1!==s&&(\"lines\"!==l&&(c=r(\"line.color\",\"#000\")),r(\"line.width\",.5),r(\"line.dash\")),\"none\"!==l&&(!0!==t.showlegend&&(e.showlegend=!1),e._dfltShowLegend=!1,n(t,e,a,r,{prefix:\"\",cLetter:\"z\"})),r(\"line.smoothing\"),i(r,a,c,o)}},{\"../../components/colorscale/defaults\":376,\"./label_defaults\":750}],757:[function(t,e,r){\"use strict\";var n=t(\"../heatmap/attributes\"),i=t(\"../contour/attributes\"),a=t(\"../../components/colorscale/attributes\"),o=t(\"../../lib/extend\").extendFlat,s=i.contours;e.exports=o({carpet:{valType:\"string\",editType:\"calc\"},z:n.z,a:n.x,a0:n.x0,da:n.dx,b:n.y,b0:n.y0,db:n.dy,text:n.text,hovertext:n.hovertext,transpose:n.transpose,atype:n.xtype,btype:n.ytype,fillcolor:i.fillcolor,autocontour:i.autocontour,ncontours:i.ncontours,contours:{type:s.type,start:s.start,end:s.end,size:s.size,coloring:{valType:\"enumerated\",values:[\"fill\",\"lines\",\"none\"],dflt:\"fill\",editType:\"calc\"},showlines:s.showlines,showlabels:s.showlabels,labelfont:s.labelfont,labelformat:s.labelformat,operation:s.operation,value:s.value,editType:\"calc\",impliedEdits:{autocontour:!1}},line:{color:i.line.color,width:i.line.width,dash:i.line.dash,smoothing:i.line.smoothing,editType:\"plot\"},transforms:void 0},a(\"\",{cLetter:\"z\",autoColorDflt:!1}))},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../contour/attributes\":735,\"../heatmap/attributes\":792}],758:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/calc\"),i=t(\"../../lib\"),a=t(\"../heatmap/convert_column_xyz\"),o=t(\"../heatmap/clean_2d_array\"),s=t(\"../heatmap/interp2d\"),l=t(\"../heatmap/find_empties\"),c=t(\"../heatmap/make_bound_array\"),u=t(\"./defaults\"),f=t(\"../carpet/lookup_carpetid\"),h=t(\"../contour/set_contours\");e.exports=function(t,e){var r=e._carpetTrace=f(t,e);if(r&&r.visible&&\"legendonly\"!==r.visible){if(!e.a||!e.b){var p=t.data[r.index],d=t.data[e.index];d.a||(d.a=p.a),d.b||(d.b=p.b),u(d,e,e._defaultColor,t._fullLayout)}var g=function(t,e){var r,u,f,h,p,d,g,m=e._carpetTrace,v=m.aaxis,y=m.baxis;v._minDtick=0,y._minDtick=0,i.isArray1D(e.z)&&a(e,v,y,\"a\",\"b\",[\"z\"]);r=e._a=e._a||e.a,h=e._b=e._b||e.b,r=r?v.makeCalcdata(e,\"_a\"):[],h=h?y.makeCalcdata(e,\"_b\"):[],u=e.a0||0,f=e.da||1,p=e.b0||0,d=e.db||1,g=e._z=o(e._z||e.z,e.transpose),e._emptypoints=l(g),s(g,e._emptypoints);var x=i.maxRowLength(g),b=\"scaled\"===e.xtype?\"\":r,_=c(e,b,u,f,x,v),w=\"scaled\"===e.ytype?\"\":h,T=c(e,w,p,d,g.length,y),k={a:_,b:T,z:g};\"levels\"===e.contours.type&&\"none\"!==e.contours.coloring&&n(t,e,{vals:g,containerStr:\"\",cLetter:\"z\"});return[k]}(t,e);return h(e,e._z),g}}},{\"../../components/colorscale/calc\":374,\"../../lib\":503,\"../carpet/lookup_carpetid\":708,\"../contour/set_contours\":754,\"../heatmap/clean_2d_array\":794,\"../heatmap/convert_column_xyz\":796,\"../heatmap/find_empties\":798,\"../heatmap/interp2d\":801,\"../heatmap/make_bound_array\":803,\"./defaults\":759}],759:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../heatmap/xyz_defaults\"),a=t(\"./attributes\"),o=t(\"../contour/constraint_defaults\"),s=t(\"../contour/contours_defaults\"),l=t(\"../contour/style_defaults\");e.exports=function(t,e,r,c){function u(r,i){return n.coerce(t,e,a,r,i)}if(u(\"carpet\"),t.a&&t.b){if(!i(t,e,u,c,\"a\",\"b\"))return void(e.visible=!1);u(\"text\"),\"constraint\"===u(\"contours.type\")?o(t,e,u,c,r,{hasHover:!1}):(s(t,e,u,(function(r){return n.coerce2(t,e,a,r)})),l(t,e,u,c,{hasHover:!1}))}else e._defaultColor=r,e._length=null}},{\"../../lib\":503,\"../contour/constraint_defaults\":740,\"../contour/contours_defaults\":742,\"../contour/style_defaults\":756,\"../heatmap/xyz_defaults\":807,\"./attributes\":757}],760:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../contour/colorbar\"),calc:t(\"./calc\"),plot:t(\"./plot\"),style:t(\"../contour/style\"),moduleType:\"trace\",name:\"contourcarpet\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"cartesian\",\"svg\",\"carpet\",\"contour\",\"symbols\",\"showLegend\",\"hasLines\",\"carpetDependent\",\"noHover\",\"noSortingByValue\"],meta:{}}},{\"../../plots/cartesian\":568,\"../contour/colorbar\":738,\"../contour/style\":755,\"./attributes\":757,\"./calc\":758,\"./defaults\":759,\"./plot\":761}],761:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../carpet/map_1d_array\"),a=t(\"../carpet/makepath\"),o=t(\"../../components/drawing\"),s=t(\"../../lib\"),l=t(\"../contour/make_crossings\"),c=t(\"../contour/find_all_paths\"),u=t(\"../contour/plot\"),f=t(\"../contour/constants\"),h=t(\"../contour/convert_to_constraints\"),p=t(\"../contour/empty_pathinfo\"),d=t(\"../contour/close_boundaries\"),g=t(\"../carpet/lookup_carpetid\"),m=t(\"../carpet/axis_aligned_line\");function v(t,e,r){var n=t.getPointAtLength(e),i=t.getPointAtLength(r),a=i.x-n.x,o=i.y-n.y,s=Math.sqrt(a*a+o*o);return[a/s,o/s]}function y(t){var e=Math.sqrt(t[0]*t[0]+t[1]*t[1]);return[t[0]/e,t[1]/e]}function x(t,e){var r=Math.abs(t[0]*e[0]+t[1]*e[1]);return Math.sqrt(1-r*r)/r}e.exports=function(t,e,r,b){var _=e.xaxis,w=e.yaxis;s.makeTraceGroups(b,r,\"contour\").each((function(r){var b=n.select(this),T=r[0],k=T.trace,A=k._carpetTrace=g(t,k),M=t.calcdata[A.index][0];if(A.visible&&\"legendonly\"!==A.visible){var S=T.a,E=T.b,L=k.contours,C=p(L,e,T),P=\"constraint\"===L.type,I=L._operation,O=P?\"=\"===I?\"lines\":\"fill\":L.coloring,z=[[S[0],E[E.length-1]],[S[S.length-1],E[E.length-1]],[S[S.length-1],E[0]],[S[0],E[0]]];l(C);var D=1e-8*(S[S.length-1]-S[0]),R=1e-8*(E[E.length-1]-E[0]);c(C,D,R);var F,B,N,j,U=C;\"constraint\"===L.type&&(U=h(C,I)),function(t,e){var r,n,i,a,o,s,l,c,u;for(r=0;r=0;j--)F=M.clipsegments[j],B=i([],F.x,_.c2p),N=i([],F.y,w.c2p),B.reverse(),N.reverse(),V.push(a(B,N,F.bicubic));var H=\"M\"+V.join(\"L\")+\"Z\";!function(t,e,r,n,o,l){var c,u,f,h,p=s.ensureSingle(t,\"g\",\"contourbg\").selectAll(\"path\").data(\"fill\"!==l||o?[]:[0]);p.enter().append(\"path\"),p.exit().remove();var d=[];for(h=0;h=0&&(h=L,d=g):Math.abs(f[1]-h[1])=0&&(h=L,d=g):s.log(\"endpt to newendpt is not vert. or horz.\",f,h,L)}if(d>=0)break;y+=S(f,h),f=h}if(d===e.edgepaths.length){s.log(\"unclosed perimeter path\");break}u=d,(b=-1===x.indexOf(u))&&(u=x[0],y+=S(f,h)+\"Z\",f=null)}for(u=0;um&&(n.max=m);n.len=n.max-n.min}(this,r,t,n,c,e.height),!(n.len<(e.width+e.height)*f.LABELMIN)))for(var i=Math.min(Math.ceil(n.len/I),f.LABELMAX),a=0;a0?+p[u]:0),f.push({type:\"Feature\",geometry:{type:\"Point\",coordinates:v},properties:y})}}var b=o.extractOpts(e),_=b.reversescale?o.flipScale(b.colorscale):b.colorscale,w=_[0][1],T=[\"interpolate\",[\"linear\"],[\"heatmap-density\"],0,a.opacity(w)<1?w:a.addOpacity(w,0)];for(u=1;u<_.length;u++)T.push(_[u][0],_[u][1]);var k=[\"interpolate\",[\"linear\"],[\"get\",\"z\"],b.min,0,b.max,1];return i.extendFlat(c.heatmap.paint,{\"heatmap-weight\":d?k:1/(b.max-b.min),\"heatmap-color\":T,\"heatmap-radius\":g?{type:\"identity\",property:\"r\"}:e.radius,\"heatmap-opacity\":e.opacity}),c.geojson={type:\"FeatureCollection\",features:f},c.heatmap.layout.visibility=\"visible\",c}},{\"../../components/color\":366,\"../../components/colorscale\":378,\"../../constants/numerical\":479,\"../../lib\":503,\"../../lib/geojson_utils\":497,\"fast-isnumeric\":190}],765:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../components/colorscale/defaults\"),a=t(\"./attributes\");e.exports=function(t,e,r,o){function s(r,i){return n.coerce(t,e,a,r,i)}var l=s(\"lon\")||[],c=s(\"lat\")||[],u=Math.min(l.length,c.length);u?(e._length=u,s(\"z\"),s(\"radius\"),s(\"below\"),s(\"text\"),s(\"hovertext\"),s(\"hovertemplate\"),i(t,e,o,s,{prefix:\"\",cLetter:\"z\"})):e.visible=!1}},{\"../../components/colorscale/defaults\":376,\"../../lib\":503,\"./attributes\":762}],766:[function(t,e,r){\"use strict\";e.exports=function(t,e){return t.lon=e.lon,t.lat=e.lat,t.z=e.z,t}},{}],767:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/axes\"),i=t(\"../scattermapbox/hover\").hoverPoints,a=t(\"../scattermapbox/hover\").getExtraText;e.exports=function(t,e,r){var o=i(t,e,r);if(o){var s=o[0],l=s.cd,c=l[0].trace,u=l[s.index];if(delete s.color,\"z\"in u){var f=s.subplot.mockAxis;s.z=u.z,s.zLabel=n.tickText(f,f.c2l(u.z),\"hover\").text}return s.extraText=a(c,u,l[0].t.labels),[s]}}},{\"../../plots/cartesian/axes\":554,\"../scattermapbox/hover\":996}],768:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../heatmap/colorbar\"),formatLabels:t(\"../scattermapbox/format_labels\"),calc:t(\"./calc\"),plot:t(\"./plot\"),hoverPoints:t(\"./hover\"),eventData:t(\"./event_data\"),getBelow:function(t,e){for(var r=e.getMapLayers(),n=0;n=0;r--)t.removeLayer(e[r][1])},o.dispose=function(){var t=this.subplot.map;this._removeLayers(),t.removeSource(this.sourceId)},e.exports=function(t,e){var r=e[0].trace,i=new a(t,r.uid),o=i.sourceId,s=n(e),l=i.below=t.belowLookup[\"trace-\"+r.uid];return t.map.addSource(o,{type:\"geojson\",data:s.geojson}),i._addLayers(s,l),i}},{\"../../plots/mapbox/constants\":611,\"./convert\":764}],770:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t,e){for(var r=0;r\"),l.color=function(t,e){var r=t.marker,i=e.mc||r.color,a=e.mlc||r.line.color,o=e.mlw||r.line.width;if(n(i))return i;if(n(a)&&o)return a}(u,h),[l]}}},{\"../../components/color\":366,\"../../lib\":503,\"../bar/hover\":655}],778:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\").supplyDefaults,crossTraceDefaults:t(\"./defaults\").crossTraceDefaults,supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\"),crossTraceCalc:t(\"./cross_trace_calc\"),plot:t(\"./plot\"),style:t(\"./style\").style,hoverPoints:t(\"./hover\"),eventData:t(\"./event_data\"),selectPoints:t(\"../bar/select\"),moduleType:\"trace\",name:\"funnel\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"bar-like\",\"cartesian\",\"svg\",\"oriented\",\"showLegend\",\"zoomScale\"],meta:{}}},{\"../../plots/cartesian\":568,\"../bar/select\":660,\"./attributes\":771,\"./calc\":772,\"./cross_trace_calc\":774,\"./defaults\":775,\"./event_data\":776,\"./hover\":777,\"./layout_attributes\":779,\"./layout_defaults\":780,\"./plot\":781,\"./style\":782}],779:[function(t,e,r){\"use strict\";e.exports={funnelmode:{valType:\"enumerated\",values:[\"stack\",\"group\",\"overlay\"],dflt:\"stack\",editType:\"calc\"},funnelgap:{valType:\"number\",min:0,max:1,editType:\"calc\"},funnelgroupgap:{valType:\"number\",min:0,max:1,dflt:0,editType:\"calc\"}}},{}],780:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e,r){var a=!1;function o(r,a){return n.coerce(t,e,i,r,a)}for(var s=0;s path\").each((function(t){if(!t.isBlank){var e=s.marker;n.select(this).call(a.fill,t.mc||e.color).call(a.stroke,t.mlc||e.line.color).call(i.dashLine,e.line.dash,t.mlw||e.line.width).style(\"opacity\",s.selectedpoints&&!t.selected?o:1)}})),c(r,s,t),r.selectAll(\".regions\").each((function(){n.select(this).selectAll(\"path\").style(\"stroke-width\",0).call(a.fill,s.connector.fillcolor)})),r.selectAll(\".lines\").each((function(){var t=s.connector.line;i.lineGroupStyle(n.select(this).selectAll(\"path\"),t.width,t.color,t.dash)}))}))}}},{\"../../components/color\":366,\"../../components/drawing\":388,\"../../constants/interactions\":478,\"../bar/style\":662,\"../bar/uniform_text\":664,\"@plotly/d3\":58}],783:[function(t,e,r){\"use strict\";var n=t(\"../pie/attributes\"),i=t(\"../../plots/attributes\"),a=t(\"../../plots/domain\").attributes,o=t(\"../../plots/template_attributes\").hovertemplateAttrs,s=t(\"../../plots/template_attributes\").texttemplateAttrs,l=t(\"../../lib/extend\").extendFlat;e.exports={labels:n.labels,label0:n.label0,dlabel:n.dlabel,values:n.values,marker:{colors:n.marker.colors,line:{color:l({},n.marker.line.color,{dflt:null}),width:l({},n.marker.line.width,{dflt:1}),editType:\"calc\"},editType:\"calc\"},text:n.text,hovertext:n.hovertext,scalegroup:l({},n.scalegroup,{}),textinfo:l({},n.textinfo,{flags:[\"label\",\"text\",\"value\",\"percent\"]}),texttemplate:s({editType:\"plot\"},{keys:[\"label\",\"color\",\"value\",\"text\",\"percent\"]}),hoverinfo:l({},i.hoverinfo,{flags:[\"label\",\"text\",\"value\",\"percent\",\"name\"]}),hovertemplate:o({},{keys:[\"label\",\"color\",\"value\",\"text\",\"percent\"]}),textposition:l({},n.textposition,{values:[\"inside\",\"none\"],dflt:\"inside\"}),textfont:n.textfont,insidetextfont:n.insidetextfont,title:{text:n.title.text,font:n.title.font,position:l({},n.title.position,{values:[\"top left\",\"top center\",\"top right\"],dflt:\"top center\"}),editType:\"plot\"},domain:a({name:\"funnelarea\",trace:!0,editType:\"calc\"}),aspectratio:{valType:\"number\",min:0,dflt:1,editType:\"plot\"},baseratio:{valType:\"number\",min:0,max:1,dflt:.333,editType:\"plot\"}}},{\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/domain\":584,\"../../plots/template_attributes\":633,\"../pie/attributes\":900}],784:[function(t,e,r){\"use strict\";var n=t(\"../../plots/plots\");r.name=\"funnelarea\",r.plot=function(t,e,i,a){n.plotBasePlot(r.name,t,e,i,a)},r.clean=function(t,e,i,a){n.cleanBasePlot(r.name,t,e,i,a)}},{\"../../plots/plots\":619}],785:[function(t,e,r){\"use strict\";var n=t(\"../pie/calc\");e.exports={calc:function(t,e){return n.calc(t,e)},crossTraceCalc:function(t){n.crossTraceCalc(t,{type:\"funnelarea\"})}}},{\"../pie/calc\":902}],786:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./attributes\"),a=t(\"../../plots/domain\").defaults,o=t(\"../bar/defaults\").handleText,s=t(\"../pie/defaults\").handleLabelsAndValues;e.exports=function(t,e,r,l){function c(r,a){return n.coerce(t,e,i,r,a)}var u=c(\"labels\"),f=c(\"values\"),h=s(u,f),p=h.len;if(e._hasLabels=h.hasLabels,e._hasValues=h.hasValues,!e._hasLabels&&e._hasValues&&(c(\"label0\"),c(\"dlabel\")),p){e._length=p,c(\"marker.line.width\")&&c(\"marker.line.color\",l.paper_bgcolor),c(\"marker.colors\"),c(\"scalegroup\");var d,g=c(\"text\"),m=c(\"texttemplate\");if(m||(d=c(\"textinfo\",Array.isArray(g)?\"text+percent\":\"percent\")),c(\"hovertext\"),c(\"hovertemplate\"),m||d&&\"none\"!==d){var v=c(\"textposition\");o(t,e,l,c,v,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1})}a(e,l,c),c(\"title.text\")&&(c(\"title.position\"),n.coerceFont(c,\"title.font\",l.font)),c(\"aspectratio\"),c(\"baseratio\")}else e.visible=!1}},{\"../../lib\":503,\"../../plots/domain\":584,\"../bar/defaults\":652,\"../pie/defaults\":903,\"./attributes\":783}],787:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"funnelarea\",basePlotModule:t(\"./base_plot\"),categories:[\"pie-like\",\"funnelarea\",\"showLegend\"],attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\"),supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\").calc,crossTraceCalc:t(\"./calc\").crossTraceCalc,plot:t(\"./plot\"),style:t(\"./style\"),styleOne:t(\"../pie/style_one\"),meta:{}}},{\"../pie/style_one\":911,\"./attributes\":783,\"./base_plot\":784,\"./calc\":785,\"./defaults\":786,\"./layout_attributes\":788,\"./layout_defaults\":789,\"./plot\":790,\"./style\":791}],788:[function(t,e,r){\"use strict\";var n=t(\"../pie/layout_attributes\").hiddenlabels;e.exports={hiddenlabels:n,funnelareacolorway:{valType:\"colorlist\",editType:\"calc\"},extendfunnelareacolors:{valType:\"boolean\",dflt:!0,editType:\"calc\"}}},{\"../pie/layout_attributes\":907}],789:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e){function r(r,a){return n.coerce(t,e,i,r,a)}r(\"hiddenlabels\"),r(\"funnelareacolorway\",e.colorway),r(\"extendfunnelareacolors\")}},{\"../../lib\":503,\"./layout_attributes\":788}],790:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../components/drawing\"),a=t(\"../../lib\"),o=a.strScale,s=a.strTranslate,l=t(\"../../lib/svg_text_utils\"),c=t(\"../bar/plot\").toMoveInsideBar,u=t(\"../bar/uniform_text\"),f=u.recordMinTextSize,h=u.clearMinTextSize,p=t(\"../pie/helpers\"),d=t(\"../pie/plot\"),g=d.attachFxHandlers,m=d.determineInsideTextFont,v=d.layoutAreas,y=d.prerenderTitles,x=d.positionTitleOutside,b=d.formatSliceLabel;function _(t,e){return\"l\"+(e[0]-t[0])+\",\"+(e[1]-t[1])}e.exports=function(t,e){var r=t._fullLayout;h(\"funnelarea\",r),y(e,t),v(e,r._size),a.makeTraceGroups(r._funnelarealayer,e,\"trace\").each((function(e){var u=n.select(this),h=e[0],d=h.trace;!function(t){if(!t.length)return;var e=t[0],r=e.trace,n=r.aspectratio,i=r.baseratio;i>.999&&(i=.999);var a,o=Math.pow(i,2),s=e.vTotal,l=s,c=s*o/(1-o)/s;function u(){var t,e={x:t=Math.sqrt(c),y:-t};return[e.x,e.y]}var f,h,p=[];for(p.push(u()),f=t.length-1;f>-1;f--)if(!(h=t[f]).hidden){var d=h.v/l;c+=d,p.push(u())}var g=1/0,m=-1/0;for(f=0;f-1;f--)if(!(h=t[f]).hidden){var A=p[k+=1][0],M=p[k][1];h.TL=[-A,M],h.TR=[A,M],h.BL=w,h.BR=T,h.pxmid=(S=h.TR,E=h.BR,[.5*(S[0]+E[0]),.5*(S[1]+E[1])]),w=h.TL,T=h.TR}var S,E}(e),u.each((function(){var u=n.select(this).selectAll(\"g.slice\").data(e);u.enter().append(\"g\").classed(\"slice\",!0),u.exit().remove(),u.each((function(o,s){if(o.hidden)n.select(this).selectAll(\"path,g\").remove();else{o.pointNumber=o.i,o.curveNumber=d.index;var u=h.cx,v=h.cy,y=n.select(this),x=y.selectAll(\"path.surface\").data([o]);x.enter().append(\"path\").classed(\"surface\",!0).style({\"pointer-events\":\"all\"}),y.call(g,t,e);var w=\"M\"+(u+o.TR[0])+\",\"+(v+o.TR[1])+_(o.TR,o.BR)+_(o.BR,o.BL)+_(o.BL,o.TL)+\"Z\";x.attr(\"d\",w),b(t,o,h);var T=p.castOption(d.textposition,o.pts),k=y.selectAll(\"g.slicetext\").data(o.text&&\"none\"!==T?[0]:[]);k.enter().append(\"g\").classed(\"slicetext\",!0),k.exit().remove(),k.each((function(){var h=a.ensureSingle(n.select(this),\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),p=a.ensureUniformFontSize(t,m(d,o,r.font));h.text(o.text).attr({class:\"slicetext\",transform:\"\",\"text-anchor\":\"middle\"}).call(i.font,p).call(l.convertToTspans,t);var g,y,x,b=i.bBox(h.node()),_=Math.min(o.BL[1],o.BR[1])+v,w=Math.max(o.TL[1],o.TR[1])+v;y=Math.max(o.TL[0],o.BL[0])+u,x=Math.min(o.TR[0],o.BR[0])+u,(g=c(y,x,_,w,b,{isHorizontal:!0,constrained:!0,angle:0,anchor:\"middle\"})).fontSize=p.size,f(d.type,g,r),e[s].transform=g,h.attr(\"transform\",a.getTextTransform(g))}))}}));var v=n.select(this).selectAll(\"g.titletext\").data(d.title.text?[0]:[]);v.enter().append(\"g\").classed(\"titletext\",!0),v.exit().remove(),v.each((function(){var e=a.ensureSingle(n.select(this),\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),c=d.title.text;d._meta&&(c=a.templateString(c,d._meta)),e.text(c).attr({class:\"titletext\",transform:\"\",\"text-anchor\":\"middle\"}).call(i.font,d.title.font).call(l.convertToTspans,t);var u=x(h,r._size);e.attr(\"transform\",s(u.x,u.y)+o(Math.min(1,u.scale))+s(u.tx,u.ty))}))}))}))}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../bar/plot\":659,\"../bar/uniform_text\":664,\"../pie/helpers\":905,\"../pie/plot\":909,\"@plotly/d3\":58}],791:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../pie/style_one\"),a=t(\"../bar/uniform_text\").resizeText;e.exports=function(t){var e=t._fullLayout._funnelarealayer.selectAll(\".trace\");a(t,e,\"funnelarea\"),e.each((function(t){var e=t[0].trace,r=n.select(this);r.style({opacity:e.opacity}),r.selectAll(\"path.surface\").each((function(t){n.select(this).call(i,t,e)}))}))}},{\"../bar/uniform_text\":664,\"../pie/style_one\":911,\"@plotly/d3\":58}],792:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\"),i=t(\"../../plots/attributes\"),a=t(\"../../plots/font_attributes\"),o=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,s=t(\"../../plots/template_attributes\").hovertemplateAttrs,l=t(\"../../plots/template_attributes\").texttemplateAttrs,c=t(\"../../components/colorscale/attributes\"),u=t(\"../../lib/extend\").extendFlat;e.exports=u({z:{valType:\"data_array\",editType:\"calc\"},x:u({},n.x,{impliedEdits:{xtype:\"array\"}}),x0:u({},n.x0,{impliedEdits:{xtype:\"scaled\"}}),dx:u({},n.dx,{impliedEdits:{xtype:\"scaled\"}}),y:u({},n.y,{impliedEdits:{ytype:\"array\"}}),y0:u({},n.y0,{impliedEdits:{ytype:\"scaled\"}}),dy:u({},n.dy,{impliedEdits:{ytype:\"scaled\"}}),xperiod:u({},n.xperiod,{impliedEdits:{xtype:\"scaled\"}}),yperiod:u({},n.yperiod,{impliedEdits:{ytype:\"scaled\"}}),xperiod0:u({},n.xperiod0,{impliedEdits:{xtype:\"scaled\"}}),yperiod0:u({},n.yperiod0,{impliedEdits:{ytype:\"scaled\"}}),xperiodalignment:u({},n.xperiodalignment,{impliedEdits:{xtype:\"scaled\"}}),yperiodalignment:u({},n.yperiodalignment,{impliedEdits:{ytype:\"scaled\"}}),text:{valType:\"data_array\",editType:\"calc\"},hovertext:{valType:\"data_array\",editType:\"calc\"},transpose:{valType:\"boolean\",dflt:!1,editType:\"calc\"},xtype:{valType:\"enumerated\",values:[\"array\",\"scaled\"],editType:\"calc+clearAxisTypes\"},ytype:{valType:\"enumerated\",values:[\"array\",\"scaled\"],editType:\"calc+clearAxisTypes\"},zsmooth:{valType:\"enumerated\",values:[\"fast\",\"best\",!1],dflt:!1,editType:\"calc\"},hoverongaps:{valType:\"boolean\",dflt:!0,editType:\"none\"},connectgaps:{valType:\"boolean\",editType:\"calc\"},xgap:{valType:\"number\",dflt:0,min:0,editType:\"plot\"},ygap:{valType:\"number\",dflt:0,min:0,editType:\"plot\"},xhoverformat:o(\"x\"),yhoverformat:o(\"y\"),zhoverformat:o(\"z\",1),hovertemplate:s(),texttemplate:l({arrayOk:!1,editType:\"plot\"},{keys:[\"x\",\"y\",\"z\",\"text\"]}),textfont:a({editType:\"plot\",autoSize:!0,autoColor:!0,colorEditType:\"style\"}),showlegend:u({},i.showlegend,{dflt:!1})},{transforms:void 0},c(\"\",{cLetter:\"z\",autoColorDflt:!1}))},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/font_attributes\":585,\"../../plots/template_attributes\":633,\"../scatter/attributes\":926}],793:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\"),a=t(\"../../plots/cartesian/axes\"),o=t(\"../../plots/cartesian/align_period\"),s=t(\"../histogram2d/calc\"),l=t(\"../../components/colorscale/calc\"),c=t(\"./convert_column_xyz\"),u=t(\"./clean_2d_array\"),f=t(\"./interp2d\"),h=t(\"./find_empties\"),p=t(\"./make_bound_array\"),d=t(\"../../constants/numerical\").BADNUM;function g(t){for(var e=[],r=t.length,n=0;nD){O(\"x scale is not linear\");break}}if(x.length&&\"fast\"===P){var R=(x[x.length-1]-x[0])/(x.length-1),F=Math.abs(R/100);for(k=0;kF){O(\"y scale is not linear\");break}}}var B=i.maxRowLength(T),N=\"scaled\"===e.xtype?\"\":r,j=p(e,N,m,v,B,M),U=\"scaled\"===e.ytype?\"\":x,V=p(e,U,b,_,T.length,S);C||(e._extremes[M._id]=a.findExtremes(M,j),e._extremes[S._id]=a.findExtremes(S,V));var H={x:j,y:V,z:T,text:e._text||e.text,hovertext:e._hovertext||e.hovertext};if(e.xperiodalignment&&y&&(H.orig_x=y),e.yperiodalignment&&w&&(H.orig_y=w),N&&N.length===j.length-1&&(H.xCenter=N),U&&U.length===V.length-1&&(H.yCenter=U),L&&(H.xRanges=A.xRanges,H.yRanges=A.yRanges,H.pts=A.pts),E||l(t,e,{vals:T,cLetter:\"z\"}),E&&e.contours&&\"heatmap\"===e.contours.coloring){var q={type:\"contour\"===e.type?\"heatmap\":\"histogram2d\",xcalendar:e.xcalendar,ycalendar:e.ycalendar};H.xfill=p(q,N,m,v,B,M),H.yfill=p(q,U,b,_,T.length,S)}return[H]}},{\"../../components/colorscale/calc\":374,\"../../constants/numerical\":479,\"../../lib\":503,\"../../plots/cartesian/align_period\":551,\"../../plots/cartesian/axes\":554,\"../../registry\":638,\"../histogram2d/calc\":826,\"./clean_2d_array\":794,\"./convert_column_xyz\":796,\"./find_empties\":798,\"./interp2d\":801,\"./make_bound_array\":803}],794:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../lib\"),a=t(\"../../constants/numerical\").BADNUM;e.exports=function(t,e,r,o){var s,l,c,u,f,h;function p(t){if(n(t))return+t}if(e&&e.transpose){for(s=0,f=0;f=0;o--)(s=((f[[(r=(a=h[o])[0])-1,i=a[1]]]||g)[2]+(f[[r+1,i]]||g)[2]+(f[[r,i-1]]||g)[2]+(f[[r,i+1]]||g)[2])/20)&&(l[a]=[r,i,s],h.splice(o,1),c=!0);if(!c)throw\"findEmpties iterated with no new neighbors\";for(a in l)f[a]=l[a],u.push(l[a])}return u.sort((function(t,e){return e[2]-t[2]}))}},{\"../../lib\":503}],799:[function(t,e,r){\"use strict\";var n=t(\"../../components/fx\"),i=t(\"../../lib\"),a=t(\"../../plots/cartesian/axes\"),o=t(\"../../components/colorscale\").extractOpts;e.exports=function(t,e,r,s,l){l||(l={});var c,u,f,h,p=l.isContour,d=t.cd[0],g=d.trace,m=t.xa,v=t.ya,y=d.x,x=d.y,b=d.z,_=d.xCenter,w=d.yCenter,T=d.zmask,k=g.zhoverformat,A=y,M=x;if(!1!==t.index){try{f=Math.round(t.index[1]),h=Math.round(t.index[0])}catch(e){return void i.error(\"Error hovering on heatmap, pointNumber must be [row,col], found:\",t.index)}if(f<0||f>=b[0].length||h<0||h>b.length)return}else{if(n.inbox(e-y[0],e-y[y.length-1],0)>0||n.inbox(r-x[0],r-x[x.length-1],0)>0)return;if(p){var S;for(A=[2*y[0]-y[1]],S=1;Sg&&(v=Math.max(v,Math.abs(t[a][o]-d)/(m-g))))}return v}e.exports=function(t,e){var r,i=1;for(o(t,e),r=0;r.01;r++)i=o(t,e,a(i));return i>.01&&n.log(\"interp2d didn't converge quickly\",i),t}},{\"../../lib\":503}],802:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t,e){t(\"texttemplate\");var r=n.extendFlat({},e.font,{color:\"auto\",size:\"auto\"});n.coerceFont(t,\"textfont\",r)}},{\"../../lib\":503}],803:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\").isArrayOrTypedArray;e.exports=function(t,e,r,a,o,s){var l,c,u,f=[],h=n.traceIs(t,\"contour\"),p=n.traceIs(t,\"histogram\"),d=n.traceIs(t,\"gl2d\");if(i(e)&&e.length>1&&!p&&\"category\"!==s.type){var g=e.length;if(!(g<=o))return h?e.slice(0,o):e.slice(0,o+1);if(h||d)f=e.slice(0,o);else if(1===o)f=[e[0]-.5,e[0]+.5];else{for(f=[1.5*e[0]-.5*e[1]],u=1;u0;)_=w.c2p(R[S]),S--;for(_0;)M=T.c2p(F[S]),S--;if(MGt||Gt>T._length))for(E=Ut;EWt||Wt>w._length)){var Xt=u({x:Yt,y:qt},I,t._fullLayout);Xt.x=Yt,Xt.y=qt;var Zt=P.z[S][E];void 0===Zt?(Xt.z=\"\",Xt.zLabel=\"\"):(Xt.z=Zt,Xt.zLabel=s.tickText(Ft,Zt,\"hover\").text);var Jt=P.text&&P.text[S]&&P.text[S][E];void 0!==Jt&&!1!==Jt||(Jt=\"\"),Xt.text=Jt;var Kt=l.texttemplateString(Dt,Xt,t._fullLayout._d3locale,Xt,I._meta||{});if(Kt){var Qt=Kt.split(\"
\"),$t=Qt.length,te=0;for(L=0;L<$t;L++)te=Math.max(te,Qt[L].length);Ht.push({l:$t,c:te,t:Kt,x:Wt,y:Gt,z:Zt})}}}}var ee=I.textfont,re=ee.family,ne=ee.size,ie=t._fullLayout.font.size;if(!ne||\"auto\"===ne){var ae=1/0,oe=1/0,se=0,le=0;for(L=0;L0&&(a=!0);for(var l=0;la){var o=a-r[t];return r[t]=a,o}}return 0},max:function(t,e,r,i){var a=i[e];if(n(a)){if(a=Number(a),!n(r[t]))return r[t]=a,a;if(r[t]c?t>o?t>1.1*i?i:t>1.1*a?a:o:t>s?s:t>l?l:c:Math.pow(10,Math.floor(Math.log(t)/Math.LN10))}function p(t,e,r,n,a,s){if(n&&t>o){var l=d(e,a,s),c=d(r,a,s),u=t===i?0:1;return l[u]!==c[u]}return Math.floor(r/t)-Math.floor(e/t)>.1}function d(t,e,r){var n=e.c2d(t,i,r).split(\"-\");return\"\"===n[0]&&(n.unshift(),n[0]=\"-\"+n[0]),n}e.exports=function(t,e,r,n,a){var s,l,c=-1.1*e,h=-.1*e,p=t-h,d=r[0],g=r[1],m=Math.min(f(d+h,d+p,n,a),f(g+h,g+p,n,a)),v=Math.min(f(d+c,d+h,n,a),f(g+c,g+h,n,a));if(m>v&&vo){var y=s===i?1:6,x=s===i?\"M12\":\"M1\";return function(e,r){var o=n.c2d(e,i,a),s=o.indexOf(\"-\",y);s>0&&(o=o.substr(0,s));var c=n.d2c(o,0,a);if(cr.r2l(B)&&(j=o.tickIncrement(j,b.size,!0,p)),z.start=r.l2r(j),F||i.nestedProperty(e,v+\".start\").set(z.start)}var U=b.end,V=r.r2l(O.end),H=void 0!==V;if((b.endFound||H)&&V!==r.r2l(U)){var q=H?V:i.aggNums(Math.max,null,d);z.end=r.l2r(q),H||i.nestedProperty(e,v+\".start\").set(z.end)}var G=\"autobin\"+s;return!1===e._input[G]&&(e._input[v]=i.extendFlat({},e[v]||{}),delete e._input[G],delete e[G]),[z,d]}e.exports={calc:function(t,e){var r,a,p,d,g=[],m=[],v=\"h\"===e.orientation,y=o.getFromId(t,v?e.yaxis:e.xaxis),x=v?\"y\":\"x\",b={x:\"y\",y:\"x\"}[x],_=e[x+\"calendar\"],w=e.cumulative,T=h(t,e,y,x),k=T[0],A=T[1],M=\"string\"==typeof k.size,S=[],E=M?S:k,L=[],C=[],P=[],I=0,O=e.histnorm,z=e.histfunc,D=-1!==O.indexOf(\"density\");w.enabled&&D&&(O=O.replace(/ ?density$/,\"\"),D=!1);var R,F=\"max\"===z||\"min\"===z?null:0,B=l.count,N=c[O],j=!1,U=function(t){return y.r2c(t,0,_)};for(i.isArrayOrTypedArray(e[b])&&\"count\"!==z&&(R=e[b],j=\"avg\"===z,B=l[z]),r=U(k.start),p=U(k.end)+(r-o.tickIncrement(r,k.size,!1,_))/1e6;r=0&&d=0;n--)s(n);else if(\"increasing\"===e){for(n=1;n=0;n--)t[n]+=t[n+1];\"exclude\"===r&&(t.push(0),t.shift())}}(m,w.direction,w.currentbin);var K=Math.min(g.length,m.length),Q=[],$=0,tt=K-1;for(r=0;r=$;r--)if(m[r]){tt=r;break}for(r=$;r<=tt;r++)if(n(g[r])&&n(m[r])){var et={p:g[r],s:m[r],b:0};w.enabled||(et.pts=P[r],Y?et.ph0=et.ph1=P[r].length?A[P[r][0]]:g[r]:(e._computePh=!0,et.ph0=q(S[r]),et.ph1=q(S[r+1],!0))),Q.push(et)}return 1===Q.length&&(Q[0].width1=o.tickIncrement(Q[0].p,k.size,!1,_)-Q[0].p),s(Q,e),i.isArrayOrTypedArray(e.selectedpoints)&&i.tagSelected(Q,e,Z),Q},calcAllAutoBins:h}},{\"../../lib\":503,\"../../plots/cartesian/axes\":554,\"../../registry\":638,\"../bar/arrays_to_calcdata\":647,\"./average\":813,\"./bin_functions\":815,\"./bin_label_vals\":816,\"./norm_functions\":824,\"fast-isnumeric\":190}],818:[function(t,e,r){\"use strict\";e.exports={eventDataKeys:[\"binNumber\"]}},{}],819:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../plots/cartesian/axis_ids\"),a=t(\"../../registry\").traceIs,o=t(\"../bar/defaults\").handleGroupingDefaults,s=n.nestedProperty,l=t(\"../../plots/cartesian/constraints\").getAxisGroup,c=[{aStr:{x:\"xbins.start\",y:\"ybins.start\"},name:\"start\"},{aStr:{x:\"xbins.end\",y:\"ybins.end\"},name:\"end\"},{aStr:{x:\"xbins.size\",y:\"ybins.size\"},name:\"size\"},{aStr:{x:\"nbinsx\",y:\"nbinsy\"},name:\"nbins\"}],u=[\"x\",\"y\"];e.exports=function(t,e){var r,f,h,p,d,g,m,v=e._histogramBinOpts={},y=[],x={},b=[];function _(t,e){return n.coerce(r._input,r,r._module.attributes,t,e)}function w(t){return\"v\"===t.orientation?\"x\":\"y\"}function T(t,r,a){var o=t.uid+\"__\"+a;r||(r=o);var s=function(t,r){return i.getFromTrace({_fullLayout:e},t,r).type}(t,a),l=t[a+\"calendar\"]||\"\",c=v[r],u=!0;c&&(s===c.axType&&l===c.calendar?(u=!1,c.traces.push(t),c.dirs.push(a)):(r=o,s!==c.axType&&n.warn([\"Attempted to group the bins of trace\",t.index,\"set on a\",\"type:\"+s,\"axis\",\"with bins on\",\"type:\"+c.axType,\"axis.\"].join(\" \")),l!==c.calendar&&n.warn([\"Attempted to group the bins of trace\",t.index,\"set with a\",l,\"calendar\",\"with bins\",c.calendar?\"on a \"+c.calendar+\" calendar\":\"w/o a set calendar\"].join(\" \")))),u&&(v[r]={traces:[t],dirs:[a],axType:s,calendar:t[a+\"calendar\"]||\"\"}),t[\"_\"+a+\"bingroup\"]=r}for(d=0;dS&&T.splice(S,T.length-S),M.length>S&&M.splice(S,M.length-S);var E=[],L=[],C=[],P=\"string\"==typeof w.size,I=\"string\"==typeof A.size,O=[],z=[],D=P?O:w,R=I?z:A,F=0,B=[],N=[],j=e.histnorm,U=e.histfunc,V=-1!==j.indexOf(\"density\"),H=\"max\"===U||\"min\"===U?null:0,q=a.count,G=o[j],Y=!1,W=[],X=[],Z=\"z\"in e?e.z:\"marker\"in e&&Array.isArray(e.marker.color)?e.marker.color:\"\";Z&&\"count\"!==U&&(Y=\"avg\"===U,q=a[U]);var J=w.size,K=x(w.start),Q=x(w.end)+(K-i.tickIncrement(K,J,!1,v))/1e6;for(r=K;r=0&&p=0&&d-1,flipY:E.tiling.flip.indexOf(\"y\")>-1,orientation:E.tiling.orientation,pad:{inner:E.tiling.pad},maxDepth:E._maxDepth}).descendants(),O=1/0,z=-1/0;I.forEach((function(t){var e=t.depth;e>=E._maxDepth?(t.x0=t.x1=(t.x0+t.x1)/2,t.y0=t.y1=(t.y0+t.y1)/2):(O=Math.min(O,e),z=Math.max(z,e))})),p=p.data(I,u.getPtId),E._maxVisibleLayers=isFinite(z)?z-O+1:0,p.enter().append(\"g\").classed(\"slice\",!0),T(p,!1,{},[g,m],x),p.order();var D=null;if(w&&M){var R=u.getPtId(M);p.each((function(t){null===D&&u.getPtId(t)===R&&(D={x0:t.x0,x1:t.x1,y0:t.y0,y1:t.y1})}))}var F=function(){return D||{x0:0,x1:g,y0:0,y1:m}},B=p;return w&&(B=B.transition().each(\"end\",(function(){var e=n.select(this);u.setSliceCursor(e,t,{hideOnRoot:!0,hideOnLeaves:!1,isTransitioning:!1})}))),B.each((function(s){s._x0=v(s.x0),s._x1=v(s.x1),s._y0=y(s.y0),s._y1=y(s.y1),s._hoverX=v(s.x1-E.tiling.pad),s._hoverY=y(P?s.y1-E.tiling.pad/2:s.y0+E.tiling.pad/2);var p=n.select(this),d=i.ensureSingle(p,\"path\",\"surface\",(function(t){t.style(\"pointer-events\",\"all\")}));w?d.transition().attrTween(\"d\",(function(t){var e=k(t,!1,F(),[g,m],{orientation:E.tiling.orientation,flipX:E.tiling.flip.indexOf(\"x\")>-1,flipY:E.tiling.flip.indexOf(\"y\")>-1});return function(t){return x(e(t))}})):d.attr(\"d\",x),p.call(f,r,t,e,{styleOne:l,eventDataKeys:c.eventDataKeys,transitionTime:c.CLICK_TRANSITION_TIME,transitionEasing:c.CLICK_TRANSITION_EASING}).call(u.setSliceCursor,t,{isTransitioning:t._transitioning}),d.call(l,s,E,{hovered:!1}),s.x0===s.x1||s.y0===s.y1?s._text=\"\":s._text=h(s,r,E,e,S)||\"\";var T=i.ensureSingle(p,\"g\",\"slicetext\"),M=i.ensureSingle(T,\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),I=i.ensureUniformFontSize(t,u.determineTextFont(E,s,S.font));M.text(s._text||\" \").classed(\"slicetext\",!0).attr(\"text-anchor\",C?\"end\":L?\"start\":\"middle\").call(a.font,I).call(o.convertToTspans,t),s.textBB=a.bBox(M.node()),s.transform=b(s,{fontSize:I.size}),s.transform.fontSize=I.size,w?M.transition().attrTween(\"transform\",(function(t){var e=A(t,!1,F(),[g,m]);return function(t){return _(e(t))}})):M.attr(\"transform\",_(s))})),D}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../sunburst/fx\":1050,\"../sunburst/helpers\":1051,\"../sunburst/plot\":1055,\"../treemap/constants\":1074,\"./partition\":842,\"./style\":844,\"@plotly/d3\":58}],839:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"icicle\",basePlotModule:t(\"./base_plot\"),categories:[],animatable:!0,attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\"),supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\").calc,crossTraceCalc:t(\"./calc\").crossTraceCalc,plot:t(\"./plot\"),style:t(\"./style\").style,colorbar:t(\"../scatter/marker_colorbar\"),meta:{}}},{\"../scatter/marker_colorbar\":944,\"./attributes\":834,\"./base_plot\":835,\"./calc\":836,\"./defaults\":837,\"./layout_attributes\":840,\"./layout_defaults\":841,\"./plot\":843,\"./style\":844}],840:[function(t,e,r){\"use strict\";e.exports={iciclecolorway:{valType:\"colorlist\",editType:\"calc\"},extendiciclecolors:{valType:\"boolean\",dflt:!0,editType:\"calc\"}}},{}],841:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e){function r(r,a){return n.coerce(t,e,i,r,a)}r(\"iciclecolorway\",e.colorway),r(\"extendiciclecolors\")}},{\"../../lib\":503,\"./layout_attributes\":840}],842:[function(t,e,r){\"use strict\";var n=t(\"d3-hierarchy\"),i=t(\"../treemap/flip_tree\");e.exports=function(t,e,r){var a=r.flipX,o=r.flipY,s=\"h\"===r.orientation,l=r.maxDepth,c=e[0],u=e[1];l&&(c=(t.height+1)*e[0]/Math.min(t.height+1,l),u=(t.height+1)*e[1]/Math.min(t.height+1,l));var f=n.partition().padding(r.pad.inner).size(s?[e[1],c]:[e[0],u])(t);return(s||a||o)&&i(f,e,{swapXY:s,flipX:a,flipY:o}),f}},{\"../treemap/flip_tree\":1079,\"d3-hierarchy\":115}],843:[function(t,e,r){\"use strict\";var n=t(\"../treemap/draw\"),i=t(\"./draw_descendants\");e.exports=function(t,e,r,a){return n(t,e,r,a,{type:\"icicle\",drawDescendants:i})}},{\"../treemap/draw\":1076,\"./draw_descendants\":838}],844:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../components/color\"),a=t(\"../../lib\"),o=t(\"../bar/uniform_text\").resizeText;function s(t,e,r){var n=e.data.data,o=!e.children,s=n.i,l=a.castOption(r,s,\"marker.line.color\")||i.defaultLine,c=a.castOption(r,s,\"marker.line.width\")||0;t.style(\"stroke-width\",c).call(i.fill,n.color).call(i.stroke,l).style(\"opacity\",o?r.leaf.opacity:null)}e.exports={style:function(t){var e=t._fullLayout._iciclelayer.selectAll(\".trace\");o(t,e,\"icicle\"),e.each((function(t){var e=n.select(this),r=t[0].trace;e.style(\"opacity\",r.opacity),e.selectAll(\"path.surface\").each((function(t){n.select(this).call(s,t,r)}))}))},styleOne:s}},{\"../../components/color\":366,\"../../lib\":503,\"../bar/uniform_text\":664,\"@plotly/d3\":58}],845:[function(t,e,r){\"use strict\";for(var n=t(\"../../plots/attributes\"),i=t(\"../../plots/template_attributes\").hovertemplateAttrs,a=t(\"../../lib/extend\").extendFlat,o=t(\"./constants\").colormodel,s=[\"rgb\",\"rgba\",\"rgba256\",\"hsl\",\"hsla\"],l=[],c=[],u=0;u0||n.inbox(r-o.y0,r-(o.y0+o.h*s.dy),0)>0)){var u,f=Math.floor((e-o.x0)/s.dx),h=Math.floor(Math.abs(r-o.y0)/s.dy);if(s._hasZ?u=o.z[h][f]:s._hasSource&&(u=s._canvas.el.getContext(\"2d\").getImageData(f,h,1,1).data),u){var p,d=o.hi||s.hoverinfo;if(d){var g=d.split(\"+\");-1!==g.indexOf(\"all\")&&(g=[\"color\"]),-1!==g.indexOf(\"color\")&&(p=!0)}var m,v=a.colormodel[s.colormodel],y=v.colormodel||s.colormodel,x=y.length,b=s._scaler(u),_=v.suffix,w=[];(s.hovertemplate||p)&&(w.push(\"[\"+[b[0]+_[0],b[1]+_[1],b[2]+_[2]].join(\", \")),4===x&&w.push(\", \"+b[3]+_[3]),w.push(\"]\"),w=w.join(\"\"),t.extraText=y.toUpperCase()+\": \"+w),Array.isArray(s.hovertext)&&Array.isArray(s.hovertext[h])?m=s.hovertext[h][f]:Array.isArray(s.text)&&Array.isArray(s.text[h])&&(m=s.text[h][f]);var T=c.c2p(o.y0+(h+.5)*s.dy),k=o.x0+(f+.5)*s.dx,A=o.y0+(h+.5)*s.dy,M=\"[\"+u.slice(0,s.colormodel.length).join(\", \")+\"]\";return[i.extendFlat(t,{index:[h,f],x0:l.c2p(o.x0+f*s.dx),x1:l.c2p(o.x0+(f+1)*s.dx),y0:T,y1:T,color:b,xVal:k,xLabelVal:k,yVal:A,yLabelVal:A,zLabelVal:M,text:m,hovertemplateLabels:{zLabel:M,colorLabel:w,\"color[0]Label\":b[0]+_[0],\"color[1]Label\":b[1]+_[1],\"color[2]Label\":b[2]+_[2],\"color[3]Label\":b[3]+_[3]}})]}}}},{\"../../components/fx\":406,\"../../lib\":503,\"./constants\":847}],852:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),calc:t(\"./calc\"),plot:t(\"./plot\"),style:t(\"./style\"),hoverPoints:t(\"./hover\"),eventData:t(\"./event_data\"),moduleType:\"trace\",name:\"image\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"cartesian\",\"svg\",\"2dMap\",\"noSortingByValue\"],animatable:!1,meta:{}}},{\"../../plots/cartesian\":568,\"./attributes\":845,\"./calc\":846,\"./defaults\":848,\"./event_data\":849,\"./hover\":851,\"./plot\":853,\"./style\":854}],853:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=i.strTranslate,o=t(\"../../constants/xmlns_namespaces\"),s=t(\"./constants\"),l=i.isIOS()||i.isSafari()||i.isIE();e.exports=function(t,e,r,c){var u=e.xaxis,f=e.yaxis,h=!(l||t._context._exportedPlot);i.makeTraceGroups(c,r,\"im\").each((function(e){var r=n.select(this),l=e[0],c=l.trace,p=(\"fast\"===c.zsmooth||!1===c.zsmooth&&h)&&!c._hasZ&&c._hasSource&&\"linear\"===u.type&&\"linear\"===f.type;c._realImage=p;var d,g,m,v,y,x,b=l.z,_=l.x0,w=l.y0,T=l.w,k=l.h,A=c.dx,M=c.dy;for(x=0;void 0===d&&x0;)g=u.c2p(_+x*A),x--;for(x=0;void 0===v&&x0;)y=f.c2p(w+x*M),x--;if(gI[0];if(O||z){var D=d+S/2,R=v+E/2;C+=\"transform:\"+a(D+\"px\",R+\"px\")+\"scale(\"+(O?-1:1)+\",\"+(z?-1:1)+\")\"+a(-D+\"px\",-R+\"px\")+\";\"}}L.attr(\"style\",C);var F=new Promise((function(t){if(c._hasZ)t();else if(c._hasSource)if(c._canvas&&c._canvas.el.width===T&&c._canvas.el.height===k&&c._canvas.source===c.source)t();else{var e=document.createElement(\"canvas\");e.width=T,e.height=k;var r=e.getContext(\"2d\");c._image=c._image||new Image;var n=c._image;n.onload=function(){r.drawImage(n,0,0),c._canvas={el:e,source:c.source},t()},n.setAttribute(\"src\",c.source)}})).then((function(){var t;if(c._hasZ)t=B((function(t,e){return b[e][t]})).toDataURL(\"image/png\");else if(c._hasSource)if(p)t=c.source;else{var e=c._canvas.el.getContext(\"2d\").getImageData(0,0,T,k).data;t=B((function(t,r){var n=4*(r*T+t);return[e[n],e[n+1],e[n+2],e[n+3]]})).toDataURL(\"image/png\")}L.attr({\"xlink:href\":t,height:E,width:S,x:d,y:v})}));t._promises.push(F)}function B(t){var e=document.createElement(\"canvas\");e.width=S,e.height=E;var r,n=e.getContext(\"2d\"),a=function(t){return i.constrain(Math.round(u.c2p(_+t*A)-d),0,S)},o=function(t){return i.constrain(Math.round(f.c2p(w+t*M)-v),0,E)},h=s.colormodel[c.colormodel],p=h.colormodel||c.colormodel,g=h.fmt;for(x=0;x0}function T(t){t.each((function(t){y.stroke(n.select(this),t.line.color)})).each((function(t){y.fill(n.select(this),t.color)})).style(\"stroke-width\",(function(t){return t.line.width}))}function k(t,e,r){var n=t._fullLayout,i=o.extendFlat({type:\"linear\",ticks:\"outside\",range:r,showline:!0},e),a={type:\"linear\",_id:\"x\"+e._id},s={letter:\"x\",font:n.font,noHover:!0,noTickson:!0};function l(t,e){return o.coerce(i,a,v,t,e)}return g(i,a,l,s,n),m(i,a,l,s),a}function A(t,e,r){return[Math.min(e/t.width,r/t.height),t,e+\"x\"+r]}function M(t,e,r,i){var a=document.createElementNS(\"http://www.w3.org/2000/svg\",\"text\"),o=n.select(a);return o.text(t).attr(\"x\",0).attr(\"y\",0).attr(\"text-anchor\",r).attr(\"data-unformatted\",t).call(p.convertToTspans,i).call(f.font,e),f.bBox(o.node())}function S(t,e,r,n,i,a){var s=\"_cache\"+e;t[s]&&t[s].key===i||(t[s]={key:i,value:r});var l=o.aggNums(a,null,[t[s].value,n],2);return t[s].value=l,l}e.exports=function(t,e,r,g){var m,v=t._fullLayout;w(r)&&g&&(m=g()),o.makeTraceGroups(v._indicatorlayer,e,\"trace\").each((function(e){var g,E,L,C,P,I=e[0].trace,O=n.select(this),z=I._hasGauge,D=I._isAngular,R=I._isBullet,F=I.domain,B={w:v._size.w*(F.x[1]-F.x[0]),h:v._size.h*(F.y[1]-F.y[0]),l:v._size.l+v._size.w*F.x[0],r:v._size.r+v._size.w*(1-F.x[1]),t:v._size.t+v._size.h*(1-F.y[1]),b:v._size.b+v._size.h*F.y[0]},N=B.l+B.w/2,j=B.t+B.h/2,U=Math.min(B.w/2,B.h),V=h.innerRadius*U,H=I.align||\"center\";if(E=j,z){if(D&&(g=N,E=j+U/2,L=function(t){return function(t,e){var r=Math.sqrt(t.width/2*(t.width/2)+t.height*t.height);return[e/r,t,e]}(t,.9*V)}),R){var q=h.bulletPadding,G=1-h.bulletNumberDomainSize+q;g=B.l+(G+(1-G)*b[H])*B.w,L=function(t){return A(t,(h.bulletNumberDomainSize-q)*B.w,B.h)}}}else g=B.l+b[H]*B.w,L=function(t){return A(t,B.w,B.h)};!function(t,e,r,i){var c,u,h,g=r[0].trace,m=i.numbersX,v=i.numbersY,T=g.align||\"center\",A=x[T],E=i.transitionOpts,L=i.onComplete,C=o.ensureSingle(e,\"g\",\"numbers\"),P=[];g._hasNumber&&P.push(\"number\");g._hasDelta&&(P.push(\"delta\"),\"left\"===g.delta.position&&P.reverse());var I=C.selectAll(\"text\").data(P);function O(e,r,n,i){if(!e.match(\"s\")||n>=0==i>=0||r(n).slice(-1).match(_)||r(i).slice(-1).match(_))return r;var a=e.slice().replace(\"s\",\"f\").replace(/\\d+/,(function(t){return parseInt(t)-1})),o=k(t,{tickformat:a});return function(t){return Math.abs(t)<1?d.tickText(o,t).text:r(t)}}I.enter().append(\"text\"),I.attr(\"text-anchor\",(function(){return A})).attr(\"class\",(function(t){return t})).attr(\"x\",null).attr(\"y\",null).attr(\"dx\",null).attr(\"dy\",null),I.exit().remove();var z,D=g.mode+g.align;g._hasDelta&&(z=function(){var e=k(t,{tickformat:g.delta.valueformat},g._range);e.setScale(),d.prepTicks(e);var i=function(t){return d.tickText(e,t).text},o=function(t){return g.delta.relative?t.relativeDelta:t.delta},s=function(t,e){return 0===t||\"number\"!=typeof t||isNaN(t)?\"-\":(t>0?g.delta.increasing.symbol:g.delta.decreasing.symbol)+e(t)},l=function(t){return t.delta>=0?g.delta.increasing.color:g.delta.decreasing.color};void 0===g._deltaLastValue&&(g._deltaLastValue=o(r[0]));var c=C.select(\"text.delta\");function h(){c.text(s(o(r[0]),i)).call(y.fill,l(r[0])).call(p.convertToTspans,t)}return c.call(f.font,g.delta.font).call(y.fill,l({delta:g._deltaLastValue})),w(E)?c.transition().duration(E.duration).ease(E.easing).tween(\"text\",(function(){var t=n.select(this),e=o(r[0]),c=g._deltaLastValue,u=O(g.delta.valueformat,i,c,e),f=a(c,e);return g._deltaLastValue=e,function(e){t.text(s(f(e),u)),t.call(y.fill,l({delta:f(e)}))}})).each(\"end\",(function(){h(),L&&L()})).each(\"interrupt\",(function(){h(),L&&L()})):h(),u=M(s(o(r[0]),i),g.delta.font,A,t),c}(),D+=g.delta.position+g.delta.font.size+g.delta.font.family+g.delta.valueformat,D+=g.delta.increasing.symbol+g.delta.decreasing.symbol,h=u);g._hasNumber&&(!function(){var e=k(t,{tickformat:g.number.valueformat},g._range);e.setScale(),d.prepTicks(e);var i=function(t){return d.tickText(e,t).text},o=g.number.suffix,s=g.number.prefix,l=C.select(\"text.number\");function u(){var e=\"number\"==typeof r[0].y?s+i(r[0].y)+o:\"-\";l.text(e).call(f.font,g.number.font).call(p.convertToTspans,t)}w(E)?l.transition().duration(E.duration).ease(E.easing).each(\"end\",(function(){u(),L&&L()})).each(\"interrupt\",(function(){u(),L&&L()})).attrTween(\"text\",(function(){var t=n.select(this),e=a(r[0].lastY,r[0].y);g._lastValue=r[0].y;var l=O(g.number.valueformat,i,r[0].lastY,r[0].y);return function(r){t.text(s+l(e(r))+o)}})):u(),c=M(s+i(r[0].y)+o,g.number.font,A,t)}(),D+=g.number.font.size+g.number.font.family+g.number.valueformat+g.number.suffix+g.number.prefix,h=c);if(g._hasDelta&&g._hasNumber){var R,F,B=[(c.left+c.right)/2,(c.top+c.bottom)/2],N=[(u.left+u.right)/2,(u.top+u.bottom)/2],j=.75*g.delta.font.size;\"left\"===g.delta.position&&(R=S(g,\"deltaPos\",0,-1*(c.width*b[g.align]+u.width*(1-b[g.align])+j),D,Math.min),F=B[1]-N[1],h={width:c.width+u.width+j,height:Math.max(c.height,u.height),left:u.left+R,right:c.right,top:Math.min(c.top,u.top+F),bottom:Math.max(c.bottom,u.bottom+F)}),\"right\"===g.delta.position&&(R=S(g,\"deltaPos\",0,c.width*(1-b[g.align])+u.width*b[g.align]+j,D,Math.max),F=B[1]-N[1],h={width:c.width+u.width+j,height:Math.max(c.height,u.height),left:c.left,right:u.right+R,top:Math.min(c.top,u.top+F),bottom:Math.max(c.bottom,u.bottom+F)}),\"bottom\"===g.delta.position&&(R=null,F=u.height,h={width:Math.max(c.width,u.width),height:c.height+u.height,left:Math.min(c.left,u.left),right:Math.max(c.right,u.right),top:c.bottom-c.height,bottom:c.bottom+u.height}),\"top\"===g.delta.position&&(R=null,F=c.top,h={width:Math.max(c.width,u.width),height:c.height+u.height,left:Math.min(c.left,u.left),right:Math.max(c.right,u.right),top:c.bottom-c.height-u.height,bottom:c.bottom}),z.attr({dx:R,dy:F})}(g._hasNumber||g._hasDelta)&&C.attr(\"transform\",(function(){var t=i.numbersScaler(h);D+=t[2];var e,r=S(g,\"numbersScale\",1,t[0],D,Math.min);g._scaleNumbers||(r=1),e=g._isAngular?v-r*h.bottom:v-r*(h.top+h.bottom)/2,g._numbersTop=r*h.top+e;var n=h[T];\"center\"===T&&(n=(h.left+h.right)/2);var a=m-r*n;return a=S(g,\"numbersTranslate\",0,a,D,Math.max),l(a,e)+s(r)}))}(t,O,e,{numbersX:g,numbersY:E,numbersScaler:L,transitionOpts:r,onComplete:m}),z&&(C={range:I.gauge.axis.range,color:I.gauge.bgcolor,line:{color:I.gauge.bordercolor,width:0},thickness:1},P={range:I.gauge.axis.range,color:\"rgba(0, 0, 0, 0)\",line:{color:I.gauge.bordercolor,width:I.gauge.borderwidth},thickness:1});var Y=O.selectAll(\"g.angular\").data(D?e:[]);Y.exit().remove();var W=O.selectAll(\"g.angularaxis\").data(D?e:[]);W.exit().remove(),D&&function(t,e,r,a){var o,s,f,h,p=r[0].trace,g=a.size,m=a.radius,v=a.innerRadius,y=a.gaugeBg,x=a.gaugeOutline,b=[g.l+g.w/2,g.t+g.h/2+m/2],_=a.gauge,A=a.layer,M=a.transitionOpts,S=a.onComplete,E=Math.PI/2;function L(t){var e=p.gauge.axis.range[0],r=(t-e)/(p.gauge.axis.range[1]-e)*Math.PI-E;return r<-E?-E:r>E?E:r}function C(t){return n.svg.arc().innerRadius((v+m)/2-t/2*(m-v)).outerRadius((v+m)/2+t/2*(m-v)).startAngle(-E)}function P(t){t.attr(\"d\",(function(t){return C(t.thickness).startAngle(L(t.range[0])).endAngle(L(t.range[1]))()}))}_.enter().append(\"g\").classed(\"angular\",!0),_.attr(\"transform\",l(b[0],b[1])),A.enter().append(\"g\").classed(\"angularaxis\",!0).classed(\"crisp\",!0),A.selectAll(\"g.xangularaxistick,path,text\").remove(),(o=k(t,p.gauge.axis)).type=\"linear\",o.range=p.gauge.axis.range,o._id=\"xangularaxis\",o.ticklabeloverflow=\"allow\",o.setScale();var I=function(t){return(o.range[0]-t.x)/(o.range[1]-o.range[0])*Math.PI+Math.PI},O={},z=d.makeLabelFns(o,0).labelStandoff;O.xFn=function(t){var e=I(t);return Math.cos(e)*z},O.yFn=function(t){var e=I(t),r=Math.sin(e)>0?.2:1;return-Math.sin(e)*(z+t.fontSize*r)+Math.abs(Math.cos(e))*(t.fontSize*u)},O.anchorFn=function(t){var e=I(t),r=Math.cos(e);return Math.abs(r)<.1?\"middle\":r>0?\"start\":\"end\"},O.heightFn=function(t,e,r){var n=I(t);return-.5*(1+Math.sin(n))*r};var D=function(t){return l(b[0]+m*Math.cos(t),b[1]-m*Math.sin(t))};f=function(t){return D(I(t))};if(s=d.calcTicks(o),h=d.getTickSigns(o)[2],o.visible){h=\"inside\"===o.ticks?-1:1;var R=(o.linewidth||1)/2;d.drawTicks(t,o,{vals:s,layer:A,path:\"M\"+h*R+\",0h\"+h*o.ticklen,transFn:function(t){var e=I(t);return D(e)+\"rotate(\"+-c(e)+\")\"}}),d.drawLabels(t,o,{vals:s,layer:A,transFn:f,labelFns:O})}var F=[y].concat(p.gauge.steps),B=_.selectAll(\"g.bg-arc\").data(F);B.enter().append(\"g\").classed(\"bg-arc\",!0).append(\"path\"),B.select(\"path\").call(P).call(T),B.exit().remove();var N=C(p.gauge.bar.thickness),j=_.selectAll(\"g.value-arc\").data([p.gauge.bar]);j.enter().append(\"g\").classed(\"value-arc\",!0).append(\"path\");var U=j.select(\"path\");w(M)?(U.transition().duration(M.duration).ease(M.easing).each(\"end\",(function(){S&&S()})).each(\"interrupt\",(function(){S&&S()})).attrTween(\"d\",(V=N,H=L(r[0].lastY),q=L(r[0].y),function(){var t=i(H,q);return function(e){return V.endAngle(t(e))()}})),p._lastValue=r[0].y):U.attr(\"d\",\"number\"==typeof r[0].y?N.endAngle(L(r[0].y)):\"M0,0Z\");var V,H,q;U.call(T),j.exit().remove(),F=[];var G=p.gauge.threshold.value;(G||0===G)&&F.push({range:[G,G],color:p.gauge.threshold.color,line:{color:p.gauge.threshold.line.color,width:p.gauge.threshold.line.width},thickness:p.gauge.threshold.thickness});var Y=_.selectAll(\"g.threshold-arc\").data(F);Y.enter().append(\"g\").classed(\"threshold-arc\",!0).append(\"path\"),Y.select(\"path\").call(P).call(T),Y.exit().remove();var W=_.selectAll(\"g.gauge-outline\").data([x]);W.enter().append(\"g\").classed(\"gauge-outline\",!0).append(\"path\"),W.select(\"path\").call(P).call(T),W.exit().remove()}(t,0,e,{radius:U,innerRadius:V,gauge:Y,layer:W,size:B,gaugeBg:C,gaugeOutline:P,transitionOpts:r,onComplete:m});var X=O.selectAll(\"g.bullet\").data(R?e:[]);X.exit().remove();var Z=O.selectAll(\"g.bulletaxis\").data(R?e:[]);Z.exit().remove(),R&&function(t,e,r,n){var i,a,o,s,c,u=r[0].trace,f=n.gauge,p=n.layer,g=n.gaugeBg,m=n.gaugeOutline,v=n.size,x=u.domain,b=n.transitionOpts,_=n.onComplete;f.enter().append(\"g\").classed(\"bullet\",!0),f.attr(\"transform\",l(v.l,v.t)),p.enter().append(\"g\").classed(\"bulletaxis\",!0).classed(\"crisp\",!0),p.selectAll(\"g.xbulletaxistick,path,text\").remove();var A=v.h,M=u.gauge.bar.thickness*A,S=x.x[0],E=x.x[0]+(x.x[1]-x.x[0])*(u._hasNumber||u._hasDelta?1-h.bulletNumberDomainSize:1);(i=k(t,u.gauge.axis))._id=\"xbulletaxis\",i.domain=[S,E],i.setScale(),a=d.calcTicks(i),o=d.makeTransTickFn(i),s=d.getTickSigns(i)[2],c=v.t+v.h,i.visible&&(d.drawTicks(t,i,{vals:\"inside\"===i.ticks?d.clipEnds(i,a):a,layer:p,path:d.makeTickPath(i,c,s),transFn:o}),d.drawLabels(t,i,{vals:a,layer:p,transFn:o,labelFns:d.makeLabelFns(i,c)}));function L(t){t.attr(\"width\",(function(t){return Math.max(0,i.c2p(t.range[1])-i.c2p(t.range[0]))})).attr(\"x\",(function(t){return i.c2p(t.range[0])})).attr(\"y\",(function(t){return.5*(1-t.thickness)*A})).attr(\"height\",(function(t){return t.thickness*A}))}var C=[g].concat(u.gauge.steps),P=f.selectAll(\"g.bg-bullet\").data(C);P.enter().append(\"g\").classed(\"bg-bullet\",!0).append(\"rect\"),P.select(\"rect\").call(L).call(T),P.exit().remove();var I=f.selectAll(\"g.value-bullet\").data([u.gauge.bar]);I.enter().append(\"g\").classed(\"value-bullet\",!0).append(\"rect\"),I.select(\"rect\").attr(\"height\",M).attr(\"y\",(A-M)/2).call(T),w(b)?I.select(\"rect\").transition().duration(b.duration).ease(b.easing).each(\"end\",(function(){_&&_()})).each(\"interrupt\",(function(){_&&_()})).attr(\"width\",Math.max(0,i.c2p(Math.min(u.gauge.axis.range[1],r[0].y)))):I.select(\"rect\").attr(\"width\",\"number\"==typeof r[0].y?Math.max(0,i.c2p(Math.min(u.gauge.axis.range[1],r[0].y))):0);I.exit().remove();var O=r.filter((function(){return u.gauge.threshold.value||0===u.gauge.threshold.value})),z=f.selectAll(\"g.threshold-bullet\").data(O);z.enter().append(\"g\").classed(\"threshold-bullet\",!0).append(\"line\"),z.select(\"line\").attr(\"x1\",i.c2p(u.gauge.threshold.value)).attr(\"x2\",i.c2p(u.gauge.threshold.value)).attr(\"y1\",(1-u.gauge.threshold.thickness)/2*A).attr(\"y2\",(1-(1-u.gauge.threshold.thickness)/2)*A).call(y.stroke,u.gauge.threshold.line.color).style(\"stroke-width\",u.gauge.threshold.line.width),z.exit().remove();var D=f.selectAll(\"g.gauge-outline\").data([m]);D.enter().append(\"g\").classed(\"gauge-outline\",!0).append(\"rect\"),D.select(\"rect\").call(L).call(T),D.exit().remove()}(t,0,e,{gauge:X,layer:Z,size:B,gaugeBg:C,gaugeOutline:P,transitionOpts:r,onComplete:m});var J=O.selectAll(\"text.title\").data(e);J.exit().remove(),J.enter().append(\"text\").classed(\"title\",!0),J.attr(\"text-anchor\",(function(){return R?x.right:x[I.title.align]})).text(I.title.text).call(f.font,I.title.font).call(p.convertToTspans,t),J.attr(\"transform\",(function(){var t,e=B.l+B.w*b[I.title.align],r=h.titlePadding,n=f.bBox(J.node());if(z){if(D)if(I.gauge.axis.visible)t=f.bBox(W.node()).top-r-n.bottom;else t=B.t+B.h/2-U/2-n.bottom-r;R&&(t=E-(n.top+n.bottom)/2,e=B.l-h.bulletPadding*B.w)}else t=I._numbersTop-r-n.bottom;return l(e,t)}))}))}},{\"../../components/color\":366,\"../../components/drawing\":388,\"../../constants/alignment\":471,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../../plots/cartesian/axes\":554,\"../../plots/cartesian/axis_defaults\":556,\"../../plots/cartesian/layout_attributes\":569,\"../../plots/cartesian/position_defaults\":572,\"./constants\":858,\"@plotly/d3\":58,\"d3-interpolate\":116}],862:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/attributes\"),i=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,a=t(\"../../plots/template_attributes\").hovertemplateAttrs,o=t(\"../mesh3d/attributes\"),s=t(\"../../plots/attributes\"),l=t(\"../../lib/extend\").extendFlat,c=t(\"../../plot_api/edit_types\").overrideAll;var u=e.exports=c(l({x:{valType:\"data_array\"},y:{valType:\"data_array\"},z:{valType:\"data_array\"},value:{valType:\"data_array\"},isomin:{valType:\"number\"},isomax:{valType:\"number\"},surface:{show:{valType:\"boolean\",dflt:!0},count:{valType:\"integer\",dflt:2,min:1},fill:{valType:\"number\",min:0,max:1,dflt:1},pattern:{valType:\"flaglist\",flags:[\"A\",\"B\",\"C\",\"D\",\"E\"],extras:[\"all\",\"odd\",\"even\"],dflt:\"all\"}},spaceframe:{show:{valType:\"boolean\",dflt:!1},fill:{valType:\"number\",min:0,max:1,dflt:.15}},slices:{x:{show:{valType:\"boolean\",dflt:!1},locations:{valType:\"data_array\",dflt:[]},fill:{valType:\"number\",min:0,max:1,dflt:1}},y:{show:{valType:\"boolean\",dflt:!1},locations:{valType:\"data_array\",dflt:[]},fill:{valType:\"number\",min:0,max:1,dflt:1}},z:{show:{valType:\"boolean\",dflt:!1},locations:{valType:\"data_array\",dflt:[]},fill:{valType:\"number\",min:0,max:1,dflt:1}}},caps:{x:{show:{valType:\"boolean\",dflt:!0},fill:{valType:\"number\",min:0,max:1,dflt:1}},y:{show:{valType:\"boolean\",dflt:!0},fill:{valType:\"number\",min:0,max:1,dflt:1}},z:{show:{valType:\"boolean\",dflt:!0},fill:{valType:\"number\",min:0,max:1,dflt:1}}},text:{valType:\"string\",dflt:\"\",arrayOk:!0},hovertext:{valType:\"string\",dflt:\"\",arrayOk:!0},hovertemplate:a(),xhoverformat:i(\"x\"),yhoverformat:i(\"y\"),zhoverformat:i(\"z\"),valuehoverformat:i(\"value\",1),showlegend:l({},s.showlegend,{dflt:!1})},n(\"\",{colorAttr:\"`value`\",showScaleDflt:!0,editTypeOverride:\"calc\"}),{opacity:o.opacity,lightposition:o.lightposition,lighting:o.lighting,flatshading:o.flatshading,contour:o.contour,hoverinfo:l({},s.hoverinfo)}),\"calc\",\"nested\");u.flatshading.dflt=!0,u.lighting.facenormalsepsilon.dflt=0,u.x.editType=u.y.editType=u.z.editType=u.value.editType=\"calc+clearAxisTypes\",u.transforms=void 0},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plot_api/edit_types\":536,\"../../plots/attributes\":550,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/template_attributes\":633,\"../mesh3d/attributes\":867}],863:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/calc\"),i=t(\"../streamtube/calc\").processGrid,a=t(\"../streamtube/calc\").filter;e.exports=function(t,e){e._len=Math.min(e.x.length,e.y.length,e.z.length,e.value.length),e._x=a(e.x,e._len),e._y=a(e.y,e._len),e._z=a(e.z,e._len),e._value=a(e.value,e._len);var r=i(e);e._gridFill=r.fill,e._Xs=r.Xs,e._Ys=r.Ys,e._Zs=r.Zs,e._len=r.len;for(var o=1/0,s=-1/0,l=0;l0;r--){var n=Math.min(e[r],e[r-1]),i=Math.max(e[r],e[r-1]);if(i>n&&n-1}function R(t,e){return null===t?e:t}function F(e,r,n){C();var i,a,o,l=[r],c=[n];if(s>=1)l=[r],c=[n];else if(s>0){var u=function(t,e){var r=t[0],n=t[1],i=t[2],a=function(t,e,r){for(var n=[],i=0;i-1?n[p]:L(d,g,v);h[p]=x>-1?x:I(d,g,v,R(e,y))}i=h[0],a=h[1],o=h[2],t._meshI.push(i),t._meshJ.push(a),t._meshK.push(o),++m}}function B(t,e,r,n){var i=t[3];in&&(i=n);for(var a=(t[3]-i)/(t[3]-e[3]+1e-9),o=[],s=0;s<4;s++)o[s]=(1-a)*t[s]+a*e[s];return o}function N(t,e,r){return t>=e&&t<=r}function j(t){var e=.001*(E-S);return t>=S-e&&t<=E+e}function U(e){for(var r=[],n=0;n<4;n++){var i=e[n];r.push([t._x[i],t._y[i],t._z[i],t._value[i]])}return r}function V(t,e,r,n,i,a){a||(a=1),r=[-1,-1,-1];var o=!1,s=[N(e[0][3],n,i),N(e[1][3],n,i),N(e[2][3],n,i)];if(!s[0]&&!s[1]&&!s[2])return!1;var l=function(t,e,r){return j(e[0][3])&&j(e[1][3])&&j(e[2][3])?(F(t,e,r),!0):a<3&&V(t,e,r,S,E,++a)};if(s[0]&&s[1]&&s[2])return l(t,e,r)||o;var c=!1;return[[0,1,2],[2,0,1],[1,2,0]].forEach((function(a){if(s[a[0]]&&s[a[1]]&&!s[a[2]]){var u=e[a[0]],f=e[a[1]],h=e[a[2]],p=B(h,u,n,i),d=B(h,f,n,i);o=l(t,[d,p,u],[-1,-1,r[a[0]]])||o,o=l(t,[u,f,d],[r[a[0]],r[a[1]],-1])||o,c=!0}})),c||[[0,1,2],[1,2,0],[2,0,1]].forEach((function(a){if(s[a[0]]&&!s[a[1]]&&!s[a[2]]){var u=e[a[0]],f=e[a[1]],h=e[a[2]],p=B(f,u,n,i),d=B(h,u,n,i);o=l(t,[d,p,u],[-1,-1,r[a[0]]])||o,c=!0}})),o}function H(t,e,r,n){var i=!1,a=U(e),o=[N(a[0][3],r,n),N(a[1][3],r,n),N(a[2][3],r,n),N(a[3][3],r,n)];if(!(o[0]||o[1]||o[2]||o[3]))return i;if(o[0]&&o[1]&&o[2]&&o[3])return g&&(i=function(t,e,r){var n=function(n,i,a){F(t,[e[n],e[i],e[a]],[r[n],r[i],r[a]])};n(0,1,2),n(3,0,1),n(2,3,0),n(1,2,3)}(t,a,e)||i),i;var s=!1;return[[0,1,2,3],[3,0,1,2],[2,3,0,1],[1,2,3,0]].forEach((function(l){if(o[l[0]]&&o[l[1]]&&o[l[2]]&&!o[l[3]]){var c=a[l[0]],u=a[l[1]],f=a[l[2]],h=a[l[3]];if(g)i=F(t,[c,u,f],[e[l[0]],e[l[1]],e[l[2]]])||i;else{var p=B(h,c,r,n),d=B(h,u,r,n),m=B(h,f,r,n);i=F(null,[p,d,m],[-1,-1,-1])||i}s=!0}})),s?i:([[0,1,2,3],[1,2,3,0],[2,3,0,1],[3,0,1,2],[0,2,3,1],[1,3,2,0]].forEach((function(l){if(o[l[0]]&&o[l[1]]&&!o[l[2]]&&!o[l[3]]){var c=a[l[0]],u=a[l[1]],f=a[l[2]],h=a[l[3]],p=B(f,c,r,n),d=B(f,u,r,n),m=B(h,u,r,n),v=B(h,c,r,n);g?(i=F(t,[c,v,p],[e[l[0]],-1,-1])||i,i=F(t,[u,d,m],[e[l[1]],-1,-1])||i):i=function(t,e,r){var n=function(n,i,a){F(t,[e[n],e[i],e[a]],[r[n],r[i],r[a]])};n(0,1,2),n(2,3,0)}(null,[p,d,m,v],[-1,-1,-1,-1])||i,s=!0}})),s||[[0,1,2,3],[1,2,3,0],[2,3,0,1],[3,0,1,2]].forEach((function(l){if(o[l[0]]&&!o[l[1]]&&!o[l[2]]&&!o[l[3]]){var c=a[l[0]],u=a[l[1]],f=a[l[2]],h=a[l[3]],p=B(u,c,r,n),d=B(f,c,r,n),m=B(h,c,r,n);g?(i=F(t,[c,p,d],[e[l[0]],-1,-1])||i,i=F(t,[c,d,m],[e[l[0]],-1,-1])||i,i=F(t,[c,m,p],[e[l[0]],-1,-1])||i):i=F(null,[p,d,m],[-1,-1,-1])||i,s=!0}})),i)}function q(t,e,r,n,i,a,o,s,l,c,u){var f=!1;return d&&(D(t,\"A\")&&(f=H(null,[e,r,n,a],c,u)||f),D(t,\"B\")&&(f=H(null,[r,n,i,l],c,u)||f),D(t,\"C\")&&(f=H(null,[r,a,o,l],c,u)||f),D(t,\"D\")&&(f=H(null,[n,a,s,l],c,u)||f),D(t,\"E\")&&(f=H(null,[r,n,a,l],c,u)||f)),g&&(f=H(t,[r,n,a,l],c,u)||f),f}function G(t,e,r,n,i,a,o,s){return[!0===s[0]||V(t,U([e,r,n]),[e,r,n],a,o),!0===s[1]||V(t,U([n,i,e]),[n,i,e],a,o)]}function Y(t,e,r,n,i,a,o,s,l){return s?G(t,e,r,i,n,a,o,l):G(t,r,i,n,e,a,o,l)}function W(t,e,r,n,i,a,o){var s,l,c,u,f=!1,h=function(){f=V(t,[s,l,c],[-1,-1,-1],i,a)||f,f=V(t,[c,u,s],[-1,-1,-1],i,a)||f},p=o[0],d=o[1],g=o[2];return p&&(s=O(U([k(e,r-0,n-0)])[0],U([k(e-1,r-0,n-0)])[0],p),l=O(U([k(e,r-0,n-1)])[0],U([k(e-1,r-0,n-1)])[0],p),c=O(U([k(e,r-1,n-1)])[0],U([k(e-1,r-1,n-1)])[0],p),u=O(U([k(e,r-1,n-0)])[0],U([k(e-1,r-1,n-0)])[0],p),h()),d&&(s=O(U([k(e-0,r,n-0)])[0],U([k(e-0,r-1,n-0)])[0],d),l=O(U([k(e-0,r,n-1)])[0],U([k(e-0,r-1,n-1)])[0],d),c=O(U([k(e-1,r,n-1)])[0],U([k(e-1,r-1,n-1)])[0],d),u=O(U([k(e-1,r,n-0)])[0],U([k(e-1,r-1,n-0)])[0],d),h()),g&&(s=O(U([k(e-0,r-0,n)])[0],U([k(e-0,r-0,n-1)])[0],g),l=O(U([k(e-0,r-1,n)])[0],U([k(e-0,r-1,n-1)])[0],g),c=O(U([k(e-1,r-1,n)])[0],U([k(e-1,r-1,n-1)])[0],g),u=O(U([k(e-1,r-0,n)])[0],U([k(e-1,r-0,n-1)])[0],g),h()),f}function X(t,e,r,n,i,a,o,s,l,c,u,f){var h=t;return f?(d&&\"even\"===t&&(h=null),q(h,e,r,n,i,a,o,s,l,c,u)):(d&&\"odd\"===t&&(h=null),q(h,l,s,o,a,i,n,r,e,c,u))}function Z(t,e,r,n,i){for(var a=[],o=0,s=0;sMath.abs(d-M)?[A,d]:[d,M];$(e,T[0],T[1])}}var L=[[Math.min(S,M),Math.max(S,M)],[Math.min(A,E),Math.max(A,E)]];[\"x\",\"y\",\"z\"].forEach((function(e){for(var r=[],n=0;n0&&(u.push(p.id),\"x\"===e?f.push([p.distRatio,0,0]):\"y\"===e?f.push([0,p.distRatio,0]):f.push([0,0,p.distRatio]))}else c=nt(1,\"x\"===e?b-1:\"y\"===e?_-1:w-1);u.length>0&&(r[i]=\"x\"===e?tt(null,u,a,o,f,r[i]):\"y\"===e?et(null,u,a,o,f,r[i]):rt(null,u,a,o,f,r[i]),i++),c.length>0&&(r[i]=\"x\"===e?Z(null,c,a,o,r[i]):\"y\"===e?J(null,c,a,o,r[i]):K(null,c,a,o,r[i]),i++)}var d=t.caps[e];d.show&&d.fill&&(z(d.fill),r[i]=\"x\"===e?Z(null,[0,b-1],a,o,r[i]):\"y\"===e?J(null,[0,_-1],a,o,r[i]):K(null,[0,w-1],a,o,r[i]),i++)}})),0===m&&P(),t._meshX=n,t._meshY=i,t._meshZ=a,t._meshIntensity=o,t._Xs=v,t._Ys=y,t._Zs=x}(),t}e.exports={findNearestOnAxis:l,generateIsoMeshes:h,createIsosurfaceTrace:function(t,e){var r=t.glplot.gl,i=n({gl:r}),a=new c(t,i,e.uid);return i._trace=a,a.update(e),t.glplot.add(i),a}}},{\"../../../stackgl_modules\":1120,\"../../components/colorscale\":378,\"../../lib/gl_format_color\":499,\"../../lib/str2rgbarray\":528,\"../../plots/gl3d/zip3\":609}],865:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../registry\"),a=t(\"./attributes\"),o=t(\"../../components/colorscale/defaults\");function s(t,e,r,n,a){var s=a(\"isomin\"),l=a(\"isomax\");null!=l&&null!=s&&s>l&&(e.isomin=null,e.isomax=null);var c=a(\"x\"),u=a(\"y\"),f=a(\"z\"),h=a(\"value\");c&&c.length&&u&&u.length&&f&&f.length&&h&&h.length?(i.getComponentMethod(\"calendars\",\"handleTraceDefaults\")(t,e,[\"x\",\"y\",\"z\"],n),a(\"valuehoverformat\"),[\"x\",\"y\",\"z\"].forEach((function(t){a(t+\"hoverformat\");var e=\"caps.\"+t;a(e+\".show\")&&a(e+\".fill\");var r=\"slices.\"+t;a(r+\".show\")&&(a(r+\".fill\"),a(r+\".locations\"))})),a(\"spaceframe.show\")&&a(\"spaceframe.fill\"),a(\"surface.show\")&&(a(\"surface.count\"),a(\"surface.fill\"),a(\"surface.pattern\")),a(\"contour.show\")&&(a(\"contour.color\"),a(\"contour.width\")),[\"text\",\"hovertext\",\"hovertemplate\",\"lighting.ambient\",\"lighting.diffuse\",\"lighting.specular\",\"lighting.roughness\",\"lighting.fresnel\",\"lighting.vertexnormalsepsilon\",\"lighting.facenormalsepsilon\",\"lightposition.x\",\"lightposition.y\",\"lightposition.z\",\"flatshading\",\"opacity\"].forEach((function(t){a(t)})),o(t,e,n,a,{prefix:\"\",cLetter:\"c\"}),e._length=null):e.visible=!1}e.exports={supplyDefaults:function(t,e,r,i){s(t,e,r,i,(function(r,i){return n.coerce(t,e,a,r,i)}))},supplyIsoDefaults:s}},{\"../../components/colorscale/defaults\":376,\"../../lib\":503,\"../../registry\":638,\"./attributes\":862}],866:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\").supplyDefaults,calc:t(\"./calc\"),colorbar:{min:\"cmin\",max:\"cmax\"},plot:t(\"./convert\").createIsosurfaceTrace,moduleType:\"trace\",name:\"isosurface\",basePlotModule:t(\"../../plots/gl3d\"),categories:[\"gl3d\",\"showLegend\"],meta:{}}},{\"../../plots/gl3d\":598,\"./attributes\":862,\"./calc\":863,\"./convert\":864,\"./defaults\":865}],867:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/attributes\"),i=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,a=t(\"../../plots/template_attributes\").hovertemplateAttrs,o=t(\"../surface/attributes\"),s=t(\"../../plots/attributes\"),l=t(\"../../lib/extend\").extendFlat;e.exports=l({x:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},y:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},z:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},i:{valType:\"data_array\",editType:\"calc\"},j:{valType:\"data_array\",editType:\"calc\"},k:{valType:\"data_array\",editType:\"calc\"},text:{valType:\"string\",dflt:\"\",arrayOk:!0,editType:\"calc\"},hovertext:{valType:\"string\",dflt:\"\",arrayOk:!0,editType:\"calc\"},hovertemplate:a({editType:\"calc\"}),xhoverformat:i(\"x\"),yhoverformat:i(\"y\"),zhoverformat:i(\"z\"),delaunayaxis:{valType:\"enumerated\",values:[\"x\",\"y\",\"z\"],dflt:\"z\",editType:\"calc\"},alphahull:{valType:\"number\",dflt:-1,editType:\"calc\"},intensity:{valType:\"data_array\",editType:\"calc\"},intensitymode:{valType:\"enumerated\",values:[\"vertex\",\"cell\"],dflt:\"vertex\",editType:\"calc\"},color:{valType:\"color\",editType:\"calc\"},vertexcolor:{valType:\"data_array\",editType:\"calc\"},facecolor:{valType:\"data_array\",editType:\"calc\"},transforms:void 0},n(\"\",{colorAttr:\"`intensity`\",showScaleDflt:!0,editTypeOverride:\"calc\"}),{opacity:o.opacity,flatshading:{valType:\"boolean\",dflt:!1,editType:\"calc\"},contour:{show:l({},o.contours.x.show,{}),color:o.contours.x.color,width:o.contours.x.width,editType:\"calc\"},lightposition:{x:l({},o.lightposition.x,{dflt:1e5}),y:l({},o.lightposition.y,{dflt:1e5}),z:l({},o.lightposition.z,{dflt:0}),editType:\"calc\"},lighting:l({vertexnormalsepsilon:{valType:\"number\",min:0,max:1,dflt:1e-12,editType:\"calc\"},facenormalsepsilon:{valType:\"number\",min:0,max:1,dflt:1e-6,editType:\"calc\"},editType:\"calc\"},o.lighting),hoverinfo:l({},s.hoverinfo,{editType:\"calc\"}),showlegend:l({},s.showlegend,{dflt:!1})})},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/template_attributes\":633,\"../surface/attributes\":1057}],868:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/calc\");e.exports=function(t,e){e.intensity&&n(t,e,{vals:e.intensity,containerStr:\"\",cLetter:\"c\"})}},{\"../../components/colorscale/calc\":374}],869:[function(t,e,r){\"use strict\";var n=t(\"../../../stackgl_modules\").gl_mesh3d,i=t(\"../../../stackgl_modules\").delaunay_triangulate,a=t(\"../../../stackgl_modules\").alpha_shape,o=t(\"../../../stackgl_modules\").convex_hull,s=t(\"../../lib/gl_format_color\").parseColorScale,l=t(\"../../lib/str2rgbarray\"),c=t(\"../../components/colorscale\").extractOpts,u=t(\"../../plots/gl3d/zip3\");function f(t,e,r){this.scene=t,this.uid=r,this.mesh=e,this.name=\"\",this.color=\"#fff\",this.data=null,this.showContour=!1}var h=f.prototype;function p(t){for(var e=[],r=t.length,n=0;n=e-.5)return!1;return!0}h.handlePick=function(t){if(t.object===this.mesh){var e=t.index=t.data.index;t.data._cellCenter?t.traceCoordinate=t.data.dataCoordinate:t.traceCoordinate=[this.data.x[e],this.data.y[e],this.data.z[e]];var r=this.data.hovertext||this.data.text;return Array.isArray(r)&&void 0!==r[e]?t.textLabel=r[e]:r&&(t.textLabel=r),!0}},h.update=function(t){var e=this.scene,r=e.fullSceneLayout;this.data=t;var n,f=t.x.length,h=u(d(r.xaxis,t.x,e.dataScale[0],t.xcalendar),d(r.yaxis,t.y,e.dataScale[1],t.ycalendar),d(r.zaxis,t.z,e.dataScale[2],t.zcalendar));if(t.i&&t.j&&t.k){if(t.i.length!==t.j.length||t.j.length!==t.k.length||!m(t.i,f)||!m(t.j,f)||!m(t.k,f))return;n=u(g(t.i),g(t.j),g(t.k))}else n=0===t.alphahull?o(h):t.alphahull>0?a(t.alphahull,h):function(t,e){for(var r=[\"x\",\"y\",\"z\"].indexOf(t),n=[],a=e.length,o=0;ov):m=A>w,v=A;var M=c(w,T,k,A);M.pos=_,M.yc=(w+A)/2,M.i=b,M.dir=m?\"increasing\":\"decreasing\",M.x=M.pos,M.y=[k,T],y&&(M.orig_p=r[b]),d&&(M.tx=e.text[b]),g&&(M.htx=e.hovertext[b]),x.push(M)}else x.push({pos:_,empty:!0})}return e._extremes[l._id]=a.findExtremes(l,n.concat(h,f),{padded:!0}),x.length&&(x[0].t={labels:{open:i(t,\"open:\")+\" \",high:i(t,\"high:\")+\" \",low:i(t,\"low:\")+\" \",close:i(t,\"close:\")+\" \"}}),x}e.exports={calc:function(t,e){var r=a.getFromId(t,e.xaxis),i=a.getFromId(t,e.yaxis),s=function(t,e,r){var i=r._minDiff;if(!i){var a,s=t._fullData,l=[];for(i=1/0,a=0;a\"+c.labels[x]+n.hoverLabelText(s,b,l.yhoverformat):((y=i.extendFlat({},h)).y0=y.y1=_,y.yLabelVal=b,y.yLabel=c.labels[x]+n.hoverLabelText(s,b,l.yhoverformat),y.name=\"\",f.push(y),m[b]=y)}return f}function h(t,e,r,i){var a=t.cd,o=t.ya,l=a[0].trace,f=a[0].t,h=u(t,e,r,i);if(!h)return[];var p=a[h.index],d=h.index=p.i,g=p.dir;function m(t){return f.labels[t]+n.hoverLabelText(o,l[t][d],l.yhoverformat)}var v=p.hi||l.hoverinfo,y=v.split(\"+\"),x=\"all\"===v,b=x||-1!==y.indexOf(\"y\"),_=x||-1!==y.indexOf(\"text\"),w=b?[m(\"open\"),m(\"high\"),m(\"low\"),m(\"close\")+\" \"+c[g]]:[];return _&&s(p,l,w),h.extraText=w.join(\"
\"),h.y0=h.y1=o.c2p(p.yc,!0),[h]}e.exports={hoverPoints:function(t,e,r,n){return t.cd[0].trace.hoverlabel.split?f(t,e,r,n):h(t,e,r,n)},hoverSplit:f,hoverOnPoints:h}},{\"../../components/color\":366,\"../../components/fx\":406,\"../../constants/delta.js\":473,\"../../lib\":503,\"../../plots/cartesian/axes\":554}],876:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"ohlc\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"cartesian\",\"svg\",\"showLegend\"],meta:{},attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),calc:t(\"./calc\").calc,plot:t(\"./plot\"),style:t(\"./style\"),hoverPoints:t(\"./hover\").hoverPoints,selectPoints:t(\"./select\")}},{\"../../plots/cartesian\":568,\"./attributes\":872,\"./calc\":873,\"./defaults\":874,\"./hover\":875,\"./plot\":878,\"./select\":879,\"./style\":880}],877:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\");e.exports=function(t,e,r,a){var o=r(\"x\"),s=r(\"open\"),l=r(\"high\"),c=r(\"low\"),u=r(\"close\");if(r(\"hoverlabel.split\"),n.getComponentMethod(\"calendars\",\"handleTraceDefaults\")(t,e,[\"x\"],a),s&&l&&c&&u){var f=Math.min(s.length,l.length,c.length,u.length);return o&&(f=Math.min(f,i.minRowLength(o))),e._length=f,f}}},{\"../../lib\":503,\"../../registry\":638}],878:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\");e.exports=function(t,e,r,a){var o=e.yaxis,s=e.xaxis,l=!!s.rangebreaks;i.makeTraceGroups(a,r,\"trace ohlc\").each((function(t){var e=n.select(this),r=t[0],a=r.t;if(!0!==r.trace.visible||a.empty)e.remove();else{var c=a.tickLen,u=e.selectAll(\"path\").data(i.identity);u.enter().append(\"path\"),u.exit().remove(),u.attr(\"d\",(function(t){if(t.empty)return\"M0,0Z\";var e=s.c2p(t.pos-c,!0),r=s.c2p(t.pos+c,!0),n=l?(e+r)/2:s.c2p(t.pos,!0);return\"M\"+e+\",\"+o.c2p(t.o,!0)+\"H\"+n+\"M\"+n+\",\"+o.c2p(t.h,!0)+\"V\"+o.c2p(t.l,!0)+\"M\"+r+\",\"+o.c2p(t.c,!0)+\"H\"+n}))}}))}},{\"../../lib\":503,\"@plotly/d3\":58}],879:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r,n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s=n[0].t.bPos||0;if(!1===e)for(r=0;r=t.length)return!1;if(void 0!==e[t[r]])return!1;e[t[r]]=!0}return!0}(t.map((function(t){return t.displayindex}))))for(e=0;e0;c&&(o=\"array\");var u=r(\"categoryorder\",o);\"array\"===u?(r(\"categoryarray\"),r(\"ticktext\")):(delete t.categoryarray,delete t.ticktext),c||\"array\"!==u||(e.categoryorder=\"trace\")}}e.exports=function(t,e,r,f){function h(r,i){return n.coerce(t,e,l,r,i)}var p=s(t,e,{name:\"dimensions\",handleItemDefaults:u}),d=function(t,e,r,o,s){s(\"line.shape\"),s(\"line.hovertemplate\");var l=s(\"line.color\",o.colorway[0]);if(i(t,\"line\")&&n.isArrayOrTypedArray(l)){if(l.length)return s(\"line.colorscale\"),a(t,e,o,s,{prefix:\"line.\",cLetter:\"c\"}),l.length;e.line.color=r}return 1/0}(t,e,r,f,h);o(e,f,h),Array.isArray(p)&&p.length||(e.visible=!1),c(e,p,\"values\",d),h(\"hoveron\"),h(\"hovertemplate\"),h(\"arrangement\"),h(\"bundlecolors\"),h(\"sortpaths\"),h(\"counts\");var g={family:f.font.family,size:Math.round(f.font.size),color:f.font.color};n.coerceFont(h,\"labelfont\",g);var m={family:f.font.family,size:Math.round(f.font.size/1.2),color:f.font.color};n.coerceFont(h,\"tickfont\",m)}},{\"../../components/colorscale/defaults\":376,\"../../components/colorscale/helpers\":377,\"../../lib\":503,\"../../plots/array_container_defaults\":549,\"../../plots/domain\":584,\"../parcoords/merge_length\":897,\"./attributes\":881}],885:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),calc:t(\"./calc\"),plot:t(\"./plot\"),colorbar:{container:\"line\",min:\"cmin\",max:\"cmax\"},moduleType:\"trace\",name:\"parcats\",basePlotModule:t(\"./base_plot\"),categories:[\"noOpacity\"],meta:{}}},{\"./attributes\":881,\"./base_plot\":882,\"./calc\":883,\"./defaults\":884,\"./plot\":887}],886:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"d3-interpolate\").interpolateNumber,a=t(\"../../plot_api/plot_api\"),o=t(\"../../components/fx\"),s=t(\"../../lib\"),l=s.strTranslate,c=t(\"../../components/drawing\"),u=t(\"tinycolor2\"),f=t(\"../../lib/svg_text_utils\");function h(t,e,r,i){var a=t.map(F.bind(0,e,r)),o=i.selectAll(\"g.parcatslayer\").data([null]);o.enter().append(\"g\").attr(\"class\",\"parcatslayer\").style(\"pointer-events\",\"all\");var u=o.selectAll(\"g.trace.parcats\").data(a,p),h=u.enter().append(\"g\").attr(\"class\",\"trace parcats\");u.attr(\"transform\",(function(t){return l(t.x,t.y)})),h.append(\"g\").attr(\"class\",\"paths\");var y=u.select(\"g.paths\").selectAll(\"path.path\").data((function(t){return t.paths}),p);y.attr(\"fill\",(function(t){return t.model.color}));var x=y.enter().append(\"path\").attr(\"class\",\"path\").attr(\"stroke-opacity\",0).attr(\"fill\",(function(t){return t.model.color})).attr(\"fill-opacity\",0);_(x),y.attr(\"d\",(function(t){return t.svgD})),x.empty()||y.sort(g),y.exit().remove(),y.on(\"mouseover\",m).on(\"mouseout\",v).on(\"click\",b),h.append(\"g\").attr(\"class\",\"dimensions\");var w=u.select(\"g.dimensions\").selectAll(\"g.dimension\").data((function(t){return t.dimensions}),p);w.enter().append(\"g\").attr(\"class\",\"dimension\"),w.attr(\"transform\",(function(t){return l(t.x,0)})),w.exit().remove();var A=w.selectAll(\"g.category\").data((function(t){return t.categories}),p),M=A.enter().append(\"g\").attr(\"class\",\"category\");A.attr(\"transform\",(function(t){return l(0,t.y)})),M.append(\"rect\").attr(\"class\",\"catrect\").attr(\"pointer-events\",\"none\"),A.select(\"rect.catrect\").attr(\"fill\",\"none\").attr(\"width\",(function(t){return t.width})).attr(\"height\",(function(t){return t.height})),T(M);var S=A.selectAll(\"rect.bandrect\").data((function(t){return t.bands}),p);S.each((function(){s.raiseToTop(this)})),S.attr(\"fill\",(function(t){return t.color}));var E=S.enter().append(\"rect\").attr(\"class\",\"bandrect\").attr(\"stroke-opacity\",0).attr(\"fill\",(function(t){return t.color})).attr(\"fill-opacity\",0);S.attr(\"fill\",(function(t){return t.color})).attr(\"width\",(function(t){return t.width})).attr(\"height\",(function(t){return t.height})).attr(\"y\",(function(t){return t.y})).attr(\"cursor\",(function(t){return\"fixed\"===t.parcatsViewModel.arrangement?\"default\":\"perpendicular\"===t.parcatsViewModel.arrangement?\"ns-resize\":\"move\"})),k(E),S.exit().remove(),M.append(\"text\").attr(\"class\",\"catlabel\").attr(\"pointer-events\",\"none\");var z=e._fullLayout.paper_bgcolor;A.select(\"text.catlabel\").attr(\"text-anchor\",(function(t){return d(t)?\"start\":\"end\"})).attr(\"alignment-baseline\",\"middle\").style(\"text-shadow\",f.makeTextShadow(z)).style(\"fill\",\"rgb(0, 0, 0)\").attr(\"x\",(function(t){return d(t)?t.width+5:-5})).attr(\"y\",(function(t){return t.height/2})).text((function(t){return t.model.categoryLabel})).each((function(t){c.font(n.select(this),t.parcatsViewModel.categorylabelfont),f.convertToTspans(n.select(this),e)})),M.append(\"text\").attr(\"class\",\"dimlabel\"),A.select(\"text.dimlabel\").attr(\"text-anchor\",\"middle\").attr(\"alignment-baseline\",\"baseline\").attr(\"cursor\",(function(t){return\"fixed\"===t.parcatsViewModel.arrangement?\"default\":\"ew-resize\"})).attr(\"x\",(function(t){return t.width/2})).attr(\"y\",-5).text((function(t,e){return 0===e?t.parcatsViewModel.model.dimensions[t.model.dimensionInd].dimensionLabel:null})).each((function(t){c.font(n.select(this),t.parcatsViewModel.labelfont)})),A.selectAll(\"rect.bandrect\").on(\"mouseover\",L).on(\"mouseout\",C),A.exit().remove(),w.call(n.behavior.drag().origin((function(t){return{x:t.x,y:0}})).on(\"dragstart\",P).on(\"drag\",I).on(\"dragend\",O)),u.each((function(t){t.traceSelection=n.select(this),t.pathSelection=n.select(this).selectAll(\"g.paths\").selectAll(\"path.path\"),t.dimensionSelection=n.select(this).selectAll(\"g.dimensions\").selectAll(\"g.dimension\")})),u.exit().remove()}function p(t){return t.key}function d(t){var e=t.parcatsViewModel.dimensions.length,r=t.parcatsViewModel.dimensions[e-1].model.dimensionInd;return t.model.dimensionInd===r}function g(t,e){return t.model.rawColor>e.model.rawColor?1:t.model.rawColor\"),L=n.mouse(f)[0];o.loneHover({trace:h,x:b-d.left+g.left,y:_-d.top+g.top,text:E,color:t.model.color,borderColor:\"black\",fontFamily:'Monaco, \"Courier New\", monospace',fontSize:10,fontColor:T,idealAlign:L1&&h.displayInd===f.dimensions.length-1?(i=c.left,a=\"left\"):(i=c.left+c.width,a=\"right\");var g=u.model.count,m=u.model.categoryLabel,v=g/u.parcatsViewModel.model.count,y={countLabel:g,categoryLabel:m,probabilityLabel:v.toFixed(3)},x=[];-1!==u.parcatsViewModel.hoverinfoItems.indexOf(\"count\")&&x.push([\"Count:\",y.countLabel].join(\" \")),-1!==u.parcatsViewModel.hoverinfoItems.indexOf(\"probability\")&&x.push([\"P(\"+y.categoryLabel+\"):\",y.probabilityLabel].join(\" \"));var b=x.join(\"
\");return{trace:p,x:o*(i-e.left),y:s*(d-e.top),text:b,color:\"lightgray\",borderColor:\"black\",fontFamily:'Monaco, \"Courier New\", monospace',fontSize:12,fontColor:\"black\",idealAlign:a,hovertemplate:p.hovertemplate,hovertemplateLabels:y,eventData:[{data:p._input,fullData:p,count:g,category:m,probability:v}]}}function L(t){if(!t.parcatsViewModel.dragDimension&&-1===t.parcatsViewModel.hoverinfoItems.indexOf(\"skip\")){if(n.mouse(this)[1]<-1)return;var e,r=t.parcatsViewModel.graphDiv,i=r._fullLayout,a=i._paperdiv.node().getBoundingClientRect(),l=t.parcatsViewModel.hoveron;if(\"color\"===l?(!function(t){var e=n.select(t).datum(),r=A(e);w(r),r.each((function(){s.raiseToTop(this)})),n.select(t.parentNode).selectAll(\"rect.bandrect\").filter((function(t){return t.color===e.color})).each((function(){s.raiseToTop(this),n.select(this).attr(\"stroke\",\"black\").attr(\"stroke-width\",1.5)}))}(this),S(this,\"plotly_hover\",n.event)):(!function(t){n.select(t.parentNode).selectAll(\"rect.bandrect\").each((function(t){var e=A(t);w(e),e.each((function(){s.raiseToTop(this)}))})),n.select(t.parentNode).select(\"rect.catrect\").attr(\"stroke\",\"black\").attr(\"stroke-width\",2.5)}(this),M(this,\"plotly_hover\",n.event)),-1===t.parcatsViewModel.hoverinfoItems.indexOf(\"none\"))\"category\"===l?e=E(r,a,this):\"color\"===l?e=function(t,e,r){t._fullLayout._calcInverseTransform(t);var i,a,o=t._fullLayout._invScaleX,s=t._fullLayout._invScaleY,l=r.getBoundingClientRect(),c=n.select(r).datum(),f=c.categoryViewModel,h=f.parcatsViewModel,p=h.model.dimensions[f.model.dimensionInd],d=h.trace,g=l.y+l.height/2;h.dimensions.length>1&&p.displayInd===h.dimensions.length-1?(i=l.left,a=\"left\"):(i=l.left+l.width,a=\"right\");var m=f.model.categoryLabel,v=c.parcatsViewModel.model.count,y=0;c.categoryViewModel.bands.forEach((function(t){t.color===c.color&&(y+=t.count)}));var x=f.model.count,b=0;h.pathSelection.each((function(t){t.model.color===c.color&&(b+=t.model.count)}));var _=y/v,w=y/b,T=y/x,k={countLabel:v,categoryLabel:m,probabilityLabel:_.toFixed(3)},A=[];-1!==f.parcatsViewModel.hoverinfoItems.indexOf(\"count\")&&A.push([\"Count:\",k.countLabel].join(\" \")),-1!==f.parcatsViewModel.hoverinfoItems.indexOf(\"probability\")&&(A.push(\"P(color \\u2229 \"+m+\"): \"+k.probabilityLabel),A.push(\"P(\"+m+\" | color): \"+w.toFixed(3)),A.push(\"P(color | \"+m+\"): \"+T.toFixed(3)));var M=A.join(\"
\"),S=u.mostReadable(c.color,[\"black\",\"white\"]);return{trace:d,x:o*(i-e.left),y:s*(g-e.top),text:M,color:c.color,borderColor:\"black\",fontFamily:'Monaco, \"Courier New\", monospace',fontColor:S,fontSize:10,idealAlign:a,hovertemplate:d.hovertemplate,hovertemplateLabels:k,eventData:[{data:d._input,fullData:d,category:m,count:v,probability:_,categorycount:x,colorcount:b,bandcolorcount:y}]}}(r,a,this):\"dimension\"===l&&(e=function(t,e,r){var i=[];return n.select(r.parentNode.parentNode).selectAll(\"g.category\").select(\"rect.catrect\").each((function(){i.push(E(t,e,this))})),i}(r,a,this)),e&&o.loneHover(e,{container:i._hoverlayer.node(),outerContainer:i._paper.node(),gd:r})}}function C(t){var e=t.parcatsViewModel;if(!e.dragDimension&&(_(e.pathSelection),T(e.dimensionSelection.selectAll(\"g.category\")),k(e.dimensionSelection.selectAll(\"g.category\").selectAll(\"rect.bandrect\")),o.loneUnhover(e.graphDiv._fullLayout._hoverlayer.node()),e.pathSelection.sort(g),-1===e.hoverinfoItems.indexOf(\"skip\"))){\"color\"===t.parcatsViewModel.hoveron?S(this,\"plotly_unhover\",n.event):M(this,\"plotly_unhover\",n.event)}}function P(t){\"fixed\"!==t.parcatsViewModel.arrangement&&(t.dragDimensionDisplayInd=t.model.displayInd,t.initialDragDimensionDisplayInds=t.parcatsViewModel.model.dimensions.map((function(t){return t.displayInd})),t.dragHasMoved=!1,t.dragCategoryDisplayInd=null,n.select(this).selectAll(\"g.category\").select(\"rect.catrect\").each((function(e){var r=n.mouse(this)[0],i=n.mouse(this)[1];-2<=r&&r<=e.width+2&&-2<=i&&i<=e.height+2&&(t.dragCategoryDisplayInd=e.model.displayInd,t.initialDragCategoryDisplayInds=t.model.categories.map((function(t){return t.displayInd})),e.model.dragY=e.y,s.raiseToTop(this.parentNode),n.select(this.parentNode).selectAll(\"rect.bandrect\").each((function(e){e.yf.y+f.height/2&&(o.model.displayInd=f.model.displayInd,f.model.displayInd=l),t.dragCategoryDisplayInd=o.model.displayInd}if(null===t.dragCategoryDisplayInd||\"freeform\"===t.parcatsViewModel.arrangement){a.model.dragX=n.event.x;var h=t.parcatsViewModel.dimensions[r],p=t.parcatsViewModel.dimensions[i];void 0!==h&&a.model.dragXp.x&&(a.model.displayInd=p.model.displayInd,p.model.displayInd=t.dragDimensionDisplayInd),t.dragDimensionDisplayInd=a.model.displayInd}j(t.parcatsViewModel),N(t.parcatsViewModel),R(t.parcatsViewModel),D(t.parcatsViewModel)}}function O(t){if(\"fixed\"!==t.parcatsViewModel.arrangement&&null!==t.dragDimensionDisplayInd){n.select(this).selectAll(\"text\").attr(\"font-weight\",\"normal\");var e={},r=z(t.parcatsViewModel),i=t.parcatsViewModel.model.dimensions.map((function(t){return t.displayInd})),o=t.initialDragDimensionDisplayInds.some((function(t,e){return t!==i[e]}));o&&i.forEach((function(r,n){var i=t.parcatsViewModel.model.dimensions[n].containerInd;e[\"dimensions[\"+i+\"].displayindex\"]=r}));var s=!1;if(null!==t.dragCategoryDisplayInd){var l=t.model.categories.map((function(t){return t.displayInd}));if(s=t.initialDragCategoryDisplayInds.some((function(t,e){return t!==l[e]}))){var c=t.model.categories.slice().sort((function(t,e){return t.displayInd-e.displayInd})),u=c.map((function(t){return t.categoryValue})),f=c.map((function(t){return t.categoryLabel}));e[\"dimensions[\"+t.model.containerInd+\"].categoryarray\"]=[u],e[\"dimensions[\"+t.model.containerInd+\"].ticktext\"]=[f],e[\"dimensions[\"+t.model.containerInd+\"].categoryorder\"]=\"array\"}}if(-1===t.parcatsViewModel.hoverinfoItems.indexOf(\"skip\")&&!t.dragHasMoved&&t.potentialClickBand&&(\"color\"===t.parcatsViewModel.hoveron?S(t.potentialClickBand,\"plotly_click\",n.event.sourceEvent):M(t.potentialClickBand,\"plotly_click\",n.event.sourceEvent)),t.model.dragX=null,null!==t.dragCategoryDisplayInd)t.parcatsViewModel.dimensions[t.dragDimensionDisplayInd].categories[t.dragCategoryDisplayInd].model.dragY=null,t.dragCategoryDisplayInd=null;t.dragDimensionDisplayInd=null,t.parcatsViewModel.dragDimension=null,t.dragHasMoved=null,t.potentialClickBand=null,j(t.parcatsViewModel),N(t.parcatsViewModel),n.transition().duration(300).ease(\"cubic-in-out\").each((function(){R(t.parcatsViewModel,!0),D(t.parcatsViewModel,!0)})).each(\"end\",(function(){(o||s)&&a.restyle(t.parcatsViewModel.graphDiv,e,[r])}))}}function z(t){for(var e,r=t.graphDiv._fullData,n=0;n=0;s--)u+=\"C\"+c[s]+\",\"+(e[s+1]+n)+\" \"+l[s]+\",\"+(e[s]+n)+\" \"+(t[s]+r[s])+\",\"+(e[s]+n),u+=\"l-\"+r[s]+\",0 \";return u+=\"Z\"}function N(t){var e=t.dimensions,r=t.model,n=e.map((function(t){return t.categories.map((function(t){return t.y}))})),i=t.model.dimensions.map((function(t){return t.categories.map((function(t){return t.displayInd}))})),a=t.model.dimensions.map((function(t){return t.displayInd})),o=t.dimensions.map((function(t){return t.model.dimensionInd})),s=e.map((function(t){return t.x})),l=e.map((function(t){return t.width})),c=[];for(var u in r.paths)r.paths.hasOwnProperty(u)&&c.push(r.paths[u]);function f(t){var e=t.categoryInds.map((function(t,e){return i[e][t]}));return o.map((function(t){return e[t]}))}c.sort((function(e,r){var n=f(e),i=f(r);return\"backward\"===t.sortpaths&&(n.reverse(),i.reverse()),n.push(e.valueInds[0]),i.push(r.valueInds[0]),t.bundlecolors&&(n.unshift(e.rawColor),i.unshift(r.rawColor)),ni?1:0}));for(var h=new Array(c.length),p=e[0].model.count,d=e[0].categories.map((function(t){return t.height})).reduce((function(t,e){return t+e})),g=0;g0?d*(v.count/p):0;for(var y,x=new Array(n.length),b=0;b1?(t.width-80-16)/(n-1):0)*i;var a,o,s,l,c,u=[],f=t.model.maxCats,h=e.categories.length,p=e.count,d=t.height-8*(f-1),g=8*(f-h)/2,m=e.categories.map((function(t){return{displayInd:t.displayInd,categoryInd:t.categoryInd}}));for(m.sort((function(t,e){return t.displayInd-e.displayInd})),c=0;c0?o.count/p*d:0,s={key:o.valueInds[0],model:o,width:16,height:a,y:null!==o.dragY?o.dragY:g,bands:[],parcatsViewModel:t},g=g+a+8,u.push(s);return{key:e.dimensionInd,x:null!==e.dragX?e.dragX:r,y:0,width:16,model:e,categories:u,parcatsViewModel:t,dragCategoryDisplayInd:null,dragDimensionDisplayInd:null,initialDragDimensionDisplayInds:null,initialDragCategoryDisplayInds:null,dragHasMoved:null,potentialClickBand:null}}e.exports=function(t,e,r,n){h(r,t,n,e)}},{\"../../components/drawing\":388,\"../../components/fx\":406,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../../plot_api/plot_api\":540,\"@plotly/d3\":58,\"d3-interpolate\":116,tinycolor2:312}],887:[function(t,e,r){\"use strict\";var n=t(\"./parcats\");e.exports=function(t,e,r,i){var a=t._fullLayout,o=a._paper,s=a._size;n(t,o,e,{width:s.w,height:s.h,margin:{t:s.t,r:s.r,b:s.b,l:s.l}},r,i)}},{\"./parcats\":886}],888:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/attributes\"),i=t(\"../../plots/cartesian/layout_attributes\"),a=t(\"../../plots/font_attributes\"),o=t(\"../../plots/domain\").attributes,s=t(\"../../lib/extend\").extendFlat,l=t(\"../../plot_api/plot_template\").templatedArray;e.exports={domain:o({name:\"parcoords\",trace:!0,editType:\"plot\"}),labelangle:{valType:\"angle\",dflt:0,editType:\"plot\"},labelside:{valType:\"enumerated\",values:[\"top\",\"bottom\"],dflt:\"top\",editType:\"plot\"},labelfont:a({editType:\"plot\"}),tickfont:a({editType:\"plot\"}),rangefont:a({editType:\"plot\"}),dimensions:l(\"dimension\",{label:{valType:\"string\",editType:\"plot\"},tickvals:s({},i.tickvals,{editType:\"plot\"}),ticktext:s({},i.ticktext,{editType:\"plot\"}),tickformat:s({},i.tickformat,{editType:\"plot\"}),visible:{valType:\"boolean\",dflt:!0,editType:\"plot\"},range:{valType:\"info_array\",items:[{valType:\"number\",editType:\"plot\"},{valType:\"number\",editType:\"plot\"}],editType:\"plot\"},constraintrange:{valType:\"info_array\",freeLength:!0,dimensions:\"1-2\",items:[{valType:\"any\",editType:\"plot\"},{valType:\"any\",editType:\"plot\"}],editType:\"plot\"},multiselect:{valType:\"boolean\",dflt:!0,editType:\"plot\"},values:{valType:\"data_array\",editType:\"calc\"},editType:\"calc\"}),line:s({editType:\"calc\"},n(\"line\",{colorscaleDflt:\"Viridis\",autoColorDflt:!1,editTypeOverride:\"calc\"}))}},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plot_api/plot_template\":543,\"../../plots/cartesian/layout_attributes\":569,\"../../plots/domain\":584,\"../../plots/font_attributes\":585}],889:[function(t,e,r){\"use strict\";var n=t(\"./constants\"),i=t(\"@plotly/d3\"),a=t(\"../../lib/gup\").keyFun,o=t(\"../../lib/gup\").repeat,s=t(\"../../lib\").sorterAsc,l=t(\"../../lib\").strTranslate,c=n.bar.snapRatio;function u(t,e){return t*(1-c)+e*c}var f=n.bar.snapClose;function h(t,e){return t*(1-f)+e*f}function p(t,e,r,n){if(function(t,e){for(var r=0;r=e[r][0]&&t<=e[r][1])return!0;return!1}(r,n))return r;var i=t?-1:1,a=0,o=e.length-1;if(i<0){var s=a;a=o,o=s}for(var l=e[a],c=l,f=a;i*fe){h=r;break}}if(a=u,isNaN(a)&&(a=isNaN(f)||isNaN(h)?isNaN(f)?h:f:e-c[f][1]t[1]+r||e=.9*t[1]+.1*t[0]?\"n\":e<=.9*t[0]+.1*t[1]?\"s\":\"ns\"}(d,e);g&&(o.interval=l[a],o.intervalPix=d,o.region=g)}}if(t.ordinal&&!o.region){var m=t.unitTickvals,y=t.unitToPaddedPx.invert(e);for(r=0;r=x[0]&&y<=x[1]){o.clickableOrdinalRange=x;break}}}return o}function w(t,e){i.event.sourceEvent.stopPropagation();var r=e.height-i.mouse(t)[1]-2*n.verticalPadding,a=e.brush.svgBrush;a.wasDragged=!0,a._dragging=!0,a.grabbingBar?a.newExtent=[r-a.grabPoint,r+a.barLength-a.grabPoint].map(e.unitToPaddedPx.invert):a.newExtent=[a.startExtent,e.unitToPaddedPx.invert(r)].sort(s),e.brush.filterSpecified=!0,a.extent=a.stayingIntervals.concat([a.newExtent]),a.brushCallback(e),b(t.parentNode)}function T(t,e){var r=_(e,e.height-i.mouse(t)[1]-2*n.verticalPadding),a=\"crosshair\";r.clickableOrdinalRange?a=\"pointer\":r.region&&(a=r.region+\"-resize\"),i.select(document.body).style(\"cursor\",a)}function k(t){t.on(\"mousemove\",(function(t){i.event.preventDefault(),t.parent.inBrushDrag||T(this,t)})).on(\"mouseleave\",(function(t){t.parent.inBrushDrag||y()})).call(i.behavior.drag().on(\"dragstart\",(function(t){!function(t,e){i.event.sourceEvent.stopPropagation();var r=e.height-i.mouse(t)[1]-2*n.verticalPadding,a=e.unitToPaddedPx.invert(r),o=e.brush,s=_(e,r),l=s.interval,c=o.svgBrush;if(c.wasDragged=!1,c.grabbingBar=\"ns\"===s.region,c.grabbingBar){var u=l.map(e.unitToPaddedPx);c.grabPoint=r-u[0]-n.verticalPadding,c.barLength=u[1]-u[0]}c.clickableOrdinalRange=s.clickableOrdinalRange,c.stayingIntervals=e.multiselect&&o.filterSpecified?o.filter.getConsolidated():[],l&&(c.stayingIntervals=c.stayingIntervals.filter((function(t){return t[0]!==l[0]&&t[1]!==l[1]}))),c.startExtent=s.region?l[\"s\"===s.region?1:0]:a,e.parent.inBrushDrag=!0,c.brushStartCallback()}(this,t)})).on(\"drag\",(function(t){w(this,t)})).on(\"dragend\",(function(t){!function(t,e){var r=e.brush,n=r.filter,a=r.svgBrush;a._dragging||(T(t,e),w(t,e),e.brush.svgBrush.wasDragged=!1),a._dragging=!1,i.event.sourceEvent.stopPropagation();var o=a.grabbingBar;if(a.grabbingBar=!1,a.grabLocation=void 0,e.parent.inBrushDrag=!1,y(),!a.wasDragged)return a.wasDragged=void 0,a.clickableOrdinalRange?r.filterSpecified&&e.multiselect?a.extent.push(a.clickableOrdinalRange):(a.extent=[a.clickableOrdinalRange],r.filterSpecified=!0):o?(a.extent=a.stayingIntervals,0===a.extent.length&&M(r)):M(r),a.brushCallback(e),b(t.parentNode),void a.brushEndCallback(r.filterSpecified?n.getConsolidated():[]);var s=function(){n.set(n.getConsolidated())};if(e.ordinal){var l=e.unitTickvals;l[l.length-1]a.newExtent[0];a.extent=a.stayingIntervals.concat(c?[a.newExtent]:[]),a.extent.length||M(r),a.brushCallback(e),c?b(t.parentNode,s):(s(),b(t.parentNode))}else s();a.brushEndCallback(r.filterSpecified?n.getConsolidated():[])}(this,t)})))}function A(t,e){return t[0]-e[0]}function M(t){t.filterSpecified=!1,t.svgBrush.extent=[[-1/0,1/0]]}function S(t){for(var e,r=t.slice(),n=[],i=r.shift();i;){for(e=i.slice();(i=r.shift())&&i[0]<=e[1];)e[1]=Math.max(e[1],i[1]);n.push(e)}return 1===n.length&&n[0][0]>n[0][1]&&(n=[]),n}e.exports={makeBrush:function(t,e,r,n,i,a){var o,l=function(){var t,e,r=[];return{set:function(n){1===(r=n.map((function(t){return t.slice().sort(s)})).sort(A)).length&&r[0][0]===-1/0&&r[0][1]===1/0&&(r=[[0,-1]]),t=S(r),e=r.reduce((function(t,e){return[Math.min(t[0],e[0]),Math.max(t[1],e[1])]}),[1/0,-1/0])},get:function(){return r.slice()},getConsolidated:function(){return t},getBounds:function(){return e}}}();return l.set(r),{filter:l,filterSpecified:e,svgBrush:{extent:[],brushStartCallback:n,brushCallback:(o=i,function(t){var e=t.brush,r=function(t){return t.svgBrush.extent.map((function(t){return t.slice()}))}(e).slice();e.filter.set(r),o()}),brushEndCallback:a}}},ensureAxisBrush:function(t,e){var r=t.selectAll(\".\"+n.cn.axisBrush).data(o,a);r.enter().append(\"g\").classed(n.cn.axisBrush,!0),function(t,e){var r=t.selectAll(\".background\").data(o);r.enter().append(\"rect\").classed(\"background\",!0).call(d).call(g).style(\"pointer-events\",\"auto\").attr(\"transform\",l(0,n.verticalPadding)),r.call(k).attr(\"height\",(function(t){return t.height-n.verticalPadding}));var i=t.selectAll(\".highlight-shadow\").data(o);i.enter().append(\"line\").classed(\"highlight-shadow\",!0).attr(\"x\",-n.bar.width/2).attr(\"stroke-width\",n.bar.width+n.bar.strokeWidth).attr(\"stroke\",e).attr(\"opacity\",n.bar.strokeOpacity).attr(\"stroke-linecap\",\"butt\"),i.attr(\"y1\",(function(t){return t.height})).call(x);var a=t.selectAll(\".highlight\").data(o);a.enter().append(\"line\").classed(\"highlight\",!0).attr(\"x\",-n.bar.width/2).attr(\"stroke-width\",n.bar.width-n.bar.strokeWidth).attr(\"stroke\",n.bar.fillColor).attr(\"opacity\",n.bar.fillOpacity).attr(\"stroke-linecap\",\"butt\"),a.attr(\"y1\",(function(t){return t.height})).call(x)}(r,e)},cleanRanges:function(t,e){if(Array.isArray(t[0])?(t=t.map((function(t){return t.sort(s)})),t=e.multiselect?S(t.sort(A)):[t[0]]):t=[t.sort(s)],e.tickvals){var r=e.tickvals.slice().sort(s);if(!(t=t.map((function(t){var e=[p(0,r,t[0],[]),p(1,r,t[1],[])];if(e[1]>e[0])return e})).filter((function(t){return t}))).length)return}return t.length>1?t:t[0]}}},{\"../../lib\":503,\"../../lib/gup\":500,\"./constants\":892,\"@plotly/d3\":58}],890:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../plots/get_data\").getModuleCalcData,a=t(\"./plot\"),o=t(\"../../constants/xmlns_namespaces\");r.name=\"parcoords\",r.plot=function(t){var e=i(t.calcdata,\"parcoords\")[0];e.length&&a(t,e)},r.clean=function(t,e,r,n){var i=n._has&&n._has(\"parcoords\"),a=e._has&&e._has(\"parcoords\");i&&!a&&(n._paperdiv.selectAll(\".parcoords\").remove(),n._glimages.selectAll(\"*\").remove())},r.toSVG=function(t){var e=t._fullLayout._glimages,r=n.select(t).selectAll(\".svg-container\");r.filter((function(t,e){return e===r.size()-1})).selectAll(\".gl-canvas-context, .gl-canvas-focus\").each((function(){var t=this.toDataURL(\"image/png\");e.append(\"svg:image\").attr({xmlns:o.svg,\"xlink:href\":t,preserveAspectRatio:\"none\",x:0,y:0,width:this.style.width,height:this.style.height})})),window.setTimeout((function(){n.selectAll(\"#filterBarPattern\").attr(\"id\",\"filterBarPattern\")}),60)}},{\"../../constants/xmlns_namespaces\":480,\"../../plots/get_data\":593,\"./plot\":899,\"@plotly/d3\":58}],891:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").isArrayOrTypedArray,i=t(\"../../components/colorscale\"),a=t(\"../../lib/gup\").wrap;e.exports=function(t,e){var r,o;return i.hasColorscale(e,\"line\")&&n(e.line.color)?(r=e.line.color,o=i.extractOpts(e.line).colorscale,i.calc(t,e,{vals:r,containerStr:\"line\",cLetter:\"c\"})):(r=function(t){for(var e=new Array(t),r=0;rf&&(n.log(\"parcoords traces support up to \"+f+\" dimensions at the moment\"),d.splice(f));var g=s(t,e,{name:\"dimensions\",layout:l,handleItemDefaults:p}),m=function(t,e,r,o,s){var l=s(\"line.color\",r);if(i(t,\"line\")&&n.isArrayOrTypedArray(l)){if(l.length)return s(\"line.colorscale\"),a(t,e,o,s,{prefix:\"line.\",cLetter:\"c\"}),l.length;e.line.color=r}return 1/0}(t,e,r,l,u);o(e,l,u),Array.isArray(g)&&g.length||(e.visible=!1),h(e,g,\"values\",m);var v={family:l.font.family,size:Math.round(l.font.size/1.2),color:l.font.color};n.coerceFont(u,\"labelfont\",v),n.coerceFont(u,\"tickfont\",v),n.coerceFont(u,\"rangefont\",v),u(\"labelangle\"),u(\"labelside\")}},{\"../../components/colorscale/defaults\":376,\"../../components/colorscale/helpers\":377,\"../../lib\":503,\"../../plots/array_container_defaults\":549,\"../../plots/cartesian/axes\":554,\"../../plots/domain\":584,\"./attributes\":888,\"./axisbrush\":889,\"./constants\":892,\"./merge_length\":897}],894:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").isTypedArray;r.convertTypedArray=function(t){return n(t)?Array.prototype.slice.call(t):t},r.isOrdinal=function(t){return!!t.tickvals},r.isVisible=function(t){return t.visible||!(\"visible\"in t)}},{\"../../lib\":503}],895:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),calc:t(\"./calc\"),plot:t(\"./plot\"),colorbar:{container:\"line\",min:\"cmin\",max:\"cmax\"},moduleType:\"trace\",name:\"parcoords\",basePlotModule:t(\"./base_plot\"),categories:[\"gl\",\"regl\",\"noOpacity\",\"noHover\"],meta:{}}},{\"./attributes\":888,\"./base_plot\":890,\"./calc\":891,\"./defaults\":893,\"./plot\":899}],896:[function(t,e,r){\"use strict\";var n=t(\"glslify\"),i=n([\"precision highp float;\\n#define GLSLIFY 1\\n\\nvarying vec4 fragColor;\\n\\nattribute vec4 p01_04, p05_08, p09_12, p13_16,\\n p17_20, p21_24, p25_28, p29_32,\\n p33_36, p37_40, p41_44, p45_48,\\n p49_52, p53_56, p57_60, colors;\\n\\nuniform mat4 dim0A, dim1A, dim0B, dim1B, dim0C, dim1C, dim0D, dim1D,\\n loA, hiA, loB, hiB, loC, hiC, loD, hiD;\\n\\nuniform vec2 resolution, viewBoxPos, viewBoxSize;\\nuniform float maskHeight;\\nuniform float drwLayer; // 0: context, 1: focus, 2: pick\\nuniform vec4 contextColor;\\nuniform sampler2D maskTexture, palette;\\n\\nbool isPick = (drwLayer > 1.5);\\nbool isContext = (drwLayer < 0.5);\\n\\nconst vec4 ZEROS = vec4(0.0, 0.0, 0.0, 0.0);\\nconst vec4 UNITS = vec4(1.0, 1.0, 1.0, 1.0);\\n\\nfloat val(mat4 p, mat4 v) {\\n return dot(matrixCompMult(p, v) * UNITS, UNITS);\\n}\\n\\nfloat axisY(float ratio, mat4 A, mat4 B, mat4 C, mat4 D) {\\n float y1 = val(A, dim0A) + val(B, dim0B) + val(C, dim0C) + val(D, dim0D);\\n float y2 = val(A, dim1A) + val(B, dim1B) + val(C, dim1C) + val(D, dim1D);\\n return y1 * (1.0 - ratio) + y2 * ratio;\\n}\\n\\nint iMod(int a, int b) {\\n return a - b * (a / b);\\n}\\n\\nbool fOutside(float p, float lo, float hi) {\\n return (lo < hi) && (lo > p || p > hi);\\n}\\n\\nbool vOutside(vec4 p, vec4 lo, vec4 hi) {\\n return (\\n fOutside(p[0], lo[0], hi[0]) ||\\n fOutside(p[1], lo[1], hi[1]) ||\\n fOutside(p[2], lo[2], hi[2]) ||\\n fOutside(p[3], lo[3], hi[3])\\n );\\n}\\n\\nbool mOutside(mat4 p, mat4 lo, mat4 hi) {\\n return (\\n vOutside(p[0], lo[0], hi[0]) ||\\n vOutside(p[1], lo[1], hi[1]) ||\\n vOutside(p[2], lo[2], hi[2]) ||\\n vOutside(p[3], lo[3], hi[3])\\n );\\n}\\n\\nbool outsideBoundingBox(mat4 A, mat4 B, mat4 C, mat4 D) {\\n return mOutside(A, loA, hiA) ||\\n mOutside(B, loB, hiB) ||\\n mOutside(C, loC, hiC) ||\\n mOutside(D, loD, hiD);\\n}\\n\\nbool outsideRasterMask(mat4 A, mat4 B, mat4 C, mat4 D) {\\n mat4 pnts[4];\\n pnts[0] = A;\\n pnts[1] = B;\\n pnts[2] = C;\\n pnts[3] = D;\\n\\n for(int i = 0; i < 4; ++i) {\\n for(int j = 0; j < 4; ++j) {\\n for(int k = 0; k < 4; ++k) {\\n if(0 == iMod(\\n int(255.0 * texture2D(maskTexture,\\n vec2(\\n (float(i * 2 + j / 2) + 0.5) / 8.0,\\n (pnts[i][j][k] * (maskHeight - 1.0) + 1.0) / maskHeight\\n ))[3]\\n ) / int(pow(2.0, float(iMod(j * 4 + k, 8)))),\\n 2\\n )) return true;\\n }\\n }\\n }\\n return false;\\n}\\n\\nvec4 position(bool isContext, float v, mat4 A, mat4 B, mat4 C, mat4 D) {\\n float x = 0.5 * sign(v) + 0.5;\\n float y = axisY(x, A, B, C, D);\\n float z = 1.0 - abs(v);\\n\\n z += isContext ? 0.0 : 2.0 * float(\\n outsideBoundingBox(A, B, C, D) ||\\n outsideRasterMask(A, B, C, D)\\n );\\n\\n return vec4(\\n 2.0 * (vec2(x, y) * viewBoxSize + viewBoxPos) / resolution - 1.0,\\n z,\\n 1.0\\n );\\n}\\n\\nvoid main() {\\n mat4 A = mat4(p01_04, p05_08, p09_12, p13_16);\\n mat4 B = mat4(p17_20, p21_24, p25_28, p29_32);\\n mat4 C = mat4(p33_36, p37_40, p41_44, p45_48);\\n mat4 D = mat4(p49_52, p53_56, p57_60, ZEROS);\\n\\n float v = colors[3];\\n\\n gl_Position = position(isContext, v, A, B, C, D);\\n\\n fragColor =\\n isContext ? vec4(contextColor) :\\n isPick ? vec4(colors.rgb, 1.0) : texture2D(palette, vec2(abs(v), 0.5));\\n}\\n\"]),a=n([\"precision highp float;\\n#define GLSLIFY 1\\n\\nvarying vec4 fragColor;\\n\\nvoid main() {\\n gl_FragColor = fragColor;\\n}\\n\"]),o=t(\"./constants\").maxDimensionCount,s=t(\"../../lib\"),l=new Uint8Array(4),c=new Uint8Array(4),u={shape:[256,1],format:\"rgba\",type:\"uint8\",mag:\"nearest\",min:\"nearest\"};function f(t,e,r,n,i){var a=t._gl;a.enable(a.SCISSOR_TEST),a.scissor(e,r,n,i),t.clear({color:[0,0,0,0],depth:1})}function h(t,e,r,n,i,a){var o=a.key;r.drawCompleted||(!function(t){t.read({x:0,y:0,width:1,height:1,data:l})}(t),r.drawCompleted=!0),function s(l){var c=Math.min(n,i-l*n);0===l&&(window.cancelAnimationFrame(r.currentRafs[o]),delete r.currentRafs[o],f(t,a.scissorX,a.scissorY,a.scissorWidth,a.viewBoxSize[1])),r.clearOnly||(a.count=2*c,a.offset=2*l*n,e(a),l*n+c>>8*e)%256/255}function g(t,e,r){for(var n=new Array(8*e),i=0,a=0;au&&(u=t[i].dim1.canvasX,o=i);0===s&&f(T,0,0,r.canvasWidth,r.canvasHeight);var p=function(t){var e,r,n,i=[[],[]];for(n=0;n<64;n++){var a=!t&&no._length&&(S=S.slice(0,o._length));var L,C=o.tickvals;function P(t,e){return{val:t,text:L[e]}}function I(t,e){return t.val-e.val}if(Array.isArray(C)&&C.length){L=o.ticktext,Array.isArray(L)&&L.length?L.length>C.length?L=L.slice(0,C.length):C.length>L.length&&(C=C.slice(0,L.length)):L=C.map(a(o.tickformat));for(var O=1;O=r||l>=i)return;var c=t.lineLayer.readPixel(s,i-1-l),u=0!==c[3],f=u?c[2]+256*(c[1]+256*c[0]):null,h={x:s,y:l,clientX:e.clientX,clientY:e.clientY,dataIndex:t.model.key,curveNumber:f};f!==B&&(u?a.hover(h):a.unhover&&a.unhover(h),B=f)}})),F.style(\"opacity\",(function(t){return t.pick?0:1})),h.style(\"background\",\"rgba(255, 255, 255, 0)\");var N=h.selectAll(\".\"+y.cn.parcoords).data(R,d);N.exit().remove(),N.enter().append(\"g\").classed(y.cn.parcoords,!0).style(\"shape-rendering\",\"crispEdges\").style(\"pointer-events\",\"none\"),N.attr(\"transform\",(function(t){return c(t.model.translateX,t.model.translateY)}));var j=N.selectAll(\".\"+y.cn.parcoordsControlView).data(g,d);j.enter().append(\"g\").classed(y.cn.parcoordsControlView,!0),j.attr(\"transform\",(function(t){return c(t.model.pad.l,t.model.pad.t)}));var U=j.selectAll(\".\"+y.cn.yAxis).data((function(t){return t.dimensions}),d);U.enter().append(\"g\").classed(y.cn.yAxis,!0),j.each((function(t){O(U,t,_)})),F.each((function(t){if(t.viewModel){!t.lineLayer||a?t.lineLayer=b(this,t):t.lineLayer.update(t),(t.key||0===t.key)&&(t.viewModel[t.key]=t.lineLayer);var e=!t.context||a;t.lineLayer.render(t.viewModel.panels,e)}})),U.attr(\"transform\",(function(t){return c(t.xScale(t.xIndex),0)})),U.call(n.behavior.drag().origin((function(t){return t})).on(\"drag\",(function(t){var e=t.parent;S.linePickActive(!1),t.x=Math.max(-y.overdrag,Math.min(t.model.width+y.overdrag,n.event.x)),t.canvasX=t.x*t.model.canvasPixelRatio,U.sort((function(t,e){return t.x-e.x})).each((function(e,r){e.xIndex=r,e.x=t===e?e.x:e.xScale(e.xIndex),e.canvasX=e.x*e.model.canvasPixelRatio})),O(U,e,_),U.filter((function(e){return 0!==Math.abs(t.xIndex-e.xIndex)})).attr(\"transform\",(function(t){return c(t.xScale(t.xIndex),0)})),n.select(this).attr(\"transform\",c(t.x,0)),U.each((function(r,n,i){i===t.parent.key&&(e.dimensions[n]=r)})),e.contextLayer&&e.contextLayer.render(e.panels,!1,!E(e)),e.focusLayer.render&&e.focusLayer.render(e.panels)})).on(\"dragend\",(function(t){var e=t.parent;t.x=t.xScale(t.xIndex),t.canvasX=t.x*t.model.canvasPixelRatio,O(U,e,_),n.select(this).attr(\"transform\",(function(t){return c(t.x,0)})),e.contextLayer&&e.contextLayer.render(e.panels,!1,!E(e)),e.focusLayer&&e.focusLayer.render(e.panels),e.pickLayer&&e.pickLayer.render(e.panels,!0),S.linePickActive(!0),a&&a.axesMoved&&a.axesMoved(e.key,e.dimensions.map((function(t){return t.crossfilterDimensionIndex})))}))),U.exit().remove();var V=U.selectAll(\".\"+y.cn.axisOverlays).data(g,d);V.enter().append(\"g\").classed(y.cn.axisOverlays,!0),V.selectAll(\".\"+y.cn.axis).remove();var H=V.selectAll(\".\"+y.cn.axis).data(g,d);H.enter().append(\"g\").classed(y.cn.axis,!0),H.each((function(t){var e=t.model.height/t.model.tickDistance,r=t.domainScale,i=r.domain();n.select(this).call(n.svg.axis().orient(\"left\").tickSize(4).outerTickSize(2).ticks(e,t.tickFormat).tickValues(t.ordinal?i:null).tickFormat((function(e){return v.isOrdinal(t)?e:z(t.model.dimensions[t.visibleIndex],e)})).scale(r)),f.font(H.selectAll(\"text\"),t.model.tickFont)})),H.selectAll(\".domain, .tick>line\").attr(\"fill\",\"none\").attr(\"stroke\",\"black\").attr(\"stroke-opacity\",.25).attr(\"stroke-width\",\"1px\"),H.selectAll(\"text\").style(\"text-shadow\",u.makeTextShadow(T)).style(\"cursor\",\"default\");var q=V.selectAll(\".\"+y.cn.axisHeading).data(g,d);q.enter().append(\"g\").classed(y.cn.axisHeading,!0);var G=q.selectAll(\".\"+y.cn.axisTitle).data(g,d);G.enter().append(\"text\").classed(y.cn.axisTitle,!0).attr(\"text-anchor\",\"middle\").style(\"cursor\",\"ew-resize\").style(\"pointer-events\",\"auto\"),G.text((function(t){return t.label})).each((function(e){var r=n.select(this);f.font(r,e.model.labelFont),u.convertToTspans(r,t)})).attr(\"transform\",(function(t){var e=I(t.model.labelAngle,t.model.labelSide),r=y.axisTitleOffset;return(e.dir>0?\"\":c(0,2*r+t.model.height))+l(e.degrees)+c(-r*e.dx,-r*e.dy)})).attr(\"text-anchor\",(function(t){var e=I(t.model.labelAngle,t.model.labelSide);return 2*Math.abs(e.dx)>Math.abs(e.dy)?e.dir*e.dx<0?\"start\":\"end\":\"middle\"}));var Y=V.selectAll(\".\"+y.cn.axisExtent).data(g,d);Y.enter().append(\"g\").classed(y.cn.axisExtent,!0);var W=Y.selectAll(\".\"+y.cn.axisExtentTop).data(g,d);W.enter().append(\"g\").classed(y.cn.axisExtentTop,!0),W.attr(\"transform\",c(0,-y.axisExtentOffset));var X=W.selectAll(\".\"+y.cn.axisExtentTopText).data(g,d);X.enter().append(\"text\").classed(y.cn.axisExtentTopText,!0).call(P),X.text((function(t){return D(t,!0)})).each((function(t){f.font(n.select(this),t.model.rangeFont)}));var Z=Y.selectAll(\".\"+y.cn.axisExtentBottom).data(g,d);Z.enter().append(\"g\").classed(y.cn.axisExtentBottom,!0),Z.attr(\"transform\",(function(t){return c(0,t.model.height+y.axisExtentOffset)}));var J=Z.selectAll(\".\"+y.cn.axisExtentBottomText).data(g,d);J.enter().append(\"text\").classed(y.cn.axisExtentBottomText,!0).attr(\"dy\",\"0.75em\").call(P),J.text((function(t){return D(t,!1)})).each((function(t){f.font(n.select(this),t.model.rangeFont)})),x.ensureAxisBrush(V,T)}},{\"../../components/colorscale\":378,\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/gup\":500,\"../../lib/svg_text_utils\":529,\"../../plots/cartesian/axes\":554,\"./axisbrush\":889,\"./constants\":892,\"./helpers\":894,\"./lines\":896,\"@plotly/d3\":58,\"color-rgba\":91}],899:[function(t,e,r){\"use strict\";var n=t(\"./parcoords\"),i=t(\"../../lib/prepare_regl\"),a=t(\"./helpers\").isVisible;function o(t,e,r){var n=e.indexOf(r),i=t.indexOf(n);return-1===i&&(i+=e.length),i}e.exports=function(t,e){var r=t._fullLayout;if(i(t)){var s={},l={},c={},u={},f=r._size;e.forEach((function(e,r){var n=e[0].trace;c[r]=n.index;var i=u[r]=n._fullInput.index;s[r]=t.data[i].dimensions,l[r]=t.data[i].dimensions.slice()}));n(t,e,{width:f.w,height:f.h,margin:{t:f.t,r:f.r,b:f.b,l:f.l}},{filterChanged:function(e,n,i){var a=l[e][n],o=i.map((function(t){return t.slice()})),s=\"dimensions[\"+n+\"].constraintrange\",f=r._tracePreGUI[t._fullData[c[e]]._fullInput.uid];if(void 0===f[s]){var h=a.constraintrange;f[s]=h||null}var p=t._fullData[c[e]].dimensions[n];o.length?(1===o.length&&(o=o[0]),a.constraintrange=o,p.constraintrange=o.slice(),o=[o]):(delete a.constraintrange,delete p.constraintrange,o=null);var d={};d[s]=o,t.emit(\"plotly_restyle\",[d,[u[e]]])},hover:function(e){t.emit(\"plotly_hover\",e)},unhover:function(e){t.emit(\"plotly_unhover\",e)},axesMoved:function(e,r){var n=function(t,e){return function(r,n){return o(t,e,r)-o(t,e,n)}}(r,l[e].filter(a));s[e].sort(n),l[e].filter((function(t){return!a(t)})).sort((function(t){return l[e].indexOf(t)})).forEach((function(t){s[e].splice(s[e].indexOf(t),1),s[e].splice(l[e].indexOf(t),0,t)})),t.emit(\"plotly_restyle\",[{dimensions:[s[e]]},[u[e]]])}})}}},{\"../../lib/prepare_regl\":516,\"./helpers\":894,\"./parcoords\":898}],900:[function(t,e,r){\"use strict\";var n=t(\"../../plots/attributes\"),i=t(\"../../plots/domain\").attributes,a=t(\"../../plots/font_attributes\"),o=t(\"../../components/color/attributes\"),s=t(\"../../plots/template_attributes\").hovertemplateAttrs,l=t(\"../../plots/template_attributes\").texttemplateAttrs,c=t(\"../../lib/extend\").extendFlat,u=a({editType:\"plot\",arrayOk:!0,colorEditType:\"plot\"});e.exports={labels:{valType:\"data_array\",editType:\"calc\"},label0:{valType:\"number\",dflt:0,editType:\"calc\"},dlabel:{valType:\"number\",dflt:1,editType:\"calc\"},values:{valType:\"data_array\",editType:\"calc\"},marker:{colors:{valType:\"data_array\",editType:\"calc\"},line:{color:{valType:\"color\",dflt:o.defaultLine,arrayOk:!0,editType:\"style\"},width:{valType:\"number\",min:0,dflt:0,arrayOk:!0,editType:\"style\"},editType:\"calc\"},editType:\"calc\"},text:{valType:\"data_array\",editType:\"plot\"},hovertext:{valType:\"string\",dflt:\"\",arrayOk:!0,editType:\"style\"},scalegroup:{valType:\"string\",dflt:\"\",editType:\"calc\"},textinfo:{valType:\"flaglist\",flags:[\"label\",\"text\",\"value\",\"percent\"],extras:[\"none\"],editType:\"calc\"},hoverinfo:c({},n.hoverinfo,{flags:[\"label\",\"text\",\"value\",\"percent\",\"name\"]}),hovertemplate:s({},{keys:[\"label\",\"color\",\"value\",\"percent\",\"text\"]}),texttemplate:l({editType:\"plot\"},{keys:[\"label\",\"color\",\"value\",\"percent\",\"text\"]}),textposition:{valType:\"enumerated\",values:[\"inside\",\"outside\",\"auto\",\"none\"],dflt:\"auto\",arrayOk:!0,editType:\"plot\"},textfont:c({},u,{}),insidetextorientation:{valType:\"enumerated\",values:[\"horizontal\",\"radial\",\"tangential\",\"auto\"],dflt:\"auto\",editType:\"plot\"},insidetextfont:c({},u,{}),outsidetextfont:c({},u,{}),automargin:{valType:\"boolean\",dflt:!1,editType:\"plot\"},title:{text:{valType:\"string\",dflt:\"\",editType:\"plot\"},font:c({},u,{}),position:{valType:\"enumerated\",values:[\"top left\",\"top center\",\"top right\",\"middle center\",\"bottom left\",\"bottom center\",\"bottom right\"],editType:\"plot\"},editType:\"plot\"},domain:i({name:\"pie\",trace:!0,editType:\"calc\"}),hole:{valType:\"number\",min:0,max:1,dflt:0,editType:\"calc\"},sort:{valType:\"boolean\",dflt:!0,editType:\"calc\"},direction:{valType:\"enumerated\",values:[\"clockwise\",\"counterclockwise\"],dflt:\"counterclockwise\",editType:\"calc\"},rotation:{valType:\"number\",min:-360,max:360,dflt:0,editType:\"calc\"},pull:{valType:\"number\",min:0,max:1,dflt:0,arrayOk:!0,editType:\"calc\"},_deprecated:{title:{valType:\"string\",dflt:\"\",editType:\"calc\"},titlefont:c({},u,{}),titleposition:{valType:\"enumerated\",values:[\"top left\",\"top center\",\"top right\",\"middle center\",\"bottom left\",\"bottom center\",\"bottom right\"],editType:\"calc\"}}}},{\"../../components/color/attributes\":365,\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/domain\":584,\"../../plots/font_attributes\":585,\"../../plots/template_attributes\":633}],901:[function(t,e,r){\"use strict\";var n=t(\"../../plots/plots\");r.name=\"pie\",r.plot=function(t,e,i,a){n.plotBasePlot(r.name,t,e,i,a)},r.clean=function(t,e,i,a){n.cleanBasePlot(r.name,t,e,i,a)}},{\"../../plots/plots\":619}],902:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"tinycolor2\"),a=t(\"../../components/color\"),o={};function s(t){return function(e,r){return!!e&&(!!(e=i(e)).isValid()&&(e=a.addOpacity(e,e.getAlpha()),t[r]||(t[r]=e),e))}}function l(t,e){var r,n=JSON.stringify(t),a=e[n];if(!a){for(a=t.slice(),r=0;r=0})),(\"funnelarea\"===e.type?v:e.sort)&&a.sort((function(t,e){return e.v-t.v})),a[0]&&(a[0].vTotal=m),a},crossTraceCalc:function(t,e){var r=(e||{}).type;r||(r=\"pie\");var n=t._fullLayout,i=t.calcdata,a=n[r+\"colorway\"],s=n[\"_\"+r+\"colormap\"];n[\"extend\"+r+\"colors\"]&&(a=l(a,o));for(var c=0,u=0;u0){s=!0;break}}s||(o=0)}return{hasLabels:r,hasValues:a,len:o}}e.exports={handleLabelsAndValues:l,supplyDefaults:function(t,e,r,n){function c(r,n){return i.coerce(t,e,a,r,n)}var u=l(c(\"labels\"),c(\"values\")),f=u.len;if(e._hasLabels=u.hasLabels,e._hasValues=u.hasValues,!e._hasLabels&&e._hasValues&&(c(\"label0\"),c(\"dlabel\")),f){e._length=f,c(\"marker.line.width\")&&c(\"marker.line.color\"),c(\"marker.colors\"),c(\"scalegroup\");var h,p=c(\"text\"),d=c(\"texttemplate\");if(d||(h=c(\"textinfo\",Array.isArray(p)?\"text+percent\":\"percent\")),c(\"hovertext\"),c(\"hovertemplate\"),d||h&&\"none\"!==h){var g=c(\"textposition\");s(t,e,n,c,g,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),(Array.isArray(g)||\"auto\"===g||\"outside\"===g)&&c(\"automargin\"),(\"inside\"===g||\"auto\"===g||Array.isArray(g))&&c(\"insidetextorientation\")}o(e,n,c);var m=c(\"hole\");if(c(\"title.text\")){var v=c(\"title.position\",m?\"middle center\":\"top center\");m||\"middle center\"!==v||(e.title.position=\"top center\"),i.coerceFont(c,\"title.font\",n.font)}c(\"sort\"),c(\"direction\"),c(\"rotation\"),c(\"pull\")}else e.visible=!1}}},{\"../../lib\":503,\"../../plots/domain\":584,\"../bar/defaults\":652,\"./attributes\":900,\"fast-isnumeric\":190}],904:[function(t,e,r){\"use strict\";var n=t(\"../../components/fx/helpers\").appendArrayMultiPointValues;e.exports=function(t,e){var r={curveNumber:e.index,pointNumbers:t.pts,data:e._input,fullData:e,label:t.label,color:t.color,value:t.v,percent:t.percent,text:t.text,bbox:t.bbox,v:t.v};return 1===t.pts.length&&(r.pointNumber=r.i=t.pts[0]),n(r,e,t.pts),\"funnelarea\"===e.type&&(delete r.v,delete r.i),r}},{\"../../components/fx/helpers\":402}],905:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");function i(t){return-1!==t.indexOf(\"e\")?t.replace(/[.]?0+e/,\"e\"):-1!==t.indexOf(\".\")?t.replace(/[.]?0+$/,\"\"):t}r.formatPiePercent=function(t,e){var r=i((100*t).toPrecision(3));return n.numSeparate(r,e)+\"%\"},r.formatPieValue=function(t,e){var r=i(t.toPrecision(10));return n.numSeparate(r,e)},r.getFirstFilled=function(t,e){if(Array.isArray(t))for(var r=0;r\"),name:f.hovertemplate||-1!==h.indexOf(\"name\")?f.name:void 0,idealAlign:t.pxmid[0]<0?\"left\":\"right\",color:m.castOption(_.bgcolor,t.pts)||t.color,borderColor:m.castOption(_.bordercolor,t.pts),fontFamily:m.castOption(w.family,t.pts),fontSize:m.castOption(w.size,t.pts),fontColor:m.castOption(w.color,t.pts),nameLength:m.castOption(_.namelength,t.pts),textAlign:m.castOption(_.align,t.pts),hovertemplate:m.castOption(f.hovertemplate,t.pts),hovertemplateLabels:t,eventData:[v(t,f)]},{container:r._hoverlayer.node(),outerContainer:r._paper.node(),gd:e,inOut_bbox:T}),t.bbox=T[0],c._hasHoverLabel=!0}c._hasHoverEvent=!0,e.emit(\"plotly_hover\",{points:[v(t,f)],event:n.event})}})),t.on(\"mouseout\",(function(t){var r=e._fullLayout,i=e._fullData[c.index],o=n.select(this).datum();c._hasHoverEvent&&(t.originalEvent=n.event,e.emit(\"plotly_unhover\",{points:[v(o,i)],event:n.event}),c._hasHoverEvent=!1),c._hasHoverLabel&&(a.loneUnhover(r._hoverlayer.node()),c._hasHoverLabel=!1)})),t.on(\"click\",(function(t){var r=e._fullLayout,i=e._fullData[c.index];e._dragging||!1===r.hovermode||(e._hoverdata=[v(t,i)],a.click(e,n.event))}))}function b(t,e,r){var n=m.castOption(t.insidetextfont.color,e.pts);!n&&t._input.textfont&&(n=m.castOption(t._input.textfont.color,e.pts));var i=m.castOption(t.insidetextfont.family,e.pts)||m.castOption(t.textfont.family,e.pts)||r.family,a=m.castOption(t.insidetextfont.size,e.pts)||m.castOption(t.textfont.size,e.pts)||r.size;return{color:n||o.contrast(e.color),family:i,size:a}}function _(t,e){for(var r,n,i=0;ie&&e>n||r=-4;m-=2)v(Math.PI*m,\"tan\");for(m=4;m>=-4;m-=2)v(Math.PI*(m+1),\"tan\")}if(f||p){for(m=4;m>=-4;m-=2)v(Math.PI*(m+1.5),\"rad\");for(m=4;m>=-4;m-=2)v(Math.PI*(m+.5),\"rad\")}}if(s||d||f){var y=Math.sqrt(t.width*t.width+t.height*t.height);if((a={scale:i*n*2/y,rCenter:1-i,rotate:0}).textPosAngle=(e.startangle+e.stopangle)/2,a.scale>=1)return a;g.push(a)}(d||p)&&((a=T(t,n,o,l,c)).textPosAngle=(e.startangle+e.stopangle)/2,g.push(a)),(d||h)&&((a=k(t,n,o,l,c)).textPosAngle=(e.startangle+e.stopangle)/2,g.push(a));for(var x=0,b=0,_=0;_=1)break}return g[x]}function T(t,e,r,n,i){e=Math.max(0,e-2*g);var a=t.width/t.height,o=S(a,n,e,r);return{scale:2*o/t.height,rCenter:A(a,o/e),rotate:M(i)}}function k(t,e,r,n,i){e=Math.max(0,e-2*g);var a=t.height/t.width,o=S(a,n,e,r);return{scale:2*o/t.width,rCenter:A(a,o/e),rotate:M(i+Math.PI/2)}}function A(t,e){return Math.cos(e)-t*e}function M(t){return(180/Math.PI*t+720)%180-90}function S(t,e,r,n){var i=t+1/(2*Math.tan(e));return r*Math.min(1/(Math.sqrt(i*i+.5)+i),n/(Math.sqrt(t*t+n/2)+t))}function E(t,e){return t.v!==e.vTotal||e.trace.hole?Math.min(1/(1+1/Math.sin(t.halfangle)),t.ring/2):1}function L(t,e){var r=e.pxmid[0],n=e.pxmid[1],i=t.width/2,a=t.height/2;return r<0&&(i*=-1),n<0&&(a*=-1),{scale:1,rCenter:1,rotate:0,x:i+Math.abs(a)*(i>0?1:-1)/2,y:a/(1+r*r/(n*n)),outside:!0}}function C(t,e){var r,n,i,a=t.trace,o={x:t.cx,y:t.cy},s={tx:0,ty:0};s.ty+=a.title.font.size,i=I(a),-1!==a.title.position.indexOf(\"top\")?(o.y-=(1+i)*t.r,s.ty-=t.titleBox.height):-1!==a.title.position.indexOf(\"bottom\")&&(o.y+=(1+i)*t.r);var l,c,u=(l=t.r,c=t.trace.aspectratio,l/(void 0===c?1:c)),f=e.w*(a.domain.x[1]-a.domain.x[0])/2;return-1!==a.title.position.indexOf(\"left\")?(f+=u,o.x-=(1+i)*u,s.tx+=t.titleBox.width/2):-1!==a.title.position.indexOf(\"center\")?f*=2:-1!==a.title.position.indexOf(\"right\")&&(f+=u,o.x+=(1+i)*u,s.tx-=t.titleBox.width/2),r=f/t.titleBox.width,n=P(t,e)/t.titleBox.height,{x:o.x,y:o.y,scale:Math.min(r,n),tx:s.tx,ty:s.ty}}function P(t,e){var r=t.trace,n=e.h*(r.domain.y[1]-r.domain.y[0]);return Math.min(t.titleBox.height,n/2)}function I(t){var e,r=t.pull;if(!r)return 0;if(Array.isArray(r))for(r=0,e=0;er&&(r=t.pull[e]);return r}function O(t,e){for(var r=[],n=0;n1?(c=r.r,u=c/i.aspectratio):(u=r.r,c=u*i.aspectratio),c*=(1+i.baseratio)/2,l=c*u}o=Math.min(o,l/r.vTotal)}for(n=0;n\")}if(a){var x=l.castOption(i,e.i,\"texttemplate\");if(x){var b=function(t){return{label:t.label,value:t.v,valueLabel:m.formatPieValue(t.v,n.separators),percent:t.v/r.vTotal,percentLabel:m.formatPiePercent(t.v/r.vTotal,n.separators),color:t.color,text:t.text,customdata:l.castOption(i,t.i,\"customdata\")}}(e),_=m.getFirstFilled(i.text,e.pts);(y(_)||\"\"===_)&&(b.text=_),e.text=l.texttemplateString(x,b,t._fullLayout._d3locale,b,i._meta||{})}else e.text=\"\"}}function R(t,e){var r=t.rotate*Math.PI/180,n=Math.cos(r),i=Math.sin(r),a=(e.left+e.right)/2,o=(e.top+e.bottom)/2;t.textX=a*n-o*i,t.textY=a*i+o*n,t.noCenter=!0}e.exports={plot:function(t,e){var r=t._fullLayout,a=r._size;d(\"pie\",r),_(e,t),O(e,a);var h=l.makeTraceGroups(r._pielayer,e,\"trace\").each((function(e){var h=n.select(this),d=e[0],g=d.trace;!function(t){var e,r,n,i=t[0],a=i.r,o=i.trace,s=m.getRotationAngle(o.rotation),l=2*Math.PI/i.vTotal,c=\"px0\",u=\"px1\";if(\"counterclockwise\"===o.direction){for(e=0;ei.vTotal/2?1:0,r.halfangle=Math.PI*Math.min(r.v/i.vTotal,.5),r.ring=1-o.hole,r.rInscribed=E(r,i))}(e),h.attr(\"stroke-linejoin\",\"round\"),h.each((function(){var v=n.select(this).selectAll(\"g.slice\").data(e);v.enter().append(\"g\").classed(\"slice\",!0),v.exit().remove();var y=[[[],[]],[[],[]]],_=!1;v.each((function(i,a){if(i.hidden)n.select(this).selectAll(\"path,g\").remove();else{i.pointNumber=i.i,i.curveNumber=g.index,y[i.pxmid[1]<0?0:1][i.pxmid[0]<0?0:1].push(i);var o=d.cx,c=d.cy,u=n.select(this),h=u.selectAll(\"path.surface\").data([i]);if(h.enter().append(\"path\").classed(\"surface\",!0).style({\"pointer-events\":\"all\"}),u.call(x,t,e),g.pull){var v=+m.castOption(g.pull,i.pts)||0;v>0&&(o+=v*i.pxmid[0],c+=v*i.pxmid[1])}i.cxFinal=o,i.cyFinal=c;var T=g.hole;if(i.v===d.vTotal){var k=\"M\"+(o+i.px0[0])+\",\"+(c+i.px0[1])+C(i.px0,i.pxmid,!0,1)+C(i.pxmid,i.px0,!0,1)+\"Z\";T?h.attr(\"d\",\"M\"+(o+T*i.px0[0])+\",\"+(c+T*i.px0[1])+C(i.px0,i.pxmid,!1,T)+C(i.pxmid,i.px0,!1,T)+\"Z\"+k):h.attr(\"d\",k)}else{var A=C(i.px0,i.px1,!0,1);if(T){var M=1-T;h.attr(\"d\",\"M\"+(o+T*i.px1[0])+\",\"+(c+T*i.px1[1])+C(i.px1,i.px0,!1,T)+\"l\"+M*i.px0[0]+\",\"+M*i.px0[1]+A+\"Z\")}else h.attr(\"d\",\"M\"+o+\",\"+c+\"l\"+i.px0[0]+\",\"+i.px0[1]+A+\"Z\")}D(t,i,d);var S=m.castOption(g.textposition,i.pts),E=u.selectAll(\"g.slicetext\").data(i.text&&\"none\"!==S?[0]:[]);E.enter().append(\"g\").classed(\"slicetext\",!0),E.exit().remove(),E.each((function(){var u=l.ensureSingle(n.select(this),\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),h=l.ensureUniformFontSize(t,\"outside\"===S?function(t,e,r){var n=m.castOption(t.outsidetextfont.color,e.pts)||m.castOption(t.textfont.color,e.pts)||r.color,i=m.castOption(t.outsidetextfont.family,e.pts)||m.castOption(t.textfont.family,e.pts)||r.family,a=m.castOption(t.outsidetextfont.size,e.pts)||m.castOption(t.textfont.size,e.pts)||r.size;return{color:n,family:i,size:a}}(g,i,r.font):b(g,i,r.font));u.text(i.text).attr({class:\"slicetext\",transform:\"\",\"text-anchor\":\"middle\"}).call(s.font,h).call(f.convertToTspans,t);var v,y=s.bBox(u.node());if(\"outside\"===S)v=L(y,i);else if(v=w(y,i,d),\"auto\"===S&&v.scale<1){var x=l.ensureUniformFontSize(t,g.outsidetextfont);u.call(s.font,x),v=L(y=s.bBox(u.node()),i)}var T=v.textPosAngle,k=void 0===T?i.pxmid:z(d.r,T);if(v.targetX=o+k[0]*v.rCenter+(v.x||0),v.targetY=c+k[1]*v.rCenter+(v.y||0),R(v,y),v.outside){var A=v.targetY;i.yLabelMin=A-y.height/2,i.yLabelMid=A,i.yLabelMax=A+y.height/2,i.labelExtraX=0,i.labelExtraY=0,_=!0}v.fontSize=h.size,p(g.type,v,r),e[a].transform=v,u.attr(\"transform\",l.getTextTransform(v))}))}function C(t,e,r,n){var a=n*(e[0]-t[0]),o=n*(e[1]-t[1]);return\"a\"+n*d.r+\",\"+n*d.r+\" 0 \"+i.largeArc+(r?\" 1 \":\" 0 \")+a+\",\"+o}}));var T=n.select(this).selectAll(\"g.titletext\").data(g.title.text?[0]:[]);if(T.enter().append(\"g\").classed(\"titletext\",!0),T.exit().remove(),T.each((function(){var e,r=l.ensureSingle(n.select(this),\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),i=g.title.text;g._meta&&(i=l.templateString(i,g._meta)),r.text(i).attr({class:\"titletext\",transform:\"\",\"text-anchor\":\"middle\"}).call(s.font,g.title.font).call(f.convertToTspans,t),e=\"middle center\"===g.title.position?function(t){var e=Math.sqrt(t.titleBox.width*t.titleBox.width+t.titleBox.height*t.titleBox.height);return{x:t.cx,y:t.cy,scale:t.trace.hole*t.r*2/e,tx:0,ty:-t.titleBox.height/2+t.trace.title.font.size}}(d):C(d,a),r.attr(\"transform\",u(e.x,e.y)+c(Math.min(1,e.scale))+u(e.tx,e.ty))})),_&&function(t,e){var r,n,i,a,o,s,l,c,u,f,h,p,d;function g(t,e){return t.pxmid[1]-e.pxmid[1]}function v(t,e){return e.pxmid[1]-t.pxmid[1]}function y(t,r){r||(r={});var i,c,u,h,p=r.labelExtraY+(n?r.yLabelMax:r.yLabelMin),d=n?t.yLabelMin:t.yLabelMax,g=n?t.yLabelMax:t.yLabelMin,v=t.cyFinal+o(t.px0[1],t.px1[1]),y=p-d;if(y*l>0&&(t.labelExtraY=y),Array.isArray(e.pull))for(c=0;c=(m.castOption(e.pull,u.pts)||0)||((t.pxmid[1]-u.pxmid[1])*l>0?(y=u.cyFinal+o(u.px0[1],u.px1[1])-d-t.labelExtraY)*l>0&&(t.labelExtraY+=y):(g+t.labelExtraY-v)*l>0&&(i=3*s*Math.abs(c-f.indexOf(t)),(h=u.cxFinal+a(u.px0[0],u.px1[0])+i-(t.cxFinal+t.pxmid[0])-t.labelExtraX)*s>0&&(t.labelExtraX+=h)))}for(n=0;n<2;n++)for(i=n?g:v,o=n?Math.max:Math.min,l=n?1:-1,r=0;r<2;r++){for(a=r?Math.max:Math.min,s=r?1:-1,(c=t[n][r]).sort(i),u=t[1-n][r],f=u.concat(c),p=[],h=0;hMath.abs(f)?s+=\"l\"+f*t.pxmid[0]/t.pxmid[1]+\",\"+f+\"H\"+(a+t.labelExtraX+c):s+=\"l\"+t.labelExtraX+\",\"+u+\"v\"+(f-u)+\"h\"+c}else s+=\"V\"+(t.yLabelMid+t.labelExtraY)+\"h\"+c;l.ensureSingle(r,\"path\",\"textline\").call(o.stroke,e.outsidetextfont.color).attr({\"stroke-width\":Math.min(2,e.outsidetextfont.size/8),d:s,fill:\"none\"})}else r.select(\"path.textline\").remove()}))}(v,g),_&&g.automargin){var k=s.bBox(h.node()),A=g.domain,M=a.w*(A.x[1]-A.x[0]),S=a.h*(A.y[1]-A.y[0]),E=(.5*M-d.r)/a.w,P=(.5*S-d.r)/a.h;i.autoMargin(t,\"pie.\"+g.uid+\".automargin\",{xl:A.x[0]-E,xr:A.x[1]+E,yb:A.y[0]-P,yt:A.y[1]+P,l:Math.max(d.cx-d.r-k.left,0),r:Math.max(k.right-(d.cx+d.r),0),b:Math.max(k.bottom-(d.cy+d.r),0),t:Math.max(d.cy-d.r-k.top,0),pad:5})}}))}));setTimeout((function(){h.selectAll(\"tspan\").each((function(){var t=n.select(this);t.attr(\"dy\")&&t.attr(\"dy\",t.attr(\"dy\"))}))}),0)},formatSliceLabel:D,transformInsideText:w,determineInsideTextFont:b,positionTitleOutside:C,prerenderTitles:_,layoutAreas:O,attachFxHandlers:x,computeTransform:R}},{\"../../components/color\":366,\"../../components/drawing\":388,\"../../components/fx\":406,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../../plots/plots\":619,\"../bar/constants\":650,\"../bar/uniform_text\":664,\"./event_data\":904,\"./helpers\":905,\"@plotly/d3\":58}],910:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"./style_one\"),a=t(\"../bar/uniform_text\").resizeText;e.exports=function(t){var e=t._fullLayout._pielayer.selectAll(\".trace\");a(t,e,\"pie\"),e.each((function(t){var e=t[0].trace,r=n.select(this);r.style({opacity:e.opacity}),r.selectAll(\"path.surface\").each((function(t){n.select(this).call(i,t,e)}))}))}},{\"../bar/uniform_text\":664,\"./style_one\":911,\"@plotly/d3\":58}],911:[function(t,e,r){\"use strict\";var n=t(\"../../components/color\"),i=t(\"./helpers\").castOption;e.exports=function(t,e,r){var a=r.marker.line,o=i(a.color,e.pts)||n.defaultLine,s=i(a.width,e.pts)||0;t.style(\"stroke-width\",s).call(n.fill,e.color).call(n.stroke,o)}},{\"../../components/color\":366,\"./helpers\":905}],912:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\");e.exports={x:n.x,y:n.y,xy:{valType:\"data_array\",editType:\"calc\"},indices:{valType:\"data_array\",editType:\"calc\"},xbounds:{valType:\"data_array\",editType:\"calc\"},ybounds:{valType:\"data_array\",editType:\"calc\"},text:n.text,marker:{color:{valType:\"color\",arrayOk:!1,editType:\"calc\"},opacity:{valType:\"number\",min:0,max:1,dflt:1,arrayOk:!1,editType:\"calc\"},blend:{valType:\"boolean\",dflt:null,editType:\"calc\"},sizemin:{valType:\"number\",min:.1,max:2,dflt:.5,editType:\"calc\"},sizemax:{valType:\"number\",min:.1,dflt:20,editType:\"calc\"},border:{color:{valType:\"color\",arrayOk:!1,editType:\"calc\"},arearatio:{valType:\"number\",min:0,max:1,dflt:0,editType:\"calc\"},editType:\"calc\"},editType:\"calc\"},transforms:void 0}},{\"../scatter/attributes\":926}],913:[function(t,e,r){\"use strict\";var n=t(\"../../../stackgl_modules\").gl_pointcloud2d,i=t(\"../../lib/str2rgbarray\"),a=t(\"../../plots/cartesian/autorange\").findExtremes,o=t(\"../scatter/get_trace_color\");function s(t,e){this.scene=t,this.uid=e,this.type=\"pointcloud\",this.pickXData=[],this.pickYData=[],this.xData=[],this.yData=[],this.textLabels=[],this.color=\"rgb(0, 0, 0)\",this.name=\"\",this.hoverinfo=\"all\",this.idToIndex=new Int32Array(0),this.bounds=[0,0,0,0],this.pointcloudOptions={positions:new Float32Array(0),idToIndex:this.idToIndex,sizemin:.5,sizemax:12,color:[0,0,0,1],areaRatio:1,borderColor:[0,0,0,1]},this.pointcloud=n(t.glplot,this.pointcloudOptions),this.pointcloud._trace=this}var l=s.prototype;l.handlePick=function(t){var e=this.idToIndex[t.pointId];return{trace:this,dataCoord:t.dataCoord,traceCoord:this.pickXYData?[this.pickXYData[2*e],this.pickXYData[2*e+1]]:[this.pickXData[e],this.pickYData[e]],textLabel:Array.isArray(this.textLabels)?this.textLabels[e]:this.textLabels,color:this.color,name:this.name,pointIndex:e,hoverinfo:this.hoverinfo}},l.update=function(t){this.index=t.index,this.textLabels=t.text,this.name=t.name,this.hoverinfo=t.hoverinfo,this.bounds=[1/0,1/0,-1/0,-1/0],this.updateFast(t),this.color=o(t,{})},l.updateFast=function(t){var e,r,n,o,s,l,c=this.xData=this.pickXData=t.x,u=this.yData=this.pickYData=t.y,f=this.pickXYData=t.xy,h=t.xbounds&&t.ybounds,p=t.indices,d=this.bounds;if(f){if(n=f,e=f.length>>>1,h)d[0]=t.xbounds[0],d[2]=t.xbounds[1],d[1]=t.ybounds[0],d[3]=t.ybounds[1];else for(l=0;ld[2]&&(d[2]=o),sd[3]&&(d[3]=s);if(p)r=p;else for(r=new Int32Array(e),l=0;ld[2]&&(d[2]=o),sd[3]&&(d[3]=s);this.idToIndex=r,this.pointcloudOptions.idToIndex=r,this.pointcloudOptions.positions=n;var g=i(t.marker.color),m=i(t.marker.border.color),v=t.opacity*t.marker.opacity;g[3]*=v,this.pointcloudOptions.color=g;var y=t.marker.blend;if(null===y){y=c.length<100||u.length<100}this.pointcloudOptions.blend=y,m[3]*=v,this.pointcloudOptions.borderColor=m;var x=t.marker.sizemin,b=Math.max(t.marker.sizemax,t.marker.sizemin);this.pointcloudOptions.sizeMin=x,this.pointcloudOptions.sizeMax=b,this.pointcloudOptions.areaRatio=t.marker.border.arearatio,this.pointcloud.update(this.pointcloudOptions);var _=this.scene.xaxis,w=this.scene.yaxis,T=b/2||.5;t._extremes[_._id]=a(_,[d[0],d[2]],{ppad:T}),t._extremes[w._id]=a(w,[d[1],d[3]],{ppad:T})},l.dispose=function(){this.pointcloud.dispose()},e.exports=function(t,e){var r=new s(t,e.uid);return r.update(e),r}},{\"../../../stackgl_modules\":1120,\"../../lib/str2rgbarray\":528,\"../../plots/cartesian/autorange\":553,\"../scatter/get_trace_color\":936}],914:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./attributes\");e.exports=function(t,e,r){function a(r,a){return n.coerce(t,e,i,r,a)}a(\"x\"),a(\"y\"),a(\"xbounds\"),a(\"ybounds\"),t.xy&&t.xy instanceof Float32Array&&(e.xy=t.xy),t.indices&&t.indices instanceof Int32Array&&(e.indices=t.indices),a(\"text\"),a(\"marker.color\",r),a(\"marker.opacity\"),a(\"marker.blend\"),a(\"marker.sizemin\"),a(\"marker.sizemax\"),a(\"marker.border.color\",r),a(\"marker.border.arearatio\"),e._length=null}},{\"../../lib\":503,\"./attributes\":912}],915:[function(t,e,r){\"use strict\";[\"*pointcloud* trace is deprecated!\",\"Please consider switching to the *scattergl* trace type.\"].join(\" \");e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),calc:t(\"../scatter3d/calc\"),plot:t(\"./convert\"),moduleType:\"trace\",name:\"pointcloud\",basePlotModule:t(\"../../plots/gl2d\"),categories:[\"gl\",\"gl2d\",\"showLegend\"],meta:{}}},{\"../../plots/gl2d\":596,\"../scatter3d/calc\":955,\"./attributes\":912,\"./convert\":913,\"./defaults\":914}],916:[function(t,e,r){\"use strict\";var n=t(\"../../plots/font_attributes\"),i=t(\"../../plots/attributes\"),a=t(\"../../components/color/attributes\"),o=t(\"../../components/fx/attributes\"),s=t(\"../../plots/domain\").attributes,l=t(\"../../plots/template_attributes\").hovertemplateAttrs,c=t(\"../../components/colorscale/attributes\"),u=t(\"../../plot_api/plot_template\").templatedArray,f=t(\"../../plots/cartesian/axis_format_attributes\").descriptionOnlyNumbers,h=t(\"../../lib/extend\").extendFlat,p=t(\"../../plot_api/edit_types\").overrideAll;(e.exports=p({hoverinfo:h({},i.hoverinfo,{flags:[],arrayOk:!1}),hoverlabel:o.hoverlabel,domain:s({name:\"sankey\",trace:!0}),orientation:{valType:\"enumerated\",values:[\"v\",\"h\"],dflt:\"h\"},valueformat:{valType:\"string\",dflt:\".3s\",description:f(\"value\")},valuesuffix:{valType:\"string\",dflt:\"\"},arrangement:{valType:\"enumerated\",values:[\"snap\",\"perpendicular\",\"freeform\",\"fixed\"],dflt:\"snap\"},textfont:n({}),customdata:void 0,node:{label:{valType:\"data_array\",dflt:[]},groups:{valType:\"info_array\",impliedEdits:{x:[],y:[]},dimensions:2,freeLength:!0,dflt:[],items:{valType:\"number\",editType:\"calc\"}},x:{valType:\"data_array\",dflt:[]},y:{valType:\"data_array\",dflt:[]},color:{valType:\"color\",arrayOk:!0},customdata:{valType:\"data_array\",editType:\"calc\"},line:{color:{valType:\"color\",dflt:a.defaultLine,arrayOk:!0},width:{valType:\"number\",min:0,dflt:.5,arrayOk:!0}},pad:{valType:\"number\",arrayOk:!1,min:0,dflt:20},thickness:{valType:\"number\",arrayOk:!1,min:1,dflt:20},hoverinfo:{valType:\"enumerated\",values:[\"all\",\"none\",\"skip\"],dflt:\"all\"},hoverlabel:o.hoverlabel,hovertemplate:l({},{keys:[\"value\",\"label\"]})},link:{label:{valType:\"data_array\",dflt:[]},color:{valType:\"color\",arrayOk:!0},customdata:{valType:\"data_array\",editType:\"calc\"},line:{color:{valType:\"color\",dflt:a.defaultLine,arrayOk:!0},width:{valType:\"number\",min:0,dflt:0,arrayOk:!0}},source:{valType:\"data_array\",dflt:[]},target:{valType:\"data_array\",dflt:[]},value:{valType:\"data_array\",dflt:[]},hoverinfo:{valType:\"enumerated\",values:[\"all\",\"none\",\"skip\"],dflt:\"all\"},hoverlabel:o.hoverlabel,hovertemplate:l({},{keys:[\"value\",\"label\"]}),colorscales:u(\"concentrationscales\",{editType:\"calc\",label:{valType:\"string\",editType:\"calc\",dflt:\"\"},cmax:{valType:\"number\",editType:\"calc\",dflt:1},cmin:{valType:\"number\",editType:\"calc\",dflt:0},colorscale:h(c().colorscale,{dflt:[[0,\"white\"],[1,\"black\"]]})})}},\"calc\",\"nested\")).transforms=void 0},{\"../../components/color/attributes\":365,\"../../components/colorscale/attributes\":373,\"../../components/fx/attributes\":397,\"../../lib/extend\":493,\"../../plot_api/edit_types\":536,\"../../plot_api/plot_template\":543,\"../../plots/attributes\":550,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/domain\":584,\"../../plots/font_attributes\":585,\"../../plots/template_attributes\":633}],917:[function(t,e,r){\"use strict\";var n=t(\"../../plot_api/edit_types\").overrideAll,i=t(\"../../plots/get_data\").getModuleCalcData,a=t(\"./plot\"),o=t(\"../../components/fx/layout_attributes\"),s=t(\"../../lib/setcursor\"),l=t(\"../../components/dragelement\"),c=t(\"../../plots/cartesian/select\").prepSelect,u=t(\"../../lib\"),f=t(\"../../registry\");function h(t,e){var r=t._fullData[e],n=t._fullLayout,i=n.dragmode,a=\"pan\"===n.dragmode?\"move\":\"crosshair\",o=r._bgRect;if(\"pan\"!==i&&\"zoom\"!==i){s(o,a);var h={_id:\"x\",c2p:u.identity,_offset:r._sankey.translateX,_length:r._sankey.width},p={_id:\"y\",c2p:u.identity,_offset:r._sankey.translateY,_length:r._sankey.height},d={gd:t,element:o.node(),plotinfo:{id:e,xaxis:h,yaxis:p,fillRangeItems:u.noop},subplot:e,xaxes:[h],yaxes:[p],doneFnCompleted:function(r){var n,i=t._fullData[e],a=i.node.groups.slice(),o=[];function s(t){for(var e=i._sankey.graph.nodes,r=0;ry&&(y=a.source[e]),a.target[e]>y&&(y=a.target[e]);var x,b=y+1;t.node._count=b;var _=t.node.groups,w={};for(e=0;e<_.length;e++){var T=_[e];for(x=0;x0&&s(E,b)&&s(L,b)&&(!w.hasOwnProperty(E)||!w.hasOwnProperty(L)||w[E]!==w[L])){w.hasOwnProperty(L)&&(L=w[L]),w.hasOwnProperty(E)&&(E=w[E]),L=+L,h[E=+E]=h[L]=!0;var C=\"\";a.label&&a.label[e]&&(C=a.label[e]);var P=null;C&&p.hasOwnProperty(C)&&(P=p[C]),c.push({pointNumber:e,label:C,color:u?a.color[e]:a.color,customdata:f?a.customdata[e]:a.customdata,concentrationscale:P,source:E,target:L,value:+S}),M.source.push(E),M.target.push(L)}}var I=b+_.length,O=o(r.color),z=o(r.customdata),D=[];for(e=0;eb-1,childrenNodes:[],pointNumber:e,label:R,color:O?r.color[e]:r.color,customdata:z?r.customdata[e]:r.customdata})}var F=!1;return function(t,e,r){for(var a=i.init2dArray(t,0),o=0;o1}))}(I,M.source,M.target)&&(F=!0),{circular:F,links:c,nodes:D,groups:_,groupLookup:w}}e.exports=function(t,e){var r=c(e);return a({circular:r.circular,_nodes:r.nodes,_links:r.links,_groups:r.groups,_groupLookup:r.groupLookup})}},{\"../../components/colorscale\":378,\"../../lib\":503,\"../../lib/gup\":500,\"strongly-connected-components\":306}],919:[function(t,e,r){\"use strict\";e.exports={nodeTextOffsetHorizontal:4,nodeTextOffsetVertical:3,nodePadAcross:10,sankeyIterations:50,forceIterations:5,forceTicksPerFrame:10,duration:500,ease:\"linear\",cn:{sankey:\"sankey\",sankeyLinks:\"sankey-links\",sankeyLink:\"sankey-link\",sankeyNodeSet:\"sankey-node-set\",sankeyNode:\"sankey-node\",nodeRect:\"node-rect\",nodeLabel:\"node-label\"}}},{}],920:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./attributes\"),a=t(\"../../components/color\"),o=t(\"tinycolor2\"),s=t(\"../../plots/domain\").defaults,l=t(\"../../components/fx/hoverlabel_defaults\"),c=t(\"../../plot_api/plot_template\"),u=t(\"../../plots/array_container_defaults\");function f(t,e){function r(r,a){return n.coerce(t,e,i.link.colorscales,r,a)}r(\"label\"),r(\"cmin\"),r(\"cmax\"),r(\"colorscale\")}e.exports=function(t,e,r,h){function p(r,a){return n.coerce(t,e,i,r,a)}var d=n.extendDeep(h.hoverlabel,t.hoverlabel),g=t.node,m=c.newContainer(e,\"node\");function v(t,e){return n.coerce(g,m,i.node,t,e)}v(\"label\"),v(\"groups\"),v(\"x\"),v(\"y\"),v(\"pad\"),v(\"thickness\"),v(\"line.color\"),v(\"line.width\"),v(\"hoverinfo\",t.hoverinfo),l(g,m,v,d),v(\"hovertemplate\");var y=h.colorway;v(\"color\",m.label.map((function(t,e){return a.addOpacity(function(t){return y[t%y.length]}(e),.8)}))),v(\"customdata\");var x=t.link||{},b=c.newContainer(e,\"link\");function _(t,e){return n.coerce(x,b,i.link,t,e)}_(\"label\"),_(\"source\"),_(\"target\"),_(\"value\"),_(\"line.color\"),_(\"line.width\"),_(\"hoverinfo\",t.hoverinfo),l(x,b,_,d),_(\"hovertemplate\");var w,T=o(h.paper_bgcolor).getLuminance()<.333?\"rgba(255, 255, 255, 0.6)\":\"rgba(0, 0, 0, 0.2)\";_(\"color\",n.repeat(T,b.value.length)),_(\"customdata\"),u(x,b,{name:\"colorscales\",handleItemDefaults:f}),s(e,h,p),p(\"orientation\"),p(\"valueformat\"),p(\"valuesuffix\"),m.x.length&&m.y.length&&(w=\"freeform\"),p(\"arrangement\",w),n.coerceFont(p,\"textfont\",n.extendFlat({},h.font)),e._length=null}},{\"../../components/color\":366,\"../../components/fx/hoverlabel_defaults\":404,\"../../lib\":503,\"../../plot_api/plot_template\":543,\"../../plots/array_container_defaults\":549,\"../../plots/domain\":584,\"./attributes\":916,tinycolor2:312}],921:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),calc:t(\"./calc\"),plot:t(\"./plot\"),moduleType:\"trace\",name:\"sankey\",basePlotModule:t(\"./base_plot\"),selectPoints:t(\"./select.js\"),categories:[\"noOpacity\"],meta:{}}},{\"./attributes\":916,\"./base_plot\":917,\"./calc\":918,\"./defaults\":920,\"./plot\":922,\"./select.js\":924}],922:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=i.numberFormat,o=t(\"./render\"),s=t(\"../../components/fx\"),l=t(\"../../components/color\"),c=t(\"./constants\").cn,u=i._;function f(t){return\"\"!==t}function h(t,e){return t.filter((function(t){return t.key===e.traceId}))}function p(t,e){n.select(t).select(\"path\").style(\"fill-opacity\",e),n.select(t).select(\"rect\").style(\"fill-opacity\",e)}function d(t){n.select(t).select(\"text.name\").style(\"fill\",\"black\")}function g(t){return function(e){return-1!==t.node.sourceLinks.indexOf(e.link)||-1!==t.node.targetLinks.indexOf(e.link)}}function m(t){return function(e){return-1!==e.node.sourceLinks.indexOf(t.link)||-1!==e.node.targetLinks.indexOf(t.link)}}function v(t,e,r){e&&r&&h(r,e).selectAll(\".\"+c.sankeyLink).filter(g(e)).call(x.bind(0,e,r,!1))}function y(t,e,r){e&&r&&h(r,e).selectAll(\".\"+c.sankeyLink).filter(g(e)).call(b.bind(0,e,r,!1))}function x(t,e,r,n){var i=n.datum().link.label;n.style(\"fill-opacity\",(function(t){if(!t.link.concentrationscale)return.4})),i&&h(e,t).selectAll(\".\"+c.sankeyLink).filter((function(t){return t.link.label===i})).style(\"fill-opacity\",(function(t){if(!t.link.concentrationscale)return.4})),r&&h(e,t).selectAll(\".\"+c.sankeyNode).filter(m(t)).call(v)}function b(t,e,r,n){var i=n.datum().link.label;n.style(\"fill-opacity\",(function(t){return t.tinyColorAlpha})),i&&h(e,t).selectAll(\".\"+c.sankeyLink).filter((function(t){return t.link.label===i})).style(\"fill-opacity\",(function(t){return t.tinyColorAlpha})),r&&h(e,t).selectAll(c.sankeyNode).filter(m(t)).call(y)}function _(t,e){var r=t.hoverlabel||{},n=i.nestedProperty(r,e).get();return!Array.isArray(n)&&n}e.exports=function(t,e){for(var r=t._fullLayout,i=r._paper,h=r._size,g=0;g\"),color:_(o,\"bgcolor\")||l.addOpacity(g.color,1),borderColor:_(o,\"bordercolor\"),fontFamily:_(o,\"font.family\"),fontSize:_(o,\"font.size\"),fontColor:_(o,\"font.color\"),nameLength:_(o,\"namelength\"),textAlign:_(o,\"align\"),idealAlign:n.event.x\"),color:_(o,\"bgcolor\")||i.tinyColorHue,borderColor:_(o,\"bordercolor\"),fontFamily:_(o,\"font.family\"),fontSize:_(o,\"font.size\"),fontColor:_(o,\"font.color\"),nameLength:_(o,\"namelength\"),textAlign:_(o,\"align\"),idealAlign:\"left\",hovertemplate:o.hovertemplate,hovertemplateLabels:y,eventData:[i.node]},{container:r._hoverlayer.node(),outerContainer:r._paper.node(),gd:t});p(w,.85),d(w)}}},unhover:function(e,i,a){!1!==t._fullLayout.hovermode&&(n.select(e).call(y,i,a),\"skip\"!==i.node.trace.node.hoverinfo&&(i.node.fullData=i.node.trace,t.emit(\"plotly_unhover\",{event:n.event,points:[i.node]})),s.loneUnhover(r._hoverlayer.node()))},select:function(e,r,i){var a=r.node;a.originalEvent=n.event,t._hoverdata=[a],n.select(e).call(y,r,i),s.click(t,{target:!0})}}})}},{\"../../components/color\":366,\"../../components/fx\":406,\"../../lib\":503,\"./constants\":919,\"./render\":923,\"@plotly/d3\":58}],923:[function(t,e,r){\"use strict\";var n=t(\"d3-force\"),i=t(\"d3-interpolate\").interpolateNumber,a=t(\"@plotly/d3\"),o=t(\"@plotly/d3-sankey\"),s=t(\"@plotly/d3-sankey-circular\"),l=t(\"./constants\"),c=t(\"tinycolor2\"),u=t(\"../../components/color\"),f=t(\"../../components/drawing\"),h=t(\"../../lib\"),p=h.strTranslate,d=h.strRotate,g=t(\"../../lib/gup\"),m=g.keyFun,v=g.repeat,y=g.unwrap,x=t(\"../../lib/svg_text_utils\"),b=t(\"../../registry\"),_=t(\"../../constants/alignment\"),w=_.CAP_SHIFT,T=_.LINE_SPACING;function k(t,e,r){var n,i=y(e),a=i.trace,u=a.domain,f=\"h\"===a.orientation,p=a.node.pad,d=a.node.thickness,g=t.width*(u.x[1]-u.x[0]),m=t.height*(u.y[1]-u.y[0]),v=i._nodes,x=i._links,b=i.circular;(n=b?s.sankeyCircular().circularLinkGap(0):o.sankey()).iterations(l.sankeyIterations).size(f?[g,m]:[m,g]).nodeWidth(d).nodePadding(p).nodeId((function(t){return t.pointNumber})).nodes(v).links(x);var _,w,T,k=n();for(var A in n.nodePadding()=i||(r=i-e.y0)>1e-6&&(e.y0+=r,e.y1+=r),i=e.y1+p}))}(function(t){var e,r,n=t.map((function(t,e){return{x0:t.x0,index:e}})).sort((function(t,e){return t.x0-e.x0})),i=[],a=-1,o=-1/0;for(_=0;_o+d&&(a+=1,e=s.x0),o=s.x0,i[a]||(i[a]=[]),i[a].push(s),r=e-s.x0,s.x0+=r,s.x1+=r}return i}(v=k.nodes));n.update(k)}return{circular:b,key:r,trace:a,guid:h.randstr(),horizontal:f,width:g,height:m,nodePad:a.node.pad,nodeLineColor:a.node.line.color,nodeLineWidth:a.node.line.width,linkLineColor:a.link.line.color,linkLineWidth:a.link.line.width,valueFormat:a.valueformat,valueSuffix:a.valuesuffix,textFont:a.textfont,translateX:u.x[0]*t.width+t.margin.l,translateY:t.height-u.y[1]*t.height+t.margin.t,dragParallel:f?m:g,dragPerpendicular:f?g:m,arrangement:a.arrangement,sankey:n,graph:k,forceLayouts:{},interactionState:{dragInProgress:!1,hovered:!1}}}function A(t,e,r){var n=c(e.color),i=e.source.label+\"|\"+e.target.label+\"__\"+r;return e.trace=t.trace,e.curveNumber=t.trace.index,{circular:t.circular,key:i,traceId:t.key,pointNumber:e.pointNumber,link:e,tinyColorHue:u.tinyRGB(n),tinyColorAlpha:n.getAlpha(),linkPath:M,linkLineColor:t.linkLineColor,linkLineWidth:t.linkLineWidth,valueFormat:t.valueFormat,valueSuffix:t.valueSuffix,sankey:t.sankey,parent:t,interactionState:t.interactionState,flow:e.flow}}function M(){return function(t){if(t.link.circular)return e=t.link,r=e.width/2,n=e.circularPathData,\"top\"===e.circularLinkType?\"M \"+n.targetX+\" \"+(n.targetY+r)+\" L\"+n.rightInnerExtent+\" \"+(n.targetY+r)+\"A\"+(n.rightLargeArcRadius+r)+\" \"+(n.rightSmallArcRadius+r)+\" 0 0 1 \"+(n.rightFullExtent-r)+\" \"+(n.targetY-n.rightSmallArcRadius)+\"L\"+(n.rightFullExtent-r)+\" \"+n.verticalRightInnerExtent+\"A\"+(n.rightLargeArcRadius+r)+\" \"+(n.rightLargeArcRadius+r)+\" 0 0 1 \"+n.rightInnerExtent+\" \"+(n.verticalFullExtent-r)+\"L\"+n.leftInnerExtent+\" \"+(n.verticalFullExtent-r)+\"A\"+(n.leftLargeArcRadius+r)+\" \"+(n.leftLargeArcRadius+r)+\" 0 0 1 \"+(n.leftFullExtent+r)+\" \"+n.verticalLeftInnerExtent+\"L\"+(n.leftFullExtent+r)+\" \"+(n.sourceY-n.leftSmallArcRadius)+\"A\"+(n.leftLargeArcRadius+r)+\" \"+(n.leftSmallArcRadius+r)+\" 0 0 1 \"+n.leftInnerExtent+\" \"+(n.sourceY+r)+\"L\"+n.sourceX+\" \"+(n.sourceY+r)+\"L\"+n.sourceX+\" \"+(n.sourceY-r)+\"L\"+n.leftInnerExtent+\" \"+(n.sourceY-r)+\"A\"+(n.leftLargeArcRadius-r)+\" \"+(n.leftSmallArcRadius-r)+\" 0 0 0 \"+(n.leftFullExtent-r)+\" \"+(n.sourceY-n.leftSmallArcRadius)+\"L\"+(n.leftFullExtent-r)+\" \"+n.verticalLeftInnerExtent+\"A\"+(n.leftLargeArcRadius-r)+\" \"+(n.leftLargeArcRadius-r)+\" 0 0 0 \"+n.leftInnerExtent+\" \"+(n.verticalFullExtent+r)+\"L\"+n.rightInnerExtent+\" \"+(n.verticalFullExtent+r)+\"A\"+(n.rightLargeArcRadius-r)+\" \"+(n.rightLargeArcRadius-r)+\" 0 0 0 \"+(n.rightFullExtent+r)+\" \"+n.verticalRightInnerExtent+\"L\"+(n.rightFullExtent+r)+\" \"+(n.targetY-n.rightSmallArcRadius)+\"A\"+(n.rightLargeArcRadius-r)+\" \"+(n.rightSmallArcRadius-r)+\" 0 0 0 \"+n.rightInnerExtent+\" \"+(n.targetY-r)+\"L\"+n.targetX+\" \"+(n.targetY-r)+\"Z\":\"M \"+n.targetX+\" \"+(n.targetY-r)+\" L\"+n.rightInnerExtent+\" \"+(n.targetY-r)+\"A\"+(n.rightLargeArcRadius+r)+\" \"+(n.rightSmallArcRadius+r)+\" 0 0 0 \"+(n.rightFullExtent-r)+\" \"+(n.targetY+n.rightSmallArcRadius)+\"L\"+(n.rightFullExtent-r)+\" \"+n.verticalRightInnerExtent+\"A\"+(n.rightLargeArcRadius+r)+\" \"+(n.rightLargeArcRadius+r)+\" 0 0 0 \"+n.rightInnerExtent+\" \"+(n.verticalFullExtent+r)+\"L\"+n.leftInnerExtent+\" \"+(n.verticalFullExtent+r)+\"A\"+(n.leftLargeArcRadius+r)+\" \"+(n.leftLargeArcRadius+r)+\" 0 0 0 \"+(n.leftFullExtent+r)+\" \"+n.verticalLeftInnerExtent+\"L\"+(n.leftFullExtent+r)+\" \"+(n.sourceY+n.leftSmallArcRadius)+\"A\"+(n.leftLargeArcRadius+r)+\" \"+(n.leftSmallArcRadius+r)+\" 0 0 0 \"+n.leftInnerExtent+\" \"+(n.sourceY-r)+\"L\"+n.sourceX+\" \"+(n.sourceY-r)+\"L\"+n.sourceX+\" \"+(n.sourceY+r)+\"L\"+n.leftInnerExtent+\" \"+(n.sourceY+r)+\"A\"+(n.leftLargeArcRadius-r)+\" \"+(n.leftSmallArcRadius-r)+\" 0 0 1 \"+(n.leftFullExtent-r)+\" \"+(n.sourceY+n.leftSmallArcRadius)+\"L\"+(n.leftFullExtent-r)+\" \"+n.verticalLeftInnerExtent+\"A\"+(n.leftLargeArcRadius-r)+\" \"+(n.leftLargeArcRadius-r)+\" 0 0 1 \"+n.leftInnerExtent+\" \"+(n.verticalFullExtent-r)+\"L\"+n.rightInnerExtent+\" \"+(n.verticalFullExtent-r)+\"A\"+(n.rightLargeArcRadius-r)+\" \"+(n.rightLargeArcRadius-r)+\" 0 0 1 \"+(n.rightFullExtent+r)+\" \"+n.verticalRightInnerExtent+\"L\"+(n.rightFullExtent+r)+\" \"+(n.targetY+n.rightSmallArcRadius)+\"A\"+(n.rightLargeArcRadius-r)+\" \"+(n.rightSmallArcRadius-r)+\" 0 0 1 \"+n.rightInnerExtent+\" \"+(n.targetY+r)+\"L\"+n.targetX+\" \"+(n.targetY+r)+\"Z\";var e,r,n,a=t.link.source.x1,o=t.link.target.x0,s=i(a,o),l=s(.5),c=s(.5),u=t.link.y0-t.link.width/2,f=t.link.y0+t.link.width/2,h=t.link.y1-t.link.width/2,p=t.link.y1+t.link.width/2;return\"M\"+a+\",\"+u+\"C\"+l+\",\"+u+\" \"+c+\",\"+h+\" \"+o+\",\"+h+\"L\"+o+\",\"+p+\"C\"+c+\",\"+p+\" \"+l+\",\"+f+\" \"+a+\",\"+f+\"Z\"}}function S(t,e){var r=c(e.color),n=l.nodePadAcross,i=t.nodePad/2;e.dx=e.x1-e.x0,e.dy=e.y1-e.y0;var a=e.dx,o=Math.max(.5,e.dy),s=\"node_\"+e.pointNumber;return e.group&&(s=h.randstr()),e.trace=t.trace,e.curveNumber=t.trace.index,{index:e.pointNumber,key:s,partOfGroup:e.partOfGroup||!1,group:e.group,traceId:t.key,trace:t.trace,node:e,nodePad:t.nodePad,nodeLineColor:t.nodeLineColor,nodeLineWidth:t.nodeLineWidth,textFont:t.textFont,size:t.horizontal?t.height:t.width,visibleWidth:Math.ceil(a),visibleHeight:o,zoneX:-n,zoneY:-i,zoneWidth:a+2*n,zoneHeight:o+2*i,labelY:t.horizontal?e.dy/2+1:e.dx/2+1,left:1===e.originalLayer,sizeAcross:t.width,forceLayouts:t.forceLayouts,horizontal:t.horizontal,darkBackground:r.getBrightness()<=128,tinyColorHue:u.tinyRGB(r),tinyColorAlpha:r.getAlpha(),valueFormat:t.valueFormat,valueSuffix:t.valueSuffix,sankey:t.sankey,graph:t.graph,arrangement:t.arrangement,uniqueNodeLabelPathId:[t.guid,t.key,s].join(\"_\"),interactionState:t.interactionState,figure:t}}function E(t){t.attr(\"transform\",(function(t){return p(t.node.x0.toFixed(3),t.node.y0.toFixed(3))}))}function L(t){t.call(E)}function C(t,e){t.call(L),e.attr(\"d\",M())}function P(t){t.attr(\"width\",(function(t){return t.node.x1-t.node.x0})).attr(\"height\",(function(t){return t.visibleHeight}))}function I(t){return t.link.width>1||t.linkLineWidth>0}function O(t){return p(t.translateX,t.translateY)+(t.horizontal?\"matrix(1 0 0 1 0 0)\":\"matrix(0 1 1 0 0 0)\")}function z(t,e,r){t.on(\".basic\",null).on(\"mouseover.basic\",(function(t){t.interactionState.dragInProgress||t.partOfGroup||(r.hover(this,t,e),t.interactionState.hovered=[this,t])})).on(\"mousemove.basic\",(function(t){t.interactionState.dragInProgress||t.partOfGroup||(r.follow(this,t),t.interactionState.hovered=[this,t])})).on(\"mouseout.basic\",(function(t){t.interactionState.dragInProgress||t.partOfGroup||(r.unhover(this,t,e),t.interactionState.hovered=!1)})).on(\"click.basic\",(function(t){t.interactionState.hovered&&(r.unhover(this,t,e),t.interactionState.hovered=!1),t.interactionState.dragInProgress||t.partOfGroup||r.select(this,t,e)}))}function D(t,e,r,i){var o=a.behavior.drag().origin((function(t){return{x:t.node.x0+t.visibleWidth/2,y:t.node.y0+t.visibleHeight/2}})).on(\"dragstart\",(function(a){if(\"fixed\"!==a.arrangement&&(h.ensureSingle(i._fullLayout._infolayer,\"g\",\"dragcover\",(function(t){i._fullLayout._dragCover=t})),h.raiseToTop(this),a.interactionState.dragInProgress=a.node,F(a.node),a.interactionState.hovered&&(r.nodeEvents.unhover.apply(0,a.interactionState.hovered),a.interactionState.hovered=!1),\"snap\"===a.arrangement)){var o=a.traceId+\"|\"+a.key;a.forceLayouts[o]?a.forceLayouts[o].alpha(1):function(t,e,r,i){!function(t){for(var e=0;e0&&n.forceLayouts[e].alpha(0)}}(0,e,a,r)).stop()}(0,o,a),function(t,e,r,n,i){window.requestAnimationFrame((function a(){var o;for(o=0;o0)window.requestAnimationFrame(a);else{var s=r.node.originalX;r.node.x0=s-r.visibleWidth/2,r.node.x1=s+r.visibleWidth/2,R(r,i)}}))}(t,e,a,o,i)}})).on(\"drag\",(function(r){if(\"fixed\"!==r.arrangement){var n=a.event.x,i=a.event.y;\"snap\"===r.arrangement?(r.node.x0=n-r.visibleWidth/2,r.node.x1=n+r.visibleWidth/2,r.node.y0=i-r.visibleHeight/2,r.node.y1=i+r.visibleHeight/2):(\"freeform\"===r.arrangement&&(r.node.x0=n-r.visibleWidth/2,r.node.x1=n+r.visibleWidth/2),i=Math.max(0,Math.min(r.size-r.visibleHeight/2,i)),r.node.y0=i-r.visibleHeight/2,r.node.y1=i+r.visibleHeight/2),F(r.node),\"snap\"!==r.arrangement&&(r.sankey.update(r.graph),C(t.filter(B(r)),e))}})).on(\"dragend\",(function(t){if(\"fixed\"!==t.arrangement){t.interactionState.dragInProgress=!1;for(var e=0;el&&C[v].gap;)v--;for(x=C[v].s,g=C.length-1;g>v;g--)C[g].s=x;for(;lM[u]&&u=0;i--){var a=t[i];if(\"scatter\"===a.type&&a.xaxis===r.xaxis&&a.yaxis===r.yaxis){a.opacity=void 0;break}}}}}},{}],933:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../registry\"),a=t(\"./attributes\"),o=t(\"./constants\"),s=t(\"./subtypes\"),l=t(\"./xy_defaults\"),c=t(\"./period_defaults\"),u=t(\"./stack_defaults\"),f=t(\"./marker_defaults\"),h=t(\"./line_defaults\"),p=t(\"./line_shape_defaults\"),d=t(\"./text_defaults\"),g=t(\"./fillcolor_defaults\");e.exports=function(t,e,r,m){function v(r,i){return n.coerce(t,e,a,r,i)}var y=l(t,e,m,v);if(y||(e.visible=!1),e.visible){c(t,e,m,v),v(\"xhoverformat\"),v(\"yhoverformat\");var x=u(t,e,m,v),b=!x&&y=Math.min(e,r)&&d<=Math.max(e,r)?0:1/0}var n=Math.max(3,t.mrc||0),i=1-1/n,a=Math.abs(h.c2p(t.x)-d);return a=Math.min(e,r)&&g<=Math.max(e,r)?0:1/0}var n=Math.max(3,t.mrc||0),i=1-1/n,a=Math.abs(p.c2p(t.y)-g);return aW!=(N=z[I][1])>=W&&(R=z[I-1][0],F=z[I][0],N-B&&(D=R+(F-R)*(W-B)/(N-B),H=Math.min(H,D),q=Math.max(q,D)));H=Math.max(H,0),q=Math.min(q,h._length);var X=s.defaultLine;return s.opacity(f.fillcolor)?X=f.fillcolor:s.opacity((f.line||{}).color)&&(X=f.line.color),n.extendFlat(t,{distance:t.maxHoverDistance,x0:H,x1:q,y0:W,y1:W,color:X,hovertemplate:!1}),delete t.index,f.text&&!Array.isArray(f.text)?t.text=String(f.text):t.text=f.name,[t]}}}},{\"../../components/color\":366,\"../../components/fx\":406,\"../../lib\":503,\"../../registry\":638,\"./get_trace_color\":936}],938:[function(t,e,r){\"use strict\";var n=t(\"./subtypes\");e.exports={hasLines:n.hasLines,hasMarkers:n.hasMarkers,hasText:n.hasText,isBubble:n.isBubble,attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),crossTraceDefaults:t(\"./cross_trace_defaults\"),calc:t(\"./calc\").calc,crossTraceCalc:t(\"./cross_trace_calc\"),arraysToCalcdata:t(\"./arrays_to_calcdata\"),plot:t(\"./plot\"),colorbar:t(\"./marker_colorbar\"),formatLabels:t(\"./format_labels\"),style:t(\"./style\").style,styleOnSelect:t(\"./style\").styleOnSelect,hoverPoints:t(\"./hover\"),selectPoints:t(\"./select\"),animatable:!0,moduleType:\"trace\",name:\"scatter\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"cartesian\",\"svg\",\"symbols\",\"errorBarsOK\",\"showLegend\",\"scatter-like\",\"zoomScale\"],meta:{}}},{\"../../plots/cartesian\":568,\"./arrays_to_calcdata\":925,\"./attributes\":926,\"./calc\":927,\"./cross_trace_calc\":931,\"./cross_trace_defaults\":932,\"./defaults\":933,\"./format_labels\":935,\"./hover\":937,\"./marker_colorbar\":944,\"./plot\":947,\"./select\":948,\"./style\":950,\"./subtypes\":951}],939:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").isArrayOrTypedArray,i=t(\"../../components/colorscale/helpers\").hasColorscale,a=t(\"../../components/colorscale/defaults\");e.exports=function(t,e,r,o,s,l){var c=(t.marker||{}).color;(s(\"line.color\",r),i(t,\"line\"))?a(t,e,o,s,{prefix:\"line.\",cLetter:\"c\"}):s(\"line.color\",!n(c)&&c||r);s(\"line.width\"),(l||{}).noDash||s(\"line.dash\")}},{\"../../components/colorscale/defaults\":376,\"../../components/colorscale/helpers\":377,\"../../lib\":503}],940:[function(t,e,r){\"use strict\";var n=t(\"../../constants/numerical\"),i=n.BADNUM,a=n.LOG_CLIP,o=a+.5,s=a-.5,l=t(\"../../lib\"),c=l.segmentsIntersect,u=l.constrain,f=t(\"./constants\");e.exports=function(t,e){var r,n,a,h,p,d,g,m,v,y,x,b,_,w,T,k,A,M,S=e.xaxis,E=e.yaxis,L=\"log\"===S.type,C=\"log\"===E.type,P=S._length,I=E._length,O=e.connectGaps,z=e.baseTolerance,D=e.shape,R=\"linear\"===D,F=e.fill&&\"none\"!==e.fill,B=[],N=f.minTolerance,j=t.length,U=new Array(j),V=0;function H(r){var n=t[r];if(!n)return!1;var a=e.linearized?S.l2p(n.x):S.c2p(n.x),l=e.linearized?E.l2p(n.y):E.c2p(n.y);if(a===i){if(L&&(a=S.c2p(n.x,!0)),a===i)return!1;C&&l===i&&(a*=Math.abs(S._m*I*(S._m>0?o:s)/(E._m*P*(E._m>0?o:s)))),a*=1e3}if(l===i){if(C&&(l=E.c2p(n.y,!0)),l===i)return!1;l*=1e3}return[a,l]}function q(t,e,r,n){var i=r-t,a=n-e,o=.5-t,s=.5-e,l=i*i+a*a,c=i*o+a*s;if(c>0&&crt||t[1]it)return[u(t[0],et,rt),u(t[1],nt,it)]}function st(t,e){return t[0]===e[0]&&(t[0]===et||t[0]===rt)||(t[1]===e[1]&&(t[1]===nt||t[1]===it)||void 0)}function lt(t,e,r){return function(n,i){var a=ot(n),o=ot(i),s=[];if(a&&o&&st(a,o))return s;a&&s.push(a),o&&s.push(o);var c=2*l.constrain((n[t]+i[t])/2,e,r)-((a||n)[t]+(o||i)[t]);c&&((a&&o?c>0==a[t]>o[t]?a:o:a||o)[t]+=c);return s}}function ct(t){var e=t[0],r=t[1],n=e===U[V-1][0],i=r===U[V-1][1];if(!n||!i)if(V>1){var a=e===U[V-2][0],o=r===U[V-2][1];n&&(e===et||e===rt)&&a?o?V--:U[V-1]=t:i&&(r===nt||r===it)&&o?a?V--:U[V-1]=t:U[V++]=t}else U[V++]=t}function ut(t){U[V-1][0]!==t[0]&&U[V-1][1]!==t[1]&&ct([Z,J]),ct(t),K=null,Z=J=0}function ft(t){if(A=t[0]/P,M=t[1]/I,W=t[0]rt?rt:0,X=t[1]it?it:0,W||X){if(V)if(K){var e=$(K,t);e.length>1&&(ut(e[0]),U[V++]=e[1])}else Q=$(U[V-1],t)[0],U[V++]=Q;else U[V++]=[W||t[0],X||t[1]];var r=U[V-1];W&&X&&(r[0]!==W||r[1]!==X)?(K&&(Z!==W&&J!==X?ct(Z&&J?(n=K,a=(i=t)[0]-n[0],o=(i[1]-n[1])/a,(n[1]*i[0]-i[1]*n[0])/a>0?[o>0?et:rt,it]:[o>0?rt:et,nt]):[Z||W,J||X]):Z&&J&&ct([Z,J])),ct([W,X])):Z-W&&J-X&&ct([W||Z,X||J]),K=t,Z=W,J=X}else K&&ut($(K,t)[0]),U[V++]=t;var n,i,a,o}for(\"linear\"===D||\"spline\"===D?$=function(t,e){for(var r=[],n=0,i=0;i<4;i++){var a=at[i],o=c(t[0],t[1],e[0],e[1],a[0],a[1],a[2],a[3]);o&&(!n||Math.abs(o.x-r[0][0])>1||Math.abs(o.y-r[0][1])>1)&&(o=[o.x,o.y],n&&Y(o,t)G(d,ht))break;a=d,(_=v[0]*m[0]+v[1]*m[1])>x?(x=_,h=d,g=!1):_=t.length||!d)break;ft(d),n=d}}else ft(h)}K&&ct([Z||K[0],J||K[1]]),B.push(U.slice(0,V))}return B}},{\"../../constants/numerical\":479,\"../../lib\":503,\"./constants\":930}],941:[function(t,e,r){\"use strict\";e.exports=function(t,e,r){\"spline\"===r(\"line.shape\")&&r(\"line.smoothing\")}},{}],942:[function(t,e,r){\"use strict\";var n={tonextx:1,tonexty:1,tonext:1};e.exports=function(t,e,r){var i,a,o,s,l,c={},u=!1,f=-1,h=0,p=-1;for(a=0;a=0?l=p:(l=p=h,h++),l0?Math.max(r,a):0}}},{\"fast-isnumeric\":190}],944:[function(t,e,r){\"use strict\";e.exports={container:\"marker\",min:\"cmin\",max:\"cmax\"}},{}],945:[function(t,e,r){\"use strict\";var n=t(\"../../components/color\"),i=t(\"../../components/colorscale/helpers\").hasColorscale,a=t(\"../../components/colorscale/defaults\"),o=t(\"./subtypes\");e.exports=function(t,e,r,s,l,c){var u=o.isBubble(t),f=(t.line||{}).color;(c=c||{},f&&(r=f),l(\"marker.symbol\"),l(\"marker.opacity\",u?.7:1),l(\"marker.size\"),l(\"marker.color\",r),i(t,\"marker\")&&a(t,e,s,l,{prefix:\"marker.\",cLetter:\"c\"}),c.noSelect||(l(\"selected.marker.color\"),l(\"unselected.marker.color\"),l(\"selected.marker.size\"),l(\"unselected.marker.size\")),c.noLine||(l(\"marker.line.color\",f&&!Array.isArray(f)&&e.marker.color!==f?f:u?n.background:n.defaultLine),i(t,\"marker.line\")&&a(t,e,s,l,{prefix:\"marker.line.\",cLetter:\"c\"}),l(\"marker.line.width\",u?1:0)),u&&(l(\"marker.sizeref\"),l(\"marker.sizemin\"),l(\"marker.sizemode\")),c.gradient)&&(\"none\"!==l(\"marker.gradient.type\")&&l(\"marker.gradient.color\"))}},{\"../../components/color\":366,\"../../components/colorscale/defaults\":376,\"../../components/colorscale/helpers\":377,\"./subtypes\":951}],946:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").dateTick0,i=t(\"../../constants/numerical\").ONEWEEK;function a(t,e){return n(e,t%i==0?1:0)}e.exports=function(t,e,r,n,i){if(i||(i={x:!0,y:!0}),i.x){var o=n(\"xperiod\");o&&(n(\"xperiod0\",a(o,e.xcalendar)),n(\"xperiodalignment\"))}if(i.y){var s=n(\"yperiod\");s&&(n(\"yperiod0\",a(s,e.ycalendar)),n(\"yperiodalignment\"))}}},{\"../../constants/numerical\":479,\"../../lib\":503}],947:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../registry\"),a=t(\"../../lib\"),o=a.ensureSingle,s=a.identity,l=t(\"../../components/drawing\"),c=t(\"./subtypes\"),u=t(\"./line_points\"),f=t(\"./link_traces\"),h=t(\"../../lib/polygon\").tester;function p(t,e,r,f,p,d,g){var m;!function(t,e,r,i,o){var s=r.xaxis,l=r.yaxis,u=n.extent(a.simpleMap(s.range,s.r2c)),f=n.extent(a.simpleMap(l.range,l.r2c)),h=i[0].trace;if(!c.hasMarkers(h))return;var p=h.marker.maxdisplayed;if(0===p)return;var d=i.filter((function(t){return t.x>=u[0]&&t.x<=u[1]&&t.y>=f[0]&&t.y<=f[1]})),g=Math.ceil(d.length/p),m=0;o.forEach((function(t,r){var n=t[0].trace;c.hasMarkers(n)&&n.marker.maxdisplayed>0&&r0;function y(t){return v?t.transition():t}var x=r.xaxis,b=r.yaxis,_=f[0].trace,w=_.line,T=n.select(d),k=o(T,\"g\",\"errorbars\"),A=o(T,\"g\",\"lines\"),M=o(T,\"g\",\"points\"),S=o(T,\"g\",\"text\");if(i.getComponentMethod(\"errorbars\",\"plot\")(t,k,r,g),!0===_.visible){var E,L;y(T).style(\"opacity\",_.opacity);var C=_.fill.charAt(_.fill.length-1);\"x\"!==C&&\"y\"!==C&&(C=\"\"),f[0][r.isRangePlot?\"nodeRangePlot3\":\"node3\"]=T;var P,I,O=\"\",z=[],D=_._prevtrace;D&&(O=D._prevRevpath||\"\",L=D._nextFill,z=D._polygons);var R,F,B,N,j,U,V,H=\"\",q=\"\",G=[],Y=a.noop;if(E=_._ownFill,c.hasLines(_)||\"none\"!==_.fill){for(L&&L.datum(f),-1!==[\"hv\",\"vh\",\"hvh\",\"vhv\"].indexOf(w.shape)?(R=l.steps(w.shape),F=l.steps(w.shape.split(\"\").reverse().join(\"\"))):R=F=\"spline\"===w.shape?function(t){var e=t[t.length-1];return t.length>1&&t[0][0]===e[0]&&t[0][1]===e[1]?l.smoothclosed(t.slice(1),w.smoothing):l.smoothopen(t,w.smoothing)}:function(t){return\"M\"+t.join(\"L\")},B=function(t){return F(t.reverse())},G=u(f,{xaxis:x,yaxis:b,connectGaps:_.connectgaps,baseTolerance:Math.max(w.width||1,3)/4,shape:w.shape,simplify:w.simplify,fill:_.fill}),V=_._polygons=new Array(G.length),m=0;m1){var r=n.select(this);if(r.datum(f),t)y(r.style(\"opacity\",0).attr(\"d\",P).call(l.lineGroupStyle)).style(\"opacity\",1);else{var i=y(r);i.attr(\"d\",P),l.singleLineStyle(f,i)}}}}}var W=A.selectAll(\".js-line\").data(G);y(W.exit()).style(\"opacity\",0).remove(),W.each(Y(!1)),W.enter().append(\"path\").classed(\"js-line\",!0).style(\"vector-effect\",\"non-scaling-stroke\").call(l.lineGroupStyle).each(Y(!0)),l.setClipUrl(W,r.layerClipId,t),G.length?(E?(E.datum(f),N&&U&&(C?(\"y\"===C?N[1]=U[1]=b.c2p(0,!0):\"x\"===C&&(N[0]=U[0]=x.c2p(0,!0)),y(E).attr(\"d\",\"M\"+U+\"L\"+N+\"L\"+H.substr(1)).call(l.singleFillStyle)):y(E).attr(\"d\",H+\"Z\").call(l.singleFillStyle))):L&&(\"tonext\"===_.fill.substr(0,6)&&H&&O?(\"tonext\"===_.fill?y(L).attr(\"d\",H+\"Z\"+O+\"Z\").call(l.singleFillStyle):y(L).attr(\"d\",H+\"L\"+O.substr(1)+\"Z\").call(l.singleFillStyle),_._polygons=_._polygons.concat(z)):(Z(L),_._polygons=null)),_._prevRevpath=q,_._prevPolygons=V):(E?Z(E):L&&Z(L),_._polygons=_._prevRevpath=_._prevPolygons=null),M.datum(f),S.datum(f),function(e,i,a){var o,u=a[0].trace,f=c.hasMarkers(u),h=c.hasText(u),p=tt(u),d=et,g=et;if(f||h){var m=s,_=u.stackgroup,w=_&&\"infer zero\"===t._fullLayout._scatterStackOpts[x._id+b._id][_].stackgaps;u.marker.maxdisplayed||u._needsCull?m=w?K:J:_&&!w&&(m=Q),f&&(d=m),h&&(g=m)}var T,k=(o=e.selectAll(\"path.point\").data(d,p)).enter().append(\"path\").classed(\"point\",!0);v&&k.call(l.pointStyle,u,t).call(l.translatePoints,x,b).style(\"opacity\",0).transition().style(\"opacity\",1),o.order(),f&&(T=l.makePointStyleFns(u)),o.each((function(e){var i=n.select(this),a=y(i);l.translatePoint(e,a,x,b)?(l.singlePointStyle(e,a,u,T,t),r.layerClipId&&l.hideOutsideRangePoint(e,a,x,b,u.xcalendar,u.ycalendar),u.customdata&&i.classed(\"plotly-customdata\",null!==e.data&&void 0!==e.data)):a.remove()})),v?o.exit().transition().style(\"opacity\",0).remove():o.exit().remove(),(o=i.selectAll(\"g\").data(g,p)).enter().append(\"g\").classed(\"textpoint\",!0).append(\"text\"),o.order(),o.each((function(t){var e=n.select(this),i=y(e.select(\"text\"));l.translatePoint(t,i,x,b)?r.layerClipId&&l.hideOutsideRangePoint(t,e,x,b,u.xcalendar,u.ycalendar):e.remove()})),o.selectAll(\"text\").call(l.textPointStyle,u,t).each((function(t){var e=x.c2p(t.x),r=b.c2p(t.y);n.select(this).selectAll(\"tspan.line\").each((function(){y(n.select(this)).attr({x:e,y:r})}))})),o.exit().remove()}(M,S,f);var X=!1===_.cliponaxis?null:r.layerClipId;l.setClipUrl(M,X,t),l.setClipUrl(S,X,t)}function Z(t){y(t).attr(\"d\",\"M0,0Z\")}function J(t){return t.filter((function(t){return!t.gap&&t.vis}))}function K(t){return t.filter((function(t){return t.vis}))}function Q(t){return t.filter((function(t){return!t.gap}))}function $(t){return t.id}function tt(t){if(t.ids)return $}function et(){return!1}}e.exports=function(t,e,r,i,a,c){var u,h,d=!a,g=!!a&&a.duration>0,m=f(t,e,r);((u=i.selectAll(\"g.trace\").data(m,(function(t){return t[0].trace.uid}))).enter().append(\"g\").attr(\"class\",(function(t){return\"trace scatter trace\"+t[0].trace.uid})).style(\"stroke-miterlimit\",2),u.order(),function(t,e,r){e.each((function(e){var i=o(n.select(this),\"g\",\"fills\");l.setClipUrl(i,r.layerClipId,t);var a=e[0].trace,c=[];a._ownfill&&c.push(\"_ownFill\"),a._nexttrace&&c.push(\"_nextFill\");var u=i.selectAll(\"g\").data(c,s);u.enter().append(\"g\"),u.exit().each((function(t){a[t]=null})).remove(),u.order().each((function(t){a[t]=o(n.select(this),\"path\",\"js-fill\")}))}))}(t,u,e),g)?(c&&(h=c()),n.transition().duration(a.duration).ease(a.easing).each(\"end\",(function(){h&&h()})).each(\"interrupt\",(function(){h&&h()})).each((function(){i.selectAll(\"g.trace\").each((function(r,n){p(t,n,e,r,m,this,a)}))}))):u.each((function(r,n){p(t,n,e,r,m,this,a)}));d&&u.exit().remove(),i.selectAll(\"path:not([d])\").remove()}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/polygon\":515,\"../../registry\":638,\"./line_points\":940,\"./link_traces\":942,\"./subtypes\":951,\"@plotly/d3\":58}],948:[function(t,e,r){\"use strict\";var n=t(\"./subtypes\");e.exports=function(t,e){var r,i,a,o,s=t.cd,l=t.xaxis,c=t.yaxis,u=[],f=s[0].trace;if(!n.hasMarkers(f)&&!n.hasText(f))return[];if(!1===e)for(r=0;r0){var h=i.c2l(u);i._lowerLogErrorBound||(i._lowerLogErrorBound=h),i._lowerErrorBound=Math.min(i._lowerLogErrorBound,h)}}else o[s]=[-l[0]*r,l[1]*r]}return o}e.exports=function(t,e,r){var n=[i(t.x,t.error_x,e[0],r.xaxis),i(t.y,t.error_y,e[1],r.yaxis),i(t.z,t.error_z,e[2],r.zaxis)],a=function(t){for(var e=0;e-1?-1:t.indexOf(\"right\")>-1?1:0}function b(t){return null==t?0:t.indexOf(\"top\")>-1?-1:t.indexOf(\"bottom\")>-1?1:0}function _(t,e){return e(4*t)}function w(t){return p[t]}function T(t,e,r,n,i){var a=null;if(l.isArrayOrTypedArray(t)){a=[];for(var o=0;o=0){var g=function(t,e,r){var n,i=(r+1)%3,a=(r+2)%3,o=[],l=[];for(n=0;n=0&&f(\"surfacecolor\",h||p);for(var d=[\"x\",\"y\",\"z\"],g=0;g<3;++g){var m=\"projection.\"+d[g];f(m+\".show\")&&(f(m+\".opacity\"),f(m+\".scale\"))}var v=n.getComponentMethod(\"errorbars\",\"supplyDefaults\");v(t,e,h||p||r,{axis:\"z\"}),v(t,e,h||p||r,{axis:\"y\",inherit:\"z\"}),v(t,e,h||p||r,{axis:\"x\",inherit:\"z\"})}else e.visible=!1}},{\"../../lib\":503,\"../../registry\":638,\"../scatter/line_defaults\":939,\"../scatter/marker_defaults\":945,\"../scatter/subtypes\":951,\"../scatter/text_defaults\":952,\"./attributes\":954}],959:[function(t,e,r){\"use strict\";e.exports={plot:t(\"./convert\"),attributes:t(\"./attributes\"),markerSymbols:t(\"../../constants/gl3d_markers\"),supplyDefaults:t(\"./defaults\"),colorbar:[{container:\"marker\",min:\"cmin\",max:\"cmax\"},{container:\"line\",min:\"cmin\",max:\"cmax\"}],calc:t(\"./calc\"),moduleType:\"trace\",name:\"scatter3d\",basePlotModule:t(\"../../plots/gl3d\"),categories:[\"gl3d\",\"symbols\",\"showLegend\",\"scatter-like\"],meta:{}}},{\"../../constants/gl3d_markers\":477,\"../../plots/gl3d\":598,\"./attributes\":954,\"./calc\":955,\"./convert\":957,\"./defaults\":958}],960:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\"),i=t(\"../../plots/attributes\"),a=t(\"../../plots/template_attributes\").hovertemplateAttrs,o=t(\"../../plots/template_attributes\").texttemplateAttrs,s=t(\"../../components/colorscale/attributes\"),l=t(\"../../lib/extend\").extendFlat,c=n.marker,u=n.line,f=c.line;e.exports={carpet:{valType:\"string\",editType:\"calc\"},a:{valType:\"data_array\",editType:\"calc\"},b:{valType:\"data_array\",editType:\"calc\"},mode:l({},n.mode,{dflt:\"markers\"}),text:l({},n.text,{}),texttemplate:o({editType:\"plot\"},{keys:[\"a\",\"b\",\"text\"]}),hovertext:l({},n.hovertext,{}),line:{color:u.color,width:u.width,dash:u.dash,shape:l({},u.shape,{values:[\"linear\",\"spline\"]}),smoothing:u.smoothing,editType:\"calc\"},connectgaps:n.connectgaps,fill:l({},n.fill,{values:[\"none\",\"toself\",\"tonext\"],dflt:\"none\"}),fillcolor:n.fillcolor,marker:l({symbol:c.symbol,opacity:c.opacity,maxdisplayed:c.maxdisplayed,size:c.size,sizeref:c.sizeref,sizemin:c.sizemin,sizemode:c.sizemode,line:l({width:f.width,editType:\"calc\"},s(\"marker.line\")),gradient:c.gradient,editType:\"calc\"},s(\"marker\")),textfont:n.textfont,textposition:n.textposition,selected:n.selected,unselected:n.unselected,hoverinfo:l({},i.hoverinfo,{flags:[\"a\",\"b\",\"text\",\"name\"]}),hoveron:n.hoveron,hovertemplate:a()}},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/template_attributes\":633,\"../scatter/attributes\":926}],961:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../scatter/colorscale_calc\"),a=t(\"../scatter/arrays_to_calcdata\"),o=t(\"../scatter/calc_selection\"),s=t(\"../scatter/calc\").calcMarkerSize,l=t(\"../carpet/lookup_carpetid\");e.exports=function(t,e){var r=e._carpetTrace=l(t,e);if(r&&r.visible&&\"legendonly\"!==r.visible){var c;e.xaxis=r.xaxis,e.yaxis=r.yaxis;var u,f,h=e._length,p=new Array(h),d=!1;for(c=0;c\")}return o}function y(t,e){var r;r=t.labelprefix&&t.labelprefix.length>0?t.labelprefix.replace(/ = $/,\"\"):t._hovertitle,m.push(r+\": \"+e.toFixed(3)+t.labelsuffix)}}},{\"../../lib\":503,\"../scatter/hover\":937}],966:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"./format_labels\"),calc:t(\"./calc\"),plot:t(\"./plot\"),style:t(\"../scatter/style\").style,styleOnSelect:t(\"../scatter/style\").styleOnSelect,hoverPoints:t(\"./hover\"),selectPoints:t(\"../scatter/select\"),eventData:t(\"./event_data\"),moduleType:\"trace\",name:\"scattercarpet\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"svg\",\"carpet\",\"symbols\",\"showLegend\",\"carpetDependent\",\"zoomScale\"],meta:{}}},{\"../../plots/cartesian\":568,\"../scatter/marker_colorbar\":944,\"../scatter/select\":948,\"../scatter/style\":950,\"./attributes\":960,\"./calc\":961,\"./defaults\":962,\"./event_data\":963,\"./format_labels\":964,\"./hover\":965,\"./plot\":967}],967:[function(t,e,r){\"use strict\";var n=t(\"../scatter/plot\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"../../components/drawing\");e.exports=function(t,e,r,o){var s,l,c,u=r[0][0].carpet,f={xaxis:i.getFromId(t,u.xaxis||\"x\"),yaxis:i.getFromId(t,u.yaxis||\"y\"),plot:e.plot};for(n(t,f,r,o),s=0;s\")}(c,g,t,l[0].t.labels),t.hovertemplate=c.hovertemplate,[t]}}},{\"../../components/fx\":406,\"../../constants/numerical\":479,\"../../lib\":503,\"../scatter/get_trace_color\":936,\"./attributes\":968}],974:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"./format_labels\"),calc:t(\"./calc\"),calcGeoJSON:t(\"./plot\").calcGeoJSON,plot:t(\"./plot\").plot,style:t(\"./style\"),styleOnSelect:t(\"../scatter/style\").styleOnSelect,hoverPoints:t(\"./hover\"),eventData:t(\"./event_data\"),selectPoints:t(\"./select\"),moduleType:\"trace\",name:\"scattergeo\",basePlotModule:t(\"../../plots/geo\"),categories:[\"geo\",\"symbols\",\"showLegend\",\"scatter-like\"],meta:{}}},{\"../../plots/geo\":589,\"../scatter/marker_colorbar\":944,\"../scatter/style\":950,\"./attributes\":968,\"./calc\":969,\"./defaults\":970,\"./event_data\":971,\"./format_labels\":972,\"./hover\":973,\"./plot\":975,\"./select\":976,\"./style\":977}],975:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../lib/topojson_utils\").getTopojsonFeatures,o=t(\"../../lib/geojson_utils\"),s=t(\"../../lib/geo_location_utils\"),l=t(\"../../plots/cartesian/autorange\").findExtremes,c=t(\"../../constants/numerical\").BADNUM,u=t(\"../scatter/calc\").calcMarkerSize,f=t(\"../scatter/subtypes\"),h=t(\"./style\");e.exports={calcGeoJSON:function(t,e){var r,n,i=t[0].trace,o=e[i.geo],f=o._subplot,h=i._length;if(Array.isArray(i.locations)){var p=i.locationmode,d=\"geojson-id\"===p?s.extractTraceFeature(t):a(i,f.topojson);for(r=0;r=m,w=2*b,T={},k=l.makeCalcdata(e,\"x\"),A=y.makeCalcdata(e,\"y\"),M=s(e,l,\"x\",k),S=s(e,y,\"y\",A),E=M.vals,L=S.vals;e._x=E,e._y=L,e.xperiodalignment&&(e._origX=k,e._xStarts=M.starts,e._xEnds=M.ends),e.yperiodalignment&&(e._origY=A,e._yStarts=S.starts,e._yEnds=S.ends);var C=new Array(w),P=new Array(b);for(r=0;r1&&i.extendFlat(s.line,p.linePositions(t,r,n));if(s.errorX||s.errorY){var l=p.errorBarPositions(t,r,n,a,o);s.errorX&&i.extendFlat(s.errorX,l.x),s.errorY&&i.extendFlat(s.errorY,l.y)}s.text&&(i.extendFlat(s.text,{positions:n},p.textPosition(t,r,s.text,s.marker)),i.extendFlat(s.textSel,{positions:n},p.textPosition(t,r,s.text,s.markerSel)),i.extendFlat(s.textUnsel,{positions:n},p.textPosition(t,r,s.text,s.markerUnsel)));return s}(t,0,e,C,E,L),z=d(t,x);return f(o,e),_?O.marker&&(I=O.marker.sizeAvg||Math.max(O.marker.size,3)):I=c(e,b),u(t,e,l,y,E,L,I),O.errorX&&v(e,l,O.errorX),O.errorY&&v(e,y,O.errorY),O.fill&&!z.fill2d&&(z.fill2d=!0),O.marker&&!z.scatter2d&&(z.scatter2d=!0),O.line&&!z.line2d&&(z.line2d=!0),!O.errorX&&!O.errorY||z.error2d||(z.error2d=!0),O.text&&!z.glText&&(z.glText=!0),O.marker&&(O.marker.snap=b),z.lineOptions.push(O.line),z.errorXOptions.push(O.errorX),z.errorYOptions.push(O.errorY),z.fillOptions.push(O.fill),z.markerOptions.push(O.marker),z.markerSelectedOptions.push(O.markerSel),z.markerUnselectedOptions.push(O.markerUnsel),z.textOptions.push(O.text),z.textSelectedOptions.push(O.textSel),z.textUnselectedOptions.push(O.textUnsel),z.selectBatch.push([]),z.unselectBatch.push([]),T._scene=z,T.index=z.count,T.x=E,T.y=L,T.positions=C,z.count++,[{x:!1,y:!1,t:T,trace:e}]}},{\"../../constants/numerical\":479,\"../../lib\":503,\"../../plots/cartesian/align_period\":551,\"../../plots/cartesian/autorange\":553,\"../../plots/cartesian/axis_ids\":558,\"../scatter/calc\":927,\"../scatter/colorscale_calc\":929,\"./constants\":980,\"./convert\":981,\"./scene_update\":989,\"@plotly/point-cluster\":59}],980:[function(t,e,r){\"use strict\";e.exports={TOO_MANY_POINTS:1e5,SYMBOL_SDF_SIZE:200,SYMBOL_SIZE:20,SYMBOL_STROKE:1,DOT_RE:/-dot/,OPEN_RE:/-open/,DASHES:{solid:[1],dot:[1,1],dash:[4,1],longdash:[8,1],dashdot:[4,1,1,1],longdashdot:[8,1,1,1]}}},{}],981:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"svg-path-sdf\"),a=t(\"color-normalize\"),o=t(\"../../registry\"),s=t(\"../../lib\"),l=t(\"../../components/drawing\"),c=t(\"../../plots/cartesian/axis_ids\"),u=t(\"../../lib/gl_format_color\").formatColor,f=t(\"../scatter/subtypes\"),h=t(\"../scatter/make_bubble_size_func\"),p=t(\"./helpers\"),d=t(\"./constants\"),g=t(\"../../constants/interactions\").DESELECTDIM,m={start:1,left:1,end:-1,right:-1,middle:0,center:0,bottom:1,top:-1},v=t(\"../../components/fx/helpers\").appendArrayPointValue;function y(t,e){var r,i=t._fullLayout,a=e._length,o=e.textfont,l=e.textposition,c=Array.isArray(l)?l:[l],u=o.color,f=o.size,h=o.family,p={},d=t._context.plotGlPixelRatio,g=e.texttemplate;if(g){p.text=[];var m=i._d3locale,y=Array.isArray(g),x=y?Math.min(g.length,a):a,b=y?function(t){return g[t]}:function(){return g};for(r=0;rd.TOO_MANY_POINTS||f.hasMarkers(e)?\"rect\":\"round\";if(c&&e.connectgaps){var h=n[0],p=n[1];for(i=0;i1?l[i]:l[0]:l,d=Array.isArray(c)?c.length>1?c[i]:c[0]:c,g=m[p],v=m[d],y=u?u/.8+1:0,x=-v*y-.5*v;o.offset[i]=[g*y/h,x/h]}}return o}}},{\"../../components/drawing\":388,\"../../components/fx/helpers\":402,\"../../constants/interactions\":478,\"../../lib\":503,\"../../lib/gl_format_color\":499,\"../../plots/cartesian/axis_ids\":558,\"../../registry\":638,\"../scatter/make_bubble_size_func\":943,\"../scatter/subtypes\":951,\"./constants\":980,\"./helpers\":985,\"color-normalize\":89,\"fast-isnumeric\":190,\"svg-path-sdf\":310}],982:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../registry\"),a=t(\"./helpers\"),o=t(\"./attributes\"),s=t(\"../scatter/constants\"),l=t(\"../scatter/subtypes\"),c=t(\"../scatter/xy_defaults\"),u=t(\"../scatter/period_defaults\"),f=t(\"../scatter/marker_defaults\"),h=t(\"../scatter/line_defaults\"),p=t(\"../scatter/fillcolor_defaults\"),d=t(\"../scatter/text_defaults\");e.exports=function(t,e,r,g){function m(r,i){return n.coerce(t,e,o,r,i)}var v=!!t.marker&&a.isOpenSymbol(t.marker.symbol),y=l.isBubble(t),x=c(t,e,g,m);if(x){u(t,e,g,m),m(\"xhoverformat\"),m(\"yhoverformat\");var b=x100},r.isDotSymbol=function(t){return\"string\"==typeof t?n.DOT_RE.test(t):t>200}},{\"./constants\":980}],986:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\"),a=t(\"../scatter/get_trace_color\");function o(t,e,r,o){var s=t.xa,l=t.ya,c=t.distance,u=t.dxy,f=t.index,h={pointNumber:f,x:e[f],y:r[f]};h.tx=Array.isArray(o.text)?o.text[f]:o.text,h.htx=Array.isArray(o.hovertext)?o.hovertext[f]:o.hovertext,h.data=Array.isArray(o.customdata)?o.customdata[f]:o.customdata,h.tp=Array.isArray(o.textposition)?o.textposition[f]:o.textposition;var p=o.textfont;p&&(h.ts=i.isArrayOrTypedArray(p.size)?p.size[f]:p.size,h.tc=Array.isArray(p.color)?p.color[f]:p.color,h.tf=Array.isArray(p.family)?p.family[f]:p.family);var d=o.marker;d&&(h.ms=i.isArrayOrTypedArray(d.size)?d.size[f]:d.size,h.mo=i.isArrayOrTypedArray(d.opacity)?d.opacity[f]:d.opacity,h.mx=i.isArrayOrTypedArray(d.symbol)?d.symbol[f]:d.symbol,h.mc=i.isArrayOrTypedArray(d.color)?d.color[f]:d.color);var g=d&&d.line;g&&(h.mlc=Array.isArray(g.color)?g.color[f]:g.color,h.mlw=i.isArrayOrTypedArray(g.width)?g.width[f]:g.width);var m=d&&d.gradient;m&&\"none\"!==m.type&&(h.mgt=Array.isArray(m.type)?m.type[f]:m.type,h.mgc=Array.isArray(m.color)?m.color[f]:m.color);var v=s.c2p(h.x,!0),y=l.c2p(h.y,!0),x=h.mrc||1,b=o.hoverlabel;b&&(h.hbg=Array.isArray(b.bgcolor)?b.bgcolor[f]:b.bgcolor,h.hbc=Array.isArray(b.bordercolor)?b.bordercolor[f]:b.bordercolor,h.hts=i.isArrayOrTypedArray(b.font.size)?b.font.size[f]:b.font.size,h.htc=Array.isArray(b.font.color)?b.font.color[f]:b.font.color,h.htf=Array.isArray(b.font.family)?b.font.family[f]:b.font.family,h.hnl=i.isArrayOrTypedArray(b.namelength)?b.namelength[f]:b.namelength);var _=o.hoverinfo;_&&(h.hi=Array.isArray(_)?_[f]:_);var w=o.hovertemplate;w&&(h.ht=Array.isArray(w)?w[f]:w);var T={};T[t.index]=h;var k=o._origX,A=o._origY,M=i.extendFlat({},t,{color:a(o,h),x0:v-x,x1:v+x,xLabelVal:k?k[f]:h.x,y0:y-x,y1:y+x,yLabelVal:A?A[f]:h.y,cd:T,distance:c,spikeDistance:u,hovertemplate:h.ht});return h.htx?M.text=h.htx:h.tx?M.text=h.tx:o.text&&(M.text=o.text),i.fillText(h,o,M),n.getComponentMethod(\"errorbars\",\"hoverInfo\")(h,o,M),M}e.exports={hoverPoints:function(t,e,r,n){var i,a,s,l,c,u,f,h,p,d,g=t.cd,m=g[0].t,v=g[0].trace,y=t.xa,x=t.ya,b=m.x,_=m.y,w=y.c2p(e),T=x.c2p(r),k=t.distance;if(m.tree){var A=y.p2c(w-k),M=y.p2c(w+k),S=x.p2c(T-k),E=x.p2c(T+k);i=\"x\"===n?m.tree.range(Math.min(A,M),Math.min(x._rl[0],x._rl[1]),Math.max(A,M),Math.max(x._rl[0],x._rl[1])):m.tree.range(Math.min(A,M),Math.min(S,E),Math.max(A,M),Math.max(S,E))}else i=m.ids;var L=k;if(\"x\"===n){var C=!!v.xperiodalignment,P=!!v.yperiodalignment;for(u=0;u=Math.min(I,O)&&w<=Math.max(I,O)?0:1/0}if(f=Math.min(z,D)&&T<=Math.max(z,D)?0:1/0}d=Math.sqrt(f*f+h*h),s=i[u]}}}else for(u=i.length-1;u>-1;u--)l=b[a=i[u]],c=_[a],f=y.c2p(l)-w,h=x.c2p(c)-T,(p=Math.sqrt(f*f+h*h))v.glText.length){var w=b-v.glText.length;for(d=0;dr&&(isNaN(e[n])||isNaN(e[n+1]));)n-=2;t.positions=e.slice(r,n+2)}return t})),v.line2d.update(v.lineOptions)),v.error2d){var k=(v.errorXOptions||[]).concat(v.errorYOptions||[]);v.error2d.update(k)}v.scatter2d&&v.scatter2d.update(v.markerOptions),v.fillOrder=s.repeat(null,b),v.fill2d&&(v.fillOptions=v.fillOptions.map((function(t,e){var n=r[e];if(t&&n&&n[0]&&n[0].trace){var i,a,o=n[0],s=o.trace,l=o.t,c=v.lineOptions[e],u=[];s._ownfill&&u.push(e),s._nexttrace&&u.push(e+1),u.length&&(v.fillOrder[e]=u);var f,h,p=[],d=c&&c.positions||l.positions;if(\"tozeroy\"===s.fill){for(f=0;ff&&isNaN(d[h+1]);)h-=2;0!==d[f+1]&&(p=[d[f],0]),p=p.concat(d.slice(f,h+2)),0!==d[h+1]&&(p=p.concat([d[h],0]))}else if(\"tozerox\"===s.fill){for(f=0;ff&&isNaN(d[h]);)h-=2;0!==d[f]&&(p=[0,d[f+1]]),p=p.concat(d.slice(f,h+2)),0!==d[h]&&(p=p.concat([0,d[h+1]]))}else if(\"toself\"===s.fill||\"tonext\"===s.fill){for(p=[],i=0,t.splitNull=!0,a=0;a-1;for(d=0;d\")}function u(t){return t+\"\\xb0\"}}e.exports={hoverPoints:function(t,e,r){var o=t.cd,c=o[0].trace,u=t.xa,f=t.ya,h=t.subplot,p=360*(e>=0?Math.floor((e+180)/360):Math.ceil((e-180)/360)),d=e-p;if(n.getClosest(o,(function(t){var e=t.lonlat;if(e[0]===s)return 1/0;var n=i.modHalf(e[0],360),a=e[1],o=h.project([n,a]),l=o.x-u.c2p([d,a]),c=o.y-f.c2p([n,r]),p=Math.max(3,t.mrc||0);return Math.max(Math.sqrt(l*l+c*c)-p,1-3/p)}),t),!1!==t.index){var g=o[t.index],m=g.lonlat,v=[i.modHalf(m[0],360)+p,m[1]],y=u.c2p(v),x=f.c2p(v),b=g.mrc||1;t.x0=y-b,t.x1=y+b,t.y0=x-b,t.y1=x+b;var _={};_[c.subplot]={_subplot:h};var w=c._module.formatLabels(g,c,_);return t.lonLabel=w.lonLabel,t.latLabel=w.latLabel,t.color=a(c,g),t.extraText=l(c,g,o[0].t.labels),t.hovertemplate=c.hovertemplate,[t]}},getExtraText:l}},{\"../../components/fx\":406,\"../../constants/numerical\":479,\"../../lib\":503,\"../scatter/get_trace_color\":936}],997:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"./format_labels\"),calc:t(\"../scattergeo/calc\"),plot:t(\"./plot\"),hoverPoints:t(\"./hover\").hoverPoints,eventData:t(\"./event_data\"),selectPoints:t(\"./select\"),styleOnSelect:function(t,e){e&&e[0].trace._glTrace.update(e)},moduleType:\"trace\",name:\"scattermapbox\",basePlotModule:t(\"../../plots/mapbox\"),categories:[\"mapbox\",\"gl\",\"symbols\",\"showLegend\",\"scatter-like\"],meta:{}}},{\"../../plots/mapbox\":613,\"../scatter/marker_colorbar\":944,\"../scattergeo/calc\":969,\"./attributes\":991,\"./defaults\":993,\"./event_data\":994,\"./format_labels\":995,\"./hover\":996,\"./plot\":998,\"./select\":999}],998:[function(t,e,r){\"use strict\";var n=t(\"./convert\"),i=t(\"../../plots/mapbox/constants\").traceLayerPrefix,a=[\"fill\",\"line\",\"circle\",\"symbol\"];function o(t,e){this.type=\"scattermapbox\",this.subplot=t,this.uid=e,this.sourceIds={fill:\"source-\"+e+\"-fill\",line:\"source-\"+e+\"-line\",circle:\"source-\"+e+\"-circle\",symbol:\"source-\"+e+\"-symbol\"},this.layerIds={fill:i+e+\"-fill\",line:i+e+\"-line\",circle:i+e+\"-circle\",symbol:i+e+\"-symbol\"},this.below=null}var s=o.prototype;s.addSource=function(t,e){this.subplot.map.addSource(this.sourceIds[t],{type:\"geojson\",data:e.geojson})},s.setSourceData=function(t,e){this.subplot.map.getSource(this.sourceIds[t]).setData(e.geojson)},s.addLayer=function(t,e,r){this.subplot.addLayer({type:t,id:this.layerIds[t],source:this.sourceIds[t],layout:e.layout,paint:e.paint},r)},s.update=function(t){var e,r,i,o=this.subplot,s=o.map,l=n(o.gd,t),c=o.belowLookup[\"trace-\"+this.uid];if(c!==this.below){for(e=a.length-1;e>=0;e--)r=a[e],s.removeLayer(this.layerIds[r]);for(e=0;e=0;e--){var r=a[e];t.removeLayer(this.layerIds[r]),t.removeSource(this.sourceIds[r])}},e.exports=function(t,e){for(var r=e[0].trace,i=new o(t,r.uid),s=n(t.gd,e),l=i.below=t.belowLookup[\"trace-\"+r.uid],c=0;c\")}}e.exports={hoverPoints:function(t,e,r,a){var o=n(t,e,r,a);if(o&&!1!==o[0].index){var s=o[0];if(void 0===s.index)return o;var l=t.subplot,c=s.cd[s.index],u=s.trace;if(l.isPtInside(c))return s.xLabelVal=void 0,s.yLabelVal=void 0,i(c,u,l,s),s.hovertemplate=u.hovertemplate,o}},makeHoverPointText:i}},{\"../scatter/hover\":937}],1005:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"scatterpolar\",basePlotModule:t(\"../../plots/polar\"),categories:[\"polar\",\"symbols\",\"showLegend\",\"scatter-like\"],attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\").supplyDefaults,colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"./format_labels\"),calc:t(\"./calc\"),plot:t(\"./plot\"),style:t(\"../scatter/style\").style,styleOnSelect:t(\"../scatter/style\").styleOnSelect,hoverPoints:t(\"./hover\").hoverPoints,selectPoints:t(\"../scatter/select\"),meta:{}}},{\"../../plots/polar\":622,\"../scatter/marker_colorbar\":944,\"../scatter/select\":948,\"../scatter/style\":950,\"./attributes\":1e3,\"./calc\":1001,\"./defaults\":1002,\"./format_labels\":1003,\"./hover\":1004,\"./plot\":1006}],1006:[function(t,e,r){\"use strict\";var n=t(\"../scatter/plot\"),i=t(\"../../constants/numerical\").BADNUM;e.exports=function(t,e,r){for(var a=e.layers.frontplot.select(\"g.scatterlayer\"),o={xaxis:e.xaxis,yaxis:e.yaxis,plot:e.framework,layerClipId:e._hasClipOnAxisFalse?e.clipIds.forTraces:null},s=e.radialAxis,l=e.angularAxis,c=0;c=c&&(y.marker.cluster=d.tree),y.marker&&(y.markerSel.positions=y.markerUnsel.positions=y.marker.positions=_),y.line&&_.length>1&&l.extendFlat(y.line,s.linePositions(t,p,_)),y.text&&(l.extendFlat(y.text,{positions:_},s.textPosition(t,p,y.text,y.marker)),l.extendFlat(y.textSel,{positions:_},s.textPosition(t,p,y.text,y.markerSel)),l.extendFlat(y.textUnsel,{positions:_},s.textPosition(t,p,y.text,y.markerUnsel))),y.fill&&!h.fill2d&&(h.fill2d=!0),y.marker&&!h.scatter2d&&(h.scatter2d=!0),y.line&&!h.line2d&&(h.line2d=!0),y.text&&!h.glText&&(h.glText=!0),h.lineOptions.push(y.line),h.fillOptions.push(y.fill),h.markerOptions.push(y.marker),h.markerSelectedOptions.push(y.markerSel),h.markerUnselectedOptions.push(y.markerUnsel),h.textOptions.push(y.text),h.textSelectedOptions.push(y.textSel),h.textUnselectedOptions.push(y.textUnsel),h.selectBatch.push([]),h.unselectBatch.push([]),d.x=w,d.y=T,d.rawx=w,d.rawy=T,d.r=m,d.theta=v,d.positions=_,d._scene=h,d.index=h.count,h.count++}})),a(t,e,r)}}},{\"../../lib\":503,\"../scattergl/constants\":980,\"../scattergl/convert\":981,\"../scattergl/plot\":988,\"../scattergl/scene_update\":989,\"@plotly/point-cluster\":59,\"fast-isnumeric\":190}],1014:[function(t,e,r){\"use strict\";var n=t(\"../../plots/template_attributes\").hovertemplateAttrs,i=t(\"../../plots/template_attributes\").texttemplateAttrs,a=t(\"../../lib/extend\").extendFlat,o=t(\"../scatter/attributes\"),s=t(\"../../plots/attributes\"),l=o.line;e.exports={mode:o.mode,real:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},imag:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},text:o.text,texttemplate:i({editType:\"plot\"},{keys:[\"real\",\"imag\",\"text\"]}),hovertext:o.hovertext,line:{color:l.color,width:l.width,dash:l.dash,shape:a({},l.shape,{values:[\"linear\",\"spline\"]}),smoothing:l.smoothing,editType:\"calc\"},connectgaps:o.connectgaps,marker:o.marker,cliponaxis:a({},o.cliponaxis,{dflt:!1}),textposition:o.textposition,textfont:o.textfont,fill:a({},o.fill,{values:[\"none\",\"toself\",\"tonext\"],dflt:\"none\"}),fillcolor:o.fillcolor,hoverinfo:a({},s.hoverinfo,{flags:[\"real\",\"imag\",\"text\",\"name\"]}),hoveron:o.hoveron,hovertemplate:n(),selected:o.selected,unselected:o.unselected}},{\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/template_attributes\":633,\"../scatter/attributes\":926}],1015:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../constants/numerical\").BADNUM,a=t(\"../scatter/colorscale_calc\"),o=t(\"../scatter/arrays_to_calcdata\"),s=t(\"../scatter/calc_selection\"),l=t(\"../scatter/calc\").calcMarkerSize;e.exports=function(t,e){for(var r=t._fullLayout,c=e.subplot,u=r[c].realaxis,f=r[c].imaginaryaxis,h=u.makeCalcdata(e,\"real\"),p=f.makeCalcdata(e,\"imag\"),d=e._length,g=new Array(d),m=0;m\")}}e.exports={hoverPoints:function(t,e,r,a){var o=n(t,e,r,a);if(o&&!1!==o[0].index){var s=o[0];if(void 0===s.index)return o;var l=t.subplot,c=s.cd[s.index],u=s.trace;if(l.isPtInside(c))return s.xLabelVal=void 0,s.yLabelVal=void 0,i(c,u,l,s),s.hovertemplate=u.hovertemplate,o}},makeHoverPointText:i}},{\"../scatter/hover\":937}],1019:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"scattersmith\",basePlotModule:t(\"../../plots/smith\"),categories:[\"smith\",\"symbols\",\"showLegend\",\"scatter-like\"],attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"./format_labels\"),calc:t(\"./calc\"),plot:t(\"./plot\"),style:t(\"../scatter/style\").style,styleOnSelect:t(\"../scatter/style\").styleOnSelect,hoverPoints:t(\"./hover\").hoverPoints,selectPoints:t(\"../scatter/select\"),meta:{}}},{\"../../plots/smith\":629,\"../scatter/marker_colorbar\":944,\"../scatter/select\":948,\"../scatter/style\":950,\"./attributes\":1014,\"./calc\":1015,\"./defaults\":1016,\"./format_labels\":1017,\"./hover\":1018,\"./plot\":1020}],1020:[function(t,e,r){\"use strict\";var n=t(\"../scatter/plot\"),i=t(\"../../constants/numerical\").BADNUM,a=t(\"../../plots/smith/helpers\").smith;e.exports=function(t,e,r){for(var o=e.layers.frontplot.select(\"g.scatterlayer\"),s={xaxis:e.xaxis,yaxis:e.yaxis,plot:e.framework,layerClipId:e._hasClipOnAxisFalse?e.clipIds.forTraces:null},l=0;l\"),o.hovertemplate=h.hovertemplate,a}function x(t,e){v.push(t._hovertitle+\": \"+e)}}},{\"../scatter/hover\":937}],1027:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"./format_labels\"),calc:t(\"./calc\"),plot:t(\"./plot\"),style:t(\"../scatter/style\").style,styleOnSelect:t(\"../scatter/style\").styleOnSelect,hoverPoints:t(\"./hover\"),selectPoints:t(\"../scatter/select\"),eventData:t(\"./event_data\"),moduleType:\"trace\",name:\"scatterternary\",basePlotModule:t(\"../../plots/ternary\"),categories:[\"ternary\",\"symbols\",\"showLegend\",\"scatter-like\"],meta:{}}},{\"../../plots/ternary\":634,\"../scatter/marker_colorbar\":944,\"../scatter/select\":948,\"../scatter/style\":950,\"./attributes\":1021,\"./calc\":1022,\"./defaults\":1023,\"./event_data\":1024,\"./format_labels\":1025,\"./hover\":1026,\"./plot\":1028}],1028:[function(t,e,r){\"use strict\";var n=t(\"../scatter/plot\");e.exports=function(t,e,r){var i=e.plotContainer;i.select(\".scatterlayer\").selectAll(\"*\").remove();var a={xaxis:e.xaxis,yaxis:e.yaxis,plot:i,layerClipId:e._hasClipOnAxisFalse?e.clipIdRelative:null},o=e.layers.frontplot.select(\"g.scatterlayer\");n(t,a,r,o)}},{\"../scatter/plot\":947}],1029:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\"),i=t(\"../../components/colorscale/attributes\"),a=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,o=t(\"../../plots/template_attributes\").hovertemplateAttrs,s=t(\"../scattergl/attributes\"),l=t(\"../../plots/cartesian/constants\").idRegex,c=t(\"../../plot_api/plot_template\").templatedArray,u=t(\"../../lib/extend\").extendFlat,f=n.marker,h=f.line,p=u(i(\"marker.line\",{editTypeOverride:\"calc\"}),{width:u({},h.width,{editType:\"calc\"}),editType:\"calc\"}),d=u(i(\"marker\"),{symbol:f.symbol,size:u({},f.size,{editType:\"markerSize\"}),sizeref:f.sizeref,sizemin:f.sizemin,sizemode:f.sizemode,opacity:f.opacity,colorbar:f.colorbar,line:p,editType:\"calc\"});function g(t){return{valType:\"info_array\",freeLength:!0,editType:\"calc\",items:{valType:\"subplotid\",regex:l[t],editType:\"plot\"}}}d.color.editType=d.cmin.editType=d.cmax.editType=\"style\",e.exports={dimensions:c(\"dimension\",{visible:{valType:\"boolean\",dflt:!0,editType:\"calc\"},label:{valType:\"string\",editType:\"calc\"},values:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},axis:{type:{valType:\"enumerated\",values:[\"linear\",\"log\",\"date\",\"category\"],editType:\"calc+clearAxisTypes\"},matches:{valType:\"boolean\",dflt:!1,editType:\"calc\"},editType:\"calc+clearAxisTypes\"},editType:\"calc+clearAxisTypes\"}),text:u({},s.text,{}),hovertext:u({},s.hovertext,{}),hovertemplate:o(),xhoverformat:a(\"x\"),yhoverformat:a(\"y\"),marker:d,xaxes:g(\"x\"),yaxes:g(\"y\"),diagonal:{visible:{valType:\"boolean\",dflt:!0,editType:\"calc\"},editType:\"calc\"},showupperhalf:{valType:\"boolean\",dflt:!0,editType:\"calc\"},showlowerhalf:{valType:\"boolean\",dflt:!0,editType:\"calc\"},selected:{marker:s.selected.marker,editType:\"calc\"},unselected:{marker:s.unselected.marker,editType:\"calc\"},opacity:s.opacity}},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plot_api/plot_template\":543,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/cartesian/constants\":561,\"../../plots/template_attributes\":633,\"../scatter/attributes\":926,\"../scattergl/attributes\":978}],1030:[function(t,e,r){\"use strict\";var n=t(\"regl-line2d\"),i=t(\"../../registry\"),a=t(\"../../lib/prepare_regl\"),o=t(\"../../plots/get_data\").getModuleCalcData,s=t(\"../../plots/cartesian\"),l=t(\"../../plots/cartesian/axis_ids\").getFromId,c=t(\"../../plots/cartesian/axes\").shouldShowZeroLine;function u(t,e,r){for(var n=r.matrixOptions.data.length,i=e._visibleDims,a=r.viewOpts.ranges=new Array(n),o=0;oh?b.sizeAvg||Math.max(b.size,3):a(e,x),p=0;pa&&l||i-1,P=!0;if(o(x)||!!p.selectedpoints||C){var I=p._length;if(p.selectedpoints){g.selectBatch=p.selectedpoints;var O=p.selectedpoints,z={};for(l=0;l1&&(u=g[y-1],h=m[y-1],d=v[y-1]),e=0;eu?\"-\":\"+\")+\"x\")).replace(\"y\",(f>h?\"-\":\"+\")+\"y\")).replace(\"z\",(p>d?\"-\":\"+\")+\"z\");var L=function(){y=0,M=[],S=[],E=[]};(!y||y2?t.slice(1,e-1):2===e?[(t[0]+t[1])/2]:t}function p(t){var e=t.length;return 1===e?[.5,.5]:[t[1]-t[0],t[e-1]-t[e-2]]}function d(t,e){var r=t.fullSceneLayout,i=t.dataScale,u=e._len,f={};function d(t,e){var n=r[e],o=i[c[e]];return a.simpleMap(t,(function(t){return n.d2l(t)*o}))}if(f.vectors=l(d(e._u,\"xaxis\"),d(e._v,\"yaxis\"),d(e._w,\"zaxis\"),u),!u)return{positions:[],cells:[]};var g=d(e._Xs,\"xaxis\"),m=d(e._Ys,\"yaxis\"),v=d(e._Zs,\"zaxis\");if(f.meshgrid=[g,m,v],f.gridFill=e._gridFill,e._slen)f.startingPositions=l(d(e._startsX,\"xaxis\"),d(e._startsY,\"yaxis\"),d(e._startsZ,\"zaxis\"));else{for(var y=m[0],x=h(g),b=h(v),_=new Array(x.length*b.length),w=0,T=0;T=0};v?(r=Math.min(m.length,x.length),l=function(t){return A(m[t])&&M(t)},f=function(t){return String(m[t])}):(r=Math.min(y.length,x.length),l=function(t){return A(y[t])&&M(t)},f=function(t){return String(y[t])}),_&&(r=Math.min(r,b.length));for(var S=0;S1){for(var P=a.randstr(),I=0;I\"),name:A||z(\"name\")?y.name:void 0,color:k(\"hoverlabel.bgcolor\")||x.color,borderColor:k(\"hoverlabel.bordercolor\"),fontFamily:k(\"hoverlabel.font.family\"),fontSize:k(\"hoverlabel.font.size\"),fontColor:k(\"hoverlabel.font.color\"),nameLength:k(\"hoverlabel.namelength\"),textAlign:k(\"hoverlabel.align\"),hovertemplate:A,hovertemplateLabels:P,eventData:l};m&&(F.x0=E-i.rInscribed*i.rpx1,F.x1=E+i.rInscribed*i.rpx1,F.idealAlign=i.pxmid[0]<0?\"left\":\"right\"),v&&(F.x=E,F.idealAlign=E<0?\"left\":\"right\");var B=[];o.loneHover(F,{container:a._hoverlayer.node(),outerContainer:a._paper.node(),gd:r,inOut_bbox:B}),l[0].bbox=B[0],d._hasHoverLabel=!0}if(v){var N=t.select(\"path.surface\");h.styleOne(N,i,y,{hovered:!0})}d._hasHoverEvent=!0,r.emit(\"plotly_hover\",{points:l||[f(i,y,h.eventDataKeys)],event:n.event})}})),t.on(\"mouseout\",(function(e){var i=r._fullLayout,a=r._fullData[d.index],s=n.select(this).datum();if(d._hasHoverEvent&&(e.originalEvent=n.event,r.emit(\"plotly_unhover\",{points:[f(s,a,h.eventDataKeys)],event:n.event}),d._hasHoverEvent=!1),d._hasHoverLabel&&(o.loneUnhover(i._hoverlayer.node()),d._hasHoverLabel=!1),v){var l=t.select(\"path.surface\");h.styleOne(l,s,a,{hovered:!1})}})),t.on(\"click\",(function(t){var e=r._fullLayout,a=r._fullData[d.index],s=m&&(c.isHierarchyRoot(t)||c.isLeaf(t)),u=c.getPtId(t),p=c.isEntry(t)?c.findEntryWithChild(g,u):c.findEntryWithLevel(g,u),v=c.getPtId(p),y={points:[f(t,a,h.eventDataKeys)],event:n.event};s||(y.nextLevel=v);var x=l.triggerHandler(r,\"plotly_\"+d.type+\"click\",y);if(!1!==x&&e.hovermode&&(r._hoverdata=[f(t,a,h.eventDataKeys)],o.click(r,n.event)),!s&&!1!==x&&!r._dragging&&!r._transitioning){i.call(\"_storeDirectGUIEdit\",a,e._tracePreGUI[a.uid],{level:a.level});var b={data:[{level:v}],traces:[d.index]},_={frame:{redraw:!1,duration:h.transitionTime},transition:{duration:h.transitionTime,easing:h.transitionEasing},mode:\"immediate\",fromcurrent:!0};o.loneUnhover(e._hoverlayer.node()),i.call(\"animate\",r,b,_)}}))}},{\"../../components/fx\":406,\"../../components/fx/helpers\":402,\"../../lib\":503,\"../../lib/events\":492,\"../../registry\":638,\"../pie/helpers\":905,\"./helpers\":1051,\"@plotly/d3\":58}],1051:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../components/color\"),a=t(\"../../lib/setcursor\"),o=t(\"../pie/helpers\");function s(t){return t.data.data.pid}r.findEntryWithLevel=function(t,e){var n;return e&&t.eachAfter((function(t){if(r.getPtId(t)===e)return n=t.copy()})),n||t},r.findEntryWithChild=function(t,e){var n;return t.eachAfter((function(t){for(var i=t.children||[],a=0;a0)},r.getMaxDepth=function(t){return t.maxdepth>=0?t.maxdepth:1/0},r.isHeader=function(t,e){return!(r.isLeaf(t)||t.depth===e._maxDepth-1)},r.getParent=function(t,e){return r.findEntryWithLevel(t,s(e))},r.listPath=function(t,e){var n=t.parent;if(!n)return[];var i=e?[n.data[e]]:[n];return r.listPath(n,e).concat(i)},r.getPath=function(t){return r.listPath(t,\"label\").join(\"/\")+\"/\"},r.formatValue=o.formatPieValue,r.formatPercent=function(t,e){var r=n.formatPercent(t,0);return\"0%\"===r&&(r=o.formatPiePercent(t,e)),r}},{\"../../components/color\":366,\"../../lib\":503,\"../../lib/setcursor\":524,\"../pie/helpers\":905}],1052:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"sunburst\",basePlotModule:t(\"./base_plot\"),categories:[],animatable:!0,attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\"),supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\").calc,crossTraceCalc:t(\"./calc\").crossTraceCalc,plot:t(\"./plot\").plot,style:t(\"./style\").style,colorbar:t(\"../scatter/marker_colorbar\"),meta:{}}},{\"../scatter/marker_colorbar\":944,\"./attributes\":1045,\"./base_plot\":1046,\"./calc\":1047,\"./defaults\":1049,\"./layout_attributes\":1053,\"./layout_defaults\":1054,\"./plot\":1055,\"./style\":1056}],1053:[function(t,e,r){\"use strict\";e.exports={sunburstcolorway:{valType:\"colorlist\",editType:\"calc\"},extendsunburstcolors:{valType:\"boolean\",dflt:!0,editType:\"calc\"}}},{}],1054:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e){function r(r,a){return n.coerce(t,e,i,r,a)}r(\"sunburstcolorway\",e.colorway),r(\"extendsunburstcolors\")}},{\"../../lib\":503,\"./layout_attributes\":1053}],1055:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"d3-hierarchy\"),a=t(\"d3-interpolate\").interpolate,o=t(\"../../components/drawing\"),s=t(\"../../lib\"),l=t(\"../../lib/svg_text_utils\"),c=t(\"../bar/uniform_text\"),u=c.recordMinTextSize,f=c.clearMinTextSize,h=t(\"../pie/plot\"),p=t(\"../pie/helpers\").getRotationAngle,d=h.computeTransform,g=h.transformInsideText,m=t(\"./style\").styleOne,v=t(\"../bar/style\").resizeText,y=t(\"./fx\"),x=t(\"./constants\"),b=t(\"./helpers\");function _(t,e,c,f){var h=t._fullLayout,v=!h.uniformtext.mode&&b.hasTransition(f),_=n.select(c).selectAll(\"g.slice\"),T=e[0],k=T.trace,A=T.hierarchy,M=b.findEntryWithLevel(A,k.level),S=b.getMaxDepth(k),E=h._size,L=k.domain,C=E.w*(L.x[1]-L.x[0]),P=E.h*(L.y[1]-L.y[0]),I=.5*Math.min(C,P),O=T.cx=E.l+E.w*(L.x[1]+L.x[0])/2,z=T.cy=E.t+E.h*(1-L.y[0])-P/2;if(!M)return _.remove();var D=null,R={};v&&_.each((function(t){R[b.getPtId(t)]={rpx0:t.rpx0,rpx1:t.rpx1,x0:t.x0,x1:t.x1,transform:t.transform},!D&&b.isEntry(t)&&(D=t)}));var F=function(t){return i.partition().size([2*Math.PI,t.height+1])(t)}(M).descendants(),B=M.height+1,N=0,j=S;T.hasMultipleRoots&&b.isHierarchyRoot(M)&&(F=F.slice(1),B-=1,N=1,j+=1),F=F.filter((function(t){return t.y1<=j}));var U=p(k.rotation);U&&F.forEach((function(t){t.x0+=U,t.x1+=U}));var V=Math.min(B,S),H=function(t){return(t-N)/V*I},q=function(t,e){return[t*Math.cos(e),-t*Math.sin(e)]},G=function(t){return s.pathAnnulus(t.rpx0,t.rpx1,t.x0,t.x1,O,z)},Y=function(t){return O+w(t)[0]*(t.transform.rCenter||0)+(t.transform.x||0)},W=function(t){return z+w(t)[1]*(t.transform.rCenter||0)+(t.transform.y||0)};(_=_.data(F,b.getPtId)).enter().append(\"g\").classed(\"slice\",!0),v?_.exit().transition().each((function(){var t=n.select(this);t.select(\"path.surface\").transition().attrTween(\"d\",(function(t){var e=function(t){var e,r=b.getPtId(t),n=R[r],i=R[b.getPtId(M)];if(i){var o=(t.x1>i.x1?2*Math.PI:0)+U;e=t.rpx1X?2*Math.PI:0)+U;e={x0:i,x1:i}}else e={rpx0:I,rpx1:I},s.extendFlat(e,K(t));else e={rpx0:0,rpx1:0};else e={x0:U,x1:U};return a(e,n)}(t);return function(t){return G(e(t))}})):f.attr(\"d\",G),c.call(y,M,t,e,{eventDataKeys:x.eventDataKeys,transitionTime:x.CLICK_TRANSITION_TIME,transitionEasing:x.CLICK_TRANSITION_EASING}).call(b.setSliceCursor,t,{hideOnRoot:!0,hideOnLeaves:!0,isTransitioning:t._transitioning}),f.call(m,i,k);var p=s.ensureSingle(c,\"g\",\"slicetext\"),_=s.ensureSingle(p,\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),w=s.ensureUniformFontSize(t,b.determineTextFont(k,i,h.font));_.text(r.formatSliceLabel(i,M,k,e,h)).classed(\"slicetext\",!0).attr(\"text-anchor\",\"middle\").call(o.font,w).call(l.convertToTspans,t);var A=o.bBox(_.node());i.transform=g(A,i,T),i.transform.targetX=Y(i),i.transform.targetY=W(i);var S=function(t,e){var r=t.transform;return d(r,e),r.fontSize=w.size,u(k.type,r,h),s.getTextTransform(r)};v?_.transition().attrTween(\"transform\",(function(t){var e=function(t){var e,r=R[b.getPtId(t)],n=t.transform;if(r)e=r;else if(e={rpx1:t.rpx1,transform:{textPosAngle:n.textPosAngle,scale:0,rotate:n.rotate,rCenter:n.rCenter,x:n.x,y:n.y}},D)if(t.parent)if(X){var i=t.x1>X?2*Math.PI:0;e.x0=e.x1=i}else s.extendFlat(e,K(t));else e.x0=e.x1=U;else e.x0=e.x1=U;var o=a(e.transform.textPosAngle,t.transform.textPosAngle),l=a(e.rpx1,t.rpx1),c=a(e.x0,t.x0),f=a(e.x1,t.x1),p=a(e.transform.scale,n.scale),d=a(e.transform.rotate,n.rotate),g=0===n.rCenter?3:0===e.transform.rCenter?1/3:1,m=a(e.transform.rCenter,n.rCenter);return function(t){var e=l(t),r=c(t),i=f(t),a=function(t){return m(Math.pow(t,g))}(t),s={pxmid:q(e,(r+i)/2),rpx1:e,transform:{textPosAngle:o(t),rCenter:a,x:n.x,y:n.y}};return u(k.type,n,h),{transform:{targetX:Y(s),targetY:W(s),scale:p(t),rotate:d(t),rCenter:a}}}}(t);return function(t){return S(e(t),A)}})):_.attr(\"transform\",S(i,A))}))}function w(t){return e=t.rpx1,r=t.transform.textPosAngle,[e*Math.sin(r),-e*Math.cos(r)];var e,r}r.plot=function(t,e,r,i){var a,o,s=t._fullLayout,l=s._sunburstlayer,c=!r,u=!s.uniformtext.mode&&b.hasTransition(r);(f(\"sunburst\",s),(a=l.selectAll(\"g.trace.sunburst\").data(e,(function(t){return t[0].trace.uid}))).enter().append(\"g\").classed(\"trace\",!0).classed(\"sunburst\",!0).attr(\"stroke-linejoin\",\"round\"),a.order(),u)?(i&&(o=i()),n.transition().duration(r.duration).ease(r.easing).each(\"end\",(function(){o&&o()})).each(\"interrupt\",(function(){o&&o()})).each((function(){l.selectAll(\"g.trace\").each((function(e){_(t,e,this,r)}))}))):(a.each((function(e){_(t,e,this,r)})),s.uniformtext.mode&&v(t,s._sunburstlayer.selectAll(\".trace\"),\"sunburst\"));c&&a.exit().remove()},r.formatSliceLabel=function(t,e,r,n,i){var a=r.texttemplate,o=r.textinfo;if(!(a||o&&\"none\"!==o))return\"\";var l=i.separators,c=n[0],u=t.data.data,f=c.hierarchy,h=b.isHierarchyRoot(t),p=b.getParent(f,t),d=b.getValue(t);if(!a){var g,m=o.split(\"+\"),v=function(t){return-1!==m.indexOf(t)},y=[];if(v(\"label\")&&u.label&&y.push(u.label),u.hasOwnProperty(\"v\")&&v(\"value\")&&y.push(b.formatValue(u.v,l)),!h){v(\"current path\")&&y.push(b.getPath(t.data));var x=0;v(\"percent parent\")&&x++,v(\"percent entry\")&&x++,v(\"percent root\")&&x++;var _=x>1;if(x){var w,T=function(t){g=b.formatPercent(w,l),_&&(g+=\" of \"+t),y.push(g)};v(\"percent parent\")&&!h&&(w=d/b.getValue(p),T(\"parent\")),v(\"percent entry\")&&(w=d/b.getValue(e),T(\"entry\")),v(\"percent root\")&&(w=d/b.getValue(f),T(\"root\"))}}return v(\"text\")&&(g=s.castOption(r,u.i,\"text\"),s.isValidTextValue(g)&&y.push(g)),y.join(\"
\")}var k=s.castOption(r,u.i,\"texttemplate\");if(!k)return\"\";var A={};u.label&&(A.label=u.label),u.hasOwnProperty(\"v\")&&(A.value=u.v,A.valueLabel=b.formatValue(u.v,l)),A.currentPath=b.getPath(t.data),h||(A.percentParent=d/b.getValue(p),A.percentParentLabel=b.formatPercent(A.percentParent,l),A.parent=b.getPtLabel(p)),A.percentEntry=d/b.getValue(e),A.percentEntryLabel=b.formatPercent(A.percentEntry,l),A.entry=b.getPtLabel(e),A.percentRoot=d/b.getValue(f),A.percentRootLabel=b.formatPercent(A.percentRoot,l),A.root=b.getPtLabel(f),u.hasOwnProperty(\"color\")&&(A.color=u.color);var M=s.castOption(r,u.i,\"text\");return(s.isValidTextValue(M)||\"\"===M)&&(A.text=M),A.customdata=s.castOption(r,u.i,\"customdata\"),s.texttemplateString(k,A,i._d3locale,A,r._meta||{})}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../bar/style\":662,\"../bar/uniform_text\":664,\"../pie/helpers\":905,\"../pie/plot\":909,\"./constants\":1048,\"./fx\":1050,\"./helpers\":1051,\"./style\":1056,\"@plotly/d3\":58,\"d3-hierarchy\":115,\"d3-interpolate\":116}],1056:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../components/color\"),a=t(\"../../lib\"),o=t(\"../bar/uniform_text\").resizeText;function s(t,e,r){var n=e.data.data,o=!e.children,s=n.i,l=a.castOption(r,s,\"marker.line.color\")||i.defaultLine,c=a.castOption(r,s,\"marker.line.width\")||0;t.style(\"stroke-width\",c).call(i.fill,n.color).call(i.stroke,l).style(\"opacity\",o?r.leaf.opacity:null)}e.exports={style:function(t){var e=t._fullLayout._sunburstlayer.selectAll(\".trace\");o(t,e,\"sunburst\"),e.each((function(t){var e=n.select(this),r=t[0].trace;e.style(\"opacity\",r.opacity),e.selectAll(\"path.surface\").each((function(t){n.select(this).call(s,t,r)}))}))},styleOne:s}},{\"../../components/color\":366,\"../../lib\":503,\"../bar/uniform_text\":664,\"@plotly/d3\":58}],1057:[function(t,e,r){\"use strict\";var n=t(\"../../components/color\"),i=t(\"../../components/colorscale/attributes\"),a=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,o=t(\"../../plots/template_attributes\").hovertemplateAttrs,s=t(\"../../plots/attributes\"),l=t(\"../../lib/extend\").extendFlat,c=t(\"../../plot_api/edit_types\").overrideAll;function u(t){return{show:{valType:\"boolean\",dflt:!1},start:{valType:\"number\",dflt:null,editType:\"plot\"},end:{valType:\"number\",dflt:null,editType:\"plot\"},size:{valType:\"number\",dflt:null,min:0,editType:\"plot\"},project:{x:{valType:\"boolean\",dflt:!1},y:{valType:\"boolean\",dflt:!1},z:{valType:\"boolean\",dflt:!1}},color:{valType:\"color\",dflt:n.defaultLine},usecolormap:{valType:\"boolean\",dflt:!1},width:{valType:\"number\",min:1,max:16,dflt:2},highlight:{valType:\"boolean\",dflt:!0},highlightcolor:{valType:\"color\",dflt:n.defaultLine},highlightwidth:{valType:\"number\",min:1,max:16,dflt:2}}}var f=e.exports=c(l({z:{valType:\"data_array\"},x:{valType:\"data_array\"},y:{valType:\"data_array\"},text:{valType:\"string\",dflt:\"\",arrayOk:!0},hovertext:{valType:\"string\",dflt:\"\",arrayOk:!0},hovertemplate:o(),xhoverformat:a(\"x\"),yhoverformat:a(\"y\"),zhoverformat:a(\"z\"),connectgaps:{valType:\"boolean\",dflt:!1,editType:\"calc\"},surfacecolor:{valType:\"data_array\"}},i(\"\",{colorAttr:\"z or surfacecolor\",showScaleDflt:!0,autoColorDflt:!1,editTypeOverride:\"calc\"}),{contours:{x:u(),y:u(),z:u()},hidesurface:{valType:\"boolean\",dflt:!1},lightposition:{x:{valType:\"number\",min:-1e5,max:1e5,dflt:10},y:{valType:\"number\",min:-1e5,max:1e5,dflt:1e4},z:{valType:\"number\",min:-1e5,max:1e5,dflt:0}},lighting:{ambient:{valType:\"number\",min:0,max:1,dflt:.8},diffuse:{valType:\"number\",min:0,max:1,dflt:.8},specular:{valType:\"number\",min:0,max:2,dflt:.05},roughness:{valType:\"number\",min:0,max:1,dflt:.5},fresnel:{valType:\"number\",min:0,max:5,dflt:.2}},opacity:{valType:\"number\",min:0,max:1,dflt:1},opacityscale:{valType:\"any\",editType:\"calc\"},_deprecated:{zauto:l({},i.zauto,{}),zmin:l({},i.zmin,{}),zmax:l({},i.zmax,{})},hoverinfo:l({},s.hoverinfo),showlegend:l({},s.showlegend,{dflt:!1})}),\"calc\",\"nested\");f.x.editType=f.y.editType=f.z.editType=\"calc+clearAxisTypes\",f.transforms=void 0},{\"../../components/color\":366,\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plot_api/edit_types\":536,\"../../plots/attributes\":550,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/template_attributes\":633}],1058:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/calc\");e.exports=function(t,e){e.surfacecolor?n(t,e,{vals:e.surfacecolor,containerStr:\"\",cLetter:\"c\"}):n(t,e,{vals:e.z,containerStr:\"\",cLetter:\"c\"})}},{\"../../components/colorscale/calc\":374}],1059:[function(t,e,r){\"use strict\";var n=t(\"../../../stackgl_modules\").gl_surface3d,i=t(\"../../../stackgl_modules\").ndarray,a=t(\"../../../stackgl_modules\").ndarray_linear_interpolate.d2,o=t(\"../heatmap/interp2d\"),s=t(\"../heatmap/find_empties\"),l=t(\"../../lib\").isArrayOrTypedArray,c=t(\"../../lib/gl_format_color\").parseColorScale,u=t(\"../../lib/str2rgbarray\"),f=t(\"../../components/colorscale\").extractOpts;function h(t,e,r){this.scene=t,this.uid=r,this.surface=e,this.data=null,this.showContour=[!1,!1,!1],this.contourStart=[null,null,null],this.contourEnd=[null,null,null],this.contourSize=[0,0,0],this.minValues=[1/0,1/0,1/0],this.maxValues=[-1/0,-1/0,-1/0],this.dataScaleX=1,this.dataScaleY=1,this.refineData=!0,this.objectOffset=[0,0,0]}var p=h.prototype;p.getXat=function(t,e,r,n){var i=l(this.data.x)?l(this.data.x[0])?this.data.x[e][t]:this.data.x[t]:t;return void 0===r?i:n.d2l(i,0,r)},p.getYat=function(t,e,r,n){var i=l(this.data.y)?l(this.data.y[0])?this.data.y[e][t]:this.data.y[e]:e;return void 0===r?i:n.d2l(i,0,r)},p.getZat=function(t,e,r,n){var i=this.data.z[e][t];return null===i&&this.data.connectgaps&&this.data._interpolatedZ&&(i=this.data._interpolatedZ[e][t]),void 0===r?i:n.d2l(i,0,r)},p.handlePick=function(t){if(t.object===this.surface){var e=(t.data.index[0]-1)/this.dataScaleX-1,r=(t.data.index[1]-1)/this.dataScaleY-1,n=Math.max(Math.min(Math.round(e),this.data.z[0].length-1),0),i=Math.max(Math.min(Math.round(r),this.data._ylength-1),0);t.index=[n,i],t.traceCoordinate=[this.getXat(n,i),this.getYat(n,i),this.getZat(n,i)],t.dataCoordinate=[this.getXat(n,i,this.data.xcalendar,this.scene.fullSceneLayout.xaxis),this.getYat(n,i,this.data.ycalendar,this.scene.fullSceneLayout.yaxis),this.getZat(n,i,this.data.zcalendar,this.scene.fullSceneLayout.zaxis)];for(var a=0;a<3;a++){var o=t.dataCoordinate[a];null!=o&&(t.dataCoordinate[a]*=this.scene.dataScale[a])}var s=this.data.hovertext||this.data.text;return Array.isArray(s)&&s[i]&&void 0!==s[i][n]?t.textLabel=s[i][n]:t.textLabel=s||\"\",t.data.dataCoordinate=t.dataCoordinate.slice(),this.surface.highlight(t.data),this.scene.glplot.spikes.position=t.dataCoordinate,!0}};var d=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,1063,1069,1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277,1279,1283,1289,1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,1489,1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,1579,1583,1597,1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,1697,1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783,1787,1789,1801,1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,1913,1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003,2011,2017,2027,2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111,2113,2129,2131,2137,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239,2243,2251,2267,2269,2273,2281,2287,2293,2297,2309,2311,2333,2339,2341,2347,2351,2357,2371,2377,2381,2383,2389,2393,2399,2411,2417,2423,2437,2441,2447,2459,2467,2473,2477,2503,2521,2531,2539,2543,2549,2551,2557,2579,2591,2593,2609,2617,2621,2633,2647,2657,2659,2663,2671,2677,2683,2687,2689,2693,2699,2707,2711,2713,2719,2729,2731,2741,2749,2753,2767,2777,2789,2791,2797,2801,2803,2819,2833,2837,2843,2851,2857,2861,2879,2887,2897,2903,2909,2917,2927,2939,2953,2957,2963,2969,2971,2999];function g(t,e){if(t0){r=d[n];break}return r}function y(t,e){if(!(t<1||e<1)){for(var r=m(t),n=m(e),i=1,a=0;a_;)r--,r/=v(r),++r1?n:1},p.refineCoords=function(t){for(var e=this.dataScaleX,r=this.dataScaleY,n=t[0].shape[0],a=t[0].shape[1],o=0|Math.floor(t[0].shape[0]*e+1),s=0|Math.floor(t[0].shape[1]*r+1),l=1+n+1,c=1+a+1,u=i(new Float32Array(l*c),[l,c]),f=[1/e,0,0,0,1/r,0,0,0,1],h=0;h0&&null!==this.contourStart[t]&&null!==this.contourEnd[t]&&this.contourEnd[t]>this.contourStart[t]))for(i[t]=!0,e=this.contourStart[t];ea&&(this.minValues[e]=a),this.maxValues[e]\",maxDimensionCount:60,overdrag:45,releaseTransitionDuration:120,releaseTransitionEase:\"cubic-out\",scrollbarCaptureWidth:18,scrollbarHideDelay:1e3,scrollbarHideDuration:1e3,scrollbarOffset:5,scrollbarWidth:8,transitionDuration:100,transitionEase:\"cubic-out\",uplift:5,wrapSpacer:\" \",wrapSplitCharacter:\" \",cn:{table:\"table\",tableControlView:\"table-control-view\",scrollBackground:\"scroll-background\",yColumn:\"y-column\",columnBlock:\"column-block\",scrollAreaClip:\"scroll-area-clip\",scrollAreaClipRect:\"scroll-area-clip-rect\",columnBoundary:\"column-boundary\",columnBoundaryClippath:\"column-boundary-clippath\",columnBoundaryRect:\"column-boundary-rect\",columnCells:\"column-cells\",columnCell:\"column-cell\",cellRect:\"cell-rect\",cellText:\"cell-text\",cellTextHolder:\"cell-text-holder\",scrollbarKit:\"scrollbar-kit\",scrollbar:\"scrollbar\",scrollbarSlider:\"scrollbar-slider\",scrollbarGlyph:\"scrollbar-glyph\",scrollbarCaptureZone:\"scrollbar-capture-zone\"}}},{}],1066:[function(t,e,r){\"use strict\";var n=t(\"./constants\"),i=t(\"../../lib/extend\").extendFlat,a=t(\"fast-isnumeric\");function o(t){if(Array.isArray(t)){for(var e=0,r=0;r=e||c===t.length-1)&&(n[i]=o,o.key=l++,o.firstRowIndex=s,o.lastRowIndex=c,o={firstRowIndex:null,lastRowIndex:null,rows:[]},i+=a,s=c+1,a=0);return n}e.exports=function(t,e){var r=l(e.cells.values),p=function(t){return t.slice(e.header.values.length,t.length)},d=l(e.header.values);d.length&&!d[0].length&&(d[0]=[\"\"],d=l(d));var g=d.concat(p(r).map((function(){return c((d[0]||[\"\"]).length)}))),m=e.domain,v=Math.floor(t._fullLayout._size.w*(m.x[1]-m.x[0])),y=Math.floor(t._fullLayout._size.h*(m.y[1]-m.y[0])),x=e.header.values.length?g[0].map((function(){return e.header.height})):[n.emptyHeaderHeight],b=r.length?r[0].map((function(){return e.cells.height})):[],_=x.reduce(s,0),w=h(b,y-_+n.uplift),T=f(h(x,_),[]),k=f(w,T),A={},M=e._fullInput.columnorder.concat(p(r.map((function(t,e){return e})))),S=g.map((function(t,r){var n=Array.isArray(e.columnwidth)?e.columnwidth[Math.min(r,e.columnwidth.length-1)]:e.columnwidth;return a(n)?Number(n):1})),E=S.reduce(s,0);S=S.map((function(t){return t/E*v}));var L=Math.max(o(e.header.line.width),o(e.cells.line.width)),C={key:e.uid+t._context.staticPlot,translateX:m.x[0]*t._fullLayout._size.w,translateY:t._fullLayout._size.h*(1-m.y[1]),size:t._fullLayout._size,width:v,maxLineWidth:L,height:y,columnOrder:M,groupHeight:y,rowBlocks:k,headerRowBlocks:T,scrollY:0,cells:i({},e.cells,{values:r}),headerCells:i({},e.header,{values:g}),gdColumns:g.map((function(t){return t[0]})),gdColumnsOriginalOrder:g.map((function(t){return t[0]})),prevPages:[0,0],scrollbarState:{scrollbarScrollInProgress:!1},columns:g.map((function(t,e){var r=A[t];return A[t]=(r||0)+1,{key:t+\"__\"+A[t],label:t,specIndex:e,xIndex:M[e],xScale:u,x:void 0,calcdata:void 0,columnWidth:S[e]}}))};return C.columns.forEach((function(t){t.calcdata=C,t.x=u(t)})),C}},{\"../../lib/extend\":493,\"./constants\":1065,\"fast-isnumeric\":190}],1067:[function(t,e,r){\"use strict\";var n=t(\"../../lib/extend\").extendFlat;r.splitToPanels=function(t){var e=[0,0],r=n({},t,{key:\"header\",type:\"header\",page:0,prevPages:e,currentRepaint:[null,null],dragHandle:!0,values:t.calcdata.headerCells.values[t.specIndex],rowBlocks:t.calcdata.headerRowBlocks,calcdata:n({},t.calcdata,{cells:t.calcdata.headerCells})});return[n({},t,{key:\"cells1\",type:\"cells\",page:0,prevPages:e,currentRepaint:[null,null],dragHandle:!1,values:t.calcdata.cells.values[t.specIndex],rowBlocks:t.calcdata.rowBlocks}),n({},t,{key:\"cells2\",type:\"cells\",page:1,prevPages:e,currentRepaint:[null,null],dragHandle:!1,values:t.calcdata.cells.values[t.specIndex],rowBlocks:t.calcdata.rowBlocks}),r]},r.splitToCells=function(t){var e=function(t){var e=t.rowBlocks[t.page],r=e?e.rows[0].rowIndex:0,n=e?r+e.rows.length:0;return[r,n]}(t);return(t.values||[]).slice(e[0],e[1]).map((function(r,n){return{keyWithinBlock:n+(\"string\"==typeof r&&r.match(/[<$&> ]/)?\"_keybuster_\"+Math.random():\"\"),key:e[0]+n,column:t,calcdata:t.calcdata,page:t.page,rowBlocks:t.rowBlocks,value:r}}))}},{\"../../lib/extend\":493}],1068:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./attributes\"),a=t(\"../../plots/domain\").defaults;e.exports=function(t,e,r,o){function s(r,a){return n.coerce(t,e,i,r,a)}a(e,o,s),s(\"columnwidth\"),s(\"header.values\"),s(\"header.format\"),s(\"header.align\"),s(\"header.prefix\"),s(\"header.suffix\"),s(\"header.height\"),s(\"header.line.width\"),s(\"header.line.color\"),s(\"header.fill.color\"),n.coerceFont(s,\"header.font\",n.extendFlat({},o.font)),function(t,e){for(var r=t.columnorder||[],n=t.header.values.length,i=r.slice(0,n),a=i.slice().sort((function(t,e){return t-e})),o=i.map((function(t){return a.indexOf(t)})),s=o.length;s/i),l=!o||s;t.mayHaveMarkup=o&&i.match(/[<&>]/);var c,u=\"string\"==typeof(c=i)&&c.match(n.latexCheck);t.latex=u;var f,h,p=u?\"\":T(t.calcdata.cells.prefix,e,r)||\"\",d=u?\"\":T(t.calcdata.cells.suffix,e,r)||\"\",g=u?null:T(t.calcdata.cells.format,e,r)||null,m=p+(g?a(g)(t.value):t.value)+d;if(t.wrappingNeeded=!t.wrapped&&!l&&!u&&(f=w(m)),t.cellHeightMayIncrease=s||u||t.mayHaveMarkup||(void 0===f?w(m):f),t.needsConvertToTspans=t.mayHaveMarkup||t.wrappingNeeded||t.latex,t.wrappingNeeded){var v=(\" \"===n.wrapSplitCharacter?m.replace(/i&&n.push(a),i+=l}return n}(i,l,s);1===c.length&&(c[0]===i.length-1?c.unshift(c[0]-1):c.push(c[0]+1)),c[0]%2&&c.reverse(),e.each((function(t,e){t.page=c[e],t.scrollY=l})),e.attr(\"transform\",(function(t){var e=D(t.rowBlocks,t.page)-t.scrollY;return u(0,e)})),t&&(C(t,r,e,c,n.prevPages,n,0),C(t,r,e,c,n.prevPages,n,1),x(r,t))}}function L(t,e,r,a){return function(o){var s=o.calcdata?o.calcdata:o,l=e.filter((function(t){return s.key===t.key})),c=r||s.scrollbarState.dragMultiplier,u=s.scrollY;s.scrollY=void 0===a?s.scrollY+c*i.event.dy:a;var f=l.selectAll(\".\"+n.cn.yColumn).selectAll(\".\"+n.cn.columnBlock).filter(A);return E(t,f,l),s.scrollY===u}}function C(t,e,r,n,i,a,o){n[o]!==i[o]&&(clearTimeout(a.currentRepaint[o]),a.currentRepaint[o]=setTimeout((function(){var a=r.filter((function(t,e){return e===o&&n[e]!==i[e]}));b(t,e,a,r),i[o]=n[o]})))}function P(t,e,r,a){return function(){var o=i.select(e.parentNode);o.each((function(t){var e=t.fragments;o.selectAll(\"tspan.line\").each((function(t,r){e[r].width=this.getComputedTextLength()}));var r,i,a=e[e.length-1].width,s=e.slice(0,-1),l=[],c=0,u=t.column.columnWidth-2*n.cellPad;for(t.value=\"\";s.length;)c+(i=(r=s.shift()).width+a)>u&&(t.value+=l.join(n.wrapSpacer)+n.lineBreaker,l=[],c=0),l.push(r.text),c+=i;c&&(t.value+=l.join(n.wrapSpacer)),t.wrapped=!0})),o.selectAll(\"tspan.line\").remove(),_(o.select(\".\"+n.cn.cellText),r,t,a),i.select(e.parentNode.parentNode).call(z)}}function I(t,e,r,a,o){return function(){if(!o.settledY){var s=i.select(e.parentNode),l=B(o),c=o.key-l.firstRowIndex,f=l.rows[c].rowHeight,h=o.cellHeightMayIncrease?e.parentNode.getBoundingClientRect().height+2*n.cellPad:f,p=Math.max(h,f);p-l.rows[c].rowHeight&&(l.rows[c].rowHeight=p,t.selectAll(\".\"+n.cn.columnCell).call(z),E(null,t.filter(A),0),x(r,a,!0)),s.attr(\"transform\",(function(){var t=this.parentNode.getBoundingClientRect(),e=i.select(this.parentNode).select(\".\"+n.cn.cellRect).node().getBoundingClientRect(),r=this.transform.baseVal.consolidate(),a=e.top-t.top+(r?r.matrix.f:n.cellPad);return u(O(o,i.select(this.parentNode).select(\".\"+n.cn.cellTextHolder).node().getBoundingClientRect().width),a)})),o.settledY=!0}}}function O(t,e){switch(t.align){case\"left\":return n.cellPad;case\"right\":return t.column.columnWidth-(e||0)-n.cellPad;case\"center\":return(t.column.columnWidth-(e||0))/2;default:return n.cellPad}}function z(t){t.attr(\"transform\",(function(t){var e=t.rowBlocks[0].auxiliaryBlocks.reduce((function(t,e){return t+R(e,1/0)}),0),r=R(B(t),t.key);return u(0,r+e)})).selectAll(\".\"+n.cn.cellRect).attr(\"height\",(function(t){return(e=B(t),r=t.key,e.rows[r-e.firstRowIndex]).rowHeight;var e,r}))}function D(t,e){for(var r=0,n=e-1;n>=0;n--)r+=F(t[n]);return r}function R(t,e){for(var r=0,n=0;n\",\"<\",\"|\",\"/\",\"\\\\\"],dflt:\">\",editType:\"plot\"},thickness:{valType:\"number\",min:12,editType:\"plot\"},textfont:u({},s.textfont,{}),editType:\"calc\"},text:s.text,textinfo:l.textinfo,texttemplate:i({editType:\"plot\"},{keys:c.eventDataKeys.concat([\"label\",\"value\"])}),hovertext:s.hovertext,hoverinfo:l.hoverinfo,hovertemplate:n({},{keys:c.eventDataKeys}),textfont:s.textfont,insidetextfont:s.insidetextfont,outsidetextfont:u({},s.outsidetextfont,{}),textposition:{valType:\"enumerated\",values:[\"top left\",\"top center\",\"top right\",\"middle left\",\"middle center\",\"middle right\",\"bottom left\",\"bottom center\",\"bottom right\"],dflt:\"top left\",editType:\"plot\"},sort:s.sort,root:l.root,domain:o({name:\"treemap\",trace:!0,editType:\"calc\"})}},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plots/domain\":584,\"../../plots/template_attributes\":633,\"../pie/attributes\":900,\"../sunburst/attributes\":1045,\"./constants\":1074}],1072:[function(t,e,r){\"use strict\";var n=t(\"../../plots/plots\");r.name=\"treemap\",r.plot=function(t,e,i,a){n.plotBasePlot(r.name,t,e,i,a)},r.clean=function(t,e,i,a){n.cleanBasePlot(r.name,t,e,i,a)}},{\"../../plots/plots\":619}],1073:[function(t,e,r){\"use strict\";var n=t(\"../sunburst/calc\");r.calc=function(t,e){return n.calc(t,e)},r.crossTraceCalc=function(t){return n._runCrossTraceCalc(\"treemap\",t)}},{\"../sunburst/calc\":1047}],1074:[function(t,e,r){\"use strict\";e.exports={CLICK_TRANSITION_TIME:750,CLICK_TRANSITION_EASING:\"poly\",eventDataKeys:[\"currentPath\",\"root\",\"entry\",\"percentRoot\",\"percentEntry\",\"percentParent\"],gapWithPathbar:1}},{}],1075:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./attributes\"),a=t(\"../../components/color\"),o=t(\"../../plots/domain\").defaults,s=t(\"../bar/defaults\").handleText,l=t(\"../bar/constants\").TEXTPAD,c=t(\"../../components/colorscale\"),u=c.hasColorscale,f=c.handleDefaults;e.exports=function(t,e,r,c){function h(r,a){return n.coerce(t,e,i,r,a)}var p=h(\"labels\"),d=h(\"parents\");if(p&&p.length&&d&&d.length){var g=h(\"values\");g&&g.length?h(\"branchvalues\"):h(\"count\"),h(\"level\"),h(\"maxdepth\"),\"squarify\"===h(\"tiling.packing\")&&h(\"tiling.squarifyratio\"),h(\"tiling.flip\"),h(\"tiling.pad\");var m=h(\"text\");h(\"texttemplate\"),e.texttemplate||h(\"textinfo\",Array.isArray(m)?\"text+label\":\"label\"),h(\"hovertext\"),h(\"hovertemplate\");var v=h(\"pathbar.visible\");s(t,e,c,h,\"auto\",{hasPathbar:v,moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),h(\"textposition\");var y=-1!==e.textposition.indexOf(\"bottom\");h(\"marker.line.width\")&&h(\"marker.line.color\",c.paper_bgcolor);var x=h(\"marker.colors\");(e._hasColorscale=u(t,\"marker\",\"colors\")||(t.marker||{}).coloraxis)?f(t,e,c,h,{prefix:\"marker.\",cLetter:\"c\"}):h(\"marker.depthfade\",!(x||[]).length);var b=2*e.textfont.size;h(\"marker.pad.t\",y?b/4:b),h(\"marker.pad.l\",b/4),h(\"marker.pad.r\",b/4),h(\"marker.pad.b\",y?b:b/4),e._hovered={marker:{line:{width:2,color:a.contrast(c.paper_bgcolor)}}},v&&(h(\"pathbar.thickness\",e.pathbar.textfont.size+2*l),h(\"pathbar.side\"),h(\"pathbar.edgeshape\")),h(\"sort\"),h(\"root.color\"),o(e,c,h),e._length=null}else e.visible=!1}},{\"../../components/color\":366,\"../../components/colorscale\":378,\"../../lib\":503,\"../../plots/domain\":584,\"../bar/constants\":650,\"../bar/defaults\":652,\"./attributes\":1071}],1076:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../sunburst/helpers\"),a=t(\"../bar/uniform_text\").clearMinTextSize,o=t(\"../bar/style\").resizeText,s=t(\"./plot_one\");e.exports=function(t,e,r,l,c){var u,f,h=c.type,p=c.drawDescendants,d=t._fullLayout,g=d[\"_\"+h+\"layer\"],m=!r;(a(h,d),(u=g.selectAll(\"g.trace.\"+h).data(e,(function(t){return t[0].trace.uid}))).enter().append(\"g\").classed(\"trace\",!0).classed(h,!0),u.order(),!d.uniformtext.mode&&i.hasTransition(r))?(l&&(f=l()),n.transition().duration(r.duration).ease(r.easing).each(\"end\",(function(){f&&f()})).each(\"interrupt\",(function(){f&&f()})).each((function(){g.selectAll(\"g.trace\").each((function(e){s(t,e,this,r,p)}))}))):(u.each((function(e){s(t,e,this,r,p)})),d.uniformtext.mode&&o(t,g.selectAll(\".trace\"),h));m&&u.exit().remove()}},{\"../bar/style\":662,\"../bar/uniform_text\":664,\"../sunburst/helpers\":1051,\"./plot_one\":1085,\"@plotly/d3\":58}],1077:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../components/drawing\"),o=t(\"../../lib/svg_text_utils\"),s=t(\"./partition\"),l=t(\"./style\").styleOne,c=t(\"./constants\"),u=t(\"../sunburst/helpers\"),f=t(\"../sunburst/fx\");e.exports=function(t,e,r,h,p){var d=p.barDifY,g=p.width,m=p.height,v=p.viewX,y=p.viewY,x=p.pathSlice,b=p.toMoveInsideSlice,_=p.strTransform,w=p.hasTransition,T=p.handleSlicesExit,k=p.makeUpdateSliceInterpolator,A=p.makeUpdateTextInterpolator,M={},S=t._fullLayout,E=e[0],L=E.trace,C=E.hierarchy,P=g/L._entryDepth,I=u.listPath(r.data,\"id\"),O=s(C.copy(),[g,m],{packing:\"dice\",pad:{inner:0,top:0,left:0,right:0,bottom:0}}).descendants();(O=O.filter((function(t){var e=I.indexOf(t.data.id);return-1!==e&&(t.x0=P*e,t.x1=P*(e+1),t.y0=d,t.y1=d+m,t.onPathbar=!0,!0)}))).reverse(),(h=h.data(O,u.getPtId)).enter().append(\"g\").classed(\"pathbar\",!0),T(h,!0,M,[g,m],x),h.order();var z=h;w&&(z=z.transition().each(\"end\",(function(){var e=n.select(this);u.setSliceCursor(e,t,{hideOnRoot:!1,hideOnLeaves:!1,isTransitioning:!1})}))),z.each((function(s){s._x0=v(s.x0),s._x1=v(s.x1),s._y0=y(s.y0),s._y1=y(s.y1),s._hoverX=v(s.x1-Math.min(g,m)/2),s._hoverY=y(s.y1-m/2);var h=n.select(this),p=i.ensureSingle(h,\"path\",\"surface\",(function(t){t.style(\"pointer-events\",\"all\")}));w?p.transition().attrTween(\"d\",(function(t){var e=k(t,!0,M,[g,m]);return function(t){return x(e(t))}})):p.attr(\"d\",x),h.call(f,r,t,e,{styleOne:l,eventDataKeys:c.eventDataKeys,transitionTime:c.CLICK_TRANSITION_TIME,transitionEasing:c.CLICK_TRANSITION_EASING}).call(u.setSliceCursor,t,{hideOnRoot:!1,hideOnLeaves:!1,isTransitioning:t._transitioning}),p.call(l,s,L,{hovered:!1}),s._text=(u.getPtLabel(s)||\"\").split(\"
\").join(\" \")||\"\";var d=i.ensureSingle(h,\"g\",\"slicetext\"),T=i.ensureSingle(d,\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),E=i.ensureUniformFontSize(t,u.determineTextFont(L,s,S.font,{onPathbar:!0}));T.text(s._text||\" \").classed(\"slicetext\",!0).attr(\"text-anchor\",\"start\").call(a.font,E).call(o.convertToTspans,t),s.textBB=a.bBox(T.node()),s.transform=b(s,{fontSize:E.size,onPathbar:!0}),s.transform.fontSize=E.size,w?T.transition().attrTween(\"transform\",(function(t){var e=A(t,!0,M,[g,m]);return function(t){return _(e(t))}})):T.attr(\"transform\",_(s))}))}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../sunburst/fx\":1050,\"../sunburst/helpers\":1051,\"./constants\":1074,\"./partition\":1083,\"./style\":1086,\"@plotly/d3\":58}],1078:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../components/drawing\"),o=t(\"../../lib/svg_text_utils\"),s=t(\"./partition\"),l=t(\"./style\").styleOne,c=t(\"./constants\"),u=t(\"../sunburst/helpers\"),f=t(\"../sunburst/fx\"),h=t(\"../sunburst/plot\").formatSliceLabel;e.exports=function(t,e,r,p,d){var g=d.width,m=d.height,v=d.viewX,y=d.viewY,x=d.pathSlice,b=d.toMoveInsideSlice,_=d.strTransform,w=d.hasTransition,T=d.handleSlicesExit,k=d.makeUpdateSliceInterpolator,A=d.makeUpdateTextInterpolator,M=d.prevEntry,S=t._fullLayout,E=e[0].trace,L=-1!==E.textposition.indexOf(\"left\"),C=-1!==E.textposition.indexOf(\"right\"),P=-1!==E.textposition.indexOf(\"bottom\"),I=!P&&!E.marker.pad.t||P&&!E.marker.pad.b,O=s(r,[g,m],{packing:E.tiling.packing,squarifyratio:E.tiling.squarifyratio,flipX:E.tiling.flip.indexOf(\"x\")>-1,flipY:E.tiling.flip.indexOf(\"y\")>-1,pad:{inner:E.tiling.pad,top:E.marker.pad.t,left:E.marker.pad.l,right:E.marker.pad.r,bottom:E.marker.pad.b}}).descendants(),z=1/0,D=-1/0;O.forEach((function(t){var e=t.depth;e>=E._maxDepth?(t.x0=t.x1=(t.x0+t.x1)/2,t.y0=t.y1=(t.y0+t.y1)/2):(z=Math.min(z,e),D=Math.max(D,e))})),p=p.data(O,u.getPtId),E._maxVisibleLayers=isFinite(D)?D-z+1:0,p.enter().append(\"g\").classed(\"slice\",!0),T(p,!1,{},[g,m],x),p.order();var R=null;if(w&&M){var F=u.getPtId(M);p.each((function(t){null===R&&u.getPtId(t)===F&&(R={x0:t.x0,x1:t.x1,y0:t.y0,y1:t.y1})}))}var B=function(){return R||{x0:0,x1:g,y0:0,y1:m}},N=p;return w&&(N=N.transition().each(\"end\",(function(){var e=n.select(this);u.setSliceCursor(e,t,{hideOnRoot:!0,hideOnLeaves:!1,isTransitioning:!1})}))),N.each((function(s){var p=u.isHeader(s,E);s._x0=v(s.x0),s._x1=v(s.x1),s._y0=y(s.y0),s._y1=y(s.y1),s._hoverX=v(s.x1-E.marker.pad.r),s._hoverY=y(P?s.y1-E.marker.pad.b/2:s.y0+E.marker.pad.t/2);var d=n.select(this),T=i.ensureSingle(d,\"path\",\"surface\",(function(t){t.style(\"pointer-events\",\"all\")}));w?T.transition().attrTween(\"d\",(function(t){var e=k(t,!1,B(),[g,m]);return function(t){return x(e(t))}})):T.attr(\"d\",x),d.call(f,r,t,e,{styleOne:l,eventDataKeys:c.eventDataKeys,transitionTime:c.CLICK_TRANSITION_TIME,transitionEasing:c.CLICK_TRANSITION_EASING}).call(u.setSliceCursor,t,{isTransitioning:t._transitioning}),T.call(l,s,E,{hovered:!1}),s.x0===s.x1||s.y0===s.y1?s._text=\"\":s._text=p?I?\"\":u.getPtLabel(s)||\"\":h(s,r,E,e,S)||\"\";var M=i.ensureSingle(d,\"g\",\"slicetext\"),O=i.ensureSingle(M,\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),z=i.ensureUniformFontSize(t,u.determineTextFont(E,s,S.font));O.text(s._text||\" \").classed(\"slicetext\",!0).attr(\"text-anchor\",C?\"end\":L||p?\"start\":\"middle\").call(a.font,z).call(o.convertToTspans,t),s.textBB=a.bBox(O.node()),s.transform=b(s,{fontSize:z.size,isHeader:p}),s.transform.fontSize=z.size,w?O.transition().attrTween(\"transform\",(function(t){var e=A(t,!1,B(),[g,m]);return function(t){return _(e(t))}})):O.attr(\"transform\",_(s))})),R}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../sunburst/fx\":1050,\"../sunburst/helpers\":1051,\"../sunburst/plot\":1055,\"./constants\":1074,\"./partition\":1083,\"./style\":1086,\"@plotly/d3\":58}],1079:[function(t,e,r){\"use strict\";e.exports=function t(e,r,n){var i;n.swapXY&&(i=e.x0,e.x0=e.y0,e.y0=i,i=e.x1,e.x1=e.y1,e.y1=i),n.flipX&&(i=e.x0,e.x0=r[0]-e.x1,e.x1=r[0]-i),n.flipY&&(i=e.y0,e.y0=r[1]-e.y1,e.y1=r[1]-i);var a=e.children;if(a)for(var o=0;o-1?C+O:-(I+O):0,D={x0:P,x1:P,y0:z,y1:z+I},R=function(t,e,r){var n=v.tiling.pad,i=function(t){return t-n<=e.x0},a=function(t){return t+n>=e.x1},o=function(t){return t-n<=e.y0},s=function(t){return t+n>=e.y1};return t.x0===e.x0&&t.x1===e.x1&&t.y0===e.y0&&t.y1===e.y1?{x0:t.x0,x1:t.x1,y0:t.y0,y1:t.y1}:{x0:i(t.x0-n)?0:a(t.x0-n)?r[0]:t.x0,x1:i(t.x1+n)?0:a(t.x1+n)?r[0]:t.x1,y0:o(t.y0-n)?0:s(t.y0-n)?r[1]:t.y0,y1:o(t.y1+n)?0:s(t.y1+n)?r[1]:t.y1}},F=null,B={},N={},j=null,U=function(t,e){return e?B[h(t)]:N[h(t)]},V=function(t,e,r,n){if(e)return B[h(x)]||D;var i=N[v.level]||r;return function(t){return t.data.depth-b.data.depth=(n-=(y?m:m.r)-s)){var x=(r+n)/2;r=x,n=x}var b;f?i<(b=a-(y?m:m.b))&&b\"===tt?(l.x-=a,c.x-=a,u.x-=a,f.x-=a):\"/\"===tt?(u.x-=a,f.x-=a,o.x-=a/2,s.x-=a/2):\"\\\\\"===tt?(l.x-=a,c.x-=a,o.x-=a/2,s.x-=a/2):\"<\"===tt&&(o.x-=a,s.x-=a),$(l),$(f),$(o),$(c),$(u),$(s),\"M\"+K(l.x,l.y)+\"L\"+K(c.x,c.y)+\"L\"+K(s.x,s.y)+\"L\"+K(u.x,u.y)+\"L\"+K(f.x,f.y)+\"L\"+K(o.x,o.y)+\"Z\"},toMoveInsideSlice:et,makeUpdateSliceInterpolator:nt,makeUpdateTextInterpolator:it,handleSlicesExit:at,hasTransition:A,strTransform:ot}):w.remove()}},{\"../../lib\":503,\"../bar/constants\":650,\"../bar/plot\":659,\"../bar/uniform_text\":664,\"../sunburst/helpers\":1051,\"./constants\":1074,\"./draw_ancestors\":1077,\"@plotly/d3\":58,\"d3-interpolate\":116}],1086:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../components/color\"),a=t(\"../../lib\"),o=t(\"../sunburst/helpers\"),s=t(\"../bar/uniform_text\").resizeText;function l(t,e,r,n){var s,l,c=(n||{}).hovered,u=e.data.data,f=u.i,h=u.color,p=o.isHierarchyRoot(e),d=1;if(c)s=r._hovered.marker.line.color,l=r._hovered.marker.line.width;else if(p&&h===r.root.color)d=100,s=\"rgba(0,0,0,0)\",l=0;else if(s=a.castOption(r,f,\"marker.line.color\")||i.defaultLine,l=a.castOption(r,f,\"marker.line.width\")||0,!r._hasColorscale&&!e.onPathbar){var g=r.marker.depthfade;if(g){var m,v=i.combine(i.addOpacity(r._backgroundColor,.75),h);if(!0===g){var y=o.getMaxDepth(r);m=isFinite(y)?o.isLeaf(e)?0:r._maxVisibleLayers-(e.data.depth-r._entryDepth):e.data.height+1}else m=e.data.depth-r._entryDepth,r._atRootLevel||m++;if(m>0)for(var x=0;x0){var x,b,_,w,T,k=t.xa,A=t.ya;\"h\"===p.orientation?(T=e,x=\"y\",_=A,b=\"x\",w=k):(T=r,x=\"x\",_=k,b=\"y\",w=A);var M=h[t.index];if(T>=M.span[0]&&T<=M.span[1]){var S=n.extendFlat({},t),E=w.c2p(T,!0),L=o.getKdeValue(M,p,T),C=o.getPositionOnKdePath(M,p,E),P=_._offset,I=_._length;S[x+\"0\"]=C[0],S[x+\"1\"]=C[1],S[b+\"0\"]=S[b+\"1\"]=E,S[b+\"Label\"]=b+\": \"+i.hoverLabelText(w,T,p[b+\"hoverformat\"])+\", \"+h[0].t.labels.kde+\" \"+L.toFixed(3),S.spikeDistance=y[0].spikeDistance;var O=x+\"Spike\";S[O]=y[0][O],y[0].spikeDistance=void 0,y[0][O]=void 0,S.hovertemplate=!1,v.push(S),(u={stroke:t.color})[x+\"1\"]=n.constrain(P+C[0],P,P+I),u[x+\"2\"]=n.constrain(P+C[1],P,P+I),u[b+\"1\"]=u[b+\"2\"]=w._offset+E}}g&&(v=v.concat(y))}-1!==d.indexOf(\"points\")&&(c=a.hoverOnPoints(t,e,r));var z=f.selectAll(\".violinline-\"+p.uid).data(u?[0]:[]);return z.enter().append(\"line\").classed(\"violinline-\"+p.uid,!0).attr(\"stroke-width\",1.5),z.exit().remove(),z.attr(u),\"closest\"===s?c?[c]:v:c?(v.push(c),v):v}},{\"../../lib\":503,\"../../plots/cartesian/axes\":554,\"../box/hover\":678,\"./helpers\":1091}],1093:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\"),crossTraceDefaults:t(\"../box/defaults\").crossTraceDefaults,supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\"),crossTraceCalc:t(\"./cross_trace_calc\"),plot:t(\"./plot\"),style:t(\"./style\"),styleOnSelect:t(\"../scatter/style\").styleOnSelect,hoverPoints:t(\"./hover\"),selectPoints:t(\"../box/select\"),moduleType:\"trace\",name:\"violin\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"cartesian\",\"svg\",\"symbols\",\"oriented\",\"box-violin\",\"showLegend\",\"violinLayout\",\"zoomScale\"],meta:{}}},{\"../../plots/cartesian\":568,\"../box/defaults\":676,\"../box/select\":683,\"../scatter/style\":950,\"./attributes\":1087,\"./calc\":1088,\"./cross_trace_calc\":1089,\"./defaults\":1090,\"./hover\":1092,\"./layout_attributes\":1094,\"./layout_defaults\":1095,\"./plot\":1096,\"./style\":1097}],1094:[function(t,e,r){\"use strict\";var n=t(\"../box/layout_attributes\"),i=t(\"../../lib\").extendFlat;e.exports={violinmode:i({},n.boxmode,{}),violingap:i({},n.boxgap,{}),violingroupgap:i({},n.boxgroupgap,{})}},{\"../../lib\":503,\"../box/layout_attributes\":680}],1095:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\"),a=t(\"../box/layout_defaults\");e.exports=function(t,e,r){a._supply(t,e,r,(function(r,a){return n.coerce(t,e,i,r,a)}),\"violin\")}},{\"../../lib\":503,\"../box/layout_defaults\":681,\"./layout_attributes\":1094}],1096:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../components/drawing\"),o=t(\"../box/plot\"),s=t(\"../scatter/line_points\"),l=t(\"./helpers\");e.exports=function(t,e,r,c){var u=t._fullLayout,f=e.xaxis,h=e.yaxis;function p(t){var e=s(t,{xaxis:f,yaxis:h,connectGaps:!0,baseTolerance:.75,shape:\"spline\",simplify:!0,linearized:!0});return a.smoothopen(e[0],1)}i.makeTraceGroups(c,r,\"trace violins\").each((function(t){var r=n.select(this),a=t[0],s=a.t,c=a.trace;if(!0!==c.visible||s.empty)r.remove();else{var d=s.bPos,g=s.bdPos,m=e[s.valLetter+\"axis\"],v=e[s.posLetter+\"axis\"],y=\"both\"===c.side,x=y||\"positive\"===c.side,b=y||\"negative\"===c.side,_=r.selectAll(\"path.violin\").data(i.identity);_.enter().append(\"path\").style(\"vector-effect\",\"non-scaling-stroke\").attr(\"class\",\"violin\"),_.exit().remove(),_.each((function(t){var e,r,i,a,o,l,f,h,_=n.select(this),w=t.density,T=w.length,k=v.c2l(t.pos+d,!0),A=v.l2p(k);if(c.width)e=s.maxKDE/g;else{var M=u._violinScaleGroupStats[c.scalegroup];e=\"count\"===c.scalemode?M.maxKDE/g*(M.maxCount/t.pts.length):M.maxKDE/g}if(x){for(f=new Array(T),o=0;o\")),u.color=function(t,e){var r=t[e.dir].marker,n=r.color,a=r.line.color,o=r.line.width;if(i(n))return n;if(i(a)&&o)return a}(h,m),[u]}function k(t){return n(g,t,h[d+\"hoverformat\"])}}},{\"../../components/color\":366,\"../../constants/delta.js\":473,\"../../plots/cartesian/axes\":554,\"../bar/hover\":655}],1109:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\").supplyDefaults,crossTraceDefaults:t(\"./defaults\").crossTraceDefaults,supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\"),crossTraceCalc:t(\"./cross_trace_calc\"),plot:t(\"./plot\"),style:t(\"./style\").style,hoverPoints:t(\"./hover\"),eventData:t(\"./event_data\"),selectPoints:t(\"../bar/select\"),moduleType:\"trace\",name:\"waterfall\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"bar-like\",\"cartesian\",\"svg\",\"oriented\",\"showLegend\",\"zoomScale\"],meta:{}}},{\"../../plots/cartesian\":568,\"../bar/select\":660,\"./attributes\":1102,\"./calc\":1103,\"./cross_trace_calc\":1105,\"./defaults\":1106,\"./event_data\":1107,\"./hover\":1108,\"./layout_attributes\":1110,\"./layout_defaults\":1111,\"./plot\":1112,\"./style\":1113}],1110:[function(t,e,r){\"use strict\";e.exports={waterfallmode:{valType:\"enumerated\",values:[\"group\",\"overlay\"],dflt:\"group\",editType:\"calc\"},waterfallgap:{valType:\"number\",min:0,max:1,editType:\"calc\"},waterfallgroupgap:{valType:\"number\",min:0,max:1,dflt:0,editType:\"calc\"}}},{}],1111:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e,r){var a=!1;function o(r,a){return n.coerce(t,e,i,r,a)}for(var s=0;s0&&(m+=h?\"M\"+f[0]+\",\"+d[1]+\"V\"+d[0]:\"M\"+f[1]+\",\"+d[0]+\"H\"+f[0]),\"between\"!==p&&(r.isSum||s path\").each((function(t){if(!t.isBlank){var e=s[t.dir].marker;n.select(this).call(a.fill,e.color).call(a.stroke,e.line.color).call(i.dashLine,e.line.dash,e.line.width).style(\"opacity\",s.selectedpoints&&!t.selected?o:1)}})),c(r,s,t),r.selectAll(\".lines\").each((function(){var t=s.connector.line;i.lineGroupStyle(n.select(this).selectAll(\"path\"),t.width,t.color,t.dash)}))}))}}},{\"../../components/color\":366,\"../../components/drawing\":388,\"../../constants/interactions\":478,\"../bar/style\":662,\"../bar/uniform_text\":664,\"@plotly/d3\":58}],1114:[function(t,e,r){\"use strict\";var n=t(\"../plots/cartesian/axes\"),i=t(\"../lib\"),a=t(\"../plot_api/plot_schema\"),o=t(\"./helpers\").pointsAccessorFunction,s=t(\"../constants/numerical\").BADNUM;r.moduleType=\"transform\",r.name=\"aggregate\";var l=r.attributes={enabled:{valType:\"boolean\",dflt:!0,editType:\"calc\"},groups:{valType:\"string\",strict:!0,noBlank:!0,arrayOk:!0,dflt:\"x\",editType:\"calc\"},aggregations:{_isLinkedToArray:\"aggregation\",target:{valType:\"string\",editType:\"calc\"},func:{valType:\"enumerated\",values:[\"count\",\"sum\",\"avg\",\"median\",\"mode\",\"rms\",\"stddev\",\"min\",\"max\",\"first\",\"last\",\"change\",\"range\"],dflt:\"first\",editType:\"calc\"},funcmode:{valType:\"enumerated\",values:[\"sample\",\"population\"],dflt:\"sample\",editType:\"calc\"},enabled:{valType:\"boolean\",dflt:!0,editType:\"calc\"},editType:\"calc\"},editType:\"calc\"},c=l.aggregations;function u(t,e,r,a){if(a.enabled){for(var o=a.target,l=i.nestedProperty(e,o),c=l.get(),u=function(t,e){var r=t.func,n=e.d2c,a=e.c2d;switch(r){case\"count\":return f;case\"first\":return h;case\"last\":return p;case\"sum\":return function(t,e){for(var r=0,i=0;ii&&(i=u,o=c)}}return i?a(o):s};case\"rms\":return function(t,e){for(var r=0,i=0,o=0;o\":return function(t){return h(t)>s};case\">=\":return function(t){return h(t)>=s};case\"[]\":return function(t){var e=h(t);return e>=s[0]&&e<=s[1]};case\"()\":return function(t){var e=h(t);return e>s[0]&&e=s[0]&&es[0]&&e<=s[1]};case\"][\":return function(t){var e=h(t);return e<=s[0]||e>=s[1]};case\")(\":return function(t){var e=h(t);return es[1]};case\"](\":return function(t){var e=h(t);return e<=s[0]||e>s[1]};case\")[\":return function(t){var e=h(t);return e=s[1]};case\"{}\":return function(t){return-1!==s.indexOf(h(t))};case\"}{\":return function(t){return-1===s.indexOf(h(t))}}}(r,a.getDataToCoordFunc(t,e,s,i),h),x={},b={},_=0;d?(m=function(t){x[t.astr]=n.extendDeep([],t.get()),t.set(new Array(f))},v=function(t,e){var r=x[t.astr][e];t.get()[e]=r}):(m=function(t){x[t.astr]=n.extendDeep([],t.get()),t.set([])},v=function(t,e){var r=x[t.astr][e];t.get().push(r)}),k(m);for(var w=o(e.transforms,r),T=0;T1?\"%{group} (%{trace})\":\"%{group}\");var l=t.styles,c=o.styles=[];if(l)for(a=0;a0?o-4:o;for(r=0;r>16&255,l[u++]=e>>8&255,l[u++]=255&e;2===s&&(e=i[t.charCodeAt(r)]<<2|i[t.charCodeAt(r+1)]>>4,l[u++]=255&e);1===s&&(e=i[t.charCodeAt(r)]<<10|i[t.charCodeAt(r+1)]<<4|i[t.charCodeAt(r+2)]>>2,l[u++]=e>>8&255,l[u++]=255&e);return l},r.fromByteArray=function(t){for(var e,r=t.length,i=r%3,a=[],o=0,s=r-i;os?s:o+16383));1===i?(e=t[r-1],a.push(n[e>>2]+n[e<<4&63]+\"==\")):2===i&&(e=(t[r-2]<<8)+t[r-1],a.push(n[e>>10]+n[e>>4&63]+n[e<<2&63]+\"=\"));return a.join(\"\")};for(var n=[],i=[],a=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",s=0,l=o.length;s0)throw new Error(\"Invalid string. Length must be a multiple of 4\");var r=t.indexOf(\"=\");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function u(t,e,r){for(var i,a,o=[],s=e;s>18&63]+n[a>>12&63]+n[a>>6&63]+n[63&a]);return o.join(\"\")}i[\"-\".charCodeAt(0)]=62,i[\"_\".charCodeAt(0)]=63},{}],2:[function(t,e,r){},{}],3:[function(t,e,r){(function(e){(function(){\n", + "var n,i=t(\"./lib/build-log\"),a=t(\"./lib/epsilon\"),o=t(\"./lib/intersecter\"),s=t(\"./lib/segment-chainer\"),l=t(\"./lib/segment-selector\"),c=t(\"./lib/geojson\"),u=!1,f=a();function h(t,e,r){var i=n.segments(t),a=n.segments(e),o=r(n.combine(i,a));return n.polygon(o)}n={buildLog:function(t){return!0===t?u=i():!1===t&&(u=!1),!1!==u&&u.list},epsilon:function(t){return f.epsilon(t)},segments:function(t){var e=o(!0,f,u);return t.regions.forEach(e.addRegion),{segments:e.calculate(t.inverted),inverted:t.inverted}},combine:function(t,e){return{combined:o(!1,f,u).calculate(t.segments,t.inverted,e.segments,e.inverted),inverted1:t.inverted,inverted2:e.inverted}},selectUnion:function(t){return{segments:l.union(t.combined,u),inverted:t.inverted1||t.inverted2}},selectIntersect:function(t){return{segments:l.intersect(t.combined,u),inverted:t.inverted1&&t.inverted2}},selectDifference:function(t){return{segments:l.difference(t.combined,u),inverted:t.inverted1&&!t.inverted2}},selectDifferenceRev:function(t){return{segments:l.differenceRev(t.combined,u),inverted:!t.inverted1&&t.inverted2}},selectXor:function(t){return{segments:l.xor(t.combined,u),inverted:t.inverted1!==t.inverted2}},polygon:function(t){return{regions:s(t.segments,f,u),inverted:t.inverted}},polygonFromGeoJSON:function(t){return c.toPolygon(n,t)},polygonToGeoJSON:function(t){return c.fromPolygon(n,f,t)},union:function(t,e){return h(t,e,n.selectUnion)},intersect:function(t,e){return h(t,e,n.selectIntersect)},difference:function(t,e){return h(t,e,n.selectDifference)},differenceRev:function(t,e){return h(t,e,n.selectDifferenceRev)},xor:function(t,e){return h(t,e,n.selectXor)}},\"object\"==typeof window&&(window.PolyBool=n),e.exports=n},{\"./lib/build-log\":255,\"./lib/epsilon\":256,\"./lib/geojson\":257,\"./lib/intersecter\":258,\"./lib/segment-chainer\":260,\"./lib/segment-selector\":261}],255:[function(t,e,r){e.exports=function(){var t,e=0,r=!1;function n(e,r){return t.list.push({type:e,data:r?JSON.parse(JSON.stringify(r)):void 0}),t}return t={list:[],segmentId:function(){return e++},checkIntersection:function(t,e){return n(\"check\",{seg1:t,seg2:e})},segmentChop:function(t,e){return n(\"div_seg\",{seg:t,pt:e}),n(\"chop\",{seg:t,pt:e})},statusRemove:function(t){return n(\"pop_seg\",{seg:t})},segmentUpdate:function(t){return n(\"seg_update\",{seg:t})},segmentNew:function(t,e){return n(\"new_seg\",{seg:t,primary:e})},segmentRemove:function(t){return n(\"rem_seg\",{seg:t})},tempStatus:function(t,e,r){return n(\"temp_status\",{seg:t,above:e,below:r})},rewind:function(t){return n(\"rewind\",{seg:t})},status:function(t,e,r){return n(\"status\",{seg:t,above:e,below:r})},vert:function(e){return e===r?t:(r=e,n(\"vert\",{x:e}))},log:function(t){return\"string\"!=typeof t&&(t=JSON.stringify(t,!1,\" \")),n(\"log\",{txt:t})},reset:function(){return n(\"reset\")},selected:function(t){return n(\"selected\",{segs:t})},chainStart:function(t){return n(\"chain_start\",{seg:t})},chainRemoveHead:function(t,e){return n(\"chain_rem_head\",{index:t,pt:e})},chainRemoveTail:function(t,e){return n(\"chain_rem_tail\",{index:t,pt:e})},chainNew:function(t,e){return n(\"chain_new\",{pt1:t,pt2:e})},chainMatch:function(t){return n(\"chain_match\",{index:t})},chainClose:function(t){return n(\"chain_close\",{index:t})},chainAddHead:function(t,e){return n(\"chain_add_head\",{index:t,pt:e})},chainAddTail:function(t,e){return n(\"chain_add_tail\",{index:t,pt:e})},chainConnect:function(t,e){return n(\"chain_con\",{index1:t,index2:e})},chainReverse:function(t){return n(\"chain_rev\",{index:t})},chainJoin:function(t,e){return n(\"chain_join\",{index1:t,index2:e})},done:function(){return n(\"done\")}}}},{}],256:[function(t,e,r){e.exports=function(t){\"number\"!=typeof t&&(t=1e-10);var e={epsilon:function(e){return\"number\"==typeof e&&(t=e),t},pointAboveOrOnLine:function(e,r,n){var i=r[0],a=r[1],o=n[0],s=n[1],l=e[0];return(o-i)*(e[1]-a)-(s-a)*(l-i)>=-t},pointBetween:function(e,r,n){var i=e[1]-r[1],a=n[0]-r[0],o=e[0]-r[0],s=n[1]-r[1],l=o*a+i*s;return!(l-t)},pointsSameX:function(e,r){return Math.abs(e[0]-r[0])t!=o-i>t&&(a-c)*(i-u)/(o-u)+c-n>t&&(s=!s),a=c,o=u}return s}};return e}},{}],257:[function(t,e,r){var n={toPolygon:function(t,e){function r(e){if(e.length<=0)return t.segments({inverted:!1,regions:[]});function r(e){var r=e.slice(0,e.length-1);return t.segments({inverted:!1,regions:[r]})}for(var n=r(e[0]),i=1;i0}))}function u(t,n){var i=t.seg,a=n.seg,o=i.start,s=i.end,c=a.start,u=a.end;r&&r.checkIntersection(i,a);var f=e.linesIntersect(o,s,c,u);if(!1===f){if(!e.pointsCollinear(o,s,c))return!1;if(e.pointsSame(o,u)||e.pointsSame(s,c))return!1;var h=e.pointsSame(o,c),p=e.pointsSame(s,u);if(h&&p)return n;var d=!h&&e.pointBetween(o,c,u),g=!p&&e.pointBetween(s,c,u);if(h)return g?l(n,s):l(t,u),n;d&&(p||(g?l(n,s):l(t,u)),l(n,o))}else 0===f.alongA&&(-1===f.alongB?l(t,c):0===f.alongB?l(t,f.pt):1===f.alongB&&l(t,u)),0===f.alongB&&(-1===f.alongA?l(n,o):0===f.alongA?l(n,f.pt):1===f.alongA&&l(n,s));return!1}for(var f=[];!a.isEmpty();){var h=a.getHead();if(r&&r.vert(h.pt[0]),h.isStart){r&&r.segmentNew(h.seg,h.primary);var p=c(h),d=p.before?p.before.ev:null,g=p.after?p.after.ev:null;function m(){if(d){var t=u(h,d);if(t)return t}return!!g&&u(h,g)}r&&r.tempStatus(h.seg,!!d&&d.seg,!!g&&g.seg);var v,y=m();if(y){var x;if(t)(x=null===h.seg.myFill.below||h.seg.myFill.above!==h.seg.myFill.below)&&(y.seg.myFill.above=!y.seg.myFill.above);else y.seg.otherFill=h.seg.myFill;r&&r.segmentUpdate(y.seg),h.other.remove(),h.remove()}if(a.getHead()!==h){r&&r.rewind(h.seg);continue}if(t)x=null===h.seg.myFill.below||h.seg.myFill.above!==h.seg.myFill.below,h.seg.myFill.below=g?g.seg.myFill.above:i,h.seg.myFill.above=x?!h.seg.myFill.below:h.seg.myFill.below;else if(null===h.seg.otherFill)v=g?h.primary===g.primary?g.seg.otherFill.above:g.seg.myFill.above:h.primary?o:i,h.seg.otherFill={above:v,below:v};r&&r.status(h.seg,!!d&&d.seg,!!g&&g.seg),h.other.status=p.insert(n.node({ev:h}))}else{var b=h.status;if(null===b)throw new Error(\"PolyBool: Zero-length segment detected; your epsilon is probably too small or too large\");if(s.exists(b.prev)&&s.exists(b.next)&&u(b.prev.ev,b.next.ev),r&&r.statusRemove(b.ev.seg),b.remove(),!h.primary){var _=h.seg.myFill;h.seg.myFill=h.seg.otherFill,h.seg.otherFill=_}f.push(h.seg)}a.getHead().remove()}return r&&r.done(),f}return t?{addRegion:function(t){for(var n,i,a,o=t[t.length-1],l=0;l0&&!this.aborted;){var r=this.ifds_to_read.shift();r.offset&&this.scan_ifd(r.id,r.offset,t)}},a.prototype.read_uint16=function(t){var e=this.input;if(t+2>e.length)throw n(\"unexpected EOF\",\"EBADDATA\");return this.big_endian?256*e[t]+e[t+1]:e[t]+256*e[t+1]},a.prototype.read_uint32=function(t){var e=this.input;if(t+4>e.length)throw n(\"unexpected EOF\",\"EBADDATA\");return this.big_endian?16777216*e[t]+65536*e[t+1]+256*e[t+2]+e[t+3]:e[t]+256*e[t+1]+65536*e[t+2]+16777216*e[t+3]},a.prototype.is_subifd_link=function(t,e){return 0===t&&34665===e||0===t&&34853===e||34665===t&&40965===e},a.prototype.exif_format_length=function(t){switch(t){case 1:case 2:case 6:case 7:return 1;case 3:case 8:return 2;case 4:case 9:case 11:return 4;case 5:case 10:case 12:return 8;default:return 0}},a.prototype.exif_format_read=function(t,e){var r;switch(t){case 1:case 2:return r=this.input[e];case 6:return(r=this.input[e])|33554430*(128&r);case 3:return r=this.read_uint16(e);case 8:return(r=this.read_uint16(e))|131070*(32768&r);case 4:return r=this.read_uint32(e);case 9:return 0|(r=this.read_uint32(e));case 5:case 10:case 11:case 12:case 7:default:return null}},a.prototype.scan_ifd=function(t,e,r){var a=this.read_uint16(e);e+=2;for(var o=0;othis.input.length)throw n(\"unexpected EOF\",\"EBADDATA\");for(var d=[],g=h,m=0;m0&&(this.ifds_to_read.push({id:s,offset:d[0]}),p=!0),!1===r({is_big_endian:this.big_endian,ifd:t,tag:s,format:l,count:c,entry_offset:e+this.start,data_length:f,data_offset:h+this.start,value:d,is_subifd_link:p}))return void(this.aborted=!0);e+=12}0===t&&this.ifds_to_read.push({id:1,offset:this.read_uint32(e)})},e.exports.ExifParser=a,e.exports.get_orientation=function(t){var e=0;try{return new a(t,0,t.length).each((function(t){if(0===t.ifd&&274===t.tag&&Array.isArray(t.value))return e=t.value[0],!1})),e}catch(t){return-1}}},{}],264:[function(t,e,r){\"use strict\";var n=t(\"./common\").readUInt16BE,i=t(\"./common\").readUInt32BE;function a(t,e){if(t.length<4+e)return null;var r=i(t,e);return t.length>4&15,i=15&t[4],a=t[5]>>4&15,o=n(t,6),l=8,c=0;ce.width||t.width===e.width&&t.height>e.height?t:e})),i=r.reduce((function(t,e){return t.height>e.height||t.height===e.height&&t.width>e.width?t:e})),n.width>i.height||n.width===i.height&&n.height>i.width?n:i),s=1;e.transforms.forEach((function(t){var e={1:6,2:5,3:8,4:7,5:4,6:3,7:2,8:1},r={1:4,2:3,3:2,4:1,5:6,6:5,7:8,8:7};if(\"imir\"===t.type&&(s=0===t.value?r[s]:e[s=e[s=r[s]]]),\"irot\"===t.type)for(var n=0;n1&&(h.variants=f.variants),f.orientation&&(h.orientation=f.orientation),f.exif_location&&f.exif_location.offset+f.exif_location.length<=t.length){var p=a(t,f.exif_location.offset),d=t.slice(f.exif_location.offset+p+4,f.exif_location.offset+f.exif_location.length),g=s.get_orientation(d);g>0&&(h.orientation=g)}return h}}}}}}},{\"../common\":262,\"../exif_utils\":263,\"../miaf_utils\":264}],266:[function(t,e,r){\"use strict\";var n=t(\"../common\").str2arr,i=t(\"../common\").sliceEq,a=t(\"../common\").readUInt16LE,o=n(\"BM\");e.exports=function(t){if(!(t.length<26)&&i(t,0,o))return{width:a(t,18),height:a(t,22),type:\"bmp\",mime:\"image/bmp\",wUnits:\"px\",hUnits:\"px\"}}},{\"../common\":262}],267:[function(t,e,r){\"use strict\";var n=t(\"../common\").str2arr,i=t(\"../common\").sliceEq,a=t(\"../common\").readUInt16LE,o=n(\"GIF87a\"),s=n(\"GIF89a\");e.exports=function(t){if(!(t.length<10)&&(i(t,0,o)||i(t,0,s)))return{width:a(t,6),height:a(t,8),type:\"gif\",mime:\"image/gif\",wUnits:\"px\",hUnits:\"px\"}}},{\"../common\":262}],268:[function(t,e,r){\"use strict\";var n=t(\"../common\").readUInt16LE;e.exports=function(t){var e=n(t,0),r=n(t,2),i=n(t,4);if(0===e&&1===r&&i){for(var a=[],o={width:0,height:0},s=0;so.width||c>o.height)&&(o=u)}return{width:o.width,height:o.height,variants:a,type:\"ico\",mime:\"image/x-icon\",wUnits:\"px\",hUnits:\"px\"}}}},{\"../common\":262}],269:[function(t,e,r){\"use strict\";var n=t(\"../common\").readUInt16BE,i=t(\"../common\").str2arr,a=t(\"../common\").sliceEq,o=t(\"../exif_utils\"),s=i(\"Exif\\0\\0\");e.exports=function(t){if(!(t.length<2)&&255===t[0]&&216===t[1]&&255===t[2])for(var e=2;;){for(;;){if(t.length-e<2)return;if(255===t[e++])break}for(var r,i,l=t[e++];255===l;)l=t[e++];if(208<=l&&l<=217||1===l)r=0;else{if(!(192<=l&&l<=254))return;if(t.length-e<2)return;r=n(t,e)-2,e+=2}if(217===l||218===l)return;if(225===l&&r>=10&&a(t,e,s)&&(i=o.get_orientation(t.slice(e+6,e+r))),r>=5&&192<=l&&l<=207&&196!==l&&200!==l&&204!==l){if(t.length-e0&&(c.orientation=i),c}e+=r}}},{\"../common\":262,\"../exif_utils\":263}],270:[function(t,e,r){\"use strict\";var n=t(\"../common\").str2arr,i=t(\"../common\").sliceEq,a=t(\"../common\").readUInt32BE,o=n(\"\\x89PNG\\r\\n\\x1a\\n\"),s=n(\"IHDR\");e.exports=function(t){if(!(t.length<24)&&i(t,0,o)&&i(t,12,s))return{width:a(t,16),height:a(t,20),type:\"png\",mime:\"image/png\",wUnits:\"px\",hUnits:\"px\"}}},{\"../common\":262}],271:[function(t,e,r){\"use strict\";var n=t(\"../common\").str2arr,i=t(\"../common\").sliceEq,a=t(\"../common\").readUInt32BE,o=n(\"8BPS\\0\\x01\");e.exports=function(t){if(!(t.length<22)&&i(t,0,o))return{width:a(t,18),height:a(t,14),type:\"psd\",mime:\"image/vnd.adobe.photoshop\",wUnits:\"px\",hUnits:\"px\"}}},{\"../common\":262}],272:[function(t,e,r){\"use strict\";function n(t){return\"number\"==typeof t&&isFinite(t)&&t>0}var i=/<[-_.:a-zA-Z0-9][^>]*>/,a=/^<([-_.:a-zA-Z0-9]+:)?svg\\s/,o=/[^-]\\bwidth=\"([^%]+?)\"|[^-]\\bwidth='([^%]+?)'/,s=/\\bheight=\"([^%]+?)\"|\\bheight='([^%]+?)'/,l=/\\bview[bB]ox=\"(.+?)\"|\\bview[bB]ox='(.+?)'/,c=/in$|mm$|cm$|pt$|pc$|px$|em$|ex$/;function u(t){return c.test(t)?t.match(c)[0]:\"px\"}e.exports=function(t){if(function(t){var e,r=0,n=t.length;for(239===t[0]&&187===t[1]&&191===t[2]&&(r=3);r>14&16383),type:\"webp\",mime:\"image/webp\",wUnits:\"px\",hUnits:\"px\"}}}function h(t,e){return{width:1+(t[e+6]<<16|t[e+5]<<8|t[e+4]),height:1+(t[e+9]<t.length)){for(;e+8=10?r=r||u(t,e+8):\"VP8L\"===p&&d>=9?r=r||f(t,e+8):\"VP8X\"===p&&d>=10?r=r||h(t,e+8):\"EXIF\"===p&&(n=s.get_orientation(t.slice(e+8,e+8+d)),e=1/0),e+=8+d}else e++;if(r)return n>0&&(r.orientation=n),r}}}},{\"../common\":262,\"../exif_utils\":263}],275:[function(t,e,r){\"use strict\";e.exports={avif:t(\"./parse_sync/avif\"),bmp:t(\"./parse_sync/bmp\"),gif:t(\"./parse_sync/gif\"),ico:t(\"./parse_sync/ico\"),jpeg:t(\"./parse_sync/jpeg\"),png:t(\"./parse_sync/png\"),psd:t(\"./parse_sync/psd\"),svg:t(\"./parse_sync/svg\"),tiff:t(\"./parse_sync/tiff\"),webp:t(\"./parse_sync/webp\")}},{\"./parse_sync/avif\":265,\"./parse_sync/bmp\":266,\"./parse_sync/gif\":267,\"./parse_sync/ico\":268,\"./parse_sync/jpeg\":269,\"./parse_sync/png\":270,\"./parse_sync/psd\":271,\"./parse_sync/svg\":272,\"./parse_sync/tiff\":273,\"./parse_sync/webp\":274}],276:[function(t,e,r){\"use strict\";var n=t(\"./lib/parsers_sync\");e.exports=function(t){return function(t){for(var e=Object.keys(n),r=0;r1)for(var r=1;r1&&(t.scaleRatio=[t.scale[0]*t.viewport.width,t.scale[1]*t.viewport.height],r(t),t.after&&t.after(t))}function T(t){if(t){null!=t.length?\"number\"==typeof t[0]&&(t=[{positions:t}]):Array.isArray(t)||(t=[t]);var e=0,r=0;if(b.groups=x=t.map((function(t,c){var u=x[c];return t?(\"function\"==typeof t?t={after:t}:\"number\"==typeof t[0]&&(t={positions:t}),t=o(t,{color:\"color colors fill\",capSize:\"capSize cap capsize cap-size\",lineWidth:\"lineWidth line-width width line thickness\",opacity:\"opacity alpha\",range:\"range dataBox\",viewport:\"viewport viewBox\",errors:\"errors error\",positions:\"positions position data points\"}),u||(x[c]=u={id:c,scale:null,translate:null,scaleFract:null,translateFract:null,draw:!0},t=s({},y,t)),a(u,t,[{lineWidth:function(t){return.5*+t},capSize:function(t){return.5*+t},opacity:parseFloat,errors:function(t){return t=l(t),r+=t.length,t},positions:function(t,r){return t=l(t,\"float64\"),r.count=Math.floor(t.length/2),r.bounds=n(t,2),r.offset=e,e+=r.count,t}},{color:function(t,e){var r=e.count;if(t||(t=\"transparent\"),!Array.isArray(t)||\"number\"==typeof t[0]){var n=t;t=Array(r);for(var a=0;a 0. && baClipping < length(normalWidth * endBotJoin)) {\\n\\t\\t//handle miter clipping\\n\\t\\tbTopCoord -= normalWidth * endTopJoin;\\n\\t\\tbTopCoord += normalize(endTopJoin * normalWidth) * baClipping;\\n\\t}\\n\\n\\tif (nextReverse) {\\n\\t\\t//make join rectangular\\n\\t\\tvec2 miterShift = normalWidth * endJoinDirection * miterLimit * .5;\\n\\t\\tfloat normalAdjust = 1. - min(miterLimit / endMiterRatio, 1.);\\n\\t\\tbBotCoord = bCoord + miterShift - normalAdjust * normalWidth * currNormal * .5;\\n\\t\\tbTopCoord = bCoord + miterShift + normalAdjust * normalWidth * currNormal * .5;\\n\\t}\\n\\telse if (!prevReverse && abClipping > 0. && abClipping < length(normalWidth * startBotJoin)) {\\n\\t\\t//handle miter clipping\\n\\t\\taBotCoord -= normalWidth * startBotJoin;\\n\\t\\taBotCoord += normalize(startBotJoin * normalWidth) * abClipping;\\n\\t}\\n\\n\\tvec2 aTopPosition = (aTopCoord) * adjustedScale + translate;\\n\\tvec2 aBotPosition = (aBotCoord) * adjustedScale + translate;\\n\\n\\tvec2 bTopPosition = (bTopCoord) * adjustedScale + translate;\\n\\tvec2 bBotPosition = (bBotCoord) * adjustedScale + translate;\\n\\n\\t//position is normalized 0..1 coord on the screen\\n\\tvec2 position = (aTopPosition * lineTop + aBotPosition * lineBot) * lineStart + (bTopPosition * lineTop + bBotPosition * lineBot) * lineEnd;\\n\\n\\tstartCoord = aCoord * scaleRatio + translate * viewport.zw + viewport.xy;\\n\\tendCoord = bCoord * scaleRatio + translate * viewport.zw + viewport.xy;\\n\\n\\tgl_Position = vec4(position * 2.0 - 1.0, depth, 1);\\n\\n\\tenableStartMiter = step(dot(currTangent, prevTangent), .5);\\n\\tenableEndMiter = step(dot(currTangent, nextTangent), .5);\\n\\n\\t//bevel miter cutoffs\\n\\tif (miterMode == 1.) {\\n\\t\\tif (enableStartMiter == 1.) {\\n\\t\\t\\tvec2 startMiterWidth = vec2(startJoinDirection) * thickness * miterLimit * .5;\\n\\t\\t\\tstartCutoff = vec4(aCoord, aCoord);\\n\\t\\t\\tstartCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio;\\n\\t\\t\\tstartCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\\n\\t\\t\\tstartCutoff += viewport.xyxy;\\n\\t\\t\\tstartCutoff += startMiterWidth.xyxy;\\n\\t\\t}\\n\\n\\t\\tif (enableEndMiter == 1.) {\\n\\t\\t\\tvec2 endMiterWidth = vec2(endJoinDirection) * thickness * miterLimit * .5;\\n\\t\\t\\tendCutoff = vec4(bCoord, bCoord);\\n\\t\\t\\tendCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x) / scaleRatio;\\n\\t\\t\\tendCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\\n\\t\\t\\tendCutoff += viewport.xyxy;\\n\\t\\t\\tendCutoff += endMiterWidth.xyxy;\\n\\t\\t}\\n\\t}\\n\\n\\t//round miter cutoffs\\n\\telse if (miterMode == 2.) {\\n\\t\\tif (enableStartMiter == 1.) {\\n\\t\\t\\tvec2 startMiterWidth = vec2(startJoinDirection) * thickness * abs(dot(startJoinDirection, currNormal)) * .5;\\n\\t\\t\\tstartCutoff = vec4(aCoord, aCoord);\\n\\t\\t\\tstartCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio;\\n\\t\\t\\tstartCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\\n\\t\\t\\tstartCutoff += viewport.xyxy;\\n\\t\\t\\tstartCutoff += startMiterWidth.xyxy;\\n\\t\\t}\\n\\n\\t\\tif (enableEndMiter == 1.) {\\n\\t\\t\\tvec2 endMiterWidth = vec2(endJoinDirection) * thickness * abs(dot(endJoinDirection, currNormal)) * .5;\\n\\t\\t\\tendCutoff = vec4(bCoord, bCoord);\\n\\t\\t\\tendCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x) / scaleRatio;\\n\\t\\t\\tendCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\\n\\t\\t\\tendCutoff += viewport.xyxy;\\n\\t\\t\\tendCutoff += endMiterWidth.xyxy;\\n\\t\\t}\\n\\t}\\n}\\n\"]),frag:o([\"precision highp float;\\n#define GLSLIFY 1\\n\\nuniform float dashLength, pixelRatio, thickness, opacity, id, miterMode;\\nuniform sampler2D dashTexture;\\n\\nvarying vec4 fragColor;\\nvarying vec2 tangent;\\nvarying vec4 startCutoff, endCutoff;\\nvarying vec2 startCoord, endCoord;\\nvarying float enableStartMiter, enableEndMiter;\\n\\nfloat distToLine(vec2 p, vec2 a, vec2 b) {\\n\\tvec2 diff = b - a;\\n\\tvec2 perp = normalize(vec2(-diff.y, diff.x));\\n\\treturn dot(p - a, perp);\\n}\\n\\nvoid main() {\\n\\tfloat alpha = 1., distToStart, distToEnd;\\n\\tfloat cutoff = thickness * .5;\\n\\n\\t//bevel miter\\n\\tif (miterMode == 1.) {\\n\\t\\tif (enableStartMiter == 1.) {\\n\\t\\t\\tdistToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw);\\n\\t\\t\\tif (distToStart < -1.) {\\n\\t\\t\\t\\tdiscard;\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\t\\t\\talpha *= min(max(distToStart + 1., 0.), 1.);\\n\\t\\t}\\n\\n\\t\\tif (enableEndMiter == 1.) {\\n\\t\\t\\tdistToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw);\\n\\t\\t\\tif (distToEnd < -1.) {\\n\\t\\t\\t\\tdiscard;\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\t\\t\\talpha *= min(max(distToEnd + 1., 0.), 1.);\\n\\t\\t}\\n\\t}\\n\\n\\t// round miter\\n\\telse if (miterMode == 2.) {\\n\\t\\tif (enableStartMiter == 1.) {\\n\\t\\t\\tdistToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw);\\n\\t\\t\\tif (distToStart < 0.) {\\n\\t\\t\\t\\tfloat radius = length(gl_FragCoord.xy - startCoord);\\n\\n\\t\\t\\t\\tif(radius > cutoff + .5) {\\n\\t\\t\\t\\t\\tdiscard;\\n\\t\\t\\t\\t\\treturn;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\talpha -= smoothstep(cutoff - .5, cutoff + .5, radius);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tif (enableEndMiter == 1.) {\\n\\t\\t\\tdistToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw);\\n\\t\\t\\tif (distToEnd < 0.) {\\n\\t\\t\\t\\tfloat radius = length(gl_FragCoord.xy - endCoord);\\n\\n\\t\\t\\t\\tif(radius > cutoff + .5) {\\n\\t\\t\\t\\t\\tdiscard;\\n\\t\\t\\t\\t\\treturn;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\talpha -= smoothstep(cutoff - .5, cutoff + .5, radius);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\tfloat t = fract(dot(tangent, gl_FragCoord.xy) / dashLength) * .5 + .25;\\n\\tfloat dash = texture2D(dashTexture, vec2(t, .5)).r;\\n\\n\\tgl_FragColor = fragColor;\\n\\tgl_FragColor.a *= alpha * opacity * dash;\\n}\\n\"]),attributes:{lineEnd:{buffer:r,divisor:0,stride:8,offset:0},lineTop:{buffer:r,divisor:0,stride:8,offset:4},aColor:{buffer:t.prop(\"colorBuffer\"),stride:4,offset:0,divisor:1},bColor:{buffer:t.prop(\"colorBuffer\"),stride:4,offset:4,divisor:1},prevCoord:{buffer:t.prop(\"positionBuffer\"),stride:8,offset:0,divisor:1},aCoord:{buffer:t.prop(\"positionBuffer\"),stride:8,offset:8,divisor:1},bCoord:{buffer:t.prop(\"positionBuffer\"),stride:8,offset:16,divisor:1},nextCoord:{buffer:t.prop(\"positionBuffer\"),stride:8,offset:24,divisor:1}}},n))}catch(t){e=i}return{fill:t({primitive:\"triangle\",elements:function(t,e){return e.triangles},offset:0,vert:o([\"precision highp float;\\n#define GLSLIFY 1\\n\\nattribute vec2 position, positionFract;\\n\\nuniform vec4 color;\\nuniform vec2 scale, scaleFract, translate, translateFract;\\nuniform float pixelRatio, id;\\nuniform vec4 viewport;\\nuniform float opacity;\\n\\nvarying vec4 fragColor;\\n\\nconst float MAX_LINES = 256.;\\n\\nvoid main() {\\n\\tfloat depth = (MAX_LINES - 4. - id) / (MAX_LINES);\\n\\n\\tvec2 position = position * scale + translate\\n + positionFract * scale + translateFract\\n + position * scaleFract\\n + positionFract * scaleFract;\\n\\n\\tgl_Position = vec4(position * 2.0 - 1.0, depth, 1);\\n\\n\\tfragColor = color / 255.;\\n\\tfragColor.a *= opacity;\\n}\\n\"]),frag:o([\"precision highp float;\\n#define GLSLIFY 1\\n\\nvarying vec4 fragColor;\\n\\nvoid main() {\\n\\tgl_FragColor = fragColor;\\n}\\n\"]),uniforms:{scale:t.prop(\"scale\"),color:t.prop(\"fill\"),scaleFract:t.prop(\"scaleFract\"),translateFract:t.prop(\"translateFract\"),translate:t.prop(\"translate\"),opacity:t.prop(\"opacity\"),pixelRatio:t.context(\"pixelRatio\"),id:t.prop(\"id\"),viewport:function(t,e){return[e.viewport.x,e.viewport.y,t.viewportWidth,t.viewportHeight]}},attributes:{position:{buffer:t.prop(\"positionBuffer\"),stride:8,offset:8},positionFract:{buffer:t.prop(\"positionFractBuffer\"),stride:8,offset:8}},blend:n.blend,depth:{enable:!1},scissor:n.scissor,stencil:n.stencil,viewport:n.viewport}),rect:i,miter:e}},v.defaults={dashes:null,join:\"miter\",miterLimit:1,thickness:10,cap:\"square\",color:\"black\",opacity:1,overlay:!1,viewport:null,range:null,close:!1,fill:null},v.prototype.render=function(){for(var t,e=[],r=arguments.length;r--;)e[r]=arguments[r];e.length&&(t=this).update.apply(t,e),this.draw()},v.prototype.draw=function(){for(var t=this,e=[],r=arguments.length;r--;)e[r]=arguments[r];return(e.length?e:this.passes).forEach((function(e,r){var n;if(e&&Array.isArray(e))return(n=t).draw.apply(n,e);\"number\"==typeof e&&(e=t.passes[e]),e&&e.count>1&&e.opacity&&(t.regl._refresh(),e.fill&&e.triangles&&e.triangles.length>2&&t.shaders.fill(e),e.thickness&&(e.scale[0]*e.viewport.width>v.precisionThreshold||e.scale[1]*e.viewport.height>v.precisionThreshold||\"rect\"===e.join||!e.join&&(e.thickness<=2||e.count>=v.maxPoints)?t.shaders.rect(e):t.shaders.miter(e)))})),this},v.prototype.update=function(t){var e=this;if(t){null!=t.length?\"number\"==typeof t[0]&&(t=[{positions:t}]):Array.isArray(t)||(t=[t]);var r=this.regl,o=this.gl;if(t.forEach((function(t,f){var d=e.passes[f];if(void 0!==t)if(null!==t){if(\"number\"==typeof t[0]&&(t={positions:t}),t=s(t,{positions:\"positions points data coords\",thickness:\"thickness lineWidth lineWidths line-width linewidth width stroke-width strokewidth strokeWidth\",join:\"lineJoin linejoin join type mode\",miterLimit:\"miterlimit miterLimit\",dashes:\"dash dashes dasharray dash-array dashArray\",color:\"color colour stroke colors colours stroke-color strokeColor\",fill:\"fill fill-color fillColor\",opacity:\"alpha opacity\",overlay:\"overlay crease overlap intersect\",close:\"closed close closed-path closePath\",range:\"range dataBox\",viewport:\"viewport viewBox\",hole:\"holes hole hollow\",splitNull:\"splitNull\"}),d||(e.passes[f]=d={id:f,scale:null,scaleFract:null,translate:null,translateFract:null,count:0,hole:[],depth:0,dashLength:1,dashTexture:r.texture({channels:1,data:new Uint8Array([255]),width:1,height:1,mag:\"linear\",min:\"linear\"}),colorBuffer:r.buffer({usage:\"dynamic\",type:\"uint8\",data:new Uint8Array}),positionBuffer:r.buffer({usage:\"dynamic\",type:\"float\",data:new Uint8Array}),positionFractBuffer:r.buffer({usage:\"dynamic\",type:\"float\",data:new Uint8Array})},t=a({},v.defaults,t)),null!=t.thickness&&(d.thickness=parseFloat(t.thickness)),null!=t.opacity&&(d.opacity=parseFloat(t.opacity)),null!=t.miterLimit&&(d.miterLimit=parseFloat(t.miterLimit)),null!=t.overlay&&(d.overlay=!!t.overlay,f=D}));(I=I.slice(0,R)).push(D)}for(var F=function(t){var e=k.slice(2*z,2*I[t]).concat(D?k.slice(2*D):[]),r=(d.hole||[]).map((function(e){return e-D+(I[t]-z)})),n=c(e,r);n=n.map((function(e){return e+z+(e+zt.length)&&(e=t.length);for(var r=0,n=new Array(e);r 1.0 + delta) {\\n\\t\\tdiscard;\\n\\t}\\n\\n\\talpha -= smoothstep(1.0 - delta, 1.0 + delta, radius);\\n\\n\\tfloat borderRadius = fragBorderRadius;\\n\\tfloat ratio = smoothstep(borderRadius - delta, borderRadius + delta, radius);\\n\\tvec4 color = mix(fragColor, fragBorderColor, ratio);\\n\\tcolor.a *= alpha * opacity;\\n\\tgl_FragColor = color;\\n}\\n\"]),l.vert=h([\"precision highp float;\\n#define GLSLIFY 1\\n\\nattribute float x, y, xFract, yFract;\\nattribute float size, borderSize;\\nattribute vec4 colorId, borderColorId;\\nattribute float isActive;\\n\\nuniform bool constPointSize;\\nuniform float pixelRatio;\\nuniform vec2 paletteSize, scale, scaleFract, translate, translateFract;\\nuniform sampler2D paletteTexture;\\n\\nconst float maxSize = 100.;\\n\\nvarying vec4 fragColor, fragBorderColor;\\nvarying float fragBorderRadius, fragWidth;\\n\\nfloat pointSizeScale = (constPointSize) ? 2. : pixelRatio;\\n\\nbool isDirect = (paletteSize.x < 1.);\\n\\nvec4 getColor(vec4 id) {\\n return isDirect ? id / 255. : texture2D(paletteTexture,\\n vec2(\\n (id.x + .5) / paletteSize.x,\\n (id.y + .5) / paletteSize.y\\n )\\n );\\n}\\n\\nvoid main() {\\n // ignore inactive points\\n if (isActive == 0.) return;\\n\\n vec2 position = vec2(x, y);\\n vec2 positionFract = vec2(xFract, yFract);\\n\\n vec4 color = getColor(colorId);\\n vec4 borderColor = getColor(borderColorId);\\n\\n float size = size * maxSize / 255.;\\n float borderSize = borderSize * maxSize / 255.;\\n\\n gl_PointSize = (size + borderSize) * pointSizeScale;\\n\\n vec2 pos = (position + translate) * scale\\n + (positionFract + translateFract) * scale\\n + (position + translate) * scaleFract\\n + (positionFract + translateFract) * scaleFract;\\n\\n gl_Position = vec4(pos * 2. - 1., 0., 1.);\\n\\n fragBorderRadius = 1. - 2. * borderSize / (size + borderSize);\\n fragColor = color;\\n fragBorderColor = borderColor.a == 0. || borderSize == 0. ? vec4(color.rgb, 0.) : borderColor;\\n fragWidth = 1. / gl_PointSize;\\n}\\n\"]),m&&(l.frag=l.frag.replace(\"smoothstep\",\"smoothStep\"),s.frag=s.frag.replace(\"smoothstep\",\"smoothStep\")),this.drawCircle=t(l)}b.defaults={color:\"black\",borderColor:\"transparent\",borderSize:0,size:12,opacity:1,marker:void 0,viewport:null,range:null,pixelSize:null,count:0,offset:0,bounds:null,positions:[],snap:1e4},b.prototype.render=function(){return arguments.length&&this.update.apply(this,arguments),this.draw(),this},b.prototype.draw=function(){for(var t=this,e=arguments.length,r=new Array(e),n=0;nn)?e.tree=u(t,{bounds:f}):n&&n.length&&(e.tree=n),e.tree){var h={primitive:\"points\",usage:\"static\",data:e.tree,type:\"uint32\"};e.elements?e.elements(h):e.elements=o.elements(h)}var p=v.float32(t);return i({data:p,usage:\"dynamic\"}),a({data:v.fract32(t,p),usage:\"dynamic\"}),s({data:new Uint8Array(c),type:\"uint8\",usage:\"stream\"}),t}},{marker:function(e,r,n){var i=r.activation;if(i.forEach((function(t){return t&&t.destroy&&t.destroy()})),i.length=0,e&&\"number\"!=typeof e[0]){for(var a=[],s=0,l=Math.min(e.length,r.count);s=0)return a;if(t instanceof Uint8Array||t instanceof Uint8ClampedArray)e=t;else{e=new Uint8Array(t.length);for(var o=0,s=t.length;o4*n&&(this.tooManyColors=!0),this.updatePalette(r),1===i.length?i[0]:i},b.prototype.updatePalette=function(t){if(!this.tooManyColors){var e=this.maxColors,r=this.paletteTexture,n=Math.ceil(.25*t.length/e);if(n>1)for(var i=.25*(t=t.slice()).length%e;i2?(s[0],s[2],n=s[1],i=s[3]):s.length?(n=s[0],i=s[1]):(s.x,n=s.y,s.x+s.width,i=s.y+s.height),l.length>2?(a=l[0],o=l[2],l[1],l[3]):l.length?(a=l[0],o=l[1]):(a=l.x,l.y,o=l.x+l.width,l.y+l.height),[a,n,o,i]}function p(t){if(\"number\"==typeof t)return[t,t,t,t];if(2===t.length)return[t[0],t[1],t[0],t[1]];var e=l(t);return[e.x,e.y,e.x+e.width,e.y+e.height]}e.exports=u,u.prototype.render=function(){for(var t,e=this,r=[],n=arguments.length;n--;)r[n]=arguments[n];return r.length&&(t=this).update.apply(t,r),this.regl.attributes.preserveDrawingBuffer?this.draw():(this.dirty?null==this.planned&&(this.planned=o((function(){e.draw(),e.dirty=!0,e.planned=null}))):(this.draw(),this.dirty=!0,o((function(){e.dirty=!1}))),this)},u.prototype.update=function(){for(var t,e=[],r=arguments.length;r--;)e[r]=arguments[r];if(e.length){for(var n=0;nk))&&(s.lower||!(T>>=e))<<3,(e|=r=(15<(t>>>=r))<<2)|(r=(3<(t>>>=r))<<1)|t>>>r>>1}function s(){function t(t){t:{for(var e=16;268435456>=e;e*=16)if(t<=e){t=e;break t}t=0}return 0<(e=r[o(t)>>2]).length?e.pop():new ArrayBuffer(t)}function e(t){r[o(t.byteLength)>>2].push(t)}var r=a(8,(function(){return[]}));return{alloc:t,free:e,allocType:function(e,r){var n=null;switch(e){case 5120:n=new Int8Array(t(r),0,r);break;case 5121:n=new Uint8Array(t(r),0,r);break;case 5122:n=new Int16Array(t(2*r),0,r);break;case 5123:n=new Uint16Array(t(2*r),0,r);break;case 5124:n=new Int32Array(t(4*r),0,r);break;case 5125:n=new Uint32Array(t(4*r),0,r);break;case 5126:n=new Float32Array(t(4*r),0,r);break;default:return null}return n.length!==r?n.subarray(0,r):n},freeType:function(t){e(t.buffer)}}}function l(t){return!!t&&\"object\"==typeof t&&Array.isArray(t.shape)&&Array.isArray(t.stride)&&\"number\"==typeof t.offset&&t.shape.length===t.stride.length&&(Array.isArray(t.data)||W(t.data))}function c(t,e,r,n,i,a){for(var o=0;o(i=s)&&(i=n.buffer.byteLength,5123===f?i>>=1:5125===f&&(i>>=2)),n.vertCount=i,i=o,0>o&&(i=4,1===(o=n.buffer.dimension)&&(i=0),2===o&&(i=1),3===o&&(i=4)),n.primType=i}function o(t){n.elementsCount--,delete s[t.id],t.buffer.destroy(),t.buffer=null}var s={},c=0,u={uint8:5121,uint16:5123};e.oes_element_index_uint&&(u.uint32=5125),i.prototype.bind=function(){this.buffer.bind()};var f=[];return{create:function(t,e){function s(t){if(t)if(\"number\"==typeof t)c(t),f.primType=4,f.vertCount=0|t,f.type=5121;else{var e=null,r=35044,n=-1,i=-1,o=0,h=0;Array.isArray(t)||W(t)||l(t)?e=t:(\"data\"in t&&(e=t.data),\"usage\"in t&&(r=Q[t.usage]),\"primitive\"in t&&(n=rt[t.primitive]),\"count\"in t&&(i=0|t.count),\"type\"in t&&(h=u[t.type]),\"length\"in t?o=0|t.length:(o=i,5123===h||5122===h?o*=2:5125!==h&&5124!==h||(o*=4))),a(f,e,r,n,i,o,h)}else c(),f.primType=4,f.vertCount=0,f.type=5121;return s}var c=r.create(null,34963,!0),f=new i(c._buffer);return n.elementsCount++,s(t),s._reglType=\"elements\",s._elements=f,s.subdata=function(t,e){return c.subdata(t,e),s},s.destroy=function(){o(f)},s},createStream:function(t){var e=f.pop();return e||(e=new i(r.create(null,34963,!0,!1)._buffer)),a(e,t,35040,-1,-1,0,0),e},destroyStream:function(t){f.push(t)},getElements:function(t){return\"function\"==typeof t&&t._elements instanceof i?t._elements:null},clear:function(){X(s).forEach(o)}}}function g(t){for(var e=G.allocType(5123,t.length),r=0;r>>31<<15,i=(a<<1>>>24)-127,a=a>>13&1023;e[r]=-24>i?n:-14>i?n+(a+1024>>-14-i):15>=i,r.height>>=i,p(r,n[i]),t.mipmask|=1<e;++e)t.images[e]=null;return t}function C(t){for(var e=t.images,r=0;re){for(var r=0;r=--this.refCount&&F(this)}}),o.profile&&(a.getTotalTextureSize=function(){var t=0;return Object.keys(yt).forEach((function(e){t+=yt[e].stats.size})),t}),{create2D:function(e,r){function n(t,e){var r=i.texInfo;P.call(r);var a=L();return\"number\"==typeof t?M(a,0|t,\"number\"==typeof e?0|e:0|t):t?(I(r,t),S(a,t)):M(a,1,1),r.genMipmaps&&(a.mipmask=(a.width<<1)-1),i.mipmask=a.mipmask,c(i,a),i.internalformat=a.internalformat,n.width=a.width,n.height=a.height,D(i),E(a,3553),O(r,3553),R(),C(a),o.profile&&(i.stats.size=T(i.internalformat,i.type,a.width,a.height,r.genMipmaps,!1)),n.format=tt[i.internalformat],n.type=et[i.type],n.mag=rt[r.magFilter],n.min=nt[r.minFilter],n.wrapS=it[r.wrapS],n.wrapT=it[r.wrapT],n}var i=new z(3553);return yt[i.id]=i,a.textureCount++,n(e,r),n.subimage=function(t,e,r,a){e|=0,r|=0,a|=0;var o=v();return c(o,i),o.width=0,o.height=0,p(o,t),o.width=o.width||(i.width>>a)-e,o.height=o.height||(i.height>>a)-r,D(i),d(o,3553,e,r,a),R(),k(o),n},n.resize=function(e,r){var a=0|e,s=0|r||a;if(a===i.width&&s===i.height)return n;n.width=i.width=a,n.height=i.height=s,D(i);for(var l=0;i.mipmask>>l;++l){var c=a>>l,u=s>>l;if(!c||!u)break;t.texImage2D(3553,l,i.format,c,u,0,i.format,i.type,null)}return R(),o.profile&&(i.stats.size=T(i.internalformat,i.type,a,s,!1,!1)),n},n._reglType=\"texture2d\",n._texture=i,o.profile&&(n.stats=i.stats),n.destroy=function(){i.decRef()},n},createCube:function(e,r,n,i,s,l){function f(t,e,r,n,i,a){var s,l=h.texInfo;for(P.call(l),s=0;6>s;++s)g[s]=L();if(\"number\"!=typeof t&&t){if(\"object\"==typeof t)if(e)S(g[0],t),S(g[1],e),S(g[2],r),S(g[3],n),S(g[4],i),S(g[5],a);else if(I(l,t),u(h,t),\"faces\"in t)for(t=t.faces,s=0;6>s;++s)c(g[s],h),S(g[s],t[s]);else for(s=0;6>s;++s)S(g[s],t)}else for(t=0|t||1,s=0;6>s;++s)M(g[s],t,t);for(c(h,g[0]),h.mipmask=l.genMipmaps?(g[0].width<<1)-1:g[0].mipmask,h.internalformat=g[0].internalformat,f.width=g[0].width,f.height=g[0].height,D(h),s=0;6>s;++s)E(g[s],34069+s);for(O(l,34067),R(),o.profile&&(h.stats.size=T(h.internalformat,h.type,f.width,f.height,l.genMipmaps,!0)),f.format=tt[h.internalformat],f.type=et[h.type],f.mag=rt[l.magFilter],f.min=nt[l.minFilter],f.wrapS=it[l.wrapS],f.wrapT=it[l.wrapT],s=0;6>s;++s)C(g[s]);return f}var h=new z(34067);yt[h.id]=h,a.cubeCount++;var g=Array(6);return f(e,r,n,i,s,l),f.subimage=function(t,e,r,n,i){r|=0,n|=0,i|=0;var a=v();return c(a,h),a.width=0,a.height=0,p(a,e),a.width=a.width||(h.width>>i)-r,a.height=a.height||(h.height>>i)-n,D(h),d(a,34069+t,r,n,i),R(),k(a),f},f.resize=function(e){if((e|=0)!==h.width){f.width=h.width=e,f.height=h.height=e,D(h);for(var r=0;6>r;++r)for(var n=0;h.mipmask>>n;++n)t.texImage2D(34069+r,n,h.format,e>>n,e>>n,0,h.format,h.type,null);return R(),o.profile&&(h.stats.size=T(h.internalformat,h.type,f.width,f.height,!1,!0)),f}},f._reglType=\"textureCube\",f._texture=h,o.profile&&(f.stats=h.stats),f.destroy=function(){h.decRef()},f},clear:function(){for(var e=0;er;++r)if(0!=(e.mipmask&1<>r,e.height>>r,0,e.internalformat,e.type,null);else for(var n=0;6>n;++n)t.texImage2D(34069+n,r,e.internalformat,e.width>>r,e.height>>r,0,e.internalformat,e.type,null);O(e.texInfo,e.target)}))},refresh:function(){for(var e=0;ei;++i){for(c=0;ct;++t)r[t].resize(n);return e.width=e.height=n,e},_reglType:\"framebufferCube\",destroy:function(){r.forEach((function(t){t.destroy()}))}})},clear:function(){X(k).forEach(m)},restore:function(){x.cur=null,x.next=null,x.dirty=!0,X(k).forEach((function(e){e.framebuffer=t.createFramebuffer(),v(e)}))}})}function M(){this.w=this.z=this.y=this.x=this.state=0,this.buffer=null,this.size=0,this.normalized=!1,this.type=5126,this.divisor=this.stride=this.offset=0}function S(t,e,r,n,i,a,o){function s(){this.id=++f,this.attributes=[],this.elements=null,this.ownsElements=!1,this.offset=this.count=0,this.instances=-1,this.primitive=4;var t=e.oes_vertex_array_object;this.vao=t?t.createVertexArrayOES():null,h[this.id]=this,this.buffers=[]}var c=r.maxAttributes,u=Array(c);for(r=0;r=h.byteLength?c.subdata(h):(c.destroy(),r.buffers[s]=null)),r.buffers[s]||(c=r.buffers[s]=i.create(u,34962,!1,!0)),f.buffer=i.getBuffer(c),f.size=0|f.buffer.dimension,f.normalized=!1,f.type=f.buffer.dtype,f.offset=0,f.stride=0,f.divisor=0,f.state=1,t[s]=1;else i.getBuffer(u)?(f.buffer=i.getBuffer(u),f.size=0|f.buffer.dimension,f.normalized=!1,f.type=f.buffer.dtype,f.offset=0,f.stride=0,f.divisor=0,f.state=1):i.getBuffer(u.buffer)?(f.buffer=i.getBuffer(u.buffer),f.size=0|(+u.size||f.buffer.dimension),f.normalized=!!u.normalized||!1,f.type=\"type\"in u?K[u.type]:f.buffer.dtype,f.offset=0|(u.offset||0),f.stride=0|(u.stride||0),f.divisor=0|(u.divisor||0),f.state=1):\"x\"in u&&(f.x=+u.x||0,f.y=+u.y||0,f.z=+u.z||0,f.w=+u.w||0,f.state=2)}for(c=0;ct&&(t=e.stats.uniformsCount)})),t},r.getMaxAttributesCount=function(){var t=0;return h.forEach((function(e){e.stats.attributesCount>t&&(t=e.stats.attributesCount)})),t}),{clear:function(){var e=t.deleteShader.bind(t);X(c).forEach(e),c={},X(u).forEach(e),u={},h.forEach((function(e){t.deleteProgram(e.program)})),h.length=0,f={},r.shaderCount=0},program:function(e,n,i,a){var o=f[n];o||(o=f[n]={});var p=o[e];if(p&&(p.refCount++,!a))return p;var d=new s(n,e);return r.shaderCount++,l(d,i,a),p||(o[e]=d),h.push(d),j(d,{destroy:function(){if(d.refCount--,0>=d.refCount){t.deleteProgram(d.program);var e=h.indexOf(d);h.splice(e,1),r.shaderCount--}0>=o[d.vertId].refCount&&(t.deleteShader(u[d.vertId]),delete u[d.vertId],delete f[d.fragId][d.vertId]),Object.keys(f[d.fragId]).length||(t.deleteShader(c[d.fragId]),delete c[d.fragId],delete f[d.fragId])}})},restore:function(){c={},u={};for(var t=0;t\"+e+\"?\"+i+\".constant[\"+e+\"]:0;\"})).join(\"\"),\"}}else{\",\"if(\",s,\"(\",i,\".buffer)){\",u,\"=\",a,\".createStream(\",34962,\",\",i,\".buffer);\",\"}else{\",u,\"=\",a,\".getBuffer(\",i,\".buffer);\",\"}\",f,'=\"type\" in ',i,\"?\",o.glTypes,\"[\",i,\".type]:\",u,\".dtype;\",l.normalized,\"=!!\",i,\".normalized;\"),n(\"size\"),n(\"offset\"),n(\"stride\"),n(\"divisor\"),r(\"}}\"),r.exit(\"if(\",l.isStream,\"){\",a,\".destroyStream(\",u,\");\",\"}\"),l}))})),o}function A(t,e,n,i,o){function s(t){var e=c[t];e&&(h[t]=e)}var l=function(t,e){if(\"string\"==typeof(r=t.static).frag&&\"string\"==typeof r.vert){if(0>1)\",s],\");\")}function e(){r(l,\".drawArraysInstancedANGLE(\",[d,g,m,s],\");\")}p&&\"null\"!==p?y?t():(r(\"if(\",p,\"){\"),t(),r(\"}else{\"),e(),r(\"}\")):e()}function o(){function t(){r(u+\".drawElements(\"+[d,m,v,g+\"<<((\"+v+\"-5121)>>1)\"]+\");\")}function e(){r(u+\".drawArrays(\"+[d,g,m]+\");\")}p&&\"null\"!==p?y?t():(r(\"if(\",p,\"){\"),t(),r(\"}else{\"),e(),r(\"}\")):e()}var s,l,c=t.shared,u=c.gl,f=c.draw,h=n.draw,p=function(){var i=h.elements,a=e;return i?((i.contextDep&&n.contextDynamic||i.propDep)&&(a=r),i=i.append(t,a),h.elementsActive&&a(\"if(\"+i+\")\"+u+\".bindBuffer(34963,\"+i+\".buffer.buffer);\")):(i=a.def(),a(i,\"=\",f,\".\",\"elements\",\";\",\"if(\",i,\"){\",u,\".bindBuffer(\",34963,\",\",i,\".buffer.buffer);}\",\"else if(\",c.vao,\".currentVAO){\",i,\"=\",t.shared.elements+\".getElements(\"+c.vao,\".currentVAO.elements);\",nt?\"\":\"if(\"+i+\")\"+u+\".bindBuffer(34963,\"+i+\".buffer.buffer);\",\"}\")),i}(),d=i(\"primitive\"),g=i(\"offset\"),m=function(){var i=h.count,a=e;return i?((i.contextDep&&n.contextDynamic||i.propDep)&&(a=r),i=i.append(t,a)):i=a.def(f,\".\",\"count\"),i}();if(\"number\"==typeof m){if(0===m)return}else r(\"if(\",m,\"){\"),r.exit(\"}\");tt&&(s=i(\"instances\"),l=t.instancing);var v=p+\".type\",y=h.elements&&D(h.elements)&&!h.vaoActive;tt&&(\"number\"!=typeof s||0<=s)?\"string\"==typeof s?(r(\"if(\",s,\">0){\"),a(),r(\"}else if(\",s,\"<0){\"),o(),r(\"}\")):a():o()}function G(t,e,r,n,i){return i=(e=b()).proc(\"body\",i),tt&&(e.instancing=i.def(e.shared.extensions,\".angle_instanced_arrays\")),t(e,i,r,n),e.compile().body}function Y(t,e,r,n){B(t,e),r.useVAO?r.drawVAO?e(t.shared.vao,\".setVAO(\",r.drawVAO.append(t,e),\");\"):e(t.shared.vao,\".setVAO(\",t.shared.vao,\".targetVAO);\"):(e(t.shared.vao,\".setVAO(null);\"),U(t,e,r,n.attributes,(function(){return!0}))),H(t,e,r,n.uniforms,(function(){return!0}),!1),q(t,e,e,r)}function W(t,e,r,n){function i(){return!0}t.batchId=\"a1\",B(t,e),U(t,e,r,n.attributes,i),H(t,e,r,n.uniforms,i,!1),q(t,e,e,r)}function X(t,e,r,n){function i(t){return t.contextDep&&o||t.propDep}function a(t){return!i(t)}B(t,e);var o=r.contextDep,s=e.def(),l=e.def();t.shared.props=l,t.batchId=s;var c=t.scope(),u=t.scope();e(c.entry,\"for(\",s,\"=0;\",s,\"<\",\"a1\",\";++\",s,\"){\",l,\"=\",\"a0\",\"[\",s,\"];\",u,\"}\",c.exit),r.needsContext&&M(t,u,r.context),r.needsFramebuffer&&S(t,u,r.framebuffer),L(t,u,r.state,i),r.profile&&i(r.profile)&&N(t,u,r,!1,!0),n?(r.useVAO?r.drawVAO?i(r.drawVAO)?u(t.shared.vao,\".setVAO(\",r.drawVAO.append(t,u),\");\"):c(t.shared.vao,\".setVAO(\",r.drawVAO.append(t,c),\");\"):c(t.shared.vao,\".setVAO(\",t.shared.vao,\".targetVAO);\"):(c(t.shared.vao,\".setVAO(null);\"),U(t,c,r,n.attributes,a),U(t,u,r,n.attributes,i)),H(t,c,r,n.uniforms,a,!1),H(t,u,r,n.uniforms,i,!0),q(t,c,u,r)):(e=t.global.def(\"{}\"),n=r.shader.progVar.append(t,u),l=u.def(n,\".id\"),c=u.def(e,\"[\",l,\"]\"),u(t.shared.gl,\".useProgram(\",n,\".program);\",\"if(!\",c,\"){\",c,\"=\",e,\"[\",l,\"]=\",t.link((function(e){return G(W,t,r,e,2)})),\"(\",n,\");}\",c,\".call(this,a0[\",s,\"],\",s,\");\"))}function Z(t,r){function n(e){var n=r.shader[e];n&&i.set(a.shader,\".\"+e,n.append(t,i))}var i=t.proc(\"scope\",3);t.batchId=\"a2\";var a=t.shared,o=a.current;M(t,i,r.context),r.framebuffer&&r.framebuffer.append(t,i),O(Object.keys(r.state)).forEach((function(e){var n=r.state[e].append(t,i);m(n)?n.forEach((function(r,n){i.set(t.next[e],\"[\"+n+\"]\",r)})):i.set(a.next,\".\"+e,n)})),N(t,i,r,!0,!0),[\"elements\",\"offset\",\"count\",\"instances\",\"primitive\"].forEach((function(e){var n=r.draw[e];n&&i.set(a.draw,\".\"+e,\"\"+n.append(t,i))})),Object.keys(r.uniforms).forEach((function(n){var o=r.uniforms[n].append(t,i);Array.isArray(o)&&(o=\"[\"+o.join()+\"]\"),i.set(a.uniforms,\"[\"+e.id(n)+\"]\",o)})),Object.keys(r.attributes).forEach((function(e){var n=r.attributes[e].append(t,i),a=t.scopeAttrib(e);Object.keys(new Q).forEach((function(t){i.set(a,\".\"+t,n[t])}))})),r.scopeVAO&&i.set(a.vao,\".targetVAO\",r.scopeVAO.append(t,i)),n(\"vert\"),n(\"frag\"),0=--this.refCount&&o(this)},i.profile&&(n.getTotalRenderbufferSize=function(){var t=0;return Object.keys(u).forEach((function(e){t+=u[e].stats.size})),t}),{create:function(e,r){function o(e,r){var n=0,a=0,u=32854;if(\"object\"==typeof e&&e?(\"shape\"in e?(n=0|(a=e.shape)[0],a=0|a[1]):(\"radius\"in e&&(n=a=0|e.radius),\"width\"in e&&(n=0|e.width),\"height\"in e&&(a=0|e.height)),\"format\"in e&&(u=s[e.format])):\"number\"==typeof e?(n=0|e,a=\"number\"==typeof r?0|r:n):e||(n=a=1),n!==c.width||a!==c.height||u!==c.format)return o.width=c.width=n,o.height=c.height=a,c.format=u,t.bindRenderbuffer(36161,c.renderbuffer),t.renderbufferStorage(36161,u,n,a),i.profile&&(c.stats.size=vt[c.format]*c.width*c.height),o.format=l[c.format],o}var c=new a(t.createRenderbuffer());return u[c.id]=c,n.renderbufferCount++,o(e,r),o.resize=function(e,r){var n=0|e,a=0|r||n;return n===c.width&&a===c.height||(o.width=c.width=n,o.height=c.height=a,t.bindRenderbuffer(36161,c.renderbuffer),t.renderbufferStorage(36161,c.format,n,a),i.profile&&(c.stats.size=vt[c.format]*c.width*c.height)),o},o._reglType=\"renderbuffer\",o._renderbuffer=c,i.profile&&(o.stats=c.stats),o.destroy=function(){c.decRef()},o},clear:function(){X(u).forEach(o)},restore:function(){X(u).forEach((function(e){e.renderbuffer=t.createRenderbuffer(),t.bindRenderbuffer(36161,e.renderbuffer),t.renderbufferStorage(36161,e.format,e.width,e.height)})),t.bindRenderbuffer(36161,null)}}},xt=[];xt[6408]=4,xt[6407]=3;var bt=[];bt[5121]=1,bt[5126]=4,bt[36193]=2;var _t=[\"x\",\"y\",\"z\",\"w\"],wt=\"blend.func blend.equation stencil.func stencil.opFront stencil.opBack sample.coverage viewport scissor.box polygonOffset.offset\".split(\" \"),Tt={0:0,1:1,zero:0,one:1,\"src color\":768,\"one minus src color\":769,\"src alpha\":770,\"one minus src alpha\":771,\"dst color\":774,\"one minus dst color\":775,\"dst alpha\":772,\"one minus dst alpha\":773,\"constant color\":32769,\"one minus constant color\":32770,\"constant alpha\":32771,\"one minus constant alpha\":32772,\"src alpha saturate\":776},kt={never:512,less:513,\"<\":513,equal:514,\"=\":514,\"==\":514,\"===\":514,lequal:515,\"<=\":515,greater:516,\">\":516,notequal:517,\"!=\":517,\"!==\":517,gequal:518,\">=\":518,always:519},At={0:0,zero:0,keep:7680,replace:7681,increment:7682,decrement:7683,\"increment wrap\":34055,\"decrement wrap\":34056,invert:5386},Mt={cw:2304,ccw:2305},St=new z(!1,!1,!1,(function(){}));return function(t){function e(){if(0===J.length)w&&w.update(),tt=null;else{tt=H.next(e),f();for(var t=J.length-1;0<=t;--t){var r=J[t];r&&r(P,null,0)}m.flush(),w&&w.update()}}function r(){!tt&&0=J.length&&n()}}}}function u(){var t=X.viewport,e=X.scissor_box;t[0]=t[1]=e[0]=e[1]=0,P.viewportWidth=P.framebufferWidth=P.drawingBufferWidth=t[2]=e[2]=m.drawingBufferWidth,P.viewportHeight=P.framebufferHeight=P.drawingBufferHeight=t[3]=e[3]=m.drawingBufferHeight}function f(){P.tick+=1,P.time=g(),u(),W.procs.poll()}function h(){F.refresh(),u(),W.procs.refresh(),w&&w.update()}function g(){return(q()-T)/1e3}if(!(t=i(t)))return null;var m=t.gl,v=m.getContextAttributes();m.isContextLost();var y=function(t,e){function r(e){var r;e=e.toLowerCase();try{r=n[e]=t.getExtension(e)}catch(t){}return!!r}for(var n={},i=0;ie;++e)et(j({framebuffer:t.framebuffer.faces[e]},t),l);else et(t,l);else l(0,t)},prop:V.define.bind(null,1),context:V.define.bind(null,2),this:V.define.bind(null,3),draw:s({}),buffer:function(t){return O.create(t,34962,!1,!1)},elements:function(t){return z.create(t,!1)},texture:F.create2D,cube:F.createCube,renderbuffer:U.create,framebuffer:G.create,framebufferCube:G.createCube,vao:D.createVAO,attributes:v,frame:c,on:function(t,e){var r;switch(t){case\"frame\":return c(e);case\"lost\":r=K;break;case\"restore\":r=Q;break;case\"destroy\":r=$}return r.push(e),{cancel:function(){for(var t=0;t2?\"one of \".concat(e,\" \").concat(t.slice(0,r-1).join(\", \"),\", or \")+t[r-1]:2===r?\"one of \".concat(e,\" \").concat(t[0],\" or \").concat(t[1]):\"of \".concat(e,\" \").concat(t[0])}return\"of \".concat(e,\" \").concat(String(t))}i(\"ERR_INVALID_OPT_VALUE\",(function(t,e){return'The value \"'+e+'\" is invalid for option \"'+t+'\"'}),TypeError),i(\"ERR_INVALID_ARG_TYPE\",(function(t,e,r){var n,i,o,s;if(\"string\"==typeof e&&(i=\"not \",e.substr(!o||o<0?0:+o,i.length)===i)?(n=\"must not be\",e=e.replace(/^not /,\"\")):n=\"must be\",function(t,e,r){return(void 0===r||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}(t,\" argument\"))s=\"The \".concat(t,\" \").concat(n,\" \").concat(a(e,\"type\"));else{var l=function(t,e,r){return\"number\"!=typeof r&&(r=0),!(r+e.length>t.length)&&-1!==t.indexOf(e,r)}(t,\".\")?\"property\":\"argument\";s='The \"'.concat(t,'\" ').concat(l,\" \").concat(n,\" \").concat(a(e,\"type\"))}return s+=\". Received type \".concat(typeof r)}),TypeError),i(\"ERR_STREAM_PUSH_AFTER_EOF\",\"stream.push() after EOF\"),i(\"ERR_METHOD_NOT_IMPLEMENTED\",(function(t){return\"The \"+t+\" method is not implemented\"})),i(\"ERR_STREAM_PREMATURE_CLOSE\",\"Premature close\"),i(\"ERR_STREAM_DESTROYED\",(function(t){return\"Cannot call \"+t+\" after a stream was destroyed\"})),i(\"ERR_MULTIPLE_CALLBACK\",\"Callback called multiple times\"),i(\"ERR_STREAM_CANNOT_PIPE\",\"Cannot pipe, not readable\"),i(\"ERR_STREAM_WRITE_AFTER_END\",\"write after end\"),i(\"ERR_STREAM_NULL_VALUES\",\"May not write null values to stream\",TypeError),i(\"ERR_UNKNOWN_ENCODING\",(function(t){return\"Unknown encoding: \"+t}),TypeError),i(\"ERR_STREAM_UNSHIFT_AFTER_END_EVENT\",\"stream.unshift() after end event\"),e.exports.codes=n},{}],287:[function(t,e,r){(function(r){(function(){\"use strict\";var n=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};e.exports=c;var i=t(\"./_stream_readable\"),a=t(\"./_stream_writable\");t(\"inherits\")(c,i);for(var o=n(a.prototype),s=0;s0)if(\"string\"==typeof e||o.objectMode||Object.getPrototypeOf(e)===s.prototype||(e=function(t){return s.from(t)}(e)),n)o.endEmitted?w(t,new _):S(t,o,e,!0);else if(o.ended)w(t,new x);else{if(o.destroyed)return!1;o.reading=!1,o.decoder&&!r?(e=o.decoder.write(e),o.objectMode||0!==e.length?S(t,o,e,!1):P(t,o)):S(t,o,e,!1)}else n||(o.reading=!1,P(t,o));return!o.ended&&(o.lengthe.highWaterMark&&(e.highWaterMark=function(t){return t>=1073741824?t=1073741824:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function L(t){var e=t._readableState;c(\"emitReadable\",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(c(\"emitReadable\",e.flowing),e.emittedReadable=!0,r.nextTick(C,t))}function C(t){var e=t._readableState;c(\"emitReadable_\",e.destroyed,e.length,e.ended),e.destroyed||!e.length&&!e.ended||(t.emit(\"readable\"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,R(t)}function P(t,e){e.readingMore||(e.readingMore=!0,r.nextTick(I,t,e))}function I(t,e){for(;!e.reading&&!e.ended&&(e.length0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount(\"data\")>0&&t.resume()}function z(t){c(\"readable nexttick read 0\"),t.read(0)}function D(t,e){c(\"resume\",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit(\"resume\"),R(t),e.flowing&&!e.reading&&t.read(0)}function R(t){var e=t._readableState;for(c(\"flow\",e.flowing);e.flowing&&null!==t.read(););}function F(t,e){return 0===e.length?null:(e.objectMode?r=e.buffer.shift():!t||t>=e.length?(r=e.decoder?e.buffer.join(\"\"):1===e.buffer.length?e.buffer.first():e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r);var r}function B(t){var e=t._readableState;c(\"endReadable\",e.endEmitted),e.endEmitted||(e.ended=!0,r.nextTick(N,e,t))}function N(t,e){if(c(\"endReadableNT\",t.endEmitted,t.length),!t.endEmitted&&0===t.length&&(t.endEmitted=!0,e.readable=!1,e.emit(\"end\"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}function j(t,e){for(var r=0,n=t.length;r=e.highWaterMark:e.length>0)||e.ended))return c(\"read: emitReadable\",e.length,e.ended),0===e.length&&e.ended?B(this):L(this),null;if(0===(t=E(t,e))&&e.ended)return 0===e.length&&B(this),null;var n,i=e.needReadable;return c(\"need readable\",i),(0===e.length||e.length-t0?F(t,e):null)?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&B(this)),null!==n&&this.emit(\"data\",n),n},A.prototype._read=function(t){w(this,new b(\"_read()\"))},A.prototype.pipe=function(t,e){var n=this,i=this._readableState;switch(i.pipesCount){case 0:i.pipes=t;break;case 1:i.pipes=[i.pipes,t];break;default:i.pipes.push(t)}i.pipesCount+=1,c(\"pipe count=%d opts=%j\",i.pipesCount,e);var o=(!e||!1!==e.end)&&t!==r.stdout&&t!==r.stderr?l:m;function s(e,r){c(\"onunpipe\"),e===n&&r&&!1===r.hasUnpiped&&(r.hasUnpiped=!0,c(\"cleanup\"),t.removeListener(\"close\",d),t.removeListener(\"finish\",g),t.removeListener(\"drain\",u),t.removeListener(\"error\",p),t.removeListener(\"unpipe\",s),n.removeListener(\"end\",l),n.removeListener(\"end\",m),n.removeListener(\"data\",h),f=!0,!i.awaitDrain||t._writableState&&!t._writableState.needDrain||u())}function l(){c(\"onend\"),t.end()}i.endEmitted?r.nextTick(o):n.once(\"end\",o),t.on(\"unpipe\",s);var u=function(t){return function(){var e=t._readableState;c(\"pipeOnDrain\",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&a(t,\"data\")&&(e.flowing=!0,R(t))}}(n);t.on(\"drain\",u);var f=!1;function h(e){c(\"ondata\");var r=t.write(e);c(\"dest.write\",r),!1===r&&((1===i.pipesCount&&i.pipes===t||i.pipesCount>1&&-1!==j(i.pipes,t))&&!f&&(c(\"false write response, pause\",i.awaitDrain),i.awaitDrain++),n.pause())}function p(e){c(\"onerror\",e),m(),t.removeListener(\"error\",p),0===a(t,\"error\")&&w(t,e)}function d(){t.removeListener(\"finish\",g),m()}function g(){c(\"onfinish\"),t.removeListener(\"close\",d),m()}function m(){c(\"unpipe\"),n.unpipe(t)}return n.on(\"data\",h),function(t,e,r){if(\"function\"==typeof t.prependListener)return t.prependListener(e,r);t._events&&t._events[e]?Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]:t.on(e,r)}(t,\"error\",p),t.once(\"close\",d),t.once(\"finish\",g),t.emit(\"pipe\",n),i.flowing||(c(\"pipe resume\"),n.resume()),t},A.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit(\"unpipe\",this,r)),this;if(!t){var n=e.pipes,i=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var a=0;a0,!1!==i.flowing&&this.resume()):\"readable\"===t&&(i.endEmitted||i.readableListening||(i.readableListening=i.needReadable=!0,i.flowing=!1,i.emittedReadable=!1,c(\"on readable\",i.length,i.reading),i.length?L(this):i.reading||r.nextTick(z,this))),n},A.prototype.addListener=A.prototype.on,A.prototype.removeListener=function(t,e){var n=o.prototype.removeListener.call(this,t,e);return\"readable\"===t&&r.nextTick(O,this),n},A.prototype.removeAllListeners=function(t){var e=o.prototype.removeAllListeners.apply(this,arguments);return\"readable\"!==t&&void 0!==t||r.nextTick(O,this),e},A.prototype.resume=function(){var t=this._readableState;return t.flowing||(c(\"resume\"),t.flowing=!t.readableListening,function(t,e){e.resumeScheduled||(e.resumeScheduled=!0,r.nextTick(D,t,e))}(this,t)),t.paused=!1,this},A.prototype.pause=function(){return c(\"call pause flowing=%j\",this._readableState.flowing),!1!==this._readableState.flowing&&(c(\"pause\"),this._readableState.flowing=!1,this.emit(\"pause\")),this._readableState.paused=!0,this},A.prototype.wrap=function(t){var e=this,r=this._readableState,n=!1;for(var i in t.on(\"end\",(function(){if(c(\"wrapped end\"),r.decoder&&!r.ended){var t=r.decoder.end();t&&t.length&&e.push(t)}e.push(null)})),t.on(\"data\",(function(i){(c(\"wrapped data\"),r.decoder&&(i=r.decoder.write(i)),r.objectMode&&null==i)||(r.objectMode||i&&i.length)&&(e.push(i)||(n=!0,t.pause()))})),t)void 0===this[i]&&\"function\"==typeof t[i]&&(this[i]=function(e){return function(){return t[e].apply(t,arguments)}}(i));for(var a=0;a-1))throw new _(t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(A.prototype,\"writableBuffer\",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(A.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),A.prototype._write=function(t,e,r){r(new g(\"_write()\"))},A.prototype._writev=null,A.prototype.end=function(t,e,n){var i=this._writableState;return\"function\"==typeof t?(n=t,t=null,e=null):\"function\"==typeof e&&(n=e,e=null),null!=t&&this.write(t,e),i.corked&&(i.corked=1,this.uncork()),i.ending||function(t,e,n){e.ending=!0,P(t,e),n&&(e.finished?r.nextTick(n):t.once(\"finish\",n));e.ended=!0,t.writable=!1}(this,i,n),this},Object.defineProperty(A.prototype,\"writableLength\",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(A.prototype,\"destroyed\",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),A.prototype.destroy=f.destroy,A.prototype._undestroy=f.undestroy,A.prototype._destroy=function(t,e){e(t)}}).call(this)}).call(this,t(\"_process\"),\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"../errors\":286,\"./_stream_duplex\":287,\"./internal/streams/destroy\":294,\"./internal/streams/state\":298,\"./internal/streams/stream\":299,_process:277,buffer:85,inherits:231,\"util-deprecate\":330}],292:[function(t,e,r){(function(r){(function(){\"use strict\";var n;function i(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var a=t(\"./end-of-stream\"),o=Symbol(\"lastResolve\"),s=Symbol(\"lastReject\"),l=Symbol(\"error\"),c=Symbol(\"ended\"),u=Symbol(\"lastPromise\"),f=Symbol(\"handlePromise\"),h=Symbol(\"stream\");function p(t,e){return{value:t,done:e}}function d(t){var e=t[o];if(null!==e){var r=t[h].read();null!==r&&(t[u]=null,t[o]=null,t[s]=null,e(p(r,!1)))}}function g(t){r.nextTick(d,t)}var m=Object.getPrototypeOf((function(){})),v=Object.setPrototypeOf((i(n={get stream(){return this[h]},next:function(){var t=this,e=this[l];if(null!==e)return Promise.reject(e);if(this[c])return Promise.resolve(p(void 0,!0));if(this[h].destroyed)return new Promise((function(e,n){r.nextTick((function(){t[l]?n(t[l]):e(p(void 0,!0))}))}));var n,i=this[u];if(i)n=new Promise(function(t,e){return function(r,n){t.then((function(){e[c]?r(p(void 0,!0)):e[f](r,n)}),n)}}(i,this));else{var a=this[h].read();if(null!==a)return Promise.resolve(p(a,!1));n=new Promise(this[f])}return this[u]=n,n}},Symbol.asyncIterator,(function(){return this})),i(n,\"return\",(function(){var t=this;return new Promise((function(e,r){t[h].destroy(null,(function(t){t?r(t):e(p(void 0,!0))}))}))})),n),m);e.exports=function(t){var e,r=Object.create(v,(i(e={},h,{value:t,writable:!0}),i(e,o,{value:null,writable:!0}),i(e,s,{value:null,writable:!0}),i(e,l,{value:null,writable:!0}),i(e,c,{value:t._readableState.endEmitted,writable:!0}),i(e,f,{value:function(t,e){var n=r[h].read();n?(r[u]=null,r[o]=null,r[s]=null,t(p(n,!1))):(r[o]=t,r[s]=e)},writable:!0}),e));return r[u]=null,a(t,(function(t){if(t&&\"ERR_STREAM_PREMATURE_CLOSE\"!==t.code){var e=r[s];return null!==e&&(r[u]=null,r[o]=null,r[s]=null,e(t)),void(r[l]=t)}var n=r[o];null!==n&&(r[u]=null,r[o]=null,r[s]=null,n(p(void 0,!0))),r[c]=!0})),t.on(\"readable\",g.bind(null,r)),r}}).call(this)}).call(this,t(\"_process\"))},{\"./end-of-stream\":295,_process:277}],293:[function(t,e,r){\"use strict\";function n(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function i(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function a(t,e){for(var r=0;r0?this.tail.next=e:this.head=e,this.tail=e,++this.length}},{key:\"unshift\",value:function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length}},{key:\"shift\",value:function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}}},{key:\"clear\",value:function(){this.head=this.tail=null,this.length=0}},{key:\"join\",value:function(t){if(0===this.length)return\"\";for(var e=this.head,r=\"\"+e.data;e=e.next;)r+=t+e.data;return r}},{key:\"concat\",value:function(t){if(0===this.length)return o.alloc(0);for(var e,r,n,i=o.allocUnsafe(t>>>0),a=this.head,s=0;a;)e=a.data,r=i,n=s,o.prototype.copy.call(e,r,n),s+=a.data.length,a=a.next;return i}},{key:\"consume\",value:function(t,e){var r;return ti.length?i.length:t;if(a===i.length?n+=i:n+=i.slice(0,t),0==(t-=a)){a===i.length?(++r,e.next?this.head=e.next:this.head=this.tail=null):(this.head=e,e.data=i.slice(a));break}++r}return this.length-=r,n}},{key:\"_getBuffer\",value:function(t){var e=o.allocUnsafe(t),r=this.head,n=1;for(r.data.copy(e),t-=r.data.length;r=r.next;){var i=r.data,a=t>i.length?i.length:t;if(i.copy(e,e.length-t,0,a),0==(t-=a)){a===i.length?(++n,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=i.slice(a));break}++n}return this.length-=n,e}},{key:l,value:function(t,e){return s(this,function(t){for(var e=1;e0,(function(t){n||(n=t),t&&o.forEach(c),a||(o.forEach(c),i(n))}))}));return e.reduce(u)}},{\"../../../errors\":286,\"./end-of-stream\":295}],298:[function(t,e,r){\"use strict\";var n=t(\"../../../errors\").codes.ERR_INVALID_OPT_VALUE;e.exports={getHighWaterMark:function(t,e,r,i){var a=function(t,e,r){return null!=t.highWaterMark?t.highWaterMark:e?t[r]:null}(e,i,r);if(null!=a){if(!isFinite(a)||Math.floor(a)!==a||a<0)throw new n(i?r:\"highWaterMark\",a);return Math.floor(a)}return t.objectMode?16:16384}}},{\"../../../errors\":286}],299:[function(t,e,r){e.exports=t(\"events\").EventEmitter},{events:84}],300:[function(t,e,r){\"use strict\";var n=t(\"safe-buffer\").Buffer,i=n.isEncoding||function(t){switch((t=\"\"+t)&&t.toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":case\"raw\":return!0;default:return!1}};function a(t){var e;switch(this.encoding=function(t){var e=function(t){if(!t)return\"utf8\";for(var e;;)switch(t){case\"utf8\":case\"utf-8\":return\"utf8\";case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return\"utf16le\";case\"latin1\":case\"binary\":return\"latin1\";case\"base64\":case\"ascii\":case\"hex\":return t;default:if(e)return;t=(\"\"+t).toLowerCase(),e=!0}}(t);if(\"string\"!=typeof e&&(n.isEncoding===i||!i(t)))throw new Error(\"Unknown encoding: \"+t);return e||t}(t),this.encoding){case\"utf16le\":this.text=l,this.end=c,e=4;break;case\"utf8\":this.fillLast=s,e=4;break;case\"base64\":this.text=u,this.end=f,e=3;break;default:return this.write=h,void(this.end=p)}this.lastNeed=0,this.lastTotal=0,this.lastChar=n.allocUnsafe(e)}function o(t){return t<=127?0:t>>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function s(t){var e=this.lastTotal-this.lastNeed,r=function(t,e,r){if(128!=(192&e[0]))return t.lastNeed=0,\"\\ufffd\";if(t.lastNeed>1&&e.length>1){if(128!=(192&e[1]))return t.lastNeed=1,\"\\ufffd\";if(t.lastNeed>2&&e.length>2&&128!=(192&e[2]))return t.lastNeed=2,\"\\ufffd\"}}(this,t);return void 0!==r?r:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),void(this.lastNeed-=t.length))}function l(t,e){if((t.length-e)%2==0){var r=t.toString(\"utf16le\",e);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString(\"utf16le\",e,t.length-1)}function c(t){var e=t&&t.length?this.write(t):\"\";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString(\"utf16le\",0,r)}return e}function u(t,e){var r=(t.length-e)%3;return 0===r?t.toString(\"base64\",e):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString(\"base64\",e,t.length-r))}function f(t){var e=t&&t.length?this.write(t):\"\";return this.lastNeed?e+this.lastChar.toString(\"base64\",0,3-this.lastNeed):e}function h(t){return t.toString(this.encoding)}function p(t){return t&&t.length?this.write(t):\"\"}r.StringDecoder=a,a.prototype.write=function(t){if(0===t.length)return\"\";var e,r;if(this.lastNeed){if(void 0===(e=this.fillLast(t)))return\"\";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0)return i>0&&(t.lastNeed=i-1),i;if(--n=0)return i>0&&(t.lastNeed=i-2),i;if(--n=0)return i>0&&(2===i?i=0:t.lastNeed=i-3),i;return 0}(this,t,e);if(!this.lastNeed)return t.toString(\"utf8\",e);this.lastTotal=r;var n=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,n),t.toString(\"utf8\",e,n)},a.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length}},{\"safe-buffer\":284}],301:[function(t,e,r){(function(r,n){(function(){var r=t(\"assert\"),i=t(\"debug\")(\"stream-parser\");e.exports=function(t){var e=t&&\"function\"==typeof t._transform,r=t&&\"function\"==typeof t._write;if(!e&&!r)throw new Error(\"must pass a Writable or Transform stream in\");i(\"extending Parser into stream\"),t._bytes=o,t._skipBytes=s,e&&(t._passthrough=l);e?t._transform=u:t._write=c};function a(t){i(\"initializing parser stream\"),t._parserBytesLeft=0,t._parserBuffers=[],t._parserBuffered=0,t._parserState=-1,t._parserCallback=null,\"function\"==typeof t.push&&(t._parserOutput=t.push.bind(t)),t._parserInit=!0}function o(t,e){r(!this._parserCallback,'there is already a \"callback\" set!'),r(isFinite(t)&&t>0,'can only buffer a finite number of bytes > 0, got \"'+t+'\"'),this._parserInit||a(this),i(\"buffering %o bytes\",t),this._parserBytesLeft=t,this._parserCallback=e,this._parserState=0}function s(t,e){r(!this._parserCallback,'there is already a \"callback\" set!'),r(t>0,'can only skip > 0 bytes, got \"'+t+'\"'),this._parserInit||a(this),i(\"skipping %o bytes\",t),this._parserBytesLeft=t,this._parserCallback=e,this._parserState=1}function l(t,e){r(!this._parserCallback,'There is already a \"callback\" set!'),r(t>0,'can only pass through > 0 bytes, got \"'+t+'\"'),this._parserInit||a(this),i(\"passing through %o bytes\",t),this._parserBytesLeft=t,this._parserCallback=e,this._parserState=2}function c(t,e,r){this._parserInit||a(this),i(\"write(%o bytes)\",t.length),\"function\"==typeof e&&(r=e),h(this,t,null,r)}function u(t,e,r){this._parserInit||a(this),i(\"transform(%o bytes)\",t.length),\"function\"!=typeof e&&(e=this._parserOutput),h(this,t,e,r)}function f(t,e,r,a){if(t._parserBytesLeft-=e.length,i(\"%o bytes left for stream piece\",t._parserBytesLeft),0===t._parserState?(t._parserBuffers.push(e),t._parserBuffered+=e.length):2===t._parserState&&r(e),0!==t._parserBytesLeft)return a;var o=t._parserCallback;if(o&&0===t._parserState&&t._parserBuffers.length>1&&(e=n.concat(t._parserBuffers,t._parserBuffered)),0!==t._parserState&&(e=null),t._parserCallback=null,t._parserBuffered=0,t._parserState=-1,t._parserBuffers.splice(0),o){var s=[];e&&s.push(e),r&&s.push(r);var l=o.length>s.length;l&&s.push(p(a));var c=o.apply(t,s);if(!l||a===c)return a}}var h=p((function t(e,r,n,i){return e._parserBytesLeft<=0?i(new Error(\"got data but not currently parsing anything\")):r.length<=e._parserBytesLeft?function(){return f(e,r,n,i)}:function(){var a=r.slice(0,e._parserBytesLeft);return f(e,a,n,(function(o){return o?i(o):r.length>a.length?function(){return t(e,r.slice(a.length),n,i)}:void 0}))}}));function p(t){return function(){for(var e=t.apply(this,arguments);\"function\"==typeof e;)e=e();return e}}}).call(this)}).call(this,t(\"_process\"),t(\"buffer\").Buffer)},{_process:277,assert:75,buffer:85,debug:302}],302:[function(t,e,r){(function(n){(function(){function i(){var t;try{t=r.storage.debug}catch(t){}return!t&&void 0!==n&&\"env\"in n&&(t=n.env.DEBUG),t}(r=e.exports=t(\"./debug\")).log=function(){return\"object\"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)},r.formatArgs=function(t){var e=this.useColors;if(t[0]=(e?\"%c\":\"\")+this.namespace+(e?\" %c\":\" \")+t[0]+(e?\"%c \":\" \")+\"+\"+r.humanize(this.diff),!e)return;var n=\"color: \"+this.color;t.splice(1,0,n,\"color: inherit\");var i=0,a=0;t[0].replace(/%[a-zA-Z%]/g,(function(t){\"%%\"!==t&&(i++,\"%c\"===t&&(a=i))})),t.splice(a,0,n)},r.save=function(t){try{null==t?r.storage.removeItem(\"debug\"):r.storage.debug=t}catch(t){}},r.load=i,r.useColors=function(){if(\"undefined\"!=typeof window&&window.process&&\"renderer\"===window.process.type)return!0;return\"undefined\"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||\"undefined\"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||\"undefined\"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)&&parseInt(RegExp.$1,10)>=31||\"undefined\"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/)},r.storage=\"undefined\"!=typeof chrome&&void 0!==chrome.storage?chrome.storage.local:function(){try{return window.localStorage}catch(t){}}(),r.colors=[\"lightseagreen\",\"forestgreen\",\"goldenrod\",\"dodgerblue\",\"darkorchid\",\"crimson\"],r.formatters.j=function(t){try{return JSON.stringify(t)}catch(t){return\"[UnexpectedJSONParseError]: \"+t.message}},r.enable(i())}).call(this)}).call(this,t(\"_process\"))},{\"./debug\":303,_process:277}],303:[function(t,e,r){var n;function i(t){function e(){if(e.enabled){var t=e,i=+new Date,a=i-(n||i);t.diff=a,t.prev=n,t.curr=i,n=i;for(var o=new Array(arguments.length),s=0;s0)return function(t){if((t=String(t)).length>100)return;var e=/^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(t);if(!e)return;var r=parseFloat(e[1]);switch((e[2]||\"ms\").toLowerCase()){case\"years\":case\"year\":case\"yrs\":case\"yr\":case\"y\":return 315576e5*r;case\"days\":case\"day\":case\"d\":return r*o;case\"hours\":case\"hour\":case\"hrs\":case\"hr\":case\"h\":return r*a;case\"minutes\":case\"minute\":case\"mins\":case\"min\":case\"m\":return r*i;case\"seconds\":case\"second\":case\"secs\":case\"sec\":case\"s\":return r*n;case\"milliseconds\":case\"millisecond\":case\"msecs\":case\"msec\":case\"ms\":return r;default:return}}(t);if(\"number\"===l&&!1===isNaN(t))return e.long?s(r=t,o,\"day\")||s(r,a,\"hour\")||s(r,i,\"minute\")||s(r,n,\"second\")||r+\" ms\":function(t){if(t>=o)return Math.round(t/o)+\"d\";if(t>=a)return Math.round(t/a)+\"h\";if(t>=i)return Math.round(t/i)+\"m\";if(t>=n)return Math.round(t/n)+\"s\";return t+\"ms\"}(t);throw new Error(\"val is not a non-empty string or a valid number. val=\"+JSON.stringify(t))}},{}],305:[function(t,e,r){\"use strict\";var n=t(\"parenthesis\");e.exports=function(t,e,r){if(null==t)throw Error(\"First argument should be a string\");if(null==e)throw Error(\"Separator should be a string or a RegExp\");r?(\"string\"==typeof r||Array.isArray(r))&&(r={ignore:r}):r={},null==r.escape&&(r.escape=!0),null==r.ignore?r.ignore=[\"[]\",\"()\",\"{}\",\"<>\",'\"\"',\"''\",\"``\",\"\\u201c\\u201d\",\"\\xab\\xbb\"]:(\"string\"==typeof r.ignore&&(r.ignore=[r.ignore]),r.ignore=r.ignore.map((function(t){return 1===t.length&&(t+=t),t})));var i=n.parse(t,{flat:!0,brackets:r.ignore}),a=i[0].split(e);if(r.escape){for(var o=[],s=0;s0;){e=c[c.length-1];var p=t[e];if(a[e]=0&&s[e].push(o[g])}a[e]=d}else{if(n[e]===r[e]){var m=[],v=[],y=0;for(d=l.length-1;d>=0;--d){var x=l[d];if(i[x]=!1,m.push(x),v.push(s[x]),y+=s[x].length,o[x]=f.length,x===e){l.length=d;break}}f.push(m);var b=new Array(y);for(d=0;d1&&(i=1),i<-1&&(i=-1),(t*n-e*r<0?-1:1)*Math.acos(i)};r.default=function(t){var e=t.px,r=t.py,l=t.cx,c=t.cy,u=t.rx,f=t.ry,h=t.xAxisRotation,p=void 0===h?0:h,d=t.largeArcFlag,g=void 0===d?0:d,m=t.sweepFlag,v=void 0===m?0:m,y=[];if(0===u||0===f)return[];var x=Math.sin(p*i/360),b=Math.cos(p*i/360),_=b*(e-l)/2+x*(r-c)/2,w=-x*(e-l)/2+b*(r-c)/2;if(0===_&&0===w)return[];u=Math.abs(u),f=Math.abs(f);var T=Math.pow(_,2)/Math.pow(u,2)+Math.pow(w,2)/Math.pow(f,2);T>1&&(u*=Math.sqrt(T),f*=Math.sqrt(T));var k=function(t,e,r,n,a,o,l,c,u,f,h,p){var d=Math.pow(a,2),g=Math.pow(o,2),m=Math.pow(h,2),v=Math.pow(p,2),y=d*g-d*v-g*m;y<0&&(y=0),y/=d*v+g*m;var x=(y=Math.sqrt(y)*(l===c?-1:1))*a/o*p,b=y*-o/a*h,_=f*x-u*b+(t+r)/2,w=u*x+f*b+(e+n)/2,T=(h-x)/a,k=(p-b)/o,A=(-h-x)/a,M=(-p-b)/o,S=s(1,0,T,k),E=s(T,k,A,M);return 0===c&&E>0&&(E-=i),1===c&&E<0&&(E+=i),[_,w,S,E]}(e,r,l,c,u,f,g,v,x,b,_,w),A=n(k,4),M=A[0],S=A[1],E=A[2],L=A[3],C=Math.abs(L)/(i/4);Math.abs(1-C)<1e-7&&(C=1);var P=Math.max(Math.ceil(C),1);L/=P;for(var I=0;Ie[2]&&(e[2]=c[u+0]),c[u+1]>e[3]&&(e[3]=c[u+1]);return e}},{\"abs-svg-path\":70,assert:75,\"is-svg-path\":238,\"normalize-svg-path\":309,\"parse-svg-path\":250}],309:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e,r=[],o=0,s=0,l=0,c=0,u=null,f=null,h=0,p=0,d=0,g=t.length;d4?(o=m[m.length-4],s=m[m.length-3]):(o=h,s=p),r.push(m)}return r};var n=t(\"svg-arc-to-cubic-bezier\");function i(t,e,r,n){return[\"C\",t,e,r,n,r,n]}function a(t,e,r,n,i,a){return[\"C\",t/3+2/3*r,e/3+2/3*n,i/3+2/3*r,a/3+2/3*n,i,a]}},{\"svg-arc-to-cubic-bezier\":307}],310:[function(t,e,r){\"use strict\";var n,i=t(\"svg-path-bounds\"),a=t(\"parse-svg-path\"),o=t(\"draw-svg-path\"),s=t(\"is-svg-path\"),l=t(\"bitmap-sdf\"),c=document.createElement(\"canvas\"),u=c.getContext(\"2d\");e.exports=function(t,e){if(!s(t))throw Error(\"Argument should be valid svg path string\");e||(e={});var r,f;e.shape?(r=e.shape[0],f=e.shape[1]):(r=c.width=e.w||e.width||200,f=c.height=e.h||e.height||200);var h=Math.min(r,f),p=e.stroke||0,d=e.viewbox||e.viewBox||i(t),g=[r/(d[2]-d[0]),f/(d[3]-d[1])],m=Math.min(g[0]||0,g[1]||0)/2;u.fillStyle=\"black\",u.fillRect(0,0,r,f),u.fillStyle=\"white\",p&&(\"number\"!=typeof p&&(p=1),u.strokeStyle=p>0?\"white\":\"black\",u.lineWidth=Math.abs(p));if(u.translate(.5*r,.5*f),u.scale(m,m),function(){if(null!=n)return n;var t=document.createElement(\"canvas\").getContext(\"2d\");if(t.canvas.width=t.canvas.height=1,!window.Path2D)return n=!1;var e=new Path2D(\"M0,0h1v1h-1v-1Z\");t.fillStyle=\"black\",t.fill(e);var r=t.getImageData(0,0,1,1);return n=r&&r.data&&255===r.data[3]}()){var v=new Path2D(t);u.fill(v),p&&u.stroke(v)}else{var y=a(t);o(u,y),u.fill(),p&&u.stroke()}return u.setTransform(1,0,0,1,0,0),l(u,{cutoff:null!=e.cutoff?e.cutoff:.5,radius:null!=e.radius?e.radius:.5*h})}},{\"bitmap-sdf\":82,\"draw-svg-path\":126,\"is-svg-path\":238,\"parse-svg-path\":250,\"svg-path-bounds\":308}],311:[function(t,e,r){(function(e,n){(function(){var i=t(\"process/browser.js\").nextTick,a=Function.prototype.apply,o=Array.prototype.slice,s={},l=0;function c(t,e){this._id=t,this._clearFn=e}r.setTimeout=function(){return new c(a.call(setTimeout,window,arguments),clearTimeout)},r.setInterval=function(){return new c(a.call(setInterval,window,arguments),clearInterval)},r.clearTimeout=r.clearInterval=function(t){t.close()},c.prototype.unref=c.prototype.ref=function(){},c.prototype.close=function(){this._clearFn.call(window,this._id)},r.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},r.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},r._unrefActive=r.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout((function(){t._onTimeout&&t._onTimeout()}),e))},r.setImmediate=\"function\"==typeof e?e:function(t){var e=l++,n=!(arguments.length<2)&&o.call(arguments,1);return s[e]=!0,i((function(){s[e]&&(n?t.apply(null,n):t.call(null),r.clearImmediate(e))})),e},r.clearImmediate=\"function\"==typeof n?n:function(t){delete s[t]}}).call(this)}).call(this,t(\"timers\").setImmediate,t(\"timers\").clearImmediate)},{\"process/browser.js\":277,timers:311}],312:[function(t,e,r){!function(t){var r=/^\\s+/,n=/\\s+$/,i=0,a=t.round,o=t.min,s=t.max,l=t.random;function c(e,l){if(l=l||{},(e=e||\"\")instanceof c)return e;if(!(this instanceof c))return new c(e,l);var u=function(e){var i={r:0,g:0,b:0},a=1,l=null,c=null,u=null,f=!1,h=!1;\"string\"==typeof e&&(e=function(t){t=t.replace(r,\"\").replace(n,\"\").toLowerCase();var e,i=!1;if(S[t])t=S[t],i=!0;else if(\"transparent\"==t)return{r:0,g:0,b:0,a:0,format:\"name\"};if(e=j.rgb.exec(t))return{r:e[1],g:e[2],b:e[3]};if(e=j.rgba.exec(t))return{r:e[1],g:e[2],b:e[3],a:e[4]};if(e=j.hsl.exec(t))return{h:e[1],s:e[2],l:e[3]};if(e=j.hsla.exec(t))return{h:e[1],s:e[2],l:e[3],a:e[4]};if(e=j.hsv.exec(t))return{h:e[1],s:e[2],v:e[3]};if(e=j.hsva.exec(t))return{h:e[1],s:e[2],v:e[3],a:e[4]};if(e=j.hex8.exec(t))return{r:I(e[1]),g:I(e[2]),b:I(e[3]),a:R(e[4]),format:i?\"name\":\"hex8\"};if(e=j.hex6.exec(t))return{r:I(e[1]),g:I(e[2]),b:I(e[3]),format:i?\"name\":\"hex\"};if(e=j.hex4.exec(t))return{r:I(e[1]+\"\"+e[1]),g:I(e[2]+\"\"+e[2]),b:I(e[3]+\"\"+e[3]),a:R(e[4]+\"\"+e[4]),format:i?\"name\":\"hex8\"};if(e=j.hex3.exec(t))return{r:I(e[1]+\"\"+e[1]),g:I(e[2]+\"\"+e[2]),b:I(e[3]+\"\"+e[3]),format:i?\"name\":\"hex\"};return!1}(e));\"object\"==typeof e&&(U(e.r)&&U(e.g)&&U(e.b)?(p=e.r,d=e.g,g=e.b,i={r:255*C(p,255),g:255*C(d,255),b:255*C(g,255)},f=!0,h=\"%\"===String(e.r).substr(-1)?\"prgb\":\"rgb\"):U(e.h)&&U(e.s)&&U(e.v)?(l=z(e.s),c=z(e.v),i=function(e,r,n){e=6*C(e,360),r=C(r,100),n=C(n,100);var i=t.floor(e),a=e-i,o=n*(1-r),s=n*(1-a*r),l=n*(1-(1-a)*r),c=i%6;return{r:255*[n,s,o,o,l,n][c],g:255*[l,n,n,s,o,o][c],b:255*[o,o,l,n,n,s][c]}}(e.h,l,c),f=!0,h=\"hsv\"):U(e.h)&&U(e.s)&&U(e.l)&&(l=z(e.s),u=z(e.l),i=function(t,e,r){var n,i,a;function o(t,e,r){return r<0&&(r+=1),r>1&&(r-=1),r<1/6?t+6*(e-t)*r:r<.5?e:r<2/3?t+(e-t)*(2/3-r)*6:t}if(t=C(t,360),e=C(e,100),r=C(r,100),0===e)n=i=a=r;else{var s=r<.5?r*(1+e):r+e-r*e,l=2*r-s;n=o(l,s,t+1/3),i=o(l,s,t),a=o(l,s,t-1/3)}return{r:255*n,g:255*i,b:255*a}}(e.h,l,u),f=!0,h=\"hsl\"),e.hasOwnProperty(\"a\")&&(a=e.a));var p,d,g;return a=L(a),{ok:f,format:e.format||h,r:o(255,s(i.r,0)),g:o(255,s(i.g,0)),b:o(255,s(i.b,0)),a:a}}(e);this._originalInput=e,this._r=u.r,this._g=u.g,this._b=u.b,this._a=u.a,this._roundA=a(100*this._a)/100,this._format=l.format||u.format,this._gradientType=l.gradientType,this._r<1&&(this._r=a(this._r)),this._g<1&&(this._g=a(this._g)),this._b<1&&(this._b=a(this._b)),this._ok=u.ok,this._tc_id=i++}function u(t,e,r){t=C(t,255),e=C(e,255),r=C(r,255);var n,i,a=s(t,e,r),l=o(t,e,r),c=(a+l)/2;if(a==l)n=i=0;else{var u=a-l;switch(i=c>.5?u/(2-a-l):u/(a+l),a){case t:n=(e-r)/u+(e>1)+720)%360;--e;)n.h=(n.h+i)%360,a.push(c(n));return a}function M(t,e){e=e||6;for(var r=c(t).toHsv(),n=r.h,i=r.s,a=r.v,o=[],s=1/e;e--;)o.push(c({h:n,s:i,v:a})),a=(a+s)%1;return o}c.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var t=this.toRgb();return(299*t.r+587*t.g+114*t.b)/1e3},getLuminance:function(){var e,r,n,i=this.toRgb();return e=i.r/255,r=i.g/255,n=i.b/255,.2126*(e<=.03928?e/12.92:t.pow((e+.055)/1.055,2.4))+.7152*(r<=.03928?r/12.92:t.pow((r+.055)/1.055,2.4))+.0722*(n<=.03928?n/12.92:t.pow((n+.055)/1.055,2.4))},setAlpha:function(t){return this._a=L(t),this._roundA=a(100*this._a)/100,this},toHsv:function(){var t=f(this._r,this._g,this._b);return{h:360*t.h,s:t.s,v:t.v,a:this._a}},toHsvString:function(){var t=f(this._r,this._g,this._b),e=a(360*t.h),r=a(100*t.s),n=a(100*t.v);return 1==this._a?\"hsv(\"+e+\", \"+r+\"%, \"+n+\"%)\":\"hsva(\"+e+\", \"+r+\"%, \"+n+\"%, \"+this._roundA+\")\"},toHsl:function(){var t=u(this._r,this._g,this._b);return{h:360*t.h,s:t.s,l:t.l,a:this._a}},toHslString:function(){var t=u(this._r,this._g,this._b),e=a(360*t.h),r=a(100*t.s),n=a(100*t.l);return 1==this._a?\"hsl(\"+e+\", \"+r+\"%, \"+n+\"%)\":\"hsla(\"+e+\", \"+r+\"%, \"+n+\"%, \"+this._roundA+\")\"},toHex:function(t){return h(this._r,this._g,this._b,t)},toHexString:function(t){return\"#\"+this.toHex(t)},toHex8:function(t){return function(t,e,r,n,i){var o=[O(a(t).toString(16)),O(a(e).toString(16)),O(a(r).toString(16)),O(D(n))];if(i&&o[0].charAt(0)==o[0].charAt(1)&&o[1].charAt(0)==o[1].charAt(1)&&o[2].charAt(0)==o[2].charAt(1)&&o[3].charAt(0)==o[3].charAt(1))return o[0].charAt(0)+o[1].charAt(0)+o[2].charAt(0)+o[3].charAt(0);return o.join(\"\")}(this._r,this._g,this._b,this._a,t)},toHex8String:function(t){return\"#\"+this.toHex8(t)},toRgb:function(){return{r:a(this._r),g:a(this._g),b:a(this._b),a:this._a}},toRgbString:function(){return 1==this._a?\"rgb(\"+a(this._r)+\", \"+a(this._g)+\", \"+a(this._b)+\")\":\"rgba(\"+a(this._r)+\", \"+a(this._g)+\", \"+a(this._b)+\", \"+this._roundA+\")\"},toPercentageRgb:function(){return{r:a(100*C(this._r,255))+\"%\",g:a(100*C(this._g,255))+\"%\",b:a(100*C(this._b,255))+\"%\",a:this._a}},toPercentageRgbString:function(){return 1==this._a?\"rgb(\"+a(100*C(this._r,255))+\"%, \"+a(100*C(this._g,255))+\"%, \"+a(100*C(this._b,255))+\"%)\":\"rgba(\"+a(100*C(this._r,255))+\"%, \"+a(100*C(this._g,255))+\"%, \"+a(100*C(this._b,255))+\"%, \"+this._roundA+\")\"},toName:function(){return 0===this._a?\"transparent\":!(this._a<1)&&(E[h(this._r,this._g,this._b,!0)]||!1)},toFilter:function(t){var e=\"#\"+p(this._r,this._g,this._b,this._a),r=e,n=this._gradientType?\"GradientType = 1, \":\"\";if(t){var i=c(t);r=\"#\"+p(i._r,i._g,i._b,i._a)}return\"progid:DXImageTransform.Microsoft.gradient(\"+n+\"startColorstr=\"+e+\",endColorstr=\"+r+\")\"},toString:function(t){var e=!!t;t=t||this._format;var r=!1,n=this._a<1&&this._a>=0;return e||!n||\"hex\"!==t&&\"hex6\"!==t&&\"hex3\"!==t&&\"hex4\"!==t&&\"hex8\"!==t&&\"name\"!==t?(\"rgb\"===t&&(r=this.toRgbString()),\"prgb\"===t&&(r=this.toPercentageRgbString()),\"hex\"!==t&&\"hex6\"!==t||(r=this.toHexString()),\"hex3\"===t&&(r=this.toHexString(!0)),\"hex4\"===t&&(r=this.toHex8String(!0)),\"hex8\"===t&&(r=this.toHex8String()),\"name\"===t&&(r=this.toName()),\"hsl\"===t&&(r=this.toHslString()),\"hsv\"===t&&(r=this.toHsvString()),r||this.toHexString()):\"name\"===t&&0===this._a?this.toName():this.toRgbString()},clone:function(){return c(this.toString())},_applyModification:function(t,e){var r=t.apply(null,[this].concat([].slice.call(e)));return this._r=r._r,this._g=r._g,this._b=r._b,this.setAlpha(r._a),this},lighten:function(){return this._applyModification(v,arguments)},brighten:function(){return this._applyModification(y,arguments)},darken:function(){return this._applyModification(x,arguments)},desaturate:function(){return this._applyModification(d,arguments)},saturate:function(){return this._applyModification(g,arguments)},greyscale:function(){return this._applyModification(m,arguments)},spin:function(){return this._applyModification(b,arguments)},_applyCombination:function(t,e){return t.apply(null,[this].concat([].slice.call(e)))},analogous:function(){return this._applyCombination(A,arguments)},complement:function(){return this._applyCombination(_,arguments)},monochromatic:function(){return this._applyCombination(M,arguments)},splitcomplement:function(){return this._applyCombination(k,arguments)},triad:function(){return this._applyCombination(w,arguments)},tetrad:function(){return this._applyCombination(T,arguments)}},c.fromRatio=function(t,e){if(\"object\"==typeof t){var r={};for(var n in t)t.hasOwnProperty(n)&&(r[n]=\"a\"===n?t[n]:z(t[n]));t=r}return c(t,e)},c.equals=function(t,e){return!(!t||!e)&&c(t).toRgbString()==c(e).toRgbString()},c.random=function(){return c.fromRatio({r:l(),g:l(),b:l()})},c.mix=function(t,e,r){r=0===r?0:r||50;var n=c(t).toRgb(),i=c(e).toRgb(),a=r/100;return c({r:(i.r-n.r)*a+n.r,g:(i.g-n.g)*a+n.g,b:(i.b-n.b)*a+n.b,a:(i.a-n.a)*a+n.a})},c.readability=function(e,r){var n=c(e),i=c(r);return(t.max(n.getLuminance(),i.getLuminance())+.05)/(t.min(n.getLuminance(),i.getLuminance())+.05)},c.isReadable=function(t,e,r){var n,i,a=c.readability(t,e);switch(i=!1,(n=function(t){var e,r;e=((t=t||{level:\"AA\",size:\"small\"}).level||\"AA\").toUpperCase(),r=(t.size||\"small\").toLowerCase(),\"AA\"!==e&&\"AAA\"!==e&&(e=\"AA\");\"small\"!==r&&\"large\"!==r&&(r=\"small\");return{level:e,size:r}}(r)).level+n.size){case\"AAsmall\":case\"AAAlarge\":i=a>=4.5;break;case\"AAlarge\":i=a>=3;break;case\"AAAsmall\":i=a>=7}return i},c.mostReadable=function(t,e,r){var n,i,a,o,s=null,l=0;i=(r=r||{}).includeFallbackColors,a=r.level,o=r.size;for(var u=0;ul&&(l=n,s=c(e[u]));return c.isReadable(t,s,{level:a,size:o})||!i?s:(r.includeFallbackColors=!1,c.mostReadable(t,[\"#fff\",\"#000\"],r))};var S=c.names={aliceblue:\"f0f8ff\",antiquewhite:\"faebd7\",aqua:\"0ff\",aquamarine:\"7fffd4\",azure:\"f0ffff\",beige:\"f5f5dc\",bisque:\"ffe4c4\",black:\"000\",blanchedalmond:\"ffebcd\",blue:\"00f\",blueviolet:\"8a2be2\",brown:\"a52a2a\",burlywood:\"deb887\",burntsienna:\"ea7e5d\",cadetblue:\"5f9ea0\",chartreuse:\"7fff00\",chocolate:\"d2691e\",coral:\"ff7f50\",cornflowerblue:\"6495ed\",cornsilk:\"fff8dc\",crimson:\"dc143c\",cyan:\"0ff\",darkblue:\"00008b\",darkcyan:\"008b8b\",darkgoldenrod:\"b8860b\",darkgray:\"a9a9a9\",darkgreen:\"006400\",darkgrey:\"a9a9a9\",darkkhaki:\"bdb76b\",darkmagenta:\"8b008b\",darkolivegreen:\"556b2f\",darkorange:\"ff8c00\",darkorchid:\"9932cc\",darkred:\"8b0000\",darksalmon:\"e9967a\",darkseagreen:\"8fbc8f\",darkslateblue:\"483d8b\",darkslategray:\"2f4f4f\",darkslategrey:\"2f4f4f\",darkturquoise:\"00ced1\",darkviolet:\"9400d3\",deeppink:\"ff1493\",deepskyblue:\"00bfff\",dimgray:\"696969\",dimgrey:\"696969\",dodgerblue:\"1e90ff\",firebrick:\"b22222\",floralwhite:\"fffaf0\",forestgreen:\"228b22\",fuchsia:\"f0f\",gainsboro:\"dcdcdc\",ghostwhite:\"f8f8ff\",gold:\"ffd700\",goldenrod:\"daa520\",gray:\"808080\",green:\"008000\",greenyellow:\"adff2f\",grey:\"808080\",honeydew:\"f0fff0\",hotpink:\"ff69b4\",indianred:\"cd5c5c\",indigo:\"4b0082\",ivory:\"fffff0\",khaki:\"f0e68c\",lavender:\"e6e6fa\",lavenderblush:\"fff0f5\",lawngreen:\"7cfc00\",lemonchiffon:\"fffacd\",lightblue:\"add8e6\",lightcoral:\"f08080\",lightcyan:\"e0ffff\",lightgoldenrodyellow:\"fafad2\",lightgray:\"d3d3d3\",lightgreen:\"90ee90\",lightgrey:\"d3d3d3\",lightpink:\"ffb6c1\",lightsalmon:\"ffa07a\",lightseagreen:\"20b2aa\",lightskyblue:\"87cefa\",lightslategray:\"789\",lightslategrey:\"789\",lightsteelblue:\"b0c4de\",lightyellow:\"ffffe0\",lime:\"0f0\",limegreen:\"32cd32\",linen:\"faf0e6\",magenta:\"f0f\",maroon:\"800000\",mediumaquamarine:\"66cdaa\",mediumblue:\"0000cd\",mediumorchid:\"ba55d3\",mediumpurple:\"9370db\",mediumseagreen:\"3cb371\",mediumslateblue:\"7b68ee\",mediumspringgreen:\"00fa9a\",mediumturquoise:\"48d1cc\",mediumvioletred:\"c71585\",midnightblue:\"191970\",mintcream:\"f5fffa\",mistyrose:\"ffe4e1\",moccasin:\"ffe4b5\",navajowhite:\"ffdead\",navy:\"000080\",oldlace:\"fdf5e6\",olive:\"808000\",olivedrab:\"6b8e23\",orange:\"ffa500\",orangered:\"ff4500\",orchid:\"da70d6\",palegoldenrod:\"eee8aa\",palegreen:\"98fb98\",paleturquoise:\"afeeee\",palevioletred:\"db7093\",papayawhip:\"ffefd5\",peachpuff:\"ffdab9\",peru:\"cd853f\",pink:\"ffc0cb\",plum:\"dda0dd\",powderblue:\"b0e0e6\",purple:\"800080\",rebeccapurple:\"663399\",red:\"f00\",rosybrown:\"bc8f8f\",royalblue:\"4169e1\",saddlebrown:\"8b4513\",salmon:\"fa8072\",sandybrown:\"f4a460\",seagreen:\"2e8b57\",seashell:\"fff5ee\",sienna:\"a0522d\",silver:\"c0c0c0\",skyblue:\"87ceeb\",slateblue:\"6a5acd\",slategray:\"708090\",slategrey:\"708090\",snow:\"fffafa\",springgreen:\"00ff7f\",steelblue:\"4682b4\",tan:\"d2b48c\",teal:\"008080\",thistle:\"d8bfd8\",tomato:\"ff6347\",turquoise:\"40e0d0\",violet:\"ee82ee\",wheat:\"f5deb3\",white:\"fff\",whitesmoke:\"f5f5f5\",yellow:\"ff0\",yellowgreen:\"9acd32\"},E=c.hexNames=function(t){var e={};for(var r in t)t.hasOwnProperty(r)&&(e[t[r]]=r);return e}(S);function L(t){return t=parseFloat(t),(isNaN(t)||t<0||t>1)&&(t=1),t}function C(e,r){(function(t){return\"string\"==typeof t&&-1!=t.indexOf(\".\")&&1===parseFloat(t)})(e)&&(e=\"100%\");var n=function(t){return\"string\"==typeof t&&-1!=t.indexOf(\"%\")}(e);return e=o(r,s(0,parseFloat(e))),n&&(e=parseInt(e*r,10)/100),t.abs(e-r)<1e-6?1:e%r/parseFloat(r)}function P(t){return o(1,s(0,t))}function I(t){return parseInt(t,16)}function O(t){return 1==t.length?\"0\"+t:\"\"+t}function z(t){return t<=1&&(t=100*t+\"%\"),t}function D(e){return t.round(255*parseFloat(e)).toString(16)}function R(t){return I(t)/255}var F,B,N,j=(B=\"[\\\\s|\\\\(]+(\"+(F=\"(?:[-\\\\+]?\\\\d*\\\\.\\\\d+%?)|(?:[-\\\\+]?\\\\d+%?)\")+\")[,|\\\\s]+(\"+F+\")[,|\\\\s]+(\"+F+\")\\\\s*\\\\)?\",N=\"[\\\\s|\\\\(]+(\"+F+\")[,|\\\\s]+(\"+F+\")[,|\\\\s]+(\"+F+\")[,|\\\\s]+(\"+F+\")\\\\s*\\\\)?\",{CSS_UNIT:new RegExp(F),rgb:new RegExp(\"rgb\"+B),rgba:new RegExp(\"rgba\"+N),hsl:new RegExp(\"hsl\"+B),hsla:new RegExp(\"hsla\"+N),hsv:new RegExp(\"hsv\"+B),hsva:new RegExp(\"hsva\"+N),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/});function U(t){return!!j.CSS_UNIT.exec(t)}void 0!==e&&e.exports?e.exports=c:window.tinycolor=c}(Math)},{}],313:[function(t,e,r){\"use strict\";e.exports=i,e.exports.float32=e.exports.float=i,e.exports.fract32=e.exports.fract=function(t,e){if(t.length){if(t instanceof Float32Array)return new Float32Array(t.length);e instanceof Float32Array||(e=i(t));for(var r=0,n=e.length;ro&&(o=t[0]),t[1]s&&(s=t[1])}function c(t){switch(t.type){case\"GeometryCollection\":t.geometries.forEach(c);break;case\"Point\":l(t.coordinates);break;case\"MultiPoint\":t.coordinates.forEach(l)}}for(e in t.arcs.forEach((function(t){for(var e,r=-1,l=t.length;++ro&&(o=e[0]),e[1]s&&(s=e[1])})),t.objects)c(t.objects[e]);return[i,a,o,s]}function i(t,e){var r=e.id,n=e.bbox,i=null==e.properties?{}:e.properties,o=a(t,e);return null==r&&null==n?{type:\"Feature\",properties:i,geometry:o}:null==n?{type:\"Feature\",id:r,properties:i,geometry:o}:{type:\"Feature\",id:r,bbox:n,properties:i,geometry:o}}function a(t,e){var n=r(t.transform),i=t.arcs;function a(t,e){e.length&&e.pop();for(var r=i[t<0?~t:t],a=0,o=r.length;a1)n=l(t,e,r);else for(i=0,n=new Array(a=t.arcs.length);i1)for(var a,s,c=1,u=l(i[0]);cu&&(s=i[0],i[0]=i[c],i[c]=s,u=a);return i})).filter((function(t){return t.length>0}))}}function u(t,e){for(var r=0,n=t.length;r>>1;t[i]=2))throw new Error(\"n must be \\u22652\");var r,i=(l=t.bbox||n(t))[0],a=l[1],o=l[2],s=l[3];e={scale:[o-i?(o-i)/(r-1):1,s-a?(s-a)/(r-1):1],translate:[i,a]}}var l,c,u=f(e),h=t.objects,p={};function d(t){return u(t)}function g(t){var e;switch(t.type){case\"GeometryCollection\":e={type:\"GeometryCollection\",geometries:t.geometries.map(g)};break;case\"Point\":e={type:\"Point\",coordinates:d(t.coordinates)};break;case\"MultiPoint\":e={type:\"MultiPoint\",coordinates:t.coordinates.map(d)};break;default:return t}return null!=t.id&&(e.id=t.id),null!=t.bbox&&(e.bbox=t.bbox),null!=t.properties&&(e.properties=t.properties),e}for(c in h)p[c]=g(h[c]);return{type:\"Topology\",bbox:l,transform:e,objects:p,arcs:t.arcs.map((function(t){var e,r=0,n=1,i=t.length,a=new Array(i);for(a[0]=u(t[0],0);++r\":(e.length>100&&(e=e.slice(0,99)+\"\\u2026\"),e=e.replace(i,(function(t){switch(t){case\"\\n\":return\"\\\\n\";case\"\\r\":return\"\\\\r\";case\"\\u2028\":return\"\\\\u2028\";case\"\\u2029\":return\"\\\\u2029\";default:throw new Error(\"Unexpected character\")}})))}},{\"./safe-to-string\":318}],320:[function(t,e,r){\"use strict\";var n=t(\"../value/is\"),i={object:!0,function:!0,undefined:!0};e.exports=function(t){return!!n(t)&&hasOwnProperty.call(i,typeof t)}},{\"../value/is\":326}],321:[function(t,e,r){\"use strict\";var n=t(\"../lib/resolve-exception\"),i=t(\"./is\");e.exports=function(t){return i(t)?t:n(t,\"%v is not a plain function\",arguments[1])}},{\"../lib/resolve-exception\":317,\"./is\":322}],322:[function(t,e,r){\"use strict\";var n=t(\"../function/is\"),i=/^\\s*class[\\s{/}]/,a=Function.prototype.toString;e.exports=function(t){return!!n(t)&&!i.test(a.call(t))}},{\"../function/is\":316}],323:[function(t,e,r){\"use strict\";var n=t(\"../object/is\");e.exports=function(t){if(!n(t))return!1;try{return!!t.constructor&&t.constructor.prototype===t}catch(t){return!1}}},{\"../object/is\":320}],324:[function(t,e,r){\"use strict\";var n=t(\"../value/is\"),i=t(\"../object/is\"),a=Object.prototype.toString;e.exports=function(t){if(!n(t))return null;if(i(t)){var e=t.toString;if(\"function\"!=typeof e)return null;if(e===a)return null}try{return\"\"+t}catch(t){return null}}},{\"../object/is\":320,\"../value/is\":326}],325:[function(t,e,r){\"use strict\";var n=t(\"../lib/resolve-exception\"),i=t(\"./is\");e.exports=function(t){return i(t)?t:n(t,\"Cannot use %v\",arguments[1])}},{\"../lib/resolve-exception\":317,\"./is\":326}],326:[function(t,e,r){\"use strict\";e.exports=function(t){return null!=t}},{}],327:[function(t,e,r){(function(e){(function(){\"use strict\";var n=t(\"bit-twiddle\"),i=t(\"dup\"),a=t(\"buffer\").Buffer;e.__TYPEDARRAY_POOL||(e.__TYPEDARRAY_POOL={UINT8:i([32,0]),UINT16:i([32,0]),UINT32:i([32,0]),BIGUINT64:i([32,0]),INT8:i([32,0]),INT16:i([32,0]),INT32:i([32,0]),BIGINT64:i([32,0]),FLOAT:i([32,0]),DOUBLE:i([32,0]),DATA:i([32,0]),UINT8C:i([32,0]),BUFFER:i([32,0])});var o=\"undefined\"!=typeof Uint8ClampedArray,s=\"undefined\"!=typeof BigUint64Array,l=\"undefined\"!=typeof BigInt64Array,c=e.__TYPEDARRAY_POOL;c.UINT8C||(c.UINT8C=i([32,0])),c.BIGUINT64||(c.BIGUINT64=i([32,0])),c.BIGINT64||(c.BIGINT64=i([32,0])),c.BUFFER||(c.BUFFER=i([32,0]));var u=c.DATA,f=c.BUFFER;function h(t){if(t){var e=t.length||t.byteLength,r=n.log2(e);u[r].push(t)}}function p(t){t=n.nextPow2(t);var e=n.log2(t),r=u[e];return r.length>0?r.pop():new ArrayBuffer(t)}function d(t){return new Uint8Array(p(t),0,t)}function g(t){return new Uint16Array(p(2*t),0,t)}function m(t){return new Uint32Array(p(4*t),0,t)}function v(t){return new Int8Array(p(t),0,t)}function y(t){return new Int16Array(p(2*t),0,t)}function x(t){return new Int32Array(p(4*t),0,t)}function b(t){return new Float32Array(p(4*t),0,t)}function _(t){return new Float64Array(p(8*t),0,t)}function w(t){return o?new Uint8ClampedArray(p(t),0,t):d(t)}function T(t){return s?new BigUint64Array(p(8*t),0,t):null}function k(t){return l?new BigInt64Array(p(8*t),0,t):null}function A(t){return new DataView(p(t),0,t)}function M(t){t=n.nextPow2(t);var e=n.log2(t),r=f[e];return r.length>0?r.pop():new a(t)}r.free=function(t){if(a.isBuffer(t))f[n.log2(t.length)].push(t);else{if(\"[object ArrayBuffer]\"!==Object.prototype.toString.call(t)&&(t=t.buffer),!t)return;var e=t.length||t.byteLength,r=0|n.log2(e);u[r].push(t)}},r.freeUint8=r.freeUint16=r.freeUint32=r.freeBigUint64=r.freeInt8=r.freeInt16=r.freeInt32=r.freeBigInt64=r.freeFloat32=r.freeFloat=r.freeFloat64=r.freeDouble=r.freeUint8Clamped=r.freeDataView=function(t){h(t.buffer)},r.freeArrayBuffer=h,r.freeBuffer=function(t){f[n.log2(t.length)].push(t)},r.malloc=function(t,e){if(void 0===e||\"arraybuffer\"===e)return p(t);switch(e){case\"uint8\":return d(t);case\"uint16\":return g(t);case\"uint32\":return m(t);case\"int8\":return v(t);case\"int16\":return y(t);case\"int32\":return x(t);case\"float\":case\"float32\":return b(t);case\"double\":case\"float64\":return _(t);case\"uint8_clamped\":return w(t);case\"bigint64\":return k(t);case\"biguint64\":return T(t);case\"buffer\":return M(t);case\"data\":case\"dataview\":return A(t);default:return null}return null},r.mallocArrayBuffer=p,r.mallocUint8=d,r.mallocUint16=g,r.mallocUint32=m,r.mallocInt8=v,r.mallocInt16=y,r.mallocInt32=x,r.mallocFloat32=r.mallocFloat=b,r.mallocFloat64=r.mallocDouble=_,r.mallocUint8Clamped=w,r.mallocBigUint64=T,r.mallocBigInt64=k,r.mallocDataView=A,r.mallocBuffer=M,r.clearCache=function(){for(var t=0;t<32;++t)c.UINT8[t].length=0,c.UINT16[t].length=0,c.UINT32[t].length=0,c.INT8[t].length=0,c.INT16[t].length=0,c.INT32[t].length=0,c.FLOAT[t].length=0,c.DOUBLE[t].length=0,c.BIGUINT64[t].length=0,c.BIGINT64[t].length=0,c.UINT8C[t].length=0,u[t].length=0,f[t].length=0}}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"bit-twiddle\":81,buffer:85,dup:128}],328:[function(t,e,r){var n=/[\\'\\\"]/;e.exports=function(t){return t?(n.test(t.charAt(0))&&(t=t.substr(1)),n.test(t.charAt(t.length-1))&&(t=t.substr(0,t.length-1)),t):\"\"}},{}],329:[function(t,e,r){\"use strict\";e.exports=function(t,e,r){Array.isArray(r)||(r=[].slice.call(arguments,2));for(var n=0,i=r.length;n2111)throw e.replace(/\\{0\\}/,this.local.name);return t},toMonthIndex:function(t,e,r){var i=this.intercalaryMonth(t);if(r&&e!==i||e<1||e>12)throw n.local.invalidMonth.replace(/\\{0\\}/,this.local.name);return i?!r&&e<=i?e-1:e:e-1},toChineseMonth:function(t,e){t.year&&(e=(t=t.year()).month());var r=this.intercalaryMonth(t);if(e<0||e>(r?12:11))throw n.local.invalidMonth.replace(/\\{0\\}/,this.local.name);return r?e>13},isIntercalaryMonth:function(t,e){t.year&&(e=(t=t.year()).month());var r=this.intercalaryMonth(t);return!!r&&r===e},leap year:function(t){return 0!==this.intercalaryMonth(t)},weekOfYear:function(t,e,r){var i,o=this._validateYear(t,n.local.invalidyear),s=h[o-h[0]],l=s>>9&4095,c=s>>5&15,u=31&s;(i=a.newDate(l,c,u)).add(4-(i.dayOfWeek()||7),\"d\");var f=this.toJD(t,e,r)-i.toJD();return 1+Math.floor(f/7)},monthsInYear:function(t){return this.leap year(t)?13:12},daysInMonth:function(t,e){t.year&&(e=t.month(),t=t.year()),t=this._validateYear(t);var r=f[t-f[0]];if(e>(r>>13?12:11))throw n.local.invalidMonth.replace(/\\{0\\}/,this.local.name);return r&1<<12-e?30:29},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,s,r,n.local.invalidDate);t=this._validateYear(i.year()),e=i.month(),r=i.day();var o=this.isIntercalaryMonth(t,e),s=this.toChineseMonth(t,e),l=function(t,e,r,n,i){var a,o,s;if(\"object\"==typeof t)o=t,a=e||{};else{var l;if(!(\"number\"==typeof t&&t>=1888&&t<=2111))throw new Error(\"Lunar year outside range 1888-2111\");if(!(\"number\"==typeof e&&e>=1&&e<=12))throw new Error(\"Lunar month outside range 1 - 12\");if(!(\"number\"==typeof r&&r>=1&&r<=30))throw new Error(\"Lunar day outside range 1 - 30\");\"object\"==typeof n?(l=!1,a=n):(l=!!n,a=i||{}),o={year:t,month:e,day:r,isIntercalary:l}}s=o.day-1;var c,u=f[o.year-f[0]],p=u>>13;c=p&&(o.month>p||o.isIntercalary)?o.month:o.month-1;for(var d=0;d>9&4095,(g>>5&15)-1,(31&g)+s);return a.year=m.getFullYear(),a.month=1+m.getMonth(),a.day=m.getDate(),a}(t,s,r,o);return a.toJD(l.year,l.month,l.day)},fromJD:function(t){var e=a.fromJD(t),r=function(t,e,r,n){var i,a;if(\"object\"==typeof t)i=t,a=e||{};else{if(!(\"number\"==typeof t&&t>=1888&&t<=2111))throw new Error(\"Solar year outside range 1888-2111\");if(!(\"number\"==typeof e&&e>=1&&e<=12))throw new Error(\"Solar month outside range 1 - 12\");if(!(\"number\"==typeof r&&r>=1&&r<=31))throw new Error(\"Solar day outside range 1 - 31\");i={year:t,month:e,day:r},a=n||{}}var o=h[i.year-h[0]],s=i.year<<9|i.month<<5|i.day;a.year=s>=o?i.year:i.year-1,o=h[a.year-h[0]];var l,c=new Date(o>>9&4095,(o>>5&15)-1,31&o),u=new Date(i.year,i.month-1,i.day);l=Math.round((u-c)/864e5);var p,d=f[a.year-f[0]];for(p=0;p<13;p++){var g=d&1<<12-p?30:29;if(l>13;!m||p=2&&n<=6},extraInfo:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return{century:o[Math.floor((i.year()-1)/100)+1]||\"\"}},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return t=i.year()+(i.year()<0?1:0),e=i.month(),(r=i.day())+(e>1?16:0)+(e>2?32*(e-2):0)+400*(t-1)+this.jdEpoch-1},fromJD:function(t){t=Math.floor(t+.5)-Math.floor(this.jdEpoch)-1;var e=Math.floor(t/400)+1;t-=400*(e-1),t+=t>15?16:0;var r=Math.floor(t/32)+1,n=t-32*(r-1)+1;return this.newDate(e<=0?e-1:e,r,n)}});var o={20:\"Fruitbat\",21:\"Anchovy\"};n.calendars.discworld=a},{\"../main\":346,\"object-assign\":247}],335:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Ethiopian\",jdEpoch:1724220.5,daysPerMonth:[30,30,30,30,30,30,30,30,30,30,30,30,5],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Ethiopian\",epochs:[\"BEE\",\"EE\"],monthNames:[\"Meskerem\",\"Tikemet\",\"Hidar\",\"Tahesas\",\"Tir\",\"Yekatit\",\"Megabit\",\"Miazia\",\"Genbot\",\"Sene\",\"Hamle\",\"Nehase\",\"Pagume\"],monthNamesShort:[\"Mes\",\"Tik\",\"Hid\",\"Tah\",\"Tir\",\"Yek\",\"Meg\",\"Mia\",\"Gen\",\"Sen\",\"Ham\",\"Neh\",\"Pag\"],dayNames:[\"Ehud\",\"Segno\",\"Maksegno\",\"Irob\",\"Hamus\",\"Arb\",\"Kidame\"],dayNamesShort:[\"Ehu\",\"Seg\",\"Mak\",\"Iro\",\"Ham\",\"Arb\",\"Kid\"],dayNamesMin:[\"Eh\",\"Se\",\"Ma\",\"Ir\",\"Ha\",\"Ar\",\"Ki\"],digits:null,dateFormat:\"dd/mm/yyyy\",firstDay:0,isRTL:!1}},leap year:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return(t=e.year()+(e.year()<0?1:0))%4==3||t%4==-1},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear||n.regionalOptions[\"\"].invalidYear),13},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(13===r.month()&&this.leap year(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return(t=i.year())<0&&t++,i.day()+30*(i.month()-1)+365*(t-1)+Math.floor(t/4)+this.jdEpoch-1},fromJD:function(t){var e=Math.floor(t)+.5-this.jdEpoch,r=Math.floor((e-Math.floor((e+366)/1461))/365)+1;r<=0&&r--,e=Math.floor(t)+.5-this.newDate(r,1,1).toJD();var n=Math.floor(e/30)+1,i=e-30*(n-1)+1;return this.newDate(r,n,i)}}),n.calendars.ethiopian=a},{\"../main\":346,\"object-assign\":247}],336:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}function o(t,e){return t-e*Math.floor(t/e)}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Hebrew\",jdEpoch:347995.5,daysPerMonth:[30,29,30,29,30,29,30,29,30,29,30,29,29],hasYearZero:!1,minMonth:1,firstMonth:7,minDay:1,regionalOptions:{\"\":{name:\"Hebrew\",epochs:[\"BAM\",\"AM\"],monthNames:[\"Nisan\",\"Iyar\",\"Sivan\",\"Tammuz\",\"Av\",\"Elul\",\"Tishrei\",\"Cheshvan\",\"Kislev\",\"Tevet\",\"Shevat\",\"Adar\",\"Adar II\"],monthNamesShort:[\"Nis\",\"Iya\",\"Siv\",\"Tam\",\"Av\",\"Elu\",\"Tis\",\"Che\",\"Kis\",\"Tev\",\"She\",\"Ada\",\"Ad2\"],dayNames:[\"Yom Rishon\",\"Yom Sheni\",\"Yom Shlishi\",\"Yom Revi'i\",\"Yom Chamishi\",\"Yom Shishi\",\"Yom Shabbat\"],dayNamesShort:[\"Ris\",\"She\",\"Shl\",\"Rev\",\"Cha\",\"Shi\",\"Sha\"],dayNamesMin:[\"Ri\",\"She\",\"Shl\",\"Re\",\"Ch\",\"Shi\",\"Sha\"],digits:null,dateFormat:\"dd/mm/yyyy\",firstDay:0,isRTL:!1}},leap year:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return this._leapYear(e.year())},_leapYear:function(t){return o(7*(t=t<0?t+1:t)+1,19)<7},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear),this._leapYear(t.year?t.year():t)?13:12},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(t){return t=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear).year(),this.toJD(-1===t?1:t+1,7,1)-this.toJD(t,7,1)},daysInMonth:function(t,e){return t.year&&(e=t.month(),t=t.year()),this._validate(t,e,this.minDay,n.local.invalidMonth),12===e&&this.leap year(t)||8===e&&5===o(this.daysInYear(t),10)?30:9===e&&3===o(this.daysInYear(t),10)?29:this.daysPerMonth[e-1]},weekDay:function(t,e,r){return 6!==this.dayOfWeek(t,e,r)},extraInfo:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return{yearType:(this.leap year(i)?\"embolismic\":\"common\")+\" \"+[\"deficient\",\"regular\",\"complete\"][this.daysInYear(i)%10-3]}},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=i.year(),e=i.month(),r=i.day();var a=t<=0?t+1:t,o=this.jdEpoch+this._delay1(a)+this._delay2(a)+r+1;if(e<7){for(var s=7;s<=this.monthsInYear(t);s++)o+=this.daysInMonth(t,s);for(s=1;s=this.toJD(-1===e?1:e+1,7,1);)e++;for(var r=tthis.toJD(e,r,this.daysInMonth(e,r));)r++;var n=t-this.toJD(e,r,1)+1;return this.newDate(e,r,n)}}),n.calendars.hebrew=a},{\"../main\":346,\"object-assign\":247}],337:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Islamic\",jdEpoch:1948439.5,daysPerMonth:[30,29,30,29,30,29,30,29,30,29,30,29],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Islamic\",epochs:[\"BH\",\"AH\"],monthNames:[\"Muharram\",\"Safar\",\"Rabi' al-awwal\",\"Rabi' al-thani\",\"Jumada al-awwal\",\"Jumada al-thani\",\"Rajab\",\"Sha'aban\",\"Ramadan\",\"Shawwal\",\"Dhu al-Qi'dah\",\"Dhu al-Hijjah\"],monthNamesShort:[\"Muh\",\"Saf\",\"Rab1\",\"Rab2\",\"Jum1\",\"Jum2\",\"Raj\",\"Sha'\",\"Ram\",\"Shaw\",\"DhuQ\",\"DhuH\"],dayNames:[\"Yawm al-ahad\",\"Yawm al-ithnayn\",\"Yawm ath-thulaathaa'\",\"Yawm al-arbi'aa'\",\"Yawm al-kham\\u012bs\",\"Yawm al-jum'a\",\"Yawm as-sabt\"],dayNamesShort:[\"Aha\",\"Ith\",\"Thu\",\"Arb\",\"Kha\",\"Jum\",\"Sab\"],dayNamesMin:[\"Ah\",\"It\",\"Th\",\"Ar\",\"Kh\",\"Ju\",\"Sa\"],digits:null,dateFormat:\"yyyy/mm/dd\",firstDay:6,isRTL:!1}},leap year:function(t){return(11*this._validate(t,this.minMonth,this.minDay,n.local.invalidYear).year()+14)%30<11},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(t){return this.leap year(t)?355:354},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(12===r.month()&&this.leap year(r.year())?1:0)},weekDay:function(t,e,r){return 5!==this.dayOfWeek(t,e,r)},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return t=i.year(),e=i.month(),t=t<=0?t+1:t,(r=i.day())+Math.ceil(29.5*(e-1))+354*(t-1)+Math.floor((3+11*t)/30)+this.jdEpoch-1},fromJD:function(t){t=Math.floor(t)+.5;var e=Math.floor((30*(t-this.jdEpoch)+10646)/10631);e=e<=0?e-1:e;var r=Math.min(12,Math.ceil((t-29-this.toJD(e,1,1))/29.5)+1),n=t-this.toJD(e,r,1)+1;return this.newDate(e,r,n)}}),n.calendars.islamic=a},{\"../main\":346,\"object-assign\":247}],338:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Julian\",jdEpoch:1721423.5,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Julian\",epochs:[\"BC\",\"AD\"],monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],dayNamesShort:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],dayNamesMin:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],digits:null,dateFormat:\"mm/dd/yyyy\",firstDay:0,isRTL:!1}},leap year:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return(t=e.year()<0?e.year()+1:e.year())%4==0},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(4-(n.dayOfWeek()||7),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(2===r.month()&&this.leap year(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return t=i.year(),e=i.month(),r=i.day(),t<0&&t++,e<=2&&(t--,e+=12),Math.floor(365.25*(t+4716))+Math.floor(30.6001*(e+1))+r-1524.5},fromJD:function(t){var e=Math.floor(t+.5)+1524,r=Math.floor((e-122.1)/365.25),n=Math.floor(365.25*r),i=Math.floor((e-n)/30.6001),a=i-Math.floor(i<14?1:13),o=r-Math.floor(a>2?4716:4715),s=e-n-Math.floor(30.6001*i);return o<=0&&o--,this.newDate(o,a,s)}}),n.calendars.julian=a},{\"../main\":346,\"object-assign\":247}],339:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}function o(t,e){return t-e*Math.floor(t/e)}function s(t,e){return o(t-1,e)+1}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Mayan\",jdEpoch:584282.5,hasYearZero:!0,minMonth:0,firstMonth:0,minDay:0,regionalOptions:{\"\":{name:\"Mayan\",epochs:[\"\",\"\"],monthNames:[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\"],monthNamesShort:[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\"],dayNames:[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\"],dayNamesShort:[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\"],dayNamesMin:[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\"],digits:null,dateFormat:\"YYYY.m.d\",firstDay:0,isRTL:!1,haabMonths:[\"Pop\",\"Uo\",\"Zip\",\"Zotz\",\"Tzec\",\"Xul\",\"Yaxkin\",\"Mol\",\"Chen\",\"Yax\",\"Zac\",\"Ceh\",\"Mac\",\"Kankin\",\"Muan\",\"Pax\",\"Kayab\",\"Cumku\",\"Uayeb\"],tzolkinMonths:[\"Imix\",\"Ik\",\"Akbal\",\"Kan\",\"Chicchan\",\"Cimi\",\"Manik\",\"Lamat\",\"Muluc\",\"Oc\",\"Chuen\",\"Eb\",\"Ben\",\"Ix\",\"Men\",\"Cib\",\"Caban\",\"Etznab\",\"Cauac\",\"Ahau\"]}},leap year:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear),!1},formatYear:function(t){t=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear).year();var e=Math.floor(t/400);return t%=400,t+=t<0?400:0,e+\".\"+Math.floor(t/20)+\".\"+t%20},forYear:function(t){if((t=t.split(\".\")).length<3)throw\"Invalid Mayan year\";for(var e=0,r=0;r19||r>0&&n<0)throw\"Invalid Mayan year\";e=20*e+n}return e},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear),18},weekOfYear:function(t,e,r){return this._validate(t,e,r,n.local.invalidDate),0},daysInYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear),360},daysInMonth:function(t,e){return this._validate(t,e,this.minDay,n.local.invalidMonth),20},daysInWeek:function(){return 5},dayOfWeek:function(t,e,r){return this._validate(t,e,r,n.local.invalidDate).day()},weekDay:function(t,e,r){return this._validate(t,e,r,n.local.invalidDate),!0},extraInfo:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate).toJD(),a=this._toHaab(i),o=this._toTzolkin(i);return{haabMonthName:this.local.haabMonths[a[0]-1],haabMonth:a[0],haabDay:a[1],tzolkinDayName:this.local.tzolkinMonths[o[0]-1],tzolkinDay:o[0],tzolkinTrecena:o[1]}},_toHaab:function(t){var e=o((t-=this.jdEpoch)+8+340,365);return[Math.floor(e/20)+1,o(e,20)]},_toTzolkin:function(t){return[s((t-=this.jdEpoch)+20,20),s(t+4,13)]},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return i.day()+20*i.month()+360*i.year()+this.jdEpoch},fromJD:function(t){t=Math.floor(t)+.5-this.jdEpoch;var e=Math.floor(t/360);t%=360,t+=t<0?360:0;var r=Math.floor(t/20),n=t%20;return this.newDate(e,r,n)}}),n.calendars.mayan=a},{\"../main\":346,\"object-assign\":247}],340:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar;var o=n.instance(\"gregorian\");i(a.prototype,{name:\"Nanakshahi\",jdEpoch:2257673.5,daysPerMonth:[31,31,31,31,31,30,30,30,30,30,30,30],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Nanakshahi\",epochs:[\"BN\",\"AN\"],monthNames:[\"Chet\",\"Vaisakh\",\"Jeth\",\"Harh\",\"Sawan\",\"Bhadon\",\"Assu\",\"Katak\",\"Maghar\",\"Poh\",\"Magh\",\"Phagun\"],monthNamesShort:[\"Che\",\"Vai\",\"Jet\",\"Har\",\"Saw\",\"Bha\",\"Ass\",\"Kat\",\"Mgr\",\"Poh\",\"Mgh\",\"Pha\"],dayNames:[\"Somvaar\",\"Mangalvar\",\"Budhvaar\",\"Veervaar\",\"Shukarvaar\",\"Sanicharvaar\",\"Etvaar\"],dayNamesShort:[\"Some\",\"Mangal\",\"Budh\",\"Veer\",\"Shukar\",\"Sanichar\",\"Et\"],dayNamesMin:[\"So\",\"Ma\",\"Bu\",\"Ve\",\"Sh\",\"Sa\",\"Et\"],digits:null,dateFormat:\"dd-mm-yyyy\",firstDay:0,isRTL:!1}},leap year:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear||n.regionalOptions[\"\"].invalidYear);return o.leap year(e.year()+(e.year()<1?1:0)+1469)},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(1-(n.dayOfWeek()||7),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(12===r.month()&&this.leap year(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidMonth);(t=i.year())<0&&t++;for(var a=i.day(),s=1;s=this.toJD(e+1,1,1);)e++;for(var r=t-Math.floor(this.toJD(e,1,1)+.5)+1,n=1;r>this.daysInMonth(e,n);)r-=this.daysInMonth(e,n),n++;return this.newDate(e,n,r)}}),n.calendars.nanakshahi=a},{\"../main\":346,\"object-assign\":247}],341:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"Nepali\",jdEpoch:1700709.5,daysPerMonth:[31,31,32,32,31,30,30,29,30,29,30,30],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,daysPerYear:365,regionalOptions:{\"\":{name:\"Nepali\",epochs:[\"BBS\",\"ABS\"],monthNames:[\"Baisakh\",\"Jestha\",\"Ashadh\",\"Shrawan\",\"Bhadra\",\"Ashwin\",\"Kartik\",\"Mangsir\",\"Paush\",\"Mangh\",\"Falgun\",\"Chaitra\"],monthNamesShort:[\"Bai\",\"Je\",\"As\",\"Shra\",\"Bha\",\"Ash\",\"Kar\",\"Mang\",\"Pau\",\"Ma\",\"Fal\",\"Chai\"],dayNames:[\"Aaitabaar\",\"Sombaar\",\"Manglbaar\",\"Budhabaar\",\"Bihibaar\",\"Shukrabaar\",\"Shanibaar\"],dayNamesShort:[\"Aaita\",\"Some\",\"Mangl\",\"Budha\",\"Bihi\",\"Shukra\",\"Shani\"],dayNamesMin:[\"Aai\",\"So\",\"Man\",\"Bu\",\"Bi\",\"Shu\",\"Sha\"],digits:null,dateFormat:\"dd/mm/yyyy\",firstDay:1,isRTL:!1}},leap year:function(t){return this.daysInYear(t)!==this.daysPerYear},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(t){if(t=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear).year(),void 0===this.NEPALI_CALENDAR_DATA[t])return this.daysPerYear;for(var e=0,r=this.minMonth;r<=12;r++)e+=this.NEPALI_CALENDAR_DATA[t][r];return e},daysInMonth:function(t,e){return t.year&&(e=t.month(),t=t.year()),this._validate(t,e,this.minDay,n.local.invalidMonth),void 0===this.NEPALI_CALENDAR_DATA[t]?this.daysPerMonth[e-1]:this.NEPALI_CALENDAR_DATA[t][e]},weekDay:function(t,e,r){return 6!==this.dayOfWeek(t,e,r)},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=i.year(),e=i.month(),r=i.day();var a=n.instance(),o=0,s=e,l=t;this._createMissingCalendarData(t);var c=t-(s>9||9===s&&r>=this.NEPALI_CALENDAR_DATA[l][0]?56:57);for(9!==e&&(o=r,s--);9!==s;)s<=0&&(s=12,l--),o+=this.NEPALI_CALENDAR_DATA[l][s],s--;return 9===e?(o+=r-this.NEPALI_CALENDAR_DATA[l][0])<0&&(o+=a.daysInYear(c)):o+=this.NEPALI_CALENDAR_DATA[l][9]-this.NEPALI_CALENDAR_DATA[l][0],a.newDate(c,1,1).add(o,\"d\").toJD()},fromJD:function(t){var e=n.instance().fromJD(t),r=e.year(),i=e.dayOfYear(),a=r+56;this._createMissingCalendarData(a);for(var o=9,s=this.NEPALI_CALENDAR_DATA[a][0],l=this.NEPALI_CALENDAR_DATA[a][o]-s+1;i>l;)++o>12&&(o=1,a++),l+=this.NEPALI_CALENDAR_DATA[a][o];var c=this.NEPALI_CALENDAR_DATA[a][o]-(l-i);return this.newDate(a,o,c)},_createMissingCalendarData:function(t){var e=this.daysPerMonth.slice(0);e.unshift(17);for(var r=t-1;r0?474:473))%2820+474+38)%2816<682},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-(n.dayOfWeek()+1)%7,\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(12===r.month()&&this.leap year(r.year())?1:0)},weekDay:function(t,e,r){return 5!==this.dayOfWeek(t,e,r)},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=i.year(),e=i.month(),r=i.day();var a=t-(t>=0?474:473),s=474+o(a,2820);return r+(e<=7?31*(e-1):30*(e-1)+6)+Math.floor((682*s-110)/2816)+365*(s-1)+1029983*Math.floor(a/2820)+this.jdEpoch-1},fromJD:function(t){var e=(t=Math.floor(t)+.5)-this.toJD(475,1,1),r=Math.floor(e/1029983),n=o(e,1029983),i=2820;if(1029982!==n){var a=Math.floor(n/366),s=o(n,366);i=Math.floor((2134*a+2816*s+2815)/1028522)+a+1}var l=i+2820*r+474;l=l<=0?l-1:l;var c=t-this.toJD(l,1,1)+1,u=c<=186?Math.ceil(c/31):Math.ceil((c-6)/30),f=t-this.toJD(l,u,1)+1;return this.newDate(l,u,f)}}),n.calendars.persian=a,n.calendars.jalali=a},{\"../main\":346,\"object-assign\":247}],343:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\"),a=n.instance();function o(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}o.prototype=new n.baseCalendar,i(o.prototype,{name:\"Taiwan\",jdEpoch:2419402.5,yearsOffset:1911,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Taiwan\",epochs:[\"BROC\",\"ROC\"],monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],dayNamesShort:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],dayNamesMin:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],digits:null,dateFormat:\"yyyy/mm/dd\",firstDay:1,isRTL:!1}},leap year:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);t=this._t2gYear(e.year());return a.leap year(t)},weekOfYear:function(t,e,r){var i=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);t=this._t2gYear(i.year());return a.weekOfYear(t,i.month(),i.day())},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(2===r.month()&&this.leap year(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=this._t2gYear(i.year());return a.toJD(t,i.month(),i.day())},fromJD:function(t){var e=a.fromJD(t),r=this._g2tYear(e.year());return this.newDate(r,e.month(),e.day())},_t2gYear:function(t){return t+this.yearsOffset+(t>=-this.yearsOffset&&t<=-1?1:0)},_g2tYear:function(t){return t-this.yearsOffset-(t>=1&&t<=this.yearsOffset?1:0)}}),n.calendars.taiwan=o},{\"../main\":346,\"object-assign\":247}],344:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\"),a=n.instance();function o(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}o.prototype=new n.baseCalendar,i(o.prototype,{name:\"Thai\",jdEpoch:1523098.5,yearsOffset:543,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Thai\",epochs:[\"BBE\",\"BE\"],monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],dayNamesShort:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],dayNamesMin:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],digits:null,dateFormat:\"dd/mm/yyyy\",firstDay:0,isRTL:!1}},leap year:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);t=this._t2gYear(e.year());return a.leap year(t)},weekOfYear:function(t,e,r){var i=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);t=this._t2gYear(i.year());return a.weekOfYear(t,i.month(),i.day())},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(2===r.month()&&this.leap year(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=this._t2gYear(i.year());return a.toJD(t,i.month(),i.day())},fromJD:function(t){var e=a.fromJD(t),r=this._g2tYear(e.year());return this.newDate(r,e.month(),e.day())},_t2gYear:function(t){return t-this.yearsOffset-(t>=1&&t<=this.yearsOffset?1:0)},_g2tYear:function(t){return t+this.yearsOffset+(t>=-this.yearsOffset&&t<=-1?1:0)}}),n.calendars.thai=o},{\"../main\":346,\"object-assign\":247}],345:[function(t,e,r){var n=t(\"../main\"),i=t(\"object-assign\");function a(t){this.local=this.regionalOptions[t||\"\"]||this.regionalOptions[\"\"]}a.prototype=new n.baseCalendar,i(a.prototype,{name:\"UmmAlQura\",hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{\"\":{name:\"Umm al-Qura\",epochs:[\"BH\",\"AH\"],monthNames:[\"Al-Muharram\",\"Safar\",\"Rabi' al-awwal\",\"Rabi' Al-Thani\",\"Jumada Al-Awwal\",\"Jumada Al-Thani\",\"Rajab\",\"Sha'aban\",\"Ramadan\",\"Shawwal\",\"Dhu al-Qi'dah\",\"Dhu al-Hijjah\"],monthNamesShort:[\"Muh\",\"Saf\",\"Rab1\",\"Rab2\",\"Jum1\",\"Jum2\",\"Raj\",\"Sha'\",\"Ram\",\"Shaw\",\"DhuQ\",\"DhuH\"],dayNames:[\"Yawm al-Ahad\",\"Yawm al-Ithnain\",\"Yawm al-Thal\\u0101th\\u0101\\u2019\",\"Yawm al-Arba\\u2018\\u0101\\u2019\",\"Yawm al-Kham\\u012bs\",\"Yawm al-Jum\\u2018a\",\"Yawm al-Sabt\"],dayNamesMin:[\"Ah\",\"Ith\",\"Th\",\"Ar\",\"Kh\",\"Ju\",\"Sa\"],digits:null,dateFormat:\"yyyy/mm/dd\",firstDay:6,isRTL:!0}},leap year:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return 355===this.daysInYear(e.year())},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),\"d\"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(t){for(var e=0,r=1;r<=12;r++)e+=this.daysInMonth(t,r);return e},daysInMonth:function(t,e){for(var r=this._validate(t,e,this.minDay,n.local.invalidMonth).toJD()-24e5+.5,i=0,a=0;ar)return o[i]-o[i-1];i++}return 30},weekDay:function(t,e,r){return 5!==this.dayOfWeek(t,e,r)},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate),a=12*(i.year()-1)+i.month()-15292;return i.day()+o[a-1]-1+24e5-.5},fromJD:function(t){for(var e=t-24e5+.5,r=0,n=0;ne);n++)r++;var i=r+15292,a=Math.floor((i-1)/12),s=a+1,l=i-12*a,c=e-o[r-1]+1;return this.newDate(s,l,c)},isValid:function(t,e,r){var i=n.baseCalendar.prototype.isValid.apply(this,arguments);return i&&(i=(t=null!=t.year?t.year:t)>=1276&&t<=1500),i},_validate:function(t,e,r,i){var a=n.baseCalendar.prototype._validate.apply(this,arguments);if(a.year<1276||a.year>1500)throw i.replace(/\\{0\\}/,this.local.name);return a}}),n.calendars.ummalqura=a;var o=[20,50,79,109,138,168,197,227,256,286,315,345,374,404,433,463,492,522,551,581,611,641,670,700,729,759,788,818,847,877,906,936,965,995,1024,1054,1083,1113,1142,1172,1201,1231,1260,1290,1320,1350,1379,1409,1438,1468,1497,1527,1556,1586,1615,1645,1674,1704,1733,1763,1792,1822,1851,1881,1910,1940,1969,1999,2028,2058,2087,2117,2146,2176,2205,2235,2264,2294,2323,2353,2383,2413,2442,2472,2501,2531,2560,2590,2619,2649,2678,2708,2737,2767,2796,2826,2855,2885,2914,2944,2973,3003,3032,3062,3091,3121,3150,3180,3209,3239,3268,3298,3327,3357,3386,3416,3446,3476,3505,3535,3564,3594,3623,3653,3682,3712,3741,3771,3800,3830,3859,3889,3918,3948,3977,4007,4036,4066,4095,4125,4155,4185,4214,4244,4273,4303,4332,4362,4391,4421,4450,4480,4509,4539,4568,4598,4627,4657,4686,4716,4745,4775,4804,4834,4863,4893,4922,4952,4981,5011,5040,5070,5099,5129,5158,5188,5218,5248,5277,5307,5336,5366,5395,5425,5454,5484,5513,5543,5572,5602,5631,5661,5690,5720,5749,5779,5808,5838,5867,5897,5926,5956,5985,6015,6044,6074,6103,6133,6162,6192,6221,6251,6281,6311,6340,6370,6399,6429,6458,6488,6517,6547,6576,6606,6635,6665,6694,6724,6753,6783,6812,6842,6871,6901,6930,6960,6989,7019,7048,7078,7107,7137,7166,7196,7225,7255,7284,7314,7344,7374,7403,7433,7462,7492,7521,7551,7580,7610,7639,7669,7698,7728,7757,7787,7816,7846,7875,7905,7934,7964,7993,8023,8053,8083,8112,8142,8171,8201,8230,8260,8289,8319,8348,8378,8407,8437,8466,8496,8525,8555,8584,8614,8643,8673,8702,8732,8761,8791,8821,8850,8880,8909,8938,8968,8997,9027,9056,9086,9115,9145,9175,9205,9234,9264,9293,9322,9352,9381,9410,9440,9470,9499,9529,9559,9589,9618,9648,9677,9706,9736,9765,9794,9824,9853,9883,9913,9943,9972,10002,10032,10061,10090,10120,10149,10178,10208,10237,10267,10297,10326,10356,10386,10415,10445,10474,10504,10533,10562,10592,10621,10651,10680,10710,10740,10770,10799,10829,10858,10888,10917,10947,10976,11005,11035,11064,11094,11124,11153,11183,11213,11242,11272,11301,11331,11360,11389,11419,11448,11478,11507,11537,11567,11596,11626,11655,11685,11715,11744,11774,11803,11832,11862,11891,11921,11950,11980,12010,12039,12069,12099,12128,12158,12187,12216,12246,12275,12304,12334,12364,12393,12423,12453,12483,12512,12542,12571,12600,12630,12659,12688,12718,12747,12777,12807,12837,12866,12896,12926,12955,12984,13014,13043,13072,13102,13131,13161,13191,13220,13250,13280,13310,13339,13368,13398,13427,13456,13486,13515,13545,13574,13604,13634,13664,13693,13723,13752,13782,13811,13840,13870,13899,13929,13958,13988,14018,14047,14077,14107,14136,14166,14195,14224,14254,14283,14313,14342,14372,14401,14431,14461,14490,14520,14550,14579,14609,14638,14667,14697,14726,14756,14785,14815,14844,14874,14904,14933,14963,14993,15021,15051,15081,15110,15140,15169,15199,15228,15258,15287,15317,15347,15377,15406,15436,15465,15494,15524,15553,15582,15612,15641,15671,15701,15731,15760,15790,15820,15849,15878,15908,15937,15966,15996,16025,16055,16085,16114,16144,16174,16204,16233,16262,16292,16321,16350,16380,16409,16439,16468,16498,16528,16558,16587,16617,16646,16676,16705,16734,16764,16793,16823,16852,16882,16912,16941,16971,17001,17030,17060,17089,17118,17148,17177,17207,17236,17266,17295,17325,17355,17384,17414,17444,17473,17502,17532,17561,17591,17620,17650,17679,17709,17738,17768,17798,17827,17857,17886,17916,17945,17975,18004,18034,18063,18093,18122,18152,18181,18211,18241,18270,18300,18330,18359,18388,18418,18447,18476,18506,18535,18565,18595,18625,18654,18684,18714,18743,18772,18802,18831,18860,18890,18919,18949,18979,19008,19038,19068,19098,19127,19156,19186,19215,19244,19274,19303,19333,19362,19392,19422,19452,19481,19511,19540,19570,19599,19628,19658,19687,19717,19746,19776,19806,19836,19865,19895,19924,19954,19983,20012,20042,20071,20101,20130,20160,20190,20219,20249,20279,20308,20338,20367,20396,20426,20455,20485,20514,20544,20573,20603,20633,20662,20692,20721,20751,20780,20810,20839,20869,20898,20928,20957,20987,21016,21046,21076,21105,21135,21164,21194,21223,21253,21282,21312,21341,21371,21400,21430,21459,21489,21519,21548,21578,21607,21637,21666,21696,21725,21754,21784,21813,21843,21873,21902,21932,21962,21991,22021,22050,22080,22109,22138,22168,22197,22227,22256,22286,22316,22346,22375,22405,22434,22464,22493,22522,22552,22581,22611,22640,22670,22700,22730,22759,22789,22818,22848,22877,22906,22936,22965,22994,23024,23054,23083,23113,23143,23173,23202,23232,23261,23290,23320,23349,23379,23408,23438,23467,23497,23527,23556,23586,23616,23645,23674,23704,23733,23763,23792,23822,23851,23881,23910,23940,23970,23999,24029,24058,24088,24117,24147,24176,24206,24235,24265,24294,24324,24353,24383,24413,24442,24472,24501,24531,24560,24590,24619,24648,24678,24707,24737,24767,24796,24826,24856,24885,24915,24944,24974,25003,25032,25062,25091,25121,25150,25180,25210,25240,25269,25299,25328,25358,25387,25416,25446,25475,25505,25534,25564,25594,25624,25653,25683,25712,25742,25771,25800,25830,25859,25888,25918,25948,25977,26007,26037,26067,26096,26126,26155,26184,26214,26243,26272,26302,26332,26361,26391,26421,26451,26480,26510,26539,26568,26598,26627,26656,26686,26715,26745,26775,26805,26834,26864,26893,26923,26952,26982,27011,27041,27070,27099,27129,27159,27188,27218,27248,27277,27307,27336,27366,27395,27425,27454,27484,27513,27542,27572,27602,27631,27661,27691,27720,27750,27779,27809,27838,27868,27897,27926,27956,27985,28015,28045,28074,28104,28134,28163,28193,28222,28252,28281,28310,28340,28369,28399,28428,28458,28488,28517,28547,28577,28607,28636,28665,28695,28724,28754,28783,28813,28843,28872,28901,28931,28960,28990,29019,29049,29078,29108,29137,29167,29196,29226,29255,29285,29315,29345,29375,29404,29434,29463,29492,29522,29551,29580,29610,29640,29669,29699,29729,29759,29788,29818,29847,29876,29906,29935,29964,29994,30023,30053,30082,30112,30141,30171,30200,30230,30259,30289,30318,30348,30378,30408,30437,30467,30496,30526,30555,30585,30614,30644,30673,30703,30732,30762,30791,30821,30850,30880,30909,30939,30968,30998,31027,31057,31086,31116,31145,31175,31204,31234,31263,31293,31322,31352,31381,31411,31441,31471,31500,31530,31559,31589,31618,31648,31676,31706,31736,31766,31795,31825,31854,31884,31913,31943,31972,32002,32031,32061,32090,32120,32150,32180,32209,32239,32268,32298,32327,32357,32386,32416,32445,32475,32504,32534,32563,32593,32622,32652,32681,32711,32740,32770,32799,32829,32858,32888,32917,32947,32976,33006,33035,33065,33094,33124,33153,33183,33213,33243,33272,33302,33331,33361,33390,33420,33450,33479,33509,33539,33568,33598,33627,33657,33686,33716,33745,33775,33804,33834,33863,33893,33922,33952,33981,34011,34040,34069,34099,34128,34158,34187,34217,34247,34277,34306,34336,34365,34395,34424,34454,34483,34512,34542,34571,34601,34631,34660,34690,34719,34749,34778,34808,34837,34867,34896,34926,34955,34985,35015,35044,35074,35103,35133,35162,35192,35222,35251,35280,35310,35340,35370,35399,35429,35458,35488,35517,35547,35576,35605,35635,35665,35694,35723,35753,35782,35811,35841,35871,35901,35930,35960,35989,36019,36048,36078,36107,36136,36166,36195,36225,36254,36284,36314,36343,36373,36403,36433,36462,36492,36521,36551,36580,36610,36639,36669,36698,36728,36757,36786,36816,36845,36875,36904,36934,36963,36993,37022,37052,37081,37111,37141,37170,37200,37229,37259,37288,37318,37347,37377,37406,37436,37465,37495,37524,37554,37584,37613,37643,37672,37701,37731,37760,37790,37819,37849,37878,37908,37938,37967,37997,38027,38056,38085,38115,38144,38174,38203,38233,38262,38292,38322,38351,38381,38410,38440,38469,38499,38528,38558,38587,38617,38646,38676,38705,38735,38764,38794,38823,38853,38882,38912,38941,38971,39001,39030,39059,39089,39118,39148,39178,39208,39237,39267,39297,39326,39355,39385,39414,39444,39473,39503,39532,39562,39592,39621,39650,39680,39709,39739,39768,39798,39827,39857,39886,39916,39946,39975,40005,40035,40064,40094,40123,40153,40182,40212,40241,40271,40300,40330,40359,40389,40418,40448,40477,40507,40536,40566,40595,40625,40655,40685,40714,40744,40773,40803,40832,40862,40892,40921,40951,40980,41009,41039,41068,41098,41127,41157,41186,41216,41245,41275,41304,41334,41364,41393,41422,41452,41481,41511,41540,41570,41599,41629,41658,41688,41718,41748,41777,41807,41836,41865,41894,41924,41953,41983,42012,42042,42072,42102,42131,42161,42190,42220,42249,42279,42308,42337,42367,42397,42426,42456,42485,42515,42545,42574,42604,42633,42662,42692,42721,42751,42780,42810,42839,42869,42899,42929,42958,42988,43017,43046,43076,43105,43135,43164,43194,43223,43253,43283,43312,43342,43371,43401,43430,43460,43489,43519,43548,43578,43607,43637,43666,43696,43726,43755,43785,43814,43844,43873,43903,43932,43962,43991,44021,44050,44080,44109,44139,44169,44198,44228,44258,44287,44317,44346,44375,44405,44434,44464,44493,44523,44553,44582,44612,44641,44671,44700,44730,44759,44788,44818,44847,44877,44906,44936,44966,44996,45025,45055,45084,45114,45143,45172,45202,45231,45261,45290,45320,45350,45380,45409,45439,45468,45498,45527,45556,45586,45615,45644,45674,45704,45733,45763,45793,45823,45852,45882,45911,45940,45970,45999,46028,46058,46088,46117,46147,46177,46206,46236,46265,46295,46324,46354,46383,46413,46442,46472,46501,46531,46560,46590,46620,46649,46679,46708,46738,46767,46797,46826,46856,46885,46915,46944,46974,47003,47033,47063,47092,47122,47151,47181,47210,47240,47269,47298,47328,47357,47387,47417,47446,47476,47506,47535,47565,47594,47624,47653,47682,47712,47741,47771,47800,47830,47860,47890,47919,47949,47978,48008,48037,48066,48096,48125,48155,48184,48214,48244,48273,48303,48333,48362,48392,48421,48450,48480,48509,48538,48568,48598,48627,48657,48687,48717,48746,48776,48805,48834,48864,48893,48922,48952,48982,49011,49041,49071,49100,49130,49160,49189,49218,49248,49277,49306,49336,49365,49395,49425,49455,49484,49514,49543,49573,49602,49632,49661,49690,49720,49749,49779,49809,49838,49868,49898,49927,49957,49986,50016,50045,50075,50104,50133,50163,50192,50222,50252,50281,50311,50340,50370,50400,50429,50459,50488,50518,50547,50576,50606,50635,50665,50694,50724,50754,50784,50813,50843,50872,50902,50931,50960,50990,51019,51049,51078,51108,51138,51167,51197,51227,51256,51286,51315,51345,51374,51403,51433,51462,51492,51522,51552,51582,51611,51641,51670,51699,51729,51758,51787,51816,51846,51876,51906,51936,51965,51995,52025,52054,52083,52113,52142,52171,52200,52230,52260,52290,52319,52349,52379,52408,52438,52467,52497,52526,52555,52585,52614,52644,52673,52703,52733,52762,52792,52822,52851,52881,52910,52939,52969,52998,53028,53057,53087,53116,53146,53176,53205,53235,53264,53294,53324,53353,53383,53412,53441,53471,53500,53530,53559,53589,53619,53648,53678,53708,53737,53767,53796,53825,53855,53884,53913,53943,53973,54003,54032,54062,54092,54121,54151,54180,54209,54239,54268,54297,54327,54357,54387,54416,54446,54476,54505,54535,54564,54593,54623,54652,54681,54711,54741,54770,54800,54830,54859,54889,54919,54948,54977,55007,55036,55066,55095,55125,55154,55184,55213,55243,55273,55302,55332,55361,55391,55420,55450,55479,55508,55538,55567,55597,55627,55657,55686,55716,55745,55775,55804,55834,55863,55892,55922,55951,55981,56011,56040,56070,56100,56129,56159,56188,56218,56247,56276,56306,56335,56365,56394,56424,56454,56483,56513,56543,56572,56601,56631,56660,56690,56719,56749,56778,56808,56837,56867,56897,56926,56956,56985,57015,57044,57074,57103,57133,57162,57192,57221,57251,57280,57310,57340,57369,57399,57429,57458,57487,57517,57546,57576,57605,57634,57664,57694,57723,57753,57783,57813,57842,57871,57901,57930,57959,57989,58018,58048,58077,58107,58137,58167,58196,58226,58255,58285,58314,58343,58373,58402,58432,58461,58491,58521,58551,58580,58610,58639,58669,58698,58727,58757,58786,58816,58845,58875,58905,58934,58964,58994,59023,59053,59082,59111,59141,59170,59200,59229,59259,59288,59318,59348,59377,59407,59436,59466,59495,59525,59554,59584,59613,59643,59672,59702,59731,59761,59791,59820,59850,59879,59909,59939,59968,59997,60027,60056,60086,60115,60145,60174,60204,60234,60264,60293,60323,60352,60381,60411,60440,60469,60499,60528,60558,60588,60618,60648,60677,60707,60736,60765,60795,60824,60853,60883,60912,60942,60972,61002,61031,61061,61090,61120,61149,61179,61208,61237,61267,61296,61326,61356,61385,61415,61445,61474,61504,61533,61563,61592,61621,61651,61680,61710,61739,61769,61799,61828,61858,61888,61917,61947,61976,62006,62035,62064,62094,62123,62153,62182,62212,62242,62271,62301,62331,62360,62390,62419,62448,62478,62507,62537,62566,62596,62625,62655,62685,62715,62744,62774,62803,62832,62862,62891,62921,62950,62980,63009,63039,63069,63099,63128,63157,63187,63216,63246,63275,63305,63334,63363,63393,63423,63453,63482,63512,63541,63571,63600,63630,63659,63689,63718,63747,63777,63807,63836,63866,63895,63925,63955,63984,64014,64043,64073,64102,64131,64161,64190,64220,64249,64279,64309,64339,64368,64398,64427,64457,64486,64515,64545,64574,64603,64633,64663,64692,64722,64752,64782,64811,64841,64870,64899,64929,64958,64987,65017,65047,65076,65106,65136,65166,65195,65225,65254,65283,65313,65342,65371,65401,65431,65460,65490,65520,65549,65579,65608,65638,65667,65697,65726,65755,65785,65815,65844,65874,65903,65933,65963,65992,66022,66051,66081,66110,66140,66169,66199,66228,66258,66287,66317,66346,66376,66405,66435,66465,66494,66524,66553,66583,66612,66641,66671,66700,66730,66760,66789,66819,66849,66878,66908,66937,66967,66996,67025,67055,67084,67114,67143,67173,67203,67233,67262,67292,67321,67351,67380,67409,67439,67468,67497,67527,67557,67587,67617,67646,67676,67705,67735,67764,67793,67823,67852,67882,67911,67941,67971,68e3,68030,68060,68089,68119,68148,68177,68207,68236,68266,68295,68325,68354,68384,68414,68443,68473,68502,68532,68561,68591,68620,68650,68679,68708,68738,68768,68797,68827,68857,68886,68916,68946,68975,69004,69034,69063,69092,69122,69152,69181,69211,69240,69270,69300,69330,69359,69388,69418,69447,69476,69506,69535,69565,69595,69624,69654,69684,69713,69743,69772,69802,69831,69861,69890,69919,69949,69978,70008,70038,70067,70097,70126,70156,70186,70215,70245,70274,70303,70333,70362,70392,70421,70451,70481,70510,70540,70570,70599,70629,70658,70687,70717,70746,70776,70805,70835,70864,70894,70924,70954,70983,71013,71042,71071,71101,71130,71159,71189,71218,71248,71278,71308,71337,71367,71397,71426,71455,71485,71514,71543,71573,71602,71632,71662,71691,71721,71751,71781,71810,71839,71869,71898,71927,71957,71986,72016,72046,72075,72105,72135,72164,72194,72223,72253,72282,72311,72341,72370,72400,72429,72459,72489,72518,72548,72577,72607,72637,72666,72695,72725,72754,72784,72813,72843,72872,72902,72931,72961,72991,73020,73050,73080,73109,73139,73168,73197,73227,73256,73286,73315,73345,73375,73404,73434,73464,73493,73523,73552,73581,73611,73640,73669,73699,73729,73758,73788,73818,73848,73877,73907,73936,73965,73995,74024,74053,74083,74113,74142,74172,74202,74231,74261,74291,74320,74349,74379,74408,74437,74467,74497,74526,74556,74586,74615,74645,74675,74704,74733,74763,74792,74822,74851,74881,74910,74940,74969,74999,75029,75058,75088,75117,75147,75176,75206,75235,75264,75294,75323,75353,75383,75412,75442,75472,75501,75531,75560,75590,75619,75648,75678,75707,75737,75766,75796,75826,75856,75885,75915,75944,75974,76003,76032,76062,76091,76121,76150,76180,76210,76239,76269,76299,76328,76358,76387,76416,76446,76475,76505,76534,76564,76593,76623,76653,76682,76712,76741,76771,76801,76830,76859,76889,76918,76948,76977,77007,77036,77066,77096,77125,77155,77185,77214,77243,77273,77302,77332,77361,77390,77420,77450,77479,77509,77539,77569,77598,77627,77657,77686,77715,77745,77774,77804,77833,77863,77893,77923,77952,77982,78011,78041,78070,78099,78129,78158,78188,78217,78247,78277,78307,78336,78366,78395,78425,78454,78483,78513,78542,78572,78601,78631,78661,78690,78720,78750,78779,78808,78838,78867,78897,78926,78956,78985,79015,79044,79074,79104,79133,79163,79192,79222,79251,79281,79310,79340,79369,79399,79428,79458,79487,79517,79546,79576,79606,79635,79665,79695,79724,79753,79783,79812,79841,79871,79900,79930,79960,79990]},{\"../main\":346,\"object-assign\":247}],346:[function(t,e,r){var n=t(\"object-assign\");function i(){this.regionalOptions=[],this.regionalOptions[\"\"]={invalidCalendar:\"Calendar {0} not found\",invalidDate:\"Invalid {0} date\",invalidMonth:\"Invalid {0} month\",invalidYear:\"Invalid {0} year\",differentCalendars:\"Cannot mix {0} and {1} dates\"},this.local=this.regionalOptions[\"\"],this.calendars={},this._localCals={}}function a(t,e,r,n){if(this._calendar=t,this._year=e,this._month=r,this._day=n,0===this._calendar._validateLevel&&!this._calendar.isValid(this._year,this._month,this._day))throw(c.local.invalidDate||c.regionalOptions[\"\"].invalidDate).replace(/\\{0\\}/,this._calendar.local.name)}function o(t,e){return\"000000\".substring(0,e-(t=\"\"+t).length)+t}function s(){this.shortYearCutoff=\"+10\"}function l(t){this.local=this.regionalOptions[t]||this.regionalOptions[\"\"]}n(i.prototype,{instance:function(t,e){t=(t||\"gregorian\").toLowerCase(),e=e||\"\";var r=this._localCals[t+\"-\"+e];if(!r&&this.calendars[t]&&(r=new this.calendars[t](e),this._localCals[t+\"-\"+e]=r),!r)throw(this.local.invalidCalendar||this.regionalOptions[\"\"].invalidCalendar).replace(/\\{0\\}/,t);return r},newDate:function(t,e,r,n,i){return(n=(null!=t&&t.year?t.calendar():\"string\"==typeof n?this.instance(n,i):n)||this.instance()).newDate(t,e,r)},substituteDigits:function(t){return function(e){return(e+\"\").replace(/[0-9]/g,(function(e){return t[e]}))}},substituteChineseDigits:function(t,e){return function(r){for(var n=\"\",i=0;r>0;){var a=r%10;n=(0===a?\"\":t[a]+e[i])+n,i++,r=Math.floor(r/10)}return 0===n.indexOf(t[1]+e[1])&&(n=n.substr(1)),n||t[0]}}}),n(a.prototype,{newDate:function(t,e,r){return this._calendar.newDate(null==t?this:t,e,r)},year:function(t){return 0===arguments.length?this._year:this.set(t,\"y\")},month:function(t){return 0===arguments.length?this._month:this.set(t,\"m\")},day:function(t){return 0===arguments.length?this._day:this.set(t,\"d\")},date:function(t,e,r){if(!this._calendar.isValid(t,e,r))throw(c.local.invalidDate||c.regionalOptions[\"\"].invalidDate).replace(/\\{0\\}/,this._calendar.local.name);return this._year=t,this._month=e,this._day=r,this},leap year:function(){return this._calendar.leap year(this)},epoch:function(){return this._calendar.epoch(this)},formatYear:function(){return this._calendar.formatYear(this)},monthOfYear:function(){return this._calendar.monthOfYear(this)},weekOfYear:function(){return this._calendar.weekOfYear(this)},daysInYear:function(){return this._calendar.daysInYear(this)},dayOfYear:function(){return this._calendar.dayOfYear(this)},daysInMonth:function(){return this._calendar.daysInMonth(this)},dayOfWeek:function(){return this._calendar.dayOfWeek(this)},weekDay:function(){return this._calendar.weekDay(this)},extraInfo:function(){return this._calendar.extraInfo(this)},add:function(t,e){return this._calendar.add(this,t,e)},set:function(t,e){return this._calendar.set(this,t,e)},compareTo:function(t){if(this._calendar.name!==t._calendar.name)throw(c.local.differentCalendars||c.regionalOptions[\"\"].differentCalendars).replace(/\\{0\\}/,this._calendar.local.name).replace(/\\{1\\}/,t._calendar.local.name);var e=this._year!==t._year?this._year-t._year:this._month!==t._month?this.monthOfYear()-t.monthOfYear():this._day-t._day;return 0===e?0:e<0?-1:1},calendar:function(){return this._calendar},toJD:function(){return this._calendar.toJD(this)},fromJD:function(t){return this._calendar.fromJD(t)},toJSDate:function(){return this._calendar.toJSDate(this)},fromJSDate:function(t){return this._calendar.fromJSDate(t)},toString:function(){return(this.year()<0?\"-\":\"\")+o(Math.abs(this.year()),4)+\"-\"+o(this.month(),2)+\"-\"+o(this.day(),2)}}),n(s.prototype,{_validateLevel:0,newDate:function(t,e,r){return null==t?this.today():(t.year&&(this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate),r=t.day(),e=t.month(),t=t.year()),new a(this,t,e,r))},today:function(){return this.fromJSDate(new Date)},epoch:function(t){return this._validate(t,this.minMonth,this.minDay,c.local.invalidYear||c.regionalOptions[\"\"].invalidYear).year()<0?this.local.epochs[0]:this.local.epochs[1]},formatYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,c.local.invalidYear||c.regionalOptions[\"\"].invalidYear);return(e.year()<0?\"-\":\"\")+o(Math.abs(e.year()),4)},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,c.local.invalidYear||c.regionalOptions[\"\"].invalidYear),12},monthOfYear:function(t,e){var r=this._validate(t,e,this.minDay,c.local.invalidMonth||c.regionalOptions[\"\"].invalidMonth);return(r.month()+this.monthsInYear(r)-this.firstMonth)%this.monthsInYear(r)+this.minMonth},fromMonthOfYear:function(t,e){var r=(e+this.firstMonth-2*this.minMonth)%this.monthsInYear(t)+this.minMonth;return this._validate(t,r,this.minDay,c.local.invalidMonth||c.regionalOptions[\"\"].invalidMonth),r},daysInYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,c.local.invalidYear||c.regionalOptions[\"\"].invalidYear);return this.leap year(e)?366:365},dayOfYear:function(t,e,r){var n=this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate);return n.toJD()-this.newDate(n.year(),this.fromMonthOfYear(n.year(),this.minMonth),this.minDay).toJD()+1},daysInWeek:function(){return 7},dayOfWeek:function(t,e,r){var n=this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate);return(Math.floor(this.toJD(n))+2)%this.daysInWeek()},extraInfo:function(t,e,r){return this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate),{}},add:function(t,e,r){return this._validate(t,this.minMonth,this.minDay,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate),this._correctAdd(t,this._add(t,e,r),e,r)},_add:function(t,e,r){if(this._validateLevel++,\"d\"===r||\"w\"===r){var n=t.toJD()+e*(\"w\"===r?this.daysInWeek():1),i=t.calendar().fromJD(n);return this._validateLevel--,[i.year(),i.month(),i.day()]}try{var a=t.year()+(\"y\"===r?e:0),o=t.monthOfYear()+(\"m\"===r?e:0);i=t.day();\"y\"===r?(t.month()!==this.fromMonthOfYear(a,o)&&(o=this.newDate(a,t.month(),this.minDay).monthOfYear()),o=Math.min(o,this.monthsInYear(a)),i=Math.min(i,this.daysInMonth(a,this.fromMonthOfYear(a,o)))):\"m\"===r&&(!function(t){for(;oe-1+t.minMonth;)a++,o-=e,e=t.monthsInYear(a)}(this),i=Math.min(i,this.daysInMonth(a,this.fromMonthOfYear(a,o))));var s=[a,this.fromMonthOfYear(a,o),i];return this._validateLevel--,s}catch(t){throw this._validateLevel--,t}},_correctAdd:function(t,e,r,n){if(!(this.hasYearZero||\"y\"!==n&&\"m\"!==n||0!==e[0]&&t.year()>0==e[0]>0)){var i={y:[1,1,\"y\"],m:[1,this.monthsInYear(-1),\"m\"],w:[this.daysInWeek(),this.daysInYear(-1),\"d\"],d:[1,this.daysInYear(-1),\"d\"]}[n],a=r<0?-1:1;e=this._add(t,r*i[0]+a*i[1],i[2])}return t.date(e[0],e[1],e[2])},set:function(t,e,r){this._validate(t,this.minMonth,this.minDay,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate);var n=\"y\"===r?e:t.year(),i=\"m\"===r?e:t.month(),a=\"d\"===r?e:t.day();return\"y\"!==r&&\"m\"!==r||(a=Math.min(a,this.daysInMonth(n,i))),t.date(n,i,a)},isValid:function(t,e,r){this._validateLevel++;var n=this.hasYearZero||0!==t;if(n){var i=this.newDate(t,e,this.minDay);n=e>=this.minMonth&&e-this.minMonth=this.minDay&&r-this.minDay13.5?13:1),c=i-(l>2.5?4716:4715);return c<=0&&c--,this.newDate(c,l,s)},toJSDate:function(t,e,r){var n=this._validate(t,e,r,c.local.invalidDate||c.regionalOptions[\"\"].invalidDate),i=new Date(n.year(),n.month()-1,n.day());return i.setHours(0),i.setMinutes(0),i.setSeconds(0),i.setMilliseconds(0),i.setHours(i.getHours()>12?i.getHours()+2:0),i},fromJSDate:function(t){return this.newDate(t.getFullYear(),t.getMonth()+1,t.getDate())}});var c=e.exports=new i;c.cdate=a,c.baseCalendar=s,c.calendars.gregorian=l},{\"object-assign\":247}],347:[function(t,e,r){var n=t(\"object-assign\"),i=t(\"./main\");n(i.regionalOptions[\"\"],{invalidArguments:\"Invalid arguments\",invalidFormat:\"Cannot format a date from another calendar\",missingNumberAt:\"Missing number at position {0}\",unknownNameAt:\"Unknown name at position {0}\",unexpectedLiteralAt:\"Unexpected literal at position {0}\",unexpectedText:\"Additional text found at end\"}),i.local=i.regionalOptions[\"\"],n(i.cdate.prototype,{formatDate:function(t,e){return\"string\"!=typeof t&&(e=t,t=\"\"),this._calendar.formatDate(t||\"\",this,e)}}),n(i.baseCalendar.prototype,{UNIX_EPOCH:i.instance().newDate(1970,1,1).toJD(),SECS_PER_DAY:86400,TICKS_EPOCH:i.instance().jdEpoch,TICKS_PER_DAY:864e9,ATOM:\"yyyy-mm-dd\",COOKIE:\"D, dd M yyyy\",FULL:\"DD, MM d, yyyy\",ISO_8601:\"yyyy-mm-dd\",JULIAN:\"J\",RFC_822:\"D, d M yy\",RFC_850:\"DD, dd-M-yy\",RFC_1036:\"D, d M yy\",RFC_1123:\"D, d M yyyy\",RFC_2822:\"D, d M yyyy\",RSS:\"D, d M yy\",TICKS:\"!\",TIMESTAMP:\"@\",W3C:\"yyyy-mm-dd\",formatDate:function(t,e,r){if(\"string\"!=typeof t&&(r=e,e=t,t=\"\"),!e)return\"\";if(e.calendar()!==this)throw i.local.invalidFormat||i.regionalOptions[\"\"].invalidFormat;t=t||this.local.dateFormat;for(var n,a,o,s,l=(r=r||{}).dayNamesShort||this.local.dayNamesShort,c=r.dayNames||this.local.dayNames,u=r.monthNumbers||this.local.monthNumbers,f=r.monthNamesShort||this.local.monthNamesShort,h=r.monthNames||this.local.monthNames,p=(r.calculateWeek||this.local.calculateWeek,function(e,r){for(var n=1;w+n1}),d=function(t,e,r,n){var i=\"\"+e;if(p(t,n))for(;i.length1},x=function(t,r){var n=y(t,r),a=[2,3,n?4:2,n?4:2,10,11,20][\"oyYJ@!\".indexOf(t)+1],o=new RegExp(\"^-?\\\\d{1,\"+a+\"}\"),s=e.substring(A).match(o);if(!s)throw(i.local.missingNumberAt||i.regionalOptions[\"\"].missingNumberAt).replace(/\\{0\\}/,A);return A+=s[0].length,parseInt(s[0],10)},b=this,_=function(){if(\"function\"==typeof l){y(\"m\");var t=l.call(b,e.substring(A));return A+=t.length,t}return x(\"m\")},w=function(t,r,n,a){for(var o=y(t,a)?n:r,s=0;s-1){p=1,d=g;for(var E=this.daysInMonth(h,p);d>E;E=this.daysInMonth(h,p))p++,d-=E}return f>-1?this.fromJD(f):this.newDate(h,p,d)},determineDate:function(t,e,r,n,i){r&&\"object\"!=typeof r&&(i=n,n=r,r=null),\"string\"!=typeof n&&(i=n,n=\"\");var a=this;return e=e?e.newDate():null,t=null==t?e:\"string\"==typeof t?function(t){try{return a.parseDate(n,t,i)}catch(t){}for(var e=((t=t.toLowerCase()).match(/^c/)&&r?r.newDate():null)||a.today(),o=/([+-]?[0-9]+)\\s*(d|w|m|y)?/g,s=o.exec(t);s;)e.add(parseInt(s[1],10),s[2]||\"d\"),s=o.exec(t);return e}(t):\"number\"==typeof t?isNaN(t)||t===1/0||t===-1/0?e:a.today().add(t,\"d\"):a.newDate(t)}})},{\"./main\":346,\"object-assign\":247}],348:[function(t,e,r){\"use strict\";e.exports=[{path:\"\",backoff:0},{path:\"M-2.4,-3V3L0.6,0Z\",backoff:.6},{path:\"M-3.7,-2.5V2.5L1.3,0Z\",backoff:1.3},{path:\"M-4.45,-3L-1.65,-0.2V0.2L-4.45,3L1.55,0Z\",backoff:1.55},{path:\"M-2.2,-2.2L-0.2,-0.2V0.2L-2.2,2.2L-1.4,3L1.6,0L-1.4,-3Z\",backoff:1.6},{path:\"M-4.4,-2.1L-0.6,-0.2V0.2L-4.4,2.1L-4,3L2,0L-4,-3Z\",backoff:2},{path:\"M2,0A2,2 0 1,1 0,-2A2,2 0 0,1 2,0Z\",backoff:0,noRotate:!0},{path:\"M2,2V-2H-2V2Z\",backoff:0,noRotate:!0}]},{}],349:[function(t,e,r){\"use strict\";var n=t(\"./arrow_paths\"),i=t(\"../../plots/font_attributes\"),a=t(\"../../plots/cartesian/constants\"),o=t(\"../../plot_api/plot_template\").templatedArray;t(\"../../constants/axis_placeable_objects\");e.exports=o(\"annotation\",{visible:{valType:\"boolean\",dflt:!0,editType:\"calc+arraydraw\"},text:{valType:\"string\",editType:\"calc+arraydraw\"},textangle:{valType:\"angle\",dflt:0,editType:\"calc+arraydraw\"},font:i({editType:\"calc+arraydraw\",colorEditType:\"arraydraw\"}),width:{valType:\"number\",min:1,dflt:null,editType:\"calc+arraydraw\"},height:{valType:\"number\",min:1,dflt:null,editType:\"calc+arraydraw\"},opacity:{valType:\"number\",min:0,max:1,dflt:1,editType:\"arraydraw\"},align:{valType:\"enumerated\",values:[\"left\",\"center\",\"right\"],dflt:\"center\",editType:\"arraydraw\"},valign:{valType:\"enumerated\",values:[\"top\",\"middle\",\"bottom\"],dflt:\"middle\",editType:\"arraydraw\"},bgcolor:{valType:\"color\",dflt:\"rgba(0,0,0,0)\",editType:\"arraydraw\"},bordercolor:{valType:\"color\",dflt:\"rgba(0,0,0,0)\",editType:\"arraydraw\"},borderpad:{valType:\"number\",min:0,dflt:1,editType:\"calc+arraydraw\"},borderwidth:{valType:\"number\",min:0,dflt:1,editType:\"calc+arraydraw\"},showarrow:{valType:\"boolean\",dflt:!0,editType:\"calc+arraydraw\"},arrowcolor:{valType:\"color\",editType:\"arraydraw\"},arrowhead:{valType:\"integer\",min:0,max:n.length,dflt:1,editType:\"arraydraw\"},startarrowhead:{valType:\"integer\",min:0,max:n.length,dflt:1,editType:\"arraydraw\"},arrowside:{valType:\"flaglist\",flags:[\"end\",\"start\"],extras:[\"none\"],dflt:\"end\",editType:\"arraydraw\"},arrowsize:{valType:\"number\",min:.3,dflt:1,editType:\"calc+arraydraw\"},startarrowsize:{valType:\"number\",min:.3,dflt:1,editType:\"calc+arraydraw\"},arrowwidth:{valType:\"number\",min:.1,editType:\"calc+arraydraw\"},standoff:{valType:\"number\",min:0,dflt:0,editType:\"calc+arraydraw\"},startstandoff:{valType:\"number\",min:0,dflt:0,editType:\"calc+arraydraw\"},ax:{valType:\"any\",editType:\"calc+arraydraw\"},ay:{valType:\"any\",editType:\"calc+arraydraw\"},axref:{valType:\"enumerated\",dflt:\"pixel\",values:[\"pixel\",a.idRegex.x.toString()],editType:\"calc\"},ayref:{valType:\"enumerated\",dflt:\"pixel\",values:[\"pixel\",a.idRegex.y.toString()],editType:\"calc\"},xref:{valType:\"enumerated\",values:[\"paper\",a.idRegex.x.toString()],editType:\"calc\"},x:{valType:\"any\",editType:\"calc+arraydraw\"},xanchor:{valType:\"enumerated\",values:[\"auto\",\"left\",\"center\",\"right\"],dflt:\"auto\",editType:\"calc+arraydraw\"},xshift:{valType:\"number\",dflt:0,editType:\"calc+arraydraw\"},yref:{valType:\"enumerated\",values:[\"paper\",a.idRegex.y.toString()],editType:\"calc\"},y:{valType:\"any\",editType:\"calc+arraydraw\"},yanchor:{valType:\"enumerated\",values:[\"auto\",\"top\",\"middle\",\"bottom\"],dflt:\"auto\",editType:\"calc+arraydraw\"},yshift:{valType:\"number\",dflt:0,editType:\"calc+arraydraw\"},clicktoshow:{valType:\"enumerated\",values:[!1,\"onoff\",\"onout\"],dflt:!1,editType:\"arraydraw\"},xclick:{valType:\"any\",editType:\"arraydraw\"},yclick:{valType:\"any\",editType:\"arraydraw\"},hovertext:{valType:\"string\",editType:\"arraydraw\"},hoverlabel:{bgcolor:{valType:\"color\",editType:\"arraydraw\"},bordercolor:{valType:\"color\",editType:\"arraydraw\"},font:i({editType:\"arraydraw\"}),editType:\"arraydraw\"},captureevents:{valType:\"boolean\",editType:\"arraydraw\"},editType:\"calc\",_deprecated:{ref:{valType:\"string\",editType:\"calc\"}}})},{\"../../constants/axis_placeable_objects\":472,\"../../plot_api/plot_template\":543,\"../../plots/cartesian/constants\":561,\"../../plots/font_attributes\":585,\"./arrow_paths\":348}],350:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"./draw\").draw;function o(t){var e=t._fullLayout;n.filterVisible(e.annotations).forEach((function(e){var r=i.getFromId(t,e.xref),n=i.getFromId(t,e.yref),a=i.getRefType(e.xref),o=i.getRefType(e.yref);e._extremes={},\"range\"===a&&s(e,r),\"range\"===o&&s(e,n)}))}function s(t,e){var r,n=e._id,a=n.charAt(0),o=t[a],s=t[\"a\"+a],l=t[a+\"ref\"],c=t[\"a\"+a+\"ref\"],u=t[\"_\"+a+\"padplus\"],f=t[\"_\"+a+\"padminus\"],h={x:1,y:-1}[a]*t[a+\"shift\"],p=3*t.arrowsize*t.arrowwidth||0,d=p+h,g=p-h,m=3*t.startarrowsize*t.arrowwidth||0,v=m+h,y=m-h;if(c===l){var x=i.findExtremes(e,[e.r2c(o)],{ppadplus:d,ppadminus:g}),b=i.findExtremes(e,[e.r2c(s)],{ppadplus:Math.max(u,v),ppadminus:Math.max(f,y)});r={min:[x.min[0],b.min[0]],max:[x.max[0],b.max[0]]}}else v=s?v+s:v,y=s?y-s:y,r=i.findExtremes(e,[e.r2c(o)],{ppadplus:Math.max(u,d,v),ppadminus:Math.max(f,g,y)});t._extremes[n]=r}e.exports=function(t){var e=t._fullLayout;if(n.filterVisible(e.annotations).length&&t._fullData.length)return n.syncOrAsync([a,o],t)}},{\"../../lib\":503,\"../../plots/cartesian/axes\":554,\"./draw\":355}],351:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../registry\"),a=t(\"../../plot_api/plot_template\").arrayEditor;function o(t,e){var r,n,i,a,o,l,c,u=t._fullLayout.annotations,f=[],h=[],p=[],d=(e||[]).length;for(r=0;r0||r.explicitOff.length>0},onClick:function(t,e){var r,s,l=o(t,e),c=l.on,u=l.off.concat(l.explicitOff),f={},h=t._fullLayout.annotations;if(!c.length&&!u.length)return;for(r=0;r2/3?\"right\":\"center\"),{center:0,middle:0,left:.5,bottom:-.5,right:-.5,top:.5}[e]}for(var W=!1,X=[\"x\",\"y\"],Z=0;Z1)&&(nt===rt?((pt=it.r2fraction(e[\"a\"+et]))<0||pt>1)&&(W=!0):W=!0),J=it._offset+it.r2p(e[et]),$=.5}else{var dt=\"domain\"===ht;\"x\"===et?(Q=e[et],J=dt?it._offset+it._length*Q:J=T.l+T.w*Q):(Q=1-e[et],J=dt?it._offset+it._length*Q:J=T.t+T.h*Q),$=e.showarrow?.5:Q}if(e.showarrow){ft.head=J;var gt=e[\"a\"+et];if(tt=ot*q(.5,e.xanchor)-st*q(.5,e.yanchor),nt===rt){var mt=l.getRefType(nt);\"domain\"===mt?(\"y\"===et&&(gt=1-gt),ft.tail=it._offset+it._length*gt):\"paper\"===mt?\"y\"===et?(gt=1-gt,ft.tail=T.t+T.h*gt):ft.tail=T.l+T.w*gt:ft.tail=it._offset+it.r2p(gt),K=tt}else ft.tail=J+gt,K=tt+gt;ft.text=ft.tail+tt;var vt=w[\"x\"===et?\"width\":\"height\"];if(\"paper\"===rt&&(ft.head=o.constrain(ft.head,1,vt-1)),\"pixel\"===nt){var yt=-Math.max(ft.tail-3,ft.text),xt=Math.min(ft.tail+3,ft.text)-vt;yt>0?(ft.tail+=yt,ft.text+=yt):xt>0&&(ft.tail-=xt,ft.text-=xt)}ft.tail+=ut,ft.head+=ut}else K=tt=lt*q($,ct),ft.text=J+tt;ft.text+=ut,tt+=ut,K+=ut,e[\"_\"+et+\"padplus\"]=lt/2+K,e[\"_\"+et+\"padminus\"]=lt/2-K,e[\"_\"+et+\"size\"]=lt,e[\"_\"+et+\"shift\"]=tt}if(W)R.remove();else{var bt=0,_t=0;if(\"left\"!==e.align&&(bt=(A-b)*(\"center\"===e.align?.5:1)),\"top\"!==e.valign&&(_t=(D-_)*(\"middle\"===e.valign?.5:1)),f)n.select(\"svg\").attr({x:N+bt-1,y:N+_t}).call(u.setClipUrl,U?L:null,t);else{var wt=N+_t-g.top,Tt=N+bt-g.left;G.call(h.positionText,Tt,wt).call(u.setClipUrl,U?L:null,t)}V.select(\"rect\").call(u.setRect,N,N,A,D),j.call(u.setRect,F/2,F/2,B-F,H-F),R.call(u.setTranslate,Math.round(C.x.text-B/2),Math.round(C.y.text-H/2)),O.attr({transform:\"rotate(\"+P+\",\"+C.x.text+\",\"+C.y.text+\")\"});var kt,At=function(r,n){I.selectAll(\".annotation-arrow-g\").remove();var l=C.x.head,f=C.y.head,h=C.x.tail+r,p=C.y.tail+n,g=C.x.text+r,b=C.y.text+n,_=o.rotationXYMatrix(P,g,b),w=o.apply2DTransform(_),A=o.apply2DTransform2(_),L=+j.attr(\"width\"),z=+j.attr(\"height\"),D=g-.5*L,F=D+L,B=b-.5*z,N=B+z,U=[[D,B,D,N],[D,N,F,N],[F,N,F,B],[F,B,D,B]].map(A);if(!U.reduce((function(t,e){return t^!!o.segmentsIntersect(l,f,l+1e6,f+1e6,e[0],e[1],e[2],e[3])}),!1)){U.forEach((function(t){var e=o.segmentsIntersect(h,p,l,f,t[0],t[1],t[2],t[3]);e&&(h=e.x,p=e.y)}));var V=e.arrowwidth,H=e.arrowcolor,q=e.arrowside,G=I.append(\"g\").style({opacity:c.opacity(H)}).classed(\"annotation-arrow-g\",!0),Y=G.append(\"path\").attr(\"d\",\"M\"+h+\",\"+p+\"L\"+l+\",\"+f).style(\"stroke-width\",V+\"px\").call(c.stroke,c.rgb(H));if(m(Y,q,e),k.annotationPosition&&Y.node().parentNode&&!a){var W=l,X=f;if(e.standoff){var Z=Math.sqrt(Math.pow(l-h,2)+Math.pow(f-p,2));W+=e.standoff*(h-l)/Z,X+=e.standoff*(p-f)/Z}var J,K,Q=G.append(\"path\").classed(\"annotation-arrow\",!0).classed(\"anndrag\",!0).classed(\"cursor-move\",!0).attr({d:\"M3,3H-3V-3H3ZM0,0L\"+(h-W)+\",\"+(p-X),transform:s(W,X)}).style(\"stroke-width\",V+6+\"px\").call(c.stroke,\"rgba(0,0,0,0)\").call(c.fill,\"rgba(0,0,0,0)\");d.init({element:Q.node(),gd:t,prepFn:function(){var t=u.getTranslate(R);J=t.x,K=t.y,v&&v.autorange&&M(v._name+\".autorange\",!0),x&&x.autorange&&M(x._name+\".autorange\",!0)},moveFn:function(t,r){var n=w(J,K),i=n[0]+t,a=n[1]+r;R.call(u.setTranslate,i,a),S(\"x\",y(v,t,\"x\",T,e)),S(\"y\",y(x,r,\"y\",T,e)),e.axref===e.xref&&S(\"ax\",y(v,t,\"ax\",T,e)),e.ayref===e.yref&&S(\"ay\",y(x,r,\"ay\",T,e)),G.attr(\"transform\",s(t,r)),O.attr({transform:\"rotate(\"+P+\",\"+i+\",\"+a+\")\"})},doneFn:function(){i.call(\"_guiRelayout\",t,E());var e=document.querySelector(\".js-notes-box-panel\");e&&e.redraw(e.selectedObj)}})}}};if(e.showarrow&&At(0,0),z)d.init({element:R.node(),gd:t,prepFn:function(){kt=O.attr(\"transform\")},moveFn:function(t,r){var n=\"pointer\";if(e.showarrow)e.axref===e.xref?S(\"ax\",y(v,t,\"ax\",T,e)):S(\"ax\",e.ax+t),e.ayref===e.yref?S(\"ay\",y(x,r,\"ay\",T.w,e)):S(\"ay\",e.ay+r),At(t,r);else{if(a)return;var i,o;if(v)i=y(v,t,\"x\",T,e);else{var l=e._xsize/T.w,c=e.x+(e._xshift-e.xshift)/T.w-l/2;i=d.align(c+t/T.w,l,0,1,e.xanchor)}if(x)o=y(x,r,\"y\",T,e);else{var u=e._ysize/T.h,f=e.y-(e._yshift+e.yshift)/T.h-u/2;o=d.align(f-r/T.h,u,0,1,e.yanchor)}S(\"x\",i),S(\"y\",o),v&&x||(n=d.getCursor(v?.5:i,x?.5:o,e.xanchor,e.yanchor))}O.attr({transform:s(t,r)+kt}),p(R,n)},clickFn:function(r,n){e.captureevents&&t.emit(\"plotly_clickannotation\",Y(n))},doneFn:function(){p(R),i.call(\"_guiRelayout\",t,E());var e=document.querySelector(\".js-notes-box-panel\");e&&e.redraw(e.selectedObj)}})}}}e.exports={draw:function(t){var e=t._fullLayout;e._infolayer.selectAll(\".annotation\").remove();for(var r=0;r=0,x=e.indexOf(\"end\")>=0,b=d.backoff*m+r.standoff,_=g.backoff*v+r.startstandoff;if(\"line\"===p.nodeName){o={x:+t.attr(\"x1\"),y:+t.attr(\"y1\")},u={x:+t.attr(\"x2\"),y:+t.attr(\"y2\")};var w=o.x-u.x,T=o.y-u.y;if(h=(f=Math.atan2(T,w))+Math.PI,b&&_&&b+_>Math.sqrt(w*w+T*T))return void z();if(b){if(b*b>w*w+T*T)return void z();var k=b*Math.cos(f),A=b*Math.sin(f);u.x+=k,u.y+=A,t.attr({x2:u.x,y2:u.y})}if(_){if(_*_>w*w+T*T)return void z();var M=_*Math.cos(f),S=_*Math.sin(f);o.x-=M,o.y-=S,t.attr({x1:o.x,y1:o.y})}}else if(\"path\"===p.nodeName){var E=p.getTotalLength(),L=\"\";if(E1){c=!0;break}}c?t.fullLayout._infolayer.select(\".annotation-\"+t.id+'[data-index=\"'+s+'\"]').remove():(l._pdata=i(t.glplot.cameraParams,[e.xaxis.r2l(l.x)*r[0],e.yaxis.r2l(l.y)*r[1],e.zaxis.r2l(l.z)*r[2]]),n(t.graphDiv,l,s,t.id,l._xa,l._ya))}}},{\"../../plots/gl3d/project\":607,\"../annotations/draw\":355}],362:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\");e.exports={moduleType:\"component\",name:\"annotations3d\",schema:{subplots:{scene:{annotations:t(\"./attributes\")}}},layoutAttributes:t(\"./attributes\"),handleDefaults:t(\"./defaults\"),includeBasePlot:function(t,e){var r=n.subplotsRegistry.gl3d;if(!r)return;for(var a=r.attrRegex,o=Object.keys(t),s=0;s=0))return t;if(3===o)n[o]>1&&(n[o]=1);else if(n[o]>=1)return t}var s=Math.round(255*n[0])+\", \"+Math.round(255*n[1])+\", \"+Math.round(255*n[2]);return a?\"rgba(\"+s+\", \"+n[3]+\")\":\"rgb(\"+s+\")\"}o.tinyRGB=function(t){var e=t.toRgb();return\"rgb(\"+Math.round(e.r)+\", \"+Math.round(e.g)+\", \"+Math.round(e.b)+\")\"},o.rgb=function(t){return o.tinyRGB(n(t))},o.opacity=function(t){return t?n(t).getAlpha():0},o.addOpacity=function(t,e){var r=n(t).toRgb();return\"rgba(\"+Math.round(r.r)+\", \"+Math.round(r.g)+\", \"+Math.round(r.b)+\", \"+e+\")\"},o.combine=function(t,e){var r=n(t).toRgb();if(1===r.a)return n(t).toRgbString();var i=n(e||c).toRgb(),a=1===i.a?i:{r:255*(1-i.a)+i.r*i.a,g:255*(1-i.a)+i.g*i.a,b:255*(1-i.a)+i.b*i.a},o={r:a.r*(1-r.a)+r.r*r.a,g:a.g*(1-r.a)+r.g*r.a,b:a.b*(1-r.a)+r.b*r.a};return n(o).toRgbString()},o.contrast=function(t,e,r){var i=n(t);return 1!==i.getAlpha()&&(i=n(o.combine(t,c))),(i.isDark()?e?i.lighten(e):c:r?i.darken(r):l).toString()},o.stroke=function(t,e){var r=n(e);t.style({stroke:o.tinyRGB(r),\"stroke-opacity\":r.getAlpha()})},o.fill=function(t,e){var r=n(e);t.style({fill:o.tinyRGB(r),\"fill-opacity\":r.getAlpha()})},o.clean=function(t){if(t&&\"object\"==typeof t){var e,r,n,i,s=Object.keys(t);for(e=0;e0?n>=l:n<=l));i++)n>u&&n0?n>=l:n<=l));i++)n>r[0]&&n1){var ct=Math.pow(10,Math.floor(Math.log(lt)/Math.LN10));ot*=ct*c.roundUp(lt/ct,[2,5,10]),(Math.abs(q.start)/q.size+1e-6)%1<2e-6&&(it.tick0=0)}it.dtick=ot}it.domain=o?[rt+I/R.h,rt+K-I/R.h]:[rt+P/R.w,rt+K-P/R.w],it.setScale(),t.attr(\"transform\",u(Math.round(R.l),Math.round(R.t)));var ut,ft=t.select(\".\"+A.cbtitleunshift).attr(\"transform\",u(-Math.round(R.l),-Math.round(R.t))),ht=it.ticklabelposition,pt=it.title.font.size,dt=t.select(\".\"+A.cbaxis),gt=0,mt=0;function vt(n,i){var a={propContainer:it,propName:e._propPrefix+\"title\",traceIndex:e._traceIndex,_meta:e._meta,placeholder:D._dfltTitle.colorbar,containerGroup:t.select(\".\"+A.cbtitle)},o=\"h\"===n.charAt(0)?n.substr(1):\"h\"+n;t.selectAll(\".\"+o+\",.\"+o+\"-math-group\").remove(),g.draw(r,n,f(a,i||{}))}return c.syncOrAsync([a.previousPromises,function(){var t,e;(o&&at||!o&&!at)&&(\"top\"===j&&(t=P+R.l+R.w*O,e=I+R.t+R.h*(1-rt-K)+3+.75*pt),\"bottom\"===j&&(t=P+R.l+R.w*O,e=I+R.t+R.h*(1-rt)-3-.25*pt),\"right\"===j&&(e=I+R.t+R.h*z+3+.75*pt,t=P+R.l+R.w*rt),vt(it._id+\"title\",{attributes:{x:t,y:e,\"text-anchor\":o?\"start\":\"middle\"}}))},function(){if(!o&&!at||o&&at){var a,l=t.select(\".\"+A.cbtitle),f=l.select(\"text\"),h=[-M/2,M/2],d=l.select(\".h\"+it._id+\"title-math-group\").node(),g=15.6;if(f.node()&&(g=parseInt(f.node().style.fontSize,10)*w),d?(a=p.bBox(d),mt=a.width,(gt=a.height)>g&&(h[1]-=(gt-g)/2)):f.node()&&!f.classed(A.jsPlaceholder)&&(a=p.bBox(f.node()),mt=a.width,gt=a.height),o){if(gt){if(gt+=5,\"top\"===j)it.domain[1]-=gt/R.h,h[1]*=-1;else{it.domain[0]+=gt/R.h;var v=m.lineCount(f);h[1]+=(1-v)*g}l.attr(\"transform\",u(h[0],h[1])),it.setScale()}}else mt&&(\"right\"===j&&(it.domain[0]+=(mt+pt/2)/R.w),l.attr(\"transform\",u(h[0],h[1])),it.setScale())}t.selectAll(\".\"+A.cbfills+\",.\"+A.cblines).attr(\"transform\",o?u(0,Math.round(R.h*(1-it.domain[1]))):u(Math.round(R.w*it.domain[0]),0)),dt.attr(\"transform\",o?u(0,Math.round(-R.t)):u(Math.round(-R.l),0));var y=t.select(\".\"+A.cbfills).selectAll(\"rect.\"+A.cbfill).attr(\"style\",\"\").data(Y);y.enter().append(\"rect\").classed(A.cbfill,!0).style(\"stroke\",\"none\"),y.exit().remove();var x=U.map(it.c2p).map(Math.round).sort((function(t,e){return t-e}));y.each((function(t,a){var s=[0===a?U[0]:(Y[a]+Y[a-1])/2,a===Y.length-1?U[1]:(Y[a]+Y[a+1])/2].map(it.c2p).map(Math.round);o&&(s[1]=c.constrain(s[1]+(s[1]>s[0])?1:-1,x[0],x[1]));var l=n.select(this).attr(o?\"x\":\"y\",Q).attr(o?\"y\":\"x\",n.min(s)).attr(o?\"width\":\"height\",Math.max(X,2)).attr(o?\"height\":\"width\",Math.max(n.max(s)-n.min(s),2));if(e._fillgradient)p.gradient(l,r,e._id,o?\"vertical\":\"horizontalreversed\",e._fillgradient,\"fill\");else{var u=H(t).replace(\"e-\",\"\");l.attr(\"fill\",i(u).toHexString())}}));var b=t.select(\".\"+A.cblines).selectAll(\"path.\"+A.cbline).data(B.color&&B.width?W:[]);b.enter().append(\"path\").classed(A.cbline,!0),b.exit().remove(),b.each((function(t){var e=Q,r=Math.round(it.c2p(t))+B.width/2%1;n.select(this).attr(\"d\",\"M\"+(o?e+\",\"+r:r+\",\"+e)+(o?\"h\":\"v\")+X).call(p.lineGroupStyle,B.width,V(t),B.dash)})),dt.selectAll(\"g.\"+it._id+\"tick,path\").remove();var _=Q+X+(M||0)/2-(\"outside\"===e.ticks?1:0),T=s.calcTicks(it),k=s.getTickSigns(it)[2];return s.drawTicks(r,it,{vals:\"inside\"===it.ticks?s.clipEnds(it,T):T,layer:dt,path:s.makeTickPath(it,_,k),transFn:s.makeTransTickFn(it)}),s.drawLabels(r,it,{vals:T,layer:dt,transFn:s.makeTransTickLabelFn(it),labelFns:s.makeLabelFns(it,_)})},function(){if(o&&!at||!o&&at){var t,i,a=it.position||0,s=it._offset+it._length/2;if(\"right\"===j)i=s,t=R.l+R.w*a+10+pt*(it.showticklabels?1:.5);else if(t=s,\"bottom\"===j&&(i=R.t+R.h*a+10+(-1===ht.indexOf(\"inside\")?it.tickfont.size:0)+(\"intside\"!==it.ticks&&e.ticklen||0)),\"top\"===j){var l=N.text.split(\"
\").length;i=R.t+R.h*a+10-X-w*pt*l}vt((o?\"h\":\"v\")+it._id+\"title\",{avoid:{selection:n.select(r).selectAll(\"g.\"+it._id+\"tick\"),side:j,offsetTop:o?0:R.t,offsetLeft:o?R.l:0,maxShift:o?D.width:D.height},attributes:{x:t,y:i,\"text-anchor\":\"middle\"},transform:{rotate:o?-90:0,offset:0}})}},a.previousPromises,function(){var n,s=X+M/2;-1===ht.indexOf(\"inside\")&&(n=p.bBox(dt.node()),s+=o?n.width:n.height),ut=ft.select(\"text\");var c=0,f=o&&\"top\"===j,g=!o&&\"right\"===j,m=0;if(ut.node()&&!ut.classed(A.jsPlaceholder)){var y,x=ft.select(\".h\"+it._id+\"title-math-group\").node();x&&(o&&at||!o&&!at)?(c=(n=p.bBox(x)).width,y=n.height):(c=(n=p.bBox(ft.node())).right-R.l-(o?Q:nt),y=n.bottom-R.t-(o?nt:Q),o||\"top\"!==j||(s+=n.height,m=n.height)),g&&(ut.attr(\"transform\",u(c/2+pt/2,0)),c*=2),s=Math.max(s,o?c:y)}var b=2*(o?P:I)+s+S+M/2,w=0;!o&&N.text&&\"bottom\"===C&&z<=0&&(b+=w=b/2,m+=w),D._hColorbarMoveTitle=w,D._hColorbarMoveCBTitle=m;var F=S+M;t.select(\".\"+A.cbbg).attr(\"x\",(o?Q:nt)-F/2-(o?P:0)).attr(\"y\",(o?nt:Q)-(o?J:I+m-w)).attr(o?\"width\":\"height\",Math.max(b-w,2)).attr(o?\"height\":\"width\",Math.max(J+F,2)).call(d.fill,E).call(d.stroke,e.bordercolor).style(\"stroke-width\",S);var B=g?Math.max(c-10,0):0;if(t.selectAll(\".\"+A.cboutline).attr(\"x\",(o?Q:nt+P)+B).attr(\"y\",(o?nt+I-J:Q)+(f?gt:0)).attr(o?\"width\":\"height\",Math.max(X,2)).attr(o?\"height\":\"width\",Math.max(J-(o?2*I+gt:2*P+B),2)).call(d.stroke,e.outlinecolor).style({fill:\"none\",\"stroke-width\":M}),t.attr(\"transform\",u(R.l-(o?$*b:0),R.t-(o?0:(1-tt)*b-m))),!o&&(S||i(E).getAlpha()&&!i.equals(D.paper_bgcolor,E))){var U=dt.selectAll(\"text\"),V=U[0].length,H=t.select(\".\"+A.cbbg).node(),q=p.bBox(H),G=p.getTranslate(t);U.each((function(t,e){var r=V-1;if(0===e||e===r){var n,i=p.bBox(this),a=p.getTranslate(this);if(e===r){var o=i.right+a.x;(n=q.right+G.x+nt-S-2+O-o)>0&&(n=0)}else if(0===e){var s=i.left+a.x;(n=q.left+G.x+nt+S+2-s)<0&&(n=0)}n&&(V<3?this.setAttribute(\"transform\",\"translate(\"+n+\",0) \"+this.getAttribute(\"transform\")):this.setAttribute(\"visibility\",\"hidden\"))}}))}var Y={},W=T[L],Z=k[L],K=T[C],et=k[C],rt=b-X;o?(\"pixels\"===h?(Y.y=z,Y.t=J*K,Y.b=J*et):(Y.t=Y.b=0,Y.yt=z+l*K,Y.yb=z-l*et),\"pixels\"===_?(Y.x=O,Y.l=b*W,Y.r=b*Z):(Y.l=rt*W,Y.r=rt*Z,Y.xl=O-v*W,Y.xr=O+v*Z)):(\"pixels\"===h?(Y.x=O,Y.l=J*W,Y.r=J*Z):(Y.l=Y.r=0,Y.xl=O+l*W,Y.xr=O-l*Z),\"pixels\"===_?(Y.y=1-z,Y.t=b*K,Y.b=b*et):(Y.t=rt*K,Y.b=rt*et,Y.yt=z-v*K,Y.yb=z+v*et)),a.autoMargin(r,e._id,Y)}],r)}(r,e,t);v&&v.then&&(t._promises||[]).push(v),t._context.edits.colorbarPosition&&function(t,e,r){var n,i,a,s=\"v\"===e.orientation,c=r._fullLayout._size;l.init({element:t.node(),gd:r,prepFn:function(){n=t.attr(\"transform\"),h(t)},moveFn:function(r,o){t.attr(\"transform\",n+u(r,o)),i=l.align((s?e._uFrac:e._vFrac)+r/c.w,s?e._thickFrac:e._lenFrac,0,1,e.xanchor),a=l.align((s?e._vFrac:1-e._uFrac)-o/c.h,s?e._lenFrac:e._thickFrac,0,1,e.yanchor);var f=l.getCursor(i,a,e.xanchor,e.yanchor);h(t,f)},doneFn:function(){if(h(t),void 0!==i&&void 0!==a){var n={};n[e._propPrefix+\"x\"]=i,n[e._propPrefix+\"y\"]=a,void 0!==e._traceIndex?o.call(\"_guiRestyle\",r,n,e._traceIndex):o.call(\"_guiRelayout\",r,n)}}})}(r,e,t)})),e.exit().each((function(e){a.autoMargin(t,e._id)})).remove(),e.order()}}},{\"../../constants/alignment\":471,\"../../lib\":503,\"../../lib/extend\":493,\"../../lib/setcursor\":524,\"../../lib/svg_text_utils\":529,\"../../plots/cartesian/axes\":554,\"../../plots/cartesian/axis_defaults\":556,\"../../plots/cartesian/layout_attributes\":569,\"../../plots/cartesian/position_defaults\":572,\"../../plots/plots\":619,\"../../registry\":638,\"../color\":366,\"../colorscale/helpers\":377,\"../dragelement\":385,\"../drawing\":388,\"../titles\":464,\"./constants\":368,\"@plotly/d3\":58,tinycolor2:312}],371:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t){return n.isPlainObject(t.colorbar)}},{\"../../lib\":503}],372:[function(t,e,r){\"use strict\";e.exports={moduleType:\"component\",name:\"colorbar\",attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),draw:t(\"./draw\").draw,hasColorbar:t(\"./has_colorbar\")}},{\"./attributes\":367,\"./defaults\":369,\"./draw\":370,\"./has_colorbar\":371}],373:[function(t,e,r){\"use strict\";var n=t(\"../colorbar/attributes\"),i=t(\"../../lib/regex\").counter,a=t(\"../../lib/sort_object_keys\"),o=t(\"./scales.js\").scales;a(o);function s(t){return\"`\"+t+\"`\"}e.exports=function(t,e){t=t||\"\";var r,a=(e=e||{}).cLetter||\"c\",l=(\"onlyIfNumerical\"in e?e.onlyIfNumerical:Boolean(t),\"noScale\"in e?e.noScale:\"marker.line\"===t),c=\"showScaleDflt\"in e?e.showScaleDflt:\"z\"===a,u=\"string\"==typeof e.colorscaleDflt?o[e.colorscaleDflt]:null,f=e.editTypeOverride||\"\",h=t?t+\".\":\"\";\"colorAttr\"in e?(r=e.colorAttr,e.colorAttr):s(h+(r={z:\"z\",c:\"color\"}[a]));var p=a+\"auto\",d=a+\"min\",g=a+\"max\",m=a+\"mid\",v=(s(h+p),s(h+d),s(h+g),{});v[d]=v[g]=void 0;var y={};y[p]=!1;var x={};return\"color\"===r&&(x.color={valType:\"color\",arrayOk:!0,editType:f||\"style\"},e.anim&&(x.color.anim=!0)),x[p]={valType:\"boolean\",dflt:!0,editType:\"calc\",impliedEdits:v},x[d]={valType:\"number\",dflt:null,editType:f||\"plot\",impliedEdits:y},x[g]={valType:\"number\",dflt:null,editType:f||\"plot\",impliedEdits:y},x[m]={valType:\"number\",dflt:null,editType:\"calc\",impliedEdits:v},x.colorscale={valType:\"colorscale\",editType:\"calc\",dflt:u,impliedEdits:{autocolorscale:!1}},x.autocolorscale={valType:\"boolean\",dflt:!1!==e.autoColorDflt,editType:\"calc\",impliedEdits:{colorscale:void 0}},x.reversescale={valType:\"boolean\",dflt:!1,editType:\"plot\"},l||(x.showscale={valType:\"boolean\",dflt:c,editType:\"calc\"},x.colorbar=n),e.noColorAxis||(x.coloraxis={valType:\"subplotid\",regex:i(\"coloraxis\"),dflt:null,editType:\"calc\"}),x}},{\"../../lib/regex\":520,\"../../lib/sort_object_keys\":526,\"../colorbar/attributes\":367,\"./scales.js\":381}],374:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../lib\"),a=t(\"./helpers\").extractOpts;e.exports=function(t,e,r){var o,s=t._fullLayout,l=r.vals,c=r.containerStr,u=c?i.nestedProperty(e,c).get():e,f=a(u),h=!1!==f.auto,p=f.min,d=f.max,g=f.mid,m=function(){return i.aggNums(Math.min,null,l)},v=function(){return i.aggNums(Math.max,null,l)};(void 0===p?p=m():h&&(p=u._colorAx&&n(p)?Math.min(p,m()):m()),void 0===d?d=v():h&&(d=u._colorAx&&n(d)?Math.max(d,v()):v()),h&&void 0!==g&&(d-g>g-p?p=g-(d-g):d-g=0?s.colorscale.sequential:s.colorscale.sequentialminus,f._sync(\"colorscale\",o))}},{\"../../lib\":503,\"./helpers\":377,\"fast-isnumeric\":190}],375:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./helpers\").hasColorscale,a=t(\"./helpers\").extractOpts;e.exports=function(t,e){function r(t,e){var r=t[\"_\"+e];void 0!==r&&(t[e]=r)}function o(t,i){var o=i.container?n.nestedProperty(t,i.container).get():t;if(o)if(o.coloraxis)o._colorAx=e[o.coloraxis];else{var s=a(o),l=s.auto;(l||void 0===s.min)&&r(o,i.min),(l||void 0===s.max)&&r(o,i.max),s.autocolorscale&&r(o,\"colorscale\")}}for(var s=0;s=0;n--,i++){var a=t[n];r[i]=[1-a[0],a[1]]}return r}function d(t,e){e=e||{};for(var r=t.domain,o=t.range,l=o.length,c=new Array(l),u=0;u4/3-s?o:s}},{}],383:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=[[\"sw-resize\",\"s-resize\",\"se-resize\"],[\"w-resize\",\"move\",\"e-resize\"],[\"nw-resize\",\"n-resize\",\"ne-resize\"]];e.exports=function(t,e,r,a){return t=\"left\"===r?0:\"center\"===r?1:\"right\"===r?2:n.constrain(Math.floor(3*t),0,2),e=\"bottom\"===a?0:\"middle\"===a?1:\"top\"===a?2:n.constrain(Math.floor(3*e),0,2),i[e][t]}},{\"../../lib\":503}],384:[function(t,e,r){\"use strict\";r.selectMode=function(t){return\"lasso\"===t||\"select\"===t},r.drawMode=function(t){return\"drawclosedpath\"===t||\"drawopenpath\"===t||\"drawline\"===t||\"drawrect\"===t||\"drawcircle\"===t},r.openMode=function(t){return\"drawline\"===t||\"drawopenpath\"===t},r.rectMode=function(t){return\"select\"===t||\"drawline\"===t||\"drawrect\"===t||\"drawcircle\"===t},r.freeMode=function(t){return\"lasso\"===t||\"drawclosedpath\"===t||\"drawopenpath\"===t},r.selectingOrDrawing=function(t){return r.freeMode(t)||r.rectMode(t)}},{}],385:[function(t,e,r){\"use strict\";var n=t(\"mouse-event-offset\"),i=t(\"has-hover\"),a=t(\"has-passive-events\"),o=t(\"../../lib\").removeElement,s=t(\"../../plots/cartesian/constants\"),l=e.exports={};l.align=t(\"./align\"),l.getCursor=t(\"./cursor\");var c=t(\"./unhover\");function u(){var t=document.createElement(\"div\");t.className=\"dragcover\";var e=t.style;return e.position=\"fixed\",e.left=0,e.right=0,e.top=0,e.bottom=0,e.zIndex=999999999,e.background=\"none\",document.body.appendChild(t),t}function f(t){return n(t.changedTouches?t.changedTouches[0]:t,document.body)}l.unhover=c.wrapped,l.unhoverRaw=c.raw,l.init=function(t){var e,r,n,c,h,p,d,g,m=t.gd,v=1,y=m._context.doubleClickDelay,x=t.element;m._mouseDownTime||(m._mouseDownTime=0),x.style.pointerEvents=\"all\",x.onmousedown=_,a?(x._ontouchstart&&x.removeEventListener(\"touchstart\",x._ontouchstart),x._ontouchstart=_,x.addEventListener(\"touchstart\",_,{passive:!1})):x.ontouchstart=_;var b=t.clampFn||function(t,e,r){return Math.abs(t)y&&(v=Math.max(v-1,1)),m._dragged)t.doneFn&&t.doneFn();else if(t.clickFn&&t.clickFn(v,p),!g){var r;try{r=new MouseEvent(\"click\",e)}catch(t){var n=f(e);(r=document.createEvent(\"MouseEvents\")).initMouseEvent(\"click\",e.bubbles,e.cancelable,e.view,e.detail,e.screenX,e.screenY,n[0],n[1],e.ctrlKey,e.altKey,e.shiftKey,e.metaKey,e.button,e.relatedTarget)}d.dispatchEvent(r)}m._dragging=!1,m._dragged=!1}else m._dragged=!1}},l.coverSlip=u},{\"../../lib\":503,\"../../plots/cartesian/constants\":561,\"./align\":382,\"./cursor\":383,\"./unhover\":386,\"has-hover\":228,\"has-passive-events\":229,\"mouse-event-offset\":242}],386:[function(t,e,r){\"use strict\";var n=t(\"../../lib/events\"),i=t(\"../../lib/throttle\"),a=t(\"../../lib/dom\").getGraphDiv,o=t(\"../fx/constants\"),s=e.exports={};s.wrapped=function(t,e,r){(t=a(t))._fullLayout&&i.clear(t._fullLayout._uid+o.HOVERID),s.raw(t,e,r)},s.raw=function(t,e){var r=t._fullLayout,i=t._hoverdata;e||(e={}),e.target&&!t._dragged&&!1===n.triggerHandler(t,\"plotly_beforehover\",e)||(r._hoverlayer.selectAll(\"g\").remove(),r._hoverlayer.selectAll(\"line\").remove(),r._hoverlayer.selectAll(\"circle\").remove(),t._hoverdata=void 0,e.target&&i&&t.emit(\"plotly_unhover\",{event:e,points:i}))}},{\"../../lib/dom\":491,\"../../lib/events\":492,\"../../lib/throttle\":530,\"../fx/constants\":400}],387:[function(t,e,r){\"use strict\";r.dash={valType:\"string\",values:[\"solid\",\"dot\",\"dash\",\"longdash\",\"dashdot\",\"longdashdot\"],dflt:\"solid\",editType:\"style\"},r.pattern={shape:{valType:\"enumerated\",values:[\"\",\"/\",\"\\\\\",\"x\",\"-\",\"|\",\"+\",\".\"],dflt:\"\",arrayOk:!0,editType:\"style\"},fillmode:{valType:\"enumerated\",values:[\"replace\",\"overlay\"],dflt:\"replace\",editType:\"style\"},bgcolor:{valType:\"color\",arrayOk:!0,editType:\"style\"},fgcolor:{valType:\"color\",arrayOk:!0,editType:\"style\"},fgopacity:{valType:\"number\",editType:\"style\",min:0,max:1},size:{valType:\"number\",min:0,dflt:8,arrayOk:!0,editType:\"style\"},solidity:{valType:\"number\",min:0,max:1,dflt:.3,arrayOk:!0,editType:\"style\"},editType:\"style\"}},{}],388:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=i.numberFormat,o=t(\"fast-isnumeric\"),s=t(\"tinycolor2\"),l=t(\"../../registry\"),c=t(\"../color\"),u=t(\"../colorscale\"),f=i.strTranslate,h=t(\"../../lib/svg_text_utils\"),p=t(\"../../constants/xmlns_namespaces\"),d=t(\"../../constants/alignment\").LINE_SPACING,g=t(\"../../constants/interactions\").DESELECTDIM,m=t(\"../../traces/scatter/subtypes\"),v=t(\"../../traces/scatter/make_bubble_size_func\"),y=t(\"../../components/fx/helpers\").appendArrayPointValue,x=e.exports={};x.font=function(t,e,r,n){i.isPlainObject(e)&&(n=e.color,r=e.size,e=e.family),e&&t.style(\"font-family\",e),r+1&&t.style(\"font-size\",r+\"px\"),n&&t.call(c.fill,n)},x.setPosition=function(t,e,r){t.attr(\"x\",e).attr(\"y\",r)},x.setSize=function(t,e,r){t.attr(\"width\",e).attr(\"height\",r)},x.setRect=function(t,e,r,n,i){t.call(x.setPosition,e,r).call(x.setSize,n,i)},x.translatePoint=function(t,e,r,n){var i=r.c2p(t.x),a=n.c2p(t.y);return!!(o(i)&&o(a)&&e.node())&&(\"text\"===e.node().nodeName?e.attr(\"x\",i).attr(\"y\",a):e.attr(\"transform\",f(i,a)),!0)},x.translatePoints=function(t,e,r){t.each((function(t){var i=n.select(this);x.translatePoint(t,i,e,r)}))},x.hideOutsideRangePoint=function(t,e,r,n,i,a){e.attr(\"display\",r.isPtWithinRange(t,i)&&n.isPtWithinRange(t,a)?null:\"none\")},x.hideOutsideRangePoints=function(t,e){if(e._hasClipOnAxisFalse){var r=e.xaxis,i=e.yaxis;t.each((function(e){var a=e[0].trace,o=a.xcalendar,s=a.ycalendar,c=l.traceIs(a,\"bar-like\")?\".bartext\":\".point,.textpoint\";t.selectAll(c).each((function(t){x.hideOutsideRangePoint(t,n.select(this),r,i,o,s)}))}))}},x.crispRound=function(t,e,r){return e&&o(e)?t._context.staticPlot?e:e<1?1:Math.round(e):r||0},x.singleLineStyle=function(t,e,r,n,i){e.style(\"fill\",\"none\");var a=(((t||[])[0]||{}).trace||{}).line||{},o=r||a.width||0,s=i||a.dash||\"\";c.stroke(e,n||a.color),x.dashLine(e,s,o)},x.lineGroupStyle=function(t,e,r,i){t.style(\"fill\",\"none\").each((function(t){var a=(((t||[])[0]||{}).trace||{}).line||{},o=e||a.width||0,s=i||a.dash||\"\";n.select(this).call(c.stroke,r||a.color).call(x.dashLine,s,o)}))},x.dashLine=function(t,e,r){r=+r||0,e=x.dashStyle(e,r),t.style({\"stroke-dasharray\":e,\"stroke-width\":r+\"px\"})},x.dashStyle=function(t,e){e=+e||1;var r=Math.max(e,3);return\"solid\"===t?t=\"\":\"dot\"===t?t=r+\"px,\"+r+\"px\":\"dash\"===t?t=3*r+\"px,\"+3*r+\"px\":\"longdash\"===t?t=5*r+\"px,\"+5*r+\"px\":\"dashdot\"===t?t=3*r+\"px,\"+r+\"px,\"+r+\"px,\"+r+\"px\":\"longdashdot\"===t&&(t=5*r+\"px,\"+2*r+\"px,\"+r+\"px,\"+2*r+\"px\"),t},x.singleFillStyle=function(t){var e=(((n.select(t.node()).data()[0]||[])[0]||{}).trace||{}).fillcolor;e&&t.call(c.fill,e)},x.fillGroupStyle=function(t){t.style(\"stroke-width\",0).each((function(t){var e=n.select(this);t[0].trace&&e.call(c.fill,t[0].trace.fillcolor)}))};var b=t(\"./symbol_defs\");x.symbolNames=[],x.symbolFuncs=[],x.symbolNeedLines={},x.symbolNoDot={},x.symbolNoFill={},x.symbolList=[],Object.keys(b).forEach((function(t){var e=b[t],r=e.n;x.symbolList.push(r,String(r),t,r+100,String(r+100),t+\"-open\"),x.symbolNames[r]=t,x.symbolFuncs[r]=e.f,e.needLine&&(x.symbolNeedLines[r]=!0),e.noDot?x.symbolNoDot[r]=!0:x.symbolList.push(r+200,String(r+200),t+\"-dot\",r+300,String(r+300),t+\"-open-dot\"),e.noFill&&(x.symbolNoFill[r]=!0)}));var _=x.symbolNames.length;function w(t,e){var r=t%100;return x.symbolFuncs[r](e)+(t>=200?\"M0,0.5L0.5,0L0,-0.5L-0.5,0Z\":\"\")}x.symbolNumber=function(t){if(o(t))t=+t;else if(\"string\"==typeof t){var e=0;t.indexOf(\"-open\")>0&&(e=100,t=t.replace(\"-open\",\"\")),t.indexOf(\"-dot\")>0&&(e+=200,t=t.replace(\"-dot\",\"\")),(t=x.symbolNames.indexOf(t))>=0&&(t+=e)}return t%100>=_||t>=400?0:Math.floor(Math.max(t,0))};var T={x1:1,x2:0,y1:0,y2:0},k={x1:0,x2:0,y1:1,y2:0},A=a(\"~f\"),M={radial:{node:\"radialGradient\"},radialreversed:{node:\"radialGradient\",reversed:!0},horizontal:{node:\"linearGradient\",attrs:T},horizontalreversed:{node:\"linearGradient\",attrs:T,reversed:!0},vertical:{node:\"linearGradient\",attrs:k},verticalreversed:{node:\"linearGradient\",attrs:k,reversed:!0}};x.gradient=function(t,e,r,a,o,l){for(var u=o.length,f=M[a],h=new Array(u),p=0;p\"+v(t);d._gradientUrlQueryParts[y]=1},x.pattern=function(t,e,r,a,o,s,l,u,f,h,p,d){var g=\"legend\"===e;u&&(\"overlay\"===f?(h=u,p=c.contrast(h)):(h=void 0,p=u));var m,v,y,x,b,_,w,T,k,A,M,S=r._fullLayout,E=\"p\"+S._uid+\"-\"+a,L={};switch(o){case\"/\":m=s*Math.sqrt(2),v=s*Math.sqrt(2),_=\"path\",L={d:y=\"M-\"+m/4+\",\"+v/4+\"l\"+m/2+\",-\"+v/2+\"M0,\"+v+\"L\"+m+\",0M\"+m/4*3+\",\"+v/4*5+\"l\"+m/2+\",-\"+v/2,opacity:d,stroke:p,\"stroke-width\":(x=l*s)+\"px\"};break;case\"\\\\\":m=s*Math.sqrt(2),v=s*Math.sqrt(2),_=\"path\",L={d:y=\"M\"+m/4*3+\",-\"+v/4+\"l\"+m/2+\",\"+v/2+\"M0,0L\"+m+\",\"+v+\"M-\"+m/4+\",\"+v/4*3+\"l\"+m/2+\",\"+v/2,opacity:d,stroke:p,\"stroke-width\":(x=l*s)+\"px\"};break;case\"x\":m=s*Math.sqrt(2),v=s*Math.sqrt(2),y=\"M-\"+m/4+\",\"+v/4+\"l\"+m/2+\",-\"+v/2+\"M0,\"+v+\"L\"+m+\",0M\"+m/4*3+\",\"+v/4*5+\"l\"+m/2+\",-\"+v/2+\"M\"+m/4*3+\",-\"+v/4+\"l\"+m/2+\",\"+v/2+\"M0,0L\"+m+\",\"+v+\"M-\"+m/4+\",\"+v/4*3+\"l\"+m/2+\",\"+v/2,x=s-s*Math.sqrt(1-l),_=\"path\",L={d:y,opacity:d,stroke:p,\"stroke-width\":x+\"px\"};break;case\"|\":_=\"path\",_=\"path\",L={d:y=\"M\"+(m=s)/2+\",0L\"+m/2+\",\"+(v=s),opacity:d,stroke:p,\"stroke-width\":(x=l*s)+\"px\"};break;case\"-\":_=\"path\",_=\"path\",L={d:y=\"M0,\"+(v=s)/2+\"L\"+(m=s)+\",\"+v/2,opacity:d,stroke:p,\"stroke-width\":(x=l*s)+\"px\"};break;case\"+\":_=\"path\",y=\"M\"+(m=s)/2+\",0L\"+m/2+\",\"+(v=s)+\"M0,\"+v/2+\"L\"+m+\",\"+v/2,x=s-s*Math.sqrt(1-l),_=\"path\",L={d:y,opacity:d,stroke:p,\"stroke-width\":x+\"px\"};break;case\".\":m=s,v=s,l.pattern_filled\";S._patternUrlQueryParts[I]=1},x.initGradients=function(t){var e=t._fullLayout;i.ensureSingle(e._defs,\"g\",\"gradients\").selectAll(\"linearGradient,radialGradient\").remove(),e._gradientUrlQueryParts={}},x.initPatterns=function(t){var e=t._fullLayout;i.ensureSingle(e._defs,\"g\",\"patterns\").selectAll(\"pattern\").remove(),e._patternUrlQueryParts={}},x.getPatternAttr=function(t,e,r){return t&&i.isArrayOrTypedArray(t)?e=100,e.attr(\"d\",w(u,l))}var f,h,p,d=!1;if(t.so)p=s.outlierwidth,h=s.outliercolor,f=o.outliercolor;else{var g=(s||{}).width;p=(t.mlw+1||g+1||(t.trace?(t.trace.marker.line||{}).width:0)+1)-1||0,h=\"mlc\"in t?t.mlcc=n.lineScale(t.mlc):i.isArrayOrTypedArray(s.color)?c.defaultLine:s.color,i.isArrayOrTypedArray(o.color)&&(f=c.defaultLine,d=!0),f=\"mc\"in t?t.mcc=n.markerScale(t.mc):o.color||\"rgba(0,0,0,0)\",n.selectedColorFn&&(f=n.selectedColorFn(t))}if(t.om)e.call(c.stroke,f).style({\"stroke-width\":(p||1)+\"px\",fill:\"none\"});else{e.style(\"stroke-width\",(t.isBlank?0:p)+\"px\");var m=o.gradient,v=t.mgt;v?d=!0:v=m&&m.type,i.isArrayOrTypedArray(v)&&(v=v[0],M[v]||(v=0));var y=o.pattern,b=y&&x.getPatternAttr(y.shape,t.i,\"\");if(v&&\"none\"!==v){var _=t.mgc;_?d=!0:_=m.color;var T=r.uid;d&&(T+=\"-\"+t.i),x.gradient(e,a,T,v,[[0,_],[1,f]],\"fill\")}else if(b){var k=x.getPatternAttr(y.bgcolor,t.i,null),A=x.getPatternAttr(y.fgcolor,t.i,null),S=y.fgopacity,E=x.getPatternAttr(y.size,t.i,8),L=x.getPatternAttr(y.solidity,t.i,.3),C=t.mcc||i.isArrayOrTypedArray(y.shape)||i.isArrayOrTypedArray(y.bgcolor)||i.isArrayOrTypedArray(y.size)||i.isArrayOrTypedArray(y.solidity),P=r.uid;C&&(P+=\"-\"+t.i),x.pattern(e,\"point\",a,P,b,E,L,t.mcc,y.fillmode,k,A,S)}else c.fill(e,f);p&&c.stroke(e,h)}},x.makePointStyleFns=function(t){var e={},r=t.marker;return e.markerScale=x.tryColorscale(r,\"\"),e.lineScale=x.tryColorscale(r,\"line\"),l.traceIs(t,\"symbols\")&&(e.ms2mrc=m.isBubble(t)?v(t):function(){return(r.size||6)/2}),t.selectedpoints&&i.extendFlat(e,x.makeSelectedPointStyleFns(t)),e},x.makeSelectedPointStyleFns=function(t){var e={},r=t.selected||{},n=t.unselected||{},a=t.marker||{},o=r.marker||{},s=n.marker||{},c=a.opacity,u=o.opacity,f=s.opacity,h=void 0!==u,p=void 0!==f;(i.isArrayOrTypedArray(c)||h||p)&&(e.selectedOpacityFn=function(t){var e=void 0===t.mo?a.opacity:t.mo;return t.selected?h?u:e:p?f:g*e});var d=a.color,m=o.color,v=s.color;(m||v)&&(e.selectedColorFn=function(t){var e=t.mcc||d;return t.selected?m||e:v||e});var y=a.size,x=o.size,b=s.size,_=void 0!==x,w=void 0!==b;return l.traceIs(t,\"symbols\")&&(_||w)&&(e.selectedSizeFn=function(t){var e=t.mrc||y/2;return t.selected?_?x/2:e:w?b/2:e}),e},x.makeSelectedTextStyleFns=function(t){var e={},r=t.selected||{},n=t.unselected||{},i=t.textfont||{},a=r.textfont||{},o=n.textfont||{},s=i.color,l=a.color,u=o.color;return e.selectedTextColorFn=function(t){var e=t.tc||s;return t.selected?l||e:u||(l?e:c.addOpacity(e,g))},e},x.selectedPointStyle=function(t,e){if(t.size()&&e.selectedpoints){var r=x.makeSelectedPointStyleFns(e),i=e.marker||{},a=[];r.selectedOpacityFn&&a.push((function(t,e){t.style(\"opacity\",r.selectedOpacityFn(e))})),r.selectedColorFn&&a.push((function(t,e){c.fill(t,r.selectedColorFn(e))})),r.selectedSizeFn&&a.push((function(t,e){var n=e.mx||i.symbol||0,a=r.selectedSizeFn(e);t.attr(\"d\",w(x.symbolNumber(n),a)),e.mrc2=a})),a.length&&t.each((function(t){for(var e=n.select(this),r=0;r0?r:0}x.textPointStyle=function(t,e,r){if(t.size()){var a;if(e.selectedpoints){var o=x.makeSelectedTextStyleFns(e);a=o.selectedTextColorFn}var s=e.texttemplate,l=r._fullLayout;t.each((function(t){var o=n.select(this),c=s?i.extractOption(t,e,\"txt\",\"texttemplate\"):i.extractOption(t,e,\"tx\",\"text\");if(c||0===c){if(s){var u=e._module.formatLabels,f=u?u(t,e,l):{},p={};y(p,e,t.i);var d=e._meta||{};c=i.texttemplateString(c,f,l._d3locale,p,t,d)}var g=t.tp||e.textposition,m=L(t,e),v=a?a(t):t.tc||e.textfont.color;o.call(x.font,t.tf||e.textfont.family,m,v).text(c).call(h.convertToTspans,r).call(E,g,m,t.mrc)}else o.remove()}))}},x.selectedTextStyle=function(t,e){if(t.size()&&e.selectedpoints){var r=x.makeSelectedTextStyleFns(e);t.each((function(t){var i=n.select(this),a=r.selectedTextColorFn(t),o=t.tp||e.textposition,s=L(t,e);c.fill(i,a);var u=l.traceIs(e,\"bar-like\");E(i,o,s,t.mrc2||t.mrc,u)}))}};function C(t,e,r,i){var a=t[0]-e[0],o=t[1]-e[1],s=r[0]-e[0],l=r[1]-e[1],c=Math.pow(a*a+o*o,.25),u=Math.pow(s*s+l*l,.25),f=(u*u*a-c*c*s)*i,h=(u*u*o-c*c*l)*i,p=3*u*(c+u),d=3*c*(c+u);return[[n.round(e[0]+(p&&f/p),2),n.round(e[1]+(p&&h/p),2)],[n.round(e[0]-(d&&f/d),2),n.round(e[1]-(d&&h/d),2)]]}x.smoothopen=function(t,e){if(t.length<3)return\"M\"+t.join(\"L\");var r,n=\"M\"+t[0],i=[];for(r=1;r=1e4&&(x.savedBBoxes={},O=0),r&&(x.savedBBoxes[r]=m),O++,i.extendFlat({},m)},x.setClipUrl=function(t,e,r){t.attr(\"clip-path\",D(e,r))},x.getTranslate=function(t){var e=(t[t.attr?\"attr\":\"getAttribute\"](\"transform\")||\"\").replace(/.*\\btranslate\\((-?\\d*\\.?\\d*)[^-\\d]*(-?\\d*\\.?\\d*)[^\\d].*/,(function(t,e,r){return[e,r].join(\" \")})).split(\" \");return{x:+e[0]||0,y:+e[1]||0}},x.setTranslate=function(t,e,r){var n=t.attr?\"attr\":\"getAttribute\",i=t.attr?\"attr\":\"setAttribute\",a=t[n](\"transform\")||\"\";return e=e||0,r=r||0,a=a.replace(/(\\btranslate\\(.*?\\);?)/,\"\").trim(),a=(a+=f(e,r)).trim(),t[i](\"transform\",a),a},x.getScale=function(t){var e=(t[t.attr?\"attr\":\"getAttribute\"](\"transform\")||\"\").replace(/.*\\bscale\\((\\d*\\.?\\d*)[^\\d]*(\\d*\\.?\\d*)[^\\d].*/,(function(t,e,r){return[e,r].join(\" \")})).split(\" \");return{x:+e[0]||1,y:+e[1]||1}},x.setScale=function(t,e,r){var n=t.attr?\"attr\":\"getAttribute\",i=t.attr?\"attr\":\"setAttribute\",a=t[n](\"transform\")||\"\";return e=e||1,r=r||1,a=a.replace(/(\\bscale\\(.*?\\);?)/,\"\").trim(),a=(a+=\"scale(\"+e+\",\"+r+\")\").trim(),t[i](\"transform\",a),a};var R=/\\s*sc.*/;x.setPointGroupScale=function(t,e,r){if(e=e||1,r=r||1,t){var n=1===e&&1===r?\"\":\"scale(\"+e+\",\"+r+\")\";t.each((function(){var t=(this.getAttribute(\"transform\")||\"\").replace(R,\"\");t=(t+=n).trim(),this.setAttribute(\"transform\",t)}))}};var F=/translate\\([^)]*\\)\\s*$/;x.setTextPointsScale=function(t,e,r){t&&t.each((function(){var t,i=n.select(this),a=i.select(\"text\");if(a.node()){var o=parseFloat(a.attr(\"x\")||0),s=parseFloat(a.attr(\"y\")||0),l=(i.attr(\"transform\")||\"\").match(F);t=1===e&&1===r?[]:[f(o,s),\"scale(\"+e+\",\"+r+\")\",f(-o,-s)],l&&t.push(l),i.attr(\"transform\",t.join(\"\"))}}))}},{\"../../components/fx/helpers\":402,\"../../constants/alignment\":471,\"../../constants/interactions\":478,\"../../constants/xmlns_namespaces\":480,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../../registry\":638,\"../../traces/scatter/make_bubble_size_func\":943,\"../../traces/scatter/subtypes\":951,\"../color\":366,\"../colorscale\":378,\"./symbol_defs\":389,\"@plotly/d3\":58,\"fast-isnumeric\":190,tinycolor2:312}],389:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\");e.exports={circle:{n:0,f:function(t){var e=n.round(t,2);return\"M\"+e+\",0A\"+e+\",\"+e+\" 0 1,1 0,-\"+e+\"A\"+e+\",\"+e+\" 0 0,1 \"+e+\",0Z\"}},square:{n:1,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"H-\"+e+\"V-\"+e+\"H\"+e+\"Z\"}},diamond:{n:2,f:function(t){var e=n.round(1.3*t,2);return\"M\"+e+\",0L0,\"+e+\"L-\"+e+\",0L0,-\"+e+\"Z\"}},cross:{n:3,f:function(t){var e=n.round(.4*t,2),r=n.round(1.2*t,2);return\"M\"+r+\",\"+e+\"H\"+e+\"V\"+r+\"H-\"+e+\"V\"+e+\"H-\"+r+\"V-\"+e+\"H-\"+e+\"V-\"+r+\"H\"+e+\"V-\"+e+\"H\"+r+\"Z\"}},x:{n:4,f:function(t){var e=n.round(.8*t/Math.sqrt(2),2),r=\"l\"+e+\",\"+e,i=\"l\"+e+\",-\"+e,a=\"l-\"+e+\",-\"+e,o=\"l-\"+e+\",\"+e;return\"M0,\"+e+r+i+a+i+a+o+a+o+r+o+r+\"Z\"}},\"triangle-up\":{n:5,f:function(t){var e=n.round(2*t/Math.sqrt(3),2);return\"M-\"+e+\",\"+n.round(t/2,2)+\"H\"+e+\"L0,-\"+n.round(t,2)+\"Z\"}},\"triangle-down\":{n:6,f:function(t){var e=n.round(2*t/Math.sqrt(3),2);return\"M-\"+e+\",-\"+n.round(t/2,2)+\"H\"+e+\"L0,\"+n.round(t,2)+\"Z\"}},\"triangle-left\":{n:7,f:function(t){var e=n.round(2*t/Math.sqrt(3),2);return\"M\"+n.round(t/2,2)+\",-\"+e+\"V\"+e+\"L-\"+n.round(t,2)+\",0Z\"}},\"triangle-right\":{n:8,f:function(t){var e=n.round(2*t/Math.sqrt(3),2);return\"M-\"+n.round(t/2,2)+\",-\"+e+\"V\"+e+\"L\"+n.round(t,2)+\",0Z\"}},\"triangle-ne\":{n:9,f:function(t){var e=n.round(.6*t,2),r=n.round(1.2*t,2);return\"M-\"+r+\",-\"+e+\"H\"+e+\"V\"+r+\"Z\"}},\"triangle-se\":{n:10,f:function(t){var e=n.round(.6*t,2),r=n.round(1.2*t,2);return\"M\"+e+\",-\"+r+\"V\"+e+\"H-\"+r+\"Z\"}},\"triangle-sw\":{n:11,f:function(t){var e=n.round(.6*t,2),r=n.round(1.2*t,2);return\"M\"+r+\",\"+e+\"H-\"+e+\"V-\"+r+\"Z\"}},\"triangle-nw\":{n:12,f:function(t){var e=n.round(.6*t,2),r=n.round(1.2*t,2);return\"M-\"+e+\",\"+r+\"V-\"+e+\"H\"+r+\"Z\"}},pentagon:{n:13,f:function(t){var e=n.round(.951*t,2),r=n.round(.588*t,2),i=n.round(-t,2),a=n.round(-.309*t,2);return\"M\"+e+\",\"+a+\"L\"+r+\",\"+n.round(.809*t,2)+\"H-\"+r+\"L-\"+e+\",\"+a+\"L0,\"+i+\"Z\"}},hexagon:{n:14,f:function(t){var e=n.round(t,2),r=n.round(t/2,2),i=n.round(t*Math.sqrt(3)/2,2);return\"M\"+i+\",-\"+r+\"V\"+r+\"L0,\"+e+\"L-\"+i+\",\"+r+\"V-\"+r+\"L0,-\"+e+\"Z\"}},hexagon2:{n:15,f:function(t){var e=n.round(t,2),r=n.round(t/2,2),i=n.round(t*Math.sqrt(3)/2,2);return\"M-\"+r+\",\"+i+\"H\"+r+\"L\"+e+\",0L\"+r+\",-\"+i+\"H-\"+r+\"L-\"+e+\",0Z\"}},octagon:{n:16,f:function(t){var e=n.round(.924*t,2),r=n.round(.383*t,2);return\"M-\"+r+\",-\"+e+\"H\"+r+\"L\"+e+\",-\"+r+\"V\"+r+\"L\"+r+\",\"+e+\"H-\"+r+\"L-\"+e+\",\"+r+\"V-\"+r+\"Z\"}},star:{n:17,f:function(t){var e=1.4*t,r=n.round(.225*e,2),i=n.round(.951*e,2),a=n.round(.363*e,2),o=n.round(.588*e,2),s=n.round(-e,2),l=n.round(-.309*e,2),c=n.round(.118*e,2),u=n.round(.809*e,2);return\"M\"+r+\",\"+l+\"H\"+i+\"L\"+a+\",\"+c+\"L\"+o+\",\"+u+\"L0,\"+n.round(.382*e,2)+\"L-\"+o+\",\"+u+\"L-\"+a+\",\"+c+\"L-\"+i+\",\"+l+\"H-\"+r+\"L0,\"+s+\"Z\"}},hexagram:{n:18,f:function(t){var e=n.round(.66*t,2),r=n.round(.38*t,2),i=n.round(.76*t,2);return\"M-\"+i+\",0l-\"+r+\",-\"+e+\"h\"+i+\"l\"+r+\",-\"+e+\"l\"+r+\",\"+e+\"h\"+i+\"l-\"+r+\",\"+e+\"l\"+r+\",\"+e+\"h-\"+i+\"l-\"+r+\",\"+e+\"l-\"+r+\",-\"+e+\"h-\"+i+\"Z\"}},\"star-triangle-up\":{n:19,f:function(t){var e=n.round(t*Math.sqrt(3)*.8,2),r=n.round(.8*t,2),i=n.round(1.6*t,2),a=n.round(4*t,2),o=\"A \"+a+\",\"+a+\" 0 0 1 \";return\"M-\"+e+\",\"+r+o+e+\",\"+r+o+\"0,-\"+i+o+\"-\"+e+\",\"+r+\"Z\"}},\"star-triangle-down\":{n:20,f:function(t){var e=n.round(t*Math.sqrt(3)*.8,2),r=n.round(.8*t,2),i=n.round(1.6*t,2),a=n.round(4*t,2),o=\"A \"+a+\",\"+a+\" 0 0 1 \";return\"M\"+e+\",-\"+r+o+\"-\"+e+\",-\"+r+o+\"0,\"+i+o+e+\",-\"+r+\"Z\"}},\"star-square\":{n:21,f:function(t){var e=n.round(1.1*t,2),r=n.round(2*t,2),i=\"A \"+r+\",\"+r+\" 0 0 1 \";return\"M-\"+e+\",-\"+e+i+\"-\"+e+\",\"+e+i+e+\",\"+e+i+e+\",-\"+e+i+\"-\"+e+\",-\"+e+\"Z\"}},\"star-diamond\":{n:22,f:function(t){var e=n.round(1.4*t,2),r=n.round(1.9*t,2),i=\"A \"+r+\",\"+r+\" 0 0 1 \";return\"M-\"+e+\",0\"+i+\"0,\"+e+i+e+\",0\"+i+\"0,-\"+e+i+\"-\"+e+\",0Z\"}},\"diamond-tall\":{n:23,f:function(t){var e=n.round(.7*t,2),r=n.round(1.4*t,2);return\"M0,\"+r+\"L\"+e+\",0L0,-\"+r+\"L-\"+e+\",0Z\"}},\"diamond-wide\":{n:24,f:function(t){var e=n.round(1.4*t,2),r=n.round(.7*t,2);return\"M0,\"+r+\"L\"+e+\",0L0,-\"+r+\"L-\"+e+\",0Z\"}},hourglass:{n:25,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"H-\"+e+\"L\"+e+\",-\"+e+\"H-\"+e+\"Z\"},noDot:!0},bowtie:{n:26,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"V-\"+e+\"L-\"+e+\",\"+e+\"V-\"+e+\"Z\"},noDot:!0},\"circle-cross\":{n:27,f:function(t){var e=n.round(t,2);return\"M0,\"+e+\"V-\"+e+\"M\"+e+\",0H-\"+e+\"M\"+e+\",0A\"+e+\",\"+e+\" 0 1,1 0,-\"+e+\"A\"+e+\",\"+e+\" 0 0,1 \"+e+\",0Z\"},needLine:!0,noDot:!0},\"circle-x\":{n:28,f:function(t){var e=n.round(t,2),r=n.round(t/Math.sqrt(2),2);return\"M\"+r+\",\"+r+\"L-\"+r+\",-\"+r+\"M\"+r+\",-\"+r+\"L-\"+r+\",\"+r+\"M\"+e+\",0A\"+e+\",\"+e+\" 0 1,1 0,-\"+e+\"A\"+e+\",\"+e+\" 0 0,1 \"+e+\",0Z\"},needLine:!0,noDot:!0},\"square-cross\":{n:29,f:function(t){var e=n.round(t,2);return\"M0,\"+e+\"V-\"+e+\"M\"+e+\",0H-\"+e+\"M\"+e+\",\"+e+\"H-\"+e+\"V-\"+e+\"H\"+e+\"Z\"},needLine:!0,noDot:!0},\"square-x\":{n:30,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"L-\"+e+\",-\"+e+\"M\"+e+\",-\"+e+\"L-\"+e+\",\"+e+\"M\"+e+\",\"+e+\"H-\"+e+\"V-\"+e+\"H\"+e+\"Z\"},needLine:!0,noDot:!0},\"diamond-cross\":{n:31,f:function(t){var e=n.round(1.3*t,2);return\"M\"+e+\",0L0,\"+e+\"L-\"+e+\",0L0,-\"+e+\"ZM0,-\"+e+\"V\"+e+\"M-\"+e+\",0H\"+e},needLine:!0,noDot:!0},\"diamond-x\":{n:32,f:function(t){var e=n.round(1.3*t,2),r=n.round(.65*t,2);return\"M\"+e+\",0L0,\"+e+\"L-\"+e+\",0L0,-\"+e+\"ZM-\"+r+\",-\"+r+\"L\"+r+\",\"+r+\"M-\"+r+\",\"+r+\"L\"+r+\",-\"+r},needLine:!0,noDot:!0},\"cross-thin\":{n:33,f:function(t){var e=n.round(1.4*t,2);return\"M0,\"+e+\"V-\"+e+\"M\"+e+\",0H-\"+e},needLine:!0,noDot:!0,noFill:!0},\"x-thin\":{n:34,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"L-\"+e+\",-\"+e+\"M\"+e+\",-\"+e+\"L-\"+e+\",\"+e},needLine:!0,noDot:!0,noFill:!0},asterisk:{n:35,f:function(t){var e=n.round(1.2*t,2),r=n.round(.85*t,2);return\"M0,\"+e+\"V-\"+e+\"M\"+e+\",0H-\"+e+\"M\"+r+\",\"+r+\"L-\"+r+\",-\"+r+\"M\"+r+\",-\"+r+\"L-\"+r+\",\"+r},needLine:!0,noDot:!0,noFill:!0},hash:{n:36,f:function(t){var e=n.round(t/2,2),r=n.round(t,2);return\"M\"+e+\",\"+r+\"V-\"+r+\"m-\"+r+\",0V\"+r+\"M\"+r+\",\"+e+\"H-\"+r+\"m0,-\"+r+\"H\"+r},needLine:!0,noFill:!0},\"y-up\":{n:37,f:function(t){var e=n.round(1.2*t,2),r=n.round(1.6*t,2),i=n.round(.8*t,2);return\"M-\"+e+\",\"+i+\"L0,0M\"+e+\",\"+i+\"L0,0M0,-\"+r+\"L0,0\"},needLine:!0,noDot:!0,noFill:!0},\"y-down\":{n:38,f:function(t){var e=n.round(1.2*t,2),r=n.round(1.6*t,2),i=n.round(.8*t,2);return\"M-\"+e+\",-\"+i+\"L0,0M\"+e+\",-\"+i+\"L0,0M0,\"+r+\"L0,0\"},needLine:!0,noDot:!0,noFill:!0},\"y-left\":{n:39,f:function(t){var e=n.round(1.2*t,2),r=n.round(1.6*t,2),i=n.round(.8*t,2);return\"M\"+i+\",\"+e+\"L0,0M\"+i+\",-\"+e+\"L0,0M-\"+r+\",0L0,0\"},needLine:!0,noDot:!0,noFill:!0},\"y-right\":{n:40,f:function(t){var e=n.round(1.2*t,2),r=n.round(1.6*t,2),i=n.round(.8*t,2);return\"M-\"+i+\",\"+e+\"L0,0M-\"+i+\",-\"+e+\"L0,0M\"+r+\",0L0,0\"},needLine:!0,noDot:!0,noFill:!0},\"line-ew\":{n:41,f:function(t){var e=n.round(1.4*t,2);return\"M\"+e+\",0H-\"+e},needLine:!0,noDot:!0,noFill:!0},\"line-ns\":{n:42,f:function(t){var e=n.round(1.4*t,2);return\"M0,\"+e+\"V-\"+e},needLine:!0,noDot:!0,noFill:!0},\"line-ne\":{n:43,f:function(t){var e=n.round(t,2);return\"M\"+e+\",-\"+e+\"L-\"+e+\",\"+e},needLine:!0,noDot:!0,noFill:!0},\"line-nw\":{n:44,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"L-\"+e+\",-\"+e},needLine:!0,noDot:!0,noFill:!0},\"arrow-up\":{n:45,f:function(t){var e=n.round(t,2);return\"M0,0L-\"+e+\",\"+n.round(2*t,2)+\"H\"+e+\"Z\"},noDot:!0},\"arrow-down\":{n:46,f:function(t){var e=n.round(t,2);return\"M0,0L-\"+e+\",-\"+n.round(2*t,2)+\"H\"+e+\"Z\"},noDot:!0},\"arrow-left\":{n:47,f:function(t){var e=n.round(2*t,2),r=n.round(t,2);return\"M0,0L\"+e+\",-\"+r+\"V\"+r+\"Z\"},noDot:!0},\"arrow-right\":{n:48,f:function(t){var e=n.round(2*t,2),r=n.round(t,2);return\"M0,0L-\"+e+\",-\"+r+\"V\"+r+\"Z\"},noDot:!0},\"arrow-bar-up\":{n:49,f:function(t){var e=n.round(t,2);return\"M-\"+e+\",0H\"+e+\"M0,0L-\"+e+\",\"+n.round(2*t,2)+\"H\"+e+\"Z\"},needLine:!0,noDot:!0},\"arrow-bar-down\":{n:50,f:function(t){var e=n.round(t,2);return\"M-\"+e+\",0H\"+e+\"M0,0L-\"+e+\",-\"+n.round(2*t,2)+\"H\"+e+\"Z\"},needLine:!0,noDot:!0},\"arrow-bar-left\":{n:51,f:function(t){var e=n.round(2*t,2),r=n.round(t,2);return\"M0,-\"+r+\"V\"+r+\"M0,0L\"+e+\",-\"+r+\"V\"+r+\"Z\"},needLine:!0,noDot:!0},\"arrow-bar-right\":{n:52,f:function(t){var e=n.round(2*t,2),r=n.round(t,2);return\"M0,-\"+r+\"V\"+r+\"M0,0L-\"+e+\",-\"+r+\"V\"+r+\"Z\"},needLine:!0,noDot:!0}}},{\"@plotly/d3\":58}],390:[function(t,e,r){\"use strict\";e.exports={visible:{valType:\"boolean\",editType:\"calc\"},type:{valType:\"enumerated\",values:[\"percent\",\"constant\",\"sqrt\",\"data\"],editType:\"calc\"},symmetric:{valType:\"boolean\",editType:\"calc\"},array:{valType:\"data_array\",editType:\"calc\"},arrayminus:{valType:\"data_array\",editType:\"calc\"},value:{valType:\"number\",min:0,dflt:10,editType:\"calc\"},valueminus:{valType:\"number\",min:0,dflt:10,editType:\"calc\"},traceref:{valType:\"integer\",min:0,dflt:0,editType:\"style\"},tracerefminus:{valType:\"integer\",min:0,dflt:0,editType:\"style\"},copy_ystyle:{valType:\"boolean\",editType:\"plot\"},copy_zstyle:{valType:\"boolean\",editType:\"style\"},color:{valType:\"color\",editType:\"style\"},thickness:{valType:\"number\",min:0,dflt:2,editType:\"style\"},width:{valType:\"number\",min:0,editType:\"plot\"},editType:\"calc\",_deprecated:{opacity:{valType:\"number\",editType:\"style\"}}}},{}],391:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../registry\"),a=t(\"../../plots/cartesian/axes\"),o=t(\"../../lib\"),s=t(\"./compute_error\");function l(t,e,r,i){var l=e[\"error_\"+i]||{},c=[];if(l.visible&&-1!==[\"linear\",\"log\"].indexOf(r.type)){for(var u=s(l),f=0;f0;e.each((function(e){var f,h=e[0].trace,p=h.error_x||{},d=h.error_y||{};h.ids&&(f=function(t){return t.id});var g=o.hasMarkers(h)&&h.marker.maxdisplayed>0;d.visible||p.visible||(e=[]);var m=n.select(this).selectAll(\"g.errorbar\").data(e,f);if(m.exit().remove(),e.length){p.visible||m.selectAll(\"path.xerror\").remove(),d.visible||m.selectAll(\"path.yerror\").remove(),m.style(\"opacity\",1);var v=m.enter().append(\"g\").classed(\"errorbar\",!0);u&&v.style(\"opacity\",0).transition().duration(s.duration).style(\"opacity\",1),a.setClipUrl(m,r.layerClipId,t),m.each((function(t){var e=n.select(this),r=function(t,e,r){var n={x:e.c2p(t.x),y:r.c2p(t.y)};void 0!==t.yh&&(n.yh=r.c2p(t.yh),n.ys=r.c2p(t.ys),i(n.ys)||(n.noYS=!0,n.ys=r.c2p(t.ys,!0)));void 0!==t.xh&&(n.xh=e.c2p(t.xh),n.xs=e.c2p(t.xs),i(n.xs)||(n.noXS=!0,n.xs=e.c2p(t.xs,!0)));return n}(t,l,c);if(!g||t.vis){var a,o=e.select(\"path.yerror\");if(d.visible&&i(r.x)&&i(r.yh)&&i(r.ys)){var f=d.width;a=\"M\"+(r.x-f)+\",\"+r.yh+\"h\"+2*f+\"m-\"+f+\",0V\"+r.ys,r.noYS||(a+=\"m-\"+f+\",0h\"+2*f),!o.size()?o=e.append(\"path\").style(\"vector-effect\",\"non-scaling-stroke\").classed(\"yerror\",!0):u&&(o=o.transition().duration(s.duration).ease(s.easing)),o.attr(\"d\",a)}else o.remove();var h=e.select(\"path.xerror\");if(p.visible&&i(r.y)&&i(r.xh)&&i(r.xs)){var m=(p.copy_ystyle?d:p).width;a=\"M\"+r.xh+\",\"+(r.y-m)+\"v\"+2*m+\"m0,-\"+m+\"H\"+r.xs,r.noXS||(a+=\"m0,-\"+m+\"v\"+2*m),!h.size()?h=e.append(\"path\").style(\"vector-effect\",\"non-scaling-stroke\").classed(\"xerror\",!0):u&&(h=h.transition().duration(s.duration).ease(s.easing)),h.attr(\"d\",a)}else h.remove()}}))}}))}},{\"../../traces/scatter/subtypes\":951,\"../drawing\":388,\"@plotly/d3\":58,\"fast-isnumeric\":190}],396:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../color\");e.exports=function(t){t.each((function(t){var e=t[0].trace,r=e.error_y||{},a=e.error_x||{},o=n.select(this);o.selectAll(\"path.yerror\").style(\"stroke-width\",r.thickness+\"px\").call(i.stroke,r.color),a.copy_ystyle&&(a=r),o.selectAll(\"path.xerror\").style(\"stroke-width\",a.thickness+\"px\").call(i.stroke,a.color)}))}},{\"../color\":366,\"@plotly/d3\":58}],397:[function(t,e,r){\"use strict\";var n=t(\"../../plots/font_attributes\"),i=t(\"./layout_attributes\").hoverlabel,a=t(\"../../lib/extend\").extendFlat;e.exports={hoverlabel:{bgcolor:a({},i.bgcolor,{arrayOk:!0}),bordercolor:a({},i.bordercolor,{arrayOk:!0}),font:n({arrayOk:!0,editType:\"none\"}),align:a({},i.align,{arrayOk:!0}),namelength:a({},i.namelength,{arrayOk:!0}),editType:\"none\"}}},{\"../../lib/extend\":493,\"../../plots/font_attributes\":585,\"./layout_attributes\":407}],398:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../registry\");function a(t,e,r,i){i=i||n.identity,Array.isArray(t)&&(e[0][r]=i(t))}e.exports=function(t){var e=t.calcdata,r=t._fullLayout;function o(t){return function(e){return n.coerceHoverinfo({hoverinfo:e},{_module:t._module},r)}}for(var s=0;s=0&&r.index_[0]._length||ot<0||ot>w[0]._length)return d.unhoverRaw(t,e)}if(e.pointerX=at+_[0]._offset,e.pointerY=ot+w[0]._offset,V=\"xval\"in e?v.flat(l,e.xval):v.p2c(_,at),H=\"yval\"in e?v.flat(l,e.yval):v.p2c(w,ot),!i(V[0])||!i(H[0]))return o.warn(\"Fx.hover failed\",e,t),d.unhoverRaw(t,e)}var ct=1/0;function ut(t,r){for(G=0;Gtt&&(et.splice(0,tt),ct=et[0].distance),y&&0!==B&&0===et.length){$.distance=B,$.index=!1;var f=W._module.hoverPoints($,K,Q,\"closest\",{hoverLayer:u._hoverlayer});if(f&&(f=f.filter((function(t){return t.spikeDistance<=B}))),f&&f.length){var h,d=f.filter((function(t){return t.xa.showspikes&&\"hovered data\"!==t.xa.spikesnap}));if(d.length){var g=d[0];i(g.x0)&&i(g.y0)&&(h=ht(g),(!nt.vLinePoint||nt.vLinePoint.spikeDistance>h.spikeDistance)&&(nt.vLinePoint=h))}var m=f.filter((function(t){return t.ya.showspikes&&\"hovered data\"!==t.ya.spikesnap}));if(m.length){var x=m[0];i(x.x0)&&i(x.y0)&&(h=ht(x),(!nt.hLinePoint||nt.hLinePoint.spikeDistance>h.spikeDistance)&&(nt.hLinePoint=h))}}}}}function ft(t,e,r){for(var n,i=null,a=1/0,o=0;o0&&Math.abs(t.distance)Tt-1;Mt--)Ct(et[Mt]);et=St,mt()}var Pt=t._hoverdata,It=[],Ot=j(t),zt=U(t);for(q=0;q1||et.length>1)||\"closest\"===P&&it&&et.length>1,Wt=p.combine(u.plot_bgcolor||p.background,u.paper_bgcolor),Xt=I(et,{gd:t,hovermode:P,rotateLabels:Yt,bgColor:Wt,container:u._hoverlayer,outerContainer:u._paper.node(),commonLabelOpts:u.hoverlabel,hoverdistance:u.hoverdistance});v.isUnifiedHover(P)||(!function(t,e,r){var n,i,a,o,s,l,c,u=0,f=1,h=t.size(),p=new Array(h),d=0;function g(t){var e=t[0],r=t[t.length-1];if(i=e.pmin-e.pos-e.dp+e.size,a=r.pos+r.dp+r.size-e.pmax,i>.01){for(s=t.length-1;s>=0;s--)t[s].dp+=i;n=!1}if(!(a<.01)){if(i<-.01){for(s=t.length-1;s>=0;s--)t[s].dp-=a;n=!1}if(n){var c=0;for(o=0;oe.pmax&&c++;for(o=t.length-1;o>=0&&!(c<=0);o--)(l=t[o]).pos>e.pmax-1&&(l.del=!0,c--);for(o=0;o=0;s--)t[s].dp-=a;for(o=t.length-1;o>=0&&!(c<=0);o--)(l=t[o]).pos+l.dp+l.size>e.pmax&&(l.del=!0,c--)}}}t.each((function(t){var n=t[e],i=\"x\"===n._id.charAt(0),a=n.range;0===d&&a&&a[0]>a[1]!==i&&(f=-1),p[d++]=[{datum:t,traceIndex:t.trace.index,dp:0,pos:t.pos,posref:t.posref,size:t.by*(i?T:1)/2,pmin:0,pmax:i?r.width:r.height}]})),p.sort((function(t,e){return t[0].posref-e[0].posref||f*(e[0].traceIndex-t[0].traceIndex)}));for(;!n&&u<=h;){for(u++,n=!0,o=0;o.01&&y.pmin===x.pmin&&y.pmax===x.pmax){for(s=v.length-1;s>=0;s--)v[s].dp+=i;for(m.push.apply(m,v),p.splice(o+1,1),c=0,s=m.length-1;s>=0;s--)c+=m[s].dp;for(a=c/m.length,s=m.length-1;s>=0;s--)m[s].dp-=a;n=!1}else o++}p.forEach(g)}for(o=p.length-1;o>=0;o--){var b=p[o];for(s=b.length-1;s>=0;s--){var _=b[s],w=_.datum;w.offset=_.dp,w.del=_.del}}}(Xt,Yt?\"xa\":\"ya\",u),z(Xt,Yt,u._invScaleX,u._invScaleY));if(s&&s.tagName){var Zt=m.getComponentMethod(\"annotations\",\"hasClickToShow\")(t,It);f(n.select(s),Zt?\"pointer\":\"\")}if(!s||a||!function(t,e,r){if(!r||r.length!==t._hoverdata.length)return!0;for(var n=r.length-1;n>=0;n--){var i=r[n],a=t._hoverdata[n];if(i.curveNumber!==a.curveNumber||String(i.pointNumber)!==String(a.pointNumber)||String(i.pointNumbers)!==String(a.pointNumbers))return!0}return!1}(t,0,Pt))return;Pt&&t.emit(\"plotly_unhover\",{event:e,points:Pt});t.emit(\"plotly_hover\",{event:e,points:t._hoverdata,xaxes:_,yaxes:w,xvals:V,yvals:H})}(t,e,r,a,s)}))},r.loneHover=function(t,e){var r=!0;Array.isArray(t)||(r=!1,t=[t]);var i=e.gd,a=j(i),o=U(i),s=I(t.map((function(t){var r=t._x0||t.x0||t.x||0,n=t._x1||t.x1||t.x||0,s=t._y0||t.y0||t.y||0,l=t._y1||t.y1||t.y||0,c=t.eventData;if(c){var u=Math.min(r,n),f=Math.max(r,n),h=Math.min(s,l),d=Math.max(s,l),g=t.trace;if(m.traceIs(g,\"gl3d\")){var v=i._fullLayout[g.scene]._scene.container,y=v.offsetLeft,x=v.offsetTop;u+=y,f+=y,h+=x,d+=x}c.bbox={x0:u+o,x1:f+o,y0:h+a,y1:d+a},e.inOut_bbox&&e.inOut_bbox.push(c.bbox)}else c=!1;return{color:t.color||p.defaultLine,x0:t.x0||t.x||0,x1:t.x1||t.x||0,y0:t.y0||t.y||0,y1:t.y1||t.y||0,xLabel:t.xLabel,yLabel:t.yLabel,zLabel:t.zLabel,text:t.text,name:t.name,idealAlign:t.idealAlign,borderColor:t.borderColor,fontFamily:t.fontFamily,fontSize:t.fontSize,fontColor:t.fontColor,nameLength:t.nameLength,textAlign:t.textAlign,trace:t.trace||{index:0,hoverinfo:\"\"},xa:{_offset:0},ya:{_offset:0},index:0,hovertemplate:t.hovertemplate||!1,hovertemplateLabels:t.hovertemplateLabels||!1,eventData:c}})),{gd:i,hovermode:\"closest\",rotateLabels:!1,bgColor:e.bgColor||p.background,container:n.select(e.container),outerContainer:e.outerContainer||e.container}),l=0,c=0;return s.sort((function(t,e){return t.y0-e.y0})).each((function(t,r){var n=t.y0-t.by/2;t.offset=n-5([\\s\\S]*)<\\/extra>/;function I(t,e){var r=e.gd,i=r._fullLayout,a=e.hovermode,c=e.rotateLabels,f=e.bgColor,d=e.container,g=e.outerContainer,w=e.commonLabelOpts||{};if(0===t.length)return[[]];var T=e.fontFamily||y.HOVERFONT,k=e.fontSize||y.HOVERFONTSIZE,A=t[0],E=A.xa,L=A.ya,P=a.charAt(0),I=A[P+\"Label\"],z=V(r,g),D=z.top,R=z.width,F=z.height,B=void 0!==I&&A.distance<=e.hoverdistance&&(\"x\"===a||\"y\"===a);if(B){var N,j,U=!0;for(N=0;Ni.width-b?(m=i.width-b,e.attr(\"d\",\"M\"+(b-M)+\",0L\"+b+\",\"+x+M+\"v\"+x+(2*S+y.height)+\"H-\"+b+\"V\"+x+M+\"H\"+(b-2*M)+\"Z\")):e.attr(\"d\",\"M0,0L\"+M+\",\"+x+M+\"H\"+(S+y.width/2)+\"v\"+x+(2*S+y.height)+\"H-\"+(S+y.width/2)+\"V\"+x+M+\"H-\"+M+\"Z\")}else{var _,C,P;\"right\"===L.side?(_=\"start\",C=1,P=\"\",m=E._offset+E._length):(_=\"end\",C=-1,P=\"-\",m=E._offset),v=L._offset+(A.y0+A.y1)/2,l.attr(\"text-anchor\",_),e.attr(\"d\",\"M0,0L\"+P+M+\",\"+M+\"V\"+(S+y.height/2)+\"h\"+P+(2*S+y.width)+\"V-\"+(S+y.height/2)+\"H\"+P+M+\"V-\"+M+\"Z\");var O,z=y.height/2,R=D-y.top-z,F=\"clip\"+i._uid+\"commonlabel\"+L._id;if(m=0?at:ot+ct=0?ot:vt+ct=0?nt:it+ut=0?it:yt+ut=0,\"top\"!==t.idealAlign&&G||!Y?G?(z+=j/2,t.anchor=\"start\"):t.anchor=\"middle\":(z-=j/2,t.anchor=\"end\");else if(t.pos=z,G=P+N/2+W<=R,Y=P-N/2-W>=0,\"left\"!==t.idealAlign&&G||!Y)if(G)P+=N/2,t.anchor=\"start\";else{t.anchor=\"middle\";var X=W/2,Z=P+X-R,J=P-X;Z>0&&(P-=Z),J<0&&(P+=-J)}else P-=N/2,t.anchor=\"end\";w.attr(\"text-anchor\",t.anchor),E&&A.attr(\"text-anchor\",t.anchor),e.attr(\"transform\",s(P,z)+(c?l(_):\"\"))})),xt}function O(t,e,r,n,i,a){var s=\"\",l=\"\";void 0!==t.nameOverride&&(t.name=t.nameOverride),t.name&&(t.trace._meta&&(t.name=o.templateString(t.name,t.trace._meta)),s=B(t.name,t.nameLength));var c=r.charAt(0),u=\"x\"===c?\"y\":\"x\";void 0!==t.zLabel?(void 0!==t.xLabel&&(l+=\"x: \"+t.xLabel+\"
\"),void 0!==t.yLabel&&(l+=\"y: \"+t.yLabel+\"
\"),\"choropleth\"!==t.trace.type&&\"choroplethmapbox\"!==t.trace.type&&(l+=(l?\"z: \":\"\")+t.zLabel)):e&&t[c+\"Label\"]===i?l=t[u+\"Label\"]||\"\":void 0===t.xLabel?void 0!==t.yLabel&&\"scattercarpet\"!==t.trace.type&&(l=t.yLabel):l=void 0===t.yLabel?t.xLabel:\"(\"+t.xLabel+\", \"+t.yLabel+\")\",!t.text&&0!==t.text||Array.isArray(t.text)||(l+=(l?\"
\":\"\")+t.text),void 0!==t.extraText&&(l+=(l?\"
\":\"\")+t.extraText),a&&\"\"===l&&!t.hovertemplate&&(\"\"===s&&a.remove(),l=s);var f=t.hovertemplate||!1;if(f){var h=t.hovertemplateLabels||t;t[c+\"Label\"]!==i&&(h[c+\"other\"]=h[c+\"Val\"],h[c+\"otherLabel\"]=h[c+\"Label\"]),l=(l=o.hovertemplateString(f,h,n._d3locale,t.eventData[0]||{},t.trace._meta)).replace(P,(function(e,r){return s=B(r,t.nameLength),\"\"}))}return[l,s]}function z(t,e,r,i){var a=function(t){return t*r},o=function(t){return t*i};t.each((function(t){var r=n.select(this);if(t.del)return r.remove();var i=r.select(\"text.nums\"),s=t.anchor,l=\"end\"===s?-1:1,c={start:1,end:-1,middle:0}[s],f=c*(M+S),p=f+c*(t.txwidth+S),d=0,g=t.offset,m=\"middle\"===s;m&&(f-=t.tx2width/2,p+=t.txwidth/2+S),e&&(g*=-A,d=t.offset*k),r.select(\"path\").attr(\"d\",m?\"M-\"+a(t.bx/2+t.tx2width/2)+\",\"+o(g-t.by/2)+\"h\"+a(t.bx)+\"v\"+o(t.by)+\"h-\"+a(t.bx)+\"Z\":\"M0,0L\"+a(l*M+d)+\",\"+o(M+g)+\"v\"+o(t.by/2-M)+\"h\"+a(l*t.bx)+\"v-\"+o(t.by)+\"H\"+a(l*M+d)+\"V\"+o(g-M)+\"Z\");var v=d+f,y=g+t.ty0-t.by/2+S,x=t.textAlign||\"auto\";\"auto\"!==x&&(\"left\"===x&&\"start\"!==s?(i.attr(\"text-anchor\",\"start\"),v=m?-t.bx/2-t.tx2width/2+S:-t.bx-S):\"right\"===x&&\"end\"!==s&&(i.attr(\"text-anchor\",\"end\"),v=m?t.bx/2-t.tx2width/2-S:t.bx+S)),i.call(u.positionText,a(v),o(y)),t.tx2width&&(r.select(\"text.name\").call(u.positionText,a(p+c*S+d),o(g+t.ty0-t.by/2+S)),r.select(\"rect\").call(h.setRect,a(p+(c-1)*t.tx2width/2+d),o(g-t.by/2-1),a(t.tx2width),o(t.by+2)))}))}function D(t,e){var r=t.index,n=t.trace||{},a=t.cd[0],s=t.cd[r]||{};function l(t){return t||i(t)&&0===t}var c=Array.isArray(r)?function(t,e){var i=o.castOption(a,r,t);return l(i)?i:o.extractOption({},n,\"\",e)}:function(t,e){return o.extractOption(s,n,t,e)};function u(e,r,n){var i=c(r,n);l(i)&&(t[e]=i)}if(u(\"hoverinfo\",\"hi\",\"hoverinfo\"),u(\"bgcolor\",\"hbg\",\"hoverlabel.bgcolor\"),u(\"borderColor\",\"hbc\",\"hoverlabel.bordercolor\"),u(\"fontFamily\",\"htf\",\"hoverlabel.font.family\"),u(\"fontSize\",\"hts\",\"hoverlabel.font.size\"),u(\"fontColor\",\"htc\",\"hoverlabel.font.color\"),u(\"nameLength\",\"hnl\",\"hoverlabel.namelength\"),u(\"textAlign\",\"hta\",\"hoverlabel.align\"),t.posref=\"y\"===e||\"closest\"===e&&\"h\"===n.orientation?t.xa._offset+(t.x0+t.x1)/2:t.ya._offset+(t.y0+t.y1)/2,t.x0=o.constrain(t.x0,0,t.xa._length),t.x1=o.constrain(t.x1,0,t.xa._length),t.y0=o.constrain(t.y0,0,t.ya._length),t.y1=o.constrain(t.y1,0,t.ya._length),void 0!==t.xLabelVal&&(t.xLabel=\"xLabel\"in t?t.xLabel:g.hoverLabelText(t.xa,t.xLabelVal,n.xhoverformat),t.xVal=t.xa.c2d(t.xLabelVal)),void 0!==t.yLabelVal&&(t.yLabel=\"yLabel\"in t?t.yLabel:g.hoverLabelText(t.ya,t.yLabelVal,n.yhoverformat),t.yVal=t.ya.c2d(t.yLabelVal)),void 0!==t.zLabelVal&&void 0===t.zLabel&&(t.zLabel=String(t.zLabelVal)),!(isNaN(t.xerr)||\"log\"===t.xa.type&&t.xerr<=0)){var f=g.tickText(t.xa,t.xa.c2l(t.xerr),\"hover\").text;void 0!==t.xerrneg?t.xLabel+=\" +\"+f+\" / -\"+g.tickText(t.xa,t.xa.c2l(t.xerrneg),\"hover\").text:t.xLabel+=\" \\xb1 \"+f,\"x\"===e&&(t.distance+=1)}if(!(isNaN(t.yerr)||\"log\"===t.ya.type&&t.yerr<=0)){var h=g.tickText(t.ya,t.ya.c2l(t.yerr),\"hover\").text;void 0!==t.yerrneg?t.yLabel+=\" +\"+h+\" / -\"+g.tickText(t.ya,t.ya.c2l(t.yerrneg),\"hover\").text:t.yLabel+=\" \\xb1 \"+h,\"y\"===e&&(t.distance+=1)}var p=t.hoverinfo||t.trace.hoverinfo;return p&&\"all\"!==p&&(-1===(p=Array.isArray(p)?p:p.split(\"+\")).indexOf(\"x\")&&(t.xLabel=void 0),-1===p.indexOf(\"y\")&&(t.yLabel=void 0),-1===p.indexOf(\"z\")&&(t.zLabel=void 0),-1===p.indexOf(\"text\")&&(t.text=void 0),-1===p.indexOf(\"name\")&&(t.name=void 0)),t}function R(t,e,r){var n,i,o=r.container,s=r.fullLayout,l=s._size,c=r.event,u=!!e.hLinePoint,f=!!e.vLinePoint;if(o.selectAll(\".spikeline\").remove(),f||u){var d=p.combine(s.plot_bgcolor,s.paper_bgcolor);if(u){var m,v,y=e.hLinePoint;n=y&&y.xa,\"cursor\"===(i=y&&y.ya).spikesnap?(m=c.pointerX,v=c.pointerY):(m=n._offset+y.x,v=i._offset+y.y);var x,b,_=a.readability(y.color,d)<1.5?p.contrast(d):y.color,w=i.spikemode,T=i.spikethickness,k=i.spikecolor||_,A=g.getPxPosition(t,i);if(-1!==w.indexOf(\"toaxis\")||-1!==w.indexOf(\"across\")){if(-1!==w.indexOf(\"toaxis\")&&(x=A,b=m),-1!==w.indexOf(\"across\")){var M=i._counterDomainMin,S=i._counterDomainMax;\"free\"===i.anchor&&(M=Math.min(M,i.position),S=Math.max(S,i.position)),x=l.l+M*l.w,b=l.l+S*l.w}o.insert(\"line\",\":first-child\").attr({x1:x,x2:b,y1:v,y2:v,\"stroke-width\":T,stroke:k,\"stroke-dasharray\":h.dashStyle(i.spikedash,T)}).classed(\"spikeline\",!0).classed(\"crisp\",!0),o.insert(\"line\",\":first-child\").attr({x1:x,x2:b,y1:v,y2:v,\"stroke-width\":T+2,stroke:d}).classed(\"spikeline\",!0).classed(\"crisp\",!0)}-1!==w.indexOf(\"marker\")&&o.insert(\"circle\",\":first-child\").attr({cx:A+(\"right\"!==i.side?T:-T),cy:v,r:T,fill:k}).classed(\"spikeline\",!0)}if(f){var E,L,C=e.vLinePoint;n=C&&C.xa,i=C&&C.ya,\"cursor\"===n.spikesnap?(E=c.pointerX,L=c.pointerY):(E=n._offset+C.x,L=i._offset+C.y);var P,I,O=a.readability(C.color,d)<1.5?p.contrast(d):C.color,z=n.spikemode,D=n.spikethickness,R=n.spikecolor||O,F=g.getPxPosition(t,n);if(-1!==z.indexOf(\"toaxis\")||-1!==z.indexOf(\"across\")){if(-1!==z.indexOf(\"toaxis\")&&(P=F,I=L),-1!==z.indexOf(\"across\")){var B=n._counterDomainMin,N=n._counterDomainMax;\"free\"===n.anchor&&(B=Math.min(B,n.position),N=Math.max(N,n.position)),P=l.t+(1-N)*l.h,I=l.t+(1-B)*l.h}o.insert(\"line\",\":first-child\").attr({x1:E,x2:E,y1:P,y2:I,\"stroke-width\":D,stroke:R,\"stroke-dasharray\":h.dashStyle(n.spikedash,D)}).classed(\"spikeline\",!0).classed(\"crisp\",!0),o.insert(\"line\",\":first-child\").attr({x1:E,x2:E,y1:P,y2:I,\"stroke-width\":D+2,stroke:d}).classed(\"spikeline\",!0).classed(\"crisp\",!0)}-1!==z.indexOf(\"marker\")&&o.insert(\"circle\",\":first-child\").attr({cx:E,cy:F-(\"top\"!==n.side?D:-D),r:D,fill:R}).classed(\"spikeline\",!0)}}}function F(t,e){return!e||(e.vLinePoint!==t._spikepoints.vLinePoint||e.hLinePoint!==t._spikepoints.hLinePoint)}function B(t,e){return u.plainText(t||\"\",{len:e,allowedTags:[\"br\",\"sub\",\"sup\",\"b\",\"i\",\"em\"]})}function N(t,e,r){var n=e[t+\"a\"],i=e[t+\"Val\"],a=e.cd[0];if(\"category\"===n.type)i=n._categoriesMap[i];else if(\"date\"===n.type){var o=e.trace[t+\"periodalignment\"];if(o){var s=e.cd[e.index],l=s[t+\"Start\"];void 0===l&&(l=s[t]);var c=s[t+\"End\"];void 0===c&&(c=s[t]);var u=c-l;\"end\"===o?i+=u:\"middle\"===o&&(i+=u/2)}i=n.d2c(i)}return a&&a.t&&a.t.posLetter===n._id&&(\"group\"!==r.boxmode&&\"group\"!==r.violinmode||(i+=a.t.dPos)),i}function j(t){return t.offsetTop+t.clientTop}function U(t){return t.offsetLeft+t.clientLeft}function V(t,e){var r=t._fullLayout,n=e.getBoundingClientRect(),i=n.x,a=n.y,s=i+n.width,l=a+n.height,c=o.apply3DTransform(r._invTransform)(i,a),u=o.apply3DTransform(r._invTransform)(s,l),f=c[0],h=c[1],p=u[0],d=u[1];return{x:f,y:h,width:p-f,height:d-h,top:Math.min(h,d),left:Math.min(f,p),right:Math.max(f,p),bottom:Math.max(h,d)}}},{\"../../lib\":503,\"../../lib/events\":492,\"../../lib/override_cursor\":514,\"../../lib/svg_text_utils\":529,\"../../plots/cartesian/axes\":554,\"../../registry\":638,\"../color\":366,\"../dragelement\":385,\"../drawing\":388,\"../legend/defaults\":418,\"../legend/draw\":419,\"./constants\":400,\"./helpers\":402,\"@plotly/d3\":58,\"fast-isnumeric\":190,tinycolor2:312}],404:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../color\"),a=t(\"./helpers\").isUnifiedHover;e.exports=function(t,e,r,o){o=o||{};var s=e.legend;function l(t){o.font[t]||(o.font[t]=s?e.legend.font[t]:e.font[t])}e&&a(e.hovermode)&&(o.font||(o.font={}),l(\"size\"),l(\"family\"),l(\"color\"),s?(o.bgcolor||(o.bgcolor=i.combine(e.legend.bgcolor,e.paper_bgcolor)),o.bordercolor||(o.bordercolor=e.legend.bordercolor)):o.bgcolor||(o.bgcolor=e.paper_bgcolor)),r(\"hoverlabel.bgcolor\",o.bgcolor),r(\"hoverlabel.bordercolor\",o.bordercolor),r(\"hoverlabel.namelength\",o.namelength),n.coerceFont(r,\"hoverlabel.font\",o.font),r(\"hoverlabel.align\",o.align)}},{\"../../lib\":503,\"../color\":366,\"./helpers\":402}],405:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e){function r(r,a){return void 0!==e[r]?e[r]:n.coerce(t,e,i,r,a)}return r(\"clickmode\"),r(\"hovermode\")}},{\"../../lib\":503,\"./layout_attributes\":407}],406:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../dragelement\"),o=t(\"./helpers\"),s=t(\"./layout_attributes\"),l=t(\"./hover\");e.exports={moduleType:\"component\",name:\"fx\",constants:t(\"./constants\"),schema:{layout:s},attributes:t(\"./attributes\"),layoutAttributes:s,supplyLayoutGlobalDefaults:t(\"./layout_global_defaults\"),supplyDefaults:t(\"./defaults\"),supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\"),getDistanceFunction:o.getDistanceFunction,getClosest:o.getClosest,inbox:o.inbox,quadrature:o.quadrature,appendArrayPointValue:o.appendArrayPointValue,castHoverOption:function(t,e,r){return i.castOption(t,e,\"hoverlabel.\"+r)},castHoverinfo:function(t,e,r){return i.castOption(t,r,\"hoverinfo\",(function(r){return i.coerceHoverinfo({hoverinfo:r},{_module:t._module},e)}))},hover:l.hover,unhover:a.unhover,loneHover:l.loneHover,loneUnhover:function(t){var e=i.isD3Selection(t)?t:n.select(t);e.selectAll(\"g.hovertext\").remove(),e.selectAll(\".spikeline\").remove()},click:t(\"./click\")}},{\"../../lib\":503,\"../dragelement\":385,\"./attributes\":397,\"./calc\":398,\"./click\":399,\"./constants\":400,\"./defaults\":401,\"./helpers\":402,\"./hover\":403,\"./layout_attributes\":407,\"./layout_defaults\":408,\"./layout_global_defaults\":409,\"@plotly/d3\":58}],407:[function(t,e,r){\"use strict\";var n=t(\"./constants\"),i=t(\"../../plots/font_attributes\"),a=i({editType:\"none\"});a.family.dflt=n.HOVERFONT,a.size.dflt=n.HOVERFONTSIZE,e.exports={clickmode:{valType:\"flaglist\",flags:[\"event\",\"select\"],dflt:\"event\",editType:\"plot\",extras:[\"none\"]},dragmode:{valType:\"enumerated\",values:[\"zoom\",\"pan\",\"select\",\"lasso\",\"drawclosedpath\",\"drawopenpath\",\"drawline\",\"drawrect\",\"drawcircle\",\"orbit\",\"turntable\",!1],dflt:\"zoom\",editType:\"modebar\"},hovermode:{valType:\"enumerated\",values:[\"x\",\"y\",\"closest\",!1,\"x unified\",\"y unified\"],dflt:\"closest\",editType:\"modebar\"},hoverdistance:{valType:\"integer\",min:-1,dflt:20,editType:\"none\"},spikedistance:{valType:\"integer\",min:-1,dflt:-1,editType:\"none\"},hoverlabel:{bgcolor:{valType:\"color\",editType:\"none\"},bordercolor:{valType:\"color\",editType:\"none\"},font:a,grouptitlefont:i({editType:\"none\"}),align:{valType:\"enumerated\",values:[\"left\",\"right\",\"auto\"],dflt:\"auto\",editType:\"none\"},namelength:{valType:\"integer\",min:-1,dflt:15,editType:\"none\"},editType:\"none\"},selectdirection:{valType:\"enumerated\",values:[\"h\",\"v\",\"d\",\"any\"],dflt:\"any\",editType:\"none\"}}},{\"../../plots/font_attributes\":585,\"./constants\":400}],408:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\"),a=t(\"./hovermode_defaults\"),o=t(\"./hoverlabel_defaults\");e.exports=function(t,e){function r(r,a){return n.coerce(t,e,i,r,a)}a(t,e)&&(r(\"hoverdistance\"),r(\"spikedistance\")),\"select\"===r(\"dragmode\")&&r(\"selectdirection\");var s=e._has(\"mapbox\"),l=e._has(\"geo\"),c=e._basePlotModules.length;\"zoom\"===e.dragmode&&((s||l)&&1===c||s&&l&&2===c)&&(e.dragmode=\"pan\"),o(t,e,r),n.coerceFont(r,\"hoverlabel.grouptitlefont\",e.hoverlabel.font)}},{\"../../lib\":503,\"./hoverlabel_defaults\":404,\"./hovermode_defaults\":405,\"./layout_attributes\":407}],409:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./hoverlabel_defaults\"),a=t(\"./layout_attributes\");e.exports=function(t,e){i(t,e,(function(r,i){return n.coerce(t,e,a,r,i)}))}},{\"../../lib\":503,\"./hoverlabel_defaults\":404,\"./layout_attributes\":407}],410:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../lib/regex\").counter,a=t(\"../../plots/domain\").attributes,o=t(\"../../plots/cartesian/constants\").idRegex,s=t(\"../../plot_api/plot_template\"),l={rows:{valType:\"integer\",min:1,editType:\"plot\"},roworder:{valType:\"enumerated\",values:[\"top to bottom\",\"bottom to top\"],dflt:\"top to bottom\",editType:\"plot\"},columns:{valType:\"integer\",min:1,editType:\"plot\"},subplots:{valType:\"info_array\",freeLength:!0,dimensions:2,items:{valType:\"enumerated\",values:[i(\"xy\").toString(),\"\"],editType:\"plot\"},editType:\"plot\"},xaxes:{valType:\"info_array\",freeLength:!0,items:{valType:\"enumerated\",values:[o.x.toString(),\"\"],editType:\"plot\"},editType:\"plot\"},yaxes:{valType:\"info_array\",freeLength:!0,items:{valType:\"enumerated\",values:[o.y.toString(),\"\"],editType:\"plot\"},editType:\"plot\"},pattern:{valType:\"enumerated\",values:[\"independent\",\"coupled\"],dflt:\"coupled\",editType:\"plot\"},xgap:{valType:\"number\",min:0,max:1,editType:\"plot\"},ygap:{valType:\"number\",min:0,max:1,editType:\"plot\"},domain:a({name:\"grid\",editType:\"plot\",noGridCell:!0},{}),xside:{valType:\"enumerated\",values:[\"bottom\",\"bottom plot\",\"top plot\",\"top\"],dflt:\"bottom plot\",editType:\"plot\"},yside:{valType:\"enumerated\",values:[\"left\",\"left plot\",\"right plot\",\"right\"],dflt:\"left plot\",editType:\"plot\"},editType:\"plot\"};function c(t,e,r){var n=e[r+\"axes\"],i=Object.keys((t._splomAxes||{})[r]||{});return Array.isArray(n)?n:i.length?i:void 0}function u(t,e,r,n,i,a){var o=e(t+\"gap\",r),s=e(\"domain.\"+t);e(t+\"side\",n);for(var l=new Array(i),c=s[0],u=(s[1]-c)/(i-o),f=u*(1-o),h=0;h1){if(!h&&!p&&!d)\"independent\"===k(\"pattern\")&&(h=!0);m._hasSubplotGrid=h;var x,b,_=\"top to bottom\"===k(\"roworder\"),w=h?.2:.1,T=h?.3:.1;g&&e._splomGridDflt&&(x=e._splomGridDflt.xside,b=e._splomGridDflt.yside),m._domains={x:u(\"x\",k,w,x,y),y:u(\"y\",k,T,b,v,_)}}else delete e.grid}function k(t,e){return n.coerce(r,m,l,t,e)}},contentDefaults:function(t,e){var r=e.grid;if(r&&r._domains){var n,i,a,o,s,l,u,h=t.grid||{},p=e._subplots,d=r._hasSubplotGrid,g=r.rows,m=r.columns,v=\"independent\"===r.pattern,y=r._axisMap={};if(d){var x=h.subplots||[];l=r.subplots=new Array(g);var b=1;for(n=0;n1);if(!1===_&&(e.legend=void 0),(!1!==_||f.uirevision)&&(p(\"uirevision\",e.uirevision),!1!==_)){p(\"bgcolor\",e.paper_bgcolor),p(\"bordercolor\"),p(\"borderwidth\");var w,T,k,A=i.coerceFont(p,\"font\",e.font),M=\"h\"===p(\"orientation\");if(M?(w=0,n.getComponentMethod(\"rangeslider\",\"isVisible\")(t.xaxis)?(T=1.1,k=\"bottom\"):(T=-.1,k=\"top\")):(w=1.02,T=1,k=\"auto\"),p(\"traceorder\",x),c.isGrouped(e.legend)&&p(\"tracegroupgap\"),p(\"itemsizing\"),p(\"itemwidth\"),p(\"itemclick\"),p(\"itemdoubleclick\"),p(\"groupclick\"),p(\"x\",w),p(\"xanchor\"),p(\"y\",T),p(\"yanchor\",k),p(\"valign\"),i.noneOrAll(f,h,[\"x\",\"y\"]),p(\"title.text\")){p(\"title.side\",M?\"left\":\"top\");var S=i.extendFlat({},A,{size:i.bigFont(A.size)});i.coerceFont(p,\"title.font\",S)}}}},{\"../../lib\":503,\"../../plot_api/plot_template\":543,\"../../plots/attributes\":550,\"../../plots/layout_attributes\":610,\"../../registry\":638,\"./attributes\":416,\"./helpers\":422}],419:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../plots/plots\"),o=t(\"../../registry\"),s=t(\"../../lib/events\"),l=t(\"../dragelement\"),c=t(\"../drawing\"),u=t(\"../color\"),f=t(\"../../lib/svg_text_utils\"),h=t(\"./handle_click\"),p=t(\"./constants\"),d=t(\"../../constants/alignment\"),g=d.LINE_SPACING,m=d.FROM_TL,v=d.FROM_BR,y=t(\"./get_legend_data\"),x=t(\"./style\"),b=t(\"./helpers\");function _(t,e,r,n,i){var a=r.data()[0][0].trace,l={event:i,node:r.node(),curveNumber:a.index,expandedIndex:a._expandedIndex,data:t.data,layout:t.layout,frames:t._transitionData._frames,config:t._context,fullData:t._fullData,fullLayout:t._fullLayout};if(a._group&&(l.group=a._group),o.traceIs(a,\"pie-like\")&&(l.label=r.datum()[0].label),!1!==s.triggerHandler(t,\"plotly_legendclick\",l))if(1===n)e._clickTimeout=setTimeout((function(){t._fullLayout&&h(r,t,n)}),t._context.doubleClickDelay);else if(2===n){e._clickTimeout&&clearTimeout(e._clickTimeout),t._legendMouseDownTime=0,!1!==s.triggerHandler(t,\"plotly_legenddoubleclick\",l)&&h(r,t,n)}}function w(t,e,r){var n,a,s=t.data()[0][0],l=s.trace,u=o.traceIs(l,\"pie-like\"),h=!r._inHover&&e._context.edits.legendText&&!u,d=r._maxNameLength;s.groupTitle?(n=s.groupTitle.text,a=s.groupTitle.font):(a=r.font,r.entries?n=s.text:(n=u?s.label:l.name,l._meta&&(n=i.templateString(n,l._meta))));var g=i.ensureSingle(t,\"text\",\"legendtext\");g.attr(\"text-anchor\",\"start\").call(c.font,a).text(h?T(n,d):n);var m=r.itemwidth+2*p.itemGap;f.positionText(g,m,0),h?g.call(f.makeEditable,{gd:e,text:n}).call(A,t,e,r).on(\"edit\",(function(n){this.text(T(n,d)).call(A,t,e,r);var a=s.trace._fullInput||{},c={};if(o.hasTransform(a,\"groupby\")){var u=o.getTransformIndices(a,\"groupby\"),f=u[u.length-1],h=i.keyedContainer(a,\"transforms[\"+f+\"].styles\",\"target\",\"value.name\");h.set(s.trace._group,n),c=h.constructUpdate()}else c.name=n;return o.call(\"_guiRestyle\",e,c,l.index)})):A(g,t,e,r)}function T(t,e){var r=Math.max(4,e);if(t&&t.trim().length>=r/2)return t;for(var n=r-(t=t||\"\").length;n>0;n--)t+=\" \";return t}function k(t,e){var r,a=e._context.doubleClickDelay,o=1,s=i.ensureSingle(t,\"rect\",\"legendtoggle\",(function(t){e._context.staticPlot||t.style(\"cursor\",\"pointer\").attr(\"pointer-events\",\"all\"),t.call(u.fill,\"rgba(0,0,0,0)\")}));e._context.staticPlot||(s.on(\"mousedown\",(function(){(r=(new Date).getTime())-e._legendMouseDownTimea&&(o=Math.max(o-1,1)),_(e,r,t,o,n.event)}})))}function A(t,e,r,n,i){n._inHover&&t.attr(\"data-notex\",!0),f.convertToTspans(t,r,(function(){!function(t,e,r,n){var i=t.data()[0][0];if(!r._inHover&&i&&!i.trace.showlegend)return void t.remove();var a=t.select(\"g[class*=math-group]\"),o=a.node();r||(r=e._fullLayout.legend);var s,l=r.borderwidth;s=1===n?r.title.font:i.groupTitle?i.groupTitle.font:r.font;var u,h,d=s.size*g;if(o){var m=c.bBox(o);u=m.height,h=m.width,1===n?c.setTranslate(a,l,l+.75*u):c.setTranslate(a,0,.25*u)}else{var v=t.select(1===n?\".legendtitletext\":\".legendtext\"),y=f.lineCount(v),x=v.node();if(u=d*y,h=x?c.bBox(x).width:0,1===n)\"left\"===r.title.side&&(h+=2*p.itemGap),f.positionText(v,l+p.titlePad,l+d);else{var b=2*p.itemGap+r.itemwidth;i.groupTitle&&(b=p.itemGap,h-=r.itemwidth),f.positionText(v,b,-d*((y-1)/2-.3))}}1===n?(r._titleWidth=h,r._titleHeight=u):(i.lineHeight=d,i.height=Math.max(u,16)+3,i.width=h)}(e,r,n,i)}))}function M(t){return i.isRightAnchor(t)?\"right\":i.isCenterAnchor(t)?\"center\":\"left\"}function S(t){return i.isBottomAnchor(t)?\"bottom\":i.isMiddleAnchor(t)?\"middle\":\"top\"}e.exports=function(t,e){return e||(e=t._fullLayout.legend||{}),function(t,e){var r,s,f=t._fullLayout,h=\"legend\"+f._uid,d=e._inHover;d?(r=e.layer,h+=\"-hover\"):r=f._infolayer;if(!r)return;t._legendMouseDownTime||(t._legendMouseDownTime=0);if(d){if(!e.entries)return;s=y(e.entries,e)}else{if(!t.calcdata)return;s=f.showlegend&&y(t.calcdata,e)}var g=f.hiddenlabels||[];if(!(d||f.showlegend&&s.length))return r.selectAll(\".legend\").remove(),f._topdefs.select(\"#\"+h).remove(),a.autoMargin(t,\"legend\");var T=i.ensureSingle(r,\"g\",\"legend\",(function(t){d||t.attr(\"pointer-events\",\"all\")})),E=i.ensureSingleById(f._topdefs,\"clipPath\",h,(function(t){t.append(\"rect\")})),L=i.ensureSingle(T,\"rect\",\"bg\",(function(t){t.attr(\"shape-rendering\",\"crispEdges\")}));L.call(u.stroke,e.bordercolor).call(u.fill,e.bgcolor).style(\"stroke-width\",e.borderwidth+\"px\");var C=i.ensureSingle(T,\"g\",\"scrollbox\"),P=e.title;if(e._titleWidth=0,e._titleHeight=0,P.text){var I=i.ensureSingle(C,\"text\",\"legendtitletext\");I.attr(\"text-anchor\",\"start\").call(c.font,P.font).text(P.text),A(I,C,t,e,1)}else C.selectAll(\".legendtitletext\").remove();var O=i.ensureSingle(T,\"rect\",\"scrollbar\",(function(t){t.attr(p.scrollBarEnterAttrs).call(u.fill,p.scrollBarColor)})),z=C.selectAll(\"g.groups\").data(s);z.enter().append(\"g\").attr(\"class\",\"groups\"),z.exit().remove();var D=z.selectAll(\"g.traces\").data(i.identity);D.enter().append(\"g\").attr(\"class\",\"traces\"),D.exit().remove(),D.style(\"opacity\",(function(t){var e=t[0].trace;return o.traceIs(e,\"pie-like\")?-1!==g.indexOf(t[0].label)?.5:1:\"legendonly\"===e.visible?.5:1})).each((function(){n.select(this).call(w,t,e)})).call(x,t,e).each((function(){d||n.select(this).call(k,t)})),i.syncOrAsync([a.previousPromises,function(){return function(t,e,r,i){var a=t._fullLayout;i||(i=a.legend);var o=a._size,s=b.isVertical(i),l=b.isGrouped(i),u=i.borderwidth,f=2*u,h=p.itemGap,d=i.itemwidth+2*h,g=2*(u+h),m=S(i),v=i.y<0||0===i.y&&\"top\"===m,y=i.y>1||1===i.y&&\"bottom\"===m,x=i.tracegroupgap;i._maxHeight=Math.max(v||y?a.height/2:o.h,30);var _=0;i._width=0,i._height=0;var w=function(t){var e=0,r=0,n=t.title.side;n&&(-1!==n.indexOf(\"left\")&&(e=t._titleWidth),-1!==n.indexOf(\"top\")&&(r=t._titleHeight));return[e,r]}(i);if(s)r.each((function(t){var e=t[0].height;c.setTranslate(this,u+w[0],u+w[1]+i._height+e/2+h),i._height+=e,i._width=Math.max(i._width,t[0].width)})),_=d+i._width,i._width+=h+d+f,i._height+=g,l&&(e.each((function(t,e){c.setTranslate(this,0,e*i.tracegroupgap)})),i._height+=(i._lgroupsLength-1)*i.tracegroupgap);else{var T=M(i),k=i.x<0||0===i.x&&\"right\"===T,A=i.x>1||1===i.x&&\"left\"===T,E=y||v,L=a.width/2;i._maxWidth=Math.max(k?E&&\"left\"===T?o.l+o.w:L:A?E&&\"right\"===T?o.r+o.w:L:o.w,2*d);var C=0,P=0;r.each((function(t){var e=t[0].width+d;C=Math.max(C,e),P+=e})),_=null;var I=0;if(l){var O=0,z=0,D=0;e.each((function(){var t=0,e=0;n.select(this).selectAll(\"g.traces\").each((function(r){var n=r[0].width,i=r[0].height;c.setTranslate(this,w[0],w[1]+u+h+i/2+e),e+=i,t=Math.max(t,d+n)}));var r=t+h;z>0&&r+u+z>i._maxWidth?(I=Math.max(I,z),z=0,D+=O+x,O=e):O=Math.max(O,e),c.setTranslate(this,z,D),z+=r})),i._width=Math.max(I,z)+u,i._height=D+O+g}else{var R=r.size(),F=P+f+(R-1)*h=i._maxWidth&&(I=Math.max(I,U),N=0,j+=B,i._height+=B,B=0),c.setTranslate(this,w[0]+u+N,w[1]+u+j+e/2+h),U=N+r+h,N+=n,B=Math.max(B,e)})),F?(i._width=N+f,i._height=B+g):(i._width=Math.max(I,U)+f,i._height+=B+g)}}i._width=Math.ceil(Math.max(i._width+w[0],i._titleWidth+2*(u+p.titlePad))),i._height=Math.ceil(Math.max(i._height+w[1],i._titleHeight+2*(u+p.itemGap))),i._effHeight=Math.min(i._height,i._maxHeight);var V=t._context.edits,H=V.legendText||V.legendPosition;r.each((function(t){var e=n.select(this).select(\".legendtoggle\"),r=t[0].height,i=H?d:_||d+t[0].width;s||(i+=h/2),c.setRect(e,0,-r/2,i,r)}))}(t,z,D,e)},function(){var s,u,g,y,x=f._size,b=e.borderwidth;if(!d){if(function(t){var e=t._fullLayout.legend,r=M(e),n=S(e);return a.autoMargin(t,\"legend\",{x:e.x,y:e.y,l:e._width*m[r],r:e._width*v[r],b:e._effHeight*v[n],t:e._effHeight*m[n]})}(t))return;var w=x.l+x.w*e.x-m[M(e)]*e._width,k=x.t+x.h*(1-e.y)-m[S(e)]*e._effHeight;if(f.margin.autoexpand){var A=w,P=k;w=i.constrain(w,0,f.width-e._width),k=i.constrain(k,0,f.height-e._effHeight),w!==A&&i.log(\"Constrain legend.x to make legend fit inside graph\"),k!==P&&i.log(\"Constrain legend.y to make legend fit inside graph\")}c.setTranslate(T,w,k)}if(O.on(\".drag\",null),T.on(\"wheel\",null),d||e._height<=e._maxHeight||t._context.staticPlot){var I=e._effHeight;d&&(I=e._height),L.attr({width:e._width-b,height:I-b,x:b/2,y:b/2}),c.setTranslate(C,0,0),E.select(\"rect\").attr({width:e._width-2*b,height:I-2*b,x:b,y:b}),c.setClipUrl(C,h,t),c.setRect(O,0,0,0,0),delete e._scrollY}else{var z,D,R,F=Math.max(p.scrollBarMinHeight,e._effHeight*e._effHeight/e._height),B=e._effHeight-F-2*p.scrollBarMargin,N=e._height-e._effHeight,j=B/N,U=Math.min(e._scrollY||0,N);L.attr({width:e._width-2*b+p.scrollBarWidth+p.scrollBarMargin,height:e._effHeight-b,x:b/2,y:b/2}),E.select(\"rect\").attr({width:e._width-2*b+p.scrollBarWidth+p.scrollBarMargin,height:e._effHeight-2*b,x:b,y:b+U}),c.setClipUrl(C,h,t),q(U,F,j),T.on(\"wheel\",(function(){q(U=i.constrain(e._scrollY+n.event.deltaY/B*N,0,N),F,j),0!==U&&U!==N&&n.event.preventDefault()}));var V=n.behavior.drag().on(\"dragstart\",(function(){var t=n.event.sourceEvent;z=\"touchstart\"===t.type?t.changedTouches[0].clientY:t.clientY,R=U})).on(\"drag\",(function(){var t=n.event.sourceEvent;2===t.buttons||t.ctrlKey||(D=\"touchmove\"===t.type?t.changedTouches[0].clientY:t.clientY,q(U=function(t,e,r){var n=(r-e)/j+t;return i.constrain(n,0,N)}(R,z,D),F,j))}));O.call(V);var H=n.behavior.drag().on(\"dragstart\",(function(){var t=n.event.sourceEvent;\"touchstart\"===t.type&&(z=t.changedTouches[0].clientY,R=U)})).on(\"drag\",(function(){var t=n.event.sourceEvent;\"touchmove\"===t.type&&(D=t.changedTouches[0].clientY,q(U=function(t,e,r){var n=(e-r)/j+t;return i.constrain(n,0,N)}(R,z,D),F,j))}));C.call(H)}function q(r,n,i){e._scrollY=t._fullLayout.legend._scrollY=r,c.setTranslate(C,0,-r),c.setRect(O,e._width,p.scrollBarMargin+r*i,p.scrollBarWidth,n),E.select(\"rect\").attr(\"y\",b+r)}t._context.edits.legendPosition&&(T.classed(\"cursor-move\",!0),l.init({element:T.node(),gd:t,prepFn:function(){var t=c.getTranslate(T);g=t.x,y=t.y},moveFn:function(t,r){var n=g+t,i=y+r;c.setTranslate(T,n,i),s=l.align(n,0,x.l,x.l+x.w,e.xanchor),u=l.align(i,0,x.t+x.h,x.t,e.yanchor)},doneFn:function(){void 0!==s&&void 0!==u&&o.call(\"_guiRelayout\",t,{\"legend.x\":s,\"legend.y\":u})},clickFn:function(e,n){var i=r.selectAll(\"g.traces\").filter((function(){var t=this.getBoundingClientRect();return n.clientX>=t.left&&n.clientX<=t.right&&n.clientY>=t.top&&n.clientY<=t.bottom}));i.size()>0&&_(t,T,i,e,n)}}))}],t)}(t,e)}},{\"../../constants/alignment\":471,\"../../lib\":503,\"../../lib/events\":492,\"../../lib/svg_text_utils\":529,\"../../plots/plots\":619,\"../../registry\":638,\"../color\":366,\"../dragelement\":385,\"../drawing\":388,\"./constants\":417,\"./get_legend_data\":420,\"./handle_click\":421,\"./helpers\":422,\"./style\":424,\"@plotly/d3\":58}],420:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"./helpers\");e.exports=function(t,e){var r,a,o=e._inHover,s=i.isGrouped(e),l=i.isReversed(e),c={},u=[],f=!1,h={},p=0,d=0;function g(t,r){if(\"\"!==t&&i.isGrouped(e))-1===u.indexOf(t)?(u.push(t),f=!0,c[t]=[r]):c[t].push(r);else{var n=\"~~i\"+p;u.push(n),c[n]=[r],p++}}for(r=0;rA&&(k=A)}w[r][0]._groupMinRank=k,w[r][0]._preGroupSort=r}var M=function(t,e){return t.trace.legendrank-e.trace.legendrank||t._preSort-e._preSort};for(w.forEach((function(t,e){t[0]._preGroupSort=e})),w.sort((function(t,e){return t[0]._groupMinRank-e[0]._groupMinRank||t[0]._preGroupSort-e[0]._preGroupSort})),r=0;rr?r:t}e.exports=function(t,e,r){var v=e._fullLayout;r||(r=v.legend);var y=\"constant\"===r.itemsizing,x=r.itemwidth,b=(x+2*p.itemGap)/2,_=o(b,0),w=function(t,e,r,n){var i;if(t+1)i=t;else{if(!(e&&e.width>0))return 0;i=e.width}return y?n:Math.min(i,r)};function T(t,a,o){var u=t[0].trace,f=u.marker||{},h=f.line||{},p=o?u.visible&&u.type===o:i.traceIs(u,\"bar\"),d=n.select(a).select(\"g.legendpoints\").selectAll(\"path.legend\"+o).data(p?[t]:[]);d.enter().append(\"path\").classed(\"legend\"+o,!0).attr(\"d\",\"M6,6H-6V-6H6Z\").attr(\"transform\",_),d.exit().remove(),d.each((function(t){var i=n.select(this),a=t[0],o=w(a.mlw,f.line,5,2);i.style(\"stroke-width\",o+\"px\");var p=a.mcc;if(!r._inHover&&\"mc\"in a){var d=c(f),g=d.mid;void 0===g&&(g=(d.max+d.min)/2),p=s.tryColorscale(f,\"\")(g)}var v=p||a.mc||f.color,y=f.pattern,x=y&&s.getPatternAttr(y.shape,0,\"\");if(x){var b=s.getPatternAttr(y.bgcolor,0,null),_=s.getPatternAttr(y.fgcolor,0,null),T=y.fgopacity,k=m(y.size,8,10),A=m(y.solidity,.5,1),M=\"legend-\"+u.uid;i.call(s.pattern,\"legend\",e,M,x,k,A,p,y.fillmode,b,_,T)}else i.call(l.fill,v);o&&l.stroke(i,a.mlc||h.color)}))}function k(t,e,r){var o=t[0],s=o.trace,l=r?s.visible&&s.type===r:i.traceIs(s,r),c=n.select(e).select(\"g.legendpoints\").selectAll(\"path.legend\"+r).data(l?[t]:[]);if(c.enter().append(\"path\").classed(\"legend\"+r,!0).attr(\"d\",\"M6,6H-6V-6H6Z\").attr(\"transform\",_),c.exit().remove(),c.size()){var u=(s.marker||{}).line,p=w(h(u.width,o.pts),u,5,2),d=a.minExtend(s,{marker:{line:{width:p}}});d.marker.line.color=u.color;var g=a.minExtend(o,{trace:d});f(c,g,d)}}t.each((function(t){var e=n.select(this),i=a.ensureSingle(e,\"g\",\"layers\");i.style(\"opacity\",t[0].trace.opacity);var s=r.valign,l=t[0].lineHeight,c=t[0].height;if(\"middle\"!==s&&l&&c){var u={top:1,bottom:-1}[s]*(.5*(l-c+3));i.attr(\"transform\",o(0,u))}else i.attr(\"transform\",null);i.selectAll(\"g.legendfill\").data([t]).enter().append(\"g\").classed(\"legendfill\",!0),i.selectAll(\"g.legendlines\").data([t]).enter().append(\"g\").classed(\"legendlines\",!0);var f=i.selectAll(\"g.legendsymbols\").data([t]);f.enter().append(\"g\").classed(\"legendsymbols\",!0),f.selectAll(\"g.legendpoints\").data([t]).enter().append(\"g\").classed(\"legendpoints\",!0)})).each((function(t){var r,i=t[0].trace,o=[];if(i.visible)switch(i.type){case\"histogram2d\":case\"heatmap\":o=[[\"M-15,-2V4H15V-2Z\"]],r=!0;break;case\"choropleth\":case\"choroplethmapbox\":o=[[\"M-6,-6V6H6V-6Z\"]],r=!0;break;case\"densitymapbox\":o=[[\"M-6,0 a6,6 0 1,0 12,0 a 6,6 0 1,0 -12,0\"]],r=\"radial\";break;case\"cone\":o=[[\"M-6,2 A2,2 0 0,0 -6,6 V6L6,4Z\"],[\"M-6,-6 A2,2 0 0,0 -6,-2 L6,-4Z\"],[\"M-6,-2 A2,2 0 0,0 -6,2 L6,0Z\"]],r=!1;break;case\"streamtube\":o=[[\"M-6,2 A2,2 0 0,0 -6,6 H6 A2,2 0 0,1 6,2 Z\"],[\"M-6,-6 A2,2 0 0,0 -6,-2 H6 A2,2 0 0,1 6,-6 Z\"],[\"M-6,-2 A2,2 0 0,0 -6,2 H6 A2,2 0 0,1 6,-2 Z\"]],r=!1;break;case\"surface\":o=[[\"M-6,-6 A2,3 0 0,0 -6,0 H6 A2,3 0 0,1 6,-6 Z\"],[\"M-6,1 A2,3 0 0,1 -6,6 H6 A2,3 0 0,0 6,0 Z\"]],r=!0;break;case\"mesh3d\":o=[[\"M-6,6H0L-6,-6Z\"],[\"M6,6H0L6,-6Z\"],[\"M-6,-6H6L0,6Z\"]],r=!1;break;case\"volume\":o=[[\"M-6,6H0L-6,-6Z\"],[\"M6,6H0L6,-6Z\"],[\"M-6,-6H6L0,6Z\"]],r=!0;break;case\"isosurface\":o=[[\"M-6,6H0L-6,-6Z\"],[\"M6,6H0L6,-6Z\"],[\"M-6,-6 A12,24 0 0,0 6,-6 L0,6Z\"]],r=!1}var u=n.select(this).select(\"g.legendpoints\").selectAll(\"path.legend3dandfriends\").data(o);u.enter().append(\"path\").classed(\"legend3dandfriends\",!0).attr(\"transform\",_).style(\"stroke-miterlimit\",1),u.exit().remove(),u.each((function(t,o){var u,f=n.select(this),h=c(i),p=h.colorscale,g=h.reversescale;if(p){if(!r){var m=p.length;u=0===o?p[g?m-1:0][1]:1===o?p[g?0:m-1][1]:p[Math.floor((m-1)/2)][1]}}else{var v=i.vertexcolor||i.facecolor||i.color;u=a.isArrayOrTypedArray(v)?v[o]||v[0]:v}f.attr(\"d\",t[0]),u?f.call(l.fill,u):f.call((function(t){if(t.size()){var n=\"legendfill-\"+i.uid;s.gradient(t,e,n,d(g,\"radial\"===r),p,\"fill\")}}))}))})).each((function(t){var e=t[0].trace,r=\"waterfall\"===e.type;if(t[0]._distinct&&r){var i=t[0].trace[t[0].dir].marker;return t[0].mc=i.color,t[0].mlw=i.line.width,t[0].mlc=i.line.color,T(t,this,\"waterfall\")}var a=[];e.visible&&r&&(a=t[0].hasTotals?[[\"increasing\",\"M-6,-6V6H0Z\"],[\"totals\",\"M6,6H0L-6,-6H-0Z\"],[\"decreasing\",\"M6,6V-6H0Z\"]]:[[\"increasing\",\"M-6,-6V6H6Z\"],[\"decreasing\",\"M6,6V-6H-6Z\"]]);var o=n.select(this).select(\"g.legendpoints\").selectAll(\"path.legendwaterfall\").data(a);o.enter().append(\"path\").classed(\"legendwaterfall\",!0).attr(\"transform\",_).style(\"stroke-miterlimit\",1),o.exit().remove(),o.each((function(t){var r=n.select(this),i=e[t[0]].marker,a=w(void 0,i.line,5,2);r.attr(\"d\",t[1]).style(\"stroke-width\",a+\"px\").call(l.fill,i.color),a&&r.call(l.stroke,i.line.color)}))})).each((function(t){T(t,this,\"funnel\")})).each((function(t){T(t,this)})).each((function(t){var r=t[0].trace,o=n.select(this).select(\"g.legendpoints\").selectAll(\"path.legendbox\").data(r.visible&&i.traceIs(r,\"box-violin\")?[t]:[]);o.enter().append(\"path\").classed(\"legendbox\",!0).attr(\"d\",\"M6,6H-6V-6H6Z\").attr(\"transform\",_),o.exit().remove(),o.each((function(){var t=n.select(this);if(\"all\"!==r.boxpoints&&\"all\"!==r.points||0!==l.opacity(r.fillcolor)||0!==l.opacity((r.line||{}).color)){var i=w(void 0,r.line,5,2);t.style(\"stroke-width\",i+\"px\").call(l.fill,r.fillcolor),i&&l.stroke(t,r.line.color)}else{var c=a.minExtend(r,{marker:{size:y?12:a.constrain(r.marker.size,2,16),sizeref:1,sizemin:1,sizemode:\"diameter\"}});o.call(s.pointStyle,c,e)}}))})).each((function(t){k(t,this,\"funnelarea\")})).each((function(t){k(t,this,\"pie\")})).each((function(t){var r,i,o=g(t),l=o.showFill,f=o.showLine,h=o.showGradientLine,p=o.showGradientFill,m=o.anyFill,v=o.anyLine,y=t[0],b=y.trace,_=c(b),T=_.colorscale,k=_.reversescale,A=u.hasMarkers(b)||!m?\"M5,0\":v?\"M5,-2\":\"M5,-3\",M=n.select(this),S=M.select(\".legendfill\").selectAll(\"path\").data(l||p?[t]:[]);if(S.enter().append(\"path\").classed(\"js-fill\",!0),S.exit().remove(),S.attr(\"d\",A+\"h\"+x+\"v6h-\"+x+\"z\").call(l?s.fillGroupStyle:function(t){if(t.size()){var r=\"legendfill-\"+b.uid;s.gradient(t,e,r,d(k),T,\"fill\")}}),f||h){var E=w(void 0,b.line,10,5);i=a.minExtend(b,{line:{width:E}}),r=[a.minExtend(y,{trace:i})]}var L=M.select(\".legendlines\").selectAll(\"path\").data(f||h?[r]:[]);L.enter().append(\"path\").classed(\"js-line\",!0),L.exit().remove(),L.attr(\"d\",A+(h?\"l\"+x+\",0.0001\":\"h\"+x)).call(f?s.lineGroupStyle:function(t){if(t.size()){var r=\"legendline-\"+b.uid;s.lineGroupStyle(t),s.gradient(t,e,r,d(k),T,\"stroke\")}})})).each((function(t){var r,i,o=g(t),l=o.anyFill,c=o.anyLine,f=o.showLine,h=o.showMarker,p=t[0],d=p.trace,m=!h&&!c&&!l&&u.hasText(d);function v(t,e,r,n){var i=a.nestedProperty(d,t).get(),o=a.isArrayOrTypedArray(i)&&e?e(i):i;if(y&&o&&void 0!==n&&(o=n),r){if(or[1])return r[1]}return o}function x(t){return p._distinct&&p.index&&t[p.index]?t[p.index]:t[0]}if(h||m||f){var b={},w={};if(h){b.mc=v(\"marker.color\",x),b.mx=v(\"marker.symbol\",x),b.mo=v(\"marker.opacity\",a.mean,[.2,1]),b.mlc=v(\"marker.line.color\",x),b.mlw=v(\"marker.line.width\",a.mean,[0,5],2),w.marker={sizeref:1,sizemin:1,sizemode:\"diameter\"};var T=v(\"marker.size\",a.mean,[2,16],12);b.ms=T,w.marker.size=T}f&&(w.line={width:v(\"line.width\",x,[0,10],5)}),m&&(b.tx=\"Aa\",b.tp=v(\"textposition\",x),b.ts=10,b.tc=v(\"textfont.color\",x),b.tf=v(\"textfont.family\",x)),r=[a.minExtend(p,b)],(i=a.minExtend(d,w)).selectedpoints=null,i.texttemplate=null}var k=n.select(this).select(\"g.legendpoints\"),A=k.selectAll(\"path.scatterpts\").data(h?r:[]);A.enter().insert(\"path\",\":first-child\").classed(\"scatterpts\",!0).attr(\"transform\",_),A.exit().remove(),A.call(s.pointStyle,i,e),h&&(r[0].mrc=3);var M=k.selectAll(\"g.pointtext\").data(m?r:[]);M.enter().append(\"g\").classed(\"pointtext\",!0).append(\"text\").attr(\"transform\",_),M.exit().remove(),M.selectAll(\"text\").call(s.textPointStyle,i,e)})).each((function(t){var e=t[0].trace,r=n.select(this).select(\"g.legendpoints\").selectAll(\"path.legendcandle\").data(e.visible&&\"candlestick\"===e.type?[t,t]:[]);r.enter().append(\"path\").classed(\"legendcandle\",!0).attr(\"d\",(function(t,e){return e?\"M-15,0H-8M-8,6V-6H8Z\":\"M15,0H8M8,-6V6H-8Z\"})).attr(\"transform\",_).style(\"stroke-miterlimit\",1),r.exit().remove(),r.each((function(t,r){var i=n.select(this),a=e[r?\"increasing\":\"decreasing\"],o=w(void 0,a.line,5,2);i.style(\"stroke-width\",o+\"px\").call(l.fill,a.fillcolor),o&&l.stroke(i,a.line.color)}))})).each((function(t){var e=t[0].trace,r=n.select(this).select(\"g.legendpoints\").selectAll(\"path.legendohlc\").data(e.visible&&\"ohlc\"===e.type?[t,t]:[]);r.enter().append(\"path\").classed(\"legendohlc\",!0).attr(\"d\",(function(t,e){return e?\"M-15,0H0M-8,-6V0\":\"M15,0H0M8,6V0\"})).attr(\"transform\",_).style(\"stroke-miterlimit\",1),r.exit().remove(),r.each((function(t,r){var i=n.select(this),a=e[r?\"increasing\":\"decreasing\"],o=w(void 0,a.line,5,2);i.style(\"fill\",\"none\").call(s.dashLine,a.line.dash,o),o&&l.stroke(i,a.line.color)}))}))}},{\"../../lib\":503,\"../../registry\":638,\"../../traces/pie/helpers\":905,\"../../traces/pie/style_one\":911,\"../../traces/scatter/subtypes\":951,\"../color\":366,\"../colorscale/helpers\":377,\"../drawing\":388,\"./constants\":417,\"@plotly/d3\":58}],425:[function(t,e,r){\"use strict\";t(\"./constants\");e.exports={editType:\"modebar\",orientation:{valType:\"enumerated\",values:[\"v\",\"h\"],dflt:\"h\",editType:\"modebar\"},bgcolor:{valType:\"color\",editType:\"modebar\"},color:{valType:\"color\",editType:\"modebar\"},activecolor:{valType:\"color\",editType:\"modebar\"},uirevision:{valType:\"any\",editType:\"none\"},add:{valType:\"string\",arrayOk:!0,dflt:\"\",editType:\"modebar\"},remove:{valType:\"string\",arrayOk:!0,dflt:\"\",editType:\"modebar\"}}},{\"./constants\":427}],426:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../plots/plots\"),a=t(\"../../plots/cartesian/axis_ids\"),o=t(\"../../fonts/ploticon\"),s=t(\"../shapes/draw\").eraseActiveShape,l=t(\"../../lib\"),c=l._,u=e.exports={};function f(t,e){var r,i,o=e.currentTarget,s=o.getAttribute(\"data-attr\"),l=o.getAttribute(\"data-val\")||!0,c=t._fullLayout,u={},f=a.list(t,null,!0),h=c._cartesianSpikesEnabled;if(\"zoom\"===s){var p,d=\"in\"===l?.5:2,g=(1+d)/2,m=(1-d)/2;for(i=0;i1?(I=[\"toggleHover\"],O=[\"resetViews\"]):v?(P=[\"zoomInGeo\",\"zoomOutGeo\"],I=[\"hoverClosestGeo\"],O=[\"resetGeo\"]):m?(I=[\"hoverClosest3d\"],O=[\"resetCameraDefault3d\",\"resetCameraLastSave3d\"]):w?(P=[\"zoomInMapbox\",\"zoomOutMapbox\"],I=[\"toggleHover\"],O=[\"resetViewMapbox\"]):b?I=[\"hoverClosestGl2d\"]:y?I=[\"hoverClosestPie\"]:A?(I=[\"hoverClosestCartesian\",\"hoverCompareCartesian\"],O=[\"resetViewSankey\"]):I=[\"toggleHover\"];g&&(I=[\"toggleSpikelines\",\"hoverClosestCartesian\",\"hoverCompareCartesian\"]);(function(t){for(var e=0;e0)){var g=function(t,e,r){for(var n=r.filter((function(r){return e[r].anchor===t._id})),i=0,a=0;a=n.max)e=F[r+1];else if(t=n.pmax)e=F[r+1];else if(t0?h+c:c;return{ppad:c,ppadplus:u?d:g,ppadminus:u?g:d}}return{ppad:c}}function u(t,e,r,n,i){var s=\"category\"===t.type||\"multicategory\"===t.type?t.r2c:t.d2c;if(void 0!==e)return[s(e),s(r)];if(n){var l,c,u,f,h=1/0,p=-1/0,d=n.match(a.segmentRE);for(\"date\"===t.type&&(s=o.decodeDate(s)),l=0;lp&&(p=f)));return p>=h?[h,p]:void 0}}e.exports=function(t){var e=t._fullLayout,r=n.filterVisible(e.shapes);if(r.length&&t._fullData.length)for(var o=0;oy?(k=f,E=\"y0\",A=y,L=\"y1\"):(k=y,E=\"y1\",A=f,L=\"y0\");Z(n),Q(s,r),function(t,e,r){var n=e.xref,i=e.yref,o=a.getFromId(r,n),s=a.getFromId(r,i),l=\"\";\"paper\"===n||o.autorange||(l+=n);\"paper\"===i||s.autorange||(l+=i);u.setClipUrl(t,l?\"clip\"+r._fullLayout._uid+l:null,r)}(e,r,t),X.moveFn=\"move\"===O?J:K,X.altKey=n.altKey},doneFn:function(){if(v(t))return;p(e),$(s),b(e,t,r),n.call(\"_guiRelayout\",t,l.getUpdateObj())},clickFn:function(){if(v(t))return;$(s)}};function Z(r){if(v(t))O=null;else if(R)O=\"path\"===r.target.tagName?\"move\":\"start-point\"===r.target.attributes[\"data-line-point\"].value?\"resize-over-start-point\":\"resize-over-end-point\";else{var n=X.element.getBoundingClientRect(),i=n.right-n.left,a=n.bottom-n.top,o=r.clientX-n.left,s=r.clientY-n.top,l=!F&&i>10&&a>10&&!r.shiftKey?h.getCursor(o/i,1-s/a):\"move\";p(e,l),O=l.split(\"-\")[0]}}function J(n,i){if(\"path\"===r.type){var a=function(t){return t},o=a,l=a;z?B(\"xanchor\",r.xanchor=G(x+n)):(o=function(t){return G(H(t)+n)},N&&\"date\"===N.type&&(o=g.encodeDate(o))),D?B(\"yanchor\",r.yanchor=Y(T+i)):(l=function(t){return Y(q(t)+i)},U&&\"date\"===U.type&&(l=g.encodeDate(l))),B(\"path\",r.path=w(I,o,l))}else z?B(\"xanchor\",r.xanchor=G(x+n)):(B(\"x0\",r.x0=G(c+n)),B(\"x1\",r.x1=G(m+n))),D?B(\"yanchor\",r.yanchor=Y(T+i)):(B(\"y0\",r.y0=Y(f+i)),B(\"y1\",r.y1=Y(y+i)));e.attr(\"d\",_(t,r)),Q(s,r)}function K(n,i){if(F){var a=function(t){return t},o=a,l=a;z?B(\"xanchor\",r.xanchor=G(x+n)):(o=function(t){return G(H(t)+n)},N&&\"date\"===N.type&&(o=g.encodeDate(o))),D?B(\"yanchor\",r.yanchor=Y(T+i)):(l=function(t){return Y(q(t)+i)},U&&\"date\"===U.type&&(l=g.encodeDate(l))),B(\"path\",r.path=w(I,o,l))}else if(R){if(\"resize-over-start-point\"===O){var u=c+n,h=D?f-i:f+i;B(\"x0\",r.x0=z?u:G(u)),B(\"y0\",r.y0=D?h:Y(h))}else if(\"resize-over-end-point\"===O){var p=m+n,d=D?y-i:y+i;B(\"x1\",r.x1=z?p:G(p)),B(\"y1\",r.y1=D?d:Y(d))}}else{var v=function(t){return-1!==O.indexOf(t)},b=v(\"n\"),j=v(\"s\"),V=v(\"w\"),W=v(\"e\"),X=b?k+i:k,Z=j?A+i:A,J=V?M+n:M,K=W?S+n:S;D&&(b&&(X=k-i),j&&(Z=A-i)),(!D&&Z-X>10||D&&X-Z>10)&&(B(E,r[E]=D?X:Y(X)),B(L,r[L]=D?Z:Y(Z))),K-J>10&&(B(C,r[C]=z?J:G(J)),B(P,r[P]=z?K:G(K)))}e.attr(\"d\",_(t,r)),Q(s,r)}function Q(t,e){(z||D)&&function(){var r=\"path\"!==e.type,n=t.selectAll(\".visual-cue\").data([0]);n.enter().append(\"path\").attr({fill:\"#fff\",\"fill-rule\":\"evenodd\",stroke:\"#000\",\"stroke-width\":1}).classed(\"visual-cue\",!0);var a=H(z?e.xanchor:i.midRange(r?[e.x0,e.x1]:g.extractPathCoords(e.path,d.paramIsX))),o=q(D?e.yanchor:i.midRange(r?[e.y0,e.y1]:g.extractPathCoords(e.path,d.paramIsY)));if(a=g.roundPositionForSharpStrokeRendering(a,1),o=g.roundPositionForSharpStrokeRendering(o,1),z&&D){var s=\"M\"+(a-1-1)+\",\"+(o-1-1)+\"h-8v2h8 v8h2v-8 h8v-2h-8 v-8h-2 Z\";n.attr(\"d\",s)}else if(z){var l=\"M\"+(a-1-1)+\",\"+(o-9-1)+\"v18 h2 v-18 Z\";n.attr(\"d\",l)}else{var c=\"M\"+(a-9-1)+\",\"+(o-1-1)+\"h18 v2 h-18 Z\";n.attr(\"d\",c)}}()}function $(t){t.selectAll(\".visual-cue\").remove()}h.init(X),W.node().onmousemove=Z}(t,z,l,e,r,O):!0===l.editable&&z.style(\"pointer-events\",P||c.opacity(S)*M<=.5?\"stroke\":\"all\");z.node().addEventListener(\"click\",(function(){return function(t,e){if(!y(t))return;var r=+e.node().getAttribute(\"data-index\");if(r>=0){if(r===t._fullLayout._activeShapeIndex)return void T(t);t._fullLayout._activeShapeIndex=r,t._fullLayout._deactivateShape=T,m(t)}}(t,z)}))}}function b(t,e,r){var n=(r.xref+r.yref).replace(/paper/g,\"\").replace(/[xyz][1-9]* *domain/g,\"\");u.setClipUrl(t,n?\"clip\"+e._fullLayout._uid+n:null,e)}function _(t,e){var r,n,o,s,l,c,u,f,h=e.type,p=a.getRefType(e.xref),m=a.getRefType(e.yref),v=a.getFromId(t,e.xref),y=a.getFromId(t,e.yref),x=t._fullLayout._size;if(v?\"domain\"===p?n=function(t){return v._offset+v._length*t}:(r=g.shapePositionToRange(v),n=function(t){return v._offset+v.r2p(r(t,!0))}):n=function(t){return x.l+x.w*t},y?\"domain\"===m?s=function(t){return y._offset+y._length*(1-t)}:(o=g.shapePositionToRange(y),s=function(t){return y._offset+y.r2p(o(t,!0))}):s=function(t){return x.t+x.h*(1-t)},\"path\"===h)return v&&\"date\"===v.type&&(n=g.decodeDate(n)),y&&\"date\"===y.type&&(s=g.decodeDate(s)),function(t,e,r){var n=t.path,a=t.xsizemode,o=t.ysizemode,s=t.xanchor,l=t.yanchor;return n.replace(d.segmentRE,(function(t){var n=0,c=t.charAt(0),u=d.paramIsX[c],f=d.paramIsY[c],h=d.numParams[c],p=t.substr(1).replace(d.paramRE,(function(t){return u[n]?t=\"pixel\"===a?e(s)+Number(t):e(t):f[n]&&(t=\"pixel\"===o?r(l)-Number(t):r(t)),++n>h&&(t=\"X\"),t}));return n>h&&(p=p.replace(/[\\s,]*X.*/,\"\"),i.log(\"Ignoring extra params in segment \"+t)),c+p}))}(e,n,s);if(\"pixel\"===e.xsizemode){var b=n(e.xanchor);l=b+e.x0,c=b+e.x1}else l=n(e.x0),c=n(e.x1);if(\"pixel\"===e.ysizemode){var _=s(e.yanchor);u=_-e.y0,f=_-e.y1}else u=s(e.y0),f=s(e.y1);if(\"line\"===h)return\"M\"+l+\",\"+u+\"L\"+c+\",\"+f;if(\"rect\"===h)return\"M\"+l+\",\"+u+\"H\"+c+\"V\"+f+\"H\"+l+\"Z\";var w=(l+c)/2,T=(u+f)/2,k=Math.abs(w-l),A=Math.abs(T-u),M=\"A\"+k+\",\"+A,S=w+k+\",\"+T;return\"M\"+S+M+\" 0 1,1 \"+(w+\",\"+(T-A))+M+\" 0 0,1 \"+S+\"Z\"}function w(t,e,r){return t.replace(d.segmentRE,(function(t){var n=0,i=t.charAt(0),a=d.paramIsX[i],o=d.paramIsY[i],s=d.numParams[i];return i+t.substr(1).replace(d.paramRE,(function(t){return n>=s||(a[n]?t=e(t):o[n]&&(t=r(t)),n++),t}))}))}function T(t){y(t)&&(t._fullLayout._activeShapeIndex>=0&&(l(t),delete t._fullLayout._activeShapeIndex,m(t)))}e.exports={draw:m,drawOne:x,eraseActiveShape:function(t){if(!y(t))return;l(t);var e=t._fullLayout._activeShapeIndex,r=(t.layout||{}).shapes||[];if(e=0&&f(v),r.attr(\"d\",g(e)),A&&!h)&&(k=function(t,e){for(var r=0;r1&&(2!==t.length||\"Z\"!==t[1][0])&&(0===T&&(t[0][0]=\"M\"),e[w]=t,y(),x())}}()}}function I(t,r){!function(t,r){if(e.length)for(var n=0;n0&&l0&&(s=s.transition().duration(e.transition.duration).ease(e.transition.easing)),s.attr(\"transform\",l(o-.5*f.gripWidth,e._dims.currentValueTotalHeight))}}function E(t,e){var r=t._dims;return r.inputAreaStart+f.stepInset+(r.inputAreaLength-2*f.stepInset)*Math.min(1,Math.max(0,e))}function L(t,e){var r=t._dims;return Math.min(1,Math.max(0,(e-f.stepInset-r.inputAreaStart)/(r.inputAreaLength-2*f.stepInset-2*r.inputAreaStart)))}function C(t,e,r){var n=r._dims,i=s.ensureSingle(t,\"rect\",f.railTouchRectClass,(function(n){n.call(A,e,t,r).style(\"pointer-events\",\"all\")}));i.attr({width:n.inputAreaLength,height:Math.max(n.inputAreaWidth,f.tickOffset+r.ticklen+n.labelHeight)}).call(a.fill,r.bgcolor).attr(\"opacity\",0),o.setTranslate(i,0,n.currentValueTotalHeight)}function P(t,e){var r=e._dims,n=r.inputAreaLength-2*f.railInset,i=s.ensureSingle(t,\"rect\",f.railRectClass);i.attr({width:n,height:f.railWidth,rx:f.railRadius,ry:f.railRadius,\"shape-rendering\":\"crispEdges\"}).call(a.stroke,e.bordercolor).call(a.fill,e.bgcolor).style(\"stroke-width\",e.borderwidth+\"px\"),o.setTranslate(i,f.railInset,.5*(r.inputAreaWidth-f.railWidth)+r.currentValueTotalHeight)}e.exports=function(t){var e=t._fullLayout,r=function(t,e){for(var r=t[f.name],n=[],i=0;i0?[0]:[]);function s(e){e._commandObserver&&(e._commandObserver.remove(),delete e._commandObserver),i.autoMargin(t,m(e))}if(a.enter().append(\"g\").classed(f.containerClassName,!0).style(\"cursor\",\"ew-resize\"),a.exit().each((function(){n.select(this).selectAll(\"g.\"+f.groupClassName).each(s)})).remove(),0!==r.length){var l=a.selectAll(\"g.\"+f.groupClassName).data(r,v);l.enter().append(\"g\").classed(f.groupClassName,!0),l.exit().each(s).remove();for(var c=0;c0||h<0){var v={left:[-d,0],right:[d,0],top:[0,-d],bottom:[0,d]}[b.side];e.attr(\"transform\",l(v[0],v[1]))}}}return R.call(F),O&&(E?R.on(\".opacity\",null):(A=0,M=!0,R.text(y).on(\"mouseover.opacity\",(function(){n.select(this).transition().duration(h.SHOW_PLACEHOLDER).style(\"opacity\",1)})).on(\"mouseout.opacity\",(function(){n.select(this).transition().duration(h.HIDE_PLACEHOLDER).style(\"opacity\",0)}))),R.call(f.makeEditable,{gd:t}).on(\"edit\",(function(e){void 0!==x?o.call(\"_guiRestyle\",t,v,e,x):o.call(\"_guiRelayout\",t,v,e)})).on(\"cancel\",(function(){this.text(this.attr(\"data-unformatted\")).call(F)})).on(\"input\",(function(t){this.text(t||\" \").call(f.positionText,_.x,_.y)}))),R.classed(\"js-placeholder\",M),T}}},{\"../../constants/alignment\":471,\"../../constants/interactions\":478,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../../plots/plots\":619,\"../../registry\":638,\"../color\":366,\"../drawing\":388,\"@plotly/d3\":58,\"fast-isnumeric\":190}],465:[function(t,e,r){\"use strict\";var n=t(\"../../plots/font_attributes\"),i=t(\"../color/attributes\"),a=t(\"../../lib/extend\").extendFlat,o=t(\"../../plot_api/edit_types\").overrideAll,s=t(\"../../plots/pad_attributes\"),l=t(\"../../plot_api/plot_template\").templatedArray,c=l(\"button\",{visible:{valType:\"boolean\"},method:{valType:\"enumerated\",values:[\"restyle\",\"relayout\",\"animate\",\"update\",\"skip\"],dflt:\"restyle\"},args:{valType:\"info_array\",freeLength:!0,items:[{valType:\"any\"},{valType:\"any\"},{valType:\"any\"}]},args2:{valType:\"info_array\",freeLength:!0,items:[{valType:\"any\"},{valType:\"any\"},{valType:\"any\"}]},label:{valType:\"string\",dflt:\"\"},execute:{valType:\"boolean\",dflt:!0}});e.exports=o(l(\"updatemenu\",{_arrayAttrRegexps:[/^updatemenus\\[(0|[1-9][0-9]+)\\]\\.buttons/],visible:{valType:\"boolean\"},type:{valType:\"enumerated\",values:[\"dropdown\",\"buttons\"],dflt:\"dropdown\"},direction:{valType:\"enumerated\",values:[\"left\",\"right\",\"up\",\"down\"],dflt:\"down\"},active:{valType:\"integer\",min:-1,dflt:0},showactive:{valType:\"boolean\",dflt:!0},buttons:c,x:{valType:\"number\",min:-2,max:3,dflt:-.05},xanchor:{valType:\"enumerated\",values:[\"auto\",\"left\",\"center\",\"right\"],dflt:\"right\"},y:{valType:\"number\",min:-2,max:3,dflt:1},yanchor:{valType:\"enumerated\",values:[\"auto\",\"top\",\"middle\",\"bottom\"],dflt:\"top\"},pad:a(s({editType:\"arraydraw\"}),{}),font:n({}),bgcolor:{valType:\"color\"},bordercolor:{valType:\"color\",dflt:i.borderLine},borderwidth:{valType:\"number\",min:0,dflt:1,editType:\"arraydraw\"}}),\"arraydraw\",\"from-root\")},{\"../../lib/extend\":493,\"../../plot_api/edit_types\":536,\"../../plot_api/plot_template\":543,\"../../plots/font_attributes\":585,\"../../plots/pad_attributes\":618,\"../color/attributes\":365}],466:[function(t,e,r){\"use strict\";e.exports={name:\"updatemenus\",containerClassName:\"updatemenu-container\",headerGroupClassName:\"updatemenu-header-group\",headerClassName:\"updatemenu-header\",headerArrowClassName:\"updatemenu-header-arrow\",dropdownButtonGroupClassName:\"updatemenu-dropdown-button-group\",dropdownButtonClassName:\"updatemenu-dropdown-button\",buttonClassName:\"updatemenu-button\",itemRectClassName:\"updatemenu-item-rect\",itemTextClassName:\"updatemenu-item-text\",menuIndexAttrName:\"updatemenu-active-index\",autoMarginIdRoot:\"updatemenu-\",blankHeaderOpts:{label:\" \"},minWidth:30,minHeight:30,textPadX:24,arrowPadX:16,rx:2,ry:2,textOffsetX:12,textOffsetY:3,arrowOffsetX:4,gapButtonHeader:5,gapButton:2,activeColor:\"#F4FAFF\",hoverColor:\"#F4FAFF\",arrowSymbol:{left:\"\\u25c4\",right:\"\\u25ba\",up:\"\\u25b2\",down:\"\\u25bc\"}}},{}],467:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../plots/array_container_defaults\"),a=t(\"./attributes\"),o=t(\"./constants\").name,s=a.buttons;function l(t,e,r){function o(r,i){return n.coerce(t,e,a,r,i)}o(\"visible\",i(t,e,{name:\"buttons\",handleItemDefaults:c}).length>0)&&(o(\"active\"),o(\"direction\"),o(\"type\"),o(\"showactive\"),o(\"x\"),o(\"y\"),n.noneOrAll(t,e,[\"x\",\"y\"]),o(\"xanchor\"),o(\"yanchor\"),o(\"pad.t\"),o(\"pad.r\"),o(\"pad.b\"),o(\"pad.l\"),n.coerceFont(o,\"font\",r.font),o(\"bgcolor\",r.paper_bgcolor),o(\"bordercolor\"),o(\"borderwidth\"))}function c(t,e){function r(r,i){return n.coerce(t,e,s,r,i)}r(\"visible\",\"skip\"===t.method||Array.isArray(t.args))&&(r(\"method\"),r(\"args\"),r(\"args2\"),r(\"label\"),r(\"execute\"))}e.exports=function(t,e){i(t,e,{name:o,handleItemDefaults:l})}},{\"../../lib\":503,\"../../plots/array_container_defaults\":549,\"./attributes\":465,\"./constants\":466}],468:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../plots/plots\"),a=t(\"../color\"),o=t(\"../drawing\"),s=t(\"../../lib\"),l=t(\"../../lib/svg_text_utils\"),c=t(\"../../plot_api/plot_template\").arrayEditor,u=t(\"../../constants/alignment\").LINE_SPACING,f=t(\"./constants\"),h=t(\"./scrollbox\");function p(t){return t._index}function d(t,e){return+t.attr(f.menuIndexAttrName)===e._index}function g(t,e,r,n,i,a,o,s){e.active=o,c(t.layout,f.name,e).applyUpdate(\"active\",o),\"buttons\"===e.type?v(t,n,null,null,e):\"dropdown\"===e.type&&(i.attr(f.menuIndexAttrName,\"-1\"),m(t,n,i,a,e),s||v(t,n,i,a,e))}function m(t,e,r,n,i){var a=s.ensureSingle(e,\"g\",f.headerClassName,(function(t){t.style(\"pointer-events\",\"all\")})),l=i._dims,c=i.active,u=i.buttons[c]||f.blankHeaderOpts,h={y:i.pad.t,yPad:0,x:i.pad.l,xPad:0,index:0},p={width:l.headerWidth,height:l.headerHeight};a.call(y,i,u,t).call(M,i,h,p),s.ensureSingle(e,\"text\",f.headerArrowClassName,(function(t){t.attr(\"text-anchor\",\"end\").call(o.font,i.font).text(f.arrowSymbol[i.direction])})).attr({x:l.headerWidth-f.arrowOffsetX+i.pad.l,y:l.headerHeight/2+f.textOffsetY+i.pad.t}),a.on(\"click\",(function(){r.call(S,String(d(r,i)?-1:i._index)),v(t,e,r,n,i)})),a.on(\"mouseover\",(function(){a.call(w)})),a.on(\"mouseout\",(function(){a.call(T,i)})),o.setTranslate(e,l.lx,l.ly)}function v(t,e,r,a,o){r||(r=e).attr(\"pointer-events\",\"all\");var l=function(t){return-1==+t.attr(f.menuIndexAttrName)}(r)&&\"buttons\"!==o.type?[]:o.buttons,c=\"dropdown\"===o.type?f.dropdownButtonClassName:f.buttonClassName,u=r.selectAll(\"g.\"+c).data(s.filterVisible(l)),h=u.enter().append(\"g\").classed(c,!0),p=u.exit();\"dropdown\"===o.type?(h.attr(\"opacity\",\"0\").transition().attr(\"opacity\",\"1\"),p.transition().attr(\"opacity\",\"0\").remove()):p.remove();var d=0,m=0,v=o._dims,x=-1!==[\"up\",\"down\"].indexOf(o.direction);\"dropdown\"===o.type&&(x?m=v.headerHeight+f.gapButtonHeader:d=v.headerWidth+f.gapButtonHeader),\"dropdown\"===o.type&&\"up\"===o.direction&&(m=-f.gapButtonHeader+f.gapButton-v.openHeight),\"dropdown\"===o.type&&\"left\"===o.direction&&(d=-f.gapButtonHeader+f.gapButton-v.openWidth);var b={x:v.lx+d+o.pad.l,y:v.ly+m+o.pad.t,yPad:f.gapButton,xPad:f.gapButton,index:0},k={l:b.x+o.borderwidth,t:b.y+o.borderwidth};u.each((function(s,l){var c=n.select(this);c.call(y,o,s,t).call(M,o,b),c.on(\"click\",(function(){n.event.defaultPrevented||(s.execute&&(s.args2&&o.active===l?(g(t,o,0,e,r,a,-1),i.executeAPICommand(t,s.method,s.args2)):(g(t,o,0,e,r,a,l),i.executeAPICommand(t,s.method,s.args))),t.emit(\"plotly_buttonclicked\",{menu:o,button:s,active:o.active}))})),c.on(\"mouseover\",(function(){c.call(w)})),c.on(\"mouseout\",(function(){c.call(T,o),u.call(_,o)}))})),u.call(_,o),x?(k.w=Math.max(v.openWidth,v.headerWidth),k.h=b.y-k.t):(k.w=b.x-k.l,k.h=Math.max(v.openHeight,v.headerHeight)),k.direction=o.direction,a&&(u.size()?function(t,e,r,n,i,a){var o,s,l,c=i.direction,u=\"up\"===c||\"down\"===c,h=i._dims,p=i.active;if(u)for(s=0,l=0;l0?[0]:[]);if(o.enter().append(\"g\").classed(f.containerClassName,!0).style(\"cursor\",\"pointer\"),o.exit().each((function(){n.select(this).selectAll(\"g.\"+f.headerGroupClassName).each(a)})).remove(),0!==r.length){var l=o.selectAll(\"g.\"+f.headerGroupClassName).data(r,p);l.enter().append(\"g\").classed(f.headerGroupClassName,!0);for(var c=s.ensureSingle(o,\"g\",f.dropdownButtonGroupClassName,(function(t){t.style(\"pointer-events\",\"all\")})),u=0;uw,A=s.barLength+2*s.barPad,M=s.barWidth+2*s.barPad,S=d,E=m+v;E+M>c&&(E=c-M);var L=this.container.selectAll(\"rect.scrollbar-horizontal\").data(k?[0]:[]);L.exit().on(\".drag\",null).remove(),L.enter().append(\"rect\").classed(\"scrollbar-horizontal\",!0).call(i.fill,s.barColor),k?(this.hbar=L.attr({rx:s.barRadius,ry:s.barRadius,x:S,y:E,width:A,height:M}),this._hbarXMin=S+A/2,this._hbarTranslateMax=w-A):(delete this.hbar,delete this._hbarXMin,delete this._hbarTranslateMax);var C=v>T,P=s.barWidth+2*s.barPad,I=s.barLength+2*s.barPad,O=d+g,z=m;O+P>l&&(O=l-P);var D=this.container.selectAll(\"rect.scrollbar-vertical\").data(C?[0]:[]);D.exit().on(\".drag\",null).remove(),D.enter().append(\"rect\").classed(\"scrollbar-vertical\",!0).call(i.fill,s.barColor),C?(this.vbar=D.attr({rx:s.barRadius,ry:s.barRadius,x:O,y:z,width:P,height:I}),this._vbarYMin=z+I/2,this._vbarTranslateMax=T-I):(delete this.vbar,delete this._vbarYMin,delete this._vbarTranslateMax);var R=this.id,F=u-.5,B=C?f+P+.5:f+.5,N=h-.5,j=k?p+M+.5:p+.5,U=o._topdefs.selectAll(\"#\"+R).data(k||C?[0]:[]);if(U.exit().remove(),U.enter().append(\"clipPath\").attr(\"id\",R).append(\"rect\"),k||C?(this._clipRect=U.select(\"rect\").attr({x:Math.floor(F),y:Math.floor(N),width:Math.ceil(B)-Math.floor(F),height:Math.ceil(j)-Math.floor(N)}),this.container.call(a.setClipUrl,R,this.gd),this.bg.attr({x:d,y:m,width:g,height:v})):(this.bg.attr({width:0,height:0}),this.container.on(\"wheel\",null).on(\".drag\",null).call(a.setClipUrl,null),delete this._clipRect),k||C){var V=n.behavior.drag().on(\"dragstart\",(function(){n.event.sourceEvent.preventDefault()})).on(\"drag\",this._onBoxDrag.bind(this));this.container.on(\"wheel\",null).on(\"wheel\",this._onBoxWheel.bind(this)).on(\".drag\",null).call(V);var H=n.behavior.drag().on(\"dragstart\",(function(){n.event.sourceEvent.preventDefault(),n.event.sourceEvent.stopPropagation()})).on(\"drag\",this._onBarDrag.bind(this));k&&this.hbar.on(\".drag\",null).call(H),C&&this.vbar.on(\".drag\",null).call(H)}this.setTranslate(e,r)},s.prototype.disable=function(){(this.hbar||this.vbar)&&(this.bg.attr({width:0,height:0}),this.container.on(\"wheel\",null).on(\".drag\",null).call(a.setClipUrl,null),delete this._clipRect),this.hbar&&(this.hbar.on(\".drag\",null),this.hbar.remove(),delete this.hbar,delete this._hbarXMin,delete this._hbarTranslateMax),this.vbar&&(this.vbar.on(\".drag\",null),this.vbar.remove(),delete this.vbar,delete this._vbarYMin,delete this._vbarTranslateMax)},s.prototype._onBoxDrag=function(){var t=this.translateX,e=this.translateY;this.hbar&&(t-=n.event.dx),this.vbar&&(e-=n.event.dy),this.setTranslate(t,e)},s.prototype._onBoxWheel=function(){var t=this.translateX,e=this.translateY;this.hbar&&(t+=n.event.deltaY),this.vbar&&(e+=n.event.deltaY),this.setTranslate(t,e)},s.prototype._onBarDrag=function(){var t=this.translateX,e=this.translateY;if(this.hbar){var r=t+this._hbarXMin,i=r+this._hbarTranslateMax;t=(o.constrain(n.event.x,r,i)-r)/(i-r)*(this.position.w-this._box.w)}if(this.vbar){var a=e+this._vbarYMin,s=a+this._vbarTranslateMax;e=(o.constrain(n.event.y,a,s)-a)/(s-a)*(this.position.h-this._box.h)}this.setTranslate(t,e)},s.prototype.setTranslate=function(t,e){var r=this.position.w-this._box.w,n=this.position.h-this._box.h;if(t=o.constrain(t||0,0,r),e=o.constrain(e||0,0,n),this.translateX=t,this.translateY=e,this.container.call(a.setTranslate,this._box.l-this.position.l-t,this._box.t-this.position.t-e),this._clipRect&&this._clipRect.attr({x:Math.floor(this.position.l+t-.5),y:Math.floor(this.position.t+e-.5)}),this.hbar){var i=t/r;this.hbar.call(a.setTranslate,t+i*this._hbarTranslateMax,e)}if(this.vbar){var s=e/n;this.vbar.call(a.setTranslate,t,e+s*this._vbarTranslateMax)}}},{\"../../lib\":503,\"../color\":366,\"../drawing\":388,\"@plotly/d3\":58}],471:[function(t,e,r){\"use strict\";e.exports={FROM_BL:{left:0,center:.5,right:1,bottom:0,middle:.5,top:1},FROM_TL:{left:0,center:.5,right:1,bottom:1,middle:.5,top:0},FROM_BR:{left:1,center:.5,right:0,bottom:0,middle:.5,top:1},LINE_SPACING:1.3,CAP_SHIFT:.7,MID_SHIFT:.35,OPPOSITE_SIDE:{left:\"right\",right:\"left\",top:\"bottom\",bottom:\"top\"}}},{}],472:[function(t,e,r){\"use strict\";e.exports={axisRefDescription:function(t,e,r){return[\"If set to a\",t,\"axis id (e.g. *\"+t+\"* or\",\"*\"+t+\"2*), the `\"+t+\"` position refers to a\",t,\"coordinate. If set to *paper*, the `\"+t+\"`\",\"position refers to the distance from the\",e,\"of the plotting\",\"area in normalized coordinates where *0* (*1*) corresponds to the\",e,\"(\"+r+\"). If set to a\",t,\"axis ID followed by\",\"*domain* (separated by a space), the position behaves like for\",\"*paper*, but refers to the distance in fractions of the domain\",\"length from the\",e,\"of the domain of that axis: e.g.,\",\"*\"+t+\"2 domain* refers to the domain of the second\",t,\" axis and a\",t,\"position of 0.5 refers to the\",\"point between the\",e,\"and the\",r,\"of the domain of the\",\"second\",t,\"axis.\"].join(\" \")}}},{}],473:[function(t,e,r){\"use strict\";e.exports={INCREASING:{COLOR:\"#3D9970\",SYMBOL:\"\\u25b2\"},DECREASING:{COLOR:\"#FF4136\",SYMBOL:\"\\u25bc\"}}},{}],474:[function(t,e,r){\"use strict\";e.exports={FORMAT_LINK:\"https://github.com/d3/d3-format/tree/v1.4.5#d3-format\",DATE_FORMAT_LINK:\"https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format\"}},{}],475:[function(t,e,r){\"use strict\";e.exports={COMPARISON_OPS:[\"=\",\"!=\",\"<\",\">=\",\">\",\"<=\"],COMPARISON_OPS2:[\"=\",\"<\",\">=\",\">\",\"<=\"],INTERVAL_OPS:[\"[]\",\"()\",\"[)\",\"(]\",\"][\",\")(\",\"](\",\")[\"],SET_OPS:[\"{}\",\"}{\"],CONSTRAINT_REDUCTION:{\"=\":\"=\",\"<\":\"<\",\"<=\":\"<\",\">\":\">\",\">=\":\">\",\"[]\":\"[]\",\"()\":\"[]\",\"[)\":\"[]\",\"(]\":\"[]\",\"][\":\"][\",\")(\":\"][\",\"](\":\"][\",\")[\":\"][\"}}},{}],476:[function(t,e,r){\"use strict\";e.exports={solid:[[],0],dot:[[.5,1],200],dash:[[.5,1],50],longdash:[[.5,1],10],dashdot:[[.5,.625,.875,1],50],longdashdot:[[.5,.7,.8,1],10]}},{}],477:[function(t,e,r){\"use strict\";e.exports={circle:\"\\u25cf\",\"circle-open\":\"\\u25cb\",square:\"\\u25a0\",\"square-open\":\"\\u25a1\",diamond:\"\\u25c6\",\"diamond-open\":\"\\u25c7\",cross:\"+\",x:\"\\u274c\"}},{}],478:[function(t,e,r){\"use strict\";e.exports={SHOW_PLACEHOLDER:100,HIDE_PLACEHOLDER:1e3,DESELECTDIM:.2}},{}],479:[function(t,e,r){\"use strict\";e.exports={BADNUM:void 0,FP_SAFE:1e-4*Number.MAX_VALUE,ONEMAXYEAR:316224e5,ONEAVGYEAR:315576e5,ONEMINYEAR:31536e6,ONEMAXQUARTER:79488e5,ONEAVGQUARTER:78894e5,ONEMINQUARTER:76896e5,ONEMAXMONTH:26784e5,ONEAVGMONTH:26298e5,ONEMINMONTH:24192e5,ONEWEEK:6048e5,ONEDAY:864e5,ONEHOUR:36e5,ONEMIN:6e4,ONESEC:1e3,EPOCHJD:2440587.5,ALMOST_EQUAL:.999999,LOG_CLIP:10,MINUS_SIGN:\"\\u2212\"}},{}],480:[function(t,e,r){\"use strict\";r.xmlns=\"http://www.w3.org/2000/xmlns/\",r.svg=\"http://www.w3.org/2000/svg\",r.xlink=\"http://www.w3.org/1999/xlink\",r.svgAttrs={xmlns:r.svg,\"xmlns:xlink\":r.xlink}},{}],481:[function(t,e,r){\"use strict\";r.version=t(\"./version\").version,t(\"native-promise-only\"),t(\"../build/plotcss\");for(var n=t(\"./registry\"),i=r.register=n.register,a=t(\"./plot_api\"),o=Object.keys(a),s=0;splotly-logomark\"}}},{}],483:[function(t,e,r){\"use strict\";r.isLeftAnchor=function(t){return\"left\"===t.xanchor||\"auto\"===t.xanchor&&t.x<=1/3},r.isCenterAnchor=function(t){return\"center\"===t.xanchor||\"auto\"===t.xanchor&&t.x>1/3&&t.x<2/3},r.isRightAnchor=function(t){return\"right\"===t.xanchor||\"auto\"===t.xanchor&&t.x>=2/3},r.isTopAnchor=function(t){return\"top\"===t.yanchor||\"auto\"===t.yanchor&&t.y>=2/3},r.isMiddleAnchor=function(t){return\"middle\"===t.yanchor||\"auto\"===t.yanchor&&t.y>1/3&&t.y<2/3},r.isBottomAnchor=function(t){return\"bottom\"===t.yanchor||\"auto\"===t.yanchor&&t.y<=1/3}},{}],484:[function(t,e,r){\"use strict\";var n=t(\"./mod\"),i=n.mod,a=n.modHalf,o=Math.PI,s=2*o;function l(t){return Math.abs(t[1]-t[0])>s-1e-14}function c(t,e){return a(e-t,s)}function u(t,e){if(l(e))return!0;var r,n;e[0](n=i(n,s))&&(n+=s);var a=i(t,s),o=a+s;return a>=r&&a<=n||o>=r&&o<=n}function f(t,e,r,n,i,a,c){i=i||0,a=a||0;var u,f,h,p,d,g=l([r,n]);function m(t,e){return[t*Math.cos(e)+i,a-t*Math.sin(e)]}g?(u=0,f=o,h=s):r=i&&t<=a);var i,a},pathArc:function(t,e,r,n,i){return f(null,t,e,r,n,i,0)},pathSector:function(t,e,r,n,i){return f(null,t,e,r,n,i,1)},pathAnnulus:function(t,e,r,n,i,a){return f(t,e,r,n,i,a,1)}}},{\"./mod\":510}],485:[function(t,e,r){\"use strict\";var n=Array.isArray,i=ArrayBuffer,a=DataView;function o(t){return i.isView(t)&&!(t instanceof a)}function s(t){return n(t)||o(t)}function l(t,e,r){if(s(t)){if(s(t[0])){for(var n=r,i=0;ii.max?e.set(r):e.set(+t)}},integer:{coerceFunction:function(t,e,r,i){t%1||!n(t)||void 0!==i.min&&ti.max?e.set(r):e.set(+t)}},string:{coerceFunction:function(t,e,r,n){if(\"string\"!=typeof t){var i=\"number\"==typeof t;!0!==n.strict&&i?e.set(String(t)):e.set(r)}else n.noBlank&&!t?e.set(r):e.set(t)}},color:{coerceFunction:function(t,e,r){i(t).isValid()?e.set(t):e.set(r)}},colorlist:{coerceFunction:function(t,e,r){Array.isArray(t)&&t.length&&t.every((function(t){return i(t).isValid()}))?e.set(t):e.set(r)}},colorscale:{coerceFunction:function(t,e,r){e.set(o.get(t,r))}},angle:{coerceFunction:function(t,e,r){\"auto\"===t?e.set(\"auto\"):n(t)?e.set(f(+t,360)):e.set(r)}},subplotid:{coerceFunction:function(t,e,r,n){var i=n.regex||u(r);\"string\"==typeof t&&i.test(t)?e.set(t):e.set(r)},validateFunction:function(t,e){var r=e.dflt;return t===r||\"string\"==typeof t&&!!u(r).test(t)}},flaglist:{coerceFunction:function(t,e,r,n){if(\"string\"==typeof t)if(-1===(n.extras||[]).indexOf(t)){for(var i=t.split(\"+\"),a=0;a=n&&t<=i?t:u}if(\"string\"!=typeof t&&\"number\"!=typeof t)return u;t=String(t);var c=_(e),v=t.charAt(0);!c||\"G\"!==v&&\"g\"!==v||(t=t.substr(1),e=\"\");var w=c&&\"chinese\"===e.substr(0,7),T=t.match(w?x:y);if(!T)return u;var k=T[1],A=T[3]||\"1\",M=Number(T[5]||1),S=Number(T[7]||0),E=Number(T[9]||0),L=Number(T[11]||0);if(c){if(2===k.length)return u;var C;k=Number(k);try{var P=m.getComponentMethod(\"calendars\",\"getCal\")(e);if(w){var I=\"i\"===A.charAt(A.length-1);A=parseInt(A,10),C=P.newDate(k,P.toMonthIndex(k,A,I),M)}else C=P.newDate(k,Number(A),M)}catch(t){return u}return C?(C.toJD()-g)*f+S*h+E*p+L*d:u}k=2===k.length?(Number(k)+2e3-b)%100+b:Number(k),A-=1;var O=new Date(Date.UTC(2e3,A,M,S,E));return O.setUTCFullYear(k),O.getUTCMonth()!==A||O.getUTCDate()!==M?u:O.getTime()+L*d},n=r.MIN_MS=r.dateTime2ms(\"-9999\"),i=r.MAX_MS=r.dateTime2ms(\"9999-12-31 23:59:59.9999\"),r.isDateTime=function(t,e){return r.dateTime2ms(t,e)!==u};var T=90*f,k=3*h,A=5*p;function M(t,e,r,n,i){if((e||r||n||i)&&(t+=\" \"+w(e,2)+\":\"+w(r,2),(n||i)&&(t+=\":\"+w(n,2),i))){for(var a=4;i%10==0;)a-=1,i/=10;t+=\".\"+w(i,a)}return t}r.ms2DateTime=function(t,e,r){if(\"number\"!=typeof t||!(t>=n&&t<=i))return u;e||(e=0);var a,o,s,c,y,x,b=Math.floor(10*l(t+.05,1)),w=Math.round(t-b/10);if(_(r)){var S=Math.floor(w/f)+g,E=Math.floor(l(t,f));try{a=m.getComponentMethod(\"calendars\",\"getCal\")(r).fromJD(S).formatDate(\"yyyy-mm-dd\")}catch(t){a=v(\"G%Y-%m-%d\")(new Date(w))}if(\"-\"===a.charAt(0))for(;a.length<11;)a=\"-0\"+a.substr(1);else for(;a.length<10;)a=\"0\"+a;o=e=n+f&&t<=i-f))return u;var e=Math.floor(10*l(t+.05,1)),r=new Date(Math.round(t-e/10));return M(a(\"%Y-%m-%d\")(r),r.getHours(),r.getMinutes(),r.getSeconds(),10*r.getUTCMilliseconds()+e)},r.cleanDate=function(t,e,n){if(t===u)return e;if(r.isJSDate(t)||\"number\"==typeof t&&isFinite(t)){if(_(n))return s.error(\"JS Dates and milliseconds are incompatible with world calendars\",t),e;if(!(t=r.ms2DateTimeLocal(+t))&&void 0!==e)return e}else if(!r.isDateTime(t,n))return s.error(\"unrecognized date\",t),e;return t};var S=/%\\d?f/g,E=/%h/g,L={1:\"1\",2:\"1\",3:\"2\",4:\"2\"};function C(t,e,r,n){t=t.replace(S,(function(t){var r=Math.min(+t.charAt(1)||6,6);return(e/1e3%1+2).toFixed(r).substr(2).replace(/0+$/,\"\")||\"0\"}));var i=new Date(Math.floor(e+.05));if(t=t.replace(E,(function(){return L[r(\"%q\")(i)]})),_(n))try{t=m.getComponentMethod(\"calendars\",\"worldCalFmt\")(t,e,n)}catch(t){return\"Invalid\"}return r(t)(i)}var P=[59,59.9,59.99,59.999,59.9999];r.formatDate=function(t,e,r,n,i,a){if(i=_(i)&&i,!e)if(\"y\"===r)e=a.year;else if(\"m\"===r)e=a.month;else{if(\"d\"!==r)return function(t,e){var r=l(t+.05,f),n=w(Math.floor(r/h),2)+\":\"+w(l(Math.floor(r/p),60),2);if(\"M\"!==e){o(e)||(e=0);var i=(100+Math.min(l(t/d,60),P[e])).toFixed(e).substr(1);e>0&&(i=i.replace(/0+$/,\"\").replace(/[\\.]$/,\"\")),n+=\":\"+i}return n}(t,r)+\"\\n\"+C(a.dayMonthYear,t,n,i);e=a.dayMonth+\"\\n\"+a.year}return C(e,t,n,i)};var I=3*f;r.incrementMonth=function(t,e,r){r=_(r)&&r;var n=l(t,f);if(t=Math.round(t-n),r)try{var i=Math.round(t/f)+g,a=m.getComponentMethod(\"calendars\",\"getCal\")(r),o=a.fromJD(i);return e%12?a.add(o,e,\"m\"):a.add(o,e/12,\"y\"),(o.toJD()-g)*f+n}catch(e){s.error(\"invalid ms \"+t+\" in calendar \"+r)}var c=new Date(t+I);return c.setUTCMonth(c.getUTCMonth()+e)+n-I},r.findExactDates=function(t,e){for(var r,n,i=0,a=0,s=0,l=0,c=_(e)&&m.getComponentMethod(\"calendars\",\"getCal\")(e),u=0;u0&&t[e+1][0]<0)return e;return null}switch(e=\"RUS\"===s||\"FJI\"===s?function(t){var e;if(null===c(t))e=t;else for(e=new Array(t.length),i=0;ie?r[n++]=[t[i][0]+360,t[i][1]]:i===e?(r[n++]=t[i],r[n++]=[t[i][0],-90]):r[n++]=t[i];var a=h.tester(r);a.pts.pop(),l.push(a)}:function(t){l.push(h.tester(t))},a.type){case\"MultiPolygon\":for(r=0;ri&&(i=c,e=l)}else e=r;return o.default(e).geometry.coordinates}(u),n.fIn=t,n.fOut=u,s.push(u)}else c.log([\"Location\",n.loc,\"does not have a valid GeoJSON geometry.\",\"Traces with locationmode *geojson-id* only support\",\"*Polygon* and *MultiPolygon* geometries.\"].join(\" \"))}delete i[r]}switch(r.type){case\"FeatureCollection\":var h=r.features;for(n=0;n100?(clearInterval(a),n(\"Unexpected error while fetching from \"+t)):void i++}),50)}))}for(var o=0;o0&&(r.push(i),i=[])}return i.length>0&&r.push(i),r},r.makeLine=function(t){return 1===t.length?{type:\"LineString\",coordinates:t[0]}:{type:\"MultiLineString\",coordinates:t}},r.makePolygon=function(t){if(1===t.length)return{type:\"Polygon\",coordinates:t};for(var e=new Array(t.length),r=0;r1||g<0||g>1?null:{x:t+l*g,y:e+f*g}}function l(t,e,r,n,i){var a=n*t+i*e;if(a<0)return n*n+i*i;if(a>r){var o=n-t,s=i-e;return o*o+s*s}var l=n*e-i*t;return l*l/r}r.segmentsIntersect=s,r.segmentDistance=function(t,e,r,n,i,a,o,c){if(s(t,e,r,n,i,a,o,c))return 0;var u=r-t,f=n-e,h=o-i,p=c-a,d=u*u+f*f,g=h*h+p*p,m=Math.min(l(u,f,d,i-t,a-e),l(u,f,d,o-t,c-e),l(h,p,g,t-i,e-a),l(h,p,g,r-i,n-a));return Math.sqrt(m)},r.getTextLocation=function(t,e,r,s){if(t===i&&s===a||(n={},i=t,a=s),n[r])return n[r];var l=t.getPointAtLength(o(r-s/2,e)),c=t.getPointAtLength(o(r+s/2,e)),u=Math.atan((c.y-l.y)/(c.x-l.x)),f=t.getPointAtLength(o(r,e)),h={x:(4*f.x+l.x+c.x)/6,y:(4*f.y+l.y+c.y)/6,theta:u};return n[r]=h,h},r.clearLocationCache=function(){i=null},r.getVisibleSegment=function(t,e,r){var n,i,a=e.left,o=e.right,s=e.top,l=e.bottom,c=0,u=t.getTotalLength(),f=u;function h(e){var r=t.getPointAtLength(e);0===e?n=r:e===u&&(i=r);var c=r.xo?r.x-o:0,f=r.yl?r.y-l:0;return Math.sqrt(c*c+f*f)}for(var p=h(c);p;){if((c+=p+r)>f)return;p=h(c)}for(p=h(f);p;){if(c>(f-=p+r))return;p=h(f)}return{min:c,max:f,len:f-c,total:u,isClosed:0===c&&f===u&&Math.abs(n.x-i.x)<.1&&Math.abs(n.y-i.y)<.1}},r.findPointOnPath=function(t,e,r,n){for(var i,a,o,s=(n=n||{}).pathLength||t.getTotalLength(),l=n.tolerance||.001,c=n.iterationLimit||30,u=t.getPointAtLength(0)[r]>t.getPointAtLength(s)[r]?-1:1,f=0,h=0,p=s;f0?p=i:h=i,f++}return a}},{\"./mod\":510}],499:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"tinycolor2\"),a=t(\"color-normalize\"),o=t(\"../components/colorscale\"),s=t(\"../components/color/attributes\").defaultLine,l=t(\"./array\").isArrayOrTypedArray,c=a(s);function u(t,e){var r=t;return r[3]*=e,r}function f(t){if(n(t))return c;var e=a(t);return e.length?e:c}function h(t){return n(t)?t:1}e.exports={formatColor:function(t,e,r){var n,i,s,p,d,g=t.color,m=l(g),v=l(e),y=o.extractOpts(t),x=[];if(n=void 0!==y.colorscale?o.makeColorScaleFuncFromTrace(t):f,i=m?function(t,e){return void 0===t[e]?c:a(n(t[e]))}:f,s=v?function(t,e){return void 0===t[e]?1:h(t[e])}:h,m||v)for(var b=0;b1?(r*t+r*e)/r:t+e,i=String(n).length;if(i>16){var a=String(e).length;if(i>=String(t).length+a){var o=parseFloat(n).toPrecision(12);-1===o.indexOf(\"e+\")&&(n=+o)}}return n}},{}],503:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"d3-time-format\").utcFormat,a=t(\"d3-format\").format,o=t(\"fast-isnumeric\"),s=t(\"../constants/numerical\"),l=s.FP_SAFE,c=-l,u=s.BADNUM,f=e.exports={};f.adjustFormat=function(t){return!t||/^\\d[.]\\df/.test(t)||/[.]\\d%/.test(t)?t:\"0.f\"===t?\"~f\":/^\\d%/.test(t)?\"~%\":/^\\ds/.test(t)?\"~s\":!/^[~,.0$]/.test(t)&&/[&fps]/.test(t)?\"~\"+t:t};var h={};f.warnBadFormat=function(t){var e=String(t);h[e]||(h[e]=1,f.warn('encountered bad format: \"'+e+'\"'))},f.noFormat=function(t){return String(t)},f.numberFormat=function(t){var e;try{e=a(f.adjustFormat(t))}catch(e){return f.warnBadFormat(t),f.noFormat}return e},f.nestedProperty=t(\"./nested_property\"),f.keyedContainer=t(\"./keyed_container\"),f.relativeAttr=t(\"./relative_attr\"),f.isPlainObject=t(\"./is_plain_object\"),f.toLogRange=t(\"./to_log_range\"),f.relinkPrivateKeys=t(\"./relink_private\");var p=t(\"./array\");f.isTypedArray=p.isTypedArray,f.isArrayOrTypedArray=p.isArrayOrTypedArray,f.isArray1D=p.isArray1D,f.ensureArray=p.ensureArray,f.concat=p.concat,f.maxRowLength=p.maxRowLength,f.minRowLength=p.minRowLength;var d=t(\"./mod\");f.mod=d.mod,f.modHalf=d.modHalf;var g=t(\"./coerce\");f.valObjectMeta=g.valObjectMeta,f.coerce=g.coerce,f.coerce2=g.coerce2,f.coerceFont=g.coerceFont,f.coercePattern=g.coercePattern,f.coerceHoverinfo=g.coerceHoverinfo,f.coerceSelectionMarkerOpacity=g.coerceSelectionMarkerOpacity,f.validate=g.validate;var m=t(\"./dates\");f.dateTime2ms=m.dateTime2ms,f.isDateTime=m.isDateTime,f.ms2DateTime=m.ms2DateTime,f.ms2DateTimeLocal=m.ms2DateTimeLocal,f.cleanDate=m.cleanDate,f.isJSDate=m.isJSDate,f.formatDate=m.formatDate,f.incrementMonth=m.incrementMonth,f.dateTick0=m.dateTick0,f.dfltRange=m.dfltRange,f.findExactDates=m.findExactDates,f.MIN_MS=m.MIN_MS,f.MAX_MS=m.MAX_MS;var v=t(\"./search\");f.findBin=v.findBin,f.sorterAsc=v.sorterAsc,f.sorterDes=v.sorterDes,f.distinctVals=v.distinctVals,f.roundUp=v.roundUp,f.sort=v.sort,f.findIndexOfMin=v.findIndexOfMin,f.sortObjectKeys=t(\"./sort_object_keys\");var y=t(\"./stats\");f.aggNums=y.aggNums,f.len=y.len,f.mean=y.mean,f.median=y.median,f.midRange=y.midRange,f.variance=y.variance,f.stdev=y.stdev,f.interp=y.interp;var x=t(\"./matrix\");f.init2dArray=x.init2dArray,f.transposeRagged=x.transposeRagged,f.dot=x.dot,f.translationMatrix=x.translationMatrix,f.rotationMatrix=x.rotationMatrix,f.rotationXYMatrix=x.rotationXYMatrix,f.apply3DTransform=x.apply3DTransform,f.apply2DTransform=x.apply2DTransform,f.apply2DTransform2=x.apply2DTransform2,f.convertCssMatrix=x.convertCssMatrix,f.inverseTransformMatrix=x.inverseTransformMatrix;var b=t(\"./angles\");f.deg2rad=b.deg2rad,f.rad2deg=b.rad2deg,f.angleDelta=b.angleDelta,f.angleDist=b.angleDist,f.isFullCircle=b.isFullCircle,f.isAngleInsideSector=b.isAngleInsideSector,f.isPtInsideSector=b.isPtInsideSector,f.pathArc=b.pathArc,f.pathSector=b.pathSector,f.pathAnnulus=b.pathAnnulus;var _=t(\"./anchor_utils\");f.isLeftAnchor=_.isLeftAnchor,f.isCenterAnchor=_.isCenterAnchor,f.isRightAnchor=_.isRightAnchor,f.isTopAnchor=_.isTopAnchor,f.isMiddleAnchor=_.isMiddleAnchor,f.isBottomAnchor=_.isBottomAnchor;var w=t(\"./geometry2d\");f.segmentsIntersect=w.segmentsIntersect,f.segmentDistance=w.segmentDistance,f.getTextLocation=w.getTextLocation,f.clearLocationCache=w.clearLocationCache,f.getVisibleSegment=w.getVisibleSegment,f.findPointOnPath=w.findPointOnPath;var T=t(\"./extend\");f.extendFlat=T.extendFlat,f.extendDeep=T.extendDeep,f.extendDeepAll=T.extendDeepAll,f.extendDeepNoArrays=T.extendDeepNoArrays;var k=t(\"./loggers\");f.log=k.log,f.warn=k.warn,f.error=k.error;var A=t(\"./regex\");f.counterRegex=A.counter;var M=t(\"./throttle\");f.throttle=M.throttle,f.throttleDone=M.done,f.clearThrottle=M.clear;var S=t(\"./dom\");function E(t){var e={};for(var r in t)for(var n=t[r],i=0;il||t=e)&&(o(t)&&t>=0&&t%1==0)},f.noop=t(\"./noop\"),f.identity=t(\"./identity\"),f.repeat=function(t,e){for(var r=new Array(e),n=0;nr?Math.max(r,Math.min(e,t)):Math.max(e,Math.min(r,t))},f.bBoxIntersect=function(t,e,r){return r=r||0,t.left<=e.right+r&&e.left<=t.right+r&&t.top<=e.bottom+r&&e.top<=t.bottom+r},f.simpleMap=function(t,e,r,n,i){for(var a=t.length,o=new Array(a),s=0;s=Math.pow(2,r)?i>10?(f.warn(\"randstr failed uniqueness\"),l):t(e,r,n,(i||0)+1):l},f.OptionControl=function(t,e){t||(t={}),e||(e=\"opt\");var r={optionList:[],_newoption:function(n){n[e]=t,r[n.name]=n,r.optionList.push(n)}};return r[\"_\"+e]=t,r},f.smooth=function(t,e){if((e=Math.round(e)||0)<2)return t;var r,n,i,a,o=t.length,s=2*o,l=2*e-1,c=new Array(l),u=new Array(o);for(r=0;r=s&&(i-=s*Math.floor(i/s)),i<0?i=-1-i:i>=o&&(i=s-1-i),a+=t[i]*c[n];u[r]=a}return u},f.syncOrAsync=function(t,e,r){var n;function i(){return f.syncOrAsync(t,e,r)}for(;t.length;)if((n=(0,t.splice(0,1)[0])(e))&&n.then)return n.then(i);return r&&r(e)},f.stripTrailingSlash=function(t){return\"/\"===t.substr(-1)?t.substr(0,t.length-1):t},f.noneOrAll=function(t,e,r){if(t){var n,i=!1,a=!0;for(n=0;n0?e:0}))},f.fillArray=function(t,e,r,n){if(n=n||f.identity,f.isArrayOrTypedArray(t))for(var i=0;i1?i+o[1]:\"\";if(a&&(o.length>1||s.length>4||r))for(;n.test(s);)s=s.replace(n,\"$1\"+a+\"$2\");return s+l},f.TEMPLATE_STRING_REGEX=/%{([^\\s%{}:]*)([:|\\|][^}]*)?}/g;var z=/^\\w*$/;f.templateString=function(t,e){var r={};return t.replace(f.TEMPLATE_STRING_REGEX,(function(t,n){var i;return z.test(n)?i=e[n]:(r[n]=r[n]||f.nestedProperty(e,n).get,i=r[n]()),f.isValidTextValue(i)?i:\"\"}))};var D={max:10,count:0,name:\"hovertemplate\"};f.hovertemplateString=function(){return B.apply(D,arguments)};var R={max:10,count:0,name:\"texttemplate\"};f.texttemplateString=function(){return B.apply(R,arguments)};var F=/^[:|\\|]/;function B(t,e,r){var n=this,a=arguments;e||(e={});var o={};return t.replace(f.TEMPLATE_STRING_REGEX,(function(t,s,l){var c,u,h,p=\"_xother\"===s||\"_yother\"===s,d=\"_xother_\"===s||\"_yother_\"===s,g=\"xother_\"===s||\"yother_\"===s,m=\"xother\"===s||\"yother\"===s||p||g||d,v=s;if((p||d)&&(v=v.substring(1)),(g||d)&&(v=v.substring(0,v.length-1)),m){if(void 0===(c=e[v]))return\"\"}else for(h=3;h=48&&o<=57,c=s>=48&&s<=57;if(l&&(n=10*n+o-48),c&&(i=10*i+s-48),!l||!c){if(n!==i)return n-i;if(o!==s)return o-s}}return i-n};var N=2e9;f.seedPseudoRandom=function(){N=2e9},f.pseudoRandom=function(){var t=N;return N=(69069*N+1)%4294967296,Math.abs(N-t)<429496729?f.pseudoRandom():N/4294967296},f.fillText=function(t,e,r){var n=Array.isArray(r)?function(t){r.push(t)}:function(t){r.text=t},i=f.extractOption(t,e,\"htx\",\"hovertext\");if(f.isValidTextValue(i))return n(i);var a=f.extractOption(t,e,\"tx\",\"text\");return f.isValidTextValue(a)?n(a):void 0},f.isValidTextValue=function(t){return t||0===t},f.formatPercent=function(t,e){e=e||0;for(var r=(Math.round(100*t*Math.pow(10,e))*Math.pow(.1,e)).toFixed(e)+\"%\",n=0;n1&&(c=1):c=0,f.strTranslate(i-c*(r+o),a-c*(n+s))+f.strScale(c)+(l?\"rotate(\"+l+(e?\"\":\" \"+r+\" \"+n)+\")\":\"\")},f.ensureUniformFontSize=function(t,e){var r=f.extendFlat({},e);return r.size=Math.max(e.size,t._fullLayout.uniformtext.minsize||0),r},f.join2=function(t,e,r){var n=t.length;return n>1?t.slice(0,-1).join(e)+r+t[n-1]:t.join(e)},f.bigFont=function(t){return Math.round(1.2*t)};var j=f.getFirefoxVersion(),U=null!==j&&j<86;f.getPositionFromD3Event=function(){return U?[n.event.layerX,n.event.layerY]:[n.event.offsetX,n.event.offsetY]}},{\"../constants/numerical\":479,\"./anchor_utils\":483,\"./angles\":484,\"./array\":485,\"./clean_number\":486,\"./clear_responsive\":488,\"./coerce\":489,\"./dates\":490,\"./dom\":491,\"./extend\":493,\"./filter_unique\":494,\"./filter_visible\":495,\"./geometry2d\":498,\"./identity\":501,\"./increment\":502,\"./is_plain_object\":504,\"./keyed_container\":505,\"./localize\":506,\"./loggers\":507,\"./make_trace_groups\":508,\"./matrix\":509,\"./mod\":510,\"./nested_property\":511,\"./noop\":512,\"./notifier\":513,\"./preserve_drawing_buffer\":517,\"./push_unique\":518,\"./regex\":520,\"./relative_attr\":521,\"./relink_private\":522,\"./search\":523,\"./sort_object_keys\":526,\"./stats\":527,\"./throttle\":530,\"./to_log_range\":531,\"@plotly/d3\":58,\"d3-format\":112,\"d3-time-format\":120,\"fast-isnumeric\":190}],504:[function(t,e,r){\"use strict\";e.exports=function(t){return window&&window.process&&window.process.versions?\"[object Object]\"===Object.prototype.toString.call(t):\"[object Object]\"===Object.prototype.toString.call(t)&&Object.getPrototypeOf(t).hasOwnProperty(\"hasOwnProperty\")}},{}],505:[function(t,e,r){\"use strict\";var n=t(\"./nested_property\"),i=/^\\w*$/;e.exports=function(t,e,r,a){var o,s,l;r=r||\"name\",a=a||\"value\";var c={};e&&e.length?(l=n(t,e),s=l.get()):s=t,e=e||\"\";var u={};if(s)for(o=0;o2)return c[e]=2|c[e],h.set(t,null);if(f){for(o=e;o1){var e=[\"LOG:\"];for(t=0;t1){var r=[];for(t=0;t\"),\"long\")}},a.warn=function(){var t;if(n.logging>0){var e=[\"WARN:\"];for(t=0;t0){var r=[];for(t=0;t\"),\"stick\")}},a.error=function(){var t;if(n.logging>0){var e=[\"ERROR:\"];for(t=0;t0){var r=[];for(t=0;t\"),\"stick\")}}},{\"../plot_api/plot_config\":541,\"./notifier\":513}],508:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\");e.exports=function(t,e,r){var i=t.selectAll(\"g.\"+r.replace(/\\s/g,\".\")).data(e,(function(t){return t[0].trace.uid}));i.exit().remove(),i.enter().append(\"g\").attr(\"class\",r),i.order();var a=t.classed(\"rangeplot\")?\"nodeRangePlot3\":\"node3\";return i.each((function(t){t[0][a]=n.select(this)})),i}},{\"@plotly/d3\":58}],509:[function(t,e,r){\"use strict\";var n=t(\"gl-mat4\");r.init2dArray=function(t,e){for(var r=new Array(t),n=0;ne/2?t-Math.round(t/e)*e:t}}},{}],511:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"./array\").isArrayOrTypedArray;function a(t,e){return function(){var r,n,o,s,l,c=t;for(s=0;s/g),l=0;la||c===i||cs)&&(!e||!l(t))}:function(t,e){var l=t[0],c=t[1];if(l===i||la||c===i||cs)return!1;var u,f,h,p,d,g=r.length,m=r[0][0],v=r[0][1],y=0;for(u=1;uMath.max(f,m)||c>Math.max(h,v)))if(cu||Math.abs(n(o,h))>i)return!0;return!1},a.filter=function(t,e){var r=[t[0]],n=0,i=0;function o(o){t.push(o);var s=r.length,l=n;r.splice(i+1);for(var c=l+1;c1&&o(t.pop());return{addPt:o,raw:t,filtered:r}}},{\"../constants/numerical\":479,\"./matrix\":509}],516:[function(t,e,r){(function(r){(function(){\"use strict\";var n=t(\"./show_no_webgl_msg\"),i=t(\"regl\");e.exports=function(t,e){var a=t._fullLayout,o=!0;return a._glcanvas.each((function(n){if(!n.regl&&(!n.pick||a._has(\"parcoords\"))){try{n.regl=i({canvas:this,attributes:{antialias:!n.pick,preserveDrawingBuffer:!0},pixelRatio:t._context.plotGlPixelRatio||r.devicePixelRatio,extensions:e||[]})}catch(t){o=!1}n.regl||(o=!1),o&&this.addEventListener(\"webglcontextlost\",(function(e){t&&t.emit&&t.emit(\"plotly_webglcontextlost\",{event:e,layer:n.key})}),!1)}})),o||n({container:a._glcontainer.node()}),o}}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"./show_no_webgl_msg\":525,regl:283}],517:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"is-mobile\");e.exports=function(t){var e;if(\"string\"!=typeof(e=t&&t.hasOwnProperty(\"userAgent\")?t.userAgent:function(){var t;\"undefined\"!=typeof navigator&&(t=navigator.userAgent);t&&t.headers&&\"string\"==typeof t.headers[\"user-agent\"]&&(t=t.headers[\"user-agent\"]);return t}()))return!0;var r=i({ua:{headers:{\"user-agent\":e}},tablet:!0,featureDetect:!1});if(!r)for(var a=e.split(\" \"),o=1;o-1;s--){var l=a[s];if(\"Version/\"===l.substr(0,8)){var c=l.substr(8).split(\".\")[0];if(n(c)&&(c=+c),c>=13)return!0}}}return r}},{\"fast-isnumeric\":190,\"is-mobile\":234}],518:[function(t,e,r){\"use strict\";e.exports=function(t,e){if(e instanceof RegExp){for(var r=e.toString(),n=0;ni.queueLength&&(t.undoQueue.queue.shift(),t.undoQueue.index--))},startSequence:function(t){t.undoQueue=t.undoQueue||{index:0,queue:[],sequence:!1},t.undoQueue.sequence=!0,t.undoQueue.beginSequence=!0},stopSequence:function(t){t.undoQueue=t.undoQueue||{index:0,queue:[],sequence:!1},t.undoQueue.sequence=!1,t.undoQueue.beginSequence=!1},undo:function(t){var e,r;if(!(void 0===t.undoQueue||isNaN(t.undoQueue.index)||t.undoQueue.index<=0)){for(t.undoQueue.index--,e=t.undoQueue.queue[t.undoQueue.index],t.undoQueue.inSequence=!0,r=0;r=t.undoQueue.queue.length)){for(e=t.undoQueue.queue[t.undoQueue.index],t.undoQueue.inSequence=!0,r=0;re}function u(t,e){return t>=e}r.findBin=function(t,e,r){if(n(e.start))return r?Math.ceil((t-e.start)/e.size-1e-9)-1:Math.floor((t-e.start)/e.size+1e-9);var a,o,f=0,h=e.length,p=0,d=h>1?(e[h-1]-e[0])/(h-1):1;for(o=d>=0?r?s:l:r?u:c,t+=1e-9*d*(r?-1:1)*(d>=0?1:-1);f90&&i.log(\"Long binary search...\"),f-1},r.sorterAsc=function(t,e){return t-e},r.sorterDes=function(t,e){return e-t},r.distinctVals=function(t){var e,n=t.slice();for(n.sort(r.sorterAsc),e=n.length-1;e>-1&&n[e]===o;e--);for(var i,a=n[e]-n[0]||1,s=a/(e||1)/1e4,l=[],c=0;c<=e;c++){var u=n[c],f=u-i;void 0===i?(l.push(u),i=u):f>s&&(a=Math.min(a,f),l.push(u),i=u)}return{vals:l,minDiff:a}},r.roundUp=function(t,e,r){for(var n,i=0,a=e.length-1,o=0,s=r?0:1,l=r?1:0,c=r?Math.ceil:Math.floor;i0&&(n=1),r&&n)return t.sort(e)}return n?t:t.reverse()},r.findIndexOfMin=function(t,e){e=e||a;for(var r,n=1/0,i=0;ia.length)&&(o=a.length),n(e)||(e=!1),i(a[0])){for(l=new Array(o),s=0;st.length-1)return t[t.length-1];var r=e%1;return r*t[Math.ceil(e)]+(1-r)*t[Math.floor(e)]}},{\"./array\":485,\"fast-isnumeric\":190}],528:[function(t,e,r){\"use strict\";var n=t(\"color-normalize\");e.exports=function(t){return t?n(t):[0,0,0,1]}},{\"color-normalize\":89}],529:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../lib\"),a=i.strTranslate,o=t(\"../constants/xmlns_namespaces\"),s=t(\"../constants/alignment\").LINE_SPACING,l=/([^$]*)([$]+[^$]*[$]+)([^$]*)/;r.convertToTspans=function(t,e,d){var A=t.text(),M=!t.attr(\"data-notex\")&&\"undefined\"!=typeof MathJax&&A.match(l),L=n.select(t.node().parentNode);if(!L.empty()){var C=t.attr(\"class\")?t.attr(\"class\").split(\" \")[0]:\"text\";return C+=\"-math\",L.selectAll(\"svg.\"+C).remove(),L.selectAll(\"g.\"+C+\"-group\").remove(),t.style(\"display\",null).attr({\"data-unformatted\":A,\"data-math\":\"N\"}),M?(e&&e._promises||[]).push(new Promise((function(e){t.style(\"display\",\"none\");var r=parseInt(t.node().style.fontSize,10),o={fontSize:r};!function(t,e,r){var a,o,s,l;MathJax.Hub.Queue((function(){return o=i.extendDeepAll({},MathJax.Hub.config),s=MathJax.Hub.processSectionDelay,void 0!==MathJax.Hub.processSectionDelay&&(MathJax.Hub.processSectionDelay=0),MathJax.Hub.Config({messageStyle:\"none\",tex2jax:{inlineMath:[[\"$\",\"$\"],[\"\\\\(\",\"\\\\)\"]]},displayAlign:\"left\"})}),(function(){if(\"SVG\"!==(a=MathJax.Hub.config.menuSettings.renderer))return MathJax.Hub.setRenderer(\"SVG\")}),(function(){var r=\"math-output-\"+i.randstr({},64);return l=n.select(\"body\").append(\"div\").attr({id:r}).style({visibility:\"hidden\",position:\"absolute\"}).style({\"font-size\":e.fontSize+\"px\"}).text(t.replace(c,\"\\\\lt \").replace(u,\"\\\\gt \")),MathJax.Hub.Typeset(l.node())}),(function(){var e=n.select(\"body\").select(\"#MathJax_SVG_glyphs\");if(l.select(\".MathJax_SVG\").empty()||!l.select(\"svg\").node())i.log(\"There was an error in the tex syntax.\",t),r();else{var o=l.select(\"svg\").node().getBoundingClientRect();r(l.select(\".MathJax_SVG\"),e,o)}if(l.remove(),\"SVG\"!==a)return MathJax.Hub.setRenderer(a)}),(function(){return void 0!==s&&(MathJax.Hub.processSectionDelay=s),MathJax.Hub.Config(o)}))}(M[2],o,(function(n,i,o){L.selectAll(\"svg.\"+C).remove(),L.selectAll(\"g.\"+C+\"-group\").remove();var s=n&&n.select(\"svg\");if(!s||!s.node())return P(),void e();var l=L.append(\"g\").classed(C+\"-group\",!0).attr({\"pointer-events\":\"none\",\"data-unformatted\":A,\"data-math\":\"Y\"});l.node().appendChild(s.node()),i&&i.node()&&s.node().insertBefore(i.node().cloneNode(!0),s.node().firstChild);var c=o.width,u=o.height;s.attr({class:C,height:u,preserveAspectRatio:\"xMinYMin meet\"}).style({overflow:\"visible\",\"pointer-events\":\"none\"});var f=t.node().style.fill||\"black\",h=s.select(\"g\");h.attr({fill:f,stroke:f});var p=h.node().getBoundingClientRect(),g=p.width,m=p.height;(g>c||m>u)&&(s.style(\"overflow\",\"hidden\"),g=(p=s.node().getBoundingClientRect()).width,m=p.height);var v=+t.attr(\"x\"),y=+t.attr(\"y\"),x=-(r||t.node().getBoundingClientRect().height)/4;if(\"y\"===C[0])l.attr({transform:\"rotate(\"+[-90,v,y]+\")\"+a(-g/2,x-m/2)});else if(\"l\"===C[0])y=x-m/2;else if(\"a\"===C[0]&&0!==C.indexOf(\"atitle\"))v=0,y=x;else{var b=t.attr(\"text-anchor\");v-=g*(\"middle\"===b?.5:\"end\"===b?1:0),y=y+x-m/2}s.attr({x:v,y:y}),d&&d.call(t,l),e(l)}))}))):P(),t}function P(){L.empty()||(C=t.attr(\"class\")+\"-math\",L.select(\"svg.\"+C).remove()),t.text(\"\").style(\"white-space\",\"pre\"),function(t,e){e=e.replace(g,\" \");var r,a=!1,l=[],c=-1;function u(){c++;var e=document.createElementNS(o.svg,\"tspan\");n.select(e).attr({class:\"line\",dy:c*s+\"em\"}),t.appendChild(e),r=e;var i=l;if(l=[{node:e}],i.length>1)for(var a=1;a doesnt match end tag <\"+t+\">. Pretending it did match.\",e),r=l[l.length-1].node}else i.log(\"Ignoring unexpected end tag .\",e)}y.test(e)?u():(r=t,l=[{node:t}]);for(var L=e.split(m),C=0;C|>|>)/g;var f={sup:\"font-size:70%\",sub:\"font-size:70%\",b:\"font-weight:bold\",i:\"font-style:italic\",a:\"cursor:pointer\",span:\"\",em:\"font-style:italic;font-weight:bold\"},h={sub:\"0.3em\",sup:\"-0.6em\"},p={sub:\"-0.21em\",sup:\"0.42em\"},d=[\"http:\",\"https:\",\"mailto:\",\"\",void 0,\":\"],g=r.NEWLINES=/(\\r\\n?|\\n)/g,m=/(<[^<>]*>)/,v=/<(\\/?)([^ >]*)(\\s+(.*))?>/i,y=//i;r.BR_TAG_ALL=//gi;var x=/(^|[\\s\"'])style\\s*=\\s*(\"([^\"]*);?\"|'([^']*);?')/i,b=/(^|[\\s\"'])href\\s*=\\s*(\"([^\"]*)\"|'([^']*)')/i,_=/(^|[\\s\"'])target\\s*=\\s*(\"([^\"\\s]*)\"|'([^'\\s]*)')/i,w=/(^|[\\s\"'])popup\\s*=\\s*(\"([\\w=,]*)\"|'([\\w=,]*)')/i;function T(t,e){if(!t)return null;var r=t.match(e),n=r&&(r[3]||r[4]);return n&&S(n)}var k=/(^|;)\\s*color:/;r.plainText=function(t,e){for(var r=void 0!==(e=e||{}).len&&-1!==e.len?e.len:1/0,n=void 0!==e.allowedTags?e.allowedTags:[\"br\"],i=\"...\".length,a=t.split(m),o=[],s=\"\",l=0,c=0;ci?o.push(u.substr(0,d-i)+\"...\"):o.push(u.substr(0,d));break}s=\"\"}}return o.join(\"\")};var A={mu:\"\\u03bc\",amp:\"&\",lt:\"<\",gt:\">\",nbsp:\"\\xa0\",times:\"\\xd7\",plusmn:\"\\xb1\",deg:\"\\xb0\"},M=/&(#\\d+|#x[\\da-fA-F]+|[a-z]+);/g;function S(t){return t.replace(M,(function(t,e){return(\"#\"===e.charAt(0)?function(t){if(t>1114111)return;var e=String.fromCodePoint;if(e)return e(t);var r=String.fromCharCode;return t<=65535?r(t):r(55232+(t>>10),t%1024+56320)}(\"x\"===e.charAt(1)?parseInt(e.substr(2),16):parseInt(e.substr(1),10)):A[e])||t}))}function E(t){var e=encodeURI(decodeURI(t)),r=document.createElement(\"a\"),n=document.createElement(\"a\");r.href=t,n.href=e;var i=r.protocol,a=n.protocol;return-1!==d.indexOf(i)&&-1!==d.indexOf(a)?e:\"\"}function L(t,e,r){var n,a,o,s=r.horizontalAlign,l=r.verticalAlign||\"top\",c=t.node().getBoundingClientRect(),u=e.node().getBoundingClientRect();return a=\"bottom\"===l?function(){return c.bottom-n.height}:\"middle\"===l?function(){return c.top+(c.height-n.height)/2}:function(){return c.top},o=\"right\"===s?function(){return c.right-n.width}:\"center\"===s?function(){return c.left+(c.width-n.width)/2}:function(){return c.left},function(){n=this.node().getBoundingClientRect();var t=o()-u.left,e=a()-u.top,s=r.gd||{};if(r.gd){s._fullLayout._calcInverseTransform(s);var l=i.apply3DTransform(s._fullLayout._invTransform)(t,e);t=l[0],e=l[1]}return this.style({top:e+\"px\",left:t+\"px\",\"z-index\":1e3}),this}}r.convertEntities=S,r.sanitizeHTML=function(t){t=t.replace(g,\" \");for(var e=document.createElement(\"p\"),r=e,i=[],a=t.split(m),o=0;oa.ts+e?l():a.timer=setTimeout((function(){l(),a.timer=null}),e)},r.done=function(t){var e=n[t];return e&&e.timer?new Promise((function(t){var r=e.onDone;e.onDone=function(){r&&r(),t(),e.onDone=null}})):Promise.resolve()},r.clear=function(t){if(t)i(n[t]),delete n[t];else for(var e in n)r.clear(e)}},{}],531:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\");e.exports=function(t,e){if(t>0)return Math.log(t)/Math.LN10;var r=Math.log(Math.min(e[0],e[1]))/Math.LN10;return n(r)||(r=Math.log(Math.max(e[0],e[1]))/Math.LN10-6),r}},{\"fast-isnumeric\":190}],532:[function(t,e,r){\"use strict\";var n=e.exports={},i=t(\"../plots/geo/constants\").locationmodeToLayer,a=t(\"topojson-client\").feature;n.getTopojsonName=function(t){return[t.scope.replace(/ /g,\"-\"),\"_\",t.resolution.toString(),\"m\"].join(\"\")},n.getTopojsonPath=function(t,e){return t+e+\".json\"},n.getTopojsonFeatures=function(t,e){var r=i[t.locationmode],n=e.objects[r];return a(e,n).features}},{\"../plots/geo/constants\":587,\"topojson-client\":315}],533:[function(t,e,r){\"use strict\";e.exports={moduleType:\"locale\",name:\"en-US\",dictionary:{\"Click to enter Colorscale title\":\"Click to enter Colorscale title\"},format:{date:\"%m/%d/%Y\"}}},{}],534:[function(t,e,r){\"use strict\";e.exports={moduleType:\"locale\",name:\"en\",dictionary:{\"Click to enter Colorscale title\":\"Click to enter Colourscale title\"},format:{days:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],shortDays:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],months:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],shortMonths:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],periods:[\"AM\",\"PM\"],dateTime:\"%a %b %e %X %Y\",date:\"%d/%m/%Y\",time:\"%H:%M:%S\",decimal:\".\",thousands:\",\",grouping:[3],currency:[\"$\",\"\"],year:\"%Y\",month:\"%b %Y\",dayMonth:\"%b %-d\",dayMonthYear:\"%b %-d, %Y\"}}},{}],535:[function(t,e,r){\"use strict\";var n=t(\"../registry\");e.exports=function(t){for(var e,r,i=n.layoutArrayContainers,a=n.layoutArrayRegexes,o=t.split(\"[\")[0],s=0;s0&&o.log(\"Clearing previous rejected promises from queue.\"),t._promises=[]},r.cleanLayout=function(t){var e,n;t||(t={}),t.xaxis1&&(t.xaxis||(t.xaxis=t.xaxis1),delete t.xaxis1),t.yaxis1&&(t.yaxis||(t.yaxis=t.yaxis1),delete t.yaxis1),t.scene1&&(t.scene||(t.scene=t.scene1),delete t.scene1);var a=(s.subplotsRegistry.cartesian||{}).attrRegex,l=(s.subplotsRegistry.polar||{}).attrRegex,f=(s.subplotsRegistry.ternary||{}).attrRegex,h=(s.subplotsRegistry.gl3d||{}).attrRegex,g=Object.keys(t);for(e=0;e3?(O.x=1.02,O.xanchor=\"left\"):O.x<-2&&(O.x=-.02,O.xanchor=\"right\"),O.y>3?(O.y=1.02,O.yanchor=\"bottom\"):O.y<-2&&(O.y=-.02,O.yanchor=\"top\")),d(t),\"rotate\"===t.dragmode&&(t.dragmode=\"orbit\"),c.clean(t),t.template&&t.template.layout&&r.cleanLayout(t.template.layout),t},r.cleanData=function(t){for(var e=0;e0)return t.substr(0,e)}r.hasParent=function(t,e){for(var r=b(e);r;){if(r in t)return!0;r=b(r)}return!1};var _=[\"x\",\"y\",\"z\"];r.clearAxisTypes=function(t,e,r){for(var n=0;n1&&a.warn(\"Full array edits are incompatible with other edits\",f);var y=r[\"\"][\"\"];if(c(y))e.set(null);else{if(!Array.isArray(y))return a.warn(\"Unrecognized full array edit value\",f,y),!0;e.set(y)}return!g&&(h(m,v),p(t),!0)}var x,b,_,w,T,k,A,M,S=Object.keys(r).map(Number).sort(o),E=e.get(),L=E||[],C=u(v,f).get(),P=[],I=-1,O=L.length;for(x=0;xL.length-(A?0:1))a.warn(\"index out of range\",f,_);else if(void 0!==k)T.length>1&&a.warn(\"Insertion & removal are incompatible with edits to the same index.\",f,_),c(k)?P.push(_):A?(\"add\"===k&&(k={}),L.splice(_,0,k),C&&C.splice(_,0,{})):a.warn(\"Unrecognized full object edit value\",f,_,k),-1===I&&(I=_);else for(b=0;b=0;x--)L.splice(P[x],1),C&&C.splice(P[x],1);if(L.length?E||e.set(L):e.set(null),g)return!1;if(h(m,v),d!==i){var z;if(-1===I)z=S;else{for(O=Math.max(L.length,O),z=[],x=0;x=I);x++)z.push(_);for(x=I;x=t.data.length||i<-t.data.length)throw new Error(r+\" must be valid indices for gd.data.\");if(e.indexOf(i,n+1)>-1||i>=0&&e.indexOf(-t.data.length+i)>-1||i<0&&e.indexOf(t.data.length+i)>-1)throw new Error(\"each index in \"+r+\" must be unique.\")}}function I(t,e,r){if(!Array.isArray(t.data))throw new Error(\"gd.data must be an array.\");if(void 0===e)throw new Error(\"currentIndices is a required argument.\");if(Array.isArray(e)||(e=[e]),P(t,e,\"currentIndices\"),void 0===r||Array.isArray(r)||(r=[r]),void 0!==r&&P(t,r,\"newIndices\"),void 0!==r&&e.length!==r.length)throw new Error(\"current and new indices must be of equal length.\")}function O(t,e,r,n,a){!function(t,e,r,n){var i=o.isPlainObject(n);if(!Array.isArray(t.data))throw new Error(\"gd.data must be an array\");if(!o.isPlainObject(e))throw new Error(\"update must be a key:value object\");if(void 0===r)throw new Error(\"indices must be an integer or array of integers\");for(var a in P(t,r,\"indices\"),e){if(!Array.isArray(e[a])||e[a].length!==r.length)throw new Error(\"attribute \"+a+\" must be an array of length equal to indices array length\");if(i&&(!(a in n)||!Array.isArray(n[a])||n[a].length!==e[a].length))throw new Error(\"when maxPoints is set as a key:value object it must contain a 1:1 correspondence with the keys and number of traces in the update object\")}}(t,e,r,n);for(var l=function(t,e,r,n){var a,l,c,u,f,h=o.isPlainObject(n),p=[];for(var d in Array.isArray(r)||(r=[r]),r=C(r,t.data.length-1),e)for(var g=0;g-1&&-1===r.indexOf(\"grouptitlefont\")?l(r,r.replace(\"titlefont\",\"title.font\")):r.indexOf(\"titleposition\")>-1?l(r,r.replace(\"titleposition\",\"title.position\")):r.indexOf(\"titleside\")>-1?l(r,r.replace(\"titleside\",\"title.side\")):r.indexOf(\"titleoffset\")>-1&&l(r,r.replace(\"titleoffset\",\"title.offset\")):l(r,r.replace(\"title\",\"title.text\"));function l(e,r){t[r]=t[e],delete t[e]}}function U(t,e,r){t=o.getGraphDiv(t),_.clearPromiseQueue(t);var n={};if(\"string\"==typeof e)n[e]=r;else{if(!o.isPlainObject(e))return o.warn(\"Relayout fail.\",e,r),Promise.reject();n=o.extendFlat({},e)}Object.keys(n).length&&(t.changed=!0);var i=W(t,n),a=i.flags;a.calc&&(t.calcdata=void 0);var s=[h.previousPromises];a.layoutReplot?s.push(w.layoutReplot):Object.keys(n).length&&(V(t,a,i)||h.supplyDefaults(t),a.legend&&s.push(w.doLegend),a.layoutstyle&&s.push(w.layoutStyles),a.axrange&&H(s,i.rangesAltered),a.ticks&&s.push(w.doTicksRelayout),a.modebar&&s.push(w.doModeBar),a.camera&&s.push(w.doCamera),a.colorbars&&s.push(w.doColorBars),s.push(M)),s.push(h.rehover,h.redrag),c.add(t,U,[t,i.undoit],U,[t,i.redoit]);var l=o.syncOrAsync(s,t);return l&&l.then||(l=Promise.resolve(t)),l.then((function(){return t.emit(\"plotly_relayout\",i.eventData),t}))}function V(t,e,r){var n=t._fullLayout;if(!e.axrange)return!1;for(var i in e)if(\"axrange\"!==i&&e[i])return!1;for(var a in r.rangesAltered){var o=p.id2name(a),s=t.layout[o],l=n[o];if(l.autorange=s.autorange,s.range&&(l.range=s.range.slice()),l.cleanRange(),l._matchGroup)for(var c in l._matchGroup)if(c!==a){var u=n[p.id2name(c)];u.autorange=l.autorange,u.range=l.range.slice(),u._input.range=l.range.slice()}}return!0}function H(t,e){var r=e?function(t){var r=[],n=!0;for(var i in e){var a=p.getFromId(t,i);if(r.push(i),-1!==(a.ticklabelposition||\"\").indexOf(\"inside\")&&a._anchorAxis&&r.push(a._anchorAxis._id),a._matchGroup)for(var o in a._matchGroup)e[o]||r.push(o);a.automargin&&(n=!1)}return p.draw(t,r,{skipTitle:n})}:function(t){return p.draw(t,\"redraw\")};t.push(y,w.doAutoRangeAndConstraints,r,w.drawData,w.finalDraw)}var q=/^[xyz]axis[0-9]*\\.range(\\[[0|1]\\])?$/,G=/^[xyz]axis[0-9]*\\.autorange$/,Y=/^[xyz]axis[0-9]*\\.domain(\\[[0|1]\\])?$/;function W(t,e){var r,n,i,a=t.layout,l=t._fullLayout,c=l._guiEditing,h=F(l._preGUI,c),d=Object.keys(e),g=p.list(t),m=o.extendDeepAll({},e),v={};for(j(e),d=Object.keys(e),n=0;n0&&\"string\"!=typeof O.parts[D];)D--;var B=O.parts[D],N=O.parts[D-1]+\".\"+B,U=O.parts.slice(0,D).join(\".\"),V=s(t.layout,U).get(),H=s(l,U).get(),W=O.get();if(void 0!==z){M[I]=z,S[I]=\"reverse\"===B?z:R(W);var Z=f.getLayoutValObject(l,O.parts);if(Z&&Z.impliedEdits&&null!==z)for(var J in Z.impliedEdits)E(o.relativeAttr(I,J),Z.impliedEdits[J]);if(-1!==[\"width\",\"height\"].indexOf(I))if(z){E(\"autosize\",null);var K=\"height\"===I?\"width\":\"height\";E(K,l[K])}else l[I]=t._initialAutoSize[I];else if(\"autosize\"===I)E(\"width\",z?null:l.width),E(\"height\",z?null:l.height);else if(N.match(q))P(N),s(l,U+\"._inputRange\").set(null);else if(N.match(G)){P(N),s(l,U+\"._inputRange\").set(null);var Q=s(l,U).get();Q._inputDomain&&(Q._input.domain=Q._inputDomain.slice())}else N.match(Y)&&s(l,U+\"._inputDomain\").set(null);if(\"type\"===B){L=V;var $=\"linear\"===H.type&&\"log\"===z,tt=\"log\"===H.type&&\"linear\"===z;if($||tt){if(L&&L.range)if(H.autorange)$&&(L.range=L.range[1]>L.range[0]?[1,2]:[2,1]);else{var et=L.range[0],rt=L.range[1];$?(et<=0&&rt<=0&&E(U+\".autorange\",!0),et<=0?et=rt/1e6:rt<=0&&(rt=et/1e6),E(U+\".range[0]\",Math.log(et)/Math.LN10),E(U+\".range[1]\",Math.log(rt)/Math.LN10)):(E(U+\".range[0]\",Math.pow(10,et)),E(U+\".range[1]\",Math.pow(10,rt)))}else E(U+\".autorange\",!0);Array.isArray(l._subplots.polar)&&l._subplots.polar.length&&l[O.parts[0]]&&\"radialaxis\"===O.parts[1]&&delete l[O.parts[0]]._subplot.viewInitial[\"radialaxis.range\"],u.getComponentMethod(\"annotations\",\"convertCoords\")(t,H,z,E),u.getComponentMethod(\"images\",\"convertCoords\")(t,H,z,E)}else E(U+\".autorange\",!0),E(U+\".range\",null);s(l,U+\"._inputRange\").set(null)}else if(B.match(k)){var nt=s(l,I).get(),it=(z||{}).type;it&&\"-\"!==it||(it=\"linear\"),u.getComponentMethod(\"annotations\",\"convertCoords\")(t,nt,it,E),u.getComponentMethod(\"images\",\"convertCoords\")(t,nt,it,E)}var at=b.containerArrayMatch(I);if(at){r=at.array,n=at.index;var ot=at.property,st=Z||{editType:\"calc\"};\"\"!==n&&\"\"===ot&&(b.isAddVal(z)?S[I]=null:b.isRemoveVal(z)?S[I]=(s(a,r).get()||[])[n]:o.warn(\"unrecognized full object value\",e)),T.update(A,st),v[r]||(v[r]={});var lt=v[r][n];lt||(lt=v[r][n]={}),lt[ot]=z,delete e[I]}else\"reverse\"===B?(V.range?V.range.reverse():(E(U+\".autorange\",!0),V.range=[1,0]),H.autorange?A.calc=!0:A.plot=!0):(l._has(\"scatter-like\")&&l._has(\"regl\")&&\"dragmode\"===I&&(\"lasso\"===z||\"select\"===z)&&\"lasso\"!==W&&\"select\"!==W||l._has(\"gl2d\")?A.plot=!0:Z?T.update(A,Z):A.calc=!0,O.set(z))}}for(r in v){b.applyContainerArrayChanges(t,h(a,r),v[r],A,h)||(A.plot=!0)}for(var ct in C){var ut=(L=p.getFromId(t,ct))&&L._constraintGroup;if(ut)for(var ft in A.calc=!0,ut)C[ft]||(p.getFromId(t,ft)._constraintShrinkable=!0)}return(X(t)||e.height||e.width)&&(A.plot=!0),(A.plot||A.calc)&&(A.layoutReplot=!0),{flags:A,rangesAltered:C,undoit:S,redoit:M,eventData:m}}function X(t){var e=t._fullLayout,r=e.width,n=e.height;return t.layout.autosize&&h.plotAutoSize(t,t.layout,e),e.width!==r||e.height!==n}function Z(t,e,n,i){t=o.getGraphDiv(t),_.clearPromiseQueue(t),o.isPlainObject(e)||(e={}),o.isPlainObject(n)||(n={}),Object.keys(e).length&&(t.changed=!0),Object.keys(n).length&&(t.changed=!0);var a=_.coerceTraceIndices(t,i),s=N(t,o.extendFlat({},e),a),l=s.flags,u=W(t,o.extendFlat({},n)),f=u.flags;(l.calc||f.calc)&&(t.calcdata=void 0),l.clearAxisTypes&&_.clearAxisTypes(t,a,n);var p=[];f.layoutReplot?p.push(w.layoutReplot):l.fullReplot?p.push(r._doPlot):(p.push(h.previousPromises),V(t,f,u)||h.supplyDefaults(t),l.style&&p.push(w.doTraceStyle),(l.colorbars||f.colorbars)&&p.push(w.doColorBars),f.legend&&p.push(w.doLegend),f.layoutstyle&&p.push(w.layoutStyles),f.axrange&&H(p,u.rangesAltered),f.ticks&&p.push(w.doTicksRelayout),f.modebar&&p.push(w.doModeBar),f.camera&&p.push(w.doCamera),p.push(M)),p.push(h.rehover,h.redrag),c.add(t,Z,[t,s.undoit,u.undoit,s.traces],Z,[t,s.redoit,u.redoit,s.traces]);var d=o.syncOrAsync(p,t);return d&&d.then||(d=Promise.resolve(t)),d.then((function(){return t.emit(\"plotly_update\",{data:s.eventData,layout:u.eventData}),t}))}function J(t){return function(e){e._fullLayout._guiEditing=!0;var r=t.apply(null,arguments);return e._fullLayout._guiEditing=!1,r}}var K=[{pattern:/^hiddenlabels/,attr:\"legend.uirevision\"},{pattern:/^((x|y)axis\\d*)\\.((auto)?range|title\\.text)/},{pattern:/axis\\d*\\.showspikes$/,attr:\"modebar.uirevision\"},{pattern:/(hover|drag)mode$/,attr:\"modebar.uirevision\"},{pattern:/^(scene\\d*)\\.camera/},{pattern:/^(geo\\d*)\\.(projection|center|fitbounds)/},{pattern:/^(ternary\\d*\\.[abc]axis)\\.(min|title\\.text)$/},{pattern:/^(polar\\d*\\.radialaxis)\\.((auto)?range|angle|title\\.text)/},{pattern:/^(polar\\d*\\.angularaxis)\\.rotation/},{pattern:/^(mapbox\\d*)\\.(center|zoom|bearing|pitch)/},{pattern:/^legend\\.(x|y)$/,attr:\"editrevision\"},{pattern:/^(shapes|annotations)/,attr:\"editrevision\"},{pattern:/^title\\.text$/,attr:\"editrevision\"}],Q=[{pattern:/^selectedpoints$/,attr:\"selectionrevision\"},{pattern:/(^|value\\.)visible$/,attr:\"legend.uirevision\"},{pattern:/^dimensions\\[\\d+\\]\\.constraintrange/},{pattern:/^node\\.(x|y|groups)/},{pattern:/^level$/},{pattern:/(^|value\\.)name$/},{pattern:/colorbar\\.title\\.text$/},{pattern:/colorbar\\.(x|y)$/,attr:\"editrevision\"}];function $(t,e){for(var r=0;r1;)if(n.pop(),void 0!==(r=s(e,n.join(\".\")+\".uirevision\").get()))return r;return e.uirevision}function et(t,e){for(var r=0;r=i.length?i[0]:i[t]:i}function l(t){return Array.isArray(a)?t>=a.length?a[0]:a[t]:a}function c(t,e){var r=0;return function(){if(t&&++r===e)return t()}}return void 0===n._frameWaitingCnt&&(n._frameWaitingCnt=0),new Promise((function(a,u){function f(){n._currentFrame&&n._currentFrame.onComplete&&n._currentFrame.onComplete();var e=n._currentFrame=n._frameQueue.shift();if(e){var r=e.name?e.name.toString():null;t._fullLayout._currentFrame=r,n._lastFrameAt=Date.now(),n._timeToNext=e.frameOpts.duration,h.transition(t,e.frame.data,e.frame.layout,_.coerceTraceIndices(t,e.frame.traces),e.frameOpts,e.transitionOpts).then((function(){e.onComplete&&e.onComplete()})),t.emit(\"plotly_animatingframe\",{name:r,frame:e.frame,animation:{frame:e.frameOpts,transition:e.transitionOpts}})}else t.emit(\"plotly_animated\"),window.cancelAnimationFrame(n._animationRaf),n._animationRaf=null}function p(){t.emit(\"plotly_animating\"),n._lastFrameAt=-1/0,n._timeToNext=0,n._runningTransitions=0,n._currentFrame=null;var e=function(){n._animationRaf=window.requestAnimationFrame(e),Date.now()-n._lastFrameAt>n._timeToNext&&f()};e()}var d,g,m=0;function v(t){return Array.isArray(i)?m>=i.length?t.transitionOpts=i[m]:t.transitionOpts=i[0]:t.transitionOpts=i,m++,t}var y=[],x=null==e,b=Array.isArray(e);if(!x&&!b&&o.isPlainObject(e))y.push({type:\"object\",data:v(o.extendFlat({},e))});else if(x||-1!==[\"string\",\"number\"].indexOf(typeof e))for(d=0;d0&&kk)&&A.push(g);y=A}}y.length>0?function(e){if(0!==e.length){for(var i=0;i=0;n--)if(o.isPlainObject(e[n])){var g=e[n].name,m=(u[g]||d[g]||{}).name,v=e[n].name,y=u[m]||d[m];m&&v&&\"number\"==typeof v&&y&&A<5&&(A++,o.warn('addFrames: overwriting frame \"'+(u[m]||d[m]).name+'\" with a frame whose name of type \"number\" also equates to \"'+m+'\". This is valid but may potentially lead to unexpected behavior since all plotly.js frame names are stored internally as strings.'),5===A&&o.warn(\"addFrames: This API call has yielded too many of these warnings. For the rest of this call, further warnings about numeric frame names will be suppressed.\")),d[g]={name:g},p.push({frame:h.supplyFrameDefaults(e[n]),index:r&&void 0!==r[n]&&null!==r[n]?r[n]:f+n})}p.sort((function(t,e){return t.index>e.index?-1:t.index=0;n--){if(\"number\"==typeof(i=p[n].frame).name&&o.warn(\"Warning: addFrames accepts frames with numeric names, but the numbers areimplicitly cast to strings\"),!i.name)for(;u[i.name=\"frame \"+t._transitionData._counter++];);if(u[i.name]){for(a=0;a=0;r--)n=e[r],a.push({type:\"delete\",index:n}),s.unshift({type:\"insert\",index:n,value:i[n]});var l=h.modifyFrames,u=h.modifyFrames,f=[t,s],p=[t,a];return c&&c.add(t,l,f,u,p),h.modifyFrames(t,a)},r.addTraces=function t(e,n,i){e=o.getGraphDiv(e);var a,s,l=[],u=r.deleteTraces,f=t,h=[e,l],p=[e,n];for(function(t,e,r){var n,i;if(!Array.isArray(t.data))throw new Error(\"gd.data must be an array.\");if(void 0===e)throw new Error(\"traces must be defined.\");for(Array.isArray(e)||(e=[e]),n=0;n=0&&r=0&&r=a.length)return!1;if(2===t.dimensions){if(r++,e.length===r)return t;var o=e[r];if(!y(o))return!1;t=a[i][o]}else t=a[i]}else t=a}}return t}function y(t){return t===Math.round(t)&&t>=0}function x(){var t,e,r={};for(t in f(r,o),n.subplotsRegistry){if((e=n.subplotsRegistry[t]).layoutAttributes)if(Array.isArray(e.attr))for(var i=0;i=l.length)return!1;i=(r=(n.transformsRegistry[l[c].type]||{}).attributes)&&r[e[2]],s=3}else{var u=t._module;if(u||(u=(n.modules[t.type||a.type.dflt]||{})._module),!u)return!1;if(!(i=(r=u.attributes)&&r[o])){var f=u.basePlotModule;f&&f.attributes&&(i=f.attributes[o])}i||(i=a[o])}return v(i,e,s)},r.getLayoutValObject=function(t,e){return v(function(t,e){var r,i,a,s,l=t._basePlotModules;if(l){var c;for(r=0;r=i&&(r._input||{})._templateitemname;o&&(a=i);var s,l=e+\"[\"+a+\"]\";function c(){s={},o&&(s[l]={},s[l].templateitemname=o)}function u(t,e){o?n.nestedProperty(s[l],t).set(e):s[l+\".\"+t]=e}function f(){var t=s;return c(),t}return c(),{modifyBase:function(t,e){s[t]=e},modifyItem:u,getUpdateObj:f,applyUpdate:function(e,r){e&&u(e,r);var i=f();for(var a in i)n.nestedProperty(t,a).set(i[a])}}}},{\"../lib\":503,\"../plots/attributes\":550}],544:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../registry\"),a=t(\"../plots/plots\"),o=t(\"../lib\"),s=t(\"../lib/clear_gl_canvases\"),l=t(\"../components/color\"),c=t(\"../components/drawing\"),u=t(\"../components/titles\"),f=t(\"../components/modebar\"),h=t(\"../plots/cartesian/axes\"),p=t(\"../constants/alignment\"),d=t(\"../plots/cartesian/constraints\"),g=d.enforce,m=d.clean,v=t(\"../plots/cartesian/autorange\").doAutoRange;function y(t,e,r){for(var n=0;n=t[1]||i[1]<=t[0])&&(a[0]e[0]))return!0}return!1}function x(t){var e,i,s,u,d,g,m=t._fullLayout,v=m._size,x=v.p,_=h.list(t,\"\",!0);if(m._paperdiv.style({width:t._context.responsive&&m.autosize&&!t._context._hasZeroWidth&&!t.layout.width?\"100%\":m.width+\"px\",height:t._context.responsive&&m.autosize&&!t._context._hasZeroHeight&&!t.layout.height?\"100%\":m.height+\"px\"}).selectAll(\".main-svg\").call(c.setSize,m.width,m.height),t._context.setBackground(t,m.paper_bgcolor),r.drawMainTitle(t),f.manage(t),!m._has(\"cartesian\"))return a.previousPromises(t);function T(t,e,r){var n=t._lw/2;return\"x\"===t._id.charAt(0)?e?\"top\"===r?e._offset-x-n:e._offset+e._length+x+n:v.t+v.h*(1-(t.position||0))+n%1:e?\"right\"===r?e._offset+e._length+x+n:e._offset-x-n:v.l+v.w*(t.position||0)+n%1}for(e=0;e<_.length;e++){var k=(u=_[e])._anchorAxis;u._linepositions={},u._lw=c.crispRound(t,u.linewidth,1),u._mainLinePosition=T(u,k,u.side),u._mainMirrorPosition=u.mirror&&k?T(u,k,p.OPPOSITE_SIDE[u.side]):null}var A=[],M=[],S=[],E=1===l.opacity(m.paper_bgcolor)&&1===l.opacity(m.plot_bgcolor)&&m.paper_bgcolor===m.plot_bgcolor;for(i in m._plots)if((s=m._plots[i]).mainplot)s.bg&&s.bg.remove(),s.bg=void 0;else{var L=s.xaxis.domain,C=s.yaxis.domain,P=s.plotgroup;if(y(L,C,S)){var I=P.node(),O=s.bg=o.ensureSingle(P,\"rect\",\"bg\");I.insertBefore(O.node(),I.childNodes[0]),M.push(i)}else P.select(\"rect.bg\").remove(),S.push([L,C]),E||(A.push(i),M.push(i))}var z,D,R,F,B,N,j,U,V,H,q,G,Y,W=m._bgLayer.selectAll(\".bg\").data(A);for(W.enter().append(\"rect\").classed(\"bg\",!0),W.exit().remove(),W.each((function(t){m._plots[t].bg=n.select(this)})),e=0;eT?u.push({code:\"unused\",traceType:y,templateCount:w,dataCount:T}):T>w&&u.push({code:\"reused\",traceType:y,templateCount:w,dataCount:T})}}else u.push({code:\"data\"});if(function t(e,r){for(var n in e)if(\"_\"!==n.charAt(0)){var a=e[n],o=g(e,n,r);i(a)?(Array.isArray(e)&&!1===a._template&&a.templateitemname&&u.push({code:\"missing\",path:o,templateitemname:a.templateitemname}),t(a,o)):Array.isArray(a)&&m(a)&&t(a,o)}}({data:p,layout:h},\"\"),u.length)return u.map(v)}},{\"../lib\":503,\"../plots/attributes\":550,\"../plots/plots\":619,\"./plot_config\":541,\"./plot_schema\":542,\"./plot_template\":543}],546:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"./plot_api\"),a=t(\"../plots/plots\"),o=t(\"../lib\"),s=t(\"../snapshot/helpers\"),l=t(\"../snapshot/tosvg\"),c=t(\"../snapshot/svgtoimg\"),u=t(\"../version\").version,f={format:{valType:\"enumerated\",values:[\"png\",\"jpeg\",\"webp\",\"svg\",\"full-json\"],dflt:\"png\"},width:{valType:\"number\",min:1},height:{valType:\"number\",min:1},scale:{valType:\"number\",min:0,dflt:1},setBackground:{valType:\"any\",dflt:!1},imageDataOnly:{valType:\"boolean\",dflt:!1}};e.exports=function(t,e){var r,h,p,d;function g(t){return!(t in e)||o.validate(e[t],f[t])}if(e=e||{},o.isPlainObject(t)?(r=t.data||[],h=t.layout||{},p=t.config||{},d={}):(t=o.getGraphDiv(t),r=o.extendDeep([],t.data),h=o.extendDeep({},t.layout),p=t._context,d=t._fullLayout||{}),!g(\"width\")&&null!==e.width||!g(\"height\")&&null!==e.height)throw new Error(\"Height and width should be pixel values.\");if(!g(\"format\"))throw new Error(\"Export format is not \"+o.join2(f.format.values,\", \",\" or \")+\".\");var m={};function v(t,r){return o.coerce(e,m,f,t,r)}var y=v(\"format\"),x=v(\"width\"),b=v(\"height\"),_=v(\"scale\"),w=v(\"setBackground\"),T=v(\"imageDataOnly\"),k=document.createElement(\"div\");k.style.position=\"absolute\",k.style.left=\"-5000px\",document.body.appendChild(k);var A=o.extendFlat({},h);x?A.width=x:null===e.width&&n(d.width)&&(A.width=d.width),b?A.height=b:null===e.height&&n(d.height)&&(A.height=d.height);var M=o.extendFlat({},p,{_exportedPlot:!0,staticPlot:!0,setBackground:w}),S=s.getRedrawFunc(k);function E(){return new Promise((function(t){setTimeout(t,s.getDelay(k._fullLayout))}))}function L(){return new Promise((function(t,e){var r=l(k,y,_),n=k._fullLayout.width,f=k._fullLayout.height;function h(){i.purge(k),document.body.removeChild(k)}if(\"full-json\"===y){var p=a.graphJson(k,!1,\"keepdata\",\"object\",!0,!0);return p.version=u,p=JSON.stringify(p),h(),t(T?p:s.encodeJSON(p))}if(h(),\"svg\"===y)return t(T?r:s.encodeSVG(r));var d=document.createElement(\"canvas\");d.id=o.randstr(),c({format:y,width:n,height:f,scale:_,canvas:d,svg:r,promise:!0}).then(t).catch(e)}))}return new Promise((function(t,e){i.newPlot(k,r,A,M).then(S).then(E).then(L).then((function(e){t(function(t){return T?t.replace(s.IMAGE_URL_PREFIX,\"\"):t}(e))})).catch((function(t){e(t)}))}))}},{\"../lib\":503,\"../plots/plots\":619,\"../snapshot/helpers\":642,\"../snapshot/svgtoimg\":644,\"../snapshot/tosvg\":646,\"../version\":1119,\"./plot_api\":540,\"fast-isnumeric\":190}],547:[function(t,e,r){\"use strict\";var n=t(\"../lib\"),i=t(\"../plots/plots\"),a=t(\"./plot_schema\"),o=t(\"./plot_config\").dfltConfig,s=n.isPlainObject,l=Array.isArray,c=n.isArrayOrTypedArray;function u(t,e,r,i,a,o){o=o||[];for(var f=Object.keys(t),h=0;hx.length&&i.push(d(\"unused\",a,v.concat(x.length)));var A,M,S,E,L,C=x.length,P=Array.isArray(k);if(P&&(C=Math.min(C,k.length)),2===b.dimensions)for(M=0;Mx[M].length&&i.push(d(\"unused\",a,v.concat(M,x[M].length)));var I=x[M].length;for(A=0;A<(P?Math.min(I,k[M].length):I);A++)S=P?k[M][A]:k,E=y[M][A],L=x[M][A],n.validate(E,S)?L!==E&&L!==+E&&i.push(d(\"dynamic\",a,v.concat(M,A),E,L)):i.push(d(\"value\",a,v.concat(M,A),E))}else i.push(d(\"array\",a,v.concat(M),y[M]));else for(M=0;M1&&p.push(d(\"object\",\"layout\"))),i.supplyDefaults(g);for(var m=g._fullData,v=r.length,y=0;y0&&Math.round(f)===f))return{vals:i};c=f}for(var h=e.calendar,p=\"start\"===l,d=\"end\"===l,g=t[r+\"period0\"],m=a(g,h)||0,v=[],y=[],x=[],b=i.length,_=0;_A;)k=o(k,-c,h);for(;k<=A;)k=o(k,c,h);T=o(k,-c,h)}else{for(k=m+(w=Math.round((A-m)/u))*u;k>A;)k-=u;for(;k<=A;)k+=u;T=k-u}v[_]=p?T:d?k:(T+k)/2,y[_]=T,x[_]=k}return{vals:v,starts:y,ends:x}}},{\"../../constants/numerical\":479,\"../../lib\":503,\"fast-isnumeric\":190}],552:[function(t,e,r){\"use strict\";e.exports={xaxis:{valType:\"subplotid\",dflt:\"x\",editType:\"calc+clearAxisTypes\"},yaxis:{valType:\"subplotid\",dflt:\"y\",editType:\"calc+clearAxisTypes\"}}},{}],553:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"fast-isnumeric\"),a=t(\"../../lib\"),o=t(\"../../constants/numerical\").FP_SAFE,s=t(\"../../registry\"),l=t(\"../../components/drawing\"),c=t(\"./axis_ids\"),u=c.getFromId,f=c.isLinked;function h(t,e){var r,n,i=[],o=t._fullLayout,s=d(o,e,0),l=d(o,e,1),c=g(t,e),u=c.min,f=c.max;if(0===u.length||0===f.length)return a.simpleMap(e.range,e.r2l);var h=u[0].val,m=f[0].val;for(r=1;r0&&((T=E-s(x)-l(b))>L?k/T>C&&(_=x,w=b,C=k/T):k/E>C&&(_={val:x.val,nopad:1},w={val:b.val,nopad:1},C=k/E));if(h===m){var P=h-1,I=h+1;if(M)if(0===h)i=[0,1];else{var O=(h>0?f:u).reduce((function(t,e){return Math.max(t,l(e))}),0),z=h/(1-Math.min(.5,O/E));i=h>0?[0,z]:[z,0]}else i=S?[Math.max(0,P),Math.max(1,I)]:[P,I]}else M?(_.val>=0&&(_={val:0,nopad:1}),w.val<=0&&(w={val:0,nopad:1})):S&&(_.val-C*s(_)<0&&(_={val:0,nopad:1}),w.val<=0&&(w={val:1,nopad:1})),C=(w.val-_.val-p(e,x.val,b.val))/(E-s(_)-l(w)),i=[_.val-C*s(_),w.val+C*l(w)];return v&&i.reverse(),a.simpleMap(i,e.l2r||Number)}function p(t,e,r){var n=0;if(t.rangebreaks)for(var i=t.locateBreaks(e,r),a=0;a0?r.ppadplus:r.ppadminus)||r.ppad||0),S=A((t._m>0?r.ppadminus:r.ppadplus)||r.ppad||0),E=A(r.vpadplus||r.vpad),L=A(r.vpadminus||r.vpad);if(!T){if(h=1/0,p=-1/0,w)for(n=0;n0&&(h=a),a>p&&a-o&&(h=a),a>p&&a=I;n--)P(n);return{min:d,max:g,opts:r}},concatExtremes:g};function g(t,e,r){var n,i,a,o=e._id,s=t._fullData,l=t._fullLayout,c=[],f=[];function h(t,e){for(n=0;n=r&&(c.extrapad||!o)){s=!1;break}i(e,c.val)&&c.pad<=r&&(o||!c.extrapad)&&(t.splice(l,1),l--)}if(s){var u=a&&0===e;t.push({val:e,pad:u?0:r,extrapad:!u&&o})}}function x(t){return i(t)&&Math.abs(t)=e}},{\"../../components/drawing\":388,\"../../constants/numerical\":479,\"../../lib\":503,\"../../registry\":638,\"./axis_ids\":558,\"@plotly/d3\":58,\"fast-isnumeric\":190}],554:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"fast-isnumeric\"),a=t(\"../../plots/plots\"),o=t(\"../../registry\"),s=t(\"../../lib\"),l=s.strTranslate,c=t(\"../../lib/svg_text_utils\"),u=t(\"../../components/titles\"),f=t(\"../../components/color\"),h=t(\"../../components/drawing\"),p=t(\"./layout_attributes\"),d=t(\"./clean_ticks\"),g=t(\"../../constants/numerical\"),m=g.ONEMAXYEAR,v=g.ONEAVGYEAR,y=g.ONEMINYEAR,x=g.ONEMAXQUARTER,b=g.ONEAVGQUARTER,_=g.ONEMINQUARTER,w=g.ONEMAXMONTH,T=g.ONEAVGMONTH,k=g.ONEMINMONTH,A=g.ONEWEEK,M=g.ONEDAY,S=M/2,E=g.ONEHOUR,L=g.ONEMIN,C=g.ONESEC,P=g.MINUS_SIGN,I=g.BADNUM,O={K:\"zeroline\"},z={K:\"gridline\",L:\"path\"},D={K:\"tick\",L:\"path\"},R={K:\"tick\",L:\"text\"},F=t(\"../../constants/alignment\"),B=F.MID_SHIFT,N=F.CAP_SHIFT,j=F.LINE_SPACING,U=F.OPPOSITE_SIDE,V=e.exports={};V.setConvert=t(\"./set_convert\");var H=t(\"./axis_autotype\"),q=t(\"./axis_ids\"),G=q.idSort,Y=q.isLinked;V.id2name=q.id2name,V.name2id=q.name2id,V.cleanId=q.cleanId,V.list=q.list,V.listIds=q.listIds,V.getFromId=q.getFromId,V.getFromTrace=q.getFromTrace;var W=t(\"./autorange\");V.getAutoRange=W.getAutoRange,V.findExtremes=W.findExtremes;function X(t){var e=1e-4*(t[1]-t[0]);return[t[0]-e,t[1]+e]}V.coerceRef=function(t,e,r,n,i,a){var o=n.charAt(n.length-1),l=r._fullLayout._subplots[o+\"axis\"],c=n+\"ref\",u={};return i||(i=l[0]||(\"string\"==typeof a?a:a[0])),a||(a=i),l=l.concat(l.map((function(t){return t+\" domain\"}))),u[c]={valType:\"enumerated\",values:l.concat(a?\"string\"==typeof a?[a]:a:[]),dflt:i},s.coerce(t,e,u,c)},V.getRefType=function(t){return void 0===t?t:\"paper\"===t?\"paper\":\"pixel\"===t?\"pixel\":/( domain)$/.test(t)?\"domain\":\"range\"},V.coercePosition=function(t,e,r,n,i,a){var o,l;if(\"range\"!==V.getRefType(n))o=s.ensureNumber,l=r(i,a);else{var c=V.getFromId(e,n);l=r(i,a=c.fraction2r(a)),o=c.cleanPos}t[i]=o(l)},V.cleanPosition=function(t,e,r){return(\"paper\"===r||\"pixel\"===r?s.ensureNumber:V.getFromId(e,r).cleanPos)(t)},V.redrawComponents=function(t,e){e=e||V.listIds(t);var r=t._fullLayout;function n(n,i,a,s){for(var l=o.getComponentMethod(n,i),c={},u=0;u2e-6||((r-t._forceTick0)/t._minDtick%1+1.000001)%1>2e-6)&&(t._minDtick=0)):t._minDtick=0},V.saveRangeInitial=function(t,e){for(var r=V.list(t,\"\",!0),n=!1,i=0;i.3*h||u(n)||u(a))){var p=r.dtick/2;t+=t+p.8){var o=Number(r.substr(1));a.exactYears>.8&&o%12==0?t=V.tickIncrement(t,\"M6\",\"reverse\")+1.5*M:a.exactMonths>.8?t=V.tickIncrement(t,\"M1\",\"reverse\")+15.5*M:t-=S;var l=V.tickIncrement(t,r);if(l<=n)return l}return t}(y,t,v,c,a)),m=y,0;m<=u;)m=V.tickIncrement(m,v,!1,a);return{start:e.c2r(y,0,a),end:e.c2r(m,0,a),size:v,_dataSpan:u-c}},V.prepTicks=function(t,e){var r=s.simpleMap(t.range,t.r2l,void 0,void 0,e);if(t._dtickInit=t.dtick,t._tick0Init=t.tick0,\"auto\"===t.tickmode||!t.dtick){var n,a=t.nticks;a||(\"category\"===t.type||\"multicategory\"===t.type?(n=t.tickfont?s.bigFont(t.tickfont.size||12):15,a=t._length/n):(n=\"y\"===t._id.charAt(0)?40:80,a=s.constrain(t._length/n,4,9)+1),\"radialaxis\"===t._name&&(a*=2)),\"array\"===t.tickmode&&(a*=100),t._roughDTick=Math.abs(r[1]-r[0])/a,V.autoTicks(t,t._roughDTick),t._minDtick>0&&t.dtick<2*t._minDtick&&(t.dtick=t._minDtick,t.tick0=t.l2r(t._forceTick0))}\"period\"===t.ticklabelmode&&function(t){var e;function r(){return!(i(t.dtick)||\"M\"!==t.dtick.charAt(0))}var n=r(),a=V.getTickFormat(t);if(a){var o=t._dtickInit!==t.dtick;/%[fLQsSMX]/.test(a)||(/%[HI]/.test(a)?(e=E,o&&!n&&t.dticka&&f=o:d<=o;d=V.tickIncrement(d,t.dtick,l,t.calendar)){if(R++,t.rangebreaks&&!l){if(d=u)break}if(P.length>C||d===O)break;O=d;var F=!1;h&&d!==(0|d)&&(F=!0);var B={minor:F,value:d};L>1&&R%L&&(B.skipLabel=!0),P.push(B)}if(p&&function(t,e,r){for(var n=0;n0?(a=n-1,o=n):(a=n,o=n);var s,l=t[a].value,c=t[o].value,u=Math.abs(c-l),f=r||u,h=0;f>=y?h=u>=y&&u<=m?u:v:r===b&&f>=_?h=u>=_&&u<=x?u:b:f>=k?h=u>=k&&u<=w?u:T:r===A&&f>=A?h=A:f>=M?h=M:r===S&&f>=S?h=S:r===E&&f>=E&&(h=E),h>=u&&(h=u,s=!0);var p=i+h;if(e.rangebreaks&&h>0){for(var d=0,g=0;g<84;g++){var L=(g+.5)/84;e.maskBreaks(i*(1-L)+L*p)!==I&&d++}(h*=d/84)||(t[n].drop=!0),s&&u>A&&(h=u)}(h>0||0===n)&&(t[n].periodX=i+h/2)}}(P,t,t._definedDelta),t.rangebreaks){var N=\"y\"===t._id.charAt(0),j=1;\"auto\"===t.tickmode&&(j=t.tickfont?t.tickfont.size:12);var U=NaN;for(z=P.length-1;z>-1;z--)if(P[z].drop)P.splice(z,1);else{P[z].value=Mt(P[z].value,t);var H=t.c2p(P[z].value);(N?U>H-j:Uu||Gu&&(q.periodX=u),G10||\"01-01\"!==n.substr(5)?t._tickround=\"d\":t._tickround=+e.substr(1)%12==0?\"y\":\"m\";else if(e>=M&&a<=10||e>=15*M)t._tickround=\"d\";else if(e>=L&&a<=16||e>=E)t._tickround=\"M\";else if(e>=C&&a<=19||e>=L)t._tickround=\"S\";else{var o=t.l2r(r+e).replace(/^-/,\"\").length;t._tickround=Math.max(a,o)-20,t._tickround<0&&(t._tickround=4)}}else if(i(e)||\"L\"===e.charAt(0)){var s=t.range.map(t.r2d||Number);i(e)||(e=Number(e.substr(1))),t._tickround=2-Math.floor(Math.log(e)/Math.LN10+.01);var l=Math.max(Math.abs(s[0]),Math.abs(s[1])),c=Math.floor(Math.log(l)/Math.LN10+.01),u=void 0===t.minexponent?3:t.minexponent;Math.abs(c)>u&&(ut(t.exponentformat)&&!ft(c)?t._tickexponent=3*Math.round((c-1)/3):t._tickexponent=c)}else t._tickround=null}function lt(t,e,r){var n=t.tickfont||{};return{x:e,dx:0,dy:0,text:r||\"\",fontSize:n.size,font:n.family,fontColor:n.color}}V.autoTicks=function(t,e){var r;function n(t){return Math.pow(t,Math.floor(Math.log(e)/Math.LN10))}if(\"date\"===t.type){t.tick0=s.dateTick0(t.calendar,0);var a=2*e;if(a>v)e/=v,r=n(10),t.dtick=\"M\"+12*ot(e,r,$);else if(a>T)e/=T,t.dtick=\"M\"+ot(e,1,tt);else if(a>M){t.dtick=ot(e,M,t._hasDayOfWeekBreaks?[1,2,7,14]:rt);var o=V.getTickFormat(t),l=\"period\"===t.ticklabelmode;l&&(t._rawTick0=t.tick0),/%[uVW]/.test(o)?t.tick0=s.dateTick0(t.calendar,2):t.tick0=s.dateTick0(t.calendar,1),l&&(t._dowTick0=t.tick0)}else a>E?t.dtick=ot(e,E,tt):a>L?t.dtick=ot(e,L,et):a>C?t.dtick=ot(e,C,et):(r=n(10),t.dtick=ot(e,r,$))}else if(\"log\"===t.type){t.tick0=0;var c=s.simpleMap(t.range,t.r2l);if(e>.7)t.dtick=Math.ceil(e);else if(Math.abs(c[1]-c[0])<1){var u=1.5*Math.abs((c[1]-c[0])/e);e=Math.abs(Math.pow(10,c[1])-Math.pow(10,c[0]))/u,r=n(10),t.dtick=\"L\"+ot(e,r,$)}else t.dtick=e>.3?\"D2\":\"D1\"}else\"category\"===t.type||\"multicategory\"===t.type?(t.tick0=0,t.dtick=Math.ceil(Math.max(e,1))):At(t)?(t.tick0=0,r=1,t.dtick=ot(e,r,at)):(t.tick0=0,r=n(10),t.dtick=ot(e,r,$));if(0===t.dtick&&(t.dtick=1),!i(t.dtick)&&\"string\"!=typeof t.dtick){var f=t.dtick;throw t.dtick=1,\"ax.dtick error: \"+String(f)}},V.tickIncrement=function(t,e,r,a){var o=r?-1:1;if(i(e))return s.increment(t,o*e);var l=e.charAt(0),c=o*Number(e.substr(1));if(\"M\"===l)return s.incrementMonth(t,c,a);if(\"L\"===l)return Math.log(Math.pow(10,t)+c)/Math.LN10;if(\"D\"===l){var u=\"D2\"===e?it:nt,f=t+.01*o,h=s.roundUp(s.mod(f,1),u,r);return Math.floor(f)+Math.log(n.round(Math.pow(10,h),1))/Math.LN10}throw\"unrecognized dtick \"+String(e)},V.tickFirst=function(t,e){var r=t.r2l||Number,a=s.simpleMap(t.range,r,void 0,void 0,e),o=a[1] \")}else t._prevDateHead=l,c+=\"
\"+l;e.text=c}(t,o,r,c):\"log\"===u?function(t,e,r,n,a){var o=t.dtick,l=e.x,c=t.tickformat,u=\"string\"==typeof o&&o.charAt(0);\"never\"===a&&(a=\"\");n&&\"L\"!==u&&(o=\"L3\",u=\"L\");if(c||\"L\"===u)e.text=ht(Math.pow(10,l),t,a,n);else if(i(o)||\"D\"===u&&s.mod(l+.01,1)<.1){var f=Math.round(l),h=Math.abs(f),p=t.exponentformat;\"power\"===p||ut(p)&&ft(f)?(e.text=0===f?1:1===f?\"10\":\"10\"+(f>1?\"\":P)+h+\"\",e.fontSize*=1.25):(\"e\"===p||\"E\"===p)&&h>2?e.text=\"1\"+p+(f>0?\"+\":P)+h:(e.text=ht(Math.pow(10,l),t,\"\",\"fakehover\"),\"D1\"===o&&\"y\"===t._id.charAt(0)&&(e.dy-=e.fontSize/6))}else{if(\"D\"!==u)throw\"unrecognized dtick \"+String(o);e.text=String(Math.round(Math.pow(10,s.mod(l,1)))),e.fontSize*=.75}if(\"D1\"===t.dtick){var d=String(e.text).charAt(0);\"0\"!==d&&\"1\"!==d||(\"y\"===t._id.charAt(0)?e.dx-=e.fontSize/4:(e.dy+=e.fontSize/2,e.dx+=(t.range[1]>t.range[0]?1:-1)*e.fontSize*(l<0?.5:.25)))}}(t,o,0,c,g):\"category\"===u?function(t,e){var r=t._categories[Math.round(e.x)];void 0===r&&(r=\"\");e.text=String(r)}(t,o):\"multicategory\"===u?function(t,e,r){var n=Math.round(e.x),i=t._categories[n]||[],a=void 0===i[1]?\"\":String(i[1]),o=void 0===i[0]?\"\":String(i[0]);r?e.text=o+\" - \"+a:(e.text=a,e.text2=o)}(t,o,r):At(t)?function(t,e,r,n,i){if(\"radians\"!==t.thetaunit||r)e.text=ht(e.x,t,i,n);else{var a=e.x/180;if(0===a)e.text=\"0\";else{var o=function(t){function e(t,e){return Math.abs(t-e)<=1e-6}var r=function(t){for(var r=1;!e(Math.round(t*r)/r,t);)r*=10;return r}(t),n=t*r,i=Math.abs(function t(r,n){return e(n,0)?r:t(n,r%n)}(n,r));return[Math.round(n/i),Math.round(r/i)]}(a);if(o[1]>=100)e.text=ht(s.deg2rad(e.x),t,i,n);else{var l=e.x<0;1===o[1]?1===o[0]?e.text=\"\\u03c0\":e.text=o[0]+\"\\u03c0\":e.text=[\"\",o[0],\"\",\"\\u2044\",\"\",o[1],\"\",\"\\u03c0\"].join(\"\"),l&&(e.text=P+e.text)}}}}(t,o,r,c,g):function(t,e,r,n,i){\"never\"===i?i=\"\":\"all\"===t.showexponent&&Math.abs(e.x/t.dtick)<1e-6&&(i=\"hide\");e.text=ht(e.x,t,i,n)}(t,o,0,c,g),n||(t.tickprefix&&!d(t.showtickprefix)&&(o.text=t.tickprefix+o.text),t.ticksuffix&&!d(t.showticksuffix)&&(o.text+=t.ticksuffix)),\"boundaries\"===t.tickson||t.showdividers){var m=function(e){var r=t.l2p(e);return r>=0&&r<=t._length?e:null};o.xbnd=[m(o.x-.5),m(o.x+t.dtick-.5)]}return o},V.hoverLabelText=function(t,e,r){r&&(t=s.extendFlat({},t,{hoverformat:r}));var n=Array.isArray(e)?e[0]:e,i=Array.isArray(e)?e[1]:void 0;if(void 0!==i&&i!==n)return V.hoverLabelText(t,n,r)+\" - \"+V.hoverLabelText(t,i,r);var a=\"log\"===t.type&&n<=0,o=V.tickText(t,t.c2l(a?-n:n),\"hover\").text;return a?0===n?\"0\":P+o:o};var ct=[\"f\",\"p\",\"n\",\"\\u03bc\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\"];function ut(t){return\"SI\"===t||\"B\"===t}function ft(t){return t>14||t<-15}function ht(t,e,r,n){var a=t<0,o=e._tickround,l=r||e.exponentformat||\"B\",c=e._tickexponent,u=V.getTickFormat(e),f=e.separatethousands;if(n){var h={exponentformat:l,minexponent:e.minexponent,dtick:\"none\"===e.showexponent?e.dtick:i(t)&&Math.abs(t)||1,range:\"none\"===e.showexponent?e.range.map(e.r2d):[0,t||1]};st(h),o=(Number(h._tickround)||0)+4,c=h._tickexponent,e.hoverformat&&(u=e.hoverformat)}if(u)return e._numFormat(u)(t).replace(/-/g,P);var p,d=Math.pow(10,-o)/2;if(\"none\"===l&&(c=0),(t=Math.abs(t))\"+p+\"\":\"B\"===l&&9===c?t+=\"B\":ut(l)&&(t+=ct[c/3+5]));return a?P+t:t}function pt(t,e){for(var r=[],n={},i=0;i1&&r=i.min&&t=0,a=u(t,e[1])<=0;return(r||i)&&(n||a)}if(t.tickformatstops&&t.tickformatstops.length>0)switch(t.type){case\"date\":case\"linear\":for(e=0;e=o(i)))){r=n;break}break;case\"log\":for(e=0;e0?r.bottom-f:0,h)))),e.automargin){n={x:0,y:0,r:0,l:0,t:0,b:0};var p=[0,1];if(\"x\"===d){if(\"b\"===l?n[l]=e._depth:(n[l]=e._depth=Math.max(r.width>0?f-r.top:0,h),p.reverse()),r.width>0){var m=r.right-(e._offset+e._length);m>0&&(n.xr=1,n.r=m);var v=e._offset-r.left;v>0&&(n.xl=0,n.l=v)}}else if(\"l\"===l?n[l]=e._depth=Math.max(r.height>0?f-r.left:0,h):(n[l]=e._depth=Math.max(r.height>0?r.right-f:0,h),p.reverse()),r.height>0){var y=r.bottom-(e._offset+e._length);y>0&&(n.yb=0,n.b=y);var x=e._offset-r.top;x>0&&(n.yt=1,n.t=x)}n[g]=\"free\"===e.anchor?e.position:e._anchorAxis.domain[p[0]],e.title.text!==c._dfltTitle[d]&&(n[l]+=mt(e)+(e.title.standoff||0)),e.mirror&&\"free\"!==e.anchor&&((i={x:0,y:0,r:0,l:0,t:0,b:0})[u]=e.linewidth,e.mirror&&!0!==e.mirror&&(i[u]+=h),!0===e.mirror||\"ticks\"===e.mirror?i[g]=e._anchorAxis.domain[p[1]]:\"all\"!==e.mirror&&\"allticks\"!==e.mirror||(i[g]=[e._counterDomainMin,e._counterDomainMax][p[1]]))}K&&(s=o.getComponentMethod(\"rangeslider\",\"autoMarginOpts\")(t,e)),a.autoMargin(t,xt(e),n),a.autoMargin(t,bt(e),i),a.autoMargin(t,_t(e),s)})),r.skipTitle||K&&\"bottom\"===e.side||Z.push((function(){return function(t,e){var r,n=t._fullLayout,i=e._id,a=i.charAt(0),o=e.title.font.size;if(e.title.hasOwnProperty(\"standoff\"))r=e._depth+e.title.standoff+mt(e);else{var s=St(e);if(\"multicategory\"===e.type)r=e._depth;else{var l=1.5*o;s&&(l=.5*o,\"outside\"===e.ticks&&(l+=e.ticklen)),r=10+l+(e.linewidth?e.linewidth-1:0)}s||(r+=\"x\"===a?\"top\"===e.side?o*(e.showticklabels?1:0):o*(e.showticklabels?1.5:.5):\"right\"===e.side?o*(e.showticklabels?1:.5):o*(e.showticklabels?.5:0))}var c,f,p,d,g=V.getPxPosition(t,e);\"x\"===a?(f=e._offset+e._length/2,p=\"top\"===e.side?g-r:g+r):(p=e._offset+e._length/2,f=\"right\"===e.side?g+r:g-r,c={rotate:\"-90\",offset:0});if(\"multicategory\"!==e.type){var m=e._selections[e._id+\"tick\"];if(d={selection:m,side:e.side},m&&m.node()&&m.node().parentNode){var v=h.getTranslate(m.node().parentNode);d.offsetLeft=v.x,d.offsetTop=v.y}e.title.hasOwnProperty(\"standoff\")&&(d.pad=0)}return u.draw(t,i+\"title\",{propContainer:e,propName:e._name+\".title.text\",placeholder:n._dfltTitle[a],avoid:d,transform:c,attributes:{x:f,y:p,\"text-anchor\":\"middle\"}})}(t,e)})),s.syncOrAsync(Z)}}function Q(t){var r=p+(t||\"tick\");return w[r]||(w[r]=function(t,e){var r,n,i,a;t._selections[e].size()?(r=1/0,n=-1/0,i=1/0,a=-1/0,t._selections[e].each((function(){var t=yt(this),e=h.bBox(t.node().parentNode);r=Math.min(r,e.top),n=Math.max(n,e.bottom),i=Math.min(i,e.left),a=Math.max(a,e.right)}))):(r=0,n=0,i=0,a=0);return{top:r,bottom:n,left:i,right:a,height:n-r,width:a-i}}(e,r)),w[r]}},V.getTickSigns=function(t){var e=t._id.charAt(0),r={x:\"top\",y:\"right\"}[e],n=t.side===r?1:-1,i=[-1,1,n,-n];return\"inside\"!==t.ticks==(\"x\"===e)&&(i=i.map((function(t){return-t}))),t.side&&i.push({l:-1,t:-1,r:1,b:1}[t.side.charAt(0)]),i},V.makeTransTickFn=function(t){return\"x\"===t._id.charAt(0)?function(e){return l(t._offset+t.l2p(e.x),0)}:function(e){return l(0,t._offset+t.l2p(e.x))}},V.makeTransTickLabelFn=function(t){var e=function(t){var e=t.ticklabelposition||\"\",r=function(t){return-1!==e.indexOf(t)},n=r(\"top\"),i=r(\"left\"),a=r(\"right\"),o=r(\"bottom\"),s=r(\"inside\"),l=o||i||n||a;if(!l&&!s)return[0,0];var c=t.side,u=l?(t.tickwidth||0)/2:0,f=3,h=t.tickfont?t.tickfont.size:12;(o||n)&&(u+=h*N,f+=(t.linewidth||0)/2);(i||a)&&(u+=(t.linewidth||0)/2,f+=3);s&&\"top\"===c&&(f-=h*(1-N));(i||n)&&(u=-u);\"bottom\"!==c&&\"right\"!==c||(f=-f);return[l?u:0,s?f:0]}(t),r=e[0],n=e[1];return\"x\"===t._id.charAt(0)?function(e){return l(r+t._offset+t.l2p(dt(e)),n)}:function(e){return l(n,r+t._offset+t.l2p(dt(e)))}},V.makeTickPath=function(t,e,r,n){n=void 0!==n?n:t.ticklen;var i=t._id.charAt(0),a=(t.linewidth||1)/2;return\"x\"===i?\"M0,\"+(e+a*r)+\"v\"+n*r:\"M\"+(e+a*r)+\",0h\"+n*r},V.makeLabelFns=function(t,e,r){var n=t.ticklabelposition||\"\",a=function(t){return-1!==n.indexOf(t)},o=a(\"top\"),l=a(\"left\"),c=a(\"right\"),u=a(\"bottom\")||l||o||c,f=a(\"inside\"),h=\"inside\"===n&&\"inside\"===t.ticks||!f&&\"outside\"===t.ticks&&\"boundaries\"!==t.tickson,p=0,d=0,g=h?t.ticklen:0;if(f?g*=-1:u&&(g=0),h&&(p+=g,r)){var m=s.deg2rad(r);p=g*Math.cos(m)+1,d=g*Math.sin(m)}t.showticklabels&&(h||t.showline)&&(p+=.2*t.tickfont.size);var v,y,x,b,_,w={labelStandoff:p+=(t.linewidth||1)/2*(f?-1:1),labelShift:d},T=0,k=t.side,A=t._id.charAt(0),M=t.tickangle;if(\"x\"===A)b=(_=!f&&\"bottom\"===k||f&&\"top\"===k)?1:-1,f&&(b*=-1),v=d*b,y=e+p*b,x=_?1:-.2,90===Math.abs(M)&&(f?x+=B:x=-90===M&&\"bottom\"===k?N:90===M&&\"top\"===k?B:.5,T=B/2*(M/90)),w.xFn=function(t){return t.dx+v+T*t.fontSize},w.yFn=function(t){return t.dy+y+t.fontSize*x},w.anchorFn=function(t,e){if(u){if(l)return\"end\";if(c)return\"start\"}return i(e)&&0!==e&&180!==e?e*b<0!==f?\"end\":\"start\":\"middle\"},w.heightFn=function(e,r,n){return r<-60||r>60?-.5*n:\"top\"===t.side!==f?-n:0};else if(\"y\"===A){if(b=(_=!f&&\"left\"===k||f&&\"right\"===k)?1:-1,f&&(b*=-1),v=p,y=d*b,x=0,f||90!==Math.abs(M)||(x=-90===M&&\"left\"===k||90===M&&\"right\"===k?N:.5),f){var S=i(M)?+M:0;if(0!==S){var E=s.deg2rad(S);T=Math.abs(Math.sin(E))*N*b,x=0}}w.xFn=function(t){return t.dx+e-(v+t.fontSize*x)*b+T*t.fontSize},w.yFn=function(t){return t.dy+y+t.fontSize*B},w.anchorFn=function(t,e){return i(e)&&90===Math.abs(e)?\"middle\":_?\"end\":\"start\"},w.heightFn=function(e,r,n){return\"right\"===t.side&&(r*=-1),r<-30?-n:r<30?-.5*n:0}}return w},V.drawTicks=function(t,e,r){r=r||{};var n=e._id+\"tick\",i=r.vals;\"period\"===e.ticklabelmode&&(i=i.slice()).shift();var a=r.layer.selectAll(\"path.\"+n).data(e.ticks?i:[],gt);a.exit().remove(),a.enter().append(\"path\").classed(n,1).classed(\"ticks\",1).classed(\"crisp\",!1!==r.crisp).call(f.stroke,e.tickcolor).style(\"stroke-width\",h.crispRound(t,e.tickwidth,1)+\"px\").attr(\"d\",r.path).style(\"display\",null),Et(e,[D]),a.attr(\"transform\",r.transFn)},V.drawGrid=function(t,e,r){r=r||{};var n=e._id+\"grid\",i=r.vals,a=r.counterAxis;if(!1===e.showgrid)i=[];else if(a&&V.shouldShowZeroLine(t,e,a))for(var o=\"array\"===e.tickmode,s=0;sp||a.leftp||a.top+(e.tickangle?0:t.fontSize/4)e[\"_visibleLabelMin_\"+r._id]?l.style(\"display\",\"none\"):\"tick\"!==t.K||i||l.style(\"display\",null)}))}))}))}))},x(v,m+1?m:g);var b=null;e._selections&&(e._selections[f]=v);var _=[function(){return y.length&&Promise.all(y)}];e.automargin&&a._redrawFromAutoMarginCount&&90===m?(b=90,_.push((function(){x(v,m)}))):_.push((function(){if(x(v,g),p.length&&\"x\"===u&&!i(g)&&(\"log\"!==e.type||\"D\"!==String(e.dtick).charAt(0))){b=0;var t,n=0,a=[];if(v.each((function(t){n=Math.max(n,t.fontSize);var r=e.l2p(t.x),i=yt(this),o=h.bBox(i.node());a.push({top:0,bottom:10,height:10,left:r-o.width/2,right:r+o.width/2+2,width:o.width+2})})),\"boundaries\"!==e.tickson&&!e.showdividers||r.secondary){var o=p.length,l=Math.abs((p[o-1].x-p[0].x)*e._m)/(o-1),c=e.ticklabelposition||\"\",f=function(t){return-1!==c.indexOf(t)},d=f(\"top\"),m=f(\"left\"),y=f(\"right\"),_=f(\"bottom\")||m||d||y?(e.tickwidth||0)+6:0,w=l<2.5*n||\"multicategory\"===e.type||\"realaxis\"===e._name;for(t=0;t1)for(n=1;n2*o}(i,e))return\"date\";var m=\"strict\"!==r.autotypenumbers;return function(t,e){for(var r=t.length,n=f(r),i=0,o=0,s={},u=0;u2*i}(i,m)?\"category\":function(t,e){for(var r=t.length,n=0;n=2){var l,c,u=\"\";if(2===o.length)for(l=0;l<2;l++)if(c=x(o[l])){u=g;break}var f=i(\"pattern\",u);if(f===g)for(l=0;l<2;l++)(c=x(o[l]))&&(e.bounds[l]=o[l]=c-1);if(f)for(l=0;l<2;l++)switch(c=o[l],f){case g:if(!n(c))return void(e.enabled=!1);if((c=+c)!==Math.floor(c)||c<0||c>=7)return void(e.enabled=!1);e.bounds[l]=o[l]=c;break;case m:if(!n(c))return void(e.enabled=!1);if((c=+c)<0||c>24)return void(e.enabled=!1);e.bounds[l]=o[l]=c}if(!1===r.autorange){var h=r.range;if(h[0]h[1])return void(e.enabled=!1)}else if(o[0]>h[0]&&o[1]n?1:-1:+(t.substr(1)||1)-+(e.substr(1)||1)},r.ref2id=function(t){return!!/^[xyz]/.test(t)&&t.split(\" \")[0]},r.isLinked=function(t,e){return a(e,t._axisMatchGroups)||a(e,t._axisConstraintGroups)}},{\"../../registry\":638,\"./constants\":561}],559:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,n){if(\"category\"===e.type){var i,a=t.categoryarray,o=Array.isArray(a)&&a.length>0;o&&(i=\"array\");var s,l=r(\"categoryorder\",i);\"array\"===l&&(s=r(\"categoryarray\")),o||\"array\"!==l||(l=e.categoryorder=\"trace\"),\"trace\"===l?e._initialCategories=[]:\"array\"===l?e._initialCategories=s.slice():(s=function(t,e){var r,n,i,a=e.dataAttr||t._id.charAt(0),o={};if(e.axData)r=e.axData;else for(r=[],n=0;nn?i.substr(n):a.substr(r))+o:i+a+t*e:o}function m(t,e){for(var r=e._size,n=r.h/r.w,i={},a=Object.keys(t),o=0;oc*x)||T)for(r=0;rO&&FP&&(P=F);h/=(P-C)/(2*I),C=l.l2r(C),P=l.l2r(P),l.range=l._input.range=S=0?Math.min(t,.9):1/(1/Math.max(t,-.3)+3.222))}function N(t,e,r,n,i){return t.append(\"path\").attr(\"class\",\"zoombox\").style({fill:e>.2?\"rgba(0,0,0,0)\":\"rgba(255,255,255,0)\",\"stroke-width\":0}).attr(\"transform\",c(r,n)).attr(\"d\",i+\"Z\")}function j(t,e,r){return t.append(\"path\").attr(\"class\",\"zoombox-corners\").style({fill:f.background,stroke:f.defaultLine,\"stroke-width\":1,opacity:0}).attr(\"transform\",c(e,r)).attr(\"d\",\"M0,0Z\")}function U(t,e,r,n,i,a){t.attr(\"d\",n+\"M\"+r.l+\",\"+r.t+\"v\"+r.h+\"h\"+r.w+\"v-\"+r.h+\"h-\"+r.w+\"Z\"),V(t,e,i,a)}function V(t,e,r,n){r||(t.transition().style(\"fill\",n>.2?\"rgba(0,0,0,0.4)\":\"rgba(255,255,255,0.3)\").duration(200),e.transition().style(\"opacity\",1).duration(200))}function H(t){n.select(t).selectAll(\".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners\").remove()}function q(t){I&&t.data&&t._context.showTips&&(i.notifier(i._(t,\"Double-click to zoom back out\"),\"long\"),I=!1)}function G(t){var e=Math.floor(Math.min(t.b-t.t,t.r-t.l,P)/2);return\"M\"+(t.l-3.5)+\",\"+(t.t-.5+e)+\"h3v\"+-e+\"h\"+e+\"v-3h-\"+(e+3)+\"ZM\"+(t.r+3.5)+\",\"+(t.t-.5+e)+\"h-3v\"+-e+\"h\"+-e+\"v-3h\"+(e+3)+\"ZM\"+(t.r+3.5)+\",\"+(t.b+.5-e)+\"h-3v\"+e+\"h\"+-e+\"v3h\"+(e+3)+\"ZM\"+(t.l-3.5)+\",\"+(t.b+.5-e)+\"h3v\"+e+\"h\"+e+\"v3h-\"+(e+3)+\"Z\"}function Y(t,e,r,n,a){for(var o,s,l,c,u=!1,f={},h={},p=(a||{}).xaHash,d=(a||{}).yaHash,g=0;g=0)i._fullLayout._deactivateShape(i);else{var o=i._fullLayout.clickmode;if(H(i),2!==t||vt||qt(),mt)o.indexOf(\"select\")>-1&&S(r,i,J,K,e.id,Pt),o.indexOf(\"event\")>-1&&p.click(i,r,e.id);else if(1===t&&vt){var s=g?O:I,c=\"s\"===g||\"w\"===v?0:1,f=s._name+\".range[\"+c+\"]\",h=function(t,e){var r,n=t.range[e],i=Math.abs(n-t.range[1-e]);return\"date\"===t.type?n:\"log\"===t.type?(r=Math.ceil(Math.max(0,-Math.log(i)/Math.LN10))+3,a(\".\"+r+\"g\")(Math.pow(10,n))):(r=Math.floor(Math.log(Math.abs(n))/Math.LN10)-Math.floor(Math.log(i)/Math.LN10)+4,a(\".\"+String(r)+\"g\")(n))}(s,c),d=\"left\",m=\"middle\";if(s.fixedrange)return;g?(m=\"n\"===g?\"top\":\"bottom\",\"right\"===s.side&&(d=\"right\")):\"e\"===v&&(d=\"right\"),i._context.showAxisRangeEntryBoxes&&n.select(bt).call(u.makeEditable,{gd:i,immediate:!0,background:i._fullLayout.paper_bgcolor,text:String(h),fill:s.tickfont?s.tickfont.color:\"#444\",horizontalAlign:d,verticalAlign:m}).on(\"edit\",(function(t){var e=s.d2r(t);void 0!==e&&l.call(\"_guiRelayout\",i,f,e)}))}}}function zt(e,r){if(t._transitioningWithDuration)return!1;var n=Math.max(0,Math.min(tt,pt*e+_t)),i=Math.max(0,Math.min(et,dt*r+wt)),a=Math.abs(n-_t),o=Math.abs(i-wt);function s(){St=\"\",Tt.r=Tt.l,Tt.t=Tt.b,Lt.attr(\"d\",\"M0,0Z\")}if(Tt.l=Math.min(_t,n),Tt.r=Math.max(_t,n),Tt.t=Math.min(wt,i),Tt.b=Math.max(wt,i),rt.isSubplotConstrained)a>P||o>P?(St=\"xy\",a/tt>o/et?(o=a*et/tt,wt>i?Tt.t=wt-o:Tt.b=wt+o):(a=o*tt/et,_t>n?Tt.l=_t-a:Tt.r=_t+a),Lt.attr(\"d\",G(Tt))):s();else if(nt.isSubplotConstrained)if(a>P||o>P){St=\"xy\";var l=Math.min(Tt.l/tt,(et-Tt.b)/et),c=Math.max(Tt.r/tt,(et-Tt.t)/et);Tt.l=l*tt,Tt.r=c*tt,Tt.b=(1-l)*et,Tt.t=(1-c)*et,Lt.attr(\"d\",G(Tt))}else s();else!at||o0){var u;if(nt.isSubplotConstrained||!it&&1===at.length){for(u=0;ug[1]-1/4096&&(e.domain=s),i.noneOrAll(t.domain,e.domain,s)}return r(\"layer\"),e}},{\"../../lib\":503,\"fast-isnumeric\":190}],573:[function(t,e,r){\"use strict\";var n=t(\"./show_dflt\");e.exports=function(t,e,r,i,a){a||(a={});var o=a.tickSuffixDflt,s=n(t);r(\"tickprefix\")&&r(\"showtickprefix\",s),r(\"ticksuffix\",o)&&r(\"showticksuffix\",s)}},{\"./show_dflt\":577}],574:[function(t,e,r){\"use strict\";var n=t(\"../../constants/alignment\").FROM_BL;e.exports=function(t,e,r){void 0===r&&(r=n[t.constraintoward||\"center\"]);var i=[t.r2l(t.range[0]),t.r2l(t.range[1])],a=i[0]+(i[1]-i[0])*r;t.range=t._input.range=[t.l2r(a+(i[0]-a)*e),t.l2r(a+(i[1]-a)*e)],t.setScale()}},{\"../../constants/alignment\":471}],575:[function(t,e,r){\"use strict\";var n=t(\"polybooljs\"),i=t(\"../../registry\"),a=t(\"../../components/drawing\").dashStyle,o=t(\"../../components/color\"),s=t(\"../../components/fx\"),l=t(\"../../components/fx/helpers\").makeEventData,c=t(\"../../components/dragelement/helpers\"),u=c.freeMode,f=c.rectMode,h=c.drawMode,p=c.openMode,d=c.selectMode,g=t(\"../../components/shapes/draw_newshape/display_outlines\"),m=t(\"../../components/shapes/draw_newshape/helpers\").handleEllipse,v=t(\"../../components/shapes/draw_newshape/newshapes\"),y=t(\"../../lib\"),x=t(\"../../lib/polygon\"),b=t(\"../../lib/throttle\"),_=t(\"./axis_ids\").getFromId,w=t(\"../../lib/clear_gl_canvases\"),T=t(\"../../plot_api/subroutines\").redrawReglTraces,k=t(\"./constants\"),A=k.MINSELECT,M=x.filter,S=x.tester,E=t(\"./handle_outline\").clearSelect,L=t(\"./helpers\"),C=L.p2r,P=L.axValue,I=L.getTransform;function O(t,e,r,n,i,a,o){var s,l,c,u,f,h,d,m,v,y=e._hoverdata,x=e._fullLayout.clickmode.indexOf(\"event\")>-1,b=[];if(function(t){return t&&Array.isArray(t)&&!0!==t[0].hoverOnBox}(y)){F(t,e,a);var _=function(t,e){var r,n,i=t[0],a=-1,o=[];for(n=0;n0?function(t,e){var r,n,i,a=[];for(i=0;i0&&a.push(r);if(1===a.length&&a[0]===e.searchInfo&&(n=e.searchInfo.cd[0].trace).selectedpoints.length===e.pointNumbers.length){for(i=0;i1)return!1;if((i+=r.selectedpoints.length)>1)return!1}return 1===i}(s)&&(h=j(_))){for(o&&o.remove(),v=0;v=0&&n._fullLayout._deactivateShape(n),h(e)){var a=n._fullLayout._zoomlayer.selectAll(\".select-outline-\"+r.id);if(a&&n._fullLayout._drawing){var o=v(a,t);o&&i.call(\"_guiRelayout\",n,{shapes:o}),n._fullLayout._drawing=!1}}r.selection={},r.selection.selectionDefs=t.selectionDefs=[],r.selection.mergedPolygons=t.mergedPolygons=[]}function N(t,e,r,n){var i,a,o,s=[],l=e.map((function(t){return t._id})),c=r.map((function(t){return t._id}));for(o=0;o0?n[0]:r;return!!e.selectedpoints&&e.selectedpoints.indexOf(i)>-1}function U(t,e,r){var n,a,o,s;for(n=0;n=0)L._fullLayout._deactivateShape(L);else if(!_){var r=z.clickmode;b.done(gt).then((function(){if(b.clear(gt),2===t){for(ft.remove(),$=0;$-1&&O(e,L,i.xaxes,i.yaxes,i.subplot,i,ft),\"event\"===r&&L.emit(\"plotly_selected\",void 0);s.click(L,e)})).catch(y.error)}},i.doneFn=function(){dt.remove(),b.done(gt).then((function(){b.clear(gt),i.gd.emit(\"plotly_selected\",et),Q&&i.selectionDefs&&(Q.subtract=ut,i.selectionDefs.push(Q),i.mergedPolygons.length=0,[].push.apply(i.mergedPolygons,K)),i.doneFnCompleted&&i.doneFnCompleted(mt)})).catch(y.error),_&&B(i)}},clearSelect:E,clearSelectionsCache:B,selectOnClick:O}},{\"../../components/color\":366,\"../../components/dragelement/helpers\":384,\"../../components/drawing\":388,\"../../components/fx\":406,\"../../components/fx/helpers\":402,\"../../components/shapes/draw_newshape/display_outlines\":454,\"../../components/shapes/draw_newshape/helpers\":455,\"../../components/shapes/draw_newshape/newshapes\":456,\"../../lib\":503,\"../../lib/clear_gl_canvases\":487,\"../../lib/polygon\":515,\"../../lib/throttle\":530,\"../../plot_api/subroutines\":544,\"../../registry\":638,\"./axis_ids\":558,\"./constants\":561,\"./handle_outline\":565,\"./helpers\":566,polybooljs:254}],576:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"d3-time-format\").utcFormat,a=t(\"../../lib\"),o=a.numberFormat,s=t(\"fast-isnumeric\"),l=a.cleanNumber,c=a.ms2DateTime,u=a.dateTime2ms,f=a.ensureNumber,h=a.isArrayOrTypedArray,p=t(\"../../constants/numerical\"),d=p.FP_SAFE,g=p.BADNUM,m=p.LOG_CLIP,v=p.ONEWEEK,y=p.ONEDAY,x=p.ONEHOUR,b=p.ONEMIN,_=p.ONESEC,w=t(\"./axis_ids\"),T=t(\"./constants\"),k=T.HOUR_PATTERN,A=T.WEEKDAY_PATTERN;function M(t){return Math.pow(10,t)}function S(t){return null!=t}e.exports=function(t,e){e=e||{};var r=t._id||\"x\",p=r.charAt(0);function E(e,r){if(e>0)return Math.log(e)/Math.LN10;if(e<=0&&r&&t.range&&2===t.range.length){var n=t.range[0],i=t.range[1];return.5*(n+i-2*m*Math.abs(n-i))}return g}function L(e,r,n,i){if((i||{}).msUTC&&s(e))return+e;var o=u(e,n||t.calendar);if(o===g){if(!s(e))return g;e=+e;var l=Math.floor(10*a.mod(e+.05,1)),c=Math.round(e-l/10);o=u(new Date(c))+l/10}return o}function C(e,r,n){return c(e,r,n||t.calendar)}function P(e){return t._categories[Math.round(e)]}function I(e){if(S(e)){if(void 0===t._categoriesMap&&(t._categoriesMap={}),void 0!==t._categoriesMap[e])return t._categoriesMap[e];t._categories.push(\"number\"==typeof e?String(e):e);var r=t._categories.length-1;return t._categoriesMap[e]=r,r}return g}function O(e){if(t._categoriesMap)return t._categoriesMap[e]}function z(t){var e=O(t);return void 0!==e?e:s(t)?+t:void 0}function D(t){return s(t)?+t:O(t)}function R(t,e,r){return n.round(r+e*t,2)}function F(t,e,r){return(t-r)/e}var B=function(e){return s(e)?R(e,t._m,t._b):g},N=function(e){return F(e,t._m,t._b)};if(t.rangebreaks){var j=\"y\"===p;B=function(e){if(!s(e))return g;var r=t._rangebreaks.length;if(!r)return R(e,t._m,t._b);var n=j;t.range[0]>t.range[1]&&(n=!n);for(var i=n?-1:1,a=i*e,o=0,l=0;lu)){o=a<(c+u)/2?l:l+1;break}o=l+1}var f=t._B[o]||0;return isFinite(f)?R(e,t._m2,f):0},N=function(e){var r=t._rangebreaks.length;if(!r)return F(e,t._m,t._b);for(var n=0,i=0;it._rangebreaks[i].pmax&&(n=i+1);return F(e,t._m2,t._B[n])}}t.c2l=\"log\"===t.type?E:f,t.l2c=\"log\"===t.type?M:f,t.l2p=B,t.p2l=N,t.c2p=\"log\"===t.type?function(t,e){return B(E(t,e))}:B,t.p2c=\"log\"===t.type?function(t){return M(N(t))}:N,-1!==[\"linear\",\"-\"].indexOf(t.type)?(t.d2r=t.r2d=t.d2c=t.r2c=t.d2l=t.r2l=l,t.c2d=t.c2r=t.l2d=t.l2r=f,t.d2p=t.r2p=function(e){return t.l2p(l(e))},t.p2d=t.p2r=N,t.cleanPos=f):\"log\"===t.type?(t.d2r=t.d2l=function(t,e){return E(l(t),e)},t.r2d=t.r2c=function(t){return M(l(t))},t.d2c=t.r2l=l,t.c2d=t.l2r=f,t.c2r=E,t.l2d=M,t.d2p=function(e,r){return t.l2p(t.d2r(e,r))},t.p2d=function(t){return M(N(t))},t.r2p=function(e){return t.l2p(l(e))},t.p2r=N,t.cleanPos=f):\"date\"===t.type?(t.d2r=t.r2d=a.identity,t.d2c=t.r2c=t.d2l=t.r2l=L,t.c2d=t.c2r=t.l2d=t.l2r=C,t.d2p=t.r2p=function(e,r,n){return t.l2p(L(e,0,n))},t.p2d=t.p2r=function(t,e,r){return C(N(t),e,r)},t.cleanPos=function(e){return a.cleanDate(e,g,t.calendar)}):\"category\"===t.type?(t.d2c=t.d2l=I,t.r2d=t.c2d=t.l2d=P,t.d2r=t.d2l_noadd=z,t.r2c=function(e){var r=D(e);return void 0!==r?r:t.fraction2r(.5)},t.l2r=t.c2r=f,t.r2l=D,t.d2p=function(e){return t.l2p(t.r2c(e))},t.p2d=function(t){return P(N(t))},t.r2p=t.d2p,t.p2r=N,t.cleanPos=function(t){return\"string\"==typeof t&&\"\"!==t?t:f(t)}):\"multicategory\"===t.type&&(t.r2d=t.c2d=t.l2d=P,t.d2r=t.d2l_noadd=z,t.r2c=function(e){var r=z(e);return void 0!==r?r:t.fraction2r(.5)},t.r2c_just_indices=O,t.l2r=t.c2r=f,t.r2l=z,t.d2p=function(e){return t.l2p(t.r2c(e))},t.p2d=function(t){return P(N(t))},t.r2p=t.d2p,t.p2r=N,t.cleanPos=function(t){return Array.isArray(t)||\"string\"==typeof t&&\"\"!==t?t:f(t)},t.setupMultiCategory=function(n){var i,o,s=t._traceIndices,l=t._matchGroup;if(l&&0===t._categories.length)for(var c in l)if(c!==r){var u=e[w.id2name(c)];s=s.concat(u._traceIndices)}var f=[[0,{}],[0,{}]],d=[];for(i=0;id&&(o[n]=d),o[0]===o[1]){var c=Math.max(1,Math.abs(1e-6*o[0]));o[0]-=c,o[1]+=c}}else a.nestedProperty(t,e).set(i)},t.setScale=function(r){var n=e._size;if(t.overlaying){var i=w.getFromId({_fullLayout:e},t.overlaying);t.domain=i.domain}var a=r&&t._r?\"_r\":\"range\",o=t.calendar;t.cleanRange(a);var s,l,c=t.r2l(t[a][0],o),u=t.r2l(t[a][1],o),f=\"y\"===p;if((f?(t._offset=n.t+(1-t.domain[1])*n.h,t._length=n.h*(t.domain[1]-t.domain[0]),t._m=t._length/(c-u),t._b=-t._m*u):(t._offset=n.l+t.domain[0]*n.w,t._length=n.w*(t.domain[1]-t.domain[0]),t._m=t._length/(u-c),t._b=-t._m*c),t._rangebreaks=[],t._lBreaks=0,t._m2=0,t._B=[],t.rangebreaks)&&(t._rangebreaks=t.locateBreaks(Math.min(c,u),Math.max(c,u)),t._rangebreaks.length)){for(s=0;su&&(h=!h),h&&t._rangebreaks.reverse();var d=h?-1:1;for(t._m2=d*t._length/(Math.abs(u-c)-t._lBreaks),t._B.push(-t._m2*(f?u:c)),s=0;si&&(i+=7,oi&&(i+=24,o=n&&o=n&&e=s.min&&(ts.max&&(s.max=n),i=!1)}i&&c.push({min:t,max:n})}};for(n=0;nr.duration?(!function(){for(var r={},n=0;n rect\").call(o.setTranslate,0,0).call(o.setScale,1,1),t.plot.call(o.setTranslate,e._offset,r._offset).call(o.setScale,1,1);var n=t.plot.selectAll(\".scatterlayer .trace\");n.selectAll(\".point\").call(o.setPointGroupScale,1,1),n.selectAll(\".textpoint\").call(o.setTextPointsScale,1,1),n.call(o.hideOutsideRangePoints,t)}function m(e,r){var n=e.plotinfo,i=n.xaxis,l=n.yaxis,c=i._length,u=l._length,f=!!e.xr1,h=!!e.yr1,p=[];if(f){var d=a.simpleMap(e.xr0,i.r2l),g=a.simpleMap(e.xr1,i.r2l),m=d[1]-d[0],v=g[1]-g[0];p[0]=(d[0]*(1-r)+r*g[0]-d[0])/(d[1]-d[0])*c,p[2]=c*(1-r+r*v/m),i.range[0]=i.l2r(d[0]*(1-r)+r*g[0]),i.range[1]=i.l2r(d[1]*(1-r)+r*g[1])}else p[0]=0,p[2]=c;if(h){var y=a.simpleMap(e.yr0,l.r2l),x=a.simpleMap(e.yr1,l.r2l),b=y[1]-y[0],_=x[1]-x[0];p[1]=(y[1]*(1-r)+r*x[1]-y[1])/(y[0]-y[1])*u,p[3]=u*(1-r+r*_/b),l.range[0]=i.l2r(y[0]*(1-r)+r*x[0]),l.range[1]=l.l2r(y[1]*(1-r)+r*x[1])}else p[1]=0,p[3]=u;s.drawOne(t,i,{skipTitle:!0}),s.drawOne(t,l,{skipTitle:!0}),s.redrawComponents(t,[i._id,l._id]);var w=f?c/p[2]:1,T=h?u/p[3]:1,k=f?p[0]:0,A=h?p[1]:0,M=f?p[0]/p[2]*c:0,S=h?p[1]/p[3]*u:0,E=i._offset-M,L=l._offset-S;n.clipRect.call(o.setTranslate,k,A).call(o.setScale,1/w,1/T),n.plot.call(o.setTranslate,E,L).call(o.setScale,w,T),o.setPointGroupScale(n.zoomScalePts,1/w,1/T),o.setTextPointsScale(n.zoomScaleTxt,1/w,1/T)}s.redrawComponents(t)}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../registry\":638,\"./axes\":554,\"@plotly/d3\":58}],582:[function(t,e,r){\"use strict\";var n=t(\"../../registry\").traceIs,i=t(\"./axis_autotype\");function a(t){return{v:\"x\",h:\"y\"}[t.orientation||\"v\"]}function o(t,e){var r=a(t),i=n(t,\"box-violin\"),o=n(t._fullInput||{},\"candlestick\");return i&&!o&&e===r&&void 0===t[r]&&void 0===t[r+\"0\"]}e.exports=function(t,e,r,s){r(\"autotypenumbers\",s.autotypenumbersDflt),\"-\"===r(\"type\",(s.splomStash||{}).type)&&(!function(t,e){if(\"-\"!==t.type)return;var r,s=t._id,l=s.charAt(0);-1!==s.indexOf(\"scene\")&&(s=l);var c=function(t,e,r){for(var n=0;n0&&(i[\"_\"+r+\"axes\"]||{})[e])return i;if((i[r+\"axis\"]||r)===e){if(o(i,r))return i;if((i[r]||[]).length||i[r+\"0\"])return i}}}(e,s,l);if(!c)return;if(\"histogram\"===c.type&&l==={v:\"y\",h:\"x\"}[c.orientation||\"v\"])return void(t.type=\"linear\");var u=l+\"calendar\",f=c[u],h={noMultiCategory:!n(c,\"cartesian\")||n(c,\"noMultiCategory\")};\"box\"===c.type&&c._hasPreCompStats&&l==={h:\"x\",v:\"y\"}[c.orientation||\"v\"]&&(h.noMultiCategory=!0);if(h.autotypenumbers=t.autotypenumbers,o(c,l)){var p=a(c),d=[];for(r=0;r0?\".\":\"\")+a;i.isPlainObject(o)?l(o,e,s,n+1):e(s,a,o)}}))}r.manageCommandObserver=function(t,e,n,o){var s={},l=!0;e&&e._commandObserver&&(s=e._commandObserver),s.cache||(s.cache={}),s.lookupTable={};var c=r.hasSimpleAPICommandBindings(t,n,s.lookupTable);if(e&&e._commandObserver){if(c)return s;if(e._commandObserver.remove)return e._commandObserver.remove(),e._commandObserver=null,s}if(c){a(t,c,s.cache),s.check=function(){if(l){var e=a(t,c,s.cache);return e.changed&&o&&void 0!==s.lookupTable[e.value]&&(s.disable(),Promise.resolve(o({value:e.value,type:c.type,prop:c.prop,traces:c.traces,index:s.lookupTable[e.value]})).then(s.enable,s.enable)),e.changed}};for(var u=[\"plotly_relayout\",\"plotly_redraw\",\"plotly_restyle\",\"plotly_update\",\"plotly_animatingframe\",\"plotly_afterplot\"],f=0;f0&&i<0&&(i+=360);var s=(i-n)/4;return{type:\"Polygon\",coordinates:[[[n,a],[n,o],[n+s,o],[n+2*s,o],[n+3*s,o],[i,o],[i,a],[i-s,a],[i-2*s,a],[i-3*s,a],[n,a]]]}}e.exports=function(t){return new M(t)},S.plot=function(t,e,r){var n=this,i=e[this.id],a=[],o=!1;for(var s in w.layerNameToAdjective)if(\"frame\"!==s&&i[\"show\"+s]){o=!0;break}for(var l=0;l0&&a._module.calcGeoJSON(i,e)}if(!this.updateProjection(t,e)){this.viewInitial&&this.scope===r.scope||this.saveViewInitial(r),this.scope=r.scope,this.updateBaseLayers(e,r),this.updateDims(e,r),this.updateFx(e,r),d.generalUpdatePerTraceModule(this.graphDiv,this,t,r);var o=this.layers.frontplot.select(\".scatterlayer\");this.dataPoints.point=o.selectAll(\".point\"),this.dataPoints.text=o.selectAll(\"text\"),this.dataPaths.line=o.selectAll(\".js-line\");var s=this.layers.backplot.select(\".choroplethlayer\");this.dataPaths.choropleth=s.selectAll(\"path\"),this.render()}},S.updateProjection=function(t,e){var r=this.graphDiv,n=e[this.id],l=e._size,u=n.domain,f=n.projection,h=n.lonaxis,p=n.lataxis,d=h._ax,g=p._ax,v=this.projection=function(t){var e=t.projection,r=e.type,n=w.projNames[r];n=\"geo\"+c.titleCase(n);for(var l=(i[n]||s[n])(),u=t._isSatellite?180*Math.acos(1/e.distance)/Math.PI:t._isClipped?w.lonaxisSpan[r]/2:null,f=[\"center\",\"rotate\",\"parallels\",\"clipExtent\"],h=function(t){return t?l:[]},p=0;pu*Math.PI/180}return!1},l.getPath=function(){return a().projection(l)},l.getBounds=function(t){return l.getPath().bounds(t)},l.precision(w.precision),t._isSatellite&&l.tilt(e.tilt).distance(e.distance);u&&l.clipAngle(u-w.clipPad);return l}(n),y=[[l.l+l.w*u.x[0],l.t+l.h*(1-u.y[1])],[l.l+l.w*u.x[1],l.t+l.h*(1-u.y[0])]],x=n.center||{},b=f.rotation||{},_=h.range||[],T=p.range||[];if(n.fitbounds){d._length=y[1][0]-y[0][0],g._length=y[1][1]-y[0][1],d.range=m(r,d),g.range=m(r,g);var k=(d.range[0]+d.range[1])/2,A=(g.range[0]+g.range[1])/2;if(n._isScoped)x={lon:k,lat:A};else if(n._isClipped){x={lon:k,lat:A},b={lon:k,lat:A,roll:b.roll};var M=f.type,S=w.lonaxisSpan[M]/2||180,L=w.lataxisSpan[M]/2||90;_=[k-S,k+S],T=[A-L,A+L]}else x={lon:k,lat:A},b={lon:k,lat:b.lat,roll:b.roll}}v.center([x.lon-b.lon,x.lat-b.lat]).rotate([-b.lon,-b.lat,b.roll]).parallels(f.parallels);var C=E(_,T);v.fitExtent(y,C);var P=this.bounds=v.getBounds(C),I=this.fitScale=v.scale(),O=v.translate();if(n.fitbounds){var z=v.getBounds(E(d.range,g.range)),D=Math.min((P[1][0]-P[0][0])/(z[1][0]-z[0][0]),(P[1][1]-P[0][1])/(z[1][1]-z[0][1]));isFinite(D)?v.scale(D*I):c.warn(\"Something went wrong during\"+this.id+\"fitbounds computations.\")}else v.scale(f.scale*I);var R=this.midPt=[(P[0][0]+P[1][0])/2,(P[0][1]+P[1][1])/2];if(v.translate([O[0]+(R[0]-O[0]),O[1]+(R[1]-O[1])]).clipExtent(P),n._isAlbersUsa){var F=v([x.lon,x.lat]),B=v.translate();v.translate([B[0]-(F[0]-B[0]),B[1]-(F[1]-B[1])])}},S.updateBaseLayers=function(t,e){var r=this,i=r.topojson,a=r.layers,o=r.basePaths;function s(t){return\"lonaxis\"===t||\"lataxis\"===t}function l(t){return Boolean(w.lineLayers[t])}function c(t){return Boolean(w.fillLayers[t])}var u=(this.hasChoropleth?w.layersForChoropleth:w.layers).filter((function(t){return l(t)||c(t)?e[\"show\"+t]:!s(t)||e[t].showgrid})),p=r.framework.selectAll(\".layer\").data(u,String);p.exit().each((function(t){delete a[t],delete o[t],n.select(this).remove()})),p.enter().append(\"g\").attr(\"class\",(function(t){return\"layer \"+t})).each((function(t){var e=a[t]=n.select(this);\"bg\"===t?r.bgRect=e.append(\"rect\").style(\"pointer-events\",\"all\"):s(t)?o[t]=e.append(\"path\").style(\"fill\",\"none\"):\"backplot\"===t?e.append(\"g\").classed(\"choroplethlayer\",!0):\"frontplot\"===t?e.append(\"g\").classed(\"scatterlayer\",!0):l(t)?o[t]=e.append(\"path\").style(\"fill\",\"none\").style(\"stroke-miterlimit\",2):c(t)&&(o[t]=e.append(\"path\").style(\"stroke\",\"none\"))})),p.order(),p.each((function(r){var n=o[r],a=w.layerNameToAdjective[r];\"frame\"===r?n.datum(w.sphereSVG):l(r)||c(r)?n.datum(A(i,i.objects[r])):s(r)&&n.datum(function(t,e,r){var n,i,a,o=e[t],s=w.scopeDefaults[e.scope];\"lonaxis\"===t?(n=s.lonaxisRange,i=s.lataxisRange,a=function(t,e){return[t,e]}):\"lataxis\"===t&&(n=s.lataxisRange,i=s.lonaxisRange,a=function(t,e){return[e,t]});var l={type:\"linear\",range:[n[0],n[1]-1e-6],tick0:o.tick0,dtick:o.dtick};g.setConvert(l,r);var c=g.calcTicks(l);e.isScoped||\"lonaxis\"!==t||c.pop();for(var u=c.length,f=new Array(u),h=0;h-1&&b(n.event,i,[r.xaxis],[r.yaxis],r.id,f),s.indexOf(\"event\")>-1&&p.click(i,n.event))}))}function h(t){return r.projection.invert([t[0]+r.xaxis._offset,t[1]+r.yaxis._offset])}},S.makeFramework=function(){var t=this,e=t.graphDiv,r=e._fullLayout,i=\"clip\"+r._uid+t.id;t.clipDef=r._clips.append(\"clipPath\").attr(\"id\",i),t.clipRect=t.clipDef.append(\"rect\"),t.framework=n.select(t.container).append(\"g\").attr(\"class\",\"geo \"+t.id).call(h.setClipUrl,i,e),t.project=function(e){var r=t.projection(e);return r?[r[0]-t.xaxis._offset,r[1]-t.yaxis._offset]:[null,null]},t.xaxis={_id:\"x\",c2p:function(e){return t.project(e)[0]}},t.yaxis={_id:\"y\",c2p:function(e){return t.project(e)[1]}},t.mockAxis={type:\"linear\",showexponent:\"all\",exponentformat:\"B\"},g.setConvert(t.mockAxis,r)},S.saveViewInitial=function(t){var e,r=t.center||{},n=t.projection,i=n.rotation||{};this.viewInitial={fitbounds:t.fitbounds,\"projection.scale\":n.scale},e=t._isScoped?{\"center.lon\":r.lon,\"center.lat\":r.lat}:t._isClipped?{\"projection.rotation.lon\":i.lon,\"projection.rotation.lat\":i.lat}:{\"center.lon\":r.lon,\"center.lat\":r.lat,\"projection.rotation.lon\":i.lon},c.extendFlat(this.viewInitial,e)},S.render=function(){var t,e=this.projection,r=e.getPath();function n(t){var r=e(t.lonlat);return r?u(r[0],r[1]):null}function i(t){return e.isLonLatOverEdges(t.lonlat)?\"none\":null}for(t in this.basePaths)this.basePaths[t].attr(\"d\",r);for(t in this.dataPaths)this.dataPaths[t].attr(\"d\",(function(t){return r(t.geojson)}));for(t in this.dataPoints)this.dataPoints[t].attr(\"display\",i).attr(\"transform\",n)}},{\"../../components/color\":366,\"../../components/dragelement\":385,\"../../components/drawing\":388,\"../../components/fx\":406,\"../../lib\":503,\"../../lib/geo_location_utils\":496,\"../../lib/topojson_utils\":532,\"../../registry\":638,\"../cartesian/autorange\":553,\"../cartesian/axes\":554,\"../cartesian/select\":575,\"../plots\":619,\"./constants\":587,\"./zoom\":592,\"@plotly/d3\":58,\"d3-geo\":114,\"d3-geo-projection\":113,\"topojson-client\":315}],589:[function(t,e,r){\"use strict\";var n=t(\"../../plots/get_data\").getSubplotCalcData,i=t(\"../../lib\").counterRegex,a=t(\"./geo\"),o=\"geo\",s=i(o),l={};l.geo={valType:\"subplotid\",dflt:o,editType:\"calc\"},e.exports={attr:o,name:o,idRoot:o,idRegex:s,attrRegex:s,attributes:l,layoutAttributes:t(\"./layout_attributes\"),supplyLayoutDefaults:t(\"./layout_defaults\"),plot:function(t){for(var e=t._fullLayout,r=t.calcdata,i=e._subplots.geo,s=0;s0&&P<0&&(P+=360);var I,O,z,D=(C+P)/2;if(!p){var R=d?f.projRotate:[D,0,0];I=r(\"projection.rotation.lon\",R[0]),r(\"projection.rotation.lat\",R[1]),r(\"projection.rotation.roll\",R[2]),r(\"showcoastlines\",!d&&x)&&(r(\"coastlinecolor\"),r(\"coastlinewidth\")),r(\"showocean\",!!x&&void 0)&&r(\"oceancolor\")}(p?(O=-96.6,z=38.7):(O=d?D:I,z=(L[0]+L[1])/2),r(\"center.lon\",O),r(\"center.lat\",z),g&&(r(\"projection.tilt\"),r(\"projection.distance\")),m)&&r(\"projection.parallels\",f.projParallels||[0,60]);r(\"projection.scale\"),r(\"showland\",!!x&&void 0)&&r(\"landcolor\"),r(\"showlakes\",!!x&&void 0)&&r(\"lakecolor\"),r(\"showrivers\",!!x&&void 0)&&(r(\"rivercolor\"),r(\"riverwidth\")),r(\"showcountries\",d&&\"usa\"!==u&&x)&&(r(\"countrycolor\"),r(\"countrywidth\")),(\"usa\"===u||\"north america\"===u&&50===c)&&(r(\"showsubunits\",x),r(\"subunitcolor\"),r(\"subunitwidth\")),d||r(\"showframe\",x)&&(r(\"framecolor\"),r(\"framewidth\")),r(\"bgcolor\"),r(\"fitbounds\")&&(delete e.projection.scale,d?(delete e.center.lon,delete e.center.lat):v?(delete e.center.lon,delete e.center.lat,delete e.projection.rotation.lon,delete e.projection.rotation.lat,delete e.lonaxis.range,delete e.lataxis.range):(delete e.center.lon,delete e.center.lat,delete e.projection.rotation.lon))}e.exports=function(t,e,r){i(t,e,r,{type:\"geo\",attributes:s,handleDefaults:c,fullData:r,partition:\"y\"})}},{\"../../lib\":503,\"../get_data\":593,\"../subplot_defaults\":632,\"./constants\":587,\"./layout_attributes\":590}],592:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../registry\"),o=Math.PI/180,s=180/Math.PI,l={cursor:\"pointer\"},c={cursor:\"auto\"};function u(t,e){return n.behavior.zoom().translate(e.translate()).scale(e.scale())}function f(t,e,r){var n=t.id,o=t.graphDiv,s=o.layout,l=s[n],c=o._fullLayout,u=c[n],f={},h={};function p(t,e){f[n+\".\"+t]=i.nestedProperty(l,t).get(),a.call(\"_storeDirectGUIEdit\",s,c._preGUI,f);var r=i.nestedProperty(u,t);r.get()!==e&&(r.set(e),i.nestedProperty(l,t).set(e),h[n+\".\"+t]=e)}r(p),p(\"projection.scale\",e.scale()/t.fitScale),p(\"fitbounds\",!1),o.emit(\"plotly_relayout\",h)}function h(t,e){var r=u(0,e);function i(r){var n=e.invert(t.midPt);r(\"center.lon\",n[0]),r(\"center.lat\",n[1])}return r.on(\"zoomstart\",(function(){n.select(this).style(l)})).on(\"zoom\",(function(){e.scale(n.event.scale).translate(n.event.translate),t.render();var r=e.invert(t.midPt);t.graphDiv.emit(\"plotly_relayouting\",{\"geo.projection.scale\":e.scale()/t.fitScale,\"geo.center.lon\":r[0],\"geo.center.lat\":r[1]})})).on(\"zoomend\",(function(){n.select(this).style(c),f(t,e,i)})),r}function p(t,e){var r,i,a,o,s,h,p,d,g,m=u(0,e);function v(t){return e.invert(t)}function y(r){var n=e.rotate(),i=e.invert(t.midPt);r(\"projection.rotation.lon\",-n[0]),r(\"center.lon\",i[0]),r(\"center.lat\",i[1])}return m.on(\"zoomstart\",(function(){n.select(this).style(l),r=n.mouse(this),i=e.rotate(),a=e.translate(),o=i,s=v(r)})).on(\"zoom\",(function(){if(h=n.mouse(this),function(t){var r=v(t);if(!r)return!0;var n=e(r);return Math.abs(n[0]-t[0])>2||Math.abs(n[1]-t[1])>2}(r))return m.scale(e.scale()),void m.translate(e.translate());e.scale(n.event.scale),e.translate([a[0],n.event.translate[1]]),s?v(h)&&(d=v(h),p=[o[0]+(d[0]-s[0]),i[1],i[2]],e.rotate(p),o=p):s=v(r=h),g=!0,t.render();var l=e.rotate(),c=e.invert(t.midPt);t.graphDiv.emit(\"plotly_relayouting\",{\"geo.projection.scale\":e.scale()/t.fitScale,\"geo.center.lon\":c[0],\"geo.center.lat\":c[1],\"geo.projection.rotation.lon\":-l[0]})})).on(\"zoomend\",(function(){n.select(this).style(c),g&&f(t,e,y)})),m}function d(t,e){var r,i={r:e.rotate(),k:e.scale()},a=u(0,e),o=function(t){var e=0,r=arguments.length,i=[];for(;++ed?(a=(f>0?90:-90)-p,i=0):(a=Math.asin(f/d)*s-p,i=Math.sqrt(d*d-f*f));var g=180-a-2*p,m=(Math.atan2(h,u)-Math.atan2(c,i))*s,v=(Math.atan2(h,u)-Math.atan2(c,-i))*s;return b(r[0],r[1],a,m)<=b(r[0],r[1],g,v)?[a,m,r[2]]:[g,v,r[2]]}function b(t,e,r,n){var i=_(r-t),a=_(n-e);return Math.sqrt(i*i+a*a)}function _(t){return(t%360+540)%360-180}function w(t,e,r){var n=r*o,i=t.slice(),a=0===e?1:0,s=2===e?1:2,l=Math.cos(n),c=Math.sin(n);return i[a]=t[a]*l-t[s]*c,i[s]=t[s]*l+t[a]*c,i}function T(t){return[Math.atan2(2*(t[0]*t[1]+t[2]*t[3]),1-2*(t[1]*t[1]+t[2]*t[2]))*s,Math.asin(Math.max(-1,Math.min(1,2*(t[0]*t[2]-t[3]*t[1]))))*s,Math.atan2(2*(t[0]*t[3]+t[1]*t[2]),1-2*(t[2]*t[2]+t[3]*t[3]))*s]}function k(t,e){for(var r=0,n=0,i=t.length;nMath.abs(s)?(c.boxEnd[1]=c.boxStart[1]+Math.abs(a)*_*(s>=0?1:-1),c.boxEnd[1]l[3]&&(c.boxEnd[1]=l[3],c.boxEnd[0]=c.boxStart[0]+(l[3]-c.boxStart[1])/Math.abs(_))):(c.boxEnd[0]=c.boxStart[0]+Math.abs(s)/_*(a>=0?1:-1),c.boxEnd[0]l[2]&&(c.boxEnd[0]=l[2],c.boxEnd[1]=c.boxStart[1]+(l[2]-c.boxStart[0])*Math.abs(_)))}}else c.boxEnabled?(a=c.boxStart[0]!==c.boxEnd[0],s=c.boxStart[1]!==c.boxEnd[1],a||s?(a&&(m(0,c.boxStart[0],c.boxEnd[0]),t.xaxis.autorange=!1),s&&(m(1,c.boxStart[1],c.boxEnd[1]),t.yaxis.autorange=!1),t.relayoutCallback()):t.glplot.setDirty(),c.boxEnabled=!1,c.boxInited=!1):c.boxInited&&(c.boxInited=!1);break;case\"pan\":c.boxEnabled=!1,c.boxInited=!1,e?(c.panning||(c.dragStart[0]=n,c.dragStart[1]=i),Math.abs(c.dragStart[0]-n).999&&(g=\"turntable\"):g=\"turntable\")}else g=\"turntable\";r(\"dragmode\",g),r(\"hovermode\",n.getDfltFromLayout(\"hovermode\"))}e.exports=function(t,e,r){var i=e._basePlotModules.length>1;o(t,e,r,{type:\"gl3d\",attributes:l,handleDefaults:u,fullLayout:e,font:e.font,fullData:r,getDfltFromLayout:function(e){if(!i)return n.validate(t[e],l[e])?t[e]:void 0},autotypenumbersDflt:e.autotypenumbers,paper_bgcolor:e.paper_bgcolor,calendar:e.calendar})}},{\"../../../components/color\":366,\"../../../lib\":503,\"../../../registry\":638,\"../../get_data\":593,\"../../subplot_defaults\":632,\"./axis_defaults\":601,\"./layout_attributes\":604}],604:[function(t,e,r){\"use strict\";var n=t(\"./axis_attributes\"),i=t(\"../../domain\").attributes,a=t(\"../../../lib/extend\").extendFlat,o=t(\"../../../lib\").counterRegex;function s(t,e,r){return{x:{valType:\"number\",dflt:t,editType:\"camera\"},y:{valType:\"number\",dflt:e,editType:\"camera\"},z:{valType:\"number\",dflt:r,editType:\"camera\"},editType:\"camera\"}}e.exports={_arrayAttrRegexps:[o(\"scene\",\".annotations\",!0)],bgcolor:{valType:\"color\",dflt:\"rgba(0,0,0,0)\",editType:\"plot\"},camera:{up:a(s(0,0,1),{}),center:a(s(0,0,0),{}),eye:a(s(1.25,1.25,1.25),{}),projection:{type:{valType:\"enumerated\",values:[\"perspective\",\"orthographic\"],dflt:\"perspective\",editType:\"calc\"},editType:\"calc\"},editType:\"camera\"},domain:i({name:\"scene\",editType:\"plot\"}),aspectmode:{valType:\"enumerated\",values:[\"auto\",\"cube\",\"data\",\"manual\"],dflt:\"auto\",editType:\"plot\",impliedEdits:{\"aspectratio.x\":void 0,\"aspectratio.y\":void 0,\"aspectratio.z\":void 0}},aspectratio:{x:{valType:\"number\",min:0,editType:\"plot\",impliedEdits:{\"^aspectmode\":\"manual\"}},y:{valType:\"number\",min:0,editType:\"plot\",impliedEdits:{\"^aspectmode\":\"manual\"}},z:{valType:\"number\",min:0,editType:\"plot\",impliedEdits:{\"^aspectmode\":\"manual\"}},editType:\"plot\",impliedEdits:{aspectmode:\"manual\"}},xaxis:n,yaxis:n,zaxis:n,dragmode:{valType:\"enumerated\",values:[\"orbit\",\"turntable\",\"zoom\",\"pan\",!1],editType:\"plot\"},hovermode:{valType:\"enumerated\",values:[\"closest\",!1],dflt:\"closest\",editType:\"modebar\"},uirevision:{valType:\"any\",editType:\"none\"},editType:\"plot\",_deprecated:{cameraposition:{valType:\"info_array\",editType:\"camera\"}}}},{\"../../../lib\":503,\"../../../lib/extend\":493,\"../../domain\":584,\"./axis_attributes\":600}],605:[function(t,e,r){\"use strict\";var n=t(\"../../../lib/str2rgbarray\"),i=[\"xaxis\",\"yaxis\",\"zaxis\"];function a(){this.enabled=[!0,!0,!0],this.colors=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.drawSides=[!0,!0,!0],this.lineWidth=[1,1,1]}a.prototype.merge=function(t){for(var e=0;e<3;++e){var r=t[i[e]];r.visible?(this.enabled[e]=r.showspikes,this.colors[e]=n(r.spikecolor),this.drawSides[e]=r.spikesides,this.lineWidth[e]=r.spikethickness):(this.enabled[e]=!1,this.drawSides[e]=!1)}},e.exports=function(t){var e=new a;return e.merge(t),e}},{\"../../../lib/str2rgbarray\":528}],606:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e=t.axesOptions,r=t.glplot.axesPixels,s=t.fullSceneLayout,l=[[],[],[]],c=0;c<3;++c){var u=s[a[c]];if(u._length=(r[c].hi-r[c].lo)*r[c].pixelsPerDataUnit/t.dataScale[c],Math.abs(u._length)===1/0||isNaN(u._length))l[c]=[];else{u._input_range=u.range.slice(),u.range[0]=r[c].lo/t.dataScale[c],u.range[1]=r[c].hi/t.dataScale[c],u._m=1/(t.dataScale[c]*r[c].pixelsPerDataUnit),u.range[0]===u.range[1]&&(u.range[0]-=1,u.range[1]+=1);var f=u.tickmode;if(\"auto\"===u.tickmode){u.tickmode=\"linear\";var h=u.nticks||i.constrain(u._length/40,4,9);n.autoTicks(u,Math.abs(u.range[1]-u.range[0])/h)}for(var p=n.calcTicks(u,{msUTC:!0}),d=0;d/g,\" \"));l[c]=p,u.tickmode=f}}e.ticks=l;for(c=0;c<3;++c){o[c]=.5*(t.glplot.bounds[0][c]+t.glplot.bounds[1][c]);for(d=0;d<2;++d)e.bounds[d][c]=t.glplot.bounds[d][c]}t.contourLevels=function(t){for(var e=new Array(3),r=0;r<3;++r){for(var n=t[r],i=new Array(n.length),a=0;ar.deltaY?1.1:1/1.1,a=t.glplot.getAspectratio();t.glplot.setAspectratio({x:n*a.x,y:n*a.y,z:n*a.z})}i(t)}}),!!c&&{passive:!1}),t.glplot.canvas.addEventListener(\"mousemove\",(function(){if(!1!==t.fullSceneLayout.dragmode&&0!==t.camera.mouseListener.buttons){var e=n();t.graphDiv.emit(\"plotly_relayouting\",e)}})),t.staticMode||t.glplot.canvas.addEventListener(\"webglcontextlost\",(function(r){e&&e.emit&&e.emit(\"plotly_webglcontextlost\",{event:r,layer:t.id})}),!1)),t.glplot.oncontextloss=function(){t.recoverContext()},t.glplot.onrender=function(){t.render()},!0},w.render=function(){var t,e=this,r=e.graphDiv,n=e.svgContainer,i=e.container.getBoundingClientRect();r._fullLayout._calcInverseTransform(r);var a=r._fullLayout._invScaleX,o=r._fullLayout._invScaleY,s=i.width*a,l=i.height*o;n.setAttributeNS(null,\"viewBox\",\"0 0 \"+s+\" \"+l),n.setAttributeNS(null,\"width\",s),n.setAttributeNS(null,\"height\",l),b(e),e.glplot.axes.update(e.axesOptions);for(var c=Object.keys(e.traces),u=null,h=e.glplot.selection,g=0;g\")):\"isosurface\"===t.type||\"volume\"===t.type?(T.valueLabel=p.hoverLabelText(e._mockAxis,e._mockAxis.d2l(h.traceCoordinate[3]),t.valuehoverformat),S.push(\"value: \"+T.valueLabel),h.textLabel&&S.push(h.textLabel),x=S.join(\"
\")):x=h.textLabel;var E={x:h.traceCoordinate[0],y:h.traceCoordinate[1],z:h.traceCoordinate[2],data:_._input,fullData:_,curveNumber:_.index,pointNumber:w};d.appendArrayPointValue(E,_,w),t._module.eventData&&(E=_._module.eventData(E,h,_,{},w));var L={points:[E]};if(e.fullSceneLayout.hovermode){var C=[];d.loneHover({trace:_,x:(.5+.5*y[0]/y[3])*s,y:(.5-.5*y[1]/y[3])*l,xLabel:T.xLabel,yLabel:T.yLabel,zLabel:T.zLabel,text:x,name:u.name,color:d.castHoverOption(_,w,\"bgcolor\")||u.color,borderColor:d.castHoverOption(_,w,\"bordercolor\"),fontFamily:d.castHoverOption(_,w,\"font.family\"),fontSize:d.castHoverOption(_,w,\"font.size\"),fontColor:d.castHoverOption(_,w,\"font.color\"),nameLength:d.castHoverOption(_,w,\"namelength\"),textAlign:d.castHoverOption(_,w,\"align\"),hovertemplate:f.castOption(_,w,\"hovertemplate\"),hovertemplateLabels:f.extendFlat({},E,T),eventData:[E]},{container:n,gd:r,inOut_bbox:C}),E.bbox=C[0]}h.buttons&&h.distance<5?r.emit(\"plotly_click\",L):r.emit(\"plotly_hover\",L),this.oldEventData=L}else d.loneUnhover(n),this.oldEventData&&r.emit(\"plotly_unhover\",this.oldEventData),this.oldEventData=void 0;e.drawAnnotations(e)},w.recoverContext=function(){var t=this;t.glplot.dispose();var e=function(){t.glplot.gl.isContextLost()?requestAnimationFrame(e):t.initializeGLPlot()?t.plot.apply(t,t.plotArgs):f.error(\"Catastrophic and unrecoverable WebGL error. Context lost.\")};requestAnimationFrame(e)};var k=[\"xaxis\",\"yaxis\",\"zaxis\"];function A(t,e,r){for(var n=t.fullSceneLayout,i=0;i<3;i++){var a=k[i],o=a.charAt(0),s=n[a],l=e[o],c=e[o+\"calendar\"],u=e[\"_\"+o+\"length\"];if(f.isArrayOrTypedArray(l))for(var h,p=0;p<(u||l.length);p++)if(f.isArrayOrTypedArray(l[p]))for(var d=0;dm[1][a])m[0][a]=-1,m[1][a]=1;else{var L=m[1][a]-m[0][a];m[0][a]-=L/32,m[1][a]+=L/32}if(\"reversed\"===s.autorange){var C=m[0][a];m[0][a]=m[1][a],m[1][a]=C}}else{var P=s.range;m[0][a]=s.r2l(P[0]),m[1][a]=s.r2l(P[1])}m[0][a]===m[1][a]&&(m[0][a]-=1,m[1][a]+=1),v[a]=m[1][a]-m[0][a],this.glplot.setBounds(a,{min:m[0][a]*h[a],max:m[1][a]*h[a]})}var I=c.aspectmode;if(\"cube\"===I)d=[1,1,1];else if(\"manual\"===I){var O=c.aspectratio;d=[O.x,O.y,O.z]}else{if(\"auto\"!==I&&\"data\"!==I)throw new Error(\"scene.js aspectRatio was not one of the enumerated types\");var z=[1,1,1];for(a=0;a<3;++a){var D=y[l=(s=c[k[a]]).type];z[a]=Math.pow(D.acc,1/D.count)/h[a]}d=\"data\"===I||Math.max.apply(null,z)/Math.min.apply(null,z)<=4?z:[1,1,1]}c.aspectratio.x=u.aspectratio.x=d[0],c.aspectratio.y=u.aspectratio.y=d[1],c.aspectratio.z=u.aspectratio.z=d[2],this.glplot.setAspectratio(c.aspectratio),this.viewInitial.aspectratio||(this.viewInitial.aspectratio={x:c.aspectratio.x,y:c.aspectratio.y,z:c.aspectratio.z}),this.viewInitial.aspectmode||(this.viewInitial.aspectmode=c.aspectmode);var R=c.domain||null,F=e._size||null;if(R&&F){var B=this.container.style;B.position=\"absolute\",B.left=F.l+R.x[0]*F.w+\"px\",B.top=F.t+(1-R.y[1])*F.h+\"px\",B.width=F.w*(R.x[1]-R.x[0])+\"px\",B.height=F.h*(R.y[1]-R.y[0])+\"px\"}this.glplot.redraw()}},w.destroy=function(){this.glplot&&(this.camera.mouseListener.enabled=!1,this.container.removeEventListener(\"wheel\",this.camera.wheelListener),this.camera=null,this.glplot.dispose(),this.container.parentNode.removeChild(this.container),this.glplot=null)},w.getCamera=function(){var t;return this.camera.view.recalcMatrix(this.camera.view.lastT()),{up:{x:(t=this.camera).up[0],y:t.up[1],z:t.up[2]},center:{x:t.center[0],y:t.center[1],z:t.center[2]},eye:{x:t.eye[0],y:t.eye[1],z:t.eye[2]},projection:{type:!0===t._ortho?\"orthographic\":\"perspective\"}}},w.setViewport=function(t){var e,r=t.camera;this.camera.lookAt.apply(this,[[(e=r).eye.x,e.eye.y,e.eye.z],[e.center.x,e.center.y,e.center.z],[e.up.x,e.up.y,e.up.z]]),this.glplot.setAspectratio(t.aspectratio),\"orthographic\"===r.projection.type!==this.camera._ortho&&(this.glplot.redraw(),this.glplot.clearRGBA(),this.glplot.dispose(),this.initializeGLPlot())},w.isCameraChanged=function(t){var e=this.getCamera(),r=f.nestedProperty(t,this.id+\".camera\").get();function n(t,e,r,n){var i=[\"up\",\"center\",\"eye\"],a=[\"x\",\"y\",\"z\"];return e[i[r]]&&t[i[r]][a[n]]===e[i[r]][a[n]]}var i=!1;if(void 0===r)i=!0;else{for(var a=0;a<3;a++)for(var o=0;o<3;o++)if(!n(e,r,a,o)){i=!0;break}(!r.projection||e.projection&&e.projection.type!==r.projection.type)&&(i=!0)}return i},w.isAspectChanged=function(t){var e=this.glplot.getAspectratio(),r=f.nestedProperty(t,this.id+\".aspectratio\").get();return void 0===r||r.x!==e.x||r.y!==e.y||r.z!==e.z},w.saveLayout=function(t){var e,r,n,i,a,o,s=this.fullLayout,l=this.isCameraChanged(t),c=this.isAspectChanged(t),h=l||c;if(h){var p={};if(l&&(e=this.getCamera(),n=(r=f.nestedProperty(t,this.id+\".camera\")).get(),p[this.id+\".camera\"]=n),c&&(i=this.glplot.getAspectratio(),o=(a=f.nestedProperty(t,this.id+\".aspectratio\")).get(),p[this.id+\".aspectratio\"]=o),u.call(\"_storeDirectGUIEdit\",t,s._preGUI,p),l)r.set(e),f.nestedProperty(s,this.id+\".camera\").set(e);if(c)a.set(i),f.nestedProperty(s,this.id+\".aspectratio\").set(i),this.glplot.redraw()}return h},w.updateFx=function(t,e){var r=this.camera;if(r)if(\"orbit\"===t)r.mode=\"orbit\",r.keyBindingMode=\"rotate\";else if(\"turntable\"===t){r.up=[0,0,1],r.mode=\"turntable\",r.keyBindingMode=\"rotate\";var n=this.graphDiv,i=n._fullLayout,a=this.fullSceneLayout.camera,o=a.up.x,s=a.up.y,l=a.up.z;if(l/Math.sqrt(o*o+s*s+l*l)<.999){var c=this.id+\".camera.up\",h={x:0,y:0,z:1},p={};p[c]=h;var d=n.layout;u.call(\"_storeDirectGUIEdit\",d,i._preGUI,p),a.up=h,f.nestedProperty(d,c).set(h)}}else r.keyBindingMode=t;this.fullSceneLayout.hovermode=e},w.toImage=function(t){t||(t=\"png\"),this.staticMode&&this.container.appendChild(n),this.glplot.redraw();var e=this.glplot.gl,r=e.drawingBufferWidth,i=e.drawingBufferHeight;e.bindFramebuffer(e.FRAMEBUFFER,null);var a=new Uint8Array(r*i*4);e.readPixels(0,0,r,i,e.RGBA,e.UNSIGNED_BYTE,a),function(t,e,r){for(var n=0,i=r-1;n0)for(var s=255/o,l=0;l<3;++l)t[a+l]=Math.min(s*t[a+l],255)}}(a,r,i);var o=document.createElement(\"canvas\");o.width=r,o.height=i;var s,l=o.getContext(\"2d\"),c=l.createImageData(r,i);switch(c.data.set(a),l.putImageData(c,0,0),t){case\"jpeg\":s=o.toDataURL(\"image/jpeg\");break;case\"webp\":s=o.toDataURL(\"image/webp\");break;default:s=o.toDataURL(\"image/png\")}return this.staticMode&&this.container.removeChild(n),s},w.setConvert=function(){for(var t=0;t<3;t++){var e=this.fullSceneLayout[k[t]];p.setConvert(e,this.fullLayout),e.setScale=f.noop}},w.make4thDimension=function(){var t=this.graphDiv._fullLayout;this._mockAxis={type:\"linear\",showexponent:\"all\",exponentformat:\"B\"},p.setConvert(this._mockAxis,t)},e.exports=_},{\"../../../stackgl_modules\":1120,\"../../components/fx\":406,\"../../lib\":503,\"../../lib/show_no_webgl_msg\":525,\"../../lib/str2rgbarray\":528,\"../../plots/cartesian/axes\":554,\"../../registry\":638,\"./layout/convert\":602,\"./layout/spikes\":605,\"./layout/tick_marks\":606,\"./project\":607,\"has-passive-events\":229,\"webgl-context\":331}],609:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,n){n=n||t.length;for(var i=new Array(n),a=0;aOpenStreetMap
contributors',a=['\\xa9 Carto',i].join(\" \"),o=['Map tiles by Stamen Design','under CC BY 3.0',\"|\",'Data by OpenStreetMap contributors','under ODbL'].join(\" \"),s={\"open-street-map\":{id:\"osm\",version:8,sources:{\"plotly-osm-tiles\":{type:\"raster\",attribution:i,tiles:[\"https://a.tile.openstreetmap.org/{z}/{x}/{y}.png\",\"https://b.tile.openstreetmap.org/{z}/{x}/{y}.png\"],tileSize:256}},layers:[{id:\"plotly-osm-tiles\",type:\"raster\",source:\"plotly-osm-tiles\",minzoom:0,maxzoom:22}]},\"white-bg\":{id:\"white-bg\",version:8,sources:{},layers:[{id:\"white-bg\",type:\"background\",paint:{\"background-color\":\"#FFFFFF\"},minzoom:0,maxzoom:22}]},\"carto-positron\":{id:\"carto-positron\",version:8,sources:{\"plotly-carto-positron\":{type:\"raster\",attribution:a,tiles:[\"https://cartodb-basemaps-c.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png\"],tileSize:256}},layers:[{id:\"plotly-carto-positron\",type:\"raster\",source:\"plotly-carto-positron\",minzoom:0,maxzoom:22}]},\"carto-darkmatter\":{id:\"carto-darkmatter\",version:8,sources:{\"plotly-carto-darkmatter\":{type:\"raster\",attribution:a,tiles:[\"https://cartodb-basemaps-c.global.ssl.fastly.net/dark_all/{z}/{x}/{y}.png\"],tileSize:256}},layers:[{id:\"plotly-carto-darkmatter\",type:\"raster\",source:\"plotly-carto-darkmatter\",minzoom:0,maxzoom:22}]},\"stamen-terrain\":{id:\"stamen-terrain\",version:8,sources:{\"plotly-stamen-terrain\":{type:\"raster\",attribution:o,tiles:[\"https://stamen-tiles.a.ssl.fastly.net/terrain/{z}/{x}/{y}.png\"],tileSize:256}},layers:[{id:\"plotly-stamen-terrain\",type:\"raster\",source:\"plotly-stamen-terrain\",minzoom:0,maxzoom:22}]},\"stamen-toner\":{id:\"stamen-toner\",version:8,sources:{\"plotly-stamen-toner\":{type:\"raster\",attribution:o,tiles:[\"https://stamen-tiles.a.ssl.fastly.net/toner/{z}/{x}/{y}.png\"],tileSize:256}},layers:[{id:\"plotly-stamen-toner\",type:\"raster\",source:\"plotly-stamen-toner\",minzoom:0,maxzoom:22}]},\"stamen-watercolor\":{id:\"stamen-watercolor\",version:8,sources:{\"plotly-stamen-watercolor\":{type:\"raster\",attribution:['Map tiles by Stamen Design','under CC BY 3.0',\"|\",'Data by OpenStreetMap contributors','under CC BY SA'].join(\" \"),tiles:[\"https://stamen-tiles.a.ssl.fastly.net/watercolor/{z}/{x}/{y}.png\"],tileSize:256}},layers:[{id:\"plotly-stamen-watercolor\",type:\"raster\",source:\"plotly-stamen-watercolor\",minzoom:0,maxzoom:22}]}},l=n(s);e.exports={requiredVersion:\"1.10.1\",styleUrlPrefix:\"mapbox://styles/mapbox/\",styleUrlSuffix:\"v9\",styleValuesMapbox:[\"basic\",\"streets\",\"outdoors\",\"light\",\"dark\",\"satellite\",\"satellite-streets\"],styleValueDflt:\"basic\",stylesNonMapbox:s,styleValuesNonMapbox:l,traceLayerPrefix:\"plotly-trace-layer-\",layoutLayerPrefix:\"plotly-layout-layer-\",wrongVersionErrorMsg:[\"Your custom plotly.js bundle is not using the correct mapbox-gl version\",\"Please install mapbox-gl@1.10.1.\"].join(\"\\n\"),noAccessTokenErrorMsg:[\"Missing Mapbox access token.\",\"Mapbox trace type require a Mapbox access token to be registered.\",\"For example:\",\" Plotly.newPlot(gd, data, layout, { mapboxAccessToken: 'my-access-token' });\",\"More info here: https://www.mapbox.com/help/define-access-token/\"].join(\"\\n\"),missingStyleErrorMsg:[\"No valid mapbox style found, please set `mapbox.style` to one of:\",l.join(\", \"),\"or register a Mapbox access token to use a Mapbox-served style.\"].join(\"\\n\"),multipleTokensErrorMsg:[\"Set multiple mapbox access token across different mapbox subplot,\",\"using first token found as mapbox-gl does not allow multipleaccess tokens on the same page.\"].join(\"\\n\"),mapOnErrorMsg:\"Mapbox error.\",mapboxLogo:{path0:\"m 10.5,1.24 c -5.11,0 -9.25,4.15 -9.25,9.25 0,5.1 4.15,9.25 9.25,9.25 5.1,0 9.25,-4.15 9.25,-9.25 0,-5.11 -4.14,-9.25 -9.25,-9.25 z m 4.39,11.53 c -1.93,1.93 -4.78,2.31 -6.7,2.31 -0.7,0 -1.41,-0.05 -2.1,-0.16 0,0 -1.02,-5.64 2.14,-8.81 0.83,-0.83 1.95,-1.28 3.13,-1.28 1.27,0 2.49,0.51 3.39,1.42 1.84,1.84 1.89,4.75 0.14,6.52 z\",path1:\"M 10.5,-0.01 C 4.7,-0.01 0,4.7 0,10.49 c 0,5.79 4.7,10.5 10.5,10.5 5.8,0 10.5,-4.7 10.5,-10.5 C 20.99,4.7 16.3,-0.01 10.5,-0.01 Z m 0,19.75 c -5.11,0 -9.25,-4.15 -9.25,-9.25 0,-5.1 4.14,-9.26 9.25,-9.26 5.11,0 9.25,4.15 9.25,9.25 0,5.13 -4.14,9.26 -9.25,9.26 z\",path2:\"M 14.74,6.25 C 12.9,4.41 9.98,4.35 8.23,6.1 5.07,9.27 6.09,14.91 6.09,14.91 c 0,0 5.64,1.02 8.81,-2.14 C 16.64,11 16.59,8.09 14.74,6.25 Z m -2.27,4.09 -0.91,1.87 -0.9,-1.87 -1.86,-0.91 1.86,-0.9 0.9,-1.87 0.91,1.87 1.86,0.9 z\",polygon:\"11.56,12.21 10.66,10.34 8.8,9.43 10.66,8.53 11.56,6.66 12.47,8.53 14.33,9.43 12.47,10.34\"},styleRules:{map:\"overflow:hidden;position:relative;\",\"missing-css\":\"display:none;\",canary:\"background-color:salmon;\",\"ctrl-bottom-left\":\"position: absolute; pointer-events: none; z-index: 2; bottom: 0; left: 0;\",\"ctrl-bottom-right\":\"position: absolute; pointer-events: none; z-index: 2; right: 0; bottom: 0;\",ctrl:\"clear: both; pointer-events: auto; transform: translate(0, 0);\",\"ctrl-attrib.mapboxgl-compact .mapboxgl-ctrl-attrib-inner\":\"display: none;\",\"ctrl-attrib.mapboxgl-compact:hover .mapboxgl-ctrl-attrib-inner\":\"display: block; margin-top:2px\",\"ctrl-attrib.mapboxgl-compact:hover\":\"padding: 2px 24px 2px 4px; visibility: visible; margin-top: 6px;\",\"ctrl-attrib.mapboxgl-compact::after\":'content: \"\"; cursor: pointer; position: absolute; background-image: url(\\'data:image/svg+xml;charset=utf-8,%3Csvg viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"%3E %3Cpath fill=\"%23333333\" fill-rule=\"evenodd\" d=\"M4,10a6,6 0 1,0 12,0a6,6 0 1,0 -12,0 M9,7a1,1 0 1,0 2,0a1,1 0 1,0 -2,0 M9,10a1,1 0 1,1 2,0l0,3a1,1 0 1,1 -2,0\"/%3E %3C/svg%3E\\'); background-color: rgba(255, 255, 255, 0.5); width: 24px; height: 24px; box-sizing: border-box; border-radius: 12px;',\"ctrl-attrib.mapboxgl-compact\":\"min-height: 20px; padding: 0; margin: 10px; position: relative; background-color: #fff; border-radius: 3px 12px 12px 3px;\",\"ctrl-bottom-right > .mapboxgl-ctrl-attrib.mapboxgl-compact::after\":\"bottom: 0; right: 0\",\"ctrl-bottom-left > .mapboxgl-ctrl-attrib.mapboxgl-compact::after\":\"bottom: 0; left: 0\",\"ctrl-bottom-left .mapboxgl-ctrl\":\"margin: 0 0 10px 10px; float: left;\",\"ctrl-bottom-right .mapboxgl-ctrl\":\"margin: 0 10px 10px 0; float: right;\",\"ctrl-attrib\":\"color: rgba(0, 0, 0, 0.75); text-decoration: none; font-size: 12px\",\"ctrl-attrib a\":\"color: rgba(0, 0, 0, 0.75); text-decoration: none; font-size: 12px\",\"ctrl-attrib a:hover\":\"color: inherit; text-decoration: underline;\",\"ctrl-attrib .mapbox-improve-map\":\"font-weight: bold; margin-left: 2px;\",\"attrib-empty\":\"display: none;\",\"ctrl-logo\":'display:block; width: 21px; height: 21px; background-image: url(\\'data:image/svg+xml;charset=utf-8,%3C?xml version=\"1.0\" encoding=\"utf-8\"?%3E %3Csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 21 21\" style=\"enable-background:new 0 0 21 21;\" xml:space=\"preserve\"%3E%3Cg transform=\"translate(0,0.01)\"%3E%3Cpath d=\"m 10.5,1.24 c -5.11,0 -9.25,4.15 -9.25,9.25 0,5.1 4.15,9.25 9.25,9.25 5.1,0 9.25,-4.15 9.25,-9.25 0,-5.11 -4.14,-9.25 -9.25,-9.25 z m 4.39,11.53 c -1.93,1.93 -4.78,2.31 -6.7,2.31 -0.7,0 -1.41,-0.05 -2.1,-0.16 0,0 -1.02,-5.64 2.14,-8.81 0.83,-0.83 1.95,-1.28 3.13,-1.28 1.27,0 2.49,0.51 3.39,1.42 1.84,1.84 1.89,4.75 0.14,6.52 z\" style=\"opacity:0.9;fill:%23ffffff;enable-background:new\" class=\"st0\"/%3E%3Cpath d=\"M 10.5,-0.01 C 4.7,-0.01 0,4.7 0,10.49 c 0,5.79 4.7,10.5 10.5,10.5 5.8,0 10.5,-4.7 10.5,-10.5 C 20.99,4.7 16.3,-0.01 10.5,-0.01 Z m 0,19.75 c -5.11,0 -9.25,-4.15 -9.25,-9.25 0,-5.1 4.14,-9.26 9.25,-9.26 5.11,0 9.25,4.15 9.25,9.25 0,5.13 -4.14,9.26 -9.25,9.26 z\" style=\"opacity:0.35;enable-background:new\" class=\"st1\"/%3E%3Cpath d=\"M 14.74,6.25 C 12.9,4.41 9.98,4.35 8.23,6.1 5.07,9.27 6.09,14.91 6.09,14.91 c 0,0 5.64,1.02 8.81,-2.14 C 16.64,11 16.59,8.09 14.74,6.25 Z m -2.27,4.09 -0.91,1.87 -0.9,-1.87 -1.86,-0.91 1.86,-0.9 0.9,-1.87 0.91,1.87 1.86,0.9 z\" style=\"opacity:0.35;enable-background:new\" class=\"st1\"/%3E%3Cpolygon points=\"11.56,12.21 10.66,10.34 8.8,9.43 10.66,8.53 11.56,6.66 12.47,8.53 14.33,9.43 12.47,10.34 \" style=\"opacity:0.9;fill:%23ffffff;enable-background:new\" class=\"st0\"/%3E%3C/g%3E%3C/svg%3E\\')'}}},{\"../../lib/sort_object_keys\":526}],612:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t,e){var r=t.split(\" \"),i=r[0],a=r[1],o=n.isArrayOrTypedArray(e)?n.mean(e):e,s=.5+o/100,l=1.5+o/100,c=[\"\",\"\"],u=[0,0];switch(i){case\"top\":c[0]=\"top\",u[1]=-l;break;case\"bottom\":c[0]=\"bottom\",u[1]=l}switch(a){case\"left\":c[1]=\"right\",u[0]=-s;break;case\"right\":c[1]=\"left\",u[0]=s}return{anchor:c[0]&&c[1]?c.join(\"-\"):c[0]?c[0]:c[1]?c[1]:\"center\",offset:u}}},{\"../../lib\":503}],613:[function(t,e,r){\"use strict\";var n=t(\"mapbox-gl/dist/mapbox-gl-unminified\"),i=t(\"../../lib\"),a=i.strTranslate,o=i.strScale,s=t(\"../../plots/get_data\").getSubplotCalcData,l=t(\"../../constants/xmlns_namespaces\"),c=t(\"@plotly/d3\"),u=t(\"../../components/drawing\"),f=t(\"../../lib/svg_text_utils\"),h=t(\"./mapbox\"),p=r.constants=t(\"./constants\");function d(t){return\"string\"==typeof t&&(-1!==p.styleValuesMapbox.indexOf(t)||0===t.indexOf(\"mapbox://\"))}r.name=\"mapbox\",r.attr=\"subplot\",r.idRoot=\"mapbox\",r.idRegex=r.attrRegex=i.counterRegex(\"mapbox\"),r.attributes={subplot:{valType:\"subplotid\",dflt:\"mapbox\",editType:\"calc\"}},r.layoutAttributes=t(\"./layout_attributes\"),r.supplyLayoutDefaults=t(\"./layout_defaults\"),r.plot=function(t){var e=t._fullLayout,r=t.calcdata,a=e._subplots.mapbox;if(n.version!==p.requiredVersion)throw new Error(p.wrongVersionErrorMsg);var o=function(t,e){var r=t._fullLayout;if(\"\"===t._context.mapboxAccessToken)return\"\";for(var n=[],a=[],o=!1,s=!1,l=0;l1&&i.warn(p.multipleTokensErrorMsg),n[0]):(a.length&&i.log([\"Listed mapbox access token(s)\",a.join(\",\"),\"but did not use a Mapbox map style, ignoring token(s).\"].join(\" \")),\"\")}(t,a);n.accessToken=o;for(var l=0;l_/2){var w=v.split(\"|\").join(\"
\");x.text(w).attr(\"data-unformatted\",w).call(f.convertToTspans,t),b=u.bBox(x.node())}x.attr(\"transform\",a(-3,8-b.height)),y.insert(\"rect\",\".static-attribution\").attr({x:-b.width-6,y:-b.height-3,width:b.width+6,height:b.height+3,fill:\"rgba(255, 255, 255, 0.75)\"});var T=1;b.width+6>_&&(T=_/(b.width+6));var k=[n.l+n.w*h.x[1],n.t+n.h*(1-h.y[0])];y.attr(\"transform\",a(k[0],k[1])+o(T))}},r.updateFx=function(t){for(var e=t._fullLayout,r=e._subplots.mapbox,n=0;n0){for(var r=0;r0}function u(t){var e={},r={};switch(t.type){case\"circle\":n.extendFlat(r,{\"circle-radius\":t.circle.radius,\"circle-color\":t.color,\"circle-opacity\":t.opacity});break;case\"line\":n.extendFlat(r,{\"line-width\":t.line.width,\"line-color\":t.color,\"line-opacity\":t.opacity,\"line-dasharray\":t.line.dash});break;case\"fill\":n.extendFlat(r,{\"fill-color\":t.color,\"fill-outline-color\":t.fill.outlinecolor,\"fill-opacity\":t.opacity});break;case\"symbol\":var i=t.symbol,o=a(i.textposition,i.iconsize);n.extendFlat(e,{\"icon-image\":i.icon+\"-15\",\"icon-size\":i.iconsize/10,\"text-field\":i.text,\"text-size\":i.textfont.size,\"text-anchor\":o.anchor,\"text-offset\":o.offset,\"symbol-placement\":i.placement}),n.extendFlat(r,{\"icon-color\":t.color,\"text-color\":i.textfont.color,\"text-opacity\":t.opacity});break;case\"raster\":n.extendFlat(r,{\"raster-fade-duration\":0,\"raster-opacity\":t.opacity})}return{layout:e,paint:r}}l.update=function(t){this.visible?this.needsNewImage(t)?this.updateImage(t):this.needsNewSource(t)?(this.removeLayer(),this.updateSource(t),this.updateLayer(t)):this.needsNewLayer(t)?this.updateLayer(t):this.updateStyle(t):(this.updateSource(t),this.updateLayer(t)),this.visible=c(t)},l.needsNewImage=function(t){return this.subplot.map.getSource(this.idSource)&&\"image\"===this.sourceType&&\"image\"===t.sourcetype&&(this.source!==t.source||JSON.stringify(this.coordinates)!==JSON.stringify(t.coordinates))},l.needsNewSource=function(t){return this.sourceType!==t.sourcetype||JSON.stringify(this.source)!==JSON.stringify(t.source)||this.layerType!==t.type},l.needsNewLayer=function(t){return this.layerType!==t.type||this.below!==this.subplot.belowLookup[\"layout-\"+this.index]},l.lookupBelow=function(){return this.subplot.belowLookup[\"layout-\"+this.index]},l.updateImage=function(t){this.subplot.map.getSource(this.idSource).updateImage({url:t.source,coordinates:t.coordinates});var e=this.findFollowingMapboxLayerId(this.lookupBelow());null!==e&&this.subplot.map.moveLayer(this.idLayer,e)},l.updateSource=function(t){var e=this.subplot.map;if(e.getSource(this.idSource)&&e.removeSource(this.idSource),this.sourceType=t.sourcetype,this.source=t.source,c(t)){var r=function(t){var e,r=t.sourcetype,n=t.source,a={type:r};\"geojson\"===r?e=\"data\":\"vector\"===r?e=\"string\"==typeof n?\"url\":\"tiles\":\"raster\"===r?(e=\"tiles\",a.tileSize=256):\"image\"===r&&(e=\"url\",a.coordinates=t.coordinates);a[e]=n,t.sourceattribution&&(a.attribution=i(t.sourceattribution));return a}(t);e.addSource(this.idSource,r)}},l.findFollowingMapboxLayerId=function(t){if(\"traces\"===t)for(var e=this.subplot.getMapLayers(),r=0;r1)for(r=0;r-1&&v(e.originalEvent,n,[r.xaxis],[r.yaxis],r.id,t),i.indexOf(\"event\")>-1&&c.click(n,e.originalEvent)}}},_.updateFx=function(t){var e=this,r=e.map,n=e.gd;if(!e.isStatic){var a,o=t.dragmode;a=f(o)?function(t,r){(t.range={})[e.id]=[c([r.xmin,r.ymin]),c([r.xmax,r.ymax])]}:function(t,r,n){(t.lassoPoints={})[e.id]=n.filtered.map(c)};var s=e.dragOptions;e.dragOptions=i.extendDeep(s||{},{dragmode:t.dragmode,element:e.div,gd:n,plotinfo:{id:e.id,domain:t[e.id].domain,xaxis:e.xaxis,yaxis:e.yaxis,fillRangeItems:a},xaxes:[e.xaxis],yaxes:[e.yaxis],subplot:e.id}),r.off(\"click\",e.onClickInPanHandler),p(o)||h(o)?(r.dragPan.disable(),r.on(\"zoomstart\",e.clearSelect),e.dragOptions.prepFn=function(t,r,n){d(t,r,n,e.dragOptions,o)},l.init(e.dragOptions)):(r.dragPan.enable(),r.off(\"zoomstart\",e.clearSelect),e.div.onmousedown=null,e.onClickInPanHandler=e.onClickInPanFn(e.dragOptions),r.on(\"click\",e.onClickInPanHandler))}function c(t){var r=e.map.unproject(t);return[r.lng,r.lat]}},_.updateFramework=function(t){var e=t[this.id].domain,r=t._size,n=this.div.style;n.width=r.w*(e.x[1]-e.x[0])+\"px\",n.height=r.h*(e.y[1]-e.y[0])+\"px\",n.left=r.l+e.x[0]*r.w+\"px\",n.top=r.t+(1-e.y[1])*r.h+\"px\",this.xaxis._offset=r.l+e.x[0]*r.w,this.xaxis._length=r.w*(e.x[1]-e.x[0]),this.yaxis._offset=r.t+(1-e.y[1])*r.h,this.yaxis._length=r.h*(e.y[1]-e.y[0])},_.updateLayers=function(t){var e,r=t[this.id].layers,n=this.layerList;if(r.length!==n.length){for(e=0;e=e.width-20?(a[\"text-anchor\"]=\"start\",a.x=5):(a[\"text-anchor\"]=\"end\",a.x=e._paper.attr(\"width\")-7),r.attr(a);var o=r.select(\".js-link-to-tool\"),s=r.select(\".js-link-spacer\"),l=r.select(\".js-sourcelinks\");t._context.showSources&&t._context.showSources(t),t._context.showLink&&function(t,e){e.text(\"\");var r=e.append(\"a\").attr({\"xlink:xlink:href\":\"#\",class:\"link--impt link--embedview\",\"font-weight\":\"bold\"}).text(t._context.linkText+\" \"+String.fromCharCode(187));if(t._context.sendData)r.on(\"click\",(function(){b.sendDataToCloud(t)}));else{var n=window.location.pathname.split(\"/\"),i=window.location.search;r.attr({\"xlink:xlink:show\":\"new\",\"xlink:xlink:href\":\"/\"+n[2].split(\".\")[0]+\"/\"+n[1]+i})}}(t,o),s.text(o.text()&&l.text()?\" - \":\"\")}},b.sendDataToCloud=function(t){var e=(window.PLOTLYENV||{}).BASE_URL||t._context.plotlyServerURL;if(e){t.emit(\"plotly_beforeexport\");var r=n.select(t).append(\"div\").attr(\"id\",\"hiddenform\").style(\"display\",\"none\"),i=r.append(\"form\").attr({action:e+\"/external\",method:\"post\",target:\"_blank\"});return i.append(\"input\").attr({type:\"text\",name:\"data\"}).node().value=b.graphJson(t,!1,\"keepdata\"),i.node().submit(),r.remove(),t.emit(\"plotly_afterexport\"),!1}};var T=[\"days\",\"shortDays\",\"months\",\"shortMonths\",\"periods\",\"dateTime\",\"date\",\"time\",\"decimal\",\"thousands\",\"grouping\",\"currency\"],k=[\"year\",\"month\",\"dayMonth\",\"dayMonthYear\"];function A(t,e){var r=t._context.locale;r||(r=\"en-US\");var n=!1,i={};function a(t){for(var r=!0,a=0;a1&&z.length>1){for(s.getComponentMethod(\"grid\",\"sizeDefaults\")(c,l),o=0;o15&&z.length>15&&0===l.shapes.length&&0===l.images.length,b.linkSubplots(h,l,f,n),b.cleanPlot(h,l,f,n);var N=!(!n._has||!n._has(\"gl2d\")),j=!(!l._has||!l._has(\"gl2d\")),U=!(!n._has||!n._has(\"cartesian\"))||N,V=!(!l._has||!l._has(\"cartesian\"))||j;U&&!V?n._bgLayer.remove():V&&!U&&(l._shouldCreateBgLayer=!0),n._zoomlayer&&!t._dragging&&d({_fullLayout:n}),function(t,e){var r,n=[];e.meta&&(r=e._meta={meta:e.meta,layout:{meta:e.meta}});for(var i=0;i0){var f=1-2*s;n=Math.round(f*n),i=Math.round(f*i)}}var h=b.layoutAttributes.width.min,p=b.layoutAttributes.height.min;n1,g=!e.height&&Math.abs(r.height-i)>1;(g||d)&&(d&&(r.width=n),g&&(r.height=i)),t._initialAutoSize||(t._initialAutoSize={width:n,height:i}),b.sanitizeMargins(r)},b.supplyLayoutModuleDefaults=function(t,e,r,n){var i,a,o,l=s.componentsRegistry,c=e._basePlotModules,f=s.subplotsRegistry.cartesian;for(i in l)(o=l[i]).includeBasePlot&&o.includeBasePlot(t,e);for(var h in c.length||c.push(f),e._has(\"cartesian\")&&(s.getComponentMethod(\"grid\",\"contentDefaults\")(t,e),f.finalizeSubplots(t,e)),e._subplots)e._subplots[h].sort(u.subplotSort);for(a=0;a1&&(r.l/=g,r.r/=g)}if(f){var m=(r.t+r.b)/f;m>1&&(r.t/=m,r.b/=m)}var v=void 0!==r.xl?r.xl:r.x,y=void 0!==r.xr?r.xr:r.x,x=void 0!==r.yt?r.yt:r.y,_=void 0!==r.yb?r.yb:r.y;h[e]={l:{val:v,size:r.l+d},r:{val:y,size:r.r+d},b:{val:_,size:r.b+d},t:{val:x,size:r.t+d}},p[e]=1}else delete h[e],delete p[e];if(!n._replotting)return b.doAutoMargin(t)}},b.doAutoMargin=function(t){var e=t._fullLayout,r=e.width,n=e.height;e._size||(e._size={}),C(e);var i=e._size,a=e.margin,l=u.extendFlat({},i),c=a.l,f=a.r,h=a.t,d=a.b,g=e._pushmargin,m=e._pushmarginIds;if(!1!==e.margin.autoexpand){for(var v in g)m[v]||delete g[v];for(var y in g.base={l:{val:0,size:c},r:{val:1,size:f},t:{val:1,size:h},b:{val:0,size:d}},g){var x=g[y].l||{},_=g[y].b||{},w=x.val,T=x.size,k=_.val,A=_.size;for(var M in g){if(o(T)&&g[M].r){var S=g[M].r.val,E=g[M].r.size;if(S>w){var L=(T*S+(E-r)*w)/(S-w),P=(E*(1-w)+(T-r)*(1-S))/(S-w);L+P>c+f&&(c=L,f=P)}}if(o(A)&&g[M].t){var I=g[M].t.val,O=g[M].t.size;if(I>k){var z=(A*I+(O-n)*k)/(I-k),D=(O*(1-k)+(A-n)*(1-I))/(I-k);z+D>d+h&&(d=z,h=D)}}}}}var R=u.constrain(r-a.l-a.r,2,64),F=u.constrain(n-a.t-a.b,2,64),B=Math.max(0,r-R),N=Math.max(0,n-F);if(B){var j=(c+f)/B;j>1&&(c/=j,f/=j)}if(N){var U=(d+h)/N;U>1&&(d/=U,h/=U)}if(i.l=Math.round(c),i.r=Math.round(f),i.t=Math.round(h),i.b=Math.round(d),i.p=Math.round(a.pad),i.w=Math.round(r)-i.l-i.r,i.h=Math.round(n)-i.t-i.b,!e._replotting&&b.didMarginChange(l,i)){\"_redrawFromAutoMarginCount\"in e?e._redrawFromAutoMarginCount++:e._redrawFromAutoMarginCount=1;var V=3*(1+Object.keys(m).length);if(e._redrawFromAutoMarginCount0&&(t._transitioningWithDuration=!0),t._transitionData._interruptCallbacks.push((function(){n=!0})),r.redraw&&t._transitionData._interruptCallbacks.push((function(){return s.call(\"redraw\",t)})),t._transitionData._interruptCallbacks.push((function(){t.emit(\"plotly_transitioninterrupted\",[])}));var a=0,o=0;function l(){return a++,function(){o++,n||o!==a||function(e){if(!t._transitionData)return;(function(t){if(t)for(;t.length;)t.shift()})(t._transitionData._interruptCallbacks),Promise.resolve().then((function(){if(r.redraw)return s.call(\"redraw\",t)})).then((function(){t._transitioning=!1,t._transitioningWithDuration=!1,t.emit(\"plotly_transitioned\",[])})).then(e)}(i)}}r.runFn(l),setTimeout(l())}))}],a=u.syncOrAsync(i,t);return a&&a.then||(a=Promise.resolve()),a.then((function(){return t}))}b.didMarginChange=function(t,e){for(var r=0;r1)return!0}return!1},b.graphJson=function(t,e,r,n,i,a){(i&&e&&!t._fullData||i&&!e&&!t._fullLayout)&&b.supplyDefaults(t);var o=i?t._fullData:t.data,s=i?t._fullLayout:t.layout,l=(t._transitionData||{})._frames;function c(t,e){if(\"function\"==typeof t)return e?\"_function_\":null;if(u.isPlainObject(t)){var n,i={};return Object.keys(t).sort().forEach((function(a){if(-1===[\"_\",\"[\"].indexOf(a.charAt(0)))if(\"function\"!=typeof t[a]){if(\"keepdata\"===r){if(\"src\"===a.substr(a.length-3))return}else if(\"keepstream\"===r){if(\"string\"==typeof(n=t[a+\"src\"])&&n.indexOf(\":\")>0&&!u.isPlainObject(t.stream))return}else if(\"keepall\"!==r&&\"string\"==typeof(n=t[a+\"src\"])&&n.indexOf(\":\")>0)return;i[a]=c(t[a],e)}else e&&(i[a]=\"_function\")})),i}return Array.isArray(t)?t.map((function(t){return c(t,e)})):u.isTypedArray(t)?u.simpleMap(t,u.identity):u.isJSDate(t)?u.ms2DateTimeLocal(+t):t}var f={data:(o||[]).map((function(t){var r=c(t);return e&&delete r.fit,r}))};if(!e&&(f.layout=c(s),i)){var h=s._size;f.layout.computed={margin:{b:h.b,l:h.l,r:h.r,t:h.t}}}return l&&(f.frames=c(l)),a&&(f.config=c(t._context,!0)),\"object\"===n?f:JSON.stringify(f)},b.modifyFrames=function(t,e){var r,n,i,a=t._transitionData._frames,o=t._transitionData._frameHash;for(r=0;r=0;a--)if(s[a].enabled){r._indexToPoints=s[a]._indexToPoints;break}n&&n.calc&&(o=n.calc(t,r))}Array.isArray(o)&&o[0]||(o=[{x:h,y:h}]),o[0].t||(o[0].t={}),o[0].trace=r,d[e]=o}}for(z(o,c,f),i=0;i1e-10?t:0}function h(t,e,r){e=e||0,r=r||0;for(var n=t.length,i=new Array(n),a=0;a0?r:1/0})),i=n.mod(r+1,e.length);return[e[r],e[i]]},findIntersectionXY:c,findXYatLength:function(t,e,r,n){var i=-e*r,a=e*e+1,o=2*(e*i-r),s=i*i+r*r-t*t,l=Math.sqrt(o*o-4*a*s),c=(-o+l)/(2*a),u=(-o-l)/(2*a);return[[c,e*c+i+n],[u,e*u+i+n]]},clampTiny:f,pathPolygon:function(t,e,r,n,i,a){return\"M\"+h(u(t,e,r,n),i,a).join(\"L\")},pathPolygonAnnulus:function(t,e,r,n,i,a,o){var s,l;t=90||s>90&&l>=450?1:u<=0&&h<=0?0:Math.max(u,h);e=s<=180&&l>=180||s>180&&l>=540?-1:c>=0&&f>=0?0:Math.min(c,f);r=s<=270&&l>=270||s>270&&l>=630?-1:u>=0&&h>=0?0:Math.min(u,h);n=l>=360?1:c<=0&&f<=0?0:Math.max(c,f);return[e,r,n,i]}(p),b=x[2]-x[0],_=x[3]-x[1],w=h/f,T=Math.abs(_/b);w>T?(d=f,y=(h-(g=f*T))/n.h/2,m=[o[0],o[1]],v=[s[0]+y,s[1]-y]):(g=h,y=(f-(d=h/T))/n.w/2,m=[o[0]+y,o[1]-y],v=[s[0],s[1]]),this.xLength2=d,this.yLength2=g,this.xDomain2=m,this.yDomain2=v;var k,A=this.xOffset2=n.l+n.w*m[0],M=this.yOffset2=n.t+n.h*(1-v[1]),S=this.radius=d/b,E=this.innerRadius=this.getHole(e)*S,L=this.cx=A-S*x[0],C=this.cy=M+S*x[3],P=this.cxx=L-A,I=this.cyy=C-M,O=i.side;\"counterclockwise\"===O?(k=O,O=\"top\"):\"clockwise\"===O&&(k=O,O=\"bottom\"),this.radialAxis=this.mockAxis(t,e,i,{_id:\"x\",side:O,_trueSide:k,domain:[E/n.w,S/n.w]}),this.angularAxis=this.mockAxis(t,e,a,{side:\"right\",domain:[0,Math.PI],autorange:!1}),this.doAutoRange(t,e),this.updateAngularAxis(t,e),this.updateRadialAxis(t,e),this.updateRadialAxisTitle(t,e),this.xaxis=this.mockCartesianAxis(t,e,{_id:\"x\",domain:m}),this.yaxis=this.mockCartesianAxis(t,e,{_id:\"y\",domain:v});var z=this.pathSubplot();this.clipPaths.forTraces.select(\"path\").attr(\"d\",z).attr(\"transform\",l(P,I)),r.frontplot.attr(\"transform\",l(A,M)).call(u.setClipUrl,this._hasClipOnAxisFalse?null:this.clipIds.forTraces,this.gd),r.bg.attr(\"d\",z).attr(\"transform\",l(L,C)).call(c.fill,e.bgcolor)},N.mockAxis=function(t,e,r,n){var i=o.extendFlat({},r,n);return d(i,e,t),i},N.mockCartesianAxis=function(t,e,r){var n=this,i=n.isSmith,a=r._id,s=o.extendFlat({type:\"linear\"},r);p(s,t);var l={x:[0,2],y:[1,3]};return s.setRange=function(){var t=n.sectorBBox,r=l[a],i=n.radialAxis._rl,o=(i[1]-i[0])/(1-n.getHole(e));s.range=[t[r[0]]*o,t[r[1]]*o]},s.isPtWithinRange=\"x\"!==a||i?function(){return!0}:function(t){return n.isPtInside(t)},s.setRange(),s.setScale(),s},N.doAutoRange=function(t,e){var r=this.gd,n=this.radialAxis,i=this.getRadial(e);g(r,n);var a=n.range;i.range=a.slice(),i._input.range=a.slice(),n._rl=[n.r2l(a[0],null,\"gregorian\"),n.r2l(a[1],null,\"gregorian\")]},N.updateRadialAxis=function(t,e){var r=this,n=r.gd,i=r.layers,a=r.radius,u=r.innerRadius,f=r.cx,p=r.cy,d=r.getRadial(e),g=D(r.getSector(e)[0],360),m=r.radialAxis,v=u90&&g<=270&&(m.tickangle=180);var x=y?function(t){var e=O(r,C([t.x,0]));return l(e[0]-f,e[1]-p)}:function(t){return l(m.l2p(t.x)+u,0)},b=y?function(t){return I(r,t.x,-1/0,1/0)}:function(t){return r.pathArc(m.r2p(t.x)+u)},_=j(d);if(r.radialTickLayout!==_&&(i[\"radial-axis\"].selectAll(\".xtick\").remove(),r.radialTickLayout=_),v){m.setScale();var w=0,T=y?(m.tickvals||[]).filter((function(t){return t>=0})).map((function(t){return h.tickText(m,t,!0,!1)})):h.calcTicks(m),k=y?T:h.clipEnds(m,T),A=h.getTickSigns(m)[2];y&&((\"top\"===m.ticks&&\"bottom\"===m.side||\"bottom\"===m.ticks&&\"top\"===m.side)&&(A=-A),\"top\"===m.ticks&&\"top\"===m.side&&(w=-m.ticklen),\"bottom\"===m.ticks&&\"bottom\"===m.side&&(w=m.ticklen)),h.drawTicks(n,m,{vals:T,layer:i[\"radial-axis\"],path:h.makeTickPath(m,0,A),transFn:x,crisp:!1}),h.drawGrid(n,m,{vals:k,layer:i[\"radial-grid\"],path:b,transFn:o.noop,crisp:!1}),h.drawLabels(n,m,{vals:T,layer:i[\"radial-axis\"],transFn:x,labelFns:h.makeLabelFns(m,w)})}var M=r.radialAxisAngle=r.vangles?F(U(R(d.angle),r.vangles)):d.angle,S=l(f,p),E=S+s(-M);V(i[\"radial-axis\"],v&&(d.showticklabels||d.ticks),{transform:E}),V(i[\"radial-grid\"],v&&d.showgrid,{transform:y?\"\":S}),V(i[\"radial-line\"].select(\"line\"),v&&d.showline,{x1:y?-a:u,y1:0,x2:a,y2:0,transform:E}).attr(\"stroke-width\",d.linewidth).call(c.stroke,d.linecolor)},N.updateRadialAxisTitle=function(t,e,r){if(!this.isSmith){var n=this.gd,i=this.radius,a=this.cx,o=this.cy,s=this.getRadial(e),l=this.id+\"title\",c=0;if(s.title){var f=u.bBox(this.layers[\"radial-axis\"].node()).height,h=s.title.font.size,p=s.side;c=\"top\"===p?h:\"counterclockwise\"===p?-(f+.4*h):f+.8*h}var d=void 0!==r?r:this.radialAxisAngle,g=R(d),m=Math.cos(g),v=Math.sin(g),y=a+i/2*m+c*v,b=o-i/2*v+c*m;this.layers[\"radial-axis-title\"]=x.draw(n,l,{propContainer:s,propName:this.id+\".radialaxis.title\",placeholder:z(n,\"Click to enter radial axis title\"),attributes:{x:y,y:b,\"text-anchor\":\"middle\"},transform:{rotate:-d}})}},N.updateAngularAxis=function(t,e){var r=this,n=r.gd,i=r.layers,a=r.radius,u=r.innerRadius,f=r.cx,p=r.cy,d=r.getAngular(e),g=r.angularAxis,m=r.isSmith;m||(r.fillViewInitialKey(\"angularaxis.rotation\",d.rotation),g.setGeometry(),g.setScale());var v=m?function(t){var e=O(r,C([0,t.x]));return Math.atan2(e[0]-f,e[1]-p)-Math.PI/2}:function(t){return g.t2g(t.x)};\"linear\"===g.type&&\"radians\"===g.thetaunit&&(g.tick0=F(g.tick0),g.dtick=F(g.dtick));var y=function(t){return l(f+a*Math.cos(t),p-a*Math.sin(t))},x=m?function(t){var e=O(r,C([0,t.x]));return l(e[0],e[1])}:function(t){return y(v(t))},b=m?function(t){var e=O(r,C([0,t.x])),n=Math.atan2(e[0]-f,e[1]-p)-Math.PI/2;return l(e[0],e[1])+s(-F(n))}:function(t){var e=v(t);return y(e)+s(-F(e))},_=m?function(t){return P(r,t.x,0,1/0)}:function(t){var e=v(t),r=Math.cos(e),n=Math.sin(e);return\"M\"+[f+u*r,p-u*n]+\"L\"+[f+a*r,p-a*n]},w=h.makeLabelFns(g,0).labelStandoff,T={xFn:function(t){var e=v(t);return Math.cos(e)*w},yFn:function(t){var e=v(t),r=Math.sin(e)>0?.2:1;return-Math.sin(e)*(w+t.fontSize*r)+Math.abs(Math.cos(e))*(t.fontSize*M)},anchorFn:function(t){var e=v(t),r=Math.cos(e);return Math.abs(r)<.1?\"middle\":r>0?\"start\":\"end\"},heightFn:function(t,e,r){var n=v(t);return-.5*(1+Math.sin(n))*r}},k=j(d);r.angularTickLayout!==k&&(i[\"angular-axis\"].selectAll(\".\"+g._id+\"tick\").remove(),r.angularTickLayout=k);var A,S=m?[1/0].concat(g.tickvals||[]).map((function(t){return h.tickText(g,t,!0,!1)})):h.calcTicks(g);if(m&&(S[0].text=\"\\u221e\",S[0].fontSize*=1.75),\"linear\"===e.gridshape?(A=S.map(v),o.angleDelta(A[0],A[1])<0&&(A=A.slice().reverse())):A=null,r.vangles=A,\"category\"===g.type&&(S=S.filter((function(t){return o.isAngleInsideSector(v(t),r.sectorInRad)}))),g.visible){var E=\"inside\"===g.ticks?-1:1,L=(g.linewidth||1)/2;h.drawTicks(n,g,{vals:S,layer:i[\"angular-axis\"],path:\"M\"+E*L+\",0h\"+E*g.ticklen,transFn:b,crisp:!1}),h.drawGrid(n,g,{vals:S,layer:i[\"angular-grid\"],path:_,transFn:o.noop,crisp:!1}),h.drawLabels(n,g,{vals:S,layer:i[\"angular-axis\"],repositionOnUpdate:!0,transFn:x,labelFns:T})}V(i[\"angular-line\"].select(\"path\"),d.showline,{d:r.pathSubplot(),transform:l(f,p)}).attr(\"stroke-width\",d.linewidth).call(c.stroke,d.linecolor)},N.updateFx=function(t,e){this.gd._context.staticPlot||(!this.isSmith&&(this.updateAngularDrag(t),this.updateRadialDrag(t,e,0),this.updateRadialDrag(t,e,1)),this.updateHoverAndMainDrag(t))},N.updateHoverAndMainDrag=function(t){var e,r,s=this,c=s.isSmith,u=s.gd,f=s.layers,h=t._zoomlayer,p=S.MINZOOM,d=S.OFFEDGE,g=s.radius,x=s.innerRadius,T=s.cx,k=s.cy,A=s.cxx,M=s.cyy,L=s.sectorInRad,C=s.vangles,P=s.radialAxis,I=E.clampTiny,O=E.findXYatLength,z=E.findEnclosingVertexAngles,D=S.cornerHalfWidth,R=S.cornerLen/2,F=m.makeDragger(f,\"path\",\"maindrag\",\"crosshair\");n.select(F).attr(\"d\",s.pathSubplot()).attr(\"transform\",l(T,k)),F.onmousemove=function(t){y.hover(u,t,s.id),u._fullLayout._lasthover=F,u._fullLayout._hoversubplot=s.id},F.onmouseout=function(t){u._dragging||v.unhover(u,t)};var B,N,j,U,V,H,q,G,Y,W={element:F,gd:u,subplot:s.id,plotinfo:{id:s.id,xaxis:s.xaxis,yaxis:s.yaxis},xaxes:[s.xaxis],yaxes:[s.yaxis]};function X(t,e){return Math.sqrt(t*t+e*e)}function Z(t,e){return X(t-A,e-M)}function J(t,e){return Math.atan2(M-e,t-A)}function K(t,e){return[t*Math.cos(e),t*Math.sin(-e)]}function Q(t,e){if(0===t)return s.pathSector(2*D);var r=R/t,n=e-r,i=e+r,a=Math.max(0,Math.min(t,g)),o=a-D,l=a+D;return\"M\"+K(o,n)+\"A\"+[o,o]+\" 0,0,0 \"+K(o,i)+\"L\"+K(l,i)+\"A\"+[l,l]+\" 0,0,1 \"+K(l,n)+\"Z\"}function $(t,e,r){if(0===t)return s.pathSector(2*D);var n,i,a=K(t,e),o=K(t,r),l=I((a[0]+o[0])/2),c=I((a[1]+o[1])/2);if(l&&c){var u=c/l,f=-1/u,h=O(D,u,l,c);n=O(R,f,h[0][0],h[0][1]),i=O(R,f,h[1][0],h[1][1])}else{var p,d;c?(p=R,d=D):(p=D,d=R),n=[[l-p,c-d],[l+p,c-d]],i=[[l-p,c+d],[l+p,c+d]]}return\"M\"+n.join(\"L\")+\"L\"+i.reverse().join(\"L\")+\"Z\"}function tt(t,e){return e=Math.max(Math.min(e,g),x),tp?(t-1&&1===t&&_(e,u,[s.xaxis],[s.yaxis],s.id,W),r.indexOf(\"event\")>-1&&y.click(u,e,s.id)}W.prepFn=function(t,n,a){var l=u._fullLayout.dragmode,f=F.getBoundingClientRect();u._fullLayout._calcInverseTransform(u);var p=u._fullLayout._invTransform;e=u._fullLayout._invScaleX,r=u._fullLayout._invScaleY;var d=o.apply3DTransform(p)(n-f.left,a-f.top);if(B=d[0],N=d[1],C){var v=E.findPolygonOffset(g,L[0],L[1],C);B+=A+v[0],N+=M+v[1]}switch(l){case\"zoom\":W.clickFn=st,c||(W.moveFn=C?it:rt,W.doneFn=at,function(){j=null,U=null,V=s.pathSubplot(),H=!1;var t=u._fullLayout[s.id];q=i(t.bgcolor).getLuminance(),(G=m.makeZoombox(h,q,T,k,V)).attr(\"fill-rule\",\"evenodd\"),Y=m.makeCorners(h,T,k),w(u)}());break;case\"select\":case\"lasso\":b(t,n,a,W,l)}},v.init(W)},N.updateRadialDrag=function(t,e,r){var i=this,c=i.gd,u=i.layers,f=i.radius,h=i.innerRadius,p=i.cx,d=i.cy,g=i.radialAxis,y=S.radialDragBoxSize,x=y/2;if(g.visible){var b,_,T,M=R(i.radialAxisAngle),E=g._rl,L=E[0],C=E[1],P=E[r],I=.75*(E[1]-E[0])/(1-i.getHole(e))/f;r?(b=p+(f+x)*Math.cos(M),_=d-(f+x)*Math.sin(M),T=\"radialdrag\"):(b=p+(h-x)*Math.cos(M),_=d-(h-x)*Math.sin(M),T=\"radialdrag-inner\");var O,z,D,B=m.makeRectDragger(u,T,\"crosshair\",-x,-x,y,y),N={element:B,gd:c};V(n.select(B),g.visible&&h0==(r?D>L:Dn?function(t){return t<=0}:function(t){return t>=0};t.c2g=function(r){var n=t.c2l(r)-e;return(s(n)?n:0)+o},t.g2c=function(r){return t.l2c(r+e-o)},t.g2p=function(t){return t*a},t.c2p=function(e){return t.g2p(t.c2g(e))}}}(t,e);break;case\"angularaxis\":!function(t,e){var r=t.type;if(\"linear\"===r){var i=t.d2c,s=t.c2d;t.d2c=function(t,e){return function(t,e){return\"degrees\"===e?a(t):t}(i(t),e)},t.c2d=function(t,e){return s(function(t,e){return\"degrees\"===e?o(t):t}(t,e))}}t.makeCalcdata=function(e,i){var a,o,s=e[i],l=e._length,c=function(r){return t.d2c(r,e.thetaunit)};if(s){if(n.isTypedArray(s)&&\"linear\"===r){if(l===s.length)return s;if(s.subarray)return s.subarray(0,l)}for(a=new Array(l),o=0;o0?1:0}function i(t){var e=t[0],r=t[1];if(!isFinite(e)||!isFinite(r))return[1,0];var n=(e+1)*(e+1)+r*r;return[(e*e+r*r-1)/n,2*r/n]}function a(t,e){var r=e[0],n=e[1];return[r*t.radius+t.cx,-n*t.radius+t.cy]}function o(t,e){return e*t.radius}e.exports={smith:i,reactanceArc:function(t,e,r,n){var s=a(t,i([r,e])),l=s[0],c=s[1],u=a(t,i([n,e])),f=u[0],h=u[1];if(0===e)return[\"M\"+l+\",\"+c,\"L\"+f+\",\"+h].join(\" \");var p=o(t,1/Math.abs(e));return[\"M\"+l+\",\"+c,\"A\"+p+\",\"+p+\" 0 0,\"+(e<0?1:0)+\" \"+f+\",\"+h].join(\" \")},resistanceArc:function(t,e,r,s){var l=o(t,1/(e+1)),c=a(t,i([e,r])),u=c[0],f=c[1],h=a(t,i([e,s])),p=h[0],d=h[1];if(n(r)!==n(s)){var g=a(t,i([e,0]));return[\"M\"+u+\",\"+f,\"A\"+l+\",\"+l+\" 0 0,\"+(00){for(var n=[],i=0;i=u&&(h.min=0,d.min=0,m.min=0,t.aaxis&&delete t.aaxis.min,t.baxis&&delete t.baxis.min,t.caxis&&delete t.caxis.min)}function g(t,e,r,n){var i=h[e._name];function o(r,n){return a.coerce(t,e,i,r,n)}o(\"uirevision\",n.uirevision),e.type=\"linear\";var p=o(\"color\"),d=p!==i.color.dflt?p:r.font.color,g=e._name.charAt(0).toUpperCase(),m=\"Component \"+g,v=o(\"title.text\",m);e._hovertitle=v===m?v:g,a.coerceFont(o,\"title.font\",{family:r.font.family,size:a.bigFont(r.font.size),color:d}),o(\"min\"),u(t,e,o,\"linear\"),l(t,e,o,\"linear\"),s(t,e,o,\"linear\"),c(t,e,o,{outerTicks:!0}),o(\"showticklabels\")&&(a.coerceFont(o,\"tickfont\",{family:r.font.family,size:r.font.size,color:d}),o(\"tickangle\"),o(\"tickformat\")),f(t,e,o,{dfltColor:p,bgColor:r.bgColor,blend:60,showLine:!0,showGrid:!0,noZeroLine:!0,attributes:i}),o(\"hoverformat\"),o(\"layer\")}e.exports=function(t,e,r){o(t,e,r,{type:\"ternary\",attributes:h,handleDefaults:d,font:e.font,paper_bgcolor:e.paper_bgcolor})}},{\"../../components/color\":366,\"../../lib\":503,\"../../plot_api/plot_template\":543,\"../cartesian/line_grid_defaults\":571,\"../cartesian/prefix_suffix_defaults\":573,\"../cartesian/tick_label_defaults\":578,\"../cartesian/tick_mark_defaults\":579,\"../cartesian/tick_value_defaults\":580,\"../subplot_defaults\":632,\"./layout_attributes\":635}],637:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"tinycolor2\"),a=t(\"../../registry\"),o=t(\"../../lib\"),s=o.strTranslate,l=o._,c=t(\"../../components/color\"),u=t(\"../../components/drawing\"),f=t(\"../cartesian/set_convert\"),h=t(\"../../lib/extend\").extendFlat,p=t(\"../plots\"),d=t(\"../cartesian/axes\"),g=t(\"../../components/dragelement\"),m=t(\"../../components/fx\"),v=t(\"../../components/dragelement/helpers\"),y=v.freeMode,x=v.rectMode,b=t(\"../../components/titles\"),_=t(\"../cartesian/select\").prepSelect,w=t(\"../cartesian/select\").selectOnClick,T=t(\"../cartesian/select\").clearSelect,k=t(\"../cartesian/select\").clearSelectionsCache,A=t(\"../cartesian/constants\");function M(t,e){this.id=t.id,this.graphDiv=t.graphDiv,this.init(e),this.makeFramework(e),this.aTickLayout=null,this.bTickLayout=null,this.cTickLayout=null}e.exports=M;var S=M.prototype;S.init=function(t){this.container=t._ternarylayer,this.defs=t._defs,this.layoutId=t._uid,this.traceHash={},this.layers={}},S.plot=function(t,e){var r=e[this.id],n=e._size;this._hasClipOnAxisFalse=!1;for(var i=0;iE*b?i=(a=b)*E:a=(i=x)/E,o=v*i/x,l=y*a/b,r=e.l+e.w*g-i/2,n=e.t+e.h*(1-m)-a/2,p.x0=r,p.y0=n,p.w=i,p.h=a,p.sum=_,p.xaxis={type:\"linear\",range:[w+2*k-_,_-w-2*T],domain:[g-o/2,g+o/2],_id:\"x\"},f(p.xaxis,p.graphDiv._fullLayout),p.xaxis.setScale(),p.xaxis.isPtWithinRange=function(t){return t.a>=p.aaxis.range[0]&&t.a<=p.aaxis.range[1]&&t.b>=p.baxis.range[1]&&t.b<=p.baxis.range[0]&&t.c>=p.caxis.range[1]&&t.c<=p.caxis.range[0]},p.yaxis={type:\"linear\",range:[w,_-T-k],domain:[m-l/2,m+l/2],_id:\"y\"},f(p.yaxis,p.graphDiv._fullLayout),p.yaxis.setScale(),p.yaxis.isPtWithinRange=function(){return!0};var A=p.yaxis.domain[0],M=p.aaxis=h({},t.aaxis,{range:[w,_-T-k],side:\"left\",tickangle:(+t.aaxis.tickangle||0)-30,domain:[A,A+l*E],anchor:\"free\",position:0,_id:\"y\",_length:i});f(M,p.graphDiv._fullLayout),M.setScale();var S=p.baxis=h({},t.baxis,{range:[_-w-k,T],side:\"bottom\",domain:p.xaxis.domain,anchor:\"free\",position:0,_id:\"x\",_length:i});f(S,p.graphDiv._fullLayout),S.setScale();var L=p.caxis=h({},t.caxis,{range:[_-w-T,k],side:\"right\",tickangle:(+t.caxis.tickangle||0)+30,domain:[A,A+l*E],anchor:\"free\",position:0,_id:\"y\",_length:i});f(L,p.graphDiv._fullLayout),L.setScale();var C=\"M\"+r+\",\"+(n+a)+\"h\"+i+\"l-\"+i/2+\",-\"+a+\"Z\";p.clipDef.select(\"path\").attr(\"d\",C),p.layers.plotbg.select(\"path\").attr(\"d\",C);var P=\"M0,\"+a+\"h\"+i+\"l-\"+i/2+\",-\"+a+\"Z\";p.clipDefRelative.select(\"path\").attr(\"d\",P);var I=s(r,n);p.plotContainer.selectAll(\".scatterlayer,.maplayer\").attr(\"transform\",I),p.clipDefRelative.select(\"path\").attr(\"transform\",null);var O=s(r-S._offset,n+a);p.layers.baxis.attr(\"transform\",O),p.layers.bgrid.attr(\"transform\",O);var z=s(r+i/2,n)+\"rotate(30)\"+s(0,-M._offset);p.layers.aaxis.attr(\"transform\",z),p.layers.agrid.attr(\"transform\",z);var D=s(r+i/2,n)+\"rotate(-30)\"+s(0,-L._offset);p.layers.caxis.attr(\"transform\",D),p.layers.cgrid.attr(\"transform\",D),p.drawAxes(!0),p.layers.aline.select(\"path\").attr(\"d\",M.showline?\"M\"+r+\",\"+(n+a)+\"l\"+i/2+\",-\"+a:\"M0,0\").call(c.stroke,M.linecolor||\"#000\").style(\"stroke-width\",(M.linewidth||0)+\"px\"),p.layers.bline.select(\"path\").attr(\"d\",S.showline?\"M\"+r+\",\"+(n+a)+\"h\"+i:\"M0,0\").call(c.stroke,S.linecolor||\"#000\").style(\"stroke-width\",(S.linewidth||0)+\"px\"),p.layers.cline.select(\"path\").attr(\"d\",L.showline?\"M\"+(r+i/2)+\",\"+n+\"l\"+i/2+\",\"+a:\"M0,0\").call(c.stroke,L.linecolor||\"#000\").style(\"stroke-width\",(L.linewidth||0)+\"px\"),p.graphDiv._context.staticPlot||p.initInteractions(),u.setClipUrl(p.layers.frontplot,p._hasClipOnAxisFalse?null:p.clipId,p.graphDiv)},S.drawAxes=function(t){var e=this.graphDiv,r=this.id.substr(7)+\"title\",n=this.layers,i=this.aaxis,a=this.baxis,o=this.caxis;if(this.drawAx(i),this.drawAx(a),this.drawAx(o),t){var s=Math.max(i.showticklabels?i.tickfont.size/2:0,(o.showticklabels?.75*o.tickfont.size:0)+(\"outside\"===o.ticks?.87*o.ticklen:0)),c=(a.showticklabels?a.tickfont.size:0)+(\"outside\"===a.ticks?a.ticklen:0)+3;n[\"a-title\"]=b.draw(e,\"a\"+r,{propContainer:i,propName:this.id+\".aaxis.title\",placeholder:l(e,\"Click to enter Component A title\"),attributes:{x:this.x0+this.w/2,y:this.y0-i.title.font.size/3-s,\"text-anchor\":\"middle\"}}),n[\"b-title\"]=b.draw(e,\"b\"+r,{propContainer:a,propName:this.id+\".baxis.title\",placeholder:l(e,\"Click to enter Component B title\"),attributes:{x:this.x0-c,y:this.y0+this.h+.83*a.title.font.size+c,\"text-anchor\":\"middle\"}}),n[\"c-title\"]=b.draw(e,\"c\"+r,{propContainer:o,propName:this.id+\".caxis.title\",placeholder:l(e,\"Click to enter Component C title\"),attributes:{x:this.x0+this.w+c,y:this.y0+this.h+.83*o.title.font.size+c,\"text-anchor\":\"middle\"}})}},S.drawAx=function(t){var e,r=this.graphDiv,n=t._name,i=n.charAt(0),a=t._id,s=this.layers[n],l=i+\"tickLayout\",c=(e=t).ticks+String(e.ticklen)+String(e.showticklabels);this[l]!==c&&(s.selectAll(\".\"+a+\"tick\").remove(),this[l]=c),t.setScale();var u=d.calcTicks(t),f=d.clipEnds(t,u),h=d.makeTransTickFn(t),p=d.getTickSigns(t)[2],g=o.deg2rad(30),m=p*(t.linewidth||1)/2,v=p*t.ticklen,y=this.w,x=this.h,b=\"b\"===i?\"M0,\"+m+\"l\"+Math.sin(g)*v+\",\"+Math.cos(g)*v:\"M\"+m+\",0l\"+Math.cos(g)*v+\",\"+-Math.sin(g)*v,_={a:\"M0,0l\"+x+\",-\"+y/2,b:\"M0,0l-\"+y/2+\",-\"+x,c:\"M0,0l-\"+x+\",\"+y/2}[i];d.drawTicks(r,t,{vals:\"inside\"===t.ticks?f:u,layer:s,path:b,transFn:h,crisp:!1}),d.drawGrid(r,t,{vals:f,layer:this.layers[i+\"grid\"],path:_,transFn:h,crisp:!1}),d.drawLabels(r,t,{vals:u,layer:s,transFn:h,labelFns:d.makeLabelFns(t,0,30)})};var L=A.MINZOOM/2+.87,C=\"m-0.87,.5h\"+L+\"v3h-\"+(L+5.2)+\"l\"+(L/2+2.6)+\",-\"+(.87*L+4.5)+\"l2.6,1.5l-\"+L/2+\",\"+.87*L+\"Z\",P=\"m0.87,.5h-\"+L+\"v3h\"+(L+5.2)+\"l-\"+(L/2+2.6)+\",-\"+(.87*L+4.5)+\"l-2.6,1.5l\"+L/2+\",\"+.87*L+\"Z\",I=\"m0,1l\"+L/2+\",\"+.87*L+\"l2.6,-1.5l-\"+(L/2+2.6)+\",-\"+(.87*L+4.5)+\"l-\"+(L/2+2.6)+\",\"+(.87*L+4.5)+\"l2.6,1.5l\"+L/2+\",-\"+.87*L+\"Z\",O=!0;function z(t){n.select(t).selectAll(\".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners\").remove()}S.clearSelect=function(){k(this.dragOptions),T(this.dragOptions.gd)},S.initInteractions=function(){var t,e,r,n,f,h,p,d,v,b,T,k,M=this,S=M.layers.plotbg.select(\"path\").node(),L=M.graphDiv,D=L._fullLayout._zoomlayer;function R(t){var e={};return e[M.id+\".aaxis.min\"]=t.a,e[M.id+\".baxis.min\"]=t.b,e[M.id+\".caxis.min\"]=t.c,e}function F(t,e){var r=L._fullLayout.clickmode;z(L),2===t&&(L.emit(\"plotly_doubleclick\",null),a.call(\"_guiRelayout\",L,R({a:0,b:0,c:0}))),r.indexOf(\"select\")>-1&&1===t&&w(e,L,[M.xaxis],[M.yaxis],M.id,M.dragOptions),r.indexOf(\"event\")>-1&&m.click(L,e,M.id)}function B(t,e){return 1-e/M.h}function N(t,e){return 1-(t+(M.h-e)/Math.sqrt(3))/M.w}function j(t,e){return(t-(M.h-e)/Math.sqrt(3))/M.w}function U(i,a){var o=r+i*t,s=n+a*e,l=Math.max(0,Math.min(1,B(0,n),B(0,s))),c=Math.max(0,Math.min(1,N(r,n),N(o,s))),u=Math.max(0,Math.min(1,j(r,n),j(o,s))),g=(l/2+u)*M.w,m=(1-l/2-c)*M.w,y=(g+m)/2,x=m-g,_=(1-l)*M.h,w=_-x/E;x.2?\"rgba(0,0,0,0.4)\":\"rgba(255,255,255,0.3)\").duration(200),k.transition().style(\"opacity\",1).duration(200),b=!0),L.emit(\"plotly_relayouting\",R(p))}function V(){z(L),p!==f&&(a.call(\"_guiRelayout\",L,R(p)),O&&L.data&&L._context.showTips&&(o.notifier(l(L,\"Double-click to zoom back out\"),\"long\"),O=!1))}function H(t,e){var r=t/M.xaxis._m,n=e/M.yaxis._m,i=[(p={a:f.a-n,b:f.b+(r+n)/2,c:f.c-(r-n)/2}).a,p.b,p.c].sort(o.sorterAsc),a=i.indexOf(p.a),l=i.indexOf(p.b),c=i.indexOf(p.c);i[0]<0&&(i[1]+i[0]/2<0?(i[2]+=i[0]+i[1],i[0]=i[1]=0):(i[2]+=i[0]/2,i[1]+=i[0]/2,i[0]=0),p={a:i[a],b:i[l],c:i[c]},e=(f.a-p.a)*M.yaxis._m,t=(f.c-p.c-f.b+p.b)*M.xaxis._m);var h=s(M.x0+t,M.y0+e);M.plotContainer.selectAll(\".scatterlayer,.maplayer\").attr(\"transform\",h);var d=s(-t,-e);M.clipDefRelative.select(\"path\").attr(\"transform\",d),M.aaxis.range=[p.a,M.sum-p.b-p.c],M.baxis.range=[M.sum-p.a-p.c,p.b],M.caxis.range=[M.sum-p.a-p.b,p.c],M.drawAxes(!1),M._hasClipOnAxisFalse&&M.plotContainer.select(\".scatterlayer\").selectAll(\".trace\").call(u.hideOutsideRangePoints,M),L.emit(\"plotly_relayouting\",R(p))}function q(){a.call(\"_guiRelayout\",L,R(p))}this.dragOptions={element:S,gd:L,plotinfo:{id:M.id,domain:L._fullLayout[M.id].domain,xaxis:M.xaxis,yaxis:M.yaxis},subplot:M.id,prepFn:function(a,l,u){M.dragOptions.xaxes=[M.xaxis],M.dragOptions.yaxes=[M.yaxis],t=L._fullLayout._invScaleX,e=L._fullLayout._invScaleY;var g=M.dragOptions.dragmode=L._fullLayout.dragmode;y(g)?M.dragOptions.minDrag=1:M.dragOptions.minDrag=void 0,\"zoom\"===g?(M.dragOptions.moveFn=U,M.dragOptions.clickFn=F,M.dragOptions.doneFn=V,function(t,e,a){var l=S.getBoundingClientRect();r=e-l.left,n=a-l.top,L._fullLayout._calcInverseTransform(L);var u=L._fullLayout._invTransform,g=o.apply3DTransform(u)(r,n);r=g[0],n=g[1],f={a:M.aaxis.range[0],b:M.baxis.range[1],c:M.caxis.range[1]},p=f,h=M.aaxis.range[1]-f.a,d=i(M.graphDiv._fullLayout[M.id].bgcolor).getLuminance(),v=\"M0,\"+M.h+\"L\"+M.w/2+\", 0L\"+M.w+\",\"+M.h+\"Z\",b=!1,T=D.append(\"path\").attr(\"class\",\"zoombox\").attr(\"transform\",s(M.x0,M.y0)).style({fill:d>.2?\"rgba(0,0,0,0)\":\"rgba(255,255,255,0)\",\"stroke-width\":0}).attr(\"d\",v),k=D.append(\"path\").attr(\"class\",\"zoombox-corners\").attr(\"transform\",s(M.x0,M.y0)).style({fill:c.background,stroke:c.defaultLine,\"stroke-width\":1,opacity:0}).attr(\"d\",\"M0,0Z\"),M.clearSelect(L)}(0,l,u)):\"pan\"===g?(M.dragOptions.moveFn=H,M.dragOptions.clickFn=F,M.dragOptions.doneFn=q,f={a:M.aaxis.range[0],b:M.baxis.range[1],c:M.caxis.range[1]},p=f,M.clearSelect(L)):(x(g)||y(g))&&_(a,l,u,M.dragOptions,g)}},S.onmousemove=function(t){m.hover(L,t,M.id),L._fullLayout._lasthover=S,L._fullLayout._hoversubplot=M.id},S.onmouseout=function(t){L._dragging||g.unhover(L,t)},g.init(this.dragOptions)}},{\"../../components/color\":366,\"../../components/dragelement\":385,\"../../components/dragelement/helpers\":384,\"../../components/drawing\":388,\"../../components/fx\":406,\"../../components/titles\":464,\"../../lib\":503,\"../../lib/extend\":493,\"../../registry\":638,\"../cartesian/axes\":554,\"../cartesian/constants\":561,\"../cartesian/select\":575,\"../cartesian/set_convert\":576,\"../plots\":619,\"@plotly/d3\":58,tinycolor2:312}],638:[function(t,e,r){\"use strict\";var n=t(\"./lib/loggers\"),i=t(\"./lib/noop\"),a=t(\"./lib/push_unique\"),o=t(\"./lib/is_plain_object\"),s=t(\"./lib/dom\").addStyleRule,l=t(\"./lib/extend\"),c=t(\"./plots/attributes\"),u=t(\"./plots/layout_attributes\"),f=l.extendFlat,h=l.extendDeepAll;function p(t){var e=t.name,i=t.categories,a=t.meta;if(r.modules[e])n.log(\"Type \"+e+\" already registered\");else{r.subplotsRegistry[t.basePlotModule.name]||function(t){var e=t.name;if(r.subplotsRegistry[e])return void n.log(\"Plot type \"+e+\" already registered.\");for(var i in v(t),r.subplotsRegistry[e]=t,r.componentsRegistry)b(i,t.name)}(t.basePlotModule);for(var o={},l=0;l-1&&(f[p[r]].title={text:\"\"});for(r=0;r\")?\"\":e.html(t).text()}));return e.remove(),r}(T),T=(T=T.replace(/&(?!\\w+;|\\#[0-9]+;| \\#x[0-9A-F]+;)/g,\"&\")).replace(c,\"'\"),i.isIE()&&(T=(T=(T=T.replace(/\"/gi,\"'\")).replace(/(\\('#)([^']*)('\\))/gi,'(\"#$2\")')).replace(/(\\\\')/gi,'\"')),T}},{\"../components/color\":366,\"../components/drawing\":388,\"../constants/xmlns_namespaces\":480,\"../lib\":503,\"@plotly/d3\":58}],647:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t,e){for(var r=0;rf+c||!n(u))}for(var p=0;pa))return e}return void 0!==r?r:t.dflt},r.coerceColor=function(t,e,r){return i(e).isValid()?e:void 0!==r?r:t.dflt},r.coerceEnumerated=function(t,e,r){return t.coerceNumber&&(e=+e),-1!==t.values.indexOf(e)?e:void 0!==r?r:t.dflt},r.getValue=function(t,e){var r;return Array.isArray(t)?e0?e+=r:u<0&&(e-=r)}return e}function z(t){var e=u,r=t.b,i=O(t);return n.inbox(r-e,i-e,_+(i-e)/(i-r)-1)}var D=t[f+\"a\"],R=t[h+\"a\"];g=Math.abs(D.r2c(D.range[1])-D.r2c(D.range[0]));var F=n.getDistanceFunction(i,p,d,(function(t){return(p(t)+d(t))/2}));if(n.getClosest(m,F,t),!1!==t.index&&m[t.index].p!==c){k||(L=function(t){return Math.min(A(t),t.p-y.bargroupwidth/2)},C=function(t){return Math.max(M(t),t.p+y.bargroupwidth/2)});var B=m[t.index],N=v.base?B.b+B.s:B.s;t[h+\"0\"]=t[h+\"1\"]=R.c2p(B[h],!0),t[h+\"LabelVal\"]=N;var j=y.extents[y.extents.round(B.p)];t[f+\"0\"]=D.c2p(x?L(B):j[0],!0),t[f+\"1\"]=D.c2p(x?C(B):j[1],!0);var U=void 0!==B.orig_p;return t[f+\"LabelVal\"]=U?B.orig_p:B.p,t.labelLabel=l(D,t[f+\"LabelVal\"],v[f+\"hoverformat\"]),t.valueLabel=l(R,t[h+\"LabelVal\"],v[h+\"hoverformat\"]),t.baseLabel=l(R,B.b,v[h+\"hoverformat\"]),t.spikeDistance=(function(t){var e=u,r=t.b,i=O(t);return n.inbox(r-e,i-e,w+(i-e)/(i-r)-1)}(B)+function(t){return P(A(t),M(t),w)}(B))/2,t[f+\"Spike\"]=D.c2p(B.p,!0),o(B,v,t),t.hovertemplate=v.hovertemplate,t}}function f(t,e){var r=e.mcc||t.marker.color,n=e.mlcc||t.marker.line.color,i=s(t,e);return a.opacity(r)?r:a.opacity(n)&&i?n:void 0}e.exports={hoverPoints:function(t,e,r,n,a){var o=u(t,e,r,n,a);if(o){var s=o.cd,l=s[0].trace,c=s[o.index];return o.color=f(l,c),i.getComponentMethod(\"errorbars\",\"hoverInfo\")(c,l,o),[o]}},hoverOnBars:u,getTraceColor:f}},{\"../../components/color\":366,\"../../components/fx\":406,\"../../constants/numerical\":479,\"../../lib\":503,\"../../plots/cartesian/axes\":554,\"../../registry\":638,\"./helpers\":654}],656:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\").supplyDefaults,crossTraceDefaults:t(\"./defaults\").crossTraceDefaults,supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\"),crossTraceCalc:t(\"./cross_trace_calc\").crossTraceCalc,colorbar:t(\"../scatter/marker_colorbar\"),arraysToCalcdata:t(\"./arrays_to_calcdata\"),plot:t(\"./plot\").plot,style:t(\"./style\").style,styleOnSelect:t(\"./style\").styleOnSelect,hoverPoints:t(\"./hover\").hoverPoints,eventData:t(\"./event_data\"),selectPoints:t(\"./select\"),moduleType:\"trace\",name:\"bar\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"bar-like\",\"cartesian\",\"svg\",\"bar\",\"oriented\",\"errorBarsOK\",\"showLegend\",\"zoomScale\"],animatable:!0,meta:{}}},{\"../../plots/cartesian\":568,\"../scatter/marker_colorbar\":944,\"./arrays_to_calcdata\":647,\"./attributes\":648,\"./calc\":649,\"./cross_trace_calc\":651,\"./defaults\":652,\"./event_data\":653,\"./hover\":655,\"./layout_attributes\":657,\"./layout_defaults\":658,\"./plot\":659,\"./select\":660,\"./style\":662}],657:[function(t,e,r){\"use strict\";e.exports={barmode:{valType:\"enumerated\",values:[\"stack\",\"group\",\"overlay\",\"relative\"],dflt:\"group\",editType:\"calc\"},barnorm:{valType:\"enumerated\",values:[\"\",\"fraction\",\"percent\"],dflt:\"\",editType:\"calc\"},bargap:{valType:\"number\",min:0,max:1,editType:\"calc\"},bargroupgap:{valType:\"number\",min:0,max:1,dflt:0,editType:\"calc\"}}},{}],658:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"../../lib\"),o=t(\"./layout_attributes\");e.exports=function(t,e,r){function s(r,n){return a.coerce(t,e,o,r,n)}for(var l=!1,c=!1,u=!1,f={},h=s(\"barmode\"),p=0;p0}function S(t){return\"auto\"===t?0:t}function E(t,e){var r=Math.PI/180*e,n=Math.abs(Math.sin(r)),i=Math.abs(Math.cos(r));return{x:t.width*i+t.height*n,y:t.width*n+t.height*i}}function L(t,e,r,n,i,a){var o=!!a.isHorizontal,s=!!a.constrained,l=a.angle||0,c=a.anchor||\"end\",u=\"end\"===c,f=\"start\"===c,h=((a.leftToRight||0)+1)/2,p=1-h,d=i.width,g=i.height,m=Math.abs(e-t),v=Math.abs(n-r),y=m>2*_&&v>2*_?_:0;m-=2*y,v-=2*y;var x=S(l);\"auto\"!==l||d<=m&&g<=v||!(d>m||g>v)||(d>v||g>m)&&d.01?q:function(t,e,r){return r&&t===e?t:Math.abs(t-e)>=2?q(t):t>e?Math.ceil(t):Math.floor(t)};B=G(B,N,D),N=G(N,B,D),j=G(j,U,!D),U=G(U,j,!D)}var Y=A(a.ensureSingle(I,\"path\"),P,m,v);if(Y.style(\"vector-effect\",\"non-scaling-stroke\").attr(\"d\",isNaN((N-B)*(U-j))||V&&t._context.staticPlot?\"M0,0Z\":\"M\"+B+\",\"+j+\"V\"+U+\"H\"+N+\"V\"+j+\"Z\").call(l.setClipUrl,e.layerClipId,t),!P.uniformtext.mode&&R){var W=l.makePointStyleFns(f);l.singlePointStyle(c,Y,f,W,t)}!function(t,e,r,n,i,s,c,f,p,m,v){var w,T=e.xaxis,M=e.yaxis,C=t._fullLayout;function P(e,r,n){return a.ensureSingle(e,\"text\").text(r).attr({class:\"bartext bartext-\"+w,\"text-anchor\":\"middle\",\"data-notex\":1}).call(l.font,n).call(o.convertToTspans,t)}var I=n[0].trace,O=\"h\"===I.orientation,z=function(t,e,r,n,i){var o,s=e[0].trace;o=s.texttemplate?function(t,e,r,n,i){var o=e[0].trace,s=a.castOption(o,r,\"texttemplate\");if(!s)return\"\";var l,c,f,h,p=\"histogram\"===o.type,d=\"waterfall\"===o.type,g=\"funnel\"===o.type,m=\"h\"===o.orientation;m?(l=\"y\",c=i,f=\"x\",h=n):(l=\"x\",c=n,f=\"y\",h=i);function v(t){return u(h,h.c2l(t),!0).text}var y=e[r],x={};x.label=y.p,x.labelLabel=x[l+\"Label\"]=(_=y.p,u(c,c.c2l(_),!0).text);var _;var w=a.castOption(o,y.i,\"text\");(0===w||w)&&(x.text=w);x.value=y.s,x.valueLabel=x[f+\"Label\"]=v(y.s);var T={};b(T,o,y.i),(p||void 0===T.x)&&(T.x=m?x.value:x.label);(p||void 0===T.y)&&(T.y=m?x.label:x.value);(p||void 0===T.xLabel)&&(T.xLabel=m?x.valueLabel:x.labelLabel);(p||void 0===T.yLabel)&&(T.yLabel=m?x.labelLabel:x.valueLabel);d&&(x.delta=+y.rawS||y.s,x.deltaLabel=v(x.delta),x.final=y.v,x.finalLabel=v(x.final),x.initial=x.final-x.delta,x.initialLabel=v(x.initial));g&&(x.value=y.s,x.valueLabel=v(x.value),x.percentInitial=y.begR,x.percentInitialLabel=a.formatPercent(y.begR),x.percentPrevious=y.difR,x.percentPreviousLabel=a.formatPercent(y.difR),x.percentTotal=y.sumR,x.percenTotalLabel=a.formatPercent(y.sumR));var k=a.castOption(o,y.i,\"customdata\");k&&(x.customdata=k);return a.texttemplateString(s,x,t._d3locale,T,x,o._meta||{})}(t,e,r,n,i):s.textinfo?function(t,e,r,n){var i=t[0].trace,o=\"h\"===i.orientation,s=\"waterfall\"===i.type,l=\"funnel\"===i.type;function c(t){return u(o?r:n,+t,!0).text}var f,h=i.textinfo,p=t[e],d=h.split(\"+\"),g=[],m=function(t){return-1!==d.indexOf(t)};m(\"label\")&&g.push((v=t[e].p,u(o?n:r,v,!0).text));var v;m(\"text\")&&(0===(f=a.castOption(i,p.i,\"text\"))||f)&&g.push(f);if(s){var y=+p.rawS||p.s,x=p.v,b=x-y;m(\"initial\")&&g.push(c(b)),m(\"delta\")&&g.push(c(y)),m(\"final\")&&g.push(c(x))}if(l){m(\"value\")&&g.push(c(p.s));var _=0;m(\"percent initial\")&&_++,m(\"percent previous\")&&_++,m(\"percent total\")&&_++;var w=_>1;m(\"percent initial\")&&(f=a.formatPercent(p.begR),w&&(f+=\" of initial\"),g.push(f)),m(\"percent previous\")&&(f=a.formatPercent(p.difR),w&&(f+=\" of previous\"),g.push(f)),m(\"percent total\")&&(f=a.formatPercent(p.sumR),w&&(f+=\" of total\"),g.push(f))}return g.join(\"
\")}(e,r,n,i):g.getValue(s.text,r);return g.coerceString(y,o)}(C,n,i,T,M);w=function(t,e){var r=g.getValue(t.textposition,e);return g.coerceEnumerated(x,r)}(I,i);var D=\"stack\"===m.mode||\"relative\"===m.mode,R=n[i],F=!D||R._outmost;if(!z||\"none\"===w||(R.isBlank||s===c||f===p)&&(\"auto\"===w||\"inside\"===w))return void r.select(\"text\").remove();var B=C.font,N=d.getBarColor(n[i],I),j=d.getInsideTextFont(I,i,B,N),U=d.getOutsideTextFont(I,i,B),V=r.datum();O?\"log\"===T.type&&V.s0<=0&&(s=T.range[0]=G*(Z/Y):Z>=Y*(X/G);G>0&&Y>0&&(J||K||Q)?w=\"inside\":(w=\"outside\",H.remove(),H=null)}else w=\"inside\";if(!H){W=a.ensureUniformFontSize(t,\"outside\"===w?U:j);var $=(H=P(r,z,W)).attr(\"transform\");if(H.attr(\"transform\",\"\"),q=l.bBox(H.node()),G=q.width,Y=q.height,H.attr(\"transform\",$),G<=0||Y<=0)return void H.remove()}var tt,et,rt=I.textangle;\"outside\"===w?(et=\"both\"===I.constraintext||\"outside\"===I.constraintext,tt=function(t,e,r,n,i,a){var o,s=!!a.isHorizontal,l=!!a.constrained,c=a.angle||0,u=i.width,f=i.height,h=Math.abs(e-t),p=Math.abs(n-r);o=s?p>2*_?_:0:h>2*_?_:0;var d=1;l&&(d=s?Math.min(1,p/f):Math.min(1,h/u));var g=S(c),m=E(i,g),v=(s?m.x:m.y)/2,y=(i.left+i.right)/2,x=(i.top+i.bottom)/2,b=(t+e)/2,w=(r+n)/2,T=0,A=0,M=s?k(e,t):k(r,n);s?(b=e-M*o,T=M*v):(w=n+M*o,A=-M*v);return{textX:y,textY:x,targetX:b,targetY:w,anchorX:T,anchorY:A,scale:d,rotate:g}}(s,c,f,p,q,{isHorizontal:O,constrained:et,angle:rt})):(et=\"both\"===I.constraintext||\"inside\"===I.constraintext,tt=L(s,c,f,p,q,{isHorizontal:O,constrained:et,angle:rt,anchor:I.insidetextanchor}));tt.fontSize=W.size,h(\"histogram\"===I.type?\"bar\":I.type,tt,C),R.transform=tt,A(H,C,m,v).attr(\"transform\",a.getTextTransform(tt))}(t,e,I,r,p,B,N,j,U,m,v),e.layerClipId&&l.hideOutsideRangePoint(c,I.select(\"text\"),w,C,f.xcalendar,f.ycalendar)}));var j=!1===f.cliponaxis;l.setClipUrl(c,j?null:e.layerClipId,t)}));c.getComponentMethod(\"errorbars\",\"plot\")(t,I,e,m)},toMoveInsideBar:L}},{\"../../components/color\":366,\"../../components/drawing\":388,\"../../components/fx/helpers\":402,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../../plots/cartesian/axes\":554,\"../../registry\":638,\"./attributes\":648,\"./constants\":650,\"./helpers\":654,\"./style\":662,\"./uniform_text\":664,\"@plotly/d3\":58,\"fast-isnumeric\":190}],660:[function(t,e,r){\"use strict\";function n(t,e,r,n,i){var a=e.c2p(n?t.s0:t.p0,!0),o=e.c2p(n?t.s1:t.p1,!0),s=r.c2p(n?t.p0:t.s0,!0),l=r.c2p(n?t.p1:t.s1,!0);return i?[(a+o)/2,(s+l)/2]:n?[o,(s+l)/2]:[(a+o)/2,l]}e.exports=function(t,e){var r,i=t.cd,a=t.xaxis,o=t.yaxis,s=i[0].trace,l=\"funnel\"===s.type,c=\"h\"===s.orientation,u=[];if(!1===e)for(r=0;r1||0===i.bargap&&0===i.bargroupgap&&!t[0].trace.marker.line.width)&&n.select(this).attr(\"shape-rendering\",\"crispEdges\")})),e.selectAll(\"g.points\").each((function(e){d(n.select(this),e[0].trace,t)})),s.getComponentMethod(\"errorbars\",\"style\")(e)},styleTextPoints:g,styleOnSelect:function(t,e,r){var i=e[0].trace;i.selectedpoints?function(t,e,r){a.selectedPointStyle(t.selectAll(\"path\"),e),function(t,e,r){t.each((function(t){var i,s=n.select(this);if(t.selected){i=o.ensureUniformFontSize(r,m(s,t,e,r));var l=e.selected.textfont&&e.selected.textfont.color;l&&(i.color=l),a.font(s,i)}else a.selectedTextStyle(s,e)}))}(t.selectAll(\"text\"),e,r)}(r,i,t):(d(r,i,t),s.getComponentMethod(\"errorbars\",\"style\")(r))},getInsideTextFont:y,getOutsideTextFont:x,getBarColor:_,resizeText:l}},{\"../../components/color\":366,\"../../components/drawing\":388,\"../../lib\":503,\"../../registry\":638,\"./attributes\":648,\"./helpers\":654,\"./uniform_text\":664,\"@plotly/d3\":58}],663:[function(t,e,r){\"use strict\";var n=t(\"../../components/color\"),i=t(\"../../components/colorscale/helpers\").hasColorscale,a=t(\"../../components/colorscale/defaults\"),o=t(\"../../lib\").coercePattern;e.exports=function(t,e,r,s,l){var c=r(\"marker.color\",s),u=i(t,\"marker\");u&&a(t,e,l,r,{prefix:\"marker.\",cLetter:\"c\"}),r(\"marker.line.color\",n.defaultLine),i(t,\"marker.line\")&&a(t,e,l,r,{prefix:\"marker.line.\",cLetter:\"c\"}),r(\"marker.line.width\"),r(\"marker.opacity\"),o(r,\"marker.pattern\",c,u),r(\"selected.marker.color\"),r(\"unselected.marker.color\")}},{\"../../components/color\":366,\"../../components/colorscale/defaults\":376,\"../../components/colorscale/helpers\":377,\"../../lib\":503}],664:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\");function a(t){return\"_\"+t+\"Text_minsize\"}e.exports={recordMinTextSize:function(t,e,r){if(r.uniformtext.mode){var n=a(t),i=r.uniformtext.minsize,o=e.scale*e.fontSize;e.hide=o g.point\"}e.selectAll(s).each((function(t){var e=t.transform;e&&(e.scale=l&&e.hide?0:o/e.fontSize,n.select(this).select(\"text\").attr(\"transform\",i.getTextTransform(e)))}))}}}},{\"../../lib\":503,\"@plotly/d3\":58}],665:[function(t,e,r){\"use strict\";var n=t(\"../../plots/template_attributes\").hovertemplateAttrs,i=t(\"../../lib/extend\").extendFlat,a=t(\"../scatterpolar/attributes\"),o=t(\"../bar/attributes\");e.exports={r:a.r,theta:a.theta,r0:a.r0,dr:a.dr,theta0:a.theta0,dtheta:a.dtheta,thetaunit:a.thetaunit,base:i({},o.base,{}),offset:i({},o.offset,{}),width:i({},o.width,{}),text:i({},o.text,{}),hovertext:i({},o.hovertext,{}),marker:o.marker,hoverinfo:a.hoverinfo,hovertemplate:n(),selected:o.selected,unselected:o.unselected}},{\"../../lib/extend\":493,\"../../plots/template_attributes\":633,\"../bar/attributes\":648,\"../scatterpolar/attributes\":1e3}],666:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/helpers\").hasColorscale,i=t(\"../../components/colorscale/calc\"),a=t(\"../bar/arrays_to_calcdata\"),o=t(\"../bar/cross_trace_calc\").setGroupPositions,s=t(\"../scatter/calc_selection\"),l=t(\"../../registry\").traceIs,c=t(\"../../lib\").extendFlat;e.exports={calc:function(t,e){for(var r=t._fullLayout,o=e.subplot,l=r[o].radialaxis,c=r[o].angularaxis,u=l.makeCalcdata(e,\"r\"),f=c.makeCalcdata(e,\"theta\"),h=e._length,p=new Array(h),d=u,g=f,m=0;mh.range[1]&&(x+=Math.PI);if(n.getClosest(c,(function(t){return g(y,x,[t.rp0,t.rp1],[t.thetag0,t.thetag1],d)?m+Math.min(1,Math.abs(t.thetag1-t.thetag0)/v)-1+(t.rp1-y)/(t.rp1-t.rp0)-1:1/0}),t),!1!==t.index){var b=c[t.index];t.x0=t.x1=b.ct[0],t.y0=t.y1=b.ct[1];var _=i.extendFlat({},b,{r:b.s,theta:b.p});return o(b,u,t),s(_,u,f,t),t.hovertemplate=u.hovertemplate,t.color=a(u,b),t.xLabelVal=t.yLabelVal=void 0,b.s<0&&(t.idealAlign=\"left\"),[t]}}},{\"../../components/fx\":406,\"../../lib\":503,\"../../plots/polar/helpers\":621,\"../bar/hover\":655,\"../scatterpolar/hover\":1004}],669:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"barpolar\",basePlotModule:t(\"../../plots/polar\"),categories:[\"polar\",\"bar\",\"showLegend\"],attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\"),supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\").calc,crossTraceCalc:t(\"./calc\").crossTraceCalc,plot:t(\"./plot\"),colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"../scatterpolar/format_labels\"),style:t(\"../bar/style\").style,styleOnSelect:t(\"../bar/style\").styleOnSelect,hoverPoints:t(\"./hover\"),selectPoints:t(\"../bar/select\"),meta:{}}},{\"../../plots/polar\":622,\"../bar/select\":660,\"../bar/style\":662,\"../scatter/marker_colorbar\":944,\"../scatterpolar/format_labels\":1003,\"./attributes\":665,\"./calc\":666,\"./defaults\":667,\"./hover\":668,\"./layout_attributes\":670,\"./layout_defaults\":671,\"./plot\":672}],670:[function(t,e,r){\"use strict\";e.exports={barmode:{valType:\"enumerated\",values:[\"stack\",\"overlay\"],dflt:\"stack\",editType:\"calc\"},bargap:{valType:\"number\",dflt:.1,min:0,max:1,editType:\"calc\"}}},{}],671:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e,r){var a,o={};function s(r,o){return n.coerce(t[a]||{},e[a],i,r,o)}for(var l=0;l0?(c=o,u=l):(c=l,u=o);var f=[s.findEnclosingVertexAngles(c,t.vangles)[0],(c+u)/2,s.findEnclosingVertexAngles(u,t.vangles)[1]];return s.pathPolygonAnnulus(n,i,c,u,f,e,r)};return function(t,n,i,o){return a.pathAnnulus(t,n,i,o,e,r)}}(e),p=e.layers.frontplot.select(\"g.barlayer\");a.makeTraceGroups(p,r,\"trace bars\").each((function(){var r=n.select(this),s=a.ensureSingle(r,\"g\",\"points\").selectAll(\"g.point\").data(a.identity);s.enter().append(\"g\").style(\"vector-effect\",\"non-scaling-stroke\").style(\"stroke-miterlimit\",2).classed(\"point\",!0),s.exit().remove(),s.each((function(t){var e,r=n.select(this),o=t.rp0=u.c2p(t.s0),s=t.rp1=u.c2p(t.s1),p=t.thetag0=f.c2g(t.p0),d=t.thetag1=f.c2g(t.p1);if(i(o)&&i(s)&&i(p)&&i(d)&&o!==s&&p!==d){var g=u.c2g(t.s1),m=(p+d)/2;t.ct=[l.c2p(g*Math.cos(m)),c.c2p(g*Math.sin(m))],e=h(o,s,p,d)}else e=\"M0,0Z\";a.ensureSingle(r,\"path\").attr(\"d\",e)})),o.setClipUrl(r,e._hasClipOnAxisFalse?e.clipIds.forTraces:null,t)}))}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../plots/polar/helpers\":621,\"@plotly/d3\":58,\"fast-isnumeric\":190}],673:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\"),i=t(\"../bar/attributes\"),a=t(\"../../components/color/attributes\"),o=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,s=t(\"../../plots/template_attributes\").hovertemplateAttrs,l=t(\"../../lib/extend\").extendFlat,c=n.marker,u=c.line;e.exports={y:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},x:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},x0:{valType:\"any\",editType:\"calc+clearAxisTypes\"},y0:{valType:\"any\",editType:\"calc+clearAxisTypes\"},dx:{valType:\"number\",editType:\"calc\"},dy:{valType:\"number\",editType:\"calc\"},xperiod:n.xperiod,yperiod:n.yperiod,xperiod0:n.xperiod0,yperiod0:n.yperiod0,xperiodalignment:n.xperiodalignment,yperiodalignment:n.yperiodalignment,xhoverformat:o(\"x\"),yhoverformat:o(\"y\"),name:{valType:\"string\",editType:\"calc+clearAxisTypes\"},q1:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},median:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},q3:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},lowerfence:{valType:\"data_array\",editType:\"calc\"},upperfence:{valType:\"data_array\",editType:\"calc\"},notched:{valType:\"boolean\",editType:\"calc\"},notchwidth:{valType:\"number\",min:0,max:.5,dflt:.25,editType:\"calc\"},notchspan:{valType:\"data_array\",editType:\"calc\"},boxpoints:{valType:\"enumerated\",values:[\"all\",\"outliers\",\"suspectedoutliers\",!1],editType:\"calc\"},jitter:{valType:\"number\",min:0,max:1,editType:\"calc\"},pointpos:{valType:\"number\",min:-2,max:2,editType:\"calc\"},boxmean:{valType:\"enumerated\",values:[!0,\"sd\",!1],editType:\"calc\"},mean:{valType:\"data_array\",editType:\"calc\"},sd:{valType:\"data_array\",editType:\"calc\"},orientation:{valType:\"enumerated\",values:[\"v\",\"h\"],editType:\"calc+clearAxisTypes\"},quartilemethod:{valType:\"enumerated\",values:[\"linear\",\"exclusive\",\"inclusive\"],dflt:\"linear\",editType:\"calc\"},width:{valType:\"number\",min:0,dflt:0,editType:\"calc\"},marker:{outliercolor:{valType:\"color\",dflt:\"rgba(0, 0, 0, 0)\",editType:\"style\"},symbol:l({},c.symbol,{arrayOk:!1,editType:\"plot\"}),opacity:l({},c.opacity,{arrayOk:!1,dflt:1,editType:\"style\"}),size:l({},c.size,{arrayOk:!1,editType:\"calc\"}),color:l({},c.color,{arrayOk:!1,editType:\"style\"}),line:{color:l({},u.color,{arrayOk:!1,dflt:a.defaultLine,editType:\"style\"}),width:l({},u.width,{arrayOk:!1,dflt:0,editType:\"style\"}),outliercolor:{valType:\"color\",editType:\"style\"},outlierwidth:{valType:\"number\",min:0,dflt:1,editType:\"style\"},editType:\"style\"},editType:\"plot\"},line:{color:{valType:\"color\",editType:\"style\"},width:{valType:\"number\",min:0,dflt:2,editType:\"style\"},editType:\"plot\"},fillcolor:n.fillcolor,whiskerwidth:{valType:\"number\",min:0,max:1,dflt:.5,editType:\"calc\"},offsetgroup:i.offsetgroup,alignmentgroup:i.alignmentgroup,selected:{marker:n.selected.marker,editType:\"style\"},unselected:{marker:n.unselected.marker,editType:\"style\"},text:l({},n.text,{}),hovertext:l({},n.hovertext,{}),hovertemplate:s({}),hoveron:{valType:\"flaglist\",flags:[\"boxes\",\"points\"],dflt:\"boxes+points\",editType:\"style\"}}},{\"../../components/color/attributes\":365,\"../../lib/extend\":493,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/template_attributes\":633,\"../bar/attributes\":648,\"../scatter/attributes\":926}],674:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"../../plots/cartesian/align_period\"),o=t(\"../../lib\"),s=t(\"../../constants/numerical\").BADNUM,l=o._;e.exports=function(t,e){var r,c,y,x,b,_,w,T=t._fullLayout,k=i.getFromId(t,e.xaxis||\"x\"),A=i.getFromId(t,e.yaxis||\"y\"),M=[],S=\"violin\"===e.type?\"_numViolins\":\"_numBoxes\";\"h\"===e.orientation?(y=k,x=\"x\",b=A,_=\"y\",w=!!e.yperiodalignment):(y=A,x=\"y\",b=k,_=\"x\",w=!!e.xperiodalignment);var E,L,C,P,I,O,z=function(t,e,r,i){var s,l=e+\"0\"in t,c=\"d\"+e in t;if(e in t||l&&c){var u=r.makeCalcdata(t,e);return[a(t,r,e,u).vals,u]}s=l?t[e+\"0\"]:\"name\"in t&&(\"category\"===r.type||n(t.name)&&-1!==[\"linear\",\"log\"].indexOf(r.type)||o.isDateTime(t.name)&&\"date\"===r.type)?t.name:i;for(var f=\"multicategory\"===r.type?r.r2c_just_indices(s):r.d2c(s,0,t[e+\"calendar\"]),h=t._length,p=new Array(h),d=0;dE.uf};if(e._hasPreCompStats){var U=e[x],V=function(t){return y.d2c((e[t]||[])[r])},H=1/0,q=-1/0;for(r=0;r=E.q1&&E.q3>=E.med){var Y=V(\"lowerfence\");E.lf=Y!==s&&Y<=E.q1?Y:p(E,C,P);var W=V(\"upperfence\");E.uf=W!==s&&W>=E.q3?W:d(E,C,P);var X=V(\"mean\");E.mean=X!==s?X:P?o.mean(C,P):(E.q1+E.q3)/2;var Z=V(\"sd\");E.sd=X!==s&&Z>=0?Z:P?o.stdev(C,P,E.mean):E.q3-E.q1,E.lo=g(E),E.uo=m(E);var J=V(\"notchspan\");J=J!==s&&J>0?J:v(E,P),E.ln=E.med-J,E.un=E.med+J;var K=E.lf,Q=E.uf;e.boxpoints&&C.length&&(K=Math.min(K,C[0]),Q=Math.max(Q,C[P-1])),e.notched&&(K=Math.min(K,E.ln),Q=Math.max(Q,E.un)),E.min=K,E.max=Q}else{var $;o.warn([\"Invalid input - make sure that q1 <= median <= q3\",\"q1 = \"+E.q1,\"median = \"+E.med,\"q3 = \"+E.q3].join(\"\\n\")),$=E.med!==s?E.med:E.q1!==s?E.q3!==s?(E.q1+E.q3)/2:E.q1:E.q3!==s?E.q3:0,E.med=$,E.q1=E.q3=$,E.lf=E.uf=$,E.mean=E.sd=$,E.ln=E.un=$,E.min=E.max=$}H=Math.min(H,E.min),q=Math.max(q,E.max),E.pts2=L.filter(j),M.push(E)}}e._extremes[y._id]=i.findExtremes(y,[H,q],{padded:!0})}else{var tt=y.makeCalcdata(e,x),et=function(t,e){for(var r=t.length,n=new Array(r+1),i=0;i=0&&it0){var ut,ft;if((E={}).pos=E[_]=B[r],L=E.pts=nt[r].sort(f),P=(C=E[x]=L.map(h)).length,E.min=C[0],E.max=C[P-1],E.mean=o.mean(C,P),E.sd=o.stdev(C,P,E.mean),E.med=o.interp(C,.5),P%2&&(lt||ct))lt?(ut=C.slice(0,P/2),ft=C.slice(P/2+1)):ct&&(ut=C.slice(0,P/2+1),ft=C.slice(P/2)),E.q1=o.interp(ut,.5),E.q3=o.interp(ft,.5);else E.q1=o.interp(C,.25),E.q3=o.interp(C,.75);E.lf=p(E,C,P),E.uf=d(E,C,P),E.lo=g(E),E.uo=m(E);var ht=v(E,P);E.ln=E.med-ht,E.un=E.med+ht,at=Math.min(at,E.ln),ot=Math.max(ot,E.un),E.pts2=L.filter(j),M.push(E)}e._extremes[y._id]=i.findExtremes(y,e.notched?tt.concat([at,ot]):tt,{padded:!0})}return function(t,e){if(o.isArrayOrTypedArray(e.selectedpoints))for(var r=0;r0?(M[0].t={num:T[S],dPos:N,posLetter:_,valLetter:x,labels:{med:l(t,\"median:\"),min:l(t,\"min:\"),q1:l(t,\"q1:\"),q3:l(t,\"q3:\"),max:l(t,\"max:\"),mean:\"sd\"===e.boxmean?l(t,\"mean \\xb1 \\u03c3:\"):l(t,\"mean:\"),lf:l(t,\"lower fence:\"),uf:l(t,\"upper fence:\")}},T[S]++,M):[{t:{empty:!0}}]};var c={text:\"tx\",hovertext:\"htx\"};function u(t,e,r){for(var n in c)o.isArrayOrTypedArray(e[n])&&(Array.isArray(r)?o.isArrayOrTypedArray(e[n][r[0]])&&(t[c[n]]=e[n][r[0]][r[1]]):t[c[n]]=e[n][r])}function f(t,e){return t.v-e.v}function h(t){return t.v}function p(t,e,r){return 0===r?t.q1:Math.min(t.q1,e[Math.min(o.findBin(2.5*t.q1-1.5*t.q3,e,!0)+1,r-1)])}function d(t,e,r){return 0===r?t.q3:Math.max(t.q3,e[Math.max(o.findBin(2.5*t.q3-1.5*t.q1,e),0)])}function g(t){return 4*t.q1-3*t.q3}function m(t){return 4*t.q3-3*t.q1}function v(t,e){return 0===e?0:1.57*(t.q3-t.q1)/Math.sqrt(e)}},{\"../../constants/numerical\":479,\"../../lib\":503,\"../../plots/cartesian/align_period\":551,\"../../plots/cartesian/axes\":554,\"fast-isnumeric\":190}],675:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/axes\"),i=t(\"../../lib\"),a=t(\"../../plots/cartesian/constraints\").getAxisGroup,o=[\"v\",\"h\"];function s(t,e,r,o){var s,l,c,u=e.calcdata,f=e._fullLayout,h=o._id,p=h.charAt(0),d=[],g=0;for(s=0;s1,b=1-f[t+\"gap\"],_=1-f[t+\"groupgap\"];for(s=0;s0){var q=E.pointpos,G=E.jitter,Y=E.marker.size/2,W=0;q+G>=0&&((W=V*(q+G))>M?(H=!0,j=Y,B=W):W>R&&(j=Y,B=M)),W<=M&&(B=M);var X=0;q-G<=0&&((X=-V*(q-G))>S?(H=!0,U=Y,N=X):X>F&&(U=Y,N=S)),X<=S&&(N=S)}else B=M,N=S;var Z=new Array(c.length);for(l=0;l0?(m=\"v\",v=x>0?Math.min(_,b):Math.min(b)):x>0?(m=\"h\",v=Math.min(_)):v=0;if(v){e._length=v;var S=r(\"orientation\",m);e._hasPreCompStats?\"v\"===S&&0===x?(r(\"x0\",0),r(\"dx\",1)):\"h\"===S&&0===y&&(r(\"y0\",0),r(\"dy\",1)):\"v\"===S&&0===x?r(\"x0\"):\"h\"===S&&0===y&&r(\"y0\"),i.getComponentMethod(\"calendars\",\"handleTraceDefaults\")(t,e,[\"x\",\"y\"],a)}else e.visible=!1}function f(t,e,r,i){var a=i.prefix,o=n.coerce2(t,e,c,\"marker.outliercolor\"),s=r(\"marker.line.outliercolor\"),l=\"outliers\";e._hasPreCompStats?l=\"all\":(o||s)&&(l=\"suspectedoutliers\");var u=r(a+\"points\",l);u?(r(\"jitter\",\"all\"===u?.3:0),r(\"pointpos\",\"all\"===u?-1.5:0),r(\"marker.symbol\"),r(\"marker.opacity\"),r(\"marker.size\"),r(\"marker.color\",e.line.color),r(\"marker.line.color\"),r(\"marker.line.width\"),\"suspectedoutliers\"===u&&(r(\"marker.line.outliercolor\",e.marker.color),r(\"marker.line.outlierwidth\")),r(\"selected.marker.color\"),r(\"unselected.marker.color\"),r(\"selected.marker.size\"),r(\"unselected.marker.size\"),r(\"text\"),r(\"hovertext\")):delete e.marker;var f=r(\"hoveron\");\"all\"!==f&&-1===f.indexOf(\"points\")||r(\"hovertemplate\"),n.coerceSelectionMarkerOpacity(e,r)}e.exports={supplyDefaults:function(t,e,r,i){function s(r,i){return n.coerce(t,e,c,r,i)}if(u(t,e,s,i),!1!==e.visible){o(t,e,i,s),s(\"xhoverformat\"),s(\"yhoverformat\");var l=e._hasPreCompStats;l&&(s(\"lowerfence\"),s(\"upperfence\")),s(\"line.color\",(t.marker||{}).color||r),s(\"line.width\"),s(\"fillcolor\",a.addOpacity(e.line.color,.5));var h=!1;if(l){var p=s(\"mean\"),d=s(\"sd\");p&&p.length&&(h=!0,d&&d.length&&(h=\"sd\"))}s(\"boxmean\",h),s(\"whiskerwidth\"),s(\"width\"),s(\"quartilemethod\");var g=!1;if(l){var m=s(\"notchspan\");m&&m.length&&(g=!0)}else n.validate(t.notchwidth,c.notchwidth)&&(g=!0);s(\"notched\",g)&&s(\"notchwidth\"),f(t,e,s,{prefix:\"box\"})}},crossTraceDefaults:function(t,e){var r,i;function a(t){return n.coerce(i._input,i,c,t)}for(var o=0;ot.lo&&(x.so=!0)}return a}));h.enter().append(\"path\").classed(\"point\",!0),h.exit().remove(),h.call(a.translatePoints,o,s)}function l(t,e,r,a){var o,s,l=e.val,c=e.pos,u=!!c.rangebreaks,f=a.bPos,h=a.bPosPxOffset||0,p=r.boxmean||(r.meanline||{}).visible;Array.isArray(a.bdPos)?(o=a.bdPos[0],s=a.bdPos[1]):(o=a.bdPos,s=a.bdPos);var d=t.selectAll(\"path.mean\").data(\"box\"===r.type&&r.boxmean||\"violin\"===r.type&&r.box.visible&&r.meanline.visible?i.identity:[]);d.enter().append(\"path\").attr(\"class\",\"mean\").style({fill:\"none\",\"vector-effect\":\"non-scaling-stroke\"}),d.exit().remove(),d.each((function(t){var e=c.c2l(t.pos+f,!0),i=c.l2p(e-o)+h,a=c.l2p(e+s)+h,d=u?(i+a)/2:c.l2p(e)+h,g=l.c2p(t.mean,!0),m=l.c2p(t.mean-t.sd,!0),v=l.c2p(t.mean+t.sd,!0);\"h\"===r.orientation?n.select(this).attr(\"d\",\"M\"+g+\",\"+i+\"V\"+a+(\"sd\"===p?\"m0,0L\"+m+\",\"+d+\"L\"+g+\",\"+i+\"L\"+v+\",\"+d+\"Z\":\"\")):n.select(this).attr(\"d\",\"M\"+i+\",\"+g+\"H\"+a+(\"sd\"===p?\"m0,0L\"+d+\",\"+m+\"L\"+i+\",\"+g+\"L\"+d+\",\"+v+\"Z\":\"\"))}))}e.exports={plot:function(t,e,r,a){var c=e.xaxis,u=e.yaxis;i.makeTraceGroups(a,r,\"trace boxes\").each((function(t){var e,r,i=n.select(this),a=t[0],f=a.t,h=a.trace;(f.wdPos=f.bdPos*h.whiskerwidth,!0!==h.visible||f.empty)?i.remove():(\"h\"===h.orientation?(e=u,r=c):(e=c,r=u),o(i,{pos:e,val:r},h,f),s(i,{x:c,y:u},h,f),l(i,{pos:e,val:r},h,f))}))},plotBoxAndWhiskers:o,plotPoints:s,plotBoxMean:l}},{\"../../components/drawing\":388,\"../../lib\":503,\"@plotly/d3\":58}],683:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r,n,i=t.cd,a=t.xaxis,o=t.yaxis,s=[];if(!1===e)for(r=0;r=10)return null;for(var i=1/0,a=-1/0,o=e.length,s=0;s0?Math.floor:Math.ceil,I=L>0?Math.ceil:Math.floor,O=L>0?Math.min:Math.max,z=L>0?Math.max:Math.min,D=P(S+C),R=I(E-C),F=[[f=M(S)]];for(a=D;a*L=0;i--)a[u-i]=t[f][i],o[u-i]=e[f][i];for(s.push({x:a,y:o,bicubic:l}),i=f,a=[],o=[];i>=0;i--)a[f-i]=t[i][0],o[f-i]=e[i][0];return s.push({x:a,y:o,bicubic:c}),s}},{}],697:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/axes\"),i=t(\"../../lib/extend\").extendFlat;e.exports=function(t,e,r){var a,o,s,l,c,u,f,h,p,d,g,m,v,y,x=t[\"_\"+e],b=t[e+\"axis\"],_=b._gridlines=[],w=b._minorgridlines=[],T=b._boundarylines=[],k=t[\"_\"+r],A=t[r+\"axis\"];\"array\"===b.tickmode&&(b.tickvals=x.slice());var M=t._xctrl,S=t._yctrl,E=M[0].length,L=M.length,C=t._a.length,P=t._b.length;n.prepTicks(b),\"array\"===b.tickmode&&delete b.tickvals;var I=b.smoothing?3:1;function O(n){var i,a,o,s,l,c,u,f,p,d,g,m,v=[],y=[],x={};if(\"b\"===e)for(a=t.b2j(n),o=Math.floor(Math.max(0,Math.min(P-2,a))),s=a-o,x.length=P,x.crossLength=C,x.xy=function(e){return t.evalxy([],e,a)},x.dxy=function(e,r){return t.dxydi([],e,o,r,s)},i=0;i0&&(p=t.dxydi([],i-1,o,0,s),v.push(l[0]+p[0]/3),y.push(l[1]+p[1]/3),d=t.dxydi([],i-1,o,1,s),v.push(f[0]-d[0]/3),y.push(f[1]-d[1]/3)),v.push(f[0]),y.push(f[1]),l=f;else for(i=t.a2i(n),c=Math.floor(Math.max(0,Math.min(C-2,i))),u=i-c,x.length=C,x.crossLength=P,x.xy=function(e){return t.evalxy([],i,e)},x.dxy=function(e,r){return t.dxydj([],c,e,u,r)},a=0;a0&&(g=t.dxydj([],c,a-1,u,0),v.push(l[0]+g[0]/3),y.push(l[1]+g[1]/3),m=t.dxydj([],c,a-1,u,1),v.push(f[0]-m[0]/3),y.push(f[1]-m[1]/3)),v.push(f[0]),y.push(f[1]),l=f;return x.axisLetter=e,x.axis=b,x.crossAxis=A,x.value=n,x.constvar=r,x.index=h,x.x=v,x.y=y,x.smoothing=A.smoothing,x}function z(n){var i,a,o,s,l,c=[],u=[],f={};if(f.length=x.length,f.crossLength=k.length,\"b\"===e)for(o=Math.max(0,Math.min(P-2,n)),l=Math.min(1,Math.max(0,n-o)),f.xy=function(e){return t.evalxy([],e,n)},f.dxy=function(e,r){return t.dxydi([],e,o,r,l)},i=0;ix.length-1||_.push(i(z(o),{color:b.gridcolor,width:b.gridwidth}));for(h=u;hx.length-1||g<0||g>x.length-1))for(m=x[s],v=x[g],a=0;ax[x.length-1]||w.push(i(O(d),{color:b.minorgridcolor,width:b.minorgridwidth}));b.startline&&T.push(i(z(0),{color:b.startlinecolor,width:b.startlinewidth})),b.endline&&T.push(i(z(x.length-1),{color:b.endlinecolor,width:b.endlinewidth}))}else{for(l=5e-15,u=(c=[Math.floor((x[x.length-1]-b.tick0)/b.dtick*(1+l)),Math.ceil((x[0]-b.tick0)/b.dtick/(1+l))].sort((function(t,e){return t-e})))[0],f=c[1],h=u;h<=f;h++)p=b.tick0+b.dtick*h,_.push(i(O(p),{color:b.gridcolor,width:b.gridwidth}));for(h=u-1;hx[x.length-1]||w.push(i(O(d),{color:b.minorgridcolor,width:b.minorgridwidth}));b.startline&&T.push(i(O(x[0]),{color:b.startlinecolor,width:b.startlinewidth})),b.endline&&T.push(i(O(x[x.length-1]),{color:b.endlinecolor,width:b.endlinewidth}))}}},{\"../../lib/extend\":493,\"../../plots/cartesian/axes\":554}],698:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/axes\"),i=t(\"../../lib/extend\").extendFlat;e.exports=function(t,e){var r,a,o,s=e._labels=[],l=e._gridlines;for(r=0;re.length&&(t=t.slice(0,e.length)):t=[],i=0;i90&&(p-=180,l=-l),{angle:p,flip:l,p:t.c2p(n,e,r),offsetMultplier:c}}},{}],712:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../components/drawing\"),a=t(\"./map_1d_array\"),o=t(\"./makepath\"),s=t(\"./orient_text\"),l=t(\"../../lib/svg_text_utils\"),c=t(\"../../lib\"),u=c.strRotate,f=c.strTranslate,h=t(\"../../constants/alignment\");function p(t,e,r,i,s,l){var c=\"const-\"+s+\"-lines\",u=r.selectAll(\".\"+c).data(l);u.enter().append(\"path\").classed(c,!0).style(\"vector-effect\",\"non-scaling-stroke\"),u.each((function(r){var i=r,s=i.x,l=i.y,c=a([],s,t.c2p),u=a([],l,e.c2p),f=\"M\"+o(c,u,i.smoothing);n.select(this).attr(\"d\",f).style(\"stroke-width\",i.width).style(\"stroke\",i.color).style(\"fill\",\"none\")})),u.exit().remove()}function d(t,e,r,a,o,c,h,p){var d=c.selectAll(\"text.\"+p).data(h);d.enter().append(\"text\").classed(p,!0);var g=0,m={};return d.each((function(o,c){var h;if(\"auto\"===o.axis.tickangle)h=s(a,e,r,o.xy,o.dxy);else{var p=(o.axis.tickangle+180)*Math.PI/180;h=s(a,e,r,o.xy,[Math.cos(p),Math.sin(p)])}c||(m={angle:h.angle,flip:h.flip});var d=(o.endAnchor?-1:1)*h.flip,v=n.select(this).attr({\"text-anchor\":d>0?\"start\":\"end\",\"data-notex\":1}).call(i.font,o.font).text(o.text).call(l.convertToTspans,t),y=i.bBox(this);v.attr(\"transform\",f(h.p[0],h.p[1])+u(h.angle)+f(o.axis.labelpadding*d,.3*y.height)),g=Math.max(g,y.width+o.axis.labelpadding)})),d.exit().remove(),m.maxExtent=g,m}e.exports=function(t,e,r,i){var l=e.xaxis,u=e.yaxis,f=t._fullLayout._clips;c.makeTraceGroups(i,r,\"trace\").each((function(e){var r=n.select(this),i=e[0],h=i.trace,g=h.aaxis,m=h.baxis,y=c.ensureSingle(r,\"g\",\"minorlayer\"),x=c.ensureSingle(r,\"g\",\"majorlayer\"),b=c.ensureSingle(r,\"g\",\"boundarylayer\"),_=c.ensureSingle(r,\"g\",\"labellayer\");r.style(\"opacity\",h.opacity),p(l,u,x,g,\"a\",g._gridlines),p(l,u,x,m,\"b\",m._gridlines),p(l,u,y,g,\"a\",g._minorgridlines),p(l,u,y,m,\"b\",m._minorgridlines),p(l,u,b,g,\"a-boundary\",g._boundarylines),p(l,u,b,m,\"b-boundary\",m._boundarylines);var w=d(t,l,u,h,i,_,g._labels,\"a-label\"),T=d(t,l,u,h,i,_,m._labels,\"b-label\");!function(t,e,r,n,i,a,o,l){var u,f,h,p,d=c.aggNums(Math.min,null,r.a),g=c.aggNums(Math.max,null,r.a),m=c.aggNums(Math.min,null,r.b),y=c.aggNums(Math.max,null,r.b);u=.5*(d+g),f=m,h=r.ab2xy(u,f,!0),p=r.dxyda_rough(u,f),void 0===o.angle&&c.extendFlat(o,s(r,i,a,h,r.dxydb_rough(u,f)));v(t,e,r,n,h,p,r.aaxis,i,a,o,\"a-title\"),u=d,f=.5*(m+y),h=r.ab2xy(u,f,!0),p=r.dxydb_rough(u,f),void 0===l.angle&&c.extendFlat(l,s(r,i,a,h,r.dxyda_rough(u,f)));v(t,e,r,n,h,p,r.baxis,i,a,l,\"b-title\")}(t,_,h,i,l,u,w,T),function(t,e,r,n,i){var s,l,u,f,h=r.select(\"#\"+t._clipPathId);h.size()||(h=r.append(\"clipPath\").classed(\"carpetclip\",!0));var p=c.ensureSingle(h,\"path\",\"carpetboundary\"),d=e.clipsegments,g=[];for(f=0;f90&&y<270,b=n.select(this);b.text(h.title.text).call(l.convertToTspans,t),x&&(_=(-l.lineCount(b)+m)*g*a-_),b.attr(\"transform\",f(e.p[0],e.p[1])+u(e.angle)+f(0,_)).attr(\"text-anchor\",\"middle\").call(i.font,h.title.font)})),b.exit().remove()}},{\"../../components/drawing\":388,\"../../constants/alignment\":471,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"./makepath\":709,\"./map_1d_array\":710,\"./orient_text\":711,\"@plotly/d3\":58}],713:[function(t,e,r){\"use strict\";var n=t(\"./constants\"),i=t(\"../../lib/search\").findBin,a=t(\"./compute_control_points\"),o=t(\"./create_spline_evaluator\"),s=t(\"./create_i_derivative_evaluator\"),l=t(\"./create_j_derivative_evaluator\");e.exports=function(t){var e=t._a,r=t._b,c=e.length,u=r.length,f=t.aaxis,h=t.baxis,p=e[0],d=e[c-1],g=r[0],m=r[u-1],v=e[e.length-1]-e[0],y=r[r.length-1]-r[0],x=v*n.RELATIVE_CULL_TOLERANCE,b=y*n.RELATIVE_CULL_TOLERANCE;p-=x,d+=x,g-=b,m+=b,t.isVisible=function(t,e){return t>p&&tg&&ed||em},t.setScale=function(){var e=t._x,r=t._y,n=a(t._xctrl,t._yctrl,e,r,f.smoothing,h.smoothing);t._xctrl=n[0],t._yctrl=n[1],t.evalxy=o([t._xctrl,t._yctrl],c,u,f.smoothing,h.smoothing),t.dxydi=s([t._xctrl,t._yctrl],f.smoothing,h.smoothing),t.dxydj=l([t._xctrl,t._yctrl],f.smoothing,h.smoothing)},t.i2a=function(t){var r=Math.max(0,Math.floor(t[0]),c-2),n=t[0]-r;return(1-n)*e[r]+n*e[r+1]},t.j2b=function(t){var e=Math.max(0,Math.floor(t[1]),c-2),n=t[1]-e;return(1-n)*r[e]+n*r[e+1]},t.ij2ab=function(e){return[t.i2a(e[0]),t.j2b(e[1])]},t.a2i=function(t){var r=Math.max(0,Math.min(i(t,e),c-2)),n=e[r],a=e[r+1];return Math.max(0,Math.min(c-1,r+(t-n)/(a-n)))},t.b2j=function(t){var e=Math.max(0,Math.min(i(t,r),u-2)),n=r[e],a=r[e+1];return Math.max(0,Math.min(u-1,e+(t-n)/(a-n)))},t.ab2ij=function(e){return[t.a2i(e[0]),t.b2j(e[1])]},t.i2c=function(e,r){return t.evalxy([],e,r)},t.ab2xy=function(n,i,a){if(!a&&(ne[c-1]|ir[u-1]))return[!1,!1];var o=t.a2i(n),s=t.b2j(i),l=t.evalxy([],o,s);if(a){var f,h,p,d,g=0,m=0,v=[];ne[c-1]?(f=c-2,h=1,g=(n-e[c-1])/(e[c-1]-e[c-2])):h=o-(f=Math.max(0,Math.min(c-2,Math.floor(o)))),ir[u-1]?(p=u-2,d=1,m=(i-r[u-1])/(r[u-1]-r[u-2])):d=s-(p=Math.max(0,Math.min(u-2,Math.floor(s)))),g&&(t.dxydi(v,f,p,h,d),l[0]+=v[0]*g,l[1]+=v[1]*g),m&&(t.dxydj(v,f,p,h,d),l[0]+=v[0]*m,l[1]+=v[1]*m)}return l},t.c2p=function(t,e,r){return[e.c2p(t[0]),r.c2p(t[1])]},t.p2x=function(t,e,r){return[e.p2c(t[0]),r.p2c(t[1])]},t.dadi=function(t){var r=Math.max(0,Math.min(e.length-2,t));return e[r+1]-e[r]},t.dbdj=function(t){var e=Math.max(0,Math.min(r.length-2,t));return r[e+1]-r[e]},t.dxyda=function(e,r,n,i){var a=t.dxydi(null,e,r,n,i),o=t.dadi(e,n);return[a[0]/o,a[1]/o]},t.dxydb=function(e,r,n,i){var a=t.dxydj(null,e,r,n,i),o=t.dbdj(r,i);return[a[0]/o,a[1]/o]},t.dxyda_rough=function(e,r,n){var i=v*(n||.1),a=t.ab2xy(e+i,r,!0),o=t.ab2xy(e-i,r,!0);return[.5*(a[0]-o[0])/i,.5*(a[1]-o[1])/i]},t.dxydb_rough=function(e,r,n){var i=y*(n||.1),a=t.ab2xy(e,r+i,!0),o=t.ab2xy(e,r-i,!0);return[.5*(a[0]-o[0])/i,.5*(a[1]-o[1])/i]},t.dpdx=function(t){return t._m},t.dpdy=function(t){return t._m}}},{\"../../lib/search\":523,\"./compute_control_points\":701,\"./constants\":702,\"./create_i_derivative_evaluator\":703,\"./create_j_derivative_evaluator\":704,\"./create_spline_evaluator\":705}],714:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t,e,r){var i,a,o,s=[],l=[],c=t[0].length,u=t.length;function f(e,r){var n,i=0,a=0;return e>0&&void 0!==(n=t[r][e-1])&&(a++,i+=n),e0&&void 0!==(n=t[r-1][e])&&(a++,i+=n),r0&&a0&&i1e-5);return n.log(\"Smoother converged to\",k,\"after\",A,\"iterations\"),t}},{\"../../lib\":503}],715:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").isArray1D;e.exports=function(t,e,r){var i=r(\"x\"),a=i&&i.length,o=r(\"y\"),s=o&&o.length;if(!a&&!s)return!1;if(e._cheater=!i,a&&!n(i)||s&&!n(o))e._length=null;else{var l=a?i.length:1/0;s&&(l=Math.min(l,o.length)),e.a&&e.a.length&&(l=Math.min(l,e.a.length)),e.b&&e.b.length&&(l=Math.min(l,e.b.length)),e._length=l}return!0}},{\"../../lib\":503}],716:[function(t,e,r){\"use strict\";var n=t(\"../../plots/template_attributes\").hovertemplateAttrs,i=t(\"../scattergeo/attributes\"),a=t(\"../../components/colorscale/attributes\"),o=t(\"../../plots/attributes\"),s=t(\"../../components/color/attributes\").defaultLine,l=t(\"../../lib/extend\").extendFlat,c=i.marker.line;e.exports=l({locations:{valType:\"data_array\",editType:\"calc\"},locationmode:i.locationmode,z:{valType:\"data_array\",editType:\"calc\"},geojson:l({},i.geojson,{}),featureidkey:i.featureidkey,text:l({},i.text,{}),hovertext:l({},i.hovertext,{}),marker:{line:{color:l({},c.color,{dflt:s}),width:l({},c.width,{dflt:1}),editType:\"calc\"},opacity:{valType:\"number\",arrayOk:!0,min:0,max:1,dflt:1,editType:\"style\"},editType:\"calc\"},selected:{marker:{opacity:i.selected.marker.opacity,editType:\"plot\"},editType:\"plot\"},unselected:{marker:{opacity:i.unselected.marker.opacity,editType:\"plot\"},editType:\"plot\"},hoverinfo:l({},o.hoverinfo,{editType:\"calc\",flags:[\"location\",\"z\",\"text\",\"name\"]}),hovertemplate:n(),showlegend:l({},o.showlegend,{dflt:!1})},a(\"\",{cLetter:\"z\",editTypeOverride:\"calc\"}))},{\"../../components/color/attributes\":365,\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/template_attributes\":633,\"../scattergeo/attributes\":968}],717:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../constants/numerical\").BADNUM,a=t(\"../../components/colorscale/calc\"),o=t(\"../scatter/arrays_to_calcdata\"),s=t(\"../scatter/calc_selection\");function l(t){return t&&\"string\"==typeof t}e.exports=function(t,e){var r,c=e._length,u=new Array(c);r=e.geojson?function(t){return l(t)||n(t)}:l;for(var f=0;f\")}(t,f,o),[t]}},{\"../../lib\":503,\"../../plots/cartesian/axes\":554,\"./attributes\":716}],721:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../heatmap/colorbar\"),calc:t(\"./calc\"),calcGeoJSON:t(\"./plot\").calcGeoJSON,plot:t(\"./plot\").plot,style:t(\"./style\").style,styleOnSelect:t(\"./style\").styleOnSelect,hoverPoints:t(\"./hover\"),eventData:t(\"./event_data\"),selectPoints:t(\"./select\"),moduleType:\"trace\",name:\"choropleth\",basePlotModule:t(\"../../plots/geo\"),categories:[\"geo\",\"noOpacity\",\"showLegend\"],meta:{}}},{\"../../plots/geo\":589,\"../heatmap/colorbar\":795,\"./attributes\":716,\"./calc\":717,\"./defaults\":718,\"./event_data\":719,\"./hover\":720,\"./plot\":722,\"./select\":723,\"./style\":724}],722:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../lib/geo_location_utils\"),o=t(\"../../lib/topojson_utils\").getTopojsonFeatures,s=t(\"../../plots/cartesian/autorange\").findExtremes,l=t(\"./style\").style;e.exports={calcGeoJSON:function(t,e){for(var r=t[0].trace,n=e[r.geo],i=n._subplot,l=r.locationmode,c=r._length,u=\"geojson-id\"===l?a.extractTraceFeature(t):o(r,i.topojson),f=[],h=[],p=0;p=0;n--){var i=r[n].id;if(\"string\"==typeof i&&0===i.indexOf(\"water\"))for(var a=n+1;a=0;r--)t.removeLayer(e[r][1])},s.dispose=function(){var t=this.subplot.map;this._removeLayers(),t.removeSource(this.sourceId)},e.exports=function(t,e){var r=e[0].trace,i=new o(t,r.uid),a=i.sourceId,s=n(e),l=i.below=t.belowLookup[\"trace-\"+r.uid];return t.map.addSource(a,{type:\"geojson\",data:s.geojson}),i._addLayers(s,l),e[0].trace._glTrace=i,i}},{\"../../plots/mapbox/constants\":611,\"./convert\":726}],730:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/attributes\"),i=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,a=t(\"../../plots/template_attributes\").hovertemplateAttrs,o=t(\"../mesh3d/attributes\"),s=t(\"../../plots/attributes\"),l=t(\"../../lib/extend\").extendFlat,c={x:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},y:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},z:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},u:{valType:\"data_array\",editType:\"calc\"},v:{valType:\"data_array\",editType:\"calc\"},w:{valType:\"data_array\",editType:\"calc\"},sizemode:{valType:\"enumerated\",values:[\"scaled\",\"absolute\"],editType:\"calc\",dflt:\"scaled\"},sizeref:{valType:\"number\",editType:\"calc\",min:0},anchor:{valType:\"enumerated\",editType:\"calc\",values:[\"tip\",\"tail\",\"cm\",\"center\"],dflt:\"cm\"},text:{valType:\"string\",dflt:\"\",arrayOk:!0,editType:\"calc\"},hovertext:{valType:\"string\",dflt:\"\",arrayOk:!0,editType:\"calc\"},hovertemplate:a({editType:\"calc\"},{keys:[\"norm\"]}),uhoverformat:i(\"u\",1),vhoverformat:i(\"v\",1),whoverformat:i(\"w\",1),xhoverformat:i(\"x\"),yhoverformat:i(\"y\"),zhoverformat:i(\"z\"),showlegend:l({},s.showlegend,{dflt:!1})};l(c,n(\"\",{colorAttr:\"u/v/w norm\",showScaleDflt:!0,editTypeOverride:\"calc\"}));[\"opacity\",\"lightposition\",\"lighting\"].forEach((function(t){c[t]=o[t]})),c.hoverinfo=l({},s.hoverinfo,{editType:\"calc\",flags:[\"x\",\"y\",\"z\",\"u\",\"v\",\"w\",\"norm\",\"text\",\"name\"],dflt:\"x+y+z+norm+text+name\"}),c.transforms=void 0,e.exports=c},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/template_attributes\":633,\"../mesh3d/attributes\":867}],731:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/calc\");e.exports=function(t,e){for(var r=e.u,i=e.v,a=e.w,o=Math.min(e.x.length,e.y.length,e.z.length,r.length,i.length,a.length),s=-1/0,l=1/0,c=0;co.level||o.starts.length&&a===o.level)}break;case\"constraint\":if(n.prefixBoundary=!1,n.edgepaths.length)return;var s=n.x.length,l=n.y.length,c=-1/0,u=1/0;for(r=0;r\":p>c&&(n.prefixBoundary=!0);break;case\"<\":(pc||n.starts.length&&h===u)&&(n.prefixBoundary=!0);break;case\"][\":f=Math.min(p[0],p[1]),h=Math.max(p[0],p[1]),fc&&(n.prefixBoundary=!0)}}}},{}],738:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale\"),i=t(\"./make_color_map\"),a=t(\"./end_plus\");e.exports={min:\"zmin\",max:\"zmax\",calc:function(t,e,r){var o=e.contours,s=e.line,l=o.size||1,c=o.coloring,u=i(e,{isColorbar:!0});if(\"heatmap\"===c){var f=n.extractOpts(e);r._fillgradient=f.reversescale?n.flipScale(f.colorscale):f.colorscale,r._zrange=[f.min,f.max]}else\"fill\"===c&&(r._fillcolor=u);r._line={color:\"lines\"===c?u:s.color,width:!1!==o.showlines?s.width:0,dash:s.dash},r._levels={start:o.start,end:a(o),size:l}}}},{\"../../components/colorscale\":378,\"./end_plus\":746,\"./make_color_map\":751}],739:[function(t,e,r){\"use strict\";e.exports={BOTTOMSTART:[1,9,13,104,713],TOPSTART:[4,6,7,104,713],LEFTSTART:[8,12,14,208,1114],RIGHTSTART:[2,3,11,208,1114],NEWDELTA:[null,[-1,0],[0,-1],[-1,0],[1,0],null,[0,-1],[-1,0],[0,1],[0,1],null,[0,1],[1,0],[1,0],[0,-1]],CHOOSESADDLE:{104:[4,1],208:[2,8],713:[7,13],1114:[11,14]},SADDLEREMAINDER:{1:4,2:8,4:1,7:13,8:2,11:14,13:7,14:11},LABELDISTANCE:2,LABELINCREASE:10,LABELMIN:3,LABELMAX:10,LABELOPTIMIZER:{EDGECOST:1,ANGLECOST:1,NEIGHBORCOST:5,SAMELEVELFACTOR:10,SAMELEVELDISTANCE:5,MAXCOST:100,INITIALSEARCHPOINTS:10,ITERATIONS:5}}},{}],740:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"./label_defaults\"),a=t(\"../../components/color\"),o=a.addOpacity,s=a.opacity,l=t(\"../../constants/filter_ops\"),c=l.CONSTRAINT_REDUCTION,u=l.COMPARISON_OPS2;e.exports=function(t,e,r,a,l,f){var h,p,d,g=e.contours,m=r(\"contours.operation\");(g._operation=c[m],function(t,e){var r;-1===u.indexOf(e.operation)?(t(\"contours.value\",[0,1]),Array.isArray(e.value)?e.value.length>2?e.value=e.value.slice(2):0===e.length?e.value=[0,1]:e.length<2?(r=parseFloat(e.value[0]),e.value=[r,r+1]):e.value=[parseFloat(e.value[0]),parseFloat(e.value[1])]:n(e.value)&&(r=parseFloat(e.value),e.value=[r,r+1])):(t(\"contours.value\",0),n(e.value)||(Array.isArray(e.value)?e.value=parseFloat(e.value[0]):e.value=0))}(r,g),\"=\"===m?h=g.showlines=!0:(h=r(\"contours.showlines\"),d=r(\"fillcolor\",o((t.line||{}).color||l,.5))),h)&&(p=r(\"line.color\",d&&s(d)?o(e.fillcolor,1):l),r(\"line.width\",2),r(\"line.dash\"));r(\"line.smoothing\"),i(r,a,p,f)}},{\"../../components/color\":366,\"../../constants/filter_ops\":475,\"./label_defaults\":750,\"fast-isnumeric\":190}],741:[function(t,e,r){\"use strict\";var n=t(\"../../constants/filter_ops\"),i=t(\"fast-isnumeric\");function a(t,e){var r,a=Array.isArray(e);function o(t){return i(t)?+t:null}return-1!==n.COMPARISON_OPS2.indexOf(t)?r=o(a?e[0]:e):-1!==n.INTERVAL_OPS.indexOf(t)?r=a?[o(e[0]),o(e[1])]:[o(e),o(e)]:-1!==n.SET_OPS.indexOf(t)&&(r=a?e.map(o):[o(e)]),r}function o(t){return function(e){e=a(t,e);var r=Math.min(e[0],e[1]),n=Math.max(e[0],e[1]);return{start:r,end:n,size:n-r}}}function s(t){return function(e){return{start:e=a(t,e),end:1/0,size:1/0}}}e.exports={\"[]\":o(\"[]\"),\"][\":o(\"][\"),\">\":s(\">\"),\"<\":s(\"<\"),\"=\":s(\"=\")}},{\"../../constants/filter_ops\":475,\"fast-isnumeric\":190}],742:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,n){var i=n(\"contours.start\"),a=n(\"contours.end\"),o=!1===i||!1===a,s=r(\"contours.size\");!(o?e.autocontour=!0:r(\"autocontour\",!1))&&s||r(\"ncontours\")}},{}],743:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");function i(t){return n.extendFlat({},t,{edgepaths:n.extendDeep([],t.edgepaths),paths:n.extendDeep([],t.paths),starts:n.extendDeep([],t.starts)})}e.exports=function(t,e){var r,a,o,s=function(t){return t.reverse()},l=function(t){return t};switch(e){case\"=\":case\"<\":return t;case\">\":for(1!==t.length&&n.warn(\"Contour data invalid for the specified inequality operation.\"),a=t[0],r=0;r1e3){n.warn(\"Too many contours, clipping at 1000\",t);break}return l}},{\"../../lib\":503,\"./constraint_mapping\":741,\"./end_plus\":746}],746:[function(t,e,r){\"use strict\";e.exports=function(t){return t.end+t.size/1e6}},{}],747:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./constants\");function a(t,e,r,n){return Math.abs(t[0]-e[0])20&&e?208===t||1114===t?n=0===r[0]?1:-1:a=0===r[1]?1:-1:-1!==i.BOTTOMSTART.indexOf(t)?a=1:-1!==i.LEFTSTART.indexOf(t)?n=1:-1!==i.TOPSTART.indexOf(t)?a=-1:n=-1;return[n,a]}(f,r,e),p=[s(t,e,[-h[0],-h[1]])],d=t.z.length,g=t.z[0].length,m=e.slice(),v=h.slice();for(c=0;c<1e4;c++){if(f>20?(f=i.CHOOSESADDLE[f][(h[0]||h[1])<0?0:1],t.crossings[u]=i.SADDLEREMAINDER[f]):delete t.crossings[u],!(h=i.NEWDELTA[f])){n.log(\"Found bad marching index:\",f,e,t.level);break}p.push(s(t,e,h)),e[0]+=h[0],e[1]+=h[1],u=e.join(\",\"),a(p[p.length-1],p[p.length-2],o,l)&&p.pop();var y=h[0]&&(e[0]<0||e[0]>g-2)||h[1]&&(e[1]<0||e[1]>d-2);if(e[0]===m[0]&&e[1]===m[1]&&h[0]===v[0]&&h[1]===v[1]||r&&y)break;f=t.crossings[u]}1e4===c&&n.log(\"Infinite loop in contour?\");var x,b,_,w,T,k,A,M,S,E,L,C,P,I,O,z=a(p[0],p[p.length-1],o,l),D=0,R=.2*t.smoothing,F=[],B=0;for(c=1;c=B;c--)if((x=F[c])=B&&x+F[b]M&&S--,t.edgepaths[S]=L.concat(p,E));break}V||(t.edgepaths[M]=p.concat(E))}for(M=0;Mt?0:1)+(e[0][1]>t?0:2)+(e[1][1]>t?0:4)+(e[1][0]>t?0:8);return 5===r||10===r?t>(e[0][0]+e[0][1]+e[1][0]+e[1][1])/4?5===r?713:1114:5===r?104:208:15===r?0:r}e.exports=function(t){var e,r,a,o,s,l,c,u,f,h=t[0].z,p=h.length,d=h[0].length,g=2===p||2===d;for(r=0;r=0&&(n=y,s=l):Math.abs(r[1]-n[1])<.01?Math.abs(r[1]-y[1])<.01&&(y[0]-r[0])*(n[0]-y[0])>=0&&(n=y,s=l):i.log(\"endpt to newendpt is not vert. or horz.\",r,n,y)}if(r=n,s>=0)break;f+=\"L\"+n}if(s===t.edgepaths.length){i.log(\"unclosed perimeter path\");break}h=s,(d=-1===p.indexOf(h))&&(h=p[0],f+=\"Z\")}for(h=0;hn.center?n.right-s:s-n.left)/(u+Math.abs(Math.sin(c)*o)),p=(l>n.middle?n.bottom-l:l-n.top)/(Math.abs(f)+Math.cos(c)*o);if(h<1||p<1)return 1/0;var d=v.EDGECOST*(1/(h-1)+1/(p-1));d+=v.ANGLECOST*c*c;for(var g=s-u,m=l-f,y=s+u,x=l+f,b=0;b2*v.MAXCOST)break;p&&(s/=2),l=(o=c-s/2)+1.5*s}if(h<=v.MAXCOST)return u},r.addLabelData=function(t,e,r,n){var i=e.fontSize,a=e.width+i/3,o=Math.max(0,e.height-i/3),s=t.x,l=t.y,c=t.theta,u=Math.sin(c),f=Math.cos(c),h=function(t,e){return[s+t*f-e*u,l+t*u+e*f]},p=[h(-a/2,-o/2),h(-a/2,o/2),h(a/2,o/2),h(a/2,-o/2)];r.push({text:e.text,x:s,y:l,dy:e.dy,theta:c,level:e.level,width:a,height:o}),n.push(p)},r.drawLabels=function(t,e,r,a,o){var l=t.selectAll(\"text\").data(e,(function(t){return t.text+\",\"+t.x+\",\"+t.y+\",\"+t.theta}));if(l.exit().remove(),l.enter().append(\"text\").attr({\"data-notex\":1,\"text-anchor\":\"middle\"}).each((function(t){var e=t.x+Math.sin(t.theta)*t.dy,i=t.y-Math.cos(t.theta)*t.dy;n.select(this).text(t.text).attr({x:e,y:i,transform:\"rotate(\"+180*t.theta/Math.PI+\" \"+e+\" \"+i+\")\"}).call(s.convertToTspans,r)})),o){for(var c=\"\",u=0;ur.end&&(r.start=r.end=(r.start+r.end)/2),t._input.contours||(t._input.contours={}),i.extendFlat(t._input.contours,{start:r.start,end:r.end,size:r.size}),t._input.autocontour=!0}else if(\"constraint\"!==r.type){var c,u=r.start,f=r.end,h=t._input.contours;if(u>f&&(r.start=h.start=f,f=r.end=h.end=u,u=r.start),!(r.size>0))c=u===f?1:a(u,f,t.ncontours).dtick,h.size=r.size=c}}},{\"../../lib\":503,\"../../plots/cartesian/axes\":554}],755:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../components/drawing\"),a=t(\"../heatmap/style\"),o=t(\"./make_color_map\");e.exports=function(t){var e=n.select(t).selectAll(\"g.contour\");e.style(\"opacity\",(function(t){return t[0].trace.opacity})),e.each((function(t){var e=n.select(this),r=t[0].trace,a=r.contours,s=r.line,l=a.size||1,c=a.start,u=\"constraint\"===a.type,f=!u&&\"lines\"===a.coloring,h=!u&&\"fill\"===a.coloring,p=f||h?o(r):null;e.selectAll(\"g.contourlevel\").each((function(t){n.select(this).selectAll(\"path\").call(i.lineGroupStyle,s.width,f?p(t.level):s.color,s.dash)}));var d=a.labelfont;if(e.selectAll(\"g.contourlabels text\").each((function(t){i.font(n.select(this),{family:d.family,size:d.size,color:d.color||(f?p(t.level):s.color)})})),u)e.selectAll(\"g.contourfill path\").style(\"fill\",r.fillcolor);else if(h){var g;e.selectAll(\"g.contourfill path\").style(\"fill\",(function(t){return void 0===g&&(g=t.level),p(t.level+.5*l)})),void 0===g&&(g=c),e.selectAll(\"g.contourbg path\").style(\"fill\",p(g-.5*l))}})),a(t)}},{\"../../components/drawing\":388,\"../heatmap/style\":805,\"./make_color_map\":751,\"@plotly/d3\":58}],756:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/defaults\"),i=t(\"./label_defaults\");e.exports=function(t,e,r,a,o){var s,l=r(\"contours.coloring\"),c=\"\";\"fill\"===l&&(s=r(\"contours.showlines\")),!1!==s&&(\"lines\"!==l&&(c=r(\"line.color\",\"#000\")),r(\"line.width\",.5),r(\"line.dash\")),\"none\"!==l&&(!0!==t.showlegend&&(e.showlegend=!1),e._dfltShowLegend=!1,n(t,e,a,r,{prefix:\"\",cLetter:\"z\"})),r(\"line.smoothing\"),i(r,a,c,o)}},{\"../../components/colorscale/defaults\":376,\"./label_defaults\":750}],757:[function(t,e,r){\"use strict\";var n=t(\"../heatmap/attributes\"),i=t(\"../contour/attributes\"),a=t(\"../../components/colorscale/attributes\"),o=t(\"../../lib/extend\").extendFlat,s=i.contours;e.exports=o({carpet:{valType:\"string\",editType:\"calc\"},z:n.z,a:n.x,a0:n.x0,da:n.dx,b:n.y,b0:n.y0,db:n.dy,text:n.text,hovertext:n.hovertext,transpose:n.transpose,atype:n.xtype,btype:n.ytype,fillcolor:i.fillcolor,autocontour:i.autocontour,ncontours:i.ncontours,contours:{type:s.type,start:s.start,end:s.end,size:s.size,coloring:{valType:\"enumerated\",values:[\"fill\",\"lines\",\"none\"],dflt:\"fill\",editType:\"calc\"},showlines:s.showlines,showlabels:s.showlabels,labelfont:s.labelfont,labelformat:s.labelformat,operation:s.operation,value:s.value,editType:\"calc\",impliedEdits:{autocontour:!1}},line:{color:i.line.color,width:i.line.width,dash:i.line.dash,smoothing:i.line.smoothing,editType:\"plot\"},transforms:void 0},a(\"\",{cLetter:\"z\",autoColorDflt:!1}))},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../contour/attributes\":735,\"../heatmap/attributes\":792}],758:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/calc\"),i=t(\"../../lib\"),a=t(\"../heatmap/convert_column_xyz\"),o=t(\"../heatmap/clean_2d_array\"),s=t(\"../heatmap/interp2d\"),l=t(\"../heatmap/find_empties\"),c=t(\"../heatmap/make_bound_array\"),u=t(\"./defaults\"),f=t(\"../carpet/lookup_carpetid\"),h=t(\"../contour/set_contours\");e.exports=function(t,e){var r=e._carpetTrace=f(t,e);if(r&&r.visible&&\"legendonly\"!==r.visible){if(!e.a||!e.b){var p=t.data[r.index],d=t.data[e.index];d.a||(d.a=p.a),d.b||(d.b=p.b),u(d,e,e._defaultColor,t._fullLayout)}var g=function(t,e){var r,u,f,h,p,d,g,m=e._carpetTrace,v=m.aaxis,y=m.baxis;v._minDtick=0,y._minDtick=0,i.isArray1D(e.z)&&a(e,v,y,\"a\",\"b\",[\"z\"]);r=e._a=e._a||e.a,h=e._b=e._b||e.b,r=r?v.makeCalcdata(e,\"_a\"):[],h=h?y.makeCalcdata(e,\"_b\"):[],u=e.a0||0,f=e.da||1,p=e.b0||0,d=e.db||1,g=e._z=o(e._z||e.z,e.transpose),e._emptypoints=l(g),s(g,e._emptypoints);var x=i.maxRowLength(g),b=\"scaled\"===e.xtype?\"\":r,_=c(e,b,u,f,x,v),w=\"scaled\"===e.ytype?\"\":h,T=c(e,w,p,d,g.length,y),k={a:_,b:T,z:g};\"levels\"===e.contours.type&&\"none\"!==e.contours.coloring&&n(t,e,{vals:g,containerStr:\"\",cLetter:\"z\"});return[k]}(t,e);return h(e,e._z),g}}},{\"../../components/colorscale/calc\":374,\"../../lib\":503,\"../carpet/lookup_carpetid\":708,\"../contour/set_contours\":754,\"../heatmap/clean_2d_array\":794,\"../heatmap/convert_column_xyz\":796,\"../heatmap/find_empties\":798,\"../heatmap/interp2d\":801,\"../heatmap/make_bound_array\":803,\"./defaults\":759}],759:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../heatmap/xyz_defaults\"),a=t(\"./attributes\"),o=t(\"../contour/constraint_defaults\"),s=t(\"../contour/contours_defaults\"),l=t(\"../contour/style_defaults\");e.exports=function(t,e,r,c){function u(r,i){return n.coerce(t,e,a,r,i)}if(u(\"carpet\"),t.a&&t.b){if(!i(t,e,u,c,\"a\",\"b\"))return void(e.visible=!1);u(\"text\"),\"constraint\"===u(\"contours.type\")?o(t,e,u,c,r,{hasHover:!1}):(s(t,e,u,(function(r){return n.coerce2(t,e,a,r)})),l(t,e,u,c,{hasHover:!1}))}else e._defaultColor=r,e._length=null}},{\"../../lib\":503,\"../contour/constraint_defaults\":740,\"../contour/contours_defaults\":742,\"../contour/style_defaults\":756,\"../heatmap/xyz_defaults\":807,\"./attributes\":757}],760:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../contour/colorbar\"),calc:t(\"./calc\"),plot:t(\"./plot\"),style:t(\"../contour/style\"),moduleType:\"trace\",name:\"contourcarpet\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"cartesian\",\"svg\",\"carpet\",\"contour\",\"symbols\",\"showLegend\",\"hasLines\",\"carpetDependent\",\"noHover\",\"noSortingByValue\"],meta:{}}},{\"../../plots/cartesian\":568,\"../contour/colorbar\":738,\"../contour/style\":755,\"./attributes\":757,\"./calc\":758,\"./defaults\":759,\"./plot\":761}],761:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../carpet/map_1d_array\"),a=t(\"../carpet/makepath\"),o=t(\"../../components/drawing\"),s=t(\"../../lib\"),l=t(\"../contour/make_crossings\"),c=t(\"../contour/find_all_paths\"),u=t(\"../contour/plot\"),f=t(\"../contour/constants\"),h=t(\"../contour/convert_to_constraints\"),p=t(\"../contour/empty_pathinfo\"),d=t(\"../contour/close_boundaries\"),g=t(\"../carpet/lookup_carpetid\"),m=t(\"../carpet/axis_aligned_line\");function v(t,e,r){var n=t.getPointAtLength(e),i=t.getPointAtLength(r),a=i.x-n.x,o=i.y-n.y,s=Math.sqrt(a*a+o*o);return[a/s,o/s]}function y(t){var e=Math.sqrt(t[0]*t[0]+t[1]*t[1]);return[t[0]/e,t[1]/e]}function x(t,e){var r=Math.abs(t[0]*e[0]+t[1]*e[1]);return Math.sqrt(1-r*r)/r}e.exports=function(t,e,r,b){var _=e.xaxis,w=e.yaxis;s.makeTraceGroups(b,r,\"contour\").each((function(r){var b=n.select(this),T=r[0],k=T.trace,A=k._carpetTrace=g(t,k),M=t.calcdata[A.index][0];if(A.visible&&\"legendonly\"!==A.visible){var S=T.a,E=T.b,L=k.contours,C=p(L,e,T),P=\"constraint\"===L.type,I=L._operation,O=P?\"=\"===I?\"lines\":\"fill\":L.coloring,z=[[S[0],E[E.length-1]],[S[S.length-1],E[E.length-1]],[S[S.length-1],E[0]],[S[0],E[0]]];l(C);var D=1e-8*(S[S.length-1]-S[0]),R=1e-8*(E[E.length-1]-E[0]);c(C,D,R);var F,B,N,j,U=C;\"constraint\"===L.type&&(U=h(C,I)),function(t,e){var r,n,i,a,o,s,l,c,u;for(r=0;r=0;j--)F=M.clipsegments[j],B=i([],F.x,_.c2p),N=i([],F.y,w.c2p),B.reverse(),N.reverse(),V.push(a(B,N,F.bicubic));var H=\"M\"+V.join(\"L\")+\"Z\";!function(t,e,r,n,o,l){var c,u,f,h,p=s.ensureSingle(t,\"g\",\"contourbg\").selectAll(\"path\").data(\"fill\"!==l||o?[]:[0]);p.enter().append(\"path\"),p.exit().remove();var d=[];for(h=0;h=0&&(h=L,d=g):Math.abs(f[1]-h[1])=0&&(h=L,d=g):s.log(\"endpt to newendpt is not vert. or horz.\",f,h,L)}if(d>=0)break;y+=S(f,h),f=h}if(d===e.edgepaths.length){s.log(\"unclosed perimeter path\");break}u=d,(b=-1===x.indexOf(u))&&(u=x[0],y+=S(f,h)+\"Z\",f=null)}for(u=0;um&&(n.max=m);n.len=n.max-n.min}(this,r,t,n,c,e.height),!(n.len<(e.width+e.height)*f.LABELMIN)))for(var i=Math.min(Math.ceil(n.len/I),f.LABELMAX),a=0;a0?+p[u]:0),f.push({type:\"Feature\",geometry:{type:\"Point\",coordinates:v},properties:y})}}var b=o.extractOpts(e),_=b.reversescale?o.flipScale(b.colorscale):b.colorscale,w=_[0][1],T=[\"interpolate\",[\"linear\"],[\"heatmap-density\"],0,a.opacity(w)<1?w:a.addOpacity(w,0)];for(u=1;u<_.length;u++)T.push(_[u][0],_[u][1]);var k=[\"interpolate\",[\"linear\"],[\"get\",\"z\"],b.min,0,b.max,1];return i.extendFlat(c.heatmap.paint,{\"heatmap-weight\":d?k:1/(b.max-b.min),\"heatmap-color\":T,\"heatmap-radius\":g?{type:\"identity\",property:\"r\"}:e.radius,\"heatmap-opacity\":e.opacity}),c.geojson={type:\"FeatureCollection\",features:f},c.heatmap.layout.visibility=\"visible\",c}},{\"../../components/color\":366,\"../../components/colorscale\":378,\"../../constants/numerical\":479,\"../../lib\":503,\"../../lib/geojson_utils\":497,\"fast-isnumeric\":190}],765:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../components/colorscale/defaults\"),a=t(\"./attributes\");e.exports=function(t,e,r,o){function s(r,i){return n.coerce(t,e,a,r,i)}var l=s(\"lon\")||[],c=s(\"lat\")||[],u=Math.min(l.length,c.length);u?(e._length=u,s(\"z\"),s(\"radius\"),s(\"below\"),s(\"text\"),s(\"hovertext\"),s(\"hovertemplate\"),i(t,e,o,s,{prefix:\"\",cLetter:\"z\"})):e.visible=!1}},{\"../../components/colorscale/defaults\":376,\"../../lib\":503,\"./attributes\":762}],766:[function(t,e,r){\"use strict\";e.exports=function(t,e){return t.lon=e.lon,t.lat=e.lat,t.z=e.z,t}},{}],767:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/axes\"),i=t(\"../scattermapbox/hover\").hoverPoints,a=t(\"../scattermapbox/hover\").getExtraText;e.exports=function(t,e,r){var o=i(t,e,r);if(o){var s=o[0],l=s.cd,c=l[0].trace,u=l[s.index];if(delete s.color,\"z\"in u){var f=s.subplot.mockAxis;s.z=u.z,s.zLabel=n.tickText(f,f.c2l(u.z),\"hover\").text}return s.extraText=a(c,u,l[0].t.labels),[s]}}},{\"../../plots/cartesian/axes\":554,\"../scattermapbox/hover\":996}],768:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../heatmap/colorbar\"),formatLabels:t(\"../scattermapbox/format_labels\"),calc:t(\"./calc\"),plot:t(\"./plot\"),hoverPoints:t(\"./hover\"),eventData:t(\"./event_data\"),getBelow:function(t,e){for(var r=e.getMapLayers(),n=0;n=0;r--)t.removeLayer(e[r][1])},o.dispose=function(){var t=this.subplot.map;this._removeLayers(),t.removeSource(this.sourceId)},e.exports=function(t,e){var r=e[0].trace,i=new a(t,r.uid),o=i.sourceId,s=n(e),l=i.below=t.belowLookup[\"trace-\"+r.uid];return t.map.addSource(o,{type:\"geojson\",data:s.geojson}),i._addLayers(s,l),i}},{\"../../plots/mapbox/constants\":611,\"./convert\":764}],770:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t,e){for(var r=0;r\"),l.color=function(t,e){var r=t.marker,i=e.mc||r.color,a=e.mlc||r.line.color,o=e.mlw||r.line.width;if(n(i))return i;if(n(a)&&o)return a}(u,h),[l]}}},{\"../../components/color\":366,\"../../lib\":503,\"../bar/hover\":655}],778:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\").supplyDefaults,crossTraceDefaults:t(\"./defaults\").crossTraceDefaults,supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\"),crossTraceCalc:t(\"./cross_trace_calc\"),plot:t(\"./plot\"),style:t(\"./style\").style,hoverPoints:t(\"./hover\"),eventData:t(\"./event_data\"),selectPoints:t(\"../bar/select\"),moduleType:\"trace\",name:\"funnel\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"bar-like\",\"cartesian\",\"svg\",\"oriented\",\"showLegend\",\"zoomScale\"],meta:{}}},{\"../../plots/cartesian\":568,\"../bar/select\":660,\"./attributes\":771,\"./calc\":772,\"./cross_trace_calc\":774,\"./defaults\":775,\"./event_data\":776,\"./hover\":777,\"./layout_attributes\":779,\"./layout_defaults\":780,\"./plot\":781,\"./style\":782}],779:[function(t,e,r){\"use strict\";e.exports={funnelmode:{valType:\"enumerated\",values:[\"stack\",\"group\",\"overlay\"],dflt:\"stack\",editType:\"calc\"},funnelgap:{valType:\"number\",min:0,max:1,editType:\"calc\"},funnelgroupgap:{valType:\"number\",min:0,max:1,dflt:0,editType:\"calc\"}}},{}],780:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e,r){var a=!1;function o(r,a){return n.coerce(t,e,i,r,a)}for(var s=0;s path\").each((function(t){if(!t.isBlank){var e=s.marker;n.select(this).call(a.fill,t.mc||e.color).call(a.stroke,t.mlc||e.line.color).call(i.dashLine,e.line.dash,t.mlw||e.line.width).style(\"opacity\",s.selectedpoints&&!t.selected?o:1)}})),c(r,s,t),r.selectAll(\".regions\").each((function(){n.select(this).selectAll(\"path\").style(\"stroke-width\",0).call(a.fill,s.connector.fillcolor)})),r.selectAll(\".lines\").each((function(){var t=s.connector.line;i.lineGroupStyle(n.select(this).selectAll(\"path\"),t.width,t.color,t.dash)}))}))}}},{\"../../components/color\":366,\"../../components/drawing\":388,\"../../constants/interactions\":478,\"../bar/style\":662,\"../bar/uniform_text\":664,\"@plotly/d3\":58}],783:[function(t,e,r){\"use strict\";var n=t(\"../pie/attributes\"),i=t(\"../../plots/attributes\"),a=t(\"../../plots/domain\").attributes,o=t(\"../../plots/template_attributes\").hovertemplateAttrs,s=t(\"../../plots/template_attributes\").texttemplateAttrs,l=t(\"../../lib/extend\").extendFlat;e.exports={labels:n.labels,label0:n.label0,dlabel:n.dlabel,values:n.values,marker:{colors:n.marker.colors,line:{color:l({},n.marker.line.color,{dflt:null}),width:l({},n.marker.line.width,{dflt:1}),editType:\"calc\"},editType:\"calc\"},text:n.text,hovertext:n.hovertext,scalegroup:l({},n.scalegroup,{}),textinfo:l({},n.textinfo,{flags:[\"label\",\"text\",\"value\",\"percent\"]}),texttemplate:s({editType:\"plot\"},{keys:[\"label\",\"color\",\"value\",\"text\",\"percent\"]}),hoverinfo:l({},i.hoverinfo,{flags:[\"label\",\"text\",\"value\",\"percent\",\"name\"]}),hovertemplate:o({},{keys:[\"label\",\"color\",\"value\",\"text\",\"percent\"]}),textposition:l({},n.textposition,{values:[\"inside\",\"none\"],dflt:\"inside\"}),textfont:n.textfont,insidetextfont:n.insidetextfont,title:{text:n.title.text,font:n.title.font,position:l({},n.title.position,{values:[\"top left\",\"top center\",\"top right\"],dflt:\"top center\"}),editType:\"plot\"},domain:a({name:\"funnelarea\",trace:!0,editType:\"calc\"}),aspectratio:{valType:\"number\",min:0,dflt:1,editType:\"plot\"},baseratio:{valType:\"number\",min:0,max:1,dflt:.333,editType:\"plot\"}}},{\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/domain\":584,\"../../plots/template_attributes\":633,\"../pie/attributes\":900}],784:[function(t,e,r){\"use strict\";var n=t(\"../../plots/plots\");r.name=\"funnelarea\",r.plot=function(t,e,i,a){n.plotBasePlot(r.name,t,e,i,a)},r.clean=function(t,e,i,a){n.cleanBasePlot(r.name,t,e,i,a)}},{\"../../plots/plots\":619}],785:[function(t,e,r){\"use strict\";var n=t(\"../pie/calc\");e.exports={calc:function(t,e){return n.calc(t,e)},crossTraceCalc:function(t){n.crossTraceCalc(t,{type:\"funnelarea\"})}}},{\"../pie/calc\":902}],786:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./attributes\"),a=t(\"../../plots/domain\").defaults,o=t(\"../bar/defaults\").handleText,s=t(\"../pie/defaults\").handleLabelsAndValues;e.exports=function(t,e,r,l){function c(r,a){return n.coerce(t,e,i,r,a)}var u=c(\"labels\"),f=c(\"values\"),h=s(u,f),p=h.len;if(e._hasLabels=h.hasLabels,e._hasValues=h.hasValues,!e._hasLabels&&e._hasValues&&(c(\"label0\"),c(\"dlabel\")),p){e._length=p,c(\"marker.line.width\")&&c(\"marker.line.color\",l.paper_bgcolor),c(\"marker.colors\"),c(\"scalegroup\");var d,g=c(\"text\"),m=c(\"texttemplate\");if(m||(d=c(\"textinfo\",Array.isArray(g)?\"text+percent\":\"percent\")),c(\"hovertext\"),c(\"hovertemplate\"),m||d&&\"none\"!==d){var v=c(\"textposition\");o(t,e,l,c,v,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1})}a(e,l,c),c(\"title.text\")&&(c(\"title.position\"),n.coerceFont(c,\"title.font\",l.font)),c(\"aspectratio\"),c(\"baseratio\")}else e.visible=!1}},{\"../../lib\":503,\"../../plots/domain\":584,\"../bar/defaults\":652,\"../pie/defaults\":903,\"./attributes\":783}],787:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"funnelarea\",basePlotModule:t(\"./base_plot\"),categories:[\"pie-like\",\"funnelarea\",\"showLegend\"],attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\"),supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\").calc,crossTraceCalc:t(\"./calc\").crossTraceCalc,plot:t(\"./plot\"),style:t(\"./style\"),styleOne:t(\"../pie/style_one\"),meta:{}}},{\"../pie/style_one\":911,\"./attributes\":783,\"./base_plot\":784,\"./calc\":785,\"./defaults\":786,\"./layout_attributes\":788,\"./layout_defaults\":789,\"./plot\":790,\"./style\":791}],788:[function(t,e,r){\"use strict\";var n=t(\"../pie/layout_attributes\").hiddenlabels;e.exports={hiddenlabels:n,funnelareacolorway:{valType:\"colorlist\",editType:\"calc\"},extendfunnelareacolors:{valType:\"boolean\",dflt:!0,editType:\"calc\"}}},{\"../pie/layout_attributes\":907}],789:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e){function r(r,a){return n.coerce(t,e,i,r,a)}r(\"hiddenlabels\"),r(\"funnelareacolorway\",e.colorway),r(\"extendfunnelareacolors\")}},{\"../../lib\":503,\"./layout_attributes\":788}],790:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../components/drawing\"),a=t(\"../../lib\"),o=a.strScale,s=a.strTranslate,l=t(\"../../lib/svg_text_utils\"),c=t(\"../bar/plot\").toMoveInsideBar,u=t(\"../bar/uniform_text\"),f=u.recordMinTextSize,h=u.clearMinTextSize,p=t(\"../pie/helpers\"),d=t(\"../pie/plot\"),g=d.attachFxHandlers,m=d.determineInsideTextFont,v=d.layoutAreas,y=d.prerenderTitles,x=d.positionTitleOutside,b=d.formatSliceLabel;function _(t,e){return\"l\"+(e[0]-t[0])+\",\"+(e[1]-t[1])}e.exports=function(t,e){var r=t._fullLayout;h(\"funnelarea\",r),y(e,t),v(e,r._size),a.makeTraceGroups(r._funnelarealayer,e,\"trace\").each((function(e){var u=n.select(this),h=e[0],d=h.trace;!function(t){if(!t.length)return;var e=t[0],r=e.trace,n=r.aspectratio,i=r.baseratio;i>.999&&(i=.999);var a,o=Math.pow(i,2),s=e.vTotal,l=s,c=s*o/(1-o)/s;function u(){var t,e={x:t=Math.sqrt(c),y:-t};return[e.x,e.y]}var f,h,p=[];for(p.push(u()),f=t.length-1;f>-1;f--)if(!(h=t[f]).hidden){var d=h.v/l;c+=d,p.push(u())}var g=1/0,m=-1/0;for(f=0;f-1;f--)if(!(h=t[f]).hidden){var A=p[k+=1][0],M=p[k][1];h.TL=[-A,M],h.TR=[A,M],h.BL=w,h.BR=T,h.pxmid=(S=h.TR,E=h.BR,[.5*(S[0]+E[0]),.5*(S[1]+E[1])]),w=h.TL,T=h.TR}var S,E}(e),u.each((function(){var u=n.select(this).selectAll(\"g.slice\").data(e);u.enter().append(\"g\").classed(\"slice\",!0),u.exit().remove(),u.each((function(o,s){if(o.hidden)n.select(this).selectAll(\"path,g\").remove();else{o.pointNumber=o.i,o.curveNumber=d.index;var u=h.cx,v=h.cy,y=n.select(this),x=y.selectAll(\"path.surface\").data([o]);x.enter().append(\"path\").classed(\"surface\",!0).style({\"pointer-events\":\"all\"}),y.call(g,t,e);var w=\"M\"+(u+o.TR[0])+\",\"+(v+o.TR[1])+_(o.TR,o.BR)+_(o.BR,o.BL)+_(o.BL,o.TL)+\"Z\";x.attr(\"d\",w),b(t,o,h);var T=p.castOption(d.textposition,o.pts),k=y.selectAll(\"g.slicetext\").data(o.text&&\"none\"!==T?[0]:[]);k.enter().append(\"g\").classed(\"slicetext\",!0),k.exit().remove(),k.each((function(){var h=a.ensureSingle(n.select(this),\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),p=a.ensureUniformFontSize(t,m(d,o,r.font));h.text(o.text).attr({class:\"slicetext\",transform:\"\",\"text-anchor\":\"middle\"}).call(i.font,p).call(l.convertToTspans,t);var g,y,x,b=i.bBox(h.node()),_=Math.min(o.BL[1],o.BR[1])+v,w=Math.max(o.TL[1],o.TR[1])+v;y=Math.max(o.TL[0],o.BL[0])+u,x=Math.min(o.TR[0],o.BR[0])+u,(g=c(y,x,_,w,b,{isHorizontal:!0,constrained:!0,angle:0,anchor:\"middle\"})).fontSize=p.size,f(d.type,g,r),e[s].transform=g,h.attr(\"transform\",a.getTextTransform(g))}))}}));var v=n.select(this).selectAll(\"g.titletext\").data(d.title.text?[0]:[]);v.enter().append(\"g\").classed(\"titletext\",!0),v.exit().remove(),v.each((function(){var e=a.ensureSingle(n.select(this),\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),c=d.title.text;d._meta&&(c=a.templateString(c,d._meta)),e.text(c).attr({class:\"titletext\",transform:\"\",\"text-anchor\":\"middle\"}).call(i.font,d.title.font).call(l.convertToTspans,t);var u=x(h,r._size);e.attr(\"transform\",s(u.x,u.y)+o(Math.min(1,u.scale))+s(u.tx,u.ty))}))}))}))}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../bar/plot\":659,\"../bar/uniform_text\":664,\"../pie/helpers\":905,\"../pie/plot\":909,\"@plotly/d3\":58}],791:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../pie/style_one\"),a=t(\"../bar/uniform_text\").resizeText;e.exports=function(t){var e=t._fullLayout._funnelarealayer.selectAll(\".trace\");a(t,e,\"funnelarea\"),e.each((function(t){var e=t[0].trace,r=n.select(this);r.style({opacity:e.opacity}),r.selectAll(\"path.surface\").each((function(t){n.select(this).call(i,t,e)}))}))}},{\"../bar/uniform_text\":664,\"../pie/style_one\":911,\"@plotly/d3\":58}],792:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\"),i=t(\"../../plots/attributes\"),a=t(\"../../plots/font_attributes\"),o=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,s=t(\"../../plots/template_attributes\").hovertemplateAttrs,l=t(\"../../plots/template_attributes\").texttemplateAttrs,c=t(\"../../components/colorscale/attributes\"),u=t(\"../../lib/extend\").extendFlat;e.exports=u({z:{valType:\"data_array\",editType:\"calc\"},x:u({},n.x,{impliedEdits:{xtype:\"array\"}}),x0:u({},n.x0,{impliedEdits:{xtype:\"scaled\"}}),dx:u({},n.dx,{impliedEdits:{xtype:\"scaled\"}}),y:u({},n.y,{impliedEdits:{ytype:\"array\"}}),y0:u({},n.y0,{impliedEdits:{ytype:\"scaled\"}}),dy:u({},n.dy,{impliedEdits:{ytype:\"scaled\"}}),xperiod:u({},n.xperiod,{impliedEdits:{xtype:\"scaled\"}}),yperiod:u({},n.yperiod,{impliedEdits:{ytype:\"scaled\"}}),xperiod0:u({},n.xperiod0,{impliedEdits:{xtype:\"scaled\"}}),yperiod0:u({},n.yperiod0,{impliedEdits:{ytype:\"scaled\"}}),xperiodalignment:u({},n.xperiodalignment,{impliedEdits:{xtype:\"scaled\"}}),yperiodalignment:u({},n.yperiodalignment,{impliedEdits:{ytype:\"scaled\"}}),text:{valType:\"data_array\",editType:\"calc\"},hovertext:{valType:\"data_array\",editType:\"calc\"},transpose:{valType:\"boolean\",dflt:!1,editType:\"calc\"},xtype:{valType:\"enumerated\",values:[\"array\",\"scaled\"],editType:\"calc+clearAxisTypes\"},ytype:{valType:\"enumerated\",values:[\"array\",\"scaled\"],editType:\"calc+clearAxisTypes\"},zsmooth:{valType:\"enumerated\",values:[\"fast\",\"best\",!1],dflt:!1,editType:\"calc\"},hoverongaps:{valType:\"boolean\",dflt:!0,editType:\"none\"},connectgaps:{valType:\"boolean\",editType:\"calc\"},xgap:{valType:\"number\",dflt:0,min:0,editType:\"plot\"},ygap:{valType:\"number\",dflt:0,min:0,editType:\"plot\"},xhoverformat:o(\"x\"),yhoverformat:o(\"y\"),zhoverformat:o(\"z\",1),hovertemplate:s(),texttemplate:l({arrayOk:!1,editType:\"plot\"},{keys:[\"x\",\"y\",\"z\",\"text\"]}),textfont:a({editType:\"plot\",autoSize:!0,autoColor:!0,colorEditType:\"style\"}),showlegend:u({},i.showlegend,{dflt:!1})},{transforms:void 0},c(\"\",{cLetter:\"z\",autoColorDflt:!1}))},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/font_attributes\":585,\"../../plots/template_attributes\":633,\"../scatter/attributes\":926}],793:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\"),a=t(\"../../plots/cartesian/axes\"),o=t(\"../../plots/cartesian/align_period\"),s=t(\"../histogram2d/calc\"),l=t(\"../../components/colorscale/calc\"),c=t(\"./convert_column_xyz\"),u=t(\"./clean_2d_array\"),f=t(\"./interp2d\"),h=t(\"./find_empties\"),p=t(\"./make_bound_array\"),d=t(\"../../constants/numerical\").BADNUM;function g(t){for(var e=[],r=t.length,n=0;nD){O(\"x scale is not linear\");break}}if(x.length&&\"fast\"===P){var R=(x[x.length-1]-x[0])/(x.length-1),F=Math.abs(R/100);for(k=0;kF){O(\"y scale is not linear\");break}}}var B=i.maxRowLength(T),N=\"scaled\"===e.xtype?\"\":r,j=p(e,N,m,v,B,M),U=\"scaled\"===e.ytype?\"\":x,V=p(e,U,b,_,T.length,S);C||(e._extremes[M._id]=a.findExtremes(M,j),e._extremes[S._id]=a.findExtremes(S,V));var H={x:j,y:V,z:T,text:e._text||e.text,hovertext:e._hovertext||e.hovertext};if(e.xperiodalignment&&y&&(H.orig_x=y),e.yperiodalignment&&w&&(H.orig_y=w),N&&N.length===j.length-1&&(H.xCenter=N),U&&U.length===V.length-1&&(H.yCenter=U),L&&(H.xRanges=A.xRanges,H.yRanges=A.yRanges,H.pts=A.pts),E||l(t,e,{vals:T,cLetter:\"z\"}),E&&e.contours&&\"heatmap\"===e.contours.coloring){var q={type:\"contour\"===e.type?\"heatmap\":\"histogram2d\",xcalendar:e.xcalendar,ycalendar:e.ycalendar};H.xfill=p(q,N,m,v,B,M),H.yfill=p(q,U,b,_,T.length,S)}return[H]}},{\"../../components/colorscale/calc\":374,\"../../constants/numerical\":479,\"../../lib\":503,\"../../plots/cartesian/align_period\":551,\"../../plots/cartesian/axes\":554,\"../../registry\":638,\"../histogram2d/calc\":826,\"./clean_2d_array\":794,\"./convert_column_xyz\":796,\"./find_empties\":798,\"./interp2d\":801,\"./make_bound_array\":803}],794:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../lib\"),a=t(\"../../constants/numerical\").BADNUM;e.exports=function(t,e,r,o){var s,l,c,u,f,h;function p(t){if(n(t))return+t}if(e&&e.transpose){for(s=0,f=0;f=0;o--)(s=((f[[(r=(a=h[o])[0])-1,i=a[1]]]||g)[2]+(f[[r+1,i]]||g)[2]+(f[[r,i-1]]||g)[2]+(f[[r,i+1]]||g)[2])/20)&&(l[a]=[r,i,s],h.splice(o,1),c=!0);if(!c)throw\"findEmpties iterated with no new neighbors\";for(a in l)f[a]=l[a],u.push(l[a])}return u.sort((function(t,e){return e[2]-t[2]}))}},{\"../../lib\":503}],799:[function(t,e,r){\"use strict\";var n=t(\"../../components/fx\"),i=t(\"../../lib\"),a=t(\"../../plots/cartesian/axes\"),o=t(\"../../components/colorscale\").extractOpts;e.exports=function(t,e,r,s,l){l||(l={});var c,u,f,h,p=l.isContour,d=t.cd[0],g=d.trace,m=t.xa,v=t.ya,y=d.x,x=d.y,b=d.z,_=d.xCenter,w=d.yCenter,T=d.zmask,k=g.zhoverformat,A=y,M=x;if(!1!==t.index){try{f=Math.round(t.index[1]),h=Math.round(t.index[0])}catch(e){return void i.error(\"Error hovering on heatmap, pointNumber must be [row,col], found:\",t.index)}if(f<0||f>=b[0].length||h<0||h>b.length)return}else{if(n.inbox(e-y[0],e-y[y.length-1],0)>0||n.inbox(r-x[0],r-x[x.length-1],0)>0)return;if(p){var S;for(A=[2*y[0]-y[1]],S=1;Sg&&(v=Math.max(v,Math.abs(t[a][o]-d)/(m-g))))}return v}e.exports=function(t,e){var r,i=1;for(o(t,e),r=0;r.01;r++)i=o(t,e,a(i));return i>.01&&n.log(\"interp2d didn't converge quickly\",i),t}},{\"../../lib\":503}],802:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t,e){t(\"texttemplate\");var r=n.extendFlat({},e.font,{color:\"auto\",size:\"auto\"});n.coerceFont(t,\"textfont\",r)}},{\"../../lib\":503}],803:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\").isArrayOrTypedArray;e.exports=function(t,e,r,a,o,s){var l,c,u,f=[],h=n.traceIs(t,\"contour\"),p=n.traceIs(t,\"histogram\"),d=n.traceIs(t,\"gl2d\");if(i(e)&&e.length>1&&!p&&\"category\"!==s.type){var g=e.length;if(!(g<=o))return h?e.slice(0,o):e.slice(0,o+1);if(h||d)f=e.slice(0,o);else if(1===o)f=[e[0]-.5,e[0]+.5];else{for(f=[1.5*e[0]-.5*e[1]],u=1;u0;)_=w.c2p(R[S]),S--;for(_0;)M=T.c2p(F[S]),S--;if(MGt||Gt>T._length))for(E=Ut;EWt||Wt>w._length)){var Xt=u({x:Yt,y:qt},I,t._fullLayout);Xt.x=Yt,Xt.y=qt;var Zt=P.z[S][E];void 0===Zt?(Xt.z=\"\",Xt.zLabel=\"\"):(Xt.z=Zt,Xt.zLabel=s.tickText(Ft,Zt,\"hover\").text);var Jt=P.text&&P.text[S]&&P.text[S][E];void 0!==Jt&&!1!==Jt||(Jt=\"\"),Xt.text=Jt;var Kt=l.texttemplateString(Dt,Xt,t._fullLayout._d3locale,Xt,I._meta||{});if(Kt){var Qt=Kt.split(\"
\"),$t=Qt.length,te=0;for(L=0;L<$t;L++)te=Math.max(te,Qt[L].length);Ht.push({l:$t,c:te,t:Kt,x:Wt,y:Gt,z:Zt})}}}}var ee=I.textfont,re=ee.family,ne=ee.size,ie=t._fullLayout.font.size;if(!ne||\"auto\"===ne){var ae=1/0,oe=1/0,se=0,le=0;for(L=0;L0&&(a=!0);for(var l=0;la){var o=a-r[t];return r[t]=a,o}}return 0},max:function(t,e,r,i){var a=i[e];if(n(a)){if(a=Number(a),!n(r[t]))return r[t]=a,a;if(r[t]c?t>o?t>1.1*i?i:t>1.1*a?a:o:t>s?s:t>l?l:c:Math.pow(10,Math.floor(Math.log(t)/Math.LN10))}function p(t,e,r,n,a,s){if(n&&t>o){var l=d(e,a,s),c=d(r,a,s),u=t===i?0:1;return l[u]!==c[u]}return Math.floor(r/t)-Math.floor(e/t)>.1}function d(t,e,r){var n=e.c2d(t,i,r).split(\"-\");return\"\"===n[0]&&(n.unshift(),n[0]=\"-\"+n[0]),n}e.exports=function(t,e,r,n,a){var s,l,c=-1.1*e,h=-.1*e,p=t-h,d=r[0],g=r[1],m=Math.min(f(d+h,d+p,n,a),f(g+h,g+p,n,a)),v=Math.min(f(d+c,d+h,n,a),f(g+c,g+h,n,a));if(m>v&&vo){var y=s===i?1:6,x=s===i?\"M12\":\"M1\";return function(e,r){var o=n.c2d(e,i,a),s=o.indexOf(\"-\",y);s>0&&(o=o.substr(0,s));var c=n.d2c(o,0,a);if(cr.r2l(B)&&(j=o.tickIncrement(j,b.size,!0,p)),z.start=r.l2r(j),F||i.nestedProperty(e,v+\".start\").set(z.start)}var U=b.end,V=r.r2l(O.end),H=void 0!==V;if((b.endFound||H)&&V!==r.r2l(U)){var q=H?V:i.aggNums(Math.max,null,d);z.end=r.l2r(q),H||i.nestedProperty(e,v+\".start\").set(z.end)}var G=\"autobin\"+s;return!1===e._input[G]&&(e._input[v]=i.extendFlat({},e[v]||{}),delete e._input[G],delete e[G]),[z,d]}e.exports={calc:function(t,e){var r,a,p,d,g=[],m=[],v=\"h\"===e.orientation,y=o.getFromId(t,v?e.yaxis:e.xaxis),x=v?\"y\":\"x\",b={x:\"y\",y:\"x\"}[x],_=e[x+\"calendar\"],w=e.cumulative,T=h(t,e,y,x),k=T[0],A=T[1],M=\"string\"==typeof k.size,S=[],E=M?S:k,L=[],C=[],P=[],I=0,O=e.histnorm,z=e.histfunc,D=-1!==O.indexOf(\"density\");w.enabled&&D&&(O=O.replace(/ ?density$/,\"\"),D=!1);var R,F=\"max\"===z||\"min\"===z?null:0,B=l.count,N=c[O],j=!1,U=function(t){return y.r2c(t,0,_)};for(i.isArrayOrTypedArray(e[b])&&\"count\"!==z&&(R=e[b],j=\"avg\"===z,B=l[z]),r=U(k.start),p=U(k.end)+(r-o.tickIncrement(r,k.size,!1,_))/1e6;r=0&&d=0;n--)s(n);else if(\"increasing\"===e){for(n=1;n=0;n--)t[n]+=t[n+1];\"exclude\"===r&&(t.push(0),t.shift())}}(m,w.direction,w.currentbin);var K=Math.min(g.length,m.length),Q=[],$=0,tt=K-1;for(r=0;r=$;r--)if(m[r]){tt=r;break}for(r=$;r<=tt;r++)if(n(g[r])&&n(m[r])){var et={p:g[r],s:m[r],b:0};w.enabled||(et.pts=P[r],Y?et.ph0=et.ph1=P[r].length?A[P[r][0]]:g[r]:(e._computePh=!0,et.ph0=q(S[r]),et.ph1=q(S[r+1],!0))),Q.push(et)}return 1===Q.length&&(Q[0].width1=o.tickIncrement(Q[0].p,k.size,!1,_)-Q[0].p),s(Q,e),i.isArrayOrTypedArray(e.selectedpoints)&&i.tagSelected(Q,e,Z),Q},calcAllAutoBins:h}},{\"../../lib\":503,\"../../plots/cartesian/axes\":554,\"../../registry\":638,\"../bar/arrays_to_calcdata\":647,\"./average\":813,\"./bin_functions\":815,\"./bin_label_vals\":816,\"./norm_functions\":824,\"fast-isnumeric\":190}],818:[function(t,e,r){\"use strict\";e.exports={eventDataKeys:[\"binNumber\"]}},{}],819:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../plots/cartesian/axis_ids\"),a=t(\"../../registry\").traceIs,o=t(\"../bar/defaults\").handleGroupingDefaults,s=n.nestedProperty,l=t(\"../../plots/cartesian/constraints\").getAxisGroup,c=[{aStr:{x:\"xbins.start\",y:\"ybins.start\"},name:\"start\"},{aStr:{x:\"xbins.end\",y:\"ybins.end\"},name:\"end\"},{aStr:{x:\"xbins.size\",y:\"ybins.size\"},name:\"size\"},{aStr:{x:\"nbinsx\",y:\"nbinsy\"},name:\"nbins\"}],u=[\"x\",\"y\"];e.exports=function(t,e){var r,f,h,p,d,g,m,v=e._histogramBinOpts={},y=[],x={},b=[];function _(t,e){return n.coerce(r._input,r,r._module.attributes,t,e)}function w(t){return\"v\"===t.orientation?\"x\":\"y\"}function T(t,r,a){var o=t.uid+\"__\"+a;r||(r=o);var s=function(t,r){return i.getFromTrace({_fullLayout:e},t,r).type}(t,a),l=t[a+\"calendar\"]||\"\",c=v[r],u=!0;c&&(s===c.axType&&l===c.calendar?(u=!1,c.traces.push(t),c.dirs.push(a)):(r=o,s!==c.axType&&n.warn([\"Attempted to group the bins of trace\",t.index,\"set on a\",\"type:\"+s,\"axis\",\"with bins on\",\"type:\"+c.axType,\"axis.\"].join(\" \")),l!==c.calendar&&n.warn([\"Attempted to group the bins of trace\",t.index,\"set with a\",l,\"calendar\",\"with bins\",c.calendar?\"on a \"+c.calendar+\" calendar\":\"w/o a set calendar\"].join(\" \")))),u&&(v[r]={traces:[t],dirs:[a],axType:s,calendar:t[a+\"calendar\"]||\"\"}),t[\"_\"+a+\"bingroup\"]=r}for(d=0;dS&&T.splice(S,T.length-S),M.length>S&&M.splice(S,M.length-S);var E=[],L=[],C=[],P=\"string\"==typeof w.size,I=\"string\"==typeof A.size,O=[],z=[],D=P?O:w,R=I?z:A,F=0,B=[],N=[],j=e.histnorm,U=e.histfunc,V=-1!==j.indexOf(\"density\"),H=\"max\"===U||\"min\"===U?null:0,q=a.count,G=o[j],Y=!1,W=[],X=[],Z=\"z\"in e?e.z:\"marker\"in e&&Array.isArray(e.marker.color)?e.marker.color:\"\";Z&&\"count\"!==U&&(Y=\"avg\"===U,q=a[U]);var J=w.size,K=x(w.start),Q=x(w.end)+(K-i.tickIncrement(K,J,!1,v))/1e6;for(r=K;r=0&&p=0&&d-1,flipY:E.tiling.flip.indexOf(\"y\")>-1,orientation:E.tiling.orientation,pad:{inner:E.tiling.pad},maxDepth:E._maxDepth}).descendants(),O=1/0,z=-1/0;I.forEach((function(t){var e=t.depth;e>=E._maxDepth?(t.x0=t.x1=(t.x0+t.x1)/2,t.y0=t.y1=(t.y0+t.y1)/2):(O=Math.min(O,e),z=Math.max(z,e))})),p=p.data(I,u.getPtId),E._maxVisibleLayers=isFinite(z)?z-O+1:0,p.enter().append(\"g\").classed(\"slice\",!0),T(p,!1,{},[g,m],x),p.order();var D=null;if(w&&M){var R=u.getPtId(M);p.each((function(t){null===D&&u.getPtId(t)===R&&(D={x0:t.x0,x1:t.x1,y0:t.y0,y1:t.y1})}))}var F=function(){return D||{x0:0,x1:g,y0:0,y1:m}},B=p;return w&&(B=B.transition().each(\"end\",(function(){var e=n.select(this);u.setSliceCursor(e,t,{hideOnRoot:!0,hideOnLeaves:!1,isTransitioning:!1})}))),B.each((function(s){s._x0=v(s.x0),s._x1=v(s.x1),s._y0=y(s.y0),s._y1=y(s.y1),s._hoverX=v(s.x1-E.tiling.pad),s._hoverY=y(P?s.y1-E.tiling.pad/2:s.y0+E.tiling.pad/2);var p=n.select(this),d=i.ensureSingle(p,\"path\",\"surface\",(function(t){t.style(\"pointer-events\",\"all\")}));w?d.transition().attrTween(\"d\",(function(t){var e=k(t,!1,F(),[g,m],{orientation:E.tiling.orientation,flipX:E.tiling.flip.indexOf(\"x\")>-1,flipY:E.tiling.flip.indexOf(\"y\")>-1});return function(t){return x(e(t))}})):d.attr(\"d\",x),p.call(f,r,t,e,{styleOne:l,eventDataKeys:c.eventDataKeys,transitionTime:c.CLICK_TRANSITION_TIME,transitionEasing:c.CLICK_TRANSITION_EASING}).call(u.setSliceCursor,t,{isTransitioning:t._transitioning}),d.call(l,s,E,{hovered:!1}),s.x0===s.x1||s.y0===s.y1?s._text=\"\":s._text=h(s,r,E,e,S)||\"\";var T=i.ensureSingle(p,\"g\",\"slicetext\"),M=i.ensureSingle(T,\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),I=i.ensureUniformFontSize(t,u.determineTextFont(E,s,S.font));M.text(s._text||\" \").classed(\"slicetext\",!0).attr(\"text-anchor\",C?\"end\":L?\"start\":\"middle\").call(a.font,I).call(o.convertToTspans,t),s.textBB=a.bBox(M.node()),s.transform=b(s,{fontSize:I.size}),s.transform.fontSize=I.size,w?M.transition().attrTween(\"transform\",(function(t){var e=A(t,!1,F(),[g,m]);return function(t){return _(e(t))}})):M.attr(\"transform\",_(s))})),D}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../sunburst/fx\":1050,\"../sunburst/helpers\":1051,\"../sunburst/plot\":1055,\"../treemap/constants\":1074,\"./partition\":842,\"./style\":844,\"@plotly/d3\":58}],839:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"icicle\",basePlotModule:t(\"./base_plot\"),categories:[],animatable:!0,attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\"),supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\").calc,crossTraceCalc:t(\"./calc\").crossTraceCalc,plot:t(\"./plot\"),style:t(\"./style\").style,colorbar:t(\"../scatter/marker_colorbar\"),meta:{}}},{\"../scatter/marker_colorbar\":944,\"./attributes\":834,\"./base_plot\":835,\"./calc\":836,\"./defaults\":837,\"./layout_attributes\":840,\"./layout_defaults\":841,\"./plot\":843,\"./style\":844}],840:[function(t,e,r){\"use strict\";e.exports={iciclecolorway:{valType:\"colorlist\",editType:\"calc\"},extendiciclecolors:{valType:\"boolean\",dflt:!0,editType:\"calc\"}}},{}],841:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e){function r(r,a){return n.coerce(t,e,i,r,a)}r(\"iciclecolorway\",e.colorway),r(\"extendiciclecolors\")}},{\"../../lib\":503,\"./layout_attributes\":840}],842:[function(t,e,r){\"use strict\";var n=t(\"d3-hierarchy\"),i=t(\"../treemap/flip_tree\");e.exports=function(t,e,r){var a=r.flipX,o=r.flipY,s=\"h\"===r.orientation,l=r.maxDepth,c=e[0],u=e[1];l&&(c=(t.height+1)*e[0]/Math.min(t.height+1,l),u=(t.height+1)*e[1]/Math.min(t.height+1,l));var f=n.partition().padding(r.pad.inner).size(s?[e[1],c]:[e[0],u])(t);return(s||a||o)&&i(f,e,{swapXY:s,flipX:a,flipY:o}),f}},{\"../treemap/flip_tree\":1079,\"d3-hierarchy\":115}],843:[function(t,e,r){\"use strict\";var n=t(\"../treemap/draw\"),i=t(\"./draw_descendants\");e.exports=function(t,e,r,a){return n(t,e,r,a,{type:\"icicle\",drawDescendants:i})}},{\"../treemap/draw\":1076,\"./draw_descendants\":838}],844:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../components/color\"),a=t(\"../../lib\"),o=t(\"../bar/uniform_text\").resizeText;function s(t,e,r){var n=e.data.data,o=!e.children,s=n.i,l=a.castOption(r,s,\"marker.line.color\")||i.defaultLine,c=a.castOption(r,s,\"marker.line.width\")||0;t.style(\"stroke-width\",c).call(i.fill,n.color).call(i.stroke,l).style(\"opacity\",o?r.leaf.opacity:null)}e.exports={style:function(t){var e=t._fullLayout._iciclelayer.selectAll(\".trace\");o(t,e,\"icicle\"),e.each((function(t){var e=n.select(this),r=t[0].trace;e.style(\"opacity\",r.opacity),e.selectAll(\"path.surface\").each((function(t){n.select(this).call(s,t,r)}))}))},styleOne:s}},{\"../../components/color\":366,\"../../lib\":503,\"../bar/uniform_text\":664,\"@plotly/d3\":58}],845:[function(t,e,r){\"use strict\";for(var n=t(\"../../plots/attributes\"),i=t(\"../../plots/template_attributes\").hovertemplateAttrs,a=t(\"../../lib/extend\").extendFlat,o=t(\"./constants\").colormodel,s=[\"rgb\",\"rgba\",\"rgba256\",\"hsl\",\"hsla\"],l=[],c=[],u=0;u0||n.inbox(r-o.y0,r-(o.y0+o.h*s.dy),0)>0)){var u,f=Math.floor((e-o.x0)/s.dx),h=Math.floor(Math.abs(r-o.y0)/s.dy);if(s._hasZ?u=o.z[h][f]:s._hasSource&&(u=s._canvas.el.getContext(\"2d\").getImageData(f,h,1,1).data),u){var p,d=o.hi||s.hoverinfo;if(d){var g=d.split(\"+\");-1!==g.indexOf(\"all\")&&(g=[\"color\"]),-1!==g.indexOf(\"color\")&&(p=!0)}var m,v=a.colormodel[s.colormodel],y=v.colormodel||s.colormodel,x=y.length,b=s._scaler(u),_=v.suffix,w=[];(s.hovertemplate||p)&&(w.push(\"[\"+[b[0]+_[0],b[1]+_[1],b[2]+_[2]].join(\", \")),4===x&&w.push(\", \"+b[3]+_[3]),w.push(\"]\"),w=w.join(\"\"),t.extraText=y.toUpperCase()+\": \"+w),Array.isArray(s.hovertext)&&Array.isArray(s.hovertext[h])?m=s.hovertext[h][f]:Array.isArray(s.text)&&Array.isArray(s.text[h])&&(m=s.text[h][f]);var T=c.c2p(o.y0+(h+.5)*s.dy),k=o.x0+(f+.5)*s.dx,A=o.y0+(h+.5)*s.dy,M=\"[\"+u.slice(0,s.colormodel.length).join(\", \")+\"]\";return[i.extendFlat(t,{index:[h,f],x0:l.c2p(o.x0+f*s.dx),x1:l.c2p(o.x0+(f+1)*s.dx),y0:T,y1:T,color:b,xVal:k,xLabelVal:k,yVal:A,yLabelVal:A,zLabelVal:M,text:m,hovertemplateLabels:{zLabel:M,colorLabel:w,\"color[0]Label\":b[0]+_[0],\"color[1]Label\":b[1]+_[1],\"color[2]Label\":b[2]+_[2],\"color[3]Label\":b[3]+_[3]}})]}}}},{\"../../components/fx\":406,\"../../lib\":503,\"./constants\":847}],852:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),calc:t(\"./calc\"),plot:t(\"./plot\"),style:t(\"./style\"),hoverPoints:t(\"./hover\"),eventData:t(\"./event_data\"),moduleType:\"trace\",name:\"image\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"cartesian\",\"svg\",\"2dMap\",\"noSortingByValue\"],animatable:!1,meta:{}}},{\"../../plots/cartesian\":568,\"./attributes\":845,\"./calc\":846,\"./defaults\":848,\"./event_data\":849,\"./hover\":851,\"./plot\":853,\"./style\":854}],853:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=i.strTranslate,o=t(\"../../constants/xmlns_namespaces\"),s=t(\"./constants\"),l=i.isIOS()||i.isSafari()||i.isIE();e.exports=function(t,e,r,c){var u=e.xaxis,f=e.yaxis,h=!(l||t._context._exportedPlot);i.makeTraceGroups(c,r,\"im\").each((function(e){var r=n.select(this),l=e[0],c=l.trace,p=(\"fast\"===c.zsmooth||!1===c.zsmooth&&h)&&!c._hasZ&&c._hasSource&&\"linear\"===u.type&&\"linear\"===f.type;c._realImage=p;var d,g,m,v,y,x,b=l.z,_=l.x0,w=l.y0,T=l.w,k=l.h,A=c.dx,M=c.dy;for(x=0;void 0===d&&x0;)g=u.c2p(_+x*A),x--;for(x=0;void 0===v&&x0;)y=f.c2p(w+x*M),x--;if(gI[0];if(O||z){var D=d+S/2,R=v+E/2;C+=\"transform:\"+a(D+\"px\",R+\"px\")+\"scale(\"+(O?-1:1)+\",\"+(z?-1:1)+\")\"+a(-D+\"px\",-R+\"px\")+\";\"}}L.attr(\"style\",C);var F=new Promise((function(t){if(c._hasZ)t();else if(c._hasSource)if(c._canvas&&c._canvas.el.width===T&&c._canvas.el.height===k&&c._canvas.source===c.source)t();else{var e=document.createElement(\"canvas\");e.width=T,e.height=k;var r=e.getContext(\"2d\");c._image=c._image||new Image;var n=c._image;n.onload=function(){r.drawImage(n,0,0),c._canvas={el:e,source:c.source},t()},n.setAttribute(\"src\",c.source)}})).then((function(){var t;if(c._hasZ)t=B((function(t,e){return b[e][t]})).toDataURL(\"image/png\");else if(c._hasSource)if(p)t=c.source;else{var e=c._canvas.el.getContext(\"2d\").getImageData(0,0,T,k).data;t=B((function(t,r){var n=4*(r*T+t);return[e[n],e[n+1],e[n+2],e[n+3]]})).toDataURL(\"image/png\")}L.attr({\"xlink:href\":t,height:E,width:S,x:d,y:v})}));t._promises.push(F)}function B(t){var e=document.createElement(\"canvas\");e.width=S,e.height=E;var r,n=e.getContext(\"2d\"),a=function(t){return i.constrain(Math.round(u.c2p(_+t*A)-d),0,S)},o=function(t){return i.constrain(Math.round(f.c2p(w+t*M)-v),0,E)},h=s.colormodel[c.colormodel],p=h.colormodel||c.colormodel,g=h.fmt;for(x=0;x0}function T(t){t.each((function(t){y.stroke(n.select(this),t.line.color)})).each((function(t){y.fill(n.select(this),t.color)})).style(\"stroke-width\",(function(t){return t.line.width}))}function k(t,e,r){var n=t._fullLayout,i=o.extendFlat({type:\"linear\",ticks:\"outside\",range:r,showline:!0},e),a={type:\"linear\",_id:\"x\"+e._id},s={letter:\"x\",font:n.font,noHover:!0,noTickson:!0};function l(t,e){return o.coerce(i,a,v,t,e)}return g(i,a,l,s,n),m(i,a,l,s),a}function A(t,e,r){return[Math.min(e/t.width,r/t.height),t,e+\"x\"+r]}function M(t,e,r,i){var a=document.createElementNS(\"http://www.w3.org/2000/svg\",\"text\"),o=n.select(a);return o.text(t).attr(\"x\",0).attr(\"y\",0).attr(\"text-anchor\",r).attr(\"data-unformatted\",t).call(p.convertToTspans,i).call(f.font,e),f.bBox(o.node())}function S(t,e,r,n,i,a){var s=\"_cache\"+e;t[s]&&t[s].key===i||(t[s]={key:i,value:r});var l=o.aggNums(a,null,[t[s].value,n],2);return t[s].value=l,l}e.exports=function(t,e,r,g){var m,v=t._fullLayout;w(r)&&g&&(m=g()),o.makeTraceGroups(v._indicatorlayer,e,\"trace\").each((function(e){var g,E,L,C,P,I=e[0].trace,O=n.select(this),z=I._hasGauge,D=I._isAngular,R=I._isBullet,F=I.domain,B={w:v._size.w*(F.x[1]-F.x[0]),h:v._size.h*(F.y[1]-F.y[0]),l:v._size.l+v._size.w*F.x[0],r:v._size.r+v._size.w*(1-F.x[1]),t:v._size.t+v._size.h*(1-F.y[1]),b:v._size.b+v._size.h*F.y[0]},N=B.l+B.w/2,j=B.t+B.h/2,U=Math.min(B.w/2,B.h),V=h.innerRadius*U,H=I.align||\"center\";if(E=j,z){if(D&&(g=N,E=j+U/2,L=function(t){return function(t,e){var r=Math.sqrt(t.width/2*(t.width/2)+t.height*t.height);return[e/r,t,e]}(t,.9*V)}),R){var q=h.bulletPadding,G=1-h.bulletNumberDomainSize+q;g=B.l+(G+(1-G)*b[H])*B.w,L=function(t){return A(t,(h.bulletNumberDomainSize-q)*B.w,B.h)}}}else g=B.l+b[H]*B.w,L=function(t){return A(t,B.w,B.h)};!function(t,e,r,i){var c,u,h,g=r[0].trace,m=i.numbersX,v=i.numbersY,T=g.align||\"center\",A=x[T],E=i.transitionOpts,L=i.onComplete,C=o.ensureSingle(e,\"g\",\"numbers\"),P=[];g._hasNumber&&P.push(\"number\");g._hasDelta&&(P.push(\"delta\"),\"left\"===g.delta.position&&P.reverse());var I=C.selectAll(\"text\").data(P);function O(e,r,n,i){if(!e.match(\"s\")||n>=0==i>=0||r(n).slice(-1).match(_)||r(i).slice(-1).match(_))return r;var a=e.slice().replace(\"s\",\"f\").replace(/\\d+/,(function(t){return parseInt(t)-1})),o=k(t,{tickformat:a});return function(t){return Math.abs(t)<1?d.tickText(o,t).text:r(t)}}I.enter().append(\"text\"),I.attr(\"text-anchor\",(function(){return A})).attr(\"class\",(function(t){return t})).attr(\"x\",null).attr(\"y\",null).attr(\"dx\",null).attr(\"dy\",null),I.exit().remove();var z,D=g.mode+g.align;g._hasDelta&&(z=function(){var e=k(t,{tickformat:g.delta.valueformat},g._range);e.setScale(),d.prepTicks(e);var i=function(t){return d.tickText(e,t).text},o=function(t){return g.delta.relative?t.relativeDelta:t.delta},s=function(t,e){return 0===t||\"number\"!=typeof t||isNaN(t)?\"-\":(t>0?g.delta.increasing.symbol:g.delta.decreasing.symbol)+e(t)},l=function(t){return t.delta>=0?g.delta.increasing.color:g.delta.decreasing.color};void 0===g._deltaLastValue&&(g._deltaLastValue=o(r[0]));var c=C.select(\"text.delta\");function h(){c.text(s(o(r[0]),i)).call(y.fill,l(r[0])).call(p.convertToTspans,t)}return c.call(f.font,g.delta.font).call(y.fill,l({delta:g._deltaLastValue})),w(E)?c.transition().duration(E.duration).ease(E.easing).tween(\"text\",(function(){var t=n.select(this),e=o(r[0]),c=g._deltaLastValue,u=O(g.delta.valueformat,i,c,e),f=a(c,e);return g._deltaLastValue=e,function(e){t.text(s(f(e),u)),t.call(y.fill,l({delta:f(e)}))}})).each(\"end\",(function(){h(),L&&L()})).each(\"interrupt\",(function(){h(),L&&L()})):h(),u=M(s(o(r[0]),i),g.delta.font,A,t),c}(),D+=g.delta.position+g.delta.font.size+g.delta.font.family+g.delta.valueformat,D+=g.delta.increasing.symbol+g.delta.decreasing.symbol,h=u);g._hasNumber&&(!function(){var e=k(t,{tickformat:g.number.valueformat},g._range);e.setScale(),d.prepTicks(e);var i=function(t){return d.tickText(e,t).text},o=g.number.suffix,s=g.number.prefix,l=C.select(\"text.number\");function u(){var e=\"number\"==typeof r[0].y?s+i(r[0].y)+o:\"-\";l.text(e).call(f.font,g.number.font).call(p.convertToTspans,t)}w(E)?l.transition().duration(E.duration).ease(E.easing).each(\"end\",(function(){u(),L&&L()})).each(\"interrupt\",(function(){u(),L&&L()})).attrTween(\"text\",(function(){var t=n.select(this),e=a(r[0].lastY,r[0].y);g._lastValue=r[0].y;var l=O(g.number.valueformat,i,r[0].lastY,r[0].y);return function(r){t.text(s+l(e(r))+o)}})):u(),c=M(s+i(r[0].y)+o,g.number.font,A,t)}(),D+=g.number.font.size+g.number.font.family+g.number.valueformat+g.number.suffix+g.number.prefix,h=c);if(g._hasDelta&&g._hasNumber){var R,F,B=[(c.left+c.right)/2,(c.top+c.bottom)/2],N=[(u.left+u.right)/2,(u.top+u.bottom)/2],j=.75*g.delta.font.size;\"left\"===g.delta.position&&(R=S(g,\"deltaPos\",0,-1*(c.width*b[g.align]+u.width*(1-b[g.align])+j),D,Math.min),F=B[1]-N[1],h={width:c.width+u.width+j,height:Math.max(c.height,u.height),left:u.left+R,right:c.right,top:Math.min(c.top,u.top+F),bottom:Math.max(c.bottom,u.bottom+F)}),\"right\"===g.delta.position&&(R=S(g,\"deltaPos\",0,c.width*(1-b[g.align])+u.width*b[g.align]+j,D,Math.max),F=B[1]-N[1],h={width:c.width+u.width+j,height:Math.max(c.height,u.height),left:c.left,right:u.right+R,top:Math.min(c.top,u.top+F),bottom:Math.max(c.bottom,u.bottom+F)}),\"bottom\"===g.delta.position&&(R=null,F=u.height,h={width:Math.max(c.width,u.width),height:c.height+u.height,left:Math.min(c.left,u.left),right:Math.max(c.right,u.right),top:c.bottom-c.height,bottom:c.bottom+u.height}),\"top\"===g.delta.position&&(R=null,F=c.top,h={width:Math.max(c.width,u.width),height:c.height+u.height,left:Math.min(c.left,u.left),right:Math.max(c.right,u.right),top:c.bottom-c.height-u.height,bottom:c.bottom}),z.attr({dx:R,dy:F})}(g._hasNumber||g._hasDelta)&&C.attr(\"transform\",(function(){var t=i.numbersScaler(h);D+=t[2];var e,r=S(g,\"numbersScale\",1,t[0],D,Math.min);g._scaleNumbers||(r=1),e=g._isAngular?v-r*h.bottom:v-r*(h.top+h.bottom)/2,g._numbersTop=r*h.top+e;var n=h[T];\"center\"===T&&(n=(h.left+h.right)/2);var a=m-r*n;return a=S(g,\"numbersTranslate\",0,a,D,Math.max),l(a,e)+s(r)}))}(t,O,e,{numbersX:g,numbersY:E,numbersScaler:L,transitionOpts:r,onComplete:m}),z&&(C={range:I.gauge.axis.range,color:I.gauge.bgcolor,line:{color:I.gauge.bordercolor,width:0},thickness:1},P={range:I.gauge.axis.range,color:\"rgba(0, 0, 0, 0)\",line:{color:I.gauge.bordercolor,width:I.gauge.borderwidth},thickness:1});var Y=O.selectAll(\"g.angular\").data(D?e:[]);Y.exit().remove();var W=O.selectAll(\"g.angularaxis\").data(D?e:[]);W.exit().remove(),D&&function(t,e,r,a){var o,s,f,h,p=r[0].trace,g=a.size,m=a.radius,v=a.innerRadius,y=a.gaugeBg,x=a.gaugeOutline,b=[g.l+g.w/2,g.t+g.h/2+m/2],_=a.gauge,A=a.layer,M=a.transitionOpts,S=a.onComplete,E=Math.PI/2;function L(t){var e=p.gauge.axis.range[0],r=(t-e)/(p.gauge.axis.range[1]-e)*Math.PI-E;return r<-E?-E:r>E?E:r}function C(t){return n.svg.arc().innerRadius((v+m)/2-t/2*(m-v)).outerRadius((v+m)/2+t/2*(m-v)).startAngle(-E)}function P(t){t.attr(\"d\",(function(t){return C(t.thickness).startAngle(L(t.range[0])).endAngle(L(t.range[1]))()}))}_.enter().append(\"g\").classed(\"angular\",!0),_.attr(\"transform\",l(b[0],b[1])),A.enter().append(\"g\").classed(\"angularaxis\",!0).classed(\"crisp\",!0),A.selectAll(\"g.xangularaxistick,path,text\").remove(),(o=k(t,p.gauge.axis)).type=\"linear\",o.range=p.gauge.axis.range,o._id=\"xangularaxis\",o.ticklabeloverflow=\"allow\",o.setScale();var I=function(t){return(o.range[0]-t.x)/(o.range[1]-o.range[0])*Math.PI+Math.PI},O={},z=d.makeLabelFns(o,0).labelStandoff;O.xFn=function(t){var e=I(t);return Math.cos(e)*z},O.yFn=function(t){var e=I(t),r=Math.sin(e)>0?.2:1;return-Math.sin(e)*(z+t.fontSize*r)+Math.abs(Math.cos(e))*(t.fontSize*u)},O.anchorFn=function(t){var e=I(t),r=Math.cos(e);return Math.abs(r)<.1?\"middle\":r>0?\"start\":\"end\"},O.heightFn=function(t,e,r){var n=I(t);return-.5*(1+Math.sin(n))*r};var D=function(t){return l(b[0]+m*Math.cos(t),b[1]-m*Math.sin(t))};f=function(t){return D(I(t))};if(s=d.calcTicks(o),h=d.getTickSigns(o)[2],o.visible){h=\"inside\"===o.ticks?-1:1;var R=(o.linewidth||1)/2;d.drawTicks(t,o,{vals:s,layer:A,path:\"M\"+h*R+\",0h\"+h*o.ticklen,transFn:function(t){var e=I(t);return D(e)+\"rotate(\"+-c(e)+\")\"}}),d.drawLabels(t,o,{vals:s,layer:A,transFn:f,labelFns:O})}var F=[y].concat(p.gauge.steps),B=_.selectAll(\"g.bg-arc\").data(F);B.enter().append(\"g\").classed(\"bg-arc\",!0).append(\"path\"),B.select(\"path\").call(P).call(T),B.exit().remove();var N=C(p.gauge.bar.thickness),j=_.selectAll(\"g.value-arc\").data([p.gauge.bar]);j.enter().append(\"g\").classed(\"value-arc\",!0).append(\"path\");var U=j.select(\"path\");w(M)?(U.transition().duration(M.duration).ease(M.easing).each(\"end\",(function(){S&&S()})).each(\"interrupt\",(function(){S&&S()})).attrTween(\"d\",(V=N,H=L(r[0].lastY),q=L(r[0].y),function(){var t=i(H,q);return function(e){return V.endAngle(t(e))()}})),p._lastValue=r[0].y):U.attr(\"d\",\"number\"==typeof r[0].y?N.endAngle(L(r[0].y)):\"M0,0Z\");var V,H,q;U.call(T),j.exit().remove(),F=[];var G=p.gauge.threshold.value;(G||0===G)&&F.push({range:[G,G],color:p.gauge.threshold.color,line:{color:p.gauge.threshold.line.color,width:p.gauge.threshold.line.width},thickness:p.gauge.threshold.thickness});var Y=_.selectAll(\"g.threshold-arc\").data(F);Y.enter().append(\"g\").classed(\"threshold-arc\",!0).append(\"path\"),Y.select(\"path\").call(P).call(T),Y.exit().remove();var W=_.selectAll(\"g.gauge-outline\").data([x]);W.enter().append(\"g\").classed(\"gauge-outline\",!0).append(\"path\"),W.select(\"path\").call(P).call(T),W.exit().remove()}(t,0,e,{radius:U,innerRadius:V,gauge:Y,layer:W,size:B,gaugeBg:C,gaugeOutline:P,transitionOpts:r,onComplete:m});var X=O.selectAll(\"g.bullet\").data(R?e:[]);X.exit().remove();var Z=O.selectAll(\"g.bulletaxis\").data(R?e:[]);Z.exit().remove(),R&&function(t,e,r,n){var i,a,o,s,c,u=r[0].trace,f=n.gauge,p=n.layer,g=n.gaugeBg,m=n.gaugeOutline,v=n.size,x=u.domain,b=n.transitionOpts,_=n.onComplete;f.enter().append(\"g\").classed(\"bullet\",!0),f.attr(\"transform\",l(v.l,v.t)),p.enter().append(\"g\").classed(\"bulletaxis\",!0).classed(\"crisp\",!0),p.selectAll(\"g.xbulletaxistick,path,text\").remove();var A=v.h,M=u.gauge.bar.thickness*A,S=x.x[0],E=x.x[0]+(x.x[1]-x.x[0])*(u._hasNumber||u._hasDelta?1-h.bulletNumberDomainSize:1);(i=k(t,u.gauge.axis))._id=\"xbulletaxis\",i.domain=[S,E],i.setScale(),a=d.calcTicks(i),o=d.makeTransTickFn(i),s=d.getTickSigns(i)[2],c=v.t+v.h,i.visible&&(d.drawTicks(t,i,{vals:\"inside\"===i.ticks?d.clipEnds(i,a):a,layer:p,path:d.makeTickPath(i,c,s),transFn:o}),d.drawLabels(t,i,{vals:a,layer:p,transFn:o,labelFns:d.makeLabelFns(i,c)}));function L(t){t.attr(\"width\",(function(t){return Math.max(0,i.c2p(t.range[1])-i.c2p(t.range[0]))})).attr(\"x\",(function(t){return i.c2p(t.range[0])})).attr(\"y\",(function(t){return.5*(1-t.thickness)*A})).attr(\"height\",(function(t){return t.thickness*A}))}var C=[g].concat(u.gauge.steps),P=f.selectAll(\"g.bg-bullet\").data(C);P.enter().append(\"g\").classed(\"bg-bullet\",!0).append(\"rect\"),P.select(\"rect\").call(L).call(T),P.exit().remove();var I=f.selectAll(\"g.value-bullet\").data([u.gauge.bar]);I.enter().append(\"g\").classed(\"value-bullet\",!0).append(\"rect\"),I.select(\"rect\").attr(\"height\",M).attr(\"y\",(A-M)/2).call(T),w(b)?I.select(\"rect\").transition().duration(b.duration).ease(b.easing).each(\"end\",(function(){_&&_()})).each(\"interrupt\",(function(){_&&_()})).attr(\"width\",Math.max(0,i.c2p(Math.min(u.gauge.axis.range[1],r[0].y)))):I.select(\"rect\").attr(\"width\",\"number\"==typeof r[0].y?Math.max(0,i.c2p(Math.min(u.gauge.axis.range[1],r[0].y))):0);I.exit().remove();var O=r.filter((function(){return u.gauge.threshold.value||0===u.gauge.threshold.value})),z=f.selectAll(\"g.threshold-bullet\").data(O);z.enter().append(\"g\").classed(\"threshold-bullet\",!0).append(\"line\"),z.select(\"line\").attr(\"x1\",i.c2p(u.gauge.threshold.value)).attr(\"x2\",i.c2p(u.gauge.threshold.value)).attr(\"y1\",(1-u.gauge.threshold.thickness)/2*A).attr(\"y2\",(1-(1-u.gauge.threshold.thickness)/2)*A).call(y.stroke,u.gauge.threshold.line.color).style(\"stroke-width\",u.gauge.threshold.line.width),z.exit().remove();var D=f.selectAll(\"g.gauge-outline\").data([m]);D.enter().append(\"g\").classed(\"gauge-outline\",!0).append(\"rect\"),D.select(\"rect\").call(L).call(T),D.exit().remove()}(t,0,e,{gauge:X,layer:Z,size:B,gaugeBg:C,gaugeOutline:P,transitionOpts:r,onComplete:m});var J=O.selectAll(\"text.title\").data(e);J.exit().remove(),J.enter().append(\"text\").classed(\"title\",!0),J.attr(\"text-anchor\",(function(){return R?x.right:x[I.title.align]})).text(I.title.text).call(f.font,I.title.font).call(p.convertToTspans,t),J.attr(\"transform\",(function(){var t,e=B.l+B.w*b[I.title.align],r=h.titlePadding,n=f.bBox(J.node());if(z){if(D)if(I.gauge.axis.visible)t=f.bBox(W.node()).top-r-n.bottom;else t=B.t+B.h/2-U/2-n.bottom-r;R&&(t=E-(n.top+n.bottom)/2,e=B.l-h.bulletPadding*B.w)}else t=I._numbersTop-r-n.bottom;return l(e,t)}))}))}},{\"../../components/color\":366,\"../../components/drawing\":388,\"../../constants/alignment\":471,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../../plots/cartesian/axes\":554,\"../../plots/cartesian/axis_defaults\":556,\"../../plots/cartesian/layout_attributes\":569,\"../../plots/cartesian/position_defaults\":572,\"./constants\":858,\"@plotly/d3\":58,\"d3-interpolate\":116}],862:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/attributes\"),i=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,a=t(\"../../plots/template_attributes\").hovertemplateAttrs,o=t(\"../mesh3d/attributes\"),s=t(\"../../plots/attributes\"),l=t(\"../../lib/extend\").extendFlat,c=t(\"../../plot_api/edit_types\").overrideAll;var u=e.exports=c(l({x:{valType:\"data_array\"},y:{valType:\"data_array\"},z:{valType:\"data_array\"},value:{valType:\"data_array\"},isomin:{valType:\"number\"},isomax:{valType:\"number\"},surface:{show:{valType:\"boolean\",dflt:!0},count:{valType:\"integer\",dflt:2,min:1},fill:{valType:\"number\",min:0,max:1,dflt:1},pattern:{valType:\"flaglist\",flags:[\"A\",\"B\",\"C\",\"D\",\"E\"],extras:[\"all\",\"odd\",\"even\"],dflt:\"all\"}},spaceframe:{show:{valType:\"boolean\",dflt:!1},fill:{valType:\"number\",min:0,max:1,dflt:.15}},slices:{x:{show:{valType:\"boolean\",dflt:!1},locations:{valType:\"data_array\",dflt:[]},fill:{valType:\"number\",min:0,max:1,dflt:1}},y:{show:{valType:\"boolean\",dflt:!1},locations:{valType:\"data_array\",dflt:[]},fill:{valType:\"number\",min:0,max:1,dflt:1}},z:{show:{valType:\"boolean\",dflt:!1},locations:{valType:\"data_array\",dflt:[]},fill:{valType:\"number\",min:0,max:1,dflt:1}}},caps:{x:{show:{valType:\"boolean\",dflt:!0},fill:{valType:\"number\",min:0,max:1,dflt:1}},y:{show:{valType:\"boolean\",dflt:!0},fill:{valType:\"number\",min:0,max:1,dflt:1}},z:{show:{valType:\"boolean\",dflt:!0},fill:{valType:\"number\",min:0,max:1,dflt:1}}},text:{valType:\"string\",dflt:\"\",arrayOk:!0},hovertext:{valType:\"string\",dflt:\"\",arrayOk:!0},hovertemplate:a(),xhoverformat:i(\"x\"),yhoverformat:i(\"y\"),zhoverformat:i(\"z\"),valuehoverformat:i(\"value\",1),showlegend:l({},s.showlegend,{dflt:!1})},n(\"\",{colorAttr:\"`value`\",showScaleDflt:!0,editTypeOverride:\"calc\"}),{opacity:o.opacity,lightposition:o.lightposition,lighting:o.lighting,flatshading:o.flatshading,contour:o.contour,hoverinfo:l({},s.hoverinfo)}),\"calc\",\"nested\");u.flatshading.dflt=!0,u.lighting.facenormalsepsilon.dflt=0,u.x.editType=u.y.editType=u.z.editType=u.value.editType=\"calc+clearAxisTypes\",u.transforms=void 0},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plot_api/edit_types\":536,\"../../plots/attributes\":550,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/template_attributes\":633,\"../mesh3d/attributes\":867}],863:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/calc\"),i=t(\"../streamtube/calc\").processGrid,a=t(\"../streamtube/calc\").filter;e.exports=function(t,e){e._len=Math.min(e.x.length,e.y.length,e.z.length,e.value.length),e._x=a(e.x,e._len),e._y=a(e.y,e._len),e._z=a(e.z,e._len),e._value=a(e.value,e._len);var r=i(e);e._gridFill=r.fill,e._Xs=r.Xs,e._Ys=r.Ys,e._Zs=r.Zs,e._len=r.len;for(var o=1/0,s=-1/0,l=0;l0;r--){var n=Math.min(e[r],e[r-1]),i=Math.max(e[r],e[r-1]);if(i>n&&n-1}function R(t,e){return null===t?e:t}function F(e,r,n){C();var i,a,o,l=[r],c=[n];if(s>=1)l=[r],c=[n];else if(s>0){var u=function(t,e){var r=t[0],n=t[1],i=t[2],a=function(t,e,r){for(var n=[],i=0;i-1?n[p]:L(d,g,v);h[p]=x>-1?x:I(d,g,v,R(e,y))}i=h[0],a=h[1],o=h[2],t._meshI.push(i),t._meshJ.push(a),t._meshK.push(o),++m}}function B(t,e,r,n){var i=t[3];in&&(i=n);for(var a=(t[3]-i)/(t[3]-e[3]+1e-9),o=[],s=0;s<4;s++)o[s]=(1-a)*t[s]+a*e[s];return o}function N(t,e,r){return t>=e&&t<=r}function j(t){var e=.001*(E-S);return t>=S-e&&t<=E+e}function U(e){for(var r=[],n=0;n<4;n++){var i=e[n];r.push([t._x[i],t._y[i],t._z[i],t._value[i]])}return r}function V(t,e,r,n,i,a){a||(a=1),r=[-1,-1,-1];var o=!1,s=[N(e[0][3],n,i),N(e[1][3],n,i),N(e[2][3],n,i)];if(!s[0]&&!s[1]&&!s[2])return!1;var l=function(t,e,r){return j(e[0][3])&&j(e[1][3])&&j(e[2][3])?(F(t,e,r),!0):a<3&&V(t,e,r,S,E,++a)};if(s[0]&&s[1]&&s[2])return l(t,e,r)||o;var c=!1;return[[0,1,2],[2,0,1],[1,2,0]].forEach((function(a){if(s[a[0]]&&s[a[1]]&&!s[a[2]]){var u=e[a[0]],f=e[a[1]],h=e[a[2]],p=B(h,u,n,i),d=B(h,f,n,i);o=l(t,[d,p,u],[-1,-1,r[a[0]]])||o,o=l(t,[u,f,d],[r[a[0]],r[a[1]],-1])||o,c=!0}})),c||[[0,1,2],[1,2,0],[2,0,1]].forEach((function(a){if(s[a[0]]&&!s[a[1]]&&!s[a[2]]){var u=e[a[0]],f=e[a[1]],h=e[a[2]],p=B(f,u,n,i),d=B(h,u,n,i);o=l(t,[d,p,u],[-1,-1,r[a[0]]])||o,c=!0}})),o}function H(t,e,r,n){var i=!1,a=U(e),o=[N(a[0][3],r,n),N(a[1][3],r,n),N(a[2][3],r,n),N(a[3][3],r,n)];if(!(o[0]||o[1]||o[2]||o[3]))return i;if(o[0]&&o[1]&&o[2]&&o[3])return g&&(i=function(t,e,r){var n=function(n,i,a){F(t,[e[n],e[i],e[a]],[r[n],r[i],r[a]])};n(0,1,2),n(3,0,1),n(2,3,0),n(1,2,3)}(t,a,e)||i),i;var s=!1;return[[0,1,2,3],[3,0,1,2],[2,3,0,1],[1,2,3,0]].forEach((function(l){if(o[l[0]]&&o[l[1]]&&o[l[2]]&&!o[l[3]]){var c=a[l[0]],u=a[l[1]],f=a[l[2]],h=a[l[3]];if(g)i=F(t,[c,u,f],[e[l[0]],e[l[1]],e[l[2]]])||i;else{var p=B(h,c,r,n),d=B(h,u,r,n),m=B(h,f,r,n);i=F(null,[p,d,m],[-1,-1,-1])||i}s=!0}})),s?i:([[0,1,2,3],[1,2,3,0],[2,3,0,1],[3,0,1,2],[0,2,3,1],[1,3,2,0]].forEach((function(l){if(o[l[0]]&&o[l[1]]&&!o[l[2]]&&!o[l[3]]){var c=a[l[0]],u=a[l[1]],f=a[l[2]],h=a[l[3]],p=B(f,c,r,n),d=B(f,u,r,n),m=B(h,u,r,n),v=B(h,c,r,n);g?(i=F(t,[c,v,p],[e[l[0]],-1,-1])||i,i=F(t,[u,d,m],[e[l[1]],-1,-1])||i):i=function(t,e,r){var n=function(n,i,a){F(t,[e[n],e[i],e[a]],[r[n],r[i],r[a]])};n(0,1,2),n(2,3,0)}(null,[p,d,m,v],[-1,-1,-1,-1])||i,s=!0}})),s||[[0,1,2,3],[1,2,3,0],[2,3,0,1],[3,0,1,2]].forEach((function(l){if(o[l[0]]&&!o[l[1]]&&!o[l[2]]&&!o[l[3]]){var c=a[l[0]],u=a[l[1]],f=a[l[2]],h=a[l[3]],p=B(u,c,r,n),d=B(f,c,r,n),m=B(h,c,r,n);g?(i=F(t,[c,p,d],[e[l[0]],-1,-1])||i,i=F(t,[c,d,m],[e[l[0]],-1,-1])||i,i=F(t,[c,m,p],[e[l[0]],-1,-1])||i):i=F(null,[p,d,m],[-1,-1,-1])||i,s=!0}})),i)}function q(t,e,r,n,i,a,o,s,l,c,u){var f=!1;return d&&(D(t,\"A\")&&(f=H(null,[e,r,n,a],c,u)||f),D(t,\"B\")&&(f=H(null,[r,n,i,l],c,u)||f),D(t,\"C\")&&(f=H(null,[r,a,o,l],c,u)||f),D(t,\"D\")&&(f=H(null,[n,a,s,l],c,u)||f),D(t,\"E\")&&(f=H(null,[r,n,a,l],c,u)||f)),g&&(f=H(t,[r,n,a,l],c,u)||f),f}function G(t,e,r,n,i,a,o,s){return[!0===s[0]||V(t,U([e,r,n]),[e,r,n],a,o),!0===s[1]||V(t,U([n,i,e]),[n,i,e],a,o)]}function Y(t,e,r,n,i,a,o,s,l){return s?G(t,e,r,i,n,a,o,l):G(t,r,i,n,e,a,o,l)}function W(t,e,r,n,i,a,o){var s,l,c,u,f=!1,h=function(){f=V(t,[s,l,c],[-1,-1,-1],i,a)||f,f=V(t,[c,u,s],[-1,-1,-1],i,a)||f},p=o[0],d=o[1],g=o[2];return p&&(s=O(U([k(e,r-0,n-0)])[0],U([k(e-1,r-0,n-0)])[0],p),l=O(U([k(e,r-0,n-1)])[0],U([k(e-1,r-0,n-1)])[0],p),c=O(U([k(e,r-1,n-1)])[0],U([k(e-1,r-1,n-1)])[0],p),u=O(U([k(e,r-1,n-0)])[0],U([k(e-1,r-1,n-0)])[0],p),h()),d&&(s=O(U([k(e-0,r,n-0)])[0],U([k(e-0,r-1,n-0)])[0],d),l=O(U([k(e-0,r,n-1)])[0],U([k(e-0,r-1,n-1)])[0],d),c=O(U([k(e-1,r,n-1)])[0],U([k(e-1,r-1,n-1)])[0],d),u=O(U([k(e-1,r,n-0)])[0],U([k(e-1,r-1,n-0)])[0],d),h()),g&&(s=O(U([k(e-0,r-0,n)])[0],U([k(e-0,r-0,n-1)])[0],g),l=O(U([k(e-0,r-1,n)])[0],U([k(e-0,r-1,n-1)])[0],g),c=O(U([k(e-1,r-1,n)])[0],U([k(e-1,r-1,n-1)])[0],g),u=O(U([k(e-1,r-0,n)])[0],U([k(e-1,r-0,n-1)])[0],g),h()),f}function X(t,e,r,n,i,a,o,s,l,c,u,f){var h=t;return f?(d&&\"even\"===t&&(h=null),q(h,e,r,n,i,a,o,s,l,c,u)):(d&&\"odd\"===t&&(h=null),q(h,l,s,o,a,i,n,r,e,c,u))}function Z(t,e,r,n,i){for(var a=[],o=0,s=0;sMath.abs(d-M)?[A,d]:[d,M];$(e,T[0],T[1])}}var L=[[Math.min(S,M),Math.max(S,M)],[Math.min(A,E),Math.max(A,E)]];[\"x\",\"y\",\"z\"].forEach((function(e){for(var r=[],n=0;n0&&(u.push(p.id),\"x\"===e?f.push([p.distRatio,0,0]):\"y\"===e?f.push([0,p.distRatio,0]):f.push([0,0,p.distRatio]))}else c=nt(1,\"x\"===e?b-1:\"y\"===e?_-1:w-1);u.length>0&&(r[i]=\"x\"===e?tt(null,u,a,o,f,r[i]):\"y\"===e?et(null,u,a,o,f,r[i]):rt(null,u,a,o,f,r[i]),i++),c.length>0&&(r[i]=\"x\"===e?Z(null,c,a,o,r[i]):\"y\"===e?J(null,c,a,o,r[i]):K(null,c,a,o,r[i]),i++)}var d=t.caps[e];d.show&&d.fill&&(z(d.fill),r[i]=\"x\"===e?Z(null,[0,b-1],a,o,r[i]):\"y\"===e?J(null,[0,_-1],a,o,r[i]):K(null,[0,w-1],a,o,r[i]),i++)}})),0===m&&P(),t._meshX=n,t._meshY=i,t._meshZ=a,t._meshIntensity=o,t._Xs=v,t._Ys=y,t._Zs=x}(),t}e.exports={findNearestOnAxis:l,generateIsoMeshes:h,createIsosurfaceTrace:function(t,e){var r=t.glplot.gl,i=n({gl:r}),a=new c(t,i,e.uid);return i._trace=a,a.update(e),t.glplot.add(i),a}}},{\"../../../stackgl_modules\":1120,\"../../components/colorscale\":378,\"../../lib/gl_format_color\":499,\"../../lib/str2rgbarray\":528,\"../../plots/gl3d/zip3\":609}],865:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../registry\"),a=t(\"./attributes\"),o=t(\"../../components/colorscale/defaults\");function s(t,e,r,n,a){var s=a(\"isomin\"),l=a(\"isomax\");null!=l&&null!=s&&s>l&&(e.isomin=null,e.isomax=null);var c=a(\"x\"),u=a(\"y\"),f=a(\"z\"),h=a(\"value\");c&&c.length&&u&&u.length&&f&&f.length&&h&&h.length?(i.getComponentMethod(\"calendars\",\"handleTraceDefaults\")(t,e,[\"x\",\"y\",\"z\"],n),a(\"valuehoverformat\"),[\"x\",\"y\",\"z\"].forEach((function(t){a(t+\"hoverformat\");var e=\"caps.\"+t;a(e+\".show\")&&a(e+\".fill\");var r=\"slices.\"+t;a(r+\".show\")&&(a(r+\".fill\"),a(r+\".locations\"))})),a(\"spaceframe.show\")&&a(\"spaceframe.fill\"),a(\"surface.show\")&&(a(\"surface.count\"),a(\"surface.fill\"),a(\"surface.pattern\")),a(\"contour.show\")&&(a(\"contour.color\"),a(\"contour.width\")),[\"text\",\"hovertext\",\"hovertemplate\",\"lighting.ambient\",\"lighting.diffuse\",\"lighting.specular\",\"lighting.roughness\",\"lighting.fresnel\",\"lighting.vertexnormalsepsilon\",\"lighting.facenormalsepsilon\",\"lightposition.x\",\"lightposition.y\",\"lightposition.z\",\"flatshading\",\"opacity\"].forEach((function(t){a(t)})),o(t,e,n,a,{prefix:\"\",cLetter:\"c\"}),e._length=null):e.visible=!1}e.exports={supplyDefaults:function(t,e,r,i){s(t,e,r,i,(function(r,i){return n.coerce(t,e,a,r,i)}))},supplyIsoDefaults:s}},{\"../../components/colorscale/defaults\":376,\"../../lib\":503,\"../../registry\":638,\"./attributes\":862}],866:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\").supplyDefaults,calc:t(\"./calc\"),colorbar:{min:\"cmin\",max:\"cmax\"},plot:t(\"./convert\").createIsosurfaceTrace,moduleType:\"trace\",name:\"isosurface\",basePlotModule:t(\"../../plots/gl3d\"),categories:[\"gl3d\",\"showLegend\"],meta:{}}},{\"../../plots/gl3d\":598,\"./attributes\":862,\"./calc\":863,\"./convert\":864,\"./defaults\":865}],867:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/attributes\"),i=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,a=t(\"../../plots/template_attributes\").hovertemplateAttrs,o=t(\"../surface/attributes\"),s=t(\"../../plots/attributes\"),l=t(\"../../lib/extend\").extendFlat;e.exports=l({x:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},y:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},z:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},i:{valType:\"data_array\",editType:\"calc\"},j:{valType:\"data_array\",editType:\"calc\"},k:{valType:\"data_array\",editType:\"calc\"},text:{valType:\"string\",dflt:\"\",arrayOk:!0,editType:\"calc\"},hovertext:{valType:\"string\",dflt:\"\",arrayOk:!0,editType:\"calc\"},hovertemplate:a({editType:\"calc\"}),xhoverformat:i(\"x\"),yhoverformat:i(\"y\"),zhoverformat:i(\"z\"),delaunayaxis:{valType:\"enumerated\",values:[\"x\",\"y\",\"z\"],dflt:\"z\",editType:\"calc\"},alphahull:{valType:\"number\",dflt:-1,editType:\"calc\"},intensity:{valType:\"data_array\",editType:\"calc\"},intensitymode:{valType:\"enumerated\",values:[\"vertex\",\"cell\"],dflt:\"vertex\",editType:\"calc\"},color:{valType:\"color\",editType:\"calc\"},vertexcolor:{valType:\"data_array\",editType:\"calc\"},facecolor:{valType:\"data_array\",editType:\"calc\"},transforms:void 0},n(\"\",{colorAttr:\"`intensity`\",showScaleDflt:!0,editTypeOverride:\"calc\"}),{opacity:o.opacity,flatshading:{valType:\"boolean\",dflt:!1,editType:\"calc\"},contour:{show:l({},o.contours.x.show,{}),color:o.contours.x.color,width:o.contours.x.width,editType:\"calc\"},lightposition:{x:l({},o.lightposition.x,{dflt:1e5}),y:l({},o.lightposition.y,{dflt:1e5}),z:l({},o.lightposition.z,{dflt:0}),editType:\"calc\"},lighting:l({vertexnormalsepsilon:{valType:\"number\",min:0,max:1,dflt:1e-12,editType:\"calc\"},facenormalsepsilon:{valType:\"number\",min:0,max:1,dflt:1e-6,editType:\"calc\"},editType:\"calc\"},o.lighting),hoverinfo:l({},s.hoverinfo,{editType:\"calc\"}),showlegend:l({},s.showlegend,{dflt:!1})})},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/template_attributes\":633,\"../surface/attributes\":1057}],868:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/calc\");e.exports=function(t,e){e.intensity&&n(t,e,{vals:e.intensity,containerStr:\"\",cLetter:\"c\"})}},{\"../../components/colorscale/calc\":374}],869:[function(t,e,r){\"use strict\";var n=t(\"../../../stackgl_modules\").gl_mesh3d,i=t(\"../../../stackgl_modules\").delaunay_triangulate,a=t(\"../../../stackgl_modules\").alpha_shape,o=t(\"../../../stackgl_modules\").convex_hull,s=t(\"../../lib/gl_format_color\").parseColorScale,l=t(\"../../lib/str2rgbarray\"),c=t(\"../../components/colorscale\").extractOpts,u=t(\"../../plots/gl3d/zip3\");function f(t,e,r){this.scene=t,this.uid=r,this.mesh=e,this.name=\"\",this.color=\"#fff\",this.data=null,this.showContour=!1}var h=f.prototype;function p(t){for(var e=[],r=t.length,n=0;n=e-.5)return!1;return!0}h.handlePick=function(t){if(t.object===this.mesh){var e=t.index=t.data.index;t.data._cellCenter?t.traceCoordinate=t.data.dataCoordinate:t.traceCoordinate=[this.data.x[e],this.data.y[e],this.data.z[e]];var r=this.data.hovertext||this.data.text;return Array.isArray(r)&&void 0!==r[e]?t.textLabel=r[e]:r&&(t.textLabel=r),!0}},h.update=function(t){var e=this.scene,r=e.fullSceneLayout;this.data=t;var n,f=t.x.length,h=u(d(r.xaxis,t.x,e.dataScale[0],t.xcalendar),d(r.yaxis,t.y,e.dataScale[1],t.ycalendar),d(r.zaxis,t.z,e.dataScale[2],t.zcalendar));if(t.i&&t.j&&t.k){if(t.i.length!==t.j.length||t.j.length!==t.k.length||!m(t.i,f)||!m(t.j,f)||!m(t.k,f))return;n=u(g(t.i),g(t.j),g(t.k))}else n=0===t.alphahull?o(h):t.alphahull>0?a(t.alphahull,h):function(t,e){for(var r=[\"x\",\"y\",\"z\"].indexOf(t),n=[],a=e.length,o=0;ov):m=A>w,v=A;var M=c(w,T,k,A);M.pos=_,M.yc=(w+A)/2,M.i=b,M.dir=m?\"increasing\":\"decreasing\",M.x=M.pos,M.y=[k,T],y&&(M.orig_p=r[b]),d&&(M.tx=e.text[b]),g&&(M.htx=e.hovertext[b]),x.push(M)}else x.push({pos:_,empty:!0})}return e._extremes[l._id]=a.findExtremes(l,n.concat(h,f),{padded:!0}),x.length&&(x[0].t={labels:{open:i(t,\"open:\")+\" \",high:i(t,\"high:\")+\" \",low:i(t,\"low:\")+\" \",close:i(t,\"close:\")+\" \"}}),x}e.exports={calc:function(t,e){var r=a.getFromId(t,e.xaxis),i=a.getFromId(t,e.yaxis),s=function(t,e,r){var i=r._minDiff;if(!i){var a,s=t._fullData,l=[];for(i=1/0,a=0;a\"+c.labels[x]+n.hoverLabelText(s,b,l.yhoverformat):((y=i.extendFlat({},h)).y0=y.y1=_,y.yLabelVal=b,y.yLabel=c.labels[x]+n.hoverLabelText(s,b,l.yhoverformat),y.name=\"\",f.push(y),m[b]=y)}return f}function h(t,e,r,i){var a=t.cd,o=t.ya,l=a[0].trace,f=a[0].t,h=u(t,e,r,i);if(!h)return[];var p=a[h.index],d=h.index=p.i,g=p.dir;function m(t){return f.labels[t]+n.hoverLabelText(o,l[t][d],l.yhoverformat)}var v=p.hi||l.hoverinfo,y=v.split(\"+\"),x=\"all\"===v,b=x||-1!==y.indexOf(\"y\"),_=x||-1!==y.indexOf(\"text\"),w=b?[m(\"open\"),m(\"high\"),m(\"low\"),m(\"close\")+\" \"+c[g]]:[];return _&&s(p,l,w),h.extraText=w.join(\"
\"),h.y0=h.y1=o.c2p(p.yc,!0),[h]}e.exports={hoverPoints:function(t,e,r,n){return t.cd[0].trace.hoverlabel.split?f(t,e,r,n):h(t,e,r,n)},hoverSplit:f,hoverOnPoints:h}},{\"../../components/color\":366,\"../../components/fx\":406,\"../../constants/delta.js\":473,\"../../lib\":503,\"../../plots/cartesian/axes\":554}],876:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"ohlc\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"cartesian\",\"svg\",\"showLegend\"],meta:{},attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),calc:t(\"./calc\").calc,plot:t(\"./plot\"),style:t(\"./style\"),hoverPoints:t(\"./hover\").hoverPoints,selectPoints:t(\"./select\")}},{\"../../plots/cartesian\":568,\"./attributes\":872,\"./calc\":873,\"./defaults\":874,\"./hover\":875,\"./plot\":878,\"./select\":879,\"./style\":880}],877:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\");e.exports=function(t,e,r,a){var o=r(\"x\"),s=r(\"open\"),l=r(\"high\"),c=r(\"low\"),u=r(\"close\");if(r(\"hoverlabel.split\"),n.getComponentMethod(\"calendars\",\"handleTraceDefaults\")(t,e,[\"x\"],a),s&&l&&c&&u){var f=Math.min(s.length,l.length,c.length,u.length);return o&&(f=Math.min(f,i.minRowLength(o))),e._length=f,f}}},{\"../../lib\":503,\"../../registry\":638}],878:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\");e.exports=function(t,e,r,a){var o=e.yaxis,s=e.xaxis,l=!!s.rangebreaks;i.makeTraceGroups(a,r,\"trace ohlc\").each((function(t){var e=n.select(this),r=t[0],a=r.t;if(!0!==r.trace.visible||a.empty)e.remove();else{var c=a.tickLen,u=e.selectAll(\"path\").data(i.identity);u.enter().append(\"path\"),u.exit().remove(),u.attr(\"d\",(function(t){if(t.empty)return\"M0,0Z\";var e=s.c2p(t.pos-c,!0),r=s.c2p(t.pos+c,!0),n=l?(e+r)/2:s.c2p(t.pos,!0);return\"M\"+e+\",\"+o.c2p(t.o,!0)+\"H\"+n+\"M\"+n+\",\"+o.c2p(t.h,!0)+\"V\"+o.c2p(t.l,!0)+\"M\"+r+\",\"+o.c2p(t.c,!0)+\"H\"+n}))}}))}},{\"../../lib\":503,\"@plotly/d3\":58}],879:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r,n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s=n[0].t.bPos||0;if(!1===e)for(r=0;r=t.length)return!1;if(void 0!==e[t[r]])return!1;e[t[r]]=!0}return!0}(t.map((function(t){return t.displayindex}))))for(e=0;e0;c&&(o=\"array\");var u=r(\"categoryorder\",o);\"array\"===u?(r(\"categoryarray\"),r(\"ticktext\")):(delete t.categoryarray,delete t.ticktext),c||\"array\"!==u||(e.categoryorder=\"trace\")}}e.exports=function(t,e,r,f){function h(r,i){return n.coerce(t,e,l,r,i)}var p=s(t,e,{name:\"dimensions\",handleItemDefaults:u}),d=function(t,e,r,o,s){s(\"line.shape\"),s(\"line.hovertemplate\");var l=s(\"line.color\",o.colorway[0]);if(i(t,\"line\")&&n.isArrayOrTypedArray(l)){if(l.length)return s(\"line.colorscale\"),a(t,e,o,s,{prefix:\"line.\",cLetter:\"c\"}),l.length;e.line.color=r}return 1/0}(t,e,r,f,h);o(e,f,h),Array.isArray(p)&&p.length||(e.visible=!1),c(e,p,\"values\",d),h(\"hoveron\"),h(\"hovertemplate\"),h(\"arrangement\"),h(\"bundlecolors\"),h(\"sortpaths\"),h(\"counts\");var g={family:f.font.family,size:Math.round(f.font.size),color:f.font.color};n.coerceFont(h,\"labelfont\",g);var m={family:f.font.family,size:Math.round(f.font.size/1.2),color:f.font.color};n.coerceFont(h,\"tickfont\",m)}},{\"../../components/colorscale/defaults\":376,\"../../components/colorscale/helpers\":377,\"../../lib\":503,\"../../plots/array_container_defaults\":549,\"../../plots/domain\":584,\"../parcoords/merge_length\":897,\"./attributes\":881}],885:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),calc:t(\"./calc\"),plot:t(\"./plot\"),colorbar:{container:\"line\",min:\"cmin\",max:\"cmax\"},moduleType:\"trace\",name:\"parcats\",basePlotModule:t(\"./base_plot\"),categories:[\"noOpacity\"],meta:{}}},{\"./attributes\":881,\"./base_plot\":882,\"./calc\":883,\"./defaults\":884,\"./plot\":887}],886:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"d3-interpolate\").interpolateNumber,a=t(\"../../plot_api/plot_api\"),o=t(\"../../components/fx\"),s=t(\"../../lib\"),l=s.strTranslate,c=t(\"../../components/drawing\"),u=t(\"tinycolor2\"),f=t(\"../../lib/svg_text_utils\");function h(t,e,r,i){var a=t.map(F.bind(0,e,r)),o=i.selectAll(\"g.parcatslayer\").data([null]);o.enter().append(\"g\").attr(\"class\",\"parcatslayer\").style(\"pointer-events\",\"all\");var u=o.selectAll(\"g.trace.parcats\").data(a,p),h=u.enter().append(\"g\").attr(\"class\",\"trace parcats\");u.attr(\"transform\",(function(t){return l(t.x,t.y)})),h.append(\"g\").attr(\"class\",\"paths\");var y=u.select(\"g.paths\").selectAll(\"path.path\").data((function(t){return t.paths}),p);y.attr(\"fill\",(function(t){return t.model.color}));var x=y.enter().append(\"path\").attr(\"class\",\"path\").attr(\"stroke-opacity\",0).attr(\"fill\",(function(t){return t.model.color})).attr(\"fill-opacity\",0);_(x),y.attr(\"d\",(function(t){return t.svgD})),x.empty()||y.sort(g),y.exit().remove(),y.on(\"mouseover\",m).on(\"mouseout\",v).on(\"click\",b),h.append(\"g\").attr(\"class\",\"dimensions\");var w=u.select(\"g.dimensions\").selectAll(\"g.dimension\").data((function(t){return t.dimensions}),p);w.enter().append(\"g\").attr(\"class\",\"dimension\"),w.attr(\"transform\",(function(t){return l(t.x,0)})),w.exit().remove();var A=w.selectAll(\"g.category\").data((function(t){return t.categories}),p),M=A.enter().append(\"g\").attr(\"class\",\"category\");A.attr(\"transform\",(function(t){return l(0,t.y)})),M.append(\"rect\").attr(\"class\",\"catrect\").attr(\"pointer-events\",\"none\"),A.select(\"rect.catrect\").attr(\"fill\",\"none\").attr(\"width\",(function(t){return t.width})).attr(\"height\",(function(t){return t.height})),T(M);var S=A.selectAll(\"rect.bandrect\").data((function(t){return t.bands}),p);S.each((function(){s.raiseToTop(this)})),S.attr(\"fill\",(function(t){return t.color}));var E=S.enter().append(\"rect\").attr(\"class\",\"bandrect\").attr(\"stroke-opacity\",0).attr(\"fill\",(function(t){return t.color})).attr(\"fill-opacity\",0);S.attr(\"fill\",(function(t){return t.color})).attr(\"width\",(function(t){return t.width})).attr(\"height\",(function(t){return t.height})).attr(\"y\",(function(t){return t.y})).attr(\"cursor\",(function(t){return\"fixed\"===t.parcatsViewModel.arrangement?\"default\":\"perpendicular\"===t.parcatsViewModel.arrangement?\"ns-resize\":\"move\"})),k(E),S.exit().remove(),M.append(\"text\").attr(\"class\",\"catlabel\").attr(\"pointer-events\",\"none\");var z=e._fullLayout.paper_bgcolor;A.select(\"text.catlabel\").attr(\"text-anchor\",(function(t){return d(t)?\"start\":\"end\"})).attr(\"alignment-baseline\",\"middle\").style(\"text-shadow\",f.makeTextShadow(z)).style(\"fill\",\"rgb(0, 0, 0)\").attr(\"x\",(function(t){return d(t)?t.width+5:-5})).attr(\"y\",(function(t){return t.height/2})).text((function(t){return t.model.categoryLabel})).each((function(t){c.font(n.select(this),t.parcatsViewModel.categorylabelfont),f.convertToTspans(n.select(this),e)})),M.append(\"text\").attr(\"class\",\"dimlabel\"),A.select(\"text.dimlabel\").attr(\"text-anchor\",\"middle\").attr(\"alignment-baseline\",\"baseline\").attr(\"cursor\",(function(t){return\"fixed\"===t.parcatsViewModel.arrangement?\"default\":\"ew-resize\"})).attr(\"x\",(function(t){return t.width/2})).attr(\"y\",-5).text((function(t,e){return 0===e?t.parcatsViewModel.model.dimensions[t.model.dimensionInd].dimensionLabel:null})).each((function(t){c.font(n.select(this),t.parcatsViewModel.labelfont)})),A.selectAll(\"rect.bandrect\").on(\"mouseover\",L).on(\"mouseout\",C),A.exit().remove(),w.call(n.behavior.drag().origin((function(t){return{x:t.x,y:0}})).on(\"dragstart\",P).on(\"drag\",I).on(\"dragend\",O)),u.each((function(t){t.traceSelection=n.select(this),t.pathSelection=n.select(this).selectAll(\"g.paths\").selectAll(\"path.path\"),t.dimensionSelection=n.select(this).selectAll(\"g.dimensions\").selectAll(\"g.dimension\")})),u.exit().remove()}function p(t){return t.key}function d(t){var e=t.parcatsViewModel.dimensions.length,r=t.parcatsViewModel.dimensions[e-1].model.dimensionInd;return t.model.dimensionInd===r}function g(t,e){return t.model.rawColor>e.model.rawColor?1:t.model.rawColor\"),L=n.mouse(f)[0];o.loneHover({trace:h,x:b-d.left+g.left,y:_-d.top+g.top,text:E,color:t.model.color,borderColor:\"black\",fontFamily:'Monaco, \"Courier New\", monospace',fontSize:10,fontColor:T,idealAlign:L1&&h.displayInd===f.dimensions.length-1?(i=c.left,a=\"left\"):(i=c.left+c.width,a=\"right\");var g=u.model.count,m=u.model.categoryLabel,v=g/u.parcatsViewModel.model.count,y={countLabel:g,categoryLabel:m,probabilityLabel:v.toFixed(3)},x=[];-1!==u.parcatsViewModel.hoverinfoItems.indexOf(\"count\")&&x.push([\"Count:\",y.countLabel].join(\" \")),-1!==u.parcatsViewModel.hoverinfoItems.indexOf(\"probability\")&&x.push([\"P(\"+y.categoryLabel+\"):\",y.probabilityLabel].join(\" \"));var b=x.join(\"
\");return{trace:p,x:o*(i-e.left),y:s*(d-e.top),text:b,color:\"lightgray\",borderColor:\"black\",fontFamily:'Monaco, \"Courier New\", monospace',fontSize:12,fontColor:\"black\",idealAlign:a,hovertemplate:p.hovertemplate,hovertemplateLabels:y,eventData:[{data:p._input,fullData:p,count:g,category:m,probability:v}]}}function L(t){if(!t.parcatsViewModel.dragDimension&&-1===t.parcatsViewModel.hoverinfoItems.indexOf(\"skip\")){if(n.mouse(this)[1]<-1)return;var e,r=t.parcatsViewModel.graphDiv,i=r._fullLayout,a=i._paperdiv.node().getBoundingClientRect(),l=t.parcatsViewModel.hoveron;if(\"color\"===l?(!function(t){var e=n.select(t).datum(),r=A(e);w(r),r.each((function(){s.raiseToTop(this)})),n.select(t.parentNode).selectAll(\"rect.bandrect\").filter((function(t){return t.color===e.color})).each((function(){s.raiseToTop(this),n.select(this).attr(\"stroke\",\"black\").attr(\"stroke-width\",1.5)}))}(this),S(this,\"plotly_hover\",n.event)):(!function(t){n.select(t.parentNode).selectAll(\"rect.bandrect\").each((function(t){var e=A(t);w(e),e.each((function(){s.raiseToTop(this)}))})),n.select(t.parentNode).select(\"rect.catrect\").attr(\"stroke\",\"black\").attr(\"stroke-width\",2.5)}(this),M(this,\"plotly_hover\",n.event)),-1===t.parcatsViewModel.hoverinfoItems.indexOf(\"none\"))\"category\"===l?e=E(r,a,this):\"color\"===l?e=function(t,e,r){t._fullLayout._calcInverseTransform(t);var i,a,o=t._fullLayout._invScaleX,s=t._fullLayout._invScaleY,l=r.getBoundingClientRect(),c=n.select(r).datum(),f=c.categoryViewModel,h=f.parcatsViewModel,p=h.model.dimensions[f.model.dimensionInd],d=h.trace,g=l.y+l.height/2;h.dimensions.length>1&&p.displayInd===h.dimensions.length-1?(i=l.left,a=\"left\"):(i=l.left+l.width,a=\"right\");var m=f.model.categoryLabel,v=c.parcatsViewModel.model.count,y=0;c.categoryViewModel.bands.forEach((function(t){t.color===c.color&&(y+=t.count)}));var x=f.model.count,b=0;h.pathSelection.each((function(t){t.model.color===c.color&&(b+=t.model.count)}));var _=y/v,w=y/b,T=y/x,k={countLabel:v,categoryLabel:m,probabilityLabel:_.toFixed(3)},A=[];-1!==f.parcatsViewModel.hoverinfoItems.indexOf(\"count\")&&A.push([\"Count:\",k.countLabel].join(\" \")),-1!==f.parcatsViewModel.hoverinfoItems.indexOf(\"probability\")&&(A.push(\"P(color \\u2229 \"+m+\"): \"+k.probabilityLabel),A.push(\"P(\"+m+\" | color): \"+w.toFixed(3)),A.push(\"P(color | \"+m+\"): \"+T.toFixed(3)));var M=A.join(\"
\"),S=u.mostReadable(c.color,[\"black\",\"white\"]);return{trace:d,x:o*(i-e.left),y:s*(g-e.top),text:M,color:c.color,borderColor:\"black\",fontFamily:'Monaco, \"Courier New\", monospace',fontColor:S,fontSize:10,idealAlign:a,hovertemplate:d.hovertemplate,hovertemplateLabels:k,eventData:[{data:d._input,fullData:d,category:m,count:v,probability:_,categorycount:x,colorcount:b,bandcolorcount:y}]}}(r,a,this):\"dimension\"===l&&(e=function(t,e,r){var i=[];return n.select(r.parentNode.parentNode).selectAll(\"g.category\").select(\"rect.catrect\").each((function(){i.push(E(t,e,this))})),i}(r,a,this)),e&&o.loneHover(e,{container:i._hoverlayer.node(),outerContainer:i._paper.node(),gd:r})}}function C(t){var e=t.parcatsViewModel;if(!e.dragDimension&&(_(e.pathSelection),T(e.dimensionSelection.selectAll(\"g.category\")),k(e.dimensionSelection.selectAll(\"g.category\").selectAll(\"rect.bandrect\")),o.loneUnhover(e.graphDiv._fullLayout._hoverlayer.node()),e.pathSelection.sort(g),-1===e.hoverinfoItems.indexOf(\"skip\"))){\"color\"===t.parcatsViewModel.hoveron?S(this,\"plotly_unhover\",n.event):M(this,\"plotly_unhover\",n.event)}}function P(t){\"fixed\"!==t.parcatsViewModel.arrangement&&(t.dragDimensionDisplayInd=t.model.displayInd,t.initialDragDimensionDisplayInds=t.parcatsViewModel.model.dimensions.map((function(t){return t.displayInd})),t.dragHasMoved=!1,t.dragCategoryDisplayInd=null,n.select(this).selectAll(\"g.category\").select(\"rect.catrect\").each((function(e){var r=n.mouse(this)[0],i=n.mouse(this)[1];-2<=r&&r<=e.width+2&&-2<=i&&i<=e.height+2&&(t.dragCategoryDisplayInd=e.model.displayInd,t.initialDragCategoryDisplayInds=t.model.categories.map((function(t){return t.displayInd})),e.model.dragY=e.y,s.raiseToTop(this.parentNode),n.select(this.parentNode).selectAll(\"rect.bandrect\").each((function(e){e.yf.y+f.height/2&&(o.model.displayInd=f.model.displayInd,f.model.displayInd=l),t.dragCategoryDisplayInd=o.model.displayInd}if(null===t.dragCategoryDisplayInd||\"freeform\"===t.parcatsViewModel.arrangement){a.model.dragX=n.event.x;var h=t.parcatsViewModel.dimensions[r],p=t.parcatsViewModel.dimensions[i];void 0!==h&&a.model.dragXp.x&&(a.model.displayInd=p.model.displayInd,p.model.displayInd=t.dragDimensionDisplayInd),t.dragDimensionDisplayInd=a.model.displayInd}j(t.parcatsViewModel),N(t.parcatsViewModel),R(t.parcatsViewModel),D(t.parcatsViewModel)}}function O(t){if(\"fixed\"!==t.parcatsViewModel.arrangement&&null!==t.dragDimensionDisplayInd){n.select(this).selectAll(\"text\").attr(\"font-weight\",\"normal\");var e={},r=z(t.parcatsViewModel),i=t.parcatsViewModel.model.dimensions.map((function(t){return t.displayInd})),o=t.initialDragDimensionDisplayInds.some((function(t,e){return t!==i[e]}));o&&i.forEach((function(r,n){var i=t.parcatsViewModel.model.dimensions[n].containerInd;e[\"dimensions[\"+i+\"].displayindex\"]=r}));var s=!1;if(null!==t.dragCategoryDisplayInd){var l=t.model.categories.map((function(t){return t.displayInd}));if(s=t.initialDragCategoryDisplayInds.some((function(t,e){return t!==l[e]}))){var c=t.model.categories.slice().sort((function(t,e){return t.displayInd-e.displayInd})),u=c.map((function(t){return t.categoryValue})),f=c.map((function(t){return t.categoryLabel}));e[\"dimensions[\"+t.model.containerInd+\"].categoryarray\"]=[u],e[\"dimensions[\"+t.model.containerInd+\"].ticktext\"]=[f],e[\"dimensions[\"+t.model.containerInd+\"].categoryorder\"]=\"array\"}}if(-1===t.parcatsViewModel.hoverinfoItems.indexOf(\"skip\")&&!t.dragHasMoved&&t.potentialClickBand&&(\"color\"===t.parcatsViewModel.hoveron?S(t.potentialClickBand,\"plotly_click\",n.event.sourceEvent):M(t.potentialClickBand,\"plotly_click\",n.event.sourceEvent)),t.model.dragX=null,null!==t.dragCategoryDisplayInd)t.parcatsViewModel.dimensions[t.dragDimensionDisplayInd].categories[t.dragCategoryDisplayInd].model.dragY=null,t.dragCategoryDisplayInd=null;t.dragDimensionDisplayInd=null,t.parcatsViewModel.dragDimension=null,t.dragHasMoved=null,t.potentialClickBand=null,j(t.parcatsViewModel),N(t.parcatsViewModel),n.transition().duration(300).ease(\"cubic-in-out\").each((function(){R(t.parcatsViewModel,!0),D(t.parcatsViewModel,!0)})).each(\"end\",(function(){(o||s)&&a.restyle(t.parcatsViewModel.graphDiv,e,[r])}))}}function z(t){for(var e,r=t.graphDiv._fullData,n=0;n=0;s--)u+=\"C\"+c[s]+\",\"+(e[s+1]+n)+\" \"+l[s]+\",\"+(e[s]+n)+\" \"+(t[s]+r[s])+\",\"+(e[s]+n),u+=\"l-\"+r[s]+\",0 \";return u+=\"Z\"}function N(t){var e=t.dimensions,r=t.model,n=e.map((function(t){return t.categories.map((function(t){return t.y}))})),i=t.model.dimensions.map((function(t){return t.categories.map((function(t){return t.displayInd}))})),a=t.model.dimensions.map((function(t){return t.displayInd})),o=t.dimensions.map((function(t){return t.model.dimensionInd})),s=e.map((function(t){return t.x})),l=e.map((function(t){return t.width})),c=[];for(var u in r.paths)r.paths.hasOwnProperty(u)&&c.push(r.paths[u]);function f(t){var e=t.categoryInds.map((function(t,e){return i[e][t]}));return o.map((function(t){return e[t]}))}c.sort((function(e,r){var n=f(e),i=f(r);return\"backward\"===t.sortpaths&&(n.reverse(),i.reverse()),n.push(e.valueInds[0]),i.push(r.valueInds[0]),t.bundlecolors&&(n.unshift(e.rawColor),i.unshift(r.rawColor)),ni?1:0}));for(var h=new Array(c.length),p=e[0].model.count,d=e[0].categories.map((function(t){return t.height})).reduce((function(t,e){return t+e})),g=0;g0?d*(v.count/p):0;for(var y,x=new Array(n.length),b=0;b1?(t.width-80-16)/(n-1):0)*i;var a,o,s,l,c,u=[],f=t.model.maxCats,h=e.categories.length,p=e.count,d=t.height-8*(f-1),g=8*(f-h)/2,m=e.categories.map((function(t){return{displayInd:t.displayInd,categoryInd:t.categoryInd}}));for(m.sort((function(t,e){return t.displayInd-e.displayInd})),c=0;c0?o.count/p*d:0,s={key:o.valueInds[0],model:o,width:16,height:a,y:null!==o.dragY?o.dragY:g,bands:[],parcatsViewModel:t},g=g+a+8,u.push(s);return{key:e.dimensionInd,x:null!==e.dragX?e.dragX:r,y:0,width:16,model:e,categories:u,parcatsViewModel:t,dragCategoryDisplayInd:null,dragDimensionDisplayInd:null,initialDragDimensionDisplayInds:null,initialDragCategoryDisplayInds:null,dragHasMoved:null,potentialClickBand:null}}e.exports=function(t,e,r,n){h(r,t,n,e)}},{\"../../components/drawing\":388,\"../../components/fx\":406,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../../plot_api/plot_api\":540,\"@plotly/d3\":58,\"d3-interpolate\":116,tinycolor2:312}],887:[function(t,e,r){\"use strict\";var n=t(\"./parcats\");e.exports=function(t,e,r,i){var a=t._fullLayout,o=a._paper,s=a._size;n(t,o,e,{width:s.w,height:s.h,margin:{t:s.t,r:s.r,b:s.b,l:s.l}},r,i)}},{\"./parcats\":886}],888:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/attributes\"),i=t(\"../../plots/cartesian/layout_attributes\"),a=t(\"../../plots/font_attributes\"),o=t(\"../../plots/domain\").attributes,s=t(\"../../lib/extend\").extendFlat,l=t(\"../../plot_api/plot_template\").templatedArray;e.exports={domain:o({name:\"parcoords\",trace:!0,editType:\"plot\"}),labelangle:{valType:\"angle\",dflt:0,editType:\"plot\"},labelside:{valType:\"enumerated\",values:[\"top\",\"bottom\"],dflt:\"top\",editType:\"plot\"},labelfont:a({editType:\"plot\"}),tickfont:a({editType:\"plot\"}),rangefont:a({editType:\"plot\"}),dimensions:l(\"dimension\",{label:{valType:\"string\",editType:\"plot\"},tickvals:s({},i.tickvals,{editType:\"plot\"}),ticktext:s({},i.ticktext,{editType:\"plot\"}),tickformat:s({},i.tickformat,{editType:\"plot\"}),visible:{valType:\"boolean\",dflt:!0,editType:\"plot\"},range:{valType:\"info_array\",items:[{valType:\"number\",editType:\"plot\"},{valType:\"number\",editType:\"plot\"}],editType:\"plot\"},constraintrange:{valType:\"info_array\",freeLength:!0,dimensions:\"1-2\",items:[{valType:\"any\",editType:\"plot\"},{valType:\"any\",editType:\"plot\"}],editType:\"plot\"},multiselect:{valType:\"boolean\",dflt:!0,editType:\"plot\"},values:{valType:\"data_array\",editType:\"calc\"},editType:\"calc\"}),line:s({editType:\"calc\"},n(\"line\",{colorscaleDflt:\"Viridis\",autoColorDflt:!1,editTypeOverride:\"calc\"}))}},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plot_api/plot_template\":543,\"../../plots/cartesian/layout_attributes\":569,\"../../plots/domain\":584,\"../../plots/font_attributes\":585}],889:[function(t,e,r){\"use strict\";var n=t(\"./constants\"),i=t(\"@plotly/d3\"),a=t(\"../../lib/gup\").keyFun,o=t(\"../../lib/gup\").repeat,s=t(\"../../lib\").sorterAsc,l=t(\"../../lib\").strTranslate,c=n.bar.snapRatio;function u(t,e){return t*(1-c)+e*c}var f=n.bar.snapClose;function h(t,e){return t*(1-f)+e*f}function p(t,e,r,n){if(function(t,e){for(var r=0;r=e[r][0]&&t<=e[r][1])return!0;return!1}(r,n))return r;var i=t?-1:1,a=0,o=e.length-1;if(i<0){var s=a;a=o,o=s}for(var l=e[a],c=l,f=a;i*fe){h=r;break}}if(a=u,isNaN(a)&&(a=isNaN(f)||isNaN(h)?isNaN(f)?h:f:e-c[f][1]t[1]+r||e=.9*t[1]+.1*t[0]?\"n\":e<=.9*t[0]+.1*t[1]?\"s\":\"ns\"}(d,e);g&&(o.interval=l[a],o.intervalPix=d,o.region=g)}}if(t.ordinal&&!o.region){var m=t.unitTickvals,y=t.unitToPaddedPx.invert(e);for(r=0;r=x[0]&&y<=x[1]){o.clickableOrdinalRange=x;break}}}return o}function w(t,e){i.event.sourceEvent.stopPropagation();var r=e.height-i.mouse(t)[1]-2*n.verticalPadding,a=e.brush.svgBrush;a.wasDragged=!0,a._dragging=!0,a.grabbingBar?a.newExtent=[r-a.grabPoint,r+a.barLength-a.grabPoint].map(e.unitToPaddedPx.invert):a.newExtent=[a.startExtent,e.unitToPaddedPx.invert(r)].sort(s),e.brush.filterSpecified=!0,a.extent=a.stayingIntervals.concat([a.newExtent]),a.brushCallback(e),b(t.parentNode)}function T(t,e){var r=_(e,e.height-i.mouse(t)[1]-2*n.verticalPadding),a=\"crosshair\";r.clickableOrdinalRange?a=\"pointer\":r.region&&(a=r.region+\"-resize\"),i.select(document.body).style(\"cursor\",a)}function k(t){t.on(\"mousemove\",(function(t){i.event.preventDefault(),t.parent.inBrushDrag||T(this,t)})).on(\"mouseleave\",(function(t){t.parent.inBrushDrag||y()})).call(i.behavior.drag().on(\"dragstart\",(function(t){!function(t,e){i.event.sourceEvent.stopPropagation();var r=e.height-i.mouse(t)[1]-2*n.verticalPadding,a=e.unitToPaddedPx.invert(r),o=e.brush,s=_(e,r),l=s.interval,c=o.svgBrush;if(c.wasDragged=!1,c.grabbingBar=\"ns\"===s.region,c.grabbingBar){var u=l.map(e.unitToPaddedPx);c.grabPoint=r-u[0]-n.verticalPadding,c.barLength=u[1]-u[0]}c.clickableOrdinalRange=s.clickableOrdinalRange,c.stayingIntervals=e.multiselect&&o.filterSpecified?o.filter.getConsolidated():[],l&&(c.stayingIntervals=c.stayingIntervals.filter((function(t){return t[0]!==l[0]&&t[1]!==l[1]}))),c.startExtent=s.region?l[\"s\"===s.region?1:0]:a,e.parent.inBrushDrag=!0,c.brushStartCallback()}(this,t)})).on(\"drag\",(function(t){w(this,t)})).on(\"dragend\",(function(t){!function(t,e){var r=e.brush,n=r.filter,a=r.svgBrush;a._dragging||(T(t,e),w(t,e),e.brush.svgBrush.wasDragged=!1),a._dragging=!1,i.event.sourceEvent.stopPropagation();var o=a.grabbingBar;if(a.grabbingBar=!1,a.grabLocation=void 0,e.parent.inBrushDrag=!1,y(),!a.wasDragged)return a.wasDragged=void 0,a.clickableOrdinalRange?r.filterSpecified&&e.multiselect?a.extent.push(a.clickableOrdinalRange):(a.extent=[a.clickableOrdinalRange],r.filterSpecified=!0):o?(a.extent=a.stayingIntervals,0===a.extent.length&&M(r)):M(r),a.brushCallback(e),b(t.parentNode),void a.brushEndCallback(r.filterSpecified?n.getConsolidated():[]);var s=function(){n.set(n.getConsolidated())};if(e.ordinal){var l=e.unitTickvals;l[l.length-1]a.newExtent[0];a.extent=a.stayingIntervals.concat(c?[a.newExtent]:[]),a.extent.length||M(r),a.brushCallback(e),c?b(t.parentNode,s):(s(),b(t.parentNode))}else s();a.brushEndCallback(r.filterSpecified?n.getConsolidated():[])}(this,t)})))}function A(t,e){return t[0]-e[0]}function M(t){t.filterSpecified=!1,t.svgBrush.extent=[[-1/0,1/0]]}function S(t){for(var e,r=t.slice(),n=[],i=r.shift();i;){for(e=i.slice();(i=r.shift())&&i[0]<=e[1];)e[1]=Math.max(e[1],i[1]);n.push(e)}return 1===n.length&&n[0][0]>n[0][1]&&(n=[]),n}e.exports={makeBrush:function(t,e,r,n,i,a){var o,l=function(){var t,e,r=[];return{set:function(n){1===(r=n.map((function(t){return t.slice().sort(s)})).sort(A)).length&&r[0][0]===-1/0&&r[0][1]===1/0&&(r=[[0,-1]]),t=S(r),e=r.reduce((function(t,e){return[Math.min(t[0],e[0]),Math.max(t[1],e[1])]}),[1/0,-1/0])},get:function(){return r.slice()},getConsolidated:function(){return t},getBounds:function(){return e}}}();return l.set(r),{filter:l,filterSpecified:e,svgBrush:{extent:[],brushStartCallback:n,brushCallback:(o=i,function(t){var e=t.brush,r=function(t){return t.svgBrush.extent.map((function(t){return t.slice()}))}(e).slice();e.filter.set(r),o()}),brushEndCallback:a}}},ensureAxisBrush:function(t,e){var r=t.selectAll(\".\"+n.cn.axisBrush).data(o,a);r.enter().append(\"g\").classed(n.cn.axisBrush,!0),function(t,e){var r=t.selectAll(\".background\").data(o);r.enter().append(\"rect\").classed(\"background\",!0).call(d).call(g).style(\"pointer-events\",\"auto\").attr(\"transform\",l(0,n.verticalPadding)),r.call(k).attr(\"height\",(function(t){return t.height-n.verticalPadding}));var i=t.selectAll(\".highlight-shadow\").data(o);i.enter().append(\"line\").classed(\"highlight-shadow\",!0).attr(\"x\",-n.bar.width/2).attr(\"stroke-width\",n.bar.width+n.bar.strokeWidth).attr(\"stroke\",e).attr(\"opacity\",n.bar.strokeOpacity).attr(\"stroke-linecap\",\"butt\"),i.attr(\"y1\",(function(t){return t.height})).call(x);var a=t.selectAll(\".highlight\").data(o);a.enter().append(\"line\").classed(\"highlight\",!0).attr(\"x\",-n.bar.width/2).attr(\"stroke-width\",n.bar.width-n.bar.strokeWidth).attr(\"stroke\",n.bar.fillColor).attr(\"opacity\",n.bar.fillOpacity).attr(\"stroke-linecap\",\"butt\"),a.attr(\"y1\",(function(t){return t.height})).call(x)}(r,e)},cleanRanges:function(t,e){if(Array.isArray(t[0])?(t=t.map((function(t){return t.sort(s)})),t=e.multiselect?S(t.sort(A)):[t[0]]):t=[t.sort(s)],e.tickvals){var r=e.tickvals.slice().sort(s);if(!(t=t.map((function(t){var e=[p(0,r,t[0],[]),p(1,r,t[1],[])];if(e[1]>e[0])return e})).filter((function(t){return t}))).length)return}return t.length>1?t:t[0]}}},{\"../../lib\":503,\"../../lib/gup\":500,\"./constants\":892,\"@plotly/d3\":58}],890:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../plots/get_data\").getModuleCalcData,a=t(\"./plot\"),o=t(\"../../constants/xmlns_namespaces\");r.name=\"parcoords\",r.plot=function(t){var e=i(t.calcdata,\"parcoords\")[0];e.length&&a(t,e)},r.clean=function(t,e,r,n){var i=n._has&&n._has(\"parcoords\"),a=e._has&&e._has(\"parcoords\");i&&!a&&(n._paperdiv.selectAll(\".parcoords\").remove(),n._glimages.selectAll(\"*\").remove())},r.toSVG=function(t){var e=t._fullLayout._glimages,r=n.select(t).selectAll(\".svg-container\");r.filter((function(t,e){return e===r.size()-1})).selectAll(\".gl-canvas-context, .gl-canvas-focus\").each((function(){var t=this.toDataURL(\"image/png\");e.append(\"svg:image\").attr({xmlns:o.svg,\"xlink:href\":t,preserveAspectRatio:\"none\",x:0,y:0,width:this.style.width,height:this.style.height})})),window.setTimeout((function(){n.selectAll(\"#filterBarPattern\").attr(\"id\",\"filterBarPattern\")}),60)}},{\"../../constants/xmlns_namespaces\":480,\"../../plots/get_data\":593,\"./plot\":899,\"@plotly/d3\":58}],891:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").isArrayOrTypedArray,i=t(\"../../components/colorscale\"),a=t(\"../../lib/gup\").wrap;e.exports=function(t,e){var r,o;return i.hasColorscale(e,\"line\")&&n(e.line.color)?(r=e.line.color,o=i.extractOpts(e.line).colorscale,i.calc(t,e,{vals:r,containerStr:\"line\",cLetter:\"c\"})):(r=function(t){for(var e=new Array(t),r=0;rf&&(n.log(\"parcoords traces support up to \"+f+\" dimensions at the moment\"),d.splice(f));var g=s(t,e,{name:\"dimensions\",layout:l,handleItemDefaults:p}),m=function(t,e,r,o,s){var l=s(\"line.color\",r);if(i(t,\"line\")&&n.isArrayOrTypedArray(l)){if(l.length)return s(\"line.colorscale\"),a(t,e,o,s,{prefix:\"line.\",cLetter:\"c\"}),l.length;e.line.color=r}return 1/0}(t,e,r,l,u);o(e,l,u),Array.isArray(g)&&g.length||(e.visible=!1),h(e,g,\"values\",m);var v={family:l.font.family,size:Math.round(l.font.size/1.2),color:l.font.color};n.coerceFont(u,\"labelfont\",v),n.coerceFont(u,\"tickfont\",v),n.coerceFont(u,\"rangefont\",v),u(\"labelangle\"),u(\"labelside\")}},{\"../../components/colorscale/defaults\":376,\"../../components/colorscale/helpers\":377,\"../../lib\":503,\"../../plots/array_container_defaults\":549,\"../../plots/cartesian/axes\":554,\"../../plots/domain\":584,\"./attributes\":888,\"./axisbrush\":889,\"./constants\":892,\"./merge_length\":897}],894:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").isTypedArray;r.convertTypedArray=function(t){return n(t)?Array.prototype.slice.call(t):t},r.isOrdinal=function(t){return!!t.tickvals},r.isVisible=function(t){return t.visible||!(\"visible\"in t)}},{\"../../lib\":503}],895:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),calc:t(\"./calc\"),plot:t(\"./plot\"),colorbar:{container:\"line\",min:\"cmin\",max:\"cmax\"},moduleType:\"trace\",name:\"parcoords\",basePlotModule:t(\"./base_plot\"),categories:[\"gl\",\"regl\",\"noOpacity\",\"noHover\"],meta:{}}},{\"./attributes\":888,\"./base_plot\":890,\"./calc\":891,\"./defaults\":893,\"./plot\":899}],896:[function(t,e,r){\"use strict\";var n=t(\"glslify\"),i=n([\"precision highp float;\\n#define GLSLIFY 1\\n\\nvarying vec4 fragColor;\\n\\nattribute vec4 p01_04, p05_08, p09_12, p13_16,\\n p17_20, p21_24, p25_28, p29_32,\\n p33_36, p37_40, p41_44, p45_48,\\n p49_52, p53_56, p57_60, colors;\\n\\nuniform mat4 dim0A, dim1A, dim0B, dim1B, dim0C, dim1C, dim0D, dim1D,\\n loA, hiA, loB, hiB, loC, hiC, loD, hiD;\\n\\nuniform vec2 resolution, viewBoxPos, viewBoxSize;\\nuniform float maskHeight;\\nuniform float drwLayer; // 0: context, 1: focus, 2: pick\\nuniform vec4 contextColor;\\nuniform sampler2D maskTexture, palette;\\n\\nbool isPick = (drwLayer > 1.5);\\nbool isContext = (drwLayer < 0.5);\\n\\nconst vec4 ZEROS = vec4(0.0, 0.0, 0.0, 0.0);\\nconst vec4 UNITS = vec4(1.0, 1.0, 1.0, 1.0);\\n\\nfloat val(mat4 p, mat4 v) {\\n return dot(matrixCompMult(p, v) * UNITS, UNITS);\\n}\\n\\nfloat axisY(float ratio, mat4 A, mat4 B, mat4 C, mat4 D) {\\n float y1 = val(A, dim0A) + val(B, dim0B) + val(C, dim0C) + val(D, dim0D);\\n float y2 = val(A, dim1A) + val(B, dim1B) + val(C, dim1C) + val(D, dim1D);\\n return y1 * (1.0 - ratio) + y2 * ratio;\\n}\\n\\nint iMod(int a, int b) {\\n return a - b * (a / b);\\n}\\n\\nbool fOutside(float p, float lo, float hi) {\\n return (lo < hi) && (lo > p || p > hi);\\n}\\n\\nbool vOutside(vec4 p, vec4 lo, vec4 hi) {\\n return (\\n fOutside(p[0], lo[0], hi[0]) ||\\n fOutside(p[1], lo[1], hi[1]) ||\\n fOutside(p[2], lo[2], hi[2]) ||\\n fOutside(p[3], lo[3], hi[3])\\n );\\n}\\n\\nbool mOutside(mat4 p, mat4 lo, mat4 hi) {\\n return (\\n vOutside(p[0], lo[0], hi[0]) ||\\n vOutside(p[1], lo[1], hi[1]) ||\\n vOutside(p[2], lo[2], hi[2]) ||\\n vOutside(p[3], lo[3], hi[3])\\n );\\n}\\n\\nbool outsideBoundingBox(mat4 A, mat4 B, mat4 C, mat4 D) {\\n return mOutside(A, loA, hiA) ||\\n mOutside(B, loB, hiB) ||\\n mOutside(C, loC, hiC) ||\\n mOutside(D, loD, hiD);\\n}\\n\\nbool outsideRasterMask(mat4 A, mat4 B, mat4 C, mat4 D) {\\n mat4 pnts[4];\\n pnts[0] = A;\\n pnts[1] = B;\\n pnts[2] = C;\\n pnts[3] = D;\\n\\n for(int i = 0; i < 4; ++i) {\\n for(int j = 0; j < 4; ++j) {\\n for(int k = 0; k < 4; ++k) {\\n if(0 == iMod(\\n int(255.0 * texture2D(maskTexture,\\n vec2(\\n (float(i * 2 + j / 2) + 0.5) / 8.0,\\n (pnts[i][j][k] * (maskHeight - 1.0) + 1.0) / maskHeight\\n ))[3]\\n ) / int(pow(2.0, float(iMod(j * 4 + k, 8)))),\\n 2\\n )) return true;\\n }\\n }\\n }\\n return false;\\n}\\n\\nvec4 position(bool isContext, float v, mat4 A, mat4 B, mat4 C, mat4 D) {\\n float x = 0.5 * sign(v) + 0.5;\\n float y = axisY(x, A, B, C, D);\\n float z = 1.0 - abs(v);\\n\\n z += isContext ? 0.0 : 2.0 * float(\\n outsideBoundingBox(A, B, C, D) ||\\n outsideRasterMask(A, B, C, D)\\n );\\n\\n return vec4(\\n 2.0 * (vec2(x, y) * viewBoxSize + viewBoxPos) / resolution - 1.0,\\n z,\\n 1.0\\n );\\n}\\n\\nvoid main() {\\n mat4 A = mat4(p01_04, p05_08, p09_12, p13_16);\\n mat4 B = mat4(p17_20, p21_24, p25_28, p29_32);\\n mat4 C = mat4(p33_36, p37_40, p41_44, p45_48);\\n mat4 D = mat4(p49_52, p53_56, p57_60, ZEROS);\\n\\n float v = colors[3];\\n\\n gl_Position = position(isContext, v, A, B, C, D);\\n\\n fragColor =\\n isContext ? vec4(contextColor) :\\n isPick ? vec4(colors.rgb, 1.0) : texture2D(palette, vec2(abs(v), 0.5));\\n}\\n\"]),a=n([\"precision highp float;\\n#define GLSLIFY 1\\n\\nvarying vec4 fragColor;\\n\\nvoid main() {\\n gl_FragColor = fragColor;\\n}\\n\"]),o=t(\"./constants\").maxDimensionCount,s=t(\"../../lib\"),l=new Uint8Array(4),c=new Uint8Array(4),u={shape:[256,1],format:\"rgba\",type:\"uint8\",mag:\"nearest\",min:\"nearest\"};function f(t,e,r,n,i){var a=t._gl;a.enable(a.SCISSOR_TEST),a.scissor(e,r,n,i),t.clear({color:[0,0,0,0],depth:1})}function h(t,e,r,n,i,a){var o=a.key;r.drawCompleted||(!function(t){t.read({x:0,y:0,width:1,height:1,data:l})}(t),r.drawCompleted=!0),function s(l){var c=Math.min(n,i-l*n);0===l&&(window.cancelAnimationFrame(r.currentRafs[o]),delete r.currentRafs[o],f(t,a.scissorX,a.scissorY,a.scissorWidth,a.viewBoxSize[1])),r.clearOnly||(a.count=2*c,a.offset=2*l*n,e(a),l*n+c>>8*e)%256/255}function g(t,e,r){for(var n=new Array(8*e),i=0,a=0;au&&(u=t[i].dim1.canvasX,o=i);0===s&&f(T,0,0,r.canvasWidth,r.canvasHeight);var p=function(t){var e,r,n,i=[[],[]];for(n=0;n<64;n++){var a=!t&&no._length&&(S=S.slice(0,o._length));var L,C=o.tickvals;function P(t,e){return{val:t,text:L[e]}}function I(t,e){return t.val-e.val}if(Array.isArray(C)&&C.length){L=o.ticktext,Array.isArray(L)&&L.length?L.length>C.length?L=L.slice(0,C.length):C.length>L.length&&(C=C.slice(0,L.length)):L=C.map(a(o.tickformat));for(var O=1;O=r||l>=i)return;var c=t.lineLayer.readPixel(s,i-1-l),u=0!==c[3],f=u?c[2]+256*(c[1]+256*c[0]):null,h={x:s,y:l,clientX:e.clientX,clientY:e.clientY,dataIndex:t.model.key,curveNumber:f};f!==B&&(u?a.hover(h):a.unhover&&a.unhover(h),B=f)}})),F.style(\"opacity\",(function(t){return t.pick?0:1})),h.style(\"background\",\"rgba(255, 255, 255, 0)\");var N=h.selectAll(\".\"+y.cn.parcoords).data(R,d);N.exit().remove(),N.enter().append(\"g\").classed(y.cn.parcoords,!0).style(\"shape-rendering\",\"crispEdges\").style(\"pointer-events\",\"none\"),N.attr(\"transform\",(function(t){return c(t.model.translateX,t.model.translateY)}));var j=N.selectAll(\".\"+y.cn.parcoordsControlView).data(g,d);j.enter().append(\"g\").classed(y.cn.parcoordsControlView,!0),j.attr(\"transform\",(function(t){return c(t.model.pad.l,t.model.pad.t)}));var U=j.selectAll(\".\"+y.cn.yAxis).data((function(t){return t.dimensions}),d);U.enter().append(\"g\").classed(y.cn.yAxis,!0),j.each((function(t){O(U,t,_)})),F.each((function(t){if(t.viewModel){!t.lineLayer||a?t.lineLayer=b(this,t):t.lineLayer.update(t),(t.key||0===t.key)&&(t.viewModel[t.key]=t.lineLayer);var e=!t.context||a;t.lineLayer.render(t.viewModel.panels,e)}})),U.attr(\"transform\",(function(t){return c(t.xScale(t.xIndex),0)})),U.call(n.behavior.drag().origin((function(t){return t})).on(\"drag\",(function(t){var e=t.parent;S.linePickActive(!1),t.x=Math.max(-y.overdrag,Math.min(t.model.width+y.overdrag,n.event.x)),t.canvasX=t.x*t.model.canvasPixelRatio,U.sort((function(t,e){return t.x-e.x})).each((function(e,r){e.xIndex=r,e.x=t===e?e.x:e.xScale(e.xIndex),e.canvasX=e.x*e.model.canvasPixelRatio})),O(U,e,_),U.filter((function(e){return 0!==Math.abs(t.xIndex-e.xIndex)})).attr(\"transform\",(function(t){return c(t.xScale(t.xIndex),0)})),n.select(this).attr(\"transform\",c(t.x,0)),U.each((function(r,n,i){i===t.parent.key&&(e.dimensions[n]=r)})),e.contextLayer&&e.contextLayer.render(e.panels,!1,!E(e)),e.focusLayer.render&&e.focusLayer.render(e.panels)})).on(\"dragend\",(function(t){var e=t.parent;t.x=t.xScale(t.xIndex),t.canvasX=t.x*t.model.canvasPixelRatio,O(U,e,_),n.select(this).attr(\"transform\",(function(t){return c(t.x,0)})),e.contextLayer&&e.contextLayer.render(e.panels,!1,!E(e)),e.focusLayer&&e.focusLayer.render(e.panels),e.pickLayer&&e.pickLayer.render(e.panels,!0),S.linePickActive(!0),a&&a.axesMoved&&a.axesMoved(e.key,e.dimensions.map((function(t){return t.crossfilterDimensionIndex})))}))),U.exit().remove();var V=U.selectAll(\".\"+y.cn.axisOverlays).data(g,d);V.enter().append(\"g\").classed(y.cn.axisOverlays,!0),V.selectAll(\".\"+y.cn.axis).remove();var H=V.selectAll(\".\"+y.cn.axis).data(g,d);H.enter().append(\"g\").classed(y.cn.axis,!0),H.each((function(t){var e=t.model.height/t.model.tickDistance,r=t.domainScale,i=r.domain();n.select(this).call(n.svg.axis().orient(\"left\").tickSize(4).outerTickSize(2).ticks(e,t.tickFormat).tickValues(t.ordinal?i:null).tickFormat((function(e){return v.isOrdinal(t)?e:z(t.model.dimensions[t.visibleIndex],e)})).scale(r)),f.font(H.selectAll(\"text\"),t.model.tickFont)})),H.selectAll(\".domain, .tick>line\").attr(\"fill\",\"none\").attr(\"stroke\",\"black\").attr(\"stroke-opacity\",.25).attr(\"stroke-width\",\"1px\"),H.selectAll(\"text\").style(\"text-shadow\",u.makeTextShadow(T)).style(\"cursor\",\"default\");var q=V.selectAll(\".\"+y.cn.axisHeading).data(g,d);q.enter().append(\"g\").classed(y.cn.axisHeading,!0);var G=q.selectAll(\".\"+y.cn.axisTitle).data(g,d);G.enter().append(\"text\").classed(y.cn.axisTitle,!0).attr(\"text-anchor\",\"middle\").style(\"cursor\",\"ew-resize\").style(\"pointer-events\",\"auto\"),G.text((function(t){return t.label})).each((function(e){var r=n.select(this);f.font(r,e.model.labelFont),u.convertToTspans(r,t)})).attr(\"transform\",(function(t){var e=I(t.model.labelAngle,t.model.labelSide),r=y.axisTitleOffset;return(e.dir>0?\"\":c(0,2*r+t.model.height))+l(e.degrees)+c(-r*e.dx,-r*e.dy)})).attr(\"text-anchor\",(function(t){var e=I(t.model.labelAngle,t.model.labelSide);return 2*Math.abs(e.dx)>Math.abs(e.dy)?e.dir*e.dx<0?\"start\":\"end\":\"middle\"}));var Y=V.selectAll(\".\"+y.cn.axisExtent).data(g,d);Y.enter().append(\"g\").classed(y.cn.axisExtent,!0);var W=Y.selectAll(\".\"+y.cn.axisExtentTop).data(g,d);W.enter().append(\"g\").classed(y.cn.axisExtentTop,!0),W.attr(\"transform\",c(0,-y.axisExtentOffset));var X=W.selectAll(\".\"+y.cn.axisExtentTopText).data(g,d);X.enter().append(\"text\").classed(y.cn.axisExtentTopText,!0).call(P),X.text((function(t){return D(t,!0)})).each((function(t){f.font(n.select(this),t.model.rangeFont)}));var Z=Y.selectAll(\".\"+y.cn.axisExtentBottom).data(g,d);Z.enter().append(\"g\").classed(y.cn.axisExtentBottom,!0),Z.attr(\"transform\",(function(t){return c(0,t.model.height+y.axisExtentOffset)}));var J=Z.selectAll(\".\"+y.cn.axisExtentBottomText).data(g,d);J.enter().append(\"text\").classed(y.cn.axisExtentBottomText,!0).attr(\"dy\",\"0.75em\").call(P),J.text((function(t){return D(t,!1)})).each((function(t){f.font(n.select(this),t.model.rangeFont)})),x.ensureAxisBrush(V,T)}},{\"../../components/colorscale\":378,\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/gup\":500,\"../../lib/svg_text_utils\":529,\"../../plots/cartesian/axes\":554,\"./axisbrush\":889,\"./constants\":892,\"./helpers\":894,\"./lines\":896,\"@plotly/d3\":58,\"color-rgba\":91}],899:[function(t,e,r){\"use strict\";var n=t(\"./parcoords\"),i=t(\"../../lib/prepare_regl\"),a=t(\"./helpers\").isVisible;function o(t,e,r){var n=e.indexOf(r),i=t.indexOf(n);return-1===i&&(i+=e.length),i}e.exports=function(t,e){var r=t._fullLayout;if(i(t)){var s={},l={},c={},u={},f=r._size;e.forEach((function(e,r){var n=e[0].trace;c[r]=n.index;var i=u[r]=n._fullInput.index;s[r]=t.data[i].dimensions,l[r]=t.data[i].dimensions.slice()}));n(t,e,{width:f.w,height:f.h,margin:{t:f.t,r:f.r,b:f.b,l:f.l}},{filterChanged:function(e,n,i){var a=l[e][n],o=i.map((function(t){return t.slice()})),s=\"dimensions[\"+n+\"].constraintrange\",f=r._tracePreGUI[t._fullData[c[e]]._fullInput.uid];if(void 0===f[s]){var h=a.constraintrange;f[s]=h||null}var p=t._fullData[c[e]].dimensions[n];o.length?(1===o.length&&(o=o[0]),a.constraintrange=o,p.constraintrange=o.slice(),o=[o]):(delete a.constraintrange,delete p.constraintrange,o=null);var d={};d[s]=o,t.emit(\"plotly_restyle\",[d,[u[e]]])},hover:function(e){t.emit(\"plotly_hover\",e)},unhover:function(e){t.emit(\"plotly_unhover\",e)},axesMoved:function(e,r){var n=function(t,e){return function(r,n){return o(t,e,r)-o(t,e,n)}}(r,l[e].filter(a));s[e].sort(n),l[e].filter((function(t){return!a(t)})).sort((function(t){return l[e].indexOf(t)})).forEach((function(t){s[e].splice(s[e].indexOf(t),1),s[e].splice(l[e].indexOf(t),0,t)})),t.emit(\"plotly_restyle\",[{dimensions:[s[e]]},[u[e]]])}})}}},{\"../../lib/prepare_regl\":516,\"./helpers\":894,\"./parcoords\":898}],900:[function(t,e,r){\"use strict\";var n=t(\"../../plots/attributes\"),i=t(\"../../plots/domain\").attributes,a=t(\"../../plots/font_attributes\"),o=t(\"../../components/color/attributes\"),s=t(\"../../plots/template_attributes\").hovertemplateAttrs,l=t(\"../../plots/template_attributes\").texttemplateAttrs,c=t(\"../../lib/extend\").extendFlat,u=a({editType:\"plot\",arrayOk:!0,colorEditType:\"plot\"});e.exports={labels:{valType:\"data_array\",editType:\"calc\"},label0:{valType:\"number\",dflt:0,editType:\"calc\"},dlabel:{valType:\"number\",dflt:1,editType:\"calc\"},values:{valType:\"data_array\",editType:\"calc\"},marker:{colors:{valType:\"data_array\",editType:\"calc\"},line:{color:{valType:\"color\",dflt:o.defaultLine,arrayOk:!0,editType:\"style\"},width:{valType:\"number\",min:0,dflt:0,arrayOk:!0,editType:\"style\"},editType:\"calc\"},editType:\"calc\"},text:{valType:\"data_array\",editType:\"plot\"},hovertext:{valType:\"string\",dflt:\"\",arrayOk:!0,editType:\"style\"},scalegroup:{valType:\"string\",dflt:\"\",editType:\"calc\"},textinfo:{valType:\"flaglist\",flags:[\"label\",\"text\",\"value\",\"percent\"],extras:[\"none\"],editType:\"calc\"},hoverinfo:c({},n.hoverinfo,{flags:[\"label\",\"text\",\"value\",\"percent\",\"name\"]}),hovertemplate:s({},{keys:[\"label\",\"color\",\"value\",\"percent\",\"text\"]}),texttemplate:l({editType:\"plot\"},{keys:[\"label\",\"color\",\"value\",\"percent\",\"text\"]}),textposition:{valType:\"enumerated\",values:[\"inside\",\"outside\",\"auto\",\"none\"],dflt:\"auto\",arrayOk:!0,editType:\"plot\"},textfont:c({},u,{}),insidetextorientation:{valType:\"enumerated\",values:[\"horizontal\",\"radial\",\"tangential\",\"auto\"],dflt:\"auto\",editType:\"plot\"},insidetextfont:c({},u,{}),outsidetextfont:c({},u,{}),automargin:{valType:\"boolean\",dflt:!1,editType:\"plot\"},title:{text:{valType:\"string\",dflt:\"\",editType:\"plot\"},font:c({},u,{}),position:{valType:\"enumerated\",values:[\"top left\",\"top center\",\"top right\",\"middle center\",\"bottom left\",\"bottom center\",\"bottom right\"],editType:\"plot\"},editType:\"plot\"},domain:i({name:\"pie\",trace:!0,editType:\"calc\"}),hole:{valType:\"number\",min:0,max:1,dflt:0,editType:\"calc\"},sort:{valType:\"boolean\",dflt:!0,editType:\"calc\"},direction:{valType:\"enumerated\",values:[\"clockwise\",\"counterclockwise\"],dflt:\"counterclockwise\",editType:\"calc\"},rotation:{valType:\"number\",min:-360,max:360,dflt:0,editType:\"calc\"},pull:{valType:\"number\",min:0,max:1,dflt:0,arrayOk:!0,editType:\"calc\"},_deprecated:{title:{valType:\"string\",dflt:\"\",editType:\"calc\"},titlefont:c({},u,{}),titleposition:{valType:\"enumerated\",values:[\"top left\",\"top center\",\"top right\",\"middle center\",\"bottom left\",\"bottom center\",\"bottom right\"],editType:\"calc\"}}}},{\"../../components/color/attributes\":365,\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/domain\":584,\"../../plots/font_attributes\":585,\"../../plots/template_attributes\":633}],901:[function(t,e,r){\"use strict\";var n=t(\"../../plots/plots\");r.name=\"pie\",r.plot=function(t,e,i,a){n.plotBasePlot(r.name,t,e,i,a)},r.clean=function(t,e,i,a){n.cleanBasePlot(r.name,t,e,i,a)}},{\"../../plots/plots\":619}],902:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"tinycolor2\"),a=t(\"../../components/color\"),o={};function s(t){return function(e,r){return!!e&&(!!(e=i(e)).isValid()&&(e=a.addOpacity(e,e.getAlpha()),t[r]||(t[r]=e),e))}}function l(t,e){var r,n=JSON.stringify(t),a=e[n];if(!a){for(a=t.slice(),r=0;r=0})),(\"funnelarea\"===e.type?v:e.sort)&&a.sort((function(t,e){return e.v-t.v})),a[0]&&(a[0].vTotal=m),a},crossTraceCalc:function(t,e){var r=(e||{}).type;r||(r=\"pie\");var n=t._fullLayout,i=t.calcdata,a=n[r+\"colorway\"],s=n[\"_\"+r+\"colormap\"];n[\"extend\"+r+\"colors\"]&&(a=l(a,o));for(var c=0,u=0;u0){s=!0;break}}s||(o=0)}return{hasLabels:r,hasValues:a,len:o}}e.exports={handleLabelsAndValues:l,supplyDefaults:function(t,e,r,n){function c(r,n){return i.coerce(t,e,a,r,n)}var u=l(c(\"labels\"),c(\"values\")),f=u.len;if(e._hasLabels=u.hasLabels,e._hasValues=u.hasValues,!e._hasLabels&&e._hasValues&&(c(\"label0\"),c(\"dlabel\")),f){e._length=f,c(\"marker.line.width\")&&c(\"marker.line.color\"),c(\"marker.colors\"),c(\"scalegroup\");var h,p=c(\"text\"),d=c(\"texttemplate\");if(d||(h=c(\"textinfo\",Array.isArray(p)?\"text+percent\":\"percent\")),c(\"hovertext\"),c(\"hovertemplate\"),d||h&&\"none\"!==h){var g=c(\"textposition\");s(t,e,n,c,g,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),(Array.isArray(g)||\"auto\"===g||\"outside\"===g)&&c(\"automargin\"),(\"inside\"===g||\"auto\"===g||Array.isArray(g))&&c(\"insidetextorientation\")}o(e,n,c);var m=c(\"hole\");if(c(\"title.text\")){var v=c(\"title.position\",m?\"middle center\":\"top center\");m||\"middle center\"!==v||(e.title.position=\"top center\"),i.coerceFont(c,\"title.font\",n.font)}c(\"sort\"),c(\"direction\"),c(\"rotation\"),c(\"pull\")}else e.visible=!1}}},{\"../../lib\":503,\"../../plots/domain\":584,\"../bar/defaults\":652,\"./attributes\":900,\"fast-isnumeric\":190}],904:[function(t,e,r){\"use strict\";var n=t(\"../../components/fx/helpers\").appendArrayMultiPointValues;e.exports=function(t,e){var r={curveNumber:e.index,pointNumbers:t.pts,data:e._input,fullData:e,label:t.label,color:t.color,value:t.v,percent:t.percent,text:t.text,bbox:t.bbox,v:t.v};return 1===t.pts.length&&(r.pointNumber=r.i=t.pts[0]),n(r,e,t.pts),\"funnelarea\"===e.type&&(delete r.v,delete r.i),r}},{\"../../components/fx/helpers\":402}],905:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");function i(t){return-1!==t.indexOf(\"e\")?t.replace(/[.]?0+e/,\"e\"):-1!==t.indexOf(\".\")?t.replace(/[.]?0+$/,\"\"):t}r.formatPiePercent=function(t,e){var r=i((100*t).toPrecision(3));return n.numSeparate(r,e)+\"%\"},r.formatPieValue=function(t,e){var r=i(t.toPrecision(10));return n.numSeparate(r,e)},r.getFirstFilled=function(t,e){if(Array.isArray(t))for(var r=0;r\"),name:f.hovertemplate||-1!==h.indexOf(\"name\")?f.name:void 0,idealAlign:t.pxmid[0]<0?\"left\":\"right\",color:m.castOption(_.bgcolor,t.pts)||t.color,borderColor:m.castOption(_.bordercolor,t.pts),fontFamily:m.castOption(w.family,t.pts),fontSize:m.castOption(w.size,t.pts),fontColor:m.castOption(w.color,t.pts),nameLength:m.castOption(_.namelength,t.pts),textAlign:m.castOption(_.align,t.pts),hovertemplate:m.castOption(f.hovertemplate,t.pts),hovertemplateLabels:t,eventData:[v(t,f)]},{container:r._hoverlayer.node(),outerContainer:r._paper.node(),gd:e,inOut_bbox:T}),t.bbox=T[0],c._hasHoverLabel=!0}c._hasHoverEvent=!0,e.emit(\"plotly_hover\",{points:[v(t,f)],event:n.event})}})),t.on(\"mouseout\",(function(t){var r=e._fullLayout,i=e._fullData[c.index],o=n.select(this).datum();c._hasHoverEvent&&(t.originalEvent=n.event,e.emit(\"plotly_unhover\",{points:[v(o,i)],event:n.event}),c._hasHoverEvent=!1),c._hasHoverLabel&&(a.loneUnhover(r._hoverlayer.node()),c._hasHoverLabel=!1)})),t.on(\"click\",(function(t){var r=e._fullLayout,i=e._fullData[c.index];e._dragging||!1===r.hovermode||(e._hoverdata=[v(t,i)],a.click(e,n.event))}))}function b(t,e,r){var n=m.castOption(t.insidetextfont.color,e.pts);!n&&t._input.textfont&&(n=m.castOption(t._input.textfont.color,e.pts));var i=m.castOption(t.insidetextfont.family,e.pts)||m.castOption(t.textfont.family,e.pts)||r.family,a=m.castOption(t.insidetextfont.size,e.pts)||m.castOption(t.textfont.size,e.pts)||r.size;return{color:n||o.contrast(e.color),family:i,size:a}}function _(t,e){for(var r,n,i=0;ie&&e>n||r=-4;m-=2)v(Math.PI*m,\"tan\");for(m=4;m>=-4;m-=2)v(Math.PI*(m+1),\"tan\")}if(f||p){for(m=4;m>=-4;m-=2)v(Math.PI*(m+1.5),\"rad\");for(m=4;m>=-4;m-=2)v(Math.PI*(m+.5),\"rad\")}}if(s||d||f){var y=Math.sqrt(t.width*t.width+t.height*t.height);if((a={scale:i*n*2/y,rCenter:1-i,rotate:0}).textPosAngle=(e.startangle+e.stopangle)/2,a.scale>=1)return a;g.push(a)}(d||p)&&((a=T(t,n,o,l,c)).textPosAngle=(e.startangle+e.stopangle)/2,g.push(a)),(d||h)&&((a=k(t,n,o,l,c)).textPosAngle=(e.startangle+e.stopangle)/2,g.push(a));for(var x=0,b=0,_=0;_=1)break}return g[x]}function T(t,e,r,n,i){e=Math.max(0,e-2*g);var a=t.width/t.height,o=S(a,n,e,r);return{scale:2*o/t.height,rCenter:A(a,o/e),rotate:M(i)}}function k(t,e,r,n,i){e=Math.max(0,e-2*g);var a=t.height/t.width,o=S(a,n,e,r);return{scale:2*o/t.width,rCenter:A(a,o/e),rotate:M(i+Math.PI/2)}}function A(t,e){return Math.cos(e)-t*e}function M(t){return(180/Math.PI*t+720)%180-90}function S(t,e,r,n){var i=t+1/(2*Math.tan(e));return r*Math.min(1/(Math.sqrt(i*i+.5)+i),n/(Math.sqrt(t*t+n/2)+t))}function E(t,e){return t.v!==e.vTotal||e.trace.hole?Math.min(1/(1+1/Math.sin(t.halfangle)),t.ring/2):1}function L(t,e){var r=e.pxmid[0],n=e.pxmid[1],i=t.width/2,a=t.height/2;return r<0&&(i*=-1),n<0&&(a*=-1),{scale:1,rCenter:1,rotate:0,x:i+Math.abs(a)*(i>0?1:-1)/2,y:a/(1+r*r/(n*n)),outside:!0}}function C(t,e){var r,n,i,a=t.trace,o={x:t.cx,y:t.cy},s={tx:0,ty:0};s.ty+=a.title.font.size,i=I(a),-1!==a.title.position.indexOf(\"top\")?(o.y-=(1+i)*t.r,s.ty-=t.titleBox.height):-1!==a.title.position.indexOf(\"bottom\")&&(o.y+=(1+i)*t.r);var l,c,u=(l=t.r,c=t.trace.aspectratio,l/(void 0===c?1:c)),f=e.w*(a.domain.x[1]-a.domain.x[0])/2;return-1!==a.title.position.indexOf(\"left\")?(f+=u,o.x-=(1+i)*u,s.tx+=t.titleBox.width/2):-1!==a.title.position.indexOf(\"center\")?f*=2:-1!==a.title.position.indexOf(\"right\")&&(f+=u,o.x+=(1+i)*u,s.tx-=t.titleBox.width/2),r=f/t.titleBox.width,n=P(t,e)/t.titleBox.height,{x:o.x,y:o.y,scale:Math.min(r,n),tx:s.tx,ty:s.ty}}function P(t,e){var r=t.trace,n=e.h*(r.domain.y[1]-r.domain.y[0]);return Math.min(t.titleBox.height,n/2)}function I(t){var e,r=t.pull;if(!r)return 0;if(Array.isArray(r))for(r=0,e=0;er&&(r=t.pull[e]);return r}function O(t,e){for(var r=[],n=0;n1?(c=r.r,u=c/i.aspectratio):(u=r.r,c=u*i.aspectratio),c*=(1+i.baseratio)/2,l=c*u}o=Math.min(o,l/r.vTotal)}for(n=0;n\")}if(a){var x=l.castOption(i,e.i,\"texttemplate\");if(x){var b=function(t){return{label:t.label,value:t.v,valueLabel:m.formatPieValue(t.v,n.separators),percent:t.v/r.vTotal,percentLabel:m.formatPiePercent(t.v/r.vTotal,n.separators),color:t.color,text:t.text,customdata:l.castOption(i,t.i,\"customdata\")}}(e),_=m.getFirstFilled(i.text,e.pts);(y(_)||\"\"===_)&&(b.text=_),e.text=l.texttemplateString(x,b,t._fullLayout._d3locale,b,i._meta||{})}else e.text=\"\"}}function R(t,e){var r=t.rotate*Math.PI/180,n=Math.cos(r),i=Math.sin(r),a=(e.left+e.right)/2,o=(e.top+e.bottom)/2;t.textX=a*n-o*i,t.textY=a*i+o*n,t.noCenter=!0}e.exports={plot:function(t,e){var r=t._fullLayout,a=r._size;d(\"pie\",r),_(e,t),O(e,a);var h=l.makeTraceGroups(r._pielayer,e,\"trace\").each((function(e){var h=n.select(this),d=e[0],g=d.trace;!function(t){var e,r,n,i=t[0],a=i.r,o=i.trace,s=m.getRotationAngle(o.rotation),l=2*Math.PI/i.vTotal,c=\"px0\",u=\"px1\";if(\"counterclockwise\"===o.direction){for(e=0;ei.vTotal/2?1:0,r.halfangle=Math.PI*Math.min(r.v/i.vTotal,.5),r.ring=1-o.hole,r.rInscribed=E(r,i))}(e),h.attr(\"stroke-linejoin\",\"round\"),h.each((function(){var v=n.select(this).selectAll(\"g.slice\").data(e);v.enter().append(\"g\").classed(\"slice\",!0),v.exit().remove();var y=[[[],[]],[[],[]]],_=!1;v.each((function(i,a){if(i.hidden)n.select(this).selectAll(\"path,g\").remove();else{i.pointNumber=i.i,i.curveNumber=g.index,y[i.pxmid[1]<0?0:1][i.pxmid[0]<0?0:1].push(i);var o=d.cx,c=d.cy,u=n.select(this),h=u.selectAll(\"path.surface\").data([i]);if(h.enter().append(\"path\").classed(\"surface\",!0).style({\"pointer-events\":\"all\"}),u.call(x,t,e),g.pull){var v=+m.castOption(g.pull,i.pts)||0;v>0&&(o+=v*i.pxmid[0],c+=v*i.pxmid[1])}i.cxFinal=o,i.cyFinal=c;var T=g.hole;if(i.v===d.vTotal){var k=\"M\"+(o+i.px0[0])+\",\"+(c+i.px0[1])+C(i.px0,i.pxmid,!0,1)+C(i.pxmid,i.px0,!0,1)+\"Z\";T?h.attr(\"d\",\"M\"+(o+T*i.px0[0])+\",\"+(c+T*i.px0[1])+C(i.px0,i.pxmid,!1,T)+C(i.pxmid,i.px0,!1,T)+\"Z\"+k):h.attr(\"d\",k)}else{var A=C(i.px0,i.px1,!0,1);if(T){var M=1-T;h.attr(\"d\",\"M\"+(o+T*i.px1[0])+\",\"+(c+T*i.px1[1])+C(i.px1,i.px0,!1,T)+\"l\"+M*i.px0[0]+\",\"+M*i.px0[1]+A+\"Z\")}else h.attr(\"d\",\"M\"+o+\",\"+c+\"l\"+i.px0[0]+\",\"+i.px0[1]+A+\"Z\")}D(t,i,d);var S=m.castOption(g.textposition,i.pts),E=u.selectAll(\"g.slicetext\").data(i.text&&\"none\"!==S?[0]:[]);E.enter().append(\"g\").classed(\"slicetext\",!0),E.exit().remove(),E.each((function(){var u=l.ensureSingle(n.select(this),\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),h=l.ensureUniformFontSize(t,\"outside\"===S?function(t,e,r){var n=m.castOption(t.outsidetextfont.color,e.pts)||m.castOption(t.textfont.color,e.pts)||r.color,i=m.castOption(t.outsidetextfont.family,e.pts)||m.castOption(t.textfont.family,e.pts)||r.family,a=m.castOption(t.outsidetextfont.size,e.pts)||m.castOption(t.textfont.size,e.pts)||r.size;return{color:n,family:i,size:a}}(g,i,r.font):b(g,i,r.font));u.text(i.text).attr({class:\"slicetext\",transform:\"\",\"text-anchor\":\"middle\"}).call(s.font,h).call(f.convertToTspans,t);var v,y=s.bBox(u.node());if(\"outside\"===S)v=L(y,i);else if(v=w(y,i,d),\"auto\"===S&&v.scale<1){var x=l.ensureUniformFontSize(t,g.outsidetextfont);u.call(s.font,x),v=L(y=s.bBox(u.node()),i)}var T=v.textPosAngle,k=void 0===T?i.pxmid:z(d.r,T);if(v.targetX=o+k[0]*v.rCenter+(v.x||0),v.targetY=c+k[1]*v.rCenter+(v.y||0),R(v,y),v.outside){var A=v.targetY;i.yLabelMin=A-y.height/2,i.yLabelMid=A,i.yLabelMax=A+y.height/2,i.labelExtraX=0,i.labelExtraY=0,_=!0}v.fontSize=h.size,p(g.type,v,r),e[a].transform=v,u.attr(\"transform\",l.getTextTransform(v))}))}function C(t,e,r,n){var a=n*(e[0]-t[0]),o=n*(e[1]-t[1]);return\"a\"+n*d.r+\",\"+n*d.r+\" 0 \"+i.largeArc+(r?\" 1 \":\" 0 \")+a+\",\"+o}}));var T=n.select(this).selectAll(\"g.titletext\").data(g.title.text?[0]:[]);if(T.enter().append(\"g\").classed(\"titletext\",!0),T.exit().remove(),T.each((function(){var e,r=l.ensureSingle(n.select(this),\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),i=g.title.text;g._meta&&(i=l.templateString(i,g._meta)),r.text(i).attr({class:\"titletext\",transform:\"\",\"text-anchor\":\"middle\"}).call(s.font,g.title.font).call(f.convertToTspans,t),e=\"middle center\"===g.title.position?function(t){var e=Math.sqrt(t.titleBox.width*t.titleBox.width+t.titleBox.height*t.titleBox.height);return{x:t.cx,y:t.cy,scale:t.trace.hole*t.r*2/e,tx:0,ty:-t.titleBox.height/2+t.trace.title.font.size}}(d):C(d,a),r.attr(\"transform\",u(e.x,e.y)+c(Math.min(1,e.scale))+u(e.tx,e.ty))})),_&&function(t,e){var r,n,i,a,o,s,l,c,u,f,h,p,d;function g(t,e){return t.pxmid[1]-e.pxmid[1]}function v(t,e){return e.pxmid[1]-t.pxmid[1]}function y(t,r){r||(r={});var i,c,u,h,p=r.labelExtraY+(n?r.yLabelMax:r.yLabelMin),d=n?t.yLabelMin:t.yLabelMax,g=n?t.yLabelMax:t.yLabelMin,v=t.cyFinal+o(t.px0[1],t.px1[1]),y=p-d;if(y*l>0&&(t.labelExtraY=y),Array.isArray(e.pull))for(c=0;c=(m.castOption(e.pull,u.pts)||0)||((t.pxmid[1]-u.pxmid[1])*l>0?(y=u.cyFinal+o(u.px0[1],u.px1[1])-d-t.labelExtraY)*l>0&&(t.labelExtraY+=y):(g+t.labelExtraY-v)*l>0&&(i=3*s*Math.abs(c-f.indexOf(t)),(h=u.cxFinal+a(u.px0[0],u.px1[0])+i-(t.cxFinal+t.pxmid[0])-t.labelExtraX)*s>0&&(t.labelExtraX+=h)))}for(n=0;n<2;n++)for(i=n?g:v,o=n?Math.max:Math.min,l=n?1:-1,r=0;r<2;r++){for(a=r?Math.max:Math.min,s=r?1:-1,(c=t[n][r]).sort(i),u=t[1-n][r],f=u.concat(c),p=[],h=0;hMath.abs(f)?s+=\"l\"+f*t.pxmid[0]/t.pxmid[1]+\",\"+f+\"H\"+(a+t.labelExtraX+c):s+=\"l\"+t.labelExtraX+\",\"+u+\"v\"+(f-u)+\"h\"+c}else s+=\"V\"+(t.yLabelMid+t.labelExtraY)+\"h\"+c;l.ensureSingle(r,\"path\",\"textline\").call(o.stroke,e.outsidetextfont.color).attr({\"stroke-width\":Math.min(2,e.outsidetextfont.size/8),d:s,fill:\"none\"})}else r.select(\"path.textline\").remove()}))}(v,g),_&&g.automargin){var k=s.bBox(h.node()),A=g.domain,M=a.w*(A.x[1]-A.x[0]),S=a.h*(A.y[1]-A.y[0]),E=(.5*M-d.r)/a.w,P=(.5*S-d.r)/a.h;i.autoMargin(t,\"pie.\"+g.uid+\".automargin\",{xl:A.x[0]-E,xr:A.x[1]+E,yb:A.y[0]-P,yt:A.y[1]+P,l:Math.max(d.cx-d.r-k.left,0),r:Math.max(k.right-(d.cx+d.r),0),b:Math.max(k.bottom-(d.cy+d.r),0),t:Math.max(d.cy-d.r-k.top,0),pad:5})}}))}));setTimeout((function(){h.selectAll(\"tspan\").each((function(){var t=n.select(this);t.attr(\"dy\")&&t.attr(\"dy\",t.attr(\"dy\"))}))}),0)},formatSliceLabel:D,transformInsideText:w,determineInsideTextFont:b,positionTitleOutside:C,prerenderTitles:_,layoutAreas:O,attachFxHandlers:x,computeTransform:R}},{\"../../components/color\":366,\"../../components/drawing\":388,\"../../components/fx\":406,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../../plots/plots\":619,\"../bar/constants\":650,\"../bar/uniform_text\":664,\"./event_data\":904,\"./helpers\":905,\"@plotly/d3\":58}],910:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"./style_one\"),a=t(\"../bar/uniform_text\").resizeText;e.exports=function(t){var e=t._fullLayout._pielayer.selectAll(\".trace\");a(t,e,\"pie\"),e.each((function(t){var e=t[0].trace,r=n.select(this);r.style({opacity:e.opacity}),r.selectAll(\"path.surface\").each((function(t){n.select(this).call(i,t,e)}))}))}},{\"../bar/uniform_text\":664,\"./style_one\":911,\"@plotly/d3\":58}],911:[function(t,e,r){\"use strict\";var n=t(\"../../components/color\"),i=t(\"./helpers\").castOption;e.exports=function(t,e,r){var a=r.marker.line,o=i(a.color,e.pts)||n.defaultLine,s=i(a.width,e.pts)||0;t.style(\"stroke-width\",s).call(n.fill,e.color).call(n.stroke,o)}},{\"../../components/color\":366,\"./helpers\":905}],912:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\");e.exports={x:n.x,y:n.y,xy:{valType:\"data_array\",editType:\"calc\"},indices:{valType:\"data_array\",editType:\"calc\"},xbounds:{valType:\"data_array\",editType:\"calc\"},ybounds:{valType:\"data_array\",editType:\"calc\"},text:n.text,marker:{color:{valType:\"color\",arrayOk:!1,editType:\"calc\"},opacity:{valType:\"number\",min:0,max:1,dflt:1,arrayOk:!1,editType:\"calc\"},blend:{valType:\"boolean\",dflt:null,editType:\"calc\"},sizemin:{valType:\"number\",min:.1,max:2,dflt:.5,editType:\"calc\"},sizemax:{valType:\"number\",min:.1,dflt:20,editType:\"calc\"},border:{color:{valType:\"color\",arrayOk:!1,editType:\"calc\"},arearatio:{valType:\"number\",min:0,max:1,dflt:0,editType:\"calc\"},editType:\"calc\"},editType:\"calc\"},transforms:void 0}},{\"../scatter/attributes\":926}],913:[function(t,e,r){\"use strict\";var n=t(\"../../../stackgl_modules\").gl_pointcloud2d,i=t(\"../../lib/str2rgbarray\"),a=t(\"../../plots/cartesian/autorange\").findExtremes,o=t(\"../scatter/get_trace_color\");function s(t,e){this.scene=t,this.uid=e,this.type=\"pointcloud\",this.pickXData=[],this.pickYData=[],this.xData=[],this.yData=[],this.textLabels=[],this.color=\"rgb(0, 0, 0)\",this.name=\"\",this.hoverinfo=\"all\",this.idToIndex=new Int32Array(0),this.bounds=[0,0,0,0],this.pointcloudOptions={positions:new Float32Array(0),idToIndex:this.idToIndex,sizemin:.5,sizemax:12,color:[0,0,0,1],areaRatio:1,borderColor:[0,0,0,1]},this.pointcloud=n(t.glplot,this.pointcloudOptions),this.pointcloud._trace=this}var l=s.prototype;l.handlePick=function(t){var e=this.idToIndex[t.pointId];return{trace:this,dataCoord:t.dataCoord,traceCoord:this.pickXYData?[this.pickXYData[2*e],this.pickXYData[2*e+1]]:[this.pickXData[e],this.pickYData[e]],textLabel:Array.isArray(this.textLabels)?this.textLabels[e]:this.textLabels,color:this.color,name:this.name,pointIndex:e,hoverinfo:this.hoverinfo}},l.update=function(t){this.index=t.index,this.textLabels=t.text,this.name=t.name,this.hoverinfo=t.hoverinfo,this.bounds=[1/0,1/0,-1/0,-1/0],this.updateFast(t),this.color=o(t,{})},l.updateFast=function(t){var e,r,n,o,s,l,c=this.xData=this.pickXData=t.x,u=this.yData=this.pickYData=t.y,f=this.pickXYData=t.xy,h=t.xbounds&&t.ybounds,p=t.indices,d=this.bounds;if(f){if(n=f,e=f.length>>>1,h)d[0]=t.xbounds[0],d[2]=t.xbounds[1],d[1]=t.ybounds[0],d[3]=t.ybounds[1];else for(l=0;ld[2]&&(d[2]=o),sd[3]&&(d[3]=s);if(p)r=p;else for(r=new Int32Array(e),l=0;ld[2]&&(d[2]=o),sd[3]&&(d[3]=s);this.idToIndex=r,this.pointcloudOptions.idToIndex=r,this.pointcloudOptions.positions=n;var g=i(t.marker.color),m=i(t.marker.border.color),v=t.opacity*t.marker.opacity;g[3]*=v,this.pointcloudOptions.color=g;var y=t.marker.blend;if(null===y){y=c.length<100||u.length<100}this.pointcloudOptions.blend=y,m[3]*=v,this.pointcloudOptions.borderColor=m;var x=t.marker.sizemin,b=Math.max(t.marker.sizemax,t.marker.sizemin);this.pointcloudOptions.sizeMin=x,this.pointcloudOptions.sizeMax=b,this.pointcloudOptions.areaRatio=t.marker.border.arearatio,this.pointcloud.update(this.pointcloudOptions);var _=this.scene.xaxis,w=this.scene.yaxis,T=b/2||.5;t._extremes[_._id]=a(_,[d[0],d[2]],{ppad:T}),t._extremes[w._id]=a(w,[d[1],d[3]],{ppad:T})},l.dispose=function(){this.pointcloud.dispose()},e.exports=function(t,e){var r=new s(t,e.uid);return r.update(e),r}},{\"../../../stackgl_modules\":1120,\"../../lib/str2rgbarray\":528,\"../../plots/cartesian/autorange\":553,\"../scatter/get_trace_color\":936}],914:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./attributes\");e.exports=function(t,e,r){function a(r,a){return n.coerce(t,e,i,r,a)}a(\"x\"),a(\"y\"),a(\"xbounds\"),a(\"ybounds\"),t.xy&&t.xy instanceof Float32Array&&(e.xy=t.xy),t.indices&&t.indices instanceof Int32Array&&(e.indices=t.indices),a(\"text\"),a(\"marker.color\",r),a(\"marker.opacity\"),a(\"marker.blend\"),a(\"marker.sizemin\"),a(\"marker.sizemax\"),a(\"marker.border.color\",r),a(\"marker.border.arearatio\"),e._length=null}},{\"../../lib\":503,\"./attributes\":912}],915:[function(t,e,r){\"use strict\";[\"*pointcloud* trace is deprecated!\",\"Please consider switching to the *scattergl* trace type.\"].join(\" \");e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),calc:t(\"../scatter3d/calc\"),plot:t(\"./convert\"),moduleType:\"trace\",name:\"pointcloud\",basePlotModule:t(\"../../plots/gl2d\"),categories:[\"gl\",\"gl2d\",\"showLegend\"],meta:{}}},{\"../../plots/gl2d\":596,\"../scatter3d/calc\":955,\"./attributes\":912,\"./convert\":913,\"./defaults\":914}],916:[function(t,e,r){\"use strict\";var n=t(\"../../plots/font_attributes\"),i=t(\"../../plots/attributes\"),a=t(\"../../components/color/attributes\"),o=t(\"../../components/fx/attributes\"),s=t(\"../../plots/domain\").attributes,l=t(\"../../plots/template_attributes\").hovertemplateAttrs,c=t(\"../../components/colorscale/attributes\"),u=t(\"../../plot_api/plot_template\").templatedArray,f=t(\"../../plots/cartesian/axis_format_attributes\").descriptionOnlyNumbers,h=t(\"../../lib/extend\").extendFlat,p=t(\"../../plot_api/edit_types\").overrideAll;(e.exports=p({hoverinfo:h({},i.hoverinfo,{flags:[],arrayOk:!1}),hoverlabel:o.hoverlabel,domain:s({name:\"sankey\",trace:!0}),orientation:{valType:\"enumerated\",values:[\"v\",\"h\"],dflt:\"h\"},valueformat:{valType:\"string\",dflt:\".3s\",description:f(\"value\")},valuesuffix:{valType:\"string\",dflt:\"\"},arrangement:{valType:\"enumerated\",values:[\"snap\",\"perpendicular\",\"freeform\",\"fixed\"],dflt:\"snap\"},textfont:n({}),customdata:void 0,node:{label:{valType:\"data_array\",dflt:[]},groups:{valType:\"info_array\",impliedEdits:{x:[],y:[]},dimensions:2,freeLength:!0,dflt:[],items:{valType:\"number\",editType:\"calc\"}},x:{valType:\"data_array\",dflt:[]},y:{valType:\"data_array\",dflt:[]},color:{valType:\"color\",arrayOk:!0},customdata:{valType:\"data_array\",editType:\"calc\"},line:{color:{valType:\"color\",dflt:a.defaultLine,arrayOk:!0},width:{valType:\"number\",min:0,dflt:.5,arrayOk:!0}},pad:{valType:\"number\",arrayOk:!1,min:0,dflt:20},thickness:{valType:\"number\",arrayOk:!1,min:1,dflt:20},hoverinfo:{valType:\"enumerated\",values:[\"all\",\"none\",\"skip\"],dflt:\"all\"},hoverlabel:o.hoverlabel,hovertemplate:l({},{keys:[\"value\",\"label\"]})},link:{label:{valType:\"data_array\",dflt:[]},color:{valType:\"color\",arrayOk:!0},customdata:{valType:\"data_array\",editType:\"calc\"},line:{color:{valType:\"color\",dflt:a.defaultLine,arrayOk:!0},width:{valType:\"number\",min:0,dflt:0,arrayOk:!0}},source:{valType:\"data_array\",dflt:[]},target:{valType:\"data_array\",dflt:[]},value:{valType:\"data_array\",dflt:[]},hoverinfo:{valType:\"enumerated\",values:[\"all\",\"none\",\"skip\"],dflt:\"all\"},hoverlabel:o.hoverlabel,hovertemplate:l({},{keys:[\"value\",\"label\"]}),colorscales:u(\"concentrationscales\",{editType:\"calc\",label:{valType:\"string\",editType:\"calc\",dflt:\"\"},cmax:{valType:\"number\",editType:\"calc\",dflt:1},cmin:{valType:\"number\",editType:\"calc\",dflt:0},colorscale:h(c().colorscale,{dflt:[[0,\"white\"],[1,\"black\"]]})})}},\"calc\",\"nested\")).transforms=void 0},{\"../../components/color/attributes\":365,\"../../components/colorscale/attributes\":373,\"../../components/fx/attributes\":397,\"../../lib/extend\":493,\"../../plot_api/edit_types\":536,\"../../plot_api/plot_template\":543,\"../../plots/attributes\":550,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/domain\":584,\"../../plots/font_attributes\":585,\"../../plots/template_attributes\":633}],917:[function(t,e,r){\"use strict\";var n=t(\"../../plot_api/edit_types\").overrideAll,i=t(\"../../plots/get_data\").getModuleCalcData,a=t(\"./plot\"),o=t(\"../../components/fx/layout_attributes\"),s=t(\"../../lib/setcursor\"),l=t(\"../../components/dragelement\"),c=t(\"../../plots/cartesian/select\").prepSelect,u=t(\"../../lib\"),f=t(\"../../registry\");function h(t,e){var r=t._fullData[e],n=t._fullLayout,i=n.dragmode,a=\"pan\"===n.dragmode?\"move\":\"crosshair\",o=r._bgRect;if(\"pan\"!==i&&\"zoom\"!==i){s(o,a);var h={_id:\"x\",c2p:u.identity,_offset:r._sankey.translateX,_length:r._sankey.width},p={_id:\"y\",c2p:u.identity,_offset:r._sankey.translateY,_length:r._sankey.height},d={gd:t,element:o.node(),plotinfo:{id:e,xaxis:h,yaxis:p,fillRangeItems:u.noop},subplot:e,xaxes:[h],yaxes:[p],doneFnCompleted:function(r){var n,i=t._fullData[e],a=i.node.groups.slice(),o=[];function s(t){for(var e=i._sankey.graph.nodes,r=0;ry&&(y=a.source[e]),a.target[e]>y&&(y=a.target[e]);var x,b=y+1;t.node._count=b;var _=t.node.groups,w={};for(e=0;e<_.length;e++){var T=_[e];for(x=0;x0&&s(E,b)&&s(L,b)&&(!w.hasOwnProperty(E)||!w.hasOwnProperty(L)||w[E]!==w[L])){w.hasOwnProperty(L)&&(L=w[L]),w.hasOwnProperty(E)&&(E=w[E]),L=+L,h[E=+E]=h[L]=!0;var C=\"\";a.label&&a.label[e]&&(C=a.label[e]);var P=null;C&&p.hasOwnProperty(C)&&(P=p[C]),c.push({pointNumber:e,label:C,color:u?a.color[e]:a.color,customdata:f?a.customdata[e]:a.customdata,concentrationscale:P,source:E,target:L,value:+S}),M.source.push(E),M.target.push(L)}}var I=b+_.length,O=o(r.color),z=o(r.customdata),D=[];for(e=0;eb-1,childrenNodes:[],pointNumber:e,label:R,color:O?r.color[e]:r.color,customdata:z?r.customdata[e]:r.customdata})}var F=!1;return function(t,e,r){for(var a=i.init2dArray(t,0),o=0;o1}))}(I,M.source,M.target)&&(F=!0),{circular:F,links:c,nodes:D,groups:_,groupLookup:w}}e.exports=function(t,e){var r=c(e);return a({circular:r.circular,_nodes:r.nodes,_links:r.links,_groups:r.groups,_groupLookup:r.groupLookup})}},{\"../../components/colorscale\":378,\"../../lib\":503,\"../../lib/gup\":500,\"strongly-connected-components\":306}],919:[function(t,e,r){\"use strict\";e.exports={nodeTextOffsetHorizontal:4,nodeTextOffsetVertical:3,nodePadAcross:10,sankeyIterations:50,forceIterations:5,forceTicksPerFrame:10,duration:500,ease:\"linear\",cn:{sankey:\"sankey\",sankeyLinks:\"sankey-links\",sankeyLink:\"sankey-link\",sankeyNodeSet:\"sankey-node-set\",sankeyNode:\"sankey-node\",nodeRect:\"node-rect\",nodeLabel:\"node-label\"}}},{}],920:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./attributes\"),a=t(\"../../components/color\"),o=t(\"tinycolor2\"),s=t(\"../../plots/domain\").defaults,l=t(\"../../components/fx/hoverlabel_defaults\"),c=t(\"../../plot_api/plot_template\"),u=t(\"../../plots/array_container_defaults\");function f(t,e){function r(r,a){return n.coerce(t,e,i.link.colorscales,r,a)}r(\"label\"),r(\"cmin\"),r(\"cmax\"),r(\"colorscale\")}e.exports=function(t,e,r,h){function p(r,a){return n.coerce(t,e,i,r,a)}var d=n.extendDeep(h.hoverlabel,t.hoverlabel),g=t.node,m=c.newContainer(e,\"node\");function v(t,e){return n.coerce(g,m,i.node,t,e)}v(\"label\"),v(\"groups\"),v(\"x\"),v(\"y\"),v(\"pad\"),v(\"thickness\"),v(\"line.color\"),v(\"line.width\"),v(\"hoverinfo\",t.hoverinfo),l(g,m,v,d),v(\"hovertemplate\");var y=h.colorway;v(\"color\",m.label.map((function(t,e){return a.addOpacity(function(t){return y[t%y.length]}(e),.8)}))),v(\"customdata\");var x=t.link||{},b=c.newContainer(e,\"link\");function _(t,e){return n.coerce(x,b,i.link,t,e)}_(\"label\"),_(\"source\"),_(\"target\"),_(\"value\"),_(\"line.color\"),_(\"line.width\"),_(\"hoverinfo\",t.hoverinfo),l(x,b,_,d),_(\"hovertemplate\");var w,T=o(h.paper_bgcolor).getLuminance()<.333?\"rgba(255, 255, 255, 0.6)\":\"rgba(0, 0, 0, 0.2)\";_(\"color\",n.repeat(T,b.value.length)),_(\"customdata\"),u(x,b,{name:\"colorscales\",handleItemDefaults:f}),s(e,h,p),p(\"orientation\"),p(\"valueformat\"),p(\"valuesuffix\"),m.x.length&&m.y.length&&(w=\"freeform\"),p(\"arrangement\",w),n.coerceFont(p,\"textfont\",n.extendFlat({},h.font)),e._length=null}},{\"../../components/color\":366,\"../../components/fx/hoverlabel_defaults\":404,\"../../lib\":503,\"../../plot_api/plot_template\":543,\"../../plots/array_container_defaults\":549,\"../../plots/domain\":584,\"./attributes\":916,tinycolor2:312}],921:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),calc:t(\"./calc\"),plot:t(\"./plot\"),moduleType:\"trace\",name:\"sankey\",basePlotModule:t(\"./base_plot\"),selectPoints:t(\"./select.js\"),categories:[\"noOpacity\"],meta:{}}},{\"./attributes\":916,\"./base_plot\":917,\"./calc\":918,\"./defaults\":920,\"./plot\":922,\"./select.js\":924}],922:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=i.numberFormat,o=t(\"./render\"),s=t(\"../../components/fx\"),l=t(\"../../components/color\"),c=t(\"./constants\").cn,u=i._;function f(t){return\"\"!==t}function h(t,e){return t.filter((function(t){return t.key===e.traceId}))}function p(t,e){n.select(t).select(\"path\").style(\"fill-opacity\",e),n.select(t).select(\"rect\").style(\"fill-opacity\",e)}function d(t){n.select(t).select(\"text.name\").style(\"fill\",\"black\")}function g(t){return function(e){return-1!==t.node.sourceLinks.indexOf(e.link)||-1!==t.node.targetLinks.indexOf(e.link)}}function m(t){return function(e){return-1!==e.node.sourceLinks.indexOf(t.link)||-1!==e.node.targetLinks.indexOf(t.link)}}function v(t,e,r){e&&r&&h(r,e).selectAll(\".\"+c.sankeyLink).filter(g(e)).call(x.bind(0,e,r,!1))}function y(t,e,r){e&&r&&h(r,e).selectAll(\".\"+c.sankeyLink).filter(g(e)).call(b.bind(0,e,r,!1))}function x(t,e,r,n){var i=n.datum().link.label;n.style(\"fill-opacity\",(function(t){if(!t.link.concentrationscale)return.4})),i&&h(e,t).selectAll(\".\"+c.sankeyLink).filter((function(t){return t.link.label===i})).style(\"fill-opacity\",(function(t){if(!t.link.concentrationscale)return.4})),r&&h(e,t).selectAll(\".\"+c.sankeyNode).filter(m(t)).call(v)}function b(t,e,r,n){var i=n.datum().link.label;n.style(\"fill-opacity\",(function(t){return t.tinyColorAlpha})),i&&h(e,t).selectAll(\".\"+c.sankeyLink).filter((function(t){return t.link.label===i})).style(\"fill-opacity\",(function(t){return t.tinyColorAlpha})),r&&h(e,t).selectAll(c.sankeyNode).filter(m(t)).call(y)}function _(t,e){var r=t.hoverlabel||{},n=i.nestedProperty(r,e).get();return!Array.isArray(n)&&n}e.exports=function(t,e){for(var r=t._fullLayout,i=r._paper,h=r._size,g=0;g\"),color:_(o,\"bgcolor\")||l.addOpacity(g.color,1),borderColor:_(o,\"bordercolor\"),fontFamily:_(o,\"font.family\"),fontSize:_(o,\"font.size\"),fontColor:_(o,\"font.color\"),nameLength:_(o,\"namelength\"),textAlign:_(o,\"align\"),idealAlign:n.event.x\"),color:_(o,\"bgcolor\")||i.tinyColorHue,borderColor:_(o,\"bordercolor\"),fontFamily:_(o,\"font.family\"),fontSize:_(o,\"font.size\"),fontColor:_(o,\"font.color\"),nameLength:_(o,\"namelength\"),textAlign:_(o,\"align\"),idealAlign:\"left\",hovertemplate:o.hovertemplate,hovertemplateLabels:y,eventData:[i.node]},{container:r._hoverlayer.node(),outerContainer:r._paper.node(),gd:t});p(w,.85),d(w)}}},unhover:function(e,i,a){!1!==t._fullLayout.hovermode&&(n.select(e).call(y,i,a),\"skip\"!==i.node.trace.node.hoverinfo&&(i.node.fullData=i.node.trace,t.emit(\"plotly_unhover\",{event:n.event,points:[i.node]})),s.loneUnhover(r._hoverlayer.node()))},select:function(e,r,i){var a=r.node;a.originalEvent=n.event,t._hoverdata=[a],n.select(e).call(y,r,i),s.click(t,{target:!0})}}})}},{\"../../components/color\":366,\"../../components/fx\":406,\"../../lib\":503,\"./constants\":919,\"./render\":923,\"@plotly/d3\":58}],923:[function(t,e,r){\"use strict\";var n=t(\"d3-force\"),i=t(\"d3-interpolate\").interpolateNumber,a=t(\"@plotly/d3\"),o=t(\"@plotly/d3-sankey\"),s=t(\"@plotly/d3-sankey-circular\"),l=t(\"./constants\"),c=t(\"tinycolor2\"),u=t(\"../../components/color\"),f=t(\"../../components/drawing\"),h=t(\"../../lib\"),p=h.strTranslate,d=h.strRotate,g=t(\"../../lib/gup\"),m=g.keyFun,v=g.repeat,y=g.unwrap,x=t(\"../../lib/svg_text_utils\"),b=t(\"../../registry\"),_=t(\"../../constants/alignment\"),w=_.CAP_SHIFT,T=_.LINE_SPACING;function k(t,e,r){var n,i=y(e),a=i.trace,u=a.domain,f=\"h\"===a.orientation,p=a.node.pad,d=a.node.thickness,g=t.width*(u.x[1]-u.x[0]),m=t.height*(u.y[1]-u.y[0]),v=i._nodes,x=i._links,b=i.circular;(n=b?s.sankeyCircular().circularLinkGap(0):o.sankey()).iterations(l.sankeyIterations).size(f?[g,m]:[m,g]).nodeWidth(d).nodePadding(p).nodeId((function(t){return t.pointNumber})).nodes(v).links(x);var _,w,T,k=n();for(var A in n.nodePadding()=i||(r=i-e.y0)>1e-6&&(e.y0+=r,e.y1+=r),i=e.y1+p}))}(function(t){var e,r,n=t.map((function(t,e){return{x0:t.x0,index:e}})).sort((function(t,e){return t.x0-e.x0})),i=[],a=-1,o=-1/0;for(_=0;_o+d&&(a+=1,e=s.x0),o=s.x0,i[a]||(i[a]=[]),i[a].push(s),r=e-s.x0,s.x0+=r,s.x1+=r}return i}(v=k.nodes));n.update(k)}return{circular:b,key:r,trace:a,guid:h.randstr(),horizontal:f,width:g,height:m,nodePad:a.node.pad,nodeLineColor:a.node.line.color,nodeLineWidth:a.node.line.width,linkLineColor:a.link.line.color,linkLineWidth:a.link.line.width,valueFormat:a.valueformat,valueSuffix:a.valuesuffix,textFont:a.textfont,translateX:u.x[0]*t.width+t.margin.l,translateY:t.height-u.y[1]*t.height+t.margin.t,dragParallel:f?m:g,dragPerpendicular:f?g:m,arrangement:a.arrangement,sankey:n,graph:k,forceLayouts:{},interactionState:{dragInProgress:!1,hovered:!1}}}function A(t,e,r){var n=c(e.color),i=e.source.label+\"|\"+e.target.label+\"__\"+r;return e.trace=t.trace,e.curveNumber=t.trace.index,{circular:t.circular,key:i,traceId:t.key,pointNumber:e.pointNumber,link:e,tinyColorHue:u.tinyRGB(n),tinyColorAlpha:n.getAlpha(),linkPath:M,linkLineColor:t.linkLineColor,linkLineWidth:t.linkLineWidth,valueFormat:t.valueFormat,valueSuffix:t.valueSuffix,sankey:t.sankey,parent:t,interactionState:t.interactionState,flow:e.flow}}function M(){return function(t){if(t.link.circular)return e=t.link,r=e.width/2,n=e.circularPathData,\"top\"===e.circularLinkType?\"M \"+n.targetX+\" \"+(n.targetY+r)+\" L\"+n.rightInnerExtent+\" \"+(n.targetY+r)+\"A\"+(n.rightLargeArcRadius+r)+\" \"+(n.rightSmallArcRadius+r)+\" 0 0 1 \"+(n.rightFullExtent-r)+\" \"+(n.targetY-n.rightSmallArcRadius)+\"L\"+(n.rightFullExtent-r)+\" \"+n.verticalRightInnerExtent+\"A\"+(n.rightLargeArcRadius+r)+\" \"+(n.rightLargeArcRadius+r)+\" 0 0 1 \"+n.rightInnerExtent+\" \"+(n.verticalFullExtent-r)+\"L\"+n.leftInnerExtent+\" \"+(n.verticalFullExtent-r)+\"A\"+(n.leftLargeArcRadius+r)+\" \"+(n.leftLargeArcRadius+r)+\" 0 0 1 \"+(n.leftFullExtent+r)+\" \"+n.verticalLeftInnerExtent+\"L\"+(n.leftFullExtent+r)+\" \"+(n.sourceY-n.leftSmallArcRadius)+\"A\"+(n.leftLargeArcRadius+r)+\" \"+(n.leftSmallArcRadius+r)+\" 0 0 1 \"+n.leftInnerExtent+\" \"+(n.sourceY+r)+\"L\"+n.sourceX+\" \"+(n.sourceY+r)+\"L\"+n.sourceX+\" \"+(n.sourceY-r)+\"L\"+n.leftInnerExtent+\" \"+(n.sourceY-r)+\"A\"+(n.leftLargeArcRadius-r)+\" \"+(n.leftSmallArcRadius-r)+\" 0 0 0 \"+(n.leftFullExtent-r)+\" \"+(n.sourceY-n.leftSmallArcRadius)+\"L\"+(n.leftFullExtent-r)+\" \"+n.verticalLeftInnerExtent+\"A\"+(n.leftLargeArcRadius-r)+\" \"+(n.leftLargeArcRadius-r)+\" 0 0 0 \"+n.leftInnerExtent+\" \"+(n.verticalFullExtent+r)+\"L\"+n.rightInnerExtent+\" \"+(n.verticalFullExtent+r)+\"A\"+(n.rightLargeArcRadius-r)+\" \"+(n.rightLargeArcRadius-r)+\" 0 0 0 \"+(n.rightFullExtent+r)+\" \"+n.verticalRightInnerExtent+\"L\"+(n.rightFullExtent+r)+\" \"+(n.targetY-n.rightSmallArcRadius)+\"A\"+(n.rightLargeArcRadius-r)+\" \"+(n.rightSmallArcRadius-r)+\" 0 0 0 \"+n.rightInnerExtent+\" \"+(n.targetY-r)+\"L\"+n.targetX+\" \"+(n.targetY-r)+\"Z\":\"M \"+n.targetX+\" \"+(n.targetY-r)+\" L\"+n.rightInnerExtent+\" \"+(n.targetY-r)+\"A\"+(n.rightLargeArcRadius+r)+\" \"+(n.rightSmallArcRadius+r)+\" 0 0 0 \"+(n.rightFullExtent-r)+\" \"+(n.targetY+n.rightSmallArcRadius)+\"L\"+(n.rightFullExtent-r)+\" \"+n.verticalRightInnerExtent+\"A\"+(n.rightLargeArcRadius+r)+\" \"+(n.rightLargeArcRadius+r)+\" 0 0 0 \"+n.rightInnerExtent+\" \"+(n.verticalFullExtent+r)+\"L\"+n.leftInnerExtent+\" \"+(n.verticalFullExtent+r)+\"A\"+(n.leftLargeArcRadius+r)+\" \"+(n.leftLargeArcRadius+r)+\" 0 0 0 \"+(n.leftFullExtent+r)+\" \"+n.verticalLeftInnerExtent+\"L\"+(n.leftFullExtent+r)+\" \"+(n.sourceY+n.leftSmallArcRadius)+\"A\"+(n.leftLargeArcRadius+r)+\" \"+(n.leftSmallArcRadius+r)+\" 0 0 0 \"+n.leftInnerExtent+\" \"+(n.sourceY-r)+\"L\"+n.sourceX+\" \"+(n.sourceY-r)+\"L\"+n.sourceX+\" \"+(n.sourceY+r)+\"L\"+n.leftInnerExtent+\" \"+(n.sourceY+r)+\"A\"+(n.leftLargeArcRadius-r)+\" \"+(n.leftSmallArcRadius-r)+\" 0 0 1 \"+(n.leftFullExtent-r)+\" \"+(n.sourceY+n.leftSmallArcRadius)+\"L\"+(n.leftFullExtent-r)+\" \"+n.verticalLeftInnerExtent+\"A\"+(n.leftLargeArcRadius-r)+\" \"+(n.leftLargeArcRadius-r)+\" 0 0 1 \"+n.leftInnerExtent+\" \"+(n.verticalFullExtent-r)+\"L\"+n.rightInnerExtent+\" \"+(n.verticalFullExtent-r)+\"A\"+(n.rightLargeArcRadius-r)+\" \"+(n.rightLargeArcRadius-r)+\" 0 0 1 \"+(n.rightFullExtent+r)+\" \"+n.verticalRightInnerExtent+\"L\"+(n.rightFullExtent+r)+\" \"+(n.targetY+n.rightSmallArcRadius)+\"A\"+(n.rightLargeArcRadius-r)+\" \"+(n.rightSmallArcRadius-r)+\" 0 0 1 \"+n.rightInnerExtent+\" \"+(n.targetY+r)+\"L\"+n.targetX+\" \"+(n.targetY+r)+\"Z\";var e,r,n,a=t.link.source.x1,o=t.link.target.x0,s=i(a,o),l=s(.5),c=s(.5),u=t.link.y0-t.link.width/2,f=t.link.y0+t.link.width/2,h=t.link.y1-t.link.width/2,p=t.link.y1+t.link.width/2;return\"M\"+a+\",\"+u+\"C\"+l+\",\"+u+\" \"+c+\",\"+h+\" \"+o+\",\"+h+\"L\"+o+\",\"+p+\"C\"+c+\",\"+p+\" \"+l+\",\"+f+\" \"+a+\",\"+f+\"Z\"}}function S(t,e){var r=c(e.color),n=l.nodePadAcross,i=t.nodePad/2;e.dx=e.x1-e.x0,e.dy=e.y1-e.y0;var a=e.dx,o=Math.max(.5,e.dy),s=\"node_\"+e.pointNumber;return e.group&&(s=h.randstr()),e.trace=t.trace,e.curveNumber=t.trace.index,{index:e.pointNumber,key:s,partOfGroup:e.partOfGroup||!1,group:e.group,traceId:t.key,trace:t.trace,node:e,nodePad:t.nodePad,nodeLineColor:t.nodeLineColor,nodeLineWidth:t.nodeLineWidth,textFont:t.textFont,size:t.horizontal?t.height:t.width,visibleWidth:Math.ceil(a),visibleHeight:o,zoneX:-n,zoneY:-i,zoneWidth:a+2*n,zoneHeight:o+2*i,labelY:t.horizontal?e.dy/2+1:e.dx/2+1,left:1===e.originalLayer,sizeAcross:t.width,forceLayouts:t.forceLayouts,horizontal:t.horizontal,darkBackground:r.getBrightness()<=128,tinyColorHue:u.tinyRGB(r),tinyColorAlpha:r.getAlpha(),valueFormat:t.valueFormat,valueSuffix:t.valueSuffix,sankey:t.sankey,graph:t.graph,arrangement:t.arrangement,uniqueNodeLabelPathId:[t.guid,t.key,s].join(\"_\"),interactionState:t.interactionState,figure:t}}function E(t){t.attr(\"transform\",(function(t){return p(t.node.x0.toFixed(3),t.node.y0.toFixed(3))}))}function L(t){t.call(E)}function C(t,e){t.call(L),e.attr(\"d\",M())}function P(t){t.attr(\"width\",(function(t){return t.node.x1-t.node.x0})).attr(\"height\",(function(t){return t.visibleHeight}))}function I(t){return t.link.width>1||t.linkLineWidth>0}function O(t){return p(t.translateX,t.translateY)+(t.horizontal?\"matrix(1 0 0 1 0 0)\":\"matrix(0 1 1 0 0 0)\")}function z(t,e,r){t.on(\".basic\",null).on(\"mouseover.basic\",(function(t){t.interactionState.dragInProgress||t.partOfGroup||(r.hover(this,t,e),t.interactionState.hovered=[this,t])})).on(\"mousemove.basic\",(function(t){t.interactionState.dragInProgress||t.partOfGroup||(r.follow(this,t),t.interactionState.hovered=[this,t])})).on(\"mouseout.basic\",(function(t){t.interactionState.dragInProgress||t.partOfGroup||(r.unhover(this,t,e),t.interactionState.hovered=!1)})).on(\"click.basic\",(function(t){t.interactionState.hovered&&(r.unhover(this,t,e),t.interactionState.hovered=!1),t.interactionState.dragInProgress||t.partOfGroup||r.select(this,t,e)}))}function D(t,e,r,i){var o=a.behavior.drag().origin((function(t){return{x:t.node.x0+t.visibleWidth/2,y:t.node.y0+t.visibleHeight/2}})).on(\"dragstart\",(function(a){if(\"fixed\"!==a.arrangement&&(h.ensureSingle(i._fullLayout._infolayer,\"g\",\"dragcover\",(function(t){i._fullLayout._dragCover=t})),h.raiseToTop(this),a.interactionState.dragInProgress=a.node,F(a.node),a.interactionState.hovered&&(r.nodeEvents.unhover.apply(0,a.interactionState.hovered),a.interactionState.hovered=!1),\"snap\"===a.arrangement)){var o=a.traceId+\"|\"+a.key;a.forceLayouts[o]?a.forceLayouts[o].alpha(1):function(t,e,r,i){!function(t){for(var e=0;e0&&n.forceLayouts[e].alpha(0)}}(0,e,a,r)).stop()}(0,o,a),function(t,e,r,n,i){window.requestAnimationFrame((function a(){var o;for(o=0;o0)window.requestAnimationFrame(a);else{var s=r.node.originalX;r.node.x0=s-r.visibleWidth/2,r.node.x1=s+r.visibleWidth/2,R(r,i)}}))}(t,e,a,o,i)}})).on(\"drag\",(function(r){if(\"fixed\"!==r.arrangement){var n=a.event.x,i=a.event.y;\"snap\"===r.arrangement?(r.node.x0=n-r.visibleWidth/2,r.node.x1=n+r.visibleWidth/2,r.node.y0=i-r.visibleHeight/2,r.node.y1=i+r.visibleHeight/2):(\"freeform\"===r.arrangement&&(r.node.x0=n-r.visibleWidth/2,r.node.x1=n+r.visibleWidth/2),i=Math.max(0,Math.min(r.size-r.visibleHeight/2,i)),r.node.y0=i-r.visibleHeight/2,r.node.y1=i+r.visibleHeight/2),F(r.node),\"snap\"!==r.arrangement&&(r.sankey.update(r.graph),C(t.filter(B(r)),e))}})).on(\"dragend\",(function(t){if(\"fixed\"!==t.arrangement){t.interactionState.dragInProgress=!1;for(var e=0;el&&C[v].gap;)v--;for(x=C[v].s,g=C.length-1;g>v;g--)C[g].s=x;for(;lM[u]&&u=0;i--){var a=t[i];if(\"scatter\"===a.type&&a.xaxis===r.xaxis&&a.yaxis===r.yaxis){a.opacity=void 0;break}}}}}},{}],933:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../registry\"),a=t(\"./attributes\"),o=t(\"./constants\"),s=t(\"./subtypes\"),l=t(\"./xy_defaults\"),c=t(\"./period_defaults\"),u=t(\"./stack_defaults\"),f=t(\"./marker_defaults\"),h=t(\"./line_defaults\"),p=t(\"./line_shape_defaults\"),d=t(\"./text_defaults\"),g=t(\"./fillcolor_defaults\");e.exports=function(t,e,r,m){function v(r,i){return n.coerce(t,e,a,r,i)}var y=l(t,e,m,v);if(y||(e.visible=!1),e.visible){c(t,e,m,v),v(\"xhoverformat\"),v(\"yhoverformat\");var x=u(t,e,m,v),b=!x&&y=Math.min(e,r)&&d<=Math.max(e,r)?0:1/0}var n=Math.max(3,t.mrc||0),i=1-1/n,a=Math.abs(h.c2p(t.x)-d);return a=Math.min(e,r)&&g<=Math.max(e,r)?0:1/0}var n=Math.max(3,t.mrc||0),i=1-1/n,a=Math.abs(p.c2p(t.y)-g);return aW!=(N=z[I][1])>=W&&(R=z[I-1][0],F=z[I][0],N-B&&(D=R+(F-R)*(W-B)/(N-B),H=Math.min(H,D),q=Math.max(q,D)));H=Math.max(H,0),q=Math.min(q,h._length);var X=s.defaultLine;return s.opacity(f.fillcolor)?X=f.fillcolor:s.opacity((f.line||{}).color)&&(X=f.line.color),n.extendFlat(t,{distance:t.maxHoverDistance,x0:H,x1:q,y0:W,y1:W,color:X,hovertemplate:!1}),delete t.index,f.text&&!Array.isArray(f.text)?t.text=String(f.text):t.text=f.name,[t]}}}},{\"../../components/color\":366,\"../../components/fx\":406,\"../../lib\":503,\"../../registry\":638,\"./get_trace_color\":936}],938:[function(t,e,r){\"use strict\";var n=t(\"./subtypes\");e.exports={hasLines:n.hasLines,hasMarkers:n.hasMarkers,hasText:n.hasText,isBubble:n.isBubble,attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),crossTraceDefaults:t(\"./cross_trace_defaults\"),calc:t(\"./calc\").calc,crossTraceCalc:t(\"./cross_trace_calc\"),arraysToCalcdata:t(\"./arrays_to_calcdata\"),plot:t(\"./plot\"),colorbar:t(\"./marker_colorbar\"),formatLabels:t(\"./format_labels\"),style:t(\"./style\").style,styleOnSelect:t(\"./style\").styleOnSelect,hoverPoints:t(\"./hover\"),selectPoints:t(\"./select\"),animatable:!0,moduleType:\"trace\",name:\"scatter\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"cartesian\",\"svg\",\"symbols\",\"errorBarsOK\",\"showLegend\",\"scatter-like\",\"zoomScale\"],meta:{}}},{\"../../plots/cartesian\":568,\"./arrays_to_calcdata\":925,\"./attributes\":926,\"./calc\":927,\"./cross_trace_calc\":931,\"./cross_trace_defaults\":932,\"./defaults\":933,\"./format_labels\":935,\"./hover\":937,\"./marker_colorbar\":944,\"./plot\":947,\"./select\":948,\"./style\":950,\"./subtypes\":951}],939:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").isArrayOrTypedArray,i=t(\"../../components/colorscale/helpers\").hasColorscale,a=t(\"../../components/colorscale/defaults\");e.exports=function(t,e,r,o,s,l){var c=(t.marker||{}).color;(s(\"line.color\",r),i(t,\"line\"))?a(t,e,o,s,{prefix:\"line.\",cLetter:\"c\"}):s(\"line.color\",!n(c)&&c||r);s(\"line.width\"),(l||{}).noDash||s(\"line.dash\")}},{\"../../components/colorscale/defaults\":376,\"../../components/colorscale/helpers\":377,\"../../lib\":503}],940:[function(t,e,r){\"use strict\";var n=t(\"../../constants/numerical\"),i=n.BADNUM,a=n.LOG_CLIP,o=a+.5,s=a-.5,l=t(\"../../lib\"),c=l.segmentsIntersect,u=l.constrain,f=t(\"./constants\");e.exports=function(t,e){var r,n,a,h,p,d,g,m,v,y,x,b,_,w,T,k,A,M,S=e.xaxis,E=e.yaxis,L=\"log\"===S.type,C=\"log\"===E.type,P=S._length,I=E._length,O=e.connectGaps,z=e.baseTolerance,D=e.shape,R=\"linear\"===D,F=e.fill&&\"none\"!==e.fill,B=[],N=f.minTolerance,j=t.length,U=new Array(j),V=0;function H(r){var n=t[r];if(!n)return!1;var a=e.linearized?S.l2p(n.x):S.c2p(n.x),l=e.linearized?E.l2p(n.y):E.c2p(n.y);if(a===i){if(L&&(a=S.c2p(n.x,!0)),a===i)return!1;C&&l===i&&(a*=Math.abs(S._m*I*(S._m>0?o:s)/(E._m*P*(E._m>0?o:s)))),a*=1e3}if(l===i){if(C&&(l=E.c2p(n.y,!0)),l===i)return!1;l*=1e3}return[a,l]}function q(t,e,r,n){var i=r-t,a=n-e,o=.5-t,s=.5-e,l=i*i+a*a,c=i*o+a*s;if(c>0&&crt||t[1]it)return[u(t[0],et,rt),u(t[1],nt,it)]}function st(t,e){return t[0]===e[0]&&(t[0]===et||t[0]===rt)||(t[1]===e[1]&&(t[1]===nt||t[1]===it)||void 0)}function lt(t,e,r){return function(n,i){var a=ot(n),o=ot(i),s=[];if(a&&o&&st(a,o))return s;a&&s.push(a),o&&s.push(o);var c=2*l.constrain((n[t]+i[t])/2,e,r)-((a||n)[t]+(o||i)[t]);c&&((a&&o?c>0==a[t]>o[t]?a:o:a||o)[t]+=c);return s}}function ct(t){var e=t[0],r=t[1],n=e===U[V-1][0],i=r===U[V-1][1];if(!n||!i)if(V>1){var a=e===U[V-2][0],o=r===U[V-2][1];n&&(e===et||e===rt)&&a?o?V--:U[V-1]=t:i&&(r===nt||r===it)&&o?a?V--:U[V-1]=t:U[V++]=t}else U[V++]=t}function ut(t){U[V-1][0]!==t[0]&&U[V-1][1]!==t[1]&&ct([Z,J]),ct(t),K=null,Z=J=0}function ft(t){if(A=t[0]/P,M=t[1]/I,W=t[0]rt?rt:0,X=t[1]it?it:0,W||X){if(V)if(K){var e=$(K,t);e.length>1&&(ut(e[0]),U[V++]=e[1])}else Q=$(U[V-1],t)[0],U[V++]=Q;else U[V++]=[W||t[0],X||t[1]];var r=U[V-1];W&&X&&(r[0]!==W||r[1]!==X)?(K&&(Z!==W&&J!==X?ct(Z&&J?(n=K,a=(i=t)[0]-n[0],o=(i[1]-n[1])/a,(n[1]*i[0]-i[1]*n[0])/a>0?[o>0?et:rt,it]:[o>0?rt:et,nt]):[Z||W,J||X]):Z&&J&&ct([Z,J])),ct([W,X])):Z-W&&J-X&&ct([W||Z,X||J]),K=t,Z=W,J=X}else K&&ut($(K,t)[0]),U[V++]=t;var n,i,a,o}for(\"linear\"===D||\"spline\"===D?$=function(t,e){for(var r=[],n=0,i=0;i<4;i++){var a=at[i],o=c(t[0],t[1],e[0],e[1],a[0],a[1],a[2],a[3]);o&&(!n||Math.abs(o.x-r[0][0])>1||Math.abs(o.y-r[0][1])>1)&&(o=[o.x,o.y],n&&Y(o,t)G(d,ht))break;a=d,(_=v[0]*m[0]+v[1]*m[1])>x?(x=_,h=d,g=!1):_=t.length||!d)break;ft(d),n=d}}else ft(h)}K&&ct([Z||K[0],J||K[1]]),B.push(U.slice(0,V))}return B}},{\"../../constants/numerical\":479,\"../../lib\":503,\"./constants\":930}],941:[function(t,e,r){\"use strict\";e.exports=function(t,e,r){\"spline\"===r(\"line.shape\")&&r(\"line.smoothing\")}},{}],942:[function(t,e,r){\"use strict\";var n={tonextx:1,tonexty:1,tonext:1};e.exports=function(t,e,r){var i,a,o,s,l,c={},u=!1,f=-1,h=0,p=-1;for(a=0;a=0?l=p:(l=p=h,h++),l0?Math.max(r,a):0}}},{\"fast-isnumeric\":190}],944:[function(t,e,r){\"use strict\";e.exports={container:\"marker\",min:\"cmin\",max:\"cmax\"}},{}],945:[function(t,e,r){\"use strict\";var n=t(\"../../components/color\"),i=t(\"../../components/colorscale/helpers\").hasColorscale,a=t(\"../../components/colorscale/defaults\"),o=t(\"./subtypes\");e.exports=function(t,e,r,s,l,c){var u=o.isBubble(t),f=(t.line||{}).color;(c=c||{},f&&(r=f),l(\"marker.symbol\"),l(\"marker.opacity\",u?.7:1),l(\"marker.size\"),l(\"marker.color\",r),i(t,\"marker\")&&a(t,e,s,l,{prefix:\"marker.\",cLetter:\"c\"}),c.noSelect||(l(\"selected.marker.color\"),l(\"unselected.marker.color\"),l(\"selected.marker.size\"),l(\"unselected.marker.size\")),c.noLine||(l(\"marker.line.color\",f&&!Array.isArray(f)&&e.marker.color!==f?f:u?n.background:n.defaultLine),i(t,\"marker.line\")&&a(t,e,s,l,{prefix:\"marker.line.\",cLetter:\"c\"}),l(\"marker.line.width\",u?1:0)),u&&(l(\"marker.sizeref\"),l(\"marker.sizemin\"),l(\"marker.sizemode\")),c.gradient)&&(\"none\"!==l(\"marker.gradient.type\")&&l(\"marker.gradient.color\"))}},{\"../../components/color\":366,\"../../components/colorscale/defaults\":376,\"../../components/colorscale/helpers\":377,\"./subtypes\":951}],946:[function(t,e,r){\"use strict\";var n=t(\"../../lib\").dateTick0,i=t(\"../../constants/numerical\").ONEWEEK;function a(t,e){return n(e,t%i==0?1:0)}e.exports=function(t,e,r,n,i){if(i||(i={x:!0,y:!0}),i.x){var o=n(\"xperiod\");o&&(n(\"xperiod0\",a(o,e.xcalendar)),n(\"xperiodalignment\"))}if(i.y){var s=n(\"yperiod\");s&&(n(\"yperiod0\",a(s,e.ycalendar)),n(\"yperiodalignment\"))}}},{\"../../constants/numerical\":479,\"../../lib\":503}],947:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../registry\"),a=t(\"../../lib\"),o=a.ensureSingle,s=a.identity,l=t(\"../../components/drawing\"),c=t(\"./subtypes\"),u=t(\"./line_points\"),f=t(\"./link_traces\"),h=t(\"../../lib/polygon\").tester;function p(t,e,r,f,p,d,g){var m;!function(t,e,r,i,o){var s=r.xaxis,l=r.yaxis,u=n.extent(a.simpleMap(s.range,s.r2c)),f=n.extent(a.simpleMap(l.range,l.r2c)),h=i[0].trace;if(!c.hasMarkers(h))return;var p=h.marker.maxdisplayed;if(0===p)return;var d=i.filter((function(t){return t.x>=u[0]&&t.x<=u[1]&&t.y>=f[0]&&t.y<=f[1]})),g=Math.ceil(d.length/p),m=0;o.forEach((function(t,r){var n=t[0].trace;c.hasMarkers(n)&&n.marker.maxdisplayed>0&&r0;function y(t){return v?t.transition():t}var x=r.xaxis,b=r.yaxis,_=f[0].trace,w=_.line,T=n.select(d),k=o(T,\"g\",\"errorbars\"),A=o(T,\"g\",\"lines\"),M=o(T,\"g\",\"points\"),S=o(T,\"g\",\"text\");if(i.getComponentMethod(\"errorbars\",\"plot\")(t,k,r,g),!0===_.visible){var E,L;y(T).style(\"opacity\",_.opacity);var C=_.fill.charAt(_.fill.length-1);\"x\"!==C&&\"y\"!==C&&(C=\"\"),f[0][r.isRangePlot?\"nodeRangePlot3\":\"node3\"]=T;var P,I,O=\"\",z=[],D=_._prevtrace;D&&(O=D._prevRevpath||\"\",L=D._nextFill,z=D._polygons);var R,F,B,N,j,U,V,H=\"\",q=\"\",G=[],Y=a.noop;if(E=_._ownFill,c.hasLines(_)||\"none\"!==_.fill){for(L&&L.datum(f),-1!==[\"hv\",\"vh\",\"hvh\",\"vhv\"].indexOf(w.shape)?(R=l.steps(w.shape),F=l.steps(w.shape.split(\"\").reverse().join(\"\"))):R=F=\"spline\"===w.shape?function(t){var e=t[t.length-1];return t.length>1&&t[0][0]===e[0]&&t[0][1]===e[1]?l.smoothclosed(t.slice(1),w.smoothing):l.smoothopen(t,w.smoothing)}:function(t){return\"M\"+t.join(\"L\")},B=function(t){return F(t.reverse())},G=u(f,{xaxis:x,yaxis:b,connectGaps:_.connectgaps,baseTolerance:Math.max(w.width||1,3)/4,shape:w.shape,simplify:w.simplify,fill:_.fill}),V=_._polygons=new Array(G.length),m=0;m1){var r=n.select(this);if(r.datum(f),t)y(r.style(\"opacity\",0).attr(\"d\",P).call(l.lineGroupStyle)).style(\"opacity\",1);else{var i=y(r);i.attr(\"d\",P),l.singleLineStyle(f,i)}}}}}var W=A.selectAll(\".js-line\").data(G);y(W.exit()).style(\"opacity\",0).remove(),W.each(Y(!1)),W.enter().append(\"path\").classed(\"js-line\",!0).style(\"vector-effect\",\"non-scaling-stroke\").call(l.lineGroupStyle).each(Y(!0)),l.setClipUrl(W,r.layerClipId,t),G.length?(E?(E.datum(f),N&&U&&(C?(\"y\"===C?N[1]=U[1]=b.c2p(0,!0):\"x\"===C&&(N[0]=U[0]=x.c2p(0,!0)),y(E).attr(\"d\",\"M\"+U+\"L\"+N+\"L\"+H.substr(1)).call(l.singleFillStyle)):y(E).attr(\"d\",H+\"Z\").call(l.singleFillStyle))):L&&(\"tonext\"===_.fill.substr(0,6)&&H&&O?(\"tonext\"===_.fill?y(L).attr(\"d\",H+\"Z\"+O+\"Z\").call(l.singleFillStyle):y(L).attr(\"d\",H+\"L\"+O.substr(1)+\"Z\").call(l.singleFillStyle),_._polygons=_._polygons.concat(z)):(Z(L),_._polygons=null)),_._prevRevpath=q,_._prevPolygons=V):(E?Z(E):L&&Z(L),_._polygons=_._prevRevpath=_._prevPolygons=null),M.datum(f),S.datum(f),function(e,i,a){var o,u=a[0].trace,f=c.hasMarkers(u),h=c.hasText(u),p=tt(u),d=et,g=et;if(f||h){var m=s,_=u.stackgroup,w=_&&\"infer zero\"===t._fullLayout._scatterStackOpts[x._id+b._id][_].stackgaps;u.marker.maxdisplayed||u._needsCull?m=w?K:J:_&&!w&&(m=Q),f&&(d=m),h&&(g=m)}var T,k=(o=e.selectAll(\"path.point\").data(d,p)).enter().append(\"path\").classed(\"point\",!0);v&&k.call(l.pointStyle,u,t).call(l.translatePoints,x,b).style(\"opacity\",0).transition().style(\"opacity\",1),o.order(),f&&(T=l.makePointStyleFns(u)),o.each((function(e){var i=n.select(this),a=y(i);l.translatePoint(e,a,x,b)?(l.singlePointStyle(e,a,u,T,t),r.layerClipId&&l.hideOutsideRangePoint(e,a,x,b,u.xcalendar,u.ycalendar),u.customdata&&i.classed(\"plotly-customdata\",null!==e.data&&void 0!==e.data)):a.remove()})),v?o.exit().transition().style(\"opacity\",0).remove():o.exit().remove(),(o=i.selectAll(\"g\").data(g,p)).enter().append(\"g\").classed(\"textpoint\",!0).append(\"text\"),o.order(),o.each((function(t){var e=n.select(this),i=y(e.select(\"text\"));l.translatePoint(t,i,x,b)?r.layerClipId&&l.hideOutsideRangePoint(t,e,x,b,u.xcalendar,u.ycalendar):e.remove()})),o.selectAll(\"text\").call(l.textPointStyle,u,t).each((function(t){var e=x.c2p(t.x),r=b.c2p(t.y);n.select(this).selectAll(\"tspan.line\").each((function(){y(n.select(this)).attr({x:e,y:r})}))})),o.exit().remove()}(M,S,f);var X=!1===_.cliponaxis?null:r.layerClipId;l.setClipUrl(M,X,t),l.setClipUrl(S,X,t)}function Z(t){y(t).attr(\"d\",\"M0,0Z\")}function J(t){return t.filter((function(t){return!t.gap&&t.vis}))}function K(t){return t.filter((function(t){return t.vis}))}function Q(t){return t.filter((function(t){return!t.gap}))}function $(t){return t.id}function tt(t){if(t.ids)return $}function et(){return!1}}e.exports=function(t,e,r,i,a,c){var u,h,d=!a,g=!!a&&a.duration>0,m=f(t,e,r);((u=i.selectAll(\"g.trace\").data(m,(function(t){return t[0].trace.uid}))).enter().append(\"g\").attr(\"class\",(function(t){return\"trace scatter trace\"+t[0].trace.uid})).style(\"stroke-miterlimit\",2),u.order(),function(t,e,r){e.each((function(e){var i=o(n.select(this),\"g\",\"fills\");l.setClipUrl(i,r.layerClipId,t);var a=e[0].trace,c=[];a._ownfill&&c.push(\"_ownFill\"),a._nexttrace&&c.push(\"_nextFill\");var u=i.selectAll(\"g\").data(c,s);u.enter().append(\"g\"),u.exit().each((function(t){a[t]=null})).remove(),u.order().each((function(t){a[t]=o(n.select(this),\"path\",\"js-fill\")}))}))}(t,u,e),g)?(c&&(h=c()),n.transition().duration(a.duration).ease(a.easing).each(\"end\",(function(){h&&h()})).each(\"interrupt\",(function(){h&&h()})).each((function(){i.selectAll(\"g.trace\").each((function(r,n){p(t,n,e,r,m,this,a)}))}))):u.each((function(r,n){p(t,n,e,r,m,this,a)}));d&&u.exit().remove(),i.selectAll(\"path:not([d])\").remove()}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/polygon\":515,\"../../registry\":638,\"./line_points\":940,\"./link_traces\":942,\"./subtypes\":951,\"@plotly/d3\":58}],948:[function(t,e,r){\"use strict\";var n=t(\"./subtypes\");e.exports=function(t,e){var r,i,a,o,s=t.cd,l=t.xaxis,c=t.yaxis,u=[],f=s[0].trace;if(!n.hasMarkers(f)&&!n.hasText(f))return[];if(!1===e)for(r=0;r0){var h=i.c2l(u);i._lowerLogErrorBound||(i._lowerLogErrorBound=h),i._lowerErrorBound=Math.min(i._lowerLogErrorBound,h)}}else o[s]=[-l[0]*r,l[1]*r]}return o}e.exports=function(t,e,r){var n=[i(t.x,t.error_x,e[0],r.xaxis),i(t.y,t.error_y,e[1],r.yaxis),i(t.z,t.error_z,e[2],r.zaxis)],a=function(t){for(var e=0;e-1?-1:t.indexOf(\"right\")>-1?1:0}function b(t){return null==t?0:t.indexOf(\"top\")>-1?-1:t.indexOf(\"bottom\")>-1?1:0}function _(t,e){return e(4*t)}function w(t){return p[t]}function T(t,e,r,n,i){var a=null;if(l.isArrayOrTypedArray(t)){a=[];for(var o=0;o=0){var g=function(t,e,r){var n,i=(r+1)%3,a=(r+2)%3,o=[],l=[];for(n=0;n=0&&f(\"surfacecolor\",h||p);for(var d=[\"x\",\"y\",\"z\"],g=0;g<3;++g){var m=\"projection.\"+d[g];f(m+\".show\")&&(f(m+\".opacity\"),f(m+\".scale\"))}var v=n.getComponentMethod(\"errorbars\",\"supplyDefaults\");v(t,e,h||p||r,{axis:\"z\"}),v(t,e,h||p||r,{axis:\"y\",inherit:\"z\"}),v(t,e,h||p||r,{axis:\"x\",inherit:\"z\"})}else e.visible=!1}},{\"../../lib\":503,\"../../registry\":638,\"../scatter/line_defaults\":939,\"../scatter/marker_defaults\":945,\"../scatter/subtypes\":951,\"../scatter/text_defaults\":952,\"./attributes\":954}],959:[function(t,e,r){\"use strict\";e.exports={plot:t(\"./convert\"),attributes:t(\"./attributes\"),markerSymbols:t(\"../../constants/gl3d_markers\"),supplyDefaults:t(\"./defaults\"),colorbar:[{container:\"marker\",min:\"cmin\",max:\"cmax\"},{container:\"line\",min:\"cmin\",max:\"cmax\"}],calc:t(\"./calc\"),moduleType:\"trace\",name:\"scatter3d\",basePlotModule:t(\"../../plots/gl3d\"),categories:[\"gl3d\",\"symbols\",\"showLegend\",\"scatter-like\"],meta:{}}},{\"../../constants/gl3d_markers\":477,\"../../plots/gl3d\":598,\"./attributes\":954,\"./calc\":955,\"./convert\":957,\"./defaults\":958}],960:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\"),i=t(\"../../plots/attributes\"),a=t(\"../../plots/template_attributes\").hovertemplateAttrs,o=t(\"../../plots/template_attributes\").texttemplateAttrs,s=t(\"../../components/colorscale/attributes\"),l=t(\"../../lib/extend\").extendFlat,c=n.marker,u=n.line,f=c.line;e.exports={carpet:{valType:\"string\",editType:\"calc\"},a:{valType:\"data_array\",editType:\"calc\"},b:{valType:\"data_array\",editType:\"calc\"},mode:l({},n.mode,{dflt:\"markers\"}),text:l({},n.text,{}),texttemplate:o({editType:\"plot\"},{keys:[\"a\",\"b\",\"text\"]}),hovertext:l({},n.hovertext,{}),line:{color:u.color,width:u.width,dash:u.dash,shape:l({},u.shape,{values:[\"linear\",\"spline\"]}),smoothing:u.smoothing,editType:\"calc\"},connectgaps:n.connectgaps,fill:l({},n.fill,{values:[\"none\",\"toself\",\"tonext\"],dflt:\"none\"}),fillcolor:n.fillcolor,marker:l({symbol:c.symbol,opacity:c.opacity,maxdisplayed:c.maxdisplayed,size:c.size,sizeref:c.sizeref,sizemin:c.sizemin,sizemode:c.sizemode,line:l({width:f.width,editType:\"calc\"},s(\"marker.line\")),gradient:c.gradient,editType:\"calc\"},s(\"marker\")),textfont:n.textfont,textposition:n.textposition,selected:n.selected,unselected:n.unselected,hoverinfo:l({},i.hoverinfo,{flags:[\"a\",\"b\",\"text\",\"name\"]}),hoveron:n.hoveron,hovertemplate:a()}},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/template_attributes\":633,\"../scatter/attributes\":926}],961:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../scatter/colorscale_calc\"),a=t(\"../scatter/arrays_to_calcdata\"),o=t(\"../scatter/calc_selection\"),s=t(\"../scatter/calc\").calcMarkerSize,l=t(\"../carpet/lookup_carpetid\");e.exports=function(t,e){var r=e._carpetTrace=l(t,e);if(r&&r.visible&&\"legendonly\"!==r.visible){var c;e.xaxis=r.xaxis,e.yaxis=r.yaxis;var u,f,h=e._length,p=new Array(h),d=!1;for(c=0;c\")}return o}function y(t,e){var r;r=t.labelprefix&&t.labelprefix.length>0?t.labelprefix.replace(/ = $/,\"\"):t._hovertitle,m.push(r+\": \"+e.toFixed(3)+t.labelsuffix)}}},{\"../../lib\":503,\"../scatter/hover\":937}],966:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"./format_labels\"),calc:t(\"./calc\"),plot:t(\"./plot\"),style:t(\"../scatter/style\").style,styleOnSelect:t(\"../scatter/style\").styleOnSelect,hoverPoints:t(\"./hover\"),selectPoints:t(\"../scatter/select\"),eventData:t(\"./event_data\"),moduleType:\"trace\",name:\"scattercarpet\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"svg\",\"carpet\",\"symbols\",\"showLegend\",\"carpetDependent\",\"zoomScale\"],meta:{}}},{\"../../plots/cartesian\":568,\"../scatter/marker_colorbar\":944,\"../scatter/select\":948,\"../scatter/style\":950,\"./attributes\":960,\"./calc\":961,\"./defaults\":962,\"./event_data\":963,\"./format_labels\":964,\"./hover\":965,\"./plot\":967}],967:[function(t,e,r){\"use strict\";var n=t(\"../scatter/plot\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"../../components/drawing\");e.exports=function(t,e,r,o){var s,l,c,u=r[0][0].carpet,f={xaxis:i.getFromId(t,u.xaxis||\"x\"),yaxis:i.getFromId(t,u.yaxis||\"y\"),plot:e.plot};for(n(t,f,r,o),s=0;s\")}(c,g,t,l[0].t.labels),t.hovertemplate=c.hovertemplate,[t]}}},{\"../../components/fx\":406,\"../../constants/numerical\":479,\"../../lib\":503,\"../scatter/get_trace_color\":936,\"./attributes\":968}],974:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"./format_labels\"),calc:t(\"./calc\"),calcGeoJSON:t(\"./plot\").calcGeoJSON,plot:t(\"./plot\").plot,style:t(\"./style\"),styleOnSelect:t(\"../scatter/style\").styleOnSelect,hoverPoints:t(\"./hover\"),eventData:t(\"./event_data\"),selectPoints:t(\"./select\"),moduleType:\"trace\",name:\"scattergeo\",basePlotModule:t(\"../../plots/geo\"),categories:[\"geo\",\"symbols\",\"showLegend\",\"scatter-like\"],meta:{}}},{\"../../plots/geo\":589,\"../scatter/marker_colorbar\":944,\"../scatter/style\":950,\"./attributes\":968,\"./calc\":969,\"./defaults\":970,\"./event_data\":971,\"./format_labels\":972,\"./hover\":973,\"./plot\":975,\"./select\":976,\"./style\":977}],975:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../lib/topojson_utils\").getTopojsonFeatures,o=t(\"../../lib/geojson_utils\"),s=t(\"../../lib/geo_location_utils\"),l=t(\"../../plots/cartesian/autorange\").findExtremes,c=t(\"../../constants/numerical\").BADNUM,u=t(\"../scatter/calc\").calcMarkerSize,f=t(\"../scatter/subtypes\"),h=t(\"./style\");e.exports={calcGeoJSON:function(t,e){var r,n,i=t[0].trace,o=e[i.geo],f=o._subplot,h=i._length;if(Array.isArray(i.locations)){var p=i.locationmode,d=\"geojson-id\"===p?s.extractTraceFeature(t):a(i,f.topojson);for(r=0;r=m,w=2*b,T={},k=l.makeCalcdata(e,\"x\"),A=y.makeCalcdata(e,\"y\"),M=s(e,l,\"x\",k),S=s(e,y,\"y\",A),E=M.vals,L=S.vals;e._x=E,e._y=L,e.xperiodalignment&&(e._origX=k,e._xStarts=M.starts,e._xEnds=M.ends),e.yperiodalignment&&(e._origY=A,e._yStarts=S.starts,e._yEnds=S.ends);var C=new Array(w),P=new Array(b);for(r=0;r1&&i.extendFlat(s.line,p.linePositions(t,r,n));if(s.errorX||s.errorY){var l=p.errorBarPositions(t,r,n,a,o);s.errorX&&i.extendFlat(s.errorX,l.x),s.errorY&&i.extendFlat(s.errorY,l.y)}s.text&&(i.extendFlat(s.text,{positions:n},p.textPosition(t,r,s.text,s.marker)),i.extendFlat(s.textSel,{positions:n},p.textPosition(t,r,s.text,s.markerSel)),i.extendFlat(s.textUnsel,{positions:n},p.textPosition(t,r,s.text,s.markerUnsel)));return s}(t,0,e,C,E,L),z=d(t,x);return f(o,e),_?O.marker&&(I=O.marker.sizeAvg||Math.max(O.marker.size,3)):I=c(e,b),u(t,e,l,y,E,L,I),O.errorX&&v(e,l,O.errorX),O.errorY&&v(e,y,O.errorY),O.fill&&!z.fill2d&&(z.fill2d=!0),O.marker&&!z.scatter2d&&(z.scatter2d=!0),O.line&&!z.line2d&&(z.line2d=!0),!O.errorX&&!O.errorY||z.error2d||(z.error2d=!0),O.text&&!z.glText&&(z.glText=!0),O.marker&&(O.marker.snap=b),z.lineOptions.push(O.line),z.errorXOptions.push(O.errorX),z.errorYOptions.push(O.errorY),z.fillOptions.push(O.fill),z.markerOptions.push(O.marker),z.markerSelectedOptions.push(O.markerSel),z.markerUnselectedOptions.push(O.markerUnsel),z.textOptions.push(O.text),z.textSelectedOptions.push(O.textSel),z.textUnselectedOptions.push(O.textUnsel),z.selectBatch.push([]),z.unselectBatch.push([]),T._scene=z,T.index=z.count,T.x=E,T.y=L,T.positions=C,z.count++,[{x:!1,y:!1,t:T,trace:e}]}},{\"../../constants/numerical\":479,\"../../lib\":503,\"../../plots/cartesian/align_period\":551,\"../../plots/cartesian/autorange\":553,\"../../plots/cartesian/axis_ids\":558,\"../scatter/calc\":927,\"../scatter/colorscale_calc\":929,\"./constants\":980,\"./convert\":981,\"./scene_update\":989,\"@plotly/point-cluster\":59}],980:[function(t,e,r){\"use strict\";e.exports={TOO_MANY_POINTS:1e5,SYMBOL_SDF_SIZE:200,SYMBOL_SIZE:20,SYMBOL_STROKE:1,DOT_RE:/-dot/,OPEN_RE:/-open/,DASHES:{solid:[1],dot:[1,1],dash:[4,1],longdash:[8,1],dashdot:[4,1,1,1],longdashdot:[8,1,1,1]}}},{}],981:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"svg-path-sdf\"),a=t(\"color-normalize\"),o=t(\"../../registry\"),s=t(\"../../lib\"),l=t(\"../../components/drawing\"),c=t(\"../../plots/cartesian/axis_ids\"),u=t(\"../../lib/gl_format_color\").formatColor,f=t(\"../scatter/subtypes\"),h=t(\"../scatter/make_bubble_size_func\"),p=t(\"./helpers\"),d=t(\"./constants\"),g=t(\"../../constants/interactions\").DESELECTDIM,m={start:1,left:1,end:-1,right:-1,middle:0,center:0,bottom:1,top:-1},v=t(\"../../components/fx/helpers\").appendArrayPointValue;function y(t,e){var r,i=t._fullLayout,a=e._length,o=e.textfont,l=e.textposition,c=Array.isArray(l)?l:[l],u=o.color,f=o.size,h=o.family,p={},d=t._context.plotGlPixelRatio,g=e.texttemplate;if(g){p.text=[];var m=i._d3locale,y=Array.isArray(g),x=y?Math.min(g.length,a):a,b=y?function(t){return g[t]}:function(){return g};for(r=0;rd.TOO_MANY_POINTS||f.hasMarkers(e)?\"rect\":\"round\";if(c&&e.connectgaps){var h=n[0],p=n[1];for(i=0;i1?l[i]:l[0]:l,d=Array.isArray(c)?c.length>1?c[i]:c[0]:c,g=m[p],v=m[d],y=u?u/.8+1:0,x=-v*y-.5*v;o.offset[i]=[g*y/h,x/h]}}return o}}},{\"../../components/drawing\":388,\"../../components/fx/helpers\":402,\"../../constants/interactions\":478,\"../../lib\":503,\"../../lib/gl_format_color\":499,\"../../plots/cartesian/axis_ids\":558,\"../../registry\":638,\"../scatter/make_bubble_size_func\":943,\"../scatter/subtypes\":951,\"./constants\":980,\"./helpers\":985,\"color-normalize\":89,\"fast-isnumeric\":190,\"svg-path-sdf\":310}],982:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../registry\"),a=t(\"./helpers\"),o=t(\"./attributes\"),s=t(\"../scatter/constants\"),l=t(\"../scatter/subtypes\"),c=t(\"../scatter/xy_defaults\"),u=t(\"../scatter/period_defaults\"),f=t(\"../scatter/marker_defaults\"),h=t(\"../scatter/line_defaults\"),p=t(\"../scatter/fillcolor_defaults\"),d=t(\"../scatter/text_defaults\");e.exports=function(t,e,r,g){function m(r,i){return n.coerce(t,e,o,r,i)}var v=!!t.marker&&a.isOpenSymbol(t.marker.symbol),y=l.isBubble(t),x=c(t,e,g,m);if(x){u(t,e,g,m),m(\"xhoverformat\"),m(\"yhoverformat\");var b=x100},r.isDotSymbol=function(t){return\"string\"==typeof t?n.DOT_RE.test(t):t>200}},{\"./constants\":980}],986:[function(t,e,r){\"use strict\";var n=t(\"../../registry\"),i=t(\"../../lib\"),a=t(\"../scatter/get_trace_color\");function o(t,e,r,o){var s=t.xa,l=t.ya,c=t.distance,u=t.dxy,f=t.index,h={pointNumber:f,x:e[f],y:r[f]};h.tx=Array.isArray(o.text)?o.text[f]:o.text,h.htx=Array.isArray(o.hovertext)?o.hovertext[f]:o.hovertext,h.data=Array.isArray(o.customdata)?o.customdata[f]:o.customdata,h.tp=Array.isArray(o.textposition)?o.textposition[f]:o.textposition;var p=o.textfont;p&&(h.ts=i.isArrayOrTypedArray(p.size)?p.size[f]:p.size,h.tc=Array.isArray(p.color)?p.color[f]:p.color,h.tf=Array.isArray(p.family)?p.family[f]:p.family);var d=o.marker;d&&(h.ms=i.isArrayOrTypedArray(d.size)?d.size[f]:d.size,h.mo=i.isArrayOrTypedArray(d.opacity)?d.opacity[f]:d.opacity,h.mx=i.isArrayOrTypedArray(d.symbol)?d.symbol[f]:d.symbol,h.mc=i.isArrayOrTypedArray(d.color)?d.color[f]:d.color);var g=d&&d.line;g&&(h.mlc=Array.isArray(g.color)?g.color[f]:g.color,h.mlw=i.isArrayOrTypedArray(g.width)?g.width[f]:g.width);var m=d&&d.gradient;m&&\"none\"!==m.type&&(h.mgt=Array.isArray(m.type)?m.type[f]:m.type,h.mgc=Array.isArray(m.color)?m.color[f]:m.color);var v=s.c2p(h.x,!0),y=l.c2p(h.y,!0),x=h.mrc||1,b=o.hoverlabel;b&&(h.hbg=Array.isArray(b.bgcolor)?b.bgcolor[f]:b.bgcolor,h.hbc=Array.isArray(b.bordercolor)?b.bordercolor[f]:b.bordercolor,h.hts=i.isArrayOrTypedArray(b.font.size)?b.font.size[f]:b.font.size,h.htc=Array.isArray(b.font.color)?b.font.color[f]:b.font.color,h.htf=Array.isArray(b.font.family)?b.font.family[f]:b.font.family,h.hnl=i.isArrayOrTypedArray(b.namelength)?b.namelength[f]:b.namelength);var _=o.hoverinfo;_&&(h.hi=Array.isArray(_)?_[f]:_);var w=o.hovertemplate;w&&(h.ht=Array.isArray(w)?w[f]:w);var T={};T[t.index]=h;var k=o._origX,A=o._origY,M=i.extendFlat({},t,{color:a(o,h),x0:v-x,x1:v+x,xLabelVal:k?k[f]:h.x,y0:y-x,y1:y+x,yLabelVal:A?A[f]:h.y,cd:T,distance:c,spikeDistance:u,hovertemplate:h.ht});return h.htx?M.text=h.htx:h.tx?M.text=h.tx:o.text&&(M.text=o.text),i.fillText(h,o,M),n.getComponentMethod(\"errorbars\",\"hoverInfo\")(h,o,M),M}e.exports={hoverPoints:function(t,e,r,n){var i,a,s,l,c,u,f,h,p,d,g=t.cd,m=g[0].t,v=g[0].trace,y=t.xa,x=t.ya,b=m.x,_=m.y,w=y.c2p(e),T=x.c2p(r),k=t.distance;if(m.tree){var A=y.p2c(w-k),M=y.p2c(w+k),S=x.p2c(T-k),E=x.p2c(T+k);i=\"x\"===n?m.tree.range(Math.min(A,M),Math.min(x._rl[0],x._rl[1]),Math.max(A,M),Math.max(x._rl[0],x._rl[1])):m.tree.range(Math.min(A,M),Math.min(S,E),Math.max(A,M),Math.max(S,E))}else i=m.ids;var L=k;if(\"x\"===n){var C=!!v.xperiodalignment,P=!!v.yperiodalignment;for(u=0;u=Math.min(I,O)&&w<=Math.max(I,O)?0:1/0}if(f=Math.min(z,D)&&T<=Math.max(z,D)?0:1/0}d=Math.sqrt(f*f+h*h),s=i[u]}}}else for(u=i.length-1;u>-1;u--)l=b[a=i[u]],c=_[a],f=y.c2p(l)-w,h=x.c2p(c)-T,(p=Math.sqrt(f*f+h*h))v.glText.length){var w=b-v.glText.length;for(d=0;dr&&(isNaN(e[n])||isNaN(e[n+1]));)n-=2;t.positions=e.slice(r,n+2)}return t})),v.line2d.update(v.lineOptions)),v.error2d){var k=(v.errorXOptions||[]).concat(v.errorYOptions||[]);v.error2d.update(k)}v.scatter2d&&v.scatter2d.update(v.markerOptions),v.fillOrder=s.repeat(null,b),v.fill2d&&(v.fillOptions=v.fillOptions.map((function(t,e){var n=r[e];if(t&&n&&n[0]&&n[0].trace){var i,a,o=n[0],s=o.trace,l=o.t,c=v.lineOptions[e],u=[];s._ownfill&&u.push(e),s._nexttrace&&u.push(e+1),u.length&&(v.fillOrder[e]=u);var f,h,p=[],d=c&&c.positions||l.positions;if(\"tozeroy\"===s.fill){for(f=0;ff&&isNaN(d[h+1]);)h-=2;0!==d[f+1]&&(p=[d[f],0]),p=p.concat(d.slice(f,h+2)),0!==d[h+1]&&(p=p.concat([d[h],0]))}else if(\"tozerox\"===s.fill){for(f=0;ff&&isNaN(d[h]);)h-=2;0!==d[f]&&(p=[0,d[f+1]]),p=p.concat(d.slice(f,h+2)),0!==d[h]&&(p=p.concat([0,d[h+1]]))}else if(\"toself\"===s.fill||\"tonext\"===s.fill){for(p=[],i=0,t.splitNull=!0,a=0;a-1;for(d=0;d\")}function u(t){return t+\"\\xb0\"}}e.exports={hoverPoints:function(t,e,r){var o=t.cd,c=o[0].trace,u=t.xa,f=t.ya,h=t.subplot,p=360*(e>=0?Math.floor((e+180)/360):Math.ceil((e-180)/360)),d=e-p;if(n.getClosest(o,(function(t){var e=t.lonlat;if(e[0]===s)return 1/0;var n=i.modHalf(e[0],360),a=e[1],o=h.project([n,a]),l=o.x-u.c2p([d,a]),c=o.y-f.c2p([n,r]),p=Math.max(3,t.mrc||0);return Math.max(Math.sqrt(l*l+c*c)-p,1-3/p)}),t),!1!==t.index){var g=o[t.index],m=g.lonlat,v=[i.modHalf(m[0],360)+p,m[1]],y=u.c2p(v),x=f.c2p(v),b=g.mrc||1;t.x0=y-b,t.x1=y+b,t.y0=x-b,t.y1=x+b;var _={};_[c.subplot]={_subplot:h};var w=c._module.formatLabels(g,c,_);return t.lonLabel=w.lonLabel,t.latLabel=w.latLabel,t.color=a(c,g),t.extraText=l(c,g,o[0].t.labels),t.hovertemplate=c.hovertemplate,[t]}},getExtraText:l}},{\"../../components/fx\":406,\"../../constants/numerical\":479,\"../../lib\":503,\"../scatter/get_trace_color\":936}],997:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"./format_labels\"),calc:t(\"../scattergeo/calc\"),plot:t(\"./plot\"),hoverPoints:t(\"./hover\").hoverPoints,eventData:t(\"./event_data\"),selectPoints:t(\"./select\"),styleOnSelect:function(t,e){e&&e[0].trace._glTrace.update(e)},moduleType:\"trace\",name:\"scattermapbox\",basePlotModule:t(\"../../plots/mapbox\"),categories:[\"mapbox\",\"gl\",\"symbols\",\"showLegend\",\"scatter-like\"],meta:{}}},{\"../../plots/mapbox\":613,\"../scatter/marker_colorbar\":944,\"../scattergeo/calc\":969,\"./attributes\":991,\"./defaults\":993,\"./event_data\":994,\"./format_labels\":995,\"./hover\":996,\"./plot\":998,\"./select\":999}],998:[function(t,e,r){\"use strict\";var n=t(\"./convert\"),i=t(\"../../plots/mapbox/constants\").traceLayerPrefix,a=[\"fill\",\"line\",\"circle\",\"symbol\"];function o(t,e){this.type=\"scattermapbox\",this.subplot=t,this.uid=e,this.sourceIds={fill:\"source-\"+e+\"-fill\",line:\"source-\"+e+\"-line\",circle:\"source-\"+e+\"-circle\",symbol:\"source-\"+e+\"-symbol\"},this.layerIds={fill:i+e+\"-fill\",line:i+e+\"-line\",circle:i+e+\"-circle\",symbol:i+e+\"-symbol\"},this.below=null}var s=o.prototype;s.addSource=function(t,e){this.subplot.map.addSource(this.sourceIds[t],{type:\"geojson\",data:e.geojson})},s.setSourceData=function(t,e){this.subplot.map.getSource(this.sourceIds[t]).setData(e.geojson)},s.addLayer=function(t,e,r){this.subplot.addLayer({type:t,id:this.layerIds[t],source:this.sourceIds[t],layout:e.layout,paint:e.paint},r)},s.update=function(t){var e,r,i,o=this.subplot,s=o.map,l=n(o.gd,t),c=o.belowLookup[\"trace-\"+this.uid];if(c!==this.below){for(e=a.length-1;e>=0;e--)r=a[e],s.removeLayer(this.layerIds[r]);for(e=0;e=0;e--){var r=a[e];t.removeLayer(this.layerIds[r]),t.removeSource(this.sourceIds[r])}},e.exports=function(t,e){for(var r=e[0].trace,i=new o(t,r.uid),s=n(t.gd,e),l=i.below=t.belowLookup[\"trace-\"+r.uid],c=0;c\")}}e.exports={hoverPoints:function(t,e,r,a){var o=n(t,e,r,a);if(o&&!1!==o[0].index){var s=o[0];if(void 0===s.index)return o;var l=t.subplot,c=s.cd[s.index],u=s.trace;if(l.isPtInside(c))return s.xLabelVal=void 0,s.yLabelVal=void 0,i(c,u,l,s),s.hovertemplate=u.hovertemplate,o}},makeHoverPointText:i}},{\"../scatter/hover\":937}],1005:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"scatterpolar\",basePlotModule:t(\"../../plots/polar\"),categories:[\"polar\",\"symbols\",\"showLegend\",\"scatter-like\"],attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\").supplyDefaults,colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"./format_labels\"),calc:t(\"./calc\"),plot:t(\"./plot\"),style:t(\"../scatter/style\").style,styleOnSelect:t(\"../scatter/style\").styleOnSelect,hoverPoints:t(\"./hover\").hoverPoints,selectPoints:t(\"../scatter/select\"),meta:{}}},{\"../../plots/polar\":622,\"../scatter/marker_colorbar\":944,\"../scatter/select\":948,\"../scatter/style\":950,\"./attributes\":1e3,\"./calc\":1001,\"./defaults\":1002,\"./format_labels\":1003,\"./hover\":1004,\"./plot\":1006}],1006:[function(t,e,r){\"use strict\";var n=t(\"../scatter/plot\"),i=t(\"../../constants/numerical\").BADNUM;e.exports=function(t,e,r){for(var a=e.layers.frontplot.select(\"g.scatterlayer\"),o={xaxis:e.xaxis,yaxis:e.yaxis,plot:e.framework,layerClipId:e._hasClipOnAxisFalse?e.clipIds.forTraces:null},s=e.radialAxis,l=e.angularAxis,c=0;c=c&&(y.marker.cluster=d.tree),y.marker&&(y.markerSel.positions=y.markerUnsel.positions=y.marker.positions=_),y.line&&_.length>1&&l.extendFlat(y.line,s.linePositions(t,p,_)),y.text&&(l.extendFlat(y.text,{positions:_},s.textPosition(t,p,y.text,y.marker)),l.extendFlat(y.textSel,{positions:_},s.textPosition(t,p,y.text,y.markerSel)),l.extendFlat(y.textUnsel,{positions:_},s.textPosition(t,p,y.text,y.markerUnsel))),y.fill&&!h.fill2d&&(h.fill2d=!0),y.marker&&!h.scatter2d&&(h.scatter2d=!0),y.line&&!h.line2d&&(h.line2d=!0),y.text&&!h.glText&&(h.glText=!0),h.lineOptions.push(y.line),h.fillOptions.push(y.fill),h.markerOptions.push(y.marker),h.markerSelectedOptions.push(y.markerSel),h.markerUnselectedOptions.push(y.markerUnsel),h.textOptions.push(y.text),h.textSelectedOptions.push(y.textSel),h.textUnselectedOptions.push(y.textUnsel),h.selectBatch.push([]),h.unselectBatch.push([]),d.x=w,d.y=T,d.rawx=w,d.rawy=T,d.r=m,d.theta=v,d.positions=_,d._scene=h,d.index=h.count,h.count++}})),a(t,e,r)}}},{\"../../lib\":503,\"../scattergl/constants\":980,\"../scattergl/convert\":981,\"../scattergl/plot\":988,\"../scattergl/scene_update\":989,\"@plotly/point-cluster\":59,\"fast-isnumeric\":190}],1014:[function(t,e,r){\"use strict\";var n=t(\"../../plots/template_attributes\").hovertemplateAttrs,i=t(\"../../plots/template_attributes\").texttemplateAttrs,a=t(\"../../lib/extend\").extendFlat,o=t(\"../scatter/attributes\"),s=t(\"../../plots/attributes\"),l=o.line;e.exports={mode:o.mode,real:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},imag:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},text:o.text,texttemplate:i({editType:\"plot\"},{keys:[\"real\",\"imag\",\"text\"]}),hovertext:o.hovertext,line:{color:l.color,width:l.width,dash:l.dash,shape:a({},l.shape,{values:[\"linear\",\"spline\"]}),smoothing:l.smoothing,editType:\"calc\"},connectgaps:o.connectgaps,marker:o.marker,cliponaxis:a({},o.cliponaxis,{dflt:!1}),textposition:o.textposition,textfont:o.textfont,fill:a({},o.fill,{values:[\"none\",\"toself\",\"tonext\"],dflt:\"none\"}),fillcolor:o.fillcolor,hoverinfo:a({},s.hoverinfo,{flags:[\"real\",\"imag\",\"text\",\"name\"]}),hoveron:o.hoveron,hovertemplate:n(),selected:o.selected,unselected:o.unselected}},{\"../../lib/extend\":493,\"../../plots/attributes\":550,\"../../plots/template_attributes\":633,\"../scatter/attributes\":926}],1015:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../constants/numerical\").BADNUM,a=t(\"../scatter/colorscale_calc\"),o=t(\"../scatter/arrays_to_calcdata\"),s=t(\"../scatter/calc_selection\"),l=t(\"../scatter/calc\").calcMarkerSize;e.exports=function(t,e){for(var r=t._fullLayout,c=e.subplot,u=r[c].realaxis,f=r[c].imaginaryaxis,h=u.makeCalcdata(e,\"real\"),p=f.makeCalcdata(e,\"imag\"),d=e._length,g=new Array(d),m=0;m\")}}e.exports={hoverPoints:function(t,e,r,a){var o=n(t,e,r,a);if(o&&!1!==o[0].index){var s=o[0];if(void 0===s.index)return o;var l=t.subplot,c=s.cd[s.index],u=s.trace;if(l.isPtInside(c))return s.xLabelVal=void 0,s.yLabelVal=void 0,i(c,u,l,s),s.hovertemplate=u.hovertemplate,o}},makeHoverPointText:i}},{\"../scatter/hover\":937}],1019:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"scattersmith\",basePlotModule:t(\"../../plots/smith\"),categories:[\"smith\",\"symbols\",\"showLegend\",\"scatter-like\"],attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"./format_labels\"),calc:t(\"./calc\"),plot:t(\"./plot\"),style:t(\"../scatter/style\").style,styleOnSelect:t(\"../scatter/style\").styleOnSelect,hoverPoints:t(\"./hover\").hoverPoints,selectPoints:t(\"../scatter/select\"),meta:{}}},{\"../../plots/smith\":629,\"../scatter/marker_colorbar\":944,\"../scatter/select\":948,\"../scatter/style\":950,\"./attributes\":1014,\"./calc\":1015,\"./defaults\":1016,\"./format_labels\":1017,\"./hover\":1018,\"./plot\":1020}],1020:[function(t,e,r){\"use strict\";var n=t(\"../scatter/plot\"),i=t(\"../../constants/numerical\").BADNUM,a=t(\"../../plots/smith/helpers\").smith;e.exports=function(t,e,r){for(var o=e.layers.frontplot.select(\"g.scatterlayer\"),s={xaxis:e.xaxis,yaxis:e.yaxis,plot:e.framework,layerClipId:e._hasClipOnAxisFalse?e.clipIds.forTraces:null},l=0;l\"),o.hovertemplate=h.hovertemplate,a}function x(t,e){v.push(t._hovertitle+\": \"+e)}}},{\"../scatter/hover\":937}],1027:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),supplyDefaults:t(\"./defaults\"),colorbar:t(\"../scatter/marker_colorbar\"),formatLabels:t(\"./format_labels\"),calc:t(\"./calc\"),plot:t(\"./plot\"),style:t(\"../scatter/style\").style,styleOnSelect:t(\"../scatter/style\").styleOnSelect,hoverPoints:t(\"./hover\"),selectPoints:t(\"../scatter/select\"),eventData:t(\"./event_data\"),moduleType:\"trace\",name:\"scatterternary\",basePlotModule:t(\"../../plots/ternary\"),categories:[\"ternary\",\"symbols\",\"showLegend\",\"scatter-like\"],meta:{}}},{\"../../plots/ternary\":634,\"../scatter/marker_colorbar\":944,\"../scatter/select\":948,\"../scatter/style\":950,\"./attributes\":1021,\"./calc\":1022,\"./defaults\":1023,\"./event_data\":1024,\"./format_labels\":1025,\"./hover\":1026,\"./plot\":1028}],1028:[function(t,e,r){\"use strict\";var n=t(\"../scatter/plot\");e.exports=function(t,e,r){var i=e.plotContainer;i.select(\".scatterlayer\").selectAll(\"*\").remove();var a={xaxis:e.xaxis,yaxis:e.yaxis,plot:i,layerClipId:e._hasClipOnAxisFalse?e.clipIdRelative:null},o=e.layers.frontplot.select(\"g.scatterlayer\");n(t,a,r,o)}},{\"../scatter/plot\":947}],1029:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\"),i=t(\"../../components/colorscale/attributes\"),a=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,o=t(\"../../plots/template_attributes\").hovertemplateAttrs,s=t(\"../scattergl/attributes\"),l=t(\"../../plots/cartesian/constants\").idRegex,c=t(\"../../plot_api/plot_template\").templatedArray,u=t(\"../../lib/extend\").extendFlat,f=n.marker,h=f.line,p=u(i(\"marker.line\",{editTypeOverride:\"calc\"}),{width:u({},h.width,{editType:\"calc\"}),editType:\"calc\"}),d=u(i(\"marker\"),{symbol:f.symbol,size:u({},f.size,{editType:\"markerSize\"}),sizeref:f.sizeref,sizemin:f.sizemin,sizemode:f.sizemode,opacity:f.opacity,colorbar:f.colorbar,line:p,editType:\"calc\"});function g(t){return{valType:\"info_array\",freeLength:!0,editType:\"calc\",items:{valType:\"subplotid\",regex:l[t],editType:\"plot\"}}}d.color.editType=d.cmin.editType=d.cmax.editType=\"style\",e.exports={dimensions:c(\"dimension\",{visible:{valType:\"boolean\",dflt:!0,editType:\"calc\"},label:{valType:\"string\",editType:\"calc\"},values:{valType:\"data_array\",editType:\"calc+clearAxisTypes\"},axis:{type:{valType:\"enumerated\",values:[\"linear\",\"log\",\"date\",\"category\"],editType:\"calc+clearAxisTypes\"},matches:{valType:\"boolean\",dflt:!1,editType:\"calc\"},editType:\"calc+clearAxisTypes\"},editType:\"calc+clearAxisTypes\"}),text:u({},s.text,{}),hovertext:u({},s.hovertext,{}),hovertemplate:o(),xhoverformat:a(\"x\"),yhoverformat:a(\"y\"),marker:d,xaxes:g(\"x\"),yaxes:g(\"y\"),diagonal:{visible:{valType:\"boolean\",dflt:!0,editType:\"calc\"},editType:\"calc\"},showupperhalf:{valType:\"boolean\",dflt:!0,editType:\"calc\"},showlowerhalf:{valType:\"boolean\",dflt:!0,editType:\"calc\"},selected:{marker:s.selected.marker,editType:\"calc\"},unselected:{marker:s.unselected.marker,editType:\"calc\"},opacity:s.opacity}},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plot_api/plot_template\":543,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/cartesian/constants\":561,\"../../plots/template_attributes\":633,\"../scatter/attributes\":926,\"../scattergl/attributes\":978}],1030:[function(t,e,r){\"use strict\";var n=t(\"regl-line2d\"),i=t(\"../../registry\"),a=t(\"../../lib/prepare_regl\"),o=t(\"../../plots/get_data\").getModuleCalcData,s=t(\"../../plots/cartesian\"),l=t(\"../../plots/cartesian/axis_ids\").getFromId,c=t(\"../../plots/cartesian/axes\").shouldShowZeroLine;function u(t,e,r){for(var n=r.matrixOptions.data.length,i=e._visibleDims,a=r.viewOpts.ranges=new Array(n),o=0;oh?b.sizeAvg||Math.max(b.size,3):a(e,x),p=0;pa&&l||i-1,P=!0;if(o(x)||!!p.selectedpoints||C){var I=p._length;if(p.selectedpoints){g.selectBatch=p.selectedpoints;var O=p.selectedpoints,z={};for(l=0;l1&&(u=g[y-1],h=m[y-1],d=v[y-1]),e=0;eu?\"-\":\"+\")+\"x\")).replace(\"y\",(f>h?\"-\":\"+\")+\"y\")).replace(\"z\",(p>d?\"-\":\"+\")+\"z\");var L=function(){y=0,M=[],S=[],E=[]};(!y||y2?t.slice(1,e-1):2===e?[(t[0]+t[1])/2]:t}function p(t){var e=t.length;return 1===e?[.5,.5]:[t[1]-t[0],t[e-1]-t[e-2]]}function d(t,e){var r=t.fullSceneLayout,i=t.dataScale,u=e._len,f={};function d(t,e){var n=r[e],o=i[c[e]];return a.simpleMap(t,(function(t){return n.d2l(t)*o}))}if(f.vectors=l(d(e._u,\"xaxis\"),d(e._v,\"yaxis\"),d(e._w,\"zaxis\"),u),!u)return{positions:[],cells:[]};var g=d(e._Xs,\"xaxis\"),m=d(e._Ys,\"yaxis\"),v=d(e._Zs,\"zaxis\");if(f.meshgrid=[g,m,v],f.gridFill=e._gridFill,e._slen)f.startingPositions=l(d(e._startsX,\"xaxis\"),d(e._startsY,\"yaxis\"),d(e._startsZ,\"zaxis\"));else{for(var y=m[0],x=h(g),b=h(v),_=new Array(x.length*b.length),w=0,T=0;T=0};v?(r=Math.min(m.length,x.length),l=function(t){return A(m[t])&&M(t)},f=function(t){return String(m[t])}):(r=Math.min(y.length,x.length),l=function(t){return A(y[t])&&M(t)},f=function(t){return String(y[t])}),_&&(r=Math.min(r,b.length));for(var S=0;S1){for(var P=a.randstr(),I=0;I\"),name:A||z(\"name\")?y.name:void 0,color:k(\"hoverlabel.bgcolor\")||x.color,borderColor:k(\"hoverlabel.bordercolor\"),fontFamily:k(\"hoverlabel.font.family\"),fontSize:k(\"hoverlabel.font.size\"),fontColor:k(\"hoverlabel.font.color\"),nameLength:k(\"hoverlabel.namelength\"),textAlign:k(\"hoverlabel.align\"),hovertemplate:A,hovertemplateLabels:P,eventData:l};m&&(F.x0=E-i.rInscribed*i.rpx1,F.x1=E+i.rInscribed*i.rpx1,F.idealAlign=i.pxmid[0]<0?\"left\":\"right\"),v&&(F.x=E,F.idealAlign=E<0?\"left\":\"right\");var B=[];o.loneHover(F,{container:a._hoverlayer.node(),outerContainer:a._paper.node(),gd:r,inOut_bbox:B}),l[0].bbox=B[0],d._hasHoverLabel=!0}if(v){var N=t.select(\"path.surface\");h.styleOne(N,i,y,{hovered:!0})}d._hasHoverEvent=!0,r.emit(\"plotly_hover\",{points:l||[f(i,y,h.eventDataKeys)],event:n.event})}})),t.on(\"mouseout\",(function(e){var i=r._fullLayout,a=r._fullData[d.index],s=n.select(this).datum();if(d._hasHoverEvent&&(e.originalEvent=n.event,r.emit(\"plotly_unhover\",{points:[f(s,a,h.eventDataKeys)],event:n.event}),d._hasHoverEvent=!1),d._hasHoverLabel&&(o.loneUnhover(i._hoverlayer.node()),d._hasHoverLabel=!1),v){var l=t.select(\"path.surface\");h.styleOne(l,s,a,{hovered:!1})}})),t.on(\"click\",(function(t){var e=r._fullLayout,a=r._fullData[d.index],s=m&&(c.isHierarchyRoot(t)||c.isLeaf(t)),u=c.getPtId(t),p=c.isEntry(t)?c.findEntryWithChild(g,u):c.findEntryWithLevel(g,u),v=c.getPtId(p),y={points:[f(t,a,h.eventDataKeys)],event:n.event};s||(y.nextLevel=v);var x=l.triggerHandler(r,\"plotly_\"+d.type+\"click\",y);if(!1!==x&&e.hovermode&&(r._hoverdata=[f(t,a,h.eventDataKeys)],o.click(r,n.event)),!s&&!1!==x&&!r._dragging&&!r._transitioning){i.call(\"_storeDirectGUIEdit\",a,e._tracePreGUI[a.uid],{level:a.level});var b={data:[{level:v}],traces:[d.index]},_={frame:{redraw:!1,duration:h.transitionTime},transition:{duration:h.transitionTime,easing:h.transitionEasing},mode:\"immediate\",fromcurrent:!0};o.loneUnhover(e._hoverlayer.node()),i.call(\"animate\",r,b,_)}}))}},{\"../../components/fx\":406,\"../../components/fx/helpers\":402,\"../../lib\":503,\"../../lib/events\":492,\"../../registry\":638,\"../pie/helpers\":905,\"./helpers\":1051,\"@plotly/d3\":58}],1051:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../components/color\"),a=t(\"../../lib/setcursor\"),o=t(\"../pie/helpers\");function s(t){return t.data.data.pid}r.findEntryWithLevel=function(t,e){var n;return e&&t.eachAfter((function(t){if(r.getPtId(t)===e)return n=t.copy()})),n||t},r.findEntryWithChild=function(t,e){var n;return t.eachAfter((function(t){for(var i=t.children||[],a=0;a0)},r.getMaxDepth=function(t){return t.maxdepth>=0?t.maxdepth:1/0},r.isHeader=function(t,e){return!(r.isLeaf(t)||t.depth===e._maxDepth-1)},r.getParent=function(t,e){return r.findEntryWithLevel(t,s(e))},r.listPath=function(t,e){var n=t.parent;if(!n)return[];var i=e?[n.data[e]]:[n];return r.listPath(n,e).concat(i)},r.getPath=function(t){return r.listPath(t,\"label\").join(\"/\")+\"/\"},r.formatValue=o.formatPieValue,r.formatPercent=function(t,e){var r=n.formatPercent(t,0);return\"0%\"===r&&(r=o.formatPiePercent(t,e)),r}},{\"../../components/color\":366,\"../../lib\":503,\"../../lib/setcursor\":524,\"../pie/helpers\":905}],1052:[function(t,e,r){\"use strict\";e.exports={moduleType:\"trace\",name:\"sunburst\",basePlotModule:t(\"./base_plot\"),categories:[],animatable:!0,attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\"),supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\").calc,crossTraceCalc:t(\"./calc\").crossTraceCalc,plot:t(\"./plot\").plot,style:t(\"./style\").style,colorbar:t(\"../scatter/marker_colorbar\"),meta:{}}},{\"../scatter/marker_colorbar\":944,\"./attributes\":1045,\"./base_plot\":1046,\"./calc\":1047,\"./defaults\":1049,\"./layout_attributes\":1053,\"./layout_defaults\":1054,\"./plot\":1055,\"./style\":1056}],1053:[function(t,e,r){\"use strict\";e.exports={sunburstcolorway:{valType:\"colorlist\",editType:\"calc\"},extendsunburstcolors:{valType:\"boolean\",dflt:!0,editType:\"calc\"}}},{}],1054:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e){function r(r,a){return n.coerce(t,e,i,r,a)}r(\"sunburstcolorway\",e.colorway),r(\"extendsunburstcolors\")}},{\"../../lib\":503,\"./layout_attributes\":1053}],1055:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"d3-hierarchy\"),a=t(\"d3-interpolate\").interpolate,o=t(\"../../components/drawing\"),s=t(\"../../lib\"),l=t(\"../../lib/svg_text_utils\"),c=t(\"../bar/uniform_text\"),u=c.recordMinTextSize,f=c.clearMinTextSize,h=t(\"../pie/plot\"),p=t(\"../pie/helpers\").getRotationAngle,d=h.computeTransform,g=h.transformInsideText,m=t(\"./style\").styleOne,v=t(\"../bar/style\").resizeText,y=t(\"./fx\"),x=t(\"./constants\"),b=t(\"./helpers\");function _(t,e,c,f){var h=t._fullLayout,v=!h.uniformtext.mode&&b.hasTransition(f),_=n.select(c).selectAll(\"g.slice\"),T=e[0],k=T.trace,A=T.hierarchy,M=b.findEntryWithLevel(A,k.level),S=b.getMaxDepth(k),E=h._size,L=k.domain,C=E.w*(L.x[1]-L.x[0]),P=E.h*(L.y[1]-L.y[0]),I=.5*Math.min(C,P),O=T.cx=E.l+E.w*(L.x[1]+L.x[0])/2,z=T.cy=E.t+E.h*(1-L.y[0])-P/2;if(!M)return _.remove();var D=null,R={};v&&_.each((function(t){R[b.getPtId(t)]={rpx0:t.rpx0,rpx1:t.rpx1,x0:t.x0,x1:t.x1,transform:t.transform},!D&&b.isEntry(t)&&(D=t)}));var F=function(t){return i.partition().size([2*Math.PI,t.height+1])(t)}(M).descendants(),B=M.height+1,N=0,j=S;T.hasMultipleRoots&&b.isHierarchyRoot(M)&&(F=F.slice(1),B-=1,N=1,j+=1),F=F.filter((function(t){return t.y1<=j}));var U=p(k.rotation);U&&F.forEach((function(t){t.x0+=U,t.x1+=U}));var V=Math.min(B,S),H=function(t){return(t-N)/V*I},q=function(t,e){return[t*Math.cos(e),-t*Math.sin(e)]},G=function(t){return s.pathAnnulus(t.rpx0,t.rpx1,t.x0,t.x1,O,z)},Y=function(t){return O+w(t)[0]*(t.transform.rCenter||0)+(t.transform.x||0)},W=function(t){return z+w(t)[1]*(t.transform.rCenter||0)+(t.transform.y||0)};(_=_.data(F,b.getPtId)).enter().append(\"g\").classed(\"slice\",!0),v?_.exit().transition().each((function(){var t=n.select(this);t.select(\"path.surface\").transition().attrTween(\"d\",(function(t){var e=function(t){var e,r=b.getPtId(t),n=R[r],i=R[b.getPtId(M)];if(i){var o=(t.x1>i.x1?2*Math.PI:0)+U;e=t.rpx1X?2*Math.PI:0)+U;e={x0:i,x1:i}}else e={rpx0:I,rpx1:I},s.extendFlat(e,K(t));else e={rpx0:0,rpx1:0};else e={x0:U,x1:U};return a(e,n)}(t);return function(t){return G(e(t))}})):f.attr(\"d\",G),c.call(y,M,t,e,{eventDataKeys:x.eventDataKeys,transitionTime:x.CLICK_TRANSITION_TIME,transitionEasing:x.CLICK_TRANSITION_EASING}).call(b.setSliceCursor,t,{hideOnRoot:!0,hideOnLeaves:!0,isTransitioning:t._transitioning}),f.call(m,i,k);var p=s.ensureSingle(c,\"g\",\"slicetext\"),_=s.ensureSingle(p,\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),w=s.ensureUniformFontSize(t,b.determineTextFont(k,i,h.font));_.text(r.formatSliceLabel(i,M,k,e,h)).classed(\"slicetext\",!0).attr(\"text-anchor\",\"middle\").call(o.font,w).call(l.convertToTspans,t);var A=o.bBox(_.node());i.transform=g(A,i,T),i.transform.targetX=Y(i),i.transform.targetY=W(i);var S=function(t,e){var r=t.transform;return d(r,e),r.fontSize=w.size,u(k.type,r,h),s.getTextTransform(r)};v?_.transition().attrTween(\"transform\",(function(t){var e=function(t){var e,r=R[b.getPtId(t)],n=t.transform;if(r)e=r;else if(e={rpx1:t.rpx1,transform:{textPosAngle:n.textPosAngle,scale:0,rotate:n.rotate,rCenter:n.rCenter,x:n.x,y:n.y}},D)if(t.parent)if(X){var i=t.x1>X?2*Math.PI:0;e.x0=e.x1=i}else s.extendFlat(e,K(t));else e.x0=e.x1=U;else e.x0=e.x1=U;var o=a(e.transform.textPosAngle,t.transform.textPosAngle),l=a(e.rpx1,t.rpx1),c=a(e.x0,t.x0),f=a(e.x1,t.x1),p=a(e.transform.scale,n.scale),d=a(e.transform.rotate,n.rotate),g=0===n.rCenter?3:0===e.transform.rCenter?1/3:1,m=a(e.transform.rCenter,n.rCenter);return function(t){var e=l(t),r=c(t),i=f(t),a=function(t){return m(Math.pow(t,g))}(t),s={pxmid:q(e,(r+i)/2),rpx1:e,transform:{textPosAngle:o(t),rCenter:a,x:n.x,y:n.y}};return u(k.type,n,h),{transform:{targetX:Y(s),targetY:W(s),scale:p(t),rotate:d(t),rCenter:a}}}}(t);return function(t){return S(e(t),A)}})):_.attr(\"transform\",S(i,A))}))}function w(t){return e=t.rpx1,r=t.transform.textPosAngle,[e*Math.sin(r),-e*Math.cos(r)];var e,r}r.plot=function(t,e,r,i){var a,o,s=t._fullLayout,l=s._sunburstlayer,c=!r,u=!s.uniformtext.mode&&b.hasTransition(r);(f(\"sunburst\",s),(a=l.selectAll(\"g.trace.sunburst\").data(e,(function(t){return t[0].trace.uid}))).enter().append(\"g\").classed(\"trace\",!0).classed(\"sunburst\",!0).attr(\"stroke-linejoin\",\"round\"),a.order(),u)?(i&&(o=i()),n.transition().duration(r.duration).ease(r.easing).each(\"end\",(function(){o&&o()})).each(\"interrupt\",(function(){o&&o()})).each((function(){l.selectAll(\"g.trace\").each((function(e){_(t,e,this,r)}))}))):(a.each((function(e){_(t,e,this,r)})),s.uniformtext.mode&&v(t,s._sunburstlayer.selectAll(\".trace\"),\"sunburst\"));c&&a.exit().remove()},r.formatSliceLabel=function(t,e,r,n,i){var a=r.texttemplate,o=r.textinfo;if(!(a||o&&\"none\"!==o))return\"\";var l=i.separators,c=n[0],u=t.data.data,f=c.hierarchy,h=b.isHierarchyRoot(t),p=b.getParent(f,t),d=b.getValue(t);if(!a){var g,m=o.split(\"+\"),v=function(t){return-1!==m.indexOf(t)},y=[];if(v(\"label\")&&u.label&&y.push(u.label),u.hasOwnProperty(\"v\")&&v(\"value\")&&y.push(b.formatValue(u.v,l)),!h){v(\"current path\")&&y.push(b.getPath(t.data));var x=0;v(\"percent parent\")&&x++,v(\"percent entry\")&&x++,v(\"percent root\")&&x++;var _=x>1;if(x){var w,T=function(t){g=b.formatPercent(w,l),_&&(g+=\" of \"+t),y.push(g)};v(\"percent parent\")&&!h&&(w=d/b.getValue(p),T(\"parent\")),v(\"percent entry\")&&(w=d/b.getValue(e),T(\"entry\")),v(\"percent root\")&&(w=d/b.getValue(f),T(\"root\"))}}return v(\"text\")&&(g=s.castOption(r,u.i,\"text\"),s.isValidTextValue(g)&&y.push(g)),y.join(\"
\")}var k=s.castOption(r,u.i,\"texttemplate\");if(!k)return\"\";var A={};u.label&&(A.label=u.label),u.hasOwnProperty(\"v\")&&(A.value=u.v,A.valueLabel=b.formatValue(u.v,l)),A.currentPath=b.getPath(t.data),h||(A.percentParent=d/b.getValue(p),A.percentParentLabel=b.formatPercent(A.percentParent,l),A.parent=b.getPtLabel(p)),A.percentEntry=d/b.getValue(e),A.percentEntryLabel=b.formatPercent(A.percentEntry,l),A.entry=b.getPtLabel(e),A.percentRoot=d/b.getValue(f),A.percentRootLabel=b.formatPercent(A.percentRoot,l),A.root=b.getPtLabel(f),u.hasOwnProperty(\"color\")&&(A.color=u.color);var M=s.castOption(r,u.i,\"text\");return(s.isValidTextValue(M)||\"\"===M)&&(A.text=M),A.customdata=s.castOption(r,u.i,\"customdata\"),s.texttemplateString(k,A,i._d3locale,A,r._meta||{})}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../bar/style\":662,\"../bar/uniform_text\":664,\"../pie/helpers\":905,\"../pie/plot\":909,\"./constants\":1048,\"./fx\":1050,\"./helpers\":1051,\"./style\":1056,\"@plotly/d3\":58,\"d3-hierarchy\":115,\"d3-interpolate\":116}],1056:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../components/color\"),a=t(\"../../lib\"),o=t(\"../bar/uniform_text\").resizeText;function s(t,e,r){var n=e.data.data,o=!e.children,s=n.i,l=a.castOption(r,s,\"marker.line.color\")||i.defaultLine,c=a.castOption(r,s,\"marker.line.width\")||0;t.style(\"stroke-width\",c).call(i.fill,n.color).call(i.stroke,l).style(\"opacity\",o?r.leaf.opacity:null)}e.exports={style:function(t){var e=t._fullLayout._sunburstlayer.selectAll(\".trace\");o(t,e,\"sunburst\"),e.each((function(t){var e=n.select(this),r=t[0].trace;e.style(\"opacity\",r.opacity),e.selectAll(\"path.surface\").each((function(t){n.select(this).call(s,t,r)}))}))},styleOne:s}},{\"../../components/color\":366,\"../../lib\":503,\"../bar/uniform_text\":664,\"@plotly/d3\":58}],1057:[function(t,e,r){\"use strict\";var n=t(\"../../components/color\"),i=t(\"../../components/colorscale/attributes\"),a=t(\"../../plots/cartesian/axis_format_attributes\").axisHoverFormat,o=t(\"../../plots/template_attributes\").hovertemplateAttrs,s=t(\"../../plots/attributes\"),l=t(\"../../lib/extend\").extendFlat,c=t(\"../../plot_api/edit_types\").overrideAll;function u(t){return{show:{valType:\"boolean\",dflt:!1},start:{valType:\"number\",dflt:null,editType:\"plot\"},end:{valType:\"number\",dflt:null,editType:\"plot\"},size:{valType:\"number\",dflt:null,min:0,editType:\"plot\"},project:{x:{valType:\"boolean\",dflt:!1},y:{valType:\"boolean\",dflt:!1},z:{valType:\"boolean\",dflt:!1}},color:{valType:\"color\",dflt:n.defaultLine},usecolormap:{valType:\"boolean\",dflt:!1},width:{valType:\"number\",min:1,max:16,dflt:2},highlight:{valType:\"boolean\",dflt:!0},highlightcolor:{valType:\"color\",dflt:n.defaultLine},highlightwidth:{valType:\"number\",min:1,max:16,dflt:2}}}var f=e.exports=c(l({z:{valType:\"data_array\"},x:{valType:\"data_array\"},y:{valType:\"data_array\"},text:{valType:\"string\",dflt:\"\",arrayOk:!0},hovertext:{valType:\"string\",dflt:\"\",arrayOk:!0},hovertemplate:o(),xhoverformat:a(\"x\"),yhoverformat:a(\"y\"),zhoverformat:a(\"z\"),connectgaps:{valType:\"boolean\",dflt:!1,editType:\"calc\"},surfacecolor:{valType:\"data_array\"}},i(\"\",{colorAttr:\"z or surfacecolor\",showScaleDflt:!0,autoColorDflt:!1,editTypeOverride:\"calc\"}),{contours:{x:u(),y:u(),z:u()},hidesurface:{valType:\"boolean\",dflt:!1},lightposition:{x:{valType:\"number\",min:-1e5,max:1e5,dflt:10},y:{valType:\"number\",min:-1e5,max:1e5,dflt:1e4},z:{valType:\"number\",min:-1e5,max:1e5,dflt:0}},lighting:{ambient:{valType:\"number\",min:0,max:1,dflt:.8},diffuse:{valType:\"number\",min:0,max:1,dflt:.8},specular:{valType:\"number\",min:0,max:2,dflt:.05},roughness:{valType:\"number\",min:0,max:1,dflt:.5},fresnel:{valType:\"number\",min:0,max:5,dflt:.2}},opacity:{valType:\"number\",min:0,max:1,dflt:1},opacityscale:{valType:\"any\",editType:\"calc\"},_deprecated:{zauto:l({},i.zauto,{}),zmin:l({},i.zmin,{}),zmax:l({},i.zmax,{})},hoverinfo:l({},s.hoverinfo),showlegend:l({},s.showlegend,{dflt:!1})}),\"calc\",\"nested\");f.x.editType=f.y.editType=f.z.editType=\"calc+clearAxisTypes\",f.transforms=void 0},{\"../../components/color\":366,\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plot_api/edit_types\":536,\"../../plots/attributes\":550,\"../../plots/cartesian/axis_format_attributes\":557,\"../../plots/template_attributes\":633}],1058:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/calc\");e.exports=function(t,e){e.surfacecolor?n(t,e,{vals:e.surfacecolor,containerStr:\"\",cLetter:\"c\"}):n(t,e,{vals:e.z,containerStr:\"\",cLetter:\"c\"})}},{\"../../components/colorscale/calc\":374}],1059:[function(t,e,r){\"use strict\";var n=t(\"../../../stackgl_modules\").gl_surface3d,i=t(\"../../../stackgl_modules\").ndarray,a=t(\"../../../stackgl_modules\").ndarray_linear_interpolate.d2,o=t(\"../heatmap/interp2d\"),s=t(\"../heatmap/find_empties\"),l=t(\"../../lib\").isArrayOrTypedArray,c=t(\"../../lib/gl_format_color\").parseColorScale,u=t(\"../../lib/str2rgbarray\"),f=t(\"../../components/colorscale\").extractOpts;function h(t,e,r){this.scene=t,this.uid=r,this.surface=e,this.data=null,this.showContour=[!1,!1,!1],this.contourStart=[null,null,null],this.contourEnd=[null,null,null],this.contourSize=[0,0,0],this.minValues=[1/0,1/0,1/0],this.maxValues=[-1/0,-1/0,-1/0],this.dataScaleX=1,this.dataScaleY=1,this.refineData=!0,this.objectOffset=[0,0,0]}var p=h.prototype;p.getXat=function(t,e,r,n){var i=l(this.data.x)?l(this.data.x[0])?this.data.x[e][t]:this.data.x[t]:t;return void 0===r?i:n.d2l(i,0,r)},p.getYat=function(t,e,r,n){var i=l(this.data.y)?l(this.data.y[0])?this.data.y[e][t]:this.data.y[e]:e;return void 0===r?i:n.d2l(i,0,r)},p.getZat=function(t,e,r,n){var i=this.data.z[e][t];return null===i&&this.data.connectgaps&&this.data._interpolatedZ&&(i=this.data._interpolatedZ[e][t]),void 0===r?i:n.d2l(i,0,r)},p.handlePick=function(t){if(t.object===this.surface){var e=(t.data.index[0]-1)/this.dataScaleX-1,r=(t.data.index[1]-1)/this.dataScaleY-1,n=Math.max(Math.min(Math.round(e),this.data.z[0].length-1),0),i=Math.max(Math.min(Math.round(r),this.data._ylength-1),0);t.index=[n,i],t.traceCoordinate=[this.getXat(n,i),this.getYat(n,i),this.getZat(n,i)],t.dataCoordinate=[this.getXat(n,i,this.data.xcalendar,this.scene.fullSceneLayout.xaxis),this.getYat(n,i,this.data.ycalendar,this.scene.fullSceneLayout.yaxis),this.getZat(n,i,this.data.zcalendar,this.scene.fullSceneLayout.zaxis)];for(var a=0;a<3;a++){var o=t.dataCoordinate[a];null!=o&&(t.dataCoordinate[a]*=this.scene.dataScale[a])}var s=this.data.hovertext||this.data.text;return Array.isArray(s)&&s[i]&&void 0!==s[i][n]?t.textLabel=s[i][n]:t.textLabel=s||\"\",t.data.dataCoordinate=t.dataCoordinate.slice(),this.surface.highlight(t.data),this.scene.glplot.spikes.position=t.dataCoordinate,!0}};var d=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,1063,1069,1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277,1279,1283,1289,1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,1489,1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,1579,1583,1597,1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,1697,1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783,1787,1789,1801,1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,1913,1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003,2011,2017,2027,2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111,2113,2129,2131,2137,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239,2243,2251,2267,2269,2273,2281,2287,2293,2297,2309,2311,2333,2339,2341,2347,2351,2357,2371,2377,2381,2383,2389,2393,2399,2411,2417,2423,2437,2441,2447,2459,2467,2473,2477,2503,2521,2531,2539,2543,2549,2551,2557,2579,2591,2593,2609,2617,2621,2633,2647,2657,2659,2663,2671,2677,2683,2687,2689,2693,2699,2707,2711,2713,2719,2729,2731,2741,2749,2753,2767,2777,2789,2791,2797,2801,2803,2819,2833,2837,2843,2851,2857,2861,2879,2887,2897,2903,2909,2917,2927,2939,2953,2957,2963,2969,2971,2999];function g(t,e){if(t0){r=d[n];break}return r}function y(t,e){if(!(t<1||e<1)){for(var r=m(t),n=m(e),i=1,a=0;a_;)r--,r/=v(r),++r1?n:1},p.refineCoords=function(t){for(var e=this.dataScaleX,r=this.dataScaleY,n=t[0].shape[0],a=t[0].shape[1],o=0|Math.floor(t[0].shape[0]*e+1),s=0|Math.floor(t[0].shape[1]*r+1),l=1+n+1,c=1+a+1,u=i(new Float32Array(l*c),[l,c]),f=[1/e,0,0,0,1/r,0,0,0,1],h=0;h0&&null!==this.contourStart[t]&&null!==this.contourEnd[t]&&this.contourEnd[t]>this.contourStart[t]))for(i[t]=!0,e=this.contourStart[t];ea&&(this.minValues[e]=a),this.maxValues[e]\",maxDimensionCount:60,overdrag:45,releaseTransitionDuration:120,releaseTransitionEase:\"cubic-out\",scrollbarCaptureWidth:18,scrollbarHideDelay:1e3,scrollbarHideDuration:1e3,scrollbarOffset:5,scrollbarWidth:8,transitionDuration:100,transitionEase:\"cubic-out\",uplift:5,wrapSpacer:\" \",wrapSplitCharacter:\" \",cn:{table:\"table\",tableControlView:\"table-control-view\",scrollBackground:\"scroll-background\",yColumn:\"y-column\",columnBlock:\"column-block\",scrollAreaClip:\"scroll-area-clip\",scrollAreaClipRect:\"scroll-area-clip-rect\",columnBoundary:\"column-boundary\",columnBoundaryClippath:\"column-boundary-clippath\",columnBoundaryRect:\"column-boundary-rect\",columnCells:\"column-cells\",columnCell:\"column-cell\",cellRect:\"cell-rect\",cellText:\"cell-text\",cellTextHolder:\"cell-text-holder\",scrollbarKit:\"scrollbar-kit\",scrollbar:\"scrollbar\",scrollbarSlider:\"scrollbar-slider\",scrollbarGlyph:\"scrollbar-glyph\",scrollbarCaptureZone:\"scrollbar-capture-zone\"}}},{}],1066:[function(t,e,r){\"use strict\";var n=t(\"./constants\"),i=t(\"../../lib/extend\").extendFlat,a=t(\"fast-isnumeric\");function o(t){if(Array.isArray(t)){for(var e=0,r=0;r=e||c===t.length-1)&&(n[i]=o,o.key=l++,o.firstRowIndex=s,o.lastRowIndex=c,o={firstRowIndex:null,lastRowIndex:null,rows:[]},i+=a,s=c+1,a=0);return n}e.exports=function(t,e){var r=l(e.cells.values),p=function(t){return t.slice(e.header.values.length,t.length)},d=l(e.header.values);d.length&&!d[0].length&&(d[0]=[\"\"],d=l(d));var g=d.concat(p(r).map((function(){return c((d[0]||[\"\"]).length)}))),m=e.domain,v=Math.floor(t._fullLayout._size.w*(m.x[1]-m.x[0])),y=Math.floor(t._fullLayout._size.h*(m.y[1]-m.y[0])),x=e.header.values.length?g[0].map((function(){return e.header.height})):[n.emptyHeaderHeight],b=r.length?r[0].map((function(){return e.cells.height})):[],_=x.reduce(s,0),w=h(b,y-_+n.uplift),T=f(h(x,_),[]),k=f(w,T),A={},M=e._fullInput.columnorder.concat(p(r.map((function(t,e){return e})))),S=g.map((function(t,r){var n=Array.isArray(e.columnwidth)?e.columnwidth[Math.min(r,e.columnwidth.length-1)]:e.columnwidth;return a(n)?Number(n):1})),E=S.reduce(s,0);S=S.map((function(t){return t/E*v}));var L=Math.max(o(e.header.line.width),o(e.cells.line.width)),C={key:e.uid+t._context.staticPlot,translateX:m.x[0]*t._fullLayout._size.w,translateY:t._fullLayout._size.h*(1-m.y[1]),size:t._fullLayout._size,width:v,maxLineWidth:L,height:y,columnOrder:M,groupHeight:y,rowBlocks:k,headerRowBlocks:T,scrollY:0,cells:i({},e.cells,{values:r}),headerCells:i({},e.header,{values:g}),gdColumns:g.map((function(t){return t[0]})),gdColumnsOriginalOrder:g.map((function(t){return t[0]})),prevPages:[0,0],scrollbarState:{scrollbarScrollInProgress:!1},columns:g.map((function(t,e){var r=A[t];return A[t]=(r||0)+1,{key:t+\"__\"+A[t],label:t,specIndex:e,xIndex:M[e],xScale:u,x:void 0,calcdata:void 0,columnWidth:S[e]}}))};return C.columns.forEach((function(t){t.calcdata=C,t.x=u(t)})),C}},{\"../../lib/extend\":493,\"./constants\":1065,\"fast-isnumeric\":190}],1067:[function(t,e,r){\"use strict\";var n=t(\"../../lib/extend\").extendFlat;r.splitToPanels=function(t){var e=[0,0],r=n({},t,{key:\"header\",type:\"header\",page:0,prevPages:e,currentRepaint:[null,null],dragHandle:!0,values:t.calcdata.headerCells.values[t.specIndex],rowBlocks:t.calcdata.headerRowBlocks,calcdata:n({},t.calcdata,{cells:t.calcdata.headerCells})});return[n({},t,{key:\"cells1\",type:\"cells\",page:0,prevPages:e,currentRepaint:[null,null],dragHandle:!1,values:t.calcdata.cells.values[t.specIndex],rowBlocks:t.calcdata.rowBlocks}),n({},t,{key:\"cells2\",type:\"cells\",page:1,prevPages:e,currentRepaint:[null,null],dragHandle:!1,values:t.calcdata.cells.values[t.specIndex],rowBlocks:t.calcdata.rowBlocks}),r]},r.splitToCells=function(t){var e=function(t){var e=t.rowBlocks[t.page],r=e?e.rows[0].rowIndex:0,n=e?r+e.rows.length:0;return[r,n]}(t);return(t.values||[]).slice(e[0],e[1]).map((function(r,n){return{keyWithinBlock:n+(\"string\"==typeof r&&r.match(/[<$&> ]/)?\"_keybuster_\"+Math.random():\"\"),key:e[0]+n,column:t,calcdata:t.calcdata,page:t.page,rowBlocks:t.rowBlocks,value:r}}))}},{\"../../lib/extend\":493}],1068:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./attributes\"),a=t(\"../../plots/domain\").defaults;e.exports=function(t,e,r,o){function s(r,a){return n.coerce(t,e,i,r,a)}a(e,o,s),s(\"columnwidth\"),s(\"header.values\"),s(\"header.format\"),s(\"header.align\"),s(\"header.prefix\"),s(\"header.suffix\"),s(\"header.height\"),s(\"header.line.width\"),s(\"header.line.color\"),s(\"header.fill.color\"),n.coerceFont(s,\"header.font\",n.extendFlat({},o.font)),function(t,e){for(var r=t.columnorder||[],n=t.header.values.length,i=r.slice(0,n),a=i.slice().sort((function(t,e){return t-e})),o=i.map((function(t){return a.indexOf(t)})),s=o.length;s/i),l=!o||s;t.mayHaveMarkup=o&&i.match(/[<&>]/);var c,u=\"string\"==typeof(c=i)&&c.match(n.latexCheck);t.latex=u;var f,h,p=u?\"\":T(t.calcdata.cells.prefix,e,r)||\"\",d=u?\"\":T(t.calcdata.cells.suffix,e,r)||\"\",g=u?null:T(t.calcdata.cells.format,e,r)||null,m=p+(g?a(g)(t.value):t.value)+d;if(t.wrappingNeeded=!t.wrapped&&!l&&!u&&(f=w(m)),t.cellHeightMayIncrease=s||u||t.mayHaveMarkup||(void 0===f?w(m):f),t.needsConvertToTspans=t.mayHaveMarkup||t.wrappingNeeded||t.latex,t.wrappingNeeded){var v=(\" \"===n.wrapSplitCharacter?m.replace(/i&&n.push(a),i+=l}return n}(i,l,s);1===c.length&&(c[0]===i.length-1?c.unshift(c[0]-1):c.push(c[0]+1)),c[0]%2&&c.reverse(),e.each((function(t,e){t.page=c[e],t.scrollY=l})),e.attr(\"transform\",(function(t){var e=D(t.rowBlocks,t.page)-t.scrollY;return u(0,e)})),t&&(C(t,r,e,c,n.prevPages,n,0),C(t,r,e,c,n.prevPages,n,1),x(r,t))}}function L(t,e,r,a){return function(o){var s=o.calcdata?o.calcdata:o,l=e.filter((function(t){return s.key===t.key})),c=r||s.scrollbarState.dragMultiplier,u=s.scrollY;s.scrollY=void 0===a?s.scrollY+c*i.event.dy:a;var f=l.selectAll(\".\"+n.cn.yColumn).selectAll(\".\"+n.cn.columnBlock).filter(A);return E(t,f,l),s.scrollY===u}}function C(t,e,r,n,i,a,o){n[o]!==i[o]&&(clearTimeout(a.currentRepaint[o]),a.currentRepaint[o]=setTimeout((function(){var a=r.filter((function(t,e){return e===o&&n[e]!==i[e]}));b(t,e,a,r),i[o]=n[o]})))}function P(t,e,r,a){return function(){var o=i.select(e.parentNode);o.each((function(t){var e=t.fragments;o.selectAll(\"tspan.line\").each((function(t,r){e[r].width=this.getComputedTextLength()}));var r,i,a=e[e.length-1].width,s=e.slice(0,-1),l=[],c=0,u=t.column.columnWidth-2*n.cellPad;for(t.value=\"\";s.length;)c+(i=(r=s.shift()).width+a)>u&&(t.value+=l.join(n.wrapSpacer)+n.lineBreaker,l=[],c=0),l.push(r.text),c+=i;c&&(t.value+=l.join(n.wrapSpacer)),t.wrapped=!0})),o.selectAll(\"tspan.line\").remove(),_(o.select(\".\"+n.cn.cellText),r,t,a),i.select(e.parentNode.parentNode).call(z)}}function I(t,e,r,a,o){return function(){if(!o.settledY){var s=i.select(e.parentNode),l=B(o),c=o.key-l.firstRowIndex,f=l.rows[c].rowHeight,h=o.cellHeightMayIncrease?e.parentNode.getBoundingClientRect().height+2*n.cellPad:f,p=Math.max(h,f);p-l.rows[c].rowHeight&&(l.rows[c].rowHeight=p,t.selectAll(\".\"+n.cn.columnCell).call(z),E(null,t.filter(A),0),x(r,a,!0)),s.attr(\"transform\",(function(){var t=this.parentNode.getBoundingClientRect(),e=i.select(this.parentNode).select(\".\"+n.cn.cellRect).node().getBoundingClientRect(),r=this.transform.baseVal.consolidate(),a=e.top-t.top+(r?r.matrix.f:n.cellPad);return u(O(o,i.select(this.parentNode).select(\".\"+n.cn.cellTextHolder).node().getBoundingClientRect().width),a)})),o.settledY=!0}}}function O(t,e){switch(t.align){case\"left\":return n.cellPad;case\"right\":return t.column.columnWidth-(e||0)-n.cellPad;case\"center\":return(t.column.columnWidth-(e||0))/2;default:return n.cellPad}}function z(t){t.attr(\"transform\",(function(t){var e=t.rowBlocks[0].auxiliaryBlocks.reduce((function(t,e){return t+R(e,1/0)}),0),r=R(B(t),t.key);return u(0,r+e)})).selectAll(\".\"+n.cn.cellRect).attr(\"height\",(function(t){return(e=B(t),r=t.key,e.rows[r-e.firstRowIndex]).rowHeight;var e,r}))}function D(t,e){for(var r=0,n=e-1;n>=0;n--)r+=F(t[n]);return r}function R(t,e){for(var r=0,n=0;n\",\"<\",\"|\",\"/\",\"\\\\\"],dflt:\">\",editType:\"plot\"},thickness:{valType:\"number\",min:12,editType:\"plot\"},textfont:u({},s.textfont,{}),editType:\"calc\"},text:s.text,textinfo:l.textinfo,texttemplate:i({editType:\"plot\"},{keys:c.eventDataKeys.concat([\"label\",\"value\"])}),hovertext:s.hovertext,hoverinfo:l.hoverinfo,hovertemplate:n({},{keys:c.eventDataKeys}),textfont:s.textfont,insidetextfont:s.insidetextfont,outsidetextfont:u({},s.outsidetextfont,{}),textposition:{valType:\"enumerated\",values:[\"top left\",\"top center\",\"top right\",\"middle left\",\"middle center\",\"middle right\",\"bottom left\",\"bottom center\",\"bottom right\"],dflt:\"top left\",editType:\"plot\"},sort:s.sort,root:l.root,domain:o({name:\"treemap\",trace:!0,editType:\"calc\"})}},{\"../../components/colorscale/attributes\":373,\"../../lib/extend\":493,\"../../plots/domain\":584,\"../../plots/template_attributes\":633,\"../pie/attributes\":900,\"../sunburst/attributes\":1045,\"./constants\":1074}],1072:[function(t,e,r){\"use strict\";var n=t(\"../../plots/plots\");r.name=\"treemap\",r.plot=function(t,e,i,a){n.plotBasePlot(r.name,t,e,i,a)},r.clean=function(t,e,i,a){n.cleanBasePlot(r.name,t,e,i,a)}},{\"../../plots/plots\":619}],1073:[function(t,e,r){\"use strict\";var n=t(\"../sunburst/calc\");r.calc=function(t,e){return n.calc(t,e)},r.crossTraceCalc=function(t){return n._runCrossTraceCalc(\"treemap\",t)}},{\"../sunburst/calc\":1047}],1074:[function(t,e,r){\"use strict\";e.exports={CLICK_TRANSITION_TIME:750,CLICK_TRANSITION_EASING:\"poly\",eventDataKeys:[\"currentPath\",\"root\",\"entry\",\"percentRoot\",\"percentEntry\",\"percentParent\"],gapWithPathbar:1}},{}],1075:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./attributes\"),a=t(\"../../components/color\"),o=t(\"../../plots/domain\").defaults,s=t(\"../bar/defaults\").handleText,l=t(\"../bar/constants\").TEXTPAD,c=t(\"../../components/colorscale\"),u=c.hasColorscale,f=c.handleDefaults;e.exports=function(t,e,r,c){function h(r,a){return n.coerce(t,e,i,r,a)}var p=h(\"labels\"),d=h(\"parents\");if(p&&p.length&&d&&d.length){var g=h(\"values\");g&&g.length?h(\"branchvalues\"):h(\"count\"),h(\"level\"),h(\"maxdepth\"),\"squarify\"===h(\"tiling.packing\")&&h(\"tiling.squarifyratio\"),h(\"tiling.flip\"),h(\"tiling.pad\");var m=h(\"text\");h(\"texttemplate\"),e.texttemplate||h(\"textinfo\",Array.isArray(m)?\"text+label\":\"label\"),h(\"hovertext\"),h(\"hovertemplate\");var v=h(\"pathbar.visible\");s(t,e,c,h,\"auto\",{hasPathbar:v,moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),h(\"textposition\");var y=-1!==e.textposition.indexOf(\"bottom\");h(\"marker.line.width\")&&h(\"marker.line.color\",c.paper_bgcolor);var x=h(\"marker.colors\");(e._hasColorscale=u(t,\"marker\",\"colors\")||(t.marker||{}).coloraxis)?f(t,e,c,h,{prefix:\"marker.\",cLetter:\"c\"}):h(\"marker.depthfade\",!(x||[]).length);var b=2*e.textfont.size;h(\"marker.pad.t\",y?b/4:b),h(\"marker.pad.l\",b/4),h(\"marker.pad.r\",b/4),h(\"marker.pad.b\",y?b:b/4),e._hovered={marker:{line:{width:2,color:a.contrast(c.paper_bgcolor)}}},v&&(h(\"pathbar.thickness\",e.pathbar.textfont.size+2*l),h(\"pathbar.side\"),h(\"pathbar.edgeshape\")),h(\"sort\"),h(\"root.color\"),o(e,c,h),e._length=null}else e.visible=!1}},{\"../../components/color\":366,\"../../components/colorscale\":378,\"../../lib\":503,\"../../plots/domain\":584,\"../bar/constants\":650,\"../bar/defaults\":652,\"./attributes\":1071}],1076:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../sunburst/helpers\"),a=t(\"../bar/uniform_text\").clearMinTextSize,o=t(\"../bar/style\").resizeText,s=t(\"./plot_one\");e.exports=function(t,e,r,l,c){var u,f,h=c.type,p=c.drawDescendants,d=t._fullLayout,g=d[\"_\"+h+\"layer\"],m=!r;(a(h,d),(u=g.selectAll(\"g.trace.\"+h).data(e,(function(t){return t[0].trace.uid}))).enter().append(\"g\").classed(\"trace\",!0).classed(h,!0),u.order(),!d.uniformtext.mode&&i.hasTransition(r))?(l&&(f=l()),n.transition().duration(r.duration).ease(r.easing).each(\"end\",(function(){f&&f()})).each(\"interrupt\",(function(){f&&f()})).each((function(){g.selectAll(\"g.trace\").each((function(e){s(t,e,this,r,p)}))}))):(u.each((function(e){s(t,e,this,r,p)})),d.uniformtext.mode&&o(t,g.selectAll(\".trace\"),h));m&&u.exit().remove()}},{\"../bar/style\":662,\"../bar/uniform_text\":664,\"../sunburst/helpers\":1051,\"./plot_one\":1085,\"@plotly/d3\":58}],1077:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../components/drawing\"),o=t(\"../../lib/svg_text_utils\"),s=t(\"./partition\"),l=t(\"./style\").styleOne,c=t(\"./constants\"),u=t(\"../sunburst/helpers\"),f=t(\"../sunburst/fx\");e.exports=function(t,e,r,h,p){var d=p.barDifY,g=p.width,m=p.height,v=p.viewX,y=p.viewY,x=p.pathSlice,b=p.toMoveInsideSlice,_=p.strTransform,w=p.hasTransition,T=p.handleSlicesExit,k=p.makeUpdateSliceInterpolator,A=p.makeUpdateTextInterpolator,M={},S=t._fullLayout,E=e[0],L=E.trace,C=E.hierarchy,P=g/L._entryDepth,I=u.listPath(r.data,\"id\"),O=s(C.copy(),[g,m],{packing:\"dice\",pad:{inner:0,top:0,left:0,right:0,bottom:0}}).descendants();(O=O.filter((function(t){var e=I.indexOf(t.data.id);return-1!==e&&(t.x0=P*e,t.x1=P*(e+1),t.y0=d,t.y1=d+m,t.onPathbar=!0,!0)}))).reverse(),(h=h.data(O,u.getPtId)).enter().append(\"g\").classed(\"pathbar\",!0),T(h,!0,M,[g,m],x),h.order();var z=h;w&&(z=z.transition().each(\"end\",(function(){var e=n.select(this);u.setSliceCursor(e,t,{hideOnRoot:!1,hideOnLeaves:!1,isTransitioning:!1})}))),z.each((function(s){s._x0=v(s.x0),s._x1=v(s.x1),s._y0=y(s.y0),s._y1=y(s.y1),s._hoverX=v(s.x1-Math.min(g,m)/2),s._hoverY=y(s.y1-m/2);var h=n.select(this),p=i.ensureSingle(h,\"path\",\"surface\",(function(t){t.style(\"pointer-events\",\"all\")}));w?p.transition().attrTween(\"d\",(function(t){var e=k(t,!0,M,[g,m]);return function(t){return x(e(t))}})):p.attr(\"d\",x),h.call(f,r,t,e,{styleOne:l,eventDataKeys:c.eventDataKeys,transitionTime:c.CLICK_TRANSITION_TIME,transitionEasing:c.CLICK_TRANSITION_EASING}).call(u.setSliceCursor,t,{hideOnRoot:!1,hideOnLeaves:!1,isTransitioning:t._transitioning}),p.call(l,s,L,{hovered:!1}),s._text=(u.getPtLabel(s)||\"\").split(\"
\").join(\" \")||\"\";var d=i.ensureSingle(h,\"g\",\"slicetext\"),T=i.ensureSingle(d,\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),E=i.ensureUniformFontSize(t,u.determineTextFont(L,s,S.font,{onPathbar:!0}));T.text(s._text||\" \").classed(\"slicetext\",!0).attr(\"text-anchor\",\"start\").call(a.font,E).call(o.convertToTspans,t),s.textBB=a.bBox(T.node()),s.transform=b(s,{fontSize:E.size,onPathbar:!0}),s.transform.fontSize=E.size,w?T.transition().attrTween(\"transform\",(function(t){var e=A(t,!0,M,[g,m]);return function(t){return _(e(t))}})):T.attr(\"transform\",_(s))}))}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../sunburst/fx\":1050,\"../sunburst/helpers\":1051,\"./constants\":1074,\"./partition\":1083,\"./style\":1086,\"@plotly/d3\":58}],1078:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../components/drawing\"),o=t(\"../../lib/svg_text_utils\"),s=t(\"./partition\"),l=t(\"./style\").styleOne,c=t(\"./constants\"),u=t(\"../sunburst/helpers\"),f=t(\"../sunburst/fx\"),h=t(\"../sunburst/plot\").formatSliceLabel;e.exports=function(t,e,r,p,d){var g=d.width,m=d.height,v=d.viewX,y=d.viewY,x=d.pathSlice,b=d.toMoveInsideSlice,_=d.strTransform,w=d.hasTransition,T=d.handleSlicesExit,k=d.makeUpdateSliceInterpolator,A=d.makeUpdateTextInterpolator,M=d.prevEntry,S=t._fullLayout,E=e[0].trace,L=-1!==E.textposition.indexOf(\"left\"),C=-1!==E.textposition.indexOf(\"right\"),P=-1!==E.textposition.indexOf(\"bottom\"),I=!P&&!E.marker.pad.t||P&&!E.marker.pad.b,O=s(r,[g,m],{packing:E.tiling.packing,squarifyratio:E.tiling.squarifyratio,flipX:E.tiling.flip.indexOf(\"x\")>-1,flipY:E.tiling.flip.indexOf(\"y\")>-1,pad:{inner:E.tiling.pad,top:E.marker.pad.t,left:E.marker.pad.l,right:E.marker.pad.r,bottom:E.marker.pad.b}}).descendants(),z=1/0,D=-1/0;O.forEach((function(t){var e=t.depth;e>=E._maxDepth?(t.x0=t.x1=(t.x0+t.x1)/2,t.y0=t.y1=(t.y0+t.y1)/2):(z=Math.min(z,e),D=Math.max(D,e))})),p=p.data(O,u.getPtId),E._maxVisibleLayers=isFinite(D)?D-z+1:0,p.enter().append(\"g\").classed(\"slice\",!0),T(p,!1,{},[g,m],x),p.order();var R=null;if(w&&M){var F=u.getPtId(M);p.each((function(t){null===R&&u.getPtId(t)===F&&(R={x0:t.x0,x1:t.x1,y0:t.y0,y1:t.y1})}))}var B=function(){return R||{x0:0,x1:g,y0:0,y1:m}},N=p;return w&&(N=N.transition().each(\"end\",(function(){var e=n.select(this);u.setSliceCursor(e,t,{hideOnRoot:!0,hideOnLeaves:!1,isTransitioning:!1})}))),N.each((function(s){var p=u.isHeader(s,E);s._x0=v(s.x0),s._x1=v(s.x1),s._y0=y(s.y0),s._y1=y(s.y1),s._hoverX=v(s.x1-E.marker.pad.r),s._hoverY=y(P?s.y1-E.marker.pad.b/2:s.y0+E.marker.pad.t/2);var d=n.select(this),T=i.ensureSingle(d,\"path\",\"surface\",(function(t){t.style(\"pointer-events\",\"all\")}));w?T.transition().attrTween(\"d\",(function(t){var e=k(t,!1,B(),[g,m]);return function(t){return x(e(t))}})):T.attr(\"d\",x),d.call(f,r,t,e,{styleOne:l,eventDataKeys:c.eventDataKeys,transitionTime:c.CLICK_TRANSITION_TIME,transitionEasing:c.CLICK_TRANSITION_EASING}).call(u.setSliceCursor,t,{isTransitioning:t._transitioning}),T.call(l,s,E,{hovered:!1}),s.x0===s.x1||s.y0===s.y1?s._text=\"\":s._text=p?I?\"\":u.getPtLabel(s)||\"\":h(s,r,E,e,S)||\"\";var M=i.ensureSingle(d,\"g\",\"slicetext\"),O=i.ensureSingle(M,\"text\",\"\",(function(t){t.attr(\"data-notex\",1)})),z=i.ensureUniformFontSize(t,u.determineTextFont(E,s,S.font));O.text(s._text||\" \").classed(\"slicetext\",!0).attr(\"text-anchor\",C?\"end\":L||p?\"start\":\"middle\").call(a.font,z).call(o.convertToTspans,t),s.textBB=a.bBox(O.node()),s.transform=b(s,{fontSize:z.size,isHeader:p}),s.transform.fontSize=z.size,w?O.transition().attrTween(\"transform\",(function(t){var e=A(t,!1,B(),[g,m]);return function(t){return _(e(t))}})):O.attr(\"transform\",_(s))})),R}},{\"../../components/drawing\":388,\"../../lib\":503,\"../../lib/svg_text_utils\":529,\"../sunburst/fx\":1050,\"../sunburst/helpers\":1051,\"../sunburst/plot\":1055,\"./constants\":1074,\"./partition\":1083,\"./style\":1086,\"@plotly/d3\":58}],1079:[function(t,e,r){\"use strict\";e.exports=function t(e,r,n){var i;n.swapXY&&(i=e.x0,e.x0=e.y0,e.y0=i,i=e.x1,e.x1=e.y1,e.y1=i),n.flipX&&(i=e.x0,e.x0=r[0]-e.x1,e.x1=r[0]-i),n.flipY&&(i=e.y0,e.y0=r[1]-e.y1,e.y1=r[1]-i);var a=e.children;if(a)for(var o=0;o-1?C+O:-(I+O):0,D={x0:P,x1:P,y0:z,y1:z+I},R=function(t,e,r){var n=v.tiling.pad,i=function(t){return t-n<=e.x0},a=function(t){return t+n>=e.x1},o=function(t){return t-n<=e.y0},s=function(t){return t+n>=e.y1};return t.x0===e.x0&&t.x1===e.x1&&t.y0===e.y0&&t.y1===e.y1?{x0:t.x0,x1:t.x1,y0:t.y0,y1:t.y1}:{x0:i(t.x0-n)?0:a(t.x0-n)?r[0]:t.x0,x1:i(t.x1+n)?0:a(t.x1+n)?r[0]:t.x1,y0:o(t.y0-n)?0:s(t.y0-n)?r[1]:t.y0,y1:o(t.y1+n)?0:s(t.y1+n)?r[1]:t.y1}},F=null,B={},N={},j=null,U=function(t,e){return e?B[h(t)]:N[h(t)]},V=function(t,e,r,n){if(e)return B[h(x)]||D;var i=N[v.level]||r;return function(t){return t.data.depth-b.data.depth=(n-=(y?m:m.r)-s)){var x=(r+n)/2;r=x,n=x}var b;f?i<(b=a-(y?m:m.b))&&b\"===tt?(l.x-=a,c.x-=a,u.x-=a,f.x-=a):\"/\"===tt?(u.x-=a,f.x-=a,o.x-=a/2,s.x-=a/2):\"\\\\\"===tt?(l.x-=a,c.x-=a,o.x-=a/2,s.x-=a/2):\"<\"===tt&&(o.x-=a,s.x-=a),$(l),$(f),$(o),$(c),$(u),$(s),\"M\"+K(l.x,l.y)+\"L\"+K(c.x,c.y)+\"L\"+K(s.x,s.y)+\"L\"+K(u.x,u.y)+\"L\"+K(f.x,f.y)+\"L\"+K(o.x,o.y)+\"Z\"},toMoveInsideSlice:et,makeUpdateSliceInterpolator:nt,makeUpdateTextInterpolator:it,handleSlicesExit:at,hasTransition:A,strTransform:ot}):w.remove()}},{\"../../lib\":503,\"../bar/constants\":650,\"../bar/plot\":659,\"../bar/uniform_text\":664,\"../sunburst/helpers\":1051,\"./constants\":1074,\"./draw_ancestors\":1077,\"@plotly/d3\":58,\"d3-interpolate\":116}],1086:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../components/color\"),a=t(\"../../lib\"),o=t(\"../sunburst/helpers\"),s=t(\"../bar/uniform_text\").resizeText;function l(t,e,r,n){var s,l,c=(n||{}).hovered,u=e.data.data,f=u.i,h=u.color,p=o.isHierarchyRoot(e),d=1;if(c)s=r._hovered.marker.line.color,l=r._hovered.marker.line.width;else if(p&&h===r.root.color)d=100,s=\"rgba(0,0,0,0)\",l=0;else if(s=a.castOption(r,f,\"marker.line.color\")||i.defaultLine,l=a.castOption(r,f,\"marker.line.width\")||0,!r._hasColorscale&&!e.onPathbar){var g=r.marker.depthfade;if(g){var m,v=i.combine(i.addOpacity(r._backgroundColor,.75),h);if(!0===g){var y=o.getMaxDepth(r);m=isFinite(y)?o.isLeaf(e)?0:r._maxVisibleLayers-(e.data.depth-r._entryDepth):e.data.height+1}else m=e.data.depth-r._entryDepth,r._atRootLevel||m++;if(m>0)for(var x=0;x0){var x,b,_,w,T,k=t.xa,A=t.ya;\"h\"===p.orientation?(T=e,x=\"y\",_=A,b=\"x\",w=k):(T=r,x=\"x\",_=k,b=\"y\",w=A);var M=h[t.index];if(T>=M.span[0]&&T<=M.span[1]){var S=n.extendFlat({},t),E=w.c2p(T,!0),L=o.getKdeValue(M,p,T),C=o.getPositionOnKdePath(M,p,E),P=_._offset,I=_._length;S[x+\"0\"]=C[0],S[x+\"1\"]=C[1],S[b+\"0\"]=S[b+\"1\"]=E,S[b+\"Label\"]=b+\": \"+i.hoverLabelText(w,T,p[b+\"hoverformat\"])+\", \"+h[0].t.labels.kde+\" \"+L.toFixed(3),S.spikeDistance=y[0].spikeDistance;var O=x+\"Spike\";S[O]=y[0][O],y[0].spikeDistance=void 0,y[0][O]=void 0,S.hovertemplate=!1,v.push(S),(u={stroke:t.color})[x+\"1\"]=n.constrain(P+C[0],P,P+I),u[x+\"2\"]=n.constrain(P+C[1],P,P+I),u[b+\"1\"]=u[b+\"2\"]=w._offset+E}}g&&(v=v.concat(y))}-1!==d.indexOf(\"points\")&&(c=a.hoverOnPoints(t,e,r));var z=f.selectAll(\".violinline-\"+p.uid).data(u?[0]:[]);return z.enter().append(\"line\").classed(\"violinline-\"+p.uid,!0).attr(\"stroke-width\",1.5),z.exit().remove(),z.attr(u),\"closest\"===s?c?[c]:v:c?(v.push(c),v):v}},{\"../../lib\":503,\"../../plots/cartesian/axes\":554,\"../box/hover\":678,\"./helpers\":1091}],1093:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\"),crossTraceDefaults:t(\"../box/defaults\").crossTraceDefaults,supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\"),crossTraceCalc:t(\"./cross_trace_calc\"),plot:t(\"./plot\"),style:t(\"./style\"),styleOnSelect:t(\"../scatter/style\").styleOnSelect,hoverPoints:t(\"./hover\"),selectPoints:t(\"../box/select\"),moduleType:\"trace\",name:\"violin\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"cartesian\",\"svg\",\"symbols\",\"oriented\",\"box-violin\",\"showLegend\",\"violinLayout\",\"zoomScale\"],meta:{}}},{\"../../plots/cartesian\":568,\"../box/defaults\":676,\"../box/select\":683,\"../scatter/style\":950,\"./attributes\":1087,\"./calc\":1088,\"./cross_trace_calc\":1089,\"./defaults\":1090,\"./hover\":1092,\"./layout_attributes\":1094,\"./layout_defaults\":1095,\"./plot\":1096,\"./style\":1097}],1094:[function(t,e,r){\"use strict\";var n=t(\"../box/layout_attributes\"),i=t(\"../../lib\").extendFlat;e.exports={violinmode:i({},n.boxmode,{}),violingap:i({},n.boxgap,{}),violingroupgap:i({},n.boxgroupgap,{})}},{\"../../lib\":503,\"../box/layout_attributes\":680}],1095:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\"),a=t(\"../box/layout_defaults\");e.exports=function(t,e,r){a._supply(t,e,r,(function(r,a){return n.coerce(t,e,i,r,a)}),\"violin\")}},{\"../../lib\":503,\"../box/layout_defaults\":681,\"./layout_attributes\":1094}],1096:[function(t,e,r){\"use strict\";var n=t(\"@plotly/d3\"),i=t(\"../../lib\"),a=t(\"../../components/drawing\"),o=t(\"../box/plot\"),s=t(\"../scatter/line_points\"),l=t(\"./helpers\");e.exports=function(t,e,r,c){var u=t._fullLayout,f=e.xaxis,h=e.yaxis;function p(t){var e=s(t,{xaxis:f,yaxis:h,connectGaps:!0,baseTolerance:.75,shape:\"spline\",simplify:!0,linearized:!0});return a.smoothopen(e[0],1)}i.makeTraceGroups(c,r,\"trace violins\").each((function(t){var r=n.select(this),a=t[0],s=a.t,c=a.trace;if(!0!==c.visible||s.empty)r.remove();else{var d=s.bPos,g=s.bdPos,m=e[s.valLetter+\"axis\"],v=e[s.posLetter+\"axis\"],y=\"both\"===c.side,x=y||\"positive\"===c.side,b=y||\"negative\"===c.side,_=r.selectAll(\"path.violin\").data(i.identity);_.enter().append(\"path\").style(\"vector-effect\",\"non-scaling-stroke\").attr(\"class\",\"violin\"),_.exit().remove(),_.each((function(t){var e,r,i,a,o,l,f,h,_=n.select(this),w=t.density,T=w.length,k=v.c2l(t.pos+d,!0),A=v.l2p(k);if(c.width)e=s.maxKDE/g;else{var M=u._violinScaleGroupStats[c.scalegroup];e=\"count\"===c.scalemode?M.maxKDE/g*(M.maxCount/t.pts.length):M.maxKDE/g}if(x){for(f=new Array(T),o=0;o\")),u.color=function(t,e){var r=t[e.dir].marker,n=r.color,a=r.line.color,o=r.line.width;if(i(n))return n;if(i(a)&&o)return a}(h,m),[u]}function k(t){return n(g,t,h[d+\"hoverformat\"])}}},{\"../../components/color\":366,\"../../constants/delta.js\":473,\"../../plots/cartesian/axes\":554,\"../bar/hover\":655}],1109:[function(t,e,r){\"use strict\";e.exports={attributes:t(\"./attributes\"),layoutAttributes:t(\"./layout_attributes\"),supplyDefaults:t(\"./defaults\").supplyDefaults,crossTraceDefaults:t(\"./defaults\").crossTraceDefaults,supplyLayoutDefaults:t(\"./layout_defaults\"),calc:t(\"./calc\"),crossTraceCalc:t(\"./cross_trace_calc\"),plot:t(\"./plot\"),style:t(\"./style\").style,hoverPoints:t(\"./hover\"),eventData:t(\"./event_data\"),selectPoints:t(\"../bar/select\"),moduleType:\"trace\",name:\"waterfall\",basePlotModule:t(\"../../plots/cartesian\"),categories:[\"bar-like\",\"cartesian\",\"svg\",\"oriented\",\"showLegend\",\"zoomScale\"],meta:{}}},{\"../../plots/cartesian\":568,\"../bar/select\":660,\"./attributes\":1102,\"./calc\":1103,\"./cross_trace_calc\":1105,\"./defaults\":1106,\"./event_data\":1107,\"./hover\":1108,\"./layout_attributes\":1110,\"./layout_defaults\":1111,\"./plot\":1112,\"./style\":1113}],1110:[function(t,e,r){\"use strict\";e.exports={waterfallmode:{valType:\"enumerated\",values:[\"group\",\"overlay\"],dflt:\"group\",editType:\"calc\"},waterfallgap:{valType:\"number\",min:0,max:1,editType:\"calc\"},waterfallgroupgap:{valType:\"number\",min:0,max:1,dflt:0,editType:\"calc\"}}},{}],1111:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e,r){var a=!1;function o(r,a){return n.coerce(t,e,i,r,a)}for(var s=0;s0&&(m+=h?\"M\"+f[0]+\",\"+d[1]+\"V\"+d[0]:\"M\"+f[1]+\",\"+d[0]+\"H\"+f[0]),\"between\"!==p&&(r.isSum||s path\").each((function(t){if(!t.isBlank){var e=s[t.dir].marker;n.select(this).call(a.fill,e.color).call(a.stroke,e.line.color).call(i.dashLine,e.line.dash,e.line.width).style(\"opacity\",s.selectedpoints&&!t.selected?o:1)}})),c(r,s,t),r.selectAll(\".lines\").each((function(){var t=s.connector.line;i.lineGroupStyle(n.select(this).selectAll(\"path\"),t.width,t.color,t.dash)}))}))}}},{\"../../components/color\":366,\"../../components/drawing\":388,\"../../constants/interactions\":478,\"../bar/style\":662,\"../bar/uniform_text\":664,\"@plotly/d3\":58}],1114:[function(t,e,r){\"use strict\";var n=t(\"../plots/cartesian/axes\"),i=t(\"../lib\"),a=t(\"../plot_api/plot_schema\"),o=t(\"./helpers\").pointsAccessorFunction,s=t(\"../constants/numerical\").BADNUM;r.moduleType=\"transform\",r.name=\"aggregate\";var l=r.attributes={enabled:{valType:\"boolean\",dflt:!0,editType:\"calc\"},groups:{valType:\"string\",strict:!0,noBlank:!0,arrayOk:!0,dflt:\"x\",editType:\"calc\"},aggregations:{_isLinkedToArray:\"aggregation\",target:{valType:\"string\",editType:\"calc\"},func:{valType:\"enumerated\",values:[\"count\",\"sum\",\"avg\",\"median\",\"mode\",\"rms\",\"stddev\",\"min\",\"max\",\"first\",\"last\",\"change\",\"range\"],dflt:\"first\",editType:\"calc\"},funcmode:{valType:\"enumerated\",values:[\"sample\",\"population\"],dflt:\"sample\",editType:\"calc\"},enabled:{valType:\"boolean\",dflt:!0,editType:\"calc\"},editType:\"calc\"},editType:\"calc\"},c=l.aggregations;function u(t,e,r,a){if(a.enabled){for(var o=a.target,l=i.nestedProperty(e,o),c=l.get(),u=function(t,e){var r=t.func,n=e.d2c,a=e.c2d;switch(r){case\"count\":return f;case\"first\":return h;case\"last\":return p;case\"sum\":return function(t,e){for(var r=0,i=0;ii&&(i=u,o=c)}}return i?a(o):s};case\"rms\":return function(t,e){for(var r=0,i=0,o=0;o\":return function(t){return h(t)>s};case\">=\":return function(t){return h(t)>=s};case\"[]\":return function(t){var e=h(t);return e>=s[0]&&e<=s[1]};case\"()\":return function(t){var e=h(t);return e>s[0]&&e=s[0]&&es[0]&&e<=s[1]};case\"][\":return function(t){var e=h(t);return e<=s[0]||e>=s[1]};case\")(\":return function(t){var e=h(t);return es[1]};case\"](\":return function(t){var e=h(t);return e<=s[0]||e>s[1]};case\")[\":return function(t){var e=h(t);return e=s[1]};case\"{}\":return function(t){return-1!==s.indexOf(h(t))};case\"}{\":return function(t){return-1===s.indexOf(h(t))}}}(r,a.getDataToCoordFunc(t,e,s,i),h),x={},b={},_=0;d?(m=function(t){x[t.astr]=n.extendDeep([],t.get()),t.set(new Array(f))},v=function(t,e){var r=x[t.astr][e];t.get()[e]=r}):(m=function(t){x[t.astr]=n.extendDeep([],t.get()),t.set([])},v=function(t,e){var r=x[t.astr][e];t.get().push(r)}),k(m);for(var w=o(e.transforms,r),T=0;T1?\"%{group} (%{trace})\":\"%{group}\");var l=t.styles,c=o.styles=[];if(l)for(a=0;a0?o-4:o;for(r=0;r>16&255,l[u++]=e>>8&255,l[u++]=255&e;2===s&&(e=i[t.charCodeAt(r)]<<2|i[t.charCodeAt(r+1)]>>4,l[u++]=255&e);1===s&&(e=i[t.charCodeAt(r)]<<10|i[t.charCodeAt(r+1)]<<4|i[t.charCodeAt(r+2)]>>2,l[u++]=e>>8&255,l[u++]=255&e);return l},r.fromByteArray=function(t){for(var e,r=t.length,i=r%3,a=[],o=0,s=r-i;os?s:o+16383));1===i?(e=t[r-1],a.push(n[e>>2]+n[e<<4&63]+\"==\")):2===i&&(e=(t[r-2]<<8)+t[r-1],a.push(n[e>>10]+n[e>>4&63]+n[e<<2&63]+\"=\"));return a.join(\"\")};for(var n=[],i=[],a=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",s=0,l=o.length;s0)throw new Error(\"Invalid string. Length must be a multiple of 4\");var r=t.indexOf(\"=\");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function u(t,e,r){for(var i,a,o=[],s=e;s>18&63]+n[a>>12&63]+n[a>>6&63]+n[63&a]);return o.join(\"\")}i[\"-\".charCodeAt(0)]=62,i[\"_\".charCodeAt(0)]=63},{}],2:[function(t,e,r){},{}],3:[function(t,e,r){(function(e){(function(){\n", "/*!\n", " * The buffer module from node.js, for the browser.\n", " *\n", @@ -156,7 +156,7 @@ " * Copyright (c) 2014-2015, Jon Schlinkert.\n", " * Licensed under the MIT License.\n", " */\n", - "\"use strict\";var n,i=\"\";e.exports=function(t,e){if(\"string\"!=typeof t)throw new TypeError(\"expected a string\");if(1===e)return t;if(2===e)return t+t;var r=t.length*e;if(n!==t||void 0===n)n=t,i=\"\";else if(i.length>=r)return i.substr(0,r);for(;r>i.length&&e>1;)1&e&&(i+=t),e>>=1,t+=t;return i=(i+=t).substr(0,r)}},{}],278:[function(t,e,r){(function(t){(function(){e.exports=t.performance&&t.performance.now?function(){return performance.now()}:Date.now||function(){return+new Date}}).call(this)}).call(this,void 0!==n?n:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],279:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e=t.length,r=t[t.length-1],n=e,i=e-2;i>=0;--i){var a=r,o=t[i];(l=o-((r=a+o)-a))&&(t[--n]=r,r=l)}var s=0;for(i=n;i0){if(a<=0)return o;n=i+a}else{if(!(i<0))return o;if(a>=0)return o;n=-(i+a)}var s=33306690738754716e-32*n;return o>=s||o<=-s?o:f(t,e,r)},function(t,e,r,n){var i=t[0]-n[0],a=e[0]-n[0],o=r[0]-n[0],s=t[1]-n[1],l=e[1]-n[1],c=r[1]-n[1],u=t[2]-n[2],f=e[2]-n[2],p=r[2]-n[2],d=a*c,g=o*l,m=o*s,v=i*c,y=i*l,x=a*s,b=u*(d-g)+f*(m-v)+p*(y-x),_=7771561172376103e-31*((Math.abs(d)+Math.abs(g))*Math.abs(u)+(Math.abs(m)+Math.abs(v))*Math.abs(f)+(Math.abs(y)+Math.abs(x))*Math.abs(p));return b>_||-b>_?b:h(t,e,r,n)}];function d(t){var e=p[t.length];return e||(e=p[t.length]=u(t.length)),e.apply(void 0,t)}function g(t,e,r,n,i,a,o){return function(e,r,s,l,c){switch(arguments.length){case 0:case 1:return 0;case 2:return n(e,r);case 3:return i(e,r,s);case 4:return a(e,r,s,l);case 5:return o(e,r,s,l,c)}for(var u=new Array(arguments.length),f=0;f0&&o>0||a<0&&o<0)return!1;var s=n(r,t,e),l=n(i,t,e);if(s>0&&l>0||s<0&&l<0)return!1;if(0===a&&0===o&&0===s&&0===l)return function(t,e,r,n){for(var i=0;i<2;++i){var a=t[i],o=e[i],s=Math.min(a,o),l=Math.max(a,o),c=r[i],u=n[i],f=Math.min(c,u);if(Math.max(c,u)=n?(i=f,(l+=1)=n?(i=f,(l+=1)>1,c=e[2*l+1];if(c===a)return l;a>1,c=e[2*l+1];if(c===a)return l;a>1,c=e[2*l+1];if(c===a)return l;a>1,s=a(t[o],e);s<=0?(0===s&&(i=o),r=o+1):s>0&&(n=o-1)}return i}function u(t,e){for(var r=new Array(t.length),i=0,o=r.length;i=t.length||0!==a(t[m],s)););}return r}function f(t,e){if(e<0)return[];for(var r=[],i=(1<>>u&1&&c.push(i[u]);e.push(c)}return s(e)},r.skeleton=f,r.boundary=function(t){for(var e=[],r=0,n=t.length;r>1:(t>>1)-1}function x(t){for(var e=v(t);;){var r=e,n=2*t+1,i=2*(t+1),a=t;if(n0;){var r=y(t);if(r>=0)if(e0){var t=k[0];return m(0,M-1),M-=1,x(0),t}return-1}function w(t,e){var r=k[t];return c[r]===e?t:(c[r]=-1/0,b(t),_(),c[r]=e,b((M+=1)-1))}function T(t){if(!u[t]){u[t]=!0;var e=s[t],r=l[t];s[r]>=0&&(s[r]=e),l[e]>=0&&(l[e]=r),A[e]>=0&&w(A[e],g(e)),A[r]>=0&&w(A[r],g(r))}}var k=[],A=new Array(a);for(f=0;f>1;f>=0;--f)x(f);for(;;){var S=_();if(S<0||c[S]>r)break;T(S)}var E=[];for(f=0;f=0&&r>=0&&e!==r){var n=A[e],i=A[r];n!==i&&C.push([n,i])}})),i.unique(i.normalize(C)),{positions:E,edges:C}};var n=t(\"robust-orientation\"),i=t(\"simplicial-complex\")},{\"robust-orientation\":284,\"simplicial-complex\":295}],298:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r,a,o,s;if(e[0][0]e[1][0]))return i(e,t);r=e[1],a=e[0]}if(t[0][0]t[1][0]))return-i(t,e);o=t[1],s=t[0]}var l=n(r,a,s),c=n(r,a,o);if(l<0){if(c<=0)return l}else if(l>0){if(c>=0)return l}else if(c)return c;if(l=n(s,o,a),c=n(s,o,r),l<0){if(c<=0)return l}else if(l>0){if(c>=0)return l}else if(c)return c;return a[0]-s[0]};var n=t(\"robust-orientation\");function i(t,e){var r,i,a,o;if(e[0][0]e[1][0])){var s=Math.min(t[0][1],t[1][1]),l=Math.max(t[0][1],t[1][1]),c=Math.min(e[0][1],e[1][1]),u=Math.max(e[0][1],e[1][1]);return lu?s-u:l-u}r=e[1],i=e[0]}t[0][1]0)if(e[0]!==o[1][0])r=t,t=t.right;else{if(l=c(t.right,e))return l;t=t.left}else{if(e[0]!==o[1][0])return t;var l;if(l=c(t.right,e))return l;t=t.left}}return r}function u(t,e,r,n){this.y=t,this.index=e,this.start=r,this.closed=n}function f(t,e,r,n){this.x=t,this.segment=e,this.create=r,this.index=n}s.prototype.castUp=function(t){var e=n.le(this.coordinates,t[0]);if(e<0)return-1;this.slabs[e];var r=c(this.slabs[e],t),i=-1;if(r&&(i=r.value),this.coordinates[e]===t[0]){var s=null;if(r&&(s=r.key),e>0){var u=c(this.slabs[e-1],t);u&&(s?o(u.key,s)>0&&(s=u.key,i=u.value):(i=u.value,s=u.key))}var f=this.horizontal[e];if(f.length>0){var h=n.ge(f,t[1],l);if(h=f.length)return i;p=f[h]}}if(p.start)if(s){var d=a(s[0],s[1],[t[0],p.y]);s[0][0]>s[1][0]&&(d=-d),d>0&&(i=p.index)}else i=p.index;else p.y!==t[1]&&(i=p.index)}}}return i}},{\"./lib/order-segments\":298,\"binary-search-bounds\":31,\"functional-red-black-tree\":69,\"robust-orientation\":284}],300:[function(t,e,r){\"use strict\";var n=t(\"robust-dot-product\"),i=t(\"robust-sum\");function a(t,e){var r=i(n(t,e),[e[e.length-1]]);return r[r.length-1]}function o(t,e,r,n){var i=-e/(n-e);i<0?i=0:i>1&&(i=1);for(var a=1-i,o=t.length,s=new Array(o),l=0;l0||i>0&&u<0){var f=o(s,u,l,i);r.push(f),n.push(f.slice())}u<0?n.push(l.slice()):u>0?r.push(l.slice()):(r.push(l.slice()),n.push(l.slice())),i=u}return{positive:r,negative:n}},e.exports.positive=function(t,e){for(var r=[],n=a(t[t.length-1],e),i=t[t.length-1],s=t[0],l=0;l0||n>0&&c<0)&&r.push(o(i,c,s,n)),c>=0&&r.push(s.slice()),n=c}return r},e.exports.negative=function(t,e){for(var r=[],n=a(t[t.length-1],e),i=t[t.length-1],s=t[0],l=0;l0||n>0&&c<0)&&r.push(o(i,c,s,n)),c<=0&&r.push(s.slice()),n=c}return r}},{\"robust-dot-product\":281,\"robust-sum\":289}],301:[function(t,e,r){!function(){\"use strict\";var t={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\\x25]+/,modulo:/^\\x25{2}/,placeholder:/^\\x25(?:([1-9]\\d*)\\$|\\(([^)]+)\\))?(\\+)?(0|'[^$])?(-)?(\\d+)?(?:\\.(\\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\\d]*)/i,key_access:/^\\.([a-z_][a-z_\\d]*)/i,index_access:/^\\[(\\d+)\\]/,sign:/^[+-]/};function e(t){return i(o(t),arguments)}function n(t,r){return e.apply(null,[t].concat(r||[]))}function i(r,n){var i,a,o,s,l,c,u,f,h,p=1,d=r.length,g=\"\";for(a=0;a=0),s.type){case\"b\":i=parseInt(i,10).toString(2);break;case\"c\":i=String.fromCharCode(parseInt(i,10));break;case\"d\":case\"i\":i=parseInt(i,10);break;case\"j\":i=JSON.stringify(i,null,s.width?parseInt(s.width):0);break;case\"e\":i=s.precision?parseFloat(i).toExponential(s.precision):parseFloat(i).toExponential();break;case\"f\":i=s.precision?parseFloat(i).toFixed(s.precision):parseFloat(i);break;case\"g\":i=s.precision?String(Number(i.toPrecision(s.precision))):parseFloat(i);break;case\"o\":i=(parseInt(i,10)>>>0).toString(8);break;case\"s\":i=String(i),i=s.precision?i.substring(0,s.precision):i;break;case\"t\":i=String(!!i),i=s.precision?i.substring(0,s.precision):i;break;case\"T\":i=Object.prototype.toString.call(i).slice(8,-1).toLowerCase(),i=s.precision?i.substring(0,s.precision):i;break;case\"u\":i=parseInt(i,10)>>>0;break;case\"v\":i=i.valueOf(),i=s.precision?i.substring(0,s.precision):i;break;case\"x\":i=(parseInt(i,10)>>>0).toString(16);break;case\"X\":i=(parseInt(i,10)>>>0).toString(16).toUpperCase()}t.json.test(s.type)?g+=i:(!t.number.test(s.type)||f&&!s.sign?h=\"\":(h=f?\"+\":\"-\",i=i.toString().replace(t.sign,\"\")),c=s.pad_char?\"0\"===s.pad_char?\"0\":s.pad_char.charAt(1):\" \",u=s.width-(h+i).length,l=s.width&&u>0?c.repeat(u):\"\",g+=s.align?h+i+l:\"0\"===c?h+l+i:l+h+i)}return g}var a=Object.create(null);function o(e){if(a[e])return a[e];for(var r,n=e,i=[],o=0;n;){if(null!==(r=t.text.exec(n)))i.push(r[0]);else if(null!==(r=t.modulo.exec(n)))i.push(\"%\");else{if(null===(r=t.placeholder.exec(n)))throw new SyntaxError(\"[sprintf] unexpected placeholder\");if(r[2]){o|=1;var s=[],l=r[2],c=[];if(null===(c=t.key.exec(l)))throw new SyntaxError(\"[sprintf] failed to parse named argument key\");for(s.push(c[1]);\"\"!==(l=l.substring(c[0].length));)if(null!==(c=t.key_access.exec(l)))s.push(c[1]);else{if(null===(c=t.index_access.exec(l)))throw new SyntaxError(\"[sprintf] failed to parse named argument key\");s.push(c[1])}r[2]=s}else o|=2;if(3===o)throw new Error(\"[sprintf] mixing positional and named placeholders is not (yet) supported\");i.push({placeholder:r[0],param_no:r[1],keys:r[2],sign:r[3],pad_char:r[4],align:r[5],width:r[6],precision:r[7],type:r[8]})}n=n.substring(r[0].length)}return a[e]=i}void 0!==r&&(r.sprintf=e,r.vsprintf=n),\"undefined\"!=typeof window&&(window.sprintf=e,window.vsprintf=n)}()},{}],302:[function(t,e,r){\"use strict\";e.exports=function(t,e){if(t.dimension<=0)return{positions:[],cells:[]};if(1===t.dimension)return function(t,e){for(var r=i(t,e),n=r.length,a=new Array(n),o=new Array(n),s=0;sn|0},vertex:function(t,e,r,n,i,a,o,s,l,c,u,f,h){var p=(o<<0)+(s<<1)+(l<<2)+(c<<3)|0;if(0!==p&&15!==p)switch(p){case 0:u.push([t-.5,e-.5]);break;case 1:u.push([t-.25-.25*(n+r-2*h)/(r-n),e-.25-.25*(i+r-2*h)/(r-i)]);break;case 2:u.push([t-.75-.25*(-n-r+2*h)/(n-r),e-.25-.25*(a+n-2*h)/(n-a)]);break;case 3:u.push([t-.5,e-.5-.5*(i+r+a+n-4*h)/(r-i+n-a)]);break;case 4:u.push([t-.25-.25*(a+i-2*h)/(i-a),e-.75-.25*(-i-r+2*h)/(i-r)]);break;case 5:u.push([t-.5-.5*(n+r+a+i-4*h)/(r-n+i-a),e-.5]);break;case 6:u.push([t-.5-.25*(-n-r+a+i)/(n-r+i-a),e-.5-.25*(-i-r+a+n)/(i-r+n-a)]);break;case 7:u.push([t-.75-.25*(a+i-2*h)/(i-a),e-.75-.25*(a+n-2*h)/(n-a)]);break;case 8:u.push([t-.75-.25*(-a-i+2*h)/(a-i),e-.75-.25*(-a-n+2*h)/(a-n)]);break;case 9:u.push([t-.5-.25*(n+r+-a-i)/(r-n+a-i),e-.5-.25*(i+r+-a-n)/(r-i+a-n)]);break;case 10:u.push([t-.5-.5*(-n-r-a-i+4*h)/(n-r+a-i),e-.5]);break;case 11:u.push([t-.25-.25*(-a-i+2*h)/(a-i),e-.75-.25*(i+r-2*h)/(r-i)]);break;case 12:u.push([t-.5,e-.5-.5*(-i-r-a-n+4*h)/(i-r+a-n)]);break;case 13:u.push([t-.75-.25*(n+r-2*h)/(r-n),e-.25-.25*(-a-n+2*h)/(a-n)]);break;case 14:u.push([t-.25-.25*(-n-r+2*h)/(n-r),e-.25-.25*(-i-r+2*h)/(i-r)]);break;case 15:u.push([t-.5,e-.5])}},cell:function(t,e,r,n,i,a,o,s,l){i?s.push([t,e]):s.push([e,t])}});return function(t,e){var r=[],i=[];return n(t,r,i,e),{positions:r,cells:i}}}};var o={}},{\"ndarray-extract-contour\":251,\"zero-crossings\":318}],303:[function(t,e,r){(function(r){(function(){\"use strict\";e.exports=function t(e,r,i){i=i||{};var o=a[e];o||(o=a[e]={\" \":{data:new Float32Array(0),shape:.2}});var s=o[r];if(!s)if(r.length<=1||!/\\d/.test(r))s=o[r]=function(t){for(var e=t.cells,r=t.positions,n=new Float32Array(6*e.length),i=0,a=0,o=0;o0&&(f+=.02);var p=new Float32Array(u),d=0,g=-.5*f;for(h=0;hMath.max(r,n)?i[2]=1:r>Math.max(e,n)?i[0]=1:i[1]=1;for(var a=0,o=0,l=0;l<3;++l)a+=t[l]*t[l],o+=i[l]*t[l];for(l=0;l<3;++l)i[l]-=o/a*t[l];return s(i,i),i}function h(t,e,r,i,a,o,s,l){this.center=n(r),this.up=n(i),this.right=n(a),this.radius=n([o]),this.angle=n([s,l]),this.angle.bounds=[[-1/0,-Math.PI/2],[1/0,Math.PI/2]],this.setDistanceLimits(t,e),this.computedCenter=this.center.curve(0),this.computedUp=this.up.curve(0),this.computedRight=this.right.curve(0),this.computedRadius=this.radius.curve(0),this.computedAngle=this.angle.curve(0),this.computedToward=[0,0,0],this.computedEye=[0,0,0],this.computedMatrix=new Array(16);for(var c=0;c<16;++c)this.computedMatrix[c]=.5;this.recalcMatrix(0)}var p=h.prototype;p.setDistanceLimits=function(t,e){t=t>0?Math.log(t):-1/0,e=e>0?Math.log(e):1/0,e=Math.max(e,t),this.radius.bounds[0][0]=t,this.radius.bounds[1][0]=e},p.getDistanceLimits=function(t){var e=this.radius.bounds[0];return t?(t[0]=Math.exp(e[0][0]),t[1]=Math.exp(e[1][0]),t):[Math.exp(e[0][0]),Math.exp(e[1][0])]},p.recalcMatrix=function(t){this.center.curve(t),this.up.curve(t),this.right.curve(t),this.radius.curve(t),this.angle.curve(t);for(var e=this.computedUp,r=this.computedRight,n=0,i=0,a=0;a<3;++a)i+=e[a]*r[a],n+=e[a]*e[a];var l=Math.sqrt(n),u=0;for(a=0;a<3;++a)r[a]-=e[a]*i/n,u+=r[a]*r[a],e[a]/=l;var f=Math.sqrt(u);for(a=0;a<3;++a)r[a]/=f;var h=this.computedToward;o(h,e,r),s(h,h);var p=Math.exp(this.computedRadius[0]),d=this.computedAngle[0],g=this.computedAngle[1],m=Math.cos(d),v=Math.sin(d),y=Math.cos(g),x=Math.sin(g),b=this.computedCenter,_=m*y,w=v*y,T=x,k=-m*x,A=-v*x,M=y,S=this.computedEye,E=this.computedMatrix;for(a=0;a<3;++a){var L=_*r[a]+w*h[a]+T*e[a];E[4*a+1]=k*r[a]+A*h[a]+M*e[a],E[4*a+2]=L,E[4*a+3]=0}var C=E[1],P=E[5],I=E[9],O=E[2],z=E[6],D=E[10],R=P*D-I*z,F=I*O-C*D,B=C*z-P*O,N=c(R,F,B);R/=N,F/=N,B/=N,E[0]=R,E[4]=F,E[8]=B;for(a=0;a<3;++a)S[a]=b[a]+E[2+4*a]*p;for(a=0;a<3;++a){u=0;for(var j=0;j<3;++j)u+=E[a+4*j]*S[j];E[12+a]=-u}E[15]=1},p.getMatrix=function(t,e){this.recalcMatrix(t);var r=this.computedMatrix;if(e){for(var n=0;n<16;++n)e[n]=r[n];return e}return r};var d=[0,0,0];p.rotate=function(t,e,r,n){if(this.angle.move(t,e,r),n){this.recalcMatrix(t);var i=this.computedMatrix;d[0]=i[2],d[1]=i[6],d[2]=i[10];for(var o=this.computedUp,s=this.computedRight,l=this.computedToward,c=0;c<3;++c)i[4*c]=o[c],i[4*c+1]=s[c],i[4*c+2]=l[c];a(i,i,n,d);for(c=0;c<3;++c)o[c]=i[4*c],s[c]=i[4*c+1];this.up.set(t,o[0],o[1],o[2]),this.right.set(t,s[0],s[1],s[2])}},p.pan=function(t,e,r,n){e=e||0,r=r||0,n=n||0,this.recalcMatrix(t);var i=this.computedMatrix,a=(Math.exp(this.computedRadius[0]),i[1]),o=i[5],s=i[9],l=c(a,o,s);a/=l,o/=l,s/=l;var u=i[0],f=i[4],h=i[8],p=u*a+f*o+h*s,d=c(u-=a*p,f-=o*p,h-=s*p),g=(u/=d)*e+a*r,m=(f/=d)*e+o*r,v=(h/=d)*e+s*r;this.center.move(t,g,m,v);var y=Math.exp(this.computedRadius[0]);y=Math.max(1e-4,y+n),this.radius.set(t,Math.log(y))},p.translate=function(t,e,r,n){this.center.move(t,e||0,r||0,n||0)},p.setMatrix=function(t,e,r,n){var a=1;\"number\"==typeof r&&(a=0|r),(a<0||a>3)&&(a=1);var o=(a+2)%3;e||(this.recalcMatrix(t),e=this.computedMatrix);var s=e[a],l=e[a+4],f=e[a+8];if(n){var h=Math.abs(s),p=Math.abs(l),d=Math.abs(f),g=Math.max(h,p,d);h===g?(s=s<0?-1:1,l=f=0):d===g?(f=f<0?-1:1,s=l=0):(l=l<0?-1:1,s=f=0)}else{var m=c(s,l,f);s/=m,l/=m,f/=m}var v,y,x=e[o],b=e[o+4],_=e[o+8],w=x*s+b*l+_*f,T=c(x-=s*w,b-=l*w,_-=f*w),k=l*(_/=T)-f*(b/=T),A=f*(x/=T)-s*_,M=s*b-l*x,S=c(k,A,M);if(k/=S,A/=S,M/=S,this.center.jump(t,q,G,Y),this.radius.idle(t),this.up.jump(t,s,l,f),this.right.jump(t,x,b,_),2===a){var E=e[1],L=e[5],C=e[9],P=E*x+L*b+C*_,I=E*k+L*A+C*M;v=R<0?-Math.PI/2:Math.PI/2,y=Math.atan2(I,P)}else{var O=e[2],z=e[6],D=e[10],R=O*s+z*l+D*f,F=O*x+z*b+D*_,B=O*k+z*A+D*M;v=Math.asin(u(R)),y=Math.atan2(B,F)}this.angle.jump(t,y,v),this.recalcMatrix(t);var N=e[2],j=e[6],U=e[10],V=this.computedMatrix;i(V,e);var H=V[15],q=V[12]/H,G=V[13]/H,Y=V[14]/H,W=Math.exp(this.computedRadius[0]);this.center.jump(t,q-N*W,G-j*W,Y-U*W)},p.lastT=function(){return Math.max(this.center.lastT(),this.up.lastT(),this.right.lastT(),this.radius.lastT(),this.angle.lastT())},p.idle=function(t){this.center.idle(t),this.up.idle(t),this.right.idle(t),this.radius.idle(t),this.angle.idle(t)},p.flush=function(t){this.center.flush(t),this.up.flush(t),this.right.flush(t),this.radius.flush(t),this.angle.flush(t)},p.setDistance=function(t,e){e>0&&this.radius.set(t,Math.log(e))},p.lookAt=function(t,e,r,n){this.recalcMatrix(t),e=e||this.computedEye,r=r||this.computedCenter;var i=(n=n||this.computedUp)[0],a=n[1],o=n[2],s=c(i,a,o);if(!(s<1e-6)){i/=s,a/=s,o/=s;var l=e[0]-r[0],f=e[1]-r[1],h=e[2]-r[2],p=c(l,f,h);if(!(p<1e-6)){l/=p,f/=p,h/=p;var d=this.computedRight,g=d[0],m=d[1],v=d[2],y=i*g+a*m+o*v,x=c(g-=y*i,m-=y*a,v-=y*o);if(!(x<.01&&(x=c(g=a*h-o*f,m=o*l-i*h,v=i*f-a*l))<1e-6)){g/=x,m/=x,v/=x,this.up.set(t,i,a,o),this.right.set(t,g,m,v),this.center.set(t,r[0],r[1],r[2]),this.radius.set(t,Math.log(p));var b=a*v-o*m,_=o*g-i*v,w=i*m-a*g,T=c(b,_,w),k=i*l+a*f+o*h,A=g*l+m*f+v*h,M=(b/=T)*l+(_/=T)*f+(w/=T)*h,S=Math.asin(u(k)),E=Math.atan2(M,A),L=this.angle._state,C=L[L.length-1],P=L[L.length-2];C%=2*Math.PI;var I=Math.abs(C+2*Math.PI-E),O=Math.abs(C-E),z=Math.abs(C-2*Math.PI-E);I0?r.pop():new ArrayBuffer(t)}function d(t){return new Uint8Array(p(t),0,t)}function g(t){return new Uint16Array(p(2*t),0,t)}function m(t){return new Uint32Array(p(4*t),0,t)}function v(t){return new Int8Array(p(t),0,t)}function y(t){return new Int16Array(p(2*t),0,t)}function x(t){return new Int32Array(p(4*t),0,t)}function b(t){return new Float32Array(p(4*t),0,t)}function _(t){return new Float64Array(p(8*t),0,t)}function w(t){return o?new Uint8ClampedArray(p(t),0,t):d(t)}function T(t){return s?new BigUint64Array(p(8*t),0,t):null}function k(t){return l?new BigInt64Array(p(8*t),0,t):null}function A(t){return new DataView(p(t),0,t)}function M(t){t=n.nextPow2(t);var e=n.log2(t),r=f[e];return r.length>0?r.pop():new a(t)}r.free=function(t){if(a.isBuffer(t))f[n.log2(t.length)].push(t);else{if(\"[object ArrayBuffer]\"!==Object.prototype.toString.call(t)&&(t=t.buffer),!t)return;var e=t.length||t.byteLength,r=0|n.log2(e);u[r].push(t)}},r.freeUint8=r.freeUint16=r.freeUint32=r.freeBigUint64=r.freeInt8=r.freeInt16=r.freeInt32=r.freeBigInt64=r.freeFloat32=r.freeFloat=r.freeFloat64=r.freeDouble=r.freeUint8Clamped=r.freeDataView=function(t){h(t.buffer)},r.freeArrayBuffer=h,r.freeBuffer=function(t){f[n.log2(t.length)].push(t)},r.malloc=function(t,e){if(void 0===e||\"arraybuffer\"===e)return p(t);switch(e){case\"uint8\":return d(t);case\"uint16\":return g(t);case\"uint32\":return m(t);case\"int8\":return v(t);case\"int16\":return y(t);case\"int32\":return x(t);case\"float\":case\"float32\":return b(t);case\"double\":case\"float64\":return _(t);case\"uint8_clamped\":return w(t);case\"bigint64\":return k(t);case\"biguint64\":return T(t);case\"buffer\":return M(t);case\"data\":case\"dataview\":return A(t);default:return null}return null},r.mallocArrayBuffer=p,r.mallocUint8=d,r.mallocUint16=g,r.mallocUint32=m,r.mallocInt8=v,r.mallocInt16=y,r.mallocInt32=x,r.mallocFloat32=r.mallocFloat=b,r.mallocFloat64=r.mallocDouble=_,r.mallocUint8Clamped=w,r.mallocBigUint64=T,r.mallocBigInt64=k,r.mallocDataView=A,r.mallocBuffer=M,r.clearCache=function(){for(var t=0;t<32;++t)c.UINT8[t].length=0,c.UINT16[t].length=0,c.UINT32[t].length=0,c.INT8[t].length=0,c.INT16[t].length=0,c.INT32[t].length=0,c.FLOAT[t].length=0,c.DOUBLE[t].length=0,c.BIGUINT64[t].length=0,c.BIGINT64[t].length=0,c.UINT8C[t].length=0,u[t].length=0,f[t].length=0}}).call(this)}).call(this,void 0!==n?n:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"bit-twiddle\":32,buffer:3,dup:65}],309:[function(t,e,r){\"use strict\";function n(t){this.roots=new Array(t),this.ranks=new Array(t);for(var e=0;e0&&(a=n.size),n.lineSpacing&&n.lineSpacing>0&&(o=n.lineSpacing),n.styletags&&n.styletags.breaklines&&(s.breaklines=!!n.styletags.breaklines),n.styletags&&n.styletags.bolds&&(s.bolds=!!n.styletags.bolds),n.styletags&&n.styletags.italics&&(s.italics=!!n.styletags.italics),n.styletags&&n.styletags.subscripts&&(s.subscripts=!!n.styletags.subscripts),n.styletags&&n.styletags.superscripts&&(s.superscripts=!!n.styletags.superscripts));return r.font=[n.fontStyle,n.fontVariant,n.fontWeight,a+\"px\",n.font].filter((function(t){return t})).join(\" \"),r.textAlign=\"start\",r.textBaseline=\"alphabetic\",r.direction=\"ltr\",h(function(t,e,r,n,a,o){r=r.replace(/\\n/g,\"\"),r=!0===o.breaklines?r.replace(/\\/g,\"\\n\"):r.replace(/\\/g,\" \");var s=\"\",l=[];for(p=0;p-1?parseInt(t[1+i]):0,l=a>-1?parseInt(r[1+a]):0;s!==l&&(n=n.replace(S(),\"?px \"),m*=Math.pow(.75,l-s),n=n.replace(\"?px \",S())),g+=.25*x*(l-s)}if(!0===o.superscripts){var c=t.indexOf(\"+\"),u=r.indexOf(\"+\"),f=c>-1?parseInt(t[1+c]):0,h=u>-1?parseInt(r[1+u]):0;f!==h&&(n=n.replace(S(),\"?px \"),m*=Math.pow(.75,h-f),n=n.replace(\"?px \",S())),g-=.25*x*(h-f)}if(!0===o.bolds){var p=t.indexOf(\"b|\")>-1,d=r.indexOf(\"b|\")>-1;!p&&d&&(n=v?n.replace(\"italic \",\"italic bold \"):\"bold \"+n),p&&!d&&(n=n.replace(\"bold \",\"\"))}if(!0===o.italics){var v=t.indexOf(\"i|\")>-1,y=r.indexOf(\"i|\")>-1;!v&&y&&(n=\"italic \"+n),v&&!y&&(n=n.replace(\"italic \",\"\"))}e.font=n}for(h=0;h\",a=\"\",o=i.length,s=a.length,l=\"+\"===e[0]||\"-\"===e[0],c=0,u=-s;c>-1&&-1!==(c=r.indexOf(i,c))&&-1!==(u=r.indexOf(a,c+o))&&!(u<=c);){for(var f=c;f=u)n[f]=null,r=r.substr(0,f)+\" \"+r.substr(f+1);else if(null!==n[f]){var h=n[f].indexOf(e[0]);-1===h?n[f]+=e:l&&(n[f]=n[f].substr(0,h+1)+(1+parseInt(n[f][h+1]))+n[f].substr(h+2))}var p=c+o,d=r.substr(p,u-p).indexOf(i);c=-1!==d?d:u+s}return n}function u(t,e){var r=n(t,128);return e?a(r.cells,r.positions,.25):{edges:r.cells,positions:r.positions}}function f(t,e,r,n){var i=u(t,n),a=function(t,e,r){for(var n=e.textAlign||\"start\",i=e.textBaseline||\"alphabetic\",a=[1<<30,1<<30],o=[0,0],s=t.length,l=0;l=0?e[a]:i}))},has___:{value:y((function(e){var n=v(e);return n?r in n:t.indexOf(e)>=0}))},set___:{value:y((function(n,i){var a,o=v(n);return o?o[r]=i:(a=t.indexOf(n))>=0?e[a]=i:(a=t.length,e[a]=i,t[a]=n),this}))},delete___:{value:y((function(n){var i,a,o=v(n);return o?r in o&&delete o[r]:!((i=t.indexOf(n))<0)&&(a=t.length-1,t[i]=void 0,e[i]=e[a],t[i]=t[a],t.length=a,e.length=a,!0)}))}})};d.prototype=Object.create(Object.prototype,{get:{value:function(t,e){return this.get___(t,e)},writable:!0,configurable:!0},has:{value:function(t){return this.has___(t)},writable:!0,configurable:!0},set:{value:function(t,e){return this.set___(t,e)},writable:!0,configurable:!0},delete:{value:function(t){return this.delete___(t)},writable:!0,configurable:!0}}),\"function\"==typeof r?function(){function n(){this instanceof d||x();var e,n=new r,i=void 0,a=!1;return e=t?function(t,e){return n.set(t,e),n.has(t)||(i||(i=new d),i.set(t,e)),this}:function(t,e){if(a)try{n.set(t,e)}catch(r){i||(i=new d),i.set___(t,e)}else n.set(t,e);return this},Object.create(d.prototype,{get___:{value:y((function(t,e){return i?n.has(t)?n.get(t):i.get___(t,e):n.get(t,e)}))},has___:{value:y((function(t){return n.has(t)||!!i&&i.has___(t)}))},set___:{value:y(e)},delete___:{value:y((function(t){var e=!!n.delete(t);return i&&i.delete___(t)||e}))},permitHostObjects___:{value:y((function(t){if(t!==g)throw new Error(\"bogus call to permitHostObjects___\");a=!0}))}})}t&&\"undefined\"!=typeof Proxy&&(Proxy=void 0),n.prototype=d.prototype,e.exports=n,Object.defineProperty(WeakMap.prototype,\"constructor\",{value:WeakMap,enumerable:!1,configurable:!0,writable:!0})}():(\"undefined\"!=typeof Proxy&&(Proxy=void 0),e.exports=d)}function g(t){t.permitHostObjects___&&t.permitHostObjects___(g)}function m(t){return!(\"weakmap:\"==t.substr(0,\"weakmap:\".length)&&\"___\"===t.substr(t.length-3))}function v(t){if(t!==Object(t))throw new TypeError(\"Not an object: \"+t);var e=t[l];if(e&&e.key===t)return e;if(s(t)){e={key:t};try{return o(t,l,{value:e,writable:!1,enumerable:!1,configurable:!1}),e}catch(t){return}}}function y(t){return t.prototype=null,Object.freeze(t)}function x(){h||\"undefined\"==typeof console||(h=!0,console.warn(\"WeakMap should be invoked as new WeakMap(), not WeakMap(). This will be an error in the future.\"))}}()},{}],314:[function(t,e,r){var n=t(\"./hidden-store.js\");e.exports=function(){var t={};return function(e){if((\"object\"!=typeof e||null===e)&&\"function\"!=typeof e)throw new Error(\"Weakmap-shim: Key must be object\");var r=e.valueOf(t);return r&&r.identity===t?r:n(e,t)}}},{\"./hidden-store.js\":315}],315:[function(t,e,r){e.exports=function(t,e){var r={identity:e},n=t.valueOf;return Object.defineProperty(t,\"valueOf\",{value:function(t){return t!==e?n.apply(this,arguments):r},writable:!0}),r}},{}],316:[function(t,e,r){var n=t(\"./create-store.js\");e.exports=function(){var t=n();return{get:function(e,r){var n=t(e);return n.hasOwnProperty(\"value\")?n.value:r},set:function(e,r){return t(e).value=r,this},has:function(e){return\"value\"in t(e)},delete:function(e){return delete t(e).value}}}},{\"./create-store.js\":314}],317:[function(t,e,r){\"use strict\";var n,i=function(){return function(t,e,r,n,i,a){var o=t[0],s=r[0],l=[0],c=s;n|=0;var u=0,f=s;for(u=0;u=0!=p>=0&&i.push(l[0]+.5+.5*(h+p)/(h-p)),n+=f,++l[0]}}};e.exports=(n={funcName:{funcName:\"zeroCrossings\"}.funcName},function(t){var e={};return function(r,n,i){var a=r.dtype,o=r.order,s=[a,o.join()].join(),l=e[s];return l||(e[s]=l=t([a,o])),l(r.shape.slice(0),r.data,r.stride,0|r.offset,n,i)}}(i.bind(void 0,n)))},{}],318:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r=[];return e=+e||0,n(t.hi(t.shape[0]-1),r,e),r};var n=t(\"./lib/zc-core\")},{\"./lib/zc-core\":317}]},{},[6])(6)}))}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}]},{},[27])(27)}));\n", + "\"use strict\";var n,i=\"\";e.exports=function(t,e){if(\"string\"!=typeof t)throw new TypeError(\"expected a string\");if(1===e)return t;if(2===e)return t+t;var r=t.length*e;if(n!==t||void 0===n)n=t,i=\"\";else if(i.length>=r)return i.substr(0,r);for(;r>i.length&&e>1;)1&e&&(i+=t),e>>=1,t+=t;return i=(i+=t).substr(0,r)}},{}],278:[function(t,e,r){(function(t){(function(){e.exports=t.performance&&t.performance.now?function(){return performance.now()}:Date.now||function(){return+new Date}}).call(this)}).call(this,void 0!==n?n:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],279:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e=t.length,r=t[t.length-1],n=e,i=e-2;i>=0;--i){var a=r,o=t[i];(l=o-((r=a+o)-a))&&(t[--n]=r,r=l)}var s=0;for(i=n;i0){if(a<=0)return o;n=i+a}else{if(!(i<0))return o;if(a>=0)return o;n=-(i+a)}var s=33306690738754716e-32*n;return o>=s||o<=-s?o:f(t,e,r)},function(t,e,r,n){var i=t[0]-n[0],a=e[0]-n[0],o=r[0]-n[0],s=t[1]-n[1],l=e[1]-n[1],c=r[1]-n[1],u=t[2]-n[2],f=e[2]-n[2],p=r[2]-n[2],d=a*c,g=o*l,m=o*s,v=i*c,y=i*l,x=a*s,b=u*(d-g)+f*(m-v)+p*(y-x),_=7771561172376103e-31*((Math.abs(d)+Math.abs(g))*Math.abs(u)+(Math.abs(m)+Math.abs(v))*Math.abs(f)+(Math.abs(y)+Math.abs(x))*Math.abs(p));return b>_||-b>_?b:h(t,e,r,n)}];function d(t){var e=p[t.length];return e||(e=p[t.length]=u(t.length)),e.apply(void 0,t)}function g(t,e,r,n,i,a,o){return function(e,r,s,l,c){switch(arguments.length){case 0:case 1:return 0;case 2:return n(e,r);case 3:return i(e,r,s);case 4:return a(e,r,s,l);case 5:return o(e,r,s,l,c)}for(var u=new Array(arguments.length),f=0;f0&&o>0||a<0&&o<0)return!1;var s=n(r,t,e),l=n(i,t,e);if(s>0&&l>0||s<0&&l<0)return!1;if(0===a&&0===o&&0===s&&0===l)return function(t,e,r,n){for(var i=0;i<2;++i){var a=t[i],o=e[i],s=Math.min(a,o),l=Math.max(a,o),c=r[i],u=n[i],f=Math.min(c,u);if(Math.max(c,u)=n?(i=f,(l+=1)=n?(i=f,(l+=1)>1,c=e[2*l+1];if(c===a)return l;a>1,c=e[2*l+1];if(c===a)return l;a>1,c=e[2*l+1];if(c===a)return l;a>1,s=a(t[o],e);s<=0?(0===s&&(i=o),r=o+1):s>0&&(n=o-1)}return i}function u(t,e){for(var r=new Array(t.length),i=0,o=r.length;i=t.length||0!==a(t[m],s)););}return r}function f(t,e){if(e<0)return[];for(var r=[],i=(1<>>u&1&&c.push(i[u]);e.push(c)}return s(e)},r.skeleton=f,r.boundary=function(t){for(var e=[],r=0,n=t.length;r>1:(t>>1)-1}function x(t){for(var e=v(t);;){var r=e,n=2*t+1,i=2*(t+1),a=t;if(n0;){var r=y(t);if(r>=0)if(e0){var t=k[0];return m(0,M-1),M-=1,x(0),t}return-1}function w(t,e){var r=k[t];return c[r]===e?t:(c[r]=-1/0,b(t),_(),c[r]=e,b((M+=1)-1))}function T(t){if(!u[t]){u[t]=!0;var e=s[t],r=l[t];s[r]>=0&&(s[r]=e),l[e]>=0&&(l[e]=r),A[e]>=0&&w(A[e],g(e)),A[r]>=0&&w(A[r],g(r))}}var k=[],A=new Array(a);for(f=0;f>1;f>=0;--f)x(f);for(;;){var S=_();if(S<0||c[S]>r)break;T(S)}var E=[];for(f=0;f=0&&r>=0&&e!==r){var n=A[e],i=A[r];n!==i&&C.push([n,i])}})),i.unique(i.normalize(C)),{positions:E,edges:C}};var n=t(\"robust-orientation\"),i=t(\"simplicial-complex\")},{\"robust-orientation\":284,\"simplicial-complex\":295}],298:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r,a,o,s;if(e[0][0]e[1][0]))return i(e,t);r=e[1],a=e[0]}if(t[0][0]t[1][0]))return-i(t,e);o=t[1],s=t[0]}var l=n(r,a,s),c=n(r,a,o);if(l<0){if(c<=0)return l}else if(l>0){if(c>=0)return l}else if(c)return c;if(l=n(s,o,a),c=n(s,o,r),l<0){if(c<=0)return l}else if(l>0){if(c>=0)return l}else if(c)return c;return a[0]-s[0]};var n=t(\"robust-orientation\");function i(t,e){var r,i,a,o;if(e[0][0]e[1][0])){var s=Math.min(t[0][1],t[1][1]),l=Math.max(t[0][1],t[1][1]),c=Math.min(e[0][1],e[1][1]),u=Math.max(e[0][1],e[1][1]);return lu?s-u:l-u}r=e[1],i=e[0]}t[0][1]0)if(e[0]!==o[1][0])r=t,t=t.right;else{if(l=c(t.right,e))return l;t=t.left}else{if(e[0]!==o[1][0])return t;var l;if(l=c(t.right,e))return l;t=t.left}}return r}function u(t,e,r,n){this.y=t,this.index=e,this.start=r,this.closed=n}function f(t,e,r,n){this.x=t,this.segment=e,this.create=r,this.index=n}s.prototype.castUp=function(t){var e=n.le(this.coordinates,t[0]);if(e<0)return-1;this.slabs[e];var r=c(this.slabs[e],t),i=-1;if(r&&(i=r.value),this.coordinates[e]===t[0]){var s=null;if(r&&(s=r.key),e>0){var u=c(this.slabs[e-1],t);u&&(s?o(u.key,s)>0&&(s=u.key,i=u.value):(i=u.value,s=u.key))}var f=this.horizontal[e];if(f.length>0){var h=n.ge(f,t[1],l);if(h=f.length)return i;p=f[h]}}if(p.start)if(s){var d=a(s[0],s[1],[t[0],p.y]);s[0][0]>s[1][0]&&(d=-d),d>0&&(i=p.index)}else i=p.index;else p.y!==t[1]&&(i=p.index)}}}return i}},{\"./lib/order-segments\":298,\"binary-search-bounds\":31,\"functional-red-black-tree\":69,\"robust-orientation\":284}],300:[function(t,e,r){\"use strict\";var n=t(\"robust-dot-product\"),i=t(\"robust-sum\");function a(t,e){var r=i(n(t,e),[e[e.length-1]]);return r[r.length-1]}function o(t,e,r,n){var i=-e/(n-e);i<0?i=0:i>1&&(i=1);for(var a=1-i,o=t.length,s=new Array(o),l=0;l0||i>0&&u<0){var f=o(s,u,l,i);r.push(f),n.push(f.slice())}u<0?n.push(l.slice()):u>0?r.push(l.slice()):(r.push(l.slice()),n.push(l.slice())),i=u}return{positive:r,negative:n}},e.exports.positive=function(t,e){for(var r=[],n=a(t[t.length-1],e),i=t[t.length-1],s=t[0],l=0;l0||n>0&&c<0)&&r.push(o(i,c,s,n)),c>=0&&r.push(s.slice()),n=c}return r},e.exports.negative=function(t,e){for(var r=[],n=a(t[t.length-1],e),i=t[t.length-1],s=t[0],l=0;l0||n>0&&c<0)&&r.push(o(i,c,s,n)),c<=0&&r.push(s.slice()),n=c}return r}},{\"robust-dot-product\":281,\"robust-sum\":289}],301:[function(t,e,r){!function(){\"use strict\";var t={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\\x25]+/,modulo:/^\\x25{2}/,placeholder:/^\\x25(?:([1-9]\\d*)\\$|\\(([^)]+)\\))?(\\+)?(0|'[^$])?(-)?(\\d+)?(?:\\.(\\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\\d]*)/i,key_access:/^\\.([a-z_][a-z_\\d]*)/i,index_access:/^\\[(\\d+)\\]/,sign:/^[+-]/};function e(t){return i(o(t),arguments)}function n(t,r){return e.apply(null,[t].concat(r||[]))}function i(r,n){var i,a,o,s,l,c,u,f,h,p=1,d=r.length,g=\"\";for(a=0;a=0),s.type){case\"b\":i=parseInt(i,10).toString(2);break;case\"c\":i=String.fromCharCode(parseInt(i,10));break;case\"d\":case\"i\":i=parseInt(i,10);break;case\"j\":i=JSON.stringify(i,null,s.width?parseInt(s.width):0);break;case\"e\":i=s.precision?parseFloat(i).toExponential(s.precision):parseFloat(i).toExponential();break;case\"f\":i=s.precision?parseFloat(i).toFixed(s.precision):parseFloat(i);break;case\"g\":i=s.precision?String(Number(i.toPrecision(s.precision))):parseFloat(i);break;case\"o\":i=(parseInt(i,10)>>>0).toString(8);break;case\"s\":i=String(i),i=s.precision?i.substring(0,s.precision):i;break;case\"t\":i=String(!!i),i=s.precision?i.substring(0,s.precision):i;break;case\"T\":i=Object.prototype.toString.call(i).slice(8,-1).toLowerCase(),i=s.precision?i.substring(0,s.precision):i;break;case\"u\":i=parseInt(i,10)>>>0;break;case\"v\":i=i.valueOf(),i=s.precision?i.substring(0,s.precision):i;break;case\"x\":i=(parseInt(i,10)>>>0).toString(16);break;case\"X\":i=(parseInt(i,10)>>>0).toString(16).toUpperCase()}t.json.test(s.type)?g+=i:(!t.number.test(s.type)||f&&!s.sign?h=\"\":(h=f?\"+\":\"-\",i=i.toString().replace(t.sign,\"\")),c=s.pad_char?\"0\"===s.pad_char?\"0\":s.pad_char.charAt(1):\" \",u=s.width-(h+i).length,l=s.width&&u>0?c.repeat(u):\"\",g+=s.align?h+i+l:\"0\"===c?h+l+i:l+h+i)}return g}var a=Object.create(null);function o(e){if(a[e])return a[e];for(var r,n=e,i=[],o=0;n;){if(null!==(r=t.text.exec(n)))i.push(r[0]);else if(null!==(r=t.modulo.exec(n)))i.push(\"%\");else{if(null===(r=t.placeholder.exec(n)))throw new SyntaxError(\"[sprintf] unexpected placeholder\");if(r[2]){o|=1;var s=[],l=r[2],c=[];if(null===(c=t.key.exec(l)))throw new SyntaxError(\"[sprintf] failed to parse named argument key\");for(s.push(c[1]);\"\"!==(l=l.substring(c[0].length));)if(null!==(c=t.key_access.exec(l)))s.push(c[1]);else{if(null===(c=t.index_access.exec(l)))throw new SyntaxError(\"[sprintf] failed to parse named argument key\");s.push(c[1])}r[2]=s}else o|=2;if(3===o)throw new Error(\"[sprintf] mixing positional and named placeholders is not (yet) supported\");i.push({placeholder:r[0],param_no:r[1],keys:r[2],sign:r[3],pad_char:r[4],align:r[5],width:r[6],precision:r[7],type:r[8]})}n=n.substring(r[0].length)}return a[e]=i}void 0!==r&&(r.sprintf=e,r.vsprintf=n),\"undefined\"!=typeof window&&(window.sprintf=e,window.vsprintf=n)}()},{}],302:[function(t,e,r){\"use strict\";e.exports=function(t,e){if(t.dimension<=0)return{positions:[],cells:[]};if(1===t.dimension)return function(t,e){for(var r=i(t,e),n=r.length,a=new Array(n),o=new Array(n),s=0;sn|0},vertex:function(t,e,r,n,i,a,o,s,l,c,u,f,h){var p=(o<<0)+(s<<1)+(l<<2)+(c<<3)|0;if(0!==p&&15!==p)switch(p){case 0:u.push([t-.5,e-.5]);break;case 1:u.push([t-.25-.25*(n+r-2*h)/(r-n),e-.25-.25*(i+r-2*h)/(r-i)]);break;case 2:u.push([t-.75-.25*(-n-r+2*h)/(n-r),e-.25-.25*(a+n-2*h)/(n-a)]);break;case 3:u.push([t-.5,e-.5-.5*(i+r+a+n-4*h)/(r-i+n-a)]);break;case 4:u.push([t-.25-.25*(a+i-2*h)/(i-a),e-.75-.25*(-i-r+2*h)/(i-r)]);break;case 5:u.push([t-.5-.5*(n+r+a+i-4*h)/(r-n+i-a),e-.5]);break;case 6:u.push([t-.5-.25*(-n-r+a+i)/(n-r+i-a),e-.5-.25*(-i-r+a+n)/(i-r+n-a)]);break;case 7:u.push([t-.75-.25*(a+i-2*h)/(i-a),e-.75-.25*(a+n-2*h)/(n-a)]);break;case 8:u.push([t-.75-.25*(-a-i+2*h)/(a-i),e-.75-.25*(-a-n+2*h)/(a-n)]);break;case 9:u.push([t-.5-.25*(n+r+-a-i)/(r-n+a-i),e-.5-.25*(i+r+-a-n)/(r-i+a-n)]);break;case 10:u.push([t-.5-.5*(-n-r-a-i+4*h)/(n-r+a-i),e-.5]);break;case 11:u.push([t-.25-.25*(-a-i+2*h)/(a-i),e-.75-.25*(i+r-2*h)/(r-i)]);break;case 12:u.push([t-.5,e-.5-.5*(-i-r-a-n+4*h)/(i-r+a-n)]);break;case 13:u.push([t-.75-.25*(n+r-2*h)/(r-n),e-.25-.25*(-a-n+2*h)/(a-n)]);break;case 14:u.push([t-.25-.25*(-n-r+2*h)/(n-r),e-.25-.25*(-i-r+2*h)/(i-r)]);break;case 15:u.push([t-.5,e-.5])}},cell:function(t,e,r,n,i,a,o,s,l){i?s.push([t,e]):s.push([e,t])}});return function(t,e){var r=[],i=[];return n(t,r,i,e),{positions:r,cells:i}}}};var o={}},{\"ndarray-extract-contour\":251,\"zero-crossings\":318}],303:[function(t,e,r){(function(r){(function(){\"use strict\";e.exports=function t(e,r,i){i=i||{};var o=a[e];o||(o=a[e]={\" \":{data:new Float32Array(0),shape:.2}});var s=o[r];if(!s)if(r.length<=1||!/\\d/.test(r))s=o[r]=function(t){for(var e=t.cells,r=t.positions,n=new Float32Array(6*e.length),i=0,a=0,o=0;o0&&(f+=.02);var p=new Float32Array(u),d=0,g=-.5*f;for(h=0;hMath.max(r,n)?i[2]=1:r>Math.max(e,n)?i[0]=1:i[1]=1;for(var a=0,o=0,l=0;l<3;++l)a+=t[l]*t[l],o+=i[l]*t[l];for(l=0;l<3;++l)i[l]-=o/a*t[l];return s(i,i),i}function h(t,e,r,i,a,o,s,l){this.center=n(r),this.up=n(i),this.right=n(a),this.radius=n([o]),this.angle=n([s,l]),this.angle.bounds=[[-1/0,-Math.PI/2],[1/0,Math.PI/2]],this.setDistanceLimits(t,e),this.computedCenter=this.center.curve(0),this.computedUp=this.up.curve(0),this.computedRight=this.right.curve(0),this.computedRadius=this.radius.curve(0),this.computedAngle=this.angle.curve(0),this.computedToward=[0,0,0],this.computedEye=[0,0,0],this.computedMatrix=new Array(16);for(var c=0;c<16;++c)this.computedMatrix[c]=.5;this.recalcMatrix(0)}var p=h.prototype;p.setDistanceLimits=function(t,e){t=t>0?Math.log(t):-1/0,e=e>0?Math.log(e):1/0,e=Math.max(e,t),this.radius.bounds[0][0]=t,this.radius.bounds[1][0]=e},p.getDistanceLimits=function(t){var e=this.radius.bounds[0];return t?(t[0]=Math.exp(e[0][0]),t[1]=Math.exp(e[1][0]),t):[Math.exp(e[0][0]),Math.exp(e[1][0])]},p.recalcMatrix=function(t){this.center.curve(t),this.up.curve(t),this.right.curve(t),this.radius.curve(t),this.angle.curve(t);for(var e=this.computedUp,r=this.computedRight,n=0,i=0,a=0;a<3;++a)i+=e[a]*r[a],n+=e[a]*e[a];var l=Math.sqrt(n),u=0;for(a=0;a<3;++a)r[a]-=e[a]*i/n,u+=r[a]*r[a],e[a]/=l;var f=Math.sqrt(u);for(a=0;a<3;++a)r[a]/=f;var h=this.computedToward;o(h,e,r),s(h,h);var p=Math.exp(this.computedRadius[0]),d=this.computedAngle[0],g=this.computedAngle[1],m=Math.cos(d),v=Math.sin(d),y=Math.cos(g),x=Math.sin(g),b=this.computedCenter,_=m*y,w=v*y,T=x,k=-m*x,A=-v*x,M=y,S=this.computedEye,E=this.computedMatrix;for(a=0;a<3;++a){var L=_*r[a]+w*h[a]+T*e[a];E[4*a+1]=k*r[a]+A*h[a]+M*e[a],E[4*a+2]=L,E[4*a+3]=0}var C=E[1],P=E[5],I=E[9],O=E[2],z=E[6],D=E[10],R=P*D-I*z,F=I*O-C*D,B=C*z-P*O,N=c(R,F,B);R/=N,F/=N,B/=N,E[0]=R,E[4]=F,E[8]=B;for(a=0;a<3;++a)S[a]=b[a]+E[2+4*a]*p;for(a=0;a<3;++a){u=0;for(var j=0;j<3;++j)u+=E[a+4*j]*S[j];E[12+a]=-u}E[15]=1},p.getMatrix=function(t,e){this.recalcMatrix(t);var r=this.computedMatrix;if(e){for(var n=0;n<16;++n)e[n]=r[n];return e}return r};var d=[0,0,0];p.rotate=function(t,e,r,n){if(this.angle.move(t,e,r),n){this.recalcMatrix(t);var i=this.computedMatrix;d[0]=i[2],d[1]=i[6],d[2]=i[10];for(var o=this.computedUp,s=this.computedRight,l=this.computedToward,c=0;c<3;++c)i[4*c]=o[c],i[4*c+1]=s[c],i[4*c+2]=l[c];a(i,i,n,d);for(c=0;c<3;++c)o[c]=i[4*c],s[c]=i[4*c+1];this.up.set(t,o[0],o[1],o[2]),this.right.set(t,s[0],s[1],s[2])}},p.pan=function(t,e,r,n){e=e||0,r=r||0,n=n||0,this.recalcMatrix(t);var i=this.computedMatrix,a=(Math.exp(this.computedRadius[0]),i[1]),o=i[5],s=i[9],l=c(a,o,s);a/=l,o/=l,s/=l;var u=i[0],f=i[4],h=i[8],p=u*a+f*o+h*s,d=c(u-=a*p,f-=o*p,h-=s*p),g=(u/=d)*e+a*r,m=(f/=d)*e+o*r,v=(h/=d)*e+s*r;this.center.move(t,g,m,v);var y=Math.exp(this.computedRadius[0]);y=Math.max(1e-4,y+n),this.radius.set(t,Math.log(y))},p.translate=function(t,e,r,n){this.center.move(t,e||0,r||0,n||0)},p.setMatrix=function(t,e,r,n){var a=1;\"number\"==typeof r&&(a=0|r),(a<0||a>3)&&(a=1);var o=(a+2)%3;e||(this.recalcMatrix(t),e=this.computedMatrix);var s=e[a],l=e[a+4],f=e[a+8];if(n){var h=Math.abs(s),p=Math.abs(l),d=Math.abs(f),g=Math.max(h,p,d);h===g?(s=s<0?-1:1,l=f=0):d===g?(f=f<0?-1:1,s=l=0):(l=l<0?-1:1,s=f=0)}else{var m=c(s,l,f);s/=m,l/=m,f/=m}var v,y,x=e[o],b=e[o+4],_=e[o+8],w=x*s+b*l+_*f,T=c(x-=s*w,b-=l*w,_-=f*w),k=l*(_/=T)-f*(b/=T),A=f*(x/=T)-s*_,M=s*b-l*x,S=c(k,A,M);if(k/=S,A/=S,M/=S,this.center.jump(t,q,G,Y),this.radius.idle(t),this.up.jump(t,s,l,f),this.right.jump(t,x,b,_),2===a){var E=e[1],L=e[5],C=e[9],P=E*x+L*b+C*_,I=E*k+L*A+C*M;v=R<0?-Math.PI/2:Math.PI/2,y=Math.atan2(I,P)}else{var O=e[2],z=e[6],D=e[10],R=O*s+z*l+D*f,F=O*x+z*b+D*_,B=O*k+z*A+D*M;v=Math.asin(u(R)),y=Math.atan2(B,F)}this.angle.jump(t,y,v),this.recalcMatrix(t);var N=e[2],j=e[6],U=e[10],V=this.computedMatrix;i(V,e);var H=V[15],q=V[12]/H,G=V[13]/H,Y=V[14]/H,W=Math.exp(this.computedRadius[0]);this.center.jump(t,q-N*W,G-j*W,Y-U*W)},p.lastT=function(){return Math.max(this.center.lastT(),this.up.lastT(),this.right.lastT(),this.radius.lastT(),this.angle.lastT())},p.idle=function(t){this.center.idle(t),this.up.idle(t),this.right.idle(t),this.radius.idle(t),this.angle.idle(t)},p.flush=function(t){this.center.flush(t),this.up.flush(t),this.right.flush(t),this.radius.flush(t),this.angle.flush(t)},p.setDistance=function(t,e){e>0&&this.radius.set(t,Math.log(e))},p.lookAt=function(t,e,r,n){this.recalcMatrix(t),e=e||this.computedEye,r=r||this.computedCenter;var i=(n=n||this.computedUp)[0],a=n[1],o=n[2],s=c(i,a,o);if(!(s<1e-6)){i/=s,a/=s,o/=s;var l=e[0]-r[0],f=e[1]-r[1],h=e[2]-r[2],p=c(l,f,h);if(!(p<1e-6)){l/=p,f/=p,h/=p;var d=this.computedRight,g=d[0],m=d[1],v=d[2],y=i*g+a*m+o*v,x=c(g-=y*i,m-=y*a,v-=y*o);if(!(x<.01&&(x=c(g=a*h-o*f,m=o*l-i*h,v=i*f-a*l))<1e-6)){g/=x,m/=x,v/=x,this.up.set(t,i,a,o),this.right.set(t,g,m,v),this.center.set(t,r[0],r[1],r[2]),this.radius.set(t,Math.log(p));var b=a*v-o*m,_=o*g-i*v,w=i*m-a*g,T=c(b,_,w),k=i*l+a*f+o*h,A=g*l+m*f+v*h,M=(b/=T)*l+(_/=T)*f+(w/=T)*h,S=Math.asin(u(k)),E=Math.atan2(M,A),L=this.angle._state,C=L[L.length-1],P=L[L.length-2];C%=2*Math.PI;var I=Math.abs(C+2*Math.PI-E),O=Math.abs(C-E),z=Math.abs(C-2*Math.PI-E);I0?r.pop():new ArrayBuffer(t)}function d(t){return new Uint8Array(p(t),0,t)}function g(t){return new Uint16Array(p(2*t),0,t)}function m(t){return new Uint32Array(p(4*t),0,t)}function v(t){return new Int8Array(p(t),0,t)}function y(t){return new Int16Array(p(2*t),0,t)}function x(t){return new Int32Array(p(4*t),0,t)}function b(t){return new Float32Array(p(4*t),0,t)}function _(t){return new Float64Array(p(8*t),0,t)}function w(t){return o?new Uint8ClampedArray(p(t),0,t):d(t)}function T(t){return s?new BigUint64Array(p(8*t),0,t):null}function k(t){return l?new BigInt64Array(p(8*t),0,t):null}function A(t){return new DataView(p(t),0,t)}function M(t){t=n.nextPow2(t);var e=n.log2(t),r=f[e];return r.length>0?r.pop():new a(t)}r.free=function(t){if(a.isBuffer(t))f[n.log2(t.length)].push(t);else{if(\"[object ArrayBuffer]\"!==Object.prototype.toString.call(t)&&(t=t.buffer),!t)return;var e=t.length||t.byteLength,r=0|n.log2(e);u[r].push(t)}},r.freeUint8=r.freeUint16=r.freeUint32=r.freeBigUint64=r.freeInt8=r.freeInt16=r.freeInt32=r.freeBigInt64=r.freeFloat32=r.freeFloat=r.freeFloat64=r.freeDouble=r.freeUint8Clamped=r.freeDataView=function(t){h(t.buffer)},r.freeArrayBuffer=h,r.freeBuffer=function(t){f[n.log2(t.length)].push(t)},r.malloc=function(t,e){if(void 0===e||\"arraybuffer\"===e)return p(t);switch(e){case\"uint8\":return d(t);case\"uint16\":return g(t);case\"uint32\":return m(t);case\"int8\":return v(t);case\"int16\":return y(t);case\"int32\":return x(t);case\"float\":case\"float32\":return b(t);case\"double\":case\"float64\":return _(t);case\"uint8_clamped\":return w(t);case\"bigint64\":return k(t);case\"biguint64\":return T(t);case\"buffer\":return M(t);case\"data\":case\"dataview\":return A(t);default:return null}return null},r.mallocArrayBuffer=p,r.mallocUint8=d,r.mallocUint16=g,r.mallocUint32=m,r.mallocInt8=v,r.mallocInt16=y,r.mallocInt32=x,r.mallocFloat32=r.mallocFloat=b,r.mallocFloat64=r.mallocDouble=_,r.mallocUint8Clamped=w,r.mallocBigUint64=T,r.mallocBigInt64=k,r.mallocDataView=A,r.mallocBuffer=M,r.clearCache=function(){for(var t=0;t<32;++t)c.UINT8[t].length=0,c.UINT16[t].length=0,c.UINT32[t].length=0,c.INT8[t].length=0,c.INT16[t].length=0,c.INT32[t].length=0,c.FLOAT[t].length=0,c.DOUBLE[t].length=0,c.BIGUINT64[t].length=0,c.BIGINT64[t].length=0,c.UINT8C[t].length=0,u[t].length=0,f[t].length=0}}).call(this)}).call(this,void 0!==n?n:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"bit-twiddle\":32,buffer:3,dup:65}],309:[function(t,e,r){\"use strict\";function n(t){this.roots=new Array(t),this.ranks=new Array(t);for(var e=0;e0&&(a=n.size),n.lineSpacing&&n.lineSpacing>0&&(o=n.lineSpacing),n.styletags&&n.styletags.breaklines&&(s.breaklines=!!n.styletags.breaklines),n.styletags&&n.styletags.bolds&&(s.bolds=!!n.styletags.bolds),n.styletags&&n.styletags.italics&&(s.italics=!!n.styletags.italics),n.styletags&&n.styletags.subscripts&&(s.subscripts=!!n.styletags.subscripts),n.styletags&&n.styletags.superscripts&&(s.superscripts=!!n.styletags.superscripts));return r.font=[n.fontStyle,n.fontVariant,n.fontWeight,a+\"px\",n.font].filter((function(t){return t})).join(\" \"),r.textAlign=\"start\",r.textBaseline=\"alphabetic\",r.direction=\"ltr\",h(function(t,e,r,n,a,o){r=r.replace(/\\n/g,\"\"),r=!0===o.breaklines?r.replace(/\\/g,\"\\n\"):r.replace(/\\/g,\" \");var s=\"\",l=[];for(p=0;p-1?parseInt(t[1+i]):0,l=a>-1?parseInt(r[1+a]):0;s!==l&&(n=n.replace(S(),\"?px \"),m*=Math.pow(.75,l-s),n=n.replace(\"?px \",S())),g+=.25*x*(l-s)}if(!0===o.superscripts){var c=t.indexOf(\"+\"),u=r.indexOf(\"+\"),f=c>-1?parseInt(t[1+c]):0,h=u>-1?parseInt(r[1+u]):0;f!==h&&(n=n.replace(S(),\"?px \"),m*=Math.pow(.75,h-f),n=n.replace(\"?px \",S())),g-=.25*x*(h-f)}if(!0===o.bolds){var p=t.indexOf(\"b|\")>-1,d=r.indexOf(\"b|\")>-1;!p&&d&&(n=v?n.replace(\"italic \",\"italic bold \"):\"bold \"+n),p&&!d&&(n=n.replace(\"bold \",\"\"))}if(!0===o.italics){var v=t.indexOf(\"i|\")>-1,y=r.indexOf(\"i|\")>-1;!v&&y&&(n=\"italic \"+n),v&&!y&&(n=n.replace(\"italic \",\"\"))}e.font=n}for(h=0;h\",a=\"\",o=i.length,s=a.length,l=\"+\"===e[0]||\"-\"===e[0],c=0,u=-s;c>-1&&-1!==(c=r.indexOf(i,c))&&-1!==(u=r.indexOf(a,c+o))&&!(u<=c);){for(var f=c;f=u)n[f]=null,r=r.substr(0,f)+\" \"+r.substr(f+1);else if(null!==n[f]){var h=n[f].indexOf(e[0]);-1===h?n[f]+=e:l&&(n[f]=n[f].substr(0,h+1)+(1+parseInt(n[f][h+1]))+n[f].substr(h+2))}var p=c+o,d=r.substr(p,u-p).indexOf(i);c=-1!==d?d:u+s}return n}function u(t,e){var r=n(t,128);return e?a(r.cells,r.positions,.25):{edges:r.cells,positions:r.positions}}function f(t,e,r,n){var i=u(t,n),a=function(t,e,r){for(var n=e.textAlign||\"start\",i=e.textBaseline||\"alphabetic\",a=[1<<30,1<<30],o=[0,0],s=t.length,l=0;l=0?e[a]:i}))},has___:{value:y((function(e){var n=v(e);return n?r in n:t.indexOf(e)>=0}))},set___:{value:y((function(n,i){var a,o=v(n);return o?o[r]=i:(a=t.indexOf(n))>=0?e[a]=i:(a=t.length,e[a]=i,t[a]=n),this}))},delete___:{value:y((function(n){var i,a,o=v(n);return o?r in o&&delete o[r]:!((i=t.indexOf(n))<0)&&(a=t.length-1,t[i]=void 0,e[i]=e[a],t[i]=t[a],t.length=a,e.length=a,!0)}))}})};d.prototype=Object.create(Object.prototype,{get:{value:function(t,e){return this.get___(t,e)},writable:!0,configurable:!0},has:{value:function(t){return this.has___(t)},writable:!0,configurable:!0},set:{value:function(t,e){return this.set___(t,e)},writable:!0,configurable:!0},delete:{value:function(t){return this.delete___(t)},writable:!0,configurable:!0}}),\"function\"==typeof r?function(){function n(){this instanceof d||x();var e,n=new r,i=void 0,a=!1;return e=t?function(t,e){return n.set(t,e),n.has(t)||(i||(i=new d),i.set(t,e)),this}:function(t,e){if(a)try{n.set(t,e)}catch(r){i||(i=new d),i.set___(t,e)}else n.set(t,e);return this},Object.create(d.prototype,{get___:{value:y((function(t,e){return i?n.has(t)?n.get(t):i.get___(t,e):n.get(t,e)}))},has___:{value:y((function(t){return n.has(t)||!!i&&i.has___(t)}))},set___:{value:y(e)},delete___:{value:y((function(t){var e=!!n.delete(t);return i&&i.delete___(t)||e}))},permitHostObjects___:{value:y((function(t){if(t!==g)throw new Error(\"bogus call to permitHostObjects___\");a=!0}))}})}t&&\"undefined\"!=typeof Proxy&&(Proxy=void 0),n.prototype=d.prototype,e.exports=n,Object.defineProperty(WeakMap.prototype,\"constructor\",{value:WeakMap,enumerable:!1,configurable:!0,writable:!0})}():(\"undefined\"!=typeof Proxy&&(Proxy=void 0),e.exports=d)}function g(t){t.permitHostObjects___&&t.permitHostObjects___(g)}function m(t){return!(\"weakmap:\"==t.substr(0,\"weakmap:\".length)&&\"___\"===t.substr(t.length-3))}function v(t){if(t!==Object(t))throw new TypeError(\"Not an object: \"+t);var e=t[l];if(e&&e.key===t)return e;if(s(t)){e={key:t};try{return o(t,l,{value:e,writable:!1,enumerable:!1,configurable:!1}),e}catch(t){return}}}function y(t){return t.prototype=null,Object.freeze(t)}function x(){h||\"undefined\"==typeof console||(h=!0,console.warn(\"WeakMap should be invoked as new WeakMap(), not WeakMap(). This will be an error in the future.\"))}}()},{}],314:[function(t,e,r){var n=t(\"./hidden-store.js\");e.exports=function(){var t={};return function(e){if((\"object\"!=typeof e||null===e)&&\"function\"!=typeof e)throw new Error(\"Weakmap-shim: Key must be object\");var r=e.valueOf(t);return r&&r.identity===t?r:n(e,t)}}},{\"./hidden-store.js\":315}],315:[function(t,e,r){e.exports=function(t,e){var r={identity:e},n=t.valueOf;return Object.defineProperty(t,\"valueOf\",{value:function(t){return t!==e?n.apply(this,arguments):r},writable:!0}),r}},{}],316:[function(t,e,r){var n=t(\"./create-store.js\");e.exports=function(){var t=n();return{get:function(e,r){var n=t(e);return n.hasOwnProperty(\"value\")?n.value:r},set:function(e,r){return t(e).value=r,this},has:function(e){return\"value\"in t(e)},delete:function(e){return delete t(e).value}}}},{\"./create-store.js\":314}],317:[function(t,e,r){\"use strict\";var n,i=function(){return function(t,e,r,n,i,a){var o=t[0],s=r[0],l=[0],c=s;n|=0;var u=0,f=s;for(u=0;u=0!=p>=0&&i.push(l[0]+.5+.5*(h+p)/(h-p)),n+=f,++l[0]}}};e.exports=(n={funcName:{funcName:\"zeroCrossings\"}.funcName},function(t){var e={};return function(r,n,i){var a=r.dtype,o=r.order,s=[a,o.join()].join(),l=e[s];return l||(e[s]=l=t([a,o])),l(r.shape.slice(0),r.data,r.stride,0|r.offset,n,i)}}(i.bind(void 0,n)))},{}],318:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r=[];return e=+e||0,n(t.hi(t.shape[0]-1),r,e),r};var n=t(\"./lib/zc-core\")},{\"./lib/zc-core\":317}]},{},[6])(6)}))}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}]},{},[27])(27)}));\n", " });\n", " require(['plotly'], function(Plotly) {\n", " window._Plotly = Plotly;\n", From fac2c87ee1b3aaa20c9d22310aa61e1faae5fd2c Mon Sep 17 00:00:00 2001 From: Jan Range Date: Sat, 22 Jun 2024 17:55:20 +0200 Subject: [PATCH 003/172] remove unused code and artifacts --- .readthedocs.yaml | 23 - Dockerfile | 18 - pyenzyme/__init__.py | 89 +- pyenzyme/enzymeml/__init__.py | 18 - pyenzyme/enzymeml/core/__init__.py | 19 - pyenzyme/enzymeml/core/abstract_classes.py | 69 - pyenzyme/enzymeml/core/complex.py | 119 -- pyenzyme/enzymeml/core/creator.py | 68 - pyenzyme/enzymeml/core/enzymemlbase.py | 134 -- pyenzyme/enzymeml/core/enzymemldocument.py | 1847 ----------------- pyenzyme/enzymeml/core/enzymereaction.py | 732 ------- pyenzyme/enzymeml/core/exceptions.py | 92 - pyenzyme/enzymeml/core/measurement.py | 475 ----- pyenzyme/enzymeml/core/measurementData.py | 195 -- pyenzyme/enzymeml/core/ontology.py | 89 - pyenzyme/enzymeml/core/protein.py | 259 --- pyenzyme/enzymeml/core/reactant.py | 211 -- pyenzyme/enzymeml/core/replicate.py | 152 -- pyenzyme/enzymeml/core/unitdef.py | 295 --- pyenzyme/enzymeml/core/utils.py | 27 - pyenzyme/enzymeml/core/vessel.py | 110 - pyenzyme/enzymeml/databases/__init__.py | 7 - pyenzyme/enzymeml/databases/dataverse.py | 274 --- pyenzyme/enzymeml/models/__init__.py | 12 - pyenzyme/enzymeml/models/kineticmodel.py | 426 ---- pyenzyme/enzymeml/models/michaelismenten.py | 107 - pyenzyme/enzymeml/tools/__init__.py | 17 - pyenzyme/enzymeml/tools/enzymemlreader.py | 939 --------- pyenzyme/enzymeml/tools/enzymemlwriter.py | 1031 --------- pyenzyme/enzymeml/tools/templatereader.py | 357 ---- pyenzyme/enzymeml/tools/unitcreator.py | 220 -- pyenzyme/enzymeml/tools/unitparser.py | 124 -- pyenzyme/enzymeml/tools/validator.py | 746 ------- pyenzyme/thinlayers/TL_Base.py | 65 - pyenzyme/thinlayers/TL_Copasi.py | 463 ----- pyenzyme/thinlayers/TL_Pysces.py | 375 ---- pyenzyme/thinlayers/TL_Strenda.py | 269 --- pyenzyme/thinlayers/__init__.py | 10 - pyenzyme/utils/__init__.py | 0 pyenzyme/utils/log.py | 73 - pyenzyme/utils/rest_examples.py | 174 -- pyenzyme_server.py | 405 ---- requirements.txt | 23 - setup.py | 64 - tests/enzymeml/__init__.py | 0 tests/enzymeml/core/__init__.py | 0 tests/enzymeml/core/test_abstract_classes.py | 40 - tests/enzymeml/core/test_complex.py | 35 - tests/enzymeml/core/test_creator.py | 31 - tests/enzymeml/core/test_enzymemldocument.py | 286 --- tests/enzymeml/core/test_enzymereaction.py | 402 ---- tests/enzymeml/core/test_measurement.py | 220 -- tests/enzymeml/core/test_measurement_data.py | 80 - tests/enzymeml/core/test_protein.py | 48 - tests/enzymeml/core/test_reactant.py | 44 - tests/enzymeml/core/test_replicate.py | 63 - tests/enzymeml/core/test_vessel.py | 36 - tests/enzymeml/models/__init__.py | 0 tests/enzymeml/models/test_kineticlaw.py | 134 -- tests/enzymeml/tools/__init__.py | 0 tests/enzymeml/tools/test_templatereader.py | 15 - tests/enzymeml/tools/test_unitcreator.py | 250 --- tests/enzymeml/tools/test_validator.py | 198 -- tests/fixtures/EnzymeML_Template_Example.xlsm | Bin 98325 -> 0 bytes tests/fixtures/enzmldoc_object.json | 219 -- tests/fixtures/measurement_data_object.json | 30 - tests/fixtures/measurement_object.json | 82 - tests/fixtures/reaction_object.json | 49 - tests/fixtures/replicate_object.json | 22 - tests/fixtures/template_result.json | 479 ----- tests/fixtures/test_case.omex | Bin 5024 -> 0 bytes tests/fixtures/validator_always_passes.yaml | 710 ------- .../validator_expected_conversion.yaml | 723 ------- tests/fixtures/validator_should_fail.yaml | 712 ------- tests/fixtures/write_xml_string.xml | 144 -- tests/test_tl_copasi.py | 73 - tests/thinlayers/__init__.py | 0 tests/write_test.omex | Bin 4251 -> 0 bytes 78 files changed, 67 insertions(+), 16280 deletions(-) delete mode 100644 .readthedocs.yaml delete mode 100644 Dockerfile delete mode 100644 pyenzyme/enzymeml/__init__.py delete mode 100644 pyenzyme/enzymeml/core/__init__.py delete mode 100644 pyenzyme/enzymeml/core/abstract_classes.py delete mode 100644 pyenzyme/enzymeml/core/complex.py delete mode 100644 pyenzyme/enzymeml/core/creator.py delete mode 100644 pyenzyme/enzymeml/core/enzymemlbase.py delete mode 100644 pyenzyme/enzymeml/core/enzymemldocument.py delete mode 100644 pyenzyme/enzymeml/core/enzymereaction.py delete mode 100644 pyenzyme/enzymeml/core/exceptions.py delete mode 100644 pyenzyme/enzymeml/core/measurement.py delete mode 100644 pyenzyme/enzymeml/core/measurementData.py delete mode 100644 pyenzyme/enzymeml/core/ontology.py delete mode 100644 pyenzyme/enzymeml/core/protein.py delete mode 100644 pyenzyme/enzymeml/core/reactant.py delete mode 100644 pyenzyme/enzymeml/core/replicate.py delete mode 100644 pyenzyme/enzymeml/core/unitdef.py delete mode 100644 pyenzyme/enzymeml/core/utils.py delete mode 100644 pyenzyme/enzymeml/core/vessel.py delete mode 100644 pyenzyme/enzymeml/databases/__init__.py delete mode 100644 pyenzyme/enzymeml/databases/dataverse.py delete mode 100644 pyenzyme/enzymeml/models/__init__.py delete mode 100644 pyenzyme/enzymeml/models/kineticmodel.py delete mode 100644 pyenzyme/enzymeml/models/michaelismenten.py delete mode 100644 pyenzyme/enzymeml/tools/__init__.py delete mode 100644 pyenzyme/enzymeml/tools/enzymemlreader.py delete mode 100644 pyenzyme/enzymeml/tools/enzymemlwriter.py delete mode 100644 pyenzyme/enzymeml/tools/templatereader.py delete mode 100644 pyenzyme/enzymeml/tools/unitcreator.py delete mode 100644 pyenzyme/enzymeml/tools/unitparser.py delete mode 100644 pyenzyme/enzymeml/tools/validator.py delete mode 100644 pyenzyme/thinlayers/TL_Base.py delete mode 100644 pyenzyme/thinlayers/TL_Copasi.py delete mode 100644 pyenzyme/thinlayers/TL_Pysces.py delete mode 100644 pyenzyme/thinlayers/TL_Strenda.py delete mode 100644 pyenzyme/thinlayers/__init__.py delete mode 100644 pyenzyme/utils/__init__.py delete mode 100644 pyenzyme/utils/log.py delete mode 100644 pyenzyme/utils/rest_examples.py delete mode 100644 pyenzyme_server.py delete mode 100644 requirements.txt delete mode 100644 setup.py delete mode 100644 tests/enzymeml/__init__.py delete mode 100644 tests/enzymeml/core/__init__.py delete mode 100644 tests/enzymeml/core/test_abstract_classes.py delete mode 100644 tests/enzymeml/core/test_complex.py delete mode 100644 tests/enzymeml/core/test_creator.py delete mode 100644 tests/enzymeml/core/test_enzymemldocument.py delete mode 100644 tests/enzymeml/core/test_enzymereaction.py delete mode 100644 tests/enzymeml/core/test_measurement.py delete mode 100644 tests/enzymeml/core/test_measurement_data.py delete mode 100644 tests/enzymeml/core/test_protein.py delete mode 100644 tests/enzymeml/core/test_reactant.py delete mode 100644 tests/enzymeml/core/test_replicate.py delete mode 100644 tests/enzymeml/core/test_vessel.py delete mode 100644 tests/enzymeml/models/__init__.py delete mode 100644 tests/enzymeml/models/test_kineticlaw.py delete mode 100644 tests/enzymeml/tools/__init__.py delete mode 100644 tests/enzymeml/tools/test_templatereader.py delete mode 100644 tests/enzymeml/tools/test_unitcreator.py delete mode 100644 tests/enzymeml/tools/test_validator.py delete mode 100644 tests/fixtures/EnzymeML_Template_Example.xlsm delete mode 100644 tests/fixtures/enzmldoc_object.json delete mode 100644 tests/fixtures/measurement_data_object.json delete mode 100644 tests/fixtures/measurement_object.json delete mode 100644 tests/fixtures/reaction_object.json delete mode 100644 tests/fixtures/replicate_object.json delete mode 100644 tests/fixtures/template_result.json delete mode 100644 tests/fixtures/test_case.omex delete mode 100644 tests/fixtures/validator_always_passes.yaml delete mode 100644 tests/fixtures/validator_expected_conversion.yaml delete mode 100644 tests/fixtures/validator_should_fail.yaml delete mode 100644 tests/fixtures/write_xml_string.xml delete mode 100644 tests/test_tl_copasi.py delete mode 100644 tests/thinlayers/__init__.py delete mode 100644 tests/write_test.omex diff --git a/.readthedocs.yaml b/.readthedocs.yaml deleted file mode 100644 index 28246665..00000000 --- a/.readthedocs.yaml +++ /dev/null @@ -1,23 +0,0 @@ -# .readthedocs.yaml -# Read the Docs configuration file -# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details - -# Required -version: 2 - -# Set the version of Python and other tools you might need -build: - os: ubuntu-20.04 - tools: - python: '3.9' - -# Build documentation in the docs/ directory with Sphinx -sphinx: - configuration: docs/conf.py - -# Optionally declare the Python requirements required to build your docs -python: - install: - - requirements: docs/requirements.txt - - method: pip - path: . diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index e2235775..00000000 --- a/Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -FROM python:3.9 -WORKDIR /app - -COPY . /app - -RUN apt-get update \ - && apt-get install -y --no-install-recommends git \ - && apt-get install -y --no-install-recommends gcc \ - && apt-get install -y --no-install-recommends cmake \ - && apt-get purge -y --auto-remove - - -RUN pip3 install git+https://github.com/EnzymeML/PyEnzyme.git -RUN pip3 install fastapi uvicorn jinja2 - -COPY pyenzyme_server.py /app - -CMD ["uvicorn", "pyenzyme_server:app", "--host", "0.0.0.0", "--port", "80"] \ No newline at end of file diff --git a/pyenzyme/__init__.py b/pyenzyme/__init__.py index fc23d642..5006ef40 100644 --- a/pyenzyme/__init__.py +++ b/pyenzyme/__init__.py @@ -1,22 +1,67 @@ -# File: __init__.py -# Project: pyenzyme -# Author: Jan Range -# License: BSD-2 clause -# Copyright (c) 2022 Institute of Biochemistry and Technical Biochemistry Stuttgart - -from pyenzyme.enzymeml.core import EnzymeMLDocument -from pyenzyme.enzymeml.core import Vessel -from pyenzyme.enzymeml.core import Protein -from pyenzyme.enzymeml.core import Complex -from pyenzyme.enzymeml.core import Reactant -from pyenzyme.enzymeml.core import EnzymeReaction -from pyenzyme.enzymeml.core import Measurement -from pyenzyme.enzymeml.core import Replicate -from pyenzyme.enzymeml.core import Creator -from pyenzyme.enzymeml.models import KineticModel -from pyenzyme.utils.log import setup_custom_logger - -import pyenzyme.enzymeml.models - - -__version__ = "1.1.5" +from __future__ import annotations + +import json +from rich import print +from pathlib import Path + +from .model import * # noqa: F403 +from .sbml import to_sbml # noqa: F401 +from .tabular import to_pandas, read_csv, read_excel # noqa: F401 + +__all__ = [ + "load_enzymeml", + "write_enzymeml", + "to_sbml", + "to_pandas", +] + + +def load_enzymeml(path: str) -> EnzymeMLDocument: # noqa: F405 + with open(path) as f: + return EnzymeMLDocument.model_validate_json(f.read()) # noqa: F405 + + +def write_enzymeml(doc: EnzymeMLDocument, path: Path | str | None = None): # noqa: F405 + data = json.loads(doc.model_dump_json(exclude_none=True, by_alias=True)) + data = json.dumps(sort_by_ld(data), indent=2) + + if path is None: + return data + elif isinstance(path, str): + path = Path(path) + + if path.is_dir(): + path = path / "experiment.json" + + with open(path, "w") as f: + f.write(data) + + print(f"\n EnzymeML document written to [green][bold]{path}[/bold][/green]\n") + + +def sort_by_ld(d: dict) -> dict: + keys = sorted(d.keys(), key=_pattern) + data = {} + + for key in keys: + value = d[key] + + if isinstance(value, dict): + data[key] = sort_by_ld(value) + elif isinstance(value, list) and all(isinstance(v, dict) for v in value): + data[key] = [sort_by_ld(v) for v in value] + else: + data[key] = value + + return data + + +def _pattern(s: str): + if s.startswith("@context"): + return 0 + elif s.startswith("@id"): + return 1 + elif s.startswith("@type"): + return 2 + else: + return 3 diff --git a/pyenzyme/enzymeml/__init__.py b/pyenzyme/enzymeml/__init__.py deleted file mode 100644 index 123f1bbb..00000000 --- a/pyenzyme/enzymeml/__init__.py +++ /dev/null @@ -1,18 +0,0 @@ -# File: __init__.py -# Project: enzymeml -# Author: Jan Range -# License: BSD-2 clause -# Copyright (c) 2022 Institute of Biochemistry and Technical Biochemistry Stuttgart - -from pyenzyme.enzymeml.core import EnzymeMLDocument -from pyenzyme.enzymeml.core import Creator -from pyenzyme.enzymeml.core import Vessel -from pyenzyme.enzymeml.core import Protein -from pyenzyme.enzymeml.core import Complex -from pyenzyme.enzymeml.core import Reactant -from pyenzyme.enzymeml.core import EnzymeReaction -from pyenzyme.enzymeml.core import Measurement -from pyenzyme.enzymeml.core import Replicate -from pyenzyme.enzymeml.core import SBOTerm, DataTypes - -from pyenzyme.enzymeml import models diff --git a/pyenzyme/enzymeml/core/__init__.py b/pyenzyme/enzymeml/core/__init__.py deleted file mode 100644 index 55ee360a..00000000 --- a/pyenzyme/enzymeml/core/__init__.py +++ /dev/null @@ -1,19 +0,0 @@ -# File: __init__.py -# Project: core -# Author: Jan Range -# License: BSD-2 clause -# Copyright (c) 2022 Institute of Biochemistry and Technical Biochemistry Stuttgart - -from pyenzyme.enzymeml.core.creator import Creator -from pyenzyme.enzymeml.core.enzymemldocument import EnzymeMLDocument -from pyenzyme.enzymeml.core.protein import Protein -from pyenzyme.enzymeml.core.complex import Complex -from pyenzyme.enzymeml.core.reactant import Reactant -from pyenzyme.enzymeml.core.replicate import Replicate -from pyenzyme.enzymeml.core.unitdef import UnitDef -from pyenzyme.enzymeml.core.vessel import Vessel -from pyenzyme.enzymeml.core.enzymereaction import EnzymeReaction -from pyenzyme.enzymeml.core.enzymemlbase import EnzymeMLBase -from pyenzyme.enzymeml.core.measurementData import MeasurementData -from pyenzyme.enzymeml.core.measurement import Measurement -from pyenzyme.enzymeml.core.ontology import SBOTerm, DataTypes diff --git a/pyenzyme/enzymeml/core/abstract_classes.py b/pyenzyme/enzymeml/core/abstract_classes.py deleted file mode 100644 index 730a3e77..00000000 --- a/pyenzyme/enzymeml/core/abstract_classes.py +++ /dev/null @@ -1,69 +0,0 @@ -# File: creator.py -# Project: core -# Author: Jan Range -# License: BSD-2 clause -# Copyright (c) 2022 Institute of Biochemistry and Technical Biochemistry Stuttgart - -from pydantic import BaseModel, PrivateAttr, validator -from typing import Optional -from abc import ABC, abstractmethod - -from pyenzyme.enzymeml.core.ontology import SBOTerm - - -class AbstractSpeciesDataclass(BaseModel): - """Abstract dataclass to describe an EnzymeML/SBML species.""" - - name: str - meta_id: Optional[str] - id: Optional[str] - vessel_id: str - init_conc: Optional[float] = None - constant: bool - boundary: bool - unit: Optional[str] = None - ontology: SBOTerm - uri: Optional[str] - creator_id: Optional[str] - - # * Private attributes - _unit_id: Optional[str] = PrivateAttr(default=None) - _enzmldoc = PrivateAttr(default=None) - - -class AbstractSpecies(ABC, AbstractSpeciesDataclass): - """Due to inheritance and type-checking issues, the dataclass has to be mixed in.""" - - # ! Validators - @validator("id") - def set_meta_id(cls, id: Optional[str], values: dict): - """Sets the meta ID when an ID is provided""" - - if id: - # Set Meta ID with ID - values["meta_id"] = f"METAID_{id.upper()}" - - return id - - # ! Getters - def unitdef(self): - """Returns the appropriate unitdef if an enzmldoc is given""" - - if not self._enzmldoc: - return None - if not self.unit: - return None - - return self._enzmldoc._unit_dict[self._unit_id] - - -class AbstractSpeciesFactory(ABC): - """ - Factory that returns a specific species instance. - """ - - enzymeml_part: str - - @abstractmethod - def get_species(self, **kwargs) -> AbstractSpecies: - """Return a new species object""" diff --git a/pyenzyme/enzymeml/core/complex.py b/pyenzyme/enzymeml/core/complex.py deleted file mode 100644 index 836587d1..00000000 --- a/pyenzyme/enzymeml/core/complex.py +++ /dev/null @@ -1,119 +0,0 @@ -# File: complex.py -# Project: core -# Author: Jan Range -# License: BSD-2 clause -# Copyright (c) 2022 Institute of Biochemistry and Technical Biochemistry Stuttgart - -import re - -from pydantic import validator, Field -from typing import List, Optional, TYPE_CHECKING -from dataclasses import dataclass - -from pyenzyme.enzymeml.core.enzymemlbase import EnzymeMLBase -from pyenzyme.enzymeml.core.abstract_classes import AbstractSpecies -from pyenzyme.enzymeml.core.exceptions import ParticipantIdentifierError -from pyenzyme.enzymeml.core.ontology import SBOTerm -from pyenzyme.enzymeml.core.utils import ( - type_checking, -) - -if TYPE_CHECKING: # pragma: no cover - static_check_init_args = dataclass -else: - static_check_init_args = type_checking - - -@static_check_init_args -class Complex(EnzymeMLBase, AbstractSpecies): - - name: str = Field( - ..., - description="Name of the complex", - ) - - participants: List[str] = Field( - default_factory=list, - description="Array of IDs the complex contains", - ) - - vessel_id: str = Field( - ..., - description="Identifier of the vessel in which the protein was stored.", - regex=r"v[\d]+", - ) - - init_conc: Optional[float] = Field( - None, description="Initial concentration of the protein.", inclusiveMinimum=0.0 - ) - - unit: Optional[str] = Field( - None, - description="Unit of the proteins intial concentration.", - ) - - constant: bool = Field( - False, - description="Whether the proteins concentration remains constant or not.", - ) - - meta_id: Optional[str] = Field( - None, - description="Unique meta identifier of the protein.", - ) - - id: Optional[str] = Field( - None, description="Unique identifier of the protein.", regex=r"c[\d]+" - ) - - boundary: bool = Field( - False, - description="Whether the protein is under any boundary conditions (SBML Technicality, better leave it to default)", - ) - - ontology: SBOTerm = Field( - SBOTerm.MACROMOLECULAR_COMPLEX, - description="Ontology describing the characteristic of the protein.", - ) - - uri: Optional[str] = Field( - None, - description="URI of the protein.", - ) - - creator_id: Optional[str] = Field( - None, - description="Unique identifier of the author.", - ) - - # ! Validators - @validator("id") - def set_meta_id(cls, id: Optional[str], values: dict): - """Sets the meta ID when an ID is provided""" - - if id: - # Set Meta ID with ID - values["meta_id"] = f"METAID_{id.upper()}" - - return id - - @validator("participants") - def check_reactant_ids(cls, ids: List[str]): - """Checks ID consistency for reactants""" - - for id in ids: - if cls._id_checker(id, r"s[\d]+"): - # Check for reactants - continue - elif cls._id_checker(id, r"p[\d]+"): - # Check for proteins - continue - else: - raise ParticipantIdentifierError(id=id, prefix="s/p") - - return ids - - @staticmethod - def _id_checker(id: str, pattern: str): - """Checks ID pattern""" - return bool(re.match(pattern, id)) diff --git a/pyenzyme/enzymeml/core/creator.py b/pyenzyme/enzymeml/core/creator.py deleted file mode 100644 index 1d76e2bd..00000000 --- a/pyenzyme/enzymeml/core/creator.py +++ /dev/null @@ -1,68 +0,0 @@ -# File: creator.py -# Project: core -# Author: Jan Range -# License: BSD-2 clause -# Copyright (c) 2022 Institute of Biochemistry and Technical Biochemistry Stuttgart - -from pydantic import Field, validator, ValidationError -from typing import TYPE_CHECKING, Optional -from dataclasses import dataclass - -from pyenzyme.enzymeml.core.enzymemlbase import EnzymeMLBase -from pyenzyme.enzymeml.core.utils import type_checking, deprecated_getter - -if TYPE_CHECKING: # pragma: no cover - static_check_init_args = dataclass -else: - static_check_init_args = type_checking - - -@static_check_init_args -class Creator(EnzymeMLBase): - - given_name: str = Field( - ..., - description="Given name of the author or contributor.", - ) - - family_name: str = Field( - ..., - description="Family name of the author or contributor.", - ) - - mail: str = Field( - ..., - description="Email address of the author or contributor.", - ) - - id: Optional[str] = Field( - None, description="Unique identifier of the protein.", regex=r"a[\d]+" - ) - - @validator("given_name", "family_name", "mail", pre=True) - def check_empty_strings(cls, value): - if not value: - raise ValueError( - "An empty string has been provided. Please make sure to provide a valid string." - ) - - return value - - @validator("mail") - def check_mail_consistency(cls, mail): - if len(mail.split("@")) != 2: - raise ValueError(f"{mail} is not a valid mail adress.") - - return mail - - @deprecated_getter("family_name") - def getFname(self) -> str: - return self.family_name - - @deprecated_getter("given_name") - def getGname(self) -> str: - return self.given_name - - @deprecated_getter("mail") - def getMail(self) -> str: - return self.mail diff --git a/pyenzyme/enzymeml/core/enzymemlbase.py b/pyenzyme/enzymeml/core/enzymemlbase.py deleted file mode 100644 index 5bc14948..00000000 --- a/pyenzyme/enzymeml/core/enzymemlbase.py +++ /dev/null @@ -1,134 +0,0 @@ -# File: baseclass.py -# Project: core -# Author: Jan Range -# License: BSD-2 clause -# Copyright (c) 2022 Institute of Biochemistry and Technical Biochemistry Stuttgart - -import json -import logging - -from pydantic import BaseModel -from pyenzyme.utils.log import log_change, log_object - - -logger = logging.getLogger("pyenzyme") - - -class EnzymeMLBase(BaseModel): - class Config: - validate_assignment = True - validate_all = True - - def json(self, indent: int = 2, **kwargs): - return super().json( - indent=indent, - exclude_none=True, - exclude={ - "log": ..., - "file_dict": ..., - "protein_dict": {"Protein": {"__all__": {"_unit_id"}}}, - }, - by_alias=True, - **kwargs, - ) - - @classmethod - def fromJSON(cls, json_string): - return cls.parse_obj(json.loads(json_string)) - - def __setattr__(self, name, value): - """Modified attribute setter to document changes in the EnzymeML document""" - - # TODO Refactor this to spearate methods - - # Check if there is a model that is to be added - if name == "model" and value is not None: - if self._enzmldoc: - value = self.set_kinetic_model( - model=value, reaction=self, enzmldoc=self._enzmldoc - ) - - # Check for changing units and assign a new one - if "unit" in name and not name.startswith("_") and hasattr(self, "_enzmldoc"): - if self._enzmldoc and value: - # When the object has already been assigned to a document - # use this to set and add the new unit - - # Create a new UnitDef and get the ID - new_unit_id = self._enzmldoc._convertToUnitDef(value) - value = self._enzmldoc._unit_dict[new_unit_id]._get_unit_name() - - # Set the unit ID to the object - attr_name = f"_{name}_id" - super().__setattr__(attr_name, new_unit_id) - - # Perform logging of the new attribute to history - old_value = getattr(self, name) - - # Whenever a new ID is assigned, make sure the names are compliant with our standards - if "unit_id" in name and hasattr(self, "_enzmldoc"): - if self._enzmldoc: - unit_name = self._enzmldoc._unit_dict[value]._get_unit_name() - attr_name = name.replace("_id", "")[1::] - super().__setattr__(attr_name, unit_name) - - if ( - isinstance(old_value, list) is False - and name.startswith("_") is False - and name != "id" - and old_value - ): - - if type(self).__name__ != "EnzymeMLDocument": - - try: - log_change( - logger, - type(self).__name__, - getattr(self, "id"), - name, - old_value, - value, - ) - - except AttributeError: - log_change( - logger, - type(self).__name__, - self.get_id(), - name, - old_value, - value, - ) - - # Finally, set the new attribute's value - super().__setattr__(name, value) - - @staticmethod - def set_kinetic_model( - model, - reaction, - enzmldoc, - ) -> None: - """Sets the kinetic model of the reaction and in addition converts all units to UnitDefs. - - Args: - model (KineticModel): Kinetic model that has been derived. - enzmldoc (EnzymeMLDocument): The EnzymeMLDocument that holds the reaction. - """ - - # ID consistency - enzmldoc._check_kinetic_model_ids( - model=model, - ) - - # Unit conversion - enzmldoc._convert_kinetic_model_units(model.parameters, enzmldoc=enzmldoc) - - # Log creator object - log_object(logger, model) - logger.debug( - f"Added {type(model).__name__} '{model.name}' to reaction '{reaction.name}'" - ) - - return model diff --git a/pyenzyme/enzymeml/core/enzymemldocument.py b/pyenzyme/enzymeml/core/enzymemldocument.py deleted file mode 100644 index ca022aee..00000000 --- a/pyenzyme/enzymeml/core/enzymemldocument.py +++ /dev/null @@ -1,1847 +0,0 @@ -# File: enzymemldocument.py -# Project: core -# Author: Jan Range -# License: BSD-2 clause -# Copyright (c) 2022 Institute of Biochemistry and Technical Biochemistry Stuttgart - -import os -import re -import ast -import json -import yaml -import sys -import logging -import pandas as pd -import seaborn as sns -import plotly.express as px - -from pydantic import Field, PrivateAttr, validator, validate_arguments -from typing import Dict, List, Tuple, TYPE_CHECKING, Optional, Union -from dataclasses import dataclass -from io import StringIO - -from pyenzyme.enzymeml.core.enzymemlbase import EnzymeMLBase -from pyenzyme.enzymeml.core.abstract_classes import AbstractSpecies - -from pyenzyme.enzymeml.core.reactant import Reactant -from pyenzyme.enzymeml.core.creator import Creator -from pyenzyme.enzymeml.core.protein import Protein -from pyenzyme.enzymeml.core.complex import Complex -from pyenzyme.enzymeml.core.vessel import Vessel -from pyenzyme.enzymeml.core.unitdef import UnitDef -from pyenzyme.enzymeml.core.measurement import Measurement -from pyenzyme.enzymeml.core.measurementData import MeasurementData -from pyenzyme.enzymeml.core.enzymereaction import EnzymeReaction -from pyenzyme.enzymeml.models.kineticmodel import KineticParameter -from pyenzyme.enzymeml.tools.unitcreator import UnitCreator -from pyenzyme.enzymeml.tools.enzymemlwriter import EnzymeMLWriter -from pyenzyme.enzymeml.tools.templatereader import read_template -from pyenzyme.enzymeml.tools.validator import EnzymeMLValidator - -from pyenzyme.enzymeml.core.ontology import EnzymeMLPart, SBOTerm -from pyenzyme.utils.log import setup_custom_logger, log_object -from pyenzyme.enzymeml.core.exceptions import SpeciesNotFoundError -from pyenzyme.enzymeml.core.utils import type_checking, deprecated_getter - - -if TYPE_CHECKING: # pragma: no cover - static_check_init_args = dataclass -else: - static_check_init_args = type_checking - -# Initialize the logger -logger = logging.getLogger("pyenzyme") - - -@static_check_init_args -class EnzymeMLDocument(EnzymeMLBase): - - name: str = Field( - ..., - description="Title of the EnzymeML Document.", - ) - - level: int = Field( - 3, - description="SBML evel of the EnzymeML XML.", - inclusiveMinimum=1, - inclusiveMaximum=3, - ) - - version: int = Field( - 2, - description="SBML version of the EnzymeML XML.", - ) - - pubmedid: Optional[str] = Field( - None, - description="Pubmed ID reference.", - ) - - url: Optional[str] = Field( - None, - description="Arbitrary type of URL that is related to the EnzymeML document.", - ) - - doi: Optional[str] = Field( - None, - description="Digital Object Identifier of the referenced publication or the EnzymeML document.", - ) - - created: Optional[str] = Field( - None, - description="Date the EnzymeML document was created.", - ) - - modified: Optional[str] = Field( - None, - description="Date the EnzymeML document was modified.", - ) - - creator_dict: Dict[str, Creator] = Field( - alias="creators", - default_factory=dict, - description="Dictionary mapping from creator IDs to creator describing objects.", - ) - - vessel_dict: Dict[str, Vessel] = Field( - alias="vessels", - default_factory=dict, - description="Dictionary mapping from vessel IDs to vessel describing objects.", - ) - - protein_dict: Dict[str, Protein] = Field( - alias="proteins", - default_factory=dict, - description="Dictionary mapping from protein IDs to protein describing objects.", - ) - - complex_dict: Dict[str, Complex] = Field( - alias="complexes", - default_factory=dict, - description="Dictionary mapping from complex IDs to complex describing objects.", - ) - - reactant_dict: Dict[str, Reactant] = Field( - alias="reactants", - default_factory=dict, - description="Dictionary mapping from reactant IDs to reactant describing objects.", - ) - - reaction_dict: Dict[str, EnzymeReaction] = Field( - alias="reactions", - default_factory=dict, - description="Dictionary mapping from reaction IDs to reaction describing objects.", - ) - - measurement_dict: Dict[str, Measurement] = Field( - alias="measurements", - default_factory=dict, - description="Dictionary mapping from measurement IDs to measurement describing objects.", - ) - - file_dict: Dict[str, dict] = Field( - alias="files", - default_factory=dict, - description="Dictionary mapping from protein IDs to protein describing objects.", - ) - - global_parameters: Dict[str, KineticParameter] = Field( - alias="global_parameters", - default_factory=dict, - description="Dictionary mapping from parameter IDs to global kinetic parameter describing objects.", - ) - - log: str = Field( - default="", - ) - - # * Private attributes - _unit_dict: Dict[str, UnitDef] = PrivateAttr(default_factory=dict) - - # ! Validators - @validator("log") - def start_logger(cls, logs: str, values: dict): - """Starts a logger instance for the document""" - - # Initialite the log stream - log_stream = StringIO() - log_stream.write(logs) - - # Initialize the global logger - setup_custom_logger("pyenzyme", log_stream) - - return log_stream - - @validator("pubmedid") - def add_identifier(cls, pubmedid: Optional[str]): - """Adds an identifiers.org link in front of the pubmed ID if not given""" - - if pubmedid is None: - return pubmedid - elif pubmedid.startswith("https://identifiers.org/pubmed:"): - return pubmedid - else: - return "https://identifiers.org/pubmed:" + pubmedid - - # ! Imports and exports - @classmethod - def fromTemplate(cls, path: str): - """Reads an EnzymeML spreadsheet template to an EnzymeMLDocument object. - - Args: - path (str): Path to the EnzymeML spreadsheet template. - - Returns: - EnzymeMLDocument: Resulting EnzymeML document. - """ - - return read_template(path, cls) - - @staticmethod - def fromFile(path: str): - """Initializes an EnzymeMLDocument from an OMEX container." - - Args: - path (Path): Path to the OMEX container. - - Returns: - EnzymeMLDocument: The intialized EnzymeML document. - """ - - from pyenzyme.enzymeml.tools.enzymemlreader import EnzymeMLReader - - return EnzymeMLReader().readFromFile(path) - - @classmethod - def fromJSON(cls, json_string: str): - - # First, use PyDantic to get a raw model - enzmldoc = cls.parse_obj(json.loads(json_string)) - - # Recreate to get unitDefs and logs - nu_enzmldoc = cls( - name=enzmldoc.name, - level=enzmldoc.level, - version=enzmldoc.version, - pubmedid=enzmldoc.pubmedid, - url=enzmldoc.url, - doi=enzmldoc.doi, - created=enzmldoc.created, - modified=enzmldoc.modified, - ) - - # Creators - for creator in enzmldoc.creator_dict.values(): - nu_enzmldoc.addCreator(creator) - - # Vessels - for vessel in enzmldoc.vessel_dict.values(): - nu_enzmldoc.addVessel(vessel) - - # Proteins - for protein in enzmldoc.protein_dict.values(): - nu_enzmldoc.addProtein(protein) - - # Reactants - for reactant in enzmldoc.reactant_dict.values(): - nu_enzmldoc.addReactant(reactant) - - # Complexes - for complex in enzmldoc.complex_dict.values(): - nu_enzmldoc._add_complex(complex) - - # Reactions - for reaction in enzmldoc.reaction_dict.values(): - nu_enzmldoc.addReaction(reaction) - - # Measurements - for measurement in enzmldoc.measurement_dict.values(): - nu_measurement = Measurement( - name=measurement.name, - temperature=measurement.temperature, - temperature_unit=measurement.temperature_unit, - ph=measurement.ph, - global_time_unit=measurement.global_time_unit, - ) - - cls._parse_measurement_data( - measurement, "proteins", nu_measurement, nu_enzmldoc - ) - cls._parse_measurement_data( - measurement, "reactants", nu_measurement, nu_enzmldoc - ) - - nu_enzmldoc.addMeasurement(nu_measurement) - - return nu_enzmldoc - - @staticmethod - def _parse_measurement_data(measurement, key, nu_measurement, enzmldoc): - """Parses measurement data for the fromJSON method""" - - for measurement_data in measurement.species_dict[key].values(): - nu_measurement.addData( - init_conc=measurement_data.init_conc, - unit=measurement_data.unit, - protein_id=measurement_data.protein_id, - reactant_id=measurement_data.reactant_id, - ) - - nu_measurement.addReplicates(measurement_data.replicates, enzmldoc=enzmldoc) - - def toFile(self, path: str, name: Optional[str] = None): - """Saves an EnzymeML document to an OMEX container at the specified path - - Args: - path (Path): Path where the document should be saved. - verbose (PositiveInt, optional): Level of verbosity, in order to print a message and the resulting path. Defaults to 1. - """ - - EnzymeMLWriter().toFile(self, path, name) - - def toXMLString(self): - """Generates an EnzymeML XML string""" - - return EnzymeMLWriter().toXMLString(self) - - @validate_arguments - def uploadToDataverse( - self, - dataverse_name: str, - base_url: Optional[str] = None, - api_token: Optional[str] = None, - ): - """Uploads an EnzymeML document to a Dataverse installation of choice. - - It should be noted, that the environment variables 'DATAVERSE_URL' and 'DATAVERSE_API_TOKEN' - should be given approriately before the upload. If not, tje upload cant be done. - - Args: - dataverse_name (str): Name of the dataverse to upload the EnzymeML document. You can find the name in the link of your dataverse (e.g. https://dataverse.installation/dataverse/{dataverseName}) - base_url (str): Base URL of the dataverse to upload. Defaults to None. If None the URL will be drawn from env vars. - api_token (str): API Token of the dataverse to upload. Defaults to None. If None the API Token will be drawn from env vars. - - """ - - try: - from pyenzyme.enzymeml.databases.dataverse import uploadToDataverse - except ModuleNotFoundError: - raise ModuleNotFoundError( - "PyDaRUS has not been found. Please make sure to install 'pyDaRUS' to use the dataverse upload." - ) - - uploadToDataverse( - enzmldoc=self, - dataverse_name=dataverse_name, - base_url=base_url, - api_token=api_token, - ) - - # ! Utility methods - def visualize( - self, - measurement_ids: List[str] = ["all"], - interactive: bool = False, - use_names: bool = False, - sharey: bool = True, - col_wrap: int = 4, - trendline: bool = False, - width: int = 1000, - height: int = 500, - hovermode: str = "closest", - **kwargs, - ): - """Visualizes either all or selected measurements found in the EnzymeML document as FacetGrid or interactive. - - In order to use this method correctly, make sure to pass nothing to 'measurement_ids' when all meassurements - should be visualised. Otherwise pass a list or string for multiple or single measurements respectively. - - - Args: - measurement_ids (List[str], optional): List of measurements that should be plotted or all. Defaults to ["all"]. - interactive (bool, optional): [description]. Whether to return an interatcive or static plot. Defaults to to False. - use_names (bool, optional): Whether names or IDs should be used. Defaults to False. - sharey (bool, optional): Whether all plots in FacetGrid should share the y-axis. Defaults to True. - col_wrap (int, optional): Specifies in FacetGrid at which number of cols to create a new row. Defaults to 4. - trendline (bool, optional): Whether the plot should include a trendline. Defaults to False. - width (int, optional): Interactive plot width. Defaults to 1000. - height (int, optional): Interactive plot height. Defaults to 500. - hovermode (str, optional): Changes behaviour of hovering. Following options are available ['closest', 'x unified', 'x', 'y', 'y unified']. Defaults to 'closest'. - - Returns: - [type]: [description] - """ - - if isinstance(measurement_ids, str): - measurement_ids = [measurement_ids] - - # Allow for custom templates if specified - if interactive: - kwargs["template"] = "plotly_white" - - df = self.toDataFrame(use_names=use_names, measurement_ids=measurement_ids) - - if interactive: - return self._create_interactive_plot( - df=df, - trendline=trendline, - width=width, - height=height, - hovermode=hovermode, - **kwargs, - ) - - return self._create_facet_grid( - df=df, trendline=trendline, col_wrap=col_wrap, sharey=sharey, **kwargs - ) - - def _create_facet_grid( - self, - df: pd.DataFrame, - col_wrap: int, - sharey: bool, - trendline: bool, - **kwargs, - ): - - # Set up the FacetGrid plot - g = sns.FacetGrid( - df, - col="measurement", - hue="species", - col_wrap=col_wrap, - sharey=sharey, - legend_out=True, - **kwargs, - ) - - if trendline: - g.map(sns.lineplot, "time", "value") - g.map(sns.scatterplot, "time", "value") - g.add_legend( - loc="upper right", - bbox_to_anchor=(0.5, -0.01), - fancybox=True, - shadow=True, - ncol=2, - ) - - return g - - def _create_interactive_plot( - self, - df: pd.DataFrame, - trendline: bool, - width: int, - height: int, - hovermode: str, - **kwargs, - ): - """Visualizes all measurements as an interactive plot based on plotly. Best used in Jupyter Notebooks. - - Args: - trendline (bool, optional): Whether or not an average trendline should be drawn. Defaults to False. - width (int, optional): Plot width. Defaults to 1000. - height (int, optional): Plot height. Defaults to 500. - """ - - if trendline: - kwargs.update({"trendline": "lowess", "trendline_options": {"frac": 0.5}}) - - fig = px.scatter( - df, - x="time", - y="value", - animation_frame="measurement", - color="species", - range_y=[-5, df.value.max() + df.value.std()], - width=width, - height=height, - hover_name="species", - **kwargs, - ) - - fig.update_layout( - legend=dict(orientation="h", yanchor="bottom", y=1.02, xanchor="right", x=1) - ) - - fig.update_layout(hovermode=hovermode) - - return fig - - def toDataFrame( - self, - measurement_ids: List[str] = ["all"], - use_names: bool = False, - ) -> pd.DataFrame: - """Transforms exported measurement data to a single DataFrame - - Args: - measurement_ids (List[str], optional): Measurements to include or all of them. Defaults to ["all"]. - use_names (bool, optional): Wether names or IDs should be used. Defaults to False. - - Returns: - pd.DataFrame: Transformed measurement data. - """ - - # First export all the experimental data - data = self.exportMeasurementData() - - # Reformat the dataframe for a FacetGrid plot - df_plot = [] - for measurement_id, measurement in data.items(): - - if measurement_id not in measurement_ids and measurement_ids != ["all"]: - # Drop discarded measurements - continue - - if use_names: - # Turn ID to name if specified - measurement_id = self.measurement_dict[measurement_id].name - - # Get the dataframe from the data export - exp_data = measurement["data"] - - # Rename to names if specified - columns = [] - for column in exp_data.columns: - if use_names and column not in ["time", "data_unit", "time_unit"]: - columns.append(self.getAny(column).name) - else: - columns.append(column) - - # Reset columns - exp_data.columns = columns - - # Reduce DataFrame to three columns to hue indicidual species - exp_data = pd.melt(exp_data, id_vars=["time"], var_name="species") - exp_data["measurement"] = [measurement_id] * exp_data.shape[0] - - df_plot.append(exp_data) - - # Finally, concatenate all indivdidual datasets - df_plot = pd.concat(df_plot) - - return df_plot - - def unifyMeasurementUnits( - self, kind: str, scale: int, measurement_ids: Union[str, List[str]] = "all" - ) -> None: - """Rescales and unifies the units of either all measurements or those that are provided to the given kind and scale. - - Args: - kind (str): The unit kind from which to rescale. Currently supported: 'mole', 'gram', 'litre'. - scale (int): Decade scale to which the values will be rescaled. - measurement_ids (Union[str, List[str]], optional): Measurements that will be rescaled. Defaults to "all". - """ - - # Transform single strings to list - if isinstance(measurement_ids, str): - measurement_ids = [measurement_ids] - - for measurement_id, measurement in self.measurement_dict.items(): - if measurement_id in measurement_ids or measurement_ids == ["all"]: - measurement.unifyUnits(kind=kind, scale=scale, enzmldoc=self) - - def exportMeasurementData( - self, - measurement_ids: Union[str, List[str]] = "all", - species_ids: Union[str, List[str]] = "all", - proteins: bool = True, - reactants: bool = True, - ) -> Dict[str, Dict[str, Union[Tuple, pd.DataFrame]]]: - """Exports either all replicates present in any measurement or the ones specified via 'species_ids' or 'measurement_ids' - - Args: - measurement_ids (Union[str, List[str]], optional): The measurements from which to export the data. Defaults to "all". - species_ids (Union[str, List[str]], optional): The species from which to export the data. Defaults to "all". - - Returns: - Dict[str, Dict[str, Union[tuple, pd.DataFrame]]]: The data corresponding to the specified options. The dictionary will still distinguish between meassuremnts. - """ - - if proteins is False and reactants is False: - raise ValueError( - "Export of data needs at least one of 'protein' and 'reactants' specified. Otherwise no data can be exported." - ) - - if isinstance(measurement_ids, str): - measurement_ids = [measurement_ids] - if isinstance(species_ids, str): - species_ids = [species_ids] - - # Initialize return list - replicate_data = {} - - for measurement_id, measurement in self.measurement_dict.items(): - if measurement_id in measurement_ids or measurement_ids == ["all"]: - data = measurement.exportData(species_ids=species_ids) - - # Initialize the data dict that will be returned - df = {} - init_conc = {} - - if reactants: - df.update(data["reactants"]["data"].to_dict()) - init_conc.update(data["reactants"]["initConc"]) - if proteins: - df.update(data["proteins"]["data"].to_dict()) - init_conc.update(data["proteins"]["initConc"]) - - replicate_data[measurement_id] = { - "data": pd.DataFrame(df), - "initConc": init_conc, - } - - if len(measurement_ids) == 1 and measurement_ids[0] != "all": - # If its only a single measurement, return it directly - return replicate_data - - return replicate_data - - def exportKineticParameters( - self, exclude_constant: bool = False, as_dataframe: bool = True - ): - """Exports all kinetic parameters found in the EnzymeMLDocument - - Args: - reactions (List[str]): Reactions from which the parameters are to be exported. - - Returns: - Dict: Mapping from parameter name to estimated value - """ - - # Export local parameters - params = [ - {"reaction": reaction.id, **param.dict(exclude={"ontology"})} - for reaction in self.reaction_dict.values() - for param in reaction.model.parameters - if reaction.model and not param.is_global - ] - - # Global parameters - params += [ - {"reaction": "global", **param.dict(exclude={"ontology"})} - for param in self.global_parameters.values() - ] - - # Create param report - param_report = pd.DataFrame(params).set_index("reaction", inplace=False) - - if exclude_constant: - return param_report[param_report.constant == False] - - return param_report - - @staticmethod - def _generateID(prefix: str, dictionary: dict) -> str: - """Generates IDs complying to the [s|p|r|m|u|c]?[digit]+ schema. - - Args: - prefix (str): Character denoting the type of species (p: Protein, s: Reactant, u: UnitDef, r: EnzymeReaction, m: Measurement, c: concentration). - dictionary (dict): The dictionary from which the ID is generated and used to determine the number. - - Returns: - str: Unique internal identifier. - """ - - if dictionary.keys(): - # fetch all keys and sort them - number = int(max(list(dictionary.keys()), key=lambda id: int(id[1::]))[1::]) - return prefix + str(number + 1) - - return prefix + str(0) - - def validateDocument(self, yaml_path: str) -> Tuple[Dict, bool]: - """Validates an EnzymeML based on a given YAML file. - - The YAML file should be compliant with PyEnzymes template found on Github - or generated via the EnzymeMLValidator instance. Ultimately, it can also - be derived from a spreadsheet template, which can also be generated via - the EnzymeMLValidator instance. - - Args: - yaml_path (str): Path to the Validation YAML file - - Returns: - Dict: Report on which fields are incompatible - Bool: Whether or not the document is valid to the given YAML - """ - - validator = EnzymeMLValidator(scheme=yaml.safe_load(open(yaml_path))) - - return validator.validate(self) - - def checkUnitConsistency(self, strict: bool = False, return_report: bool = True): - """Validates unit consistency in an EnzymeMLDocument. - - This method will check whether all (initial) concentration units of a species - are consistent throughout the document. Default mode only requires measurements and - replicates to comply to the species unit. - - This can also be set to 'strict', where any species, measurement, - replicate and parameter has to comply in a global fashion. - To summarise, strict mode checks on: - - - Consistent usage of time - - Consistent concentration units for ALL concentrations - - Consistent volumetric unit including vessels - - Strict mode is of greates importance for kinetic modeling, differing scales - can lead to wrong results. However, the code will still run and only warnings - will be given. - - Args: - strict (bool, optional): Enables strict mode. Defaults to False. - return_report (bool, optional): Whether a report should be returned. Defaults to False. - - Returns: - Dict: Report on which units are inconsistent - Bool: Whether the document is consistent in units - """ - - is_consistent, report = EnzymeMLValidator.check_unit_consistency(self, strict) - - if return_report: - return is_consistent, report - else: - return is_consistent - - def __repr__(self): - """ - Magic function return pretty string describing the object. - - Returns: - string: Beautified summarization of object - """ - - return self.printDocument(stdout=False) - - def printDocument( - self, measurements: bool = False, units: bool = False, stdout: bool = True - ) -> Optional[str]: - """Prints the document's content""" - - fin_string: List[str] - - def generate_lines(dictionary: dict) -> None: - """Breaks up a dictionary and generates a human readible line.""" - for element_id, element in dictionary.items(): - fin_string.append(f"\tID: {element_id} \t Name: {element.name}") - - fin_string = [self.name] - - if units: - fin_string.append(">>> Units") - generate_lines(self._unit_dict) - - fin_string.append(">>> Reactants") - generate_lines(self.reactant_dict) - - fin_string.append(">>> Proteins") - generate_lines(self.protein_dict) - - fin_string.append(">>> Complexes") - generate_lines(self.complex_dict) - - fin_string.append(">>> Reactions") - generate_lines(self.reaction_dict) - - if measurements: - fin_string.append(">>> Measurements") - fin_string.append(self.printMeasurements(stdout=False)) - - output = "\n".join(fin_string) - - if stdout: - print(output) - else: - return output - - def printMeasurements(self, stdout: bool = True): - """Prints an overview of all measurements""" - - schemes = [] - for measurement in self.measurement_dict.values(): - schemes.append(measurement.printMeasurementScheme(stdout=stdout)) - - if not stdout: - return "\n".join(schemes) - - def printReactionSchemes(self, by_name: bool = True): - """Prints all reaction equations to inspect the content""" - - if len(self.reaction_dict) == 0: - print(">> No reactions present in this EnzymeML Document.", file=sys.stderr) - return - - output = [] - - for reaction in self.reaction_dict.values(): - - # Get the equation - equation = reaction.get_reaction_scheme(by_name=by_name, enzmldoc=self) - - if self.in_ipynb(): - output.append( - { - "ID": reaction.id, - "Name": reaction.name, - "equation": equation.split("\n")[1].replace("Equation: ", ""), - "kinetic law": equation.split("\n")[2].replace( - "Model: v = ", "" - ), - } - ) - else: - output.append(equation) - - if self.in_ipynb(): - return pd.DataFrame(output).set_index("ID") - else: - print("\n".join(output)) - - @staticmethod - def in_ipynb(): - """Checks whether in an ipynb or not""" - try: - cfg = get_ipython().config - if get_ipython().__class__.__name__ == "ZMQInteractiveShell": - return True - else: - return False - except NameError: - return False - - def generateInitialValueTemplate(self, dir: str = ".") -> None: - """Generates an initial value template as a YAML file, which can be used for modeling. - - Args: - dir (str, optional): Dirpath to the output file. Defaults to ".". - """ - - init_values = { - "global": { - param.name: { - "initial_value": None, - "constant": param.constant, - "upper": None, - "lower": None, - } - for param in self.global_parameters.values() - } - } - - for reaction in self.reaction_dict.values(): - - if reaction.model is None: - continue - - parameters = { - param.name: { - "initial_value": None, - "constant": param.constant, - "upper": None, - "lower": None, - } - for param in reaction.model.parameters - if param.is_global is False - } - - if parameters: - init_values[reaction.id] = parameters - - # Finally, write the template to YAML - out = os.path.join(dir, self.name.replace(" ", "_") + "_init_values.yaml") - - with open(out, "w") as file_handle: - yaml.dump( - init_values, file_handle, default_flow_style=False, sort_keys=False - ) - - def applyModelInitialization(self, path: str, to_values: bool = False) -> None: - """Adds initial values per reaction to the model from a YAML config file. - - This method loads a YAML that previously generated from the function 'generateInitialValueTemplate' - and was filled with values. These are then used to populate the 'initial_value' fields of KineticParameter objects. - - Args: - path (str): Path to the YAML file containing the initial values. - """ - - # Load the YAML file - with open(path, "r") as file_handle: - initial_values = yaml.safe_load(file_handle) - - # Apply all given initial values to the model - for reaction_id, value_dict in initial_values.items(): - - if reaction_id == "global": - for name, options in value_dict.items(): - if to_values: - self.global_parameters[name].value = options.get( - "initial_value" - ) - - self.global_parameters[name].initial_value = options.get( - "initial_value" - ) - self.global_parameters[name].upper = options.get("upper") - self.global_parameters[name].lower = options.get("lower") - self.global_parameters[name].constant = options.get("constant") - - else: - # Get the reaction - reaction = self.getReaction(reaction_id) - reaction.apply_initial_values(value_dict, to_values=to_values) - - # ! Add methods - - @validate_arguments - def addGlobalParameter( - self, - name: str, - value: Optional[float] = None, - initial_value: Optional[float] = None, - unit: Optional[str] = None, - constant: bool = False, - upper: Optional[float] = None, - lower: Optional[float] = None, - stdev: Optional[float] = None, - ontology: Optional[SBOTerm] = None, - ): - """Adds a global parameter to the model that will be referred by KineticModel objects in reaction models. - - Args: - name (str): Name of the estimated parameter. - value (Optional[float], optional): Numerical value of the estimated parameter. Defaults to None. - initial_value (Optional[float], optional): Initial value that was used for the parameter estimation. Defaults to None. - unit (Optional[str], optional): Unit of the estimated parameter. Defaults to None. - stdev (Optional[float], optional): Standard deviation of the estimated parameter. Defaults to None. - ontology (Optional[SBOTerm], optional): Type of the estimated parameter. Defaults to None. - - Returns: - str: Name of the parameter that has been added. - """ - - param = KineticParameter( - name=name, - value=value, - unit=unit, - stdev=stdev, - initial_value=initial_value, - ontology=ontology, - is_global=True, - constant=constant, - upper=upper, - lower=lower, - ) - - if param.unit: - param._unit_id = self._convertToUnitDef(param.unit) - param.unit = self._unit_dict[param._unit_id]._get_unit_name() - - # Assign the current EnzymeMLDocument - param._enzmldoc = self - - # Add the parameter to the parameter_dict - self.global_parameters[param.name] = param - - return param.name - - @validate_arguments - def addCreator(self, creator: Creator, log: bool = True) -> str: - """Adds a creator object to the EnzymeML document. - - Args: - creator (Creator): Creator object to be added to the document. - - Returns: - str: Unique internal identifier of the creator. - """ - - # Generate ID - creator.id = self._generateID(prefix="a", dictionary=self.creator_dict) - - # Add to the document - self.creator_dict[creator.id] = creator - - if log: - # Log creator object - log_object(logger, creator) - logger.debug( - f"Added {type(creator).__name__} ({creator.id}) '{creator.family_name}' to document '{self.name}'" - ) - - return creator.id - - @validate_arguments - def addVessel(self, vessel: Vessel, use_parser: bool = True) -> str: - """Adds a Vessel object to the EnzymeML document. - - Args: - vessel (Vessel): Vessel object to be added to the document. - use_parser (bool, optional): Whether to user the unit parser or not. Defaults to True. - - Returns: - str: Unique internal identifier of the reactant. - """ - - return self._addSpecies( - species=vessel, - prefix="v", - dictionary=self.vessel_dict, - use_parser=use_parser, - ) - - @validate_arguments - def addReactant(self, reactant: Reactant, use_parser: bool = True) -> str: - """Adds a Reactant object to the EnzymeML document. - - Args: - reactant (Reactant): Reactant object to be added to the document. - use_parser (bool, optional): Whether to user the unit parser or not. Defaults to True. - - Returns: - str: Unique internal identifier of the reactant. - """ - - return self._addSpecies( - species=reactant, - prefix="s", - dictionary=self.reactant_dict, - use_parser=use_parser, - ) - - @validate_arguments - def addProtein(self, protein: Protein, use_parser: bool = True) -> str: - """Adds a Protein object to the EnzymeML document. - - Args: - protein (Protein): Protein object to be added to the document. - use_parser (bool, optional): Whether to user the unit parser or not. Defaults to True. - - Returns: - str: Unique internal identifier of the protein. - """ - - return self._addSpecies( - species=protein, - prefix="p", - dictionary=self.protein_dict, - use_parser=use_parser, - ) - - @validate_arguments - def _add_complex(self, complex: Complex, use_parser: bool = True) -> str: - """Adds a Complex object to the EnzymeML document. - - Args: - complex (Complex): Complex object to be added to the document. - use_parser (bool, optional): Whether to user the unit parser or not. Defaults to True. - - Returns: - str: Unique internal identifier of the complex. - """ - - return self._addSpecies( - species=complex, - prefix="c", - dictionary=self.complex_dict, - use_parser=use_parser, - ) - - @validate_arguments - def addComplex( - self, - name: str, - participants: List[str], - vessel_id: str, - init_conc: Optional[float] = None, - unit: Optional[str] = None, - ): - - # First convert all participants given as name to IDs - participants = [self.getAny(participant).id for participant in participants] - - return self._add_complex( - Complex( - name=name, - participants=participants, - vessel_id=vessel_id, - init_conc=init_conc, - unit=unit, - ) - ) - - def _addSpecies( - self, - species: Union[AbstractSpecies, Vessel], - prefix: str, - dictionary: dict, - use_parser: bool = True, - log: bool = True, - ) -> str: - """Helper function to add any specific species to the EnzymeML document. - - Args: - species (AbstractSpecies): Species that is about to be added to the EnzymeML document. - prefix (str): Character that is used to generate a unique internal identifier. - dictionary (dict): The dictionary where the species will be added to. - use_parser (bool, optional): Whether to user the unit parser or not. Defaults to True. - - Returns: - str: The internal identifier of the species. - """ - - # Generate ID - species.id = self._generateID(prefix=prefix, dictionary=dictionary) - species.meta_id = f"METAID_{species.id.upper()}" - - # Update unit to UnitDefID - if species.unit and use_parser: - unit_id = self._convertToUnitDef(species.unit) - species._unit_id = unit_id - species.unit = self._unit_dict[species._unit_id]._get_unit_name() - - elif species.unit and use_parser is False: - species._unit_id = species.unit - species.unit = self.getUnitString(species._unit_id) - species.unit = self._unit_dict[species._unit_id]._get_unit_name() - - # Log creation of the object - log_object(logger, species) - - # Finally, set the current document to the - # object attribute _enzmldoc to allow unit changes - species._enzmldoc = self - - # Add species to dictionary - dictionary[species.id] = species - - # Log the addition - if log: - logger.debug( - f"Added {type(species).__name__} ({species.id}) '{species.name}' to document '{self.name}'" - ) - - return species.id - - def addReaction(self, reaction: EnzymeReaction, use_parser: bool = True) -> str: - """ - Adds EnzymeReaction object to EnzymeMLDocument object. - Automatically assigns ID and converts units. - - Args: - reaction (EnzymeReaction): Object describing reaction - use_parser (bool, optional): If set True, will use - internal unit parser. - Defaults to True. - - Returns: - string: Internal identifier for the reaction. - Use it for other objects! - """ - - # Generate ID - reaction.id = self._generateID("r", self.reaction_dict) - reaction.meta_id = f"METAID_{reaction.id.upper()}" - - if use_parser and reaction.temperature: - # Reset temperature for SBML compliance to Kelvin - reaction.temperature = ( - reaction.temperature + 273.15 - if re.match(r"^c|celsius", reaction.temperature_unit.lower()) - else reaction.temperature - ) - - # Generate internal ID for the unit - reaction._temperature_unit_id = self._convertToUnitDef( - reaction.temperature_unit - ) - elif reaction.temperature: - # Set the temperature unit to the actual string - reaction._temperature_unit_id = reaction.temperature_unit - reaction.temperature_unit = self.getUnitString(reaction.temperature_unit) - - # Set model units and check for consistency - if reaction.model: - # ID consistency - self._check_kinetic_model_ids(model=reaction.model) - - # Reference global parameters - self._reference_global_parameters(model=reaction.model) - - # Unit conversion - self._convert_kinetic_model_units(reaction.model.parameters, enzmldoc=self) - - # Finally add the reaction to the document and assign the doc - reaction._enzmldoc = self - self.reaction_dict[reaction.id] = reaction - - # Log the object - log_object(logger, reaction) - logger.debug( - f"Added {type(reaction).__name__} ({reaction.id}) '{reaction.name}' to document '{self.name}'" - ) - - return reaction.id - - def _check_kinetic_model_ids(self, model) -> None: - """Checks if the given species IDs/names are consistent with the EnzymeML document. Also converts names into IDs, if given in the document. - - Args: - equation (str): The rate law given in the KineticModel - """ - - # Get all the params of the model to distinguis params from names - all_params = [param.name for param in model.parameters] - - for node in ast.walk(ast.parse(model.equation)): - - if isinstance(node, ast.Constant): - # If the equation was generated via the ModelFactory - if isinstance(node.value, str): - name = repr(node.value) - else: - # Numeric constants are ignored now - continue - - elif isinstance(node, ast.Str): - # Python 3.7 compatibility since ast.Constant is ast.Str here - name = node.s - - elif isinstance(node, ast.Name): - # If the equation has been done manually - name = node.id - if name in all_params: - # If its a parameter - continue - else: - continue - - if name not in self.getSpeciesIDs(): - - try: - # Try to get by name and substitute in equation - species_id = self.getAny( - name.replace("'", ""), - ).id - - if not name.startswith("'"): - name = f"'{name}'" - - model.equation = model.equation.replace(name, species_id) - except StopIteration: - # If neither name or ID is found, raise Error - raise SpeciesNotFoundError( - enzymeml_part="Kinetic Model", species_id=name - ) - - elif not bool(re.match(r"'[a-zA-Z\d]*'", name)): - quoted = f"'{name}'" - model.equation = model.equation.replace(quoted, name) - - def _reference_global_parameters(self, model): - """Removes single parameters and references global parameters if names match""" - - nu_parameters = [] - for parameter in model.parameters: - name = parameter.name - if name in self.global_parameters: - nu_parameters.append(self.global_parameters[name]) - else: - nu_parameters.append(parameter) - - model.parameters = nu_parameters - - @staticmethod - def _convert_kinetic_model_units( - parameters: List[KineticParameter], enzmldoc - ) -> None: - """Converts given unit strings to unit IDs and adds them to the model. - - Args: - parameters (List[KineticParameter]): List of all kinetic parameters. - enzmldoc ([type]): Used to convert unit strings to unit IDs. - """ - - for parameter in parameters: - if parameter.unit: - parameter._unit_id = enzmldoc._convertToUnitDef(parameter.unit) - parameter.unit = enzmldoc._unit_dict[ - parameter._unit_id - ]._get_unit_name() - parameter._enzmldoc = enzmldoc - - def addReactions(self, reactions: List[EnzymeReaction]): - """Adds multiple reactions to an EnzymeML document. - - Args: - reactions (List[EnzymeReaction]): List of EnzymeReaction objects - """ - - return {reaction.name: self.addReaction(reaction) for reaction in reactions} - - def addFile(self, filepath=None, file_handle=None, description="Undefined") -> str: - """Adds any arbitrary file to the document. Please note, that if a filepath is given, any file_handle will be ignored. - - Args: - filepath (str, optional): Path to the file that is added to the document. Defaults to None. - file_handle (io.BufferedReader, optional): File handle that will be read to a bytes string. Defaults to None. - - Returns: - str: Internal identifier for the file. - """ - - # Generate a unique identifier for the file - file_id = self._generateID("f", self.file_dict) - - if filepath: - # Open file handle - file_handle = open(filepath, "rb") - elif filepath is None and file_handle is None: - raise ValueError("Please specify either a file path or a file handle") - - # Finally, add the file and close the handler - self.file_dict[file_id] = { - "name": os.path.basename(file_handle.name), - "handler": file_handle, - "description": description, - } - - return file_id - - @validate_arguments - def addMeasurement(self, measurement: Measurement) -> str: - """Adds a measurement to an EnzymeMLDocument and validates consistency with already defined elements of the document. - - Args: - measurement (Measurement): Collection of data and initial concentrations per reaction - - Returns: - measurement_id (String): Assigned measurement identifier. - """ - - # Assign the current EnzymeMLDocument to - # propagate towards sub-elements such - # that unit changes can be done comliant - # to UnitDefinitions - measurement._enzmldoc = self - - # Check consistency - self._checkMeasurementConsistency(measurement) - - # Convert all measurement units to UnitDefs - self._convertMeasurementUnits(measurement) - - # Generate the ID and add it to the dictionary - measurement.id = self._generateID(prefix="m", dictionary=self.measurement_dict) - - # Update measurement ID to all replicates - protein_data = measurement.species_dict["proteins"] - reactant_data = measurement.species_dict["reactants"] - - self._updateReplicateMeasurementIDs(protein_data, measurement.id) - self._updateReplicateMeasurementIDs(reactant_data, measurement.id) - - # Add it to the EnzymeMLDocument - self.measurement_dict[measurement.id] = measurement - - # Log the object - log_object(logger, measurement) - logger.debug( - f"Added {type(measurement).__name__} ({measurement.id}) '{measurement.name}' to document '{self.name}'" - ) - - return measurement.id - - def _convertMeasurementUnits(self, measurement: Measurement) -> None: - """Converts string SI units to UnitDef objects and IDs - - Args: - measurement (Measurement): Object defining a measurement - """ - - # Update global time of the measurement - if measurement.global_time: - measurement._global_time_unit_id = self._convertToUnitDef( - measurement.global_time_unit - ) - - # Set correct string - measurement.global_time_unit = self._unit_dict[ - measurement._global_time_unit_id - ]._get_unit_name() - - # Update temperature unit of the measurement - if measurement.temperature_unit: - measurement._temperature_unit_id = self._convertToUnitDef( - measurement.temperature_unit - ) - - # Set correct string - measurement.temperature_unit = self._unit_dict[ - measurement._temperature_unit_id - ]._get_unit_name() - - def update_dict_units( - measurement_data_dict: Dict[str, MeasurementData], measurement: Measurement - ) -> None: - """Helper function to update units and assignment of the coupled EnzymeMLDocument""" - for measurement_data in measurement_data_dict.values(): - - # Assign the measurements enzmldoc - measurement_data._enzmldoc = measurement._enzmldoc - - measurement_data._unit_id = self._convertToUnitDef( - measurement_data.unit - ) - - global_time = self._convertReplicateUnits(measurement_data) - - if global_time: - measurement.global_time = global_time - - # Perform update - update_dict_units(measurement.species_dict["proteins"], measurement) - update_dict_units(measurement.species_dict["reactants"], measurement) - - def _convertReplicateUnits( - self, measurement_data: MeasurementData - ) -> Optional[List[float]]: - """Converts replicate unit strings to unit definitions. - - Args: - measurement_data (MeasurementData): Object holding measurement data for a species - """ - - # TODO verify globally global time - global_time = None - - for replicate in measurement_data.replicates: - - # Assign the EnzymeML document for compliant changes - # of units when already added to the document - replicate._enzmldoc = measurement_data._enzmldoc - - # Convert unit - time_unit_id = self._convertToUnitDef(replicate.time_unit) - data_unit_id = self._convertToUnitDef(replicate.data_unit) - - # Assign unit IDs - replicate._data_unit_id = data_unit_id - replicate._time_unit_id = time_unit_id - - global_time = replicate.time - - return global_time - - def _updateReplicateMeasurementIDs( - self, measurement_data_dict: Dict[str, MeasurementData], measurement_id: str - ): - """Updates the measurement IDs of replicates.""" - for measurement_data in measurement_data_dict.values(): - measurement_data.measurement_id = measurement_id - replicates = measurement_data.replicates - for replicate in replicates: - replicate.measurement_id = measurement_id - - def _checkMeasurementConsistency(self, measurement: Measurement) -> None: - """Checks if the used species in the measurement are consistent with the EnzymeML document. - - Args: - measurement (MeasurementData): Objech holding measurement data for a species. - """ - - map(self._checkSpecies, measurement.species_dict["reactants"]) - map(self._checkSpecies, measurement.species_dict["proteins"]) - - def _checkSpecies(self, species_id): - """Checks if a species is defined in the EnzymeML document. - - Args: - species_id (str): Unique identifier of the species. - - Raises: - SpeciesNotFoundError: Raised when a species is not defined in the EnzymeML document. - """ - - all_species = {**self.reactant_dict, **self.protein_dict, **self.complex_dict} - - if species_id not in all_species.keys(): - - # Retrieve species for ontology - species = self._getSpecies( - id=species_id, - dictionary=all_species, - element_type="Proteins/Reactants/Complexes", - ) - - # Use the EnzymeMLPart Enum to derive the correct place - sbo_term = SBOTerm(species.__dict__["ontology"]).name - enzymeml_part = EnzymeMLPart.partFromSBOTerm(sbo_term) - - # Raise an error if the species is nowhere present - raise SpeciesNotFoundError( - species_id=species_id, enzymeml_part=enzymeml_part - ) - - def _convertToUnitDef(self, unit: Optional[str]) -> str: - """Reads an SI unit string and converts it into a EnzymeML compatible UnitDef - - Args: - unit (str): String representing the SI unit. - - Returns: - str: Unique identifier of the UnitDef. - """ - - if unit is None: - raise TypeError("No unit given.") - elif unit in self._unit_dict.keys(): - return unit - - return UnitCreator().getUnit(unit, self) - - # ! Getter methods - def getSpeciesIDs(self) -> List[str]: - return list( - {**self.protein_dict, **self.reactant_dict, **self.complex_dict}.keys() - ) - - def getUnitString(self, unit_id: Optional[str]) -> str: - """Return the unit name corresponding to the given unit ID. - - Args: - unit_id (str): Unique internal ID of the unit. - - Raises: - SpeciesNotFoundError: Raised when the requested unit is not found. - - Returns: - str: String representation of the unit. - """ - - if unit_id is None: - raise TypeError("No unit given.") - - try: - return self._unit_dict[unit_id].name - except KeyError: - raise SpeciesNotFoundError(species_id=unit_id, enzymeml_part="Units") - - def getUnitDef(self, id: str) -> UnitDef: - """Returns the unit associated with the given ID. - - Args: - id (str): Unique internal ID of the unit. - - Raises: - SpeciesNotFoundError: Raised when the requested unit is not found. - - Returns: - UnitDef: The corresponding unit object. - """ - - return self._getSpecies( - id=id, - dictionary=self._unit_dict, - element_type="Units", - ) - - def getVessel(self, id: str) -> Vessel: - """Returns the vessel associated with the given ID. - - Args: - id (str): Unique internal ID of the vessel. - - Raises: - SpeciesNotFoundError: Raised when the requested vessel is not found. - - Returns: - Vessel: The corresponding unit object. - """ - - return self._getSpecies( - id=id, - dictionary=self.vessel_dict, - element_type="Vessels", - ) - - def getReaction(self, id: str) -> EnzymeReaction: - """Returns the reaction associated with the given ID. - - Args: - id (str): Unique internal ID of the reaction. - - Raises: - SpeciesNotFoundError: Raised when the requested reaction is not found. - - Returns: - EnzymeReaction: The corresponding reaction object. - """ - - return self._getSpecies( - id=id, - dictionary=self.reaction_dict, - element_type="EnzymeReaction", - ) - - def getMeasurement(self, id: str) -> Measurement: - """Returns the measurement associated with the given ID. - - Args: - id (str): Unique internal ID of the measurement. - - Raises: - SpeciesNotFoundError: Raised when the requested measurement is not found. - - Returns: - Measurement: The corresponding measurement object. - """ - - return self._getSpecies( - id=id, - dictionary=self.measurement_dict, - element_type="Measurement", - ) - - def getReactant(self, id: str) -> Reactant: - """Returns the reactant associated with the given ID. - - Args: - id (str): Unique internal ID of the reactant. - - Raises: - SpeciesNotFoundError: Raised when the requested reactant is not found. - - Returns: - Reactant: The corresponding reactant object. - """ - - return self._getSpecies( - id=id, - dictionary=self.reactant_dict, - element_type="Reactant", - ) - - def getProtein(self, id: str) -> Protein: - """Returns the protein associated with the given ID. - - Args: - id (str): Unique internal ID of the protein. - - Raises: - SpeciesNotFoundError: Raised when the requested protein is not found. - - Returns: - Protein: The corresponding protein object. - """ - - return self._getSpecies( - id=id, - dictionary=self.protein_dict, - element_type="Protein", - ) - - def getFile(self, id: str, by_id: bool = True) -> dict: - """Returns the file associated with the given ID. - - Args: - id (str): Unique internal ID of the file. - - Raises: - SpeciesNotFoundError: Raised when the requested file is not found. - - Returns: - Dict[str, dict]: The corresponding file object. - """ - - if by_id: - return self.file_dict[id] - else: - return next( - filter(lambda file: file["name"] == id, self.file_dict.values()) - ) - - def getAny(self, id: str) -> AbstractSpecies: - """Returns anything associated with the given ID. - - Args: - id (str): Unique internal ID of the object. - - Raises: - SpeciesNotFoundError: Raised when the requested object is not found. - - Returns: - Dict[str, dict]: The corresponding file object. - """ - - all_dicts = { - **self._unit_dict, - **self.vessel_dict, - **self.reactant_dict, - **self.protein_dict, - **self.complex_dict, - **self.reaction_dict, - } - - return self._getSpecies( - id=id, - dictionary=all_dicts, - element_type="Document", - ) - - def _getSpecies( - self, - id: str, - dictionary: dict, - element_type: str, - ): - """Helper function to retrieve any kind of species from the EnzymeML document. - - Args: - id (str): Unique internal ID. - dictionary (dict): Dictionary that stores all objects. - element_type (str): Type of object that is in the dictionary. - - Raises: - SpeciesNotFoundError: Raised when the requested species is not found. - - Returns: - Union[ AbstractSpecies, EnzymeReaction, Measurement ]: The requested object - """ - - for attr in ["id", "name"]: - species = self._search_object(value=id, attr=attr, dictionary=dictionary) - - if species: - return species - - raise SpeciesNotFoundError(species_id=id, enzymeml_part=element_type) - - def _search_object(self, value, attr: str, dictionary: dict): - """Filters a given dictionary for an attributes and returns it if found. - - Args: - value ([type]): Term that is searched for. - attr (str): Corresponding attribute to look for. - dictionary (dict): Dictionary that si searched. - - Returns: - AbstractSpecies: Species from the EnzymeML document. - """ - - try: - # Filter the dict for the desired species - return next( - filter(lambda obj: obj.__dict__[attr] == value, dictionary.values()) - ) - except StopIteration: - return None - - def getReactantList(self) -> List[Reactant]: - """Returns a list of all reactants in the EnzymeML document." - - Returns: - List[Reactant]: List of all reactants in the EnzymeML document. - """ - return self._getSpeciesList(self.reactant_dict) - - def getProteinList(self) -> List[Protein]: - """Returns a list of all proteins in the EnzymeML document." - - Returns: - List[Protein]: List of all proteins in the EnzymeML document. - """ - return self._getSpeciesList(self.protein_dict) - - def getReactionList(self) -> List[EnzymeReaction]: - """Returns a list of all reactions in the EnzymeML document." - - Returns: - List[EnzymeReaction]: List of all reactions in the EnzymeML document. - """ - return self._getSpeciesList(self.reaction_dict) - - def getFilesList(self): - """Returns a list of all files in the EnzymeML document." - - Returns: - List[dict]: List of all files in the EnzymeML document. - """ - return self._getSpeciesList(self.file_dict) - - @staticmethod - def _getSpeciesList(dictionary: dict) -> list: - """Helper function to retrieve lists of dicitonary objects - - Args: - dictionary (dict): Dictionary of corresponding elements - - Returns: - list: Returns all values in the dictionary - """ - return list(dictionary.values()) - - @deprecated_getter("doi") - def getDoi(self) -> Optional[str]: - return self.doi - - @deprecated_getter("pubmedid") - def getPubmedID(self) -> Optional[str]: - return self.pubmedid - - @deprecated_getter("url") - def getUrl(self) -> Optional[str]: - return self.url - - @deprecated_getter("created") - def get_created(self): - return self.created - - @deprecated_getter("modified") - def getModified(self): - return self.modified - - @deprecated_getter("creators") - def getCreator(self): - return self.creator_dict - - @deprecated_getter("name") - def getName(self): - return self.name - - @deprecated_getter("level") - def getLevel(self): - return self.level - - @deprecated_getter("version") - def getVersion(self): - return self.version - - @deprecated_getter("protein_dict") - def getProteinDict(self): - return self.protein_dict - - @deprecated_getter("reactant_dict") - def getReactantDict(self): - return self.reactant_dict - - @deprecated_getter("reaction_dict") - def getReactionDict(self): - return self.reaction_dict - - @deprecated_getter("measurement_dict") - def getMeasurementDict(self): - return self.measurement_dict - - @deprecated_getter("unit_dict") - def getUnitDict(self): - return self._unit_dict - - @deprecated_getter("file_dict") - def getFileDict(self): - return self.file_dict diff --git a/pyenzyme/enzymeml/core/enzymereaction.py b/pyenzyme/enzymeml/core/enzymereaction.py deleted file mode 100644 index a09ffcf5..00000000 --- a/pyenzyme/enzymeml/core/enzymereaction.py +++ /dev/null @@ -1,732 +0,0 @@ -# File: enzymereaction.py -# Project: core -# Author: Jan Range -# License: BSD-2 clause -# Copyright (c) 2022 Institute of Biochemistry and Technical Biochemistry Stuttgart - -import logging -import re -import ast - -from typing import List, Dict, Union, Optional, TYPE_CHECKING -from dataclasses import dataclass -from pydantic import ( - BaseModel, - PositiveFloat, - validate_arguments, - Field, - PrivateAttr, - validator, -) - -from pyenzyme.enzymeml.core.enzymemlbase import EnzymeMLBase -from pyenzyme.enzymeml.models.kineticmodel import KineticModel -from pyenzyme.enzymeml.core.ontology import SBOTerm -from pyenzyme.enzymeml.core.exceptions import ( - SpeciesNotFoundError, -) - -from pyenzyme.utils.log import log_object -from pyenzyme.enzymeml.core.utils import type_checking, deprecated_getter - -if TYPE_CHECKING: # pragma: no cover - static_check_init_args = dataclass -else: - static_check_init_args = type_checking - -# Initialize the logger -logger = logging.getLogger("pyenzyme") - - -@static_check_init_args -class ReactionElement(BaseModel): - """Describes an element of a chemical reaction.""" - - species_id: str = Field( - ..., - description="Internal identifier to either a protein or reactant defined in the EnzymeMLDocument.", - ) - - stoichiometry: PositiveFloat = Field( - ..., - description="Positive float number representing the associated stoichiometry.", - ) - - constant: bool = Field( - ..., - description="Whether or not the concentration of this species remains constant.", - ) - - ontology: SBOTerm = Field( - ..., - description="Ontology defining the role of the given species.", - ) - - def get_id(self) -> str: - """Internal usage to get IDs from objects without ID attribute""" - - if self.species_id: - return self.species_id - else: - raise AttributeError("No species ID given.") - - -@static_check_init_args -class EnzymeReaction(EnzymeMLBase): - """ - Describes an enzyme reaction by combining already defined - reactants/proteins of an EnzymeML document. In addition, - this class provides ways to integrate reaction conditions - as well. It is also possible to add a kinetic law to this - object by using the KineticModel class. - """ - - name: str = Field(..., description="Name of the reaction.", template_alias="Name") - - reversible: bool = Field( - ..., - description="Whether the reaction is reversible or irreversible", - template_alias="Reversible", - ) - - temperature: Optional[float] = Field( - None, - description="Numeric value of the temperature of the reaction.", - template_alias="Temperature value", - ) - - temperature_unit: Optional[str] = Field( - None, - description="Unit of the temperature of the reaction.", - regex=r"kelvin|Kelvin|k|K|celsius|Celsius|C|c", - template_alias="Temperature unit", - ) - - ph: Optional[float] = Field( - None, - description="PH value of the reaction.", - template_alias="pH value", - inclusiveMinimum=0, - inclusiveMaximum=14, - ) - - ontology: SBOTerm = Field( - SBOTerm.BIOCHEMICAL_REACTION, - description="Ontology defining the role of the given species.", - ) - - meta_id: Optional[str] = Field( - None, - description="Unique meta identifier for the reaction.", - ) - - id: Optional[str] = Field( - None, - description="Unique identifier of the reaction.", - template_alias="ID", - regex=r"r[\d]+", - ) - - uri: Optional[str] = Field( - None, - description="URI of the reaction.", - ) - - creator_id: Optional[str] = Field( - None, - description="Unique identifier of the author.", - ) - - model: Optional[KineticModel] = Field( - None, - description="Kinetic model decribing the reaction.", - ) - - educts: List[ReactionElement] = Field( - default_factory=list, - description="List of educts containing ReactionElement objects.", - template_alias="Educts", - ) - - products: List[ReactionElement] = Field( - default_factory=list, - description="List of products containing ReactionElement objects.", - template_alias="Products", - ) - - modifiers: List[ReactionElement] = Field( - default_factory=list, - description="List of modifiers (Proteins, snhibitors, stimulators) containing ReactionElement objects.", - template_alias="Modifiers", - ) - - # * Private attributes - _temperature_unit_id: str = PrivateAttr(None) - _enzmldoc = PrivateAttr(default=None) - - # ! Validators - @validator("id") - def set_meta_id(cls, id: Optional[str], values: dict): - """Sets the meta ID when an ID is provided""" - - if id: - # Set Meta ID with ID - values["meta_id"] = f"METAID_{id.upper()}" - - return id - - @validator("temperature_unit") - def convert_temperature_unit(cls, unit, values): - """Converts celsius to kelvin due to SBML limitations""" - - if unit: - if unit.lower() in ["celsius", "c"]: - values["temperature"] = values["temperature"] + 273.15 - return "K" - - return unit - - # ! Getters - def getEduct(self, id: str) -> ReactionElement: - """ - Returns a ReactionElement including information about the following properties: - - - Reactant/Protein Identifier - - Stoichiometry of the element - - Whether or not the element's concentration is constant - - Args: - id (string): Reactant/Protein ID - - Raises: - SpeciesNotFoundError: If species ID is unfindable - - Returns: - ReactionElement: Object including species ID, stoichiometry, constant) - """ - - return self._getReactionElement( - id=id, element_list=self.educts, element_type="Educts" - ) - - def getProduct(self, id: str) -> ReactionElement: - """ - Returns a ReactionElement including information about the following properties: - - - Reactant/Protein Identifier - - Stoichiometry of the element - - Whether or not the element's concentration is constant - - Args: - id (string): Reactant/Protein ID - - Raises: - SpeciesNotFoundError: If species ID is unfindable - - Returns: - ReactionElement: Object including species ID, stoichiometry, constant) - """ - - return self._getReactionElement( - id=id, element_list=self.products, element_type="Products" - ) - - def getModifier(self, id: str) -> ReactionElement: - """ - Returns a ReactionElement including information about the following properties: - - - Reactant/Protein Identifier - - Stoichiometry of the element - - Whether or not the element's concentration is constant - - Args: - id (string): Reactant/Protein ID - - Raises: - SpeciesNotFoundError: If species ID is unfindable - - Returns: - ReactionElement: Object including species ID, stoichiometry, constant) - """ - - return self._getReactionElement( - id=id, element_list=self.modifiers, element_type="Modifiers" - ) - - @validate_arguments - def _getReactionElement( - self, - id: str, - element_list: List[ReactionElement], - element_type: str, - ) -> ReactionElement: - - try: - return next(filter(lambda element: element.species_id == id, element_list)) - except StopIteration: - raise SpeciesNotFoundError(species_id=id, enzymeml_part=element_type) - - # ! Adders - @validate_arguments - def addEduct( - self, - species_id: str, - stoichiometry: PositiveFloat, - enzmldoc, - constant: bool = False, - ontology: SBOTerm = SBOTerm.SUBSTRATE, - ) -> None: - """ - Adds element to EnzymeReaction object. Replicates as well - as initial concentrations are optional. - - Args: - species_id: str (string): Reactant/Protein ID - Needs to be pre-defined! - stoichiometry (float): Stoichiometric coefficient - constant: (bool): Whether constant or not - enzmldoc (EnzymeMLDocument): Checks and adds IDs - - Raises: - SpeciesNotFoundError: If Reactant/Protein hasnt been defined yet - """ - - self._addElement( - species_id=species_id, - stoichiometry=stoichiometry, - constant=constant, - element_list=self.educts, - ontology=ontology, - list_name="educts", - enzmldoc=enzmldoc, - ) - - @validate_arguments - def addProduct( - self, - species_id: str, - stoichiometry: PositiveFloat, - enzmldoc, - constant: bool = False, - ontology: SBOTerm = SBOTerm.PRODUCT, - ) -> None: - """ - Adds element to EnzymeReaction object. Replicates as well - as initial concentrations are optional. - - Args: - species_id: str (string): Reactant/Protein ID - Needs to be pre-defined! - stoichiometry (float): Stoichiometric coefficient - constant: (bool): Whether constant or not - enzmldoc (EnzymeMLDocument): Checks and adds IDs - - Raises: - SpeciesNotFoundError: If Reactant/Protein hasnt been defined yet - """ - - self._addElement( - species_id=species_id, - stoichiometry=stoichiometry, - constant=constant, - element_list=self.products, - ontology=ontology, - list_name="products", - enzmldoc=enzmldoc, - ) - - @validate_arguments - def addModifier( - self, - species_id: str, - stoichiometry: PositiveFloat, - enzmldoc, - constant: bool, - ontology: SBOTerm = SBOTerm.CATALYST, - ) -> None: - """ - Adds element to EnzymeReaction object. Replicates as well - as initial concentrations are optional. - - Args: - species_id: str (string): Reactant/Protein ID - Needs to be pre-defined! - stoichiometry (float): Stoichiometric coefficient - constant: (bool): Whether constant or not - enzmldoc (EnzymeMLDocument): Checks and adds IDs - - Raises: - SpeciesNotFoundError: If Reactant/Protein hasnt been defined yet - """ - - self._addElement( - species_id=species_id, - stoichiometry=stoichiometry, - constant=constant, - element_list=self.modifiers, - ontology=ontology, - list_name="modifiers", - enzmldoc=enzmldoc, - ) - - def _addElement( - self, - species_id: str, - stoichiometry: PositiveFloat, - constant: bool, - element_list: List[ReactionElement], - ontology: SBOTerm, - list_name: str, - enzmldoc, - ) -> None: - - # Check if species is part of document already - all_species = [ - *list(enzmldoc.protein_dict.keys()), - *list(enzmldoc.reactant_dict.keys()), - *list(enzmldoc.complex_dict.keys()), - ] - - if species_id not in all_species: - raise SpeciesNotFoundError( - species_id=species_id, enzymeml_part="EnzymeMLDocument" - ) - - # Add element to the respecticve list - element = ReactionElement( - species_id=species_id, - stoichiometry=stoichiometry, - constant=constant, - ontology=ontology, - ) - element_list.append(element) - - # Log the addition - log_object(logger, element) - logger.debug( - f"Added {type(element).__name__} '{element.species_id}' to reaction '{self.name}' {list_name}" - ) - - def setModel( - self, - model: KineticModel, - enzmldoc, - mapping: Dict[str, str] = {}, - log: bool = True, - ) -> None: - """Sets the kinetic model of the reaction and in addition converts all units to UnitDefs. - - Args: - model (KineticModel): Kinetic model that has been derived. - enzmldoc (EnzymeMLDocument): The EnzymeMLDocument that holds the reaction. - """ - - # ID consistency - enzmldoc._check_kinetic_model_ids( - model=model, - ) - - # Unit conversion - enzmldoc._convert_kinetic_model_units(model.parameters, enzmldoc=enzmldoc) - - # Replace kinetic parameter names to customize names if specified - for param_old, param_new in mapping.items(): - - model.equation = model.equation.replace(param_old, param_new) - - for parameter in model.parameters: - - if enzmldoc.global_parameters.get(param_new): - # Set a global parameter if specified - model.parameters.remove(parameter) - model.parameters.append(enzmldoc.global_parameters[param_new]) - else: - # If still local, just change the name - parameter.name = param_new - - if log: - # Log creator object - log_object(logger, model) - logger.debug( - f"Added {type(model).__name__} '{model.name}' to reaction '{self.name}'" - ) - - self.model = model - - # ! Utilities - def get_reaction_scheme(self, by_name: bool = False, enzmldoc=None): - - if by_name and enzmldoc is None: - raise ValueError( - "Please provide an EnzymeMLDocument if the reaction schem should include names" - ) - - # Determine the appropriate arrow - direction = "<=>" if self.reversible else "->" - - educts = self._summarize_elements(self.educts, by_name, enzmldoc) - products = self._summarize_elements(self.products, by_name, enzmldoc) - modifiers = self._summarize_elements(self.modifiers, by_name, enzmldoc).replace( - " + ", ", " - ) - - if self.model: - equation = ( - "v = " - + self._convert_equation_ids_to_names( - self.model.equation, by_name, enzmldoc - ) - + "\n" - ) - else: - equation = "" - - if modifiers: - return f">{self.name}\nEquation: {educts} {direction} {products}\nModifiers: {modifiers}\n{equation}\n" - else: - return f">{self.name}\nEquation: {educts} {direction} {products}\nModel: {equation}\n" - - def _summarize_elements(self, elements: list, by_name, enzmldoc) -> str: - """Parses all reaction elements of a list to a string""" - - if by_name is False: - return " + ".join( - [ - f"{element.stoichiometry} {element.species_id}" - for element in elements - ] - ) - else: - return " + ".join( - [ - f"{element.stoichiometry} {enzmldoc.getAny(element.species_id).name}" - for element in elements - ] - ) - - def _convert_equation_ids_to_names( - self, equation: str, by_name: bool, enzmldoc - ) -> str: - """Converts species IDs to names for readable elements when printing reaction schemes""" - - if by_name is False: - return equation - - for node in ast.walk(ast.parse(equation)): - if isinstance(node, ast.Name): - try: - name = enzmldoc.getAny(node.id).name - equation = equation.replace(node.id, name) - except SpeciesNotFoundError: - pass - - return equation - - def getStoichiometricCoefficients(self) -> Dict[str, float]: - """Returns the approprate stoichiometric coefficients of all educts and products. - - This function is intended to be used for modeling, where data should be easily accessible. - - Returns: - Dict[str, float]: Mapping from identifier to stiochiometric coefficient. - """ - - return { - **{element.species_id: element.stoichiometry for element in self.educts}, - **{ - element.species_id: (-1) * element.stoichiometry - for element in self.products - }, - } - - def apply_initial_values( - self, config: Dict[str, dict], to_values: bool = False - ) -> None: - """Applies the initial values for all given parameters to the underlying model. - - Args: - kwargs (Dict[str, float]): Mapping from the parameter name to the given initial value. - """ - - if not self.model: - raise ValueError( - f"Reaction {self.name} ({self.id}) has no associated model. Please specify a model to add initial values." - ) - - for param_name, options in config.items(): - - param = self.model.getParameter(param_name) - - if to_values: - param.value = options.get("initial_value") - param.initial_value = options.get("initial_value") - param.upper = options.get("upper") - param.lower = options.get("lower") - param.constant = options.get("constant") - - # ! Initializers - - @classmethod - def fromEquation( - cls, - equation: str, - name: str, - enzmldoc, - modifiers: Union[List[str], str] = [], - temperature: Optional[float] = None, - temperature_unit: Optional[str] = None, - ph: Optional[float] = None, - ): - """Creates an EnzymeReaction object from a reaction equation. - - Please make sure that the equation follows either of the following patterns: - - '1.0 Substrate -> 1.0 Product' (for irreversible) - - or - - '1.0 Substrate <=> 1.0 Product' (for reversible) - - Args: - equation (str): Reaction equation with educt and product sides. - name (str): Name of the reaction. - reversible (bool): If the reaction is reversible or not. Defaults - enzmldoc ([type]): Used to validate species IDs. - """ - - if isinstance(modifiers, str): - # Catch single modifiers - modifiers = [modifiers] - - if "=" in equation: - reversible = True - elif "->" in equation: - reversible = False - else: - raise ValueError( - "Neither '->' nor '<=>' were found in the reaction euqation, but are essential to distinguish educt from product side." - ) - - # Initialize reaction object - reaction = cls( - name=name, - reversible=reversible, - temperature=temperature, - temperature_unit=temperature_unit, - ph=ph, - ) - - for modifier in modifiers: - # Add modifiers - reaction.addModifier( - species_id=enzmldoc.getAny(modifier).id, - constant=True, - stoichiometry=1.0, - enzmldoc=enzmldoc, - ) - - # Parse the reaction equation - reaction._addFromEquation(equation, enzmldoc) - - return reaction - - def _addFromEquation(self, reaction_equation: str, enzmldoc) -> None: - """Parses a reaction equation string and adds it to the model. - - Args: - reaction_equation (str): Strign representing th reaction equation, following the schem r'' - enzmldoc ([type]): [description] - """ - - # Split reaction is educts and products - if "->" in reaction_equation: - educts, products = reaction_equation.split(" -> ") - elif "=" in reaction_equation: - educts, products = reaction_equation.split(" = ") - else: - raise ValueError( - "Neither '->' nor '<=>' were found in the reaction euqation, but are essential to distinguish educt from product side." - ) - - if not educts or not products: - raise ValueError( - "Reaction equation is incomplete. Please make sure both sides contain information." - ) - - # Parse each side of the reaction - self._parse_equation_side(educts, enzmldoc, self.addEduct) - self._parse_equation_side(products, enzmldoc, self.addProduct) - - @staticmethod - def _parse_equation_side(elements: str, enzmldoc, fun): - """Parses a side from a reaction equation.""" - - # Setup Regex - regex = r"(^\d*[.,]\d*)?\s?(.*)" - regex = re.compile(regex) - - for element in elements.split(" + "): - stoichiometry, species = regex.findall(element)[0] - - if len(stoichiometry) == 0: - stoichiometry = 1.0 - - if re.match(r"^[p|s|c]\d*$", species): - species_id = species - else: - species_id = enzmldoc.getAny(species).id - - # Add it to the reaction - fun( - species_id=species_id, - stoichiometry=float(stoichiometry), - enzmldoc=enzmldoc, - constant=False, - ) - - # ! Getters - def unitdef(self): - """Returns the appropriate unitdef if an enzmldoc is given""" - - if not self._enzmldoc: - return None - - return self._enzmldoc._unit_dict[self._temperature_unit_id] - - def getTemperature(self) -> float: - raise NotImplementedError("Temperature is now part of measurements.") - - def getTempunit(self) -> str: - raise NotImplementedError("Temperature unit is now part of measurements.") - - def getPh(self) -> PositiveFloat: - raise NotImplementedError("Ph is now part of measurements.") - - @deprecated_getter("name instead") - def getName(self) -> str: - return self.name - - @deprecated_getter("reveserible") - def getReversible(self) -> bool: - return self.reversible - - @deprecated_getter("id") - def getId(self) -> Optional[str]: - return self.id - - @deprecated_getter("meta_id") - def getMetaid(self) -> Optional[str]: - return self.meta_id - - @deprecated_getter("model") - def getModel(self) -> Optional[KineticModel]: - return self.model - - @deprecated_getter("educts") - def getEducts(self): - return self.educts - - @deprecated_getter("products") - def getProducts(self): - return self.products - - @deprecated_getter("modifier") - def getModifiers(self): - return self.modifiers diff --git a/pyenzyme/enzymeml/core/exceptions.py b/pyenzyme/enzymeml/core/exceptions.py deleted file mode 100644 index 5a20afb4..00000000 --- a/pyenzyme/enzymeml/core/exceptions.py +++ /dev/null @@ -1,92 +0,0 @@ -# File: functionalities.py -# Project: core -# Author: Jan Range -# License: BSD-2 clause -# Copyright (c) 2022 Institute of Biochemistry and Technical Biochemistry Stuttgart - -import yaml - -from typing import Union, Optional - - -class SpeciesNotFoundError(Exception): - """Raised when a species hasnt been found in a specific element""" - - def __init__( - self, - species_id: str, - enzymeml_part: str, - message: str = "Species ID has not been found", - ): - self.species_id = species_id - self.enzymeml_part = enzymeml_part - self.message = message - super().__init__(self.message) - - def __str__(self) -> str: - return f"{self.species_id} in {self.enzymeml_part} -> {self.message}" - - -class MeasurementDataSpeciesIdentifierError(Exception): - """Raised when either no ID has been assigned to a measurementData""" - - def __init__(self, both: Optional[list] = None): - - if both: - self.message = f"Both reactant ({both[0]}) and protein ({both[1]}) have been ID assigned to a measurement. Please specifiy either one of those." - else: - self.message = ( - "Neither a reactant not protein has been ID assigned to measurement." - ) - - super().__init__(self.message) - - def __str__(self) -> str: - return self.message - - -class ParticipantIdentifierError(Exception): - """Raised when an ID does not match the expected format""" - - def __init__(self, id: str, prefix: str) -> None: - self.prefix = prefix - self.id = id - - def __str__(self) -> str: - return f"Identifier '{self.id}' does not match the expected format of '{self.prefix}[digits]'." - - -class ECNumberError(Exception): - """Raised when an EC number does not match the pattern convenrtion""" - - def __init__(self, ecnumber: str): - self.ecnumber = ecnumber - - def __str__(self) -> str: - return f"EC number {self.ecnumber} does not match the pattern. Please specifify as X.X.X.X" - - -class DataError(Exception): - """Raised when incomplete data has been assigned to a replicate""" - - pass - - -class ChEBIIdentifierError(Exception): - """Raised when the CHEBI ID is incorrect.""" - - def __init__(self, chebi_id: Union[str, int]) -> None: - self.chebi_id = chebi_id - - def __str__(self) -> str: - return f"ChEBI ID {self.chebi_id} is invalid. Please provide a valid ChEBI ID." - - -class UniProtIdentifierError(Exception): - """Raised when the UniProt ID is incorrect.""" - - def __init__(self, uniprotid: Union[str, int]) -> None: - self.uniprotid = uniprotid - - def __str__(self) -> str: - return f"UniProt ID {self.uniprotid} is invalid. Please provide a valid UniProt ID." diff --git a/pyenzyme/enzymeml/core/measurement.py b/pyenzyme/enzymeml/core/measurement.py deleted file mode 100644 index c72b64e4..00000000 --- a/pyenzyme/enzymeml/core/measurement.py +++ /dev/null @@ -1,475 +0,0 @@ -# File: measurement.py -# Project: core -# Author: Jan Range -# License: BSD-2 clause -# Copyright (c) 2022 Institute of Biochemistry and Technical Biochemistry Stuttgart - -import copy -import logging -import pandas as pd - -from typing import List, Dict, Tuple, Optional, TYPE_CHECKING, Union -from dataclasses import dataclass -from pydantic import validate_arguments, Field, PrivateAttr, validator - -from pyenzyme.enzymeml.core.enzymemlbase import EnzymeMLBase -from pyenzyme.enzymeml.core.measurementData import MeasurementData -from pyenzyme.enzymeml.core.replicate import Replicate -from pyenzyme.enzymeml.core.exceptions import SpeciesNotFoundError -from pyenzyme.utils.log import log_object -from pyenzyme.enzymeml.core.utils import type_checking, deprecated_getter - -if TYPE_CHECKING: # pragma: no cover - static_check_init_args = dataclass -else: - static_check_init_args = type_checking - -# Initialize the logger -logger = logging.getLogger("pyenzyme") - - -@static_check_init_args -class Measurement(EnzymeMLBase): - - name: str = Field( - ..., - description="Name of the measurement", - ) - - temperature: Optional[float] = Field( - None, - description="Numeric value of the temperature of the reaction.", - template_alias="Temperature value", - ) - - temperature_unit: Optional[str] = Field( - None, - description="Unit of the temperature of the reaction.", - regex=r"kelvin|Kelvin|k|K|celsius|Celsius|C|c", - ) - - ph: Optional[float] = Field( - None, - description="PH value of the reaction.", - inclusiveMinimum=0, - inclusiveMaximum=14, - ) - - species_dict: Dict[str, Dict[str, MeasurementData]] = Field( - {"proteins": {}, "reactants": {}}, - description="Species of the measurement.", - ) - - global_time: List[float] = Field( - default_factory=list, - description="Global time of the measurement all replicates agree on.", - ) - - global_time_unit: Optional[str] = Field( - None, - description="Unit of the global time.", - ) - - id: Optional[str] = Field( - None, description="Unique identifier of the measurement.", regex=r"m[\d]+" - ) - - uri: Optional[str] = Field( - None, - description="URI of the reaction.", - ) - - creator_id: Optional[str] = Field( - None, - description="Unique identifier of the author.", - ) - - # * Private attributes - _temperature_unit_id: str = PrivateAttr(None) - _global_time_unit_id: str = PrivateAttr(None) - _enzmldoc = PrivateAttr(default=None) - - # ! Validators - @validator("temperature_unit") - def convert_temperature_unit(cls, unit, values): - """Converts celsius to kelvin due to SBML limitations""" - - if unit: - if unit.lower() in ["celsius", "c"]: - values["temperature"] = values["temperature"] + 273.15 - return "K" - - return unit - - # ! Utility methods - def __repr__(self): - return self.printMeasurementScheme(stdout=False) - - def printMeasurementScheme( - self, species_type: str = "all", stdout: bool = True - ) -> Optional[str]: - """Prints the scheme of the measurement and as such an overview of what has been done. - - Args: - species_type (str, optional): Specifies whether only "reactants"/"proteins" should be displayed or all of them. Defaults to "all". - """ - - # Get all measurement data objects - reactants = self.getReactants() - proteins = self.getProteins() - - if species_type == "reactants": - species = list(reactants.values()) - elif species_type == "proteins": - species = list(proteins.values()) - elif species_type == "all": - species = list(reactants.values()) + list(proteins.values()) - else: - raise ValueError( - f"Species type of {species_type} is not supported. Please enter use one of the following: 'reactants', 'proteins' or 'all'." - ) - - # Start printing - output = [] - output.append(f">>> Measurement {self.id}: {self.name}") - - for meas_data in species: - output.append( - f" {meas_data.get_id()} | initial conc: {meas_data.init_conc} {meas_data.unit} \t| #replicates: {len(meas_data.replicates)}" - ) - - output = "\n".join(output) - - if stdout: - print(output) - else: - return output - - def exportData( - self, species_ids: Union[str, List[str]] = "all" - ) -> Dict[str, Dict[str, Union[Dict[str, Tuple[float, str]], pd.DataFrame]]]: - """Returns data stored in the measurement object as DataFrames nested in dictionaries. These are sorted hierarchially by reactions where each holds a DataFrame each for proteins and reactants. - - Returns: - measurements (dict): Follows the hierarchy Reactions > Proteins/Reactants > { initial_concentration, data } - species_ids (Union[str, List[str]]): List of species IDs to extract data from. Defaults to 'all'. - """ - - # Combine Replicate objects for each reaction - proteins = self._combineReplicates( - measurement_species=self.species_dict["proteins"], species_ids=species_ids - ) - reactants = self._combineReplicates( - measurement_species=self.species_dict["reactants"], species_ids=species_ids - ) - - return {"proteins": proteins, "reactants": reactants} - - def _combineReplicates( - self, - measurement_species: Dict[str, MeasurementData], - species_ids: Union[str, List[str]] = "all", - ) -> Dict[str, Union[Dict[str, Tuple[float, str]], pd.DataFrame]]: - """Combines replicates of a certain species to a dataframe. - - Args: - measurement_species (Dict[str, MeasurementData]): The species_dict from the measurement. - - Returns: - Dict[str, Any]: The associated replicat and initconc data. - """ - - if isinstance(species_ids, str): - species_ids = [species_ids] - - columns = {} - initial_concentration = {} - num_replicates = 0 - - # Iterate over measurementData to fill columns - for species_id, data in measurement_species.items(): - - if species_id in species_ids or species_ids == ["all"]: - - # Fetch initial concentration - initial_concentration[species_id] = (data.init_conc, data.unit) - - # Fetch replicate data - if len(data.replicates) > num_replicates: - num_replicates = len(data.replicates) - for replicate in data.replicates: - - if columns.get(species_id): - # For multiple replicates - columns[species_id] += copy.deepcopy(replicate.data) - else: - columns[species_id] = copy.deepcopy(replicate.data) - - # Add global time to columns according to the number of replicates - columns["time"] = self.global_time * num_replicates - - return { - "data": pd.DataFrame(columns) if len(columns) > 1 else pd.DataFrame(), - "initConc": initial_concentration, - } - - @validate_arguments - def addReplicates( - self, replicates: Union[List[Replicate], Replicate], enzmldoc, log: bool = True - ) -> None: - """Adds a replicate to the corresponding measurementData object. This method is meant to be called if the measurement metadata of a reaction/species has already been done and replicate data has to be added afterwards. If not, use addData instead to introduce the species metadata. - - Args: - replicate (List): Objects describing time course data - """ - - # Check if just a single Replicate has been handed - if isinstance(replicates, Replicate): - replicates = [replicates] - - for replicate in replicates: - - # Check for the species type - species_id = replicate.species_id - speciesType = "reactants" if species_id[0] == "s" else "proteins" - speciesData = self.species_dict[speciesType] - - try: - - data = speciesData[species_id] - - replicate._data_unit_id = enzmldoc._convertToUnitDef( - replicate.data_unit - ) - replicate._time_unit_id = enzmldoc._convertToUnitDef( - replicate.time_unit - ) - - data.addReplicate(replicate) - - if len(self.global_time) == 0: - - # Add global time if this is the first replicate to be added - self.global_time = replicate.time - self.global_time_unit = replicate.time_unit - self._global_time_unit_id = replicate._time_unit_id - - # Log Replicate creation - if log: - log_object(logger, replicate) - logger.debug( - f"Added {type(replicate).__name__} '{replicate.id}' to data '{data.get_id()}' of measurement '{self.name}'" - ) - - except KeyError: - raise KeyError( - f"{speciesType[0:-1]} {species_id} is not part of the measurement yet. If a {speciesType[0:-1]} hasnt been yet defined in a measurement object, use the addData method to define metadata first-hand. You can add the replicates in the same function call then." - ) - - @validate_arguments - def addData( - self, - unit: str, - init_conc: float = 0.0, - reactant_id: Optional[str] = None, - protein_id: Optional[str] = None, - replicates: List[Replicate] = [], - log: bool = True, - ) -> None: - """Adds data to the measurement object. - - Args: - init_conc (PositiveFloat): Corresponding initial concentration of species. - unit (str): The SI unit of the measurement. - reactant_id (Optional[str], optional): Identifier of the reactant that was measured. Defaults to None. - protein_id (Optional[str], optional): Identifier of the protein that was measured. Defaults to None. - replicates (List[Replicate], optional): List of replicates that were measured. Defaults to []. - """ - - self._appendReactantData( - reactant_id=reactant_id, - protein_id=protein_id, - init_conc=init_conc, - unit=unit, - replicates=replicates, - log=log, - ) - - def _appendReactantData( - self, - reactant_id: Optional[str], - protein_id: Optional[str], - init_conc: float, - unit: str, - replicates: List[Replicate], - log: bool = True, - ) -> None: - - # Create measurement data class before sorting - measData = MeasurementData( - reactant_id=reactant_id, - protein_id=protein_id, - init_conc=init_conc, - unit=unit, - replicates=replicates, - measurement_id=self.id, - ) - - if reactant_id: - self.species_dict["reactants"][reactant_id] = measData - elif protein_id: - self.species_dict["proteins"][protein_id] = measData - else: - raise ValueError( - "Please enter a reactant or protein ID to add measurement data" - ) - - # Log the new object - if log: - log_object(logger, measData) - logger.debug( - f"Added {type(measData).__name__} '{measData.get_id()}' to measurement '{self.name}'" - ) - - def updateReplicates(self, replicates: List[Replicate]) -> None: - for replicate in replicates: - # Set the measurement name for the replicate - replicate.measurement_id = self.name - - def _setReplicateMeasIDs(self) -> None: - """Sets the measurement IDs for the replicates.""" - for measData in self.species_dict["proteins"].values(): - measData.measurement_id = self.id - - for measData in self.species_dict["reactants"].values(): - measData.measurement_id = self.id - - def unifyUnits(self, kind: str, scale: int, enzmldoc) -> None: - """Rescales all replicates and measurements to match the scale of a unit kind. - - Args: - kind (str): The unit kind from which to rescale. Currently supported: 'mole', 'gram', 'litre'. - scale (int): Decade scale to which the values will be rescaled. - enzmldoc (EnzymeMLDocument): The EnzymeMLDocument to which the new unit will be added. - """ - - if kind not in ["mole", "gram", "litre"]: - raise ValueError( - f"Kind {kind} is not supported. Please use 'mole', 'gram', or 'litre'" - ) - - if abs(scale) % 3 > 0: - if abs(scale) == 1: - pass - else: - raise ValueError( - f"Scale {scale} is not a multiple of 3. Please make sure the scale is a multiple of 3." - ) - - for measurement_data in {**self.getProteins(), **self.getReactants()}.values(): - measurement_data.unifyUnits(kind=kind, scale=scale, enzmldoc=enzmldoc) - - def _has_replicates(self) -> bool: - """Checks whether replicates are present in the measurement. - - This is only used for the to check whether to write time course data or not. - - Returns: - bool: Returns True if there are any replicate otherwise False. - """ - - all_species = { - **self.species_dict["proteins"], - **self.species_dict["reactants"], - } - - for obj in all_species.values(): - if len(obj.replicates) > 0: - return True - - return False - - # ! Getters - def temperature_unitdef(self): - """Returns the appropriate unitdef if an enzmldoc is given""" - - if not self._enzmldoc: - return None - - return self._enzmldoc._unit_dict[self._temperature_unit_id] - - @validate_arguments - def getReactant(self, reactant_id: str) -> MeasurementData: - """Returns a single MeasurementData object for the given reactant_id. - - Args: - reactant_id (String): Unqiue identifier of the reactant - - Returns: - MeasurementData: Object representing the data and initial concentration - """ - return self._getSpecies(reactant_id) - - def getProtein(self, protein_id: str) -> MeasurementData: - """Returns a single MeasurementData object for the given protein_id. - - Args: - protein_id (String): Unqiue identifier of the protein - - Returns: - MeasurementData: Object representing the data and initial concentration - """ - return self._getSpecies(protein_id) - - def getReactants(self) -> Dict[str, MeasurementData]: - """Returns a dict of all participating reactants in the measurement. - - Returns: - dict: Dict of MeasurementData objects representing data - """ - return self.species_dict["reactants"] - - def getProteins(self) -> Dict[str, MeasurementData]: - """Returns a dict of all participating proteins in the measurement. - - Returns: - dict: Dict of MeasurementData objects representing data - """ - return self.species_dict["proteins"] - - def _getAllSpecies(self): - return {**self.species_dict["proteins"], **self.species_dict["reactants"]} - - @validate_arguments - def _getSpecies(self, species_id: str) -> MeasurementData: - all_species = { - **self.species_dict["proteins"], - **self.species_dict["reactants"], - } - - try: - return all_species[species_id] - except KeyError: - raise SpeciesNotFoundError( - species_id=species_id, enzymeml_part="Measurement" - ) - - @deprecated_getter("id") - def getId(self): - return self.id - - @deprecated_getter("global_time_unit") - def getGlobalTimeUnit(self): - return self.global_time_unit - - @deprecated_getter("global_time") - def getGlobalTime(self): - return self.global_time - - @deprecated_getter("name") - def getName(self): - return self.name - - @deprecated_getter("species_dict") - def getSpeciesDict(self): - return self.species_dict diff --git a/pyenzyme/enzymeml/core/measurementData.py b/pyenzyme/enzymeml/core/measurementData.py deleted file mode 100644 index affe014a..00000000 --- a/pyenzyme/enzymeml/core/measurementData.py +++ /dev/null @@ -1,195 +0,0 @@ -# File: measurementData.py -# Project: core -# Author: Jan Range -# License: BSD-2 clause -# Copyright (c) 2022 Institute of Biochemistry and Technical Biochemistry Stuttgart - -from pydantic import PositiveFloat, validate_arguments, validator, Field, PrivateAttr -from dataclasses import dataclass -from typing import List, Optional, TYPE_CHECKING -from pyenzyme.enzymeml.core.enzymemlbase import EnzymeMLBase - -from pyenzyme.enzymeml.core.replicate import Replicate -from pyenzyme.enzymeml.core.exceptions import MeasurementDataSpeciesIdentifierError -from pyenzyme.enzymeml.core.unitdef import UnitDef -from pyenzyme.enzymeml.core.utils import type_checking, deprecated_getter - -if TYPE_CHECKING: # pragma: no cover - static_check_init_args = dataclass -else: - static_check_init_args = type_checking - - -@static_check_init_args -class MeasurementData(EnzymeMLBase): - """Helper class to organize elements""" - - init_conc: float = Field( - ..., - description="Initial concentration of the measurement data.", - ) - - unit: str = Field( - ..., - description="The unit of the measurement data.", - ) - - measurement_id: Optional[str] = Field( - None, - description="Unique measurement identifier this dataset belongs to.", - ) - - reactant_id: Optional[str] = Field( - None, - description="The identifier for the described reactant.", - ) - - protein_id: Optional[str] = Field( - None, - description="The identifier for the described protein.", - ) - - replicates: List[Replicate] = Field( - default_factory=list, - description="A list of replicate objects holding raw data of the measurement.", - ) - - # * Private - _unit_id: Optional[str] = PrivateAttr(default=None) - _enzmldoc = PrivateAttr(default=None) - - # ! Validators - - @validator("protein_id") - def check_id_occurences(cls, protein_id: str, values: dict): - reactant_id = values.get("reactant_id") - - if reactant_id is None and protein_id is None: - raise MeasurementDataSpeciesIdentifierError() - - elif reactant_id and protein_id: - raise MeasurementDataSpeciesIdentifierError(both=[reactant_id, protein_id]) - - return protein_id - - # ! Utilities - def unifyUnits(self, kind: str, scale: int, enzmldoc) -> Optional[str]: - """Rescales all replicates data_unit to match the desired scale. - - Args: - replicate (Replicate): Replicate object containing time course data. - kind (str): The kind of unit that will be rescaled. - scale (int): The scale to whih the data will be transformed. - enzmldoc ([type]): The EnzymeML document to which the new unit will be added. - """ - - unit_id = None - - # Transform initial concentration - unitdef: UnitDef = enzmldoc._unit_dict[self._unit_id].copy() - transform_value, new_unit_name, unit_id = self._getTransformation( - unitdef, kind, scale, enzmldoc - ) - - self.init_conc *= transform_value - self._unit_id = unit_id - self.unit = new_unit_name - - # Apply to replicates - for replicate in self.replicates: - self._rescaleReplicateUnits( - replicate=replicate, kind=kind, scale=scale, enzmldoc=enzmldoc - ) - - @staticmethod - def _getTransformation(unitdef: UnitDef, kind: str, scale: int, enzmldoc): - """Calculates the new transformation value and returns new UnitDef""" - - # Calculate transformation value - transform_value = unitdef.calculateTransformValue(kind=kind, scale=scale) - - # Create a new unit that matches the new scale - new_unitdef = UnitDef(**unitdef.dict()) - correction_factor = 1 if scale == 0 else 0 - - for base_unit in new_unitdef.units: - if base_unit.kind == kind: - base_unit.scale = scale + correction_factor - - new_unit_name = new_unitdef._getNewName() - unit_id = enzmldoc._convertToUnitDef(new_unit_name) - - return transform_value, new_unit_name, unit_id - - def _rescaleReplicateUnits( - self, replicate: Replicate, kind: str, scale: int, enzmldoc - ) -> None: - """Rescales a replicates data_unit to match the desired scale. - - Args: - replicate (Replicate): Replicate object containing time course data. - kind (str): The kind of unit that will be rescaled. - scale (int): The scale to whih the data will be transformed. - enzmldoc ([type]): The EnzymeML document to which the new unit will be added. - """ - - data_unit_id = replicate._data_unit_id - unitdef: UnitDef = enzmldoc._unit_dict[data_unit_id].copy() - - # Calculate the scale to transform the unit - transform_value, new_unit_name, unit_id = self._getTransformation( - unitdef, kind, scale, enzmldoc - ) - - # Re-scale and assign the new data of the replicate - replicate.data = [data_point * transform_value for data_point in replicate.data] - replicate._data_unit_id = unit_id - replicate.data_unit = new_unit_name - - @validate_arguments - def addReplicate(self, replicate: Replicate) -> None: - self.replicates.append(replicate) - - @validate_arguments - def setMeasurementIDs(self, id: str) -> None: - for replicate in self.replicates: - replicate.measurement_id = id - - def get_id(self) -> str: - """Internal usage to get IDs from objects without ID attribute""" - - if self.reactant_id: - return self.reactant_id - elif self.protein_id: - return self.protein_id - else: - raise AttributeError("Neither reactant nor protein ID are given.") - - # ! Getters - def unitdef(self): - """Returns the appropriate unitdef if an enzmldoc is given""" - - if not self._enzmldoc: - return None - - return self._enzmldoc._unit_dict[self._unit_id] - - @deprecated_getter("reactant_id") - def getReactantID(self) -> Optional[str]: - return self.reactant_id - - @deprecated_getter("protein_id") - def getProteinID(self) -> Optional[str]: - return self.protein_id - - @deprecated_getter("init_conc") - def getInitConc(self) -> PositiveFloat: - return self.init_conc - - @deprecated_getter("unit") - def getUnit(self) -> str: - return self.unit - - @deprecated_getter("replicates") - def getReplicates(self) -> List[Replicate]: - return self.replicates diff --git a/pyenzyme/enzymeml/core/ontology.py b/pyenzyme/enzymeml/core/ontology.py deleted file mode 100644 index 7ca18b80..00000000 --- a/pyenzyme/enzymeml/core/ontology.py +++ /dev/null @@ -1,89 +0,0 @@ -# File: ontology.py -# Project: core -# Author: Jan Range -# License: BSD-2 clause -# Copyright (c) 2022 Institute of Biochemistry and Technical Biochemistry Stuttgart - - -from enum import Enum - - -class SBOTerm(str, Enum): - """String enumeration used to assign ontologies derived from SBOTerms.""" - - # Chemical reactions - BIOCHEMICAL_REACTION = "SBO:0000176" - ACID_BASE_REACTION = "SBO:0000208" - CONFORMATIONAL_TRANSITION = "SBO:0000181" - CONVERSION = "SBO:0000182" - DEGRADATION = "SBO:0000179" - DISSOCIATION = "SBO:0000180" - IONISATION = "SBO:0000209" - ISOMERISATION = "SBO:0000377" - NON_COVALENT_BINDING = "SBO:0000177" - REDOX_REACTION = "SBO:0000200" - SPONTANEOUS_REACTION = "SBO:0000672" - - # Chemical entities - PROTEIN = "SBO:0000252" - GENE = "SBO:0000251" - SMALL_MOLECULE = "SBO:0000247" - ION = "SBO:0000327" - RADICAL = "SBO:0000328" - - # Chemical relations - INTERACTOR = "SBO:0000336" - SUBSTRATE = "SBO:0000015" - PRODUCT = "SBO:0000011" - CATALYST = "SBO:0000013" - INHIBITOR = "SBO:0000020" - ESSENTIAL_ACTIVATOR = "SBO:0000461" - NON_ESSENTIAL_ACTIVATOR = "SBO:0000462" - POTENTIATOR = "SBO:0000021" - - # Complexes - MACROMOLECULAR_COMPLEX = "SBO:0000296" - PROTEIN_COMPLEX = "SBO:0000297" - DIMER = "SBO:0000607" - - # Kinetic models - MICHAELIS_MENTEN = "SBO:0000028" - - # Kinetic parameters - K_CAT = "SBO:0000025" - K_M = "SBO:0000027" - V_MAX = "SBO:0000186" - - -class DataTypes(str, Enum): - """String enumeration used to assign replicate type ontologies""" - - CONCENTRATION = "conc" - ABSORPTION = "abs" - FEED = "feed" - BIOMASS = "biomass" - CONVERSION = "conversion" - PEAK_AREA = "peak-area" - - -class EnzymeMLPart(str, Enum): - """Mapping to identify where entities are stored in the EnzymeML model.""" - - # Chemical entities - PROTEIN = "protein_dict" - SMALL_MOLECULE = "reactant_dict" - ION = "reactant_dict" - RADICAL = "reactant_dict" - MACROMOLECULAR_COMPLEX = "complex_dict" - PROTEIN_COMPLEX = "complex_dict" - DIMER = "complex_dict" - - @classmethod - def partFromSBOTerm(cls, sbo_term: str) -> str: - sbo_term = SBOTerm(sbo_term).name - return getattr(cls, sbo_term).value - - @classmethod - def entityFromSBOTerm(cls, sbo_term: str) -> str: - sbo_term = SBOTerm(sbo_term).name - return getattr(cls, sbo_term).name diff --git a/pyenzyme/enzymeml/core/protein.py b/pyenzyme/enzymeml/core/protein.py deleted file mode 100644 index 9cda2b77..00000000 --- a/pyenzyme/enzymeml/core/protein.py +++ /dev/null @@ -1,259 +0,0 @@ -# File: protein.py -# Project: core -# Author: Jan Range -# License: BSD-2 clause -# Copyright (c) 2022 Institute of Biochemistry and Technical Biochemistry Stuttgart - -import re - -from pydantic import validator, Field -from typing import Dict, Optional, TYPE_CHECKING, Any -from dataclasses import dataclass - -from pyenzyme.enzymeml.core.ontology import SBOTerm -from pyenzyme.enzymeml.core.enzymemlbase import EnzymeMLBase -from pyenzyme.enzymeml.core.exceptions import UniProtIdentifierError -from pyenzyme.enzymeml.core.abstract_classes import AbstractSpecies -from pyenzyme.enzymeml.core.utils import type_checking, deprecated_getter - -if TYPE_CHECKING: # pragma: no cover - static_check_init_args = dataclass -else: - static_check_init_args = type_checking - - -@static_check_init_args -class Protein(EnzymeMLBase, AbstractSpecies): - - name: Optional[str] = Field( - None, description="Name of the protein", template_alias="Name" - ) - - sequence: Optional[str] = Field( - None, - description="Amino acid sequence of the protein", - template_alias="Sequence", - ) - - vessel_id: str = Field( - ..., - description="Identifier of the vessel in which the protein was stored.", - template_alias="Vessel", - regex=r"v[\d.]+", - ) - - init_conc: Optional[float] = Field( - default=None, - description="Initial concentration of the protein.", - ) - - unit: Optional[str] = Field( - None, - description="Unit of the proteins intial concentration.", - ) - - constant: bool = Field( - True, - description="Whether the proteins concentration remains constant or not.", - template_alias="Constant", - ) - - id: Optional[str] = Field( - None, - description="Unique identifier of the protein.", - template_alias="ID", - regex=r"p[\d]+", - ) - - meta_id: Optional[str] = Field( - None, - description="Unique meta identifier of the protein.", - ) - - ecnumber: Optional[str] = Field( - None, - description="EC number of the protein.", - template_alias="EC Number", - regex=r"(\d+.)(\d+.)(\d+.)(\d+)", - ) - - organism: Optional[str] = Field( - None, - description="Organism the protein was expressed in.", - template_alias="Source organism", - ) - - organism_tax_id: Optional[str] = Field( - None, - description="Taxonomy identifier of the expression host.", - ) - - boundary: bool = Field( - False, - description="Whether the protein is under any boundary conditions (SBML Technicality, better leave it to default)", - ) - - ontology: SBOTerm = Field( - SBOTerm.PROTEIN, - description="Ontology describing the characteristic of the protein.", - ) - - uri: Optional[str] = Field( - None, - description="URI of the protein.", - ) - - creator_id: Optional[str] = Field( - None, - description="Unique identifier of the author.", - ) - - uniprotid: Optional[str] = Field( - None, - description="Unique identifier referencing a protein entry at UniProt. Use this identifier to initialize the object from the UniProt database.", - template_alias="UniProt ID", - ) - - # ! Validators - @validator("id") - def set_meta_id(cls, id: Optional[str], values: dict): - """Sets the meta ID when an ID is provided""" - - if id: - # Set Meta ID with ID - values["meta_id"] = f"METAID_{id.upper()}" - - return id - - @validator("sequence") - def clean_sequence(cls, sequence): - """Cleans a sequence from whitespaces as well as newlines and transforms uppercase""" - - if sequence: - return re.sub(r"\s+", "", sequence).upper() - else: - return sequence - - # ! Initializers - @classmethod - def fromUniProtID( - cls, - uniprotid: str, - vessel_id: str, - init_conc: Optional[float] = None, - unit: Optional[str] = None, - constant: bool = False, - ) -> "Protein": - """Initializes a protein based on the UniProt database. - - Raises: - UniProtIdentifierError: Raised when the UniProt identifier is invalid. - - Returns: - Protein: The initialiized Protein object. - """ - - # Get UniProt Parameters - parameters = cls._getUniProtParameters(uniprotid=uniprotid) - - return cls( - init_conc=init_conc, - unit=unit, - vessel_id=vessel_id, - constant=constant, - uniprotid=uniprotid, - **parameters, - ) - - @staticmethod - def _getUniProtParameters(uniprotid: str) -> Dict[str, Any]: - import requests - import xml.etree.ElementTree as ET - - # Send request to CHEBI database - endpoint = f"https://www.uniprot.org/uniprot/{uniprotid}.xml" - - # Fetch data - response = requests.get(endpoint) - - # Check if the UniProt ID is correct - if response.status_code == 404: - raise UniProtIdentifierError(uniprotid=uniprotid) - - # Create XML Tree - tree = ET.ElementTree(ET.fromstring(response.text)) - - # Set prefix to match tag - prefix = r"{http://uniprot.org/uniprot}" - - # Define mapping for the used attributes - attribute_mapping = { - prefix + "sequence": "sequence", - prefix + "fullName": "name", - prefix + "ecNumber": "ecnumber", - } - - # Collect parameters - parameters = {} - for elem in tree.iter(): - if elem.tag in attribute_mapping and parameters.get(elem.tag) is None: - parameters[attribute_mapping[elem.tag]] = elem.text - - return parameters - - # ! Getters - @deprecated_getter("organism_tax_id") - def getOrganismTaxId(self): - return self.organism_tax_id - - @deprecated_getter("ecnumber") - def getEcnumber(self): - return self.ecnumber - - @deprecated_getter("uniprotid") - def getUniprotID(self): - return self.uniprotid - - @deprecated_getter("organism") - def getOrganism(self): - return self.organism - - @deprecated_getter("init_conc") - def getInitConc(self): - return self.init_conc - - @deprecated_getter("name") - def getName(self): - return self.name - - @deprecated_getter("id") - def getId(self): - return self.id - - @deprecated_getter("meta_id") - def getMetaid(self): - return self.meta_id - - @deprecated_getter("sequence") - def getSequence(self): - return self.sequence - - @deprecated_getter("ontology") - def getSboterm(self): - return self.ontology - - @deprecated_getter("vessel_id") - def getVessel(self): - return self.vessel_id - - @deprecated_getter("unit") - def getSubstanceUnits(self): - return self.unit - - @deprecated_getter("boundary") - def getBoundary(self): - return self.boundary - - @deprecated_getter("constant") - def getConstant(self): - return self.constant diff --git a/pyenzyme/enzymeml/core/reactant.py b/pyenzyme/enzymeml/core/reactant.py deleted file mode 100644 index ac72f89c..00000000 --- a/pyenzyme/enzymeml/core/reactant.py +++ /dev/null @@ -1,211 +0,0 @@ -# File: reactant.py -# Project: core -# Author: Jan Range -# License: BSD-2 clause -# Copyright (c) 2022 Institute of Biochemistry and Technical Biochemistry Stuttgart - -from pydantic import Field -from typing import Dict, TYPE_CHECKING, Optional, Union, Any -from dataclasses import dataclass - -from pyenzyme.enzymeml.core.enzymemlbase import EnzymeMLBase -from pyenzyme.enzymeml.core.abstract_classes import AbstractSpecies -from pyenzyme.enzymeml.core.ontology import SBOTerm -from pyenzyme.enzymeml.core.exceptions import ChEBIIdentifierError -from pyenzyme.enzymeml.core.utils import type_checking, deprecated_getter - -if TYPE_CHECKING: # pragma: no cover - static_check_init_args = dataclass -else: - static_check_init_args = type_checking - - -@static_check_init_args -class Reactant(EnzymeMLBase, AbstractSpecies): - - name: Optional[str] = Field( - None, description="Name of the reactant.", template_alias="Name" - ) - - vessel_id: str = Field( - ..., - description="Identifier of the vessel in which the reactant was stored.", - template_alias="Vessel", - ) - - init_conc: Optional[float] = Field( - None, - description="Initial concentration of the reactant.", - ) - - unit: Optional[str] = Field( - None, - description="Unit of the reactant intial concentration.", - ) - - constant: bool = Field( - False, - description="Whether the reactants concentration remains constant or not.", - template_alias="Constant", - ) - - id: Optional[str] = Field( - None, - description="Unique identifier of the protein.", - template_alias="ID", - regex=r"s[\d]+", - ) - - meta_id: Optional[str] = Field( - None, - description="Unique meta identifier of the protein.", - ) - - smiles: Optional[str] = Field( - None, - description="Simplified Molecular Input Line Entry System (SMILES) encoding of the reactant.", - template_alias="SMILES", - ) - - inchi: Optional[str] = Field( - None, - description="International Chemical Identifier (InChI) encoding of the reactant.", - template_alias="InCHI", - ) - - boundary: bool = Field( - False, - description="Whether the reactant is under any boundary conditions (SBML Technicality, better leave it to default)", - ) - - ontology: SBOTerm = Field( - SBOTerm.SMALL_MOLECULE, - description="Ontology describing the characteristic of the reactant.", - ) - - uri: Optional[str] = Field( - None, - description="URI of the protein.", - ) - - creator_id: Optional[str] = Field( - None, - description="Unique identifier of the author.", - ) - - chebi_id: Optional[str] = Field( - None, - description="Unique identifier of the CHEBI database. Use this identifier to initialize the object from the CHEBI database.", - ) - - # ! Initializers - @classmethod - def fromChebiID( - cls, - chebi_id: str, - vessel_id: str, - constant: bool = False, - init_conc: Optional[float] = None, - unit: Optional[str] = None, - ) -> "Reactant": - """Initializes a reactant based - - Raises: - ChEBIIdentifierError: [description] - - Returns: - [type]: [description] - """ - - # Get Chebi Parameters - parameters = cls._getChEBIParameters(chebi_id=chebi_id) - - return cls( - init_conc=init_conc, - unit=unit, - vessel_id=vessel_id, - constant=constant, - chebi_id=chebi_id, - **parameters, - ) - - @staticmethod - def _getChEBIParameters(chebi_id: Union[str, int]) -> Dict[str, Any]: - import requests - import xml.etree.ElementTree as ET - - # Send request to CHEBI database - endpoint = f"https://www.ebi.ac.uk/webservices/chebi/2.0/test/getCompleteEntity?chebiId={chebi_id}" - - # Fetch data - response = requests.get(endpoint) - tree = ET.ElementTree(ET.fromstring(response.text)) - - # Set prefix to match tag - prefix = r"{https://www.ebi.ac.uk/webservices/chebi}" - - # Check if the CHEBI ID is correct - if "faultcode" in response.text: - raise ChEBIIdentifierError(chebi_id=chebi_id) - - # Define mapping for the used attributes - attribute_mapping = { - prefix + "inchi": "inchi", - prefix + "smiles": "smiles", - prefix + "chebiAsciiName": "name", - } - - # Collect parameters - parameters = { - attribute_mapping[elem.tag]: elem.text - for elem in tree.iter() - if elem.tag in attribute_mapping - } - - return parameters - - # ! Getters - - @deprecated_getter("inchi") - def getInchi(self): - return self.inchi - - @deprecated_getter("smiles") - def getSmiles(self): - return self.smiles - - @deprecated_getter("init_conc") - def getInitConc(self): - return self.init_conc - - @deprecated_getter("name") - def getName(self): - return self.name - - @deprecated_getter("id") - def getId(self): - return self.id - - @deprecated_getter("meta_id") - def getMetaid(self): - return self.meta_id - - @deprecated_getter("ontology") - def getSboterm(self): - return self.ontology - - @deprecated_getter("vessel_id") - def getVessel(self): - return self.vessel_id - - @deprecated_getter("unit") - def getSubstanceUnits(self): - return self.unit - - @deprecated_getter("boundary") - def getBoundary(self): - return self.boundary - - @deprecated_getter("constant") - def getConstant(self): - return self.constant diff --git a/pyenzyme/enzymeml/core/replicate.py b/pyenzyme/enzymeml/core/replicate.py deleted file mode 100644 index e12d56cf..00000000 --- a/pyenzyme/enzymeml/core/replicate.py +++ /dev/null @@ -1,152 +0,0 @@ -# File: replicate.py -# Project: core -# Author: Jan Range -# License: BSD-2 clause -# Copyright (c) 2022 Institute of Biochemistry and Technical Biochemistry Stuttgart - -from pydantic import Field, validator, PrivateAttr -from typing import List, TYPE_CHECKING, Optional -from dataclasses import dataclass - -from pyenzyme.enzymeml.core.enzymemlbase import EnzymeMLBase -from pyenzyme.enzymeml.core.ontology import DataTypes -from pyenzyme.enzymeml.core.exceptions import DataError -from pyenzyme.enzymeml.core.utils import type_checking, deprecated_getter - -if TYPE_CHECKING: # pragma: no cover - static_check_init_args = dataclass -else: - static_check_init_args = type_checking - - -@static_check_init_args -class Replicate(EnzymeMLBase): - - id: str = Field( - ..., - description="Unique identifier of the replicate", - ) - - species_id: str = Field( - ..., - description="Unique identifier of the species that has been measured.", - regex=r"[s|r|p][\d]+", - ) - - measurement_id: Optional[str] = Field( - None, - description="Unique identifier of the measurement that the replicate is part of.", - regex=r"m[\d]+", - ) - - data_type: DataTypes = Field( - DataTypes.CONCENTRATION, - description="Type of data that was measured (e.g. concentration)", - ) - - data_unit: str = Field( - ..., - description="SI unit of the data that was measured.", - ) - - time_unit: str = Field( - ..., - description="Time unit of the replicate.", - ) - - time: List[float] = Field( - None, - description="Time steps of the replicate.", - ) - - data: List[float] = Field( - None, - description="Data that was measured.", - ) - - is_calculated: bool = Field( - False, - description="Whether or not the data has been generated by simulation.", - ) - - uri: Optional[str] = Field( - None, - description="URI of the protein.", - ) - - creator_id: Optional[str] = Field( - None, - description="Unique identifier of the author.", - ) - - # * Private - _time_unit_id: Optional[str] = PrivateAttr(None) - _data_unit_id: Optional[str] = PrivateAttr(None) - _enzmldoc = PrivateAttr(default=None) - - @validator("data") - def check_data_completeness(cls, data: List[float], values: dict): - if values.get("time") is None and data is not None: - # Check if time is given - raise DataError( - "No time values provided for the data yet. \ - Please include time values too, using the 'time' attribute" - ) - elif values.get("time"): - # Check if the data complies with the time values - timesteps = len(values["time"]) - if timesteps != len(data): - raise DataError( - f"The number of steps provided for the data [{len(data)}] does not match the number of timesteps [{timesteps}] for replicate '{values['id']}'" - ) - - return data - - # ! Getters - def data_unitdef(self): - """Returns the appropriate unitdef if an enzmldoc is given""" - - if not self._enzmldoc: - return None - - return self._enzmldoc._unit_dict[self._data_unit_id] - - def time_unitdef(self): - """Returns the appropriate unitdef if an enzmldoc is given""" - - if not self._enzmldoc: - return None - - return self._enzmldoc._unit_dict[self._time_unit_id] - - @deprecated_getter("measurement_id") - def getMeasurement(self): - return self.measurement_id - - @deprecated_getter("is_calculated") - def getIsCalculated(self): - return self.is_calculated - - @deprecated_getter("replicate_id") - def getReplica(self): - return self.id - - @deprecated_getter("species_id") - def getReactant(self): - return self.species_id - - @deprecated_getter("data_type") - def getType(self): - return self.data_type - - @deprecated_getter("data_unit") - def getDataUnit(self): - return self.data_unit - - @deprecated_getter("time_unit") - def getTimeUnit(self): - return self.time_unit - - @deprecated_getter("time' and 'data") - def getData(self, sep=False): - return self.time, self.data diff --git a/pyenzyme/enzymeml/core/unitdef.py b/pyenzyme/enzymeml/core/unitdef.py deleted file mode 100644 index 71cb82c3..00000000 --- a/pyenzyme/enzymeml/core/unitdef.py +++ /dev/null @@ -1,295 +0,0 @@ -# File: unitdef.py -# Project: core -# Author: Jan Range -# License: BSD-2 clause -# Copyright (c) 2022 Institute of Biochemistry and Technical Biochemistry Stuttgart - -from pydantic import Field, validator, validate_arguments -from typing import List, TYPE_CHECKING, Optional -from dataclasses import dataclass - -from pyenzyme.enzymeml.core.enzymemlbase import EnzymeMLBase -from pyenzyme.enzymeml.core.utils import type_checking, deprecated_getter - - -if TYPE_CHECKING: # pragma: no cover - static_check_init_args = dataclass -else: - static_check_init_args = type_checking - - -@static_check_init_args -class BaseUnit(EnzymeMLBase): - """Base unit description including kind, exponent, scale and multiplier""" - - kind: str = Field( - ..., - description="Unit kind used to write SBML.", - ) - - exponent: float = Field( - ..., - description="Unit exponent.", - ) - - scale: int = Field( - ..., - description="Unit scale.", - ) - - multiplier: float = Field( - ..., - description="Unit multiplier.", - ) - - def get_id(self) -> str: - """Internal usage to get IDs from objects without ID attribute""" - - if self.kind: - return self.kind - else: - raise AttributeError("No species ID given.") - - def get_name(self) -> str: - """Returns the appropriate name of the unit""" - - # Get mappings - prefix_mapping, kind_mapping = self._setup_mappings() - - # Retrieve values to generate the name - prefix = prefix_mapping[self.scale] - unit = kind_mapping[self.kind] - - # Special case for time - if unit == "s": - if self.multiplier == 60: - unit = "min" - if self.multiplier == 60 * 60: - unit = "hours" - - if abs(self.exponent) != 1: - exponent = f"^{abs(int(self.exponent))}" - else: - exponent = "" - - return f"{prefix}{unit}{exponent}" - - @staticmethod - def _setup_mappings(): - # TODO integrate this to unitcreator - # Create a mappings - prefix_mapping = { - -15: "f", - -12: "p", - -9: "n", - -6: "u", - -3: "m", - -2: "c", - -1: "d", - 1: "", - 3: "k", - } - - kind_mapping = { - "litre": "l", - "gram": "g", - "second": "s", - "kelvin": "K", - "dimensionless": "dimensionless", - "mole": "mole", - } - - return prefix_mapping, kind_mapping - - -@static_check_init_args -class UnitDef(EnzymeMLBase): - - name: Optional[str] = Field( - None, - description="Name of the SI unit.", - ) - - id: Optional[str] = Field( - None, - description="Interal Identifier of the SI unit.", - ) - - meta_id: Optional[str] = Field( - None, - description="Interal meta identifier of the SI unit.", - ) - - units: List[BaseUnit] = Field( - default_factory=list, - description="List of SI baseunits.", - ) - - ontology: Optional[str] = Field( - None, - description="Ontology of the SI unit.", - ) - - # ! Validators - @validator("id") - def set_meta_id(cls, id: Optional[str], values: dict): - """Sets the meta ID when an ID is provided""" - - if id: - # Set Meta ID with ID - values["meta_id"] = f"METAID_{id.upper()}" - - return id - - @validator("meta_id") - def check_meta_id(cls, meta_id: Optional[str], values: dict): - """Checks if the meta ID provided is following the standard""" - - if values.get("meta_id"): - # When the ID init already set the meta ID - return values.get("meta_id") - - return None - - def _get_unit_name(self): - """Generates the unit name based of the given baseunits""" - - nominator, denominator = [], [] - for unit in self.units: - if unit.exponent > 0: - nominator.append(unit.get_name()) - elif unit.exponent < 0: - denominator.append(unit.get_name()) - - # Catch empty nominators - if not nominator: - nominator = "1" - - # Combine each side and construct the SI string - nominator = " ".join(nominator) - denominator = " ".join(denominator) - - if denominator: - return " / ".join([nominator, denominator]) - else: - return nominator - - # ! Adders - @validate_arguments - def addBaseUnit( - self, kind: str, exponent: float, scale: int, multiplier: float - ) -> None: - """Adds a base unit to the units element and sort the units. - - Args: - kind (str): SBML unit kind string. - exponent (float): Exponent of the unit. - scale (float): Scale of the unit. - multiplier (float): Muliplier of the unit. - """ - - # Create baseunit - baseunit = BaseUnit( - kind=kind, exponent=exponent, scale=scale, multiplier=multiplier - ) - - # Merge both and sort them via kind - if baseunit not in self.units: - self.units.append(baseunit) - self.units = sorted(self.units, key=lambda unit: unit.kind) - - # ! Utilities - def calculateTransformValue(self, kind: str, scale: int): - """Calculates the value that is needed to re-scale the given unit to the desired scale. - - Args: - kind (str): The kind of unit that is used as a reference. - scale (int): The desired scale. - - Raises: - ValueError: Raised when the given unit kind is not part of the unitdef. - - Returns: - float: The value that is needed to re-scale the given unit to the desired scale. - """ - - for base_unit in self.units: - if base_unit.kind == kind: - - # correction factor used for the case of scale=1 - correction_factor = -1 if base_unit.scale == 1 else 0 - - return 10 ** ( - base_unit.exponent * (base_unit.scale - scale + correction_factor) - ) - - raise ValueError(f"Unit kind of {kind} is not part of the unit definition") - - def _getNewName(self) -> str: - """Internal function used to derive a units new name. Will be assigned using enzmldoc._convertTounitDef. - - Returns: - str: The new name of the unit definition. - """ - - # Mapping for abbreviations - kind_mapping = { - "mole": "mole", - "second": "s", - "liter": "l", - "litre": "l", - } - - prefix_mapping = { - -15: "f", - -12: "p", - -9: "n", - -6: "u", - -3: "m", - -2: "c", - -1: "d", - 1: "", - 3: "k", - } - - nominator = list(filter(lambda base_unit: base_unit.exponent > 0, self.units)) - - denominator = list(filter(lambda base_unit: base_unit.exponent < 0, self.units)) - - # Create new unit name - def constructName(base_unit: BaseUnit) -> str: - return f"{prefix_mapping[base_unit.scale]}{kind_mapping[base_unit.kind]}" - - nominator_string = " ".join( - [constructName(base_unit) for base_unit in nominator] - ) - denominator_string = " ".join( - [constructName(base_unit) for base_unit in denominator] - ) - - return " / ".join([nominator_string, denominator_string]) - - # ! Getters - @deprecated_getter("units") - def getUnits(self): - return self.units - - @deprecated_getter("name") - def getName(self): - return self.name - - @deprecated_getter("id") - def getId(self): - return self.id - - @deprecated_getter("meta_id") - def getMetaid(self): - return self.meta_id - - @deprecated_getter("ontology") - def getOntology(self): - return self.ontology - - def getFootprint(self): - sorted_units = [base_unit.dict() for base_unit in self.units] - return list(sorted(sorted_units, key=lambda unit: unit["kind"])) diff --git a/pyenzyme/enzymeml/core/utils.py b/pyenzyme/enzymeml/core/utils.py deleted file mode 100644 index 3fb2179f..00000000 --- a/pyenzyme/enzymeml/core/utils.py +++ /dev/null @@ -1,27 +0,0 @@ -# File: functionalities.py -# Project: core -# Author: Jan Range -# License: BSD-2 clause -# Copyright (c) 2022 Institute of Biochemistry and Technical Biochemistry Stuttgart - - -from deprecation import deprecated - - -def type_checking(cls): - """Used to enable pyDantic type checking, since it is not supported yet by Pylance""" - return cls - - -def deprecated_getter(name: str): - """Decorator used to indicate that a deprecated method has been used""" - return deprecated( - details=f"Use the attribute `{name}` instead.", - ) - - -def deprecated_method(name: str): - """Decorator used to indicate that a deprecated method has been used""" - return deprecated( - details=f"Use the method `{name}` instead.", - ) diff --git a/pyenzyme/enzymeml/core/vessel.py b/pyenzyme/enzymeml/core/vessel.py deleted file mode 100644 index 56d3180e..00000000 --- a/pyenzyme/enzymeml/core/vessel.py +++ /dev/null @@ -1,110 +0,0 @@ -# File: vessel.py -# Project: core -# Author: Jan Range -# License: BSD-2 clause -# Copyright (c) 2022 Institute of Biochemistry and Technical Biochemistry Stuttgart - -from pydantic import Field, PositiveFloat, validator, PrivateAttr, BaseModel -from typing import TYPE_CHECKING, Optional -from dataclasses import dataclass - -from pyenzyme.enzymeml.core.enzymemlbase import EnzymeMLBase -from pyenzyme.enzymeml.core.utils import type_checking, deprecated_getter - -if TYPE_CHECKING: # pragma: no cover - static_check_init_args = dataclass -else: - static_check_init_args = type_checking - - -@static_check_init_args -class Vessel(EnzymeMLBase): - - name: str = Field( - ..., description="Name of the used vessel.", template_alias="Name" - ) - - volume: Optional[PositiveFloat] = Field( - None, - description="Volumetric value of the vessel.", - template_alias="Volume value", - ) - - unit: Optional[str] = Field( - None, description="Volumetric unit of the vessel.", template_alias="Volume unit" - ) - - constant: bool = Field( - True, - description="Whether the volume of the vessel is constant or not.", - ) - - meta_id: Optional[str] = Field( - None, - description="Unique meta identifier of the vessel.", - ) - - id: Optional[str] = Field( - None, - description="Unique identifier of the vessel.", - template_alias="ID", - regex=r"v[\d]+", - ) - - uri: Optional[str] = Field( - None, - description="URI of the vessel.", - ) - - creator_id: Optional[str] = Field( - None, - description="Unique identifier of the author.", - ) - - # * Private - _unit_id: Optional[str] = PrivateAttr(None) - _enzmldoc = PrivateAttr(default=None) - - # ! Validators - @validator("id") - def set_meta_id(cls, id: Optional[str], values: dict): - """Sets the meta ID when an ID is provided""" - - if id: - # Set Meta ID with ID - values["meta_id"] = f"METAID_{id.upper()}" - - return id - - # ! Getters - def unitdef(self): - """Returns the appropriate unitdef if an enzmldoc is given""" - - if not self._enzmldoc: - return None - - return self._enzmldoc._unit_dict[self._unit_id] - - @deprecated_getter("name") - def getName(self): - return self.name - - @deprecated_getter("id") - def getId(self): - return self.id - - @deprecated_getter("meta_id") - def getMetaid(self): - return self.meta_id - - @deprecated_getter("constant") - def getConstant(self): - return self.constant - - @deprecated_getter("volume") - def getSize(self): - return self.volume - - @deprecated_getter("unit") - def getUnit(self): - return self.unit diff --git a/pyenzyme/enzymeml/databases/__init__.py b/pyenzyme/enzymeml/databases/__init__.py deleted file mode 100644 index 96fbe08e..00000000 --- a/pyenzyme/enzymeml/databases/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -# File: __init__.py -# Project: databases -# Author: Jan Range -# License: BSD-2 clause -# Copyright (c) 2022 Institute of Biochemistry and Technical Biochemistry Stuttgart - -from .dataverse import uploadToDataverse diff --git a/pyenzyme/enzymeml/databases/dataverse.py b/pyenzyme/enzymeml/databases/dataverse.py deleted file mode 100644 index e18ea800..00000000 --- a/pyenzyme/enzymeml/databases/dataverse.py +++ /dev/null @@ -1,274 +0,0 @@ -# File: dataverse.py -# Project: core -# Author: Jan Range -# License: BSD-2 clause -# Copyright (c) 2022 Institute of Biochemistry and Technical Biochemistry Stuttgart - -import json -import os -import pydantic - -from typing import Dict, Any, Optional - -from pyDaRUS import EnzymeMl, Citation, Dataset -from pyDaRUS.metadatablocks.enzymeML import Constant -from pyDaRUS.metadatablocks.citation import SubjectEnum - - -def uploadToDataverse( - enzmldoc, - dataverse_name: str, - base_url: Optional[str] = None, - api_token: Optional[str] = None, -) -> None: - """Uploads a givene EnzymeMLDocument object to a dataverse installation. - - It should be noted, that the environment variables 'DATAVERSE_URL' and 'DATAVERSE_API_TOKEN' - should be given approriately before the upload. If not, tje upload cant be done. - - Args: - enzmldoc (EnzymeMLDocument): The EnzymeMLDocument to be uploaded. - dataverse_name (str): Name of the dataverse to be uploaded to. - base_url (str): Base URL of the dataverse to upload. Defaults to None. If None the URL will be drawn from env vars. - api_token (str): API Token of the dataverse to upload. Defaults to None. If None the API Token will be drawn from env vars. - """ - - # Fill in all the metadatablocks - enzml_meta = create_enzymeml_metadatablock(enzmldoc) - citation_meta = create_citation_metadatablock(enzmldoc) - - # Initialize a dataset for the upload - dataset = Dataset() - - # Add all metadatablocks - dataset.add_metadatablock(enzml_meta) - dataset.add_metadatablock(citation_meta) - - # Write EnzymeMLDocument to file - archive_name = f"{enzmldoc.name.replace(' ', '_')}_dv_upload" - enzmldoc.toFile(".", name=archive_name) - - try: - dataset.add_file( - dv_path=f"{archive_name}.omex", local_path=f"{archive_name}.omex" - ) - dataset.upload( - dataverse_name=dataverse_name, - DATAVERSE_URL=base_url, - API_TOKEN=api_token, - ) - except Exception as e: - os.remove(f"{archive_name}.omex") - raise e - - # Remove the unsued EnzymeML document - os.remove(f"{archive_name}.omex") - - -def create_enzymeml_metadatablock( - enzmldoc, -): - - # Initialize the EnzymeML metadatablock - enzml_meta = EnzymeMl() - - # Vessels - vessel_mapping = { - "name": "name", - "volume": "size", - "unit": "unit", - "constant": "constant", - } - - for vessel in enzmldoc.vessel_dict.values(): - json_data = json.loads(vessel.json()) - - # Apply corrections to match controlled vocabs - json_data["constant"] = ( - Constant.constant.value - if json_data["constant"] - else Constant.not_constant.value - ) - - add_object(json_data, vessel_mapping, enzml_meta.add_vessels) - - protein_mapping = { - # "id": "identifier", - "name": "name", - "vessel_id": "vessel_reference", - "init_conc": "initial_concentration", - "unit": "unit", - "constant": "constant", - "sequence": "sequence", - "organism": "organism", - "uniprotid": "uniprotid", - "ecnumber": "ecnumber", - "ontology": "sbo_term", - } - - for protein in enzmldoc.protein_dict.values(): - json_data = json.loads(protein.json()) - - # Apply corrections to match controlled vocabs - json_data["constant"] = ( - Constant.constant.value - if json_data["constant"] - else Constant.not_constant.value - ) - - add_object(json_data, protein_mapping, enzml_meta.add_proteins) - - reactant_mapping = { - # "id": "identifier", - "name": "name", - "vessel_id": "vessel_reference", - "init_conc": "initial_concentration", - "unit": "unit", - "constant": "constant", - "inchi": "inchicode", - "smiles": "smilescode", - "ontology": "sbo_term", - } - - for reactant in enzmldoc.reactant_dict.values(): - json_data = json.loads(reactant.json()) - - # Apply corrections to match controlled vocabs - json_data["constant"] = ( - Constant.constant.value - if json_data["constant"] - else Constant.not_constant.value - ) - - add_object(json_data, reactant_mapping, enzml_meta.add_reactants) - - reaction_mapping = { - "name": "name", - "temperature": "temperature_value", - "temperature_unit": "temperature_unit", - "ph": "ph_value", - } - - for reaction in enzmldoc.reaction_dict.values(): - - params: Dict[str, Any] = { - reaction_mapping.get(key): item - for key, item in reaction.dict().items() - if reaction_mapping.get(key) and repr(item) != "nan" and item - } - - # Apply corrections - if params.get("temperature_unit"): - params["temperature_unit"] = ( - "Kelvin" if params["temperature_unit"] == "K" else "Celsius" - ) - - # Extract al elements present in the reaction - educts = [ - enzmldoc.getAny(element.species_id).name for element in reaction.educts - ] - - products = [ - enzmldoc.getAny(element.species_id).name for element in reaction.products - ] - - modifiers = [ - enzmldoc.getAny(element.species_id).name for element in reaction.products - ] - - # Create corresponding string representations - params["educts"] = ", ".join(educts) - params["products"] = ", ".join(products) - params["modifiers"] = ", ".join(modifiers) - params["equation"] = " + ".join(educts) + " -> " + " + ".join(products) - - enzml_meta.add_reactions(**params) - - if reaction.model: - # Report on the model if given - law_params = kinetic_law_params(reaction) - enzml_meta.add_kinetic_law(**law_params) - - for param in reaction.model.parameters: - json_data = json.loads(param.json()) - - enzml_meta.add_kinetic_parameters( - name=f"{json_data['name']}_{reaction.id}", - value=json_data["value"], - unit=json_data["unit"], - sbo_term=json_data.get("ontology"), - ) - - return enzml_meta - - -def add_object(json_data, mapping, add_fun): - - params = { - mapping.get(key): item - for key, item in json_data.items() - if mapping.get(key) and repr(item) != "nan" and item - } - - # TODO fix metadatablock to accept other units than MOLAR - if params.get("unit"): - params["unit"] = params["unit"].replace("mole / l", "M") - - try: - # Add infos to metadatablock - add_fun(**params) - except pydantic.ValidationError as e: - - # TODO find a better way to handle this error - for error in e.errors(): - if error["loc"][0] == "unit": - params.pop("unit") - add_fun(**params) - - return None - - raise e - - -def kinetic_law_params(reaction: "EnzymeReaction") -> Dict[str, str]: # noqa: F821 - """Retrieves the arguments to add a kinetic law to an EnzymeML Metadatablock""" - - kinetic_law_mapping = {"name": "name", "equation": "kinetic_model"} - - # Get the model - model = reaction.model - - params = { - kinetic_law_mapping.get(key): item - for key, item in model.dict().items() - if kinetic_law_mapping.get(key) and repr(item) != "nan" and item - } - - params["reaction_reference"] = reaction.id - - return params - - -def create_citation_metadatablock(enzmldoc: "EnzymeMLDocument"): # noqa: F821 - - # Initialize the Citation metadatablock - citation_meta = Citation( - title=enzmldoc.name, - subject=[ - SubjectEnum.chemistry, - SubjectEnum.medicine___health_and__life__sciences, - ], - ) - - # Add author information - for creator in enzmldoc.creator_dict.values(): - name = f"{creator.given_name} {creator.family_name}" - citation_meta.add_author(name=name) - citation_meta.add_contact(name=name, email=creator.mail) - - # Add descripiton - citation_meta.add_description( - text=f"EnzymeML document reporting on {enzmldoc.name}" - ) - - return citation_meta diff --git a/pyenzyme/enzymeml/models/__init__.py b/pyenzyme/enzymeml/models/__init__.py deleted file mode 100644 index 72d8b746..00000000 --- a/pyenzyme/enzymeml/models/__init__.py +++ /dev/null @@ -1,12 +0,0 @@ -# File: __init__.py -# Project: models -# Author: Jan Range -# License: BSD-2 clause -# Copyright (c) 2022 Institute of Biochemistry and Technical Biochemistry Stuttgart - -from pyenzyme.enzymeml.models.kineticmodel import KineticModel -from pyenzyme.enzymeml.models.michaelismenten import ( - MichaelisMentenVMax, - MichaelisMentenKCat, -) -from pyenzyme.enzymeml.models.kineticmodel import KineticParameter diff --git a/pyenzyme/enzymeml/models/kineticmodel.py b/pyenzyme/enzymeml/models/kineticmodel.py deleted file mode 100644 index 4a0a7358..00000000 --- a/pyenzyme/enzymeml/models/kineticmodel.py +++ /dev/null @@ -1,426 +0,0 @@ -# File: kineticmodel.py -# Project: models -# Author: Jan Range -# License: BSD-2 clause -# Copyright (c) 2022 Institute of Biochemistry and Technical Biochemistry Stuttgart - -import ast -import re -import numexpr - -from typing import Any, List, TYPE_CHECKING, Optional -from pydantic import Field -from dataclasses import dataclass - -from pydantic.fields import PrivateAttr - -from pyenzyme.enzymeml.core.enzymemlbase import EnzymeMLBase -from pyenzyme.enzymeml.core.ontology import SBOTerm -from pyenzyme.enzymeml.core.utils import type_checking, deprecated_getter - -if TYPE_CHECKING: # pragma: no cover - static_check_init_args = dataclass -else: - static_check_init_args = type_checking - - -@static_check_init_args -class KineticParameter(EnzymeMLBase): - - name: str = Field( - ..., - description="Name of the estimated parameter.", - ) - - value: Optional[float] = Field( - None, - description="Numerical value of the estimated parameter.", - ) - - unit: Optional[str] = Field( - None, - description="Unit of the estimated parameter.", - ) - - initial_value: Optional[float] = Field( - None, description="Initial value that was used for the parameter estimation." - ) - - upper: Optional[float] = Field( - None, description="Upper bound of the estimated parameter." - ) - - lower: Optional[float] = Field( - None, description="Lower bound of the estimated parameter." - ) - - is_global: bool = Field( - False, description="Specifies if this parameter is a global parameter." - ) - - stdev: Optional[float] = Field( - None, description="Standard deviation of the estimated parameter." - ) - - constant: bool = Field(False, description="Specifies if this parameter is constant") - - ontology: Optional[SBOTerm] = Field( - None, - description="Type of the estimated parameter.", - ) - - # * Private attributes - _unit_id: Optional[str] = PrivateAttr(None) - _enzmldoc = PrivateAttr(default=None) - - def get_id(self): - """For logging. Dont bother.""" - return self.name - - # ! Utilities - def update(self, **kwargs): - """Adds attributes to this parameter based in kwargs""" - self.__dict__.update(kwargs) - - # ! Getters - def unitdef(self): - """Returns the appropriate unitdef if an enzmldoc is given""" - - if not self._enzmldoc: - return None - - return self._enzmldoc._unit_dict[self._unit_id] - - -@static_check_init_args -class KineticModel(EnzymeMLBase): - - name: str = Field( - ..., - description="Name of the kinetic law.", - ) - - equation: str = Field( - ..., - description="Equation for the kinetic law.", - ) - - parameters: List[KineticParameter] = Field( - default_factory=list, - description="List of estimated parameters.", - ) - - ontology: Optional[SBOTerm] = Field( - None, - description="Type of the estimated parameter.", - ) - - # ! Add methods - def addParameter( - self, - name: str, - value: Optional[float] = None, - unit: Optional[str] = None, - initial_value: Optional[float] = None, - upper: Optional[float] = None, - lower: Optional[float] = None, - is_global: bool = False, - stdev: Optional[float] = None, - constant: bool = False, - ontology: Optional[SBOTerm] = None, - ): - """Adds a parameter to the KineticModel object - - Args: - name (str): Name of the estimated parameter. - value (Optional[float], optional): Numerical value of the estimated parameter.. Defaults to None. - unit (Optional[str], optional): Unit of the estimated parameter.. Defaults to None. - initial_value (Optional[float], optional): Initial value that was used for the parameter estimation. Defaults to None. - upper (Optional[float], optional): Upper bound of the estimated parameter.. Defaults to None. - lower (Optional[float], optional): Lower bound of the estimated parameter.. Defaults to None. - is_global (bool, optional): Specifies if this parameter is a global parameter.. Defaults to False. - stdev (Optional[float], optional): Standard deviation of the estimated parameter.. Defaults to None. - constant (bool, optional): Specifies if this parameter is constant. Defaults to False. - ontology (Optional[SBOTerm], optional): Type of the estimated parameter.. Defaults to None. - """ - - self.parameters.append( - KineticParameter( - name=name, - value=value, - unit=unit, - initial_value=initial_value, - upper=upper, - lower=lower, - is_global=is_global, - stdev=stdev, - constant=constant, - ontology=ontology, - ) - ) - - self.__dict__["_" + self.parameters[-1].name] = self.parameters[-1] - - # ! Initializers - @staticmethod - def createGenerator(name: str, equation: str, **parameters): - """Creates an abstract model generator to generated specific models. - - Args: - name (str): Name of the model. - equation (str): Equation - - Returns: - [type]: [description] - """ - - return ModelFactory(name=name, equation=equation, **parameters) - - @classmethod - def fromEquation(cls, name: str, equation: str, enzmldoc: Optional[Any] = None): - """Creates a Kinetic Model instance from an equation - - Args: - equation (str): Mathematical equation decribing the model. - - Returns: - KineticModel: Resulting kinetic model - """ - - if enzmldoc: - # Convert an equation with names to one with IDs - - class_name = enzmldoc.__class__.__name__ - if class_name != "EnzymeMLDocument": - # Guard clause - raise TypeError( - f"Expected type 'EnzymeMLDocument' for argument 'enzmldoc'. Got '{class_name}' instead." - ) - - # Now perform the actual conversion - equation = cls._convert_names_to_ids(enzmldoc, equation) - - # Create a new instance - cls = cls(name=name, equation=equation) - - # Parse equation and add parameters - used_species = [] - for node in ast.walk(ast.parse(equation)): - if isinstance(node, ast.Name): - name = node.id - regex = re.compile(r"[s|p|c]\d*") - if not bool(regex.match(name)) and "_" + name not in cls.__dict__: - cls.addParameter(name=name) - else: - used_species.append(name) - - if not used_species: - raise TypeError( - "It seems like you have included no species (Protein, Reactant, Complex) in your equation. " - "Are you using names? Please set your 'EnzymeMLDocument' to the argument 'enzmldoc' in order to proceed" - ) - - return cls - - @staticmethod - def _convert_names_to_ids(enzmldoc, equation: str): - """Converts names in an equation to appropriate IDs given in an EnzymeMLDocument""" - - all_species = { - **enzmldoc.protein_dict, - **enzmldoc.reactant_dict, - **enzmldoc.complex_dict, - } - - for id, species in all_species.items(): - equation = equation.replace(species.name, id) - - return equation - - # ! Utilities - - def get_id(self) -> str: - return self.name - - def evaluate(self, **kwargs): - """Calculates the the reaction velocity given the internal parameters and variable concentrations handed as keyword arguments. - - Examples: - - model = KineticModel(...) <- Lets assume this is a Menten Model with already estimated parameters - print(model.evaluate(protein=10.0, substrate=1.0)) - - >> 1.002 <- This is the resulting velocity - - Returns: - float: Corresponding reaction velocity given the internal parameters and variables. - """ - - # Initialize a dictionary which will take care to create an eval string - params = {} - - # Get the values for the parameters - for parameter in self.parameters: - if parameter.value: - params.update({parameter.name: parameter.value}) - - # Now replace the strings in the equation to evaluate it using numexpr - eval_string = self.equation - for key, value in {**kwargs, **params}.items(): - - eval_string = eval_string.replace(key, str(value)) - - return numexpr.evaluate(eval_string).tolist() - - # ! Getters - - def getParameter(self, name: str) -> KineticParameter: - """Returns a parameter of choice from the model. - - Args: - name (str): Name of the parameter. - - Raises: - KeyError: If the parameter does not exist. - - Returns: - KineticParameter: The desired parameter. - """ - - try: - return next(filter(lambda parm: parm.name == name, self.parameters)) - except StopIteration: - raise KeyError(f"Parameter {name} not found in the model.") - - @deprecated_getter("equation") - def getEquation(self): - return self.equation - - @deprecated_getter("parameters") - def getParameters(self): - return self.parameters - - @deprecated_getter("name") - def getName(self): - return self.name - - -class ModelFactory: - - equation: str - parameters: List[str] - name: str - - def __init__( - self, name: str, equation: str, ontology: Optional[SBOTerm] = None, **parameters - ) -> None: - - # Parse the eqation and get all names and variables - self.variables = self.parse_equation(equation) - - # Initialize the model - self.model = KineticModel(name=name, equation=equation, ontology=None) - - for name, options in parameters.items(): - - # Remove parameter from variables - self.variables.remove(name) - - # Get all teh options for the parameter - init_value = options.get("init_value") - value = options.get("value") - unit = options.get("unit") - ontology = options.get("ontology") - stdev = options.get("stdev") - upper = options.get("upper") - lower = options.get("lower") - constant = options.get("constant") - - # Convert constant to bool if not set - if not constant: - constant = False - - parameter = KineticParameter( - name=name, - value=value, - unit=unit, - initial_value=init_value, - stdev=stdev, - ontology=ontology, - upper=upper, - lower=lower, - is_global=False, - constant=constant, - ) - - self.model.parameters.append(parameter) - - def __call__(self, mapping: dict = {}, **variables) -> KineticModel: - """Returns a KineticModel that is suited for the given parameters.""" - - # Copy the internal object and modify it to the needs - model = KineticModel(**self.model.dict()) - - # Replace everything - for stock_variable in self.variables: - - try: - identifier = variables[stock_variable] - - if isinstance(identifier, list): - # Allow multiple species - identifier = [repr(name) for name in identifier] - identifier = f"({' * '.join(identifier)})" - else: - identifier = repr(identifier) - - model.equation = model.equation.replace(stock_variable, identifier) - - except KeyError: - raise KeyError( - f"Variable {stock_variable} has not been given. Please make sure to cover all variables: [{repr(self.variables)}]" - ) - - # Apply mapping - if mapping: - self._apply_mapping(mapping, model) - - return model - - def _apply_mapping(self, mapping: dict, model: KineticModel): - """Applies a mapping that has been given to the model.""" - - for param_old, param_new in mapping.items(): - model.equation = model.equation.replace(param_old, param_new) - - # Variable to control when a parameter has found - found = False - - for index, parameter in enumerate(model.parameters): - if parameter.name == param_old: - - # Copy old and add new parameter - nu_param = parameter.copy() - nu_param.name = param_new - model.parameters.append(nu_param) - - found = True - - # Remove old one - del model.parameters[index] - continue - - if not found: - raise KeyError(f"Parameter {param_old} is not part of the model.") - - @staticmethod - def parse_equation(equation: str): - return list( - set( - [ - node.id - for node in ast.walk(ast.parse(equation)) - if isinstance(node, ast.Name) - ] - ) - ) diff --git a/pyenzyme/enzymeml/models/michaelismenten.py b/pyenzyme/enzymeml/models/michaelismenten.py deleted file mode 100644 index 8ff38584..00000000 --- a/pyenzyme/enzymeml/models/michaelismenten.py +++ /dev/null @@ -1,107 +0,0 @@ -# File: michaelismenten.py -# Project: models -# Author: Jan Range -# License: BSD-2 clause -# Copyright (c) 2021 Institute of Biochemistry and Technical Biochemistry Stuttgart - -from typing import Any, Dict -from pyenzyme.enzymeml.core.ontology import SBOTerm -from pyenzyme.enzymeml.models.kineticmodel import ModelFactory -from pyenzyme.enzymeml.core.exceptions import SpeciesNotFoundError - - -def MichaelisMentenKCat( - substrate: str, - protein: str, - enzmldoc, - k_cat: Dict[str, Any] = {"ontology": SBOTerm.K_CAT}, - k_m: Dict[str, Any] = {"ontology": SBOTerm.K_M}, -): - """Sets up a rate law following the Henri-Michaelis-Menten law. - - v = k_cat * protein * substrate / (k_m + substrate) - - Args: - substrate (str): Identifier or name of the substrate. - protein (str): Identifier or name of the protein. - enzmldoc ([type]): EnzymeML document to which the model will be adopted. - k_cat (Dict[str, Any], optional): Dictionary for parameter config. See KineticParameter class for details. Defaults to {"ontology": SBOTerm.K_CAT}. - k_m (Dict[str, Any], optional): Dictionary for parameter config. See KineticParameter class for details. Defaults to {"ontology": SBOTerm.K_CAT}. - - Returns: - KineticModel: Michaelis-Menten model in K_cat form with the specified parameters. - """ - # Check if the given IDs are part of the EnzymeML document already - if substrate not in enzmldoc.getSpeciesIDs(): - raise SpeciesNotFoundError( - species_id=substrate, enzymeml_part="Reactants/Proteins" - ) - - if protein not in enzmldoc.getSpeciesIDs(): - raise SpeciesNotFoundError( - species_id=protein, enzymeml_part="Reactants/Proteins" - ) - - # Check if ontologies are added, if not add them - if k_m.get("ontology") is None: - k_m["ontology"] = SBOTerm.K_M - - if k_cat.get("ontology") is None: - k_cat["ontology"] = SBOTerm.K_CAT - - # Create the model using a factory - model = ModelFactory( - name="Michaelis-Menten Rate Law", - equation="k_cat * protein * substrate / (k_m + substrate)", - k_cat=k_cat, - k_m=k_m, - ontology=SBOTerm.MICHAELIS_MENTEN, - ) - - return model(protein=protein, substrate=substrate) - - -def MichaelisMentenVMax( - substrate: str, - enzmldoc, - vmax: Dict[str, Any] = {"ontology": SBOTerm.V_MAX}, - k_m: Dict[str, Any] = {"ontology": SBOTerm.K_M}, -): - """Sets up a rate law following the Henri-Michaelis-Menten law. - - v = vmax * substrate / (k_m + substrate) - - Args: - substrate (str): Identifier or name of the substrate. - protein (str): Identifier or name of the protein. - enzmldoc ([type]): EnzymeML document to which the model will be adopted. - k_cat (Dict[str, Any], optional): Dictionary for parameter config. See KineticParameter class for details. Defaults to {"ontology": SBOTerm.K_CAT}. - k_m (Dict[str, Any], optional): Dictionary for parameter config. See KineticParameter class for details. Defaults to {"ontology": SBOTerm.K_CAT}. - - Returns: - KineticModel: Michaelis-Menten model in K_cat form with the specified parameters. - """ - - # Check if the given IDs are part of the EnzymeML document already - if substrate not in enzmldoc.getSpeciesIDs(): - raise SpeciesNotFoundError( - species_id=substrate, enzymeml_part="Reactants/Proteins" - ) - - # Check if ontologies are added, if not add them - if k_m.get("ontology") is None: - k_m["ontology"] = SBOTerm.K_M - - if vmax.get("ontology") is None: - vmax["ontology"] = SBOTerm.V_MAX - - # Create the model using a factory - model = ModelFactory( - name="Michaelis-Menten Rate Law", - equation="vmax * substrate / (k_m + substrate)", - vmax=vmax, - k_m=k_m, - ontology=SBOTerm.MICHAELIS_MENTEN, - ) - - return model(substrate=substrate) diff --git a/pyenzyme/enzymeml/tools/__init__.py b/pyenzyme/enzymeml/tools/__init__.py deleted file mode 100644 index cbd15f14..00000000 --- a/pyenzyme/enzymeml/tools/__init__.py +++ /dev/null @@ -1,17 +0,0 @@ -""" -File: __init__.py -Project: tools -Author: Jan Range -License: BSD-2 clause ------ -Last Modified: Tuesday June 22nd 2021 10:15:24 pm -Modified By: Jan Range () ------ -Copyright (c) 2021 Institute of Biochemistry and Technical Biochemistry Stuttgart -""" - -from pyenzyme.enzymeml.tools.enzymemlwriter import EnzymeMLWriter -from pyenzyme.enzymeml.tools.unitparser import UnitParser -from pyenzyme.enzymeml.tools.unitcreator import UnitCreator -from pyenzyme.enzymeml.tools.templatereader import read_template -from pyenzyme.enzymeml.tools.validator import EnzymeMLValidator diff --git a/pyenzyme/enzymeml/tools/enzymemlreader.py b/pyenzyme/enzymeml/tools/enzymemlreader.py deleted file mode 100644 index c02aed62..00000000 --- a/pyenzyme/enzymeml/tools/enzymemlreader.py +++ /dev/null @@ -1,939 +0,0 @@ -# File: enzymemlreader.py -# Project: tools -# Author: Jan Range -# License: BSD-2 clause -# Copyright (c) 2022 Institute of Biochemistry and Technical Biochemistry Stuttgart - -import os -import re -from typing import Dict, List, Tuple, Union, Optional -import libsbml -import xml.etree.ElementTree as ET -import pandas as pd -import tempfile - -from pyenzyme.enzymeml.core.creator import Creator -from pyenzyme.enzymeml.core.enzymemldocument import EnzymeMLDocument -from pyenzyme.enzymeml.core.protein import Protein -from pyenzyme.enzymeml.core.complex import Complex -from pyenzyme.enzymeml.core.reactant import Reactant -from pyenzyme.enzymeml.core.replicate import Replicate -from pyenzyme.enzymeml.core.unitdef import UnitDef -from pyenzyme.enzymeml.core.vessel import Vessel -from pyenzyme.enzymeml.core.measurement import Measurement -from pyenzyme.enzymeml.core.enzymereaction import EnzymeReaction, ReactionElement -from pyenzyme.enzymeml.models.kineticmodel import KineticModel, KineticParameter -from pyenzyme.enzymeml.core.ontology import DataTypes, EnzymeMLPart, SBOTerm -from pyenzyme.enzymeml.core.abstract_classes import ( - AbstractSpeciesFactory, - AbstractSpecies, -) - -from libsbml import SBMLReader -from libcombine import CombineArchive -from io import StringIO - -# ! Factories - - -class ReactantFactory(AbstractSpeciesFactory): - """Returns an un-initialized reactant species object""" - - enzymeml_part: str = "reactant_dict" - - def get_species(self, **kwargs) -> AbstractSpecies: - reactant = Reactant(**kwargs) - reactant._unit_id = kwargs["_unit_id"] - return reactant - - -class ProteinFactory(AbstractSpeciesFactory): - """Returns an un-initialized protein species object""" - - enzymeml_part: str = "protein_dict" - - def get_species(self, **kwargs) -> AbstractSpecies: - protein = Protein(**kwargs) - protein._unit_id = kwargs["_unit_id"] - return protein - - -class ComplexFactory(AbstractSpeciesFactory): - """Returns an un-initialized complex species object""" - - enzymeml_part: str = "complex_dict" - - def get_species(self, **kwargs) -> AbstractSpecies: - complex = Complex(**kwargs) - complex._unit_id = kwargs["_unit_id"] - return complex - - -def species_factory_mapping(sbo_term: str) -> AbstractSpeciesFactory: - """Maps from SBOTerms to the appropriate species using a factory""" - - # Get the enum entity for the mapping - entity = EnzymeMLPart.entityFromSBOTerm(sbo_term) - - factory_mapping = { - "PROTEIN": ProteinFactory(), - "SMALL_MOLECULE": ReactantFactory(), - "ION": ReactantFactory(), - "RADICAL": ReactantFactory(), - "MACROMOLECULAR_COMPLEX": ComplexFactory(), - "PROTEIN_COMPLEX": ComplexFactory(), - "DIMER": ComplexFactory(), - } - - return factory_mapping[entity] - - -class EnzymeMLReader: - def readFromFile(self, path: str) -> EnzymeMLDocument: - """ - Reads EnzymeML document to an object layer EnzymeMLDocument class. - - Args: - path (str): Path to .omex container or - folder destination for plain .xml - """ - - if not path.endswith(".omex"): - raise TypeError( - f"File {os.path.basename(path)} is not a valid OMEX archive" - ) - - # Read omex archive - self.path = path - self.archive = CombineArchive() - self.archive.initializeFromArchive(self.path) - - content = self.archive.extractEntryToString("./experiment.xml") - desc = self.archive.getMetadataForLocation("./experiment.xml") - - # Get previous logs - log = self.archive.extractEntryToString("./history.log") - - # Read experiment file (sbml) - reader = SBMLReader() - document = reader.readSBMLFromString(content) - document.getErrorLog().printErrors() - model = document.getModel() - - # Initialize EnzymeMLDocument object - self.enzmldoc = EnzymeMLDocument( - name=model.getName(), level=model.getLevel(), version=model.getVersion() - ) - - # Add logs to the document - self.enzmldoc.log = log - - # Fetch references - self._getRefs(model, self.enzmldoc) - - # Fetch Creators - self._getCreators(omex_desc=desc, enzmldoc=self.enzmldoc) - - # try: - # # TODO extract VCard - # model_hist = model.getModelHistory() - # enzmldoc.setCreated( - # model_hist.getCreatedDate().getDateAsString() - # ) - - # enzmldoc.setModified( - # model_hist.getModifiedDate().getDateAsString() - # ) - - # Fetch units - unitDict = self._getUnits(model) - self.enzmldoc._unit_dict = unitDict - - # Fetch Vessel - vessel = self._getVessel(model, self.enzmldoc) - self.enzmldoc.vessel_dict = vessel - - # Fetch Species - protein_dict, reactant_dict, complex_dict = self._getSpecies( - model, self.enzmldoc - ) - - self.enzmldoc.reactant_dict = reactant_dict - self.enzmldoc.protein_dict = protein_dict - self.enzmldoc.complex_dict = complex_dict - - # fetch global parameters - self._getGlobalParameters(model, self.enzmldoc) - - # fetch reaction - reaction_dict = self._getReactions(model, self.enzmldoc) - self.enzmldoc.reaction_dict = reaction_dict - - # fetch Measurements - measurement_dict = self._getData(model, self.enzmldoc) - self.enzmldoc.measurement_dict = measurement_dict - - # fetch added files - self._getFiles(self.enzmldoc) - - del self.path - - return self.enzmldoc - - @staticmethod - def _sboterm_to_enum(sbo_term: int) -> Optional[SBOTerm]: - try: - sbo_string: str = libsbml.SBO.intToString(sbo_term) - - if len(sbo_string) == 0: - return None - - return SBOTerm(sbo_string) - - except ValueError: - return None - - def _getRefs(self, model, enzmldoc): - - if len(model.getAnnotationString()) == 0: - return - - root = ET.fromstring(model.getAnnotationString())[0] - - for element in root: - if "doi" in element.tag: - enzmldoc.doi = element.text - elif "pubmedID" in element.tag: - enzmldoc.pubmedid = element.text - elif "url" in element.tag: - enzmldoc.url = element.text - - def _getCreators(self, omex_desc, enzmldoc) -> None: - """Fetches all creators from an Combine archive's metadata. - - Args: - omex_desc (OMEX obj): Combine metadata description. - - Returns: - List[Creator]: Fetched list of creator objects. - """ - - # Get the number of creators to iterate - numCreators = omex_desc.getNumCreators() - - for i in range(numCreators): - # Fetch creator information - creator = omex_desc.getCreator(i) - - enzmldoc.addCreator( - Creator( - family_name=creator.getFamilyName(), - given_name=creator.getGivenName(), - mail=creator.getEmail(), - ), - log=False, - ) - - def _getUnits(self, model: libsbml.Model) -> Dict[str, UnitDef]: - """Fetches all the units present in the SBML model.^ - - Args: - model (libsbml.Model): The SBML model from which the units are fetched. - - Returns: - [type]: [description] - """ - - unitDict = {} - unitdef_list = model.getListOfUnitDefinitions() - - for unit in unitdef_list: - - # Get infos from the SBML model - name = unit.name - id = unit.id - meta_id = unit.meta_id - ontology = None # TODO get unit ontology - - # Create unit definition - unitdef = UnitDef(name=name, id=id, ontology=ontology, meta_id=meta_id) - - for baseunit in unit.getListOfUnits(): - # Construct unit definition with base units - unitdef.addBaseUnit( - kind=baseunit.toXMLNode().getAttrValue("kind"), - exponent=baseunit.getExponentAsDouble(), - scale=baseunit.getScale(), - multiplier=baseunit.getMultiplier(), - ) - - # Finally add the unit definition - unitDict[id] = unitdef - - return unitDict - - def _getVessel( - self, model: libsbml.Model, enzmldoc: "EnzymeMLDocument" - ) -> Dict[str, Vessel]: - """Fetches all the vessels/compartments present in the SBML model. - - Args: - model (libsbml.Model): The SBML model from which the vessels are fetched. - - Returns: - Dict[str, Vessel]: Corresponding vessel dictionary that has been converted. - """ - - vessel_dict = {} - compartments = model.getListOfCompartments() - - for compartment in compartments: - name = compartment.getName() - id = compartment.getId() - - # Set up dictionary for optional attributes - params = {} - - if compartment.isSetVolume(): - params["volume"] = compartment.getSize() - params["_unit_id"] = compartment.getUnits() - params["unit"] = enzmldoc.getUnitString(params["_unit_id"]) - - vessel = Vessel(name=name, id=id, **params) - - vessel._unit_id = params.get("_unit_id") - vessel._enzmldoc = self.enzmldoc - - vessel_dict[vessel.id] = vessel - - return vessel_dict - - def _getSpecies( - self, model: libsbml.Model, enzmldoc: "EnzymeMLDocument" - ) -> Tuple[Dict[str, Protein], Dict[str, Reactant], Dict[str, Complex]]: - - # initialize dictionaries and get species - protein_dict = {} - reactant_dict = {} - complex_dict = {} - species_list = model.getListOfSpecies() - - for species in species_list: - - # Check if init conc is given - init_conc = species.getInitialConcentration() - unit_id = species.getSubstanceUnits() - - if repr(init_conc) == "nan": - # Handle not existent init concs - init_conc = None - - if unit_id: - # Get unit string if given - unit = enzmldoc.getUnitString(unit_id) - else: - unit = None - - # Get SBOTerm, but if there is none, give default - ontology = self._sboterm_to_enum(species.getSBOTerm()) - - # Parse annotations and construct a kwargs dictionary - param_dict = self._parseSpeciesAnnotation(species.getAnnotationString()) - param_dict.update( - { - "id": species.getId(), - "meta_id": species.getMetaId(), - "vessel_id": species.getCompartment(), - "name": species.getName(), - "constant": species.getConstant(), - "ontology": ontology, - "init_conc": init_conc, - "_unit_id": unit_id, - "unit": unit, - # Some attributes need special care - "ecnumber": param_dict.get("e_cnumber"), - "uniprotid": param_dict.get("uniprot_id"), - "participants": param_dict.get("participant"), - } - ) - - # Get species factory from ontology - try: - # Current version uses SBOTerms to distinguish between entities - species_factory = species_factory_mapping(param_dict["ontology"]) - except ValueError: - # Backwards compatibility to old documents that do not incorporate SBOTerms - if param_dict["id"].startswith("s"): - species_factory = species_factory_mapping( - SBOTerm.SMALL_MOLECULE.value - ) - - # Remove ontology to get the default - param_dict.pop("ontology") - - elif param_dict["id"].startswith("p"): - species_factory = species_factory_mapping(SBOTerm.PROTEIN.value) - - # Remove ontology to get the default - param_dict.pop("ontology") - else: - raise ValueError( - f"ID {param_dict['id']} is not supported. Please use either of these 'p|s|c'" - ) - - # Use factory to get the species class - species = species_factory.get_species(**param_dict) - species._enzmldoc = self.enzmldoc - - if species_factory.enzymeml_part == "protein_dict": - protein_dict[species.id] = species - elif species_factory.enzymeml_part == "reactant_dict": - reactant_dict[species.id] = species - elif species_factory.enzymeml_part == "complex_dict": - complex_dict[species.id] = species - - return protein_dict, reactant_dict, complex_dict - - @staticmethod - def _parseSpeciesAnnotation(annotationString): - - if len(annotationString) == 0: - return dict() - - def camel_to_snake(name): - name = re.sub("(.)([A-Z][a-z]+)", r"\1_\2", name) - return re.sub("([a-z0-9])([A-Z])", r"\1_\2", name).lower() - - speciesAnnot = ET.fromstring(annotationString)[0] - - # Initialize annotation dictionary - param_dict = {} - - for enzymeMLAnnot in speciesAnnot: - key = enzymeMLAnnot.tag.split("}")[-1] - key = camel_to_snake(key) - attribute = enzymeMLAnnot.text - - if key in param_dict: - # Take care of list attributes - try: - param_dict[key].append(attribute) - except AttributeError: - param_dict[key] = [param_dict[key], attribute] - - continue - - param_dict[key] = attribute - - return param_dict - - def _getGlobalParameters(self, model: libsbml.Model, enzmldoc): - """Fetches global parameters from the SBML model""" - - parameters = model.getListOfParameters() - - for parameter in parameters: - parameter = self._parse_parameter(parameter, enzmldoc) - parameter.is_global = True - parameter._enzmldoc = self.enzmldoc - - enzmldoc.global_parameters[parameter.name] = parameter - - def _getReactions( - self, model: libsbml.Model, enzmldoc: "EnzymeMLDocument" - ) -> Dict[str, EnzymeReaction]: - - # Get SBML list of reactions - reactionsList = model.getListOfReactions() - - # Initialize reaction dictionary - reaction_dict = {} - - # parse annotations and filter replicates - for reaction in reactionsList: - - # Fetch conditions - if reaction.getAnnotationString(): - reactionAnnot = ET.fromstring(reaction.getAnnotationString())[0] - conditions = self._parseConditions(reactionAnnot, enzmldoc) - else: - conditions = {} - - # Fetch Elements in SpeciesReference - educts = self._getElements( - reaction.getListOfReactants(), ontology=SBOTerm.SUBSTRATE - ) - - products = self._getElements( - reaction.getListOfProducts(), ontology=SBOTerm.PRODUCT - ) - - modifiers = self._getElements( - reaction.getListOfModifiers(), modifiers=True, ontology=SBOTerm.CATALYST - ) - - # Get the ontology - ontology = self._sboterm_to_enum(reaction.getSBOTerm()) - - if ontology is None: - ontology = SBOTerm.BIOCHEMICAL_REACTION - - # Create object - enzyme_reaction = EnzymeReaction( - id=reaction.id, - meta_id="META_" + reaction.id.upper(), - name=reaction.name, - reversible=reaction.reversible, - educts=educts, - products=products, - modifiers=modifiers, - ontology=ontology, - **conditions, - ) - - # Check for kinetic model - if reaction.getKineticLaw(): - # Check if model exists - kinetic_law = reaction.getKineticLaw() - kinetic_model = self._getKineticModel(kinetic_law, enzmldoc) - enzyme_reaction.model = kinetic_model - - # Add global parameters - for name, global_parameter in enzmldoc.global_parameters.items(): - # Keep a reference to the global paremeter - if name in enzyme_reaction.model.equation: - enzyme_reaction.model.parameters.append(global_parameter) - - # Add reaction to reaction_dict - enzyme_reaction._enzmldoc = self.enzmldoc - reaction_dict[enzyme_reaction.id] = enzyme_reaction - - return reaction_dict - - @staticmethod - def _parseConditions( - reactionAnnot: ET.Element, enzmldoc: "EnzymeMLDocument" - ) -> Dict[str, Union[str, float]]: - """Exracts the conditions present in the SBML reaction annotations. - Args: - reactionAnnot (ET.Element): The reaction annotation element. - enzmldoc (EnzymeMLDocument): The EnzymeMLDocument against which the data will be validated. - Returns: - Dict[str, Union[str, float]]: Mapping for the conditions. - """ - - # Get the conditions element - conditions = reactionAnnot[0] - condition_dict = {} - - for condition in conditions: - # Sort all the conditions - if "temperature" in condition.tag: - - # Get temperature conditions - condition_dict["temperature"] = float(condition.attrib["value"]) - - # Parse unit ID to Unit string - condition_dict["_temperature_unit_id"] = condition.attrib["unit"] - condition_dict["temperature_unit"] = enzmldoc.getUnitString( - condition_dict["_temperature_unit_id"] - ) - - elif "ph" in condition.tag: - - # Get the pH value - condition_dict["ph"] = float(condition.attrib["value"]) - - return condition_dict - - def _getElements( - self, - species_refs: List[libsbml.SpeciesReference], - ontology: SBOTerm, - modifiers: bool = False, - ) -> List[ReactionElement]: - """Extracts the speciesReference objects from the associated list and converts them to ReactionElements - - Args: - species_refs (List[libsbml.SpeciesReference]): The species refrences for the reaction <-> Chemical reaction elements. - modifiers (bool, optional): Used to override missing stoichiometry and constant for modifiers. Defaults to False. - - Returns: - List[ReactionElement]: The list of reaction elements. - """ - - reaction_elements = [] - for species_ref in species_refs: - - species_id = species_ref.getSpecies() - stoichiometry = 1.0 if modifiers else species_ref.getStoichiometry() - constant = True if modifiers else species_ref.getConstant() - sbo_term = libsbml.SBO.intToString(species_ref.getSBOTerm()) - - if sbo_term: - ontology = SBOTerm(sbo_term) - - reaction_elements.append( - ReactionElement( - species_id=species_id, - stoichiometry=stoichiometry, - constant=constant, - ontology=ontology, - ) - ) - - return reaction_elements - - def _getKineticModel( - self, kineticLaw: libsbml.KineticLaw, enzmldoc: "EnzymeMLDocument" - ) -> KineticModel: - """Extracts a kinetic rate law from the SBML data model. - - Args: - kineticLaw (libsbml.KineticLaw): The kinetic law to be extracted. - enzmldoc (EnzymeMLDocument): The EnzymeMLDocument to which the kinetic law will be added. - - Returns: - KineticModel: Teh resulting kinetic model. - """ - - # Extract metadata - name = kineticLaw.getName() - equation = kineticLaw.getFormula() - ontology = self._sboterm_to_enum(kineticLaw.getSBOTerm()) - - # Get local parameters - parameters = [] - for local_param in kineticLaw.getListOfLocalParameters(): - - parameter = self._parse_parameter(local_param, enzmldoc) - - if parameter.name in enzmldoc.global_parameters: - parameters.append(enzmldoc.global_parameters[parameter.name]) - else: - parameters.append(parameter) - - return KineticModel( - name=name, equation=equation, parameters=parameters, ontology=ontology - ) - - def _parse_parameter(self, parameter, enzmldoc): - """Parses a paramater and converts it to a KineticParameter instance""" - - # TODO refactor here - - value = parameter.getValue() - unit_id = parameter.getUnits() - - annotation = parameter.getAnnotationString() - param_dict = self._parseSpeciesAnnotation(annotation) - - if unit_id: - param_dict["unit"] = enzmldoc.getUnitString(unit_id) - - if parameter.__class__.__name__ == "LocalParameter": - constant = False - else: - constant = parameter.getConstant() - - if repr(parameter.getValue()) == "nan": - value = None - - nu_param = KineticParameter( - name=parameter.getId(), - value=value, - unit=param_dict.get("unit"), - ontology=self._sboterm_to_enum(parameter.getSBOTerm()), - initial_value=param_dict.get("initial_value"), - upper=param_dict.get("upper_bound"), - lower=param_dict.get("lower_bound"), - stdev=param_dict.get("stdev"), - constant=constant, - ) - - nu_param._enzmldoc = self.enzmldoc - - if unit_id: - nu_param._unit_id = parameter.getUnits() - - return nu_param - - def _getData( - self, model: libsbml.Model, enzmldoc: "EnzymeMLDocument" - ) -> Dict[str, Measurement]: - """Retrieves all available measurements found in the EnzymeML document. - - Args: - model (libsbml.Model): The SBML model from which the measurements are feteched, - - Returns: - Dict[str, Measurement]: Mapping from measurement ID to the associated object. - """ - - # Parse EnzymeML:format annotation - reactions = model.getListOfReactions() - annotation_string = reactions.getAnnotationString() - - # Guard clause for when there is no data - if annotation_string == "": - return {} - - # Parse annotation to an ElementTree - data_annotation = ET.fromstring(annotation_string)[0] - - # Fetch measurements - measurement_dict, measurement_files = self._parseListOfMeasurements( - data_annotation, enzmldoc=enzmldoc - ) - - # Iterate over measurements and assign replicates - for measurement_id, measurement_file in measurement_files.items(): - - # Fetch list of files - files = self._parseListOfFiles(data_annotation) - - # Fetch formats - formats = self._parseListOfFormats(data_annotation) - - # Get file content - fileInfo = files[measurement_file] - file_content = self.archive.extractEntryToString(fileInfo["file"]) - csvFile = pd.read_csv(StringIO(file_content), header=None) - - # Get format data and extract time column - measurement_format = formats[fileInfo["format"]] - time, time_unit_id = [ - (csvFile.iloc[:, int(column["index"])].tolist(), column["unit"]) - for column in measurement_format - if column["type"] == "time" - ][0] - - measurement_dict[measurement_id]._global_time_unit_id = time_unit_id - - # Create replicate objects - for format in measurement_format: - - if format["type"] != "time": - - # Get time course data - data = csvFile.iloc[:, int(format["index"])].tolist() - reactant_id = format["species"] - replicate_id = format["replica"] - data_type = DataTypes(format["type"]) - data_unit_id = format["unit"] - is_calculated = format["isCalculated"] - - replicate = Replicate( - id=replicate_id, - species_id=reactant_id, - data_type=data_type, - measurement_id=measurement_id, - data_unit=enzmldoc._unit_dict[data_unit_id].name, - time_unit=enzmldoc._unit_dict[time_unit_id].name, - data=data, - time=time, - is_calculated=is_calculated, - ) - - replicate._data_unit_id = data_unit_id - replicate._time_unit_id = time_unit_id - replicate._enzmldoc = self.enzmldoc - - measurement_dict[measurement_id].addReplicates( - replicate, log=False, enzmldoc=enzmldoc - ) - - return measurement_dict - - def _parseListOfFiles( - self, data_annotation: ET.Element - ) -> Dict[str, Dict[str, str]]: - """Extracts the list of files that are present in the annotation enzymeml:files. - - Args: - data_annotation (ET.Element): ElementTree object containing the enzymeml:files annotation. - - Returns: - Dict[str, Dict[str, str]]: Dictionary of all files present in the annotation. - """ - - return { - file.attrib["id"]: { - "file": file.attrib["file"], - "format": file.attrib["format"], - "id": file.attrib["id"], - } - for file in self._get_element(data_annotation, "files") - } - - def _parseListOfFormats(self, data_annotation: ET.Element) -> Dict[str, List[dict]]: - """Extracts the list of formats that areb present in the annotation enzymeml:formats. - - Args: - data_annotation (ET.Element): ElementTree object containing the enzymeml:files annotation. - - Returns: - Dict[str, List[dict]]: Dictionary of all the formats present in the annotation. - """ - - return { - format.attrib["id"]: [column.attrib for column in format] - for format in self._get_element(data_annotation, "formats") - } - - def _parseListOfMeasurements( - self, data_annotation: ET.Element, enzmldoc: "EnzymeMLDocument" - ) -> Tuple[Dict[str, Measurement], dict]: - """Extracts teh list of measurements that are present in the annotation enzymeml:measurements. - - Args: - data_annotation (ET.Element): ElementTree object containing the enzymeml:measurements annotation. - - Returns: - tuple[Dict[str, dict], Dict[str, Measurement]]: Two dictionaries returning the measurement objects and files. - """ - - measurements = self._get_element(data_annotation, "listOfMeasurements") - - if measurements is None: - # There was a typo and it should be catched here - measurements = self._get_element(data_annotation, "listOfMasurements") - - measurement_files = { - measurement.attrib["id"]: measurement.attrib["file"] - for measurement in measurements - if measurement.attrib.get("file") - } - measurement_dict = { - measurement.attrib["id"]: self._parseMeasurement( - measurement, enzmldoc=enzmldoc - ) - for measurement in measurements - } - - return (measurement_dict, measurement_files) - - def _parseMeasurement( - self, measurement: ET.Element, enzmldoc: "EnzymeMLDocument" - ) -> Measurement: - """Extracts individual initial concentrations of a measurement. - - Args: - measurement (ET.Element): Measurement XML information - - Returns: - Measurement: Initialized measurement object. - """ - - # Get conditions (temp, ph) - temperature = measurement.attrib.get("temperature_value") - temperature_unit = measurement.attrib.get("temperature_unit") - ph = measurement.attrib.get("ph") - - # Get the unit string of temp if given - if temperature_unit: - temperature_unit = enzmldoc.getUnitString(temperature_unit) - - # initialize Measurement object - measurement_object = Measurement( - name=measurement.attrib["name"], - temperature=temperature, - temperature_unit=temperature_unit, - ph=ph, - ) - - measurement_object.id = measurement.attrib["id"] - temperature_unit_id = measurement.attrib.get("temperature_unit") - measurement_object._temperature_unit_id = temperature_unit_id - measurement_object._enzmldoc = self.enzmldoc - - for init_conc_element in measurement: - - params, unit_id = self._parse_init_conc_element(init_conc_element, enzmldoc) - measurement_object.addData(**params, log=False) - - if params["reactant_id"]: - meas_data = measurement_object.getReactant(params["reactant_id"]) - elif params["protein_id"]: - meas_data = measurement_object.getProtein(params["protein_id"]) - else: - raise ValueError("Neither 'reactant_id' nor 'protein_id' are defined") - - meas_data._unit_id = unit_id - meas_data._enzmldoc = self.enzmldoc - - return measurement_object - - @staticmethod - def _parse_init_conc_element(element: ET.Element, enzmldoc): - """Parses initial concentration data of a measurement. - - Args: - element (ET.Element): Element containing information about the initial concentration and species. - - Raises: - KeyError: If there is neither a protein nor reactant ID. - """ - - value = float(element.attrib["value"]) - - # Convert the unit ID to the corresponding SI string - unit_id = element.attrib["unit"] - unit = enzmldoc._unit_dict[unit_id].name - - reactant_id = None - protein_id = None - - if "reactant" in element.attrib.keys(): - reactant_id = element.attrib["reactant"] - elif "protein" in element.attrib.keys(): - protein_id = element.attrib["protein"] - else: - raise KeyError("Neither reactant or protein ID defined.") - - return { - "init_conc": float(value), - "unit": unit, - "reactant_id": reactant_id, - "protein_id": protein_id, - }, unit_id - - @staticmethod - def _get_element(tree: ET.Element, name: str): - for element in tree.iter("*"): - if name.lower() in element.tag.lower(): - return element - - return None - - def _getFiles(self, enzmldoc): - """Extracts all added files fro the archive. - - Args: - archive (CombineArchive): The OMEX archive to extract files from. - enzmldoc (EnzymeMLDocument): The EnzymeMLDocument to add files to. - """ - - # Iterate over enries and extract files - for file_location in self.archive.getAllLocations(): - file_location = str(file_location) - - if "./files/" in file_location: - - # Convert raw file to file_handle - file_handle = tempfile.NamedTemporaryFile() - file_handle.name = os.path.basename(file_location) - - # Write file to temporary file - path = f"./{file_handle.name}" - self.archive.extractEntry(file_location, path) - - with open(path, "rb") as f: - file_handle.write(f.read()) - file_handle.seek(0) - - # Add the file to the EnzymeMLDocument - enzmldoc.addFile(file_handle=file_handle) - - # Remove the temporary file - os.remove(path) diff --git a/pyenzyme/enzymeml/tools/enzymemlwriter.py b/pyenzyme/enzymeml/tools/enzymemlwriter.py deleted file mode 100644 index 27d5569d..00000000 --- a/pyenzyme/enzymeml/tools/enzymemlwriter.py +++ /dev/null @@ -1,1031 +0,0 @@ -# File: enzymemlwriter.py -# Project: tools -# Author: Jan Range -# License: BSD-2 clause -# Copyright (c) 2022 Institute of Biochemistry and Technical Biochemistry Stuttgart - -import pandas as pd -import os -import shutil -import libsbml -import tempfile -import logging -import warnings - -from libsbml import ( - SBMLDocument, - XMLNode, - XMLTriple, - XMLAttributes, - XMLNamespaces, - SBMLWriter, -) - -from typing import Dict, List, Callable, Optional -from libcombine import CombineArchive, OmexDescription, KnownFormats, VCard - -from pyenzyme.enzymeml.core.unitdef import UnitDef -from pyenzyme.enzymeml.core.vessel import Vessel -from pyenzyme.enzymeml.core.abstract_classes import AbstractSpecies -from pyenzyme.enzymeml.core.protein import Protein -from pyenzyme.enzymeml.core.reactant import Reactant -from pyenzyme.enzymeml.core.replicate import Replicate -from pyenzyme.enzymeml.core.measurement import Measurement -from pyenzyme.enzymeml.core.measurementData import MeasurementData -from pyenzyme.enzymeml.core.enzymereaction import EnzymeReaction, ReactionElement -from pyenzyme.enzymeml.models.kineticmodel import KineticModel, KineticParameter - -# Initialize the logger -logger = logging.getLogger("pyenzyme") - - -class EnzymeMLWriter: - def __init__(self): - self.namespace = "http://sbml.org/enzymeml/version2" - - def toFile(self, enzmldoc, path: str, name: Optional[str] = None): - """ - Writes EnzymeMLDocument object to an .omex container - - Args: - enzmldoc (String): Previously created instance of an EnzymeML document - path (String): EnzymeML file is written to this destination - name (String): Name of the target EnzymeML file. Defaults to 'None' and thus uses the doc name. - - """ - - self.path = os.path.normpath(path) - self.enzmldoc = enzmldoc # TODO replace all static enzmldocs with self.enzmldoc - - try: - os.makedirs(os.path.join(self.path, "data")) - except FileExistsError: - pass - - doc = SBMLDocument() - doc.setLevelAndVersion(3, 2) - - model = doc.createModel() - model.setName(enzmldoc.name) - model.setId(enzmldoc.name) - - # Convert the SBML model to EnzymeML - self.convertEnzymeMLToSBML(model, enzmldoc) - - # Add data - paths = self._addData(model, enzmldoc.measurement_dict) - - # Write to EnzymeML - writer = SBMLWriter() - writer.writeSBMLToFile(doc, os.path.join(self.path, "experiment.xml")) - - # Validate the SBML document - self._validate_sbml_doc(document=doc) - - # Write to OMEX - self._createArchive(enzmldoc, paths, name) - - shutil.rmtree(os.path.join(self.path, "data"), ignore_errors=True) - - os.remove(os.path.join(self.path, "experiment.xml")) - - def toXMLString(self, enzmldoc): - """ - Converts EnzymeMLDocument to XML string. - - Args: - EnzymeMLDocument enzmldoc: Previously created instance of an - EnzymeML document - """ - doc = SBMLDocument() - doc.setLevelAndVersion(3, 2) - - model = doc.createModel() - model.setName(enzmldoc.name) - model.setId(enzmldoc.name) - - self.path = None - self.enzmldoc = enzmldoc - - # Convert the SBML model to EnzymeML - self.convertEnzymeMLToSBML(model, enzmldoc) - - # Add data - self._addData(model, enzmldoc.measurement_dict) - - # Write to EnzymeML - writer = SBMLWriter() - return writer.writeToString(doc) - - def toSBML(self, enzmldoc): - """ - Returns libSBML model. - - Args: - EnzymeMLDocument enzmldoc: Previously created instance of an - EnzymeML document - """ - - doc = SBMLDocument() - doc.setLevelAndVersion(3, 2) - - model = doc.createModel() - model.setName(enzmldoc.name) - model.setId(enzmldoc.name) - - # Convert the SBML model to EnzymeML - self.convertEnzymeMLToSBML(model, enzmldoc) - - return doc - - def convertEnzymeMLToSBML(self, model: libsbml.Model, enzmldoc): - """Manages the conversion of EnzymeML to SBML. - - Args: - model (libsbml.Model): The blank SBML model, where the EnzymeML document is converted to. - enzmldoc (EnzymeMLDocument): The EnzymeML document to be converted. - """ - - self._addRefs(model, enzmldoc) - self._addVessel(model, enzmldoc.vessel_dict) - self._addProteins(model, enzmldoc.protein_dict) - self._addComplex(model, enzmldoc.complex_dict) - self._addReactants(model, enzmldoc.reactant_dict) - self._addGlobalParameters(model, enzmldoc.global_parameters) - self._addReactions(model, enzmldoc.reaction_dict) - self._addUnits(model, enzmldoc._unit_dict) - - def _createArchive(self, enzmldoc, listofPaths, name: str = None): - - archive = CombineArchive() - - # add experiment file to archive - archive.addFile( - f"{self.path}/experiment.xml", - "./experiment.xml", - KnownFormats.lookupFormat("sbml"), - True, - ) - - # add logs to teh Archive - history_path = f"{self.path}/history.log" - try: - with open(history_path, "wb") as f: - f.write(enzmldoc.log.getvalue().encode("utf-8", "replace")) - - self.addFileToArchive( - archive=archive, - file_path=history_path, - target_path="./history.log", - format=KnownFormats.lookupFormat("txt"), - description="History of the EnzymeML document", - ) - except Exception as e: - logging.error("couldn't write history") - - # add metadata to the experiment file - location = "./experiment.xml" - description = OmexDescription() - description.setAbout(location) - description.setDescription("EnzymeML model") - description.setCreated(OmexDescription.getCurrentDateAndTime()) - - for creat in enzmldoc.creator_dict.values(): - creator = VCard() - creator.setFamilyName(creat.family_name) - creator.setGivenName(creat.given_name) - creator.setEmail(creat.mail) - description.addCreator(creator) - - archive.addMetadata(".", description) - archive.addMetadata(location, description) - - # Add CSV files to archive - for csvPath, file_path in listofPaths.items(): - - self.addFileToArchive( - archive=archive, - file_path=csvPath, - target_path=file_path, - format=KnownFormats.lookupFormat("csv"), - description="Time course data", - ) - - # Add files from fileDict - tmpFolder = None - if enzmldoc.file_dict: - # create temporary directory for files - tmpFolder = tempfile.mkdtemp() - - for fileDict in enzmldoc.file_dict.values(): - - file_handler = fileDict["handler"] - file_name = fileDict["name"] - fileDescription = fileDict["description"] - tmpPath = os.path.join(tmpFolder, file_name) - - # Write file locally and add it to the document - with open(tmpPath, "wb") as fileHandle: - fileHandle.write(file_handler.read()) - - self.addFileToArchive( - archive=archive, - file_path=tmpPath, - target_path=f"./files/{file_name}", - format=KnownFormats.guessFormat(file_name), - description=fileDescription, - ) - - if name: - out_file = f"{name.replace(' ', '_')}.omex" - else: - out_file = f"{enzmldoc.name.replace(' ', '_')}.omex" - - out_path = os.path.join(self.path, out_file) - - try: - os.remove(out_path) - except FileNotFoundError: - pass - - archive.writeToFile(out_path) - - # Remove temporary directory - if tmpFolder is not None: - shutil.rmtree(tmpFolder, ignore_errors=True) - - # Remove unused - os.remove(f"{self.path}/history.log") - - print(f"\nArchive was written to {out_path}\n") - - @staticmethod - def addFileToArchive(archive, file_path, target_path, format, description): - - # Add file to archive - archive.addFile(file_path, target_path, format, False) - - # Add metadata to the file - omexDesc = OmexDescription() - omexDesc.setAbout(target_path) - omexDesc.setDescription(description) - omexDesc.setCreated(OmexDescription.getCurrentDateAndTime()) - archive.addMetadata(target_path, omexDesc) - - def setupXMLNode(self, name, namespace=True): - # Helper function - # Creates an XML node - # for annotations - node = XMLNode(XMLTriple(name), XMLAttributes(), XMLNamespaces()) - - if namespace is True: - node.addNamespace(self.namespace, "enzymeml") - - return node - - @staticmethod - def appendAttribute(attributeName, value): - # Helper function - # creates XML node - # XYZ - value = XMLNode(value) - attributeNode = XMLNode( - XMLTriple(attributeName), XMLAttributes(), XMLNamespaces() - ) - - attributeNode.addChild(value) - - return attributeNode - - def appendMultiAttributes( - self, attributeName, object, objectMapping, annotationNode - ): - node = self.setupXMLNode(attributeName, namespace=False) - - for key, value in objectMapping.items(): - # "value" --> 10.00 - if hasattr(object, value): - - attribute = getattr(object, value) - if attribute: - node.addAttr(key, str(attribute)) - else: - return 0 - else: - return 0 - - annotationNode.addChild(node) - - def appendOptionalAttribute( - self, attributeName, object, objectName, annotationNode - ): - # Helper function - # Adds elements to annotation node - if object.__dict__.get(objectName): - value = self.appendAttribute( - attributeName, str(getattr(object, objectName)) - ) - annotationNode.addChild(value) - - def _addRefs(self, model: libsbml.Model, enzmldoc): - """Converts EnzymeMLDocument refrences to SBML. - - Args: - model (libsbml.Model): The SBML model the reference is added to. - enzmldoc (EnzymeMLDocument): The EnzymeMLDocument instance that contains the information. - """ - - # Create reference node - referenceAnnotation = self.setupXMLNode("enzymeml:references") - - # Optional attributes - referenceAttributes = { - "enzymeml:doi": "doi", - "enzymeml:pubmedID": "pubmedid", - "enzymeml:url": "url", - } - - for attributeName, objectName in referenceAttributes.items(): - self.appendOptionalAttribute( - attributeName=attributeName, - object=enzmldoc, - objectName=objectName, - annotationNode=referenceAnnotation, - ) - - if referenceAnnotation.getNumChildren() > 0: - model.appendAnnotation(referenceAnnotation) - - def _addUnits(self, model: libsbml.Model, unit_dict: Dict[str, UnitDef]) -> None: - """Converts EnzymeMLDocument units to SBML. - - Args: - model (libsbml.Model): The SBML model the units are added to. - unit_dict (Dict[str, UnitDef]): The EnzymeMLDocument units to be added to the SBML model. - """ - - for unit_id, unit_def in unit_dict.items(): - - unit = model.createUnitDefinition() - unit.setId(unit_id) - unit.setMetaId(unit_def.meta_id) - unit.setName(unit_def.name) - - # TODO Add ontology - # if unit_def.getOntology() != "NONE": - # cvterm = CVTerm() - # cvterm.addResource(unit_def.getOntology()) - # cvterm.setQualifierType(BIOLOGICAL_QUALIFIER) - # cvterm.setBiologicalQualifierType(BQB_IS) - # unit.addCVTerm(cvterm) - - for base_unit in unit_def.units: - - kind = base_unit.kind - exponent = base_unit.exponent - scale = base_unit.scale - multiplier = base_unit.multiplier - - baseUnitDef = unit.createUnit() - - try: - baseUnitDef.setKind(libsbml.UnitKind_forName(kind)) - except TypeError: - baseUnitDef.setKind(kind) - - baseUnitDef.setExponent(exponent) - baseUnitDef.setScale(scale) - baseUnitDef.setMultiplier(multiplier) - - def _addVessel(self, model, vessel_dict: Dict[str, Vessel]) -> None: - """Converts EnzymeMLDocument vessel to SBML. - - Args: - model (libsbml.Model): The SBML model the vessel is added to. - vessel (Vessel): The EnzymeMLDocument vessel to be added to the SBML model. - """ - - for vessel_id, vessel in vessel_dict.items(): - compartment = model.createCompartment() - compartment.setId(vessel_id) - compartment.setName(vessel.name) - compartment.setConstant(vessel.constant) - compartment.setSpatialDimensions(3) - - if vessel.volume: - compartment.setSize(vessel.volume) - compartment.setUnits(vessel._unit_id) - - def _addProteins( - self, model: libsbml.Model, protein_dict: Dict[str, Protein] - ) -> None: - """Converts EnzymeMLDocument proteins to SBML. - - Args: - model (libsbml.Model): The SBML model the proteins are added to. - protein_dict (Dict[str, Protein]): The EnzymeMLDocument proteins to be added to the SBML model. - """ - - # EnzymeML attributes - proteinAttributes = { - "enzymeml:sequence": "sequence", - "enzymeml:ECnumber": "ecnumber", - "enzymeml:uniprotID": "uniprotid", - "enzymeml:organism": "organism", - "enzymeml:organismTaxID": "organism_tax_id", - } - - for protein in protein_dict.values(): - self._addSpecies( - obj=protein, - annotation_name="enzymeml:protein", - model=model, - optional_attributes=proteinAttributes, - ) - - def _addComplex( - self, model: libsbml.Model, complex_dict: Dict[str, Protein] - ) -> None: - """Converts EnzymeMLDocument proteins to SBML. - - Args: - model (libsbml.Model): The SBML model the proteins are added to. - complex_dict (Dict[str, Protein]): The EnzymeMLDocument complex to be added to the SBML model. - """ - - complexAttributes = { - "enzymeml:participant": "participants", - } - - for complex in complex_dict.values(): - self._addSpecies( - obj=complex, - annotation_name="enzymeml:complex", - model=model, - optional_attributes=complexAttributes, - ) - - def _addReactants(self, model: libsbml.Model, reactant_dict: Dict[str, Reactant]): - """Converts EnzymeMLDocument reactants to SBML. - - Args: - model (libsbml.Model): The SBML model the reactants are added to. - reactant_dict (Dict[str, Reactant]): The EnzymeMLDocument reactants to be added to the SBML model. - """ - - # EnzymeML attributes - reactantAttributes = { - "enzymeml:inchi": "inchi", - "enzymeml:smiles": "smiles", - "enzymeml:chebiID": "chebi_id", - } - - for reactant in reactant_dict.values(): - self._addSpecies( - obj=reactant, - annotation_name="enzymeml:reactant", - model=model, - optional_attributes=reactantAttributes, - ) - - def _addGlobalParameters( - self, model: libsbml.Model, global_parameters: Dict[str, KineticParameter] - ): - """Writes global parameters to the SBML document. - - Args: - model (libsbml.Model): SBML model the global parameters are added to. - global_parameters (Dict[str, KineticParameter]): Global parameters that will be added to the SBML document. - """ - - for parameter in global_parameters.values(): - sbml_param = self._write_global_parameter(parameter, model) - - # Create a mapping for the 'enzymeml:parameter' annotation - annotation = self.setupXMLNode("enzymeml:parameter") - optional_parameters = { - "enzymeml:initialValue": "initial_value", - "enzymeml:upperBound": "upper", - "enzymeml:lowerBound": "lower", - } - - for attributeName, objectName in optional_parameters.items(): - - self.appendOptionalAttribute( - attributeName=attributeName, - object=parameter, - objectName=objectName, - annotationNode=annotation, - ) - - if annotation.getNumChildren() > 0: - sbml_param.appendAnnotation(annotation) - - def _write_global_parameter( - self, parameter: KineticParameter, model: libsbml.Model - ): - """Writes a global parameter to a reaction""" - - global_param = model.createParameter() - global_param.setId(parameter.name) - global_param.setConstant(parameter.constant) - - if parameter.value is not None: - global_param.setValue(parameter.value) - - if parameter._unit_id: - global_param.setUnits(parameter._unit_id) - - if parameter.ontology: - global_param.setSBOTerm(parameter.ontology) - - return global_param - - def _addSpecies( - self, - obj: AbstractSpecies, - annotation_name: str, - model: libsbml.Model, - optional_attributes: Dict[str, str], - ) -> None: - """Helper function to create any EnzymeML species from - - Args: - obj (AbstractSpecies): Object containing the species informations. - """ - - species = model.createSpecies() - species.setId(obj.id) - species.setName(obj.name) - species.setMetaId(obj.meta_id) - species.setSBOTerm(obj.ontology) - species.setCompartment(obj.vessel_id) - species.setBoundaryCondition(obj.boundary) - species.setConstant(obj.constant) - species.setHasOnlySubstanceUnits(False) - - if obj.init_conc is not None and obj._unit_id: - species.setSubstanceUnits(obj._unit_id) - species.setInitialConcentration(obj.init_conc) - elif obj.init_conc and not obj._unit_id: - raise ValueError( - f"The object {obj.name} ({obj.id}) has an initial concentration value but no unit. Please specify a unit for a successful export to SBML." - ) - - # Controls if annotation will be added - objAnnotation = self.setupXMLNode(annotation_name) - - # EnzymeML attributes - for attributeName, objectName in optional_attributes.items(): - - # TODO more elegant way to handle complex parts - if isinstance(getattr(obj, objectName), list): - for id in getattr(obj, objectName): - value = self.appendAttribute(attributeName, id) - objAnnotation.addChild(value) - - continue - - self.appendOptionalAttribute( - attributeName=attributeName, - object=obj, - objectName=objectName, - annotationNode=objAnnotation, - ) - - if objAnnotation.getNumChildren() > 0: - species.appendAnnotation(objAnnotation) - - def _addReactions( - self, model: libsbml.Model, reaction_dict: Dict[str, EnzymeReaction] - ): - """Converts EnzymeMLDocument reactions to SBML. - - Args: - model (libsbml.Model): The SBML model the reactions are added to. - reaction_dict (Dict[str, EnzymeReaction]): The EnzymeMLDocument reactions to be added to the SBML model. - """ - - for reaction_id, enzyme_reaction in reaction_dict.items(): - - reaction = model.createReaction() - reaction.setId(reaction_id) - reaction.setMetaId(enzyme_reaction.meta_id) - reaction.setName(enzyme_reaction.name) - reaction.setReversible(enzyme_reaction.reversible) - reaction.setSBOTerm(enzyme_reaction.ontology) - - # Add kinetic model - if enzyme_reaction.model: - self._addModelToReaction( - reaction=reaction, kinetic_model=enzyme_reaction.model - ) - - # Enzymeml attributes - reactionAnnotation = self.setupXMLNode("enzymeml:reaction") - - # Track conditions - conditionsAnnotation = self.setupXMLNode( - "enzymeml:conditions", namespace=False - ) - - conditionsMapping = { - "enzymeml:temperature": { - "value": "temperature", - "unit": "_temperature_unit_id", - }, - "enzymeml:ph": {"value": "ph"}, - } - - for attributeName, objectMapping in conditionsMapping.items(): - self.appendMultiAttributes( - attributeName=attributeName, - object=enzyme_reaction, - objectMapping=objectMapping, - annotationNode=conditionsAnnotation, - ) - - if conditionsAnnotation.getNumChildren() > 0: - reactionAnnotation.addChild(conditionsAnnotation) - reaction.appendAnnotation(reactionAnnotation) - - # Write educts - self.writeElements( - reaction_elements=enzyme_reaction.educts, - createFunction=reaction.createReactant, - ) - - # Write products - self.writeElements( - reaction_elements=enzyme_reaction.products, - createFunction=reaction.createProduct, - ) - - # Write modifiers - self.writeElements( - reaction_elements=enzyme_reaction.modifiers, - createFunction=reaction.createModifier, - ) - - def _addModelToReaction( - self, - reaction: libsbml.Reaction, - kinetic_model: KineticModel, - ) -> None: - """ - Adds kinetic law to SBML reaction. - Only relevant for EnzymeML > SBML conversion. - - Args: - reaction (libsbml.Reaction): SBML reaction class - kinetic_model (KineticModel): PyEnzyme Model object - """ - - # Set up SBML kinetic law node - sbml_law = reaction.createKineticLaw() - - for parameter in kinetic_model.parameters: - - if parameter.is_global: - continue - - param = self._write_local_parameter(parameter, sbml_law) - - # Create a mapping for the 'enzymeml:parameter' annotation - annotation = self.setupXMLNode("enzymeml:parameter") - optional_parameters = { - "enzymeml:initialValue": "initial_value", - "enzymeml:upperBound": "upper", - "enzymeml:lowerBound": "lower", - "enzymeml:stdev": "stdev", - } - - for attributeName, objectName in optional_parameters.items(): - - self.appendOptionalAttribute( - attributeName=attributeName, - object=parameter, - objectName=objectName, - annotationNode=annotation, - ) - - if annotation.getNumChildren() > 0: - param.appendAnnotation(annotation) - - sbml_law.setMath(libsbml.parseL3Formula(kinetic_model.equation)) - sbml_law.setName(kinetic_model.name) - - if kinetic_model.ontology: - sbml_law.setSBOTerm(kinetic_model.ontology) - - def _write_local_parameter( - self, - parameter: KineticParameter, - kinetic_law: libsbml.KineticLaw, - ): - """Writes a local parameter to a reaction""" - - local_param = kinetic_law.createLocalParameter() - local_param.setId(parameter.name) - - if parameter.value is not None: - local_param.setValue(parameter.value) - - if parameter._unit_id: - local_param.setUnits(parameter._unit_id) - - if parameter.ontology: - local_param.setSBOTerm(parameter.ontology) - - return local_param - - def writeElements( - self, reaction_elements: List[ReactionElement], createFunction: Callable - ): - """Writes SpeciesReference elements to the SBML document. - - Args: - reaction_elements (List[ReactionElement]): List of reaction elements containing information on stoichiometry, species_id and ontology. - createFunction (Callable): Function that creates either an educt, product or modifier list to the SBML document. - """ - - for reaction_element in reaction_elements: - - speciesRef = createFunction() - speciesRef.setSpecies(reaction_element.species_id) - speciesRef.setSBOTerm(reaction_element.ontology) - - try: - # Catch modifiers --> No stoich/constant in SBML - speciesRef.setConstant(reaction_element.constant) - speciesRef.setStoichiometry(reaction_element.stoichiometry) - except AttributeError: - pass - - def writeReplicateData(self, replicate: Replicate, format_annot: XMLNode) -> None: - """Writes column information to the enzymeml:format annotation. - - Args: - replicate (Replicate): Replicate holding the time course data. - format_annot (XMLNode): The enzymeml:format annotation node. - """ - - column = self.setupXMLNode("enzymeml:column", namespace=False) - - # Add attributes - column.addAttr("replica", replicate.id) - column.addAttr("species", replicate.species_id) - column.addAttr("type", replicate.data_type) - column.addAttr("unit", replicate._data_unit_id) - column.addAttr("index", str(self.index)) - column.addAttr("isCalculated", str(replicate.is_calculated)) - - # Add colum to format annotation - format_annot.addChild(column) - - def _addData( - self, model: libsbml.Model, measurement_dict: Dict[str, Measurement] - ) -> Dict[str, str]: - """Adds measurement data to the SBML document and writes time course data to DataFrames/CSV. - - Args: - model (libsbml.Model): The SBML model to which the measurements are added. - measurement_dict (Dict[str, Measurement]): The EnzymeMLDocument measurement data. - - Returns: - Dict[str, str]: Mapping from actual CSV paths to the ones added to the OMEX - """ - - # Initialize data lists - data_annotation = self.setupXMLNode("enzymeml:data") - files = self.setupXMLNode("enzymeml:files", namespace=False) - formats = self.setupXMLNode("enzymeml:formats", namespace=False) - measurements = self.setupXMLNode("enzymeml:listOfMeasurements", namespace=False) - paths = {} - - for index, (measurement_id, measurement) in enumerate(measurement_dict.items()): - - # setup format/Measurement ID/node and file ID - format_id = f"format{index}" - file_id = f"file{index}" - - format_annot = self.setupXMLNode("enzymeml:format", namespace=False) - - format_annot.addAttr("id", format_id) - - measurement_annot = self.setupXMLNode( - "enzymeml:measurement", namespace=False - ) - - # Get time and add to format node - data_columns = {} - if measurement._has_replicates(): - # Only write time data if replicates are present - self.writeTimeData( - measurement=measurement, - format_annot=format_annot, - data_columns=data_columns, - ) - - self.writeMeasurementData( - measurement=measurement, - measurement_annot=measurement_annot, - format_annot=format_annot, - data_columns=data_columns, - ) - - # Create DataFrame to save measurement - if data_columns: - file_name = f"{measurement_id}.csv" - file_path = f"./data/{file_name}" - df = pd.DataFrame(data_columns) - - if self.path: - df_path = os.path.join(self.path, "data", file_name) - df.to_csv(df_path, index=False, header=False) - else: - df_path = "Unused" - - paths[df_path] = file_path - - # Add data to data annotation - file_annot = self.setupXMLNode("enzymeml:file", namespace=False) - - file_annot.addAttr("file", file_path) - file_annot.addAttr("format", format_id) - file_annot.addAttr("id", file_id) - - files.addChild(file_annot) - formats.addChild(format_annot) - - measurement_annot.addAttr("file", file_id) - - measurement_annot.addAttr("id", measurement_id) - measurement_annot.addAttr("name", measurement.name) - - # TODO find a sustainable way - if measurement.temperature: - measurement_annot.addAttr( - "temperature_unit", measurement._temperature_unit_id - ) - measurement_annot.addAttr( - "temperature_value", str(measurement.temperature) - ) - - if measurement.ph: - measurement_annot.addAttr("ph", str(measurement.ph)) - - measurements.addChild(measurement_annot) - - # add annotation to listOfReactions - if formats.getNumChildren() > 0: - data_annotation.addChild(formats) - if measurements.getNumChildren() > 0: - data_annotation.addChild(measurements) - if files.getNumChildren() > 0: - data_annotation.addChild(files) - if data_annotation.getNumChildren() > 0: - model.getListOfReactions().appendAnnotation(data_annotation) - - return paths - - def writeTimeData( - self, measurement: Measurement, format_annot: XMLNode, data_columns: dict - ): - time = measurement.global_time - time_unit = measurement._global_time_unit_id - - time_column = XMLNode(XMLTriple("enzymeml:column"), XMLAttributes()) - - time_column.addAttr("type", "time") - time_column.addAttr("unit", time_unit) - time_column.addAttr("index", "0") - - format_annot.addChild(time_column) - - # write initConc annotation and prepare raw data - data_columns.update({f"time/{time_unit}": time}) - self.index = 1 - - def writeMeasurementData( - self, - measurement: Measurement, - measurement_annot: XMLNode, - format_annot: XMLNode, - data_columns: Dict[str, List[float]], - ) -> None: - """Writes measurement metadata as columns to the SBML document annotation enzymeml:column. - - Args: - measurement (Measurement): EnzymeML measurement that is written to SBML. - measurement_annot (XMLNode): The SBML XMLNode the measurement metadata is written to. - format_annot (XMLNode): The SBML XMLNode the column information is written to. - - Returns: - List[List[float]]: The time course data from the replicate objects. - """ - - species_dict = measurement.species_dict - - # Init Conc - # Extract measurementData objects - proteins = species_dict["proteins"] - reactants = species_dict["reactants"] - - # Append initConc data to measurement - self.appendInitConcData( - measurement_annot=measurement_annot, - measurement_data_dict=proteins, - species_type="protein", - ) - self.appendInitConcData( - measurement_annot=measurement_annot, - measurement_data_dict=reactants, - species_type="reactant", - ) - - if measurement._has_replicates(): - # Replicates - self.appendReplicateData( - {**proteins, **reactants}, - format_annot=format_annot, - data_columns=data_columns, - ) - - def appendInitConcData( - self, - measurement_annot: XMLNode, - measurement_data_dict: Dict[str, MeasurementData], - species_type: str, - ): - """Adds individual intial concentration data to the enzymeml:measurement annotation. - - Args: - measurement_annot (XMLNode): The SBML XMLNode for the measurement annotation. - measurement_data_dict (Dict[str, MeasurementData]): The EnzymeMLDocument measurement data. - species_type (str): The type of species in the measurement_data_dict. - """ - - for species_id, measurement_data in measurement_data_dict.items(): - - # Create the initConc annotation - initConcAnnot = self.setupXMLNode("enzymeml:initConc", namespace=False) - - initConcAnnot.addAttr(f"{species_type}", species_id) - initConcAnnot.addAttr("value", str(measurement_data.init_conc)) - - # TODO Check if the unit given in the unit attribute is compliant - # TODO Handle this in the base class by assigning a 'None' to the _unit_id - unit_id_check = self.enzmldoc._convertToUnitDef(measurement_data.unit) - - if measurement_data._unit_id != unit_id_check: - measurement_data._unit_id = unit_id_check - - initConcAnnot.addAttr("unit", measurement_data._unit_id) - - measurement_annot.addChild(initConcAnnot) - - def appendReplicateData( - self, - species: Dict[str, MeasurementData], - format_annot: XMLNode, - data_columns: Dict[str, List[float]], - ) -> Dict[str, List[float]]: - """Extracts all time course data from the replicate objects and adds them to the the enzymeml:format annotation. - - Args: - species (Dict[str, MeasurementData]): Reactant/Protein measurement data. - format_annot (XMLNode): The SBML XMLNode representing the format annotation. - - Returns: - List[List[float]]: The time course data from the replicate objects. - """ - - # Collect all replicates - replicates = [ - replicate for data in species.values() for replicate in data.replicates - ] - - for replicate in replicates: - - # Write data to format_annot - self.writeReplicateData(replicate=replicate, format_annot=format_annot) - - # Extract series data - header_info = "/".join( - [replicate.id, replicate.species_id, replicate.data_type.value] - ) - - data_columns[header_info] = replicate.data - - self.index += 1 - - return data_columns - - def _validate_sbml_doc(self, document): - """Validates an SBML documentument and checks for errors.""" - - document.checkConsistency() - if document.getNumErrors(libsbml.LIBSBML_SEV_ERROR) > 0: - warnings.warn("Invalid SBML document! See warnings:") - warnings.warn(document.getErrorLog().toString()) diff --git a/pyenzyme/enzymeml/tools/templatereader.py b/pyenzyme/enzymeml/tools/templatereader.py deleted file mode 100644 index ac72ecd6..00000000 --- a/pyenzyme/enzymeml/tools/templatereader.py +++ /dev/null @@ -1,357 +0,0 @@ -# File: templatereader.py -# Project: tools -# Author: Jan Range -# License: BSD-2 clause -# Copyright (c) 2022 Institute of Biochemistry and Technical Biochemistry Stuttgart - -import numpy as np -import pandas as pd -import re - -from typing import List, Dict - -from pyenzyme.enzymeml.core.ontology import DataTypes -from pyenzyme.enzymeml.core.creator import Creator -from pyenzyme.enzymeml.core.vessel import Vessel -from pyenzyme.enzymeml.core.protein import Protein -from pyenzyme.enzymeml.core.reactant import Reactant -from pyenzyme.enzymeml.core.enzymereaction import EnzymeReaction -from pyenzyme.enzymeml.core.measurement import Measurement -from pyenzyme.enzymeml.core.replicate import Replicate - - -def read_template(path: str, enzmldoc): - """Reads the EnzymeML spreadsheet template to an EnzymeML document. - - Args: - path (str): Path to the EnzymeML spreadsheet template. - - Returns: - EnzymeMLDocument: The resulting EnzymeML document. - """ - - general_info = pd.read_excel(path, sheet_name="General Information", skiprows=1) - - params = dict( - name=general_info.iloc[0, 1], - created=str(general_info.iloc[1, 1]), - doi=None, - pubmedid=general_info.iloc[3, 1], - url=general_info.iloc[4, 1], - ) - - enzmldoc = enzmldoc(**params) - - # User information - user_infos = pd.read_excel( - path, sheet_name="General Information", skiprows=9 - ).dropna() - - for record in user_infos.to_dict(orient="records"): - enzmldoc.addCreator( - Creator( - family_name=record["Family Name"], - given_name=record["Given Name"], - mail=record["Mail"], - ) - ) - - # Vessel - vessels = pd.read_excel(path, sheet_name="Vessels", skiprows=2) - instances = get_instances(vessels, Vessel, enzmldoc) - - for instance in instances: - enzmldoc.addVessel(Vessel(**instance)) - - # Proteins - proteins = pd.read_excel(path, sheet_name="Proteins", skiprows=2) - instances = get_instances(proteins, Protein, enzmldoc) - - for instance in instances: - enzmldoc.addProtein(Protein(**instance)) - - # Reactants - reactants = pd.read_excel(path, sheet_name="Reactants", skiprows=2) - - instances = get_instances(reactants, Reactant, enzmldoc) - - for instance in instances: - enzmldoc.addReactant(Reactant(**instance)) - - # Reactions - reactions = pd.read_excel(path, sheet_name="Reactions", skiprows=2) - - # Merge proteins and modifiers - nu_mods = [ - merge_protein_modifier(protein, modifier) - for modifier, protein in zip( - reactions.Modifiers.values.tolist(), reactions.Proteins.values.tolist() - ) - ] - - # Replace merged modifiers with modifier tag - reactions.Modifiers = nu_mods - - instances = get_instances(reactions, EnzymeReaction, enzmldoc) - - for instance in instances: - - # Get Educts, Products and Modifiers to add to the reaction - educts = parse_reaction_element(instance.get("educts")) - products = parse_reaction_element(instance.get("products")) - modifiers = parse_reaction_element(instance.get("modifiers")) - - instance.pop("educts") - instance.pop("products") - instance.pop("modifiers") - - # Instantiate Reaction - reaction = EnzymeReaction(**instance) - - add_instances(reaction.addModifier, modifiers, enzmldoc) - add_instances(reaction.addEduct, educts, enzmldoc) - add_instances(reaction.addProduct, products, enzmldoc) - - enzmldoc.addReaction(reaction) - - # Measurements - data = pd.read_excel(path, sheet_name="Data", skiprows=2) - - # Reduce dataset to experiment IDs - experiment_ids = set(data["Experiment ID"].dropna()) - - for experiment_id in experiment_ids: - exp_data = data[data["Experiment ID"] == experiment_id] - exp_data.columns = rename_columns(exp_data) - - # Get split index - split_index = get_split_index(exp_data) - - measurement = Measurement(name=experiment_id) - - # Get time - time_values, time_unit = get_time(exp_data, split_index) - - measurement.global_time = time_values - measurement.global_time_unit = time_unit - - # initialize replicate index - replicate_index = 0 - - for i, row in exp_data.iterrows(): - - row_meta = row.iloc[0:split_index].to_dict() - row_values = row.iloc[split_index::].dropna().values.tolist() - - if "Time" in row_meta["Type"]: - continue - - protein_name = row_meta["Protein Name"] - protein_conc = row_meta["Protein Initial concentration"] - protein_unit = row_meta["Protein Unit"] - - measurement.addData( - init_conc=protein_conc, - unit=protein_unit, - protein_id=enzmldoc.getProtein(protein_name.strip()).id, - ) - - reactant_name = row_meta["Reactant Name"] - reactant_conc = row_meta["Reactant Initial concentration"] - reactant_unit = row_meta["Reactant Unit"] - reactant_id = enzmldoc.getReactant(reactant_name.strip()).id - - # Get the type of the measurement - type_mapping = { - "Concentration": DataTypes.CONCENTRATION, - "Absorption": DataTypes.ABSORPTION, - "Conversion [%]": DataTypes.CONVERSION, - "Peak Area": DataTypes.PEAK_AREA, - "Total concentration after addition": DataTypes.CONCENTRATION, - } - - if reactant_id not in measurement.species_dict["reactants"]: - measurement.addData( - init_conc=reactant_conc, unit=reactant_unit, reactant_id=reactant_id - ) - - replicates = None - if row_values: - - if type_mapping[row["Type"]] is DataTypes.CONVERSION: - # Convert percent to rational [0,1] - row_values = list(map(lambda value: value / 100, row_values)) - reactant_unit = "dimensionless" - elif type_mapping[row["Type"]] is DataTypes.PEAK_AREA: - # Add dimensionless unit - if any(value < 0 for value in row_values): - raise ValueError( - "Peak area cant be negative. Data might be corrupted" - ) - - reactant_unit = "dimensionless" - - # Create Replicate - replicate = Replicate( - id=f"replica_{replicate_index}_{reactant_name}_{experiment_id}", - species_id=reactant_id, - data_type=type_mapping[row["Type"]], - data_unit=reactant_unit, - time_unit=time_unit, - time=time_values, - data=row_values, - ) - - replicate_index += 1 - - measurement.addReplicates(replicate, enzmldoc) - - # Finally, add measurement to the document - enzmldoc.addMeasurement(measurement) - - return enzmldoc - - -def get_instances(sheet: pd.DataFrame, obj, enzmldoc) -> list: - mapping = get_template_map(obj) - instances = extract_values(sheet, mapping) - - return [clean_instance(instance, enzmldoc) for instance in instances] - - -def get_template_map(obj) -> dict: - """Extracts the template mappings""" - - return { - field.field_info.extra.get("template_alias"): name - for name, field in obj.__fields__.items() - if field.field_info.extra.get("template_alias") - } - - -def extract_values(sheet: pd.DataFrame, mapping: Dict[str, str]) -> list: - - # Get all valid columns - cols = [col for col in sheet.columns if "Unnamed" not in col] - sheet = sheet[cols] - sheet = sheet.replace(r"^\s*$", np.nan, regex=True) - sheet = sheet.dropna(thresh=len(mapping) - 2) - records = sheet.to_dict(orient="records") - - return [ - { - mapping.get(key): item - for key, item in record.items() - if item and mapping.get(key) and "nan" != repr(item) - } - for record in records - ] - - -def clean_instance(instance: dict, enzmldoc) -> dict: - def get_vessel_name(name: str, enzmldoc): - return enzmldoc.getVessel(name).id - - def get_constant(constant: str, enzmldoc): - if constant == "Constant": - return True - elif constant == "Not constant": - return False - - def get_reversible(reversible: str, enzmldoc): - if reversible == "reversible": - return True - elif reversible == "irreversible": - return False - - def clean_temp_unit(temp_unit: str, enzmldoc): - return temp_unit.replace("°", "") - - def clean_uniprotid(uniprotid: str, enzmldoc): - if repr(uniprotid) == "nan": - return None - else: - uniprotid - - mapping = { - "vessel_id": get_vessel_name, - "constant": get_constant, - "temperature_unit": clean_temp_unit, - "reversible": get_reversible, - "uniprotid": clean_uniprotid, - } - - for key, item in instance.items(): - if key in mapping: - instance[key] = mapping[key](item, enzmldoc) - - return instance - - -def merge_protein_modifier(protein, modifier): - proteins = repr(protein).split(",") - modifier = repr(modifier).split(",") - entities = proteins + modifier - - return ",".join( - [entity.replace("'", "").strip() for entity in entities if entity != "nan"] - ) - - -def rename_columns(columns: List[str]) -> List[str]: - mapping = { - "Unnamed: 4": "Protein Initial concentration", - "Unnamed: 5": "Protein Unit", - "Unnamed: 7": "Reactant Initial concentration", - "Unnamed: 8": "Reactant Unit", - "Protein": "Protein Name", - "Reactant": "Reactant Name", - } - - return [mapping[col] if mapping.get(col) else col for col in columns] - - -def get_split_index(df: pd.DataFrame): - for index, col in enumerate(df.columns): - if "Enter data via transpose" in col: - return index - - -def get_time(data: pd.DataFrame, split_index): - for i, (_, row) in enumerate(data.iterrows()): - if "Time" in row["Type"]: - time_meta = row.iloc[0:split_index].to_dict() - time_unit = get_time_unit(time_meta) - - time_values = row.iloc[split_index::].dropna().values - - return time_values.tolist(), time_unit - - -def get_time_unit(row: dict): - - regex = r"\[([A-Za-z]*)\]" - regex = re.compile(regex) - unit = regex.findall(row["Type"])[0] - - return unit - - -def parse_reaction_element(elements): - if repr(elements) == "nan": - return [] - - return elements - - -def add_instances(fun, elements, enzmldoc) -> None: - all_species = {**enzmldoc.protein_dict, **enzmldoc.reactant_dict} - for id, species in all_species.items(): - - if species.name in elements: - fun( - species_id=id, - stoichiometry=1.0, - constant=False, - enzmldoc=enzmldoc, - ) diff --git a/pyenzyme/enzymeml/tools/unitcreator.py b/pyenzyme/enzymeml/tools/unitcreator.py deleted file mode 100644 index 1cad29dd..00000000 --- a/pyenzyme/enzymeml/tools/unitcreator.py +++ /dev/null @@ -1,220 +0,0 @@ -# File: unitcreator.py -# Project: tools -# Author: Jan Range -# License: BSD-2 clause -# Copyright (c) 2022 Institute of Biochemistry and Technical Biochemistry Stuttgart - -import libsbml - -from deepdiff import DeepDiff - -from pyenzyme.enzymeml.core.unitdef import UnitDef -from pyenzyme.enzymeml.tools.unitparser import UnitParser - - -class UnitCreator: - def __init__(self): - - self.__functionDict = { - "M": self.__Molar, - "mole": self.__Mole, - "l": self.__Volume, - "liter": self.__Volume, - "litre": self.__Volume, - "g": self.__Amount, - "gram": self.__Amount, - "s": self.__Seconds, - "sec": self.__Seconds, - "second": self.__Seconds, - "seconds": self.__Seconds, - "min": self.__Minutes, - "mins": self.__Minutes, - "minutes": self.__Minutes, - "h": self.__Hours, - "hour": self.__Hours, - "hours": self.__Hours, - "C": self.__Celsius, - "celsius": self.__Celsius, - "Celsius": self.__Celsius, - "K": self.__Kelvin, - "kelvin": self.__Kelvin, - "Kelvin": self.__Kelvin, - "dimensionless": self.__Dimensionless, - } - - def getUnit(self, unit_string, enzmldoc) -> str: - """ - Args: - String unit_string: Standard short form of unit - """ - if unit_string.count("/") > 1: - splitted = unit_string.split("/") - corrected = splitted[0] + "/" + "".join(splitted[1::]) - raise ValueError( - f"Unit '{unit_string}' contains multiple backlashes. Please stick to using a single backslash instead for units involving two or more base units per side. Use the following to enter your unit '{corrected}'" - ) - - # Generate ID - id = enzmldoc._generateID(prefix="u", dictionary=enzmldoc._unit_dict) - - # Call unit parser to identify units - parser = UnitParser() - units = sorted(parser.parse(unit_string)) - - # Initialize UnitDef - nominator, denominator = [], [] - for prefix, baseunit, exponent in units: - - pre_unit = "".join([prefix, baseunit]) - - if float(exponent) > 0: - if abs(float(exponent)) > 1: - nominator.append(pre_unit + f"^{exponent[1::]}") - if abs(float(exponent)) == 1: - nominator.append(pre_unit) - else: - if abs(float(exponent)) > 1: - denominator.append(pre_unit + f"^{exponent[1::]}") - if abs(float(exponent)) == 1: - denominator.append(pre_unit) - - # Reformat unit string to a convenient format - if not nominator: - nominator = ["1"] - - if denominator: - name = " / ".join([" ".join(nominator), " ".join(denominator)]) - if not denominator: - name = " ".join(nominator) - - # Convert Celsius to Kelvin - No SBML kind for C! - if name.lower() == "c": - name = "K" - - # Initialize UnitDef object - unitdef = UnitDef(name=name, id=id) - - for prefix, baseunit, exponent in units: - self.__functionDict[baseunit](unitdef, prefix, exponent) - - # Check if there is already a similar unit defined - if self.__checkFootprints(enzmldoc, unitdef.getFootprint()) != "NEW": - return self.__checkFootprints(enzmldoc, unitdef.getFootprint()) - - enzmldoc._unit_dict[unitdef.id] = unitdef - - return unitdef.id - - def __checkFootprints(self, enzmldoc, footprint): - - for unit_id, unitdef in enzmldoc._unit_dict.items(): - if DeepDiff(unitdef.getFootprint(), footprint) == {}: - return unit_id - - return "NEW" - - def __Mole(self, unitdef, prefix, exponent): - - kind = libsbml.UnitKind_toString(libsbml.UNIT_KIND_MOLE) - scale = self.__getPrefix(prefix) - multiplier = 1 - - unitdef.addBaseUnit(kind, exponent, scale, multiplier) - - def __Molar(self, unitdef, prefix, exponent): - - self.__Mole(unitdef, prefix, exponent) - - kind = libsbml.UnitKind_toString(libsbml.UNIT_KIND_LITRE) - scale = 1 - multiplier = 1 - - unitdef.addBaseUnit(kind, -1, scale, multiplier) - - def __Volume(self, unitdef, prefix, exponent): - - kind = libsbml.UnitKind_toString(libsbml.UNIT_KIND_LITRE) - scale = self.__getPrefix(prefix) - multiplier = 1 - - unitdef.addBaseUnit(kind, exponent, scale, multiplier) - - def __Amount(self, unitdef, prefix, exponent): - - kind = libsbml.UnitKind_toString(libsbml.UNIT_KIND_GRAM) - scale = self.__getPrefix(prefix) - multiplier = 1 - - unitdef.addBaseUnit(kind, exponent, scale, multiplier) - - def __Seconds(self, unitdef, prefix, exponent): - - kind = libsbml.UnitKind_toString(libsbml.UNIT_KIND_SECOND) - scale = 1 - multiplier = 1 - - unitdef.addBaseUnit(kind, exponent, scale, multiplier) - - def __Minutes(self, unitdef, prefix=None, exponent=1): - - kind = libsbml.UnitKind_toString(libsbml.UNIT_KIND_SECOND) - scale = 1 - multiplier = 60 - - unitdef.addBaseUnit(kind, exponent, scale, multiplier) - - def __Hours(self, unitdef, prefix=None, exponent=1): - - kind = libsbml.UnitKind_toString(libsbml.UNIT_KIND_SECOND) - scale = 1 - multiplier = 60 * 60 - - unitdef.addBaseUnit(kind, exponent, scale, multiplier) - - def __Celsius(self, unitdef, prefix=None, exponent=1): - - kind = libsbml.UnitKind_toString(libsbml.UNIT_KIND_KELVIN) - scale = 1 - multiplier = 1 - - unitdef.addBaseUnit(kind, exponent, scale, multiplier) - - def __Kelvin(self, unitdef, prefix=None, exponent=1): - - kind = libsbml.UnitKind_toString(libsbml.UNIT_KIND_KELVIN) - scale = 1 - multiplier = 1 - - unitdef.addBaseUnit(kind, exponent, scale, multiplier) - - def __Dimensionless(self, unitdef, prefix=None, exponent=1): - - kind = libsbml.UnitKind_toString(libsbml.UNIT_KIND_DIMENSIONLESS) - scale = 1 - multiplier = 1 - exponent = 1 - - unitdef.addBaseUnit(kind, exponent, scale, multiplier) - - def __getPrefix(self, prefix): - - if prefix == "f": - return -15 - elif prefix == "p": - return -12 - elif prefix == "n": - return -9 - elif prefix == "u": - return -6 - elif prefix == "m": - return -3 - elif prefix == "c": - return -2 - elif prefix == "d": - return -1 - elif prefix == "k": - return 3 - elif len(prefix) == 0: - return 1 - else: - raise KeyError(f"Prefix {prefix} is unknown. Please define unit manually") diff --git a/pyenzyme/enzymeml/tools/unitparser.py b/pyenzyme/enzymeml/tools/unitparser.py deleted file mode 100644 index 67b9b94d..00000000 --- a/pyenzyme/enzymeml/tools/unitparser.py +++ /dev/null @@ -1,124 +0,0 @@ -# File: unitparser.py -# Project: tools -# Author: Jan Range -# License: BSD-2 clause -# Copyright (c) 2022 Institute of Biochemistry and Technical Biochemistry Stuttgart - -import re - - -class UnitParser(object): - def __init__(self): - - self.__prefixDict = { - "femto": "f", - "pico": "p", - "nano": "n", - "micro": "u", - "milli": "m", - "mili": "m", - "centi": "c", - "deci": "d", - "kilo": "k", - } - - def parse(self, exp_string): - - # reformat string - exp_string = self.__exponentString(exp_string) - - # split by exponents - regex = r"([a-zA-Z]*)([-+][\d]*)" - regex = regex.replace(" ", "") - - unit_tup = re.findall(regex, exp_string) - return [self.__getPrefix(tup[0], tup[-1]) for tup in unit_tup if tup[0]] - - def getExponentString(self, string): - - string = string.split("/") - - if len(string) == 2: - nom = string[0].split(" ")[0:-1] - den = string[1].split(" ")[1::] - - elif len(string) == 1: - nom = string - den = [] - - return "".join( - [self.__reformatString(unit, "+") for unit in nom] - + [self.__reformatString(unit, "-") for unit in den] - ) - - def __reformatString(self, string, pre): - regex = r"(\w*)[-+|\^]?(\d*)" - groups = re.findall(regex, string) - exp_string = "" - - for unit, exponent in groups: - - if len(unit) > 0: - - if len(exponent) == 1: - exp_string += unit + pre + exponent - - elif "+" in exponent or "-" in exponent: - exp_string += unit + exponent - - else: - exp_string += unit + "%s1" % pre - - return exp_string - - def __exponentString(self, string): - - string = [st.strip() for st in string.split("/")] - - if len(string) == 2: - nom = string[0].split(" ") - den = string[1].split(" ") - - elif len(string) == 1: - nom = string - den = [] - - return "".join( - [self.__reformatString(unit, "+") for unit in nom] - + [self.__reformatString(unit, "-") for unit in den] - ) - - def __getPrefix(self, string, exponent): - - regex = "^([a|f|p|n|u|m|c|d|k]?)(C|celsius|K|kelvin|M|molar|mole|g|gram|l|L|litre|liter|[s]?|sec|seconds|second|min|mins|minutes|h|hour|hours|dimensionless)$" - string = string.lower()[0:-1] + string[-1] - - try: - prefix = re.findall(regex, string)[0][0] - - if len(prefix) > 1: - prefix = self.__prefixDict[prefix.lower()] - - unit = re.findall(regex, string)[0][1] - - return (prefix, unit, exponent) - - except IndexError: - - try: - unit = re.findall(regex, string)[0][0] - return (None, unit, exponent) - except IndexError: - supportedUnits = regex.split() - raise KeyError( - f'Could not parse unit, because "{string}" is not supported. PyEnzyme currently supports the following {self.__getSupportUnitString(regex)}' - ) - - @staticmethod - def __getSupportUnitString(regex): - prefixes, units = tuple(regex.split(")(")) - - units = units.replace("[s]?", "s").replace(")$", "").split("|") - prefixes = prefixes.replace("^([", "").replace("]?", "").split("|") - - return f"prefixes [{', '.join(prefixes)}] and units [{', '.join(units)}]" diff --git a/pyenzyme/enzymeml/tools/validator.py b/pyenzyme/enzymeml/tools/validator.py deleted file mode 100644 index ff70a9b2..00000000 --- a/pyenzyme/enzymeml/tools/validator.py +++ /dev/null @@ -1,746 +0,0 @@ -# File: validator.py -# Project: core -# Author: Jan Range -# License: BSD-2 clause -# Copyright (c) 2022 Institute of Biochemistry and Technical Biochemistry Stuttgart - -import importlib -import logging -import re -import yaml -import os -import pandas as pd - -from itertools import cycle -from typing import Optional, Dict, Tuple, List - -from pyenzyme.enzymeml.core.unitdef import UnitDef - -# Set up a logger for validation -logger = logging.getLogger("validator") -logger.setLevel(logging.WARNING) - -# create console handler and set level to debug -ch = logging.StreamHandler() -ch.setLevel(logging.WARNING) - -# create formatter -formatter = logging.Formatter("ValidationWarning: %(message)s") - -# add formatter to ch -ch.setFormatter(formatter) - -# add ch to logger -logger.addHandler(ch) - - -class EnzymeMLValidator: - def __init__(self, scheme: Dict): - """Initialize a Validator instance that is capapble to find non-compliances. - - - Args: - scheme (dict): EnzymeML object model for every attribute including options to check upon. - """ - - self.scheme = scheme - - # ! Validation of EnzymeMLDocuments - def validate(self, enzmldoc) -> Tuple[Dict, bool]: - """Validate an EnzymeMLDocument based on a given scheme, let it be YAML or XLSX. - - Args: - enzmldoc (EnzymeMLDocument): EnzymeMLDocument that will be validated and reported on. - return_report (bool): Whether or not an error should raised or only then report should be returned when validation fails. Please note, thsi behaviour should remain - """ - - return self._validate_objects(obj=enzmldoc.dict(), valid=self.scheme) - - @classmethod - def _validate_objects(cls, obj, valid: Dict) -> Tuple[Dict, bool]: - """Validates sub-objects of an EnzymeMLDocument""" - - # Initialize report and control list - report, valid_check = {}, [] - - for attrib, value in obj.items(): - if not valid.get(attrib): - # Skip attributes not supported - continue - - if attrib == "model": - # Model can be None, thus it needs special treatment - obj_report, check = cls._validate_objects(value, valid[attrib]) - - elif isinstance(value, dict): - if attrib == "species_dict": - # Measurements species_dict needs to be flattened - value = {**value["proteins"], **value["reactants"]} - - # Perform validation on dict struct - cls._validate_iterator( - value.items(), attrib, valid, valid_check, report - ) - - elif isinstance(value, list): - if not all(isinstance(x, (float, int, str)) for x in value): - # If its an actual list of objects - cls._validate_iterator( - enumerate(value), attrib, valid, valid_check, report - ) - - else: - # Any primitive file gets validated here - obj_report, check = cls._validate_field(value, valid[attrib], attrib) - - if obj_report: - # Only add if non-empty - report[attrib] = obj_report - - valid_check += [check] - - return report, all(valid_check) - - @classmethod - def _validate_iterator(cls, iterator, attrib, valid, check, global_report): - """Validates an arbitrary data structure if given as an iterator""" - - # Initialize local report - local_report = {} - - for id, obj in iterator: - report, is_valid = cls._validate_objects(obj, valid[attrib]) - - if report: - # Only add if report is non-empty - local_report[id] = report - check += [is_valid] - - # Only add to global report if there are errors - if local_report: - global_report[attrib] = local_report - - @staticmethod - def _validate_field(value, valid, attrib): - """Validates an attribute based on options given from a YAML file""" - - if "id" in attrib: - return {}, True - - report, check = {}, True - enum = valid["enum"] - val_min = valid["range"]["min"] - val_max = valid["range"]["max"] - - if all(val is None for val in enum): - enum = None - - # Check mandatory - if value is None and valid["mandatory"] is True: - check = False - report.update({"mandatory_error": "Mandatory attribute is not given."}) - - # Check enum - if enum and value not in enum: - check = False - report.update( - { - "enum_error": f"Value of '{value}' does not comply with vocabulary {enum}" - } - ) - - # Check value range - if val_max and val_min: - if isinstance(value, (int, float)): - if not val_min <= value <= val_max: - check = False - report.update( - { - "range_error": f"Value of '{value}' is out of range for [{val_min}, {val_max}]" - } - ) - - else: - check = False - report.update( - { - "range_error": f"Value '{value}' of type '{type(value)}' is not numeric." - } - ) - - return report, check - - # ! Template exports - @classmethod - def generateValidationSpreadsheet(cls, path: str = "."): - """Generates an EnzymeML validation spreadsheet based on the current implementation. - - The Validation spreadsheet can be used on database-side to generate an EnzymeML validation - YAML file that can be used by PyEnzyme to validate if a given document fits the minimal - requirements given in said database. - """ - - # Prevent circular imports (Its dirty, I know, but it works) - from pyenzyme.enzymeml.core.enzymemldocument import EnzymeMLDocument - - # Get all specs - validator = cls(scheme={}) - _, data = validator._get_cls_annotations(EnzymeMLDocument, level="document") - - # Generate the document - validator._generate_spreadsheet(data, path) - - @classmethod - def generateValidationYAML(cls, path: Optional[str] = None) -> str: - """Generates an EnzymeML validation YAML file based on the current implementation. - - The Validation YAML can be used by PyEnzyme to validate if a given document fits the minimal - requirements given in said database. - """ - - # Prevent circular imports (Its dirty, I know, but it works) - from pyenzyme.enzymeml.core.enzymemldocument import EnzymeMLDocument - - # Get collection data - cls = cls(scheme={}) - collection, _ = cls._get_cls_annotations(EnzymeMLDocument, level="document") - - if path: - path = os.path.join(path, "EnzymeML_Validation_Template.yaml") - with open(path, "w") as f: - f.write(cls._dump_validation_template_yaml(collection)) - - return cls._dump_validation_template_yaml(collection) - - def _get_cls_annotations(self, cls, level: str) -> Tuple[Dict, List]: - """Parses class definitions to recursively get sub-modules""" - - data = [] - cls_collection = {} - exclude = [ - "unit_dict", - "file_dict", - "log", - "level", - "version", - "meta_id", - "id", - "boundary", - "uri", - "creator_id", - ] - - # Sort annotations to primitive -> sub-structure - def sort_func(annot): - """Sort recursion for clean parsing""" - data_type = repr(annot[1]) - if "pyenzyme" in data_type: - return True - else: - return False - - annotations = sorted(cls.__annotations__.items(), key=sort_func) - - for name, value in annotations: - - if "pyenzyme.enzymeml" in repr(value) and "ontology" not in repr(value): - - annot = repr(value) - regex = r"(pyenzyme.enzymeml.[a-zA-Z]*.[a-zA-Z]*).([a-zA-Z]*)" - regex = re.compile(regex) - module, cls_name = regex.findall(annot)[0] - - sub_class = getattr(importlib.import_module(module), cls_name) - - if name not in exclude: - cls_collection[name], sub_data = self._get_cls_annotations( - sub_class, level=name - ) - data += sub_data - - continue - - if not name.startswith("_") and name not in exclude: - - options = { - "mandatory": True, - "description": cls.__fields__[name].field_info.description, - } - - data_fields = { - "Object": cls.__name__, - "Field": name, - "Mandatory": "True", - "Value Range": "Enter Min to Max value", - "Controlled Vocabulary": "Enter a set of allowed names/values", - "Description": cls.__fields__[name].field_info.description, - "Internal Level (not relevant)": level, - } - - options["range"] = {"min": None, "max": None} - data_fields["Controlled Vocabulary"] = "---" - options["enum"] = [None] - data_fields["Value Range"] = "---" - - cls_collection[name] = options - data.append(data_fields) - - return cls_collection, data - - @staticmethod - def _dump_validation_template_yaml(collection: Dict) -> str: - class MyDumper(yaml.Dumper): - def increase_indent(self, flow=False, indentless=False): - return super(MyDumper, self).increase_indent(flow, False) - - # Generate yaml_string - return yaml.dump( - collection, Dumper=MyDumper, default_flow_style=False, sort_keys=False - ) - - @staticmethod - def _generate_spreadsheet(data, path): - """Generates an EnzymeML validation spreadsheet based on the current implementation. - - The Validation spreadsheet can be used on database-side to generate an EnzymeML validation - YAML file that can be used by PyEnzyme to validate if a given document fits the minimal - requirements given in said database. - - Args: - data (dict): Schema that has been extracted from the EnzymeMLDocument class. - - """ - - # Initialize writer and setup a DataFrame to write to - writer = pd.ExcelWriter(os.path.join(path, "EnzymeML_Validation_Template.xlsx")) - df = pd.DataFrame(data) - df.to_excel(writer, sheet_name="validation", index=False, na_rep="NaN") - - # Create color cycle that will be used to mark different objects - colors = cycle( - [ - "#FFEBEE", - "#F3E5F5", - "#E8EAF6", - "#E3F2FD", - "#E0F7FA", - "#E8F5E9", - "#F9FBE7", - "#FFFDE7", - "#FBE9E7", - ] - ) - - # Process colummns - # Auto-adjust columns' width - for column in df: - column_width = max([len(str(value)) for value in df[column]]) - - if column_width <= 20: - # Keep columns at a min width - column_width = 20 - - col_idx = df.columns.get_loc(column) - writer.sheets["validation"].set_column(col_idx, col_idx, column_width) - - # Process rows - # Set height of first row - workbook = writer.book - style = workbook.add_format() - style.set_align("left") - writer.sheets["validation"].set_row(0, 25, style) - - obj = None - for row_idx, row in df.iterrows(): - - workbook = writer.book - style = workbook.add_format() - style.set_align("center_across") - style.set_text_h_align("left") - - if obj != row["Object"]: - # Object changes - current_color = next(colors) - obj = row["Object"] - - # Set borders to top == bold - style.set_left(1) - style.set_right(1) - style.set_left_color("#9E9E9E") - style.set_right_color("#9E9E9E") - style.set_top(1) - - else: - # Same object, keep normal border pattern - style.set_border(1) - style.set_border_color("#9E9E9E") - - # Set the background color of the row - style.bg_color = current_color - - # Write to row - writer.sheets["validation"].set_row(row_idx + 1, 25, style) - - writer.close() - - # ! Template conversion - @classmethod - def convertSheetToYAML(cls, path: str, filename: Optional[str] = None) -> str: - """Converts a given EnzymeML Validation spreadsheet to a valid EnzymeML validation YAML file. - - The generated file can be hosted in a database where it is publicaly available to - validate EnzymeML documents based on the minimal requirements defined in the YAML file. - It can also serve as a local file to validate to your own requirements. - - If a filename has been given, the YAML file will be written to the same directory - as the spreadsheet template. Otherwise - - Args: - - path (str): Path to the EnzymeML Validation spreadsheet - filename (Optional[str]): Name of the generated YAML file, if specified. Defaults to None. - - Returns: - - str: Generated YAML file string. - - """ - - # Prevent circular imports (Its dirty, I know, but it works) - from pyenzyme.enzymeml.core.enzymemldocument import EnzymeMLDocument - - # Read template and get class structure collection - cls = cls(scheme={}) - template = pd.read_excel(path).to_dict(orient="records") - empty_collection, _ = cls._get_cls_annotations( - EnzymeMLDocument, level="document" - ) - - for entry in template: - - # Get everything from the entry - level = entry["Internal Level (not relevant)"] - field = entry["Field"] - mandatory = entry["Mandatory"] - val_range = entry["Value Range"] - enum = entry["Controlled Vocabulary"] - - # Process given values - if enum in ["Enter a set of allowed names/values", "---"]: - enum = [None] - else: - enum = [val.strip() for val in enum.split(",")] - - if val_range in ["Enter Min to Max value", "---"]: - min, max = None, None - else: - values = [float(val.strip()) for val in val_range.split("-")] - min, max = values[0], values[1] - - # Retrieve fitting object from collection - if level == "document": - # Root level - collection_obj = empty_collection - else: - # Sub-root object - collection_obj = cls._traverse_data(empty_collection, level) - - # Apply changes to the empty collection - field_options = collection_obj[field] - field_options.update( - { - "mandatory": mandatory, - "enum": enum, - "range": {"min": min, "max": max}, - } - ) - - # Get the yaml string - yaml_string = cls._dump_validation_template_yaml(empty_collection) - - if filename: - path = os.path.dirname(os.path.abspath(path)) - yaml_path = os.path.join(path, f"{filename}.yaml") - - with open(yaml_path, "w") as f: - f.write(yaml_string) - - return yaml_string - - @classmethod - def _traverse_data(cls, data, search_term: str) -> Optional[Dict]: - """Traverses a dictionary and returns the object reference""" - - # Adapt to file types - if isinstance(data, dict): - fields = data.items() - elif isinstance(data, list): - fields = enumerate(data) - else: - raise TypeError(f"Invalid data type {type(data)}") - - result = None - - for key, item in fields: - if search_term == key: - return item - elif isinstance(item, (dict, list)): - result = cls._traverse_data(item, search_term) - - if result: - return result - - return None - - # ! Unit checker - @classmethod - def check_unit_consistency(cls, enzmldoc, strict: bool = False): - """Validates unit consistency in an EnzymeMLDocument. - - This method will check whether all (initial) concentration units of a species - are consistent throughout the document. Default mode only requires measurements and - replicates to comply to the species unit. - - This can also be set to 'strict', where any species, measurement, - replicate and parameter has to comply in a global fashion. - To summarise, strict mode checks on: - - - Consistent usage of time - - Consistent concentration units for ALL concentrations - - Consistent volumetric unit including vessels - - Strict mode is of greates importance for kinetic modeling, differing scales - can lead to wrong results. However, the code will still run and only warnings - will be given. - - Args: - strict (bool, optional): _description_. Defaults to False. - - Returns: - Dict: Report on which units are inconsistent - Bool: Whether the document is consistent in units - """ - - # Initialize validator to use - cls = cls(scheme={}) - - # Now create a data structure of units per species for - # Measurements and Replicates - used_units = {} - used_time_units = {} - used_volume_units = {} - report, is_consistent = {}, True - - # Check vessel unit - cls._check_vessels(enzmldoc, used_volume_units) - - # Perform consistency check on parameters - cls._check_parameters(enzmldoc, used_time_units, used_volume_units) - - # Perform consistency check on species/replicates/measurements - cls._check_species( - enzmldoc, report, used_time_units, used_units, used_volume_units - ) - - if strict: - - if len(set(used_units.values())) != 1: - logger.warning( - f"Inconsistent usage of concentration units. All units should be the same, but found {set(used_units.values())}" - ) - - # Append to report - report["conc_units"] = cls._reformat_strict_report(used_units) - - if len(set(used_time_units.values())) != 1: - logger.warning( - f"Inconsistent usage of time units. All units should be the same, but found {set(used_time_units.values())}" - ) - - # Append to report - report["time_units"] = cls._reformat_strict_report(used_time_units) - - if len(set(used_volume_units.values())) != 1: - logger.warning( - f"Inconsistent usage of volume units. All units should be the same, but found {set(used_volume_units.values())}. In order to guarantee modelling platforms based on SBML to work properly, make sure that vessel volume unit is consistent with the one used in concentration. \n\nBest done by editing vessels using 'enzmldoc.getVessel(ID)' and an appropriate 'unit' assigned along with a rescaling." - ) - - # Append to report - report["volume_units"] = cls._reformat_strict_report(used_volume_units) - - if report: - is_consistent = False - - return is_consistent, report - - def _check_vessels(self, enzmldoc, used_volume_units: Dict[str, str]): - """Checks volumetric unit consitency of Vessels""" - - for vessel in enzmldoc.vessel_dict.values(): - vessel_unit = vessel.unitdef() - volume_part = self._get_baseunit_part(vessel_unit, kind="litre") - - if volume_part: - used_volume_units[vessel.id] = volume_part[0].get_name() - - def _check_parameters( - self, - enzmldoc, - used_time_units: Dict[str, str], - used_volume_units: Dict[str, str], - ) -> None: - """Checks time unit consistency of Parameters""" - - # Get all the time units used in parameters - # Export local parameters - params = [ - param - for reaction in enzmldoc.reaction_dict.values() - for param in reaction.model.parameters - if reaction.model and not param.is_global - ] - - # Global parameters - params += [param for param in enzmldoc.global_parameters.values()] - - for param in params: - if param.unit: - - # Get the time unit, if given - time_part = self._get_baseunit_part(param.unitdef(), "second") - - if time_part: - # When there is a time unit, store it - used_time_units[param.name] = time_part[0].get_name() - - # Get the volume unit, if given - volume_part = self._get_baseunit_part(param.unitdef(), "litre") - - if volume_part: - # When there is a time unit, store it - used_volume_units[param.name] = volume_part[0].get_name() - - def _check_species( - self, - enzmldoc, - report: Dict, - used_time_units: Dict[str, str], - used_units: Dict[str, str], - used_volume_units: Dict[str, str], - ): - """Checks consistency for species to measurements""" - - all_species = { - **enzmldoc.protein_dict, - **enzmldoc.reactant_dict, - **enzmldoc.complex_dict, - } - - for id, species in all_species.items(): - - # Get the unit expected from the species - unit = species.unitdef() - - # If there is no unit at the species, take the - # first from a measurement - if unit: - unit_name = unit._get_unit_name() - used_units[id] = unit_name - else: - logger.warning( - f"{species.__class__.__name__} {id} has no unit specified. Using measurement unit as reference now. Use 'strict' to force units at species.", - ) - used_units[id] = "No Unit" - unit_name = None - - # Initialize a dict to report on where units are inconsistent - log_dict = {"measurements": {}, "replicates": {}} - - for measurement in enzmldoc.measurement_dict.values(): - meas_species = measurement._getAllSpecies() - meas_data = meas_species.get(id) - - if meas_data: - - # Get measurement unit - meas_data = meas_species.get(id) - meas_unit = meas_data.unitdef() - meas_unit_name = meas_unit._get_unit_name() - meas_vol_unit = self._get_baseunit_part(meas_unit, "litre") - - if unit is None: - # Use meas unit as the expected one - unit = meas_unit - unit_name = meas_unit._get_unit_name() - - # Add to list of already used units - location = f"{measurement.id}/{meas_data.get_id()}" - used_units[location] = meas_unit_name - used_time_units[location] = measurement.global_time_unit - - # If there is a volumetric unit, add it - if meas_vol_unit: - used_volume_units[location] = meas_vol_unit[0].get_name() - - if unit_name != meas_unit_name: - # Report if there are inconsistencies - log_dict["measurements"][measurement.id] = { - "expected": unit._get_unit_name(), - "given": meas_unit_name, - } - - # Check replicates - for replicate in meas_data.replicates: - - # Get replicate units - repl_unit = replicate.data_unitdef() - repl_unit_name = repl_unit._get_unit_name() - repl_vol_unit = self._get_baseunit_part(repl_unit, "litre") - - # Add to list of already used units - location = ( - f"{measurement.id}/{meas_data.get_id()}/{replicate.id}" - ) - used_units[location] = meas_unit_name - used_time_units[location] = measurement.global_time_unit - - # If there is a volumetric unit, add it - if meas_vol_unit: - used_volume_units[location] = repl_vol_unit[0].get_name() - - if unit_name != repl_unit_name: - # Report if there are inconsistencies - log_dict["replicates"][measurement.id] = { - "expected": unit._get_unit_name(), - "given": repl_unit_name, - } - - # Add to the overall report - if log_dict["measurements"] or log_dict["replicates"]: - report[id] = {key: report for key, report in log_dict.items() if report} - - @staticmethod - def _reformat_strict_report(report: Dict[str, str]): - """Reformats a report for improved redability""" - - # Get all values that occur - values = list(set(report.values())) - nu_report = {} - - # Iterate over all those values and collect those entries that - # posses the said object - for value in values: - nu_report[value] = [loc for loc, unit in report.items() if unit == value] - - return nu_report - - @staticmethod - def _get_baseunit_part(unitdef: UnitDef, kind: str): - """Gets a specific part of a unitdef""" - - return list( - filter( - lambda baseunit: baseunit.kind == kind, - unitdef.units, - ) - ) diff --git a/pyenzyme/thinlayers/TL_Base.py b/pyenzyme/thinlayers/TL_Base.py deleted file mode 100644 index f8086197..00000000 --- a/pyenzyme/thinlayers/TL_Base.py +++ /dev/null @@ -1,65 +0,0 @@ -# File: measurementData.py -# Project: thinlayers -# Author: Jan Range, Dr. Frank Bergmann, Prof. Dr. Johann Rohwer -# License: BSD-2 clause -# Copyright (c) 2022 Institute of Biochemistry and Technical Biochemistry Stuttgart - -from abc import ABC, abstractmethod -from typing import Union, Optional - -from pyenzyme.enzymeml.core.enzymemldocument import EnzymeMLDocument - - -class BaseThinLayer(ABC): - def __init__( - self, - path, - measurement_ids: Union[str, list] = "all", - init_file: Optional[str] = None, - ): - - if isinstance(measurement_ids, str) and measurement_ids != "all": - raise TypeError("Measurements must either be a list of IDs or 'all'") - - # Load the EnzymeML document to gather data - self.filepath = path - self.enzmldoc = EnzymeMLDocument.fromFile(path) - - # If an initialization schema is given, apply it here - if init_file: - self.enzmldoc.applyModelInitialization(init_file, to_values=True) - - # The following will extract the tim course data found in all measurements - self.sbml_xml = self.enzmldoc.toXMLString() - self.data = self.enzmldoc.exportMeasurementData(measurement_ids=measurement_ids) - - # Get all rate laws and store them in a dictionary - self.reaction_data = { - reaction.id: (reaction.model, reaction.getStoichiometricCoefficients()) - for reaction in self.enzmldoc.reaction_dict.values() - if reaction.model - } - - # Store global parameters if given - self.global_parameters = self.enzmldoc.global_parameters - - @abstractmethod - def optimize(self): - """ - The optimize method should only utilize the objects attributes 'data' and 'models' since these - should cover all necessary informations to run the optimization. In addition, the method could - also utilize the XML string if based in SBML. - - Finally, if an optimization has been performed the method should enter all estimated values as - well as optional statistics such as stdev or AKAIKE for instance to each parameter. Since the - models found in 'self.models' are immutable objects and thus references, the estimated parameters - will already be inserted to the model. - - See the example class below to see how the optimization could be implemented. - """ - raise NotImplementedError() - - @abstractmethod - def write(self) -> EnzymeMLDocument: - """Writes the estimated parameters back to a new EnzymeMLDocument""" - raise NotImplementedError() diff --git a/pyenzyme/thinlayers/TL_Copasi.py b/pyenzyme/thinlayers/TL_Copasi.py deleted file mode 100644 index 3c317dcd..00000000 --- a/pyenzyme/thinlayers/TL_Copasi.py +++ /dev/null @@ -1,463 +0,0 @@ -# """ -# File: TL_Copasi.py -# Project: ThinLayers -# Author: Jan Range -# Author: Frank Bergmann -# License: BSD-2 clause -# ----- -# Last Modified: Wednesday June 23rd 2021 10:25:11 pm -# Modified By: Jan Range () -# ----- -# Copyright (c) 2021 Institute of Biochemistry and Technical Biochemistry Stuttgart -# """ - -""" -This module contains the COPASI ThinLayer: - -To use it, simply instantiate it using an EnzymeML Document. This will estimate all parameters of the enzyme ml -document (all temporary data will be stored in working_dir). - - >>> tl = ThinLayerCopasi(path='Model4.omex', outdir='./working_dir') - >>> tl.optimize() - - This would return a pandas dataframe with the fit found, to write it into a new document you'd use: - - >>> new_doc = tl.write() - - -In order to change the settings of the parameter estimation, or to change the loaded model we recommend to use -`basico `_. so after initializing the thinlayer, you'd load the model into basico. -For example here is how you'd switch the method to particle swarm: - - >>> from basico import * - >>> tl = ThinLayerCopasi(path='Model4.omex', outdir='./working_dir') - >>> set_current_model(tl.dm) - >>> set_task_settings(T.PARAMETER_ESTIMATION, - ... { - ... 'method': {'name': PE.PARTICLE_SWARM } - ... }) - -If the modle is loaded into basico, you can easily plot the results as well. The COPASI file (.cps) in the working -directory can also be directly used from the COPASI Graphical User Interface. - -""" - -import logging -from typing import Union, Optional - -from pyenzyme.thinlayers import BaseThinLayer -import os -import pandas as pd -from builtins import enumerate - -_COPASI_IMPORT_ERROR = None -try: - import COPASI -except ModuleNotFoundError as e: - _COPASI_IMPORT_ERROR = """ - ThinLayerCopasi is not available. - To use it, please install the following dependencies: - {} - """.format(e) - -log = logging.getLogger(__name__) - - -class ThinLayerCopasi(BaseThinLayer): - - def __init__(self, path, outdir, - measurement_ids: Union[str, list] = "all", - init_file: Optional[str] = None): - """ - Initializes a new instance of the COPASI thin layer, by loading the EnzymeML file - specified in `path` and creating a COPASI file (+ data) in `outdir`. - - :param path: the enzyme ml document to load - :param outdir: the output dir - :param measurement_ids: the measurement ids or all - :param init_file: optional initialization file for fit items - - """ - # check dependencies - if _COPASI_IMPORT_ERROR: - raise RuntimeError(_COPASI_IMPORT_ERROR) - - # initialize base class, let it do the reading - BaseThinLayer.__init__( - self, path, measurement_ids, init_file=init_file) - self.name = self.enzmldoc.name - self.working_dir = os.path.join(os.path.abspath(outdir), self.name) - self.cps_file = os.path.join(self.working_dir, self.name + '.cps') - if not os.path.exists(self.working_dir): - os.makedirs(self.working_dir) - - # now initialize the COPASI document from it - self.dm = COPASI.CRootContainer.addDatamodel() - try: - self.dm.importSBMLFromString(self.sbml_xml) - except COPASI.CCopasiException: - log.error(COPASI.CCopasiMessage.getAllMessageText()) - - # maps - self._init_maps() - - # variables - self.model = self.dm.getModel() - self.task = self.dm.getTask('Parameter Estimation') - self.task.setScheduled(True) - self.task.setUpdateModel(False) - self.task.setMethodType(COPASI.CTaskEnum.Method_LevenbergMarquardt) - self.problem = self.task.getProblem() - self.problem.setCalculateStatistics(True) - self.exp_set = self.problem.getExperimentSet() - - # read in experiments - self._import_experiments() - - # set all parameters as fit items - if init_file is None: - self._set_default_items() - else: - self._set_default_items_from_init_file() - - self.dm.saveModel(self.cps_file, True) - - def _init_maps(self): - """Initializes a map from SBML id to COPASI objects""" - self.sbml_id_map = {} - for item in self.dm.getModel().getMetabolites(): - self.sbml_id_map[item.getSBMLId()] = item - for item in self.dm.getModel().getModelValues(): - self.sbml_id_map[item.getSBMLId()] = item - for item in self.dm.getModel().getReactions(): - self.sbml_id_map[item.getSBMLId()] = item - for item in self.dm.getModel().getCompartments(): - self.sbml_id_map[item.getSBMLId()] = item - - def _get_cn_for_item(self, item): - """Resolves the given item to CN or None - - :param item: dictionary with 'name' and optionally 'reaction_id' - :type item: dict - :return: the CN if found, or None - :rtype: COPASI.CCommonName - """ - reaction = None - if 'reaction_id' in item and item['reaction_id'] in self.sbml_id_map: - reaction = self.sbml_id_map[item['reaction_id']] - - if 'name' in item: - if reaction is not None: - return reaction.getParameterObjects(item['name'])[0].getCN() - - mv = self.model.getModelValue(item['name']) - if mv is not None: - return mv.getInitialValueReference().getCN() - - metab = self.model.getMetabolite(item['name']) - if metab is not None: - return metab.getInitialConcentrationReference().getCN() - - return None - - def _import_experiments(self): - """ Writes all experiments to TSV file and performs mapping in COPASI - - :return: None - """ - for measurement_id, measurement_dict in self.data.items(): - sbml_ids = measurement_dict['data'].columns.to_list() - - data = measurement_dict['data'] - - for k, v in measurement_dict['initConc'].items(): - data = data.join(pd.DataFrame({'init_{0}'.format(k): [v[0]]})) - sbml_ids.append('init_{0}'.format(k)) - # validate value - if k in data.columns: - initial_value = data[data['time'] == 0.0][k] - if not initial_value.empty and float(initial_value) != v[0]: - log.warning(f'The initial value of "{k}" in experiment "{measurement_id}" ' - f'is inconsistent with the specified initial concentration: ' - f'{float(initial_value)} != {v[0]}') - - exp_filename = os.path.abspath(os.path.join( - self.working_dir, measurement_id + '.tsv')) - - data.to_csv(exp_filename, - sep='\t', header=True, index=False) - - exp = COPASI.CExperiment(self.dm) - exp.setObjectName( - '{0}'.format(measurement_id) - ) - exp.setFirstRow(1) - exp.setLastRow(data.shape[0] + 1) - exp.setHeaderRow(1) - exp.setFileName(exp_filename) - exp.setExperimentType(COPASI.CTaskEnum.Task_timeCourse) - exp.setSeparator('\t') - exp.setNumColumns(len(sbml_ids)) - exp = self.exp_set.addExperiment(exp) - info = COPASI.CExperimentFileInfo(self.exp_set) - info.setFileName(exp_filename) - - # Mapping from .tsv file to COPASI bindings - obj_map = exp.getObjectMap() - obj_map.setNumCols(data.shape[1]) - - for i, col in enumerate(sbml_ids): - if col == "time": - role = COPASI.CExperiment.time - obj_map.setRole(i, role) - - elif col in self.sbml_id_map.keys(): - role = COPASI.CExperiment.dependent - obj_map.setRole(i, role) - obj_map.setObjectCN(i, self.sbml_id_map[col] - .getConcentrationReference().getCN().getString()) - - elif col.startswith('init_') and col[5:] in self.sbml_id_map.keys(): - role = COPASI.CExperiment.independent - obj_map.setRole(i, role) - obj_map.setObjectCN(i, self.sbml_id_map[col[5:]] - .getInitialConcentrationReference().getCN().getString()) - - else: - role = COPASI.CExperiment.ignore - obj_map.setRole(i, role) - - def get_fit_parameters(self): - """ Returns all fit items specified as a list of dictionaries of the form - - [ { 'name': 'km', 'start': 0.1, 'lower': 1e-6, 'upper': 1e6, 'reaction_id': 'r1' } ... ] - - :return: list of dictionaries with fit items - :rtype: [{}] - """ - result = [] - for i in range(self.problem.getOptItemSize()): - p = self.problem.getOptItem(i) - assert (isinstance(p, COPASI.COptItem)) - obj = self.dm.getObject(p.getObjectCN()) - if obj is None: - continue - name = obj.getObjectName() if obj.getObjectType( - ) != "Reference" else obj.getObjectParent().getObjectName() - - r = obj.getObjectAncestor('Reaction') - reaction_id = r.getSBMLId() if r else None - - result.append({ - 'name': name, - 'start': p.getStartValue(), - 'lower': p.getLowerBoundValue(), - 'upper': p.getUpperBoundValue(), - 'reaction_id': reaction_id - }) - return result - - def set_fit_parameters(self, fit_parameters): - """Replaces all fit items with the ones specified - - :param fit_parameters: list of dictionaries of the same form as returned by get_fit_parameters - :return: None - """ - assert (isinstance(self.problem, COPASI.CFitProblem)) - assert (isinstance(self.task, COPASI.CFitTask)) - assert (isinstance(self.dm, COPASI.CDataModel)) - - for i in range(self.problem.getOptItemSize()): - self.problem.removeOptItem(0) - - for item in fit_parameters: - if 'name' not in item: - continue - - cn = self._get_cn_for_item(item) - if cn is None: - continue - - fit_item = self.problem.addFitItem(cn) - assert (isinstance(fit_item, COPASI.CFitItem)) - if 'lower' in item: - fit_item.setLowerBound(COPASI.CCommonName(str(item['lower']))) - if 'upper' in item: - fit_item.setUpperBound(COPASI.CCommonName(str(item['upper']))) - if 'start' in item: - fit_item.setStartValue(float(item['start'])) - - def _get_result(self): - """Utility function adding a value column to the fit items - - :return: pandas dataframe with the result of the fit - :rtype: pandas.DataFrame - """ - fit_items = self.get_fit_parameters() - new_values = [val for val in self.problem.getSolutionVariables()] - sd_values = [val for val in self.problem.getVariableStdDeviations()] - if len(fit_items) != len(new_values): - logging.error('No results available yet, run `optimize` first.') - return None - - for i, vals in enumerate(fit_items): - vals['value'] = new_values[i] - vals['std_deviation'] = sd_values[i] - - df = pd.DataFrame(data=fit_items).set_index('name') - return df - - def optimize(self, update_model=False): - """ Carries out the Parameter estimation - - :param update_model: optional argument, indicating whether to - update the model, so another optimization run would start - with the solution found from the first run. - - :return: Pandas DataFrame with the results - - """ - # run optimization - self.task.setUpdateModel(update_model) - if not self.task.initializeRaw(COPASI.CCopasiTask.OUTPUT_UI): - log.error(COPASI.CCopasiMessage.getFirstMessage().getAllMessageText()) - if not self.task.processRaw(True): - log.error(COPASI.CCopasiMessage.getFirstMessage().getAllMessageText()) - self.task.restore() - - return self._get_result() - - def write(self): - """Writes the estimated parameters to a copy of the EnzymeMLDocument""" - - nu_enzmldoc = self.enzmldoc.copy(deep=True) - - assert (isinstance(self.problem, COPASI.CFitProblem)) - results = self.problem.getSolutionVariables() - if self.problem.getOptItemSize() != results.size(): - log.error('The optimization was not run yet, no update can be made') - return nu_enzmldoc - - log.debug('OBJ: {0}'.format(self.problem.getSolutionValue())) - log.debug('RMS: {0}'.format(self.problem.getRMS())) - - for i in range(self.problem.getOptItemSize()): - item = self.problem.getOptItem(i) - obj = self.dm.getObject(item.getObjectCN()) - if obj is None: - continue - - name = obj.getObjectName() if obj.getObjectType( - ) != 'Reference' else obj.getObjectParent().getObjectName() - - value = results.get(i) - - reaction = obj.getObjectAncestor('Reaction') - if reaction is not None: - enz_reaction = nu_enzmldoc.getReaction(reaction.getSBMLId()) - if enz_reaction: - parameter = enz_reaction.model.getParameter(name) - parameter.value = value - else: - p = nu_enzmldoc.global_parameters.get(name) - p.value = value - - return nu_enzmldoc - - def _set_default_items(self): - """ Initializes fit items from the local parameters specified in the reaction_data - - :return: None - """ - for reaction_id, data in self.reaction_data.items(): - r = self.sbml_id_map[reaction_id] - assert (isinstance(r, COPASI.CReaction)) - for p in self.reaction_data[reaction_id][0].parameters: - obj = r.getParameterObjects(p.name)[0].getObject( - COPASI.CCommonName('Reference=Value')) - cn = obj.getCN() - fit_item = self.problem.addFitItem(cn) - assert (isinstance(fit_item, COPASI.CFitItem)) - fit_item.setLowerBound(COPASI.CCommonName(str(1e-6))) - fit_item.setUpperBound(COPASI.CCommonName(str(1e6))) - fit_item.setStartValue(float(p.value)) - - def _set_default_items_from_init_file(self): - """ Use this to create a default template, when an init file was passed to the thin layer - and it has been already applied - - :return: None - """ - assert (isinstance(self.problem, COPASI.CFitProblem)) - - # remove old items - while self.problem.getOptItemSize() > 0: - self.problem.removeOptItem(0) - - for global_param in self.global_parameters.values(): - - if not global_param.lower or not global_param.upper: - # nan values used to indicate that this should not be fitted - continue - - mv = self.dm.getModel().getModelValue(global_param.name) - if not mv: - log.warning( - "No global parameter {0} in the model".format(global_param.name)) - continue - - value = global_param.value if global_param.value else global_param.initial_value - - if not value: - raise ValueError( - f"Neither initial_value nor value given for parameter {global_param.name} in global parameters" - ) - - cn = mv.getInitialValueReference().getCN() - fit_item = self.problem.addFitItem(cn) - assert (isinstance(fit_item, COPASI.CFitItem)) - fit_item.setLowerBound(COPASI.CCommonName(str(global_param.lower))) - fit_item.setUpperBound(COPASI.CCommonName(str(global_param.upper))) - fit_item.setStartValue(float(value)) - - for reaction_id, (model, _) in self.reaction_data.items(): - r = self.sbml_id_map[reaction_id] - assert (isinstance(r, COPASI.CReaction)) - for p in model.parameters: - if p.is_global: - continue - - if not p.lower or not p.upper: - # nan values used to indicate that this should not be fitted - continue - - value = p.value if p.value else p.initial_value - - if not value: - raise ValueError( - f"Neither initial_value nor value given for parameter {p.name} in reaction {reaction_id}" - ) - - obj = r.getParameterObjects(p.name)[0].getObject( - COPASI.CCommonName('Reference=Value')) - cn = obj.getCN() - fit_item = self.problem.addFitItem(cn) - assert (isinstance(fit_item, COPASI.CFitItem)) - fit_item.setLowerBound(COPASI.CCommonName(str(p.lower))) - fit_item.setUpperBound(COPASI.CCommonName(str(p.upper))) - fit_item.setStartValue(float(value)) - - -if __name__ == '__main__': - this_dir = os.path.dirname(__file__) - filename = os.path.join(this_dir + "/../../", - "examples/ThinLayers/COPASI/3IZNOK_Simulated.omex") - assert os.path.exists(filename) - - thin_layer = ThinLayerCopasi( - path=filename, - outdir='./out' - ) - - thin_layer.optimize() - thin_layer.write() diff --git a/pyenzyme/thinlayers/TL_Pysces.py b/pyenzyme/thinlayers/TL_Pysces.py deleted file mode 100644 index c6cd34ef..00000000 --- a/pyenzyme/thinlayers/TL_Pysces.py +++ /dev/null @@ -1,375 +0,0 @@ -# File: TL_Pysces.py -# Project: ThinLayers -# Author: Johann Rohwer (j.m.rohwer@gmail.com) -# License: BSD-2 clause -# Copyright (c) 2022 Stellenbosch University - -import numpy as np -import pandas as pd -from matplotlib import pyplot as plt -import os -import math - -from typing import Union, Optional -from pyenzyme.thinlayers.TL_Base import BaseThinLayer -from pyenzyme.enzymeml.core.exceptions import SpeciesNotFoundError - -import io -from contextlib import redirect_stdout - -_PYSCES_IMPORT_ERROR = None -_PYSCES_IMPORT_STREAM = io.StringIO() -try: - with redirect_stdout(_PYSCES_IMPORT_STREAM): - import pysces - import lmfit -except ModuleNotFoundError as e: - _PYSCES_IMPORT_ERROR = """ - ThinLayerPysces is not available. - To use it, please install the following dependencies: - {} - """.format( - e - ) - - -class ThinLayerPysces(BaseThinLayer): - def __init__( - self, - path, - model_dir: str, - measurement_ids: Union[str, list] = "all", - init_file: Optional[str] = None, - ): - # first time a pysces thinlayer is created, print the import messages - global _PYSCES_IMPORT_STREAM - if _PYSCES_IMPORT_STREAM is not None: - print(_PYSCES_IMPORT_STREAM.getvalue()) - _PYSCES_IMPORT_STREAM = None - - # check dependencies - if _PYSCES_IMPORT_ERROR: - raise RuntimeError(_PYSCES_IMPORT_ERROR) - - super().__init__(path, measurement_ids, init_file) - - # Convert model to PSC and get experimental data - self._get_pysces_model(model_dir) - self._get_experimental_data() - - # ! Interface - def optimize(self, method="leastsq"): - """Performs optimization of the given parameters - - Args: - method (str): lmfit optimization algorithm, see https://lmfit.github.io/lmfit-py/fitting.html#choosing-different-fitting-methods - """ - - # Initialize the model parameters - parameters = self._initialize_parameters() - - # Perform optimization - self.minimizer = lmfit.Minimizer(self._calculate_residual, parameters) - - # Set estimated parameters to self - self.parameters = parameters - - return self.minimizer.minimize(method=method) - - def write(self): - """Writes the estimated parameters to a copy of the EnzymeMLDocument""" - - nu_enzmldoc = self.enzmldoc.copy(deep=True) - results = self.minimizer.result.params.valuesdict() - - for name, value in results.items(): - # names contain information about reaction and parameter - # Pattern: rX_name - - splitted = name.split("_") - reaction_id = splitted[0] - parameter_id = "_".join(splitted[1::]) - - # Fetch reaction and parameter - try: - reaction = nu_enzmldoc.getReaction(reaction_id) - except SpeciesNotFoundError: - global_param = nu_enzmldoc.global_parameters.get(name) - global_param.value = value - continue - - if reaction.model: - parameter = reaction.model.getParameter(parameter_id) - parameter.value = value - else: - raise TypeError(f"Reaction {reaction_id} has no model to add values to") - - return nu_enzmldoc - - # ! Helper methods - def _initialize_parameters(self): - """Adds all parameters to an lmfit Parameters instance. - - Raises: - ValueError: Raised when parameter posesses neither an initial value or value attribute - """ - - # Initialize lmfit parameters - parameters = lmfit.Parameters() - - # Add global parameters - for global_param in self.global_parameters.values(): - - # need to also catch zero initial values - if global_param.value is not None: - parameters.add( - f"{global_param.name}", - global_param.value, - vary=not global_param.constant, - min=global_param.lower, - max=global_param.upper, - ) - - elif global_param.initial_value is not None: - parameters.add( - f"{global_param.name}", - global_param.initial_value, - vary=not global_param.constant, - min=global_param.lower, - max=global_param.upper, - ) - - else: # parameter is - raise ValueError( - f"Neither initial_value nor value given for parameter {global_param.name} in global parameters" - ) - - # Consistency check - for reaction_id, (model, _) in self.reaction_data.items(): - - # Apply parameters to lmfit parameters - for parameter in model.parameters: - - if parameter.is_global: - continue - - # need to also catch zero initial values - if parameter.value is not None: - parameters.add( - f"{reaction_id}_{parameter.name}", - parameter.value, - vary=not parameter.constant, - min=parameter.lower, - max=parameter.upper, - ) - elif parameter.initial_value is not None: - parameters.add( - f"{reaction_id}_{parameter.name}", - parameter.initial_value, - vary=not parameter.constant, - min=parameter.lower, - max=parameter.upper, - ) - else: # parameter is - raise ValueError( - f"Neither initial_value nor value given for parameter {parameter.name} in reaction {reaction_id}" - ) - - return parameters - - def _get_experimental_data(self): - """Extract measurement data from the EnzymeML document""" - - # Initialize data structure to store experimental data - raw_data, self.inits = [], [] - - for measurement_data in self.data.values(): - - # Gather data - data: pd.DataFrame = measurement_data["data"] - init_concs: dict = measurement_data["initConc"] - - # Collect raw_data - raw_data.append(data.drop("time", axis=1)) - - # Collect initial concentrations for simulation - init_mapping = { - "time": data.time, - **{species_id: value for species_id, (value, _) in init_concs.items()}, - } - - self.inits.append(init_mapping) - - # Concatenate and clean all DataFrames - self.experimental_data = pd.concat(raw_data) - self.experimental_data.reset_index(drop=True, inplace=True) - self.cols = list(self.experimental_data.columns) - - def _get_pysces_model(self, model_dir: str): - """Converts an EnzymeMLDocument to a PySCeS model.""" - - # Set up the PySCeS directory structure - model_dir = os.path.join(model_dir) - os.makedirs(model_dir, exist_ok=True) - - # Write the raw XMLString to the dir - sbmlfile_name = f"{self.enzmldoc.name.replace(' ', '_')}.xml" - sbmlfile_path = os.path.join(model_dir, sbmlfile_name) - with open(sbmlfile_path, "w") as file: - file.write(self.sbml_xml) - - # First, convert the EnzymeML model to a PySCeS model - pscfile_path = sbmlfile_path + ".psc" - if not ( - (os.path.exists(pscfile_path)) - and (os.path.getmtime(pscfile_path) > os.path.getmtime(self.filepath)) - ): - pysces.interface.convertSBML2PSC(sbmlfile_name, sbmldir=model_dir, pscdir=model_dir) - - # Finally, load the PSC model - self.model = pysces.model(sbmlfile_name, dir=model_dir) - - # work around https://github.com/PySCeS/pysces/issues/79 - if ( - self.model.__KeyWords__["Species_In_Conc"] - and self.model.__KeyWords__["Output_In_Conc"] - ): - for comp in self.model.__compartments__: - self.model.__compartments__[comp]["size"] = 1.0 - setattr(self.model, comp, 1.0) - setattr(self.model, f"{comp}_init", 1.0) - - def _calculate_residual(self, parameters) -> np.ndarray: - """Function that will be optimized""" - - simulated_data = self._simulate_experiment(parameters) - simulated_data = simulated_data.drop( - simulated_data.columns.difference(self.cols), axis=1 - ) - - return np.array(self.experimental_data - simulated_data) - - def _simulate_experiment(self, parameters): - """Performs simulation based on the PySCeS model""" - - self.model.SetQuiet() - self.model.__dict__.update(parameters.valuesdict()) - - # intialize collection - output = [] - - # Now iterate over all initial concentrations and simulate accordingly - for init_concs in self.inits: - for species_id, value in init_concs.items(): - - if type(value) in [float, int] and value == 0: - # Catch initial values with zero and set them ot a small number - value = 1.0e-9 - - if species_id in self.model.species: - # Add if given in the model - setattr(self.model, f"{species_id}_init", value) - elif species_id == "time": - # Add time to the model - time_values, num_reps = self._get_replicate_info(value) - self.model.sim_time = time_values - else: - setattr(self.model, species_id, value) - - # Simulate the experiment and save results - self.model.Simulate(userinit=1) - for i in range(num_reps): - output.append( - [getattr(self.model.sim, species) for species in self.model.species] - ) - - return pd.DataFrame(np.hstack(output).T, columns=self.model.species) - - def _get_replicate_info(self, time): - i = 1 - # get index in time series where 2nd replicate starts - while i < len(time) and time[i] > time[i - 1]: - i += 1 - num_reps = len(time) // i - if num_reps > 1: - for k in range(1, num_reps): - assert np.allclose( - time[:i], time[k * i : k * i + i] - ), "Time points of replicates don't match!" - return (time[:i].values, num_reps) - - def plot_fit(self): - """Plots the simulation and data for the fitted parameters.""" - - # check that optimization has been done - assert hasattr(self, "minimizer") and hasattr( - self.minimizer, "result" - ), "Please run optimize() first." - - measurements = list(self.data.keys()) - num = len(measurements) - numcols = 3 - numrows = math.ceil(num / numcols) - fig, ax = plt.subplots(nrows=numrows, ncols=numcols, figsize=(9, 2.8 * numrows)) - for i in range(num): - if num <= numcols: - theax = ax[i] - else: - theax = ax[i // numcols, i % numcols] - self._plot_measurement(measurements[i], i, ax=theax) - # remove empty axes - if num % numcols != 0: - empty = numcols - num % numcols - for i in range(-empty, 0): - if num <= numcols: - ax[i].set_visible(False) - else: - ax[num // numcols, i].set_visible(False) - fig.tight_layout() - - def _plot_measurement(self, meas_id, i=0, ax=None): - """Plots a single measurement with simulation.""" - time_unit = self.enzmldoc.measurement_dict[meas_id].global_time_unit - conc_unit = self.enzmldoc.reactant_dict[self.cols[0]].unit - if not ax: - fig, ax = plt.subplots() - sim = self._simulate_measurement(meas_id, self.minimizer.result.params, self.model) - sim.plot("Time", self.cols, ax=ax, legend=False) - if i == 0: - ax.figure.legend(loc='upper left', bbox_to_anchor=(1.0, 0.96)) - ax.set_prop_cycle(None) - self.data[meas_id]["data"].plot("time", self.cols, style="^", legend=False, ax=ax) - ax.set_title(meas_id) - ax.set_xlabel(f"Time ({time_unit})") - ax.set_ylabel(f"Concentration ({conc_unit})") - - def _simulate_measurement(self, meas_id, parameters, model): - """Performs simulation based on the PySCeS model""" - - data = self.data[meas_id]["data"] - model.SetQuiet() - model.__dict__.update(parameters.valuesdict()) - - # Now iterate over all initial concentrations and simulate accordingly - init_concs = self._map_inits(meas_id) - for species_id, value in init_concs.items(): - if species_id in model.species: - # Add if given in the model - setattr(model, f"{species_id}_init", value) - else: - setattr(model, species_id, value) - - # Simulate the experiment and save results - end_time = data.time.iloc[-1] - # simulate 200 points for smooth curve - model.doSim(end=end_time, points=200) - result = pd.DataFrame( - np.array([getattr(model.sim, species) for species in self.cols]).T, - columns=self.cols, - ) - result["Time"] = self.model.sim.Time - return result - - def _map_inits(self, meas_id): - init_concs = self.data[meas_id]["initConc"] - return {species_id: value for species_id, (value, _) in init_concs.items()} diff --git a/pyenzyme/thinlayers/TL_Strenda.py b/pyenzyme/thinlayers/TL_Strenda.py deleted file mode 100644 index 169fefaf..00000000 --- a/pyenzyme/thinlayers/TL_Strenda.py +++ /dev/null @@ -1,269 +0,0 @@ -# File: TL_Strenda.py -# Project: ThinLayers -# Author: Jan Range -# License: BSD-2 clause -# Copyright (c) 2022 Institute of Biochemistry and Technical Biochemistry Stuttgart - -import xmltodict -import json -import itertools -import numpy as np - -from typing import Dict, List, Tuple, Optional - -from pyenzyme.enzymeml.core.enzymemldocument import EnzymeMLDocument -from pyenzyme.enzymeml.core.measurement import Measurement -from pyenzyme.enzymeml.core.reactant import Reactant -from pyenzyme.enzymeml.core.protein import Protein -from pyenzyme.enzymeml.core.enzymereaction import EnzymeReaction -from pyenzyme.enzymeml.core.vessel import Vessel -from pyenzyme.enzymeml.models.michaelismenten import MichaelisMentenKCat - - -class ThinLayerStrendaML(object): - - """Thin Layer implementation to convert an EnzymeML document into a StrendaML document.""" - - @classmethod - def toEnzymeML(cls, path: str, out_dir: str): - """Reads a STRENDA-DB XML entry and processes it to an EnzymeML document. - - Args: - path (str): Path to the STRENDA-DB XML file. - out_dir (str): Directory to which the resulting EnzymeML file will be written. - """ - - # Initialize Thin layer - cls = cls() - - # Read the STRENDA ML file - metadata = cls._read_strendaml(path) - cls.dataset = metadata["datasets"]["dataset"] - assay_conditions = cls.dataset["assayConditions"] - - # Initialize the ENzymeML document - cls.enzmldoc = EnzymeMLDocument( - name=metadata.get("strendaId"), - doi=metadata.get("doi"), - ) - - # Set up a playeholder vessel - vessel = Vessel(name="Vessel") - cls.vessel_id = cls.enzmldoc.addVessel(vessel) - - # Get the reaction first and build it while parsing species - cls._setup_reaction() - - # Get small compounds and build reaction - small_compounds = assay_conditions["smallCompound"] - init_conc, reactant_ref = cls._parse_small_compounds(small_compounds) - - # Get the protein - protein = metadata["protein"] - cls._parse_protein(protein) - - # Get the Michaelis-Menten-Model - cls._get_kinetic_model(reactant_ref) - - # Use the initial concentrations to construct measurement setups - cls._setup_measurements(init_conc) - - # Finally, add the reaction to the document - cls.enzmldoc.addReaction(cls.reaction) - - cls.enzmldoc.toFile(out_dir) - - def _read_strendaml(self, path: str): - """Reads and extracts the necessary data for the thin layer""" - - # Parse XML string and clean faulty line - xml_string = open(path).read() - xml_string = xml_string.replace( - '', '' - ) - - # Parse XML to JSON and dict - dict_data = xmltodict.parse(xml_string) - json_string = json.dumps(dict_data) - - return json.loads(json_string.replace("@", ""))["experiment"] - - def _setup_reaction(self): - """Sets up a reaction objectm which will later be used to specify the equation and adds it.""" - - # Get the assay conditions, if given - ph, _ = self._get_assay_conditions("pH", self.dataset) - temp_val, temp_unit = self._get_assay_conditions("temperature", self.dataset) - - self.reaction = EnzymeReaction( - name=self.dataset.get("name"), - reversible=False, - temperature=temp_val, - temperature_unit=temp_unit, - ph=ph, - ) - - def _get_assay_conditions( - self, key: str, dataset: dict - ) -> Tuple[Optional[float], Optional[str]]: - """Returns miscellaneous parameters from the 'value' element found in the assayConditions.""" - - for obj in dataset["assayConditions"]["value"]: - if obj["name"] == key: - return (obj.get("value"), obj.get("unit")) - - return None, None - - def _parse_small_compounds(self, small_compounds: List[dict]): - """Parses small compounds to Reactant objects""" - - # Keep track of range measurements and the references - initial_concentrations = [] - reactant_ref = {} - - # Keep a mapping for the different roles to be added to the reaction - role_mapping = { - "Substrate": self.reaction.addEduct, - "Product": self.reaction.addProduct, - } - - for small_compound in small_compounds: - - # Create Reactant and add it to the document - reactant_id = self.enzmldoc.addReactant( - Reactant( - name=small_compound.get("iupac"), - smiles=small_compound.get("smiles"), - inchi=small_compound.get("inchi"), - vessel_id=self.vessel_id, - ) - ) - - # Store substance ID - reactant_reference = small_compound["refId"] - reactant_ref[reactant_reference] = reactant_id - - # Add it to the reaction - role = small_compound["role"] - stoichiometry = float(small_compound["stoichiometry"]) - role_mapping[role]( - species_id=reactant_id, - stoichiometry=stoichiometry, - enzmldoc=self.enzmldoc, - ) - - init_conc = small_compound["value"] - unit = init_conc["unit"].replace("micro", "u") - - if init_conc["type"] == "Concentration": - value = float(init_conc["value"]) - initial_concentrations.append([(reactant_id, value, unit)]) - - elif init_conc["type"] == "ConcentrationRange": - start_value = float(init_conc["startValue"]) - end_value = float(init_conc["endValue"]) + 0.1 - val_range = np.linspace(start_value, end_value, 10) - - initial_concentrations.append( - [(reactant_id, round(val, 4), unit) for val in val_range if val > 0] - ) - - return initial_concentrations, reactant_ref - - def _parse_protein(self, protein: dict): - - # Get and clean some parameters - sequence = protein.get("originalSequence") - uniprotid = protein.get("uniprotidKbAC") - - if sequence == "null": - sequence = None - if uniprotid == "N.A.": - uniprotid = None - - self.protein_id = self.enzmldoc.addProtein( - Protein( - name=protein.get("name"), - vessel_id="v0", - organism=protein.get("organism"), - sequence=sequence, - organism_tax_id=protein.get("texonId"), - uniprotid=uniprotid, - ) - ) - - self.reaction.addModifier( - species_id=self.protein_id, - stoichiometry=1.0, - constant=True, - enzmldoc=self.enzmldoc, - ) - - def _setup_measurements(self, init_conc: List[Tuple[str, float, str]]): - """Sets up individual measurements by permuting given initial concentrations, if multiples of""" - - # Permute all initial concentrations - for index, init_conc_set in enumerate(itertools.product(*init_conc)): - - # Initialize measurement - measurement = Measurement(name=f"measurement_{index+1}") - - # Add protein to measurement - protein_conc, protein_unit = self._get_assay_conditions( - "enzymeConcentration", self.dataset - ) - - measurement.addData( - protein_id="p0", - init_conc=protein_conc, - unit=protein_unit.replace("micro", "u"), - ) - - for species_id, value, unit in init_conc_set: - - species = self.enzmldoc.getAny(species_id) - reactant_id, protein_id = None, None - - if isinstance(species, Protein): - protein_id = species_id - elif isinstance(species, Reactant): - reactant_id = species_id - - # Add the data to the measurement - measurement.addData( - unit=unit, - init_conc=value, - reactant_id=reactant_id, - protein_id=protein_id, - ) - - # Finally, add the measurement to the document - self.enzmldoc.addMeasurement(measurement) - - def _get_kinetic_model(self, reactant_ref: Dict[str, str]): - """Extracts the kinetic model from the dataset""" - - # Get parameters and species ID from data structure - result_set = self.dataset["resultSet"]["kineticParameter"] - species_id = reactant_ref[result_set.get("substanceId")] - parameters = result_set["value"] - - for parameter in parameters: - if parameter["name"] == "kcat": - kcat = {"unit": "1 / s", "value": float(parameter["value"])} - elif parameter["name"] == "km": - km = { - "unit": parameter["unit"].replace("micro", "u"), - "value": float(parameter["value"]), - } - - # Create the model and add it to the reaction - model = MichaelisMentenKCat( - substrate=species_id, - protein="p0", - enzmldoc=self.enzmldoc, - k_m=km, - k_cat=kcat, - ) - - self.reaction.setModel(model, self.enzmldoc) diff --git a/pyenzyme/thinlayers/__init__.py b/pyenzyme/thinlayers/__init__.py deleted file mode 100644 index 933eda10..00000000 --- a/pyenzyme/thinlayers/__init__.py +++ /dev/null @@ -1,10 +0,0 @@ -# File: __init__.py -# Project: thinlayers -# Author: Jan Range -# License: BSD-2 clause -# Copyright (c) 2022 Institute of Biochemistry and Technical Biochemistry Stuttgart - -from .TL_Base import BaseThinLayer -from .TL_Strenda import ThinLayerStrendaML -from .TL_Pysces import ThinLayerPysces -from .TL_Copasi import ThinLayerCopasi diff --git a/pyenzyme/utils/__init__.py b/pyenzyme/utils/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/pyenzyme/utils/log.py b/pyenzyme/utils/log.py deleted file mode 100644 index 4b35d014..00000000 --- a/pyenzyme/utils/log.py +++ /dev/null @@ -1,73 +0,0 @@ -# File: log.py -# Project: utils -# Author: Jan Range -# License: BSD-2 clause -# Copyright (c) 2022 Institute of Biochemistry and Technical Biochemistry Stuttgart - -import logging -import sys - -from io import StringIO - - -def setup_custom_logger(name, log_stream: StringIO, level=logging.DEBUG): - - formatter = logging.Formatter(fmt="%(levelname)s - %(message)s") - - handler = logging.StreamHandler(stream=sys.stderr) - handler.setFormatter(formatter) - handler.setLevel(logging.INFO) - - string_formatter = logging.Formatter( - fmt="%(asctime)s - %(message)s", datefmt="%Y-%m-%d,%H:%M" - ) - string_handler = logging.StreamHandler(log_stream) - string_handler.setFormatter(string_formatter) - string_handler.setLevel(logging.NOTSET) - - logger = logging.getLogger(name) - logger.setLevel(level) - logger.propagate = False - logger.addHandler(handler) - logger.addHandler(string_handler) - - return logger - - -def log_change( - logger: logging.Logger, - class_name: str, - id: str, - name: str, - old_value: str, - new_value: str, -): - """Logs change of an object""" - logger.debug( - f"{class_name} '{id}' - {name} was set from '{old_value}' to '{new_value}'" - ) - - -def log_new( - logger: logging.Logger, class_name: str, id: str, name: str, new_value: str -): - """Logs initialization of an object""" - - logger.debug(f"{class_name} '{id}' - '{name}' was set to '{new_value}'") - - -def log_object( - logger: logging.Logger, - obj, -): - """Logs an object when it is added to the EnzymeML document""" - - # Handle objects without an ID - try: - id = obj.id - except AttributeError: - id = obj.get_id() - - for attr_name, value in obj.dict(exclude_none=True).items(): - if isinstance(value, dict) is False and isinstance(value, list) is False: - log_new(logger, type(obj).__name__, id, attr_name, value) diff --git a/pyenzyme/utils/rest_examples.py b/pyenzyme/utils/rest_examples.py deleted file mode 100644 index 4bea61fd..00000000 --- a/pyenzyme/utils/rest_examples.py +++ /dev/null @@ -1,174 +0,0 @@ -def create_full_example(): - return { - "name": "Example Document", - "pubmedid": "00000000", - "url": "https://www.some-url.com/", - "doi": "10.1XXX/XXXXXX-XXX-XXXX-X", - "creators": { - "a0": { - "given_name": "Max", - "family_name": "Mustermann", - "mail": "max.mustermann@mustermann.com", - } - }, - "vessels": { - "v0": { - "name": "Tube vessel", - "volume": 0.015, - "unit": "l", - "constant": True, - } - }, - "proteins": { - "p0": { - "name": "Protein", - "vessel_id": "v0", - "init_conc": 5.0, - "constant": True, - "unit": "mmole / l", - "ontology": "SBO:0000252", - "sequence": "HLPMV", - "ecnumber": "1.1.1.1", - "organism": "E.coli", - "organism_tax_id": "27367", - "uniprotid": "P02357", - } - }, - "complexes": { - "c0": { - "name": "Complex", - "vessel_id": "v0", - "init_conc": 10.0, - "constant": False, - "unit": "mmole / l", - "ontology": "SBO:0000296", - "participants": ["s0", "p0"], - } - }, - "reactants": { - "s0": { - "name": "Reactant", - "vessel_id": "v0", - "init_conc": 10.0, - "constant": False, - "unit": "mmole / l", - "ontology": "SBO:0000247", - "smiles": "[H]O[H]", - "inchi": "InChI:HJJH", - "chebi_id": "CHEBI:09823", - }, - "s1": { - "name": "oxonium", - "vessel_id": "v0", - "init_conc": 10.0, - "constant": False, - "unit": "mmole / l", - "ontology": "SBO:0000247", - "smiles": "[H][O+]([H])[H]", - "inchi": "InChI=1S/H2O/h1H2/p+1", - "chebi_id": "CHEBI:29412", - }, - }, - "reactions": { - "r0": { - "name": "string", - "reversible": True, - "temperature": 200, - "temperature_unit": "K", - "ph": 7.0, - "ontology": "SBO:0000176", - "id": "r0", - "meta_id": "METAID_R0", - "model": { - "name": "Kinetic Model", - "equation": "s0 * x", - "parameters": [ - { - "name": "x", - "value": 10.0, - "unit": "1 / s", - "stdev": 0.1, - "initial_value": 10.0, - } - ], - }, - "educts": [ - { - "species_id": "s0", - "stoichiometry": 1.0, - "constant": False, - "ontology": "SBO:0000015", - } - ], - "products": [ - { - "species_id": "s1", - "stoichiometry": 1.0, - "constant": False, - "ontology": "SBO:0000011", - } - ], - "modifiers": [ - { - "species_id": "p0", - "stoichiometry": 1.0, - "constant": True, - "ontology": "SBO:0000013", - } - ], - } - }, - "measurements": { - "m0": { - "name": "SomeMeasurement", - "temperature": 4.0, - "temperature_unit": "K", - "ph": 7.0, - "species_dict": { - "reactants": { - "s0": { - "init_conc": 10.0, - "unit": "mmole / l", - "measurement_id": "m0", - "reactant_id": "s0", - "replicates": [ - { - "id": "repl_s0_0", - "species_id": "s0", - "data_type": "conc", - "data_unit": "mmole / l", - "time_unit": "s", - "time": [1.0, 2.0, 3.0, 4.0], - "data": [1.0, 1.0, 1.0, 1.0], - "is_calculated": False, - } - ], - } - }, - "proteins": { - "p0": { - "init_conc": 10.0, - "unit": "mmole / l", - "measurement_id": "m0", - "protein_id": "p0", - "replicates": [ - { - "id": "repl_p0_0", - "species_id": "p0", - "data_type": "conc", - "data_unit": "mmole / l", - "time_unit": "s", - "time": [1.0, 2.0, 3.0, 4.0], - "data": [1.0, 1.0, 1.0, 1.0], - "is_calculated": False, - } - ], - } - }, - }, - "global_time": [1.0, 2.0, 3.0, 4.0], - "global_time_unit": "s", - "id": "m0", - } - }, - } diff --git a/pyenzyme_server.py b/pyenzyme_server.py deleted file mode 100644 index 6a7d92f7..00000000 --- a/pyenzyme_server.py +++ /dev/null @@ -1,405 +0,0 @@ -import os - -from fastapi import FastAPI, UploadFile, File, Request, Body -from starlette.responses import FileResponse, JSONResponse, HTMLResponse -from starlette.background import BackgroundTasks -from fastapi.templating import Jinja2Templates - -from pyenzyme.enzymeml.core.enzymemldocument import EnzymeMLDocument -from pyenzyme.enzymeml.core.measurement import Measurement -from pyenzyme.enzymeml.tools.validator import EnzymeMLValidator -from pyenzyme.utils.rest_examples import create_full_example -from pyenzyme.enzymeml.core.exceptions import ( - MeasurementDataSpeciesIdentifierError, - ECNumberError, - ChEBIIdentifierError, - DataError, - SpeciesNotFoundError, - UniProtIdentifierError, - ParticipantIdentifierError, -) - - -# * Settings -app = FastAPI(title="PyEnzyme REST-API", version="1.2", docs_url="/") - - -templates = Jinja2Templates(directory="static") - - -# * Functions - - -def remove_file(path: str) -> None: - os.unlink(path) - - -# ! Basic operations - - -@app.post( - "/create", - summary="Creates an EnzymeML document based on a JSON body", - description="Please note, in the schema 'aditionalPropsX' represent the individual IDs of the entities. However, these will not be included, since PyEnzyme takes car for that. Thus, feel free to use any string you like. Returns a binary file, which is an OMEX archive", - tags=["Basic operations"], -) -async def create_EnzymeML( - background_tasks: BackgroundTasks, - enzmldoc: EnzymeMLDocument = Body(..., example=create_full_example()), -): - - # Recreate the EnzymeML document - nu_enzmldoc = EnzymeMLDocument.fromJSON(enzmldoc.json()) - - # Write the new EnzymeML file - dirpath = "." - file_name = f"{nu_enzmldoc.name.replace(' ', '_')}.omex" - file_path = os.path.join(dirpath, file_name) - - nu_enzmldoc.toFile(dirpath, name=nu_enzmldoc.name) - - try: - response = FileResponse(file_path, filename=file_name) - - return response - - except Exception as e: - raise - - finally: - background_tasks.add_task(remove_file, path=file_name) - - -def parse_measurement_data(measurement, key, nu_measurement, enzmldoc): - for measurement_data in measurement.species_dict[key].values(): - nu_measurement.addData( - init_conc=measurement_data.init_conc, - unit=measurement_data.unit, - protein_id=measurement_data.protein_id, - reactant_id=measurement_data.reactant_id, - ) - - nu_measurement.addReplicates(measurement_data.replicates, enzmldoc=enzmldoc) - - -@app.post( - "/upload/dataverse", - summary="Uploads an OMEX archive to a dataverse installation.", - description="Use this endpoint as form-data and specify the document to be uploaded via the key 'omex_archive' for a succesfull upload.", - tags=["Databases"], -) -async def upload_to_dataverse( - background_tasks: BackgroundTasks, - dataverse_name: str, - api_token: str, - base_url: str, - omex_archive: UploadFile = File(...), -): - - # Write to file - file_name = omex_archive.filename - content = await omex_archive.read() - with open(file_name, "wb") as file_handle: - file_handle.write(content) - - # Read EnzymeML document - try: - enzmldoc = EnzymeMLDocument.fromFile(file_name) - enzmldoc.uploadToDataverse( - dataverse_name=dataverse_name, base_url=base_url, api_token=api_token - ) - except Exception as e: - return f"{e.__class__.__name__}: {str(e)}" - finally: - background_tasks.add_task(remove_file, path=file_name) - - -@app.post( - "/read", - summary="Reads an EnzymeML document served in an OMEX archive to a JSON representation", - description="Use this endpoint as form-data and specify the document to be uploaded via the key 'omex_archive' for a succesfull request.", - tags=["Basic operations"], -) -async def read_enzymeml( - background_tasks: BackgroundTasks, omex_archive: UploadFile = File(...) -): - - # Write to file - file_name = omex_archive.filename - content = await omex_archive.read() - with open(file_name, "wb") as file_handle: - file_handle.write(content) - - # Read EnzymeML document - try: - enzmldoc = EnzymeMLDocument.fromFile(file_name) - return enzmldoc.dict( - exclude_none=True, - exclude={ - "log": ..., - "unit_dict": ..., - "file_dict": ..., - "protein_dict": {"Protein": {"__all__": {"_unit_id"}}}, - }, - by_alias=True, - ) - except Exception as e: - return f"{e.__class__.__name__}: {str(e)}" - finally: - background_tasks.add_task(remove_file, path=file_name) - - -# ! Modifications - - -@app.post( - "/add_measurement", - summary="Adds a measurement to an existing EnzymeML document", - description="By using this endpoint, you can add successive raw data without having to create a new EnzymeML dcoument. Returns a binary file, which is an OMEX Archive", - tags=["Modifications"], -) -async def add_Measurement( - background_tasks: BackgroundTasks, - measurement: Measurement, - omex_archive: UploadFile = File(...), -): - - # Check if the species_dict keys are correct - for key in measurement.species_dict: - if key not in ["reactants", "proteins"]: - return { - "error": f"Key '{key}' is not valid for species dict. Please use either 'reactants' or 'proteins'" - } - - # Write to file - file_name = omex_archive.filename - content = await omex_archive.read() - with open(file_name, "wb") as file_handle: - file_handle.write(content) - - # Read EnzymeML document - enzmldoc = EnzymeMLDocument.fromFile(file_name) - - # Add the measurement - enzmldoc.addMeasurement(measurement) - - # Write the new EnzymeML file - try: - dirpath = "." - file_name = f"{enzmldoc.name.replace(' ', '_')}.omex" - file_path = os.path.join(dirpath, file_name) - - enzmldoc.toFile(dirpath) - - return FileResponse(file_path, filename=file_name) - - except Exception as e: - return str(e) - - finally: - background_tasks.add_task(remove_file, path=file_name) - - -# ! TEMPLATE - - -@app.get( - "/template/download", - summary="Download the EnzymeML spreadsheet template.", - tags=["EnzymeML spreadsheet"], -) -async def get_enzymeml_template(): - return FileResponse( - "./templates/EnzymeML_Template.xlsm", filename="EnzymeML_Template.xlsm" - ) - - -@app.get( - "/template/upload", - summary="HTML website to upload the EnzymeML spreadsheet template and convert it to EnzymeML.", - tags=["EnzymeML spreadsheet"], - response_class=HTMLResponse, -) -def upload_enzymeml_template(request: Request): - return templates.TemplateResponse("template_upload.html", {"request": request}) - - -@app.post( - "/template/convert", - summary="Converts an EnzymeML spreadsheet template to an EnzymeML document.", - tags=["EnzymeML spreadsheet"], -) -async def convert_template( - background_tasks: BackgroundTasks, enzymeml_template: UploadFile = File(...) -): - - # Write to file - file_name = enzymeml_template.filename - content = await enzymeml_template.read() - with open(file_name, "wb") as file_handle: - file_handle.write(content) - - # Generate the new EnzymeML file - try: - enzmldoc = EnzymeMLDocument.fromTemplate(file_name) - - except Exception as e: - return str(e) - - finally: - background_tasks.add_task(remove_file, path=file_name) - - # Write the new EnzymeML file - try: - dirpath = "." - enzml_name = f"{enzmldoc.name.replace(' ', '_')}.omex" - file_path = os.path.join(dirpath, enzml_name) - - enzmldoc.toFile(dirpath) - - return FileResponse(file_path, filename=enzml_name) - - except Exception as e: - return str(e) - - finally: - background_tasks.add_task(remove_file, path=enzml_name) - - -# ! Validation - - -@app.get( - "/validation/download", - summary="Download the EnzymeML Validation template.", - tags=["EnzymeML Validation"], -) -async def get_validation_template(): - return FileResponse( - "templates/EnzymeML_Validation_Template.xlsx", - filename="EnzymeML_Validation_Template.xlsm", - ) - - -@app.get( - "/validation/upload", - summary="HTML site to upload the EnzymeML Validation template and convert it to a YAML file.", - tags=["EnzymeML Validation"], - response_class=HTMLResponse, -) -def upload_validation_template(request: Request): - return templates.TemplateResponse("validation_upload.html", {"request": request}) - - -@app.post( - "/validation/convert", - summary="Convert the EnzymeML Validation template to a YAML template to use for validation on server site.", - tags=["EnzymeML Validation"], -) -async def convert_validation_template( - background_tasks: BackgroundTasks, validation_template: UploadFile = File(...) -): - - # Write to file - file_name = validation_template.filename - content = await validation_template.read() - with open(file_name, "wb") as file_handle: - file_handle.write(content) - - # Generate the new EnzymeML file - try: - EnzymeMLValidator.convertSheetToYAML( - path=file_name, - filename="validation", - ) - - return FileResponse( - "validation.yaml", filename="EnzymeML_Validation_Template.yaml" - ) - - except Exception as e: - return str(e) - - finally: - background_tasks.add_task(remove_file, path=file_name) - background_tasks.add_task(remove_file, path="validation.yaml") - - -@app.post( - "/validation/", - summary="Vaidates an EnzymeML document based on a given EnzymeML Validation YAML file. Returns a boolean and a report, if validation has failed.", - tags=["EnzymeML Validation"], -) -async def validate_enzymeml( - background_tasks: BackgroundTasks, - omex_archive: UploadFile = File(...), - validation_template: UploadFile = File(...), -): - - # Write EnzymeML to file - omex_name = omex_archive.filename - content = await omex_archive.read() - with open(omex_name, "wb") as file_handle: - file_handle.write(content) - - # Read EnzymeML document - try: - enzmldoc = EnzymeMLDocument.fromFile(omex_name) - except Exception as e: - return f"{e.__class__.__name__}: {str(e)}" - finally: - background_tasks.add_task(remove_file, path=omex_name) - - # Write YAML to file - valid_name = validation_template.filename - content = await validation_template.read() - with open(valid_name, "wb") as file_handle: - file_handle.write(content) - - # Read YAML and validate accordingly - try: - report, is_valid = enzmldoc.validateDocument(yaml_path=valid_name) - - return {"is_valid": is_valid, "report": report} - finally: - background_tasks.add_task(remove_file, path=valid_name) - - -# * Exception handlers - - -@app.exception_handler(MeasurementDataSpeciesIdentifierError) -async def handle_meas_species_id_error( - req: Request, exc: MeasurementDataSpeciesIdentifierError -): - return JSONResponse(status_code=406, content={"message": str(exc)}) - - -@app.exception_handler(ECNumberError) -async def handle_ecnumber_error(req: Request, exc: ECNumberError): - return JSONResponse(status_code=406, content={"message": str(exc)}) - - -@app.exception_handler(ChEBIIdentifierError) -async def handle_chebi_error(req: Request, exc: ChEBIIdentifierError): - return JSONResponse(status_code=406, content={"message": str(exc)}) - - -@app.exception_handler(DataError) -async def handle_data_error(req: Request, exc: DataError): - return JSONResponse(status_code=406, content={"message": str(exc)}) - - -@app.exception_handler(SpeciesNotFoundError) -async def handle_species_error(req: Request, exc: SpeciesNotFoundError): - return JSONResponse(status_code=406, content={"message": str(exc)}) - - -@app.exception_handler(UniProtIdentifierError) -async def handle_uniprotid_error(req: Request, exc: UniProtIdentifierError): - return JSONResponse(status_code=406, content={"message": str(exc)}) - - -@app.exception_handler(ParticipantIdentifierError) -async def handle_participant_error(req: Request, exc: ParticipantIdentifierError): - return JSONResponse(status_code=406, content={"message": str(exc)}) diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 98afcbdd..00000000 --- a/requirements.txt +++ /dev/null @@ -1,23 +0,0 @@ -python-libsbml -numpy -pandas -python-libcombine -scipy -texttable -pydataverse -pydantic==1.8.2 -deprecation -deepdiff -python-multipart -fastapi -uvicorn -easyDataverse -pyDaRUS -openpyxl -numexpr -seaborn -plotly -pysces -lmfit -xlsxwriter -jinja2 \ No newline at end of file diff --git a/setup.py b/setup.py deleted file mode 100644 index b72322a4..00000000 --- a/setup.py +++ /dev/null @@ -1,64 +0,0 @@ -""" -File: setup.py -Project: PyEnzyme -Author: Jan Range -License: BSD-2 clause ------ -Last Modified: Wednesday June 23rd 2021 9:57:56 pm -Modified By: Jan Range () ------ -Copyright (c) 2021 Institute of Biochemistry and Technical Biochemistry Stuttgart -""" - -import setuptools -from setuptools import setup - -setup( - name="PyEnzyme", - version="1.1.5", - description="Handling of EnzymeML files", - url="https://github.com/EnzymeML/PyEnzyme", - author="Range, Jan", - author_email="jan.range@simtech.uni-stuttgart.de", - license="BSD2 Clause", - packages=setuptools.find_packages(), - install_requires=[ - "python-libsbml", - "numpy", - "pandas", - "python-libcombine", - "scipy", - "texttable", - "pydantic==1.8.2", - "deprecation", - "deepdiff", - "python-multipart", - "openpyxl", - "xlsxwriter", - "numexpr", - "seaborn", - "plotly", - "pyyaml", - "deprecation", - "xmltodict", - "requests", - ], - extras_require={ - "test": ["pytest-cov"], - "copasi": ["python-copasi"], - "pysces": ["pysces", "lmfit"], - "rest": ["fastapi", "uvicorn"], - "modeling": ["python-copasi", "pysces", "lmfit"], - "dataverse": ["pyDaRUS", "easyDataverse", "pydataverse"], - "all": [ - "python-copasi", - "pysces", - "lmfit", - "fastapi", - "uvicorn", - "pyDaRUS", - "easyDataverse", - "pydataverse", - ], - }, -) diff --git a/tests/enzymeml/__init__.py b/tests/enzymeml/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/tests/enzymeml/core/__init__.py b/tests/enzymeml/core/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/tests/enzymeml/core/test_abstract_classes.py b/tests/enzymeml/core/test_abstract_classes.py deleted file mode 100644 index 3b6cec8f..00000000 --- a/tests/enzymeml/core/test_abstract_classes.py +++ /dev/null @@ -1,40 +0,0 @@ -from pyenzyme.enzymeml.core.abstract_classes import AbstractSpecies -from pyenzyme.enzymeml.core.ontology import SBOTerm - - -class TestAbstractSpecies: - - def test_content(self): - # Test consistency of inputs - abstract = AbstractSpecies( - name="SomeSpecies", vessel_id="v0", - init_conc=10.0, unit="mmole / l", constant=True, meta_id="undefined", - id="c0", boundary=True, ontology=SBOTerm.MACROMOLECULAR_COMPLEX, uri="URI", creator_id="a0" - ) - - assert abstract.name == "SomeSpecies" - assert abstract.vessel_id == "v0" - assert abstract.init_conc == 10.0 - assert abstract.unit == "mmole / l" - assert abstract.constant is True - assert abstract.meta_id == "METAID_C0" - assert abstract.id == "c0" - assert abstract.boundary is True - assert abstract.ontology == SBOTerm.MACROMOLECULAR_COMPLEX - assert abstract.uri == "URI" - assert abstract.creator_id == "a0" - - def test_defaults(self): - # Test if the defaults are the same - abstract = AbstractSpecies( - name="SomeSpecies", vessel_id="v0", constant=True, boundary=True, ontology=SBOTerm.MACROMOLECULAR_COMPLEX - ) - - assert not abstract.init_conc - assert not abstract.unit - assert abstract.constant is True - assert not abstract.meta_id - assert not abstract.id - assert abstract.boundary is True - assert abstract.ontology == SBOTerm.MACROMOLECULAR_COMPLEX - assert not abstract.uri diff --git a/tests/enzymeml/core/test_complex.py b/tests/enzymeml/core/test_complex.py deleted file mode 100644 index e078889e..00000000 --- a/tests/enzymeml/core/test_complex.py +++ /dev/null @@ -1,35 +0,0 @@ -import pytest - -from pyenzyme.enzymeml.core.complex import Complex -from pyenzyme.enzymeml.core.ontology import SBOTerm -from pyenzyme.enzymeml.core.exceptions import ParticipantIdentifierError - - -class TestComplex: - - def test_content(self): - # Test consistency of inputs - complex = Complex( - name="SomeComplex", participants=["s0", "p0"], vessel_id="v0", - init_conc=10.0, unit="mmole / l", constant=True, meta_id="undefined", - id="c0", boundary=True, ontology=SBOTerm.MACROMOLECULAR_COMPLEX, uri="URI", creator_id="a0" - ) - - assert complex.participants == ["s0", "p0"] - - def test_defaults(self): - # Test if the defaults are the same - complex = Complex( - name="SomeComplex", participants=["s0", "p0"], vessel_id="v0" - ) - - assert complex.constant is False - assert complex.boundary is False - assert complex.ontology == SBOTerm.MACROMOLECULAR_COMPLEX - - def test_validator_participants(self): - # Negative test case to see if false IDs are recognized - with pytest.raises(ParticipantIdentifierError) as exc_info: - Complex( - name="SomeComplex", participants=["x0", "1", "a", "&"], vessel_id="v0" - ) diff --git a/tests/enzymeml/core/test_creator.py b/tests/enzymeml/core/test_creator.py deleted file mode 100644 index bd7ae3d5..00000000 --- a/tests/enzymeml/core/test_creator.py +++ /dev/null @@ -1,31 +0,0 @@ -import pytest - -from pydantic import ValidationError -from pyenzyme.enzymeml.core.creator import Creator - - -class TestCreator: - - def test_content(self): - # Test positive case - creator = Creator( - given_name="Jan", family_name="Range", mail="jan@somemail.com", id=None - ) - - assert creator.given_name == "Jan" - assert creator.family_name == "Range" - assert creator.mail == "jan@somemail.com" - - def test_empty_strings(self): - # Test empty strings case - with pytest.raises(ValidationError) as exc_info: - Creator( - given_name="", family_name="", mail="", id=None - ) - - def test_wrong_mail(self): - # Test mail consistency - with pytest.raises(ValidationError) as exc_info: - Creator( - given_name="Jan", family_name="Range", mail="someone.com", id=None - ) diff --git a/tests/enzymeml/core/test_enzymemldocument.py b/tests/enzymeml/core/test_enzymemldocument.py deleted file mode 100644 index 44b7a6e4..00000000 --- a/tests/enzymeml/core/test_enzymemldocument.py +++ /dev/null @@ -1,286 +0,0 @@ -import os -import pytest - -from pyenzyme.enzymeml.core.enzymemldocument import EnzymeMLDocument -from pyenzyme.enzymeml.core.abstract_classes import AbstractSpecies -from pyenzyme.enzymeml.core.ontology import SBOTerm - - -class TestEnzymeMLDocument: - def test_content(self): - """Tests if content that is inserted is consistent""" - - # Create an instance - enzmldoc = EnzymeMLDocument( - name="Test", - level=3, - version=2, - pubmedid="91245", - url="http://www.example.com", - doi="10.1109/5.771073", - created="01-02-1991", - modified="01-02-1996", - ) - - assert enzmldoc.name == "Test" - assert enzmldoc.level == 3 - assert enzmldoc.version == 2 - assert enzmldoc.pubmedid == "https://identifiers.org/pubmed:91245" - assert enzmldoc.url == "http://www.example.com" - assert enzmldoc.doi == "10.1109/5.771073" - assert enzmldoc.created == "01-02-1991" - assert enzmldoc.modified == "01-02-1996" - assert not enzmldoc.creator_dict - assert not enzmldoc.vessel_dict - assert not enzmldoc.protein_dict - assert not enzmldoc.complex_dict - assert not enzmldoc.reactant_dict - assert not enzmldoc.reaction_dict - assert not enzmldoc._unit_dict - assert not enzmldoc.file_dict - assert not enzmldoc.global_parameters - - def test_defaults(self): - """Tests if all default values are correct""" - - # Create an instance - enzmldoc = EnzymeMLDocument(name="Test") - - assert enzmldoc.name == "Test" - assert enzmldoc.level == 3 - assert enzmldoc.version == 2 - assert not enzmldoc.pubmedid - assert not enzmldoc.url - assert not enzmldoc.doi - assert not enzmldoc.created - assert not enzmldoc.modified - assert not enzmldoc.creator_dict - assert not enzmldoc.vessel_dict - assert not enzmldoc.protein_dict - assert not enzmldoc.complex_dict - assert not enzmldoc.reactant_dict - assert not enzmldoc.reaction_dict - assert not enzmldoc._unit_dict - assert not enzmldoc.file_dict - assert not enzmldoc.global_parameters - - def test_from_file_init(self, enzmldoc): - """Tests initialization from file""" - - # Read the OMEX fixture - result = EnzymeMLDocument.fromFile("./tests/fixtures/test_case.omex") - - # Test if its JSON representation matches - assert result.dict(exclude={"log"}) == enzmldoc.dict(exclude={"log"}) - - def test_from_json_init(self): - """Tests initialization from a JSON string""" - - # Read the expected OMEX output - expected = EnzymeMLDocument.fromFile("./tests/fixtures/test_case.omex") - - # Read the JSON equivalent - result = EnzymeMLDocument.fromJSON( - open("./tests/fixtures/enzmldoc_object.json").read() - ) - - assert expected.dict(exclude={"log"}) == result.dict(exclude={"log"}) - - def test_to_file(self, enzmldoc): - """Tests writing to a file""" - - # Store the expection to later compare - expected = enzmldoc.dict(exclude={"log"}) - - # Write to a file and check existence - enzmldoc.toFile("./tests/", name="write_test") - assert os.path.exists("./tests/write_test.omex") - - # Read the resulting file and compare the content - result = EnzymeMLDocument.fromFile("./tests/write_test.omex") - assert result.dict(exclude={"log"}) == expected - - def test_add_global_params(self): - """Tests the addition of a global parameter""" - - # Initialize an object - enzmldoc = EnzymeMLDocument(name="Test") - - # Add a Parameter - enzmldoc.addGlobalParameter( - name="GlobalParam", - value=100.0, - initial_value=100.0, - unit="mmole / l", - constant=False, - lower=0.0, - upper=200.0, - stdev=0.001, - ) - - assert "GlobalParam" in enzmldoc.global_parameters - - # Get the parameter an check values - param = enzmldoc.global_parameters["GlobalParam"] - - assert param.name == "GlobalParam" - assert param.value == 100.0 - assert param.unit == "mmole / l" - assert param.constant is False - assert param.lower == 0.0 - assert param.upper == 200.0 - assert param.stdev == 0.001 - assert param.is_global is True - - def test_add_species(self): - """Tests the addition of a species""" - - # Initialize object - enzmldoc = EnzymeMLDocument(name="Test") - - # Use the abstract function and an abstract type to test - test_class = type("Species", (AbstractSpecies,), {"unit": "mmole / l"}) - species = test_class( - name="TestSpecies", - vessel_id="v0", - constant=True, - boundary=True, - ontology=SBOTerm.PROTEIN, - ) - - # Finally add the species - enzmldoc._addSpecies(species, prefix="p", dictionary=enzmldoc.protein_dict) - - assert "p0" in enzmldoc.protein_dict - assert species == enzmldoc.protein_dict["p0"] - - def test_unit_change(self, enzmldoc): - """Tests whether units remain consistent when changed at run-time and are reloaded""" - - # Change an arbitrary unit - species = enzmldoc.getReactant("s0") - species.unit = "umole / l" - - # Write to file - enzmldoc.toFile("./tests/tmp/", name="Test_Unit_Change") - - # Read file and check if the unit change is consistent - unit = enzmldoc.getReactant("s0").unit - - assert unit == "umole / l" - - def test_full_data_export(self, enzmldoc): - """Tests whether data is exported correctly""" - - # Test all export of reactant/protein - data = enzmldoc.exportMeasurementData() - - expected_conc = {"s0": (10.0, "mmole / l"), "p0": (10.0, "mmole / l")} - expected_data = { - "s0": {0: 1.0, 1: 1.0, 2: 1.0, 3: 1.0}, - "time": {0: 1.0, 1: 2.0, 2: 3.0, 3: 4.0}, - "p0": {0: 1.0, 1: 1.0, 2: 1.0, 3: 1.0}, - } - - assert "m0" in data - assert data["m0"]["data"].to_dict() == expected_data - assert data["m0"]["initConc"] == expected_conc - - # Test case of no specification - with pytest.raises(ValueError) as exc_info: - enzmldoc.exportMeasurementData(proteins=False, reactants=False) - - def test_protein_data_export(self, enzmldoc): - """Tests whether data is exported correctly""" - - # Test all export of reactant/protein - data = enzmldoc.exportMeasurementData(reactants=False) - - expected_conc = {"p0": (10.0, "mmole / l")} - expected_data = { - "time": {0: 1.0, 1: 2.0, 2: 3.0, 3: 4.0}, - "p0": {0: 1.0, 1: 1.0, 2: 1.0, 3: 1.0}, - } - - assert "m0" in data - assert data["m0"]["data"].to_dict() == expected_data - assert data["m0"]["initConc"] == expected_conc - - def test_reactant_data_export(self, enzmldoc): - """Tests whether data is exported correctly""" - - # Test all export of reactant/protein - data = enzmldoc.exportMeasurementData(proteins=False) - - expected_conc = {"s0": (10.0, "mmole / l")} - expected_data = { - "time": {0: 1.0, 1: 2.0, 2: 3.0, 3: 4.0}, - "s0": {0: 1.0, 1: 1.0, 2: 1.0, 3: 1.0}, - } - - assert "m0" in data - assert data["m0"]["data"].to_dict() == expected_data - assert data["m0"]["initConc"] == expected_conc - - def test_unit_attribute_change(self, enzmldoc): - """Tests whether unit changes in the 'unit' attribute are refelected towards unit dict and unit_id""" - - def check_consistency(unit, unit_id, kind): - # Helper function - assert ( - enzmldoc._unit_dict[unit_id].name == unit - ), f"Unit change for {kind} inconsistent" - - # Test unit change vessel - vessel = enzmldoc.getVessel("v0") - vessel.unit = "l" - - check_consistency("l", vessel._unit_id, "vessel") - - # Test unit change protein - protein = enzmldoc.getProtein("p0") - protein.unit = "mole / l" - - check_consistency("mole / l", protein._unit_id, "protein") - - # Test unit change reactant - reactant = enzmldoc.getReactant("s0") - reactant.unit = "mole / l" - - check_consistency("mole / l", reactant._unit_id, "reactant") - - # Test unit change measurement - measurement = enzmldoc.getMeasurement("m0") - measurement.temperature_unit = "K" - - check_consistency("K", measurement._temperature_unit_id, "measurement") - - # Test measurement data - meas_data = measurement.getReactants()["s0"] - meas_data.unit = "mole / l" - - check_consistency("mole / l", meas_data._unit_id, "measurement data") - - # Test Replicates - replicate = meas_data.replicates[0] - replicate.data_unit = "mole / l" - replicate.time_unit = "hours" - - check_consistency("mole / l", replicate._data_unit_id, "replicate data") - check_consistency("hours", replicate._time_unit_id, "replicate time") - - # Test Kinetic parameters - reaction = enzmldoc.getReaction("r0") - param = reaction.model.parameters[0] - param.unit = "mole / l" - - check_consistency("mole / l", param._unit_id, "kinetic parameter") - - def test_writing_sbml(self, enzmldoc): - """Test whether the XML content is as expected""" - - expected = open( - "./tests/fixtures/write_xml_string.xml", "r", encoding="utf-8" - ).read() - - assert enzmldoc.toXMLString() == expected diff --git a/tests/enzymeml/core/test_enzymereaction.py b/tests/enzymeml/core/test_enzymereaction.py deleted file mode 100644 index 36b7944d..00000000 --- a/tests/enzymeml/core/test_enzymereaction.py +++ /dev/null @@ -1,402 +0,0 @@ -import pytest - -from pyenzyme.enzymeml.core.enzymereaction import EnzymeReaction, ReactionElement -from pyenzyme.enzymeml.core.ontology import SBOTerm -from pyenzyme.enzymeml.core.exceptions import SpeciesNotFoundError - - -class TestEnzymeReactionBasic: - def test_content(self): - """Test consistency of inputs""" - - reaction = EnzymeReaction( - name="SomeReaction", - reversible=True, - temperature=100.0, - temperature_unit="C", - ph=7.0, - ontology=SBOTerm.BIOCHEMICAL_REACTION, - id="r0", - meta_id="undefined", - creator_id="a0", - uri="URI", - model=None, - ) - - assert reaction.name == "SomeReaction" - assert reaction.reversible - assert reaction.temperature == 100.0 + 273.15 - assert reaction.temperature_unit == "K" - assert reaction.ph == 7.0 - assert reaction.ontology == SBOTerm.BIOCHEMICAL_REACTION - assert reaction.id == "r0" - assert reaction.meta_id == "METAID_R0" - assert reaction.creator_id == "a0" - assert reaction.uri == "URI" - assert not reaction.model - assert reaction.educts == [] - assert reaction.products == [] - assert reaction.modifiers == [] - - def test_defaults(self): - """Test if the defaults are the same""" - - reaction = EnzymeReaction(name="SomeReaction", reversible=True) - - assert not reaction.temperature - assert not reaction.temperature_unit - assert not reaction.ph - assert not reaction.id - assert not reaction.meta_id - assert not reaction.uri - assert not reaction.creator_id - assert not reaction.model - assert reaction.ontology == SBOTerm.BIOCHEMICAL_REACTION - assert reaction.educts == [] - assert reaction.products == [] - assert reaction.modifiers == [] - - def test_get_element(self, reaction): - """Tests the element getter""" - - # Now apply the get methods - educt = reaction.getEduct("s0") - assert educt.species_id == "s0" - assert educt.stoichiometry == 1.0 - assert educt.constant is False - assert educt.ontology == SBOTerm.SUBSTRATE - - product = reaction.getProduct("s1") - assert product.species_id == "s1" - assert product.stoichiometry == 1.0 - assert product.constant is False - assert product.ontology == SBOTerm.PRODUCT - - modifier = reaction.getModifier("p0") - assert modifier.species_id == "p0" - assert modifier.stoichiometry == 1.0 - assert modifier.constant is True - assert modifier.ontology == SBOTerm.CATALYST - - # Test not existent identifiers - with pytest.raises(SpeciesNotFoundError): - reaction.getEduct("s100") - with pytest.raises(SpeciesNotFoundError): - reaction.getProduct("s100") - with pytest.raises(SpeciesNotFoundError): - reaction.getModifier("s100") - - def test_add_element(self, enzmldoc): - """Tests the add methods""" - - # Fetch the reaction for testing and reset elements - reaction = enzmldoc.reaction_dict["r0"] - reaction.educts = [] - reaction.products = [] - reaction.modifiers = [] - - # Test educt addition - reaction.addEduct( - species_id="s0", stoichiometry=1.0, constant=False, enzmldoc=enzmldoc - ) - - # Fetch the educt - educt = reaction.getEduct("s0") - assert educt.species_id == "s0" - assert educt.stoichiometry == 1.0 - assert educt.constant is False - assert educt.ontology == SBOTerm.SUBSTRATE - - # Test product addition - reaction.addProduct( - species_id="s1", stoichiometry=1.0, constant=False, enzmldoc=enzmldoc - ) - - # Fetch the educt - product = reaction.getProduct("s1") - assert product.species_id == "s1" - assert product.stoichiometry == 1.0 - assert product.constant is False - assert product.ontology == SBOTerm.PRODUCT - - # Test product addition - reaction.addModifier( - species_id="p0", stoichiometry=1.0, constant=False, enzmldoc=enzmldoc - ) - - # Fetch the educt - modifier = reaction.getModifier("p0") - assert modifier.species_id == "p0" - assert modifier.stoichiometry == 1.0 - assert modifier.constant is False - assert modifier.ontology == SBOTerm.CATALYST - - # Test case, ID not in document - with pytest.raises(SpeciesNotFoundError): - reaction.addEduct( - species_id="s100", stoichiometry=1.0, constant=False, enzmldoc=enzmldoc - ) - - with pytest.raises(SpeciesNotFoundError): - reaction.addProduct( - species_id="s100", stoichiometry=1.0, constant=False, enzmldoc=enzmldoc - ) - - with pytest.raises(SpeciesNotFoundError): - reaction.addModifier( - species_id="s100", stoichiometry=1.0, constant=False, enzmldoc=enzmldoc - ) - - def test_from_equation_with_names(self, enzmldoc): - """Tests initialization from equation using names""" - - # Test for irreversible case - reaction = EnzymeReaction.fromEquation( - "2.0 Reactant + Protein -> Complex", - "SomeReaction", - enzmldoc, - temperature=100.0, - temperature_unit="C", - ph=7.0, - ) - - assert reaction.name == "SomeReaction" - assert reaction.temperature == 100 + 273.15 - assert reaction.temperature_unit == "K" - assert reaction.ph == 7.0 - assert reaction.reversible is False - - # Fetch the educt (should be s0) - educt = reaction.getEduct("s0") - assert educt.species_id == "s0" - assert educt.stoichiometry == 2.0 - assert educt.constant is False - assert educt.ontology == SBOTerm.SUBSTRATE - - # Fetch the educt (should be p0) - product = reaction.getEduct("p0") - assert product.species_id == "p0" - assert product.stoichiometry == 1.0 - assert product.constant is False - assert product.ontology == SBOTerm.SUBSTRATE - - # Fetch the product (should be c0) - product = reaction.getProduct("c0") - assert product.species_id == "c0" - assert product.stoichiometry == 1.0 - assert product.constant is False - assert product.ontology == SBOTerm.PRODUCT - - # Test for irreversible case - reaction = EnzymeReaction.fromEquation( - "2.0 Reactant + Protein = Complex", - "SomeReaction", - enzmldoc, - temperature=100.0, - temperature_unit="C", - ph=7.0, - ) - - assert reaction.name == "SomeReaction" - assert reaction.temperature == 100 + 273.15 - assert reaction.temperature_unit == "K" - assert reaction.ph == 7.0 - assert reaction.reversible is True - - # Fetch the educt (should be s0) - educt = reaction.getEduct("s0") - assert educt.species_id == "s0" - assert educt.stoichiometry == 2.0 - assert educt.constant is False - assert educt.ontology == SBOTerm.SUBSTRATE - - # Fetch the educt (should be p0) - product = reaction.getEduct("p0") - assert product.species_id == "p0" - assert product.stoichiometry == 1.0 - assert product.constant is False - assert product.ontology == SBOTerm.SUBSTRATE - - # Fetch the product (should be c0) - product = reaction.getProduct("c0") - assert product.species_id == "c0" - assert product.stoichiometry == 1.0 - assert product.constant is False - assert product.ontology == SBOTerm.PRODUCT - - def test_from_equation_with_ids(self, enzmldoc): - """Tests initialization from equation using names""" - - # Test for irreversible case - reaction = EnzymeReaction.fromEquation( - "2.0 s0 + p0 -> c0", - "SomeReaction", - enzmldoc, - temperature=100.0, - temperature_unit="C", - ph=7.0, - ) - - assert reaction.name == "SomeReaction" - assert reaction.temperature == 100 + 273.15 - assert reaction.temperature_unit == "K" - assert reaction.ph == 7.0 - assert reaction.reversible is False - - # Fetch the educt (should be s0) - educt = reaction.getEduct("s0") - assert educt.species_id == "s0" - assert educt.stoichiometry == 2.0 - assert educt.constant is False - assert educt.ontology == SBOTerm.SUBSTRATE - - # Fetch the educt (should be p0) - product = reaction.getEduct("p0") - assert product.species_id == "p0" - assert product.stoichiometry == 1.0 - assert product.constant is False - assert product.ontology == SBOTerm.SUBSTRATE - - # Fetch the product (should be c0) - product = reaction.getProduct("c0") - assert product.species_id == "c0" - assert product.stoichiometry == 1.0 - assert product.constant is False - assert product.ontology == SBOTerm.PRODUCT - - # Test for irreversible case - reaction = EnzymeReaction.fromEquation( - "2.0 s0 + p0 = c0", - "SomeReaction", - enzmldoc, - temperature=100.0, - temperature_unit="C", - ph=7.0, - ) - - assert reaction.name == "SomeReaction" - assert reaction.temperature == 100 + 273.15 - assert reaction.temperature_unit == "K" - assert reaction.ph == 7.0 - assert reaction.reversible is True - - # Fetch the educt (should be s0) - educt = reaction.getEduct("s0") - assert educt.species_id == "s0" - assert educt.stoichiometry == 2.0 - assert educt.constant is False - assert educt.ontology == SBOTerm.SUBSTRATE - - # Fetch the educt (should be p0) - product = reaction.getEduct("p0") - assert product.species_id == "p0" - assert product.stoichiometry == 1.0 - assert product.constant is False - assert product.ontology == SBOTerm.SUBSTRATE - - # Fetch the product (should be c0) - product = reaction.getProduct("c0") - assert product.species_id == "c0" - assert product.stoichiometry == 1.0 - assert product.constant is False - assert product.ontology == SBOTerm.PRODUCT - - def test_faulty_equation_init(self, enzmldoc): - """Tests faulty instances of equation initialization""" - - # No arrow - with pytest.raises(ValueError): - EnzymeReaction.fromEquation("1.0 s0 + 2.0 p0", "FaultyReaction", enzmldoc) - - # No right side (irrev) - with pytest.raises(ValueError): - EnzymeReaction.fromEquation( - "1.0 s0 + 2.0 p0 -> ", "FaultyReaction", enzmldoc - ) - - # No right side (rev) - with pytest.raises(ValueError): - EnzymeReaction.fromEquation( - "1.0 s0 + 2.0 p0 = ", "FaultyReaction", enzmldoc - ) - - # No right side (irrev) - with pytest.raises(ValueError): - EnzymeReaction.fromEquation( - " -> 1.0 s0 + 2.0 p0", "FaultyReaction", enzmldoc - ) - - # No right side (rev) - with pytest.raises(ValueError): - EnzymeReaction.fromEquation("= 1.0 s0 + 2.0 p0", "FaultyReaction", enzmldoc) - - def test_set_model(self, enzmldoc, correct_model, faulty_model): - """Tests if the model is set correctly.""" - - # Correct case - reaction = enzmldoc.getReaction("r0") - reaction.model = None - - # Set the model and check if the units are set correctly - reaction.setModel(correct_model, enzmldoc) - assert reaction.model.name == "SomeModel" - assert reaction.model.equation == "s0 * x" - - # Check parameters are converted correctly - parameter = reaction.model.parameters[0] - assert parameter.name == "x" - assert parameter.value == 10.0 - assert parameter.unit == "mmole / l" - assert enzmldoc._unit_dict[parameter._unit_id].name == "mmole / l" - - # Faulty case - with pytest.raises(SpeciesNotFoundError): - reaction.setModel(faulty_model, enzmldoc) - - def test_get_stoich_coeffs(self, enzmldoc): - """Tests if the method to return stoich coefficients works""" - - # Get the reaction - reaction = enzmldoc.getReaction("r0") - - # Set the expected example and test against method - correct_coeffs = {"s0": 1.0, "s1": -1.0} - coeffs = reaction.getStoichiometricCoefficients() - assert coeffs == correct_coeffs - - def test_initial_value_application(self, enzmldoc): - """Tests whether initial values are applied correctly""" - - # Correct test case - # Set up initial values and get reaction - init_values = { - "x": {"initial_value": 100.0, "upper": 200.0, "lower": 0, "constant": False} - } - reaction = enzmldoc.getReaction("r0") - - # Apply method and assert - reaction.apply_initial_values(init_values) - assert reaction.model.parameters[0].initial_value == 100.0 - - # Test case with wrong identifier - init_values = {"y": 100.0} - with pytest.raises(KeyError): - reaction.apply_initial_values(init_values) - - # Test case with unset model - reaction.model = None - with pytest.raises(ValueError): - reaction.apply_initial_values(init_values) - - -class TestReactionElement: - def test_content(self): - """Tests consistency of content""" - - element = ReactionElement( - species_id="s0", stoichiometry=1.0, constant=False, ontology=SBOTerm.PRODUCT - ) - - assert element.species_id == "s0" - assert element.constant is False - assert element.ontology == SBOTerm.PRODUCT diff --git a/tests/enzymeml/core/test_measurement.py b/tests/enzymeml/core/test_measurement.py deleted file mode 100644 index 873a2d58..00000000 --- a/tests/enzymeml/core/test_measurement.py +++ /dev/null @@ -1,220 +0,0 @@ -import pytest - -from pyenzyme.enzymeml.core.measurement import Measurement - - -class TestMeasurement: - def test_content(self): - """Tests consistency of content""" - - measurement = Measurement( - name="SomeMeasurement", - temperature=100.0, - temperature_unit="C", - ph=7.0, - global_time=[1, 2, 3, 4], - global_time_unit="s", - id="m0", - uri="URI", - creator_id="a0", - ) - - assert measurement.name == "SomeMeasurement" - assert measurement.temperature == 100.0 + 273.15 - assert measurement.temperature_unit == "K" - assert measurement.ph == 7.0 - assert measurement.global_time == [1, 2, 3, 4] - assert measurement.global_time_unit == "s" - assert measurement.id == "m0" - assert measurement.uri == "URI" - assert measurement.creator_id == "a0" - assert measurement.species_dict == {"proteins": {}, "reactants": {}} - assert not measurement._global_time_unit_id - assert not measurement._temperature_unit_id - - def test_defaults(self): - """Test default values""" - - measurement = Measurement(name="SomeMeasurement") - - assert not measurement.temperature - assert not measurement.temperature_unit - assert not measurement.ph - assert not measurement.global_time - assert not measurement.global_time_unit - assert not measurement.id - assert not measurement.uri - assert not measurement.creator_id - assert measurement.species_dict == {"proteins": {}, "reactants": {}} - - def test_data_export(self, measurement): - """Test correct data export""" - - # Call the export function - data = measurement.exportData() - - # Check structure - assert "proteins" in data.keys() - assert "reactants" in data.keys() - - # Check initial concentrations - init_conc = data["proteins"]["initConc"] - assert init_conc == {"p0": (10.0, "mmole / l")} - - init_conc = data["reactants"]["initConc"] - assert init_conc == {"s0": (10.0, "mmole / l")} - - # Construct expected DataFrame - expected_protein = { - "p0": {0: 1.0, 1: 1.0, 2: 1.0, 3: 1.0}, - "time": {0: 1.0, 1: 2.0, 2: 3.0, 3: 4.0}, - } - expected_reactant = { - "s0": {0: 1.0, 1: 1.0, 2: 1.0, 3: 1.0}, - "time": {0: 1.0, 1: 2.0, 2: 3.0, 3: 4.0}, - } - - assert data["reactants"]["data"].to_dict() == expected_reactant - assert data["proteins"]["data"].to_dict() == expected_protein - - def test_data_export_no_repls(self, measurement): - """Tests export method when no replicates are given""" - - # Remove replicates - measurement.species_dict["proteins"]["p0"].replicates = [] - measurement.species_dict["reactants"]["s0"].replicates = [] - - # Call the export function - data = measurement.exportData() - - # Check initial concentrations - init_conc = data["proteins"]["initConc"] - assert init_conc == {"p0": (10.0, "mmole / l")} - - init_conc = data["reactants"]["initConc"] - assert init_conc == {"s0": (10.0, "mmole / l")} - - assert not data["reactants"]["data"].to_dict() - assert not data["proteins"]["data"].to_dict() - - def test_data_export_specific_species(self, measurement): - """Tests export method when a specific species is given""" - - # Test case with list as argument - data = measurement.exportData(species_ids=["s0"]) - expected_reactant = { - "s0": {0: 1.0, 1: 1.0, 2: 1.0, 3: 1.0}, - "time": {0: 1.0, 1: 2.0, 2: 3.0, 3: 4.0}, - } - - assert data["reactants"]["initConc"] == {"s0": (10.0, "mmole / l")} - assert data["reactants"]["data"].to_dict() == expected_reactant - - assert not data["proteins"]["initConc"] - assert not data["proteins"]["data"].to_dict() - - # Test case with string as argument - data = measurement.exportData(species_ids="s0") - init_conc = data["reactants"]["initConc"] - expected_reactant = { - "s0": {0: 1.0, 1: 1.0, 2: 1.0, 3: 1.0}, - "time": {0: 1.0, 1: 2.0, 2: 3.0, 3: 4.0}, - } - - assert data["reactants"]["initConc"] == {"s0": (10.0, "mmole / l")} - assert data["reactants"]["data"].to_dict() == expected_reactant - - assert not data["proteins"]["initConc"] - assert not data["proteins"]["data"].to_dict() - - def test_add_replicates(self, measurement, replicate, enzmldoc): - """Tests the addition of replicates""" - - # Reset replicates - measurement.species_dict["reactants"]["s0"].replicates = [] - - # Call the addReplicates method to add replicate - measurement.addReplicates(replicate, enzmldoc) - - assert measurement.species_dict["reactants"]["s0"].replicates[0] == replicate - - # Test case with list of replicates - measurement.species_dict["reactants"]["s0"].replicates = [] - replicate2 = replicate.copy() - replicate2.id = "repl_s0_1" - - # Call the addReplicates method to add replicate - measurement.addReplicates([replicate, replicate2], enzmldoc) - - assert measurement.species_dict["reactants"]["s0"].replicates == [ - replicate, - replicate2, - ] - - def test_add_data(self, measurement, replicate): - """Tests the addition of data""" - - # Reset measurement to have no data - measurement.species_dict = {"proteins": {}, "reactants": {}} - - # Add reactant data - measurement.addData( - init_conc=10.0, unit="mmole / l", reactant_id="s0", replicates=[replicate] - ) - - # Extract the entry - assert "s0" in measurement.species_dict["reactants"].keys() - reactant = measurement.species_dict["reactants"]["s0"] - - assert reactant.reactant_id == "s0" - assert reactant.init_conc == 10.0 - assert reactant.unit == "mmole / l" - assert reactant.replicates == [replicate] - - # Add reactant data - replicate.species_id = "p0" - measurement.addData( - init_conc=10.0, unit="mmole / l", protein_id="p0", replicates=[replicate] - ) - - # Extract the entry - assert "p0" in measurement.species_dict["proteins"].keys() - reactant = measurement.species_dict["proteins"]["p0"] - - assert reactant.protein_id == "p0" - assert reactant.init_conc == 10.0 - assert reactant.unit == "mmole / l" - assert reactant.replicates == [replicate] - - def test_unit_unification(self, enzmldoc): - """Tests if unit unification works""" - - # Get the measurement from the EnzymeMLDocument - measurement = enzmldoc.measurement_dict["m0"] - - # Perform unit unification - measurement.unifyUnits(kind="mole", scale=-6, enzmldoc=enzmldoc) - - # Check for reactants - replicate = measurement.species_dict["reactants"]["s0"].replicates[0] - nu_unit_id = replicate._data_unit_id - - assert replicate.data == [1000.0, 1000.0, 1000.0, 1000.0] - assert replicate.time == [1.0, 2.0, 3.0, 4.0] - assert enzmldoc._unit_dict[nu_unit_id].name == "umole / l" - - # Check for proteins - replicate = measurement.species_dict["proteins"]["p0"].replicates[0] - nu_unit_id = replicate._data_unit_id - - assert replicate.data == [1000.0, 1000.0, 1000.0, 1000.0] - assert replicate.time == [1.0, 2.0, 3.0, 4.0] - assert enzmldoc._unit_dict[nu_unit_id].name == "umole / l" - - # Test for not supported unit kinds - with pytest.raises(ValueError): - measurement.unifyUnits(kind="joule", scale=-6, enzmldoc=enzmldoc) - - # Test for not supported unit kinds - with pytest.raises(ValueError): - measurement.unifyUnits(kind="mole", scale=-10, enzmldoc=enzmldoc) diff --git a/tests/enzymeml/core/test_measurement_data.py b/tests/enzymeml/core/test_measurement_data.py deleted file mode 100644 index 19d109d8..00000000 --- a/tests/enzymeml/core/test_measurement_data.py +++ /dev/null @@ -1,80 +0,0 @@ -import pytest - -from pyenzyme.enzymeml.core.measurementData import MeasurementData -from pyenzyme.enzymeml.core.exceptions import MeasurementDataSpeciesIdentifierError - - -class TestMeasurementData: - def test_content(self): - """Tests data consistency""" - - # Check for reactant input - data = MeasurementData( - init_conc=10.0, unit="mmole / l", measurement_id="m0", reactant_id="s0" - ) - - assert data.init_conc == 10.0 - assert data.unit == "mmole / l" - assert data.measurement_id == "m0" - assert data.reactant_id == "s0" - assert not data.protein_id - assert not data.replicates - - # Check for protein input - data = MeasurementData( - init_conc=10.0, unit="mmole / l", measurement_id="m0", protein_id="p0" - ) - - assert data.init_conc == 10.0 - assert data.unit == "mmole / l" - assert data.measurement_id == "m0" - assert data.protein_id == "p0" - assert not data.reactant_id - assert not data.replicates - - def test_false_ids(self): - """Tests the cases when either no or both IDs are given""" - - # Check when both are not given - with pytest.raises(MeasurementDataSpeciesIdentifierError): - MeasurementData(init_conc=10.0, unit="mmole / l", measurement_id="m0") - - # Check when both are given at same time - with pytest.raises(MeasurementDataSpeciesIdentifierError): - MeasurementData( - init_conc=10.0, - unit="mmole / l", - measurement_id="m0", - reactant_id="s0", - protein_id="p0", - ) - - def test_unify_units(self, enzmldoc): - """Tests the rescaling of units""" - - # Fetch the measurement data object - measurement = enzmldoc.measurement_dict["m0"] - data = measurement.species_dict["reactants"]["s0"] - - # Apply unifyUnits method and get the replicate - data.unifyUnits(kind="mole", scale=-6, enzmldoc=enzmldoc) - replicate = data.replicates[0] - - assert replicate.data == [1000.0, 1000.0, 1000.0, 1000.0] - assert replicate.data_unit == "umole / l" - assert enzmldoc._unit_dict[replicate._data_unit_id].name == "umole / l" - - assert data.init_conc == 10000.0 - assert data.unit == "umole / l" - - def test_add_replicate(self, measurement, replicate): - """Tests if the added replicate is correct""" - - # Reset objects replicates - data = measurement.species_dict["reactants"]["s0"] - data.replicates = [] - - # Apply method - data.addReplicate(replicate) - - assert data.replicates == [replicate] diff --git a/tests/enzymeml/core/test_protein.py b/tests/enzymeml/core/test_protein.py deleted file mode 100644 index f7cf638e..00000000 --- a/tests/enzymeml/core/test_protein.py +++ /dev/null @@ -1,48 +0,0 @@ -from pyenzyme.enzymeml.core.protein import Protein -from pyenzyme.enzymeml.core.ontology import SBOTerm - - -class TestProtein: - - def test_content(self): - # Test consistency of inputs - protein = Protein( - name="SomeProtein", vessel_id="v0", - init_conc=10.0, unit="mmole / l", constant=True, meta_id="undefined", - id="p0", boundary=True, ontology=SBOTerm.MACROMOLECULAR_COMPLEX, uri="URI", creator_id="a0", - sequence="HGTHMLAP", ecnumber="1.1.1.1", organism="SomeOrganism", organism_tax_id="2894792", uniprotid="P0A955" - ) - - assert protein.sequence == "HGTHMLAP" - assert protein.ecnumber == "1.1.1.1" - assert protein.organism == "SomeOrganism" - assert protein.organism_tax_id == "2894792" - - def test_defaults(self): - # Test if the defaults are the same - protein = Protein( - name="SomeProtein", vessel_id="v0" - ) - - assert protein.constant is True - assert protein.boundary is False - assert protein.ontology == SBOTerm.PROTEIN - assert not protein.sequence - assert not protein.ecnumber - assert not protein.organism - assert not protein.organism_tax_id - assert not protein.uniprotid - - def test_uniprot_id_init(self): - - protein = Protein.fromUniProtID( - uniprotid="P0A955", vessel_id="v0", init_conc=10.0, unit="mmole / l" - ) - - assert protein.uniprotid == "P0A955" - assert protein.name == "Phospho-2-keto-3-deoxygluconate aldolase" - assert protein.sequence == "MKNWKTSAESILTTGPVVPVIVVKKLEHAVPMAKALVAGGVRVLEVTLRTECAVDAIRAIAKEVPEAIVGAGTVLNPQQLAEVTEAGAQFAISPGLTEPLLKAATEGTIPLIPGISTVSELMLGMDYGLKEFKFFPAEANGGVKALQAIAGPFSQVRFCPTGGISPANYRDYLALKSVLCIGGSWLVPADALEAGDYDRITKLAREAVEGAKL" - assert protein.ecnumber == "4.1.2.14" - assert protein.init_conc == 10.0 - assert protein.unit == "mmole / l" - assert protein.vessel_id == "v0" diff --git a/tests/enzymeml/core/test_reactant.py b/tests/enzymeml/core/test_reactant.py deleted file mode 100644 index 4b34c5d6..00000000 --- a/tests/enzymeml/core/test_reactant.py +++ /dev/null @@ -1,44 +0,0 @@ -from pyenzyme.enzymeml.core.reactant import Reactant -from pyenzyme.enzymeml.core.ontology import SBOTerm - - -class TestReactant: - - def test_content(self): - # Test consistency of inputs - reactant = Reactant( - name="SomeReactant", vessel_id="v0", - init_conc=10.0, unit="mmole / l", constant=True, meta_id="undefined", - id="s0", boundary=True, ontology=SBOTerm.MACROMOLECULAR_COMPLEX, uri="URI", creator_id="a0", - inchi="AnInChICode", smiles="()(()-)", chebi_id="CHEBI:15377" - ) - - assert reactant.inchi == "AnInChICode" - assert reactant.chebi_id == "CHEBI:15377" - assert reactant.smiles == "()(()-)" - - def test_defaults(self): - # Test if the defaults are the same - reactant = Reactant( - name="SomeReactant", vessel_id="v0" - ) - - assert reactant.constant is False - assert reactant.boundary is False - assert reactant.ontology == SBOTerm.SMALL_MOLECULE - assert not reactant.inchi - assert not reactant.smiles - assert not reactant.chebi_id - - # def test_chebi_id_init(self): - - # reactant = Reactant.fromChebiID( - # chebi_id="CHEBI:15377", vessel_id="v0", init_conc=10.0, unit="mmole / l" - # ) - - # assert reactant.chebi_id == "CHEBI:15377" - # assert reactant.name == "water" - # assert reactant.inchi == "InChI=1S/H2O/h1H2" - # assert reactant.smiles == "[H]O[H]" - # assert reactant.init_conc == 10.0 - # assert reactant.unit == "mmole / l" diff --git a/tests/enzymeml/core/test_replicate.py b/tests/enzymeml/core/test_replicate.py deleted file mode 100644 index 4adf3835..00000000 --- a/tests/enzymeml/core/test_replicate.py +++ /dev/null @@ -1,63 +0,0 @@ -import pytest - -from pyenzyme.enzymeml.core.replicate import Replicate -from pyenzyme.enzymeml.core.ontology import DataTypes -from pyenzyme.enzymeml.core.exceptions import DataError - - -class TestReplicate: - - def test_content(self): - """Tests consistency of content""" - - replicate = Replicate( - id="repl_s0_1", species_id="s0", measurement_id="m0", - data_type=DataTypes.CONCENTRATION, time_unit="min", time=[1, 2, 3], - data_unit="mmole / l", data=[1, 1, 1], is_calculated=False, uri="URI", creator_id="a0" - ) - - assert replicate.id == "repl_s0_1" - assert replicate.species_id == "s0" - assert replicate.measurement_id == "m0" - assert replicate.data_type == DataTypes.CONCENTRATION - assert replicate.time_unit == "min" - assert replicate.data_unit == "mmole / l" - assert replicate.data == [1, 1, 1] - assert replicate.time == [1, 2, 3] - assert replicate.uri == "URI" - assert replicate.creator_id == "a0" - assert replicate.is_calculated is False - - def test_defaults(self): - """Tests the default arguments""" - - replicate = Replicate( - id="repl_s0_1", species_id="s0", data_unit="mmole", time_unit="min" - ) - - assert replicate.id == "repl_s0_1" - assert replicate.species_id == "s0" - assert replicate.data_type == DataTypes.CONCENTRATION - assert replicate.is_calculated is False - assert not replicate.measurement_id - assert not replicate.data - assert not replicate.time - assert not replicate.uri - assert not replicate.creator_id - - def test_data_completeness(self): - """Tests if correct error messages are thrown at missing data""" - - with pytest.raises(DataError): - Replicate( - id="repl_s0_1", species_id="s0", measurement_id="m0", - data_type=DataTypes.CONCENTRATION, time_unit="min", - data_unit="mmole / l", data=[1, 1, 1], is_calculated=False, uri="URI", creator_id="a0" - ) - - with pytest.raises(DataError): - Replicate( - id="repl_s0_1", species_id="s0", measurement_id="m0", - data_type=DataTypes.CONCENTRATION, time_unit="min", - data_unit="mmole / l", data=[1, 1, 1], time=[1, 2], is_calculated=False, uri="URI", creator_id="a0" - ) diff --git a/tests/enzymeml/core/test_vessel.py b/tests/enzymeml/core/test_vessel.py deleted file mode 100644 index 35eb7d8d..00000000 --- a/tests/enzymeml/core/test_vessel.py +++ /dev/null @@ -1,36 +0,0 @@ -from pyenzyme.enzymeml.core.vessel import Vessel - - -class TestVessel: - - def test_content(self): - """Tests consistency of content""" - - vessel = Vessel( - name="SomeVessel", volume=100.0, unit="ml", constant=True, - id="v0", meta_id="undefined", uri="URI", creator_id="a0" - ) - - assert vessel.name == "SomeVessel" - assert vessel.volume == 100.0 - assert vessel.unit == "ml" - assert vessel.constant is True - assert vessel.id == "v0" - assert vessel.meta_id == "METAID_V0" - assert vessel.uri == "URI" - assert vessel.creator_id == "a0" - - def test_defaults(self): - """Tests default values""" - - vessel = Vessel(name="SomeVessel") - - assert vessel.name == "SomeVessel" - assert vessel.constant is True - assert not vessel.volume - assert not vessel.unit - assert not vessel.id - assert not vessel.meta_id - assert not vessel.uri - assert not vessel.creator_id - assert not vessel._unit_id diff --git a/tests/enzymeml/models/__init__.py b/tests/enzymeml/models/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/tests/enzymeml/models/test_kineticlaw.py b/tests/enzymeml/models/test_kineticlaw.py deleted file mode 100644 index 6e6da816..00000000 --- a/tests/enzymeml/models/test_kineticlaw.py +++ /dev/null @@ -1,134 +0,0 @@ -from pyenzyme.enzymeml.models.kineticmodel import KineticModel -from pyenzyme.enzymeml.models.kineticmodel import KineticParameter -from pyenzyme.enzymeml.core.ontology import SBOTerm - - -class TestKineticModel: - def test_content(self): - """Tests consistency of content""" - - # Set up kinetic parameter - param = KineticParameter( - name="kcat", - value=10.0, - unit="1 / s", - initial_value=20.0, - upper=30.0, - lower=0, - is_global=False, - stdev=1.0, - ) - - assert param.name == "kcat" - assert param.value == 10.0 - assert param.unit == "1 / s" - assert param.initial_value == 20.0 - assert param.upper == 30.0 - assert param.lower == 0.0 - assert param.stdev == 1.0 - assert not param.is_global - - # Set up kinetic model - km = KineticModel( - name="Michaelis Menten Model", - equation="p0*kcat*s0 / (km * s0)", - parameters=[param], - ontology=SBOTerm.MICHAELIS_MENTEN, - ) - - assert km.name == "Michaelis Menten Model" - assert km.equation == "p0*kcat*s0 / (km * s0)" - assert km.ontology == SBOTerm.MICHAELIS_MENTEN - - # Add another paramete - km.addParameter( - name="km", - value=10.0, - unit="mmole / l", - initial_value=20.0, - upper=30.0, - lower=0, - is_global=False, - stdev=1.0, - ) - - # Check addition has worked - assert km.getParameter("km").name == "km" - assert km.getParameter("km").value == 10.0 - assert km.getParameter("km").unit == "mmole / l" - assert km.getParameter("km").initial_value == 20.0 - assert km.getParameter("km").upper == 30.0 - assert km.getParameter("km").lower == 0.0 - assert km.getParameter("km").stdev == 1.0 - assert not km.getParameter("km").is_global - - def test_from_equation(self, enzmldoc): - """Tests the model initialization via an equation""" - - # With IDs - model = KineticModel.fromEquation(name="Model", equation="s0 * x + p0 * c0") - - assert len(model.parameters) == 1 - assert model.parameters[0].name == "x" - assert model.name == "Model" - - # With names - model = KineticModel.fromEquation( - name="Model", equation="Reactant * x + Protein * Complex", enzmldoc=enzmldoc - ) - - assert len(model.parameters) == 1 - assert model.parameters[0].name == "x" - assert model.name == "Model" - assert model.equation == "s0 * x + p0 * c0" - - def test_model_generator(self, enzmldoc): - """Tests consistency of the model generator""" - - # Set up a generator - generator = KineticModel.createGenerator( - name="Michaelis Menten Model", - equation="protein*kcat*substrate / (km * substrate)", - kcat={"unit": "1 / s", "value": 10.0}, - km={"unit": "mmole / l", "value": 10.0}, - ) - - # Generate kinetic model - km = generator(protein="p0", substrate="s0") - - assert km.name == "Michaelis Menten Model" - assert km.equation == "'p0'*kcat*'s0' / (km * 's0')" - - # Add model to reaction - reaction = enzmldoc.reaction_dict["r0"] - reaction.setModel(km, enzmldoc) - - assert reaction.model.name == "Michaelis Menten Model" - assert reaction.model.equation == "p0*kcat*s0 / (km * s0)" - - # Add model to reaction - reaction.model = km - - assert reaction.model.name == "Michaelis Menten Model" - assert reaction.model.equation == "p0*kcat*s0 / (km * s0)" - - # Test if the model is actually written to the XML - xml_string = enzmldoc.toXMLString() - expected = """ - - - - - p0 - kcat - s0 - - - - km - s0 - - - """ - - assert expected in xml_string, "Model has not been written to XML" diff --git a/tests/enzymeml/tools/__init__.py b/tests/enzymeml/tools/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/tests/enzymeml/tools/test_templatereader.py b/tests/enzymeml/tools/test_templatereader.py deleted file mode 100644 index d4702d8c..00000000 --- a/tests/enzymeml/tools/test_templatereader.py +++ /dev/null @@ -1,15 +0,0 @@ -import json - -from pyenzyme.enzymeml.core.enzymemldocument import EnzymeMLDocument - - -class TestTemplateReader: - def test_template_conversion(self, template_example): - """Tests the conversion of the EnzymeML Spreadsheet template""" - - # Convert the template fixture - enzmldoc = EnzymeMLDocument.fromTemplate( - "./tests/fixtures/EnzymeML_Template_Example.xlsm" - ) - - assert enzmldoc.dict(exclude={"log"}) == template_example.dict(exclude={"log"}) diff --git a/tests/enzymeml/tools/test_unitcreator.py b/tests/enzymeml/tools/test_unitcreator.py deleted file mode 100644 index 7e9c1b72..00000000 --- a/tests/enzymeml/tools/test_unitcreator.py +++ /dev/null @@ -1,250 +0,0 @@ -import libsbml - -from pyenzyme.enzymeml.tools.unitcreator import UnitCreator -from pyenzyme.enzymeml.core.enzymemldocument import EnzymeMLDocument -from pyenzyme.enzymeml.core.unitdef import UnitDef - - -class TestUnitCreator: - def test_primitive_units(self): - """Tests if units are parsed correctly""" - - # ! Mole units - name = "mole" - expec, result = self._setup_test(name, libsbml.UNIT_KIND_MOLE, 1, 1, 1) - assert result == expec, f"wrong {name} unit" - - # ! Volumetric units - name = "l" - expec, res = self._setup_test(name, libsbml.UNIT_KIND_LITRE, 1, 1, 1) - assert res == expec, f"wrong {name} unit" - - name = "liter" - expec, res = self._setup_test(name, libsbml.UNIT_KIND_LITRE, 1, 1, 1) - assert res == expec, f"wrong {name} unit" - - name = "litre" - expec, res = self._setup_test(name, libsbml.UNIT_KIND_LITRE, 1, 1, 1) - assert res == expec, f"wrong {name} unit" - - # ! Weight units - name = "g" - expec, res = self._setup_test(name, libsbml.UNIT_KIND_GRAM, 1, 1, 1) - assert res == expec, f"wrong {name} unit" - - name = "gram" - expec, res = self._setup_test(name, libsbml.UNIT_KIND_GRAM, 1, 1, 1) - assert res == expec, f"wrong {name} unit" - - # ! Time units - name = "s" - expec, res = self._setup_test(name, libsbml.UNIT_KIND_SECOND, 1, 1, 1) - assert res == expec, f"wrong {name} unit" - - name = "sec" - expec, res = self._setup_test(name, libsbml.UNIT_KIND_SECOND, 1, 1, 1) - assert res == expec, f"wrong {name} unit" - - name = "second" - expec, res = self._setup_test(name, libsbml.UNIT_KIND_SECOND, 1, 1, 1) - assert res == expec, f"wrong {name} unit" - - name = "seconds" - expec, res = self._setup_test(name, libsbml.UNIT_KIND_SECOND, 1, 1, 1) - assert res == expec, f"wrong {name} unit" - - name = "min" - expec, res = self._setup_test(name, libsbml.UNIT_KIND_SECOND, 1, 1, 60) - assert res == expec, f"wrong {name} unit" - - name = "mins" - expec, res = self._setup_test(name, libsbml.UNIT_KIND_SECOND, 1, 1, 60) - assert res == expec, f"wrong {name} unit" - - name = "minutes" - expec, res = self._setup_test(name, libsbml.UNIT_KIND_SECOND, 1, 1, 60) - assert res == expec, f"wrong {name} unit" - - name = "h" - expec, res = self._setup_test(name, libsbml.UNIT_KIND_SECOND, 1, 1, 60 * 60) - assert res == expec, f"wrong {name} unit" - - name = "hour" - expec, res = self._setup_test(name, libsbml.UNIT_KIND_SECOND, 1, 1, 60 * 60) - assert res == expec, f"wrong {name} unit" - - name = "hours" - expec, res = self._setup_test(name, libsbml.UNIT_KIND_SECOND, 1, 1, 60 * 60) - assert res == expec, f"wrong {name} unit" - - # ! Temperature units - name = "C" - expec, res = self._setup_test(name, libsbml.UNIT_KIND_KELVIN, 1, 1, 1) - expec["name"] = "K" - assert res == expec, f"wrong {name} unit" - - name = "celsius" - expec, res = self._setup_test(name, libsbml.UNIT_KIND_KELVIN, 1, 1, 1) - expec["name"] = name - assert res == expec, f"wrong {name} unit" - - name = "Celsius" - expec, res = self._setup_test(name, libsbml.UNIT_KIND_KELVIN, 1, 1, 1) - expec["name"] = name.lower() - assert res == expec, f"wrong {name} unit" - - name = "K" - expec, res = self._setup_test(name, libsbml.UNIT_KIND_KELVIN, 1, 1, 1) - expec["name"] = name - assert res == expec, f"wrong {name} unit" - - name = "kelvin" - expec, res = self._setup_test(name, libsbml.UNIT_KIND_KELVIN, 1, 1, 1) - expec["name"] = name - assert res == expec, f"wrong {name} unit" - - name = "Kelvin" - expec, res = self._setup_test(name, libsbml.UNIT_KIND_KELVIN, 1, 1, 1) - expec["name"] = name.lower() - assert res == expec, f"wrong {name} unit" - - # ! Dimensionless unit - name = "dimensionless" - expec, res = self._setup_test(name, libsbml.UNIT_KIND_DIMENSIONLESS, 1, 1, 1) - assert res == expec, f"wrong {name} unit" - - def test_prefix(self): - """Tests correct prefix parsing""" - - expec, res = self._setup_test("fmole", libsbml.UNIT_KIND_MOLE, 1, -15, 1) - assert res == expec - - expec, res = self._setup_test("pmole", libsbml.UNIT_KIND_MOLE, 1, -12, 1) - assert res == expec - - expec, res = self._setup_test("nmole", libsbml.UNIT_KIND_MOLE, 1, -9, 1) - assert res == expec - - expec, res = self._setup_test("umole", libsbml.UNIT_KIND_MOLE, 1, -6, 1) - assert res == expec - - expec, res = self._setup_test("mmole", libsbml.UNIT_KIND_MOLE, 1, -3, 1) - assert res == expec - - expec, res = self._setup_test("cmole", libsbml.UNIT_KIND_MOLE, 1, -2, 1) - assert res == expec - - expec, res = self._setup_test("dmole", libsbml.UNIT_KIND_MOLE, 1, -1, 1) - assert res == expec - - expec, res = self._setup_test("mole", libsbml.UNIT_KIND_MOLE, 1, 1, 1) - assert res == expec - - def test_composite_units(self, creator): - """Tests rational and multiplicative units""" - - # Set up EnzymeMLDocument - enzmldoc = EnzymeMLDocument(name="Test") - - # ! Single rational - # Create result - id = creator.getUnit("mole / l", enzmldoc) - res = enzmldoc._unit_dict[id].dict(exclude={"id", "meta_id", "ontology"}) - - # Create expectation - expec = UnitDef(name="mole / l") - expec.addBaseUnit(libsbml.UnitKind_toString(libsbml.UNIT_KIND_MOLE), 1, 1, 1) - expec.addBaseUnit(libsbml.UnitKind_toString(libsbml.UNIT_KIND_LITRE), -1, 1, 1) - expec = expec.dict(exclude={"id", "meta_id", "ontology"}) - - assert res == expec - - # ! Multiple rationals - # Create result - id = creator.getUnit("mole g / l s", enzmldoc) - res = enzmldoc._unit_dict[id].dict(exclude={"id", "meta_id", "ontology"}) - - # Create expectation - expec = UnitDef(name="g mole / l s") - expec.addBaseUnit(libsbml.UnitKind_toString(libsbml.UNIT_KIND_MOLE), 1, 1, 1) - expec.addBaseUnit(libsbml.UnitKind_toString(libsbml.UNIT_KIND_GRAM), 1, 1, 1) - expec.addBaseUnit(libsbml.UnitKind_toString(libsbml.UNIT_KIND_LITRE), -1, 1, 1) - expec.addBaseUnit(libsbml.UnitKind_toString(libsbml.UNIT_KIND_SECOND), -1, 1, 1) - expec = expec.dict(exclude={"id", "meta_id", "ontology"}) - - assert res == expec - - # ! Potentiated units - # Create result - id = creator.getUnit("mole^2", enzmldoc) - res = enzmldoc._unit_dict[id].dict(exclude={"id", "meta_id", "ontology"}) - - # Create expectation - expec = UnitDef(name="mole^2") - expec.addBaseUnit(libsbml.UnitKind_toString(libsbml.UNIT_KIND_MOLE), 2, 1, 1) - expec = expec.dict(exclude={"id", "meta_id", "ontology"}) - - assert res == expec - - # ! Potentiated rational units - # Create result - id = creator.getUnit("mole^2 / l^4", enzmldoc) - res = enzmldoc._unit_dict[id].dict(exclude={"id", "meta_id", "ontology"}) - - # Create expectation - expec = UnitDef(name="mole^2 / l^4") - expec.addBaseUnit(libsbml.UnitKind_toString(libsbml.UNIT_KIND_MOLE), 2, 1, 1) - expec.addBaseUnit(libsbml.UnitKind_toString(libsbml.UNIT_KIND_LITRE), -4, 1, 1) - expec = expec.dict(exclude={"id", "meta_id", "ontology"}) - - assert res == expec - - # ! Potentiated multiple rational units - # Create result - id = creator.getUnit("mole^2 g^3 / l^4 s", enzmldoc) - res = enzmldoc._unit_dict[id].dict(exclude={"id", "meta_id", "ontology"}) - - # Create expectation - expec = UnitDef(name="g^3 mole^2 / l^4 s") - expec.addBaseUnit(libsbml.UnitKind_toString(libsbml.UNIT_KIND_MOLE), 2, 1, 1) - expec.addBaseUnit(libsbml.UnitKind_toString(libsbml.UNIT_KIND_GRAM), 3, 1, 1) - expec.addBaseUnit(libsbml.UnitKind_toString(libsbml.UNIT_KIND_LITRE), -4, 1, 1) - expec.addBaseUnit(libsbml.UnitKind_toString(libsbml.UNIT_KIND_SECOND), -1, 1, 1) - expec = expec.dict(exclude={"id", "meta_id", "ontology"}) - - assert res == expec - - # ! Helper methods - def _setup_test(self, name, kind, exponent, scale, multiplier): - """Sets up a test case to reduce boilerplate code""" - return ( - self._create_expectation(name, kind, exponent, scale, multiplier), - self._create_result(name), - ) - - @staticmethod - def _create_expectation(name, kind, exponent, scale, multiplier): - """Creates a UnitDef to compare against result of UnitCreator""" - - # Create blank unit definition - unitdef = UnitDef(name=name) - - # Add base unit - unitdef.addBaseUnit( - libsbml.UnitKind_toString(kind), exponent, scale, multiplier - ) - - return unitdef.dict(exclude={"id", "meta_id", "ontology"}) - - @staticmethod - def _create_result(name): - """Sets up UnitCreator process and return the UnitDef""" - - # Initialize blank document and UnitCreator - enzmldoc = EnzymeMLDocument(name="Test") - creator = UnitCreator() - - # Create unit and store ID - id = creator.getUnit(name, enzmldoc) - - return enzmldoc._unit_dict[id].dict(exclude={"id", "meta_id", "ontology"}) diff --git a/tests/enzymeml/tools/test_validator.py b/tests/enzymeml/tools/test_validator.py deleted file mode 100644 index 40302092..00000000 --- a/tests/enzymeml/tools/test_validator.py +++ /dev/null @@ -1,198 +0,0 @@ -import os -import yaml -import pandas as pd - -from pyenzyme.enzymeml.tools.validator import EnzymeMLValidator -from pyenzyme.enzymeml.core.enzymemldocument import EnzymeMLDocument - - -class TestValidation: - def test_positive_validation(self, enzmldoc, always_pass): - """Tests positive validation with a non-restrictive validation YAML""" - - # Set up validator - validator = EnzymeMLValidator(scheme=always_pass) - - # Perform validation - report, check = validator.validate(enzmldoc) - - assert check is True - assert not report, "Report is not empty" - - def test_negative_validation(self, enzmldoc, should_fail): - """Tests negative validation with a restrictive validation YAML""" - - # Set up validator - validator = EnzymeMLValidator(scheme=should_fail) - - # Perform validation and assertit failed - report, check = validator.validate(enzmldoc) - - assert check is False - assert report, "Report is empty" - - def test_creation_to_conversion(self): - """Tests the complete path from EnzymeMLDocument class over Spreadhseet back to dict structure""" - - # Generate sheet - sheet_path = "./tests/fixtures/" - sheet_loc = os.path.join(sheet_path, "EnzymeML_Validation_Template.xlsx") - EnzymeMLValidator.generateValidationSpreadsheet(path=sheet_path) - - assert pd.read_excel(sheet_loc).to_dict() - - # Manually create collection and compare it - # to the one that will be drawn from the sheet - collection = EnzymeMLValidator(scheme={})._get_cls_annotations( - EnzymeMLDocument, level="document" - )[0] - expected = yaml.safe_load( - EnzymeMLValidator._dump_validation_template_yaml(collection) - ) - converted = yaml.safe_load(EnzymeMLValidator.convertSheetToYAML(sheet_loc)) - - assert converted == expected, "Conversion from spreadsheet is inconsistent" - - # Remove everything - os.remove(sheet_loc) - - def test_check_unit_consistency_positive(self, enzmldoc): - """Checks whether unit consistency checkup behaves correctly - Positive case""" - - # Set vessel to "l" to get a positive result - enzmldoc.vessel_dict["v0"].unit = "l" - - # Test default mode - Positive outcome - is_consistent, report = EnzymeMLValidator.check_unit_consistency(enzmldoc) - - assert is_consistent - assert not report - - # Test strict mode - Positive outcome - is_consistent, report = EnzymeMLValidator.check_unit_consistency( - enzmldoc, strict=True - ) - - assert is_consistent - assert not report - - def test_check_unit_consistency_strict_mode_conc(self, enzmldoc): - """Test strict mode and change units for all objects of a species (should fail, default works)""" - - # Manipulate document to force inconsistency - # On species level - enzmldoc.reactant_dict["s0"].unit = "fmole / l" - - # On measurement data level - meas_data = enzmldoc.measurement_dict["m0"].getProtein("s0") - meas_data.unit = "fmole / l" - - # On replicate level - for replicate in meas_data.replicates: - replicate.data_unit = "fmole / l" - - # Perform checkup in default - Should work - is_consistent, report = EnzymeMLValidator.check_unit_consistency( - enzmldoc, strict=False - ) - - assert is_consistent - assert not report - - # Perform checkup in strict - Should fail - is_consistent, report = EnzymeMLValidator.check_unit_consistency( - enzmldoc, strict=True - ) - - assert not is_consistent - assert report == { - "conc_units": { - "fmole / l": ["s0", "m0/s0", "m0/s0/repl_s0_0"], - "mmole / l": ["p0", "m0/p0", "m0/p0/repl_p0_0", "s1", "c0"], - }, - "volume_units": { - "l": ["m0/p0", "m0/p0/repl_p0_0", "m0/s0", "m0/s0/repl_s0_0"], - "ml": ["v0"], - }, - } - - def test_check_unit_consistency_strict_mode_time(self, enzmldoc): - """Test strict mode and change units for a parameter (should fail, default works)""" - - # Change time unit of a parameter - param = enzmldoc.reaction_dict["r0"].model.parameters[0] - param.unit = "1 / min" - - # Perform checkup in default - Should work - is_consistent, report = EnzymeMLValidator.check_unit_consistency( - enzmldoc, strict=False - ) - - assert is_consistent - assert not report - - # Perform checkup in strict - Should fail - is_consistent, report = EnzymeMLValidator.check_unit_consistency( - enzmldoc, strict=True - ) - - assert not is_consistent - assert report == { - "time_units": { - "min": ["x"], - "s": ["m0/p0", "m0/p0/repl_p0_0", "m0/s0", "m0/s0/repl_s0_0"], - }, - "volume_units": { - "l": ["m0/p0", "m0/p0/repl_p0_0", "m0/s0", "m0/s0/repl_s0_0"], - "ml": ["v0"], - }, - } - - def test_check_unit_consistency_default_mode_negative(self, enzmldoc): - """Test default mode and change units for a single species (both should fail)""" - - # Change the unit of a reactant - reactant = enzmldoc.reactant_dict["s0"] - reactant.unit = "fmole / l" - - # Perform checkup in default - Should work - is_consistent, report = EnzymeMLValidator.check_unit_consistency( - enzmldoc, strict=False - ) - - assert not is_consistent - assert report == { - "s0": { - "measurements": {"m0": {"expected": "fmole / l", "given": "mmole / l"}}, - "replicates": {"m0": {"expected": "fmole / l", "given": "mmole / l"}}, - } - } - - # Perform checkup in strict - Should fail - is_consistent, report = EnzymeMLValidator.check_unit_consistency( - enzmldoc, strict=True - ) - - assert not is_consistent - assert report == { - "s0": { - "measurements": {"m0": {"expected": "fmole / l", "given": "mmole / l"}}, - "replicates": {"m0": {"expected": "fmole / l", "given": "mmole / l"}}, - }, - "conc_units": { - "fmole / l": ["s0"], - "mmole / l": [ - "p0", - "m0/p0", - "m0/p0/repl_p0_0", - "m0/s0", - "m0/s0/repl_s0_0", - "s1", - "c0", - ], - }, - "volume_units": { - "l": ["m0/p0", "m0/p0/repl_p0_0", "m0/s0", "m0/s0/repl_s0_0"], - "ml": ["v0"], - }, - } diff --git a/tests/fixtures/EnzymeML_Template_Example.xlsm b/tests/fixtures/EnzymeML_Template_Example.xlsm deleted file mode 100644 index 6e08e445d2368d21f125b7da8b5b1c6f91b1f723..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98325 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 diff --git a/tests/fixtures/enzmldoc_object.json b/tests/fixtures/enzmldoc_object.json deleted file mode 100644 index c0642698..00000000 --- a/tests/fixtures/enzmldoc_object.json +++ /dev/null @@ -1,219 +0,0 @@ -{ - "name": "Test", - "level": 3, - "version": "2", - "pubmedid": "PubMedID", - "url": "URL", - "doi": "DOI", - "creators": { - "a0": { - "given_name": "Jan", - "family_name": "Range", - "mail": "jan.range@simtech.uni-stuttgart.de", - "id": "a0" - } - }, - "vessels": { - "v0": { - "name": "Vessel", - "volume": 10.0, - "unit": "ml", - "constant": true, - "id": "v0", - "meta_id": "METAID_V0" - } - }, - "proteins": { - "p0": { - "name": "Protein", - "id": "p0", - "vessel_id": "v0", - "meta_id": "METAID_P0", - "init_conc": 10.0, - "constant": true, - "boundary": false, - "unit": "mmole / l", - "ontology": "SBO:0000252", - "sequence": "HLPMV", - "ecnumber": "1.1.1.1", - "organism": "E.coli", - "organism_tax_id": "27367", - "uniprotid": "P02357" - } - }, - "complexes": { - "c0": { - "name": "Complex", - "id": "c0", - "vessel_id": "v0", - "meta_id": "METAID_C0", - "init_conc": 10.0, - "constant": false, - "boundary": false, - "unit": "mmole / l", - "ontology": "SBO:0000296", - "participants": [ - "s0", "p0" - ] - } - }, - "reactants": { - "s0": { - "name": "Reactant", - "id": "s0", - "vessel_id": "v0", - "meta_id": "METAID_S0", - "init_conc": 10.0, - "constant": false, - "boundary": false, - "unit": "mmole / l", - "ontology": "SBO:0000247", - "smiles": "[H]O[H]", - "inchi": "InChI:HJJH", - "chebi_id": "CHEBI:09823" - }, - "s1": { - "name": "Reactant2", - "id": "s1", - "vessel_id": "v0", - "meta_id": "METAID_S0", - "init_conc": 10.0, - "constant": false, - "boundary": false, - "unit": "mmole / l", - "ontology": "SBO:0000247", - "smiles": "[H]O[H]", - "inchi": "InChI:HJJH", - "chebi_id": "CHEBI:09823" - } - }, - "reactions": { - "r0": { - "name": "string", - "reversible": true, - "temperature": 200, - "temperature_unit": "K", - "ph": 7.0, - "ontology": "SBO:0000176", - "id": "r0", - "meta_id": "METAID_R0", - "model": { - "name": "Menten", - "equation": "s0 * x", - "parameters": [ - { - "name": "x", - "value": 10.0, - "unit": "1 / s", - "stdev": 0.1, - "initial_value": 10.0, - "upper": 11.0, - "lower": 9.0 - } - ] - }, - "educts": [ - { - "species_id": "s0", - "stoichiometry": 1.0, - "constant": false, - "ontology": "SBO:0000015" - } - ], - "products": [ - { - "species_id": "s1", - "stoichiometry": 1.0, - "constant": false, - "ontology": "SBO:0000011" - } - ], - "modifiers": [ - { - "species_id": "p0", - "stoichiometry": 1.0, - "constant": true, - "ontology": "SBO:0000013" - } - ] - } - }, - "measurements": { - "m0": { - "name": "SomeMeasurement", - "temperature": 4.0, - "temperature_unit": "K", - "ph": 7.0, - "species_dict": { - "reactants": { - "s0": { - "init_conc": 10.0, - "unit": "mmole / l", - "measurement_id": "m0", - "reactant_id": "s0", - "replicates": [ - { - "id": "repl_s0_0", - "species_id": "s0", - "data_type": "conc", - "data_unit": "mmole / l", - "time_unit": "s", - "time": [ - 1.0, - 2.0, - 3.0, - 4.0 - ], - "data": [ - 1.0, - 1.0, - 1.0, - 1.0 - ], - "is_calculated": false - } - ] - } - }, - "proteins": { - "p0": { - "init_conc": 10.0, - "unit": "mmole / l", - "measurement_id": "m0", - "protein_id": "p0", - "replicates": [ - { - "id": "repl_p0_0", - "species_id": "p0", - "data_type": "conc", - "data_unit": "mmole / l", - "time_unit": "s", - "time": [ - 1.0, - 2.0, - 3.0, - 4.0 - ], - "data": [ - 1.0, - 1.0, - 1.0, - 1.0 - ], - "is_calculated": false - } - ] - } - } - }, - "global_time": [ - 1.0, - 2.0, - 3.0, - 4.0 - ], - "global_time_unit": "s", - "id": "m0" - } - } -} \ No newline at end of file diff --git a/tests/fixtures/measurement_data_object.json b/tests/fixtures/measurement_data_object.json deleted file mode 100644 index 3f1d0c86..00000000 --- a/tests/fixtures/measurement_data_object.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "init_conc": 10.0, - "unit": "mmole / l", - "measurement_id": "m0", - "reactant_id": "s0", - "replicates": [ - { - "id": "repl_s0_0", - "species_id": "s0", - "data_type": "conc", - "data_unit": "mmole / l", - "time_unit": "s", - "time": [ - 1.0, - 2.0, - 3.0, - 4.0 - ], - "data": [ - 1.0, - 1.0, - 1.0, - 1.0 - ], - "is_calculated": false, - "uri": "URI", - "creator_id": "a0" - } - ] -} \ No newline at end of file diff --git a/tests/fixtures/measurement_object.json b/tests/fixtures/measurement_object.json deleted file mode 100644 index 98a30e40..00000000 --- a/tests/fixtures/measurement_object.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "name": "SomeMeasurement", - "temperature": 4.0, - "temperature_unit": "C", - "ph": 7.0, - "species_dict": { - "reactants": { - "s0": { - "init_conc": 10.0, - "unit": "mmole / l", - "measurement_id": "m0", - "reactant_id": "s0", - "replicates": [ - { - "id": "repl_s0_0", - "species_id": "s0", - "data_type": "conc", - "data_unit": "mmole / l", - "time_unit": "s", - "time": [ - 1.0, - 2.0, - 3.0, - 4.0 - ], - "data": [ - 1.0, - 1.0, - 1.0, - 1.0 - ], - "is_calculated": false, - "uri": "URI", - "creator_id": "a0" - } - ] - } - }, - "proteins": { - "p0": { - "init_conc": 10.0, - "unit": "mmole / l", - "measurement_id": "m0", - "protein_id": "p0", - "replicates": [ - { - "id": "repl_p0_0", - "species_id": "p0", - "data_type": "conc", - "data_unit": "mmole / l", - "time_unit": "s", - "time": [ - 1.0, - 2.0, - 3.0, - 4.0 - ], - "data": [ - 1.0, - 1.0, - 1.0, - 1.0 - ], - "is_calculated": false, - "uri": "URI", - "creator_id": "a0" - } - ] - } - } - }, - "global_time": [ - 1.0, - 2.0, - 3.0, - 4.0 - ], - "global_time_unit": "s", - "id": "m0", - "uri": "URI", - "creator_id": "a0" -} \ No newline at end of file diff --git a/tests/fixtures/reaction_object.json b/tests/fixtures/reaction_object.json deleted file mode 100644 index be32b0ac..00000000 --- a/tests/fixtures/reaction_object.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "name": "SomeReaction", - "reversible": true, - "temperature": 200, - "temperature_unit": "C", - "ph": 7.0, - "ontology": "SBO:0000176", - "id": "r0", - "meta_id": "METAID_R0", - "uri": "URI", - "creator_id": "a0", - "model": { - "name": "Menten", - "equation": "s0 * x", - "parameters": [ - { - "name": "x", - "value": 10.0, - "unit": "1 / s", - "stdev": 0.1, - "initial_value": 10.0 - } - ] - }, - "educts": [ - { - "species_id": "s0", - "stoichiometry": 1.0, - "constant": false, - "ontology": "SBO:0000015" - } - ], - "products": [ - { - "species_id": "s1", - "stoichiometry": 1.0, - "constant": false, - "ontology": "SBO:0000011" - } - ], - "modifiers": [ - { - "species_id": "p0", - "stoichiometry": 1.0, - "constant": true, - "ontology": "SBO:0000013" - } - ] -} diff --git a/tests/fixtures/replicate_object.json b/tests/fixtures/replicate_object.json deleted file mode 100644 index 4e995bea..00000000 --- a/tests/fixtures/replicate_object.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "id": "repl_s0_0", - "species_id": "s0", - "data_type": "conc", - "data_unit": "mmole / l", - "time_unit": "s", - "time": [ - 1.0, - 2.0, - 3.0, - 4.0 - ], - "data": [ - 1.0, - 1.0, - 1.0, - 1.0 - ], - "is_calculated": false, - "uri": "URI", - "creator_id": "a0" -} \ No newline at end of file diff --git a/tests/fixtures/template_result.json b/tests/fixtures/template_result.json deleted file mode 100644 index 86bffa74..00000000 --- a/tests/fixtures/template_result.json +++ /dev/null @@ -1,479 +0,0 @@ -{ - "name": "Pyruvate Decarboxylation", - "level": 3, - "version": 2, - "pubmedid": "https://identifiers.org/pubmed:pmid1234", - "url": "http://www.someurl.com", - "created": "2021-03-17 00:00:00", - "creators": { - "a0": { - "given_name": "Jan", - "family_name": "Range", - "mail": "jan.range@simtech.uni-stuttgart.de", - "id": "a0" - } - }, - "vessels": { - "v0": { - "name": "Eppendorf Tube", - "volume": 1000.0, - "unit": "ul", - "constant": true, - "meta_id": "METAID_V0", - "id": "v0" - } - }, - "proteins": { - "p0": { - "name": "Pyruvate decarboxylase isozyme 1", - "meta_id": "METAID_P0", - "id": "p0", - "vessel_id": "v0", - "constant": true, - "boundary": false, - "ontology": "SBO:0000252", - "sequence": "MSEITLGKYLFERLKQVNVNTVFGLPGDFNLSLLDKIYEVEGMRWAGNANELNAAYAADGYARIKGMSCIITTFGVGELSALNGIAGSYAEHVGVLHVVGVPSISAQAKQLLLHHTLGNGDFTVFHRMSANISETTAMITDIATAPAEIDRCIRTTYVTQRPVYLGLPANLVDLNVPAKLLQTPIDMSLKPNDAESEKEVIDTILALVKDAKNPVILADACCSRHDVKAETKKLIDLTQFPAFVTPMGKGSIDEQHPRYGGVYVGTLSKPEVKEAVESADLILSVGALLSDFNTGSFSYSYKTKNIVEFHSDHMKIRNATFPGVQMKFVLQKLLTTIADAAKGYKPVAVPARTPANAAVPASTPLKQEWMWNQLGNFLQEGDVVIAETGTSAFGINQTTFPNNTYGISQVLWGSIGFTTGATLGAAFAAEEIDPKKRVILFIGDGSLQLTVQEISTMIRWGLKPYLFVLNNDGYTIEKLIHGPKAQYNEIQGWDHLSLLPTFGAKDYETHRVATTGEWDKLTQDKSFNDNSKIRMIEIMLPVFDAPQNLVEQAKLTAATNAKQ", - "ecnumber": "4.1.1.1", - "organism": "Saccharomyces cerevisiae" - } - }, - "complexes": {}, - "reactants": { - "s0": { - "name": "Pyruvate", - "meta_id": "METAID_S0", - "id": "s0", - "vessel_id": "v0", - "constant": false, - "boundary": false, - "ontology": "SBO:0000247", - "smiles": "CC(=O)C(=O)[O-]", - "inchi": "InChI=1S/C3H4O3/c1-2(4)3(5)6/h1H3,(H,5,6)/p-1" - }, - "s1": { - "name": "Acetaldehyde", - "meta_id": "METAID_S1", - "id": "s1", - "vessel_id": "v0", - "constant": false, - "boundary": false, - "ontology": "SBO:0000247", - "smiles": "CC=O" - }, - "s2": { - "name": "CO2", - "meta_id": "METAID_S2", - "id": "s2", - "vessel_id": "v0", - "constant": false, - "boundary": false, - "ontology": "SBO:0000247", - "inchi": "InChI=1S/CO2/c2-1-3" - } - }, - "reactions": { - "r0": { - "name": "Pyruvate decarboxylation", - "reversible": true, - "temperature": 309.15, - "temperature_unit": "K", - "ph": 6.5, - "ontology": "SBO:0000176", - "meta_id": "METAID_R0", - "id": "r0", - "educts": [ - { - "species_id": "s0", - "stoichiometry": 1.0, - "constant": false, - "ontology": "SBO:0000015" - } - ], - "products": [ - { - "species_id": "s1", - "stoichiometry": 1.0, - "constant": false, - "ontology": "SBO:0000011" - }, - { - "species_id": "s2", - "stoichiometry": 1.0, - "constant": false, - "ontology": "SBO:0000011" - } - ], - "modifiers": [ - { - "species_id": "p0", - "stoichiometry": 1.0, - "constant": false, - "ontology": "SBO:0000013" - }, - { - "species_id": "s0", - "stoichiometry": 1.0, - "constant": false, - "ontology": "SBO:0000013" - } - ] - } - }, - "measurements": { - "m0": { - "name": "1.0", - "species_dict": { - "proteins": { - "p0": { - "init_conc": 100.0, - "unit": "umole / l", - "measurement_id": "m0", - "protein_id": "p0", - "replicates": [] - } - }, - "reactants": { - "s0": { - "init_conc": 1000.0, - "unit": "mmole / l", - "measurement_id": "m0", - "reactant_id": "s0", - "replicates": [ - { - "id": "replica_0_Pyruvate_1.0", - "species_id": "s0", - "measurement_id": "m0", - "data_type": "abs", - "data_unit": "mmole / l", - "time_unit": "sec", - "time": [ - 0.0, - 60.0, - 120.0, - 180.0, - 240.0, - 300.0, - 360.0, - 420.0, - 480.0, - 540.0 - ], - "data": [ - 0.1, - 0.0409737291, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - "is_calculated": false - }, - { - "id": "replica_1_Pyruvate_1.0", - "species_id": "s0", - "measurement_id": "m0", - "data_type": "conc", - "data_unit": "mmole / l", - "time_unit": "sec", - "time": [ - 0.0, - 60.0, - 120.0, - 180.0, - 240.0, - 300.0, - 360.0, - 420.0, - 480.0, - 540.0 - ], - "data": [ - 100.0, - 40.9737291, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - "is_calculated": false - } - ] - }, - "s2": { - "init_conc": 0.0, - "unit": "mmole / l", - "measurement_id": "m0", - "reactant_id": "s2", - "replicates": [] - }, - "s1": { - "init_conc": 0.0, - "unit": "mmole / l", - "measurement_id": "m0", - "reactant_id": "s1", - "replicates": [] - } - } - }, - "global_time": [ - 0.0, - 60.0, - 120.0, - 180.0, - 240.0, - 300.0, - 360.0, - 420.0, - 480.0, - 540.0 - ], - "global_time_unit": "sec", - "id": "m0" - }, - "m1": { - "name": "2.0", - "species_dict": { - "proteins": { - "p0": { - "init_conc": 100.0, - "unit": "umole / l", - "measurement_id": "m1", - "protein_id": "p0", - "replicates": [] - } - }, - "reactants": { - "s0": { - "init_conc": 1000.0, - "unit": "mmole / l", - "measurement_id": "m1", - "reactant_id": "s0", - "replicates": [ - { - "id": "replica_0_Pyruvate_2.0", - "species_id": "s0", - "measurement_id": "m1", - "data_type": "abs", - "data_unit": "mmole / l", - "time_unit": "sec", - "time": [ - 0.0, - 60.0, - 120.0, - 180.0, - 240.0, - 300.0, - 360.0, - 420.0, - 480.0, - 540.0 - ], - "data": [ - 1.0, - 0.9400679484, - 0.8801403665, - 0.8202178834, - 0.7603012714999999, - 0.7003914925, - 0.6404897662, - 0.5805976704, - 0.5207172976000001, - 0.4608515054 - ], - "is_calculated": false - }, - { - "id": "replica_1_Pyruvate_2.0", - "species_id": "s0", - "measurement_id": "m1", - "data_type": "conc", - "data_unit": "mmole / l", - "time_unit": "sec", - "time": [ - 0.0, - 60.0, - 120.0, - 180.0, - 240.0, - 300.0, - 360.0, - 420.0, - 480.0, - 540.0 - ], - "data": [ - 1000.0, - 940.0679484, - 880.1403665, - 820.2178834, - 760.3012715, - 700.3914925, - 640.4897662, - 580.5976704, - 520.7172976, - 460.8515054 - ], - "is_calculated": false - } - ] - }, - "s2": { - "init_conc": 0.0, - "unit": "mmole / l", - "measurement_id": "m1", - "reactant_id": "s2", - "replicates": [] - }, - "s1": { - "init_conc": 0.0, - "unit": "mmole / l", - "measurement_id": "m1", - "reactant_id": "s1", - "replicates": [] - } - } - }, - "global_time": [ - 0.0, - 60.0, - 120.0, - 180.0, - 240.0, - 300.0, - 360.0, - 420.0, - 480.0, - 540.0 - ], - "global_time_unit": "sec", - "id": "m1" - }, - "m2": { - "name": "3.0", - "species_dict": { - "proteins": { - "p0": { - "init_conc": 1.0, - "unit": "umole / l", - "measurement_id": "m2", - "protein_id": "p0", - "replicates": [] - } - }, - "reactants": { - "s0": { - "init_conc": 1000.0, - "unit": "mmole / l", - "measurement_id": "m2", - "reactant_id": "s0", - "replicates": [ - { - "id": "replica_0_Pyruvate_3.0", - "species_id": "s0", - "measurement_id": "m2", - "data_type": "abs", - "data_unit": "mmole / l", - "time_unit": "sec", - "time": [ - 0.0, - 60.0, - 120.0, - 180.0, - 240.0, - 300.0, - 360.0, - 420.0, - 480.0, - 540.0 - ], - "data": [ - 1.0, - 0.9400679484, - 0.8801403665, - 0.8202178834, - 0.7603012714999999, - 0.7003914925, - 0.6404897662, - 0.5805976704, - 0.5207172976000001, - 0.4608515054 - ], - "is_calculated": false - }, - { - "id": "replica_1_Pyruvate_3.0", - "species_id": "s0", - "measurement_id": "m2", - "data_type": "conc", - "data_unit": "mmole / l", - "time_unit": "sec", - "time": [ - 0.0, - 60.0, - 120.0, - 180.0, - 240.0, - 300.0, - 360.0, - 420.0, - 480.0, - 540.0 - ], - "data": [ - 1000.0, - 940.0679484, - 880.1403665, - 820.2178834, - 760.3012715, - 700.3914925, - 640.4897662, - 580.5976704, - 520.7172976, - 460.8515054 - ], - "is_calculated": false - } - ] - }, - "s2": { - "init_conc": 0.0, - "unit": "mmole / l", - "measurement_id": "m2", - "reactant_id": "s2", - "replicates": [] - }, - "s1": { - "init_conc": 0.0, - "unit": "mmole / l", - "measurement_id": "m2", - "reactant_id": "s1", - "replicates": [] - } - } - }, - "global_time": [ - 0.0, - 60.0, - 120.0, - 180.0, - 240.0, - 300.0, - 360.0, - 420.0, - 480.0, - 540.0 - ], - "global_time_unit": "sec", - "id": "m2" - } - }, - "global_parameters": {} -} \ No newline at end of file diff --git a/tests/fixtures/test_case.omex b/tests/fixtures/test_case.omex deleted file mode 100644 index 1f67bf2ca8424b112b4e2942fc9940e155d72bc5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5024 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 jy(-^dY$Ew3` - - - - - DOI - https://identifiers.org/pubmed:PubMedID - URL - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - HLPMV - 1.1.1.1 - P02357 - E.coli - 27367 - - - - - - - s0 - p0 - - - - - - - InChI:HJJH - [H]O[H] - CHEBI:09823 - - - - - - - InChI:HJJH - [H]O[H] - CHEBI:09823 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - s0 - x - - - - - - - 10.0 - 11.0 - 9.0 - 0.1 - - - - - - - - - diff --git a/tests/test_tl_copasi.py b/tests/test_tl_copasi.py deleted file mode 100644 index ca35bf0f..00000000 --- a/tests/test_tl_copasi.py +++ /dev/null @@ -1,73 +0,0 @@ -import unittest -import COPASI -import os - -from pyenzyme.thinlayers import ThinLayerCopasi - -this_dir = os.path.abspath(os.path.dirname(__file__)) -temp_dir = os.path.join(this_dir, 'tmp') -if not os.path.exists(temp_dir): - os.mkdir(temp_dir) - - -class TestTlCopasi(unittest.TestCase): - - example_file = os.path.join(this_dir, '..', 'examples', 'ThinLayers', 'COPASI', '3IZNOK_Simulated.omex') - - def test_copasi_version(self): - self.assertGreaterEqual(int(COPASI.CVersion.VERSION.getVersionDevel()), 214, "Need newer COPASI version") - - def test_example_file_exists(self): - self.assertTrue(os.path.exists(self.example_file)) - - def test_example(self): - thin_layer = ThinLayerCopasi(path=self.example_file, outdir=temp_dir) - self.assertEqual(thin_layer.reaction_data['r0'][0].parameters[0].name, 'k_cat') - self.assertEqual(thin_layer.reaction_data['r0'][0].parameters[0].value, 0.015) - self.assertEqual(thin_layer.reaction_data['r0'][0].parameters[1].name, 'k_m') - self.assertEqual(thin_layer.reaction_data['r0'][0].parameters[1].value, 0.01) - thin_layer.optimize() - new_doc = thin_layer.write() - - -class TestTlCopasiENO(unittest.TestCase): - example_file = os.path.join(this_dir, '..', 'examples', 'ThinLayers', 'COPASI', 'PGM-ENO.omex') - - def test_copasi_version(self): - self.assertGreaterEqual(int(COPASI.CVersion.VERSION.getVersionDevel()), 214, "Need newer COPASI version") - - def test_example_file_exists(self): - self.assertTrue(os.path.exists(self.example_file)) - - def test_example(self): - thin_layer = ThinLayerCopasi(path=self.example_file, outdir=temp_dir) - fit_items = thin_layer.get_fit_parameters() - initial_values = [val['start'] for val in fit_items] - result = thin_layer.optimize().reset_index().to_dict(orient='records') - new_values = [val['value'] for val in result] - self.assertNotEqual(initial_values, new_values) - - -class TestModel4(unittest.TestCase): - example_file = os.path.join(this_dir, '..', 'examples', 'ThinLayers', 'COPASI', 'Model_4.omex') - init_file = os.path.join(this_dir, '..', 'examples', 'ThinLayers', 'COPASI', 'Model_4_init.yaml') - - def test_copasi_version(self): - self.assertGreaterEqual(int(COPASI.CVersion.VERSION.getVersionDevel()), 214, "Need newer COPASI version") - - def test_example_file_exists(self): - self.assertTrue(os.path.exists(self.example_file)) - self.assertTrue(os.path.exists(self.init_file)) - - def test_example(self): - thin_layer = ThinLayerCopasi(path=self.example_file, outdir=temp_dir, init_file=self.init_file) - thin_layer.enzmldoc.toFile('test') - fit_items = thin_layer.get_fit_parameters() - initial_values = [val['start'] for val in fit_items] - thin_layer.task.setMethodType(COPASI.CTaskEnum.Method_LevenbergMarquardt) - thin_layer.optimize() - new_values = [val for val in thin_layer.problem.getSolutionVariables()] - self.assertNotEqual(initial_values, new_values) - new_doc = thin_layer.write() - new_doc.toFile('Test') - self.assertIsNotNone(new_doc) diff --git a/tests/thinlayers/__init__.py b/tests/thinlayers/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/tests/write_test.omex b/tests/write_test.omex deleted file mode 100644 index 25b1ecf54572d47af5a41bb50b3e2596c74f81ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4251 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 P1>M~GH(S9<^z-c>lyA9w From 5dad7336a3cc35a7af8cb7b2318b7694041332c0 Mon Sep 17 00:00:00 2001 From: Jan Range Date: Sat, 22 Jun 2024 17:55:50 +0200 Subject: [PATCH 004/172] add migrated lib --- pyenzyme/equations/__init__.py | 2 + pyenzyme/equations/_chem.py | 167 +++ pyenzyme/equations/_math.py | 189 +++ pyenzyme/logging.py | 45 + pyenzyme/model.py | 2373 ++++++++++++++++++++++++++++++++ pyenzyme/rdf.py | 34 + pyenzyme/sbml/__init__.py | 3 + pyenzyme/sbml/mappings.toml | 31 + pyenzyme/sbml/serializer.py | 460 +++++++ pyenzyme/sbml/validation.py | 157 +++ pyenzyme/tabular.py | 323 +++++ pyenzyme/tools.py | 128 ++ pyenzyme/units/__init__.py | 1 + pyenzyme/units/ontomaps.toml | 40 + pyenzyme/units/predefined.py | 146 ++ pyenzyme/units/units.py | 367 +++++ pyenzyme/xmlutils.py | 78 ++ 17 files changed, 4544 insertions(+) create mode 100644 pyenzyme/equations/__init__.py create mode 100644 pyenzyme/equations/_chem.py create mode 100644 pyenzyme/equations/_math.py create mode 100644 pyenzyme/logging.py create mode 100644 pyenzyme/model.py create mode 100644 pyenzyme/rdf.py create mode 100644 pyenzyme/sbml/__init__.py create mode 100644 pyenzyme/sbml/mappings.toml create mode 100644 pyenzyme/sbml/serializer.py create mode 100644 pyenzyme/sbml/validation.py create mode 100644 pyenzyme/tabular.py create mode 100644 pyenzyme/tools.py create mode 100644 pyenzyme/units/__init__.py create mode 100644 pyenzyme/units/ontomaps.toml create mode 100644 pyenzyme/units/predefined.py create mode 100644 pyenzyme/units/units.py create mode 100644 pyenzyme/xmlutils.py diff --git a/pyenzyme/equations/__init__.py b/pyenzyme/equations/__init__.py new file mode 100644 index 00000000..21bae2f4 --- /dev/null +++ b/pyenzyme/equations/__init__.py @@ -0,0 +1,2 @@ +from ._math import build_equation, build_equations # noqa: F401 +from ._chem import build_reaction, build_reactions # noqa: F401 diff --git a/pyenzyme/equations/_chem.py b/pyenzyme/equations/_chem.py new file mode 100644 index 00000000..0c3b74dd --- /dev/null +++ b/pyenzyme/equations/_chem.py @@ -0,0 +1,167 @@ +import re +from enum import Enum + +from pyenzyme.model import Equation, ReactionElement, Reaction + +ELEMENT_PATTERN = r"(\d*)\s?([A-Za-z\d]+)" + + +class EquationSide(Enum): + LEFT = -1 + RIGHT = 1 + + +class EqDirection(Enum): + """Enum for the type of reaction. + + Returns true if the reaction is reversible, false otherwise. + + Attributes: + IRREVERSIBLE: A reaction that only goes in one direction. + REVERSIBLE: A reaction that can go in both directions. + """ + + IRREVERSIBLE = False + REVERSIBLE = True + + +def build_reactions( + *equations: str, + modifiers: dict[str, list[str]] = {}, +) -> list[Reaction]: + """Builds a list of reaction objects from a list of string representations. + + Args: + *equations (list[str]): A list of string representations of the reactions + + Returns: + list[Reaction]: A list of reaction objects + + Example: + >> reactions("2A --> B", "A + B <=> C") + + Raises: + ValueError: If the reaction direction is not valid + AssertionError: If the species is not set + """ + + reactions = [ + build_reaction( + id=f"r{i}", + name=f"Reaction {i}", + scheme=equation, + ) # type: ignore + for i, equation in enumerate(equations, start=1) + ] + + for id, modifier in modifiers.items(): + try: + reaction = next(r for r in reactions if r.id == id) + except StopIteration: + raise ValueError(f"Reaction with id {id} not found in list of reactions") + + reaction.modifiers = modifier + + return reactions + + +def build_reaction( + name: str, + scheme: str, + id: str | None = None, + kinetic_law: Equation | None = None, + modifiers: list[str] = [], +): + """Builds a reaction object from a string representation. + + Args: + id (str): The id of the reaction + name (str): The name of the reaction + scheme (str): The equation of the reaction + modifiers (list[str], optional): A list of modifiers for the reaction. Defaults to []. + + Returns: + Reaction: A reaction object + + Example: + + >> reaction("R1", "Reaction 1", "2A --> B") # Irrversible reaction + >> reaction("R2", "Reaction 2", "A + B <=> C") # Reversible reaction + >> reaction("R2", "Reaction 2", "A + B <-> C") # Reversible reaction + + Raises: + ValueError: If the reaction direction is not valid + AssertionError: If the species is not set + + """ + + if not id: + id = name + + left, right, reversible = _extract_left_right(scheme) + + # Initialize and build the reaction object + reaction = Reaction( + name=name, + id=id, + reversible=reversible, + modifiers=modifiers, + ) + reaction.species += _extract_elements(left, EquationSide.LEFT) + reaction.species += _extract_elements(right, EquationSide.RIGHT) + + return reaction + + +def _extract_left_right(reaction: str) -> tuple[str, str, bool]: + """Extracts the left and right side of a reaction string. + + Args: + reaction (str): The reaction string + + Returns: + tuple[str, str, bool]: A tuple containing the left side, right side, and the reaction direction + """ + + if "->" in reaction: + direction = EqDirection.IRREVERSIBLE + sep = "->" + elif "<=>" in reaction: + direction = EqDirection.REVERSIBLE + sep = "<=>" + else: + raise ValueError( + "No valid reaction direction found in equation. Use ->, <->, or <=>." + ) + + left, right = reaction.split(sep, 1) + + return left.strip(), right.strip(), direction.value + + +def _extract_elements(side_string: str, side: EquationSide) -> list[ReactionElement]: + """Extracts the elements from a reaction string.""" + elements = [] + for element in side_string.split("+"): + element = re.search(ELEMENT_PATTERN, element.strip()) + stoich, species = element.groups() # type: ignore + + elements.append(_create_reaction_element(stoich, species, side)) + + return elements + + +def _create_reaction_element( + stoich: str | float, + species: str, + side: EquationSide, +) -> ReactionElement: + assert species, "Species must be set" + + if stoich == "": + stoich = 1.0 + + return ReactionElement( + stoichiometry=float(stoich) * side.value, + species_id=species, + ) diff --git a/pyenzyme/equations/_math.py b/pyenzyme/equations/_math.py new file mode 100644 index 00000000..ec7f7231 --- /dev/null +++ b/pyenzyme/equations/_math.py @@ -0,0 +1,189 @@ +import re +import rich +from loguru import logger +from pyenzyme.logging import add_logger +from pyenzyme.model import ( + EnzymeMLDocument, + Equation, + EqVariable, + EqParameter, + EquationType, + UnitDefinition, +) +from sympy import sympify + +INIT_ASSIGNMENT_PATTERN = r"^[A-Za-z][A-Za-z\_]*" +DERIVATIVE_PATTERN = r"([A-Za-z0-9\_]+)\'\(t\)" +VARIABLE_PATTERN = r"([A-Za-z0-9\_]+)\'?\(t\)" +PARAMETER_PATTERN = r"([A-Za-z0-9\_]+)" +REPLACE_PATTERN = r"\(t\)|\'" +ELEMENTAL_FUNCTIONS = ["exp", "log", "sin", "cos", "tan", "sqrt", "abs"] + + +def build_equations( + *equations: str, + units: list[UnitDefinition], + enzmldoc: EnzymeMLDocument | None = None, + unit_mapping: dict[str, UnitDefinition] = {}, +) -> list[Equation]: + """Builds a list of Equation objects from a list of string representations. + + Args: + *equations (list[str]): A list of string representations of the ODEs + + Returns: + list[ODE]: A list of ODE objects + + Example: + >> build_equations("s1'(t) = 2 * s2(t)", "s2'(t) = 3 * s1(t)") + """ + + assert all(isinstance(eq, str) for eq in equations), "All equations must be strings" + assert all( + isinstance(unit, UnitDefinition) for unit in units + ), "All units must be UnitDefinition objects" + assert len(equations) == len( + units + ), "The number of equations must match the number of units" + + return [build_equation(eq, unit, enzmldoc) for eq, unit in zip(equations, units)] # type: ignore + + +def build_equation( + equation: str, + unit: UnitDefinition, + enzmldoc: EnzymeMLDocument | None = None, + unit_mapping: dict[str, UnitDefinition] = {}, +) -> Equation: + """Builds an equation object from a string + + This function takes an equation string and converts it into an ODE object. + The equation string should be in the form of "s1'(t) = 2 * s2(t)" where + there is a left and right side of the equation. + + Args: + equation (str): The equation to be converted into an ODE object + enzmldoc (EnzymeMLDocument): The EnzymeMLDocument used to transfer parameters to + + Returns: + ODE: The ODE object + + Example: + + >> eq = "s1'(t) = 2 * s2(t)" + >> ode = ode(eq) + + """ + + left, right = _extract_sides(equation) + variables = set(re.findall(VARIABLE_PATTERN, right)) + + if bool(re.match(DERIVATIVE_PATTERN, left)): + equation_type = EquationType.ODE + elif bool(re.match(VARIABLE_PATTERN, left)): + equation_type = EquationType.ASSIGNMENT + elif bool(re.match(INIT_ASSIGNMENT_PATTERN, left)): + equation_type = EquationType.INITIAL_ASSIGNMENT + elif left.strip() == "": + equation_type = EquationType.RATE_LAW + else: + rich.print( + "\n".join( + [ + "There are three types equations that follow a certain pattern:\n", + " [bold]1. ODE: y'(t) = 2 * x(t)[/bold]", + " [bold]2. Assignment: y(t) = 2 * x(t)[/bold]", + " [bold]3. Initial Assignment: y = 2 * x(t)[/bold]", + "\nPlease make sure your equation follows one of these patterns.\n", + ] + ) + ) + raise ValueError("Equation type not recognized") + + right = sympify(_clean_and_trim(right)) + left = _clean_and_trim(left) + parameters = {str(symbol) for symbol in right.free_symbols} - variables + + if equation_type == EquationType.ASSIGNMENT: + parameters = parameters.union({left}) + + eq = Equation( + species_id=left, + equation=str(right), + variables=[_create_variable(name) for name in variables], + parameters=[_create_parameter(name) for name in parameters], + equation_type=equation_type, + unit=unit, + ) + + if enzmldoc: + [_add_to_parameters(enzmldoc, param.name, param.id) for param in eq.parameters] + _add_units_to_parameters(enzmldoc, unit_mapping) + + return eq + + +def _extract_sides(equation: str) -> tuple[str, str]: + left, right, *_ = equation.split("=") + + if right == "": + raise ValueError("Equation must contain a right-hand side") + if left == "": + raise ValueError("Equation must contain a left-hand side") + + return left, right + + +def _clean_and_trim(eq: str) -> str: + vars = re.findall(VARIABLE_PATTERN, eq) + for var in vars: + var = var.replace("'", "") + if var not in ELEMENTAL_FUNCTIONS: + eq = re.sub(rf"{var}\'?\(t\)", var, eq) + + return eq.strip() + + +def _create_parameter(name: str) -> EqParameter: + return EqParameter(id=name, name=name, symbol=name) + + +def _create_variable(name: str) -> EqVariable: + return EqVariable(id=name, name=name, symbol=name) + + +def _add_to_parameters(enzmldoc: EnzymeMLDocument, name: str, id: str): + """Adds a parameter to the EnzymeMLDocument""" + + add_logger("ENZML") + + if enzmldoc.filter_parameters(name=name): + logger.info(f"Parameter {name} already exists in EnzymeMLDocument. Skipping...") + + return + + enzmldoc.add_to_parameters(name=name, id=name) # type: ignore + + +def _add_units_to_parameters( + doc: EnzymeMLDocument, + unit_mapping: dict[str, UnitDefinition], +): + """Adds units to the parameters in the EnzymeMLDocument""" + + add_logger("ENZML") + + has_error = False + + for param, unit in unit_mapping.items(): + if unit.__class__.__name__ != "UnitDefinition": + logger.error(f"Unit {unit} is not a UnitDefinition object. Skipping...") + has_error = True + continue + + doc.filter_parameters(name=param)[0].unit = unit + + if has_error: + raise ValueError( + "Assigning units to parameters failed. Check the logs for more info." + ) diff --git a/pyenzyme/logging.py b/pyenzyme/logging.py new file mode 100644 index 00000000..781ef209 --- /dev/null +++ b/pyenzyme/logging.py @@ -0,0 +1,45 @@ +import sys +from loguru import logger + + +def add_logger( + name: str, + channel=sys.stderr, +) -> None: + """Initialize the logger with the given name and module. + + Args: + name (str): The name of the logger. + channel (str, optional): The channel to log to. Defaults to sys.stderr. + + Returns: + None + + Example: + Will create a logger with the name "SBML" and log to the file "file.log": + + >> add_logger("SBML", "test", "file.log") + + Will create a logger with the name "SBML" and log to the standard error channel: + + >> add_logger("SBML", "test") + + Will create a logger with the name "SBML" and log to the standard output channel: + + >> import sys + >> add_logger("SBML", "test", sys.stdout) + + """ + format = ( + " %s\t{module: >10}\t{level}: {message}" % name + ) + + if isinstance(channel, str): + format = "{time:YYYY-MM-DD HH:mm:ss} %s {level}: {message}" % name + + logger.remove() + logger.add( + channel, + colorize=True, + format=format, + ) diff --git a/pyenzyme/model.py b/pyenzyme/model.py new file mode 100644 index 00000000..a2553787 --- /dev/null +++ b/pyenzyme/model.py @@ -0,0 +1,2373 @@ +## This is a generated file. Do not modify it manually! + +from __future__ import annotations +from pydantic import BaseModel, Field, ConfigDict +from typing import Optional, Generic, TypeVar +from enum import Enum +from uuid import uuid4 + +# Filter Wrapper definition used to filter a list of objects +# based on their attributes +Cls = TypeVar("Cls") + +class FilterWrapper(Generic[Cls]): + """Wrapper class to filter a list of objects based on their attributes""" + + def __init__(self, collection: list[Cls], **kwargs): + self.collection = collection + self.kwargs = kwargs + + def filter(self) -> list[Cls]: + for key, value in self.kwargs.items(): + self.collection = [ + item for item in self.collection if self._fetch_attr(key, item) == value + ] + return self.collection + + def _fetch_attr(self, name: str, item: Cls): + try: + return getattr(item, name) + except AttributeError: + raise AttributeError(f"{item} does not have attribute {name}") + + +# JSON-LD Helper Functions +def add_namespace(obj, prefix: str | None, iri: str | None): + """Adds a namespace to the JSON-LD context + + Args: + prefix (str): The prefix to add + iri (str): The IRI to add + """ + if prefix is None and iri is None: + return + elif prefix and iri is None: + raise ValueError("If prefix is provided, iri must also be provided") + elif iri and prefix is None: + raise ValueError("If iri is provided, prefix must also be provided") + + obj.ld_context[prefix] = iri # type: ignore + +def validate_prefix(term: str | dict, prefix: str): + """Validates that a term is prefixed with a given prefix + + Args: + term (str): The term to validate + prefix (str): The prefix to validate against + + Returns: + bool: True if the term is prefixed with the prefix, False otherwise + """ + + if isinstance(term, dict) and not term["@id"].startswith(prefix + ":"): + raise ValueError(f"Term {term} is not prefixed with {prefix}") + elif isinstance(term, str) and not term.startswith(prefix + ":"): + raise ValueError(f"Term {term} is not prefixed with {prefix}") + +# Model Definitions + +class EnzymeMLDocument(BaseModel): + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore + + name: str + references: list[str] = Field(default_factory=list) + created: Optional[str] = Field(default=None) + modified: Optional[str] = Field(default=None) + creators: list[Creator] = Field(default_factory=list) + vessels: list[Vessel] = Field(default_factory=list) + proteins: list[Protein] = Field(default_factory=list) + complexes: list[Complex] = Field(default_factory=list) + small_molecules: list[SmallMolecule] = Field(default_factory=list) + reactions: list[Reaction] = Field(default_factory=list) + measurements: list[Measurement] = Field(default_factory=list) + equations: list[Equation] = Field(default_factory=list) + parameters: list[Parameter] = Field(default_factory=list) + + # JSON-LD fields + ld_id: str = Field( + alias="@id", + default_factory=lambda: "enzml:EnzymeMLDocument/" + str(uuid4()) + ) + ld_type: list[str] = Field( + alias="@type", + default_factory = lambda: [ + "enzml:EnzymeMLDocument", + ], + ) + ld_context: dict[str, str | dict] = Field( + alias="@context", + default_factory = lambda: { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "name": "schema:title", + "references": { + "@id": "schema:citation", + "@type": "@id", + }, + "created": "schema:dateCreated", + "modified": "schema:dateModified", + "creators": "schema:creator", + } + ) + + def filter_creators(self, **kwargs) -> list[Creator]: + """Filters the creators attribute based on the given kwargs + + Args: + **kwargs: The attributes to filter by. + + Returns: + list[Creator]: The filtered list of Creator objects + """ + + return FilterWrapper[Creator](self.creators, **kwargs).filter() + + def filter_vessels(self, **kwargs) -> list[Vessel]: + """Filters the vessels attribute based on the given kwargs + + Args: + **kwargs: The attributes to filter by. + + Returns: + list[Vessel]: The filtered list of Vessel objects + """ + + return FilterWrapper[Vessel](self.vessels, **kwargs).filter() + + def filter_proteins(self, **kwargs) -> list[Protein]: + """Filters the proteins attribute based on the given kwargs + + Args: + **kwargs: The attributes to filter by. + + Returns: + list[Protein]: The filtered list of Protein objects + """ + + return FilterWrapper[Protein](self.proteins, **kwargs).filter() + + def filter_complexes(self, **kwargs) -> list[Complex]: + """Filters the complexes attribute based on the given kwargs + + Args: + **kwargs: The attributes to filter by. + + Returns: + list[Complex]: The filtered list of Complex objects + """ + + return FilterWrapper[Complex](self.complexes, **kwargs).filter() + + def filter_small_molecules(self, **kwargs) -> list[SmallMolecule]: + """Filters the small_molecules attribute based on the given kwargs + + Args: + **kwargs: The attributes to filter by. + + Returns: + list[SmallMolecule]: The filtered list of SmallMolecule objects + """ + + return FilterWrapper[SmallMolecule](self.small_molecules, **kwargs).filter() + + def filter_reactions(self, **kwargs) -> list[Reaction]: + """Filters the reactions attribute based on the given kwargs + + Args: + **kwargs: The attributes to filter by. + + Returns: + list[Reaction]: The filtered list of Reaction objects + """ + + return FilterWrapper[Reaction](self.reactions, **kwargs).filter() + + def filter_measurements(self, **kwargs) -> list[Measurement]: + """Filters the measurements attribute based on the given kwargs + + Args: + **kwargs: The attributes to filter by. + + Returns: + list[Measurement]: The filtered list of Measurement objects + """ + + return FilterWrapper[Measurement](self.measurements, **kwargs).filter() + + def filter_equations(self, **kwargs) -> list[Equation]: + """Filters the equations attribute based on the given kwargs + + Args: + **kwargs: The attributes to filter by. + + Returns: + list[Equation]: The filtered list of Equation objects + """ + + return FilterWrapper[Equation](self.equations, **kwargs).filter() + + def filter_parameters(self, **kwargs) -> list[Parameter]: + """Filters the parameters attribute based on the given kwargs + + Args: + **kwargs: The attributes to filter by. + + Returns: + list[Parameter]: The filtered list of Parameter objects + """ + + return FilterWrapper[Parameter](self.parameters, **kwargs).filter() + + + def set_attr_term( + self, + attr: str, + term: str | dict, + prefix: str | None = None, + iri: str | None = None + ): + """Sets the term for a given attribute in the JSON-LD object + + Example: + # Using an IRI term + >> obj.set_attr_term("name", "http://schema.org/givenName") + + # Using a prefix and term + >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") + + # Using a dictionary term + >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) + + Args: + attr (str): The attribute to set the term for + term (str | dict): The term to set for the attribute + + Raises: + AssertionError: If the attribute is not found in the model + """ + + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_context[attr] = term + + def add_type_term( + self, + term: str, + prefix: str | None = None, + iri: str | None = None + ): + """Adds a term to the @type field of the JSON-LD object + + Example: + # Using a term + >> obj.add_type_term("https://schema.org/Person") + + # Using a prefixed term + >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") + + Args: + term (str): The term to add to the @type field + prefix (str, optional): The prefix to use for the term. Defaults to None. + iri (str, optional): The IRI to use for the term prefix. Defaults to None. + + Raises: + ValueError: If prefix is provided but iri is not + ValueError: If iri is provided but prefix is not + """ + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_type.append(term) + + + def add_to_creators( + self, + given_name: str, + family_name: str, + mail: str, + **kwargs, + ): + params = { + "given_name": given_name, + "family_name": family_name, + "mail": mail + } + + if "id" in kwargs: + params["id"] = kwargs["id"] + + self.creators.append( + Creator(**params) + ) + + return self.creators[-1] + + + def add_to_vessels( + self, + id: str, + name: str, + volume: float, + unit: UnitDefinition, + constant: bool= True, + **kwargs, + ): + params = { + "id": id, + "name": name, + "volume": volume, + "unit": unit, + "constant": constant + } + + if "id" in kwargs: + params["id"] = kwargs["id"] + + self.vessels.append( + Vessel(**params) + ) + + return self.vessels[-1] + + + def add_to_proteins( + self, + id: str, + name: str, + constant: bool= False, + sequence: Optional[str]= None, + vessel_id: Optional[str]= None, + ecnumber: Optional[str]= None, + organism: Optional[str]= None, + organism_tax_id: Optional[str]= None, + references: list[str]= [], + **kwargs, + ): + params = { + "id": id, + "name": name, + "constant": constant, + "sequence": sequence, + "vessel_id": vessel_id, + "ecnumber": ecnumber, + "organism": organism, + "organism_tax_id": organism_tax_id, + "references": references + } + + if "id" in kwargs: + params["id"] = kwargs["id"] + + self.proteins.append( + Protein(**params) + ) + + return self.proteins[-1] + + + def add_to_complexes( + self, + id: str, + participants: list[str]= [], + **kwargs, + ): + params = { + "id": id, + "participants": participants + } + + if "id" in kwargs: + params["id"] = kwargs["id"] + + self.complexes.append( + Complex(**params) + ) + + return self.complexes[-1] + + + def add_to_small_molecules( + self, + id: str, + name: str, + constant: bool= False, + vessel_id: Optional[str]= None, + canonical_smiles: Optional[str]= None, + inchikey: Optional[str]= None, + references: list[str]= [], + **kwargs, + ): + params = { + "id": id, + "name": name, + "constant": constant, + "vessel_id": vessel_id, + "canonical_smiles": canonical_smiles, + "inchikey": inchikey, + "references": references + } + + if "id" in kwargs: + params["id"] = kwargs["id"] + + self.small_molecules.append( + SmallMolecule(**params) + ) + + return self.small_molecules[-1] + + + def add_to_reactions( + self, + id: str, + name: str, + reversible: bool= False, + kinetic_law: Optional[Equation]= None, + species: list[ReactionElement]= [], + modifiers: list[str]= [], + **kwargs, + ): + params = { + "id": id, + "name": name, + "reversible": reversible, + "kinetic_law": kinetic_law, + "species": species, + "modifiers": modifiers + } + + if "id" in kwargs: + params["id"] = kwargs["id"] + + self.reactions.append( + Reaction(**params) + ) + + return self.reactions[-1] + + + def add_to_measurements( + self, + id: str, + name: str, + species: list[MeasurementData]= [], + group_id: Optional[str]= None, + ph: Optional[float]= None, + temperature: Optional[float]= None, + temperature_unit: Optional[UnitDefinition]= None, + **kwargs, + ): + params = { + "id": id, + "name": name, + "species": species, + "group_id": group_id, + "ph": ph, + "temperature": temperature, + "temperature_unit": temperature_unit + } + + if "id" in kwargs: + params["id"] = kwargs["id"] + + self.measurements.append( + Measurement(**params) + ) + + return self.measurements[-1] + + + def add_to_equations( + self, + unit: UnitDefinition, + equation_type: EquationType, + equation: str, + species_id: Optional[str]= None, + id: Optional[str]= None, + variables: list[EqVariable]= [], + parameters: list[EqParameter]= [], + **kwargs, + ): + params = { + "unit": unit, + "equation_type": equation_type, + "equation": equation, + "species_id": species_id, + "id": id, + "variables": variables, + "parameters": parameters + } + + if "id" in kwargs: + params["id"] = kwargs["id"] + + self.equations.append( + Equation(**params) + ) + + return self.equations[-1] + + + def add_to_parameters( + self, + id: str, + name: str, + value: Optional[float]= None, + unit: Optional[UnitDefinition]= None, + initial_value: Optional[float]= None, + upper: Optional[float]= None, + lower: Optional[float]= None, + stderr: Optional[float]= None, + constant: Optional[bool]= True, + **kwargs, + ): + params = { + "id": id, + "name": name, + "value": value, + "unit": unit, + "initial_value": initial_value, + "upper": upper, + "lower": lower, + "stderr": stderr, + "constant": constant + } + + if "id" in kwargs: + params["id"] = kwargs["id"] + + self.parameters.append( + Parameter(**params) + ) + + return self.parameters[-1] + +class Creator(BaseModel): + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore + + given_name: str + family_name: str + mail: str + + # JSON-LD fields + ld_id: str = Field( + alias="@id", + default_factory=lambda: "enzml:Creator/" + str(uuid4()) + ) + ld_type: list[str] = Field( + alias="@type", + default_factory = lambda: [ + "enzml:Creator","schema:person" + ], + ) + ld_context: dict[str, str | dict] = Field( + alias="@context", + default_factory = lambda: { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "given_name": "schema:givenName", + "family_name": "schema:familyName", + "mail": "schema:email", + } + ) + + + def set_attr_term( + self, + attr: str, + term: str | dict, + prefix: str | None = None, + iri: str | None = None + ): + """Sets the term for a given attribute in the JSON-LD object + + Example: + # Using an IRI term + >> obj.set_attr_term("name", "http://schema.org/givenName") + + # Using a prefix and term + >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") + + # Using a dictionary term + >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) + + Args: + attr (str): The attribute to set the term for + term (str | dict): The term to set for the attribute + + Raises: + AssertionError: If the attribute is not found in the model + """ + + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_context[attr] = term + + def add_type_term( + self, + term: str, + prefix: str | None = None, + iri: str | None = None + ): + """Adds a term to the @type field of the JSON-LD object + + Example: + # Using a term + >> obj.add_type_term("https://schema.org/Person") + + # Using a prefixed term + >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") + + Args: + term (str): The term to add to the @type field + prefix (str, optional): The prefix to use for the term. Defaults to None. + iri (str, optional): The IRI to use for the term prefix. Defaults to None. + + Raises: + ValueError: If prefix is provided but iri is not + ValueError: If iri is provided but prefix is not + """ + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_type.append(term) + + +class Vessel(BaseModel): + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore + + id: str + name: str + volume: float + unit: UnitDefinition + constant: bool = True + + # JSON-LD fields + ld_id: str = Field( + alias="@id", + default_factory=lambda: "enzml:Vessel/" + str(uuid4()) + ) + ld_type: list[str] = Field( + alias="@type", + default_factory = lambda: [ + "enzml:Vessel","OBO:OBI_0400081" + ], + ) + ld_context: dict[str, str | dict] = Field( + alias="@context", + default_factory = lambda: { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id", + }, + "name": "schema:name", + "volume": "OBO:OBI_0002139", + } + ) + + + def set_attr_term( + self, + attr: str, + term: str | dict, + prefix: str | None = None, + iri: str | None = None + ): + """Sets the term for a given attribute in the JSON-LD object + + Example: + # Using an IRI term + >> obj.set_attr_term("name", "http://schema.org/givenName") + + # Using a prefix and term + >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") + + # Using a dictionary term + >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) + + Args: + attr (str): The attribute to set the term for + term (str | dict): The term to set for the attribute + + Raises: + AssertionError: If the attribute is not found in the model + """ + + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_context[attr] = term + + def add_type_term( + self, + term: str, + prefix: str | None = None, + iri: str | None = None + ): + """Adds a term to the @type field of the JSON-LD object + + Example: + # Using a term + >> obj.add_type_term("https://schema.org/Person") + + # Using a prefixed term + >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") + + Args: + term (str): The term to add to the @type field + prefix (str, optional): The prefix to use for the term. Defaults to None. + iri (str, optional): The IRI to use for the term prefix. Defaults to None. + + Raises: + ValueError: If prefix is provided but iri is not + ValueError: If iri is provided but prefix is not + """ + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_type.append(term) + + +class Protein(BaseModel): + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore + + id: str + name: str + constant: bool = False + sequence: Optional[str] = Field(default=None) + vessel_id: Optional[str] = Field(default=None) + ecnumber: Optional[str] = Field(default=None) + organism: Optional[str] = Field(default=None) + organism_tax_id: Optional[str] = Field(default=None) + references: list[str] = Field(default_factory=list) + + # JSON-LD fields + ld_id: str = Field( + alias="@id", + default_factory=lambda: "enzml:Protein/" + str(uuid4()) + ) + ld_type: list[str] = Field( + alias="@type", + default_factory = lambda: [ + "enzml:Protein","schema:Protein" + ], + ) + ld_context: dict[str, str | dict] = Field( + alias="@context", + default_factory = lambda: { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@type": "@id", + }, + "name": "schema:name", + "sequence": "OBO:GSSO_007262", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id", + }, + "organism": "OBO:OBI_0100026", + "organism_tax_id": { + "@type": "@id", + }, + "references": { + "@id": "schema:citation", + "@type": "@id", + }, + } + ) + + + def set_attr_term( + self, + attr: str, + term: str | dict, + prefix: str | None = None, + iri: str | None = None + ): + """Sets the term for a given attribute in the JSON-LD object + + Example: + # Using an IRI term + >> obj.set_attr_term("name", "http://schema.org/givenName") + + # Using a prefix and term + >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") + + # Using a dictionary term + >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) + + Args: + attr (str): The attribute to set the term for + term (str | dict): The term to set for the attribute + + Raises: + AssertionError: If the attribute is not found in the model + """ + + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_context[attr] = term + + def add_type_term( + self, + term: str, + prefix: str | None = None, + iri: str | None = None + ): + """Adds a term to the @type field of the JSON-LD object + + Example: + # Using a term + >> obj.add_type_term("https://schema.org/Person") + + # Using a prefixed term + >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") + + Args: + term (str): The term to add to the @type field + prefix (str, optional): The prefix to use for the term. Defaults to None. + iri (str, optional): The IRI to use for the term prefix. Defaults to None. + + Raises: + ValueError: If prefix is provided but iri is not + ValueError: If iri is provided but prefix is not + """ + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_type.append(term) + + +class Complex(BaseModel): + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore + + id: str + participants: list[str] = Field(default_factory=list) + + # JSON-LD fields + ld_id: str = Field( + alias="@id", + default_factory=lambda: "enzml:Complex/" + str(uuid4()) + ) + ld_type: list[str] = Field( + alias="@type", + default_factory = lambda: [ + "enzml:Complex", + ], + ) + ld_context: dict[str, str | dict] = Field( + alias="@context", + default_factory = lambda: { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id", + }, + "participants": { + "@type": "@id", + }, + } + ) + + + def set_attr_term( + self, + attr: str, + term: str | dict, + prefix: str | None = None, + iri: str | None = None + ): + """Sets the term for a given attribute in the JSON-LD object + + Example: + # Using an IRI term + >> obj.set_attr_term("name", "http://schema.org/givenName") + + # Using a prefix and term + >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") + + # Using a dictionary term + >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) + + Args: + attr (str): The attribute to set the term for + term (str | dict): The term to set for the attribute + + Raises: + AssertionError: If the attribute is not found in the model + """ + + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_context[attr] = term + + def add_type_term( + self, + term: str, + prefix: str | None = None, + iri: str | None = None + ): + """Adds a term to the @type field of the JSON-LD object + + Example: + # Using a term + >> obj.add_type_term("https://schema.org/Person") + + # Using a prefixed term + >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") + + Args: + term (str): The term to add to the @type field + prefix (str, optional): The prefix to use for the term. Defaults to None. + iri (str, optional): The IRI to use for the term prefix. Defaults to None. + + Raises: + ValueError: If prefix is provided but iri is not + ValueError: If iri is provided but prefix is not + """ + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_type.append(term) + + +class SmallMolecule(BaseModel): + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore + + id: str + name: str + constant: bool = False + vessel_id: Optional[str] = Field(default=None) + canonical_smiles: Optional[str] = Field(default=None) + inchikey: Optional[str] = Field(default=None) + references: list[str] = Field(default_factory=list) + + # JSON-LD fields + ld_id: str = Field( + alias="@id", + default_factory=lambda: "enzml:SmallMolecule/" + str(uuid4()) + ) + ld_type: list[str] = Field( + alias="@type", + default_factory = lambda: [ + "enzml:SmallMolecule", + ], + ) + ld_context: dict[str, str | dict] = Field( + alias="@context", + default_factory = lambda: { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id", + }, + "name": "schema:name", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id", + }, + "references": { + "@id": "schema:citation", + "@type": "@id", + }, + } + ) + + + def set_attr_term( + self, + attr: str, + term: str | dict, + prefix: str | None = None, + iri: str | None = None + ): + """Sets the term for a given attribute in the JSON-LD object + + Example: + # Using an IRI term + >> obj.set_attr_term("name", "http://schema.org/givenName") + + # Using a prefix and term + >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") + + # Using a dictionary term + >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) + + Args: + attr (str): The attribute to set the term for + term (str | dict): The term to set for the attribute + + Raises: + AssertionError: If the attribute is not found in the model + """ + + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_context[attr] = term + + def add_type_term( + self, + term: str, + prefix: str | None = None, + iri: str | None = None + ): + """Adds a term to the @type field of the JSON-LD object + + Example: + # Using a term + >> obj.add_type_term("https://schema.org/Person") + + # Using a prefixed term + >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") + + Args: + term (str): The term to add to the @type field + prefix (str, optional): The prefix to use for the term. Defaults to None. + iri (str, optional): The IRI to use for the term prefix. Defaults to None. + + Raises: + ValueError: If prefix is provided but iri is not + ValueError: If iri is provided but prefix is not + """ + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_type.append(term) + + +class Reaction(BaseModel): + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore + + id: str + name: str + reversible: bool = False + kinetic_law: Optional[Equation] = Field(default=None) + species: list[ReactionElement] = Field(default_factory=list) + modifiers: list[str] = Field(default_factory=list) + + # JSON-LD fields + ld_id: str = Field( + alias="@id", + default_factory=lambda: "enzml:Reaction/" + str(uuid4()) + ) + ld_type: list[str] = Field( + alias="@type", + default_factory = lambda: [ + "enzml:Reaction", + ], + ) + ld_context: dict[str, str | dict] = Field( + alias="@context", + default_factory = lambda: { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id", + }, + "modifiers": { + "@type": "@id", + }, + } + ) + + def filter_species(self, **kwargs) -> list[ReactionElement]: + """Filters the species attribute based on the given kwargs + + Args: + **kwargs: The attributes to filter by. + + Returns: + list[ReactionElement]: The filtered list of ReactionElement objects + """ + + return FilterWrapper[ReactionElement](self.species, **kwargs).filter() + + + def set_attr_term( + self, + attr: str, + term: str | dict, + prefix: str | None = None, + iri: str | None = None + ): + """Sets the term for a given attribute in the JSON-LD object + + Example: + # Using an IRI term + >> obj.set_attr_term("name", "http://schema.org/givenName") + + # Using a prefix and term + >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") + + # Using a dictionary term + >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) + + Args: + attr (str): The attribute to set the term for + term (str | dict): The term to set for the attribute + + Raises: + AssertionError: If the attribute is not found in the model + """ + + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_context[attr] = term + + def add_type_term( + self, + term: str, + prefix: str | None = None, + iri: str | None = None + ): + """Adds a term to the @type field of the JSON-LD object + + Example: + # Using a term + >> obj.add_type_term("https://schema.org/Person") + + # Using a prefixed term + >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") + + Args: + term (str): The term to add to the @type field + prefix (str, optional): The prefix to use for the term. Defaults to None. + iri (str, optional): The IRI to use for the term prefix. Defaults to None. + + Raises: + ValueError: If prefix is provided but iri is not + ValueError: If iri is provided but prefix is not + """ + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_type.append(term) + + + def add_to_species( + self, + species_id: str, + stoichiometry: float, + **kwargs, + ): + params = { + "species_id": species_id, + "stoichiometry": stoichiometry + } + + if "id" in kwargs: + params["id"] = kwargs["id"] + + self.species.append( + ReactionElement(**params) + ) + + return self.species[-1] + + +class ReactionElement(BaseModel): + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore + + species_id: str + stoichiometry: float + + # JSON-LD fields + ld_id: str = Field( + alias="@id", + default_factory=lambda: "enzml:ReactionElement/" + str(uuid4()) + ) + ld_type: list[str] = Field( + alias="@type", + default_factory = lambda: [ + "enzml:ReactionElement", + ], + ) + ld_context: dict[str, str | dict] = Field( + alias="@context", + default_factory = lambda: { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id", + }, + } + ) + + + def set_attr_term( + self, + attr: str, + term: str | dict, + prefix: str | None = None, + iri: str | None = None + ): + """Sets the term for a given attribute in the JSON-LD object + + Example: + # Using an IRI term + >> obj.set_attr_term("name", "http://schema.org/givenName") + + # Using a prefix and term + >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") + + # Using a dictionary term + >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) + + Args: + attr (str): The attribute to set the term for + term (str | dict): The term to set for the attribute + + Raises: + AssertionError: If the attribute is not found in the model + """ + + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_context[attr] = term + + def add_type_term( + self, + term: str, + prefix: str | None = None, + iri: str | None = None + ): + """Adds a term to the @type field of the JSON-LD object + + Example: + # Using a term + >> obj.add_type_term("https://schema.org/Person") + + # Using a prefixed term + >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") + + Args: + term (str): The term to add to the @type field + prefix (str, optional): The prefix to use for the term. Defaults to None. + iri (str, optional): The IRI to use for the term prefix. Defaults to None. + + Raises: + ValueError: If prefix is provided but iri is not + ValueError: If iri is provided but prefix is not + """ + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_type.append(term) + + +class Equation(BaseModel): + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore + + unit: UnitDefinition + equation_type: EquationType + equation: str + species_id: Optional[str] = Field(default=None) + id: Optional[str] = Field(default=None) + variables: list[EqVariable] = Field(default_factory=list) + parameters: list[EqParameter] = Field(default_factory=list) + + # JSON-LD fields + ld_id: str = Field( + alias="@id", + default_factory=lambda: "enzml:Equation/" + str(uuid4()) + ) + ld_type: list[str] = Field( + alias="@type", + default_factory = lambda: [ + "enzml:Equation", + ], + ) + ld_context: dict[str, str | dict] = Field( + alias="@context", + default_factory = lambda: { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id", + }, + "id": { + "@type": "@id", + }, + } + ) + + def filter_variables(self, **kwargs) -> list[EqVariable]: + """Filters the variables attribute based on the given kwargs + + Args: + **kwargs: The attributes to filter by. + + Returns: + list[EqVariable]: The filtered list of EqVariable objects + """ + + return FilterWrapper[EqVariable](self.variables, **kwargs).filter() + + def filter_parameters(self, **kwargs) -> list[EqParameter]: + """Filters the parameters attribute based on the given kwargs + + Args: + **kwargs: The attributes to filter by. + + Returns: + list[EqParameter]: The filtered list of EqParameter objects + """ + + return FilterWrapper[EqParameter](self.parameters, **kwargs).filter() + + + def set_attr_term( + self, + attr: str, + term: str | dict, + prefix: str | None = None, + iri: str | None = None + ): + """Sets the term for a given attribute in the JSON-LD object + + Example: + # Using an IRI term + >> obj.set_attr_term("name", "http://schema.org/givenName") + + # Using a prefix and term + >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") + + # Using a dictionary term + >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) + + Args: + attr (str): The attribute to set the term for + term (str | dict): The term to set for the attribute + + Raises: + AssertionError: If the attribute is not found in the model + """ + + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_context[attr] = term + + def add_type_term( + self, + term: str, + prefix: str | None = None, + iri: str | None = None + ): + """Adds a term to the @type field of the JSON-LD object + + Example: + # Using a term + >> obj.add_type_term("https://schema.org/Person") + + # Using a prefixed term + >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") + + Args: + term (str): The term to add to the @type field + prefix (str, optional): The prefix to use for the term. Defaults to None. + iri (str, optional): The IRI to use for the term prefix. Defaults to None. + + Raises: + ValueError: If prefix is provided but iri is not + ValueError: If iri is provided but prefix is not + """ + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_type.append(term) + + + def add_to_variables( + self, + id: str, + name: str, + symbol: Optional[str]= None, + **kwargs, + ): + params = { + "id": id, + "name": name, + "symbol": symbol + } + + if "id" in kwargs: + params["id"] = kwargs["id"] + + self.variables.append( + EqVariable(**params) + ) + + return self.variables[-1] + + + def add_to_parameters( + self, + id: str, + name: str, + symbol: Optional[str]= None, + value: Optional[float]= None, + **kwargs, + ): + params = { + "id": id, + "name": name, + "symbol": symbol, + "value": value + } + + if "id" in kwargs: + params["id"] = kwargs["id"] + + self.parameters.append( + EqParameter(**params) + ) + + return self.parameters[-1] + +class Parameter(BaseModel): + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore + + id: str + name: str + value: Optional[float] = Field(default=None) + unit: Optional[UnitDefinition] = Field(default=None) + initial_value: Optional[float] = Field(default=None) + upper: Optional[float] = Field(default=None) + lower: Optional[float] = Field(default=None) + stderr: Optional[float] = Field(default=None) + constant: bool = True + + # JSON-LD fields + ld_id: str = Field( + alias="@id", + default_factory=lambda: "enzml:Parameter/" + str(uuid4()) + ) + ld_type: list[str] = Field( + alias="@type", + default_factory = lambda: [ + "enzml:Parameter", + ], + ) + ld_context: dict[str, str | dict] = Field( + alias="@context", + default_factory = lambda: { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id", + }, + } + ) + + + def set_attr_term( + self, + attr: str, + term: str | dict, + prefix: str | None = None, + iri: str | None = None + ): + """Sets the term for a given attribute in the JSON-LD object + + Example: + # Using an IRI term + >> obj.set_attr_term("name", "http://schema.org/givenName") + + # Using a prefix and term + >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") + + # Using a dictionary term + >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) + + Args: + attr (str): The attribute to set the term for + term (str | dict): The term to set for the attribute + + Raises: + AssertionError: If the attribute is not found in the model + """ + + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_context[attr] = term + + def add_type_term( + self, + term: str, + prefix: str | None = None, + iri: str | None = None + ): + """Adds a term to the @type field of the JSON-LD object + + Example: + # Using a term + >> obj.add_type_term("https://schema.org/Person") + + # Using a prefixed term + >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") + + Args: + term (str): The term to add to the @type field + prefix (str, optional): The prefix to use for the term. Defaults to None. + iri (str, optional): The IRI to use for the term prefix. Defaults to None. + + Raises: + ValueError: If prefix is provided but iri is not + ValueError: If iri is provided but prefix is not + """ + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_type.append(term) + + +class Measurement(BaseModel): + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore + + id: str + name: str + species: list[MeasurementData] = Field(default_factory=list) + group_id: Optional[str] = Field(default=None) + ph: Optional[float] = Field(default=None) + temperature: Optional[float] = Field(default=None) + temperature_unit: Optional[UnitDefinition] = Field(default=None) + + # JSON-LD fields + ld_id: str = Field( + alias="@id", + default_factory=lambda: "enzml:Measurement/" + str(uuid4()) + ) + ld_type: list[str] = Field( + alias="@type", + default_factory = lambda: [ + "enzml:Measurement", + ], + ) + ld_context: dict[str, str | dict] = Field( + alias="@context", + default_factory = lambda: { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id", + }, + "group_id": { + "@type": "@id", + }, + } + ) + + def filter_species(self, **kwargs) -> list[MeasurementData]: + """Filters the species attribute based on the given kwargs + + Args: + **kwargs: The attributes to filter by. + + Returns: + list[MeasurementData]: The filtered list of MeasurementData objects + """ + + return FilterWrapper[MeasurementData](self.species, **kwargs).filter() + + + def set_attr_term( + self, + attr: str, + term: str | dict, + prefix: str | None = None, + iri: str | None = None + ): + """Sets the term for a given attribute in the JSON-LD object + + Example: + # Using an IRI term + >> obj.set_attr_term("name", "http://schema.org/givenName") + + # Using a prefix and term + >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") + + # Using a dictionary term + >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) + + Args: + attr (str): The attribute to set the term for + term (str | dict): The term to set for the attribute + + Raises: + AssertionError: If the attribute is not found in the model + """ + + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_context[attr] = term + + def add_type_term( + self, + term: str, + prefix: str | None = None, + iri: str | None = None + ): + """Adds a term to the @type field of the JSON-LD object + + Example: + # Using a term + >> obj.add_type_term("https://schema.org/Person") + + # Using a prefixed term + >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") + + Args: + term (str): The term to add to the @type field + prefix (str, optional): The prefix to use for the term. Defaults to None. + iri (str, optional): The IRI to use for the term prefix. Defaults to None. + + Raises: + ValueError: If prefix is provided but iri is not + ValueError: If iri is provided but prefix is not + """ + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_type.append(term) + + + def add_to_species( + self, + species_id: str, + init_conc: float, + data_type: DataTypes, + data_unit: UnitDefinition, + time_unit: UnitDefinition, + time: list[float]= [], + data: list[float]= [], + is_calculated: bool= False, + **kwargs, + ): + params = { + "species_id": species_id, + "init_conc": init_conc, + "data_type": data_type, + "data_unit": data_unit, + "time_unit": time_unit, + "time": time, + "data": data, + "is_calculated": is_calculated + } + + if "id" in kwargs: + params["id"] = kwargs["id"] + + self.species.append( + MeasurementData(**params) + ) + + return self.species[-1] + + +class MeasurementData(BaseModel): + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore + + species_id: str + init_conc: float + data_type: DataTypes + data_unit: UnitDefinition + time_unit: UnitDefinition + time: list[float] = Field(default_factory=list) + data: list[float] = Field(default_factory=list) + is_calculated: bool = False + + # JSON-LD fields + ld_id: str = Field( + alias="@id", + default_factory=lambda: "enzml:MeasurementData/" + str(uuid4()) + ) + ld_type: list[str] = Field( + alias="@type", + default_factory = lambda: [ + "enzml:MeasurementData", + ], + ) + ld_context: dict[str, str | dict] = Field( + alias="@context", + default_factory = lambda: { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id", + }, + } + ) + + + def set_attr_term( + self, + attr: str, + term: str | dict, + prefix: str | None = None, + iri: str | None = None + ): + """Sets the term for a given attribute in the JSON-LD object + + Example: + # Using an IRI term + >> obj.set_attr_term("name", "http://schema.org/givenName") + + # Using a prefix and term + >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") + + # Using a dictionary term + >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) + + Args: + attr (str): The attribute to set the term for + term (str | dict): The term to set for the attribute + + Raises: + AssertionError: If the attribute is not found in the model + """ + + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_context[attr] = term + + def add_type_term( + self, + term: str, + prefix: str | None = None, + iri: str | None = None + ): + """Adds a term to the @type field of the JSON-LD object + + Example: + # Using a term + >> obj.add_type_term("https://schema.org/Person") + + # Using a prefixed term + >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") + + Args: + term (str): The term to add to the @type field + prefix (str, optional): The prefix to use for the term. Defaults to None. + iri (str, optional): The IRI to use for the term prefix. Defaults to None. + + Raises: + ValueError: If prefix is provided but iri is not + ValueError: If iri is provided but prefix is not + """ + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_type.append(term) + + +class UnitDefinition(BaseModel): + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore + + id: Optional[str] = Field(default=None) + name: Optional[str] = Field(default=None) + base_units: list[BaseUnit] = Field(default_factory=list) + + # JSON-LD fields + ld_id: str = Field( + alias="@id", + default_factory=lambda: "enzml:UnitDefinition/" + str(uuid4()) + ) + ld_type: list[str] = Field( + alias="@type", + default_factory = lambda: [ + "enzml:UnitDefinition", + ], + ) + ld_context: dict[str, str | dict] = Field( + alias="@context", + default_factory = lambda: { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + } + ) + + def filter_base_units(self, **kwargs) -> list[BaseUnit]: + """Filters the base_units attribute based on the given kwargs + + Args: + **kwargs: The attributes to filter by. + + Returns: + list[BaseUnit]: The filtered list of BaseUnit objects + """ + + return FilterWrapper[BaseUnit](self.base_units, **kwargs).filter() + + + def set_attr_term( + self, + attr: str, + term: str | dict, + prefix: str | None = None, + iri: str | None = None + ): + """Sets the term for a given attribute in the JSON-LD object + + Example: + # Using an IRI term + >> obj.set_attr_term("name", "http://schema.org/givenName") + + # Using a prefix and term + >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") + + # Using a dictionary term + >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) + + Args: + attr (str): The attribute to set the term for + term (str | dict): The term to set for the attribute + + Raises: + AssertionError: If the attribute is not found in the model + """ + + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_context[attr] = term + + def add_type_term( + self, + term: str, + prefix: str | None = None, + iri: str | None = None + ): + """Adds a term to the @type field of the JSON-LD object + + Example: + # Using a term + >> obj.add_type_term("https://schema.org/Person") + + # Using a prefixed term + >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") + + Args: + term (str): The term to add to the @type field + prefix (str, optional): The prefix to use for the term. Defaults to None. + iri (str, optional): The IRI to use for the term prefix. Defaults to None. + + Raises: + ValueError: If prefix is provided but iri is not + ValueError: If iri is provided but prefix is not + """ + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_type.append(term) + + + def add_to_base_units( + self, + kind: UnitType, + exponent: int, + multiplier: Optional[float]= None, + scale: Optional[float]= None, + **kwargs, + ): + params = { + "kind": kind, + "exponent": exponent, + "multiplier": multiplier, + "scale": scale + } + + if "id" in kwargs: + params["id"] = kwargs["id"] + + self.base_units.append( + BaseUnit(**params) + ) + + return self.base_units[-1] + +class BaseUnit(BaseModel): + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore + + kind: UnitType + exponent: int + multiplier: Optional[float] = Field(default=None) + scale: Optional[float] = Field(default=None) + + # JSON-LD fields + ld_id: str = Field( + alias="@id", + default_factory=lambda: "enzml:BaseUnit/" + str(uuid4()) + ) + ld_type: list[str] = Field( + alias="@type", + default_factory = lambda: [ + "enzml:BaseUnit", + ], + ) + ld_context: dict[str, str | dict] = Field( + alias="@context", + default_factory = lambda: { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + } + ) + + + def set_attr_term( + self, + attr: str, + term: str | dict, + prefix: str | None = None, + iri: str | None = None + ): + """Sets the term for a given attribute in the JSON-LD object + + Example: + # Using an IRI term + >> obj.set_attr_term("name", "http://schema.org/givenName") + + # Using a prefix and term + >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") + + # Using a dictionary term + >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) + + Args: + attr (str): The attribute to set the term for + term (str | dict): The term to set for the attribute + + Raises: + AssertionError: If the attribute is not found in the model + """ + + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_context[attr] = term + + def add_type_term( + self, + term: str, + prefix: str | None = None, + iri: str | None = None + ): + """Adds a term to the @type field of the JSON-LD object + + Example: + # Using a term + >> obj.add_type_term("https://schema.org/Person") + + # Using a prefixed term + >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") + + Args: + term (str): The term to add to the @type field + prefix (str, optional): The prefix to use for the term. Defaults to None. + iri (str, optional): The IRI to use for the term prefix. Defaults to None. + + Raises: + ValueError: If prefix is provided but iri is not + ValueError: If iri is provided but prefix is not + """ + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_type.append(term) + + +class EqVariable(BaseModel): + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore + + id: str + name: str + symbol: Optional[str] = Field(default=None) + + # JSON-LD fields + ld_id: str = Field( + alias="@id", + default_factory=lambda: "enzml:EqVariable/" + str(uuid4()) + ) + ld_type: list[str] = Field( + alias="@type", + default_factory = lambda: [ + "enzml:EqVariable", + ], + ) + ld_context: dict[str, str | dict] = Field( + alias="@context", + default_factory = lambda: { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@type": "@id", + }, + } + ) + + + def set_attr_term( + self, + attr: str, + term: str | dict, + prefix: str | None = None, + iri: str | None = None + ): + """Sets the term for a given attribute in the JSON-LD object + + Example: + # Using an IRI term + >> obj.set_attr_term("name", "http://schema.org/givenName") + + # Using a prefix and term + >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") + + # Using a dictionary term + >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) + + Args: + attr (str): The attribute to set the term for + term (str | dict): The term to set for the attribute + + Raises: + AssertionError: If the attribute is not found in the model + """ + + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_context[attr] = term + + def add_type_term( + self, + term: str, + prefix: str | None = None, + iri: str | None = None + ): + """Adds a term to the @type field of the JSON-LD object + + Example: + # Using a term + >> obj.add_type_term("https://schema.org/Person") + + # Using a prefixed term + >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") + + Args: + term (str): The term to add to the @type field + prefix (str, optional): The prefix to use for the term. Defaults to None. + iri (str, optional): The IRI to use for the term prefix. Defaults to None. + + Raises: + ValueError: If prefix is provided but iri is not + ValueError: If iri is provided but prefix is not + """ + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_type.append(term) + + +class EqParameter(BaseModel): + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore + + id: str + name: str + symbol: Optional[str] = Field(default=None) + value: Optional[float] = Field(default=None) + + # JSON-LD fields + ld_id: str = Field( + alias="@id", + default_factory=lambda: "enzml:EqParameter/" + str(uuid4()) + ) + ld_type: list[str] = Field( + alias="@type", + default_factory = lambda: [ + "enzml:EqParameter", + ], + ) + ld_context: dict[str, str | dict] = Field( + alias="@context", + default_factory = lambda: { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@type": "@id", + }, + } + ) + + + def set_attr_term( + self, + attr: str, + term: str | dict, + prefix: str | None = None, + iri: str | None = None + ): + """Sets the term for a given attribute in the JSON-LD object + + Example: + # Using an IRI term + >> obj.set_attr_term("name", "http://schema.org/givenName") + + # Using a prefix and term + >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") + + # Using a dictionary term + >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) + + Args: + attr (str): The attribute to set the term for + term (str | dict): The term to set for the attribute + + Raises: + AssertionError: If the attribute is not found in the model + """ + + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_context[attr] = term + + def add_type_term( + self, + term: str, + prefix: str | None = None, + iri: str | None = None + ): + """Adds a term to the @type field of the JSON-LD object + + Example: + # Using a term + >> obj.add_type_term("https://schema.org/Person") + + # Using a prefixed term + >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") + + Args: + term (str): The term to add to the @type field + prefix (str, optional): The prefix to use for the term. Defaults to None. + iri (str, optional): The IRI to use for the term prefix. Defaults to None. + + Raises: + ValueError: If prefix is provided but iri is not + ValueError: If iri is provided but prefix is not + """ + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_type.append(term) + + +class DataTypes(Enum): + ABSORPTION = "abs" + BIOMASS = "biomass" + CONCENTRATION = "conc" + CONVERSION = "conversion" + FEED = "feed" + PEAK_AREA = "peak-area" + +class EquationType(Enum): + ASSIGNMENT = "assignment" + INITIAL_ASSIGNMENT = "initialAssignment" + ODE = "ode" + RATE_LAW = "rateLaw" + +class UnitType(Enum): + AMPERE = "ampere" + AVOGADRO = "avogadro" + BECQUEREL = "becquerel" + CANDELA = "candela" + COULOMB = "coulomb" + DIMENSIONLESS = "dimensionless" + FARAD = "farad" + GRAM = "gram" + GRAY = "gray" + HENRY = "henry" + HERTZ = "hertz" + ITEM = "item" + JOULE = "joule" + KATAL = "katal" + KELVIN = "kelvin" + KILOGRAM = "kilogram" + LITRE = "litre" + LUMEN = "lumen" + LUX = "lux" + METRE = "metre" + MOLE = "mole" + NEWTON = "newton" + OHM = "ohm" + PASCAL = "pascal" + RADIAN = "radian" + SECOND = "second" + SIEMENS = "siemens" + SIEVERT = "sievert" + STERADIAN = "steradian" + TESLA = "tesla" + VOLT = "volt" + WATT = "watt" + WEBER = "weber" \ No newline at end of file diff --git a/pyenzyme/rdf.py b/pyenzyme/rdf.py new file mode 100644 index 00000000..d608b3ed --- /dev/null +++ b/pyenzyme/rdf.py @@ -0,0 +1,34 @@ +import rdflib + + +def to_rdf_xml(*objs, keep_header: bool = False): + """Converts a JSON-LD string to RDF/XML format. + + Args: + json_ld (str): The JSON-LD string to convert. + keep_header (bool, optional): Whether to keep the XML header. Defaults to False. + Returns: + str: The RDF/XML string. + """ + + graph = rdflib.Graph() + + for obj in objs: + if not hasattr(obj, "ld_id"): + obj.ld_id = f"http://enzymeml.org/v2/{obj.__class__.__name__}/{obj.ld_id}" + to_exclude = { + key + for key, value in obj.ld_context.items() + if isinstance(value, dict) and value.get("@type", None) == "@id" + } + graph.parse( + data=obj.model_dump_json(by_alias=True, exclude=to_exclude), + format="json-ld", + ) + + rdf_xml = graph.serialize(format="xml") + + if not keep_header: + return "\n".join(rdf_xml.split("\n")[1:]) + else: + return rdf_xml diff --git a/pyenzyme/sbml/__init__.py b/pyenzyme/sbml/__init__.py new file mode 100644 index 00000000..2ae543c2 --- /dev/null +++ b/pyenzyme/sbml/__init__.py @@ -0,0 +1,3 @@ +from .serializer import to_sbml + +__all__ = ["to_sbml"] diff --git a/pyenzyme/sbml/mappings.toml b/pyenzyme/sbml/mappings.toml new file mode 100644 index 00000000..771a68bd --- /dev/null +++ b/pyenzyme/sbml/mappings.toml @@ -0,0 +1,31 @@ +[smallMolecule] + +inchiKey = "inchikey" +smiles = "canonical_smiles" + +[protein] + +ecnumber = "ecnumber" +organism = "organism" +organismTaxId = "organism_tax_id" +sequence = "sequence" + +[conditions] + +ph = { "@value" = "ph" } +temperature = { "@value" = "temperature", "@unit" = "temperature_unit" } + +[parameter] + +lowerBound = "lower" +upperBound = "upper" +stdDeviation = "stderr" + +[measurement] + +"@id" = "id" +"@name" = "name" + +[initConc] + +initConc = { "@species" = "species_id", "@value" = "init_conc", "@unit" = "data_unit" } diff --git a/pyenzyme/sbml/serializer.py b/pyenzyme/sbml/serializer.py new file mode 100644 index 00000000..55887126 --- /dev/null +++ b/pyenzyme/sbml/serializer.py @@ -0,0 +1,460 @@ +from pathlib import Path +import libsbml +from loguru import logger +import pandas as pd +import xml.etree.ElementTree as ET +from typing import Callable +from pydantic import BaseModel + +import pyenzyme.model as pe +from pyenzyme.sbml.validation import validate_sbml_export +from pyenzyme.tabular import to_pandas +import pyenzyme.tools as tools + +from pyenzyme import xmlutils as _xml +from pyenzyme import rdf +from pyenzyme.units.units import UnitDefinition +from pyenzyme.logging import add_logger + +MAPPINGS = tools.read_static_file("pyenzyme.sbml", "mappings.toml") +NSMAP = {"enzymeml": "https://www.enzymeml.org/v2"} + + +def to_sbml( + enzmldoc: pe.EnzymeMLDocument, + out: Path | str | None = None, + verbose: bool = False, +) -> tuple[str, pd.DataFrame] | None: + """This function converts an EnzymeML document to an SBML document. + + The systems biology markup language (SBML) is a machine-readable format for + representing models of biochemical reaction networks. This function converts + an EnzymeML document to an SBML document. Prior to serialization the EnzymeML + document is validated for SBML export. + + Example: + >> import pyenzyme as pe + >> doc = pe.EnzymeMLDocument() + >> [add entities to doc] + >> pe.to_sbml(doc, "example.xml") + + Args: + enzmldoc (pe.EnzymeMLDocument): The EnzymeML document to convert. + out (Path | str | None, optional): The output file to write the SBML document to. Defaults to None. + + Returns: + tuple[str, pd.DataFrame] | None: The SBML document as a string and a DataFrame with the RDF triples. + + Raises: + ValueError: If the EnzymeML document is not valid for SBML export. + """ + + add_logger(name="SBML") + + if not validate_sbml_export(enzmldoc): + raise ValueError("EnzymeML document is not valid for SBML export") + + global print_warnings + global units + global model + global doc + + doc = enzmldoc.copy() + sbmldoc = libsbml.SBMLDocument() + model = sbmldoc.createModel() + units = tools.find_unique(enzmldoc, pe.UnitDefinition) + print_warnings = verbose + + _xml.register_namespaces(nsmap=NSMAP) + + # Add entities + [_add_unit_definitions(unit, i) for i, unit in enumerate(units)] + [_add_vessel(vessel) for vessel in doc.vessels] + [_add_protein(protein) for protein in doc.proteins] + [_add_small_mol(small_mol) for small_mol in doc.small_molecules] + [_add_parameter(param) for param in doc.parameters] + [_add_equation(equation) for equation in doc.equations] + [_add_reaction(reaction, i) for i, reaction in enumerate(doc.reactions)] + + if doc.measurements: + _add_measurements(doc.measurements) + + if out is None: + return libsbml.writeSBMLToString(sbmldoc), to_pandas(doc) + + if isinstance(out, str): + out = Path(out) + + if out.is_dir(): + out = out / "enzymeml_doc.xml" + else: + out = out.with_suffix(".xml") + + _validate_sbml(sbmldoc) + + libsbml.writeSBML(sbmldoc, str(out)) + + if doc.measurements: + to_pandas(doc).to_csv(out.with_name("data.tsv"), sep="\t", index=False) + + logger.info(f"SBML document written to {out}") + + +def _add_unit_definitions(unit: UnitDefinition, index: int): + """Add unit definitions to the SBML model.""" + + sbml_unitdef = model.createUnitDefinition() + sbml_unitdef.setName(unit.name) + sbml_unitdef.setId(f"u{index}") + sbml_unitdef.setAnnotation(rdf.to_rdf_xml(unit)) + + for base_unit in unit.base_units: + sbml_unit = sbml_unitdef.createUnit() + sbml_unit.setKind(_get_sbml_kind(base_unit.kind)) + sbml_unit.setExponent(base_unit.exponent) + + if base_unit.scale: + sbml_unit.setScale(int(base_unit.scale)) + if base_unit.multiplier: + sbml_unit.setMultiplier(base_unit.multiplier) + + +def _add_vessel(vessel: pe.Vessel): + """Add vessels to the SBML model.""" + + compartment = model.createCompartment() + compartment.setId(vessel.id) + compartment.setName(vessel.name) + compartment.setConstant(True) + compartment.setSize(vessel.volume) + compartment.setAnnotation(rdf.to_rdf_xml(vessel)) + + if vessel.unit in units: + compartment.setUnits(_get_unit(vessel.unit, units)) + else: + raise ValueError(f"Unit {vessel.unit} not found in units") + + +def _add_small_mol(small_mol: pe.SmallMolecule): + """Add small molecules to the SBML model.""" + + species = model.createSpecies() + species.setId(small_mol.id) + species.setName(small_mol.name) + species.setCompartment(small_mol.vessel_id) + species.setConstant(small_mol.constant) + species.appendAnnotation(rdf.to_rdf_xml(small_mol)) + + init_conc = _get_first_meas_init_conc(small_mol) + + if init_conc is not None: + species.setInitialConcentration(init_conc) + species.setHasOnlySubstanceUnits(False) + + root = ET.Element("enzymeml") + annot = _xml.serialize_to_pretty_xml_string( + _extract_create_annot("smallMolecule", small_mol, root) + ) + + if annot is not None: + species.appendAnnotation(annot) + + +def _add_protein(protein: pe.Protein): + """Add proteins to the SBML model.""" + + species = model.createSpecies() + species.setId(protein.id) + species.setName(protein.name) + species.setConstant(protein.constant) + species.setCompartment(protein.vessel_id) + species.appendAnnotation(rdf.to_rdf_xml(protein)) + + init_conc = _get_first_meas_init_conc(protein) + + if init_conc is not None: + species.setInitialConcentration(init_conc) + species.setHasOnlySubstanceUnits(False) + + annot = _xml.serialize_to_pretty_xml_string( + _extract_create_annot("protein", protein) + ) + + if annot is not None: + species.appendAnnotation(annot) + + +def _get_first_meas_init_conc(species: pe.SmallMolecule | pe.Protein): + """Extracts the initial concentration of a species from the first measurement + + SBML requires the initial concentration to be set for species that are measured, + even if there are multiple measurements. This function extracts the initial + concentration from the first measurement of the species to fulfill this requirement. + """ + + if not doc.measurements: + return None + + measurement = doc.measurements[0] + meas_species = measurement.filter_species(species_id=species.id) + + if meas_species: + return meas_species[0].init_conc + else: + return None + + +def _add_reaction(reaction: pe.Reaction, index: int): + """Add reactions to the SBML model.""" + + sbml_reaction = model.createReaction() + sbml_reaction.setName(reaction.name) + sbml_reaction.setId(f"r{index}") + sbml_reaction.setReversible(reaction.reversible) + + for species in reaction.species: + assert species.stoichiometry, f"Stoichiometry of species {species} is not set" + + species_ref = _get_create_fun( + species.stoichiometry, + sbml_reaction, + species.species_id, + )() + + species_ref.setSpecies(species.species_id) + species_ref.setStoichiometry(abs(species.stoichiometry)) + + for modifier in reaction.modifiers: + modifier_ref = sbml_reaction.createModifier() + modifier_ref.setSpecies(modifier) + + if reaction.kinetic_law: + _add_rate_law(reaction.kinetic_law, sbml_reaction) + + +def _add_rate_law(equation: pe.Equation, reac: libsbml.Reaction): + """Add rate laws to the SBML Reaction.""" + + law = reac.createKineticLaw() + law.setMath(libsbml.parseL3Formula(equation.equation)) + + for parameter in equation.parameters: + param = law.createParameter() + param.setId(parameter.id) + + +def _get_create_fun( + stoichiometry: float, + reaction: libsbml.Reaction, + species: str, +) -> Callable[[], libsbml.SpeciesReference]: + """Helper function to retrieve the appropriate create function""" + if stoichiometry > 0: + return reaction.createProduct + elif stoichiometry < 0: + return reaction.createReactant + + raise ValueError(f"Stoichiometry of species {species} is 0") + + +def _add_parameter(parameter: pe.Parameter): + """Add parameters to the SBML model.""" + + sbml_param = model.createParameter() + sbml_param.setId(parameter.id) + sbml_param.setName(parameter.name) + sbml_param.setConstant(parameter.constant) + sbml_param.appendAnnotation(rdf.to_rdf_xml(parameter)) + + if parameter.value: + sbml_param.setValue(parameter.value) + if parameter.unit: + sbml_param.setUnits(_get_unit(parameter.unit, units)) + + annot = _xml.serialize_to_pretty_xml_string( + _extract_create_annot("parameter", parameter) + ) + + if annot is not None: + sbml_param.appendAnnotation(annot) + + +def _add_equation(equation: pe.Equation): + """Add equations to the SBML model.""" + + if equation.equation_type == pe.EquationType.ODE: + sbml_rule = model.createRateRule() + sbml_rule.setVariable(equation.species_id) + sbml_rule.setUnits(_get_unit(equation.unit, units)) + elif equation.equation_type == pe.EquationType.ASSIGNMENT: + sbml_rule = model.createAssignmentRule() + sbml_rule.setVariable(equation.species_id) + sbml_rule.setUnits(_get_unit(equation.unit, units)) + elif equation.equation_type == pe.EquationType.INITIAL_ASSIGNMENT: + sbml_rule = model.createInitialAssignment() + sbml_rule.setSymbol(equation.species_id) + else: + raise ValueError(f"Equation type {equation.equation_type} not supported") + + sbml_rule.setMath(libsbml.parseL3Formula(equation.equation)) + + +def _add_measurements(measurements: list[pe.Measurement]): + """Adds measurements to the SBML model.""" + + annotation = ET.Element(f"{{{NSMAP['enzymeml']}}}data") + annotation.attrib["file"] = "data.csv" + + for measurement in measurements: + meas_element = _extract_create_annot("measurement", measurement) + meas_element.attrib["timeUnit"] = _get_unit( # type: ignore + measurement.species[0].time_unit, + units, + ) + + assert meas_element is not None, "Measurement element is None" + + conditions = _create_condition_element( + ph=measurement.ph, + temperature=measurement.temperature, + temperature_unit=measurement.temperature_unit, # type: ignore + ) + + if conditions: + meas_element.append(conditions) + + for species in measurement.species: + _extract_create_annot("initConc", species, meas_element) + + annotation.append(meas_element) + + annot = _xml.serialize_to_pretty_xml_string(annotation) + + if annot is not None: + model.appendAnnotation(annot) + + +def _create_condition_element( + ph: float | None, + temperature: float | None, + temperature_unit: UnitDefinition | None, +): + """Set the conditions of the reaction in the SBML model.""" + + element = ET.Element(f"{{{NSMAP['enzymeml']}}}conditions") + mappings = { + "ph": {"@value": ph}, + "temperature": {"@value": temperature, "@unit": temperature_unit}, + } + + _xml.map_to_xml( + root=element, + mappings=mappings, + namespace=NSMAP["enzymeml"], + ) + + return element + + +def _extract_create_annot( + name: str, + obj: BaseModel, + element: ET.Element | None = None, +) -> ET.Element | None: + """Extracts the data from the object and creates an annotation element. + + This function makes use of the "mappings.toml" file which orchestrates + the mapping of the data from the object to the XML element. + + Args: + name (str): The name of the object. + obj (BaseModel): The object to extract the data from. + element (ET.Element, optional): The element to append the annotation to. Defaults to None. + + Returns: + ET.Element: The annotation element. + """ + mappings = _extract(obj, MAPPINGS[name]) + + if element is None: + element = ET.Element(f"{{{NSMAP['enzymeml']}}}{name}") + + _xml.map_to_xml( + root=element, + mappings=mappings, + namespace=NSMAP["enzymeml"], + ) + + if len(element) == 0 and not element.attrib: + return None + + return element + + +def _extract(obj: BaseModel, mapping: dict) -> dict: + """Based on the mapping, extract the data from the object and return it as a dictionary. + + Args: + obj (BaseModel): The object to extract the data from. + mapping (dict): The mapping to use for extraction. + + Returns: + dict: The extracted data. + """ + + data = {} + + for trgt_key, enzml_key in mapping.items(): + if isinstance(enzml_key, dict): + data[trgt_key] = _extract(obj, enzml_key) + elif "unit" in enzml_key: + value = getattr(obj, enzml_key) + data[trgt_key] = _get_unit(value, units) + else: + data[trgt_key] = getattr(obj, enzml_key) + + return data + + +def _get_sbml_kind(unit_type: pe.UnitType): + try: + return getattr(libsbml, f"UNIT_KIND_{unit_type.name}") + except AttributeError: + raise ValueError(f"Unit type {unit_type} not found in libsbml") + + +def _get_unit(unit: pe.UnitDefinition, units: list[pe.UnitDefinition]) -> str | None: + """Helper function to get the unit from the list of units.""" + try: + index = units.index(unit) + except ValueError: + return None + + return f"u{index}" + + +def _validate_sbml(sbmldoc: libsbml.SBMLDocument) -> None: + """Validate the SBML document using the libSBML function.""" + sbml_errors = sbmldoc.checkConsistency() + valid = True + + if sbml_errors and not print_warnings: + logger.warning( + "The SBML document has warnings that should be checked. Set the `warnings` argument to true to see them." + ) + + for error in range(sbml_errors): + severity = sbmldoc.getError(error).getSeverity() + + if severity == libsbml.LIBSBML_SEV_ERROR: + valid = False + logger.error( + sbmldoc.getError(error).getMessage().strip().replace("\n", " ") + ) + elif severity == libsbml.LIBSBML_SEV_WARNING and print_warnings: + logger.warning( + sbmldoc.getError(error).getMessage().strip().replace("\n", " ") + ) + + if not valid: + raise ValueError("SBML model is not valid") diff --git a/pyenzyme/sbml/validation.py b/pyenzyme/sbml/validation.py new file mode 100644 index 00000000..c98dbc09 --- /dev/null +++ b/pyenzyme/sbml/validation.py @@ -0,0 +1,157 @@ +from loguru import logger + +import pyenzyme.model as pe +import pyenzyme.tools as tools + + +def validate_sbml_export(doc: pe.EnzymeMLDocument) -> bool: + """This function validates the SBML export of an EnzymeML document. + + Args: + doc (pe.EnzymeMLDocument): The EnzymeML document to validate. + channel (str, optional): The channel to log to. Defaults to sys.stderr. + + Returns: + bool: True if the document is valid, False otherwise. + """ + + result = all( + [ + _check_consistent_vessel_ids(doc), + _check_equation_either_rule_or_reaction(doc), + _check_units_exist(doc), + _check_assigned_params_are_not_constant(doc), + ] + ) + + return result + + +def _check_consistent_vessel_ids(doc: pe.EnzymeMLDocument) -> bool: + """This validator checks whether all species have a vessel id that exists in the document. + + SBML documents require that all species have a vessel id that exists in the document and + this validator checks for that. Otherwise an error message will be logged and the validity + set to False. + """ + + vessel_ids = {v.id for v in doc.vessels} + all_species = doc.small_molecules + doc.proteins + result = [] + + for species in all_species: + if species.vessel_id is None: + logger.error( + f"Species '{species.id}' of type '{type(species).__name__}' does not have a vessel id." + ) + result.append(False) + elif species.vessel_id not in vessel_ids: + logger.error( + f"Species '{species.id}' of type '{type(species).__name__}' has a vessel id that does not exist in the document." + ) + result.append(False) + else: + result.append(True) + + return all(result) + + +def _check_equation_either_rule_or_reaction(doc: pe.EnzymeMLDocument) -> bool: + """This validator checks whether there are either rules or reactions in the document. + + SBML documents require that there are either rules or reactions in the document. For instance, + there cannot be a rate equation and reaction element at the same time, since the latter is + used to derive the former. This validator checks for that and logs an error message if the + document is invalid. + """ + + species_w_rate = { + eq.species_id for eq in doc.equations if eq.equation_type == pe.EquationType.ODE + } + + all_reaction_elements = tools.extract(obj=doc, target=pe.ReactionElement) + result, validated = [], set() + + for element in all_reaction_elements: + if element.species_id in species_w_rate and element.species_id not in validated: + logger.error( + f"Species '{element.species_id}' is part of a reaction and has a rate equation. This is not allowed in SBML." + ) + validated.add(element.species_id) + result.append(False) + else: + result.append(True) + + return all(result) + + +def _check_units_exist(doc: pe.EnzymeMLDocument): + """This validator checks whether all units in the document are defined in the SBML standard.""" + + mandatory_unit_objects = [ + *tools.extract(obj=doc, target=pe.MeasurementData), + *tools.extract(obj=doc, target=pe.Equation), + ] + + optional_unit_objects = [ + *tools.extract(obj=doc, target=pe.Parameter), + ] + + result = [] + + for unit_obj in mandatory_unit_objects: + units = tools.extract(obj=unit_obj, target=pe.UnitDefinition) + + if len(units) == 0: + logger.error( + f"Object of type '{type(unit_obj).__name__}' with id '{unit_obj.id}' does not have a unit defined." + ) + result.append(False) + + for unit_obj in optional_unit_objects: + units = tools.extract(obj=unit_obj, target=pe.UnitDefinition) + + if len(units) == 0: + logger.warning( + f"{type(unit_obj).__name__} with id '{unit_obj.id}' should ideally have a unit defined." + ) + + result.append(True) + + return all(result) + + +def _check_assigned_params_are_not_constant(doc: pe.EnzymeMLDocument): + """This validator checks whether all assigned parameters are not constant. + + If a parameter is assigned a value through an assignment rule, it should not be constant. + This validator checks for that and logs a warning if a parameter is constant but has + an assignment rule and sets the parameter to non-constant. + """ + + assignments = doc.filter_equations(equation_type=pe.EquationType.ASSIGNMENT) + result = [] + + for assignment in assignments: + params = doc.filter_parameters(id=assignment.species_id) + + if len(params) == 0: + logger.error( + f"Assignment '{assignment.species_id}' does not have a parameter defined." + ) + result.append(False) + elif len(params) > 1: + logger.error( + f"Assignment '{assignment.species_id}' has multiple parameters defined." + ) + result.append(False) + + if params[0].constant: + params[0].constant = False + logger.warning( + f"Parameter '{params[0].id}' has an assignment rule, but is set to constant. The parameter is now set to non-constant." + ) + + result.append(True) + + return all(result) diff --git a/pyenzyme/tabular.py b/pyenzyme/tabular.py new file mode 100644 index 00000000..d799c8c5 --- /dev/null +++ b/pyenzyme/tabular.py @@ -0,0 +1,323 @@ +import pandas as pd +import pathlib as pl + +from .model import ( + DataTypes, + Measurement, + EnzymeMLDocument, + MeasurementData, + UnitDefinition, +) + + +def to_pandas( + enzmldoc: EnzymeMLDocument, + ignore: list[str] = [], +) -> pd.DataFrame: + """This function converts an EnzymeMLDocument object to a pandas DataFrame. + + The resulting DataFrame contains the following columns: + + - time: The time values of the measurement. + - id: The ID of the measurement. + - [species]: The species data of the measurement per column. + + Args: + enzmldoc (EnzymeMLDocument): The EnzymeMLDocument object to convert. + ignore (list[str], optional): A list of measurement IDs to ignore. Defaults to []. + + Returns: + pd.DataFrame: The EnzymeMLDocument object as a pandas DataFrame. + + Raises: + ValueError: If the input is not an EnzymeMLDocument object. + ValueError: If the measurements are not of type Measurement. + ValueError: If the measurement does not contain species data. + """ + + assert isinstance( + enzmldoc, EnzymeMLDocument + ), "The input must be an EnzymeMLDocument object" + + dfs = [] + for meas in enzmldoc.measurements: + if meas.id in ignore: + continue + + if not isinstance(meas, Measurement): + raise ValueError("The measurements must be of type Measurement") + if meas.species is None: + raise ValueError("The measurement must contain species data") + + df = _measurement_to_pandas(meas) + df["id"] = [meas.id] * len(df) + dfs.append(df) + + return pd.concat(dfs, ignore_index=True).reset_index(drop=True) + + +def read_excel( + path: pl.Path | str, + data_unit: UnitDefinition, + time_unit: UnitDefinition, + data_type: DataTypes = DataTypes.CONCENTRATION, + sep: str = ";", +): + """Reads a CSV file from the specified path into a measurement. + + This function expects the CSV file to have the following structure: + + - time: The time points of the measurements. Should start at 0. + - id: The ID of the measurement. Only needed in case of multiple measurements. + - [species_id]: Per column, the data of a species. + + If there is no 'id' column, the function assumes that there is only one measurement + in the file. If there is an 'id' column, the function assumes that there are multiple + measurements in the file. Hence, if you want to have multiple measurements in the same + file, you need to have an 'id' column. Otherwise it will return a single measurement. + + Args: + path (str, pathlib.Path): The path to the CSV file. + data_unit (UnitDefinition): The unit of the data. + time_unit (UnitDefinition): The unit of the time. + data_type (DataTypes): The type of the data. Default is DataTypes.CONCENTRATION. + sep (str): The separator of the CSV file. Default is ';'. + + Returns: + list[Measurement]: A list of measurements. + + Raises: + FileNotFoundError: If the file does not exist. + ValueError: If the path is not a file. + """ + + if isinstance(path, str): + path = pl.Path(path) + + if not path.exists(): + raise FileNotFoundError(f"The file '{path}' does not exist.") + elif not path.is_file(): + raise ValueError(f"The path '{path}' is not a file.") + + df = pd.read_excel(path) + + return from_pandas( + df=df, + id=path.stem, + data_unit=data_unit, + time_unit=time_unit, + data_type=data_type, + ) + + +def read_csv( + path: pl.Path | str, + data_unit: UnitDefinition, + time_unit: UnitDefinition, + data_type: DataTypes = DataTypes.CONCENTRATION, + sep: str = ";", +): + """Reads a CSV file from the specified path into a measurement. + + This function expects the CSV file to have the following structure: + + - time: The time points of the measurements. Should start at 0. + - id: The ID of the measurement. Only needed in case of multiple measurements. + - [species_id]: Per column, the data of a species. + + If there is no 'id' column, the function assumes that there is only one measurement + in the file. If there is an 'id' column, the function assumes that there are multiple + measurements in the file. Hence, if you want to have multiple measurements in the same + file, you need to have an 'id' column. Otherwise it will return a single measurement. + + Args: + path (str, pathlib.Path): The path to the CSV file. + data_unit (UnitDefinition): The unit of the data. + time_unit (UnitDefinition): The unit of the time. + data_type (DataTypes): The type of the data. Default is DataTypes.CONCENTRATION. + sep (str): The separator of the CSV file. Default is ';'. + + Returns: + list[Measurement]: A list of measurements. + + Raises: + FileNotFoundError: If the file does not exist. + ValueError: If the path is not a file. + """ + + if isinstance(path, str): + path = pl.Path(path) + + if not path.exists(): + raise FileNotFoundError(f"The file '{path}' does not exist.") + elif not path.is_file(): + raise ValueError(f"The path '{path}' is not a file.") + + df = pd.read_csv(path, sep=sep) + + return from_pandas( + df=df, + id=path.stem, + data_unit=data_unit, + time_unit=time_unit, + data_type=data_type, + ) + + +def from_pandas( + df: pd.DataFrame, + id: str, + data_unit: UnitDefinition, + time_unit: UnitDefinition, + data_type: DataTypes = DataTypes.CONCENTRATION, +) -> list[Measurement]: + """Parse a pandas DataFrame into a list of measurements. + + This function expects the DataFrame to have the following structure: + + - time: The time points of the measurements. Should start at 0. + - id: The ID of the measurement. Only needed in case of multiple measurements. + - [species_id]: Per column, the data of a species. + + If there is no 'id' column, the function assumes that there is only one measurement + in the file. If there is an 'id' column, the function assumes that there are multiple + measurements in the file. Hence, if you want to have multiple measurements in the same + file, you need to have an 'id' column. Otherwise it will return a single measurement. + + Args: + df (pd.DataFrame): The DataFrame to parse. + data_unit (UnitDefinition): The unit of the data. + time_unit (UnitDefinition): The unit of the time. + data_type (DataTypes): The type of the data. Default is DataTypes.CONCENTRATION. + + Returns: + list[Measurement]: A list of measurements. + + Raises: + FileNotFoundError: If the file does not exist. + ValueError: If the path is not a file. + """ + + _validate_data(df) + + if "id" in df: + return _process_multiple_measurements( + df=df, + data_unit=data_unit, + time_unit=time_unit, + data_type=data_type, + ) + else: + return [ + _create_single_measurement( + df=df, + id=id, + data_unit=data_unit, + time_unit=time_unit, + data_type=data_type, + ) + ] + + +def _create_single_measurement( + df: pd.DataFrame, + id: str, + data_unit: UnitDefinition, + time_unit: UnitDefinition, + data_type: DataTypes, +) -> Measurement: + data = df.to_dict(orient="list") + time = data.pop("time") + meas_data = [] + + for species_id, species_data in data.items(): + if species_id == "id": + continue + + meas_data.append( + MeasurementData( + species_id=species_id, + data=species_data, + time=time, + data_unit=data_unit, + time_unit=time_unit, + init_conc=species_data[0], + data_type=data_type, + ) + ) + + return Measurement(name=id, id=id, species=meas_data) + + +def _process_multiple_measurements( + df: pd.DataFrame, + data_unit: UnitDefinition, + time_unit: UnitDefinition, + data_type: DataTypes, +) -> list[Measurement]: + ids = df["id"].unique() + measurements = [] + + for id in ids: + sub_df = df[df["id"] == id] + measurements.append( + _create_single_measurement( + df=sub_df, # type: ignore + id=id, + data_unit=data_unit, + time_unit=time_unit, + data_type=data_type, + ) + ) + + return measurements + + +def _validate_data(data: pd.DataFrame) -> None: + """Validates the data from a CSV file""" + + assert "time" in data, "The CSV file must contain a 'time' column" + assert data["time"][0] == 0, "The time column must start at 0" + + for col in data.columns: + if col == "id": + continue + assert ( + data[col].dtype == "float64" or data[col].dtype == "int64" + ), f"The column '{col}' must contain only numerical values" + + +def _measurement_to_pandas(measurement: Measurement) -> pd.DataFrame: + """Converts a Measurement object to a pandas DataFrame""" + + _validate_measurement(measurement) + + data = {"time": measurement.species[0].time} + for species in measurement.species: + data[species.species_id] = species.data + return pd.DataFrame(data) + + +def _validate_measurement(meas: Measurement) -> None: + """Validates a Measurement object""" + + # Check if the length of time is consistent + + try: + times = pd.DataFrame( + {species.species_id + "_time": species.time for species in meas.species} + ) + except ValueError: + time_lengths = { + species.species_id: len(species.time) for species in meas.species + } + raise ValueError( + f"Export to pandas not possible, the time lengths are inconsistent. Got different time arrays per species: {time_lengths}" + ) + + # Check if the time arrays are the same + all_columns_same = bool(times.apply(lambda col: col.equals(times.iloc[:, 0])).all()) + if not all_columns_same: + raise ValueError( + f"Export to pandas not possible, the time arrays are inconsistent. Got different time arrays per species: \n\n {times.T} \n\n" + ) diff --git a/pyenzyme/tools.py b/pyenzyme/tools.py new file mode 100644 index 00000000..6a82de76 --- /dev/null +++ b/pyenzyme/tools.py @@ -0,0 +1,128 @@ +from enum import Enum +import toml +import functools as ft +import importlib.resources as pkg_resources + + +def read_static_file(path, filename: str): + """Reads a static file from the specified library path. + + Args: + path (Module): Import path of the library. + filename (str): The name of the file to read. + + Returns: + dict: The contents of the file as a dictionary. + """ + + source = pkg_resources.files(path).joinpath(filename) + with pkg_resources.as_file(source) as file: + return toml.load(file) + + +def find_unique(obj, target): + """Composite function that extracts all instances of a specified target type from a given object. + + Args: + obj (Any): The object from which to extract instances of the target type. + target (type): The target type to extract from the object. + + Returns: + list: A list of unique instances of the target type. + """ + if _is_basetype(obj): + return [] + + return chain(obj, ft.partial(extract, target=target), unique) + + +def chain(obj, *funs): + return ft.reduce(lambda x, f: f(x), funs, obj) + + +def unique(args): + """Returns a list of unique elements from a given list. + + Args: + args (list): The list of elements to extract unique elements from. + + Returns: + list: A list of unique elements. + """ + + unique = [] + for arg in args: + if arg not in unique: + unique.append(arg) + + return unique + + +def extract(obj, target) -> list: + """ + Recursively extracts all instances of a specified target type from a given object's attributes. + + This function traverses through the attributes of the given object and collects all instances + of the specified target type. It handles nested objects and lists by performing a depth-first search. + + Args: + obj (Any): The object from which to extract instances of the target type. + target (type): The type of the instances to extract. + + Returns: + list: A list of instances of the target type extracted from the object. + + Example: + >>> from dataclasses import dataclass, field + >>> @dataclass + >>> class Example: + >>> a: int + >>> b: list = field(default_factory=list) + >>> + >>> obj = Example(1, [Example(2), Example(3, [Example(4), 5])]) + >>> target_type = int + >>> extracted = extract_type(obj, target_type) + >>> print(extracted) + [1, 2, 3, 4, 5] + """ + + result = [] + + if isinstance(obj, target) or _is_subclass(obj, target): + result.append(obj) + + for name, value in obj.__dict__.items(): + if not _is_basetype(value) and not isinstance(value, Enum): + result += extract(value, target) + elif isinstance(value, list) and not all(_is_basetype(item) for item in value): + for item in value: + result += extract(item, target) + + return result + + +def _is_subclass(obj, target): + """Checks if an object is a subclass of a target type.""" + + if not hasattr(obj, "__class__"): + return False + + return issubclass(obj.__class__, target) + + +def _is_basetype(obj): + """Checks if an object is a basic type.""" + return isinstance( + obj, + ( + int, + float, + str, + bool, + bytes, + complex, + list, + dict, + type(None), + ), + ) diff --git a/pyenzyme/units/__init__.py b/pyenzyme/units/__init__.py new file mode 100644 index 00000000..25903882 --- /dev/null +++ b/pyenzyme/units/__init__.py @@ -0,0 +1 @@ +from .predefined import * # noqa: F403 diff --git a/pyenzyme/units/ontomaps.toml b/pyenzyme/units/ontomaps.toml new file mode 100644 index 00000000..0a2f5517 --- /dev/null +++ b/pyenzyme/units/ontomaps.toml @@ -0,0 +1,40 @@ +[substance] + +mol = "OBO:UO_0000013" +mmol = "OBO:UO_0000040" +umol = "OBO:UO_0000039" +nmol = "OBO:UO_0000041" + +[molarity] + +M = "OBO:UO_0000062" +mM = "OBO:UO_0000063" +uM = "OBO:UO_0000064" +nM = "OBO:UO_0000025" + +[time] + +s = "OBO:UO_0000010" +min = "OBO:UO_0000031" +hour = "OBO:UO_0000032" +day = "OBO:UO_0000033" + +[temperature] + +K = "OBO:UO_0000012" +C = "OBO:UO_0000027" + +[mass] + +kg = "OBO:UO_0000009" +g = "OBO:UO_0000021" +mg = "OBO:UO_0000022" +ug = "OBO:UO_0000023" +ng = "OBO:UO_0000024" + +[volume] + +litre = "OBO:UO_0000099" +ml = "OBO:UO_0000098" +ul = "OBO:UO_0000101" +nl = "OBO:UO_0000102" diff --git a/pyenzyme/units/predefined.py b/pyenzyme/units/predefined.py new file mode 100644 index 00000000..b0531d22 --- /dev/null +++ b/pyenzyme/units/predefined.py @@ -0,0 +1,146 @@ +from pyenzyme.model import UnitType +from pyenzyme.tools import read_static_file + +from .units import BaseUnit, UnitDefinition, Prefix + +BaseUnit.model_rebuild() +UnitDefinition.model_rebuild() + +ONTOMAPS = read_static_file("pyenzyme.units", "ontomaps.toml") + + +class Unit: + @staticmethod + def mol(): + return BaseUnit(kind=UnitType.MOLE, exponent=1, scale=1) + + @staticmethod + def litre(): + return BaseUnit(kind=UnitType.LITRE, exponent=1, scale=1) + + @staticmethod + def second(): + return BaseUnit(kind=UnitType.SECOND, exponent=1, scale=1) + + @staticmethod + def minute(): + return BaseUnit(kind=UnitType.SECOND, exponent=1, scale=1, multiplier=60) + + @staticmethod + def hour(): + hour = 60 * 60 + return BaseUnit(kind=UnitType.SECOND, exponent=1, scale=1, multiplier=hour) + + @staticmethod + def day(): + day = 60**2 * 24 + return BaseUnit(kind=UnitType.SECOND, exponent=1, scale=1, multiplier=day) + + @staticmethod + def gram(): + return BaseUnit(kind=UnitType.GRAM, exponent=1, scale=1) + + @staticmethod + def kelvin(): + return BaseUnit(kind=UnitType.KELVIN, exponent=1, scale=1) + + @staticmethod + def dimensionless(): + return BaseUnit(kind=UnitType.DIMENSIONLESS, exponent=1, scale=1) + + +###### Single Prefixes ###### + +k = Prefix.k +m = Prefix.m +u = Prefix.u +n = Prefix.n + +##### Predefined units ##### + +# Dimensionless +dimensionless = UnitDefinition(base_units=[Unit.dimensionless()]) + +# Molarity +M = Unit.mol() / Unit.litre() +mM = m * Unit.mol() / Unit.litre() +uM = u * Unit.mol() / Unit.litre() +nM = n * Unit.mol() / Unit.litre() + +## Ontology +M.ld_id = ONTOMAPS["molarity"]["M"] +mM.ld_id = ONTOMAPS["molarity"]["mM"] +uM.ld_id = ONTOMAPS["molarity"]["uM"] +nM.ld_id = ONTOMAPS["molarity"]["nM"] + +# Substance +mol = UnitDefinition(base_units=[Unit.mol()])._get_name() +mmol = UnitDefinition(base_units=[m * Unit.mol()])._get_name() +umol = UnitDefinition(base_units=[u * Unit.mol()])._get_name() +nmol = UnitDefinition(base_units=[n * Unit.mol()])._get_name() + +## Ontology +mol.ld_id = ONTOMAPS["substance"]["mol"] +mmol.ld_id = ONTOMAPS["substance"]["mmol"] +umol.ld_id = ONTOMAPS["substance"]["umol"] +nmol.ld_id = ONTOMAPS["substance"]["nmol"] + +# Mass +gram = UnitDefinition(base_units=[Unit.gram()])._get_name() +g = UnitDefinition(base_units=[Unit.gram()])._get_name() +mg = UnitDefinition(base_units=[m * Unit.gram()])._get_name() +ug = UnitDefinition(base_units=[u * Unit.gram()])._get_name() +ng = UnitDefinition(base_units=[n * Unit.gram()])._get_name() +kg = UnitDefinition(base_units=[k * Unit.gram()])._get_name() + +## Ontology +g.ld_id = ONTOMAPS["mass"]["g"] +gram.ld_id = ONTOMAPS["mass"]["g"] +mg.ld_id = ONTOMAPS["mass"]["mg"] +ug.ld_id = ONTOMAPS["mass"]["ug"] +ng.ld_id = ONTOMAPS["mass"]["ng"] + +# Volume +litre = UnitDefinition(base_units=[Unit.litre()])._get_name() +l = UnitDefinition(base_units=[Unit.litre()])._get_name() # noqa: E741 +ml = UnitDefinition(base_units=[m * Unit.litre()])._get_name() +ul = UnitDefinition(base_units=[u * Unit.litre()])._get_name() +nl = UnitDefinition(base_units=[n * Unit.litre()])._get_name() + +## Ontology + +l.ld_id = ONTOMAPS["volume"]["litre"] +litre.ld_id = ONTOMAPS["volume"]["litre"] +ml.ld_id = ONTOMAPS["volume"]["ml"] +ul.ld_id = ONTOMAPS["volume"]["ul"] +nl.ld_id = ONTOMAPS["volume"]["nl"] + +# Time +second = UnitDefinition(base_units=[Unit.second()])._get_name() +s = UnitDefinition(base_units=[Unit.second()])._get_name() +minute = UnitDefinition(base_units=[Unit.minute()])._get_name() +min = UnitDefinition(base_units=[Unit.minute()])._get_name() +hour = UnitDefinition(base_units=[Unit.hour()])._get_name() +h = UnitDefinition(base_units=[Unit.hour()])._get_name() +day = UnitDefinition(base_units=[Unit.day()])._get_name() +d = UnitDefinition(base_units=[Unit.day()])._get_name() + +## Ontology +s.ld_id = ONTOMAPS["time"]["s"] +second.ld_id = ONTOMAPS["time"]["s"] +minute.ld_id = ONTOMAPS["time"]["min"] +min.ld_id = ONTOMAPS["time"]["min"] +hour.ld_id = ONTOMAPS["time"]["hour"] +h.ld_id = ONTOMAPS["time"]["hour"] +day.ld_id = ONTOMAPS["time"]["day"] +d.ld_id = ONTOMAPS["time"]["day"] + +# Temperature + +kelvin = UnitDefinition(base_units=[Unit.kelvin()])._get_name() +K = UnitDefinition(base_units=[Unit.kelvin()])._get_name() + +## Ontology + +K.ld_id = ONTOMAPS["temperature"]["K"] +kelvin.ld_id = ONTOMAPS["temperature"]["K"] diff --git a/pyenzyme/units/units.py b/pyenzyme/units/units.py new file mode 100644 index 00000000..e1902c2e --- /dev/null +++ b/pyenzyme/units/units.py @@ -0,0 +1,367 @@ +from enum import Enum +from functools import partial + +from pydantic import model_validator +from pyenzyme.model import ( + UnitDefinition as _UnitDefinition, + BaseUnit as _BaseUnit, + UnitType, +) + +UNIT_OF_MEAS_TYPE = "OBO:UO_0000000" +NAME_MAPS = { + UnitType.LITRE: "l", + UnitType.MOLE: "mol", + UnitType.SECOND: "s", + UnitType.GRAM: "g", + UnitType.KELVIN: "K", +} + + +def _is_unit(other: object) -> bool: + """Check if the given object is an instance of 'unit'. + + Args: + other (object): The object to check. + + Returns: + bool: True if the object is an instance of 'unit', False otherwise. + """ + return other.__class__.__name__ == "unit" + + +def set_scale(unit: _BaseUnit, scale: int) -> _BaseUnit: + """Set the scale of a unit. + + Args: + unit (_BaseUnit): The unit to set the scale for. + scale (int): The scale value to set. + + Returns: + _BaseUnit: The unit with the updated scale. + """ + unit.scale = scale + return unit + + +class Prefix(Enum): + """Enumeration for unit prefixes with corresponding scales.""" + + k = partial(set_scale, scale=3) + m = partial(set_scale, scale=-3) + u = partial(set_scale, scale=-6) + n = partial(set_scale, scale=-9) + + def __mul__(self, other: _BaseUnit) -> _BaseUnit: + """Multiply prefix with a BaseUnit. + + When multiplying a prefix with a BaseUnit, the scale of the BaseUnit is updated. + + Args: + other (_BaseUnit): The other operand, which should be a BaseUnit. + + Returns: + _BaseUnit: The resulting unit with the prefix applied. + + Raises: + TypeError: If the other operand is not a BaseUnit. + """ + if isinstance(other, _BaseUnit): + return self.value(other) + + raise TypeError( + f"unsupported operand type(s) for *: 'Prefix' and '{type(other)}'" + ) + + +class UnitDefinition(_UnitDefinition): + """Extended UnitDefinition class with additional operations.""" + + @model_validator(mode="after") + def set_name_and_type(self): + """Initialize the UnitDefinition object.""" + self._get_name() + self.ld_type = [UNIT_OF_MEAS_TYPE] + return self + + def __rtruediv__(self, other: object) -> "UnitDefinition": + """Right division operation to handle unit division. + + If the other operand is a UnitDefinition, the base units are appended to the current unit. + If the other operand is a BaseUnit, the base unit is appended to the current unit. + + Args: + other (object): The numerator in the division. + + Returns: + UnitDefinition: The resulting unit after division. + + Raises: + TypeError: If the other operand type is unsupported. + """ + for base in self.base_units: + base.exponent = -abs(base.exponent) + + if isinstance(other, UnitDefinition): + self.base_units.extend(other.base_units) + elif isinstance(other, _BaseUnit): + self.base_units.append(other) + + self._get_name() + + return self + + def __truediv__(self, other: object) -> "UnitDefinition": + """Division operation to handle unit division. + + If the other operand is a UnitDefinition, the base units are appended to the current unit. + If the other operand is a BaseUnit, the base unit is appended to the current unit. + + Args: + other (object): The numerator in the + + Returns: + UnitDefinition: The resulting unit after division. + + Raises: + TypeError: If the other operand type is unsupported. + + """ + + if isinstance(other, UnitDefinition): + for base in other.base_units: + base.exponent = -abs(base.exponent) + self.base_units.extend(other.base_units) + elif isinstance(other, _BaseUnit): + other.exponent = -abs(other.exponent) + self.base_units.append(other) + + self._get_name() + + return self + + def __mul__(self, other: object) -> "UnitDefinition": + """Multiplication operation to handle unit multiplication. + + Args: + other (object): The multiplier in the multiplication. + + Returns: + UnitDefinition: The resulting unit after multiplication. + + Raises: + TypeError: If the other operand type is unsupported. + """ + if isinstance(other, (int, float)): + for base in self.base_units: + if base.multiplier: + base.multiplier *= other + else: + base.multiplier = other + + self._get_name() + + return self + + raise TypeError( + f"unsupported operand type(s) for *: 'UnitDefinition' and '{type(other)}'" + ) + + def _get_name(self): + """Get the name of the unit based on the base units.""" + self.name = str(self) + + return self + + def __str__(self) -> str: + """String representation of the UnitDefinition. + + Returns: + str: The string representation of the unit. + + Raises: + ValueError: If no base units are found. + """ + + numerator = [ + self._map_prefix(base.scale) + + self._map_name(base.kind) + + self._exponent(base.exponent) + for base in self.base_units + if base.exponent > 0 + ] + denominator = [ + self._map_prefix(base.scale) + + self._map_name(base.kind) + + self._exponent(base.exponent) + for base in self.base_units + if base.exponent < 0 + ] + + numerator_str = " ".join(numerator) if numerator else "" + denominator_str = " ".join(denominator) if denominator else "" + + if numerator_str and denominator_str: + return f"{numerator_str} / {denominator_str}" + elif numerator_str: + return numerator_str + elif denominator_str: + return f"1 / {denominator_str}" + + raise ValueError("No base units found") + + @staticmethod + def _map_prefix(scale: int | None) -> str: + """Map a scale to its corresponding prefix. + + Args: + scale (int): The scale value to map. + + Returns: + str: The corresponding prefix. + """ + + if scale is None: + return "" + + mapping = { + 3: "k", + -3: "m", + -6: "u", + -9: "n", + } + + return mapping.get(scale, "") + + @staticmethod + def _map_name(kind: UnitType) -> str: + return NAME_MAPS.get(kind, kind.name.capitalize()) + + @staticmethod + def _exponent(exponent: int) -> str: + """Format the exponent for display. + + Args: + exponent (int): The exponent value to format. + + Returns: + str: The formatted exponent string. + """ + if abs(exponent) == 1: + return "" + + return f"^{abs(exponent)}" + + +class BaseUnit(_BaseUnit): + """Extended BaseUnit class with additional operations.""" + + def __rtruediv__(self, other: object) -> "UnitDefinition | BaseUnit": + """Right division operation to handle unit division. + + Args: + other (object): The numerator in the division. + + Returns: + UnitDefinition: The resulting unit after division. + + Raises: + TypeError: If the other operand type is unsupported. + """ + if isinstance(other, UnitDefinition): + self.exponent = -self.exponent + other.base_units.append(self) + + other._get_name() + + return other + elif isinstance(other, (int, float)): + self.exponent = -self.exponent + return self + + raise TypeError( + f"unsupported operand type(s) for /: 'BaseUnit' and '{type(other)}'" + ) + + def __truediv__(self, other: object) -> "UnitDefinition": + """Division operation to handle unit division. + + Args: + other (object): The denominator in the division. + + Returns: + UnitDefinition: The resulting unit after division. + + Raises: + TypeError: If the other operand type is unsupported. + """ + if isinstance(other, BaseUnit): + other.exponent = -other.exponent + return UnitDefinition(base_units=[self, other])._get_name() + elif isinstance(other, UnitDefinition): + for base_unit in other.base_units: + base_unit.exponent = -base_unit.exponent + other.base_units.append(self) + other._get_name() + + return other + + raise TypeError( + f"unsupported operand type(s) for /: 'BaseUnit' and '{type(other)}'" + ) + + def __pow__(self, other: int) -> "_BaseUnit": + """Exponentiation operation to handle unit exponentiation. + + Args: + other (int): The exponent value. + + Returns: + _BaseUnit: The resulting unit after exponentiation. + + Raises: + TypeError: If the exponent is not an integer. + """ + if isinstance(other, int): + self.exponent = other + return self + + raise TypeError( + f"unsupported operand type(s) for **: 'BaseUnit' and '{type(other)}'" + ) + + def __mul__(self, other: object) -> object: + """Multiplication operation to handle unit multiplication. + + Args: + other (object): The multiplier in the multiplication. + + Returns: + object: The resulting unit after multiplication. + + Raises: + TypeError: If the other operand type is unsupported. + """ + if isinstance(other, BaseUnit): + if self.exponent < 0 or other.exponent < 0: + self.exponent = abs(self.exponent) + other.exponent = abs(other.exponent) + + return UnitDefinition(base_units=[self, other])._get_name() + elif isinstance(other, UnitDefinition): + other.base_units.append(self) + other._get_name() + + return other + elif isinstance(other, Prefix): + return other * self + elif isinstance(other, (int, float)): + if self.multiplier: + self.multiplier *= other + else: + self.multiplier = other + return self + + raise TypeError( + f"unsupported operand type(s) for *: 'BaseUnit' and '{type(other)}'" + ) diff --git a/pyenzyme/xmlutils.py b/pyenzyme/xmlutils.py new file mode 100644 index 00000000..bbcfad80 --- /dev/null +++ b/pyenzyme/xmlutils.py @@ -0,0 +1,78 @@ +import xml.etree.ElementTree as ET +import xml.dom.minidom as minidom + + +def map_to_xml(root: ET.Element, mappings: dict, namespace: str): + """ + Maps a dictionary to XML elements and appends them to the root element. + + Args: + root (ET.Element): The root element to which sub-elements are appended. + mappings (dict): The dictionary containing the key-value mappings to convert to XML. + """ + + for key, value in mappings.items(): + if value is None: + continue + if key.startswith("@"): + root.attrib[key[1:]] = str(value) + continue + + subelement = ET.Element(f"{{{namespace}}}{key}") + + if isinstance(value, dict): + process_dict_value(subelement, value) + elif key.startswith("@"): + subelement.attrib[key[1:]] = str(value) + else: + subelement.text = str(value) + + if not _is_empty(subelement): + root.append(subelement) + + +def _is_empty(element: ET.Element): + """Checks if an element and its sub elements are empty.""" + + return all( + [ + len(element.attrib) == 0, + element.text is None or element.text.strip() == "", + all(_is_empty(child) for child in element), + ] + ) + + +def process_dict_value(subelement: ET.Element, value: dict): + """ + Processes a dictionary value and adds it as attributes or text to a subelement. + + Args: + subelement (ET.Element): The subelement to which attributes or text are added. + value (dict): The dictionary containing the subkey-subvalue mappings. + """ + for subkey, subvalue in value.items(): + if not subvalue: + continue + + if subkey.startswith("@"): + subelement.attrib[subkey[1:]] = str(subvalue) + else: + subelement.text = str(subvalue) + + +def serialize_to_pretty_xml_string(element: ET.Element | None) -> str | None: + """Serialize the ElementTree element to a pretty-printed byte string.""" + + if element is None: + return None + + rough_string = ET.tostring(element, "utf-8", xml_declaration=False) + reparsed = minidom.parseString(rough_string) + + return "\n".join(reparsed.toprettyxml(indent="\t").split("\n")[1:]).strip() + + +def register_namespaces(nsmap: dict): + for prefix, uri in nsmap.items(): + ET.register_namespace(prefix, uri) From 14f25a52b335b3ecd52c03455a370341f136896f Mon Sep 17 00:00:00 2001 From: Jan Range Date: Sat, 22 Jun 2024 17:56:09 +0200 Subject: [PATCH 005/172] migrate to pyproject --- pyproject.toml | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 pyproject.toml diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..7ce9dee0 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,33 @@ +[tool.poetry] +name = "pyenzyme" +version = "2.0.0" +description = "" +authors = ["Jan Range "] +license = "MIT" +readme = "README.md" +include = ["pyenzyme/units/ontomaps.toml", "pyenzyme/sbml/mappings.toml"] + +[tool.poetry.dependencies] +python = "^3.10" +python-libsbml = "^5.20.2" +toml = "^0.10.2" +rich = "^13.7.1" +pandas = "^2.2.2" +pydantic = "^2.7.4" +loguru = "^0.7.2" +rdflib = "7.0.0" +sympy = "^1.12.1" + +[tool.poetry.group.neo4j.dependencies] +neo4j = "^5.21.0" + +[tool.poetry.group.excel.dependencies] +openpyxl = "^3.1.4" + +[tool.poetry.group.tests.dependencies] +openpyxl = "^3.1.4" +pytest = "^8.2.2" + +[build-system] +requires = ["poetry-core"] +build-backend = "poetry.core.masonry.api" From 63016176390749f2936409940a9335bfecdd495b Mon Sep 17 00:00:00 2001 From: Jan Range Date: Sat, 22 Jun 2024 17:56:36 +0200 Subject: [PATCH 006/172] linting and testing workflows --- .github/workflows/lint.yml | 8 ++++++++ .github/workflows/unit-tests.yaml | 27 +++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 .github/workflows/lint.yml create mode 100644 .github/workflows/unit-tests.yaml diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 00000000..b2681389 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,8 @@ +name: Ruff +on: [push, pull_request] +jobs: + ruff: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: chartboost/ruff-action@v1 diff --git a/.github/workflows/unit-tests.yaml b/.github/workflows/unit-tests.yaml new file mode 100644 index 00000000..7cfb984d --- /dev/null +++ b/.github/workflows/unit-tests.yaml @@ -0,0 +1,27 @@ +name: Unit Tests + +on: [push] + +jobs: + build: + runs-on: ubuntu-latest + strategy: + max-parallel: 4 + matrix: + python-version: ["3.10", "3.11", "3.12"] + + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python3 -m pip install --upgrade pip + python3 -m pip install pytest-cov openpyxl + pip3 install -e . + - name: Test with pytest + run: | + python3 -m pytest -v From 0c979c54952684287bb235e485af02a0892a1c35 Mon Sep 17 00:00:00 2001 From: Jan Range Date: Sat, 22 Jun 2024 17:56:58 +0200 Subject: [PATCH 007/172] update fixtures --- tests/conftest.py | 75 +++++------------------------------------------ 1 file changed, 7 insertions(+), 68 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 57c547e1..34f3d1b8 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,77 +1,16 @@ import pytest -import json -import yaml - -from pyenzyme.enzymeml.core.enzymemldocument import EnzymeMLDocument -from pyenzyme.enzymeml.core.measurement import Measurement -from pyenzyme.enzymeml.core.measurementData import MeasurementData -from pyenzyme.enzymeml.core.replicate import Replicate -from pyenzyme.enzymeml.core.enzymereaction import EnzymeReaction -from pyenzyme.enzymeml.tools.unitcreator import UnitCreator -from pyenzyme.enzymeml.models.kineticmodel import KineticModel, KineticParameter +import pyenzyme as pe @pytest.fixture -def enzmldoc(): - return EnzymeMLDocument.fromJSON( - open("./tests/fixtures/enzmldoc_object.json").read() +def measurement_valid(): + return pe.EnzymeMLDocument.model_validate_json( + open("tests/fixtures/tabular/measurement_valid.json").read() ) @pytest.fixture -def reaction(): - return EnzymeReaction.fromJSON(open("./tests/fixtures/reaction_object.json").read()) - - -@pytest.fixture -def measurement(): - return Measurement.fromJSON(open("./tests/fixtures/measurement_object.json").read()) - - -@pytest.fixture -def measurement_data(): - return MeasurementData.fromJSON( - open("./tests/fixtures/measurement_data_object.json").read() +def measurement_invalid(): + return pe.EnzymeMLDocument.model_validate_json( + open("tests/fixtures/tabular/measurement_invalid.json").read() ) - - -@pytest.fixture -def replicate(): - return Replicate.fromJSON(open("./tests/fixtures/replicate_object.json").read()) - - -@pytest.fixture -def correct_model(): - parameters = [KineticParameter(name="x", value=10.0, unit="mmole / l")] - return KineticModel(name="SomeModel", equation="s0 * x", parameters=parameters) - - -@pytest.fixture -def faulty_model(): - parameters = [KineticParameter(name="x", value=10.0, unit="mmole / l")] - return KineticModel(name="SomeModel", equation="s10 * x", parameters=parameters) - - -@pytest.fixture -def always_pass(): - return yaml.safe_load(open("./tests/fixtures/validator_always_passes.yaml")) - - -@pytest.fixture -def should_fail(): - return yaml.safe_load(open("./tests/fixtures/validator_should_fail.yaml")) - - -@pytest.fixture -def template_example(): - return EnzymeMLDocument.fromJSON(open("tests/fixtures/template_result.json").read()) - - -@pytest.fixture -def creator(): - return UnitCreator() - - -@pytest.fixture -def blank_enzmldoc(): - return EnzymeMLDocument(name="Test") From 28697dff969f4f48746e99378b6159b9d4905fa8 Mon Sep 17 00:00:00 2001 From: Jan Range Date: Sat, 22 Jun 2024 17:57:54 +0200 Subject: [PATCH 008/172] ignore mac things --- .gitignore | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index bde4b7b1..9a748083 100644 --- a/.gitignore +++ b/.gitignore @@ -138,8 +138,11 @@ dmypy.json cython_debug/ pyenzyme/Examples/getJSONValid.py -# test dirs +# test dirs tests/tmp # PyCharm IDE -.idea/ \ No newline at end of file +.idea/ + +# Mac OS +.DS_Store From a924ce60723b0808774d2b9092f47151cb7c8ab9 Mon Sep 17 00:00:00 2001 From: Jan Range Date: Sat, 22 Jun 2024 17:58:02 +0200 Subject: [PATCH 009/172] fix typos --- templates/EnzymeML_Validation_Template.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/templates/EnzymeML_Validation_Template.yaml b/templates/EnzymeML_Validation_Template.yaml index a9a04df3..9937caa2 100644 --- a/templates/EnzymeML_Validation_Template.yaml +++ b/templates/EnzymeML_Validation_Template.yaml @@ -140,7 +140,7 @@ protein_dict: - null unit: mandatory: true - description: Unit of the proteins intial concentration. + description: Unit of the proteins initial concentration. range: min: null max: null @@ -230,7 +230,7 @@ complex_dict: - null unit: mandatory: true - description: Unit of the proteins intial concentration. + description: Unit of the proteins initial concentration. range: min: null max: null @@ -279,7 +279,7 @@ reactant_dict: - null unit: mandatory: true - description: Unit of the reactant intial concentration. + description: Unit of the reactant initial concentration. range: min: null max: null From 984847e6b852224a28ef14f273022fe1054f1451 Mon Sep 17 00:00:00 2001 From: Jan Range Date: Sat, 22 Jun 2024 17:58:07 +0200 Subject: [PATCH 010/172] update readme --- README.md | 62 +++++-------------------------------------------------- 1 file changed, 5 insertions(+), 57 deletions(-) diff --git a/README.md b/README.md index c3f21845..93716b65 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ -

+

PyEnzyme is the interface to the data model EnzymeML and offers a convenient way to document and model research data. Lightweight syntax for rapid development of data management solution in enzymology and biocatalysis.

### 🧬 Features @@ -17,7 +17,7 @@ PyEnzyme is the interface to the data model EnzymeML and offers a conveni - **Visualize** experimental results for inspection and publication. ## ⚡️ Quick start -Get started with PyEnzyme by running the following command +Get started with PyEnzyme by running the following command ``` # Using PyPI @@ -53,71 +53,19 @@ python -m pip install "pyenzyme[dataverse]" python -m pip install "pyenzyme[all]" ``` -### 🚀 PyEnzyme's REST-API - -If you want to deploy PyEnzyme as a server and use our REST-API to access PyEnzyme from any HTTP-capable programming language, use our official [docker image](https://hub.docker.com/r/enzymeml/pyenzyme/tags) or simply copy and past the following. - -```bash -docker pull enzymeml/pyenzyme:latest -docker run -p 8000:8000 enzymeml/pyenzyme:latest -``` -See the [API documentation](https://api.enzymeml.org) for details on our endpoints. You can also use our self-hosted PyEnzyme instance if you have no server space - Use https://api.enzymeml.org as base URL to the endpoints. - ## ⚙️ Example code This example will demonstrate how to create a simple EnzymeML document using PyEnzyme and how to use initializers from official databases **Chebi** and **UniProt** to gather metadata. For more examples, please visit our [documentation](https://pyenzyme.readthedocs.io/en/latest/index.html#) (Work in progress) ```python -import pyenzyme as pe - -# Initialize your document -enzmldoc = pe.EnzymeMLDocument(name="MyDoc") - -# Create a vessel and add it to the document -vessel = pe.Vessel(name="Falcon Tube", volume=10.0, unit="ml") -vessel_id = enzmldoc.addVessel(vessel) - -# Set up reactants and proteins from databases -protein = pe.Protein.fromUniProtID( - uniprotid="P07327", vessel_id=vessel_id, - init_conc=10.0, unit="fmole / l" -) - -substrate = pe.Reactant.fromChebiID( - chebi_id="CHEBI:16236", vessel_id=vessel_id, - init_conc=200.0, unit="mmole / l" -) - -product = pe.Reactant.fromChebiID( - chebi_id="CHEBI:15343", vessel_id=vessel_id, - init_conc=0.0, unit="mmole / l" -) - -# ... and add each to the document -protein_id = enzmldoc.addProtein(protein) -substrate_id = enzmldoc.addReactant(substrate) -product_id = enzmldoc.addReactant(product) - -# Build the reaction -reaction = pe.EnzymeReaction.fromEquation( - equation="ethanol -> acetaldehyde", - modifiers=[protein_id], - name="Alocohol dehydrogenation", - enzmldoc=enzmldoc -) - -# ... and add it to the document -reaction_id = enzmldoc.addReaction(reaction) - -# Finally, save the document to an OMEX archive -enzmldoc.toFile(".", name="ADH Experiment") +# To be added for V2 ``` (Code should run as it is) ## 📖 Documentation and more examples -Explore all the features of **PyEnzyme** in our [documentation](https://pyenzyme.readthedocs.io/en/latest/index.html#) and take part in [Discussions](https://github.com/EnzymeML/PyEnzyme/discussions) and/or [Issues](https://github.com/EnzymeML/PyEnzyme/issues). +Explore all the features of **PyEnzyme** in our [documentation](https://pyenzyme.readthedocs.io/en/latest/index.html#) and take part in [Discussions](https://github.com/EnzymeML/PyEnzyme/discussions) and/or [Issues](https://github.com/EnzymeML/PyEnzyme/issues). ## ⚠️ License -`PyEnzyme` is free and open-source software licensed under the [BSD 2-Clause License](https://github.com/EnzymeML/PyEnzyme/blob/main/LICENSE). +`PyEnzyme` is free and open-source software licensed under the [BSD 2-Clause License](https://github.com/EnzymeML/PyEnzyme/blob/main/LICENSE). From 51ad12f552f9e083b28d8ff176f524241c5b79cb Mon Sep 17 00:00:00 2001 From: Jan Range Date: Sat, 22 Jun 2024 17:58:21 +0200 Subject: [PATCH 011/172] add new tests --- tests/__init__.py | 1 + tests/fixtures/tabular/data.csv | 23 + tests/fixtures/tabular/data.xlsx | Bin 0 -> 9432 bytes tests/fixtures/tabular/data_invalid.csv | 23 + tests/fixtures/tabular/data_invalid.xlsx | Bin 0 -> 9383 bytes tests/fixtures/tabular/data_invalid_chars.csv | 23 + tests/fixtures/tabular/measurement_export.csv | 0 .../fixtures/tabular/measurement_invalid.json | 208 +++++++ tests/fixtures/tabular/measurement_valid.json | 523 ++++++++++++++++++ tests/integration/__init__.py | 0 tests/unit/__init__.py | 1 + tests/unit/test_equations.py | 256 +++++++++ tests/unit/test_tabular.py | 147 +++++ 13 files changed, 1205 insertions(+) create mode 100644 tests/fixtures/tabular/data.csv create mode 100644 tests/fixtures/tabular/data.xlsx create mode 100644 tests/fixtures/tabular/data_invalid.csv create mode 100644 tests/fixtures/tabular/data_invalid.xlsx create mode 100644 tests/fixtures/tabular/data_invalid_chars.csv create mode 100644 tests/fixtures/tabular/measurement_export.csv create mode 100644 tests/fixtures/tabular/measurement_invalid.json create mode 100644 tests/fixtures/tabular/measurement_valid.json create mode 100644 tests/integration/__init__.py create mode 100644 tests/unit/__init__.py create mode 100644 tests/unit/test_equations.py create mode 100644 tests/unit/test_tabular.py diff --git a/tests/__init__.py b/tests/__init__.py index e69de29b..8b137891 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -0,0 +1 @@ + diff --git a/tests/fixtures/tabular/data.csv b/tests/fixtures/tabular/data.csv new file mode 100644 index 00000000..aac51d84 --- /dev/null +++ b/tests/fixtures/tabular/data.csv @@ -0,0 +1,23 @@ +time;s0;s1;id +0.0;0.0;10.0;m0 +1.0;1.0;9.0;m0 +2.0;2.0;8.0;m0 +3.0;3.0;7.0;m0 +4.0;4.0;6.0;m0 +5.0;5.0;5.0;m0 +6.0;6.0;4.0;m0 +7.0;7.0;3.0;m0 +8.0;8.0;2.0;m0 +9.0;9.0;1.0;m0 +10.0;10.0;0.0;m0 +0.0;0.0;10.0;m1 +1.0;1.0;9.0;m1 +2.0;2.0;8.0;m1 +3.0;3.0;7.0;m1 +4.0;4.0;6.0;m1 +5.0;5.0;5.0;m1 +6.0;6.0;4.0;m1 +7.0;7.0;3.0;m1 +8.0;8.0;2.0;m1 +9.0;9.0;1.0;m1 +10.0;10.0;0.0;m1 diff --git a/tests/fixtures/tabular/data.xlsx b/tests/fixtures/tabular/data.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..bfec157607e1e824fb2eda8ea0520793fd3a68bc GIT binary patch literal 9432 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 DEn$(- literal 0 HcmV?d00001 diff --git a/tests/fixtures/tabular/data_invalid.csv b/tests/fixtures/tabular/data_invalid.csv new file mode 100644 index 00000000..2199d4a3 --- /dev/null +++ b/tests/fixtures/tabular/data_invalid.csv @@ -0,0 +1,23 @@ +s0;s1;id +0.0;10.0;m0 +1.0;9.0;m0 +2.0;8.0;m0 +3.0;7.0;m0 +4.0;6.0;m0 +5.0;5.0;m0 +6.0;4.0;m0 +7.0;3.0;m0 +8.0;2.0;m0 +9.0;1.0;m0 +10.0;0.0;m0 +0.0;10.0;m1 +1.0;9.0;m1 +2.0;8.0;m1 +3.0;7.0;m1 +4.0;6.0;m1 +5.0;5.0;m1 +6.0;4.0;m1 +7.0;3.0;m1 +8.0;2.0;m1 +9.0;1.0;m1 +10.0;0.0;m1 diff --git a/tests/fixtures/tabular/data_invalid.xlsx b/tests/fixtures/tabular/data_invalid.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..1fb2882ee198a5126a48fa4aa5935fa2fa25b00a GIT binary patch literal 9383 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 L@27rK{=E7h(H3o= literal 0 HcmV?d00001 diff --git a/tests/fixtures/tabular/data_invalid_chars.csv b/tests/fixtures/tabular/data_invalid_chars.csv new file mode 100644 index 00000000..2e89614b --- /dev/null +++ b/tests/fixtures/tabular/data_invalid_chars.csv @@ -0,0 +1,23 @@ +s0;s1;id +0.0;10.0;m0 +1.0;m1;m0 +2.0;8.0;m0 +3.0;7.0;m0 +m0;6.0;m0 +5.0;5.0;m0 +6.0;4.0;m0 +7.0;3.0;m0 +8.0;2.0;m0 +9.0;1.0;m0 +10.0;0.0;m0 +0.0;10.0;m1 +1.0;9.0;m1 +2.0;8.0;m1 +3.0;7.0;m1 +4.0;6.0;m1 +5.0;5.0;m1 +6.0;4.0;m1 +7.0;3.0;m1 +8.0;2.0;m1 +9.0;1.0;m1 +10.0;0.0;m1 diff --git a/tests/fixtures/tabular/measurement_export.csv b/tests/fixtures/tabular/measurement_export.csv new file mode 100644 index 00000000..e69de29b diff --git a/tests/fixtures/tabular/measurement_invalid.json b/tests/fixtures/tabular/measurement_invalid.json new file mode 100644 index 00000000..204c4609 --- /dev/null +++ b/tests/fixtures/tabular/measurement_invalid.json @@ -0,0 +1,208 @@ +{ + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "name": "schema:title", + "references": { + "@id": "schema:citation", + "@type": "@id" + }, + "created": "schema:dateCreated", + "modified": "schema:dateModified", + "creators": "schema:creator" + }, + "@id": "enzml:EnzymeMLDocument/32912026-6dad-4c20-97c4-d0924c8a60d7", + "@type": ["enzml:EnzymeMLDocument"], + "name": "Test", + "references": [], + "creators": [], + "vessels": [], + "proteins": [], + "complexes": [], + "small_molecules": [], + "reactions": [], + "measurements": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + }, + "@id": "enzml:Measurement/83505f32-65c8-44eb-a54e-07540deb6182", + "@type": ["enzml:Measurement"], + "id": "m1", + "name": "Measurement 2", + "species": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/e802b437-075e-4c91-bba6-5c178d7f93a1", + "@type": ["enzml:MeasurementData"], + "species_id": "s1", + "init_conc": 0.0, + "data_type": "conc", + "data_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000063", + "@type": ["OBO:UO_0000000"], + "name": "mmol / l", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/e1ec421c-95c3-4eb0-aa7d-fd8c8f181816", + "@type": ["enzml:BaseUnit"], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/f84a3b44-1548-4280-a4ef-6ead5fc9fd48", + "@type": ["enzml:BaseUnit"], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "time_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000010", + "@type": ["OBO:UO_0000000"], + "name": "s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/7974d9a4-3fa1-4c6f-91f4-d22a0af85655", + "@type": ["enzml:BaseUnit"], + "kind": "second", + "exponent": 1, + "scale": 1.0 + } + ] + }, + "time": [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 8.0], + "data": [ + 0.0, 0.2, 0.4, 0.6000000000000001, 0.8, 1.0, 1.2000000000000002, + 1.4000000000000001, 1.6, 1.8 + ], + "is_calculated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/00e58e3d-60ac-4501-813f-b6386398a8c1", + "@type": ["enzml:MeasurementData"], + "species_id": "s2", + "init_conc": 100.0, + "data_type": "conc", + "data_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000063", + "@type": ["OBO:UO_0000000"], + "name": "mmol / l", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/e1ec421c-95c3-4eb0-aa7d-fd8c8f181816", + "@type": ["enzml:BaseUnit"], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/f84a3b44-1548-4280-a4ef-6ead5fc9fd48", + "@type": ["enzml:BaseUnit"], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "time_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000010", + "@type": ["OBO:UO_0000000"], + "name": "s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/7974d9a4-3fa1-4c6f-91f4-d22a0af85655", + "@type": ["enzml:BaseUnit"], + "kind": "second", + "exponent": 1, + "scale": 1.0 + } + ] + }, + "time": [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0], + "data": [100.0, 99.0, 98.0, 97.0, 96.0, 95.0, 94.0, 93.0, 92.0, 91.0], + "is_calculated": false + } + ] + } + ], + "equations": [], + "parameters": [] +} diff --git a/tests/fixtures/tabular/measurement_valid.json b/tests/fixtures/tabular/measurement_valid.json new file mode 100644 index 00000000..ed462a27 --- /dev/null +++ b/tests/fixtures/tabular/measurement_valid.json @@ -0,0 +1,523 @@ +{ + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "name": "schema:title", + "references": { + "@id": "schema:citation", + "@type": "@id" + }, + "created": "schema:dateCreated", + "modified": "schema:dateModified", + "creators": "schema:creator" + }, + "@id": "enzml:EnzymeMLDocument/84fdaf73-0c33-4eb6-adc7-7f17b1523b4a", + "@type": [ + "enzml:EnzymeMLDocument" + ], + "name": "Test", + "references": [], + "creators": [], + "vessels": [], + "proteins": [], + "complexes": [], + "small_molecules": [], + "reactions": [], + "measurements": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + }, + "@id": "enzml:Measurement/111038ce-6e37-44da-a715-611c9b869bc9", + "@type": [ + "enzml:Measurement" + ], + "id": "m0", + "name": "Measurement 1", + "species": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/8b78f5b5-25aa-4793-8a57-c0d791303f07", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "s1", + "init_conc": 0.0, + "data_type": "conc", + "data_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "name": "mmol / l", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/b943545d-894b-445c-a745-c1215180ec8d", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/c85ac147-42ac-40d6-bc03-172be2f0d7ad", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "time_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000010", + "@type": [ + "OBO:UO_0000000" + ], + "name": "s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/8aec2395-2071-48e9-85ed-120847dfe64a", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": 1, + "scale": 1.0 + } + ] + }, + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0 + ], + "data": [ + 0.0, + 0.1, + 0.2, + 0.30000000000000004, + 0.4, + 0.5, + 0.6000000000000001, + 0.7000000000000001, + 0.8, + 0.9 + ], + "is_calculated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/e2fd62b6-88d6-4d87-b8df-a3747677c2eb", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "s2", + "init_conc": 10.0, + "data_type": "conc", + "data_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "name": "mmol / l", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/b943545d-894b-445c-a745-c1215180ec8d", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/c85ac147-42ac-40d6-bc03-172be2f0d7ad", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "time_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000010", + "@type": [ + "OBO:UO_0000000" + ], + "name": "s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/8aec2395-2071-48e9-85ed-120847dfe64a", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": 1, + "scale": 1.0 + } + ] + }, + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0 + ], + "data": [ + 10.0, + 9.0, + 8.0, + 7.0, + 6.0, + 5.0, + 4.0, + 3.0, + 2.0, + 1.0 + ], + "is_calculated": false + } + ] + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + }, + "@id": "enzml:Measurement/996cb565-edf0-4b4c-871b-d9a288831c88", + "@type": [ + "enzml:Measurement" + ], + "id": "m1", + "name": "Measurement 2", + "species": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/3c413494-54e7-4ba4-aeee-0382d778e0c9", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "s1", + "init_conc": 0.0, + "data_type": "conc", + "data_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "name": "mmol / l", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/b943545d-894b-445c-a745-c1215180ec8d", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/c85ac147-42ac-40d6-bc03-172be2f0d7ad", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "time_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000010", + "@type": [ + "OBO:UO_0000000" + ], + "name": "s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/8aec2395-2071-48e9-85ed-120847dfe64a", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": 1, + "scale": 1.0 + } + ] + }, + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0 + ], + "data": [ + 0.0, + 0.2, + 0.4, + 0.6000000000000001, + 0.8, + 1.0, + 1.2000000000000002, + 1.4000000000000001, + 1.6, + 1.8 + ], + "is_calculated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/7af21a16-9cab-49e2-9250-278a4a57c91f", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "s2", + "init_conc": 100.0, + "data_type": "conc", + "data_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "name": "mmol / l", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/b943545d-894b-445c-a745-c1215180ec8d", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/c85ac147-42ac-40d6-bc03-172be2f0d7ad", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "time_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000010", + "@type": [ + "OBO:UO_0000000" + ], + "name": "s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/8aec2395-2071-48e9-85ed-120847dfe64a", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": 1, + "scale": 1.0 + } + ] + }, + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0 + ], + "data": [ + 100.0, + 99.0, + 98.0, + 97.0, + 96.0, + 95.0, + 94.0, + 93.0, + 92.0, + 91.0 + ], + "is_calculated": false + } + ] + } + ], + "equations": [], + "parameters": [] +} \ No newline at end of file diff --git a/tests/integration/__init__.py b/tests/integration/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/unit/__init__.py b/tests/unit/__init__.py new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/tests/unit/__init__.py @@ -0,0 +1 @@ + diff --git a/tests/unit/test_equations.py b/tests/unit/test_equations.py new file mode 100644 index 00000000..3556555d --- /dev/null +++ b/tests/unit/test_equations.py @@ -0,0 +1,256 @@ +import pytest + +from pyenzyme.equations._math import build_equation, build_equations +from pyenzyme.equations._chem import build_reaction, build_reactions +from pyenzyme.units import M, second +from pyenzyme.model import EquationType + + +class TestMathEquations: + def test_parse_equation(self): + # Arrange + equation = "s1'(t) = kcat * p0(t) * s0(t)" + + # Act + equation = build_equation(equation, unit=M / second) + + # Assert + expected_vars = ["p0", "s0"] + expected_params = ["kcat"] + + assert ( + equation.species_id == "s1" + ), f"Species ID is not correct. Got {equation.species_id}" + assert ( + equation.equation == "kcat*p0*s0" + ), "Equation is not correct. Got {equation.equation.equation}" + assert equation.parameters[0].name == "kcat", "Parameter name is not correct" + assert ( + equation.parameters[0].symbol == "kcat" + ), "Parameter symbol is not correct" + + for var in equation.variables: + assert var.name in expected_vars + assert var.symbol in expected_vars + + for param in equation.parameters: + assert param.name in expected_params + assert param.symbol in expected_params + + def test_invalid_equation_no_left(self): + # Arrange + equation = "kcat * p0(t) * s0(t)" + + # Act + with pytest.raises(ValueError): + equation = build_equation(equation, unit=M / second) + + def test_invalid_equation_no_right(self): + # Arrange + equation = "s1'(t) =" + + # Act + with pytest.raises(ValueError): + equation = build_equation(equation, unit=M / second) + + def test_invalid_equation_no_equals(self): + # Arrange + equation = "s1'(t) kcat * p0(t) * s0(t)" + + # Act + with pytest.raises(ValueError): + equation = build_equation(equation, unit=M / second) + + def test_equation_with_funs(self): + # Arrange + equation = "s1'(t) = kcat * exp(p0(t) * t)" + + # Act + equation = build_equation(equation, unit=M / second) + + # Assert + assert ( + equation.species_id == "s1" + ), f"Species ID is not correct. Got {equation.species_id}" + assert ( + equation.equation == "kcat*exp(p0*t)" + ), f"Equation is not correct. Got {equation.equation}" + + def test_equation_with_fun_only_t(self): + # Arrange + equation = "s1'(t) = kcat * exp(t)" + + # Act + equation = build_equation(equation, unit=M / second) + + # Assert + assert ( + equation.species_id == "s1" + ), f"Species ID is not correct. Got {equation.species_id}" + assert ( + equation.equation == "kcat*exp(t)" + ), f"Equation is not correct. Got {equation.equation}" + + def test_multiple_equations(self): + # Arrange + equations = [ + "s1'(t) = kcat * E_tot * s0(t)", + "E_tot = p0(t) + p1(t)", + ] + + # Act + units = [M / second, M] + equations = build_equations(*equations, units=units) + + # Assert + assert len(equations) == 2, f"Expected 2 equations. Got {len(equations)}" + + def test_init_assigment_equation(self): + # Arrange + equation = "E_tot = p0 + p1" + + # Act + equation = build_equation(equation, unit=M) + + # Assert + assert ( + equation.species_id == "E_tot" + ), f"Species ID is not correct. Got {equation.species_id}" + assert ( + equation.equation == "p0 + p1" + ), f"Equation is not correct. Got {equation.equation}" + assert ( + equation.equation_type == EquationType.INITIAL_ASSIGNMENT + ), f"Equation type is not correct. Got {equation.equation_type}" + + def test_assigment_equation(self): + # Arrange + equation = "E_tot(t) = p0 + p1" + + # Act + equation = build_equation(equation, unit=M) + + # Assert + assert ( + equation.species_id == "E_tot" + ), f"Species ID is not correct. Got {equation.species_id}" + assert ( + equation.equation == "p0 + p1" + ), f"Equation is not correct. Got {equation.equation}" + assert ( + equation.equation_type == EquationType.ASSIGNMENT + ), f"Equation type is not correct. Got {equation.equation_type}" + + +class TestChemEqautions: + def test_build_irrev_reaction(self): + # Arrange + reaction_str = "2 s1 + s2 -> 2 s3 + s4" + + # Act + reac = build_reaction( + id="R1", + name="Reaction 1", + scheme=reaction_str, + ) + + # Assert + expected = [ + (-2.0, "s1"), + (-1.0, "s2"), + (2.0, "s3"), + (1.0, "s4"), + ] + + assert reac.id == "R1", f"Reaction ID is not correct. Got {reac.id}" + assert ( + reac.name == "Reaction 1" + ), f"Reaction name is not correct. Got {reac.name}" + + for stoich, species in expected: + element = next( + filter(lambda x: x.species_id == species, reac.species), None + ) + + if not element: + assert False, f"Species {species} not found in reaction" + + assert ( + element.stoichiometry == stoich + ), f"Stoichiometry for {species} is not correct. Got {element.stoichiometry}" + + assert ( + element.species_id == species + ), f"Species ID for {species} is not correct. Got {element.species_id}" + + def test_build_rev_reaction(self): + # Arrange + reaction_str = "s1 + s2 <=> s3 + s4" + + # Act + reac = build_reaction( + id="R1", + name="Reaction 1", + scheme=reaction_str, + ) + + # Assert + assert reac.reversible is True, "Reaction is not reversible" + + def test_build_w_modifiers(self): + # Arrange + reaction_str = "s1 + s2 -> s3 + s4" + + # Act + reac = build_reaction( + id="R1", + name="Reaction 1", + scheme=reaction_str, + modifiers=["s5", "s6"], + ) + + # Assert + assert ( + len(reac.modifiers) == 2 + ), f"Expected 2 modifiers. Got {len(reac.modifiers)}" + + def test_build_invalid_reaction(self): + # Arrange + reaction_str = "s1 + s2 + s3" + + # Act + with pytest.raises(ValueError): + build_reaction("R1", "Reaction 1", reaction_str) + + def test_build_multiple_reactions(self): + # Arrange + reactions = [ + "s1 + s2 -> s3 + s4", + "s2 -> s5", + ] + + # Act + reacs = build_reactions(*reactions) + + # Assert + assert len(reacs) == 2, f"Expected 2 reactions. Got {len(reacs)}" + + def test_build_multiple_reactions_w_modifiers(self): + # Arrange + reactions = [ + "s1 + s2 -> s3 + s4", + "s2 -> s5", + ] + + # Act + modifiers = {"r1": ["p0"]} + reacs = build_reactions(*reactions, modifiers=modifiers) + + # Assert + assert len(reacs) == 2, f"Expected 2 reactions. Got {len(reacs)}" + + r0 = reacs[0] + assert len(r0.modifiers) == 1, f"Expected 1 modifier. Got {len(r0.modifiers)}" + + r1 = reacs[1] + assert len(r1.modifiers) == 0, f"Expected 0 modifiers. Got {len(r1.modifiers)}" diff --git a/tests/unit/test_tabular.py b/tests/unit/test_tabular.py new file mode 100644 index 00000000..821faa32 --- /dev/null +++ b/tests/unit/test_tabular.py @@ -0,0 +1,147 @@ +import pytest +import pandas as pd +import pyenzyme as pe + +from pyenzyme.units import mM, s +from pyenzyme.tabular import _measurement_to_pandas, to_pandas + + +class TestTabularExport: + def test_single_measurement(self, measurement_valid): + """Test that a single measurement can be converted to a pandas DataFrame""" + + # Act + df = _measurement_to_pandas(measurement_valid.measurements[0]) + + # Assert + assert isinstance(df, pd.DataFrame), f"Expected a DataFrame. Got {type(df)}" + + def test_invalid_measurement(self, measurement_invalid): + """Test that an invalid measurement raises a ValueError""" + + # Act + with pytest.raises(ValueError): + _measurement_to_pandas(measurement_invalid.measurements[0]) + + def test_multiple_measurements(self, measurement_valid): + """Test that multiple measurements can be converted to a pandas DataFrame""" + + # Act + df = to_pandas(measurement_valid) + + # Assert + total_time_len = sum( + [len(m.species[0].time) for m in measurement_valid.measurements] + ) + + assert ( + df.shape[0] == total_time_len + ), f"Expected {total_time_len} rows. Got {df.shape[0]}" + assert df.shape[1] == 4, f"Expected 4 columns. Got {df.shape[1]}" + assert isinstance(df, pd.DataFrame), f"Expected a DataFrame. Got {type(df)}" + assert ( + df["id"].nunique() == 2 + ), f"Expected 2 unique IDs. Got {df['id'].nunique()}" + + for measurement in measurement_valid.measurements: + df_sub = df[df["id"] == measurement.id] + assert df_sub.shape[0] == len( + measurement.species[0].time + ), f"Expected {len(measurement.species[0].time)} rows. Got {df_sub.shape[0]}" + + for species in measurement.species: + assert ( + species.species_id in df.columns + ), f"Expected column for {species}" + + +class TestTabularImport: + def test_csv_import(self): + """Test that a CSV file can be imported to a pandas DataFrame""" + # Act + meas = pe.read_csv("tests/fixtures/tabular/data.csv", data_unit=mM, time_unit=s) + + # Assert + assert len(meas) == 2, f"Expected 2 measurements. Got {len(meas)}" + + for m in meas: + assert len(m.species) == 2, f"Expected 2 species. Got {len(m.species)}" + assert ( + len(m.species[0].time) == 11 + ), f"Expected 10 time points. Got {len(m.species[0].time)}" + assert ( + len(m.species[1].time) == 11 + ), f"Expected 10 time points. Got {len(m.species[1].time)}" + assert ( + m.species[0].data_unit == mM + ), f"Expected mM. Got {m.species[0].data_unit}" + assert ( + m.species[0].time_unit == s + ), f"Expected s. Got {m.species[0].time_unit}" + assert ( + m.species[1].data_unit == mM + ), f"Expected mM. Got {m.species[1].data_unit}" + assert ( + m.species[1].time_unit == s + ), f"Expected s. Got {m.species[1].time_unit}" + + def test_excel_import(self): + """Test that a Excel file can be imported to a pandas DataFrame""" + # Act + meas = pe.read_excel( + "tests/fixtures/tabular/data.xlsx", data_unit=mM, time_unit=s + ) + + # Assert + assert len(meas) == 2, f"Expected 2 measurements. Got {len(meas)}" + + for m in meas: + assert len(m.species) == 2, f"Expected 2 species. Got {len(m.species)}" + assert ( + len(m.species[0].time) == 11 + ), f"Expected 10 time points. Got {len(m.species[0].time)}" + assert ( + len(m.species[1].time) == 11 + ), f"Expected 10 time points. Got {len(m.species[1].time)}" + assert ( + m.species[0].data_unit == mM + ), f"Expected mM. Got {m.species[0].data_unit}" + assert ( + m.species[0].time_unit == s + ), f"Expected s. Got {m.species[0].time_unit}" + assert ( + m.species[1].data_unit == mM + ), f"Expected mM. Got {m.species[1].data_unit}" + assert ( + m.species[1].time_unit == s + ), f"Expected s. Got {m.species[1].time_unit}" + + def test_invalid_types(self): + """Test that an invalid CSV raises a ValueError""" + # Act + with pytest.raises(AssertionError): + pe.read_csv( + "tests/fixtures/tabular/data_invalid_chars.csv", + data_unit=mM, + time_unit=s, + ) + + def test_invalid_csv(self): + """Test that an invalid CSV raises a ValueError""" + # Act + with pytest.raises(AssertionError): + pe.read_csv( + "tests/fixtures/tabular/data_invalid.csv", + data_unit=mM, + time_unit=s, + ) + + def test_invalid_excel(self): + """Test that an invalid Excel raises a ValueError""" + # Act + with pytest.raises(AssertionError): + pe.read_excel( + "tests/fixtures/tabular/data_invalid.xlsx", + data_unit=mM, + time_unit=s, + ) From 7622a8ad8f8ed283301f264935485bb3ea82431d Mon Sep 17 00:00:00 2001 From: Jan Range Date: Sat, 22 Jun 2024 18:03:29 +0200 Subject: [PATCH 012/172] only lint `pyenzyme` and `tests` --- .github/workflows/lint.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index b2681389..07613b18 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -6,3 +6,8 @@ jobs: steps: - uses: actions/checkout@v4 - uses: chartboost/ruff-action@v1 + with: + src: "./pyenzyme" + - uses: chartboost/ruff-action@v1 + with: + src: "./tests" From ab29d57ceb50430e4ee2b90fff5496ba7aeb7787 Mon Sep 17 00:00:00 2001 From: Jan Range Date: Sat, 22 Jun 2024 18:14:27 +0200 Subject: [PATCH 013/172] add dev examples --- dev-examples/Readme.md | 12 + dev-examples/odes/data.tsv | 23 + dev-examples/odes/enzymeml.json | 1075 +++++++++++++++++++++++++ dev-examples/odes/sbml.xml | 184 +++++ dev-examples/reactions/data.tsv | 23 + dev-examples/reactions/enzymeml.json | 957 ++++++++++++++++++++++ dev-examples/reactions/sbml.xml | 144 ++++ dev-examples/sbml_export_odes.py | 43 + dev-examples/sbml_export_reactions.py | 44 + 9 files changed, 2505 insertions(+) create mode 100644 dev-examples/Readme.md create mode 100644 dev-examples/odes/data.tsv create mode 100644 dev-examples/odes/enzymeml.json create mode 100644 dev-examples/odes/sbml.xml create mode 100644 dev-examples/reactions/data.tsv create mode 100644 dev-examples/reactions/enzymeml.json create mode 100644 dev-examples/reactions/sbml.xml create mode 100644 dev-examples/sbml_export_odes.py create mode 100644 dev-examples/sbml_export_reactions.py diff --git a/dev-examples/Readme.md b/dev-examples/Readme.md new file mode 100644 index 00000000..c9c3843c --- /dev/null +++ b/dev-examples/Readme.md @@ -0,0 +1,12 @@ +# Dev Examples + +These examples are intended to be used during development towards 2.0.0 and will be removed in the final release. + +## How to run the examples + +Dev examples should be run from the root directory of the repository and will produce outputs to the dev-example folder. + +```bash +# From the root directory +python ./dev-examples/*.py +``` diff --git a/dev-examples/odes/data.tsv b/dev-examples/odes/data.tsv new file mode 100644 index 00000000..f99de1f4 --- /dev/null +++ b/dev-examples/odes/data.tsv @@ -0,0 +1,23 @@ +time s0 s1 id +0.0 0.0 10.0 m0 +1.0 1.0 9.0 m0 +2.0 2.0 8.0 m0 +3.0 3.0 7.0 m0 +4.0 4.0 6.0 m0 +5.0 5.0 5.0 m0 +6.0 6.0 4.0 m0 +7.0 7.0 3.0 m0 +8.0 8.0 2.0 m0 +9.0 9.0 1.0 m0 +10.0 10.0 0.0 m0 +0.0 0.0 10.0 m1 +1.0 1.0 9.0 m1 +2.0 2.0 8.0 m1 +3.0 3.0 7.0 m1 +4.0 4.0 6.0 m1 +5.0 5.0 5.0 m1 +6.0 6.0 4.0 m1 +7.0 7.0 3.0 m1 +8.0 8.0 2.0 m1 +9.0 9.0 1.0 m1 +10.0 10.0 0.0 m1 diff --git a/dev-examples/odes/enzymeml.json b/dev-examples/odes/enzymeml.json new file mode 100644 index 00000000..4493f3c7 --- /dev/null +++ b/dev-examples/odes/enzymeml.json @@ -0,0 +1,1075 @@ +{ + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "name": "schema:title", + "references": { + "@id": "schema:citation", + "@type": "@id" + }, + "created": "schema:dateCreated", + "modified": "schema:dateModified", + "creators": "schema:creator" + }, + "@id": "enzml:EnzymeMLDocument/35cadae4-2145-46f6-8f9c-a3a8c53829c8", + "@type": [ + "enzml:EnzymeMLDocument" + ], + "name": "Test", + "references": [], + "creators": [], + "vessels": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "volume": "OBO:OBI_0002139" + }, + "@id": "enzml:Vessel/ac7ebad5-c66d-43d9-9f5d-479bba9a2c8a", + "@type": [ + "enzml:Vessel", + "OBO:OBI_0400081" + ], + "id": "v0", + "name": "Vessel 1", + "volume": 10.0, + "unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000098", + "@type": [ + "OBO:UO_0000000" + ], + "name": "ml", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/df5d030e-305f-4876-95f5-6126133a0681", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": 1, + "scale": -3.0 + } + ] + }, + "constant": true + } + ], + "proteins": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@type": "@id" + }, + "name": "schema:name", + "sequence": "OBO:GSSO_007262", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "organism": "OBO:OBI_0100026", + "organism_tax_id": { + "@type": "@id" + }, + "references": { + "@id": "schema:citation", + "@type": "@id" + } + }, + "@id": "enzml:Protein/1c3d0644-1ce3-4afe-8f71-d24869188913", + "@type": [ + "enzml:Protein", + "schema:Protein" + ], + "id": "p0", + "name": "Enzyme", + "constant": false, + "sequence": "MTEY", + "vessel_id": "v0", + "references": [] + } + ], + "complexes": [], + "small_molecules": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "references": { + "@id": "schema:citation", + "@type": "@id" + } + }, + "@id": "enzml:SmallMolecule/2d122f45-3a5a-478c-8a54-11cac6d29c31", + "@type": [ + "enzml:SmallMolecule" + ], + "id": "s0", + "name": "Substrate", + "constant": false, + "vessel_id": "v0", + "references": [] + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "references": { + "@id": "schema:citation", + "@type": "@id" + } + }, + "@id": "enzml:SmallMolecule/56c68bf7-99be-40a7-9bd4-bf23a6b99b93", + "@type": [ + "enzml:SmallMolecule" + ], + "id": "s1", + "name": "Product", + "constant": false, + "vessel_id": "v0", + "references": [] + } + ], + "reactions": [], + "measurements": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + }, + "@id": "enzml:Measurement/d2b94875-b8d2-4248-81b8-28d15eaebd67", + "@type": [ + "enzml:Measurement" + ], + "id": "m0", + "name": "m0", + "species": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/9fa84251-7159-4e5e-9564-f041a1030edb", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "s0", + "init_conc": 0.0, + "data_type": "conc", + "data_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "name": "mmol / l s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/0ff9ce48-32c0-468e-a544-b5ef6d6b33b6", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/734baec0-49d4-44a9-9721-2939a6e329a8", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/07e17ced-79f5-4ef8-bf2b-01e5217e58b2", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "time_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000010", + "@type": [ + "OBO:UO_0000000" + ], + "name": "s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/07e17ced-79f5-4ef8-bf2b-01e5217e58b2", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], + "data": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], + "is_calculated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/49066465-14a1-44bf-8740-f9b33fc1e3b2", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "s1", + "init_conc": 10.0, + "data_type": "conc", + "data_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "name": "mmol / l s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/0ff9ce48-32c0-468e-a544-b5ef6d6b33b6", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/734baec0-49d4-44a9-9721-2939a6e329a8", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/07e17ced-79f5-4ef8-bf2b-01e5217e58b2", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "time_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000010", + "@type": [ + "OBO:UO_0000000" + ], + "name": "s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/07e17ced-79f5-4ef8-bf2b-01e5217e58b2", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], + "data": [ + 10.0, + 9.0, + 8.0, + 7.0, + 6.0, + 5.0, + 4.0, + 3.0, + 2.0, + 1.0, + 0.0 + ], + "is_calculated": false + } + ], + "ph": 7.0, + "temperature": 298.15, + "temperature_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000012", + "@type": [ + "OBO:UO_0000000" + ], + "name": "K", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/6af90bd2-1124-4908-a486-7c850350248c", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "kelvin", + "exponent": 1, + "scale": 1.0 + } + ] + } + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + }, + "@id": "enzml:Measurement/a826bebe-669b-47d4-9dd2-727e1a25fa29", + "@type": [ + "enzml:Measurement" + ], + "id": "m1", + "name": "m1", + "species": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/fe8e5554-6363-45b0-b372-6847968cbb22", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "s0", + "init_conc": 0.0, + "data_type": "conc", + "data_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "name": "mmol / l s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/0ff9ce48-32c0-468e-a544-b5ef6d6b33b6", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/734baec0-49d4-44a9-9721-2939a6e329a8", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/07e17ced-79f5-4ef8-bf2b-01e5217e58b2", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "time_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000010", + "@type": [ + "OBO:UO_0000000" + ], + "name": "s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/07e17ced-79f5-4ef8-bf2b-01e5217e58b2", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], + "data": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], + "is_calculated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/a0ea2291-588b-44dc-b875-856eb3739ab8", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "s1", + "init_conc": 10.0, + "data_type": "conc", + "data_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "name": "mmol / l s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/0ff9ce48-32c0-468e-a544-b5ef6d6b33b6", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/734baec0-49d4-44a9-9721-2939a6e329a8", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/07e17ced-79f5-4ef8-bf2b-01e5217e58b2", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "time_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000010", + "@type": [ + "OBO:UO_0000000" + ], + "name": "s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/07e17ced-79f5-4ef8-bf2b-01e5217e58b2", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], + "data": [ + 10.0, + 9.0, + 8.0, + 7.0, + 6.0, + 5.0, + 4.0, + 3.0, + 2.0, + 1.0, + 0.0 + ], + "is_calculated": false + } + ], + "ph": 7.0, + "temperature": 298.15, + "temperature_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000012", + "@type": [ + "OBO:UO_0000000" + ], + "name": "K", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/6af90bd2-1124-4908-a486-7c850350248c", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "kelvin", + "exponent": 1, + "scale": 1.0 + } + ] + } + } + ], + "equations": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + }, + "id": { + "@type": "@id" + } + }, + "@id": "enzml:Equation/7fd44774-3008-44db-9de9-59504652c44b", + "@type": [ + "enzml:Equation" + ], + "unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "name": "mmol / l s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/0ff9ce48-32c0-468e-a544-b5ef6d6b33b6", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/734baec0-49d4-44a9-9721-2939a6e329a8", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/07e17ced-79f5-4ef8-bf2b-01e5217e58b2", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "equation_type": "ode", + "equation": "E_tot*kcat*s0/(K_m + s0)", + "species_id": "s1", + "variables": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@type": "@id" + } + }, + "@id": "enzml:EqVariable/77d04fd3-3ee4-4f0d-9c8d-ca9265ab515e", + "@type": [ + "enzml:EqVariable" + ], + "id": "s0", + "name": "s0", + "symbol": "s0" + } + ], + "parameters": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@type": "@id" + } + }, + "@id": "enzml:EqParameter/ee99a464-e1ce-4158-b857-fccdfadda000", + "@type": [ + "enzml:EqParameter" + ], + "id": "E_tot", + "name": "E_tot", + "symbol": "E_tot" + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@type": "@id" + } + }, + "@id": "enzml:EqParameter/3d89b7c9-1814-48fd-9461-4a1f50364440", + "@type": [ + "enzml:EqParameter" + ], + "id": "K_m", + "name": "K_m", + "symbol": "K_m" + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@type": "@id" + } + }, + "@id": "enzml:EqParameter/b8aa5a96-720a-468c-95c4-874a48b12f70", + "@type": [ + "enzml:EqParameter" + ], + "id": "kcat", + "name": "kcat", + "symbol": "kcat" + } + ] + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + }, + "id": { + "@type": "@id" + } + }, + "@id": "enzml:Equation/126f21be-e799-4211-bb90-3c5d6e8bc4b6", + "@type": [ + "enzml:Equation" + ], + "unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "name": "mmol / l s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/0ff9ce48-32c0-468e-a544-b5ef6d6b33b6", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/734baec0-49d4-44a9-9721-2939a6e329a8", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/07e17ced-79f5-4ef8-bf2b-01e5217e58b2", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "equation_type": "initialAssignment", + "equation": "100", + "species_id": "E_tot", + "variables": [], + "parameters": [] + } + ], + "parameters": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + }, + "@id": "enzml:Parameter/24132890-1b53-4d3e-9060-1efc1cf0e8dd", + "@type": [ + "enzml:Parameter" + ], + "id": "E_tot", + "name": "E_tot", + "constant": true + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + }, + "@id": "enzml:Parameter/f07b469e-ecc9-4717-8d42-2e16997ef701", + "@type": [ + "enzml:Parameter" + ], + "id": "K_m", + "name": "K_m", + "constant": true + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + }, + "@id": "enzml:Parameter/4c3869a7-c11b-4cb7-8301-215be7708558", + "@type": [ + "enzml:Parameter" + ], + "id": "kcat", + "name": "kcat", + "constant": true + } + ] +} \ No newline at end of file diff --git a/dev-examples/odes/sbml.xml b/dev-examples/odes/sbml.xml new file mode 100644 index 00000000..6dd17c45 --- /dev/null +++ b/dev-examples/odes/sbml.xml @@ -0,0 +1,184 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Vessel 1 + 10.0 + + + + + + + + + + + + + Enzyme + MTEY + + + + + + MTEY + + + + + + + + Substrate + + + + + + + + + + Product + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100 + + + + + + + + + + + E_tot + kcat + s0 + + + + K_m + s0 + + + + + + + diff --git a/dev-examples/reactions/data.tsv b/dev-examples/reactions/data.tsv new file mode 100644 index 00000000..f99de1f4 --- /dev/null +++ b/dev-examples/reactions/data.tsv @@ -0,0 +1,23 @@ +time s0 s1 id +0.0 0.0 10.0 m0 +1.0 1.0 9.0 m0 +2.0 2.0 8.0 m0 +3.0 3.0 7.0 m0 +4.0 4.0 6.0 m0 +5.0 5.0 5.0 m0 +6.0 6.0 4.0 m0 +7.0 7.0 3.0 m0 +8.0 8.0 2.0 m0 +9.0 9.0 1.0 m0 +10.0 10.0 0.0 m0 +0.0 0.0 10.0 m1 +1.0 1.0 9.0 m1 +2.0 2.0 8.0 m1 +3.0 3.0 7.0 m1 +4.0 4.0 6.0 m1 +5.0 5.0 5.0 m1 +6.0 6.0 4.0 m1 +7.0 7.0 3.0 m1 +8.0 8.0 2.0 m1 +9.0 9.0 1.0 m1 +10.0 10.0 0.0 m1 diff --git a/dev-examples/reactions/enzymeml.json b/dev-examples/reactions/enzymeml.json new file mode 100644 index 00000000..7581d1fc --- /dev/null +++ b/dev-examples/reactions/enzymeml.json @@ -0,0 +1,957 @@ +{ + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "name": "schema:title", + "references": { + "@id": "schema:citation", + "@type": "@id" + }, + "created": "schema:dateCreated", + "modified": "schema:dateModified", + "creators": "schema:creator" + }, + "@id": "enzml:EnzymeMLDocument/706dc08f-91d9-476f-bc39-14e26ae43bd4", + "@type": [ + "enzml:EnzymeMLDocument" + ], + "name": "Test", + "references": [], + "creators": [], + "vessels": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "volume": "OBO:OBI_0002139" + }, + "@id": "enzml:Vessel/f8628df7-14e3-42b8-a77d-7c4f92f1166c", + "@type": [ + "enzml:Vessel", + "OBO:OBI_0400081" + ], + "id": "v0", + "name": "Vessel 1", + "volume": 10.0, + "unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000098", + "@type": [ + "OBO:UO_0000000" + ], + "name": "ml", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/fbb3c11b-a165-4792-8070-dc241f31da60", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": 1, + "scale": -3.0 + } + ] + }, + "constant": true + } + ], + "proteins": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@type": "@id" + }, + "name": "schema:name", + "sequence": "OBO:GSSO_007262", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "organism": "OBO:OBI_0100026", + "organism_tax_id": { + "@type": "@id" + }, + "references": { + "@id": "schema:citation", + "@type": "@id" + } + }, + "@id": "enzml:Protein/86214cf8-977c-4fd0-8c1a-b142c32eaa74", + "@type": [ + "enzml:Protein", + "schema:Protein" + ], + "id": "p0", + "name": "Enzyme", + "constant": false, + "sequence": "MTEY", + "vessel_id": "v0", + "references": [] + } + ], + "complexes": [], + "small_molecules": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "references": { + "@id": "schema:citation", + "@type": "@id" + } + }, + "@id": "enzml:SmallMolecule/da9af365-0490-4495-b410-98183fe493ca", + "@type": [ + "enzml:SmallMolecule" + ], + "id": "s0", + "name": "Substrate", + "constant": false, + "vessel_id": "v0", + "references": [] + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "references": { + "@id": "schema:citation", + "@type": "@id" + } + }, + "@id": "enzml:SmallMolecule/378ca858-97b7-4eed-9187-2fe73959885f", + "@type": [ + "enzml:SmallMolecule" + ], + "id": "s1", + "name": "Product", + "constant": false, + "vessel_id": "v0", + "references": [] + } + ], + "reactions": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "modifiers": { + "@type": "@id" + } + }, + "@id": "enzml:Reaction/e29a838b-542f-4772-8936-087670816036", + "@type": [ + "enzml:Reaction" + ], + "id": "Reaction 1", + "name": "Reaction 1", + "reversible": false, + "kinetic_law": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + }, + "id": { + "@type": "@id" + } + }, + "@id": "enzml:Equation/6394e9d8-13ae-4b38-bbfb-c8d18ca9ab4e", + "@type": [ + "enzml:Equation" + ], + "unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "name": "mmol / l s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/64d34694-8942-4ed5-b922-3c928695ec43", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/6a9cc7e3-8777-4438-9a1e-d613cd5ee13a", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/d5995db5-1a95-4cc6-9513-b8a1770cdef9", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "equation_type": "assignment", + "equation": "kcat*p0*s0/(K_m + s0)", + "species_id": "v", + "variables": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@type": "@id" + } + }, + "@id": "enzml:EqVariable/30e94d78-a980-4066-8a91-11de93015927", + "@type": [ + "enzml:EqVariable" + ], + "id": "p0", + "name": "p0", + "symbol": "p0" + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@type": "@id" + } + }, + "@id": "enzml:EqVariable/a57075b6-3179-42ae-b99d-0c41de223f22", + "@type": [ + "enzml:EqVariable" + ], + "id": "s0", + "name": "s0", + "symbol": "s0" + } + ], + "parameters": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@type": "@id" + } + }, + "@id": "enzml:EqParameter/a186518c-17b3-4fde-ac7d-94bda76c6be9", + "@type": [ + "enzml:EqParameter" + ], + "id": "K_m", + "name": "K_m", + "symbol": "K_m" + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@type": "@id" + } + }, + "@id": "enzml:EqParameter/1cccb9f1-4edf-4cda-9e6b-04ffc4679795", + "@type": [ + "enzml:EqParameter" + ], + "id": "v", + "name": "v", + "symbol": "v" + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@type": "@id" + } + }, + "@id": "enzml:EqParameter/059857c2-eff4-42ff-96c6-5e3a2438f128", + "@type": [ + "enzml:EqParameter" + ], + "id": "kcat", + "name": "kcat", + "symbol": "kcat" + } + ] + }, + "species": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:ReactionElement/73385fe9-1d7a-4758-8053-c45382c1ad34", + "@type": [ + "enzml:ReactionElement" + ], + "species_id": "s0", + "stoichiometry": -1.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:ReactionElement/db834938-bd23-4e8e-a0a5-ea6f478b7041", + "@type": [ + "enzml:ReactionElement" + ], + "species_id": "s1", + "stoichiometry": 1.0 + } + ], + "modifiers": [ + "p0" + ] + } + ], + "measurements": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + }, + "@id": "enzml:Measurement/b4a44b04-8957-4fd5-9867-d3836bb087d9", + "@type": [ + "enzml:Measurement" + ], + "id": "m0", + "name": "m0", + "species": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/1a8e21e6-77b0-41cb-840e-6240ac2ba7a5", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "s0", + "init_conc": 0.0, + "data_type": "conc", + "data_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "name": "mmol / l s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/64d34694-8942-4ed5-b922-3c928695ec43", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/6a9cc7e3-8777-4438-9a1e-d613cd5ee13a", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/d5995db5-1a95-4cc6-9513-b8a1770cdef9", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "time_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000010", + "@type": [ + "OBO:UO_0000000" + ], + "name": "s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/d5995db5-1a95-4cc6-9513-b8a1770cdef9", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], + "data": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], + "is_calculated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/cb8a53e7-0606-4d07-97bf-d5c544740560", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "s1", + "init_conc": 10.0, + "data_type": "conc", + "data_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "name": "mmol / l s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/64d34694-8942-4ed5-b922-3c928695ec43", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/6a9cc7e3-8777-4438-9a1e-d613cd5ee13a", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/d5995db5-1a95-4cc6-9513-b8a1770cdef9", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "time_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000010", + "@type": [ + "OBO:UO_0000000" + ], + "name": "s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/d5995db5-1a95-4cc6-9513-b8a1770cdef9", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], + "data": [ + 10.0, + 9.0, + 8.0, + 7.0, + 6.0, + 5.0, + 4.0, + 3.0, + 2.0, + 1.0, + 0.0 + ], + "is_calculated": false + } + ] + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + }, + "@id": "enzml:Measurement/537b7ad5-d1da-4a3f-8823-ce844cb4fd15", + "@type": [ + "enzml:Measurement" + ], + "id": "m1", + "name": "m1", + "species": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/f9765d6e-ba42-4717-ad70-ba50347040ea", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "s0", + "init_conc": 0.0, + "data_type": "conc", + "data_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "name": "mmol / l s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/64d34694-8942-4ed5-b922-3c928695ec43", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/6a9cc7e3-8777-4438-9a1e-d613cd5ee13a", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/d5995db5-1a95-4cc6-9513-b8a1770cdef9", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "time_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000010", + "@type": [ + "OBO:UO_0000000" + ], + "name": "s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/d5995db5-1a95-4cc6-9513-b8a1770cdef9", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], + "data": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], + "is_calculated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/0a6e65ad-b5a8-4ed8-a75d-c61d12db521e", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "s1", + "init_conc": 10.0, + "data_type": "conc", + "data_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "name": "mmol / l s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/64d34694-8942-4ed5-b922-3c928695ec43", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/6a9cc7e3-8777-4438-9a1e-d613cd5ee13a", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/d5995db5-1a95-4cc6-9513-b8a1770cdef9", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "time_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000010", + "@type": [ + "OBO:UO_0000000" + ], + "name": "s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/d5995db5-1a95-4cc6-9513-b8a1770cdef9", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], + "data": [ + 10.0, + 9.0, + 8.0, + 7.0, + 6.0, + 5.0, + 4.0, + 3.0, + 2.0, + 1.0, + 0.0 + ], + "is_calculated": false + } + ] + } + ], + "equations": [], + "parameters": [] +} \ No newline at end of file diff --git a/dev-examples/reactions/sbml.xml b/dev-examples/reactions/sbml.xml new file mode 100644 index 00000000..602dddb3 --- /dev/null +++ b/dev-examples/reactions/sbml.xml @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Vessel 1 + 10.0 + + + + + + + + + + + + + Enzyme + MTEY + + + + + + MTEY + + + + + + + + Substrate + + + + + + + + + + Product + + + + + + + + + + + + + + + + + + + + + + + + kcat + p0 + s0 + + + + K_m + s0 + + + + + + + + + + + + + diff --git a/dev-examples/sbml_export_odes.py b/dev-examples/sbml_export_odes.py new file mode 100644 index 00000000..339caaf6 --- /dev/null +++ b/dev-examples/sbml_export_odes.py @@ -0,0 +1,43 @@ +import pyenzyme as pe +import pyenzyme.equations as peq + +from pyenzyme.sbml.serializer import to_sbml +from pyenzyme.units import mM, s, ml, K + +doc = pe.EnzymeMLDocument(name="Test") + +# Add Vessels +vessel = doc.add_to_vessels(name="Vessel 1", volume=10.0, unit=ml, id="v0") + +# Add Species +substrate = doc.add_to_small_molecules(id="s0", name="Substrate", vessel_id=vessel.id) +product = doc.add_to_small_molecules(id="s1", name="Product", vessel_id=vessel.id) + +# Add Enzyme +enzyme = doc.add_to_proteins( + id="p0", + name="Enzyme", + sequence="MTEY", + vessel_id=vessel.id, +) + +doc.equations += peq.build_equations( + "s1'(t) = kcat * E_tot * s0(t) / (K_m + s0(t))", + "E_tot = 100", + units=[mM / s, mM], + enzmldoc=doc, +) + +doc.measurements += pe.read_excel( + "tests/fixtures/tabular/data.xlsx", + data_unit=mM, + time_unit=s, +) + +for meas in doc.measurements: + meas.temperature = 298.15 + meas.temperature_unit = K + meas.ph = 7.0 + +to_sbml(doc, "./dev-examples/odes/sbml.xml") +pe.write_enzymeml(doc=doc, path="./dev-examples/odes/enzymeml.json") diff --git a/dev-examples/sbml_export_reactions.py b/dev-examples/sbml_export_reactions.py new file mode 100644 index 00000000..53d61574 --- /dev/null +++ b/dev-examples/sbml_export_reactions.py @@ -0,0 +1,44 @@ +import pyenzyme as pe +import pyenzyme.equations as peq + +from pyenzyme.sbml.serializer import to_sbml +from pyenzyme.units import mM, s, ml + +doc = pe.EnzymeMLDocument(name="Test") + +# Add Vessels +vessel = doc.add_to_vessels(name="Vessel 1", volume=10.0, unit=ml, id="v0") + +# Add Species +substrate = doc.add_to_small_molecules(id="s0", name="Substrate", vessel_id=vessel.id) +product = doc.add_to_small_molecules(id="s1", name="Product", vessel_id=vessel.id) + +# Add Enzyme +enzyme = doc.add_to_proteins( + id="p0", + name="Enzyme", + sequence="MTEY", + vessel_id=vessel.id, +) + +# Set reactions +reaction = peq.build_reaction( + scheme="s0 -> s1", + name="Reaction 1", + modifiers=[enzyme.id], +) +reaction.kinetic_law = peq.build_equation( + "v(t) = kcat * p0(t) * s0(t) / ( K_m + s0(t) )", + unit=mM / s, +) + +doc.reactions += [reaction] + +doc.measurements += pe.read_excel( + "tests/fixtures/tabular/data.xlsx", + data_unit=mM, + time_unit=s, +) + +to_sbml(doc, "./dev-examples/reactions/sbml.xml") +pe.write_enzymeml(doc=doc, path="./dev-examples/reactions/enzymeml.json") From 415ec1e438a08a78daf1c32f182336a71eb79cd6 Mon Sep 17 00:00:00 2001 From: Jan Range Date: Tue, 25 Jun 2024 10:27:18 +0200 Subject: [PATCH 014/172] use `serialization_alias` for ld fields --- pyenzyme/model.py | 785 ++++++++++++++++++++-------------------------- 1 file changed, 337 insertions(+), 448 deletions(-) diff --git a/pyenzyme/model.py b/pyenzyme/model.py index a2553787..334b18d9 100644 --- a/pyenzyme/model.py +++ b/pyenzyme/model.py @@ -5,11 +5,13 @@ from typing import Optional, Generic, TypeVar from enum import Enum from uuid import uuid4 +from datetime import date, datetime # Filter Wrapper definition used to filter a list of objects # based on their attributes Cls = TypeVar("Cls") + class FilterWrapper(Generic[Cls]): """Wrapper class to filter a list of objects based on their attributes""" @@ -46,7 +48,8 @@ def add_namespace(obj, prefix: str | None, iri: str | None): elif iri and prefix is None: raise ValueError("If iri is provided, prefix must also be provided") - obj.ld_context[prefix] = iri # type: ignore + obj.ld_context[prefix] = iri # type: ignore + def validate_prefix(term: str | dict, prefix: str): """Validates that a term is prefixed with a given prefix @@ -64,13 +67,14 @@ def validate_prefix(term: str | dict, prefix: str): elif isinstance(term, str) and not term.startswith(prefix + ":"): raise ValueError(f"Term {term} is not prefixed with {prefix}") + # Model Definitions -class EnzymeMLDocument(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore +class EnzymeMLDocument(BaseModel): + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment=True, + ) # type: ignore name: str references: list[str] = Field(default_factory=list) @@ -88,18 +92,18 @@ class EnzymeMLDocument(BaseModel): # JSON-LD fields ld_id: str = Field( - alias="@id", - default_factory=lambda: "enzml:EnzymeMLDocument/" + str(uuid4()) + serialization_alias="@id", + default_factory=lambda: "enzml:EnzymeMLDocument/" + str(uuid4()), ) ld_type: list[str] = Field( - alias="@type", - default_factory = lambda: [ + serialization_alias="@type", + default_factory=lambda: [ "enzml:EnzymeMLDocument", ], ) ld_context: dict[str, str | dict] = Field( - alias="@context", - default_factory = lambda: { + serialization_alias="@context", + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", @@ -111,7 +115,7 @@ class EnzymeMLDocument(BaseModel): "created": "schema:dateCreated", "modified": "schema:dateModified", "creators": "schema:creator", - } + }, ) def filter_creators(self, **kwargs) -> list[Creator]: @@ -222,13 +226,12 @@ def filter_parameters(self, **kwargs) -> list[Parameter]: return FilterWrapper[Parameter](self.parameters, **kwargs).filter() - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -239,7 +242,7 @@ def set_attr_term( # Using a prefix and term >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") - # Using a dictionary term + # Usinng a dictionary term >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) Args: @@ -250,7 +253,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert ( + attr in self.model_fields + ), f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -259,10 +264,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -289,7 +291,6 @@ def add_type_term( add_namespace(self, prefix, iri) self.ld_type.append(term) - def add_to_creators( self, given_name: str, @@ -297,29 +298,22 @@ def add_to_creators( mail: str, **kwargs, ): - params = { - "given_name": given_name, - "family_name": family_name, - "mail": mail - } + params = {"given_name": given_name, "family_name": family_name, "mail": mail} if "id" in kwargs: params["id"] = kwargs["id"] - self.creators.append( - Creator(**params) - ) + self.creators.append(Creator(**params)) return self.creators[-1] - def add_to_vessels( self, id: str, name: str, volume: float, unit: UnitDefinition, - constant: bool= True, + constant: bool = True, **kwargs, ): params = { @@ -327,30 +321,27 @@ def add_to_vessels( "name": name, "volume": volume, "unit": unit, - "constant": constant + "constant": constant, } if "id" in kwargs: params["id"] = kwargs["id"] - self.vessels.append( - Vessel(**params) - ) + self.vessels.append(Vessel(**params)) return self.vessels[-1] - def add_to_proteins( self, id: str, name: str, - constant: bool= False, - sequence: Optional[str]= None, - vessel_id: Optional[str]= None, - ecnumber: Optional[str]= None, - organism: Optional[str]= None, - organism_tax_id: Optional[str]= None, - references: list[str]= [], + constant: bool = False, + sequence: Optional[str] = None, + vessel_id: Optional[str] = None, + ecnumber: Optional[str] = None, + organism: Optional[str] = None, + organism_tax_id: Optional[str] = None, + references: list[str] = [], **kwargs, ): params = { @@ -362,49 +353,40 @@ def add_to_proteins( "ecnumber": ecnumber, "organism": organism, "organism_tax_id": organism_tax_id, - "references": references + "references": references, } if "id" in kwargs: params["id"] = kwargs["id"] - self.proteins.append( - Protein(**params) - ) + self.proteins.append(Protein(**params)) return self.proteins[-1] - def add_to_complexes( self, id: str, - participants: list[str]= [], + participants: list[str] = [], **kwargs, ): - params = { - "id": id, - "participants": participants - } + params = {"id": id, "participants": participants} if "id" in kwargs: params["id"] = kwargs["id"] - self.complexes.append( - Complex(**params) - ) + self.complexes.append(Complex(**params)) return self.complexes[-1] - def add_to_small_molecules( self, id: str, name: str, - constant: bool= False, - vessel_id: Optional[str]= None, - canonical_smiles: Optional[str]= None, - inchikey: Optional[str]= None, - references: list[str]= [], + constant: bool = False, + vessel_id: Optional[str] = None, + canonical_smiles: Optional[str] = None, + inchikey: Optional[str] = None, + references: list[str] = [], **kwargs, ): params = { @@ -414,27 +396,24 @@ def add_to_small_molecules( "vessel_id": vessel_id, "canonical_smiles": canonical_smiles, "inchikey": inchikey, - "references": references + "references": references, } if "id" in kwargs: params["id"] = kwargs["id"] - self.small_molecules.append( - SmallMolecule(**params) - ) + self.small_molecules.append(SmallMolecule(**params)) return self.small_molecules[-1] - def add_to_reactions( self, id: str, name: str, - reversible: bool= False, - kinetic_law: Optional[Equation]= None, - species: list[ReactionElement]= [], - modifiers: list[str]= [], + reversible: bool = False, + kinetic_law: Optional[Equation] = None, + species: list[ReactionElement] = [], + modifiers: list[str] = [], **kwargs, ): params = { @@ -443,28 +422,25 @@ def add_to_reactions( "reversible": reversible, "kinetic_law": kinetic_law, "species": species, - "modifiers": modifiers + "modifiers": modifiers, } if "id" in kwargs: params["id"] = kwargs["id"] - self.reactions.append( - Reaction(**params) - ) + self.reactions.append(Reaction(**params)) return self.reactions[-1] - def add_to_measurements( self, id: str, name: str, - species: list[MeasurementData]= [], - group_id: Optional[str]= None, - ph: Optional[float]= None, - temperature: Optional[float]= None, - temperature_unit: Optional[UnitDefinition]= None, + species: list[MeasurementData] = [], + group_id: Optional[str] = None, + ph: Optional[float] = None, + temperature: Optional[float] = None, + temperature_unit: Optional[UnitDefinition] = None, **kwargs, ): params = { @@ -474,28 +450,24 @@ def add_to_measurements( "group_id": group_id, "ph": ph, "temperature": temperature, - "temperature_unit": temperature_unit + "temperature_unit": temperature_unit, } if "id" in kwargs: params["id"] = kwargs["id"] - self.measurements.append( - Measurement(**params) - ) + self.measurements.append(Measurement(**params)) return self.measurements[-1] - def add_to_equations( self, unit: UnitDefinition, equation_type: EquationType, equation: str, - species_id: Optional[str]= None, - id: Optional[str]= None, - variables: list[EqVariable]= [], - parameters: list[EqParameter]= [], + species_id: Optional[str] = None, + variables: list[EqVariable] = [], + parameters: list[EqParameter] = [], **kwargs, ): params = { @@ -503,32 +475,28 @@ def add_to_equations( "equation_type": equation_type, "equation": equation, "species_id": species_id, - "id": id, "variables": variables, - "parameters": parameters + "parameters": parameters, } if "id" in kwargs: params["id"] = kwargs["id"] - self.equations.append( - Equation(**params) - ) + self.equations.append(Equation(**params)) return self.equations[-1] - def add_to_parameters( self, id: str, name: str, - value: Optional[float]= None, - unit: Optional[UnitDefinition]= None, - initial_value: Optional[float]= None, - upper: Optional[float]= None, - lower: Optional[float]= None, - stderr: Optional[float]= None, - constant: Optional[bool]= True, + value: Optional[float] = None, + unit: Optional[UnitDefinition] = None, + initial_value: Optional[float] = None, + upper: Optional[float] = None, + lower: Optional[float] = None, + stderr: Optional[float] = None, + constant: Optional[bool] = True, **kwargs, ): params = { @@ -540,23 +508,21 @@ def add_to_parameters( "upper": upper, "lower": lower, "stderr": stderr, - "constant": constant + "constant": constant, } if "id" in kwargs: params["id"] = kwargs["id"] - self.parameters.append( - Parameter(**params) - ) + self.parameters.append(Parameter(**params)) return self.parameters[-1] -class Creator(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore +class Creator(BaseModel): + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment=True, + ) # type: ignore given_name: str family_name: str @@ -564,34 +530,31 @@ class Creator(BaseModel): # JSON-LD fields ld_id: str = Field( - alias="@id", - default_factory=lambda: "enzml:Creator/" + str(uuid4()) + serialization_alias="@id", + default_factory=lambda: "enzml:Creator/" + str(uuid4()), ) ld_type: list[str] = Field( - alias="@type", - default_factory = lambda: [ - "enzml:Creator","schema:person" - ], + serialization_alias="@type", + default_factory=lambda: ["enzml:Creator", "schema:person"], ) ld_context: dict[str, str | dict] = Field( - alias="@context", - default_factory = lambda: { + serialization_alias="@context", + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", "given_name": "schema:givenName", "family_name": "schema:familyName", "mail": "schema:email", - } + }, ) - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -602,7 +565,7 @@ def set_attr_term( # Using a prefix and term >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") - # Using a dictionary term + # Usinng a dictionary term >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) Args: @@ -613,7 +576,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert ( + attr in self.model_fields + ), f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -622,10 +587,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -654,10 +616,9 @@ def add_type_term( class Vessel(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment=True, + ) # type: ignore id: str name: str @@ -667,18 +628,16 @@ class Vessel(BaseModel): # JSON-LD fields ld_id: str = Field( - alias="@id", - default_factory=lambda: "enzml:Vessel/" + str(uuid4()) + serialization_alias="@id", + default_factory=lambda: "enzml:Vessel/" + str(uuid4()), ) ld_type: list[str] = Field( - alias="@type", - default_factory = lambda: [ - "enzml:Vessel","OBO:OBI_0400081" - ], + serialization_alias="@type", + default_factory=lambda: ["enzml:Vessel", "OBO:OBI_0400081"], ) ld_context: dict[str, str | dict] = Field( - alias="@context", - default_factory = lambda: { + serialization_alias="@context", + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", @@ -688,16 +647,15 @@ class Vessel(BaseModel): }, "name": "schema:name", "volume": "OBO:OBI_0002139", - } + }, ) - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -708,7 +666,7 @@ def set_attr_term( # Using a prefix and term >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") - # Using a dictionary term + # Usinng a dictionary term >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) Args: @@ -719,7 +677,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert ( + attr in self.model_fields + ), f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -728,10 +688,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -760,10 +717,9 @@ def add_type_term( class Protein(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment=True, + ) # type: ignore id: str name: str @@ -777,18 +733,16 @@ class Protein(BaseModel): # JSON-LD fields ld_id: str = Field( - alias="@id", - default_factory=lambda: "enzml:Protein/" + str(uuid4()) + serialization_alias="@id", + default_factory=lambda: "enzml:Protein/" + str(uuid4()), ) ld_type: list[str] = Field( - alias="@type", - default_factory = lambda: [ - "enzml:Protein","schema:Protein" - ], + serialization_alias="@type", + default_factory=lambda: ["enzml:Protein", "schema:Protein"], ) ld_context: dict[str, str | dict] = Field( - alias="@context", - default_factory = lambda: { + serialization_alias="@context", + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", @@ -809,16 +763,15 @@ class Protein(BaseModel): "@id": "schema:citation", "@type": "@id", }, - } + }, ) - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -829,7 +782,7 @@ def set_attr_term( # Using a prefix and term >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") - # Using a dictionary term + # Usinng a dictionary term >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) Args: @@ -840,7 +793,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert ( + attr in self.model_fields + ), f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -849,10 +804,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -881,28 +833,27 @@ def add_type_term( class Complex(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment=True, + ) # type: ignore id: str participants: list[str] = Field(default_factory=list) # JSON-LD fields ld_id: str = Field( - alias="@id", - default_factory=lambda: "enzml:Complex/" + str(uuid4()) + serialization_alias="@id", + default_factory=lambda: "enzml:Complex/" + str(uuid4()), ) ld_type: list[str] = Field( - alias="@type", - default_factory = lambda: [ + serialization_alias="@type", + default_factory=lambda: [ "enzml:Complex", ], ) ld_context: dict[str, str | dict] = Field( - alias="@context", - default_factory = lambda: { + serialization_alias="@context", + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", @@ -913,16 +864,15 @@ class Complex(BaseModel): "participants": { "@type": "@id", }, - } + }, ) - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -933,7 +883,7 @@ def set_attr_term( # Using a prefix and term >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") - # Using a dictionary term + # Usinng a dictionary term >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) Args: @@ -944,7 +894,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert ( + attr in self.model_fields + ), f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -953,10 +905,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -985,10 +934,9 @@ def add_type_term( class SmallMolecule(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment=True, + ) # type: ignore id: str name: str @@ -1000,18 +948,18 @@ class SmallMolecule(BaseModel): # JSON-LD fields ld_id: str = Field( - alias="@id", - default_factory=lambda: "enzml:SmallMolecule/" + str(uuid4()) + serialization_alias="@id", + default_factory=lambda: "enzml:SmallMolecule/" + str(uuid4()), ) ld_type: list[str] = Field( - alias="@type", - default_factory = lambda: [ + serialization_alias="@type", + default_factory=lambda: [ "enzml:SmallMolecule", ], ) ld_context: dict[str, str | dict] = Field( - alias="@context", - default_factory = lambda: { + serialization_alias="@context", + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", @@ -1028,16 +976,15 @@ class SmallMolecule(BaseModel): "@id": "schema:citation", "@type": "@id", }, - } + }, ) - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -1048,7 +995,7 @@ def set_attr_term( # Using a prefix and term >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") - # Using a dictionary term + # Usinng a dictionary term >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) Args: @@ -1059,7 +1006,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert ( + attr in self.model_fields + ), f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1068,10 +1017,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1100,10 +1046,9 @@ def add_type_term( class Reaction(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment=True, + ) # type: ignore id: str name: str @@ -1114,18 +1059,18 @@ class Reaction(BaseModel): # JSON-LD fields ld_id: str = Field( - alias="@id", - default_factory=lambda: "enzml:Reaction/" + str(uuid4()) + serialization_alias="@id", + default_factory=lambda: "enzml:Reaction/" + str(uuid4()), ) ld_type: list[str] = Field( - alias="@type", - default_factory = lambda: [ + serialization_alias="@type", + default_factory=lambda: [ "enzml:Reaction", ], ) ld_context: dict[str, str | dict] = Field( - alias="@context", - default_factory = lambda: { + serialization_alias="@context", + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", @@ -1136,7 +1081,7 @@ class Reaction(BaseModel): "modifiers": { "@type": "@id", }, - } + }, ) def filter_species(self, **kwargs) -> list[ReactionElement]: @@ -1151,13 +1096,12 @@ def filter_species(self, **kwargs) -> list[ReactionElement]: return FilterWrapper[ReactionElement](self.species, **kwargs).filter() - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -1168,7 +1112,7 @@ def set_attr_term( # Using a prefix and term >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") - # Using a dictionary term + # Usinng a dictionary term >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) Args: @@ -1179,7 +1123,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert ( + attr in self.model_fields + ), f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1188,10 +1134,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1218,67 +1161,59 @@ def add_type_term( add_namespace(self, prefix, iri) self.ld_type.append(term) - def add_to_species( self, species_id: str, stoichiometry: float, **kwargs, ): - params = { - "species_id": species_id, - "stoichiometry": stoichiometry - } + params = {"species_id": species_id, "stoichiometry": stoichiometry} if "id" in kwargs: params["id"] = kwargs["id"] - self.species.append( - ReactionElement(**params) - ) + self.species.append(ReactionElement(**params)) return self.species[-1] class ReactionElement(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment=True, + ) # type: ignore species_id: str stoichiometry: float # JSON-LD fields ld_id: str = Field( - alias="@id", - default_factory=lambda: "enzml:ReactionElement/" + str(uuid4()) + serialization_alias="@id", + default_factory=lambda: "enzml:ReactionElement/" + str(uuid4()), ) ld_type: list[str] = Field( - alias="@type", - default_factory = lambda: [ + serialization_alias="@type", + default_factory=lambda: [ "enzml:ReactionElement", ], ) ld_context: dict[str, str | dict] = Field( - alias="@context", - default_factory = lambda: { + serialization_alias="@context", + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", "species_id": { "@type": "@id", }, - } + }, ) - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -1289,7 +1224,7 @@ def set_attr_term( # Using a prefix and term >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") - # Using a dictionary term + # Usinng a dictionary term >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) Args: @@ -1300,7 +1235,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert ( + attr in self.model_fields + ), f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1309,10 +1246,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1341,43 +1275,38 @@ def add_type_term( class Equation(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment=True, + ) # type: ignore unit: UnitDefinition equation_type: EquationType equation: str species_id: Optional[str] = Field(default=None) - id: Optional[str] = Field(default=None) variables: list[EqVariable] = Field(default_factory=list) parameters: list[EqParameter] = Field(default_factory=list) # JSON-LD fields ld_id: str = Field( - alias="@id", - default_factory=lambda: "enzml:Equation/" + str(uuid4()) + serialization_alias="@id", + default_factory=lambda: "enzml:Equation/" + str(uuid4()), ) ld_type: list[str] = Field( - alias="@type", - default_factory = lambda: [ + serialization_alias="@type", + default_factory=lambda: [ "enzml:Equation", ], ) ld_context: dict[str, str | dict] = Field( - alias="@context", - default_factory = lambda: { + serialization_alias="@context", + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", "species_id": { "@type": "@id", }, - "id": { - "@type": "@id", - }, - } + }, ) def filter_variables(self, **kwargs) -> list[EqVariable]: @@ -1404,13 +1333,12 @@ def filter_parameters(self, **kwargs) -> list[EqParameter]: return FilterWrapper[EqParameter](self.parameters, **kwargs).filter() - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -1421,7 +1349,7 @@ def set_attr_term( # Using a prefix and term >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") - # Using a dictionary term + # Usinng a dictionary term >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) Args: @@ -1432,7 +1360,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert ( + attr in self.model_fields + ), f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1441,10 +1371,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1471,59 +1398,44 @@ def add_type_term( add_namespace(self, prefix, iri) self.ld_type.append(term) - def add_to_variables( self, id: str, name: str, - symbol: Optional[str]= None, + symbol: Optional[str] = None, **kwargs, ): - params = { - "id": id, - "name": name, - "symbol": symbol - } + params = {"id": id, "name": name, "symbol": symbol} if "id" in kwargs: params["id"] = kwargs["id"] - self.variables.append( - EqVariable(**params) - ) + self.variables.append(EqVariable(**params)) return self.variables[-1] - def add_to_parameters( self, id: str, name: str, - symbol: Optional[str]= None, - value: Optional[float]= None, + symbol: Optional[str] = None, + value: Optional[float] = None, **kwargs, ): - params = { - "id": id, - "name": name, - "symbol": symbol, - "value": value - } + params = {"id": id, "name": name, "symbol": symbol, "value": value} if "id" in kwargs: params["id"] = kwargs["id"] - self.parameters.append( - EqParameter(**params) - ) + self.parameters.append(EqParameter(**params)) return self.parameters[-1] -class Parameter(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore +class Parameter(BaseModel): + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment=True, + ) # type: ignore id: str name: str @@ -1537,18 +1449,18 @@ class Parameter(BaseModel): # JSON-LD fields ld_id: str = Field( - alias="@id", - default_factory=lambda: "enzml:Parameter/" + str(uuid4()) + serialization_alias="@id", + default_factory=lambda: "enzml:Parameter/" + str(uuid4()), ) ld_type: list[str] = Field( - alias="@type", - default_factory = lambda: [ + serialization_alias="@type", + default_factory=lambda: [ "enzml:Parameter", ], ) ld_context: dict[str, str | dict] = Field( - alias="@context", - default_factory = lambda: { + serialization_alias="@context", + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", @@ -1556,16 +1468,15 @@ class Parameter(BaseModel): "@id": "schema:identifier", "@type": "@id", }, - } + }, ) - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -1576,7 +1487,7 @@ def set_attr_term( # Using a prefix and term >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") - # Using a dictionary term + # Usinng a dictionary term >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) Args: @@ -1587,7 +1498,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert ( + attr in self.model_fields + ), f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1596,10 +1509,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1628,10 +1538,9 @@ def add_type_term( class Measurement(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment=True, + ) # type: ignore id: str name: str @@ -1643,18 +1552,18 @@ class Measurement(BaseModel): # JSON-LD fields ld_id: str = Field( - alias="@id", - default_factory=lambda: "enzml:Measurement/" + str(uuid4()) + serialization_alias="@id", + default_factory=lambda: "enzml:Measurement/" + str(uuid4()), ) ld_type: list[str] = Field( - alias="@type", - default_factory = lambda: [ + serialization_alias="@type", + default_factory=lambda: [ "enzml:Measurement", ], ) ld_context: dict[str, str | dict] = Field( - alias="@context", - default_factory = lambda: { + serialization_alias="@context", + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", @@ -1665,7 +1574,7 @@ class Measurement(BaseModel): "group_id": { "@type": "@id", }, - } + }, ) def filter_species(self, **kwargs) -> list[MeasurementData]: @@ -1680,13 +1589,12 @@ def filter_species(self, **kwargs) -> list[MeasurementData]: return FilterWrapper[MeasurementData](self.species, **kwargs).filter() - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -1697,7 +1605,7 @@ def set_attr_term( # Using a prefix and term >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") - # Using a dictionary term + # Usinng a dictionary term >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) Args: @@ -1708,7 +1616,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert ( + attr in self.model_fields + ), f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1717,10 +1627,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1747,7 +1654,6 @@ def add_type_term( add_namespace(self, prefix, iri) self.ld_type.append(term) - def add_to_species( self, species_id: str, @@ -1755,9 +1661,9 @@ def add_to_species( data_type: DataTypes, data_unit: UnitDefinition, time_unit: UnitDefinition, - time: list[float]= [], - data: list[float]= [], - is_calculated: bool= False, + time: list[float] = [], + data: list[float] = [], + is_calculated: bool = False, **kwargs, ): params = { @@ -1768,24 +1674,21 @@ def add_to_species( "time_unit": time_unit, "time": time, "data": data, - "is_calculated": is_calculated + "is_calculated": is_calculated, } if "id" in kwargs: params["id"] = kwargs["id"] - self.species.append( - MeasurementData(**params) - ) + self.species.append(MeasurementData(**params)) return self.species[-1] class MeasurementData(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment=True, + ) # type: ignore species_id: str init_conc: float @@ -1798,34 +1701,33 @@ class MeasurementData(BaseModel): # JSON-LD fields ld_id: str = Field( - alias="@id", - default_factory=lambda: "enzml:MeasurementData/" + str(uuid4()) + serialization_alias="@id", + default_factory=lambda: "enzml:MeasurementData/" + str(uuid4()), ) ld_type: list[str] = Field( - alias="@type", - default_factory = lambda: [ + serialization_alias="@type", + default_factory=lambda: [ "enzml:MeasurementData", ], ) ld_context: dict[str, str | dict] = Field( - alias="@context", - default_factory = lambda: { + serialization_alias="@context", + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", "species_id": { "@type": "@id", }, - } + }, ) - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -1836,7 +1738,7 @@ def set_attr_term( # Using a prefix and term >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") - # Using a dictionary term + # Usinng a dictionary term >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) Args: @@ -1847,7 +1749,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert ( + attr in self.model_fields + ), f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1856,10 +1760,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1888,10 +1789,9 @@ def add_type_term( class UnitDefinition(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment=True, + ) # type: ignore id: Optional[str] = Field(default=None) name: Optional[str] = Field(default=None) @@ -1899,22 +1799,22 @@ class UnitDefinition(BaseModel): # JSON-LD fields ld_id: str = Field( - alias="@id", - default_factory=lambda: "enzml:UnitDefinition/" + str(uuid4()) + serialization_alias="@id", + default_factory=lambda: "enzml:UnitDefinition/" + str(uuid4()), ) ld_type: list[str] = Field( - alias="@type", - default_factory = lambda: [ + serialization_alias="@type", + default_factory=lambda: [ "enzml:UnitDefinition", ], ) ld_context: dict[str, str | dict] = Field( - alias="@context", - default_factory = lambda: { + serialization_alias="@context", + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", - } + }, ) def filter_base_units(self, **kwargs) -> list[BaseUnit]: @@ -1929,13 +1829,12 @@ def filter_base_units(self, **kwargs) -> list[BaseUnit]: return FilterWrapper[BaseUnit](self.base_units, **kwargs).filter() - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -1946,7 +1845,7 @@ def set_attr_term( # Using a prefix and term >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") - # Using a dictionary term + # Usinng a dictionary term >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) Args: @@ -1957,7 +1856,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert ( + attr in self.model_fields + ), f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1966,10 +1867,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1996,36 +1894,33 @@ def add_type_term( add_namespace(self, prefix, iri) self.ld_type.append(term) - def add_to_base_units( self, kind: UnitType, exponent: int, - multiplier: Optional[float]= None, - scale: Optional[float]= None, + multiplier: Optional[float] = None, + scale: Optional[float] = None, **kwargs, ): params = { "kind": kind, "exponent": exponent, "multiplier": multiplier, - "scale": scale + "scale": scale, } if "id" in kwargs: params["id"] = kwargs["id"] - self.base_units.append( - BaseUnit(**params) - ) + self.base_units.append(BaseUnit(**params)) return self.base_units[-1] -class BaseUnit(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore +class BaseUnit(BaseModel): + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment=True, + ) # type: ignore kind: UnitType exponent: int @@ -2034,31 +1929,30 @@ class BaseUnit(BaseModel): # JSON-LD fields ld_id: str = Field( - alias="@id", - default_factory=lambda: "enzml:BaseUnit/" + str(uuid4()) + serialization_alias="@id", + default_factory=lambda: "enzml:BaseUnit/" + str(uuid4()), ) ld_type: list[str] = Field( - alias="@type", - default_factory = lambda: [ + serialization_alias="@type", + default_factory=lambda: [ "enzml:BaseUnit", ], ) ld_context: dict[str, str | dict] = Field( - alias="@context", - default_factory = lambda: { + serialization_alias="@context", + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", - } + }, ) - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -2069,7 +1963,7 @@ def set_attr_term( # Using a prefix and term >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") - # Using a dictionary term + # Usinng a dictionary term >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) Args: @@ -2080,7 +1974,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert ( + attr in self.model_fields + ), f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -2089,10 +1985,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -2121,10 +2014,9 @@ def add_type_term( class EqVariable(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment=True, + ) # type: ignore id: str name: str @@ -2132,34 +2024,33 @@ class EqVariable(BaseModel): # JSON-LD fields ld_id: str = Field( - alias="@id", - default_factory=lambda: "enzml:EqVariable/" + str(uuid4()) + serialization_alias="@id", + default_factory=lambda: "enzml:EqVariable/" + str(uuid4()), ) ld_type: list[str] = Field( - alias="@type", - default_factory = lambda: [ + serialization_alias="@type", + default_factory=lambda: [ "enzml:EqVariable", ], ) ld_context: dict[str, str | dict] = Field( - alias="@context", - default_factory = lambda: { + serialization_alias="@context", + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", "id": { "@type": "@id", }, - } + }, ) - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -2170,7 +2061,7 @@ def set_attr_term( # Using a prefix and term >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") - # Using a dictionary term + # Usinng a dictionary term >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) Args: @@ -2181,7 +2072,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert ( + attr in self.model_fields + ), f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -2190,10 +2083,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -2222,10 +2112,9 @@ def add_type_term( class EqParameter(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment=True, + ) # type: ignore id: str name: str @@ -2234,34 +2123,33 @@ class EqParameter(BaseModel): # JSON-LD fields ld_id: str = Field( - alias="@id", - default_factory=lambda: "enzml:EqParameter/" + str(uuid4()) + serialization_alias="@id", + default_factory=lambda: "enzml:EqParameter/" + str(uuid4()), ) ld_type: list[str] = Field( - alias="@type", - default_factory = lambda: [ + serialization_alias="@type", + default_factory=lambda: [ "enzml:EqParameter", ], ) ld_context: dict[str, str | dict] = Field( - alias="@context", - default_factory = lambda: { + serialization_alias="@context", + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", "id": { "@type": "@id", }, - } + }, ) - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -2272,7 +2160,7 @@ def set_attr_term( # Using a prefix and term >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") - # Using a dictionary term + # Usinng a dictionary term >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) Args: @@ -2283,7 +2171,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert ( + attr in self.model_fields + ), f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -2292,10 +2182,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -2331,12 +2218,14 @@ class DataTypes(Enum): FEED = "feed" PEAK_AREA = "peak-area" + class EquationType(Enum): ASSIGNMENT = "assignment" INITIAL_ASSIGNMENT = "initialAssignment" ODE = "ode" RATE_LAW = "rateLaw" + class UnitType(Enum): AMPERE = "ampere" AVOGADRO = "avogadro" @@ -2370,4 +2259,4 @@ class UnitType(Enum): TESLA = "tesla" VOLT = "volt" WATT = "watt" - WEBER = "weber" \ No newline at end of file + WEBER = "weber" From c2e52e3bbfba3e92502a0a172ba51bb0c0d0fa9a Mon Sep 17 00:00:00 2001 From: Jan Range Date: Tue, 25 Jun 2024 10:29:04 +0200 Subject: [PATCH 015/172] remove unused imports --- pyenzyme/model.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pyenzyme/model.py b/pyenzyme/model.py index 334b18d9..8e5893eb 100644 --- a/pyenzyme/model.py +++ b/pyenzyme/model.py @@ -5,7 +5,6 @@ from typing import Optional, Generic, TypeVar from enum import Enum from uuid import uuid4 -from datetime import date, datetime # Filter Wrapper definition used to filter a list of objects # based on their attributes From 0e7f5165e624c6ee47d78a9709153ad61a4ba83d Mon Sep 17 00:00:00 2001 From: haeussma <83341109+haeussma@users.noreply.github.com> Date: Wed, 26 Jun 2024 09:29:07 +0200 Subject: [PATCH 016/172] added pyright and poetry --- .gitignore | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.gitignore b/.gitignore index 9a748083..38c286c6 100644 --- a/.gitignore +++ b/.gitignore @@ -131,6 +131,9 @@ dmypy.json # Pyre type checker .pyre/ +# pyrightconfig +pyrightconfig.json + # pytype static type analyzer .pytype/ @@ -146,3 +149,6 @@ tests/tmp # Mac OS .DS_Store + +# Poetry +poetry.lock From eb19c84eddbd29dc6f50c0307f657d5cd653cf63 Mon Sep 17 00:00:00 2001 From: haeussma <83341109+haeussma@users.noreply.github.com> Date: Wed, 26 Jun 2024 09:30:01 +0200 Subject: [PATCH 017/172] regenerated lib via gen.toml including celsius --- pyenzyme/model.py | 1 + pyenzyme/units/predefined.py | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/pyenzyme/model.py b/pyenzyme/model.py index 8e5893eb..0c350749 100644 --- a/pyenzyme/model.py +++ b/pyenzyme/model.py @@ -2230,6 +2230,7 @@ class UnitType(Enum): AVOGADRO = "avogadro" BECQUEREL = "becquerel" CANDELA = "candela" + CELSIUS = "celsius" COULOMB = "coulomb" DIMENSIONLESS = "dimensionless" FARAD = "farad" diff --git a/pyenzyme/units/predefined.py b/pyenzyme/units/predefined.py index b0531d22..729de810 100644 --- a/pyenzyme/units/predefined.py +++ b/pyenzyme/units/predefined.py @@ -44,6 +44,10 @@ def gram(): def kelvin(): return BaseUnit(kind=UnitType.KELVIN, exponent=1, scale=1) + @staticmethod + def celsius(): + return BaseUnit(kind=UnitType.CELSIUS, exponent=1, scale=1) + @staticmethod def dimensionless(): return BaseUnit(kind=UnitType.DIMENSIONLESS, exponent=1, scale=1) @@ -139,6 +143,7 @@ def dimensionless(): kelvin = UnitDefinition(base_units=[Unit.kelvin()])._get_name() K = UnitDefinition(base_units=[Unit.kelvin()])._get_name() +celsius = UnitDefinition(base_units=[Unit.celsius()])._get_name() ## Ontology From bf0ff6dbc4a1e340eb689ed72933a1d7cc4a3b8b Mon Sep 17 00:00:00 2001 From: haeussma <83341109+haeussma@users.noreply.github.com> Date: Wed, 26 Jun 2024 10:45:39 +0200 Subject: [PATCH 018/172] replaced content with newly generated model --- pyenzyme/model.py | 648 +++++++++++++++++++++++++++------------------- 1 file changed, 376 insertions(+), 272 deletions(-) diff --git a/pyenzyme/model.py b/pyenzyme/model.py index 0c350749..d7848175 100644 --- a/pyenzyme/model.py +++ b/pyenzyme/model.py @@ -1,11 +1,13 @@ ## This is a generated file. Do not modify it manually! from __future__ import annotations -from pydantic import BaseModel, Field, ConfigDict -from typing import Optional, Generic, TypeVar + from enum import Enum +from typing import Generic, Optional, TypeVar from uuid import uuid4 +from pydantic import BaseModel, ConfigDict, Field + # Filter Wrapper definition used to filter a list of objects # based on their attributes Cls = TypeVar("Cls") @@ -85,35 +87,32 @@ class EnzymeMLDocument(BaseModel): complexes: list[Complex] = Field(default_factory=list) small_molecules: list[SmallMolecule] = Field(default_factory=list) reactions: list[Reaction] = Field(default_factory=list) + conditions: Optional[ReactionConditions] = Field(default=None) measurements: list[Measurement] = Field(default_factory=list) - equations: list[Equation] = Field(default_factory=list) + equations: list[ODE] = Field(default_factory=list) parameters: list[Parameter] = Field(default_factory=list) # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:EnzymeMLDocument/" + str(uuid4()), + default_factory=lambda: "md:EnzymeMLDocument/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", default_factory=lambda: [ - "enzml:EnzymeMLDocument", + "md:EnzymeMLDocument", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", default_factory=lambda: { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", + "md": "http://mdmodel.net/", "schema": "https://schema.org/", - "name": "schema:title", + "OBO": "http://purl.obolibrary.org/obo/", + "name": "schema:name", "references": { - "@id": "schema:citation", "@type": "@id", }, - "created": "schema:dateCreated", - "modified": "schema:dateModified", - "creators": "schema:creator", }, ) @@ -201,17 +200,17 @@ def filter_measurements(self, **kwargs) -> list[Measurement]: return FilterWrapper[Measurement](self.measurements, **kwargs).filter() - def filter_equations(self, **kwargs) -> list[Equation]: + def filter_equations(self, **kwargs) -> list[ODE]: """Filters the equations attribute based on the given kwargs Args: **kwargs: The attributes to filter by. Returns: - list[Equation]: The filtered list of Equation objects + list[ODE]: The filtered list of ODE objects """ - return FilterWrapper[Equation](self.equations, **kwargs).filter() + return FilterWrapper[ODE](self.equations, **kwargs).filter() def filter_parameters(self, **kwargs) -> list[Parameter]: """Filters the parameters attribute based on the given kwargs @@ -308,19 +307,19 @@ def add_to_creators( def add_to_vessels( self, - id: str, name: str, volume: float, unit: UnitDefinition, - constant: bool = True, + constant: bool, + creator_id: Optional[str] = None, **kwargs, ): params = { - "id": id, "name": name, "volume": volume, "unit": unit, "constant": constant, + "creator_id": creator_id, } if "id" in kwargs: @@ -332,10 +331,9 @@ def add_to_vessels( def add_to_proteins( self, - id: str, name: str, + sequence: str, constant: bool = False, - sequence: Optional[str] = None, vessel_id: Optional[str] = None, ecnumber: Optional[str] = None, organism: Optional[str] = None, @@ -344,10 +342,9 @@ def add_to_proteins( **kwargs, ): params = { - "id": id, "name": name, - "constant": constant, "sequence": sequence, + "constant": constant, "vessel_id": vessel_id, "ecnumber": ecnumber, "organism": organism, @@ -364,11 +361,10 @@ def add_to_proteins( def add_to_complexes( self, - id: str, participants: list[str] = [], **kwargs, ): - params = {"id": id, "participants": participants} + params = {"participants": participants} if "id" in kwargs: params["id"] = kwargs["id"] @@ -379,7 +375,6 @@ def add_to_complexes( def add_to_small_molecules( self, - id: str, name: str, constant: bool = False, vessel_id: Optional[str] = None, @@ -389,7 +384,6 @@ def add_to_small_molecules( **kwargs, ): params = { - "id": id, "name": name, "constant": constant, "vessel_id": vessel_id, @@ -407,19 +401,17 @@ def add_to_small_molecules( def add_to_reactions( self, - id: str, name: str, reversible: bool = False, - kinetic_law: Optional[Equation] = None, + rate_law: Optional[Equation] = None, species: list[ReactionElement] = [], modifiers: list[str] = [], **kwargs, ): params = { - "id": id, "name": name, "reversible": reversible, - "kinetic_law": kinetic_law, + "rate_law": rate_law, "species": species, "modifiers": modifiers, } @@ -433,24 +425,12 @@ def add_to_reactions( def add_to_measurements( self, - id: str, name: str, species: list[MeasurementData] = [], group_id: Optional[str] = None, - ph: Optional[float] = None, - temperature: Optional[float] = None, - temperature_unit: Optional[UnitDefinition] = None, **kwargs, ): - params = { - "id": id, - "name": name, - "species": species, - "group_id": group_id, - "ph": ph, - "temperature": temperature, - "temperature_unit": temperature_unit, - } + params = {"name": name, "species": species, "group_id": group_id} if "id" in kwargs: params["id"] = kwargs["id"] @@ -461,53 +441,40 @@ def add_to_measurements( def add_to_equations( self, - unit: UnitDefinition, - equation_type: EquationType, - equation: str, - species_id: Optional[str] = None, - variables: list[EqVariable] = [], - parameters: list[EqParameter] = [], + species_id: str, + equation: Equation, **kwargs, ): - params = { - "unit": unit, - "equation_type": equation_type, - "equation": equation, - "species_id": species_id, - "variables": variables, - "parameters": parameters, - } + params = {"species_id": species_id, "equation": equation} if "id" in kwargs: params["id"] = kwargs["id"] - self.equations.append(Equation(**params)) + self.equations.append(ODE(**params)) return self.equations[-1] def add_to_parameters( self, - id: str, name: str, - value: Optional[float] = None, - unit: Optional[UnitDefinition] = None, + value: float, + unit: UnitDefinition, + constant: bool, initial_value: Optional[float] = None, upper: Optional[float] = None, lower: Optional[float] = None, stderr: Optional[float] = None, - constant: Optional[bool] = True, **kwargs, ): params = { - "id": id, "name": name, "value": value, "unit": unit, + "constant": constant, "initial_value": initial_value, "upper": upper, "lower": lower, "stderr": stderr, - "constant": constant, } if "id" in kwargs: @@ -529,19 +496,18 @@ class Creator(BaseModel): # JSON-LD fields ld_id: str = Field( - serialization_alias="@id", - default_factory=lambda: "enzml:Creator/" + str(uuid4()), + serialization_alias="@id", default_factory=lambda: "md:Creator/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: ["enzml:Creator", "schema:person"], + default_factory=lambda: ["md:Creator", "schema:creator"], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", default_factory=lambda: { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", + "md": "http://mdmodel.net/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "given_name": "schema:givenName", "family_name": "schema:familyName", "mail": "schema:email", @@ -619,33 +585,32 @@ class Vessel(BaseModel): validate_assigment=True, ) # type: ignore - id: str name: str volume: float unit: UnitDefinition - constant: bool = True + constant: bool + creator_id: Optional[str] = Field(default=None) # JSON-LD fields ld_id: str = Field( - serialization_alias="@id", - default_factory=lambda: "enzml:Vessel/" + str(uuid4()), + serialization_alias="@id", default_factory=lambda: "md:Vessel/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: ["enzml:Vessel", "OBO:OBI_0400081"], + default_factory=lambda: ["md:Vessel", "OBO:OBI_0400081"], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", default_factory=lambda: { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", + "md": "http://mdmodel.net/", "schema": "https://schema.org/", - "id": { + "OBO": "http://purl.obolibrary.org/obo/", + "name": "schema:name", + "volume": "OBO:OBI_0002139", + "creator_id": { "@id": "schema:identifier", "@type": "@id", }, - "name": "schema:name", - "volume": "OBO:OBI_0002139", }, ) @@ -720,10 +685,9 @@ class Protein(BaseModel): validate_assigment=True, ) # type: ignore - id: str name: str + sequence: str constant: bool = False - sequence: Optional[str] = Field(default=None) vessel_id: Optional[str] = Field(default=None) ecnumber: Optional[str] = Field(default=None) organism: Optional[str] = Field(default=None) @@ -732,22 +696,18 @@ class Protein(BaseModel): # JSON-LD fields ld_id: str = Field( - serialization_alias="@id", - default_factory=lambda: "enzml:Protein/" + str(uuid4()), + serialization_alias="@id", default_factory=lambda: "md:Protein/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: ["enzml:Protein", "schema:Protein"], + default_factory=lambda: ["md:Protein", "schema:Protein"], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", default_factory=lambda: { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", + "md": "http://mdmodel.net/", "schema": "https://schema.org/", - "id": { - "@type": "@id", - }, + "OBO": "http://purl.obolibrary.org/obo/", "name": "schema:name", "sequence": "OBO:GSSO_007262", "vessel_id": { @@ -759,7 +719,6 @@ class Protein(BaseModel): "@type": "@id", }, "references": { - "@id": "schema:citation", "@type": "@id", }, }, @@ -836,30 +795,24 @@ class Complex(BaseModel): validate_assigment=True, ) # type: ignore - id: str participants: list[str] = Field(default_factory=list) # JSON-LD fields ld_id: str = Field( - serialization_alias="@id", - default_factory=lambda: "enzml:Complex/" + str(uuid4()), + serialization_alias="@id", default_factory=lambda: "md:Complex/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", default_factory=lambda: [ - "enzml:Complex", + "md:Complex", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", default_factory=lambda: { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", + "md": "http://mdmodel.net/", "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id", - }, + "OBO": "http://purl.obolibrary.org/obo/", "participants": { "@type": "@id", }, @@ -937,7 +890,6 @@ class SmallMolecule(BaseModel): validate_assigment=True, ) # type: ignore - id: str name: str constant: bool = False vessel_id: Optional[str] = Field(default=None) @@ -948,31 +900,26 @@ class SmallMolecule(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:SmallMolecule/" + str(uuid4()), + default_factory=lambda: "md:SmallMolecule/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", default_factory=lambda: [ - "enzml:SmallMolecule", + "md:SmallMolecule", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", default_factory=lambda: { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", + "md": "http://mdmodel.net/", "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id", - }, + "OBO": "http://purl.obolibrary.org/obo/", "name": "schema:name", "vessel_id": { "@id": "schema:identifier", "@type": "@id", }, "references": { - "@id": "schema:citation", "@type": "@id", }, }, @@ -1049,34 +996,28 @@ class Reaction(BaseModel): validate_assigment=True, ) # type: ignore - id: str name: str reversible: bool = False - kinetic_law: Optional[Equation] = Field(default=None) + rate_law: Optional[Equation] = Field(default=None) species: list[ReactionElement] = Field(default_factory=list) modifiers: list[str] = Field(default_factory=list) # JSON-LD fields ld_id: str = Field( - serialization_alias="@id", - default_factory=lambda: "enzml:Reaction/" + str(uuid4()), + serialization_alias="@id", default_factory=lambda: "md:Reaction/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", default_factory=lambda: [ - "enzml:Reaction", + "md:Reaction", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", default_factory=lambda: { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", + "md": "http://mdmodel.net/", "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id", - }, + "OBO": "http://purl.obolibrary.org/obo/", "modifiers": { "@type": "@id", }, @@ -1163,7 +1104,7 @@ def add_type_term( def add_to_species( self, species_id: str, - stoichiometry: float, + stoichiometry: Optional[float] = None, **kwargs, ): params = {"species_id": species_id, "stoichiometry": stoichiometry} @@ -1182,25 +1123,25 @@ class ReactionElement(BaseModel): ) # type: ignore species_id: str - stoichiometry: float + stoichiometry: Optional[float] = Field(default=None) # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:ReactionElement/" + str(uuid4()), + default_factory=lambda: "md:ReactionElement/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", default_factory=lambda: [ - "enzml:ReactionElement", + "md:ReactionElement", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", default_factory=lambda: { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", + "md": "http://mdmodel.net/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "species_id": { "@type": "@id", }, @@ -1273,64 +1214,130 @@ def add_type_term( self.ld_type.append(term) -class Equation(BaseModel): +class ReactionConditions(BaseModel): model_config: ConfigDict = ConfigDict( # type: ignore validate_assigment=True, ) # type: ignore - unit: UnitDefinition - equation_type: EquationType - equation: str - species_id: Optional[str] = Field(default=None) - variables: list[EqVariable] = Field(default_factory=list) - parameters: list[EqParameter] = Field(default_factory=list) + temperature: Optional[float] = Field(default=None) + temperature_unit: Optional[UnitDefinition] = Field(default=None) + ph: Optional[float] = Field(default=None) # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Equation/" + str(uuid4()), + default_factory=lambda: "md:ReactionConditions/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", default_factory=lambda: [ - "enzml:Equation", + "md:ReactionConditions", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", default_factory=lambda: { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", + "md": "http://mdmodel.net/", "schema": "https://schema.org/", - "species_id": { - "@type": "@id", - }, + "OBO": "http://purl.obolibrary.org/obo/", }, ) - def filter_variables(self, **kwargs) -> list[EqVariable]: - """Filters the variables attribute based on the given kwargs + def set_attr_term( + self, + attr: str, + term: str | dict, + prefix: str | None = None, + iri: str | None = None, + ): + """Sets the term for a given attribute in the JSON-LD object + + Example: + # Using an IRI term + >> obj.set_attr_term("name", "http://schema.org/givenName") + + # Using a prefix and term + >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") + + # Usinng a dictionary term + >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) Args: - **kwargs: The attributes to filter by. + attr (str): The attribute to set the term for + term (str | dict): The term to set for the attribute - Returns: - list[EqVariable]: The filtered list of EqVariable objects + Raises: + AssertionError: If the attribute is not found in the model """ - return FilterWrapper[EqVariable](self.variables, **kwargs).filter() + assert ( + attr in self.model_fields + ), f"Attribute {attr} not found in {self.__class__.__name__}" - def filter_parameters(self, **kwargs) -> list[EqParameter]: - """Filters the parameters attribute based on the given kwargs + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_context[attr] = term + + def add_type_term( + self, term: str, prefix: str | None = None, iri: str | None = None + ): + """Adds a term to the @type field of the JSON-LD object + + Example: + # Using a term + >> obj.add_type_term("https://schema.org/Person") + + # Using a prefixed term + >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") Args: - **kwargs: The attributes to filter by. + term (str): The term to add to the @type field + prefix (str, optional): The prefix to use for the term. Defaults to None. + iri (str, optional): The IRI to use for the term prefix. Defaults to None. - Returns: - list[EqParameter]: The filtered list of EqParameter objects + Raises: + ValueError: If prefix is provided but iri is not + ValueError: If iri is provided but prefix is not """ - return FilterWrapper[EqParameter](self.parameters, **kwargs).filter() + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_type.append(term) + + +class ODE(BaseModel): + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment=True, + ) # type: ignore + + species_id: str + equation: Equation + + # JSON-LD fields + ld_id: str = Field( + serialization_alias="@id", default_factory=lambda: "md:ODE/" + str(uuid4()) + ) + ld_type: list[str] = Field( + serialization_alias="@type", + default_factory=lambda: [ + "md:ODE", + ], + ) + ld_context: dict[str, str | dict] = Field( + serialization_alias="@context", + default_factory=lambda: { + "md": "http://mdmodel.net/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id", + }, + }, + ) def set_attr_term( self, @@ -1397,76 +1404,38 @@ def add_type_term( add_namespace(self, prefix, iri) self.ld_type.append(term) - def add_to_variables( - self, - id: str, - name: str, - symbol: Optional[str] = None, - **kwargs, - ): - params = {"id": id, "name": name, "symbol": symbol} - - if "id" in kwargs: - params["id"] = kwargs["id"] - - self.variables.append(EqVariable(**params)) - - return self.variables[-1] - - def add_to_parameters( - self, - id: str, - name: str, - symbol: Optional[str] = None, - value: Optional[float] = None, - **kwargs, - ): - params = {"id": id, "name": name, "symbol": symbol, "value": value} - - if "id" in kwargs: - params["id"] = kwargs["id"] - - self.parameters.append(EqParameter(**params)) - - return self.parameters[-1] - class Parameter(BaseModel): model_config: ConfigDict = ConfigDict( # type: ignore validate_assigment=True, ) # type: ignore - id: str name: str - value: Optional[float] = Field(default=None) - unit: Optional[UnitDefinition] = Field(default=None) + value: float + unit: UnitDefinition + constant: bool initial_value: Optional[float] = Field(default=None) upper: Optional[float] = Field(default=None) lower: Optional[float] = Field(default=None) stderr: Optional[float] = Field(default=None) - constant: bool = True # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Parameter/" + str(uuid4()), + default_factory=lambda: "md:Parameter/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", default_factory=lambda: [ - "enzml:Parameter", + "md:Parameter", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", default_factory=lambda: { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", + "md": "http://mdmodel.net/", "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id", - }, + "OBO": "http://purl.obolibrary.org/obo/", }, ) @@ -1541,35 +1510,27 @@ class Measurement(BaseModel): validate_assigment=True, ) # type: ignore - id: str name: str species: list[MeasurementData] = Field(default_factory=list) group_id: Optional[str] = Field(default=None) - ph: Optional[float] = Field(default=None) - temperature: Optional[float] = Field(default=None) - temperature_unit: Optional[UnitDefinition] = Field(default=None) # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Measurement/" + str(uuid4()), + default_factory=lambda: "md:Measurement/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", default_factory=lambda: [ - "enzml:Measurement", + "md:Measurement", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", default_factory=lambda: { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", + "md": "http://mdmodel.net/", "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id", - }, + "OBO": "http://purl.obolibrary.org/obo/", "group_id": { "@type": "@id", }, @@ -1701,20 +1662,20 @@ class MeasurementData(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:MeasurementData/" + str(uuid4()), + default_factory=lambda: "md:MeasurementData/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", default_factory=lambda: [ - "enzml:MeasurementData", + "md:MeasurementData", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", default_factory=lambda: { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", + "md": "http://mdmodel.net/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "species_id": { "@type": "@id", }, @@ -1787,46 +1748,57 @@ def add_type_term( self.ld_type.append(term) -class UnitDefinition(BaseModel): +class Equation(BaseModel): model_config: ConfigDict = ConfigDict( # type: ignore validate_assigment=True, ) # type: ignore - id: Optional[str] = Field(default=None) - name: Optional[str] = Field(default=None) - base_units: list[BaseUnit] = Field(default_factory=list) + equation: str + variables: list[EqVariable] = Field(default_factory=list) + parameters: list[EqParameter] = Field(default_factory=list) # JSON-LD fields ld_id: str = Field( - serialization_alias="@id", - default_factory=lambda: "enzml:UnitDefinition/" + str(uuid4()), + serialization_alias="@id", default_factory=lambda: "md:Equation/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", default_factory=lambda: [ - "enzml:UnitDefinition", + "md:Equation", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", default_factory=lambda: { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", + "md": "http://mdmodel.net/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", }, ) - def filter_base_units(self, **kwargs) -> list[BaseUnit]: - """Filters the base_units attribute based on the given kwargs + def filter_variables(self, **kwargs) -> list[EqVariable]: + """Filters the variables attribute based on the given kwargs Args: **kwargs: The attributes to filter by. Returns: - list[BaseUnit]: The filtered list of BaseUnit objects + list[EqVariable]: The filtered list of EqVariable objects """ - return FilterWrapper[BaseUnit](self.base_units, **kwargs).filter() + return FilterWrapper[EqVariable](self.variables, **kwargs).filter() + + def filter_parameters(self, **kwargs) -> list[EqParameter]: + """Filters the parameters attribute based on the given kwargs + + Args: + **kwargs: The attributes to filter by. + + Returns: + list[EqParameter]: The filtered list of EqParameter objects + """ + + return FilterWrapper[EqParameter](self.parameters, **kwargs).filter() def set_attr_term( self, @@ -1893,56 +1865,69 @@ def add_type_term( add_namespace(self, prefix, iri) self.ld_type.append(term) - def add_to_base_units( + def add_to_variables( self, - kind: UnitType, - exponent: int, - multiplier: Optional[float] = None, - scale: Optional[float] = None, + id: str, + name: str, + symbol: Optional[str] = None, **kwargs, ): - params = { - "kind": kind, - "exponent": exponent, - "multiplier": multiplier, - "scale": scale, - } + params = {"id": id, "name": name, "symbol": symbol} if "id" in kwargs: params["id"] = kwargs["id"] - self.base_units.append(BaseUnit(**params)) + self.variables.append(EqVariable(**params)) - return self.base_units[-1] + return self.variables[-1] + + def add_to_parameters( + self, + id: str, + name: str, + symbol: Optional[str] = None, + value: Optional[float] = None, + **kwargs, + ): + params = {"id": id, "name": name, "symbol": symbol, "value": value} + if "id" in kwargs: + params["id"] = kwargs["id"] -class BaseUnit(BaseModel): + self.parameters.append(EqParameter(**params)) + + return self.parameters[-1] + + +class EqVariable(BaseModel): model_config: ConfigDict = ConfigDict( # type: ignore validate_assigment=True, ) # type: ignore - kind: UnitType - exponent: int - multiplier: Optional[float] = Field(default=None) - scale: Optional[float] = Field(default=None) + id: str + name: str + symbol: Optional[str] = Field(default=None) # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:BaseUnit/" + str(uuid4()), + default_factory=lambda: "md:EqVariable/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", default_factory=lambda: [ - "enzml:BaseUnit", + "md:EqVariable", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", default_factory=lambda: { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", + "md": "http://mdmodel.net/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@type": "@id", + }, }, ) @@ -2012,7 +1997,7 @@ def add_type_term( self.ld_type.append(term) -class EqVariable(BaseModel): +class EqParameter(BaseModel): model_config: ConfigDict = ConfigDict( # type: ignore validate_assigment=True, ) # type: ignore @@ -2020,24 +2005,25 @@ class EqVariable(BaseModel): id: str name: str symbol: Optional[str] = Field(default=None) + value: Optional[float] = Field(default=None) # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:EqVariable/" + str(uuid4()), + default_factory=lambda: "md:EqParameter/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", default_factory=lambda: [ - "enzml:EqVariable", + "md:EqParameter", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", default_factory=lambda: { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", + "md": "http://mdmodel.net/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@type": "@id", }, @@ -2110,36 +2096,161 @@ def add_type_term( self.ld_type.append(term) -class EqParameter(BaseModel): +class UnitDefinition(BaseModel): model_config: ConfigDict = ConfigDict( # type: ignore validate_assigment=True, ) # type: ignore - id: str - name: str - symbol: Optional[str] = Field(default=None) - value: Optional[float] = Field(default=None) + id: Optional[str] = Field(default=None) + name: Optional[str] = Field(default=None) + base_units: list[BaseUnit] = Field(default_factory=list) # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:EqParameter/" + str(uuid4()), + default_factory=lambda: "md:UnitDefinition/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", default_factory=lambda: [ - "enzml:EqParameter", + "md:UnitDefinition", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", default_factory=lambda: { - "enzml": "http://www.enzymeml.org/v2/", + "md": "http://mdmodel.net/", + "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + }, + ) + + def filter_base_units(self, **kwargs) -> list[BaseUnit]: + """Filters the base_units attribute based on the given kwargs + + Args: + **kwargs: The attributes to filter by. + + Returns: + list[BaseUnit]: The filtered list of BaseUnit objects + """ + + return FilterWrapper[BaseUnit](self.base_units, **kwargs).filter() + + def set_attr_term( + self, + attr: str, + term: str | dict, + prefix: str | None = None, + iri: str | None = None, + ): + """Sets the term for a given attribute in the JSON-LD object + + Example: + # Using an IRI term + >> obj.set_attr_term("name", "http://schema.org/givenName") + + # Using a prefix and term + >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") + + # Usinng a dictionary term + >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) + + Args: + attr (str): The attribute to set the term for + term (str | dict): The term to set for the attribute + + Raises: + AssertionError: If the attribute is not found in the model + """ + + assert ( + attr in self.model_fields + ), f"Attribute {attr} not found in {self.__class__.__name__}" + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_context[attr] = term + + def add_type_term( + self, term: str, prefix: str | None = None, iri: str | None = None + ): + """Adds a term to the @type field of the JSON-LD object + + Example: + # Using a term + >> obj.add_type_term("https://schema.org/Person") + + # Using a prefixed term + >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") + + Args: + term (str): The term to add to the @type field + prefix (str, optional): The prefix to use for the term. Defaults to None. + iri (str, optional): The IRI to use for the term prefix. Defaults to None. + + Raises: + ValueError: If prefix is provided but iri is not + ValueError: If iri is provided but prefix is not + """ + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_type.append(term) + + def add_to_base_units( + self, + kind: UnitType, + exponent: int, + multiplier: Optional[float] = None, + scale: Optional[float] = None, + **kwargs, + ): + params = { + "kind": kind, + "exponent": exponent, + "multiplier": multiplier, + "scale": scale, + } + + if "id" in kwargs: + params["id"] = kwargs["id"] + + self.base_units.append(BaseUnit(**params)) + + return self.base_units[-1] + + +class BaseUnit(BaseModel): + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment=True, + ) # type: ignore + + kind: UnitType + exponent: int + multiplier: Optional[float] = Field(default=None) + scale: Optional[float] = Field(default=None) + + # JSON-LD fields + ld_id: str = Field( + serialization_alias="@id", default_factory=lambda: "md:BaseUnit/" + str(uuid4()) + ) + ld_type: list[str] = Field( + serialization_alias="@type", + default_factory=lambda: [ + "md:BaseUnit", + ], + ) + ld_context: dict[str, str | dict] = Field( + serialization_alias="@context", + default_factory=lambda: { + "md": "http://mdmodel.net/", "schema": "https://schema.org/", - "id": { - "@type": "@id", - }, + "OBO": "http://purl.obolibrary.org/obo/", }, ) @@ -2218,13 +2329,6 @@ class DataTypes(Enum): PEAK_AREA = "peak-area" -class EquationType(Enum): - ASSIGNMENT = "assignment" - INITIAL_ASSIGNMENT = "initialAssignment" - ODE = "ode" - RATE_LAW = "rateLaw" - - class UnitType(Enum): AMPERE = "ampere" AVOGADRO = "avogadro" From cf1618c48001bd147150466b2f8d52e434d9eebd Mon Sep 17 00:00:00 2001 From: haeussma <83341109+haeussma@users.noreply.github.com> Date: Wed, 26 Jun 2024 11:35:41 +0200 Subject: [PATCH 019/172] replaced mode, added celsius as unit --- pyenzyme/model.py | 613 +++++++++++++++-------------------- pyenzyme/units/predefined.py | 1 + 2 files changed, 257 insertions(+), 357 deletions(-) diff --git a/pyenzyme/model.py b/pyenzyme/model.py index d7848175..23362aaf 100644 --- a/pyenzyme/model.py +++ b/pyenzyme/model.py @@ -2,6 +2,7 @@ from __future__ import annotations +from datetime import date, datetime from enum import Enum from typing import Generic, Optional, TypeVar from uuid import uuid4 @@ -87,32 +88,35 @@ class EnzymeMLDocument(BaseModel): complexes: list[Complex] = Field(default_factory=list) small_molecules: list[SmallMolecule] = Field(default_factory=list) reactions: list[Reaction] = Field(default_factory=list) - conditions: Optional[ReactionConditions] = Field(default=None) measurements: list[Measurement] = Field(default_factory=list) - equations: list[ODE] = Field(default_factory=list) + equations: list[Equation] = Field(default_factory=list) parameters: list[Parameter] = Field(default_factory=list) # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "md:EnzymeMLDocument/" + str(uuid4()), + default_factory=lambda: "enzml:EnzymeMLDocument/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", default_factory=lambda: [ - "md:EnzymeMLDocument", + "enzml:EnzymeMLDocument", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", default_factory=lambda: { - "md": "http://mdmodel.net/", + "enzml": "http://www.enzymeml.org/v2/", "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", - "name": "schema:name", + "name": "schema:title", "references": { + "@id": "schema:citation", "@type": "@id", }, + "created": "schema:dateCreated", + "modified": "schema:dateModified", + "creators": "schema:creator", }, ) @@ -200,17 +204,17 @@ def filter_measurements(self, **kwargs) -> list[Measurement]: return FilterWrapper[Measurement](self.measurements, **kwargs).filter() - def filter_equations(self, **kwargs) -> list[ODE]: + def filter_equations(self, **kwargs) -> list[Equation]: """Filters the equations attribute based on the given kwargs Args: **kwargs: The attributes to filter by. Returns: - list[ODE]: The filtered list of ODE objects + list[Equation]: The filtered list of Equation objects """ - return FilterWrapper[ODE](self.equations, **kwargs).filter() + return FilterWrapper[Equation](self.equations, **kwargs).filter() def filter_parameters(self, **kwargs) -> list[Parameter]: """Filters the parameters attribute based on the given kwargs @@ -307,19 +311,19 @@ def add_to_creators( def add_to_vessels( self, + id: str, name: str, volume: float, unit: UnitDefinition, - constant: bool, - creator_id: Optional[str] = None, + constant: bool = True, **kwargs, ): params = { + "id": id, "name": name, "volume": volume, "unit": unit, "constant": constant, - "creator_id": creator_id, } if "id" in kwargs: @@ -331,9 +335,10 @@ def add_to_vessels( def add_to_proteins( self, + id: str, name: str, - sequence: str, constant: bool = False, + sequence: Optional[str] = None, vessel_id: Optional[str] = None, ecnumber: Optional[str] = None, organism: Optional[str] = None, @@ -342,9 +347,10 @@ def add_to_proteins( **kwargs, ): params = { + "id": id, "name": name, - "sequence": sequence, "constant": constant, + "sequence": sequence, "vessel_id": vessel_id, "ecnumber": ecnumber, "organism": organism, @@ -361,10 +367,11 @@ def add_to_proteins( def add_to_complexes( self, + id: str, participants: list[str] = [], **kwargs, ): - params = {"participants": participants} + params = {"id": id, "participants": participants} if "id" in kwargs: params["id"] = kwargs["id"] @@ -375,6 +382,7 @@ def add_to_complexes( def add_to_small_molecules( self, + id: str, name: str, constant: bool = False, vessel_id: Optional[str] = None, @@ -384,6 +392,7 @@ def add_to_small_molecules( **kwargs, ): params = { + "id": id, "name": name, "constant": constant, "vessel_id": vessel_id, @@ -401,17 +410,19 @@ def add_to_small_molecules( def add_to_reactions( self, + id: str, name: str, reversible: bool = False, - rate_law: Optional[Equation] = None, + kinetic_law: Optional[Equation] = None, species: list[ReactionElement] = [], modifiers: list[str] = [], **kwargs, ): params = { + "id": id, "name": name, "reversible": reversible, - "rate_law": rate_law, + "kinetic_law": kinetic_law, "species": species, "modifiers": modifiers, } @@ -425,12 +436,24 @@ def add_to_reactions( def add_to_measurements( self, + id: str, name: str, species: list[MeasurementData] = [], group_id: Optional[str] = None, + ph: Optional[float] = None, + temperature: Optional[float] = None, + temperature_unit: Optional[UnitDefinition] = None, **kwargs, ): - params = {"name": name, "species": species, "group_id": group_id} + params = { + "id": id, + "name": name, + "species": species, + "group_id": group_id, + "ph": ph, + "temperature": temperature, + "temperature_unit": temperature_unit, + } if "id" in kwargs: params["id"] = kwargs["id"] @@ -441,40 +464,53 @@ def add_to_measurements( def add_to_equations( self, - species_id: str, - equation: Equation, + unit: UnitDefinition, + equation_type: EquationType, + equation: str, + species_id: Optional[str] = None, + variables: list[EqVariable] = [], + parameters: list[EqParameter] = [], **kwargs, ): - params = {"species_id": species_id, "equation": equation} + params = { + "unit": unit, + "equation_type": equation_type, + "equation": equation, + "species_id": species_id, + "variables": variables, + "parameters": parameters, + } if "id" in kwargs: params["id"] = kwargs["id"] - self.equations.append(ODE(**params)) + self.equations.append(Equation(**params)) return self.equations[-1] def add_to_parameters( self, + id: str, name: str, - value: float, - unit: UnitDefinition, - constant: bool, + value: Optional[float] = None, + unit: Optional[UnitDefinition] = None, initial_value: Optional[float] = None, upper: Optional[float] = None, lower: Optional[float] = None, stderr: Optional[float] = None, + constant: Optional[bool] = True, **kwargs, ): params = { + "id": id, "name": name, "value": value, "unit": unit, - "constant": constant, "initial_value": initial_value, "upper": upper, "lower": lower, "stderr": stderr, + "constant": constant, } if "id" in kwargs: @@ -496,16 +532,17 @@ class Creator(BaseModel): # JSON-LD fields ld_id: str = Field( - serialization_alias="@id", default_factory=lambda: "md:Creator/" + str(uuid4()) + serialization_alias="@id", + default_factory=lambda: "enzml:Creator/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: ["md:Creator", "schema:creator"], + default_factory=lambda: ["enzml:Creator", "schema:person"], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", default_factory=lambda: { - "md": "http://mdmodel.net/", + "enzml": "http://www.enzymeml.org/v2/", "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", "given_name": "schema:givenName", @@ -585,32 +622,33 @@ class Vessel(BaseModel): validate_assigment=True, ) # type: ignore + id: str name: str volume: float unit: UnitDefinition - constant: bool - creator_id: Optional[str] = Field(default=None) + constant: bool = True # JSON-LD fields ld_id: str = Field( - serialization_alias="@id", default_factory=lambda: "md:Vessel/" + str(uuid4()) + serialization_alias="@id", + default_factory=lambda: "enzml:Vessel/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: ["md:Vessel", "OBO:OBI_0400081"], + default_factory=lambda: ["enzml:Vessel", "OBO:OBI_0400081"], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", default_factory=lambda: { - "md": "http://mdmodel.net/", + "enzml": "http://www.enzymeml.org/v2/", "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", - "name": "schema:name", - "volume": "OBO:OBI_0002139", - "creator_id": { + "id": { "@id": "schema:identifier", "@type": "@id", }, + "name": "schema:name", + "volume": "OBO:OBI_0002139", }, ) @@ -685,9 +723,10 @@ class Protein(BaseModel): validate_assigment=True, ) # type: ignore + id: str name: str - sequence: str constant: bool = False + sequence: Optional[str] = Field(default=None) vessel_id: Optional[str] = Field(default=None) ecnumber: Optional[str] = Field(default=None) organism: Optional[str] = Field(default=None) @@ -696,18 +735,22 @@ class Protein(BaseModel): # JSON-LD fields ld_id: str = Field( - serialization_alias="@id", default_factory=lambda: "md:Protein/" + str(uuid4()) + serialization_alias="@id", + default_factory=lambda: "enzml:Protein/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: ["md:Protein", "schema:Protein"], + default_factory=lambda: ["enzml:Protein", "schema:Protein"], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", default_factory=lambda: { - "md": "http://mdmodel.net/", + "enzml": "http://www.enzymeml.org/v2/", "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@type": "@id", + }, "name": "schema:name", "sequence": "OBO:GSSO_007262", "vessel_id": { @@ -719,6 +762,7 @@ class Protein(BaseModel): "@type": "@id", }, "references": { + "@id": "schema:citation", "@type": "@id", }, }, @@ -795,24 +839,30 @@ class Complex(BaseModel): validate_assigment=True, ) # type: ignore + id: str participants: list[str] = Field(default_factory=list) # JSON-LD fields ld_id: str = Field( - serialization_alias="@id", default_factory=lambda: "md:Complex/" + str(uuid4()) + serialization_alias="@id", + default_factory=lambda: "enzml:Complex/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", default_factory=lambda: [ - "md:Complex", + "enzml:Complex", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", default_factory=lambda: { - "md": "http://mdmodel.net/", + "enzml": "http://www.enzymeml.org/v2/", "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id", + }, "participants": { "@type": "@id", }, @@ -890,6 +940,7 @@ class SmallMolecule(BaseModel): validate_assigment=True, ) # type: ignore + id: str name: str constant: bool = False vessel_id: Optional[str] = Field(default=None) @@ -900,26 +951,31 @@ class SmallMolecule(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "md:SmallMolecule/" + str(uuid4()), + default_factory=lambda: "enzml:SmallMolecule/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", default_factory=lambda: [ - "md:SmallMolecule", + "enzml:SmallMolecule", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", default_factory=lambda: { - "md": "http://mdmodel.net/", + "enzml": "http://www.enzymeml.org/v2/", "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id", + }, "name": "schema:name", "vessel_id": { "@id": "schema:identifier", "@type": "@id", }, "references": { + "@id": "schema:citation", "@type": "@id", }, }, @@ -996,28 +1052,34 @@ class Reaction(BaseModel): validate_assigment=True, ) # type: ignore + id: str name: str reversible: bool = False - rate_law: Optional[Equation] = Field(default=None) + kinetic_law: Optional[Equation] = Field(default=None) species: list[ReactionElement] = Field(default_factory=list) modifiers: list[str] = Field(default_factory=list) # JSON-LD fields ld_id: str = Field( - serialization_alias="@id", default_factory=lambda: "md:Reaction/" + str(uuid4()) + serialization_alias="@id", + default_factory=lambda: "enzml:Reaction/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", default_factory=lambda: [ - "md:Reaction", + "enzml:Reaction", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", default_factory=lambda: { - "md": "http://mdmodel.net/", + "enzml": "http://www.enzymeml.org/v2/", "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id", + }, "modifiers": { "@type": "@id", }, @@ -1104,7 +1166,7 @@ def add_type_term( def add_to_species( self, species_id: str, - stoichiometry: Optional[float] = None, + stoichiometry: float, **kwargs, ): params = {"species_id": species_id, "stoichiometry": stoichiometry} @@ -1123,23 +1185,23 @@ class ReactionElement(BaseModel): ) # type: ignore species_id: str - stoichiometry: Optional[float] = Field(default=None) + stoichiometry: float # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "md:ReactionElement/" + str(uuid4()), + default_factory=lambda: "enzml:ReactionElement/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", default_factory=lambda: [ - "md:ReactionElement", + "enzml:ReactionElement", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", default_factory=lambda: { - "md": "http://mdmodel.net/", + "enzml": "http://www.enzymeml.org/v2/", "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", "species_id": { @@ -1214,130 +1276,64 @@ def add_type_term( self.ld_type.append(term) -class ReactionConditions(BaseModel): +class Equation(BaseModel): model_config: ConfigDict = ConfigDict( # type: ignore validate_assigment=True, ) # type: ignore - temperature: Optional[float] = Field(default=None) - temperature_unit: Optional[UnitDefinition] = Field(default=None) - ph: Optional[float] = Field(default=None) + unit: UnitDefinition + equation_type: EquationType + equation: str + species_id: Optional[str] = Field(default=None) + variables: list[EqVariable] = Field(default_factory=list) + parameters: list[EqParameter] = Field(default_factory=list) # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "md:ReactionConditions/" + str(uuid4()), + default_factory=lambda: "enzml:Equation/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", default_factory=lambda: [ - "md:ReactionConditions", + "enzml:Equation", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", default_factory=lambda: { - "md": "http://mdmodel.net/", + "enzml": "http://www.enzymeml.org/v2/", "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id", + }, }, ) - def set_attr_term( - self, - attr: str, - term: str | dict, - prefix: str | None = None, - iri: str | None = None, - ): - """Sets the term for a given attribute in the JSON-LD object - - Example: - # Using an IRI term - >> obj.set_attr_term("name", "http://schema.org/givenName") - - # Using a prefix and term - >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") - - # Usinng a dictionary term - >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) + def filter_variables(self, **kwargs) -> list[EqVariable]: + """Filters the variables attribute based on the given kwargs Args: - attr (str): The attribute to set the term for - term (str | dict): The term to set for the attribute + **kwargs: The attributes to filter by. - Raises: - AssertionError: If the attribute is not found in the model + Returns: + list[EqVariable]: The filtered list of EqVariable objects """ - assert ( - attr in self.model_fields - ), f"Attribute {attr} not found in {self.__class__.__name__}" - - if prefix: - validate_prefix(term, prefix) - - add_namespace(self, prefix, iri) - self.ld_context[attr] = term - - def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None - ): - """Adds a term to the @type field of the JSON-LD object - - Example: - # Using a term - >> obj.add_type_term("https://schema.org/Person") + return FilterWrapper[EqVariable](self.variables, **kwargs).filter() - # Using a prefixed term - >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") + def filter_parameters(self, **kwargs) -> list[EqParameter]: + """Filters the parameters attribute based on the given kwargs Args: - term (str): The term to add to the @type field - prefix (str, optional): The prefix to use for the term. Defaults to None. - iri (str, optional): The IRI to use for the term prefix. Defaults to None. + **kwargs: The attributes to filter by. - Raises: - ValueError: If prefix is provided but iri is not - ValueError: If iri is provided but prefix is not + Returns: + list[EqParameter]: The filtered list of EqParameter objects """ - if prefix: - validate_prefix(term, prefix) - - add_namespace(self, prefix, iri) - self.ld_type.append(term) - - -class ODE(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment=True, - ) # type: ignore - - species_id: str - equation: Equation - - # JSON-LD fields - ld_id: str = Field( - serialization_alias="@id", default_factory=lambda: "md:ODE/" + str(uuid4()) - ) - ld_type: list[str] = Field( - serialization_alias="@type", - default_factory=lambda: [ - "md:ODE", - ], - ) - ld_context: dict[str, str | dict] = Field( - serialization_alias="@context", - default_factory=lambda: { - "md": "http://mdmodel.net/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/", - "species_id": { - "@type": "@id", - }, - }, - ) + return FilterWrapper[EqParameter](self.parameters, **kwargs).filter() def set_attr_term( self, @@ -1404,38 +1400,76 @@ def add_type_term( add_namespace(self, prefix, iri) self.ld_type.append(term) + def add_to_variables( + self, + id: str, + name: str, + symbol: Optional[str] = None, + **kwargs, + ): + params = {"id": id, "name": name, "symbol": symbol} + + if "id" in kwargs: + params["id"] = kwargs["id"] + + self.variables.append(EqVariable(**params)) + + return self.variables[-1] + + def add_to_parameters( + self, + id: str, + name: str, + symbol: Optional[str] = None, + value: Optional[float] = None, + **kwargs, + ): + params = {"id": id, "name": name, "symbol": symbol, "value": value} + + if "id" in kwargs: + params["id"] = kwargs["id"] + + self.parameters.append(EqParameter(**params)) + + return self.parameters[-1] + class Parameter(BaseModel): model_config: ConfigDict = ConfigDict( # type: ignore validate_assigment=True, ) # type: ignore + id: str name: str - value: float - unit: UnitDefinition - constant: bool + value: Optional[float] = Field(default=None) + unit: Optional[UnitDefinition] = Field(default=None) initial_value: Optional[float] = Field(default=None) upper: Optional[float] = Field(default=None) lower: Optional[float] = Field(default=None) stderr: Optional[float] = Field(default=None) + constant: bool = True # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "md:Parameter/" + str(uuid4()), + default_factory=lambda: "enzml:Parameter/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", default_factory=lambda: [ - "md:Parameter", + "enzml:Parameter", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", default_factory=lambda: { - "md": "http://mdmodel.net/", + "enzml": "http://www.enzymeml.org/v2/", "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id", + }, }, ) @@ -1510,27 +1544,35 @@ class Measurement(BaseModel): validate_assigment=True, ) # type: ignore + id: str name: str species: list[MeasurementData] = Field(default_factory=list) group_id: Optional[str] = Field(default=None) + ph: Optional[float] = Field(default=None) + temperature: Optional[float] = Field(default=None) + temperature_unit: Optional[UnitDefinition] = Field(default=None) # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "md:Measurement/" + str(uuid4()), + default_factory=lambda: "enzml:Measurement/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", default_factory=lambda: [ - "md:Measurement", + "enzml:Measurement", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", default_factory=lambda: { - "md": "http://mdmodel.net/", + "enzml": "http://www.enzymeml.org/v2/", "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id", + }, "group_id": { "@type": "@id", }, @@ -1662,18 +1704,18 @@ class MeasurementData(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "md:MeasurementData/" + str(uuid4()), + default_factory=lambda: "enzml:MeasurementData/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", default_factory=lambda: [ - "md:MeasurementData", + "enzml:MeasurementData", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", default_factory=lambda: { - "md": "http://mdmodel.net/", + "enzml": "http://www.enzymeml.org/v2/", "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", "species_id": { @@ -1748,57 +1790,46 @@ def add_type_term( self.ld_type.append(term) -class Equation(BaseModel): +class UnitDefinition(BaseModel): model_config: ConfigDict = ConfigDict( # type: ignore validate_assigment=True, ) # type: ignore - equation: str - variables: list[EqVariable] = Field(default_factory=list) - parameters: list[EqParameter] = Field(default_factory=list) + id: Optional[str] = Field(default=None) + name: Optional[str] = Field(default=None) + base_units: list[BaseUnit] = Field(default_factory=list) # JSON-LD fields ld_id: str = Field( - serialization_alias="@id", default_factory=lambda: "md:Equation/" + str(uuid4()) + serialization_alias="@id", + default_factory=lambda: "enzml:UnitDefinition/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", default_factory=lambda: [ - "md:Equation", + "enzml:UnitDefinition", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", default_factory=lambda: { - "md": "http://mdmodel.net/", + "enzml": "http://www.enzymeml.org/v2/", "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", }, ) - def filter_variables(self, **kwargs) -> list[EqVariable]: - """Filters the variables attribute based on the given kwargs - - Args: - **kwargs: The attributes to filter by. - - Returns: - list[EqVariable]: The filtered list of EqVariable objects - """ - - return FilterWrapper[EqVariable](self.variables, **kwargs).filter() - - def filter_parameters(self, **kwargs) -> list[EqParameter]: - """Filters the parameters attribute based on the given kwargs + def filter_base_units(self, **kwargs) -> list[BaseUnit]: + """Filters the base_units attribute based on the given kwargs Args: **kwargs: The attributes to filter by. Returns: - list[EqParameter]: The filtered list of EqParameter objects + list[BaseUnit]: The filtered list of BaseUnit objects """ - return FilterWrapper[EqParameter](self.parameters, **kwargs).filter() + return FilterWrapper[BaseUnit](self.base_units, **kwargs).filter() def set_attr_term( self, @@ -1865,69 +1896,56 @@ def add_type_term( add_namespace(self, prefix, iri) self.ld_type.append(term) - def add_to_variables( - self, - id: str, - name: str, - symbol: Optional[str] = None, - **kwargs, - ): - params = {"id": id, "name": name, "symbol": symbol} - - if "id" in kwargs: - params["id"] = kwargs["id"] - - self.variables.append(EqVariable(**params)) - - return self.variables[-1] - - def add_to_parameters( + def add_to_base_units( self, - id: str, - name: str, - symbol: Optional[str] = None, - value: Optional[float] = None, + kind: UnitType, + exponent: int, + multiplier: Optional[float] = None, + scale: Optional[float] = None, **kwargs, ): - params = {"id": id, "name": name, "symbol": symbol, "value": value} + params = { + "kind": kind, + "exponent": exponent, + "multiplier": multiplier, + "scale": scale, + } if "id" in kwargs: params["id"] = kwargs["id"] - self.parameters.append(EqParameter(**params)) + self.base_units.append(BaseUnit(**params)) - return self.parameters[-1] + return self.base_units[-1] -class EqVariable(BaseModel): +class BaseUnit(BaseModel): model_config: ConfigDict = ConfigDict( # type: ignore validate_assigment=True, ) # type: ignore - id: str - name: str - symbol: Optional[str] = Field(default=None) + kind: UnitType + exponent: int + multiplier: Optional[float] = Field(default=None) + scale: Optional[float] = Field(default=None) # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "md:EqVariable/" + str(uuid4()), + default_factory=lambda: "enzml:BaseUnit/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", default_factory=lambda: [ - "md:EqVariable", + "enzml:BaseUnit", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", default_factory=lambda: { - "md": "http://mdmodel.net/", + "enzml": "http://www.enzymeml.org/v2/", "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", - "id": { - "@type": "@id", - }, }, ) @@ -1997,7 +2015,7 @@ def add_type_term( self.ld_type.append(term) -class EqParameter(BaseModel): +class EqVariable(BaseModel): model_config: ConfigDict = ConfigDict( # type: ignore validate_assigment=True, ) # type: ignore @@ -2005,23 +2023,22 @@ class EqParameter(BaseModel): id: str name: str symbol: Optional[str] = Field(default=None) - value: Optional[float] = Field(default=None) # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "md:EqParameter/" + str(uuid4()), + default_factory=lambda: "enzml:EqVariable/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", default_factory=lambda: [ - "md:EqParameter", + "enzml:EqVariable", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", default_factory=lambda: { - "md": "http://mdmodel.net/", + "enzml": "http://www.enzymeml.org/v2/", "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", "id": { @@ -2096,161 +2113,36 @@ def add_type_term( self.ld_type.append(term) -class UnitDefinition(BaseModel): +class EqParameter(BaseModel): model_config: ConfigDict = ConfigDict( # type: ignore validate_assigment=True, ) # type: ignore - id: Optional[str] = Field(default=None) - name: Optional[str] = Field(default=None) - base_units: list[BaseUnit] = Field(default_factory=list) + id: str + name: str + symbol: Optional[str] = Field(default=None) + value: Optional[float] = Field(default=None) # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "md:UnitDefinition/" + str(uuid4()), - ) - ld_type: list[str] = Field( - serialization_alias="@type", - default_factory=lambda: [ - "md:UnitDefinition", - ], - ) - ld_context: dict[str, str | dict] = Field( - serialization_alias="@context", - default_factory=lambda: { - "md": "http://mdmodel.net/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/", - }, - ) - - def filter_base_units(self, **kwargs) -> list[BaseUnit]: - """Filters the base_units attribute based on the given kwargs - - Args: - **kwargs: The attributes to filter by. - - Returns: - list[BaseUnit]: The filtered list of BaseUnit objects - """ - - return FilterWrapper[BaseUnit](self.base_units, **kwargs).filter() - - def set_attr_term( - self, - attr: str, - term: str | dict, - prefix: str | None = None, - iri: str | None = None, - ): - """Sets the term for a given attribute in the JSON-LD object - - Example: - # Using an IRI term - >> obj.set_attr_term("name", "http://schema.org/givenName") - - # Using a prefix and term - >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") - - # Usinng a dictionary term - >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) - - Args: - attr (str): The attribute to set the term for - term (str | dict): The term to set for the attribute - - Raises: - AssertionError: If the attribute is not found in the model - """ - - assert ( - attr in self.model_fields - ), f"Attribute {attr} not found in {self.__class__.__name__}" - - if prefix: - validate_prefix(term, prefix) - - add_namespace(self, prefix, iri) - self.ld_context[attr] = term - - def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None - ): - """Adds a term to the @type field of the JSON-LD object - - Example: - # Using a term - >> obj.add_type_term("https://schema.org/Person") - - # Using a prefixed term - >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") - - Args: - term (str): The term to add to the @type field - prefix (str, optional): The prefix to use for the term. Defaults to None. - iri (str, optional): The IRI to use for the term prefix. Defaults to None. - - Raises: - ValueError: If prefix is provided but iri is not - ValueError: If iri is provided but prefix is not - """ - - if prefix: - validate_prefix(term, prefix) - - add_namespace(self, prefix, iri) - self.ld_type.append(term) - - def add_to_base_units( - self, - kind: UnitType, - exponent: int, - multiplier: Optional[float] = None, - scale: Optional[float] = None, - **kwargs, - ): - params = { - "kind": kind, - "exponent": exponent, - "multiplier": multiplier, - "scale": scale, - } - - if "id" in kwargs: - params["id"] = kwargs["id"] - - self.base_units.append(BaseUnit(**params)) - - return self.base_units[-1] - - -class BaseUnit(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment=True, - ) # type: ignore - - kind: UnitType - exponent: int - multiplier: Optional[float] = Field(default=None) - scale: Optional[float] = Field(default=None) - - # JSON-LD fields - ld_id: str = Field( - serialization_alias="@id", default_factory=lambda: "md:BaseUnit/" + str(uuid4()) + default_factory=lambda: "enzml:EqParameter/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", default_factory=lambda: [ - "md:BaseUnit", + "enzml:EqParameter", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", default_factory=lambda: { - "md": "http://mdmodel.net/", + "enzml": "http://www.enzymeml.org/v2/", "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@type": "@id", + }, }, ) @@ -2329,6 +2221,13 @@ class DataTypes(Enum): PEAK_AREA = "peak-area" +class EquationType(Enum): + ASSIGNMENT = "assignment" + INITIAL_ASSIGNMENT = "initialAssignment" + ODE = "ode" + RATE_LAW = "rateLaw" + + class UnitType(Enum): AMPERE = "ampere" AVOGADRO = "avogadro" diff --git a/pyenzyme/units/predefined.py b/pyenzyme/units/predefined.py index 729de810..2591f3a8 100644 --- a/pyenzyme/units/predefined.py +++ b/pyenzyme/units/predefined.py @@ -144,6 +144,7 @@ def dimensionless(): kelvin = UnitDefinition(base_units=[Unit.kelvin()])._get_name() K = UnitDefinition(base_units=[Unit.kelvin()])._get_name() celsius = UnitDefinition(base_units=[Unit.celsius()])._get_name() +C = UnitDefinition(base_units=[Unit.celsius()])._get_name() ## Ontology From b2bb4f1b552283b3a34297468c2a6264a2f74b48 Mon Sep 17 00:00:00 2001 From: Jan Range Date: Wed, 26 Jun 2024 12:56:54 +0200 Subject: [PATCH 020/172] remove unused import --- pyenzyme/model.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pyenzyme/model.py b/pyenzyme/model.py index 23362aaf..b1205c89 100644 --- a/pyenzyme/model.py +++ b/pyenzyme/model.py @@ -2,7 +2,6 @@ from __future__ import annotations -from datetime import date, datetime from enum import Enum from typing import Generic, Optional, TypeVar from uuid import uuid4 From 065d66cc40253f3523a87e6be23d1c0cccca244d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Max=20H=C3=A4u=C3=9Fler?= Date: Fri, 16 Aug 2024 14:36:54 +0200 Subject: [PATCH 021/172] updated pandas dependency version range --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 7ce9dee0..6799849d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,7 +12,7 @@ python = "^3.10" python-libsbml = "^5.20.2" toml = "^0.10.2" rich = "^13.7.1" -pandas = "^2.2.2" +pandas = ">=2.0,<2.2.2" pydantic = "^2.7.4" loguru = "^0.7.2" rdflib = "7.0.0" From 981ddcbe2902b90c6cc210357cc924f3ead68715 Mon Sep 17 00:00:00 2001 From: Jan Range Date: Fri, 16 Aug 2024 16:02:59 +0200 Subject: [PATCH 022/172] update dev examples --- dev-examples/odes/enzymeml.json | 743 ++++++++---------- dev-examples/odes/ode_example.omex | Bin 0 -> 2426 bytes dev-examples/odes/sbml.xml | 111 ++- dev-examples/reactions/enzymeml.json | 609 +++++++------- dev-examples/reactions/reactions_example.omex | Bin 0 -> 2208 bytes dev-examples/reactions/sbml.xml | 96 ++- dev-examples/sbml_export_odes.py | 42 +- dev-examples/sbml_export_reactions.py | 22 +- dev-examples/sbml_import_odes.py | 9 + dev-examples/sbml_import_reactions.py | 9 + 10 files changed, 889 insertions(+), 752 deletions(-) create mode 100644 dev-examples/odes/ode_example.omex create mode 100644 dev-examples/reactions/reactions_example.omex create mode 100644 dev-examples/sbml_import_odes.py create mode 100644 dev-examples/sbml_import_reactions.py diff --git a/dev-examples/odes/enzymeml.json b/dev-examples/odes/enzymeml.json index 4493f3c7..e0237a0e 100644 --- a/dev-examples/odes/enzymeml.json +++ b/dev-examples/odes/enzymeml.json @@ -1,8 +1,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "name": "schema:title", "references": { "@id": "schema:citation", @@ -12,7 +12,7 @@ "modified": "schema:dateModified", "creators": "schema:creator" }, - "@id": "enzml:EnzymeMLDocument/35cadae4-2145-46f6-8f9c-a3a8c53829c8", + "@id": "enzml:EnzymeMLDocument/39303f02-65a0-490b-8e1d-02162fb04199", "@type": [ "enzml:EnzymeMLDocument" ], @@ -23,8 +23,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id" @@ -32,7 +32,7 @@ "name": "schema:name", "volume": "OBO:OBI_0002139" }, - "@id": "enzml:Vessel/ac7ebad5-c66d-43d9-9f5d-479bba9a2c8a", + "@id": "enzml:Vessel/371d000b-8c93-4abc-822b-cdc223778079", "@type": [ "enzml:Vessel", "OBO:OBI_0400081" @@ -43,22 +43,23 @@ "unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, "@id": "OBO:UO_0000098", "@type": [ "OBO:UO_0000000" ], + "id": "u0", "name": "ml", "base_units": [ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/df5d030e-305f-4876-95f5-6126133a0681", + "@id": "enzml:BaseUnit/448808be-98aa-4393-9141-0e13050fe90a", "@type": [ "enzml:BaseUnit" ], @@ -75,8 +76,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@type": "@id" }, @@ -95,7 +96,7 @@ "@type": "@id" } }, - "@id": "enzml:Protein/1c3d0644-1ce3-4afe-8f71-d24869188913", + "@id": "enzml:Protein/5715b8c8-ac93-4e13-a101-3497c37dc260", "@type": [ "enzml:Protein", "schema:Protein" @@ -105,16 +106,46 @@ "constant": false, "sequence": "MTEY", "vessel_id": "v0", + "ecnumber": "1.1.1.1", + "organism": "E.coli", + "organism_tax_id": "12345", "references": [] } ], - "complexes": [], - "small_molecules": [ + "complexes": [ { "@context": { "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "participants": { + "@type": "@id" + } + }, + "@id": "enzml:Complex/a3f08a33-46d9-4ede-87b3-72b652279876", + "@type": [ + "enzml:Complex" + ], + "id": "c0", + "name": "Enzyme-Substrate Complex", + "constant": false, + "participants": [ + "p0", + "s0" + ] + } + ], + "small_molecules": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id" @@ -129,7 +160,7 @@ "@type": "@id" } }, - "@id": "enzml:SmallMolecule/2d122f45-3a5a-478c-8a54-11cac6d29c31", + "@id": "enzml:SmallMolecule/b2d02c26-70fa-4401-b32f-76ff44b6e59a", "@type": [ "enzml:SmallMolecule" ], @@ -137,13 +168,15 @@ "name": "Substrate", "constant": false, "vessel_id": "v0", + "canonical_smiles": "CC(=O)O", + "inchikey": "QTBSBXVTEAMEQO-UHFFFAOYSA-N", "references": [] }, { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id" @@ -158,7 +191,7 @@ "@type": "@id" } }, - "@id": "enzml:SmallMolecule/56c68bf7-99be-40a7-9bd4-bf23a6b99b93", + "@id": "enzml:SmallMolecule/32b0f5f4-219d-4918-84c9-de6912f3acb6", "@type": [ "enzml:SmallMolecule" ], @@ -166,6 +199,8 @@ "name": "Product", "constant": false, "vessel_id": "v0", + "canonical_smiles": "CC(=O)O", + "inchikey": "QTBSBXVTEAMEQO-UHFFFAOYSA-N", "references": [] } ], @@ -174,8 +209,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id" @@ -184,48 +219,48 @@ "@type": "@id" } }, - "@id": "enzml:Measurement/d2b94875-b8d2-4248-81b8-28d15eaebd67", + "@id": "enzml:Measurement/fbaacff6-d90f-48e6-b16c-98c77c00d5f9", "@type": [ "enzml:Measurement" ], "id": "m0", "name": "m0", - "species": [ + "species_data": [ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "species_id": { "@type": "@id" } }, - "@id": "enzml:MeasurementData/9fa84251-7159-4e5e-9564-f041a1030edb", + "@id": "enzml:MeasurementData/bab6a019-2090-4f60-b20c-0a39d5dd2401", "@type": [ "enzml:MeasurementData" ], "species_id": "s0", - "init_conc": 0.0, - "data_type": "conc", + "initial": 0.0, "data_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, "@id": "OBO:UO_0000063", "@type": [ "OBO:UO_0000000" ], - "name": "mmol / l s", + "id": "u2", + "name": "mmol / l", "base_units": [ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/0ff9ce48-32c0-468e-a544-b5ef6d6b33b6", + "@id": "enzml:BaseUnit/477cca4f-ec95-45a1-8c05-4578beb60b30", "@type": [ "enzml:BaseUnit" ], @@ -236,62 +271,50 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/734baec0-49d4-44a9-9721-2939a6e329a8", + "@id": "enzml:BaseUnit/a045cb18-b5a9-44b1-88e2-1bb1374601d5", "@type": [ "enzml:BaseUnit" ], "kind": "litre", "exponent": -1, "scale": 1.0 - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/07e17ced-79f5-4ef8-bf2b-01e5217e58b2", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "second", - "exponent": -1, - "scale": 1.0 } ] }, "time_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, "@id": "OBO:UO_0000010", "@type": [ "OBO:UO_0000000" ], + "id": "u1", "name": "s", "base_units": [ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/07e17ced-79f5-4ef8-bf2b-01e5217e58b2", + "@id": "enzml:BaseUnit/c6ff977b-6f75-46fd-ac15-3a8c3ab4e8bd", "@type": [ "enzml:BaseUnit" ], "kind": "second", - "exponent": -1, + "exponent": 1, "scale": 1.0 } ] }, - "time": [ + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "data": [ 0.0, 1.0, 2.0, @@ -304,7 +327,7 @@ 9.0, 10.0 ], - "data": [ + "time": [ 0.0, 1.0, 2.0, @@ -317,43 +340,43 @@ 9.0, 10.0 ], - "is_calculated": false + "is_simulated": false }, { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "species_id": { "@type": "@id" } }, - "@id": "enzml:MeasurementData/49066465-14a1-44bf-8740-f9b33fc1e3b2", + "@id": "enzml:MeasurementData/7da88045-0b0d-44a5-afe5-ef9a6002df93", "@type": [ "enzml:MeasurementData" ], "species_id": "s1", - "init_conc": 10.0, - "data_type": "conc", + "initial": 10.0, "data_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, "@id": "OBO:UO_0000063", "@type": [ "OBO:UO_0000000" ], - "name": "mmol / l s", + "id": "u2", + "name": "mmol / l", "base_units": [ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/0ff9ce48-32c0-468e-a544-b5ef6d6b33b6", + "@id": "enzml:BaseUnit/477cca4f-ec95-45a1-8c05-4578beb60b30", "@type": [ "enzml:BaseUnit" ], @@ -364,74 +387,49 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/734baec0-49d4-44a9-9721-2939a6e329a8", + "@id": "enzml:BaseUnit/a045cb18-b5a9-44b1-88e2-1bb1374601d5", "@type": [ "enzml:BaseUnit" ], "kind": "litre", "exponent": -1, "scale": 1.0 - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/07e17ced-79f5-4ef8-bf2b-01e5217e58b2", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "second", - "exponent": -1, - "scale": 1.0 } ] }, "time_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, "@id": "OBO:UO_0000010", "@type": [ "OBO:UO_0000000" ], + "id": "u1", "name": "s", "base_units": [ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/07e17ced-79f5-4ef8-bf2b-01e5217e58b2", + "@id": "enzml:BaseUnit/c6ff977b-6f75-46fd-ac15-3a8c3ab4e8bd", "@type": [ "enzml:BaseUnit" ], "kind": "second", - "exponent": -1, + "exponent": 1, "scale": 1.0 } ] }, - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0, - 7.0, - 8.0, - 9.0, - 10.0 - ], + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", "data": [ 10.0, 9.0, @@ -445,7 +443,20 @@ 1.0, 0.0 ], - "is_calculated": false + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], + "is_simulated": false } ], "ph": 7.0, @@ -453,22 +464,23 @@ "temperature_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, "@id": "OBO:UO_0000012", "@type": [ "OBO:UO_0000000" ], + "id": "u3", "name": "K", "base_units": [ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/6af90bd2-1124-4908-a486-7c850350248c", + "@id": "enzml:BaseUnit/109807ff-d2fa-4eeb-a0ee-3de4930871f5", "@type": [ "enzml:BaseUnit" ], @@ -482,8 +494,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id" @@ -492,48 +504,48 @@ "@type": "@id" } }, - "@id": "enzml:Measurement/a826bebe-669b-47d4-9dd2-727e1a25fa29", + "@id": "enzml:Measurement/a1773c19-270a-40e2-848c-d74cd98fa03c", "@type": [ "enzml:Measurement" ], "id": "m1", "name": "m1", - "species": [ + "species_data": [ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "species_id": { "@type": "@id" } }, - "@id": "enzml:MeasurementData/fe8e5554-6363-45b0-b372-6847968cbb22", + "@id": "enzml:MeasurementData/a5a649d1-6bdb-4a1e-a9fb-d49ec9c3efac", "@type": [ "enzml:MeasurementData" ], "species_id": "s0", - "init_conc": 0.0, - "data_type": "conc", + "initial": 0.0, "data_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, "@id": "OBO:UO_0000063", "@type": [ "OBO:UO_0000000" ], - "name": "mmol / l s", + "id": "u2", + "name": "mmol / l", "base_units": [ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/0ff9ce48-32c0-468e-a544-b5ef6d6b33b6", + "@id": "enzml:BaseUnit/477cca4f-ec95-45a1-8c05-4578beb60b30", "@type": [ "enzml:BaseUnit" ], @@ -544,62 +556,50 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/734baec0-49d4-44a9-9721-2939a6e329a8", + "@id": "enzml:BaseUnit/a045cb18-b5a9-44b1-88e2-1bb1374601d5", "@type": [ "enzml:BaseUnit" ], "kind": "litre", "exponent": -1, "scale": 1.0 - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/07e17ced-79f5-4ef8-bf2b-01e5217e58b2", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "second", - "exponent": -1, - "scale": 1.0 } ] }, "time_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, "@id": "OBO:UO_0000010", "@type": [ "OBO:UO_0000000" ], + "id": "u1", "name": "s", "base_units": [ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/07e17ced-79f5-4ef8-bf2b-01e5217e58b2", + "@id": "enzml:BaseUnit/c6ff977b-6f75-46fd-ac15-3a8c3ab4e8bd", "@type": [ "enzml:BaseUnit" ], "kind": "second", - "exponent": -1, + "exponent": 1, "scale": 1.0 } ] }, - "time": [ + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "data": [ 0.0, 1.0, 2.0, @@ -612,7 +612,7 @@ 9.0, 10.0 ], - "data": [ + "time": [ 0.0, 1.0, 2.0, @@ -625,43 +625,43 @@ 9.0, 10.0 ], - "is_calculated": false + "is_simulated": false }, { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "species_id": { "@type": "@id" } }, - "@id": "enzml:MeasurementData/a0ea2291-588b-44dc-b875-856eb3739ab8", + "@id": "enzml:MeasurementData/bb46ba43-287b-49d8-bc16-51cd806cc7ed", "@type": [ "enzml:MeasurementData" ], "species_id": "s1", - "init_conc": 10.0, - "data_type": "conc", + "initial": 10.0, "data_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, "@id": "OBO:UO_0000063", "@type": [ "OBO:UO_0000000" ], - "name": "mmol / l s", + "id": "u2", + "name": "mmol / l", "base_units": [ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/0ff9ce48-32c0-468e-a544-b5ef6d6b33b6", + "@id": "enzml:BaseUnit/477cca4f-ec95-45a1-8c05-4578beb60b30", "@type": [ "enzml:BaseUnit" ], @@ -672,74 +672,49 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/734baec0-49d4-44a9-9721-2939a6e329a8", + "@id": "enzml:BaseUnit/a045cb18-b5a9-44b1-88e2-1bb1374601d5", "@type": [ "enzml:BaseUnit" ], "kind": "litre", "exponent": -1, "scale": 1.0 - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/07e17ced-79f5-4ef8-bf2b-01e5217e58b2", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "second", - "exponent": -1, - "scale": 1.0 } ] }, "time_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, "@id": "OBO:UO_0000010", "@type": [ "OBO:UO_0000000" ], + "id": "u1", "name": "s", "base_units": [ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/07e17ced-79f5-4ef8-bf2b-01e5217e58b2", + "@id": "enzml:BaseUnit/c6ff977b-6f75-46fd-ac15-3a8c3ab4e8bd", "@type": [ "enzml:BaseUnit" ], "kind": "second", - "exponent": -1, + "exponent": 1, "scale": 1.0 } ] }, - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0, - 7.0, - 8.0, - 9.0, - 10.0 - ], + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", "data": [ 10.0, 9.0, @@ -753,7 +728,20 @@ 1.0, 0.0 ], - "is_calculated": false + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], + "is_simulated": false } ], "ph": 7.0, @@ -761,22 +749,23 @@ "temperature_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, "@id": "OBO:UO_0000012", "@type": [ "OBO:UO_0000000" ], + "id": "u3", "name": "K", "base_units": [ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/6af90bd2-1124-4908-a486-7c850350248c", + "@id": "enzml:BaseUnit/109807ff-d2fa-4eeb-a0ee-3de4930871f5", "@type": [ "enzml:BaseUnit" ], @@ -792,91 +781,30 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "species_id": { "@type": "@id" - }, - "id": { - "@type": "@id" } }, - "@id": "enzml:Equation/7fd44774-3008-44db-9de9-59504652c44b", + "@id": "enzml:Equation/1f92428c-cb1a-4d9f-a8cb-3414e7e87049", "@type": [ "enzml:Equation" ], - "unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000063", - "@type": [ - "OBO:UO_0000000" - ], - "name": "mmol / l s", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/0ff9ce48-32c0-468e-a544-b5ef6d6b33b6", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "mole", - "exponent": 1, - "scale": -3.0 - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/734baec0-49d4-44a9-9721-2939a6e329a8", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "litre", - "exponent": -1, - "scale": 1.0 - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/07e17ced-79f5-4ef8-bf2b-01e5217e58b2", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "second", - "exponent": -1, - "scale": 1.0 - } - ] - }, - "equation_type": "ode", "equation": "E_tot*kcat*s0/(K_m + s0)", + "equation_type": "ode", "species_id": "s1", "variables": [ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", - "id": { - "@type": "@id" - } + "OBO": "http://purl.obolibrary.org/obo/", + "id": "schema:identifier" }, - "@id": "enzml:EqVariable/77d04fd3-3ee4-4f0d-9c8d-ca9265ab515e", + "@id": "enzml:Variable/6a1e9596-a851-467f-aac8-b12595a94856", "@type": [ - "enzml:EqVariable" + "enzml:Variable" ], "id": "s0", "name": "s0", @@ -887,189 +815,204 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { + "@id": "schema:identifier", "@type": "@id" } }, - "@id": "enzml:EqParameter/ee99a464-e1ce-4158-b857-fccdfadda000", + "@id": "enzml:Parameter/49b1a46d-7cc6-436c-b57f-d17a44d980b9", "@type": [ - "enzml:EqParameter" + "enzml:Parameter" ], - "id": "E_tot", - "name": "E_tot", - "symbol": "E_tot" + "id": "K_m", + "name": "K_m", + "symbol": "K_m", + "unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" + }, + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u2", + "name": "mmol / l", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" + }, + "@id": "enzml:BaseUnit/477cca4f-ec95-45a1-8c05-4578beb60b30", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" + }, + "@id": "enzml:BaseUnit/a045cb18-b5a9-44b1-88e2-1bb1374601d5", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "upper": 100.0, + "lower": 0.0, + "stderr": 0.1, + "constant": true }, { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { + "@id": "schema:identifier", "@type": "@id" } }, - "@id": "enzml:EqParameter/3d89b7c9-1814-48fd-9461-4a1f50364440", + "@id": "enzml:Parameter/71b45227-a2a7-4e0c-a273-9ef99dbcab1a", "@type": [ - "enzml:EqParameter" + "enzml:Parameter" ], - "id": "K_m", - "name": "K_m", - "symbol": "K_m" + "id": "E_tot", + "name": "E_tot", + "symbol": "E_tot", + "unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" + }, + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u2", + "name": "mmol / l", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" + }, + "@id": "enzml:BaseUnit/477cca4f-ec95-45a1-8c05-4578beb60b30", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" + }, + "@id": "enzml:BaseUnit/a045cb18-b5a9-44b1-88e2-1bb1374601d5", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "upper": 100.0, + "lower": 0.0, + "stderr": 0.1, + "constant": true }, { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { + "@id": "schema:identifier", "@type": "@id" } }, - "@id": "enzml:EqParameter/b8aa5a96-720a-468c-95c4-874a48b12f70", + "@id": "enzml:Parameter/f4bdcef7-8883-4cf2-b1b5-6ccacd9b1e37", "@type": [ - "enzml:EqParameter" + "enzml:Parameter" ], "id": "kcat", "name": "kcat", - "symbol": "kcat" - } - ] - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - }, - "id": { - "@type": "@id" - } - }, - "@id": "enzml:Equation/126f21be-e799-4211-bb90-3c5d6e8bc4b6", - "@type": [ - "enzml:Equation" - ], - "unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000063", - "@type": [ - "OBO:UO_0000000" - ], - "name": "mmol / l s", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/0ff9ce48-32c0-468e-a544-b5ef6d6b33b6", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "mole", - "exponent": 1, - "scale": -3.0 - }, - { + "symbol": "kcat", + "unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/734baec0-49d4-44a9-9721-2939a6e329a8", + "@id": "OBO:UO_0000010", "@type": [ - "enzml:BaseUnit" + "OBO:UO_0000000" ], - "kind": "litre", - "exponent": -1, - "scale": 1.0 + "id": "u4", + "name": "1 / s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" + }, + "@id": "enzml:BaseUnit/c6ff977b-6f75-46fd-ac15-3a8c3ab4e8bd", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": -1, + "scale": 1.0 + } + ] }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/07e17ced-79f5-4ef8-bf2b-01e5217e58b2", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "second", - "exponent": -1, - "scale": 1.0 - } - ] - }, - "equation_type": "initialAssignment", - "equation": "100", - "species_id": "E_tot", - "variables": [], - "parameters": [] - } - ], - "parameters": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" + "upper": 100.0, + "lower": 0.0, + "stderr": 0.1, + "constant": true } - }, - "@id": "enzml:Parameter/24132890-1b53-4d3e-9060-1efc1cf0e8dd", - "@type": [ - "enzml:Parameter" - ], - "id": "E_tot", - "name": "E_tot", - "constant": true + ] }, { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - }, - "@id": "enzml:Parameter/f07b469e-ecc9-4717-8d42-2e16997ef701", - "@type": [ - "enzml:Parameter" - ], - "id": "K_m", - "name": "K_m", - "constant": true - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", + "species_id": { "@type": "@id" } }, - "@id": "enzml:Parameter/4c3869a7-c11b-4cb7-8301-215be7708558", + "@id": "enzml:Equation/e0c67659-dcfc-401b-a48d-0599f685aa91", "@type": [ - "enzml:Parameter" + "enzml:Equation" ], - "id": "kcat", - "name": "kcat", - "constant": true + "equation": "100", + "equation_type": "initialAssignment", + "species_id": "E_tot", + "variables": [], + "parameters": [] } ] } \ No newline at end of file diff --git a/dev-examples/odes/ode_example.omex b/dev-examples/odes/ode_example.omex new file mode 100644 index 0000000000000000000000000000000000000000..4c9da3c7147983275b7a4449a3fd693dbbb3088d GIT binary patch literal 2426 zcmZ{mc{J308^(VkB{X(f@+dUQzJ;t|im{B*$XFX?tTV*erh3qfY}t~+Bq~X=kA3XB zNt*1kjV<)dXi$$HTVB2Id6%bi-tYa#b?!f|bMEiwpX;)>ggRDi^J=9sTiL9T6Q6p;1s^)yYS}8 zl7O2540KzNiccRh!$ewrF>C*+NOPAkGT(v1(_L%6zt_DvOB=emfNT0koE4%mS z<$2H6P^P9o*g}xzVVr@k-ub=AwQX$`J8OwcQx(4_aK_6r*jHR%9%ah7=2LOcfZFN-w3wo zkPeDhxhF3zgTI6%)oz3e#lREn46D3ntz~xuMN?bpVeo`wkj%FoCAY*xeS#zu7%};>aTWx-Qfn=#iK{S1pWW5h&uYP-N4!u)kIGCGbiAS*g*Qmc zaw^(Cz7;9N8l) z!o>;}CBcpc-_BZsb8e2Rt$UBxbgTMRFXy}$srvRr-z`}bkDI@>lba0d^KN4~J!f2^ z$wYfj*1Rw|Y|?re2o-&`A`;C^np&r%hFYDl@y=F|{qjH%?W3giUO*}&ySKoGkk;U$ z-(s%}rX$w9oKI%uBixxTE+)uyxlD`_+?BInaG;X6Wl+`{R;upSp@j`UR$xx|>3upk zgfI&WlDK>-%&;d_Q7zG|`0y4|9uxy!C7Pd*NwmVgL8#j7HYt9r+f+|Y1O%*Zv--j<==z0Z>=9Dn8-hvfrX zBWv{y6vFyASfWX8U-3{Mp6A*_K8v04t5AWh!zo=_ zAKe_7_ioOIiWJf?&6i=`m8`3t3)v-K>NYJLy0CfH%y1<2CC;C?oAH3}p@2r;YEeohbO?LQ0>c1qfD!bsWf7dF+B0h=$RxuvtVbp_{z= z1tbFkhki;snI<55I?M!Gp$50QA$z_ViJh1U4O1DX@3`8!p)3FRc|>M#dP zJH9<}H!tprju3I9kz`9oSYmft7aQeD}>1Z=URv!-1ztR(Rq0-mmao&`%7N0Ap0vv$q{Um ze-I%#k#%A=wM(Q;Xbk~#AsA7{5(9i|xOto_qtGacIuDfJhavvZ^GwhD&({h!T?(%X zzbLs?S$xsxS#*Pj9F_1ma3uZ8+H~zR!zJO2ku2Wbz4%#wXoqh|g1eshysnh0niOFA z8*28OHK>jh&(l$@G*a=&HT~L%V3?Esh|R>|*1eS&*;u#;Wnov-%f5$H=qTwR6W%sK znp$z{i5@mMgL9IGU>{*iO1125(L`$uQhdDaFKVqOl+j*Lhu787*6QI4;Wp;WYRrMF zwWx=n1Zg#{M`Ub>4%z!$I{V3R-mmi%llpZg{EJxf{dliKedO@Z$p%Ly`#%%ex{o&K z4+~D;foyS`;U7&0YhvUji8k4HE{8e9b$xU+l9Hlt!rvq8%o?xfZO_4(Of zPi?h){l2O)cM};g3+YIA37k!o^LJkFeijl1ma0H5runaSl{(wkufQB-QX~^h9IMQ6 z>9&h;qC~4n!fdtQ8$1TQR{S#L{gqC8bmXhjy|l7X^g`cI&tE)U74&|(>xBa4&*X?M z^O^#lou&wk@qM?!uR(uNpAWLk-NAI5~Z%Rd^`r1 zCtrU?Vu`Mk^8Lq=zo+A&ZAg{>K`Oej{j3fE;Nc$Zt{jXDbxpo_JW85}gSK{J z2m;wkk&wAm|9mg+{*?bMGru~2P5XcO0N~|a?t>rxC;NZ3{fgngwzCIR{td;}^6){C008!b MDLBxkpTvNF0GZ-hegFUf literal 0 HcmV?d00001 diff --git a/dev-examples/odes/sbml.xml b/dev-examples/odes/sbml.xml index 6dd17c45..c6e4e0f4 100644 --- a/dev-examples/odes/sbml.xml +++ b/dev-examples/odes/sbml.xml @@ -1,23 +1,23 @@ - + - - + + - + - - + + - + - + - - + + @@ -34,7 +34,7 @@ - + @@ -45,10 +45,9 @@ - - + @@ -57,7 +56,7 @@ - + @@ -72,12 +71,24 @@ + + + + + + + + + + + + - + Vessel 1 10.0 @@ -88,68 +99,109 @@ - + - + Enzyme MTEY + E.coli + 1.1.1.1 + E.coli + 12345 MTEY - + + + + + Enzyme-Substrate Complex + + + + + p0 + s0 + + + + - + Substrate + + QTBSBXVTEAMEQO-UHFFFAOYSA-N + CC(=O)O + - + - + Product + + QTBSBXVTEAMEQO-UHFFFAOYSA-N + CC(=O)O + - + - + + + 0.0 + 100.0 + 0.1 + - + - + + + 0.0 + 100.0 + 0.1 + - + - + + + 0.0 + 100.0 + 0.1 + @@ -162,6 +214,11 @@ + + + + + diff --git a/dev-examples/reactions/enzymeml.json b/dev-examples/reactions/enzymeml.json index 7581d1fc..841b2fd7 100644 --- a/dev-examples/reactions/enzymeml.json +++ b/dev-examples/reactions/enzymeml.json @@ -1,8 +1,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "name": "schema:title", "references": { "@id": "schema:citation", @@ -12,7 +12,7 @@ "modified": "schema:dateModified", "creators": "schema:creator" }, - "@id": "enzml:EnzymeMLDocument/706dc08f-91d9-476f-bc39-14e26ae43bd4", + "@id": "enzml:EnzymeMLDocument/4cc6b230-1ca7-4b01-acfe-34ca8a8c8b03", "@type": [ "enzml:EnzymeMLDocument" ], @@ -23,8 +23,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id" @@ -32,7 +32,7 @@ "name": "schema:name", "volume": "OBO:OBI_0002139" }, - "@id": "enzml:Vessel/f8628df7-14e3-42b8-a77d-7c4f92f1166c", + "@id": "enzml:Vessel/040a3842-d40e-44e8-a32d-19d830c8572c", "@type": [ "enzml:Vessel", "OBO:OBI_0400081" @@ -43,22 +43,23 @@ "unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, "@id": "OBO:UO_0000098", "@type": [ "OBO:UO_0000000" ], + "id": "u0", "name": "ml", "base_units": [ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/fbb3c11b-a165-4792-8070-dc241f31da60", + "@id": "enzml:BaseUnit/dfeb036d-92c6-4067-8eb9-36370cff8244", "@type": [ "enzml:BaseUnit" ], @@ -75,8 +76,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@type": "@id" }, @@ -95,7 +96,7 @@ "@type": "@id" } }, - "@id": "enzml:Protein/86214cf8-977c-4fd0-8c1a-b142c32eaa74", + "@id": "enzml:Protein/d24ac8cf-2118-4bc4-b32f-8dbe37a00aa4", "@type": [ "enzml:Protein", "schema:Protein" @@ -113,8 +114,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id" @@ -129,7 +130,7 @@ "@type": "@id" } }, - "@id": "enzml:SmallMolecule/da9af365-0490-4495-b410-98183fe493ca", + "@id": "enzml:SmallMolecule/4430bc12-a97a-4a8c-a753-59d62b8d5be1", "@type": [ "enzml:SmallMolecule" ], @@ -142,8 +143,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id" @@ -158,7 +159,7 @@ "@type": "@id" } }, - "@id": "enzml:SmallMolecule/378ca858-97b7-4eed-9187-2fe73959885f", + "@id": "enzml:SmallMolecule/54498f68-5ca7-4515-a8a0-20bff1da321d", "@type": [ "enzml:SmallMolecule" ], @@ -173,8 +174,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id" @@ -183,101 +184,39 @@ "@type": "@id" } }, - "@id": "enzml:Reaction/e29a838b-542f-4772-8936-087670816036", + "@id": "enzml:Reaction/bdbaa018-4f0c-44a8-a67b-ae88e294dd20", "@type": [ "enzml:Reaction" ], - "id": "Reaction 1", + "id": "r0", "name": "Reaction 1", "reversible": false, "kinetic_law": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "species_id": { "@type": "@id" - }, - "id": { - "@type": "@id" } }, - "@id": "enzml:Equation/6394e9d8-13ae-4b38-bbfb-c8d18ca9ab4e", + "@id": "enzml:Equation/add0038a-e325-454e-8ff6-a7ab5ece87fe", "@type": [ "enzml:Equation" ], - "unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000063", - "@type": [ - "OBO:UO_0000000" - ], - "name": "mmol / l s", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/64d34694-8942-4ed5-b922-3c928695ec43", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "mole", - "exponent": 1, - "scale": -3.0 - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/6a9cc7e3-8777-4438-9a1e-d613cd5ee13a", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "litre", - "exponent": -1, - "scale": 1.0 - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/d5995db5-1a95-4cc6-9513-b8a1770cdef9", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "second", - "exponent": -1, - "scale": 1.0 - } - ] - }, - "equation_type": "assignment", "equation": "kcat*p0*s0/(K_m + s0)", - "species_id": "v", + "equation_type": "rateLaw", "variables": [ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", - "id": { - "@type": "@id" - } + "OBO": "http://purl.obolibrary.org/obo/", + "id": "schema:identifier" }, - "@id": "enzml:EqVariable/30e94d78-a980-4066-8a91-11de93015927", + "@id": "enzml:Variable/c53d54fe-9297-4f3c-980b-25bea0734058", "@type": [ - "enzml:EqVariable" + "enzml:Variable" ], "id": "p0", "name": "p0", @@ -286,15 +225,13 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", - "id": { - "@type": "@id" - } + "OBO": "http://purl.obolibrary.org/obo/", + "id": "schema:identifier" }, - "@id": "enzml:EqVariable/a57075b6-3179-42ae-b99d-0c41de223f22", + "@id": "enzml:Variable/e0be55cb-1f6e-4933-a400-d2ef9db25329", "@type": [ - "enzml:EqVariable" + "enzml:Variable" ], "id": "s0", "name": "s0", @@ -305,53 +242,118 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { + "@id": "schema:identifier", "@type": "@id" } }, - "@id": "enzml:EqParameter/a186518c-17b3-4fde-ac7d-94bda76c6be9", + "@id": "enzml:Parameter/1e6d62f9-49b9-4aad-be74-490c6e9d6f7a", "@type": [ - "enzml:EqParameter" + "enzml:Parameter" ], "id": "K_m", "name": "K_m", - "symbol": "K_m" - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@type": "@id" - } + "symbol": "K_m", + "unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" + }, + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u1", + "name": "mmol / l", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" + }, + "@id": "enzml:BaseUnit/38393576-f6dd-4f90-8528-3a75ea49d1d4", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" + }, + "@id": "enzml:BaseUnit/31c7d1bf-d71b-4b66-8a47-93d3e7711d47", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + } + ] }, - "@id": "enzml:EqParameter/1cccb9f1-4edf-4cda-9e6b-04ffc4679795", - "@type": [ - "enzml:EqParameter" - ], - "id": "v", - "name": "v", - "symbol": "v" + "upper": 100.0, + "lower": 0.0, + "stderr": 0.1, + "constant": true }, { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { + "@id": "schema:identifier", "@type": "@id" } }, - "@id": "enzml:EqParameter/059857c2-eff4-42ff-96c6-5e3a2438f128", + "@id": "enzml:Parameter/c39f3e34-c4da-4a47-b82a-43d9ba2be5bf", "@type": [ - "enzml:EqParameter" + "enzml:Parameter" ], "id": "kcat", "name": "kcat", - "symbol": "kcat" + "symbol": "kcat", + "unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" + }, + "@id": "OBO:UO_0000010", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u2", + "name": "1 / s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" + }, + "@id": "enzml:BaseUnit/ffb7a3e9-4bb5-4d6c-858c-3ab6d953f9a4", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "upper": 100.0, + "lower": 0.0, + "stderr": 0.1, + "constant": true } ] }, @@ -359,13 +361,13 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "species_id": { "@type": "@id" } }, - "@id": "enzml:ReactionElement/73385fe9-1d7a-4758-8053-c45382c1ad34", + "@id": "enzml:ReactionElement/cb145bd9-0333-435e-ab2b-eb0f3f6bb9c0", "@type": [ "enzml:ReactionElement" ], @@ -375,13 +377,13 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "species_id": { "@type": "@id" } }, - "@id": "enzml:ReactionElement/db834938-bd23-4e8e-a0a5-ea6f478b7041", + "@id": "enzml:ReactionElement/ac29c50c-2818-400a-ae93-49a09f381ecb", "@type": [ "enzml:ReactionElement" ], @@ -398,8 +400,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id" @@ -408,48 +410,48 @@ "@type": "@id" } }, - "@id": "enzml:Measurement/b4a44b04-8957-4fd5-9867-d3836bb087d9", + "@id": "enzml:Measurement/391ac5d7-b284-4f58-845f-10b65ec65c29", "@type": [ "enzml:Measurement" ], "id": "m0", "name": "m0", - "species": [ + "species_data": [ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "species_id": { "@type": "@id" } }, - "@id": "enzml:MeasurementData/1a8e21e6-77b0-41cb-840e-6240ac2ba7a5", + "@id": "enzml:MeasurementData/644d3f4c-eab7-49c4-9e0a-e4c4267bfcdb", "@type": [ "enzml:MeasurementData" ], "species_id": "s0", - "init_conc": 0.0, - "data_type": "conc", + "initial": 0.0, "data_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, "@id": "OBO:UO_0000063", "@type": [ "OBO:UO_0000000" ], - "name": "mmol / l s", + "id": "u1", + "name": "mmol / l", "base_units": [ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/64d34694-8942-4ed5-b922-3c928695ec43", + "@id": "enzml:BaseUnit/38393576-f6dd-4f90-8528-3a75ea49d1d4", "@type": [ "enzml:BaseUnit" ], @@ -460,62 +462,50 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/6a9cc7e3-8777-4438-9a1e-d613cd5ee13a", + "@id": "enzml:BaseUnit/31c7d1bf-d71b-4b66-8a47-93d3e7711d47", "@type": [ "enzml:BaseUnit" ], "kind": "litre", "exponent": -1, "scale": 1.0 - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/d5995db5-1a95-4cc6-9513-b8a1770cdef9", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "second", - "exponent": -1, - "scale": 1.0 } ] }, "time_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, "@id": "OBO:UO_0000010", "@type": [ "OBO:UO_0000000" ], + "id": "u3", "name": "s", "base_units": [ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/d5995db5-1a95-4cc6-9513-b8a1770cdef9", + "@id": "enzml:BaseUnit/ffb7a3e9-4bb5-4d6c-858c-3ab6d953f9a4", "@type": [ "enzml:BaseUnit" ], "kind": "second", - "exponent": -1, + "exponent": 1, "scale": 1.0 } ] }, - "time": [ + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "data": [ 0.0, 1.0, 2.0, @@ -528,7 +518,7 @@ 9.0, 10.0 ], - "data": [ + "time": [ 0.0, 1.0, 2.0, @@ -541,43 +531,43 @@ 9.0, 10.0 ], - "is_calculated": false + "is_simulated": false }, { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "species_id": { "@type": "@id" } }, - "@id": "enzml:MeasurementData/cb8a53e7-0606-4d07-97bf-d5c544740560", + "@id": "enzml:MeasurementData/3eda7daf-6707-448f-bee3-c1d194459b9b", "@type": [ "enzml:MeasurementData" ], "species_id": "s1", - "init_conc": 10.0, - "data_type": "conc", + "initial": 10.0, "data_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, "@id": "OBO:UO_0000063", "@type": [ "OBO:UO_0000000" ], - "name": "mmol / l s", + "id": "u1", + "name": "mmol / l", "base_units": [ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/64d34694-8942-4ed5-b922-3c928695ec43", + "@id": "enzml:BaseUnit/38393576-f6dd-4f90-8528-3a75ea49d1d4", "@type": [ "enzml:BaseUnit" ], @@ -588,74 +578,49 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/6a9cc7e3-8777-4438-9a1e-d613cd5ee13a", + "@id": "enzml:BaseUnit/31c7d1bf-d71b-4b66-8a47-93d3e7711d47", "@type": [ "enzml:BaseUnit" ], "kind": "litre", "exponent": -1, "scale": 1.0 - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/d5995db5-1a95-4cc6-9513-b8a1770cdef9", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "second", - "exponent": -1, - "scale": 1.0 } ] }, "time_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, "@id": "OBO:UO_0000010", "@type": [ "OBO:UO_0000000" ], + "id": "u3", "name": "s", "base_units": [ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/d5995db5-1a95-4cc6-9513-b8a1770cdef9", + "@id": "enzml:BaseUnit/ffb7a3e9-4bb5-4d6c-858c-3ab6d953f9a4", "@type": [ "enzml:BaseUnit" ], "kind": "second", - "exponent": -1, + "exponent": 1, "scale": 1.0 } ] }, - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0, - 7.0, - 8.0, - 9.0, - 10.0 - ], + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", "data": [ 10.0, 9.0, @@ -669,15 +634,59 @@ 1.0, 0.0 ], - "is_calculated": false + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], + "is_simulated": false } - ] + ], + "ph": 7.0, + "temperature": 298.15, + "temperature_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" + }, + "@id": "OBO:UO_0000012", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u4", + "name": "K", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" + }, + "@id": "enzml:BaseUnit/839c0ac5-eec5-40ec-9c76-e25d735f065d", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "kelvin", + "exponent": 1, + "scale": 1.0 + } + ] + } }, { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id" @@ -686,48 +695,48 @@ "@type": "@id" } }, - "@id": "enzml:Measurement/537b7ad5-d1da-4a3f-8823-ce844cb4fd15", + "@id": "enzml:Measurement/5b279983-6b56-4c70-a807-282808973cc4", "@type": [ "enzml:Measurement" ], "id": "m1", "name": "m1", - "species": [ + "species_data": [ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "species_id": { "@type": "@id" } }, - "@id": "enzml:MeasurementData/f9765d6e-ba42-4717-ad70-ba50347040ea", + "@id": "enzml:MeasurementData/45637267-987f-4b11-a89f-e26643eaff60", "@type": [ "enzml:MeasurementData" ], "species_id": "s0", - "init_conc": 0.0, - "data_type": "conc", + "initial": 0.0, "data_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, "@id": "OBO:UO_0000063", "@type": [ "OBO:UO_0000000" ], - "name": "mmol / l s", + "id": "u1", + "name": "mmol / l", "base_units": [ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/64d34694-8942-4ed5-b922-3c928695ec43", + "@id": "enzml:BaseUnit/38393576-f6dd-4f90-8528-3a75ea49d1d4", "@type": [ "enzml:BaseUnit" ], @@ -738,62 +747,50 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/6a9cc7e3-8777-4438-9a1e-d613cd5ee13a", + "@id": "enzml:BaseUnit/31c7d1bf-d71b-4b66-8a47-93d3e7711d47", "@type": [ "enzml:BaseUnit" ], "kind": "litre", "exponent": -1, "scale": 1.0 - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/d5995db5-1a95-4cc6-9513-b8a1770cdef9", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "second", - "exponent": -1, - "scale": 1.0 } ] }, "time_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, "@id": "OBO:UO_0000010", "@type": [ "OBO:UO_0000000" ], + "id": "u3", "name": "s", "base_units": [ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/d5995db5-1a95-4cc6-9513-b8a1770cdef9", + "@id": "enzml:BaseUnit/ffb7a3e9-4bb5-4d6c-858c-3ab6d953f9a4", "@type": [ "enzml:BaseUnit" ], "kind": "second", - "exponent": -1, + "exponent": 1, "scale": 1.0 } ] }, - "time": [ + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "data": [ 0.0, 1.0, 2.0, @@ -806,7 +803,7 @@ 9.0, 10.0 ], - "data": [ + "time": [ 0.0, 1.0, 2.0, @@ -819,43 +816,43 @@ 9.0, 10.0 ], - "is_calculated": false + "is_simulated": false }, { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "species_id": { "@type": "@id" } }, - "@id": "enzml:MeasurementData/0a6e65ad-b5a8-4ed8-a75d-c61d12db521e", + "@id": "enzml:MeasurementData/42f843c5-4042-4f22-a076-5626b86444c7", "@type": [ "enzml:MeasurementData" ], "species_id": "s1", - "init_conc": 10.0, - "data_type": "conc", + "initial": 10.0, "data_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, "@id": "OBO:UO_0000063", "@type": [ "OBO:UO_0000000" ], - "name": "mmol / l s", + "id": "u1", + "name": "mmol / l", "base_units": [ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/64d34694-8942-4ed5-b922-3c928695ec43", + "@id": "enzml:BaseUnit/38393576-f6dd-4f90-8528-3a75ea49d1d4", "@type": [ "enzml:BaseUnit" ], @@ -866,74 +863,49 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/6a9cc7e3-8777-4438-9a1e-d613cd5ee13a", + "@id": "enzml:BaseUnit/31c7d1bf-d71b-4b66-8a47-93d3e7711d47", "@type": [ "enzml:BaseUnit" ], "kind": "litre", "exponent": -1, "scale": 1.0 - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/d5995db5-1a95-4cc6-9513-b8a1770cdef9", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "second", - "exponent": -1, - "scale": 1.0 } ] }, "time_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, "@id": "OBO:UO_0000010", "@type": [ "OBO:UO_0000000" ], + "id": "u3", "name": "s", "base_units": [ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/d5995db5-1a95-4cc6-9513-b8a1770cdef9", + "@id": "enzml:BaseUnit/ffb7a3e9-4bb5-4d6c-858c-3ab6d953f9a4", "@type": [ "enzml:BaseUnit" ], "kind": "second", - "exponent": -1, + "exponent": 1, "scale": 1.0 } ] }, - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0, - 7.0, - 8.0, - 9.0, - 10.0 - ], + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", "data": [ 10.0, 9.0, @@ -947,11 +919,54 @@ 1.0, 0.0 ], - "is_calculated": false + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], + "is_simulated": false } - ] + ], + "ph": 7.0, + "temperature": 298.15, + "temperature_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" + }, + "@id": "OBO:UO_0000012", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u4", + "name": "K", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" + }, + "@id": "enzml:BaseUnit/839c0ac5-eec5-40ec-9c76-e25d735f065d", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "kelvin", + "exponent": 1, + "scale": 1.0 + } + ] + } } ], - "equations": [], - "parameters": [] + "equations": [] } \ No newline at end of file diff --git a/dev-examples/reactions/reactions_example.omex b/dev-examples/reactions/reactions_example.omex new file mode 100644 index 0000000000000000000000000000000000000000..3ae590985893f7b06387ac93a0979f94814f6daf GIT binary patch literal 2208 zcmZ{lc{CL49>=Ftmc(F)F+|yB!id2jWP8cjw-{s%6GmgK*~v08_LMEMGqy6RRHS*w zn1+xEFJ&1^Wfv(_uI@eOzW42%`#gVq&+k0vd(QLw{PVFwu^j;c000gEJRayY&t|tf zb1+#Q1^~DZGSCBy@wtKzQH%%-sLnOFq$qKxtnCTrteH=zSWT3Uov@hTy(SQD_{v!D zsr}bAdOT+~fHUmjcbzOZ`brp4Pr+{N1GBrS^N;tEVpP!qw=GWbQHTVQV?8mJW5SHFcV-zxEYPuQ@7 znRifzJG^3chC(p04BWFAo2_F(yGdGFT%&1`NME=PbhAY>H4z=Lb9J_% zc!B@2wk2+s;+zO)O88SyoHbWa? z!pFVg(%F+gZ=;xM4N~ci7}bAagxtN)i4!h~%e!B(qs zD>n!C#Bld?oP)?9lQW!czl;X@SD0Uco;6dNND^zMr8QxT+zpkU1I6XbJ}BG!_k-OQ zWoA_F!gb5K_M>CIOnjlue|Q}dMaGF$|5c=^@kgka7|{;`l5gTE*akPcNjMT6x;t{2 z<&3Mc68Q=-e2vGK^XgVk$okVaO?;iv$IQjQZW<|CXzwpCvJ46pzB!)_eJ>iBG8iy% ztbr%Qbw(T1K@k4lY`8^yN9Y&~OMseQ%oUZIyeI10I8x*d9ni!=fa=MgWG)T3b@zWJ z!F~piD%+T_l2Q`t9I*{Flcd@Zb1gBmH1OLkMa&<;y^+L0@(eWb^!uDN_A?S@-r?W1 z31`HkGbNoWIMQ86!hx;ae)tPoom!Mm=?GzV{_MM6>z2gZplI>bB+o8(2$GnfY%E{$% zk`Su$^{i3?RG|8!gXlOHzPxb>{MphBsvFBS(VO+`m?F#_4Jv{>$=CDHMyW(2>I&8h zqLQTd1;=2@RXG5&73YTf+6H>FP*ogrei!&2`Q`4q7|o<^u|wS z#xa1CBPE=^aG0A`Idmm+T4y$PPY&4VpHeCcwE$8vRcjKZD(v4wcQCh>qGzdv3`TA; zvJY8axoi?kjH+ai%4)7+OX&S=Q3>U&GN4XO6qn4K(4_y5@G z8L6n|V`VRi2)C_Y-;6!|qZ3Vd?p{;2c$2a8HST1FpXsUBX~Fh1>x$VaJ~5h2d1#Dn z-TB3$Ys;CbtT<(eq|0tA{8Z;8)O^g?`nu9gpOYREEr7lCB)>ZQ1Ws}4l*cu3{P8nG z(5|rg6OXbLE8X+5lAmqVjIDF|=-g@OlKGov0_J6C} z3lyuOjp35MiPx^NMIUaD$QSr&aKmMwOh_nZ}Q|z)o5s0HD(B|q*SxTF0-P4H0-4?mH1i6+6 zvFeoDgncdp=Fcy11!)cGHysO2n(5BPpbt|5k6GyYOInDnmvwl1`&HvhW3+m?nTf6z z8zF%Zlqc4wL*z*-c+fe}gQ^&_eq-E2VEb*srfZM*#zik$-^5Fs4sa>bI<-b*aN%7J zhf1PO_udGIvQtAKtD14n4c+6NW@LB1ex4LjQ9MXYT5Sk}joq#EGdLvnSZxJfXP%kU zC#oN&wNC9*n@3OQhST?5V;2`V??`pmJOX7k5>oe2kmde)mKO)tF)+}{#1qf=$k4k= z+dBN=n;D1IOg#oo-YhYIdEqikyWl9BK6@I6s>YzP<`mzn8^ab}P0>_A!rC1nS&N^7 zOxB#+KOJ&-*NBWgaL46CzXS^aczc9+D2Cv}Tr>4};w89`46F+e8yW3ni6bLk?$gwo zWR^UhmIB>ZV@ok6V3Qxc$`>EJ=#ds__b>7qda#_?R&WLHLY9Avdwadoan>96jy1Xb zm`0-Br - + - + + + + + - + + + + + @@ -26,7 +34,7 @@ - + @@ -37,10 +45,21 @@ + + + + + + + + + + + - + @@ -52,12 +71,24 @@ + + + + + + + + + + + + - + Vessel 1 10.0 @@ -68,10 +99,10 @@ - + - + Enzyme MTEY @@ -83,20 +114,20 @@ - + - + Substrate - + - + Product @@ -104,6 +135,36 @@ + + + + + + + + + + 0.0 + 100.0 + 0.1 + + + + + + + + + + + + 0.0 + 100.0 + 0.1 + + + + @@ -116,6 +177,12 @@ + + + + + + @@ -132,11 +199,6 @@ - - - - - diff --git a/dev-examples/sbml_export_odes.py b/dev-examples/sbml_export_odes.py index 339caaf6..034e9d0f 100644 --- a/dev-examples/sbml_export_odes.py +++ b/dev-examples/sbml_export_odes.py @@ -1,17 +1,34 @@ import pyenzyme as pe import pyenzyme.equations as peq - from pyenzyme.sbml.serializer import to_sbml +from pyenzyme.tools import get_all_parameters from pyenzyme.units import mM, s, ml, K doc = pe.EnzymeMLDocument(name="Test") +ml.id = "u0" +s.id = "u1" +mM.id = "u2" +K.id = "u3" + # Add Vessels vessel = doc.add_to_vessels(name="Vessel 1", volume=10.0, unit=ml, id="v0") # Add Species -substrate = doc.add_to_small_molecules(id="s0", name="Substrate", vessel_id=vessel.id) -product = doc.add_to_small_molecules(id="s1", name="Product", vessel_id=vessel.id) +substrate = doc.add_to_small_molecules( + id="s0", + name="Substrate", + vessel_id=vessel.id, + canonical_smiles="CC(=O)O", + inchikey="QTBSBXVTEAMEQO-UHFFFAOYSA-N", +) +product = doc.add_to_small_molecules( + id="s1", + name="Product", + vessel_id=vessel.id, + canonical_smiles="CC(=O)O", + inchikey="QTBSBXVTEAMEQO-UHFFFAOYSA-N", +) # Add Enzyme enzyme = doc.add_to_proteins( @@ -19,13 +36,21 @@ name="Enzyme", sequence="MTEY", vessel_id=vessel.id, + ecnumber="1.1.1.1", + organism="E.coli", + organism_tax_id="12345", +) + +enzyme_complex = doc.add_to_complexes( + id="c0", + name="Enzyme-Substrate Complex", + participants=[enzyme.id, substrate.id], ) doc.equations += peq.build_equations( "s1'(t) = kcat * E_tot * s0(t) / (K_m + s0(t))", "E_tot = 100", - units=[mM / s, mM], - enzmldoc=doc, + unit_mapping={"kcat": 1 / s, "K_m": mM, "E_tot": mM}, ) doc.measurements += pe.read_excel( @@ -34,10 +59,15 @@ time_unit=s, ) +for parameter in get_all_parameters(doc): + parameter.lower = 0.0 + parameter.upper = 100.0 + parameter.stderr = 0.1 + for meas in doc.measurements: meas.temperature = 298.15 meas.temperature_unit = K meas.ph = 7.0 -to_sbml(doc, "./dev-examples/odes/sbml.xml") +to_sbml(doc, out="./dev-examples/odes/ode_example.omex") pe.write_enzymeml(doc=doc, path="./dev-examples/odes/enzymeml.json") diff --git a/dev-examples/sbml_export_reactions.py b/dev-examples/sbml_export_reactions.py index 53d61574..030aa9d1 100644 --- a/dev-examples/sbml_export_reactions.py +++ b/dev-examples/sbml_export_reactions.py @@ -1,8 +1,8 @@ import pyenzyme as pe import pyenzyme.equations as peq - from pyenzyme.sbml.serializer import to_sbml -from pyenzyme.units import mM, s, ml +from pyenzyme.tools import get_all_parameters +from pyenzyme.units import mM, s, ml, K doc = pe.EnzymeMLDocument(name="Test") @@ -25,11 +25,13 @@ reaction = peq.build_reaction( scheme="s0 -> s1", name="Reaction 1", + id="r0", modifiers=[enzyme.id], ) + reaction.kinetic_law = peq.build_equation( - "v(t) = kcat * p0(t) * s0(t) / ( K_m + s0(t) )", - unit=mM / s, + "kcat * p0(t) * s0(t) / ( K_m + s0(t) )", + unit_mapping={"kcat": 1 / s, "K_m": mM}, ) doc.reactions += [reaction] @@ -40,5 +42,15 @@ time_unit=s, ) -to_sbml(doc, "./dev-examples/reactions/sbml.xml") +for parameter in get_all_parameters(doc): + parameter.lower = 0.0 + parameter.upper = 100.0 + parameter.stderr = 0.1 + +for meas in doc.measurements: + meas.temperature = 298.15 + meas.temperature_unit = K + meas.ph = 7.0 + +to_sbml(doc, out="./dev-examples/reactions/reactions_example.omex") pe.write_enzymeml(doc=doc, path="./dev-examples/reactions/enzymeml.json") diff --git a/dev-examples/sbml_import_odes.py b/dev-examples/sbml_import_odes.py new file mode 100644 index 00000000..a78dfcf3 --- /dev/null +++ b/dev-examples/sbml_import_odes.py @@ -0,0 +1,9 @@ +from pathlib import Path + +import rich + +from pyenzyme.sbml import read_sbml + +doc = read_sbml(Path("./dev-examples/odes/ode_example.omex")) + +rich.print(doc) diff --git a/dev-examples/sbml_import_reactions.py b/dev-examples/sbml_import_reactions.py new file mode 100644 index 00000000..8c47df7a --- /dev/null +++ b/dev-examples/sbml_import_reactions.py @@ -0,0 +1,9 @@ +from pathlib import Path + +import rich + +from pyenzyme.sbml import read_sbml + +doc = read_sbml(Path("./dev-examples/reactions/reactions_example.omex")) + +rich.print(doc) From ef42fa79c0d76de2409c77fc67cbe80794fc2b8d Mon Sep 17 00:00:00 2001 From: Jan Range Date: Fri, 16 Aug 2024 16:03:31 +0200 Subject: [PATCH 023/172] implement sbml omex parser --- pyenzyme/sbml/omex.py | 73 ++++++ pyenzyme/sbml/parser.py | 512 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 585 insertions(+) create mode 100644 pyenzyme/sbml/omex.py create mode 100644 pyenzyme/sbml/parser.py diff --git a/pyenzyme/sbml/omex.py b/pyenzyme/sbml/omex.py new file mode 100644 index 00000000..1f86734a --- /dev/null +++ b/pyenzyme/sbml/omex.py @@ -0,0 +1,73 @@ +from __future__ import annotations + +import tempfile +from pathlib import Path + +import pandas as pd +from pymetadata.omex import EntryFormat, ManifestEntry, Omex + + +def create_sbml_omex( + sbml_doc: str, + data: pd.DataFrame | None, + out: Path, +) -> None: + """ + Create an OMEX archive with the given SBML and data files. + + Args: + sbml_doc (str): The SBML document to include in the archive. + data (pd.DataFrame | None): The data to include in the archive. + out (Path): The path to save the OMEX archive. + + Returns: + Omex: The created OMEX archive + + """ + + with tempfile.TemporaryDirectory() as temp_dir: + omex = Omex() + + sbml_path = f"{temp_dir}/model.xml" + with open(sbml_path, "w") as f: + f.write(sbml_doc) + omex.add_entry( + entry_path=Path(sbml_path), + entry=ManifestEntry( + location="./model.xml", + format=EntryFormat.SBML, + master=True, + ), + ) + + if data is not None: + data_path = f"{temp_dir}/data.tsv" + data.to_csv(data_path, sep="\t", index=False) + omex.add_entry( + entry_path=Path(data_path), + entry=ManifestEntry( + location="./data.tsv", + format=EntryFormat.TSV, + ), + ) + + omex.to_omex(out) + + +def read_sbml_omex(path: Path) -> tuple[Path, Path | None]: + """ + Read an OMEX archive and return the SBML and data file paths. + + Args: + path (Path): The path to the OMEX archive. + + Returns: + tuple[Path, Path | None]: The SBML file path and the data file path, if available. + + """ + + omex = Omex.from_omex(path) + sbml_file = omex.get_path("./model.xml") + data = omex.get_path("./data.tsv") + + return sbml_file, data diff --git a/pyenzyme/sbml/parser.py b/pyenzyme/sbml/parser.py new file mode 100644 index 00000000..815797e7 --- /dev/null +++ b/pyenzyme/sbml/parser.py @@ -0,0 +1,512 @@ +from __future__ import annotations + +import math +import re +import xml.etree.ElementTree as ET +from pathlib import Path +from typing import IO + +import libsbml as sbml # type: ignore +from loguru import logger # type: ignore + +import pyenzyme as pe +from pyenzyme import tools +from pyenzyme.logging import add_logger +from pyenzyme.units import M, s +from . import read_sbml_omex +from .ldutils import parse_sbml_rdf_annotation + +MAPPINGS = tools.read_static_file("pyenzyme.sbml", "mappings.toml") +ENZYMEML_NS = "https://www.enzymeml.org/v2" + + +def read_sbml(path: Path | str): + add_logger(name="SBML") + + # Create globals to use in the functions + global units + global parameters + global path_prefix + global tsv_path + + # Read the OMEX archive and extract the SBML and TSV paths + sbml_path, tsv_path = read_sbml_omex(path) + + # Read the SBML file and init an EnzymeML document + model = _init_and_read_sbml(open(sbml_path)) + enzmldoc = pe.EnzymeMLDocument(name=model.getName()) + + # Extract units to map these to the EnzymeML entities + units = { # type: ignore + unit.getId(): _parse_unit(unit) for unit in model.getListOfUnitDefinitions() + } + + # Extract and sort species + species = [_parse_species(species) for species in model.getListOfSpecies()] + enzmldoc.small_molecules = [s for s in species if isinstance(s, pe.SmallMolecule)] + enzmldoc.proteins = [s for s in species if isinstance(s, pe.Protein)] + enzmldoc.complexes = [s for s in species if isinstance(s, pe.Complex)] + + # Extract vessels + enzmldoc.vessels = [_parse_vessel(comp) for comp in model.getListOfCompartments()] + + # Extract equations from rules and initial assignments + parameters = [_parse_parameter(param) for param in model.getListOfParameters()] # type: ignore + enzmldoc.equations += [ + _parse_equation(rule, pe.EquationType.INITIAL_ASSIGNMENT) + for rule in model.getListOfInitialAssignments() + ] + + enzmldoc.equations += [ + _parse_equation(rule, pe.EquationType.ODE) + for rule in model.getListOfRules() + if rule.isRate() + ] + + enzmldoc.reactions = [ + _parse_reaction(reaction) for reaction in model.getListOfReactions() + ] + + enzmldoc.measurements = _parse_measurements(model) + + return enzmldoc + + +def _init_and_read_sbml(handler: IO): + """Initialize the SBML reader and read the SBML document.""" + + reader = sbml.SBMLReader() + sbmldoc = reader.readSBMLFromString(handler.read()) + if not sbmldoc: + logger.error("Could not read SBML document") + raise ValueError("Could not read SBML document") + + # Get the model + model = sbmldoc.getModel() + if not model: + logger.error("Could not get model from SBML file") + raise ValueError("Could not get model from SBML file") + + return model + + +def _parse_unit(unit: sbml.UnitDefinition): + """Parse a unit definition from an SBML model into an EnzymeML unit definition.""" + enzml_unit = pe.UnitDefinition( + id=unit.getId(), + name=unit.getName(), + ) + + parse_sbml_rdf_annotation(unit, enzml_unit) + + for base_unit in unit.getListOfUnits(): + multiplier = base_unit.getMultiplier() + kind = sbml.UnitKind_toString(base_unit.getKind()) + + if math.isnan(multiplier): + multiplier = None + + enzml_unit.add_to_base_units( + kind=kind, + exponent=base_unit.getExponent(), + scale=base_unit.getScale(), + multiplier=multiplier, + ) + + return enzml_unit + + +def _parse_species(species: sbml.Species): + """Parse a species from an SBML model into EnzymeML small molecule or protein.""" + sbo_term = species.getSBOTermID() + + if sbo_term == "SBO:0000247": + return _parse_small_molecule(species) + elif sbo_term == "SBO:0000252": + return _parse_protein(species) + elif sbo_term == "SBO:0000296": + return _parse_complex(species) + else: + logger.error( + f"Unknown SBO term for species '{species.getId()}': {sbo_term}. Unable to parse species." + ) + + +def _parse_small_molecule(species: sbml.Species): + """Parse a species from an SBML model into an EnzymeML small molecule.""" + + annots = _parse_enzymeml_annotations("smallMolecule", species.getAnnotationString()) + small_molecule = pe.SmallMolecule( + id=species.getId(), + name=species.getName(), + vessel_id=species.getCompartment(), + constant=species.getConstant(), + **annots, + ) + + parse_sbml_rdf_annotation(species, small_molecule) + + return small_molecule + + +def _parse_protein(species: sbml.Species): + """Parse a species from an SBML model into an EnzymeML small molecule.""" + + annots = _parse_enzymeml_annotations("protein", species.getAnnotationString()) + protein = pe.Protein( + id=species.getId(), + name=species.getName(), + vessel_id=species.getCompartment(), + constant=species.getConstant(), + **annots, + ) + + parse_sbml_rdf_annotation(species, protein) + + return protein + + +def _parse_complex(species: sbml.Species): + """Parse a species from an SBML model into an EnzymeML complex.""" + + annots = _parse_enzymeml_annotations("complex", species.getAnnotationString()) + complex_ = pe.Complex( + id=species.getId(), + name=species.getName(), + **annots, + ) + + parse_sbml_rdf_annotation(species, complex_) + + return complex_ + + +def _parse_vessel(compartment: sbml.Compartment): + """Parse a compartment from an SBML model into an EnzymeML vessel.""" + + vessel = pe.Vessel( + id=compartment.getId(), + name=compartment.getName(), + volume=_check_nan(compartment.getSize()), + unit=units[compartment.getUnits()], # type: ignore + ) + + parse_sbml_rdf_annotation(compartment, vessel) + + return vessel + + +def _parse_parameter(parameter: sbml.Parameter): + """Parse a parameter from an SBML model into an EnzymeML parameter.""" + annots = _parse_enzymeml_annotations("parameter", parameter.getAnnotationString()) + parameter = pe.Parameter( + id=parameter.getId(), + name=parameter.getName(), + symbol=parameter.getId(), + value=_check_nan(parameter.getValue()), + constant=parameter.getConstant(), + unit=units.get(parameter.getUnits()), # type: ignore + **annots, + ) + + return parameter + + +def _parse_equation(rule: sbml.Rule, rule_type: pe.EquationType): + """Parse a rule from an SBML model into an EnzymeML equation.""" + + match rule_type: + case pe.EquationType.INITIAL_ASSIGNMENT: + equation = sbml.formulaToString(rule.getMath()) + species_id = rule.getSymbol() + case pe.EquationType.ODE: + equation = rule.getFormula() + species_id = rule.getVariable() + case pe.EquationType.RATE_LAW: + equation = rule.getMath() + species_id = None + case _: + raise ValueError(f"Unknown rule type: {rule_type}") + + annots = _parse_enzymeml_annotations("variables", rule.getAnnotationString()) + equation = pe.Equation( + equation_type=rule_type, + equation=equation, + species_id=species_id, + parameters=_extract_parameters(equation), + variables=[pe.Variable(**annot) for annot in annots.get("variables", [])], + ) + + return equation + + +def _parse_reaction(reaction: sbml.Reaction): + """Parse a reaction from an SBML model into an EnzymeML reaction.""" + + # Get the reactants and products + products = [_parse_element(product, 1) for product in reaction.getListOfProducts()] + reactants = [ + _parse_element(reactant, -1) for reactant in reaction.getListOfReactants() + ] + + # Get the modifiers + modifiers = [modifier.getSpecies() for modifier in reaction.getListOfModifiers()] + + # Get the kinetic law + kinetic_law = _parse_kinetic_law(reaction) + + # Create the EnzymeML reaction + reaction = pe.Reaction( + id=reaction.getId(), + name=reaction.getName(), + reactants=reactants, + products=products, + modifiers=modifiers, + kinetic_law=kinetic_law, + ) + + return reaction + + +def _parse_element(species, direction: int): + return pe.ReactionElement( + species_id=species.getSpecies(), + stoichiometry=species.getStoichiometry() * direction, + ) + + +def _parse_kinetic_law(reaction): + kinetic_law = reaction.getKineticLaw() + + if not kinetic_law: + return None + + formula = kinetic_law.getFormula() + kinetic_law = pe.Equation( + equation=formula, + equation_type=pe.EquationType.RATE_LAW, + unit=M, # We need to set a default unit here, because SBML does not provide units for kinetic laws + ) + + kinetic_law.parameters = _extract_parameters(formula) + + return kinetic_law + + +def _extract_parameters(equation: str) -> list[pe.Parameter]: + """Extract the parameters from an equation.""" + + params = [] + for param in parameters: + if any( + _contains_param(equation, getattr(param, attr)) + for attr in ["id", "symbol", "name"] + ): + params.append(param) + + return params + + +def _contains_param(formula: str, param: str) -> bool: + return bool(re.search(rf"\b{param}\b", formula)) + + +def _parse_measurements(model: sbml.Model): + # Extract metadata from the model + meas_metadata, file_path = _get_meas_metadata(model) + meas_metadata = _extract_measurement_metadata(meas_metadata) + + # Read the CSV file into measurement objects + # We need to set defaults for the units here, + # but we will overwrite them with the units from the EnzymeML annotations + measurements = pe.read_csv( + tsv_path, + data_unit=M, + time_unit=s, + ) + + for meas_id, metadata in meas_metadata.items(): + _assign_units_and_initials(meas_id, measurements, metadata) + + return measurements + + +def _assign_units_and_initials(meas_id, measurements, metadata): + measurement = [m for m in measurements if m.id == meas_id][0] + conditions = metadata.get("condition", {}) + init_concs = metadata.get("speciesData", []) + measurement.temperature = conditions.get("temperature") + measurement.temperature_unit = conditions.get("temperature_unit") + + for init_conc in init_concs: + species_id = _get_species_id(init_conc) + meas_data = _get_species_data(measurement, species_id) + + meas_data.initial = init_conc.get("initial", 0.0) + meas_data.time_unit = init_conc["time_unit"] + meas_data.data_unit = init_conc["data_unit"] + + +def _get_species_id(init_conc): + species_id = init_conc.get("species_id") + assert species_id, "No species ID found in the EnzymeML data annotation" + return species_id + + +def _get_species_data(measurement, species_id): + try: + return [d for d in measurement.species_data if d.species_id == species_id][0] + except IndexError: + raise ValueError(f"No species data found for species ID {species_id}") + + +def _get_meas_metadata(model): + root = ET.fromstring(model.getAnnotationString()) + data = root.find(f"{{{ENZYMEML_NS}}}data") + meas_metadata = data.findall(f"{{{ENZYMEML_NS}}}measurement") + file_path = data.attrib.get("file") + + assert file_path, "No file path found in the EnzymeML data annotation" + + return meas_metadata, file_path + + +def _extract_measurement_metadata(meas_metadata): + measurements = {} + + for meas_meta in meas_metadata: + meas_id = meas_meta.attrib.get("id") + data = _process_measurement(meas_meta) + measurements[meas_id] = data + + return measurements + + +def _process_measurement(meas_meta): + data = {} + time_unit = units.get(meas_meta.attrib.get("timeUnit")) + + assert ( + time_unit + ), f"Time unit not found for measurement {meas_meta.attrib.get('id')}" + + species_data = _parse_enzymeml_annotations("speciesData", meas_meta).get( + "speciesData", [] + ) + conditions = _parse_enzymeml_annotations("conditions", meas_meta).get( + "conditions", [] + ) + + if conditions: + data["condition"] = _assign_temp_unit(conditions[0]) + if species_data: + data["speciesData"] = _assign_meas_units(species_data, time_unit) + + return data + + +def _assign_temp_unit(conditions): + if temp_unit := conditions.get("temperature_unit"): + conditions["temperature_unit"] = units.get(temp_unit) + + return conditions + + +def _assign_meas_units(species_data, time_unit): + for data in species_data: + data["data_unit"] = units.get(data["data_unit"]) + data["time_unit"] = time_unit + data["data_type"] = pe.DataTypes.__members__.get(data["data_type"]) + + return species_data + + +def _parse_enzymeml_annotations( + root_key: str, annotation: str | ET.Element | None +) -> dict: + """Parse the RDF annotation of an SBML object.""" + + if not annotation: + return {} + + mappings = MAPPINGS[root_key] + + match annotation: + case str(): + root = ET.fromstring(annotation).find(f".//{{{ENZYMEML_NS}}}{root_key}") + case _ if isinstance(annotation, ET.Element): + root = annotation + case _: + raise ValueError(f"Unknown annotation type: {type(annotation)}") + + if not root: + return {} + + return _map_values(mappings, root, root_key) + + +def _map_values(mappings, root, root_key=None): + """Map the values from the XML root to the EnzymeML entities.""" + + data = {} + for xml_key, enzml_key in mappings.items(): + match enzml_key: + case dict(): + if value := _process_nested_keys( + enzml_key=enzml_key, + root=root, + xml_key=xml_key, + ): + data[root_key] = value + + case str(): + if value := _process_simple( + root=root, + xml_key=xml_key, + ): + data[enzml_key] = value + case _: + raise ValueError(f"Unknown value type for key '{enzml_key}'") + + return data + + +def _process_simple( + root: ET.Element, + xml_key: str, +): + if xml_key.startswith("@"): + value = root.attrib.get(xml_key[1:]) + else: + value = root.findall(f"{{{ENZYMEML_NS}}}{xml_key}") + + if len(value) == 1: + value = value[0].text + elif len(value) > 1: + value = [v.text for v in value] + return value + + +def _process_nested_keys( + enzml_key: dict, + root: ET.Element, + xml_key: str, +): + value = root.findall(f".//{{{ENZYMEML_NS}}}{xml_key}") + if len(value) == 1: + value = [_map_values(enzml_key, value[0])] + elif len(value) > 1: + value = [_map_values(enzml_key, v) for v in value] + else: + return None + + return value + + +def _check_nan(value: float): + """Check if a value is NaN.""" + + if math.isnan(value): + return None + + return value From 16f4e89c56197cdda2116925449935db9ca70704 Mon Sep 17 00:00:00 2001 From: Jan Range Date: Fri, 16 Aug 2024 16:04:02 +0200 Subject: [PATCH 024/172] adjust serializer to model change --- pyenzyme/sbml/serializer.py | 194 +++++++++++++++++++++++++----------- 1 file changed, 136 insertions(+), 58 deletions(-) diff --git a/pyenzyme/sbml/serializer.py b/pyenzyme/sbml/serializer.py index 55887126..a2c87e2c 100644 --- a/pyenzyme/sbml/serializer.py +++ b/pyenzyme/sbml/serializer.py @@ -1,20 +1,23 @@ +from __future__ import annotations + +import xml.etree.ElementTree as ET from pathlib import Path +from typing import Callable, List + import libsbml -from loguru import logger import pandas as pd -import xml.etree.ElementTree as ET -from typing import Callable +from loguru import logger from pydantic import BaseModel import pyenzyme.model as pe -from pyenzyme.sbml.validation import validate_sbml_export -from pyenzyme.tabular import to_pandas import pyenzyme.tools as tools - -from pyenzyme import xmlutils as _xml from pyenzyme import rdf -from pyenzyme.units.units import UnitDefinition +from pyenzyme import xmlutils as _xml from pyenzyme.logging import add_logger +from pyenzyme.sbml import create_sbml_omex +from pyenzyme.sbml.validation import validate_sbml_export +from pyenzyme.tabular import to_pandas +from pyenzyme.units.units import UnitDefinition MAPPINGS = tools.read_static_file("pyenzyme.sbml", "mappings.toml") NSMAP = {"enzymeml": "https://www.enzymeml.org/v2"} @@ -41,6 +44,7 @@ def to_sbml( Args: enzmldoc (pe.EnzymeMLDocument): The EnzymeML document to convert. out (Path | str | None, optional): The output file to write the SBML document to. Defaults to None. + verbose (bool, optional): Whether to print warnings during SBML validation. Defaults to False. Returns: tuple[str, pd.DataFrame] | None: The SBML document as a string and a DataFrame with the RDF triples. @@ -59,20 +63,22 @@ def to_sbml( global model global doc - doc = enzmldoc.copy() + doc = enzmldoc sbmldoc = libsbml.SBMLDocument() model = sbmldoc.createModel() - units = tools.find_unique(enzmldoc, pe.UnitDefinition) + model.setName(doc.name) + units = _assign_ids_to_units(tools.find_unique(doc, UnitDefinition)) + print_warnings = verbose _xml.register_namespaces(nsmap=NSMAP) # Add entities - [_add_unit_definitions(unit, i) for i, unit in enumerate(units)] + [_add_unit_definitions(unit) for unit in units] [_add_vessel(vessel) for vessel in doc.vessels] [_add_protein(protein) for protein in doc.proteins] + [_add_complex(complex_) for complex_ in doc.complexes] [_add_small_mol(small_mol) for small_mol in doc.small_molecules] - [_add_parameter(param) for param in doc.parameters] [_add_equation(equation) for equation in doc.equations] [_add_reaction(reaction, i) for i, reaction in enumerate(doc.reactions)] @@ -86,26 +92,27 @@ def to_sbml( out = Path(out) if out.is_dir(): - out = out / "enzymeml_doc.xml" + out = out / "enzymeml_doc.omex" else: - out = out.with_suffix(".xml") + out = out.with_suffix(".omex") _validate_sbml(sbmldoc) + create_sbml_omex( + sbml_doc=libsbml.writeSBMLToString(sbmldoc), + data=to_pandas(doc), + out=out, + ) - libsbml.writeSBML(sbmldoc, str(out)) - - if doc.measurements: - to_pandas(doc).to_csv(out.with_name("data.tsv"), sep="\t", index=False) - - logger.info(f"SBML document written to {out}") + logger.info(f"OMEX archive written to {out}") -def _add_unit_definitions(unit: UnitDefinition, index: int): +def _add_unit_definitions(unit: UnitDefinition): """Add unit definitions to the SBML model.""" sbml_unitdef = model.createUnitDefinition() + + sbml_unitdef.setId(unit.id) sbml_unitdef.setName(unit.name) - sbml_unitdef.setId(f"u{index}") sbml_unitdef.setAnnotation(rdf.to_rdf_xml(unit)) for base_unit in unit.base_units: @@ -130,7 +137,7 @@ def _add_vessel(vessel: pe.Vessel): compartment.setAnnotation(rdf.to_rdf_xml(vessel)) if vessel.unit in units: - compartment.setUnits(_get_unit(vessel.unit, units)) + compartment.setUnits(_get_unit_id(vessel.unit)) else: raise ValueError(f"Unit {vessel.unit} not found in units") @@ -143,6 +150,7 @@ def _add_small_mol(small_mol: pe.SmallMolecule): species.setName(small_mol.name) species.setCompartment(small_mol.vessel_id) species.setConstant(small_mol.constant) + species.setSBOTerm("SBO:0000247") # Simple chemical species.appendAnnotation(rdf.to_rdf_xml(small_mol)) init_conc = _get_first_meas_init_conc(small_mol) @@ -151,9 +159,8 @@ def _add_small_mol(small_mol: pe.SmallMolecule): species.setInitialConcentration(init_conc) species.setHasOnlySubstanceUnits(False) - root = ET.Element("enzymeml") annot = _xml.serialize_to_pretty_xml_string( - _extract_create_annot("smallMolecule", small_mol, root) + _extract_create_annot("smallMolecule", small_mol) ) if annot is not None: @@ -168,6 +175,7 @@ def _add_protein(protein: pe.Protein): species.setName(protein.name) species.setConstant(protein.constant) species.setCompartment(protein.vessel_id) + species.setSBOTerm("SBO:0000252") # Protein species.appendAnnotation(rdf.to_rdf_xml(protein)) init_conc = _get_first_meas_init_conc(protein) @@ -184,6 +192,24 @@ def _add_protein(protein: pe.Protein): species.appendAnnotation(annot) +def _add_complex(complex_: pe.Complex): + """Add complexes to the SBML model.""" + + species = model.createSpecies() + species.setId(complex_.id) + species.setName(complex_.name) + species.setConstant(True) + species.setSBOTerm("SBO:0000296") # Complex + species.appendAnnotation(rdf.to_rdf_xml(complex_)) + + annot = _xml.serialize_to_pretty_xml_string( + _extract_create_annot("complex", complex_) + ) + + if annot is not None: + species.appendAnnotation(annot) + + def _get_first_meas_init_conc(species: pe.SmallMolecule | pe.Protein): """Extracts the initial concentration of a species from the first measurement @@ -196,10 +222,10 @@ def _get_first_meas_init_conc(species: pe.SmallMolecule | pe.Protein): return None measurement = doc.measurements[0] - meas_species = measurement.filter_species(species_id=species.id) + meas_species = measurement.filter_species_data(species_id=species.id) if meas_species: - return meas_species[0].init_conc + return meas_species[0].initial else: return None @@ -209,7 +235,7 @@ def _add_reaction(reaction: pe.Reaction, index: int): sbml_reaction = model.createReaction() sbml_reaction.setName(reaction.name) - sbml_reaction.setId(f"r{index}") + sbml_reaction.setId(reaction.id) sbml_reaction.setReversible(reaction.reversible) for species in reaction.species: @@ -239,8 +265,15 @@ def _add_rate_law(equation: pe.Equation, reac: libsbml.Reaction): law.setMath(libsbml.parseL3Formula(equation.equation)) for parameter in equation.parameters: - param = law.createParameter() - param.setId(parameter.id) + if not model.getParameter(parameter.id): + _add_parameter(pe.Parameter(**parameter.model_dump())) + + if annot := _create_equation_annot(equation): + law.setAnnotation(_xml.serialize_to_pretty_xml_string(annot)) + + +def _create_equation_annot(equation: pe.Equation) -> ET.Element | None: + return _extract_create_annot("variables", equation.variables) def _get_create_fun( @@ -269,7 +302,7 @@ def _add_parameter(parameter: pe.Parameter): if parameter.value: sbml_param.setValue(parameter.value) if parameter.unit: - sbml_param.setUnits(_get_unit(parameter.unit, units)) + sbml_param.setUnits(_get_unit_id(parameter.unit)) annot = _xml.serialize_to_pretty_xml_string( _extract_create_annot("parameter", parameter) @@ -283,33 +316,37 @@ def _add_equation(equation: pe.Equation): """Add equations to the SBML model.""" if equation.equation_type == pe.EquationType.ODE: - sbml_rule = model.createRateRule() + sbml_rule = model.createRateRule() # type: ignore sbml_rule.setVariable(equation.species_id) - sbml_rule.setUnits(_get_unit(equation.unit, units)) elif equation.equation_type == pe.EquationType.ASSIGNMENT: - sbml_rule = model.createAssignmentRule() + sbml_rule = model.createAssignmentRule() # type: ignore sbml_rule.setVariable(equation.species_id) - sbml_rule.setUnits(_get_unit(equation.unit, units)) elif equation.equation_type == pe.EquationType.INITIAL_ASSIGNMENT: - sbml_rule = model.createInitialAssignment() + sbml_rule = model.createInitialAssignment() # type: ignore sbml_rule.setSymbol(equation.species_id) else: raise ValueError(f"Equation type {equation.equation_type} not supported") sbml_rule.setMath(libsbml.parseL3Formula(equation.equation)) + for parameter in equation.parameters: + if not model.getParameter(parameter.id): # type: ignore + _add_parameter(parameter) + + if annot := _create_equation_annot(equation): + sbml_rule.setAnnotation(_xml.serialize_to_pretty_xml_string(annot)) + def _add_measurements(measurements: list[pe.Measurement]): """Adds measurements to the SBML model.""" annotation = ET.Element(f"{{{NSMAP['enzymeml']}}}data") - annotation.attrib["file"] = "data.csv" + annotation.attrib["file"] = "data.tsv" for measurement in measurements: meas_element = _extract_create_annot("measurement", measurement) - meas_element.attrib["timeUnit"] = _get_unit( # type: ignore - measurement.species[0].time_unit, - units, + meas_element.attrib["timeUnit"] = _get_unit_id( # type: ignore + measurement.species_data[0].time_unit ) assert meas_element is not None, "Measurement element is None" @@ -317,14 +354,14 @@ def _add_measurements(measurements: list[pe.Measurement]): conditions = _create_condition_element( ph=measurement.ph, temperature=measurement.temperature, - temperature_unit=measurement.temperature_unit, # type: ignore + temperature_unit=_get_unit_id(measurement.temperature_unit), # type: ignore ) if conditions: meas_element.append(conditions) - for species in measurement.species: - _extract_create_annot("initConc", species, meas_element) + for species in measurement.species_data: + _extract_create_annot("speciesData", species, meas_element) annotation.append(meas_element) @@ -358,7 +395,7 @@ def _create_condition_element( def _extract_create_annot( name: str, - obj: BaseModel, + obj: BaseModel | list[BaseModel], element: ET.Element | None = None, ) -> ET.Element | None: """Extracts the data from the object and creates an annotation element. @@ -374,16 +411,30 @@ def _extract_create_annot( Returns: ET.Element: The annotation element. """ - mappings = _extract(obj, MAPPINGS[name]) - if element is None: element = ET.Element(f"{{{NSMAP['enzymeml']}}}{name}") - _xml.map_to_xml( - root=element, - mappings=mappings, - namespace=NSMAP["enzymeml"], - ) + if isinstance(obj, list): + mappings = [ + _extract(item, MAPPINGS[name]) + for item in obj + if item.dict(exclude_unset=True) + ] + + for mapping in mappings: + _xml.map_to_xml( + root=element, + mappings=mapping, + namespace=NSMAP["enzymeml"], + ) + else: + mappings = _extract(obj, MAPPINGS[name]) + + _xml.map_to_xml( + root=element, + mappings=mappings, + namespace=NSMAP["enzymeml"], + ) if len(element) == 0 and not element.attrib: return None @@ -409,7 +460,13 @@ def _extract(obj: BaseModel, mapping: dict) -> dict: data[trgt_key] = _extract(obj, enzml_key) elif "unit" in enzml_key: value = getattr(obj, enzml_key) - data[trgt_key] = _get_unit(value, units) + data[trgt_key] = _get_unit_id(value) + elif isinstance(getattr(obj, enzml_key), list) and all( + isinstance(item, BaseModel) for item in getattr(obj, enzml_key) + ): + data[trgt_key] = [ + _extract(item, MAPPINGS[enzml_key]) for item in getattr(obj, enzml_key) + ] else: data[trgt_key] = getattr(obj, enzml_key) @@ -423,14 +480,13 @@ def _get_sbml_kind(unit_type: pe.UnitType): raise ValueError(f"Unit type {unit_type} not found in libsbml") -def _get_unit(unit: pe.UnitDefinition, units: list[pe.UnitDefinition]) -> str | None: +def _get_unit_id(unit: pe.UnitDefinition) -> str: """Helper function to get the unit from the list of units.""" - try: - index = units.index(unit) - except ValueError: - return None - return f"u{index}" + if unit.id is None: + raise ValueError(f"Unit {unit.name} does not have an ID") + + return unit.id def _validate_sbml(sbmldoc: libsbml.SBMLDocument) -> None: @@ -458,3 +514,25 @@ def _validate_sbml(sbmldoc: libsbml.SBMLDocument) -> None: if not valid: raise ValueError("SBML model is not valid") + + +def _assign_ids_to_units(doc_units: List[UnitDefinition]) -> List[UnitDefinition]: + ids = [unit.id for unit in doc_units if unit.id] + + for unit in doc_units: + if unit.id is None: + new_id = next(_id_generator(ids)) + unit.id = new_id + + return doc_units + + +def _id_generator(ids: list[str]): + """Generator for creating unique IDs that are not in unit_ids.""" + i = 0 + while True: + potential_id = f"u{i}" + if potential_id not in ids: + ids.append(potential_id) + yield potential_id + i += 1 From 81dde6d8233e5b7655ea181eeadab425240aa911 Mon Sep 17 00:00:00 2001 From: Jan Range Date: Fri, 16 Aug 2024 16:04:19 +0200 Subject: [PATCH 025/172] adjust and extend mappings to model changes --- pyenzyme/sbml/mappings.toml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/pyenzyme/sbml/mappings.toml b/pyenzyme/sbml/mappings.toml index 771a68bd..73f0fc14 100644 --- a/pyenzyme/sbml/mappings.toml +++ b/pyenzyme/sbml/mappings.toml @@ -10,6 +10,9 @@ organism = "organism" organismTaxId = "organism_tax_id" sequence = "sequence" +[complex] +participants = "participants" + [conditions] ph = { "@value" = "ph" } @@ -26,6 +29,10 @@ stdDeviation = "stderr" "@id" = "id" "@name" = "name" -[initConc] +[speciesData] + +speciesData = { "@species" = "species_id", "@value" = "initial", "@unit" = "data_unit", "@type" = "data_type" } + +[variables] -initConc = { "@species" = "species_id", "@value" = "init_conc", "@unit" = "data_unit" } +variable = { "@id" = "id", "@name" = "name", "@symbol" = "symbol" } From 6b290534c176f2b926c2437dcb18bb3ac28b541e Mon Sep 17 00:00:00 2001 From: Jan Range Date: Fri, 16 Aug 2024 16:04:39 +0200 Subject: [PATCH 026/172] format strings in multiple lines --- pyenzyme/sbml/validation.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/pyenzyme/sbml/validation.py b/pyenzyme/sbml/validation.py index c98dbc09..d3b83612 100644 --- a/pyenzyme/sbml/validation.py +++ b/pyenzyme/sbml/validation.py @@ -9,7 +9,6 @@ def validate_sbml_export(doc: pe.EnzymeMLDocument) -> bool: Args: doc (pe.EnzymeMLDocument): The EnzymeML document to validate. - channel (str, optional): The channel to log to. Defaults to sys.stderr. Returns: bool: True if the document is valid, False otherwise. @@ -31,7 +30,7 @@ def _check_consistent_vessel_ids(doc: pe.EnzymeMLDocument) -> bool: """This validator checks whether all species have a vessel id that exists in the document. SBML documents require that all species have a vessel id that exists in the document and - this validator checks for that. Otherwise an error message will be logged and the validity + this validator checks for that. Otherwise, an error message will be logged and the validity set to False. """ @@ -47,7 +46,8 @@ def _check_consistent_vessel_ids(doc: pe.EnzymeMLDocument) -> bool: result.append(False) elif species.vessel_id not in vessel_ids: logger.error( - f"Species '{species.id}' of type '{type(species).__name__}' has a vessel id that does not exist in the document." + f"Species '{species.id}' of type '{type(species).__name__}' has a vessel id that does not exist in " + f"the document." ) result.append(False) else: @@ -75,7 +75,8 @@ def _check_equation_either_rule_or_reaction(doc: pe.EnzymeMLDocument) -> bool: for element in all_reaction_elements: if element.species_id in species_w_rate and element.species_id not in validated: logger.error( - f"Species '{element.species_id}' is part of a reaction and has a rate equation. This is not allowed in SBML." + f"Species '{element.species_id}' is part of a reaction and has a rate equation. This is not allowed " + f"in SBML." ) validated.add(element.species_id) result.append(False) @@ -90,7 +91,6 @@ def _check_units_exist(doc: pe.EnzymeMLDocument): mandatory_unit_objects = [ *tools.extract(obj=doc, target=pe.MeasurementData), - *tools.extract(obj=doc, target=pe.Equation), ] optional_unit_objects = [ @@ -149,7 +149,8 @@ def _check_assigned_params_are_not_constant(doc: pe.EnzymeMLDocument): if params[0].constant: params[0].constant = False logger.warning( - f"Parameter '{params[0].id}' has an assignment rule, but is set to constant. The parameter is now set to non-constant." + f"Parameter '{params[0].id}' has an assignment rule, but is set to constant. The parameter is now set " + f"to non-constant." ) result.append(True) From 7be7ace3cf4dcabeb72c1f14f0a9a301818a7ac4 Mon Sep 17 00:00:00 2001 From: Jan Range Date: Fri, 16 Aug 2024 16:04:46 +0200 Subject: [PATCH 027/172] model update --- pyenzyme/model.py | 1010 ++++++++++++++++++++++----------------------- 1 file changed, 493 insertions(+), 517 deletions(-) diff --git a/pyenzyme/model.py b/pyenzyme/model.py index b1205c89..a8280e61 100644 --- a/pyenzyme/model.py +++ b/pyenzyme/model.py @@ -1,18 +1,16 @@ ## This is a generated file. Do not modify it manually! from __future__ import annotations - +from pydantic import BaseModel, Field, ConfigDict +from typing import Optional, Generic, TypeVar from enum import Enum -from typing import Generic, Optional, TypeVar from uuid import uuid4 - -from pydantic import BaseModel, ConfigDict, Field +from datetime import date, datetime # Filter Wrapper definition used to filter a list of objects # based on their attributes Cls = TypeVar("Cls") - class FilterWrapper(Generic[Cls]): """Wrapper class to filter a list of objects based on their attributes""" @@ -49,8 +47,7 @@ def add_namespace(obj, prefix: str | None, iri: str | None): elif iri and prefix is None: raise ValueError("If iri is provided, prefix must also be provided") - obj.ld_context[prefix] = iri # type: ignore - + obj.ld_context[prefix] = iri # type: ignore def validate_prefix(term: str | dict, prefix: str): """Validates that a term is prefixed with a given prefix @@ -68,14 +65,13 @@ def validate_prefix(term: str | dict, prefix: str): elif isinstance(term, str) and not term.startswith(prefix + ":"): raise ValueError(f"Term {term} is not prefixed with {prefix}") - # Model Definitions - class EnzymeMLDocument(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment=True, - ) # type: ignore + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore name: str references: list[str] = Field(default_factory=list) @@ -89,22 +85,21 @@ class EnzymeMLDocument(BaseModel): reactions: list[Reaction] = Field(default_factory=list) measurements: list[Measurement] = Field(default_factory=list) equations: list[Equation] = Field(default_factory=list) - parameters: list[Parameter] = Field(default_factory=list) # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:EnzymeMLDocument/" + str(uuid4()), + default_factory=lambda: "enzml:EnzymeMLDocument/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: [ + default_factory = lambda: [ "enzml:EnzymeMLDocument", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", @@ -116,7 +111,7 @@ class EnzymeMLDocument(BaseModel): "created": "schema:dateCreated", "modified": "schema:dateModified", "creators": "schema:creator", - }, + } ) def filter_creators(self, **kwargs) -> list[Creator]: @@ -215,24 +210,13 @@ def filter_equations(self, **kwargs) -> list[Equation]: return FilterWrapper[Equation](self.equations, **kwargs).filter() - def filter_parameters(self, **kwargs) -> list[Parameter]: - """Filters the parameters attribute based on the given kwargs - - Args: - **kwargs: The attributes to filter by. - - Returns: - list[Parameter]: The filtered list of Parameter objects - """ - - return FilterWrapper[Parameter](self.parameters, **kwargs).filter() def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -254,9 +238,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert ( - attr in self.model_fields - ), f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -265,7 +247,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -292,6 +277,7 @@ def add_type_term( add_namespace(self, prefix, iri) self.ld_type.append(term) + def add_to_creators( self, given_name: str, @@ -299,22 +285,29 @@ def add_to_creators( mail: str, **kwargs, ): - params = {"given_name": given_name, "family_name": family_name, "mail": mail} + params = { + "given_name": given_name, + "family_name": family_name, + "mail": mail + } if "id" in kwargs: params["id"] = kwargs["id"] - self.creators.append(Creator(**params)) + self.creators.append( + Creator(**params) + ) return self.creators[-1] + def add_to_vessels( self, id: str, name: str, volume: float, unit: UnitDefinition, - constant: bool = True, + constant: bool= True, **kwargs, ): params = { @@ -322,27 +315,30 @@ def add_to_vessels( "name": name, "volume": volume, "unit": unit, - "constant": constant, + "constant": constant } if "id" in kwargs: params["id"] = kwargs["id"] - self.vessels.append(Vessel(**params)) + self.vessels.append( + Vessel(**params) + ) return self.vessels[-1] + def add_to_proteins( self, id: str, name: str, - constant: bool = False, - sequence: Optional[str] = None, - vessel_id: Optional[str] = None, - ecnumber: Optional[str] = None, - organism: Optional[str] = None, - organism_tax_id: Optional[str] = None, - references: list[str] = [], + constant: bool= False, + sequence: Optional[str]= None, + vessel_id: Optional[str]= None, + ecnumber: Optional[str]= None, + organism: Optional[str]= None, + organism_tax_id: Optional[str]= None, + references: list[str]= [], **kwargs, ): params = { @@ -354,40 +350,54 @@ def add_to_proteins( "ecnumber": ecnumber, "organism": organism, "organism_tax_id": organism_tax_id, - "references": references, + "references": references } if "id" in kwargs: params["id"] = kwargs["id"] - self.proteins.append(Protein(**params)) + self.proteins.append( + Protein(**params) + ) return self.proteins[-1] + def add_to_complexes( self, id: str, - participants: list[str] = [], + name: str, + constant: bool= False, + participants: list[str]= [], **kwargs, ): - params = {"id": id, "participants": participants} + params = { + "id": id, + "name": name, + "constant": constant, + "participants": participants + } if "id" in kwargs: params["id"] = kwargs["id"] - self.complexes.append(Complex(**params)) + self.complexes.append( + Complex(**params) + ) return self.complexes[-1] + def add_to_small_molecules( self, id: str, name: str, - constant: bool = False, - vessel_id: Optional[str] = None, - canonical_smiles: Optional[str] = None, - inchikey: Optional[str] = None, - references: list[str] = [], + constant: bool= False, + vessel_id: Optional[str]= None, + canonical_smiles: Optional[str]= None, + inchi: Optional[str]= None, + inchikey: Optional[str]= None, + references: list[str]= [], **kwargs, ): params = { @@ -396,25 +406,29 @@ def add_to_small_molecules( "constant": constant, "vessel_id": vessel_id, "canonical_smiles": canonical_smiles, + "inchi": inchi, "inchikey": inchikey, - "references": references, + "references": references } if "id" in kwargs: params["id"] = kwargs["id"] - self.small_molecules.append(SmallMolecule(**params)) + self.small_molecules.append( + SmallMolecule(**params) + ) return self.small_molecules[-1] + def add_to_reactions( self, id: str, name: str, - reversible: bool = False, - kinetic_law: Optional[Equation] = None, - species: list[ReactionElement] = [], - modifiers: list[str] = [], + reversible: bool= False, + kinetic_law: Optional[Equation]= None, + species: list[ReactionElement]= [], + modifiers: list[str]= [], **kwargs, ): params = { @@ -423,107 +437,81 @@ def add_to_reactions( "reversible": reversible, "kinetic_law": kinetic_law, "species": species, - "modifiers": modifiers, + "modifiers": modifiers } if "id" in kwargs: params["id"] = kwargs["id"] - self.reactions.append(Reaction(**params)) + self.reactions.append( + Reaction(**params) + ) return self.reactions[-1] + def add_to_measurements( self, id: str, name: str, - species: list[MeasurementData] = [], - group_id: Optional[str] = None, - ph: Optional[float] = None, - temperature: Optional[float] = None, - temperature_unit: Optional[UnitDefinition] = None, + species_data: list[MeasurementData]= [], + group_id: Optional[str]= None, + ph: Optional[float]= None, + temperature: Optional[float]= None, + temperature_unit: Optional[UnitDefinition]= None, **kwargs, ): params = { "id": id, "name": name, - "species": species, + "species_data": species_data, "group_id": group_id, "ph": ph, "temperature": temperature, - "temperature_unit": temperature_unit, + "temperature_unit": temperature_unit } if "id" in kwargs: params["id"] = kwargs["id"] - self.measurements.append(Measurement(**params)) + self.measurements.append( + Measurement(**params) + ) return self.measurements[-1] + def add_to_equations( self, - unit: UnitDefinition, - equation_type: EquationType, equation: str, - species_id: Optional[str] = None, - variables: list[EqVariable] = [], - parameters: list[EqParameter] = [], + equation_type: EquationType, + species_id: Optional[str]= None, + variables: list[Variable]= [], + parameters: list[Parameter]= [], **kwargs, ): params = { - "unit": unit, - "equation_type": equation_type, "equation": equation, + "equation_type": equation_type, "species_id": species_id, "variables": variables, - "parameters": parameters, + "parameters": parameters } if "id" in kwargs: params["id"] = kwargs["id"] - self.equations.append(Equation(**params)) + self.equations.append( + Equation(**params) + ) return self.equations[-1] - def add_to_parameters( - self, - id: str, - name: str, - value: Optional[float] = None, - unit: Optional[UnitDefinition] = None, - initial_value: Optional[float] = None, - upper: Optional[float] = None, - lower: Optional[float] = None, - stderr: Optional[float] = None, - constant: Optional[bool] = True, - **kwargs, - ): - params = { - "id": id, - "name": name, - "value": value, - "unit": unit, - "initial_value": initial_value, - "upper": upper, - "lower": lower, - "stderr": stderr, - "constant": constant, - } - - if "id" in kwargs: - params["id"] = kwargs["id"] - - self.parameters.append(Parameter(**params)) - - return self.parameters[-1] - - class Creator(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment=True, - ) # type: ignore + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore given_name: str family_name: str @@ -532,30 +520,33 @@ class Creator(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Creator/" + str(uuid4()), + default_factory=lambda: "enzml:Creator/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: ["enzml:Creator", "schema:person"], + default_factory = lambda: [ + "enzml:Creator","schema:person" + ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", "given_name": "schema:givenName", "family_name": "schema:familyName", "mail": "schema:email", - }, + } ) + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -577,9 +568,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert ( - attr in self.model_fields - ), f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -588,7 +577,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -617,9 +609,10 @@ def add_type_term( class Vessel(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment=True, - ) # type: ignore + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore id: str name: str @@ -630,15 +623,17 @@ class Vessel(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Vessel/" + str(uuid4()), + default_factory=lambda: "enzml:Vessel/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: ["enzml:Vessel", "OBO:OBI_0400081"], + default_factory = lambda: [ + "enzml:Vessel","OBO:OBI_0400081" + ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", @@ -648,15 +643,16 @@ class Vessel(BaseModel): }, "name": "schema:name", "volume": "OBO:OBI_0002139", - }, + } ) + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -678,9 +674,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert ( - attr in self.model_fields - ), f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -689,7 +683,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -718,9 +715,10 @@ def add_type_term( class Protein(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment=True, - ) # type: ignore + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore id: str name: str @@ -735,15 +733,17 @@ class Protein(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Protein/" + str(uuid4()), + default_factory=lambda: "enzml:Protein/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: ["enzml:Protein", "schema:Protein"], + default_factory = lambda: [ + "enzml:Protein","schema:Protein" + ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", @@ -764,15 +764,16 @@ class Protein(BaseModel): "@id": "schema:citation", "@type": "@id", }, - }, + } ) + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -794,9 +795,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert ( - attr in self.model_fields - ), f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -805,7 +804,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -834,27 +836,30 @@ def add_type_term( class Complex(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment=True, - ) # type: ignore + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore id: str + name: str + constant: bool = False participants: list[str] = Field(default_factory=list) # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Complex/" + str(uuid4()), + default_factory=lambda: "enzml:Complex/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: [ + default_factory = lambda: [ "enzml:Complex", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", @@ -862,18 +867,20 @@ class Complex(BaseModel): "@id": "schema:identifier", "@type": "@id", }, + "name": "schema:name", "participants": { "@type": "@id", }, - }, + } ) + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -895,9 +902,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert ( - attr in self.model_fields - ), f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -906,7 +911,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -935,32 +943,34 @@ def add_type_term( class SmallMolecule(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment=True, - ) # type: ignore + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore id: str name: str constant: bool = False vessel_id: Optional[str] = Field(default=None) canonical_smiles: Optional[str] = Field(default=None) + inchi: Optional[str] = Field(default=None) inchikey: Optional[str] = Field(default=None) references: list[str] = Field(default_factory=list) # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:SmallMolecule/" + str(uuid4()), + default_factory=lambda: "enzml:SmallMolecule/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: [ + default_factory = lambda: [ "enzml:SmallMolecule", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", @@ -977,15 +987,16 @@ class SmallMolecule(BaseModel): "@id": "schema:citation", "@type": "@id", }, - }, + } ) + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -1007,9 +1018,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert ( - attr in self.model_fields - ), f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1018,7 +1027,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1047,9 +1059,10 @@ def add_type_term( class Reaction(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment=True, - ) # type: ignore + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore id: str name: str @@ -1061,17 +1074,17 @@ class Reaction(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Reaction/" + str(uuid4()), + default_factory=lambda: "enzml:Reaction/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: [ + default_factory = lambda: [ "enzml:Reaction", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", @@ -1082,7 +1095,7 @@ class Reaction(BaseModel): "modifiers": { "@type": "@id", }, - }, + } ) def filter_species(self, **kwargs) -> list[ReactionElement]: @@ -1097,12 +1110,13 @@ def filter_species(self, **kwargs) -> list[ReactionElement]: return FilterWrapper[ReactionElement](self.species, **kwargs).filter() + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -1124,9 +1138,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert ( - attr in self.model_fields - ), f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1135,7 +1147,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1162,26 +1177,33 @@ def add_type_term( add_namespace(self, prefix, iri) self.ld_type.append(term) + def add_to_species( self, species_id: str, stoichiometry: float, **kwargs, ): - params = {"species_id": species_id, "stoichiometry": stoichiometry} + params = { + "species_id": species_id, + "stoichiometry": stoichiometry + } if "id" in kwargs: params["id"] = kwargs["id"] - self.species.append(ReactionElement(**params)) + self.species.append( + ReactionElement(**params) + ) return self.species[-1] class ReactionElement(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment=True, - ) # type: ignore + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore species_id: str stoichiometry: float @@ -1189,32 +1211,33 @@ class ReactionElement(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:ReactionElement/" + str(uuid4()), + default_factory=lambda: "enzml:ReactionElement/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: [ + default_factory = lambda: [ "enzml:ReactionElement", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", "species_id": { "@type": "@id", }, - }, + } ) + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -1236,9 +1259,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert ( - attr in self.model_fields - ), f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1247,7 +1268,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1276,70 +1300,71 @@ def add_type_term( class Equation(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment=True, - ) # type: ignore - unit: UnitDefinition - equation_type: EquationType + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore + equation: str + equation_type: EquationType species_id: Optional[str] = Field(default=None) - variables: list[EqVariable] = Field(default_factory=list) - parameters: list[EqParameter] = Field(default_factory=list) + variables: list[Variable] = Field(default_factory=list) + parameters: list[Parameter] = Field(default_factory=list) # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Equation/" + str(uuid4()), + default_factory=lambda: "enzml:Equation/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: [ + default_factory = lambda: [ "enzml:Equation", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", "species_id": { "@type": "@id", }, - }, + } ) - def filter_variables(self, **kwargs) -> list[EqVariable]: + def filter_variables(self, **kwargs) -> list[Variable]: """Filters the variables attribute based on the given kwargs Args: **kwargs: The attributes to filter by. Returns: - list[EqVariable]: The filtered list of EqVariable objects + list[Variable]: The filtered list of Variable objects """ - return FilterWrapper[EqVariable](self.variables, **kwargs).filter() + return FilterWrapper[Variable](self.variables, **kwargs).filter() - def filter_parameters(self, **kwargs) -> list[EqParameter]: + def filter_parameters(self, **kwargs) -> list[Parameter]: """Filters the parameters attribute based on the given kwargs Args: **kwargs: The attributes to filter by. Returns: - list[EqParameter]: The filtered list of EqParameter objects + list[Parameter]: The filtered list of Parameter objects """ - return FilterWrapper[EqParameter](self.parameters, **kwargs).filter() + return FilterWrapper[Parameter](self.parameters, **kwargs).filter() + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -1361,9 +1386,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert ( - attr in self.model_fields - ), f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1372,7 +1395,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1399,85 +1425,104 @@ def add_type_term( add_namespace(self, prefix, iri) self.ld_type.append(term) + def add_to_variables( self, id: str, name: str, - symbol: Optional[str] = None, + symbol: str, **kwargs, ): - params = {"id": id, "name": name, "symbol": symbol} + params = { + "id": id, + "name": name, + "symbol": symbol + } if "id" in kwargs: params["id"] = kwargs["id"] - self.variables.append(EqVariable(**params)) + self.variables.append( + Variable(**params) + ) return self.variables[-1] + def add_to_parameters( self, id: str, name: str, - symbol: Optional[str] = None, - value: Optional[float] = None, + symbol: str, + value: Optional[float]= None, + unit: Optional[UnitDefinition]= None, + initial_value: Optional[float]= None, + upper: Optional[float]= None, + lower: Optional[float]= None, + stderr: Optional[float]= None, + constant: Optional[bool]= True, **kwargs, ): - params = {"id": id, "name": name, "symbol": symbol, "value": value} + params = { + "id": id, + "name": name, + "symbol": symbol, + "value": value, + "unit": unit, + "initial_value": initial_value, + "upper": upper, + "lower": lower, + "stderr": stderr, + "constant": constant + } if "id" in kwargs: params["id"] = kwargs["id"] - self.parameters.append(EqParameter(**params)) + self.parameters.append( + Parameter(**params) + ) return self.parameters[-1] +class Variable(BaseModel): -class Parameter(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment=True, - ) # type: ignore + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore id: str name: str - value: Optional[float] = Field(default=None) - unit: Optional[UnitDefinition] = Field(default=None) - initial_value: Optional[float] = Field(default=None) - upper: Optional[float] = Field(default=None) - lower: Optional[float] = Field(default=None) - stderr: Optional[float] = Field(default=None) - constant: bool = True + symbol: str # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Parameter/" + str(uuid4()), + default_factory=lambda: "enzml:Variable/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: [ - "enzml:Parameter", + default_factory = lambda: [ + "enzml:Variable", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", - "id": { - "@id": "schema:identifier", - "@type": "@id", - }, - }, + "id": "schema:identifier", + } ) + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -1499,9 +1544,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert ( - attr in self.model_fields - ), f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1510,7 +1553,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1538,33 +1584,37 @@ def add_type_term( self.ld_type.append(term) -class Measurement(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment=True, - ) # type: ignore +class Parameter(BaseModel): + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore id: str name: str - species: list[MeasurementData] = Field(default_factory=list) - group_id: Optional[str] = Field(default=None) - ph: Optional[float] = Field(default=None) - temperature: Optional[float] = Field(default=None) - temperature_unit: Optional[UnitDefinition] = Field(default=None) + symbol: str + value: Optional[float] = Field(default=None) + unit: Optional[UnitDefinition] = Field(default=None) + initial_value: Optional[float] = Field(default=None) + upper: Optional[float] = Field(default=None) + lower: Optional[float] = Field(default=None) + stderr: Optional[float] = Field(default=None) + constant: bool = True # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Measurement/" + str(uuid4()), + default_factory=lambda: "enzml:Parameter/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: [ - "enzml:Measurement", + default_factory = lambda: [ + "enzml:Parameter", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", @@ -1572,30 +1622,16 @@ class Measurement(BaseModel): "@id": "schema:identifier", "@type": "@id", }, - "group_id": { - "@type": "@id", - }, - }, + } ) - def filter_species(self, **kwargs) -> list[MeasurementData]: - """Filters the species attribute based on the given kwargs - - Args: - **kwargs: The attributes to filter by. - - Returns: - list[MeasurementData]: The filtered list of MeasurementData objects - """ - - return FilterWrapper[MeasurementData](self.species, **kwargs).filter() def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -1617,9 +1653,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert ( - attr in self.model_fields - ), f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1628,7 +1662,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1655,187 +1692,67 @@ def add_type_term( add_namespace(self, prefix, iri) self.ld_type.append(term) - def add_to_species( - self, - species_id: str, - init_conc: float, - data_type: DataTypes, - data_unit: UnitDefinition, - time_unit: UnitDefinition, - time: list[float] = [], - data: list[float] = [], - is_calculated: bool = False, - **kwargs, - ): - params = { - "species_id": species_id, - "init_conc": init_conc, - "data_type": data_type, - "data_unit": data_unit, - "time_unit": time_unit, - "time": time, - "data": data, - "is_calculated": is_calculated, - } - - if "id" in kwargs: - params["id"] = kwargs["id"] - - self.species.append(MeasurementData(**params)) - - return self.species[-1] +class Measurement(BaseModel): -class MeasurementData(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment=True, - ) # type: ignore + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore - species_id: str - init_conc: float - data_type: DataTypes - data_unit: UnitDefinition - time_unit: UnitDefinition - time: list[float] = Field(default_factory=list) - data: list[float] = Field(default_factory=list) - is_calculated: bool = False + id: str + name: str + species_data: list[MeasurementData] = Field(default_factory=list) + group_id: Optional[str] = Field(default=None) + ph: Optional[float] = Field(default=None) + temperature: Optional[float] = Field(default=None) + temperature_unit: Optional[UnitDefinition] = Field(default=None) # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:MeasurementData/" + str(uuid4()), + default_factory=lambda: "enzml:Measurement/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: [ - "enzml:MeasurementData", + default_factory = lambda: [ + "enzml:Measurement", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", - "species_id": { + "id": { + "@id": "schema:identifier", "@type": "@id", }, - }, - ) - - def set_attr_term( - self, - attr: str, - term: str | dict, - prefix: str | None = None, - iri: str | None = None, - ): - """Sets the term for a given attribute in the JSON-LD object - - Example: - # Using an IRI term - >> obj.set_attr_term("name", "http://schema.org/givenName") - - # Using a prefix and term - >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") - - # Usinng a dictionary term - >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) - - Args: - attr (str): The attribute to set the term for - term (str | dict): The term to set for the attribute - - Raises: - AssertionError: If the attribute is not found in the model - """ - - assert ( - attr in self.model_fields - ), f"Attribute {attr} not found in {self.__class__.__name__}" - - if prefix: - validate_prefix(term, prefix) - - add_namespace(self, prefix, iri) - self.ld_context[attr] = term - - def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None - ): - """Adds a term to the @type field of the JSON-LD object - - Example: - # Using a term - >> obj.add_type_term("https://schema.org/Person") - - # Using a prefixed term - >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") - - Args: - term (str): The term to add to the @type field - prefix (str, optional): The prefix to use for the term. Defaults to None. - iri (str, optional): The IRI to use for the term prefix. Defaults to None. - - Raises: - ValueError: If prefix is provided but iri is not - ValueError: If iri is provided but prefix is not - """ - - if prefix: - validate_prefix(term, prefix) - - add_namespace(self, prefix, iri) - self.ld_type.append(term) - - -class UnitDefinition(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment=True, - ) # type: ignore - - id: Optional[str] = Field(default=None) - name: Optional[str] = Field(default=None) - base_units: list[BaseUnit] = Field(default_factory=list) - - # JSON-LD fields - ld_id: str = Field( - serialization_alias="@id", - default_factory=lambda: "enzml:UnitDefinition/" + str(uuid4()), - ) - ld_type: list[str] = Field( - serialization_alias="@type", - default_factory=lambda: [ - "enzml:UnitDefinition", - ], - ) - ld_context: dict[str, str | dict] = Field( - serialization_alias="@context", - default_factory=lambda: { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/", - }, + "group_id": { + "@type": "@id", + }, + } ) - def filter_base_units(self, **kwargs) -> list[BaseUnit]: - """Filters the base_units attribute based on the given kwargs + def filter_species_data(self, **kwargs) -> list[MeasurementData]: + """Filters the species_data attribute based on the given kwargs Args: **kwargs: The attributes to filter by. Returns: - list[BaseUnit]: The filtered list of BaseUnit objects + list[MeasurementData]: The filtered list of MeasurementData objects """ - return FilterWrapper[BaseUnit](self.base_units, **kwargs).filter() + return FilterWrapper[MeasurementData](self.species_data, **kwargs).filter() + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -1857,9 +1774,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert ( - attr in self.model_fields - ), f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1868,7 +1783,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1895,65 +1813,88 @@ def add_type_term( add_namespace(self, prefix, iri) self.ld_type.append(term) - def add_to_base_units( + + def add_to_species_data( self, - kind: UnitType, - exponent: int, - multiplier: Optional[float] = None, - scale: Optional[float] = None, + species_id: str, + initial: float, + data_unit: UnitDefinition, + time_unit: UnitDefinition, + data_type: DataTypes, + prepared: Optional[float]= None, + data: list[float]= [], + time: list[float]= [], + is_simulated: bool= False, **kwargs, ): params = { - "kind": kind, - "exponent": exponent, - "multiplier": multiplier, - "scale": scale, + "species_id": species_id, + "initial": initial, + "data_unit": data_unit, + "time_unit": time_unit, + "data_type": data_type, + "prepared": prepared, + "data": data, + "time": time, + "is_simulated": is_simulated } if "id" in kwargs: params["id"] = kwargs["id"] - self.base_units.append(BaseUnit(**params)) + self.species_data.append( + MeasurementData(**params) + ) - return self.base_units[-1] + return self.species_data[-1] -class BaseUnit(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment=True, - ) # type: ignore +class MeasurementData(BaseModel): - kind: UnitType - exponent: int - multiplier: Optional[float] = Field(default=None) - scale: Optional[float] = Field(default=None) + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore + + species_id: str + initial: float + data_unit: UnitDefinition + time_unit: UnitDefinition + data_type: DataTypes + prepared: Optional[float] = Field(default=None) + data: list[float] = Field(default_factory=list) + time: list[float] = Field(default_factory=list) + is_simulated: bool = False # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:BaseUnit/" + str(uuid4()), + default_factory=lambda: "enzml:MeasurementData/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: [ - "enzml:BaseUnit", + default_factory = lambda: [ + "enzml:MeasurementData", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", - }, + "species_id": { + "@type": "@id", + }, + } ) + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -1975,9 +1916,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert ( - attr in self.model_fields - ), f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1986,7 +1925,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -2014,44 +1956,55 @@ def add_type_term( self.ld_type.append(term) -class EqVariable(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment=True, - ) # type: ignore +class UnitDefinition(BaseModel): - id: str - name: str - symbol: Optional[str] = Field(default=None) + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore + + id: Optional[str] = Field(default=None) + name: Optional[str] = Field(default=None) + base_units: list[BaseUnit] = Field(default_factory=list) # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:EqVariable/" + str(uuid4()), + default_factory=lambda: "enzml:UnitDefinition/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: [ - "enzml:EqVariable", + default_factory = lambda: [ + "enzml:UnitDefinition", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", - "id": { - "@type": "@id", - }, - }, + } ) + def filter_base_units(self, **kwargs) -> list[BaseUnit]: + """Filters the base_units attribute based on the given kwargs + + Args: + **kwargs: The attributes to filter by. + + Returns: + list[BaseUnit]: The filtered list of BaseUnit objects + """ + + return FilterWrapper[BaseUnit](self.base_units, **kwargs).filter() + + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -2073,9 +2026,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert ( - attr in self.model_fields - ), f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -2084,7 +2035,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -2112,45 +2066,68 @@ def add_type_term( self.ld_type.append(term) -class EqParameter(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment=True, - ) # type: ignore + def add_to_base_units( + self, + kind: UnitType, + exponent: int, + multiplier: Optional[float]= None, + scale: Optional[float]= None, + **kwargs, + ): + params = { + "kind": kind, + "exponent": exponent, + "multiplier": multiplier, + "scale": scale + } - id: str - name: str - symbol: Optional[str] = Field(default=None) - value: Optional[float] = Field(default=None) + if "id" in kwargs: + params["id"] = kwargs["id"] + + self.base_units.append( + BaseUnit(**params) + ) + + return self.base_units[-1] + +class BaseUnit(BaseModel): + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore + + kind: UnitType + exponent: int + multiplier: Optional[float] = Field(default=None) + scale: Optional[float] = Field(default=None) # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:EqParameter/" + str(uuid4()), + default_factory=lambda: "enzml:BaseUnit/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: [ - "enzml:EqParameter", + default_factory = lambda: [ + "enzml:BaseUnit", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", - "id": { - "@type": "@id", - }, - }, + } ) + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -2172,9 +2149,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert ( - attr in self.model_fields - ), f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -2183,7 +2158,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -2211,21 +2189,19 @@ def add_type_term( self.ld_type.append(term) -class DataTypes(Enum): - ABSORPTION = "abs" - BIOMASS = "biomass" - CONCENTRATION = "conc" - CONVERSION = "conversion" - FEED = "feed" - PEAK_AREA = "peak-area" - - class EquationType(Enum): ASSIGNMENT = "assignment" INITIAL_ASSIGNMENT = "initialAssignment" ODE = "ode" RATE_LAW = "rateLaw" +class DataTypes(Enum): + ABSORBANCE = "http://purl.allotrope.org/ontologies/quality#AFQ_0000061" + CONCENTRATION = "http://purl.obolibrary.org/obo/PATO_0000033" + CONVERSION = "http://purl.allotrope.org/ontologies/quality#AFQ_0000226" + FLUORESCENCE = "http://purl.obolibrary.org/obo/PATO_0000018" + PEAK_AREA = "http://purl.allotrope.org/ontologies/result#AFR_0001073" + TRANSMITTANCE = "http://purl.allotrope.org/ontologies/result#AFR_0002261" class UnitType(Enum): AMPERE = "ampere" @@ -2261,4 +2237,4 @@ class UnitType(Enum): TESLA = "tesla" VOLT = "volt" WATT = "watt" - WEBER = "weber" + WEBER = "weber" \ No newline at end of file From 4890eb23e4a458b68887357456bb0e05880284c8 Mon Sep 17 00:00:00 2001 From: Jan Range Date: Fri, 16 Aug 2024 16:04:59 +0200 Subject: [PATCH 028/172] utilities to parse RDF --- pyenzyme/sbml/ldutils.py | 86 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 pyenzyme/sbml/ldutils.py diff --git a/pyenzyme/sbml/ldutils.py b/pyenzyme/sbml/ldutils.py new file mode 100644 index 00000000..4425e00e --- /dev/null +++ b/pyenzyme/sbml/ldutils.py @@ -0,0 +1,86 @@ +import rdflib +import json +import xml.etree.ElementTree as ET + + +def parse_sbml_rdf_annotation(sbml_obj, enzml_obj): + """Parse the RDF annotation of an SBML object.""" + + annotation = sbml_obj.getAnnotationString() + + if not annotation: + return None + + json_ld_header = _rdf_annotation_to_json_ld(annotation) + _map_json_ld_to_obj(enzml_obj, json_ld_header) + + +def _rdf_annotation_to_json_ld(annotation: str): + """Convert an SBML annotation to JSON-LD.""" + + # Parse the RDF annotation and extract the root + # RDF element to create an RDF graph + root = ET.fromstring(annotation) + rdf_element = root.find("{http://www.w3.org/1999/02/22-rdf-syntax-ns#}RDF") + + if rdf_element is None: + return None + + # Create a new RDF graph and parse the annotation + g = rdflib.Graph() + g.parse(data=ET.tostring(rdf_element), format="xml") + + return json.loads(g.serialize(format="json-ld")) + + +def _map_json_ld_to_obj(obj, header: list | None): + """Map JSON-LD header to an object.""" + + if header is None: + return + + for key, value in header[0].items(): + if key == "@context": + obj.ld_context.update(value) + elif key == "@id": + obj.ld_id = value + elif key == "@type": + obj.ld_type += value + + _sync_context_prefixes(obj) + + +def _sync_context_prefixes(obj): + """Sync the context prefixes of an object.""" + + inverse_prefixes = { + value: key + for key, value in obj.ld_context.items() + if isinstance(value, str) + } + + # Convert context + for key, value in obj.ld_context.items(): + if not isinstance(value, str): + continue + if value in inverse_prefixes: + # Skip if the prefix is already in the context + continue + + for iri, prefix in inverse_prefixes.items(): + value = value.replace(iri, f"{prefix}:") + + # Convert types + for i, type_ in enumerate(obj.ld_type): + for iri, prefix in inverse_prefixes.items(): + + if type_.startswith(iri): + obj.ld_type[i] = type_.replace(iri, f"{prefix}:") + break + + # Unique types + obj.ld_type = list(set(obj.ld_type)) + + # Convert ID + for iri, prefix in inverse_prefixes.items(): + obj.ld_id = obj.ld_id.replace(iri, f"{prefix}:") From 4fcdb6ddccc06545977eac0e3f6d112ed9d927d7 Mon Sep 17 00:00:00 2001 From: Jan Range Date: Fri, 16 Aug 2024 16:05:19 +0200 Subject: [PATCH 029/172] remove redundant `unit` arg --- pyenzyme/equations/_math.py | 62 ++++++++++++++++++++----------------- 1 file changed, 34 insertions(+), 28 deletions(-) diff --git a/pyenzyme/equations/_math.py b/pyenzyme/equations/_math.py index ec7f7231..9c3f264d 100644 --- a/pyenzyme/equations/_math.py +++ b/pyenzyme/equations/_math.py @@ -1,16 +1,18 @@ import re + import rich from loguru import logger +from sympy import sympify + from pyenzyme.logging import add_logger from pyenzyme.model import ( EnzymeMLDocument, Equation, - EqVariable, - EqParameter, EquationType, UnitDefinition, + Variable, + Parameter, ) -from sympy import sympify INIT_ASSIGNMENT_PATTERN = r"^[A-Za-z][A-Za-z\_]*" DERIVATIVE_PATTERN = r"([A-Za-z0-9\_]+)\'\(t\)" @@ -22,14 +24,13 @@ def build_equations( *equations: str, - units: list[UnitDefinition], - enzmldoc: EnzymeMLDocument | None = None, - unit_mapping: dict[str, UnitDefinition] = {}, + unit_mapping: dict[str, UnitDefinition] | None = None, ) -> list[Equation]: """Builds a list of Equation objects from a list of string representations. Args: *equations (list[str]): A list of string representations of the ODEs + unit_mapping: A dictionary mapping parameter names to their respective Returns: list[ODE]: A list of ODE objects @@ -38,22 +39,17 @@ def build_equations( >> build_equations("s1'(t) = 2 * s2(t)", "s2'(t) = 3 * s1(t)") """ + if unit_mapping is None: + unit_mapping = {} + assert all(isinstance(eq, str) for eq in equations), "All equations must be strings" - assert all( - isinstance(unit, UnitDefinition) for unit in units - ), "All units must be UnitDefinition objects" - assert len(equations) == len( - units - ), "The number of equations must match the number of units" - return [build_equation(eq, unit, enzmldoc) for eq, unit in zip(equations, units)] # type: ignore + return [build_equation(eq, unit_mapping) for eq in equations] # type: ignore def build_equation( equation: str, - unit: UnitDefinition, - enzmldoc: EnzymeMLDocument | None = None, - unit_mapping: dict[str, UnitDefinition] = {}, + unit_mapping: dict[str, UnitDefinition] | None = None, ) -> Equation: """Builds an equation object from a string @@ -63,7 +59,7 @@ def build_equation( Args: equation (str): The equation to be converted into an ODE object - enzmldoc (EnzymeMLDocument): The EnzymeMLDocument used to transfer parameters to + unit_mapping: A dictionary mapping parameter names to their respective units Returns: ODE: The ODE object @@ -75,6 +71,9 @@ def build_equation( """ + if unit_mapping is None: + unit_mapping = {} + left, right = _extract_sides(equation) variables = set(re.findall(VARIABLE_PATTERN, right)) @@ -102,28 +101,35 @@ def build_equation( right = sympify(_clean_and_trim(right)) left = _clean_and_trim(left) - parameters = {str(symbol) for symbol in right.free_symbols} - variables + parameters = {str(symbol) for symbol in right.free_symbols} - variables # type: ignore if equation_type == EquationType.ASSIGNMENT: parameters = parameters.union({left}) eq = Equation( - species_id=left, + species_id=left if left else None, equation=str(right), variables=[_create_variable(name) for name in variables], - parameters=[_create_parameter(name) for name in parameters], equation_type=equation_type, - unit=unit, + parameters=[ + _create_parameter(name, unit_mapping.get(name)) for name in parameters + ], ) - if enzmldoc: - [_add_to_parameters(enzmldoc, param.name, param.id) for param in eq.parameters] - _add_units_to_parameters(enzmldoc, unit_mapping) + # Left out for now, but could be re-used by decision upon change to include + # parameters on the top-level document. + # if enzmldoc: + # [_add_to_parameters(enzmldoc, param.name, param.id) for param in eq.parameters] + # _add_units_to_parameters(enzmldoc, unit_mapping) return eq def _extract_sides(equation: str) -> tuple[str, str]: + if "=" not in equation: + # Will be handled as a kinetic law + return "", equation + left, right, *_ = equation.split("=") if right == "": @@ -144,12 +150,12 @@ def _clean_and_trim(eq: str) -> str: return eq.strip() -def _create_parameter(name: str) -> EqParameter: - return EqParameter(id=name, name=name, symbol=name) +def _create_parameter(name: str, unit: UnitDefinition | None) -> Parameter: + return Parameter(id=name, name=name, symbol=name, unit=unit) -def _create_variable(name: str) -> EqVariable: - return EqVariable(id=name, name=name, symbol=name) +def _create_variable(name: str) -> Variable: + return Variable(id=name, name=name, symbol=name) def _add_to_parameters(enzmldoc: EnzymeMLDocument, name: str, id: str): From abe69446d5a3f584ea049a88beeac0ff2de8410a Mon Sep 17 00:00:00 2001 From: Jan Range Date: Fri, 16 Aug 2024 16:05:35 +0200 Subject: [PATCH 030/172] export vital sbml functions --- pyenzyme/sbml/__init__.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pyenzyme/sbml/__init__.py b/pyenzyme/sbml/__init__.py index 2ae543c2..ab163b1d 100644 --- a/pyenzyme/sbml/__init__.py +++ b/pyenzyme/sbml/__init__.py @@ -1,3 +1,10 @@ +from .omex import create_sbml_omex, read_sbml_omex +from .parser import read_sbml from .serializer import to_sbml -__all__ = ["to_sbml"] +__all__ = [ + "to_sbml", + "read_sbml", + "create_sbml_omex", + "read_sbml_omex", +] From 73503773ba298edfbb981fdd1e1747f345ae881b Mon Sep 17 00:00:00 2001 From: Jan Range Date: Fri, 16 Aug 2024 16:05:46 +0200 Subject: [PATCH 031/172] adjust to model changes --- pyenzyme/tabular.py | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/pyenzyme/tabular.py b/pyenzyme/tabular.py index d799c8c5..16e77dfe 100644 --- a/pyenzyme/tabular.py +++ b/pyenzyme/tabular.py @@ -1,6 +1,10 @@ -import pandas as pd +from __future__ import annotations + import pathlib as pl +import pandas as pd +from loguru import logger # type: ignore + from .model import ( DataTypes, Measurement, @@ -12,7 +16,7 @@ def to_pandas( enzmldoc: EnzymeMLDocument, - ignore: list[str] = [], + ignore: list[str] | None = None, ) -> pd.DataFrame: """This function converts an EnzymeMLDocument object to a pandas DataFrame. @@ -35,6 +39,9 @@ def to_pandas( ValueError: If the measurement does not contain species data. """ + if ignore is None: + ignore = [] + assert isinstance( enzmldoc, EnzymeMLDocument ), "The input must be an EnzymeMLDocument object" @@ -46,7 +53,7 @@ def to_pandas( if not isinstance(meas, Measurement): raise ValueError("The measurements must be of type Measurement") - if meas.species is None: + if meas.species_data is None: raise ValueError("The measurement must contain species data") df = _measurement_to_pandas(meas) @@ -115,7 +122,7 @@ def read_csv( data_unit: UnitDefinition, time_unit: UnitDefinition, data_type: DataTypes = DataTypes.CONCENTRATION, - sep: str = ";", + sep: str = "\t", ): """Reads a CSV file from the specified path into a measurement. @@ -241,12 +248,12 @@ def _create_single_measurement( time=time, data_unit=data_unit, time_unit=time_unit, - init_conc=species_data[0], + initial=species_data[0], data_type=data_type, ) ) - return Measurement(name=id, id=id, species=meas_data) + return Measurement(name=id, id=id, species_data=meas_data) def _process_multiple_measurements( @@ -292,8 +299,8 @@ def _measurement_to_pandas(measurement: Measurement) -> pd.DataFrame: _validate_measurement(measurement) - data = {"time": measurement.species[0].time} - for species in measurement.species: + data = {"time": measurement.species_data[0].time} + for species in measurement.species_data: data[species.species_id] = species.data return pd.DataFrame(data) @@ -305,11 +312,14 @@ def _validate_measurement(meas: Measurement) -> None: try: times = pd.DataFrame( - {species.species_id + "_time": species.time for species in meas.species} + { + species.species_id + "_time": species.time + for species in meas.species_data + } ) except ValueError: time_lengths = { - species.species_id: len(species.time) for species in meas.species + species.species_id: len(species.time) for species in meas.species_data } raise ValueError( f"Export to pandas not possible, the time lengths are inconsistent. Got different time arrays per species: {time_lengths}" From 877cd41cb35ce20e5008fe1fa9c76d2867c982fb Mon Sep 17 00:00:00 2001 From: Jan Range Date: Fri, 16 Aug 2024 16:05:58 +0200 Subject: [PATCH 032/172] add parameter fetcher --- pyenzyme/tools.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/pyenzyme/tools.py b/pyenzyme/tools.py index 6a82de76..dcea60f7 100644 --- a/pyenzyme/tools.py +++ b/pyenzyme/tools.py @@ -1,7 +1,22 @@ -from enum import Enum -import toml import functools as ft import importlib.resources as pkg_resources +from enum import Enum + +import toml + +import pyenzyme as pe + + +def get_all_parameters(enzmldoc): + """Extracts all parameters from an EnzymeMLDocument. + + Args: + enzmldoc (EnzymeMLDocument): The EnzymeMLDocument to extract parameters from. + + Returns: + list[Parameter]: A list of all parameters in the EnzymeMLDocument. + """ + return find_unique(enzmldoc, target=pe.Parameter) def read_static_file(path, filename: str): From 0e41499a87c788d55dfdddf0ba0c23b441ab4ab3 Mon Sep 17 00:00:00 2001 From: Jan Range Date: Fri, 16 Aug 2024 16:06:18 +0200 Subject: [PATCH 033/172] refactor and extend to nested and multiple types --- pyenzyme/xmlutils.py | 74 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 64 insertions(+), 10 deletions(-) diff --git a/pyenzyme/xmlutils.py b/pyenzyme/xmlutils.py index bbcfad80..fb23f55c 100644 --- a/pyenzyme/xmlutils.py +++ b/pyenzyme/xmlutils.py @@ -1,38 +1,83 @@ -import xml.etree.ElementTree as ET import xml.dom.minidom as minidom +import xml.etree.ElementTree as ET +from enum import Enum +from typing import Any -def map_to_xml(root: ET.Element, mappings: dict, namespace: str): +def map_to_xml( + root: ET.Element, + mappings: dict, + namespace: str, +): """ Maps a dictionary to XML elements and appends them to the root element. Args: root (ET.Element): The root element to which sub-elements are appended. mappings (dict): The dictionary containing the key-value mappings to convert to XML. + namespace (str): The namespace of the XML elements. """ for key, value in mappings.items(): if value is None: continue if key.startswith("@"): - root.attrib[key[1:]] = str(value) + root.attrib[key[1:]] = _convert_types(value) continue subelement = ET.Element(f"{{{namespace}}}{key}") if isinstance(value, dict): process_dict_value(subelement, value) + elif isinstance(value, list): + process_multiple_element(key, namespace, root, value) elif key.startswith("@"): - subelement.attrib[key[1:]] = str(value) + subelement.attrib[key[1:]] = _convert_types(value) else: - subelement.text = str(value) + subelement.text = _convert_types(value) if not _is_empty(subelement): root.append(subelement) +def _convert_types(value): + if isinstance(value, float) and value == 0.0: + return "0.0" + if isinstance(value, Enum): + return str(value.name) + + return str(value) + + +def process_multiple_element( + key: str, + namespace: str, + root: ET.Element, + value: Any, +): + """Processes a list value and adds it as a list of elements to the root element. + + Args: + key (str): The key of the list element. + namespace (str): The namespace of the list element. + root (ET.Element): The root element to which the list elements are appended. + value (list): The list of values to be added as elements. + """ + for i, item in enumerate(value): + list_element = ET.Element(f"{{{namespace}}}{key}") + list_element.text = _convert_types(item) + root.append(list_element) + + def _is_empty(element: ET.Element): - """Checks if an element and its sub elements are empty.""" + """Checks if an element and its sub elements are empty. + + Args: + element (ET.Element): The element to check. + + Returns: + bool: True if the element is empty, False otherwise. + """ return all( [ @@ -43,7 +88,10 @@ def _is_empty(element: ET.Element): ) -def process_dict_value(subelement: ET.Element, value: dict): +def process_dict_value( + subelement: ET.Element, + value: dict, +): """ Processes a dictionary value and adds it as attributes or text to a subelement. @@ -56,9 +104,9 @@ def process_dict_value(subelement: ET.Element, value: dict): continue if subkey.startswith("@"): - subelement.attrib[subkey[1:]] = str(subvalue) + subelement.attrib[subkey[1:]] = _convert_types(subvalue) else: - subelement.text = str(subvalue) + subelement.text = _convert_types(subvalue) def serialize_to_pretty_xml_string(element: ET.Element | None) -> str | None: @@ -67,7 +115,13 @@ def serialize_to_pretty_xml_string(element: ET.Element | None) -> str | None: if element is None: return None - rough_string = ET.tostring(element, "utf-8", xml_declaration=False) + rough_string = ET.tostring( + element, + encoding="unicode", + method="xml", + xml_declaration=False, + ) + reparsed = minidom.parseString(rough_string) return "\n".join(reparsed.toprettyxml(indent="\t").split("\n")[1:]).strip() From b15e149e9ba43586a6efde75828839ad48737433 Mon Sep 17 00:00:00 2001 From: Jan Range Date: Fri, 16 Aug 2024 16:06:58 +0200 Subject: [PATCH 034/172] rename to prevent mutability issues --- pyenzyme/units/units.py | 83 +++++++++++++++++++++++++++-------------- 1 file changed, 54 insertions(+), 29 deletions(-) diff --git a/pyenzyme/units/units.py b/pyenzyme/units/units.py index e1902c2e..917beea1 100644 --- a/pyenzyme/units/units.py +++ b/pyenzyme/units/units.py @@ -1,7 +1,9 @@ +from copy import deepcopy from enum import Enum from functools import partial from pydantic import model_validator + from pyenzyme.model import ( UnitDefinition as _UnitDefinition, BaseUnit as _BaseUnit, @@ -99,17 +101,21 @@ def __rtruediv__(self, other: object) -> "UnitDefinition": Raises: TypeError: If the other operand type is unsupported. """ - for base in self.base_units: + + unit_def = deepcopy(self) + unit_def.id = None + + for base in unit_def.base_units: base.exponent = -abs(base.exponent) if isinstance(other, UnitDefinition): - self.base_units.extend(other.base_units) + unit_def.base_units.extend(other.base_units) elif isinstance(other, _BaseUnit): - self.base_units.append(other) + unit_def.base_units.append(other) - self._get_name() + unit_def._get_name() - return self + return unit_def def __truediv__(self, other: object) -> "UnitDefinition": """Division operation to handle unit division. @@ -128,17 +134,20 @@ def __truediv__(self, other: object) -> "UnitDefinition": """ + unit_def = deepcopy(self) + unit_def.id = None + if isinstance(other, UnitDefinition): for base in other.base_units: base.exponent = -abs(base.exponent) - self.base_units.extend(other.base_units) + unit_def.base_units.extend(other.base_units) elif isinstance(other, _BaseUnit): other.exponent = -abs(other.exponent) - self.base_units.append(other) + unit_def.base_units.append(other) - self._get_name() + unit_def._get_name() - return self + return unit_def def __mul__(self, other: object) -> "UnitDefinition": """Multiplication operation to handle unit multiplication. @@ -152,16 +161,20 @@ def __mul__(self, other: object) -> "UnitDefinition": Raises: TypeError: If the other operand type is unsupported. """ + + unit_def = deepcopy(self) + unit_def.id = None + if isinstance(other, (int, float)): - for base in self.base_units: + for base in unit_def.base_units: if base.multiplier: base.multiplier *= other else: base.multiplier = other - self._get_name() + unit_def._get_name() - return self + return unit_def raise TypeError( f"unsupported operand type(s) for *: 'UnitDefinition' and '{type(other)}'" @@ -268,16 +281,19 @@ def __rtruediv__(self, other: object) -> "UnitDefinition | BaseUnit": Raises: TypeError: If the other operand type is unsupported. """ + + base_unit = deepcopy(self) + if isinstance(other, UnitDefinition): - self.exponent = -self.exponent - other.base_units.append(self) + base_unit.exponent = -base_unit.exponent + other.base_units.append(base_unit) other._get_name() return other elif isinstance(other, (int, float)): - self.exponent = -self.exponent - return self + base_unit.exponent = -base_unit.exponent + return base_unit raise TypeError( f"unsupported operand type(s) for /: 'BaseUnit' and '{type(other)}'" @@ -295,13 +311,16 @@ def __truediv__(self, other: object) -> "UnitDefinition": Raises: TypeError: If the other operand type is unsupported. """ + + this_bu = deepcopy(self) + if isinstance(other, BaseUnit): other.exponent = -other.exponent - return UnitDefinition(base_units=[self, other])._get_name() + return UnitDefinition(base_units=[this_bu, other])._get_name() elif isinstance(other, UnitDefinition): for base_unit in other.base_units: base_unit.exponent = -base_unit.exponent - other.base_units.append(self) + other.base_units.append(this_bu) other._get_name() return other @@ -322,9 +341,12 @@ def __pow__(self, other: int) -> "_BaseUnit": Raises: TypeError: If the exponent is not an integer. """ + + this_bu = deepcopy(self) + if isinstance(other, int): - self.exponent = other - return self + this_bu.exponent = other + return this_bu raise TypeError( f"unsupported operand type(s) for **: 'BaseUnit' and '{type(other)}'" @@ -342,25 +364,28 @@ def __mul__(self, other: object) -> object: Raises: TypeError: If the other operand type is unsupported. """ + + this_bu = deepcopy(self) + if isinstance(other, BaseUnit): - if self.exponent < 0 or other.exponent < 0: - self.exponent = abs(self.exponent) + if this_bu.exponent < 0 or other.exponent < 0: + this_bu.exponent = abs(this_bu.exponent) other.exponent = abs(other.exponent) - return UnitDefinition(base_units=[self, other])._get_name() + return UnitDefinition(base_units=[this_bu, other])._get_name() elif isinstance(other, UnitDefinition): - other.base_units.append(self) + other.base_units.append(this_bu) other._get_name() return other elif isinstance(other, Prefix): - return other * self + return other * this_bu elif isinstance(other, (int, float)): - if self.multiplier: - self.multiplier *= other + if this_bu.multiplier: + this_bu.multiplier *= other else: - self.multiplier = other - return self + this_bu.multiplier = other + return this_bu raise TypeError( f"unsupported operand type(s) for *: 'BaseUnit' and '{type(other)}'" From 6acea114aab7486010ee38bb88420a592189d41c Mon Sep 17 00:00:00 2001 From: Jan Range Date: Fri, 16 Aug 2024 16:07:10 +0200 Subject: [PATCH 035/172] add `pymetadata` dep for OMEX support --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 6799849d..681febd7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,6 +17,7 @@ pydantic = "^2.7.4" loguru = "^0.7.2" rdflib = "7.0.0" sympy = "^1.12.1" +pymetadata = "^0.4.4" [tool.poetry.group.neo4j.dependencies] neo4j = "^5.21.0" From d687c4367b171a337a9d6c193d9265732ef279ac Mon Sep 17 00:00:00 2001 From: Jan Range Date: Fri, 16 Aug 2024 16:08:15 +0200 Subject: [PATCH 036/172] update tests --- tests/fixtures/sbml/ode_example_enzml.json | 1118 +++++++++++++++++ tests/fixtures/sbml/ode_example_sbml.xml | 268 ++++ .../fixtures/sbml/reaction_example_enzml.json | 1029 +++++++++++++++ tests/fixtures/sbml/reaction_example_sbml.xml | 231 ++++ tests/fixtures/tabular/measurement_valid.json | 20 +- tests/unit/test_equations.py | 28 +- tests/unit/test_tabular.py | 65 +- 7 files changed, 2703 insertions(+), 56 deletions(-) create mode 100644 tests/fixtures/sbml/ode_example_enzml.json create mode 100644 tests/fixtures/sbml/ode_example_sbml.xml create mode 100644 tests/fixtures/sbml/reaction_example_enzml.json create mode 100644 tests/fixtures/sbml/reaction_example_sbml.xml diff --git a/tests/fixtures/sbml/ode_example_enzml.json b/tests/fixtures/sbml/ode_example_enzml.json new file mode 100644 index 00000000..57a2b6e3 --- /dev/null +++ b/tests/fixtures/sbml/ode_example_enzml.json @@ -0,0 +1,1118 @@ +{ + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "name": "schema:title", + "references": { + "@id": "schema:citation", + "@type": "@id" + }, + "created": "schema:dateCreated", + "modified": "schema:dateModified", + "creators": "schema:creator" + }, + "@id": "enzml:EnzymeMLDocument/44649453-a157-4cb7-be07-8fb09a82f4ca", + "@type": [ + "enzml:EnzymeMLDocument" + ], + "name": "Test", + "references": [], + "creators": [], + "vessels": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "volume": "OBO:OBI_0002139" + }, + "@id": "enzml:Vessel/02063116-73f1-4ba1-b166-8fe835e55659", + "@type": [ + "enzml:Vessel", + "OBO:OBI_0400081" + ], + "id": "v0", + "name": "Vessel 1", + "volume": 10.0, + "unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000098", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u0", + "name": "ml", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/efd21ea0-af02-4920-9036-9c8337cf0421", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": 1, + "scale": -3.0 + } + ] + }, + "constant": true + } + ], + "proteins": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@type": "@id" + }, + "name": "schema:name", + "sequence": "OBO:GSSO_007262", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "organism": "OBO:OBI_0100026", + "organism_tax_id": { + "@type": "@id" + }, + "references": { + "@id": "schema:citation", + "@type": "@id" + } + }, + "@id": "enzml:Protein/cf3097ad-5833-4ff8-99f1-784cd5f673ca", + "@type": [ + "enzml:Protein", + "schema:Protein" + ], + "id": "p0", + "name": "Enzyme", + "constant": false, + "sequence": "MTEY", + "vessel_id": "v0", + "ecnumber": "1.1.1.1", + "organism": "E.coli", + "organism_tax_id": "12345", + "references": [] + } + ], + "complexes": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "participants": { + "@type": "@id" + } + }, + "@id": "enzml:Complex/fa79ccd6-acbe-47e4-a8d1-795eb18346db", + "@type": [ + "enzml:Complex" + ], + "id": "c0", + "name": "Enzyme-Substrate Complex", + "constant": false, + "participants": [ + "p0", + "s0" + ] + } + ], + "small_molecules": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "references": { + "@id": "schema:citation", + "@type": "@id" + } + }, + "@id": "enzml:SmallMolecule/5375d6fb-6246-43b0-bc81-d47e3e72493f", + "@type": [ + "enzml:SmallMolecule" + ], + "id": "s0", + "name": "Substrate", + "constant": false, + "vessel_id": "v0", + "canonical_smiles": "CC(=O)O", + "inchikey": "QTBSBXVTEAMEQO-UHFFFAOYSA-N", + "references": [] + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "references": { + "@id": "schema:citation", + "@type": "@id" + } + }, + "@id": "enzml:SmallMolecule/c7318d93-2a0f-44c0-9ebe-a79fc27bf01e", + "@type": [ + "enzml:SmallMolecule" + ], + "id": "s1", + "name": "Product", + "constant": false, + "vessel_id": "v0", + "canonical_smiles": "CC(=O)O", + "inchikey": "QTBSBXVTEAMEQO-UHFFFAOYSA-N", + "references": [] + } + ], + "reactions": [], + "measurements": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + }, + "@id": "enzml:Measurement/ef303c49-7554-4367-9f44-cb6e9838c1be", + "@type": [ + "enzml:Measurement" + ], + "id": "m0", + "name": "m0", + "species_data": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/3beaeb28-72a4-4398-ae34-c9208c03aa0b", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "s0", + "initial": 0.0, + "data_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u2", + "name": "mmol / l", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/cff3e0ad-ce88-479a-8c01-b06e012e3195", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/df1eed89-6a35-483e-a187-b981d9ee0405", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "time_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000010", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u1", + "name": "s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/634613e6-a06f-42e9-9e11-b32c3e6f6f09", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "data": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/00c0dabc-47cc-40d5-a4d5-7809880aad52", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "s1", + "initial": 10.0, + "data_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u2", + "name": "mmol / l", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/cff3e0ad-ce88-479a-8c01-b06e012e3195", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/df1eed89-6a35-483e-a187-b981d9ee0405", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "time_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000010", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u1", + "name": "s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/634613e6-a06f-42e9-9e11-b32c3e6f6f09", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "data": [ + 10.0, + 9.0, + 8.0, + 7.0, + 6.0, + 5.0, + 4.0, + 3.0, + 2.0, + 1.0, + 0.0 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], + "is_simulated": false + } + ], + "ph": 7.0, + "temperature": 298.15, + "temperature_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000012", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u3", + "name": "K", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/83915bc7-e2b4-450f-b363-20eb027d1f3d", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "kelvin", + "exponent": 1, + "scale": 1.0 + } + ] + } + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + }, + "@id": "enzml:Measurement/28bb1de1-4cd9-45e2-b160-3a2dd5ce3e34", + "@type": [ + "enzml:Measurement" + ], + "id": "m1", + "name": "m1", + "species_data": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/24b00355-6bad-4771-a0e5-e65c7560b3a9", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "s0", + "initial": 0.0, + "data_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u2", + "name": "mmol / l", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/cff3e0ad-ce88-479a-8c01-b06e012e3195", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/df1eed89-6a35-483e-a187-b981d9ee0405", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "time_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000010", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u1", + "name": "s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/634613e6-a06f-42e9-9e11-b32c3e6f6f09", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "data": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/405dfbaf-cc21-41d4-836d-fdadc1d0c1b3", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "s1", + "initial": 10.0, + "data_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u2", + "name": "mmol / l", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/cff3e0ad-ce88-479a-8c01-b06e012e3195", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/df1eed89-6a35-483e-a187-b981d9ee0405", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "time_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000010", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u1", + "name": "s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/634613e6-a06f-42e9-9e11-b32c3e6f6f09", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "data": [ + 10.0, + 9.0, + 8.0, + 7.0, + 6.0, + 5.0, + 4.0, + 3.0, + 2.0, + 1.0, + 0.0 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], + "is_simulated": false + } + ], + "ph": 7.0, + "temperature": 298.15, + "temperature_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000012", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u3", + "name": "K", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/83915bc7-e2b4-450f-b363-20eb027d1f3d", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "kelvin", + "exponent": 1, + "scale": 1.0 + } + ] + } + } + ], + "equations": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:Equation/87c7fc6d-6933-42be-a33a-c8eecb5901b7", + "@type": [ + "enzml:Equation" + ], + "equation": "E_tot*kcat*s0/(K_m + s0)", + "unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u4", + "name": "mmol / l s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/cff3e0ad-ce88-479a-8c01-b06e012e3195", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/df1eed89-6a35-483e-a187-b981d9ee0405", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/634613e6-a06f-42e9-9e11-b32c3e6f6f09", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "equation_type": "ode", + "species_id": "s1", + "variables": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": "schema:identifier" + }, + "@id": "enzml:Variable/49c819d7-0f8a-4d2e-9a82-09cf62d48aad", + "@type": [ + "enzml:Variable" + ], + "id": "s0", + "name": "s0", + "symbol": "s0" + } + ], + "parameters": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + }, + "@id": "enzml:Parameter/404206dc-7e11-432e-b1a8-871b822325ef", + "@type": [ + "enzml:Parameter" + ], + "id": "kcat", + "name": "kcat", + "symbol": "kcat", + "unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000010", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u5", + "name": "1 / s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/634613e6-a06f-42e9-9e11-b32c3e6f6f09", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "upper": 100.0, + "lower": 0.0, + "stderr": 0.1, + "constant": true + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + }, + "@id": "enzml:Parameter/a5b7ca60-4945-4cfe-9eb9-6c97dfdaa770", + "@type": [ + "enzml:Parameter" + ], + "id": "K_m", + "name": "K_m", + "symbol": "K_m", + "unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u2", + "name": "mmol / l", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/cff3e0ad-ce88-479a-8c01-b06e012e3195", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/df1eed89-6a35-483e-a187-b981d9ee0405", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "upper": 100.0, + "lower": 0.0, + "stderr": 0.1, + "constant": true + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + }, + "@id": "enzml:Parameter/26b501d3-7200-4813-ac11-b62f0f665054", + "@type": [ + "enzml:Parameter" + ], + "id": "E_tot", + "name": "E_tot", + "symbol": "E_tot", + "unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u2", + "name": "mmol / l", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/cff3e0ad-ce88-479a-8c01-b06e012e3195", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/df1eed89-6a35-483e-a187-b981d9ee0405", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "upper": 100.0, + "lower": 0.0, + "stderr": 0.1, + "constant": true + } + ] + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:Equation/3991effb-6394-4b6d-baa8-a06462e2101f", + "@type": [ + "enzml:Equation" + ], + "equation": "100", + "unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u2", + "name": "mmol / l", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/cff3e0ad-ce88-479a-8c01-b06e012e3195", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/df1eed89-6a35-483e-a187-b981d9ee0405", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "equation_type": "initialAssignment", + "species_id": "E_tot", + "variables": [], + "parameters": [] + } + ] +} \ No newline at end of file diff --git a/tests/fixtures/sbml/ode_example_sbml.xml b/tests/fixtures/sbml/ode_example_sbml.xml new file mode 100644 index 00000000..7d4ca6b1 --- /dev/null +++ b/tests/fixtures/sbml/ode_example_sbml.xml @@ -0,0 +1,268 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Vessel 1 + 10.0 + + + + + + + + + + + + + + Enzyme + MTEY + E.coli + + + + + + 1.1.1.1 + E.coli + 12345 + MTEY + + + + + + + + Enzyme-Substrate Complex + + + + + p0 + s0 + + + + + + + + Substrate + + + + + QTBSBXVTEAMEQO-UHFFFAOYSA-N + CC(=O)O + + + + + + + + Product + + + + + QTBSBXVTEAMEQO-UHFFFAOYSA-N + CC(=O)O + + + + + + + + + + + + + + 0.0 + 100.0 + 0.1 + + + + + + + + + + + + 0.0 + 100.0 + 0.1 + + + + + + + + + + + + 0.0 + 100.0 + 0.1 + + + + + + + + 100 + + + + + + + + + + + + + + + + E_tot + kcat + s0 + + + + K_m + s0 + + + + + + + diff --git a/tests/fixtures/sbml/reaction_example_enzml.json b/tests/fixtures/sbml/reaction_example_enzml.json new file mode 100644 index 00000000..7e01e7f9 --- /dev/null +++ b/tests/fixtures/sbml/reaction_example_enzml.json @@ -0,0 +1,1029 @@ +{ + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "name": "schema:title", + "references": { + "@id": "schema:citation", + "@type": "@id" + }, + "created": "schema:dateCreated", + "modified": "schema:dateModified", + "creators": "schema:creator" + }, + "@id": "enzml:EnzymeMLDocument/b8426986-8c86-43f9-a03e-efbc1577d70a", + "@type": [ + "enzml:EnzymeMLDocument" + ], + "name": "Test", + "references": [], + "creators": [], + "vessels": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "volume": "OBO:OBI_0002139" + }, + "@id": "enzml:Vessel/e594aa18-c317-4e87-b68f-ca7337c910d0", + "@type": [ + "enzml:Vessel", + "OBO:OBI_0400081" + ], + "id": "v0", + "name": "Vessel 1", + "volume": 10.0, + "unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000098", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u0", + "name": "ml", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/26d67db7-127b-4bf5-8578-dfc75ec003d8", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": 1, + "scale": -3.0 + } + ] + }, + "constant": true + } + ], + "proteins": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@type": "@id" + }, + "name": "schema:name", + "sequence": "OBO:GSSO_007262", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "organism": "OBO:OBI_0100026", + "organism_tax_id": { + "@type": "@id" + }, + "references": { + "@id": "schema:citation", + "@type": "@id" + } + }, + "@id": "enzml:Protein/de66507f-620a-42ee-9162-7401630cc4bc", + "@type": [ + "enzml:Protein", + "schema:Protein" + ], + "id": "p0", + "name": "Enzyme", + "constant": false, + "sequence": "MTEY", + "vessel_id": "v0", + "references": [] + } + ], + "complexes": [], + "small_molecules": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "references": { + "@id": "schema:citation", + "@type": "@id" + } + }, + "@id": "enzml:SmallMolecule/210850a2-7071-4594-9762-d0520bd2ded6", + "@type": [ + "enzml:SmallMolecule" + ], + "id": "s0", + "name": "Substrate", + "constant": false, + "vessel_id": "v0", + "references": [] + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "references": { + "@id": "schema:citation", + "@type": "@id" + } + }, + "@id": "enzml:SmallMolecule/5f11bcce-405f-4b0e-9a58-7e812c80fcc5", + "@type": [ + "enzml:SmallMolecule" + ], + "id": "s1", + "name": "Product", + "constant": false, + "vessel_id": "v0", + "references": [] + } + ], + "reactions": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "modifiers": { + "@type": "@id" + } + }, + "@id": "enzml:Reaction/e236d1d1-c83a-45bb-859a-51bd15cee184", + "@type": [ + "enzml:Reaction" + ], + "id": "r0", + "name": "Reaction 1", + "reversible": false, + "kinetic_law": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:Equation/deb8cae4-181a-47de-b5c5-282fdabd69d6", + "@type": [ + "enzml:Equation" + ], + "equation": "kcat*p0*s0/(K_m + s0)", + "unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u1", + "name": "mmol / l s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/801b612f-9b16-4030-bc53-20e00d9e525b", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/8c63ea70-d26e-45e4-beef-651da82864d0", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/ec7aa14e-db13-4b05-ac2a-19973ff83e5a", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "equation_type": "rateLaw", + "variables": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": "schema:identifier" + }, + "@id": "enzml:Variable/2805b7f6-e844-422f-ac91-d7a9fbb3c98e", + "@type": [ + "enzml:Variable" + ], + "id": "p0", + "name": "p0", + "symbol": "p0" + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": "schema:identifier" + }, + "@id": "enzml:Variable/9ee004f8-07ca-45b6-a1e8-4583c4e86fe7", + "@type": [ + "enzml:Variable" + ], + "id": "s0", + "name": "s0", + "symbol": "s0" + } + ], + "parameters": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + }, + "@id": "enzml:Parameter/6b315b1b-26df-41a6-8a4f-1fc508e92a61", + "@type": [ + "enzml:Parameter" + ], + "id": "K_m", + "name": "K_m", + "symbol": "K_m", + "unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u2", + "name": "mmol / l", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/801b612f-9b16-4030-bc53-20e00d9e525b", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/8c63ea70-d26e-45e4-beef-651da82864d0", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "upper": 100.0, + "lower": 0.0, + "stderr": 0.1, + "constant": true + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + }, + "@id": "enzml:Parameter/6619c640-3bbc-4b9d-b1e5-22665776bdaf", + "@type": [ + "enzml:Parameter" + ], + "id": "kcat", + "name": "kcat", + "symbol": "kcat", + "unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000010", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u3", + "name": "1 / s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/ec7aa14e-db13-4b05-ac2a-19973ff83e5a", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "upper": 100.0, + "lower": 0.0, + "stderr": 0.1, + "constant": true + } + ] + }, + "species": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:ReactionElement/d709628a-f70c-48bf-b2ae-33fe2a13b310", + "@type": [ + "enzml:ReactionElement" + ], + "species_id": "s0", + "stoichiometry": -1.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:ReactionElement/5286412a-e094-4a49-8cb9-e9e8e6c0ade4", + "@type": [ + "enzml:ReactionElement" + ], + "species_id": "s1", + "stoichiometry": 1.0 + } + ], + "modifiers": [ + "p0" + ] + } + ], + "measurements": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + }, + "@id": "enzml:Measurement/f4a6a78a-50eb-4850-b0e8-80b4155b75f2", + "@type": [ + "enzml:Measurement" + ], + "id": "m0", + "name": "m0", + "species_data": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/9d071dc1-70a5-4c78-bbe0-5fd5e8fad74f", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "s0", + "initial": 0.0, + "data_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u2", + "name": "mmol / l", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/801b612f-9b16-4030-bc53-20e00d9e525b", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/8c63ea70-d26e-45e4-beef-651da82864d0", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "time_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000010", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u4", + "name": "s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/ec7aa14e-db13-4b05-ac2a-19973ff83e5a", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "data": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/0970bcda-cb12-4049-a1e1-9b8c2a59c425", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "s1", + "initial": 10.0, + "data_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u2", + "name": "mmol / l", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/801b612f-9b16-4030-bc53-20e00d9e525b", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/8c63ea70-d26e-45e4-beef-651da82864d0", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "time_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000010", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u4", + "name": "s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/ec7aa14e-db13-4b05-ac2a-19973ff83e5a", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "data": [ + 10.0, + 9.0, + 8.0, + 7.0, + 6.0, + 5.0, + 4.0, + 3.0, + 2.0, + 1.0, + 0.0 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], + "is_simulated": false + } + ], + "ph": 7.0, + "temperature": 298.15, + "temperature_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000012", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u5", + "name": "K", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/ff8443f5-375d-4fbe-b199-598194298fb4", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "kelvin", + "exponent": 1, + "scale": 1.0 + } + ] + } + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + }, + "@id": "enzml:Measurement/a1fda09a-634e-4482-8d66-069b0e615ef5", + "@type": [ + "enzml:Measurement" + ], + "id": "m1", + "name": "m1", + "species_data": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/8c1fce82-7dbe-499e-b20d-6b0bb4887ed8", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "s0", + "initial": 0.0, + "data_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u2", + "name": "mmol / l", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/801b612f-9b16-4030-bc53-20e00d9e525b", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/8c63ea70-d26e-45e4-beef-651da82864d0", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "time_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000010", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u4", + "name": "s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/ec7aa14e-db13-4b05-ac2a-19973ff83e5a", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "data": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/ab6e6d77-58fe-4da1-a310-9224f573f0da", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "s1", + "initial": 10.0, + "data_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u2", + "name": "mmol / l", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/801b612f-9b16-4030-bc53-20e00d9e525b", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/8c63ea70-d26e-45e4-beef-651da82864d0", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "time_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000010", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u4", + "name": "s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/ec7aa14e-db13-4b05-ac2a-19973ff83e5a", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "data": [ + 10.0, + 9.0, + 8.0, + 7.0, + 6.0, + 5.0, + 4.0, + 3.0, + 2.0, + 1.0, + 0.0 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], + "is_simulated": false + } + ], + "ph": 7.0, + "temperature": 298.15, + "temperature_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000012", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u5", + "name": "K", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/ff8443f5-375d-4fbe-b199-598194298fb4", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "kelvin", + "exponent": 1, + "scale": 1.0 + } + ] + } + } + ], + "equations": [] +} \ No newline at end of file diff --git a/tests/fixtures/sbml/reaction_example_sbml.xml b/tests/fixtures/sbml/reaction_example_sbml.xml new file mode 100644 index 00000000..d346fc53 --- /dev/null +++ b/tests/fixtures/sbml/reaction_example_sbml.xml @@ -0,0 +1,231 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Vessel 1 + 10.0 + + + + + + + + + + + + + + Enzyme + MTEY + + + + + + MTEY + + + + + + + + Substrate + + + + + + + + + + Product + + + + + + + + + + + + + + + + 0.0 + 100.0 + 0.1 + + + + + + + + + + + + 0.0 + 100.0 + 0.1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + kcat + p0 + s0 + + + + K_m + s0 + + + + + + + + diff --git a/tests/fixtures/tabular/measurement_valid.json b/tests/fixtures/tabular/measurement_valid.json index ed462a27..926018d9 100644 --- a/tests/fixtures/tabular/measurement_valid.json +++ b/tests/fixtures/tabular/measurement_valid.json @@ -44,7 +44,7 @@ ], "id": "m0", "name": "Measurement 1", - "species": [ + "species_data": [ { "@context": { "enzml": "http://www.enzymeml.org/v2/", @@ -59,8 +59,8 @@ "enzml:MeasurementData" ], "species_id": "s1", - "init_conc": 0.0, - "data_type": "conc", + "initial": 0.0, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", "data_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", @@ -171,8 +171,8 @@ "enzml:MeasurementData" ], "species_id": "s2", - "init_conc": 10.0, - "data_type": "conc", + "initial": 10.0, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", "data_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", @@ -290,7 +290,7 @@ ], "id": "m1", "name": "Measurement 2", - "species": [ + "species_data": [ { "@context": { "enzml": "http://www.enzymeml.org/v2/", @@ -305,8 +305,8 @@ "enzml:MeasurementData" ], "species_id": "s1", - "init_conc": 0.0, - "data_type": "conc", + "initial": 0.0, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", "data_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", @@ -417,8 +417,8 @@ "enzml:MeasurementData" ], "species_id": "s2", - "init_conc": 100.0, - "data_type": "conc", + "initial": 100.0, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", "data_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", diff --git a/tests/unit/test_equations.py b/tests/unit/test_equations.py index 3556555d..c135621c 100644 --- a/tests/unit/test_equations.py +++ b/tests/unit/test_equations.py @@ -1,9 +1,9 @@ import pytest -from pyenzyme.equations._math import build_equation, build_equations from pyenzyme.equations._chem import build_reaction, build_reactions -from pyenzyme.units import M, second +from pyenzyme.equations._math import build_equation, build_equations from pyenzyme.model import EquationType +from pyenzyme.units import M, second class TestMathEquations: @@ -12,7 +12,7 @@ def test_parse_equation(self): equation = "s1'(t) = kcat * p0(t) * s0(t)" # Act - equation = build_equation(equation, unit=M / second) + equation = build_equation(equation) # Assert expected_vars = ["p0", "s0"] @@ -37,21 +37,13 @@ def test_parse_equation(self): assert param.name in expected_params assert param.symbol in expected_params - def test_invalid_equation_no_left(self): - # Arrange - equation = "kcat * p0(t) * s0(t)" - - # Act - with pytest.raises(ValueError): - equation = build_equation(equation, unit=M / second) - def test_invalid_equation_no_right(self): # Arrange equation = "s1'(t) =" # Act with pytest.raises(ValueError): - equation = build_equation(equation, unit=M / second) + equation = build_equation(equation) def test_invalid_equation_no_equals(self): # Arrange @@ -59,14 +51,14 @@ def test_invalid_equation_no_equals(self): # Act with pytest.raises(ValueError): - equation = build_equation(equation, unit=M / second) + equation = build_equation(equation) def test_equation_with_funs(self): # Arrange equation = "s1'(t) = kcat * exp(p0(t) * t)" # Act - equation = build_equation(equation, unit=M / second) + equation = build_equation(equation) # Assert assert ( @@ -81,7 +73,7 @@ def test_equation_with_fun_only_t(self): equation = "s1'(t) = kcat * exp(t)" # Act - equation = build_equation(equation, unit=M / second) + equation = build_equation(equation) # Assert assert ( @@ -100,7 +92,7 @@ def test_multiple_equations(self): # Act units = [M / second, M] - equations = build_equations(*equations, units=units) + equations = build_equations(*equations) # Assert assert len(equations) == 2, f"Expected 2 equations. Got {len(equations)}" @@ -110,7 +102,7 @@ def test_init_assigment_equation(self): equation = "E_tot = p0 + p1" # Act - equation = build_equation(equation, unit=M) + equation = build_equation(equation) # Assert assert ( @@ -128,7 +120,7 @@ def test_assigment_equation(self): equation = "E_tot(t) = p0 + p1" # Act - equation = build_equation(equation, unit=M) + equation = build_equation(equation) # Assert assert ( diff --git a/tests/unit/test_tabular.py b/tests/unit/test_tabular.py index 821faa32..6a3bced8 100644 --- a/tests/unit/test_tabular.py +++ b/tests/unit/test_tabular.py @@ -1,9 +1,9 @@ -import pytest import pandas as pd -import pyenzyme as pe +import pytest -from pyenzyme.units import mM, s +import pyenzyme as pe from pyenzyme.tabular import _measurement_to_pandas, to_pandas +from pyenzyme.units import mM, s class TestTabularExport: @@ -31,7 +31,7 @@ def test_multiple_measurements(self, measurement_valid): # Assert total_time_len = sum( - [len(m.species[0].time) for m in measurement_valid.measurements] + [len(m.species_data[0].time) for m in measurement_valid.measurements] ) assert ( @@ -46,10 +46,10 @@ def test_multiple_measurements(self, measurement_valid): for measurement in measurement_valid.measurements: df_sub = df[df["id"] == measurement.id] assert df_sub.shape[0] == len( - measurement.species[0].time - ), f"Expected {len(measurement.species[0].time)} rows. Got {df_sub.shape[0]}" + measurement.species_data[0].time + ), f"Expected {len(measurement.species_data[0].time)} rows. Got {df_sub.shape[0]}" - for species in measurement.species: + for species in measurement.species_data: assert ( species.species_id in df.columns ), f"Expected column for {species}" @@ -59,31 +59,38 @@ class TestTabularImport: def test_csv_import(self): """Test that a CSV file can be imported to a pandas DataFrame""" # Act - meas = pe.read_csv("tests/fixtures/tabular/data.csv", data_unit=mM, time_unit=s) + meas = pe.read_csv( + "tests/fixtures/tabular/data.csv", + data_unit=mM, + time_unit=s, + sep=";", + ) # Assert assert len(meas) == 2, f"Expected 2 measurements. Got {len(meas)}" for m in meas: - assert len(m.species) == 2, f"Expected 2 species. Got {len(m.species)}" assert ( - len(m.species[0].time) == 11 - ), f"Expected 10 time points. Got {len(m.species[0].time)}" + len(m.species_data) == 2 + ), f"Expected 2 species. Got {len(m.species_data)}" assert ( - len(m.species[1].time) == 11 - ), f"Expected 10 time points. Got {len(m.species[1].time)}" + len(m.species_data[0].time) == 11 + ), f"Expected 10 time points. Got {len(m.species_data[0].time)}" assert ( - m.species[0].data_unit == mM - ), f"Expected mM. Got {m.species[0].data_unit}" + len(m.species_data[1].time) == 11 + ), f"Expected 10 time points. Got {len(m.species_data[1].time)}" assert ( - m.species[0].time_unit == s - ), f"Expected s. Got {m.species[0].time_unit}" + m.species_data[0].data_unit == mM + ), f"Expected mM. Got {m.species_data[0].data_unit}" assert ( - m.species[1].data_unit == mM - ), f"Expected mM. Got {m.species[1].data_unit}" + m.species_data[0].time_unit == s + ), f"Expected s. Got {m.species_data[0].time_unit}" assert ( - m.species[1].time_unit == s - ), f"Expected s. Got {m.species[1].time_unit}" + m.species_data[1].data_unit == mM + ), f"Expected mM. Got {m.species_data[1].data_unit}" + assert ( + m.species_data[1].time_unit == s + ), f"Expected s. Got {m.species_data[1].time_unit}" def test_excel_import(self): """Test that a Excel file can be imported to a pandas DataFrame""" @@ -96,24 +103,26 @@ def test_excel_import(self): assert len(meas) == 2, f"Expected 2 measurements. Got {len(meas)}" for m in meas: - assert len(m.species) == 2, f"Expected 2 species. Got {len(m.species)}" assert ( - len(m.species[0].time) == 11 + len(m.species_data) == 2 + ), f"Expected 2 species. Got {len(m.species_data)}" + assert ( + len(m.species_data[0].time) == 11 ), f"Expected 10 time points. Got {len(m.species[0].time)}" assert ( - len(m.species[1].time) == 11 + len(m.species_data[1].time) == 11 ), f"Expected 10 time points. Got {len(m.species[1].time)}" assert ( - m.species[0].data_unit == mM + m.species_data[0].data_unit == mM ), f"Expected mM. Got {m.species[0].data_unit}" assert ( - m.species[0].time_unit == s + m.species_data[0].time_unit == s ), f"Expected s. Got {m.species[0].time_unit}" assert ( - m.species[1].data_unit == mM + m.species_data[1].data_unit == mM ), f"Expected mM. Got {m.species[1].data_unit}" assert ( - m.species[1].time_unit == s + m.species_data[1].time_unit == s ), f"Expected s. Got {m.species[1].time_unit}" def test_invalid_types(self): From 734f84959d5bcebfc907e9c8b98cdf8ac6fc072a Mon Sep 17 00:00:00 2001 From: Jan Range Date: Fri, 16 Aug 2024 16:09:26 +0200 Subject: [PATCH 037/172] remove unused imports --- pyenzyme/model.py | 1 - pyenzyme/tabular.py | 1 - 2 files changed, 2 deletions(-) diff --git a/pyenzyme/model.py b/pyenzyme/model.py index a8280e61..8a8d8479 100644 --- a/pyenzyme/model.py +++ b/pyenzyme/model.py @@ -5,7 +5,6 @@ from typing import Optional, Generic, TypeVar from enum import Enum from uuid import uuid4 -from datetime import date, datetime # Filter Wrapper definition used to filter a list of objects # based on their attributes diff --git a/pyenzyme/tabular.py b/pyenzyme/tabular.py index 16e77dfe..a712ca9a 100644 --- a/pyenzyme/tabular.py +++ b/pyenzyme/tabular.py @@ -3,7 +3,6 @@ import pathlib as pl import pandas as pd -from loguru import logger # type: ignore from .model import ( DataTypes, From df6c1afc58a8e148bed464db769fde205e5f2c8c Mon Sep 17 00:00:00 2001 From: Jan Range Date: Fri, 16 Aug 2024 16:21:53 +0200 Subject: [PATCH 038/172] remove unused `units` --- tests/unit/test_equations.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/unit/test_equations.py b/tests/unit/test_equations.py index c135621c..4a1496cc 100644 --- a/tests/unit/test_equations.py +++ b/tests/unit/test_equations.py @@ -3,7 +3,6 @@ from pyenzyme.equations._chem import build_reaction, build_reactions from pyenzyme.equations._math import build_equation, build_equations from pyenzyme.model import EquationType -from pyenzyme.units import M, second class TestMathEquations: @@ -91,7 +90,6 @@ def test_multiple_equations(self): ] # Act - units = [M / second, M] equations = build_equations(*equations) # Assert From 835e2c39dbe939bd45e59f8be11c55f4b9e695ee Mon Sep 17 00:00:00 2001 From: Jan Range Date: Mon, 19 Aug 2024 21:25:20 +0200 Subject: [PATCH 039/172] update dev example --- dev-examples/odes/enzymeml.json | 537 +++++++++--------- dev-examples/odes/ode_example.omex | Bin 2426 -> 0 bytes dev-examples/odes/odes_example.omex | Bin 0 -> 2425 bytes .../odes/{sbml.xml => odes_example.xml} | 20 +- dev-examples/reactions/enzymeml.json | 460 +++++++-------- dev-examples/reactions/reactions_example.omex | Bin 2208 -> 2213 bytes .../{sbml.xml => reactions_example.xml} | 52 +- dev-examples/sbml_export_odes.py | 12 +- dev-examples/sbml_export_reactions.py | 12 +- dev-examples/sbml_import_odes.py | 9 +- dev-examples/sbml_import_reactions.py | 9 +- 11 files changed, 566 insertions(+), 545 deletions(-) delete mode 100644 dev-examples/odes/ode_example.omex create mode 100644 dev-examples/odes/odes_example.omex rename dev-examples/odes/{sbml.xml => odes_example.xml} (96%) rename dev-examples/reactions/{sbml.xml => reactions_example.xml} (87%) diff --git a/dev-examples/odes/enzymeml.json b/dev-examples/odes/enzymeml.json index e0237a0e..aa587a1f 100644 --- a/dev-examples/odes/enzymeml.json +++ b/dev-examples/odes/enzymeml.json @@ -1,8 +1,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "name": "schema:title", "references": { "@id": "schema:citation", @@ -12,7 +12,7 @@ "modified": "schema:dateModified", "creators": "schema:creator" }, - "@id": "enzml:EnzymeMLDocument/39303f02-65a0-490b-8e1d-02162fb04199", + "@id": "enzml:EnzymeMLDocument/0e46ba63-85a2-4030-ae03-9cffa8f347cd", "@type": [ "enzml:EnzymeMLDocument" ], @@ -23,8 +23,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": { "@id": "schema:identifier", "@type": "@id" @@ -32,7 +32,7 @@ "name": "schema:name", "volume": "OBO:OBI_0002139" }, - "@id": "enzml:Vessel/371d000b-8c93-4abc-822b-cdc223778079", + "@id": "enzml:Vessel/fedbf6f5-4515-4868-830f-1b41033de3b8", "@type": [ "enzml:Vessel", "OBO:OBI_0400081" @@ -43,8 +43,8 @@ "unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, "@id": "OBO:UO_0000098", "@type": [ @@ -56,10 +56,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/448808be-98aa-4393-9141-0e13050fe90a", + "@id": "enzml:BaseUnit/9f6745b1-66d0-4180-b1ac-c10cc8e87c96", "@type": [ "enzml:BaseUnit" ], @@ -76,8 +76,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": { "@type": "@id" }, @@ -96,7 +96,7 @@ "@type": "@id" } }, - "@id": "enzml:Protein/5715b8c8-ac93-4e13-a101-3497c37dc260", + "@id": "enzml:Protein/d8bc713a-bcf5-4c24-981b-16a7baa1cc0b", "@type": [ "enzml:Protein", "schema:Protein" @@ -116,8 +116,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": { "@id": "schema:identifier", "@type": "@id" @@ -127,7 +127,7 @@ "@type": "@id" } }, - "@id": "enzml:Complex/a3f08a33-46d9-4ede-87b3-72b652279876", + "@id": "enzml:Complex/ef2c11f9-4278-487e-94cc-fc94fb622a47", "@type": [ "enzml:Complex" ], @@ -144,8 +144,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": { "@id": "schema:identifier", "@type": "@id" @@ -160,7 +160,7 @@ "@type": "@id" } }, - "@id": "enzml:SmallMolecule/b2d02c26-70fa-4401-b32f-76ff44b6e59a", + "@id": "enzml:SmallMolecule/58414ec1-a6f1-42dc-94e5-1380c63b20a2", "@type": [ "enzml:SmallMolecule" ], @@ -175,8 +175,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": { "@id": "schema:identifier", "@type": "@id" @@ -191,7 +191,7 @@ "@type": "@id" } }, - "@id": "enzml:SmallMolecule/32b0f5f4-219d-4918-84c9-de6912f3acb6", + "@id": "enzml:SmallMolecule/9c87ae6f-44b4-44db-bd5a-e4f7b99ddd19", "@type": [ "enzml:SmallMolecule" ], @@ -209,8 +209,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": { "@id": "schema:identifier", "@type": "@id" @@ -219,7 +219,7 @@ "@type": "@id" } }, - "@id": "enzml:Measurement/fbaacff6-d90f-48e6-b16c-98c77c00d5f9", + "@id": "enzml:Measurement/0426ea51-df1f-43d8-9e12-a21f95fc9c2f", "@type": [ "enzml:Measurement" ], @@ -229,13 +229,13 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "species_id": { "@type": "@id" } }, - "@id": "enzml:MeasurementData/bab6a019-2090-4f60-b20c-0a39d5dd2401", + "@id": "enzml:MeasurementData/f8664861-2026-4a5b-97a0-35bae4e99892", "@type": [ "enzml:MeasurementData" ], @@ -244,8 +244,8 @@ "data_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, "@id": "OBO:UO_0000063", "@type": [ @@ -257,10 +257,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/477cca4f-ec95-45a1-8c05-4578beb60b30", + "@id": "enzml:BaseUnit/1e8d1272-168b-497c-a82f-9adaf7042d23", "@type": [ "enzml:BaseUnit" ], @@ -271,10 +271,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/a045cb18-b5a9-44b1-88e2-1bb1374601d5", + "@id": "enzml:BaseUnit/7ded7917-83b4-4507-a055-ab1d19b5341b", "@type": [ "enzml:BaseUnit" ], @@ -287,8 +287,8 @@ "time_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, "@id": "OBO:UO_0000010", "@type": [ @@ -300,10 +300,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/c6ff977b-6f75-46fd-ac15-3a8c3ab4e8bd", + "@id": "enzml:BaseUnit/a2d6d606-d789-40e4-8246-0a2af736575f", "@type": [ "enzml:BaseUnit" ], @@ -345,13 +345,13 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "species_id": { "@type": "@id" } }, - "@id": "enzml:MeasurementData/7da88045-0b0d-44a5-afe5-ef9a6002df93", + "@id": "enzml:MeasurementData/ba922ab1-567e-4cdd-a015-cb00baf1dc9a", "@type": [ "enzml:MeasurementData" ], @@ -360,8 +360,8 @@ "data_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, "@id": "OBO:UO_0000063", "@type": [ @@ -373,10 +373,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/477cca4f-ec95-45a1-8c05-4578beb60b30", + "@id": "enzml:BaseUnit/1e8d1272-168b-497c-a82f-9adaf7042d23", "@type": [ "enzml:BaseUnit" ], @@ -387,10 +387,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/a045cb18-b5a9-44b1-88e2-1bb1374601d5", + "@id": "enzml:BaseUnit/7ded7917-83b4-4507-a055-ab1d19b5341b", "@type": [ "enzml:BaseUnit" ], @@ -403,8 +403,8 @@ "time_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, "@id": "OBO:UO_0000010", "@type": [ @@ -416,10 +416,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/c6ff977b-6f75-46fd-ac15-3a8c3ab4e8bd", + "@id": "enzml:BaseUnit/a2d6d606-d789-40e4-8246-0a2af736575f", "@type": [ "enzml:BaseUnit" ], @@ -464,8 +464,8 @@ "temperature_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, "@id": "OBO:UO_0000012", "@type": [ @@ -477,10 +477,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/109807ff-d2fa-4eeb-a0ee-3de4930871f5", + "@id": "enzml:BaseUnit/1a31c8a4-6212-4810-804f-59c5cffd10c5", "@type": [ "enzml:BaseUnit" ], @@ -494,8 +494,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": { "@id": "schema:identifier", "@type": "@id" @@ -504,7 +504,7 @@ "@type": "@id" } }, - "@id": "enzml:Measurement/a1773c19-270a-40e2-848c-d74cd98fa03c", + "@id": "enzml:Measurement/d81322ba-5094-446e-b224-4795ff25615a", "@type": [ "enzml:Measurement" ], @@ -514,13 +514,13 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "species_id": { "@type": "@id" } }, - "@id": "enzml:MeasurementData/a5a649d1-6bdb-4a1e-a9fb-d49ec9c3efac", + "@id": "enzml:MeasurementData/2c021e30-5731-4893-baf4-f337b46a51ca", "@type": [ "enzml:MeasurementData" ], @@ -529,8 +529,8 @@ "data_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, "@id": "OBO:UO_0000063", "@type": [ @@ -542,10 +542,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/477cca4f-ec95-45a1-8c05-4578beb60b30", + "@id": "enzml:BaseUnit/1e8d1272-168b-497c-a82f-9adaf7042d23", "@type": [ "enzml:BaseUnit" ], @@ -556,10 +556,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/a045cb18-b5a9-44b1-88e2-1bb1374601d5", + "@id": "enzml:BaseUnit/7ded7917-83b4-4507-a055-ab1d19b5341b", "@type": [ "enzml:BaseUnit" ], @@ -572,8 +572,8 @@ "time_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, "@id": "OBO:UO_0000010", "@type": [ @@ -585,10 +585,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/c6ff977b-6f75-46fd-ac15-3a8c3ab4e8bd", + "@id": "enzml:BaseUnit/a2d6d606-d789-40e4-8246-0a2af736575f", "@type": [ "enzml:BaseUnit" ], @@ -630,13 +630,13 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "species_id": { "@type": "@id" } }, - "@id": "enzml:MeasurementData/bb46ba43-287b-49d8-bc16-51cd806cc7ed", + "@id": "enzml:MeasurementData/458293b5-22ca-41c2-9b25-0f98c05ce480", "@type": [ "enzml:MeasurementData" ], @@ -645,8 +645,8 @@ "data_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, "@id": "OBO:UO_0000063", "@type": [ @@ -658,10 +658,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/477cca4f-ec95-45a1-8c05-4578beb60b30", + "@id": "enzml:BaseUnit/1e8d1272-168b-497c-a82f-9adaf7042d23", "@type": [ "enzml:BaseUnit" ], @@ -672,10 +672,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/a045cb18-b5a9-44b1-88e2-1bb1374601d5", + "@id": "enzml:BaseUnit/7ded7917-83b4-4507-a055-ab1d19b5341b", "@type": [ "enzml:BaseUnit" ], @@ -688,8 +688,8 @@ "time_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, "@id": "OBO:UO_0000010", "@type": [ @@ -701,10 +701,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/c6ff977b-6f75-46fd-ac15-3a8c3ab4e8bd", + "@id": "enzml:BaseUnit/a2d6d606-d789-40e4-8246-0a2af736575f", "@type": [ "enzml:BaseUnit" ], @@ -749,8 +749,8 @@ "temperature_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, "@id": "OBO:UO_0000012", "@type": [ @@ -762,10 +762,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/109807ff-d2fa-4eeb-a0ee-3de4930871f5", + "@id": "enzml:BaseUnit/1a31c8a4-6212-4810-804f-59c5cffd10c5", "@type": [ "enzml:BaseUnit" ], @@ -781,13 +781,13 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "species_id": { "@type": "@id" } }, - "@id": "enzml:Equation/1f92428c-cb1a-4d9f-a8cb-3414e7e87049", + "@id": "enzml:Equation/07b5e8fb-729c-4e1d-892e-46be9e9e6d56", "@type": [ "enzml:Equation" ], @@ -798,11 +798,11 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": "schema:identifier" }, - "@id": "enzml:Variable/6a1e9596-a851-467f-aac8-b12595a94856", + "@id": "enzml:Variable/edde9e7a-ce67-4af4-8788-0f96716d0e85", "@type": [ "enzml:Variable" ], @@ -810,209 +810,208 @@ "name": "s0", "symbol": "s0" } + ] + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:Equation/77814fb8-a848-4759-8354-32a9f7a19a49", + "@type": [ + "enzml:Equation" ], - "parameters": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - }, - "@id": "enzml:Parameter/49b1a46d-7cc6-436c-b57f-d17a44d980b9", - "@type": [ - "enzml:Parameter" - ], - "id": "K_m", - "name": "K_m", - "symbol": "K_m", - "unit": { + "equation": "100", + "equation_type": "initialAssignment", + "species_id": "E_tot", + "variables": [] + } + ], + "parameters": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + }, + "@id": "enzml:Parameter/8bd75c32-151d-4a05-9e36-be114db34334", + "@type": [ + "enzml:Parameter" + ], + "id": "E_tot", + "name": "E_tot", + "symbol": "E_tot", + "unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u2", + "name": "mmol / l", + "base_units": [ + { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, - "@id": "OBO:UO_0000063", + "@id": "enzml:BaseUnit/1e8d1272-168b-497c-a82f-9adaf7042d23", "@type": [ - "OBO:UO_0000000" + "enzml:BaseUnit" ], - "id": "u2", - "name": "mmol / l", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "enzml:BaseUnit/477cca4f-ec95-45a1-8c05-4578beb60b30", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "mole", - "exponent": 1, - "scale": -3.0 - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "enzml:BaseUnit/a045cb18-b5a9-44b1-88e2-1bb1374601d5", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "litre", - "exponent": -1, - "scale": 1.0 - } - ] - }, - "upper": 100.0, - "lower": 0.0, - "stderr": 0.1, - "constant": true - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } + "kind": "mole", + "exponent": 1, + "scale": -3.0 }, - "@id": "enzml:Parameter/71b45227-a2a7-4e0c-a273-9ef99dbcab1a", - "@type": [ - "enzml:Parameter" - ], - "id": "E_tot", - "name": "E_tot", - "symbol": "E_tot", - "unit": { + { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, - "@id": "OBO:UO_0000063", + "@id": "enzml:BaseUnit/7ded7917-83b4-4507-a055-ab1d19b5341b", "@type": [ - "OBO:UO_0000000" + "enzml:BaseUnit" ], - "id": "u2", - "name": "mmol / l", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "enzml:BaseUnit/477cca4f-ec95-45a1-8c05-4578beb60b30", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "mole", - "exponent": 1, - "scale": -3.0 - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "enzml:BaseUnit/a045cb18-b5a9-44b1-88e2-1bb1374601d5", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "litre", - "exponent": -1, - "scale": 1.0 - } - ] - }, - "upper": 100.0, - "lower": 0.0, - "stderr": 0.1, - "constant": true + "kind": "litre", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "upper": 100.0, + "lower": 0.0, + "stderr": 0.1, + "constant": true + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + }, + "@id": "enzml:Parameter/e63b8e5b-56a5-4b8e-98be-18e829b179f1", + "@type": [ + "enzml:Parameter" + ], + "id": "K_m", + "name": "K_m", + "symbol": "K_m", + "unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - }, - "@id": "enzml:Parameter/f4bdcef7-8883-4cf2-b1b5-6ccacd9b1e37", - "@type": [ - "enzml:Parameter" - ], - "id": "kcat", - "name": "kcat", - "symbol": "kcat", - "unit": { + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u2", + "name": "mmol / l", + "base_units": [ + { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, - "@id": "OBO:UO_0000010", + "@id": "enzml:BaseUnit/1e8d1272-168b-497c-a82f-9adaf7042d23", "@type": [ - "OBO:UO_0000000" + "enzml:BaseUnit" ], - "id": "u4", - "name": "1 / s", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "enzml:BaseUnit/c6ff977b-6f75-46fd-ac15-3a8c3ab4e8bd", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "second", - "exponent": -1, - "scale": 1.0 - } - ] + "kind": "mole", + "exponent": 1, + "scale": -3.0 }, - "upper": 100.0, - "lower": 0.0, - "stderr": 0.1, - "constant": true - } - ] + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/7ded7917-83b4-4507-a055-ab1d19b5341b", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "upper": 100.0, + "lower": 0.0, + "stderr": 0.1, + "constant": true }, { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", - "species_id": { + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", "@type": "@id" } }, - "@id": "enzml:Equation/e0c67659-dcfc-401b-a48d-0599f685aa91", + "@id": "enzml:Parameter/158b36f9-74bd-4148-b3f8-5a2a77ea5571", "@type": [ - "enzml:Equation" + "enzml:Parameter" ], - "equation": "100", - "equation_type": "initialAssignment", - "species_id": "E_tot", - "variables": [], - "parameters": [] + "id": "kcat", + "name": "kcat", + "symbol": "kcat", + "unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000010", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u4", + "name": "1 / s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/a2d6d606-d789-40e4-8246-0a2af736575f", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "upper": 100.0, + "lower": 0.0, + "stderr": 0.1, + "constant": true } ] } \ No newline at end of file diff --git a/dev-examples/odes/ode_example.omex b/dev-examples/odes/ode_example.omex deleted file mode 100644 index 4c9da3c7147983275b7a4449a3fd693dbbb3088d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2426 zcmZ{mc{J308^(VkB{X(f@+dUQzJ;t|im{B*$XFX?tTV*erh3qfY}t~+Bq~X=kA3XB zNt*1kjV<)dXi$$HTVB2Id6%bi-tYa#b?!f|bMEiwpX;)>ggRDi^J=9sTiL9T6Q6p;1s^)yYS}8 zl7O2540KzNiccRh!$ewrF>C*+NOPAkGT(v1(_L%6zt_DvOB=emfNT0koE4%mS z<$2H6P^P9o*g}xzVVr@k-ub=AwQX$`J8OwcQx(4_aK_6r*jHR%9%ah7=2LOcfZFN-w3wo zkPeDhxhF3zgTI6%)oz3e#lREn46D3ntz~xuMN?bpVeo`wkj%FoCAY*xeS#zu7%};>aTWx-Qfn=#iK{S1pWW5h&uYP-N4!u)kIGCGbiAS*g*Qmc zaw^(Cz7;9N8l) z!o>;}CBcpc-_BZsb8e2Rt$UBxbgTMRFXy}$srvRr-z`}bkDI@>lba0d^KN4~J!f2^ z$wYfj*1Rw|Y|?re2o-&`A`;C^np&r%hFYDl@y=F|{qjH%?W3giUO*}&ySKoGkk;U$ z-(s%}rX$w9oKI%uBixxTE+)uyxlD`_+?BInaG;X6Wl+`{R;upSp@j`UR$xx|>3upk zgfI&WlDK>-%&;d_Q7zG|`0y4|9uxy!C7Pd*NwmVgL8#j7HYt9r+f+|Y1O%*Zv--j<==z0Z>=9Dn8-hvfrX zBWv{y6vFyASfWX8U-3{Mp6A*_K8v04t5AWh!zo=_ zAKe_7_ioOIiWJf?&6i=`m8`3t3)v-K>NYJLy0CfH%y1<2CC;C?oAH3}p@2r;YEeohbO?LQ0>c1qfD!bsWf7dF+B0h=$RxuvtVbp_{z= z1tbFkhki;snI<55I?M!Gp$50QA$z_ViJh1U4O1DX@3`8!p)3FRc|>M#dP zJH9<}H!tprju3I9kz`9oSYmft7aQeD}>1Z=URv!-1ztR(Rq0-mmao&`%7N0Ap0vv$q{Um ze-I%#k#%A=wM(Q;Xbk~#AsA7{5(9i|xOto_qtGacIuDfJhavvZ^GwhD&({h!T?(%X zzbLs?S$xsxS#*Pj9F_1ma3uZ8+H~zR!zJO2ku2Wbz4%#wXoqh|g1eshysnh0niOFA z8*28OHK>jh&(l$@G*a=&HT~L%V3?Esh|R>|*1eS&*;u#;Wnov-%f5$H=qTwR6W%sK znp$z{i5@mMgL9IGU>{*iO1125(L`$uQhdDaFKVqOl+j*Lhu787*6QI4;Wp;WYRrMF zwWx=n1Zg#{M`Ub>4%z!$I{V3R-mmi%llpZg{EJxf{dliKedO@Z$p%Ly`#%%ex{o&K z4+~D;foyS`;U7&0YhvUji8k4HE{8e9b$xU+l9Hlt!rvq8%o?xfZO_4(Of zPi?h){l2O)cM};g3+YIA37k!o^LJkFeijl1ma0H5runaSl{(wkufQB-QX~^h9IMQ6 z>9&h;qC~4n!fdtQ8$1TQR{S#L{gqC8bmXhjy|l7X^g`cI&tE)U74&|(>xBa4&*X?M z^O^#lou&wk@qM?!uR(uNpAWLk-NAI5~Z%Rd^`r1 zCtrU?Vu`Mk^8Lq=zo+A&ZAg{>K`Oej{j3fE;Nc$Zt{jXDbxpo_JW85}gSK{J z2m;wkk&wAm|9mg+{*?bMGru~2P5XcO0N~|a?t>rxC;NZ3{fgngwzCIR{td;}^6){C008!b MDLBxkpTvNF0GZ-hegFUf diff --git a/dev-examples/odes/odes_example.omex b/dev-examples/odes/odes_example.omex new file mode 100644 index 0000000000000000000000000000000000000000..3b46bafbba626a6f9480f942ae68acaa0067f882 GIT binary patch literal 2425 zcmZ{mS5VXI7RCP*X;PGcgcchubTDENq!}wsJGUHX?zbP-?1we8zu(JRI5Z!>6aWB10H++}{E-jO zeZRBecmY6kNB!Lce7!u0!P-~-{fbkqu}^hHV^@Djr>t5}$Ku$zqhc7g#1&8|;>9WH zR{L+OJyF8<0pXB_KTVR)^(==ZnQP%k=iheHI(RI5yygdMVxC5hjCVFp)f>Ly#`h#Y zqg+%96dX7-*seEeBWcQg@rtgH)EBsx0K;Bb9Hro4*+&W!R)sztLp2zvmN`pv*tUXl zZ!^${O$kLjVxPKVA~?e=GhcHqD6Z1J(k4=h8)IZ7G7^6c?yX}2{Ze&2F52bl=EV=? z*>jSAoWM$ifqJf`4I=z*Ip{^7dx8@%1({05eWj+6KCx}QK1ogG6(QTjIo_S!nPAX1&1cjsGH9yi0JEzMezn)#s zQxc2mR_>6ZL?zD3y8BMPVB3JLps3APl$*y=)>voFcyCNuLe-_ls@{ntIhENCWmOy< zxzIy3N!OX%ur)~6NU<*DG1o*R&7R;XD@gHXX_1C!_9(s}**C#T-qm{TP~cP{`u3B@ zV^a!y&!LI4-mbGzY$xYqn#$&9B-4WY%h$8~HwvI==fdd8JY&3pTFw2w^U+Xu)|2Ru z8%VET2PXrkvrYWpg$JQ%v<{|3p22rMP;w3BdfnNfjWce7if> zeAOvN^d##2n1Ki+8EkcEn74gdQ=>@ip+U#DCzV6hf+;%CH$;9$6+>ywP@Le-==5Zs zhm6x+z769Ii|ybYN}tt8jBgKUXj%f3+AV%g5D{m?PM6+L-O7n&>>^Pu6glnhAFg7P zSB-?e^cAAV&X*0@NIg?KZK>XJKUOA*-qgFOz&YZcn4WKOjC*+C=3UVY=>(N?{OA;% zskJ`Gttv|aV?a^fek@4-0`5@ZaYO5{Nt3rn$n?z`(hKZd2N#r@$kWzZZEoynB!n}z|3#6+=`=|>^~#UaJa6}2 zsh$Q6i@FhB@l+=Zh+FLO7^3H+Zs#5YE#xoY{RH@ERY?Qhs^@lF!3ZO7Bt&lg`0xNS z7aO2k=6A#R0qT-*B1+M9xcjOa$%SQdyIW9Er_xCN5WJT+PRV2R<+gm>A<{@znXA4C zboWJo9A?m)Q^-CNDtdH6*Rfao`bfOnEFBBZU{q2w;ANd zgb|&x3eu2=5;teRz9wuu5R?1JD?Q^2wipnIHK_i+WpsdPpeq1r6dPE$B&RRH=1=lu zPwcmXV3tHu6;mZ;4ux8vYV>T*cqkckIQerg*Li1;`DKsMzD$P8wjLIWGgcL<5VobZ zo(J`Vyk_@X<~%6`r!nH*D~`llTWo9R-@Q8TnZhGO*r0w}QAN{yqr$h1Il}$nlngSD zSoA@&2#FvvJp+`O0emLk`O!ixL$>C-H7tkrm69o~v(lGDCWTvl;;R;nf{ty$jdCE7 zo5n_laMMjVPx^LVULNF32S$Qv8MAj|jbvnF7SVr;N@Z9*V5s)dNJxP@$ zKjegme#z~UQra8ZP{Sk1a=+??y=Xq8$gLFuj?up-U5CXI#+GTGKh9h_3m({g%k8)EX)w5b!zoXd4wC>IQ8UH-g_&~OoW`AsE~eN zXGJ;#p;J|x9iU>T0{6DOc7+LU7h&sE_%xxx0e1@V^>Z9W;P8Y^&*1hzw)o{!>m!YR#t^ddr7&7y<7HrH;r`*0iuw@>Shg0ht1 zOxJ-J!k)I+M_H_pnY@Sf{nzd^moE*xZ8*mnYVixd#s&A{6n;$nIZ;gfoT|O(m^e$D zX+<`MPu^Q_dJ%yxz&eK9ZEovGFVo J+V+bW@E0S1R{Q_} literal 0 HcmV?d00001 diff --git a/dev-examples/odes/sbml.xml b/dev-examples/odes/odes_example.xml similarity index 96% rename from dev-examples/odes/sbml.xml rename to dev-examples/odes/odes_example.xml index c6e4e0f4..73381af8 100644 --- a/dev-examples/odes/sbml.xml +++ b/dev-examples/odes/odes_example.xml @@ -88,7 +88,7 @@ - + Vessel 1 10.0 @@ -102,7 +102,7 @@ - + Enzyme MTEY E.coli @@ -121,7 +121,7 @@ - + Enzyme-Substrate Complex @@ -135,7 +135,7 @@ - + Substrate @@ -149,7 +149,7 @@ - + Product @@ -162,10 +162,10 @@ - + - + @@ -176,10 +176,10 @@ - + - + @@ -193,7 +193,7 @@ - + diff --git a/dev-examples/reactions/enzymeml.json b/dev-examples/reactions/enzymeml.json index 841b2fd7..fa61615f 100644 --- a/dev-examples/reactions/enzymeml.json +++ b/dev-examples/reactions/enzymeml.json @@ -1,8 +1,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "name": "schema:title", "references": { "@id": "schema:citation", @@ -12,7 +12,7 @@ "modified": "schema:dateModified", "creators": "schema:creator" }, - "@id": "enzml:EnzymeMLDocument/4cc6b230-1ca7-4b01-acfe-34ca8a8c8b03", + "@id": "enzml:EnzymeMLDocument/ade60195-1a49-4643-9a7f-a3f4569e080f", "@type": [ "enzml:EnzymeMLDocument" ], @@ -23,8 +23,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": { "@id": "schema:identifier", "@type": "@id" @@ -32,7 +32,7 @@ "name": "schema:name", "volume": "OBO:OBI_0002139" }, - "@id": "enzml:Vessel/040a3842-d40e-44e8-a32d-19d830c8572c", + "@id": "enzml:Vessel/dca62013-0979-400d-9390-6d3fc9992b3b", "@type": [ "enzml:Vessel", "OBO:OBI_0400081" @@ -43,8 +43,8 @@ "unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, "@id": "OBO:UO_0000098", "@type": [ @@ -56,10 +56,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/dfeb036d-92c6-4067-8eb9-36370cff8244", + "@id": "enzml:BaseUnit/48e1f6d3-a632-49ab-9373-ced5416b3ee8", "@type": [ "enzml:BaseUnit" ], @@ -76,8 +76,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": { "@type": "@id" }, @@ -96,7 +96,7 @@ "@type": "@id" } }, - "@id": "enzml:Protein/d24ac8cf-2118-4bc4-b32f-8dbe37a00aa4", + "@id": "enzml:Protein/da73d1bd-7ba7-4a21-916a-83804274eb57", "@type": [ "enzml:Protein", "schema:Protein" @@ -114,8 +114,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": { "@id": "schema:identifier", "@type": "@id" @@ -130,7 +130,7 @@ "@type": "@id" } }, - "@id": "enzml:SmallMolecule/4430bc12-a97a-4a8c-a753-59d62b8d5be1", + "@id": "enzml:SmallMolecule/2d890949-ba88-418d-8b83-9a689073638b", "@type": [ "enzml:SmallMolecule" ], @@ -143,8 +143,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": { "@id": "schema:identifier", "@type": "@id" @@ -159,7 +159,7 @@ "@type": "@id" } }, - "@id": "enzml:SmallMolecule/54498f68-5ca7-4515-a8a0-20bff1da321d", + "@id": "enzml:SmallMolecule/5c1da8cc-8b2d-4cfd-bbab-9cc7ce0c716f", "@type": [ "enzml:SmallMolecule" ], @@ -174,8 +174,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": { "@id": "schema:identifier", "@type": "@id" @@ -184,7 +184,7 @@ "@type": "@id" } }, - "@id": "enzml:Reaction/bdbaa018-4f0c-44a8-a67b-ae88e294dd20", + "@id": "enzml:Reaction/d4de1855-14c4-4704-9b13-139c0ecf38ae", "@type": [ "enzml:Reaction" ], @@ -194,13 +194,13 @@ "kinetic_law": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "species_id": { "@type": "@id" } }, - "@id": "enzml:Equation/add0038a-e325-454e-8ff6-a7ab5ece87fe", + "@id": "enzml:Equation/9689876c-204c-4840-9703-5521c06767aa", "@type": [ "enzml:Equation" ], @@ -210,150 +210,32 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", - "id": "schema:identifier" - }, - "@id": "enzml:Variable/c53d54fe-9297-4f3c-980b-25bea0734058", - "@type": [ - "enzml:Variable" - ], - "id": "p0", - "name": "p0", - "symbol": "p0" - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/", "id": "schema:identifier" }, - "@id": "enzml:Variable/e0be55cb-1f6e-4933-a400-d2ef9db25329", + "@id": "enzml:Variable/5f07e8be-4726-49cb-b6cd-6569dcdf12d0", "@type": [ "enzml:Variable" ], "id": "s0", "name": "s0", "symbol": "s0" - } - ], - "parameters": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - }, - "@id": "enzml:Parameter/1e6d62f9-49b9-4aad-be74-490c6e9d6f7a", - "@type": [ - "enzml:Parameter" - ], - "id": "K_m", - "name": "K_m", - "symbol": "K_m", - "unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "OBO:UO_0000063", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u1", - "name": "mmol / l", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "enzml:BaseUnit/38393576-f6dd-4f90-8528-3a75ea49d1d4", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "mole", - "exponent": 1, - "scale": -3.0 - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "enzml:BaseUnit/31c7d1bf-d71b-4b66-8a47-93d3e7711d47", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "litre", - "exponent": -1, - "scale": 1.0 - } - ] - }, - "upper": 100.0, - "lower": 0.0, - "stderr": 0.1, - "constant": true }, { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } + "schema": "https://schema.org/", + "id": "schema:identifier" }, - "@id": "enzml:Parameter/c39f3e34-c4da-4a47-b82a-43d9ba2be5bf", + "@id": "enzml:Variable/aedb0ffd-b477-4b67-9d35-aa9439acf7bd", "@type": [ - "enzml:Parameter" + "enzml:Variable" ], - "id": "kcat", - "name": "kcat", - "symbol": "kcat", - "unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "OBO:UO_0000010", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u2", - "name": "1 / s", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "enzml:BaseUnit/ffb7a3e9-4bb5-4d6c-858c-3ab6d953f9a4", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "second", - "exponent": -1, - "scale": 1.0 - } - ] - }, - "upper": 100.0, - "lower": 0.0, - "stderr": 0.1, - "constant": true + "id": "p0", + "name": "p0", + "symbol": "p0" } ] }, @@ -361,13 +243,13 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "species_id": { "@type": "@id" } }, - "@id": "enzml:ReactionElement/cb145bd9-0333-435e-ab2b-eb0f3f6bb9c0", + "@id": "enzml:ReactionElement/87493c81-5b1b-48de-b4fb-0767eb92d6dc", "@type": [ "enzml:ReactionElement" ], @@ -377,13 +259,13 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "species_id": { "@type": "@id" } }, - "@id": "enzml:ReactionElement/ac29c50c-2818-400a-ae93-49a09f381ecb", + "@id": "enzml:ReactionElement/e7136ffc-32f0-4f42-a9d8-12178e80a1c4", "@type": [ "enzml:ReactionElement" ], @@ -400,8 +282,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": { "@id": "schema:identifier", "@type": "@id" @@ -410,7 +292,7 @@ "@type": "@id" } }, - "@id": "enzml:Measurement/391ac5d7-b284-4f58-845f-10b65ec65c29", + "@id": "enzml:Measurement/15937ee7-49ee-4db5-a52a-3f2eb816a24d", "@type": [ "enzml:Measurement" ], @@ -420,13 +302,13 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "species_id": { "@type": "@id" } }, - "@id": "enzml:MeasurementData/644d3f4c-eab7-49c4-9e0a-e4c4267bfcdb", + "@id": "enzml:MeasurementData/716ac22f-a04a-477f-9a79-90d39024b2b7", "@type": [ "enzml:MeasurementData" ], @@ -435,8 +317,8 @@ "data_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, "@id": "OBO:UO_0000063", "@type": [ @@ -448,10 +330,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/38393576-f6dd-4f90-8528-3a75ea49d1d4", + "@id": "enzml:BaseUnit/59cd6067-66c0-4ab7-9b9b-c4d66bd6990e", "@type": [ "enzml:BaseUnit" ], @@ -462,10 +344,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/31c7d1bf-d71b-4b66-8a47-93d3e7711d47", + "@id": "enzml:BaseUnit/d21d0a9e-c232-493b-8cd6-fa919d767854", "@type": [ "enzml:BaseUnit" ], @@ -478,23 +360,23 @@ "time_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, "@id": "OBO:UO_0000010", "@type": [ "OBO:UO_0000000" ], - "id": "u3", + "id": "u2", "name": "s", "base_units": [ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/ffb7a3e9-4bb5-4d6c-858c-3ab6d953f9a4", + "@id": "enzml:BaseUnit/e904e3f6-02be-4ba1-b206-4cdcb6baf65e", "@type": [ "enzml:BaseUnit" ], @@ -536,13 +418,13 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "species_id": { "@type": "@id" } }, - "@id": "enzml:MeasurementData/3eda7daf-6707-448f-bee3-c1d194459b9b", + "@id": "enzml:MeasurementData/e670be98-5438-450f-8c23-4db3234d353d", "@type": [ "enzml:MeasurementData" ], @@ -551,8 +433,8 @@ "data_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, "@id": "OBO:UO_0000063", "@type": [ @@ -564,10 +446,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/38393576-f6dd-4f90-8528-3a75ea49d1d4", + "@id": "enzml:BaseUnit/59cd6067-66c0-4ab7-9b9b-c4d66bd6990e", "@type": [ "enzml:BaseUnit" ], @@ -578,10 +460,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/31c7d1bf-d71b-4b66-8a47-93d3e7711d47", + "@id": "enzml:BaseUnit/d21d0a9e-c232-493b-8cd6-fa919d767854", "@type": [ "enzml:BaseUnit" ], @@ -594,23 +476,23 @@ "time_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, "@id": "OBO:UO_0000010", "@type": [ "OBO:UO_0000000" ], - "id": "u3", + "id": "u2", "name": "s", "base_units": [ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/ffb7a3e9-4bb5-4d6c-858c-3ab6d953f9a4", + "@id": "enzml:BaseUnit/e904e3f6-02be-4ba1-b206-4cdcb6baf65e", "@type": [ "enzml:BaseUnit" ], @@ -655,23 +537,23 @@ "temperature_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, "@id": "OBO:UO_0000012", "@type": [ "OBO:UO_0000000" ], - "id": "u4", + "id": "u3", "name": "K", "base_units": [ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/839c0ac5-eec5-40ec-9c76-e25d735f065d", + "@id": "enzml:BaseUnit/ab4850f1-0470-4a6b-ba15-ab2edde18918", "@type": [ "enzml:BaseUnit" ], @@ -685,8 +567,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": { "@id": "schema:identifier", "@type": "@id" @@ -695,7 +577,7 @@ "@type": "@id" } }, - "@id": "enzml:Measurement/5b279983-6b56-4c70-a807-282808973cc4", + "@id": "enzml:Measurement/3210b5eb-ff4f-4c0b-85a2-c6669a5fea0b", "@type": [ "enzml:Measurement" ], @@ -705,13 +587,13 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "species_id": { "@type": "@id" } }, - "@id": "enzml:MeasurementData/45637267-987f-4b11-a89f-e26643eaff60", + "@id": "enzml:MeasurementData/bdc0afb1-cfed-4c2e-8a42-93ac613638a9", "@type": [ "enzml:MeasurementData" ], @@ -720,8 +602,8 @@ "data_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, "@id": "OBO:UO_0000063", "@type": [ @@ -733,10 +615,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/38393576-f6dd-4f90-8528-3a75ea49d1d4", + "@id": "enzml:BaseUnit/59cd6067-66c0-4ab7-9b9b-c4d66bd6990e", "@type": [ "enzml:BaseUnit" ], @@ -747,10 +629,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/31c7d1bf-d71b-4b66-8a47-93d3e7711d47", + "@id": "enzml:BaseUnit/d21d0a9e-c232-493b-8cd6-fa919d767854", "@type": [ "enzml:BaseUnit" ], @@ -763,23 +645,23 @@ "time_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, "@id": "OBO:UO_0000010", "@type": [ "OBO:UO_0000000" ], - "id": "u3", + "id": "u2", "name": "s", "base_units": [ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/ffb7a3e9-4bb5-4d6c-858c-3ab6d953f9a4", + "@id": "enzml:BaseUnit/e904e3f6-02be-4ba1-b206-4cdcb6baf65e", "@type": [ "enzml:BaseUnit" ], @@ -821,13 +703,13 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "species_id": { "@type": "@id" } }, - "@id": "enzml:MeasurementData/42f843c5-4042-4f22-a076-5626b86444c7", + "@id": "enzml:MeasurementData/8b5da426-824b-40e5-8574-8b390f02ec5a", "@type": [ "enzml:MeasurementData" ], @@ -836,8 +718,8 @@ "data_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, "@id": "OBO:UO_0000063", "@type": [ @@ -849,10 +731,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/38393576-f6dd-4f90-8528-3a75ea49d1d4", + "@id": "enzml:BaseUnit/59cd6067-66c0-4ab7-9b9b-c4d66bd6990e", "@type": [ "enzml:BaseUnit" ], @@ -863,10 +745,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/31c7d1bf-d71b-4b66-8a47-93d3e7711d47", + "@id": "enzml:BaseUnit/d21d0a9e-c232-493b-8cd6-fa919d767854", "@type": [ "enzml:BaseUnit" ], @@ -879,23 +761,23 @@ "time_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, "@id": "OBO:UO_0000010", "@type": [ "OBO:UO_0000000" ], - "id": "u3", + "id": "u2", "name": "s", "base_units": [ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/ffb7a3e9-4bb5-4d6c-858c-3ab6d953f9a4", + "@id": "enzml:BaseUnit/e904e3f6-02be-4ba1-b206-4cdcb6baf65e", "@type": [ "enzml:BaseUnit" ], @@ -940,23 +822,23 @@ "temperature_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, "@id": "OBO:UO_0000012", "@type": [ "OBO:UO_0000000" ], - "id": "u4", + "id": "u3", "name": "K", "base_units": [ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/839c0ac5-eec5-40ec-9c76-e25d735f065d", + "@id": "enzml:BaseUnit/ab4850f1-0470-4a6b-ba15-ab2edde18918", "@type": [ "enzml:BaseUnit" ], @@ -968,5 +850,123 @@ } } ], - "equations": [] + "equations": [], + "parameters": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + }, + "@id": "enzml:Parameter/48cdca34-78ee-4169-a143-18d602d59b33", + "@type": [ + "enzml:Parameter" + ], + "id": "kcat", + "name": "kcat", + "symbol": "kcat", + "unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000010", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u4", + "name": "1 / s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/e904e3f6-02be-4ba1-b206-4cdcb6baf65e", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "upper": 100.0, + "lower": 0.0, + "stderr": 0.1, + "constant": true + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + }, + "@id": "enzml:Parameter/ce20d881-741f-4f48-ad4e-e62daf7c9bf5", + "@type": [ + "enzml:Parameter" + ], + "id": "K_m", + "name": "K_m", + "symbol": "K_m", + "unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u1", + "name": "mmol / l", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/59cd6067-66c0-4ab7-9b9b-c4d66bd6990e", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/d21d0a9e-c232-493b-8cd6-fa919d767854", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "upper": 100.0, + "lower": 0.0, + "stderr": 0.1, + "constant": true + } + ] } \ No newline at end of file diff --git a/dev-examples/reactions/reactions_example.omex b/dev-examples/reactions/reactions_example.omex index 3ae590985893f7b06387ac93a0979f94814f6daf..a9ef6122f2561df78fd9976ebb3a1ac0366431c0 100644 GIT binary patch delta 1699 zcmV;U23+}|5v36gP)h>@6aWAK2mtk}6R`~l0SWc06ItiSuUsON9sw4A+iu%95Pi>A z2QcRPt6aD(?9q{$n)1xs9#WXQBVH5p^^X$|x?(Xi6 zrT93_zZ&wvh{%#ej!|iUvkjEyMAwvbqC5I#8(W_qY1%kWF^RMU#$=*j5yq8N$YGMC z9C9(W6bKPXzOP~uN2eHaSQ>I#%Sww_Wl}9wW-V=9ThK`8m+Ou>Tk5sSrqY-|R^%im z3D+o|=&|rZX_kEAG$z*xp=8Wt{Tf(S+5Gp<4V`JMiPU4K@ zkPB<-`F7wRTPM0!lqNXs#baZK5gXksBZv}qEa*H^xOvt|DE3Y-kxZdECzzN}S`x>E-#mDqDzOt<-hrs0?8RL137+VcS5=0Bn_T z_zfiNmEMWE)OJo7%4wzylD}b?7JRKWD{_%_!Ze~`4)c{#FMb-=voEIn7x*2Wl~(C& zr7kBdEpkNm)@b&@X>{yt!>@8lGm=BjYlNl^PZ<>LmL?*97!l<%yOVEOnuy>F4Cxv} zQ07|Tw81iCk)o)_d`RL$PZc1BD8 zSp-(=7`h=b+#G+)-)imQARRb68>Nd3jNr&NEeDu^7Xa5ZF$kQ%1S9M$kTB8?ov@GK z(wbB0>}l=mvC))vR|ua8zrB|bwk;=6M#>XJc^c_|JIEH)G5)^zI9EDf;j{=vTQZf0 znX%DPb|AsFd!tLNpXRDEPB_!_tzSXbvC)8jn?!x0R1BJzN5i#>>Zqu(FufvqJkjUE zsWQ9RC!)cUbjsFrdaJx8d9zktvTZ}81&rALlu4iSloOg57>M%-l{JTZRp%iFc z-;^p3x+dIq$HU0K1xXO8eAt%{U++{V?4l^!n{cjI5{|72H!niQbI6A{r|Kh&&Qf7v zA}6V9S21t{*(`}xYAqCl*JZ&gnfYL<{<4Dx1|WpK4_wQ~ zzz=-~1aKq$=n&U%4d3AqzwVdx_y zfM#Rhq6G$F2tyDc>VW_4^sFk3^sCxWMxX5lLwj0BE@m5ZP&D+V~_0orA9s@7?iH zEABc>k5O}@^p50j(jviA)yfYIY*|`lSv|ut+lw1R+iE?>=VVDsq?pH6v)ng_wv_zZ z2fO&to7h45hcEH^9!oyf7`L80#u2f9P3-#?@LX#F+=c4{h+P86$i{Htp&(qGykPtp zV!Y1!-3(tP{!0Q;`>%g_B~gUP*FA4NQQq3*M14;X%4?-w@6gZ-lg?dLRgW&og5#UtvsE0Xk$N`vRIs_Y$QlZ=fqT>b z3$@9yCG*CR-wb>)vq`zWaUrIt|1Lgu^90PYXw`caOqUds{wog77IOJ91TzK(5S?nW zfs(gGbjx^V-Z#pIM}<2EE#GE2VHOoz4HU)iu`C!6jtv>1CI|XR7ZssOIPEmn%2z^> z{ElgQG*(|hO^<#6P)h>@6aWAK2mtk}6O&vAlLPgt6O-}>HwpEs6ItiSuUsONG6*go t^{NwD0{TU?ZU6uPUI73A2mk;80000000000q=8hEe+U}}=m!7*004X7E;s-H delta 1716 zcmV;l221&+5ugzbP)h>@6aWAK2mmjD5U~vi0SPaF5LpYyTC*LK9sw4AS#R4o5Pr|E z5Y%Uxx*SV^>|&d=i(;F)h?B+cQ$bNwLqyk#lvDTDFR9BqeKg6U$tDkhG$e<^neQ78 zX*qAdhk>-lDJ5|Iy zPvZ0&5Dy^0YaAG$)TRS}6sK60a_L+)jiO#=0>aCOCzR zTT}JdZEK=UWhpC6Fx!J2u*Zn4Zkk|3Fuf2SET88xRcp-}U+N~|GoCL$pTGZnef8V* z$K~hFbbGXM9i`ctIypvlV;zlX926|A4wm*BtY08ljaI?BlGLEfY9}C+EqxKJ3+$7q z?F}bu$@55OTUrKxO&<62MJ`S~|Lp4GLzyl3TPt1NJruf$82qk8 z^o`t!y3lrkDN0F_8zkPL8)vN6nq(=@I&K^gH-+gYSI=L;&GM@%{%otGv(ze_ovTYR zjk6TtgEgvsaDtAVZTOWgX-0C$d5zGt;VFV5-I0g~BOpwFWOw{Mi6b6-jv-m12#Q>* z7;Uf&Xmdb2zB|LdC3qMI5|Ex_@K24G6nq|sgJQo2GRk(G_PCJIE68XZFZ3DWMN?lA zUMLp(-G38$qYC|N*nhpSKUvhxD(Zhc$EfQsDe8APSd-{+qu%V=s}@V6&f_qFDHEmW zRvX$1bD*q$>l*S;OesHp3fst!yap~RU|JNK9J!Q1VLeMTd^D(*@0NRmCI2h{%W)Ll z;t+0+zr}k#_IQjAoSi}8BA}WoG%QnBJX6JrX<|!(hVChv?OBG3tm#ZgeE=8MoC#+y zDqlOGDeaEnKI4A-C=je`hMgNJP7uXur0*b|GY9;Cb@^$P>wM$Inaj(Pg*ePOprh7vtAHLoxP1r|KdNAS4SwT2j6K<8cl%k@Cs%=n5w@l{Z=6if=hmXXhm6ofoU45i!@z<_6#Z}w2%U4Q$v~B z-l^_d-qgj~ZW7kM-_6708PziMX|{!*z+8O+!^!Gph#ibL?GtFG^B9xtafZ#U#h*FSf_RW(Sf)F{i3FEHhcVmRG`GpR&55dZiZ*2g@5 z@mQ7X+JnpWr#}M@?w{4_fQCkIM`7h zWTZV&ceT>tR_=~L%f~ECf^5_@KwjcKmIVVs2Z#tYInYNs-x11$(@tZpe8m-s@0b=R zPW~0t;^bdYO9KQH00008055uYc2G+N1^@s600RI60H*)| K0OJP$0002;SSeQk diff --git a/dev-examples/reactions/sbml.xml b/dev-examples/reactions/reactions_example.xml similarity index 87% rename from dev-examples/reactions/sbml.xml rename to dev-examples/reactions/reactions_example.xml index a2e7c741..529898c2 100644 --- a/dev-examples/reactions/sbml.xml +++ b/dev-examples/reactions/reactions_example.xml @@ -2,22 +2,22 @@ - - + + - + - - + + - + - + - - + + @@ -47,7 +47,7 @@ - + @@ -56,31 +56,31 @@ - + - + - + - + - + - + - + @@ -88,7 +88,7 @@ - + Vessel 1 10.0 @@ -102,7 +102,7 @@ - + Enzyme MTEY @@ -117,7 +117,7 @@ - + Substrate @@ -127,7 +127,7 @@ - + Product @@ -136,10 +136,10 @@ - + - + @@ -150,10 +150,10 @@ - + - + @@ -179,8 +179,8 @@ - + diff --git a/dev-examples/sbml_export_odes.py b/dev-examples/sbml_export_odes.py index 034e9d0f..11e3b57e 100644 --- a/dev-examples/sbml_export_odes.py +++ b/dev-examples/sbml_export_odes.py @@ -51,6 +51,7 @@ "s1'(t) = kcat * E_tot * s0(t) / (K_m + s0(t))", "E_tot = 100", unit_mapping={"kcat": 1 / s, "K_m": mM, "E_tot": mM}, + enzmldoc=doc, ) doc.measurements += pe.read_excel( @@ -69,5 +70,12 @@ meas.temperature_unit = K meas.ph = 7.0 -to_sbml(doc, out="./dev-examples/odes/ode_example.omex") -pe.write_enzymeml(doc=doc, path="./dev-examples/odes/enzymeml.json") +# Write sbml doc to file +with open("./dev-examples/odes/odes_example.xml", "w") as file: + file.write(to_sbml(doc)[0]) + +# Write to omex file +doc.to_sbml("./dev-examples/odes/odes_example.omex") + +# Write to EnzymeML JSON file +pe.write_enzymeml(self=doc, path="./dev-examples/odes/enzymeml.json") diff --git a/dev-examples/sbml_export_reactions.py b/dev-examples/sbml_export_reactions.py index 030aa9d1..fc4c3c33 100644 --- a/dev-examples/sbml_export_reactions.py +++ b/dev-examples/sbml_export_reactions.py @@ -32,6 +32,7 @@ reaction.kinetic_law = peq.build_equation( "kcat * p0(t) * s0(t) / ( K_m + s0(t) )", unit_mapping={"kcat": 1 / s, "K_m": mM}, + enzmldoc=doc, ) doc.reactions += [reaction] @@ -52,5 +53,12 @@ meas.temperature_unit = K meas.ph = 7.0 -to_sbml(doc, out="./dev-examples/reactions/reactions_example.omex") -pe.write_enzymeml(doc=doc, path="./dev-examples/reactions/enzymeml.json") +# Write sbml doc to file +with open("./dev-examples/reactions/reactions_example.xml", "w") as file: + file.write(to_sbml(doc)[0]) + +# Write to omex file +doc.to_sbml("./dev-examples/reactions/reactions_example.omex") + +# Write to EnzymeML JSON file +pe.write_enzymeml(self=doc, path="./dev-examples/reactions/enzymeml.json") diff --git a/dev-examples/sbml_import_odes.py b/dev-examples/sbml_import_odes.py index a78dfcf3..e2aeaccd 100644 --- a/dev-examples/sbml_import_odes.py +++ b/dev-examples/sbml_import_odes.py @@ -2,8 +2,11 @@ import rich -from pyenzyme.sbml import read_sbml +import pyenzyme as pe +from pyenzyme.tools import to_dict_wo_json_ld -doc = read_sbml(Path("./dev-examples/odes/ode_example.omex")) +doc = pe.EnzymeMLDocument.from_sbml( + path=Path("./dev-examples/reactions/reactions_example.omex") +) -rich.print(doc) +rich.print(to_dict_wo_json_ld(doc)) diff --git a/dev-examples/sbml_import_reactions.py b/dev-examples/sbml_import_reactions.py index 8c47df7a..e2aeaccd 100644 --- a/dev-examples/sbml_import_reactions.py +++ b/dev-examples/sbml_import_reactions.py @@ -2,8 +2,11 @@ import rich -from pyenzyme.sbml import read_sbml +import pyenzyme as pe +from pyenzyme.tools import to_dict_wo_json_ld -doc = read_sbml(Path("./dev-examples/reactions/reactions_example.omex")) +doc = pe.EnzymeMLDocument.from_sbml( + path=Path("./dev-examples/reactions/reactions_example.omex") +) -rich.print(doc) +rich.print(to_dict_wo_json_ld(doc)) From 978e100ef734f5a6d06361aeba2268d736f0c36c Mon Sep 17 00:00:00 2001 From: Jan Range Date: Mon, 19 Aug 2024 21:25:39 +0200 Subject: [PATCH 040/172] attach readers and writers to model class --- pyenzyme/__init__.py | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/pyenzyme/__init__.py b/pyenzyme/__init__.py index 5006ef40..2dee72ed 100644 --- a/pyenzyme/__init__.py +++ b/pyenzyme/__init__.py @@ -1,28 +1,32 @@ from __future__ import annotations import json -from rich import print from pathlib import Path +from rich import print + from .model import * # noqa: F403 -from .sbml import to_sbml # noqa: F401 +from .sbml import to_sbml, read_sbml # noqa: F401 from .tabular import to_pandas, read_csv, read_excel # noqa: F401 __all__ = [ - "load_enzymeml", + "read_enzymeml", "write_enzymeml", "to_sbml", "to_pandas", ] -def load_enzymeml(path: str) -> EnzymeMLDocument: # noqa: F405 +def read_enzymeml(cls, path: str) -> EnzymeMLDocument: # noqa: F405 with open(path) as f: - return EnzymeMLDocument.model_validate_json(f.read()) # noqa: F405 + return cls.model_validate_json(f.read()) # noqa: F405 -def write_enzymeml(doc: EnzymeMLDocument, path: Path | str | None = None): # noqa: F405 - data = json.loads(doc.model_dump_json(exclude_none=True, by_alias=True)) +def write_enzymeml( + self: EnzymeMLDocument, # noqa: F405 + path: Path | str | None = None, # noqa: F405 +): # noqa: F405 + data = json.loads(self.model_dump_json(exclude_none=True, by_alias=True)) data = json.dumps(sort_by_ld(data), indent=2) if path is None: @@ -39,6 +43,13 @@ def write_enzymeml(doc: EnzymeMLDocument, path: Path | str | None = None): # no print(f"\n EnzymeML document written to [green][bold]{path}[/bold][/green]\n") +# Add these methods to the EnzymeMLDocument class +EnzymeMLDocument.read = classmethod(read_enzymeml) # noqa: F405 +EnzymeMLDocument.write = write_enzymeml # noqa: F405 +EnzymeMLDocument.from_sbml = classmethod(read_sbml) # noqa: F405 +EnzymeMLDocument.to_sbml = to_sbml # noqa: F405 + + def sort_by_ld(d: dict) -> dict: keys = sorted(d.keys(), key=_pattern) data = {} From ec497a5f436afb48d5553be8e33abdb92377c0e2 Mon Sep 17 00:00:00 2001 From: Jan Range Date: Mon, 19 Aug 2024 21:26:00 +0200 Subject: [PATCH 041/172] add parameters to enzmldoc --- pyenzyme/equations/_math.py | 67 +++++++++++++++++-------------------- 1 file changed, 31 insertions(+), 36 deletions(-) diff --git a/pyenzyme/equations/_math.py b/pyenzyme/equations/_math.py index 9c3f264d..5108368a 100644 --- a/pyenzyme/equations/_math.py +++ b/pyenzyme/equations/_math.py @@ -25,12 +25,14 @@ def build_equations( *equations: str, unit_mapping: dict[str, UnitDefinition] | None = None, + enzmldoc: EnzymeMLDocument, ) -> list[Equation]: """Builds a list of Equation objects from a list of string representations. Args: *equations (list[str]): A list of string representations of the ODEs unit_mapping: A dictionary mapping parameter names to their respective + enzmldoc (EnzymeMLDocument): The EnzymeMLDocument to add the parameters to Returns: list[ODE]: A list of ODE objects @@ -44,11 +46,19 @@ def build_equations( assert all(isinstance(eq, str) for eq in equations), "All equations must be strings" - return [build_equation(eq, unit_mapping) for eq in equations] # type: ignore + return [ + build_equation( + equation=eq, + unit_mapping=unit_mapping, + enzmldoc=enzmldoc, + ) + for eq in equations + ] # type: ignore def build_equation( equation: str, + enzmldoc: EnzymeMLDocument, unit_mapping: dict[str, UnitDefinition] | None = None, ) -> Equation: """Builds an equation object from a string @@ -60,6 +70,7 @@ def build_equation( Args: equation (str): The equation to be converted into an ODE object unit_mapping: A dictionary mapping parameter names to their respective units + enzmldoc (EnzymeMLDocument): The EnzymeMLDocument to add the parameters to Returns: ODE: The ODE object @@ -111,16 +122,16 @@ def build_equation( equation=str(right), variables=[_create_variable(name) for name in variables], equation_type=equation_type, - parameters=[ - _create_parameter(name, unit_mapping.get(name)) for name in parameters - ], ) - # Left out for now, but could be re-used by decision upon change to include - # parameters on the top-level document. - # if enzmldoc: - # [_add_to_parameters(enzmldoc, param.name, param.id) for param in eq.parameters] - # _add_units_to_parameters(enzmldoc, unit_mapping) + [ + _add_to_parameters( + enzmldoc, + param, + unit_mapping.get(param), + ) + for param in parameters + ] return eq @@ -158,38 +169,22 @@ def _create_variable(name: str) -> Variable: return Variable(id=name, name=name, symbol=name) -def _add_to_parameters(enzmldoc: EnzymeMLDocument, name: str, id: str): +def _add_to_parameters( + enzmldoc: EnzymeMLDocument, + name: str, + unit: UnitDefinition, +): """Adds a parameter to the EnzymeMLDocument""" add_logger("ENZML") if enzmldoc.filter_parameters(name=name): logger.info(f"Parameter {name} already exists in EnzymeMLDocument. Skipping...") - return - enzmldoc.add_to_parameters(name=name, id=name) # type: ignore - - -def _add_units_to_parameters( - doc: EnzymeMLDocument, - unit_mapping: dict[str, UnitDefinition], -): - """Adds units to the parameters in the EnzymeMLDocument""" - - add_logger("ENZML") - - has_error = False - - for param, unit in unit_mapping.items(): - if unit.__class__.__name__ != "UnitDefinition": - logger.error(f"Unit {unit} is not a UnitDefinition object. Skipping...") - has_error = True - continue - - doc.filter_parameters(name=param)[0].unit = unit - - if has_error: - raise ValueError( - "Assigning units to parameters failed. Check the logs for more info." - ) + enzmldoc.add_to_parameters( + name=name, + id=name, + symbol=name, + unit=unit, + ) # type: ignore From 165eeec06105e61bf07d602b477ef905e38a2a95 Mon Sep 17 00:00:00 2001 From: Jan Range Date: Mon, 19 Aug 2024 21:26:07 +0200 Subject: [PATCH 042/172] move params to root --- pyenzyme/model.py | 714 ++++++++++++++++++++-------------------------- 1 file changed, 311 insertions(+), 403 deletions(-) diff --git a/pyenzyme/model.py b/pyenzyme/model.py index 8a8d8479..7a48ec10 100644 --- a/pyenzyme/model.py +++ b/pyenzyme/model.py @@ -1,15 +1,18 @@ ## This is a generated file. Do not modify it manually! from __future__ import annotations -from pydantic import BaseModel, Field, ConfigDict -from typing import Optional, Generic, TypeVar + from enum import Enum +from typing import Optional, Generic, TypeVar from uuid import uuid4 +from pydantic import BaseModel, Field, ConfigDict + # Filter Wrapper definition used to filter a list of objects # based on their attributes Cls = TypeVar("Cls") + class FilterWrapper(Generic[Cls]): """Wrapper class to filter a list of objects based on their attributes""" @@ -46,7 +49,8 @@ def add_namespace(obj, prefix: str | None, iri: str | None): elif iri and prefix is None: raise ValueError("If iri is provided, prefix must also be provided") - obj.ld_context[prefix] = iri # type: ignore + obj.ld_context[prefix] = iri # type: ignore + def validate_prefix(term: str | dict, prefix: str): """Validates that a term is prefixed with a given prefix @@ -64,13 +68,14 @@ def validate_prefix(term: str | dict, prefix: str): elif isinstance(term, str) and not term.startswith(prefix + ":"): raise ValueError(f"Term {term} is not prefixed with {prefix}") + # Model Definitions -class EnzymeMLDocument(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore +class EnzymeMLDocument(BaseModel): + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment=True, + ) # type: ignore name: str references: list[str] = Field(default_factory=list) @@ -84,24 +89,25 @@ class EnzymeMLDocument(BaseModel): reactions: list[Reaction] = Field(default_factory=list) measurements: list[Measurement] = Field(default_factory=list) equations: list[Equation] = Field(default_factory=list) + parameters: list[Parameter] = Field(default_factory=list) # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:EnzymeMLDocument/" + str(uuid4()) + default_factory=lambda: "enzml:EnzymeMLDocument/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory = lambda: [ + default_factory=lambda: [ "enzml:EnzymeMLDocument", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory = lambda: { + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "name": "schema:title", "references": { "@id": "schema:citation", @@ -110,7 +116,7 @@ class EnzymeMLDocument(BaseModel): "created": "schema:dateCreated", "modified": "schema:dateModified", "creators": "schema:creator", - } + }, ) def filter_creators(self, **kwargs) -> list[Creator]: @@ -209,13 +215,24 @@ def filter_equations(self, **kwargs) -> list[Equation]: return FilterWrapper[Equation](self.equations, **kwargs).filter() + def filter_parameters(self, **kwargs) -> list[Parameter]: + """Filters the parameters attribute based on the given kwargs + + Args: + **kwargs: The attributes to filter by. + + Returns: + list[Parameter]: The filtered list of Parameter objects + """ + + return FilterWrapper[Parameter](self.parameters, **kwargs).filter() def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -237,7 +254,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert ( + attr in self.model_fields + ), f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -246,10 +265,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -276,7 +292,6 @@ def add_type_term( add_namespace(self, prefix, iri) self.ld_type.append(term) - def add_to_creators( self, given_name: str, @@ -284,29 +299,22 @@ def add_to_creators( mail: str, **kwargs, ): - params = { - "given_name": given_name, - "family_name": family_name, - "mail": mail - } + params = {"given_name": given_name, "family_name": family_name, "mail": mail} if "id" in kwargs: params["id"] = kwargs["id"] - self.creators.append( - Creator(**params) - ) + self.creators.append(Creator(**params)) return self.creators[-1] - def add_to_vessels( self, id: str, name: str, volume: float, unit: UnitDefinition, - constant: bool= True, + constant: bool = True, **kwargs, ): params = { @@ -314,30 +322,27 @@ def add_to_vessels( "name": name, "volume": volume, "unit": unit, - "constant": constant + "constant": constant, } if "id" in kwargs: params["id"] = kwargs["id"] - self.vessels.append( - Vessel(**params) - ) + self.vessels.append(Vessel(**params)) return self.vessels[-1] - def add_to_proteins( self, id: str, name: str, - constant: bool= False, - sequence: Optional[str]= None, - vessel_id: Optional[str]= None, - ecnumber: Optional[str]= None, - organism: Optional[str]= None, - organism_tax_id: Optional[str]= None, - references: list[str]= [], + constant: bool = False, + sequence: Optional[str] = None, + vessel_id: Optional[str] = None, + ecnumber: Optional[str] = None, + organism: Optional[str] = None, + organism_tax_id: Optional[str] = None, + references: list[str] = [], **kwargs, ): params = { @@ -349,54 +354,48 @@ def add_to_proteins( "ecnumber": ecnumber, "organism": organism, "organism_tax_id": organism_tax_id, - "references": references + "references": references, } if "id" in kwargs: params["id"] = kwargs["id"] - self.proteins.append( - Protein(**params) - ) + self.proteins.append(Protein(**params)) return self.proteins[-1] - def add_to_complexes( self, id: str, name: str, - constant: bool= False, - participants: list[str]= [], + constant: bool = False, + participants: list[str] = [], **kwargs, ): params = { "id": id, "name": name, "constant": constant, - "participants": participants + "participants": participants, } if "id" in kwargs: params["id"] = kwargs["id"] - self.complexes.append( - Complex(**params) - ) + self.complexes.append(Complex(**params)) return self.complexes[-1] - def add_to_small_molecules( self, id: str, name: str, - constant: bool= False, - vessel_id: Optional[str]= None, - canonical_smiles: Optional[str]= None, - inchi: Optional[str]= None, - inchikey: Optional[str]= None, - references: list[str]= [], + constant: bool = False, + vessel_id: Optional[str] = None, + canonical_smiles: Optional[str] = None, + inchi: Optional[str] = None, + inchikey: Optional[str] = None, + references: list[str] = [], **kwargs, ): params = { @@ -407,27 +406,24 @@ def add_to_small_molecules( "canonical_smiles": canonical_smiles, "inchi": inchi, "inchikey": inchikey, - "references": references + "references": references, } if "id" in kwargs: params["id"] = kwargs["id"] - self.small_molecules.append( - SmallMolecule(**params) - ) + self.small_molecules.append(SmallMolecule(**params)) return self.small_molecules[-1] - def add_to_reactions( self, id: str, name: str, - reversible: bool= False, - kinetic_law: Optional[Equation]= None, - species: list[ReactionElement]= [], - modifiers: list[str]= [], + reversible: bool = False, + kinetic_law: Optional[Equation] = None, + species: list[ReactionElement] = [], + modifiers: list[str] = [], **kwargs, ): params = { @@ -436,28 +432,25 @@ def add_to_reactions( "reversible": reversible, "kinetic_law": kinetic_law, "species": species, - "modifiers": modifiers + "modifiers": modifiers, } if "id" in kwargs: params["id"] = kwargs["id"] - self.reactions.append( - Reaction(**params) - ) + self.reactions.append(Reaction(**params)) return self.reactions[-1] - def add_to_measurements( self, id: str, name: str, - species_data: list[MeasurementData]= [], - group_id: Optional[str]= None, - ph: Optional[float]= None, - temperature: Optional[float]= None, - temperature_unit: Optional[UnitDefinition]= None, + species_data: list[MeasurementData] = [], + group_id: Optional[str] = None, + ph: Optional[float] = None, + temperature: Optional[float] = None, + temperature_unit: Optional[UnitDefinition] = None, **kwargs, ): params = { @@ -467,26 +460,22 @@ def add_to_measurements( "group_id": group_id, "ph": ph, "temperature": temperature, - "temperature_unit": temperature_unit + "temperature_unit": temperature_unit, } if "id" in kwargs: params["id"] = kwargs["id"] - self.measurements.append( - Measurement(**params) - ) + self.measurements.append(Measurement(**params)) return self.measurements[-1] - def add_to_equations( self, equation: str, equation_type: EquationType, - species_id: Optional[str]= None, - variables: list[Variable]= [], - parameters: list[Parameter]= [], + species_id: Optional[str] = None, + variables: list[Variable] = [], **kwargs, ): params = { @@ -494,23 +483,54 @@ def add_to_equations( "equation_type": equation_type, "species_id": species_id, "variables": variables, - "parameters": parameters } if "id" in kwargs: params["id"] = kwargs["id"] - self.equations.append( - Equation(**params) - ) + self.equations.append(Equation(**params)) return self.equations[-1] -class Creator(BaseModel): + def add_to_parameters( + self, + id: str, + name: str, + symbol: str, + value: Optional[float] = None, + unit: Optional[UnitDefinition] = None, + initial_value: Optional[float] = None, + upper: Optional[float] = None, + lower: Optional[float] = None, + stderr: Optional[float] = None, + constant: Optional[bool] = True, + **kwargs, + ): + params = { + "id": id, + "name": name, + "symbol": symbol, + "value": value, + "unit": unit, + "initial_value": initial_value, + "upper": upper, + "lower": lower, + "stderr": stderr, + "constant": constant, + } + + if "id" in kwargs: + params["id"] = kwargs["id"] - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore + self.parameters.append(Parameter(**params)) + + return self.parameters[-1] + + +class Creator(BaseModel): + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment=True, + ) # type: ignore given_name: str family_name: str @@ -519,33 +539,30 @@ class Creator(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Creator/" + str(uuid4()) + default_factory=lambda: "enzml:Creator/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory = lambda: [ - "enzml:Creator","schema:person" - ], + default_factory=lambda: ["enzml:Creator", "schema:person"], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory = lambda: { + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "given_name": "schema:givenName", "family_name": "schema:familyName", "mail": "schema:email", - } + }, ) - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -567,7 +584,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert ( + attr in self.model_fields + ), f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -576,10 +595,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -608,10 +624,9 @@ def add_type_term( class Vessel(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment=True, + ) # type: ignore id: str name: str @@ -622,36 +637,33 @@ class Vessel(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Vessel/" + str(uuid4()) + default_factory=lambda: "enzml:Vessel/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory = lambda: [ - "enzml:Vessel","OBO:OBI_0400081" - ], + default_factory=lambda: ["enzml:Vessel", "OBO:OBI_0400081"], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory = lambda: { + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": { "@id": "schema:identifier", "@type": "@id", }, "name": "schema:name", "volume": "OBO:OBI_0002139", - } + }, ) - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -673,7 +685,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert ( + attr in self.model_fields + ), f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -682,10 +696,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -714,10 +725,9 @@ def add_type_term( class Protein(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment=True, + ) # type: ignore id: str name: str @@ -732,20 +742,18 @@ class Protein(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Protein/" + str(uuid4()) + default_factory=lambda: "enzml:Protein/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory = lambda: [ - "enzml:Protein","schema:Protein" - ], + default_factory=lambda: ["enzml:Protein", "schema:Protein"], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory = lambda: { + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": { "@type": "@id", }, @@ -763,16 +771,15 @@ class Protein(BaseModel): "@id": "schema:citation", "@type": "@id", }, - } + }, ) - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -794,7 +801,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert ( + attr in self.model_fields + ), f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -803,10 +812,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -835,10 +841,9 @@ def add_type_term( class Complex(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment=True, + ) # type: ignore id: str name: str @@ -848,20 +853,20 @@ class Complex(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Complex/" + str(uuid4()) + default_factory=lambda: "enzml:Complex/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory = lambda: [ + default_factory=lambda: [ "enzml:Complex", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory = lambda: { + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": { "@id": "schema:identifier", "@type": "@id", @@ -870,16 +875,15 @@ class Complex(BaseModel): "participants": { "@type": "@id", }, - } + }, ) - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -901,7 +905,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert ( + attr in self.model_fields + ), f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -910,10 +916,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -942,10 +945,9 @@ def add_type_term( class SmallMolecule(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment=True, + ) # type: ignore id: str name: str @@ -959,20 +961,20 @@ class SmallMolecule(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:SmallMolecule/" + str(uuid4()) + default_factory=lambda: "enzml:SmallMolecule/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory = lambda: [ + default_factory=lambda: [ "enzml:SmallMolecule", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory = lambda: { + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": { "@id": "schema:identifier", "@type": "@id", @@ -986,16 +988,15 @@ class SmallMolecule(BaseModel): "@id": "schema:citation", "@type": "@id", }, - } + }, ) - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -1017,7 +1018,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert ( + attr in self.model_fields + ), f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1026,10 +1029,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1058,10 +1058,9 @@ def add_type_term( class Reaction(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment=True, + ) # type: ignore id: str name: str @@ -1073,20 +1072,20 @@ class Reaction(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Reaction/" + str(uuid4()) + default_factory=lambda: "enzml:Reaction/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory = lambda: [ + default_factory=lambda: [ "enzml:Reaction", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory = lambda: { + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": { "@id": "schema:identifier", "@type": "@id", @@ -1094,7 +1093,7 @@ class Reaction(BaseModel): "modifiers": { "@type": "@id", }, - } + }, ) def filter_species(self, **kwargs) -> list[ReactionElement]: @@ -1109,13 +1108,12 @@ def filter_species(self, **kwargs) -> list[ReactionElement]: return FilterWrapper[ReactionElement](self.species, **kwargs).filter() - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -1137,7 +1135,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert ( + attr in self.model_fields + ), f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1146,10 +1146,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1176,33 +1173,26 @@ def add_type_term( add_namespace(self, prefix, iri) self.ld_type.append(term) - def add_to_species( self, species_id: str, stoichiometry: float, **kwargs, ): - params = { - "species_id": species_id, - "stoichiometry": stoichiometry - } + params = {"species_id": species_id, "stoichiometry": stoichiometry} if "id" in kwargs: params["id"] = kwargs["id"] - self.species.append( - ReactionElement(**params) - ) + self.species.append(ReactionElement(**params)) return self.species[-1] class ReactionElement(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment=True, + ) # type: ignore species_id: str stoichiometry: float @@ -1210,33 +1200,32 @@ class ReactionElement(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:ReactionElement/" + str(uuid4()) + default_factory=lambda: "enzml:ReactionElement/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory = lambda: [ + default_factory=lambda: [ "enzml:ReactionElement", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory = lambda: { + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "species_id": { "@type": "@id", }, - } + }, ) - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -1258,7 +1247,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert ( + attr in self.model_fields + ), f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1267,10 +1258,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1299,38 +1287,36 @@ def add_type_term( class Equation(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment=True, + ) # type: ignore equation: str equation_type: EquationType species_id: Optional[str] = Field(default=None) variables: list[Variable] = Field(default_factory=list) - parameters: list[Parameter] = Field(default_factory=list) # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Equation/" + str(uuid4()) + default_factory=lambda: "enzml:Equation/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory = lambda: [ + default_factory=lambda: [ "enzml:Equation", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory = lambda: { + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "species_id": { "@type": "@id", }, - } + }, ) def filter_variables(self, **kwargs) -> list[Variable]: @@ -1345,25 +1331,12 @@ def filter_variables(self, **kwargs) -> list[Variable]: return FilterWrapper[Variable](self.variables, **kwargs).filter() - def filter_parameters(self, **kwargs) -> list[Parameter]: - """Filters the parameters attribute based on the given kwargs - - Args: - **kwargs: The attributes to filter by. - - Returns: - list[Parameter]: The filtered list of Parameter objects - """ - - return FilterWrapper[Parameter](self.parameters, **kwargs).filter() - - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -1385,7 +1358,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert ( + attr in self.model_fields + ), f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1394,10 +1369,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1424,7 +1396,6 @@ def add_type_term( add_namespace(self, prefix, iri) self.ld_type.append(term) - def add_to_variables( self, id: str, @@ -1432,63 +1403,20 @@ def add_to_variables( symbol: str, **kwargs, ): - params = { - "id": id, - "name": name, - "symbol": symbol - } + params = {"id": id, "name": name, "symbol": symbol} if "id" in kwargs: params["id"] = kwargs["id"] - self.variables.append( - Variable(**params) - ) + self.variables.append(Variable(**params)) return self.variables[-1] - def add_to_parameters( - self, - id: str, - name: str, - symbol: str, - value: Optional[float]= None, - unit: Optional[UnitDefinition]= None, - initial_value: Optional[float]= None, - upper: Optional[float]= None, - lower: Optional[float]= None, - stderr: Optional[float]= None, - constant: Optional[bool]= True, - **kwargs, - ): - params = { - "id": id, - "name": name, - "symbol": symbol, - "value": value, - "unit": unit, - "initial_value": initial_value, - "upper": upper, - "lower": lower, - "stderr": stderr, - "constant": constant - } - - if "id" in kwargs: - params["id"] = kwargs["id"] - - self.parameters.append( - Parameter(**params) - ) - - return self.parameters[-1] - class Variable(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment=True, + ) # type: ignore id: str name: str @@ -1497,31 +1425,30 @@ class Variable(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Variable/" + str(uuid4()) + default_factory=lambda: "enzml:Variable/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory = lambda: [ + default_factory=lambda: [ "enzml:Variable", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory = lambda: { + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": "schema:identifier", - } + }, ) - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -1543,7 +1470,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert ( + attr in self.model_fields + ), f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1552,10 +1481,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1584,10 +1510,9 @@ def add_type_term( class Parameter(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment=True, + ) # type: ignore id: str name: str @@ -1603,34 +1528,33 @@ class Parameter(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Parameter/" + str(uuid4()) + default_factory=lambda: "enzml:Parameter/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory = lambda: [ + default_factory=lambda: [ "enzml:Parameter", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory = lambda: { + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": { "@id": "schema:identifier", "@type": "@id", }, - } + }, ) - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -1652,7 +1576,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert ( + attr in self.model_fields + ), f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1661,10 +1587,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1693,10 +1616,9 @@ def add_type_term( class Measurement(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment=True, + ) # type: ignore id: str name: str @@ -1709,20 +1631,20 @@ class Measurement(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Measurement/" + str(uuid4()) + default_factory=lambda: "enzml:Measurement/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory = lambda: [ + default_factory=lambda: [ "enzml:Measurement", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory = lambda: { + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": { "@id": "schema:identifier", "@type": "@id", @@ -1730,7 +1652,7 @@ class Measurement(BaseModel): "group_id": { "@type": "@id", }, - } + }, ) def filter_species_data(self, **kwargs) -> list[MeasurementData]: @@ -1745,13 +1667,12 @@ def filter_species_data(self, **kwargs) -> list[MeasurementData]: return FilterWrapper[MeasurementData](self.species_data, **kwargs).filter() - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -1773,7 +1694,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert ( + attr in self.model_fields + ), f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1782,10 +1705,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1812,7 +1732,6 @@ def add_type_term( add_namespace(self, prefix, iri) self.ld_type.append(term) - def add_to_species_data( self, species_id: str, @@ -1820,10 +1739,10 @@ def add_to_species_data( data_unit: UnitDefinition, time_unit: UnitDefinition, data_type: DataTypes, - prepared: Optional[float]= None, - data: list[float]= [], - time: list[float]= [], - is_simulated: bool= False, + prepared: Optional[float] = None, + data: list[float] = [], + time: list[float] = [], + is_simulated: bool = False, **kwargs, ): params = { @@ -1835,24 +1754,21 @@ def add_to_species_data( "prepared": prepared, "data": data, "time": time, - "is_simulated": is_simulated + "is_simulated": is_simulated, } if "id" in kwargs: params["id"] = kwargs["id"] - self.species_data.append( - MeasurementData(**params) - ) + self.species_data.append(MeasurementData(**params)) return self.species_data[-1] class MeasurementData(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment=True, + ) # type: ignore species_id: str initial: float @@ -1867,33 +1783,32 @@ class MeasurementData(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:MeasurementData/" + str(uuid4()) + default_factory=lambda: "enzml:MeasurementData/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory = lambda: [ + default_factory=lambda: [ "enzml:MeasurementData", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory = lambda: { + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "species_id": { "@type": "@id", }, - } + }, ) - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -1915,7 +1830,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert ( + attr in self.model_fields + ), f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1924,10 +1841,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1956,10 +1870,9 @@ def add_type_term( class UnitDefinition(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment=True, + ) # type: ignore id: Optional[str] = Field(default=None) name: Optional[str] = Field(default=None) @@ -1968,21 +1881,21 @@ class UnitDefinition(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:UnitDefinition/" + str(uuid4()) + default_factory=lambda: "enzml:UnitDefinition/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory = lambda: [ + default_factory=lambda: [ "enzml:UnitDefinition", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory = lambda: { + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", - } + "schema": "https://schema.org/", + }, ) def filter_base_units(self, **kwargs) -> list[BaseUnit]: @@ -1997,13 +1910,12 @@ def filter_base_units(self, **kwargs) -> list[BaseUnit]: return FilterWrapper[BaseUnit](self.base_units, **kwargs).filter() - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -2025,7 +1937,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert ( + attr in self.model_fields + ), f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -2034,10 +1948,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -2064,36 +1975,33 @@ def add_type_term( add_namespace(self, prefix, iri) self.ld_type.append(term) - def add_to_base_units( self, kind: UnitType, exponent: int, - multiplier: Optional[float]= None, - scale: Optional[float]= None, + multiplier: Optional[float] = None, + scale: Optional[float] = None, **kwargs, ): params = { "kind": kind, "exponent": exponent, "multiplier": multiplier, - "scale": scale + "scale": scale, } if "id" in kwargs: params["id"] = kwargs["id"] - self.base_units.append( - BaseUnit(**params) - ) + self.base_units.append(BaseUnit(**params)) return self.base_units[-1] -class BaseUnit(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore +class BaseUnit(BaseModel): + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment=True, + ) # type: ignore kind: UnitType exponent: int @@ -2103,30 +2011,29 @@ class BaseUnit(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:BaseUnit/" + str(uuid4()) + default_factory=lambda: "enzml:BaseUnit/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory = lambda: [ + default_factory=lambda: [ "enzml:BaseUnit", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory = lambda: { + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", - } + "schema": "https://schema.org/", + }, ) - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -2148,7 +2055,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert ( + attr in self.model_fields + ), f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -2157,10 +2066,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -2194,6 +2100,7 @@ class EquationType(Enum): ODE = "ode" RATE_LAW = "rateLaw" + class DataTypes(Enum): ABSORBANCE = "http://purl.allotrope.org/ontologies/quality#AFQ_0000061" CONCENTRATION = "http://purl.obolibrary.org/obo/PATO_0000033" @@ -2202,6 +2109,7 @@ class DataTypes(Enum): PEAK_AREA = "http://purl.allotrope.org/ontologies/result#AFR_0001073" TRANSMITTANCE = "http://purl.allotrope.org/ontologies/result#AFR_0002261" + class UnitType(Enum): AMPERE = "ampere" AVOGADRO = "avogadro" @@ -2236,4 +2144,4 @@ class UnitType(Enum): TESLA = "tesla" VOLT = "volt" WATT = "watt" - WEBER = "weber" \ No newline at end of file + WEBER = "weber" From c2c68c31647a624d2df0cdfc2ac49efc898039c5 Mon Sep 17 00:00:00 2001 From: Jan Range Date: Mon, 19 Aug 2024 21:26:38 +0200 Subject: [PATCH 043/172] adapt to parameter loc and cast `str` to `float` --- pyenzyme/sbml/parser.py | 70 +++++++++++++++++++++-------------------- 1 file changed, 36 insertions(+), 34 deletions(-) diff --git a/pyenzyme/sbml/parser.py b/pyenzyme/sbml/parser.py index 815797e7..4a67b63e 100644 --- a/pyenzyme/sbml/parser.py +++ b/pyenzyme/sbml/parser.py @@ -1,12 +1,12 @@ from __future__ import annotations import math -import re import xml.etree.ElementTree as ET from pathlib import Path from typing import IO import libsbml as sbml # type: ignore +import rich from loguru import logger # type: ignore import pyenzyme as pe @@ -20,12 +20,21 @@ ENZYMEML_NS = "https://www.enzymeml.org/v2" -def read_sbml(path: Path | str): +def read_sbml(cls, path: Path | str): + """ + Reads an SBML file and initializes an EnzymeML document. + + Args: + cls: The class to instantiate the EnzymeML document. + path (Path | str): The path to the OMEX archive containing the SBML file. + + Returns: + An initialized EnzymeML document with extracted units, species, vessels, equations, parameters, reactions, and measurements. + """ add_logger(name="SBML") # Create globals to use in the functions global units - global parameters global path_prefix global tsv_path @@ -34,7 +43,7 @@ def read_sbml(path: Path | str): # Read the SBML file and init an EnzymeML document model = _init_and_read_sbml(open(sbml_path)) - enzmldoc = pe.EnzymeMLDocument(name=model.getName()) + enzmldoc = cls(name=model.getName()) # Extract units to map these to the EnzymeML entities units = { # type: ignore @@ -50,8 +59,8 @@ def read_sbml(path: Path | str): # Extract vessels enzmldoc.vessels = [_parse_vessel(comp) for comp in model.getListOfCompartments()] - # Extract equations from rules and initial assignments - parameters = [_parse_parameter(param) for param in model.getListOfParameters()] # type: ignore + # Extract equations and parameters + enzmldoc.parameters = [_parse_parameter(param) for param in model.getListOfParameters()] # type: ignore enzmldoc.equations += [ _parse_equation(rule, pe.EquationType.INITIAL_ASSIGNMENT) for rule in model.getListOfInitialAssignments() @@ -233,7 +242,6 @@ def _parse_equation(rule: sbml.Rule, rule_type: pe.EquationType): equation_type=rule_type, equation=equation, species_id=species_id, - parameters=_extract_parameters(equation), variables=[pe.Variable(**annot) for annot in annots.get("variables", [])], ) @@ -259,12 +267,13 @@ def _parse_reaction(reaction: sbml.Reaction): reaction = pe.Reaction( id=reaction.getId(), name=reaction.getName(), - reactants=reactants, - products=products, + species=reactants + products, modifiers=modifiers, kinetic_law=kinetic_law, ) + rich.print(reaction) + return reaction @@ -281,36 +290,17 @@ def _parse_kinetic_law(reaction): if not kinetic_law: return None - formula = kinetic_law.getFormula() + annots = _parse_enzymeml_annotations("variables", kinetic_law.getAnnotationString()) kinetic_law = pe.Equation( - equation=formula, + equation=kinetic_law.getFormula(), equation_type=pe.EquationType.RATE_LAW, unit=M, # We need to set a default unit here, because SBML does not provide units for kinetic laws + variables=[pe.Variable(**annot) for annot in annots.get("variables", [])], ) - kinetic_law.parameters = _extract_parameters(formula) - return kinetic_law -def _extract_parameters(equation: str) -> list[pe.Parameter]: - """Extract the parameters from an equation.""" - - params = [] - for param in parameters: - if any( - _contains_param(equation, getattr(param, attr)) - for attr in ["id", "symbol", "name"] - ): - params.append(param) - - return params - - -def _contains_param(formula: str, param: str) -> bool: - return bool(re.search(rf"\b{param}\b", formula)) - - def _parse_measurements(model: sbml.Model): # Extract metadata from the model meas_metadata, file_path = _get_meas_metadata(model) @@ -335,18 +325,26 @@ def _assign_units_and_initials(meas_id, measurements, metadata): measurement = [m for m in measurements if m.id == meas_id][0] conditions = metadata.get("condition", {}) init_concs = metadata.get("speciesData", []) - measurement.temperature = conditions.get("temperature") + measurement.ph = _cast(conditions.get("ph"), float) + measurement.temperature = _cast(conditions.get("temperature"), float) measurement.temperature_unit = conditions.get("temperature_unit") for init_conc in init_concs: species_id = _get_species_id(init_conc) meas_data = _get_species_data(measurement, species_id) - meas_data.initial = init_conc.get("initial", 0.0) + meas_data.initial = float(init_conc.get("initial", 0.0)) meas_data.time_unit = init_conc["time_unit"] meas_data.data_unit = init_conc["data_unit"] +def _cast(value, data_type): + if value is None: + return None + + return data_type(value) + + def _get_species_id(init_conc): species_id = init_conc.get("species_id") assert species_id, "No species ID found in the EnzymeML data annotation" @@ -457,7 +455,11 @@ def _map_values(mappings, root, root_key=None): root=root, xml_key=xml_key, ): - data[root_key] = value + if root_key in data and len(value) == 1: + # Special case for conditions + data[root_key][0].update(value[0]) + else: + data[root_key] = value case str(): if value := _process_simple( From f1eeaf4a5ee651fb50a659add4bf1d8834459a8a Mon Sep 17 00:00:00 2001 From: Jan Range Date: Mon, 19 Aug 2024 21:26:47 +0200 Subject: [PATCH 044/172] adapt parameter change --- pyenzyme/sbml/serializer.py | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/pyenzyme/sbml/serializer.py b/pyenzyme/sbml/serializer.py index a2c87e2c..71251f84 100644 --- a/pyenzyme/sbml/serializer.py +++ b/pyenzyme/sbml/serializer.py @@ -39,7 +39,7 @@ def to_sbml( >> import pyenzyme as pe >> doc = pe.EnzymeMLDocument() >> [add entities to doc] - >> pe.to_sbml(doc, "example.xml") + >> to_sbml(doc, "example.xml") Args: enzmldoc (pe.EnzymeMLDocument): The EnzymeML document to convert. @@ -85,6 +85,9 @@ def to_sbml( if doc.measurements: _add_measurements(doc.measurements) + for parameter in enzmldoc.parameters: + _add_parameter(parameter) + if out is None: return libsbml.writeSBMLToString(sbmldoc), to_pandas(doc) @@ -264,10 +267,6 @@ def _add_rate_law(equation: pe.Equation, reac: libsbml.Reaction): law = reac.createKineticLaw() law.setMath(libsbml.parseL3Formula(equation.equation)) - for parameter in equation.parameters: - if not model.getParameter(parameter.id): - _add_parameter(pe.Parameter(**parameter.model_dump())) - if annot := _create_equation_annot(equation): law.setAnnotation(_xml.serialize_to_pretty_xml_string(annot)) @@ -329,10 +328,6 @@ def _add_equation(equation: pe.Equation): sbml_rule.setMath(libsbml.parseL3Formula(equation.equation)) - for parameter in equation.parameters: - if not model.getParameter(parameter.id): # type: ignore - _add_parameter(parameter) - if annot := _create_equation_annot(equation): sbml_rule.setAnnotation(_xml.serialize_to_pretty_xml_string(annot)) From 754787212bf8cce32c1e7d0ef4d48d605f5fa765 Mon Sep 17 00:00:00 2001 From: Jan Range Date: Mon, 19 Aug 2024 21:26:57 +0200 Subject: [PATCH 045/172] cast to float --- pyenzyme/tabular.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pyenzyme/tabular.py b/pyenzyme/tabular.py index a712ca9a..a8e5e55e 100644 --- a/pyenzyme/tabular.py +++ b/pyenzyme/tabular.py @@ -192,6 +192,7 @@ def from_pandas( Args: df (pd.DataFrame): The DataFrame to parse. + id (str): The ID of the measurement. data_unit (UnitDefinition): The unit of the data. time_unit (UnitDefinition): The unit of the time. data_type (DataTypes): The type of the data. Default is DataTypes.CONCENTRATION. @@ -247,7 +248,7 @@ def _create_single_measurement( time=time, data_unit=data_unit, time_unit=time_unit, - initial=species_data[0], + initial=float(species_data[0]), data_type=data_type, ) ) From 958b321889f27a12cc7627d26bd5741067d3dd9f Mon Sep 17 00:00:00 2001 From: Jan Range Date: Mon, 19 Aug 2024 21:27:09 +0200 Subject: [PATCH 046/172] add utility to strip ld keys --- pyenzyme/tools.py | 50 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/pyenzyme/tools.py b/pyenzyme/tools.py index dcea60f7..ee644ce1 100644 --- a/pyenzyme/tools.py +++ b/pyenzyme/tools.py @@ -7,6 +7,56 @@ import pyenzyme as pe +def to_dict_wo_json_ld(enzmldoc: pe.EnzymeMLDocument): + """Serialized to dict and strips JSON-LD fields from an EnzymeMLDocument. + + Please note, this function is intended for internal use only and should not be called directly. + For developers, if you intend to write tests and check the contents of an EnzymeMLDocument, + it is recommended to use this method instead of `model_dump()` to avoid JSON-LD fields, + since these contain IDs that are not deterministic and may cause tests to fail. + + Args: + enzmldoc (EnzymeMLDocument): The EnzymeMLDocument to strip JSON-LD fields from. + + Returns: + dict: The EnzymeMLDocument with JSON-LD fields removed. + """ + + doc = enzmldoc.model_dump() + _recursive_key_removal(doc, "ld_id") + _recursive_key_removal(doc, "ld_type") + _recursive_key_removal(doc, "ld_context") + + return doc + + +def _recursive_key_removal(obj: dict | list, key: str): + """ + Recursively removes all occurrences of a specified key from a dictionary or list of dictionaries. + + Args: + obj (dict | list): The dictionary or list of dictionaries to process. + key (str): The key to remove from the dictionary or dictionaries. + + Example: + >>> data = {'a': 1, 'b': {'a': 2, 'c': 3}, 'd': [{'a': 4}, {'e': 5}]} + >>> _recursive_key_removal(data, 'a') + >>> print(data) + {'b': {'c': 3}, 'd': [{'e': 5}]} + """ + if isinstance(obj, dict): + for k in list(obj.keys()): + if key == k: + del obj[key] + else: + _recursive_key_removal(obj[k], key) + elif isinstance(obj, list): + # Sort the list to ensure that the order of elements is preserved + obj.sort(key=lambda x: str(x)) + for entry in obj: + _recursive_key_removal(entry, key) + + def get_all_parameters(enzmldoc): """Extracts all parameters from an EnzymeMLDocument. From a57a7325a496760a151f4055c1366e900a18c980 Mon Sep 17 00:00:00 2001 From: Jan Range Date: Mon, 19 Aug 2024 21:27:15 +0200 Subject: [PATCH 047/172] update tests --- tests/fixtures/sbml/ode_example_enzml.json | 415 +++++++----------- tests/fixtures/sbml/ode_example_sbml.xml | 46 +- tests/fixtures/sbml/odes_example.omex | Bin 0 -> 2429 bytes .../fixtures/sbml/reaction_example_enzml.json | 389 +++++++--------- tests/fixtures/sbml/reaction_example_sbml.xml | 66 ++- tests/fixtures/sbml/reactions_example.omex | Bin 0 -> 2212 bytes tests/integration/test_sbml.py | 40 ++ tests/unit/test_equations.py | 65 ++- 8 files changed, 456 insertions(+), 565 deletions(-) create mode 100644 tests/fixtures/sbml/odes_example.omex create mode 100644 tests/fixtures/sbml/reactions_example.omex create mode 100644 tests/integration/test_sbml.py diff --git a/tests/fixtures/sbml/ode_example_enzml.json b/tests/fixtures/sbml/ode_example_enzml.json index 57a2b6e3..ca2dca0b 100644 --- a/tests/fixtures/sbml/ode_example_enzml.json +++ b/tests/fixtures/sbml/ode_example_enzml.json @@ -12,7 +12,7 @@ "modified": "schema:dateModified", "creators": "schema:creator" }, - "@id": "enzml:EnzymeMLDocument/44649453-a157-4cb7-be07-8fb09a82f4ca", + "@id": "enzml:EnzymeMLDocument/833d46aa-58c7-4d42-b341-43f1fe0fece0", "@type": [ "enzml:EnzymeMLDocument" ], @@ -32,7 +32,7 @@ "name": "schema:name", "volume": "OBO:OBI_0002139" }, - "@id": "enzml:Vessel/02063116-73f1-4ba1-b166-8fe835e55659", + "@id": "enzml:Vessel/abc02182-675a-4fd7-b067-9f376f17b874", "@type": [ "enzml:Vessel", "OBO:OBI_0400081" @@ -59,7 +59,7 @@ "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/efd21ea0-af02-4920-9036-9c8337cf0421", + "@id": "enzml:BaseUnit/7ea9c0d4-dcbb-4e59-94f2-7b1779e35b1b", "@type": [ "enzml:BaseUnit" ], @@ -96,7 +96,7 @@ "@type": "@id" } }, - "@id": "enzml:Protein/cf3097ad-5833-4ff8-99f1-784cd5f673ca", + "@id": "enzml:Protein/487be0d2-e325-4f0b-857b-3bd8d54c4003", "@type": [ "enzml:Protein", "schema:Protein" @@ -127,7 +127,7 @@ "@type": "@id" } }, - "@id": "enzml:Complex/fa79ccd6-acbe-47e4-a8d1-795eb18346db", + "@id": "enzml:Complex/2f52086d-d7a8-4a2d-870b-bd6bafd91504", "@type": [ "enzml:Complex" ], @@ -160,7 +160,7 @@ "@type": "@id" } }, - "@id": "enzml:SmallMolecule/5375d6fb-6246-43b0-bc81-d47e3e72493f", + "@id": "enzml:SmallMolecule/551e35d3-ae18-490d-b4a7-003fcd28f446", "@type": [ "enzml:SmallMolecule" ], @@ -191,7 +191,7 @@ "@type": "@id" } }, - "@id": "enzml:SmallMolecule/c7318d93-2a0f-44c0-9ebe-a79fc27bf01e", + "@id": "enzml:SmallMolecule/1a93b3f8-ce94-429d-975b-ff6a837b0424", "@type": [ "enzml:SmallMolecule" ], @@ -219,7 +219,7 @@ "@type": "@id" } }, - "@id": "enzml:Measurement/ef303c49-7554-4367-9f44-cb6e9838c1be", + "@id": "enzml:Measurement/83db3a41-626e-461b-80d2-9618997c6af3", "@type": [ "enzml:Measurement" ], @@ -235,7 +235,7 @@ "@type": "@id" } }, - "@id": "enzml:MeasurementData/3beaeb28-72a4-4398-ae34-c9208c03aa0b", + "@id": "enzml:MeasurementData/a1e71511-2b64-40af-a50f-7ede47b45baa", "@type": [ "enzml:MeasurementData" ], @@ -260,7 +260,7 @@ "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/cff3e0ad-ce88-479a-8c01-b06e012e3195", + "@id": "enzml:BaseUnit/0a98675d-d6e6-4551-8f2a-90483c57936d", "@type": [ "enzml:BaseUnit" ], @@ -274,7 +274,7 @@ "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/df1eed89-6a35-483e-a187-b981d9ee0405", + "@id": "enzml:BaseUnit/335f309c-13e0-4eb8-9765-3945a8683f7f", "@type": [ "enzml:BaseUnit" ], @@ -303,12 +303,12 @@ "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/634613e6-a06f-42e9-9e11-b32c3e6f6f09", + "@id": "enzml:BaseUnit/4e3a6a14-ca74-4c8a-b00f-45a3cfea6e11", "@type": [ "enzml:BaseUnit" ], "kind": "second", - "exponent": -1, + "exponent": 1, "scale": 1.0 } ] @@ -351,7 +351,7 @@ "@type": "@id" } }, - "@id": "enzml:MeasurementData/00c0dabc-47cc-40d5-a4d5-7809880aad52", + "@id": "enzml:MeasurementData/9de1a9fe-ede0-4e0b-a8cc-84e8dce6cb57", "@type": [ "enzml:MeasurementData" ], @@ -376,7 +376,7 @@ "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/cff3e0ad-ce88-479a-8c01-b06e012e3195", + "@id": "enzml:BaseUnit/0a98675d-d6e6-4551-8f2a-90483c57936d", "@type": [ "enzml:BaseUnit" ], @@ -390,7 +390,7 @@ "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/df1eed89-6a35-483e-a187-b981d9ee0405", + "@id": "enzml:BaseUnit/335f309c-13e0-4eb8-9765-3945a8683f7f", "@type": [ "enzml:BaseUnit" ], @@ -419,12 +419,12 @@ "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/634613e6-a06f-42e9-9e11-b32c3e6f6f09", + "@id": "enzml:BaseUnit/4e3a6a14-ca74-4c8a-b00f-45a3cfea6e11", "@type": [ "enzml:BaseUnit" ], "kind": "second", - "exponent": -1, + "exponent": 1, "scale": 1.0 } ] @@ -480,7 +480,7 @@ "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/83915bc7-e2b4-450f-b363-20eb027d1f3d", + "@id": "enzml:BaseUnit/31d5028b-2d30-4053-87e7-00b42a40b165", "@type": [ "enzml:BaseUnit" ], @@ -504,7 +504,7 @@ "@type": "@id" } }, - "@id": "enzml:Measurement/28bb1de1-4cd9-45e2-b160-3a2dd5ce3e34", + "@id": "enzml:Measurement/f7603279-9db3-4039-b501-97fee1f05c4b", "@type": [ "enzml:Measurement" ], @@ -520,7 +520,7 @@ "@type": "@id" } }, - "@id": "enzml:MeasurementData/24b00355-6bad-4771-a0e5-e65c7560b3a9", + "@id": "enzml:MeasurementData/f8d7f530-1f92-4cd7-b460-54b9cb03678b", "@type": [ "enzml:MeasurementData" ], @@ -545,7 +545,7 @@ "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/cff3e0ad-ce88-479a-8c01-b06e012e3195", + "@id": "enzml:BaseUnit/0a98675d-d6e6-4551-8f2a-90483c57936d", "@type": [ "enzml:BaseUnit" ], @@ -559,7 +559,7 @@ "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/df1eed89-6a35-483e-a187-b981d9ee0405", + "@id": "enzml:BaseUnit/335f309c-13e0-4eb8-9765-3945a8683f7f", "@type": [ "enzml:BaseUnit" ], @@ -588,12 +588,12 @@ "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/634613e6-a06f-42e9-9e11-b32c3e6f6f09", + "@id": "enzml:BaseUnit/4e3a6a14-ca74-4c8a-b00f-45a3cfea6e11", "@type": [ "enzml:BaseUnit" ], "kind": "second", - "exponent": -1, + "exponent": 1, "scale": 1.0 } ] @@ -636,7 +636,7 @@ "@type": "@id" } }, - "@id": "enzml:MeasurementData/405dfbaf-cc21-41d4-836d-fdadc1d0c1b3", + "@id": "enzml:MeasurementData/828564ec-ec24-42c2-98b2-115fdc1f2a3c", "@type": [ "enzml:MeasurementData" ], @@ -661,7 +661,7 @@ "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/cff3e0ad-ce88-479a-8c01-b06e012e3195", + "@id": "enzml:BaseUnit/0a98675d-d6e6-4551-8f2a-90483c57936d", "@type": [ "enzml:BaseUnit" ], @@ -675,7 +675,7 @@ "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/df1eed89-6a35-483e-a187-b981d9ee0405", + "@id": "enzml:BaseUnit/335f309c-13e0-4eb8-9765-3945a8683f7f", "@type": [ "enzml:BaseUnit" ], @@ -704,12 +704,12 @@ "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/634613e6-a06f-42e9-9e11-b32c3e6f6f09", + "@id": "enzml:BaseUnit/4e3a6a14-ca74-4c8a-b00f-45a3cfea6e11", "@type": [ "enzml:BaseUnit" ], "kind": "second", - "exponent": -1, + "exponent": 1, "scale": 1.0 } ] @@ -765,7 +765,7 @@ "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/83915bc7-e2b4-450f-b363-20eb027d1f3d", + "@id": "enzml:BaseUnit/31d5028b-2d30-4053-87e7-00b42a40b165", "@type": [ "enzml:BaseUnit" ], @@ -787,23 +787,80 @@ "@type": "@id" } }, - "@id": "enzml:Equation/87c7fc6d-6933-42be-a33a-c8eecb5901b7", + "@id": "enzml:Equation/69aec529-07bc-447a-8169-a20dc623c81a", "@type": [ "enzml:Equation" ], - "equation": "E_tot*kcat*s0/(K_m + s0)", + "equation": "E_tot * kcat * s0 / (K_m + s0)", + "equation_type": "ode", + "species_id": "s1", + "variables": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": "schema:identifier" + }, + "@id": "enzml:Variable/b4d171e6-c5ee-416b-859f-6560c5f18b5d", + "@type": [ + "enzml:Variable" + ], + "id": "s0", + "name": "s0", + "symbol": "s0" + } + ] + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:Equation/e1e66a46-8111-4003-9eeb-f163081c2e96", + "@type": [ + "enzml:Equation" + ], + "equation": "100", + "equation_type": "initialAssignment", + "species_id": "E_tot", + "variables": [] + } + ], + "parameters": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + }, + "@id": "enzml:Parameter/2872b6d6-191f-4bc4-a36a-130eb4534837", + "@type": [ + "enzml:Parameter" + ], + "id": "kcat", + "name": "kcat", + "symbol": "kcat", "unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "OBO:UO_0000063", + "@id": "OBO:UO_0000010", "@type": [ "OBO:UO_0000000" ], "id": "u4", - "name": "mmol / l s", + "name": "1 / s", "base_units": [ { "@context": { @@ -811,35 +868,7 @@ "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/cff3e0ad-ce88-479a-8c01-b06e012e3195", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "mole", - "exponent": 1, - "scale": -3.0 - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/df1eed89-6a35-483e-a187-b981d9ee0405", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "litre", - "exponent": -1, - "scale": 1.0 - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/634613e6-a06f-42e9-9e11-b32c3e6f6f09", + "@id": "enzml:BaseUnit/4e3a6a14-ca74-4c8a-b00f-45a3cfea6e11", "@type": [ "enzml:BaseUnit" ], @@ -849,223 +878,93 @@ } ] }, - "equation_type": "ode", - "species_id": "s1", - "variables": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": "schema:identifier" - }, - "@id": "enzml:Variable/49c819d7-0f8a-4d2e-9a82-09cf62d48aad", - "@type": [ - "enzml:Variable" - ], - "id": "s0", - "name": "s0", - "symbol": "s0" + "upper": 100.0, + "lower": 0.0, + "stderr": 0.1, + "constant": true + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" } + }, + "@id": "enzml:Parameter/31e315d7-8e87-4ef9-9ca4-1e9e08f2ded7", + "@type": [ + "enzml:Parameter" ], - "parameters": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - }, - "@id": "enzml:Parameter/404206dc-7e11-432e-b1a8-871b822325ef", - "@type": [ - "enzml:Parameter" - ], - "id": "kcat", - "name": "kcat", - "symbol": "kcat", - "unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000010", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u5", - "name": "1 / s", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/634613e6-a06f-42e9-9e11-b32c3e6f6f09", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "second", - "exponent": -1, - "scale": 1.0 - } - ] - }, - "upper": 100.0, - "lower": 0.0, - "stderr": 0.1, - "constant": true + "id": "K_m", + "name": "K_m", + "symbol": "K_m", + "unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - }, - "@id": "enzml:Parameter/a5b7ca60-4945-4cfe-9eb9-6c97dfdaa770", - "@type": [ - "enzml:Parameter" - ], - "id": "K_m", - "name": "K_m", - "symbol": "K_m", - "unit": { + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u2", + "name": "mmol / l", + "base_units": [ + { "@context": { "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "OBO:UO_0000063", + "@id": "enzml:BaseUnit/0a98675d-d6e6-4551-8f2a-90483c57936d", "@type": [ - "OBO:UO_0000000" + "enzml:BaseUnit" ], - "id": "u2", - "name": "mmol / l", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/cff3e0ad-ce88-479a-8c01-b06e012e3195", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "mole", - "exponent": 1, - "scale": -3.0 - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/df1eed89-6a35-483e-a187-b981d9ee0405", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "litre", - "exponent": -1, - "scale": 1.0 - } - ] - }, - "upper": 100.0, - "lower": 0.0, - "stderr": 0.1, - "constant": true - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } + "kind": "mole", + "exponent": 1, + "scale": -3.0 }, - "@id": "enzml:Parameter/26b501d3-7200-4813-ac11-b62f0f665054", - "@type": [ - "enzml:Parameter" - ], - "id": "E_tot", - "name": "E_tot", - "symbol": "E_tot", - "unit": { + { "@context": { "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "OBO:UO_0000063", + "@id": "enzml:BaseUnit/335f309c-13e0-4eb8-9765-3945a8683f7f", "@type": [ - "OBO:UO_0000000" + "enzml:BaseUnit" ], - "id": "u2", - "name": "mmol / l", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/cff3e0ad-ce88-479a-8c01-b06e012e3195", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "mole", - "exponent": 1, - "scale": -3.0 - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/df1eed89-6a35-483e-a187-b981d9ee0405", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "litre", - "exponent": -1, - "scale": 1.0 - } - ] - }, - "upper": 100.0, - "lower": 0.0, - "stderr": 0.1, - "constant": true - } - ] + "kind": "litre", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "upper": 100.0, + "lower": 0.0, + "stderr": 0.1, + "constant": true }, { "@context": { "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", - "species_id": { + "id": { + "@id": "schema:identifier", "@type": "@id" } }, - "@id": "enzml:Equation/3991effb-6394-4b6d-baa8-a06462e2101f", + "@id": "enzml:Parameter/d49325e0-8483-469a-9d6d-1bcadac2bb98", "@type": [ - "enzml:Equation" + "enzml:Parameter" ], - "equation": "100", + "id": "E_tot", + "name": "E_tot", + "symbol": "E_tot", "unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", @@ -1085,7 +984,7 @@ "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/cff3e0ad-ce88-479a-8c01-b06e012e3195", + "@id": "enzml:BaseUnit/0a98675d-d6e6-4551-8f2a-90483c57936d", "@type": [ "enzml:BaseUnit" ], @@ -1099,7 +998,7 @@ "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/df1eed89-6a35-483e-a187-b981d9ee0405", + "@id": "enzml:BaseUnit/335f309c-13e0-4eb8-9765-3945a8683f7f", "@type": [ "enzml:BaseUnit" ], @@ -1109,10 +1008,10 @@ } ] }, - "equation_type": "initialAssignment", - "species_id": "E_tot", - "variables": [], - "parameters": [] + "upper": 100.0, + "lower": 0.0, + "stderr": 0.1, + "constant": true } ] } \ No newline at end of file diff --git a/tests/fixtures/sbml/ode_example_sbml.xml b/tests/fixtures/sbml/ode_example_sbml.xml index 7d4ca6b1..dc3baf8c 100644 --- a/tests/fixtures/sbml/ode_example_sbml.xml +++ b/tests/fixtures/sbml/ode_example_sbml.xml @@ -2,22 +2,22 @@ - + - - + + - - + + @@ -56,7 +56,7 @@ - + @@ -71,21 +71,7 @@ - - - - - - - - - - - - - - - + @@ -104,7 +90,7 @@ + rdf:about="http://www.enzymeml.org/v2/Vessel/abc02182-675a-4fd7-b067-9f376f17b874"> Vessel 1 10.0 @@ -121,7 +107,7 @@ + rdf:about="http://www.enzymeml.org/v2/Protein/487be0d2-e325-4f0b-857b-3bd8d54c4003"> Enzyme MTEY E.coli @@ -141,7 +127,7 @@ + rdf:about="http://www.enzymeml.org/v2/Complex/2f52086d-d7a8-4a2d-870b-bd6bafd91504"> Enzyme-Substrate Complex @@ -157,7 +143,7 @@ + rdf:about="http://www.enzymeml.org/v2/SmallMolecule/551e35d3-ae18-490d-b4a7-003fcd28f446"> Substrate @@ -173,7 +159,7 @@ + rdf:about="http://www.enzymeml.org/v2/SmallMolecule/1a93b3f8-ce94-429d-975b-ff6a837b0424"> Product @@ -186,11 +172,11 @@ - + + rdf:about="http://www.enzymeml.org/v2/Parameter/2872b6d6-191f-4bc4-a36a-130eb4534837"> @@ -205,7 +191,7 @@ + rdf:about="http://www.enzymeml.org/v2/Parameter/31e315d7-8e87-4ef9-9ca4-1e9e08f2ded7"> @@ -220,7 +206,7 @@ + rdf:about="http://www.enzymeml.org/v2/Parameter/d49325e0-8483-469a-9d6d-1bcadac2bb98"> diff --git a/tests/fixtures/sbml/odes_example.omex b/tests/fixtures/sbml/odes_example.omex new file mode 100644 index 0000000000000000000000000000000000000000..087704deb80a5f2edbf78637d98194f6b7c3735e GIT binary patch literal 2429 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 - - + + - + - - + + - + - + - - + + @@ -34,7 +34,7 @@ - + @@ -45,35 +45,33 @@ - - + - + - - + - + - + - + - + @@ -85,18 +83,6 @@ - - - - - - - - - - - - @@ -104,7 +90,7 @@ + rdf:about="http://www.enzymeml.org/v2/Vessel/a2ea41db-032c-4a61-a7d5-254137d0bce9"> Vessel 1 10.0 @@ -121,7 +107,7 @@ + rdf:about="http://www.enzymeml.org/v2/Protein/42828d0d-f4ac-489b-acd5-cd74c080f340"> Enzyme MTEY @@ -138,7 +124,7 @@ + rdf:about="http://www.enzymeml.org/v2/SmallMolecule/e794f30d-51ea-4b89-a5d7-555bcd70efe5"> Substrate @@ -150,7 +136,7 @@ + rdf:about="http://www.enzymeml.org/v2/SmallMolecule/4b8a1f78-1874-447a-aee7-a80970bb1301"> Product @@ -159,11 +145,11 @@ - + + rdf:about="http://www.enzymeml.org/v2/Parameter/46faced8-6229-4b7c-b06a-3feb06a11350"> @@ -174,11 +160,11 @@ - + + rdf:about="http://www.enzymeml.org/v2/Parameter/706ce185-8f1d-429e-8c0d-76942326a0df"> @@ -204,8 +190,8 @@ - + diff --git a/tests/fixtures/sbml/reactions_example.omex b/tests/fixtures/sbml/reactions_example.omex new file mode 100644 index 0000000000000000000000000000000000000000..ce6e4e12f4887700d95ac896785b467c6d5771a3 GIT binary patch literal 2212 zcmZ{lc{CJiAIHZs#)LaDh_W;oMH+h}g=`tiFm}e?kbN0TR1Db_BVx!H`%+{q7ll%m zh;A9tof$%n(qhYUF^E_1d(L~`+d1#^{P8`%^PKNF&+qfk2V>5~Eerqvcmd3EsPiW- zyX_AL6NVE2;6KPlyqm715 zM7r!ZmxmI-w*lZQZM(YJ9z%;)vh+{eF+Pv?G<0(q4_*E|)|}Kwpug*BpJ_e&W;=Z- zyT2kp4i6fU8GE8SZ7rm?JxuG6$a;nUo}ppoJyl}TvX)ZjCYEQK$2yZ8yJ9mhlepSm?Syy4LQ9CUW8^aEm zts~C~x$9U#u0w~e=8YKzB|E4l8un>;>BHzsVwYLVX6em~b6ZUOy z+srj6q+4^yG8Zi+q?Jn~zGin<$^t(xW}nO>X;sQ))T&9`Z%M`}ubA$}DSCLsVU*a5 z3;pGY<$w6GV=F0Nbac21i!E#$_f|L# zqbm<&iMb884cENkl`Zns>Q%jyu9q*nl=4Ptr5}~ti0iEhr)s7mMPf`Bpk6A$?a1p@ z$TvbMXC3{+rIUiE#E3SDAzN6&2XPp&y;~Rf z>b7!J{;K%MoX6|w_>Ruq*>AJE=DwXe6OV|)LHCG6>nSG_*`pvJA2kW+k@OdL;#)tF z2lXg{&IeZv44CH+_h=7tWK2$nt&$$6M|PL{Fh1h-JcL<)KrEF<^z4|4Pupzh6nAf4 zzsWNg%`*Q(%jGotKWGqmP3T9<@s#!mizk^?Df%qQ4%63vV#m(UIuD`^SeH+_hE=$#i2;|(u}C~>t~#JTF;hA&QQE&4xcwO0Ha1!x1c}Zz|z4FWsKz;nJwZV zX;C$-fcQ3lGw0iaWRaWC-I19j5V6zUsg7JY)aPy<<`1u$g1-?7j7^ zJ%E2Vv(53eg98O_eN#=|Y&7dksH_sL#g%?L-ph==V#~Nl5Y-HG<``?CeY{o14_8H>{BUXovl~jpK^%1#UZyohD?&G{^Q0`a`jo&X^kkQh2p{oFhQ+5g zOoU6|?|Pjg6{&7l`vfZ1v|L4Sf}xKQ$j7;NH*3D#sh*KB@QUeyG`LG$NacVt!J}Sa;`fBBqZC{?j>!IDN5jqnCBC-bkN&m^rR;>-aZ8z z)KB&F#2#w3FjVD-D)8cL^+^Hbx_JY)lrETK$6f~)m8y@ezGzQ~H5T^}?ql*4`=3@! zh?$2u7&gaJ`L4`P19xVnxj@mhYjMvCxnJ~kS6gVjnll|*7j~o^H-0Z~;b&wWIVH=1cT)acxs-b{O>YP7zGa=x5Sf&4@`^av@V>!6ZxL{Do=Bt|1 zE`-ITxY#dI3uU`w5B=h@;ZlK_eZJXvTS|-=7We#6S)*7{mdMN5ou;$R0%*EC>aQfn z%%>MJ>CR8dAL{$#GjiyA%N`DHA zga?K!;i49r%y{+eh&nkh@CM&>^;XnM2l)i1D7AjtCbmURcS#xFgeHp=moWXPu_vDR2}ihp6K=Iu}d#HS~L#vx;X{%t+yb#$`ght@HtQyzF@ z*0~yHhHWfR^Bf!aPmgeJ8@GlW_`{v!r(^*DZ?8x%L}bJjH=_P;3CH=lN4|@V85^^+ zrLZ<=_&EFYC3T+W;{Ky%7roK;1uTi|Dr$m z*uPKJji2$q+W)ors~7*%0|2US@EvUUUrYX4`xV3AHCxc%P%!4e1LXn$TnD%IAU_|x H0RaC3h8X0l literal 0 HcmV?d00001 diff --git a/tests/integration/test_sbml.py b/tests/integration/test_sbml.py new file mode 100644 index 00000000..f6acb232 --- /dev/null +++ b/tests/integration/test_sbml.py @@ -0,0 +1,40 @@ +from pathlib import Path + +from pyenzyme import EnzymeMLDocument +from pyenzyme.tools import to_dict_wo_json_ld + + +class TestSBML: + def test_parse_sbml_odes(self): + # Arrange + path = Path("tests/fixtures/sbml/odes_example.omex") + + # Act + enzmldoc = EnzymeMLDocument.from_sbml(path) + + # Assert + parsed_doc = to_dict_wo_json_ld(enzmldoc) + expected_doc = to_dict_wo_json_ld( + EnzymeMLDocument.read("tests/fixtures/sbml/ode_example_enzml.json") + ) + + assert ( + parsed_doc == expected_doc + ), "Parsed document does not match expected document" + + def test_parse_sbml_reactions(self): + # Arrange + path = Path("tests/fixtures/sbml/reactions_example.omex") + + # Act + enzmldoc = EnzymeMLDocument.from_sbml(path) + + # Assert + parsed_doc = to_dict_wo_json_ld(enzmldoc) + expected_doc = to_dict_wo_json_ld( + EnzymeMLDocument.read("tests/fixtures/sbml/reaction_example_enzml.json") + ) + + assert ( + parsed_doc == expected_doc + ), "Parsed document does not match expected document" diff --git a/tests/unit/test_equations.py b/tests/unit/test_equations.py index 4a1496cc..f0b20cec 100644 --- a/tests/unit/test_equations.py +++ b/tests/unit/test_equations.py @@ -2,16 +2,22 @@ from pyenzyme.equations._chem import build_reaction, build_reactions from pyenzyme.equations._math import build_equation, build_equations -from pyenzyme.model import EquationType +from pyenzyme.model import EquationType, EnzymeMLDocument +from pyenzyme.units import s class TestMathEquations: def test_parse_equation(self): # Arrange + enzmldoc = EnzymeMLDocument(name="Test") equation = "s1'(t) = kcat * p0(t) * s0(t)" # Act - equation = build_equation(equation) + equation = build_equation( + equation=equation, + unit_mapping={"kcat": 1 / s}, + enzmldoc=enzmldoc, + ) # Assert expected_vars = ["p0", "s0"] @@ -23,41 +29,54 @@ def test_parse_equation(self): assert ( equation.equation == "kcat*p0*s0" ), "Equation is not correct. Got {equation.equation.equation}" - assert equation.parameters[0].name == "kcat", "Parameter name is not correct" - assert ( - equation.parameters[0].symbol == "kcat" - ), "Parameter symbol is not correct" for var in equation.variables: assert var.name in expected_vars assert var.symbol in expected_vars - for param in equation.parameters: + for param in enzmldoc.parameters: assert param.name in expected_params assert param.symbol in expected_params + assert param.id in expected_params + assert param.unit is not None def test_invalid_equation_no_right(self): # Arrange + enzmldoc = EnzymeMLDocument(name="Test") equation = "s1'(t) =" # Act with pytest.raises(ValueError): - equation = build_equation(equation) + build_equation( + equation=equation, + unit_mapping={"kcat": 1 / s}, + enzmldoc=enzmldoc, + ) def test_invalid_equation_no_equals(self): # Arrange + enzmldoc = EnzymeMLDocument(name="Test") equation = "s1'(t) kcat * p0(t) * s0(t)" # Act with pytest.raises(ValueError): - equation = build_equation(equation) + build_equation( + equation=equation, + unit_mapping={"kcat": 1 / s}, + enzmldoc=enzmldoc, + ) def test_equation_with_funs(self): # Arrange + enzmldoc = EnzymeMLDocument(name="Test") equation = "s1'(t) = kcat * exp(p0(t) * t)" # Act - equation = build_equation(equation) + equation = build_equation( + equation=equation, + unit_mapping={"kcat": 1 / s}, + enzmldoc=enzmldoc, + ) # Assert assert ( @@ -69,10 +88,15 @@ def test_equation_with_funs(self): def test_equation_with_fun_only_t(self): # Arrange + enzmldoc = EnzymeMLDocument(name="Test") equation = "s1'(t) = kcat * exp(t)" # Act - equation = build_equation(equation) + equation = build_equation( + equation=equation, + unit_mapping={"kcat": 1 / s}, + enzmldoc=enzmldoc, + ) # Assert assert ( @@ -84,23 +108,32 @@ def test_equation_with_fun_only_t(self): def test_multiple_equations(self): # Arrange + enzmldoc = EnzymeMLDocument(name="Test") equations = [ "s1'(t) = kcat * E_tot * s0(t)", "E_tot = p0(t) + p1(t)", ] # Act - equations = build_equations(*equations) + equations = build_equations( + *equations, + unit_mapping={"kcat": 1 / s}, + enzmldoc=enzmldoc, + ) # Assert assert len(equations) == 2, f"Expected 2 equations. Got {len(equations)}" def test_init_assigment_equation(self): # Arrange + enzmldoc = EnzymeMLDocument(name="Test") equation = "E_tot = p0 + p1" # Act - equation = build_equation(equation) + equation = build_equation( + equation, + enzmldoc=enzmldoc, + ) # Assert assert ( @@ -115,10 +148,14 @@ def test_init_assigment_equation(self): def test_assigment_equation(self): # Arrange + enzmldoc = EnzymeMLDocument(name="Test") equation = "E_tot(t) = p0 + p1" # Act - equation = build_equation(equation) + equation = build_equation( + equation=equation, + enzmldoc=enzmldoc, + ) # Assert assert ( From 6330f0c60de833906b1846d0a4314c4223053ea3 Mon Sep 17 00:00:00 2001 From: Jan Range Date: Tue, 20 Aug 2024 08:49:41 +0200 Subject: [PATCH 048/172] add `to_pandas` to `EnzymeMLDocument` --- dev-examples/sbml_import_odes.py | 4 ++++ dev-examples/sbml_import_reactions.py | 4 ++++ pyenzyme/__init__.py | 1 + 3 files changed, 9 insertions(+) diff --git a/dev-examples/sbml_import_odes.py b/dev-examples/sbml_import_odes.py index e2aeaccd..f630d6aa 100644 --- a/dev-examples/sbml_import_odes.py +++ b/dev-examples/sbml_import_odes.py @@ -10,3 +10,7 @@ ) rich.print(to_dict_wo_json_ld(doc)) + +df = doc.to_pandas(doc) + +rich.print(df) diff --git a/dev-examples/sbml_import_reactions.py b/dev-examples/sbml_import_reactions.py index e2aeaccd..f630d6aa 100644 --- a/dev-examples/sbml_import_reactions.py +++ b/dev-examples/sbml_import_reactions.py @@ -10,3 +10,7 @@ ) rich.print(to_dict_wo_json_ld(doc)) + +df = doc.to_pandas(doc) + +rich.print(df) diff --git a/pyenzyme/__init__.py b/pyenzyme/__init__.py index 2dee72ed..c667f15d 100644 --- a/pyenzyme/__init__.py +++ b/pyenzyme/__init__.py @@ -48,6 +48,7 @@ def write_enzymeml( EnzymeMLDocument.write = write_enzymeml # noqa: F405 EnzymeMLDocument.from_sbml = classmethod(read_sbml) # noqa: F405 EnzymeMLDocument.to_sbml = to_sbml # noqa: F405 +EnzymeMLDocument.to_pandas = to_pandas # noqa: F405 def sort_by_ld(d: dict) -> dict: From bf62d867dd1a3d2aeea13899a26207cf93fa1695 Mon Sep 17 00:00:00 2001 From: haeussma <83341109+haeussma@users.noreply.github.com> Date: Tue, 20 Aug 2024 15:01:20 +0200 Subject: [PATCH 049/172] data, time, time_unit in `MeasurementData` not mandatory anymore --- pyenzyme/model.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pyenzyme/model.py b/pyenzyme/model.py index 7a48ec10..314e63b0 100644 --- a/pyenzyme/model.py +++ b/pyenzyme/model.py @@ -3,10 +3,10 @@ from __future__ import annotations from enum import Enum -from typing import Optional, Generic, TypeVar +from typing import Generic, Optional, TypeVar from uuid import uuid4 -from pydantic import BaseModel, Field, ConfigDict +from pydantic import BaseModel, ConfigDict, Field # Filter Wrapper definition used to filter a list of objects # based on their attributes @@ -1737,11 +1737,11 @@ def add_to_species_data( species_id: str, initial: float, data_unit: UnitDefinition, - time_unit: UnitDefinition, data_type: DataTypes, prepared: Optional[float] = None, data: list[float] = [], time: list[float] = [], + time_unit: Optional[UnitDefinition] = None, is_simulated: bool = False, **kwargs, ): @@ -1749,11 +1749,11 @@ def add_to_species_data( "species_id": species_id, "initial": initial, "data_unit": data_unit, - "time_unit": time_unit, "data_type": data_type, "prepared": prepared, "data": data, "time": time, + "time_unit": time_unit, "is_simulated": is_simulated, } @@ -1773,11 +1773,11 @@ class MeasurementData(BaseModel): species_id: str initial: float data_unit: UnitDefinition - time_unit: UnitDefinition data_type: DataTypes prepared: Optional[float] = Field(default=None) data: list[float] = Field(default_factory=list) time: list[float] = Field(default_factory=list) + time_unit: Optional[UnitDefinition] = Field(default=None) is_simulated: bool = False # JSON-LD fields From fe3d3bbda9a29470f6adeafc9f2776ce5c0a450d Mon Sep 17 00:00:00 2001 From: "Frank T. Bergmann" Date: Fri, 23 Aug 2024 14:17:49 +0200 Subject: [PATCH 050/172] - can not assume filenames --- pyenzyme/sbml/omex.py | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/pyenzyme/sbml/omex.py b/pyenzyme/sbml/omex.py index 1f86734a..c7aba86b 100644 --- a/pyenzyme/sbml/omex.py +++ b/pyenzyme/sbml/omex.py @@ -67,7 +67,24 @@ def read_sbml_omex(path: Path) -> tuple[Path, Path | None]: """ omex = Omex.from_omex(path) - sbml_file = omex.get_path("./model.xml") - data = omex.get_path("./data.tsv") + + # get first sbml entry in manifest + sbml_entry = None + for entry in omex.manifest.entries: + if '/sbml' in entry.format: + sbml_entry = entry.location + if entry.master: + break + sbml_file = omex.get_path(sbml_entry) + + + # we really need to get all of the data entries from the manifest + # but for now just get the first one + data_entry = None + for entry in omex.manifest.entries: + if '/csv' in entry.format or '/tsv' in entry.format: + data_entry = entry.location + break + data = omex.get_path(data_entry) return sbml_file, data From f17303fd60b72fef5f6762a038497e93fd58e251 Mon Sep 17 00:00:00 2001 From: "Frank T. Bergmann" Date: Fri, 23 Aug 2024 14:18:43 +0200 Subject: [PATCH 051/172] - init defaults to add missing attributes - ensure there is a compartment for complexes - set volume unit --- pyenzyme/sbml/serializer.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/pyenzyme/sbml/serializer.py b/pyenzyme/sbml/serializer.py index 71251f84..bba0f1c3 100644 --- a/pyenzyme/sbml/serializer.py +++ b/pyenzyme/sbml/serializer.py @@ -120,6 +120,7 @@ def _add_unit_definitions(unit: UnitDefinition): for base_unit in unit.base_units: sbml_unit = sbml_unitdef.createUnit() + sbml_unit.initDefaults() sbml_unit.setKind(_get_sbml_kind(base_unit.kind)) sbml_unit.setExponent(base_unit.exponent) @@ -133,6 +134,7 @@ def _add_vessel(vessel: pe.Vessel): """Add vessels to the SBML model.""" compartment = model.createCompartment() + compartment.initDefaults() compartment.setId(vessel.id) compartment.setName(vessel.name) compartment.setConstant(True) @@ -141,6 +143,7 @@ def _add_vessel(vessel: pe.Vessel): if vessel.unit in units: compartment.setUnits(_get_unit_id(vessel.unit)) + model.setVolumeUnits(_get_unit_id(vessel.unit)) else: raise ValueError(f"Unit {vessel.unit} not found in units") @@ -149,6 +152,7 @@ def _add_small_mol(small_mol: pe.SmallMolecule): """Add small molecules to the SBML model.""" species = model.createSpecies() + species.initDefaults() species.setId(small_mol.id) species.setName(small_mol.name) species.setCompartment(small_mol.vessel_id) @@ -174,6 +178,7 @@ def _add_protein(protein: pe.Protein): """Add proteins to the SBML model.""" species = model.createSpecies() + species.initDefaults() species.setId(protein.id) species.setName(protein.name) species.setConstant(protein.constant) @@ -199,8 +204,10 @@ def _add_complex(complex_: pe.Complex): """Add complexes to the SBML model.""" species = model.createSpecies() + species.initDefaults() species.setId(complex_.id) species.setName(complex_.name) + species.setCompartment(model.getCompartment(0).getId()) species.setConstant(True) species.setSBOTerm("SBO:0000296") # Complex species.appendAnnotation(rdf.to_rdf_xml(complex_)) @@ -237,6 +244,7 @@ def _add_reaction(reaction: pe.Reaction, index: int): """Add reactions to the SBML model.""" sbml_reaction = model.createReaction() + sbml_reaction.initDefaults() sbml_reaction.setName(reaction.name) sbml_reaction.setId(reaction.id) sbml_reaction.setReversible(reaction.reversible) @@ -250,6 +258,8 @@ def _add_reaction(reaction: pe.Reaction, index: int): species.species_id, )() + species_ref.initDefaults() + species_ref.setConstant(True) species_ref.setSpecies(species.species_id) species_ref.setStoichiometry(abs(species.stoichiometry)) @@ -300,6 +310,9 @@ def _add_parameter(parameter: pe.Parameter): if parameter.value: sbml_param.setValue(parameter.value) + elif parameter.initial_value: + sbml_param.setValue(parameter.initial_value) + if parameter.unit: sbml_param.setUnits(_get_unit_id(parameter.unit)) From ca68f4f7663f3e456e09090ddfa546fedf338564 Mon Sep 17 00:00:00 2001 From: "Frank T. Bergmann" Date: Fri, 23 Aug 2024 14:24:58 +0200 Subject: [PATCH 052/172] - omex uses /tab-separated-values for tsv --- pyenzyme/sbml/omex.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyenzyme/sbml/omex.py b/pyenzyme/sbml/omex.py index c7aba86b..e8f28d3f 100644 --- a/pyenzyme/sbml/omex.py +++ b/pyenzyme/sbml/omex.py @@ -82,7 +82,7 @@ def read_sbml_omex(path: Path) -> tuple[Path, Path | None]: # but for now just get the first one data_entry = None for entry in omex.manifest.entries: - if '/csv' in entry.format or '/tsv' in entry.format: + if '/csv' in entry.format or '/tsv' in entry.format or '/tab-separated-values' in entry.format: data_entry = entry.location break data = omex.get_path(data_entry) From c895c2632036b478aa6d8fddbac3def28e8b9d20 Mon Sep 17 00:00:00 2001 From: Jan Range Date: Sat, 7 Sep 2024 19:45:50 +0200 Subject: [PATCH 053/172] update dev examples --- dev-examples/enzml_legacy_to_v2.json | 2305 ++++++++++++++ dev-examples/legacy/Model_4.omex | Bin 0 -> 13024 bytes dev-examples/legacy/enzml_legacy_to_v2.json | 3185 +++++++++++++++++++ dev-examples/odes/enzymeml.json | 352 +- dev-examples/odes/odes_example.omex | Bin 2425 -> 2427 bytes dev-examples/odes/odes_example.xml | 22 +- dev-examples/odes/odes_example_test.xml | 241 ++ dev-examples/sbml_export_odes.py | 7 +- dev-examples/sbml_import_legacy.py | 8 + dev-examples/sbml_import_odes.py | 8 +- dev-examples/v1.xml | 731 +++++ 11 files changed, 6664 insertions(+), 195 deletions(-) create mode 100644 dev-examples/enzml_legacy_to_v2.json create mode 100644 dev-examples/legacy/Model_4.omex create mode 100644 dev-examples/legacy/enzml_legacy_to_v2.json create mode 100644 dev-examples/odes/odes_example_test.xml create mode 100644 dev-examples/sbml_import_legacy.py create mode 100644 dev-examples/v1.xml diff --git a/dev-examples/enzml_legacy_to_v2.json b/dev-examples/enzml_legacy_to_v2.json new file mode 100644 index 00000000..ac173d6a --- /dev/null +++ b/dev-examples/enzml_legacy_to_v2.json @@ -0,0 +1,2305 @@ +{ + "name": "EnzymeML_Lagerman", + "references": [], + "created": null, + "modified": null, + "creators": [], + "vessels": [ + { + "id": "v0", + "name": "Falcon Tube", + "volume": 5.0, + "unit": { + "id": "u0", + "name": "ml", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "constant": true + } + ], + "proteins": [ + { + "id": "p0", + "name": "E", + "constant": false, + "sequence": "MRRLAACLLATAVAAATSAALAQTSPMTPDITGKPFVAGDAANDYVKREVMIPMRDGVKLHTVIVLPKGARNAPIVLTRTPYDASGRTERLASPHMKDLLSAGDDVFVEGGYIRVFQDVRGKYGSEGDYVMTRPLRGPLNPSEVDHATDAWDTIDWLVKNVKESNGKVGMIGSSYEGFTVVMALTNPHPALKVAAPESPMIDGWMGDDWFNYGAFRQVNFDYFTGQLSKRGKGAGIPRQGHDDYSNFLQAGSAGDFAKAAGLEQLPWWHKLTEHAAYDSFWQEQALDKVMARTPLKVPTMWLQGLWDQEDMWGAIHSYAAMEPRDKSNKLNYLVMGPWRHSQVNSDASSLGALNFDGDTARQFRRDVLRPFFDQYLVDGAPKAATPPVFIYNTGENHWDRLQAWPRSCDKGCAAKSKPLYLQAGGKLSFQAPTAAQPAFEEYVSDPAKPVPFVPRPVDFGDRSMWTTWLVHDQRFVDGRPDVLTFVTEPLTAPLQIAGAPDVHLQASTSGSDSDWVVKLIDVYPDEMAADPKMGGYELPVSMAIFRGRYRESFSTPAPLAANQPLAFQFGLPTANHTFQPGHRVMVQVQSSLFPLYDRNPQTYVPNVFFAKPGDYQKATQRVYVAPGQGSYISLPVR", + "vessel_id": "v0", + "ecnumber": "3.1.1.43", + "organism": "Xanthomonas campestris pv. campestris", + "organism_tax_id": null, + "references": [] + }, + { + "id": "p1", + "name": "EA", + "constant": false, + "sequence": "MRRLAACLLATAVAAATSAALAQTSPMTPDITGKPFVAGDAANDYVKREVMIPMRDGVKLHTVIVLPKGARNAPIVLTRTPYDASGRTERLASPHMKDLLSAGDDVFVEGGYIRVFQDVRGKYGSEGDYVMTRPLRGPLNPSEVDHATDAWDTIDWLVKNVKESNGKVGMIGSSYEGFTVVMALTNPHPALKVAAPESPMIDGWMGDDWFNYGAFRQVNFDYFTGQLSKRGKGAGIPRQGHDDYSNFLQAGSAGDFAKAAGLEQLPWWHKLTEHAAYDSFWQEQALDKVMARTPLKVPTMWLQGLWDQEDMWGAIHSYAAMEPRDKSNKLNYLVMGPWRHSQVNSDASSLGALNFDGDTARQFRRDVLRPFFDQYLVDGAPKAATPPVFIYNTGENHWDRLQAWPRSCDKGCAAKSKPLYLQAGGKLSFQAPTAAQPAFEEYVSDPAKPVPFVPRPVDFGDRSMWTTWLVHDQRFVDGRPDVLTFVTEPLTAPLQIAGAPDVHLQASTSGSDSDWVVKLIDVYPDEMAADPKMGGYELPVSMAIFRGRYRESFSTPAPLAANQPLAFQFGLPTANHTFQPGHRVMVQVQSSLFPLYDRNPQTYVPNVFFAKPGDYQKATQRVYVAPGQGSYISLPVR", + "vessel_id": "v0", + "ecnumber": "3.1.1.43", + "organism": "Xanthomonas campestris pv. campestris", + "organism_tax_id": null, + "references": [] + }, + { + "id": "p2", + "name": "ED", + "constant": false, + "sequence": "MRRLAACLLATAVAAATSAALAQTSPMTPDITGKPFVAGDAANDYVKREVMIPMRDGVKLHTVIVLPKGARNAPIVLTRTPYDASGRTERLASPHMKDLLSAGDDVFVEGGYIRVFQDVRGKYGSEGDYVMTRPLRGPLNPSEVDHATDAWDTIDWLVKNVKESNGKVGMIGSSYEGFTVVMALTNPHPALKVAAPESPMIDGWMGDDWFNYGAFRQVNFDYFTGQLSKRGKGAGIPRQGHDDYSNFLQAGSAGDFAKAAGLEQLPWWHKLTEHAAYDSFWQEQALDKVMARTPLKVPTMWLQGLWDQEDMWGAIHSYAAMEPRDKSNKLNYLVMGPWRHSQVNSDASSLGALNFDGDTARQFRRDVLRPFFDQYLVDGAPKAATPPVFIYNTGENHWDRLQAWPRSCDKGCAAKSKPLYLQAGGKLSFQAPTAAQPAFEEYVSDPAKPVPFVPRPVDFGDRSMWTTWLVHDQRFVDGRPDVLTFVTEPLTAPLQIAGAPDVHLQASTSGSDSDWVVKLIDVYPDEMAADPKMGGYELPVSMAIFRGRYRESFSTPAPLAANQPLAFQFGLPTANHTFQPGHRVMVQVQSSLFPLYDRNPQTYVPNVFFAKPGDYQKATQRVYVAPGQGSYISLPVR", + "vessel_id": "v0", + "ecnumber": "3.1.1.43", + "organism": "Xanthomonas campestris pv. campestris", + "organism_tax_id": null, + "references": [] + } + ], + "complexes": [ + { + "id": "c0", + "name": "E\u00b7PGME", + "constant": false, + "participants": [ + "p0", + "s0" + ] + }, + { + "id": "c1", + "name": "E\u00b77-ADCA", + "constant": false, + "participants": [ + "p0", + "s1" + ] + }, + { + "id": "c2", + "name": "E\u00b7PG", + "constant": false, + "participants": [ + "p0", + "s3" + ] + }, + { + "id": "c3", + "name": "E\u00b7PGME\u00b7PGME", + "constant": false, + "participants": [ + "p0", + "s0", + "s0" + ] + }, + { + "id": "c4", + "name": "EA\u00b77-ADCA", + "constant": false, + "participants": [ + "p1", + "s1" + ] + }, + { + "id": "c5", + "name": "EA\u00b7PGME", + "constant": false, + "participants": [ + "p1", + "s0" + ] + }, + { + "id": "c6", + "name": "E\u00b7CEX", + "constant": false, + "participants": [ + "p0", + "s2" + ] + } + ], + "small_molecules": [ + { + "id": "s0", + "name": "PGME", + "constant": false, + "vessel_id": "v0", + "canonical_smiles": null, + "inchi": null, + "inchikey": null, + "references": [] + }, + { + "id": "s1", + "name": "7-ADCA", + "constant": false, + "vessel_id": "v0", + "canonical_smiles": null, + "inchi": null, + "inchikey": null, + "references": [] + }, + { + "id": "s2", + "name": "CEX", + "constant": false, + "vessel_id": "v0", + "canonical_smiles": null, + "inchi": null, + "inchikey": null, + "references": [] + }, + { + "id": "s3", + "name": "PG", + "constant": false, + "vessel_id": "v0", + "canonical_smiles": null, + "inchi": null, + "inchikey": null, + "references": [] + } + ], + "reactions": [ + { + "id": "r0", + "name": "reaction-1", + "reversible": false, + "kinetic_law": { + "equation": "v_r * (K_n * c1 - p0 * s1)", + "equation_type": "EquationType.RATE_LAW", + "species_id": null, + "variables": [ + { + "id": "c1", + "name": "c1", + "symbol": "c1" + }, + { + "id": "p0", + "name": "p0", + "symbol": "p0" + }, + { + "id": "s1", + "name": "s1", + "symbol": "s1" + } + ] + }, + "species": [ + { + "species_id": "c1", + "stoichiometry": -1.0 + }, + { + "species_id": "p0", + "stoichiometry": 1.0 + }, + { + "species_id": "s1", + "stoichiometry": 1.0 + } + ], + "modifiers": [] + }, + { + "id": "r1", + "name": "reaction-2", + "reversible": false, + "kinetic_law": { + "equation": "v_r * (K_s * c0 - p0 * s0)", + "equation_type": "EquationType.RATE_LAW", + "species_id": null, + "variables": [ + { + "id": "c0", + "name": "c0", + "symbol": "c0" + }, + { + "id": "p0", + "name": "p0", + "symbol": "p0" + }, + { + "id": "s0", + "name": "s0", + "symbol": "s0" + } + ] + }, + "species": [ + { + "species_id": "c0", + "stoichiometry": -1.0 + }, + { + "species_id": "p0", + "stoichiometry": 1.0 + }, + { + "species_id": "s0", + "stoichiometry": 1.0 + } + ], + "modifiers": [] + }, + { + "id": "r10", + "name": "reaction-11", + "reversible": false, + "kinetic_law": { + "equation": "k_4 * c4 - k_4b * c6", + "equation_type": "EquationType.RATE_LAW", + "species_id": null, + "variables": [ + { + "id": "c4", + "name": "c4", + "symbol": "c4" + }, + { + "id": "c6", + "name": "c6", + "symbol": "c6" + } + ] + }, + "species": [ + { + "species_id": "c4", + "stoichiometry": -1.0 + }, + { + "species_id": "c6", + "stoichiometry": 1.0 + } + ], + "modifiers": [] + }, + { + "id": "r11", + "name": "reaction-12", + "reversible": false, + "kinetic_law": { + "equation": "v_r * (K_p * c6 - p0 * s2)", + "equation_type": "EquationType.RATE_LAW", + "species_id": null, + "variables": [ + { + "id": "c6", + "name": "c6", + "symbol": "c6" + }, + { + "id": "p0", + "name": "p0", + "symbol": "p0" + }, + { + "id": "s2", + "name": "s2", + "symbol": "s2" + } + ] + }, + "species": [ + { + "species_id": "c6", + "stoichiometry": -1.0 + }, + { + "species_id": "p0", + "stoichiometry": 1.0 + }, + { + "species_id": "s2", + "stoichiometry": 1.0 + } + ], + "modifiers": [] + }, + { + "id": "r12", + "name": "Enzyme deactivation", + "reversible": false, + "kinetic_law": { + "equation": "k_d * p0", + "equation_type": "EquationType.RATE_LAW", + "species_id": null, + "variables": [ + { + "id": "p0", + "name": "p0", + "symbol": "p0" + } + ] + }, + "species": [ + { + "species_id": "p0", + "stoichiometry": -1.0 + }, + { + "species_id": "p2", + "stoichiometry": 1.0 + } + ], + "modifiers": [] + }, + { + "id": "r2", + "name": "reaction-3", + "reversible": false, + "kinetic_law": { + "equation": "k_2 * c0", + "equation_type": "EquationType.RATE_LAW", + "species_id": null, + "variables": [ + { + "id": "c0", + "name": "c0", + "symbol": "c0" + } + ] + }, + "species": [ + { + "species_id": "c0", + "stoichiometry": -1.0 + }, + { + "species_id": "p1", + "stoichiometry": 1.0 + } + ], + "modifiers": [] + }, + { + "id": "r3", + "name": "reaction-4", + "reversible": false, + "kinetic_law": { + "equation": "v_r * (K_si * c3 - c0 * s0)", + "equation_type": "EquationType.RATE_LAW", + "species_id": null, + "variables": [ + { + "id": "c0", + "name": "c0", + "symbol": "c0" + }, + { + "id": "c3", + "name": "c3", + "symbol": "c3" + }, + { + "id": "s0", + "name": "s0", + "symbol": "s0" + } + ] + }, + "species": [ + { + "species_id": "c0", + "stoichiometry": 1.0 + }, + { + "species_id": "c3", + "stoichiometry": -1.0 + }, + { + "species_id": "s0", + "stoichiometry": 1.0 + } + ], + "modifiers": [] + }, + { + "id": "r4", + "name": "reaction-5", + "reversible": false, + "kinetic_law": { + "equation": "v_r * (K_si * c5 - p1 * s0)", + "equation_type": "EquationType.RATE_LAW", + "species_id": null, + "variables": [ + { + "id": "c5", + "name": "c5", + "symbol": "c5" + }, + { + "id": "p1", + "name": "p1", + "symbol": "p1" + }, + { + "id": "s0", + "name": "s0", + "symbol": "s0" + } + ] + }, + "species": [ + { + "species_id": "c5", + "stoichiometry": -1.0 + }, + { + "species_id": "p1", + "stoichiometry": 1.0 + }, + { + "species_id": "s0", + "stoichiometry": 1.0 + } + ], + "modifiers": [] + }, + { + "id": "r5", + "name": "reaction-6", + "reversible": false, + "kinetic_law": { + "equation": "k_6 * c5", + "equation_type": "EquationType.RATE_LAW", + "species_id": null, + "variables": [ + { + "id": "c5", + "name": "c5", + "symbol": "c5" + } + ] + }, + "species": [ + { + "species_id": "c5", + "stoichiometry": -1.0 + }, + { + "species_id": "p0", + "stoichiometry": 1.0 + }, + { + "species_id": "s3", + "stoichiometry": 1.0 + } + ], + "modifiers": [] + }, + { + "id": "r6", + "name": "reaction-7", + "reversible": false, + "kinetic_law": { + "equation": "k_3 * p1", + "equation_type": "EquationType.RATE_LAW", + "species_id": null, + "variables": [ + { + "id": "p1", + "name": "p1", + "symbol": "p1" + } + ] + }, + "species": [ + { + "species_id": "p0", + "stoichiometry": 1.0 + }, + { + "species_id": "p1", + "stoichiometry": -1.0 + }, + { + "species_id": "s3", + "stoichiometry": 1.0 + } + ], + "modifiers": [] + }, + { + "id": "r7", + "name": "reaction-8", + "reversible": false, + "kinetic_law": { + "equation": "v_r * (K_pg * c2 - p0 * s3)", + "equation_type": "EquationType.RATE_LAW", + "species_id": null, + "variables": [ + { + "id": "c2", + "name": "c2", + "symbol": "c2" + }, + { + "id": "p0", + "name": "p0", + "symbol": "p0" + }, + { + "id": "s3", + "name": "s3", + "symbol": "s3" + } + ] + }, + "species": [ + { + "species_id": "c2", + "stoichiometry": -1.0 + }, + { + "species_id": "p0", + "stoichiometry": 1.0 + }, + { + "species_id": "s3", + "stoichiometry": 1.0 + } + ], + "modifiers": [] + }, + { + "id": "r8", + "name": "reaction-9", + "reversible": false, + "kinetic_law": { + "equation": "v_r * (K_n * c4 - p1 * s1)", + "equation_type": "EquationType.RATE_LAW", + "species_id": null, + "variables": [ + { + "id": "c4", + "name": "c4", + "symbol": "c4" + }, + { + "id": "p1", + "name": "p1", + "symbol": "p1" + }, + { + "id": "s1", + "name": "s1", + "symbol": "s1" + } + ] + }, + "species": [ + { + "species_id": "c4", + "stoichiometry": -1.0 + }, + { + "species_id": "p1", + "stoichiometry": 1.0 + }, + { + "species_id": "s1", + "stoichiometry": 1.0 + } + ], + "modifiers": [] + }, + { + "id": "r9", + "name": "reaction-10", + "reversible": false, + "kinetic_law": { + "equation": "k_5 * c4", + "equation_type": "EquationType.RATE_LAW", + "species_id": null, + "variables": [ + { + "id": "c4", + "name": "c4", + "symbol": "c4" + } + ] + }, + "species": [ + { + "species_id": "c4", + "stoichiometry": -1.0 + }, + { + "species_id": "p0", + "stoichiometry": 1.0 + }, + { + "species_id": "s1", + "stoichiometry": 1.0 + }, + { + "species_id": "s3", + "stoichiometry": 1.0 + } + ], + "modifiers": [] + } + ], + "measurements": [ + { + "id": "m0", + "name": "Cephalexin synthesis 1", + "species_data": [ + { + "species_id": "p0", + "initial": 0.0002, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [], + "time": [], + "time_unit": null, + "is_simulated": false + }, + { + "species_id": "s0", + "initial": 20.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.645, + 12.45, + 16.385, + 20.0, + 5.135, + 9.255 + ], + "time": [], + "time_unit": null, + "is_simulated": false + }, + { + "species_id": "s1", + "initial": 10.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 10.0, + 10.575, + 5.18, + 5.815, + 5.94, + 7.025, + 7.57, + 8.72, + 8.945, + 9.87 + ], + "time": [], + "time_unit": null, + "is_simulated": false + }, + { + "species_id": "s2", + "initial": 0.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 0.0, + 0.575, + 1.075, + 1.915, + 2.66, + 3.24, + 3.885, + 4.815, + 4.9, + 5.755 + ], + "time": [], + "time_unit": null, + "is_simulated": false + }, + { + "species_id": "s3", + "initial": 2.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 11.965, + 17.28, + 19.93, + 2.0, + 21.36, + 22.55, + 23.38, + 3.705, + 5.77, + 8.035 + ], + "time": [], + "time_unit": null, + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "m1", + "name": "Cephalexin synthesis 2", + "species_data": [ + { + "species_id": "p0", + "initial": 0.0002, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [], + "time": [], + "time_unit": null, + "is_simulated": false + }, + { + "species_id": "s0", + "initial": 20.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 0.0, + 0.0, + 0.0, + 0.0, + 1.32, + 12.67, + 16.5, + 20.0, + 5.91, + 9.915 + ], + "time": [], + "time_unit": null, + "is_simulated": false + }, + { + "species_id": "s1", + "initial": 20.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 12.625, + 13.14, + 14.2, + 14.82, + 15.445, + 16.255, + 17.02, + 18.5, + 18.58, + 20.0 + ], + "time": [], + "time_unit": null, + "is_simulated": false + }, + { + "species_id": "s2", + "initial": 0.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 0.0, + 2.0, + 3.205, + 4.1, + 5.09, + 5.63, + 6.385, + 7.17, + 7.855, + 8.225 + ], + "time": [], + "time_unit": null, + "is_simulated": false + }, + { + "species_id": "s3", + "initial": 1.3, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 1.3, + 13.25, + 16.055, + 17.62, + 19.34, + 2.955, + 20.8, + 4.615, + 6.175, + 8.8 + ], + "time": [], + "time_unit": null, + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "m2", + "name": "Cephalexin synthesis 3", + "species_data": [ + { + "species_id": "p0", + "initial": 0.0002, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [], + "time": [], + "time_unit": null, + "is_simulated": false + }, + { + "species_id": "s0", + "initial": 20.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.91, + 13.005, + 20.0, + 4.0, + 7.21, + 9.505 + ], + "time": [], + "time_unit": null, + "is_simulated": false + }, + { + "species_id": "s1", + "initial": 40.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 29.985, + 30.405, + 30.675, + 31.905, + 32.49, + 33.045, + 33.87, + 34.525, + 36.555, + 40.0 + ], + "time": [], + "time_unit": null, + "is_simulated": false + }, + { + "species_id": "s2", + "initial": 0.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 0.0, + 3.59, + 5.57, + 5.69, + 6.39, + 6.85, + 7.255, + 8.18, + 8.24, + 8.945 + ], + "time": [], + "time_unit": null, + "is_simulated": false + }, + { + "species_id": "s3", + "initial": 5.1, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 10.13, + 12.93, + 14.565, + 15.8, + 16.98, + 18.15, + 5.1, + 6.365, + 7.59, + 8.59 + ], + "time": [], + "time_unit": null, + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "m3", + "name": "Cephalexin synthesis 4", + "species_data": [ + { + "species_id": "p0", + "initial": 0.0002, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [], + "time": [], + "time_unit": null, + "is_simulated": false + }, + { + "species_id": "s0", + "initial": 20.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 0.0, + 0.0, + 0.0, + 0.385, + 1.455, + 11.64, + 15.345, + 20.0, + 5.265, + 8.975 + ], + "time": [], + "time_unit": null, + "is_simulated": false + }, + { + "species_id": "s1", + "initial": 60.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 47.6, + 48.185, + 48.265, + 49.0, + 50.76, + 51.6, + 52.505, + 53.58, + 56.8, + 60.0 + ], + "time": [], + "time_unit": null, + "is_simulated": false + }, + { + "species_id": "s2", + "initial": 0.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 0.0, + 10.2, + 11.065, + 11.325, + 3.77, + 6.11, + 7.74, + 9.005, + 9.595, + 9.66 + ], + "time": [], + "time_unit": null, + "is_simulated": false + }, + { + "species_id": "s3", + "initial": 1.9, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 1.9, + 10.61, + 12.0, + 13.075, + 14.24, + 2.94, + 3.99, + 4.935, + 6.305, + 8.87 + ], + "time": [], + "time_unit": null, + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "m4", + "name": "Cephalexin synthesis 5", + "species_data": [ + { + "species_id": "p0", + "initial": 0.0002, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [], + "time": [], + "time_unit": null, + "is_simulated": false + }, + { + "species_id": "s0", + "initial": 20.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 0.0, + 0.0, + 0.0, + 0.35, + 1.46, + 12.075, + 15.34, + 20.0, + 5.515, + 9.335 + ], + "time": [], + "time_unit": null, + "is_simulated": false + }, + { + "species_id": "s1", + "initial": 42.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 29.595, + 30.615, + 31.46, + 31.83, + 32.985, + 34.06, + 34.08, + 36.06, + 38.405, + 42.0 + ], + "time": [], + "time_unit": null, + "is_simulated": false + }, + { + "species_id": "s2", + "initial": 0.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 0.0, + 3.42, + 5.52, + 6.695, + 6.99, + 7.47, + 8.515, + 8.78, + 9.44, + 9.875 + ], + "time": [], + "time_unit": null, + "is_simulated": false + }, + { + "species_id": "s3", + "initial": 1.5, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 1.5, + 11.49, + 13.08, + 14.505, + 15.63, + 2.815, + 4.105, + 5.085, + 6.69, + 9.535 + ], + "time": [], + "time_unit": null, + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "m5", + "name": "Cephalexin synthesis 6", + "species_data": [ + { + "species_id": "p0", + "initial": 0.0002, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [], + "time": [], + "time_unit": null, + "is_simulated": false + }, + { + "species_id": "s0", + "initial": 40.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 0.84, + 1.695, + 10.1, + 21.225, + 27.01, + 3.33, + 31.035, + 34.595, + 40.0, + 5.9 + ], + "time": [], + "time_unit": null, + "is_simulated": false + }, + { + "species_id": "s1", + "initial": 42.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 22.595, + 23.0, + 23.09, + 24.5, + 24.8, + 29.17, + 32.805, + 34.9, + 37.9, + 42.0 + ], + "time": [], + "time_unit": null, + "is_simulated": false + }, + { + "species_id": "s2", + "initial": 0.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 0.0, + 11.1, + 15.255, + 15.645, + 15.81, + 16.345, + 16.5, + 3.625, + 6.4, + 8.5 + ], + "time": [], + "time_unit": null, + "is_simulated": false + }, + { + "species_id": "s3", + "initial": 3.3, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 11.1, + 17.315, + 20.5, + 22.605, + 24.925, + 26.5, + 3.3, + 4.75, + 6.13, + 7.52 + ], + "time": [], + "time_unit": null, + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "m6", + "name": "Cephalexin synthesis 7", + "species_data": [ + { + "species_id": "p0", + "initial": 0.0002, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [], + "time": [], + "time_unit": null, + "is_simulated": false + }, + { + "species_id": "s0", + "initial": 76.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 19.7, + 24.655, + 30.4, + 38.03, + 46.9, + 60.2, + 65.6, + 69.3, + 73.36, + 76.0 + ], + "time": [], + "time_unit": null, + "is_simulated": false + }, + { + "species_id": "s1", + "initial": 40.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 18.36, + 19.445, + 20.805, + 22.94, + 25.965, + 31.025, + 34.09, + 36.175, + 38.51, + 40.0 + ], + "time": [], + "time_unit": null, + "is_simulated": false + }, + { + "species_id": "s2", + "initial": 0.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 0.0, + 10.295, + 15.76, + 18.74, + 20.755, + 21.89, + 22.875, + 3.04, + 5.195, + 7.28 + ], + "time": [], + "time_unit": null, + "is_simulated": false + }, + { + "species_id": "s3", + "initial": 5.7, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 10.4, + 13.49, + 20.83, + 26.8, + 32.53, + 36.77, + 41.13, + 5.7, + 7.21, + 8.735 + ], + "time": [], + "time_unit": null, + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "m7", + "name": "Cephalexin synthesis 8", + "species_data": [ + { + "species_id": "p0", + "initial": 0.0002, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [], + "time": [], + "time_unit": null, + "is_simulated": false + }, + { + "species_id": "s0", + "initial": 140.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 124.6, + 125.96, + 126.75, + 128.395, + 130.085, + 132.905, + 134.745, + 136.0, + 138.2, + 140.0 + ], + "time": [], + "time_unit": null, + "is_simulated": false + }, + { + "species_id": "s1", + "initial": 40.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 32.8, + 33.035, + 33.11, + 33.71, + 34.61, + 36.155, + 36.88, + 37.725, + 38.8, + 40.0 + ], + "time": [], + "time_unit": null, + "is_simulated": false + }, + { + "species_id": "s2", + "initial": 0.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 0.0, + 1.53, + 2.395, + 3.04, + 3.895, + 4.99, + 5.545, + 5.98, + 6.325, + 6.625 + ], + "time": [], + "time_unit": null, + "is_simulated": false + }, + { + "species_id": "s3", + "initial": 14.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 14.0, + 17.9, + 18.85, + 19.735, + 20.84, + 22.595, + 23.62, + 25.0, + 26.025, + 26.93 + ], + "time": [], + "time_unit": null, + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + } + ], + "equations": [], + "parameters": [ + { + "id": "K_n", + "name": "", + "symbol": "K_n", + "value": null, + "unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "initial_value": null, + "upper": null, + "lower": null, + "stderr": null, + "constant": false + }, + { + "id": "K_si", + "name": "", + "symbol": "K_si", + "value": null, + "unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "initial_value": null, + "upper": null, + "lower": null, + "stderr": null, + "constant": false + }, + { + "id": "v_r", + "name": "", + "symbol": "v_r", + "value": null, + "unit": { + "id": "u5", + "name": "l / min mmole", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": 1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": -1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "UnitType.SECOND", + "exponent": -1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "initial_value": null, + "upper": null, + "lower": null, + "stderr": null, + "constant": true + } + ] +} \ No newline at end of file diff --git a/dev-examples/legacy/Model_4.omex b/dev-examples/legacy/Model_4.omex new file mode 100644 index 0000000000000000000000000000000000000000..3783b00c3a106982ccb4620bb824b07276369267 GIT binary patch literal 13024 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
+o(6;a7A5dmy(Sn9})5gDqJ6JG&nMq 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 literal 0 HcmV?d00001 diff --git a/dev-examples/legacy/enzml_legacy_to_v2.json b/dev-examples/legacy/enzml_legacy_to_v2.json new file mode 100644 index 00000000..f5f08360 --- /dev/null +++ b/dev-examples/legacy/enzml_legacy_to_v2.json @@ -0,0 +1,3185 @@ +{ + "name": "EnzymeML_Lagerman", + "references": [], + "created": null, + "modified": null, + "creators": [], + "vessels": [ + { + "id": "v0", + "name": "Falcon Tube", + "volume": 5.0, + "unit": { + "id": "u0", + "name": "ml", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "constant": true + } + ], + "proteins": [ + { + "id": "p0", + "name": "E", + "constant": false, + "sequence": "MRRLAACLLATAVAAATSAALAQTSPMTPDITGKPFVAGDAANDYVKREVMIPMRDGVKLHTVIVLPKGARNAPIVLTRTPYDASGRTERLASPHMKDLLSAGDDVFVEGGYIRVFQDVRGKYGSEGDYVMTRPLRGPLNPSEVDHATDAWDTIDWLVKNVKESNGKVGMIGSSYEGFTVVMALTNPHPALKVAAPESPMIDGWMGDDWFNYGAFRQVNFDYFTGQLSKRGKGAGIPRQGHDDYSNFLQAGSAGDFAKAAGLEQLPWWHKLTEHAAYDSFWQEQALDKVMARTPLKVPTMWLQGLWDQEDMWGAIHSYAAMEPRDKSNKLNYLVMGPWRHSQVNSDASSLGALNFDGDTARQFRRDVLRPFFDQYLVDGAPKAATPPVFIYNTGENHWDRLQAWPRSCDKGCAAKSKPLYLQAGGKLSFQAPTAAQPAFEEYVSDPAKPVPFVPRPVDFGDRSMWTTWLVHDQRFVDGRPDVLTFVTEPLTAPLQIAGAPDVHLQASTSGSDSDWVVKLIDVYPDEMAADPKMGGYELPVSMAIFRGRYRESFSTPAPLAANQPLAFQFGLPTANHTFQPGHRVMVQVQSSLFPLYDRNPQTYVPNVFFAKPGDYQKATQRVYVAPGQGSYISLPVR", + "vessel_id": "v0", + "ecnumber": "3.1.1.43", + "organism": "Xanthomonas campestris pv. campestris", + "organism_tax_id": null, + "references": [] + }, + { + "id": "p1", + "name": "EA", + "constant": false, + "sequence": "MRRLAACLLATAVAAATSAALAQTSPMTPDITGKPFVAGDAANDYVKREVMIPMRDGVKLHTVIVLPKGARNAPIVLTRTPYDASGRTERLASPHMKDLLSAGDDVFVEGGYIRVFQDVRGKYGSEGDYVMTRPLRGPLNPSEVDHATDAWDTIDWLVKNVKESNGKVGMIGSSYEGFTVVMALTNPHPALKVAAPESPMIDGWMGDDWFNYGAFRQVNFDYFTGQLSKRGKGAGIPRQGHDDYSNFLQAGSAGDFAKAAGLEQLPWWHKLTEHAAYDSFWQEQALDKVMARTPLKVPTMWLQGLWDQEDMWGAIHSYAAMEPRDKSNKLNYLVMGPWRHSQVNSDASSLGALNFDGDTARQFRRDVLRPFFDQYLVDGAPKAATPPVFIYNTGENHWDRLQAWPRSCDKGCAAKSKPLYLQAGGKLSFQAPTAAQPAFEEYVSDPAKPVPFVPRPVDFGDRSMWTTWLVHDQRFVDGRPDVLTFVTEPLTAPLQIAGAPDVHLQASTSGSDSDWVVKLIDVYPDEMAADPKMGGYELPVSMAIFRGRYRESFSTPAPLAANQPLAFQFGLPTANHTFQPGHRVMVQVQSSLFPLYDRNPQTYVPNVFFAKPGDYQKATQRVYVAPGQGSYISLPVR", + "vessel_id": "v0", + "ecnumber": "3.1.1.43", + "organism": "Xanthomonas campestris pv. campestris", + "organism_tax_id": null, + "references": [] + }, + { + "id": "p2", + "name": "ED", + "constant": false, + "sequence": "MRRLAACLLATAVAAATSAALAQTSPMTPDITGKPFVAGDAANDYVKREVMIPMRDGVKLHTVIVLPKGARNAPIVLTRTPYDASGRTERLASPHMKDLLSAGDDVFVEGGYIRVFQDVRGKYGSEGDYVMTRPLRGPLNPSEVDHATDAWDTIDWLVKNVKESNGKVGMIGSSYEGFTVVMALTNPHPALKVAAPESPMIDGWMGDDWFNYGAFRQVNFDYFTGQLSKRGKGAGIPRQGHDDYSNFLQAGSAGDFAKAAGLEQLPWWHKLTEHAAYDSFWQEQALDKVMARTPLKVPTMWLQGLWDQEDMWGAIHSYAAMEPRDKSNKLNYLVMGPWRHSQVNSDASSLGALNFDGDTARQFRRDVLRPFFDQYLVDGAPKAATPPVFIYNTGENHWDRLQAWPRSCDKGCAAKSKPLYLQAGGKLSFQAPTAAQPAFEEYVSDPAKPVPFVPRPVDFGDRSMWTTWLVHDQRFVDGRPDVLTFVTEPLTAPLQIAGAPDVHLQASTSGSDSDWVVKLIDVYPDEMAADPKMGGYELPVSMAIFRGRYRESFSTPAPLAANQPLAFQFGLPTANHTFQPGHRVMVQVQSSLFPLYDRNPQTYVPNVFFAKPGDYQKATQRVYVAPGQGSYISLPVR", + "vessel_id": "v0", + "ecnumber": "3.1.1.43", + "organism": "Xanthomonas campestris pv. campestris", + "organism_tax_id": null, + "references": [] + } + ], + "complexes": [ + { + "id": "c0", + "name": "E\u00b7PGME", + "constant": false, + "participants": [ + "p0", + "s0" + ] + }, + { + "id": "c1", + "name": "E\u00b77-ADCA", + "constant": false, + "participants": [ + "p0", + "s1" + ] + }, + { + "id": "c2", + "name": "E\u00b7PG", + "constant": false, + "participants": [ + "p0", + "s3" + ] + }, + { + "id": "c3", + "name": "E\u00b7PGME\u00b7PGME", + "constant": false, + "participants": [ + "p0", + "s0", + "s0" + ] + }, + { + "id": "c4", + "name": "EA\u00b77-ADCA", + "constant": false, + "participants": [ + "p1", + "s1" + ] + }, + { + "id": "c5", + "name": "EA\u00b7PGME", + "constant": false, + "participants": [ + "p1", + "s0" + ] + }, + { + "id": "c6", + "name": "E\u00b7CEX", + "constant": false, + "participants": [ + "p0", + "s2" + ] + } + ], + "small_molecules": [ + { + "id": "s0", + "name": "PGME", + "constant": false, + "vessel_id": "v0", + "canonical_smiles": null, + "inchi": null, + "inchikey": null, + "references": [] + }, + { + "id": "s1", + "name": "7-ADCA", + "constant": false, + "vessel_id": "v0", + "canonical_smiles": null, + "inchi": null, + "inchikey": null, + "references": [] + }, + { + "id": "s2", + "name": "CEX", + "constant": false, + "vessel_id": "v0", + "canonical_smiles": null, + "inchi": null, + "inchikey": null, + "references": [] + }, + { + "id": "s3", + "name": "PG", + "constant": false, + "vessel_id": "v0", + "canonical_smiles": null, + "inchi": null, + "inchikey": null, + "references": [] + } + ], + "reactions": [ + { + "id": "r0", + "name": "reaction-1", + "reversible": false, + "kinetic_law": { + "equation": "v_r * (K_n * c1 - p0 * s1)", + "equation_type": "EquationType.RATE_LAW", + "species_id": null, + "variables": [ + { + "id": "c1", + "name": "c1", + "symbol": "c1" + }, + { + "id": "p0", + "name": "p0", + "symbol": "p0" + }, + { + "id": "s1", + "name": "s1", + "symbol": "s1" + } + ] + }, + "species": [ + { + "species_id": "c1", + "stoichiometry": -1.0 + }, + { + "species_id": "p0", + "stoichiometry": 1.0 + }, + { + "species_id": "s1", + "stoichiometry": 1.0 + } + ], + "modifiers": [] + }, + { + "id": "r1", + "name": "reaction-2", + "reversible": false, + "kinetic_law": { + "equation": "v_r * (K_s * c0 - p0 * s0)", + "equation_type": "EquationType.RATE_LAW", + "species_id": null, + "variables": [ + { + "id": "c0", + "name": "c0", + "symbol": "c0" + }, + { + "id": "p0", + "name": "p0", + "symbol": "p0" + }, + { + "id": "s0", + "name": "s0", + "symbol": "s0" + } + ] + }, + "species": [ + { + "species_id": "c0", + "stoichiometry": -1.0 + }, + { + "species_id": "p0", + "stoichiometry": 1.0 + }, + { + "species_id": "s0", + "stoichiometry": 1.0 + } + ], + "modifiers": [] + }, + { + "id": "r10", + "name": "reaction-11", + "reversible": false, + "kinetic_law": { + "equation": "k_4 * c4 - k_4b * c6", + "equation_type": "EquationType.RATE_LAW", + "species_id": null, + "variables": [ + { + "id": "c4", + "name": "c4", + "symbol": "c4" + }, + { + "id": "c6", + "name": "c6", + "symbol": "c6" + } + ] + }, + "species": [ + { + "species_id": "c4", + "stoichiometry": -1.0 + }, + { + "species_id": "c6", + "stoichiometry": 1.0 + } + ], + "modifiers": [] + }, + { + "id": "r11", + "name": "reaction-12", + "reversible": false, + "kinetic_law": { + "equation": "v_r * (K_p * c6 - p0 * s2)", + "equation_type": "EquationType.RATE_LAW", + "species_id": null, + "variables": [ + { + "id": "c6", + "name": "c6", + "symbol": "c6" + }, + { + "id": "p0", + "name": "p0", + "symbol": "p0" + }, + { + "id": "s2", + "name": "s2", + "symbol": "s2" + } + ] + }, + "species": [ + { + "species_id": "c6", + "stoichiometry": -1.0 + }, + { + "species_id": "p0", + "stoichiometry": 1.0 + }, + { + "species_id": "s2", + "stoichiometry": 1.0 + } + ], + "modifiers": [] + }, + { + "id": "r12", + "name": "Enzyme deactivation", + "reversible": false, + "kinetic_law": { + "equation": "k_d * p0", + "equation_type": "EquationType.RATE_LAW", + "species_id": null, + "variables": [ + { + "id": "p0", + "name": "p0", + "symbol": "p0" + } + ] + }, + "species": [ + { + "species_id": "p0", + "stoichiometry": -1.0 + }, + { + "species_id": "p2", + "stoichiometry": 1.0 + } + ], + "modifiers": [] + }, + { + "id": "r2", + "name": "reaction-3", + "reversible": false, + "kinetic_law": { + "equation": "k_2 * c0", + "equation_type": "EquationType.RATE_LAW", + "species_id": null, + "variables": [ + { + "id": "c0", + "name": "c0", + "symbol": "c0" + } + ] + }, + "species": [ + { + "species_id": "c0", + "stoichiometry": -1.0 + }, + { + "species_id": "p1", + "stoichiometry": 1.0 + } + ], + "modifiers": [] + }, + { + "id": "r3", + "name": "reaction-4", + "reversible": false, + "kinetic_law": { + "equation": "v_r * (K_si * c3 - c0 * s0)", + "equation_type": "EquationType.RATE_LAW", + "species_id": null, + "variables": [ + { + "id": "c0", + "name": "c0", + "symbol": "c0" + }, + { + "id": "c3", + "name": "c3", + "symbol": "c3" + }, + { + "id": "s0", + "name": "s0", + "symbol": "s0" + } + ] + }, + "species": [ + { + "species_id": "c0", + "stoichiometry": 1.0 + }, + { + "species_id": "c3", + "stoichiometry": -1.0 + }, + { + "species_id": "s0", + "stoichiometry": 1.0 + } + ], + "modifiers": [] + }, + { + "id": "r4", + "name": "reaction-5", + "reversible": false, + "kinetic_law": { + "equation": "v_r * (K_si * c5 - p1 * s0)", + "equation_type": "EquationType.RATE_LAW", + "species_id": null, + "variables": [ + { + "id": "c5", + "name": "c5", + "symbol": "c5" + }, + { + "id": "p1", + "name": "p1", + "symbol": "p1" + }, + { + "id": "s0", + "name": "s0", + "symbol": "s0" + } + ] + }, + "species": [ + { + "species_id": "c5", + "stoichiometry": -1.0 + }, + { + "species_id": "p1", + "stoichiometry": 1.0 + }, + { + "species_id": "s0", + "stoichiometry": 1.0 + } + ], + "modifiers": [] + }, + { + "id": "r5", + "name": "reaction-6", + "reversible": false, + "kinetic_law": { + "equation": "k_6 * c5", + "equation_type": "EquationType.RATE_LAW", + "species_id": null, + "variables": [ + { + "id": "c5", + "name": "c5", + "symbol": "c5" + } + ] + }, + "species": [ + { + "species_id": "c5", + "stoichiometry": -1.0 + }, + { + "species_id": "p0", + "stoichiometry": 1.0 + }, + { + "species_id": "s3", + "stoichiometry": 1.0 + } + ], + "modifiers": [] + }, + { + "id": "r6", + "name": "reaction-7", + "reversible": false, + "kinetic_law": { + "equation": "k_3 * p1", + "equation_type": "EquationType.RATE_LAW", + "species_id": null, + "variables": [ + { + "id": "p1", + "name": "p1", + "symbol": "p1" + } + ] + }, + "species": [ + { + "species_id": "p0", + "stoichiometry": 1.0 + }, + { + "species_id": "p1", + "stoichiometry": -1.0 + }, + { + "species_id": "s3", + "stoichiometry": 1.0 + } + ], + "modifiers": [] + }, + { + "id": "r7", + "name": "reaction-8", + "reversible": false, + "kinetic_law": { + "equation": "v_r * (K_pg * c2 - p0 * s3)", + "equation_type": "EquationType.RATE_LAW", + "species_id": null, + "variables": [ + { + "id": "c2", + "name": "c2", + "symbol": "c2" + }, + { + "id": "p0", + "name": "p0", + "symbol": "p0" + }, + { + "id": "s3", + "name": "s3", + "symbol": "s3" + } + ] + }, + "species": [ + { + "species_id": "c2", + "stoichiometry": -1.0 + }, + { + "species_id": "p0", + "stoichiometry": 1.0 + }, + { + "species_id": "s3", + "stoichiometry": 1.0 + } + ], + "modifiers": [] + }, + { + "id": "r8", + "name": "reaction-9", + "reversible": false, + "kinetic_law": { + "equation": "v_r * (K_n * c4 - p1 * s1)", + "equation_type": "EquationType.RATE_LAW", + "species_id": null, + "variables": [ + { + "id": "c4", + "name": "c4", + "symbol": "c4" + }, + { + "id": "p1", + "name": "p1", + "symbol": "p1" + }, + { + "id": "s1", + "name": "s1", + "symbol": "s1" + } + ] + }, + "species": [ + { + "species_id": "c4", + "stoichiometry": -1.0 + }, + { + "species_id": "p1", + "stoichiometry": 1.0 + }, + { + "species_id": "s1", + "stoichiometry": 1.0 + } + ], + "modifiers": [] + }, + { + "id": "r9", + "name": "reaction-10", + "reversible": false, + "kinetic_law": { + "equation": "k_5 * c4", + "equation_type": "EquationType.RATE_LAW", + "species_id": null, + "variables": [ + { + "id": "c4", + "name": "c4", + "symbol": "c4" + } + ] + }, + "species": [ + { + "species_id": "c4", + "stoichiometry": -1.0 + }, + { + "species_id": "p0", + "stoichiometry": 1.0 + }, + { + "species_id": "s1", + "stoichiometry": 1.0 + }, + { + "species_id": "s3", + "stoichiometry": 1.0 + } + ], + "modifiers": [] + } + ], + "measurements": [ + { + "id": "m0", + "name": "Cephalexin synthesis 1", + "species_data": [ + { + "species_id": "p0", + "initial": 0.0002, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + }, + { + "species_id": "s0", + "initial": 20.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.645, + 12.45, + 16.385, + 20.0, + 5.135, + 9.255 + ], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + }, + { + "species_id": "s1", + "initial": 10.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 10.0, + 10.575, + 5.18, + 5.815, + 5.94, + 7.025, + 7.57, + 8.72, + 8.945, + 9.87 + ], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + }, + { + "species_id": "s2", + "initial": 0.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 0.0, + 0.575, + 1.075, + 1.915, + 2.66, + 3.24, + 3.885, + 4.815, + 4.9, + 5.755 + ], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + }, + { + "species_id": "s3", + "initial": 2.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 11.965, + 17.28, + 19.93, + 2.0, + 21.36, + 22.55, + 23.38, + 3.705, + 5.77, + 8.035 + ], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "m1", + "name": "Cephalexin synthesis 2", + "species_data": [ + { + "species_id": "p0", + "initial": 0.0002, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + }, + { + "species_id": "s0", + "initial": 20.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 0.0, + 0.0, + 0.0, + 0.0, + 1.32, + 12.67, + 16.5, + 20.0, + 5.91, + 9.915 + ], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + }, + { + "species_id": "s1", + "initial": 20.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 12.625, + 13.14, + 14.2, + 14.82, + 15.445, + 16.255, + 17.02, + 18.5, + 18.58, + 20.0 + ], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + }, + { + "species_id": "s2", + "initial": 0.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 0.0, + 2.0, + 3.205, + 4.1, + 5.09, + 5.63, + 6.385, + 7.17, + 7.855, + 8.225 + ], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + }, + { + "species_id": "s3", + "initial": 1.3, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 1.3, + 13.25, + 16.055, + 17.62, + 19.34, + 2.955, + 20.8, + 4.615, + 6.175, + 8.8 + ], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "m2", + "name": "Cephalexin synthesis 3", + "species_data": [ + { + "species_id": "p0", + "initial": 0.0002, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + }, + { + "species_id": "s0", + "initial": 20.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.91, + 13.005, + 20.0, + 4.0, + 7.21, + 9.505 + ], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + }, + { + "species_id": "s1", + "initial": 40.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 29.985, + 30.405, + 30.675, + 31.905, + 32.49, + 33.045, + 33.87, + 34.525, + 36.555, + 40.0 + ], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + }, + { + "species_id": "s2", + "initial": 0.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 0.0, + 3.59, + 5.57, + 5.69, + 6.39, + 6.85, + 7.255, + 8.18, + 8.24, + 8.945 + ], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + }, + { + "species_id": "s3", + "initial": 5.1, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 10.13, + 12.93, + 14.565, + 15.8, + 16.98, + 18.15, + 5.1, + 6.365, + 7.59, + 8.59 + ], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "m3", + "name": "Cephalexin synthesis 4", + "species_data": [ + { + "species_id": "p0", + "initial": 0.0002, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + }, + { + "species_id": "s0", + "initial": 20.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 0.0, + 0.0, + 0.0, + 0.385, + 1.455, + 11.64, + 15.345, + 20.0, + 5.265, + 8.975 + ], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + }, + { + "species_id": "s1", + "initial": 60.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 47.6, + 48.185, + 48.265, + 49.0, + 50.76, + 51.6, + 52.505, + 53.58, + 56.8, + 60.0 + ], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + }, + { + "species_id": "s2", + "initial": 0.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 0.0, + 10.2, + 11.065, + 11.325, + 3.77, + 6.11, + 7.74, + 9.005, + 9.595, + 9.66 + ], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + }, + { + "species_id": "s3", + "initial": 1.9, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 1.9, + 10.61, + 12.0, + 13.075, + 14.24, + 2.94, + 3.99, + 4.935, + 6.305, + 8.87 + ], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "m4", + "name": "Cephalexin synthesis 5", + "species_data": [ + { + "species_id": "p0", + "initial": 0.0002, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + }, + { + "species_id": "s0", + "initial": 20.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 0.0, + 0.0, + 0.0, + 0.35, + 1.46, + 12.075, + 15.34, + 20.0, + 5.515, + 9.335 + ], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + }, + { + "species_id": "s1", + "initial": 42.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 29.595, + 30.615, + 31.46, + 31.83, + 32.985, + 34.06, + 34.08, + 36.06, + 38.405, + 42.0 + ], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + }, + { + "species_id": "s2", + "initial": 0.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 0.0, + 3.42, + 5.52, + 6.695, + 6.99, + 7.47, + 8.515, + 8.78, + 9.44, + 9.875 + ], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + }, + { + "species_id": "s3", + "initial": 1.5, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 1.5, + 11.49, + 13.08, + 14.505, + 15.63, + 2.815, + 4.105, + 5.085, + 6.69, + 9.535 + ], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "m5", + "name": "Cephalexin synthesis 6", + "species_data": [ + { + "species_id": "p0", + "initial": 0.0002, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + }, + { + "species_id": "s0", + "initial": 40.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 0.84, + 1.695, + 10.1, + 21.225, + 27.01, + 3.33, + 31.035, + 34.595, + 40.0, + 5.9 + ], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + }, + { + "species_id": "s1", + "initial": 42.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 22.595, + 23.0, + 23.09, + 24.5, + 24.8, + 29.17, + 32.805, + 34.9, + 37.9, + 42.0 + ], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + }, + { + "species_id": "s2", + "initial": 0.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 0.0, + 11.1, + 15.255, + 15.645, + 15.81, + 16.345, + 16.5, + 3.625, + 6.4, + 8.5 + ], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + }, + { + "species_id": "s3", + "initial": 3.3, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 11.1, + 17.315, + 20.5, + 22.605, + 24.925, + 26.5, + 3.3, + 4.75, + 6.13, + 7.52 + ], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "m6", + "name": "Cephalexin synthesis 7", + "species_data": [ + { + "species_id": "p0", + "initial": 0.0002, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + }, + { + "species_id": "s0", + "initial": 76.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 19.7, + 24.655, + 30.4, + 38.03, + 46.9, + 60.2, + 65.6, + 69.3, + 73.36, + 76.0 + ], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + }, + { + "species_id": "s1", + "initial": 40.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 18.36, + 19.445, + 20.805, + 22.94, + 25.965, + 31.025, + 34.09, + 36.175, + 38.51, + 40.0 + ], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + }, + { + "species_id": "s2", + "initial": 0.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 0.0, + 10.295, + 15.76, + 18.74, + 20.755, + 21.89, + 22.875, + 3.04, + 5.195, + 7.28 + ], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + }, + { + "species_id": "s3", + "initial": 5.7, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 10.4, + 13.49, + 20.83, + 26.8, + 32.53, + 36.77, + 41.13, + 5.7, + 7.21, + 8.735 + ], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "m7", + "name": "Cephalexin synthesis 8", + "species_data": [ + { + "species_id": "p0", + "initial": 0.0002, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + }, + { + "species_id": "s0", + "initial": 140.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 124.6, + 125.96, + 126.75, + 128.395, + 130.085, + 132.905, + 134.745, + 136.0, + 138.2, + 140.0 + ], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + }, + { + "species_id": "s1", + "initial": 40.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 32.8, + 33.035, + 33.11, + 33.71, + 34.61, + 36.155, + 36.88, + 37.725, + 38.8, + 40.0 + ], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + }, + { + "species_id": "s2", + "initial": 0.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 0.0, + 1.53, + 2.395, + 3.04, + 3.895, + 4.99, + 5.545, + 5.98, + 6.325, + 6.625 + ], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + }, + { + "species_id": "s3", + "initial": 14.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "DataTypes.CONCENTRATION", + "prepared": null, + "data": [ + 14.0, + 17.9, + 18.85, + 19.735, + 20.84, + 22.595, + 23.62, + 25.0, + 26.025, + 26.93 + ], + "time": [ + 0.0, + 1.0, + 10.0, + 15.0, + 2.0, + 20.0, + 25.0, + 3.0, + 30.0, + 5.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "UnitType.SECOND", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + } + ], + "equations": [], + "parameters": [ + { + "id": "K_n", + "name": "", + "symbol": "K_n", + "value": null, + "unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "initial_value": null, + "upper": null, + "lower": null, + "stderr": null, + "constant": false + }, + { + "id": "K_si", + "name": "", + "symbol": "K_si", + "value": null, + "unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "initial_value": null, + "upper": null, + "lower": null, + "stderr": null, + "constant": false + }, + { + "id": "v_r", + "name": "", + "symbol": "v_r", + "value": null, + "unit": { + "id": "u5", + "name": "l / min mmole", + "base_units": [ + { + "kind": "UnitType.LITRE", + "exponent": 1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "UnitType.MOLE", + "exponent": -1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "UnitType.SECOND", + "exponent": -1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "initial_value": null, + "upper": null, + "lower": null, + "stderr": null, + "constant": true + } + ] +} \ No newline at end of file diff --git a/dev-examples/odes/enzymeml.json b/dev-examples/odes/enzymeml.json index aa587a1f..ac2726ad 100644 --- a/dev-examples/odes/enzymeml.json +++ b/dev-examples/odes/enzymeml.json @@ -12,7 +12,7 @@ "modified": "schema:dateModified", "creators": "schema:creator" }, - "@id": "enzml:EnzymeMLDocument/0e46ba63-85a2-4030-ae03-9cffa8f347cd", + "@id": "enzml:EnzymeMLDocument/bb1cafa6-fe2a-4ad1-b482-5f70fcddb14d", "@type": [ "enzml:EnzymeMLDocument" ], @@ -32,7 +32,7 @@ "name": "schema:name", "volume": "OBO:OBI_0002139" }, - "@id": "enzml:Vessel/fedbf6f5-4515-4868-830f-1b41033de3b8", + "@id": "enzml:Vessel/cf0cec45-255b-4aac-80af-8a0ba95f0c8a", "@type": [ "enzml:Vessel", "OBO:OBI_0400081" @@ -59,7 +59,7 @@ "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/9f6745b1-66d0-4180-b1ac-c10cc8e87c96", + "@id": "enzml:BaseUnit/5b814786-75f3-4d74-8d67-e1e898835ea9", "@type": [ "enzml:BaseUnit" ], @@ -96,7 +96,7 @@ "@type": "@id" } }, - "@id": "enzml:Protein/d8bc713a-bcf5-4c24-981b-16a7baa1cc0b", + "@id": "enzml:Protein/cd86e6ac-619a-471f-9c25-7c9de9e69ecd", "@type": [ "enzml:Protein", "schema:Protein" @@ -127,7 +127,7 @@ "@type": "@id" } }, - "@id": "enzml:Complex/ef2c11f9-4278-487e-94cc-fc94fb622a47", + "@id": "enzml:Complex/1a22de61-05d9-42b0-9f59-8d7f12350d82", "@type": [ "enzml:Complex" ], @@ -160,7 +160,7 @@ "@type": "@id" } }, - "@id": "enzml:SmallMolecule/58414ec1-a6f1-42dc-94e5-1380c63b20a2", + "@id": "enzml:SmallMolecule/7ddb6f4f-e481-44b4-a492-c33a11f69d20", "@type": [ "enzml:SmallMolecule" ], @@ -191,7 +191,7 @@ "@type": "@id" } }, - "@id": "enzml:SmallMolecule/9c87ae6f-44b4-44db-bd5a-e4f7b99ddd19", + "@id": "enzml:SmallMolecule/821a5000-8817-494a-bef6-8d6ca7a79063", "@type": [ "enzml:SmallMolecule" ], @@ -219,7 +219,7 @@ "@type": "@id" } }, - "@id": "enzml:Measurement/0426ea51-df1f-43d8-9e12-a21f95fc9c2f", + "@id": "enzml:Measurement/a0bb13f4-09e2-4ef6-88c3-81a45783d52a", "@type": [ "enzml:Measurement" ], @@ -235,7 +235,7 @@ "@type": "@id" } }, - "@id": "enzml:MeasurementData/f8664861-2026-4a5b-97a0-35bae4e99892", + "@id": "enzml:MeasurementData/d2b27968-a75d-4f7b-992f-74bd2601cf83", "@type": [ "enzml:MeasurementData" ], @@ -260,7 +260,7 @@ "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/1e8d1272-168b-497c-a82f-9adaf7042d23", + "@id": "enzml:BaseUnit/5a6b868d-f0e5-46c1-99c6-c6ad46b0bef6", "@type": [ "enzml:BaseUnit" ], @@ -274,7 +274,7 @@ "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/7ded7917-83b4-4507-a055-ab1d19b5341b", + "@id": "enzml:BaseUnit/798cadb6-71d8-4e9d-a8f9-aaa52c85a143", "@type": [ "enzml:BaseUnit" ], @@ -284,6 +284,33 @@ } ] }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "data": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], "time_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", @@ -303,7 +330,7 @@ "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/a2d6d606-d789-40e4-8246-0a2af736575f", + "@id": "enzml:BaseUnit/0aa687a8-60e2-4586-97b4-ae4c53eb16a3", "@type": [ "enzml:BaseUnit" ], @@ -313,33 +340,6 @@ } ] }, - "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", - "data": [ - 0.0, - 1.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0, - 7.0, - 8.0, - 9.0, - 10.0 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0, - 7.0, - 8.0, - 9.0, - 10.0 - ], "is_simulated": false }, { @@ -351,7 +351,7 @@ "@type": "@id" } }, - "@id": "enzml:MeasurementData/ba922ab1-567e-4cdd-a015-cb00baf1dc9a", + "@id": "enzml:MeasurementData/6e9ff229-02f2-45dd-ab30-00092b574a18", "@type": [ "enzml:MeasurementData" ], @@ -376,7 +376,7 @@ "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/1e8d1272-168b-497c-a82f-9adaf7042d23", + "@id": "enzml:BaseUnit/5a6b868d-f0e5-46c1-99c6-c6ad46b0bef6", "@type": [ "enzml:BaseUnit" ], @@ -390,7 +390,7 @@ "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/7ded7917-83b4-4507-a055-ab1d19b5341b", + "@id": "enzml:BaseUnit/798cadb6-71d8-4e9d-a8f9-aaa52c85a143", "@type": [ "enzml:BaseUnit" ], @@ -400,6 +400,33 @@ } ] }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "data": [ + 10.0, + 9.0, + 8.0, + 7.0, + 6.0, + 5.0, + 4.0, + 3.0, + 2.0, + 1.0, + 0.0 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], "time_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", @@ -419,7 +446,7 @@ "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/a2d6d606-d789-40e4-8246-0a2af736575f", + "@id": "enzml:BaseUnit/0aa687a8-60e2-4586-97b4-ae4c53eb16a3", "@type": [ "enzml:BaseUnit" ], @@ -429,33 +456,6 @@ } ] }, - "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", - "data": [ - 10.0, - 9.0, - 8.0, - 7.0, - 6.0, - 5.0, - 4.0, - 3.0, - 2.0, - 1.0, - 0.0 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0, - 7.0, - 8.0, - 9.0, - 10.0 - ], "is_simulated": false } ], @@ -480,7 +480,7 @@ "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/1a31c8a4-6212-4810-804f-59c5cffd10c5", + "@id": "enzml:BaseUnit/3da5f43e-3bc8-47d2-b646-d964453b6b8c", "@type": [ "enzml:BaseUnit" ], @@ -504,7 +504,7 @@ "@type": "@id" } }, - "@id": "enzml:Measurement/d81322ba-5094-446e-b224-4795ff25615a", + "@id": "enzml:Measurement/1c7c87dc-9faa-49b5-8775-0d55391dcfb3", "@type": [ "enzml:Measurement" ], @@ -520,7 +520,7 @@ "@type": "@id" } }, - "@id": "enzml:MeasurementData/2c021e30-5731-4893-baf4-f337b46a51ca", + "@id": "enzml:MeasurementData/a6e83621-8b3b-4dfe-8ac7-010c8b666330", "@type": [ "enzml:MeasurementData" ], @@ -545,7 +545,7 @@ "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/1e8d1272-168b-497c-a82f-9adaf7042d23", + "@id": "enzml:BaseUnit/5a6b868d-f0e5-46c1-99c6-c6ad46b0bef6", "@type": [ "enzml:BaseUnit" ], @@ -559,7 +559,7 @@ "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/7ded7917-83b4-4507-a055-ab1d19b5341b", + "@id": "enzml:BaseUnit/798cadb6-71d8-4e9d-a8f9-aaa52c85a143", "@type": [ "enzml:BaseUnit" ], @@ -569,6 +569,33 @@ } ] }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "data": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], "time_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", @@ -588,7 +615,7 @@ "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/a2d6d606-d789-40e4-8246-0a2af736575f", + "@id": "enzml:BaseUnit/0aa687a8-60e2-4586-97b4-ae4c53eb16a3", "@type": [ "enzml:BaseUnit" ], @@ -598,33 +625,6 @@ } ] }, - "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", - "data": [ - 0.0, - 1.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0, - 7.0, - 8.0, - 9.0, - 10.0 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0, - 7.0, - 8.0, - 9.0, - 10.0 - ], "is_simulated": false }, { @@ -636,7 +636,7 @@ "@type": "@id" } }, - "@id": "enzml:MeasurementData/458293b5-22ca-41c2-9b25-0f98c05ce480", + "@id": "enzml:MeasurementData/1314c3a8-6422-4192-985c-eb8fa1d99980", "@type": [ "enzml:MeasurementData" ], @@ -661,7 +661,7 @@ "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/1e8d1272-168b-497c-a82f-9adaf7042d23", + "@id": "enzml:BaseUnit/5a6b868d-f0e5-46c1-99c6-c6ad46b0bef6", "@type": [ "enzml:BaseUnit" ], @@ -675,7 +675,7 @@ "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/7ded7917-83b4-4507-a055-ab1d19b5341b", + "@id": "enzml:BaseUnit/798cadb6-71d8-4e9d-a8f9-aaa52c85a143", "@type": [ "enzml:BaseUnit" ], @@ -685,6 +685,33 @@ } ] }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "data": [ + 10.0, + 9.0, + 8.0, + 7.0, + 6.0, + 5.0, + 4.0, + 3.0, + 2.0, + 1.0, + 0.0 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], "time_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", @@ -704,7 +731,7 @@ "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/a2d6d606-d789-40e4-8246-0a2af736575f", + "@id": "enzml:BaseUnit/0aa687a8-60e2-4586-97b4-ae4c53eb16a3", "@type": [ "enzml:BaseUnit" ], @@ -714,33 +741,6 @@ } ] }, - "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", - "data": [ - 10.0, - 9.0, - 8.0, - 7.0, - 6.0, - 5.0, - 4.0, - 3.0, - 2.0, - 1.0, - 0.0 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0, - 7.0, - 8.0, - 9.0, - 10.0 - ], "is_simulated": false } ], @@ -765,7 +765,7 @@ "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/1a31c8a4-6212-4810-804f-59c5cffd10c5", + "@id": "enzml:BaseUnit/3da5f43e-3bc8-47d2-b646-d964453b6b8c", "@type": [ "enzml:BaseUnit" ], @@ -787,7 +787,7 @@ "@type": "@id" } }, - "@id": "enzml:Equation/07b5e8fb-729c-4e1d-892e-46be9e9e6d56", + "@id": "enzml:Equation/a4665d71-b871-4ed3-8a7b-d5e7442b8725", "@type": [ "enzml:Equation" ], @@ -802,7 +802,7 @@ "schema": "https://schema.org/", "id": "schema:identifier" }, - "@id": "enzml:Variable/edde9e7a-ce67-4af4-8788-0f96716d0e85", + "@id": "enzml:Variable/441b9040-316f-49cb-a330-31e97b577f17", "@type": [ "enzml:Variable" ], @@ -821,7 +821,7 @@ "@type": "@id" } }, - "@id": "enzml:Equation/77814fb8-a848-4759-8354-32a9f7a19a49", + "@id": "enzml:Equation/5f294b78-c121-482d-99be-3e46bd61590a", "@type": [ "enzml:Equation" ], @@ -842,25 +842,25 @@ "@type": "@id" } }, - "@id": "enzml:Parameter/8bd75c32-151d-4a05-9e36-be114db34334", + "@id": "enzml:Parameter/8edaa5b7-3744-46b8-ae22-17ed824e4a61", "@type": [ "enzml:Parameter" ], - "id": "E_tot", - "name": "E_tot", - "symbol": "E_tot", + "id": "kcat", + "name": "kcat", + "symbol": "kcat", "unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "OBO:UO_0000063", + "@id": "OBO:UO_0000010", "@type": [ "OBO:UO_0000000" ], - "id": "u2", - "name": "mmol / l", + "id": "u4", + "name": "1 / s", "base_units": [ { "@context": { @@ -868,25 +868,11 @@ "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/1e8d1272-168b-497c-a82f-9adaf7042d23", + "@id": "enzml:BaseUnit/0aa687a8-60e2-4586-97b4-ae4c53eb16a3", "@type": [ "enzml:BaseUnit" ], - "kind": "mole", - "exponent": 1, - "scale": -3.0 - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/7ded7917-83b4-4507-a055-ab1d19b5341b", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "litre", + "kind": "second", "exponent": -1, "scale": 1.0 } @@ -907,13 +893,13 @@ "@type": "@id" } }, - "@id": "enzml:Parameter/e63b8e5b-56a5-4b8e-98be-18e829b179f1", + "@id": "enzml:Parameter/8d12e348-6953-44af-b5b4-58691e08b71b", "@type": [ "enzml:Parameter" ], - "id": "K_m", - "name": "K_m", - "symbol": "K_m", + "id": "E_tot", + "name": "E_tot", + "symbol": "E_tot", "unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", @@ -933,7 +919,7 @@ "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/1e8d1272-168b-497c-a82f-9adaf7042d23", + "@id": "enzml:BaseUnit/5a6b868d-f0e5-46c1-99c6-c6ad46b0bef6", "@type": [ "enzml:BaseUnit" ], @@ -947,7 +933,7 @@ "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/7ded7917-83b4-4507-a055-ab1d19b5341b", + "@id": "enzml:BaseUnit/798cadb6-71d8-4e9d-a8f9-aaa52c85a143", "@type": [ "enzml:BaseUnit" ], @@ -972,25 +958,25 @@ "@type": "@id" } }, - "@id": "enzml:Parameter/158b36f9-74bd-4148-b3f8-5a2a77ea5571", + "@id": "enzml:Parameter/c95843d7-8798-455d-b48e-e8db56971579", "@type": [ "enzml:Parameter" ], - "id": "kcat", - "name": "kcat", - "symbol": "kcat", + "id": "K_m", + "name": "K_m", + "symbol": "K_m", "unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "OBO:UO_0000010", + "@id": "OBO:UO_0000063", "@type": [ "OBO:UO_0000000" ], - "id": "u4", - "name": "1 / s", + "id": "u2", + "name": "mmol / l", "base_units": [ { "@context": { @@ -998,11 +984,25 @@ "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/a2d6d606-d789-40e4-8246-0a2af736575f", + "@id": "enzml:BaseUnit/5a6b868d-f0e5-46c1-99c6-c6ad46b0bef6", "@type": [ "enzml:BaseUnit" ], - "kind": "second", + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/798cadb6-71d8-4e9d-a8f9-aaa52c85a143", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", "exponent": -1, "scale": 1.0 } diff --git a/dev-examples/odes/odes_example.omex b/dev-examples/odes/odes_example.omex index 3b46bafbba626a6f9480f942ae68acaa0067f882..bfdc0204c76a21af43b3c0a319e52faff3c509dd 100644 GIT binary patch delta 1915 zcmV->2ZZ?f68jPjP)h>@6aWAK2msP>B(V($0SVG@Bw3l+6@~bd9sw4A+iu%95Pi>A z20+RUs5+qvK>2(TO?^>AdrUSXgFsM zIYVji_BQaPIY}6e!l4X%sw|NZM;;BYhVtd~6xj0H(cXZ$yc_QtvY~vPrt!X_+}zys zgt!+aSBkh$d@?6~Un#YJX$p=KB1^e+DEH;XV>EfRCrN`K@`x{mC?G?5N?4jpxg3RI zl%kY(Ed*Rd!XI}53H*HzrKm7uzmgRevC^bUnwvG(WNAiyu3wDnrED%&Dw|3Jf>@T2 zfP|?;y`da%FBE2ptCR-hGNkEH&R}DBQvr@bj|ziXv%T3PzLw^H$j`V+i~Cqv*DWPM zOcIoGYpVX5WA~sTOIcw;zdd-MY%pS>o5ciE!j6Rp%j==c)LJw5ReBfmCmxM2j!rJ7 zpAM#H4Tne>y%bR||gETDorf`3eCY$5B*G(KNt&0CpFq z=oWnW zTwOv~lqHyKtx;VLPNidKJN!zQG?858yaqJw@D!j(-)YEy!SHD+R(En6M3eF@x2#zt%f~_d`Xd>Blu?jC4tXz*b4g%Ap;iU;BG^v-V@j}j1{Q9 zq*!4@>~*W7Wyh%ZE7adTN7S{Kg!*^l&uREuP}eKeA>SKb`Tq3yzJq1H*>x#fEUh|< zf*2*KNJSTa+VDb{N6Wmy8!bn0 zVa>j9_NempKxs<5Be>7F-_Aq`Yq0O+Mv4les79859i(yUC|}OsPja1ayeM;dS~3#F z%s}ZVdmzEqd!tLNpXO?AoX*X&;jbX;Kxu@2n?%b*DH${=O2b-3St?4*jiw|ChVq0v zRje+W!E7U6&YzCHQYNPY%$=8ArP3cX zdgEbK>fo|Q$3v;pI`%14KInLH-PsVqVHUU~8NpuuYaEKyO>2g7%_yWSr~z1R*)Vd7 zZqK|C)cU%yVsz2EMg=4PWhBI;jG1Nm>f@|`(si4bB)0Veoee_oSWEYKcf(k^M<`EMD)$kmkYpx2Mnc)E2vt}G*L-lNJn?+;UclR$N4<~j7 z$qq@03za(|rP!D#rZEy5U#vFcx7o7IXtvGh)_HF}jolGMw+e!=njkg0D>mUgVMhLc zQN$@6ica}^7~XJ=*f{j>^0A0FUKSZ}u~k2M?|!n>ngq!A&m*7U%qNQFd9FFrXMpH7 z1iJ3(0O^hfaKDcroSBZNsrM7C_WiCI)iQLKykbqoJ7E_M@il!%?nWP{hm*rEpQk4W z=O-V>;PT(o)6;|T*U166XfUGgzHTRf3aHPSaCG$7aQyeUxfK-+t9jO%)-PaNeXz*$ z4==;%)?9ZViOM`!?i%)(siJJo30HI z;ZKDY;W?g8bYwz#7X?`L#GRH;HB7q*aX-2t$zha*-Y7rMS=F#+Xcos+4_>mi1~;14 zaUu1N$($CEqP7aRR@0g~sPe%kJ}hvK=Lr{@ z0oUMJmtmU@B&zLN(0z^bKOxS4-+c?}mv-Xv<-|C43|sGe7O*YH2D)K*z}0O6i0!$C z=~&RPoYxqCfiYfXH{DF8OmNPM^5B3mdKI=`R?%*g#O?w&@~a)7VMu_|>lGhlE`r=v z&Uu&o-}(FYmvA^NKk%YqO0Ia|j3n+`@y4KafF~ZYnB=}5|BOQ26zHj5m4eJfK}wDI|`Fn6_Kv7fE6i|+@If9{f~8`o7V zw!^uOSKeKGr99dj@6aWAK2msP>B$G7=lLOLlB$LYsHwn^kBw3l+ z6@~bd3kfa*(r_e`JP8{jDhL1oWMOn+E_8EtP)h{{000000{{a6rvLx|z6byS003yk BqagqQ delta 1891 zcmV-p2b}o(68RDhP)h>@6aWAK2mtb`6R`~l0SWS|6Is7amzegG9sw4ATXUN_5Pr|E zVCc&^4>E|04H?^=T+hk0iQC%gv`-x&M4~CTgTP7p>yO0EfbH06+)k1vnel)w%WA*< zR=a}X+uOjG<|JV>3P&>Rsj@^u9Jw^S8p)TlQ((z&$9qHO@L_yt$VT#Yn#TKza&vRj z6V1ISxl+W1;*&Y?b)}SlrYSf|h%Du;BUzUhkJ04uo+J%}$R)lMqJWI#8DVMO%G*&G zMkz}9(4v7ik?_Y|Kmvc?MJXy2*{|9PjaaEt)taj{*JR0~K9?`%^-?yME0Im10YNNF zNI=3=qV7lzxD^Vu#8pZIav9QeBxkTOy(s`kp-Y9rtl8fj5noGxbL3}St zK}-^qa&4;dnr-!OTIsTS=u?(XJOS1* z@o3n##xQHO=SXLN3tIY39xum>yg6~b{ZGfIWwhXTtgC*M@@XImYarBq?; zTwFp}lqHyKEm2)|PNkz~+x<$DG?83oyaqIF_Y|N=-)YEy!SHD+qC2^bqmYBoeMpuV zMk3Y%z3nV3qz#oezW2he)vyPVFDcS<1i!DpB=9*7TVcP!Wx!${+^x&hdjflgz5>;k z7L)>=<>uLjB!yL|uDHsDCH^oQA&zb)!NZ^1b1e?@y2KI|%d5p-b6fsnt;w z#3)HcD!Pz=h8K;wx6JDt@-tzKm!Cp6`XkSQiwu|*i6&nJOOa4NO)~OeubLcAHlii} ztOu6!7``R}T9m)VeLnZ$PP(FYRtgg-9&sJ7@0q|bA^)-Z7O-^H1JE&`s_QP%ofWBV zq0PQ9_PDb3P-(VyXKJ z%uwkFdmzEqTcb;?pXO?=oWa$z;IAO-P-(b+n?%b*DH${^O2b-2St?4*iDo1TM)H&! zRYVuf{^) zYdnlf9bDGPcqnyR$3BI~2OTf2I~yW6%mRlbW7y088;2rw*P5wZG72dRY5&*pp-}= zjQQmD(OdPC4I1SF72;_aLeB<MV^1S z8BVw68hj;NK{gv(14Q~BFbv1wKdu8D*F=CA-oUYK*L9(NKiNvtzf$eFQmraPTlHpH zgML5>hchL~f|haBlvD8JTN2W9#$(dTZau{WyJI+sZR&}hIn#FN7f)}l=$&Idc zY)IW>GN*;7sIAhi)wQM)s%)@{5laI*e*W%TP`}O)moLZ12~VjkVmiR=BNG_>8rYUY z0JMmu*$y1o9(?ujKf%YpV^oKK^5VMka^u;1IW#Rt@AImCU^qOIL&E}&?peS@8X61; zGR?uOm%l_Wud+b^qVw@YGoffM;vp3_hyKA`{ZYk${ zNd9yFzWpT}4$BX`Xqb{K?l@zK+g7|WXdU2*M=Tb(q+5Hj>sD1R`cu|_$RmfMP!=uH z93>Pv;>93?TM)d4rkclg;+~bX&UuQss_f6ywO{hpx@>%T`WVbm9Q)n;-KBHtk}m64 zjO4B2yGXWt-j3;5%6&_qPgiz}xV*lXsVn;U`d6sCTCv#A*678vp2t6Tsj2JNl`pp4 zx%O8+TzsWG-W%rMIFI)a{s&M?0|XQR000O8@~RV)Hwcph@~RV)%?LLM@~RVAzfG5z d_LB_>E(7wa6O%p(8v!VjS_vBlya)gQ004z|j+Oub diff --git a/dev-examples/odes/odes_example.xml b/dev-examples/odes/odes_example.xml index 73381af8..18db5b69 100644 --- a/dev-examples/odes/odes_example.xml +++ b/dev-examples/odes/odes_example.xml @@ -88,7 +88,7 @@ - + Vessel 1 10.0 @@ -102,7 +102,7 @@ - + Enzyme MTEY E.coli @@ -121,7 +121,7 @@ - + Enzyme-Substrate Complex @@ -135,7 +135,7 @@ - + Substrate @@ -149,7 +149,7 @@ - + Product @@ -162,10 +162,10 @@ - + - + @@ -176,10 +176,10 @@ - + - + @@ -190,10 +190,10 @@ - + - + diff --git a/dev-examples/odes/odes_example_test.xml b/dev-examples/odes/odes_example_test.xml new file mode 100644 index 00000000..aac8bbc2 --- /dev/null +++ b/dev-examples/odes/odes_example_test.xml @@ -0,0 +1,241 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Vessel 1 + 10.0 + + + + + + + + + + + + + Enzyme + MTEY + E.coli + + + + + + 1.1.1.1 + E.coli + 12345 + MTEY + + + + + + + + Enzyme-Substrate Complex + + + + + p0 + s0 + + + + + + + + Substrate + + + + + QTBSBXVTEAMEQO-UHFFFAOYSA-N + + + + + + + + + Product + + + + + QTBSBXVTEAMEQO-UHFFFAOYSA-N + + + + + + + + + + + + + + + 0.0 + 100.0 + 0.1 + + + + + + + + + + + + 0.0 + 100.0 + 0.1 + + + + + + + + + + + + 0.0 + 100.0 + 0.1 + + + + + + + + 100 + + + + + + + + + + + + + + + + E_tot + kcat + s0 + + + + K_m + s0 + + + + + + + diff --git a/dev-examples/sbml_export_odes.py b/dev-examples/sbml_export_odes.py index 11e3b57e..22fd094a 100644 --- a/dev-examples/sbml_export_odes.py +++ b/dev-examples/sbml_export_odes.py @@ -1,3 +1,5 @@ +import rich + import pyenzyme as pe import pyenzyme.equations as peq from pyenzyme.sbml.serializer import to_sbml @@ -70,9 +72,12 @@ meas.temperature_unit = K meas.ph = 7.0 +rich.print(to_sbml(doc)[0]) # Write sbml doc to file -with open("./dev-examples/odes/odes_example.xml", "w") as file: +with open("./dev-examples/odes/odes_example_test.xml", "w") as file: file.write(to_sbml(doc)[0]) +exit() + # Write to omex file doc.to_sbml("./dev-examples/odes/odes_example.omex") diff --git a/dev-examples/sbml_import_legacy.py b/dev-examples/sbml_import_legacy.py new file mode 100644 index 00000000..84012f8d --- /dev/null +++ b/dev-examples/sbml_import_legacy.py @@ -0,0 +1,8 @@ +from pathlib import Path + +import pyenzyme as pe + +doc = pe.EnzymeMLDocument.from_sbml(path=Path("./tests/fixtures/sbml/v1_example.omex")) + +with open("./tests/fixtures/sbml/v1_example_enzml.json", "w") as f: + f.write(doc.model_dump_json(indent=2)) diff --git a/dev-examples/sbml_import_odes.py b/dev-examples/sbml_import_odes.py index f630d6aa..a652e0a7 100644 --- a/dev-examples/sbml_import_odes.py +++ b/dev-examples/sbml_import_odes.py @@ -5,12 +5,6 @@ import pyenzyme as pe from pyenzyme.tools import to_dict_wo_json_ld -doc = pe.EnzymeMLDocument.from_sbml( - path=Path("./dev-examples/reactions/reactions_example.omex") -) +doc = pe.EnzymeMLDocument.from_sbml(path=Path("./dev-examples/odes/odes_example.omex")) rich.print(to_dict_wo_json_ld(doc)) - -df = doc.to_pandas(doc) - -rich.print(df) diff --git a/dev-examples/v1.xml b/dev-examples/v1.xml new file mode 100644 index 00000000..989e87dd --- /dev/null +++ b/dev-examples/v1.xml @@ -0,0 +1,731 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + MRRLAACLLATAVAAATSAALAQTSPMTPDITGKPFVAGDAANDYVKREVMIPMRDGVKLHTVIVLPKGARNAPIVLTRTPYDASGRTERLASPHMKDLLSAGDDVFVEGGYIRVFQDVRGKYGSEGDYVMTRPLRGPLNPSEVDHATDAWDTIDWLVKNVKESNGKVGMIGSSYEGFTVVMALTNPHPALKVAAPESPMIDGWMGDDWFNYGAFRQVNFDYFTGQLSKRGKGAGIPRQGHDDYSNFLQAGSAGDFAKAAGLEQLPWWHKLTEHAAYDSFWQEQALDKVMARTPLKVPTMWLQGLWDQEDMWGAIHSYAAMEPRDKSNKLNYLVMGPWRHSQVNSDASSLGALNFDGDTARQFRRDVLRPFFDQYLVDGAPKAATPPVFIYNTGENHWDRLQAWPRSCDKGCAAKSKPLYLQAGGKLSFQAPTAAQPAFEEYVSDPAKPVPFVPRPVDFGDRSMWTTWLVHDQRFVDGRPDVLTFVTEPLTAPLQIAGAPDVHLQASTSGSDSDWVVKLIDVYPDEMAADPKMGGYELPVSMAIFRGRYRESFSTPAPLAANQPLAFQFGLPTANHTFQPGHRVMVQVQSSLFPLYDRNPQTYVPNVFFAKPGDYQKATQRVYVAPGQGSYISLPVR + + 3.1.1.43 + B0RS62 + Xanthomonas campestris pv. campestris + + + + + + + + MRRLAACLLATAVAAATSAALAQTSPMTPDITGKPFVAGDAANDYVKREVMIPMRDGVKLHTVIVLPKGARNAPIVLTRTPYDASGRTERLASPHMKDLLSAGDDVFVEGGYIRVFQDVRGKYGSEGDYVMTRPLRGPLNPSEVDHATDAWDTIDWLVKNVKESNGKVGMIGSSYEGFTVVMALTNPHPALKVAAPESPMIDGWMGDDWFNYGAFRQVNFDYFTGQLSKRGKGAGIPRQGHDDYSNFLQAGSAGDFAKAAGLEQLPWWHKLTEHAAYDSFWQEQALDKVMARTPLKVPTMWLQGLWDQEDMWGAIHSYAAMEPRDKSNKLNYLVMGPWRHSQVNSDASSLGALNFDGDTARQFRRDVLRPFFDQYLVDGAPKAATPPVFIYNTGENHWDRLQAWPRSCDKGCAAKSKPLYLQAGGKLSFQAPTAAQPAFEEYVSDPAKPVPFVPRPVDFGDRSMWTTWLVHDQRFVDGRPDVLTFVTEPLTAPLQIAGAPDVHLQASTSGSDSDWVVKLIDVYPDEMAADPKMGGYELPVSMAIFRGRYRESFSTPAPLAANQPLAFQFGLPTANHTFQPGHRVMVQVQSSLFPLYDRNPQTYVPNVFFAKPGDYQKATQRVYVAPGQGSYISLPVR + + 3.1.1.43 + B0RS62 + Xanthomonas campestris pv. campestris + + x + + + + + + + MRRLAACLLATAVAAATSAALAQTSPMTPDITGKPFVAGDAANDYVKREVMIPMRDGVKLHTVIVLPKGARNAPIVLTRTPYDASGRTERLASPHMKDLLSAGDDVFVEGGYIRVFQDVRGKYGSEGDYVMTRPLRGPLNPSEVDHATDAWDTIDWLVKNVKESNGKVGMIGSSYEGFTVVMALTNPHPALKVAAPESPMIDGWMGDDWFNYGAFRQVNFDYFTGQLSKRGKGAGIPRQGHDDYSNFLQAGSAGDFAKAAGLEQLPWWHKLTEHAAYDSFWQEQALDKVMARTPLKVPTMWLQGLWDQEDMWGAIHSYAAMEPRDKSNKLNYLVMGPWRHSQVNSDASSLGALNFDGDTARQFRRDVLRPFFDQYLVDGAPKAATPPVFIYNTGENHWDRLQAWPRSCDKGCAAKSKPLYLQAGGKLSFQAPTAAQPAFEEYVSDPAKPVPFVPRPVDFGDRSMWTTWLVHDQRFVDGRPDVLTFVTEPLTAPLQIAGAPDVHLQASTSGSDSDWVVKLIDVYPDEMAADPKMGGYELPVSMAIFRGRYRESFSTPAPLAANQPLAFQFGLPTANHTFQPGHRVMVQVQSSLFPLYDRNPQTYVPNVFFAKPGDYQKATQRVYVAPGQGSYISLPVR + + 3.1.1.43 + B0RS62 + Xanthomonas campestris pv. campestris + + + + + + + p0 + s0 + + + + + + + p0 + s1 + + + + + + + p0 + s3 + + + + + + + p0 + s0 + s0 + + + + + + + p1 + s1 + + + + + + + p1 + s0 + + + + + + + p0 + s2 + + + + + + + 1S/C9H11NO2/c1-12-9(11)7-10-8-5-3-2-4-6-8/h2-6,10H,7H2,1H3 + O(C([C@@H](C1=CC=CC=C1)N([H])[H])=O)C + + + + + + + + 1S/C8H10N2O3S/c1-3-2-14-7-4(9)6(11)10(7)5(3)8(12)13/h4,7H,2,9H2,1H3,(H,12,13)/t4-,7-/m1/s1 + + CC1=C(N2[C@H](SC1)[C@H](N)C2=O)C(O)=O + + + + + + + + 1S/C16H17N3O4S/c1-8-7-24-15-11(14(21)19(15)12(8)16(22)23)18-13(20)10(17)9-5-3-2-4-6-9/h2-6,10-11,15H,7,17H2,1H3,(H,18,20)(H,22,23)/t10-,11-,15-/m1/s1 + + CC1=C(N2[C@@H]([C@@H](C2=O)NC(=O)[C@@H](C3=CC=CC=C3)N)SC1)C(=O)O + + + + + + + + 1S/C8H9NO2/c9-7(8(10)11)6-4-2-1-3-5-6/h1-5,7H,9H2,(H,10,11) + C1=CC=C(C=C1)[C@H](C(=O)O)N + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + v_r + + + + + K_n + c1 + + + + p0 + s1 + + + + + + + + + + + + + + + + + + + v_r + + + + + K_s + c0 + + + + p0 + s0 + + + + + + + + + + + + + + + + + + + + + k_2 + c0 + + + + + + + + + + + + + + + + + + + + v_r + + + + + K_si + c3 + + + + c0 + s0 + + + + + + + + + + + + + + + + + + + v_r + + + + + K_si + c5 + + + + p1 + s0 + + + + + + + + + + + + + + + + + + + k_6 + c5 + + + + + + + + + + + + + + + + + + + + k_3 + p1 + + + + + + + + + + + + + + + + + + + + v_r + + + + + K_pg + c2 + + + + p0 + s3 + + + + + + + + + + + + + + + + + + + + + + v_r + + + + + K_n + c4 + + + + p1 + s1 + + + + + + + + + + + + + + + + + + + + k_5 + c4 + + + + + + + + + + + + + + + + + + + + + k_4 + c4 + + + + k_4b + c6 + + + + + + + + + + + + + + + + + + + + + + v_r + + + + + K_p + c6 + + + + p0 + s2 + + + + + + + + + + + + + + + + + + + + + k_d + p0 + + + + + + + + + + From 2c9a3cffcbdb33b17b63a783c85adac236ac73f1 Mon Sep 17 00:00:00 2001 From: Jan Range Date: Sat, 7 Sep 2024 19:46:06 +0200 Subject: [PATCH 054/172] add default imports --- pyenzyme/__init__.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pyenzyme/__init__.py b/pyenzyme/__init__.py index c667f15d..298edc2a 100644 --- a/pyenzyme/__init__.py +++ b/pyenzyme/__init__.py @@ -7,13 +7,16 @@ from .model import * # noqa: F403 from .sbml import to_sbml, read_sbml # noqa: F401 -from .tabular import to_pandas, read_csv, read_excel # noqa: F401 +from .tabular import to_pandas, read_csv, read_excel, from_dataframe # noqa: F401 __all__ = [ "read_enzymeml", "write_enzymeml", "to_sbml", "to_pandas", + "read_csv", + "read_excel", + "from_dataframe", ] From 428a8890dba6e87d15e13bad3162f08dd8e02d53 Mon Sep 17 00:00:00 2001 From: Jan Range Date: Sat, 7 Sep 2024 19:46:16 +0200 Subject: [PATCH 055/172] extract all files within omex --- pyenzyme/sbml/omex.py | 106 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 98 insertions(+), 8 deletions(-) diff --git a/pyenzyme/sbml/omex.py b/pyenzyme/sbml/omex.py index 1f86734a..72bb9fca 100644 --- a/pyenzyme/sbml/omex.py +++ b/pyenzyme/sbml/omex.py @@ -1,11 +1,86 @@ from __future__ import annotations +import enum import tempfile from pathlib import Path +from typing import TextIO import pandas as pd from pymetadata.omex import EntryFormat, ManifestEntry, Omex +SBML_URI = "http://identifiers.org/combine.specifications/sbml" + + +class FileURI(enum.Enum): + """ + Enum representing supported file URIs for data files. + + Attributes: + CSV (str): URI for CSV files. + TSV (str): URI for TSV files. + """ + + CSV = "http://purl.org/NET/mediatypes/text/csv" + TSV = "https://purl.org/NET/mediatypes/text/tab-separated-values" + + @classmethod + def from_uri(cls, uri: str): + """ + Returns the corresponding FileURI enum member for a given URI. + + Args: + uri (str): The URI to match. + + Returns: + FileURI: The corresponding FileURI enum member. + + Raises: + ValueError: If the URI is not supported. + """ + match uri: + case cls.CSV.value: + return cls.CSV + case cls.TSV.value: + return cls.TSV + case _: + raise ValueError(f"Unsupported file URI: {uri}") + + @classmethod + def is_supported(cls, uri): + """ + Checks if a given URI is supported. + + Args: + uri (str): The URI to check. + + Returns: + bool: True if the URI is supported, False otherwise. + """ + return uri in [e.value for e in cls] + + def to_dataframe(self, path): + """ + Converts the file at the given path to a pandas DataFrame based on the file format. + + Args: + path (str): The path to the file. + + Returns: + pd.DataFrame: The file content as a pandas DataFrame. + + Raises: + ValueError: If the file format is not supported. + """ + match self: + case self.CSV: + # Legacy format has no headers + return pd.read_csv(path, header=None) + case self.TSV: + # V2 format has headers + return pd.read_csv(path, sep="\t") + case _: + raise ValueError(f"Unsupported file format: {self}") + def create_sbml_omex( sbml_doc: str, @@ -54,20 +129,35 @@ def create_sbml_omex( omex.to_omex(out) -def read_sbml_omex(path: Path) -> tuple[Path, Path | None]: +def read_sbml_omex(path: Path) -> tuple[TextIO, dict[str, pd.DataFrame]]: """ - Read an OMEX archive and return the SBML and data file paths. + Reads an OMEX archive and extracts the SBML document and associated data files. Args: path (Path): The path to the OMEX archive. Returns: - tuple[Path, Path | None]: The SBML file path and the data file path, if available. - + tuple[str, dict[str, pd.DataFrame]]: A tuple containing the SBML document as a string and a dictionary + where keys are file locations and values are dataframes of the data files. """ - omex = Omex.from_omex(path) - sbml_file = omex.get_path("./model.xml") - data = omex.get_path("./data.tsv") - return sbml_file, data + try: + master_file = next(part for part in omex.manifest.entries if part.master) + except StopIteration: + raise ValueError("No master file found in OMEX archive") + + assert master_file.format == SBML_URI, "Master file is not SBML" + + meas_data = dict() + + for entry in omex.manifest.entries: + if not FileURI.is_supported(entry.format): + continue + + file_uri = FileURI.from_uri(entry.format) + df = file_uri.to_dataframe(omex.get_path(entry.location)) + + meas_data[entry.location] = df + + return open(omex.get_path(master_file.location)), meas_data From 7a381d8b1518b7a7ea51a9eecdb1eb53f1caa8dc Mon Sep 17 00:00:00 2001 From: Jan Range Date: Sat, 7 Sep 2024 19:46:32 +0200 Subject: [PATCH 056/172] adapt parser and serializer to annotations --- pyenzyme/sbml/parser.py | 448 ++++++++++++++++-------------------- pyenzyme/sbml/serializer.py | 187 +++++---------- 2 files changed, 263 insertions(+), 372 deletions(-) diff --git a/pyenzyme/sbml/parser.py b/pyenzyme/sbml/parser.py index 4a67b63e..c1a5bc41 100644 --- a/pyenzyme/sbml/parser.py +++ b/pyenzyme/sbml/parser.py @@ -1,23 +1,20 @@ from __future__ import annotations import math -import xml.etree.ElementTree as ET +import re from pathlib import Path from typing import IO import libsbml as sbml # type: ignore -import rich +import pandas as pd from loguru import logger # type: ignore import pyenzyme as pe -from pyenzyme import tools +from pyenzyme import xmlutils from pyenzyme.logging import add_logger -from pyenzyme.units import M, s from . import read_sbml_omex from .ldutils import parse_sbml_rdf_annotation - -MAPPINGS = tools.read_static_file("pyenzyme.sbml", "mappings.toml") -ENZYMEML_NS = "https://www.enzymeml.org/v2" +from .versions.handler import VersionHandler, SupportedVersions def read_sbml(cls, path: Path | str): @@ -29,20 +26,27 @@ def read_sbml(cls, path: Path | str): path (Path | str): The path to the OMEX archive containing the SBML file. Returns: - An initialized EnzymeML document with extracted units, species, vessels, equations, parameters, reactions, and measurements. + An initialized EnzymeML document with extracted units, species, vessels, + equations, parameters, reactions, and measurements. """ add_logger(name="SBML") # Create globals to use in the functions global units global path_prefix - global tsv_path + global version + global enzmldoc # Read the OMEX archive and extract the SBML and TSV paths - sbml_path, tsv_path = read_sbml_omex(path) + sbml_handler, data = read_sbml_omex(path) + + # Find out which version of the SBML file we are dealing with + namespaces = xmlutils.extract_namespaces(sbml_handler.read()) + version = VersionHandler.from_uri(namespaces) + sbml_handler.seek(0) # Read the SBML file and init an EnzymeML document - model = _init_and_read_sbml(open(sbml_path)) + model = _init_and_read_sbml(sbml_handler) enzmldoc = cls(name=model.getName()) # Extract units to map these to the EnzymeML entities @@ -76,14 +80,28 @@ def read_sbml(cls, path: Path | str): _parse_reaction(reaction) for reaction in model.getListOfReactions() ] - enzmldoc.measurements = _parse_measurements(model) + enzmldoc.measurements = _parse_measurements( + model=model, + list_of_reactions=model.getListOfReactions(), + meas_data=data, + ) return enzmldoc def _init_and_read_sbml(handler: IO): - """Initialize the SBML reader and read the SBML document.""" + """ + Initialize the SBML reader and read the SBML document. + + Args: + handler (IO): The file handler for the SBML document. + + Returns: + The SBML model. + Raises: + ValueError: If the SBML document or model cannot be read. + """ reader = sbml.SBMLReader() sbmldoc = reader.readSBMLFromString(handler.read()) if not sbmldoc: @@ -100,7 +118,15 @@ def _init_and_read_sbml(handler: IO): def _parse_unit(unit: sbml.UnitDefinition): - """Parse a unit definition from an SBML model into an EnzymeML unit definition.""" + """ + Parse a unit definition from an SBML model into an EnzymeML unit definition. + + Args: + unit (sbml.UnitDefinition): The SBML unit definition. + + Returns: + An EnzymeML unit definition. + """ enzml_unit = pe.UnitDefinition( id=unit.getId(), name=unit.getName(), @@ -126,7 +152,15 @@ def _parse_unit(unit: sbml.UnitDefinition): def _parse_species(species: sbml.Species): - """Parse a species from an SBML model into EnzymeML small molecule or protein.""" + """ + Parse a species from an SBML model into EnzymeML small molecule or protein. + + Args: + species (sbml.Species): The SBML species. + + Returns: + An EnzymeML small molecule, protein, or complex. + """ sbo_term = species.getSBOTermID() if sbo_term == "SBO:0000247": @@ -142,9 +176,18 @@ def _parse_species(species: sbml.Species): def _parse_small_molecule(species: sbml.Species): - """Parse a species from an SBML model into an EnzymeML small molecule.""" + """ + Parse a species from an SBML model into an EnzymeML small molecule. + + Args: + species (sbml.Species): The SBML species. + + Returns: + An EnzymeML small molecule. + """ + parsed = version.parse_annotation(annotation=species.getAnnotationString()) + annots = version.extract(parsed, "small_molecule") - annots = _parse_enzymeml_annotations("smallMolecule", species.getAnnotationString()) small_molecule = pe.SmallMolecule( id=species.getId(), name=species.getName(), @@ -159,9 +202,18 @@ def _parse_small_molecule(species: sbml.Species): def _parse_protein(species: sbml.Species): - """Parse a species from an SBML model into an EnzymeML small molecule.""" + """ + Parse a species from an SBML model into an EnzymeML protein. + + Args: + species (sbml.Species): The SBML species. + + Returns: + An EnzymeML protein. + """ + parsed = version.parse_annotation(annotation=species.getAnnotationString()) + annots = version.extract(parsed, "protein") - annots = _parse_enzymeml_annotations("protein", species.getAnnotationString()) protein = pe.Protein( id=species.getId(), name=species.getName(), @@ -176,9 +228,18 @@ def _parse_protein(species: sbml.Species): def _parse_complex(species: sbml.Species): - """Parse a species from an SBML model into an EnzymeML complex.""" + """ + Parse a species from an SBML model into an EnzymeML complex. + + Args: + species (sbml.Species): The SBML species. + + Returns: + An EnzymeML complex. + """ + parsed = version.parse_annotation(annotation=species.getAnnotationString()) + annots = version.extract(parsed, "complex") - annots = _parse_enzymeml_annotations("complex", species.getAnnotationString()) complex_ = pe.Complex( id=species.getId(), name=species.getName(), @@ -191,8 +252,15 @@ def _parse_complex(species: sbml.Species): def _parse_vessel(compartment: sbml.Compartment): - """Parse a compartment from an SBML model into an EnzymeML vessel.""" + """ + Parse a compartment from an SBML model into an EnzymeML vessel. + Args: + compartment (sbml.Compartment): The SBML compartment. + + Returns: + An EnzymeML vessel. + """ vessel = pe.Vessel( id=compartment.getId(), name=compartment.getName(), @@ -206,8 +274,18 @@ def _parse_vessel(compartment: sbml.Compartment): def _parse_parameter(parameter: sbml.Parameter): - """Parse a parameter from an SBML model into an EnzymeML parameter.""" - annots = _parse_enzymeml_annotations("parameter", parameter.getAnnotationString()) + """ + Parse a parameter from an SBML model into an EnzymeML parameter. + + Args: + parameter (sbml.Parameter): The SBML parameter. + + Returns: + An EnzymeML parameter. + """ + parsed = version.parse_annotation(annotation=parameter.getAnnotationString()) + annots = version.extract(parsed, "parameter") + parameter = pe.Parameter( id=parameter.getId(), name=parameter.getName(), @@ -222,8 +300,19 @@ def _parse_parameter(parameter: sbml.Parameter): def _parse_equation(rule: sbml.Rule, rule_type: pe.EquationType): - """Parse a rule from an SBML model into an EnzymeML equation.""" + """ + Parse a rule from an SBML model into an EnzymeML equation. + Args: + rule (sbml.Rule): The SBML rule. + rule_type (pe.EquationType): The type of the equation. + + Returns: + An EnzymeML equation. + + Raises: + ValueError: If the rule type is unknown. + """ match rule_type: case pe.EquationType.INITIAL_ASSIGNMENT: equation = sbml.formulaToString(rule.getMath()) @@ -232,12 +321,17 @@ def _parse_equation(rule: sbml.Rule, rule_type: pe.EquationType): equation = rule.getFormula() species_id = rule.getVariable() case pe.EquationType.RATE_LAW: - equation = rule.getMath() + equation = rule.getFormula() species_id = None case _: raise ValueError(f"Unknown rule type: {rule_type}") - annots = _parse_enzymeml_annotations("variables", rule.getAnnotationString()) + parsed = version.parse_annotation(annotation=rule.getAnnotationString()) + annots = version.extract(parsed, "variables") + + if version.version == SupportedVersions.VERSION1: + _map_v1_variables(annots, equation) + equation = pe.Equation( equation_type=rule_type, equation=equation, @@ -248,9 +342,43 @@ def _parse_equation(rule: sbml.Rule, rule_type: pe.EquationType): return equation +def _map_v1_variables(annots: dict, equation: str): + """ + Map variables for version 1 of the EnzymeML format. + + Args: + annots (dict): The annotations. + equation (str): The equation string. + """ + if "variables" not in annots: + annots["variables"] = [] + + all_species = [ + *[s.id for s in enzmldoc.small_molecules], + *[p.id for p in enzmldoc.proteins], + *[c.id for c in enzmldoc.complexes], + ] + for species in all_species: + if bool(re.search(rf"\b{species}\b", equation)): + annots["variables"].append( + pe.Variable( + id=species, + name=species, + symbol=species, + ).model_dump() + ) + + def _parse_reaction(reaction: sbml.Reaction): - """Parse a reaction from an SBML model into an EnzymeML reaction.""" + """ + Parse a reaction from an SBML model into an EnzymeML reaction. + + Args: + reaction (sbml.Reaction): The SBML reaction. + Returns: + An EnzymeML reaction. + """ # Get the reactants and products products = [_parse_element(product, 1) for product in reaction.getListOfProducts()] reactants = [ @@ -261,7 +389,7 @@ def _parse_reaction(reaction: sbml.Reaction): modifiers = [modifier.getSpecies() for modifier in reaction.getListOfModifiers()] # Get the kinetic law - kinetic_law = _parse_kinetic_law(reaction) + kinetic_law = _parse_equation(reaction.getKineticLaw(), pe.EquationType.RATE_LAW) # Create the EnzymeML reaction reaction = pe.Reaction( @@ -272,242 +400,68 @@ def _parse_reaction(reaction: sbml.Reaction): kinetic_law=kinetic_law, ) - rich.print(reaction) - return reaction def _parse_element(species, direction: int): + """ + Parse a species element from an SBML model into an EnzymeML reaction element. + + Args: + species: The SBML species element. + direction (int): The direction of the reaction (1 for product, -1 for reactant). + + Returns: + An EnzymeML reaction element. + """ return pe.ReactionElement( species_id=species.getSpecies(), stoichiometry=species.getStoichiometry() * direction, ) -def _parse_kinetic_law(reaction): - kinetic_law = reaction.getKineticLaw() - - if not kinetic_law: - return None - - annots = _parse_enzymeml_annotations("variables", kinetic_law.getAnnotationString()) - kinetic_law = pe.Equation( - equation=kinetic_law.getFormula(), - equation_type=pe.EquationType.RATE_LAW, - unit=M, # We need to set a default unit here, because SBML does not provide units for kinetic laws - variables=[pe.Variable(**annot) for annot in annots.get("variables", [])], - ) - - return kinetic_law - - -def _parse_measurements(model: sbml.Model): - # Extract metadata from the model - meas_metadata, file_path = _get_meas_metadata(model) - meas_metadata = _extract_measurement_metadata(meas_metadata) - - # Read the CSV file into measurement objects - # We need to set defaults for the units here, - # but we will overwrite them with the units from the EnzymeML annotations - measurements = pe.read_csv( - tsv_path, - data_unit=M, - time_unit=s, - ) - - for meas_id, metadata in meas_metadata.items(): - _assign_units_and_initials(meas_id, measurements, metadata) - - return measurements - - -def _assign_units_and_initials(meas_id, measurements, metadata): - measurement = [m for m in measurements if m.id == meas_id][0] - conditions = metadata.get("condition", {}) - init_concs = metadata.get("speciesData", []) - measurement.ph = _cast(conditions.get("ph"), float) - measurement.temperature = _cast(conditions.get("temperature"), float) - measurement.temperature_unit = conditions.get("temperature_unit") - - for init_conc in init_concs: - species_id = _get_species_id(init_conc) - meas_data = _get_species_data(measurement, species_id) - - meas_data.initial = float(init_conc.get("initial", 0.0)) - meas_data.time_unit = init_conc["time_unit"] - meas_data.data_unit = init_conc["data_unit"] - - -def _cast(value, data_type): - if value is None: - return None - - return data_type(value) - - -def _get_species_id(init_conc): - species_id = init_conc.get("species_id") - assert species_id, "No species ID found in the EnzymeML data annotation" - return species_id - - -def _get_species_data(measurement, species_id): - try: - return [d for d in measurement.species_data if d.species_id == species_id][0] - except IndexError: - raise ValueError(f"No species data found for species ID {species_id}") - - -def _get_meas_metadata(model): - root = ET.fromstring(model.getAnnotationString()) - data = root.find(f"{{{ENZYMEML_NS}}}data") - meas_metadata = data.findall(f"{{{ENZYMEML_NS}}}measurement") - file_path = data.attrib.get("file") - - assert file_path, "No file path found in the EnzymeML data annotation" - - return meas_metadata, file_path - - -def _extract_measurement_metadata(meas_metadata): - measurements = {} - - for meas_meta in meas_metadata: - meas_id = meas_meta.attrib.get("id") - data = _process_measurement(meas_meta) - measurements[meas_id] = data - - return measurements - - -def _process_measurement(meas_meta): - data = {} - time_unit = units.get(meas_meta.attrib.get("timeUnit")) - - assert ( - time_unit - ), f"Time unit not found for measurement {meas_meta.attrib.get('id')}" - - species_data = _parse_enzymeml_annotations("speciesData", meas_meta).get( - "speciesData", [] - ) - conditions = _parse_enzymeml_annotations("conditions", meas_meta).get( - "conditions", [] - ) - - if conditions: - data["condition"] = _assign_temp_unit(conditions[0]) - if species_data: - data["speciesData"] = _assign_meas_units(species_data, time_unit) - - return data - - -def _assign_temp_unit(conditions): - if temp_unit := conditions.get("temperature_unit"): - conditions["temperature_unit"] = units.get(temp_unit) - - return conditions - - -def _assign_meas_units(species_data, time_unit): - for data in species_data: - data["data_unit"] = units.get(data["data_unit"]) - data["time_unit"] = time_unit - data["data_type"] = pe.DataTypes.__members__.get(data["data_type"]) - - return species_data - - -def _parse_enzymeml_annotations( - root_key: str, annotation: str | ET.Element | None -) -> dict: - """Parse the RDF annotation of an SBML object.""" - - if not annotation: - return {} - - mappings = MAPPINGS[root_key] - - match annotation: - case str(): - root = ET.fromstring(annotation).find(f".//{{{ENZYMEML_NS}}}{root_key}") - case _ if isinstance(annotation, ET.Element): - root = annotation - case _: - raise ValueError(f"Unknown annotation type: {type(annotation)}") - - if not root: - return {} - - return _map_values(mappings, root, root_key) - - -def _map_values(mappings, root, root_key=None): - """Map the values from the XML root to the EnzymeML entities.""" - - data = {} - for xml_key, enzml_key in mappings.items(): - match enzml_key: - case dict(): - if value := _process_nested_keys( - enzml_key=enzml_key, - root=root, - xml_key=xml_key, - ): - if root_key in data and len(value) == 1: - # Special case for conditions - data[root_key][0].update(value[0]) - else: - data[root_key] = value - - case str(): - if value := _process_simple( - root=root, - xml_key=xml_key, - ): - data[enzml_key] = value - case _: - raise ValueError(f"Unknown value type for key '{enzml_key}'") - - return data - - -def _process_simple( - root: ET.Element, - xml_key: str, +def _parse_measurements( + model: sbml.Model, + list_of_reactions: sbml.ListOfReactions, + meas_data: dict[str, pd.DataFrame], ): - if xml_key.startswith("@"): - value = root.attrib.get(xml_key[1:]) - else: - value = root.findall(f"{{{ENZYMEML_NS}}}{xml_key}") - - if len(value) == 1: - value = value[0].text - elif len(value) > 1: - value = [v.text for v in value] - return value + """ + Parse measurements from an SBML model into EnzymeML measurements. + Args: + model (sbml.Model): The SBML model. + list_of_reactions (sbml.ListOfReactions): The list of reactions in the SBML model. + meas_data (dict[str, pd.DataFrame]): The measurement data. -def _process_nested_keys( - enzml_key: dict, - root: ET.Element, - xml_key: str, -): - value = root.findall(f".//{{{ENZYMEML_NS}}}{xml_key}") - if len(value) == 1: - value = [_map_values(enzml_key, value[0])] - elif len(value) > 1: - value = [_map_values(enzml_key, v) for v in value] - else: - return None + Returns: + EnzymeML measurements. - return value + Raises: + ValueError: If the version is unknown. + """ + match version.version: + case SupportedVersions.VERSION1: + parsed = version.parse_annotation(list_of_reactions.getAnnotationString()) + if parsed.data: + return parsed.data.to_measurements(meas_data, units) + case SupportedVersions.VERSION2: + parsed = version.parse_annotation(model.getAnnotationString()) + if parsed.data: + return parsed.data.to_measurements(meas_data, units) + case _: + raise ValueError(f"Unknown version: {version.version}") def _check_nan(value: float): - """Check if a value is NaN.""" + """ + Check if a value is NaN. + Args: + value (float): The value to check. + + Returns: + The value if it is not NaN, otherwise None. + """ if math.isnan(value): return None diff --git a/pyenzyme/sbml/serializer.py b/pyenzyme/sbml/serializer.py index 71251f84..602f1f94 100644 --- a/pyenzyme/sbml/serializer.py +++ b/pyenzyme/sbml/serializer.py @@ -7,7 +7,6 @@ import libsbml import pandas as pd from loguru import logger -from pydantic import BaseModel import pyenzyme.model as pe import pyenzyme.tools as tools @@ -16,6 +15,7 @@ from pyenzyme.logging import add_logger from pyenzyme.sbml import create_sbml_omex from pyenzyme.sbml.validation import validate_sbml_export +from pyenzyme.sbml.versions import v2 from pyenzyme.tabular import to_pandas from pyenzyme.units.units import UnitDefinition @@ -162,12 +162,13 @@ def _add_small_mol(small_mol: pe.SmallMolecule): species.setInitialConcentration(init_conc) species.setHasOnlySubstanceUnits(False) - annot = _xml.serialize_to_pretty_xml_string( - _extract_create_annot("smallMolecule", small_mol) + annot = v2.SmallMoleculeAnnot( + canonical_smiles=small_mol.canonical_smiles, + inchikey=small_mol.inchikey, ) - if annot is not None: - species.appendAnnotation(annot) + if not annot.is_empty(): + species.appendAnnotation(annot.to_xml(encoding="unicode")) def _add_protein(protein: pe.Protein): @@ -187,12 +188,15 @@ def _add_protein(protein: pe.Protein): species.setInitialConcentration(init_conc) species.setHasOnlySubstanceUnits(False) - annot = _xml.serialize_to_pretty_xml_string( - _extract_create_annot("protein", protein) + annot = v2.ProteinAnnot( + ecnumber=protein.ecnumber, + organism=protein.organism, + sequence=protein.sequence, + organism_tax_id=protein.organism_tax_id, ) - if annot is not None: - species.appendAnnotation(annot) + if not annot.is_empty(): + species.appendAnnotation(annot.to_xml(encoding="unicode")) def _add_complex(complex_: pe.Complex): @@ -205,12 +209,10 @@ def _add_complex(complex_: pe.Complex): species.setSBOTerm("SBO:0000296") # Complex species.appendAnnotation(rdf.to_rdf_xml(complex_)) - annot = _xml.serialize_to_pretty_xml_string( - _extract_create_annot("complex", complex_) - ) + annot = v2.ComplexAnnot(participants=complex_.participants) - if annot is not None: - species.appendAnnotation(annot) + if not annot.is_empty(): + species.appendAnnotation(annot.to_xml(encoding="unicode")) def _get_first_meas_init_conc(species: pe.SmallMolecule | pe.Protein): @@ -267,12 +269,12 @@ def _add_rate_law(equation: pe.Equation, reac: libsbml.Reaction): law = reac.createKineticLaw() law.setMath(libsbml.parseL3Formula(equation.equation)) - if annot := _create_equation_annot(equation): - law.setAnnotation(_xml.serialize_to_pretty_xml_string(annot)) - + annot = v2.VariablesAnnot( + variables=[v2.VariableAnnot(**var.model_dump()) for var in equation.variables], + ) -def _create_equation_annot(equation: pe.Equation) -> ET.Element | None: - return _extract_create_annot("variables", equation.variables) + if not annot.is_empty(): + law.setAnnotation(annot.to_xml(encoding="unicode")) def _get_create_fun( @@ -303,12 +305,14 @@ def _add_parameter(parameter: pe.Parameter): if parameter.unit: sbml_param.setUnits(_get_unit_id(parameter.unit)) - annot = _xml.serialize_to_pretty_xml_string( - _extract_create_annot("parameter", parameter) + annot = v2.ParameterAnnot( + lower=parameter.lower, + upper=parameter.upper, + stderr=parameter.stderr, ) - if annot is not None: - sbml_param.appendAnnotation(annot) + if not annot.is_empty(): + sbml_param.appendAnnotation(annot.to_xml(encoding="unicode")) def _add_equation(equation: pe.Equation): @@ -328,42 +332,55 @@ def _add_equation(equation: pe.Equation): sbml_rule.setMath(libsbml.parseL3Formula(equation.equation)) - if annot := _create_equation_annot(equation): - sbml_rule.setAnnotation(_xml.serialize_to_pretty_xml_string(annot)) + annot = v2.VariablesAnnot( + variables=[v2.VariableAnnot(**var.model_dump()) for var in equation.variables], + ) + + if not annot.is_empty(): + sbml_rule.setAnnotation(annot.to_xml(encoding="unicode")) def _add_measurements(measurements: list[pe.Measurement]): """Adds measurements to the SBML model.""" - annotation = ET.Element(f"{{{NSMAP['enzymeml']}}}data") - annotation.attrib["file"] = "data.tsv" + annot = v2.DataAnnot(file="./data.tsv") for measurement in measurements: - meas_element = _extract_create_annot("measurement", measurement) - meas_element.attrib["timeUnit"] = _get_unit_id( # type: ignore - measurement.species_data[0].time_unit + if not measurement.species_data: + continue + + time_unit = _get_unit_id(measurement.species_data[0].time_unit) + conditions = v2.ConditionsAnnot( + ph=v2.PHAnnot( + value=measurement.ph, + ), + temperature=v2.TemperatureAnnot( + value=measurement.temperature, + unit=_get_unit_id(measurement.temperature_unit), + ), ) - assert meas_element is not None, "Measurement element is None" - - conditions = _create_condition_element( - ph=measurement.ph, - temperature=measurement.temperature, - temperature_unit=_get_unit_id(measurement.temperature_unit), # type: ignore + meas_annot = v2.MeasurementAnnot( + id=measurement.id, + time_unit=time_unit, + name=measurement.name, + conditions=conditions, ) - if conditions: - meas_element.append(conditions) - - for species in measurement.species_data: - _extract_create_annot("speciesData", species, meas_element) + for species_data in measurement.species_data: + species_annot = v2.SpeciesDataAnnot( + species_id=species_data.species_id, + initial=species_data.initial, + type=species_data.data_type.name, + unit=_get_unit_id(species_data.data_unit), + ) - annotation.append(meas_element) + meas_annot.species_data.append(species_annot) - annot = _xml.serialize_to_pretty_xml_string(annotation) + annot.measurements.append(meas_annot) - if annot is not None: - model.appendAnnotation(annot) + if not annot.is_empty(): + model.appendAnnotation(annot.to_xml(encoding="unicode")) def _create_condition_element( @@ -388,86 +405,6 @@ def _create_condition_element( return element -def _extract_create_annot( - name: str, - obj: BaseModel | list[BaseModel], - element: ET.Element | None = None, -) -> ET.Element | None: - """Extracts the data from the object and creates an annotation element. - - This function makes use of the "mappings.toml" file which orchestrates - the mapping of the data from the object to the XML element. - - Args: - name (str): The name of the object. - obj (BaseModel): The object to extract the data from. - element (ET.Element, optional): The element to append the annotation to. Defaults to None. - - Returns: - ET.Element: The annotation element. - """ - if element is None: - element = ET.Element(f"{{{NSMAP['enzymeml']}}}{name}") - - if isinstance(obj, list): - mappings = [ - _extract(item, MAPPINGS[name]) - for item in obj - if item.dict(exclude_unset=True) - ] - - for mapping in mappings: - _xml.map_to_xml( - root=element, - mappings=mapping, - namespace=NSMAP["enzymeml"], - ) - else: - mappings = _extract(obj, MAPPINGS[name]) - - _xml.map_to_xml( - root=element, - mappings=mappings, - namespace=NSMAP["enzymeml"], - ) - - if len(element) == 0 and not element.attrib: - return None - - return element - - -def _extract(obj: BaseModel, mapping: dict) -> dict: - """Based on the mapping, extract the data from the object and return it as a dictionary. - - Args: - obj (BaseModel): The object to extract the data from. - mapping (dict): The mapping to use for extraction. - - Returns: - dict: The extracted data. - """ - - data = {} - - for trgt_key, enzml_key in mapping.items(): - if isinstance(enzml_key, dict): - data[trgt_key] = _extract(obj, enzml_key) - elif "unit" in enzml_key: - value = getattr(obj, enzml_key) - data[trgt_key] = _get_unit_id(value) - elif isinstance(getattr(obj, enzml_key), list) and all( - isinstance(item, BaseModel) for item in getattr(obj, enzml_key) - ): - data[trgt_key] = [ - _extract(item, MAPPINGS[enzml_key]) for item in getattr(obj, enzml_key) - ] - else: - data[trgt_key] = getattr(obj, enzml_key) - - return data - - def _get_sbml_kind(unit_type: pe.UnitType): try: return getattr(libsbml, f"UNIT_KIND_{unit_type.name}") From 767c10aa9f09ef757daed4d3171122e4485e3fcc Mon Sep 17 00:00:00 2001 From: Jan Range Date: Sat, 7 Sep 2024 19:46:46 +0200 Subject: [PATCH 057/172] add support for legacy and new version --- pyenzyme/sbml/versions/__init__.py | 15 ++ pyenzyme/sbml/versions/handler.py | 52 ++++ pyenzyme/sbml/versions/v1.py | 414 +++++++++++++++++++++++++++++ pyenzyme/sbml/versions/v2.py | 387 +++++++++++++++++++++++++++ 4 files changed, 868 insertions(+) create mode 100644 pyenzyme/sbml/versions/__init__.py create mode 100644 pyenzyme/sbml/versions/handler.py create mode 100644 pyenzyme/sbml/versions/v1.py create mode 100644 pyenzyme/sbml/versions/v2.py diff --git a/pyenzyme/sbml/versions/__init__.py b/pyenzyme/sbml/versions/__init__.py new file mode 100644 index 00000000..fe805738 --- /dev/null +++ b/pyenzyme/sbml/versions/__init__.py @@ -0,0 +1,15 @@ +from .v2 import ( + DataAnnot, + SpeciesDataAnnot, + ProteinAnnot, + ParameterAnnot, + ComplexAnnot, +) + +__all__ = [ + "DataAnnot", + "SpeciesDataAnnot", + "ProteinAnnot", + "ParameterAnnot", + "ComplexAnnot", +] diff --git a/pyenzyme/sbml/versions/handler.py b/pyenzyme/sbml/versions/handler.py new file mode 100644 index 00000000..e44dfffc --- /dev/null +++ b/pyenzyme/sbml/versions/handler.py @@ -0,0 +1,52 @@ +from enum import Enum + +from pydantic import BaseModel + +from pyenzyme.sbml.versions import v1, v2 +from pyenzyme.sbml.versions.v2 import V2Annotation + + +class SupportedVersions(Enum): + VERSION1: str = "http://sbml.org/enzymeml/version2" + VERSION2: str = "https://www.enzymeml.org/v2" + + +class VersionHandler(BaseModel): + version: SupportedVersions + + @classmethod + def from_uri(cls, uris: set[str]): + for uri in uris: + if uri == SupportedVersions.VERSION1.value: + return cls(version=SupportedVersions.VERSION1) + if uri == SupportedVersions.VERSION2.value: + return cls(version=SupportedVersions.VERSION2) + + raise ValueError("No supported version found in URIs") + + def parse_annotation(self, annotation: str) -> v1.V1Annotation | v2.V2Annotation: + if not annotation: + return V2Annotation() + + match self.version: + case SupportedVersions.VERSION1: + return v1.V1Annotation.from_xml(annotation) + case SupportedVersions.VERSION2: + return v2.V2Annotation.from_xml(annotation) + case _: + raise ValueError("Unsupported version") + + @staticmethod + def extract( + value: v1.V1Annotation | v2.V2Annotation, + key: str, + ): + if not hasattr(value, key): + raise AttributeError(f"VersionHandler has no attribute '{key}'") + + value = getattr(value, key) + + if value: + return value.model_dump() + else: + return {} diff --git a/pyenzyme/sbml/versions/v1.py b/pyenzyme/sbml/versions/v1.py new file mode 100644 index 00000000..9ed7c96d --- /dev/null +++ b/pyenzyme/sbml/versions/v1.py @@ -0,0 +1,414 @@ +from __future__ import annotations + +import pandas as pd +from pydantic import computed_field +from pydantic_xml import element, BaseXmlModel, attr, wrapped + +from pyenzyme import Measurement, UnitDefinition, DataTypes +from pyenzyme.sbml.versions.v2 import VariableAnnot + + +class V1Annotation( + BaseXmlModel, + tag="annotation", + search_mode="unordered", +): + small_molecule: ReactantAnnot | None = element( + tag="smallMolecule", + default=None, + nsmap={"enzymeml": "https://www.enzymeml.org/v2"}, + ) + + protein: ProteinAnnot | None = element( + tag="protein", + default=None, + nsmap={"enzymeml": "https://www.enzymeml.org/v2"}, + ) + + complex: ComplexAnnot | None = element( + tag="complex", + default=None, + nsmap={"enzymeml": "https://www.enzymeml.org/v2"}, + ) + + data: DataAnnot | None = element( + tag="data", + default=None, + nsmap={"enzymeml": "https://www.enzymeml.org/v2"}, + ) + + parameter: ParameterAnnot | None = element( + tag="parameter", + default=None, + nsmap={"enzymeml": "https://www.enzymeml.org/v2"}, + ) + + variables: VariableAnnot | None = element( + tag="variables", + default=None, + nsmap={"enzymeml": "https://www.enzymeml.org/v2"}, + ) + + +class ParameterAnnot( + BaseXmlModel, + tag="parameter", + nsmap={"": "https://www.enzymeml.org/v2"}, +): + """ + Represents the annotation for a parameter in the EnzymeML format. + + Attributes: + initial (float | None): The initial value of the parameter. + upper (float | None): The upper bound of the parameter. + lower (float | None): The lower bound of the parameter. + """ + + initial: float | None = element(tag="initialValue", default=None) + upper: float | None = element(tag="upperBound", default=None) + lower: float | None = element(tag="lowerBound", default=None) + + +class ComplexAnnot( + BaseXmlModel, + tag="complex", + nsmap={"": "http://sbml.org/enzymeml/version2"}, +): + """ + Represents the annotation for a complex in the EnzymeML format. + + Attributes: + participants (list[str]): A list of participants in the complex. + """ + + participants: list[str] = element(tag="participant", default_factory=list) + + +class ReactantAnnot( + BaseXmlModel, + tag="reactant", + nsmap={"": "http://sbml.org/enzymeml/version2"}, +): + """ + Represents the annotation for a reactant in the EnzymeML format. + + Attributes: + inchi (str | None): The InChI of the reactant. + smiles (str | None): The SMILES representation of the reactant. + chebi_id (str | None): The ChEBI ID of the reactant. + """ + + inchi: str | None = element(tag="inchi", default=None) + smiles: str | None = element(tag="smiles", default=None) + chebi_id: str | None = element(tag="chebiID", default=None) + + +class ProteinAnnot( + BaseXmlModel, + tag="protein", + nsmap={"": "http://sbml.org/enzymeml/version2"}, +): + """ + Represents the annotation for a protein in the EnzymeML format. + + Attributes: + sequence (str | None): The amino acid sequence of the protein. + ecnumber (str | None): The EC number of the protein. + uniprotid (str | None): The UniProt ID of the protein. + organism (str | None): The organism from which the protein is derived. + organism_tax_id (str | None): The taxonomic ID of the organism. + """ + + sequence: str | None = element(tag="sequence", default=None) + ecnumber: str | None = element(tag="ECnumber", default=None) + uniprotid: str | None = element(tag="uniprotID", default=None) + organism: str | None = element(tag="organism", default=None) + organism_tax_id: str | None = element(tag="organismTaxID", default=None) + + +class DataAnnot( + BaseXmlModel, + tag="data", + nsmap={"": "http://sbml.org/enzymeml/version2"}, +): + """ + Represents the annotation for data in the EnzymeML format. + + Attributes: + formats (list[FormatAnnot]): A list of format annotations. + measurements (list[MeasurementAnnot]): A list of measurement annotations. + files (list[FileAnnot]): A list of file annotations. + """ + + formats: list[FormatAnnot] = wrapped( + "formats", + element( + tag="format", + default_factory=list, + ), + ) + + measurements: list[MeasurementAnnot] = wrapped( + "listOfMeasurements", + element( + tag="measurement", + default_factory=list, + ), + ) + + files: list[FileAnnot] = wrapped( + "files", + element( + tag="file", + default_factory=list, + ), + ) + + def to_measurements( + self, + meas_data: dict[str, pd.DataFrame], + units: dict[str, UnitDefinition], + ) -> list[Measurement]: + """ + Converts the data annotation to version 2 format. + + Args: + meas_data (dict[str, pd.DataFrame]): A dictionary of dataframes. + units (dict[str, UnitDefinition]): A dictionary of unit definitions. + + Returns: + list[Measurement]: A list of measurements. + """ + + # Create a mapping from fileid to filepath + file_map = {file.id: meas_data[file.location] for file in self.files} + + measurements: list[Measurement] = list() + + for meas_v1 in self.measurements: + measurement = Measurement(id=meas_v1.id, name=meas_v1.name) + + for init_conc in meas_v1.init_concs: + measurement.add_to_species_data( + data_unit=units[init_conc.unit], + species_id=init_conc.species_id, + initial=init_conc.value, + data_type=DataTypes.CONCENTRATION, + ) + + # Extract the format information + file = next(f for f in self.files if f.id == meas_v1.file) + file_format = next(f for f in self.formats if f.id == file.format) + + self._map_columns(file_map[meas_v1.file], file_format, measurement, units) + + for species_data in measurement.species_data: + if not species_data.data: + species_data.time = [] + + measurements.append(measurement) + + return measurements + + def _map_columns( + self, + df: pd.DataFrame, + file_format: FormatAnnot, + measurement: Measurement, + units: dict[str, UnitDefinition], + ) -> None: + """ + Maps columns from the dataframe to the measurement. + + Args: + df (pd.DataFrame): The dataframe containing the data. + file_format (FormatAnnot): The format annotation. + measurement (Measurement): The measurement to map the columns to. + units (dict[str, UnitDefinition]): A dictionary of unit definitions. + """ + + for col in file_format.columns: + unit = units[col.unit] + values = df.iloc[:, col.index].values.tolist() + + if col.type == "time": + self._map_time_values(measurement, unit, values) + else: + self._map_species_values(col, measurement, unit, values) + + @staticmethod + def _map_species_values( + col: ColumnAnnot, + measurement: Measurement, + unit: UnitDefinition, + values: list[float], + ): + """ + Maps species values to the measurement. + + Args: + col (ColumnAnnot): The column annotation. + measurement (Measurement): The measurement to map the values to. + unit (UnitDefinition): The unit definition. + values (list[float]): The list of values. + """ + species_data = measurement.filter_species_data(species_id=col.species_id) + + assert len(species_data) == 1, f"Species data not found for {col.species_id}" + + species_data = species_data[0] + species_data.data_unit = unit + species_data.data = values + + @staticmethod + def _map_time_values(measurement, unit, values): + """ + Maps time values to the measurement. + + Args: + measurement (Measurement): The measurement to map the values to. + unit (UnitDefinition): The unit definition. + values (list[float]): The list of time values. + """ + # Map time to all species data + for species_data in measurement.species_data: + species_data.time = values + species_data.time_unit = unit + + +class FormatAnnot( + BaseXmlModel, + tag="format", + nsmap={"": "http://sbml.org/enzymeml/version2"}, +): + """ + Represents the format annotation in the EnzymeML format. + + Attributes: + id (str): The ID of the format. + columns (list[ColumnAnnot]): A list of column annotations. + """ + + id: str = attr(name="id") + columns: list[ColumnAnnot] = element( + tag="column", + default_factory=list, + ) + + +class ColumnAnnot( + BaseXmlModel, + tag="column", + nsmap={"": "http://sbml.org/enzymeml/version2"}, +): + """ + Represents the column annotation in the EnzymeML format. + + Attributes: + species_id (str | None): The ID of the species. + type (str): The type of the column. + unit (str): The unit of the column. + index (int): The index of the column. + replica (str | None): The replica of the column. + is_calculated (bool): Whether the column is calculated. + """ + + species_id: str | None = attr(name="species", default=None) + type: str = attr(name="type") + unit: str = attr(name="unit") + index: int = attr(name="index") + replica: str | None = attr(name="replica", default=None) + is_calculated: bool = attr(name="isCalculated", default=False) + + +class MeasurementAnnot( + BaseXmlModel, + tag="measurement", + nsmap={"": "http://sbml.org/enzymeml/version2"}, +): + """ + Represents the measurement annotation in the EnzymeML format. + + Attributes: + id (str): The ID of the measurement. + name (str): The name of the measurement. + file (str): The file associated with the measurement. + init_concs (list[InitConcAnnot]): A list of initial concentration annotations. + """ + + id: str = attr(name="id") + name: str = attr(name="name") + file: str = attr(name="file") + init_concs: list[InitConcAnnot] = element( + tag="initConc", + default_factory=list, + ) + + +class InitConcAnnot( + BaseXmlModel, + tag="initConc", + nsmap={"": "http://sbml.org/enzymeml/version2"}, +): + """ + Represents the initial concentration annotation in the EnzymeML format. + + Attributes: + protein (str | None): The protein associated with the initial concentration. + reactant (str | None): The reactant associated with the initial concentration. + value (float): The value of the initial concentration. + unit (str): The unit of the initial concentration. + """ + + protein: str | None = attr(name="protein", default=None) + reactant: str | None = attr(name="reactant", default=None) + value: float = attr(name="value", default=0.0) + unit: str = attr(name="unit") + + @computed_field + @property + def species_id(self) -> str: + """ + Computes the species ID based on the protein or reactant. + + Returns: + str: The species ID. + """ + assert bool(self.protein) != bool( + self.reactant + ), "Either protein or reactant must be set" + return self.protein or self.reactant + + +class FileAnnot( + BaseXmlModel, + tag="file", + nsmap={"": "http://sbml.org/enzymeml/version2"}, +): + """ + Represents the file annotation in the EnzymeML format. + + Attributes: + id (str): The ID of the file. + location (str): The file path. + format (str): The format of the file. + """ + + id: str = attr(name="id") + location: str = attr(name="file") + format: str = attr(name="format") + + +# Rebuild all the classes within this file +for cls in [ + DataAnnot, + FormatAnnot, + ColumnAnnot, + MeasurementAnnot, + InitConcAnnot, + ProteinAnnot, + ReactantAnnot, + ParameterAnnot, + V1Annotation, +]: + cls.model_rebuild() diff --git a/pyenzyme/sbml/versions/v2.py b/pyenzyme/sbml/versions/v2.py new file mode 100644 index 00000000..bd180d4c --- /dev/null +++ b/pyenzyme/sbml/versions/v2.py @@ -0,0 +1,387 @@ +""" +This module contains the classes for the EnzymeML version 2 format annotations +used to map the EnzymeML JSON schema to SBML. +""" + +from __future__ import annotations + +import pandas as pd +from pydantic import field_validator +from pydantic_xml import element, attr, BaseXmlModel + +from pyenzyme import UnitDefinition, DataTypes, Measurement + + +class BaseAnnot(BaseXmlModel): + """ + Base class for annotations in the EnzymeML format. + """ + + def is_empty(self): + return all(value is None or value == [] for _, value in self) + + +class V2Annotation( + BaseAnnot, + tag="annotation", + search_mode="unordered", + nsmap={"enzymeml": "https://www.enzymeml.org/v2"}, +): + small_molecule: SmallMoleculeAnnot | None = element( + tag="smallMolecule", + default=None, + ) + + protein: ProteinAnnot | None = element( + tag="protein", + default=None, + ) + + complex: ComplexAnnot | None = element( + tag="complex", + default=None, + ) + + data: DataAnnot | None = element( + tag="data", + default=None, + ) + + parameter: ParameterAnnot | None = element( + tag="parameter", + default=None, + ) + + variables: VariablesAnnot | None = element( + tag="variables", + default=None, + ) + + +class SmallMoleculeAnnot( + BaseAnnot, + tag="smallMolecule", + nsmap={"": "https://www.enzymeml.org/v2"}, + search_mode="unordered", +): + """ + Represents the annotation for a small molecule in the EnzymeML format. + + Attributes: + inchikey (str | None): The InChIKey of the small molecule. + canonical_smiles (str | None): The canonical SMILES representation of the small molecule. + """ + + inchikey: str | None = element(tag="inchiKey", default=None) + canonical_smiles: str | None = element(tag="smiles", default=None) + + +class ProteinAnnot( + BaseAnnot, + tag="protein", + nsmap={"": "https://www.enzymeml.org/v2"}, + search_mode="unordered", +): + """ + Represents the annotation for a protein in the EnzymeML format. + + Attributes: + ecnumber (str | None): The EC number of the protein. + organism (str | None): The organism from which the protein is derived. + organism_tax_id (str | None): The taxonomic ID of the organism. + sequence (str | None): The amino acid sequence of the protein. + """ + + ecnumber: str | None = element(tag="ecnumber", default=None) + organism: str | None = element(tag="organism", default=None) + organism_tax_id: str | None = element(tag="organismTaxId", default=None) + sequence: str | None = element(tag="sequence", default=None) + + +class ComplexAnnot( + BaseAnnot, + tag="complex", + nsmap={"": "https://www.enzymeml.org/v2"}, + search_mode="unordered", +): + """ + Represents the annotation for a complex in the EnzymeML format. + + Attributes: + participants (list[str]): A list of participants in the complex. + """ + + participants: list[str] = element( + tag="participants", + default_factory=list, + ) + + +class DataAnnot( + BaseAnnot, + tag="data", + nsmap={"": "https://www.enzymeml.org/v2"}, + search_mode="unordered", +): + """ + Represents the annotation for data in the EnzymeML format. + + Attributes: + file (str): The file associated with the data. + measurements (list[MeasurementAnnot]): A list of measurements associated with the data. + """ + + file: str = attr(name="file") + measurements: list[MeasurementAnnot] = element( + tag="measurement", + default_factory=list, + ) + + @field_validator("file") + @classmethod + def _check_file_path(cls, value): + if not value.startswith("./"): + return "./" + value + return value + + def to_measurements( + self, + meas_data: dict[str, pd.DataFrame], + units: dict[str, UnitDefinition], + ) -> list[Measurement]: + assert self.file in meas_data, f"Data file '{self.file}' not found in data" + + return [ + meas.to_measurement( + meas_data=meas_data[self.file], + units=units, + ) + for meas in self.measurements + ] + + +class MeasurementAnnot( + BaseAnnot, + tag="measurement", + nsmap={"": "https://www.enzymeml.org/v2"}, + search_mode="unordered", +): + """ + Represents the annotation for a measurement in the EnzymeML format. + + Attributes: + id (str): The ID of the measurement. + name (str | None): The name of the measurement. + time_unit (str): The unit of time. + conditions (ConditionsAnnot | None): The conditions associated with the measurement. + species_data (list[SpeciesDataAnnot]): A list of species data associated with the measurement. + """ + + id: str = attr(name="id") + name: str | None = attr(name="name", default=None) + time_unit: str = attr(name="timeUnit") + conditions: ConditionsAnnot | None = element(tag="conditions", default=None) + species_data: list[SpeciesDataAnnot] = element( + tag="speciesData", + default_factory=list, + ) + + def to_measurement( + self, + meas_data: pd.DataFrame, + units: dict[str, UnitDefinition], + ): + df_sub = meas_data[meas_data.id == self.id] + measurement = Measurement( + id=self.id, + name=self.name, + temperature=self.conditions.temperature.value, + temperature_unit=units.get(self.conditions.temperature.unit), + ph=self.conditions.ph.value, + ) + + if df_sub.empty: + raise ValueError(f"No data found for measurement with ID '{self.id}'") + + for species in self.species_data: + self._map_species_data(df_sub, measurement, species, units) + + return measurement + + def _map_species_data( + self, + df_sub: pd.DataFrame, + measurement: Measurement, + species: SpeciesDataAnnot, + units: dict[str, UnitDefinition], + ): + if species.species_id in df_sub.columns: + data = df_sub[species.species_id].to_list() + time = df_sub["time"].to_list() + else: + data, time = None, None + measurement.add_to_species_data( + data=data, + time=time, + species_id=species.species_id, + data_unit=units[species.unit], + time_unit=units[self.time_unit], + initial=species.initial, + data_type=self._map_data_type(species.type), + ) + + @staticmethod + def _map_data_type(dtype: str): + if data_type := getattr(DataTypes, dtype, None): + return data_type + else: + raise ValueError(f"Data type '{dtype}' not supported") + + +class SpeciesDataAnnot( + BaseAnnot, + tag="speciesData", + nsmap={"": "https://www.enzymeml.org/v2"}, + search_mode="unordered", +): + """ + Represents the annotation for species data in the EnzymeML format. + + Attributes: + species_id (str): The ID of the species. + initial (float): The value associated with the species. + type (str | None): The type of data (default is "CONCENTRATION"). + unit (str): The unit of the value. + """ + + species_id: str = attr(name="species") + initial: float = attr(name="value", default=0.0) + type: str | None = attr(name="type", default="CONCENTRATION") + unit: str = attr(name="unit") + + +class ConditionsAnnot( + BaseAnnot, + tag="conditions", + nsmap={"": "https://www.enzymeml.org/v2"}, + search_mode="unordered", +): + """ + Represents the annotation for conditions in the EnzymeML format. + + Attributes: + ph (PHAnnot | None): The pH conditions. + temperature (TemperatureAnnot | None): The temperature conditions. + """ + + ph: PHAnnot | None = element(tag="ph") + temperature: TemperatureAnnot | None = element(tag="temperature", default=None) + + +class PHAnnot( + BaseAnnot, + tag="ph", + nsmap={"": "https://www.enzymeml.org/v2"}, + search_mode="unordered", +): + """ + Represents the annotation for pH in the EnzymeML format. + + Attributes: + value (float): The pH value. + """ + + value: float = attr(name="value") + + +class TemperatureAnnot( + BaseAnnot, + tag="temperature", + nsmap={"": "https://www.enzymeml.org/v2"}, + search_mode="unordered", +): + """ + Represents the annotation for temperature in the EnzymeML format. + + Attributes: + value (float): The temperature value. + unit (str): The unit of the temperature value. + """ + + value: float = attr(name="value") + unit: str = attr(name="unit") + + +class ParameterAnnot( + BaseAnnot, + tag="parameter", + nsmap={"": "https://www.enzymeml.org/v2"}, + search_mode="unordered", +): + """ + Represents the annotation for a parameter in the EnzymeML format. + + Attributes: + lower (float | None): The lower bound of the parameter. + upper (float | None): The upper bound of the parameter. + stderr (float | None): The standard deviation of the parameter. + """ + + lower: float | None = element(tag="lowerBound", default=None) + upper: float | None = element(tag="upperBound", default=None) + stderr: float | None = element(tag="stdDeviation", default=None) + + +class VariablesAnnot( + BaseAnnot, + tag="variables", + nsmap={"": "https://www.enzymeml.org/v2"}, + search_mode="unordered", +): + """ + Represents the annotation for variables in the EnzymeML format. + + Attributes: + variables (list[Variable]): A list of variables. + """ + + variables: list[VariableAnnot] = element(tag="variable", default_factory=list) + + +class VariableAnnot( + BaseAnnot, + tag="variable", + nsmap={"": "https://www.enzymeml.org/v2"}, + search_mode="unordered", +): + """ + Represents a variable in the EnzymeML format. + + Attributes: + id (str | None): The ID of the variable. + name (str | None): The name of the variable. + symbol (str | None): The symbol of the variable. + """ + + id: str | None = attr(name="id") + name: str | None = attr(name="name") + symbol: str | None = attr(name="symbol") + + +# Rebuild all the classes within this file +for cls in [ + SmallMoleculeAnnot, + ProteinAnnot, + ComplexAnnot, + DataAnnot, + MeasurementAnnot, + SpeciesDataAnnot, + ConditionsAnnot, + PHAnnot, + TemperatureAnnot, + ParameterAnnot, + VariablesAnnot, + VariableAnnot, + V2Annotation, +]: + cls.model_rebuild() From 86974310e9eb82541c8cd45bab9e67800c6e8073 Mon Sep 17 00:00:00 2001 From: Jan Range Date: Sat, 7 Sep 2024 19:47:06 +0200 Subject: [PATCH 058/172] rename method and update docs --- pyenzyme/tabular.py | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/pyenzyme/tabular.py b/pyenzyme/tabular.py index a8e5e55e..1185dd34 100644 --- a/pyenzyme/tabular.py +++ b/pyenzyme/tabular.py @@ -107,9 +107,9 @@ def read_excel( df = pd.read_excel(path) - return from_pandas( + return from_dataframe( df=df, - id=path.stem, + meas_id=path.stem, data_unit=data_unit, time_unit=time_unit, data_type=data_type, @@ -161,21 +161,21 @@ def read_csv( df = pd.read_csv(path, sep=sep) - return from_pandas( + return from_dataframe( df=df, - id=path.stem, + meas_id=path.stem, data_unit=data_unit, time_unit=time_unit, data_type=data_type, ) -def from_pandas( +def from_dataframe( df: pd.DataFrame, - id: str, data_unit: UnitDefinition, time_unit: UnitDefinition, data_type: DataTypes = DataTypes.CONCENTRATION, + meas_id: str | None = None, ) -> list[Measurement]: """Parse a pandas DataFrame into a list of measurements. @@ -188,11 +188,11 @@ def from_pandas( If there is no 'id' column, the function assumes that there is only one measurement in the file. If there is an 'id' column, the function assumes that there are multiple measurements in the file. Hence, if you want to have multiple measurements in the same - file, you need to have an 'id' column. Otherwise it will return a single measurement. + file, you need to have an 'id' column. Otherwise, it will return a single measurement. Args: df (pd.DataFrame): The DataFrame to parse. - id (str): The ID of the measurement. + meas_id (str | None): The ID of the measurement. Default is None. data_unit (UnitDefinition): The unit of the data. time_unit (UnitDefinition): The unit of the time. data_type (DataTypes): The type of the data. Default is DataTypes.CONCENTRATION. @@ -215,10 +215,14 @@ def from_pandas( data_type=data_type, ) else: + assert meas_id is not None, ( + "The 'meas_id' argument must be provided " + "when parsing a single measurement" + ) return [ _create_single_measurement( df=df, - id=id, + id=meas_id, data_unit=data_unit, time_unit=time_unit, data_type=data_type, @@ -282,7 +286,6 @@ def _process_multiple_measurements( def _validate_data(data: pd.DataFrame) -> None: """Validates the data from a CSV file""" - assert "time" in data, "The CSV file must contain a 'time' column" assert data["time"][0] == 0, "The time column must start at 0" From 43f76e67a077c0f9bb12c5418aa739b762192878 Mon Sep 17 00:00:00 2001 From: Jan Range Date: Sat, 7 Sep 2024 19:47:24 +0200 Subject: [PATCH 059/172] use `float` instead of `int` --- pyenzyme/units/units.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pyenzyme/units/units.py b/pyenzyme/units/units.py index 917beea1..51645a85 100644 --- a/pyenzyme/units/units.py +++ b/pyenzyme/units/units.py @@ -49,10 +49,10 @@ def set_scale(unit: _BaseUnit, scale: int) -> _BaseUnit: class Prefix(Enum): """Enumeration for unit prefixes with corresponding scales.""" - k = partial(set_scale, scale=3) - m = partial(set_scale, scale=-3) - u = partial(set_scale, scale=-6) - n = partial(set_scale, scale=-9) + k = partial(set_scale, scale=3.0) + m = partial(set_scale, scale=-3.0) + u = partial(set_scale, scale=-6.0) + n = partial(set_scale, scale=-9.0) def __mul__(self, other: _BaseUnit) -> _BaseUnit: """Multiply prefix with a BaseUnit. From 20e73a1db66347b0a09c0e31a92d2091b998c9ba Mon Sep 17 00:00:00 2001 From: Jan Range Date: Sat, 7 Sep 2024 19:47:35 +0200 Subject: [PATCH 060/172] add function to extract the namespaces --- pyenzyme/xmlutils.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/pyenzyme/xmlutils.py b/pyenzyme/xmlutils.py index fb23f55c..f4fa58af 100644 --- a/pyenzyme/xmlutils.py +++ b/pyenzyme/xmlutils.py @@ -1,3 +1,4 @@ +import re import xml.dom.minidom as minidom import xml.etree.ElementTree as ET from enum import Enum @@ -130,3 +131,29 @@ def serialize_to_pretty_xml_string(element: ET.Element | None) -> str | None: def register_namespaces(nsmap: dict): for prefix, uri in nsmap.items(): ET.register_namespace(prefix, uri) + + +def extract_namespaces(xml_string: str | None) -> set[str]: + """Extract all namespaces from an ElementTree element. + + Args: + xml_string (str | None): The XML string to extract namespaces from. + + Returns: + set[str]: A set of namespace URIs. + """ + + if xml_string is None: + raise ValueError("No XML string provided") + + pattern = r"\{(.*)\}" + namespaces = set() + + root = ET.fromstring(xml_string) + + for child in root.iter(): + if match := re.match(pattern, child.tag): + uri = match.group(1) + namespaces.add(uri) + + return namespaces From 64b20753de4e823c24c9fa122fca0b7bf4000b02 Mon Sep 17 00:00:00 2001 From: Jan Range Date: Sat, 7 Sep 2024 19:47:55 +0200 Subject: [PATCH 061/172] update tests --- tests/fixtures/omex/invalid_no_master.omex | Bin 0 -> 26375 bytes tests/fixtures/omex/valid.omex | Bin 0 -> 2429 bytes tests/fixtures/sbml/ode_example_sbml.xml | 254 - tests/fixtures/sbml/reaction_example_sbml.xml | 217 - tests/fixtures/sbml/v1_example.omex | Bin 0 -> 13024 bytes tests/fixtures/sbml/v1_example_enzml.json | 7061 +++++++++++++++++ tests/fixtures/sbml/v1_meas.csv | 10 + tests/fixtures/tabular/data.csv | 23 - tests/fixtures/tabular/data.tsv | 23 + tests/fixtures/tabular/data_invalid.csv | 23 - tests/fixtures/tabular/data_invalid.tsv | 23 + tests/fixtures/tabular/data_invalid_chars.csv | 23 - tests/fixtures/tabular/data_invalid_chars.tsv | 23 + tests/integration/test_sbml.py | 102 +- tests/unit/test_omex.py | 37 + tests/unit/test_sbml_annot_v1.py | 154 + tests/unit/test_sbml_annot_v2.py | 210 + tests/unit/test_tabular.py | 7 +- 18 files changed, 7642 insertions(+), 548 deletions(-) create mode 100644 tests/fixtures/omex/invalid_no_master.omex create mode 100644 tests/fixtures/omex/valid.omex delete mode 100644 tests/fixtures/sbml/ode_example_sbml.xml delete mode 100644 tests/fixtures/sbml/reaction_example_sbml.xml create mode 100644 tests/fixtures/sbml/v1_example.omex create mode 100644 tests/fixtures/sbml/v1_example_enzml.json create mode 100644 tests/fixtures/sbml/v1_meas.csv delete mode 100644 tests/fixtures/tabular/data.csv create mode 100644 tests/fixtures/tabular/data.tsv delete mode 100644 tests/fixtures/tabular/data_invalid.csv create mode 100644 tests/fixtures/tabular/data_invalid.tsv delete mode 100644 tests/fixtures/tabular/data_invalid_chars.csv create mode 100644 tests/fixtures/tabular/data_invalid_chars.tsv create mode 100644 tests/unit/test_omex.py create mode 100644 tests/unit/test_sbml_annot_v1.py create mode 100644 tests/unit/test_sbml_annot_v2.py diff --git a/tests/fixtures/omex/invalid_no_master.omex b/tests/fixtures/omex/invalid_no_master.omex new file mode 100644 index 0000000000000000000000000000000000000000..6b4651cff5fee42e15a88b810766cdd35bd5bfe6 GIT binary patch literal 26375 zcmeHv1yok+)-Daw-6>$u9RkuF(%mJEq#z-wG)OnnrIdiuAR#F!-QC@Jzt3~r8xN@L z-!sO&j{m+4dW|*LGoQKUTC-khac~H95a6OLBUSnO!@s|vf)IlkTiENE8S86VSZbN; z*w`9a(<;a#fIx#e4H$w0K7rru9N<7eA@)E)K)#+w`s?{%Kw!Q*9~hI2c>*|^Hv@!G^YwK!nN=hhhA}RVvyMcvZgWpBQqo<=Q0yQR1>h^HI zH;Ijk3Zdg}X9hZr$wV$8ZG{8{bv}ElUe(~?5iegg+Axdnb4o;9s-ul8*o+Z*2a|k0 zLVrG;fsQF>L|u}R)oN^FA}hnNxw%s?zM_jax!T>`yRali#gA7uMX zyRUC@O!B+DGT*pYdA?<-{&``k>E3y{zTR<#-s%3?aqjfsAkyN{Fm$?$RfPbB0u}JL zYMdYat!fBt5D+|oYOd&mmPSBMOU~BP+Tg2ZPV4#&2c8WWHUmEYL+5MJZDRF2=sX)~ z-BS1YFkv+iKTt>K_%uq2tRP``3r56-q|`;txz+nWFhmnR3}U%?yU7Y%Ec!R_GUyE2b)K5$4Qxg|z(wi5D4yx4n+beSj4YiWgbUN0kU-m=|jpeg&ae zWmzv7^6M`nI7Vn4-I%Jc32c)C{W0s?pzCRAX=vN|;EH#0@1r%;B&Qf;pIum=oh1?b zaKkfJXbyPq1q+zuW4zlfSOobHSHDeC+ZF7MaF~Z>1g&Az%j-tW(uf5lbs{5Z+YCS` zkh<$hbpTL)=d!(D!>-o#{QeWm2Q9=y_B_PkX$O&;BCd4rore6wN58?x>(0_`ul)vFuT-r3FU(ISc z-mdGILuoBwE=G=qdl-NkuI?*KhB5n9Zs+E2 ztwq2zj^L(i)N*~fa8%c`kbys!%tJ7A@w_#bBJ*~hZTJFZH6z!qRFr?7rYS>{uFb;{ zzkOPG-)avp*&k!n0pVzB9%NmM?jcozGdPfm@=}*lJb2>7-}n@4jB@kpU>m9L`V=0kC|tN7YYeYY&=M^?>5v5v;y=n_Y1Uzj z!%Q?MpbadnuDtb)W4J@ie5@-FWLBDakC(o%Qkpcp7l8Q|kyO_4l53k6))7Zk!px z;k#=`^1cuJ5W~54Xoo;yAvIK-AW%tE^2$iY+Ckv#pe(XoY-$H;zJ2~dGZ<02mCXnB znRA%@rDT(329kAe5!|M@JLBCB{O@PiBH!~($UKRf+wiXN9J{DJ<~7)a1R7pWa2PHu zK(j#YUaxl`Ba{HW-^}o?Qt+qS9YG8T2*I^>XJl*xc>Frjm{~sl%l%DW@BY>_My#hr zP+cbSClMG6*Fmicxh$FcA^AM+Yw*E8LR2-X@SW>N-7h`(H1ASvCO#UFCYCKmA#KUj zjY7b3=aFH$lwl-=I7Rk-(SweCm)xC4*+*)*auxY1=Y1nmN+YUVX8kQ2xl29yXOD6F z`JSttC>3b-FF#eBIbW}~q8*#bKVNp)GT2)0P;xb2vaG45HF5p0=lRUMBJWEfi~RCM z2t!FR2sP4y5xdsg$F6L9r)$S26$_TtQdlcb-XUh>mMO(O+ZobCILbK<*hUw1OIaYu zyKt!uDMV~GzBPKRC_frXz6tJu#*$vT|-KMR`$u%0* z*DlMsUlEz{h)Jy*X1=SiK*x9xTSv`m?xD3lQ)GfWCyTnv?6MzMkF63OBGX9Xz1Zas z>&Q5tVGigSY;_qGeG0)<@Q{3C3m?Q9iIhk@O>0H_(k)Tn@5_Q<3~m;qsug*6UxZmA zP0%n~L|B9oy|;G8N{bagJ-ADt^h;rObaRMZia)&HV%_H_X3??qk&=RhLCj2xBWPYP zU`zGK2$!0SbU*MT1i!783?FGgC`~5uj81MrERy(Aq(4wlkkfkSDCZ4{ge?bl#j-Yo zHIqRfQ5z<`SpfBkN`J{?FI%-wO=Jv;y$EW|DE7z<^s*QR)58ox5A0j^>M-pM6vC*T z*zEDA-&dQdQpo7&r1Z#W2-m&vEYLwjmZ7Y00W;<(HEb*8v~NkrZ(fIJYego(S>d-% zKnJhbM@Enre|INRH@DRD7D%$Y=(&=l0;3OgYISO?@`~De7qdoKfHL`hYd=if=Y~d7 zC33{3S&Fy^))H+AA7D%~3?D(U)V+^(SaHf7m|Mu2PTDCw%N9Jh8#V()cP7E$Qg0$T zC&QUqc~++Rs*rH>JhQ00%(nrL3aWjTLRkIG`L z(Er4$hvh*QA@EF-mKE-Tqh(4mYxnF7>jOw=_~)GGox7@`ULs;nX1dOMwCUmb=j4q` zd%hC&-;AKEpw=Zz$i14MfU8zx56&xAx1+nu}KD+v2T{WnWdt zhIom{ypnu#4+D;xkF3#Ou5ge-K(_iGMod33cJ`o2d{{a@P92_y&$2{Oj6j-FKAC`@ zkD0EZukvCd@qNvBpGFJV&}~8AW?S)E5rL&>H1W`a1dZ4jSX+*yfZY~N)Z2nWEQKlh zW>KVi6=XOgK89FUUmuN9tjU6%!CpMHP%SiIOjdstmQ3%x zRa1nu{A%4C?sDs0Z$@7cB5A+{2mmfXU^RkNH=hi}iQIRPQm`SB=k`AC-3;{PDU0Wy zoU3Fp&ox({m||EsTdu#%hJzdJ^Pn5q8$EfTh30W*Y!r-!0iw~VkR;yhJ*(O-MCDTs zj4&VQmz}12Gmj2tk|)6V9&2O@zqjm5pO^_n{sdC45%I(l zFU&`uNvA>uQ5a#f$R$44jd2qbNahl!Hiig&9L<`EqJU_s-io(K@&ymOW;z!N|M z<_Z1c%3gXHu9J+kC(yRJF+SC-x!6^RplqvE*qe$pplD`5dQT-M8acIhq7zKa7L~m5 z8A3;(-N0|H%28nG`W#5)lg~)9iH^&SB{e>Gsos8XWBDQR2=4Z|3ociIea#6o!@$LUIXF8`#dGLx zLtKfd5-pRdm4zpG67OGPp%QTC%^XbbQ6EP?i1uHsJdws#>54kfV#O{-%GB}M|J-|K ziL*SR>7lj0i*+$lc58M8dVyuXpJ$@nUo-8nZOObVFgH3}56nBmb{SwgP0 z;j|Bt>u$>Ovoy}o%*uJ|i%bzpnZucG!-KVglBr%cH; zvxxX>#4x9<+%OACSguV4dr^uHKCN+c2CjPeaoet1#u8j|J0qgd|8M51J`Wm>|9Cr{36LmX5xRUc9yKh4QMo zo0)-KENz?coyoYml$LYF8)(|qim-uU_+^JPK}%r;&icyZQ-;+3FZl*IY3rkT9Z|aW zTbU^xQAB>&S)pqEX^PLz{KgP8Te_SZmrnXoGc->>D@c=bz|Z%TtY*!J@K@k3JMJ*L z+(O6qSE%(z8DF1YMh*;7lAEXq2N>E;07v!ka(RD3F(HjwW`JWQelqJ|TVR9%%%*b7 z%Ornz%m+>u2T`7-o!s&|!*g9m0Rss|_)M}3R25hi8f|RKI%eateZ^pCQ7c%9ZT)d_ z@g3U{TZTbHkVbVyB8ly%?Jz--=BIu zqG~eZw@XPS7m_miqs2+On)n@-VGshafpxwFV$i-XqL7707DS=(FTy2*NFCMcIc|HhZ*C){6k_kdo^i&y(I7x*W}?`bGVf#v zKp(!Lg|Ez}oP%BDjO^{grj=6aYw(?8)@ToJ;ihSt-j?%YP;ttY3twW_o#epFQej03c*F&f+Q9Aja! z6J;Ty=#p;CpS*qj@oe($wM7Bzk)T7+=XT__3)Y%LkZ zW@QgN&|Hhx1gC=kV%$5jAJp77cVBK~WiY%iLI>r<`a)0hkZWr)9H~b5)zm>Wk!!%v z+$%y?TVvu=LOlBSij4Qg*0|V5!oWBkldPNMEc|_}sCPvBRu@IdOcS?N>ao!u+4gs( zgZ6VWPX}R$#Z9YmgmSQa-nU=fM*b8OBx@)W0onxeXgD(t;fPDRztlU6#z@=67sP$970rBSx3@qJD-EW5;ea_dGkdS#no!l@A)v@MT zs*IQX@jeTDL0EC#(F!f^`N-zk3pb8LJ{W#>j_p6ZeN72`x z9&g?t&%ydX%5$XtU(R#r!=XLZP=<;E<#R0)!_6D1D`)JIeRtqm3>m~j*Y*^z-uRM55-Dmgh)Q5{@B2yhLt8pp@6Hm}$(^rUrP0U`3a$e6)LlK|C9kn?6;J_m%@(!*risqO<`8#t>&$rJ-Zh z_*1^Aw3SUx=?eLDeOjP^Qo5UP-}5BXmN)1RE%iT}(WX*uY2vcJY-3&z-i%ydF3m=r z*7Ql!i7(lD(S+l2XXAY(#&M8G1=VxfQG(TT=zgRe4_ctJ!xA3D|8LseRSNzW*d5c& z?2h;Qyl(Dgf0uSmUbo`9ysr836aS}xyslN+%N(H~#TVr{wMqSm=-P=3MpCJoNyMLv z;6=bhQ6Jo9QZg7Km!H3tpE#+w{Q0!JKC5#a9p4$+wb{6{*dhEC@;2CY{x0~NzY{05 zxbuj^Rm0OSPL9R=F3N_mIhkrWKB3HoOCI?<*~3bA_IG87MYYhzqxdufAGklNmFLHn zOZYgEgud9y@O{rT-t~CfwM{K~Wdl*h6tmA4Ow7 zmuWp6GSuW)4WCi4{z65geTJ=RrY%j5vpvKyT@N|iMYR;JShDRVvN6}XOVZj0YgTN@ z&y$|kr74hY_dzK&Qq7dQ59-^@#Gl$JJ^-)JEy(e9(+?Pw?k3f}XfHFVO)>d0SQo$X z!FFCwMLQXqJt)1l@WG~Oefub-Q38sr*kh}9)V1m;iq=CJNZa#|#VhxW6Ij8Xr=8F4 z1v-oneQ+1LRk@4I_R+0!fKNp%00yQyw^wfc+Mac)x;(}bo z9AvkJhsiI_7{3gCExV6Ib{`>uf`9-O{C8Y&S@jRWKtS&QDz5k;3;)FM06iyLAb_5e zmY~0SPHgGQL2zoi!VCBsk8rRX!gg%-P~l*$W%u}GDaF)xLU-gCc6#bsu|3_rK)^lG z`6Q)utwfEjOvJ==MRTlq=o;9X^ogfHnGlm{Sn1iJZ@*Kt7>pk zen@sFeZCgCZ8imcic8_pM)N8>?Bbk% zVMM;tfn{k=OM#F?pKI~RelBUr`xpuev#H)$)RiPn}c4!#L6i}TI zfEfVE{@V;LH#OWK!eac+^Z&4?;k!3o?6CiM)BPB12Hvt}`uCeI$B4!-V{AB!lr6-f} z*{o63cqKS~%)RTaP|jSlPPhDyH63KaoydCFhMLGgnom<3H4mN zC{>g5?qHTrC?Xc@#Z0J%+r={j%+ZzXf@8(7zOH>j$$~ADD0>rFs#dvaop>J@S5{tI zJ4-ippqK=nkXDkP6y?E+jl#Vm3t+XYG}wB<6?ULD4(lRZrx96$wT@_i0lor_QTO%s zi`jL$_22aTS1I@>Hz4Sr*}=f@Kd`&Okbhuz(LxZUUwk!L#_oU0x5Kd5%7bB`4qla3 zZ0=6b$!p!pECC0PUSN+6%Nn@*+Bg=>mn4W^*lT`R#q}1)j+fFS*j!sv*D;;G$ChHC z)!^K-#S5wrTYYXhx{H3Gq4M+xA*oT%4(RI89>X!pJ`(00#up|oo9pTkiEil)(i+g- zo=3Oqr64<&!Slu>_XI>(T1Jg;LmygBetwhh*}BDx!z!HhHNskLE2q!}L|9}bV|})5 zi$AkF&9_0aN_M6!qy(J*B_dYm<6(``V!wCi09fKD`iMW8m zeY}$V`?7S+ETG3LE7E|_zNxorW4x-ufw526n$J8(h@5E?hdfJwl+sRQQT&yYX}Ks? zVdRE$)LcV$#8jTx;>!|h=*5%qjVRaDzgoEBKQg8k%}w675q>NM>tD`NV>YrhBOnGU z2kjc3X`Vet9UM{!&30?RduP&?x4BsTh0tP72@Mqcz?@p|kk_#rzkhj-jLJk{BFM}3 zxF?QvJ;HnJ{fDOl%R8aI#n z4)(w)3Kq=Q`Axh#YqZ34QLBp>K*!EQt$?mOO}5?o+CKwxTdWWnpkJVluYcP7v;LW@ zMEvR2cY~)b+s&-+KjN&B%klkneOnbaPx-#@+Y0*HxAir?-{M8Ou5XL)@4hXX)*_p% zcJNDmTb2Lr+e$RHq6PGA-TG=AV=`ouO#@K_iGyFHYv@R=MQT> zZigv08tr6Akq;RNcA+AGd77G=r~5FVnSf|?wd-FDp1D3BTEm10$4d3(nJ<4A#?0h$ z9RIM>QR=Cawx#QdF>d6p&-%rBec&_dU1&s981?+Gl6 zHWd<0nux6Euc6IgnI&@Ai!+SNQJ_)D$!=tRomh~c%#nMNuSMn3XryI#NOW(|YD9bG z*}}7yK1B*#!@-E9hdY~)xW29$tflqQLXIO(g-g-Y_tGM(S1?yi7Af`P_HD`vm`oub z=c!v8=71V}d7VB#th^-7KVa4;i`0_$38p4{WBEjt(d{wRW(OVC3&otMaWhG3I_Naz zca)F_i3j1@9xsE!ES-+ju_g;K(Yi-AZb|iZ)XaJH20CcaBqxo2 zbggAu579vq-X>AN?uTbfloNt}hx}!R=63{{AHbPHBC%q-Te2lWh)m!aQ z$}_;3{kh7ZQp8D8OQGJ~X8VJ(n#~ticd&(W%68LR^R-pT*4ZX1{t>t@rsj)ERpO(Y z7SgMfjp@8t;nF%s+RnvVw8+iXPRV82sc5OXyU$hX?V{~j(FGGTI5;1*74!8LQ*|>v z3N{eMZUyU&Ds!);VEWXx>k~r(UYHAi@=;o!&7k%`KRti*qg!et3UzI8(LFf17m;i- z>wJZwU3iGtiBa0mg>)ilK1rUWdSo}7gk9Dt z;b1@~3#DP)fPii>xIkt+Jg2N8^MZ*s*ej7|2R!Rtmv`$vjs=5Py~JR5c&dukn*e3Q z*4EMJD5xh)LG#BRZ1d0H86$+KxHH((FvXFKVrMG!G@~V+forbs8$D|kS=ApU=;dT| z)8kE@Wb@#R-_#3AqMM;%jDKQVb63*%*&v31A#otosZlE>zf`mj*DXYvI^z(Bp!sB6 zeA3?OXbeH2DM5FG82ZYHDI?GzYB-ON`A!FCU!oTQxq@gLDMl$wTP%7R}!#6@76xNLn zyFO_(dd?xME$i+(J@*ygR%skcJtKO!J%ff(&oy zE>J#9p*T%`lqQxP>~gIpg}i;T7gOzZJW7qHGvI}***)MWIMGFrNU||^I4D@N;ec%I z{7#55A^5{SZNUm}VqUPu)?wZ!d)@Qt{R3N$#LST``S&wU^3O?5)nRI)TRcR(5mDli zHHrjLEi~&68{0AUb2eHEHfRI3#uGc4m$T(N<&wR+m(CrxPMi#3sf2693!V5IEJD0Tt~ST8(=?*maZRRYOkF?}s#`lT6Hv))7? zFsEesk#b-;Sm3zAyO$d7nhq+9eqs+?8129xY*zPVpME(yI~bpcK>V;~%W~ndoVBgA zu|aX{Zb{1!ZImhza8&mm95@o_a>N%Pvl<25ZF9@ zvCJtwd9pC#uVsuCTVOTK6+jdr9nO5+u**N@4bz0=QB+Zaa8G?X_RG>>Hnl_Rd)kkb zU#A3}oWt;uxQV!d42JrkH*2^KxtQVrS;ujT(*9t1rfs6iwLRQc(F`;PI+pY_anLOn z(#ji!nWrBl3nayZ*Os^Xb}mS6agJM#wlYS2?rQ~b2S`)mMR&szg6YEj$WO1mD0%o; zD!@9B5!I9m@J`)yl(50bDz{)k4x^kIsZem=!}}1kFUwDMu34tgBkw{@y`5YB%Q^di|#<%FQlyjciK+MdHTu`)lk9>vuji#6qz3F$|IEhtG(?vxh+UlHDPbLDTli-o+dIzj*@ zbe&}i3NgW*MD4Hi_^zQDL;c2dTQS1`ryj?f8b=Afxv?+?MkiB*8Y z?jG0-XC|PjP3i~1avQ7Q72pr;aAx{|KLCzkz$%ad{Gk=jOkPtv6>tOvRspjOm>MH( z0rL)++B*?#(|NE`MJa95Iml8)O>I*H_)?LXb>5tb#Y9v@<}WHE!=LpUPoBosai!-! zc(#diwmY7nb37sQw0JJe#E9E2ceYYF_ijgbg6yyg+yhJDmuuwtpNCx_4po@@RX6qX zxdrcsZNLpDB2+~0lj$JrGK9&^foLH*gyB<}4K3+z*1ln)CqeeAd>Zdr_1-U<_)DGf z0v=I&on_e0IwI7-p(DX6*HZ)CY(yyzxkGKlJAQN8+qm%qb>nzi5}bg8PY#jhwR4mK zhpz2B7<9r35>0!+X1;M+hcA(4ScQ)-kq9_e+(Uu^cNlQSHVfMM9|zK8 z3F1qI+nehom$5qPIshl2 z@_?c|J1%e~W=EZ-Y-H~>SrZr8uvy7LiBuTWbecPlsx4wqnvPXZ0S~TyI1{H7E}=+$ zaHvp&C@Gk6gG^5|o3TD|Ag35E#@#^JG#O!0(8mdu-!d zs)=vfi(cjV+oaJHM(NRv_r02_e*!CwhTIkjiP$SP+Dirc)(z&ZHcn4#;nWFbcWZX3 zmJxZ6b%{}>a2+`ab)tHl;U^5#!OY;USgZ}+!7mYiv`mpA+6*yD66HVDAX_1X16Qcw_-(+Z@qJyrl_;h_x1LO zKtq)kLUFjy;FJW?%F`lTMwD;n&d4~cZ3@Ga{*zA2<+F+eG zj@cC_+bp3KC%2&87gXGdhKGn8TSGpzoNueS3ZJ}{e`qRr_$GlQ2?cWQ9hDS1%^p%? z_H$xb+t-`C%S6N3#XUih3d}{EGWRG7(XEo@wYMp{pzfcy)5kpgT*-TTXN1^&*G~*t zPBz9s(twwrs0x$IKLmvlKKf8TA$ll`Ar(uijZtF(Qgc^F z+JKXl|C*(KQr-1+p7NTR%DaIj)q;>~T$20nzTm!&K+P0$P-+;Cs->VF>~7c& zjUKDp>L!mZN7nGH7JtFgH?s`-Xl${YMfLP?>jKqAh$p|E?*O-g2kG{wev2ShOA^3) za&q;8$0mk3_T7gZ(_tt zl#$w~Lc1rqB^VT!`8v@yPR^I&R*L(A=0c)>X@_YVnaoGsS9?J=t?)att{odRqs@)@ zln(xLmf3umxqv=$37_X9EOCdZFW6Zd&@LD}X;7(Ag)`T zR{8=c1tPniaNyPyHzfQj{C`6De`BAH0{SQEPaMpsHk~=brl|c_=FlGd*kC=l*T+g% zKv&AbC{8aT#w=cpC?z3I)mqF#Pe)JB#Aw^k%xcBh!%Y9ww%g9SxVX!Xx$p^NX@M=h z9V6Ypy9&gQPU4CHdis8&j>|U&FdP3fKfrJk+u#anK@b4g#zr=z3YC@XVof3aI|8?R zP4n!dJzw^V@84E55~@p3gieDRw3mKKNzTHiI`xoYvrzarls_0gw;^#)yn^%zVpeOR z%el20TZ*FdXM1IqDz+`rLOyzpVG3{M zp3|h0HM)}Bk6QU!+rpxomjc=b5ZU#%@eiEARrvqJHvV5M=fnMiaK@Vu&K%Sh2tfxR zyw3xf`(@X2y_NP=d|h$JqQW@S2XmZ`v}WXq^*PCG_9bRQy`|(tw>aM3tN)^h(oi8w zHeioUGEiu2KH}j95eYqfpl7N~r;6yi(E+tY_i0$cHfz~| z-G_9j1JUUVA`2UbwSveUDA^jAo=Hnzxm0Ske>ntU?>>Y;0O>$ll+2o z)|-${9$be4LIMMR(f3gwLLm8~iN-o9iz=qUJG~UkPQL?9d{rZ5QtUpnewIe@p&Ngo z|4MeyqWp}a82so5jtCBg))qz6QIVG9AWeR1$Ja*t-ov_RgnhRM*)s6PmV;K&@hS!y z1Sezfgz^%y(LA)^{=mQ1O=DNy@SGBQp%5b*daHbg=<{$*)T`EKf)1{OBt*a`fjy^& z#47;tK!m?d{8csl>BM9Ff_Rpj5Kr)^1)-Mi>ucVJTPL)Ni=+bE-Y76n*I8Xpxd6#R&9{Dk&M8SHFHYH~fByT@T@`NI2eu9xIsI0pY-e&DVUjmcRi^?8{j?>SD8@apA(sE{t?^St2kG0KHr-z4Qbn%mRrp6na z5LqlLUL^+)&{|7Gan7QN_wk);kLB#+C64Af^m9jVPnT}WhC3TxnaqCw&Sk1N z@J)kK@bpnrkB*9Ov*&B2X`vIr6W+`{I)T>PL=N!~+;mbYZi#+2Ec>$T_e!mx)Nt6x zM^W{8C{G8dI#2D<6>xh^UoPU1mipj0&pfMfi!#TU;NFOBBA`*@iy8TvlM5dXc^v@Y z90=~WIlrobKZ$ctFm!NqfGV!v+3@Q>0AFf(fj?bM(EZh)|HFL_|8@RvI~`u$=nuHl z;kQ-mE)DqcuUy^#VBbS&@xLVjHx9hK`y6oNz;7$f-4sCjRV3GMGk0ye@q0m+caH;Z zX7_CY>MG!uAYCKz=3Coc1_unbF7J~DOmco(#qLW0nO8;qwKdqycB%VMahG=`18%h;a&m>=SoBXHb%lmQxdpEzWVs~4pp8~zQ0oO061giBiPT*c&-&V2vD)dcp zUKM-;n3re4fx+{)1rQ8#9n2pMeg8v@zX`3sCcl6nJxm*9%^YbD=SvHSbmzXJIqvA=)_bnKUh za=vG>n(SJL-@L%p>6_nTlI6~?K>k?p4PaiL0r?&#%iW*CygKahTQKwP-4y0k!8d?; zdD!54n0fbq3iIkz!EeE&qP!{0tAcL;^Kx(d_b{obehTwy6Z>z$OryRj%&UTL0P}Kx z#P=}MXs(0#lSYW&f+@`T3z$C<{1cc!4|lmQ0r)$x+2Pw-;}zz*4(1J8AO4O-fI=?6 zz+R3E*4*O(LVo%Txk)R;Wp562tCw%Y@1Go@53j@Y?d9qwJqZ6P>oT}UZAnGUN{i8zje@eYv`TQQ>A>WSyUM+Fn z;NH7jJp3NuD*ufDUX^+S1}~TIz6Xdd_+x-q>vT5&c-cn32M8l{BY;<>-T>g`Qq}hW zA%%Yo@M=x!w*a02MBTtduS&fEz{@3>?*Sf*{21WX+RJYN+!wtOz^hVk0Pu3%;d_8P zVm}6WwZQOO0Jp_&1n{cV8vwkVWB(rDhQyBnUQMR|7Qh9`8v(p3^#%YhCzQVjI4kvI mfLAlezXfpQ(TxCJm3l2eNI-%O1cU+bfdfbk4FdDCApZxae`x&x literal 0 HcmV?d00001 diff --git a/tests/fixtures/omex/valid.omex b/tests/fixtures/omex/valid.omex new file mode 100644 index 0000000000000000000000000000000000000000..087704deb80a5f2edbf78637d98194f6b7c3735e GIT binary patch literal 2429 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Vessel 1 - 10.0 - - - - - - - - - - - - - - Enzyme - MTEY - E.coli - - - - - - 1.1.1.1 - E.coli - 12345 - MTEY - - - - - - - - Enzyme-Substrate Complex - - - - - p0 - s0 - - - - - - - - Substrate - - - - - QTBSBXVTEAMEQO-UHFFFAOYSA-N - CC(=O)O - - - - - - - - Product - - - - - QTBSBXVTEAMEQO-UHFFFAOYSA-N - CC(=O)O - - - - - - - - - - - - - - 0.0 - 100.0 - 0.1 - - - - - - - - - - - - 0.0 - 100.0 - 0.1 - - - - - - - - - - - - 0.0 - 100.0 - 0.1 - - - - - - - - 100 - - - - - - - - - - - - - - - - E_tot - kcat - s0 - - - - K_m - s0 - - - - - - - diff --git a/tests/fixtures/sbml/reaction_example_sbml.xml b/tests/fixtures/sbml/reaction_example_sbml.xml deleted file mode 100644 index 95a3e463..00000000 --- a/tests/fixtures/sbml/reaction_example_sbml.xml +++ /dev/null @@ -1,217 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Vessel 1 - 10.0 - - - - - - - - - - - - - - Enzyme - MTEY - - - - - - MTEY - - - - - - - - Substrate - - - - - - - - - - Product - - - - - - - - - - - - - - - - 0.0 - 100.0 - 0.1 - - - - - - - - - - - - 0.0 - 100.0 - 0.1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - kcat - p0 - s0 - - - - K_m - s0 - - - - - - - - diff --git a/tests/fixtures/sbml/v1_example.omex b/tests/fixtures/sbml/v1_example.omex new file mode 100644 index 0000000000000000000000000000000000000000..3783b00c3a106982ccb4620bb824b07276369267 GIT binary patch literal 13024 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
+o(6;a7A5dmy(Sn9})5gDqJ6JG&nMq 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 literal 0 HcmV?d00001 diff --git a/tests/fixtures/sbml/v1_example_enzml.json b/tests/fixtures/sbml/v1_example_enzml.json new file mode 100644 index 00000000..58f51ec0 --- /dev/null +++ b/tests/fixtures/sbml/v1_example_enzml.json @@ -0,0 +1,7061 @@ +{ + "name": "EnzymeML_Lagerman", + "references": [], + "created": null, + "modified": null, + "creators": [], + "vessels": [ + { + "id": "v0", + "name": "Falcon Tube", + "volume": 5.0, + "unit": { + "id": "u0", + "name": "ml", + "base_units": [ + { + "kind": "litre", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/1dc4d70c-b72b-4f9b-9b23-6c034e300b76", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/dcc02304-4131-4e6c-bca5-d377846b19c0", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "constant": true, + "ld_id": "enzml:Vessel/266359b2-760e-425d-b57b-04581a8f00e2", + "ld_type": [ + "enzml:Vessel", + "OBO:OBI_0400081" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "volume": "OBO:OBI_0002139" + } + } + ], + "proteins": [ + { + "id": "p0", + "name": "E", + "constant": false, + "sequence": "MRRLAACLLATAVAAATSAALAQTSPMTPDITGKPFVAGDAANDYVKREVMIPMRDGVKLHTVIVLPKGARNAPIVLTRTPYDASGRTERLASPHMKDLLSAGDDVFVEGGYIRVFQDVRGKYGSEGDYVMTRPLRGPLNPSEVDHATDAWDTIDWLVKNVKESNGKVGMIGSSYEGFTVVMALTNPHPALKVAAPESPMIDGWMGDDWFNYGAFRQVNFDYFTGQLSKRGKGAGIPRQGHDDYSNFLQAGSAGDFAKAAGLEQLPWWHKLTEHAAYDSFWQEQALDKVMARTPLKVPTMWLQGLWDQEDMWGAIHSYAAMEPRDKSNKLNYLVMGPWRHSQVNSDASSLGALNFDGDTARQFRRDVLRPFFDQYLVDGAPKAATPPVFIYNTGENHWDRLQAWPRSCDKGCAAKSKPLYLQAGGKLSFQAPTAAQPAFEEYVSDPAKPVPFVPRPVDFGDRSMWTTWLVHDQRFVDGRPDVLTFVTEPLTAPLQIAGAPDVHLQASTSGSDSDWVVKLIDVYPDEMAADPKMGGYELPVSMAIFRGRYRESFSTPAPLAANQPLAFQFGLPTANHTFQPGHRVMVQVQSSLFPLYDRNPQTYVPNVFFAKPGDYQKATQRVYVAPGQGSYISLPVR", + "vessel_id": "v0", + "ecnumber": "3.1.1.43", + "organism": "Xanthomonas campestris pv. campestris", + "organism_tax_id": null, + "references": [], + "ld_id": "enzml:Protein/0c8f6457-d592-432a-9198-d3f62b78abf9", + "ld_type": [ + "enzml:Protein", + "schema:Protein" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@type": "@id" + }, + "name": "schema:name", + "sequence": "OBO:GSSO_007262", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "organism": "OBO:OBI_0100026", + "organism_tax_id": { + "@type": "@id" + }, + "references": { + "@id": "schema:citation", + "@type": "@id" + } + } + }, + { + "id": "p1", + "name": "EA", + "constant": false, + "sequence": "MRRLAACLLATAVAAATSAALAQTSPMTPDITGKPFVAGDAANDYVKREVMIPMRDGVKLHTVIVLPKGARNAPIVLTRTPYDASGRTERLASPHMKDLLSAGDDVFVEGGYIRVFQDVRGKYGSEGDYVMTRPLRGPLNPSEVDHATDAWDTIDWLVKNVKESNGKVGMIGSSYEGFTVVMALTNPHPALKVAAPESPMIDGWMGDDWFNYGAFRQVNFDYFTGQLSKRGKGAGIPRQGHDDYSNFLQAGSAGDFAKAAGLEQLPWWHKLTEHAAYDSFWQEQALDKVMARTPLKVPTMWLQGLWDQEDMWGAIHSYAAMEPRDKSNKLNYLVMGPWRHSQVNSDASSLGALNFDGDTARQFRRDVLRPFFDQYLVDGAPKAATPPVFIYNTGENHWDRLQAWPRSCDKGCAAKSKPLYLQAGGKLSFQAPTAAQPAFEEYVSDPAKPVPFVPRPVDFGDRSMWTTWLVHDQRFVDGRPDVLTFVTEPLTAPLQIAGAPDVHLQASTSGSDSDWVVKLIDVYPDEMAADPKMGGYELPVSMAIFRGRYRESFSTPAPLAANQPLAFQFGLPTANHTFQPGHRVMVQVQSSLFPLYDRNPQTYVPNVFFAKPGDYQKATQRVYVAPGQGSYISLPVR", + "vessel_id": "v0", + "ecnumber": "3.1.1.43", + "organism": "Xanthomonas campestris pv. campestris", + "organism_tax_id": null, + "references": [], + "ld_id": "enzml:Protein/f4e0ac2d-4d76-4e06-b565-ecad5184ebb3", + "ld_type": [ + "enzml:Protein", + "schema:Protein" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@type": "@id" + }, + "name": "schema:name", + "sequence": "OBO:GSSO_007262", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "organism": "OBO:OBI_0100026", + "organism_tax_id": { + "@type": "@id" + }, + "references": { + "@id": "schema:citation", + "@type": "@id" + } + } + }, + { + "id": "p2", + "name": "ED", + "constant": false, + "sequence": "MRRLAACLLATAVAAATSAALAQTSPMTPDITGKPFVAGDAANDYVKREVMIPMRDGVKLHTVIVLPKGARNAPIVLTRTPYDASGRTERLASPHMKDLLSAGDDVFVEGGYIRVFQDVRGKYGSEGDYVMTRPLRGPLNPSEVDHATDAWDTIDWLVKNVKESNGKVGMIGSSYEGFTVVMALTNPHPALKVAAPESPMIDGWMGDDWFNYGAFRQVNFDYFTGQLSKRGKGAGIPRQGHDDYSNFLQAGSAGDFAKAAGLEQLPWWHKLTEHAAYDSFWQEQALDKVMARTPLKVPTMWLQGLWDQEDMWGAIHSYAAMEPRDKSNKLNYLVMGPWRHSQVNSDASSLGALNFDGDTARQFRRDVLRPFFDQYLVDGAPKAATPPVFIYNTGENHWDRLQAWPRSCDKGCAAKSKPLYLQAGGKLSFQAPTAAQPAFEEYVSDPAKPVPFVPRPVDFGDRSMWTTWLVHDQRFVDGRPDVLTFVTEPLTAPLQIAGAPDVHLQASTSGSDSDWVVKLIDVYPDEMAADPKMGGYELPVSMAIFRGRYRESFSTPAPLAANQPLAFQFGLPTANHTFQPGHRVMVQVQSSLFPLYDRNPQTYVPNVFFAKPGDYQKATQRVYVAPGQGSYISLPVR", + "vessel_id": "v0", + "ecnumber": "3.1.1.43", + "organism": "Xanthomonas campestris pv. campestris", + "organism_tax_id": null, + "references": [], + "ld_id": "enzml:Protein/9ea218b0-3a74-4c4a-8780-44e8f983a652", + "ld_type": [ + "enzml:Protein", + "schema:Protein" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@type": "@id" + }, + "name": "schema:name", + "sequence": "OBO:GSSO_007262", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "organism": "OBO:OBI_0100026", + "organism_tax_id": { + "@type": "@id" + }, + "references": { + "@id": "schema:citation", + "@type": "@id" + } + } + } + ], + "complexes": [ + { + "id": "c0", + "name": "E·PGME", + "constant": false, + "participants": [ + "p0", + "s0" + ], + "ld_id": "enzml:Complex/04dc9a6c-447e-4ca2-9750-571b61887db1", + "ld_type": [ + "enzml:Complex" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "participants": { + "@type": "@id" + } + } + }, + { + "id": "c1", + "name": "E·7-ADCA", + "constant": false, + "participants": [ + "p0", + "s1" + ], + "ld_id": "enzml:Complex/ec23025d-01c8-4772-8903-4caa3a127b37", + "ld_type": [ + "enzml:Complex" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "participants": { + "@type": "@id" + } + } + }, + { + "id": "c2", + "name": "E·PG", + "constant": false, + "participants": [ + "p0", + "s3" + ], + "ld_id": "enzml:Complex/c1b6711c-3850-48cc-a0d0-35c05f331f76", + "ld_type": [ + "enzml:Complex" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "participants": { + "@type": "@id" + } + } + }, + { + "id": "c3", + "name": "E·PGME·PGME", + "constant": false, + "participants": [ + "p0", + "s0", + "s0" + ], + "ld_id": "enzml:Complex/012f50d8-71cb-413b-ac3a-4edcc42f79bb", + "ld_type": [ + "enzml:Complex" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "participants": { + "@type": "@id" + } + } + }, + { + "id": "c4", + "name": "EA·7-ADCA", + "constant": false, + "participants": [ + "p1", + "s1" + ], + "ld_id": "enzml:Complex/e6da379c-e1f4-4df3-8696-0cadab750c3b", + "ld_type": [ + "enzml:Complex" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "participants": { + "@type": "@id" + } + } + }, + { + "id": "c5", + "name": "EA·PGME", + "constant": false, + "participants": [ + "p1", + "s0" + ], + "ld_id": "enzml:Complex/88430636-3e99-471c-8af2-11bf030d7439", + "ld_type": [ + "enzml:Complex" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "participants": { + "@type": "@id" + } + } + }, + { + "id": "c6", + "name": "E·CEX", + "constant": false, + "participants": [ + "p0", + "s2" + ], + "ld_id": "enzml:Complex/be53e866-6ac7-4e8b-a577-d9971ea6284c", + "ld_type": [ + "enzml:Complex" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "participants": { + "@type": "@id" + } + } + } + ], + "small_molecules": [ + { + "id": "s0", + "name": "PGME", + "constant": false, + "vessel_id": "v0", + "canonical_smiles": null, + "inchi": null, + "inchikey": null, + "references": [], + "ld_id": "enzml:SmallMolecule/da10c14f-f0f7-4bdc-830c-159a136eab59", + "ld_type": [ + "enzml:SmallMolecule" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "references": { + "@id": "schema:citation", + "@type": "@id" + } + } + }, + { + "id": "s1", + "name": "7-ADCA", + "constant": false, + "vessel_id": "v0", + "canonical_smiles": null, + "inchi": null, + "inchikey": null, + "references": [], + "ld_id": "enzml:SmallMolecule/39027e8d-aaa2-4696-b61b-efa6d21b29cb", + "ld_type": [ + "enzml:SmallMolecule" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "references": { + "@id": "schema:citation", + "@type": "@id" + } + } + }, + { + "id": "s2", + "name": "CEX", + "constant": false, + "vessel_id": "v0", + "canonical_smiles": null, + "inchi": null, + "inchikey": null, + "references": [], + "ld_id": "enzml:SmallMolecule/2171bf8e-38b0-4703-90b2-d65b16e6c5cb", + "ld_type": [ + "enzml:SmallMolecule" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "references": { + "@id": "schema:citation", + "@type": "@id" + } + } + }, + { + "id": "s3", + "name": "PG", + "constant": false, + "vessel_id": "v0", + "canonical_smiles": null, + "inchi": null, + "inchikey": null, + "references": [], + "ld_id": "enzml:SmallMolecule/6a1c5ef7-0e4b-49ce-a9cf-6c4d98cd62c2", + "ld_type": [ + "enzml:SmallMolecule" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "references": { + "@id": "schema:citation", + "@type": "@id" + } + } + } + ], + "reactions": [ + { + "id": "r0", + "name": "reaction-1", + "reversible": false, + "kinetic_law": { + "equation": "v_r * (K_n * c1 - p0 * s1)", + "equation_type": "rateLaw", + "species_id": null, + "variables": [ + { + "id": "s1", + "name": "s1", + "symbol": "s1", + "ld_id": "enzml:Variable/739854e3-9f43-4da9-a5e8-a5abe69e041d", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": "schema:identifier" + } + }, + { + "id": "p0", + "name": "p0", + "symbol": "p0", + "ld_id": "enzml:Variable/eb1236c7-2a4e-402b-9326-5962c94bd918", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": "schema:identifier" + } + }, + { + "id": "c1", + "name": "c1", + "symbol": "c1", + "ld_id": "enzml:Variable/858a59d8-e3bc-470b-afb2-b6a1fe2c9471", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": "schema:identifier" + } + } + ], + "ld_id": "enzml:Equation/0bb0b6c6-f36e-411f-bcf2-e1028f142e18", + "ld_type": [ + "enzml:Equation" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + "species": [ + { + "species_id": "c1", + "stoichiometry": -1.0, + "ld_id": "enzml:ReactionElement/dfb2ccaf-1bfb-4afa-be7a-0bd0b373dc92", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "p0", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/31d53986-5823-42b3-8809-3f3533c42209", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s1", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/39eee1ea-216d-4e81-adeb-bd073bfe04e6", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + } + ], + "modifiers": [], + "ld_id": "enzml:Reaction/ad7703fd-d470-41c0-b1e6-6ec02cd09173", + "ld_type": [ + "enzml:Reaction" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "modifiers": { + "@type": "@id" + } + } + }, + { + "id": "r1", + "name": "reaction-2", + "reversible": false, + "kinetic_law": { + "equation": "v_r * (K_s * c0 - p0 * s0)", + "equation_type": "rateLaw", + "species_id": null, + "variables": [ + { + "id": "s0", + "name": "s0", + "symbol": "s0", + "ld_id": "enzml:Variable/587eb821-1540-4d2c-9ae3-c2367f4ea763", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": "schema:identifier" + } + }, + { + "id": "p0", + "name": "p0", + "symbol": "p0", + "ld_id": "enzml:Variable/fd9c9847-72fe-4ddf-90e3-780a3d09828e", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": "schema:identifier" + } + }, + { + "id": "c0", + "name": "c0", + "symbol": "c0", + "ld_id": "enzml:Variable/ed0c575e-27fb-412a-b760-7d7fb4880eae", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": "schema:identifier" + } + } + ], + "ld_id": "enzml:Equation/ab92e387-ea2c-4253-a6d9-85b34812d0c6", + "ld_type": [ + "enzml:Equation" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + "species": [ + { + "species_id": "c0", + "stoichiometry": -1.0, + "ld_id": "enzml:ReactionElement/1a3814b3-d75f-4968-ba3e-52ed353ddaec", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "p0", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/082bf7c5-5e12-4269-8ec4-7aaabcefc521", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s0", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/692e114d-1b20-49cb-a31c-1ef4e6372eff", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + } + ], + "modifiers": [], + "ld_id": "enzml:Reaction/37bbd6ed-7155-45f5-926d-b7a05aef90b3", + "ld_type": [ + "enzml:Reaction" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "modifiers": { + "@type": "@id" + } + } + }, + { + "id": "r2", + "name": "reaction-3", + "reversible": false, + "kinetic_law": { + "equation": "k_2 * c0", + "equation_type": "rateLaw", + "species_id": null, + "variables": [ + { + "id": "c0", + "name": "c0", + "symbol": "c0", + "ld_id": "enzml:Variable/10944940-0e0f-403a-945f-6bb30559a814", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": "schema:identifier" + } + } + ], + "ld_id": "enzml:Equation/581555de-e7d7-44b0-bff7-b70daa80b332", + "ld_type": [ + "enzml:Equation" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + "species": [ + { + "species_id": "c0", + "stoichiometry": -1.0, + "ld_id": "enzml:ReactionElement/a09375f5-eed6-4d0e-8f8c-c267d2c03215", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "p1", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/1f59badb-fe24-4dcc-918c-a8eee5e0b4b6", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + } + ], + "modifiers": [], + "ld_id": "enzml:Reaction/69e17d53-c2cd-45c6-b130-dc57129d91cb", + "ld_type": [ + "enzml:Reaction" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "modifiers": { + "@type": "@id" + } + } + }, + { + "id": "r3", + "name": "reaction-4", + "reversible": false, + "kinetic_law": { + "equation": "v_r * (K_si * c3 - c0 * s0)", + "equation_type": "rateLaw", + "species_id": null, + "variables": [ + { + "id": "s0", + "name": "s0", + "symbol": "s0", + "ld_id": "enzml:Variable/0fa9e816-49cb-4eb9-bfc5-07da81097332", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": "schema:identifier" + } + }, + { + "id": "c0", + "name": "c0", + "symbol": "c0", + "ld_id": "enzml:Variable/84314cc0-78ff-4212-992c-e4db6dddc998", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": "schema:identifier" + } + }, + { + "id": "c3", + "name": "c3", + "symbol": "c3", + "ld_id": "enzml:Variable/d5abbf0a-a681-4689-89cb-b68368d869f8", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": "schema:identifier" + } + } + ], + "ld_id": "enzml:Equation/6ae4ba9f-38d9-4272-bdb3-5cfe0862ad9c", + "ld_type": [ + "enzml:Equation" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + "species": [ + { + "species_id": "c3", + "stoichiometry": -1.0, + "ld_id": "enzml:ReactionElement/b6bddf0b-f321-4b35-a761-b8fec864c048", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "c0", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/8b9ddc6d-d565-4841-90e7-7542bb53ed42", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s0", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/dfe74eb2-04ef-4294-ace3-d7213384600b", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + } + ], + "modifiers": [], + "ld_id": "enzml:Reaction/5e987412-a689-4c9e-8b6b-60af17a23812", + "ld_type": [ + "enzml:Reaction" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "modifiers": { + "@type": "@id" + } + } + }, + { + "id": "r4", + "name": "reaction-5", + "reversible": false, + "kinetic_law": { + "equation": "v_r * (K_si * c5 - p1 * s0)", + "equation_type": "rateLaw", + "species_id": null, + "variables": [ + { + "id": "s0", + "name": "s0", + "symbol": "s0", + "ld_id": "enzml:Variable/e042e7c7-cb4f-431e-a14a-6f85ac960ee5", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": "schema:identifier" + } + }, + { + "id": "p1", + "name": "p1", + "symbol": "p1", + "ld_id": "enzml:Variable/9023171c-8a33-41c6-a6bd-25547c314eea", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": "schema:identifier" + } + }, + { + "id": "c5", + "name": "c5", + "symbol": "c5", + "ld_id": "enzml:Variable/4d57d5b4-abe1-47a2-9c31-5af6d6bcfd95", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": "schema:identifier" + } + } + ], + "ld_id": "enzml:Equation/3a45c7c9-4f9a-4a5b-98d2-a51a95fd1a06", + "ld_type": [ + "enzml:Equation" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + "species": [ + { + "species_id": "c5", + "stoichiometry": -1.0, + "ld_id": "enzml:ReactionElement/c07692cc-4cb3-48cc-8489-21913669ad82", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "p1", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/b98e8799-3f18-4cb3-93a7-8cc4101334ee", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s0", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/fffcbb7c-6aab-4b3c-92d3-46f691193aee", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + } + ], + "modifiers": [], + "ld_id": "enzml:Reaction/f8ab8dcd-2181-462f-9041-178c7a4d7595", + "ld_type": [ + "enzml:Reaction" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "modifiers": { + "@type": "@id" + } + } + }, + { + "id": "r5", + "name": "reaction-6", + "reversible": false, + "kinetic_law": { + "equation": "k_6 * c5", + "equation_type": "rateLaw", + "species_id": null, + "variables": [ + { + "id": "c5", + "name": "c5", + "symbol": "c5", + "ld_id": "enzml:Variable/876c0dc2-78cd-47a7-ae25-5a932fad5d4b", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": "schema:identifier" + } + } + ], + "ld_id": "enzml:Equation/818a14f2-dec4-4553-a436-c5631b32621e", + "ld_type": [ + "enzml:Equation" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + "species": [ + { + "species_id": "c5", + "stoichiometry": -1.0, + "ld_id": "enzml:ReactionElement/ba109129-99fc-4593-a1e1-6c3d92bc7af8", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "p0", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/16755967-7f44-40f1-a196-3a207e5ac8f6", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s3", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/9c11fb57-4937-428d-b0b9-72f2e5269ad0", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + } + ], + "modifiers": [], + "ld_id": "enzml:Reaction/081e432a-2f0a-41dc-aa2f-23d233b433a1", + "ld_type": [ + "enzml:Reaction" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "modifiers": { + "@type": "@id" + } + } + }, + { + "id": "r6", + "name": "reaction-7", + "reversible": false, + "kinetic_law": { + "equation": "k_3 * p1", + "equation_type": "rateLaw", + "species_id": null, + "variables": [ + { + "id": "p1", + "name": "p1", + "symbol": "p1", + "ld_id": "enzml:Variable/04730435-555c-4f24-9999-9e2b36998f04", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": "schema:identifier" + } + } + ], + "ld_id": "enzml:Equation/3f23e40e-a947-4a4b-b8d1-02c190151160", + "ld_type": [ + "enzml:Equation" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + "species": [ + { + "species_id": "p1", + "stoichiometry": -1.0, + "ld_id": "enzml:ReactionElement/7bb7bcdc-a911-452b-95b1-ef43f28f3993", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "p0", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/fa525dc5-6ff0-488f-90cd-0ef71023af74", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s3", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/9bc34f27-56b6-4cff-ad34-0ce70d1eccb8", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + } + ], + "modifiers": [], + "ld_id": "enzml:Reaction/602ceba1-4e27-46f2-9802-8b4b9319f260", + "ld_type": [ + "enzml:Reaction" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "modifiers": { + "@type": "@id" + } + } + }, + { + "id": "r7", + "name": "reaction-8", + "reversible": false, + "kinetic_law": { + "equation": "v_r * (K_pg * c2 - p0 * s3)", + "equation_type": "rateLaw", + "species_id": null, + "variables": [ + { + "id": "s3", + "name": "s3", + "symbol": "s3", + "ld_id": "enzml:Variable/44e37914-169e-4200-8926-632e88ffd247", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": "schema:identifier" + } + }, + { + "id": "p0", + "name": "p0", + "symbol": "p0", + "ld_id": "enzml:Variable/f7b58e64-8d46-4942-ab23-ab3f4305faa7", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": "schema:identifier" + } + }, + { + "id": "c2", + "name": "c2", + "symbol": "c2", + "ld_id": "enzml:Variable/f97b7788-9c93-476a-8eb5-9ec40c272719", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": "schema:identifier" + } + } + ], + "ld_id": "enzml:Equation/fa541202-09fb-4d17-a6b8-0f8b2bede914", + "ld_type": [ + "enzml:Equation" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + "species": [ + { + "species_id": "c2", + "stoichiometry": -1.0, + "ld_id": "enzml:ReactionElement/2c693223-bebb-40af-a4a9-eab4773e4f1e", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "p0", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/f1f8512c-51df-4aec-8fb6-aedc4045a36c", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s3", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/26c8ee81-5611-46bb-8799-cb43945e3292", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + } + ], + "modifiers": [], + "ld_id": "enzml:Reaction/fd6c3dcb-8c61-495a-83d4-e7150639a0c6", + "ld_type": [ + "enzml:Reaction" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "modifiers": { + "@type": "@id" + } + } + }, + { + "id": "r8", + "name": "reaction-9", + "reversible": false, + "kinetic_law": { + "equation": "v_r * (K_n * c4 - p1 * s1)", + "equation_type": "rateLaw", + "species_id": null, + "variables": [ + { + "id": "s1", + "name": "s1", + "symbol": "s1", + "ld_id": "enzml:Variable/2202f03a-ee75-498c-982d-c5bcc1da8cff", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": "schema:identifier" + } + }, + { + "id": "p1", + "name": "p1", + "symbol": "p1", + "ld_id": "enzml:Variable/1b9c358d-954e-43df-b2a8-80e0cd550c58", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": "schema:identifier" + } + }, + { + "id": "c4", + "name": "c4", + "symbol": "c4", + "ld_id": "enzml:Variable/e27f20ee-409b-4693-bb8b-ea01a6c7af38", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": "schema:identifier" + } + } + ], + "ld_id": "enzml:Equation/eda8119b-d63b-41cb-b15f-e2dc30bf42fc", + "ld_type": [ + "enzml:Equation" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + "species": [ + { + "species_id": "c4", + "stoichiometry": -1.0, + "ld_id": "enzml:ReactionElement/8108956a-09e9-4a8f-a4f9-9c998e91b41b", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "p1", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/c33b4482-44fb-4c3d-9a48-b5991ae8a84d", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s1", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/8ea9e0a9-40a3-4bfb-aa50-7a68b14b9f12", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + } + ], + "modifiers": [], + "ld_id": "enzml:Reaction/7cf61023-4805-49d4-b638-c8d0c3c68906", + "ld_type": [ + "enzml:Reaction" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "modifiers": { + "@type": "@id" + } + } + }, + { + "id": "r9", + "name": "reaction-10", + "reversible": false, + "kinetic_law": { + "equation": "k_5 * c4", + "equation_type": "rateLaw", + "species_id": null, + "variables": [ + { + "id": "c4", + "name": "c4", + "symbol": "c4", + "ld_id": "enzml:Variable/5f485dc8-80a6-4686-8410-f87feaf42cdd", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": "schema:identifier" + } + } + ], + "ld_id": "enzml:Equation/aa63b319-cacd-4672-83f6-aa88dfb65cc9", + "ld_type": [ + "enzml:Equation" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + "species": [ + { + "species_id": "c4", + "stoichiometry": -1.0, + "ld_id": "enzml:ReactionElement/6aaac849-3a44-4de9-9abf-0ba43e55a341", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "p0", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/0306a459-db92-444e-ab20-91bab2330d87", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s3", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/3ae8e061-16f5-4a6b-a1f3-7a5b3097dd02", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s1", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/606d0318-559d-4eac-a58d-aa83047fd003", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + } + ], + "modifiers": [], + "ld_id": "enzml:Reaction/b303087f-9836-49ca-a639-e998bd104bca", + "ld_type": [ + "enzml:Reaction" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "modifiers": { + "@type": "@id" + } + } + }, + { + "id": "r10", + "name": "reaction-11", + "reversible": false, + "kinetic_law": { + "equation": "k_4 * c4 - k_4b * c6", + "equation_type": "rateLaw", + "species_id": null, + "variables": [ + { + "id": "c4", + "name": "c4", + "symbol": "c4", + "ld_id": "enzml:Variable/913b6251-0542-43ea-95cb-c9acd3ae7945", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": "schema:identifier" + } + }, + { + "id": "c6", + "name": "c6", + "symbol": "c6", + "ld_id": "enzml:Variable/27ac35a3-67bc-4f22-a3b1-455fce39990a", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": "schema:identifier" + } + } + ], + "ld_id": "enzml:Equation/1273bdb2-9ae8-43b2-9cd0-fc09911b7531", + "ld_type": [ + "enzml:Equation" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + "species": [ + { + "species_id": "c4", + "stoichiometry": -1.0, + "ld_id": "enzml:ReactionElement/d36e29f8-73d3-457c-b74f-e958b65bac91", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "c6", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/3685b3dd-7d08-4afb-b4da-f8ce9d9586e5", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + } + ], + "modifiers": [], + "ld_id": "enzml:Reaction/7d0a1b58-d335-4e89-bb13-ffe767a744b2", + "ld_type": [ + "enzml:Reaction" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "modifiers": { + "@type": "@id" + } + } + }, + { + "id": "r11", + "name": "reaction-12", + "reversible": false, + "kinetic_law": { + "equation": "v_r * (K_p * c6 - p0 * s2)", + "equation_type": "rateLaw", + "species_id": null, + "variables": [ + { + "id": "s2", + "name": "s2", + "symbol": "s2", + "ld_id": "enzml:Variable/6397908f-d77e-4ca9-8e27-2e226c80f7e6", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": "schema:identifier" + } + }, + { + "id": "p0", + "name": "p0", + "symbol": "p0", + "ld_id": "enzml:Variable/e7cfc02e-b610-4ccb-89ee-daacabed739c", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": "schema:identifier" + } + }, + { + "id": "c6", + "name": "c6", + "symbol": "c6", + "ld_id": "enzml:Variable/cc5537e8-d4f1-432e-aea1-220d7e328583", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": "schema:identifier" + } + } + ], + "ld_id": "enzml:Equation/5e2d619b-3bac-4438-8858-248073d0f22a", + "ld_type": [ + "enzml:Equation" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + "species": [ + { + "species_id": "c6", + "stoichiometry": -1.0, + "ld_id": "enzml:ReactionElement/8135c188-7e32-45bb-bf50-591af5ce5ef3", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "p0", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/132367c9-242f-4211-9ce7-231e1e92ca3d", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s2", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/9e815893-abfd-441a-aeef-fcb3f5a18c60", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + } + ], + "modifiers": [], + "ld_id": "enzml:Reaction/eb2da850-710c-4791-b913-b98551c03cf5", + "ld_type": [ + "enzml:Reaction" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "modifiers": { + "@type": "@id" + } + } + }, + { + "id": "r12", + "name": "Enzyme deactivation", + "reversible": false, + "kinetic_law": { + "equation": "k_d * p0", + "equation_type": "rateLaw", + "species_id": null, + "variables": [ + { + "id": "p0", + "name": "p0", + "symbol": "p0", + "ld_id": "enzml:Variable/3907e514-45bc-414d-ab8f-f8e3ed6aa807", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": "schema:identifier" + } + } + ], + "ld_id": "enzml:Equation/c787eb21-d16e-4a99-94b3-d5dfc5d2e18e", + "ld_type": [ + "enzml:Equation" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + "species": [ + { + "species_id": "p0", + "stoichiometry": -1.0, + "ld_id": "enzml:ReactionElement/323a7387-5a3d-46b3-80b4-df49857846b7", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "p2", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/0d3e8f7f-8905-413e-9828-9b996d53c42f", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + } + ], + "modifiers": [], + "ld_id": "enzml:Reaction/68d342aa-8baa-4b09-af57-7295b9c220b1", + "ld_type": [ + "enzml:Reaction" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "modifiers": { + "@type": "@id" + } + } + } + ], + "measurements": [ + { + "id": "m0", + "name": "Cephalexin synthesis 1", + "species_data": [ + { + "species_id": "p0", + "initial": 0.0002, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [], + "time": [], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/7009a5a0-2a4b-48a9-a2fe-a15c1996ea56", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s0", + "initial": 20.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [ + 20.0, + 16.385, + 12.45, + 9.255, + 5.135, + 0.645, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/e238f7a1-f650-4831-b76f-b598d00befd2", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s1", + "initial": 10.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [ + 10.0, + 8.72, + 7.025, + 5.94, + 5.18, + 5.815, + 7.57, + 8.945, + 9.87, + 10.575 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/73f0b816-f4b8-40a9-be0b-caa5e2b921ed", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s2", + "initial": 0.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [ + 0.0, + 2.66, + 3.885, + 4.815, + 5.755, + 4.9, + 3.24, + 1.915, + 1.075, + 0.575 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/a6b0996b-4e99-4690-ae0b-acf39b8a5db5", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s3", + "initial": 2.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [ + 2.0, + 3.705, + 5.77, + 8.035, + 11.965, + 17.28, + 19.93, + 21.36, + 22.55, + 23.38 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/90aed427-8218-4060-9325-78fb30421400", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null, + "ld_id": "enzml:Measurement/9ebfc686-1d8c-45d2-8b71-2894c1864a31", + "ld_type": [ + "enzml:Measurement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + } + }, + { + "id": "m1", + "name": "Cephalexin synthesis 2", + "species_data": [ + { + "species_id": "p0", + "initial": 0.0002, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [], + "time": [], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/83295774-8ef6-469b-9c27-6d842d8f1dc3", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s0", + "initial": 20.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [ + 20.0, + 16.5, + 12.67, + 9.915, + 5.91, + 1.32, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/152d4556-e4bd-45e5-8a38-76f523919be8", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s1", + "initial": 20.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [ + 20.0, + 18.58, + 16.255, + 14.82, + 13.14, + 12.625, + 14.2, + 15.445, + 17.02, + 18.5 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/290b82f1-24a2-4cf1-b2a1-9bb588bacc91", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s2", + "initial": 0.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [ + 0.0, + 3.205, + 5.09, + 6.385, + 7.855, + 8.225, + 7.17, + 5.63, + 4.1, + 2.0 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/18ff80a2-e47f-42e1-8f52-e7cde6229b52", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s3", + "initial": 1.3, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [ + 1.3, + 2.955, + 4.615, + 6.175, + 8.8, + 13.25, + 16.055, + 17.62, + 19.34, + 20.8 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/17fa4903-a91e-4632-b2f6-ba4177242f6e", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null, + "ld_id": "enzml:Measurement/b50a9826-a122-4049-a0d9-72608f5d7ded", + "ld_type": [ + "enzml:Measurement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + } + }, + { + "id": "m2", + "name": "Cephalexin synthesis 3", + "species_data": [ + { + "species_id": "p0", + "initial": 0.0002, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [], + "time": [], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/56257632-5d0f-42e6-8456-a87960012aec", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s0", + "initial": 20.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [ + 20.0, + 13.005, + 9.505, + 7.21, + 4.0, + 0.91, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/5a92b627-c258-4a51-b80d-b7f61d7f9c61", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s1", + "initial": 40.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [ + 40.0, + 36.555, + 33.87, + 32.49, + 30.405, + 29.985, + 30.675, + 31.905, + 33.045, + 34.525 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/df66132e-b397-4fb3-889c-320832a9fa6a", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s2", + "initial": 0.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [ + 0.0, + 3.59, + 5.57, + 6.85, + 8.24, + 8.945, + 8.18, + 7.255, + 6.39, + 5.69 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/7d7176db-024d-44f5-ac8d-372b1e542190", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s3", + "initial": 5.1, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [ + 5.1, + 6.365, + 7.59, + 8.59, + 10.13, + 12.93, + 14.565, + 15.8, + 16.98, + 18.15 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/bb3ac242-6fc3-4361-8201-6f4eba0c701f", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null, + "ld_id": "enzml:Measurement/c40885bd-e6d2-4a0d-8501-61153b889548", + "ld_type": [ + "enzml:Measurement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + } + }, + { + "id": "m3", + "name": "Cephalexin synthesis 4", + "species_data": [ + { + "species_id": "p0", + "initial": 0.0002, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [], + "time": [], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/80dd2dbc-e8c1-4a85-8c69-2aa08002d3d6", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s0", + "initial": 20.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [ + 20.0, + 15.345, + 11.64, + 8.975, + 5.265, + 1.455, + 0.385, + 0.0, + 0.0, + 0.0 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/0fec1211-63d2-4acd-9045-6aff130b3b21", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s1", + "initial": 60.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [ + 60.0, + 56.8, + 53.58, + 51.6, + 48.265, + 47.6, + 48.185, + 49.0, + 50.76, + 52.505 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/32f593a6-10bb-4a84-bc50-da5bf395abcf", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s2", + "initial": 0.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [ + 0.0, + 3.77, + 6.11, + 7.74, + 9.595, + 11.325, + 11.065, + 10.2, + 9.66, + 9.005 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/de7c2009-3843-4ab0-8c14-ee552bda055e", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s3", + "initial": 1.9, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [ + 1.9, + 2.94, + 3.99, + 4.935, + 6.305, + 8.87, + 10.61, + 12.0, + 13.075, + 14.24 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/4ecae298-da27-4ff0-84d8-e6b9e787a3e7", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null, + "ld_id": "enzml:Measurement/423ff165-ffe4-4b22-8fb2-2530979019e9", + "ld_type": [ + "enzml:Measurement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + } + }, + { + "id": "m4", + "name": "Cephalexin synthesis 5", + "species_data": [ + { + "species_id": "p0", + "initial": 0.0002, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [], + "time": [], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/72a24c01-0d02-4ff9-9681-674af209cbcc", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s0", + "initial": 20.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [ + 20.0, + 15.34, + 12.075, + 9.335, + 5.515, + 1.46, + 0.35, + 0.0, + 0.0, + 0.0 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/1740dfd5-ef69-4224-85a0-c95c9098581f", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s1", + "initial": 42.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [ + 42.0, + 38.405, + 36.06, + 34.06, + 31.46, + 29.595, + 30.615, + 31.83, + 32.985, + 34.08 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/e1877dba-f18c-424e-8c08-865b0bf52fa9", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s2", + "initial": 0.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [ + 0.0, + 3.42, + 5.52, + 6.99, + 8.78, + 9.875, + 9.44, + 8.515, + 7.47, + 6.695 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/4bd64269-b76c-40cf-8821-7cd5eccac941", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s3", + "initial": 1.5, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [ + 1.5, + 2.815, + 4.105, + 5.085, + 6.69, + 9.535, + 11.49, + 13.08, + 14.505, + 15.63 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/4aa004f6-4c76-445d-b062-307a19de3d34", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null, + "ld_id": "enzml:Measurement/55659a52-9b19-44f8-b147-c1a8eefb89cd", + "ld_type": [ + "enzml:Measurement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + } + }, + { + "id": "m5", + "name": "Cephalexin synthesis 6", + "species_data": [ + { + "species_id": "p0", + "initial": 0.0002, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [], + "time": [], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/7f4330d7-f4a0-423d-b356-fd2fc75d05b8", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s0", + "initial": 40.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [ + 40.0, + 34.595, + 31.035, + 27.01, + 21.225, + 10.1, + 5.9, + 3.33, + 1.695, + 0.84 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/f42ad110-bb4a-4b0c-9ad7-317902ae3d5e", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s1", + "initial": 42.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [ + 42.0, + 37.9, + 34.9, + 32.805, + 29.17, + 24.5, + 23.0, + 22.595, + 23.09, + 24.8 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/2892fc0b-1a08-49be-aa90-5b5117db3d4c", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s2", + "initial": 0.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [ + 0.0, + 3.625, + 6.4, + 8.5, + 11.1, + 15.645, + 16.5, + 16.345, + 15.81, + 15.255 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/bee20633-5c19-452a-afc5-88a7cd63171f", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s3", + "initial": 3.3, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [ + 3.3, + 4.75, + 6.13, + 7.52, + 11.1, + 17.315, + 20.5, + 22.605, + 24.925, + 26.5 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/63d39151-22f7-43b0-a41e-b6e68521c660", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null, + "ld_id": "enzml:Measurement/1fbe8205-3b8e-4a12-815d-6a500cf0a0b9", + "ld_type": [ + "enzml:Measurement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + } + }, + { + "id": "m6", + "name": "Cephalexin synthesis 7", + "species_data": [ + { + "species_id": "p0", + "initial": 0.0002, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [], + "time": [], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/008a3aef-87fb-4223-8e15-485f996a5e2a", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s0", + "initial": 76.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [ + 76.0, + 73.36, + 69.3, + 65.6, + 60.2, + 46.9, + 38.03, + 30.4, + 24.655, + 19.7 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/abe795da-2bcf-4169-9b1b-00dce5c89c0b", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s1", + "initial": 40.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [ + 40.0, + 38.51, + 36.175, + 34.09, + 31.025, + 25.965, + 22.94, + 20.805, + 19.445, + 18.36 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/1d135c06-0d7f-4985-9f66-0bb0ed319ea3", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s2", + "initial": 0.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [ + 0.0, + 3.04, + 5.195, + 7.28, + 10.295, + 15.76, + 18.74, + 20.755, + 21.89, + 22.875 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/f0529f66-fd91-408d-ad89-d0bb6269e96b", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s3", + "initial": 5.7, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [ + 5.7, + 7.21, + 8.735, + 10.4, + 13.49, + 20.83, + 26.8, + 32.53, + 36.77, + 41.13 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/75f005dc-f784-408b-a0d3-faac8bd56dd2", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null, + "ld_id": "enzml:Measurement/2b22ecf8-694c-4b8b-a0b8-cfa93985d10a", + "ld_type": [ + "enzml:Measurement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + } + }, + { + "id": "m7", + "name": "Cephalexin synthesis 8", + "species_data": [ + { + "species_id": "p0", + "initial": 0.0002, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [], + "time": [], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/1194146a-2472-4a47-a965-6d6b067159a4", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s0", + "initial": 140.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [ + 140.0, + 138.2, + 136.0, + 134.745, + 132.905, + 130.085, + 128.395, + 126.75, + 125.96, + 124.6 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/6df936ba-e921-4371-99f3-e413440e8cad", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s1", + "initial": 40.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [ + 40.0, + 38.8, + 37.725, + 36.88, + 36.155, + 34.61, + 33.71, + 33.11, + 33.035, + 32.8 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/34b13ea7-1ddf-4cfe-9085-0868afb7cafd", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s2", + "initial": 0.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [ + 0.0, + 1.53, + 2.395, + 3.04, + 3.895, + 4.99, + 5.545, + 5.98, + 6.325, + 6.625 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/2dacfe72-5369-47fe-90c6-0ca5e02a8eaa", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s3", + "initial": 14.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "prepared": null, + "data": [ + 14.0, + 17.9, + 18.85, + 19.735, + 20.84, + 22.595, + 23.62, + 25.0, + 26.025, + 26.93 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f850b08a-70ca-4c1d-9d22-8cb605114900", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/b4539155-9de0-459a-b21e-a6b6a8b5cbc6", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/0721b007-fbc7-479c-8809-e4cee68146ec", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null, + "ld_id": "enzml:Measurement/68d6418c-d141-47bc-874c-7f074314398f", + "ld_type": [ + "enzml:Measurement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + } + } + ], + "equations": [], + "parameters": [ + { + "id": "v_r", + "name": "", + "symbol": "v_r", + "value": null, + "unit": { + "id": "u5", + "name": "l / min mmole", + "base_units": [ + { + "kind": "litre", + "exponent": 1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/3d69db1d-0c29-42d6-8db8-869e82a0872b", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": -1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/65742653-abe1-48cf-bdb8-870e5eb72651", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "second", + "exponent": -1, + "multiplier": 60.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/f7629b8a-811f-4902-81c5-b894cbd747d5", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/696269f4-fe9c-4a0e-ba37-eb178a9929aa", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "initial_value": null, + "upper": null, + "lower": null, + "stderr": null, + "constant": true, + "ld_id": "enzml:Parameter/9d70fdd3-6710-4a37-a78e-528eaeef0227", + "ld_type": [ + "enzml:Parameter" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + { + "id": "K_si", + "name": "", + "symbol": "K_si", + "value": null, + "unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "initial_value": null, + "upper": null, + "lower": null, + "stderr": null, + "constant": false, + "ld_id": "enzml:Parameter/4ce00cc7-df14-4e0e-84f6-255a9f32413a", + "ld_type": [ + "enzml:Parameter" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + { + "id": "K_n", + "name": "", + "symbol": "K_n", + "value": null, + "unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0, + "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0, + "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", + "ld_type": [ + "enzml:BaseUnit" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + } + ], + "ld_id": "enzml:UnitDefinition/69bc380e-93ec-47a8-bb61-cfe6337b43e4", + "ld_type": [ + "enzml:UnitDefinition" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + } + }, + "initial_value": null, + "upper": null, + "lower": null, + "stderr": null, + "constant": false, + "ld_id": "enzml:Parameter/1565e70f-f664-495c-bf37-ea2fab1d08c1", + "ld_type": [ + "enzml:Parameter" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } + ], + "ld_id": "enzml:EnzymeMLDocument/4495780f-dfcb-4842-81d6-94868b704720", + "ld_type": [ + "enzml:EnzymeMLDocument" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "name": "schema:title", + "references": { + "@id": "schema:citation", + "@type": "@id" + }, + "created": "schema:dateCreated", + "modified": "schema:dateModified", + "creators": "schema:creator" + } +} \ No newline at end of file diff --git a/tests/fixtures/sbml/v1_meas.csv b/tests/fixtures/sbml/v1_meas.csv new file mode 100644 index 00000000..e3a821c1 --- /dev/null +++ b/tests/fixtures/sbml/v1_meas.csv @@ -0,0 +1,10 @@ +0.0,20.0,10.0,0.0,2.0 +1.0,16.385,8.72,2.66,3.705 +2.0,12.45,7.025,3.885,5.77 +3.0,9.255,5.94,4.815,8.035 +5.0,5.135,5.18,5.755,11.965 +10.0,0.645,5.815,4.9,17.28 +15.0,0.0,7.57,3.24,19.93 +20.0,0.0,8.945,1.915,21.36 +25.0,0.0,9.87,1.075,22.55 +30.0,0.0,10.575,0.575,23.38 diff --git a/tests/fixtures/tabular/data.csv b/tests/fixtures/tabular/data.csv deleted file mode 100644 index aac51d84..00000000 --- a/tests/fixtures/tabular/data.csv +++ /dev/null @@ -1,23 +0,0 @@ -time;s0;s1;id -0.0;0.0;10.0;m0 -1.0;1.0;9.0;m0 -2.0;2.0;8.0;m0 -3.0;3.0;7.0;m0 -4.0;4.0;6.0;m0 -5.0;5.0;5.0;m0 -6.0;6.0;4.0;m0 -7.0;7.0;3.0;m0 -8.0;8.0;2.0;m0 -9.0;9.0;1.0;m0 -10.0;10.0;0.0;m0 -0.0;0.0;10.0;m1 -1.0;1.0;9.0;m1 -2.0;2.0;8.0;m1 -3.0;3.0;7.0;m1 -4.0;4.0;6.0;m1 -5.0;5.0;5.0;m1 -6.0;6.0;4.0;m1 -7.0;7.0;3.0;m1 -8.0;8.0;2.0;m1 -9.0;9.0;1.0;m1 -10.0;10.0;0.0;m1 diff --git a/tests/fixtures/tabular/data.tsv b/tests/fixtures/tabular/data.tsv new file mode 100644 index 00000000..f99de1f4 --- /dev/null +++ b/tests/fixtures/tabular/data.tsv @@ -0,0 +1,23 @@ +time s0 s1 id +0.0 0.0 10.0 m0 +1.0 1.0 9.0 m0 +2.0 2.0 8.0 m0 +3.0 3.0 7.0 m0 +4.0 4.0 6.0 m0 +5.0 5.0 5.0 m0 +6.0 6.0 4.0 m0 +7.0 7.0 3.0 m0 +8.0 8.0 2.0 m0 +9.0 9.0 1.0 m0 +10.0 10.0 0.0 m0 +0.0 0.0 10.0 m1 +1.0 1.0 9.0 m1 +2.0 2.0 8.0 m1 +3.0 3.0 7.0 m1 +4.0 4.0 6.0 m1 +5.0 5.0 5.0 m1 +6.0 6.0 4.0 m1 +7.0 7.0 3.0 m1 +8.0 8.0 2.0 m1 +9.0 9.0 1.0 m1 +10.0 10.0 0.0 m1 diff --git a/tests/fixtures/tabular/data_invalid.csv b/tests/fixtures/tabular/data_invalid.csv deleted file mode 100644 index 2199d4a3..00000000 --- a/tests/fixtures/tabular/data_invalid.csv +++ /dev/null @@ -1,23 +0,0 @@ -s0;s1;id -0.0;10.0;m0 -1.0;9.0;m0 -2.0;8.0;m0 -3.0;7.0;m0 -4.0;6.0;m0 -5.0;5.0;m0 -6.0;4.0;m0 -7.0;3.0;m0 -8.0;2.0;m0 -9.0;1.0;m0 -10.0;0.0;m0 -0.0;10.0;m1 -1.0;9.0;m1 -2.0;8.0;m1 -3.0;7.0;m1 -4.0;6.0;m1 -5.0;5.0;m1 -6.0;4.0;m1 -7.0;3.0;m1 -8.0;2.0;m1 -9.0;1.0;m1 -10.0;0.0;m1 diff --git a/tests/fixtures/tabular/data_invalid.tsv b/tests/fixtures/tabular/data_invalid.tsv new file mode 100644 index 00000000..395f2a6c --- /dev/null +++ b/tests/fixtures/tabular/data_invalid.tsv @@ -0,0 +1,23 @@ +s0 s1 id +0.0 10.0 m0 +1.0 9.0 m0 +2.0 8.0 m0 +3.0 7.0 m0 +4.0 6.0 m0 +5.0 5.0 m0 +6.0 4.0 m0 +7.0 3.0 m0 +8.0 2.0 m0 +9.0 1.0 m0 +10.0 0.0 m0 +0.0 10.0 m1 +1.0 9.0 m1 +2.0 8.0 m1 +3.0 7.0 m1 +4.0 6.0 m1 +5.0 5.0 m1 +6.0 4.0 m1 +7.0 3.0 m1 +8.0 2.0 m1 +9.0 1.0 m1 +10.0 0.0 m1 diff --git a/tests/fixtures/tabular/data_invalid_chars.csv b/tests/fixtures/tabular/data_invalid_chars.csv deleted file mode 100644 index 2e89614b..00000000 --- a/tests/fixtures/tabular/data_invalid_chars.csv +++ /dev/null @@ -1,23 +0,0 @@ -s0;s1;id -0.0;10.0;m0 -1.0;m1;m0 -2.0;8.0;m0 -3.0;7.0;m0 -m0;6.0;m0 -5.0;5.0;m0 -6.0;4.0;m0 -7.0;3.0;m0 -8.0;2.0;m0 -9.0;1.0;m0 -10.0;0.0;m0 -0.0;10.0;m1 -1.0;9.0;m1 -2.0;8.0;m1 -3.0;7.0;m1 -4.0;6.0;m1 -5.0;5.0;m1 -6.0;4.0;m1 -7.0;3.0;m1 -8.0;2.0;m1 -9.0;1.0;m1 -10.0;0.0;m1 diff --git a/tests/fixtures/tabular/data_invalid_chars.tsv b/tests/fixtures/tabular/data_invalid_chars.tsv new file mode 100644 index 00000000..67c6b37f --- /dev/null +++ b/tests/fixtures/tabular/data_invalid_chars.tsv @@ -0,0 +1,23 @@ +s0 s1 id +0.0 10.0 m0 +1.0 m1 m0 +2.0 8.0 m0 +3.0 7.0 m0 +m0 6.0 m0 +5.0 5.0 m0 +6.0 4.0 m0 +7.0 3.0 m0 +8.0 2.0 m0 +9.0 1.0 m0 +10.0 0.0 m0 +0.0 10.0 m1 +1.0 9.0 m1 +2.0 8.0 m1 +3.0 7.0 m1 +4.0 6.0 m1 +5.0 5.0 m1 +6.0 4.0 m1 +7.0 3.0 m1 +8.0 2.0 m1 +9.0 1.0 m1 +10.0 0.0 m1 diff --git a/tests/integration/test_sbml.py b/tests/integration/test_sbml.py index f6acb232..63d91416 100644 --- a/tests/integration/test_sbml.py +++ b/tests/integration/test_sbml.py @@ -1,7 +1,11 @@ +import tempfile from pathlib import Path +import pyenzyme as pe +import pyenzyme.equations as peq from pyenzyme import EnzymeMLDocument -from pyenzyme.tools import to_dict_wo_json_ld +from pyenzyme.tools import to_dict_wo_json_ld, get_all_parameters +from pyenzyme.units import mM, s, K, ml class TestSBML: @@ -22,9 +26,9 @@ def test_parse_sbml_odes(self): parsed_doc == expected_doc ), "Parsed document does not match expected document" - def test_parse_sbml_reactions(self): + def test_v1_import(self): # Arrange - path = Path("tests/fixtures/sbml/reactions_example.omex") + path = Path("tests/fixtures/sbml/v1_example.omex") # Act enzmldoc = EnzymeMLDocument.from_sbml(path) @@ -32,9 +36,99 @@ def test_parse_sbml_reactions(self): # Assert parsed_doc = to_dict_wo_json_ld(enzmldoc) expected_doc = to_dict_wo_json_ld( - EnzymeMLDocument.read("tests/fixtures/sbml/reaction_example_enzml.json") + EnzymeMLDocument.read("tests/fixtures/sbml/v1_example_enzml.json") ) assert ( parsed_doc == expected_doc ), "Parsed document does not match expected document" + + def test_end_to_end(self): + # Arrange + + doc = pe.EnzymeMLDocument(name="Test") + + ml.id = "u0" + s.id = "u1" + mM.id = "u2" + K.id = "u3" + + # Add Vessels + vessel = doc.add_to_vessels(name="Vessel 1", volume=10.0, unit=ml, id="v0") + + # Add Species + substrate = doc.add_to_small_molecules( + id="s0", + name="Substrate", + vessel_id=vessel.id, + canonical_smiles="CC(=O)O", + inchikey="QTBSBXVTEAMEQO-UHFFFAOYSA-N", + ) + + doc.add_to_small_molecules( + id="s1", + name="Product", + vessel_id=vessel.id, + canonical_smiles="CC(=O)O", + inchikey="QTBSBXVTEAMEQO-UHFFFAOYSA-N", + ) + + # Add Enzyme + enzyme = doc.add_to_proteins( + id="p0", + name="Enzyme", + sequence="MTEY", + vessel_id=vessel.id, + ecnumber="1.1.1.1", + organism="E.coli", + organism_tax_id="12345", + ) + + doc.add_to_complexes( + id="c0", + name="Enzyme-Substrate Complex", + participants=[enzyme.id, substrate.id], + ) + + doc.equations += peq.build_equations( + "s1'(t) = kcat * E_tot * s0(t) / (K_m + s0(t))", + "E_tot = 100", + unit_mapping={"kcat": 1 / s, "K_m": mM, "E_tot": mM}, + enzmldoc=doc, + ) + + doc.measurements += pe.read_excel( + "tests/fixtures/tabular/data.xlsx", + data_unit=mM, + time_unit=s, + ) + + for parameter in get_all_parameters(doc): + parameter.lower = 0.0 + parameter.upper = 100.0 + parameter.stderr = 0.1 + + for meas in doc.measurements: + meas.temperature = 298.15 + meas.temperature_unit = K + meas.ph = 7.0 + + with tempfile.TemporaryDirectory() as dirname: + path = Path(dirname) / "test.omex" + doc.to_sbml(path) + + # Act + enzmldoc = EnzymeMLDocument.from_sbml(path) + + # Assert + parsed_doc = to_dict_wo_json_ld(enzmldoc) + expected_doc = to_dict_wo_json_ld(doc) + + # Remove spaces of equation + for eq in parsed_doc["equations"]: + eq["equation"] = eq["equation"].replace(" * ", "*") + eq["equation"] = eq["equation"].replace(" / ", "/") + + assert ( + parsed_doc == expected_doc + ), "Parsed document does not match expected document" diff --git a/tests/unit/test_omex.py b/tests/unit/test_omex.py new file mode 100644 index 00000000..31bddade --- /dev/null +++ b/tests/unit/test_omex.py @@ -0,0 +1,37 @@ +from pathlib import Path + +import pandas as pd +import pytest + +from pyenzyme.sbml import read_sbml_omex + + +class TestOmex: + def test_valid_omex(self): + # Arrange + path = Path("./tests/fixtures/omex/valid.omex") + + # Arrange + sbml_file, data = read_sbml_omex(path=path) + + # Assert + expected_data = pd.read_csv("./tests/fixtures/tabular/data.tsv", sep="\t") + + assert sbml_file is not None, "SBML file is None" + assert data is not None, "Data is None" + assert len(data) > 0, "Data is empty" + assert isinstance(data, dict), "Data is not a dict" + + assert "./data.tsv" in data, "Key 'something' not found in data" + assert data["./data.tsv"] is not None, "Data is None" + assert data["./data.tsv"].equals( + expected_data + ), "Data is not equal to expected data" + + def test_invalid_omex_no_master(self): + # Arrange + path = Path("./tests/fixtures/omex/invalid_no_master.omex") + + # Act + with pytest.raises(ValueError): + sbml_file, data = read_sbml_omex(path=path) diff --git a/tests/unit/test_sbml_annot_v1.py b/tests/unit/test_sbml_annot_v1.py new file mode 100644 index 00000000..2380b675 --- /dev/null +++ b/tests/unit/test_sbml_annot_v1.py @@ -0,0 +1,154 @@ +import pandas as pd + +from pyenzyme.sbml.versions.v1 import ( + DataAnnot, + ReactantAnnot, + ComplexAnnot, + ProteinAnnot, +) +from pyenzyme.units import M + + +class TestSBMLAnnotV1: + def test_reactant_annotation(self): + # Arrange + xml_string = """ + + SomeInChI + SomeSmiles + 29111 + + """ + + # Act + obj = ReactantAnnot.from_xml(xml_string) + + # Assert + assert obj.inchi == "SomeInChI", "InChI is different" + assert obj.smiles == "SomeSmiles", "SMILES is different" + assert obj.chebi_id == "29111", "Chebi ID is different" + + def test_complex_annotation(self): + # Arrange + xml_string = """ + + s0 + s1 + + """ + + # Act + obj = ComplexAnnot.from_xml(xml_string) + + # Assert + assert len(obj.participants) == 2, "Expected 2 participants" + assert obj.participants[0] == "s0", "Expected participant 's0'" + assert obj.participants[1] == "s1", "Expected participant 's1'" + + def test_protein_annotation(self): + # Arrange + xml_string = """ + + HLV + 3.1.1.43 + B0RS62 + SomeOrganism + 12345 + + """ + + # Act + obj = ProteinAnnot.from_xml(xml_string) + + # Assert + assert obj.uniprotid == "B0RS62", "UniProt ID is different" + assert obj.sequence == "HLV", "Sequence is different" + assert obj.ecnumber == "3.1.1.43", "EC number is different" + assert obj.organism == "SomeOrganism", "Organism is different" + assert obj.organism_tax_id == "12345", "Organism tax ID is different" + + def test_data_annotation(self): + # Arrange + xml_string = """ + + + + + + + + + + + + + + + + + + + + + + + + """ + + data = pd.read_csv( + "./tests/fixtures/sbml/v1_meas.csv", + header=None, + ) + + # Act + obj = DataAnnot.from_xml(xml_string) + measurements = obj.to_measurements( + meas_data={"./data/m0.csv": data}, + units={ + "u1": M, + "u2": M, + "u3": M, + "u4": M, + }, + ) + + # Assert + assert len(obj.formats) == 1, "Expected 1 format" + assert len(obj.measurements) == 1, "Expected 1 measurement" + assert len(obj.files) == 1, "Expected 1 file" + + # Assert transformed data + meas = measurements[0] + expected_species = { + "s0": 20.0, + "s1": 10.0, + "s2": 0.0, + "s3": 2.0, + "p0": 0.0002, + } + + assert meas.id == "m0", "Expected id 'm0'" + assert ( + meas.name == "Cephalexin synthesis 1" + ), "Expected name 'Cephalexin synthesis 1'" + + for species, initial in expected_species.items(): + species_data = meas.filter_species_data(species_id=species) + + assert len(species_data) == 1, f"Expected 1 species data for {species}" + + species_data = species_data[0] + + assert ( + species_data.initial == initial + ), f"Expected initial concentration {initial} for {species}" + + if species == "p0": + assert len(species_data.data) == 0, f"Expected no values for {species}" + else: + assert len(species_data.time) == 10, "Expected 10 time points" + assert len(species_data.data) == 10, f"Expected 10 values for {species}" diff --git a/tests/unit/test_sbml_annot_v2.py b/tests/unit/test_sbml_annot_v2.py new file mode 100644 index 00000000..1d7aebe1 --- /dev/null +++ b/tests/unit/test_sbml_annot_v2.py @@ -0,0 +1,210 @@ +from pyenzyme.sbml.versions.v2 import ( + DataAnnot, + MeasurementAnnot, + ConditionsAnnot, + SpeciesDataAnnot, + TemperatureAnnot, + PHAnnot, + SmallMoleculeAnnot, + ProteinAnnot, + ParameterAnnot, + VariablesAnnot, + VariableAnnot, +) + + +class TestSBMLAnnotsV2: + def test_equation_variables(self): + # Arrange + xml_string = """ + + + + + """ + + # Act + variables = VariablesAnnot.from_xml(xml_string) + + # Assert + expected = VariablesAnnot( + variables=[ + VariableAnnot( + id="s0", + name="s0", + symbol="s0", + ), + VariableAnnot( + id="s1", + name="s1", + symbol="s1", + ), + ], + ) + + assert ( + variables.model_dump() == expected.model_dump() + ), "Variables annotation was not parsed correctly" + + def test_parameter_annot(self): + # Arrange + xml_string = """ + + 0.0 + 100.0 + 0.1 + + """ + + # Act + parameter = ParameterAnnot.from_xml(xml_string) + + # Assert + expected = ParameterAnnot( + lower=0.0, + upper=100.0, + stderr=0.1, + ) + + assert ( + parameter.model_dump() == expected.model_dump() + ), "Parameter annotation was not parsed correctly" + + def test_protein_annot(self): + # Arrange + xml_string = """ + + 1.1.1.1 + E.coli + 12345 + MTEY + + """ + + # Act + protein = ProteinAnnot.from_xml(xml_string) + + # Assert + expected = ProteinAnnot( + ecnumber="1.1.1.1", + organism="E.coli", + organism_tax_id="12345", + sequence="MTEY", + ) + + assert ( + protein.model_dump() == expected.model_dump() + ), "Protein annotation was not parsed correctly" + + def test_small_mol_annot(self): + # Arrange + xml_string = """ + + QTBSBXVTEAMEQO-UHFFFAOYSA-N + CC(=O)O + + """ + + # Act + small_molecule = SmallMoleculeAnnot.from_xml(xml_string) + + # Assert + expected = SmallMoleculeAnnot( + inchikey="QTBSBXVTEAMEQO-UHFFFAOYSA-N", + canonical_smiles="CC(=O)O", + ) + + assert ( + small_molecule.model_dump() == expected.model_dump() + ), "Small molecule annotation was not parsed correctly" + + def test_data_annot(self): + # Arrange + xml_string = """ + + + + + + + + + + + + + + + + + + + """ + + # Act + data = DataAnnot.from_xml(xml_string) + + # Assert + expected = DataAnnot( + file="data.tsv", + measurements=[ + MeasurementAnnot( + id="m0", + name="m0", + time_unit="u1", + conditions=ConditionsAnnot( + ph=PHAnnot( + value=7.0, + ), + temperature=TemperatureAnnot( + value=298.15, + unit="u3", + ), + ), + species_data=[ + SpeciesDataAnnot( + species_id="s0", + unit="u2", + type="CONCENTRATION", + ), + SpeciesDataAnnot( + species_id="s1", + initial=10.0, + unit="u2", + type="CONCENTRATION", + ), + ], + ), + MeasurementAnnot( + id="m1", + name="m1", + time_unit="u1", + conditions=ConditionsAnnot( + ph=PHAnnot( + value=7.0, + ), + temperature=TemperatureAnnot( + value=298.15, + unit="u3", + ), + ), + species_data=[ + SpeciesDataAnnot( + species_id="s0", + unit="u2", + type="CONCENTRATION", + ), + SpeciesDataAnnot( + species_id="s1", + initial=10.0, + unit="u2", + type="CONCENTRATION", + ), + ], + ), + ], + ) + + assert ( + data.model_dump() == expected.model_dump() + ), "Data annotation was not parsed correctly" diff --git a/tests/unit/test_tabular.py b/tests/unit/test_tabular.py index 6a3bced8..1b08bff6 100644 --- a/tests/unit/test_tabular.py +++ b/tests/unit/test_tabular.py @@ -60,10 +60,9 @@ def test_csv_import(self): """Test that a CSV file can be imported to a pandas DataFrame""" # Act meas = pe.read_csv( - "tests/fixtures/tabular/data.csv", + "tests/fixtures/tabular/data.tsv", data_unit=mM, time_unit=s, - sep=";", ) # Assert @@ -130,7 +129,7 @@ def test_invalid_types(self): # Act with pytest.raises(AssertionError): pe.read_csv( - "tests/fixtures/tabular/data_invalid_chars.csv", + "tests/fixtures/tabular/data_invalid_chars.tsv", data_unit=mM, time_unit=s, ) @@ -140,7 +139,7 @@ def test_invalid_csv(self): # Act with pytest.raises(AssertionError): pe.read_csv( - "tests/fixtures/tabular/data_invalid.csv", + "tests/fixtures/tabular/data_invalid.tsv", data_unit=mM, time_unit=s, ) From 19f928186cc98fb3417f1f9cad44e65162739543 Mon Sep 17 00:00:00 2001 From: Jan Range Date: Sat, 7 Sep 2024 19:48:09 +0200 Subject: [PATCH 062/172] add `pydantic-xml` dep --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 681febd7..1245b092 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,7 +13,7 @@ python-libsbml = "^5.20.2" toml = "^0.10.2" rich = "^13.7.1" pandas = ">=2.0,<2.2.2" -pydantic = "^2.7.4" +pydantic-xml = "^2.12.1" loguru = "^0.7.2" rdflib = "7.0.0" sympy = "^1.12.1" From 8e234dd23660400aee68658dd615a6d6c8af0e42 Mon Sep 17 00:00:00 2001 From: Jan Range Date: Sat, 7 Sep 2024 19:48:22 +0200 Subject: [PATCH 063/172] add testing section --- README.md | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 93716b65..fd62835a 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,7 @@ PyEnzyme is the interface to the data model EnzymeML and offers a conveni - **Visualize** experimental results for inspection and publication. ## ⚡️ Quick start + Get started with PyEnzyme by running the following command ``` @@ -25,6 +26,7 @@ python -m pip install pyenzyme ``` Or build by source + ``` git clone https://github.com/EnzymeML/PyEnzyme.git cd PyEnzyme @@ -32,7 +34,10 @@ python3 setup.py install ``` ### ⚙️ Package Options -PyEnzyme comes with many flavors, choose whether you want only the base installation, the modeling package or all of it using the following options. + +PyEnzyme comes with many flavors, choose whether you want only the base installation, the modeling package or all of it +using the following options. + ``` # COPASI - modeling python -m pip install "pyenzyme[copasi]" @@ -55,17 +60,37 @@ python -m pip install "pyenzyme[all]" ## ⚙️ Example code -This example will demonstrate how to create a simple EnzymeML document using PyEnzyme and how to use initializers from official databases **Chebi** and **UniProt** to gather metadata. For more examples, please visit our [documentation](https://pyenzyme.readthedocs.io/en/latest/index.html#) (Work in progress) +This example will demonstrate how to create a simple EnzymeML document using PyEnzyme and how to use initializers from +official databases **Chebi** and **UniProt** to gather metadata. For more examples, please visit +our [documentation](https://pyenzyme.readthedocs.io/en/latest/index.html#) (Work in progress) ```python # To be added for V2 ``` + (Code should run as it is) ## 📖 Documentation and more examples -Explore all the features of **PyEnzyme** in our [documentation](https://pyenzyme.readthedocs.io/en/latest/index.html#) and take part in [Discussions](https://github.com/EnzymeML/PyEnzyme/discussions) and/or [Issues](https://github.com/EnzymeML/PyEnzyme/issues). +Explore all the features of **PyEnzyme** in our [documentation](https://pyenzyme.readthedocs.io/en/latest/index.html#) +and take part in [Discussions](https://github.com/EnzymeML/PyEnzyme/discussions) +and/or [Issues](https://github.com/EnzymeML/PyEnzyme/issues). + +## 🧪 Testing + +In order to run tests there are two different ways. First you can utilize `pytest` directly by running the following: + +```bash +python -m pytest -vv +``` + +Or you can the provided Dockerfile to run the tests in a containerized environment. + +```bash +docker build -t pyenzyme . +``` ## ⚠️ License -`PyEnzyme` is free and open-source software licensed under the [BSD 2-Clause License](https://github.com/EnzymeML/PyEnzyme/blob/main/LICENSE). +`PyEnzyme` is free and open-source software licensed under +the [BSD 2-Clause License](https://github.com/EnzymeML/PyEnzyme/blob/main/LICENSE). From 93713f058138a344071705c8ce5bf10396e60652 Mon Sep 17 00:00:00 2001 From: Jan Range Date: Sat, 7 Sep 2024 19:48:37 +0200 Subject: [PATCH 064/172] add container test --- Dockerfile | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..6c7549c0 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,11 @@ +FROM python:3.11.9-slim-bullseye + +RUN apt-get update +RUN pip install poetry + +WORKDIR /app +COPY . /app + +RUN poetry install --with tests + +ENTRYPOINT ["poetry", "run", "pytest", "-vv"] \ No newline at end of file From 7830cd83fffa39d6f9477e0cbe3e9c0ebf060cca Mon Sep 17 00:00:00 2001 From: Jan Range Date: Sat, 7 Sep 2024 20:19:54 +0200 Subject: [PATCH 065/172] check fragments instead of complete uris --- pyenzyme/sbml/omex.py | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/pyenzyme/sbml/omex.py b/pyenzyme/sbml/omex.py index 72bb9fca..5db9af5d 100644 --- a/pyenzyme/sbml/omex.py +++ b/pyenzyme/sbml/omex.py @@ -20,8 +20,9 @@ class FileURI(enum.Enum): TSV (str): URI for TSV files. """ - CSV = "http://purl.org/NET/mediatypes/text/csv" - TSV = "https://purl.org/NET/mediatypes/text/tab-separated-values" + CSV = "/csv" + TSV_LONG = "/tab-separated-values" + TSV = "/tsv" @classmethod def from_uri(cls, uri: str): @@ -37,13 +38,12 @@ def from_uri(cls, uri: str): Raises: ValueError: If the URI is not supported. """ - match uri: - case cls.CSV.value: - return cls.CSV - case cls.TSV.value: - return cls.TSV - case _: - raise ValueError(f"Unsupported file URI: {uri}") + + for entry in cls: + if entry.value in uri: + return entry + + raise ValueError(f"Unsupported file URI: {uri}") @classmethod def is_supported(cls, uri): @@ -56,7 +56,7 @@ def is_supported(cls, uri): Returns: bool: True if the URI is supported, False otherwise. """ - return uri in [e.value for e in cls] + return any([e.value in uri for e in cls]) def to_dataframe(self, path): """ @@ -78,6 +78,9 @@ def to_dataframe(self, path): case self.TSV: # V2 format has headers return pd.read_csv(path, sep="\t") + case self.TSV_LONG: + # V2 format has headers + return pd.read_csv(path, sep="\t") case _: raise ValueError(f"Unsupported file format: {self}") @@ -143,7 +146,11 @@ def read_sbml_omex(path: Path) -> tuple[TextIO, dict[str, pd.DataFrame]]: omex = Omex.from_omex(path) try: - master_file = next(part for part in omex.manifest.entries if part.master) + master_file = next( + part + for part in omex.manifest.entries + if part.master and "/sbml" in part.format + ) except StopIteration: raise ValueError("No master file found in OMEX archive") From 64cd2103b3d575fd5c225e1492a2b8979657a0b6 Mon Sep 17 00:00:00 2001 From: Jan Range Date: Sat, 7 Sep 2024 20:23:07 +0200 Subject: [PATCH 066/172] if multiplier is `1` set it to `None` --- pyenzyme/sbml/parser.py | 2 + tests/fixtures/sbml/v1_example_enzml.json | 174 +++++++++++----------- 2 files changed, 89 insertions(+), 87 deletions(-) diff --git a/pyenzyme/sbml/parser.py b/pyenzyme/sbml/parser.py index c1a5bc41..b000300e 100644 --- a/pyenzyme/sbml/parser.py +++ b/pyenzyme/sbml/parser.py @@ -140,6 +140,8 @@ def _parse_unit(unit: sbml.UnitDefinition): if math.isnan(multiplier): multiplier = None + elif multiplier == 1.0: + multiplier = None enzml_unit.add_to_base_units( kind=kind, diff --git a/tests/fixtures/sbml/v1_example_enzml.json b/tests/fixtures/sbml/v1_example_enzml.json index 58f51ec0..772e07a7 100644 --- a/tests/fixtures/sbml/v1_example_enzml.json +++ b/tests/fixtures/sbml/v1_example_enzml.json @@ -16,7 +16,7 @@ { "kind": "litre", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/1dc4d70c-b72b-4f9b-9b23-6c034e300b76", "ld_type": [ @@ -2077,7 +2077,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -2092,7 +2092,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -2173,7 +2173,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -2188,7 +2188,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -2291,7 +2291,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -2306,7 +2306,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -2409,7 +2409,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -2424,7 +2424,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -2527,7 +2527,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -2542,7 +2542,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -2671,7 +2671,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -2686,7 +2686,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -2767,7 +2767,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -2782,7 +2782,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -2885,7 +2885,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -2900,7 +2900,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -3003,7 +3003,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -3018,7 +3018,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -3121,7 +3121,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -3136,7 +3136,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -3265,7 +3265,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -3280,7 +3280,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -3361,7 +3361,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -3376,7 +3376,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -3479,7 +3479,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -3494,7 +3494,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -3597,7 +3597,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -3612,7 +3612,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -3715,7 +3715,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -3730,7 +3730,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -3859,7 +3859,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -3874,7 +3874,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -3955,7 +3955,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -3970,7 +3970,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -4073,7 +4073,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -4088,7 +4088,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -4191,7 +4191,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -4206,7 +4206,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -4309,7 +4309,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -4324,7 +4324,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -4453,7 +4453,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -4468,7 +4468,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -4549,7 +4549,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -4564,7 +4564,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -4667,7 +4667,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -4682,7 +4682,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -4785,7 +4785,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -4800,7 +4800,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -4903,7 +4903,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -4918,7 +4918,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -5047,7 +5047,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -5062,7 +5062,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -5143,7 +5143,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -5158,7 +5158,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -5261,7 +5261,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -5276,7 +5276,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -5379,7 +5379,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -5394,7 +5394,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -5497,7 +5497,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -5512,7 +5512,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -5641,7 +5641,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -5656,7 +5656,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -5737,7 +5737,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -5752,7 +5752,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -5855,7 +5855,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -5870,7 +5870,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -5973,7 +5973,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -5988,7 +5988,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -6091,7 +6091,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -6106,7 +6106,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -6235,7 +6235,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -6250,7 +6250,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -6331,7 +6331,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -6346,7 +6346,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -6449,7 +6449,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -6464,7 +6464,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -6567,7 +6567,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -6582,7 +6582,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -6685,7 +6685,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -6700,7 +6700,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -6830,7 +6830,7 @@ { "kind": "litre", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/3d69db1d-0c29-42d6-8db8-869e82a0872b", "ld_type": [ @@ -6845,7 +6845,7 @@ { "kind": "mole", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/65742653-abe1-48cf-bdb8-870e5eb72651", "ld_type": [ @@ -6914,7 +6914,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -6929,7 +6929,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ @@ -6983,7 +6983,7 @@ { "kind": "litre", "exponent": -1, - "multiplier": 1.0, + "multiplier": null, "scale": 1.0, "ld_id": "enzml:BaseUnit/189b3a40-6d06-46db-9aef-55d155524e46", "ld_type": [ @@ -6998,7 +6998,7 @@ { "kind": "mole", "exponent": 1, - "multiplier": 1.0, + "multiplier": null, "scale": -3.0, "ld_id": "enzml:BaseUnit/9e7ff171-3d2e-4496-bb5d-4b6eff88703c", "ld_type": [ From 1e3bee51c8dc99949b7d629e811e69729185507a Mon Sep 17 00:00:00 2001 From: Jan Range Date: Sun, 8 Sep 2024 00:02:38 +0200 Subject: [PATCH 067/172] add run command --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index fd62835a..d3ce498a 100644 --- a/README.md +++ b/README.md @@ -88,6 +88,7 @@ Or you can the provided Dockerfile to run the tests in a containerized environme ```bash docker build -t pyenzyme . +docker run pyenzyme ``` ## ⚠️ License From 2b702a27aa605eb89b18de0a51290da808f1d93e Mon Sep 17 00:00:00 2001 From: Jan Range Date: Sun, 8 Sep 2024 11:49:27 +0200 Subject: [PATCH 068/172] add `vessel_id` to `Complex` - Added to SBML serializer - Added to SBML validation --- pyenzyme/model.py | 652 +++++++++++++++++++++--------------- pyenzyme/sbml/serializer.py | 2 +- pyenzyme/sbml/validation.py | 2 +- 3 files changed, 377 insertions(+), 279 deletions(-) diff --git a/pyenzyme/model.py b/pyenzyme/model.py index 314e63b0..7b056e64 100644 --- a/pyenzyme/model.py +++ b/pyenzyme/model.py @@ -1,18 +1,16 @@ ## This is a generated file. Do not modify it manually! from __future__ import annotations - +from pydantic import BaseModel, Field, ConfigDict +from typing import Optional, Generic, TypeVar from enum import Enum -from typing import Generic, Optional, TypeVar from uuid import uuid4 - -from pydantic import BaseModel, ConfigDict, Field +from datetime import date, datetime # Filter Wrapper definition used to filter a list of objects # based on their attributes Cls = TypeVar("Cls") - class FilterWrapper(Generic[Cls]): """Wrapper class to filter a list of objects based on their attributes""" @@ -49,8 +47,7 @@ def add_namespace(obj, prefix: str | None, iri: str | None): elif iri and prefix is None: raise ValueError("If iri is provided, prefix must also be provided") - obj.ld_context[prefix] = iri # type: ignore - + obj.ld_context[prefix] = iri # type: ignore def validate_prefix(term: str | dict, prefix: str): """Validates that a term is prefixed with a given prefix @@ -68,14 +65,13 @@ def validate_prefix(term: str | dict, prefix: str): elif isinstance(term, str) and not term.startswith(prefix + ":"): raise ValueError(f"Term {term} is not prefixed with {prefix}") - # Model Definitions - class EnzymeMLDocument(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment=True, - ) # type: ignore + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore name: str references: list[str] = Field(default_factory=list) @@ -94,20 +90,20 @@ class EnzymeMLDocument(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:EnzymeMLDocument/" + str(uuid4()), + default_factory=lambda: "enzml:EnzymeMLDocument/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: [ + default_factory = lambda: [ "enzml:EnzymeMLDocument", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "name": "schema:title", "references": { "@id": "schema:citation", @@ -116,7 +112,7 @@ class EnzymeMLDocument(BaseModel): "created": "schema:dateCreated", "modified": "schema:dateModified", "creators": "schema:creator", - }, + } ) def filter_creators(self, **kwargs) -> list[Creator]: @@ -227,12 +223,13 @@ def filter_parameters(self, **kwargs) -> list[Parameter]: return FilterWrapper[Parameter](self.parameters, **kwargs).filter() + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -254,9 +251,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert ( - attr in self.model_fields - ), f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -265,7 +260,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -292,6 +290,7 @@ def add_type_term( add_namespace(self, prefix, iri) self.ld_type.append(term) + def add_to_creators( self, given_name: str, @@ -299,22 +298,29 @@ def add_to_creators( mail: str, **kwargs, ): - params = {"given_name": given_name, "family_name": family_name, "mail": mail} + params = { + "given_name": given_name, + "family_name": family_name, + "mail": mail + } if "id" in kwargs: params["id"] = kwargs["id"] - self.creators.append(Creator(**params)) + self.creators.append( + Creator(**params) + ) return self.creators[-1] + def add_to_vessels( self, id: str, name: str, volume: float, unit: UnitDefinition, - constant: bool = True, + constant: bool= True, **kwargs, ): params = { @@ -322,27 +328,30 @@ def add_to_vessels( "name": name, "volume": volume, "unit": unit, - "constant": constant, + "constant": constant } if "id" in kwargs: params["id"] = kwargs["id"] - self.vessels.append(Vessel(**params)) + self.vessels.append( + Vessel(**params) + ) return self.vessels[-1] + def add_to_proteins( self, id: str, name: str, - constant: bool = False, - sequence: Optional[str] = None, - vessel_id: Optional[str] = None, - ecnumber: Optional[str] = None, - organism: Optional[str] = None, - organism_tax_id: Optional[str] = None, - references: list[str] = [], + constant: bool= False, + sequence: Optional[str]= None, + vessel_id: Optional[str]= None, + ecnumber: Optional[str]= None, + organism: Optional[str]= None, + organism_tax_id: Optional[str]= None, + references: list[str]= [], **kwargs, ): params = { @@ -354,48 +363,56 @@ def add_to_proteins( "ecnumber": ecnumber, "organism": organism, "organism_tax_id": organism_tax_id, - "references": references, + "references": references } if "id" in kwargs: params["id"] = kwargs["id"] - self.proteins.append(Protein(**params)) + self.proteins.append( + Protein(**params) + ) return self.proteins[-1] + def add_to_complexes( self, id: str, name: str, - constant: bool = False, - participants: list[str] = [], + constant: bool= False, + vessel_id: Optional[str]= None, + participants: list[str]= [], **kwargs, ): params = { "id": id, "name": name, "constant": constant, - "participants": participants, + "vessel_id": vessel_id, + "participants": participants } if "id" in kwargs: params["id"] = kwargs["id"] - self.complexes.append(Complex(**params)) + self.complexes.append( + Complex(**params) + ) return self.complexes[-1] + def add_to_small_molecules( self, id: str, name: str, - constant: bool = False, - vessel_id: Optional[str] = None, - canonical_smiles: Optional[str] = None, - inchi: Optional[str] = None, - inchikey: Optional[str] = None, - references: list[str] = [], + constant: bool= False, + vessel_id: Optional[str]= None, + canonical_smiles: Optional[str]= None, + inchi: Optional[str]= None, + inchikey: Optional[str]= None, + references: list[str]= [], **kwargs, ): params = { @@ -406,24 +423,27 @@ def add_to_small_molecules( "canonical_smiles": canonical_smiles, "inchi": inchi, "inchikey": inchikey, - "references": references, + "references": references } if "id" in kwargs: params["id"] = kwargs["id"] - self.small_molecules.append(SmallMolecule(**params)) + self.small_molecules.append( + SmallMolecule(**params) + ) return self.small_molecules[-1] + def add_to_reactions( self, id: str, name: str, - reversible: bool = False, - kinetic_law: Optional[Equation] = None, - species: list[ReactionElement] = [], - modifiers: list[str] = [], + reversible: bool= False, + kinetic_law: Optional[Equation]= None, + species: list[ReactionElement]= [], + modifiers: list[str]= [], **kwargs, ): params = { @@ -432,25 +452,28 @@ def add_to_reactions( "reversible": reversible, "kinetic_law": kinetic_law, "species": species, - "modifiers": modifiers, + "modifiers": modifiers } if "id" in kwargs: params["id"] = kwargs["id"] - self.reactions.append(Reaction(**params)) + self.reactions.append( + Reaction(**params) + ) return self.reactions[-1] + def add_to_measurements( self, id: str, name: str, - species_data: list[MeasurementData] = [], - group_id: Optional[str] = None, - ph: Optional[float] = None, - temperature: Optional[float] = None, - temperature_unit: Optional[UnitDefinition] = None, + species_data: list[MeasurementData]= [], + group_id: Optional[str]= None, + ph: Optional[float]= None, + temperature: Optional[float]= None, + temperature_unit: Optional[UnitDefinition]= None, **kwargs, ): params = { @@ -460,50 +483,56 @@ def add_to_measurements( "group_id": group_id, "ph": ph, "temperature": temperature, - "temperature_unit": temperature_unit, + "temperature_unit": temperature_unit } if "id" in kwargs: params["id"] = kwargs["id"] - self.measurements.append(Measurement(**params)) + self.measurements.append( + Measurement(**params) + ) return self.measurements[-1] + def add_to_equations( self, equation: str, equation_type: EquationType, - species_id: Optional[str] = None, - variables: list[Variable] = [], + species_id: Optional[str]= None, + variables: list[Variable]= [], **kwargs, ): params = { "equation": equation, "equation_type": equation_type, "species_id": species_id, - "variables": variables, + "variables": variables } if "id" in kwargs: params["id"] = kwargs["id"] - self.equations.append(Equation(**params)) + self.equations.append( + Equation(**params) + ) return self.equations[-1] + def add_to_parameters( self, id: str, name: str, symbol: str, - value: Optional[float] = None, - unit: Optional[UnitDefinition] = None, - initial_value: Optional[float] = None, - upper: Optional[float] = None, - lower: Optional[float] = None, - stderr: Optional[float] = None, - constant: Optional[bool] = True, + value: Optional[float]= None, + unit: Optional[UnitDefinition]= None, + initial_value: Optional[float]= None, + upper: Optional[float]= None, + lower: Optional[float]= None, + stderr: Optional[float]= None, + constant: Optional[bool]= True, **kwargs, ): params = { @@ -516,21 +545,23 @@ def add_to_parameters( "upper": upper, "lower": lower, "stderr": stderr, - "constant": constant, + "constant": constant } if "id" in kwargs: params["id"] = kwargs["id"] - self.parameters.append(Parameter(**params)) + self.parameters.append( + Parameter(**params) + ) return self.parameters[-1] - class Creator(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment=True, - ) # type: ignore + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore given_name: str family_name: str @@ -539,30 +570,33 @@ class Creator(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Creator/" + str(uuid4()), + default_factory=lambda: "enzml:Creator/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: ["enzml:Creator", "schema:person"], + default_factory = lambda: [ + "enzml:Creator","schema:person" + ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "given_name": "schema:givenName", "family_name": "schema:familyName", "mail": "schema:email", - }, + } ) + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -584,9 +618,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert ( - attr in self.model_fields - ), f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -595,7 +627,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -624,9 +659,10 @@ def add_type_term( class Vessel(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment=True, - ) # type: ignore + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore id: str name: str @@ -637,33 +673,36 @@ class Vessel(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Vessel/" + str(uuid4()), + default_factory=lambda: "enzml:Vessel/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: ["enzml:Vessel", "OBO:OBI_0400081"], + default_factory = lambda: [ + "enzml:Vessel","OBO:OBI_0400081" + ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id", }, "name": "schema:name", "volume": "OBO:OBI_0002139", - }, + } ) + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -685,9 +724,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert ( - attr in self.model_fields - ), f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -696,7 +733,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -725,9 +765,10 @@ def add_type_term( class Protein(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment=True, - ) # type: ignore + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore id: str name: str @@ -742,18 +783,20 @@ class Protein(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Protein/" + str(uuid4()), + default_factory=lambda: "enzml:Protein/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: ["enzml:Protein", "schema:Protein"], + default_factory = lambda: [ + "enzml:Protein","schema:Protein" + ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@type": "@id", }, @@ -771,15 +814,16 @@ class Protein(BaseModel): "@id": "schema:citation", "@type": "@id", }, - }, + } ) + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -801,9 +845,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert ( - attr in self.model_fields - ), f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -812,7 +854,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -841,49 +886,56 @@ def add_type_term( class Complex(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment=True, - ) # type: ignore + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore id: str name: str constant: bool = False + vessel_id: Optional[str] = Field(default=None) participants: list[str] = Field(default_factory=list) # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Complex/" + str(uuid4()), + default_factory=lambda: "enzml:Complex/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: [ + default_factory = lambda: [ "enzml:Complex", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id", }, "name": "schema:name", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id", + }, "participants": { "@type": "@id", }, - }, + } ) + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -905,9 +957,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert ( - attr in self.model_fields - ), f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -916,7 +966,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -945,9 +998,10 @@ def add_type_term( class SmallMolecule(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment=True, - ) # type: ignore + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore id: str name: str @@ -961,20 +1015,20 @@ class SmallMolecule(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:SmallMolecule/" + str(uuid4()), + default_factory=lambda: "enzml:SmallMolecule/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: [ + default_factory = lambda: [ "enzml:SmallMolecule", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id", @@ -988,15 +1042,16 @@ class SmallMolecule(BaseModel): "@id": "schema:citation", "@type": "@id", }, - }, + } ) + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -1018,9 +1073,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert ( - attr in self.model_fields - ), f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1029,7 +1082,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1058,9 +1114,10 @@ def add_type_term( class Reaction(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment=True, - ) # type: ignore + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore id: str name: str @@ -1072,20 +1129,20 @@ class Reaction(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Reaction/" + str(uuid4()), + default_factory=lambda: "enzml:Reaction/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: [ + default_factory = lambda: [ "enzml:Reaction", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id", @@ -1093,7 +1150,7 @@ class Reaction(BaseModel): "modifiers": { "@type": "@id", }, - }, + } ) def filter_species(self, **kwargs) -> list[ReactionElement]: @@ -1108,12 +1165,13 @@ def filter_species(self, **kwargs) -> list[ReactionElement]: return FilterWrapper[ReactionElement](self.species, **kwargs).filter() + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -1135,9 +1193,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert ( - attr in self.model_fields - ), f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1146,7 +1202,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1173,26 +1232,33 @@ def add_type_term( add_namespace(self, prefix, iri) self.ld_type.append(term) + def add_to_species( self, species_id: str, stoichiometry: float, **kwargs, ): - params = {"species_id": species_id, "stoichiometry": stoichiometry} + params = { + "species_id": species_id, + "stoichiometry": stoichiometry + } if "id" in kwargs: params["id"] = kwargs["id"] - self.species.append(ReactionElement(**params)) + self.species.append( + ReactionElement(**params) + ) return self.species[-1] class ReactionElement(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment=True, - ) # type: ignore + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore species_id: str stoichiometry: float @@ -1200,32 +1266,33 @@ class ReactionElement(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:ReactionElement/" + str(uuid4()), + default_factory=lambda: "enzml:ReactionElement/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: [ + default_factory = lambda: [ "enzml:ReactionElement", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "species_id": { "@type": "@id", }, - }, + } ) + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -1247,9 +1314,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert ( - attr in self.model_fields - ), f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1258,7 +1323,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1287,9 +1355,10 @@ def add_type_term( class Equation(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment=True, - ) # type: ignore + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore equation: str equation_type: EquationType @@ -1299,24 +1368,24 @@ class Equation(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Equation/" + str(uuid4()), + default_factory=lambda: "enzml:Equation/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: [ + default_factory = lambda: [ "enzml:Equation", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "species_id": { "@type": "@id", }, - }, + } ) def filter_variables(self, **kwargs) -> list[Variable]: @@ -1331,12 +1400,13 @@ def filter_variables(self, **kwargs) -> list[Variable]: return FilterWrapper[Variable](self.variables, **kwargs).filter() + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -1358,9 +1428,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert ( - attr in self.model_fields - ), f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1369,7 +1437,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1396,6 +1467,7 @@ def add_type_term( add_namespace(self, prefix, iri) self.ld_type.append(term) + def add_to_variables( self, id: str, @@ -1403,20 +1475,26 @@ def add_to_variables( symbol: str, **kwargs, ): - params = {"id": id, "name": name, "symbol": symbol} + params = { + "id": id, + "name": name, + "symbol": symbol + } if "id" in kwargs: params["id"] = kwargs["id"] - self.variables.append(Variable(**params)) + self.variables.append( + Variable(**params) + ) return self.variables[-1] - class Variable(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment=True, - ) # type: ignore + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore id: str name: str @@ -1425,30 +1503,31 @@ class Variable(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Variable/" + str(uuid4()), + default_factory=lambda: "enzml:Variable/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: [ + default_factory = lambda: [ "enzml:Variable", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": "schema:identifier", - }, + } ) + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -1470,9 +1549,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert ( - attr in self.model_fields - ), f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1481,7 +1558,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1510,9 +1590,10 @@ def add_type_term( class Parameter(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment=True, - ) # type: ignore + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore id: str name: str @@ -1528,33 +1609,34 @@ class Parameter(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Parameter/" + str(uuid4()), + default_factory=lambda: "enzml:Parameter/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: [ + default_factory = lambda: [ "enzml:Parameter", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id", }, - }, + } ) + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -1576,9 +1658,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert ( - attr in self.model_fields - ), f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1587,7 +1667,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1616,9 +1699,10 @@ def add_type_term( class Measurement(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment=True, - ) # type: ignore + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore id: str name: str @@ -1631,20 +1715,20 @@ class Measurement(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Measurement/" + str(uuid4()), + default_factory=lambda: "enzml:Measurement/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: [ + default_factory = lambda: [ "enzml:Measurement", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id", @@ -1652,7 +1736,7 @@ class Measurement(BaseModel): "group_id": { "@type": "@id", }, - }, + } ) def filter_species_data(self, **kwargs) -> list[MeasurementData]: @@ -1667,12 +1751,13 @@ def filter_species_data(self, **kwargs) -> list[MeasurementData]: return FilterWrapper[MeasurementData](self.species_data, **kwargs).filter() + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -1694,9 +1779,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert ( - attr in self.model_fields - ), f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1705,7 +1788,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1732,17 +1818,18 @@ def add_type_term( add_namespace(self, prefix, iri) self.ld_type.append(term) + def add_to_species_data( self, species_id: str, initial: float, data_unit: UnitDefinition, data_type: DataTypes, - prepared: Optional[float] = None, - data: list[float] = [], - time: list[float] = [], - time_unit: Optional[UnitDefinition] = None, - is_simulated: bool = False, + prepared: Optional[float]= None, + data: list[float]= [], + time: list[float]= [], + time_unit: Optional[UnitDefinition]= None, + is_simulated: bool= False, **kwargs, ): params = { @@ -1754,21 +1841,24 @@ def add_to_species_data( "data": data, "time": time, "time_unit": time_unit, - "is_simulated": is_simulated, + "is_simulated": is_simulated } if "id" in kwargs: params["id"] = kwargs["id"] - self.species_data.append(MeasurementData(**params)) + self.species_data.append( + MeasurementData(**params) + ) return self.species_data[-1] class MeasurementData(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment=True, - ) # type: ignore + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore species_id: str initial: float @@ -1783,32 +1873,33 @@ class MeasurementData(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:MeasurementData/" + str(uuid4()), + default_factory=lambda: "enzml:MeasurementData/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: [ + default_factory = lambda: [ "enzml:MeasurementData", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "species_id": { "@type": "@id", }, - }, + } ) + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -1830,9 +1921,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert ( - attr in self.model_fields - ), f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1841,7 +1930,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1870,9 +1962,10 @@ def add_type_term( class UnitDefinition(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment=True, - ) # type: ignore + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore id: Optional[str] = Field(default=None) name: Optional[str] = Field(default=None) @@ -1881,21 +1974,21 @@ class UnitDefinition(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:UnitDefinition/" + str(uuid4()), + default_factory=lambda: "enzml:UnitDefinition/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: [ + default_factory = lambda: [ "enzml:UnitDefinition", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", - }, + "OBO": "http://purl.obolibrary.org/obo/", + } ) def filter_base_units(self, **kwargs) -> list[BaseUnit]: @@ -1910,12 +2003,13 @@ def filter_base_units(self, **kwargs) -> list[BaseUnit]: return FilterWrapper[BaseUnit](self.base_units, **kwargs).filter() + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -1937,9 +2031,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert ( - attr in self.model_fields - ), f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1948,7 +2040,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1975,33 +2070,36 @@ def add_type_term( add_namespace(self, prefix, iri) self.ld_type.append(term) + def add_to_base_units( self, kind: UnitType, exponent: int, - multiplier: Optional[float] = None, - scale: Optional[float] = None, + multiplier: Optional[float]= None, + scale: Optional[float]= None, **kwargs, ): params = { "kind": kind, "exponent": exponent, "multiplier": multiplier, - "scale": scale, + "scale": scale } if "id" in kwargs: params["id"] = kwargs["id"] - self.base_units.append(BaseUnit(**params)) + self.base_units.append( + BaseUnit(**params) + ) return self.base_units[-1] - class BaseUnit(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment=True, - ) # type: ignore + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assigment = True, + ) # type: ignore kind: UnitType exponent: int @@ -2011,29 +2109,30 @@ class BaseUnit(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:BaseUnit/" + str(uuid4()), + default_factory=lambda: "enzml:BaseUnit/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: [ + default_factory = lambda: [ "enzml:BaseUnit", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", - }, + "OBO": "http://purl.obolibrary.org/obo/", + } ) + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -2055,9 +2154,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert ( - attr in self.model_fields - ), f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -2066,7 +2163,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -2100,7 +2200,6 @@ class EquationType(Enum): ODE = "ode" RATE_LAW = "rateLaw" - class DataTypes(Enum): ABSORBANCE = "http://purl.allotrope.org/ontologies/quality#AFQ_0000061" CONCENTRATION = "http://purl.obolibrary.org/obo/PATO_0000033" @@ -2109,7 +2208,6 @@ class DataTypes(Enum): PEAK_AREA = "http://purl.allotrope.org/ontologies/result#AFR_0001073" TRANSMITTANCE = "http://purl.allotrope.org/ontologies/result#AFR_0002261" - class UnitType(Enum): AMPERE = "ampere" AVOGADRO = "avogadro" @@ -2144,4 +2242,4 @@ class UnitType(Enum): TESLA = "tesla" VOLT = "volt" WATT = "watt" - WEBER = "weber" + WEBER = "weber" \ No newline at end of file diff --git a/pyenzyme/sbml/serializer.py b/pyenzyme/sbml/serializer.py index 5c08c418..de3e9b2b 100644 --- a/pyenzyme/sbml/serializer.py +++ b/pyenzyme/sbml/serializer.py @@ -211,7 +211,7 @@ def _add_complex(complex_: pe.Complex): species.initDefaults() species.setId(complex_.id) species.setName(complex_.name) - species.setCompartment(model.getCompartment(0).getId()) + species.setCompartment(complex_.vessel_id) species.setConstant(True) species.setSBOTerm("SBO:0000296") # Complex species.appendAnnotation(rdf.to_rdf_xml(complex_)) diff --git a/pyenzyme/sbml/validation.py b/pyenzyme/sbml/validation.py index d3b83612..b651fc44 100644 --- a/pyenzyme/sbml/validation.py +++ b/pyenzyme/sbml/validation.py @@ -35,7 +35,7 @@ def _check_consistent_vessel_ids(doc: pe.EnzymeMLDocument) -> bool: """ vessel_ids = {v.id for v in doc.vessels} - all_species = doc.small_molecules + doc.proteins + all_species = doc.small_molecules + doc.proteins + doc.complexes result = [] for species in all_species: From 5d351a535d1c1daf14ae4159cfbc140dfedcfb67 Mon Sep 17 00:00:00 2001 From: Jan Range Date: Sun, 8 Sep 2024 11:56:06 +0200 Subject: [PATCH 069/172] update dev examples --- dev-examples/odes/odes_example_test.xml | 44 ++++++++++++------------- dev-examples/sbml_export_odes.py | 8 ++--- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/dev-examples/odes/odes_example_test.xml b/dev-examples/odes/odes_example_test.xml index aac8bbc2..d9768e99 100644 --- a/dev-examples/odes/odes_example_test.xml +++ b/dev-examples/odes/odes_example_test.xml @@ -1,6 +1,6 @@ - + @@ -31,7 +31,7 @@ - + @@ -43,8 +43,8 @@ - - + + @@ -56,7 +56,7 @@ - + @@ -68,7 +68,7 @@ - + @@ -80,15 +80,15 @@ - + - + - + Vessel 1 10.0 @@ -99,10 +99,10 @@ - + - + Enzyme MTEY E.coli @@ -118,10 +118,10 @@ - + - + Enzyme-Substrate Complex @@ -132,31 +132,31 @@ - + - + Substrate QTBSBXVTEAMEQO-UHFFFAOYSA-N - + CC(=O)O - + - + Product QTBSBXVTEAMEQO-UHFFFAOYSA-N - + CC(=O)O @@ -165,7 +165,7 @@ - + @@ -179,7 +179,7 @@ - + @@ -193,7 +193,7 @@ - + diff --git a/dev-examples/sbml_export_odes.py b/dev-examples/sbml_export_odes.py index 22fd094a..1054d281 100644 --- a/dev-examples/sbml_export_odes.py +++ b/dev-examples/sbml_export_odes.py @@ -47,6 +47,7 @@ id="c0", name="Enzyme-Substrate Complex", participants=[enzyme.id, substrate.id], + vessel_id=vessel.id, ) doc.equations += peq.build_equations( @@ -73,14 +74,13 @@ meas.ph = 7.0 rich.print(to_sbml(doc)[0]) + # Write sbml doc to file with open("./dev-examples/odes/odes_example_test.xml", "w") as file: file.write(to_sbml(doc)[0]) -exit() - # Write to omex file -doc.to_sbml("./dev-examples/odes/odes_example.omex") +doc.to_sbml("./tests/fixtures/sbml/odes_example.omex") # Write to EnzymeML JSON file -pe.write_enzymeml(self=doc, path="./dev-examples/odes/enzymeml.json") +pe.write_enzymeml(self=doc, path="./tests/fixtures/sbml/ode_example_enzml.json") From 55eac11f435c78bd46a81e438e2f7926fdcc161c Mon Sep 17 00:00:00 2001 From: Jan Range Date: Sun, 8 Sep 2024 11:56:24 +0200 Subject: [PATCH 070/172] extract compartment for `Complex` --- pyenzyme/sbml/parser.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pyenzyme/sbml/parser.py b/pyenzyme/sbml/parser.py index b000300e..2a18e1f5 100644 --- a/pyenzyme/sbml/parser.py +++ b/pyenzyme/sbml/parser.py @@ -245,6 +245,7 @@ def _parse_complex(species: sbml.Species): complex_ = pe.Complex( id=species.getId(), name=species.getName(), + vessel_id=species.getCompartment(), **annots, ) From f530e1eb5b6d871a94a96caa12f7ff909f1f1b4e Mon Sep 17 00:00:00 2001 From: Jan Range Date: Sun, 8 Sep 2024 11:56:31 +0200 Subject: [PATCH 071/172] update tests --- tests/fixtures/sbml/ode_example_enzml.json | 447 +++++++++++---------- tests/fixtures/sbml/odes_example.omex | Bin 2429 -> 2452 bytes tests/fixtures/sbml/v1_example_enzml.json | 7 + tests/integration/test_sbml.py | 6 + 4 files changed, 239 insertions(+), 221 deletions(-) diff --git a/tests/fixtures/sbml/ode_example_enzml.json b/tests/fixtures/sbml/ode_example_enzml.json index ca2dca0b..05a5ec9e 100644 --- a/tests/fixtures/sbml/ode_example_enzml.json +++ b/tests/fixtures/sbml/ode_example_enzml.json @@ -1,8 +1,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "name": "schema:title", "references": { "@id": "schema:citation", @@ -12,7 +12,7 @@ "modified": "schema:dateModified", "creators": "schema:creator" }, - "@id": "enzml:EnzymeMLDocument/833d46aa-58c7-4d42-b341-43f1fe0fece0", + "@id": "enzml:EnzymeMLDocument/c051b03b-83c2-4671-ac9b-87f0dea9137a", "@type": [ "enzml:EnzymeMLDocument" ], @@ -23,8 +23,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id" @@ -32,7 +32,7 @@ "name": "schema:name", "volume": "OBO:OBI_0002139" }, - "@id": "enzml:Vessel/abc02182-675a-4fd7-b067-9f376f17b874", + "@id": "enzml:Vessel/a8c3e187-b735-49df-b76a-684916d91c25", "@type": [ "enzml:Vessel", "OBO:OBI_0400081" @@ -43,8 +43,8 @@ "unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, "@id": "OBO:UO_0000098", "@type": [ @@ -56,10 +56,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/7ea9c0d4-dcbb-4e59-94f2-7b1779e35b1b", + "@id": "enzml:BaseUnit/ad727ef5-a949-4b31-b73a-db00c5804be7", "@type": [ "enzml:BaseUnit" ], @@ -76,8 +76,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@type": "@id" }, @@ -96,7 +96,7 @@ "@type": "@id" } }, - "@id": "enzml:Protein/487be0d2-e325-4f0b-857b-3bd8d54c4003", + "@id": "enzml:Protein/e4d6270e-788f-4773-b507-1f85396fa674", "@type": [ "enzml:Protein", "schema:Protein" @@ -116,24 +116,29 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id" }, "name": "schema:name", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, "participants": { "@type": "@id" } }, - "@id": "enzml:Complex/2f52086d-d7a8-4a2d-870b-bd6bafd91504", + "@id": "enzml:Complex/be1a42ec-01ea-4f63-b557-1fde75f57ef7", "@type": [ "enzml:Complex" ], "id": "c0", "name": "Enzyme-Substrate Complex", "constant": false, + "vessel_id": "v0", "participants": [ "p0", "s0" @@ -144,8 +149,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id" @@ -160,7 +165,7 @@ "@type": "@id" } }, - "@id": "enzml:SmallMolecule/551e35d3-ae18-490d-b4a7-003fcd28f446", + "@id": "enzml:SmallMolecule/8162f8a5-884e-40b5-9a2a-7f04ace5c21e", "@type": [ "enzml:SmallMolecule" ], @@ -175,8 +180,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id" @@ -191,7 +196,7 @@ "@type": "@id" } }, - "@id": "enzml:SmallMolecule/1a93b3f8-ce94-429d-975b-ff6a837b0424", + "@id": "enzml:SmallMolecule/fe089160-e9c5-4862-ba88-1a437f29134f", "@type": [ "enzml:SmallMolecule" ], @@ -209,8 +214,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id" @@ -219,7 +224,7 @@ "@type": "@id" } }, - "@id": "enzml:Measurement/83db3a41-626e-461b-80d2-9618997c6af3", + "@id": "enzml:Measurement/7766fd7f-cd7d-4ff1-8e83-9527cb45a005", "@type": [ "enzml:Measurement" ], @@ -229,13 +234,13 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "species_id": { "@type": "@id" } }, - "@id": "enzml:MeasurementData/a1e71511-2b64-40af-a50f-7ede47b45baa", + "@id": "enzml:MeasurementData/b55b4581-9600-425e-b315-19a28e782a26", "@type": [ "enzml:MeasurementData" ], @@ -244,8 +249,8 @@ "data_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, "@id": "OBO:UO_0000063", "@type": [ @@ -257,10 +262,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/0a98675d-d6e6-4551-8f2a-90483c57936d", + "@id": "enzml:BaseUnit/41bc70c0-6cd0-49d3-a659-f195b6d8bdf9", "@type": [ "enzml:BaseUnit" ], @@ -271,10 +276,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/335f309c-13e0-4eb8-9765-3945a8683f7f", + "@id": "enzml:BaseUnit/61182f56-73ee-47cd-ac22-4ce7ad6da66a", "@type": [ "enzml:BaseUnit" ], @@ -284,35 +289,6 @@ } ] }, - "time_unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000010", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u1", - "name": "s", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/4e3a6a14-ca74-4c8a-b00f-45a3cfea6e11", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "second", - "exponent": 1, - "scale": 1.0 - } - ] - }, "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", "data": [ 0.0, @@ -340,18 +316,47 @@ 9.0, 10.0 ], + "time_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" + }, + "@id": "OBO:UO_0000010", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u1", + "name": "s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" + }, + "@id": "enzml:BaseUnit/e9698180-23e9-4660-adcc-38dbf74c0ad5", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": 1, + "scale": 1.0 + } + ] + }, "is_simulated": false }, { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "species_id": { "@type": "@id" } }, - "@id": "enzml:MeasurementData/9de1a9fe-ede0-4e0b-a8cc-84e8dce6cb57", + "@id": "enzml:MeasurementData/715d7d38-843b-42f8-82b7-4a8d086a4fd2", "@type": [ "enzml:MeasurementData" ], @@ -360,8 +365,8 @@ "data_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, "@id": "OBO:UO_0000063", "@type": [ @@ -373,10 +378,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/0a98675d-d6e6-4551-8f2a-90483c57936d", + "@id": "enzml:BaseUnit/41bc70c0-6cd0-49d3-a659-f195b6d8bdf9", "@type": [ "enzml:BaseUnit" ], @@ -387,10 +392,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/335f309c-13e0-4eb8-9765-3945a8683f7f", + "@id": "enzml:BaseUnit/61182f56-73ee-47cd-ac22-4ce7ad6da66a", "@type": [ "enzml:BaseUnit" ], @@ -400,35 +405,6 @@ } ] }, - "time_unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000010", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u1", - "name": "s", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/4e3a6a14-ca74-4c8a-b00f-45a3cfea6e11", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "second", - "exponent": 1, - "scale": 1.0 - } - ] - }, "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", "data": [ 10.0, @@ -456,6 +432,35 @@ 9.0, 10.0 ], + "time_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" + }, + "@id": "OBO:UO_0000010", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u1", + "name": "s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" + }, + "@id": "enzml:BaseUnit/e9698180-23e9-4660-adcc-38dbf74c0ad5", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": 1, + "scale": 1.0 + } + ] + }, "is_simulated": false } ], @@ -464,8 +469,8 @@ "temperature_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, "@id": "OBO:UO_0000012", "@type": [ @@ -477,10 +482,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/31d5028b-2d30-4053-87e7-00b42a40b165", + "@id": "enzml:BaseUnit/d593a318-0adf-4c28-b768-a60643e77209", "@type": [ "enzml:BaseUnit" ], @@ -494,8 +499,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id" @@ -504,7 +509,7 @@ "@type": "@id" } }, - "@id": "enzml:Measurement/f7603279-9db3-4039-b501-97fee1f05c4b", + "@id": "enzml:Measurement/a5492722-fe9e-42e4-b870-cfa625e58efc", "@type": [ "enzml:Measurement" ], @@ -514,13 +519,13 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "species_id": { "@type": "@id" } }, - "@id": "enzml:MeasurementData/f8d7f530-1f92-4cd7-b460-54b9cb03678b", + "@id": "enzml:MeasurementData/edd44ccc-1c8d-483b-a731-c9bf71c16fd0", "@type": [ "enzml:MeasurementData" ], @@ -529,8 +534,8 @@ "data_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, "@id": "OBO:UO_0000063", "@type": [ @@ -542,10 +547,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/0a98675d-d6e6-4551-8f2a-90483c57936d", + "@id": "enzml:BaseUnit/41bc70c0-6cd0-49d3-a659-f195b6d8bdf9", "@type": [ "enzml:BaseUnit" ], @@ -556,10 +561,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/335f309c-13e0-4eb8-9765-3945a8683f7f", + "@id": "enzml:BaseUnit/61182f56-73ee-47cd-ac22-4ce7ad6da66a", "@type": [ "enzml:BaseUnit" ], @@ -569,35 +574,6 @@ } ] }, - "time_unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000010", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u1", - "name": "s", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/4e3a6a14-ca74-4c8a-b00f-45a3cfea6e11", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "second", - "exponent": 1, - "scale": 1.0 - } - ] - }, "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", "data": [ 0.0, @@ -625,18 +601,47 @@ 9.0, 10.0 ], + "time_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" + }, + "@id": "OBO:UO_0000010", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u1", + "name": "s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" + }, + "@id": "enzml:BaseUnit/e9698180-23e9-4660-adcc-38dbf74c0ad5", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": 1, + "scale": 1.0 + } + ] + }, "is_simulated": false }, { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "species_id": { "@type": "@id" } }, - "@id": "enzml:MeasurementData/828564ec-ec24-42c2-98b2-115fdc1f2a3c", + "@id": "enzml:MeasurementData/350a22b8-dfad-43d8-b222-ce66d399e683", "@type": [ "enzml:MeasurementData" ], @@ -645,8 +650,8 @@ "data_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, "@id": "OBO:UO_0000063", "@type": [ @@ -658,10 +663,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/0a98675d-d6e6-4551-8f2a-90483c57936d", + "@id": "enzml:BaseUnit/41bc70c0-6cd0-49d3-a659-f195b6d8bdf9", "@type": [ "enzml:BaseUnit" ], @@ -672,10 +677,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/335f309c-13e0-4eb8-9765-3945a8683f7f", + "@id": "enzml:BaseUnit/61182f56-73ee-47cd-ac22-4ce7ad6da66a", "@type": [ "enzml:BaseUnit" ], @@ -685,35 +690,6 @@ } ] }, - "time_unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000010", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u1", - "name": "s", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/4e3a6a14-ca74-4c8a-b00f-45a3cfea6e11", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "second", - "exponent": 1, - "scale": 1.0 - } - ] - }, "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", "data": [ 10.0, @@ -741,6 +717,35 @@ 9.0, 10.0 ], + "time_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" + }, + "@id": "OBO:UO_0000010", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u1", + "name": "s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" + }, + "@id": "enzml:BaseUnit/e9698180-23e9-4660-adcc-38dbf74c0ad5", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": 1, + "scale": 1.0 + } + ] + }, "is_simulated": false } ], @@ -749,8 +754,8 @@ "temperature_unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, "@id": "OBO:UO_0000012", "@type": [ @@ -762,10 +767,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/31d5028b-2d30-4053-87e7-00b42a40b165", + "@id": "enzml:BaseUnit/d593a318-0adf-4c28-b768-a60643e77209", "@type": [ "enzml:BaseUnit" ], @@ -781,28 +786,28 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "species_id": { "@type": "@id" } }, - "@id": "enzml:Equation/69aec529-07bc-447a-8169-a20dc623c81a", + "@id": "enzml:Equation/99d3756a-898a-4d1f-9da8-0ddf4a78ef19", "@type": [ "enzml:Equation" ], - "equation": "E_tot * kcat * s0 / (K_m + s0)", + "equation": "E_tot*kcat*s0/(K_m + s0)", "equation_type": "ode", "species_id": "s1", "variables": [ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": "schema:identifier" }, - "@id": "enzml:Variable/b4d171e6-c5ee-416b-859f-6560c5f18b5d", + "@id": "enzml:Variable/2104c1ec-afc6-45c8-be1a-3e384b925cc6", "@type": [ "enzml:Variable" ], @@ -815,13 +820,13 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "species_id": { "@type": "@id" } }, - "@id": "enzml:Equation/e1e66a46-8111-4003-9eeb-f163081c2e96", + "@id": "enzml:Equation/9674a3b0-0f65-4617-abe0-db1dc1ad0a28", "@type": [ "enzml:Equation" ], @@ -835,14 +840,14 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id" } }, - "@id": "enzml:Parameter/2872b6d6-191f-4bc4-a36a-130eb4534837", + "@id": "enzml:Parameter/b53a61b4-dc01-4756-b196-de11ca49f32e", "@type": [ "enzml:Parameter" ], @@ -852,8 +857,8 @@ "unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, "@id": "OBO:UO_0000010", "@type": [ @@ -865,10 +870,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/4e3a6a14-ca74-4c8a-b00f-45a3cfea6e11", + "@id": "enzml:BaseUnit/e9698180-23e9-4660-adcc-38dbf74c0ad5", "@type": [ "enzml:BaseUnit" ], @@ -886,14 +891,14 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id" } }, - "@id": "enzml:Parameter/31e315d7-8e87-4ef9-9ca4-1e9e08f2ded7", + "@id": "enzml:Parameter/262c575a-86af-4a68-afae-86d0a2487449", "@type": [ "enzml:Parameter" ], @@ -903,8 +908,8 @@ "unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, "@id": "OBO:UO_0000063", "@type": [ @@ -916,10 +921,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/0a98675d-d6e6-4551-8f2a-90483c57936d", + "@id": "enzml:BaseUnit/41bc70c0-6cd0-49d3-a659-f195b6d8bdf9", "@type": [ "enzml:BaseUnit" ], @@ -930,10 +935,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/335f309c-13e0-4eb8-9765-3945a8683f7f", + "@id": "enzml:BaseUnit/61182f56-73ee-47cd-ac22-4ce7ad6da66a", "@type": [ "enzml:BaseUnit" ], @@ -951,14 +956,14 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id" } }, - "@id": "enzml:Parameter/d49325e0-8483-469a-9d6d-1bcadac2bb98", + "@id": "enzml:Parameter/288ed9be-7df3-462f-84c1-bbbcc437d7a7", "@type": [ "enzml:Parameter" ], @@ -968,8 +973,8 @@ "unit": { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, "@id": "OBO:UO_0000063", "@type": [ @@ -981,10 +986,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/0a98675d-d6e6-4551-8f2a-90483c57936d", + "@id": "enzml:BaseUnit/41bc70c0-6cd0-49d3-a659-f195b6d8bdf9", "@type": [ "enzml:BaseUnit" ], @@ -995,10 +1000,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/" }, - "@id": "enzml:BaseUnit/335f309c-13e0-4eb8-9765-3945a8683f7f", + "@id": "enzml:BaseUnit/61182f56-73ee-47cd-ac22-4ce7ad6da66a", "@type": [ "enzml:BaseUnit" ], diff --git a/tests/fixtures/sbml/odes_example.omex b/tests/fixtures/sbml/odes_example.omex index 087704deb80a5f2edbf78637d98194f6b7c3735e..22e08a3380cd065bc53dccec35a2cc6a0d3682d0 100644 GIT binary patch delta 1940 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 v0000000000q=765003lRbYU)Zb9PWm1qJ{B000930|2K0006)U000008!)*8 diff --git a/tests/fixtures/sbml/v1_example_enzml.json b/tests/fixtures/sbml/v1_example_enzml.json index 772e07a7..37f76df5 100644 --- a/tests/fixtures/sbml/v1_example_enzml.json +++ b/tests/fixtures/sbml/v1_example_enzml.json @@ -179,6 +179,7 @@ "id": "c0", "name": "E·PGME", "constant": false, + "vessel_id": "v0", "participants": [ "p0", "s0" @@ -205,6 +206,7 @@ "id": "c1", "name": "E·7-ADCA", "constant": false, + "vessel_id": "v0", "participants": [ "p0", "s1" @@ -231,6 +233,7 @@ "id": "c2", "name": "E·PG", "constant": false, + "vessel_id": "v0", "participants": [ "p0", "s3" @@ -257,6 +260,7 @@ "id": "c3", "name": "E·PGME·PGME", "constant": false, + "vessel_id": "v0", "participants": [ "p0", "s0", @@ -284,6 +288,7 @@ "id": "c4", "name": "EA·7-ADCA", "constant": false, + "vessel_id": "v0", "participants": [ "p1", "s1" @@ -310,6 +315,7 @@ "id": "c5", "name": "EA·PGME", "constant": false, + "vessel_id": "v0", "participants": [ "p1", "s0" @@ -336,6 +342,7 @@ "id": "c6", "name": "E·CEX", "constant": false, + "vessel_id": "v0", "participants": [ "p0", "s2" diff --git a/tests/integration/test_sbml.py b/tests/integration/test_sbml.py index 63d91416..c7475196 100644 --- a/tests/integration/test_sbml.py +++ b/tests/integration/test_sbml.py @@ -22,6 +22,11 @@ def test_parse_sbml_odes(self): EnzymeMLDocument.read("tests/fixtures/sbml/ode_example_enzml.json") ) + # Remove spaces of equation + for eq in parsed_doc["equations"]: + eq["equation"] = eq["equation"].replace(" * ", "*") + eq["equation"] = eq["equation"].replace(" / ", "/") + assert ( parsed_doc == expected_doc ), "Parsed document does not match expected document" @@ -88,6 +93,7 @@ def test_end_to_end(self): id="c0", name="Enzyme-Substrate Complex", participants=[enzyme.id, substrate.id], + vessel_id=vessel.id, ) doc.equations += peq.build_equations( From 2c10d5415c654426395f01cafb1c22c0e092626e Mon Sep 17 00:00:00 2001 From: Jan Range Date: Sun, 8 Sep 2024 11:57:52 +0200 Subject: [PATCH 072/172] remove unused import --- pyenzyme/model.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pyenzyme/model.py b/pyenzyme/model.py index 7b056e64..f196a809 100644 --- a/pyenzyme/model.py +++ b/pyenzyme/model.py @@ -5,7 +5,6 @@ from typing import Optional, Generic, TypeVar from enum import Enum from uuid import uuid4 -from datetime import date, datetime # Filter Wrapper definition used to filter a list of objects # based on their attributes From 91b999382cf507978e5882aa9f607233e7c11f82 Mon Sep 17 00:00:00 2001 From: Jan Range Date: Tue, 24 Sep 2024 01:58:56 +0200 Subject: [PATCH 073/172] add suite class --- pyenzyme/__init__.py | 1 + pyenzyme/suite.py | 72 ++++++++++++++++++++++++++++++++++++++++++++ pyproject.toml | 1 + 3 files changed, 74 insertions(+) create mode 100644 pyenzyme/suite.py diff --git a/pyenzyme/__init__.py b/pyenzyme/__init__.py index 298edc2a..6396014a 100644 --- a/pyenzyme/__init__.py +++ b/pyenzyme/__init__.py @@ -7,6 +7,7 @@ from .model import * # noqa: F403 from .sbml import to_sbml, read_sbml # noqa: F401 +from .suite import EnzymeMLSuite # noqa: F401 from .tabular import to_pandas, read_csv, read_excel, from_dataframe # noqa: F401 __all__ = [ diff --git a/pyenzyme/suite.py b/pyenzyme/suite.py new file mode 100644 index 00000000..c4182d07 --- /dev/null +++ b/pyenzyme/suite.py @@ -0,0 +1,72 @@ +import json + +import httpx +import rich + +import pyenzyme as pe + + +class EnzymeMLSuite: + """ + A suite for interacting with the EnzymeML service. + + Attributes: + client (httpx.Client): The HTTP client for making requests to the EnzymeML service. + """ + + def __init__(self): + """ + Initializes the EnzymeMLSuite with a base URL for the EnzymeML service. + """ + self.client = httpx.Client(base_url="http://localhost:13452") + + def get_current(self) -> pe.EnzymeMLDocument: + """ + Retrieves the current EnzymeML document from the service. + + Returns: + EnzymeMLDocument: The current EnzymeML document. + + Raises: + httpx.HTTPStatusError: If the request to the service fails. + """ + + try: + response = self.client.get("/docs/:current") + except httpx.ConnectError: + raise ConnectionError( + "Could not connect to the EnzymeML suite. Make sure it is running." + ) + + response.raise_for_status() + + content = response.json()["data"]["content"] + + if not isinstance(content["references"], list): + content["references"] = [] + + return pe.EnzymeMLDocument.model_validate(content) + + def update_current(self, doc: pe.EnzymeMLDocument): + """ + Updates the current EnzymeML document on the service. + + Args: + doc (EnzymeMLDocument): The EnzymeML document to update. + + Raises: + httpx.HTTPStatusError: If the request to the service fails. + """ + try: + response = self.client.put( + "/docs/:current", + json=json.loads(doc.model_dump_json()), + ) + except httpx.ConnectError: + raise ConnectionError( + "Could not connect to the EnzymeML suite. Make sure it is running." + ) + + response.raise_for_status() + + rich.print("[bold green]Document updated successfully![/]") diff --git a/pyproject.toml b/pyproject.toml index 1245b092..ba6841cd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,6 +18,7 @@ loguru = "^0.7.2" rdflib = "7.0.0" sympy = "^1.12.1" pymetadata = "^0.4.4" +httpx = "^0.27.2" [tool.poetry.group.neo4j.dependencies] neo4j = "^5.21.0" From de446b61a05012ae8494b8c11efb6081cc4cc824 Mon Sep 17 00:00:00 2001 From: Jan Range Date: Tue, 24 Sep 2024 12:22:28 +0200 Subject: [PATCH 074/172] fix units not recognized --- pyenzyme/sbml/serializer.py | 15 ++++++++++++++- pyenzyme/tabular.py | 5 ++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/pyenzyme/sbml/serializer.py b/pyenzyme/sbml/serializer.py index de3e9b2b..5e440eb2 100644 --- a/pyenzyme/sbml/serializer.py +++ b/pyenzyme/sbml/serializer.py @@ -67,7 +67,10 @@ def to_sbml( sbmldoc = libsbml.SBMLDocument() model = sbmldoc.createModel() model.setName(doc.name) - units = _assign_ids_to_units(tools.find_unique(doc, UnitDefinition)) + units = _assign_ids_to_units(tools.find_unique(doc, pe.UnitDefinition)) + + # Add units that have been defined by the custom UnitDefinition + convert_unit_classes(doc, units) print_warnings = verbose @@ -109,6 +112,16 @@ def to_sbml( logger.info(f"OMEX archive written to {out}") +def convert_unit_classes(doc: pe.EnzymeMLDocument, custom_units: list[UnitDefinition]): + custom_units.extend( + [ + pe.UnitDefinition(**unit.model_dump()) + for unit in _assign_ids_to_units(tools.find_unique(doc, pe.UnitDefinition)) + if unit.id not in [unit.id for unit in custom_units] + ] + ) + + def _add_unit_definitions(unit: UnitDefinition): """Add unit definitions to the SBML model.""" diff --git a/pyenzyme/tabular.py b/pyenzyme/tabular.py index 1185dd34..32c1e4e2 100644 --- a/pyenzyme/tabular.py +++ b/pyenzyme/tabular.py @@ -59,7 +59,10 @@ def to_pandas( df["id"] = [meas.id] * len(df) dfs.append(df) - return pd.concat(dfs, ignore_index=True).reset_index(drop=True) + if dfs: + return pd.concat(dfs, ignore_index=True).reset_index(drop=True) + else: + return pd.DataFrame() def read_excel( From 4efc6d12115d6e3e3195e1c2d740585ff9e865e8 Mon Sep 17 00:00:00 2001 From: Jan Range Date: Tue, 24 Sep 2024 13:34:14 +0200 Subject: [PATCH 075/172] Return `None` if `unit` is `None` --- pyenzyme/sbml/serializer.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pyenzyme/sbml/serializer.py b/pyenzyme/sbml/serializer.py index 5e440eb2..dd5a5d17 100644 --- a/pyenzyme/sbml/serializer.py +++ b/pyenzyme/sbml/serializer.py @@ -438,9 +438,12 @@ def _get_sbml_kind(unit_type: pe.UnitType): raise ValueError(f"Unit type {unit_type} not found in libsbml") -def _get_unit_id(unit: pe.UnitDefinition) -> str: +def _get_unit_id(unit: pe.UnitDefinition) -> str | None: """Helper function to get the unit from the list of units.""" + if unit is None: + return None + if unit.id is None: raise ValueError(f"Unit {unit.name} does not have an ID") From a0282d4643fea3126413b8fe14969d98ce98108e Mon Sep 17 00:00:00 2001 From: Jan Range Date: Tue, 24 Sep 2024 13:45:55 +0200 Subject: [PATCH 076/172] set temp unit and value optional --- pyenzyme/sbml/versions/v2.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyenzyme/sbml/versions/v2.py b/pyenzyme/sbml/versions/v2.py index bd180d4c..ce82bfc3 100644 --- a/pyenzyme/sbml/versions/v2.py +++ b/pyenzyme/sbml/versions/v2.py @@ -308,8 +308,8 @@ class TemperatureAnnot( unit (str): The unit of the temperature value. """ - value: float = attr(name="value") - unit: str = attr(name="unit") + value: float | None = attr(name="value", default=None) + unit: str | None = attr(name="unit", default=None) class ParameterAnnot( From d1fa04eafe7babcacb13ea89aa64e58816ee78b6 Mon Sep 17 00:00:00 2001 From: Jan Range Date: Wed, 25 Sep 2024 13:57:01 +0200 Subject: [PATCH 077/172] fix unit ids not retrieved corectly --- pyenzyme/sbml/serializer.py | 23 +++++++++++++++++++---- pyenzyme/sbml/versions/v2.py | 4 ++-- pyenzyme/tabular.py | 16 +++++++++++++--- 3 files changed, 34 insertions(+), 9 deletions(-) diff --git a/pyenzyme/sbml/serializer.py b/pyenzyme/sbml/serializer.py index dd5a5d17..dd56d764 100644 --- a/pyenzyme/sbml/serializer.py +++ b/pyenzyme/sbml/serializer.py @@ -4,6 +4,7 @@ from pathlib import Path from typing import Callable, List +import rich import libsbml import pandas as pd from loguru import logger @@ -18,6 +19,7 @@ from pyenzyme.sbml.versions import v2 from pyenzyme.tabular import to_pandas from pyenzyme.units.units import UnitDefinition +from pyenzyme.tools import to_dict_wo_json_ld MAPPINGS = tools.read_static_file("pyenzyme.sbml", "mappings.toml") NSMAP = {"enzymeml": "https://www.enzymeml.org/v2"} @@ -438,20 +440,33 @@ def _get_sbml_kind(unit_type: pe.UnitType): raise ValueError(f"Unit type {unit_type} not found in libsbml") -def _get_unit_id(unit: pe.UnitDefinition) -> str | None: +def _get_unit_id(unit: pe.UnitDefinition | None) -> str | None: """Helper function to get the unit from the list of units.""" if unit is None: return None - if unit.id is None: - raise ValueError(f"Unit {unit.name} does not have an ID") + for unit2 in units: + if _same_unit(unit, unit2): + return unit2.id - return unit.id + raise ValueError(f"Unit {unit.name} not found in the list of units") + +def _same_unit(unit1: pe.UnitDefinition, unit2: pe.UnitDefinition) -> bool: + """Check if two units are the same.""" + + unit1 = to_dict_wo_json_ld(unit1) + unit2 = to_dict_wo_json_ld(unit2) + + del unit1["id"] + del unit2["id"] + + return unit1 == unit2 def _validate_sbml(sbmldoc: libsbml.SBMLDocument) -> None: """Validate the SBML document using the libSBML function.""" + sbml_errors = sbmldoc.checkConsistency() valid = True diff --git a/pyenzyme/sbml/versions/v2.py b/pyenzyme/sbml/versions/v2.py index ce82bfc3..db71ee15 100644 --- a/pyenzyme/sbml/versions/v2.py +++ b/pyenzyme/sbml/versions/v2.py @@ -179,7 +179,7 @@ class MeasurementAnnot( id: str = attr(name="id") name: str | None = attr(name="name", default=None) - time_unit: str = attr(name="timeUnit") + time_unit: str | None = attr(name="timeUnit") conditions: ConditionsAnnot | None = element(tag="conditions", default=None) species_data: list[SpeciesDataAnnot] = element( tag="speciesData", @@ -291,7 +291,7 @@ class PHAnnot( value (float): The pH value. """ - value: float = attr(name="value") + value: float | None = attr(name="value") class TemperatureAnnot( diff --git a/pyenzyme/tabular.py b/pyenzyme/tabular.py index 32c1e4e2..1c5ad193 100644 --- a/pyenzyme/tabular.py +++ b/pyenzyme/tabular.py @@ -16,7 +16,7 @@ def to_pandas( enzmldoc: EnzymeMLDocument, ignore: list[str] | None = None, -) -> pd.DataFrame: +) -> pd.DataFrame | None: """This function converts an EnzymeMLDocument object to a pandas DataFrame. The resulting DataFrame contains the following columns: @@ -38,6 +38,9 @@ def to_pandas( ValueError: If the measurement does not contain species data. """ + if not enzmldoc.measurements: + return None + if ignore is None: ignore = [] @@ -305,11 +308,17 @@ def _measurement_to_pandas(measurement: Measurement) -> pd.DataFrame: _validate_measurement(measurement) - data = {"time": measurement.species_data[0].time} + data = {"time": _get_time_array(measurement)} for species in measurement.species_data: - data[species.species_id] = species.data + if len(species.data) > 0: + data[species.species_id] = species.data + return pd.DataFrame(data) +def _get_time_array(measurement: Measurement): + for meas_data in measurement.species_data: + if len(meas_data.time) > 0: + return meas_data.time def _validate_measurement(meas: Measurement) -> None: """Validates a Measurement object""" @@ -321,6 +330,7 @@ def _validate_measurement(meas: Measurement) -> None: { species.species_id + "_time": species.time for species in meas.species_data + if len(species.time) > 0 } ) except ValueError: From 7e414926c2354bf223fed0bb38e8f511969e72ef Mon Sep 17 00:00:00 2001 From: Jan Range Date: Wed, 25 Sep 2024 20:11:19 +0200 Subject: [PATCH 078/172] fix unit ids and remove validation error --- pyenzyme/sbml/serializer.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/pyenzyme/sbml/serializer.py b/pyenzyme/sbml/serializer.py index dd56d764..282a4332 100644 --- a/pyenzyme/sbml/serializer.py +++ b/pyenzyme/sbml/serializer.py @@ -4,7 +4,6 @@ from pathlib import Path from typing import Callable, List -import rich import libsbml import pandas as pd from loguru import logger @@ -18,8 +17,8 @@ from pyenzyme.sbml.validation import validate_sbml_export from pyenzyme.sbml.versions import v2 from pyenzyme.tabular import to_pandas -from pyenzyme.units.units import UnitDefinition from pyenzyme.tools import to_dict_wo_json_ld +from pyenzyme.units.units import UnitDefinition MAPPINGS = tools.read_static_file("pyenzyme.sbml", "mappings.toml") NSMAP = {"enzymeml": "https://www.enzymeml.org/v2"} @@ -156,7 +155,7 @@ def _add_vessel(vessel: pe.Vessel): compartment.setSize(vessel.volume) compartment.setAnnotation(rdf.to_rdf_xml(vessel)) - if vessel.unit in units: + if vessel.unit: compartment.setUnits(_get_unit_id(vessel.unit)) model.setVolumeUnits(_get_unit_id(vessel.unit)) else: @@ -450,9 +449,9 @@ def _get_unit_id(unit: pe.UnitDefinition | None) -> str | None: if _same_unit(unit, unit2): return unit2.id - raise ValueError(f"Unit {unit.name} not found in the list of units") + def _same_unit(unit1: pe.UnitDefinition, unit2: pe.UnitDefinition) -> bool: """Check if two units are the same.""" @@ -464,6 +463,7 @@ def _same_unit(unit1: pe.UnitDefinition, unit2: pe.UnitDefinition) -> bool: return unit1 == unit2 + def _validate_sbml(sbmldoc: libsbml.SBMLDocument) -> None: """Validate the SBML document using the libSBML function.""" @@ -488,19 +488,22 @@ def _validate_sbml(sbmldoc: libsbml.SBMLDocument) -> None: sbmldoc.getError(error).getMessage().strip().replace("\n", " ") ) - if not valid: - raise ValueError("SBML model is not valid") - def _assign_ids_to_units(doc_units: List[UnitDefinition]) -> List[UnitDefinition]: ids = [unit.id for unit in doc_units if unit.id] + unique_units = [] for unit in doc_units: + if any(_same_unit(unit, u) for u in unique_units): + continue + if unit.id is None: new_id = next(_id_generator(ids)) unit.id = new_id - return doc_units + unique_units.append(unit) + + return unique_units def _id_generator(ids: list[str]): From ccf56c4e25bd2574134d61041baf44b7d08a6ce1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Max=20H=C3=A4u=C3=9Fler?= Date: Wed, 18 Dec 2024 16:27:38 +0100 Subject: [PATCH 079/172] Update pyproject.toml loosened httpx version dependency --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index ba6841cd..00d2b39c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,7 +18,7 @@ loguru = "^0.7.2" rdflib = "7.0.0" sympy = "^1.12.1" pymetadata = "^0.4.4" -httpx = "^0.27.2" +httpx = ">=0.27" [tool.poetry.group.neo4j.dependencies] neo4j = "^5.21.0" From c2867839800e46a99905bfe02459cfa09238eb21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Max=20H=C3=A4u=C3=9Fler?= Date: Thu, 19 Dec 2024 11:35:29 +0100 Subject: [PATCH 080/172] Update pyproject.toml included pandas==2.2.2 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 00d2b39c..a5c5f560 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,7 +12,7 @@ python = "^3.10" python-libsbml = "^5.20.2" toml = "^0.10.2" rich = "^13.7.1" -pandas = ">=2.0,<2.2.2" +pandas = ">=2.0,<=2.2.2" pydantic-xml = "^2.12.1" loguru = "^0.7.2" rdflib = "7.0.0" From c27bb23e36eb5e4ec7dd5731f19306972cc5fe6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Max=20H=C3=A4u=C3=9Fler?= Date: Fri, 7 Feb 2025 20:45:38 +0100 Subject: [PATCH 081/172] Update pyproject.toml --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index a5c5f560..5d5fa0c6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,7 +12,7 @@ python = "^3.10" python-libsbml = "^5.20.2" toml = "^0.10.2" rich = "^13.7.1" -pandas = ">=2.0,<=2.2.2" +pandas = ">=2.0.0" pydantic-xml = "^2.12.1" loguru = "^0.7.2" rdflib = "7.0.0" From 766ab6c2100758be5d085d0124b728810653512f Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Tue, 4 Mar 2025 12:54:55 +0100 Subject: [PATCH 082/172] Fix 313 enum variants (#73) * fixes python `3.13` enum variants * run tests for `3.13` as well * fix ruff issue * explicitly use `member` on 3.13 --- .github/workflows/unit-tests.yaml | 2 +- pyenzyme/sbml/serializer.py | 2 -- pyenzyme/units/units.py | 18 ++++++++++++++---- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/.github/workflows/unit-tests.yaml b/.github/workflows/unit-tests.yaml index 7cfb984d..7a5a729a 100644 --- a/.github/workflows/unit-tests.yaml +++ b/.github/workflows/unit-tests.yaml @@ -8,7 +8,7 @@ jobs: strategy: max-parallel: 4 matrix: - python-version: ["3.10", "3.11", "3.12"] + python-version: ['3.10', '3.11', '3.12', '3.13'] steps: - name: Checkout diff --git a/pyenzyme/sbml/serializer.py b/pyenzyme/sbml/serializer.py index 282a4332..617939ab 100644 --- a/pyenzyme/sbml/serializer.py +++ b/pyenzyme/sbml/serializer.py @@ -468,7 +468,6 @@ def _validate_sbml(sbmldoc: libsbml.SBMLDocument) -> None: """Validate the SBML document using the libSBML function.""" sbml_errors = sbmldoc.checkConsistency() - valid = True if sbml_errors and not print_warnings: logger.warning( @@ -479,7 +478,6 @@ def _validate_sbml(sbmldoc: libsbml.SBMLDocument) -> None: severity = sbmldoc.getError(error).getSeverity() if severity == libsbml.LIBSBML_SEV_ERROR: - valid = False logger.error( sbmldoc.getError(error).getMessage().strip().replace("\n", " ") ) diff --git a/pyenzyme/units/units.py b/pyenzyme/units/units.py index 51645a85..087122ec 100644 --- a/pyenzyme/units/units.py +++ b/pyenzyme/units/units.py @@ -1,6 +1,7 @@ from copy import deepcopy from enum import Enum from functools import partial +import sys from pydantic import model_validator @@ -49,10 +50,18 @@ def set_scale(unit: _BaseUnit, scale: int) -> _BaseUnit: class Prefix(Enum): """Enumeration for unit prefixes with corresponding scales.""" - k = partial(set_scale, scale=3.0) - m = partial(set_scale, scale=-3.0) - u = partial(set_scale, scale=-6.0) - n = partial(set_scale, scale=-9.0) + if sys.version_info >= (3, 13): + from enum import member + + k = member(partial(set_scale, scale=3)) + m = member(partial(set_scale, scale=-3)) + u = member(partial(set_scale, scale=-6)) + n = member(partial(set_scale, scale=-9)) + else: + k = partial(set_scale, scale=3) + m = partial(set_scale, scale=-3) + u = partial(set_scale, scale=-6) + n = partial(set_scale, scale=-9) def __mul__(self, other: _BaseUnit) -> _BaseUnit: """Multiply prefix with a BaseUnit. @@ -68,6 +77,7 @@ def __mul__(self, other: _BaseUnit) -> _BaseUnit: Raises: TypeError: If the other operand is not a BaseUnit. """ + print(self.value) if isinstance(other, _BaseUnit): return self.value(other) From 6d9a62beec81cc25dcd161118045b0303bc9d668 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Tue, 6 May 2025 13:32:06 +0200 Subject: [PATCH 083/172] update sbml integration --- pyenzyme/sbml/utils.py | 12 ++++++++++ pyenzyme/sbml/validation.py | 2 +- pyenzyme/sbml/versions/v1.py | 29 ++++++++++++++++------- pyenzyme/sbml/versions/v2.py | 46 ++++++++++++++++++++++++++++-------- 4 files changed, 69 insertions(+), 20 deletions(-) create mode 100644 pyenzyme/sbml/utils.py diff --git a/pyenzyme/sbml/utils.py b/pyenzyme/sbml/utils.py new file mode 100644 index 00000000..49b832ab --- /dev/null +++ b/pyenzyme/sbml/utils.py @@ -0,0 +1,12 @@ +import pyenzyme as pe + + +def _get_unit(unit_id: str, units: dict[str, pe.UnitDefinition]) -> str | None: + """ + Get the unit from an EnzymeML unit definition. + """ + + if unit_id not in units: + return None + + return units[unit_id].model_dump_json() diff --git a/pyenzyme/sbml/validation.py b/pyenzyme/sbml/validation.py index b651fc44..7df62781 100644 --- a/pyenzyme/sbml/validation.py +++ b/pyenzyme/sbml/validation.py @@ -1,6 +1,6 @@ from loguru import logger -import pyenzyme.model as pe +import pyenzyme as pe import pyenzyme.tools as tools diff --git a/pyenzyme/sbml/versions/v1.py b/pyenzyme/sbml/versions/v1.py index 9ed7c96d..7816ba28 100644 --- a/pyenzyme/sbml/versions/v1.py +++ b/pyenzyme/sbml/versions/v1.py @@ -5,6 +5,7 @@ from pydantic_xml import element, BaseXmlModel, attr, wrapped from pyenzyme import Measurement, UnitDefinition, DataTypes +from pyenzyme.sbml.utils import _get_unit from pyenzyme.sbml.versions.v2 import VariableAnnot @@ -53,6 +54,7 @@ class V1Annotation( class ParameterAnnot( BaseXmlModel, tag="parameter", + search_mode="unordered", nsmap={"": "https://www.enzymeml.org/v2"}, ): """ @@ -190,7 +192,7 @@ def to_measurements( for init_conc in meas_v1.init_concs: measurement.add_to_species_data( - data_unit=units[init_conc.unit], + data_unit=_get_unit(init_conc.unit, units), species_id=init_conc.species_id, initial=init_conc.value, data_type=DataTypes.CONCENTRATION, @@ -200,7 +202,12 @@ def to_measurements( file = next(f for f in self.files if f.id == meas_v1.file) file_format = next(f for f in self.formats if f.id == file.format) - self._map_columns(file_map[meas_v1.file], file_format, measurement, units) + self._map_columns( + file_map[meas_v1.file], + file_format, + measurement, + units, + ) for species_data in measurement.species_data: if not species_data.data: @@ -228,7 +235,7 @@ def _map_columns( """ for col in file_format.columns: - unit = units[col.unit] + unit = _get_unit(col.unit, units) values = df.iloc[:, col.index].values.tolist() if col.type == "time": @@ -257,11 +264,15 @@ def _map_species_values( assert len(species_data) == 1, f"Species data not found for {col.species_id}" species_data = species_data[0] - species_data.data_unit = unit + species_data.data_unit = unit # type: ignore species_data.data = values @staticmethod - def _map_time_values(measurement, unit, values): + def _map_time_values( + measurement: Measurement, + unit: str, + values: list[float], + ): """ Maps time values to the measurement. @@ -273,7 +284,7 @@ def _map_time_values(measurement, unit, values): # Map time to all species data for species_data in measurement.species_data: species_data.time = values - species_data.time_unit = unit + species_data.time_unit = unit # type: ignore class FormatAnnot( @@ -374,9 +385,9 @@ def species_id(self) -> str: Returns: str: The species ID. """ - assert bool(self.protein) != bool( - self.reactant - ), "Either protein or reactant must be set" + assert bool(self.protein) != bool(self.reactant), ( + "Either protein or reactant must be set" + ) return self.protein or self.reactant diff --git a/pyenzyme/sbml/versions/v2.py b/pyenzyme/sbml/versions/v2.py index db71ee15..e01c9129 100644 --- a/pyenzyme/sbml/versions/v2.py +++ b/pyenzyme/sbml/versions/v2.py @@ -8,8 +8,10 @@ import pandas as pd from pydantic import field_validator from pydantic_xml import element, attr, BaseXmlModel +import rich -from pyenzyme import UnitDefinition, DataTypes, Measurement +from pyenzyme import DataTypes, Measurement, UnitDefinition +from pyenzyme.sbml.utils import _get_unit class BaseAnnot(BaseXmlModel): @@ -192,12 +194,35 @@ def to_measurement( units: dict[str, UnitDefinition], ): df_sub = meas_data[meas_data.id == self.id] + + # Extract conditions data + ph = None + temperature = None + temperature_unit = None + + # Python ☕️ Love it... + if self.conditions: + if self.conditions.ph: + ph = self.conditions.ph.value + + if self.conditions.temperature: + temperature = self.conditions.temperature.value + if self.conditions.temperature.unit: + temperature_unit = _get_unit( + self.conditions.temperature.unit, units + ) + + if not self.name: + name = self.id + else: + name = self.name + measurement = Measurement( id=self.id, - name=self.name, - temperature=self.conditions.temperature.value, - temperature_unit=units.get(self.conditions.temperature.unit), - ph=self.conditions.ph.value, + name=name, + temperature=temperature, + temperature_unit=temperature_unit, + ph=ph, ) if df_sub.empty: @@ -219,13 +244,14 @@ def _map_species_data( data = df_sub[species.species_id].to_list() time = df_sub["time"].to_list() else: - data, time = None, None + data, time = [], [] + measurement.add_to_species_data( data=data, time=time, species_id=species.species_id, - data_unit=units[species.unit], - time_unit=units[self.time_unit], + data_unit=_get_unit(species.unit, units), + time_unit=_get_unit(self.time_unit, units), initial=species.initial, data_type=self._map_data_type(species.type), ) @@ -327,8 +353,8 @@ class ParameterAnnot( stderr (float | None): The standard deviation of the parameter. """ - lower: float | None = element(tag="lowerBound", default=None) - upper: float | None = element(tag="upperBound", default=None) + lower_bound: float | None = element(tag="lowerBound", default=None) + upper_bound: float | None = element(tag="upperBound", default=None) stderr: float | None = element(tag="stdDeviation", default=None) From 350f11d3d3bd9111a6284352dcda4285a8ae9dab Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Tue, 6 May 2025 13:32:15 +0200 Subject: [PATCH 084/172] update sbml integration --- pyenzyme/sbml/parser.py | 30 +++++++++++++++++------------- pyenzyme/sbml/serializer.py | 24 ++++++++---------------- 2 files changed, 25 insertions(+), 29 deletions(-) diff --git a/pyenzyme/sbml/parser.py b/pyenzyme/sbml/parser.py index 2a18e1f5..63726405 100644 --- a/pyenzyme/sbml/parser.py +++ b/pyenzyme/sbml/parser.py @@ -7,14 +7,18 @@ import libsbml as sbml # type: ignore import pandas as pd -from loguru import logger # type: ignore +from loguru import logger +import rich # type: ignore import pyenzyme as pe + from pyenzyme import xmlutils from pyenzyme.logging import add_logger + from . import read_sbml_omex from .ldutils import parse_sbml_rdf_annotation from .versions.handler import VersionHandler, SupportedVersions +from .utils import _get_unit def read_sbml(cls, path: Path | str): @@ -64,7 +68,9 @@ def read_sbml(cls, path: Path | str): enzmldoc.vessels = [_parse_vessel(comp) for comp in model.getListOfCompartments()] # Extract equations and parameters - enzmldoc.parameters = [_parse_parameter(param) for param in model.getListOfParameters()] # type: ignore + enzmldoc.parameters = [ + _parse_parameter(param) for param in model.getListOfParameters() + ] # type: ignore enzmldoc.equations += [ _parse_equation(rule, pe.EquationType.INITIAL_ASSIGNMENT) for rule in model.getListOfInitialAssignments() @@ -128,20 +134,16 @@ def _parse_unit(unit: sbml.UnitDefinition): An EnzymeML unit definition. """ enzml_unit = pe.UnitDefinition( - id=unit.getId(), + id=unit.getName(), name=unit.getName(), ) - parse_sbml_rdf_annotation(unit, enzml_unit) - for base_unit in unit.getListOfUnits(): multiplier = base_unit.getMultiplier() kind = sbml.UnitKind_toString(base_unit.getKind()) if math.isnan(multiplier): multiplier = None - elif multiplier == 1.0: - multiplier = None enzml_unit.add_to_base_units( kind=kind, @@ -261,14 +263,14 @@ def _parse_vessel(compartment: sbml.Compartment): Args: compartment (sbml.Compartment): The SBML compartment. - Returns: - An EnzymeML vessel. + Ret + print(units[compartment.getUnits()]) """ vessel = pe.Vessel( id=compartment.getId(), name=compartment.getName(), - volume=_check_nan(compartment.getSize()), - unit=units[compartment.getUnits()], # type: ignore + volume=_check_nan(compartment.getSize()), # type: ignore + unit=_get_unit(compartment.getUnits(), units), # type: ignore ) parse_sbml_rdf_annotation(compartment, vessel) @@ -286,6 +288,7 @@ def _parse_parameter(parameter: sbml.Parameter): Returns: An EnzymeML parameter. """ + print("PARAMETER", parameter.getAnnotationString()) parsed = version.parse_annotation(annotation=parameter.getAnnotationString()) annots = version.extract(parsed, "parameter") @@ -295,7 +298,7 @@ def _parse_parameter(parameter: sbml.Parameter): symbol=parameter.getId(), value=_check_nan(parameter.getValue()), constant=parameter.getConstant(), - unit=units.get(parameter.getUnits()), # type: ignore + unit=_get_unit(parameter.getUnits(), units), # type: ignore **annots, ) @@ -325,7 +328,7 @@ def _parse_equation(rule: sbml.Rule, rule_type: pe.EquationType): species_id = rule.getVariable() case pe.EquationType.RATE_LAW: equation = rule.getFormula() - species_id = None + species_id = "v" case _: raise ValueError(f"Unknown rule type: {rule_type}") @@ -442,6 +445,7 @@ def _parse_measurements( Raises: ValueError: If the version is unknown. """ + match version.version: case SupportedVersions.VERSION1: parsed = version.parse_annotation(list_of_reactions.getAnnotationString()) diff --git a/pyenzyme/sbml/serializer.py b/pyenzyme/sbml/serializer.py index 617939ab..fab41d40 100644 --- a/pyenzyme/sbml/serializer.py +++ b/pyenzyme/sbml/serializer.py @@ -1,5 +1,6 @@ from __future__ import annotations +from copy import deepcopy import xml.etree.ElementTree as ET from pathlib import Path from typing import Callable, List @@ -8,7 +9,7 @@ import pandas as pd from loguru import logger -import pyenzyme.model as pe +import pyenzyme as pe import pyenzyme.tools as tools from pyenzyme import rdf from pyenzyme import xmlutils as _xml @@ -17,7 +18,6 @@ from pyenzyme.sbml.validation import validate_sbml_export from pyenzyme.sbml.versions import v2 from pyenzyme.tabular import to_pandas -from pyenzyme.tools import to_dict_wo_json_ld from pyenzyme.units.units import UnitDefinition MAPPINGS = tools.read_static_file("pyenzyme.sbml", "mappings.toml") @@ -64,7 +64,7 @@ def to_sbml( global model global doc - doc = enzmldoc + doc = deepcopy(enzmldoc) sbmldoc = libsbml.SBMLDocument() model = sbmldoc.createModel() model.setName(doc.name) @@ -130,7 +130,6 @@ def _add_unit_definitions(unit: UnitDefinition): sbml_unitdef.setId(unit.id) sbml_unitdef.setName(unit.name) - sbml_unitdef.setAnnotation(rdf.to_rdf_xml(unit)) for base_unit in unit.base_units: sbml_unit = sbml_unitdef.createUnit() @@ -333,8 +332,8 @@ def _add_parameter(parameter: pe.Parameter): sbml_param.setUnits(_get_unit_id(parameter.unit)) annot = v2.ParameterAnnot( - lower=parameter.lower, - upper=parameter.upper, + lower_bound=parameter.lower_bound, + upper_bound=parameter.upper_bound, stderr=parameter.stderr, ) @@ -455,13 +454,7 @@ def _get_unit_id(unit: pe.UnitDefinition | None) -> str | None: def _same_unit(unit1: pe.UnitDefinition, unit2: pe.UnitDefinition) -> bool: """Check if two units are the same.""" - unit1 = to_dict_wo_json_ld(unit1) - unit2 = to_dict_wo_json_ld(unit2) - - del unit1["id"] - del unit2["id"] - - return unit1 == unit2 + return unit1.model_dump(exclude={"id"}) == unit2.model_dump(exclude={"id"}) def _validate_sbml(sbmldoc: libsbml.SBMLDocument) -> None: @@ -495,9 +488,8 @@ def _assign_ids_to_units(doc_units: List[UnitDefinition]) -> List[UnitDefinition if any(_same_unit(unit, u) for u in unique_units): continue - if unit.id is None: - new_id = next(_id_generator(ids)) - unit.id = new_id + new_id = next(_id_generator(ids)) + unit.id = new_id unique_units.append(unit) From 0c8698a7af11e9fc29d73624f958ac4a8a8e059c Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Tue, 6 May 2025 13:32:41 +0200 Subject: [PATCH 085/172] update tests --- tests/fixtures/sbml/ode_example_enzml.json | 528 +-- tests/fixtures/sbml/odes_example.omex | Bin 2452 -> 2408 bytes tests/fixtures/sbml/v1_example_enzml.json | 2997 ++++------------- tests/fixtures/tabular/measurement_valid.json | 10 +- tests/integration/test_sbml.py | 47 +- tests/unit/test_equations.py | 110 +- tests/unit/test_sbml_annot_v1.py | 21 +- tests/unit/test_sbml_annot_v2.py | 34 +- tests/unit/test_tabular.py | 120 +- 9 files changed, 927 insertions(+), 2940 deletions(-) diff --git a/tests/fixtures/sbml/ode_example_enzml.json b/tests/fixtures/sbml/ode_example_enzml.json index 05a5ec9e..5c242e1c 100644 --- a/tests/fixtures/sbml/ode_example_enzml.json +++ b/tests/fixtures/sbml/ode_example_enzml.json @@ -1,30 +1,29 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "name": "schema:title", + "created": "schema:dateCreated", + "modified": "schema:dateModified", + "creators": "schema:creator", "references": { "@id": "schema:citation", "@type": "@id" - }, - "created": "schema:dateCreated", - "modified": "schema:dateModified", - "creators": "schema:creator" + } }, - "@id": "enzml:EnzymeMLDocument/c051b03b-83c2-4671-ac9b-87f0dea9137a", + "@id": "enzml:EnzymeMLDocument/1a704a60-950e-4fd8-9f5a-ef0a9d8c28b6", "@type": [ "enzml:EnzymeMLDocument" ], "name": "Test", - "references": [], "creators": [], "vessels": [ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": { "@id": "schema:identifier", "@type": "@id" @@ -32,7 +31,7 @@ "name": "schema:name", "volume": "OBO:OBI_0002139" }, - "@id": "enzml:Vessel/a8c3e187-b735-49df-b76a-684916d91c25", + "@id": "enzml:Vessel/03ec3ab7-6220-4bfb-924f-05e4a4eae821", "@type": [ "enzml:Vessel", "OBO:OBI_0400081" @@ -41,30 +40,13 @@ "name": "Vessel 1", "volume": 10.0, "unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "OBO:UO_0000098", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u0", + "id": "u5", "name": "ml", "base_units": [ { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "enzml:BaseUnit/ad727ef5-a949-4b31-b73a-db00c5804be7", - "@type": [ - "enzml:BaseUnit" - ], "kind": "litre", "exponent": 1, + "multiplier": 1.0, "scale": -3.0 } ] @@ -76,9 +58,10 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": { + "@id": "schema:identifier", "@type": "@id" }, "name": "schema:name", @@ -96,14 +79,14 @@ "@type": "@id" } }, - "@id": "enzml:Protein/e4d6270e-788f-4773-b507-1f85396fa674", + "@id": "enzml:Protein/f753a055-ecc5-4de8-bf37-2950f8c8c777", "@type": [ "enzml:Protein", "schema:Protein" ], "id": "p0", "name": "Enzyme", - "constant": false, + "constant": true, "sequence": "MTEY", "vessel_id": "v0", "ecnumber": "1.1.1.1", @@ -116,8 +99,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": { "@id": "schema:identifier", "@type": "@id" @@ -131,7 +114,7 @@ "@type": "@id" } }, - "@id": "enzml:Complex/be1a42ec-01ea-4f63-b557-1fde75f57ef7", + "@id": "enzml:Complex/03d6a454-f53e-4c0b-9b3a-37e72a2c28a4", "@type": [ "enzml:Complex" ], @@ -149,8 +132,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": { "@id": "schema:identifier", "@type": "@id" @@ -165,7 +148,7 @@ "@type": "@id" } }, - "@id": "enzml:SmallMolecule/8162f8a5-884e-40b5-9a2a-7f04ace5c21e", + "@id": "enzml:SmallMolecule/65b0cb5d-795b-4f59-98dc-cbd9c079af58", "@type": [ "enzml:SmallMolecule" ], @@ -180,8 +163,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": { "@id": "schema:identifier", "@type": "@id" @@ -196,7 +179,7 @@ "@type": "@id" } }, - "@id": "enzml:SmallMolecule/fe089160-e9c5-4862-ba88-1a437f29134f", + "@id": "enzml:SmallMolecule/e4983101-4406-4fd3-bad7-c6b38c4c4ee4", "@type": [ "enzml:SmallMolecule" ], @@ -214,8 +197,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": { "@id": "schema:identifier", "@type": "@id" @@ -224,7 +207,7 @@ "@type": "@id" } }, - "@id": "enzml:Measurement/7766fd7f-cd7d-4ff1-8e83-9527cb45a005", + "@id": "enzml:Measurement/1fc5042e-31a3-41a7-b1c4-b97749385d44", "@type": [ "enzml:Measurement" ], @@ -234,62 +217,37 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "species_id": { "@type": "@id" } }, - "@id": "enzml:MeasurementData/b55b4581-9600-425e-b315-19a28e782a26", + "@id": "enzml:MeasurementData/586efe41-251a-4ee8-9d2d-c1700882bf76", "@type": [ "enzml:MeasurementData" ], "species_id": "s0", "initial": 0.0, "data_unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "OBO:UO_0000063", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u2", + "id": "u6", "name": "mmol / l", "base_units": [ { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "enzml:BaseUnit/41bc70c0-6cd0-49d3-a659-f195b6d8bdf9", - "@type": [ - "enzml:BaseUnit" - ], "kind": "mole", "exponent": 1, + "multiplier": 1.0, "scale": -3.0 }, { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "enzml:BaseUnit/61182f56-73ee-47cd-ac22-4ce7ad6da66a", - "@type": [ - "enzml:BaseUnit" - ], "kind": "litre", "exponent": -1, - "scale": 1.0 + "multiplier": 1.0, + "scale": 0.0 } ] }, - "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "data_type": "concentration", "data": [ 0.0, 1.0, @@ -317,31 +275,14 @@ 10.0 ], "time_unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "OBO:UO_0000010", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u1", + "id": "u7", "name": "s", "base_units": [ { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "enzml:BaseUnit/e9698180-23e9-4660-adcc-38dbf74c0ad5", - "@type": [ - "enzml:BaseUnit" - ], "kind": "second", "exponent": 1, - "scale": 1.0 + "multiplier": 1.0, + "scale": 0.0 } ] }, @@ -350,62 +291,37 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "species_id": { "@type": "@id" } }, - "@id": "enzml:MeasurementData/715d7d38-843b-42f8-82b7-4a8d086a4fd2", + "@id": "enzml:MeasurementData/b9313730-e1a5-42b3-b7d3-f2b8fb3cfe15", "@type": [ "enzml:MeasurementData" ], "species_id": "s1", "initial": 10.0, "data_unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "OBO:UO_0000063", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u2", + "id": "mmol / l", "name": "mmol / l", "base_units": [ { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "enzml:BaseUnit/41bc70c0-6cd0-49d3-a659-f195b6d8bdf9", - "@type": [ - "enzml:BaseUnit" - ], "kind": "mole", "exponent": 1, + "multiplier": 1.0, "scale": -3.0 }, { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "enzml:BaseUnit/61182f56-73ee-47cd-ac22-4ce7ad6da66a", - "@type": [ - "enzml:BaseUnit" - ], "kind": "litre", "exponent": -1, - "scale": 1.0 + "multiplier": 1.0, + "scale": 0.0 } ] }, - "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "data_type": "concentration", "data": [ 10.0, 9.0, @@ -433,31 +349,14 @@ 10.0 ], "time_unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "OBO:UO_0000010", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u1", + "id": "s", "name": "s", "base_units": [ { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "enzml:BaseUnit/e9698180-23e9-4660-adcc-38dbf74c0ad5", - "@type": [ - "enzml:BaseUnit" - ], "kind": "second", "exponent": 1, - "scale": 1.0 + "multiplier": 1.0, + "scale": 0.0 } ] }, @@ -467,31 +366,14 @@ "ph": 7.0, "temperature": 298.15, "temperature_unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "OBO:UO_0000012", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u3", + "id": "u8", "name": "K", "base_units": [ { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "enzml:BaseUnit/d593a318-0adf-4c28-b768-a60643e77209", - "@type": [ - "enzml:BaseUnit" - ], "kind": "kelvin", "exponent": 1, - "scale": 1.0 + "multiplier": 1.0, + "scale": 0.0 } ] } @@ -499,8 +381,8 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": { "@id": "schema:identifier", "@type": "@id" @@ -509,7 +391,7 @@ "@type": "@id" } }, - "@id": "enzml:Measurement/a5492722-fe9e-42e4-b870-cfa625e58efc", + "@id": "enzml:Measurement/b2e83434-8f96-4d83-b7b0-9024b20b6680", "@type": [ "enzml:Measurement" ], @@ -519,62 +401,37 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "species_id": { "@type": "@id" } }, - "@id": "enzml:MeasurementData/edd44ccc-1c8d-483b-a731-c9bf71c16fd0", + "@id": "enzml:MeasurementData/2a05f1b5-9848-4aaf-a26d-a135b27ff1a5", "@type": [ "enzml:MeasurementData" ], "species_id": "s0", "initial": 0.0, "data_unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "OBO:UO_0000063", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u2", + "id": "mmol / l", "name": "mmol / l", "base_units": [ { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "enzml:BaseUnit/41bc70c0-6cd0-49d3-a659-f195b6d8bdf9", - "@type": [ - "enzml:BaseUnit" - ], "kind": "mole", "exponent": 1, + "multiplier": 1.0, "scale": -3.0 }, { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "enzml:BaseUnit/61182f56-73ee-47cd-ac22-4ce7ad6da66a", - "@type": [ - "enzml:BaseUnit" - ], "kind": "litre", "exponent": -1, - "scale": 1.0 + "multiplier": 1.0, + "scale": 0.0 } ] }, - "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "data_type": "concentration", "data": [ 0.0, 1.0, @@ -602,31 +459,14 @@ 10.0 ], "time_unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "OBO:UO_0000010", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u1", + "id": "s", "name": "s", "base_units": [ { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "enzml:BaseUnit/e9698180-23e9-4660-adcc-38dbf74c0ad5", - "@type": [ - "enzml:BaseUnit" - ], "kind": "second", "exponent": 1, - "scale": 1.0 + "multiplier": 1.0, + "scale": 0.0 } ] }, @@ -635,62 +475,37 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "species_id": { "@type": "@id" } }, - "@id": "enzml:MeasurementData/350a22b8-dfad-43d8-b222-ce66d399e683", + "@id": "enzml:MeasurementData/f2a87dc9-b0f9-4f22-a397-e794907c9111", "@type": [ "enzml:MeasurementData" ], "species_id": "s1", "initial": 10.0, "data_unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "OBO:UO_0000063", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u2", + "id": "mmol / l", "name": "mmol / l", "base_units": [ { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "enzml:BaseUnit/41bc70c0-6cd0-49d3-a659-f195b6d8bdf9", - "@type": [ - "enzml:BaseUnit" - ], "kind": "mole", "exponent": 1, + "multiplier": 1.0, "scale": -3.0 }, { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "enzml:BaseUnit/61182f56-73ee-47cd-ac22-4ce7ad6da66a", - "@type": [ - "enzml:BaseUnit" - ], "kind": "litre", "exponent": -1, - "scale": 1.0 + "multiplier": 1.0, + "scale": 0.0 } ] }, - "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "data_type": "concentration", "data": [ 10.0, 9.0, @@ -718,31 +533,14 @@ 10.0 ], "time_unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "OBO:UO_0000010", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u1", + "id": "s", "name": "s", "base_units": [ { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "enzml:BaseUnit/e9698180-23e9-4660-adcc-38dbf74c0ad5", - "@type": [ - "enzml:BaseUnit" - ], "kind": "second", "exponent": 1, - "scale": 1.0 + "multiplier": 1.0, + "scale": 0.0 } ] }, @@ -752,31 +550,14 @@ "ph": 7.0, "temperature": 298.15, "temperature_unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "OBO:UO_0000012", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u3", + "id": "K", "name": "K", "base_units": [ { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "enzml:BaseUnit/d593a318-0adf-4c28-b768-a60643e77209", - "@type": [ - "enzml:BaseUnit" - ], "kind": "kelvin", "exponent": 1, - "scale": 1.0 + "multiplier": 1.0, + "scale": 0.0 } ] } @@ -786,28 +567,32 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "species_id": { + "@id": "schema:identifier", "@type": "@id" } }, - "@id": "enzml:Equation/99d3756a-898a-4d1f-9da8-0ddf4a78ef19", + "@id": "enzml:Equation/de44fa4e-50a9-4aaf-949a-fb15d19c9e2d", "@type": [ "enzml:Equation" ], + "species_id": "s1", "equation": "E_tot*kcat*s0/(K_m + s0)", "equation_type": "ode", - "species_id": "s1", "variables": [ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", - "id": "schema:identifier" + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } }, - "@id": "enzml:Variable/2104c1ec-afc6-45c8-be1a-3e384b925cc6", + "@id": "enzml:Variable/4a0e8a1e-2ae5-4ee8-a27c-dccd11c24bcb", "@type": [ "enzml:Variable" ], @@ -820,19 +605,20 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "species_id": { + "@id": "schema:identifier", "@type": "@id" } }, - "@id": "enzml:Equation/9674a3b0-0f65-4617-abe0-db1dc1ad0a28", + "@id": "enzml:Equation/bce4cafa-852c-4676-b1c3-e8656308ed64", "@type": [ "enzml:Equation" ], + "species_id": "E_tot", "equation": "100", "equation_type": "initialAssignment", - "species_id": "E_tot", "variables": [] } ], @@ -840,130 +626,88 @@ { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": { "@id": "schema:identifier", "@type": "@id" } }, - "@id": "enzml:Parameter/b53a61b4-dc01-4756-b196-de11ca49f32e", + "@id": "enzml:Parameter/d97938ad-293f-49b9-b663-491f9766b54a", "@type": [ "enzml:Parameter" ], - "id": "kcat", - "name": "kcat", - "symbol": "kcat", + "id": "K_m", + "name": "K_m", + "symbol": "K_m", "unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "OBO:UO_0000010", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u4", - "name": "1 / s", + "id": "mmol / l", + "name": "mmol / l", "base_units": [ { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "enzml:BaseUnit/e9698180-23e9-4660-adcc-38dbf74c0ad5", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "second", + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", "exponent": -1, - "scale": 1.0 + "multiplier": 1.0, + "scale": 0.0 } ] }, - "upper": 100.0, - "lower": 0.0, + "upper_bound": 100.0, + "lower_bound": 0.0, "stderr": 0.1, "constant": true }, { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": { "@id": "schema:identifier", "@type": "@id" } }, - "@id": "enzml:Parameter/262c575a-86af-4a68-afae-86d0a2487449", + "@id": "enzml:Parameter/cc63207e-37d7-49d8-a2f9-c1e91106ce61", "@type": [ "enzml:Parameter" ], - "id": "K_m", - "name": "K_m", - "symbol": "K_m", + "id": "kcat", + "name": "kcat", + "symbol": "kcat", "unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "OBO:UO_0000063", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u2", - "name": "mmol / l", + "id": "u9", + "name": "1 / s", "base_units": [ { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "enzml:BaseUnit/41bc70c0-6cd0-49d3-a659-f195b6d8bdf9", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "mole", - "exponent": 1, - "scale": -3.0 - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "enzml:BaseUnit/61182f56-73ee-47cd-ac22-4ce7ad6da66a", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "litre", + "kind": "second", "exponent": -1, - "scale": 1.0 + "multiplier": 1.0, + "scale": 0.0 } ] }, - "upper": 100.0, - "lower": 0.0, + "upper_bound": 100.0, + "lower_bound": 0.0, "stderr": 0.1, "constant": true }, { "@context": { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": { "@id": "schema:identifier", "@type": "@id" } }, - "@id": "enzml:Parameter/288ed9be-7df3-462f-84c1-bbbcc437d7a7", + "@id": "enzml:Parameter/01ffd21c-0efd-489a-9a4f-ff205c10cf20", "@type": [ "enzml:Parameter" ], @@ -971,52 +715,28 @@ "name": "E_tot", "symbol": "E_tot", "unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "OBO:UO_0000063", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u2", + "id": "mmol / l", "name": "mmol / l", "base_units": [ { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "enzml:BaseUnit/41bc70c0-6cd0-49d3-a659-f195b6d8bdf9", - "@type": [ - "enzml:BaseUnit" - ], "kind": "mole", "exponent": 1, + "multiplier": 1.0, "scale": -3.0 }, { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/" - }, - "@id": "enzml:BaseUnit/61182f56-73ee-47cd-ac22-4ce7ad6da66a", - "@type": [ - "enzml:BaseUnit" - ], "kind": "litre", "exponent": -1, - "scale": 1.0 + "multiplier": 1.0, + "scale": 0.0 } ] }, - "upper": 100.0, - "lower": 0.0, + "upper_bound": 100.0, + "lower_bound": 0.0, "stderr": 0.1, "constant": true } - ] + ], + "references": [] } \ No newline at end of file diff --git a/tests/fixtures/sbml/odes_example.omex b/tests/fixtures/sbml/odes_example.omex index 22e08a3380cd065bc53dccec35a2cc6a0d3682d0..54038fcd1b920d403c56dca7f5a1532c887f65d7 100644 GIT binary patch delta 1943 zcmV;I2Wa?|6X+5SP)h>@6aWAK2ml(^k0001O zZ)9a`E_iKh?OIuH+c*$@&#w^Fm)!?O_Z8SKa_$yw>b7=^_NkyKsv)XtMafC}>vyQj zlI+~cwp#=N9BDWl&h^cZk|r-N;z(N2oU=5U%G$0fOEe*Az>;rM`Q!2gx$?`|&V>8G z2CRPxpUP)Nk?kqU`T6;-An&I6H$_}15na*9P#S5vLeiYdQbnE0hP+-zmuEYYG>OxI zMpA-fI+d4{7r>E5WlTRNtblb&t6~F2oFr+13z%CIfE3^Y_Z8xeMl|_x8Pi6ql`cym zi$MIYA|~t>d?mLcgaQ=vGN&<33W)_%IR=00Yjwm`!D>}N6Q?%|=8-fBm{5oJ$uN+e zNh=(cAix1nDx=YY#u?3V0ZX=Qy65g{mMoR^I__}JMA^R5glCj6%8!H-n(L{|LFY!S zD&kmNW^j2pe|vcRcKKm{`D*^QTgVlPZ7d z8w@F95KSV+i+LyZ)szpD5?hzJ;n8locEuLHSNZgXdMZ=j=yS$LfMr_j3s>Qs4`e@E7eoPR?kI*Sm`PzM3nK`ioHRh;ov%tjYy(kNvbP1`Ch2Buec# zMKvffu43TP46PpxMSJy@hioQ{4vnN6@Ya=jG`qc3Z@EQ2+)mK$j zbNH7M08wL0bAy0cWBiO_Y(ajm3m;A-Gy4r#vllLT}-X zaqGTO)K$^1lrup+SKHVQD5H1{JAadDeRyrzcPc$V4576Np9WWpy1jQInszU7KV8y1 zp2`bwswzBc!G2YMEbBmaTzO02rW0Ocke9vy5@|Qfb(=cFe4a#?i_w2zh$9Z8keNvU z&N^)OINiuIEOq5wo)(lPO6XVyRxJxrLM&tk)J1-1I7s&_HFSwf9LKpHmvzu?M&)0N z#T=02=(avPT^@g_;nk;JiDgZsi#h#i7{d*OG2? z;2W()Nm9l>&1c$f^*4V}I?9j{rsIV1xbta8*v_}a7q5burW>ZU=B1Hv`D z{2Jc6ErUXj2O!g_0mM51b>Z29m}*0fBS?M%v>ev}ctR-Egx>~Bix@}IDfotz5mju< zSBY;0$nh*6nW5z&&kYD7e&7++@o;Fl*CVQn)nh|wpy(q2iTCB*15PX0H|qmO@|oSf{>zby9A+lkU~japO8A^^kT;UClapL1|keLqlopx_h0 zt9t?nyM>@6#jU}mJ)`S>=%S|Q8k(vh(^PFhS70C?2M!{(Z@9!HCZ#v@t0q*>*!pSM zY7d=*vt@JMe1~(0M?v#74zre2Vea+UxO>DVF5Blb_J4oBS9_e3TWg&Xc#dbdIDo^N z5hBy`J>=WA0ase+IkxRvCYB%Lbkwf+7-yRhVnPe#ls6Svvqn zM8Vplj1sp9j_8Wjp;pC-X+RksTUy<3O5P2|QA&O%xM*{-zHXD!``;%eA-18b4ut~& zR9VvtT!er1&_hI{o~Efbp|bni+Nm}ZTY@q zos+I|3M|#n>6_8Z`J{PI&60wCgE-G5@S8Z351xN#i6z!XZs;~N_A09yqd%0rz0^dU z^8`g&;hbS#yf)+7E%4Z~^Lu1dJ9qSqKwPy>=IZ$4f^NaTXvoi^?nXf^F=>*WDnEbGFU1 zVX7W>xd`mygQnTer1~6cw(~DgO9KQH00008035YsT9Z)-k^~&JWLlHw2sREJwPacn zXTllf1^@tEC6g-&DL@>xWLg6HMYL`J003SA000O80000000000005+c7YG0VWMOn+ dE_8EtP)h{{000000{{a6rvLx|s|Wx90015TmfipW delta 1966 zcmV;f2T}Ow5|k4TP)h>@6aWAK2mqp9C|R)%2LXSgUMN}X^BQCk2LJ&0D*ylq0001O zZ)9a`E_iKh?OIuL)Ho1+=U2GQ%kG0>%eSeS*$O#!DG0ML0|if%EXzcNueIz+vcG;? zzGm#1oCFALNEKzbTdh|2_qEg>PyRShVr9h&!LxL#;yqneSW2^yr=O?lyX7(R)IVlV zCL(_THBe2(R6Q-r{F$bmot^DT@m^MZ*5rj2vlWX?t+i%oG%J{@)Y7SHs_SVCb@oJ2 zCP@~uSV>93rs|T35;U^7O4z%UmoQJI*J_|h(ljec31b@ph(c15O@~D55ljEQNLcID z%21Vv$6$U>lLPiju~It|(g8+9Rj`DmrNV#1shYs*8+YVY$s1R|6TC4B#?dSdxpYTt zis3@!Gkk9k+p1DE^O(ai6K(fQ6Ol8@nK+a|Xs@TL z0H0g4y3AvFk;CP|{Pn@n>*d@1<%{|2ej;Nu(QbpdH;8X%aiVR6_Nsv6KH&H<;P-zW z@JS8&mP6W@M3b0{avsTmAF_z2!&OhJfxOOEwWdeBNuzCg*5V?Jp1nOhZdm#Z?gpjf z%&aMjec#t~Lo*Bn8c1BEB{@f_c&d(aDXkqcK?|PO4#|5GWL4Q)&8q@vA7n8P3Q}Cu z=HXU*H~*x|f4(=e*;neh$&qhGa8uyMnionjs8jQj{+| zg=ECMl+~4;=UECl2gIm~phOls1hqD);*#evXN7z+K*|o|6K$C8D^XzdC`htc(UhMN z3y%3KVFB`R7bsimTXUNyM?Jz-OI>m1rTd5|SJDN1>^U0b7TVGW*De>#27gn-6U zx|+kPNqh*6MJiiQQTL&O|68B1o1=8oX)3T%Q4+bvvZ&atp*Md%zc!`nU18de6ZDiN zWZmyJ_x0G@BY8)&tTlnth(~`-hCLSru4yC72WJA;A;|G8A3LFssbO!!yz%ClOu?+n zz(m`Wjz>VuAZ{-t&JAq(wUe@AX}X^602#n9?Ze5dMQ!tGm{kFsduFm#nrI_qw`Aev z(HOJu&V;U=v%ozMe+x#-*0m?ZkXqaHX?eA18qeND+lVS6$d;@~rs{tJf+|apVZ)(c zk}U5@c2q}8@}@W5a8Oi%Boggj<1~lUQzGVRe6bikj7TitDIhZqAy@}p_uW5P)3Oo# zFM0WQk(G?68nZ&jaCL@U&x?@dx+V&2-9yw5f|N{=6)R@v-?6&fY14nO1*46h7BGKIEQ3*`V@8k_IkI5b zvS5VFwIkbQk$aPZv7MT$OUUg>-DUji2}v7EcOaxh8mBxba-YoMOfe8#p)0P?ZT4kw z=>7;~xeb9tPoO?MI~Y@+s7VaqrywgxLx2ajQ9oENEfNyPClDK2#Z2?CV?-XYk>^~b-#hQnCC#pI3g_5#kU31;NqOrdJY3+V`w{Cq}V4K9jfrUbJ& zkga%=YF&T!OasZVap`=&4!&E8BT&Bll=MGN$jc6r#!nAPXymEw+5~wHiI7Dc50Qv4 zxD9n;Se|QH{v#wGAS91Im04dX+nZkqmY&B#KVZlWBNJJ0;zpiDF$#i!QaA~OE^!}W z`Qu^PZS~`Az1{6!G>7ATA^7KX_~Q*9KT^a+5@dgI2jJ9z(`d+7JY-`6?$DGU^znp= z?e|K)l+TnJH!`z)=VN)8y!@%qcRYjj?{IgwV|iR%;uoA4zJA^<(HOHG&W2F!u?Xt& zTie-_N&Thn?8$#nO9KQH000080HR(fS(7CQk_4h&C|Q%c2sRF)UMN}X^BQCk2LJ&0 zE0g~SDFmWkC|Q#%2^u0p2mk Date: Tue, 6 May 2025 13:32:48 +0200 Subject: [PATCH 086/172] add mdmodels dep --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 5d5fa0c6..a9da80ae 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,6 +19,7 @@ rdflib = "7.0.0" sympy = "^1.12.1" pymetadata = "^0.4.4" httpx = ">=0.27" +mdmodels = "^0.2.0" [tool.poetry.group.neo4j.dependencies] neo4j = "^5.21.0" From 496e7d4242ca7d2db15dd6b716062caf4b6dc95b Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Tue, 6 May 2025 13:33:28 +0200 Subject: [PATCH 087/172] adapt to mdmodels unit def --- pyenzyme/__init__.py | 4 +- pyenzyme/equations/_math.py | 16 +- pyenzyme/tabular.py | 49 +- pyenzyme/units/units.py | 1 - pyenzyme/versions/__init__.py | 0 pyenzyme/versions/v2.py | 1948 +++++++++++++++++++++++++++++++++ 6 files changed, 1987 insertions(+), 31 deletions(-) create mode 100644 pyenzyme/versions/__init__.py create mode 100644 pyenzyme/versions/v2.py diff --git a/pyenzyme/__init__.py b/pyenzyme/__init__.py index 6396014a..4576eb37 100644 --- a/pyenzyme/__init__.py +++ b/pyenzyme/__init__.py @@ -5,7 +5,9 @@ from rich import print -from .model import * # noqa: F403 +from mdmodels.units.unit_definition import UnitDefinition # noqa: F401 + +from .versions.v2 import * # noqa: F403 from .sbml import to_sbml, read_sbml # noqa: F401 from .suite import EnzymeMLSuite # noqa: F401 from .tabular import to_pandas, read_csv, read_excel, from_dataframe # noqa: F401 diff --git a/pyenzyme/equations/_math.py b/pyenzyme/equations/_math.py index 5108368a..03db9fa8 100644 --- a/pyenzyme/equations/_math.py +++ b/pyenzyme/equations/_math.py @@ -5,11 +5,11 @@ from sympy import sympify from pyenzyme.logging import add_logger -from pyenzyme.model import ( +from mdmodels.units.unit_definition import UnitDefinition +from pyenzyme.versions.v2 import ( EnzymeMLDocument, Equation, EquationType, - UnitDefinition, Variable, Parameter, ) @@ -24,7 +24,7 @@ def build_equations( *equations: str, - unit_mapping: dict[str, UnitDefinition] | None = None, + unit_mapping: dict[str, str] | None = None, enzmldoc: EnzymeMLDocument, ) -> list[Equation]: """Builds a list of Equation objects from a list of string representations. @@ -59,7 +59,7 @@ def build_equations( def build_equation( equation: str, enzmldoc: EnzymeMLDocument, - unit_mapping: dict[str, UnitDefinition] | None = None, + unit_mapping: dict[str, str] | None = None, ) -> Equation: """Builds an equation object from a string @@ -118,7 +118,7 @@ def build_equation( parameters = parameters.union({left}) eq = Equation( - species_id=left if left else None, + species_id=left, equation=str(right), variables=[_create_variable(name) for name in variables], equation_type=equation_type, @@ -128,7 +128,7 @@ def build_equation( _add_to_parameters( enzmldoc, param, - unit_mapping.get(param), + unit_mapping.get(param, None), ) for param in parameters ] @@ -172,7 +172,7 @@ def _create_variable(name: str) -> Variable: def _add_to_parameters( enzmldoc: EnzymeMLDocument, name: str, - unit: UnitDefinition, + unit: str | UnitDefinition | None, ): """Adds a parameter to the EnzymeMLDocument""" @@ -186,5 +186,5 @@ def _add_to_parameters( name=name, id=name, symbol=name, - unit=unit, + unit=unit, # type: ignore ) # type: ignore diff --git a/pyenzyme/tabular.py b/pyenzyme/tabular.py index 1c5ad193..b7316241 100644 --- a/pyenzyme/tabular.py +++ b/pyenzyme/tabular.py @@ -4,12 +4,13 @@ import pandas as pd -from .model import ( +from mdmodels.units.unit_definition import UnitDefinition + +from .versions.v2 import ( DataTypes, Measurement, EnzymeMLDocument, MeasurementData, - UnitDefinition, ) @@ -44,9 +45,9 @@ def to_pandas( if ignore is None: ignore = [] - assert isinstance( - enzmldoc, EnzymeMLDocument - ), "The input must be an EnzymeMLDocument object" + assert isinstance(enzmldoc, EnzymeMLDocument), ( + "The input must be an EnzymeMLDocument object" + ) dfs = [] for meas in enzmldoc.measurements: @@ -70,8 +71,8 @@ def to_pandas( def read_excel( path: pl.Path | str, - data_unit: UnitDefinition, - time_unit: UnitDefinition, + data_unit: str, + time_unit: str, data_type: DataTypes = DataTypes.CONCENTRATION, sep: str = ";", ): @@ -124,8 +125,8 @@ def read_excel( def read_csv( path: pl.Path | str, - data_unit: UnitDefinition, - time_unit: UnitDefinition, + data_unit: str, + time_unit: str, data_type: DataTypes = DataTypes.CONCENTRATION, sep: str = "\t", ): @@ -178,8 +179,8 @@ def read_csv( def from_dataframe( df: pd.DataFrame, - data_unit: UnitDefinition, - time_unit: UnitDefinition, + data_unit: str, + time_unit: str, data_type: DataTypes = DataTypes.CONCENTRATION, meas_id: str | None = None, ) -> list[Measurement]: @@ -222,8 +223,7 @@ def from_dataframe( ) else: assert meas_id is not None, ( - "The 'meas_id' argument must be provided " - "when parsing a single measurement" + "The 'meas_id' argument must be provided when parsing a single measurement" ) return [ _create_single_measurement( @@ -239,21 +239,26 @@ def from_dataframe( def _create_single_measurement( df: pd.DataFrame, id: str, - data_unit: UnitDefinition, - time_unit: UnitDefinition, + data_unit: str | UnitDefinition, + time_unit: str | UnitDefinition, data_type: DataTypes, ) -> Measurement: data = df.to_dict(orient="list") time = data.pop("time") meas_data = [] + if isinstance(data_unit, UnitDefinition): + data_unit = data_unit.name # type: ignore + if isinstance(time_unit, UnitDefinition): + time_unit = time_unit.name # type: ignore + for species_id, species_data in data.items(): if species_id == "id": continue meas_data.append( MeasurementData( - species_id=species_id, + species_id=str(species_id), data=species_data, time=time, data_unit=data_unit, @@ -268,8 +273,8 @@ def _create_single_measurement( def _process_multiple_measurements( df: pd.DataFrame, - data_unit: UnitDefinition, - time_unit: UnitDefinition, + data_unit: str, + time_unit: str, data_type: DataTypes, ) -> list[Measurement]: ids = df["id"].unique() @@ -298,9 +303,9 @@ def _validate_data(data: pd.DataFrame) -> None: for col in data.columns: if col == "id": continue - assert ( - data[col].dtype == "float64" or data[col].dtype == "int64" - ), f"The column '{col}' must contain only numerical values" + assert data[col].dtype == "float64" or data[col].dtype == "int64", ( + f"The column '{col}' must contain only numerical values" + ) def _measurement_to_pandas(measurement: Measurement) -> pd.DataFrame: @@ -315,11 +320,13 @@ def _measurement_to_pandas(measurement: Measurement) -> pd.DataFrame: return pd.DataFrame(data) + def _get_time_array(measurement: Measurement): for meas_data in measurement.species_data: if len(meas_data.time) > 0: return meas_data.time + def _validate_measurement(meas: Measurement) -> None: """Validates a Measurement object""" diff --git a/pyenzyme/units/units.py b/pyenzyme/units/units.py index 087122ec..e44633fa 100644 --- a/pyenzyme/units/units.py +++ b/pyenzyme/units/units.py @@ -77,7 +77,6 @@ def __mul__(self, other: _BaseUnit) -> _BaseUnit: Raises: TypeError: If the other operand is not a BaseUnit. """ - print(self.value) if isinstance(other, _BaseUnit): return self.value(other) diff --git a/pyenzyme/versions/__init__.py b/pyenzyme/versions/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/pyenzyme/versions/v2.py b/pyenzyme/versions/v2.py new file mode 100644 index 00000000..18c4a016 --- /dev/null +++ b/pyenzyme/versions/v2.py @@ -0,0 +1,1948 @@ +""" +This file contains Pydantic model definitions for data validation. + +Pydantic is a data validation library that uses Python type annotations. +It allows you to define data models with type hints that are validated +at runtime while providing static type checking. + +Usage example: +```python +from my_model import MyModel + +# Validates data at runtime +my_model = MyModel(name="John", age=30) + +# Type-safe - my_model has correct type hints +print(my_model.name) + +# Will raise error if validation fails +try: + MyModel(name="", age=30) +except ValidationError as e: + print(e) +``` + +For more information see: +https://docs.pydantic.dev/ + +WARNING: This is an auto-generated file. +Do not edit directly - any changes will be overwritten. +""" + + +## This is a generated file. Do not modify it manually! + +from __future__ import annotations +from enum import Enum +from pydantic import BaseModel, Field, ConfigDict +from typing import Optional, Generic, TypeVar +from uuid import uuid4 +from mdmodels.units.annotation import UnitDefinitionAnnot + +# Filter Wrapper definition used to filter a list of objects +# based on their attributes +Cls = TypeVar("Cls") + + +class FilterWrapper(Generic[Cls]): + """Wrapper class to filter a list of objects based on their attributes""" + + def __init__(self, collection: list[Cls], **kwargs): + self.collection = collection + self.kwargs = kwargs + + def filter(self) -> list[Cls]: + for key, value in self.kwargs.items(): + self.collection = [ + item for item in self.collection if self._fetch_attr(key, item) == value + ] + return self.collection + + def _fetch_attr(self, name: str, item: Cls): + try: + return getattr(item, name) + except AttributeError: + raise AttributeError(f"{item} does not have attribute {name}") + + +# JSON-LD Helper Functions +def add_namespace(obj, prefix: str | None, iri: str | None): + """Adds a namespace to the JSON-LD context + + Args: + prefix (str): The prefix to add + iri (str): The IRI to add + """ + if prefix is None and iri is None: + return + elif prefix and iri is None: + raise ValueError("If prefix is provided, iri must also be provided") + elif iri and prefix is None: + raise ValueError("If iri is provided, prefix must also be provided") + + obj.ld_context[prefix] = iri # type: ignore + + +def validate_prefix(term: str | dict, prefix: str): + """Validates that a term is prefixed with a given prefix + + Args: + term (str): The term to validate + prefix (str): The prefix to validate against + + Returns: + bool: True if the term is prefixed with the prefix, False otherwise + """ + + if isinstance(term, dict) and not term["@id"].startswith(prefix + ":"): + raise ValueError(f"Term {term} is not prefixed with {prefix}") + elif isinstance(term, str) and not term.startswith(prefix + ":"): + raise ValueError(f"Term {term} is not prefixed with {prefix}") + + +# Model Definitions + + +class EnzymeMLDocument(BaseModel): + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment=True, + ) # type: ignore + + name: str + created: Optional[str] = Field(default=None) + modified: Optional[str] = Field(default=None) + creators: list[Creator] = Field(default_factory=list) + vessels: list[Vessel] = Field(default_factory=list) + proteins: list[Protein] = Field(default_factory=list) + complexes: list[Complex] = Field(default_factory=list) + small_molecules: list[SmallMolecule] = Field(default_factory=list) + reactions: list[Reaction] = Field(default_factory=list) + measurements: list[Measurement] = Field(default_factory=list) + equations: list[Equation] = Field(default_factory=list) + parameters: list[Parameter] = Field(default_factory=list) + references: list[str] = Field(default_factory=list) + + # JSON-LD fields + ld_id: str = Field( + serialization_alias="@id", + default_factory=lambda: "enzml:EnzymeMLDocument/" + str(uuid4()), + ) + ld_type: list[str] = Field( + serialization_alias="@type", + default_factory=lambda: [ + "enzml:EnzymeMLDocument", + ], + ) + ld_context: dict[str, str | dict] = Field( + serialization_alias="@context", + default_factory=lambda: { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "name": "schema:title", + "created": "schema:dateCreated", + "modified": "schema:dateModified", + "creators": "schema:creator", + "references": { + "@id": "schema:citation", + "@type": "@id", + }, + }, + ) + + def filter_creators(self, **kwargs) -> list[Creator]: + """Filters the creators attribute based on the given kwargs + + Args: + **kwargs: The attributes to filter by. + + Returns: + list[Creator]: The filtered list of Creator objects + """ + + return FilterWrapper[Creator](self.creators, **kwargs).filter() + + def filter_vessels(self, **kwargs) -> list[Vessel]: + """Filters the vessels attribute based on the given kwargs + + Args: + **kwargs: The attributes to filter by. + + Returns: + list[Vessel]: The filtered list of Vessel objects + """ + + return FilterWrapper[Vessel](self.vessels, **kwargs).filter() + + def filter_proteins(self, **kwargs) -> list[Protein]: + """Filters the proteins attribute based on the given kwargs + + Args: + **kwargs: The attributes to filter by. + + Returns: + list[Protein]: The filtered list of Protein objects + """ + + return FilterWrapper[Protein](self.proteins, **kwargs).filter() + + def filter_complexes(self, **kwargs) -> list[Complex]: + """Filters the complexes attribute based on the given kwargs + + Args: + **kwargs: The attributes to filter by. + + Returns: + list[Complex]: The filtered list of Complex objects + """ + + return FilterWrapper[Complex](self.complexes, **kwargs).filter() + + def filter_small_molecules(self, **kwargs) -> list[SmallMolecule]: + """Filters the small_molecules attribute based on the given kwargs + + Args: + **kwargs: The attributes to filter by. + + Returns: + list[SmallMolecule]: The filtered list of SmallMolecule objects + """ + + return FilterWrapper[SmallMolecule](self.small_molecules, **kwargs).filter() + + def filter_reactions(self, **kwargs) -> list[Reaction]: + """Filters the reactions attribute based on the given kwargs + + Args: + **kwargs: The attributes to filter by. + + Returns: + list[Reaction]: The filtered list of Reaction objects + """ + + return FilterWrapper[Reaction](self.reactions, **kwargs).filter() + + def filter_measurements(self, **kwargs) -> list[Measurement]: + """Filters the measurements attribute based on the given kwargs + + Args: + **kwargs: The attributes to filter by. + + Returns: + list[Measurement]: The filtered list of Measurement objects + """ + + return FilterWrapper[Measurement](self.measurements, **kwargs).filter() + + def filter_equations(self, **kwargs) -> list[Equation]: + """Filters the equations attribute based on the given kwargs + + Args: + **kwargs: The attributes to filter by. + + Returns: + list[Equation]: The filtered list of Equation objects + """ + + return FilterWrapper[Equation](self.equations, **kwargs).filter() + + def filter_parameters(self, **kwargs) -> list[Parameter]: + """Filters the parameters attribute based on the given kwargs + + Args: + **kwargs: The attributes to filter by. + + Returns: + list[Parameter]: The filtered list of Parameter objects + """ + + return FilterWrapper[Parameter](self.parameters, **kwargs).filter() + + def set_attr_term( + self, + attr: str, + term: str | dict, + prefix: str | None = None, + iri: str | None = None, + ): + """Sets the term for a given attribute in the JSON-LD object + + Example: + # Using an IRI term + >> obj.set_attr_term("name", "http://schema.org/givenName") + + # Using a prefix and term + >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") + + # Usinng a dictionary term + >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) + + Args: + attr (str): The attribute to set the term for + term (str | dict): The term to set for the attribute + + Raises: + AssertionError: If the attribute is not found in the model + """ + + assert attr in self.model_fields, ( + f"Attribute {attr} not found in {self.__class__.__name__}" + ) + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_context[attr] = term + + def add_type_term( + self, term: str, prefix: str | None = None, iri: str | None = None + ): + """Adds a term to the @type field of the JSON-LD object + + Example: + # Using a term + >> obj.add_type_term("https://schema.org/Person") + + # Using a prefixed term + >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") + + Args: + term (str): The term to add to the @type field + prefix (str, optional): The prefix to use for the term. Defaults to None. + iri (str, optional): The IRI to use for the term prefix. Defaults to None. + + Raises: + ValueError: If prefix is provided but iri is not + ValueError: If iri is provided but prefix is not + """ + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_type.append(term) + + def add_to_creators( + self, + given_name: str, + family_name: str, + mail: str, + **kwargs, + ): + params = {"given_name": given_name, "family_name": family_name, "mail": mail} + + if "id" in kwargs: + params["id"] = kwargs["id"] + + self.creators.append(Creator(**params)) # type: ignore + + return self.creators[-1] + + def add_to_vessels( + self, + id: str, + name: str, + volume: float, + unit: UnitDefinitionAnnot, + constant: bool = True, + **kwargs, + ): + params = { + "id": id, + "name": name, + "volume": volume, + "unit": unit, + "constant": constant, + } + + if "id" in kwargs: + params["id"] = kwargs["id"] + + self.vessels.append(Vessel(**params)) + + return self.vessels[-1] + + def add_to_proteins( + self, + id: str, + name: str, + constant: bool = True, + sequence: Optional[str] = None, + vessel_id: Optional[str] = None, + ecnumber: Optional[str] = None, + organism: Optional[str] = None, + organism_tax_id: Optional[str] = None, + references: list[str] = [], + **kwargs, + ): + params = { + "id": id, + "name": name, + "constant": constant, + "sequence": sequence, + "vessel_id": vessel_id, + "ecnumber": ecnumber, + "organism": organism, + "organism_tax_id": organism_tax_id, + "references": references, + } + + if "id" in kwargs: + params["id"] = kwargs["id"] + + self.proteins.append(Protein(**params)) + + return self.proteins[-1] + + def add_to_complexes( + self, + id: str, + name: str, + constant: bool = False, + vessel_id: Optional[str] = None, + participants: list[str] = [], + **kwargs, + ): + params = { + "id": id, + "name": name, + "constant": constant, + "vessel_id": vessel_id, + "participants": participants, + } + + if "id" in kwargs: + params["id"] = kwargs["id"] + + self.complexes.append(Complex(**params)) + + return self.complexes[-1] + + def add_to_small_molecules( + self, + id: str, + name: str, + constant: bool = False, + vessel_id: Optional[str] = None, + canonical_smiles: Optional[str] = None, + inchi: Optional[str] = None, + inchikey: Optional[str] = None, + references: list[str] = [], + **kwargs, + ): + params = { + "id": id, + "name": name, + "constant": constant, + "vessel_id": vessel_id, + "canonical_smiles": canonical_smiles, + "inchi": inchi, + "inchikey": inchikey, + "references": references, + } + + if "id" in kwargs: + params["id"] = kwargs["id"] + + self.small_molecules.append(SmallMolecule(**params)) + + return self.small_molecules[-1] + + def add_to_reactions( + self, + id: str, + name: str, + reversible: bool = False, + kinetic_law: Optional[Equation] = None, + species: list[ReactionElement] = [], + modifiers: list[str] = [], + **kwargs, + ): + params = { + "id": id, + "name": name, + "reversible": reversible, + "kinetic_law": kinetic_law, + "species": species, + "modifiers": modifiers, + } + + if "id" in kwargs: + params["id"] = kwargs["id"] + + self.reactions.append(Reaction(**params)) + + return self.reactions[-1] + + def add_to_measurements( + self, + id: str, + name: str, + species_data: list[MeasurementData] = [], + group_id: Optional[str] = None, + ph: Optional[float] = None, + temperature: Optional[float] = None, + temperature_unit: Optional[UnitDefinitionAnnot] = None, + **kwargs, + ): + params = { + "id": id, + "name": name, + "species_data": species_data, + "group_id": group_id, + "ph": ph, + "temperature": temperature, + "temperature_unit": temperature_unit, + } + + if "id" in kwargs: + params["id"] = kwargs["id"] + + self.measurements.append(Measurement(**params)) + + return self.measurements[-1] + + def add_to_equations( + self, + species_id: str, + equation: str, + equation_type: EquationType, + variables: list[Variable] = [], + **kwargs, + ): + params = { + "species_id": species_id, + "equation": equation, + "equation_type": equation_type, + "variables": variables, + } + + if "id" in kwargs: + params["id"] = kwargs["id"] + + self.equations.append(Equation(**params)) + + return self.equations[-1] + + def add_to_parameters( + self, + id: str, + name: str, + symbol: str, + value: Optional[float] = None, + unit: Optional[UnitDefinitionAnnot] = None, + initial_value: Optional[float] = None, + upper_bound: Optional[float] = None, + lower_bound: Optional[float] = None, + stderr: Optional[float] = None, + constant: Optional[bool] = True, + **kwargs, + ): + params = { + "id": id, + "name": name, + "symbol": symbol, + "value": value, + "unit": unit, + "initial_value": initial_value, + "upper_bound": upper_bound, + "lower_bound": lower_bound, + "stderr": stderr, + "constant": constant, + } + + if "id" in kwargs: + params["id"] = kwargs["id"] + + self.parameters.append(Parameter(**params)) + + return self.parameters[-1] + + +class Creator(BaseModel): + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment=True, + ) # type: ignore + + given_name: str + family_name: str + mail: str + + # JSON-LD fields + ld_id: str = Field( + serialization_alias="@id", + default_factory=lambda: "enzml:Creator/" + str(uuid4()), + ) + ld_type: list[str] = Field( + serialization_alias="@type", + default_factory=lambda: ["enzml:Creator", "schema:person"], + ) + ld_context: dict[str, str | dict] = Field( + serialization_alias="@context", + default_factory=lambda: { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "given_name": "schema:givenName", + "family_name": "schema:familyName", + "mail": "schema:email", + }, + ) + + def set_attr_term( + self, + attr: str, + term: str | dict, + prefix: str | None = None, + iri: str | None = None, + ): + """Sets the term for a given attribute in the JSON-LD object + + Example: + # Using an IRI term + >> obj.set_attr_term("name", "http://schema.org/givenName") + + # Using a prefix and term + >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") + + # Usinng a dictionary term + >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) + + Args: + attr (str): The attribute to set the term for + term (str | dict): The term to set for the attribute + + Raises: + AssertionError: If the attribute is not found in the model + """ + + assert attr in self.model_fields, ( + f"Attribute {attr} not found in {self.__class__.__name__}" + ) + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_context[attr] = term + + def add_type_term( + self, term: str, prefix: str | None = None, iri: str | None = None + ): + """Adds a term to the @type field of the JSON-LD object + + Example: + # Using a term + >> obj.add_type_term("https://schema.org/Person") + + # Using a prefixed term + >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") + + Args: + term (str): The term to add to the @type field + prefix (str, optional): The prefix to use for the term. Defaults to None. + iri (str, optional): The IRI to use for the term prefix. Defaults to None. + + Raises: + ValueError: If prefix is provided but iri is not + ValueError: If iri is provided but prefix is not + """ + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_type.append(term) + + +class Vessel(BaseModel): + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment=True, + ) # type: ignore + + id: str + name: str + volume: float + unit: UnitDefinitionAnnot + constant: bool = True + + # JSON-LD fields + ld_id: str = Field( + serialization_alias="@id", + default_factory=lambda: "enzml:Vessel/" + str(uuid4()), + ) + ld_type: list[str] = Field( + serialization_alias="@type", + default_factory=lambda: ["enzml:Vessel", "OBO:OBI_0400081"], + ) + ld_context: dict[str, str | dict] = Field( + serialization_alias="@context", + default_factory=lambda: { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id", + }, + "name": "schema:name", + "volume": "OBO:OBI_0002139", + }, + ) + + def set_attr_term( + self, + attr: str, + term: str | dict, + prefix: str | None = None, + iri: str | None = None, + ): + """Sets the term for a given attribute in the JSON-LD object + + Example: + # Using an IRI term + >> obj.set_attr_term("name", "http://schema.org/givenName") + + # Using a prefix and term + >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") + + # Usinng a dictionary term + >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) + + Args: + attr (str): The attribute to set the term for + term (str | dict): The term to set for the attribute + + Raises: + AssertionError: If the attribute is not found in the model + """ + + assert attr in self.model_fields, ( + f"Attribute {attr} not found in {self.__class__.__name__}" + ) + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_context[attr] = term + + def add_type_term( + self, term: str, prefix: str | None = None, iri: str | None = None + ): + """Adds a term to the @type field of the JSON-LD object + + Example: + # Using a term + >> obj.add_type_term("https://schema.org/Person") + + # Using a prefixed term + >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") + + Args: + term (str): The term to add to the @type field + prefix (str, optional): The prefix to use for the term. Defaults to None. + iri (str, optional): The IRI to use for the term prefix. Defaults to None. + + Raises: + ValueError: If prefix is provided but iri is not + ValueError: If iri is provided but prefix is not + """ + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_type.append(term) + + +class Protein(BaseModel): + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment=True, + ) # type: ignore + + id: str + name: str + constant: bool = True + sequence: Optional[str] = Field(default=None) + vessel_id: Optional[str] = Field(default=None) + ecnumber: Optional[str] = Field(default=None) + organism: Optional[str] = Field(default=None) + organism_tax_id: Optional[str] = Field(default=None) + references: list[str] = Field(default_factory=list) + + # JSON-LD fields + ld_id: str = Field( + serialization_alias="@id", + default_factory=lambda: "enzml:Protein/" + str(uuid4()), + ) + ld_type: list[str] = Field( + serialization_alias="@type", + default_factory=lambda: ["enzml:Protein", "schema:Protein"], + ) + ld_context: dict[str, str | dict] = Field( + serialization_alias="@context", + default_factory=lambda: { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id", + }, + "name": "schema:name", + "sequence": "OBO:GSSO_007262", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id", + }, + "organism": "OBO:OBI_0100026", + "organism_tax_id": { + "@type": "@id", + }, + "references": { + "@id": "schema:citation", + "@type": "@id", + }, + }, + ) + + def set_attr_term( + self, + attr: str, + term: str | dict, + prefix: str | None = None, + iri: str | None = None, + ): + """Sets the term for a given attribute in the JSON-LD object + + Example: + # Using an IRI term + >> obj.set_attr_term("name", "http://schema.org/givenName") + + # Using a prefix and term + >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") + + # Usinng a dictionary term + >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) + + Args: + attr (str): The attribute to set the term for + term (str | dict): The term to set for the attribute + + Raises: + AssertionError: If the attribute is not found in the model + """ + + assert attr in self.model_fields, ( + f"Attribute {attr} not found in {self.__class__.__name__}" + ) + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_context[attr] = term + + def add_type_term( + self, term: str, prefix: str | None = None, iri: str | None = None + ): + """Adds a term to the @type field of the JSON-LD object + + Example: + # Using a term + >> obj.add_type_term("https://schema.org/Person") + + # Using a prefixed term + >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") + + Args: + term (str): The term to add to the @type field + prefix (str, optional): The prefix to use for the term. Defaults to None. + iri (str, optional): The IRI to use for the term prefix. Defaults to None. + + Raises: + ValueError: If prefix is provided but iri is not + ValueError: If iri is provided but prefix is not + """ + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_type.append(term) + + +class Complex(BaseModel): + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment=True, + ) # type: ignore + + id: str + name: str + constant: bool = False + vessel_id: Optional[str] = Field(default=None) + participants: list[str] = Field(default_factory=list) + + # JSON-LD fields + ld_id: str = Field( + serialization_alias="@id", + default_factory=lambda: "enzml:Complex/" + str(uuid4()), + ) + ld_type: list[str] = Field( + serialization_alias="@type", + default_factory=lambda: [ + "enzml:Complex", + ], + ) + ld_context: dict[str, str | dict] = Field( + serialization_alias="@context", + default_factory=lambda: { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id", + }, + "name": "schema:name", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id", + }, + "participants": { + "@type": "@id", + }, + }, + ) + + def set_attr_term( + self, + attr: str, + term: str | dict, + prefix: str | None = None, + iri: str | None = None, + ): + """Sets the term for a given attribute in the JSON-LD object + + Example: + # Using an IRI term + >> obj.set_attr_term("name", "http://schema.org/givenName") + + # Using a prefix and term + >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") + + # Usinng a dictionary term + >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) + + Args: + attr (str): The attribute to set the term for + term (str | dict): The term to set for the attribute + + Raises: + AssertionError: If the attribute is not found in the model + """ + + assert attr in self.model_fields, ( + f"Attribute {attr} not found in {self.__class__.__name__}" + ) + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_context[attr] = term + + def add_type_term( + self, term: str, prefix: str | None = None, iri: str | None = None + ): + """Adds a term to the @type field of the JSON-LD object + + Example: + # Using a term + >> obj.add_type_term("https://schema.org/Person") + + # Using a prefixed term + >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") + + Args: + term (str): The term to add to the @type field + prefix (str, optional): The prefix to use for the term. Defaults to None. + iri (str, optional): The IRI to use for the term prefix. Defaults to None. + + Raises: + ValueError: If prefix is provided but iri is not + ValueError: If iri is provided but prefix is not + """ + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_type.append(term) + + +class SmallMolecule(BaseModel): + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment=True, + ) # type: ignore + + id: str + name: str + constant: bool = False + vessel_id: Optional[str] = Field(default=None) + canonical_smiles: Optional[str] = Field(default=None) + inchi: Optional[str] = Field(default=None) + inchikey: Optional[str] = Field(default=None) + references: list[str] = Field(default_factory=list) + + # JSON-LD fields + ld_id: str = Field( + serialization_alias="@id", + default_factory=lambda: "enzml:SmallMolecule/" + str(uuid4()), + ) + ld_type: list[str] = Field( + serialization_alias="@type", + default_factory=lambda: [ + "enzml:SmallMolecule", + ], + ) + ld_context: dict[str, str | dict] = Field( + serialization_alias="@context", + default_factory=lambda: { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id", + }, + "name": "schema:name", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id", + }, + "references": { + "@id": "schema:citation", + "@type": "@id", + }, + }, + ) + + def set_attr_term( + self, + attr: str, + term: str | dict, + prefix: str | None = None, + iri: str | None = None, + ): + """Sets the term for a given attribute in the JSON-LD object + + Example: + # Using an IRI term + >> obj.set_attr_term("name", "http://schema.org/givenName") + + # Using a prefix and term + >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") + + # Usinng a dictionary term + >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) + + Args: + attr (str): The attribute to set the term for + term (str | dict): The term to set for the attribute + + Raises: + AssertionError: If the attribute is not found in the model + """ + + assert attr in self.model_fields, ( + f"Attribute {attr} not found in {self.__class__.__name__}" + ) + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_context[attr] = term + + def add_type_term( + self, term: str, prefix: str | None = None, iri: str | None = None + ): + """Adds a term to the @type field of the JSON-LD object + + Example: + # Using a term + >> obj.add_type_term("https://schema.org/Person") + + # Using a prefixed term + >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") + + Args: + term (str): The term to add to the @type field + prefix (str, optional): The prefix to use for the term. Defaults to None. + iri (str, optional): The IRI to use for the term prefix. Defaults to None. + + Raises: + ValueError: If prefix is provided but iri is not + ValueError: If iri is provided but prefix is not + """ + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_type.append(term) + + +class Reaction(BaseModel): + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment=True, + ) # type: ignore + + id: str + name: str + reversible: bool = False + kinetic_law: Optional[Equation] = Field(default=None) + species: list[ReactionElement] = Field(default_factory=list) + modifiers: list[str] = Field(default_factory=list) + + # JSON-LD fields + ld_id: str = Field( + serialization_alias="@id", + default_factory=lambda: "enzml:Reaction/" + str(uuid4()), + ) + ld_type: list[str] = Field( + serialization_alias="@type", + default_factory=lambda: [ + "enzml:Reaction", + ], + ) + ld_context: dict[str, str | dict] = Field( + serialization_alias="@context", + default_factory=lambda: { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id", + }, + "modifiers": { + "@type": "@id", + }, + }, + ) + + def filter_species(self, **kwargs) -> list[ReactionElement]: + """Filters the species attribute based on the given kwargs + + Args: + **kwargs: The attributes to filter by. + + Returns: + list[ReactionElement]: The filtered list of ReactionElement objects + """ + + return FilterWrapper[ReactionElement](self.species, **kwargs).filter() + + def set_attr_term( + self, + attr: str, + term: str | dict, + prefix: str | None = None, + iri: str | None = None, + ): + """Sets the term for a given attribute in the JSON-LD object + + Example: + # Using an IRI term + >> obj.set_attr_term("name", "http://schema.org/givenName") + + # Using a prefix and term + >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") + + # Usinng a dictionary term + >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) + + Args: + attr (str): The attribute to set the term for + term (str | dict): The term to set for the attribute + + Raises: + AssertionError: If the attribute is not found in the model + """ + + assert attr in self.model_fields, ( + f"Attribute {attr} not found in {self.__class__.__name__}" + ) + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_context[attr] = term + + def add_type_term( + self, term: str, prefix: str | None = None, iri: str | None = None + ): + """Adds a term to the @type field of the JSON-LD object + + Example: + # Using a term + >> obj.add_type_term("https://schema.org/Person") + + # Using a prefixed term + >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") + + Args: + term (str): The term to add to the @type field + prefix (str, optional): The prefix to use for the term. Defaults to None. + iri (str, optional): The IRI to use for the term prefix. Defaults to None. + + Raises: + ValueError: If prefix is provided but iri is not + ValueError: If iri is provided but prefix is not + """ + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_type.append(term) + + def add_to_species( + self, + species_id: str, + stoichiometry: float, + **kwargs, + ): + params = {"species_id": species_id, "stoichiometry": stoichiometry} + + if "id" in kwargs: + params["id"] = kwargs["id"] + + self.species.append(ReactionElement(**params)) + + return self.species[-1] + + +class ReactionElement(BaseModel): + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment=True, + ) # type: ignore + + species_id: str + stoichiometry: float + + # JSON-LD fields + ld_id: str = Field( + serialization_alias="@id", + default_factory=lambda: "enzml:ReactionElement/" + str(uuid4()), + ) + ld_type: list[str] = Field( + serialization_alias="@type", + default_factory=lambda: [ + "enzml:ReactionElement", + ], + ) + ld_context: dict[str, str | dict] = Field( + serialization_alias="@context", + default_factory=lambda: { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id", + }, + }, + ) + + def set_attr_term( + self, + attr: str, + term: str | dict, + prefix: str | None = None, + iri: str | None = None, + ): + """Sets the term for a given attribute in the JSON-LD object + + Example: + # Using an IRI term + >> obj.set_attr_term("name", "http://schema.org/givenName") + + # Using a prefix and term + >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") + + # Usinng a dictionary term + >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) + + Args: + attr (str): The attribute to set the term for + term (str | dict): The term to set for the attribute + + Raises: + AssertionError: If the attribute is not found in the model + """ + + assert attr in self.model_fields, ( + f"Attribute {attr} not found in {self.__class__.__name__}" + ) + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_context[attr] = term + + def add_type_term( + self, term: str, prefix: str | None = None, iri: str | None = None + ): + """Adds a term to the @type field of the JSON-LD object + + Example: + # Using a term + >> obj.add_type_term("https://schema.org/Person") + + # Using a prefixed term + >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") + + Args: + term (str): The term to add to the @type field + prefix (str, optional): The prefix to use for the term. Defaults to None. + iri (str, optional): The IRI to use for the term prefix. Defaults to None. + + Raises: + ValueError: If prefix is provided but iri is not + ValueError: If iri is provided but prefix is not + """ + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_type.append(term) + + +class Equation(BaseModel): + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment=True, + ) # type: ignore + + species_id: str + equation: str + equation_type: EquationType + variables: list[Variable] = Field(default_factory=list) + + # JSON-LD fields + ld_id: str = Field( + serialization_alias="@id", + default_factory=lambda: "enzml:Equation/" + str(uuid4()), + ) + ld_type: list[str] = Field( + serialization_alias="@type", + default_factory=lambda: [ + "enzml:Equation", + ], + ) + ld_context: dict[str, str | dict] = Field( + serialization_alias="@context", + default_factory=lambda: { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id", + }, + }, + ) + + def filter_variables(self, **kwargs) -> list[Variable]: + """Filters the variables attribute based on the given kwargs + + Args: + **kwargs: The attributes to filter by. + + Returns: + list[Variable]: The filtered list of Variable objects + """ + + return FilterWrapper[Variable](self.variables, **kwargs).filter() + + def set_attr_term( + self, + attr: str, + term: str | dict, + prefix: str | None = None, + iri: str | None = None, + ): + """Sets the term for a given attribute in the JSON-LD object + + Example: + # Using an IRI term + >> obj.set_attr_term("name", "http://schema.org/givenName") + + # Using a prefix and term + >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") + + # Usinng a dictionary term + >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) + + Args: + attr (str): The attribute to set the term for + term (str | dict): The term to set for the attribute + + Raises: + AssertionError: If the attribute is not found in the model + """ + + assert attr in self.model_fields, ( + f"Attribute {attr} not found in {self.__class__.__name__}" + ) + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_context[attr] = term + + def add_type_term( + self, term: str, prefix: str | None = None, iri: str | None = None + ): + """Adds a term to the @type field of the JSON-LD object + + Example: + # Using a term + >> obj.add_type_term("https://schema.org/Person") + + # Using a prefixed term + >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") + + Args: + term (str): The term to add to the @type field + prefix (str, optional): The prefix to use for the term. Defaults to None. + iri (str, optional): The IRI to use for the term prefix. Defaults to None. + + Raises: + ValueError: If prefix is provided but iri is not + ValueError: If iri is provided but prefix is not + """ + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_type.append(term) + + def add_to_variables( + self, + id: str, + name: str, + symbol: str, + **kwargs, + ): + params = {"id": id, "name": name, "symbol": symbol} + + if "id" in kwargs: + params["id"] = kwargs["id"] + + self.variables.append(Variable(**params)) # type: ignore + + return self.variables[-1] + + +class Variable(BaseModel): + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment=True, + ) # type: ignore + + id: str + name: str + symbol: str + + # JSON-LD fields + ld_id: str = Field( + serialization_alias="@id", + default_factory=lambda: "enzml:Variable/" + str(uuid4()), + ) + ld_type: list[str] = Field( + serialization_alias="@type", + default_factory=lambda: [ + "enzml:Variable", + ], + ) + ld_context: dict[str, str | dict] = Field( + serialization_alias="@context", + default_factory=lambda: { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id", + }, + }, + ) + + def set_attr_term( + self, + attr: str, + term: str | dict, + prefix: str | None = None, + iri: str | None = None, + ): + """Sets the term for a given attribute in the JSON-LD object + + Example: + # Using an IRI term + >> obj.set_attr_term("name", "http://schema.org/givenName") + + # Using a prefix and term + >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") + + # Usinng a dictionary term + >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) + + Args: + attr (str): The attribute to set the term for + term (str | dict): The term to set for the attribute + + Raises: + AssertionError: If the attribute is not found in the model + """ + + assert attr in self.model_fields, ( + f"Attribute {attr} not found in {self.__class__.__name__}" + ) + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_context[attr] = term + + def add_type_term( + self, term: str, prefix: str | None = None, iri: str | None = None + ): + """Adds a term to the @type field of the JSON-LD object + + Example: + # Using a term + >> obj.add_type_term("https://schema.org/Person") + + # Using a prefixed term + >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") + + Args: + term (str): The term to add to the @type field + prefix (str, optional): The prefix to use for the term. Defaults to None. + iri (str, optional): The IRI to use for the term prefix. Defaults to None. + + Raises: + ValueError: If prefix is provided but iri is not + ValueError: If iri is provided but prefix is not + """ + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_type.append(term) + + +class Parameter(BaseModel): + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment=True, + ) # type: ignore + + id: str + name: str + symbol: str + value: Optional[float] = Field(default=None) + unit: Optional[UnitDefinitionAnnot] = Field(default=None) + initial_value: Optional[float] = Field(default=None) + upper_bound: Optional[float] = Field(default=None) + lower_bound: Optional[float] = Field(default=None) + stderr: Optional[float] = Field(default=None) + constant: bool = True + + # JSON-LD fields + ld_id: str = Field( + serialization_alias="@id", + default_factory=lambda: "enzml:Parameter/" + str(uuid4()), + ) + ld_type: list[str] = Field( + serialization_alias="@type", + default_factory=lambda: [ + "enzml:Parameter", + ], + ) + ld_context: dict[str, str | dict] = Field( + serialization_alias="@context", + default_factory=lambda: { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id", + }, + }, + ) + + def set_attr_term( + self, + attr: str, + term: str | dict, + prefix: str | None = None, + iri: str | None = None, + ): + """Sets the term for a given attribute in the JSON-LD object + + Example: + # Using an IRI term + >> obj.set_attr_term("name", "http://schema.org/givenName") + + # Using a prefix and term + >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") + + # Usinng a dictionary term + >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) + + Args: + attr (str): The attribute to set the term for + term (str | dict): The term to set for the attribute + + Raises: + AssertionError: If the attribute is not found in the model + """ + + assert attr in self.model_fields, ( + f"Attribute {attr} not found in {self.__class__.__name__}" + ) + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_context[attr] = term + + def add_type_term( + self, term: str, prefix: str | None = None, iri: str | None = None + ): + """Adds a term to the @type field of the JSON-LD object + + Example: + # Using a term + >> obj.add_type_term("https://schema.org/Person") + + # Using a prefixed term + >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") + + Args: + term (str): The term to add to the @type field + prefix (str, optional): The prefix to use for the term. Defaults to None. + iri (str, optional): The IRI to use for the term prefix. Defaults to None. + + Raises: + ValueError: If prefix is provided but iri is not + ValueError: If iri is provided but prefix is not + """ + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_type.append(term) + + +class Measurement(BaseModel): + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment=True, + ) # type: ignore + + id: str + name: str + species_data: list[MeasurementData] = Field(default_factory=list) + group_id: Optional[str] = Field(default=None) + ph: Optional[float] = Field(default=None) + temperature: Optional[float] = Field(default=None) + temperature_unit: Optional[UnitDefinitionAnnot] = Field(default=None) + + # JSON-LD fields + ld_id: str = Field( + serialization_alias="@id", + default_factory=lambda: "enzml:Measurement/" + str(uuid4()), + ) + ld_type: list[str] = Field( + serialization_alias="@type", + default_factory=lambda: [ + "enzml:Measurement", + ], + ) + ld_context: dict[str, str | dict] = Field( + serialization_alias="@context", + default_factory=lambda: { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id", + }, + "group_id": { + "@type": "@id", + }, + }, + ) + + def filter_species_data(self, **kwargs) -> list[MeasurementData]: + """Filters the species_data attribute based on the given kwargs + + Args: + **kwargs: The attributes to filter by. + + Returns: + list[MeasurementData]: The filtered list of MeasurementData objects + """ + + return FilterWrapper[MeasurementData](self.species_data, **kwargs).filter() + + def set_attr_term( + self, + attr: str, + term: str | dict, + prefix: str | None = None, + iri: str | None = None, + ): + """Sets the term for a given attribute in the JSON-LD object + + Example: + # Using an IRI term + >> obj.set_attr_term("name", "http://schema.org/givenName") + + # Using a prefix and term + >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") + + # Usinng a dictionary term + >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) + + Args: + attr (str): The attribute to set the term for + term (str | dict): The term to set for the attribute + + Raises: + AssertionError: If the attribute is not found in the model + """ + + assert attr in self.model_fields, ( + f"Attribute {attr} not found in {self.__class__.__name__}" + ) + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_context[attr] = term + + def add_type_term( + self, term: str, prefix: str | None = None, iri: str | None = None + ): + """Adds a term to the @type field of the JSON-LD object + + Example: + # Using a term + >> obj.add_type_term("https://schema.org/Person") + + # Using a prefixed term + >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") + + Args: + term (str): The term to add to the @type field + prefix (str, optional): The prefix to use for the term. Defaults to None. + iri (str, optional): The IRI to use for the term prefix. Defaults to None. + + Raises: + ValueError: If prefix is provided but iri is not + ValueError: If iri is provided but prefix is not + """ + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_type.append(term) + + def add_to_species_data( + self, + species_id: str, + initial: float, + data_unit: UnitDefinitionAnnot, + data_type: DataTypes, + prepared: Optional[float] = None, + data: list[float] = [], + time: list[float] = [], + time_unit: Optional[UnitDefinitionAnnot] = None, + is_simulated: bool = False, + **kwargs, + ): + params = { + "species_id": species_id, + "initial": initial, + "data_unit": data_unit, + "data_type": data_type, + "prepared": prepared, + "data": data, + "time": time, + "time_unit": time_unit, + "is_simulated": is_simulated, + } + + if "id" in kwargs: + params["id"] = kwargs["id"] + + self.species_data.append(MeasurementData(**params)) + + return self.species_data[-1] + + +class MeasurementData(BaseModel): + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment=True, + ) # type: ignore + + species_id: str + initial: float + data_unit: UnitDefinitionAnnot + data_type: DataTypes + prepared: Optional[float] = Field(default=None) + data: list[float] = Field(default_factory=list) + time: list[float] = Field(default_factory=list) + time_unit: Optional[UnitDefinitionAnnot] = Field(default=None) + is_simulated: bool = False + + # JSON-LD fields + ld_id: str = Field( + serialization_alias="@id", + default_factory=lambda: "enzml:MeasurementData/" + str(uuid4()), + ) + ld_type: list[str] = Field( + serialization_alias="@type", + default_factory=lambda: [ + "enzml:MeasurementData", + ], + ) + ld_context: dict[str, str | dict] = Field( + serialization_alias="@context", + default_factory=lambda: { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id", + }, + }, + ) + + def set_attr_term( + self, + attr: str, + term: str | dict, + prefix: str | None = None, + iri: str | None = None, + ): + """Sets the term for a given attribute in the JSON-LD object + + Example: + # Using an IRI term + >> obj.set_attr_term("name", "http://schema.org/givenName") + + # Using a prefix and term + >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") + + # Usinng a dictionary term + >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) + + Args: + attr (str): The attribute to set the term for + term (str | dict): The term to set for the attribute + + Raises: + AssertionError: If the attribute is not found in the model + """ + + assert attr in self.model_fields, ( + f"Attribute {attr} not found in {self.__class__.__name__}" + ) + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_context[attr] = term + + def add_type_term( + self, term: str, prefix: str | None = None, iri: str | None = None + ): + """Adds a term to the @type field of the JSON-LD object + + Example: + # Using a term + >> obj.add_type_term("https://schema.org/Person") + + # Using a prefixed term + >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") + + Args: + term (str): The term to add to the @type field + prefix (str, optional): The prefix to use for the term. Defaults to None. + iri (str, optional): The IRI to use for the term prefix. Defaults to None. + + Raises: + ValueError: If prefix is provided but iri is not + ValueError: If iri is provided but prefix is not + """ + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_type.append(term) + + +class EquationType(Enum): + ASSIGNMENT = "assignment" + INITIAL_ASSIGNMENT = "initialAssignment" + ODE = "ode" + RATE_LAW = "rateLaw" + + +class DataTypes(Enum): + ABSORBANCE = "absorbance" + CONCENTRATION = "concentration" + CONVERSION = "conversion" + FLUORESCENCE = "fluorescence" + PEAK_AREA = "peakarea" + TRANSMITTANCE = "transmittance" + + +# Rebuild all the classes within this file +for cls in [ + EnzymeMLDocument, + Creator, + Vessel, + Protein, + Complex, + SmallMolecule, + Reaction, + ReactionElement, + Equation, + Variable, + Parameter, + Measurement, + MeasurementData, +]: + cls.model_rebuild() From c0f0aafca9bee43e5568df9e67bfc50a816d18b2 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Tue, 6 May 2025 13:37:38 +0200 Subject: [PATCH 088/172] update model version --- pyenzyme/versions/v2.py | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/pyenzyme/versions/v2.py b/pyenzyme/versions/v2.py index 18c4a016..c967531c 100644 --- a/pyenzyme/versions/v2.py +++ b/pyenzyme/versions/v2.py @@ -33,9 +33,9 @@ ## This is a generated file. Do not modify it manually! from __future__ import annotations -from enum import Enum from pydantic import BaseModel, Field, ConfigDict from typing import Optional, Generic, TypeVar +from enum import Enum from uuid import uuid4 from mdmodels.units.annotation import UnitDefinitionAnnot @@ -137,8 +137,8 @@ class EnzymeMLDocument(BaseModel): serialization_alias="@context", default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "name": "schema:title", "created": "schema:dateCreated", "modified": "schema:dateModified", @@ -335,7 +335,7 @@ def add_to_creators( if "id" in kwargs: params["id"] = kwargs["id"] - self.creators.append(Creator(**params)) # type: ignore + self.creators.append(Creator(**params)) return self.creators[-1] @@ -582,8 +582,8 @@ class Creator(BaseModel): serialization_alias="@context", default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "given_name": "schema:givenName", "family_name": "schema:familyName", "mail": "schema:email", @@ -680,8 +680,8 @@ class Vessel(BaseModel): serialization_alias="@context", default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id", @@ -779,14 +779,14 @@ class Protein(BaseModel): ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: ["enzml:Protein", "schema:Protein"], + default_factory=lambda: ["enzml:Protein", "OBO:PR_000000001"], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id", @@ -900,8 +900,8 @@ class Complex(BaseModel): serialization_alias="@context", default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id", @@ -1012,8 +1012,8 @@ class SmallMolecule(BaseModel): serialization_alias="@context", default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id", @@ -1123,8 +1123,8 @@ class Reaction(BaseModel): serialization_alias="@context", default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id", @@ -1251,8 +1251,8 @@ class ReactionElement(BaseModel): serialization_alias="@context", default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "species_id": { "@id": "schema:identifier", "@type": "@id", @@ -1351,8 +1351,8 @@ class Equation(BaseModel): serialization_alias="@context", default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "species_id": { "@id": "schema:identifier", "@type": "@id", @@ -1449,7 +1449,7 @@ def add_to_variables( if "id" in kwargs: params["id"] = kwargs["id"] - self.variables.append(Variable(**params)) # type: ignore + self.variables.append(Variable(**params)) return self.variables[-1] @@ -1478,8 +1478,8 @@ class Variable(BaseModel): serialization_alias="@context", default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id", @@ -1567,7 +1567,7 @@ class Parameter(BaseModel): upper_bound: Optional[float] = Field(default=None) lower_bound: Optional[float] = Field(default=None) stderr: Optional[float] = Field(default=None) - constant: bool = True + constant: Optional[bool] = True # JSON-LD fields ld_id: str = Field( @@ -1584,8 +1584,8 @@ class Parameter(BaseModel): serialization_alias="@context", default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id", @@ -1687,8 +1687,8 @@ class Measurement(BaseModel): serialization_alias="@context", default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id", @@ -1839,8 +1839,8 @@ class MeasurementData(BaseModel): serialization_alias="@context", default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "species_id": { "@type": "@id", }, From a2c3d3566ae613cfd94bbad699a61160911aa97c Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Wed, 7 May 2025 01:19:17 +0200 Subject: [PATCH 089/172] remove dev examples --- dev-examples/Readme.md | 12 - dev-examples/enzml_legacy_to_v2.json | 2305 ------------ dev-examples/legacy/Model_4.omex | Bin 13024 -> 0 bytes dev-examples/legacy/enzml_legacy_to_v2.json | 3185 ----------------- dev-examples/odes/data.tsv | 23 - dev-examples/odes/enzymeml.json | 1017 ------ dev-examples/odes/odes_example.omex | Bin 2427 -> 0 bytes dev-examples/odes/odes_example.xml | 241 -- dev-examples/odes/odes_example_test.xml | 241 -- dev-examples/reactions/data.tsv | 23 - dev-examples/reactions/enzymeml.json | 972 ----- dev-examples/reactions/reactions_example.omex | Bin 2213 -> 0 bytes dev-examples/reactions/reactions_example.xml | 206 -- dev-examples/sbml_export_odes.py | 86 - dev-examples/sbml_export_reactions.py | 64 - dev-examples/sbml_import_legacy.py | 8 - dev-examples/sbml_import_odes.py | 10 - dev-examples/sbml_import_reactions.py | 16 - dev-examples/v1.xml | 731 ---- 19 files changed, 9140 deletions(-) delete mode 100644 dev-examples/Readme.md delete mode 100644 dev-examples/enzml_legacy_to_v2.json delete mode 100644 dev-examples/legacy/Model_4.omex delete mode 100644 dev-examples/legacy/enzml_legacy_to_v2.json delete mode 100644 dev-examples/odes/data.tsv delete mode 100644 dev-examples/odes/enzymeml.json delete mode 100644 dev-examples/odes/odes_example.omex delete mode 100644 dev-examples/odes/odes_example.xml delete mode 100644 dev-examples/odes/odes_example_test.xml delete mode 100644 dev-examples/reactions/data.tsv delete mode 100644 dev-examples/reactions/enzymeml.json delete mode 100644 dev-examples/reactions/reactions_example.omex delete mode 100644 dev-examples/reactions/reactions_example.xml delete mode 100644 dev-examples/sbml_export_odes.py delete mode 100644 dev-examples/sbml_export_reactions.py delete mode 100644 dev-examples/sbml_import_legacy.py delete mode 100644 dev-examples/sbml_import_odes.py delete mode 100644 dev-examples/sbml_import_reactions.py delete mode 100644 dev-examples/v1.xml diff --git a/dev-examples/Readme.md b/dev-examples/Readme.md deleted file mode 100644 index c9c3843c..00000000 --- a/dev-examples/Readme.md +++ /dev/null @@ -1,12 +0,0 @@ -# Dev Examples - -These examples are intended to be used during development towards 2.0.0 and will be removed in the final release. - -## How to run the examples - -Dev examples should be run from the root directory of the repository and will produce outputs to the dev-example folder. - -```bash -# From the root directory -python ./dev-examples/*.py -``` diff --git a/dev-examples/enzml_legacy_to_v2.json b/dev-examples/enzml_legacy_to_v2.json deleted file mode 100644 index ac173d6a..00000000 --- a/dev-examples/enzml_legacy_to_v2.json +++ /dev/null @@ -1,2305 +0,0 @@ -{ - "name": "EnzymeML_Lagerman", - "references": [], - "created": null, - "modified": null, - "creators": [], - "vessels": [ - { - "id": "v0", - "name": "Falcon Tube", - "volume": 5.0, - "unit": { - "id": "u0", - "name": "ml", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "constant": true - } - ], - "proteins": [ - { - "id": "p0", - "name": "E", - "constant": false, - "sequence": "MRRLAACLLATAVAAATSAALAQTSPMTPDITGKPFVAGDAANDYVKREVMIPMRDGVKLHTVIVLPKGARNAPIVLTRTPYDASGRTERLASPHMKDLLSAGDDVFVEGGYIRVFQDVRGKYGSEGDYVMTRPLRGPLNPSEVDHATDAWDTIDWLVKNVKESNGKVGMIGSSYEGFTVVMALTNPHPALKVAAPESPMIDGWMGDDWFNYGAFRQVNFDYFTGQLSKRGKGAGIPRQGHDDYSNFLQAGSAGDFAKAAGLEQLPWWHKLTEHAAYDSFWQEQALDKVMARTPLKVPTMWLQGLWDQEDMWGAIHSYAAMEPRDKSNKLNYLVMGPWRHSQVNSDASSLGALNFDGDTARQFRRDVLRPFFDQYLVDGAPKAATPPVFIYNTGENHWDRLQAWPRSCDKGCAAKSKPLYLQAGGKLSFQAPTAAQPAFEEYVSDPAKPVPFVPRPVDFGDRSMWTTWLVHDQRFVDGRPDVLTFVTEPLTAPLQIAGAPDVHLQASTSGSDSDWVVKLIDVYPDEMAADPKMGGYELPVSMAIFRGRYRESFSTPAPLAANQPLAFQFGLPTANHTFQPGHRVMVQVQSSLFPLYDRNPQTYVPNVFFAKPGDYQKATQRVYVAPGQGSYISLPVR", - "vessel_id": "v0", - "ecnumber": "3.1.1.43", - "organism": "Xanthomonas campestris pv. campestris", - "organism_tax_id": null, - "references": [] - }, - { - "id": "p1", - "name": "EA", - "constant": false, - "sequence": "MRRLAACLLATAVAAATSAALAQTSPMTPDITGKPFVAGDAANDYVKREVMIPMRDGVKLHTVIVLPKGARNAPIVLTRTPYDASGRTERLASPHMKDLLSAGDDVFVEGGYIRVFQDVRGKYGSEGDYVMTRPLRGPLNPSEVDHATDAWDTIDWLVKNVKESNGKVGMIGSSYEGFTVVMALTNPHPALKVAAPESPMIDGWMGDDWFNYGAFRQVNFDYFTGQLSKRGKGAGIPRQGHDDYSNFLQAGSAGDFAKAAGLEQLPWWHKLTEHAAYDSFWQEQALDKVMARTPLKVPTMWLQGLWDQEDMWGAIHSYAAMEPRDKSNKLNYLVMGPWRHSQVNSDASSLGALNFDGDTARQFRRDVLRPFFDQYLVDGAPKAATPPVFIYNTGENHWDRLQAWPRSCDKGCAAKSKPLYLQAGGKLSFQAPTAAQPAFEEYVSDPAKPVPFVPRPVDFGDRSMWTTWLVHDQRFVDGRPDVLTFVTEPLTAPLQIAGAPDVHLQASTSGSDSDWVVKLIDVYPDEMAADPKMGGYELPVSMAIFRGRYRESFSTPAPLAANQPLAFQFGLPTANHTFQPGHRVMVQVQSSLFPLYDRNPQTYVPNVFFAKPGDYQKATQRVYVAPGQGSYISLPVR", - "vessel_id": "v0", - "ecnumber": "3.1.1.43", - "organism": "Xanthomonas campestris pv. campestris", - "organism_tax_id": null, - "references": [] - }, - { - "id": "p2", - "name": "ED", - "constant": false, - "sequence": "MRRLAACLLATAVAAATSAALAQTSPMTPDITGKPFVAGDAANDYVKREVMIPMRDGVKLHTVIVLPKGARNAPIVLTRTPYDASGRTERLASPHMKDLLSAGDDVFVEGGYIRVFQDVRGKYGSEGDYVMTRPLRGPLNPSEVDHATDAWDTIDWLVKNVKESNGKVGMIGSSYEGFTVVMALTNPHPALKVAAPESPMIDGWMGDDWFNYGAFRQVNFDYFTGQLSKRGKGAGIPRQGHDDYSNFLQAGSAGDFAKAAGLEQLPWWHKLTEHAAYDSFWQEQALDKVMARTPLKVPTMWLQGLWDQEDMWGAIHSYAAMEPRDKSNKLNYLVMGPWRHSQVNSDASSLGALNFDGDTARQFRRDVLRPFFDQYLVDGAPKAATPPVFIYNTGENHWDRLQAWPRSCDKGCAAKSKPLYLQAGGKLSFQAPTAAQPAFEEYVSDPAKPVPFVPRPVDFGDRSMWTTWLVHDQRFVDGRPDVLTFVTEPLTAPLQIAGAPDVHLQASTSGSDSDWVVKLIDVYPDEMAADPKMGGYELPVSMAIFRGRYRESFSTPAPLAANQPLAFQFGLPTANHTFQPGHRVMVQVQSSLFPLYDRNPQTYVPNVFFAKPGDYQKATQRVYVAPGQGSYISLPVR", - "vessel_id": "v0", - "ecnumber": "3.1.1.43", - "organism": "Xanthomonas campestris pv. campestris", - "organism_tax_id": null, - "references": [] - } - ], - "complexes": [ - { - "id": "c0", - "name": "E\u00b7PGME", - "constant": false, - "participants": [ - "p0", - "s0" - ] - }, - { - "id": "c1", - "name": "E\u00b77-ADCA", - "constant": false, - "participants": [ - "p0", - "s1" - ] - }, - { - "id": "c2", - "name": "E\u00b7PG", - "constant": false, - "participants": [ - "p0", - "s3" - ] - }, - { - "id": "c3", - "name": "E\u00b7PGME\u00b7PGME", - "constant": false, - "participants": [ - "p0", - "s0", - "s0" - ] - }, - { - "id": "c4", - "name": "EA\u00b77-ADCA", - "constant": false, - "participants": [ - "p1", - "s1" - ] - }, - { - "id": "c5", - "name": "EA\u00b7PGME", - "constant": false, - "participants": [ - "p1", - "s0" - ] - }, - { - "id": "c6", - "name": "E\u00b7CEX", - "constant": false, - "participants": [ - "p0", - "s2" - ] - } - ], - "small_molecules": [ - { - "id": "s0", - "name": "PGME", - "constant": false, - "vessel_id": "v0", - "canonical_smiles": null, - "inchi": null, - "inchikey": null, - "references": [] - }, - { - "id": "s1", - "name": "7-ADCA", - "constant": false, - "vessel_id": "v0", - "canonical_smiles": null, - "inchi": null, - "inchikey": null, - "references": [] - }, - { - "id": "s2", - "name": "CEX", - "constant": false, - "vessel_id": "v0", - "canonical_smiles": null, - "inchi": null, - "inchikey": null, - "references": [] - }, - { - "id": "s3", - "name": "PG", - "constant": false, - "vessel_id": "v0", - "canonical_smiles": null, - "inchi": null, - "inchikey": null, - "references": [] - } - ], - "reactions": [ - { - "id": "r0", - "name": "reaction-1", - "reversible": false, - "kinetic_law": { - "equation": "v_r * (K_n * c1 - p0 * s1)", - "equation_type": "EquationType.RATE_LAW", - "species_id": null, - "variables": [ - { - "id": "c1", - "name": "c1", - "symbol": "c1" - }, - { - "id": "p0", - "name": "p0", - "symbol": "p0" - }, - { - "id": "s1", - "name": "s1", - "symbol": "s1" - } - ] - }, - "species": [ - { - "species_id": "c1", - "stoichiometry": -1.0 - }, - { - "species_id": "p0", - "stoichiometry": 1.0 - }, - { - "species_id": "s1", - "stoichiometry": 1.0 - } - ], - "modifiers": [] - }, - { - "id": "r1", - "name": "reaction-2", - "reversible": false, - "kinetic_law": { - "equation": "v_r * (K_s * c0 - p0 * s0)", - "equation_type": "EquationType.RATE_LAW", - "species_id": null, - "variables": [ - { - "id": "c0", - "name": "c0", - "symbol": "c0" - }, - { - "id": "p0", - "name": "p0", - "symbol": "p0" - }, - { - "id": "s0", - "name": "s0", - "symbol": "s0" - } - ] - }, - "species": [ - { - "species_id": "c0", - "stoichiometry": -1.0 - }, - { - "species_id": "p0", - "stoichiometry": 1.0 - }, - { - "species_id": "s0", - "stoichiometry": 1.0 - } - ], - "modifiers": [] - }, - { - "id": "r10", - "name": "reaction-11", - "reversible": false, - "kinetic_law": { - "equation": "k_4 * c4 - k_4b * c6", - "equation_type": "EquationType.RATE_LAW", - "species_id": null, - "variables": [ - { - "id": "c4", - "name": "c4", - "symbol": "c4" - }, - { - "id": "c6", - "name": "c6", - "symbol": "c6" - } - ] - }, - "species": [ - { - "species_id": "c4", - "stoichiometry": -1.0 - }, - { - "species_id": "c6", - "stoichiometry": 1.0 - } - ], - "modifiers": [] - }, - { - "id": "r11", - "name": "reaction-12", - "reversible": false, - "kinetic_law": { - "equation": "v_r * (K_p * c6 - p0 * s2)", - "equation_type": "EquationType.RATE_LAW", - "species_id": null, - "variables": [ - { - "id": "c6", - "name": "c6", - "symbol": "c6" - }, - { - "id": "p0", - "name": "p0", - "symbol": "p0" - }, - { - "id": "s2", - "name": "s2", - "symbol": "s2" - } - ] - }, - "species": [ - { - "species_id": "c6", - "stoichiometry": -1.0 - }, - { - "species_id": "p0", - "stoichiometry": 1.0 - }, - { - "species_id": "s2", - "stoichiometry": 1.0 - } - ], - "modifiers": [] - }, - { - "id": "r12", - "name": "Enzyme deactivation", - "reversible": false, - "kinetic_law": { - "equation": "k_d * p0", - "equation_type": "EquationType.RATE_LAW", - "species_id": null, - "variables": [ - { - "id": "p0", - "name": "p0", - "symbol": "p0" - } - ] - }, - "species": [ - { - "species_id": "p0", - "stoichiometry": -1.0 - }, - { - "species_id": "p2", - "stoichiometry": 1.0 - } - ], - "modifiers": [] - }, - { - "id": "r2", - "name": "reaction-3", - "reversible": false, - "kinetic_law": { - "equation": "k_2 * c0", - "equation_type": "EquationType.RATE_LAW", - "species_id": null, - "variables": [ - { - "id": "c0", - "name": "c0", - "symbol": "c0" - } - ] - }, - "species": [ - { - "species_id": "c0", - "stoichiometry": -1.0 - }, - { - "species_id": "p1", - "stoichiometry": 1.0 - } - ], - "modifiers": [] - }, - { - "id": "r3", - "name": "reaction-4", - "reversible": false, - "kinetic_law": { - "equation": "v_r * (K_si * c3 - c0 * s0)", - "equation_type": "EquationType.RATE_LAW", - "species_id": null, - "variables": [ - { - "id": "c0", - "name": "c0", - "symbol": "c0" - }, - { - "id": "c3", - "name": "c3", - "symbol": "c3" - }, - { - "id": "s0", - "name": "s0", - "symbol": "s0" - } - ] - }, - "species": [ - { - "species_id": "c0", - "stoichiometry": 1.0 - }, - { - "species_id": "c3", - "stoichiometry": -1.0 - }, - { - "species_id": "s0", - "stoichiometry": 1.0 - } - ], - "modifiers": [] - }, - { - "id": "r4", - "name": "reaction-5", - "reversible": false, - "kinetic_law": { - "equation": "v_r * (K_si * c5 - p1 * s0)", - "equation_type": "EquationType.RATE_LAW", - "species_id": null, - "variables": [ - { - "id": "c5", - "name": "c5", - "symbol": "c5" - }, - { - "id": "p1", - "name": "p1", - "symbol": "p1" - }, - { - "id": "s0", - "name": "s0", - "symbol": "s0" - } - ] - }, - "species": [ - { - "species_id": "c5", - "stoichiometry": -1.0 - }, - { - "species_id": "p1", - "stoichiometry": 1.0 - }, - { - "species_id": "s0", - "stoichiometry": 1.0 - } - ], - "modifiers": [] - }, - { - "id": "r5", - "name": "reaction-6", - "reversible": false, - "kinetic_law": { - "equation": "k_6 * c5", - "equation_type": "EquationType.RATE_LAW", - "species_id": null, - "variables": [ - { - "id": "c5", - "name": "c5", - "symbol": "c5" - } - ] - }, - "species": [ - { - "species_id": "c5", - "stoichiometry": -1.0 - }, - { - "species_id": "p0", - "stoichiometry": 1.0 - }, - { - "species_id": "s3", - "stoichiometry": 1.0 - } - ], - "modifiers": [] - }, - { - "id": "r6", - "name": "reaction-7", - "reversible": false, - "kinetic_law": { - "equation": "k_3 * p1", - "equation_type": "EquationType.RATE_LAW", - "species_id": null, - "variables": [ - { - "id": "p1", - "name": "p1", - "symbol": "p1" - } - ] - }, - "species": [ - { - "species_id": "p0", - "stoichiometry": 1.0 - }, - { - "species_id": "p1", - "stoichiometry": -1.0 - }, - { - "species_id": "s3", - "stoichiometry": 1.0 - } - ], - "modifiers": [] - }, - { - "id": "r7", - "name": "reaction-8", - "reversible": false, - "kinetic_law": { - "equation": "v_r * (K_pg * c2 - p0 * s3)", - "equation_type": "EquationType.RATE_LAW", - "species_id": null, - "variables": [ - { - "id": "c2", - "name": "c2", - "symbol": "c2" - }, - { - "id": "p0", - "name": "p0", - "symbol": "p0" - }, - { - "id": "s3", - "name": "s3", - "symbol": "s3" - } - ] - }, - "species": [ - { - "species_id": "c2", - "stoichiometry": -1.0 - }, - { - "species_id": "p0", - "stoichiometry": 1.0 - }, - { - "species_id": "s3", - "stoichiometry": 1.0 - } - ], - "modifiers": [] - }, - { - "id": "r8", - "name": "reaction-9", - "reversible": false, - "kinetic_law": { - "equation": "v_r * (K_n * c4 - p1 * s1)", - "equation_type": "EquationType.RATE_LAW", - "species_id": null, - "variables": [ - { - "id": "c4", - "name": "c4", - "symbol": "c4" - }, - { - "id": "p1", - "name": "p1", - "symbol": "p1" - }, - { - "id": "s1", - "name": "s1", - "symbol": "s1" - } - ] - }, - "species": [ - { - "species_id": "c4", - "stoichiometry": -1.0 - }, - { - "species_id": "p1", - "stoichiometry": 1.0 - }, - { - "species_id": "s1", - "stoichiometry": 1.0 - } - ], - "modifiers": [] - }, - { - "id": "r9", - "name": "reaction-10", - "reversible": false, - "kinetic_law": { - "equation": "k_5 * c4", - "equation_type": "EquationType.RATE_LAW", - "species_id": null, - "variables": [ - { - "id": "c4", - "name": "c4", - "symbol": "c4" - } - ] - }, - "species": [ - { - "species_id": "c4", - "stoichiometry": -1.0 - }, - { - "species_id": "p0", - "stoichiometry": 1.0 - }, - { - "species_id": "s1", - "stoichiometry": 1.0 - }, - { - "species_id": "s3", - "stoichiometry": 1.0 - } - ], - "modifiers": [] - } - ], - "measurements": [ - { - "id": "m0", - "name": "Cephalexin synthesis 1", - "species_data": [ - { - "species_id": "p0", - "initial": 0.0002, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [], - "time": [], - "time_unit": null, - "is_simulated": false - }, - { - "species_id": "s0", - "initial": 20.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.645, - 12.45, - 16.385, - 20.0, - 5.135, - 9.255 - ], - "time": [], - "time_unit": null, - "is_simulated": false - }, - { - "species_id": "s1", - "initial": 10.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 10.0, - 10.575, - 5.18, - 5.815, - 5.94, - 7.025, - 7.57, - 8.72, - 8.945, - 9.87 - ], - "time": [], - "time_unit": null, - "is_simulated": false - }, - { - "species_id": "s2", - "initial": 0.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 0.0, - 0.575, - 1.075, - 1.915, - 2.66, - 3.24, - 3.885, - 4.815, - 4.9, - 5.755 - ], - "time": [], - "time_unit": null, - "is_simulated": false - }, - { - "species_id": "s3", - "initial": 2.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 11.965, - 17.28, - 19.93, - 2.0, - 21.36, - 22.55, - 23.38, - 3.705, - 5.77, - 8.035 - ], - "time": [], - "time_unit": null, - "is_simulated": false - } - ], - "group_id": null, - "ph": null, - "temperature": null, - "temperature_unit": null - }, - { - "id": "m1", - "name": "Cephalexin synthesis 2", - "species_data": [ - { - "species_id": "p0", - "initial": 0.0002, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [], - "time": [], - "time_unit": null, - "is_simulated": false - }, - { - "species_id": "s0", - "initial": 20.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 0.0, - 0.0, - 0.0, - 0.0, - 1.32, - 12.67, - 16.5, - 20.0, - 5.91, - 9.915 - ], - "time": [], - "time_unit": null, - "is_simulated": false - }, - { - "species_id": "s1", - "initial": 20.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 12.625, - 13.14, - 14.2, - 14.82, - 15.445, - 16.255, - 17.02, - 18.5, - 18.58, - 20.0 - ], - "time": [], - "time_unit": null, - "is_simulated": false - }, - { - "species_id": "s2", - "initial": 0.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 0.0, - 2.0, - 3.205, - 4.1, - 5.09, - 5.63, - 6.385, - 7.17, - 7.855, - 8.225 - ], - "time": [], - "time_unit": null, - "is_simulated": false - }, - { - "species_id": "s3", - "initial": 1.3, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 1.3, - 13.25, - 16.055, - 17.62, - 19.34, - 2.955, - 20.8, - 4.615, - 6.175, - 8.8 - ], - "time": [], - "time_unit": null, - "is_simulated": false - } - ], - "group_id": null, - "ph": null, - "temperature": null, - "temperature_unit": null - }, - { - "id": "m2", - "name": "Cephalexin synthesis 3", - "species_data": [ - { - "species_id": "p0", - "initial": 0.0002, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [], - "time": [], - "time_unit": null, - "is_simulated": false - }, - { - "species_id": "s0", - "initial": 20.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.91, - 13.005, - 20.0, - 4.0, - 7.21, - 9.505 - ], - "time": [], - "time_unit": null, - "is_simulated": false - }, - { - "species_id": "s1", - "initial": 40.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 29.985, - 30.405, - 30.675, - 31.905, - 32.49, - 33.045, - 33.87, - 34.525, - 36.555, - 40.0 - ], - "time": [], - "time_unit": null, - "is_simulated": false - }, - { - "species_id": "s2", - "initial": 0.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 0.0, - 3.59, - 5.57, - 5.69, - 6.39, - 6.85, - 7.255, - 8.18, - 8.24, - 8.945 - ], - "time": [], - "time_unit": null, - "is_simulated": false - }, - { - "species_id": "s3", - "initial": 5.1, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 10.13, - 12.93, - 14.565, - 15.8, - 16.98, - 18.15, - 5.1, - 6.365, - 7.59, - 8.59 - ], - "time": [], - "time_unit": null, - "is_simulated": false - } - ], - "group_id": null, - "ph": null, - "temperature": null, - "temperature_unit": null - }, - { - "id": "m3", - "name": "Cephalexin synthesis 4", - "species_data": [ - { - "species_id": "p0", - "initial": 0.0002, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [], - "time": [], - "time_unit": null, - "is_simulated": false - }, - { - "species_id": "s0", - "initial": 20.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 0.0, - 0.0, - 0.0, - 0.385, - 1.455, - 11.64, - 15.345, - 20.0, - 5.265, - 8.975 - ], - "time": [], - "time_unit": null, - "is_simulated": false - }, - { - "species_id": "s1", - "initial": 60.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 47.6, - 48.185, - 48.265, - 49.0, - 50.76, - 51.6, - 52.505, - 53.58, - 56.8, - 60.0 - ], - "time": [], - "time_unit": null, - "is_simulated": false - }, - { - "species_id": "s2", - "initial": 0.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 0.0, - 10.2, - 11.065, - 11.325, - 3.77, - 6.11, - 7.74, - 9.005, - 9.595, - 9.66 - ], - "time": [], - "time_unit": null, - "is_simulated": false - }, - { - "species_id": "s3", - "initial": 1.9, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 1.9, - 10.61, - 12.0, - 13.075, - 14.24, - 2.94, - 3.99, - 4.935, - 6.305, - 8.87 - ], - "time": [], - "time_unit": null, - "is_simulated": false - } - ], - "group_id": null, - "ph": null, - "temperature": null, - "temperature_unit": null - }, - { - "id": "m4", - "name": "Cephalexin synthesis 5", - "species_data": [ - { - "species_id": "p0", - "initial": 0.0002, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [], - "time": [], - "time_unit": null, - "is_simulated": false - }, - { - "species_id": "s0", - "initial": 20.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 0.0, - 0.0, - 0.0, - 0.35, - 1.46, - 12.075, - 15.34, - 20.0, - 5.515, - 9.335 - ], - "time": [], - "time_unit": null, - "is_simulated": false - }, - { - "species_id": "s1", - "initial": 42.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 29.595, - 30.615, - 31.46, - 31.83, - 32.985, - 34.06, - 34.08, - 36.06, - 38.405, - 42.0 - ], - "time": [], - "time_unit": null, - "is_simulated": false - }, - { - "species_id": "s2", - "initial": 0.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 0.0, - 3.42, - 5.52, - 6.695, - 6.99, - 7.47, - 8.515, - 8.78, - 9.44, - 9.875 - ], - "time": [], - "time_unit": null, - "is_simulated": false - }, - { - "species_id": "s3", - "initial": 1.5, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 1.5, - 11.49, - 13.08, - 14.505, - 15.63, - 2.815, - 4.105, - 5.085, - 6.69, - 9.535 - ], - "time": [], - "time_unit": null, - "is_simulated": false - } - ], - "group_id": null, - "ph": null, - "temperature": null, - "temperature_unit": null - }, - { - "id": "m5", - "name": "Cephalexin synthesis 6", - "species_data": [ - { - "species_id": "p0", - "initial": 0.0002, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [], - "time": [], - "time_unit": null, - "is_simulated": false - }, - { - "species_id": "s0", - "initial": 40.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 0.84, - 1.695, - 10.1, - 21.225, - 27.01, - 3.33, - 31.035, - 34.595, - 40.0, - 5.9 - ], - "time": [], - "time_unit": null, - "is_simulated": false - }, - { - "species_id": "s1", - "initial": 42.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 22.595, - 23.0, - 23.09, - 24.5, - 24.8, - 29.17, - 32.805, - 34.9, - 37.9, - 42.0 - ], - "time": [], - "time_unit": null, - "is_simulated": false - }, - { - "species_id": "s2", - "initial": 0.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 0.0, - 11.1, - 15.255, - 15.645, - 15.81, - 16.345, - 16.5, - 3.625, - 6.4, - 8.5 - ], - "time": [], - "time_unit": null, - "is_simulated": false - }, - { - "species_id": "s3", - "initial": 3.3, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 11.1, - 17.315, - 20.5, - 22.605, - 24.925, - 26.5, - 3.3, - 4.75, - 6.13, - 7.52 - ], - "time": [], - "time_unit": null, - "is_simulated": false - } - ], - "group_id": null, - "ph": null, - "temperature": null, - "temperature_unit": null - }, - { - "id": "m6", - "name": "Cephalexin synthesis 7", - "species_data": [ - { - "species_id": "p0", - "initial": 0.0002, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [], - "time": [], - "time_unit": null, - "is_simulated": false - }, - { - "species_id": "s0", - "initial": 76.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 19.7, - 24.655, - 30.4, - 38.03, - 46.9, - 60.2, - 65.6, - 69.3, - 73.36, - 76.0 - ], - "time": [], - "time_unit": null, - "is_simulated": false - }, - { - "species_id": "s1", - "initial": 40.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 18.36, - 19.445, - 20.805, - 22.94, - 25.965, - 31.025, - 34.09, - 36.175, - 38.51, - 40.0 - ], - "time": [], - "time_unit": null, - "is_simulated": false - }, - { - "species_id": "s2", - "initial": 0.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 0.0, - 10.295, - 15.76, - 18.74, - 20.755, - 21.89, - 22.875, - 3.04, - 5.195, - 7.28 - ], - "time": [], - "time_unit": null, - "is_simulated": false - }, - { - "species_id": "s3", - "initial": 5.7, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 10.4, - 13.49, - 20.83, - 26.8, - 32.53, - 36.77, - 41.13, - 5.7, - 7.21, - 8.735 - ], - "time": [], - "time_unit": null, - "is_simulated": false - } - ], - "group_id": null, - "ph": null, - "temperature": null, - "temperature_unit": null - }, - { - "id": "m7", - "name": "Cephalexin synthesis 8", - "species_data": [ - { - "species_id": "p0", - "initial": 0.0002, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [], - "time": [], - "time_unit": null, - "is_simulated": false - }, - { - "species_id": "s0", - "initial": 140.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 124.6, - 125.96, - 126.75, - 128.395, - 130.085, - 132.905, - 134.745, - 136.0, - 138.2, - 140.0 - ], - "time": [], - "time_unit": null, - "is_simulated": false - }, - { - "species_id": "s1", - "initial": 40.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 32.8, - 33.035, - 33.11, - 33.71, - 34.61, - 36.155, - 36.88, - 37.725, - 38.8, - 40.0 - ], - "time": [], - "time_unit": null, - "is_simulated": false - }, - { - "species_id": "s2", - "initial": 0.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 0.0, - 1.53, - 2.395, - 3.04, - 3.895, - 4.99, - 5.545, - 5.98, - 6.325, - 6.625 - ], - "time": [], - "time_unit": null, - "is_simulated": false - }, - { - "species_id": "s3", - "initial": 14.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 14.0, - 17.9, - 18.85, - 19.735, - 20.84, - 22.595, - 23.62, - 25.0, - 26.025, - 26.93 - ], - "time": [], - "time_unit": null, - "is_simulated": false - } - ], - "group_id": null, - "ph": null, - "temperature": null, - "temperature_unit": null - } - ], - "equations": [], - "parameters": [ - { - "id": "K_n", - "name": "", - "symbol": "K_n", - "value": null, - "unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "initial_value": null, - "upper": null, - "lower": null, - "stderr": null, - "constant": false - }, - { - "id": "K_si", - "name": "", - "symbol": "K_si", - "value": null, - "unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "initial_value": null, - "upper": null, - "lower": null, - "stderr": null, - "constant": false - }, - { - "id": "v_r", - "name": "", - "symbol": "v_r", - "value": null, - "unit": { - "id": "u5", - "name": "l / min mmole", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": 1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": -1, - "multiplier": 1.0, - "scale": -3.0 - }, - { - "kind": "UnitType.SECOND", - "exponent": -1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "initial_value": null, - "upper": null, - "lower": null, - "stderr": null, - "constant": true - } - ] -} \ No newline at end of file diff --git a/dev-examples/legacy/Model_4.omex b/dev-examples/legacy/Model_4.omex deleted file mode 100644 index 3783b00c3a106982ccb4620bb824b07276369267..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13024 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
+o(6;a7A5dmy(Sn9})5gDqJ6JG&nMq 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 diff --git a/dev-examples/legacy/enzml_legacy_to_v2.json b/dev-examples/legacy/enzml_legacy_to_v2.json deleted file mode 100644 index f5f08360..00000000 --- a/dev-examples/legacy/enzml_legacy_to_v2.json +++ /dev/null @@ -1,3185 +0,0 @@ -{ - "name": "EnzymeML_Lagerman", - "references": [], - "created": null, - "modified": null, - "creators": [], - "vessels": [ - { - "id": "v0", - "name": "Falcon Tube", - "volume": 5.0, - "unit": { - "id": "u0", - "name": "ml", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "constant": true - } - ], - "proteins": [ - { - "id": "p0", - "name": "E", - "constant": false, - "sequence": "MRRLAACLLATAVAAATSAALAQTSPMTPDITGKPFVAGDAANDYVKREVMIPMRDGVKLHTVIVLPKGARNAPIVLTRTPYDASGRTERLASPHMKDLLSAGDDVFVEGGYIRVFQDVRGKYGSEGDYVMTRPLRGPLNPSEVDHATDAWDTIDWLVKNVKESNGKVGMIGSSYEGFTVVMALTNPHPALKVAAPESPMIDGWMGDDWFNYGAFRQVNFDYFTGQLSKRGKGAGIPRQGHDDYSNFLQAGSAGDFAKAAGLEQLPWWHKLTEHAAYDSFWQEQALDKVMARTPLKVPTMWLQGLWDQEDMWGAIHSYAAMEPRDKSNKLNYLVMGPWRHSQVNSDASSLGALNFDGDTARQFRRDVLRPFFDQYLVDGAPKAATPPVFIYNTGENHWDRLQAWPRSCDKGCAAKSKPLYLQAGGKLSFQAPTAAQPAFEEYVSDPAKPVPFVPRPVDFGDRSMWTTWLVHDQRFVDGRPDVLTFVTEPLTAPLQIAGAPDVHLQASTSGSDSDWVVKLIDVYPDEMAADPKMGGYELPVSMAIFRGRYRESFSTPAPLAANQPLAFQFGLPTANHTFQPGHRVMVQVQSSLFPLYDRNPQTYVPNVFFAKPGDYQKATQRVYVAPGQGSYISLPVR", - "vessel_id": "v0", - "ecnumber": "3.1.1.43", - "organism": "Xanthomonas campestris pv. campestris", - "organism_tax_id": null, - "references": [] - }, - { - "id": "p1", - "name": "EA", - "constant": false, - "sequence": "MRRLAACLLATAVAAATSAALAQTSPMTPDITGKPFVAGDAANDYVKREVMIPMRDGVKLHTVIVLPKGARNAPIVLTRTPYDASGRTERLASPHMKDLLSAGDDVFVEGGYIRVFQDVRGKYGSEGDYVMTRPLRGPLNPSEVDHATDAWDTIDWLVKNVKESNGKVGMIGSSYEGFTVVMALTNPHPALKVAAPESPMIDGWMGDDWFNYGAFRQVNFDYFTGQLSKRGKGAGIPRQGHDDYSNFLQAGSAGDFAKAAGLEQLPWWHKLTEHAAYDSFWQEQALDKVMARTPLKVPTMWLQGLWDQEDMWGAIHSYAAMEPRDKSNKLNYLVMGPWRHSQVNSDASSLGALNFDGDTARQFRRDVLRPFFDQYLVDGAPKAATPPVFIYNTGENHWDRLQAWPRSCDKGCAAKSKPLYLQAGGKLSFQAPTAAQPAFEEYVSDPAKPVPFVPRPVDFGDRSMWTTWLVHDQRFVDGRPDVLTFVTEPLTAPLQIAGAPDVHLQASTSGSDSDWVVKLIDVYPDEMAADPKMGGYELPVSMAIFRGRYRESFSTPAPLAANQPLAFQFGLPTANHTFQPGHRVMVQVQSSLFPLYDRNPQTYVPNVFFAKPGDYQKATQRVYVAPGQGSYISLPVR", - "vessel_id": "v0", - "ecnumber": "3.1.1.43", - "organism": "Xanthomonas campestris pv. campestris", - "organism_tax_id": null, - "references": [] - }, - { - "id": "p2", - "name": "ED", - "constant": false, - "sequence": "MRRLAACLLATAVAAATSAALAQTSPMTPDITGKPFVAGDAANDYVKREVMIPMRDGVKLHTVIVLPKGARNAPIVLTRTPYDASGRTERLASPHMKDLLSAGDDVFVEGGYIRVFQDVRGKYGSEGDYVMTRPLRGPLNPSEVDHATDAWDTIDWLVKNVKESNGKVGMIGSSYEGFTVVMALTNPHPALKVAAPESPMIDGWMGDDWFNYGAFRQVNFDYFTGQLSKRGKGAGIPRQGHDDYSNFLQAGSAGDFAKAAGLEQLPWWHKLTEHAAYDSFWQEQALDKVMARTPLKVPTMWLQGLWDQEDMWGAIHSYAAMEPRDKSNKLNYLVMGPWRHSQVNSDASSLGALNFDGDTARQFRRDVLRPFFDQYLVDGAPKAATPPVFIYNTGENHWDRLQAWPRSCDKGCAAKSKPLYLQAGGKLSFQAPTAAQPAFEEYVSDPAKPVPFVPRPVDFGDRSMWTTWLVHDQRFVDGRPDVLTFVTEPLTAPLQIAGAPDVHLQASTSGSDSDWVVKLIDVYPDEMAADPKMGGYELPVSMAIFRGRYRESFSTPAPLAANQPLAFQFGLPTANHTFQPGHRVMVQVQSSLFPLYDRNPQTYVPNVFFAKPGDYQKATQRVYVAPGQGSYISLPVR", - "vessel_id": "v0", - "ecnumber": "3.1.1.43", - "organism": "Xanthomonas campestris pv. campestris", - "organism_tax_id": null, - "references": [] - } - ], - "complexes": [ - { - "id": "c0", - "name": "E\u00b7PGME", - "constant": false, - "participants": [ - "p0", - "s0" - ] - }, - { - "id": "c1", - "name": "E\u00b77-ADCA", - "constant": false, - "participants": [ - "p0", - "s1" - ] - }, - { - "id": "c2", - "name": "E\u00b7PG", - "constant": false, - "participants": [ - "p0", - "s3" - ] - }, - { - "id": "c3", - "name": "E\u00b7PGME\u00b7PGME", - "constant": false, - "participants": [ - "p0", - "s0", - "s0" - ] - }, - { - "id": "c4", - "name": "EA\u00b77-ADCA", - "constant": false, - "participants": [ - "p1", - "s1" - ] - }, - { - "id": "c5", - "name": "EA\u00b7PGME", - "constant": false, - "participants": [ - "p1", - "s0" - ] - }, - { - "id": "c6", - "name": "E\u00b7CEX", - "constant": false, - "participants": [ - "p0", - "s2" - ] - } - ], - "small_molecules": [ - { - "id": "s0", - "name": "PGME", - "constant": false, - "vessel_id": "v0", - "canonical_smiles": null, - "inchi": null, - "inchikey": null, - "references": [] - }, - { - "id": "s1", - "name": "7-ADCA", - "constant": false, - "vessel_id": "v0", - "canonical_smiles": null, - "inchi": null, - "inchikey": null, - "references": [] - }, - { - "id": "s2", - "name": "CEX", - "constant": false, - "vessel_id": "v0", - "canonical_smiles": null, - "inchi": null, - "inchikey": null, - "references": [] - }, - { - "id": "s3", - "name": "PG", - "constant": false, - "vessel_id": "v0", - "canonical_smiles": null, - "inchi": null, - "inchikey": null, - "references": [] - } - ], - "reactions": [ - { - "id": "r0", - "name": "reaction-1", - "reversible": false, - "kinetic_law": { - "equation": "v_r * (K_n * c1 - p0 * s1)", - "equation_type": "EquationType.RATE_LAW", - "species_id": null, - "variables": [ - { - "id": "c1", - "name": "c1", - "symbol": "c1" - }, - { - "id": "p0", - "name": "p0", - "symbol": "p0" - }, - { - "id": "s1", - "name": "s1", - "symbol": "s1" - } - ] - }, - "species": [ - { - "species_id": "c1", - "stoichiometry": -1.0 - }, - { - "species_id": "p0", - "stoichiometry": 1.0 - }, - { - "species_id": "s1", - "stoichiometry": 1.0 - } - ], - "modifiers": [] - }, - { - "id": "r1", - "name": "reaction-2", - "reversible": false, - "kinetic_law": { - "equation": "v_r * (K_s * c0 - p0 * s0)", - "equation_type": "EquationType.RATE_LAW", - "species_id": null, - "variables": [ - { - "id": "c0", - "name": "c0", - "symbol": "c0" - }, - { - "id": "p0", - "name": "p0", - "symbol": "p0" - }, - { - "id": "s0", - "name": "s0", - "symbol": "s0" - } - ] - }, - "species": [ - { - "species_id": "c0", - "stoichiometry": -1.0 - }, - { - "species_id": "p0", - "stoichiometry": 1.0 - }, - { - "species_id": "s0", - "stoichiometry": 1.0 - } - ], - "modifiers": [] - }, - { - "id": "r10", - "name": "reaction-11", - "reversible": false, - "kinetic_law": { - "equation": "k_4 * c4 - k_4b * c6", - "equation_type": "EquationType.RATE_LAW", - "species_id": null, - "variables": [ - { - "id": "c4", - "name": "c4", - "symbol": "c4" - }, - { - "id": "c6", - "name": "c6", - "symbol": "c6" - } - ] - }, - "species": [ - { - "species_id": "c4", - "stoichiometry": -1.0 - }, - { - "species_id": "c6", - "stoichiometry": 1.0 - } - ], - "modifiers": [] - }, - { - "id": "r11", - "name": "reaction-12", - "reversible": false, - "kinetic_law": { - "equation": "v_r * (K_p * c6 - p0 * s2)", - "equation_type": "EquationType.RATE_LAW", - "species_id": null, - "variables": [ - { - "id": "c6", - "name": "c6", - "symbol": "c6" - }, - { - "id": "p0", - "name": "p0", - "symbol": "p0" - }, - { - "id": "s2", - "name": "s2", - "symbol": "s2" - } - ] - }, - "species": [ - { - "species_id": "c6", - "stoichiometry": -1.0 - }, - { - "species_id": "p0", - "stoichiometry": 1.0 - }, - { - "species_id": "s2", - "stoichiometry": 1.0 - } - ], - "modifiers": [] - }, - { - "id": "r12", - "name": "Enzyme deactivation", - "reversible": false, - "kinetic_law": { - "equation": "k_d * p0", - "equation_type": "EquationType.RATE_LAW", - "species_id": null, - "variables": [ - { - "id": "p0", - "name": "p0", - "symbol": "p0" - } - ] - }, - "species": [ - { - "species_id": "p0", - "stoichiometry": -1.0 - }, - { - "species_id": "p2", - "stoichiometry": 1.0 - } - ], - "modifiers": [] - }, - { - "id": "r2", - "name": "reaction-3", - "reversible": false, - "kinetic_law": { - "equation": "k_2 * c0", - "equation_type": "EquationType.RATE_LAW", - "species_id": null, - "variables": [ - { - "id": "c0", - "name": "c0", - "symbol": "c0" - } - ] - }, - "species": [ - { - "species_id": "c0", - "stoichiometry": -1.0 - }, - { - "species_id": "p1", - "stoichiometry": 1.0 - } - ], - "modifiers": [] - }, - { - "id": "r3", - "name": "reaction-4", - "reversible": false, - "kinetic_law": { - "equation": "v_r * (K_si * c3 - c0 * s0)", - "equation_type": "EquationType.RATE_LAW", - "species_id": null, - "variables": [ - { - "id": "c0", - "name": "c0", - "symbol": "c0" - }, - { - "id": "c3", - "name": "c3", - "symbol": "c3" - }, - { - "id": "s0", - "name": "s0", - "symbol": "s0" - } - ] - }, - "species": [ - { - "species_id": "c0", - "stoichiometry": 1.0 - }, - { - "species_id": "c3", - "stoichiometry": -1.0 - }, - { - "species_id": "s0", - "stoichiometry": 1.0 - } - ], - "modifiers": [] - }, - { - "id": "r4", - "name": "reaction-5", - "reversible": false, - "kinetic_law": { - "equation": "v_r * (K_si * c5 - p1 * s0)", - "equation_type": "EquationType.RATE_LAW", - "species_id": null, - "variables": [ - { - "id": "c5", - "name": "c5", - "symbol": "c5" - }, - { - "id": "p1", - "name": "p1", - "symbol": "p1" - }, - { - "id": "s0", - "name": "s0", - "symbol": "s0" - } - ] - }, - "species": [ - { - "species_id": "c5", - "stoichiometry": -1.0 - }, - { - "species_id": "p1", - "stoichiometry": 1.0 - }, - { - "species_id": "s0", - "stoichiometry": 1.0 - } - ], - "modifiers": [] - }, - { - "id": "r5", - "name": "reaction-6", - "reversible": false, - "kinetic_law": { - "equation": "k_6 * c5", - "equation_type": "EquationType.RATE_LAW", - "species_id": null, - "variables": [ - { - "id": "c5", - "name": "c5", - "symbol": "c5" - } - ] - }, - "species": [ - { - "species_id": "c5", - "stoichiometry": -1.0 - }, - { - "species_id": "p0", - "stoichiometry": 1.0 - }, - { - "species_id": "s3", - "stoichiometry": 1.0 - } - ], - "modifiers": [] - }, - { - "id": "r6", - "name": "reaction-7", - "reversible": false, - "kinetic_law": { - "equation": "k_3 * p1", - "equation_type": "EquationType.RATE_LAW", - "species_id": null, - "variables": [ - { - "id": "p1", - "name": "p1", - "symbol": "p1" - } - ] - }, - "species": [ - { - "species_id": "p0", - "stoichiometry": 1.0 - }, - { - "species_id": "p1", - "stoichiometry": -1.0 - }, - { - "species_id": "s3", - "stoichiometry": 1.0 - } - ], - "modifiers": [] - }, - { - "id": "r7", - "name": "reaction-8", - "reversible": false, - "kinetic_law": { - "equation": "v_r * (K_pg * c2 - p0 * s3)", - "equation_type": "EquationType.RATE_LAW", - "species_id": null, - "variables": [ - { - "id": "c2", - "name": "c2", - "symbol": "c2" - }, - { - "id": "p0", - "name": "p0", - "symbol": "p0" - }, - { - "id": "s3", - "name": "s3", - "symbol": "s3" - } - ] - }, - "species": [ - { - "species_id": "c2", - "stoichiometry": -1.0 - }, - { - "species_id": "p0", - "stoichiometry": 1.0 - }, - { - "species_id": "s3", - "stoichiometry": 1.0 - } - ], - "modifiers": [] - }, - { - "id": "r8", - "name": "reaction-9", - "reversible": false, - "kinetic_law": { - "equation": "v_r * (K_n * c4 - p1 * s1)", - "equation_type": "EquationType.RATE_LAW", - "species_id": null, - "variables": [ - { - "id": "c4", - "name": "c4", - "symbol": "c4" - }, - { - "id": "p1", - "name": "p1", - "symbol": "p1" - }, - { - "id": "s1", - "name": "s1", - "symbol": "s1" - } - ] - }, - "species": [ - { - "species_id": "c4", - "stoichiometry": -1.0 - }, - { - "species_id": "p1", - "stoichiometry": 1.0 - }, - { - "species_id": "s1", - "stoichiometry": 1.0 - } - ], - "modifiers": [] - }, - { - "id": "r9", - "name": "reaction-10", - "reversible": false, - "kinetic_law": { - "equation": "k_5 * c4", - "equation_type": "EquationType.RATE_LAW", - "species_id": null, - "variables": [ - { - "id": "c4", - "name": "c4", - "symbol": "c4" - } - ] - }, - "species": [ - { - "species_id": "c4", - "stoichiometry": -1.0 - }, - { - "species_id": "p0", - "stoichiometry": 1.0 - }, - { - "species_id": "s1", - "stoichiometry": 1.0 - }, - { - "species_id": "s3", - "stoichiometry": 1.0 - } - ], - "modifiers": [] - } - ], - "measurements": [ - { - "id": "m0", - "name": "Cephalexin synthesis 1", - "species_data": [ - { - "species_id": "p0", - "initial": 0.0002, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - }, - { - "species_id": "s0", - "initial": 20.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.645, - 12.45, - 16.385, - 20.0, - 5.135, - 9.255 - ], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - }, - { - "species_id": "s1", - "initial": 10.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 10.0, - 10.575, - 5.18, - 5.815, - 5.94, - 7.025, - 7.57, - 8.72, - 8.945, - 9.87 - ], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - }, - { - "species_id": "s2", - "initial": 0.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 0.0, - 0.575, - 1.075, - 1.915, - 2.66, - 3.24, - 3.885, - 4.815, - 4.9, - 5.755 - ], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - }, - { - "species_id": "s3", - "initial": 2.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 11.965, - 17.28, - 19.93, - 2.0, - 21.36, - 22.55, - 23.38, - 3.705, - 5.77, - 8.035 - ], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - } - ], - "group_id": null, - "ph": null, - "temperature": null, - "temperature_unit": null - }, - { - "id": "m1", - "name": "Cephalexin synthesis 2", - "species_data": [ - { - "species_id": "p0", - "initial": 0.0002, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - }, - { - "species_id": "s0", - "initial": 20.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 0.0, - 0.0, - 0.0, - 0.0, - 1.32, - 12.67, - 16.5, - 20.0, - 5.91, - 9.915 - ], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - }, - { - "species_id": "s1", - "initial": 20.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 12.625, - 13.14, - 14.2, - 14.82, - 15.445, - 16.255, - 17.02, - 18.5, - 18.58, - 20.0 - ], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - }, - { - "species_id": "s2", - "initial": 0.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 0.0, - 2.0, - 3.205, - 4.1, - 5.09, - 5.63, - 6.385, - 7.17, - 7.855, - 8.225 - ], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - }, - { - "species_id": "s3", - "initial": 1.3, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 1.3, - 13.25, - 16.055, - 17.62, - 19.34, - 2.955, - 20.8, - 4.615, - 6.175, - 8.8 - ], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - } - ], - "group_id": null, - "ph": null, - "temperature": null, - "temperature_unit": null - }, - { - "id": "m2", - "name": "Cephalexin synthesis 3", - "species_data": [ - { - "species_id": "p0", - "initial": 0.0002, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - }, - { - "species_id": "s0", - "initial": 20.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.91, - 13.005, - 20.0, - 4.0, - 7.21, - 9.505 - ], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - }, - { - "species_id": "s1", - "initial": 40.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 29.985, - 30.405, - 30.675, - 31.905, - 32.49, - 33.045, - 33.87, - 34.525, - 36.555, - 40.0 - ], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - }, - { - "species_id": "s2", - "initial": 0.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 0.0, - 3.59, - 5.57, - 5.69, - 6.39, - 6.85, - 7.255, - 8.18, - 8.24, - 8.945 - ], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - }, - { - "species_id": "s3", - "initial": 5.1, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 10.13, - 12.93, - 14.565, - 15.8, - 16.98, - 18.15, - 5.1, - 6.365, - 7.59, - 8.59 - ], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - } - ], - "group_id": null, - "ph": null, - "temperature": null, - "temperature_unit": null - }, - { - "id": "m3", - "name": "Cephalexin synthesis 4", - "species_data": [ - { - "species_id": "p0", - "initial": 0.0002, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - }, - { - "species_id": "s0", - "initial": 20.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 0.0, - 0.0, - 0.0, - 0.385, - 1.455, - 11.64, - 15.345, - 20.0, - 5.265, - 8.975 - ], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - }, - { - "species_id": "s1", - "initial": 60.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 47.6, - 48.185, - 48.265, - 49.0, - 50.76, - 51.6, - 52.505, - 53.58, - 56.8, - 60.0 - ], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - }, - { - "species_id": "s2", - "initial": 0.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 0.0, - 10.2, - 11.065, - 11.325, - 3.77, - 6.11, - 7.74, - 9.005, - 9.595, - 9.66 - ], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - }, - { - "species_id": "s3", - "initial": 1.9, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 1.9, - 10.61, - 12.0, - 13.075, - 14.24, - 2.94, - 3.99, - 4.935, - 6.305, - 8.87 - ], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - } - ], - "group_id": null, - "ph": null, - "temperature": null, - "temperature_unit": null - }, - { - "id": "m4", - "name": "Cephalexin synthesis 5", - "species_data": [ - { - "species_id": "p0", - "initial": 0.0002, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - }, - { - "species_id": "s0", - "initial": 20.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 0.0, - 0.0, - 0.0, - 0.35, - 1.46, - 12.075, - 15.34, - 20.0, - 5.515, - 9.335 - ], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - }, - { - "species_id": "s1", - "initial": 42.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 29.595, - 30.615, - 31.46, - 31.83, - 32.985, - 34.06, - 34.08, - 36.06, - 38.405, - 42.0 - ], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - }, - { - "species_id": "s2", - "initial": 0.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 0.0, - 3.42, - 5.52, - 6.695, - 6.99, - 7.47, - 8.515, - 8.78, - 9.44, - 9.875 - ], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - }, - { - "species_id": "s3", - "initial": 1.5, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 1.5, - 11.49, - 13.08, - 14.505, - 15.63, - 2.815, - 4.105, - 5.085, - 6.69, - 9.535 - ], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - } - ], - "group_id": null, - "ph": null, - "temperature": null, - "temperature_unit": null - }, - { - "id": "m5", - "name": "Cephalexin synthesis 6", - "species_data": [ - { - "species_id": "p0", - "initial": 0.0002, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - }, - { - "species_id": "s0", - "initial": 40.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 0.84, - 1.695, - 10.1, - 21.225, - 27.01, - 3.33, - 31.035, - 34.595, - 40.0, - 5.9 - ], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - }, - { - "species_id": "s1", - "initial": 42.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 22.595, - 23.0, - 23.09, - 24.5, - 24.8, - 29.17, - 32.805, - 34.9, - 37.9, - 42.0 - ], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - }, - { - "species_id": "s2", - "initial": 0.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 0.0, - 11.1, - 15.255, - 15.645, - 15.81, - 16.345, - 16.5, - 3.625, - 6.4, - 8.5 - ], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - }, - { - "species_id": "s3", - "initial": 3.3, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 11.1, - 17.315, - 20.5, - 22.605, - 24.925, - 26.5, - 3.3, - 4.75, - 6.13, - 7.52 - ], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - } - ], - "group_id": null, - "ph": null, - "temperature": null, - "temperature_unit": null - }, - { - "id": "m6", - "name": "Cephalexin synthesis 7", - "species_data": [ - { - "species_id": "p0", - "initial": 0.0002, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - }, - { - "species_id": "s0", - "initial": 76.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 19.7, - 24.655, - 30.4, - 38.03, - 46.9, - 60.2, - 65.6, - 69.3, - 73.36, - 76.0 - ], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - }, - { - "species_id": "s1", - "initial": 40.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 18.36, - 19.445, - 20.805, - 22.94, - 25.965, - 31.025, - 34.09, - 36.175, - 38.51, - 40.0 - ], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - }, - { - "species_id": "s2", - "initial": 0.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 0.0, - 10.295, - 15.76, - 18.74, - 20.755, - 21.89, - 22.875, - 3.04, - 5.195, - 7.28 - ], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - }, - { - "species_id": "s3", - "initial": 5.7, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 10.4, - 13.49, - 20.83, - 26.8, - 32.53, - 36.77, - 41.13, - 5.7, - 7.21, - 8.735 - ], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - } - ], - "group_id": null, - "ph": null, - "temperature": null, - "temperature_unit": null - }, - { - "id": "m7", - "name": "Cephalexin synthesis 8", - "species_data": [ - { - "species_id": "p0", - "initial": 0.0002, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - }, - { - "species_id": "s0", - "initial": 140.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 124.6, - 125.96, - 126.75, - 128.395, - 130.085, - 132.905, - 134.745, - 136.0, - 138.2, - 140.0 - ], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - }, - { - "species_id": "s1", - "initial": 40.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 32.8, - 33.035, - 33.11, - 33.71, - 34.61, - 36.155, - 36.88, - 37.725, - 38.8, - 40.0 - ], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - }, - { - "species_id": "s2", - "initial": 0.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 0.0, - 1.53, - 2.395, - 3.04, - 3.895, - 4.99, - 5.545, - 5.98, - 6.325, - 6.625 - ], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - }, - { - "species_id": "s3", - "initial": 14.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "DataTypes.CONCENTRATION", - "prepared": null, - "data": [ - 14.0, - 17.9, - 18.85, - 19.735, - 20.84, - 22.595, - 23.62, - 25.0, - 26.025, - 26.93 - ], - "time": [ - 0.0, - 1.0, - 10.0, - 15.0, - 2.0, - 20.0, - 25.0, - 3.0, - 30.0, - 5.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "UnitType.SECOND", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false - } - ], - "group_id": null, - "ph": null, - "temperature": null, - "temperature_unit": null - } - ], - "equations": [], - "parameters": [ - { - "id": "K_n", - "name": "", - "symbol": "K_n", - "value": null, - "unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "initial_value": null, - "upper": null, - "lower": null, - "stderr": null, - "constant": false - }, - { - "id": "K_si", - "name": "", - "symbol": "K_si", - "value": null, - "unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "initial_value": null, - "upper": null, - "lower": null, - "stderr": null, - "constant": false - }, - { - "id": "v_r", - "name": "", - "symbol": "v_r", - "value": null, - "unit": { - "id": "u5", - "name": "l / min mmole", - "base_units": [ - { - "kind": "UnitType.LITRE", - "exponent": 1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "UnitType.MOLE", - "exponent": -1, - "multiplier": 1.0, - "scale": -3.0 - }, - { - "kind": "UnitType.SECOND", - "exponent": -1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "initial_value": null, - "upper": null, - "lower": null, - "stderr": null, - "constant": true - } - ] -} \ No newline at end of file diff --git a/dev-examples/odes/data.tsv b/dev-examples/odes/data.tsv deleted file mode 100644 index f99de1f4..00000000 --- a/dev-examples/odes/data.tsv +++ /dev/null @@ -1,23 +0,0 @@ -time s0 s1 id -0.0 0.0 10.0 m0 -1.0 1.0 9.0 m0 -2.0 2.0 8.0 m0 -3.0 3.0 7.0 m0 -4.0 4.0 6.0 m0 -5.0 5.0 5.0 m0 -6.0 6.0 4.0 m0 -7.0 7.0 3.0 m0 -8.0 8.0 2.0 m0 -9.0 9.0 1.0 m0 -10.0 10.0 0.0 m0 -0.0 0.0 10.0 m1 -1.0 1.0 9.0 m1 -2.0 2.0 8.0 m1 -3.0 3.0 7.0 m1 -4.0 4.0 6.0 m1 -5.0 5.0 5.0 m1 -6.0 6.0 4.0 m1 -7.0 7.0 3.0 m1 -8.0 8.0 2.0 m1 -9.0 9.0 1.0 m1 -10.0 10.0 0.0 m1 diff --git a/dev-examples/odes/enzymeml.json b/dev-examples/odes/enzymeml.json deleted file mode 100644 index ac2726ad..00000000 --- a/dev-examples/odes/enzymeml.json +++ /dev/null @@ -1,1017 +0,0 @@ -{ - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "name": "schema:title", - "references": { - "@id": "schema:citation", - "@type": "@id" - }, - "created": "schema:dateCreated", - "modified": "schema:dateModified", - "creators": "schema:creator" - }, - "@id": "enzml:EnzymeMLDocument/bb1cafa6-fe2a-4ad1-b482-5f70fcddb14d", - "@type": [ - "enzml:EnzymeMLDocument" - ], - "name": "Test", - "references": [], - "creators": [], - "vessels": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "name": "schema:name", - "volume": "OBO:OBI_0002139" - }, - "@id": "enzml:Vessel/cf0cec45-255b-4aac-80af-8a0ba95f0c8a", - "@type": [ - "enzml:Vessel", - "OBO:OBI_0400081" - ], - "id": "v0", - "name": "Vessel 1", - "volume": 10.0, - "unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000098", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u0", - "name": "ml", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/5b814786-75f3-4d74-8d67-e1e898835ea9", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "litre", - "exponent": 1, - "scale": -3.0 - } - ] - }, - "constant": true - } - ], - "proteins": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@type": "@id" - }, - "name": "schema:name", - "sequence": "OBO:GSSO_007262", - "vessel_id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "organism": "OBO:OBI_0100026", - "organism_tax_id": { - "@type": "@id" - }, - "references": { - "@id": "schema:citation", - "@type": "@id" - } - }, - "@id": "enzml:Protein/cd86e6ac-619a-471f-9c25-7c9de9e69ecd", - "@type": [ - "enzml:Protein", - "schema:Protein" - ], - "id": "p0", - "name": "Enzyme", - "constant": false, - "sequence": "MTEY", - "vessel_id": "v0", - "ecnumber": "1.1.1.1", - "organism": "E.coli", - "organism_tax_id": "12345", - "references": [] - } - ], - "complexes": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "name": "schema:name", - "participants": { - "@type": "@id" - } - }, - "@id": "enzml:Complex/1a22de61-05d9-42b0-9f59-8d7f12350d82", - "@type": [ - "enzml:Complex" - ], - "id": "c0", - "name": "Enzyme-Substrate Complex", - "constant": false, - "participants": [ - "p0", - "s0" - ] - } - ], - "small_molecules": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "name": "schema:name", - "vessel_id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "references": { - "@id": "schema:citation", - "@type": "@id" - } - }, - "@id": "enzml:SmallMolecule/7ddb6f4f-e481-44b4-a492-c33a11f69d20", - "@type": [ - "enzml:SmallMolecule" - ], - "id": "s0", - "name": "Substrate", - "constant": false, - "vessel_id": "v0", - "canonical_smiles": "CC(=O)O", - "inchikey": "QTBSBXVTEAMEQO-UHFFFAOYSA-N", - "references": [] - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "name": "schema:name", - "vessel_id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "references": { - "@id": "schema:citation", - "@type": "@id" - } - }, - "@id": "enzml:SmallMolecule/821a5000-8817-494a-bef6-8d6ca7a79063", - "@type": [ - "enzml:SmallMolecule" - ], - "id": "s1", - "name": "Product", - "constant": false, - "vessel_id": "v0", - "canonical_smiles": "CC(=O)O", - "inchikey": "QTBSBXVTEAMEQO-UHFFFAOYSA-N", - "references": [] - } - ], - "reactions": [], - "measurements": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "group_id": { - "@type": "@id" - } - }, - "@id": "enzml:Measurement/a0bb13f4-09e2-4ef6-88c3-81a45783d52a", - "@type": [ - "enzml:Measurement" - ], - "id": "m0", - "name": "m0", - "species_data": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - }, - "@id": "enzml:MeasurementData/d2b27968-a75d-4f7b-992f-74bd2601cf83", - "@type": [ - "enzml:MeasurementData" - ], - "species_id": "s0", - "initial": 0.0, - "data_unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000063", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u2", - "name": "mmol / l", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/5a6b868d-f0e5-46c1-99c6-c6ad46b0bef6", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "mole", - "exponent": 1, - "scale": -3.0 - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/798cadb6-71d8-4e9d-a8f9-aaa52c85a143", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "litre", - "exponent": -1, - "scale": 1.0 - } - ] - }, - "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", - "data": [ - 0.0, - 1.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0, - 7.0, - 8.0, - 9.0, - 10.0 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0, - 7.0, - 8.0, - 9.0, - 10.0 - ], - "time_unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000010", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u1", - "name": "s", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/0aa687a8-60e2-4586-97b4-ae4c53eb16a3", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "second", - "exponent": 1, - "scale": 1.0 - } - ] - }, - "is_simulated": false - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - }, - "@id": "enzml:MeasurementData/6e9ff229-02f2-45dd-ab30-00092b574a18", - "@type": [ - "enzml:MeasurementData" - ], - "species_id": "s1", - "initial": 10.0, - "data_unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000063", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u2", - "name": "mmol / l", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/5a6b868d-f0e5-46c1-99c6-c6ad46b0bef6", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "mole", - "exponent": 1, - "scale": -3.0 - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/798cadb6-71d8-4e9d-a8f9-aaa52c85a143", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "litre", - "exponent": -1, - "scale": 1.0 - } - ] - }, - "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", - "data": [ - 10.0, - 9.0, - 8.0, - 7.0, - 6.0, - 5.0, - 4.0, - 3.0, - 2.0, - 1.0, - 0.0 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0, - 7.0, - 8.0, - 9.0, - 10.0 - ], - "time_unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000010", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u1", - "name": "s", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/0aa687a8-60e2-4586-97b4-ae4c53eb16a3", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "second", - "exponent": 1, - "scale": 1.0 - } - ] - }, - "is_simulated": false - } - ], - "ph": 7.0, - "temperature": 298.15, - "temperature_unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000012", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u3", - "name": "K", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/3da5f43e-3bc8-47d2-b646-d964453b6b8c", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "kelvin", - "exponent": 1, - "scale": 1.0 - } - ] - } - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "group_id": { - "@type": "@id" - } - }, - "@id": "enzml:Measurement/1c7c87dc-9faa-49b5-8775-0d55391dcfb3", - "@type": [ - "enzml:Measurement" - ], - "id": "m1", - "name": "m1", - "species_data": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - }, - "@id": "enzml:MeasurementData/a6e83621-8b3b-4dfe-8ac7-010c8b666330", - "@type": [ - "enzml:MeasurementData" - ], - "species_id": "s0", - "initial": 0.0, - "data_unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000063", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u2", - "name": "mmol / l", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/5a6b868d-f0e5-46c1-99c6-c6ad46b0bef6", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "mole", - "exponent": 1, - "scale": -3.0 - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/798cadb6-71d8-4e9d-a8f9-aaa52c85a143", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "litre", - "exponent": -1, - "scale": 1.0 - } - ] - }, - "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", - "data": [ - 0.0, - 1.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0, - 7.0, - 8.0, - 9.0, - 10.0 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0, - 7.0, - 8.0, - 9.0, - 10.0 - ], - "time_unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000010", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u1", - "name": "s", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/0aa687a8-60e2-4586-97b4-ae4c53eb16a3", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "second", - "exponent": 1, - "scale": 1.0 - } - ] - }, - "is_simulated": false - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - }, - "@id": "enzml:MeasurementData/1314c3a8-6422-4192-985c-eb8fa1d99980", - "@type": [ - "enzml:MeasurementData" - ], - "species_id": "s1", - "initial": 10.0, - "data_unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000063", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u2", - "name": "mmol / l", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/5a6b868d-f0e5-46c1-99c6-c6ad46b0bef6", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "mole", - "exponent": 1, - "scale": -3.0 - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/798cadb6-71d8-4e9d-a8f9-aaa52c85a143", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "litre", - "exponent": -1, - "scale": 1.0 - } - ] - }, - "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", - "data": [ - 10.0, - 9.0, - 8.0, - 7.0, - 6.0, - 5.0, - 4.0, - 3.0, - 2.0, - 1.0, - 0.0 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0, - 7.0, - 8.0, - 9.0, - 10.0 - ], - "time_unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000010", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u1", - "name": "s", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/0aa687a8-60e2-4586-97b4-ae4c53eb16a3", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "second", - "exponent": 1, - "scale": 1.0 - } - ] - }, - "is_simulated": false - } - ], - "ph": 7.0, - "temperature": 298.15, - "temperature_unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000012", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u3", - "name": "K", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/3da5f43e-3bc8-47d2-b646-d964453b6b8c", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "kelvin", - "exponent": 1, - "scale": 1.0 - } - ] - } - } - ], - "equations": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - }, - "@id": "enzml:Equation/a4665d71-b871-4ed3-8a7b-d5e7442b8725", - "@type": [ - "enzml:Equation" - ], - "equation": "E_tot*kcat*s0/(K_m + s0)", - "equation_type": "ode", - "species_id": "s1", - "variables": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": "schema:identifier" - }, - "@id": "enzml:Variable/441b9040-316f-49cb-a330-31e97b577f17", - "@type": [ - "enzml:Variable" - ], - "id": "s0", - "name": "s0", - "symbol": "s0" - } - ] - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - }, - "@id": "enzml:Equation/5f294b78-c121-482d-99be-3e46bd61590a", - "@type": [ - "enzml:Equation" - ], - "equation": "100", - "equation_type": "initialAssignment", - "species_id": "E_tot", - "variables": [] - } - ], - "parameters": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - }, - "@id": "enzml:Parameter/8edaa5b7-3744-46b8-ae22-17ed824e4a61", - "@type": [ - "enzml:Parameter" - ], - "id": "kcat", - "name": "kcat", - "symbol": "kcat", - "unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000010", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u4", - "name": "1 / s", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/0aa687a8-60e2-4586-97b4-ae4c53eb16a3", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "second", - "exponent": -1, - "scale": 1.0 - } - ] - }, - "upper": 100.0, - "lower": 0.0, - "stderr": 0.1, - "constant": true - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - }, - "@id": "enzml:Parameter/8d12e348-6953-44af-b5b4-58691e08b71b", - "@type": [ - "enzml:Parameter" - ], - "id": "E_tot", - "name": "E_tot", - "symbol": "E_tot", - "unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000063", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u2", - "name": "mmol / l", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/5a6b868d-f0e5-46c1-99c6-c6ad46b0bef6", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "mole", - "exponent": 1, - "scale": -3.0 - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/798cadb6-71d8-4e9d-a8f9-aaa52c85a143", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "litre", - "exponent": -1, - "scale": 1.0 - } - ] - }, - "upper": 100.0, - "lower": 0.0, - "stderr": 0.1, - "constant": true - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - }, - "@id": "enzml:Parameter/c95843d7-8798-455d-b48e-e8db56971579", - "@type": [ - "enzml:Parameter" - ], - "id": "K_m", - "name": "K_m", - "symbol": "K_m", - "unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000063", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u2", - "name": "mmol / l", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/5a6b868d-f0e5-46c1-99c6-c6ad46b0bef6", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "mole", - "exponent": 1, - "scale": -3.0 - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/798cadb6-71d8-4e9d-a8f9-aaa52c85a143", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "litre", - "exponent": -1, - "scale": 1.0 - } - ] - }, - "upper": 100.0, - "lower": 0.0, - "stderr": 0.1, - "constant": true - } - ] -} \ No newline at end of file diff --git a/dev-examples/odes/odes_example.omex b/dev-examples/odes/odes_example.omex deleted file mode 100644 index bfdc0204c76a21af43b3c0a319e52faff3c509dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2427 zcmZ{mX*3jk8^*^T*|H18V>EUtyAZ}U5}pjkJ{env?1vVL&y((yxbqwE8ytXzQB{@>VOG#H|w_58S${~VwYpxu($m618 z$rZ&*jLaZ|{Ss`IQHGr=aD54iypZSY7KE_4>$|69^*0nbWBiFFBE?v zJp6uf*l-vR7}wyACfS`@{jkZPU_GK*<2>IiQlB#ZS>|&Is$e;xG(Zk=eX!c~Pj&M; zF>SOX(C4Q3!=!m{4KGejL!a#fwe2EJGa>ZbeDWL#6L z$ky4q{5!eDJ8cCM6BBz0je=5ksf|{5E`efPWg2|gFg$;lH-$(aE_A!AMAn1M;>D@S zN{Q0qhLI3^ta+1YB0QrYBV2*e3H&w1h9P$t*HVw z40`Ohm&l8e80~uy#+?LpW|;Xi$y^2R74^v0R+stNF5E_}mac-`=@^PbbHEXejZUn` z+Qwo)r9BD|CRn^Ikg$%P(0BIMzQ7Jr>F3}%>_ykrkDT>lbq$^9EeSw9YH`we16Ayq zve{W070WHMomqEsHn7i-%J!?YcILcZY9g?Mz?zGU#tg^AqmuEWV)7!D_BWoKT zBw`}Lg70}Kul%6P;q=jl8!X>HuYTvXU|406PVybI^k)JjDONtKxz34Y!-$Ts=V+ApEU`!0eelV?P8oLF){f38sOmRAun9pxo^!CpPiQ%LdCnYZn>1MH)w zq3Q11wjv59NO)fx@}QKuf7J)lBH2i4oazUk@~zpLH%?_MC^gO$D-2wfcI}_C49fkh zRXRA*;Sx{x$Ez#SQQ{pVQP0g^;1_QNJnip$Ia4jZcGV{#1_%BCmJwEwfpj_;!DJyH z(ZxX4Bx-^-^o1g}BRELEq_LQ6wyDs8bBOF9Fr|C;dc{gV)&*Kayi46kYAHlkgaHfP z7u4lxw?2SC*p*psvczZ$9+HSx=Uu@Q!G6q{p0}Rwt`I4xGZrfjNBVbbG__XXo6F3P zA+)(1o7;16o7L$$;~v8@veto&jqY+p;FmG(4!A%gP`Jb8*jF@l$ig=%s8703zLd^B zVC-U0Y5=MA%+OJD?ah#ZW@9GFpB})j!Us7XwAHy6gQ2)gAYq?=F1wpPUi&nAHbT*y zH-pDa-d(pTde8O;LJ%E6zU1EHP9=N^ zh-C?MzGs>`MJAKucPK=LSn{5Fgwo+0KGGvc}{C?Qj#Lv%B5jlb#QF3#PuIb(7 zQtDh8af+`-$n|>qatlwCv=j1~LQG8Br7l0-^1NUyQ1|qS*Mf!Zld9OF&%s3w&}71D zUmf$0I37+f$Rj3&IY`EhZEa&8qqnooS`7oSv9gW0*%~bVCNGynXT#O0!O%Qh6$kf> zWum~0=CkV|2!lvLCj0%a+)PW=Yb~b&^_nG!@QlPsX+08bxW?04pa;t3Qb%A`$BqO_ z>|=;e1=0%$Y_Dv|SglfO#|2&a&~-44_)4X`v$eHs)+y>Za8n<>7b=pC8CYT!#L`iw zVOek-C$N0O;ZrnvS5KmUD*E(lR@f|cp-Ur--Ek{QphlsGxfveOKI~7QywQ}jV*jb; zDMcvuuCj}V`j>0P*O2|G)af|o+x!Gq+kt?`U7Pgk)C#dYxM|$r8vl8OB5K06KQin4 z6z$tV7E(iAZ@T~vsfw6>0Nixkd6yR&2Rc`qJ^#pmgII-wYOYwqB-2Eb4Pd5)nh@!r z?)&=8uf!ubEL1TYz$_sx8T|JYaRo^p1+#z70M#bjwn(s`tMnOHR2 zVoJC(iCHmy?{1!FX{UByG%8x|hF$#*t@>hk1H2YrS$ltrB`tRIQK<+8Do^Na!q`nZ z-zmECS!8}nBkkarl{wQ%lK=o1PNw8U J+kO!P`~$E%XafKM diff --git a/dev-examples/odes/odes_example.xml b/dev-examples/odes/odes_example.xml deleted file mode 100644 index 18db5b69..00000000 --- a/dev-examples/odes/odes_example.xml +++ /dev/null @@ -1,241 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Vessel 1 - 10.0 - - - - - - - - - - - - - Enzyme - MTEY - E.coli - - - - - - 1.1.1.1 - E.coli - 12345 - MTEY - - - - - - - - Enzyme-Substrate Complex - - - - - p0 - s0 - - - - - - - - Substrate - - - - - QTBSBXVTEAMEQO-UHFFFAOYSA-N - CC(=O)O - - - - - - - - Product - - - - - QTBSBXVTEAMEQO-UHFFFAOYSA-N - CC(=O)O - - - - - - - - - - - - - - 0.0 - 100.0 - 0.1 - - - - - - - - - - - - 0.0 - 100.0 - 0.1 - - - - - - - - - - - - 0.0 - 100.0 - 0.1 - - - - - - - - 100 - - - - - - - - - - - - - - - - E_tot - kcat - s0 - - - - K_m - s0 - - - - - - - diff --git a/dev-examples/odes/odes_example_test.xml b/dev-examples/odes/odes_example_test.xml deleted file mode 100644 index d9768e99..00000000 --- a/dev-examples/odes/odes_example_test.xml +++ /dev/null @@ -1,241 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Vessel 1 - 10.0 - - - - - - - - - - - - - Enzyme - MTEY - E.coli - - - - - - 1.1.1.1 - E.coli - 12345 - MTEY - - - - - - - - Enzyme-Substrate Complex - - - - - p0 - s0 - - - - - - - - Substrate - - - - - QTBSBXVTEAMEQO-UHFFFAOYSA-N - CC(=O)O - - - - - - - - Product - - - - - QTBSBXVTEAMEQO-UHFFFAOYSA-N - CC(=O)O - - - - - - - - - - - - - - 0.0 - 100.0 - 0.1 - - - - - - - - - - - - 0.0 - 100.0 - 0.1 - - - - - - - - - - - - 0.0 - 100.0 - 0.1 - - - - - - - - 100 - - - - - - - - - - - - - - - - E_tot - kcat - s0 - - - - K_m - s0 - - - - - - - diff --git a/dev-examples/reactions/data.tsv b/dev-examples/reactions/data.tsv deleted file mode 100644 index f99de1f4..00000000 --- a/dev-examples/reactions/data.tsv +++ /dev/null @@ -1,23 +0,0 @@ -time s0 s1 id -0.0 0.0 10.0 m0 -1.0 1.0 9.0 m0 -2.0 2.0 8.0 m0 -3.0 3.0 7.0 m0 -4.0 4.0 6.0 m0 -5.0 5.0 5.0 m0 -6.0 6.0 4.0 m0 -7.0 7.0 3.0 m0 -8.0 8.0 2.0 m0 -9.0 9.0 1.0 m0 -10.0 10.0 0.0 m0 -0.0 0.0 10.0 m1 -1.0 1.0 9.0 m1 -2.0 2.0 8.0 m1 -3.0 3.0 7.0 m1 -4.0 4.0 6.0 m1 -5.0 5.0 5.0 m1 -6.0 6.0 4.0 m1 -7.0 7.0 3.0 m1 -8.0 8.0 2.0 m1 -9.0 9.0 1.0 m1 -10.0 10.0 0.0 m1 diff --git a/dev-examples/reactions/enzymeml.json b/dev-examples/reactions/enzymeml.json deleted file mode 100644 index fa61615f..00000000 --- a/dev-examples/reactions/enzymeml.json +++ /dev/null @@ -1,972 +0,0 @@ -{ - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "name": "schema:title", - "references": { - "@id": "schema:citation", - "@type": "@id" - }, - "created": "schema:dateCreated", - "modified": "schema:dateModified", - "creators": "schema:creator" - }, - "@id": "enzml:EnzymeMLDocument/ade60195-1a49-4643-9a7f-a3f4569e080f", - "@type": [ - "enzml:EnzymeMLDocument" - ], - "name": "Test", - "references": [], - "creators": [], - "vessels": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "name": "schema:name", - "volume": "OBO:OBI_0002139" - }, - "@id": "enzml:Vessel/dca62013-0979-400d-9390-6d3fc9992b3b", - "@type": [ - "enzml:Vessel", - "OBO:OBI_0400081" - ], - "id": "v0", - "name": "Vessel 1", - "volume": 10.0, - "unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000098", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u0", - "name": "ml", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/48e1f6d3-a632-49ab-9373-ced5416b3ee8", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "litre", - "exponent": 1, - "scale": -3.0 - } - ] - }, - "constant": true - } - ], - "proteins": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@type": "@id" - }, - "name": "schema:name", - "sequence": "OBO:GSSO_007262", - "vessel_id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "organism": "OBO:OBI_0100026", - "organism_tax_id": { - "@type": "@id" - }, - "references": { - "@id": "schema:citation", - "@type": "@id" - } - }, - "@id": "enzml:Protein/da73d1bd-7ba7-4a21-916a-83804274eb57", - "@type": [ - "enzml:Protein", - "schema:Protein" - ], - "id": "p0", - "name": "Enzyme", - "constant": false, - "sequence": "MTEY", - "vessel_id": "v0", - "references": [] - } - ], - "complexes": [], - "small_molecules": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "name": "schema:name", - "vessel_id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "references": { - "@id": "schema:citation", - "@type": "@id" - } - }, - "@id": "enzml:SmallMolecule/2d890949-ba88-418d-8b83-9a689073638b", - "@type": [ - "enzml:SmallMolecule" - ], - "id": "s0", - "name": "Substrate", - "constant": false, - "vessel_id": "v0", - "references": [] - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "name": "schema:name", - "vessel_id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "references": { - "@id": "schema:citation", - "@type": "@id" - } - }, - "@id": "enzml:SmallMolecule/5c1da8cc-8b2d-4cfd-bbab-9cc7ce0c716f", - "@type": [ - "enzml:SmallMolecule" - ], - "id": "s1", - "name": "Product", - "constant": false, - "vessel_id": "v0", - "references": [] - } - ], - "reactions": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "modifiers": { - "@type": "@id" - } - }, - "@id": "enzml:Reaction/d4de1855-14c4-4704-9b13-139c0ecf38ae", - "@type": [ - "enzml:Reaction" - ], - "id": "r0", - "name": "Reaction 1", - "reversible": false, - "kinetic_law": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - }, - "@id": "enzml:Equation/9689876c-204c-4840-9703-5521c06767aa", - "@type": [ - "enzml:Equation" - ], - "equation": "kcat*p0*s0/(K_m + s0)", - "equation_type": "rateLaw", - "variables": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": "schema:identifier" - }, - "@id": "enzml:Variable/5f07e8be-4726-49cb-b6cd-6569dcdf12d0", - "@type": [ - "enzml:Variable" - ], - "id": "s0", - "name": "s0", - "symbol": "s0" - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": "schema:identifier" - }, - "@id": "enzml:Variable/aedb0ffd-b477-4b67-9d35-aa9439acf7bd", - "@type": [ - "enzml:Variable" - ], - "id": "p0", - "name": "p0", - "symbol": "p0" - } - ] - }, - "species": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - }, - "@id": "enzml:ReactionElement/87493c81-5b1b-48de-b4fb-0767eb92d6dc", - "@type": [ - "enzml:ReactionElement" - ], - "species_id": "s0", - "stoichiometry": -1.0 - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - }, - "@id": "enzml:ReactionElement/e7136ffc-32f0-4f42-a9d8-12178e80a1c4", - "@type": [ - "enzml:ReactionElement" - ], - "species_id": "s1", - "stoichiometry": 1.0 - } - ], - "modifiers": [ - "p0" - ] - } - ], - "measurements": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "group_id": { - "@type": "@id" - } - }, - "@id": "enzml:Measurement/15937ee7-49ee-4db5-a52a-3f2eb816a24d", - "@type": [ - "enzml:Measurement" - ], - "id": "m0", - "name": "m0", - "species_data": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - }, - "@id": "enzml:MeasurementData/716ac22f-a04a-477f-9a79-90d39024b2b7", - "@type": [ - "enzml:MeasurementData" - ], - "species_id": "s0", - "initial": 0.0, - "data_unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000063", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u1", - "name": "mmol / l", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/59cd6067-66c0-4ab7-9b9b-c4d66bd6990e", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "mole", - "exponent": 1, - "scale": -3.0 - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/d21d0a9e-c232-493b-8cd6-fa919d767854", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "litre", - "exponent": -1, - "scale": 1.0 - } - ] - }, - "time_unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000010", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u2", - "name": "s", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/e904e3f6-02be-4ba1-b206-4cdcb6baf65e", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "second", - "exponent": 1, - "scale": 1.0 - } - ] - }, - "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", - "data": [ - 0.0, - 1.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0, - 7.0, - 8.0, - 9.0, - 10.0 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0, - 7.0, - 8.0, - 9.0, - 10.0 - ], - "is_simulated": false - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - }, - "@id": "enzml:MeasurementData/e670be98-5438-450f-8c23-4db3234d353d", - "@type": [ - "enzml:MeasurementData" - ], - "species_id": "s1", - "initial": 10.0, - "data_unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000063", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u1", - "name": "mmol / l", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/59cd6067-66c0-4ab7-9b9b-c4d66bd6990e", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "mole", - "exponent": 1, - "scale": -3.0 - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/d21d0a9e-c232-493b-8cd6-fa919d767854", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "litre", - "exponent": -1, - "scale": 1.0 - } - ] - }, - "time_unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000010", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u2", - "name": "s", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/e904e3f6-02be-4ba1-b206-4cdcb6baf65e", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "second", - "exponent": 1, - "scale": 1.0 - } - ] - }, - "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", - "data": [ - 10.0, - 9.0, - 8.0, - 7.0, - 6.0, - 5.0, - 4.0, - 3.0, - 2.0, - 1.0, - 0.0 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0, - 7.0, - 8.0, - 9.0, - 10.0 - ], - "is_simulated": false - } - ], - "ph": 7.0, - "temperature": 298.15, - "temperature_unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000012", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u3", - "name": "K", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/ab4850f1-0470-4a6b-ba15-ab2edde18918", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "kelvin", - "exponent": 1, - "scale": 1.0 - } - ] - } - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "group_id": { - "@type": "@id" - } - }, - "@id": "enzml:Measurement/3210b5eb-ff4f-4c0b-85a2-c6669a5fea0b", - "@type": [ - "enzml:Measurement" - ], - "id": "m1", - "name": "m1", - "species_data": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - }, - "@id": "enzml:MeasurementData/bdc0afb1-cfed-4c2e-8a42-93ac613638a9", - "@type": [ - "enzml:MeasurementData" - ], - "species_id": "s0", - "initial": 0.0, - "data_unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000063", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u1", - "name": "mmol / l", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/59cd6067-66c0-4ab7-9b9b-c4d66bd6990e", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "mole", - "exponent": 1, - "scale": -3.0 - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/d21d0a9e-c232-493b-8cd6-fa919d767854", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "litre", - "exponent": -1, - "scale": 1.0 - } - ] - }, - "time_unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000010", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u2", - "name": "s", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/e904e3f6-02be-4ba1-b206-4cdcb6baf65e", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "second", - "exponent": 1, - "scale": 1.0 - } - ] - }, - "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", - "data": [ - 0.0, - 1.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0, - 7.0, - 8.0, - 9.0, - 10.0 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0, - 7.0, - 8.0, - 9.0, - 10.0 - ], - "is_simulated": false - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - }, - "@id": "enzml:MeasurementData/8b5da426-824b-40e5-8574-8b390f02ec5a", - "@type": [ - "enzml:MeasurementData" - ], - "species_id": "s1", - "initial": 10.0, - "data_unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000063", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u1", - "name": "mmol / l", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/59cd6067-66c0-4ab7-9b9b-c4d66bd6990e", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "mole", - "exponent": 1, - "scale": -3.0 - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/d21d0a9e-c232-493b-8cd6-fa919d767854", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "litre", - "exponent": -1, - "scale": 1.0 - } - ] - }, - "time_unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000010", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u2", - "name": "s", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/e904e3f6-02be-4ba1-b206-4cdcb6baf65e", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "second", - "exponent": 1, - "scale": 1.0 - } - ] - }, - "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", - "data": [ - 10.0, - 9.0, - 8.0, - 7.0, - 6.0, - 5.0, - 4.0, - 3.0, - 2.0, - 1.0, - 0.0 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0, - 7.0, - 8.0, - 9.0, - 10.0 - ], - "is_simulated": false - } - ], - "ph": 7.0, - "temperature": 298.15, - "temperature_unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000012", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u3", - "name": "K", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/ab4850f1-0470-4a6b-ba15-ab2edde18918", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "kelvin", - "exponent": 1, - "scale": 1.0 - } - ] - } - } - ], - "equations": [], - "parameters": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - }, - "@id": "enzml:Parameter/48cdca34-78ee-4169-a143-18d602d59b33", - "@type": [ - "enzml:Parameter" - ], - "id": "kcat", - "name": "kcat", - "symbol": "kcat", - "unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000010", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u4", - "name": "1 / s", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/e904e3f6-02be-4ba1-b206-4cdcb6baf65e", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "second", - "exponent": -1, - "scale": 1.0 - } - ] - }, - "upper": 100.0, - "lower": 0.0, - "stderr": 0.1, - "constant": true - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - }, - "@id": "enzml:Parameter/ce20d881-741f-4f48-ad4e-e62daf7c9bf5", - "@type": [ - "enzml:Parameter" - ], - "id": "K_m", - "name": "K_m", - "symbol": "K_m", - "unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000063", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u1", - "name": "mmol / l", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/59cd6067-66c0-4ab7-9b9b-c4d66bd6990e", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "mole", - "exponent": 1, - "scale": -3.0 - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/d21d0a9e-c232-493b-8cd6-fa919d767854", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "litre", - "exponent": -1, - "scale": 1.0 - } - ] - }, - "upper": 100.0, - "lower": 0.0, - "stderr": 0.1, - "constant": true - } - ] -} \ No newline at end of file diff --git a/dev-examples/reactions/reactions_example.omex b/dev-examples/reactions/reactions_example.omex deleted file mode 100644 index a9ef6122f2561df78fd9976ebb3a1ac0366431c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2213 zcmZ{lc{J2}AIE<&n8{#dX;58RZ?X+C6OEe;S;|slEJIAj+=h|0DQmVYWyzXIGP2dR zGnF;Dc9A8c?2>gDA~D3(^PF?>;mjdE(_sM*p_`bF z^CC5t-&pOzkoy3HTD7AS@6f(Pjn!4c4$TfU7S$inZzs+6mxVP2F-98c3ip(|)J0e_)(-{gJ_B^-wc)oaoq=pJV%!bwvsWBSaR>$-~hzfjD!me@&g0{~VQ z03bh5xD%ZzKR7Je4qqQe!2)}%zzga*u8Jp0?I}rAi^{@#C>y4Zh_De7 zGA_U2O+n7n+VceNoRNvldFV}wh-oQlXilKZoX#Pu^%gl@W*CNEx{y>N^qswMbmc3f zKL^3vtbsU15c(dm#vD*xUS5vN-9)`@5dYE`)s~2fvmjUSCC^|O$v!k~Hc0}Xb&UKG zWr~Qd1ho)p4uUNy*fv7q(<5GpDq*moQGLnPL+A71Ue@AXww=cJter0@S(238?D6jm z=N>G^oyIRzb>#J>oyASd$UzvtKAtOEIY&+nn9`7AKt2oAl}dDG95hdNRNy1MU7d+x z8sOg)z!cDvPENxbrc*J~_jz3xwx|=o;N`1v$#STrW+$geL5WdC>8L|gWwbTg%!gEb z3O{9O^>ApFvN6wG%75PZTk%+r&JFr-_Qkn^E_&A|JuGr8M=-W7)VV0kxem051mm2r z<;7A}z0O}zw3r@IHS1ZTZW0~YqHj_xWly;#cFK38=dkgkPtEh6w`vsdQ4U1|H)ac< z1TJ02G&*7UY!^UD@z~^(VWx~lR}WB4;T_~WXkr5)O*EkB)Jd;|8*emd1pc*@ODaL) zj0%;!ox__)GgEN$lw4(bMI|rH#^AM$MzRl+(p2JQq@JkP?HZoPXC@}Rlqx3$7yPVN zljLrb9yP%Wofp?LpRt{&Y*c&VMydSd?>>YC#rGSkSLVZa64oAts!WwyF>jvbrVQG| z^NQ6(K>b6l%erR6MGS~V5(b^p=SK^3b|+65j0TxnG|2WQ%Iz5qjA|{U7VxPA?0w(d z1(WMfS22`uxXfHnZf|9LZ>(mephBf013m2!j_}+`ruVX*@hEFM;xyBzWZ{v00gn$) zJ7V9Cbx{pW_H017MR@gb#K@7`o#QS`lafbK+7h|&JNu?kt!7A`)|lwiG3ev>yjIq?0(Yg{P46jJ%+Ox4QPx_rP&yp$$4@^8t%do$ zzC-8Ya0P|1HuGHll_6%e+l5%RFEU~GQI9iXg_(e^d+E1r)*h9&J{eOmwxDY4vs0tr znk{_Iemq%0pjvK(+S=6Cz-0t03>bPK;K0JlF=@XJXLuA_9f~W0AXUz_c(+BO@)x9I zx-St3Qu2kaRtOKy4~o$^7bW2^hI8Y|hg*)%cIoRGt*UpG|I8K<5kyd!JfsP3$?$ps zyUy0v0)adr4;k(=zfW&!FMRm;?c3Ulhd~we`zhy1dDR#7!GgqQt|@=%Zod#a$SWZt zVNO~mnB+7;>O zp|ufLx9pJ230Fz2b*`AQL}s%78P&N?@$f zRg06$S{LFiymQv$rrrCb8ZW=^5a6TO*b;5fO=`pUB=m+|(56dsOSV zBX+g6n>`A3kli)mu-GoS?JH{$-o`+?qb&ZxS6J`f@g{ZKTUy2|w}(!b z-*MjyOj%8)Nu(cCUwfa*`}{!N4amvo>thnO+ipWv_@$c(SF4}I-YsmIGS(We_9XGU zsXuWGFcErlf(>Tb;-Rw{a($_)`R15Nbg+sZTdP%4q{8w@UV@+I2DbFo%Qo?YeidRR?Q;0MM6y`%yBs=lWZt%_`OZdsQh({tQg%j-Kn>n8CQ|&>}^-6_}=rqUyk)B zqUXre81rT8^X9VVEO2bkiP|9{CS(KTABt{#>}XahzduGd$baE9H#xu|%=!OKzyGoS zoTni_;(xvWbMt30{ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Vessel 1 - 10.0 - - - - - - - - - - - - - Enzyme - MTEY - - - - - - MTEY - - - - - - - - Substrate - - - - - - - - - - Product - - - - - - - - - - - - - - - - 0.0 - 100.0 - 0.1 - - - - - - - - - - - - 0.0 - 100.0 - 0.1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - kcat - p0 - s0 - - - - K_m - s0 - - - - - - - - diff --git a/dev-examples/sbml_export_odes.py b/dev-examples/sbml_export_odes.py deleted file mode 100644 index 1054d281..00000000 --- a/dev-examples/sbml_export_odes.py +++ /dev/null @@ -1,86 +0,0 @@ -import rich - -import pyenzyme as pe -import pyenzyme.equations as peq -from pyenzyme.sbml.serializer import to_sbml -from pyenzyme.tools import get_all_parameters -from pyenzyme.units import mM, s, ml, K - -doc = pe.EnzymeMLDocument(name="Test") - -ml.id = "u0" -s.id = "u1" -mM.id = "u2" -K.id = "u3" - -# Add Vessels -vessel = doc.add_to_vessels(name="Vessel 1", volume=10.0, unit=ml, id="v0") - -# Add Species -substrate = doc.add_to_small_molecules( - id="s0", - name="Substrate", - vessel_id=vessel.id, - canonical_smiles="CC(=O)O", - inchikey="QTBSBXVTEAMEQO-UHFFFAOYSA-N", -) -product = doc.add_to_small_molecules( - id="s1", - name="Product", - vessel_id=vessel.id, - canonical_smiles="CC(=O)O", - inchikey="QTBSBXVTEAMEQO-UHFFFAOYSA-N", -) - -# Add Enzyme -enzyme = doc.add_to_proteins( - id="p0", - name="Enzyme", - sequence="MTEY", - vessel_id=vessel.id, - ecnumber="1.1.1.1", - organism="E.coli", - organism_tax_id="12345", -) - -enzyme_complex = doc.add_to_complexes( - id="c0", - name="Enzyme-Substrate Complex", - participants=[enzyme.id, substrate.id], - vessel_id=vessel.id, -) - -doc.equations += peq.build_equations( - "s1'(t) = kcat * E_tot * s0(t) / (K_m + s0(t))", - "E_tot = 100", - unit_mapping={"kcat": 1 / s, "K_m": mM, "E_tot": mM}, - enzmldoc=doc, -) - -doc.measurements += pe.read_excel( - "tests/fixtures/tabular/data.xlsx", - data_unit=mM, - time_unit=s, -) - -for parameter in get_all_parameters(doc): - parameter.lower = 0.0 - parameter.upper = 100.0 - parameter.stderr = 0.1 - -for meas in doc.measurements: - meas.temperature = 298.15 - meas.temperature_unit = K - meas.ph = 7.0 - -rich.print(to_sbml(doc)[0]) - -# Write sbml doc to file -with open("./dev-examples/odes/odes_example_test.xml", "w") as file: - file.write(to_sbml(doc)[0]) - -# Write to omex file -doc.to_sbml("./tests/fixtures/sbml/odes_example.omex") - -# Write to EnzymeML JSON file -pe.write_enzymeml(self=doc, path="./tests/fixtures/sbml/ode_example_enzml.json") diff --git a/dev-examples/sbml_export_reactions.py b/dev-examples/sbml_export_reactions.py deleted file mode 100644 index fc4c3c33..00000000 --- a/dev-examples/sbml_export_reactions.py +++ /dev/null @@ -1,64 +0,0 @@ -import pyenzyme as pe -import pyenzyme.equations as peq -from pyenzyme.sbml.serializer import to_sbml -from pyenzyme.tools import get_all_parameters -from pyenzyme.units import mM, s, ml, K - -doc = pe.EnzymeMLDocument(name="Test") - -# Add Vessels -vessel = doc.add_to_vessels(name="Vessel 1", volume=10.0, unit=ml, id="v0") - -# Add Species -substrate = doc.add_to_small_molecules(id="s0", name="Substrate", vessel_id=vessel.id) -product = doc.add_to_small_molecules(id="s1", name="Product", vessel_id=vessel.id) - -# Add Enzyme -enzyme = doc.add_to_proteins( - id="p0", - name="Enzyme", - sequence="MTEY", - vessel_id=vessel.id, -) - -# Set reactions -reaction = peq.build_reaction( - scheme="s0 -> s1", - name="Reaction 1", - id="r0", - modifiers=[enzyme.id], -) - -reaction.kinetic_law = peq.build_equation( - "kcat * p0(t) * s0(t) / ( K_m + s0(t) )", - unit_mapping={"kcat": 1 / s, "K_m": mM}, - enzmldoc=doc, -) - -doc.reactions += [reaction] - -doc.measurements += pe.read_excel( - "tests/fixtures/tabular/data.xlsx", - data_unit=mM, - time_unit=s, -) - -for parameter in get_all_parameters(doc): - parameter.lower = 0.0 - parameter.upper = 100.0 - parameter.stderr = 0.1 - -for meas in doc.measurements: - meas.temperature = 298.15 - meas.temperature_unit = K - meas.ph = 7.0 - -# Write sbml doc to file -with open("./dev-examples/reactions/reactions_example.xml", "w") as file: - file.write(to_sbml(doc)[0]) - -# Write to omex file -doc.to_sbml("./dev-examples/reactions/reactions_example.omex") - -# Write to EnzymeML JSON file -pe.write_enzymeml(self=doc, path="./dev-examples/reactions/enzymeml.json") diff --git a/dev-examples/sbml_import_legacy.py b/dev-examples/sbml_import_legacy.py deleted file mode 100644 index 84012f8d..00000000 --- a/dev-examples/sbml_import_legacy.py +++ /dev/null @@ -1,8 +0,0 @@ -from pathlib import Path - -import pyenzyme as pe - -doc = pe.EnzymeMLDocument.from_sbml(path=Path("./tests/fixtures/sbml/v1_example.omex")) - -with open("./tests/fixtures/sbml/v1_example_enzml.json", "w") as f: - f.write(doc.model_dump_json(indent=2)) diff --git a/dev-examples/sbml_import_odes.py b/dev-examples/sbml_import_odes.py deleted file mode 100644 index a652e0a7..00000000 --- a/dev-examples/sbml_import_odes.py +++ /dev/null @@ -1,10 +0,0 @@ -from pathlib import Path - -import rich - -import pyenzyme as pe -from pyenzyme.tools import to_dict_wo_json_ld - -doc = pe.EnzymeMLDocument.from_sbml(path=Path("./dev-examples/odes/odes_example.omex")) - -rich.print(to_dict_wo_json_ld(doc)) diff --git a/dev-examples/sbml_import_reactions.py b/dev-examples/sbml_import_reactions.py deleted file mode 100644 index f630d6aa..00000000 --- a/dev-examples/sbml_import_reactions.py +++ /dev/null @@ -1,16 +0,0 @@ -from pathlib import Path - -import rich - -import pyenzyme as pe -from pyenzyme.tools import to_dict_wo_json_ld - -doc = pe.EnzymeMLDocument.from_sbml( - path=Path("./dev-examples/reactions/reactions_example.omex") -) - -rich.print(to_dict_wo_json_ld(doc)) - -df = doc.to_pandas(doc) - -rich.print(df) diff --git a/dev-examples/v1.xml b/dev-examples/v1.xml deleted file mode 100644 index 989e87dd..00000000 --- a/dev-examples/v1.xml +++ /dev/null @@ -1,731 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - MRRLAACLLATAVAAATSAALAQTSPMTPDITGKPFVAGDAANDYVKREVMIPMRDGVKLHTVIVLPKGARNAPIVLTRTPYDASGRTERLASPHMKDLLSAGDDVFVEGGYIRVFQDVRGKYGSEGDYVMTRPLRGPLNPSEVDHATDAWDTIDWLVKNVKESNGKVGMIGSSYEGFTVVMALTNPHPALKVAAPESPMIDGWMGDDWFNYGAFRQVNFDYFTGQLSKRGKGAGIPRQGHDDYSNFLQAGSAGDFAKAAGLEQLPWWHKLTEHAAYDSFWQEQALDKVMARTPLKVPTMWLQGLWDQEDMWGAIHSYAAMEPRDKSNKLNYLVMGPWRHSQVNSDASSLGALNFDGDTARQFRRDVLRPFFDQYLVDGAPKAATPPVFIYNTGENHWDRLQAWPRSCDKGCAAKSKPLYLQAGGKLSFQAPTAAQPAFEEYVSDPAKPVPFVPRPVDFGDRSMWTTWLVHDQRFVDGRPDVLTFVTEPLTAPLQIAGAPDVHLQASTSGSDSDWVVKLIDVYPDEMAADPKMGGYELPVSMAIFRGRYRESFSTPAPLAANQPLAFQFGLPTANHTFQPGHRVMVQVQSSLFPLYDRNPQTYVPNVFFAKPGDYQKATQRVYVAPGQGSYISLPVR - - 3.1.1.43 - B0RS62 - Xanthomonas campestris pv. campestris - - - - - - - - MRRLAACLLATAVAAATSAALAQTSPMTPDITGKPFVAGDAANDYVKREVMIPMRDGVKLHTVIVLPKGARNAPIVLTRTPYDASGRTERLASPHMKDLLSAGDDVFVEGGYIRVFQDVRGKYGSEGDYVMTRPLRGPLNPSEVDHATDAWDTIDWLVKNVKESNGKVGMIGSSYEGFTVVMALTNPHPALKVAAPESPMIDGWMGDDWFNYGAFRQVNFDYFTGQLSKRGKGAGIPRQGHDDYSNFLQAGSAGDFAKAAGLEQLPWWHKLTEHAAYDSFWQEQALDKVMARTPLKVPTMWLQGLWDQEDMWGAIHSYAAMEPRDKSNKLNYLVMGPWRHSQVNSDASSLGALNFDGDTARQFRRDVLRPFFDQYLVDGAPKAATPPVFIYNTGENHWDRLQAWPRSCDKGCAAKSKPLYLQAGGKLSFQAPTAAQPAFEEYVSDPAKPVPFVPRPVDFGDRSMWTTWLVHDQRFVDGRPDVLTFVTEPLTAPLQIAGAPDVHLQASTSGSDSDWVVKLIDVYPDEMAADPKMGGYELPVSMAIFRGRYRESFSTPAPLAANQPLAFQFGLPTANHTFQPGHRVMVQVQSSLFPLYDRNPQTYVPNVFFAKPGDYQKATQRVYVAPGQGSYISLPVR - - 3.1.1.43 - B0RS62 - Xanthomonas campestris pv. campestris - - x - - - - - - - MRRLAACLLATAVAAATSAALAQTSPMTPDITGKPFVAGDAANDYVKREVMIPMRDGVKLHTVIVLPKGARNAPIVLTRTPYDASGRTERLASPHMKDLLSAGDDVFVEGGYIRVFQDVRGKYGSEGDYVMTRPLRGPLNPSEVDHATDAWDTIDWLVKNVKESNGKVGMIGSSYEGFTVVMALTNPHPALKVAAPESPMIDGWMGDDWFNYGAFRQVNFDYFTGQLSKRGKGAGIPRQGHDDYSNFLQAGSAGDFAKAAGLEQLPWWHKLTEHAAYDSFWQEQALDKVMARTPLKVPTMWLQGLWDQEDMWGAIHSYAAMEPRDKSNKLNYLVMGPWRHSQVNSDASSLGALNFDGDTARQFRRDVLRPFFDQYLVDGAPKAATPPVFIYNTGENHWDRLQAWPRSCDKGCAAKSKPLYLQAGGKLSFQAPTAAQPAFEEYVSDPAKPVPFVPRPVDFGDRSMWTTWLVHDQRFVDGRPDVLTFVTEPLTAPLQIAGAPDVHLQASTSGSDSDWVVKLIDVYPDEMAADPKMGGYELPVSMAIFRGRYRESFSTPAPLAANQPLAFQFGLPTANHTFQPGHRVMVQVQSSLFPLYDRNPQTYVPNVFFAKPGDYQKATQRVYVAPGQGSYISLPVR - - 3.1.1.43 - B0RS62 - Xanthomonas campestris pv. campestris - - - - - - - p0 - s0 - - - - - - - p0 - s1 - - - - - - - p0 - s3 - - - - - - - p0 - s0 - s0 - - - - - - - p1 - s1 - - - - - - - p1 - s0 - - - - - - - p0 - s2 - - - - - - - 1S/C9H11NO2/c1-12-9(11)7-10-8-5-3-2-4-6-8/h2-6,10H,7H2,1H3 - O(C([C@@H](C1=CC=CC=C1)N([H])[H])=O)C - - - - - - - - 1S/C8H10N2O3S/c1-3-2-14-7-4(9)6(11)10(7)5(3)8(12)13/h4,7H,2,9H2,1H3,(H,12,13)/t4-,7-/m1/s1 - - CC1=C(N2[C@H](SC1)[C@H](N)C2=O)C(O)=O - - - - - - - - 1S/C16H17N3O4S/c1-8-7-24-15-11(14(21)19(15)12(8)16(22)23)18-13(20)10(17)9-5-3-2-4-6-9/h2-6,10-11,15H,7,17H2,1H3,(H,18,20)(H,22,23)/t10-,11-,15-/m1/s1 - - CC1=C(N2[C@@H]([C@@H](C2=O)NC(=O)[C@@H](C3=CC=CC=C3)N)SC1)C(=O)O - - - - - - - - 1S/C8H9NO2/c9-7(8(10)11)6-4-2-1-3-5-6/h1-5,7H,9H2,(H,10,11) - C1=CC=C(C=C1)[C@H](C(=O)O)N - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - v_r - - - - - K_n - c1 - - - - p0 - s1 - - - - - - - - - - - - - - - - - - - v_r - - - - - K_s - c0 - - - - p0 - s0 - - - - - - - - - - - - - - - - - - - - - k_2 - c0 - - - - - - - - - - - - - - - - - - - - v_r - - - - - K_si - c3 - - - - c0 - s0 - - - - - - - - - - - - - - - - - - - v_r - - - - - K_si - c5 - - - - p1 - s0 - - - - - - - - - - - - - - - - - - - k_6 - c5 - - - - - - - - - - - - - - - - - - - - k_3 - p1 - - - - - - - - - - - - - - - - - - - - v_r - - - - - K_pg - c2 - - - - p0 - s3 - - - - - - - - - - - - - - - - - - - - - - v_r - - - - - K_n - c4 - - - - p1 - s1 - - - - - - - - - - - - - - - - - - - - k_5 - c4 - - - - - - - - - - - - - - - - - - - - - k_4 - c4 - - - - k_4b - c6 - - - - - - - - - - - - - - - - - - - - - - v_r - - - - - K_p - c6 - - - - p0 - s2 - - - - - - - - - - - - - - - - - - - - - k_d - p0 - - - - - - - - - - From 5cc13ce2d4091d0ed3c8e7a5e72dd33d4b339b4e Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Wed, 7 May 2025 01:20:08 +0200 Subject: [PATCH 090/172] update docs --- pyenzyme/equations/_chem.py | 61 ++++++++--- pyenzyme/equations/_math.py | 103 +++++++++++++++---- pyenzyme/fetcher/__init__.py | 9 ++ pyenzyme/rdf.py | 32 ++++-- pyenzyme/sbml/ldutils.py | 57 +++++++++-- pyenzyme/sbml/omex.py | 37 +++++-- pyenzyme/sbml/parser.py | 121 ++++++++++++++++------ pyenzyme/sbml/serializer.py | 189 ++++++++++++++++++++++++++++++----- pyenzyme/sbml/validation.py | 31 +++++- pyenzyme/sbml/versions/v1.py | 93 +++++++++++++++-- pyenzyme/sbml/versions/v2.py | 139 +++++++++++++++++++++++++- pyenzyme/tabular.py | 17 ++-- 12 files changed, 747 insertions(+), 142 deletions(-) create mode 100644 pyenzyme/fetcher/__init__.py diff --git a/pyenzyme/equations/_chem.py b/pyenzyme/equations/_chem.py index 0c3b74dd..f94e5e07 100644 --- a/pyenzyme/equations/_chem.py +++ b/pyenzyme/equations/_chem.py @@ -1,12 +1,19 @@ import re from enum import Enum -from pyenzyme.model import Equation, ReactionElement, Reaction +from pyenzyme import Equation, ReactionElement, Reaction ELEMENT_PATTERN = r"(\d*)\s?([A-Za-z\d]+)" class EquationSide(Enum): + """Enum representing the side of a chemical equation. + + Attributes: + LEFT: Represents the left side of the equation (reactants) with value -1. + RIGHT: Represents the right side of the equation (products) with value 1. + """ + LEFT = -1 RIGHT = 1 @@ -33,15 +40,18 @@ def build_reactions( Args: *equations (list[str]): A list of string representations of the reactions + modifiers (dict[str, list[str]], optional): A dictionary mapping reaction IDs to lists of modifier species IDs. + Defaults to an empty dictionary. Returns: list[Reaction]: A list of reaction objects Example: - >> reactions("2A --> B", "A + B <=> C") + >>> build_reactions("2A --> B", "A + B <=> C") + >>> build_reactions("2A --> B", modifiers={"r1": ["E"]}) Raises: - ValueError: If the reaction direction is not valid + ValueError: If the reaction direction is not valid or if a specified modifier reaction ID is not found AssertionError: If the species is not set """ @@ -75,24 +85,23 @@ def build_reaction( """Builds a reaction object from a string representation. Args: - id (str): The id of the reaction name (str): The name of the reaction - scheme (str): The equation of the reaction - modifiers (list[str], optional): A list of modifiers for the reaction. Defaults to []. + scheme (str): The equation of the reaction in string format (e.g., "2A --> B") + id (str | None, optional): The ID of the reaction. If None, the name is used as ID. Defaults to None. + kinetic_law (Equation | None, optional): The kinetic law associated with the reaction. Defaults to None. + modifiers (list[str], optional): A list of modifiers (e.g., enzyme IDs) for the reaction. Defaults to []. Returns: Reaction: A reaction object Example: - - >> reaction("R1", "Reaction 1", "2A --> B") # Irrversible reaction - >> reaction("R2", "Reaction 2", "A + B <=> C") # Reversible reaction - >> reaction("R2", "Reaction 2", "A + B <-> C") # Reversible reaction + >>> build_reaction("Reaction 1", "2A --> B", id="R1") # Irreversible reaction + >>> build_reaction("Reaction 2", "A + B <=> C", id="R2") # Reversible reaction + >>> build_reaction("Reaction 2", "A + B <-> C", id="R2") # Reversible reaction Raises: ValueError: If the reaction direction is not valid AssertionError: If the species is not set - """ if not id: @@ -117,10 +126,13 @@ def _extract_left_right(reaction: str) -> tuple[str, str, bool]: """Extracts the left and right side of a reaction string. Args: - reaction (str): The reaction string + reaction (str): The reaction string (e.g., "A + B -> C") Returns: - tuple[str, str, bool]: A tuple containing the left side, right side, and the reaction direction + tuple[str, str, bool]: A tuple containing the left side, right side, and whether the reaction is reversible + + Raises: + ValueError: If no valid reaction direction symbol is found in the equation """ if "->" in reaction: @@ -140,7 +152,15 @@ def _extract_left_right(reaction: str) -> tuple[str, str, bool]: def _extract_elements(side_string: str, side: EquationSide) -> list[ReactionElement]: - """Extracts the elements from a reaction string.""" + """Extracts the elements from a reaction string. + + Args: + side_string (str): The string representing one side of the reaction (e.g., "2A + B") + side (EquationSide): Enum indicating whether this is the left or right side of the equation + + Returns: + list[ReactionElement]: A list of ReactionElement objects representing the species and their stoichiometries + """ elements = [] for element in side_string.split("+"): element = re.search(ELEMENT_PATTERN, element.strip()) @@ -156,6 +176,19 @@ def _create_reaction_element( species: str, side: EquationSide, ) -> ReactionElement: + """Creates a ReactionElement object from stoichiometry, species ID, and equation side. + + Args: + stoich (str | float): The stoichiometric coefficient (can be a string or float) + species (str): The species ID + side (EquationSide): The side of the equation (LEFT or RIGHT) + + Returns: + ReactionElement: A ReactionElement object with the appropriate stoichiometry and species ID + + Raises: + AssertionError: If the species is not set + """ assert species, "Species must be set" if stoich == "": diff --git a/pyenzyme/equations/_math.py b/pyenzyme/equations/_math.py index 03db9fa8..038095b1 100644 --- a/pyenzyme/equations/_math.py +++ b/pyenzyme/equations/_math.py @@ -14,12 +14,25 @@ Parameter, ) -INIT_ASSIGNMENT_PATTERN = r"^[A-Za-z][A-Za-z\_]*" -DERIVATIVE_PATTERN = r"([A-Za-z0-9\_]+)\'\(t\)" -VARIABLE_PATTERN = r"([A-Za-z0-9\_]+)\'?\(t\)" -PARAMETER_PATTERN = r"([A-Za-z0-9\_]+)" -REPLACE_PATTERN = r"\(t\)|\'" -ELEMENTAL_FUNCTIONS = ["exp", "log", "sin", "cos", "tan", "sqrt", "abs"] +# Regular expression patterns for parsing different parts of equations +INIT_ASSIGNMENT_PATTERN = ( + r"^[A-Za-z][A-Za-z\_]*" # Pattern for initial assignment variables +) +DERIVATIVE_PATTERN = r"([A-Za-z0-9\_]+)\'\(t\)" # Pattern for derivatives like x'(t) +VARIABLE_PATTERN = ( + r"([A-Za-z0-9\_]+)\'?\(t\)" # Pattern for variables like x(t) or x'(t) +) +PARAMETER_PATTERN = r"([A-Za-z0-9\_]+)" # Pattern for parameter names +REPLACE_PATTERN = r"\(t\)|\'" # Pattern for replacing (t) or ' in variables +ELEMENTAL_FUNCTIONS = [ + "exp", + "log", + "sin", + "cos", + "tan", + "sqrt", + "abs", +] # Built-in mathematical functions def build_equations( @@ -29,16 +42,19 @@ def build_equations( ) -> list[Equation]: """Builds a list of Equation objects from a list of string representations. + This function takes multiple equation strings and converts each one into an Equation object. + It handles different types of equations including ODEs, assignments, and initial assignments. + Args: - *equations (list[str]): A list of string representations of the ODEs - unit_mapping: A dictionary mapping parameter names to their respective + *equations (list[str]): A list of string representations of the equations + unit_mapping: A dictionary mapping parameter names to their respective units enzmldoc (EnzymeMLDocument): The EnzymeMLDocument to add the parameters to Returns: - list[ODE]: A list of ODE objects + list[Equation]: A list of Equation objects Example: - >> build_equations("s1'(t) = 2 * s2(t)", "s2'(t) = 3 * s1(t)") + >>> build_equations("s1'(t) = 2 * s2(t)", "s2'(t) = 3 * s1(t)") """ if unit_mapping is None: @@ -61,25 +77,26 @@ def build_equation( enzmldoc: EnzymeMLDocument, unit_mapping: dict[str, str] | None = None, ) -> Equation: - """Builds an equation object from a string + """Builds an equation object from a string representation. - This function takes an equation string and converts it into an ODE object. - The equation string should be in the form of "s1'(t) = 2 * s2(t)" where - there is a left and right side of the equation. + This function takes an equation string and converts it into an Equation object. + It identifies the equation type (ODE, assignment, or initial assignment) based on the pattern, + extracts variables and parameters, and creates the appropriate Equation object. Args: - equation (str): The equation to be converted into an ODE object - unit_mapping: A dictionary mapping parameter names to their respective units + equation (str): The equation to be converted into an Equation object enzmldoc (EnzymeMLDocument): The EnzymeMLDocument to add the parameters to + unit_mapping: A dictionary mapping parameter names to their respective units Returns: - ODE: The ODE object + Equation: The created Equation object Example: + >>> eq = "s1'(t) = 2 * s2(t)" + >>> equation = build_equation(eq, enzmldoc) - >> eq = "s1'(t) = 2 * s2(t)" - >> ode = ode(eq) - + Raises: + ValueError: If the equation type is not recognized or if the equation is malformed """ if unit_mapping is None: @@ -137,6 +154,17 @@ def build_equation( def _extract_sides(equation: str) -> tuple[str, str]: + """Extracts the left and right sides of an equation. + + Args: + equation (str): The equation string to parse + + Returns: + tuple[str, str]: A tuple containing the left and right sides of the equation + + Raises: + ValueError: If the equation is missing a left or right side + """ if "=" not in equation: # Will be handled as a kinetic law return "", equation @@ -152,6 +180,17 @@ def _extract_sides(equation: str) -> tuple[str, str]: def _clean_and_trim(eq: str) -> str: + """Cleans and trims an equation string by removing time dependencies. + + This function removes the time dependency notation (t) from variables + and simplifies the equation representation. + + Args: + eq (str): The equation string to clean + + Returns: + str: The cleaned equation string + """ vars = re.findall(VARIABLE_PATTERN, eq) for var in vars: var = var.replace("'", "") @@ -162,10 +201,27 @@ def _clean_and_trim(eq: str) -> str: def _create_parameter(name: str, unit: UnitDefinition | None) -> Parameter: + """Creates a Parameter object with the given name and unit. + + Args: + name (str): The name of the parameter + unit (UnitDefinition | None): The unit of the parameter + + Returns: + Parameter: The created Parameter object + """ return Parameter(id=name, name=name, symbol=name, unit=unit) def _create_variable(name: str) -> Variable: + """Creates a Variable object with the given name. + + Args: + name (str): The name of the variable + + Returns: + Variable: The created Variable object + """ return Variable(id=name, name=name, symbol=name) @@ -174,8 +230,13 @@ def _add_to_parameters( name: str, unit: str | UnitDefinition | None, ): - """Adds a parameter to the EnzymeMLDocument""" + """Adds a parameter to the EnzymeMLDocument if it doesn't already exist. + Args: + enzmldoc (EnzymeMLDocument): The document to add the parameter to + name (str): The name of the parameter + unit (str | UnitDefinition | None): The unit of the parameter + """ add_logger("ENZML") if enzmldoc.filter_parameters(name=name): diff --git a/pyenzyme/fetcher/__init__.py b/pyenzyme/fetcher/__init__.py new file mode 100644 index 00000000..8bfb9ac6 --- /dev/null +++ b/pyenzyme/fetcher/__init__.py @@ -0,0 +1,9 @@ +from .chebi import fetch_chebi_to_small_molecule +from .uniprot import fetch_uniprot_to_protein +from .rhea import fetch_rhea_to_reaction + +__all__ = [ + "fetch_chebi_to_small_molecule", + "fetch_uniprot_to_protein", + "fetch_rhea_to_reaction", +] diff --git a/pyenzyme/rdf.py b/pyenzyme/rdf.py index d608b3ed..51e78b4f 100644 --- a/pyenzyme/rdf.py +++ b/pyenzyme/rdf.py @@ -1,33 +1,53 @@ import rdflib +from loguru import logger def to_rdf_xml(*objs, keep_header: bool = False): - """Converts a JSON-LD string to RDF/XML format. + """Converts PyEnzyme objects to RDF/XML format. + + This function takes one or more PyEnzyme objects, converts them to JSON-LD format, + and then transforms the JSON-LD into RDF/XML. It handles the creation of proper + linked data identifiers and excludes properties that are references to other objects. Args: - json_ld (str): The JSON-LD string to convert. - keep_header (bool, optional): Whether to keep the XML header. Defaults to False. + *objs: One or more PyEnzyme objects to convert to RDF/XML. + keep_header (bool, optional): Whether to keep the XML header in the output. + Defaults to False. + Returns: - str: The RDF/XML string. - """ + str: The RDF/XML representation of the input objects. + Example: + >>> protein = pe.Protein(id="protein1", name="Example Protein") + >>> rdf_xml = to_rdf_xml(protein) + >>> print(rdf_xml) + """ graph = rdflib.Graph() for obj in objs: if not hasattr(obj, "ld_id"): - obj.ld_id = f"http://enzymeml.org/v2/{obj.__class__.__name__}/{obj.ld_id}" + logger.debug( + f"Creating linked data ID for {obj.__class__.__name__} {obj.id}" + ) + obj.ld_id = f"http://enzymeml.org/v2/{obj.__class__.__name__}/{obj.id}" + + # Exclude properties that are references to other objects (indicated by @id type) to_exclude = { key for key, value in obj.ld_context.items() if isinstance(value, dict) and value.get("@type", None) == "@id" } + + # Parse the JSON-LD representation of the object into the RDF graph graph.parse( data=obj.model_dump_json(by_alias=True, exclude=to_exclude), format="json-ld", ) + # Serialize the graph to RDF/XML format rdf_xml = graph.serialize(format="xml") + # Optionally remove the XML header if not keep_header: return "\n".join(rdf_xml.split("\n")[1:]) else: diff --git a/pyenzyme/sbml/ldutils.py b/pyenzyme/sbml/ldutils.py index 4425e00e..e61a54a7 100644 --- a/pyenzyme/sbml/ldutils.py +++ b/pyenzyme/sbml/ldutils.py @@ -4,8 +4,19 @@ def parse_sbml_rdf_annotation(sbml_obj, enzml_obj): - """Parse the RDF annotation of an SBML object.""" + """ + Parse the RDF annotation of an SBML object and map it to an EnzymeML object. + This function extracts RDF annotations from SBML objects, converts them to JSON-LD, + and maps the resulting data to EnzymeML objects. + + Args: + sbml_obj: The SBML object containing RDF annotations. + enzml_obj: The EnzymeML object to which the annotations will be mapped. + + Returns: + None: The function modifies the enzml_obj in place. + """ annotation = sbml_obj.getAnnotationString() if not annotation: @@ -16,8 +27,19 @@ def parse_sbml_rdf_annotation(sbml_obj, enzml_obj): def _rdf_annotation_to_json_ld(annotation: str): - """Convert an SBML annotation to JSON-LD.""" + """ + Convert an SBML RDF annotation to JSON-LD format. + + This function parses an XML annotation string, extracts the RDF element, + and converts it to JSON-LD format for easier processing. + Args: + annotation (str): The XML annotation string from an SBML object. + + Returns: + list | None: A list containing the JSON-LD representation of the RDF data, + or None if no RDF element is found. + """ # Parse the RDF annotation and extract the root # RDF element to create an RDF graph root = ET.fromstring(annotation) @@ -34,8 +56,19 @@ def _rdf_annotation_to_json_ld(annotation: str): def _map_json_ld_to_obj(obj, header: list | None): - """Map JSON-LD header to an object.""" + """ + Map JSON-LD header data to an EnzymeML object. + + This function extracts context, ID, and type information from JSON-LD data + and assigns it to the corresponding attributes of an EnzymeML object. + Args: + obj: The EnzymeML object to which the JSON-LD data will be mapped. + header (list | None): The JSON-LD data as a list, or None if no data is available. + + Returns: + None: The function modifies the obj in place. + """ if header is None: return @@ -51,12 +84,21 @@ def _map_json_ld_to_obj(obj, header: list | None): def _sync_context_prefixes(obj): - """Sync the context prefixes of an object.""" + """ + Synchronize the context prefixes of an EnzymeML object. + + This function creates a consistent representation of IRIs and prefixes + across the context, type, and ID attributes of an EnzymeML object. + It replaces full IRIs with their corresponding prefixed versions. + Args: + obj: The EnzymeML object whose context prefixes will be synchronized. + + Returns: + None: The function modifies the obj in place. + """ inverse_prefixes = { - value: key - for key, value in obj.ld_context.items() - if isinstance(value, str) + value: key for key, value in obj.ld_context.items() if isinstance(value, str) } # Convert context @@ -73,7 +115,6 @@ def _sync_context_prefixes(obj): # Convert types for i, type_ in enumerate(obj.ld_type): for iri, prefix in inverse_prefixes.items(): - if type_.startswith(iri): obj.ld_type[i] = type_.replace(iri, f"{prefix}:") break diff --git a/pyenzyme/sbml/omex.py b/pyenzyme/sbml/omex.py index 5db9af5d..636231dc 100644 --- a/pyenzyme/sbml/omex.py +++ b/pyenzyme/sbml/omex.py @@ -18,6 +18,7 @@ class FileURI(enum.Enum): Attributes: CSV (str): URI for CSV files. TSV (str): URI for TSV files. + TSV_LONG (str): URI for tab-separated values files (long format). """ CSV = "/csv" @@ -91,16 +92,20 @@ def create_sbml_omex( out: Path, ) -> None: """ - Create an OMEX archive with the given SBML and data files. + Create an OMEX archive with the given SBML document and optional data files. + + This function creates a Combined OMEX archive that packages an SBML model with + associated experimental data. The SBML document is set as the master file in the + archive, and any provided data is saved as a TSV file. Args: - sbml_doc (str): The SBML document to include in the archive. - data (pd.DataFrame | None): The data to include in the archive. - out (Path): The path to save the OMEX archive. + sbml_doc (str): The SBML document content to include in the archive. + data (pd.DataFrame | None): Optional experimental data to include in the archive. + If provided, it will be saved as a TSV file. + out (Path): The path where the OMEX archive will be saved. Returns: - Omex: The created OMEX archive - + None: The function saves the OMEX archive to the specified path but doesn't return anything. """ with tempfile.TemporaryDirectory() as temp_dir: @@ -132,17 +137,29 @@ def create_sbml_omex( omex.to_omex(out) -def read_sbml_omex(path: Path) -> tuple[TextIO, dict[str, pd.DataFrame]]: +def read_sbml_omex(path: Path | str) -> tuple[TextIO, dict[str, pd.DataFrame]]: """ Reads an OMEX archive and extracts the SBML document and associated data files. + This function opens an OMEX archive, identifies the master SBML file, and extracts + any supported data files (CSV, TSV) into pandas DataFrames. The function validates + that the master file is in SBML format. + Args: - path (Path): The path to the OMEX archive. + path (Path | str): The path to the OMEX archive file. Returns: - tuple[str, dict[str, pd.DataFrame]]: A tuple containing the SBML document as a string and a dictionary - where keys are file locations and values are dataframes of the data files. + tuple[TextIO, dict[str, pd.DataFrame]]: A tuple containing: + - A file handle to the SBML document + - A dictionary mapping file locations to pandas DataFrames containing the data files + + Raises: + ValueError: If no master file is found in the OMEX archive. + AssertionError: If the master file is not in SBML format. """ + if isinstance(path, str): + path = Path(path) + omex = Omex.from_omex(path) try: diff --git a/pyenzyme/sbml/parser.py b/pyenzyme/sbml/parser.py index 63726405..afe85085 100644 --- a/pyenzyme/sbml/parser.py +++ b/pyenzyme/sbml/parser.py @@ -8,7 +8,6 @@ import libsbml as sbml # type: ignore import pandas as pd from loguru import logger -import rich # type: ignore import pyenzyme as pe @@ -25,6 +24,11 @@ def read_sbml(cls, path: Path | str): """ Reads an SBML file and initializes an EnzymeML document. + This function reads an SBML file from an OMEX archive, extracts all relevant + information, and creates an EnzymeML document with the extracted data. It handles + different versions of the EnzymeML format and maps SBML elements to their + corresponding EnzymeML entities. + Args: cls: The class to instantiate the EnzymeML document. path (Path | str): The path to the OMEX archive containing the SBML file. @@ -99,6 +103,9 @@ def _init_and_read_sbml(handler: IO): """ Initialize the SBML reader and read the SBML document. + This function creates an SBML reader, reads the SBML document from the provided + file handler, and returns the model contained in the document. + Args: handler (IO): The file handler for the SBML document. @@ -127,15 +134,18 @@ def _parse_unit(unit: sbml.UnitDefinition): """ Parse a unit definition from an SBML model into an EnzymeML unit definition. + This function extracts information from an SBML unit definition and creates + an equivalent EnzymeML unit definition with the same properties. + Args: unit (sbml.UnitDefinition): The SBML unit definition. Returns: - An EnzymeML unit definition. + An EnzymeML unit definition with the same ID, name, and base units. """ enzml_unit = pe.UnitDefinition( - id=unit.getName(), - name=unit.getName(), + id=unit.getId(), # type: ignore + name=unit.getName(), # type: ignore ) for base_unit in unit.getListOfUnits(): @@ -159,11 +169,17 @@ def _parse_species(species: sbml.Species): """ Parse a species from an SBML model into EnzymeML small molecule or protein. + This function determines the type of species based on its SBO term and calls + the appropriate parsing function to create the corresponding EnzymeML entity. + Args: species (sbml.Species): The SBML species. Returns: - An EnzymeML small molecule, protein, or complex. + An EnzymeML small molecule, protein, or complex based on the SBO term. + + Logs: + Error: If the SBO term is unknown or not supported. """ sbo_term = species.getSBOTermID() @@ -183,11 +199,16 @@ def _parse_small_molecule(species: sbml.Species): """ Parse a species from an SBML model into an EnzymeML small molecule. + This function extracts information from an SBML species with an SBO term + indicating it's a small molecule and creates an equivalent EnzymeML small + molecule entity. + Args: - species (sbml.Species): The SBML species. + species (sbml.Species): The SBML species with SBO term for small molecule. Returns: - An EnzymeML small molecule. + An EnzymeML small molecule with properties extracted from the SBML species + and its annotations. """ parsed = version.parse_annotation(annotation=species.getAnnotationString()) annots = version.extract(parsed, "small_molecule") @@ -209,11 +230,15 @@ def _parse_protein(species: sbml.Species): """ Parse a species from an SBML model into an EnzymeML protein. + This function extracts information from an SBML species with an SBO term + indicating it's a protein and creates an equivalent EnzymeML protein entity. + Args: - species (sbml.Species): The SBML species. + species (sbml.Species): The SBML species with SBO term for protein. Returns: - An EnzymeML protein. + An EnzymeML protein with properties extracted from the SBML species + and its annotations. """ parsed = version.parse_annotation(annotation=species.getAnnotationString()) annots = version.extract(parsed, "protein") @@ -235,11 +260,15 @@ def _parse_complex(species: sbml.Species): """ Parse a species from an SBML model into an EnzymeML complex. + This function extracts information from an SBML species with an SBO term + indicating it's a complex and creates an equivalent EnzymeML complex entity. + Args: - species (sbml.Species): The SBML species. + species (sbml.Species): The SBML species with SBO term for complex. Returns: - An EnzymeML complex. + An EnzymeML complex with properties extracted from the SBML species + and its annotations. """ parsed = version.parse_annotation(annotation=species.getAnnotationString()) annots = version.extract(parsed, "complex") @@ -260,11 +289,17 @@ def _parse_vessel(compartment: sbml.Compartment): """ Parse a compartment from an SBML model into an EnzymeML vessel. + This function extracts information from an SBML compartment and creates + an equivalent EnzymeML vessel entity. + Args: compartment (sbml.Compartment): The SBML compartment. - Ret - print(units[compartment.getUnits()]) + Returns: + An EnzymeML vessel with properties extracted from the SBML compartment. + + Note: + The function prints the unit of the compartment for debugging purposes. """ vessel = pe.Vessel( id=compartment.getId(), @@ -282,11 +317,18 @@ def _parse_parameter(parameter: sbml.Parameter): """ Parse a parameter from an SBML model into an EnzymeML parameter. + This function extracts information from an SBML parameter and creates + an equivalent EnzymeML parameter entity. + Args: parameter (sbml.Parameter): The SBML parameter. Returns: - An EnzymeML parameter. + An EnzymeML parameter with properties extracted from the SBML parameter + and its annotations. + + Note: + The function prints the parameter annotation string for debugging purposes. """ print("PARAMETER", parameter.getAnnotationString()) parsed = version.parse_annotation(annotation=parameter.getAnnotationString()) @@ -309,20 +351,23 @@ def _parse_equation(rule: sbml.Rule, rule_type: pe.EquationType): """ Parse a rule from an SBML model into an EnzymeML equation. + This function extracts information from an SBML rule and creates an equivalent + EnzymeML equation entity based on the specified equation type. + Args: rule (sbml.Rule): The SBML rule. - rule_type (pe.EquationType): The type of the equation. + rule_type (pe.EquationType): The type of the equation (INITIAL_ASSIGNMENT, ODE, or RATE_LAW). Returns: - An EnzymeML equation. + An EnzymeML equation with properties extracted from the SBML rule. Raises: - ValueError: If the rule type is unknown. + ValueError: If the rule type is unknown or not supported. """ match rule_type: case pe.EquationType.INITIAL_ASSIGNMENT: equation = sbml.formulaToString(rule.getMath()) - species_id = rule.getSymbol() + species_id = rule.getSymbol() # type: ignore case pe.EquationType.ODE: equation = rule.getFormula() species_id = rule.getVariable() @@ -352,9 +397,12 @@ def _map_v1_variables(annots: dict, equation: str): """ Map variables for version 1 of the EnzymeML format. + This function identifies variables in the equation string that correspond to + species in the EnzymeML document and adds them to the annotations. + Args: - annots (dict): The annotations. - equation (str): The equation string. + annots (dict): The annotations dictionary to update with variables. + equation (str): The equation string to search for variables. """ if "variables" not in annots: annots["variables"] = [] @@ -379,11 +427,14 @@ def _parse_reaction(reaction: sbml.Reaction): """ Parse a reaction from an SBML model into an EnzymeML reaction. + This function extracts information from an SBML reaction, including reactants, + products, modifiers, and kinetic law, and creates an equivalent EnzymeML reaction. + Args: reaction (sbml.Reaction): The SBML reaction. Returns: - An EnzymeML reaction. + An EnzymeML reaction with properties extracted from the SBML reaction. """ # Get the reactants and products products = [_parse_element(product, 1) for product in reaction.getListOfProducts()] @@ -398,7 +449,7 @@ def _parse_reaction(reaction: sbml.Reaction): kinetic_law = _parse_equation(reaction.getKineticLaw(), pe.EquationType.RATE_LAW) # Create the EnzymeML reaction - reaction = pe.Reaction( + enzml_reaction = pe.Reaction( id=reaction.getId(), name=reaction.getName(), species=reactants + products, @@ -406,19 +457,22 @@ def _parse_reaction(reaction: sbml.Reaction): kinetic_law=kinetic_law, ) - return reaction + return enzml_reaction def _parse_element(species, direction: int): """ Parse a species element from an SBML model into an EnzymeML reaction element. + This function creates an EnzymeML reaction element from an SBML species reference, + applying the specified direction to determine if it's a reactant or product. + Args: - species: The SBML species element. + species: The SBML species element (SpeciesReference). direction (int): The direction of the reaction (1 for product, -1 for reactant). Returns: - An EnzymeML reaction element. + An EnzymeML reaction element with the species ID and stoichiometry. """ return pe.ReactionElement( species_id=species.getSpecies(), @@ -434,18 +488,20 @@ def _parse_measurements( """ Parse measurements from an SBML model into EnzymeML measurements. + This function extracts measurement data from the SBML model based on the + EnzymeML version and creates EnzymeML measurement objects. + Args: model (sbml.Model): The SBML model. list_of_reactions (sbml.ListOfReactions): The list of reactions in the SBML model. - meas_data (dict[str, pd.DataFrame]): The measurement data. + meas_data (dict[str, pd.DataFrame]): The measurement data extracted from the OMEX archive. Returns: - EnzymeML measurements. + A list of EnzymeML measurements. Raises: - ValueError: If the version is unknown. + ValueError: If the EnzymeML version is unknown or not supported. """ - match version.version: case SupportedVersions.VERSION1: parsed = version.parse_annotation(list_of_reactions.getAnnotationString()) @@ -461,13 +517,16 @@ def _parse_measurements( def _check_nan(value: float): """ - Check if a value is NaN. + Check if a value is NaN and return None if it is. + + This utility function checks if a floating-point value is NaN (Not a Number) + and returns None in that case, otherwise it returns the original value. Args: value (float): The value to check. Returns: - The value if it is not NaN, otherwise None. + float | None: The original value if it is not NaN, otherwise None. """ if math.isnan(value): return None diff --git a/pyenzyme/sbml/serializer.py b/pyenzyme/sbml/serializer.py index fab41d40..2ce10c28 100644 --- a/pyenzyme/sbml/serializer.py +++ b/pyenzyme/sbml/serializer.py @@ -11,6 +11,7 @@ import pyenzyme as pe import pyenzyme.tools as tools + from pyenzyme import rdf from pyenzyme import xmlutils as _xml from pyenzyme.logging import add_logger @@ -18,9 +19,8 @@ from pyenzyme.sbml.validation import validate_sbml_export from pyenzyme.sbml.versions import v2 from pyenzyme.tabular import to_pandas -from pyenzyme.units.units import UnitDefinition +from pyenzyme import UnitDefinition -MAPPINGS = tools.read_static_file("pyenzyme.sbml", "mappings.toml") NSMAP = {"enzymeml": "https://www.enzymeml.org/v2"} @@ -93,7 +93,7 @@ def to_sbml( _add_parameter(parameter) if out is None: - return libsbml.writeSBMLToString(sbmldoc), to_pandas(doc) + return libsbml.writeSBMLToString(sbmldoc), to_pandas(doc) # type: ignore if isinstance(out, str): out = Path(out) @@ -114,6 +114,16 @@ def to_sbml( def convert_unit_classes(doc: pe.EnzymeMLDocument, custom_units: list[UnitDefinition]): + """ + Converts unit classes from the EnzymeML document to custom units. + + This function extends the list of custom units with unique unit definitions + found in the EnzymeML document. + + Args: + doc (pe.EnzymeMLDocument): The EnzymeML document containing units. + custom_units (list[UnitDefinition]): The list of custom units to extend. + """ custom_units.extend( [ pe.UnitDefinition(**unit.model_dump()) @@ -124,8 +134,12 @@ def convert_unit_classes(doc: pe.EnzymeMLDocument, custom_units: list[UnitDefini def _add_unit_definitions(unit: UnitDefinition): - """Add unit definitions to the SBML model.""" + """ + Add unit definitions to the SBML model. + Args: + unit (UnitDefinition): The unit definition to add to the SBML model. + """ sbml_unitdef = model.createUnitDefinition() sbml_unitdef.setId(unit.id) @@ -134,7 +148,7 @@ def _add_unit_definitions(unit: UnitDefinition): for base_unit in unit.base_units: sbml_unit = sbml_unitdef.createUnit() sbml_unit.initDefaults() - sbml_unit.setKind(_get_sbml_kind(base_unit.kind)) + sbml_unit.setKind(_get_sbml_kind(base_unit.kind)) # type: ignore sbml_unit.setExponent(base_unit.exponent) if base_unit.scale: @@ -144,8 +158,15 @@ def _add_unit_definitions(unit: UnitDefinition): def _add_vessel(vessel: pe.Vessel): - """Add vessels to the SBML model.""" + """ + Add vessels to the SBML model as compartments. + + Args: + vessel (pe.Vessel): The vessel to add to the SBML model. + Raises: + ValueError: If the vessel's unit is not found in the available units. + """ compartment = model.createCompartment() compartment.initDefaults() compartment.setId(vessel.id) @@ -162,8 +183,12 @@ def _add_vessel(vessel: pe.Vessel): def _add_small_mol(small_mol: pe.SmallMolecule): - """Add small molecules to the SBML model.""" + """ + Add small molecules to the SBML model as species. + Args: + small_mol (pe.SmallMolecule): The small molecule to add to the SBML model. + """ species = model.createSpecies() species.initDefaults() species.setId(small_mol.id) @@ -189,8 +214,12 @@ def _add_small_mol(small_mol: pe.SmallMolecule): def _add_protein(protein: pe.Protein): - """Add proteins to the SBML model.""" + """ + Add proteins to the SBML model as species. + Args: + protein (pe.Protein): The protein to add to the SBML model. + """ species = model.createSpecies() species.initDefaults() species.setId(protein.id) @@ -218,8 +247,12 @@ def _add_protein(protein: pe.Protein): def _add_complex(complex_: pe.Complex): - """Add complexes to the SBML model.""" + """ + Add complexes to the SBML model as species. + Args: + complex_ (pe.Complex): The complex to add to the SBML model. + """ species = model.createSpecies() species.initDefaults() species.setId(complex_.id) @@ -236,13 +269,19 @@ def _add_complex(complex_: pe.Complex): def _get_first_meas_init_conc(species: pe.SmallMolecule | pe.Protein): - """Extracts the initial concentration of a species from the first measurement + """ + Extracts the initial concentration of a species from the first measurement. SBML requires the initial concentration to be set for species that are measured, even if there are multiple measurements. This function extracts the initial concentration from the first measurement of the species to fulfill this requirement. - """ + Args: + species (pe.SmallMolecule | pe.Protein): The species to get the initial concentration for. + + Returns: + float | None: The initial concentration of the species or None if not found. + """ if not doc.measurements: return None @@ -256,8 +295,17 @@ def _get_first_meas_init_conc(species: pe.SmallMolecule | pe.Protein): def _add_reaction(reaction: pe.Reaction, index: int): - """Add reactions to the SBML model.""" + """ + Add reactions to the SBML model. + Args: + reaction (pe.Reaction): The reaction to add to the SBML model. + index (int): The index of the reaction in the EnzymeML document. + + Raises: + ValueError: If the stoichiometry of a species is 0. + AssertionError: If the stoichiometry of a species is not set. + """ sbml_reaction = model.createReaction() sbml_reaction.initDefaults() sbml_reaction.setName(reaction.name) @@ -287,8 +335,13 @@ def _add_reaction(reaction: pe.Reaction, index: int): def _add_rate_law(equation: pe.Equation, reac: libsbml.Reaction): - """Add rate laws to the SBML Reaction.""" + """ + Add rate laws to the SBML Reaction. + Args: + equation (pe.Equation): The equation representing the rate law. + reac (libsbml.Reaction): The SBML reaction to add the rate law to. + """ law = reac.createKineticLaw() law.setMath(libsbml.parseL3Formula(equation.equation)) @@ -305,7 +358,20 @@ def _get_create_fun( reaction: libsbml.Reaction, species: str, ) -> Callable[[], libsbml.SpeciesReference]: - """Helper function to retrieve the appropriate create function""" + """ + Helper function to retrieve the appropriate create function based on stoichiometry. + + Args: + stoichiometry (float): The stoichiometry of the species. + reaction (libsbml.Reaction): The SBML reaction. + species (str): The species ID. + + Returns: + Callable[[], libsbml.SpeciesReference]: The appropriate create function. + + Raises: + ValueError: If the stoichiometry is 0. + """ if stoichiometry > 0: return reaction.createProduct elif stoichiometry < 0: @@ -315,8 +381,12 @@ def _get_create_fun( def _add_parameter(parameter: pe.Parameter): - """Add parameters to the SBML model.""" + """ + Add parameters to the SBML model. + Args: + parameter (pe.Parameter): The parameter to add to the SBML model. + """ sbml_param = model.createParameter() sbml_param.setId(parameter.id) sbml_param.setName(parameter.name) @@ -342,8 +412,15 @@ def _add_parameter(parameter: pe.Parameter): def _add_equation(equation: pe.Equation): - """Add equations to the SBML model.""" + """ + Add equations to the SBML model. + + Args: + equation (pe.Equation): The equation to add to the SBML model. + Raises: + ValueError: If the equation type is not supported. + """ if equation.equation_type == pe.EquationType.ODE: sbml_rule = model.createRateRule() # type: ignore sbml_rule.setVariable(equation.species_id) @@ -367,8 +444,12 @@ def _add_equation(equation: pe.Equation): def _add_measurements(measurements: list[pe.Measurement]): - """Adds measurements to the SBML model.""" + """ + Adds measurements to the SBML model. + Args: + measurements (list[pe.Measurement]): The measurements to add to the SBML model. + """ annot = v2.DataAnnot(file="./data.tsv") for measurement in measurements: @@ -398,7 +479,7 @@ def _add_measurements(measurements: list[pe.Measurement]): species_id=species_data.species_id, initial=species_data.initial, type=species_data.data_type.name, - unit=_get_unit_id(species_data.data_unit), + unit=_get_unit_id(species_data.data_unit), # type: ignore ) meas_annot.species_data.append(species_annot) @@ -414,8 +495,17 @@ def _create_condition_element( temperature: float | None, temperature_unit: UnitDefinition | None, ): - """Set the conditions of the reaction in the SBML model.""" + """ + Set the conditions of the reaction in the SBML model. + Args: + ph (float | None): The pH value. + temperature (float | None): The temperature value. + temperature_unit (UnitDefinition | None): The unit of the temperature. + + Returns: + ET.Element: The XML element representing the conditions. + """ element = ET.Element(f"{{{NSMAP['enzymeml']}}}conditions") mappings = { "ph": {"@value": ph}, @@ -431,7 +521,19 @@ def _create_condition_element( return element -def _get_sbml_kind(unit_type: pe.UnitType): +def _get_sbml_kind(unit_type): + """ + Convert a UnitType to the corresponding SBML unit kind. + + Args: + unit_type (UnitType): The unit type to convert. + + Returns: + int: The SBML unit kind. + + Raises: + ValueError: If the unit type is not found in libsbml. + """ try: return getattr(libsbml, f"UNIT_KIND_{unit_type.name}") except AttributeError: @@ -439,8 +541,18 @@ def _get_sbml_kind(unit_type: pe.UnitType): def _get_unit_id(unit: pe.UnitDefinition | None) -> str | None: - """Helper function to get the unit from the list of units.""" + """ + Helper function to get the unit ID from the list of units. + + Args: + unit (pe.UnitDefinition | None): The unit to find the ID for. + Returns: + str | None: The ID of the unit or None if the unit is None. + + Raises: + ValueError: If the unit is not found in the list of units. + """ if unit is None: return None @@ -452,14 +564,26 @@ def _get_unit_id(unit: pe.UnitDefinition | None) -> str | None: def _same_unit(unit1: pe.UnitDefinition, unit2: pe.UnitDefinition) -> bool: - """Check if two units are the same.""" + """ + Check if two units are the same by comparing their model dumps. + + Args: + unit1 (pe.UnitDefinition): The first unit. + unit2 (pe.UnitDefinition): The second unit. + Returns: + bool: True if the units are the same, False otherwise. + """ return unit1.model_dump(exclude={"id"}) == unit2.model_dump(exclude={"id"}) def _validate_sbml(sbmldoc: libsbml.SBMLDocument) -> None: - """Validate the SBML document using the libSBML function.""" + """ + Validate the SBML document using the libSBML function. + Args: + sbmldoc (libsbml.SBMLDocument): The SBML document to validate. + """ sbml_errors = sbmldoc.checkConsistency() if sbml_errors and not print_warnings: @@ -481,6 +605,15 @@ def _validate_sbml(sbmldoc: libsbml.SBMLDocument) -> None: def _assign_ids_to_units(doc_units: List[UnitDefinition]) -> List[UnitDefinition]: + """ + Assign unique IDs to units. + + Args: + doc_units (List[UnitDefinition]): The list of units to assign IDs to. + + Returns: + List[UnitDefinition]: The list of units with assigned IDs. + """ ids = [unit.id for unit in doc_units if unit.id] unique_units = [] @@ -497,7 +630,15 @@ def _assign_ids_to_units(doc_units: List[UnitDefinition]) -> List[UnitDefinition def _id_generator(ids: list[str]): - """Generator for creating unique IDs that are not in unit_ids.""" + """ + Generator for creating unique IDs that are not in unit_ids. + + Args: + ids (list[str]): The list of existing IDs. + + Yields: + str: A unique ID. + """ i = 0 while True: potential_id = f"u{i}" diff --git a/pyenzyme/sbml/validation.py b/pyenzyme/sbml/validation.py index 7df62781..c99ebc6c 100644 --- a/pyenzyme/sbml/validation.py +++ b/pyenzyme/sbml/validation.py @@ -32,6 +32,12 @@ def _check_consistent_vessel_ids(doc: pe.EnzymeMLDocument) -> bool: SBML documents require that all species have a vessel id that exists in the document and this validator checks for that. Otherwise, an error message will be logged and the validity set to False. + + Args: + doc (pe.EnzymeMLDocument): The EnzymeML document to validate. + + Returns: + bool: True if all species have valid vessel IDs, False otherwise. """ vessel_ids = {v.id for v in doc.vessels} @@ -63,6 +69,12 @@ def _check_equation_either_rule_or_reaction(doc: pe.EnzymeMLDocument) -> bool: there cannot be a rate equation and reaction element at the same time, since the latter is used to derive the former. This validator checks for that and logs an error message if the document is invalid. + + Args: + doc (pe.EnzymeMLDocument): The EnzymeML document to validate. + + Returns: + bool: True if all species have either rules or reactions but not both, False otherwise. """ species_w_rate = { @@ -86,8 +98,15 @@ def _check_equation_either_rule_or_reaction(doc: pe.EnzymeMLDocument) -> bool: return all(result) -def _check_units_exist(doc: pe.EnzymeMLDocument): - """This validator checks whether all units in the document are defined in the SBML standard.""" +def _check_units_exist(doc: pe.EnzymeMLDocument) -> bool: + """This validator checks whether all units in the document are defined in the SBML standard. + + Args: + doc (pe.EnzymeMLDocument): The EnzymeML document to validate. + + Returns: + bool: True if all mandatory objects have units defined, False otherwise. + """ mandatory_unit_objects = [ *tools.extract(obj=doc, target=pe.MeasurementData), @@ -121,12 +140,18 @@ def _check_units_exist(doc: pe.EnzymeMLDocument): return all(result) -def _check_assigned_params_are_not_constant(doc: pe.EnzymeMLDocument): +def _check_assigned_params_are_not_constant(doc: pe.EnzymeMLDocument) -> bool: """This validator checks whether all assigned parameters are not constant. If a parameter is assigned a value through an assignment rule, it should not be constant. This validator checks for that and logs a warning if a parameter is constant but has an assignment rule and sets the parameter to non-constant. + + Args: + doc (pe.EnzymeMLDocument): The EnzymeML document to validate. + + Returns: + bool: True if all assigned parameters are valid, False otherwise. """ assignments = doc.filter_equations(equation_type=pe.EquationType.ASSIGNMENT) diff --git a/pyenzyme/sbml/versions/v1.py b/pyenzyme/sbml/versions/v1.py index 7816ba28..bbb81906 100644 --- a/pyenzyme/sbml/versions/v1.py +++ b/pyenzyme/sbml/versions/v1.py @@ -14,6 +14,21 @@ class V1Annotation( tag="annotation", search_mode="unordered", ): + """ + Represents the top-level annotation in the EnzymeML v1 format. + + This class contains all the different types of annotations that can be + attached to elements in an SBML model using EnzymeML v1 format. + + Attributes: + small_molecule (ReactantAnnot | None): Annotation for small molecules. + protein (ProteinAnnot | None): Annotation for proteins. + complex (ComplexAnnot | None): Annotation for complexes. + data (DataAnnot | None): Annotation for experimental data. + parameter (ParameterAnnot | None): Annotation for parameters. + variables (VariableAnnot | None): Annotation for variables. + """ + small_molecule: ReactantAnnot | None = element( tag="smallMolecule", default=None, @@ -60,6 +75,9 @@ class ParameterAnnot( """ Represents the annotation for a parameter in the EnzymeML format. + This class contains information about parameter bounds and initial values + that can be used in parameter estimation or simulation. + Attributes: initial (float | None): The initial value of the parameter. upper (float | None): The upper bound of the parameter. @@ -79,6 +97,9 @@ class ComplexAnnot( """ Represents the annotation for a complex in the EnzymeML format. + A complex is formed by multiple participants (species) that interact + with each other. + Attributes: participants (list[str]): A list of participants in the complex. """ @@ -94,6 +115,9 @@ class ReactantAnnot( """ Represents the annotation for a reactant in the EnzymeML format. + This class contains chemical identifiers for small molecules that + participate in reactions. + Attributes: inchi (str | None): The InChI of the reactant. smiles (str | None): The SMILES representation of the reactant. @@ -113,6 +137,9 @@ class ProteinAnnot( """ Represents the annotation for a protein in the EnzymeML format. + This class contains biological identifiers and properties of proteins, + particularly enzymes that catalyze reactions. + Attributes: sequence (str | None): The amino acid sequence of the protein. ecnumber (str | None): The EC number of the protein. @@ -134,7 +161,10 @@ class DataAnnot( nsmap={"": "http://sbml.org/enzymeml/version2"}, ): """ - Represents the annotation for data in the EnzymeML format. + Represents the annotation for experimental data in the EnzymeML format. + + This class contains information about experimental measurements, including + file formats, measurement metadata, and file references. Attributes: formats (list[FormatAnnot]): A list of format annotations. @@ -174,6 +204,9 @@ def to_measurements( """ Converts the data annotation to version 2 format. + This method transforms v1 data annotations into v2 Measurement objects, + mapping file data and units appropriately. + Args: meas_data (dict[str, pd.DataFrame]): A dictionary of dataframes. units (dict[str, UnitDefinition]): A dictionary of unit definitions. @@ -191,12 +224,13 @@ def to_measurements( measurement = Measurement(id=meas_v1.id, name=meas_v1.name) for init_conc in meas_v1.init_concs: - measurement.add_to_species_data( - data_unit=_get_unit(init_conc.unit, units), - species_id=init_conc.species_id, - initial=init_conc.value, - data_type=DataTypes.CONCENTRATION, - ) + if init_conc.species_id: + measurement.add_to_species_data( + data_unit=_get_unit(init_conc.unit, units), # type: ignore + species_id=init_conc.species_id, + initial=init_conc.value, + data_type=DataTypes.CONCENTRATION, + ) # Extract the format information file = next(f for f in self.files if f.id == meas_v1.file) @@ -227,6 +261,10 @@ def _map_columns( """ Maps columns from the dataframe to the measurement. + This method processes each column in the format definition, extracts + the corresponding data from the dataframe, and adds it to the measurement + object with appropriate units. + Args: df (pd.DataFrame): The dataframe containing the data. file_format (FormatAnnot): The format annotation. @@ -239,9 +277,18 @@ def _map_columns( values = df.iloc[:, col.index].values.tolist() if col.type == "time": - self._map_time_values(measurement, unit, values) + self._map_time_values( + measurement, + unit, # type: ignore + values, + ) else: - self._map_species_values(col, measurement, unit, values) + self._map_species_values( + col, + measurement, + unit, # type: ignore + values, + ) @staticmethod def _map_species_values( @@ -253,6 +300,9 @@ def _map_species_values( """ Maps species values to the measurement. + This method finds the appropriate species data object in the measurement + and adds the concentration or other data values to it. + Args: col (ColumnAnnot): The column annotation. measurement (Measurement): The measurement to map the values to. @@ -276,6 +326,9 @@ def _map_time_values( """ Maps time values to the measurement. + This method adds time values to all species data objects in the measurement, + ensuring that time series data is properly associated with each species. + Args: measurement (Measurement): The measurement to map the values to. unit (UnitDefinition): The unit definition. @@ -295,6 +348,9 @@ class FormatAnnot( """ Represents the format annotation in the EnzymeML format. + This class defines the structure of data files, specifying how columns + in data files map to species, time, or other measurements. + Attributes: id (str): The ID of the format. columns (list[ColumnAnnot]): A list of column annotations. @@ -315,6 +371,9 @@ class ColumnAnnot( """ Represents the column annotation in the EnzymeML format. + This class defines how a specific column in a data file should be interpreted, + including what species it refers to, what type of data it contains, and its units. + Attributes: species_id (str | None): The ID of the species. type (str): The type of the column. @@ -340,6 +399,9 @@ class MeasurementAnnot( """ Represents the measurement annotation in the EnzymeML format. + This class contains metadata about a specific measurement, including + its identifier, name, associated file, and initial concentrations. + Attributes: id (str): The ID of the measurement. name (str): The name of the measurement. @@ -364,6 +426,9 @@ class InitConcAnnot( """ Represents the initial concentration annotation in the EnzymeML format. + This class defines the initial concentration of a species (either a protein + or reactant) in a specific measurement. + Attributes: protein (str | None): The protein associated with the initial concentration. reactant (str | None): The reactant associated with the initial concentration. @@ -378,12 +443,15 @@ class InitConcAnnot( @computed_field @property - def species_id(self) -> str: + def species_id(self) -> str | None: """ Computes the species ID based on the protein or reactant. + This property returns either the protein or reactant ID, ensuring + that exactly one of them is set. + Returns: - str: The species ID. + str | None: The species ID. """ assert bool(self.protein) != bool(self.reactant), ( "Either protein or reactant must be set" @@ -399,6 +467,9 @@ class FileAnnot( """ Represents the file annotation in the EnzymeML format. + This class contains metadata about a data file, including its identifier, + location, and format. + Attributes: id (str): The ID of the file. location (str): The file path. diff --git a/pyenzyme/sbml/versions/v2.py b/pyenzyme/sbml/versions/v2.py index e01c9129..3daba966 100644 --- a/pyenzyme/sbml/versions/v2.py +++ b/pyenzyme/sbml/versions/v2.py @@ -1,6 +1,13 @@ """ This module contains the classes for the EnzymeML version 2 format annotations used to map the EnzymeML JSON schema to SBML. + +The classes in this module define the structure for annotating SBML models with +EnzymeML-specific information. These annotations allow for the representation of +enzymatic reactions, experimental data, and associated metadata in a standardized format. + +Each annotation class corresponds to a specific aspect of enzymatic data, such as +small molecules, proteins, complexes, experimental measurements, and parameters. """ from __future__ import annotations @@ -8,7 +15,6 @@ import pandas as pd from pydantic import field_validator from pydantic_xml import element, attr, BaseXmlModel -import rich from pyenzyme import DataTypes, Measurement, UnitDefinition from pyenzyme.sbml.utils import _get_unit @@ -17,9 +23,18 @@ class BaseAnnot(BaseXmlModel): """ Base class for annotations in the EnzymeML format. + + This class provides common functionality for all annotation classes, + including methods to check if an annotation is empty. """ def is_empty(self): + """ + Check if the annotation is empty. + + Returns: + bool: True if all attributes are None or empty lists, False otherwise. + """ return all(value is None or value == [] for _, value in self) @@ -29,6 +44,21 @@ class V2Annotation( search_mode="unordered", nsmap={"enzymeml": "https://www.enzymeml.org/v2"}, ): + """ + Top-level annotation class for EnzymeML version 2. + + This class serves as a container for all other annotation types and + is attached to SBML elements to provide EnzymeML-specific information. + + Attributes: + small_molecule (SmallMoleculeAnnot | None): Annotation for small molecules. + protein (ProteinAnnot | None): Annotation for proteins. + complex (ComplexAnnot | None): Annotation for complexes. + data (DataAnnot | None): Annotation for experimental data. + parameter (ParameterAnnot | None): Annotation for parameters. + variables (VariablesAnnot | None): Annotation for variables. + """ + small_molecule: SmallMoleculeAnnot | None = element( tag="smallMolecule", default=None, @@ -69,6 +99,9 @@ class SmallMoleculeAnnot( """ Represents the annotation for a small molecule in the EnzymeML format. + This class contains chemical identifiers that help uniquely identify + small molecules involved in enzymatic reactions. + Attributes: inchikey (str | None): The InChIKey of the small molecule. canonical_smiles (str | None): The canonical SMILES representation of the small molecule. @@ -87,6 +120,9 @@ class ProteinAnnot( """ Represents the annotation for a protein in the EnzymeML format. + This class contains biological information about proteins, including + their enzymatic classification, origin, and sequence. + Attributes: ecnumber (str | None): The EC number of the protein. organism (str | None): The organism from which the protein is derived. @@ -109,6 +145,9 @@ class ComplexAnnot( """ Represents the annotation for a complex in the EnzymeML format. + This class describes molecular complexes formed by multiple components, + such as protein-protein or protein-substrate complexes. + Attributes: participants (list[str]): A list of participants in the complex. """ @@ -128,6 +167,9 @@ class DataAnnot( """ Represents the annotation for data in the EnzymeML format. + This class links experimental data files to measurements and provides + methods to convert the data into Measurement objects. + Attributes: file (str): The file associated with the data. measurements (list[MeasurementAnnot]): A list of measurements associated with the data. @@ -142,6 +184,15 @@ class DataAnnot( @field_validator("file") @classmethod def _check_file_path(cls, value): + """ + Ensures that file paths start with './'. + + Args: + value (str): The file path to validate. + + Returns: + str: The validated file path. + """ if not value.startswith("./"): return "./" + value return value @@ -151,6 +202,22 @@ def to_measurements( meas_data: dict[str, pd.DataFrame], units: dict[str, UnitDefinition], ) -> list[Measurement]: + """ + Converts data annotations to Measurement objects. + + This method processes the measurement annotations and associated data + to create fully-populated Measurement objects. + + Args: + meas_data (dict[str, pd.DataFrame]): Dictionary mapping file paths to data frames. + units (dict[str, UnitDefinition]): Dictionary mapping unit IDs to UnitDefinition objects. + + Returns: + list[Measurement]: List of created Measurement objects. + + Raises: + AssertionError: If the specified data file is not found in the provided data. + """ assert self.file in meas_data, f"Data file '{self.file}' not found in data" return [ @@ -171,6 +238,9 @@ class MeasurementAnnot( """ Represents the annotation for a measurement in the EnzymeML format. + This class describes experimental measurements, including conditions, + time units, and species data. + Attributes: id (str): The ID of the measurement. name (str | None): The name of the measurement. @@ -193,6 +263,22 @@ def to_measurement( meas_data: pd.DataFrame, units: dict[str, UnitDefinition], ): + """ + Converts a measurement annotation to a Measurement object. + + This method processes the measurement data, conditions, and species data + to create a fully-populated Measurement object. + + Args: + meas_data (pd.DataFrame): The data frame containing measurement data. + units (dict[str, UnitDefinition]): Dictionary mapping unit IDs to UnitDefinition objects. + + Returns: + Measurement: The created Measurement object. + + Raises: + ValueError: If no data is found for the measurement ID. + """ df_sub = meas_data[meas_data.id == self.id] # Extract conditions data @@ -221,7 +307,7 @@ def to_measurement( id=self.id, name=name, temperature=temperature, - temperature_unit=temperature_unit, + temperature_unit=temperature_unit, # type: ignore ph=ph, ) @@ -240,6 +326,18 @@ def _map_species_data( species: SpeciesDataAnnot, units: dict[str, UnitDefinition], ): + """ + Maps species data from a data frame to a Measurement object. + + This method extracts species-specific data from the data frame and + adds it to the Measurement object. + + Args: + df_sub (pd.DataFrame): The filtered data frame for the current measurement. + measurement (Measurement): The Measurement object to add data to. + species (SpeciesDataAnnot): The species data annotation. + units (dict[str, UnitDefinition]): Dictionary mapping unit IDs to UnitDefinition objects. + """ if species.species_id in df_sub.columns: data = df_sub[species.species_id].to_list() time = df_sub["time"].to_list() @@ -250,14 +348,26 @@ def _map_species_data( data=data, time=time, species_id=species.species_id, - data_unit=_get_unit(species.unit, units), - time_unit=_get_unit(self.time_unit, units), + data_unit=_get_unit(species.unit, units), # type: ignore + time_unit=_get_unit(self.time_unit, units), # type: ignore initial=species.initial, - data_type=self._map_data_type(species.type), + data_type=self._map_data_type(species.type), # type: ignore ) @staticmethod def _map_data_type(dtype: str): + """ + Maps a string data type to a DataTypes enum value. + + Args: + dtype (str): The string representation of the data type. + + Returns: + DataTypes: The corresponding DataTypes enum value. + + Raises: + ValueError: If the data type is not supported. + """ if data_type := getattr(DataTypes, dtype, None): return data_type else: @@ -273,6 +383,9 @@ class SpeciesDataAnnot( """ Represents the annotation for species data in the EnzymeML format. + This class describes data associated with a specific species, including + its initial value, data type, and unit. + Attributes: species_id (str): The ID of the species. initial (float): The value associated with the species. @@ -295,6 +408,9 @@ class ConditionsAnnot( """ Represents the annotation for conditions in the EnzymeML format. + This class describes experimental conditions such as pH and temperature + under which measurements were taken. + Attributes: ph (PHAnnot | None): The pH conditions. temperature (TemperatureAnnot | None): The temperature conditions. @@ -313,6 +429,8 @@ class PHAnnot( """ Represents the annotation for pH in the EnzymeML format. + This class describes the pH value of an experimental condition. + Attributes: value (float): The pH value. """ @@ -329,6 +447,8 @@ class TemperatureAnnot( """ Represents the annotation for temperature in the EnzymeML format. + This class describes the temperature value and unit of an experimental condition. + Attributes: value (float): The temperature value. unit (str): The unit of the temperature value. @@ -347,6 +467,9 @@ class ParameterAnnot( """ Represents the annotation for a parameter in the EnzymeML format. + This class describes statistical properties of parameters used in + kinetic models, such as bounds and standard error. + Attributes: lower (float | None): The lower bound of the parameter. upper (float | None): The upper bound of the parameter. @@ -367,6 +490,9 @@ class VariablesAnnot( """ Represents the annotation for variables in the EnzymeML format. + This class serves as a container for variable annotations used in + kinetic models and equations. + Attributes: variables (list[Variable]): A list of variables. """ @@ -383,6 +509,9 @@ class VariableAnnot( """ Represents a variable in the EnzymeML format. + This class describes variables used in kinetic models and equations, + including their identifiers and symbols. + Attributes: id (str | None): The ID of the variable. name (str | None): The name of the variable. diff --git a/pyenzyme/tabular.py b/pyenzyme/tabular.py index b7316241..35667f94 100644 --- a/pyenzyme/tabular.py +++ b/pyenzyme/tabular.py @@ -74,7 +74,6 @@ def read_excel( data_unit: str, time_unit: str, data_type: DataTypes = DataTypes.CONCENTRATION, - sep: str = ";", ): """Reads a CSV file from the specified path into a measurement. @@ -91,8 +90,8 @@ def read_excel( Args: path (str, pathlib.Path): The path to the CSV file. - data_unit (UnitDefinition): The unit of the data. - time_unit (UnitDefinition): The unit of the time. + data_unit (str): The unit of the data. + time_unit (str): The unit of the time. data_type (DataTypes): The type of the data. Default is DataTypes.CONCENTRATION. sep (str): The separator of the CSV file. Default is ';'. @@ -145,8 +144,8 @@ def read_csv( Args: path (str, pathlib.Path): The path to the CSV file. - data_unit (UnitDefinition): The unit of the data. - time_unit (UnitDefinition): The unit of the time. + data_unit (str): The unit of the data. + time_unit (str): The unit of the time. data_type (DataTypes): The type of the data. Default is DataTypes.CONCENTRATION. sep (str): The separator of the CSV file. Default is ';'. @@ -200,8 +199,8 @@ def from_dataframe( Args: df (pd.DataFrame): The DataFrame to parse. meas_id (str | None): The ID of the measurement. Default is None. - data_unit (UnitDefinition): The unit of the data. - time_unit (UnitDefinition): The unit of the time. + data_unit (str): The unit of the data. + time_unit (str): The unit of the time. data_type (DataTypes): The type of the data. Default is DataTypes.CONCENTRATION. Returns: @@ -261,8 +260,8 @@ def _create_single_measurement( species_id=str(species_id), data=species_data, time=time, - data_unit=data_unit, - time_unit=time_unit, + data_unit=data_unit, # type: ignore + time_unit=time_unit, # type: ignore initial=float(species_data[0]), data_type=data_type, ) From b10a48814d68ce23f14474237cea4d67593ea1e3 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Wed, 7 May 2025 01:21:17 +0200 Subject: [PATCH 091/172] use handler instead of attaching to class --- pyenzyme/__init__.py | 98 +++---------- pyenzyme/versions/io.py | 237 +++++++++++++++++++++++++++++++ tests/integration/test_sbml.py | 17 ++- tests/unit/test_equations.py | 1 - tests/unit/test_sbml_annot_v1.py | 1 - tests/unit/test_tabular.py | 119 +++++++++++----- 6 files changed, 351 insertions(+), 122 deletions(-) create mode 100644 pyenzyme/versions/io.py diff --git a/pyenzyme/__init__.py b/pyenzyme/__init__.py index 4576eb37..e4db8855 100644 --- a/pyenzyme/__init__.py +++ b/pyenzyme/__init__.py @@ -1,85 +1,33 @@ from __future__ import annotations -import json -from pathlib import Path +from mdmodels.units.unit_definition import UnitDefinition -from rich import print +from .versions.v2 import * # noqa: F403 +from .versions.io import EnzymeMLHandler +from .suite import EnzymeMLSuite -from mdmodels.units.unit_definition import UnitDefinition # noqa: F401 +# Input functions +from_csv = EnzymeMLHandler.from_csv +from_dataframe = EnzymeMLHandler.from_dataframe +from_excel = EnzymeMLHandler.from_excel +from_sbml = EnzymeMLHandler.from_sbml +read_enzymeml = EnzymeMLHandler.read_enzymeml -from .versions.v2 import * # noqa: F403 -from .sbml import to_sbml, read_sbml # noqa: F401 -from .suite import EnzymeMLSuite # noqa: F401 -from .tabular import to_pandas, read_csv, read_excel, from_dataframe # noqa: F401 +# Output functions +to_pandas = EnzymeMLHandler.to_pandas +to_sbml = EnzymeMLHandler.to_sbml +write_enzymeml = EnzymeMLHandler.write_enzymeml __all__ = [ + "UnitDefinition", + "EnzymeMLSuite", + "EnzymeMLHandler", + "from_csv", + "from_dataframe", + "from_excel", + "from_sbml", "read_enzymeml", - "write_enzymeml", - "to_sbml", "to_pandas", - "read_csv", - "read_excel", - "from_dataframe", + "to_sbml", + "write_enzymeml", ] - - -def read_enzymeml(cls, path: str) -> EnzymeMLDocument: # noqa: F405 - with open(path) as f: - return cls.model_validate_json(f.read()) # noqa: F405 - - -def write_enzymeml( - self: EnzymeMLDocument, # noqa: F405 - path: Path | str | None = None, # noqa: F405 -): # noqa: F405 - data = json.loads(self.model_dump_json(exclude_none=True, by_alias=True)) - data = json.dumps(sort_by_ld(data), indent=2) - - if path is None: - return data - elif isinstance(path, str): - path = Path(path) - - if path.is_dir(): - path = path / "experiment.json" - - with open(path, "w") as f: - f.write(data) - - print(f"\n EnzymeML document written to [green][bold]{path}[/bold][/green]\n") - - -# Add these methods to the EnzymeMLDocument class -EnzymeMLDocument.read = classmethod(read_enzymeml) # noqa: F405 -EnzymeMLDocument.write = write_enzymeml # noqa: F405 -EnzymeMLDocument.from_sbml = classmethod(read_sbml) # noqa: F405 -EnzymeMLDocument.to_sbml = to_sbml # noqa: F405 -EnzymeMLDocument.to_pandas = to_pandas # noqa: F405 - - -def sort_by_ld(d: dict) -> dict: - keys = sorted(d.keys(), key=_pattern) - data = {} - - for key in keys: - value = d[key] - - if isinstance(value, dict): - data[key] = sort_by_ld(value) - elif isinstance(value, list) and all(isinstance(v, dict) for v in value): - data[key] = [sort_by_ld(v) for v in value] - else: - data[key] = value - - return data - - -def _pattern(s: str): - if s.startswith("@context"): - return 0 - elif s.startswith("@id"): - return 1 - elif s.startswith("@type"): - return 2 - else: - return 3 diff --git a/pyenzyme/versions/io.py b/pyenzyme/versions/io.py new file mode 100644 index 00000000..f9eb11ba --- /dev/null +++ b/pyenzyme/versions/io.py @@ -0,0 +1,237 @@ +import json +from pathlib import Path +from typing import Optional + +import pandas as pd + +from pydantic import ValidationError +from pyenzyme.sbml.serializer import to_sbml +from pyenzyme.tabular import from_dataframe, read_csv, read_excel, to_pandas +from pyenzyme.versions import v2 +from pyenzyme.sbml.parser import read_sbml + +AVAILABLE_VERSIONS = ["v1", "v2"] + + +class EnzymeMLHandler: + """Handler for EnzymeML document operations. + + This class provides methods for reading, writing, and converting EnzymeML documents + between different formats including JSON, SBML, CSV, Excel, and pandas DataFrames. + """ + + @classmethod + def read_enzymeml(cls, path: str) -> v2.EnzymeMLDocument: # noqa: F405 + """Read an EnzymeML document from a file. + + Attempts to read the document using different version parsers until successful. + + Args: + path: Path to the EnzymeML document file + + Returns: + An EnzymeMLDocument object + + Raises: + ValueError: If the document cannot be parsed with any available version + """ + for version in AVAILABLE_VERSIONS: + if version == "v1": + try: + return read_sbml(v2.EnzymeMLDocument, path) + except Exception: + continue + elif version == "v2": + try: + with open(path, "r") as f: + data = json.load(f) + + return v2.EnzymeMLDocument.model_validate(data) + except ValidationError: + continue + + raise ValueError(f"Invalid EnzymeML version: {path}") + + @classmethod + def from_dataframe( + cls, + df: pd.DataFrame, + data_unit: str, + time_unit: str, + ) -> list[v2.Measurement]: # noqa: F405 + """Create measurements from a pandas DataFrame. + + Args: + df: DataFrame containing measurement data + data_unit: Unit for the measurement data + time_unit: Unit for the time data + + Returns: + List of Measurement objects + """ + return from_dataframe(df, data_unit, time_unit) + + @classmethod + def write_enzymeml( + cls, + enzmldoc: v2.EnzymeMLDocument, + path: Path | str | None = None, + ) -> Optional[str]: # noqa: F405 + """Write an EnzymeML document to a file or return as a string. + + Args: + enzmldoc: The EnzymeML document to write + path: Path to write the document to. If None, returns the document as a string + + Returns: + The document as a string if path is None, otherwise None + """ + data = json.loads(enzmldoc.model_dump_json(exclude_none=True, by_alias=True)) + data = json.dumps(sort_by_ld(data), indent=2) + + if path is None: + return data + elif isinstance(path, str): + path = Path(path) + + if path.is_dir(): + path = path / "experiment.json" + + with open(path, "w") as f: + f.write(data) + + print(f"\n EnzymeML document written to [green][bold]{path}[/bold][/green]\n") + + @classmethod + def to_sbml( + cls, + enzmldoc: v2.EnzymeMLDocument, + path: Path | str, + ) -> None: # noqa: F405 + """Convert an EnzymeML document to SBML format and write to a file. + + Args: + enzmldoc: The EnzymeML document to convert + path: Path to write the SBML document to + """ + to_sbml(enzmldoc, path) + + @classmethod + def from_sbml( + cls, + path: Path | str, + ) -> v2.EnzymeMLDocument: # noqa: F405 + """Read an EnzymeML document from an SBML file. + + Args: + path: Path to the SBML file + + Returns: + An EnzymeMLDocument object + """ + return read_sbml(v2.EnzymeMLDocument, path) + + @classmethod + def to_pandas( + cls, + enzmldoc: v2.EnzymeMLDocument, + ) -> pd.DataFrame | None: # noqa: F405 + """Convert an EnzymeML document to a pandas DataFrame. + + Args: + enzmldoc: The EnzymeML document to convert + + Returns: + DataFrame containing the measurement data, or None if no measurements exist + """ + return to_pandas(enzmldoc) + + @classmethod + def from_csv( + cls, + path: Path | str, + data_unit: str, + time_unit: str, + data_type: v2.DataTypes = v2.DataTypes.CONCENTRATION, + sep: str = "\t", + ) -> list[v2.Measurement]: # noqa: F405 + """Create measurements from a CSV file. + + Args: + path: Path to the CSV file + data_unit: Unit for the measurement data + time_unit: Unit for the time data + data_type: Type of data (default: CONCENTRATION) + sep: Separator used in the CSV file (default: tab) + + Returns: + List of Measurement objects + """ + return read_csv(path, data_unit, time_unit, data_type, sep) + + @classmethod + def from_excel( + cls, + path: Path | str, + data_unit: str, + time_unit: str, + data_type: v2.DataTypes = v2.DataTypes.CONCENTRATION, + ) -> list[v2.Measurement]: # noqa: F405 + """Create measurements from an Excel file. + + Args: + path: Path to the Excel file + data_unit: Unit for the measurement data + time_unit: Unit for the time data + data_type: Type of data (default: CONCENTRATION) + + Returns: + List of Measurement objects + """ + return read_excel(path, data_unit, time_unit, data_type) + + +def sort_by_ld(d: dict) -> dict: + """Sort a dictionary according to JSON-LD conventions. + + Sorts keys so that @context, @id, and @type appear first, followed by other keys. + + Args: + d: Dictionary to sort + + Returns: + Sorted dictionary + """ + keys = sorted(d.keys(), key=_pattern) + data = {} + + for key in keys: + value = d[key] + + if isinstance(value, dict): + data[key] = sort_by_ld(value) + elif isinstance(value, list) and all(isinstance(v, dict) for v in value): + data[key] = [sort_by_ld(v) for v in value] + else: + data[key] = value + + return data + + +def _pattern(s: str): + """Helper function for sorting JSON-LD keys. + + Args: + s: Key string + + Returns: + Priority value for sorting (lower values come first) + """ + if s.startswith("@context"): + return 0 + elif s.startswith("@id"): + return 1 + elif s.startswith("@type"): + return 2 + else: + return 3 diff --git a/tests/integration/test_sbml.py b/tests/integration/test_sbml.py index 9d1a45b9..cd79aaf3 100644 --- a/tests/integration/test_sbml.py +++ b/tests/integration/test_sbml.py @@ -3,7 +3,6 @@ import pyenzyme as pe import pyenzyme.equations as peq -from pyenzyme import EnzymeMLDocument from pyenzyme.tools import to_dict_wo_json_ld, get_all_parameters @@ -13,12 +12,12 @@ def test_parse_sbml_odes(self): path = Path("tests/fixtures/sbml/odes_example.omex") # Act - enzmldoc = EnzymeMLDocument.from_sbml(path) + enzmldoc = pe.from_sbml(path) # Assert parsed_doc = to_dict_wo_json_ld(enzmldoc) expected_doc = to_dict_wo_json_ld( - EnzymeMLDocument.read("tests/fixtures/sbml/ode_example_enzml.json") + pe.read_enzymeml("tests/fixtures/sbml/ode_example_enzml.json") ) # Remove spaces of equation @@ -35,12 +34,12 @@ def test_v1_import(self): path = Path("tests/fixtures/sbml/v1_example.omex") # Act - enzmldoc = EnzymeMLDocument.from_sbml(path) + enzmldoc = pe.from_sbml(path) # Assert parsed_doc = to_dict_wo_json_ld(enzmldoc) expected_doc = to_dict_wo_json_ld( - EnzymeMLDocument.read("tests/fixtures/sbml/v1_example_enzml.json") + pe.read_enzymeml("tests/fixtures/sbml/v1_example_enzml.json") ) assert parsed_doc == expected_doc, ( @@ -106,7 +105,7 @@ def test_end_to_end(self): enzmldoc=doc, ) - doc.measurements += pe.read_excel( + doc.measurements += pe.from_excel( "tests/fixtures/tabular/data.xlsx", data_unit="mmol / l", time_unit="s", @@ -119,15 +118,15 @@ def test_end_to_end(self): for meas in doc.measurements: meas.temperature = 298.15 - meas.temperature_unit = "K" + meas.temperature_unit = "K" # type: ignore meas.ph = 7.0 with tempfile.TemporaryDirectory() as dirname: path = Path(dirname) / "test.omex" - doc.to_sbml(path) + pe.to_sbml(doc, path) # Act - enzmldoc = EnzymeMLDocument.from_sbml(path) + enzmldoc = pe.from_sbml(path) # Assert parsed_doc = to_dict_wo_json_ld(enzmldoc) diff --git a/tests/unit/test_equations.py b/tests/unit/test_equations.py index 835e3d22..08105f53 100644 --- a/tests/unit/test_equations.py +++ b/tests/unit/test_equations.py @@ -3,7 +3,6 @@ from pyenzyme.equations._chem import build_reaction, build_reactions from pyenzyme.equations._math import build_equation, build_equations from pyenzyme import EquationType, EnzymeMLDocument -from pyenzyme.units import s class TestMathEquations: diff --git a/tests/unit/test_sbml_annot_v1.py b/tests/unit/test_sbml_annot_v1.py index 092f02cf..ff6ee602 100644 --- a/tests/unit/test_sbml_annot_v1.py +++ b/tests/unit/test_sbml_annot_v1.py @@ -7,7 +7,6 @@ ComplexAnnot, ProteinAnnot, ) -from pyenzyme.units import M class TestSBMLAnnotV1: diff --git a/tests/unit/test_tabular.py b/tests/unit/test_tabular.py index 5ea8a5c7..13d786c6 100644 --- a/tests/unit/test_tabular.py +++ b/tests/unit/test_tabular.py @@ -3,7 +3,6 @@ import pyenzyme as pe from pyenzyme.tabular import _measurement_to_pandas, to_pandas -from pyenzyme.units import mM, s class TestTabularExport: @@ -62,7 +61,7 @@ class TestTabularImport: def test_csv_import(self): """Test that a CSV file can be imported to a pandas DataFrame""" # Act - meas = pe.read_csv( + meas = pe.from_csv( "tests/fixtures/tabular/data.tsv", data_unit="mmol / l", time_unit="s", @@ -84,21 +83,33 @@ def test_csv_import(self): assert m.species_data[0].data_unit.name == "mmol / l", ( f"Expected mM. Got {m.species_data[0].data_unit}" ) - assert m.species_data[0].time_unit.name == "s", ( - f"Expected s. Got {m.species_data[0].time_unit.name}" - ) + + if m.species_data[0].time_unit is not None: + assert m.species_data[0].time_unit.name == "s", ( + f"Expected s. Got {m.species_data[0].time_unit.name}" + ) + else: + assert m.species_data[0].time_unit is None, ( + f"Expected None. Got {m.species_data[0].time_unit}" + ) assert m.species_data[1].data_unit.name == "mmol / l", ( f"Expected mM. Got {m.species_data[1].data_unit.name}" ) - assert m.species_data[1].time_unit.name == "s", ( - f"Expected s. Got {m.species_data[1].time_unit.name}" - ) + + if m.species_data[1].time_unit is not None: + assert m.species_data[1].time_unit.name == "s", ( + f"Expected s. Got {m.species_data[1].time_unit.name}" + ) + else: + assert m.species_data[1].time_unit is None, ( + f"Expected None. Got {m.species_data[1].time_unit}" + ) def test_excel_import(self): """Test that a Excel file can be imported to a pandas DataFrame""" # Act - meas = pe.read_excel( + meas = pe.from_excel( "tests/fixtures/tabular/data.xlsx", data_unit="mmol / l", time_unit="s", @@ -111,51 +122,87 @@ def test_excel_import(self): assert len(m.species_data) == 2, ( f"Expected 2 species. Got {len(m.species_data)}" ) - assert len(m.species_data[0].time) == 11, ( - f"Expected 10 time points. Got {len(m.species_data[0].time)}" - ) - assert len(m.species_data[1].time) == 11, ( - f"Expected 10 time points. Got {len(m.species_data[1].time)}" - ) - assert m.species_data[0].data_unit.name == "mmol / l", ( - f"Expected mM. Got {m.species_data[0].data_unit.name}" - ) - assert m.species_data[0].time_unit.name == "s", ( - f"Expected s. Got {m.species_data[0].time_unit.name}" - ) - assert m.species_data[1].data_unit.name == "mmol / l", ( - f"Expected mM. Got {m.species_data[1].data_unit.name}" - ) - assert m.species_data[1].time_unit.name == "s", ( - f"Expected s. Got {m.species_data[1].time_unit.name}" - ) + + if m.species_data[0].time_unit is not None: + assert len(m.species_data[0].time) == 11, ( + f"Expected 10 time points. Got {len(m.species_data[0].time)}" + ) + else: + assert len(m.species_data[0].time) == 0, ( + f"Expected 0 time points. Got {len(m.species_data[0].time)}" + ) + + if m.species_data[1].time_unit is not None: + assert len(m.species_data[1].time) == 11, ( + f"Expected 10 time points. Got {len(m.species_data[1].time)}" + ) + else: + assert len(m.species_data[1].time) == 0, ( + f"Expected 0 time points. Got {len(m.species_data[1].time)}" + ) + + if m.species_data[0].data_unit is not None: + assert m.species_data[0].data_unit.name == "mmol / l", ( + f"Expected mM. Got {m.species_data[0].data_unit.name}" + ) + else: + assert m.species_data[0].data_unit is None, ( + f"Expected None. Got {m.species_data[0].data_unit}" + ) + + if m.species_data[0].time_unit is not None: + assert m.species_data[0].time_unit.name == "s", ( + f"Expected s. Got {m.species_data[0].time_unit.name}" + ) + else: + assert m.species_data[0].time_unit is None, ( + f"Expected None. Got {m.species_data[0].time_unit}" + ) + + if m.species_data[1].data_unit is not None: + assert m.species_data[1].data_unit.name == "mmol / l", ( + f"Expected mM. Got {m.species_data[1].data_unit.name}" + ) + else: + assert m.species_data[1].data_unit is None, ( + f"Expected None. Got {m.species_data[1].data_unit}" + ) + + if m.species_data[1].time_unit is not None: + assert m.species_data[1].time_unit.name == "s", ( + f"Expected s. Got {m.species_data[1].time_unit.name}" + ) + else: + assert m.species_data[1].time_unit is None, ( + f"Expected None. Got {m.species_data[1].time_unit}" + ) def test_invalid_types(self): """Test that an invalid CSV raises a ValueError""" # Act with pytest.raises(AssertionError): - pe.read_csv( + pe.from_csv( "tests/fixtures/tabular/data_invalid_chars.tsv", - data_unit=mM, - time_unit=s, + data_unit="mmol / l", + time_unit="s", ) def test_invalid_csv(self): """Test that an invalid CSV raises a ValueError""" # Act with pytest.raises(AssertionError): - pe.read_csv( + pe.from_csv( "tests/fixtures/tabular/data_invalid.tsv", - data_unit=mM, - time_unit=s, + data_unit="mmol / l", + time_unit="s", ) def test_invalid_excel(self): """Test that an invalid Excel raises a ValueError""" # Act with pytest.raises(AssertionError): - pe.read_excel( + pe.from_excel( "tests/fixtures/tabular/data_invalid.xlsx", - data_unit=mM, - time_unit=s, + data_unit="mmol / l", + time_unit="s", ) From 1c650ec2142c9d6c8d4231130adf84a54b7e03c7 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Wed, 7 May 2025 01:21:34 +0200 Subject: [PATCH 092/172] add db fetcher --- pyenzyme/fetcher/brenda.py | 0 pyenzyme/fetcher/chebi.py | 214 ++++++++++++++++++++++++++++++ pyenzyme/fetcher/rhea.py | 206 ++++++++++++++++++++++++++++ pyenzyme/fetcher/uniprot.py | 192 +++++++++++++++++++++++++++ tests/integration/test_fetcher.py | 67 ++++++++++ 5 files changed, 679 insertions(+) create mode 100644 pyenzyme/fetcher/brenda.py create mode 100644 pyenzyme/fetcher/chebi.py create mode 100644 pyenzyme/fetcher/rhea.py create mode 100644 pyenzyme/fetcher/uniprot.py create mode 100644 tests/integration/test_fetcher.py diff --git a/pyenzyme/fetcher/brenda.py b/pyenzyme/fetcher/brenda.py new file mode 100644 index 00000000..e69de29b diff --git a/pyenzyme/fetcher/chebi.py b/pyenzyme/fetcher/chebi.py new file mode 100644 index 00000000..33b8ac07 --- /dev/null +++ b/pyenzyme/fetcher/chebi.py @@ -0,0 +1,214 @@ +""" +ChEBI fetcher for retrieving chemical entries by ID. + +This module provides functionality to fetch chemical entity data from the +ChEBI database by ID and map it to the PyEnzyme data model (v2). +""" + +import requests +import re +from typing import List, Optional, Union +from pydantic_xml import element, attr, BaseXmlModel +from pyenzyme.versions import v2 + + +class PropertyModel( + BaseXmlModel, + tag="property", + nsmap={"": "https://www.ebi.ac.uk/webservices/chebi"}, +): + """ + Model for a ChEBI entity property. + """ + + name: str = attr(name="name") + value: str = element(tag="value") + + +class SynonymModel( + BaseXmlModel, + tag="synonym", + nsmap={"": "https://www.ebi.ac.uk/webservices/chebi"}, +): + """ + Model for a ChEBI synonym. + """ + + data: str = element(tag="data") + type: str = attr(name="type") + source: Optional[str] = attr(name="source", default=None) + + +class FormulaModel( + BaseXmlModel, + tag="formula", + nsmap={"": "https://www.ebi.ac.uk/webservices/chebi"}, +): + """ + Model for a ChEBI chemical formula. + """ + + formula: str = element(tag="data") + source: Optional[str] = attr(name="source", default=None) + + +class StructureModel( + BaseXmlModel, + tag="structure", + nsmap={"": "https://www.ebi.ac.uk/webservices/chebi"}, +): + """ + Model for a ChEBI structure representation. + """ + + type: str = attr(name="type") + structure: str = element(tag="structure") + dimension: Optional[str] = attr(name="dimension", default=None) + format: Optional[str] = attr(name="format", default=None) + + +class ChEBIEntity( + BaseXmlModel, + tag="return", + search_mode="unordered", + nsmap={"": "https://www.ebi.ac.uk/webservices/chebi"}, +): + """ + Model for a ChEBI entity response. + """ + + chebi_id: str = element(tag="chebiId") + chebi_ascii_name: str = element(tag="chebiAsciiName") + definition: Optional[str] = element(tag="definition", default=None) + status: str = element(tag="status") + mass: Optional[float] = element(tag="mass", default=None) + charge: Optional[int] = element(tag="charge", default=None) + structure: Optional[StructureModel] = element(tag="structure", default=None) + formula: Optional[FormulaModel] = element(tag="formula", default=None) + inchi: Optional[str] = element(tag="inchi", default=None) + inchikey: Optional[str] = element(tag="inchiKey", default=None) + smiles: Optional[str] = element(tag="smiles", default=None) + chebiId_version: Optional[str] = element(tag="chebiIdVersion", default=None) + + +class GetEntityResponse( + BaseXmlModel, + tag="getCompleteEntityResponse", + search_mode="unordered", + nsmap={"": "https://www.ebi.ac.uk/webservices/chebi"}, +): + """ + Model for the ChEBI API response inside SOAP envelope. + """ + + entity: ChEBIEntity = element(tag="return") + + +class ChEBIClient: + """Client for accessing the ChEBI API to fetch chemical entity data.""" + + BASE_URL = "https://www.ebi.ac.uk/webservices/chebi/2.0/test/getCompleteEntity" + + def __init__(self): + """Initialize the ChEBI client.""" + pass + + def get_entry_by_id(self, chebi_id: str) -> Union[ChEBIEntity, None]: + """ + Fetch a ChEBI entry by its ID. + + Args: + chebi_id: The ChEBI ID to fetch, can be with or without the 'CHEBI:' prefix + + Returns: + ChEBIEntity object with the parsed response data + + Raises: + ValueError: If the ChEBI ID is invalid or not found + ConnectionError: If the connection to the ChEBI server fails + """ + # Ensure the CHEBI ID has the correct format + if not chebi_id.startswith("CHEBI:"): + chebi_id = f"CHEBI:{chebi_id}" + + # Construct the URL + url = f"{self.BASE_URL}?chebiId={chebi_id}" + + try: + response = requests.get(url) + response.raise_for_status() + + if response.status_code == 200: + try: + # Extract the getCompleteEntityResponse element using regex + xml_text = response.text + match = re.search( + r"", + xml_text, + re.DOTALL, + ) + + if not match: + raise ValueError( + "Could not find expected content in ChEBI response" + ) + + # Parse only the relevant XML fragment + xml_text = match.group(0) + entity_response = GetEntityResponse.from_xml(xml_text) + return entity_response.entity + except Exception as e: + raise ValueError(f"Failed to parse ChEBI response: {str(e)}") + else: + raise ValueError(f"Failed to retrieve ChEBI entry for ID {chebi_id}") + + except requests.exceptions.RequestException as e: + raise ConnectionError(f"Connection to ChEBI server failed: {str(e)}") + + +def fetch_chebi_to_small_molecule(chebi_id: str) -> v2.SmallMolecule: + """ + Fetch a ChEBI entry by ID and convert it to a SmallMolecule object. + + Args: + chebi_id: The ChEBI ID to fetch + + Returns: + A SmallMolecule object with data from ChEBI + + Raises: + ValueError: If the ChEBI ID is invalid or not found + ConnectionError: If the connection to the ChEBI server fails + """ + client = ChEBIClient() + chebi_entity = client.get_entry_by_id(chebi_id) + + if not chebi_entity: + raise ValueError(f"No data found for ChEBI ID {chebi_id}") + + # Create a SmallMolecule instance + small_molecule = v2.SmallMolecule( + id=chebi_entity.chebi_id.replace(":", "_"), + name=chebi_entity.chebi_ascii_name, + canonical_smiles=chebi_entity.smiles, + inchi=chebi_entity.inchi, + inchikey=chebi_entity.inchikey, + constant=False, # Default to non-constant + ) + + # Add type term for ChEBI source + small_molecule.add_type_term( + term=f"OBO:{chebi_entity.chebi_id.replace(':', '_')}", + prefix="OBO", + iri="http://purl.obolibrary.org/obo/", + ) + + # Add LD ID + small_molecule.ld_id = f"OBO:{chebi_entity.chebi_id.replace(':', '_')}" + + # Add full link as reference + small_molecule.references.append( + f"https://www.ebi.ac.uk/chebi/searchId.do?chebiId={chebi_entity.chebi_id}" + ) + + return small_molecule diff --git a/pyenzyme/fetcher/rhea.py b/pyenzyme/fetcher/rhea.py new file mode 100644 index 00000000..6802cadb --- /dev/null +++ b/pyenzyme/fetcher/rhea.py @@ -0,0 +1,206 @@ +""" +Rhea database fetcher for retrieving reaction entries by ID. + +This module provides functionality to fetch reaction data from the +Rhea database by ID and map it to the PyEnzyme data model (v2). +""" + +from io import StringIO +import pandas as pd +from pydantic import BaseModel, ConfigDict +from typing import List, ClassVar, Tuple + +import requests + +from pyenzyme.fetcher.chebi import fetch_chebi_to_small_molecule +from pyenzyme.versions import v2 + + +class RheaResult(BaseModel): + """ + Result for Rhea database. + + Attributes: + id: The Rhea ID of the reaction + equation: The chemical equation of the reaction + balanced: Whether the reaction is balanced + transport: Whether the reaction is a transport reaction + """ + + id: str + equation: str + balanced: bool + transport: bool + + +class RheaQuery(BaseModel): + """ + Query for Rhea database. + + Attributes: + count: The number of results returned + results: List of RheaResult objects + """ + + count: int + results: List[RheaResult] + + +class RheaClient(BaseModel): + """ + Client for Rhea database. + + This class handles communication with the Rhea database API + and parses the responses into structured data. + + Attributes: + json_content: The parsed JSON response from Rhea + chebi_ids: List of ChEBI IDs associated with the reaction + BASE_URL: The base URL for the Rhea API + """ + + model_config = ConfigDict(arbitrary_types_allowed=True) + + json_content: RheaResult + chebi_ids: List[str] + + BASE_URL: ClassVar[str] = ( + "https://www.rhea-db.org/rhea/?query=RHEA:{0}&columns=rhea-id,equation,chebi-id&format={1}&limit=10" + ) + + @classmethod + def from_id(cls, rhea_id: str) -> "RheaClient": + """ + Create a RheaClient instance from a Rhea ID. + + Args: + rhea_id: The Rhea ID to fetch, can be with or without the 'RHEA:' prefix + + Returns: + A RheaClient instance with the fetched data + + Raises: + ValueError: If no results are found for the given Rhea ID + """ + if rhea_id.startswith("RHEA:"): + rhea_id = rhea_id.split(":")[-1] + + tsv_content = cls.fetch_tsv(rhea_id) + json_content = cls.fetch_json(rhea_id) + + if len(json_content.results) == 0: + raise ValueError(f"No results found for RHEA ID: {rhea_id}") + + # Get first row of tsv_content + entry = tsv_content.iloc[0] + + return cls( + json_content=json_content.results[0], + chebi_ids=entry["ChEBI identifier"].split(";"), + ) + + @staticmethod + def fetch_tsv(query: str) -> pd.DataFrame: + """ + Fetch TSV data from the Rhea API. + + Args: + query: The Rhea ID to query + + Returns: + A pandas DataFrame containing the TSV response + + Raises: + HTTPError: If the request to the Rhea API fails + """ + response = requests.get(RheaClient.BASE_URL.format(query, "tsv")) + response.raise_for_status() + + return pd.read_csv(StringIO(response.text), sep="\t") + + @staticmethod + def fetch_json(query: str) -> RheaQuery: + """ + Fetch JSON data from the Rhea API. + + Args: + query: The Rhea ID to query + + Returns: + A RheaQuery object containing the parsed JSON response + + Raises: + HTTPError: If the request to the Rhea API fails + """ + response = requests.get(RheaClient.BASE_URL.format(query, "json")) + response.raise_for_status() + + return RheaQuery.model_validate(response.json()) + + +def fetch_rhea_to_reaction(rhea_id: str) -> Tuple[v2.Reaction, List[v2.SmallMolecule]]: + """ + Fetch a Rhea entry by ID and convert it to a Reaction object. + + This function retrieves reaction data from the Rhea database and + converts it to the PyEnzyme data model, including fetching all + associated small molecules from ChEBI. + + Args: + rhea_id: The Rhea ID to fetch, can be with or without the 'RHEA:' prefix + + Returns: + A tuple containing: + - A Reaction object with data from Rhea + - A list of SmallMolecule objects for all reactants and products + + Raises: + ValueError: If the Rhea ID is invalid or not found + ConnectionError: If the connection to the Rhea server fails + """ + client = RheaClient.from_id(rhea_id) + rhea_id = client.json_content.id + + equation = client.json_content.equation + n_reactants = len(equation.split("=")[0].split("+")) + n_products = len(equation.split("=")[1].split("+")) + + small_molecules = [] + species = [] + + # Process each chemical species in the reaction + for i in range(n_reactants + n_products): + small_molecule = fetch_chebi_to_small_molecule(client.chebi_ids[i]) + small_molecules.append(small_molecule) + + if i < n_reactants: + reaction_element = v2.ReactionElement( + species_id=small_molecule.id, + stoichiometry=1, + ) + else: + reaction_element = v2.ReactionElement( + species_id=small_molecule.id, + stoichiometry=-1, + ) + + species.append(reaction_element) + + reaction = v2.Reaction( + id=f"RHEA:{client.json_content.id}", + name=f"RHEA:{rhea_id}", + species=species, + reversible=client.json_content.balanced, + ) + + # Add semantic annotations + reaction.add_type_term( + term=f"rhea:{rhea_id}", + prefix="rhea", + iri="http://www.rhea-db.org/rhea/", + ) + + # Set linked data identifier + reaction.ld_id = f"rhea:{rhea_id}" + + return reaction, small_molecules diff --git a/pyenzyme/fetcher/uniprot.py b/pyenzyme/fetcher/uniprot.py new file mode 100644 index 00000000..7055b72b --- /dev/null +++ b/pyenzyme/fetcher/uniprot.py @@ -0,0 +1,192 @@ +""" +UniProt fetcher for retrieving protein entries by ID. + +This module provides functionality to fetch protein data from the +UniProt database by ID and map it to the PyEnzyme data model (v2). +""" + +import requests +from typing import List, Optional, Union +from pydantic import BaseModel, Field +from pyenzyme.versions import v2 + + +class ECNumber(BaseModel): + """Model for EC number in UniProt API""" + + value: str + + +class ProteinName(BaseModel): + """Model for protein name in UniProt API""" + + value: str + + +class RecommendedName(BaseModel): + """Model for recommended protein name in UniProt API""" + + full_name: ProteinName = Field(alias="fullName") + ec_numbers: Optional[List[ECNumber]] = Field(alias="ecNumbers") + + +class ProteinDescription(BaseModel): + """Model for protein description in UniProt API""" + + recommended_name: Optional[RecommendedName] = Field(alias="recommendedName") + + +class Organism(BaseModel): + """Model for organism in UniProt API""" + + scientific_name: Optional[str] = Field(alias="scientificName") + taxon_id: Optional[int] = Field(alias="taxonId") + + +class Sequence(BaseModel): + """Model for protein sequence in UniProt API""" + + value: str + length: int + mol_weight: Optional[int] = Field(alias="molWeight") + + +class UniProtEntry(BaseModel): + """ + Model for a UniProt entry response. + """ + + id: str = Field(alias="uniProtkbId") + protein_description: ProteinDescription = Field(alias="proteinDescription") + organism: Optional[Organism] = None + sequence: Optional[Sequence] = None + accession: str = Field(alias="primaryAccession") + annotation_score: Optional[float] = Field(alias="annotationScore") + + +class UniProtClient: + """Client for accessing the UniProt API to fetch protein data.""" + + BASE_URL = "https://rest.uniprot.org/uniprotkb" + + def __init__(self): + """Initialize the UniProt client.""" + pass + + def get_entry_by_id(self, uniprot_id: str) -> Union[UniProtEntry, None]: + """ + Fetch a UniProt entry by its ID. + + Args: + uniprot_id: The UniProt ID to fetch + + Returns: + UniProtEntry object with the parsed response data + + Raises: + ValueError: If the UniProt ID is invalid or not found + ConnectionError: If the connection to the UniProt server fails + """ + # Construct the URL + url = f"{self.BASE_URL}/{uniprot_id}.json" + + try: + response = requests.get(url) + response.raise_for_status() + + if response.status_code == 200: + try: + data = response.json() + return UniProtEntry.model_validate(data) + except Exception as e: + raise ValueError(f"Failed to parse UniProt response: {str(e)}") + else: + raise ValueError( + f"Failed to retrieve UniProt entry for ID {uniprot_id}" + ) + + except requests.exceptions.RequestException as e: + raise ConnectionError(f"Connection to UniProt server failed: {str(e)}") + + +def fetch_uniprot_to_protein(uniprot_id: str) -> v2.Protein: + """ + Fetch a UniProt entry by ID and convert it to a Protein object. + + Args: + uniprot_id: The UniProt ID to fetch + + Returns: + A Protein object with data from UniProt + + Raises: + ValueError: If the UniProt ID is invalid or not found + ConnectionError: If the connection to the UniProt server fails + """ + client = UniProtClient() + uniprot_entry = client.get_entry_by_id(uniprot_id) + + if not uniprot_entry: + raise ValueError(f"No data found for UniProt ID {uniprot_id}") + + # Extract protein name + name = uniprot_id + if ( + uniprot_entry.protein_description + and uniprot_entry.protein_description.recommended_name + and uniprot_entry.protein_description.recommended_name.full_name + ): + name = uniprot_entry.protein_description.recommended_name.full_name.value + + # Extract sequence if available + sequence = None + if uniprot_entry.sequence: + sequence = uniprot_entry.sequence.value + + # Extract organism data + organism = None + organism_tax_id = None + if uniprot_entry.organism: + organism = uniprot_entry.organism.scientific_name + if uniprot_entry.organism.taxon_id is not None: + organism_tax_id = str(uniprot_entry.organism.taxon_id) + + # Extract EC number + ecnumber = None + if ( + uniprot_entry.protein_description + and uniprot_entry.protein_description.recommended_name + and uniprot_entry.protein_description.recommended_name.ec_numbers + and len(uniprot_entry.protein_description.recommended_name.ec_numbers) > 0 + ): + ecnumber = uniprot_entry.protein_description.recommended_name.ec_numbers[ + 0 + ].value + + # Create a Protein instance + protein = v2.Protein( + id=uniprot_entry.accession, + name=name, + sequence=sequence, + organism=organism, + organism_tax_id=organism_tax_id, + ecnumber=ecnumber, + constant=True, # Default to constant + ) + + # Add type term for UniProt source + protein.add_type_term( + f"uniprot:{uniprot_entry.accession}", + "uniprot", + "https://www.uniprot.org/uniprotkb/", + ) + + # Add LD ID + protein.ld_id = f"uniprot:{uniprot_entry.accession}" + + # Add full link as reference + protein.references.append( + f"https://www.uniprot.org/uniprotkb/{uniprot_entry.accession}" + ) + + return protein diff --git a/tests/integration/test_fetcher.py b/tests/integration/test_fetcher.py new file mode 100644 index 00000000..4f2ba962 --- /dev/null +++ b/tests/integration/test_fetcher.py @@ -0,0 +1,67 @@ +import pytest +from pyenzyme.fetcher.chebi import fetch_chebi_to_small_molecule +from pyenzyme.fetcher.rhea import fetch_rhea_to_reaction +from pyenzyme.fetcher.uniprot import fetch_uniprot_to_protein + + +class TestFetcher: + def test_fetch_chebi_to_small_molecule(self): + small_molecule = fetch_chebi_to_small_molecule("CHEBI:15377") + assert small_molecule is not None + assert small_molecule.id == "CHEBI_15377" + assert small_molecule.name == "water" + assert small_molecule.canonical_smiles == "[H]O[H]" + assert small_molecule.inchi == "InChI=1S/H2O/h1H2" + assert small_molecule.inchikey == "XLYOFNOQVPJJNP-UHFFFAOYSA-N" + assert small_molecule.ld_id == "OBO:CHEBI_15377" + assert len(small_molecule.references) == 1 + assert ( + small_molecule.references[0] + == "https://www.ebi.ac.uk/chebi/searchId.do?chebiId=CHEBI:15377" + ) + + def test_fetch_chebi_to_small_molecule_invalid_id(self): + with pytest.raises(ValueError): + fetch_chebi_to_small_molecule("INVALID_ID") + + def test_fetch_uniprot_to_protein(self): + protein = fetch_uniprot_to_protein("P07327") + assert protein is not None + + assert protein.id == "P07327" + assert protein.name == "Alcohol dehydrogenase 1A" + assert protein.constant is True + assert protein.ecnumber == "1.1.1.1" + assert protein.organism == "Homo sapiens" + assert protein.organism_tax_id == "9606" + + assert protein.ld_id == "uniprot:P07327" + assert "uniprot:P07327" in protein.ld_type + assert len(protein.references) == 1 + assert protein.references[0] == "https://www.uniprot.org/uniprotkb/P07327" + + def test_fetch_rhea_to_reaction(self): + reaction, small_molecules = fetch_rhea_to_reaction("RHEA:22864") + + reaction.species.sort(key=lambda x: x.species_id) + small_molecules.sort(key=lambda x: x.id) + + assert reaction is not None + assert len(small_molecules) == 2 + + assert small_molecules[0].id == "CHEBI_32551" + assert small_molecules[1].id == "CHEBI_32557" + + assert reaction.id == "RHEA:22864" + assert reaction.name == "RHEA:22864" + assert reaction.reversible is True + + assert len(reaction.species) == 2 + assert reaction.species[0].stoichiometry == 1 + assert reaction.species[0].species_id == small_molecules[0].id + assert reaction.species[1].stoichiometry == -1 + assert reaction.species[1].species_id == small_molecules[1].id + + def test_fetch_rhea_to_reaction_invalid_id(self): + with pytest.raises(ValueError): + fetch_rhea_to_reaction("INVALID_ID") From c4ec525ad58ee8bee1945d6f8eabe806a03140f2 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Wed, 7 May 2025 01:21:49 +0200 Subject: [PATCH 093/172] remove unused modules --- pyenzyme/model.py | 2244 ---------------------------------- pyenzyme/sbml/mappings.toml | 38 - pyenzyme/units/__init__.py | 1 - pyenzyme/units/ontomaps.toml | 40 - pyenzyme/units/predefined.py | 152 --- pyenzyme/units/units.py | 401 ------ 6 files changed, 2876 deletions(-) delete mode 100644 pyenzyme/model.py delete mode 100644 pyenzyme/sbml/mappings.toml delete mode 100644 pyenzyme/units/__init__.py delete mode 100644 pyenzyme/units/ontomaps.toml delete mode 100644 pyenzyme/units/predefined.py delete mode 100644 pyenzyme/units/units.py diff --git a/pyenzyme/model.py b/pyenzyme/model.py deleted file mode 100644 index f196a809..00000000 --- a/pyenzyme/model.py +++ /dev/null @@ -1,2244 +0,0 @@ -## This is a generated file. Do not modify it manually! - -from __future__ import annotations -from pydantic import BaseModel, Field, ConfigDict -from typing import Optional, Generic, TypeVar -from enum import Enum -from uuid import uuid4 - -# Filter Wrapper definition used to filter a list of objects -# based on their attributes -Cls = TypeVar("Cls") - -class FilterWrapper(Generic[Cls]): - """Wrapper class to filter a list of objects based on their attributes""" - - def __init__(self, collection: list[Cls], **kwargs): - self.collection = collection - self.kwargs = kwargs - - def filter(self) -> list[Cls]: - for key, value in self.kwargs.items(): - self.collection = [ - item for item in self.collection if self._fetch_attr(key, item) == value - ] - return self.collection - - def _fetch_attr(self, name: str, item: Cls): - try: - return getattr(item, name) - except AttributeError: - raise AttributeError(f"{item} does not have attribute {name}") - - -# JSON-LD Helper Functions -def add_namespace(obj, prefix: str | None, iri: str | None): - """Adds a namespace to the JSON-LD context - - Args: - prefix (str): The prefix to add - iri (str): The IRI to add - """ - if prefix is None and iri is None: - return - elif prefix and iri is None: - raise ValueError("If prefix is provided, iri must also be provided") - elif iri and prefix is None: - raise ValueError("If iri is provided, prefix must also be provided") - - obj.ld_context[prefix] = iri # type: ignore - -def validate_prefix(term: str | dict, prefix: str): - """Validates that a term is prefixed with a given prefix - - Args: - term (str): The term to validate - prefix (str): The prefix to validate against - - Returns: - bool: True if the term is prefixed with the prefix, False otherwise - """ - - if isinstance(term, dict) and not term["@id"].startswith(prefix + ":"): - raise ValueError(f"Term {term} is not prefixed with {prefix}") - elif isinstance(term, str) and not term.startswith(prefix + ":"): - raise ValueError(f"Term {term} is not prefixed with {prefix}") - -# Model Definitions - -class EnzymeMLDocument(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore - - name: str - references: list[str] = Field(default_factory=list) - created: Optional[str] = Field(default=None) - modified: Optional[str] = Field(default=None) - creators: list[Creator] = Field(default_factory=list) - vessels: list[Vessel] = Field(default_factory=list) - proteins: list[Protein] = Field(default_factory=list) - complexes: list[Complex] = Field(default_factory=list) - small_molecules: list[SmallMolecule] = Field(default_factory=list) - reactions: list[Reaction] = Field(default_factory=list) - measurements: list[Measurement] = Field(default_factory=list) - equations: list[Equation] = Field(default_factory=list) - parameters: list[Parameter] = Field(default_factory=list) - - # JSON-LD fields - ld_id: str = Field( - serialization_alias="@id", - default_factory=lambda: "enzml:EnzymeMLDocument/" + str(uuid4()) - ) - ld_type: list[str] = Field( - serialization_alias="@type", - default_factory = lambda: [ - "enzml:EnzymeMLDocument", - ], - ) - ld_context: dict[str, str | dict] = Field( - serialization_alias="@context", - default_factory = lambda: { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/", - "name": "schema:title", - "references": { - "@id": "schema:citation", - "@type": "@id", - }, - "created": "schema:dateCreated", - "modified": "schema:dateModified", - "creators": "schema:creator", - } - ) - - def filter_creators(self, **kwargs) -> list[Creator]: - """Filters the creators attribute based on the given kwargs - - Args: - **kwargs: The attributes to filter by. - - Returns: - list[Creator]: The filtered list of Creator objects - """ - - return FilterWrapper[Creator](self.creators, **kwargs).filter() - - def filter_vessels(self, **kwargs) -> list[Vessel]: - """Filters the vessels attribute based on the given kwargs - - Args: - **kwargs: The attributes to filter by. - - Returns: - list[Vessel]: The filtered list of Vessel objects - """ - - return FilterWrapper[Vessel](self.vessels, **kwargs).filter() - - def filter_proteins(self, **kwargs) -> list[Protein]: - """Filters the proteins attribute based on the given kwargs - - Args: - **kwargs: The attributes to filter by. - - Returns: - list[Protein]: The filtered list of Protein objects - """ - - return FilterWrapper[Protein](self.proteins, **kwargs).filter() - - def filter_complexes(self, **kwargs) -> list[Complex]: - """Filters the complexes attribute based on the given kwargs - - Args: - **kwargs: The attributes to filter by. - - Returns: - list[Complex]: The filtered list of Complex objects - """ - - return FilterWrapper[Complex](self.complexes, **kwargs).filter() - - def filter_small_molecules(self, **kwargs) -> list[SmallMolecule]: - """Filters the small_molecules attribute based on the given kwargs - - Args: - **kwargs: The attributes to filter by. - - Returns: - list[SmallMolecule]: The filtered list of SmallMolecule objects - """ - - return FilterWrapper[SmallMolecule](self.small_molecules, **kwargs).filter() - - def filter_reactions(self, **kwargs) -> list[Reaction]: - """Filters the reactions attribute based on the given kwargs - - Args: - **kwargs: The attributes to filter by. - - Returns: - list[Reaction]: The filtered list of Reaction objects - """ - - return FilterWrapper[Reaction](self.reactions, **kwargs).filter() - - def filter_measurements(self, **kwargs) -> list[Measurement]: - """Filters the measurements attribute based on the given kwargs - - Args: - **kwargs: The attributes to filter by. - - Returns: - list[Measurement]: The filtered list of Measurement objects - """ - - return FilterWrapper[Measurement](self.measurements, **kwargs).filter() - - def filter_equations(self, **kwargs) -> list[Equation]: - """Filters the equations attribute based on the given kwargs - - Args: - **kwargs: The attributes to filter by. - - Returns: - list[Equation]: The filtered list of Equation objects - """ - - return FilterWrapper[Equation](self.equations, **kwargs).filter() - - def filter_parameters(self, **kwargs) -> list[Parameter]: - """Filters the parameters attribute based on the given kwargs - - Args: - **kwargs: The attributes to filter by. - - Returns: - list[Parameter]: The filtered list of Parameter objects - """ - - return FilterWrapper[Parameter](self.parameters, **kwargs).filter() - - - def set_attr_term( - self, - attr: str, - term: str | dict, - prefix: str | None = None, - iri: str | None = None - ): - """Sets the term for a given attribute in the JSON-LD object - - Example: - # Using an IRI term - >> obj.set_attr_term("name", "http://schema.org/givenName") - - # Using a prefix and term - >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") - - # Usinng a dictionary term - >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) - - Args: - attr (str): The attribute to set the term for - term (str | dict): The term to set for the attribute - - Raises: - AssertionError: If the attribute is not found in the model - """ - - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" - - if prefix: - validate_prefix(term, prefix) - - add_namespace(self, prefix, iri) - self.ld_context[attr] = term - - def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None - ): - """Adds a term to the @type field of the JSON-LD object - - Example: - # Using a term - >> obj.add_type_term("https://schema.org/Person") - - # Using a prefixed term - >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") - - Args: - term (str): The term to add to the @type field - prefix (str, optional): The prefix to use for the term. Defaults to None. - iri (str, optional): The IRI to use for the term prefix. Defaults to None. - - Raises: - ValueError: If prefix is provided but iri is not - ValueError: If iri is provided but prefix is not - """ - - if prefix: - validate_prefix(term, prefix) - - add_namespace(self, prefix, iri) - self.ld_type.append(term) - - - def add_to_creators( - self, - given_name: str, - family_name: str, - mail: str, - **kwargs, - ): - params = { - "given_name": given_name, - "family_name": family_name, - "mail": mail - } - - if "id" in kwargs: - params["id"] = kwargs["id"] - - self.creators.append( - Creator(**params) - ) - - return self.creators[-1] - - - def add_to_vessels( - self, - id: str, - name: str, - volume: float, - unit: UnitDefinition, - constant: bool= True, - **kwargs, - ): - params = { - "id": id, - "name": name, - "volume": volume, - "unit": unit, - "constant": constant - } - - if "id" in kwargs: - params["id"] = kwargs["id"] - - self.vessels.append( - Vessel(**params) - ) - - return self.vessels[-1] - - - def add_to_proteins( - self, - id: str, - name: str, - constant: bool= False, - sequence: Optional[str]= None, - vessel_id: Optional[str]= None, - ecnumber: Optional[str]= None, - organism: Optional[str]= None, - organism_tax_id: Optional[str]= None, - references: list[str]= [], - **kwargs, - ): - params = { - "id": id, - "name": name, - "constant": constant, - "sequence": sequence, - "vessel_id": vessel_id, - "ecnumber": ecnumber, - "organism": organism, - "organism_tax_id": organism_tax_id, - "references": references - } - - if "id" in kwargs: - params["id"] = kwargs["id"] - - self.proteins.append( - Protein(**params) - ) - - return self.proteins[-1] - - - def add_to_complexes( - self, - id: str, - name: str, - constant: bool= False, - vessel_id: Optional[str]= None, - participants: list[str]= [], - **kwargs, - ): - params = { - "id": id, - "name": name, - "constant": constant, - "vessel_id": vessel_id, - "participants": participants - } - - if "id" in kwargs: - params["id"] = kwargs["id"] - - self.complexes.append( - Complex(**params) - ) - - return self.complexes[-1] - - - def add_to_small_molecules( - self, - id: str, - name: str, - constant: bool= False, - vessel_id: Optional[str]= None, - canonical_smiles: Optional[str]= None, - inchi: Optional[str]= None, - inchikey: Optional[str]= None, - references: list[str]= [], - **kwargs, - ): - params = { - "id": id, - "name": name, - "constant": constant, - "vessel_id": vessel_id, - "canonical_smiles": canonical_smiles, - "inchi": inchi, - "inchikey": inchikey, - "references": references - } - - if "id" in kwargs: - params["id"] = kwargs["id"] - - self.small_molecules.append( - SmallMolecule(**params) - ) - - return self.small_molecules[-1] - - - def add_to_reactions( - self, - id: str, - name: str, - reversible: bool= False, - kinetic_law: Optional[Equation]= None, - species: list[ReactionElement]= [], - modifiers: list[str]= [], - **kwargs, - ): - params = { - "id": id, - "name": name, - "reversible": reversible, - "kinetic_law": kinetic_law, - "species": species, - "modifiers": modifiers - } - - if "id" in kwargs: - params["id"] = kwargs["id"] - - self.reactions.append( - Reaction(**params) - ) - - return self.reactions[-1] - - - def add_to_measurements( - self, - id: str, - name: str, - species_data: list[MeasurementData]= [], - group_id: Optional[str]= None, - ph: Optional[float]= None, - temperature: Optional[float]= None, - temperature_unit: Optional[UnitDefinition]= None, - **kwargs, - ): - params = { - "id": id, - "name": name, - "species_data": species_data, - "group_id": group_id, - "ph": ph, - "temperature": temperature, - "temperature_unit": temperature_unit - } - - if "id" in kwargs: - params["id"] = kwargs["id"] - - self.measurements.append( - Measurement(**params) - ) - - return self.measurements[-1] - - - def add_to_equations( - self, - equation: str, - equation_type: EquationType, - species_id: Optional[str]= None, - variables: list[Variable]= [], - **kwargs, - ): - params = { - "equation": equation, - "equation_type": equation_type, - "species_id": species_id, - "variables": variables - } - - if "id" in kwargs: - params["id"] = kwargs["id"] - - self.equations.append( - Equation(**params) - ) - - return self.equations[-1] - - - def add_to_parameters( - self, - id: str, - name: str, - symbol: str, - value: Optional[float]= None, - unit: Optional[UnitDefinition]= None, - initial_value: Optional[float]= None, - upper: Optional[float]= None, - lower: Optional[float]= None, - stderr: Optional[float]= None, - constant: Optional[bool]= True, - **kwargs, - ): - params = { - "id": id, - "name": name, - "symbol": symbol, - "value": value, - "unit": unit, - "initial_value": initial_value, - "upper": upper, - "lower": lower, - "stderr": stderr, - "constant": constant - } - - if "id" in kwargs: - params["id"] = kwargs["id"] - - self.parameters.append( - Parameter(**params) - ) - - return self.parameters[-1] - -class Creator(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore - - given_name: str - family_name: str - mail: str - - # JSON-LD fields - ld_id: str = Field( - serialization_alias="@id", - default_factory=lambda: "enzml:Creator/" + str(uuid4()) - ) - ld_type: list[str] = Field( - serialization_alias="@type", - default_factory = lambda: [ - "enzml:Creator","schema:person" - ], - ) - ld_context: dict[str, str | dict] = Field( - serialization_alias="@context", - default_factory = lambda: { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/", - "given_name": "schema:givenName", - "family_name": "schema:familyName", - "mail": "schema:email", - } - ) - - - def set_attr_term( - self, - attr: str, - term: str | dict, - prefix: str | None = None, - iri: str | None = None - ): - """Sets the term for a given attribute in the JSON-LD object - - Example: - # Using an IRI term - >> obj.set_attr_term("name", "http://schema.org/givenName") - - # Using a prefix and term - >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") - - # Usinng a dictionary term - >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) - - Args: - attr (str): The attribute to set the term for - term (str | dict): The term to set for the attribute - - Raises: - AssertionError: If the attribute is not found in the model - """ - - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" - - if prefix: - validate_prefix(term, prefix) - - add_namespace(self, prefix, iri) - self.ld_context[attr] = term - - def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None - ): - """Adds a term to the @type field of the JSON-LD object - - Example: - # Using a term - >> obj.add_type_term("https://schema.org/Person") - - # Using a prefixed term - >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") - - Args: - term (str): The term to add to the @type field - prefix (str, optional): The prefix to use for the term. Defaults to None. - iri (str, optional): The IRI to use for the term prefix. Defaults to None. - - Raises: - ValueError: If prefix is provided but iri is not - ValueError: If iri is provided but prefix is not - """ - - if prefix: - validate_prefix(term, prefix) - - add_namespace(self, prefix, iri) - self.ld_type.append(term) - - -class Vessel(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore - - id: str - name: str - volume: float - unit: UnitDefinition - constant: bool = True - - # JSON-LD fields - ld_id: str = Field( - serialization_alias="@id", - default_factory=lambda: "enzml:Vessel/" + str(uuid4()) - ) - ld_type: list[str] = Field( - serialization_alias="@type", - default_factory = lambda: [ - "enzml:Vessel","OBO:OBI_0400081" - ], - ) - ld_context: dict[str, str | dict] = Field( - serialization_alias="@context", - default_factory = lambda: { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/", - "id": { - "@id": "schema:identifier", - "@type": "@id", - }, - "name": "schema:name", - "volume": "OBO:OBI_0002139", - } - ) - - - def set_attr_term( - self, - attr: str, - term: str | dict, - prefix: str | None = None, - iri: str | None = None - ): - """Sets the term for a given attribute in the JSON-LD object - - Example: - # Using an IRI term - >> obj.set_attr_term("name", "http://schema.org/givenName") - - # Using a prefix and term - >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") - - # Usinng a dictionary term - >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) - - Args: - attr (str): The attribute to set the term for - term (str | dict): The term to set for the attribute - - Raises: - AssertionError: If the attribute is not found in the model - """ - - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" - - if prefix: - validate_prefix(term, prefix) - - add_namespace(self, prefix, iri) - self.ld_context[attr] = term - - def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None - ): - """Adds a term to the @type field of the JSON-LD object - - Example: - # Using a term - >> obj.add_type_term("https://schema.org/Person") - - # Using a prefixed term - >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") - - Args: - term (str): The term to add to the @type field - prefix (str, optional): The prefix to use for the term. Defaults to None. - iri (str, optional): The IRI to use for the term prefix. Defaults to None. - - Raises: - ValueError: If prefix is provided but iri is not - ValueError: If iri is provided but prefix is not - """ - - if prefix: - validate_prefix(term, prefix) - - add_namespace(self, prefix, iri) - self.ld_type.append(term) - - -class Protein(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore - - id: str - name: str - constant: bool = False - sequence: Optional[str] = Field(default=None) - vessel_id: Optional[str] = Field(default=None) - ecnumber: Optional[str] = Field(default=None) - organism: Optional[str] = Field(default=None) - organism_tax_id: Optional[str] = Field(default=None) - references: list[str] = Field(default_factory=list) - - # JSON-LD fields - ld_id: str = Field( - serialization_alias="@id", - default_factory=lambda: "enzml:Protein/" + str(uuid4()) - ) - ld_type: list[str] = Field( - serialization_alias="@type", - default_factory = lambda: [ - "enzml:Protein","schema:Protein" - ], - ) - ld_context: dict[str, str | dict] = Field( - serialization_alias="@context", - default_factory = lambda: { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/", - "id": { - "@type": "@id", - }, - "name": "schema:name", - "sequence": "OBO:GSSO_007262", - "vessel_id": { - "@id": "schema:identifier", - "@type": "@id", - }, - "organism": "OBO:OBI_0100026", - "organism_tax_id": { - "@type": "@id", - }, - "references": { - "@id": "schema:citation", - "@type": "@id", - }, - } - ) - - - def set_attr_term( - self, - attr: str, - term: str | dict, - prefix: str | None = None, - iri: str | None = None - ): - """Sets the term for a given attribute in the JSON-LD object - - Example: - # Using an IRI term - >> obj.set_attr_term("name", "http://schema.org/givenName") - - # Using a prefix and term - >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") - - # Usinng a dictionary term - >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) - - Args: - attr (str): The attribute to set the term for - term (str | dict): The term to set for the attribute - - Raises: - AssertionError: If the attribute is not found in the model - """ - - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" - - if prefix: - validate_prefix(term, prefix) - - add_namespace(self, prefix, iri) - self.ld_context[attr] = term - - def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None - ): - """Adds a term to the @type field of the JSON-LD object - - Example: - # Using a term - >> obj.add_type_term("https://schema.org/Person") - - # Using a prefixed term - >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") - - Args: - term (str): The term to add to the @type field - prefix (str, optional): The prefix to use for the term. Defaults to None. - iri (str, optional): The IRI to use for the term prefix. Defaults to None. - - Raises: - ValueError: If prefix is provided but iri is not - ValueError: If iri is provided but prefix is not - """ - - if prefix: - validate_prefix(term, prefix) - - add_namespace(self, prefix, iri) - self.ld_type.append(term) - - -class Complex(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore - - id: str - name: str - constant: bool = False - vessel_id: Optional[str] = Field(default=None) - participants: list[str] = Field(default_factory=list) - - # JSON-LD fields - ld_id: str = Field( - serialization_alias="@id", - default_factory=lambda: "enzml:Complex/" + str(uuid4()) - ) - ld_type: list[str] = Field( - serialization_alias="@type", - default_factory = lambda: [ - "enzml:Complex", - ], - ) - ld_context: dict[str, str | dict] = Field( - serialization_alias="@context", - default_factory = lambda: { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/", - "id": { - "@id": "schema:identifier", - "@type": "@id", - }, - "name": "schema:name", - "vessel_id": { - "@id": "schema:identifier", - "@type": "@id", - }, - "participants": { - "@type": "@id", - }, - } - ) - - - def set_attr_term( - self, - attr: str, - term: str | dict, - prefix: str | None = None, - iri: str | None = None - ): - """Sets the term for a given attribute in the JSON-LD object - - Example: - # Using an IRI term - >> obj.set_attr_term("name", "http://schema.org/givenName") - - # Using a prefix and term - >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") - - # Usinng a dictionary term - >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) - - Args: - attr (str): The attribute to set the term for - term (str | dict): The term to set for the attribute - - Raises: - AssertionError: If the attribute is not found in the model - """ - - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" - - if prefix: - validate_prefix(term, prefix) - - add_namespace(self, prefix, iri) - self.ld_context[attr] = term - - def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None - ): - """Adds a term to the @type field of the JSON-LD object - - Example: - # Using a term - >> obj.add_type_term("https://schema.org/Person") - - # Using a prefixed term - >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") - - Args: - term (str): The term to add to the @type field - prefix (str, optional): The prefix to use for the term. Defaults to None. - iri (str, optional): The IRI to use for the term prefix. Defaults to None. - - Raises: - ValueError: If prefix is provided but iri is not - ValueError: If iri is provided but prefix is not - """ - - if prefix: - validate_prefix(term, prefix) - - add_namespace(self, prefix, iri) - self.ld_type.append(term) - - -class SmallMolecule(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore - - id: str - name: str - constant: bool = False - vessel_id: Optional[str] = Field(default=None) - canonical_smiles: Optional[str] = Field(default=None) - inchi: Optional[str] = Field(default=None) - inchikey: Optional[str] = Field(default=None) - references: list[str] = Field(default_factory=list) - - # JSON-LD fields - ld_id: str = Field( - serialization_alias="@id", - default_factory=lambda: "enzml:SmallMolecule/" + str(uuid4()) - ) - ld_type: list[str] = Field( - serialization_alias="@type", - default_factory = lambda: [ - "enzml:SmallMolecule", - ], - ) - ld_context: dict[str, str | dict] = Field( - serialization_alias="@context", - default_factory = lambda: { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/", - "id": { - "@id": "schema:identifier", - "@type": "@id", - }, - "name": "schema:name", - "vessel_id": { - "@id": "schema:identifier", - "@type": "@id", - }, - "references": { - "@id": "schema:citation", - "@type": "@id", - }, - } - ) - - - def set_attr_term( - self, - attr: str, - term: str | dict, - prefix: str | None = None, - iri: str | None = None - ): - """Sets the term for a given attribute in the JSON-LD object - - Example: - # Using an IRI term - >> obj.set_attr_term("name", "http://schema.org/givenName") - - # Using a prefix and term - >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") - - # Usinng a dictionary term - >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) - - Args: - attr (str): The attribute to set the term for - term (str | dict): The term to set for the attribute - - Raises: - AssertionError: If the attribute is not found in the model - """ - - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" - - if prefix: - validate_prefix(term, prefix) - - add_namespace(self, prefix, iri) - self.ld_context[attr] = term - - def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None - ): - """Adds a term to the @type field of the JSON-LD object - - Example: - # Using a term - >> obj.add_type_term("https://schema.org/Person") - - # Using a prefixed term - >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") - - Args: - term (str): The term to add to the @type field - prefix (str, optional): The prefix to use for the term. Defaults to None. - iri (str, optional): The IRI to use for the term prefix. Defaults to None. - - Raises: - ValueError: If prefix is provided but iri is not - ValueError: If iri is provided but prefix is not - """ - - if prefix: - validate_prefix(term, prefix) - - add_namespace(self, prefix, iri) - self.ld_type.append(term) - - -class Reaction(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore - - id: str - name: str - reversible: bool = False - kinetic_law: Optional[Equation] = Field(default=None) - species: list[ReactionElement] = Field(default_factory=list) - modifiers: list[str] = Field(default_factory=list) - - # JSON-LD fields - ld_id: str = Field( - serialization_alias="@id", - default_factory=lambda: "enzml:Reaction/" + str(uuid4()) - ) - ld_type: list[str] = Field( - serialization_alias="@type", - default_factory = lambda: [ - "enzml:Reaction", - ], - ) - ld_context: dict[str, str | dict] = Field( - serialization_alias="@context", - default_factory = lambda: { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/", - "id": { - "@id": "schema:identifier", - "@type": "@id", - }, - "modifiers": { - "@type": "@id", - }, - } - ) - - def filter_species(self, **kwargs) -> list[ReactionElement]: - """Filters the species attribute based on the given kwargs - - Args: - **kwargs: The attributes to filter by. - - Returns: - list[ReactionElement]: The filtered list of ReactionElement objects - """ - - return FilterWrapper[ReactionElement](self.species, **kwargs).filter() - - - def set_attr_term( - self, - attr: str, - term: str | dict, - prefix: str | None = None, - iri: str | None = None - ): - """Sets the term for a given attribute in the JSON-LD object - - Example: - # Using an IRI term - >> obj.set_attr_term("name", "http://schema.org/givenName") - - # Using a prefix and term - >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") - - # Usinng a dictionary term - >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) - - Args: - attr (str): The attribute to set the term for - term (str | dict): The term to set for the attribute - - Raises: - AssertionError: If the attribute is not found in the model - """ - - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" - - if prefix: - validate_prefix(term, prefix) - - add_namespace(self, prefix, iri) - self.ld_context[attr] = term - - def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None - ): - """Adds a term to the @type field of the JSON-LD object - - Example: - # Using a term - >> obj.add_type_term("https://schema.org/Person") - - # Using a prefixed term - >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") - - Args: - term (str): The term to add to the @type field - prefix (str, optional): The prefix to use for the term. Defaults to None. - iri (str, optional): The IRI to use for the term prefix. Defaults to None. - - Raises: - ValueError: If prefix is provided but iri is not - ValueError: If iri is provided but prefix is not - """ - - if prefix: - validate_prefix(term, prefix) - - add_namespace(self, prefix, iri) - self.ld_type.append(term) - - - def add_to_species( - self, - species_id: str, - stoichiometry: float, - **kwargs, - ): - params = { - "species_id": species_id, - "stoichiometry": stoichiometry - } - - if "id" in kwargs: - params["id"] = kwargs["id"] - - self.species.append( - ReactionElement(**params) - ) - - return self.species[-1] - - -class ReactionElement(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore - - species_id: str - stoichiometry: float - - # JSON-LD fields - ld_id: str = Field( - serialization_alias="@id", - default_factory=lambda: "enzml:ReactionElement/" + str(uuid4()) - ) - ld_type: list[str] = Field( - serialization_alias="@type", - default_factory = lambda: [ - "enzml:ReactionElement", - ], - ) - ld_context: dict[str, str | dict] = Field( - serialization_alias="@context", - default_factory = lambda: { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/", - "species_id": { - "@type": "@id", - }, - } - ) - - - def set_attr_term( - self, - attr: str, - term: str | dict, - prefix: str | None = None, - iri: str | None = None - ): - """Sets the term for a given attribute in the JSON-LD object - - Example: - # Using an IRI term - >> obj.set_attr_term("name", "http://schema.org/givenName") - - # Using a prefix and term - >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") - - # Usinng a dictionary term - >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) - - Args: - attr (str): The attribute to set the term for - term (str | dict): The term to set for the attribute - - Raises: - AssertionError: If the attribute is not found in the model - """ - - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" - - if prefix: - validate_prefix(term, prefix) - - add_namespace(self, prefix, iri) - self.ld_context[attr] = term - - def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None - ): - """Adds a term to the @type field of the JSON-LD object - - Example: - # Using a term - >> obj.add_type_term("https://schema.org/Person") - - # Using a prefixed term - >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") - - Args: - term (str): The term to add to the @type field - prefix (str, optional): The prefix to use for the term. Defaults to None. - iri (str, optional): The IRI to use for the term prefix. Defaults to None. - - Raises: - ValueError: If prefix is provided but iri is not - ValueError: If iri is provided but prefix is not - """ - - if prefix: - validate_prefix(term, prefix) - - add_namespace(self, prefix, iri) - self.ld_type.append(term) - - -class Equation(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore - - equation: str - equation_type: EquationType - species_id: Optional[str] = Field(default=None) - variables: list[Variable] = Field(default_factory=list) - - # JSON-LD fields - ld_id: str = Field( - serialization_alias="@id", - default_factory=lambda: "enzml:Equation/" + str(uuid4()) - ) - ld_type: list[str] = Field( - serialization_alias="@type", - default_factory = lambda: [ - "enzml:Equation", - ], - ) - ld_context: dict[str, str | dict] = Field( - serialization_alias="@context", - default_factory = lambda: { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/", - "species_id": { - "@type": "@id", - }, - } - ) - - def filter_variables(self, **kwargs) -> list[Variable]: - """Filters the variables attribute based on the given kwargs - - Args: - **kwargs: The attributes to filter by. - - Returns: - list[Variable]: The filtered list of Variable objects - """ - - return FilterWrapper[Variable](self.variables, **kwargs).filter() - - - def set_attr_term( - self, - attr: str, - term: str | dict, - prefix: str | None = None, - iri: str | None = None - ): - """Sets the term for a given attribute in the JSON-LD object - - Example: - # Using an IRI term - >> obj.set_attr_term("name", "http://schema.org/givenName") - - # Using a prefix and term - >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") - - # Usinng a dictionary term - >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) - - Args: - attr (str): The attribute to set the term for - term (str | dict): The term to set for the attribute - - Raises: - AssertionError: If the attribute is not found in the model - """ - - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" - - if prefix: - validate_prefix(term, prefix) - - add_namespace(self, prefix, iri) - self.ld_context[attr] = term - - def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None - ): - """Adds a term to the @type field of the JSON-LD object - - Example: - # Using a term - >> obj.add_type_term("https://schema.org/Person") - - # Using a prefixed term - >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") - - Args: - term (str): The term to add to the @type field - prefix (str, optional): The prefix to use for the term. Defaults to None. - iri (str, optional): The IRI to use for the term prefix. Defaults to None. - - Raises: - ValueError: If prefix is provided but iri is not - ValueError: If iri is provided but prefix is not - """ - - if prefix: - validate_prefix(term, prefix) - - add_namespace(self, prefix, iri) - self.ld_type.append(term) - - - def add_to_variables( - self, - id: str, - name: str, - symbol: str, - **kwargs, - ): - params = { - "id": id, - "name": name, - "symbol": symbol - } - - if "id" in kwargs: - params["id"] = kwargs["id"] - - self.variables.append( - Variable(**params) - ) - - return self.variables[-1] - -class Variable(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore - - id: str - name: str - symbol: str - - # JSON-LD fields - ld_id: str = Field( - serialization_alias="@id", - default_factory=lambda: "enzml:Variable/" + str(uuid4()) - ) - ld_type: list[str] = Field( - serialization_alias="@type", - default_factory = lambda: [ - "enzml:Variable", - ], - ) - ld_context: dict[str, str | dict] = Field( - serialization_alias="@context", - default_factory = lambda: { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/", - "id": "schema:identifier", - } - ) - - - def set_attr_term( - self, - attr: str, - term: str | dict, - prefix: str | None = None, - iri: str | None = None - ): - """Sets the term for a given attribute in the JSON-LD object - - Example: - # Using an IRI term - >> obj.set_attr_term("name", "http://schema.org/givenName") - - # Using a prefix and term - >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") - - # Usinng a dictionary term - >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) - - Args: - attr (str): The attribute to set the term for - term (str | dict): The term to set for the attribute - - Raises: - AssertionError: If the attribute is not found in the model - """ - - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" - - if prefix: - validate_prefix(term, prefix) - - add_namespace(self, prefix, iri) - self.ld_context[attr] = term - - def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None - ): - """Adds a term to the @type field of the JSON-LD object - - Example: - # Using a term - >> obj.add_type_term("https://schema.org/Person") - - # Using a prefixed term - >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") - - Args: - term (str): The term to add to the @type field - prefix (str, optional): The prefix to use for the term. Defaults to None. - iri (str, optional): The IRI to use for the term prefix. Defaults to None. - - Raises: - ValueError: If prefix is provided but iri is not - ValueError: If iri is provided but prefix is not - """ - - if prefix: - validate_prefix(term, prefix) - - add_namespace(self, prefix, iri) - self.ld_type.append(term) - - -class Parameter(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore - - id: str - name: str - symbol: str - value: Optional[float] = Field(default=None) - unit: Optional[UnitDefinition] = Field(default=None) - initial_value: Optional[float] = Field(default=None) - upper: Optional[float] = Field(default=None) - lower: Optional[float] = Field(default=None) - stderr: Optional[float] = Field(default=None) - constant: bool = True - - # JSON-LD fields - ld_id: str = Field( - serialization_alias="@id", - default_factory=lambda: "enzml:Parameter/" + str(uuid4()) - ) - ld_type: list[str] = Field( - serialization_alias="@type", - default_factory = lambda: [ - "enzml:Parameter", - ], - ) - ld_context: dict[str, str | dict] = Field( - serialization_alias="@context", - default_factory = lambda: { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/", - "id": { - "@id": "schema:identifier", - "@type": "@id", - }, - } - ) - - - def set_attr_term( - self, - attr: str, - term: str | dict, - prefix: str | None = None, - iri: str | None = None - ): - """Sets the term for a given attribute in the JSON-LD object - - Example: - # Using an IRI term - >> obj.set_attr_term("name", "http://schema.org/givenName") - - # Using a prefix and term - >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") - - # Usinng a dictionary term - >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) - - Args: - attr (str): The attribute to set the term for - term (str | dict): The term to set for the attribute - - Raises: - AssertionError: If the attribute is not found in the model - """ - - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" - - if prefix: - validate_prefix(term, prefix) - - add_namespace(self, prefix, iri) - self.ld_context[attr] = term - - def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None - ): - """Adds a term to the @type field of the JSON-LD object - - Example: - # Using a term - >> obj.add_type_term("https://schema.org/Person") - - # Using a prefixed term - >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") - - Args: - term (str): The term to add to the @type field - prefix (str, optional): The prefix to use for the term. Defaults to None. - iri (str, optional): The IRI to use for the term prefix. Defaults to None. - - Raises: - ValueError: If prefix is provided but iri is not - ValueError: If iri is provided but prefix is not - """ - - if prefix: - validate_prefix(term, prefix) - - add_namespace(self, prefix, iri) - self.ld_type.append(term) - - -class Measurement(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore - - id: str - name: str - species_data: list[MeasurementData] = Field(default_factory=list) - group_id: Optional[str] = Field(default=None) - ph: Optional[float] = Field(default=None) - temperature: Optional[float] = Field(default=None) - temperature_unit: Optional[UnitDefinition] = Field(default=None) - - # JSON-LD fields - ld_id: str = Field( - serialization_alias="@id", - default_factory=lambda: "enzml:Measurement/" + str(uuid4()) - ) - ld_type: list[str] = Field( - serialization_alias="@type", - default_factory = lambda: [ - "enzml:Measurement", - ], - ) - ld_context: dict[str, str | dict] = Field( - serialization_alias="@context", - default_factory = lambda: { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/", - "id": { - "@id": "schema:identifier", - "@type": "@id", - }, - "group_id": { - "@type": "@id", - }, - } - ) - - def filter_species_data(self, **kwargs) -> list[MeasurementData]: - """Filters the species_data attribute based on the given kwargs - - Args: - **kwargs: The attributes to filter by. - - Returns: - list[MeasurementData]: The filtered list of MeasurementData objects - """ - - return FilterWrapper[MeasurementData](self.species_data, **kwargs).filter() - - - def set_attr_term( - self, - attr: str, - term: str | dict, - prefix: str | None = None, - iri: str | None = None - ): - """Sets the term for a given attribute in the JSON-LD object - - Example: - # Using an IRI term - >> obj.set_attr_term("name", "http://schema.org/givenName") - - # Using a prefix and term - >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") - - # Usinng a dictionary term - >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) - - Args: - attr (str): The attribute to set the term for - term (str | dict): The term to set for the attribute - - Raises: - AssertionError: If the attribute is not found in the model - """ - - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" - - if prefix: - validate_prefix(term, prefix) - - add_namespace(self, prefix, iri) - self.ld_context[attr] = term - - def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None - ): - """Adds a term to the @type field of the JSON-LD object - - Example: - # Using a term - >> obj.add_type_term("https://schema.org/Person") - - # Using a prefixed term - >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") - - Args: - term (str): The term to add to the @type field - prefix (str, optional): The prefix to use for the term. Defaults to None. - iri (str, optional): The IRI to use for the term prefix. Defaults to None. - - Raises: - ValueError: If prefix is provided but iri is not - ValueError: If iri is provided but prefix is not - """ - - if prefix: - validate_prefix(term, prefix) - - add_namespace(self, prefix, iri) - self.ld_type.append(term) - - - def add_to_species_data( - self, - species_id: str, - initial: float, - data_unit: UnitDefinition, - data_type: DataTypes, - prepared: Optional[float]= None, - data: list[float]= [], - time: list[float]= [], - time_unit: Optional[UnitDefinition]= None, - is_simulated: bool= False, - **kwargs, - ): - params = { - "species_id": species_id, - "initial": initial, - "data_unit": data_unit, - "data_type": data_type, - "prepared": prepared, - "data": data, - "time": time, - "time_unit": time_unit, - "is_simulated": is_simulated - } - - if "id" in kwargs: - params["id"] = kwargs["id"] - - self.species_data.append( - MeasurementData(**params) - ) - - return self.species_data[-1] - - -class MeasurementData(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore - - species_id: str - initial: float - data_unit: UnitDefinition - data_type: DataTypes - prepared: Optional[float] = Field(default=None) - data: list[float] = Field(default_factory=list) - time: list[float] = Field(default_factory=list) - time_unit: Optional[UnitDefinition] = Field(default=None) - is_simulated: bool = False - - # JSON-LD fields - ld_id: str = Field( - serialization_alias="@id", - default_factory=lambda: "enzml:MeasurementData/" + str(uuid4()) - ) - ld_type: list[str] = Field( - serialization_alias="@type", - default_factory = lambda: [ - "enzml:MeasurementData", - ], - ) - ld_context: dict[str, str | dict] = Field( - serialization_alias="@context", - default_factory = lambda: { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/", - "species_id": { - "@type": "@id", - }, - } - ) - - - def set_attr_term( - self, - attr: str, - term: str | dict, - prefix: str | None = None, - iri: str | None = None - ): - """Sets the term for a given attribute in the JSON-LD object - - Example: - # Using an IRI term - >> obj.set_attr_term("name", "http://schema.org/givenName") - - # Using a prefix and term - >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") - - # Usinng a dictionary term - >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) - - Args: - attr (str): The attribute to set the term for - term (str | dict): The term to set for the attribute - - Raises: - AssertionError: If the attribute is not found in the model - """ - - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" - - if prefix: - validate_prefix(term, prefix) - - add_namespace(self, prefix, iri) - self.ld_context[attr] = term - - def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None - ): - """Adds a term to the @type field of the JSON-LD object - - Example: - # Using a term - >> obj.add_type_term("https://schema.org/Person") - - # Using a prefixed term - >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") - - Args: - term (str): The term to add to the @type field - prefix (str, optional): The prefix to use for the term. Defaults to None. - iri (str, optional): The IRI to use for the term prefix. Defaults to None. - - Raises: - ValueError: If prefix is provided but iri is not - ValueError: If iri is provided but prefix is not - """ - - if prefix: - validate_prefix(term, prefix) - - add_namespace(self, prefix, iri) - self.ld_type.append(term) - - -class UnitDefinition(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore - - id: Optional[str] = Field(default=None) - name: Optional[str] = Field(default=None) - base_units: list[BaseUnit] = Field(default_factory=list) - - # JSON-LD fields - ld_id: str = Field( - serialization_alias="@id", - default_factory=lambda: "enzml:UnitDefinition/" + str(uuid4()) - ) - ld_type: list[str] = Field( - serialization_alias="@type", - default_factory = lambda: [ - "enzml:UnitDefinition", - ], - ) - ld_context: dict[str, str | dict] = Field( - serialization_alias="@context", - default_factory = lambda: { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/", - } - ) - - def filter_base_units(self, **kwargs) -> list[BaseUnit]: - """Filters the base_units attribute based on the given kwargs - - Args: - **kwargs: The attributes to filter by. - - Returns: - list[BaseUnit]: The filtered list of BaseUnit objects - """ - - return FilterWrapper[BaseUnit](self.base_units, **kwargs).filter() - - - def set_attr_term( - self, - attr: str, - term: str | dict, - prefix: str | None = None, - iri: str | None = None - ): - """Sets the term for a given attribute in the JSON-LD object - - Example: - # Using an IRI term - >> obj.set_attr_term("name", "http://schema.org/givenName") - - # Using a prefix and term - >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") - - # Usinng a dictionary term - >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) - - Args: - attr (str): The attribute to set the term for - term (str | dict): The term to set for the attribute - - Raises: - AssertionError: If the attribute is not found in the model - """ - - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" - - if prefix: - validate_prefix(term, prefix) - - add_namespace(self, prefix, iri) - self.ld_context[attr] = term - - def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None - ): - """Adds a term to the @type field of the JSON-LD object - - Example: - # Using a term - >> obj.add_type_term("https://schema.org/Person") - - # Using a prefixed term - >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") - - Args: - term (str): The term to add to the @type field - prefix (str, optional): The prefix to use for the term. Defaults to None. - iri (str, optional): The IRI to use for the term prefix. Defaults to None. - - Raises: - ValueError: If prefix is provided but iri is not - ValueError: If iri is provided but prefix is not - """ - - if prefix: - validate_prefix(term, prefix) - - add_namespace(self, prefix, iri) - self.ld_type.append(term) - - - def add_to_base_units( - self, - kind: UnitType, - exponent: int, - multiplier: Optional[float]= None, - scale: Optional[float]= None, - **kwargs, - ): - params = { - "kind": kind, - "exponent": exponent, - "multiplier": multiplier, - "scale": scale - } - - if "id" in kwargs: - params["id"] = kwargs["id"] - - self.base_units.append( - BaseUnit(**params) - ) - - return self.base_units[-1] - -class BaseUnit(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assigment = True, - ) # type: ignore - - kind: UnitType - exponent: int - multiplier: Optional[float] = Field(default=None) - scale: Optional[float] = Field(default=None) - - # JSON-LD fields - ld_id: str = Field( - serialization_alias="@id", - default_factory=lambda: "enzml:BaseUnit/" + str(uuid4()) - ) - ld_type: list[str] = Field( - serialization_alias="@type", - default_factory = lambda: [ - "enzml:BaseUnit", - ], - ) - ld_context: dict[str, str | dict] = Field( - serialization_alias="@context", - default_factory = lambda: { - "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", - "OBO": "http://purl.obolibrary.org/obo/", - } - ) - - - def set_attr_term( - self, - attr: str, - term: str | dict, - prefix: str | None = None, - iri: str | None = None - ): - """Sets the term for a given attribute in the JSON-LD object - - Example: - # Using an IRI term - >> obj.set_attr_term("name", "http://schema.org/givenName") - - # Using a prefix and term - >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") - - # Usinng a dictionary term - >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) - - Args: - attr (str): The attribute to set the term for - term (str | dict): The term to set for the attribute - - Raises: - AssertionError: If the attribute is not found in the model - """ - - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" - - if prefix: - validate_prefix(term, prefix) - - add_namespace(self, prefix, iri) - self.ld_context[attr] = term - - def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None - ): - """Adds a term to the @type field of the JSON-LD object - - Example: - # Using a term - >> obj.add_type_term("https://schema.org/Person") - - # Using a prefixed term - >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") - - Args: - term (str): The term to add to the @type field - prefix (str, optional): The prefix to use for the term. Defaults to None. - iri (str, optional): The IRI to use for the term prefix. Defaults to None. - - Raises: - ValueError: If prefix is provided but iri is not - ValueError: If iri is provided but prefix is not - """ - - if prefix: - validate_prefix(term, prefix) - - add_namespace(self, prefix, iri) - self.ld_type.append(term) - - -class EquationType(Enum): - ASSIGNMENT = "assignment" - INITIAL_ASSIGNMENT = "initialAssignment" - ODE = "ode" - RATE_LAW = "rateLaw" - -class DataTypes(Enum): - ABSORBANCE = "http://purl.allotrope.org/ontologies/quality#AFQ_0000061" - CONCENTRATION = "http://purl.obolibrary.org/obo/PATO_0000033" - CONVERSION = "http://purl.allotrope.org/ontologies/quality#AFQ_0000226" - FLUORESCENCE = "http://purl.obolibrary.org/obo/PATO_0000018" - PEAK_AREA = "http://purl.allotrope.org/ontologies/result#AFR_0001073" - TRANSMITTANCE = "http://purl.allotrope.org/ontologies/result#AFR_0002261" - -class UnitType(Enum): - AMPERE = "ampere" - AVOGADRO = "avogadro" - BECQUEREL = "becquerel" - CANDELA = "candela" - CELSIUS = "celsius" - COULOMB = "coulomb" - DIMENSIONLESS = "dimensionless" - FARAD = "farad" - GRAM = "gram" - GRAY = "gray" - HENRY = "henry" - HERTZ = "hertz" - ITEM = "item" - JOULE = "joule" - KATAL = "katal" - KELVIN = "kelvin" - KILOGRAM = "kilogram" - LITRE = "litre" - LUMEN = "lumen" - LUX = "lux" - METRE = "metre" - MOLE = "mole" - NEWTON = "newton" - OHM = "ohm" - PASCAL = "pascal" - RADIAN = "radian" - SECOND = "second" - SIEMENS = "siemens" - SIEVERT = "sievert" - STERADIAN = "steradian" - TESLA = "tesla" - VOLT = "volt" - WATT = "watt" - WEBER = "weber" \ No newline at end of file diff --git a/pyenzyme/sbml/mappings.toml b/pyenzyme/sbml/mappings.toml deleted file mode 100644 index 73f0fc14..00000000 --- a/pyenzyme/sbml/mappings.toml +++ /dev/null @@ -1,38 +0,0 @@ -[smallMolecule] - -inchiKey = "inchikey" -smiles = "canonical_smiles" - -[protein] - -ecnumber = "ecnumber" -organism = "organism" -organismTaxId = "organism_tax_id" -sequence = "sequence" - -[complex] -participants = "participants" - -[conditions] - -ph = { "@value" = "ph" } -temperature = { "@value" = "temperature", "@unit" = "temperature_unit" } - -[parameter] - -lowerBound = "lower" -upperBound = "upper" -stdDeviation = "stderr" - -[measurement] - -"@id" = "id" -"@name" = "name" - -[speciesData] - -speciesData = { "@species" = "species_id", "@value" = "initial", "@unit" = "data_unit", "@type" = "data_type" } - -[variables] - -variable = { "@id" = "id", "@name" = "name", "@symbol" = "symbol" } diff --git a/pyenzyme/units/__init__.py b/pyenzyme/units/__init__.py deleted file mode 100644 index 25903882..00000000 --- a/pyenzyme/units/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from .predefined import * # noqa: F403 diff --git a/pyenzyme/units/ontomaps.toml b/pyenzyme/units/ontomaps.toml deleted file mode 100644 index 0a2f5517..00000000 --- a/pyenzyme/units/ontomaps.toml +++ /dev/null @@ -1,40 +0,0 @@ -[substance] - -mol = "OBO:UO_0000013" -mmol = "OBO:UO_0000040" -umol = "OBO:UO_0000039" -nmol = "OBO:UO_0000041" - -[molarity] - -M = "OBO:UO_0000062" -mM = "OBO:UO_0000063" -uM = "OBO:UO_0000064" -nM = "OBO:UO_0000025" - -[time] - -s = "OBO:UO_0000010" -min = "OBO:UO_0000031" -hour = "OBO:UO_0000032" -day = "OBO:UO_0000033" - -[temperature] - -K = "OBO:UO_0000012" -C = "OBO:UO_0000027" - -[mass] - -kg = "OBO:UO_0000009" -g = "OBO:UO_0000021" -mg = "OBO:UO_0000022" -ug = "OBO:UO_0000023" -ng = "OBO:UO_0000024" - -[volume] - -litre = "OBO:UO_0000099" -ml = "OBO:UO_0000098" -ul = "OBO:UO_0000101" -nl = "OBO:UO_0000102" diff --git a/pyenzyme/units/predefined.py b/pyenzyme/units/predefined.py deleted file mode 100644 index 2591f3a8..00000000 --- a/pyenzyme/units/predefined.py +++ /dev/null @@ -1,152 +0,0 @@ -from pyenzyme.model import UnitType -from pyenzyme.tools import read_static_file - -from .units import BaseUnit, UnitDefinition, Prefix - -BaseUnit.model_rebuild() -UnitDefinition.model_rebuild() - -ONTOMAPS = read_static_file("pyenzyme.units", "ontomaps.toml") - - -class Unit: - @staticmethod - def mol(): - return BaseUnit(kind=UnitType.MOLE, exponent=1, scale=1) - - @staticmethod - def litre(): - return BaseUnit(kind=UnitType.LITRE, exponent=1, scale=1) - - @staticmethod - def second(): - return BaseUnit(kind=UnitType.SECOND, exponent=1, scale=1) - - @staticmethod - def minute(): - return BaseUnit(kind=UnitType.SECOND, exponent=1, scale=1, multiplier=60) - - @staticmethod - def hour(): - hour = 60 * 60 - return BaseUnit(kind=UnitType.SECOND, exponent=1, scale=1, multiplier=hour) - - @staticmethod - def day(): - day = 60**2 * 24 - return BaseUnit(kind=UnitType.SECOND, exponent=1, scale=1, multiplier=day) - - @staticmethod - def gram(): - return BaseUnit(kind=UnitType.GRAM, exponent=1, scale=1) - - @staticmethod - def kelvin(): - return BaseUnit(kind=UnitType.KELVIN, exponent=1, scale=1) - - @staticmethod - def celsius(): - return BaseUnit(kind=UnitType.CELSIUS, exponent=1, scale=1) - - @staticmethod - def dimensionless(): - return BaseUnit(kind=UnitType.DIMENSIONLESS, exponent=1, scale=1) - - -###### Single Prefixes ###### - -k = Prefix.k -m = Prefix.m -u = Prefix.u -n = Prefix.n - -##### Predefined units ##### - -# Dimensionless -dimensionless = UnitDefinition(base_units=[Unit.dimensionless()]) - -# Molarity -M = Unit.mol() / Unit.litre() -mM = m * Unit.mol() / Unit.litre() -uM = u * Unit.mol() / Unit.litre() -nM = n * Unit.mol() / Unit.litre() - -## Ontology -M.ld_id = ONTOMAPS["molarity"]["M"] -mM.ld_id = ONTOMAPS["molarity"]["mM"] -uM.ld_id = ONTOMAPS["molarity"]["uM"] -nM.ld_id = ONTOMAPS["molarity"]["nM"] - -# Substance -mol = UnitDefinition(base_units=[Unit.mol()])._get_name() -mmol = UnitDefinition(base_units=[m * Unit.mol()])._get_name() -umol = UnitDefinition(base_units=[u * Unit.mol()])._get_name() -nmol = UnitDefinition(base_units=[n * Unit.mol()])._get_name() - -## Ontology -mol.ld_id = ONTOMAPS["substance"]["mol"] -mmol.ld_id = ONTOMAPS["substance"]["mmol"] -umol.ld_id = ONTOMAPS["substance"]["umol"] -nmol.ld_id = ONTOMAPS["substance"]["nmol"] - -# Mass -gram = UnitDefinition(base_units=[Unit.gram()])._get_name() -g = UnitDefinition(base_units=[Unit.gram()])._get_name() -mg = UnitDefinition(base_units=[m * Unit.gram()])._get_name() -ug = UnitDefinition(base_units=[u * Unit.gram()])._get_name() -ng = UnitDefinition(base_units=[n * Unit.gram()])._get_name() -kg = UnitDefinition(base_units=[k * Unit.gram()])._get_name() - -## Ontology -g.ld_id = ONTOMAPS["mass"]["g"] -gram.ld_id = ONTOMAPS["mass"]["g"] -mg.ld_id = ONTOMAPS["mass"]["mg"] -ug.ld_id = ONTOMAPS["mass"]["ug"] -ng.ld_id = ONTOMAPS["mass"]["ng"] - -# Volume -litre = UnitDefinition(base_units=[Unit.litre()])._get_name() -l = UnitDefinition(base_units=[Unit.litre()])._get_name() # noqa: E741 -ml = UnitDefinition(base_units=[m * Unit.litre()])._get_name() -ul = UnitDefinition(base_units=[u * Unit.litre()])._get_name() -nl = UnitDefinition(base_units=[n * Unit.litre()])._get_name() - -## Ontology - -l.ld_id = ONTOMAPS["volume"]["litre"] -litre.ld_id = ONTOMAPS["volume"]["litre"] -ml.ld_id = ONTOMAPS["volume"]["ml"] -ul.ld_id = ONTOMAPS["volume"]["ul"] -nl.ld_id = ONTOMAPS["volume"]["nl"] - -# Time -second = UnitDefinition(base_units=[Unit.second()])._get_name() -s = UnitDefinition(base_units=[Unit.second()])._get_name() -minute = UnitDefinition(base_units=[Unit.minute()])._get_name() -min = UnitDefinition(base_units=[Unit.minute()])._get_name() -hour = UnitDefinition(base_units=[Unit.hour()])._get_name() -h = UnitDefinition(base_units=[Unit.hour()])._get_name() -day = UnitDefinition(base_units=[Unit.day()])._get_name() -d = UnitDefinition(base_units=[Unit.day()])._get_name() - -## Ontology -s.ld_id = ONTOMAPS["time"]["s"] -second.ld_id = ONTOMAPS["time"]["s"] -minute.ld_id = ONTOMAPS["time"]["min"] -min.ld_id = ONTOMAPS["time"]["min"] -hour.ld_id = ONTOMAPS["time"]["hour"] -h.ld_id = ONTOMAPS["time"]["hour"] -day.ld_id = ONTOMAPS["time"]["day"] -d.ld_id = ONTOMAPS["time"]["day"] - -# Temperature - -kelvin = UnitDefinition(base_units=[Unit.kelvin()])._get_name() -K = UnitDefinition(base_units=[Unit.kelvin()])._get_name() -celsius = UnitDefinition(base_units=[Unit.celsius()])._get_name() -C = UnitDefinition(base_units=[Unit.celsius()])._get_name() - -## Ontology - -K.ld_id = ONTOMAPS["temperature"]["K"] -kelvin.ld_id = ONTOMAPS["temperature"]["K"] diff --git a/pyenzyme/units/units.py b/pyenzyme/units/units.py deleted file mode 100644 index e44633fa..00000000 --- a/pyenzyme/units/units.py +++ /dev/null @@ -1,401 +0,0 @@ -from copy import deepcopy -from enum import Enum -from functools import partial -import sys - -from pydantic import model_validator - -from pyenzyme.model import ( - UnitDefinition as _UnitDefinition, - BaseUnit as _BaseUnit, - UnitType, -) - -UNIT_OF_MEAS_TYPE = "OBO:UO_0000000" -NAME_MAPS = { - UnitType.LITRE: "l", - UnitType.MOLE: "mol", - UnitType.SECOND: "s", - UnitType.GRAM: "g", - UnitType.KELVIN: "K", -} - - -def _is_unit(other: object) -> bool: - """Check if the given object is an instance of 'unit'. - - Args: - other (object): The object to check. - - Returns: - bool: True if the object is an instance of 'unit', False otherwise. - """ - return other.__class__.__name__ == "unit" - - -def set_scale(unit: _BaseUnit, scale: int) -> _BaseUnit: - """Set the scale of a unit. - - Args: - unit (_BaseUnit): The unit to set the scale for. - scale (int): The scale value to set. - - Returns: - _BaseUnit: The unit with the updated scale. - """ - unit.scale = scale - return unit - - -class Prefix(Enum): - """Enumeration for unit prefixes with corresponding scales.""" - - if sys.version_info >= (3, 13): - from enum import member - - k = member(partial(set_scale, scale=3)) - m = member(partial(set_scale, scale=-3)) - u = member(partial(set_scale, scale=-6)) - n = member(partial(set_scale, scale=-9)) - else: - k = partial(set_scale, scale=3) - m = partial(set_scale, scale=-3) - u = partial(set_scale, scale=-6) - n = partial(set_scale, scale=-9) - - def __mul__(self, other: _BaseUnit) -> _BaseUnit: - """Multiply prefix with a BaseUnit. - - When multiplying a prefix with a BaseUnit, the scale of the BaseUnit is updated. - - Args: - other (_BaseUnit): The other operand, which should be a BaseUnit. - - Returns: - _BaseUnit: The resulting unit with the prefix applied. - - Raises: - TypeError: If the other operand is not a BaseUnit. - """ - if isinstance(other, _BaseUnit): - return self.value(other) - - raise TypeError( - f"unsupported operand type(s) for *: 'Prefix' and '{type(other)}'" - ) - - -class UnitDefinition(_UnitDefinition): - """Extended UnitDefinition class with additional operations.""" - - @model_validator(mode="after") - def set_name_and_type(self): - """Initialize the UnitDefinition object.""" - self._get_name() - self.ld_type = [UNIT_OF_MEAS_TYPE] - return self - - def __rtruediv__(self, other: object) -> "UnitDefinition": - """Right division operation to handle unit division. - - If the other operand is a UnitDefinition, the base units are appended to the current unit. - If the other operand is a BaseUnit, the base unit is appended to the current unit. - - Args: - other (object): The numerator in the division. - - Returns: - UnitDefinition: The resulting unit after division. - - Raises: - TypeError: If the other operand type is unsupported. - """ - - unit_def = deepcopy(self) - unit_def.id = None - - for base in unit_def.base_units: - base.exponent = -abs(base.exponent) - - if isinstance(other, UnitDefinition): - unit_def.base_units.extend(other.base_units) - elif isinstance(other, _BaseUnit): - unit_def.base_units.append(other) - - unit_def._get_name() - - return unit_def - - def __truediv__(self, other: object) -> "UnitDefinition": - """Division operation to handle unit division. - - If the other operand is a UnitDefinition, the base units are appended to the current unit. - If the other operand is a BaseUnit, the base unit is appended to the current unit. - - Args: - other (object): The numerator in the - - Returns: - UnitDefinition: The resulting unit after division. - - Raises: - TypeError: If the other operand type is unsupported. - - """ - - unit_def = deepcopy(self) - unit_def.id = None - - if isinstance(other, UnitDefinition): - for base in other.base_units: - base.exponent = -abs(base.exponent) - unit_def.base_units.extend(other.base_units) - elif isinstance(other, _BaseUnit): - other.exponent = -abs(other.exponent) - unit_def.base_units.append(other) - - unit_def._get_name() - - return unit_def - - def __mul__(self, other: object) -> "UnitDefinition": - """Multiplication operation to handle unit multiplication. - - Args: - other (object): The multiplier in the multiplication. - - Returns: - UnitDefinition: The resulting unit after multiplication. - - Raises: - TypeError: If the other operand type is unsupported. - """ - - unit_def = deepcopy(self) - unit_def.id = None - - if isinstance(other, (int, float)): - for base in unit_def.base_units: - if base.multiplier: - base.multiplier *= other - else: - base.multiplier = other - - unit_def._get_name() - - return unit_def - - raise TypeError( - f"unsupported operand type(s) for *: 'UnitDefinition' and '{type(other)}'" - ) - - def _get_name(self): - """Get the name of the unit based on the base units.""" - self.name = str(self) - - return self - - def __str__(self) -> str: - """String representation of the UnitDefinition. - - Returns: - str: The string representation of the unit. - - Raises: - ValueError: If no base units are found. - """ - - numerator = [ - self._map_prefix(base.scale) - + self._map_name(base.kind) - + self._exponent(base.exponent) - for base in self.base_units - if base.exponent > 0 - ] - denominator = [ - self._map_prefix(base.scale) - + self._map_name(base.kind) - + self._exponent(base.exponent) - for base in self.base_units - if base.exponent < 0 - ] - - numerator_str = " ".join(numerator) if numerator else "" - denominator_str = " ".join(denominator) if denominator else "" - - if numerator_str and denominator_str: - return f"{numerator_str} / {denominator_str}" - elif numerator_str: - return numerator_str - elif denominator_str: - return f"1 / {denominator_str}" - - raise ValueError("No base units found") - - @staticmethod - def _map_prefix(scale: int | None) -> str: - """Map a scale to its corresponding prefix. - - Args: - scale (int): The scale value to map. - - Returns: - str: The corresponding prefix. - """ - - if scale is None: - return "" - - mapping = { - 3: "k", - -3: "m", - -6: "u", - -9: "n", - } - - return mapping.get(scale, "") - - @staticmethod - def _map_name(kind: UnitType) -> str: - return NAME_MAPS.get(kind, kind.name.capitalize()) - - @staticmethod - def _exponent(exponent: int) -> str: - """Format the exponent for display. - - Args: - exponent (int): The exponent value to format. - - Returns: - str: The formatted exponent string. - """ - if abs(exponent) == 1: - return "" - - return f"^{abs(exponent)}" - - -class BaseUnit(_BaseUnit): - """Extended BaseUnit class with additional operations.""" - - def __rtruediv__(self, other: object) -> "UnitDefinition | BaseUnit": - """Right division operation to handle unit division. - - Args: - other (object): The numerator in the division. - - Returns: - UnitDefinition: The resulting unit after division. - - Raises: - TypeError: If the other operand type is unsupported. - """ - - base_unit = deepcopy(self) - - if isinstance(other, UnitDefinition): - base_unit.exponent = -base_unit.exponent - other.base_units.append(base_unit) - - other._get_name() - - return other - elif isinstance(other, (int, float)): - base_unit.exponent = -base_unit.exponent - return base_unit - - raise TypeError( - f"unsupported operand type(s) for /: 'BaseUnit' and '{type(other)}'" - ) - - def __truediv__(self, other: object) -> "UnitDefinition": - """Division operation to handle unit division. - - Args: - other (object): The denominator in the division. - - Returns: - UnitDefinition: The resulting unit after division. - - Raises: - TypeError: If the other operand type is unsupported. - """ - - this_bu = deepcopy(self) - - if isinstance(other, BaseUnit): - other.exponent = -other.exponent - return UnitDefinition(base_units=[this_bu, other])._get_name() - elif isinstance(other, UnitDefinition): - for base_unit in other.base_units: - base_unit.exponent = -base_unit.exponent - other.base_units.append(this_bu) - other._get_name() - - return other - - raise TypeError( - f"unsupported operand type(s) for /: 'BaseUnit' and '{type(other)}'" - ) - - def __pow__(self, other: int) -> "_BaseUnit": - """Exponentiation operation to handle unit exponentiation. - - Args: - other (int): The exponent value. - - Returns: - _BaseUnit: The resulting unit after exponentiation. - - Raises: - TypeError: If the exponent is not an integer. - """ - - this_bu = deepcopy(self) - - if isinstance(other, int): - this_bu.exponent = other - return this_bu - - raise TypeError( - f"unsupported operand type(s) for **: 'BaseUnit' and '{type(other)}'" - ) - - def __mul__(self, other: object) -> object: - """Multiplication operation to handle unit multiplication. - - Args: - other (object): The multiplier in the multiplication. - - Returns: - object: The resulting unit after multiplication. - - Raises: - TypeError: If the other operand type is unsupported. - """ - - this_bu = deepcopy(self) - - if isinstance(other, BaseUnit): - if this_bu.exponent < 0 or other.exponent < 0: - this_bu.exponent = abs(this_bu.exponent) - other.exponent = abs(other.exponent) - - return UnitDefinition(base_units=[this_bu, other])._get_name() - elif isinstance(other, UnitDefinition): - other.base_units.append(this_bu) - other._get_name() - - return other - elif isinstance(other, Prefix): - return other * this_bu - elif isinstance(other, (int, float)): - if this_bu.multiplier: - this_bu.multiplier *= other - else: - this_bu.multiplier = other - return this_bu - - raise TypeError( - f"unsupported operand type(s) for *: 'BaseUnit' and '{type(other)}'" - ) From bb0db4a994055004cea4e5107abef92114931e30 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Wed, 7 May 2025 01:21:57 +0200 Subject: [PATCH 094/172] remove unused assets --- pyproject.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index a9da80ae..679a0d60 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,6 @@ description = "" authors = ["Jan Range "] license = "MIT" readme = "README.md" -include = ["pyenzyme/units/ontomaps.toml", "pyenzyme/sbml/mappings.toml"] [tool.poetry.dependencies] python = "^3.10" From c83c8a50b7beb49443bbbd50bab8e59e48026557 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Wed, 7 May 2025 01:42:10 +0200 Subject: [PATCH 095/172] shorten names --- pyenzyme/__init__.py | 1 + pyenzyme/fetcher/__init__.py | 12 ++++++------ pyenzyme/fetcher/brenda.py | 0 pyenzyme/fetcher/chebi.py | 10 +++++++--- pyenzyme/fetcher/rhea.py | 16 +++++++++++----- pyenzyme/fetcher/uniprot.py | 8 ++++++-- tests/integration/test_fetcher.py | 16 ++++++++-------- 7 files changed, 39 insertions(+), 24 deletions(-) delete mode 100644 pyenzyme/fetcher/brenda.py diff --git a/pyenzyme/__init__.py b/pyenzyme/__init__.py index e4db8855..d0b72925 100644 --- a/pyenzyme/__init__.py +++ b/pyenzyme/__init__.py @@ -4,6 +4,7 @@ from .versions.v2 import * # noqa: F403 from .versions.io import EnzymeMLHandler +from .fetcher import * # noqa: F403 from .suite import EnzymeMLSuite # Input functions diff --git a/pyenzyme/fetcher/__init__.py b/pyenzyme/fetcher/__init__.py index 8bfb9ac6..acc49191 100644 --- a/pyenzyme/fetcher/__init__.py +++ b/pyenzyme/fetcher/__init__.py @@ -1,9 +1,9 @@ -from .chebi import fetch_chebi_to_small_molecule -from .uniprot import fetch_uniprot_to_protein -from .rhea import fetch_rhea_to_reaction +from .chebi import fetch_chebi +from .uniprot import fetch_uniprot +from .rhea import fetch_rhea __all__ = [ - "fetch_chebi_to_small_molecule", - "fetch_uniprot_to_protein", - "fetch_rhea_to_reaction", + "fetch_chebi", + "fetch_uniprot", + "fetch_rhea", ] diff --git a/pyenzyme/fetcher/brenda.py b/pyenzyme/fetcher/brenda.py deleted file mode 100644 index e69de29b..00000000 diff --git a/pyenzyme/fetcher/chebi.py b/pyenzyme/fetcher/chebi.py index 33b8ac07..9403a5c5 100644 --- a/pyenzyme/fetcher/chebi.py +++ b/pyenzyme/fetcher/chebi.py @@ -7,7 +7,7 @@ import requests import re -from typing import List, Optional, Union +from typing import Optional, Union from pydantic_xml import element, attr, BaseXmlModel from pyenzyme.versions import v2 @@ -166,13 +166,16 @@ def get_entry_by_id(self, chebi_id: str) -> Union[ChEBIEntity, None]: raise ConnectionError(f"Connection to ChEBI server failed: {str(e)}") -def fetch_chebi_to_small_molecule(chebi_id: str) -> v2.SmallMolecule: +def fetch_chebi( + chebi_id: str, + vessel_id: Optional[str] = None, +) -> v2.SmallMolecule: """ Fetch a ChEBI entry by ID and convert it to a SmallMolecule object. Args: chebi_id: The ChEBI ID to fetch - + vessel_id: The ID of the vessel to add the small molecule to Returns: A SmallMolecule object with data from ChEBI @@ -194,6 +197,7 @@ def fetch_chebi_to_small_molecule(chebi_id: str) -> v2.SmallMolecule: inchi=chebi_entity.inchi, inchikey=chebi_entity.inchikey, constant=False, # Default to non-constant + vessel_id=vessel_id, ) # Add type term for ChEBI source diff --git a/pyenzyme/fetcher/rhea.py b/pyenzyme/fetcher/rhea.py index 6802cadb..011e815d 100644 --- a/pyenzyme/fetcher/rhea.py +++ b/pyenzyme/fetcher/rhea.py @@ -8,11 +8,11 @@ from io import StringIO import pandas as pd from pydantic import BaseModel, ConfigDict -from typing import List, ClassVar, Tuple +from typing import List, ClassVar, Optional, Tuple import requests -from pyenzyme.fetcher.chebi import fetch_chebi_to_small_molecule +from pyenzyme.fetcher.chebi import fetch_chebi from pyenzyme.versions import v2 @@ -138,7 +138,10 @@ def fetch_json(query: str) -> RheaQuery: return RheaQuery.model_validate(response.json()) -def fetch_rhea_to_reaction(rhea_id: str) -> Tuple[v2.Reaction, List[v2.SmallMolecule]]: +def fetch_rhea( + rhea_id: str, + vessel_id: Optional[str] = None, +) -> Tuple[v2.Reaction, List[v2.SmallMolecule]]: """ Fetch a Rhea entry by ID and convert it to a Reaction object. @@ -148,7 +151,7 @@ def fetch_rhea_to_reaction(rhea_id: str) -> Tuple[v2.Reaction, List[v2.SmallMole Args: rhea_id: The Rhea ID to fetch, can be with or without the 'RHEA:' prefix - + vessel_id: The ID of the vessel to add the small molecules to Returns: A tuple containing: - A Reaction object with data from Rhea @@ -170,7 +173,10 @@ def fetch_rhea_to_reaction(rhea_id: str) -> Tuple[v2.Reaction, List[v2.SmallMole # Process each chemical species in the reaction for i in range(n_reactants + n_products): - small_molecule = fetch_chebi_to_small_molecule(client.chebi_ids[i]) + small_molecule = fetch_chebi( + client.chebi_ids[i], + vessel_id=vessel_id, + ) small_molecules.append(small_molecule) if i < n_reactants: diff --git a/pyenzyme/fetcher/uniprot.py b/pyenzyme/fetcher/uniprot.py index 7055b72b..829c8371 100644 --- a/pyenzyme/fetcher/uniprot.py +++ b/pyenzyme/fetcher/uniprot.py @@ -109,13 +109,16 @@ def get_entry_by_id(self, uniprot_id: str) -> Union[UniProtEntry, None]: raise ConnectionError(f"Connection to UniProt server failed: {str(e)}") -def fetch_uniprot_to_protein(uniprot_id: str) -> v2.Protein: +def fetch_uniprot( + uniprot_id: str, + vessel_id: Optional[str] = None, +) -> v2.Protein: """ Fetch a UniProt entry by ID and convert it to a Protein object. Args: uniprot_id: The UniProt ID to fetch - + vessel_id: The ID of the vessel to add the protein to Returns: A Protein object with data from UniProt @@ -172,6 +175,7 @@ def fetch_uniprot_to_protein(uniprot_id: str) -> v2.Protein: organism_tax_id=organism_tax_id, ecnumber=ecnumber, constant=True, # Default to constant + vessel_id=vessel_id, ) # Add type term for UniProt source diff --git a/tests/integration/test_fetcher.py b/tests/integration/test_fetcher.py index 4f2ba962..d03e3f2e 100644 --- a/tests/integration/test_fetcher.py +++ b/tests/integration/test_fetcher.py @@ -1,12 +1,12 @@ import pytest -from pyenzyme.fetcher.chebi import fetch_chebi_to_small_molecule -from pyenzyme.fetcher.rhea import fetch_rhea_to_reaction -from pyenzyme.fetcher.uniprot import fetch_uniprot_to_protein +from pyenzyme.fetcher.chebi import fetch_chebi +from pyenzyme.fetcher.rhea import fetch_rhea +from pyenzyme.fetcher.uniprot import fetch_uniprot class TestFetcher: def test_fetch_chebi_to_small_molecule(self): - small_molecule = fetch_chebi_to_small_molecule("CHEBI:15377") + small_molecule = fetch_chebi("CHEBI:15377") assert small_molecule is not None assert small_molecule.id == "CHEBI_15377" assert small_molecule.name == "water" @@ -22,10 +22,10 @@ def test_fetch_chebi_to_small_molecule(self): def test_fetch_chebi_to_small_molecule_invalid_id(self): with pytest.raises(ValueError): - fetch_chebi_to_small_molecule("INVALID_ID") + fetch_chebi("INVALID_ID") def test_fetch_uniprot_to_protein(self): - protein = fetch_uniprot_to_protein("P07327") + protein = fetch_uniprot("P07327") assert protein is not None assert protein.id == "P07327" @@ -41,7 +41,7 @@ def test_fetch_uniprot_to_protein(self): assert protein.references[0] == "https://www.uniprot.org/uniprotkb/P07327" def test_fetch_rhea_to_reaction(self): - reaction, small_molecules = fetch_rhea_to_reaction("RHEA:22864") + reaction, small_molecules = fetch_rhea("RHEA:22864") reaction.species.sort(key=lambda x: x.species_id) small_molecules.sort(key=lambda x: x.id) @@ -64,4 +64,4 @@ def test_fetch_rhea_to_reaction(self): def test_fetch_rhea_to_reaction_invalid_id(self): with pytest.raises(ValueError): - fetch_rhea_to_reaction("INVALID_ID") + fetch_rhea("INVALID_ID") From d5144f9f708720eda6599b66a5e649013b318ca6 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Wed, 7 May 2025 01:42:18 +0200 Subject: [PATCH 096/172] add example code --- README.md | 36 ++++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index d3ce498a..79a92139 100644 --- a/README.md +++ b/README.md @@ -60,12 +60,40 @@ python -m pip install "pyenzyme[all]" ## ⚙️ Example code -This example will demonstrate how to create a simple EnzymeML document using PyEnzyme and how to use initializers from -official databases **Chebi** and **UniProt** to gather metadata. For more examples, please visit -our [documentation](https://pyenzyme.readthedocs.io/en/latest/index.html#) (Work in progress) +This example will demonstrate how to create a simple EnzymeML document using PyEnzyme and how to use initializers from official databases **Chebi** and **UniProt** to gather metadata. + +### Create a simple EnzymeML document ```python -# To be added for V2 +import pyenzyme as pe + +# Create a simple EnzymeML document +enzmldoc = pe.EnzymeMLDocument(name="Test") + +vessel = enzmldoc.add_to_vessels( + id="vessel_1", + name="Vessel 1", + volume=1.0, + unit="l", # Units are automatically converted to a UnitDefinition +) + +# Add a species from Chebi +protein = pe.fetch_uniprot("P07327", vessel_id=vessel.id) +enzmldoc.proteins.append(protein) + +# Add a reaction from RHEA DB +reaction, participants = pe.fetch_rhea("RHEA:22864", vessel_id=vessel.id) +enzmldoc.small_molecules += participants +enzmldoc.reactions.append(reaction) + +# Serialize to EnzymeML +pe.write_enzymeml(enzmldoc, "enzmldoc.json") + +# Deserialize from EnzymeML +enzmldoc = pe.read_enzymeml("enzmldoc.json") + +# Convert to SBML +sbml_doc = pe.to_sbml(enzmldoc, "enzmldoc.omex") ``` (Code should run as it is) From 8e9c5ccc446611bc74c6f8457470eaca68d18c1f Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Wed, 7 May 2025 01:45:33 +0200 Subject: [PATCH 097/172] add tabular parser --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index 79a92139..b8c48241 100644 --- a/README.md +++ b/README.md @@ -86,6 +86,15 @@ reaction, participants = pe.fetch_rhea("RHEA:22864", vessel_id=vessel.id) enzmldoc.small_molecules += participants enzmldoc.reactions.append(reaction) +# Parse a tabular file to a measurement +measurements = pe.from_excel( + path="measurements.xlsx", + data_unit="mmol / l", + time_unit="h", +) + +enzmldoc.measurements += measurements + # Serialize to EnzymeML pe.write_enzymeml(enzmldoc, "enzmldoc.json") From 6b1ff12f8a5f0958e2cfce72824105c5f1f593ea Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Wed, 7 May 2025 01:46:39 +0200 Subject: [PATCH 098/172] typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b8c48241..54ced0ab 100644 --- a/README.md +++ b/README.md @@ -77,7 +77,7 @@ vessel = enzmldoc.add_to_vessels( unit="l", # Units are automatically converted to a UnitDefinition ) -# Add a species from Chebi +# Add a protein from UniProt protein = pe.fetch_uniprot("P07327", vessel_id=vessel.id) enzmldoc.proteins.append(protein) From 2fafd36ade122347c59192f9f1ca5cfddf5e4897 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Wed, 7 May 2025 12:25:12 +0200 Subject: [PATCH 099/172] rename modules --- pyenzyme/equations/__init__.py | 6 ++++-- pyenzyme/equations/{_chem.py => chem.py} | 0 pyenzyme/equations/{_math.py => math.py} | 0 3 files changed, 4 insertions(+), 2 deletions(-) rename pyenzyme/equations/{_chem.py => chem.py} (100%) rename pyenzyme/equations/{_math.py => math.py} (100%) diff --git a/pyenzyme/equations/__init__.py b/pyenzyme/equations/__init__.py index 21bae2f4..0965ff95 100644 --- a/pyenzyme/equations/__init__.py +++ b/pyenzyme/equations/__init__.py @@ -1,2 +1,4 @@ -from ._math import build_equation, build_equations # noqa: F401 -from ._chem import build_reaction, build_reactions # noqa: F401 +from .math import build_equation, build_equations # noqa: F401 +from .chem import build_reaction, build_reactions # noqa: F401 + +__all__ = ["build_equation", "build_equations", "build_reaction", "build_reactions"] diff --git a/pyenzyme/equations/_chem.py b/pyenzyme/equations/chem.py similarity index 100% rename from pyenzyme/equations/_chem.py rename to pyenzyme/equations/chem.py diff --git a/pyenzyme/equations/_math.py b/pyenzyme/equations/math.py similarity index 100% rename from pyenzyme/equations/_math.py rename to pyenzyme/equations/math.py From e3994c59bcc342b094fdab0a645857d1a2a4cbfe Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Wed, 7 May 2025 12:25:40 +0200 Subject: [PATCH 100/172] process name and use as `id` --- pyenzyme/fetcher/chebi.py | 17 +++++++++++- pyenzyme/fetcher/uniprot.py | 16 +++++++++++- tests/integration/test_fetcher.py | 43 ++++++++++++++++++++++++++----- 3 files changed, 68 insertions(+), 8 deletions(-) diff --git a/pyenzyme/fetcher/chebi.py b/pyenzyme/fetcher/chebi.py index 9403a5c5..c5f73857 100644 --- a/pyenzyme/fetcher/chebi.py +++ b/pyenzyme/fetcher/chebi.py @@ -168,6 +168,7 @@ def get_entry_by_id(self, chebi_id: str) -> Union[ChEBIEntity, None]: def fetch_chebi( chebi_id: str, + smallmol_id: Optional[str] = None, vessel_id: Optional[str] = None, ) -> v2.SmallMolecule: """ @@ -190,8 +191,11 @@ def fetch_chebi( raise ValueError(f"No data found for ChEBI ID {chebi_id}") # Create a SmallMolecule instance + if smallmol_id is None: + smallmol_id = process_id(chebi_entity.chebi_ascii_name) + small_molecule = v2.SmallMolecule( - id=chebi_entity.chebi_id.replace(":", "_"), + id=smallmol_id, name=chebi_entity.chebi_ascii_name, canonical_smiles=chebi_entity.smiles, inchi=chebi_entity.inchi, @@ -216,3 +220,14 @@ def fetch_chebi( ) return small_molecule + + +def process_id(name: str) -> str: + """ + Process the ID of a ChEBI entity. + + Replaces special characters and intial non-alpha characters with an underscore. + """ + # Replace non-alphanumeric characters with underscore + # and then replace multiple consecutive underscores with a single one + return re.sub(r"_+", "_", re.sub(r"[^a-zA-Z0-9]+", "_", name)).lower().strip("_") diff --git a/pyenzyme/fetcher/uniprot.py b/pyenzyme/fetcher/uniprot.py index 829c8371..590108b9 100644 --- a/pyenzyme/fetcher/uniprot.py +++ b/pyenzyme/fetcher/uniprot.py @@ -8,6 +8,7 @@ import requests from typing import List, Optional, Union from pydantic import BaseModel, Field +from pyenzyme.fetcher.chebi import process_id from pyenzyme.versions import v2 @@ -111,6 +112,7 @@ def get_entry_by_id(self, uniprot_id: str) -> Union[UniProtEntry, None]: def fetch_uniprot( uniprot_id: str, + protein_id: Optional[str] = None, vessel_id: Optional[str] = None, ) -> v2.Protein: """ @@ -167,8 +169,20 @@ def fetch_uniprot( ].value # Create a Protein instance + if protein_id is None: + if ( + uniprot_entry.protein_description + and uniprot_entry.protein_description.recommended_name + and uniprot_entry.protein_description.recommended_name.full_name + ): + protein_id = process_id( + uniprot_entry.protein_description.recommended_name.full_name.value + ) + else: + protein_id = uniprot_entry.accession + protein = v2.Protein( - id=uniprot_entry.accession, + id=protein_id, name=name, sequence=sequence, organism=organism, diff --git a/tests/integration/test_fetcher.py b/tests/integration/test_fetcher.py index d03e3f2e..aa4ea156 100644 --- a/tests/integration/test_fetcher.py +++ b/tests/integration/test_fetcher.py @@ -8,7 +8,22 @@ class TestFetcher: def test_fetch_chebi_to_small_molecule(self): small_molecule = fetch_chebi("CHEBI:15377") assert small_molecule is not None - assert small_molecule.id == "CHEBI_15377" + assert small_molecule.id == "water" + assert small_molecule.name == "water" + assert small_molecule.canonical_smiles == "[H]O[H]" + assert small_molecule.inchi == "InChI=1S/H2O/h1H2" + assert small_molecule.inchikey == "XLYOFNOQVPJJNP-UHFFFAOYSA-N" + assert small_molecule.ld_id == "OBO:CHEBI_15377" + assert len(small_molecule.references) == 1 + assert ( + small_molecule.references[0] + == "https://www.ebi.ac.uk/chebi/searchId.do?chebiId=CHEBI:15377" + ) + + def test_fetch_chebi_to_small_molecule_with_id(self): + small_molecule = fetch_chebi("CHEBI:15377", smallmol_id="s1") + assert small_molecule is not None + assert small_molecule.id == "s1" assert small_molecule.name == "water" assert small_molecule.canonical_smiles == "[H]O[H]" assert small_molecule.inchi == "InChI=1S/H2O/h1H2" @@ -28,7 +43,23 @@ def test_fetch_uniprot_to_protein(self): protein = fetch_uniprot("P07327") assert protein is not None - assert protein.id == "P07327" + assert protein.id == "alcohol_dehydrogenase_1a" + assert protein.name == "Alcohol dehydrogenase 1A" + assert protein.constant is True + assert protein.ecnumber == "1.1.1.1" + assert protein.organism == "Homo sapiens" + assert protein.organism_tax_id == "9606" + + assert protein.ld_id == "uniprot:P07327" + assert "uniprot:P07327" in protein.ld_type + assert len(protein.references) == 1 + assert protein.references[0] == "https://www.uniprot.org/uniprotkb/P07327" + + def test_fetch_uniprot_to_protein_with_id(self): + protein = fetch_uniprot("P07327", protein_id="p1") + assert protein is not None + + assert protein.id == "p1" assert protein.name == "Alcohol dehydrogenase 1A" assert protein.constant is True assert protein.ecnumber == "1.1.1.1" @@ -49,17 +80,17 @@ def test_fetch_rhea_to_reaction(self): assert reaction is not None assert len(small_molecules) == 2 - assert small_molecules[0].id == "CHEBI_32551" - assert small_molecules[1].id == "CHEBI_32557" + assert small_molecules[0].id == "d_lysinium_1" + assert small_molecules[1].id == "l_lysinium_1" assert reaction.id == "RHEA:22864" assert reaction.name == "RHEA:22864" assert reaction.reversible is True assert len(reaction.species) == 2 - assert reaction.species[0].stoichiometry == 1 + assert reaction.species[0].stoichiometry == -1 assert reaction.species[0].species_id == small_molecules[0].id - assert reaction.species[1].stoichiometry == -1 + assert reaction.species[1].stoichiometry == 1 assert reaction.species[1].species_id == small_molecules[1].id def test_fetch_rhea_to_reaction_invalid_id(self): From a64024f32c53494d42a1b8c2e440e5a2b5fbcbb2 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Wed, 7 May 2025 12:25:50 +0200 Subject: [PATCH 101/172] adapt to changed module names --- tests/unit/test_equations.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/unit/test_equations.py b/tests/unit/test_equations.py index 08105f53..4f27229f 100644 --- a/tests/unit/test_equations.py +++ b/tests/unit/test_equations.py @@ -1,7 +1,7 @@ import pytest -from pyenzyme.equations._chem import build_reaction, build_reactions -from pyenzyme.equations._math import build_equation, build_equations +from pyenzyme.equations.chem import build_reaction, build_reactions +from pyenzyme.equations.math import build_equation, build_equations from pyenzyme import EquationType, EnzymeMLDocument From 999ee2cb26d1cdc73415bb10aa5f93da2a091fea Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Wed, 7 May 2025 16:29:23 +0200 Subject: [PATCH 102/172] remove unsued --- pyenzyme/sbml/parser.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pyenzyme/sbml/parser.py b/pyenzyme/sbml/parser.py index afe85085..207e272f 100644 --- a/pyenzyme/sbml/parser.py +++ b/pyenzyme/sbml/parser.py @@ -8,6 +8,7 @@ import libsbml as sbml # type: ignore import pandas as pd from loguru import logger +import rich import pyenzyme as pe @@ -301,6 +302,7 @@ def _parse_vessel(compartment: sbml.Compartment): Note: The function prints the unit of the compartment for debugging purposes. """ + vessel = pe.Vessel( id=compartment.getId(), name=compartment.getName(), @@ -330,7 +332,6 @@ def _parse_parameter(parameter: sbml.Parameter): Note: The function prints the parameter annotation string for debugging purposes. """ - print("PARAMETER", parameter.getAnnotationString()) parsed = version.parse_annotation(annotation=parameter.getAnnotationString()) annots = version.extract(parsed, "parameter") From 5f5104e074bd89456b67c4ab54c28eb158bae726 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Wed, 7 May 2025 16:29:42 +0200 Subject: [PATCH 103/172] fix sbml tests --- tests/fixtures/sbml/ode_example_enzml.json | 492 +++++---------------- tests/fixtures/sbml/v1_example_enzml.json | 174 ++++---- tests/integration/test_sbml.py | 23 +- 3 files changed, 217 insertions(+), 472 deletions(-) diff --git a/tests/fixtures/sbml/ode_example_enzml.json b/tests/fixtures/sbml/ode_example_enzml.json index 5c242e1c..a4cbfe97 100644 --- a/tests/fixtures/sbml/ode_example_enzml.json +++ b/tests/fixtures/sbml/ode_example_enzml.json @@ -1,41 +1,10 @@ { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "name": "schema:title", - "created": "schema:dateCreated", - "modified": "schema:dateModified", - "creators": "schema:creator", - "references": { - "@id": "schema:citation", - "@type": "@id" - } - }, - "@id": "enzml:EnzymeMLDocument/1a704a60-950e-4fd8-9f5a-ef0a9d8c28b6", - "@type": [ - "enzml:EnzymeMLDocument" - ], "name": "Test", + "created": null, + "modified": null, "creators": [], "vessels": [ { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "name": "schema:name", - "volume": "OBO:OBI_0002139" - }, - "@id": "enzml:Vessel/03ec3ab7-6220-4bfb-924f-05e4a4eae821", - "@type": [ - "enzml:Vessel", - "OBO:OBI_0400081" - ], "id": "v0", "name": "Vessel 1", "volume": 10.0, @@ -56,34 +25,6 @@ ], "proteins": [ { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "name": "schema:name", - "sequence": "OBO:GSSO_007262", - "vessel_id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "organism": "OBO:OBI_0100026", - "organism_tax_id": { - "@type": "@id" - }, - "references": { - "@id": "schema:citation", - "@type": "@id" - } - }, - "@id": "enzml:Protein/f753a055-ecc5-4de8-bf37-2950f8c8c777", - "@type": [ - "enzml:Protein", - "schema:Protein" - ], "id": "p0", "name": "Enzyme", "constant": true, @@ -97,27 +38,6 @@ ], "complexes": [ { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "name": "schema:name", - "vessel_id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "participants": { - "@type": "@id" - } - }, - "@id": "enzml:Complex/03d6a454-f53e-4c0b-9b3a-37e72a2c28a4", - "@type": [ - "enzml:Complex" - ], "id": "c0", "name": "Enzyme-Substrate Complex", "constant": false, @@ -130,64 +50,22 @@ ], "small_molecules": [ { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "name": "schema:name", - "vessel_id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "references": { - "@id": "schema:citation", - "@type": "@id" - } - }, - "@id": "enzml:SmallMolecule/65b0cb5d-795b-4f59-98dc-cbd9c079af58", - "@type": [ - "enzml:SmallMolecule" - ], "id": "s0", "name": "Substrate", "constant": false, "vessel_id": "v0", "canonical_smiles": "CC(=O)O", + "inchi": null, "inchikey": "QTBSBXVTEAMEQO-UHFFFAOYSA-N", "references": [] }, { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "name": "schema:name", - "vessel_id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "references": { - "@id": "schema:citation", - "@type": "@id" - } - }, - "@id": "enzml:SmallMolecule/e4983101-4406-4fd3-bad7-c6b38c4c4ee4", - "@type": [ - "enzml:SmallMolecule" - ], "id": "s1", "name": "Product", "constant": false, "vessel_id": "v0", "canonical_smiles": "CC(=O)O", + "inchi": null, "inchikey": "QTBSBXVTEAMEQO-UHFFFAOYSA-N", "references": [] } @@ -195,62 +73,36 @@ "reactions": [], "measurements": [ { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "group_id": { - "@type": "@id" - } - }, - "@id": "enzml:Measurement/1fc5042e-31a3-41a7-b1c4-b97749385d44", - "@type": [ - "enzml:Measurement" - ], "id": "m0", "name": "m0", "species_data": [ { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - }, - "@id": "enzml:MeasurementData/586efe41-251a-4ee8-9d2d-c1700882bf76", - "@type": [ - "enzml:MeasurementData" - ], "species_id": "s0", "initial": 0.0, "data_unit": { "id": "u6", "name": "mmol / l", "base_units": [ - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - }, { "kind": "litre", "exponent": -1, "multiplier": 1.0, "scale": 0.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 } ] }, "data_type": "concentration", + "prepared": null, "data": [ 0.0, 1.0, + 10.0, 2.0, 3.0, 4.0, @@ -258,12 +110,12 @@ 6.0, 7.0, 8.0, - 9.0, - 10.0 + 9.0 ], "time": [ 0.0, 1.0, + 10.0, 2.0, 3.0, 4.0, @@ -271,8 +123,7 @@ 6.0, 7.0, 8.0, - 9.0, - 10.0 + 9.0 ], "time_unit": { "id": "u7", @@ -289,55 +140,45 @@ "is_simulated": false }, { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - }, - "@id": "enzml:MeasurementData/b9313730-e1a5-42b3-b7d3-f2b8fb3cfe15", - "@type": [ - "enzml:MeasurementData" - ], "species_id": "s1", "initial": 10.0, "data_unit": { - "id": "mmol / l", + "id": "u6", "name": "mmol / l", "base_units": [ - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - }, { "kind": "litre", "exponent": -1, "multiplier": 1.0, "scale": 0.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 } ] }, "data_type": "concentration", + "prepared": null, "data": [ + 0.0, + 1.0, 10.0, - 9.0, - 8.0, - 7.0, - 6.0, - 5.0, - 4.0, - 3.0, 2.0, - 1.0, - 0.0 + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0 ], "time": [ 0.0, 1.0, + 10.0, 2.0, 3.0, 4.0, @@ -345,11 +186,10 @@ 6.0, 7.0, 8.0, - 9.0, - 10.0 + 9.0 ], "time_unit": { - "id": "s", + "id": "u7", "name": "s", "base_units": [ { @@ -363,6 +203,7 @@ "is_simulated": false } ], + "group_id": null, "ph": 7.0, "temperature": 298.15, "temperature_unit": { @@ -379,62 +220,36 @@ } }, { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "group_id": { - "@type": "@id" - } - }, - "@id": "enzml:Measurement/b2e83434-8f96-4d83-b7b0-9024b20b6680", - "@type": [ - "enzml:Measurement" - ], "id": "m1", "name": "m1", "species_data": [ { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - }, - "@id": "enzml:MeasurementData/2a05f1b5-9848-4aaf-a26d-a135b27ff1a5", - "@type": [ - "enzml:MeasurementData" - ], "species_id": "s0", "initial": 0.0, "data_unit": { - "id": "mmol / l", + "id": "u6", "name": "mmol / l", "base_units": [ - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - }, { "kind": "litre", "exponent": -1, "multiplier": 1.0, "scale": 0.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 } ] }, "data_type": "concentration", + "prepared": null, "data": [ 0.0, 1.0, + 10.0, 2.0, 3.0, 4.0, @@ -442,12 +257,12 @@ 6.0, 7.0, 8.0, - 9.0, - 10.0 + 9.0 ], "time": [ 0.0, 1.0, + 10.0, 2.0, 3.0, 4.0, @@ -455,11 +270,10 @@ 6.0, 7.0, 8.0, - 9.0, - 10.0 + 9.0 ], "time_unit": { - "id": "s", + "id": "u7", "name": "s", "base_units": [ { @@ -473,55 +287,45 @@ "is_simulated": false }, { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - }, - "@id": "enzml:MeasurementData/f2a87dc9-b0f9-4f22-a397-e794907c9111", - "@type": [ - "enzml:MeasurementData" - ], "species_id": "s1", "initial": 10.0, "data_unit": { - "id": "mmol / l", + "id": "u6", "name": "mmol / l", "base_units": [ - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - }, { "kind": "litre", "exponent": -1, "multiplier": 1.0, "scale": 0.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 } ] }, "data_type": "concentration", + "prepared": null, "data": [ + 0.0, + 1.0, 10.0, - 9.0, - 8.0, - 7.0, - 6.0, - 5.0, - 4.0, - 3.0, 2.0, - 1.0, - 0.0 + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0 ], "time": [ 0.0, 1.0, + 10.0, 2.0, 3.0, 4.0, @@ -529,11 +333,10 @@ 6.0, 7.0, 8.0, - 9.0, - 10.0 + 9.0 ], "time_unit": { - "id": "s", + "id": "u7", "name": "s", "base_units": [ { @@ -547,10 +350,11 @@ "is_simulated": false } ], + "group_id": null, "ph": 7.0, "temperature": 298.15, "temperature_unit": { - "id": "K", + "id": "u8", "name": "K", "base_units": [ { @@ -565,173 +369,101 @@ ], "equations": [ { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - }, - "@id": "enzml:Equation/de44fa4e-50a9-4aaf-949a-fb15d19c9e2d", - "@type": [ - "enzml:Equation" - ], + "species_id": "E_tot", + "equation": "100", + "equation_type": "initialAssignment", + "variables": [] + }, + { "species_id": "s1", - "equation": "E_tot*kcat*s0/(K_m + s0)", + "equation": "E_tot * kcat * s0 / (K_m + s0)", "equation_type": "ode", "variables": [ { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - }, - "@id": "enzml:Variable/4a0e8a1e-2ae5-4ee8-a27c-dccd11c24bcb", - "@type": [ - "enzml:Variable" - ], "id": "s0", "name": "s0", "symbol": "s0" } ] - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - }, - "@id": "enzml:Equation/bce4cafa-852c-4676-b1c3-e8656308ed64", - "@type": [ - "enzml:Equation" - ], - "species_id": "E_tot", - "equation": "100", - "equation_type": "initialAssignment", - "variables": [] } ], "parameters": [ { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - }, - "@id": "enzml:Parameter/d97938ad-293f-49b9-b663-491f9766b54a", - "@type": [ - "enzml:Parameter" - ], - "id": "K_m", - "name": "K_m", - "symbol": "K_m", + "id": "E_tot", + "name": "E_tot", + "symbol": "E_tot", + "value": null, "unit": { - "id": "mmol / l", + "id": "u6", "name": "mmol / l", "base_units": [ - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - }, { "kind": "litre", "exponent": -1, "multiplier": 1.0, "scale": 0.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 } ] }, + "initial_value": null, "upper_bound": 100.0, "lower_bound": 0.0, "stderr": 0.1, "constant": true }, { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - }, - "@id": "enzml:Parameter/cc63207e-37d7-49d8-a2f9-c1e91106ce61", - "@type": [ - "enzml:Parameter" - ], - "id": "kcat", - "name": "kcat", - "symbol": "kcat", + "id": "K_m", + "name": "K_m", + "symbol": "K_m", + "value": null, "unit": { - "id": "u9", - "name": "1 / s", + "id": "u6", + "name": "mmol / l", "base_units": [ { - "kind": "second", + "kind": "litre", "exponent": -1, "multiplier": 1.0, "scale": 0.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 } ] }, + "initial_value": null, "upper_bound": 100.0, "lower_bound": 0.0, "stderr": 0.1, "constant": true }, { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - }, - "@id": "enzml:Parameter/01ffd21c-0efd-489a-9a4f-ff205c10cf20", - "@type": [ - "enzml:Parameter" - ], - "id": "E_tot", - "name": "E_tot", - "symbol": "E_tot", + "id": "kcat", + "name": "kcat", + "symbol": "kcat", + "value": null, "unit": { - "id": "mmol / l", - "name": "mmol / l", + "id": "u9", + "name": "1 / s", "base_units": [ { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - }, - { - "kind": "litre", + "kind": "second", "exponent": -1, "multiplier": 1.0, "scale": 0.0 } ] }, + "initial_value": null, "upper_bound": 100.0, "lower_bound": 0.0, "stderr": 0.1, diff --git a/tests/fixtures/sbml/v1_example_enzml.json b/tests/fixtures/sbml/v1_example_enzml.json index 3481087b..769ade69 100644 --- a/tests/fixtures/sbml/v1_example_enzml.json +++ b/tests/fixtures/sbml/v1_example_enzml.json @@ -15,7 +15,7 @@ { "kind": "litre", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -2230,13 +2230,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -2281,13 +2281,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -2354,13 +2354,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -2427,13 +2427,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -2500,13 +2500,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -2599,13 +2599,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -2650,13 +2650,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -2723,13 +2723,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -2796,13 +2796,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -2869,13 +2869,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -2968,13 +2968,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -3019,13 +3019,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -3092,13 +3092,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -3165,13 +3165,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -3238,13 +3238,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -3337,13 +3337,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -3388,13 +3388,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -3461,13 +3461,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -3534,13 +3534,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -3607,13 +3607,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -3706,13 +3706,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -3757,13 +3757,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -3830,13 +3830,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -3903,13 +3903,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -3976,13 +3976,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -4075,13 +4075,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -4126,13 +4126,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -4199,13 +4199,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -4272,13 +4272,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -4345,13 +4345,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -4444,13 +4444,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -4495,13 +4495,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -4568,13 +4568,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -4641,13 +4641,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -4714,13 +4714,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -4813,13 +4813,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -4864,13 +4864,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -4937,13 +4937,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -5010,13 +5010,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -5083,13 +5083,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -5183,13 +5183,13 @@ { "kind": "litre", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 }, { @@ -5231,13 +5231,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] @@ -5273,13 +5273,13 @@ { "kind": "litre", "exponent": -1, - "multiplier": null, + "multiplier": 1.0, "scale": 1.0 }, { "kind": "mole", "exponent": 1, - "multiplier": null, + "multiplier": 1.0, "scale": -3.0 } ] diff --git a/tests/integration/test_sbml.py b/tests/integration/test_sbml.py index cd79aaf3..27d20b8f 100644 --- a/tests/integration/test_sbml.py +++ b/tests/integration/test_sbml.py @@ -1,6 +1,10 @@ +import json import tempfile from pathlib import Path +from pydantic import BaseModel +import rich + import pyenzyme as pe import pyenzyme.equations as peq from pyenzyme.tools import to_dict_wo_json_ld, get_all_parameters @@ -20,11 +24,6 @@ def test_parse_sbml_odes(self): pe.read_enzymeml("tests/fixtures/sbml/ode_example_enzml.json") ) - # Remove spaces of equation - for eq in parsed_doc["equations"]: - eq["equation"] = eq["equation"].replace(" * ", "*") - eq["equation"] = eq["equation"].replace(" / ", "/") - assert parsed_doc == expected_doc, ( "Parsed document does not match expected document" ) @@ -129,6 +128,8 @@ def test_end_to_end(self): enzmldoc = pe.from_sbml(path) # Assert + self.set_unit_name_as_id(enzmldoc) + parsed_doc = to_dict_wo_json_ld(enzmldoc) expected_doc = to_dict_wo_json_ld(doc) @@ -140,3 +141,15 @@ def test_end_to_end(self): assert parsed_doc == expected_doc, ( "Parsed document does not match expected document" ) + + def set_unit_name_as_id(self, obj): + for key, value in obj: + print(key, value) + if isinstance(value, pe.UnitDefinition): + value.id = value.name + elif isinstance(value, BaseModel): + self.set_unit_name_as_id(value) + elif isinstance(value, list): + for item in value: + if isinstance(item, BaseModel): + self.set_unit_name_as_id(item) From ecd419faea8431c64720fe40a4b5bacc1be5d3db Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Wed, 7 May 2025 16:42:29 +0200 Subject: [PATCH 104/172] fix ruff issues --- pyenzyme/sbml/parser.py | 1 - tests/integration/test_sbml.py | 2 -- 2 files changed, 3 deletions(-) diff --git a/pyenzyme/sbml/parser.py b/pyenzyme/sbml/parser.py index 207e272f..80c22449 100644 --- a/pyenzyme/sbml/parser.py +++ b/pyenzyme/sbml/parser.py @@ -8,7 +8,6 @@ import libsbml as sbml # type: ignore import pandas as pd from loguru import logger -import rich import pyenzyme as pe diff --git a/tests/integration/test_sbml.py b/tests/integration/test_sbml.py index 27d20b8f..b6eff1ac 100644 --- a/tests/integration/test_sbml.py +++ b/tests/integration/test_sbml.py @@ -1,9 +1,7 @@ -import json import tempfile from pathlib import Path from pydantic import BaseModel -import rich import pyenzyme as pe import pyenzyme.equations as peq From fc75d20673a15027667638b869f84a293afef3ee Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 9 May 2025 01:56:44 +0200 Subject: [PATCH 105/172] add sepc submod --- specs | 1 + 1 file changed, 1 insertion(+) create mode 160000 specs diff --git a/specs b/specs new file mode 160000 index 00000000..95b520a9 --- /dev/null +++ b/specs @@ -0,0 +1 @@ +Subproject commit 95b520a9d7144f23584e4f84dfd25ae94167efb2 From e6f5d3db0c6f415dea750def25041c1cb386e038 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 9 May 2025 01:57:05 +0200 Subject: [PATCH 106/172] add pubchem fetcher --- pyenzyme/fetcher/pubchem.py | 271 ++++++++++++++++++++++++++++++++++++ 1 file changed, 271 insertions(+) create mode 100644 pyenzyme/fetcher/pubchem.py diff --git a/pyenzyme/fetcher/pubchem.py b/pyenzyme/fetcher/pubchem.py new file mode 100644 index 00000000..80de8d2a --- /dev/null +++ b/pyenzyme/fetcher/pubchem.py @@ -0,0 +1,271 @@ +from typing import ClassVar, Optional +from pydantic import BaseModel, Field, field_validator +import requests + +from pyenzyme.fetcher.chebi import process_id +from pyenzyme.versions import v2 + + +class PCUrn(BaseModel): + """ + Represents a PubChem URN (Uniform Resource Name) with a label and optional name. + """ + + label: str + name: Optional[str] = Field(default=None) + + +class PCProp(BaseModel): + """ + Represents a PubChem property with a value and URN. + + The value can be of different types (float, int, str, or None) and is extracted + from one of the available fields in the PubChem JSON response. + """ + + value: float | int | str | None = Field(default=None) + urn: PCUrn + + AVAILABLE_FIELDS: ClassVar[list[str]] = ["ival", "sval", "fval", "bval"] + + @field_validator("value", mode="before") + def validate_value(cls, v): + """ + Extracts the actual value from the PubChem property structure. + + PubChem properties can have different value types (ival, sval, fval, bval), + and this validator extracts the appropriate value. + + Args: + v: The raw value dictionary from PubChem + + Returns: + The extracted value or None if no valid field is found + """ + for field in cls.AVAILABLE_FIELDS: + if field in v: + return v[field] + return None + + +class PCCompound(BaseModel): + """ + Represents a PubChem compound with a list of properties. + """ + + props: list[PCProp] + + +class PubChemQuery(BaseModel): + """ + Represents a PubChem query response containing a list of compounds. + """ + + pc_compounds: list[PCCompound] = Field(alias="PC_Compounds", default_factory=list) + + +class PubChemClient(BaseModel): + """ + Client for interacting with the PubChem REST API. + + Provides methods to fetch compound data by CID and extract specific properties. + """ + + BASE_CID_URL: ClassVar[str] = ( + "https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/{0}/record/JSON" + ) + + @staticmethod + def from_cid(cid: int) -> PubChemQuery: + """ + Fetches compound data from PubChem by CID. + + Args: + cid: The PubChem Compound ID + + Returns: + A PubChemQuery object containing the compound data + + Raises: + ValueError: If the PubChem API request fails + """ + url = PubChemClient.BASE_CID_URL.format(cid) + response = requests.get(url) + + if response.status_code != 200: + raise ValueError(f"Failed to fetch PubChem data for CID {cid}") + + return PubChemQuery(**response.json()) + + @staticmethod + def extract_value( + query: PCCompound, + label: str, + name: Optional[str] = None, + ) -> float | int | str | None: + """ + Extracts a specific property value from a PubChem compound. + + Args: + query: The PubChem compound + label: The property label to search for + name: Optional property name to further filter the search + + Returns: + The property value if found, or None otherwise + """ + for prop in query.props: + if name: + if prop.urn.name == name and prop.urn.label == label: + return prop.value + elif prop.urn.label == label: + return prop.value + return None + + @staticmethod + def extract_by_preference( + query: PCCompound, label: str, names: list[str] + ) -> float | int | str | None: + """ + Extracts a property value by trying a list of names in order of preference. + + Args: + query: The PubChem compound + label: The property label to search for + names: A list of property names to try in order of preference + + Returns: + The first non-None property value found, or None if none are found + """ + for name in names: + value = PubChemClient.extract_value(query, label, name) + if value: + return value + return None + + +def fetch_pubchem( + cid: int, + smallmol_id: Optional[str] = None, + vessel_id: Optional[str] = None, +) -> v2.SmallMolecule: + """ + Fetches a compound from PubChem by CID and converts it to a SmallMolecule object. + + Args: + cid: The PubChem Compound ID + smallmol_id: Optional custom ID for the small molecule + vessel_id: Optional vessel ID for the small molecule + + Returns: + A SmallMolecule object with data from PubChem + + Raises: + ValueError: If the PubChem API request fails or required data is missing + """ + query = PubChemClient.from_cid(cid) + pc_compound = query.pc_compounds[0] + name = _extract_name(pc_compound, cid) + + if not smallmol_id: + smallmol_id = process_id(name) + + smallmol = v2.SmallMolecule( + id=smallmol_id, + name=name, + inchi=_extract_inchi(pc_compound), + inchikey=_extract_inchikey(pc_compound), + canonical_smiles=_extract_canonical_smiles(pc_compound), + constant=False, + vessel_id=vessel_id, + ) + + smallmol.add_type_term( + term=f"pubchem:CID{cid}", + prefix="pubchem", + iri="http://rdf.ncbi.nlm.nih.gov/pubchem/compound/", + ) + + smallmol.ld_id = f"pubchem:CID{cid}" + + return smallmol + + +def _extract_name(query: PCCompound, cid: int) -> str: + """ + Extracts the name of a compound from PubChem data. + + Tries different IUPAC name types in order of preference. + + Args: + query: The PubChem compound + cid: The PubChem Compound ID (used for error reporting) + + Returns: + The compound name as a string + + Raises: + ValueError: If no name is found + """ + names = ["Preferred", "Systematic", "Allowed", "CAS-like Style", "Markup"] + name = PubChemClient.extract_by_preference( + query=query, + label="IUPAC Name", + names=names, + ) + + if not name: + raise ValueError(f"No name found for CID {cid}") + else: + return str(name) + + +def _extract_inchi(query: PCCompound) -> str | None: + """ + Extracts the InChI string from PubChem data. + + Args: + query: The PubChem compound + + Returns: + The InChI string or None if not found + """ + inchi = PubChemClient.extract_value(query, "InChI") + if not inchi: + return None + else: + return str(inchi) + + +def _extract_inchikey(query: PCCompound) -> str | None: + """ + Extracts the InChIKey from PubChem data. + + Args: + query: The PubChem compound + + Returns: + The InChIKey string or None if not found + """ + inchikey = PubChemClient.extract_value(query, "InChIKey") + if not inchikey: + return None + else: + return str(inchikey) + + +def _extract_canonical_smiles(query: PCCompound) -> str | None: + """ + Extracts the canonical SMILES string from PubChem data. + + Args: + query: The PubChem compound + + Returns: + The canonical SMILES string or None if not found + """ + smiles = PubChemClient.extract_value(query, "SMILES") + if not smiles: + return None + else: + return str(smiles) From eb9fc1202915e4c109b7ac5591234409cffd483d Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 9 May 2025 01:57:58 +0200 Subject: [PATCH 107/172] adapt to new version --- pyenzyme/equations/chem.py | 51 +- pyenzyme/fetcher/rhea.py | 12 +- pyenzyme/sbml/parser.py | 42 +- pyenzyme/sbml/serializer.py | 81 +- pyenzyme/sbml/versions/handler.py | 4 +- pyenzyme/sbml/versions/v2.py | 18 +- pyenzyme/tools.py | 3 +- pyenzyme/versions/io.py | 43 +- tests/fixtures/modeling/enzmldoc.json | 5395 ++++++++ tests/fixtures/sbml/ode_example_enzml.json | 920 +- .../fixtures/sbml/reaction_example_enzml.json | 1800 +-- tests/fixtures/sbml/v1_example_enzml.json | 10394 ++++++++-------- tests/integration/test_enzymeml.py | 92 + tests/integration/test_fetcher.py | 32 +- tests/unit/test_equations.py | 25 +- 15 files changed, 12289 insertions(+), 6623 deletions(-) create mode 100644 tests/fixtures/modeling/enzmldoc.json create mode 100644 tests/integration/test_enzymeml.py diff --git a/pyenzyme/equations/chem.py b/pyenzyme/equations/chem.py index f94e5e07..6d20c5a1 100644 --- a/pyenzyme/equations/chem.py +++ b/pyenzyme/equations/chem.py @@ -2,22 +2,11 @@ from enum import Enum from pyenzyme import Equation, ReactionElement, Reaction +from pyenzyme.versions.v2 import ModifierElement, ModifierRole ELEMENT_PATTERN = r"(\d*)\s?([A-Za-z\d]+)" -class EquationSide(Enum): - """Enum representing the side of a chemical equation. - - Attributes: - LEFT: Represents the left side of the equation (reactants) with value -1. - RIGHT: Represents the right side of the equation (products) with value 1. - """ - - LEFT = -1 - RIGHT = 1 - - class EqDirection(Enum): """Enum for the type of reaction. @@ -70,7 +59,21 @@ def build_reactions( except StopIteration: raise ValueError(f"Reaction with id {id} not found in list of reactions") - reaction.modifiers = modifier + if isinstance(modifier, list): + reaction.modifiers = [ + ModifierElement( + species_id=m, + role=ModifierRole.CATALYST, + ) + for m in modifier + ] + else: + reaction.modifiers = [ + ModifierElement( + species_id=modifier, + role=ModifierRole.CATALYST, + ) + ] return reactions @@ -110,14 +113,21 @@ def build_reaction( left, right, reversible = _extract_left_right(scheme) # Initialize and build the reaction object + mod_objs = [ + ModifierElement( + species_id=m, + role=ModifierRole.CATALYST, + ) + for m in modifiers + ] reaction = Reaction( name=name, id=id, reversible=reversible, - modifiers=modifiers, + modifiers=mod_objs, ) - reaction.species += _extract_elements(left, EquationSide.LEFT) - reaction.species += _extract_elements(right, EquationSide.RIGHT) + reaction.reactants += _extract_elements(left) + reaction.products += _extract_elements(right) return reaction @@ -151,12 +161,11 @@ def _extract_left_right(reaction: str) -> tuple[str, str, bool]: return left.strip(), right.strip(), direction.value -def _extract_elements(side_string: str, side: EquationSide) -> list[ReactionElement]: +def _extract_elements(side_string: str) -> list[ReactionElement]: """Extracts the elements from a reaction string. Args: side_string (str): The string representing one side of the reaction (e.g., "2A + B") - side (EquationSide): Enum indicating whether this is the left or right side of the equation Returns: list[ReactionElement]: A list of ReactionElement objects representing the species and their stoichiometries @@ -166,7 +175,7 @@ def _extract_elements(side_string: str, side: EquationSide) -> list[ReactionElem element = re.search(ELEMENT_PATTERN, element.strip()) stoich, species = element.groups() # type: ignore - elements.append(_create_reaction_element(stoich, species, side)) + elements.append(_create_reaction_element(stoich, species)) return elements @@ -174,14 +183,12 @@ def _extract_elements(side_string: str, side: EquationSide) -> list[ReactionElem def _create_reaction_element( stoich: str | float, species: str, - side: EquationSide, ) -> ReactionElement: """Creates a ReactionElement object from stoichiometry, species ID, and equation side. Args: stoich (str | float): The stoichiometric coefficient (can be a string or float) species (str): The species ID - side (EquationSide): The side of the equation (LEFT or RIGHT) Returns: ReactionElement: A ReactionElement object with the appropriate stoichiometry and species ID @@ -195,6 +202,6 @@ def _create_reaction_element( stoich = 1.0 return ReactionElement( - stoichiometry=float(stoich) * side.value, + stoichiometry=float(stoich), species_id=species, ) diff --git a/pyenzyme/fetcher/rhea.py b/pyenzyme/fetcher/rhea.py index 011e815d..c6edac1d 100644 --- a/pyenzyme/fetcher/rhea.py +++ b/pyenzyme/fetcher/rhea.py @@ -169,7 +169,8 @@ def fetch_rhea( n_products = len(equation.split("=")[1].split("+")) small_molecules = [] - species = [] + reactants = [] + products = [] # Process each chemical species in the reaction for i in range(n_reactants + n_products): @@ -184,18 +185,19 @@ def fetch_rhea( species_id=small_molecule.id, stoichiometry=1, ) + reactants.append(reaction_element) else: reaction_element = v2.ReactionElement( species_id=small_molecule.id, - stoichiometry=-1, + stoichiometry=1, ) - - species.append(reaction_element) + products.append(reaction_element) reaction = v2.Reaction( id=f"RHEA:{client.json_content.id}", name=f"RHEA:{rhea_id}", - species=species, + reactants=reactants, + products=products, reversible=client.json_content.balanced, ) diff --git a/pyenzyme/sbml/parser.py b/pyenzyme/sbml/parser.py index 80c22449..592c5f23 100644 --- a/pyenzyme/sbml/parser.py +++ b/pyenzyme/sbml/parser.py @@ -436,15 +436,12 @@ def _parse_reaction(reaction: sbml.Reaction): Returns: An EnzymeML reaction with properties extracted from the SBML reaction. """ - # Get the reactants and products - products = [_parse_element(product, 1) for product in reaction.getListOfProducts()] - reactants = [ - _parse_element(reactant, -1) for reactant in reaction.getListOfReactants() + products = [_parse_element(product) for product in reaction.getListOfProducts()] + reactants = [_parse_element(reactant) for reactant in reaction.getListOfReactants()] + modifiers = [ + _parse_modifier(modifier) for modifier in reaction.getListOfModifiers() ] - # Get the modifiers - modifiers = [modifier.getSpecies() for modifier in reaction.getListOfModifiers()] - # Get the kinetic law kinetic_law = _parse_equation(reaction.getKineticLaw(), pe.EquationType.RATE_LAW) @@ -452,7 +449,8 @@ def _parse_reaction(reaction: sbml.Reaction): enzml_reaction = pe.Reaction( id=reaction.getId(), name=reaction.getName(), - species=reactants + products, + reactants=reactants, + products=products, modifiers=modifiers, kinetic_law=kinetic_law, ) @@ -460,7 +458,7 @@ def _parse_reaction(reaction: sbml.Reaction): return enzml_reaction -def _parse_element(species, direction: int): +def _parse_element(species: sbml.SpeciesReference): """ Parse a species element from an SBML model into an EnzymeML reaction element. @@ -469,14 +467,36 @@ def _parse_element(species, direction: int): Args: species: The SBML species element (SpeciesReference). - direction (int): The direction of the reaction (1 for product, -1 for reactant). Returns: An EnzymeML reaction element with the species ID and stoichiometry. """ return pe.ReactionElement( species_id=species.getSpecies(), - stoichiometry=species.getStoichiometry() * direction, + stoichiometry=species.getStoichiometry(), + ) + + +def _parse_modifier(modifier: sbml.SpeciesReference): + """ + Parse a modifier from an SBML model into an EnzymeML modifier. + + This function extracts information from an SBML modifier and creates an equivalent + EnzymeML modifier entity. + + Args: + modifier (sbml.SpeciesReference): The SBML modifier. + + Returns: + An EnzymeML modifier with properties extracted from the SBML modifier. + """ + parsed = version.parse_annotation(annotation=modifier.getAnnotationString()) + annots = version.extract(parsed, "modifier") + + return pe.ModifierElement( + species_id=modifier.getSpecies(), + role=pe.ModifierRole.CATALYST, + **annots, ) diff --git a/pyenzyme/sbml/serializer.py b/pyenzyme/sbml/serializer.py index 2ce10c28..81780248 100644 --- a/pyenzyme/sbml/serializer.py +++ b/pyenzyme/sbml/serializer.py @@ -28,7 +28,7 @@ def to_sbml( enzmldoc: pe.EnzymeMLDocument, out: Path | str | None = None, verbose: bool = False, -) -> tuple[str, pd.DataFrame] | None: +) -> tuple[str, pd.DataFrame | None]: """This function converts an EnzymeML document to an SBML document. The systems biology markup language (SBML) is a machine-readable format for @@ -48,7 +48,7 @@ def to_sbml( verbose (bool, optional): Whether to print warnings during SBML validation. Defaults to False. Returns: - tuple[str, pd.DataFrame] | None: The SBML document as a string and a DataFrame with the RDF triples. + tuple[str, pd.DataFrame]: The SBML document as a string and a DataFrame with the RDF triples. Raises: ValueError: If the EnzymeML document is not valid for SBML export. @@ -92,25 +92,26 @@ def to_sbml( for parameter in enzmldoc.parameters: _add_parameter(parameter) - if out is None: - return libsbml.writeSBMLToString(sbmldoc), to_pandas(doc) # type: ignore - if isinstance(out, str): out = Path(out) - if out.is_dir(): + if out and out.is_dir(): out = out / "enzymeml_doc.omex" - else: + elif out: out = out.with_suffix(".omex") - _validate_sbml(sbmldoc) - create_sbml_omex( - sbml_doc=libsbml.writeSBMLToString(sbmldoc), - data=to_pandas(doc), - out=out, - ) + xml_string = libsbml.writeSBMLToString(sbmldoc) + + if out: + _validate_sbml(sbmldoc) + create_sbml_omex( + sbml_doc=libsbml.writeSBMLToString(sbmldoc), + data=to_pandas(doc), + out=out, + ) + logger.info(f"OMEX archive written to {out}") - logger.info(f"OMEX archive written to {out}") + return xml_string, to_pandas(doc) def convert_unit_classes(doc: pe.EnzymeMLDocument, custom_units: list[UnitDefinition]): @@ -312,28 +313,47 @@ def _add_reaction(reaction: pe.Reaction, index: int): sbml_reaction.setId(reaction.id) sbml_reaction.setReversible(reaction.reversible) - for species in reaction.species: - assert species.stoichiometry, f"Stoichiometry of species {species} is not set" + # Map reactants + for element in reaction.reactants: + _add_reaction_element(element, sbml_reaction.createReactant) - species_ref = _get_create_fun( - species.stoichiometry, - sbml_reaction, - species.species_id, - )() - - species_ref.initDefaults() - species_ref.setConstant(True) - species_ref.setSpecies(species.species_id) - species_ref.setStoichiometry(abs(species.stoichiometry)) + # Map products + for element in reaction.products: + _add_reaction_element(element, sbml_reaction.createProduct) for modifier in reaction.modifiers: modifier_ref = sbml_reaction.createModifier() - modifier_ref.setSpecies(modifier) + modifier_ref.setSpecies(modifier.species_id) + + annot = v2.ModifierAnnot( + modifier_role=modifier.role.name, + ) + + if not annot.is_empty(): + modifier_ref.setAnnotation(annot.to_xml(encoding="unicode")) if reaction.kinetic_law: _add_rate_law(reaction.kinetic_law, sbml_reaction) +def _add_reaction_element( + element: pe.ReactionElement, create_fun: Callable[[], libsbml.SpeciesReference] +): + """ + Add a reaction element to the SBML reaction. + + Args: + element (pe.ReactionElement): The reaction element to add. + create_fun (Callable[[], libsbml.SpeciesReference]): The function to create the species reference. + """ + + species_ref = create_fun() + species_ref.initDefaults() + species_ref.setConstant(True) + species_ref.setSpecies(element.species_id) + species_ref.setStoichiometry(abs(element.stoichiometry)) + + def _add_rate_law(equation: pe.Equation, reac: libsbml.Reaction): """ Add rate laws to the SBML Reaction. @@ -475,10 +495,15 @@ def _add_measurements(measurements: list[pe.Measurement]): ) for species_data in measurement.species_data: + if species_data.data_type is None: + data_type = None + else: + data_type = species_data.data_type.name + species_annot = v2.SpeciesDataAnnot( species_id=species_data.species_id, initial=species_data.initial, - type=species_data.data_type.name, + type=data_type, unit=_get_unit_id(species_data.data_unit), # type: ignore ) diff --git a/pyenzyme/sbml/versions/handler.py b/pyenzyme/sbml/versions/handler.py index e44dfffc..93067447 100644 --- a/pyenzyme/sbml/versions/handler.py +++ b/pyenzyme/sbml/versions/handler.py @@ -7,8 +7,8 @@ class SupportedVersions(Enum): - VERSION1: str = "http://sbml.org/enzymeml/version2" - VERSION2: str = "https://www.enzymeml.org/v2" + VERSION1 = "http://sbml.org/enzymeml/version2" + VERSION2 = "https://www.enzymeml.org/v2" class VersionHandler(BaseModel): diff --git a/pyenzyme/sbml/versions/v2.py b/pyenzyme/sbml/versions/v2.py index 3daba966..f35d6069 100644 --- a/pyenzyme/sbml/versions/v2.py +++ b/pyenzyme/sbml/versions/v2.py @@ -158,6 +158,21 @@ class ComplexAnnot( ) +class ModifierAnnot( + BaseAnnot, + tag="modifier", + nsmap={"": "https://www.enzymeml.org/v2"}, + search_mode="unordered", +): + """ + Represents the annotation for a modifier in the EnzymeML format. + + This class describes the modifier of a reaction, including its ID and name. + """ + + modifier_role: str = attr(name="modifierRole") + + class DataAnnot( BaseAnnot, tag="data", @@ -394,7 +409,7 @@ class SpeciesDataAnnot( """ species_id: str = attr(name="species") - initial: float = attr(name="value", default=0.0) + initial: float | None = attr(name="value", default=None) type: str | None = attr(name="type", default="CONCENTRATION") unit: str = attr(name="unit") @@ -536,6 +551,7 @@ class VariableAnnot( TemperatureAnnot, ParameterAnnot, VariablesAnnot, + ModifierAnnot, VariableAnnot, V2Annotation, ]: diff --git a/pyenzyme/tools.py b/pyenzyme/tools.py index ee644ce1..c7193b51 100644 --- a/pyenzyme/tools.py +++ b/pyenzyme/tools.py @@ -1,6 +1,7 @@ import functools as ft import importlib.resources as pkg_resources from enum import Enum +import json import toml @@ -22,7 +23,7 @@ def to_dict_wo_json_ld(enzmldoc: pe.EnzymeMLDocument): dict: The EnzymeMLDocument with JSON-LD fields removed. """ - doc = enzmldoc.model_dump() + doc = json.loads(enzmldoc.model_dump_json()) _recursive_key_removal(doc, "ld_id") _recursive_key_removal(doc, "ld_type") _recursive_key_removal(doc, "ld_context") diff --git a/pyenzyme/versions/io.py b/pyenzyme/versions/io.py index f9eb11ba..098007e9 100644 --- a/pyenzyme/versions/io.py +++ b/pyenzyme/versions/io.py @@ -106,15 +106,18 @@ def write_enzymeml( def to_sbml( cls, enzmldoc: v2.EnzymeMLDocument, - path: Path | str, - ) -> None: # noqa: F405 + path: Path | str | None = None, + ) -> tuple[str, pd.DataFrame | None]: # noqa: F405 """Convert an EnzymeML document to SBML format and write to a file. Args: enzmldoc: The EnzymeML document to convert path: Path to write the SBML document to + + Returns: + Tuple of the SBML document and the measurement data, or None if path is None """ - to_sbml(enzmldoc, path) + return to_sbml(enzmldoc, path) @classmethod def from_sbml( @@ -135,7 +138,8 @@ def from_sbml( def to_pandas( cls, enzmldoc: v2.EnzymeMLDocument, - ) -> pd.DataFrame | None: # noqa: F405 + per_measurement: bool = False, + ) -> pd.DataFrame | dict[str, pd.DataFrame]: # noqa: F405 """Convert an EnzymeML document to a pandas DataFrame. Args: @@ -144,7 +148,15 @@ def to_pandas( Returns: DataFrame containing the measurement data, or None if no measurements exist """ - return to_pandas(enzmldoc) + df = to_pandas(enzmldoc) + + if per_measurement and df is not None: + return split_by_measurement(df) + + if df is None: + return pd.DataFrame() + + return df @classmethod def from_csv( @@ -235,3 +247,24 @@ def _pattern(s: str): return 2 else: return 3 + + +def split_by_measurement(df: pd.DataFrame) -> dict[str, pd.DataFrame]: + """Split a pandas DataFrame by measurement ID. + + Args: + df: DataFrame to split + + Returns: + Dictionary of DataFrames, keyed by measurement ID + """ + measurement_dfs = {} + for measurement_id in df["id"].unique(): + measurement = df[df["id"] == measurement_id].reset_index(drop=True) + + # Remove ID column + measurement = measurement.drop(columns=["id"]) + + measurement_dfs[measurement_id] = measurement + + return measurement_dfs diff --git a/tests/fixtures/modeling/enzmldoc.json b/tests/fixtures/modeling/enzmldoc.json new file mode 100644 index 00000000..83f51fc5 --- /dev/null +++ b/tests/fixtures/modeling/enzmldoc.json @@ -0,0 +1,5395 @@ +{ + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "name": "schema:title", + "created": "schema:dateCreated", + "modified": "schema:dateModified", + "creators": "schema:creator", + "references": { + "@id": "schema:citation", + "@type": "@id" + } + }, + "@id": "enzml:EnzymeMLDocument/06f53b15-4c29-4239-b3e3-c2ccc90e5450", + "@type": [ + "enzml:EnzymeMLDocument" + ], + "name": "ABTS measurement", + "creators": [], + "vessels": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "volume": "OBO:OBI_0002139" + }, + "@id": "enzml:Vessel/be811657-da23-4581-9424-132294f9e988", + "@type": [ + "enzml:Vessel", + "OBO:OBI_0400081" + ], + "id": "vessel", + "name": "vessel", + "volume": 1.0, + "unit": { + "id": "ml", + "name": "ml", + "base_units": [ + { + "kind": "litre", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "constant": true + } + ], + "proteins": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "sequence": "OBO:GSSO_007262", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "organism": "OBO:OBI_0100026", + "organism_tax_id": { + "@type": "@id" + }, + "references": { + "@id": "schema:citation", + "@type": "@id" + } + }, + "@id": "enzml:Protein/44ac6865-7645-4f63-bf9f-46c144091b0c", + "@type": [ + "enzml:Protein", + "OBO:PR_000000001" + ], + "id": "slac", + "name": "slac", + "constant": false, + "vessel_id": "vessel", + "references": [] + } + ], + "complexes": [], + "small_molecules": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "references": { + "@id": "schema:citation", + "@type": "@id" + } + }, + "@id": "enzml:SmallMolecule/c59d203d-24b0-44f9-8bb3-c9af95d4652c", + "@type": [ + "enzml:SmallMolecule" + ], + "id": "abts", + "name": "abts", + "constant": false, + "vessel_id": "vessel", + "references": [] + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "references": { + "@id": "schema:citation", + "@type": "@id" + } + }, + "@id": "enzml:SmallMolecule/141c2fb0-79a8-4e4f-9f6c-648a50ce5228", + "@type": [ + "enzml:SmallMolecule" + ], + "id": "buffer", + "name": "buffer", + "constant": false, + "vessel_id": "vessel", + "references": [] + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "references": { + "@id": "schema:citation", + "@type": "@id" + } + }, + "@id": "enzml:SmallMolecule/23b1df03-0d5b-4665-b553-696e7151070f", + "@type": [ + "enzml:SmallMolecule" + ], + "id": "abts_radical", + "name": "abts_radical", + "constant": false, + "vessel_id": "vessel", + "references": [] + } + ], + "reactions": [], + "measurements": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + }, + "@id": "enzml:Measurement/74d2b907-0e8f-4ac4-97f3-bd8eace6e04e", + "@type": [ + "enzml:Measurement" + ], + "id": "measurement0", + "name": "measurement0 - A2", + "species_data": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/40f06e2e-d0e8-4baf-ad17-a949f3964617", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "buffer", + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/05da96a5-3c8c-496e-a891-1bc03f58d8f6", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "slac", + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/14f534d8-237a-4cd5-b8b2-2f53c042c304", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts", + "initial": 4.372881218445347, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [ + 4.372881218445347, + 4.051411953466072, + 3.9623896954718116, + 3.640920430492537, + 3.482658638502741, + 3.230428907519002, + 3.116678244526336, + 3.00292758153367, + 2.8051003415464244, + 2.6171644635585407, + 2.458902671568744 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/6885787d-8b48-4268-81f0-35374acbdfb8", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts_radical", + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + } + ] + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + }, + "@id": "enzml:Measurement/46fe3dd3-1722-4acd-a906-457e79e057a5", + "@type": [ + "enzml:Measurement" + ], + "id": "measurement1", + "name": "measurement0 - B2", + "species_data": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/9a5acdea-11b6-46b9-8573-cd00cf81b14b", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "buffer", + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/d1f6973c-b4b1-42b3-8427-efa9bd9b58ed", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "slac", + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/f9bb3862-962d-434d-8aad-de5202080767", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts", + "initial": 4.595436863430999, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [ + 4.595436863430999, + 4.595436863430999, + 4.550925734433868, + 4.160216935459058, + 3.507387043501147, + 3.3145054845135817, + 3.428256147506248, + 3.3145054845135817, + 3.3145054845135817, + 3.185917778521872, + 2.9732534955355834 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/80b8be26-4add-4d00-80b4-7c4174b6dc6b", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts_radical", + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + } + ] + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + }, + "@id": "enzml:Measurement/925973d4-934b-436f-9fd2-cabefb16277d", + "@type": [ + "enzml:Measurement" + ], + "id": "measurement2", + "name": "measurement0 - C2", + "species_data": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/70d507ca-7eea-4d9a-925f-dc116a123a97", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "buffer", + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/dbc5b219-cc6e-4d30-a5f6-b408e4e8d605", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "slac", + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/8ce69d65-5a0e-4797-8235-9ccc851ee749", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts", + "initial": 4.397609623443753, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [ + 4.397609623443753, + 4.1701082974584205, + 3.937661290473406, + 3.6656488354909427, + 3.4925500005021024, + 3.166135054523147, + 2.993036219534307, + 2.844665789543873, + 2.6418928685569467, + 2.5281422055642806, + 2.364934732574802 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/49a66924-d646-4178-8ec2-f88421549b03", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts_radical", + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + } + ] + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + }, + "@id": "enzml:Measurement/2c9bf0fd-2060-486a-b6b9-849a0898050c", + "@type": [ + "enzml:Measurement" + ], + "id": "measurement3", + "name": "measurement1 - A3", + "species_data": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/11e93685-de16-4cf1-9057-7e574909108c", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "buffer", + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/73a7625d-1fd4-4540-aef4-6a8bba75b198", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "slac", + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/cc7f157c-ee3d-48d5-8e64-2aad4868e78f", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts", + "initial": 9.288888132128404, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [ + 9.288888132128404, + 8.700352093166348, + 8.245349441195682, + 7.780455427225656, + 7.340289818254034, + 6.939689657279861, + 6.5737092633034555, + 6.227511593325777, + 6.039575715337892, + 5.7972373463535165, + 5.465876719374879 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/4b355b09-85f7-49c3-87e6-6d2eeecc0d3b", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts_radical", + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + } + ] + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + }, + "@id": "enzml:Measurement/ce1c3d0e-8e8f-4311-a8ac-b819124a4a09", + "@type": [ + "enzml:Measurement" + ], + "id": "measurement4", + "name": "measurement1 - B3", + "species_data": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/b4d8c3de-f6c9-4c2b-bb22-de76d6d8c012", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "buffer", + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/90f76841-1f82-459d-a3f9-7fc78c915058", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "slac", + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/d6501b64-efdd-41ac-a3d0-a0c1d50f72f2", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts", + "initial": 9.194920193134463, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [ + 9.194920193134463, + 8.631112559170813, + 8.161272864201104, + 7.760672703226931, + 7.350181180253396, + 6.949581019279223, + 6.613274711300906, + 6.281914084322269, + 5.9851732243414, + 5.7428348553570245, + 5.4906051243732845 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/a3661d07-b270-4a84-9e01-c6e94ba65edc", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts_radical", + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + } + ] + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + }, + "@id": "enzml:Measurement/ee4fb4b4-01f2-4410-9bc7-9e9c01631c57", + "@type": [ + "enzml:Measurement" + ], + "id": "measurement5", + "name": "measurement1 - C3", + "species_data": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/db66b696-d14c-462e-9b0a-34ac606cb022", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "buffer", + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/9f97eba7-80ce-4e0e-8b31-46dd9e5f4625", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "slac", + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/87283bcf-789d-4e38-ae5c-bf50771751a0", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts", + "initial": 9.13557202113829, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [ + 9.13557202113829, + 8.680569369167623, + 8.289860570192813, + 7.864532004220235, + 7.4540404812467, + 7.1127884922687015, + 7.038603277273484, + 6.529198134306326, + 6.474795643309832, + 6.28685976532195, + 6.07419548233566 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/4ce3694a-ec5c-4c13-812d-0345c5840824", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts_radical", + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + } + ] + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + }, + "@id": "enzml:Measurement/3de8727f-aff8-4f3b-bafd-95eac9cbc850", + "@type": [ + "enzml:Measurement" + ], + "id": "measurement6", + "name": "measurement2 - A4", + "species_data": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/f5a5574e-3d29-4701-a101-b6947322be02", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "buffer", + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/fe53e596-75bd-428d-be67-3e1a9d69cf93", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "slac", + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/3f1ca6aa-e341-48ca-8146-7d137d46d55c", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts", + "initial": 14.259297536807956, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [ + 14.259297536807956, + 13.289944060870454, + 12.602494401914774, + 11.924936104958455, + 11.445205047989386, + 10.802266518030835, + 10.292861375063678, + 9.87742417109046, + 9.536172182112463, + 9.130626340138608, + 8.769591627161885 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/71b0b4dc-cef0-4009-84b5-507d84811f3a", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts_radical", + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + } + ] + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + }, + "@id": "enzml:Measurement/150010bf-8f60-4399-84d4-35a9850b4a7a", + "@type": [ + "enzml:Measurement" + ], + "id": "measurement7", + "name": "measurement2 - B4", + "species_data": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/dac41434-de6c-4eb7-acfe-4796d25729a6", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "buffer", + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/f68be3f8-056d-45d8-8950-63bdaeb4d133", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "slac", + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/6f3034dd-38fe-4c45-86f5-ac8a5c123487", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts", + "initial": 14.120818468816886, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [ + 14.120818468816886, + 13.354237913866307, + 12.651951211911586, + 12.058469491949845, + 11.60346683997918, + 11.059441930014255, + 10.589602235044547, + 10.119762540074838, + 9.694433974102258, + 9.353181985124259, + 9.056441125143392 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/91f3822b-c481-4e24-a60b-f845f887b848", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts_radical", + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + } + ] + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + }, + "@id": "enzml:Measurement/bb07039a-ac0f-4e7b-82fa-8962773d2eed", + "@type": [ + "enzml:Measurement" + ], + "id": "measurement8", + "name": "measurement2 - C4", + "species_data": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/fd33b1f8-5c5b-446a-a670-94758ae86f80", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "buffer", + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/b4fd33bd-5bd0-4f57-83bd-2fe889a6a9a3", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "slac", + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/e36ebe29-cef3-4e89-a350-d236b4390ee3", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts", + "initial": 13.838914651835061, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [ + 13.838914651835061, + 13.171247716878106, + 12.572820315916687, + 12.004067000953354, + 11.450150728989065, + 10.891288776025094, + 10.451123167053474, + 9.976337791084084, + 9.555954906111188, + 9.22459427913255, + 8.858613885156146 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/ec64c096-8640-4abf-8d84-aa7b9ea080cf", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts_radical", + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + } + ] + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + }, + "@id": "enzml:Measurement/647fdfa3-0f95-4028-8976-b6ec20ee6d09", + "@type": [ + "enzml:Measurement" + ], + "id": "measurement9", + "name": "measurement3 - A5", + "species_data": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/5b104d92-b1df-41f0-887e-666ac191622a", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "buffer", + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/b8fe095c-a3a9-43fb-8fee-c406ad202aa1", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "slac", + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/40506fa0-312d-4885-987e-1df30d0b19fe", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts", + "initial": 23.567069178207873, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [ + 23.567069178207873, + 22.543313211273876, + 21.52450292533956, + 20.52547536340397, + 19.75394912745371, + 18.88845495250951, + 18.651062264524814, + 17.587740849593366, + 16.97942208663259, + 16.51947375366224, + 16.024905653694127 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/e8e33aa0-182d-45a3-8416-187c3edb1250", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts_radical", + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + } + ] + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + }, + "@id": "enzml:Measurement/3102ee36-87a1-4df5-aff0-350cc275980e", + "@type": [ + "enzml:Measurement" + ], + "id": "measurement10", + "name": "measurement3 - B5", + "species_data": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/b3c86224-f67e-4b47-b720-07d5aeb3d447", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "buffer", + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/bbda29da-c19d-47e8-9c2b-93fc3eed09b6", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "slac", + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/ab772409-a9ce-456c-8134-66eabd60879e", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts", + "initial": 23.893484124186827, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [ + 23.893484124186827, + 22.765868856259527, + 21.78662401832266, + 20.87167303338165, + 20.06552703043362, + 19.269272389484957, + 18.527420239532788, + 17.84491626157679, + 17.25143454161505, + 16.732138036648532, + 16.217787212681692 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/5567ca36-df9b-41f0-b642-cc92826df0b5", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts_radical", + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + } + ] + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + }, + "@id": "enzml:Measurement/96ca42e5-eb5a-47be-b6f5-0d7af6727c25", + "@type": [ + "enzml:Measurement" + ], + "id": "measurement11", + "name": "measurement3 - C5", + "species_data": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/1465acf1-5586-4721-8341-7d05ddc9431b", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "buffer", + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/1f987ae1-18b2-4477-b166-914b61dd6ffc", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "slac", + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/666cd079-78c2-4eb9-a5dc-c5e50af9805b", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts", + "initial": 23.631363031203726, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [ + 23.631363031203726, + 22.483965039277702, + 21.509665882340517, + 20.678791474394085, + 19.857808428447015, + 19.041771063499624, + 18.359267085543628, + 17.706437193585717, + 17.093172749625253, + 16.608496011656502, + 16.089199506689983 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/288c5b0f-a1fa-462f-8401-3ab8544759bc", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts_radical", + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + } + ] + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + }, + "@id": "enzml:Measurement/140dc429-6303-4e44-85a6-ec9da9de1a15", + "@type": [ + "enzml:Measurement" + ], + "id": "measurement12", + "name": "measurement4 - A6", + "species_data": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/f01d80eb-d4a8-4499-9485-081e6e652fcb", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "buffer", + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/fd70d0f1-ab6e-4dfe-b8f1-7a36695f2521", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "slac", + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/37f358c8-8225-4546-b2a7-436cff8790fb", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts", + "initial": 48.3498766676101, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [ + 48.3498766676101, + 45.980895468762824, + 44.333983695869, + 42.88984484396211, + 41.64847891304214, + 40.35765617212536, + 39.29928043819359, + 38.24090470426183, + 37.32595371932082, + 36.45056818237725, + 35.62958513643019 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/b66ceb85-5e7d-4cd3-895a-b2a487375cfc", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts_radical", + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + } + ] + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + }, + "@id": "enzml:Measurement/a244b5db-d852-41b0-9642-e74a0409c107", + "@type": [ + "enzml:Measurement" + ], + "id": "measurement13", + "name": "measurement4 - B6", + "species_data": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/b60b3040-a591-4ad0-ac66-2c8c383c0a80", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "buffer", + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/675da8ff-6031-4cca-9472-48ec98e226f3", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "slac", + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/f4a104ff-3033-4728-82d5-5bcfadfa4976", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts", + "initial": 48.15204942762285, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [ + 48.15204942762285, + 45.99078683076219, + 44.29936392887124, + 42.756311456970714, + 41.46548871605394, + 40.20928574213493, + 39.032213664210815, + 38.038131783274906, + 37.133072160333256, + 36.35165456238363, + 35.580128326433375 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/a02a705d-ad8a-48ba-896b-b00fccffba77", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts_radical", + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + } + ] + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + }, + "@id": "enzml:Measurement/f0a0d8bf-71ec-4406-b0b6-ece0720aa4ce", + "@type": [ + "enzml:Measurement" + ], + "id": "measurement14", + "name": "measurement4 - C6", + "species_data": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/4c32ad3a-5a29-47ea-aa8c-fc2e50e46564", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "buffer", + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/1ae19c06-6d10-4abb-b0c2-e9afb0c3dcf9", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "slac", + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/854b128c-aa9d-4897-9210-8d1fab0f14a5", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts", + "initial": 48.2954741766136, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [ + 48.2954741766136, + 46.27269064774401, + 44.73458385684318, + 43.27066228093756, + 42.04413339301664, + 40.94124653008773, + 39.783957176162346, + 38.78987529522644, + 37.84030454328766, + 36.94019060134569, + 36.27746934738842 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/82f6e4a7-9311-415e-bacc-bd89d06f6a8d", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts_radical", + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + } + ] + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + }, + "@id": "enzml:Measurement/cb1c5766-283b-4035-941b-38bfb8c7c652", + "@type": [ + "enzml:Measurement" + ], + "id": "measurement15", + "name": "measurement5 - A7", + "species_data": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/f30b6a91-921a-48c1-9cbc-8609962f6aea", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "buffer", + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/42d8bd9a-520d-4e50-851f-46b5092fe7f2", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "slac", + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/c604ad5c-0d57-4dac-a92c-c049c15a1add", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts", + "initial": 72.99420508902124, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [ + 72.99420508902124, + 69.77456675822881, + 67.65781529036528, + 65.85758740648134, + 64.19583859058848, + 62.64784043768828, + 61.149299094784894, + 59.84363931086907, + 58.64183882794656, + 57.59830013701383, + 56.539924403082075 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/bf1ea56b-b7cb-4f42-ad84-5b690619d11f", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts_radical", + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + } + ] + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + }, + "@id": "enzml:Measurement/01e52fcd-5b6a-4213-92e9-7592a2b03755", + "@type": [ + "enzml:Measurement" + ], + "id": "measurement16", + "name": "measurement5 - B7", + "species_data": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/8e5b3ded-e677-4021-825b-ecf62a33ec8d", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "buffer", + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/95c26576-4369-4011-b98b-1317b039983e", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "slac", + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/8eb2d7ff-5fb5-4962-8f1b-de59569ae8b0", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts", + "initial": 72.67768150504163, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [ + 72.67768150504163, + 69.7003815432336, + 67.56384735137134, + 65.78340219148612, + 64.22551267658658, + 62.6181663516902, + 61.20370158578138, + 59.93760724986302, + 59.02760194592169, + 57.77139897200267, + 56.68334915207282 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/b50e6b28-2428-4896-9e90-d8eea09eba20", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts_radical", + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + } + ] + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + }, + "@id": "enzml:Measurement/30eadcf7-4f8b-4288-b54d-fb30a7e84f43", + "@type": [ + "enzml:Measurement" + ], + "id": "measurement17", + "name": "measurement5 - C7", + "species_data": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/c39737f7-bffc-48a0-b942-0dd918cc4d58", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "buffer", + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/1b7d2825-7558-49ec-9e56-969263725e03", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "slac", + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/375142cf-3b67-4074-9901-fdb597b1e23c", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts", + "initial": 72.92001987402602, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [ + 72.92001987402602, + 70.04163353221159, + 67.85069684935284, + 66.06036032746827, + 64.57171034656425, + 62.949526978668835, + 61.6982696857495, + 60.63000258981838, + 59.279831676905424, + 58.18189049497621, + 57.222428381038064 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/c7ffd6e9-113f-46a2-80d9-2e6645d6abf5", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts_radical", + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + } + ] + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + }, + "@id": "enzml:Measurement/931ba5a7-0794-4333-b98c-8ff263bff22a", + "@type": [ + "enzml:Measurement" + ], + "id": "measurement18", + "name": "measurement6 - A8", + "species_data": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/3da6697d-e980-41b5-aecd-36766980e9b7", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "buffer", + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/7d0ccf1e-4aa8-4503-b098-776bb36731ad", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "slac", + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/d0c3c009-7418-4890-9c82-afc6aec0f1ae", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts", + "initial": 97.33190128845216, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [ + 97.33190128845216, + 93.6226405386913, + 91.03604937585806, + 88.7709274780041, + 86.79265507813163, + 84.86383948825599, + 83.06855728537174, + 81.57990730446771, + 80.17038821955859, + 78.82516298764531, + 77.54423160872788 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/c3309313-cddd-42d5-b806-331c656958fa", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts_radical", + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + } + ] + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + }, + "@id": "enzml:Measurement/565539c3-b047-48f6-853d-d9b38ea99e1e", + "@type": [ + "enzml:Measurement" + ], + "id": "measurement19", + "name": "measurement6 - B8", + "species_data": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/0c7beb62-0957-40e8-b432-2974c0ddac67", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "buffer", + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/b8e5dad7-676c-4476-a359-76a29900118b", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "slac", + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/8064791d-67e7-4c77-ab10-a8c9b915ef6a", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts", + "initial": 95.83830562654845, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [ + 95.83830562654845, + 92.89562543173817, + 90.46729606089472, + 88.45934957502418, + 86.50085989915044, + 84.79954563526013, + 82.9745893463778, + 81.61452707146547, + 80.20006230555667, + 78.96858773663607, + 77.61841682372311 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/40a2ae0c-4360-47bd-8210-c87ef04b36e3", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts_radical", + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + } + ] + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + }, + "@id": "enzml:Measurement/a649b1cd-0aa2-43e0-b5af-65eeb8d099bf", + "@type": [ + "enzml:Measurement" + ], + "id": "measurement20", + "name": "measurement6 - C8", + "species_data": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/11f0f3c0-ff5e-4b73-8f4a-44b749259da8", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "buffer", + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/6b6eeebe-da75-4e00-beff-1c0df1c9338a", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "slac", + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/3c6ef980-2249-44e4-a940-578150886d1e", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts", + "initial": 97.50994580444068, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [ + 97.50994580444068, + 93.7264998396846, + 91.20914821084689, + 89.09734242398305, + 87.19820092010549, + 85.40291871722123, + 83.74611558232806, + 82.38605330741574, + 81.06555648050087, + 79.75495101558536, + 78.5135850846654 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/dc2f4648-15ad-49cc-8689-43e18fa1aa7b", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts_radical", + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + } + ] + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + }, + "@id": "enzml:Measurement/0e47512a-0473-4fd8-bf9e-6c6a929f0480", + "@type": [ + "enzml:Measurement" + ], + "id": "measurement21", + "name": "measurement7 - A9", + "species_data": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/3863a3bf-209b-480a-a2f0-8fdb62428a86", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "buffer", + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/acb6b582-99c4-4166-a21e-07d584f3c164", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "slac", + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/eca5b7f3-f777-479b-acd4-bd83fe26a1f5", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts", + "initial": 146.36832840029072, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [ + 146.36832840029072, + 140.82421999964814, + 137.31278648987453, + 135.01799050602247, + 133.3908614571274, + 131.01693457728044, + 128.06436302047078, + 127.05544409653582, + 125.32940142764711, + 123.811077360745, + 121.50144433389391 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/7ba02db8-f4d2-48d8-b0ca-c74597ba8b3c", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts_radical", + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + } + ] + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + }, + "@id": "enzml:Measurement/2ce3513f-2d75-460c-8e0d-741caec12bc7", + "@type": [ + "enzml:Measurement" + ], + "id": "measurement22", + "name": "measurement7 - B9", + "species_data": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/85b4db45-9047-4a2d-ba3b-b2923e410acc", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "buffer", + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/35115f82-5937-4447-bd27-d499ad69fa7b", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "slac", + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/6451d957-b69b-4649-ac2d-af499374846f", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts", + "initial": 143.79162859945683, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [ + 143.79162859945683, + 140.4137284766746, + 137.27816672287676, + 135.12679548801546, + 133.257328070136, + 131.09111979227566, + 128.6430076974335, + 127.28294542252118, + 125.39864096164266, + 123.60830443975809, + 122.04546924385885 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/2e5ec794-ece4-4545-9388-3f785dc86c45", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts_radical", + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + } + ] + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } + }, + "@id": "enzml:Measurement/33c0fdee-4634-45a4-9641-453e153f7ae3", + "@type": [ + "enzml:Measurement" + ], + "id": "measurement23", + "name": "measurement7 - C9", + "species_data": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/f011da1c-813a-4498-98ef-c4f76bc45e4f", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "buffer", + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/ed149d40-979f-41ba-a1da-a74d327ad2e2", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "slac", + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/e2a443c2-0c8d-43b5-ab3f-d5718e451d7b", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts", + "initial": 145.94299983431813, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [ + 145.94299983431813, + 141.17041766962583, + 137.8963768478369, + 135.79446242297243, + 133.34635032813026, + 131.29883839426228, + 129.33540303738883, + 127.21370588852562, + 125.517337305635, + 124.16716639272205, + 122.65378800681961 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "is_simulated": false + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/80056396-bce2-4e92-b20f-646c0d91c6f7", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "abts_radical", + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "data": [], + "time": [], + "is_simulated": false + } + ] + } + ], + "equations": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + }, + "@id": "enzml:Equation/90acbd62-1d6d-4ec7-9874-d70f75c78c3b", + "@type": [ + "enzml:Equation" + ], + "species_id": "abts", + "equation": "-(k_cat * slac * abts) / (K_M + abts)", + "equation_type": "ode", + "variables": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + }, + "@id": "enzml:Variable/2ce20347-2e4d-409c-9be5-e5e6d80a93c7", + "@type": [ + "enzml:Variable" + ], + "id": "slac", + "name": "slac", + "symbol": "slac" + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + }, + "@id": "enzml:Variable/ad35b208-39ab-4aff-b968-99cbcc9df4ad", + "@type": [ + "enzml:Variable" + ], + "id": "abts", + "name": "abts", + "symbol": "abts" + } + ] + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + }, + "@id": "enzml:Equation/0d1dbc20-37ed-4eeb-9917-9de8cac640ee", + "@type": [ + "enzml:Equation" + ], + "species_id": "slac", + "equation": "- k_ie * slac", + "equation_type": "ode", + "variables": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + }, + "@id": "enzml:Variable/0a0b0537-5575-4a7a-ae98-0cab30648524", + "@type": [ + "enzml:Variable" + ], + "id": "slac", + "name": "slac", + "symbol": "slac" + } + ] + } + ], + "parameters": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + }, + "@id": "enzml:Parameter/b878b418-addc-43c3-938e-a58136cf2416", + "@type": [ + "enzml:Parameter" + ], + "id": "k_cat", + "name": "k_cat", + "symbol": "k_cat", + "value": 0.85, + "initial_value": 0.01, + "upper_bound": 2.0, + "lower_bound": 1e-06, + "constant": true + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + }, + "@id": "enzml:Parameter/f07e6c8b-acb4-4fd0-80b9-92dde97d71d4", + "@type": [ + "enzml:Parameter" + ], + "id": "K_M", + "name": "K_M", + "symbol": "K_M", + "value": 80.0, + "initial_value": 120.0, + "upper_bound": 150.0, + "lower_bound": 1e-06, + "constant": true + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + }, + "@id": "enzml:Parameter/3db76a0c-e223-471e-b67a-32a95b2827d9", + "@type": [ + "enzml:Parameter" + ], + "id": "k_ie", + "name": "k_ie", + "symbol": "k_ie", + "value": 0.001, + "initial_value": 0.01, + "upper_bound": 0.05, + "lower_bound": 1e-06, + "constant": true + } + ], + "references": [] +} \ No newline at end of file diff --git a/tests/fixtures/sbml/ode_example_enzml.json b/tests/fixtures/sbml/ode_example_enzml.json index a4cbfe97..c1195736 100644 --- a/tests/fixtures/sbml/ode_example_enzml.json +++ b/tests/fixtures/sbml/ode_example_enzml.json @@ -1,474 +1,474 @@ { - "name": "Test", - "created": null, - "modified": null, - "creators": [], - "vessels": [ - { - "id": "v0", - "name": "Vessel 1", - "volume": 10.0, - "unit": { - "id": "u5", - "name": "ml", - "base_units": [ - { - "kind": "litre", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "constant": true - } - ], - "proteins": [ - { - "id": "p0", - "name": "Enzyme", - "constant": true, - "sequence": "MTEY", - "vessel_id": "v0", - "ecnumber": "1.1.1.1", - "organism": "E.coli", - "organism_tax_id": "12345", - "references": [] - } - ], - "complexes": [ - { - "id": "c0", - "name": "Enzyme-Substrate Complex", - "constant": false, - "vessel_id": "v0", - "participants": [ - "p0", - "s0" - ] - } - ], - "small_molecules": [ - { - "id": "s0", - "name": "Substrate", - "constant": false, - "vessel_id": "v0", - "canonical_smiles": "CC(=O)O", - "inchi": null, - "inchikey": "QTBSBXVTEAMEQO-UHFFFAOYSA-N", - "references": [] - }, - { - "id": "s1", - "name": "Product", - "constant": false, - "vessel_id": "v0", - "canonical_smiles": "CC(=O)O", - "inchi": null, - "inchikey": "QTBSBXVTEAMEQO-UHFFFAOYSA-N", - "references": [] - } - ], - "reactions": [], - "measurements": [ - { - "id": "m0", - "name": "m0", - "species_data": [ + "name": "Test", + "created": null, + "modified": null, + "creators": [], + "vessels": [ { - "species_id": "s0", - "initial": 0.0, - "data_unit": { - "id": "u6", - "name": "mmol / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 0.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [ - 0.0, - 1.0, - 10.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0, - 7.0, - 8.0, - 9.0 - ], - "time": [ - 0.0, - 1.0, - 10.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0, - 7.0, - 8.0, - 9.0 - ], - "time_unit": { - "id": "u7", - "name": "s", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 1.0, - "scale": 0.0 - } + "id": "v0", + "name": "Vessel 1", + "volume": 10.0, + "unit": { + "id": "u5", + "name": "ml", + "base_units": [ + { + "kind": "litre", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "constant": true + } + ], + "proteins": [ + { + "id": "p0", + "name": "Enzyme", + "constant": true, + "sequence": "MTEY", + "vessel_id": "v0", + "ecnumber": "1.1.1.1", + "organism": "E.coli", + "organism_tax_id": "12345", + "references": [] + } + ], + "complexes": [ + { + "id": "c0", + "name": "Enzyme-Substrate Complex", + "constant": false, + "vessel_id": "v0", + "participants": [ + "p0", + "s0" ] - }, - "is_simulated": false + } + ], + "small_molecules": [ + { + "id": "s0", + "name": "Substrate", + "constant": false, + "vessel_id": "v0", + "canonical_smiles": "CC(=O)O", + "inchi": null, + "inchikey": "QTBSBXVTEAMEQO-UHFFFAOYSA-N", + "references": [] }, { - "species_id": "s1", - "initial": 10.0, - "data_unit": { - "id": "u6", - "name": "mmol / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 0.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [ - 0.0, - 1.0, - 10.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0, - 7.0, - 8.0, - 9.0 - ], - "time": [ - 0.0, - 1.0, - 10.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0, - 7.0, - 8.0, - 9.0 - ], - "time_unit": { - "id": "u7", - "name": "s", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 1.0, - "scale": 0.0 - } - ] - }, - "is_simulated": false + "id": "s1", + "name": "Product", + "constant": false, + "vessel_id": "v0", + "canonical_smiles": "CC(=O)O", + "inchi": null, + "inchikey": "QTBSBXVTEAMEQO-UHFFFAOYSA-N", + "references": [] } - ], - "group_id": null, - "ph": 7.0, - "temperature": 298.15, - "temperature_unit": { - "id": "u8", - "name": "K", - "base_units": [ - { - "kind": "kelvin", - "exponent": 1, - "multiplier": 1.0, - "scale": 0.0 - } - ] - } - }, - { - "id": "m1", - "name": "m1", - "species_data": [ + ], + "reactions": [], + "measurements": [ { - "species_id": "s0", - "initial": 0.0, - "data_unit": { - "id": "u6", - "name": "mmol / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 0.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [ - 0.0, - 1.0, - 10.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0, - 7.0, - 8.0, - 9.0 - ], - "time": [ - 0.0, - 1.0, - 10.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0, - 7.0, - 8.0, - 9.0 - ], - "time_unit": { - "id": "u7", - "name": "s", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 1.0, - "scale": 0.0 - } - ] - }, - "is_simulated": false + "id": "m0", + "name": "m0", + "species_data": [ + { + "species_id": "s0", + "initial": 0.0, + "data_unit": { + "id": "u6", + "name": "mmol / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [ + 0.0, + 1.0, + 10.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0 + ], + "time": [ + 0.0, + 1.0, + 10.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0 + ], + "time_unit": { + "id": "u7", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "is_simulated": false + }, + { + "species_id": "s1", + "initial": 10.0, + "data_unit": { + "id": "u6", + "name": "mmol / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [ + 0.0, + 1.0, + 10.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0 + ], + "time": [ + 0.0, + 1.0, + 10.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0 + ], + "time_unit": { + "id": "u7", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "is_simulated": false + } + ], + "group_id": null, + "ph": 7.0, + "temperature": 298.15, + "temperature_unit": { + "id": "u8", + "name": "K", + "base_units": [ + { + "kind": "kelvin", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + } }, { - "species_id": "s1", - "initial": 10.0, - "data_unit": { - "id": "u6", - "name": "mmol / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 0.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [ - 0.0, - 1.0, - 10.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0, - 7.0, - 8.0, - 9.0 - ], - "time": [ - 0.0, - 1.0, - 10.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0, - 7.0, - 8.0, - 9.0 - ], - "time_unit": { - "id": "u7", - "name": "s", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 1.0, - "scale": 0.0 - } + "id": "m1", + "name": "m1", + "species_data": [ + { + "species_id": "s0", + "initial": 0.0, + "data_unit": { + "id": "u6", + "name": "mmol / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [ + 0.0, + 1.0, + 10.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0 + ], + "time": [ + 0.0, + 1.0, + 10.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0 + ], + "time_unit": { + "id": "u7", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "is_simulated": false + }, + { + "species_id": "s1", + "initial": 10.0, + "data_unit": { + "id": "u6", + "name": "mmol / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [ + 0.0, + 1.0, + 10.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0 + ], + "time": [ + 0.0, + 1.0, + 10.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0 + ], + "time_unit": { + "id": "u7", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "is_simulated": false + } + ], + "group_id": null, + "ph": 7.0, + "temperature": 298.15, + "temperature_unit": { + "id": "u8", + "name": "K", + "base_units": [ + { + "kind": "kelvin", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + } + } + ], + "equations": [ + { + "species_id": "E_tot", + "equation": "100", + "equation_type": "initialAssignment", + "variables": [] + }, + { + "species_id": "s1", + "equation": "E_tot * kcat * s0 / (K_m + s0)", + "equation_type": "ode", + "variables": [ + { + "id": "s0", + "name": "s0", + "symbol": "s0" + } ] - }, - "is_simulated": false } - ], - "group_id": null, - "ph": 7.0, - "temperature": 298.15, - "temperature_unit": { - "id": "u8", - "name": "K", - "base_units": [ - { - "kind": "kelvin", - "exponent": 1, - "multiplier": 1.0, - "scale": 0.0 - } - ] - } - } - ], - "equations": [ - { - "species_id": "E_tot", - "equation": "100", - "equation_type": "initialAssignment", - "variables": [] - }, - { - "species_id": "s1", - "equation": "E_tot * kcat * s0 / (K_m + s0)", - "equation_type": "ode", - "variables": [ + ], + "parameters": [ + { + "id": "E_tot", + "name": "E_tot", + "symbol": "E_tot", + "value": null, + "unit": { + "id": "u6", + "name": "mmol / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "initial_value": null, + "upper_bound": 100.0, + "lower_bound": 0.0, + "stderr": 0.1, + "constant": true + }, + { + "id": "K_m", + "name": "K_m", + "symbol": "K_m", + "value": null, + "unit": { + "id": "u6", + "name": "mmol / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "initial_value": null, + "upper_bound": 100.0, + "lower_bound": 0.0, + "stderr": 0.1, + "constant": true + }, { - "id": "s0", - "name": "s0", - "symbol": "s0" + "id": "kcat", + "name": "kcat", + "symbol": "kcat", + "value": null, + "unit": { + "id": "u9", + "name": "1 / s", + "base_units": [ + { + "kind": "second", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "initial_value": null, + "upper_bound": 100.0, + "lower_bound": 0.0, + "stderr": 0.1, + "constant": true } - ] - } - ], - "parameters": [ - { - "id": "E_tot", - "name": "E_tot", - "symbol": "E_tot", - "value": null, - "unit": { - "id": "u6", - "name": "mmol / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 0.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "initial_value": null, - "upper_bound": 100.0, - "lower_bound": 0.0, - "stderr": 0.1, - "constant": true - }, - { - "id": "K_m", - "name": "K_m", - "symbol": "K_m", - "value": null, - "unit": { - "id": "u6", - "name": "mmol / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 0.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "initial_value": null, - "upper_bound": 100.0, - "lower_bound": 0.0, - "stderr": 0.1, - "constant": true - }, - { - "id": "kcat", - "name": "kcat", - "symbol": "kcat", - "value": null, - "unit": { - "id": "u9", - "name": "1 / s", - "base_units": [ - { - "kind": "second", - "exponent": -1, - "multiplier": 1.0, - "scale": 0.0 - } - ] - }, - "initial_value": null, - "upper_bound": 100.0, - "lower_bound": 0.0, - "stderr": 0.1, - "constant": true - } - ], - "references": [] + ], + "references": [] } \ No newline at end of file diff --git a/tests/fixtures/sbml/reaction_example_enzml.json b/tests/fixtures/sbml/reaction_example_enzml.json index b264df26..652988d1 100644 --- a/tests/fixtures/sbml/reaction_example_enzml.json +++ b/tests/fixtures/sbml/reaction_example_enzml.json @@ -1,972 +1,986 @@ { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "name": "schema:title", - "references": { - "@id": "schema:citation", - "@type": "@id" - }, - "created": "schema:dateCreated", - "modified": "schema:dateModified", - "creators": "schema:creator" - }, - "@id": "enzml:EnzymeMLDocument/0dd4f410-0464-451f-ae3f-a45d11b7c181", - "@type": [ - "enzml:EnzymeMLDocument" - ], - "name": "Test", - "references": [], - "creators": [], - "vessels": [ - { - "@context": { + "@context": { "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "name": "schema:name", - "volume": "OBO:OBI_0002139" - }, - "@id": "enzml:Vessel/a2ea41db-032c-4a61-a7d5-254137d0bce9", - "@type": [ - "enzml:Vessel", - "OBO:OBI_0400081" - ], - "id": "v0", - "name": "Vessel 1", - "volume": 10.0, - "unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "name": "schema:title", + "references": { + "@id": "schema:citation", + "@type": "@id" }, - "@id": "OBO:UO_0000098", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u0", - "name": "ml", - "base_units": [ - { + "created": "schema:dateCreated", + "modified": "schema:dateModified", + "creators": "schema:creator" + }, + "@id": "enzml:EnzymeMLDocument/0dd4f410-0464-451f-ae3f-a45d11b7c181", + "@type": [ + "enzml:EnzymeMLDocument" + ], + "name": "Test", + "references": [], + "creators": [], + "vessels": [ + { "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "volume": "OBO:OBI_0002139" }, - "@id": "enzml:BaseUnit/c64d956a-7d88-4886-8c05-8f2458178c0f", + "@id": "enzml:Vessel/a2ea41db-032c-4a61-a7d5-254137d0bce9", "@type": [ - "enzml:BaseUnit" + "enzml:Vessel", + "OBO:OBI_0400081" ], - "kind": "litre", - "exponent": 1, - "scale": -3.0 - } - ] - }, - "constant": true - } - ], - "proteins": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@type": "@id" - }, - "name": "schema:name", - "sequence": "OBO:GSSO_007262", - "vessel_id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "organism": "OBO:OBI_0100026", - "organism_tax_id": { - "@type": "@id" - }, - "references": { - "@id": "schema:citation", - "@type": "@id" - } - }, - "@id": "enzml:Protein/42828d0d-f4ac-489b-acd5-cd74c080f340", - "@type": [ - "enzml:Protein", - "schema:Protein" - ], - "id": "p0", - "name": "Enzyme", - "constant": false, - "sequence": "MTEY", - "vessel_id": "v0", - "references": [] - } - ], - "complexes": [], - "small_molecules": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "name": "schema:name", - "vessel_id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "references": { - "@id": "schema:citation", - "@type": "@id" - } - }, - "@id": "enzml:SmallMolecule/e794f30d-51ea-4b89-a5d7-555bcd70efe5", - "@type": [ - "enzml:SmallMolecule" - ], - "id": "s0", - "name": "Substrate", - "constant": false, - "vessel_id": "v0", - "references": [] - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "name": "schema:name", - "vessel_id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "references": { - "@id": "schema:citation", - "@type": "@id" - } - }, - "@id": "enzml:SmallMolecule/4b8a1f78-1874-447a-aee7-a80970bb1301", - "@type": [ - "enzml:SmallMolecule" - ], - "id": "s1", - "name": "Product", - "constant": false, - "vessel_id": "v0", - "references": [] - } - ], - "reactions": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "modifiers": { - "@type": "@id" + "id": "v0", + "name": "Vessel 1", + "volume": 10.0, + "unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000098", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u0", + "name": "ml", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/c64d956a-7d88-4886-8c05-8f2458178c0f", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": 1, + "scale": -3.0 + } + ] + }, + "constant": true } - }, - "@id": "enzml:Reaction/d62c8122-e540-441b-97b5-87ed786d61ff", - "@type": [ - "enzml:Reaction" - ], - "id": "r0", - "name": "Reaction 1", - "reversible": false, - "kinetic_law": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - }, - "@id": "enzml:Equation/f9c5b6d8-e3df-4caa-8c09-cdaf433bf964", - "@type": [ - "enzml:Equation" - ], - "equation": "kcat * p0 * s0 / (K_m + s0)", - "equation_type": "rateLaw", - "variables": [ - { + ], + "proteins": [ + { "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": "schema:identifier" + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@type": "@id" + }, + "name": "schema:name", + "sequence": "OBO:GSSO_007262", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "organism": "OBO:OBI_0100026", + "organism_tax_id": { + "@type": "@id" + }, + "references": { + "@id": "schema:citation", + "@type": "@id" + } }, - "@id": "enzml:Variable/e8925678-42a3-4ae9-b6b0-1acf57e931fe", + "@id": "enzml:Protein/42828d0d-f4ac-489b-acd5-cd74c080f340", "@type": [ - "enzml:Variable" + "enzml:Protein", + "schema:Protein" ], "id": "p0", - "name": "p0", - "symbol": "p0" - }, - { + "name": "Enzyme", + "constant": false, + "sequence": "MTEY", + "vessel_id": "v0", + "references": [] + } + ], + "complexes": [], + "small_molecules": [ + { "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": "schema:identifier" + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "references": { + "@id": "schema:citation", + "@type": "@id" + } }, - "@id": "enzml:Variable/f92597cf-ca5d-4287-83fb-d37e10f6bcf2", + "@id": "enzml:SmallMolecule/e794f30d-51ea-4b89-a5d7-555bcd70efe5", "@type": [ - "enzml:Variable" + "enzml:SmallMolecule" ], "id": "s0", - "name": "s0", - "symbol": "s0" - } - ] - }, - "species": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - }, - "@id": "enzml:ReactionElement/64a1ab7c-7a6b-4479-afa4-a5732d1149c3", - "@type": [ - "enzml:ReactionElement" - ], - "species_id": "s0", - "stoichiometry": -1.0 - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - }, - "@id": "enzml:ReactionElement/58c5315f-c835-46df-afb6-309aa61925c6", - "@type": [ - "enzml:ReactionElement" - ], - "species_id": "s1", - "stoichiometry": 1.0 - } - ], - "modifiers": [ - "p0" - ] - } - ], - "measurements": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" + "name": "Substrate", + "constant": false, + "vessel_id": "v0", + "references": [] }, - "group_id": { - "@type": "@id" - } - }, - "@id": "enzml:Measurement/fee8c4cb-a15f-4ee4-b7c7-bcb9cf54ed6f", - "@type": [ - "enzml:Measurement" - ], - "id": "m0", - "name": "m0", - "species_data": [ { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - }, - "@id": "enzml:MeasurementData/face315a-fd44-4b49-9f1d-0522b22aa073", - "@type": [ - "enzml:MeasurementData" - ], - "species_id": "s0", - "initial": 0.0, - "data_unit": { "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000063", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u1", - "name": "mmol / l", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" }, - "@id": "enzml:BaseUnit/040c4b08-0af8-41d5-b3b6-0fa479ece06f", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "mole", - "exponent": 1, - "scale": -3.0 - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "name": "schema:name", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" }, - "@id": "enzml:BaseUnit/5069824d-7d9b-4afd-860d-232049d5fe2f", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "litre", - "exponent": -1, - "scale": 1.0 - } - ] - }, - "time_unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "references": { + "@id": "schema:citation", + "@type": "@id" + } }, - "@id": "OBO:UO_0000010", + "@id": "enzml:SmallMolecule/4b8a1f78-1874-447a-aee7-a80970bb1301", "@type": [ - "OBO:UO_0000000" + "enzml:SmallMolecule" ], - "id": "u2", - "name": "s", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/1be2e5cf-2afd-4b04-a4c7-22cc42fde9b6", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "second", - "exponent": 1, - "scale": 1.0 - } - ] - }, - "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", - "data": [ - 0.0, - 1.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0, - 7.0, - 8.0, - 9.0, - 10.0 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0, - 7.0, - 8.0, - 9.0, - 10.0 - ], - "is_simulated": false - }, + "id": "s1", + "name": "Product", + "constant": false, + "vessel_id": "v0", + "references": [] + } + ], + "reactions": [ { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - }, - "@id": "enzml:MeasurementData/bbe483a3-d68a-44ed-8acd-0fe94b4b2f7a", - "@type": [ - "enzml:MeasurementData" - ], - "species_id": "s1", - "initial": 10.0, - "data_unit": { "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000063", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u1", - "name": "mmol / l", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/040c4b08-0af8-41d5-b3b6-0fa479ece06f", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "mole", - "exponent": 1, - "scale": -3.0 - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" }, - "@id": "enzml:BaseUnit/5069824d-7d9b-4afd-860d-232049d5fe2f", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "litre", - "exponent": -1, - "scale": 1.0 - } - ] - }, - "time_unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "modifiers": { + "@type": "@id" + } }, - "@id": "OBO:UO_0000010", + "@id": "enzml:Reaction/d62c8122-e540-441b-97b5-87ed786d61ff", "@type": [ - "OBO:UO_0000000" + "enzml:Reaction" ], - "id": "u2", - "name": "s", - "base_units": [ - { + "id": "r0", + "name": "Reaction 1", + "reversible": false, + "kinetic_law": { "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } }, - "@id": "enzml:BaseUnit/1be2e5cf-2afd-4b04-a4c7-22cc42fde9b6", + "@id": "enzml:Equation/f9c5b6d8-e3df-4caa-8c09-cdaf433bf964", "@type": [ - "enzml:BaseUnit" + "enzml:Equation" ], - "kind": "second", - "exponent": 1, - "scale": 1.0 - } - ] - }, - "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", - "data": [ - 10.0, - 9.0, - 8.0, - 7.0, - 6.0, - 5.0, - 4.0, - 3.0, - 2.0, - 1.0, - 0.0 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0, - 7.0, - 8.0, - 9.0, - 10.0 - ], - "is_simulated": false - } - ], - "ph": 7.0, - "temperature": 298.15, - "temperature_unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000012", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u3", - "name": "K", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "equation": "kcat * p0 * s0 / (K_m + s0)", + "equation_type": "rateLaw", + "variables": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": "schema:identifier" + }, + "@id": "enzml:Variable/e8925678-42a3-4ae9-b6b0-1acf57e931fe", + "@type": [ + "enzml:Variable" + ], + "id": "p0", + "name": "p0", + "symbol": "p0" + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": "schema:identifier" + }, + "@id": "enzml:Variable/f92597cf-ca5d-4287-83fb-d37e10f6bcf2", + "@type": [ + "enzml:Variable" + ], + "id": "s0", + "name": "s0", + "symbol": "s0" + } + ] }, - "@id": "enzml:BaseUnit/a3eac754-8efc-479a-b12d-7910d4881e7f", - "@type": [ - "enzml:BaseUnit" + "reactants": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:ReactionElement/64a1ab7c-7a6b-4479-afa4-a5732d1149c3", + "@type": [ + "enzml:ReactionElement" + ], + "species_id": "s0", + "stoichiometry": 1.0 + } ], - "kind": "kelvin", - "exponent": 1, - "scale": 1.0 - } - ] - } - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "group_id": { - "@type": "@id" + "products": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:ReactionElement/58c5315f-c835-46df-afb6-309aa61925c6", + "@type": [ + "enzml:ReactionElement" + ], + "species_id": "s1", + "stoichiometry": 1.0 + } + ], + "modifiers": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:Modifier/58c5315f-c835-46df-afb6-309aa61925c6", + "@type": [ + "enzml:Modifier" + ], + "species_id": "p0", + "role": "catalyst" + } + ] } - }, - "@id": "enzml:Measurement/aed20526-1899-43b8-bf3c-5dea15ff814d", - "@type": [ - "enzml:Measurement" - ], - "id": "m1", - "name": "m1", - "species_data": [ + ], + "measurements": [ { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - }, - "@id": "enzml:MeasurementData/f7fc7642-f8ee-4e28-bfb6-c8ae924a51b0", - "@type": [ - "enzml:MeasurementData" - ], - "species_id": "s0", - "initial": 0.0, - "data_unit": { "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } }, - "@id": "OBO:UO_0000063", + "@id": "enzml:Measurement/fee8c4cb-a15f-4ee4-b7c7-bcb9cf54ed6f", "@type": [ - "OBO:UO_0000000" + "enzml:Measurement" ], - "id": "u1", - "name": "mmol / l", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "id": "m0", + "name": "m0", + "species_data": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/face315a-fd44-4b49-9f1d-0522b22aa073", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "s0", + "initial": 0.0, + "data_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u1", + "name": "mmol / l", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/040c4b08-0af8-41d5-b3b6-0fa479ece06f", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/5069824d-7d9b-4afd-860d-232049d5fe2f", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "time_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000010", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u2", + "name": "s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/1be2e5cf-2afd-4b04-a4c7-22cc42fde9b6", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": 1, + "scale": 1.0 + } + ] + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "data": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], + "is_simulated": false }, - "@id": "enzml:BaseUnit/040c4b08-0af8-41d5-b3b6-0fa479ece06f", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "mole", - "exponent": 1, - "scale": -3.0 - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/5069824d-7d9b-4afd-860d-232049d5fe2f", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "litre", - "exponent": -1, - "scale": 1.0 - } - ] - }, - "time_unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000010", - "@type": [ - "OBO:UO_0000000" + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/bbe483a3-d68a-44ed-8acd-0fe94b4b2f7a", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "s1", + "initial": 10.0, + "data_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u1", + "name": "mmol / l", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/040c4b08-0af8-41d5-b3b6-0fa479ece06f", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/5069824d-7d9b-4afd-860d-232049d5fe2f", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "time_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000010", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u2", + "name": "s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/1be2e5cf-2afd-4b04-a4c7-22cc42fde9b6", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": 1, + "scale": 1.0 + } + ] + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "data": [ + 10.0, + 9.0, + 8.0, + 7.0, + 6.0, + 5.0, + 4.0, + 3.0, + 2.0, + 1.0, + 0.0 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], + "is_simulated": false + } ], - "id": "u2", - "name": "s", - "base_units": [ - { + "ph": 7.0, + "temperature": 298.15, + "temperature_unit": { "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/1be2e5cf-2afd-4b04-a4c7-22cc42fde9b6", + "@id": "OBO:UO_0000012", "@type": [ - "enzml:BaseUnit" + "OBO:UO_0000000" ], - "kind": "second", - "exponent": 1, - "scale": 1.0 - } - ] - }, - "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", - "data": [ - 0.0, - 1.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0, - 7.0, - 8.0, - 9.0, - 10.0 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0, - 7.0, - 8.0, - 9.0, - 10.0 - ], - "is_simulated": false + "id": "u3", + "name": "K", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/a3eac754-8efc-479a-b12d-7910d4881e7f", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "kelvin", + "exponent": 1, + "scale": 1.0 + } + ] + } }, { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - }, - "@id": "enzml:MeasurementData/597c85d3-288f-470f-b7aa-8c156c1f2b27", - "@type": [ - "enzml:MeasurementData" - ], - "species_id": "s1", - "initial": 10.0, - "data_unit": { "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } }, - "@id": "OBO:UO_0000063", + "@id": "enzml:Measurement/aed20526-1899-43b8-bf3c-5dea15ff814d", "@type": [ - "OBO:UO_0000000" + "enzml:Measurement" ], - "id": "u1", - "name": "mmol / l", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "id": "m1", + "name": "m1", + "species_data": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/f7fc7642-f8ee-4e28-bfb6-c8ae924a51b0", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "s0", + "initial": 0.0, + "data_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u1", + "name": "mmol / l", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/040c4b08-0af8-41d5-b3b6-0fa479ece06f", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/5069824d-7d9b-4afd-860d-232049d5fe2f", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "time_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000010", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u2", + "name": "s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/1be2e5cf-2afd-4b04-a4c7-22cc42fde9b6", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": 1, + "scale": 1.0 + } + ] + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "data": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], + "is_simulated": false }, - "@id": "enzml:BaseUnit/040c4b08-0af8-41d5-b3b6-0fa479ece06f", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "mole", - "exponent": 1, - "scale": -3.0 - }, - { + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + }, + "@id": "enzml:MeasurementData/597c85d3-288f-470f-b7aa-8c156c1f2b27", + "@type": [ + "enzml:MeasurementData" + ], + "species_id": "s1", + "initial": 10.0, + "data_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u1", + "name": "mmol / l", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/040c4b08-0af8-41d5-b3b6-0fa479ece06f", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/5069824d-7d9b-4afd-860d-232049d5fe2f", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + } + ] + }, + "time_unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000010", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u2", + "name": "s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/1be2e5cf-2afd-4b04-a4c7-22cc42fde9b6", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": 1, + "scale": 1.0 + } + ] + }, + "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", + "data": [ + 10.0, + 9.0, + 8.0, + 7.0, + 6.0, + 5.0, + 4.0, + 3.0, + 2.0, + 1.0, + 0.0 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ], + "is_simulated": false + } + ], + "ph": 7.0, + "temperature": 298.15, + "temperature_unit": { "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/5069824d-7d9b-4afd-860d-232049d5fe2f", + "@id": "OBO:UO_0000012", "@type": [ - "enzml:BaseUnit" + "OBO:UO_0000000" ], - "kind": "litre", - "exponent": -1, - "scale": 1.0 - } - ] - }, - "time_unit": { + "id": "u3", + "name": "K", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/a3eac754-8efc-479a-b12d-7910d4881e7f", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "kelvin", + "exponent": 1, + "scale": 1.0 + } + ] + } + } + ], + "equations": [], + "parameters": [ + { "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } }, - "@id": "OBO:UO_0000010", + "@id": "enzml:Parameter/46faced8-6229-4b7c-b06a-3feb06a11350", "@type": [ - "OBO:UO_0000000" + "enzml:Parameter" ], - "id": "u2", - "name": "s", - "base_units": [ - { + "id": "kcat", + "name": "kcat", + "symbol": "kcat", + "unit": { "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" }, - "@id": "enzml:BaseUnit/1be2e5cf-2afd-4b04-a4c7-22cc42fde9b6", + "@id": "OBO:UO_0000010", "@type": [ - "enzml:BaseUnit" + "OBO:UO_0000000" ], - "kind": "second", - "exponent": 1, - "scale": 1.0 - } - ] - }, - "data_type": "http://purl.obolibrary.org/obo/PATO_0000033", - "data": [ - 10.0, - 9.0, - 8.0, - 7.0, - 6.0, - 5.0, - 4.0, - 3.0, - 2.0, - 1.0, - 0.0 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0, - 7.0, - 8.0, - 9.0, - 10.0 - ], - "is_simulated": false - } - ], - "ph": 7.0, - "temperature": 298.15, - "temperature_unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000012", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u3", - "name": "K", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "id": "u4", + "name": "1 / s", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/1be2e5cf-2afd-4b04-a4c7-22cc42fde9b6", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "second", + "exponent": -1, + "scale": 1.0 + } + ] }, - "@id": "enzml:BaseUnit/a3eac754-8efc-479a-b12d-7910d4881e7f", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "kelvin", - "exponent": 1, - "scale": 1.0 - } - ] - } - } - ], - "equations": [], - "parameters": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - }, - "@id": "enzml:Parameter/46faced8-6229-4b7c-b06a-3feb06a11350", - "@type": [ - "enzml:Parameter" - ], - "id": "kcat", - "name": "kcat", - "symbol": "kcat", - "unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "upper": 100.0, + "lower": 0.0, + "stderr": 0.1, + "constant": true }, - "@id": "OBO:UO_0000010", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u4", - "name": "1 / s", - "base_units": [ - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "enzml:BaseUnit/1be2e5cf-2afd-4b04-a4c7-22cc42fde9b6", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "second", - "exponent": -1, - "scale": 1.0 - } - ] - }, - "upper": 100.0, - "lower": 0.0, - "stderr": 0.1, - "constant": true - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - }, - "@id": "enzml:Parameter/706ce185-8f1d-429e-8c0d-76942326a0df", - "@type": [ - "enzml:Parameter" - ], - "id": "K_m", - "name": "K_m", - "symbol": "K_m", - "unit": { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" - }, - "@id": "OBO:UO_0000063", - "@type": [ - "OBO:UO_0000000" - ], - "id": "u1", - "name": "mmol / l", - "base_units": [ - { + { "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } }, - "@id": "enzml:BaseUnit/040c4b08-0af8-41d5-b3b6-0fa479ece06f", + "@id": "enzml:Parameter/706ce185-8f1d-429e-8c0d-76942326a0df", "@type": [ - "enzml:BaseUnit" + "enzml:Parameter" ], - "kind": "mole", - "exponent": 1, - "scale": -3.0 - }, - { - "@context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/" + "id": "K_m", + "name": "K_m", + "symbol": "K_m", + "unit": { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "OBO:UO_0000063", + "@type": [ + "OBO:UO_0000000" + ], + "id": "u1", + "name": "mmol / l", + "base_units": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/040c4b08-0af8-41d5-b3b6-0fa479ece06f", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "mole", + "exponent": 1, + "scale": -3.0 + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/" + }, + "@id": "enzml:BaseUnit/5069824d-7d9b-4afd-860d-232049d5fe2f", + "@type": [ + "enzml:BaseUnit" + ], + "kind": "litre", + "exponent": -1, + "scale": 1.0 + } + ] }, - "@id": "enzml:BaseUnit/5069824d-7d9b-4afd-860d-232049d5fe2f", - "@type": [ - "enzml:BaseUnit" - ], - "kind": "litre", - "exponent": -1, - "scale": 1.0 - } - ] - }, - "upper": 100.0, - "lower": 0.0, - "stderr": 0.1, - "constant": true - } - ] + "upper": 100.0, + "lower": 0.0, + "stderr": 0.1, + "constant": true + } + ] } \ No newline at end of file diff --git a/tests/fixtures/sbml/v1_example_enzml.json b/tests/fixtures/sbml/v1_example_enzml.json index 769ade69..86159c47 100644 --- a/tests/fixtures/sbml/v1_example_enzml.json +++ b/tests/fixtures/sbml/v1_example_enzml.json @@ -1,5325 +1,5351 @@ { - "name": "EnzymeML_Lagerman", - "created": null, - "modified": null, - "creators": [], - "vessels": [ - { - "id": "v0", - "name": "Falcon Tube", - "volume": 5.0, - "unit": { - "id": "u0", - "name": "ml", - "base_units": [ - { - "kind": "litre", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "constant": true, - "ld_id": "enzml:Vessel/9f2068bd-e37c-4695-aaa1-bd0c92391a4f", - "ld_type": [ - "enzml:Vessel", - "OBO:OBI_0400081" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "name": "schema:name", - "volume": "OBO:OBI_0002139" - } - } - ], - "proteins": [ - { - "id": "p0", - "name": "E", - "constant": false, - "sequence": "MRRLAACLLATAVAAATSAALAQTSPMTPDITGKPFVAGDAANDYVKREVMIPMRDGVKLHTVIVLPKGARNAPIVLTRTPYDASGRTERLASPHMKDLLSAGDDVFVEGGYIRVFQDVRGKYGSEGDYVMTRPLRGPLNPSEVDHATDAWDTIDWLVKNVKESNGKVGMIGSSYEGFTVVMALTNPHPALKVAAPESPMIDGWMGDDWFNYGAFRQVNFDYFTGQLSKRGKGAGIPRQGHDDYSNFLQAGSAGDFAKAAGLEQLPWWHKLTEHAAYDSFWQEQALDKVMARTPLKVPTMWLQGLWDQEDMWGAIHSYAAMEPRDKSNKLNYLVMGPWRHSQVNSDASSLGALNFDGDTARQFRRDVLRPFFDQYLVDGAPKAATPPVFIYNTGENHWDRLQAWPRSCDKGCAAKSKPLYLQAGGKLSFQAPTAAQPAFEEYVSDPAKPVPFVPRPVDFGDRSMWTTWLVHDQRFVDGRPDVLTFVTEPLTAPLQIAGAPDVHLQASTSGSDSDWVVKLIDVYPDEMAADPKMGGYELPVSMAIFRGRYRESFSTPAPLAANQPLAFQFGLPTANHTFQPGHRVMVQVQSSLFPLYDRNPQTYVPNVFFAKPGDYQKATQRVYVAPGQGSYISLPVR", - "vessel_id": "v0", - "ecnumber": "3.1.1.43", - "organism": "Xanthomonas campestris pv. campestris", - "organism_tax_id": null, - "references": [], - "ld_id": "enzml:Protein/b38cd461-6992-4a9d-b4dc-2af56a220ee3", - "ld_type": [ - "enzml:Protein", - "schema:Protein" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "name": "schema:name", - "sequence": "OBO:GSSO_007262", - "vessel_id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "organism": "OBO:OBI_0100026", - "organism_tax_id": { - "@type": "@id" - }, - "references": { - "@id": "schema:citation", - "@type": "@id" - } - } - }, - { - "id": "p1", - "name": "EA", - "constant": false, - "sequence": "MRRLAACLLATAVAAATSAALAQTSPMTPDITGKPFVAGDAANDYVKREVMIPMRDGVKLHTVIVLPKGARNAPIVLTRTPYDASGRTERLASPHMKDLLSAGDDVFVEGGYIRVFQDVRGKYGSEGDYVMTRPLRGPLNPSEVDHATDAWDTIDWLVKNVKESNGKVGMIGSSYEGFTVVMALTNPHPALKVAAPESPMIDGWMGDDWFNYGAFRQVNFDYFTGQLSKRGKGAGIPRQGHDDYSNFLQAGSAGDFAKAAGLEQLPWWHKLTEHAAYDSFWQEQALDKVMARTPLKVPTMWLQGLWDQEDMWGAIHSYAAMEPRDKSNKLNYLVMGPWRHSQVNSDASSLGALNFDGDTARQFRRDVLRPFFDQYLVDGAPKAATPPVFIYNTGENHWDRLQAWPRSCDKGCAAKSKPLYLQAGGKLSFQAPTAAQPAFEEYVSDPAKPVPFVPRPVDFGDRSMWTTWLVHDQRFVDGRPDVLTFVTEPLTAPLQIAGAPDVHLQASTSGSDSDWVVKLIDVYPDEMAADPKMGGYELPVSMAIFRGRYRESFSTPAPLAANQPLAFQFGLPTANHTFQPGHRVMVQVQSSLFPLYDRNPQTYVPNVFFAKPGDYQKATQRVYVAPGQGSYISLPVR", - "vessel_id": "v0", - "ecnumber": "3.1.1.43", - "organism": "Xanthomonas campestris pv. campestris", - "organism_tax_id": null, - "references": [], - "ld_id": "enzml:Protein/b584030e-eb06-404d-b7b9-0d9255affb41", - "ld_type": [ - "enzml:Protein", - "schema:Protein" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "name": "schema:name", - "sequence": "OBO:GSSO_007262", - "vessel_id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "organism": "OBO:OBI_0100026", - "organism_tax_id": { - "@type": "@id" - }, - "references": { - "@id": "schema:citation", - "@type": "@id" - } - } - }, - { - "id": "p2", - "name": "ED", - "constant": false, - "sequence": "MRRLAACLLATAVAAATSAALAQTSPMTPDITGKPFVAGDAANDYVKREVMIPMRDGVKLHTVIVLPKGARNAPIVLTRTPYDASGRTERLASPHMKDLLSAGDDVFVEGGYIRVFQDVRGKYGSEGDYVMTRPLRGPLNPSEVDHATDAWDTIDWLVKNVKESNGKVGMIGSSYEGFTVVMALTNPHPALKVAAPESPMIDGWMGDDWFNYGAFRQVNFDYFTGQLSKRGKGAGIPRQGHDDYSNFLQAGSAGDFAKAAGLEQLPWWHKLTEHAAYDSFWQEQALDKVMARTPLKVPTMWLQGLWDQEDMWGAIHSYAAMEPRDKSNKLNYLVMGPWRHSQVNSDASSLGALNFDGDTARQFRRDVLRPFFDQYLVDGAPKAATPPVFIYNTGENHWDRLQAWPRSCDKGCAAKSKPLYLQAGGKLSFQAPTAAQPAFEEYVSDPAKPVPFVPRPVDFGDRSMWTTWLVHDQRFVDGRPDVLTFVTEPLTAPLQIAGAPDVHLQASTSGSDSDWVVKLIDVYPDEMAADPKMGGYELPVSMAIFRGRYRESFSTPAPLAANQPLAFQFGLPTANHTFQPGHRVMVQVQSSLFPLYDRNPQTYVPNVFFAKPGDYQKATQRVYVAPGQGSYISLPVR", - "vessel_id": "v0", - "ecnumber": "3.1.1.43", - "organism": "Xanthomonas campestris pv. campestris", - "organism_tax_id": null, - "references": [], - "ld_id": "enzml:Protein/638564b1-9a50-4444-b4b2-87bd275e8789", - "ld_type": [ - "enzml:Protein", - "schema:Protein" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "name": "schema:name", - "sequence": "OBO:GSSO_007262", - "vessel_id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "organism": "OBO:OBI_0100026", - "organism_tax_id": { - "@type": "@id" - }, - "references": { - "@id": "schema:citation", - "@type": "@id" - } - } - } - ], - "complexes": [ - { - "id": "c0", - "name": "E·PGME", - "constant": false, - "vessel_id": "v0", - "participants": [ - "p0", - "s0" - ], - "ld_id": "enzml:Complex/f0f97475-885f-400c-b452-f4ae33c01ea9", - "ld_type": [ - "enzml:Complex" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "name": "schema:name", - "vessel_id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "participants": { - "@type": "@id" - } - } - }, - { - "id": "c1", - "name": "E·7-ADCA", - "constant": false, - "vessel_id": "v0", - "participants": [ - "p0", - "s1" - ], - "ld_id": "enzml:Complex/401cc220-8bef-4fae-a7ec-959d01d5883d", - "ld_type": [ - "enzml:Complex" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "name": "schema:name", - "vessel_id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "participants": { - "@type": "@id" - } - } - }, - { - "id": "c2", - "name": "E·PG", - "constant": false, - "vessel_id": "v0", - "participants": [ - "p0", - "s3" - ], - "ld_id": "enzml:Complex/3e326d35-1cad-4731-9b27-97960342e304", - "ld_type": [ - "enzml:Complex" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "name": "schema:name", - "vessel_id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "participants": { - "@type": "@id" - } - } - }, - { - "id": "c3", - "name": "E·PGME·PGME", - "constant": false, - "vessel_id": "v0", - "participants": [ - "p0", - "s0", - "s0" - ], - "ld_id": "enzml:Complex/dbce2f22-46d6-41ae-b2de-66bedbfbd972", - "ld_type": [ - "enzml:Complex" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "name": "schema:name", - "vessel_id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "participants": { - "@type": "@id" - } - } - }, - { - "id": "c4", - "name": "EA·7-ADCA", - "constant": false, - "vessel_id": "v0", - "participants": [ - "p1", - "s1" - ], - "ld_id": "enzml:Complex/dd3cbb89-a5de-40d5-b78d-eaf4267d97b4", - "ld_type": [ - "enzml:Complex" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "name": "schema:name", - "vessel_id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "participants": { - "@type": "@id" - } - } - }, - { - "id": "c5", - "name": "EA·PGME", - "constant": false, - "vessel_id": "v0", - "participants": [ - "p1", - "s0" - ], - "ld_id": "enzml:Complex/e055e710-db5b-4262-8d16-70db4c5e1fc6", - "ld_type": [ - "enzml:Complex" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "name": "schema:name", - "vessel_id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "participants": { - "@type": "@id" - } - } - }, - { - "id": "c6", - "name": "E·CEX", - "constant": false, - "vessel_id": "v0", - "participants": [ - "p0", - "s2" - ], - "ld_id": "enzml:Complex/5c618563-3716-421c-a370-26879bd5c2cb", - "ld_type": [ - "enzml:Complex" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "name": "schema:name", - "vessel_id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "participants": { - "@type": "@id" - } - } - } - ], - "small_molecules": [ - { - "id": "s0", - "name": "PGME", - "constant": false, - "vessel_id": "v0", - "canonical_smiles": null, - "inchi": null, - "inchikey": null, - "references": [], - "ld_id": "enzml:SmallMolecule/8c659398-51c8-4505-84ac-2ae632e2678f", - "ld_type": [ - "enzml:SmallMolecule" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "name": "schema:name", - "vessel_id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "references": { - "@id": "schema:citation", - "@type": "@id" - } - } - }, - { - "id": "s1", - "name": "7-ADCA", - "constant": false, - "vessel_id": "v0", - "canonical_smiles": null, - "inchi": null, - "inchikey": null, - "references": [], - "ld_id": "enzml:SmallMolecule/63fd699f-6eeb-4c3d-abf0-d57f88736842", - "ld_type": [ - "enzml:SmallMolecule" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "name": "schema:name", - "vessel_id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "references": { - "@id": "schema:citation", - "@type": "@id" - } - } - }, - { - "id": "s2", - "name": "CEX", - "constant": false, - "vessel_id": "v0", - "canonical_smiles": null, - "inchi": null, - "inchikey": null, - "references": [], - "ld_id": "enzml:SmallMolecule/ab8d546e-8e9c-4886-be29-c662cd5ac6ed", - "ld_type": [ - "enzml:SmallMolecule" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "name": "schema:name", - "vessel_id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "references": { - "@id": "schema:citation", - "@type": "@id" - } - } - }, - { - "id": "s3", - "name": "PG", - "constant": false, - "vessel_id": "v0", - "canonical_smiles": null, - "inchi": null, - "inchikey": null, - "references": [], - "ld_id": "enzml:SmallMolecule/75118467-a7a8-4853-98d5-c4756d28bc50", - "ld_type": [ - "enzml:SmallMolecule" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "name": "schema:name", - "vessel_id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "references": { - "@id": "schema:citation", - "@type": "@id" - } - } - } - ], - "reactions": [ - { - "id": "r0", - "name": "reaction-1", - "reversible": false, - "kinetic_law": { - "species_id": "v", - "equation": "v_r * (K_n * c1 - p0 * s1)", - "equation_type": "rateLaw", - "variables": [ - { - "id": "s1", - "name": "s1", - "symbol": "s1", - "ld_id": "enzml:Variable/971d0adb-5c5a-4081-a039-4d1d8dd1a8e7", - "ld_type": [ - "enzml:Variable" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - { - "id": "p0", - "name": "p0", - "symbol": "p0", - "ld_id": "enzml:Variable/02d5cbad-dc84-4e3b-a0ed-ca296254b035", - "ld_type": [ - "enzml:Variable" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - { - "id": "c1", - "name": "c1", - "symbol": "c1", - "ld_id": "enzml:Variable/2c880253-e281-43bc-959e-08cc31712b3d", - "ld_type": [ - "enzml:Variable" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - } - ], - "ld_id": "enzml:Equation/5047aa35-781b-4269-bdc9-ec9bbb8af303", - "ld_type": [ - "enzml:Equation" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - "species": [ - { - "species_id": "c1", - "stoichiometry": -1.0, - "ld_id": "enzml:ReactionElement/d4693642-4983-4deb-91ed-d42244d6aeb9", - "ld_type": [ - "enzml:ReactionElement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - { - "species_id": "p0", - "stoichiometry": 1.0, - "ld_id": "enzml:ReactionElement/00464cf5-210b-49cd-bc4a-b01647e2b378", - "ld_type": [ - "enzml:ReactionElement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - { - "species_id": "s1", - "stoichiometry": 1.0, - "ld_id": "enzml:ReactionElement/22f86a3e-93df-4732-a3ab-4473c442bf08", - "ld_type": [ - "enzml:ReactionElement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - } - ], - "modifiers": [], - "ld_id": "enzml:Reaction/8f3437be-530a-4fb0-b0ab-1e376ab3dda0", - "ld_type": [ - "enzml:Reaction" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "modifiers": { - "@type": "@id" - } - } - }, - { - "id": "r1", - "name": "reaction-2", - "reversible": false, - "kinetic_law": { - "species_id": "v", - "equation": "v_r * (K_s * c0 - p0 * s0)", - "equation_type": "rateLaw", - "variables": [ - { - "id": "s0", - "name": "s0", - "symbol": "s0", - "ld_id": "enzml:Variable/214c6fb7-d3cc-4152-8185-a17b1d456d51", - "ld_type": [ - "enzml:Variable" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - { - "id": "p0", - "name": "p0", - "symbol": "p0", - "ld_id": "enzml:Variable/bed4ee30-3df8-4a9f-9bd5-31e6a3c2b4a6", - "ld_type": [ - "enzml:Variable" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - { - "id": "c0", - "name": "c0", - "symbol": "c0", - "ld_id": "enzml:Variable/1d769d5e-1ba9-4ba2-a894-46001fd6b366", - "ld_type": [ - "enzml:Variable" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - } - ], - "ld_id": "enzml:Equation/89a4111e-eb6d-4e3c-ba50-a94ad6cf758f", - "ld_type": [ - "enzml:Equation" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - "species": [ - { - "species_id": "c0", - "stoichiometry": -1.0, - "ld_id": "enzml:ReactionElement/9f08cbf4-9a2e-4957-8b54-38a883a8bac8", - "ld_type": [ - "enzml:ReactionElement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - { - "species_id": "p0", - "stoichiometry": 1.0, - "ld_id": "enzml:ReactionElement/909e2302-bdb2-4254-808e-0d3c4281a12b", - "ld_type": [ - "enzml:ReactionElement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - { - "species_id": "s0", - "stoichiometry": 1.0, - "ld_id": "enzml:ReactionElement/61441490-e86f-4848-98e1-109abc0033f4", - "ld_type": [ - "enzml:ReactionElement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - } - ], - "modifiers": [], - "ld_id": "enzml:Reaction/3e6054d8-96cf-439c-a8a4-e26fa2789beb", - "ld_type": [ - "enzml:Reaction" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "modifiers": { - "@type": "@id" - } - } - }, - { - "id": "r2", - "name": "reaction-3", - "reversible": false, - "kinetic_law": { - "species_id": "v", - "equation": "k_2 * c0", - "equation_type": "rateLaw", - "variables": [ - { - "id": "c0", - "name": "c0", - "symbol": "c0", - "ld_id": "enzml:Variable/0f6a16e8-3301-4049-8cea-e07e034914ee", - "ld_type": [ - "enzml:Variable" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - } - ], - "ld_id": "enzml:Equation/726b1f62-e4cb-4a27-8f4d-d06f77ee5e24", - "ld_type": [ - "enzml:Equation" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - "species": [ - { - "species_id": "c0", - "stoichiometry": -1.0, - "ld_id": "enzml:ReactionElement/b0a50fb9-3d15-4fa4-a85f-fcb277a52559", - "ld_type": [ - "enzml:ReactionElement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - { - "species_id": "p1", - "stoichiometry": 1.0, - "ld_id": "enzml:ReactionElement/7917f314-62c2-47eb-abe4-1e3ee23730f0", - "ld_type": [ - "enzml:ReactionElement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - } - ], - "modifiers": [], - "ld_id": "enzml:Reaction/94d907be-1582-4b17-933b-a686a9f51c00", - "ld_type": [ - "enzml:Reaction" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "modifiers": { - "@type": "@id" - } - } - }, - { - "id": "r3", - "name": "reaction-4", - "reversible": false, - "kinetic_law": { - "species_id": "v", - "equation": "v_r * (K_si * c3 - c0 * s0)", - "equation_type": "rateLaw", - "variables": [ - { - "id": "s0", - "name": "s0", - "symbol": "s0", - "ld_id": "enzml:Variable/4011eebd-7b0e-44b8-a42c-602d6a845ac0", - "ld_type": [ - "enzml:Variable" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - { - "id": "c0", - "name": "c0", - "symbol": "c0", - "ld_id": "enzml:Variable/b960e75f-7169-4f68-80c3-5e76dae39202", - "ld_type": [ - "enzml:Variable" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - { - "id": "c3", - "name": "c3", - "symbol": "c3", - "ld_id": "enzml:Variable/4dda0271-6bdc-4393-abe7-3428ffe01c8d", - "ld_type": [ - "enzml:Variable" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - } - ], - "ld_id": "enzml:Equation/a12a1708-a3d5-4f7f-9ef9-84fbe4f78a41", - "ld_type": [ - "enzml:Equation" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - "species": [ - { - "species_id": "c3", - "stoichiometry": -1.0, - "ld_id": "enzml:ReactionElement/ecc5491a-c7cb-41ce-bbb8-c382d4262134", - "ld_type": [ - "enzml:ReactionElement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - { - "species_id": "c0", - "stoichiometry": 1.0, - "ld_id": "enzml:ReactionElement/85dd8596-d5fa-46ee-b81c-e14162ce2a45", - "ld_type": [ - "enzml:ReactionElement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - { - "species_id": "s0", - "stoichiometry": 1.0, - "ld_id": "enzml:ReactionElement/c57b30bc-c88d-4366-8c97-f6c80f4047d3", - "ld_type": [ - "enzml:ReactionElement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - } - ], - "modifiers": [], - "ld_id": "enzml:Reaction/2fe6578d-fccd-472a-a26c-ca6e1cd1261d", - "ld_type": [ - "enzml:Reaction" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "modifiers": { - "@type": "@id" - } - } - }, - { - "id": "r4", - "name": "reaction-5", - "reversible": false, - "kinetic_law": { - "species_id": "v", - "equation": "v_r * (K_si * c5 - p1 * s0)", - "equation_type": "rateLaw", - "variables": [ - { - "id": "s0", - "name": "s0", - "symbol": "s0", - "ld_id": "enzml:Variable/75f57280-f199-4c4e-948d-2071fb66bdad", - "ld_type": [ - "enzml:Variable" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - { - "id": "p1", - "name": "p1", - "symbol": "p1", - "ld_id": "enzml:Variable/44b350c3-9d0d-4765-a7bf-8de105f6d7de", - "ld_type": [ - "enzml:Variable" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - { - "id": "c5", - "name": "c5", - "symbol": "c5", - "ld_id": "enzml:Variable/784e7fd6-0403-4cb2-bfa8-9cbf8eb23636", - "ld_type": [ - "enzml:Variable" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - } - ], - "ld_id": "enzml:Equation/2fe9840a-6a8d-4eae-af44-8b60a1d6f47b", - "ld_type": [ - "enzml:Equation" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - "species": [ - { - "species_id": "c5", - "stoichiometry": -1.0, - "ld_id": "enzml:ReactionElement/a7d77bf7-ba61-4cb2-b51c-df33c394be18", - "ld_type": [ - "enzml:ReactionElement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - { - "species_id": "p1", - "stoichiometry": 1.0, - "ld_id": "enzml:ReactionElement/709caa37-1250-480f-a269-7fda749d32f0", - "ld_type": [ - "enzml:ReactionElement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - { - "species_id": "s0", - "stoichiometry": 1.0, - "ld_id": "enzml:ReactionElement/cb85e162-1e28-4005-87ee-50b6d8621ed1", - "ld_type": [ - "enzml:ReactionElement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - } - ], - "modifiers": [], - "ld_id": "enzml:Reaction/75668426-e351-443c-93bc-01b46480e4a3", - "ld_type": [ - "enzml:Reaction" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "modifiers": { - "@type": "@id" - } - } - }, - { - "id": "r5", - "name": "reaction-6", - "reversible": false, - "kinetic_law": { - "species_id": "v", - "equation": "k_6 * c5", - "equation_type": "rateLaw", - "variables": [ - { - "id": "c5", - "name": "c5", - "symbol": "c5", - "ld_id": "enzml:Variable/3c2c9fdb-3fef-42a3-a43e-66590bbb08ea", - "ld_type": [ - "enzml:Variable" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - } - ], - "ld_id": "enzml:Equation/a13ed3cd-809f-4439-a3d4-da572a0bb5bc", - "ld_type": [ - "enzml:Equation" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - "species": [ - { - "species_id": "c5", - "stoichiometry": -1.0, - "ld_id": "enzml:ReactionElement/01f8c19c-e02a-4076-a2bd-fd6eb3fa7269", - "ld_type": [ - "enzml:ReactionElement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, + "name": "EnzymeML_Lagerman", + "created": null, + "modified": null, + "creators": [], + "vessels": [ { - "species_id": "p0", - "stoichiometry": 1.0, - "ld_id": "enzml:ReactionElement/3f2f9b4e-262b-4b23-b989-6ef568d956c1", - "ld_type": [ - "enzml:ReactionElement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - { - "species_id": "s3", - "stoichiometry": 1.0, - "ld_id": "enzml:ReactionElement/be74940b-086a-42ef-ab80-0c9f9220ccc7", - "ld_type": [ - "enzml:ReactionElement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - } - ], - "modifiers": [], - "ld_id": "enzml:Reaction/b4a85800-5079-4cd0-a780-dd02014ea5a9", - "ld_type": [ - "enzml:Reaction" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "modifiers": { - "@type": "@id" - } - } - }, - { - "id": "r6", - "name": "reaction-7", - "reversible": false, - "kinetic_law": { - "species_id": "v", - "equation": "k_3 * p1", - "equation_type": "rateLaw", - "variables": [ - { - "id": "p1", - "name": "p1", - "symbol": "p1", - "ld_id": "enzml:Variable/1a6aac18-8d28-4dec-b2b1-49f8d7488fc7", + "id": "v0", + "name": "Falcon Tube", + "volume": 5.0, + "unit": { + "id": "u0", + "name": "ml", + "base_units": [ + { + "kind": "litre", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "constant": true, + "ld_id": "enzml:Vessel/9f2068bd-e37c-4695-aaa1-bd0c92391a4f", "ld_type": [ - "enzml:Variable" + "enzml:Vessel", + "OBO:OBI_0400081" ], "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "volume": "OBO:OBI_0002139" } - } - ], - "ld_id": "enzml:Equation/71b31b48-cc6e-4ff9-ac48-6f203f60f731", - "ld_type": [ - "enzml:Equation" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } } - }, - "species": [ + ], + "proteins": [ { - "species_id": "p1", - "stoichiometry": -1.0, - "ld_id": "enzml:ReactionElement/a7103732-ed00-4eda-9fa6-75760f57fdc6", - "ld_type": [ - "enzml:ReactionElement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - { - "species_id": "p0", - "stoichiometry": 1.0, - "ld_id": "enzml:ReactionElement/11d876e5-5ee9-40a2-a4b3-87bf87a88851", - "ld_type": [ - "enzml:ReactionElement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - { - "species_id": "s3", - "stoichiometry": 1.0, - "ld_id": "enzml:ReactionElement/012807ed-01e4-4119-b85b-e59c3eea4915", - "ld_type": [ - "enzml:ReactionElement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - } - ], - "modifiers": [], - "ld_id": "enzml:Reaction/9b297827-5349-45ad-ae8e-2ad40beebd2a", - "ld_type": [ - "enzml:Reaction" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "modifiers": { - "@type": "@id" - } - } - }, - { - "id": "r7", - "name": "reaction-8", - "reversible": false, - "kinetic_law": { - "species_id": "v", - "equation": "v_r * (K_pg * c2 - p0 * s3)", - "equation_type": "rateLaw", - "variables": [ - { - "id": "s3", - "name": "s3", - "symbol": "s3", - "ld_id": "enzml:Variable/dd660689-30b4-41d3-aa6b-42c291e625df", - "ld_type": [ - "enzml:Variable" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - { "id": "p0", - "name": "p0", - "symbol": "p0", - "ld_id": "enzml:Variable/5d8e45e4-cdf7-434a-ba59-c387db7ae6c4", - "ld_type": [ - "enzml:Variable" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - { - "id": "c2", - "name": "c2", - "symbol": "c2", - "ld_id": "enzml:Variable/1c46c351-7977-47c5-89ba-3c734784e4f2", + "name": "E", + "constant": false, + "sequence": "MRRLAACLLATAVAAATSAALAQTSPMTPDITGKPFVAGDAANDYVKREVMIPMRDGVKLHTVIVLPKGARNAPIVLTRTPYDASGRTERLASPHMKDLLSAGDDVFVEGGYIRVFQDVRGKYGSEGDYVMTRPLRGPLNPSEVDHATDAWDTIDWLVKNVKESNGKVGMIGSSYEGFTVVMALTNPHPALKVAAPESPMIDGWMGDDWFNYGAFRQVNFDYFTGQLSKRGKGAGIPRQGHDDYSNFLQAGSAGDFAKAAGLEQLPWWHKLTEHAAYDSFWQEQALDKVMARTPLKVPTMWLQGLWDQEDMWGAIHSYAAMEPRDKSNKLNYLVMGPWRHSQVNSDASSLGALNFDGDTARQFRRDVLRPFFDQYLVDGAPKAATPPVFIYNTGENHWDRLQAWPRSCDKGCAAKSKPLYLQAGGKLSFQAPTAAQPAFEEYVSDPAKPVPFVPRPVDFGDRSMWTTWLVHDQRFVDGRPDVLTFVTEPLTAPLQIAGAPDVHLQASTSGSDSDWVVKLIDVYPDEMAADPKMGGYELPVSMAIFRGRYRESFSTPAPLAANQPLAFQFGLPTANHTFQPGHRVMVQVQSSLFPLYDRNPQTYVPNVFFAKPGDYQKATQRVYVAPGQGSYISLPVR", + "vessel_id": "v0", + "ecnumber": "3.1.1.43", + "organism": "Xanthomonas campestris pv. campestris", + "organism_tax_id": null, + "references": [], + "ld_id": "enzml:Protein/b38cd461-6992-4a9d-b4dc-2af56a220ee3", "ld_type": [ - "enzml:Variable" + "enzml:Protein", + "schema:Protein" ], "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - } - ], - "ld_id": "enzml:Equation/2b95d1c0-d186-463f-aa6a-c7a6c6f717b1", - "ld_type": [ - "enzml:Equation" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - "species": [ - { - "species_id": "c2", - "stoichiometry": -1.0, - "ld_id": "enzml:ReactionElement/2d9dd027-edbd-4eef-849f-518b860791eb", - "ld_type": [ - "enzml:ReactionElement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - { - "species_id": "p0", - "stoichiometry": 1.0, - "ld_id": "enzml:ReactionElement/7436a676-81f5-4950-80d7-3ca17f2e6bd9", - "ld_type": [ - "enzml:ReactionElement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "sequence": "OBO:GSSO_007262", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "organism": "OBO:OBI_0100026", + "organism_tax_id": { + "@type": "@id" + }, + "references": { + "@id": "schema:citation", + "@type": "@id" + } } - } }, { - "species_id": "s3", - "stoichiometry": 1.0, - "ld_id": "enzml:ReactionElement/828029a7-638e-43fd-b074-0573da301f9a", - "ld_type": [ - "enzml:ReactionElement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - } - ], - "modifiers": [], - "ld_id": "enzml:Reaction/907c47f3-af74-4997-8dd1-d2a168484827", - "ld_type": [ - "enzml:Reaction" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "modifiers": { - "@type": "@id" - } - } - }, - { - "id": "r8", - "name": "reaction-9", - "reversible": false, - "kinetic_law": { - "species_id": "v", - "equation": "v_r * (K_n * c4 - p1 * s1)", - "equation_type": "rateLaw", - "variables": [ - { - "id": "s1", - "name": "s1", - "symbol": "s1", - "ld_id": "enzml:Variable/f0074061-7903-46af-8b1c-dd6aa747fc4f", - "ld_type": [ - "enzml:Variable" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - { "id": "p1", - "name": "p1", - "symbol": "p1", - "ld_id": "enzml:Variable/e64c0470-962c-498c-86e8-c29136300483", + "name": "EA", + "constant": false, + "sequence": "MRRLAACLLATAVAAATSAALAQTSPMTPDITGKPFVAGDAANDYVKREVMIPMRDGVKLHTVIVLPKGARNAPIVLTRTPYDASGRTERLASPHMKDLLSAGDDVFVEGGYIRVFQDVRGKYGSEGDYVMTRPLRGPLNPSEVDHATDAWDTIDWLVKNVKESNGKVGMIGSSYEGFTVVMALTNPHPALKVAAPESPMIDGWMGDDWFNYGAFRQVNFDYFTGQLSKRGKGAGIPRQGHDDYSNFLQAGSAGDFAKAAGLEQLPWWHKLTEHAAYDSFWQEQALDKVMARTPLKVPTMWLQGLWDQEDMWGAIHSYAAMEPRDKSNKLNYLVMGPWRHSQVNSDASSLGALNFDGDTARQFRRDVLRPFFDQYLVDGAPKAATPPVFIYNTGENHWDRLQAWPRSCDKGCAAKSKPLYLQAGGKLSFQAPTAAQPAFEEYVSDPAKPVPFVPRPVDFGDRSMWTTWLVHDQRFVDGRPDVLTFVTEPLTAPLQIAGAPDVHLQASTSGSDSDWVVKLIDVYPDEMAADPKMGGYELPVSMAIFRGRYRESFSTPAPLAANQPLAFQFGLPTANHTFQPGHRVMVQVQSSLFPLYDRNPQTYVPNVFFAKPGDYQKATQRVYVAPGQGSYISLPVR", + "vessel_id": "v0", + "ecnumber": "3.1.1.43", + "organism": "Xanthomonas campestris pv. campestris", + "organism_tax_id": null, + "references": [], + "ld_id": "enzml:Protein/b584030e-eb06-404d-b7b9-0d9255affb41", "ld_type": [ - "enzml:Variable" + "enzml:Protein", + "schema:Protein" ], "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "sequence": "OBO:GSSO_007262", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "organism": "OBO:OBI_0100026", + "organism_tax_id": { + "@type": "@id" + }, + "references": { + "@id": "schema:citation", + "@type": "@id" + } } - }, - { - "id": "c4", - "name": "c4", - "symbol": "c4", - "ld_id": "enzml:Variable/439de57d-0f8a-4fbe-b15e-e0f13c4cf924", - "ld_type": [ - "enzml:Variable" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - } - ], - "ld_id": "enzml:Equation/69b13cf8-21f9-4dda-a3f2-2f21cd17cf17", - "ld_type": [ - "enzml:Equation" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - "species": [ - { - "species_id": "c4", - "stoichiometry": -1.0, - "ld_id": "enzml:ReactionElement/4910e857-276a-4c64-8ba0-37fc97c67157", - "ld_type": [ - "enzml:ReactionElement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } }, { - "species_id": "p1", - "stoichiometry": 1.0, - "ld_id": "enzml:ReactionElement/1a4d2adc-8fbd-452f-8c30-f23dd43b607c", - "ld_type": [ - "enzml:ReactionElement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - { - "species_id": "s1", - "stoichiometry": 1.0, - "ld_id": "enzml:ReactionElement/5d6747ec-6504-4c02-a7a1-aea54c6aa0cf", - "ld_type": [ - "enzml:ReactionElement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - } - ], - "modifiers": [], - "ld_id": "enzml:Reaction/50dfed1c-e617-46d8-9ce0-a7fab3bb7145", - "ld_type": [ - "enzml:Reaction" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "modifiers": { - "@type": "@id" - } - } - }, - { - "id": "r9", - "name": "reaction-10", - "reversible": false, - "kinetic_law": { - "species_id": "v", - "equation": "k_5 * c4", - "equation_type": "rateLaw", - "variables": [ - { - "id": "c4", - "name": "c4", - "symbol": "c4", - "ld_id": "enzml:Variable/08e25ab0-f6ae-4fd4-a0ca-066c2ddf31ba", + "id": "p2", + "name": "ED", + "constant": false, + "sequence": "MRRLAACLLATAVAAATSAALAQTSPMTPDITGKPFVAGDAANDYVKREVMIPMRDGVKLHTVIVLPKGARNAPIVLTRTPYDASGRTERLASPHMKDLLSAGDDVFVEGGYIRVFQDVRGKYGSEGDYVMTRPLRGPLNPSEVDHATDAWDTIDWLVKNVKESNGKVGMIGSSYEGFTVVMALTNPHPALKVAAPESPMIDGWMGDDWFNYGAFRQVNFDYFTGQLSKRGKGAGIPRQGHDDYSNFLQAGSAGDFAKAAGLEQLPWWHKLTEHAAYDSFWQEQALDKVMARTPLKVPTMWLQGLWDQEDMWGAIHSYAAMEPRDKSNKLNYLVMGPWRHSQVNSDASSLGALNFDGDTARQFRRDVLRPFFDQYLVDGAPKAATPPVFIYNTGENHWDRLQAWPRSCDKGCAAKSKPLYLQAGGKLSFQAPTAAQPAFEEYVSDPAKPVPFVPRPVDFGDRSMWTTWLVHDQRFVDGRPDVLTFVTEPLTAPLQIAGAPDVHLQASTSGSDSDWVVKLIDVYPDEMAADPKMGGYELPVSMAIFRGRYRESFSTPAPLAANQPLAFQFGLPTANHTFQPGHRVMVQVQSSLFPLYDRNPQTYVPNVFFAKPGDYQKATQRVYVAPGQGSYISLPVR", + "vessel_id": "v0", + "ecnumber": "3.1.1.43", + "organism": "Xanthomonas campestris pv. campestris", + "organism_tax_id": null, + "references": [], + "ld_id": "enzml:Protein/638564b1-9a50-4444-b4b2-87bd275e8789", "ld_type": [ - "enzml:Variable" + "enzml:Protein", + "schema:Protein" ], "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "sequence": "OBO:GSSO_007262", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "organism": "OBO:OBI_0100026", + "organism_tax_id": { + "@type": "@id" + }, + "references": { + "@id": "schema:citation", + "@type": "@id" + } } - } - ], - "ld_id": "enzml:Equation/ad546dea-0d0e-429a-816f-1bb96524613d", - "ld_type": [ - "enzml:Equation" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } } - }, - "species": [ - { - "species_id": "c4", - "stoichiometry": -1.0, - "ld_id": "enzml:ReactionElement/a3815bf1-2ef7-41c3-957e-e4ca8798edc7", - "ld_type": [ - "enzml:ReactionElement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - { - "species_id": "p0", - "stoichiometry": 1.0, - "ld_id": "enzml:ReactionElement/8f2d7dd0-0e03-486e-89d0-44c24c71a25c", - "ld_type": [ - "enzml:ReactionElement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - { - "species_id": "s3", - "stoichiometry": 1.0, - "ld_id": "enzml:ReactionElement/6644a428-0a2d-4169-9e1b-2f7cc959777f", - "ld_type": [ - "enzml:ReactionElement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, + ], + "complexes": [ { - "species_id": "s1", - "stoichiometry": 1.0, - "ld_id": "enzml:ReactionElement/6dbed8a0-8a39-48ce-b19f-05659e6389bd", - "ld_type": [ - "enzml:ReactionElement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - } - ], - "modifiers": [], - "ld_id": "enzml:Reaction/6ecf09b4-5753-4550-8de9-244f800f72f7", - "ld_type": [ - "enzml:Reaction" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "modifiers": { - "@type": "@id" - } - } - }, - { - "id": "r10", - "name": "reaction-11", - "reversible": false, - "kinetic_law": { - "species_id": "v", - "equation": "k_4 * c4 - k_4b * c6", - "equation_type": "rateLaw", - "variables": [ - { - "id": "c4", - "name": "c4", - "symbol": "c4", - "ld_id": "enzml:Variable/4fbb78a6-c213-4092-955a-6d235a2bd720", - "ld_type": [ - "enzml:Variable" + "id": "c0", + "name": "E\u00b7PGME", + "constant": false, + "vessel_id": "v0", + "participants": [ + "p0", + "s0" ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - { - "id": "c6", - "name": "c6", - "symbol": "c6", - "ld_id": "enzml:Variable/a0d2beeb-3253-45c5-b84d-e7ac154d73c7", + "ld_id": "enzml:Complex/f0f97475-885f-400c-b452-f4ae33c01ea9", "ld_type": [ - "enzml:Variable" + "enzml:Complex" ], "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "participants": { + "@type": "@id" + } } - } - ], - "ld_id": "enzml:Equation/6e098e93-a6cc-4f79-bdab-a15633f6a8a6", - "ld_type": [ - "enzml:Equation" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - "species": [ - { - "species_id": "c4", - "stoichiometry": -1.0, - "ld_id": "enzml:ReactionElement/cbf64de3-0593-4c88-9748-9db1fb023d09", - "ld_type": [ - "enzml:ReactionElement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } }, { - "species_id": "c6", - "stoichiometry": 1.0, - "ld_id": "enzml:ReactionElement/eba11dd2-6f27-4f3d-a7ed-1e08331778c8", - "ld_type": [ - "enzml:ReactionElement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - } - ], - "modifiers": [], - "ld_id": "enzml:Reaction/9d373fab-e082-4ff8-87af-f9f28094ebdd", - "ld_type": [ - "enzml:Reaction" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "modifiers": { - "@type": "@id" - } - } - }, - { - "id": "r11", - "name": "reaction-12", - "reversible": false, - "kinetic_law": { - "species_id": "v", - "equation": "v_r * (K_p * c6 - p0 * s2)", - "equation_type": "rateLaw", - "variables": [ - { - "id": "s2", - "name": "s2", - "symbol": "s2", - "ld_id": "enzml:Variable/080842ac-610f-4388-aff3-c12f69593ee9", - "ld_type": [ - "enzml:Variable" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - { - "id": "p0", - "name": "p0", - "symbol": "p0", - "ld_id": "enzml:Variable/d2b4ac64-c06f-4af8-bdc0-34711c91d64e", - "ld_type": [ - "enzml:Variable" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - { - "id": "c6", - "name": "c6", - "symbol": "c6", - "ld_id": "enzml:Variable/1ebc0e8c-9435-4d0a-aea5-d51f43c7009d", - "ld_type": [ - "enzml:Variable" + "id": "c1", + "name": "E\u00b77-ADCA", + "constant": false, + "vessel_id": "v0", + "participants": [ + "p0", + "s1" ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - } - ], - "ld_id": "enzml:Equation/2f444802-cb09-4060-a14e-9734bbee37da", - "ld_type": [ - "enzml:Equation" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - "species": [ - { - "species_id": "c6", - "stoichiometry": -1.0, - "ld_id": "enzml:ReactionElement/0ec57bc4-c3ad-47fb-b63a-b22a2cae91ab", - "ld_type": [ - "enzml:ReactionElement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - { - "species_id": "p0", - "stoichiometry": 1.0, - "ld_id": "enzml:ReactionElement/9de9c2a4-0d9d-4084-aedb-167b1d92fc9f", - "ld_type": [ - "enzml:ReactionElement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - { - "species_id": "s2", - "stoichiometry": 1.0, - "ld_id": "enzml:ReactionElement/6cfe84db-bed4-47bb-b553-0af1a62daf7f", - "ld_type": [ - "enzml:ReactionElement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - } - ], - "modifiers": [], - "ld_id": "enzml:Reaction/345b163a-6e75-4a5b-8d62-0f084cace776", - "ld_type": [ - "enzml:Reaction" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "modifiers": { - "@type": "@id" - } - } - }, - { - "id": "r12", - "name": "Enzyme deactivation", - "reversible": false, - "kinetic_law": { - "species_id": "v", - "equation": "k_d * p0", - "equation_type": "rateLaw", - "variables": [ - { - "id": "p0", - "name": "p0", - "symbol": "p0", - "ld_id": "enzml:Variable/675cbf6a-cff9-4fe5-b1b5-6821fa64864c", + "ld_id": "enzml:Complex/401cc220-8bef-4fae-a7ec-959d01d5883d", "ld_type": [ - "enzml:Variable" + "enzml:Complex" ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - } - ], - "ld_id": "enzml:Equation/3a93338f-f50f-40ce-ac62-ca6c9369b5d5", - "ld_type": [ - "enzml:Equation" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - "species": [ - { - "species_id": "p0", - "stoichiometry": -1.0, - "ld_id": "enzml:ReactionElement/fb9938e9-8da7-4fb2-9a9a-d9da9e9e2ce6", - "ld_type": [ - "enzml:ReactionElement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - { - "species_id": "p2", - "stoichiometry": 1.0, - "ld_id": "enzml:ReactionElement/4272d57c-2808-400f-8a3b-d31398875714", - "ld_type": [ - "enzml:ReactionElement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - } - ], - "modifiers": [], - "ld_id": "enzml:Reaction/1ddb20f5-d8b3-4c3e-a8bf-60bfddea5ed4", - "ld_type": [ - "enzml:Reaction" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "modifiers": { - "@type": "@id" - } - } - } - ], - "measurements": [ - { - "id": "m0", - "name": "Cephalexin synthesis 1", - "species_data": [ - { - "species_id": "p0", - "initial": 0.0002, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [], - "time": [], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/62331a5b-de08-4fda-ae21-841ab384a887", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - } - }, - { - "species_id": "s0", - "initial": 20.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [ - 20.0, - 16.385, - 12.45, - 9.255, - 5.135, - 0.645, - 0.0, - 0.0, - 0.0, - 0.0 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 5.0, - 10.0, - 15.0, - 20.0, - 25.0, - 30.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/9d8df442-f610-465d-9ee3-0bc1891b4218", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - } - }, - { - "species_id": "s1", - "initial": 10.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [ - 10.0, - 8.72, - 7.025, - 5.94, - 5.18, - 5.815, - 7.57, - 8.945, - 9.87, - 10.575 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 5.0, - 10.0, - 15.0, - 20.0, - 25.0, - 30.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/0307adc9-94a0-4e95-80be-ad29aee8b630", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - } - }, - { - "species_id": "s2", - "initial": 0.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [ - 0.0, - 2.66, - 3.885, - 4.815, - 5.755, - 4.9, - 3.24, - 1.915, - 1.075, - 0.575 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 5.0, - 10.0, - 15.0, - 20.0, - 25.0, - 30.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/95e4bfbd-b4ea-4d75-a236-f30566e1de26", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - } - }, - { - "species_id": "s3", - "initial": 2.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [ - 2.0, - 3.705, - 5.77, - 8.035, - 11.965, - 17.28, - 19.93, - 21.36, - 22.55, - 23.38 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 5.0, - 10.0, - 15.0, - 20.0, - 25.0, - 30.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/2f6cd6b4-d030-4b41-b6da-5bd1eca72a93", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - } - } - ], - "group_id": null, - "ph": null, - "temperature": null, - "temperature_unit": null, - "ld_id": "enzml:Measurement/22c3a111-3126-4084-9786-3f2fc98f1c2e", - "ld_type": [ - "enzml:Measurement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "group_id": { - "@type": "@id" - } - } - }, - { - "id": "m1", - "name": "Cephalexin synthesis 2", - "species_data": [ - { - "species_id": "p0", - "initial": 0.0002, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [], - "time": [], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/9768f105-32e5-48f7-b2b7-0a468c66eff5", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - } - }, - { - "species_id": "s0", - "initial": 20.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [ - 20.0, - 16.5, - 12.67, - 9.915, - 5.91, - 1.32, - 0.0, - 0.0, - 0.0, - 0.0 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 5.0, - 10.0, - 15.0, - 20.0, - 25.0, - 30.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/e5a0612d-4981-4ea3-8359-69c6149850a3", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "participants": { + "@type": "@id" + } } - } }, { - "species_id": "s1", - "initial": 20.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [ - 20.0, - 18.58, - 16.255, - 14.82, - 13.14, - 12.625, - 14.2, - 15.445, - 17.02, - 18.5 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 5.0, - 10.0, - 15.0, - 20.0, - 25.0, - 30.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/9dba91b7-7774-4e1a-970b-6c5d476307d7", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" + "id": "c2", + "name": "E\u00b7PG", + "constant": false, + "vessel_id": "v0", + "participants": [ + "p0", + "s3" + ], + "ld_id": "enzml:Complex/3e326d35-1cad-4731-9b27-97960342e304", + "ld_type": [ + "enzml:Complex" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "participants": { + "@type": "@id" + } } - } }, { - "species_id": "s2", - "initial": 0.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [ - 0.0, - 3.205, - 5.09, - 6.385, - 7.855, - 8.225, - 7.17, - 5.63, - 4.1, - 2.0 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 5.0, - 10.0, - 15.0, - 20.0, - 25.0, - 30.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/8f83e27b-9a73-42e4-933b-67ddd3264103", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" + "id": "c3", + "name": "E\u00b7PGME\u00b7PGME", + "constant": false, + "vessel_id": "v0", + "participants": [ + "p0", + "s0", + "s0" + ], + "ld_id": "enzml:Complex/dbce2f22-46d6-41ae-b2de-66bedbfbd972", + "ld_type": [ + "enzml:Complex" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "participants": { + "@type": "@id" + } } - } }, { - "species_id": "s3", - "initial": 1.3, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [ - 1.3, - 2.955, - 4.615, - 6.175, - 8.8, - 13.25, - 16.055, - 17.62, - 19.34, - 20.8 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 5.0, - 10.0, - 15.0, - 20.0, - 25.0, - 30.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/2332118c-0d4f-499b-9e3f-48934d22dc4b", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" + "id": "c4", + "name": "EA\u00b77-ADCA", + "constant": false, + "vessel_id": "v0", + "participants": [ + "p1", + "s1" + ], + "ld_id": "enzml:Complex/dd3cbb89-a5de-40d5-b78d-eaf4267d97b4", + "ld_type": [ + "enzml:Complex" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "participants": { + "@type": "@id" + } } - } - } - ], - "group_id": null, - "ph": null, - "temperature": null, - "temperature_unit": null, - "ld_id": "enzml:Measurement/2c50a391-7689-4089-ab21-21671a1dde43", - "ld_type": [ - "enzml:Measurement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" }, - "group_id": { - "@type": "@id" - } - } - }, - { - "id": "m2", - "name": "Cephalexin synthesis 3", - "species_data": [ { - "species_id": "p0", - "initial": 0.0002, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [], - "time": [], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/6c80f602-2c78-41b1-8466-5775db9ba744", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" + "id": "c5", + "name": "EA\u00b7PGME", + "constant": false, + "vessel_id": "v0", + "participants": [ + "p1", + "s0" + ], + "ld_id": "enzml:Complex/e055e710-db5b-4262-8d16-70db4c5e1fc6", + "ld_type": [ + "enzml:Complex" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "participants": { + "@type": "@id" + } } - } }, { - "species_id": "s0", - "initial": 20.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [ - 20.0, - 13.005, - 9.505, - 7.21, - 4.0, - 0.91, - 0.0, - 0.0, - 0.0, - 0.0 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 5.0, - 10.0, - 15.0, - 20.0, - 25.0, - 30.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/d63e21bc-318a-42e9-ace9-da7cb799b01f", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" + "id": "c6", + "name": "E\u00b7CEX", + "constant": false, + "vessel_id": "v0", + "participants": [ + "p0", + "s2" + ], + "ld_id": "enzml:Complex/5c618563-3716-421c-a370-26879bd5c2cb", + "ld_type": [ + "enzml:Complex" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "participants": { + "@type": "@id" + } } - } - }, + } + ], + "small_molecules": [ { - "species_id": "s1", - "initial": 40.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [ - 40.0, - 36.555, - 33.87, - 32.49, - 30.405, - 29.985, - 30.675, - 31.905, - 33.045, - 34.525 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 5.0, - 10.0, - 15.0, - 20.0, - 25.0, - 30.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/ae18349c-636b-4ad7-954e-4b54a9308515", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" + "id": "s0", + "name": "PGME", + "constant": false, + "vessel_id": "v0", + "canonical_smiles": null, + "inchi": null, + "inchikey": null, + "references": [], + "ld_id": "enzml:SmallMolecule/8c659398-51c8-4505-84ac-2ae632e2678f", + "ld_type": [ + "enzml:SmallMolecule" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "references": { + "@id": "schema:citation", + "@type": "@id" + } } - } }, { - "species_id": "s2", - "initial": 0.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [ - 0.0, - 3.59, - 5.57, - 6.85, - 8.24, - 8.945, - 8.18, - 7.255, - 6.39, - 5.69 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 5.0, - 10.0, - 15.0, - 20.0, - 25.0, - 30.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/9b8e2306-f984-4047-845e-e955aa4c5f70", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" + "id": "s1", + "name": "7-ADCA", + "constant": false, + "vessel_id": "v0", + "canonical_smiles": null, + "inchi": null, + "inchikey": null, + "references": [], + "ld_id": "enzml:SmallMolecule/63fd699f-6eeb-4c3d-abf0-d57f88736842", + "ld_type": [ + "enzml:SmallMolecule" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "references": { + "@id": "schema:citation", + "@type": "@id" + } } - } }, { - "species_id": "s3", - "initial": 5.1, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [ - 5.1, - 6.365, - 7.59, - 8.59, - 10.13, - 12.93, - 14.565, - 15.8, - 16.98, - 18.15 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 5.0, - 10.0, - 15.0, - 20.0, - 25.0, - 30.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/611fb06f-e89c-4d14-8aab-a13251748728", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" + "id": "s2", + "name": "CEX", + "constant": false, + "vessel_id": "v0", + "canonical_smiles": null, + "inchi": null, + "inchikey": null, + "references": [], + "ld_id": "enzml:SmallMolecule/ab8d546e-8e9c-4886-be29-c662cd5ac6ed", + "ld_type": [ + "enzml:SmallMolecule" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "references": { + "@id": "schema:citation", + "@type": "@id" + } } - } - } - ], - "group_id": null, - "ph": null, - "temperature": null, - "temperature_unit": null, - "ld_id": "enzml:Measurement/4c80e685-29e9-4322-95bb-e7cb9d345cc8", - "ld_type": [ - "enzml:Measurement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" }, - "group_id": { - "@type": "@id" - } - } - }, - { - "id": "m3", - "name": "Cephalexin synthesis 4", - "species_data": [ { - "species_id": "p0", - "initial": 0.0002, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [], - "time": [], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/cfbc6dc6-d7b2-48bc-b596-9ba8b2a88d4f", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" + "id": "s3", + "name": "PG", + "constant": false, + "vessel_id": "v0", + "canonical_smiles": null, + "inchi": null, + "inchikey": null, + "references": [], + "ld_id": "enzml:SmallMolecule/75118467-a7a8-4853-98d5-c4756d28bc50", + "ld_type": [ + "enzml:SmallMolecule" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "references": { + "@id": "schema:citation", + "@type": "@id" + } } - } - }, + } + ], + "reactions": [ { - "species_id": "s0", - "initial": 20.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [ - 20.0, - 15.345, - 11.64, - 8.975, - 5.265, - 1.455, - 0.385, - 0.0, - 0.0, - 0.0 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 5.0, - 10.0, - 15.0, - 20.0, - 25.0, - 30.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } + "id": "r0", + "name": "reaction-1", + "reversible": false, + "kinetic_law": { + "species_id": "v", + "equation": "v_r * (K_n * c1 - p0 * s1)", + "equation_type": "rateLaw", + "variables": [ + { + "id": "s1", + "name": "s1", + "symbol": "s1", + "ld_id": "enzml:Variable/971d0adb-5c5a-4081-a039-4d1d8dd1a8e7", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + { + "id": "p0", + "name": "p0", + "symbol": "p0", + "ld_id": "enzml:Variable/02d5cbad-dc84-4e3b-a0ed-ca296254b035", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + { + "id": "c1", + "name": "c1", + "symbol": "c1", + "ld_id": "enzml:Variable/2c880253-e281-43bc-959e-08cc31712b3d", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } + ], + "ld_id": "enzml:Equation/5047aa35-781b-4269-bdc9-ec9bbb8af303", + "ld_type": [ + "enzml:Equation" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + "modifiers": [], + "ld_id": "enzml:Reaction/8f3437be-530a-4fb0-b0ab-1e376ab3dda0", + "ld_type": [ + "enzml:Reaction" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "modifiers": { + "@type": "@id" + } + }, + "reactants": [ + { + "species_id": "c1", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/d4693642-4983-4deb-91ed-d42244d6aeb9", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } + ], + "products": [ + { + "species_id": "p0", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/00464cf5-210b-49cd-bc4a-b01647e2b378", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + { + "species_id": "s1", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/22f86a3e-93df-4732-a3ab-4473c442bf08", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/8aee4447-9e80-4518-bc17-3c2c84a192fd", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - } }, { - "species_id": "s1", - "initial": 60.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [ - 60.0, - 56.8, - 53.58, - 51.6, - 48.265, - 47.6, - 48.185, - 49.0, - 50.76, - 52.505 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 5.0, - 10.0, - 15.0, - 20.0, - 25.0, - 30.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } + "id": "r1", + "name": "reaction-2", + "reversible": false, + "kinetic_law": { + "species_id": "v", + "equation": "v_r * (K_s * c0 - p0 * s0)", + "equation_type": "rateLaw", + "variables": [ + { + "id": "s0", + "name": "s0", + "symbol": "s0", + "ld_id": "enzml:Variable/214c6fb7-d3cc-4152-8185-a17b1d456d51", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + { + "id": "p0", + "name": "p0", + "symbol": "p0", + "ld_id": "enzml:Variable/bed4ee30-3df8-4a9f-9bd5-31e6a3c2b4a6", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + { + "id": "c0", + "name": "c0", + "symbol": "c0", + "ld_id": "enzml:Variable/1d769d5e-1ba9-4ba2-a894-46001fd6b366", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } + ], + "ld_id": "enzml:Equation/89a4111e-eb6d-4e3c-ba50-a94ad6cf758f", + "ld_type": [ + "enzml:Equation" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + "modifiers": [], + "ld_id": "enzml:Reaction/3e6054d8-96cf-439c-a8a4-e26fa2789beb", + "ld_type": [ + "enzml:Reaction" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "modifiers": { + "@type": "@id" + } + }, + "reactants": [ + { + "species_id": "c0", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/9f08cbf4-9a2e-4957-8b54-38a883a8bac8", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } + ], + "products": [ + { + "species_id": "p0", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/909e2302-bdb2-4254-808e-0d3c4281a12b", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + { + "species_id": "s0", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/61441490-e86f-4848-98e1-109abc0033f4", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/8b99aa98-312f-4973-ad85-048dbb32f25e", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - } }, { - "species_id": "s2", - "initial": 0.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [ - 0.0, - 3.77, - 6.11, - 7.74, - 9.595, - 11.325, - 11.065, - 10.2, - 9.66, - 9.005 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 5.0, - 10.0, - 15.0, - 20.0, - 25.0, - 30.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } + "id": "r2", + "name": "reaction-3", + "reversible": false, + "kinetic_law": { + "species_id": "v", + "equation": "k_2 * c0", + "equation_type": "rateLaw", + "variables": [ + { + "id": "c0", + "name": "c0", + "symbol": "c0", + "ld_id": "enzml:Variable/0f6a16e8-3301-4049-8cea-e07e034914ee", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } + ], + "ld_id": "enzml:Equation/726b1f62-e4cb-4a27-8f4d-d06f77ee5e24", + "ld_type": [ + "enzml:Equation" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + "modifiers": [], + "ld_id": "enzml:Reaction/94d907be-1582-4b17-933b-a686a9f51c00", + "ld_type": [ + "enzml:Reaction" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "modifiers": { + "@type": "@id" + } + }, + "reactants": [ + { + "species_id": "c0", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/b0a50fb9-3d15-4fa4-a85f-fcb277a52559", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } + ], + "products": [ + { + "species_id": "p1", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/7917f314-62c2-47eb-abe4-1e3ee23730f0", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/bdfb87bb-eb23-4528-92c3-4a0bed112b5b", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - } }, { - "species_id": "s3", - "initial": 1.9, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [ - 1.9, - 2.94, - 3.99, - 4.935, - 6.305, - 8.87, - 10.61, - 12.0, - 13.075, - 14.24 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 5.0, - 10.0, - 15.0, - 20.0, - 25.0, - 30.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } + "id": "r3", + "name": "reaction-4", + "reversible": false, + "kinetic_law": { + "species_id": "v", + "equation": "v_r * (K_si * c3 - c0 * s0)", + "equation_type": "rateLaw", + "variables": [ + { + "id": "s0", + "name": "s0", + "symbol": "s0", + "ld_id": "enzml:Variable/4011eebd-7b0e-44b8-a42c-602d6a845ac0", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + { + "id": "c0", + "name": "c0", + "symbol": "c0", + "ld_id": "enzml:Variable/b960e75f-7169-4f68-80c3-5e76dae39202", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + { + "id": "c3", + "name": "c3", + "symbol": "c3", + "ld_id": "enzml:Variable/4dda0271-6bdc-4393-abe7-3428ffe01c8d", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } + ], + "ld_id": "enzml:Equation/a12a1708-a3d5-4f7f-9ef9-84fbe4f78a41", + "ld_type": [ + "enzml:Equation" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + "modifiers": [], + "ld_id": "enzml:Reaction/2fe6578d-fccd-472a-a26c-ca6e1cd1261d", + "ld_type": [ + "enzml:Reaction" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "modifiers": { + "@type": "@id" + } + }, + "reactants": [ + { + "species_id": "c3", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/ecc5491a-c7cb-41ce-bbb8-c382d4262134", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } + ], + "products": [ + { + "species_id": "c0", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/85dd8596-d5fa-46ee-b81c-e14162ce2a45", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + { + "species_id": "s0", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/c57b30bc-c88d-4366-8c97-f6c80f4047d3", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/db22ffba-50b9-4a33-815c-6c311bef4ecc", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - } - } - ], - "group_id": null, - "ph": null, - "temperature": null, - "temperature_unit": null, - "ld_id": "enzml:Measurement/9d877b28-bfb8-475b-991d-ed7ab5b23e9c", - "ld_type": [ - "enzml:Measurement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" }, - "group_id": { - "@type": "@id" - } - } - }, - { - "id": "m4", - "name": "Cephalexin synthesis 5", - "species_data": [ { - "species_id": "p0", - "initial": 0.0002, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [], - "time": [], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } + "id": "r4", + "name": "reaction-5", + "reversible": false, + "kinetic_law": { + "species_id": "v", + "equation": "v_r * (K_si * c5 - p1 * s0)", + "equation_type": "rateLaw", + "variables": [ + { + "id": "s0", + "name": "s0", + "symbol": "s0", + "ld_id": "enzml:Variable/75f57280-f199-4c4e-948d-2071fb66bdad", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + { + "id": "p1", + "name": "p1", + "symbol": "p1", + "ld_id": "enzml:Variable/44b350c3-9d0d-4765-a7bf-8de105f6d7de", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + { + "id": "c5", + "name": "c5", + "symbol": "c5", + "ld_id": "enzml:Variable/784e7fd6-0403-4cb2-bfa8-9cbf8eb23636", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } + ], + "ld_id": "enzml:Equation/2fe9840a-6a8d-4eae-af44-8b60a1d6f47b", + "ld_type": [ + "enzml:Equation" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + "modifiers": [], + "ld_id": "enzml:Reaction/75668426-e351-443c-93bc-01b46480e4a3", + "ld_type": [ + "enzml:Reaction" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "modifiers": { + "@type": "@id" + } + }, + "reactants": [ + { + "species_id": "c5", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/a7d77bf7-ba61-4cb2-b51c-df33c394be18", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } + ], + "products": [ + { + "species_id": "p1", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/709caa37-1250-480f-a269-7fda749d32f0", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + { + "species_id": "s0", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/cb85e162-1e28-4005-87ee-50b6d8621ed1", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/0c064d8a-3dea-4a11-99f3-c58b9256859b", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - } }, { - "species_id": "s0", - "initial": 20.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [ - 20.0, - 15.34, - 12.075, - 9.335, - 5.515, - 1.46, - 0.35, - 0.0, - 0.0, - 0.0 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 5.0, - 10.0, - 15.0, - 20.0, - 25.0, - 30.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } + "id": "r5", + "name": "reaction-6", + "reversible": false, + "kinetic_law": { + "species_id": "v", + "equation": "k_6 * c5", + "equation_type": "rateLaw", + "variables": [ + { + "id": "c5", + "name": "c5", + "symbol": "c5", + "ld_id": "enzml:Variable/3c2c9fdb-3fef-42a3-a43e-66590bbb08ea", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } + ], + "ld_id": "enzml:Equation/a13ed3cd-809f-4439-a3d4-da572a0bb5bc", + "ld_type": [ + "enzml:Equation" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + "modifiers": [], + "ld_id": "enzml:Reaction/b4a85800-5079-4cd0-a780-dd02014ea5a9", + "ld_type": [ + "enzml:Reaction" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "modifiers": { + "@type": "@id" + } + }, + "reactants": [ + { + "species_id": "c5", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/01f8c19c-e02a-4076-a2bd-fd6eb3fa7269", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } + ], + "products": [ + { + "species_id": "p0", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/3f2f9b4e-262b-4b23-b989-6ef568d956c1", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + { + "species_id": "s3", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/be74940b-086a-42ef-ab80-0c9f9220ccc7", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/47224c1c-24a2-46aa-a761-f752273d74fb", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - } }, { - "species_id": "s1", - "initial": 42.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [ - 42.0, - 38.405, - 36.06, - 34.06, - 31.46, - 29.595, - 30.615, - 31.83, - 32.985, - 34.08 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 5.0, - 10.0, - 15.0, - 20.0, - 25.0, - 30.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } + "id": "r6", + "name": "reaction-7", + "reversible": false, + "kinetic_law": { + "species_id": "v", + "equation": "k_3 * p1", + "equation_type": "rateLaw", + "variables": [ + { + "id": "p1", + "name": "p1", + "symbol": "p1", + "ld_id": "enzml:Variable/1a6aac18-8d28-4dec-b2b1-49f8d7488fc7", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } + ], + "ld_id": "enzml:Equation/71b31b48-cc6e-4ff9-ac48-6f203f60f731", + "ld_type": [ + "enzml:Equation" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + "modifiers": [], + "ld_id": "enzml:Reaction/9b297827-5349-45ad-ae8e-2ad40beebd2a", + "ld_type": [ + "enzml:Reaction" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "modifiers": { + "@type": "@id" + } + }, + "reactants": [ + { + "species_id": "p1", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/a7103732-ed00-4eda-9fa6-75760f57fdc6", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } + ], + "products": [ + { + "species_id": "p0", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/11d876e5-5ee9-40a2-a4b3-87bf87a88851", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + { + "species_id": "s3", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/012807ed-01e4-4119-b85b-e59c3eea4915", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/772f5b44-a554-49d5-a495-ddbe1c405bf1", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - } }, { - "species_id": "s2", - "initial": 0.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [ - 0.0, - 3.42, - 5.52, - 6.99, - 8.78, - 9.875, - 9.44, - 8.515, - 7.47, - 6.695 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 5.0, - 10.0, - 15.0, - 20.0, - 25.0, - 30.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } + "id": "r7", + "name": "reaction-8", + "reversible": false, + "kinetic_law": { + "species_id": "v", + "equation": "v_r * (K_pg * c2 - p0 * s3)", + "equation_type": "rateLaw", + "variables": [ + { + "id": "s3", + "name": "s3", + "symbol": "s3", + "ld_id": "enzml:Variable/dd660689-30b4-41d3-aa6b-42c291e625df", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + { + "id": "p0", + "name": "p0", + "symbol": "p0", + "ld_id": "enzml:Variable/5d8e45e4-cdf7-434a-ba59-c387db7ae6c4", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + { + "id": "c2", + "name": "c2", + "symbol": "c2", + "ld_id": "enzml:Variable/1c46c351-7977-47c5-89ba-3c734784e4f2", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } + ], + "ld_id": "enzml:Equation/2b95d1c0-d186-463f-aa6a-c7a6c6f717b1", + "ld_type": [ + "enzml:Equation" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + "modifiers": [], + "ld_id": "enzml:Reaction/907c47f3-af74-4997-8dd1-d2a168484827", + "ld_type": [ + "enzml:Reaction" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "modifiers": { + "@type": "@id" + } + }, + "reactants": [ + { + "species_id": "c2", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/2d9dd027-edbd-4eef-849f-518b860791eb", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } + ], + "products": [ + { + "species_id": "p0", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/7436a676-81f5-4950-80d7-3ca17f2e6bd9", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + { + "species_id": "s3", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/828029a7-638e-43fd-b074-0573da301f9a", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/f521f18b-db8d-4da0-861e-4b4a1efbf298", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - } }, { - "species_id": "s3", - "initial": 1.5, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [ - 1.5, - 2.815, - 4.105, - 5.085, - 6.69, - 9.535, - 11.49, - 13.08, - 14.505, - 15.63 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 5.0, - 10.0, - 15.0, - 20.0, - 25.0, - 30.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } + "id": "r8", + "name": "reaction-9", + "reversible": false, + "kinetic_law": { + "species_id": "v", + "equation": "v_r * (K_n * c4 - p1 * s1)", + "equation_type": "rateLaw", + "variables": [ + { + "id": "s1", + "name": "s1", + "symbol": "s1", + "ld_id": "enzml:Variable/f0074061-7903-46af-8b1c-dd6aa747fc4f", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + { + "id": "p1", + "name": "p1", + "symbol": "p1", + "ld_id": "enzml:Variable/e64c0470-962c-498c-86e8-c29136300483", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + { + "id": "c4", + "name": "c4", + "symbol": "c4", + "ld_id": "enzml:Variable/439de57d-0f8a-4fbe-b15e-e0f13c4cf924", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } + ], + "ld_id": "enzml:Equation/69b13cf8-21f9-4dda-a3f2-2f21cd17cf17", + "ld_type": [ + "enzml:Equation" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + "modifiers": [], + "ld_id": "enzml:Reaction/50dfed1c-e617-46d8-9ce0-a7fab3bb7145", + "ld_type": [ + "enzml:Reaction" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "modifiers": { + "@type": "@id" + } + }, + "reactants": [ + { + "species_id": "c4", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/4910e857-276a-4c64-8ba0-37fc97c67157", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } + ], + "products": [ + { + "species_id": "p1", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/1a4d2adc-8fbd-452f-8c30-f23dd43b607c", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + { + "species_id": "s1", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/5d6747ec-6504-4c02-a7a1-aea54c6aa0cf", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/7e9ddf6a-8d5f-497f-98b3-fb8c11b71a4d", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - } - } - ], - "group_id": null, - "ph": null, - "temperature": null, - "temperature_unit": null, - "ld_id": "enzml:Measurement/6180ba9d-3238-4063-8ded-352444f2f113", - "ld_type": [ - "enzml:Measurement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" }, - "group_id": { - "@type": "@id" - } - } - }, - { - "id": "m5", - "name": "Cephalexin synthesis 6", - "species_data": [ { - "species_id": "p0", - "initial": 0.0002, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [], - "time": [], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } + "id": "r9", + "name": "reaction-10", + "reversible": false, + "kinetic_law": { + "species_id": "v", + "equation": "k_5 * c4", + "equation_type": "rateLaw", + "variables": [ + { + "id": "c4", + "name": "c4", + "symbol": "c4", + "ld_id": "enzml:Variable/08e25ab0-f6ae-4fd4-a0ca-066c2ddf31ba", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } + ], + "ld_id": "enzml:Equation/ad546dea-0d0e-429a-816f-1bb96524613d", + "ld_type": [ + "enzml:Equation" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + "modifiers": [], + "ld_id": "enzml:Reaction/6ecf09b4-5753-4550-8de9-244f800f72f7", + "ld_type": [ + "enzml:Reaction" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "modifiers": { + "@type": "@id" + } + }, + "reactants": [ + { + "species_id": "c4", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/a3815bf1-2ef7-41c3-957e-e4ca8798edc7", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } + ], + "products": [ + { + "species_id": "p0", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/8f2d7dd0-0e03-486e-89d0-44c24c71a25c", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + { + "species_id": "s3", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/6644a428-0a2d-4169-9e1b-2f7cc959777f", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + { + "species_id": "s1", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/6dbed8a0-8a39-48ce-b19f-05659e6389bd", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/2c5ca957-81ea-4336-b36c-c9c898ccfa55", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - } }, { - "species_id": "s0", - "initial": 40.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [ - 40.0, - 34.595, - 31.035, - 27.01, - 21.225, - 10.1, - 5.9, - 3.33, - 1.695, - 0.84 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 5.0, - 10.0, - 15.0, - 20.0, - 25.0, - 30.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } + "id": "r10", + "name": "reaction-11", + "reversible": false, + "kinetic_law": { + "species_id": "v", + "equation": "k_4 * c4 - k_4b * c6", + "equation_type": "rateLaw", + "variables": [ + { + "id": "c4", + "name": "c4", + "symbol": "c4", + "ld_id": "enzml:Variable/4fbb78a6-c213-4092-955a-6d235a2bd720", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + { + "id": "c6", + "name": "c6", + "symbol": "c6", + "ld_id": "enzml:Variable/a0d2beeb-3253-45c5-b84d-e7ac154d73c7", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } + ], + "ld_id": "enzml:Equation/6e098e93-a6cc-4f79-bdab-a15633f6a8a6", + "ld_type": [ + "enzml:Equation" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + "modifiers": [], + "ld_id": "enzml:Reaction/9d373fab-e082-4ff8-87af-f9f28094ebdd", + "ld_type": [ + "enzml:Reaction" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "modifiers": { + "@type": "@id" + } + }, + "reactants": [ + { + "species_id": "c4", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/cbf64de3-0593-4c88-9748-9db1fb023d09", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } + ], + "products": [ + { + "species_id": "c6", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/eba11dd2-6f27-4f3d-a7ed-1e08331778c8", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/d4fd7d9a-1b6c-4f89-91bd-dc60eb9de9c6", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - } }, { - "species_id": "s1", - "initial": 42.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [ - 42.0, - 37.9, - 34.9, - 32.805, - 29.17, - 24.5, - 23.0, - 22.595, - 23.09, - 24.8 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 5.0, - 10.0, - 15.0, - 20.0, - 25.0, - 30.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } + "id": "r11", + "name": "reaction-12", + "reversible": false, + "kinetic_law": { + "species_id": "v", + "equation": "v_r * (K_p * c6 - p0 * s2)", + "equation_type": "rateLaw", + "variables": [ + { + "id": "s2", + "name": "s2", + "symbol": "s2", + "ld_id": "enzml:Variable/080842ac-610f-4388-aff3-c12f69593ee9", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + { + "id": "p0", + "name": "p0", + "symbol": "p0", + "ld_id": "enzml:Variable/d2b4ac64-c06f-4af8-bdc0-34711c91d64e", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + { + "id": "c6", + "name": "c6", + "symbol": "c6", + "ld_id": "enzml:Variable/1ebc0e8c-9435-4d0a-aea5-d51f43c7009d", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } + ], + "ld_id": "enzml:Equation/2f444802-cb09-4060-a14e-9734bbee37da", + "ld_type": [ + "enzml:Equation" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + "modifiers": [], + "ld_id": "enzml:Reaction/345b163a-6e75-4a5b-8d62-0f084cace776", + "ld_type": [ + "enzml:Reaction" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "modifiers": { + "@type": "@id" + } + }, + "reactants": [ + { + "species_id": "c6", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/0ec57bc4-c3ad-47fb-b63a-b22a2cae91ab", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } + ], + "products": [ + { + "species_id": "p0", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/9de9c2a4-0d9d-4084-aedb-167b1d92fc9f", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + { + "species_id": "s2", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/6cfe84db-bed4-47bb-b553-0af1a62daf7f", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/df17ee5c-c1aa-4d8c-a3be-ae780a385026", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - } }, { - "species_id": "s2", - "initial": 0.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [ - 0.0, - 3.625, - 6.4, - 8.5, - 11.1, - 15.645, - 16.5, - 16.345, - 15.81, - 15.255 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 5.0, - 10.0, - 15.0, - 20.0, - 25.0, - 30.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } + "id": "r12", + "name": "Enzyme deactivation", + "reversible": false, + "kinetic_law": { + "species_id": "v", + "equation": "k_d * p0", + "equation_type": "rateLaw", + "variables": [ + { + "id": "p0", + "name": "p0", + "symbol": "p0", + "ld_id": "enzml:Variable/675cbf6a-cff9-4fe5-b1b5-6821fa64864c", + "ld_type": [ + "enzml:Variable" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } + ], + "ld_id": "enzml:Equation/3a93338f-f50f-40ce-ac62-ca6c9369b5d5", + "ld_type": [ + "enzml:Equation" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + }, + "modifiers": [], + "ld_id": "enzml:Reaction/1ddb20f5-d8b3-4c3e-a8bf-60bfddea5ed4", + "ld_type": [ + "enzml:Reaction" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "modifiers": { + "@type": "@id" + } + }, + "reactants": [ + { + "species_id": "p0", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/fb9938e9-8da7-4fb2-9a9a-d9da9e9e2ce6", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } + ], + "products": [ + { + "species_id": "p2", + "stoichiometry": 1.0, + "ld_id": "enzml:ReactionElement/4272d57c-2808-400f-8a3b-d31398875714", + "ld_type": [ + "enzml:ReactionElement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + } + } ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/aa3db4cf-a393-415f-875b-d609c0853d20", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" - } - } - }, + } + ], + "measurements": [ { - "species_id": "s3", - "initial": 3.3, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [ - 3.3, - 4.75, - 6.13, - 7.52, - 11.1, - 17.315, - 20.5, - 22.605, - 24.925, - 26.5 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 5.0, - 10.0, - 15.0, - 20.0, - 25.0, - 30.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/2a9e81b4-165b-4a29-9afc-d4110876d5bb", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" + "id": "m0", + "name": "Cephalexin synthesis 1", + "species_data": [ + { + "species_id": "p0", + "initial": 0.0002, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [], + "time": [], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/62331a5b-de08-4fda-ae21-841ab384a887", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s0", + "initial": 20.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [ + 20.0, + 16.385, + 12.45, + 9.255, + 5.135, + 0.645, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/9d8df442-f610-465d-9ee3-0bc1891b4218", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s1", + "initial": 10.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [ + 10.0, + 8.72, + 7.025, + 5.94, + 5.18, + 5.815, + 7.57, + 8.945, + 9.87, + 10.575 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/0307adc9-94a0-4e95-80be-ad29aee8b630", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s2", + "initial": 0.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [ + 0.0, + 2.66, + 3.885, + 4.815, + 5.755, + 4.9, + 3.24, + 1.915, + 1.075, + 0.575 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/95e4bfbd-b4ea-4d75-a236-f30566e1de26", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s3", + "initial": 2.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [ + 2.0, + 3.705, + 5.77, + 8.035, + 11.965, + 17.28, + 19.93, + 21.36, + 22.55, + 23.38 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/2f6cd6b4-d030-4b41-b6da-5bd1eca72a93", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null, + "ld_id": "enzml:Measurement/22c3a111-3126-4084-9786-3f2fc98f1c2e", + "ld_type": [ + "enzml:Measurement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } } - } - } - ], - "group_id": null, - "ph": null, - "temperature": null, - "temperature_unit": null, - "ld_id": "enzml:Measurement/27e5b414-055d-411f-b46e-b2a561fb16c6", - "ld_type": [ - "enzml:Measurement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" }, - "group_id": { - "@type": "@id" - } - } - }, - { - "id": "m6", - "name": "Cephalexin synthesis 7", - "species_data": [ { - "species_id": "p0", - "initial": 0.0002, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [], - "time": [], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/37d4332b-c596-4070-890d-ee797eb81c2a", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" + "id": "m1", + "name": "Cephalexin synthesis 2", + "species_data": [ + { + "species_id": "p0", + "initial": 0.0002, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [], + "time": [], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/9768f105-32e5-48f7-b2b7-0a468c66eff5", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s0", + "initial": 20.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [ + 20.0, + 16.5, + 12.67, + 9.915, + 5.91, + 1.32, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/e5a0612d-4981-4ea3-8359-69c6149850a3", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s1", + "initial": 20.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [ + 20.0, + 18.58, + 16.255, + 14.82, + 13.14, + 12.625, + 14.2, + 15.445, + 17.02, + 18.5 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/9dba91b7-7774-4e1a-970b-6c5d476307d7", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s2", + "initial": 0.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [ + 0.0, + 3.205, + 5.09, + 6.385, + 7.855, + 8.225, + 7.17, + 5.63, + 4.1, + 2.0 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/8f83e27b-9a73-42e4-933b-67ddd3264103", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s3", + "initial": 1.3, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [ + 1.3, + 2.955, + 4.615, + 6.175, + 8.8, + 13.25, + 16.055, + 17.62, + 19.34, + 20.8 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/2332118c-0d4f-499b-9e3f-48934d22dc4b", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null, + "ld_id": "enzml:Measurement/2c50a391-7689-4089-ab21-21671a1dde43", + "ld_type": [ + "enzml:Measurement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } } - } }, { - "species_id": "s0", - "initial": 76.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [ - 76.0, - 73.36, - 69.3, - 65.6, - 60.2, - 46.9, - 38.03, - 30.4, - 24.655, - 19.7 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 5.0, - 10.0, - 15.0, - 20.0, - 25.0, - 30.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/d5df01b8-80ed-42d0-82d5-38e2f393573f", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" + "id": "m2", + "name": "Cephalexin synthesis 3", + "species_data": [ + { + "species_id": "p0", + "initial": 0.0002, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [], + "time": [], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/6c80f602-2c78-41b1-8466-5775db9ba744", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s0", + "initial": 20.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [ + 20.0, + 13.005, + 9.505, + 7.21, + 4.0, + 0.91, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/d63e21bc-318a-42e9-ace9-da7cb799b01f", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s1", + "initial": 40.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [ + 40.0, + 36.555, + 33.87, + 32.49, + 30.405, + 29.985, + 30.675, + 31.905, + 33.045, + 34.525 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/ae18349c-636b-4ad7-954e-4b54a9308515", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s2", + "initial": 0.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [ + 0.0, + 3.59, + 5.57, + 6.85, + 8.24, + 8.945, + 8.18, + 7.255, + 6.39, + 5.69 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/9b8e2306-f984-4047-845e-e955aa4c5f70", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s3", + "initial": 5.1, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [ + 5.1, + 6.365, + 7.59, + 8.59, + 10.13, + 12.93, + 14.565, + 15.8, + 16.98, + 18.15 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/611fb06f-e89c-4d14-8aab-a13251748728", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null, + "ld_id": "enzml:Measurement/4c80e685-29e9-4322-95bb-e7cb9d345cc8", + "ld_type": [ + "enzml:Measurement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } } - } }, { - "species_id": "s1", - "initial": 40.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [ - 40.0, - 38.51, - 36.175, - 34.09, - 31.025, - 25.965, - 22.94, - 20.805, - 19.445, - 18.36 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 5.0, - 10.0, - 15.0, - 20.0, - 25.0, - 30.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/6bd13d22-30fc-49df-863a-42624e8e68f9", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" + "id": "m3", + "name": "Cephalexin synthesis 4", + "species_data": [ + { + "species_id": "p0", + "initial": 0.0002, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [], + "time": [], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/cfbc6dc6-d7b2-48bc-b596-9ba8b2a88d4f", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s0", + "initial": 20.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [ + 20.0, + 15.345, + 11.64, + 8.975, + 5.265, + 1.455, + 0.385, + 0.0, + 0.0, + 0.0 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/8aee4447-9e80-4518-bc17-3c2c84a192fd", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s1", + "initial": 60.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [ + 60.0, + 56.8, + 53.58, + 51.6, + 48.265, + 47.6, + 48.185, + 49.0, + 50.76, + 52.505 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/8b99aa98-312f-4973-ad85-048dbb32f25e", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s2", + "initial": 0.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [ + 0.0, + 3.77, + 6.11, + 7.74, + 9.595, + 11.325, + 11.065, + 10.2, + 9.66, + 9.005 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/bdfb87bb-eb23-4528-92c3-4a0bed112b5b", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s3", + "initial": 1.9, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [ + 1.9, + 2.94, + 3.99, + 4.935, + 6.305, + 8.87, + 10.61, + 12.0, + 13.075, + 14.24 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/db22ffba-50b9-4a33-815c-6c311bef4ecc", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null, + "ld_id": "enzml:Measurement/9d877b28-bfb8-475b-991d-ed7ab5b23e9c", + "ld_type": [ + "enzml:Measurement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } } - } }, { - "species_id": "s2", - "initial": 0.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [ - 0.0, - 3.04, - 5.195, - 7.28, - 10.295, - 15.76, - 18.74, - 20.755, - 21.89, - 22.875 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 5.0, - 10.0, - 15.0, - 20.0, - 25.0, - 30.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/a202cae2-485a-44d1-becf-c1609b28d4d1", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" + "id": "m4", + "name": "Cephalexin synthesis 5", + "species_data": [ + { + "species_id": "p0", + "initial": 0.0002, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [], + "time": [], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/0c064d8a-3dea-4a11-99f3-c58b9256859b", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s0", + "initial": 20.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [ + 20.0, + 15.34, + 12.075, + 9.335, + 5.515, + 1.46, + 0.35, + 0.0, + 0.0, + 0.0 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/47224c1c-24a2-46aa-a761-f752273d74fb", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s1", + "initial": 42.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [ + 42.0, + 38.405, + 36.06, + 34.06, + 31.46, + 29.595, + 30.615, + 31.83, + 32.985, + 34.08 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/772f5b44-a554-49d5-a495-ddbe1c405bf1", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s2", + "initial": 0.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [ + 0.0, + 3.42, + 5.52, + 6.99, + 8.78, + 9.875, + 9.44, + 8.515, + 7.47, + 6.695 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/f521f18b-db8d-4da0-861e-4b4a1efbf298", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s3", + "initial": 1.5, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [ + 1.5, + 2.815, + 4.105, + 5.085, + 6.69, + 9.535, + 11.49, + 13.08, + 14.505, + 15.63 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/7e9ddf6a-8d5f-497f-98b3-fb8c11b71a4d", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null, + "ld_id": "enzml:Measurement/6180ba9d-3238-4063-8ded-352444f2f113", + "ld_type": [ + "enzml:Measurement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } } - } }, { - "species_id": "s3", - "initial": 5.7, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [ - 5.7, - 7.21, - 8.735, - 10.4, - 13.49, - 20.83, - 26.8, - 32.53, - 36.77, - 41.13 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 5.0, - 10.0, - 15.0, - 20.0, - 25.0, - 30.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/d151165a-534c-4f53-9f53-7370bafdbe8e", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" + "id": "m5", + "name": "Cephalexin synthesis 6", + "species_data": [ + { + "species_id": "p0", + "initial": 0.0002, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [], + "time": [], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/2c5ca957-81ea-4336-b36c-c9c898ccfa55", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s0", + "initial": 40.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [ + 40.0, + 34.595, + 31.035, + 27.01, + 21.225, + 10.1, + 5.9, + 3.33, + 1.695, + 0.84 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/d4fd7d9a-1b6c-4f89-91bd-dc60eb9de9c6", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s1", + "initial": 42.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [ + 42.0, + 37.9, + 34.9, + 32.805, + 29.17, + 24.5, + 23.0, + 22.595, + 23.09, + 24.8 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/df17ee5c-c1aa-4d8c-a3be-ae780a385026", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s2", + "initial": 0.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [ + 0.0, + 3.625, + 6.4, + 8.5, + 11.1, + 15.645, + 16.5, + 16.345, + 15.81, + 15.255 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/aa3db4cf-a393-415f-875b-d609c0853d20", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s3", + "initial": 3.3, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [ + 3.3, + 4.75, + 6.13, + 7.52, + 11.1, + 17.315, + 20.5, + 22.605, + 24.925, + 26.5 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/2a9e81b4-165b-4a29-9afc-d4110876d5bb", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null, + "ld_id": "enzml:Measurement/27e5b414-055d-411f-b46e-b2a561fb16c6", + "ld_type": [ + "enzml:Measurement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } } - } - } - ], - "group_id": null, - "ph": null, - "temperature": null, - "temperature_unit": null, - "ld_id": "enzml:Measurement/0dde59ac-ca10-46d8-8b30-e6632a9178a4", - "ld_type": [ - "enzml:Measurement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" }, - "group_id": { - "@type": "@id" - } - } - }, - { - "id": "m7", - "name": "Cephalexin synthesis 8", - "species_data": [ { - "species_id": "p0", - "initial": 0.0002, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [], - "time": [], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/e551ae1a-cfdd-4425-9eac-954edcfb5e16", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" + "id": "m6", + "name": "Cephalexin synthesis 7", + "species_data": [ + { + "species_id": "p0", + "initial": 0.0002, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [], + "time": [], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/37d4332b-c596-4070-890d-ee797eb81c2a", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s0", + "initial": 76.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [ + 76.0, + 73.36, + 69.3, + 65.6, + 60.2, + 46.9, + 38.03, + 30.4, + 24.655, + 19.7 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/d5df01b8-80ed-42d0-82d5-38e2f393573f", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s1", + "initial": 40.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [ + 40.0, + 38.51, + 36.175, + 34.09, + 31.025, + 25.965, + 22.94, + 20.805, + 19.445, + 18.36 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/6bd13d22-30fc-49df-863a-42624e8e68f9", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s2", + "initial": 0.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [ + 0.0, + 3.04, + 5.195, + 7.28, + 10.295, + 15.76, + 18.74, + 20.755, + 21.89, + 22.875 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/a202cae2-485a-44d1-becf-c1609b28d4d1", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s3", + "initial": 5.7, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [ + 5.7, + 7.21, + 8.735, + 10.4, + 13.49, + 20.83, + 26.8, + 32.53, + 36.77, + 41.13 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/d151165a-534c-4f53-9f53-7370bafdbe8e", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null, + "ld_id": "enzml:Measurement/0dde59ac-ca10-46d8-8b30-e6632a9178a4", + "ld_type": [ + "enzml:Measurement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } } - } }, { - "species_id": "s0", - "initial": 140.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [ - 140.0, - 138.2, - 136.0, - 134.745, - 132.905, - 130.085, - 128.395, - 126.75, - 125.96, - 124.6 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 5.0, - 10.0, - 15.0, - 20.0, - 25.0, - 30.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/0a118507-4040-46c8-b4d0-71919de95778", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" + "id": "m7", + "name": "Cephalexin synthesis 8", + "species_data": [ + { + "species_id": "p0", + "initial": 0.0002, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [], + "time": [], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/e551ae1a-cfdd-4425-9eac-954edcfb5e16", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s0", + "initial": 140.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [ + 140.0, + 138.2, + 136.0, + 134.745, + 132.905, + 130.085, + 128.395, + 126.75, + 125.96, + 124.6 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/0a118507-4040-46c8-b4d0-71919de95778", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s1", + "initial": 40.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [ + 40.0, + 38.8, + 37.725, + 36.88, + 36.155, + 34.61, + 33.71, + 33.11, + 33.035, + 32.8 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/430517e2-5fd5-4d39-903e-18bbce175947", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s2", + "initial": 0.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [ + 0.0, + 1.53, + 2.395, + 3.04, + 3.895, + 4.99, + 5.545, + 5.98, + 6.325, + 6.625 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/2d45fa90-b586-451d-b6ac-22eaa61f3501", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + }, + { + "species_id": "s3", + "initial": 14.0, + "data_unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "data_type": "concentration", + "prepared": null, + "data": [ + 14.0, + 17.9, + 18.85, + 19.735, + 20.84, + 22.595, + 23.62, + 25.0, + 26.025, + 26.93 + ], + "time": [ + 0.0, + 1.0, + 2.0, + 3.0, + 5.0, + 10.0, + 15.0, + 20.0, + 25.0, + 30.0 + ], + "time_unit": { + "id": "u4", + "name": "min", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "is_simulated": false, + "ld_id": "enzml:MeasurementData/9f69f775-5247-4030-b60b-d4717937ae06", + "ld_type": [ + "enzml:MeasurementData" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@type": "@id" + } + } + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null, + "ld_id": "enzml:Measurement/f6daa0a2-0385-4421-b4ac-d424eb09678a", + "ld_type": [ + "enzml:Measurement" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "group_id": { + "@type": "@id" + } } - } - }, + } + ], + "equations": [], + "parameters": [ { - "species_id": "s1", - "initial": 40.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [ - 40.0, - 38.8, - 37.725, - 36.88, - 36.155, - 34.61, - 33.71, - 33.11, - 33.035, - 32.8 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 5.0, - 10.0, - 15.0, - 20.0, - 25.0, - 30.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/430517e2-5fd5-4d39-903e-18bbce175947", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" + "id": "v_r", + "name": "", + "symbol": "v_r", + "value": null, + "unit": { + "id": "u5", + "name": "l / min mmole", + "base_units": [ + { + "kind": "litre", + "exponent": 1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": -1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "second", + "exponent": -1, + "multiplier": 60.0, + "scale": 1.0 + } + ] + }, + "initial_value": null, + "upper_bound": null, + "lower_bound": null, + "stderr": null, + "constant": true, + "ld_id": "enzml:Parameter/7694d598-b518-4546-829a-ab18b0ea87f8", + "ld_type": [ + "enzml:Parameter" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } } - } }, { - "species_id": "s2", - "initial": 0.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [ - 0.0, - 1.53, - 2.395, - 3.04, - 3.895, - 4.99, - 5.545, - 5.98, - 6.325, - 6.625 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 5.0, - 10.0, - 15.0, - 20.0, - 25.0, - 30.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/2d45fa90-b586-451d-b6ac-22eaa61f3501", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" + "id": "K_si", + "name": "", + "symbol": "K_si", + "value": null, + "unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "initial_value": null, + "upper_bound": null, + "lower_bound": null, + "stderr": null, + "constant": false, + "ld_id": "enzml:Parameter/35f12710-c4ec-4409-8c71-17b28a1ce5a3", + "ld_type": [ + "enzml:Parameter" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } } - } }, { - "species_id": "s3", - "initial": 14.0, - "data_unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "data_type": "concentration", - "prepared": null, - "data": [ - 14.0, - 17.9, - 18.85, - 19.735, - 20.84, - 22.595, - 23.62, - 25.0, - 26.025, - 26.93 - ], - "time": [ - 0.0, - 1.0, - 2.0, - 3.0, - 5.0, - 10.0, - 15.0, - 20.0, - 25.0, - 30.0 - ], - "time_unit": { - "id": "u4", - "name": "min", - "base_units": [ - { - "kind": "second", - "exponent": 1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "is_simulated": false, - "ld_id": "enzml:MeasurementData/9f69f775-5247-4030-b60b-d4717937ae06", - "ld_type": [ - "enzml:MeasurementData" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "species_id": { - "@type": "@id" + "id": "K_n", + "name": "", + "symbol": "K_n", + "value": null, + "unit": { + "id": "u1", + "name": "mmole / l", + "base_units": [ + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 1.0 + }, + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "initial_value": null, + "upper_bound": null, + "lower_bound": null, + "stderr": null, + "constant": false, + "ld_id": "enzml:Parameter/7bdb68f9-d51e-41a9-b297-f202c09c2b6a", + "ld_type": [ + "enzml:Parameter" + ], + "ld_context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + } } - } - } - ], - "group_id": null, - "ph": null, - "temperature": null, - "temperature_unit": null, - "ld_id": "enzml:Measurement/f6daa0a2-0385-4421-b4ac-d424eb09678a", - "ld_type": [ - "enzml:Measurement" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - }, - "group_id": { - "@type": "@id" - } - } - } - ], - "equations": [], - "parameters": [ - { - "id": "v_r", - "name": "", - "symbol": "v_r", - "value": null, - "unit": { - "id": "u5", - "name": "l / min mmole", - "base_units": [ - { - "kind": "litre", - "exponent": 1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": -1, - "multiplier": 1.0, - "scale": -3.0 - }, - { - "kind": "second", - "exponent": -1, - "multiplier": 60.0, - "scale": 1.0 - } - ] - }, - "initial_value": null, - "upper_bound": null, - "lower_bound": null, - "stderr": null, - "constant": true, - "ld_id": "enzml:Parameter/7694d598-b518-4546-829a-ab18b0ea87f8", - "ld_type": [ - "enzml:Parameter" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" - } - } - }, - { - "id": "K_si", - "name": "", - "symbol": "K_si", - "value": null, - "unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "initial_value": null, - "upper_bound": null, - "lower_bound": null, - "stderr": null, - "constant": false, - "ld_id": "enzml:Parameter/35f12710-c4ec-4409-8c71-17b28a1ce5a3", - "ld_type": [ - "enzml:Parameter" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" } - } - }, - { - "id": "K_n", - "name": "", - "symbol": "K_n", - "value": null, - "unit": { - "id": "u1", - "name": "mmole / l", - "base_units": [ - { - "kind": "litre", - "exponent": -1, - "multiplier": 1.0, - "scale": 1.0 - }, - { - "kind": "mole", - "exponent": 1, - "multiplier": 1.0, - "scale": -3.0 - } - ] - }, - "initial_value": null, - "upper_bound": null, - "lower_bound": null, - "stderr": null, - "constant": false, - "ld_id": "enzml:Parameter/7bdb68f9-d51e-41a9-b297-f202c09c2b6a", - "ld_type": [ - "enzml:Parameter" - ], - "ld_context": { + ], + "references": [], + "ld_id": "enzml:EnzymeMLDocument/cb6ae98d-8c9b-4848-8665-a9497775bf64", + "ld_type": [ + "enzml:EnzymeMLDocument" + ], + "ld_context": { "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", - "id": { - "@id": "schema:identifier", - "@type": "@id" + "name": "schema:title", + "created": "schema:dateCreated", + "modified": "schema:dateModified", + "creators": "schema:creator", + "references": { + "@id": "schema:citation", + "@type": "@id" } - } - } - ], - "references": [], - "ld_id": "enzml:EnzymeMLDocument/cb6ae98d-8c9b-4848-8665-a9497775bf64", - "ld_type": [ - "enzml:EnzymeMLDocument" - ], - "ld_context": { - "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", - "schema": "https://schema.org/", - "name": "schema:title", - "created": "schema:dateCreated", - "modified": "schema:dateModified", - "creators": "schema:creator", - "references": { - "@id": "schema:citation", - "@type": "@id" } - } } \ No newline at end of file diff --git a/tests/integration/test_enzymeml.py b/tests/integration/test_enzymeml.py new file mode 100644 index 00000000..6bc292b4 --- /dev/null +++ b/tests/integration/test_enzymeml.py @@ -0,0 +1,92 @@ +import os +import tempfile +import pyenzyme as pe +import pyenzyme.equations as peq + +from pyenzyme.tools import get_all_parameters, to_dict_wo_json_ld + + +class TestEnzymeML: + def test_end_to_end(self): + # Arrange + doc = pe.EnzymeMLDocument(name="Test") + + # Add Vessels + vessel = doc.add_to_vessels( + name="Vessel 1", + volume=10.0, + unit="ml", # type: ignore + id="v0", + ) + + # Add Species + substrate = doc.add_to_small_molecules( + id="s0", + name="Substrate", + vessel_id=vessel.id, + canonical_smiles="CC(=O)O", + inchikey="QTBSBXVTEAMEQO-UHFFFAOYSA-N", + ) + + doc.add_to_small_molecules( + id="s1", + name="Product", + vessel_id=vessel.id, + canonical_smiles="CC(=O)O", + inchikey="QTBSBXVTEAMEQO-UHFFFAOYSA-N", + ) + + # Add Enzyme + enzyme = doc.add_to_proteins( + id="p0", + name="Enzyme", + sequence="MTEY", + vessel_id=vessel.id, + ecnumber="1.1.1.1", + organism="E.coli", + organism_tax_id="12345", + ) + + doc.add_to_complexes( + id="c0", + name="Enzyme-Substrate Complex", + participants=[enzyme.id, substrate.id], + vessel_id=vessel.id, + ) + + doc.equations += peq.build_equations( + "s1'(t) = kcat * E_tot * s0(t) / (K_m + s0(t))", + "E_tot = 100", + unit_mapping={ + "kcat": "1 / s", + "K_m": "mmol / l", + "E_tot": "mmol / l", + }, + enzmldoc=doc, + ) + + doc.measurements += pe.from_excel( + "tests/fixtures/tabular/data.xlsx", + data_unit="mmol / l", + time_unit="s", + ) + + for parameter in get_all_parameters(doc): + parameter.lower_bound = 0.0 + parameter.upper_bound = 100.0 + parameter.stderr = 0.1 + + for meas in doc.measurements: + meas.temperature = 298.15 + meas.temperature_unit = "K" # type: ignore + meas.ph = 7.0 + + with tempfile.TemporaryDirectory() as tmpdir: + enzmldoc_path = os.path.join(tmpdir, "enzymeml.omex") + pe.write_enzymeml(doc, enzmldoc_path) + + # Load the saved EnzymeML document + loaded_doc = pe.read_enzymeml(enzmldoc_path) + + # Assert + assert to_dict_wo_json_ld(loaded_doc) == to_dict_wo_json_ld(doc) diff --git a/tests/integration/test_fetcher.py b/tests/integration/test_fetcher.py index aa4ea156..63bdb1fc 100644 --- a/tests/integration/test_fetcher.py +++ b/tests/integration/test_fetcher.py @@ -1,5 +1,6 @@ import pytest from pyenzyme.fetcher.chebi import fetch_chebi +from pyenzyme.fetcher.pubchem import fetch_pubchem from pyenzyme.fetcher.rhea import fetch_rhea from pyenzyme.fetcher.uniprot import fetch_uniprot @@ -74,7 +75,8 @@ def test_fetch_uniprot_to_protein_with_id(self): def test_fetch_rhea_to_reaction(self): reaction, small_molecules = fetch_rhea("RHEA:22864") - reaction.species.sort(key=lambda x: x.species_id) + reaction.reactants.sort(key=lambda x: x.species_id) + reaction.products.sort(key=lambda x: x.species_id) small_molecules.sort(key=lambda x: x.id) assert reaction is not None @@ -87,12 +89,30 @@ def test_fetch_rhea_to_reaction(self): assert reaction.name == "RHEA:22864" assert reaction.reversible is True - assert len(reaction.species) == 2 - assert reaction.species[0].stoichiometry == -1 - assert reaction.species[0].species_id == small_molecules[0].id - assert reaction.species[1].stoichiometry == 1 - assert reaction.species[1].species_id == small_molecules[1].id + assert len(reaction.reactants) == 1 + assert reaction.reactants[0].stoichiometry == 1 + assert reaction.reactants[0].species_id == small_molecules[1].id + + assert len(reaction.products) == 1 + assert reaction.products[0].stoichiometry == 1 + assert reaction.products[0].species_id == small_molecules[0].id def test_fetch_rhea_to_reaction_invalid_id(self): with pytest.raises(ValueError): fetch_rhea("INVALID_ID") + + def test_fetch_pubchem_to_small_molecule(self): + small_molecule = fetch_pubchem(cid=2244) + assert small_molecule is not None + assert small_molecule.id == "2_acetyloxybenzoic_acid" + assert small_molecule.name == "2-acetyloxybenzoic acid" + assert small_molecule.canonical_smiles == "CC(=O)OC1=CC=CC=C1C(=O)O" + assert small_molecule.inchikey == "BSYNRYMUTXBXSQ-UHFFFAOYSA-N" + assert ( + small_molecule.inchi + == "InChI=1S/C9H8O4/c1-6(10)13-8-5-3-2-4-7(8)9(11)12/h2-5H,1H3,(H,11,12)" + ) + + def test_fetch_pubchem_to_small_molecule_invalid_id(self): + with pytest.raises(ValueError): + fetch_pubchem(cid=162176127617627) diff --git a/tests/unit/test_equations.py b/tests/unit/test_equations.py index 4f27229f..b7f52000 100644 --- a/tests/unit/test_equations.py +++ b/tests/unit/test_equations.py @@ -181,9 +181,12 @@ def test_build_irrev_reaction(self): ) # Assert - expected = [ - (-2.0, "s1"), - (-1.0, "s2"), + expected_reactants = [ + (2.0, "s1"), + (1.0, "s2"), + ] + + expected_products = [ (2.0, "s3"), (1.0, "s4"), ] @@ -193,9 +196,9 @@ def test_build_irrev_reaction(self): f"Reaction name is not correct. Got {reac.name}" ) - for stoich, species in expected: + for stoich, species in expected_reactants: element = next( - filter(lambda x: x.species_id == species, reac.species), None + filter(lambda x: x.species_id == species, reac.reactants), None ) if not element: @@ -209,6 +212,18 @@ def test_build_irrev_reaction(self): f"Species ID for {species} is not correct. Got {element.species_id}" ) + for stoich, species in expected_products: + element = next( + filter(lambda x: x.species_id == species, reac.products), None + ) + + if not element: + assert False, f"Species {species} not found in reaction" + + assert element.stoichiometry == stoich, ( + f"Stoichiometry for {species} is not correct. Got {element.stoichiometry}" + ) + def test_build_rev_reaction(self): # Arrange reaction_str = "s1 + s2 <=> s3 + s4" From 73f294808b2429c3c98563b43e3562fc604b4c0b Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 9 May 2025 01:58:09 +0200 Subject: [PATCH 108/172] update model --- pyenzyme/versions/v2.py | 845 ++++++++++++++++++++++++++-------------- 1 file changed, 558 insertions(+), 287 deletions(-) diff --git a/pyenzyme/versions/v2.py b/pyenzyme/versions/v2.py index c967531c..fe90cd43 100644 --- a/pyenzyme/versions/v2.py +++ b/pyenzyme/versions/v2.py @@ -34,16 +34,16 @@ from __future__ import annotations from pydantic import BaseModel, Field, ConfigDict -from typing import Optional, Generic, TypeVar +from typing import Optional, Generic, TypeVar, Union from enum import Enum from uuid import uuid4 +from datetime import date, datetime from mdmodels.units.annotation import UnitDefinitionAnnot # Filter Wrapper definition used to filter a list of objects # based on their attributes Cls = TypeVar("Cls") - class FilterWrapper(Generic[Cls]): """Wrapper class to filter a list of objects based on their attributes""" @@ -80,8 +80,7 @@ def add_namespace(obj, prefix: str | None, iri: str | None): elif iri and prefix is None: raise ValueError("If iri is provided, prefix must also be provided") - obj.ld_context[prefix] = iri # type: ignore - + obj.ld_context[prefix] = iri # type: ignore def validate_prefix(term: str | dict, prefix: str): """Validates that a term is prefixed with a given prefix @@ -99,18 +98,19 @@ def validate_prefix(term: str | dict, prefix: str): elif isinstance(term, str) and not term.startswith(prefix + ":"): raise ValueError(f"Term {term} is not prefixed with {prefix}") - # Model Definitions - class EnzymeMLDocument(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assignment=True, - ) # type: ignore + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment = True, + ) # type: ignore name: str - created: Optional[str] = Field(default=None) - modified: Optional[str] = Field(default=None) + version: str = "2" + description: Optional[Optional[str]] = Field(default=None) + created: Optional[Optional[str]] = Field(default=None) + modified: Optional[Optional[str]] = Field(default=None) creators: list[Creator] = Field(default_factory=list) vessels: list[Vessel] = Field(default_factory=list) proteins: list[Protein] = Field(default_factory=list) @@ -125,20 +125,20 @@ class EnzymeMLDocument(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:EnzymeMLDocument/" + str(uuid4()), + default_factory=lambda: "enzml:EnzymeMLDocument/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: [ + default_factory = lambda: [ "enzml:EnzymeMLDocument", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "name": "schema:title", "created": "schema:dateCreated", "modified": "schema:dateModified", @@ -147,7 +147,7 @@ class EnzymeMLDocument(BaseModel): "@id": "schema:citation", "@type": "@id", }, - }, + } ) def filter_creators(self, **kwargs) -> list[Creator]: @@ -258,12 +258,13 @@ def filter_parameters(self, **kwargs) -> list[Parameter]: return FilterWrapper[Parameter](self.parameters, **kwargs).filter() + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -285,9 +286,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, ( - f"Attribute {attr} not found in {self.__class__.__name__}" - ) + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -296,7 +295,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -323,6 +325,7 @@ def add_type_term( add_namespace(self, prefix, iri) self.ld_type.append(term) + def add_to_creators( self, given_name: str, @@ -330,22 +333,29 @@ def add_to_creators( mail: str, **kwargs, ): - params = {"given_name": given_name, "family_name": family_name, "mail": mail} + params = { + "given_name": given_name, + "family_name": family_name, + "mail": mail + } if "id" in kwargs: params["id"] = kwargs["id"] - self.creators.append(Creator(**params)) + self.creators.append( + Creator(**params) + ) return self.creators[-1] + def add_to_vessels( self, id: str, name: str, volume: float, unit: UnitDefinitionAnnot, - constant: bool = True, + constant: bool= True, **kwargs, ): params = { @@ -353,27 +363,30 @@ def add_to_vessels( "name": name, "volume": volume, "unit": unit, - "constant": constant, + "constant": constant } if "id" in kwargs: params["id"] = kwargs["id"] - self.vessels.append(Vessel(**params)) + self.vessels.append( + Vessel(**params) + ) return self.vessels[-1] + def add_to_proteins( self, id: str, name: str, - constant: bool = True, - sequence: Optional[str] = None, - vessel_id: Optional[str] = None, - ecnumber: Optional[str] = None, - organism: Optional[str] = None, - organism_tax_id: Optional[str] = None, - references: list[str] = [], + constant: bool= True, + sequence: Optional[str]= None, + vessel_id: Optional[str]= None, + ecnumber: Optional[str]= None, + organism: Optional[str]= None, + organism_tax_id: Optional[str]= None, + references: list[str]= [], **kwargs, ): params = { @@ -385,23 +398,26 @@ def add_to_proteins( "ecnumber": ecnumber, "organism": organism, "organism_tax_id": organism_tax_id, - "references": references, + "references": references } if "id" in kwargs: params["id"] = kwargs["id"] - self.proteins.append(Protein(**params)) + self.proteins.append( + Protein(**params) + ) return self.proteins[-1] + def add_to_complexes( self, id: str, name: str, - constant: bool = False, - vessel_id: Optional[str] = None, - participants: list[str] = [], + constant: bool= False, + vessel_id: Optional[str]= None, + participants: list[str]= [], **kwargs, ): params = { @@ -409,26 +425,30 @@ def add_to_complexes( "name": name, "constant": constant, "vessel_id": vessel_id, - "participants": participants, + "participants": participants } if "id" in kwargs: params["id"] = kwargs["id"] - self.complexes.append(Complex(**params)) + self.complexes.append( + Complex(**params) + ) return self.complexes[-1] + def add_to_small_molecules( self, id: str, name: str, - constant: bool = False, - vessel_id: Optional[str] = None, - canonical_smiles: Optional[str] = None, - inchi: Optional[str] = None, - inchikey: Optional[str] = None, - references: list[str] = [], + constant: bool= False, + vessel_id: Optional[str]= None, + canonical_smiles: Optional[str]= None, + inchi: Optional[str]= None, + inchikey: Optional[str]= None, + synonymous_names: list[str]= [], + references: list[str]= [], **kwargs, ): params = { @@ -439,24 +459,29 @@ def add_to_small_molecules( "canonical_smiles": canonical_smiles, "inchi": inchi, "inchikey": inchikey, - "references": references, + "synonymous_names": synonymous_names, + "references": references } if "id" in kwargs: params["id"] = kwargs["id"] - self.small_molecules.append(SmallMolecule(**params)) + self.small_molecules.append( + SmallMolecule(**params) + ) return self.small_molecules[-1] + def add_to_reactions( self, id: str, name: str, - reversible: bool = False, - kinetic_law: Optional[Equation] = None, - species: list[ReactionElement] = [], - modifiers: list[str] = [], + reversible: bool= False, + kinetic_law: Optional[Equation]= None, + reactants: list[ReactionElement]= [], + products: list[ReactionElement]= [], + modifiers: list[ModifierElement]= [], **kwargs, ): params = { @@ -464,26 +489,30 @@ def add_to_reactions( "name": name, "reversible": reversible, "kinetic_law": kinetic_law, - "species": species, - "modifiers": modifiers, + "reactants": reactants, + "products": products, + "modifiers": modifiers } if "id" in kwargs: params["id"] = kwargs["id"] - self.reactions.append(Reaction(**params)) + self.reactions.append( + Reaction(**params) + ) return self.reactions[-1] + def add_to_measurements( self, id: str, name: str, - species_data: list[MeasurementData] = [], - group_id: Optional[str] = None, - ph: Optional[float] = None, - temperature: Optional[float] = None, - temperature_unit: Optional[UnitDefinitionAnnot] = None, + species_data: list[MeasurementData]= [], + group_id: Optional[str]= None, + ph: Optional[float]= None, + temperature: Optional[float]= None, + temperature_unit: Optional[UnitDefinitionAnnot]= None, **kwargs, ): params = { @@ -493,50 +522,56 @@ def add_to_measurements( "group_id": group_id, "ph": ph, "temperature": temperature, - "temperature_unit": temperature_unit, + "temperature_unit": temperature_unit } if "id" in kwargs: params["id"] = kwargs["id"] - self.measurements.append(Measurement(**params)) + self.measurements.append( + Measurement(**params) + ) return self.measurements[-1] + def add_to_equations( self, species_id: str, equation: str, equation_type: EquationType, - variables: list[Variable] = [], + variables: list[Variable]= [], **kwargs, ): params = { "species_id": species_id, "equation": equation, "equation_type": equation_type, - "variables": variables, + "variables": variables } if "id" in kwargs: params["id"] = kwargs["id"] - self.equations.append(Equation(**params)) + self.equations.append( + Equation(**params) + ) return self.equations[-1] + def add_to_parameters( self, id: str, name: str, symbol: str, - value: Optional[float] = None, - unit: Optional[UnitDefinitionAnnot] = None, - initial_value: Optional[float] = None, - upper_bound: Optional[float] = None, - lower_bound: Optional[float] = None, - stderr: Optional[float] = None, - constant: Optional[bool] = True, + value: Optional[float]= None, + unit: Optional[UnitDefinitionAnnot]= None, + initial_value: Optional[float]= None, + upper_bound: Optional[float]= None, + lower_bound: Optional[float]= None, + stderr: Optional[float]= None, + constant: Optional[bool]= True, **kwargs, ): params = { @@ -549,21 +584,24 @@ def add_to_parameters( "upper_bound": upper_bound, "lower_bound": lower_bound, "stderr": stderr, - "constant": constant, + "constant": constant } if "id" in kwargs: params["id"] = kwargs["id"] - self.parameters.append(Parameter(**params)) + self.parameters.append( + Parameter(**params) + ) return self.parameters[-1] class Creator(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assignment=True, - ) # type: ignore + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment = True, + ) # type: ignore given_name: str family_name: str @@ -572,30 +610,33 @@ class Creator(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Creator/" + str(uuid4()), + default_factory=lambda: "enzml:Creator/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: ["enzml:Creator", "schema:person"], + default_factory = lambda: [ + "enzml:Creator","schema:person" + ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "given_name": "schema:givenName", "family_name": "schema:familyName", "mail": "schema:email", - }, + } ) + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -617,9 +658,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, ( - f"Attribute {attr} not found in {self.__class__.__name__}" - ) + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -628,7 +667,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -657,9 +699,10 @@ def add_type_term( class Vessel(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assignment=True, - ) # type: ignore + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment = True, + ) # type: ignore id: str name: str @@ -670,33 +713,36 @@ class Vessel(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Vessel/" + str(uuid4()), + default_factory=lambda: "enzml:Vessel/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: ["enzml:Vessel", "OBO:OBI_0400081"], + default_factory = lambda: [ + "enzml:Vessel","OBO:OBI_0400081" + ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": { "@id": "schema:identifier", "@type": "@id", }, "name": "schema:name", "volume": "OBO:OBI_0002139", - }, + } ) + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -718,9 +764,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, ( - f"Attribute {attr} not found in {self.__class__.__name__}" - ) + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -729,7 +773,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -758,35 +805,38 @@ def add_type_term( class Protein(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assignment=True, - ) # type: ignore + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment = True, + ) # type: ignore id: str name: str constant: bool = True - sequence: Optional[str] = Field(default=None) - vessel_id: Optional[str] = Field(default=None) - ecnumber: Optional[str] = Field(default=None) - organism: Optional[str] = Field(default=None) - organism_tax_id: Optional[str] = Field(default=None) + sequence: Optional[Optional[str]] = Field(default=None) + vessel_id: Optional[Optional[str]] = Field(default=None) + ecnumber: Optional[Optional[str]] = Field(default=None) + organism: Optional[Optional[str]] = Field(default=None) + organism_tax_id: Optional[Optional[str]] = Field(default=None) references: list[str] = Field(default_factory=list) # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Protein/" + str(uuid4()), + default_factory=lambda: "enzml:Protein/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: ["enzml:Protein", "OBO:PR_000000001"], + default_factory = lambda: [ + "enzml:Protein","OBO:PR_000000001" + ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": { "@id": "schema:identifier", "@type": "@id", @@ -805,15 +855,16 @@ class Protein(BaseModel): "@id": "schema:citation", "@type": "@id", }, - }, + } ) + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -835,9 +886,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, ( - f"Attribute {attr} not found in {self.__class__.__name__}" - ) + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -846,7 +895,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -875,33 +927,34 @@ def add_type_term( class Complex(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assignment=True, - ) # type: ignore + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment = True, + ) # type: ignore id: str name: str constant: bool = False - vessel_id: Optional[str] = Field(default=None) + vessel_id: Optional[Optional[str]] = Field(default=None) participants: list[str] = Field(default_factory=list) # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Complex/" + str(uuid4()), + default_factory=lambda: "enzml:Complex/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: [ + default_factory = lambda: [ "enzml:Complex", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": { "@id": "schema:identifier", "@type": "@id", @@ -914,15 +967,16 @@ class Complex(BaseModel): "participants": { "@type": "@id", }, - }, + } ) + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -944,9 +998,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, ( - f"Attribute {attr} not found in {self.__class__.__name__}" - ) + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -955,7 +1007,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -984,36 +1039,38 @@ def add_type_term( class SmallMolecule(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assignment=True, - ) # type: ignore + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment = True, + ) # type: ignore id: str name: str constant: bool = False - vessel_id: Optional[str] = Field(default=None) - canonical_smiles: Optional[str] = Field(default=None) - inchi: Optional[str] = Field(default=None) - inchikey: Optional[str] = Field(default=None) + vessel_id: Optional[Optional[str]] = Field(default=None) + canonical_smiles: Optional[Optional[str]] = Field(default=None) + inchi: Optional[Optional[str]] = Field(default=None) + inchikey: Optional[Optional[str]] = Field(default=None) + synonymous_names: list[str] = Field(default_factory=list) references: list[str] = Field(default_factory=list) # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:SmallMolecule/" + str(uuid4()), + default_factory=lambda: "enzml:SmallMolecule/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: [ + default_factory = lambda: [ "enzml:SmallMolecule", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": { "@id": "schema:identifier", "@type": "@id", @@ -1027,15 +1084,16 @@ class SmallMolecule(BaseModel): "@id": "schema:citation", "@type": "@id", }, - }, + } ) + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -1057,9 +1115,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, ( - f"Attribute {attr} not found in {self.__class__.__name__}" - ) + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1068,7 +1124,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1097,46 +1156,57 @@ def add_type_term( class Reaction(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assignment=True, - ) # type: ignore + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment = True, + ) # type: ignore id: str name: str reversible: bool = False - kinetic_law: Optional[Equation] = Field(default=None) - species: list[ReactionElement] = Field(default_factory=list) - modifiers: list[str] = Field(default_factory=list) + kinetic_law: Optional[Optional[Equation]] = Field(default=None) + reactants: list[ReactionElement] = Field(default_factory=list) + products: list[ReactionElement] = Field(default_factory=list) + modifiers: list[ModifierElement] = Field(default_factory=list) # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Reaction/" + str(uuid4()), + default_factory=lambda: "enzml:Reaction/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: [ + default_factory = lambda: [ "enzml:Reaction", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": { "@id": "schema:identifier", "@type": "@id", }, - "modifiers": { - "@type": "@id", - }, - }, + } ) - def filter_species(self, **kwargs) -> list[ReactionElement]: - """Filters the species attribute based on the given kwargs + def filter_reactants(self, **kwargs) -> list[ReactionElement]: + """Filters the reactants attribute based on the given kwargs + + Args: + **kwargs: The attributes to filter by. + + Returns: + list[ReactionElement]: The filtered list of ReactionElement objects + """ + + return FilterWrapper[ReactionElement](self.reactants, **kwargs).filter() + + def filter_products(self, **kwargs) -> list[ReactionElement]: + """Filters the products attribute based on the given kwargs Args: **kwargs: The attributes to filter by. @@ -1145,14 +1215,27 @@ def filter_species(self, **kwargs) -> list[ReactionElement]: list[ReactionElement]: The filtered list of ReactionElement objects """ - return FilterWrapper[ReactionElement](self.species, **kwargs).filter() + return FilterWrapper[ReactionElement](self.products, **kwargs).filter() + + def filter_modifiers(self, **kwargs) -> list[ModifierElement]: + """Filters the modifiers attribute based on the given kwargs + + Args: + **kwargs: The attributes to filter by. + + Returns: + list[ModifierElement]: The filtered list of ModifierElement objects + """ + + return FilterWrapper[ModifierElement](self.modifiers, **kwargs).filter() + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -1174,9 +1257,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, ( - f"Attribute {attr} not found in {self.__class__.__name__}" - ) + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1185,7 +1266,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1212,60 +1296,210 @@ def add_type_term( add_namespace(self, prefix, iri) self.ld_type.append(term) - def add_to_species( + + def add_to_reactants( + self, + species_id: str, + stoichiometry: float= 1, + **kwargs, + ): + params = { + "species_id": species_id, + "stoichiometry": stoichiometry + } + + if "id" in kwargs: + params["id"] = kwargs["id"] + + self.reactants.append( + ReactionElement(**params) + ) + + return self.reactants[-1] + + + def add_to_products( self, species_id: str, - stoichiometry: float, + stoichiometry: float= 1, **kwargs, ): - params = {"species_id": species_id, "stoichiometry": stoichiometry} + params = { + "species_id": species_id, + "stoichiometry": stoichiometry + } if "id" in kwargs: params["id"] = kwargs["id"] - self.species.append(ReactionElement(**params)) + self.products.append( + ReactionElement(**params) + ) + + return self.products[-1] + - return self.species[-1] + def add_to_modifiers( + self, + species_id: str, + role: ModifierRole, + **kwargs, + ): + params = { + "species_id": species_id, + "role": role + } + + if "id" in kwargs: + params["id"] = kwargs["id"] + + self.modifiers.append( + ModifierElement(**params) + ) + return self.modifiers[-1] class ReactionElement(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assignment=True, - ) # type: ignore + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment = True, + ) # type: ignore species_id: str - stoichiometry: float + stoichiometry: float = 1 # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:ReactionElement/" + str(uuid4()), + default_factory=lambda: "enzml:ReactionElement/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: [ + default_factory = lambda: [ "enzml:ReactionElement", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id", + }, + } + ) + + + def set_attr_term( + self, + attr: str, + term: str | dict, + prefix: str | None = None, + iri: str | None = None + ): + """Sets the term for a given attribute in the JSON-LD object + + Example: + # Using an IRI term + >> obj.set_attr_term("name", "http://schema.org/givenName") + + # Using a prefix and term + >> obj.set_attr_term("name", "schema:givenName", "schema", "http://schema.org") + + # Usinng a dictionary term + >> obj.set_attr_term("name", {"@id": "http://schema.org/givenName", "@type": "@id"}) + + Args: + attr (str): The attribute to set the term for + term (str | dict): The term to set for the attribute + + Raises: + AssertionError: If the attribute is not found in the model + """ + + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_context[attr] = term + + def add_type_term( + self, + term: str, + prefix: str | None = None, + iri: str | None = None + ): + """Adds a term to the @type field of the JSON-LD object + + Example: + # Using a term + >> obj.add_type_term("https://schema.org/Person") + + # Using a prefixed term + >> obj.add_type_term("schema:Person", "schema", "https://schema.org/Person") + + Args: + term (str): The term to add to the @type field + prefix (str, optional): The prefix to use for the term. Defaults to None. + iri (str, optional): The IRI to use for the term prefix. Defaults to None. + + Raises: + ValueError: If prefix is provided but iri is not + ValueError: If iri is provided but prefix is not + """ + + if prefix: + validate_prefix(term, prefix) + + add_namespace(self, prefix, iri) + self.ld_type.append(term) + + +class ModifierElement(BaseModel): + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment = True, + ) # type: ignore + + species_id: str + role: ModifierRole + + # JSON-LD fields + ld_id: str = Field( + serialization_alias="@id", + default_factory=lambda: "enzml:ModifierElement/" + str(uuid4()) + ) + ld_type: list[str] = Field( + serialization_alias="@type", + default_factory = lambda: [ + "enzml:ModifierElement", + ], + ) + ld_context: dict[str, str | dict] = Field( + serialization_alias="@context", + default_factory = lambda: { + "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "species_id": { "@id": "schema:identifier", "@type": "@id", }, - }, + } ) + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -1287,9 +1521,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, ( - f"Attribute {attr} not found in {self.__class__.__name__}" - ) + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1298,7 +1530,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1327,9 +1562,10 @@ def add_type_term( class Equation(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assignment=True, - ) # type: ignore + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment = True, + ) # type: ignore species_id: str equation: str @@ -1339,25 +1575,25 @@ class Equation(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Equation/" + str(uuid4()), + default_factory=lambda: "enzml:Equation/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: [ + default_factory = lambda: [ "enzml:Equation", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "species_id": { "@id": "schema:identifier", "@type": "@id", }, - }, + } ) def filter_variables(self, **kwargs) -> list[Variable]: @@ -1372,12 +1608,13 @@ def filter_variables(self, **kwargs) -> list[Variable]: return FilterWrapper[Variable](self.variables, **kwargs).filter() + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -1399,9 +1636,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, ( - f"Attribute {attr} not found in {self.__class__.__name__}" - ) + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1410,7 +1645,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1437,6 +1675,7 @@ def add_type_term( add_namespace(self, prefix, iri) self.ld_type.append(term) + def add_to_variables( self, id: str, @@ -1444,20 +1683,26 @@ def add_to_variables( symbol: str, **kwargs, ): - params = {"id": id, "name": name, "symbol": symbol} + params = { + "id": id, + "name": name, + "symbol": symbol + } if "id" in kwargs: params["id"] = kwargs["id"] - self.variables.append(Variable(**params)) + self.variables.append( + Variable(**params) + ) return self.variables[-1] - class Variable(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assignment=True, - ) # type: ignore + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment = True, + ) # type: ignore id: str name: str @@ -1466,33 +1711,34 @@ class Variable(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Variable/" + str(uuid4()), + default_factory=lambda: "enzml:Variable/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: [ + default_factory = lambda: [ "enzml:Variable", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": { "@id": "schema:identifier", "@type": "@id", }, - }, + } ) + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -1514,9 +1760,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, ( - f"Attribute {attr} not found in {self.__class__.__name__}" - ) + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1525,7 +1769,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1554,51 +1801,53 @@ def add_type_term( class Parameter(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assignment=True, - ) # type: ignore + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment = True, + ) # type: ignore id: str name: str symbol: str - value: Optional[float] = Field(default=None) - unit: Optional[UnitDefinitionAnnot] = Field(default=None) - initial_value: Optional[float] = Field(default=None) - upper_bound: Optional[float] = Field(default=None) - lower_bound: Optional[float] = Field(default=None) - stderr: Optional[float] = Field(default=None) + value: Optional[Optional[float]] = Field(default=None) + unit: Optional[Optional[UnitDefinitionAnnot]] = Field(default=None) + initial_value: Optional[Optional[float]] = Field(default=None) + upper_bound: Optional[Optional[float]] = Field(default=None) + lower_bound: Optional[Optional[float]] = Field(default=None) + stderr: Optional[Optional[float]] = Field(default=None) constant: Optional[bool] = True # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Parameter/" + str(uuid4()), + default_factory=lambda: "enzml:Parameter/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: [ + default_factory = lambda: [ "enzml:Parameter", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": { "@id": "schema:identifier", "@type": "@id", }, - }, + } ) + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -1620,9 +1869,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, ( - f"Attribute {attr} not found in {self.__class__.__name__}" - ) + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1631,7 +1878,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1660,35 +1910,36 @@ def add_type_term( class Measurement(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assignment=True, - ) # type: ignore + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment = True, + ) # type: ignore id: str name: str species_data: list[MeasurementData] = Field(default_factory=list) - group_id: Optional[str] = Field(default=None) - ph: Optional[float] = Field(default=None) - temperature: Optional[float] = Field(default=None) - temperature_unit: Optional[UnitDefinitionAnnot] = Field(default=None) + group_id: Optional[Optional[str]] = Field(default=None) + ph: Optional[Optional[float]] = Field(default=None) + temperature: Optional[Optional[float]] = Field(default=None) + temperature_unit: Optional[Optional[UnitDefinitionAnnot]] = Field(default=None) # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Measurement/" + str(uuid4()), + default_factory=lambda: "enzml:Measurement/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: [ + default_factory = lambda: [ "enzml:Measurement", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "id": { "@id": "schema:identifier", "@type": "@id", @@ -1696,7 +1947,7 @@ class Measurement(BaseModel): "group_id": { "@type": "@id", }, - }, + } ) def filter_species_data(self, **kwargs) -> list[MeasurementData]: @@ -1711,12 +1962,13 @@ def filter_species_data(self, **kwargs) -> list[MeasurementData]: return FilterWrapper[MeasurementData](self.species_data, **kwargs).filter() + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -1738,9 +1990,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, ( - f"Attribute {attr} not found in {self.__class__.__name__}" - ) + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1749,7 +1999,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1776,83 +2029,88 @@ def add_type_term( add_namespace(self, prefix, iri) self.ld_type.append(term) + def add_to_species_data( self, species_id: str, - initial: float, - data_unit: UnitDefinitionAnnot, - data_type: DataTypes, - prepared: Optional[float] = None, - data: list[float] = [], - time: list[float] = [], - time_unit: Optional[UnitDefinitionAnnot] = None, - is_simulated: bool = False, + prepared: Optional[float]= None, + initial: Optional[float]= None, + data_unit: Optional[UnitDefinitionAnnot]= None, + data: list[float]= [], + time: list[float]= [], + time_unit: Optional[UnitDefinitionAnnot]= None, + data_type: Optional[DataTypes]= None, + is_simulated: Optional[bool]= False, **kwargs, ): params = { "species_id": species_id, + "prepared": prepared, "initial": initial, "data_unit": data_unit, - "data_type": data_type, - "prepared": prepared, "data": data, "time": time, "time_unit": time_unit, - "is_simulated": is_simulated, + "data_type": data_type, + "is_simulated": is_simulated } if "id" in kwargs: params["id"] = kwargs["id"] - self.species_data.append(MeasurementData(**params)) + self.species_data.append( + MeasurementData(**params) + ) return self.species_data[-1] class MeasurementData(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assignment=True, - ) # type: ignore + + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment = True, + ) # type: ignore species_id: str - initial: float - data_unit: UnitDefinitionAnnot - data_type: DataTypes - prepared: Optional[float] = Field(default=None) + prepared: Optional[Optional[float]] = Field(default=None) + initial: Optional[Optional[float]] = Field(default=None) + data_unit: Optional[Optional[UnitDefinitionAnnot]] = Field(default=None) data: list[float] = Field(default_factory=list) time: list[float] = Field(default_factory=list) - time_unit: Optional[UnitDefinitionAnnot] = Field(default=None) - is_simulated: bool = False + time_unit: Optional[Optional[UnitDefinitionAnnot]] = Field(default=None) + data_type: Optional[Optional[DataTypes]] = Field(default=None) + is_simulated: Optional[bool] = False # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:MeasurementData/" + str(uuid4()), + default_factory=lambda: "enzml:MeasurementData/" + str(uuid4()) ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory=lambda: [ + default_factory = lambda: [ "enzml:MeasurementData", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory=lambda: { + default_factory = lambda: { "enzml": "http://www.enzymeml.org/v2/", - "schema": "https://schema.org/", "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", "species_id": { "@type": "@id", }, - }, + } ) + def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None, + iri: str | None = None ): """Sets the term for a given attribute in the JSON-LD object @@ -1874,9 +2132,7 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, ( - f"Attribute {attr} not found in {self.__class__.__name__}" - ) + assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" if prefix: validate_prefix(term, prefix) @@ -1885,7 +2141,10 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, term: str, prefix: str | None = None, iri: str | None = None + self, + term: str, + prefix: str | None = None, + iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1913,20 +2172,31 @@ def add_type_term( self.ld_type.append(term) +class ModifierRole(Enum): + ACTIVATOR = "activator" + ADDITIVE = "additive" + BIOCATALYST = "biocatalyst" + BUFFER = "buffer" + CATALYST = "catalyst" + INHIBITOR = "inhibitor" + SOLVENT = "solvent" + class EquationType(Enum): ASSIGNMENT = "assignment" INITIAL_ASSIGNMENT = "initialAssignment" ODE = "ode" RATE_LAW = "rateLaw" - class DataTypes(Enum): ABSORBANCE = "absorbance" + AMOUNT = "amount" CONCENTRATION = "concentration" CONVERSION = "conversion" FLUORESCENCE = "fluorescence" PEAK_AREA = "peakarea" TRANSMITTANCE = "transmittance" + TURNOVER = "turnover" + YIELD = "yield" # Rebuild all the classes within this file @@ -1939,10 +2209,11 @@ class DataTypes(Enum): SmallMolecule, Reaction, ReactionElement, + ModifierElement, Equation, Variable, Parameter, Measurement, MeasurementData, ]: - cls.model_rebuild() + cls.model_rebuild() \ No newline at end of file From fcd0d57a2d40687616039ac37fd06be29d609b53 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 9 May 2025 01:59:17 +0200 Subject: [PATCH 109/172] remove unused imports --- pyenzyme/versions/v2.py | 606 +++++++++++++++++----------------------- 1 file changed, 253 insertions(+), 353 deletions(-) diff --git a/pyenzyme/versions/v2.py b/pyenzyme/versions/v2.py index fe90cd43..c341edc6 100644 --- a/pyenzyme/versions/v2.py +++ b/pyenzyme/versions/v2.py @@ -34,16 +34,16 @@ from __future__ import annotations from pydantic import BaseModel, Field, ConfigDict -from typing import Optional, Generic, TypeVar, Union +from typing import Optional, Generic, TypeVar from enum import Enum from uuid import uuid4 -from datetime import date, datetime from mdmodels.units.annotation import UnitDefinitionAnnot # Filter Wrapper definition used to filter a list of objects # based on their attributes Cls = TypeVar("Cls") + class FilterWrapper(Generic[Cls]): """Wrapper class to filter a list of objects based on their attributes""" @@ -80,7 +80,8 @@ def add_namespace(obj, prefix: str | None, iri: str | None): elif iri and prefix is None: raise ValueError("If iri is provided, prefix must also be provided") - obj.ld_context[prefix] = iri # type: ignore + obj.ld_context[prefix] = iri # type: ignore + def validate_prefix(term: str | dict, prefix: str): """Validates that a term is prefixed with a given prefix @@ -98,13 +99,14 @@ def validate_prefix(term: str | dict, prefix: str): elif isinstance(term, str) and not term.startswith(prefix + ":"): raise ValueError(f"Term {term} is not prefixed with {prefix}") + # Model Definitions -class EnzymeMLDocument(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assignment = True, - ) # type: ignore +class EnzymeMLDocument(BaseModel): + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment=True, + ) # type: ignore name: str version: str = "2" @@ -125,17 +127,17 @@ class EnzymeMLDocument(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:EnzymeMLDocument/" + str(uuid4()) + default_factory=lambda: "enzml:EnzymeMLDocument/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory = lambda: [ + default_factory=lambda: [ "enzml:EnzymeMLDocument", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory = lambda: { + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", @@ -147,7 +149,7 @@ class EnzymeMLDocument(BaseModel): "@id": "schema:citation", "@type": "@id", }, - } + }, ) def filter_creators(self, **kwargs) -> list[Creator]: @@ -258,13 +260,12 @@ def filter_parameters(self, **kwargs) -> list[Parameter]: return FilterWrapper[Parameter](self.parameters, **kwargs).filter() - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -286,7 +287,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, ( + f"Attribute {attr} not found in {self.__class__.__name__}" + ) if prefix: validate_prefix(term, prefix) @@ -295,10 +298,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -325,7 +325,6 @@ def add_type_term( add_namespace(self, prefix, iri) self.ld_type.append(term) - def add_to_creators( self, given_name: str, @@ -333,29 +332,22 @@ def add_to_creators( mail: str, **kwargs, ): - params = { - "given_name": given_name, - "family_name": family_name, - "mail": mail - } + params = {"given_name": given_name, "family_name": family_name, "mail": mail} if "id" in kwargs: params["id"] = kwargs["id"] - self.creators.append( - Creator(**params) - ) + self.creators.append(Creator(**params)) return self.creators[-1] - def add_to_vessels( self, id: str, name: str, volume: float, unit: UnitDefinitionAnnot, - constant: bool= True, + constant: bool = True, **kwargs, ): params = { @@ -363,30 +355,27 @@ def add_to_vessels( "name": name, "volume": volume, "unit": unit, - "constant": constant + "constant": constant, } if "id" in kwargs: params["id"] = kwargs["id"] - self.vessels.append( - Vessel(**params) - ) + self.vessels.append(Vessel(**params)) return self.vessels[-1] - def add_to_proteins( self, id: str, name: str, - constant: bool= True, - sequence: Optional[str]= None, - vessel_id: Optional[str]= None, - ecnumber: Optional[str]= None, - organism: Optional[str]= None, - organism_tax_id: Optional[str]= None, - references: list[str]= [], + constant: bool = True, + sequence: Optional[str] = None, + vessel_id: Optional[str] = None, + ecnumber: Optional[str] = None, + organism: Optional[str] = None, + organism_tax_id: Optional[str] = None, + references: list[str] = [], **kwargs, ): params = { @@ -398,26 +387,23 @@ def add_to_proteins( "ecnumber": ecnumber, "organism": organism, "organism_tax_id": organism_tax_id, - "references": references + "references": references, } if "id" in kwargs: params["id"] = kwargs["id"] - self.proteins.append( - Protein(**params) - ) + self.proteins.append(Protein(**params)) return self.proteins[-1] - def add_to_complexes( self, id: str, name: str, - constant: bool= False, - vessel_id: Optional[str]= None, - participants: list[str]= [], + constant: bool = False, + vessel_id: Optional[str] = None, + participants: list[str] = [], **kwargs, ): params = { @@ -425,30 +411,27 @@ def add_to_complexes( "name": name, "constant": constant, "vessel_id": vessel_id, - "participants": participants + "participants": participants, } if "id" in kwargs: params["id"] = kwargs["id"] - self.complexes.append( - Complex(**params) - ) + self.complexes.append(Complex(**params)) return self.complexes[-1] - def add_to_small_molecules( self, id: str, name: str, - constant: bool= False, - vessel_id: Optional[str]= None, - canonical_smiles: Optional[str]= None, - inchi: Optional[str]= None, - inchikey: Optional[str]= None, - synonymous_names: list[str]= [], - references: list[str]= [], + constant: bool = False, + vessel_id: Optional[str] = None, + canonical_smiles: Optional[str] = None, + inchi: Optional[str] = None, + inchikey: Optional[str] = None, + synonymous_names: list[str] = [], + references: list[str] = [], **kwargs, ): params = { @@ -460,28 +443,25 @@ def add_to_small_molecules( "inchi": inchi, "inchikey": inchikey, "synonymous_names": synonymous_names, - "references": references + "references": references, } if "id" in kwargs: params["id"] = kwargs["id"] - self.small_molecules.append( - SmallMolecule(**params) - ) + self.small_molecules.append(SmallMolecule(**params)) return self.small_molecules[-1] - def add_to_reactions( self, id: str, name: str, - reversible: bool= False, - kinetic_law: Optional[Equation]= None, - reactants: list[ReactionElement]= [], - products: list[ReactionElement]= [], - modifiers: list[ModifierElement]= [], + reversible: bool = False, + kinetic_law: Optional[Equation] = None, + reactants: list[ReactionElement] = [], + products: list[ReactionElement] = [], + modifiers: list[ModifierElement] = [], **kwargs, ): params = { @@ -491,28 +471,25 @@ def add_to_reactions( "kinetic_law": kinetic_law, "reactants": reactants, "products": products, - "modifiers": modifiers + "modifiers": modifiers, } if "id" in kwargs: params["id"] = kwargs["id"] - self.reactions.append( - Reaction(**params) - ) + self.reactions.append(Reaction(**params)) return self.reactions[-1] - def add_to_measurements( self, id: str, name: str, - species_data: list[MeasurementData]= [], - group_id: Optional[str]= None, - ph: Optional[float]= None, - temperature: Optional[float]= None, - temperature_unit: Optional[UnitDefinitionAnnot]= None, + species_data: list[MeasurementData] = [], + group_id: Optional[str] = None, + ph: Optional[float] = None, + temperature: Optional[float] = None, + temperature_unit: Optional[UnitDefinitionAnnot] = None, **kwargs, ): params = { @@ -522,56 +499,50 @@ def add_to_measurements( "group_id": group_id, "ph": ph, "temperature": temperature, - "temperature_unit": temperature_unit + "temperature_unit": temperature_unit, } if "id" in kwargs: params["id"] = kwargs["id"] - self.measurements.append( - Measurement(**params) - ) + self.measurements.append(Measurement(**params)) return self.measurements[-1] - def add_to_equations( self, species_id: str, equation: str, equation_type: EquationType, - variables: list[Variable]= [], + variables: list[Variable] = [], **kwargs, ): params = { "species_id": species_id, "equation": equation, "equation_type": equation_type, - "variables": variables + "variables": variables, } if "id" in kwargs: params["id"] = kwargs["id"] - self.equations.append( - Equation(**params) - ) + self.equations.append(Equation(**params)) return self.equations[-1] - def add_to_parameters( self, id: str, name: str, symbol: str, - value: Optional[float]= None, - unit: Optional[UnitDefinitionAnnot]= None, - initial_value: Optional[float]= None, - upper_bound: Optional[float]= None, - lower_bound: Optional[float]= None, - stderr: Optional[float]= None, - constant: Optional[bool]= True, + value: Optional[float] = None, + unit: Optional[UnitDefinitionAnnot] = None, + initial_value: Optional[float] = None, + upper_bound: Optional[float] = None, + lower_bound: Optional[float] = None, + stderr: Optional[float] = None, + constant: Optional[bool] = True, **kwargs, ): params = { @@ -584,24 +555,21 @@ def add_to_parameters( "upper_bound": upper_bound, "lower_bound": lower_bound, "stderr": stderr, - "constant": constant + "constant": constant, } if "id" in kwargs: params["id"] = kwargs["id"] - self.parameters.append( - Parameter(**params) - ) + self.parameters.append(Parameter(**params)) return self.parameters[-1] class Creator(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assignment = True, - ) # type: ignore + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment=True, + ) # type: ignore given_name: str family_name: str @@ -610,33 +578,30 @@ class Creator(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Creator/" + str(uuid4()) + default_factory=lambda: "enzml:Creator/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory = lambda: [ - "enzml:Creator","schema:person" - ], + default_factory=lambda: ["enzml:Creator", "schema:person"], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory = lambda: { + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", "given_name": "schema:givenName", "family_name": "schema:familyName", "mail": "schema:email", - } + }, ) - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -658,7 +623,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, ( + f"Attribute {attr} not found in {self.__class__.__name__}" + ) if prefix: validate_prefix(term, prefix) @@ -667,10 +634,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -699,10 +663,9 @@ def add_type_term( class Vessel(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assignment = True, - ) # type: ignore + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment=True, + ) # type: ignore id: str name: str @@ -713,17 +676,15 @@ class Vessel(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Vessel/" + str(uuid4()) + default_factory=lambda: "enzml:Vessel/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory = lambda: [ - "enzml:Vessel","OBO:OBI_0400081" - ], + default_factory=lambda: ["enzml:Vessel", "OBO:OBI_0400081"], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory = lambda: { + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", @@ -733,16 +694,15 @@ class Vessel(BaseModel): }, "name": "schema:name", "volume": "OBO:OBI_0002139", - } + }, ) - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -764,7 +724,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, ( + f"Attribute {attr} not found in {self.__class__.__name__}" + ) if prefix: validate_prefix(term, prefix) @@ -773,10 +735,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -805,10 +764,9 @@ def add_type_term( class Protein(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assignment = True, - ) # type: ignore + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment=True, + ) # type: ignore id: str name: str @@ -823,17 +781,15 @@ class Protein(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Protein/" + str(uuid4()) + default_factory=lambda: "enzml:Protein/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory = lambda: [ - "enzml:Protein","OBO:PR_000000001" - ], + default_factory=lambda: ["enzml:Protein", "OBO:PR_000000001"], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory = lambda: { + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", @@ -855,16 +811,15 @@ class Protein(BaseModel): "@id": "schema:citation", "@type": "@id", }, - } + }, ) - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -886,7 +841,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, ( + f"Attribute {attr} not found in {self.__class__.__name__}" + ) if prefix: validate_prefix(term, prefix) @@ -895,10 +852,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -927,10 +881,9 @@ def add_type_term( class Complex(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assignment = True, - ) # type: ignore + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment=True, + ) # type: ignore id: str name: str @@ -941,17 +894,17 @@ class Complex(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Complex/" + str(uuid4()) + default_factory=lambda: "enzml:Complex/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory = lambda: [ + default_factory=lambda: [ "enzml:Complex", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory = lambda: { + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", @@ -967,16 +920,15 @@ class Complex(BaseModel): "participants": { "@type": "@id", }, - } + }, ) - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -998,7 +950,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, ( + f"Attribute {attr} not found in {self.__class__.__name__}" + ) if prefix: validate_prefix(term, prefix) @@ -1007,10 +961,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1039,10 +990,9 @@ def add_type_term( class SmallMolecule(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assignment = True, - ) # type: ignore + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment=True, + ) # type: ignore id: str name: str @@ -1057,17 +1007,17 @@ class SmallMolecule(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:SmallMolecule/" + str(uuid4()) + default_factory=lambda: "enzml:SmallMolecule/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory = lambda: [ + default_factory=lambda: [ "enzml:SmallMolecule", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory = lambda: { + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", @@ -1084,16 +1034,15 @@ class SmallMolecule(BaseModel): "@id": "schema:citation", "@type": "@id", }, - } + }, ) - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -1115,7 +1064,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, ( + f"Attribute {attr} not found in {self.__class__.__name__}" + ) if prefix: validate_prefix(term, prefix) @@ -1124,10 +1075,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1156,10 +1104,9 @@ def add_type_term( class Reaction(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assignment = True, - ) # type: ignore + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment=True, + ) # type: ignore id: str name: str @@ -1172,17 +1119,17 @@ class Reaction(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Reaction/" + str(uuid4()) + default_factory=lambda: "enzml:Reaction/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory = lambda: [ + default_factory=lambda: [ "enzml:Reaction", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory = lambda: { + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", @@ -1190,7 +1137,7 @@ class Reaction(BaseModel): "@id": "schema:identifier", "@type": "@id", }, - } + }, ) def filter_reactants(self, **kwargs) -> list[ReactionElement]: @@ -1229,13 +1176,12 @@ def filter_modifiers(self, **kwargs) -> list[ModifierElement]: return FilterWrapper[ModifierElement](self.modifiers, **kwargs).filter() - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -1257,7 +1203,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, ( + f"Attribute {attr} not found in {self.__class__.__name__}" + ) if prefix: validate_prefix(term, prefix) @@ -1266,10 +1214,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1296,74 +1241,56 @@ def add_type_term( add_namespace(self, prefix, iri) self.ld_type.append(term) - def add_to_reactants( self, species_id: str, - stoichiometry: float= 1, + stoichiometry: float = 1, **kwargs, ): - params = { - "species_id": species_id, - "stoichiometry": stoichiometry - } + params = {"species_id": species_id, "stoichiometry": stoichiometry} if "id" in kwargs: params["id"] = kwargs["id"] - self.reactants.append( - ReactionElement(**params) - ) + self.reactants.append(ReactionElement(**params)) return self.reactants[-1] - def add_to_products( self, species_id: str, - stoichiometry: float= 1, + stoichiometry: float = 1, **kwargs, ): - params = { - "species_id": species_id, - "stoichiometry": stoichiometry - } + params = {"species_id": species_id, "stoichiometry": stoichiometry} if "id" in kwargs: params["id"] = kwargs["id"] - self.products.append( - ReactionElement(**params) - ) + self.products.append(ReactionElement(**params)) return self.products[-1] - def add_to_modifiers( self, species_id: str, role: ModifierRole, **kwargs, ): - params = { - "species_id": species_id, - "role": role - } + params = {"species_id": species_id, "role": role} if "id" in kwargs: params["id"] = kwargs["id"] - self.modifiers.append( - ModifierElement(**params) - ) + self.modifiers.append(ModifierElement(**params)) return self.modifiers[-1] -class ReactionElement(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assignment = True, - ) # type: ignore +class ReactionElement(BaseModel): + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment=True, + ) # type: ignore species_id: str stoichiometry: float = 1 @@ -1371,17 +1298,17 @@ class ReactionElement(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:ReactionElement/" + str(uuid4()) + default_factory=lambda: "enzml:ReactionElement/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory = lambda: [ + default_factory=lambda: [ "enzml:ReactionElement", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory = lambda: { + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", @@ -1389,16 +1316,15 @@ class ReactionElement(BaseModel): "@id": "schema:identifier", "@type": "@id", }, - } + }, ) - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -1420,7 +1346,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, ( + f"Attribute {attr} not found in {self.__class__.__name__}" + ) if prefix: validate_prefix(term, prefix) @@ -1429,10 +1357,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1461,10 +1386,9 @@ def add_type_term( class ModifierElement(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assignment = True, - ) # type: ignore + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment=True, + ) # type: ignore species_id: str role: ModifierRole @@ -1472,17 +1396,17 @@ class ModifierElement(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:ModifierElement/" + str(uuid4()) + default_factory=lambda: "enzml:ModifierElement/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory = lambda: [ + default_factory=lambda: [ "enzml:ModifierElement", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory = lambda: { + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", @@ -1490,16 +1414,15 @@ class ModifierElement(BaseModel): "@id": "schema:identifier", "@type": "@id", }, - } + }, ) - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -1521,7 +1444,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, ( + f"Attribute {attr} not found in {self.__class__.__name__}" + ) if prefix: validate_prefix(term, prefix) @@ -1530,10 +1455,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1562,10 +1484,9 @@ def add_type_term( class Equation(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assignment = True, - ) # type: ignore + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment=True, + ) # type: ignore species_id: str equation: str @@ -1575,17 +1496,17 @@ class Equation(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Equation/" + str(uuid4()) + default_factory=lambda: "enzml:Equation/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory = lambda: [ + default_factory=lambda: [ "enzml:Equation", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory = lambda: { + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", @@ -1593,7 +1514,7 @@ class Equation(BaseModel): "@id": "schema:identifier", "@type": "@id", }, - } + }, ) def filter_variables(self, **kwargs) -> list[Variable]: @@ -1608,13 +1529,12 @@ def filter_variables(self, **kwargs) -> list[Variable]: return FilterWrapper[Variable](self.variables, **kwargs).filter() - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -1636,7 +1556,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, ( + f"Attribute {attr} not found in {self.__class__.__name__}" + ) if prefix: validate_prefix(term, prefix) @@ -1645,10 +1567,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1675,7 +1594,6 @@ def add_type_term( add_namespace(self, prefix, iri) self.ld_type.append(term) - def add_to_variables( self, id: str, @@ -1683,26 +1601,20 @@ def add_to_variables( symbol: str, **kwargs, ): - params = { - "id": id, - "name": name, - "symbol": symbol - } + params = {"id": id, "name": name, "symbol": symbol} if "id" in kwargs: params["id"] = kwargs["id"] - self.variables.append( - Variable(**params) - ) + self.variables.append(Variable(**params)) return self.variables[-1] -class Variable(BaseModel): - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assignment = True, - ) # type: ignore +class Variable(BaseModel): + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment=True, + ) # type: ignore id: str name: str @@ -1711,17 +1623,17 @@ class Variable(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Variable/" + str(uuid4()) + default_factory=lambda: "enzml:Variable/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory = lambda: [ + default_factory=lambda: [ "enzml:Variable", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory = lambda: { + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", @@ -1729,16 +1641,15 @@ class Variable(BaseModel): "@id": "schema:identifier", "@type": "@id", }, - } + }, ) - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -1760,7 +1671,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, ( + f"Attribute {attr} not found in {self.__class__.__name__}" + ) if prefix: validate_prefix(term, prefix) @@ -1769,10 +1682,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1801,10 +1711,9 @@ def add_type_term( class Parameter(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assignment = True, - ) # type: ignore + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment=True, + ) # type: ignore id: str name: str @@ -1820,17 +1729,17 @@ class Parameter(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Parameter/" + str(uuid4()) + default_factory=lambda: "enzml:Parameter/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory = lambda: [ + default_factory=lambda: [ "enzml:Parameter", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory = lambda: { + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", @@ -1838,16 +1747,15 @@ class Parameter(BaseModel): "@id": "schema:identifier", "@type": "@id", }, - } + }, ) - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -1869,7 +1777,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, ( + f"Attribute {attr} not found in {self.__class__.__name__}" + ) if prefix: validate_prefix(term, prefix) @@ -1878,10 +1788,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -1910,10 +1817,9 @@ def add_type_term( class Measurement(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assignment = True, - ) # type: ignore + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment=True, + ) # type: ignore id: str name: str @@ -1926,17 +1832,17 @@ class Measurement(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:Measurement/" + str(uuid4()) + default_factory=lambda: "enzml:Measurement/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory = lambda: [ + default_factory=lambda: [ "enzml:Measurement", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory = lambda: { + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", @@ -1947,7 +1853,7 @@ class Measurement(BaseModel): "group_id": { "@type": "@id", }, - } + }, ) def filter_species_data(self, **kwargs) -> list[MeasurementData]: @@ -1962,13 +1868,12 @@ def filter_species_data(self, **kwargs) -> list[MeasurementData]: return FilterWrapper[MeasurementData](self.species_data, **kwargs).filter() - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -1990,7 +1895,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, ( + f"Attribute {attr} not found in {self.__class__.__name__}" + ) if prefix: validate_prefix(term, prefix) @@ -1999,10 +1906,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -2029,18 +1933,17 @@ def add_type_term( add_namespace(self, prefix, iri) self.ld_type.append(term) - def add_to_species_data( self, species_id: str, - prepared: Optional[float]= None, - initial: Optional[float]= None, - data_unit: Optional[UnitDefinitionAnnot]= None, - data: list[float]= [], - time: list[float]= [], - time_unit: Optional[UnitDefinitionAnnot]= None, - data_type: Optional[DataTypes]= None, - is_simulated: Optional[bool]= False, + prepared: Optional[float] = None, + initial: Optional[float] = None, + data_unit: Optional[UnitDefinitionAnnot] = None, + data: list[float] = [], + time: list[float] = [], + time_unit: Optional[UnitDefinitionAnnot] = None, + data_type: Optional[DataTypes] = None, + is_simulated: Optional[bool] = False, **kwargs, ): params = { @@ -2052,24 +1955,21 @@ def add_to_species_data( "time": time, "time_unit": time_unit, "data_type": data_type, - "is_simulated": is_simulated + "is_simulated": is_simulated, } if "id" in kwargs: params["id"] = kwargs["id"] - self.species_data.append( - MeasurementData(**params) - ) + self.species_data.append(MeasurementData(**params)) return self.species_data[-1] class MeasurementData(BaseModel): - - model_config: ConfigDict = ConfigDict( # type: ignore - validate_assignment = True, - ) # type: ignore + model_config: ConfigDict = ConfigDict( # type: ignore + validate_assignment=True, + ) # type: ignore species_id: str prepared: Optional[Optional[float]] = Field(default=None) @@ -2084,33 +1984,32 @@ class MeasurementData(BaseModel): # JSON-LD fields ld_id: str = Field( serialization_alias="@id", - default_factory=lambda: "enzml:MeasurementData/" + str(uuid4()) + default_factory=lambda: "enzml:MeasurementData/" + str(uuid4()), ) ld_type: list[str] = Field( serialization_alias="@type", - default_factory = lambda: [ + default_factory=lambda: [ "enzml:MeasurementData", ], ) ld_context: dict[str, str | dict] = Field( serialization_alias="@context", - default_factory = lambda: { + default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", "species_id": { "@type": "@id", }, - } + }, ) - def set_attr_term( self, attr: str, term: str | dict, prefix: str | None = None, - iri: str | None = None + iri: str | None = None, ): """Sets the term for a given attribute in the JSON-LD object @@ -2132,7 +2031,9 @@ def set_attr_term( AssertionError: If the attribute is not found in the model """ - assert attr in self.model_fields, f"Attribute {attr} not found in {self.__class__.__name__}" + assert attr in self.model_fields, ( + f"Attribute {attr} not found in {self.__class__.__name__}" + ) if prefix: validate_prefix(term, prefix) @@ -2141,10 +2042,7 @@ def set_attr_term( self.ld_context[attr] = term def add_type_term( - self, - term: str, - prefix: str | None = None, - iri: str | None = None + self, term: str, prefix: str | None = None, iri: str | None = None ): """Adds a term to the @type field of the JSON-LD object @@ -2181,12 +2079,14 @@ class ModifierRole(Enum): INHIBITOR = "inhibitor" SOLVENT = "solvent" + class EquationType(Enum): ASSIGNMENT = "assignment" INITIAL_ASSIGNMENT = "initialAssignment" ODE = "ode" RATE_LAW = "rateLaw" + class DataTypes(Enum): ABSORBANCE = "absorbance" AMOUNT = "amount" @@ -2216,4 +2116,4 @@ class DataTypes(Enum): Measurement, MeasurementData, ]: - cls.model_rebuild() \ No newline at end of file + cls.model_rebuild() From c61836c96d2fcb34705bd6bacb1a5f332d5089d4 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 9 May 2025 12:20:01 +0200 Subject: [PATCH 110/172] test suite interface --- pyenzyme/__init__.py | 1 + pyenzyme/suite.py | 6 +++--- tests/integration/test_suite.py | 35 +++++++++++++++++++++++++++++++++ 3 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 tests/integration/test_suite.py diff --git a/pyenzyme/__init__.py b/pyenzyme/__init__.py index d0b72925..2cdc82db 100644 --- a/pyenzyme/__init__.py +++ b/pyenzyme/__init__.py @@ -13,6 +13,7 @@ from_excel = EnzymeMLHandler.from_excel from_sbml = EnzymeMLHandler.from_sbml read_enzymeml = EnzymeMLHandler.read_enzymeml +read_enzymeml_from_string = EnzymeMLHandler.read_enzymeml_from_string # Output functions to_pandas = EnzymeMLHandler.to_pandas diff --git a/pyenzyme/suite.py b/pyenzyme/suite.py index c4182d07..96491036 100644 --- a/pyenzyme/suite.py +++ b/pyenzyme/suite.py @@ -14,11 +14,11 @@ class EnzymeMLSuite: client (httpx.Client): The HTTP client for making requests to the EnzymeML service. """ - def __init__(self): + def __init__(self, url: str = "http://localhost:13452"): """ Initializes the EnzymeMLSuite with a base URL for the EnzymeML service. """ - self.client = httpx.Client(base_url="http://localhost:13452") + self.client = httpx.Client(base_url=url) def get_current(self) -> pe.EnzymeMLDocument: """ @@ -45,7 +45,7 @@ def get_current(self) -> pe.EnzymeMLDocument: if not isinstance(content["references"], list): content["references"] = [] - return pe.EnzymeMLDocument.model_validate(content) + return pe.read_enzymeml_from_string(content) def update_current(self, doc: pe.EnzymeMLDocument): """ diff --git a/tests/integration/test_suite.py b/tests/integration/test_suite.py new file mode 100644 index 00000000..46dadfa8 --- /dev/null +++ b/tests/integration/test_suite.py @@ -0,0 +1,35 @@ +import json +import pyenzyme as pe +from pyenzyme.suite import EnzymeMLSuite +from pytest_httpx import HTTPXMock + +from pyenzyme.tools import to_dict_wo_json_ld +from pyenzyme.versions import v2 + + +class TestSuite: + def test_fetch_current(self, httpx_mock: HTTPXMock): + # Arrange + with open("tests/fixtures/sbml/ode_example_enzml.json", "r") as f: + data = json.load(f) + httpx_mock.add_response(json={"data": {"content": data}}) + + # Act + suite = EnzymeMLSuite("https://test_url") + expected = v2.EnzymeMLDocument.model_validate(data) + doc = suite.get_current() + + # Assert + assert to_dict_wo_json_ld(doc) == to_dict_wo_json_ld(expected) + + def test_update_current(self, httpx_mock: HTTPXMock): + # Arrange + with open("tests/fixtures/sbml/ode_example_enzml.json", "r") as f: + data = pe.read_enzymeml_from_string(json.load(f)) + httpx_mock.add_response( + match_json=json.loads(data.model_dump_json()), + ) + + # Act + suite = EnzymeMLSuite("https://test_url") + suite.update_current(data) From a388daa4900f114001c555133a3ff8721454fde1 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 9 May 2025 12:20:19 +0200 Subject: [PATCH 111/172] use poetry and add httpx mock --- .github/workflows/unit-tests.yaml | 5 +++-- pyproject.toml | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/unit-tests.yaml b/.github/workflows/unit-tests.yaml index 7a5a729a..b082e1ac 100644 --- a/.github/workflows/unit-tests.yaml +++ b/.github/workflows/unit-tests.yaml @@ -20,8 +20,9 @@ jobs: - name: Install dependencies run: | python3 -m pip install --upgrade pip - python3 -m pip install pytest-cov openpyxl - pip3 install -e . + python3 -m pip install poetry + + poetry install --with tests - name: Test with pytest run: | python3 -m pytest -v diff --git a/pyproject.toml b/pyproject.toml index 679a0d60..e67ad73d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,6 +29,7 @@ openpyxl = "^3.1.4" [tool.poetry.group.tests.dependencies] openpyxl = "^3.1.4" pytest = "^8.2.2" +pytest-httpx = "^0.35.0" [build-system] requires = ["poetry-core"] From b752b404ebc4cde234748f17f20992d01ed4d037 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 9 May 2025 12:20:25 +0200 Subject: [PATCH 112/172] read in from string --- pyenzyme/versions/io.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/pyenzyme/versions/io.py b/pyenzyme/versions/io.py index 098007e9..e33b1bcd 100644 --- a/pyenzyme/versions/io.py +++ b/pyenzyme/versions/io.py @@ -52,6 +52,30 @@ def read_enzymeml(cls, path: str) -> v2.EnzymeMLDocument: # noqa: F405 raise ValueError(f"Invalid EnzymeML version: {path}") + @classmethod + def read_enzymeml_from_string(cls, data: str) -> v2.EnzymeMLDocument: # noqa: F405 + """Read an EnzymeML document from a string. + + Attempts to read the document using different version parsers until successful. + + Args: + data: The EnzymeML document as a string + + Returns: + An EnzymeMLDocument object + + Raises: + ValueError: If the document cannot be parsed with any available version + """ + for version in AVAILABLE_VERSIONS: + if version == "v2": + try: + return v2.EnzymeMLDocument.model_validate(data) + except ValidationError: + continue + + raise ValueError("Could not parse EnzymeML document: Invalid JSON") + @classmethod def from_dataframe( cls, From 7d1af971a2f38d90fe6c67abc09616806057a196 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 9 May 2025 12:21:46 +0200 Subject: [PATCH 113/172] revert poetry --- .github/workflows/unit-tests.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/unit-tests.yaml b/.github/workflows/unit-tests.yaml index b082e1ac..06860022 100644 --- a/.github/workflows/unit-tests.yaml +++ b/.github/workflows/unit-tests.yaml @@ -20,9 +20,9 @@ jobs: - name: Install dependencies run: | python3 -m pip install --upgrade pip - python3 -m pip install poetry + python3 -m pip install pytest-cov openpyxl pytest-httpx + pip3 install -e . - poetry install --with tests - name: Test with pytest run: | python3 -m pytest -v From e2a1ac0b69d157349b22afc8e248c57bd062f16e Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 9 May 2025 14:13:01 +0200 Subject: [PATCH 114/172] add composer function --- pyenzyme/__init__.py | 2 + pyenzyme/composer.py | 214 ++++++++++++++++ tests/fixtures/compose/expected_compose.json | 240 ++++++++++++++++++ .../compose/expected_compose_no_vessel.json | 202 +++++++++++++++ tests/integration/test_composer.py | 61 +++++ 5 files changed, 719 insertions(+) create mode 100644 pyenzyme/composer.py create mode 100644 tests/fixtures/compose/expected_compose.json create mode 100644 tests/fixtures/compose/expected_compose_no_vessel.json create mode 100644 tests/integration/test_composer.py diff --git a/pyenzyme/__init__.py b/pyenzyme/__init__.py index 2cdc82db..9d854481 100644 --- a/pyenzyme/__init__.py +++ b/pyenzyme/__init__.py @@ -5,6 +5,7 @@ from .versions.v2 import * # noqa: F403 from .versions.io import EnzymeMLHandler from .fetcher import * # noqa: F403 +from .composer import compose from .suite import EnzymeMLSuite # Input functions @@ -32,4 +33,5 @@ "to_pandas", "to_sbml", "write_enzymeml", + "compose", ] diff --git a/pyenzyme/composer.py b/pyenzyme/composer.py new file mode 100644 index 00000000..6ac0ee05 --- /dev/null +++ b/pyenzyme/composer.py @@ -0,0 +1,214 @@ +from typing import List, Optional, Tuple, Callable, Any + +from rich.console import Console + +from pyenzyme.fetcher.chebi import fetch_chebi +from pyenzyme.fetcher.pdb import fetch_pdb +from pyenzyme.fetcher.pubchem import fetch_pubchem +from pyenzyme.fetcher.rhea import fetch_rhea +from pyenzyme.fetcher.uniprot import fetch_uniprot +from pyenzyme.versions import v2 + +PROTEIN_FETCHERS = [ + fetch_uniprot, + fetch_pdb, +] + +SMALL_MOLECULE_FETCHERS = [ + fetch_pubchem, + fetch_chebi, +] + +REACTION_FETCHERS = [ + fetch_rhea, +] + +console = Console() + + +def compose( + name: str, + proteins: Optional[list[str]] = None, + small_molecules: Optional[list[str]] = None, + reactions: Optional[list[str]] = None, + vessel: Optional[v2.Vessel] = None, +) -> v2.EnzymeMLDocument: + """ + Compose an EnzymeML document from proteins, small molecules, and reactions. + + Args: + name: Name of the EnzymeML document + proteins: List of protein identifiers to fetch + small_molecules: List of small molecule identifiers to fetch + reactions: List of reaction identifiers to fetch + vessel: Optional vessel to associate with the entities + + Returns: + A complete EnzymeML document with fetched entities + """ + proteins = proteins or [] + small_molecules = small_molecules or [] + reactions = reactions or [] + + protein_objects = [] + small_molecule_objects = [] + reaction_objects = [] + small_molecule_reaction_objects = [] + + # Fetch proteins + if proteins: + with console.status("[bold cyan]Fetching proteins...") as status: + protein_objects = [_fetch_protein(p) for p in proteins] + status.update("[bold cyan]Proteins fetched successfully") + console.print("[bold green]Proteins fetched successfully") + + # Fetch small molecules + if small_molecules: + with console.status("[bold cyan]Fetching small molecules...") as status: + small_molecule_objects = [ + _fetch_small_molecule(sm) for sm in small_molecules + ] + status.update("[bold cyan]Small molecules fetched successfully") + console.print("[bold green]Small molecules fetched successfully") + + # Fetch reactions + if reactions: + with console.status("[bold cyan]Fetching reactions...") as status: + for r in reactions: + reaction, smallmols = _fetch_reaction(r) + reaction_objects.append(reaction) + small_molecule_reaction_objects.extend(smallmols) + status.update("[bold cyan]Reactions fetched successfully") + console.print("[bold green]Reactions fetched successfully") + + # Merge small molecules from reactions with explicitly provided ones + small_molecule_objects.extend(small_molecule_reaction_objects) + + # Remove duplicates + small_molecule_objects = _remove_duplicates(small_molecule_objects) + protein_objects = _remove_duplicates(protein_objects) + reaction_objects = _remove_duplicates(reaction_objects) + + # Sort by ID + small_molecule_objects.sort(key=lambda x: x.id) + protein_objects.sort(key=lambda x: x.id) + reaction_objects.sort(key=lambda x: x.id) + + # Set vessel IDs if vessel is provided + vessels = [] + if vessel: + for item in small_molecule_objects + protein_objects: + item.vessel_id = vessel.id + vessels = [vessel] + + return v2.EnzymeMLDocument( + name=name, + proteins=protein_objects, + small_molecules=small_molecule_objects, + reactions=reaction_objects, + vessels=vessels, + ) + + +def _fetch_protein(protein_id: str) -> v2.Protein: + """ + Fetch protein information using available fetchers. + + Args: + protein_id: Identifier for the protein to fetch + + Returns: + Protein object with fetched data + + Raises: + ValueError: If no fetcher can handle the given protein ID + """ + return _fetch_with_fetchers(protein_id, PROTEIN_FETCHERS, "protein") + + +def _fetch_small_molecule(small_molecule_id: str) -> v2.SmallMolecule: + """ + Fetch small molecule information using available fetchers. + + Args: + small_molecule_id: Identifier for the small molecule to fetch + + Returns: + SmallMolecule object with fetched data + + Raises: + ValueError: If no fetcher can handle the given small molecule ID + """ + return _fetch_with_fetchers( + small_molecule_id, SMALL_MOLECULE_FETCHERS, "small molecule" + ) + + +def _fetch_reaction(reaction_id: str) -> Tuple[v2.Reaction, List[v2.SmallMolecule]]: + """ + Fetch reaction information using available fetchers. + + Args: + reaction_id: Identifier for the reaction to fetch + + Returns: + Tuple containing the Reaction object and a list of associated SmallMolecule objects + + Raises: + ValueError: If no fetcher can handle the given reaction ID + """ + return _fetch_with_fetchers(reaction_id, REACTION_FETCHERS, "reaction") + + +def _fetch_with_fetchers( + entity_id: str, fetchers: List[Callable], entity_type: str +) -> Any: + """ + Generic function to attempt fetching with multiple fetchers. + + Args: + entity_id: Identifier for the entity to fetch + fetchers: List of fetcher functions to try + entity_type: Type of entity being fetched (for error message) + + Returns: + Fetched entity data + + Raises: + ValueError: If no fetcher can handle the given entity ID + """ + for fetcher in fetchers: + try: + return fetcher(entity_id) + except Exception: + continue + + fetcher_names = ", ".join(f.__name__ for f in fetchers) + raise ValueError( + f"No {entity_type} fetcher found for {entity_id}. " + f"Supported fetchers: {fetcher_names}" + ) + + +def _remove_duplicates(objects: List[Any]) -> List[Any]: + """ + Remove duplicate objects based on their ID attribute. + + Args: + objects: List of objects to deduplicate + + Returns: + List of unique objects + """ + ids = set() + unique_objects = [] + + for obj in objects: + if not hasattr(obj, "id"): + continue + + if obj.id not in ids: + ids.add(obj.id) + unique_objects.append(obj) + + return unique_objects diff --git a/tests/fixtures/compose/expected_compose.json b/tests/fixtures/compose/expected_compose.json new file mode 100644 index 00000000..847aca48 --- /dev/null +++ b/tests/fixtures/compose/expected_compose.json @@ -0,0 +1,240 @@ +{ + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "name": "schema:title", + "created": "schema:dateCreated", + "modified": "schema:dateModified", + "creators": "schema:creator", + "references": { + "@id": "schema:citation", + "@type": "@id" + } + }, + "@id": "enzml:EnzymeMLDocument/cd2b1ca9-9a3c-41b7-b88c-9947888b9cc7", + "@type": [ + "enzml:EnzymeMLDocument" + ], + "name": "test", + "version": "2", + "creators": [], + "vessels": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "volume": "OBO:OBI_0002139" + }, + "@id": "enzml:Vessel/1d11fa6a-7338-4933-b254-ee5b03fc1573", + "@type": [ + "enzml:Vessel", + "OBO:OBI_0400081" + ], + "id": "vessel", + "name": "vessel", + "volume": 1.0, + "unit": { + "id": "ml", + "name": "ml", + "base_units": [ + { + "kind": "litre", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + } + ] + }, + "constant": true + } + ], + "proteins": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "sequence": "OBO:GSSO_007262", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "organism": "OBO:OBI_0100026", + "organism_tax_id": { + "@type": "@id" + }, + "references": { + "@id": "schema:citation", + "@type": "@id" + }, + "pdb": "https://www.rcsb.org/structure/" + }, + "@id": "pdb:1A23", + "@type": [ + "enzml:Protein", + "OBO:PR_000000001", + "pdb:1A23" + ], + "id": "1a23_1", + "name": "SOLUTION NMR STRUCTURE OF REDUCED DSBA FROM ESCHERICHIA COLI, MINIMIZED AVERAGE STRUCTURE", + "constant": true, + "sequence": "AQYEDGKQYTTLEKPVAGAPQVLEFFSFFCPHCYQFEEVLHISDNVKKKLPEGVKMTKYHVNFMGGDLGKDLTQAWAVAMALGVEDKVTVPLFEGVQKTQTIRSASDIRDVFINAGIKGEEYDAAWNSFVVKSLVAQQEKAAADVQLRGVPAMFVNGKYQLNPQGMDTSNMDVFVQQYADTVKYLSEKK", + "vessel_id": "vessel", + "references": [ + "https://www.rcsb.org/structure/1A23" + ] + } + ], + "complexes": [], + "small_molecules": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "references": { + "@id": "schema:citation", + "@type": "@id" + } + }, + "@id": "OBO:CHEBI_32557", + "@type": [ + "enzml:SmallMolecule", + "OBO:CHEBI_32557" + ], + "id": "d_lysinium_1", + "name": "D-lysinium(1+)", + "constant": false, + "vessel_id": "vessel", + "canonical_smiles": "[NH3+]CCCC[C@@H]([NH3+])C([O-])=O", + "inchi": "InChI=1S/C6H14N2O2/c7-4-2-1-3-5(8)6(9)10/h5H,1-4,7-8H2,(H,9,10)/p+1/t5-/m1/s1", + "inchikey": "KDXKERNSBIXSRK-RXMQYKEDSA-O", + "synonymous_names": [], + "references": [ + "https://www.ebi.ac.uk/chebi/searchId.do?chebiId=CHEBI:32557" + ] + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "references": { + "@id": "schema:citation", + "@type": "@id" + } + }, + "@id": "OBO:CHEBI_32551", + "@type": [ + "enzml:SmallMolecule", + "OBO:CHEBI_32551" + ], + "id": "l_lysinium_1", + "name": "L-lysinium(1+)", + "constant": false, + "vessel_id": "vessel", + "canonical_smiles": "[NH3+]CCCC[C@H]([NH3+])C([O-])=O", + "inchi": "InChI=1S/C6H14N2O2/c7-4-2-1-3-5(8)6(9)10/h5H,1-4,7-8H2,(H,9,10)/p+1/t5-/m0/s1", + "inchikey": "KDXKERNSBIXSRK-YFKPBYRVSA-O", + "synonymous_names": [], + "references": [ + "https://www.ebi.ac.uk/chebi/searchId.do?chebiId=CHEBI:32551" + ] + } + ], + "reactions": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "rhea": "http://www.rhea-db.org/rhea/" + }, + "@id": "rhea:22864", + "@type": [ + "enzml:Reaction", + "rhea:22864" + ], + "id": "RHEA:22864", + "name": "RHEA:22864", + "reversible": true, + "reactants": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + }, + "@id": "enzml:ReactionElement/4803525e-6bf6-4350-8bc6-5a99e08e358d", + "@type": [ + "enzml:ReactionElement" + ], + "species_id": "l_lysinium_1", + "stoichiometry": 1.0 + } + ], + "products": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + }, + "@id": "enzml:ReactionElement/95a275a4-8089-4ca8-a3e8-228431b66e92", + "@type": [ + "enzml:ReactionElement" + ], + "species_id": "d_lysinium_1", + "stoichiometry": 1.0 + } + ], + "modifiers": [] + } + ], + "measurements": [], + "equations": [], + "parameters": [], + "references": [] +} \ No newline at end of file diff --git a/tests/fixtures/compose/expected_compose_no_vessel.json b/tests/fixtures/compose/expected_compose_no_vessel.json new file mode 100644 index 00000000..6d120e21 --- /dev/null +++ b/tests/fixtures/compose/expected_compose_no_vessel.json @@ -0,0 +1,202 @@ +{ + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "name": "schema:title", + "created": "schema:dateCreated", + "modified": "schema:dateModified", + "creators": "schema:creator", + "references": { + "@id": "schema:citation", + "@type": "@id" + } + }, + "@id": "enzml:EnzymeMLDocument/7d988109-96cf-4623-a1bc-678a253a75f1", + "@type": [ + "enzml:EnzymeMLDocument" + ], + "name": "test", + "version": "2", + "creators": [], + "vessels": [], + "proteins": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "sequence": "OBO:GSSO_007262", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "organism": "OBO:OBI_0100026", + "organism_tax_id": { + "@type": "@id" + }, + "references": { + "@id": "schema:citation", + "@type": "@id" + }, + "pdb": "https://www.rcsb.org/structure/" + }, + "@id": "pdb:1A23", + "@type": [ + "enzml:Protein", + "OBO:PR_000000001", + "pdb:1A23" + ], + "id": "1a23_1", + "name": "SOLUTION NMR STRUCTURE OF REDUCED DSBA FROM ESCHERICHIA COLI, MINIMIZED AVERAGE STRUCTURE", + "constant": true, + "sequence": "AQYEDGKQYTTLEKPVAGAPQVLEFFSFFCPHCYQFEEVLHISDNVKKKLPEGVKMTKYHVNFMGGDLGKDLTQAWAVAMALGVEDKVTVPLFEGVQKTQTIRSASDIRDVFINAGIKGEEYDAAWNSFVVKSLVAQQEKAAADVQLRGVPAMFVNGKYQLNPQGMDTSNMDVFVQQYADTVKYLSEKK", + "references": [ + "https://www.rcsb.org/structure/1A23" + ] + } + ], + "complexes": [], + "small_molecules": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "references": { + "@id": "schema:citation", + "@type": "@id" + } + }, + "@id": "OBO:CHEBI_32557", + "@type": [ + "enzml:SmallMolecule", + "OBO:CHEBI_32557" + ], + "id": "d_lysinium_1", + "name": "D-lysinium(1+)", + "constant": false, + "canonical_smiles": "[NH3+]CCCC[C@@H]([NH3+])C([O-])=O", + "inchi": "InChI=1S/C6H14N2O2/c7-4-2-1-3-5(8)6(9)10/h5H,1-4,7-8H2,(H,9,10)/p+1/t5-/m1/s1", + "inchikey": "KDXKERNSBIXSRK-RXMQYKEDSA-O", + "synonymous_names": [], + "references": [ + "https://www.ebi.ac.uk/chebi/searchId.do?chebiId=CHEBI:32557" + ] + }, + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "name": "schema:name", + "vessel_id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "references": { + "@id": "schema:citation", + "@type": "@id" + } + }, + "@id": "OBO:CHEBI_32551", + "@type": [ + "enzml:SmallMolecule", + "OBO:CHEBI_32551" + ], + "id": "l_lysinium_1", + "name": "L-lysinium(1+)", + "constant": false, + "canonical_smiles": "[NH3+]CCCC[C@H]([NH3+])C([O-])=O", + "inchi": "InChI=1S/C6H14N2O2/c7-4-2-1-3-5(8)6(9)10/h5H,1-4,7-8H2,(H,9,10)/p+1/t5-/m0/s1", + "inchikey": "KDXKERNSBIXSRK-YFKPBYRVSA-O", + "synonymous_names": [], + "references": [ + "https://www.ebi.ac.uk/chebi/searchId.do?chebiId=CHEBI:32551" + ] + } + ], + "reactions": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "id": { + "@id": "schema:identifier", + "@type": "@id" + }, + "rhea": "http://www.rhea-db.org/rhea/" + }, + "@id": "rhea:22864", + "@type": [ + "enzml:Reaction", + "rhea:22864" + ], + "id": "RHEA:22864", + "name": "RHEA:22864", + "reversible": true, + "reactants": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + }, + "@id": "enzml:ReactionElement/f418b15b-0a7f-4633-8c79-c9dafbf6dce7", + "@type": [ + "enzml:ReactionElement" + ], + "species_id": "l_lysinium_1", + "stoichiometry": 1.0 + } + ], + "products": [ + { + "@context": { + "enzml": "http://www.enzymeml.org/v2/", + "OBO": "http://purl.obolibrary.org/obo/", + "schema": "https://schema.org/", + "species_id": { + "@id": "schema:identifier", + "@type": "@id" + } + }, + "@id": "enzml:ReactionElement/10458afc-7861-45fc-8992-ea0d67d4e448", + "@type": [ + "enzml:ReactionElement" + ], + "species_id": "d_lysinium_1", + "stoichiometry": 1.0 + } + ], + "modifiers": [] + } + ], + "measurements": [], + "equations": [], + "parameters": [], + "references": [] +} \ No newline at end of file diff --git a/tests/integration/test_composer.py b/tests/integration/test_composer.py new file mode 100644 index 00000000..375a3830 --- /dev/null +++ b/tests/integration/test_composer.py @@ -0,0 +1,61 @@ +import pytest +import pyenzyme as pe +from pyenzyme.tools import to_dict_wo_json_ld + + +class TestComposer: + def test_compose(self): + # Act + doc = pe.compose( + name="test", + vessel=pe.Vessel( + id="vessel", + name="vessel", + volume=1.0, + unit="ml", # type: ignore + ), + proteins=["1A23"], + small_molecules=["CHEBI:32551"], + reactions=["RHEA:22864"], + ) + + # Assert + expected_doc = pe.read_enzymeml("tests/fixtures/compose/expected_compose.json") + assert to_dict_wo_json_ld(doc) == to_dict_wo_json_ld(expected_doc) + + def test_compose_no_vessel(self): + # Act + doc = pe.compose( + name="test", + proteins=["1A23"], + small_molecules=["CHEBI:32551"], + reactions=["RHEA:22864"], + ) + + # Assert + expected_doc = pe.read_enzymeml( + "tests/fixtures/compose/expected_compose_no_vessel.json" + ) + assert to_dict_wo_json_ld(doc) == to_dict_wo_json_ld(expected_doc) + + def test_compose_invalid_id(self): + # Act + # Invalid Protein ID + with pytest.raises(ValueError): + pe.compose( + name="test", + proteins=["1A23", "INVALID"], + ) + # Invalid Small Molecule ID + with pytest.raises(ValueError): + pe.compose( + name="test", + small_molecules=["CHEBI:32551", "INVALID"], + ) + + # Invalid Reaction ID + with pytest.raises(ValueError): + pe.compose( + name="test", + reactions=["RHEA:22864", "INVALID"], + ) From 26805d74c3238c578cf9a13cc32391910e01499f Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 9 May 2025 14:13:07 +0200 Subject: [PATCH 115/172] add pdb fetcher --- pyenzyme/fetcher/__init__.py | 4 + pyenzyme/fetcher/pdb.py | 257 +++++++++++++++++++++++++++++++++++ 2 files changed, 261 insertions(+) create mode 100644 pyenzyme/fetcher/pdb.py diff --git a/pyenzyme/fetcher/__init__.py b/pyenzyme/fetcher/__init__.py index acc49191..ed1ec769 100644 --- a/pyenzyme/fetcher/__init__.py +++ b/pyenzyme/fetcher/__init__.py @@ -1,9 +1,13 @@ from .chebi import fetch_chebi +from .pdb import fetch_pdb +from .pubchem import fetch_pubchem from .uniprot import fetch_uniprot from .rhea import fetch_rhea __all__ = [ "fetch_chebi", + "fetch_pdb", + "fetch_pubchem", "fetch_uniprot", "fetch_rhea", ] diff --git a/pyenzyme/fetcher/pdb.py b/pyenzyme/fetcher/pdb.py new file mode 100644 index 00000000..46ed5886 --- /dev/null +++ b/pyenzyme/fetcher/pdb.py @@ -0,0 +1,257 @@ +""" +PDB fetcher for retrieving protein entries by ID and mapping them to the PyEnzyme data model. + +This module provides functionality to fetch protein data from the +Protein Data Bank by ID and map it to the PyEnzyme data model (v2). +""" + +import requests +from typing import List, Optional, Dict, Any +from pydantic import BaseModel, Field +from pyenzyme.fetcher.chebi import process_id +from pyenzyme.versions import v2 + + +class Citation(BaseModel): + """Model for PDB citation data""" + + title: Optional[str] = None + authors: Optional[List[str]] = None + journal_name: Optional[str] = Field(default=None, alias="journal_abbrev") + year: Optional[int] = None + doi: Optional[str] = None + pubmed_id: Optional[str] = Field(default=None, alias="pdbx_database_id_PubMed") + + +class StructInfo(BaseModel): + """Model for PDB structure information""" + + title: Optional[str] = None + experimental_method: Optional[str] = None + resolution: Optional[float] = None + + +class EntityInfo(BaseModel): + """Model for PDB entity information""" + + description: Optional[str] = None + polymer_type: Optional[str] = None + ec_number: Optional[str] = None + sequence: Optional[str] = None + organism_scientific_name: Optional[str] = None + organism_taxid: Optional[int] = None + + +class PDBResponse(BaseModel): + """Model for PDB API response""" + + pdb_id: str + citation: List[Citation] = [] + struct: Optional[StructInfo] = None + polymer_entities: Optional[Dict[str, EntityInfo]] = None + rcsb_primary_citation: Optional[Dict[str, Any]] = None + rcsb_entry_info: Optional[Dict[str, Any]] = None + + +class PDBClient: + """Client for accessing the PDB API""" + + BASE_URL = "https://data.rcsb.org/rest/v1/core" + + def get_entry_by_id(self, pdb_id: str) -> Optional[PDBResponse]: + """ + Fetch a PDB entry by its ID. + + Args: + pdb_id: The PDB ID to fetch (e.g., '4HHB') + + Returns: + PDBResponse object with parsed data or None if not found + + Raises: + ValueError: If the PDB ID is invalid or not found + ConnectionError: If the connection to the PDB server fails + """ + # Ensure PDB ID is uppercase + pdb_id = pdb_id.upper() + + try: + # Fetch main entry data + entry_data = self._fetch_json(f"{self.BASE_URL}/entry/{pdb_id}") + + # Get polymer entity information + polymer_entities = {} + + # If we have polymer entity IDs, fetch their details + if entity_ids := entry_data.get("rcsb_entry_container_identifiers", {}).get( + "polymer_entity_ids" + ): + for entity_id in entity_ids: + entity_data = self._fetch_json( + f"{self.BASE_URL}/polymer_entity/{pdb_id}/{entity_id}" + ) + + # Extract entity information + polymer_entities[entity_id] = EntityInfo( + description=entity_data.get("struct", {}).get( + "pdbx_descriptor" + ), + polymer_type=entity_data.get("entity_poly", {}).get("type"), + ec_number=entity_data.get("rcsb_polymer_entity", {}).get( + "enzyme_class" + ), + sequence=entity_data.get("entity_poly", {}).get( + "pdbx_seq_one_letter_code" + ), + organism_scientific_name=entity_data.get( + "rcsb_polymer_entity_container_identifiers", {} + ).get("taxonomy_organism_scientific_name"), + organism_taxid=entity_data.get( + "rcsb_polymer_entity_container_identifiers", {} + ).get("taxonomy_id"), + ) + + # Get citation data + citation = [ + Citation.model_validate(c) for c in entry_data.get("citation", []) + ] + + # Construct the PDBResponse + return PDBResponse( + pdb_id=pdb_id, + citation=citation, + struct=StructInfo( + title=entry_data.get("struct", {}).get("title"), + experimental_method=entry_data.get("rcsb_entry_info", {}).get( + "experimental_method" + ), + resolution=entry_data.get("rcsb_entry_info", {}).get( + "resolution_combined", [None] + )[0], + ), + polymer_entities=polymer_entities, + rcsb_primary_citation=entry_data.get("rcsb_primary_citation"), + rcsb_entry_info=entry_data.get("rcsb_entry_info"), + ) + + except ValueError as e: + raise ValueError(f"Failed to retrieve PDB entry: {str(e)}") + except ConnectionError as e: + raise ValueError(f"Connection to PDB server failed: {str(e)}") + + def _fetch_json(self, url: str) -> dict: + """ + Helper method to fetch and parse JSON from a URL. + + Args: + url: The URL to fetch data from + + Returns: + Parsed JSON as a dictionary + + Raises: + ValueError: If the request fails or returns non-200 status + ConnectionError: If the connection to the server fails + """ + try: + response = requests.get(url) + response.raise_for_status() + + if response.status_code == 200: + return response.json() + else: + raise ValueError( + f"Request failed with status code {response.status_code}" + ) + + except requests.exceptions.RequestException as e: + raise ConnectionError(f"Connection failed: {str(e)}") + except ValueError as e: + raise ValueError(f"Failed to parse response: {str(e)}") + + +def fetch_pdb( + pdb_id: str, + protein_id: Optional[str] = None, + entity_id: str = "1", + vessel_id: Optional[str] = None, +) -> v2.Protein: + """ + Fetch a PDB entry by ID and convert it to a Protein object. + + Args: + pdb_id: The PDB ID to fetch (e.g., '4HHB') + protein_id: Optional custom ID for the protein (derived from PDB if not provided) + entity_id: The entity ID within the PDB structure (default is "1") + vessel_id: The ID of the vessel to add the protein to + + Returns: + A Protein object with data from PDB + + Raises: + ValueError: If the PDB ID is invalid or not found + ConnectionError: If the connection to the PDB server fails + """ + # Get PDB data + client = PDBClient() + pdb_response = client.get_entry_by_id(pdb_id) + + if not pdb_response: + raise ValueError(f"No data found for PDB ID {pdb_id}") + + # Get the entity data + if not pdb_response.polymer_entities: + raise ValueError("No polymer entries to fetch from.") + + entity_data = pdb_response.polymer_entities.get(entity_id) + + if not entity_data: + raise ValueError(f"Entity ID {entity_id} not found in PDB {pdb_id}") + + # Prepare data for Protein object + # Use entity description or structure title for name + name = entity_data.description or ( + pdb_response.struct.title + if pdb_response.struct and pdb_response.struct.title + else f"PDB {pdb_id}" + ) + + # Generate protein_id if not provided + if protein_id is None: + protein_id = ( + process_id(entity_data.description) + if entity_data.description + else f"{pdb_id.lower()}_{entity_id}" + ) + + # Create Protein instance + protein = v2.Protein( + id=protein_id, + name=name, + sequence=entity_data.sequence, + organism=entity_data.organism_scientific_name, + organism_tax_id=str(entity_data.organism_taxid) + if entity_data.organism_taxid + else None, + ecnumber=entity_data.ec_number, + constant=True, + vessel_id=vessel_id, + ) + + # Add metadata + protein.add_type_term(f"pdb:{pdb_id}", "pdb", "https://www.rcsb.org/structure/") + protein.ld_id = f"pdb:{pdb_id}" + + # Add references + protein.references.append(f"https://www.rcsb.org/structure/{pdb_id}") + + # Add citation if available + if pdb_response.citation and pdb_response.citation[0].doi: + protein.references.append(f"https://doi.org/{pdb_response.citation[0].doi}") + + if pdb_response.citation and pdb_response.citation[0].pubmed_id: + protein.references.append( + f"https://pubmed.ncbi.nlm.nih.gov/{pdb_response.citation[0].pubmed_id}" + ) + + return protein From af1e77182084371b0a4979cd0be79acf751637b8 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 9 May 2025 14:13:49 +0200 Subject: [PATCH 116/172] generalize type hints --- pyenzyme/tools.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pyenzyme/tools.py b/pyenzyme/tools.py index c7193b51..c9fbe89c 100644 --- a/pyenzyme/tools.py +++ b/pyenzyme/tools.py @@ -2,13 +2,13 @@ import importlib.resources as pkg_resources from enum import Enum import json - +from pydantic import BaseModel import toml import pyenzyme as pe -def to_dict_wo_json_ld(enzmldoc: pe.EnzymeMLDocument): +def to_dict_wo_json_ld(obj: BaseModel): """Serialized to dict and strips JSON-LD fields from an EnzymeMLDocument. Please note, this function is intended for internal use only and should not be called directly. @@ -23,7 +23,7 @@ def to_dict_wo_json_ld(enzmldoc: pe.EnzymeMLDocument): dict: The EnzymeMLDocument with JSON-LD fields removed. """ - doc = json.loads(enzmldoc.model_dump_json()) + doc = json.loads(obj.model_dump_json()) _recursive_key_removal(doc, "ld_id") _recursive_key_removal(doc, "ld_type") _recursive_key_removal(doc, "ld_context") From 8778a85be11ba42274195bbd487a2d081ca11afe Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 9 May 2025 14:13:57 +0200 Subject: [PATCH 117/172] use `rich` print --- pyenzyme/versions/io.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pyenzyme/versions/io.py b/pyenzyme/versions/io.py index e33b1bcd..ea1ddb38 100644 --- a/pyenzyme/versions/io.py +++ b/pyenzyme/versions/io.py @@ -5,6 +5,7 @@ import pandas as pd from pydantic import ValidationError +import rich from pyenzyme.sbml.serializer import to_sbml from pyenzyme.tabular import from_dataframe, read_csv, read_excel, to_pandas from pyenzyme.versions import v2 @@ -124,7 +125,9 @@ def write_enzymeml( with open(path, "w") as f: f.write(data) - print(f"\n EnzymeML document written to [green][bold]{path}[/bold][/green]\n") + rich.print( + f"\n EnzymeML document written to [green][bold]{path}[/bold][/green]\n" + ) @classmethod def to_sbml( From b61a43868232deb15654dc9ea0f6022f6b00534f Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 9 May 2025 14:14:06 +0200 Subject: [PATCH 118/172] update tests for pdb fetcher --- tests/integration/test_fetcher.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tests/integration/test_fetcher.py b/tests/integration/test_fetcher.py index 63bdb1fc..bbe1b76a 100644 --- a/tests/integration/test_fetcher.py +++ b/tests/integration/test_fetcher.py @@ -1,5 +1,6 @@ import pytest from pyenzyme.fetcher.chebi import fetch_chebi +from pyenzyme.fetcher.pdb import fetch_pdb from pyenzyme.fetcher.pubchem import fetch_pubchem from pyenzyme.fetcher.rhea import fetch_rhea from pyenzyme.fetcher.uniprot import fetch_uniprot @@ -116,3 +117,20 @@ def test_fetch_pubchem_to_small_molecule(self): def test_fetch_pubchem_to_small_molecule_invalid_id(self): with pytest.raises(ValueError): fetch_pubchem(cid=162176127617627) + + def test_fetch_pdb_to_protein(self): + protein = fetch_pdb("1a23") + assert protein is not None + assert protein.id == "1a23_1" + assert ( + protein.name + == "SOLUTION NMR STRUCTURE OF REDUCED DSBA FROM ESCHERICHIA COLI, MINIMIZED AVERAGE STRUCTURE" + ) + assert ( + protein.sequence + == "AQYEDGKQYTTLEKPVAGAPQVLEFFSFFCPHCYQFEEVLHISDNVKKKLPEGVKMTKYHVNFMGGDLGKDLTQAWAVAMALGVEDKVTVPLFEGVQKTQTIRSASDIRDVFINAGIKGEEYDAAWNSFVVKSLVAQQEKAAADVQLRGVPAMFVNGKYQLNPQGMDTSNMDVFVQQYADTVKYLSEKK" + ) + + def test_fetch_pdb_to_protein_invalid_id(self): + with pytest.raises(ValueError): + fetch_pdb("INVALID_ID") From 4069b90fa511e7e83de6092d7a6a760a886cb37b Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 9 May 2025 14:24:16 +0200 Subject: [PATCH 119/172] allow prefixing of identifiers --- pyenzyme/fetcher/pdb.py | 5 ++++ pyenzyme/fetcher/pubchem.py | 10 +++++-- pyenzyme/fetcher/uniprot.py | 5 ++++ tests/integration/test_composer.py | 19 +++++++++++++ tests/integration/test_fetcher.py | 45 ++++++++++++++++++++++++++++-- 5 files changed, 79 insertions(+), 5 deletions(-) diff --git a/pyenzyme/fetcher/pdb.py b/pyenzyme/fetcher/pdb.py index 46ed5886..273126dd 100644 --- a/pyenzyme/fetcher/pdb.py +++ b/pyenzyme/fetcher/pdb.py @@ -194,6 +194,11 @@ def fetch_pdb( """ # Get PDB data client = PDBClient() + + # Allow prefixing with 'PDB:' + if pdb_id.lower().startswith("pdb:"): + pdb_id = pdb_id.split(":", 1)[-1] + pdb_response = client.get_entry_by_id(pdb_id) if not pdb_response: diff --git a/pyenzyme/fetcher/pubchem.py b/pyenzyme/fetcher/pubchem.py index 80de8d2a..6c27ecaa 100644 --- a/pyenzyme/fetcher/pubchem.py +++ b/pyenzyme/fetcher/pubchem.py @@ -145,7 +145,7 @@ def extract_by_preference( def fetch_pubchem( - cid: int, + cid: str, smallmol_id: Optional[str] = None, vessel_id: Optional[str] = None, ) -> v2.SmallMolecule: @@ -163,9 +163,13 @@ def fetch_pubchem( Raises: ValueError: If the PubChem API request fails or required data is missing """ - query = PubChemClient.from_cid(cid) + # Allow prefixing with 'CID:' + if cid.lower().startswith("pubchem:"): + cid = cid.split(":", 1)[-1] + + query = PubChemClient.from_cid(int(cid)) pc_compound = query.pc_compounds[0] - name = _extract_name(pc_compound, cid) + name = _extract_name(pc_compound, int(cid)) if not smallmol_id: smallmol_id = process_id(name) diff --git a/pyenzyme/fetcher/uniprot.py b/pyenzyme/fetcher/uniprot.py index 590108b9..a2f019a5 100644 --- a/pyenzyme/fetcher/uniprot.py +++ b/pyenzyme/fetcher/uniprot.py @@ -129,6 +129,11 @@ def fetch_uniprot( ConnectionError: If the connection to the UniProt server fails """ client = UniProtClient() + + # Allow prefixing with 'uniprot:' + if uniprot_id.lower().startswith("uniprot:"): + uniprot_id = uniprot_id.split(":", 1)[-1] + uniprot_entry = client.get_entry_by_id(uniprot_id) if not uniprot_entry: diff --git a/tests/integration/test_composer.py b/tests/integration/test_composer.py index 375a3830..08e26719 100644 --- a/tests/integration/test_composer.py +++ b/tests/integration/test_composer.py @@ -23,6 +23,25 @@ def test_compose(self): expected_doc = pe.read_enzymeml("tests/fixtures/compose/expected_compose.json") assert to_dict_wo_json_ld(doc) == to_dict_wo_json_ld(expected_doc) + def test_compose_with_prefix(self): + # Act + doc = pe.compose( + name="test", + vessel=pe.Vessel( + id="vessel", + name="vessel", + volume=1.0, + unit="ml", # type: ignore + ), + proteins=["pdb:1A23"], + small_molecules=["CHEBI:32551"], + reactions=["RHEA:22864"], + ) + + # Assert + expected_doc = pe.read_enzymeml("tests/fixtures/compose/expected_compose.json") + assert to_dict_wo_json_ld(doc) == to_dict_wo_json_ld(expected_doc) + def test_compose_no_vessel(self): # Act doc = pe.compose( diff --git a/tests/integration/test_fetcher.py b/tests/integration/test_fetcher.py index bbe1b76a..5bd615ec 100644 --- a/tests/integration/test_fetcher.py +++ b/tests/integration/test_fetcher.py @@ -57,6 +57,22 @@ def test_fetch_uniprot_to_protein(self): assert len(protein.references) == 1 assert protein.references[0] == "https://www.uniprot.org/uniprotkb/P07327" + def test_fetch_uniprot_to_protein_with_prefix(self): + protein = fetch_uniprot("uniprot:P07327") + assert protein is not None + + assert protein.id == "alcohol_dehydrogenase_1a" + assert protein.name == "Alcohol dehydrogenase 1A" + assert protein.constant is True + assert protein.ecnumber == "1.1.1.1" + assert protein.organism == "Homo sapiens" + assert protein.organism_tax_id == "9606" + + assert protein.ld_id == "uniprot:P07327" + assert "uniprot:P07327" in protein.ld_type + assert len(protein.references) == 1 + assert protein.references[0] == "https://www.uniprot.org/uniprotkb/P07327" + def test_fetch_uniprot_to_protein_with_id(self): protein = fetch_uniprot("P07327", protein_id="p1") assert protein is not None @@ -103,7 +119,19 @@ def test_fetch_rhea_to_reaction_invalid_id(self): fetch_rhea("INVALID_ID") def test_fetch_pubchem_to_small_molecule(self): - small_molecule = fetch_pubchem(cid=2244) + small_molecule = fetch_pubchem(cid="2244") + assert small_molecule is not None + assert small_molecule.id == "2_acetyloxybenzoic_acid" + assert small_molecule.name == "2-acetyloxybenzoic acid" + assert small_molecule.canonical_smiles == "CC(=O)OC1=CC=CC=C1C(=O)O" + assert small_molecule.inchikey == "BSYNRYMUTXBXSQ-UHFFFAOYSA-N" + assert ( + small_molecule.inchi + == "InChI=1S/C9H8O4/c1-6(10)13-8-5-3-2-4-7(8)9(11)12/h2-5H,1H3,(H,11,12)" + ) + + def test_fetch_pubchem_to_small_molecule_with_prefix(self): + small_molecule = fetch_pubchem(cid="pubchem:2244") assert small_molecule is not None assert small_molecule.id == "2_acetyloxybenzoic_acid" assert small_molecule.name == "2-acetyloxybenzoic acid" @@ -116,7 +144,7 @@ def test_fetch_pubchem_to_small_molecule(self): def test_fetch_pubchem_to_small_molecule_invalid_id(self): with pytest.raises(ValueError): - fetch_pubchem(cid=162176127617627) + fetch_pubchem(cid="162176127617627") def test_fetch_pdb_to_protein(self): protein = fetch_pdb("1a23") @@ -131,6 +159,19 @@ def test_fetch_pdb_to_protein(self): == "AQYEDGKQYTTLEKPVAGAPQVLEFFSFFCPHCYQFEEVLHISDNVKKKLPEGVKMTKYHVNFMGGDLGKDLTQAWAVAMALGVEDKVTVPLFEGVQKTQTIRSASDIRDVFINAGIKGEEYDAAWNSFVVKSLVAQQEKAAADVQLRGVPAMFVNGKYQLNPQGMDTSNMDVFVQQYADTVKYLSEKK" ) + def test_fetch_pdb_to_protein_with_prefix(self): + protein = fetch_pdb("pdb:1a23") + assert protein is not None + assert protein.id == "1a23_1" + assert ( + protein.name + == "SOLUTION NMR STRUCTURE OF REDUCED DSBA FROM ESCHERICHIA COLI, MINIMIZED AVERAGE STRUCTURE" + ) + assert ( + protein.sequence + == "AQYEDGKQYTTLEKPVAGAPQVLEFFSFFCPHCYQFEEVLHISDNVKKKLPEGVKMTKYHVNFMGGDLGKDLTQAWAVAMALGVEDKVTVPLFEGVQKTQTIRSASDIRDVFINAGIKGEEYDAAWNSFVVKSLVAQQEKAAADVQLRGVPAMFVNGKYQLNPQGMDTSNMDVFVQQYADTVKYLSEKK" + ) + def test_fetch_pdb_to_protein_invalid_id(self): with pytest.raises(ValueError): fetch_pdb("INVALID_ID") From 709e1306f6ef006ddf358fe9e3de5ca52d1b7581 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 9 May 2025 14:24:24 +0200 Subject: [PATCH 120/172] add `compose` part --- README.md | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 54ced0ab..fdb87965 100644 --- a/README.md +++ b/README.md @@ -105,7 +105,28 @@ enzmldoc = pe.read_enzymeml("enzmldoc.json") sbml_doc = pe.to_sbml(enzmldoc, "enzmldoc.omex") ``` -(Code should run as it is) +(Code should run as it is) + +### Compose an EnzymeML document + +As an alternative to the manual creation of an EnzymeML document, you can use the `compose` function to create an EnzymeML document from a list of identifiers. This function will fetch the corresponding entities from the official databases and compose an EnzymeML document. Duplicate entities are removed to avoid redundancy. + +```python +import pyenzyme as pe + +doc = pe.compose( + name="test", + proteins=["PDB:1A23"], + small_molecules=["CHEBI:32551"], + reactions=["RHEA:22864"], +) + +pe.write_enzymeml(doc, "enzmldoc.json") +``` + +(Code should run as it is) + +Please note, that by providing [RHEA](https://www.ebi.ac.uk/rhea/) identifiers, the function will automatically fetch all associated [CheBI](https://www.ebi.ac.uk/chebi/) molecules that are part of the reaction. ## 📖 Documentation and more examples From ee941eb934240829d9c9d4efc4ad6efa475e85f4 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 9 May 2025 14:26:26 +0200 Subject: [PATCH 121/172] update features --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index fdb87965..cb0368a7 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@

PyEnzyme
v1.1.5 - Build Badge Documentation Status + Build Badge

@@ -12,8 +12,7 @@ PyEnzyme is the interface to the data model EnzymeML and offers a conveni - Reproducible **documentation** of enzymatic and biocatalytic experiments. - **Import** from and **export** to the SBML-based markup language **EnzymeML** and more. -- Perform **database-specific validation** prior to database upload. -- Model your data using a **Thin Layer** to popular modeling platforms. +- **Fetch** entities from [CheBI](https://www.ebi.ac.uk/chebi/), [UniProt](https://www.uniprot.org/), [PubChem](https://www.ncbi.nlm.nih.gov/pubchem/), [RHEA](https://www.ebi.ac.uk/rhea/) and [PDB](https://www.rcsb.org/) databases. - **Visualize** experimental results for inspection and publication. ## ⚡️ Quick start From f4b4f71ee189776f0d991a9b467120388334270a Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 9 May 2025 16:43:56 +0200 Subject: [PATCH 122/172] add base thin layer class --- pyenzyme/thinlayers/base.py | 89 +++++++++++++++++++++++++++++ tests/integration/test_thinlayer.py | 43 ++++++++++++++ 2 files changed, 132 insertions(+) create mode 100644 pyenzyme/thinlayers/base.py create mode 100644 tests/integration/test_thinlayer.py diff --git a/pyenzyme/thinlayers/base.py b/pyenzyme/thinlayers/base.py new file mode 100644 index 00000000..e07560d8 --- /dev/null +++ b/pyenzyme/thinlayers/base.py @@ -0,0 +1,89 @@ +from functools import cached_property +from typing import Optional, List + +import pandas as pd +from pydantic import BaseModel, ConfigDict, computed_field, field_validator + +from pyenzyme.versions import v2 +from pyenzyme import to_pandas, to_sbml + + +class BaseThinLayer(BaseModel): + """ + Base class for thin layers that wrap EnzymeML documents. + + This class provides a foundation for creating specialized interfaces to EnzymeML documents, + with built-in conversion to SBML and pandas DataFrames. It allows filtering measurements + by their IDs. + + Attributes: + enzmldoc (v2.EnzymeMLDocument): The EnzymeML document to wrap. + measurement_ids (Optional[List[str]]): Optional list of measurement IDs to filter by. + If None, all measurements are included. + """ + + model_config = ConfigDict(arbitrary_types_allowed=True) + + enzmldoc: v2.EnzymeMLDocument + measurement_ids: Optional[List[str]] = None + + @field_validator("enzmldoc") + @classmethod + def check_measurement_ids(cls, enzmldoc: v2.EnzymeMLDocument): + """ + Validates that the EnzymeML document contains at least one measurement. + + Args: + enzmldoc (v2.EnzymeMLDocument): The EnzymeML document to validate. + + Returns: + v2.EnzymeMLDocument: The validated EnzymeML document. + + Raises: + ValueError: If the EnzymeML document has no measurements. + """ + if len(enzmldoc.measurements) == 0: + raise ValueError("EnzymeMLDocument has no measurements") + + return enzmldoc + + @computed_field(return_type=str) + @cached_property + def sbml_xml(self) -> str: + """ + Converts the EnzymeML document to SBML XML format. + + Returns: + str: The SBML XML representation of the EnzymeML document. + """ + return to_sbml(self.enzmldoc)[0] + + @computed_field(return_type=dict[str, pd.DataFrame]) + @cached_property + def data(self) -> dict[str, pd.DataFrame]: + """ + Converts the EnzymeML document to pandas DataFrames, organized by measurement ID. + + If measurement_ids is specified, only those measurements are included in the result. + + Returns: + dict[str, pd.DataFrame]: A dictionary mapping measurement IDs to their corresponding + pandas DataFrames containing time series data. + + Raises: + ValueError: If the conversion doesn't return a dictionary or if specified + measurement IDs are not found in the document. + """ + df_map = to_pandas(self.enzmldoc, per_measurement=True) + + if not isinstance(df_map, dict): + raise ValueError("Expected a dictionary of dataframes") + + if self.measurement_ids is None: + return df_map + + missing_ids = set(self.measurement_ids) - set(df_map.keys()) + if missing_ids: + raise ValueError(f"Measurement ids {missing_ids} not found in data") + + return {k: v for k, v in df_map.items() if k in self.measurement_ids} diff --git a/tests/integration/test_thinlayer.py b/tests/integration/test_thinlayer.py new file mode 100644 index 00000000..4928bdfc --- /dev/null +++ b/tests/integration/test_thinlayer.py @@ -0,0 +1,43 @@ +import pytest +import pyenzyme as pe +from pyenzyme.thinlayers.base import BaseThinLayer + + +class TestThinLayer: + def test_base_thinlayer(self): + # Arrange + doc = pe.read_enzymeml("tests/fixtures/modeling/enzmldoc.json") + + # Act + thinlayer = BaseThinLayer(enzmldoc=doc) + + # Assert + expected_sbml, _ = pe.to_sbml(doc) + expected_data = pe.to_pandas(doc, per_measurement=True) + + assert thinlayer.enzmldoc == doc + assert thinlayer.sbml_xml == expected_sbml + assert len(thinlayer.data) == len(expected_data) + + def test_base_thinlayer_with_measurement_ids(self): + # Arrange + doc = pe.read_enzymeml("tests/fixtures/modeling/enzmldoc.json") + + # Act + thinlayer = BaseThinLayer(enzmldoc=doc, measurement_ids=["measurement0"]) + + # Assert + expected_sbml, _ = pe.to_sbml(doc) + + assert thinlayer.enzmldoc == doc + assert thinlayer.sbml_xml == expected_sbml + assert len(thinlayer.data) == 1 + + def test_base_thinlayer_with_measurement_ids_not_in_doc(self): + # Arrange + doc = pe.read_enzymeml("tests/fixtures/modeling/enzmldoc.json") + + # Act + with pytest.raises(ValueError): + base = BaseThinLayer(enzmldoc=doc, measurement_ids=["measnotexisting"]) + base.data From 64858c73ed79e05b956ee83b64cd058498933557 Mon Sep 17 00:00:00 2001 From: haeussma <83341109+haeussma@users.noreply.github.com> Date: Mon, 12 May 2025 10:06:18 +0200 Subject: [PATCH 123/172] update pymetadata dependency to version 0.5.3 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index e67ad73d..3f906f15 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,7 +16,7 @@ pydantic-xml = "^2.12.1" loguru = "^0.7.2" rdflib = "7.0.0" sympy = "^1.12.1" -pymetadata = "^0.4.4" +pymetadata = "^0.5.3" httpx = ">=0.27" mdmodels = "^0.2.0" From 9cbed5ea4b62acab72a136b2c155e9a60ecc4f49 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Sun, 18 May 2025 22:36:20 +0200 Subject: [PATCH 124/172] upper case id by default --- pyenzyme/fetcher/pdb.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pyenzyme/fetcher/pdb.py b/pyenzyme/fetcher/pdb.py index 273126dd..9c31d8b4 100644 --- a/pyenzyme/fetcher/pdb.py +++ b/pyenzyme/fetcher/pdb.py @@ -244,11 +244,13 @@ def fetch_pdb( ) # Add metadata - protein.add_type_term(f"pdb:{pdb_id}", "pdb", "https://www.rcsb.org/structure/") - protein.ld_id = f"pdb:{pdb_id}" + protein.add_type_term( + f"pdb:{pdb_id.upper()}", "pdb", "https://www.rcsb.org/structure/" + ) + protein.ld_id = f"pdb:{pdb_id.upper()}" # Add references - protein.references.append(f"https://www.rcsb.org/structure/{pdb_id}") + protein.references.append(f"https://www.rcsb.org/structure/{pdb_id.upper()}") # Add citation if available if pdb_response.citation and pdb_response.citation[0].doi: From 8125c5cb5b0440e0c9d36fbde6626a08c9f2f6c2 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Sun, 18 May 2025 22:38:57 +0200 Subject: [PATCH 125/172] test lowercase pdb id case --- tests/integration/test_composer.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/integration/test_composer.py b/tests/integration/test_composer.py index 08e26719..c7b2e630 100644 --- a/tests/integration/test_composer.py +++ b/tests/integration/test_composer.py @@ -14,7 +14,7 @@ def test_compose(self): volume=1.0, unit="ml", # type: ignore ), - proteins=["1A23"], + proteins=["PDB:1a23"], small_molecules=["CHEBI:32551"], reactions=["RHEA:22864"], ) @@ -33,7 +33,7 @@ def test_compose_with_prefix(self): volume=1.0, unit="ml", # type: ignore ), - proteins=["pdb:1A23"], + proteins=["pdb:1a23"], small_molecules=["CHEBI:32551"], reactions=["RHEA:22864"], ) From cecdd819128ef6161fc31a8e249e6aa51ea05abd Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Sun, 18 May 2025 22:39:34 +0200 Subject: [PATCH 126/172] add `description` fields --- pyenzyme/versions/v2.py | 542 ++++++++++++++++++++++++++++++++-------- 1 file changed, 438 insertions(+), 104 deletions(-) diff --git a/pyenzyme/versions/v2.py b/pyenzyme/versions/v2.py index c341edc6..2ed3f0d1 100644 --- a/pyenzyme/versions/v2.py +++ b/pyenzyme/versions/v2.py @@ -108,21 +108,83 @@ class EnzymeMLDocument(BaseModel): validate_assignment=True, ) # type: ignore - name: str - version: str = "2" - description: Optional[Optional[str]] = Field(default=None) - created: Optional[Optional[str]] = Field(default=None) - modified: Optional[Optional[str]] = Field(default=None) - creators: list[Creator] = Field(default_factory=list) - vessels: list[Vessel] = Field(default_factory=list) - proteins: list[Protein] = Field(default_factory=list) - complexes: list[Complex] = Field(default_factory=list) - small_molecules: list[SmallMolecule] = Field(default_factory=list) - reactions: list[Reaction] = Field(default_factory=list) - measurements: list[Measurement] = Field(default_factory=list) - equations: list[Equation] = Field(default_factory=list) - parameters: list[Parameter] = Field(default_factory=list) - references: list[str] = Field(default_factory=list) + name: str = Field( + default=..., + description="""Title of the EnzymeML Document.""", + ) + version: str = Field( + default="2", + description="""The version of the EnzymeML Document.""", + ) + description: Optional[Optional[str]] = Field( + default=None, + description="""Description of the EnzymeML Document.""", + ) + created: Optional[Optional[str]] = Field( + default=None, + description="""Date the EnzymeML Document was created.""", + ) + modified: Optional[Optional[str]] = Field( + default=None, + description="""Date the EnzymeML Document was modified.""", + ) + creators: list[Creator] = Field( + default_factory=list, + description="""Contains descriptions of all authors that are part + of the experiment.""", + ) + vessels: list[Vessel] = Field( + default_factory=list, + description="""Contains descriptions of all vessels that are part + of the experiment.""", + ) + proteins: list[Protein] = Field( + default_factory=list, + description="""Contains descriptions of all proteins that + are part of the experiment that may be + referenced in reactions, measurements, + and equations.""", + ) + complexes: list[Complex] = Field( + default_factory=list, + description="""Contains descriptions of all complexes that + are part of the experiment that may be + referenced in reactions, measurements, + and equations.""", + ) + small_molecules: list[SmallMolecule] = Field( + default_factory=list, + description="""Contains descriptions of all reactants that + are part of the experiment that may be + referenced in reactions, measurements, + and equations.""", + ) + reactions: list[Reaction] = Field( + default_factory=list, + description="""Contains descriptions of all reactions that are + part of the experiment.""", + ) + measurements: list[Measurement] = Field( + default_factory=list, + description="""Contains descriptions of all measurements that are + part of the experiment.""", + ) + equations: list[Equation] = Field( + default_factory=list, + description="""Contains descriptions of all equations that are + part of the experiment.""", + ) + parameters: list[Parameter] = Field( + default_factory=list, + description="""Contains descriptions of all parameters that are + part of the experiment and may be used + in equations.""", + ) + references: list[str] = Field( + default_factory=list, + description="""Contains references to publications, databases, + and arbitrary links to the web.""", + ) # JSON-LD fields ld_id: str = Field( @@ -139,8 +201,8 @@ class EnzymeMLDocument(BaseModel): serialization_alias="@context", default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "name": "schema:title", "created": "schema:dateCreated", "modified": "schema:dateModified", @@ -571,9 +633,18 @@ class Creator(BaseModel): validate_assignment=True, ) # type: ignore - given_name: str - family_name: str - mail: str + given_name: str = Field( + default=..., + description="""Given name of the author or contributor.""", + ) + family_name: str = Field( + default=..., + description="""Family name of the author or contributor.""", + ) + mail: str = Field( + default=..., + description="""Email address of the author or contributor.""", + ) # JSON-LD fields ld_id: str = Field( @@ -588,8 +659,8 @@ class Creator(BaseModel): serialization_alias="@context", default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "given_name": "schema:givenName", "family_name": "schema:familyName", "mail": "schema:email", @@ -667,11 +738,27 @@ class Vessel(BaseModel): validate_assignment=True, ) # type: ignore - id: str - name: str - volume: float - unit: UnitDefinitionAnnot - constant: bool = True + id: str = Field( + default=..., + description="""Unique identifier of the vessel.""", + ) + name: str = Field( + default=..., + description="""Name of the used vessel.""", + ) + volume: float = Field( + default=..., + description="""Volumetric value of the vessel.""", + ) + unit: UnitDefinitionAnnot = Field( + default=..., + description="""Volumetric unit of the vessel.""", + ) + constant: bool = Field( + default=True, + description="""Whether the volume of the vessel is constant or + not. Default is True.""", + ) # JSON-LD fields ld_id: str = Field( @@ -686,8 +773,8 @@ class Vessel(BaseModel): serialization_alias="@context", default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id", @@ -768,15 +855,48 @@ class Protein(BaseModel): validate_assignment=True, ) # type: ignore - id: str - name: str - constant: bool = True - sequence: Optional[Optional[str]] = Field(default=None) - vessel_id: Optional[Optional[str]] = Field(default=None) - ecnumber: Optional[Optional[str]] = Field(default=None) - organism: Optional[Optional[str]] = Field(default=None) - organism_tax_id: Optional[Optional[str]] = Field(default=None) - references: list[str] = Field(default_factory=list) + id: str = Field( + default=..., + description="""Identifier of the protein, such as a UniProt ID, + or a custom identifier.""", + ) + name: str = Field( + default=..., + description="""Name of the protein.""", + ) + constant: bool = Field( + default=True, + description="""Whether the concentration of the protein is + constant through the experiment or not. + Default is True.""", + ) + sequence: Optional[Optional[str]] = Field( + default=None, + description="""Amino acid sequence of the protein""", + ) + vessel_id: Optional[Optional[str]] = Field( + default=None, + description="""Identifier of the vessel this protein has been + applied to.""", + ) + ecnumber: Optional[Optional[str]] = Field( + default=None, + description="""EC number of the protein.""", + ) + organism: Optional[Optional[str]] = Field( + default=None, + description="""Expression host organism of the protein.""", + ) + organism_tax_id: Optional[Optional[str]] = Field( + default=None, + description="""Taxonomy identifier of the expression host.""", + ) + references: list[str] = Field( + default_factory=list, + description="""List of references to publications, database + entries, etc. that describe or reference + the protein.""", + ) # JSON-LD fields ld_id: str = Field( @@ -791,8 +911,8 @@ class Protein(BaseModel): serialization_alias="@context", default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id", @@ -885,11 +1005,29 @@ class Complex(BaseModel): validate_assignment=True, ) # type: ignore - id: str - name: str - constant: bool = False - vessel_id: Optional[Optional[str]] = Field(default=None) - participants: list[str] = Field(default_factory=list) + id: str = Field( + default=..., + description="""Unique identifier of the complex.""", + ) + name: str = Field( + default=..., + description="""Name of the complex.""", + ) + constant: bool = Field( + default=False, + description="""Whether the concentration of the complex is + constant through the experiment or not. + Default is False.""", + ) + vessel_id: Optional[Optional[str]] = Field( + default=None, + description="""Unique identifier of the vessel this complex has + been used in.""", + ) + participants: list[str] = Field( + default_factory=list, + description="""Array of IDs the complex contains""", + ) # JSON-LD fields ld_id: str = Field( @@ -906,8 +1044,8 @@ class Complex(BaseModel): serialization_alias="@context", default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id", @@ -994,15 +1132,53 @@ class SmallMolecule(BaseModel): validate_assignment=True, ) # type: ignore - id: str - name: str - constant: bool = False - vessel_id: Optional[Optional[str]] = Field(default=None) - canonical_smiles: Optional[Optional[str]] = Field(default=None) - inchi: Optional[Optional[str]] = Field(default=None) - inchikey: Optional[Optional[str]] = Field(default=None) - synonymous_names: list[str] = Field(default_factory=list) - references: list[str] = Field(default_factory=list) + id: str = Field( + default=..., + description="""Identifier of the small molecule, such as + a Pubchem ID, ChEBI ID, or a custom + identifier.""", + ) + name: str = Field( + default=..., + description="""Name of the small molecule.""", + ) + constant: bool = Field( + default=False, + description="""Whether the concentration of the small molecule + is constant through the experiment or not. + Default is False.""", + ) + vessel_id: Optional[Optional[str]] = Field( + default=None, + description="""Identifier of the vessel this small molecule has + been used in.""", + ) + canonical_smiles: Optional[Optional[str]] = Field( + default=None, + description="""Canonical Simplified Molecular-Input Line-Entry + System (SMILES) encoding of the small + molecule.""", + ) + inchi: Optional[Optional[str]] = Field( + default=None, + description="""International Chemical Identifier (InChI) encoding + of the small molecule.""", + ) + inchikey: Optional[Optional[str]] = Field( + default=None, + description="""Hashed International Chemical Identifier + (InChIKey) encoding of the small molecule.""", + ) + synonymous_names: list[str] = Field( + default_factory=list, + description="""List of synonymous names for the small molecule.""", + ) + references: list[str] = Field( + default_factory=list, + description="""List of references to publications, database + entries, etc. that describe or reference + the small molecule.""", + ) # JSON-LD fields ld_id: str = Field( @@ -1019,8 +1195,8 @@ class SmallMolecule(BaseModel): serialization_alias="@context", default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id", @@ -1108,13 +1284,36 @@ class Reaction(BaseModel): validate_assignment=True, ) # type: ignore - id: str - name: str - reversible: bool = False - kinetic_law: Optional[Optional[Equation]] = Field(default=None) - reactants: list[ReactionElement] = Field(default_factory=list) - products: list[ReactionElement] = Field(default_factory=list) - modifiers: list[ModifierElement] = Field(default_factory=list) + id: str = Field( + default=..., + description="""Unique identifier of the reaction.""", + ) + name: str = Field( + default=..., + description="""Name of the reaction.""", + ) + reversible: bool = Field( + default=False, + description="""Whether the reaction is reversible or + irreversible. Default is False.""", + ) + kinetic_law: Optional[Optional[Equation]] = Field( + default=None, + description="""Mathematical expression of the reaction.""", + ) + reactants: list[ReactionElement] = Field( + default_factory=list, + description="""List of reactants that are part of the reaction.""", + ) + products: list[ReactionElement] = Field( + default_factory=list, + description="""List of products that are part of the reaction.""", + ) + modifiers: list[ModifierElement] = Field( + default_factory=list, + description="""List of reaction elements that are not part of the + reaction but influence it.""", + ) # JSON-LD fields ld_id: str = Field( @@ -1131,8 +1330,8 @@ class Reaction(BaseModel): serialization_alias="@context", default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id", @@ -1292,8 +1491,16 @@ class ReactionElement(BaseModel): validate_assignment=True, ) # type: ignore - species_id: str - stoichiometry: float = 1 + species_id: str = Field( + default=..., + description="""Internal identifier to either a protein or + reactant defined in the EnzymeML Document.""", + ) + stoichiometry: float = Field( + default=1, + description="""Float number representing the associated + stoichiometry.""", + ) # JSON-LD fields ld_id: str = Field( @@ -1310,8 +1517,8 @@ class ReactionElement(BaseModel): serialization_alias="@context", default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "species_id": { "@id": "schema:identifier", "@type": "@id", @@ -1390,8 +1597,15 @@ class ModifierElement(BaseModel): validate_assignment=True, ) # type: ignore - species_id: str - role: ModifierRole + species_id: str = Field( + default=..., + description="""Internal identifier to either a protein or + reactant defined in the EnzymeML Document.""", + ) + role: ModifierRole = Field( + default=..., + description="""Role of the modifier in the reaction.""", + ) # JSON-LD fields ld_id: str = Field( @@ -1408,8 +1622,8 @@ class ModifierElement(BaseModel): serialization_alias="@context", default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "species_id": { "@id": "schema:identifier", "@type": "@id", @@ -1488,10 +1702,26 @@ class Equation(BaseModel): validate_assignment=True, ) # type: ignore - species_id: str - equation: str - equation_type: EquationType - variables: list[Variable] = Field(default_factory=list) + species_id: str = Field( + default=..., + description="""Identifier of a defined species (SmallMolecule, + Protein, Complex). Represents the left + hand side of the equation.""", + ) + equation: str = Field( + default=..., + description="""Mathematical expression of the equation. + Represents the right hand side of the + equation.""", + ) + equation_type: EquationType = Field( + default=..., + description="""Type of the equation.""", + ) + variables: list[Variable] = Field( + default_factory=list, + description="""List of variables that are part of the equation""", + ) # JSON-LD fields ld_id: str = Field( @@ -1508,8 +1738,8 @@ class Equation(BaseModel): serialization_alias="@context", default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "species_id": { "@id": "schema:identifier", "@type": "@id", @@ -1616,9 +1846,18 @@ class Variable(BaseModel): validate_assignment=True, ) # type: ignore - id: str - name: str - symbol: str + id: str = Field( + default=..., + description="""Identifier of the variable.""", + ) + name: str = Field( + default=..., + description="""Name of the variable.""", + ) + symbol: str = Field( + default=..., + description="""Equation symbol of the variable.""", + ) # JSON-LD fields ld_id: str = Field( @@ -1635,8 +1874,8 @@ class Variable(BaseModel): serialization_alias="@context", default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id", @@ -1715,16 +1954,50 @@ class Parameter(BaseModel): validate_assignment=True, ) # type: ignore - id: str - name: str - symbol: str - value: Optional[Optional[float]] = Field(default=None) - unit: Optional[Optional[UnitDefinitionAnnot]] = Field(default=None) - initial_value: Optional[Optional[float]] = Field(default=None) - upper_bound: Optional[Optional[float]] = Field(default=None) - lower_bound: Optional[Optional[float]] = Field(default=None) - stderr: Optional[Optional[float]] = Field(default=None) - constant: Optional[bool] = True + id: str = Field( + default=..., + description="""Identifier of the parameter.""", + ) + name: str = Field( + default=..., + description="""Name of the parameter.""", + ) + symbol: str = Field( + default=..., + description="""Equation symbol of the parameter.""", + ) + value: Optional[Optional[float]] = Field( + default=None, + description="""Numerical value of the estimated parameter.""", + ) + unit: Optional[Optional[UnitDefinitionAnnot]] = Field( + default=None, + description="""Unit of the estimated parameter.""", + ) + initial_value: Optional[Optional[float]] = Field( + default=None, + description="""Initial value that was used for the parameter + estimation.""", + ) + upper_bound: Optional[Optional[float]] = Field( + default=None, + description="""Upper bound for the parameter value that was used + for the parameter estimation""", + ) + lower_bound: Optional[Optional[float]] = Field( + default=None, + description="""Lower bound for the parameter value that was used + for the parameter estimation""", + ) + stderr: Optional[Optional[float]] = Field( + default=None, + description="""Standard error of the estimated parameter.""", + ) + constant: Optional[bool] = Field( + default=True, + description="""Specifies if this parameter is constant. Default + is True.""", + ) # JSON-LD fields ld_id: str = Field( @@ -1741,8 +2014,8 @@ class Parameter(BaseModel): serialization_alias="@context", default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id", @@ -1821,13 +2094,37 @@ class Measurement(BaseModel): validate_assignment=True, ) # type: ignore - id: str - name: str - species_data: list[MeasurementData] = Field(default_factory=list) - group_id: Optional[Optional[str]] = Field(default=None) - ph: Optional[Optional[float]] = Field(default=None) - temperature: Optional[Optional[float]] = Field(default=None) - temperature_unit: Optional[Optional[UnitDefinitionAnnot]] = Field(default=None) + id: str = Field( + default=..., + description="""Unique identifier of the measurement.""", + ) + name: str = Field( + default=..., + description="""Name of the measurement""", + ) + species_data: list[MeasurementData] = Field( + default_factory=list, + description="""Measurement data of all species that were part + of the measurement. A species refers to a + Protein, Complex, or SmallMolecule.""", + ) + group_id: Optional[Optional[str]] = Field( + default=None, + description="""User-defined group ID to signal relationships + between measurements.""", + ) + ph: Optional[Optional[float]] = Field( + default=None, + description="""pH value of the measurement.""", + ) + temperature: Optional[Optional[float]] = Field( + default=None, + description="""Temperature of the measurement.""", + ) + temperature_unit: Optional[Optional[UnitDefinitionAnnot]] = Field( + default=None, + description="""Unit of the temperature of the measurement.""", + ) # JSON-LD fields ld_id: str = Field( @@ -1844,8 +2141,8 @@ class Measurement(BaseModel): serialization_alias="@context", default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "id": { "@id": "schema:identifier", "@type": "@id", @@ -1971,15 +2268,52 @@ class MeasurementData(BaseModel): validate_assignment=True, ) # type: ignore - species_id: str - prepared: Optional[Optional[float]] = Field(default=None) - initial: Optional[Optional[float]] = Field(default=None) - data_unit: Optional[Optional[UnitDefinitionAnnot]] = Field(default=None) - data: list[float] = Field(default_factory=list) - time: list[float] = Field(default_factory=list) - time_unit: Optional[Optional[UnitDefinitionAnnot]] = Field(default=None) - data_type: Optional[Optional[DataTypes]] = Field(default=None) - is_simulated: Optional[bool] = False + species_id: str = Field( + default=..., + description="""The identifier for the described reactant.""", + ) + prepared: Optional[Optional[float]] = Field( + default=None, + description="""Amount of the the species before starting the + measurement. This field can be used + for specifying the prepared amount + of a species in the reaction mix. Not + to be confused with , specifying the + concentration of a species at the first + data point from the array.""", + ) + initial: Optional[Optional[float]] = Field( + default=None, + description="""Initial amount of the measurement data. This must + be the same as the first data point in + the array.""", + ) + data_unit: Optional[Optional[UnitDefinitionAnnot]] = Field( + default=None, + description="""SI unit of the data that was measured.""", + ) + data: list[float] = Field( + default_factory=list, + description="""Data that was measured.""", + ) + time: list[float] = Field( + default_factory=list, + description="""Corresponding time points of the .""", + ) + time_unit: Optional[Optional[UnitDefinitionAnnot]] = Field( + default=None, + description="""Unit of the time points of the .""", + ) + data_type: Optional[Optional[DataTypes]] = Field( + default=None, + description="""Type of data that was measured (e.g. + concentration, absorbance, etc.)""", + ) + is_simulated: Optional[bool] = Field( + default=False, + description="""Whether or not the data has been generated by + simulation. Default is False.""", + ) # JSON-LD fields ld_id: str = Field( @@ -1996,8 +2330,8 @@ class MeasurementData(BaseModel): serialization_alias="@context", default_factory=lambda: { "enzml": "http://www.enzymeml.org/v2/", - "OBO": "http://purl.obolibrary.org/obo/", "schema": "https://schema.org/", + "OBO": "http://purl.obolibrary.org/obo/", "species_id": { "@type": "@id", }, From 6d2712d8cf90979b7370cd3a0c7136b7da3d003f Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 23 May 2025 16:18:50 +0200 Subject: [PATCH 127/172] add `is_mapper` --- pyenzyme/composer.py | 51 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/pyenzyme/composer.py b/pyenzyme/composer.py index 6ac0ee05..a623b6a2 100644 --- a/pyenzyme/composer.py +++ b/pyenzyme/composer.py @@ -1,3 +1,4 @@ +import re from typing import List, Optional, Tuple, Callable, Any from rich.console import Console @@ -32,6 +33,7 @@ def compose( small_molecules: Optional[list[str]] = None, reactions: Optional[list[str]] = None, vessel: Optional[v2.Vessel] = None, + id_mapping: Optional[dict[str, str]] = None, ) -> v2.EnzymeMLDocument: """ Compose an EnzymeML document from proteins, small molecules, and reactions. @@ -46,6 +48,7 @@ def compose( Returns: A complete EnzymeML document with fetched entities """ + proteins = proteins or [] small_molecules = small_molecules or [] reactions = reactions or [] @@ -94,6 +97,23 @@ def compose( protein_objects.sort(key=lambda x: x.id) reaction_objects.sort(key=lambda x: x.id) + if id_mapping: + small_molecule_objects = _apply_id_mapping( + small_molecule_objects, + id_mapping, + r"CHEBI|PUBCHEM", + ) + protein_objects = _apply_id_mapping( + protein_objects, + id_mapping, + r"UNIPROT|PDB", + ) + reaction_objects = _apply_id_mapping( + reaction_objects, + id_mapping, + r"RHEA", + ) + # Set vessel IDs if vessel is provided vessels = [] if vessel: @@ -212,3 +232,34 @@ def _remove_duplicates(objects: List[Any]) -> List[Any]: unique_objects.append(obj) return unique_objects + + +def _apply_id_mapping( + objects: List[Any], + id_mapping: dict[str, str], + prefix: str, +) -> List[Any]: + """ + Apply ID mapping to objects based on the provided mapping. + + Args: + objects: List of objects to apply ID mapping to + id_mapping: Dictionary mapping old IDs to new IDs + prefix: Regex pattern to match ID prefixes + + Returns: + List of objects with updated IDs + """ + for obj in objects: + key = next( + ( + k + for k in id_mapping + if re.sub(prefix + ":", "", k) in obj.ld_id.replace("_", ":") + ), + None, + ) + if key: + obj.id = id_mapping[key] + + return objects From db39b8b2a210a8a21d460d065bfab5f5c37916c7 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 23 May 2025 16:29:21 +0200 Subject: [PATCH 128/172] add plotting method --- pyenzyme/__init__.py | 2 + pyenzyme/plotting/__init__.py | 3 + pyenzyme/plotting/static.py | 358 ++++++++++++++++++++++++++++++++++ 3 files changed, 363 insertions(+) create mode 100644 pyenzyme/plotting/__init__.py create mode 100644 pyenzyme/plotting/static.py diff --git a/pyenzyme/__init__.py b/pyenzyme/__init__.py index 9d854481..737ff595 100644 --- a/pyenzyme/__init__.py +++ b/pyenzyme/__init__.py @@ -7,6 +7,7 @@ from .fetcher import * # noqa: F403 from .composer import compose from .suite import EnzymeMLSuite +from .plotting import plot # Input functions from_csv = EnzymeMLHandler.from_csv @@ -34,4 +35,5 @@ "to_sbml", "write_enzymeml", "compose", + "plot", ] diff --git a/pyenzyme/plotting/__init__.py b/pyenzyme/plotting/__init__.py new file mode 100644 index 00000000..da96451c --- /dev/null +++ b/pyenzyme/plotting/__init__.py @@ -0,0 +1,3 @@ +from .static import plot + +__all__ = ["plot"] diff --git a/pyenzyme/plotting/static.py b/pyenzyme/plotting/static.py new file mode 100644 index 00000000..2699a769 --- /dev/null +++ b/pyenzyme/plotting/static.py @@ -0,0 +1,358 @@ +import math +from typing import List, Optional, Tuple, Union + +import numpy as np +from matplotlib import pyplot as plt +from matplotlib.figure import Figure +from matplotlib.axes import Axes + +from pyenzyme.thinlayers.base import BaseThinLayer, SimResult, Time +from pyenzyme.versions import v2 + +# Default figure dimensions +DEFAULT_WIDTH = 6 +DEFAULT_HEIGHT = 3 + + +def plot( + enzmldoc: v2.EnzymeMLDocument, + columns: int = 2, + measurement_ids: Optional[list[str]] = None, + marker_size: int = 6, + marker_style: str = "o", + thinlayer: Optional[BaseThinLayer] = None, + out: Optional[str] = None, + img_format: str = "png", + dpi: int = 300, + **kwargs, +) -> Tuple[Figure, Union[Axes, List[Axes]]]: + """ + Creates publication-quality plots of measurement data from an EnzymeML document. + + This function generates plots for experimental measurements and optionally includes + model fits provided by a thinlayer. Each measurement is displayed in a separate + subplot, with species data and their corresponding model fits if available. + + Parameters + ---------- + enzmldoc : v2.EnzymeMLDocument + The EnzymeML document containing measurement data to plot. + columns : int, optional + Number of columns in the plot grid, by default 2. + measurement_ids : Optional[list[str]], optional + List of specific measurement IDs to plot. If None, all measurements are plotted. + marker_size : int, optional + Size of markers for experimental data points, by default 6. + marker_style : str, optional + Style of markers for experimental data points, by default "o". + thinlayer : Optional[BaseThinLayer], optional + A thinlayer object providing model fits for the data. If provided, + fitting curves will be displayed alongside experimental data. + **kwargs + Additional keyword arguments passed to matplotlib plotting functions. + + Returns + ------- + tuple + Figure and axes objects from matplotlib. + + Examples + -------- + Basic usage with all measurements: + + >>> import pyenzyme as pe + >>> doc = pe.read_enzymeml("path/to/enzmldoc.json") + >>> fig, axes = pe.plot(enzmldoc=doc) + >>> fig.savefig("output.png", dpi=300) + + Using a thinlayer for model fitting: + + >>> import pyenzyme as pe + >>> import pyenzyme.thinlayers as tls + >>> doc = pe.read_enzymeml("path/to/enzmldoc.json") + >>> tl = tls.ThinLayerPysces(doc) + >>> tl.optimize() + >>> fig, _ = pe.plot( + ... enzmldoc=doc, + ... thinlayer=tl, + ... measurement_ids=["measurement0", "measurement1"], + ... ) + >>> fig.savefig("with_fits.png", dpi=300) + """ + # Filter measurements based on provided IDs + if measurement_ids is None: + measurements = enzmldoc.measurements + else: + measurements = [m for m in enzmldoc.measurements if m.id in measurement_ids] + + # Configure subplot layout + n_measurements = len(measurements) + rows = math.ceil(n_measurements / columns) + + # Single measurement case: use single column + if n_measurements == 1: + columns = 1 + + # Create figure and axes + fig, axs = plt.subplots( + nrows=rows, + ncols=columns, + figsize=(DEFAULT_WIDTH * columns, DEFAULT_HEIGHT * rows), + ) + + # Ensure axs is always a flat list for consistent handling + if isinstance(axs, np.ndarray): + axs = axs.flatten() + else: + axs = [axs] + + # Plot each measurement + for ax, measurement in zip(axs, measurements): + _plot_measurement( + ax, enzmldoc, measurement, thinlayer, marker_size, marker_style, **kwargs + ) + + # Hide unused axes + for idx in range(len(measurements), len(axs)): + axs[idx].set_visible(False) + + # Adjust layout with minimal space for legends + plt.tight_layout(rect=(0, 0, 0.98, 1)) + + if out: + fig.savefig(out, dpi=dpi, format=img_format) + + return fig, axs # type: ignore + + +def _plot_measurement( + ax: Axes, + enzmldoc: v2.EnzymeMLDocument, + measurement: v2.Measurement, + thinlayer: Optional[BaseThinLayer], + marker_size: int, + marker_style: str, + **kwargs, +) -> None: + """ + Plot a single measurement on the given axes. + + Parameters + ---------- + ax : Axes + The matplotlib axes to plot on. + enzmldoc : v2.EnzymeMLDocument + The EnzymeML document containing the data. + measurement : v2.Measurement + The specific measurement to plot. + thinlayer : Optional[BaseThinLayer] + A thinlayer object providing model predictions, if available. + marker_size : int + Size of markers for experimental data points. + marker_style : str + Style of markers for experimental data points. + **kwargs + Additional keyword arguments passed to matplotlib plotting functions. + """ + # Sort species data by ID for consistent order + species_data = sorted( + [s for s in measurement.species_data], key=lambda x: x.species_id + ) + + # Get data types for y-axis label + dataytypes = _collect_dataytypes(species_data) + + # Get model predictions if available + if thinlayer: + pred, time = _get_fit(enzmldoc, measurement, thinlayer) + else: + pred, time = {}, [] + + # Plot each species + for species in species_data: + _plot_species( + ax, + species, + pred, + time, + marker_size, + marker_style, + **kwargs, + ) + + # Configure plot appearance + _configure_plot(ax, measurement, dataytypes) + + +def _plot_species( + ax: Axes, + species: v2.MeasurementData, + pred: SimResult, + time: List[float], + marker_size: int, + marker_style: str, + **kwargs, +) -> None: + """ + Plot experimental data and model fit for a single species. + + Parameters + ---------- + ax : Axes + The matplotlib axes to plot on. + species : v2.MeasurementData + The measurement data for a specific species. + pred : Dict[str, List[float]] + Model predictions, if available. + time : List[float] + Time points for model predictions. + marker_size : int + Size of markers for experimental data points. + marker_style : str + Style of markers for experimental data points. + **kwargs + Additional keyword arguments passed to matplotlib plotting functions. + """ + # Plot experimental data if available + if len(species.data) > 0: + line = ax.plot( + species.time, + species.data, + marker_style, + markersize=marker_size, + label=species.species_id, + **kwargs, + ) + line_color = line[0].get_color() + + # Add model fit if available for this species + if species.species_id in pred: + ax.plot( + time, + pred[species.species_id], + "--", + color=line_color, + label=f"{species.species_id} Fit", + **kwargs, + ) + # If no experimental data but model fit is available + elif species.species_id in pred: + ax.plot( + time, + pred[species.species_id], + "--", + label=f"{species.species_id} Fit", + **kwargs, + ) + + +def _configure_plot( + ax: Axes, measurement: v2.Measurement, dataytypes: List[str] +) -> None: + """ + Configure plot appearance with titles, labels, and styling. + + Parameters + ---------- + ax : Axes + The matplotlib axes to configure. + measurement : v2.Measurement + The measurement being plotted. + dataytypes : List[str] + List of data types for the y-axis label. + """ + # Add legend outside the plot at the top right + ax.legend( + loc="upper left", + bbox_to_anchor=(1.01, 1), + frameon=True, + framealpha=0.9, + fancybox=True, + shadow=True, + fontsize="small", + labelspacing=0.5, # Make entries more compact vertically + ) + + # Set title and axis labels + ax.set_title(measurement.name, fontweight="bold") + ax.set_xlabel("Time") + ax.set_ylabel(", ".join(dataytypes)) + + # Configure grid and spines + ax.grid(True, linestyle="--", alpha=0.3) + ax.spines["top"].set_visible(False) + ax.spines["right"].set_visible(False) + + +def _get_fit( + enzmldoc: v2.EnzymeMLDocument, + measurement: v2.Measurement, + thinlayer: BaseThinLayer, +) -> Tuple[SimResult, Time]: + """ + Get model predictions for a measurement using a thinlayer. + + Parameters + ---------- + enzmldoc : v2.EnzymeMLDocument + The EnzymeML document containing the data. + measurement : v2.Measurement + The measurement to generate predictions for. + thinlayer : BaseThinLayer + The thinlayer object providing integration capabilities. + + Returns + ------- + Tuple[Dict[str, List[float]], List[float]] + A tuple containing predictions for each species and the time points. + + Raises + ------ + ValueError + If time data is missing for all species in the measurement. + """ + # Get the initial conditions from the measurement + initial_conditions = { + s.species_id: s.initial for s in measurement.species_data if s.initial + } + + # Get the time points from the measurement + time = next((s.time for s in measurement.species_data if s.time), None) + + if time is None: + raise ValueError("Time is not set for any species in the measurement") + + t0, t1 = min(time), max(time) + + # Use thinlayer to integrate the model + return thinlayer.integrate( + model=enzmldoc, + initial_conditions=initial_conditions, + t0=t0, + t1=t1, + ) + + +def _collect_dataytypes(measurement_data: List[v2.MeasurementData]) -> List[str]: + """ + Extract and format unique measurement data types. + + Parameters + ---------- + measurement_data : List[v2.MeasurementData] + List of measurement data objects. + + Returns + ------- + List[str] + Unique, capitalized data types from measurements. + """ + return list( + set( + [ + s.data_type.value.capitalize() + for s in measurement_data + if s.data_type is not None + ] + ) + ) From c84ca72d1b4ef42545e769db9aa4a4a407bf3d0c Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 23 May 2025 16:30:59 +0200 Subject: [PATCH 129/172] import layers, if possible --- pyenzyme/thinlayers/__init__.py | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 pyenzyme/thinlayers/__init__.py diff --git a/pyenzyme/thinlayers/__init__.py b/pyenzyme/thinlayers/__init__.py new file mode 100644 index 00000000..e3302901 --- /dev/null +++ b/pyenzyme/thinlayers/__init__.py @@ -0,0 +1,8 @@ +from .base import BaseThinLayer + +try: + from .psyces import ThinLayerPysces +except ImportError: + pass + +__all__ = ["BaseThinLayer", "ThinLayerPysces"] From 877d457aa5b6db1187d88ceccab501cb669e8a02 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 23 May 2025 16:31:21 +0200 Subject: [PATCH 130/172] set element not constant --- pyenzyme/sbml/serializer.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pyenzyme/sbml/serializer.py b/pyenzyme/sbml/serializer.py index 81780248..521ddfb2 100644 --- a/pyenzyme/sbml/serializer.py +++ b/pyenzyme/sbml/serializer.py @@ -352,6 +352,7 @@ def _add_reaction_element( species_ref.setConstant(True) species_ref.setSpecies(element.species_id) species_ref.setStoichiometry(abs(element.stoichiometry)) + species_ref.setConstant(False) def _add_rate_law(equation: pe.Equation, reac: libsbml.Reaction): From 8469592e1aae00e1eef7dddf789e04abad4d5062 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 23 May 2025 16:31:32 +0200 Subject: [PATCH 131/172] extend docs and add abstract methods --- pyenzyme/thinlayers/base.py | 163 ++++++++++++++++++++++++++++++++---- 1 file changed, 148 insertions(+), 15 deletions(-) diff --git a/pyenzyme/thinlayers/base.py b/pyenzyme/thinlayers/base.py index e07560d8..d832840f 100644 --- a/pyenzyme/thinlayers/base.py +++ b/pyenzyme/thinlayers/base.py @@ -1,14 +1,20 @@ +from abc import ABC, abstractmethod from functools import cached_property -from typing import Optional, List +from typing import Dict, List, Optional, Tuple, TypeAlias import pandas as pd -from pydantic import BaseModel, ConfigDict, computed_field, field_validator +import pyenzyme as pe from pyenzyme.versions import v2 -from pyenzyme import to_pandas, to_sbml +# Type aliases for usage across the thinlayers +# Easier to read and understand than using type hints +InitCondDict: TypeAlias = Dict[str, float] +SimResult: TypeAlias = Dict[str, List[float]] +Time: TypeAlias = List[float] -class BaseThinLayer(BaseModel): + +class BaseThinLayer(ABC): """ Base class for thin layers that wrap EnzymeML documents. @@ -22,14 +28,104 @@ class BaseThinLayer(BaseModel): If None, all measurements are included. """ - model_config = ConfigDict(arbitrary_types_allowed=True) - enzmldoc: v2.EnzymeMLDocument - measurement_ids: Optional[List[str]] = None + measurement_ids: List[str] + + def __init__( + self, + enzmldoc: v2.EnzymeMLDocument, + measurement_ids: Optional[List[str]] = None, + df_per_measurement: bool = False, + ): + assert isinstance(enzmldoc, v2.EnzymeMLDocument) + assert isinstance(measurement_ids, list) or measurement_ids is None + + if measurement_ids is None: + measurement_ids = [meas.id for meas in enzmldoc.measurements] + + self.enzmldoc = enzmldoc + self.fitted_doc = enzmldoc.model_copy(deep=True) + self.measurement_ids = measurement_ids + self.df_per_measurement = df_per_measurement + + @abstractmethod + def integrate( + self, + model: v2.EnzymeMLDocument, + initial_conditions: InitCondDict, + t0: float, + t1: float, + nsteps: int = 100, + ) -> Tuple[SimResult, Time]: + """ + Integrates the model from t0 to t1 with the given initial conditions. + + Args: + model (v2.EnzymeMLDocument): EnzymeML document containing the model. + initial_conditions (InitCondDict): Dictionary mapping species IDs to initial concentrations. + t0 (float): Start time for integration. + t1 (float): End time for integration. + nsteps (int, optional): Number of time points to generate. Defaults to 100. + + Returns: + Tuple[SimResult, Time]: A tuple containing: + - Dict mapping species IDs to concentration trajectories. + - List of time points. + + Examples: + >>> # Simulate model with initial conditions + >>> species_data, time_points = thinlayer.integrate( + ... model=doc, + ... initial_conditions={"S1": 10.0, "S2": 0.0}, + ... t0=0.0, + ... t1=100.0, + ... nsteps=200 + ... ) + """ + pass + + @abstractmethod + def optimize(self, **kwargs): + """ + Optimizes the model parameters. + + This method should implement parameter optimization for the model, + typically fitting to experimental data contained in the EnzymeML document. + + Args: + **kwargs: Implementation-specific keyword arguments. + + Returns: + Implementation-specific optimization results. + + Examples: + >>> # Optimize model parameters + >>> result = thinlayer.optimize(**kwargs) + >>> print(f"Optimization success: {result.success}") + """ + pass + + @abstractmethod + def write(self) -> v2.EnzymeMLDocument: + """ + Writes the optimized model parameters to a copy of the EnzymeMLDocument. + + This method creates a new EnzymeML document with updated parameter values + based on optimization results. - @field_validator("enzmldoc") - @classmethod - def check_measurement_ids(cls, enzmldoc: v2.EnzymeMLDocument): + Returns: + v2.EnzymeMLDocument: A new EnzymeML document with optimized parameters. + + Examples: + >>> # Get optimized document after parameter fitting + >>> thinlayer.optimize() + >>> optimized_doc = thinlayer.write() + >>> pe.write_enzymeml(optimized_doc, "optimized_model.json") + """ + pass + + @staticmethod + def _check_measurement_ids(enzmldoc: v2.EnzymeMLDocument): """ Validates that the EnzymeML document contains at least one measurement. @@ -41,13 +137,16 @@ def check_measurement_ids(cls, enzmldoc: v2.EnzymeMLDocument): Raises: ValueError: If the EnzymeML document has no measurements. + + Examples: + >>> # Validate document has measurements + >>> validated_doc = BaseThinLayer.check_measurement_ids(doc) """ if len(enzmldoc.measurements) == 0: raise ValueError("EnzymeMLDocument has no measurements") return enzmldoc - @computed_field(return_type=str) @cached_property def sbml_xml(self) -> str: """ @@ -55,12 +154,45 @@ def sbml_xml(self) -> str: Returns: str: The SBML XML representation of the EnzymeML document. + + Examples: + >>> # Export model as SBML + >>> sbml_string = thinlayer.sbml_xml + >>> with open("model.xml", "w") as f: + ... f.write(sbml_string) + """ + return pe.to_sbml(self.enzmldoc)[0] + + @cached_property + def df(self) -> pd.DataFrame: + """ + Converts the EnzymeML document to a pandas DataFrame. + + If measurement_ids is specified, only those measurements are included in the result. + + Returns: + pd.DataFrame: A DataFrame containing time series data for all measurements + or only the specified measurements. + + Raises: + ValueError: If the conversion doesn't return a DataFrame. """ - return to_sbml(self.enzmldoc)[0] + df = pe.to_pandas(self.enzmldoc, per_measurement=False) + + # Drop all this rows where "id" is within measurement_ids + df = ( + df + if self.measurement_ids is None + else df[df["id"].isin(self.measurement_ids)] # type: ignore + ) + + if not isinstance(df, pd.DataFrame): + raise ValueError("Expected a single dataframe") + + return df - @computed_field(return_type=dict[str, pd.DataFrame]) @cached_property - def data(self) -> dict[str, pd.DataFrame]: + def df_map(self) -> dict[str, pd.DataFrame]: """ Converts the EnzymeML document to pandas DataFrames, organized by measurement ID. @@ -74,7 +206,8 @@ def data(self) -> dict[str, pd.DataFrame]: ValueError: If the conversion doesn't return a dictionary or if specified measurement IDs are not found in the document. """ - df_map = to_pandas(self.enzmldoc, per_measurement=True) + + df_map = pe.to_pandas(self.enzmldoc, per_measurement=True) if not isinstance(df_map, dict): raise ValueError("Expected a dictionary of dataframes") From ff511c28cf2eb720748489a946302b4f7f5456df Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 23 May 2025 16:32:06 +0200 Subject: [PATCH 132/172] add `pysces` thin layer --- pyenzyme/thinlayers/psyces.py | 504 +++++++++++++++++++++++++++++++ tests/integration/test_psyces.py | 67 ++++ 2 files changed, 571 insertions(+) create mode 100644 pyenzyme/thinlayers/psyces.py create mode 100644 tests/integration/test_psyces.py diff --git a/pyenzyme/thinlayers/psyces.py b/pyenzyme/thinlayers/psyces.py new file mode 100644 index 00000000..a80eec8f --- /dev/null +++ b/pyenzyme/thinlayers/psyces.py @@ -0,0 +1,504 @@ +# File: pysces.py +# Project: ThinLayers +# Authors: Johann Rohwer (j.m.rohwer@gmail.com), Jan Range (jan.range@simtech.uni-stuttgart.de) +# License: BSD-2 clause +# Copyright (c) 2025 Stellenbosch University, University of Stuttgart + +from __future__ import annotations + +from copy import deepcopy +from dataclasses import dataclass +from pathlib import Path +from joblib import Parallel, delayed +import numpy as np +import pandas as pd +import os + +from typing import Dict, List, Optional, Tuple + +from pyenzyme.thinlayers.base import BaseThinLayer, SimResult, Time, InitCondDict +from pyenzyme.versions import v2 + +try: + import pysces + import lmfit +except ModuleNotFoundError as e: + raise ModuleNotFoundError( + "ThinLayerPysces is not available. " + "To use it, please install the following dependencies: " + f"{e}" + ) + + +class ThinLayerPysces(BaseThinLayer): + """ + PySCeS implementation of the BaseThinLayer for kinetic modeling. + + This class provides integration with the Python Simulator for Cellular Systems (PySCeS) + for simulating and optimizing kinetic models from EnzymeML documents. + + Attributes: + model (pysces.model): The PySCeS model instance. + model_dir (Path | str): Directory for storing model files. + inits (list[InitMap]): Initial conditions for each measurement. + cols (list[str]): Column names for the experimental data. + parameters (lmfit.Parameters): Optimizable parameters for the model. + """ + + model: pysces.model + model_dir: Path | str + inits: list[InitMap] + cols: list[str] + parameters: lmfit.Parameters + nu_enzmldoc: v2.EnzymeMLDocument + + def __init__( + self, + enzmldoc: v2.EnzymeMLDocument, + model_dir: Path | str = "./pysces_models", + measurement_ids: Optional[List[str]] = None, + ): + """ + Initialize the ThinLayerPysces instance. + + Args: + enzmldoc (v2.EnzymeMLDocument): EnzymeML document containing the model. + model_dir (Path | str): Directory where PySCeS model files will be stored. + measurement_ids (Optional[List[str]]): IDs of measurements to include in the analysis. + If None, all measurements will be used. + + Examples: + >>> import pyenzyme as pe + >>> import pyenzyme.thinlayers as tls + >>> doc = pe.read_enzymeml("path/to/enzmldoc.json") + >>> tl = tls.ThinLayerPysces(doc) + """ + super().__init__( + enzmldoc=enzmldoc, + measurement_ids=measurement_ids, + df_per_measurement=False, + ) + + if not isinstance(model_dir, Path): + model_dir = Path(model_dir) + + if not model_dir.exists(): + # Create model directory if it doesn't exist + os.makedirs(model_dir, exist_ok=True) + + # Convert model to PSC + self._get_pysces_model(model_dir) + + def integrate( + self, + model: v2.EnzymeMLDocument, + initial_conditions: InitCondDict, + t0: float, + t1: float, + nsteps: int = 100, + ) -> Tuple[SimResult, Time]: + """ + Integrates the model from t0 to t1 with the given initial conditions. + + This method simulates the model dynamics within the specified time range + and returns trajectories for all species. + + Args: + model (v2.EnzymeMLDocument): EnzymeML document containing the model. + initial_conditions (InitCondDict): Dictionary mapping species IDs to initial concentrations. + t0 (float): Start time for integration. + t1 (float): End time for integration. + nsteps (int, optional): Number of time points to generate. Defaults to 100. + + Returns: + Tuple[SimResult, Time]: A tuple containing: + - Dict mapping species IDs to concentration trajectories. + - List of time points. + + Raises: + ValueError: If the provided model is different from the one used for initialization. + + Examples: + >>> # Get initial conditions from a measurement + >>> initial_conditions = { + ... s.species_id: s.initial for s in measurement.species_data + ... if s.initial is not None + ... } + >>> # Simulate from time 0 to 10 + >>> results, time = tl.integrate(doc, initial_conditions, 0, 10) + """ + if model != self.enzmldoc: + raise ValueError( + "Model must be the same as the one used to initialize the ThinLayerPysces. Otherwise, rerun the Thin Layer optimization with the new model." + ) + + # Convert the initial conditions to a InitMap + time = np.linspace(t0, t1, nsteps).tolist() + init_map = InitMap( + time=time, + species=initial_conditions, + ) + + out, species_order = self._simulate_condition(init_map) + + return ( + {species: traj.tolist() for species, traj in zip(species_order, out)}, + time, + ) + + def optimize(self, method="leastsq"): + """ + Optimizes model parameters to fit experimental data. + + This method performs parameter estimation to minimize the difference + between simulated and experimental data. + + Args: + method (str, optional): Optimization algorithm to use from lmfit. Defaults to "leastsq". + Available methods include: + - leastsq: Levenberg-Marquardt (default) + - least_squares: Least-Squares minimization, using Trust Region Reflective method + - differential_evolution: differential evolution + - brute: brute force method + - basinhopping: basinhopping + - ampgo: Adaptive Memory Programming for Global Optimization + - nelder: Nelder-Mead + - lbfgsb: L-BFGS-B + - powell: Powell + - cg: Conjugate-Gradient + - newton: Newton-CG + - cobyla: Cobyla + - bfgs: BFGS + - tnc: Truncated Newton + - trust-ncg: Newton-CG trust-region + - trust-exact: nearly exact trust-region + - trust-krylov: Newton GLTR trust-region + - trust-constr: trust-region for constrained optimization + - dogleg: Dog-leg trust-region + - slsqp: Sequential Linear Squares Programming + - emcee: Maximum likelihood via Monte-Carlo Markov Chain + - shgo: Simplicial Homology Global Optimization + - dual_annealing: Dual Annealing optimization + + Returns: + lmfit.MinimizerResult: Result of the optimization. + + Examples: + >>> # Optimize model parameters + >>> tl = ThinLayerPysces(doc, ".") + >>> result = tl.optimize() + >>> print(f"Optimization success: {result.success}") + """ + # Get experimental data from the EnzymeML document + self._get_experimental_data() + + # Initialize the model parameters + parameters = self._initialize_parameters() + + # Perform optimization + self.minimizer = lmfit.Minimizer(self._calculate_residual, parameters) + + self.parameters = parameters + + return self.minimizer.minimize(method=method) + + def write(self) -> v2.EnzymeMLDocument: + """ + Creates a new EnzymeML document with optimized parameter values. + + This method updates parameter values in a copy of the original EnzymeML document + based on optimization results. + + Returns: + v2.EnzymeMLDocument: A new EnzymeML document with optimized parameters. + + Raises: + ValueError: If a parameter in the optimization results is not found in the document. + + Examples: + >>> # Optimize and save optimized document + >>> tl = ThinLayerPysces(doc) + >>> tl.optimize() + >>> optimized_doc = tl.write() + >>> pe.write_enzymeml(optimized_doc, "optimized_model.json") + """ + nu_enzmldoc = self.enzmldoc.model_copy(deep=True) + results = self.minimizer.result.params.valuesdict() # type: ignore + + for name, value in results.items(): + parameter = next( + (p for p in nu_enzmldoc.parameters if p.symbol == name), None + ) + if parameter is None: + raise ValueError(f"Parameter {name} not found") + + parameter.value = value + + return nu_enzmldoc + + # ! Helper methods + def _initialize_parameters(self): + """ + Initializes lmfit Parameters instance with model parameters. + + Returns: + lmfit.Parameters: Parameters object ready for optimization. + + Raises: + ValueError: If a parameter has neither an initial value nor a value attribute. + """ + # Initialize lmfit parameters + parameters = lmfit.Parameters() + + # Add global parameters + for param in self.enzmldoc.parameters: + # Build kwargs dictionary with conditional assignments + kwargs = { + **({"min": param.lower_bound} if param.lower_bound is not None else {}), + **({"max": param.upper_bound} if param.upper_bound is not None else {}), + } + + # Determine parameter value + if param.value: + kwargs["value"] = param.value + elif param.initial_value: + kwargs["value"] = param.initial_value + else: + raise ValueError( + f"Neither initial_value nor value given for parameter {param.name} in global parameters" + ) + + parameters.add(param.symbol, **kwargs) + + return parameters + + def _get_experimental_data(self): + """ + Extracts measurement data from the EnzymeML document. + + Populates the inits, experimental_data, and cols attributes. + """ + self.inits = [ + InitMap.from_measurement(measurement, self.df_map[measurement.id]) + for measurement in self.enzmldoc.measurements + if measurement.id in self.measurement_ids + ] + + self.experimental_data = self.df.drop(columns=["id", "time"]) + self.cols = list(self.experimental_data.columns) + + def _get_pysces_model(self, model_dir: Path | str): + """ + Converts an EnzymeML document to a PySCeS model. + + Args: + model_dir (Path | str): Directory for storing model files. + """ + model_dir = self._prepare_model_directory(model_dir) + sbmlfile_name = self._create_sbml_file(model_dir) + + self._convert_to_pysces_format(sbmlfile_name, model_dir) + self._load_pysces_model(sbmlfile_name, model_dir) + self._fix_compartment_sizes() + + def _prepare_model_directory(self, model_dir: Path | str) -> str: + """ + Ensures the model directory exists and returns it as a string. + + Args: + model_dir (Path | str): Directory path for model files. + + Returns: + str: Path to the model directory as a string. + """ + model_dir = str(model_dir) + os.makedirs(model_dir, exist_ok=True) + + return model_dir + + def _create_sbml_file(self, model_dir: str) -> str: + """ + Creates an SBML file from the EnzymeML document. + + Args: + model_dir (str): Directory to save the SBML file. + + Returns: + str: Name of the created SBML file. + """ + sbmlfile_name = f"{self.enzmldoc.name.replace(' ', '_')}.xml" + sbmlfile_path = os.path.join(model_dir, sbmlfile_name) + + with open(sbmlfile_path, "w") as file: + file.write(self.sbml_xml) + + return sbmlfile_name + + def _convert_to_pysces_format(self, sbmlfile_name: str, model_dir: str): + """ + Converts SBML to PySCeS format if needed. + + Args: + sbmlfile_name (str): Name of the SBML file. + model_dir (str): Directory containing the file. + """ + sbmlfile_path = os.path.join(model_dir, sbmlfile_name) + pscfile_path = f"{sbmlfile_path}.psc" + sbml_file_modified = os.path.getmtime(sbmlfile_path) + + # Check if PSC file needs to be regenerated + psc_needs_update = ( + not os.path.exists(pscfile_path) + or os.path.getmtime(pscfile_path) <= sbml_file_modified + ) + + if psc_needs_update: + pysces.interface.convertSBML2PSC( + sbmlfile_name, sbmldir=model_dir, pscdir=model_dir + ) + + def _load_pysces_model(self, sbmlfile_name: str, model_dir: str): + """ + Loads the PySCeS model. + + Args: + sbmlfile_name (str): Name of the SBML/PSC file. + model_dir (str): Directory containing the file. + """ + self.model = pysces.model(sbmlfile_name, dir=model_dir) + + def _fix_compartment_sizes(self): + """ + Fixes compartment sizes to work around a PySCeS issue (#79). + + Sets compartment sizes to 1.0 when working with concentrations. + See: https://github.com/PySCeS/pysces/issues/79 + """ + if ( + self.model.__KeyWords__["Species_In_Conc"] + and self.model.__KeyWords__["Output_In_Conc"] + ): + for comp in self.model.__compartments__: + self.model.__compartments__[comp]["size"] = 1.0 + setattr(self.model, comp, 1.0) + setattr(self.model, f"{comp}_init", 1.0) + + def _calculate_residual(self, parameters) -> np.ndarray: + """ + Calculates residuals between experimental and simulated data. + + Args: + parameters: The parameter values to use for simulation. + + Returns: + np.ndarray: Array of residuals. + """ + simulated_data = self._simulate_experiment(parameters) + simulated_data = simulated_data.drop( + simulated_data.columns.difference(self.cols), axis=1 + ) + + return np.array(self.experimental_data - simulated_data) + + def _simulate_experiment(self, parameters): + """ + Simulates the entire experiment with all measurements. + + Args: + parameters: Parameter values for the simulation. + + Returns: + pd.DataFrame: DataFrame with simulation results. + """ + self.model.SetQuiet() + self.model.__dict__.update(parameters.valuesdict()) + + # Now iterate over all initial concentrations and simulate in parallel + output = Parallel(n_jobs=-1)( + delayed(lambda x: self._simulate_condition(x)[0])(init_conc) + for init_conc in self.inits + ) + + return pd.DataFrame(np.hstack(output).T, columns=self.model.species) # type: ignore + + def _simulate_condition( + self, init_concs: InitMap + ) -> Tuple[List[np.ndarray], List[str]]: + """ + Simulates a single experimental condition. + + Args: + init_concs (InitMap): Initial concentrations for the simulation. + + Returns: + Tuple[List[np.ndarray], List[str]]: + - List of arrays containing trajectory data for each species + - List of species IDs + """ + model = init_concs.to_pysces_model(self.model) + model.Simulate(userinit=1) + return ( + [getattr(model.sim, species) for species in model.species], + [str(species) for species in model.species], + ) + + +@dataclass +class InitMap: + """ + Helper class for managing species initial concentrations. + + This class provides type-safe handling of initial concentrations and + time points for PySCeS model simulations. + + Attributes: + time (List[float]): List of time points for simulation. + species (Dict[str, float]): Dictionary mapping species IDs to initial concentrations. + """ + + time: List[float] + species: Dict[str, float] + + @classmethod + def from_measurement(cls, meas: v2.Measurement, df: pd.DataFrame) -> "InitMap": + """ + Create an InitMap instance from a measurement and its dataframe. + + Args: + meas (v2.Measurement): The measurement containing species data. + df (pd.DataFrame): DataFrame with time data for the measurement. + + Returns: + InitMap: Initialized instance with time points and species initial values. + """ + return cls( + time=df["time"].tolist(), + species={ + s.species_id: s.initial + for s in meas.species_data + if s.initial is not None + }, + ) + + def to_pysces_model(self, model: pysces.model): + """ + Apply initial conditions to a PySCeS model. + + This method sets the simulation time and initial species concentrations + in the PySCeS model, ensuring zero values are replaced with small positive values. + + Args: + model (pysces.model): The PySCeS model to update. + + Returns: + pysces.model: The updated model with initial conditions set. + """ + model = deepcopy(model) + model.sim_time = np.array(self.time) + model.__dict__.update( + { + f"{species_id}_init": value if value != 0 else 1.0e-9 + for species_id, value in self.species.items() + } + ) + return model diff --git a/tests/integration/test_psyces.py b/tests/integration/test_psyces.py new file mode 100644 index 00000000..9849aaac --- /dev/null +++ b/tests/integration/test_psyces.py @@ -0,0 +1,67 @@ +import tempfile +import pyenzyme as pe +from pyenzyme.thinlayers import ThinLayerPysces +from pyenzyme.versions import v2 + + +class TestPsycesThinLayer: + def test_optimize(self): + doc = pe.read_enzymeml("tests/fixtures/modeling/enzmldoc_reaction.json") + + with tempfile.TemporaryDirectory() as tmp_dir: + layer = ThinLayerPysces(doc, tmp_dir) + layer.optimize() + + opt_doc = layer.write() + + k_cat = self._extract_parameter(opt_doc, "k_cat") + k_ie = self._extract_parameter(opt_doc, "k_ie") + K_M = self._extract_parameter(opt_doc, "K_M") + + # Check if values are positive using a small epsilon + expected_km = 82.0 + expected_kcat = 0.85 + expected_kie = 0.0012 + + assert k_cat.value is not None, "k_cat is not set" + assert k_ie.value is not None, "k_ie is not set" + assert K_M.value is not None, "K_M is not set" + + assert expected_kcat * 0.95 < k_cat.value < expected_kcat * 1.1, ( + f"k_cat is not correct, got {k_cat.value}" + ) + assert expected_kie * 0.75 < k_ie.value < expected_kie * 1.1, ( + f"k_ie is not correct, got {k_ie.value}" + ) + assert expected_km * 0.95 < K_M.value < expected_km * 1.1, ( + f"K_M is not correct, got {K_M.value}" + ) + + def test_plot(self): + doc = pe.read_enzymeml("tests/fixtures/modeling/enzmldoc_reaction.json") + + with tempfile.TemporaryDirectory() as tmp_dir: + layer = ThinLayerPysces(doc, tmp_dir) + layer.optimize() + + fig, axs = pe.plot( + layer.enzmldoc, + thinlayer=layer, + measurement_ids=[ + "measurement0", + "measurement1", + "measurement2", + "measurement3", + ], + ) + + # Raw image + + assert fig is not None, "Figure is not created" + assert axs is not None, "Axes are not created" + + @staticmethod + def _extract_parameter(doc: v2.EnzymeMLDocument, symbol: str) -> v2.Parameter: + param = next(p for p in doc.parameters if p.symbol == symbol) + assert param is not None, f"{symbol} is not set" + return param From f83788dd34c1507a23b1857d82289e962d7c9800 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 23 May 2025 16:32:14 +0200 Subject: [PATCH 133/172] adjust available packages --- README.md | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/README.md b/README.md index cb0368a7..2bb0b931 100644 --- a/README.md +++ b/README.md @@ -37,24 +37,9 @@ python3 setup.py install PyEnzyme comes with many flavors, choose whether you want only the base installation, the modeling package or all of it using the following options. -``` -# COPASI - modeling -python -m pip install "pyenzyme[copasi]" - +```bash # PySCeS - modeling python -m pip install "pyenzyme[pysces]" - -# Modeling package -python -m pip install "pyenzyme[modeling]" - -# REST API -python -m pip install "pyenzyme[rest]" - -# Dataverse -python -m pip install "pyenzyme[dataverse]" - -# Complete -python -m pip install "pyenzyme[all]" ``` ## ⚙️ Example code From 923448828c9878a034ca3b289347525eda34a975 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 23 May 2025 16:32:29 +0200 Subject: [PATCH 134/172] remove unused --- tests/integration/test_thinlayer.py | 43 ----------------------------- 1 file changed, 43 deletions(-) delete mode 100644 tests/integration/test_thinlayer.py diff --git a/tests/integration/test_thinlayer.py b/tests/integration/test_thinlayer.py deleted file mode 100644 index 4928bdfc..00000000 --- a/tests/integration/test_thinlayer.py +++ /dev/null @@ -1,43 +0,0 @@ -import pytest -import pyenzyme as pe -from pyenzyme.thinlayers.base import BaseThinLayer - - -class TestThinLayer: - def test_base_thinlayer(self): - # Arrange - doc = pe.read_enzymeml("tests/fixtures/modeling/enzmldoc.json") - - # Act - thinlayer = BaseThinLayer(enzmldoc=doc) - - # Assert - expected_sbml, _ = pe.to_sbml(doc) - expected_data = pe.to_pandas(doc, per_measurement=True) - - assert thinlayer.enzmldoc == doc - assert thinlayer.sbml_xml == expected_sbml - assert len(thinlayer.data) == len(expected_data) - - def test_base_thinlayer_with_measurement_ids(self): - # Arrange - doc = pe.read_enzymeml("tests/fixtures/modeling/enzmldoc.json") - - # Act - thinlayer = BaseThinLayer(enzmldoc=doc, measurement_ids=["measurement0"]) - - # Assert - expected_sbml, _ = pe.to_sbml(doc) - - assert thinlayer.enzmldoc == doc - assert thinlayer.sbml_xml == expected_sbml - assert len(thinlayer.data) == 1 - - def test_base_thinlayer_with_measurement_ids_not_in_doc(self): - # Arrange - doc = pe.read_enzymeml("tests/fixtures/modeling/enzmldoc.json") - - # Act - with pytest.raises(ValueError): - base = BaseThinLayer(enzmldoc=doc, measurement_ids=["measnotexisting"]) - base.data From 6b6873d8205d958035aaa69b77cb97d2ad36e49c Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 23 May 2025 16:32:36 +0200 Subject: [PATCH 135/172] add pysces dep --- .github/workflows/unit-tests.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/unit-tests.yaml b/.github/workflows/unit-tests.yaml index 06860022..7671daaf 100644 --- a/.github/workflows/unit-tests.yaml +++ b/.github/workflows/unit-tests.yaml @@ -20,7 +20,7 @@ jobs: - name: Install dependencies run: | python3 -m pip install --upgrade pip - python3 -m pip install pytest-cov openpyxl pytest-httpx + python3 -m pip install pytest-cov openpyxl pytest-httpx pysces pip3 install -e . - name: Test with pytest From a5fcfa394bbcd37c7c70d35b89603654775130e8 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 23 May 2025 16:32:44 +0200 Subject: [PATCH 136/172] update deps --- pyproject.toml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 3f906f15..5dd74b19 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,16 +12,17 @@ python-libsbml = "^5.20.2" toml = "^0.10.2" rich = "^13.7.1" pandas = ">=2.0.0" -pydantic-xml = "^2.12.1" +pydantic-xml = "^2.17.0" loguru = "^0.7.2" rdflib = "7.0.0" sympy = "^1.12.1" pymetadata = "^0.5.3" httpx = ">=0.27" -mdmodels = "^0.2.0" +mdmodels = "^0.2.1" +joblib = "^1.5.0" -[tool.poetry.group.neo4j.dependencies] -neo4j = "^5.21.0" +[tool.poetry.group.psyces.dependencies] +pysces = "^1.2.3" [tool.poetry.group.excel.dependencies] openpyxl = "^3.1.4" From 660a16b19a34a693e82351df31c3e7a4814fa054 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 23 May 2025 16:36:58 +0200 Subject: [PATCH 137/172] add compliance check --- pyenzyme/thinlayers/psyces.py | 24 ++++++++++++++++++++++++ tests/integration/test_psyces.py | 9 +++++++++ 2 files changed, 33 insertions(+) diff --git a/pyenzyme/thinlayers/psyces.py b/pyenzyme/thinlayers/psyces.py index a80eec8f..8a180663 100644 --- a/pyenzyme/thinlayers/psyces.py +++ b/pyenzyme/thinlayers/psyces.py @@ -73,6 +73,11 @@ def __init__( >>> doc = pe.read_enzymeml("path/to/enzmldoc.json") >>> tl = tls.ThinLayerPysces(doc) """ + + # Currently, the ThinLayerPysces only supports the reaction model + # TODO: Add support for Rate Rules + self._check_compliance(enzmldoc) + super().__init__( enzmldoc=enzmldoc, measurement_ids=measurement_ids, @@ -89,6 +94,25 @@ def __init__( # Convert model to PSC self._get_pysces_model(model_dir) + def _check_compliance(self, enzmldoc: v2.EnzymeMLDocument): + """ + Check if the EnzymeML document is compliant with the PySCeS model. + """ + has_kinetic_laws = any(m.kinetic_law is not None for m in enzmldoc.reactions) + + has_odes = any( + m.equation_type == v2.EquationType.ODE for m in enzmldoc.equations + ) + + if not has_kinetic_laws: + raise ValueError("EnzymeML document must contain kinetic laws") + + if has_odes: + raise ValueError( + "The PySCeS thinlayer only supports Kinetic Laws, not ODEs", + "Support for ODEs will be added in the future.", + ) + def integrate( self, model: v2.EnzymeMLDocument, diff --git a/tests/integration/test_psyces.py b/tests/integration/test_psyces.py index 9849aaac..4091a881 100644 --- a/tests/integration/test_psyces.py +++ b/tests/integration/test_psyces.py @@ -1,4 +1,6 @@ import tempfile + +import pytest import pyenzyme as pe from pyenzyme.thinlayers import ThinLayerPysces from pyenzyme.versions import v2 @@ -60,6 +62,13 @@ def test_plot(self): assert fig is not None, "Figure is not created" assert axs is not None, "Axes are not created" + def test_compliance(self): + doc = pe.read_enzymeml("tests/fixtures/modeling/enzmldoc.json") + + with pytest.raises(ValueError): + with tempfile.TemporaryDirectory() as tmp_dir: + ThinLayerPysces(doc, tmp_dir) + @staticmethod def _extract_parameter(doc: v2.EnzymeMLDocument, symbol: str) -> v2.Parameter: param = next(p for p in doc.parameters if p.symbol == symbol) From 18b4782045410272ef45c570cb3c0b001607ae73 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 23 May 2025 16:39:35 +0200 Subject: [PATCH 138/172] add `lmfit` dependency --- .github/workflows/unit-tests.yaml | 2 +- pyproject.toml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/unit-tests.yaml b/.github/workflows/unit-tests.yaml index 7671daaf..83a513ce 100644 --- a/.github/workflows/unit-tests.yaml +++ b/.github/workflows/unit-tests.yaml @@ -20,7 +20,7 @@ jobs: - name: Install dependencies run: | python3 -m pip install --upgrade pip - python3 -m pip install pytest-cov openpyxl pytest-httpx pysces + python3 -m pip install pytest-cov openpyxl pytest-httpx pysces lmfit pip3 install -e . - name: Test with pytest diff --git a/pyproject.toml b/pyproject.toml index 5dd74b19..7152f46f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,6 +23,7 @@ joblib = "^1.5.0" [tool.poetry.group.psyces.dependencies] pysces = "^1.2.3" +lmfit = "^1.3.3" [tool.poetry.group.excel.dependencies] openpyxl = "^3.1.4" From 5296d2e363938507018f62c1f24ce79e7c07b0e4 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 23 May 2025 16:41:11 +0200 Subject: [PATCH 139/172] add test file --- .../fixtures/modeling/enzmldoc_reaction.json | 4416 +++++++++++++++++ 1 file changed, 4416 insertions(+) create mode 100644 tests/fixtures/modeling/enzmldoc_reaction.json diff --git a/tests/fixtures/modeling/enzmldoc_reaction.json b/tests/fixtures/modeling/enzmldoc_reaction.json new file mode 100644 index 00000000..4b2192b2 --- /dev/null +++ b/tests/fixtures/modeling/enzmldoc_reaction.json @@ -0,0 +1,4416 @@ +{ + "name": "ABTS measurement", + "references": [], + "created": null, + "modified": null, + "creators": [], + "vessels": [ + { + "id": "vessel0", + "name": "vessel0", + "volume": 1.0, + "unit": { + "id": "l", + "name": "l", + "base_units": [ + { + "kind": "litre", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + } + } + ], + "proteins": [ + { + "id": "slac", + "name": "slac", + "constant": false, + "sequence": null, + "vessel_id": "vessel0", + "ecnumber": null, + "organism": null, + "organism_tax_id": null, + "references": [] + }, + { + "id": "slac_inactive", + "name": "slac_inactive", + "constant": false, + "sequence": null, + "vessel_id": "vessel0", + "ecnumber": null, + "organism": null, + "organism_tax_id": null, + "references": [] + } + ], + "small_molecules": [ + { + "id": "abts", + "name": "abts", + "constant": false, + "vessel_id": "vessel0", + "canonical_smiles": null, + "inchi": null, + "inchikey": null, + "references": [] + }, + { + "id": "buffer", + "name": "buffer", + "constant": false, + "vessel_id": "vessel0", + "canonical_smiles": null, + "inchi": null, + "inchikey": null, + "references": [] + }, + { + "id": "abts_radical", + "name": "abts_radical", + "constant": false, + "vessel_id": "vessel0", + "canonical_smiles": null, + "inchi": null, + "inchikey": null, + "references": [] + } + ], + "reactions": [ + { + "id": "reaction0", + "name": "reaction0", + "reversible": false, + "reactants": [ + { + "species_id": "abts", + "stoichiometry": 1.0 + } + ], + "products": [ + { + "species_id": "abts_radical", + "stoichiometry": 1.0 + } + ], + "kinetic_law": { + "species_id": "slac_oxidation", + "equation": "k_cat * slac * abts / (K_M + abts)", + "equation_type": "rateLaw" + } + }, + { + "id": "reaction1", + "name": "reaction1", + "reversible": false, + "reactants": [ + { + "species_id": "slac", + "stoichiometry": 1.0 + } + ], + "products": [ + { + "species_id": "slac_inactive", + "stoichiometry": 1.0 + } + ], + "kinetic_law": { + "species_id": "slac_inactivation", + "equation": "k_ie * slac", + "equation_type": "rateLaw" + } + } + ], + "parameters": [ + { + "id": "k_cat", + "name": "k_cat", + "symbol": "k_cat", + "value": 1.85, + "unit": null, + "initial_value": 0.01, + "upper_bound": 2.0, + "lower_bound": 1e-06, + "stderr": null, + "constant": true + }, + { + "id": "K_M", + "name": "K_M", + "symbol": "K_M", + "value": 20.0, + "unit": null, + "initial_value": 120.0, + "upper_bound": 150.0, + "lower_bound": 1e-06, + "stderr": null, + "constant": true + }, + { + "id": "k_ie", + "name": "k_ie", + "symbol": "k_ie", + "value": 0.001, + "unit": null, + "initial_value": 0.01, + "upper_bound": 0.05, + "lower_bound": 1e-06, + "stderr": null, + "constant": true + } + ], + "measurements": [ + { + "id": "measurement0", + "name": "measurement0 - A2", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 4.372881218445347, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 4.372881218445347, + 4.051411953466072, + 3.9623896954718116, + 3.640920430492537, + 3.482658638502741, + 3.230428907519002, + 3.116678244526336, + 3.00292758153367, + 2.8051003415464244, + 2.6171644635585407, + 2.458902671568744 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement1", + "name": "measurement0 - B2", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 4.595436863430999, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 4.595436863430999, + 4.595436863430999, + 4.550925734433868, + 4.160216935459058, + 3.507387043501147, + 3.3145054845135817, + 3.428256147506248, + 3.3145054845135817, + 3.3145054845135817, + 3.185917778521872, + 2.9732534955355834 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement2", + "name": "measurement0 - C2", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 4.397609623443753, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 4.397609623443753, + 4.1701082974584205, + 3.937661290473406, + 3.6656488354909427, + 3.4925500005021024, + 3.166135054523147, + 2.993036219534307, + 2.844665789543873, + 2.6418928685569467, + 2.5281422055642806, + 2.364934732574802 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement3", + "name": "measurement1 - A3", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 9.288888132128404, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 9.288888132128404, + 8.700352093166348, + 8.245349441195682, + 7.780455427225656, + 7.340289818254034, + 6.939689657279861, + 6.5737092633034555, + 6.227511593325777, + 6.039575715337892, + 5.7972373463535165, + 5.465876719374879 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement4", + "name": "measurement1 - B3", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 9.194920193134463, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 9.194920193134463, + 8.631112559170813, + 8.161272864201104, + 7.760672703226931, + 7.350181180253396, + 6.949581019279223, + 6.613274711300906, + 6.281914084322269, + 5.9851732243414, + 5.7428348553570245, + 5.4906051243732845 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement5", + "name": "measurement1 - C3", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 9.13557202113829, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 9.13557202113829, + 8.680569369167623, + 8.289860570192813, + 7.864532004220235, + 7.4540404812467, + 7.1127884922687015, + 7.038603277273484, + 6.529198134306326, + 6.474795643309832, + 6.28685976532195, + 6.07419548233566 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement6", + "name": "measurement2 - A4", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 14.259297536807956, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 14.259297536807956, + 13.289944060870454, + 12.602494401914774, + 11.924936104958455, + 11.445205047989386, + 10.802266518030835, + 10.292861375063678, + 9.87742417109046, + 9.536172182112463, + 9.130626340138608, + 8.769591627161885 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement7", + "name": "measurement2 - B4", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 14.120818468816886, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 14.120818468816886, + 13.354237913866307, + 12.651951211911586, + 12.058469491949845, + 11.60346683997918, + 11.059441930014255, + 10.589602235044547, + 10.119762540074838, + 9.694433974102258, + 9.353181985124259, + 9.056441125143392 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement8", + "name": "measurement2 - C4", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 13.838914651835061, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 13.838914651835061, + 13.171247716878106, + 12.572820315916687, + 12.004067000953354, + 11.450150728989065, + 10.891288776025094, + 10.451123167053474, + 9.976337791084084, + 9.555954906111188, + 9.22459427913255, + 8.858613885156146 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement9", + "name": "measurement3 - A5", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 23.567069178207873, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 23.567069178207873, + 22.543313211273876, + 21.52450292533956, + 20.52547536340397, + 19.75394912745371, + 18.88845495250951, + 18.651062264524814, + 17.587740849593366, + 16.97942208663259, + 16.51947375366224, + 16.024905653694127 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement10", + "name": "measurement3 - B5", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 23.893484124186827, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 23.893484124186827, + 22.765868856259527, + 21.78662401832266, + 20.87167303338165, + 20.06552703043362, + 19.269272389484957, + 18.527420239532788, + 17.84491626157679, + 17.25143454161505, + 16.732138036648532, + 16.217787212681692 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement11", + "name": "measurement3 - C5", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 23.631363031203726, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 23.631363031203726, + 22.483965039277702, + 21.509665882340517, + 20.678791474394085, + 19.857808428447015, + 19.041771063499624, + 18.359267085543628, + 17.706437193585717, + 17.093172749625253, + 16.608496011656502, + 16.089199506689983 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement12", + "name": "measurement4 - A6", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 48.3498766676101, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 48.3498766676101, + 45.980895468762824, + 44.333983695869, + 42.88984484396211, + 41.64847891304214, + 40.35765617212536, + 39.29928043819359, + 38.24090470426183, + 37.32595371932082, + 36.45056818237725, + 35.62958513643019 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement13", + "name": "measurement4 - B6", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 48.15204942762285, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 48.15204942762285, + 45.99078683076219, + 44.29936392887124, + 42.756311456970714, + 41.46548871605394, + 40.20928574213493, + 39.032213664210815, + 38.038131783274906, + 37.133072160333256, + 36.35165456238363, + 35.580128326433375 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement14", + "name": "measurement4 - C6", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 48.2954741766136, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 48.2954741766136, + 46.27269064774401, + 44.73458385684318, + 43.27066228093756, + 42.04413339301664, + 40.94124653008773, + 39.783957176162346, + 38.78987529522644, + 37.84030454328766, + 36.94019060134569, + 36.27746934738842 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement15", + "name": "measurement5 - A7", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 72.99420508902124, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 72.99420508902124, + 69.77456675822881, + 67.65781529036528, + 65.85758740648134, + 64.19583859058848, + 62.64784043768828, + 61.149299094784894, + 59.84363931086907, + 58.64183882794656, + 57.59830013701383, + 56.539924403082075 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement16", + "name": "measurement5 - B7", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 72.67768150504163, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 72.67768150504163, + 69.7003815432336, + 67.56384735137134, + 65.78340219148612, + 64.22551267658658, + 62.6181663516902, + 61.20370158578138, + 59.93760724986302, + 59.02760194592169, + 57.77139897200267, + 56.68334915207282 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement17", + "name": "measurement5 - C7", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 72.92001987402602, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 72.92001987402602, + 70.04163353221159, + 67.85069684935284, + 66.06036032746827, + 64.57171034656425, + 62.949526978668835, + 61.6982696857495, + 60.63000258981838, + 59.279831676905424, + 58.18189049497621, + 57.222428381038064 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement18", + "name": "measurement6 - A8", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 97.33190128845216, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 97.33190128845216, + 93.6226405386913, + 91.03604937585806, + 88.7709274780041, + 86.79265507813163, + 84.86383948825599, + 83.06855728537174, + 81.57990730446771, + 80.17038821955859, + 78.82516298764531, + 77.54423160872788 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement19", + "name": "measurement6 - B8", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 95.83830562654845, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 95.83830562654845, + 92.89562543173817, + 90.46729606089472, + 88.45934957502418, + 86.50085989915044, + 84.79954563526013, + 82.9745893463778, + 81.61452707146547, + 80.20006230555667, + 78.96858773663607, + 77.61841682372311 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement20", + "name": "measurement6 - C8", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 97.50994580444068, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 97.50994580444068, + 93.7264998396846, + 91.20914821084689, + 89.09734242398305, + 87.19820092010549, + 85.40291871722123, + 83.74611558232806, + 82.38605330741574, + 81.06555648050087, + 79.75495101558536, + 78.5135850846654 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement21", + "name": "measurement7 - A9", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 146.36832840029072, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 146.36832840029072, + 140.82421999964814, + 137.31278648987453, + 135.01799050602247, + 133.3908614571274, + 131.01693457728044, + 128.06436302047078, + 127.05544409653582, + 125.32940142764711, + 123.811077360745, + 121.50144433389391 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement22", + "name": "measurement7 - B9", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 143.79162859945683, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 143.79162859945683, + 140.4137284766746, + 137.27816672287676, + 135.12679548801546, + 133.257328070136, + 131.09111979227566, + 128.6430076974335, + 127.28294542252118, + 125.39864096164266, + 123.60830443975809, + 122.04546924385885 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement23", + "name": "measurement7 - C9", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 145.94299983431813, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 145.94299983431813, + 141.17041766962583, + 137.8963768478369, + 135.79446242297243, + 133.34635032813026, + 131.29883839426228, + 129.33540303738883, + 127.21370588852562, + 125.517337305635, + 124.16716639272205, + 122.65378800681961 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + } + ] + } \ No newline at end of file From c9ed0d83d1239085afa4231c2c4671478d3523cd Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 23 May 2025 16:41:29 +0200 Subject: [PATCH 140/172] dont fail fast --- .github/workflows/unit-tests.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/unit-tests.yaml b/.github/workflows/unit-tests.yaml index 83a513ce..7b1d5a9b 100644 --- a/.github/workflows/unit-tests.yaml +++ b/.github/workflows/unit-tests.yaml @@ -7,6 +7,7 @@ jobs: runs-on: ubuntu-latest strategy: max-parallel: 4 + fail-fast: false matrix: python-version: ['3.10', '3.11', '3.12', '3.13'] From 18afd118718ed199a01ef0e0ed759176899b6ae3 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 23 May 2025 18:19:30 +0200 Subject: [PATCH 141/172] add interactive plot --- pyenzyme/__init__.py | 2 +- pyenzyme/plotting/__init__.py | 3 +- pyenzyme/plotting/interactive.py | 416 +++++++++++++++++++++++++++++++ pyproject.toml | 1 + tests/integration/test_psyces.py | 16 ++ 5 files changed, 436 insertions(+), 2 deletions(-) create mode 100644 pyenzyme/plotting/interactive.py diff --git a/pyenzyme/__init__.py b/pyenzyme/__init__.py index 737ff595..d86d5a15 100644 --- a/pyenzyme/__init__.py +++ b/pyenzyme/__init__.py @@ -7,7 +7,7 @@ from .fetcher import * # noqa: F403 from .composer import compose from .suite import EnzymeMLSuite -from .plotting import plot +from .plotting import plot, plot_interactive # Input functions from_csv = EnzymeMLHandler.from_csv diff --git a/pyenzyme/plotting/__init__.py b/pyenzyme/plotting/__init__.py index da96451c..1d413c78 100644 --- a/pyenzyme/plotting/__init__.py +++ b/pyenzyme/plotting/__init__.py @@ -1,3 +1,4 @@ from .static import plot +from .interactive import plot_interactive -__all__ = ["plot"] +__all__ = ["plot", "plot_interactive"] diff --git a/pyenzyme/plotting/interactive.py b/pyenzyme/plotting/interactive.py new file mode 100644 index 00000000..a6d44488 --- /dev/null +++ b/pyenzyme/plotting/interactive.py @@ -0,0 +1,416 @@ +from typing import List, Optional, Tuple, Dict + +from bokeh.models import TabPanel, Tabs, HoverTool, ColumnDataSource +from bokeh.plotting import figure, show as show_bokeh +from bokeh.io import output_file, output_notebook +from bokeh.palettes import Category10, Category20 +import rich + +from pyenzyme.thinlayers.base import BaseThinLayer, SimResult, Time +from pyenzyme.versions import v2 + +# Default figure dimensions +DEFAULT_WIDTH = 800 +DEFAULT_HEIGHT = 400 + + +def plot_interactive( + enzmldoc: v2.EnzymeMLDocument, + measurement_ids: Optional[list[str]] = None, + thinlayer: Optional[BaseThinLayer] = None, + out: Optional[str] = None, + width: int = DEFAULT_WIDTH, + height: int = DEFAULT_HEIGHT, + show: bool = True, + output_nb: bool = True, + **kwargs, +) -> Tabs: + """ + Creates interactive plots of measurement data from an EnzymeML document using Bokeh. + + This function generates plots for experimental measurements and optionally includes + model fits provided by a thinlayer. Each measurement is displayed in a separate + tab, with species data and their corresponding model fits if available. + + Parameters + ---------- + enzmldoc : v2.EnzymeMLDocument + The EnzymeML document containing measurement data to plot. + measurement_ids : Optional[list[str]], optional + List of specific measurement IDs to plot. If None, all measurements are plotted. + thinlayer : Optional[BaseThinLayer], optional + A thinlayer object providing model fits for the data. If provided, + fitting curves will be displayed alongside experimental data. + out : Optional[str], optional + File path to save the plot if desired. If provided, the plot is saved + as an HTML file. + width : int, optional + Width of the plot in pixels, by default 600. + height : int, optional + Height of the plot in pixels, by default 400. + render : bool, optional + Whether to immediately display the plot, by default True. + **kwargs + Additional keyword arguments passed to Bokeh plotting functions. + + Returns + ------- + Tabs + A Bokeh Tabs object containing all measurement plots. + + Examples + -------- + Basic usage with all measurements: + + >>> import pyenzyme as pe + >>> doc = pe.read_enzymeml("path/to/enzmldoc.json") + >>> tabs = pe.plot_interactive(enzmldoc=doc) + >>> show(tabs) # Display in a notebook or browser + + Using a thinlayer for model fitting: + + >>> import pyenzyme as pe + >>> import pyenzyme.thinlayers as tls + >>> doc = pe.read_enzymeml("path/to/enzmldoc.json") + >>> tl = tls.ThinLayerPysces(doc) + >>> tl.optimize() + >>> tabs = pe.plot_interactive( + ... enzmldoc=doc, + ... thinlayer=tl, + ... measurement_ids=["measurement0", "measurement1"], + ... out="interactive_plots.html" + ... ) + >>> show(tabs) # Display in a notebook or browser + """ + + is_nb = _is_notebook() + if output_nb and is_nb: + output_notebook() + + # Filter measurements based on provided IDs + if measurement_ids is None: + measurements = enzmldoc.measurements + else: + measurements = [m for m in enzmldoc.measurements if m.id in measurement_ids] + + # If an output file is specified, set it up + if out: + output_file(out) + + # Create a color map for consistent species colors across tabs + species_ids = set() + for measurement in measurements: + for species_data in measurement.species_data: + species_ids.add(species_data.species_id) + + # Choose a palette based on the number of species + num_species = len(species_ids) + if num_species <= 10: + palette = Category10[10] + else: + palette = Category20[20] + + # Make sure we have enough colors by cycling if needed + color_map = {} + for i, species_id in enumerate(sorted(species_ids)): + color_map[species_id] = palette[i % len(palette)] + + # Create tabs for each measurement + tabs = [] + for measurement in measurements: + # Create a tab for this measurement + tab = _create_measurement_tab( + enzmldoc, measurement, thinlayer, width, height, color_map, **kwargs + ) + tabs.append(tab) + + # Return the tabbed layout + tabs = Tabs(tabs=tabs) + + if show: + show_bokeh(tabs, notebook_handle=is_nb) + + if out: + rich.print(f"Saving plot to [bold green]{out}[/bold green]") + output_file(out) + + return tabs + + +def _is_notebook() -> bool: + """ + Check if the current environment is a Jupyter notebook. + + Returns + ------- + bool + True if running in a Jupyter notebook, False otherwise. + """ + try: + from IPython.core.getipython import get_ipython + + return get_ipython() is not None + except NameError: + return False + + +def _create_measurement_tab( + enzmldoc: v2.EnzymeMLDocument, + measurement: v2.Measurement, + thinlayer: Optional[BaseThinLayer], + width: int, + height: int, + color_map: Dict[str, str], + **kwargs, +) -> TabPanel: + """ + Create a tab panel for a single measurement. + + Parameters + ---------- + enzmldoc : v2.EnzymeMLDocument + The EnzymeML document containing the data. + measurement : v2.Measurement + The specific measurement to plot. + thinlayer : Optional[BaseThinLayer] + A thinlayer object providing model predictions, if available. + width : int + Width of the plot in pixels. + height : int + Height of the plot in pixels. + color_map : Dict[str, str] + Mapping from species ID to color for consistent coloring across tabs. + **kwargs + Additional keyword arguments passed to Bokeh plotting functions. + + Returns + ------- + TabPanel + A Bokeh TabPanel containing the plot for this measurement. + """ + # Sort species data by ID for consistent order + species_data = sorted( + [s for s in measurement.species_data], key=lambda x: x.species_id + ) + + # Get data types for y-axis label + dataytypes = _collect_dataytypes(species_data) + + # Create a figure for this measurement + p = figure( + width=width, + height=height, + title=measurement.name, + tools="pan,box_zoom,wheel_zoom,reset,save", + x_axis_label="Time", + y_axis_label=", ".join(dataytypes), + **kwargs, + ) + + # Style the plot + p.grid.grid_line_alpha = 0.3 + p.grid.grid_line_dash = [6, 4] + + # Add hover tool for interactive data inspection + hover = HoverTool( + tooltips=[ + ("Species", "@species"), + ("Time", "@time"), + ("Value", "@value"), + ("Type", "@data_type"), + ] + ) + p.add_tools(hover) + + # Get model predictions if available + if thinlayer: + pred, time = _get_fit(enzmldoc, measurement, thinlayer) + else: + pred, time = {}, [] + + # Plot each species + for species in species_data: + _plot_species_bokeh(p, species, pred, time, color_map, **kwargs) + + # Configure the legend + p.legend.location = "top_right" + p.legend.click_policy = "hide" # Allow toggling visibility by clicking + + # Return the tab panel + return TabPanel(child=p, title=measurement.name) + + +def _plot_species_bokeh( + p: figure, + species: v2.MeasurementData, + pred: SimResult, + time: List[float], + color_map: Dict[str, str], + **kwargs, +) -> None: + """ + Plot experimental data and model fit for a single species using Bokeh. + + Parameters + ---------- + p : figure + The Bokeh figure to plot on. + species : v2.MeasurementData + The measurement data for a specific species. + pred : Dict[str, List[float]] + Model predictions, if available. + time : List[float] + Time points for model predictions. + color_map : Dict[str, str] + Mapping from species ID to color for consistent coloring across tabs. + **kwargs + Additional keyword arguments passed to Bokeh plotting functions. + """ + # Get color for this species from the color map + color = color_map[species.species_id] + + # Plot experimental data if available + if len(species.data) > 0: + # Create a ColumnDataSource for hover tooltips + source = ColumnDataSource( + data={ + "time": species.time, + "value": species.data, + "species": [species.species_id] * len(species.time), + "data_type": [ + species.data_type.value if species.data_type else "Unknown" + ] + * len(species.time), + } + ) + + p.circle( + x="time", + y="value", + source=source, + radius=7, + color=color, + alpha=1.0, + legend_label=species.species_id, + **kwargs, + ) + + # Add model fit if available for this species + if species.species_id in pred: + # Create a ColumnDataSource for fit data with hover tooltips + fit_source = ColumnDataSource( + data={ + "time": time, + "value": pred[species.species_id], + "species": [f"{species.species_id} (fit)"] * len(time), + "data_type": ["Model prediction"] * len(time), + } + ) + + p.line( + x="time", + y="value", + source=fit_source, + line_width=1.5, + color=color, + alpha=1.0, + legend_label=f"{species.species_id} Fit", + **kwargs, + ) + + # If no experimental data but model fit is available + elif species.species_id in pred: + # Create a ColumnDataSource for fit data with hover tooltips + fit_source = ColumnDataSource( + data={ + "time": time, + "value": pred[species.species_id], + "species": [f"{species.species_id} (fit)"] * len(time), + "data_type": ["Model prediction"] * len(time), + } + ) + + p.line( + x="time", + y="value", + source=fit_source, + line_width=1.5, + color=color, + alpha=0.8, + legend_label=f"{species.species_id} Fit", + **kwargs, + ) + + +def _get_fit( + enzmldoc: v2.EnzymeMLDocument, + measurement: v2.Measurement, + thinlayer: BaseThinLayer, +) -> Tuple[SimResult, Time]: + """ + Get model predictions for a measurement using a thinlayer. + + Parameters + ---------- + enzmldoc : v2.EnzymeMLDocument + The EnzymeML document containing the data. + measurement : v2.Measurement + The measurement to generate predictions for. + thinlayer : BaseThinLayer + The thinlayer object providing integration capabilities. + + Returns + ------- + Tuple[Dict[str, List[float]], List[float]] + A tuple containing predictions for each species and the time points. + + Raises + ------ + ValueError + If time data is missing for all species in the measurement. + """ + # Get the initial conditions from the measurement + initial_conditions = { + s.species_id: s.initial for s in measurement.species_data if s.initial + } + + # Get the time points from the measurement + time = next((s.time for s in measurement.species_data if s.time), None) + + if time is None: + raise ValueError("Time is not set for any species in the measurement") + + t0, t1 = min(time), max(time) + + # Use thinlayer to integrate the model + return thinlayer.integrate( + model=enzmldoc, + initial_conditions=initial_conditions, + t0=t0, + t1=t1, + ) + + +def _collect_dataytypes(measurement_data: List[v2.MeasurementData]) -> List[str]: + """ + Extract and format unique measurement data types. + + Parameters + ---------- + measurement_data : List[v2.MeasurementData] + List of measurement data objects. + + Returns + ------- + List[str] + Unique, capitalized data types from measurements. + """ + return list( + set( + [ + s.data_type.value.capitalize() + for s in measurement_data + if s.data_type is not None + ] + ) + ) diff --git a/pyproject.toml b/pyproject.toml index 7152f46f..2eda7cfc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -20,6 +20,7 @@ pymetadata = "^0.5.3" httpx = ">=0.27" mdmodels = "^0.2.1" joblib = "^1.5.0" +bokeh = "^3.7.3" [tool.poetry.group.psyces.dependencies] pysces = "^1.2.3" diff --git a/tests/integration/test_psyces.py b/tests/integration/test_psyces.py index 4091a881..889d9d2b 100644 --- a/tests/integration/test_psyces.py +++ b/tests/integration/test_psyces.py @@ -1,3 +1,4 @@ +import os import tempfile import pytest @@ -62,6 +63,21 @@ def test_plot(self): assert fig is not None, "Figure is not created" assert axs is not None, "Axes are not created" + def test_plot_interactive(self): + with tempfile.TemporaryDirectory() as tmp_dir: + doc = pe.read_enzymeml("tests/fixtures/modeling/enzmldoc_reaction.json") + layer = ThinLayerPysces(doc, tmp_dir) + layer.optimize() + + out_file = "test.html" + pe.plot_interactive( + layer.enzmldoc, + thinlayer=layer, + output_nb=False, + show=False, + out=out_file, + ) + def test_compliance(self): doc = pe.read_enzymeml("tests/fixtures/modeling/enzmldoc.json") From ac316e198e10b2f59bb1a0a171a84c3ba8712d51 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 23 May 2025 18:20:19 +0200 Subject: [PATCH 142/172] fix linter error --- pyenzyme/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pyenzyme/__init__.py b/pyenzyme/__init__.py index d86d5a15..0d871a9b 100644 --- a/pyenzyme/__init__.py +++ b/pyenzyme/__init__.py @@ -36,4 +36,5 @@ "write_enzymeml", "compose", "plot", + "plot_interactive", ] From 62a4f154d112b5288d63b740e3ee61e477bea2b1 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 23 May 2025 18:26:30 +0200 Subject: [PATCH 143/172] check for `IPython` availability --- pyenzyme/plotting/interactive.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyenzyme/plotting/interactive.py b/pyenzyme/plotting/interactive.py index a6d44488..b5a36dc0 100644 --- a/pyenzyme/plotting/interactive.py +++ b/pyenzyme/plotting/interactive.py @@ -150,7 +150,7 @@ def _is_notebook() -> bool: from IPython.core.getipython import get_ipython return get_ipython() is not None - except NameError: + except ModuleNotFoundError: return False From f4f3a5f2172d3b059825bdc9b458ff95445ca8e4 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 23 May 2025 18:29:17 +0200 Subject: [PATCH 144/172] remove unused import --- tests/integration/test_psyces.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/integration/test_psyces.py b/tests/integration/test_psyces.py index 889d9d2b..ebbb6837 100644 --- a/tests/integration/test_psyces.py +++ b/tests/integration/test_psyces.py @@ -1,4 +1,3 @@ -import os import tempfile import pytest From 0644d4e6c3bf71356bd2f839f5e6869282d6468d Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Mon, 26 May 2025 01:03:34 +0200 Subject: [PATCH 145/172] add petab export --- pyenzyme/__init__.py | 1 + pyenzyme/petab/__init__.py | 3 + pyenzyme/petab/baserow.py | 16 + pyenzyme/petab/conditions.py | 68 + pyenzyme/petab/io.py | 124 + pyenzyme/petab/measurements.py | 104 + pyenzyme/petab/observables.py | 80 + pyenzyme/petab/parameters.py | 132 + pyenzyme/petab/petab.py | 78 + pyenzyme/versions/io.py | 16 + tests/fixtures/petab/abts_measurement.yaml | 11 + .../petab/abts_measurement_conditions.tsv | 25 + .../petab/abts_measurement_measurements.tsv | 265 + .../fixtures/petab/abts_measurement_model.xml | 454 ++ .../petab/abts_measurement_observables.tsv | 2 + .../petab/abts_measurement_parameters.tsv | 4 + tests/fixtures/petab/enzmldoc_reaction.json | 4416 +++++++++++++++++ tests/integration/test_petab.py | 282 ++ 18 files changed, 6081 insertions(+) create mode 100644 pyenzyme/petab/__init__.py create mode 100644 pyenzyme/petab/baserow.py create mode 100644 pyenzyme/petab/conditions.py create mode 100644 pyenzyme/petab/io.py create mode 100644 pyenzyme/petab/measurements.py create mode 100644 pyenzyme/petab/observables.py create mode 100644 pyenzyme/petab/parameters.py create mode 100644 pyenzyme/petab/petab.py create mode 100644 tests/fixtures/petab/abts_measurement.yaml create mode 100644 tests/fixtures/petab/abts_measurement_conditions.tsv create mode 100644 tests/fixtures/petab/abts_measurement_measurements.tsv create mode 100644 tests/fixtures/petab/abts_measurement_model.xml create mode 100644 tests/fixtures/petab/abts_measurement_observables.tsv create mode 100644 tests/fixtures/petab/abts_measurement_parameters.tsv create mode 100644 tests/fixtures/petab/enzmldoc_reaction.json create mode 100644 tests/integration/test_petab.py diff --git a/pyenzyme/__init__.py b/pyenzyme/__init__.py index 0d871a9b..f78a4ff9 100644 --- a/pyenzyme/__init__.py +++ b/pyenzyme/__init__.py @@ -20,6 +20,7 @@ # Output functions to_pandas = EnzymeMLHandler.to_pandas to_sbml = EnzymeMLHandler.to_sbml +to_petab = EnzymeMLHandler.to_petab write_enzymeml = EnzymeMLHandler.write_enzymeml __all__ = [ diff --git a/pyenzyme/petab/__init__.py b/pyenzyme/petab/__init__.py new file mode 100644 index 00000000..ea866269 --- /dev/null +++ b/pyenzyme/petab/__init__.py @@ -0,0 +1,3 @@ +from .io import to_petab + +__all__ = ["to_petab"] diff --git a/pyenzyme/petab/baserow.py b/pyenzyme/petab/baserow.py new file mode 100644 index 00000000..cc982db3 --- /dev/null +++ b/pyenzyme/petab/baserow.py @@ -0,0 +1,16 @@ +from typing import Any +from pydantic import BaseModel, ConfigDict + + +class BaseRow(BaseModel): + """ + Base class for all PEtab rows. + """ + + model_config = ConfigDict(use_enum_values=True) + + def to_row(self) -> dict[str, Any]: + """ + Converts the row to a dictionary suitable for a PEtab table row. + """ + return self.model_dump(by_alias=True, mode="json") diff --git a/pyenzyme/petab/conditions.py b/pyenzyme/petab/conditions.py new file mode 100644 index 00000000..51ccc909 --- /dev/null +++ b/pyenzyme/petab/conditions.py @@ -0,0 +1,68 @@ +from typing import Dict, Self, Any +from pydantic import Field + +from pyenzyme.versions import v2 +from .baserow import BaseRow + + +class ConditionRow(BaseRow): + """ + Represents a row in a PEtab conditions table. + + This class models experimental conditions with species initial concentrations + and other condition-specific parameters. + + Attributes: + condition_id: Unique identifier for the condition + condition_name: Human-readable name for the condition + species: Dictionary mapping species IDs to their initial concentrations + """ + + condition_id: str = Field(alias="conditionId") + condition_name: str = Field(alias="conditionName") + species: dict[str, float] = Field(default_factory=dict) + + def to_row(self) -> Dict[str, Any]: + """ + Converts the condition to a dictionary suitable for a PEtab conditions table row. + + Returns: + Dictionary with condition ID, name, and species initial concentrations + """ + return { + **self.model_dump(exclude={"species"}, by_alias=True), + **self.species, + } + + @classmethod + def from_measurements(cls, measurements: list[v2.Measurement]) -> list[Self]: + """ + Creates a list of ConditionRow objects from a list of PyEnzyme Measurement objects. + """ + return [cls.from_measurement(measurement) for measurement in measurements] + + @classmethod + def from_measurement(cls, measurement: v2.Measurement) -> Self: + """ + Creates a ConditionRow from a PyEnzyme Measurement object. + + This method extracts species initial concentrations from the measurement + and creates a corresponding condition row. + + Args: + measurement: PyEnzyme Measurement object containing species data + + Returns: + A new ConditionRow instance with data from the measurement + """ + inits = { + str(meas_data.species_id): meas_data.initial + for meas_data in measurement.species_data + if meas_data.initial is not None + } + + return cls( + conditionId=measurement.id, + conditionName=measurement.name, + species=inits, + ) diff --git a/pyenzyme/petab/io.py b/pyenzyme/petab/io.py new file mode 100644 index 00000000..3edb4018 --- /dev/null +++ b/pyenzyme/petab/io.py @@ -0,0 +1,124 @@ +from pathlib import Path +from typing import Union + +import pandas as pd +import yaml + +from pyenzyme.sbml.serializer import to_sbml +from pyenzyme.versions import v2 + +from .petab import PEtab, Problem +from .conditions import ConditionRow +from .observables import ObservableRow +from .measurements import MeasurementRow +from .parameters import ParameterRow + +# Default filenames for PEtab format components +PARAMETER_FILENAME = "parameters.tsv" +CONDITION_FILENAME = "conditions.tsv" +OBSERVABLE_FILENAME = "observables.tsv" +MEASUREMENT_FILENAME = "measurements.tsv" +SBML_FILENAME = "model.xml" + + +def to_petab(doc: v2.EnzymeMLDocument, path: Union[Path, str]) -> PEtab: + """ + Convert an EnzymeML document to a PEtab parameter estimation problem. + + This function exports an EnzymeML document to the PEtab format, which is a + standardized format for specifying parameter estimation problems in systems biology. + The function creates all necessary PEtab files: + + 1. SBML model file: Contains the mathematical model specification + 2. Condition table: Specifies experimental conditions + 3. Observable table: Defines model outputs that correspond to measurements + 4. Measurement table: Contains experimental data points + 5. Parameter table: Defines model parameters and their estimation settings + 6. YAML configuration file: Links all files together in a PEtab problem definition + + Parameters + ---------- + doc : v2.EnzymeMLDocument + The EnzymeML document to convert, containing all model information, + measurements, and parameters. + path : Union[Path, str] + Directory path where PEtab files will be written. If the directory + doesn't exist, it will be created. + + Returns + ------- + None + Files are written to the specified path. + + Notes + ----- + The file naming convention is based on the EnzymeML document name, + with spaces replaced by underscores and converted to lowercase. + """ + + if isinstance(path, str): + path = Path(path) + + if not path.exists(): + path.mkdir(parents=True) + + # Create paths for all PEtab files + name = doc.name.replace(" ", "_").lower() + meta_path = path / f"{name}.yaml" + condition_path = path / f"{name}_{CONDITION_FILENAME}" + observable_path = path / f"{name}_{OBSERVABLE_FILENAME}" + measurement_path = path / f"{name}_{MEASUREMENT_FILENAME}" + parameter_path = path / f"{name}_{PARAMETER_FILENAME}" + sbml_path = path / f"{name}_{SBML_FILENAME}" + + # Write SBML model file + with open(sbml_path, "w") as f: + sbml, _ = to_sbml(doc) + f.write(sbml) + + # Generate and write conditions table + pd.DataFrame( + [row.to_row() for row in ConditionRow.from_measurements(doc.measurements)], + ).to_csv(condition_path, index=False, sep="\t") + + # Generate and write observables table + pd.DataFrame( + [row.to_row() for row in ObservableRow.from_enzymeml(doc)], + ).to_csv(observable_path, index=False, sep="\t") + + # Generate and write measurements table + pd.DataFrame( + [row.to_row() for row in MeasurementRow.from_measurements(doc.measurements)], + ).to_csv(measurement_path, index=False, sep="\t") + + # Generate and write parameters table + pd.DataFrame( + [row.to_row() for row in ParameterRow.from_parameters(doc.parameters)], + ).to_csv(parameter_path, index=False, sep="\t") + + # Create PEtab configuration object + meta = PEtab( + format_version=1, + parameter_file=parameter_path, + problems=[ + Problem( + sbml_files=[sbml_path], + measurement_files=[measurement_path], + condition_files=[condition_path], + observable_files=[observable_path], + ) + ], + ) + + # Serialize configuration to YAML + with open(meta_path, "w") as f: + yaml.dump( + meta.model_dump( + mode="json", + by_alias=True, + exclude_none=True, + ), + f, + ) + + return meta diff --git a/pyenzyme/petab/measurements.py b/pyenzyme/petab/measurements.py new file mode 100644 index 00000000..25cd1f94 --- /dev/null +++ b/pyenzyme/petab/measurements.py @@ -0,0 +1,104 @@ +from typing import List, Self, Union +from pydantic import Field + +from pyenzyme.versions import v2 +from .baserow import BaseRow + + +class MeasurementRow(BaseRow): + """ + Represents a row in a PEtab measurements table. + + This class models experimental measurements with species initial concentrations + and other measurement-specific parameters. + + Attributes: + observable_id (str): The identifier of the observable being measured. + Maps to 'observableId' in the PEtab specification. + preequilibration_condition_id (str | None): The identifier of the preequilibration condition. + Maps to 'preequilibrationConditionId' in the PEtab specification. + Defaults to None if no preequilibration was performed. + condition_id (str): The identifier of the simulation condition. + Maps to 'simulationConditionId' in the PEtab specification. + measurement (float): The measured value of the observable. + Maps to 'measurement' in the PEtab specification. + time (float): The time point at which the measurement was taken. + Maps to 'time' in the PEtab specification. + observable_parameters (Union[str, float, None]): Parameters for the observable transformation. + Maps to 'observableParameters' in the PEtab specification. + Can be a parameter ID, a numeric value, or None if not applicable. + noise_parameters (Union[str, float, None]): Parameters for the noise model. + Maps to 'noiseParameters' in the PEtab specification. + Can be a parameter ID, a numeric value, or None if not applicable. + dataset_id (str | None): An identifier for the dataset this measurement belongs to. + Maps to 'datasetId' in the PEtab specification. + Useful for grouping measurements from the same experiment. + replicate_id (str | None): An identifier for the replicate this measurement belongs to. + Maps to 'replicateId' in the PEtab specification. + Useful for identifying repeated measurements under identical conditions. + """ + + observable_id: str = Field(alias="observableId") + preequilibration_condition_id: str | None = Field( + default=None, + alias="preequilibrationConditionId", + ) + condition_id: str = Field(alias="simulationConditionId") + measurement: float = Field(alias="measurement") + time: float = Field(alias="time") + observable_parameters: Union[str, float, None] = Field( + default=None, + alias="observableParameters", + ) + noise_parameters: Union[str, float, None] = Field( + default=None, + alias="noiseParameters", + ) + dataset_id: str | None = Field(alias="datasetId", default=None) + replicate_id: str | None = Field(alias="replicateId", default=None) + + @classmethod + def from_measurements(cls, measurements: list[v2.Measurement]) -> List[Self]: + """ + Convert a list of EnzymeML Measurement objects to a list of PEtab MeasurementRow objects. + """ + return [ + row + for measurement in measurements + for row in cls.from_measurement(measurement) + ] + + @classmethod + def from_measurement(cls, measurement: v2.Measurement) -> List[Self]: + """ + Convert an EnzymeML Measurement object to a list of PEtab MeasurementRow objects. + + This method extracts the time series data from a Measurement object and creates + individual MeasurementRow entries for each time point and corresponding data value. + + Args: + measurement (v2.Measurement): An EnzymeML Measurement object containing + species concentration time series data. + + Returns: + List[Self]: A list of MeasurementRow objects, each representing a single + data point from the original measurement. Each row contains the species ID, + measurement condition ID, the measured value, and the time point. + + Example: + If a Measurement contains data for species 'S1' with time points [0, 10, 20] + and corresponding values [1.0, 0.8, 0.6], this method will return three + MeasurementRow objects, one for each time-value pair. + """ + meas_rows = [] + for meas_data in measurement.species_data: + for t, x in zip(meas_data.time, meas_data.data): + meas_rows.append( + cls( + observableId=meas_data.species_id, + simulationConditionId=measurement.id, + measurement=x, + time=t, + ) + ) + return meas_rows diff --git a/pyenzyme/petab/observables.py b/pyenzyme/petab/observables.py new file mode 100644 index 00000000..d3043ab0 --- /dev/null +++ b/pyenzyme/petab/observables.py @@ -0,0 +1,80 @@ +from enum import Enum +from typing import Optional, Self +from pydantic import ConfigDict, Field + +from pyenzyme.versions import v2 +from .baserow import BaseRow + + +class Transformation(Enum): + LIN = "lin" + LOG = "log" + LOG10 = "log10" + + +class NoiseDistribution(Enum): + NORMAL = "normal" + LAPLACE = "laplace" + + +class ObservableRow(BaseRow): + model_config = ConfigDict(use_enum_values=True) + + observable_id: str = Field(alias="observableId") + observable_name: Optional[str] = Field(alias="observableName", default=None) + observable_formula: str = Field(alias="observableFormula") + observable_noise: Optional[float] = Field(alias="observableNoise", default=0.0) + observable_transformation: Transformation = Field( + alias="observableTransformation", + default=Transformation.LIN, + ) + noise_formula: Optional[str] = Field( + default=None, + alias="noiseFormula", + ) + noise_distribution: Optional[NoiseDistribution] = Field( + default=None, + alias="noiseDistribution", + ) + + @classmethod + def from_enzymeml(cls, enzmldoc: v2.EnzymeMLDocument) -> list[Self]: + """Extract observable rows from an EnzymeML document. + + Collects all species with data across measurements and creates observable rows. + """ + if not enzmldoc.measurements: + return [] + + # Get observables from first measurement + first_measurement = enzmldoc.measurements[0] + observables = { + meas_data.species_id + for meas_data in first_measurement.species_data + if meas_data.data + } + + for measurement in enzmldoc.measurements[1:]: + current_observables = { + meas_data.species_id + for meas_data in measurement.species_data + if meas_data.data + } + + missing = current_observables - observables + if missing: + raise ValueError( + f"Observable(s) {missing} not present in all measurements" + ) + + # Create observable rows + return [ + cls( + observableId=obs, + observableName=obs, + observableFormula=obs, + observableNoise=0.0, + observableTransformation=Transformation.LIN, + ) + for obs in observables + ] diff --git a/pyenzyme/petab/parameters.py b/pyenzyme/petab/parameters.py new file mode 100644 index 00000000..50b79892 --- /dev/null +++ b/pyenzyme/petab/parameters.py @@ -0,0 +1,132 @@ +from enum import Enum +from typing import List, Optional, Self +from pydantic import ConfigDict, Field, field_serializer, field_validator + +from pyenzyme.versions import v2 +from .baserow import BaseRow + + +class ParameterScale(Enum): + """ + Enumeration of parameter scaling options. + + Defines how parameters are scaled for optimization and fitting. + """ + + LOG = "log" + LOG10 = "log10" + LIN = "lin" + + +class PriorType(Enum): + """ + Enumeration of available prior distribution types. + + Defines the types of prior distributions that can be used for parameters + in Bayesian parameter estimation. + """ + + NORMAL = "normal" + UNIFORM = "uniform" + LAPLACE = "laplace" + LOGNORMAL = "lognormal" + LOGLAPLACE = "loglaplace" + PARAMETER_SCALE_UNIFORM = "parameterScaleUniform" + PARAMETER_SCALE_NORMAL = "parameterScaleNormal" + PARAMETER_SCALE_LAPLACE = "parameterScaleLaplace" + + +class ParameterRow(BaseRow): + """ + Represents a row in a PEtab parameters table. + + This class models parameter information including bounds, scales, and prior + distributions used for parameter estimation and optimization. + """ + + model_config = ConfigDict(use_enum_values=True) + + parameter_id: str = Field(alias="parameterId") + parameter_name: Optional[str] = Field(alias="parameterName", default=None) + parameter_scale: ParameterScale = Field( + default=ParameterScale.LIN, + alias="parameterScale", + ) + lower_bound: float = Field(alias="lowerBound") + upper_bound: float = Field(alias="upperBound") + nominal_value: Optional[float] = Field(alias="nominalValue", default=None) + estimate: bool = Field(alias="estimate", default=True) + initialization_prior_type: PriorType = Field( + default=PriorType.PARAMETER_SCALE_UNIFORM, + alias="initializationPriorType", + ) + initialization_prior_parameters: List[float] = Field( + default_factory=list, + alias="initializationPriorParameters", + ) + objective_prior_type: PriorType = Field( + default=PriorType.PARAMETER_SCALE_UNIFORM, + alias="objectivePriorType", + ) + objective_prior_parameters: List[float] = Field( + default_factory=list, + alias="objectivePriorParameters", + ) + + @field_serializer( + "objective_prior_parameters", + "initialization_prior_parameters", + ) + def serialize_prior_parameters(self, v: List[float]) -> str: + """ + Serializes a list of prior parameters into a semicolon-separated string. + + Args: + v: List of float values representing prior parameters + + Returns: + Semicolon-separated string of parameter values + """ + return ";".join(map(str, v)) + + @field_validator( + "objective_prior_parameters", + "initialization_prior_parameters", + mode="before", + ) + @classmethod + def validate_prior_parameters(cls, v: str) -> List[float]: + """ + Validates and converts a string of prior parameters into a list of floats. + + Args: + v: Semicolon-separated string of parameter values + + Returns: + List of float values parsed from the input string + """ + return [float(x) for x in v.split(";")] + + @classmethod + def from_parameters(cls, parameters: list[v2.Parameter]) -> list[Self]: + """ + Creates a list of ParameterRow objects from a list of PyEnzyme Parameter objects. + """ + return [cls.from_parameter(parameter) for parameter in parameters] + + @classmethod + def from_parameter(cls, parameter: v2.Parameter) -> Self: + """ + Creates a ParameterRow from a PyEnzyme Parameter object. + """ + if parameter.lower_bound is None or parameter.upper_bound is None: + raise ValueError("Parameter bounds are required") + + return cls( + parameterId=parameter.id, + parameterName=parameter.name, + parameterScale=ParameterScale.LIN, + lowerBound=parameter.lower_bound, + upperBound=parameter.upper_bound, + nominalValue=parameter.value, + ) diff --git a/pyenzyme/petab/petab.py b/pyenzyme/petab/petab.py new file mode 100644 index 00000000..b0b36a49 --- /dev/null +++ b/pyenzyme/petab/petab.py @@ -0,0 +1,78 @@ +from __future__ import annotations + +from pathlib import Path +from typing import List, Union, Optional +from pydantic import BaseModel, ConfigDict, Field + + +class PEtab(BaseModel): + """ + PEtab parameter estimation problem config file schema. + """ + + model_config = ConfigDict( + arbitrary_types_allowed=True, + ) + + format_version: int = Field( + default=1, + description="Version of the PEtab format. Only value 1 is supported.", + ) + + parameter_file: Union[Path, List[Path]] = Field( + description="File name (absolute or relative) or URL to PEtab parameter table " + "containing parameters of all models listed in `problems`. A single " + "table may be split into multiple files and described as an array here." + ) + problems: List[Problem] = Field( + default_factory=list, + description="One or multiple PEtab problems (sets of model, condition, observable " + "and measurement files). If different model and data files are " + "independent, they can be specified as separate PEtab problems, which " + "may allow more efficient handling. Files in one problem cannot refer " + "to models entities or data specified inside another problem.", + ) + + def add_problem( + self, + sbml_files: List[Path], + measurement_files: List[Path], + condition_files: List[Path], + observable_files: List[Path], + visualization_files: Optional[List[Path]] = None, + ) -> None: + """ + Add a problem to the PEtab object. + """ + self.problems.append( + Problem( + sbml_files=sbml_files, + measurement_files=measurement_files, + condition_files=condition_files, + observable_files=observable_files, + visualization_files=visualization_files, + ) + ) + + +class Problem(BaseModel): + """ + A set of PEtab model, condition, observable and measurement files and optional visualization files. + """ + + sbml_files: List[Path] = Field(description="List of PEtab SBML files.") + measurement_files: List[Path] = Field( + description="List of PEtab measurement files." + ) + condition_files: List[Path] = Field(description="List of PEtab condition files.") + observable_files: List[Path] = Field(description="List of PEtab observable files.") + visualization_files: Optional[List[Path]] = Field( + default=None, + description="List of PEtab visualization files.", + ) + + +# We need to rebuild the models to ensure +# the correct field names are used. +for cls in [PEtab, Problem]: + cls.model_rebuild() diff --git a/pyenzyme/versions/io.py b/pyenzyme/versions/io.py index ea1ddb38..7a26f74e 100644 --- a/pyenzyme/versions/io.py +++ b/pyenzyme/versions/io.py @@ -6,6 +6,8 @@ from pydantic import ValidationError import rich +from pyenzyme.petab.io import to_petab +from pyenzyme.petab.petab import PEtab from pyenzyme.sbml.serializer import to_sbml from pyenzyme.tabular import from_dataframe, read_csv, read_excel, to_pandas from pyenzyme.versions import v2 @@ -146,6 +148,20 @@ def to_sbml( """ return to_sbml(enzmldoc, path) + @classmethod + def to_petab( + cls, + enzmldoc: v2.EnzymeMLDocument, + path: Path | str, + ) -> PEtab: # noqa: F405 + """Convert an EnzymeML document to PEtab format and write to a file. + + Args: + enzmldoc: The EnzymeML document to convert + path: Path to write the PEtab document to + """ + return to_petab(enzmldoc, path) + @classmethod def from_sbml( cls, diff --git a/tests/fixtures/petab/abts_measurement.yaml b/tests/fixtures/petab/abts_measurement.yaml new file mode 100644 index 00000000..e61f54e1 --- /dev/null +++ b/tests/fixtures/petab/abts_measurement.yaml @@ -0,0 +1,11 @@ +format_version: 1 +parameter_file: tests/fixtures/petab/abts_measurement_parameters.tsv +problems: +- condition_files: + - tests/fixtures/petab/abts_measurement_conditions.tsv + measurement_files: + - tests/fixtures/petab/abts_measurement_measurements.tsv + observable_files: + - tests/fixtures/petab/abts_measurement_observables.tsv + sbml_files: + - tests/fixtures/petab/abts_measurement_model.xml diff --git a/tests/fixtures/petab/abts_measurement_conditions.tsv b/tests/fixtures/petab/abts_measurement_conditions.tsv new file mode 100644 index 00000000..9be0d967 --- /dev/null +++ b/tests/fixtures/petab/abts_measurement_conditions.tsv @@ -0,0 +1,25 @@ +conditionId conditionName buffer slac abts abts_radical slac_inactive +measurement0 measurement0 - A2 100.0 0.079037949 4.372881218445347 0.0 0.0 +measurement1 measurement0 - B2 100.0 0.079037949 4.595436863430999 0.0 0.0 +measurement2 measurement0 - C2 100.0 0.079037949 4.397609623443753 0.0 0.0 +measurement3 measurement1 - A3 100.0 0.079037949 9.288888132128404 0.0 0.0 +measurement4 measurement1 - B3 100.0 0.079037949 9.194920193134463 0.0 0.0 +measurement5 measurement1 - C3 100.0 0.079037949 9.13557202113829 0.0 0.0 +measurement6 measurement2 - A4 100.0 0.079037949 14.259297536807956 0.0 0.0 +measurement7 measurement2 - B4 100.0 0.079037949 14.120818468816886 0.0 0.0 +measurement8 measurement2 - C4 100.0 0.079037949 13.838914651835061 0.0 0.0 +measurement9 measurement3 - A5 100.0 0.079037949 23.567069178207873 0.0 0.0 +measurement10 measurement3 - B5 100.0 0.079037949 23.893484124186827 0.0 0.0 +measurement11 measurement3 - C5 100.0 0.079037949 23.631363031203726 0.0 0.0 +measurement12 measurement4 - A6 100.0 0.079037949 48.3498766676101 0.0 0.0 +measurement13 measurement4 - B6 100.0 0.079037949 48.15204942762285 0.0 0.0 +measurement14 measurement4 - C6 100.0 0.079037949 48.2954741766136 0.0 0.0 +measurement15 measurement5 - A7 100.0 0.079037949 72.99420508902124 0.0 0.0 +measurement16 measurement5 - B7 100.0 0.079037949 72.67768150504163 0.0 0.0 +measurement17 measurement5 - C7 100.0 0.079037949 72.92001987402602 0.0 0.0 +measurement18 measurement6 - A8 100.0 0.079037949 97.33190128845216 0.0 0.0 +measurement19 measurement6 - B8 100.0 0.079037949 95.83830562654845 0.0 0.0 +measurement20 measurement6 - C8 100.0 0.079037949 97.50994580444068 0.0 0.0 +measurement21 measurement7 - A9 100.0 0.079037949 146.36832840029072 0.0 0.0 +measurement22 measurement7 - B9 100.0 0.079037949 143.79162859945683 0.0 0.0 +measurement23 measurement7 - C9 100.0 0.079037949 145.94299983431813 0.0 0.0 diff --git a/tests/fixtures/petab/abts_measurement_measurements.tsv b/tests/fixtures/petab/abts_measurement_measurements.tsv new file mode 100644 index 00000000..932dd00d --- /dev/null +++ b/tests/fixtures/petab/abts_measurement_measurements.tsv @@ -0,0 +1,265 @@ +observableId preequilibrationConditionId simulationConditionId measurement time observableParameters noiseParameters datasetId replicateId +abts measurement0 4.372881218445347 0.0 +abts measurement0 4.051411953466072 87.0 +abts measurement0 3.9623896954718116 175.0 +abts measurement0 3.640920430492537 262.0 +abts measurement0 3.482658638502741 350.0 +abts measurement0 3.230428907519002 449.0 +abts measurement0 3.116678244526336 540.0 +abts measurement0 3.00292758153367 629.0 +abts measurement0 2.8051003415464244 720.0 +abts measurement0 2.6171644635585407 809.0 +abts measurement0 2.458902671568744 899.0 +abts measurement1 4.595436863430999 0.0 +abts measurement1 4.595436863430999 87.0 +abts measurement1 4.550925734433868 175.0 +abts measurement1 4.160216935459058 262.0 +abts measurement1 3.507387043501147 350.0 +abts measurement1 3.3145054845135817 449.0 +abts measurement1 3.428256147506248 540.0 +abts measurement1 3.3145054845135817 629.0 +abts measurement1 3.3145054845135817 720.0 +abts measurement1 3.185917778521872 809.0 +abts measurement1 2.9732534955355834 899.0 +abts measurement2 4.397609623443753 0.0 +abts measurement2 4.1701082974584205 87.0 +abts measurement2 3.937661290473406 175.0 +abts measurement2 3.6656488354909427 262.0 +abts measurement2 3.4925500005021024 350.0 +abts measurement2 3.166135054523147 449.0 +abts measurement2 2.993036219534307 540.0 +abts measurement2 2.844665789543873 629.0 +abts measurement2 2.6418928685569467 720.0 +abts measurement2 2.5281422055642806 809.0 +abts measurement2 2.364934732574802 899.0 +abts measurement3 9.288888132128404 0.0 +abts measurement3 8.700352093166348 87.0 +abts measurement3 8.245349441195682 175.0 +abts measurement3 7.780455427225656 262.0 +abts measurement3 7.340289818254034 350.0 +abts measurement3 6.939689657279861 449.0 +abts measurement3 6.5737092633034555 540.0 +abts measurement3 6.227511593325777 629.0 +abts measurement3 6.039575715337892 720.0 +abts measurement3 5.7972373463535165 809.0 +abts measurement3 5.465876719374879 899.0 +abts measurement4 9.194920193134463 0.0 +abts measurement4 8.631112559170813 87.0 +abts measurement4 8.161272864201104 175.0 +abts measurement4 7.760672703226931 262.0 +abts measurement4 7.350181180253396 350.0 +abts measurement4 6.949581019279223 449.0 +abts measurement4 6.613274711300906 540.0 +abts measurement4 6.281914084322269 629.0 +abts measurement4 5.9851732243414 720.0 +abts measurement4 5.7428348553570245 809.0 +abts measurement4 5.4906051243732845 899.0 +abts measurement5 9.13557202113829 0.0 +abts measurement5 8.680569369167623 87.0 +abts measurement5 8.289860570192813 175.0 +abts measurement5 7.864532004220235 262.0 +abts measurement5 7.4540404812467 350.0 +abts measurement5 7.1127884922687015 449.0 +abts measurement5 7.038603277273484 540.0 +abts measurement5 6.529198134306326 629.0 +abts measurement5 6.474795643309832 720.0 +abts measurement5 6.28685976532195 809.0 +abts measurement5 6.07419548233566 899.0 +abts measurement6 14.259297536807956 0.0 +abts measurement6 13.289944060870454 87.0 +abts measurement6 12.602494401914774 175.0 +abts measurement6 11.924936104958455 262.0 +abts measurement6 11.445205047989386 350.0 +abts measurement6 10.802266518030835 449.0 +abts measurement6 10.292861375063678 540.0 +abts measurement6 9.87742417109046 629.0 +abts measurement6 9.536172182112463 720.0 +abts measurement6 9.130626340138608 809.0 +abts measurement6 8.769591627161885 899.0 +abts measurement7 14.120818468816886 0.0 +abts measurement7 13.354237913866307 87.0 +abts measurement7 12.651951211911586 175.0 +abts measurement7 12.058469491949845 262.0 +abts measurement7 11.60346683997918 350.0 +abts measurement7 11.059441930014255 449.0 +abts measurement7 10.589602235044547 540.0 +abts measurement7 10.119762540074838 629.0 +abts measurement7 9.694433974102258 720.0 +abts measurement7 9.353181985124259 809.0 +abts measurement7 9.056441125143392 899.0 +abts measurement8 13.838914651835061 0.0 +abts measurement8 13.171247716878106 87.0 +abts measurement8 12.572820315916687 175.0 +abts measurement8 12.004067000953354 262.0 +abts measurement8 11.450150728989065 350.0 +abts measurement8 10.891288776025094 449.0 +abts measurement8 10.451123167053474 540.0 +abts measurement8 9.976337791084084 629.0 +abts measurement8 9.555954906111188 720.0 +abts measurement8 9.22459427913255 809.0 +abts measurement8 8.858613885156146 899.0 +abts measurement9 23.567069178207873 0.0 +abts measurement9 22.543313211273876 87.0 +abts measurement9 21.52450292533956 175.0 +abts measurement9 20.52547536340397 262.0 +abts measurement9 19.75394912745371 350.0 +abts measurement9 18.88845495250951 449.0 +abts measurement9 18.651062264524814 540.0 +abts measurement9 17.587740849593366 629.0 +abts measurement9 16.97942208663259 720.0 +abts measurement9 16.51947375366224 809.0 +abts measurement9 16.024905653694127 899.0 +abts measurement10 23.893484124186827 0.0 +abts measurement10 22.765868856259527 87.0 +abts measurement10 21.78662401832266 175.0 +abts measurement10 20.87167303338165 262.0 +abts measurement10 20.06552703043362 350.0 +abts measurement10 19.269272389484957 449.0 +abts measurement10 18.527420239532788 540.0 +abts measurement10 17.84491626157679 629.0 +abts measurement10 17.25143454161505 720.0 +abts measurement10 16.732138036648532 809.0 +abts measurement10 16.217787212681692 899.0 +abts measurement11 23.631363031203726 0.0 +abts measurement11 22.483965039277702 87.0 +abts measurement11 21.509665882340517 175.0 +abts measurement11 20.678791474394085 262.0 +abts measurement11 19.857808428447015 350.0 +abts measurement11 19.041771063499624 449.0 +abts measurement11 18.359267085543628 540.0 +abts measurement11 17.706437193585717 629.0 +abts measurement11 17.093172749625253 720.0 +abts measurement11 16.608496011656502 809.0 +abts measurement11 16.089199506689983 899.0 +abts measurement12 48.3498766676101 0.0 +abts measurement12 45.980895468762824 87.0 +abts measurement12 44.333983695869 175.0 +abts measurement12 42.88984484396211 262.0 +abts measurement12 41.64847891304214 350.0 +abts measurement12 40.35765617212536 449.0 +abts measurement12 39.29928043819359 540.0 +abts measurement12 38.24090470426183 629.0 +abts measurement12 37.32595371932082 720.0 +abts measurement12 36.45056818237725 809.0 +abts measurement12 35.62958513643019 899.0 +abts measurement13 48.15204942762285 0.0 +abts measurement13 45.99078683076219 87.0 +abts measurement13 44.29936392887124 175.0 +abts measurement13 42.756311456970714 262.0 +abts measurement13 41.46548871605394 350.0 +abts measurement13 40.20928574213493 449.0 +abts measurement13 39.032213664210815 540.0 +abts measurement13 38.038131783274906 629.0 +abts measurement13 37.133072160333256 720.0 +abts measurement13 36.35165456238363 809.0 +abts measurement13 35.580128326433375 899.0 +abts measurement14 48.2954741766136 0.0 +abts measurement14 46.27269064774401 87.0 +abts measurement14 44.73458385684318 175.0 +abts measurement14 43.27066228093756 262.0 +abts measurement14 42.04413339301664 350.0 +abts measurement14 40.94124653008773 449.0 +abts measurement14 39.783957176162346 540.0 +abts measurement14 38.78987529522644 629.0 +abts measurement14 37.84030454328766 720.0 +abts measurement14 36.94019060134569 809.0 +abts measurement14 36.27746934738842 899.0 +abts measurement15 72.99420508902124 0.0 +abts measurement15 69.77456675822881 87.0 +abts measurement15 67.65781529036528 175.0 +abts measurement15 65.85758740648134 262.0 +abts measurement15 64.19583859058848 350.0 +abts measurement15 62.64784043768828 449.0 +abts measurement15 61.149299094784894 540.0 +abts measurement15 59.84363931086907 629.0 +abts measurement15 58.64183882794656 720.0 +abts measurement15 57.59830013701383 809.0 +abts measurement15 56.539924403082075 899.0 +abts measurement16 72.67768150504163 0.0 +abts measurement16 69.7003815432336 87.0 +abts measurement16 67.56384735137134 175.0 +abts measurement16 65.78340219148612 262.0 +abts measurement16 64.22551267658658 350.0 +abts measurement16 62.6181663516902 449.0 +abts measurement16 61.20370158578138 540.0 +abts measurement16 59.93760724986302 629.0 +abts measurement16 59.02760194592169 720.0 +abts measurement16 57.77139897200267 809.0 +abts measurement16 56.68334915207282 899.0 +abts measurement17 72.92001987402602 0.0 +abts measurement17 70.04163353221159 87.0 +abts measurement17 67.85069684935284 175.0 +abts measurement17 66.06036032746827 262.0 +abts measurement17 64.57171034656425 350.0 +abts measurement17 62.949526978668835 449.0 +abts measurement17 61.6982696857495 540.0 +abts measurement17 60.63000258981838 629.0 +abts measurement17 59.279831676905424 720.0 +abts measurement17 58.18189049497621 809.0 +abts measurement17 57.222428381038064 899.0 +abts measurement18 97.33190128845216 0.0 +abts measurement18 93.6226405386913 87.0 +abts measurement18 91.03604937585806 175.0 +abts measurement18 88.7709274780041 262.0 +abts measurement18 86.79265507813163 350.0 +abts measurement18 84.86383948825599 449.0 +abts measurement18 83.06855728537174 540.0 +abts measurement18 81.57990730446771 629.0 +abts measurement18 80.17038821955859 720.0 +abts measurement18 78.82516298764531 809.0 +abts measurement18 77.54423160872788 899.0 +abts measurement19 95.83830562654845 0.0 +abts measurement19 92.89562543173817 87.0 +abts measurement19 90.46729606089472 175.0 +abts measurement19 88.45934957502418 262.0 +abts measurement19 86.50085989915044 350.0 +abts measurement19 84.79954563526013 449.0 +abts measurement19 82.9745893463778 540.0 +abts measurement19 81.61452707146547 629.0 +abts measurement19 80.20006230555667 720.0 +abts measurement19 78.96858773663607 809.0 +abts measurement19 77.61841682372311 899.0 +abts measurement20 97.50994580444068 0.0 +abts measurement20 93.7264998396846 87.0 +abts measurement20 91.20914821084689 175.0 +abts measurement20 89.09734242398305 262.0 +abts measurement20 87.19820092010549 350.0 +abts measurement20 85.40291871722123 449.0 +abts measurement20 83.74611558232806 540.0 +abts measurement20 82.38605330741574 629.0 +abts measurement20 81.06555648050087 720.0 +abts measurement20 79.75495101558536 809.0 +abts measurement20 78.5135850846654 899.0 +abts measurement21 146.36832840029072 0.0 +abts measurement21 140.82421999964814 87.0 +abts measurement21 137.31278648987453 175.0 +abts measurement21 135.01799050602247 262.0 +abts measurement21 133.3908614571274 350.0 +abts measurement21 131.01693457728044 449.0 +abts measurement21 128.06436302047078 540.0 +abts measurement21 127.05544409653582 629.0 +abts measurement21 125.32940142764711 720.0 +abts measurement21 123.811077360745 809.0 +abts measurement21 121.50144433389391 899.0 +abts measurement22 143.79162859945683 0.0 +abts measurement22 140.4137284766746 87.0 +abts measurement22 137.27816672287676 175.0 +abts measurement22 135.12679548801546 262.0 +abts measurement22 133.257328070136 350.0 +abts measurement22 131.09111979227566 449.0 +abts measurement22 128.6430076974335 540.0 +abts measurement22 127.28294542252118 629.0 +abts measurement22 125.39864096164266 720.0 +abts measurement22 123.60830443975809 809.0 +abts measurement22 122.04546924385885 899.0 +abts measurement23 145.94299983431813 0.0 +abts measurement23 141.17041766962583 87.0 +abts measurement23 137.8963768478369 175.0 +abts measurement23 135.79446242297243 262.0 +abts measurement23 133.34635032813026 350.0 +abts measurement23 131.29883839426228 449.0 +abts measurement23 129.33540303738883 540.0 +abts measurement23 127.21370588852562 629.0 +abts measurement23 125.517337305635 720.0 +abts measurement23 124.16716639272205 809.0 +abts measurement23 122.65378800681961 899.0 diff --git a/tests/fixtures/petab/abts_measurement_model.xml b/tests/fixtures/petab/abts_measurement_model.xml new file mode 100644 index 00000000..f0d24d7c --- /dev/null +++ b/tests/fixtures/petab/abts_measurement_model.xml @@ -0,0 +1,454 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + vessel0 + 1.0 + + + + + + + + + + + + + slac + + + + + + + + + + + slac_inactive + + + + + + + + + + + abts + + + + + + + + + + buffer + + + + + + + + + + abts_radical + + + + + + + + + + + + + + + + 1e-06 + 2.0 + + + + + + + + + + + + + 1e-06 + 150.0 + + + + + + + + + + + + + 1e-06 + 0.05 + + + + + + + + + + + + + + + + + + + + k_cat + slac + abts + + + + K_M + abts + + + + + + + + + + + + + + + + + k_ie + slac + + + + + + + diff --git a/tests/fixtures/petab/abts_measurement_observables.tsv b/tests/fixtures/petab/abts_measurement_observables.tsv new file mode 100644 index 00000000..aea4aa0d --- /dev/null +++ b/tests/fixtures/petab/abts_measurement_observables.tsv @@ -0,0 +1,2 @@ +observableId observableName observableFormula observableNoise observableTransformation noiseFormula noiseDistribution +abts abts abts 0.0 lin diff --git a/tests/fixtures/petab/abts_measurement_parameters.tsv b/tests/fixtures/petab/abts_measurement_parameters.tsv new file mode 100644 index 00000000..0c951958 --- /dev/null +++ b/tests/fixtures/petab/abts_measurement_parameters.tsv @@ -0,0 +1,4 @@ +parameterId parameterName parameterScale lowerBound upperBound nominalValue estimate initializationPriorType initializationPriorParameters objectivePriorType objectivePriorParameters +k_cat k_cat lin 1e-06 2.0 1.85 True parameterScaleUniform parameterScaleUniform +K_M K_M lin 1e-06 150.0 20.0 True parameterScaleUniform parameterScaleUniform +k_ie k_ie lin 1e-06 0.05 0.001 True parameterScaleUniform parameterScaleUniform diff --git a/tests/fixtures/petab/enzmldoc_reaction.json b/tests/fixtures/petab/enzmldoc_reaction.json new file mode 100644 index 00000000..4b2192b2 --- /dev/null +++ b/tests/fixtures/petab/enzmldoc_reaction.json @@ -0,0 +1,4416 @@ +{ + "name": "ABTS measurement", + "references": [], + "created": null, + "modified": null, + "creators": [], + "vessels": [ + { + "id": "vessel0", + "name": "vessel0", + "volume": 1.0, + "unit": { + "id": "l", + "name": "l", + "base_units": [ + { + "kind": "litre", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + } + } + ], + "proteins": [ + { + "id": "slac", + "name": "slac", + "constant": false, + "sequence": null, + "vessel_id": "vessel0", + "ecnumber": null, + "organism": null, + "organism_tax_id": null, + "references": [] + }, + { + "id": "slac_inactive", + "name": "slac_inactive", + "constant": false, + "sequence": null, + "vessel_id": "vessel0", + "ecnumber": null, + "organism": null, + "organism_tax_id": null, + "references": [] + } + ], + "small_molecules": [ + { + "id": "abts", + "name": "abts", + "constant": false, + "vessel_id": "vessel0", + "canonical_smiles": null, + "inchi": null, + "inchikey": null, + "references": [] + }, + { + "id": "buffer", + "name": "buffer", + "constant": false, + "vessel_id": "vessel0", + "canonical_smiles": null, + "inchi": null, + "inchikey": null, + "references": [] + }, + { + "id": "abts_radical", + "name": "abts_radical", + "constant": false, + "vessel_id": "vessel0", + "canonical_smiles": null, + "inchi": null, + "inchikey": null, + "references": [] + } + ], + "reactions": [ + { + "id": "reaction0", + "name": "reaction0", + "reversible": false, + "reactants": [ + { + "species_id": "abts", + "stoichiometry": 1.0 + } + ], + "products": [ + { + "species_id": "abts_radical", + "stoichiometry": 1.0 + } + ], + "kinetic_law": { + "species_id": "slac_oxidation", + "equation": "k_cat * slac * abts / (K_M + abts)", + "equation_type": "rateLaw" + } + }, + { + "id": "reaction1", + "name": "reaction1", + "reversible": false, + "reactants": [ + { + "species_id": "slac", + "stoichiometry": 1.0 + } + ], + "products": [ + { + "species_id": "slac_inactive", + "stoichiometry": 1.0 + } + ], + "kinetic_law": { + "species_id": "slac_inactivation", + "equation": "k_ie * slac", + "equation_type": "rateLaw" + } + } + ], + "parameters": [ + { + "id": "k_cat", + "name": "k_cat", + "symbol": "k_cat", + "value": 1.85, + "unit": null, + "initial_value": 0.01, + "upper_bound": 2.0, + "lower_bound": 1e-06, + "stderr": null, + "constant": true + }, + { + "id": "K_M", + "name": "K_M", + "symbol": "K_M", + "value": 20.0, + "unit": null, + "initial_value": 120.0, + "upper_bound": 150.0, + "lower_bound": 1e-06, + "stderr": null, + "constant": true + }, + { + "id": "k_ie", + "name": "k_ie", + "symbol": "k_ie", + "value": 0.001, + "unit": null, + "initial_value": 0.01, + "upper_bound": 0.05, + "lower_bound": 1e-06, + "stderr": null, + "constant": true + } + ], + "measurements": [ + { + "id": "measurement0", + "name": "measurement0 - A2", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 4.372881218445347, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 4.372881218445347, + 4.051411953466072, + 3.9623896954718116, + 3.640920430492537, + 3.482658638502741, + 3.230428907519002, + 3.116678244526336, + 3.00292758153367, + 2.8051003415464244, + 2.6171644635585407, + 2.458902671568744 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement1", + "name": "measurement0 - B2", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 4.595436863430999, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 4.595436863430999, + 4.595436863430999, + 4.550925734433868, + 4.160216935459058, + 3.507387043501147, + 3.3145054845135817, + 3.428256147506248, + 3.3145054845135817, + 3.3145054845135817, + 3.185917778521872, + 2.9732534955355834 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement2", + "name": "measurement0 - C2", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 4.397609623443753, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 4.397609623443753, + 4.1701082974584205, + 3.937661290473406, + 3.6656488354909427, + 3.4925500005021024, + 3.166135054523147, + 2.993036219534307, + 2.844665789543873, + 2.6418928685569467, + 2.5281422055642806, + 2.364934732574802 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement3", + "name": "measurement1 - A3", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 9.288888132128404, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 9.288888132128404, + 8.700352093166348, + 8.245349441195682, + 7.780455427225656, + 7.340289818254034, + 6.939689657279861, + 6.5737092633034555, + 6.227511593325777, + 6.039575715337892, + 5.7972373463535165, + 5.465876719374879 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement4", + "name": "measurement1 - B3", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 9.194920193134463, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 9.194920193134463, + 8.631112559170813, + 8.161272864201104, + 7.760672703226931, + 7.350181180253396, + 6.949581019279223, + 6.613274711300906, + 6.281914084322269, + 5.9851732243414, + 5.7428348553570245, + 5.4906051243732845 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement5", + "name": "measurement1 - C3", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 9.13557202113829, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 9.13557202113829, + 8.680569369167623, + 8.289860570192813, + 7.864532004220235, + 7.4540404812467, + 7.1127884922687015, + 7.038603277273484, + 6.529198134306326, + 6.474795643309832, + 6.28685976532195, + 6.07419548233566 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement6", + "name": "measurement2 - A4", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 14.259297536807956, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 14.259297536807956, + 13.289944060870454, + 12.602494401914774, + 11.924936104958455, + 11.445205047989386, + 10.802266518030835, + 10.292861375063678, + 9.87742417109046, + 9.536172182112463, + 9.130626340138608, + 8.769591627161885 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement7", + "name": "measurement2 - B4", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 14.120818468816886, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 14.120818468816886, + 13.354237913866307, + 12.651951211911586, + 12.058469491949845, + 11.60346683997918, + 11.059441930014255, + 10.589602235044547, + 10.119762540074838, + 9.694433974102258, + 9.353181985124259, + 9.056441125143392 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement8", + "name": "measurement2 - C4", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 13.838914651835061, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 13.838914651835061, + 13.171247716878106, + 12.572820315916687, + 12.004067000953354, + 11.450150728989065, + 10.891288776025094, + 10.451123167053474, + 9.976337791084084, + 9.555954906111188, + 9.22459427913255, + 8.858613885156146 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement9", + "name": "measurement3 - A5", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 23.567069178207873, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 23.567069178207873, + 22.543313211273876, + 21.52450292533956, + 20.52547536340397, + 19.75394912745371, + 18.88845495250951, + 18.651062264524814, + 17.587740849593366, + 16.97942208663259, + 16.51947375366224, + 16.024905653694127 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement10", + "name": "measurement3 - B5", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 23.893484124186827, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 23.893484124186827, + 22.765868856259527, + 21.78662401832266, + 20.87167303338165, + 20.06552703043362, + 19.269272389484957, + 18.527420239532788, + 17.84491626157679, + 17.25143454161505, + 16.732138036648532, + 16.217787212681692 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement11", + "name": "measurement3 - C5", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 23.631363031203726, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 23.631363031203726, + 22.483965039277702, + 21.509665882340517, + 20.678791474394085, + 19.857808428447015, + 19.041771063499624, + 18.359267085543628, + 17.706437193585717, + 17.093172749625253, + 16.608496011656502, + 16.089199506689983 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement12", + "name": "measurement4 - A6", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 48.3498766676101, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 48.3498766676101, + 45.980895468762824, + 44.333983695869, + 42.88984484396211, + 41.64847891304214, + 40.35765617212536, + 39.29928043819359, + 38.24090470426183, + 37.32595371932082, + 36.45056818237725, + 35.62958513643019 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement13", + "name": "measurement4 - B6", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 48.15204942762285, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 48.15204942762285, + 45.99078683076219, + 44.29936392887124, + 42.756311456970714, + 41.46548871605394, + 40.20928574213493, + 39.032213664210815, + 38.038131783274906, + 37.133072160333256, + 36.35165456238363, + 35.580128326433375 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement14", + "name": "measurement4 - C6", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 48.2954741766136, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 48.2954741766136, + 46.27269064774401, + 44.73458385684318, + 43.27066228093756, + 42.04413339301664, + 40.94124653008773, + 39.783957176162346, + 38.78987529522644, + 37.84030454328766, + 36.94019060134569, + 36.27746934738842 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement15", + "name": "measurement5 - A7", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 72.99420508902124, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 72.99420508902124, + 69.77456675822881, + 67.65781529036528, + 65.85758740648134, + 64.19583859058848, + 62.64784043768828, + 61.149299094784894, + 59.84363931086907, + 58.64183882794656, + 57.59830013701383, + 56.539924403082075 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement16", + "name": "measurement5 - B7", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 72.67768150504163, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 72.67768150504163, + 69.7003815432336, + 67.56384735137134, + 65.78340219148612, + 64.22551267658658, + 62.6181663516902, + 61.20370158578138, + 59.93760724986302, + 59.02760194592169, + 57.77139897200267, + 56.68334915207282 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement17", + "name": "measurement5 - C7", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 72.92001987402602, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 72.92001987402602, + 70.04163353221159, + 67.85069684935284, + 66.06036032746827, + 64.57171034656425, + 62.949526978668835, + 61.6982696857495, + 60.63000258981838, + 59.279831676905424, + 58.18189049497621, + 57.222428381038064 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement18", + "name": "measurement6 - A8", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 97.33190128845216, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 97.33190128845216, + 93.6226405386913, + 91.03604937585806, + 88.7709274780041, + 86.79265507813163, + 84.86383948825599, + 83.06855728537174, + 81.57990730446771, + 80.17038821955859, + 78.82516298764531, + 77.54423160872788 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement19", + "name": "measurement6 - B8", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 95.83830562654845, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 95.83830562654845, + 92.89562543173817, + 90.46729606089472, + 88.45934957502418, + 86.50085989915044, + 84.79954563526013, + 82.9745893463778, + 81.61452707146547, + 80.20006230555667, + 78.96858773663607, + 77.61841682372311 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement20", + "name": "measurement6 - C8", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 97.50994580444068, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 97.50994580444068, + 93.7264998396846, + 91.20914821084689, + 89.09734242398305, + 87.19820092010549, + 85.40291871722123, + 83.74611558232806, + 82.38605330741574, + 81.06555648050087, + 79.75495101558536, + 78.5135850846654 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement21", + "name": "measurement7 - A9", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 146.36832840029072, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 146.36832840029072, + 140.82421999964814, + 137.31278648987453, + 135.01799050602247, + 133.3908614571274, + 131.01693457728044, + 128.06436302047078, + 127.05544409653582, + 125.32940142764711, + 123.811077360745, + 121.50144433389391 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement22", + "name": "measurement7 - B9", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 143.79162859945683, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 143.79162859945683, + 140.4137284766746, + 137.27816672287676, + 135.12679548801546, + 133.257328070136, + 131.09111979227566, + 128.6430076974335, + 127.28294542252118, + 125.39864096164266, + 123.60830443975809, + 122.04546924385885 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + }, + { + "id": "measurement23", + "name": "measurement7 - C9", + "species_data": [ + { + "species_id": "buffer", + "prepared": null, + "initial": 100.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac", + "prepared": null, + "initial": 0.079037949, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts", + "prepared": null, + "initial": 145.94299983431813, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data": [ + 145.94299983431813, + 141.17041766962583, + 137.8963768478369, + 135.79446242297243, + 133.34635032813026, + 131.29883839426228, + 129.33540303738883, + 127.21370588852562, + 125.517337305635, + 124.16716639272205, + 122.65378800681961 + ], + "time": [ + 0.0, + 87.0, + 175.0, + 262.0, + 350.0, + 449.0, + 540.0, + 629.0, + 720.0, + 809.0, + 899.0 + ], + "time_unit": { + "id": "s", + "name": "s", + "base_units": [ + { + "kind": "second", + "exponent": 1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "abts_radical", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "umol / l", + "name": "umol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -6.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + }, + { + "species_id": "slac_inactive", + "prepared": null, + "initial": 0.0, + "data_unit": { + "id": "mmol / l", + "name": "mmol / l", + "base_units": [ + { + "kind": "mole", + "exponent": 1, + "multiplier": 1.0, + "scale": -3.0 + }, + { + "kind": "litre", + "exponent": -1, + "multiplier": 1.0, + "scale": 0.0 + } + ] + }, + "time_unit": null, + "data_type": "concentration", + "is_simulated": false + } + ], + "group_id": null, + "ph": null, + "temperature": null, + "temperature_unit": null + } + ] + } \ No newline at end of file diff --git a/tests/integration/test_petab.py b/tests/integration/test_petab.py new file mode 100644 index 00000000..bd5b4994 --- /dev/null +++ b/tests/integration/test_petab.py @@ -0,0 +1,282 @@ +import re +import tempfile +import pytest + +import pyenzyme as pe +from pyenzyme.petab.conditions import ConditionRow +from pyenzyme.petab.measurements import MeasurementRow +from pyenzyme.petab.observables import ObservableRow +from pyenzyme.petab.parameters import ParameterRow, PriorType + + +class TestPEtab: + def test_to_petab(self): + # Arrange + doc = pe.read_enzymeml("tests/fixtures/petab/enzmldoc_reaction.json") + + # Act + with tempfile.TemporaryDirectory() as tmp_dir: + meta = pe.to_petab(doc, tmp_dir) + problem = meta.problems[0] + sbml_path = problem.sbml_files[0] + condition_path = problem.condition_files[0] + observable_path = problem.observable_files[0] + measurement_path = problem.measurement_files[0] + + if isinstance(meta.parameter_file, list): + raise ValueError( + "Parameter file is a list, but should be a single file" + ) + else: + parameter_path = meta.parameter_file + + # Assert + expected_sbml = self._remove_uuid( + open("tests/fixtures/petab/abts_measurement_model.xml").read() + ) + expected_condition = open( + "tests/fixtures/petab/abts_measurement_conditions.tsv" + ).read() + expected_observable = open( + "tests/fixtures/petab/abts_measurement_observables.tsv" + ).read() + expected_measurement = open( + "tests/fixtures/petab/abts_measurement_measurements.tsv" + ).read() + expected_parameter = open( + "tests/fixtures/petab/abts_measurement_parameters.tsv" + ).read() + + assert expected_sbml == self._remove_uuid(sbml_path.read_text()) + assert expected_condition == condition_path.read_text() + assert expected_observable == observable_path.read_text() + assert expected_measurement == measurement_path.read_text() + assert expected_parameter == parameter_path.read_text() + + def _remove_uuid(self, s: str) -> str: + return re.sub( + r"[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", + "", + s, + ) + + +class TestConditionRow: + def test_from_measurement(self): + # Arrange + measurement = pe.Measurement( + id="condition_1", + name="condition_1", + ) + + measurement.add_to_species_data( + species_id="species_1", + initial=1.0, + ) + + measurement.add_to_species_data( + species_id="species_2", + initial=2.0, + ) + + measurement.add_to_species_data( + species_id="species_3", + initial=None, + ) + + # Act + condition = ConditionRow.from_measurement(measurement) + + # Assert + assert condition.condition_id == "condition_1" + assert condition.condition_name == "condition_1" + assert condition.species["species_1"] == 1.0 + assert condition.species["species_2"] == 2.0 + assert "species_3" not in condition.species + + def test_to_row(self): + # Arrange + condition = ConditionRow( + conditionId="condition_1", + conditionName="condition_1", + species={ + "species_1": 1.0, + "species_2": 2.0, + }, + ) + + # Act + row = condition.to_row() + + # Assert + assert row["conditionId"] == "condition_1" + assert row["conditionName"] == "condition_1" + assert row["species_1"] == 1.0 + assert row["species_2"] == 2.0 + + +class TestMeasurementRow: + def test_from_measurement(self): + # Arrange + measurement = pe.Measurement( + id="measurement_1", + name="measurement_1", + ) + + measurement.add_to_species_data( + species_id="species_1", + initial=1.0, + data=[1.0, 2.0, 3.0], + time=[0.0, 1.0, 2.0], + ) + + # Act + meas_rows = MeasurementRow.from_measurement(measurement) + + # Assert + assert len(meas_rows) == 3 + + expected_data = [ + (0.0, 1.0), + (1.0, 2.0), + (2.0, 3.0), + ] + + for meas_row, (t, x) in zip(meas_rows, expected_data): + assert meas_row.observable_id == "species_1" + assert meas_row.condition_id == "measurement_1" + assert meas_row.measurement == x + assert meas_row.time == t + + +class TestObservableRow: + def test_from_enzymeml(self): + # Arrange + enzmldoc = pe.EnzymeMLDocument(name="test") + + # Add species + meas = enzmldoc.add_to_measurements( + id="measurement_1", + name="measurement_1", + ) + + meas.add_to_species_data( + species_id="species_1", + initial=1.0, + data=[1.0, 2.0, 3.0], + time=[0.0, 1.0, 2.0], + ) + + meas.add_to_species_data( + species_id="species_2", + initial=2.0, + data=[1.0, 2.0, 3.0], + time=[0.0, 1.0, 2.0], + ) + + # Not observable + meas.add_to_species_data( + species_id="species_3", + initial=3.0, + ) + + # Act + obs_rows = ObservableRow.from_enzymeml(enzmldoc) + obs_rows.sort(key=lambda x: x.observable_id) + + # Assert + assert len(obs_rows) == 2 + assert obs_rows[0].observable_id == "species_1" + assert obs_rows[1].observable_id == "species_2" + + def test_from_enzymeml_missing_observable(self): + # Arrange + enzmldoc = pe.EnzymeMLDocument(name="test") + + # Add species + meas1 = enzmldoc.add_to_measurements( + id="measurement_1", + name="measurement_1", + ) + + meas1.add_to_species_data( + species_id="species_1", + initial=1.0, + data=[1.0, 2.0, 3.0], + time=[0.0, 1.0, 2.0], + ) + + meas1.add_to_species_data( + species_id="species_2", + initial=2.0, + data=[1.0, 2.0, 3.0], + time=[0.0, 1.0, 2.0], + ) + + # Create a second measurement with a different species + meas2 = enzmldoc.add_to_measurements( + id="measurement_2", + name="measurement_2", + ) + + meas2.add_to_species_data( + species_id="species_1", + initial=1.0, + data=[1.0, 2.0, 3.0], + time=[0.0, 1.0, 2.0], + ) + + meas2.add_to_species_data( + species_id="species_3", + initial=3.0, + data=[1.0, 2.0, 3.0], + time=[0.0, 1.0, 2.0], + ) + + # Act + with pytest.raises(ValueError): + ObservableRow.from_enzymeml(enzmldoc) + + +class TestParameterRow: + def test_from_parameter_missing_bounds(self): + # Arrange + parameter = pe.Parameter( + id="parameter_1", + symbol="parameter_1", + name="parameter_1", + value=1.0, + ) + + # Act + with pytest.raises(ValueError): + ParameterRow.from_parameter(parameter) + + def test_from_parameter(self): + # Arrange + parameter = pe.Parameter( + id="parameter_1", + symbol="parameter_1", + name="parameter_1", + value=1.0, + lower_bound=0.0, + upper_bound=1.0, + ) + + # Act + parameter_row = ParameterRow.from_parameter(parameter) + + # Assert + assert parameter_row.parameter_id == "parameter_1" + assert parameter_row.parameter_name == "parameter_1" + assert parameter_row.parameter_scale == "lin" + assert parameter_row.lower_bound == 0.0 + assert parameter_row.upper_bound == 1.0 + assert parameter_row.nominal_value == 1.0 + assert parameter_row.estimate is True + assert ( + parameter_row.initialization_prior_type == PriorType.PARAMETER_SCALE_UNIFORM + ) + assert parameter_row.initialization_prior_parameters == [] + assert parameter_row.objective_prior_type == PriorType.PARAMETER_SCALE_UNIFORM + assert parameter_row.objective_prior_parameters == [] From 4c2dd7884e1b83a4bbe4130918b4850454a1b478 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Mon, 26 May 2025 01:20:39 +0200 Subject: [PATCH 146/172] fix 3.10 missing `Self` --- pyenzyme/petab/conditions.py | 8 +++++--- pyenzyme/petab/measurements.py | 10 ++++++---- pyenzyme/petab/observables.py | 4 ++-- pyenzyme/petab/parameters.py | 6 +++--- 4 files changed, 16 insertions(+), 12 deletions(-) diff --git a/pyenzyme/petab/conditions.py b/pyenzyme/petab/conditions.py index 51ccc909..0953c9b8 100644 --- a/pyenzyme/petab/conditions.py +++ b/pyenzyme/petab/conditions.py @@ -1,4 +1,4 @@ -from typing import Dict, Self, Any +from typing import Dict, Any from pydantic import Field from pyenzyme.versions import v2 @@ -35,14 +35,16 @@ def to_row(self) -> Dict[str, Any]: } @classmethod - def from_measurements(cls, measurements: list[v2.Measurement]) -> list[Self]: + def from_measurements( + cls, measurements: list[v2.Measurement] + ) -> list["ConditionRow"]: """ Creates a list of ConditionRow objects from a list of PyEnzyme Measurement objects. """ return [cls.from_measurement(measurement) for measurement in measurements] @classmethod - def from_measurement(cls, measurement: v2.Measurement) -> Self: + def from_measurement(cls, measurement: v2.Measurement) -> "ConditionRow": """ Creates a ConditionRow from a PyEnzyme Measurement object. diff --git a/pyenzyme/petab/measurements.py b/pyenzyme/petab/measurements.py index 25cd1f94..586f46d6 100644 --- a/pyenzyme/petab/measurements.py +++ b/pyenzyme/petab/measurements.py @@ -1,4 +1,4 @@ -from typing import List, Self, Union +from typing import List, Union from pydantic import Field from pyenzyme.versions import v2 @@ -58,7 +58,9 @@ class MeasurementRow(BaseRow): replicate_id: str | None = Field(alias="replicateId", default=None) @classmethod - def from_measurements(cls, measurements: list[v2.Measurement]) -> List[Self]: + def from_measurements( + cls, measurements: list[v2.Measurement] + ) -> List["MeasurementRow"]: """ Convert a list of EnzymeML Measurement objects to a list of PEtab MeasurementRow objects. """ @@ -69,7 +71,7 @@ def from_measurements(cls, measurements: list[v2.Measurement]) -> List[Self]: ] @classmethod - def from_measurement(cls, measurement: v2.Measurement) -> List[Self]: + def from_measurement(cls, measurement: v2.Measurement) -> List["MeasurementRow"]: """ Convert an EnzymeML Measurement object to a list of PEtab MeasurementRow objects. @@ -81,7 +83,7 @@ def from_measurement(cls, measurement: v2.Measurement) -> List[Self]: species concentration time series data. Returns: - List[Self]: A list of MeasurementRow objects, each representing a single + List["MeasurementRow"]: A list of MeasurementRow objects, each representing a single data point from the original measurement. Each row contains the species ID, measurement condition ID, the measured value, and the time point. diff --git a/pyenzyme/petab/observables.py b/pyenzyme/petab/observables.py index d3043ab0..00a5afc1 100644 --- a/pyenzyme/petab/observables.py +++ b/pyenzyme/petab/observables.py @@ -1,5 +1,5 @@ from enum import Enum -from typing import Optional, Self +from typing import List, Optional from pydantic import ConfigDict, Field from pyenzyme.versions import v2 @@ -38,7 +38,7 @@ class ObservableRow(BaseRow): ) @classmethod - def from_enzymeml(cls, enzmldoc: v2.EnzymeMLDocument) -> list[Self]: + def from_enzymeml(cls, enzmldoc: v2.EnzymeMLDocument) -> List["ObservableRow"]: """Extract observable rows from an EnzymeML document. Collects all species with data across measurements and creates observable rows. diff --git a/pyenzyme/petab/parameters.py b/pyenzyme/petab/parameters.py index 50b79892..108ca9d4 100644 --- a/pyenzyme/petab/parameters.py +++ b/pyenzyme/petab/parameters.py @@ -1,5 +1,5 @@ from enum import Enum -from typing import List, Optional, Self +from typing import List, Optional from pydantic import ConfigDict, Field, field_serializer, field_validator from pyenzyme.versions import v2 @@ -108,14 +108,14 @@ def validate_prior_parameters(cls, v: str) -> List[float]: return [float(x) for x in v.split(";")] @classmethod - def from_parameters(cls, parameters: list[v2.Parameter]) -> list[Self]: + def from_parameters(cls, parameters: List[v2.Parameter]) -> List["ParameterRow"]: """ Creates a list of ParameterRow objects from a list of PyEnzyme Parameter objects. """ return [cls.from_parameter(parameter) for parameter in parameters] @classmethod - def from_parameter(cls, parameter: v2.Parameter) -> Self: + def from_parameter(cls, parameter: v2.Parameter) -> "ParameterRow": """ Creates a ParameterRow from a PyEnzyme Parameter object. """ From 9d64c1106942df431bdde3f134267917e221943d Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Sun, 1 Jun 2025 11:57:22 +0200 Subject: [PATCH 147/172] add footer --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 2bb0b931..325bb70b 100644 --- a/README.md +++ b/README.md @@ -137,3 +137,9 @@ docker run pyenzyme `PyEnzyme` is free and open-source software licensed under the [BSD 2-Clause License](https://github.com/EnzymeML/PyEnzyme/blob/main/LICENSE). + +--- + +
+Made with ❤️ by the EnzymeML Team +
\ No newline at end of file From 1ace1299085cb3ea4cdd6a68df5458be8c8aa002 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Sat, 14 Jun 2025 15:21:41 +0200 Subject: [PATCH 148/172] add `matplotlib` dep --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 2eda7cfc..911e3f45 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -21,6 +21,7 @@ httpx = ">=0.27" mdmodels = "^0.2.1" joblib = "^1.5.0" bokeh = "^3.7.3" +matplotlib = "^3.10" [tool.poetry.group.psyces.dependencies] pysces = "^1.2.3" From fc89c859f9ddd955da01d819be225bb01a179c7e Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 25 Jul 2025 19:09:40 +0200 Subject: [PATCH 149/172] Remove model rebuild loop from v2.py Deleted the loop that called model_rebuild() on several classes at the end of v2.py. This cleanup removes unnecessary code execution during module import. --- pyenzyme/versions/v2.py | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/pyenzyme/versions/v2.py b/pyenzyme/versions/v2.py index 2ed3f0d1..ff7f19b5 100644 --- a/pyenzyme/versions/v2.py +++ b/pyenzyme/versions/v2.py @@ -2431,23 +2431,3 @@ class DataTypes(Enum): TRANSMITTANCE = "transmittance" TURNOVER = "turnover" YIELD = "yield" - - -# Rebuild all the classes within this file -for cls in [ - EnzymeMLDocument, - Creator, - Vessel, - Protein, - Complex, - SmallMolecule, - Reaction, - ReactionElement, - ModifierElement, - Equation, - Variable, - Parameter, - Measurement, - MeasurementData, -]: - cls.model_rebuild() From d1d5ff02dd0b4e18306c9dd9507e2d2bd1269efe Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 25 Jul 2025 19:09:47 +0200 Subject: [PATCH 150/172] Handle empty XML string in extract_namespaces Updated extract_namespaces to raise ValueError when the input XML string is empty, improving input validation and error handling. --- pyenzyme/xmlutils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyenzyme/xmlutils.py b/pyenzyme/xmlutils.py index f4fa58af..25c954eb 100644 --- a/pyenzyme/xmlutils.py +++ b/pyenzyme/xmlutils.py @@ -143,7 +143,7 @@ def extract_namespaces(xml_string: str | None) -> set[str]: set[str]: A set of namespace URIs. """ - if xml_string is None: + if xml_string is None or xml_string == "": raise ValueError("No XML string provided") pattern = r"\{(.*)\}" From 3484638832bbccab00430ae9f1fc9f8aadf8a400 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 25 Jul 2025 19:10:06 +0200 Subject: [PATCH 151/172] Update XML fixture for EnzymeML compatibility Added EnzymeML namespace to the SBML root element and changed all speciesData 'type' attributes from uppercase 'CONCENTRATION' to lowercase 'concentration' for consistency and compatibility with EnzymeML standards. --- .../fixtures/petab/abts_measurement_model.xml | 242 +++++++++--------- 1 file changed, 121 insertions(+), 121 deletions(-) diff --git a/tests/fixtures/petab/abts_measurement_model.xml b/tests/fixtures/petab/abts_measurement_model.xml index f0d24d7c..bfdb5c0f 100644 --- a/tests/fixtures/petab/abts_measurement_model.xml +++ b/tests/fixtures/petab/abts_measurement_model.xml @@ -1,5 +1,5 @@ - + @@ -8,264 +8,264 @@ - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + From c240abbae1cad7b231383279b270ea29462e9d7a Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 25 Jul 2025 19:10:48 +0200 Subject: [PATCH 152/172] Improve SBML serialization and data type handling Adds XML namespaces and package requirements to SBML documents, refines data type mapping in v2.py to support both enum names and values, and ensures annotations exclude None values during XML serialization. Also sets default species data type to CONCENTRATION using enum value. --- pyenzyme/sbml/serializer.py | 12 ++++++++++-- pyenzyme/sbml/versions/v2.py | 12 ++++++------ 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/pyenzyme/sbml/serializer.py b/pyenzyme/sbml/serializer.py index 521ddfb2..68607213 100644 --- a/pyenzyme/sbml/serializer.py +++ b/pyenzyme/sbml/serializer.py @@ -66,6 +66,13 @@ def to_sbml( doc = deepcopy(enzmldoc) sbmldoc = libsbml.SBMLDocument() + + ns = libsbml.XMLNamespaces() + ns.add(NSMAP["enzymeml"], "enzymeml") + + sbmldoc.setNamespaces(ns) + sbmldoc.setPackageRequired("enzymeml", True) + model = sbmldoc.createModel() model.setName(doc.name) units = _assign_ids_to_units(tools.find_unique(doc, pe.UnitDefinition)) @@ -499,7 +506,8 @@ def _add_measurements(measurements: list[pe.Measurement]): if species_data.data_type is None: data_type = None else: - data_type = species_data.data_type.name + print(species_data.data_type) + data_type = species_data.data_type.value species_annot = v2.SpeciesDataAnnot( species_id=species_data.species_id, @@ -513,7 +521,7 @@ def _add_measurements(measurements: list[pe.Measurement]): annot.measurements.append(meas_annot) if not annot.is_empty(): - model.appendAnnotation(annot.to_xml(encoding="unicode")) + model.appendAnnotation(annot.to_xml(encoding="unicode", exclude_none=True)) def _create_condition_element( diff --git a/pyenzyme/sbml/versions/v2.py b/pyenzyme/sbml/versions/v2.py index f35d6069..e54dd517 100644 --- a/pyenzyme/sbml/versions/v2.py +++ b/pyenzyme/sbml/versions/v2.py @@ -370,7 +370,7 @@ def _map_species_data( ) @staticmethod - def _map_data_type(dtype: str): + def _map_data_type(dtype: str) -> str: """ Maps a string data type to a DataTypes enum value. @@ -383,10 +383,10 @@ def _map_data_type(dtype: str): Raises: ValueError: If the data type is not supported. """ - if data_type := getattr(DataTypes, dtype, None): - return data_type - else: - raise ValueError(f"Data type '{dtype}' not supported") + for data_type in DataTypes: + if data_type.value == dtype or data_type.name == dtype: + return data_type.value + raise ValueError(f"Data type '{dtype}' not supported") class SpeciesDataAnnot( @@ -410,7 +410,7 @@ class SpeciesDataAnnot( species_id: str = attr(name="species") initial: float | None = attr(name="value", default=None) - type: str | None = attr(name="type", default="CONCENTRATION") + type: str | None = attr(name="type", default=DataTypes.CONCENTRATION.value) unit: str = attr(name="unit") From 87a7753d8e217e39ab0429280dfaff96008ff7bc Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 25 Jul 2025 19:10:52 +0200 Subject: [PATCH 153/172] Fix ThinLayerPysces import path in test Updated the import statement in test_psyces.py to use the correct module path for ThinLayerPysces, ensuring tests run without import errors. --- tests/integration/test_psyces.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/integration/test_psyces.py b/tests/integration/test_psyces.py index ebbb6837..1a98c4b0 100644 --- a/tests/integration/test_psyces.py +++ b/tests/integration/test_psyces.py @@ -2,7 +2,7 @@ import pytest import pyenzyme as pe -from pyenzyme.thinlayers import ThinLayerPysces +from pyenzyme.thinlayers.psyces import ThinLayerPysces from pyenzyme.versions import v2 From 6a41af3b2a46a0189547f042dfd7579be1c7385a Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 25 Jul 2025 19:10:58 +0200 Subject: [PATCH 154/172] Remove redundant references type check in suite.py Eliminated unnecessary code that checked and converted 'references' to a list in the EnzymeMLSuite class. This simplifies the logic as the type check is no longer needed. --- pyenzyme/suite.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/pyenzyme/suite.py b/pyenzyme/suite.py index 96491036..217126dd 100644 --- a/pyenzyme/suite.py +++ b/pyenzyme/suite.py @@ -42,9 +42,6 @@ def get_current(self) -> pe.EnzymeMLDocument: content = response.json()["data"]["content"] - if not isinstance(content["references"], list): - content["references"] = [] - return pe.read_enzymeml_from_string(content) def update_current(self, doc: pe.EnzymeMLDocument): From 8651561f7cb289e82f1bc8195194bfd56944de06 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Fri, 25 Jul 2025 19:11:04 +0200 Subject: [PATCH 155/172] Make Python version configurable in Dockerfile Introduced PYTHON_VERSION build argument to allow specifying the Python version when building the Docker image. --- Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 6c7549c0..2103ee9a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,5 @@ -FROM python:3.11.9-slim-bullseye +ARG PYTHON_VERSION=3.11.9 +FROM python:${PYTHON_VERSION}-slim-bullseye RUN apt-get update RUN pip install poetry From f92a394990fff057196b3ca625057cc7da05570a Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Tue, 29 Jul 2025 14:40:36 +0200 Subject: [PATCH 156/172] Remove unused --- examples/Basic example/CreateEnzymeML.ipynb | 998 - .../EnzymeML_Template_Example.xlsm | Bin 98309 -> 0 bytes examples/Basic example/My_Experiment.json | 351 - examples/Basic example/My_Experiment.omex | Bin 4196 -> 0 bytes .../Dataverse/EnzymeML_Template_Example.xlsm | Bin 98309 -> 0 bytes examples/Dataverse/UploadToDataverse.ipynb | 86 - ...3IZNOK_TEST.xml-sbml_conversion_errors.txt | 1 - .../BioCatNet/DMBA_selfligation.xlsx | Bin 130158 -> 0 bytes ...igation_of_3,5-dimethoxy-benzaldehyde.omex | Bin 17406 -> 0 bytes .../ThinLayers/COPASI/3IZNOK_Simulated.omex | Bin 701441 -> 0 bytes .../COPASI/3IZNOK_TEST_init_values.yaml | 12 - examples/ThinLayers/COPASI/Model_4.omex | Bin 9086 -> 0 bytes examples/ThinLayers/COPASI/Model_4_init.yaml | 75 - .../COPASI/Modeled_r0_s1/3IZNOK_TEST.omex | Bin 9720 -> 0 bytes .../COPASI/Modeled_r0_s1/3IZNOK_TEST.xml | 246 - .../COPASI/Modeled_r0_s1/3IZNOK_TEST.xml.psc | 40 - .../Modeled_r0_s1/3IZNOK_TEST/3IZNOK_TEST.cps | 1079 - .../COPASI/Modeled_r0_s1/3IZNOK_TEST/m0.tsv | 7201 - .../COPASI/Modeled_r0_s1/3IZNOK_TEST/m1.tsv | 7201 - .../COPASI/Modeled_r0_s1/3IZNOK_TEST/m2.tsv | 7201 - .../COPASI/Modeled_r0_s1/3IZNOK_TEST/m3.tsv | 7201 - .../COPASI/Modeled_r0_s1/3IZNOK_TEST/m4.tsv | 7201 - .../COPASI/Modeled_r0_s1/3IZNOK_TEST/m5.tsv | 7201 - .../COPASI/Modeled_r0_s1/3IZNOK_TEST/m6.tsv | 7201 - .../COPASI/Modeled_r0_s1/3IZNOK_TEST/m7.tsv | 7201 - .../COPASI/Modeled_r0_s1/3IZNOK_TEST/m8.tsv | 7201 - examples/ThinLayers/COPASI/PGM-ENO.omex | Bin 58795 -> 0 bytes examples/ThinLayers/COPASI/Untitled.ipynb | 217668 --------------- examples/ThinLayers/STRENDA/3IZNOK_TEST.xml | 61 - .../STRENDA/Generated/3IZNOK_TEST.omex | Bin 3302 -> 0 bytes .../STRENDADB_to_COPASI_Modeling.ipynb | 554 - examples/ThinLayers/TL_BioCatNet.py | 587 - .../ThinLayers/_pys3IZNOKTESTxml_parsetab.py | 105 - .../EnzymeML_Validation_Template.xlsx | Bin 10340 -> 0 bytes .../EnzymeML_Validation_Template.yaml | 823 - .../EnzymeML_Validation_Template_Example.xlsx | Bin 14293 -> 0 bytes .../EnzymeML_Validation_Template_Example.yaml | 823 - examples/Validation/Model_4.omex | Bin 13024 -> 0 bytes examples/Validation/ValidateEnzymeML.ipynb | 263 - examples/Validation/example_doc.json | 217 - examples/Visualisation/Model_4.omex | Bin 13024 -> 0 bytes examples/Visualisation/Visualisation.ipynb | 5962 - 42 files changed, 294760 deletions(-) delete mode 100644 examples/Basic example/CreateEnzymeML.ipynb delete mode 100644 examples/Basic example/EnzymeML_Template_Example.xlsm delete mode 100644 examples/Basic example/My_Experiment.json delete mode 100644 examples/Basic example/My_Experiment.omex delete mode 100644 examples/Dataverse/EnzymeML_Template_Example.xlsm delete mode 100644 examples/Dataverse/UploadToDataverse.ipynb delete mode 100644 examples/ThinLayers/3IZNOK_TEST.xml-sbml_conversion_errors.txt delete mode 100644 examples/ThinLayers/BioCatNet/DMBA_selfligation.xlsx delete mode 100644 examples/ThinLayers/BioCatNet/Self-ligation_of_3,5-dimethoxy-benzaldehyde.omex delete mode 100644 examples/ThinLayers/COPASI/3IZNOK_Simulated.omex delete mode 100644 examples/ThinLayers/COPASI/3IZNOK_TEST_init_values.yaml delete mode 100644 examples/ThinLayers/COPASI/Model_4.omex delete mode 100644 examples/ThinLayers/COPASI/Model_4_init.yaml delete mode 100644 examples/ThinLayers/COPASI/Modeled_r0_s1/3IZNOK_TEST.omex delete mode 100644 examples/ThinLayers/COPASI/Modeled_r0_s1/3IZNOK_TEST.xml delete mode 100644 examples/ThinLayers/COPASI/Modeled_r0_s1/3IZNOK_TEST.xml.psc delete mode 100644 examples/ThinLayers/COPASI/Modeled_r0_s1/3IZNOK_TEST/3IZNOK_TEST.cps delete mode 100644 examples/ThinLayers/COPASI/Modeled_r0_s1/3IZNOK_TEST/m0.tsv delete mode 100644 examples/ThinLayers/COPASI/Modeled_r0_s1/3IZNOK_TEST/m1.tsv delete mode 100644 examples/ThinLayers/COPASI/Modeled_r0_s1/3IZNOK_TEST/m2.tsv delete mode 100644 examples/ThinLayers/COPASI/Modeled_r0_s1/3IZNOK_TEST/m3.tsv delete mode 100644 examples/ThinLayers/COPASI/Modeled_r0_s1/3IZNOK_TEST/m4.tsv delete mode 100644 examples/ThinLayers/COPASI/Modeled_r0_s1/3IZNOK_TEST/m5.tsv delete mode 100644 examples/ThinLayers/COPASI/Modeled_r0_s1/3IZNOK_TEST/m6.tsv delete mode 100644 examples/ThinLayers/COPASI/Modeled_r0_s1/3IZNOK_TEST/m7.tsv delete mode 100644 examples/ThinLayers/COPASI/Modeled_r0_s1/3IZNOK_TEST/m8.tsv delete mode 100644 examples/ThinLayers/COPASI/PGM-ENO.omex delete mode 100644 examples/ThinLayers/COPASI/Untitled.ipynb delete mode 100644 examples/ThinLayers/STRENDA/3IZNOK_TEST.xml delete mode 100644 examples/ThinLayers/STRENDA/Generated/3IZNOK_TEST.omex delete mode 100644 examples/ThinLayers/STRENDADB_to_COPASI_Modeling.ipynb delete mode 100644 examples/ThinLayers/TL_BioCatNet.py delete mode 100644 examples/ThinLayers/_pys3IZNOKTESTxml_parsetab.py delete mode 100644 examples/Validation/EnzymeML_Validation_Template.xlsx delete mode 100644 examples/Validation/EnzymeML_Validation_Template.yaml delete mode 100644 examples/Validation/EnzymeML_Validation_Template_Example.xlsx delete mode 100644 examples/Validation/EnzymeML_Validation_Template_Example.yaml delete mode 100644 examples/Validation/Model_4.omex delete mode 100644 examples/Validation/ValidateEnzymeML.ipynb delete mode 100644 examples/Validation/example_doc.json delete mode 100644 examples/Visualisation/Model_4.omex delete mode 100644 examples/Visualisation/Visualisation.ipynb diff --git a/examples/Basic example/CreateEnzymeML.ipynb b/examples/Basic example/CreateEnzymeML.ipynb deleted file mode 100644 index 9bfc350b..00000000 --- a/examples/Basic example/CreateEnzymeML.ipynb +++ /dev/null @@ -1,998 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "da2d0343-e5ae-4beb-8386-be55db5e3409", - "metadata": {}, - "source": [ - "$$\\require{mhchem}$$" - ] - }, - { - "cell_type": "markdown", - "id": "515b1663-1f09-4085-ade9-bacd0fcbcb74", - "metadata": {}, - "source": [ - "## Initializing an EnzymeML document\n", - "\n", - "In order to write an EnzymeML document it needs to be initialized by calling the ```EnzymeMLDocument``` object. At this point it is possible to add metadata such as a name, URL, DOI or PubmedID to the document. In addition, it is necessary but not mandatory to add author information. Please note, that for a Dataverse upload adding an author is mandatory though.\n", - "\n", - "\n", - "- ```EnzymeMLDocument``` is the container object that stores all experiment information based on sub classes.\n", - "- ```Creator``` carries the metadata about an author.\n", - "- ```addCreator``` adds a ```Creator``` object to the ```EnzymeMLdocument```" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "4957907c-c9c7-4258-a3c7-f1fd8af99307", - "metadata": {}, - "outputs": [], - "source": [ - "import pyenzyme as pe" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "b8876130-0057-466e-878f-5de0c7e7f871", - "metadata": {}, - "outputs": [], - "source": [ - "# Initialize the EnzymeML document\n", - "enzmldoc = pe.EnzymeMLDocument(name=\"Experiment\")\n", - "\n", - "# Add authors to the document\n", - "author = pe.Creator(given_name=\"Max\", family_name=\"Mustermann\", mail=\"max@mustermann.de\")\n", - "author_id = enzmldoc.addCreator(author)" - ] - }, - { - "cell_type": "markdown", - "id": "57d0e052-8f07-4b40-b73f-cd4e2e3e64c1", - "metadata": {}, - "source": [ - "-------" - ] - }, - { - "cell_type": "markdown", - "id": "822cd223-92dd-4194-90b8-7c32a80755df", - "metadata": {}, - "source": [ - "## Documentation of a simple single substrate reaction\n", - "\n", - "PyEnzyme is capable to document complete experiments from planning to execution, modelling and ultimately database upload. For this, consider a simple single substrate enzyme-catalyzed reaction, given in the following:\n", - "\n", - "
\n", - "\n", - "$$\n", - "\\ce{Substrate + Enzyme \\rightleftharpoons [ES] \\rightleftharpoons [EP] \\rightleftharpoons Product + Enzyme}\n", - "$$\n", - "\n", - "
\n", - "\n", - "In order to properly document each step, it is necessary to start with the definition of all entities. This is done by initializing the appropriate objects and their metadata. Since pyEnzyme is capable to report micro-kinetic models, it is possible to define intermediates that may not be directly observable, such as Enzyme-Substrate complexes. This facilitates mathematical modeling based on differential equations and time-course data and offers a flexible way that is independent of existing models.\n", - "\n", - "**The next steps involve definition of the following entities:**\n", - "\n", - "| Type | Name |\n", - "|----------|--------------------------|\n", - "| Vessel | Eppendorf Tube |\n", - "| Protein | Enzyme |\n", - "| Reactant | Substrate |\n", - "| Reactant | Product |\n", - "| Complex | ES |\n", - "| Complex | EP |\n", - "\n", - "\n", - "Tips and hints:\n", - "\n", - "- Use the addXYZ-functions to append information to an EnzymeML document\n", - "- Add-Methods return the identifier, which can later be used to build reactions and models. Thus it is best when these are stored in a variable or data structure\n", - "- PyEnzyme takes care of type checking and validation. Furthermore, technicalities such as unit-decomposition (used to convert unit scales properly) and identifier assignment are done within the backend. Hence, focus on what matters." - ] - }, - { - "cell_type": "markdown", - "id": "b1293c5f-00f6-482a-85b8-fc3f1977060c", - "metadata": {}, - "source": [ - "### Vessels\n", - "\n", - "- ```Vessel``` carries the metadata for vessels that are used.\n", - "- ```addVessel``` adds a ```Vessel``` object to the document and returns the ID." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "3ba4e647-86c6-418f-ac76-03c87d7b7881", - "metadata": {}, - "outputs": [], - "source": [ - "vessel = pe.Vessel(name=\"Eppendorf Tube\", volume=10.0, unit=\"ml\")\n", - "vessel_id = enzmldoc.addVessel(vessel)" - ] - }, - { - "cell_type": "markdown", - "id": "3288f19a-56ca-4d33-bf71-ebf91fa9a49f", - "metadata": {}, - "source": [ - "### Proteins\n", - "\n", - "- ```Protein``` carries the metadata for proteins that are part of the experiment.\n", - "- ```addProtein``` adds a ```Protein``` object to the document and returns the ID." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "bf7f9b8a-c150-4ea6-873c-19b355f84cfa", - "metadata": {}, - "outputs": [], - "source": [ - "enzyme = pe.Protein(name=\"Enzyme\", vessel_id=vessel_id, sequence=\"MAVKLT\", constant=False)\n", - "enzyme_id = enzmldoc.addProtein(enzyme)" - ] - }, - { - "cell_type": "markdown", - "id": "e6dc7af3-f9b5-4a26-8cee-d6da1da662c9", - "metadata": {}, - "source": [ - "### Reactants\n", - "\n", - "- ```Reactant``` carries the metadata for reactants that are part of the experiment.\n", - "- ```addReactant``` adds a ```Reactant``` object to the document and returns the ID." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "9dad2554-ae10-4d8d-ac26-e493a711effa", - "metadata": {}, - "outputs": [], - "source": [ - "substrate = pe.Reactant(name=\"Substrate\", vessel_id=vessel_id)\n", - "substrate_id = enzmldoc.addReactant(substrate)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "0eb707b4-f5ff-4c84-8e2d-0395f06f721d", - "metadata": {}, - "outputs": [], - "source": [ - "product = pe.Reactant(name=\"Product\", vessel_id=vessel_id)\n", - "product_id = enzmldoc.addReactant(product)" - ] - }, - { - "cell_type": "markdown", - "id": "2548347a-2ea9-483e-b4b0-93872a368f08", - "metadata": {}, - "source": [ - "### Complexes\n", - "\n", - "- ```Complex``` carries the metadata for complexes that are part of the experiment.\n", - "- ```addComplex``` adds a ```Complex``` object to the document and returns the ID." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "9f3f4320-eb9b-4525-80b7-1137191ffda4", - "metadata": {}, - "outputs": [], - "source": [ - "es_complex_id = enzmldoc.addComplex(\n", - " name=\"ES\",\n", - " vessel_id=vessel_id,\n", - " participants=[enzyme_id, substrate_id]\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "747b66d3-1f49-4b5a-b28b-8346a67f3b8a", - "metadata": {}, - "outputs": [], - "source": [ - "ep_complex_id = enzmldoc.addComplex(\n", - " name=\"EP\",\n", - " vessel_id=vessel_id, \n", - " participants=[enzyme_id, product_id]\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "fda559b4-0db1-4ca5-b689-f326086c2c3d", - "metadata": {}, - "source": [ - "--------" - ] - }, - { - "cell_type": "markdown", - "id": "92533a99-869a-41a8-927e-edbb3187e037", - "metadata": {}, - "source": [ - "## Building the reaction network\n", - "\n", - "In order for the micro-kinetic model to be accessible to various modeling platforms and EnzymeML, each reaction in the model has to be documented. Similar to the previous step, this involves the creation of ```EnzymeReaction``` objects which will be added to the EnzymeML document. Hence, the following part-reactions need to be defined:\n", - "\n", - "1. $\\ce{Substrate + Enzyme \\rightleftharpoons [ES] }$\n", - "\n", - "2. $\\ce{[ES] \\rightleftharpoons [EP]}$\n", - "\n", - "3. $\\ce{[EP] \\rightleftharpoons Product + Enzyme}$\n", - "\n", - "**Tips and hints:**\n", - "\n", - "- Add-methods require the ```EnzymeMLDocument``` object to be added. This is necessary to check, whether given identifiers already exist to mitigate later errors.\n", - "- Similar to the other add-methods, ```addReaction```returns the given identifier. Thus it is best to store these in variables or data structures too.\n", - "- At this point, kinetic laws can be added to the reaction, but in this example we'll add them afterwards." - ] - }, - { - "cell_type": "markdown", - "id": "2beb8fd7-0c8c-4c16-9130-65dcc00ad1fc", - "metadata": {}, - "source": [ - "### Creating reactions from equations\n", - "\n", - "PyEnzyme offers two ways of creating `EnzymeReaction` objects:\n", - "\n", - "- By using an equation that either includes the ID or name of a Reactant/Protein/Complex\n", - "- By using `add`-methods to build up all elements\n", - "\n", - "Both methods will result in the same `EnzymeReaction` object, but both might shine individually in different contexts. For instance, when working on a single experiment using a Jupyter Notebook, initialization by equation improves readability and reduces boilerplate code. On the other hand, if your application is meant to maintain a variety of reaction i.e. using PyEnzyme as a backend for an Electronic Lab Notebook, using the `add`-methods should prove to be more flexible and safe than manipulating string." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "6dd1d5aa-8e6c-4eb7-97d6-26f6b11dfb36", - "metadata": {}, - "outputs": [], - "source": [ - "# Setting up by equation\n", - "reaction_1 = pe.EnzymeReaction.fromEquation(\"Substrate + Enzyme = ES\", \"reaction-1\", enzmldoc)\n", - "reaction_2 = pe.EnzymeReaction.fromEquation(\"ES = EP\", \"reaction-2\", enzmldoc)\n", - "reaction_3 = pe.EnzymeReaction.fromEquation(\"EP = Product\", \"reaction-3\", enzmldoc)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "9d1ec57d-9047-461e-bd4d-71760fdac466", - "metadata": {}, - "outputs": [], - "source": [ - "# Setting up via add-methods (only for reaction 1 for demo)\n", - "reaction_1 = pe.EnzymeReaction(name=\"reaction-1\", reversible=True)\n", - "\n", - "# Add each element\n", - "reaction_1.addEduct(species_id=substrate_id, stoichiometry=1.0, enzmldoc=enzmldoc)\n", - "reaction_1.addEduct(species_id=enzyme_id, stoichiometry=1.0, enzmldoc=enzmldoc)\n", - "reaction_1.addProduct(species_id=product_id, stoichiometry=1.0, enzmldoc=enzmldoc)" - ] - }, - { - "cell_type": "markdown", - "id": "2656402d-9f60-419d-8a97-9548e097770c", - "metadata": {}, - "source": [ - "### Adding the reaction to the document\n", - "\n", - "- ```addReaction``` adds an ```EnzymeReaction``` object to the document and returns the ID. (not used here)\n", - "- ```addReactions``` adds multiples of ```EnzymeReaction``` objects to the document and returns an ID mapping. (used here)" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "bca45e1e-7fcd-48e1-9c5e-504aa248ef10", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'reaction-1': 'r0', 'reaction-2': 'r1', 'reaction-3': 'r2'}" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Finally, add al reactions to the document\n", - "reaction_ids = enzmldoc.addReactions([reaction_1, reaction_2, reaction_3])\n", - "reaction_ids" - ] - }, - { - "cell_type": "markdown", - "id": "282cc8b0-7e45-47c4-aa9c-3b7a07f6c03a", - "metadata": {}, - "source": [ - "--------" - ] - }, - { - "cell_type": "markdown", - "id": "88cad3cc-6bef-47d8-8d44-0f53d8a4f22e", - "metadata": {}, - "source": [ - "## Documenting measurement setups\n", - "\n", - "Now that the theoretical foundation of the experiment has been laid out, it is time to specify the setup of the measurement. PyEnzyme offers a lab-like system to document such setups. Typically, experiments involve multiple runs with varying initial concentrations of every element that occurs in the reaction network or/and varying conditions such as temperature and pH. Hence, PyEnzyme builts on top of a **measurement** system, where each of these represent a 'run'.\n", - "\n", - "In this example, the following setups will be tracked including changing initial concentrations and temperatures:\n", - "\n", - "| Measurement Name | Species | Initial concentration | Unit | Temperature | pH |\n", - "|------------------|-----------|-----------------------|-----------|-------------|-----|\n", - "| Run 1 | Substrate | 10.0 | mmole / l | 37.0 °C | 7.4 |\n", - "| Run 1 | Enzyme | 20.0 | fmole / l | 37.0 °C | 7.4 |\n", - "| Run 1 | Product | 0.0 | mmole / l | 37.0 °C | 7.4 |\n", - "| Run 2 | Substrate | 100.0 | mmole / l | 39.0 °C | 7.4 |\n", - "| Run 2 | Enzyme | 40.0 | fmole / l | 39.0 °C | 7.4 |\n", - "| Run 2 | Product | 0.0 | mmole / l | 39.0 °C | 7.4 |\n" - ] - }, - { - "cell_type": "markdown", - "id": "21624256-889c-4a3a-ba57-d2d5df19fb12", - "metadata": {}, - "source": [ - "### Measurement 1: 'Run 1'\n", - "\n", - "- ```Measurement``` carries the metadata for measurements that are conducted in the experiment.\n", - "- ```addData``` appends measurement data to the ```Measurement``` object and checks consistency." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "7fd82ddb-a48e-49fa-8db8-11a006dcacc0", - "metadata": {}, - "outputs": [], - "source": [ - "measurement_1 = pe.Measurement(\n", - " name=\"Run 1\", temperature=37.0, temperature_unit=\"C\",\n", - " ph=7.4, global_time_unit=\"mins\"\n", - ")\n", - "\n", - "# Add each entity that will be measured\n", - "measurement_1.addData(reactant_id=substrate_id, init_conc=10.0, unit=\"mmole / l\")\n", - "measurement_1.addData(reactant_id=product_id, unit=\"mmole / l\")\n", - "measurement_1.addData(protein_id=enzyme_id, init_conc=20.0, unit=\"fmole / l\")\n", - "\n", - "# Add it to the EnzymeML document\n", - "meas_1_id = enzmldoc.addMeasurement(measurement_1)" - ] - }, - { - "cell_type": "markdown", - "id": "e7707c8a-5d04-4e53-92cf-d8c45e29c935", - "metadata": {}, - "source": [ - "### Measurement 2: 'Run 2'\n", - "\n", - "- ```Measurement``` carries the metadata for measurements that are conducted in the experiment.\n", - "- ```addData``` appends measurement data to the ```Measurement``` object and checks consistency." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "9703ba7b-6199-4cb7-87f9-178700bb9131", - "metadata": {}, - "outputs": [], - "source": [ - "measurement_2 = pe.Measurement(\n", - " name=\"Run 2\", temperature=39.0, temperature_unit=\"C\",\n", - " ph=7.4, global_time_unit=\"mins\"\n", - ")\n", - "\n", - "# Add each entity that will be measured\n", - "measurement_2.addData(reactant_id=substrate_id, init_conc=100.0, unit=\"mmole / l\")\n", - "measurement_2.addData(reactant_id=product_id, unit=\"mmole / l\")\n", - "measurement_2.addData(protein_id=enzyme_id, init_conc=40.0, unit=\"fmole / l\")\n", - "\n", - "# Add it to the EnzymeML document\n", - "meas_2_id = enzmldoc.addMeasurement(measurement_2)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "c181f7ea-063c-48ee-9342-dc5e5e3a877f", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - ">>> Measurement m0: Run 1\n", - " s0 | initial conc: 10.0 mmole / l \t| #replicates: 0\n", - " s1 | initial conc: 0.0 mmole / l \t| #replicates: 0\n", - " p0 | initial conc: 20.0 fmole / l \t| #replicates: 0\n", - ">>> Measurement m1: Run 2\n", - " s0 | initial conc: 100.0 mmole / l \t| #replicates: 0\n", - " s1 | initial conc: 0.0 mmole / l \t| #replicates: 0\n", - " p0 | initial conc: 40.0 fmole / l \t| #replicates: 0\n", - "None\n" - ] - } - ], - "source": [ - "# Check the measurement table\n", - "print(enzmldoc.printMeasurements())" - ] - }, - { - "cell_type": "markdown", - "id": "a1a275a1-d098-4d47-8168-b34ab3aee384", - "metadata": {}, - "source": [ - "--------" - ] - }, - { - "cell_type": "markdown", - "id": "0f0f54d9-17a8-41cf-ba68-41d761d9d9f0", - "metadata": {}, - "source": [ - "## Adding experimental raw data\n", - "\n", - "After the setup has been defined in terms of measurements, the actual time-course data can be generated and added to the documemnt. PyEnzyme offers a ```Replicate``` class as a container for raw data that aside from raw data carries metadata describing the replicate itself.\n", - "\n", - "In the following example, replication data will be hard-coded and added to our measurement of choice. For this our digital lab measured the product formation as well as substrate depletion for each measurement setup." - ] - }, - { - "cell_type": "markdown", - "id": "bfe87c90-2c79-4daf-a99c-f302d37f2adc", - "metadata": {}, - "source": [ - "### Data for 'Run 1'\n", - "\n", - "- ```Replicate``` carries the tim-courses and metadata for each measured entity.\n", - "- ```addReplicates``` adds ```Replicate``` objects to a measurement to the corresponding ```MeasurementData``` container where the concentrations are also stored." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "4e465270-f8d1-49d1-92a7-349352c78a92", - "metadata": {}, - "outputs": [], - "source": [ - "repl_substrate_1 = pe.Replicate(\n", - " id=\"repl_substrate_1\",\n", - " species_id=substrate_id,\n", - " data_unit=\"mmole / l\",\n", - " time_unit=\"min\",\n", - " time=[1,2,3,4,5,6],\n", - " data=[5,4,3,2,1,0]\n", - ")\n", - "\n", - "repl_product_1 = pe.Replicate(\n", - " id=\"repl_product_1\",\n", - " species_id=product_id,\n", - " data_unit=\"mmole / l\",\n", - " time_unit=\"min\",\n", - " time=[1,2,3,4,5,6],\n", - " data=[0,1,2,3,4,5]\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "783314be-2b6b-443c-bf79-5aca8ddff9af", - "metadata": {}, - "outputs": [], - "source": [ - "# Add it to the first measurement 'Run 1'\n", - "measurement = enzmldoc.getMeasurement(meas_1_id)\n", - "measurement.addReplicates([repl_product_1, repl_substrate_1], enzmldoc=enzmldoc)" - ] - }, - { - "cell_type": "markdown", - "id": "e7602d58-29a3-4a8a-93bf-40bedc1f82bb", - "metadata": {}, - "source": [ - "### Data for 'Run 2'\n", - "\n", - "- ```Replicate``` carries the tim-courses and metadata for each measured entity.\n", - "- ```addReplicates``` adds ```Replicate``` objects to a measurement to the corresponding ```MeasurementData``` container where the concentrations are also stored." - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "05145bde-8a9e-425e-992f-509575c3b86f", - "metadata": {}, - "outputs": [], - "source": [ - "repl_substrate_2 = pe.Replicate(\n", - " id=\"repl_substrate_2\",\n", - " species_id=substrate_id,\n", - " data_unit=\"mmole / l\",\n", - " time_unit=\"min\",\n", - " time=[1,2,3,4,5,6],\n", - " data=[50,40,30,20,10,0]\n", - ")\n", - "\n", - "repl_product_2 = pe.Replicate(\n", - " id=\"repl_product_2\",\n", - " species_id=product_id,\n", - " data_unit=\"mmole / l\",\n", - " time_unit=\"min\",\n", - " time=[1,2,3,4,5,6],\n", - " data=[0,10,20,30,40,50]\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "d256acef-a8f5-4ee4-a483-5763494e4042", - "metadata": {}, - "outputs": [], - "source": [ - "# Add it to the first measurement 'Run 2'\n", - "measurement = enzmldoc.getMeasurement(meas_2_id)\n", - "measurement.addReplicates([repl_product_2, repl_substrate_2], enzmldoc=enzmldoc)" - ] - }, - { - "cell_type": "markdown", - "id": "e0a10524-557e-44c1-9fd3-3eba2d8b960c", - "metadata": {}, - "source": [ - "-----" - ] - }, - { - "cell_type": "markdown", - "id": "d87eb5c2-6976-4e0d-977d-5f95836e8516", - "metadata": {}, - "source": [ - "## Saving and distributing an EnzymeML document\n", - "\n", - "Finally, the experiment has been finished and meta- as well as raw-data been documented. In order to make the data exchangeable, PyEnzyme offers several options for data export. First and foremost, the complete experiment can be exported to EnzymeML which is SBML compatible and thus accessible by SBML-based modeling tools (e.g. COPASI, PySCeS). Furthermore, in regard of the web, PyEnzyme offers a JSON export too.\n", - "\n", - "Apart from raw exports, PyEnzyme can also interface with the federated databases system Dataverse by providing a simple upload method that automatically uploads and processes the document contents to a Dataverse compatible format. Please note, the Dataverse must support the 'EnzymeML' metadatablock for a successful upload.\n" - ] - }, - { - "cell_type": "markdown", - "id": "1b5a7d92-f997-4c17-817e-64f1427f6466", - "metadata": {}, - "source": [ - "### Export\n", - "\n", - "- ```toFile``` writes the EnzymeML document to an OMEX archive at the specified path.\n", - "- ```json``` converts the EnzymeML document to a JSON string, which in turn can be used for REST interfaces or data storage.\n", - "- ```toXMLString``` returns the XML representation that is also found in the OMEX archive." - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "3aadf496-dee7-43a1-917a-207244398943", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Archive was written to ./My_Experiment.omex\n", - "\n" - ] - } - ], - "source": [ - "# To an OMEX archive\n", - "enzmldoc.toFile(\".\", name=\"My_Experiment\")\n", - "\n", - "# To a JSON string\n", - "with open(\"My_Experiment.json\", \"w\") as file_handle:\n", - " file_handle.write(enzmldoc.json(indent=2))\n", - " \n", - "# To an XML string\n", - "xml_string = enzmldoc.toXMLString()" - ] - }, - { - "cell_type": "markdown", - "id": "5decfe8a-bb2d-460d-86c9-9e700162afb9", - "metadata": {}, - "source": [ - "### Upload\n", - "\n", - "- ```uploadToDataverse``` uploads the document to a Dataverse installation.\n", - "- Please note, that in order to work, your environment should contain these variables\n", - " - ```DATAVERSE_URL```: The URL to your installation.\n", - " - ```DATAVERSE_API_TOKEN```: The API Token to access the dataverse." - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "cb6ae2f2-32bb-4ffd-b255-bf171725e645", - "metadata": {}, - "outputs": [], - "source": [ - "# Uncomment if you want to use this on your own Dataverse\n", - "# enzmldoc.uploadToDataverse(dataverse_name=\"playground\")" - ] - }, - { - "cell_type": "markdown", - "id": "99daaf82-a235-4238-89ce-d077e6ea39df", - "metadata": {}, - "source": [ - "-------" - ] - }, - { - "cell_type": "markdown", - "id": "e99a7220-d586-44bc-8507-cef3ee1de231", - "metadata": {}, - "source": [ - "## Loading an EnzymeML document\n", - "\n", - "It is not expected to create an EnzymeML document in a single session, but to let it evolve over the course of an experiment. Thus it is necessary to load and edit an EnzymeML document, without re-creating everything from start. PyEnzyme's ```EnzymeMLDocument``` object offers an initialization method ```fromFile``` to edit an already existing document. In addition, it is also possible to use the aforementioned JSON \n", - "\n", - "**Tips and hints:**\n", - "\n", - "- PyEnzyme stores a history in the document, which keeps track of what has been changed and added in the course of an experiment. This is done, to spot potential errors and facilitate the documentation of an experiment's lifeline." - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "1077c6d7-683e-4c2e-993c-e7f6f5c5ffd6", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Experiment\n", - ">>> Reactants\n", - "\tID: s0 \t Name: Substrate\n", - "\tID: s1 \t Name: Product\n", - ">>> Proteins\n", - "\tID: p0 \t Name: Enzyme\n", - ">>> Complexes\n", - "\tID: c0 \t Name: ES\n", - "\tID: c1 \t Name: EP\n", - ">>> Reactions\n", - "\tID: r0 \t Name: reaction-1\n", - "\tID: r1 \t Name: reaction-2\n", - "\tID: r2 \t Name: reaction-3\n", - ">>> Measurements\n", - ">>> Measurement m0: Run 1\n", - " s0 | initial conc: 10.0 mmole / l \t| #replicates: 1\n", - " s1 | initial conc: 0.0 mmole / l \t| #replicates: 1\n", - " p0 | initial conc: 20.0 fmole / l \t| #replicates: 0\n", - ">>> Measurement m1: Run 2\n", - " s0 | initial conc: 100.0 mmole / l \t| #replicates: 1\n", - " s1 | initial conc: 0.0 mmole / l \t| #replicates: 1\n", - " p0 | initial conc: 40.0 fmole / l \t| #replicates: 0\n" - ] - } - ], - "source": [ - "# Load an EnzymeML document from OMEX\n", - "enzmldoc = pe.EnzymeMLDocument.fromFile(\"./My_Experiment.omex\")\n", - "\n", - "# Load an EnzymeML document from JSON \n", - "json_string = open(\"My_Experiment.json\").read()\n", - "enzmldoc = enzmldoc.fromJSON(json_string)\n", - "\n", - "enzmldoc.printDocument(measurements=True)" - ] - }, - { - "cell_type": "markdown", - "id": "8d2970a9-37a3-4125-85ef-23df5d302bda", - "metadata": {}, - "source": [ - "#### Special case: From the EnzymeML spreadsheet template\n", - "\n", - "Apart from programmatic creation of an EnzymeML document, PyEnzyme offers a way to convert the 'EnzymeML spreadsheet template' to an OMEX file. Since spreadsheets are the bread and butter of current lab documentation, the template widely covers the data model and thus provides an easy access to EnzymeML's capabilities." - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "98715329-b341-4bfd-b749-1e2647f7fdd0", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Pyruvate Decarboxylation\n", - ">>> Reactants\n", - "\tID: s0 \t Name: Pyruvate\n", - "\tID: s1 \t Name: Acetaldehyde\n", - "\tID: s2 \t Name: CO2\n", - ">>> Proteins\n", - "\tID: p0 \t Name: Pyruvate decarboxylase isozyme 1\n", - ">>> Complexes\n", - ">>> Reactions\n", - "\tID: r0 \t Name: Pyruvate decarboxylation\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/opt/homebrew/Caskroom/miniforge/base/envs/enzymeml/lib/python3.9/site-packages/openpyxl/worksheet/_reader.py:315: UserWarning: Data Validation extension is not supported and will be removed\n", - " warn(msg)\n" - ] - } - ], - "source": [ - "# Similar to the OMEX and JSON loaders, its a simple call\n", - "enzmldoc = pe.EnzymeMLDocument.fromTemplate(\"EnzymeML_Template_Example.xlsm\")\n", - "enzmldoc.printDocument()" - ] - }, - { - "cell_type": "markdown", - "id": "81201665-aebe-4db2-bbe1-de9f78edc8a2", - "metadata": {}, - "source": [ - "--------" - ] - }, - { - "cell_type": "markdown", - "id": "65b3a935-9b0d-4266-9aab-001f96241fe6", - "metadata": {}, - "source": [ - "## Editing EnzymeML: Kinetic Modeling\n", - "\n", - "Building on top of the previous section about loading an EnzymeML document, this example will demonstrate how to interact with an already created EnzymeML document using the OMEX loader. Since the purpose of an experiment is to generate data from a theory, modeling takes care of the interpretation of an experiment outcome. However, PyEnzyme and EnzymeML are no modeling platforms, but provides a convenient way to interface to such. Hence, this example will demonstrate how such an interfacing could look like.\n", - "\n", - "The enzyme-catalyzed reaction that has been reported in the course of this example obviously follows a simple Michaelis-Menten-Kinetic and thus will be reported as such. But first of all, the next part will demonstrate how measurement data can be exported to be used by a modeling framework/platform.\n", - "\n", - "First, load the EnzymeML document:" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "5e072f24-fb24-4b10-b5a5-fbb2d96bdba7", - "metadata": {}, - "outputs": [], - "source": [ - "# Load the EnzymeML document\n", - "enzmldoc = pe.EnzymeMLDocument.fromFile(\"My_Experiment.omex\")" - ] - }, - { - "cell_type": "markdown", - "id": "34e176e2-4eea-4382-89f0-3fb71a3c1757", - "metadata": {}, - "source": [ - "In order to get the measurement data given in the document, the ```EnzymeMLDocument``` object offers the ```exportMeasurementData```-method which will export the data of 'all' or specified measurements to a Pandas DataFrame object." - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "4bd1484a-cc6e-457d-9a11-519ff5e87a51", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
s0s1time
05.00.01.0
14.01.02.0
23.02.03.0
32.03.04.0
41.04.05.0
50.05.06.0
\n", - "
" - ], - "text/plain": [ - " s0 s1 time\n", - "0 5.0 0.0 1.0\n", - "1 4.0 1.0 2.0\n", - "2 3.0 2.0 3.0\n", - "3 2.0 3.0 4.0\n", - "4 1.0 4.0 5.0\n", - "5 0.0 5.0 6.0" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Get the data from measurement \"m0\" ...\n", - "meas_data = enzmldoc.exportMeasurementData(measurement_ids=\"m0\")\n", - "\n", - "# Which is a dict containing \"data\" and \"initConc\" information, where data is the part we want\n", - "meas_data = meas_data[\"data\"]\n", - "meas_data" - ] - }, - { - "cell_type": "markdown", - "id": "92f177f5-505a-4a84-8444-9a2c669bf44e", - "metadata": {}, - "source": [ - "The given output could now be used for an optimizer in conjunction with the metadata that is given in the EnzymeML document. In order to gather stoichiometries and such, one can access other data in the document by specifically exporting the desired reactions:" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "77d96541-20ff-4b44-acba-35a1b31a0750", - "metadata": {}, - "outputs": [], - "source": [ - "for reaction in enzmldoc.reaction_dict.values():\n", - " # Every entity of an EnzymeML document is stored in its corresponding\n", - " # dictionary. This example serves as a get-go solution to access all\n", - " # other objects\n", - " \n", - " educts = reaction.educts\n", - " products = reaction.products\n", - " \n", - " # From this point on, a modeling framework/platform could derive important metadata" - ] - }, - { - "cell_type": "markdown", - "id": "146d4c3b-8ac3-4e5a-928c-ec03782efabc", - "metadata": {}, - "source": [ - "Assuming the modeling has now been done, the estimated parameters for the desired reactions can now be added to each reaction. Since this is an example for demonstration, this will only be carried out for the first reaction by using a Michaelis-Menten-Model." - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "634e60e5-983b-491e-9de0-7e46a39af2b9", - "metadata": {}, - "outputs": [], - "source": [ - "from pyenzyme.enzymeml.models import MichaelisMentenKCat\n", - "\n", - "# Get the appropriate IDs by using the getter-methods\n", - "substrate = enzmldoc.getReactant(\"Substrate\")\n", - "enzyme = enzmldoc.getProtein(\"Enzyme\")\n", - "\n", - "# Create the model\n", - "model = MichaelisMentenKCat(\n", - " substrate=substrate.id,\n", - " protein=enzyme.id,\n", - " k_cat={\"value\": 10.0, \"unit\": \"1 / s\"},\n", - " k_m={\"value\": 20.0, \"unit\": \"mmole / l\"},\n", - " enzmldoc=enzmldoc\n", - ")\n", - "\n", - "# Add it to 'Reaction 1'\n", - "reaction = enzmldoc.getReaction(\"reaction-1\")\n", - "reaction.model = model" - ] - }, - { - "cell_type": "markdown", - "id": "221cdf6e-6289-43be-852f-0569e549da67", - "metadata": {}, - "source": [ - "Finally, write the EnzymeML document to an OMEX file or upload it to a database, such as described in the corresponding section. Please note, that this is a minimal example to demonstrate the capabilities of PyEnzyme. However, if you like to inspect an actual interface implementation to modeling platforms, please inspect the Thin Layer implementations for **COPASI** and **PySCeS** in the [GitHub](https://github.com/EnzymeML/PyEnzyme) repository and examples in the [\"EnzymeML at Work\"](https://github.com/EnzymeML/Lauterbach_2022/tree/main/Scenario5) repository." - ] - }, - { - "cell_type": "markdown", - "id": "52ed8838-072c-4748-91ba-0eed41cb8232", - "metadata": {}, - "source": [ - "--------" - ] - } - ], - "metadata": { - "interpreter": { - "hash": "a665b5d41d17b532ea9890333293a1b812fa0b73c9c25c950b3cedf1bebd0438" - }, - "kernelspec": { - "display_name": "enzymeml", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.10" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/Basic example/EnzymeML_Template_Example.xlsm b/examples/Basic example/EnzymeML_Template_Example.xlsm deleted file mode 100644 index e3739bf39dfd09bf663ed60c707cae77aca078b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98309 zcmeFZ1yEhv(=SL8+$FdLO>lR2hu{$09TFtC1cJKIkSWhDgiH?##FAf@YU*`^hwSaDL zFx@h=c1MU@x{l&PhI~;sfIS%B`=L-$$8~xS3k|r^k%dNmyF3s?R~?Qb|xhj zdtR)UxZu@TFD5AoR~prav7np8^pj<7Z+LY5VuyofVo^^Y1_k{OM=8mUhy$3}g|eAR zK8p+l4(!rfQ-R6ENrr+snwR|VTQVtAnh&~I4=}YdR8gxez8}4uSi{sYyVt$bH{K@( zAw}&KcS5T^by#wWn|{&U!bm?ZZjwHj)xjezW4Jst-iQ0@;VxmXtvyEKnOl0;_=l}a zc4YiC$jsFfe*0tu;hy*pTkH>VoWu@@YeNPPW22v|p9djN<8($=Eqc{5s4mMd3GYa( zk3!srE@ozRL!%Po&HGH)d0JLzkcuNA^+B|{k3Q_w@k1S-AEGWg-8lMMH{Uh!vn|~# zx8d46P=Z41Je3c-=i7qXLRGym;?ZUN#Y&0f>S-QU*WpWBT7*ze&V4_SFAPOR@cHK? zxK0a8xq?4w;x7v7>5O(wK2kjGMM1vK|8CX~8W4AtwP9nRQ9xZsv|ggN9_Is$;o;#K z*z4Z_rAC>afrLbFJ57u#OqAuHkdJQMS5@wn}uU*rzm=_NY<##|hX`kafT z*0IDd{`#E*6eYQBoanpal`fR`lV_9X31X7Yuim$WQx?_dXGrydNJPhvge#CoXjO4w z&~otnFnAI^yy=!vU(&xUeKIMixL@K|UdNWc6FrjTIUSd~jldVcA-y-2fZl7TZ!%lz z)@w<0c7>y?Xv$$$uAgelN$jj+X!-d>IH?Wo&W%PkxmSUh8TFEJM68D_{mk=CHS^Ix zigOnmOlMK=_df4n!u+Kt|7Ii@NWPM`0EY;0!Z={iPn<02e%gtnjje^gjg7^l-~H2O zo&e4lX#2nSPjl?wIz#E0=m1K0;PQ%i&o5Yh2S(?>r z5}Na6bc@8%s*>|PmKOr>sOU2a<>#W6wqbkyI9FK$XbgLAT9!WTj^kK*s4%IKGmH;( zo$Ksd%wIjsQOdx5kdt&%d9^JFcb{`QwH9C)>^&Tz|6Uq( z-77;WJL!g3&4QXleV-wiww-vB|j91F*e0*EmO z>kU3tC?@nCwt981rBu6f%QVrE^GP(BisDN#*-9FudIWK?6&!NI_2V8OtU096Du_E%jkRWk-_~TmlceW!%n3}&3pZkkhBD6!%7dTcTQ9>m}^+Yrh-mnBb=XE+q^Zk0(T?1)Wd|d zaYVIj;VLwW-7>6u{Ze;sTcGWPunDo-MzGwO&}WqzA}l>zdh>0#q%ff{`o5J&S$Fx( z_!Rx?fwyG7%kE#_)c0)6n&iPveN9Sj#85BcjaD%!tSIplSDug_b+PREKF2f42B+VW zSgQW439AVQ6FK#KhfW(+CQ||{6AP2F@{4kyWncDmuIu(mELBWPQ8PuUh>;Ep|G?x89;>X zZp?isPDp>9$FB;FACfKEr>TunQ$3Z5JwL1pQ(=Eku8Hg+mr}Ip{cy7|_EjF4XPbIP zw50tb(+gf_9V0$|cZF>*cH|EPMh|XS2w+rW_$_5I<;z#xZC=kkiNYh^itDuOLv3~KINgqqPR99Fg4IZ#r4ha}5B(bPju$4$6n16!2 zxj02OyZ634sZ{+AcJ<4mM?@-;-(o6J*g+y&2ydS%;=THY@|3Wq; z$vJ-4rQpslm6#WZU&<)hh3auAz2saW9$v3V+6OW6#vnl+w>u(zjqe7Fv_-IzEi`Dh<-Ip_@@IdgwC3 zh^LE?z45l5@KrMQ`)2(430{5ljLg$D437YB`EMEWV3xh!3sfETy}@Sr!2&uP+hz4* z(%}-052(!jWGLq3;%8tFG^N}6lB7yyL_yD-{B`qIOn0uq7+$>#e41Qu${G6f`9=<5 zH~UD?S0!sCm8Q1KWnV_y5LU9>n(c1WB}JaN`N_L)nL0BVok^nc+MApQ8v74uw@;VY zPQ_P_H^kfbPS*F1#b<-{-#cpH5W7#$^WwTN;-7(GTAlmTEkrP|)(>D{ zSbrmkovD$Ly&c^T!u;s=l4It>=ID|A4yn%YsX;4y^B*N zUU~-y*5#?xVK*UP2;v;~EbM0#(uvyiSi5;WWHs#%`n5%Mud|FwLiG^|hset{o)rTt zf&WH7`1Fggj7G=TX5Wlyi*~)-D_Md4Hvv!j@OJ8AXXfB!j_Q`5Gs!hs`CHV8bV-V@ z$Rfm`e(@iWDM8SX7`(yC35m{X*9lRzg&E(5v(o7<_`CFU??X_MtcI`%rE+IG0N z=@2&4)up?A(whG5LL$gTRps`n)Dp}@*pc1&*NF^sCJKk{@S9=_Lk!@gKKj(jXks^Ub>-s74)_W9|eVu#Qkj7*$~%7YN<}@1FcZd=?XztZpU1g z-ZbvzFlPyE5(+`+;l7@8;)iv1rPhFo=`S^13d?-*9iDh^$!99mkxKmL-%h36CTrqp zU|ME&Lrhmm*=Bv;v5m9u+rw)T(cP_AHDsdhJdC$JQSxaTF;9ji|Ty& z`m8GvTQd9UJU{w9uipxe1YP3uilkZ_9qamvUVQDZuJ)LC@bSAxFKyk#i5%&4Qqy#H zd!~E*n+`$u4Obp*(ThU^I^jAx-Jb5;`_`?^ONU`Mi$miex-!uHUfRPYUa#6|+4FEY zLeGaX4-aRTd(O%`s70Oy9$yxZ=tZmBO^#wVg4fNFa%dEVYzkasgMIt;RdxFXpj3R` zt(6uo_}zuWLR&{B>pP=`%Wx=)!lrpbB*!|rw)1YN!J+(6 zJ6!e|2@PB5ZYpGzj3Rg=oUr}0z^|_e27>?K*F-|cTF~2}d zvtBI3rHFFz#BTSw$O6+Pl;7Fgy-sAy_%OlsVcGGY|Aj5?5E}MTL{m(*FVC1V(XlIX zF0wmvDsnh-DN>JEgOhO>kDEjPJT)>0Nxrc8@EwkpVTI+ER*_TVaNfq$gJd^BnMGj^f7 z@~Zr<{HFZjDDr6TQt@Cvc1r@}+&VXD-}2kI0`pN^e{-ElrwNw{=LuJ4;pzf5s#PaZ zo7_?6Z5c+1G^4^dr`;KIsw@OG1P%me1PCZrJ44FdTSs)Qu@-L`=hF-(Gug&J1dqfB zh4Pi3<)7qVm;aeW?z-^TeKzzXQ(GvOXDhxf z29`F`-dcE+|LeSn19RNP+uV4M)1p=UI_(&4OTXr=U93Irls#>j^2w5ulIz5;J6BBz zcCh-%3|_iynE8)gZ|G|!1+%0CKW^EB_FOqstVAqDtVK*nILXB>wn1%rLtkd|n_A6Q zXj<^^QcrJiVlF&_k-Fp}c{se9%JfYpiYUCT75||zXsv4Oz zOl~7S`oEoj&`!bUGG@P-VW^w!2~!{9eLrY&USU996&@PSXLqd`GCROy!>~aEG%%R$ z@zz9tp$gHf{KQt-OEXli?BoXC)&Z=6(@PVdzZCI>DpW+#v);)kYdc_nRQsxO+m_*q zMHG?rPNJ;sK-)TiH*k7u;tQ09y-)?JQP&E=8z==zCI4A0lU_p2iGk>0kW_DF^! zJpw*q>Tl${fPpK+GWMhoNXFFP^xbkM^6+@|#A`v8pz9ig8$A`|Zb6o( z>zaU*KNHk!K~|^hnt~fW6Lf1q)}!m1fs;QMOm0CoqwAW38$B0nZb5!W*R=pAe<8Tg zg6vG!wFEbMA$Z$@{DH1(8BYFE5U&+Ekgn?++~}nscPnxvUDq0%{FR_)D{=x|*9P3^ zm7rTIat2-37M%RGU~(&JURl>R)w^rS|ElPBsIUPGMJB7$S$A|i0`K<8@6c{N4f~QF z0R-L8$5f6E^z@_CGPFrzcSk7O-%Lv&4Pkdzj-vl|8q4ku^a~tU{j(VQ$ojqN7w#`b zINNyA-+KPS`(IsT`*s@2?oJ{L3K;(%6nkB-MUz`2FMhN?+{S(P_==Ke)3uH3EcZX| z{y!Z5e|3X8>O4=^t8lmnsK=n-M`SRlqGdDB`uvWnST7yvnL%Kt@R&G!M9f5kMG#nL zqsf22<-55}SXWuI zS9;GmqIE(@6DS!I2ZvvV514Egb+G1AVX7jo*KThN1fyVQ99SFCiiS?sHn5b^SdF*U z4>s;esl>kZjqKFMJLgQDYinZ;t{g5z=`ZZJR*GfOaW%}R*)v`$o?6T?o8N6 zThsVa(Y!ewg5gl42n_PnUCd|f81R=)f#l2~=*Vj}QOVg?tBA1b^NqCgtt^?wS~?fA z{fXNf-Vt80nN#51o9n?5hyt3)iDU%SU>w`6Q4{usW0`!9$BlX9DlR7A>WcTdOpv6w> zNxM!D>?KbQFy5Ga-PUfDe00T9)M7WjFOlbJqza|Z!gAm*YJ(jP_nw_Nu7(?M`YK-X zOvT$@CuDw` zIow|R4ssw~VMytIfEv?_0{>1Jp}!=RX3p154Ev0lG+e0QV_E%uMfQm6&I!W@!ZFXO z>%2n?_kg)7?WYwVY3sO&#!DJ7Ux zLP$M!R@HwIK%K*&I^|q>B9ub=QnTIqp7TAy>ZwUVow3oaMJ! zm!g6OuBZqsRrw&LOcp5CzLAV*X+G;Y6xB+RpxAuhMaS$Iao!d!HpwdGP=`bBPwy(n zFX4`Y5X~CzFcY$u-(V}xF)+HeY{ajdXm2oh7`muGs51-fnK_{zK&0k(OiREI*gxF1WP zS&G)1pn}?;X$WWug$N9&Oc$yos_n7Dlf|fw&Lm&2z8YZ6mWX}q)0y>X2)gmBZfcWD0%m3MQnF=FB|Rv~ z+TN;kwphGhfOq5GfHcgR$TDdD(&4U(Ht|`j2-R-@?G$eSW_TuC7IBGSl5<($%1(X2 zI{Rw^I+GWz8>VlGrh+8wtJ&PzydipQIr0iVn9+2iOLZ$gFEv$Dm920sFPjkMn18 zE`wjZ+UZ6c%qpLF?}7!ELxczU1tE3c#SYERNWhcJ<2&^Ggah=D^xt{ysUPDQ6l23t$*ZukobaFB< zelneI#kaF@e@!*@dgTVr&03VX5S08KR`EZtc{EFQMLPRjZr?Rh`FVP1WDpRcDB3 zIOt*~%p|H_N8wAl(r|nnv8a}>o3~FJ@kpbjYM_o0Ztt==~a!fjoSs5eGLNfY4mbeTX;V>cn%tH1t5UU@*aB>_sQkFrES_BxZz8xmpY%tJ2|;|W5BBAlx+K6ay91t-r4(< z%RO^i+3n=9kyz5w729%evUl+dQQRfdi4A1399%i?B)QIUXx_14=Gn_`Z%XP*)Z3Qn zN-U67We7#v~XEC&ZnwOk1 z#-4-k8X8xh7_7*dcWOsgLF$HC91&G7W!-oB<=8HjL(5_#j(vSErki4a#-h4wQZsps zBPWe2knEkIMtgMH{93M|j$~ej=|NEZu(o;gge-!XiQD8Csg(F@VaY}HL~GE)KFKr; zD>lLoWzwo&W>?B?V}d=955~_GtgMC2?|#F4uf2mt;b3BRPy2S0Q#9|u(5G9XR3wl~ zmh+~tTWbG>uU|Bmby={^jB|lp_C!iflGjtmQUl8!S>DFpnpf|7Bus#uyZ}GD3%_pq z3*BDx#7l*pVNNE;dYMzqRm*#B1YoRbhrWdM>~1>CJU_+v3mtzA=8&tcj^(<0d;jj0 z59(tQOypalyQwhFC zdRTF{#`nxhWapR8KrXCpo);F)<3WB7$3=G*7&BKjtVs>$Q?XX}H7|p*qGzNV$ix-6 z9Fq5rPAdM`SgM1up*mKSQIcGrkg|SwS~QRr=e*xxpItREYAZicND~j_X&kPoil&QF|Q&8dpVp{r5s870thI8ykr8rP|Wcn3Z0I4fRyB;`OJ58a=#UNsCS{B+kb zEags|b6(6uzuWPddfrW+pb*vdwrj8G$0&USd<-|fKTd96-9&%NH&DGcY~v=!a1%N+5W+3L$w1d{rdf4CR?Lc88YftFwJw_ARvfmQkr;rm zszPUK9BNUTV24;?vBQxr?jL0KEv=yKj^-jj-)e{|zgP%K22cCxVw54MQ)_7;gd0ln zW>J!s*4sdC{t=RRoe^OwGVp~@9egx@=fxMmJzTl4IX>Tg9PIn$v$y^{oM z=18_RPz`fFn)?E!=Py)UBZ`3PCu@|gUlkJjeoyWH%J}~+wLfZU9Xq-Bk?t1?l$u8r z;j9%xHvFUb9XjvU5E_ZSS09;X*4q-oUK$ZMn@U$~40}zg7D&{|U|e0{n!!25-R84T z-_RTxg&cn&)jN{+a5jl5zkE^O%p{@a7NEA2KuXQ)MR|ZnI1)og4ijwJ_Q>EyAK;4q zNFnhl3V5hxpMUYgmH?7vf#qgoPC}1C5yT|Y z5HJ^_kJ`|gm>pZb{4PW>+R(X}9oxQME=1Yd(1n;CJHDS?h^n=rOEEikeZgFby0oDy zF+28r`CW-7w4rM;JNA9OT#44Sp&Kzf4tzhm5}j&8w_<#!`` zt^?hT*>U9S~WBxMyFU3Bti=RvRxJ{*Z z{r`oc=%-ecTpNwgogwt@B+?-0akh@r(EqXsr0IIsqD#LuI!=8Y;o}d^kHP+*7e%BW zjIW_S{`|1`XC|%sMfr|lVQ6W^wU@aCgg3z%@GY{z(V!I*@~Z<7!uDZkpRZ!3uPmO?Y_-nI>@L+= zKsV_OOo@14yPqZzWR@0p^FQ%CY|anoF@=w3Y-fu5QgRs#x zC5x=j^4&N=pF(NIg2?je{rbJT7?jtjO$YmL^h{22i#k8ty7p2}3tzN8sULOM5)ED| z!@OVV!@ptxvo@lHHGUn{i&ue{Zi*0A5v52T+ok!^aV(u=@Cp2)wV?6ntL7ee0kX}tSbsSzN>GgA$y{<*l5BG@3>*{Kzg<7 zogtUp(NEMNgj_)Ja{2?x{MrVC}gZa%d`!u%*s*sr;Bok?LJwGFc8X3n1WEzVr3Qsfh7B9Sazdzn_63diL{(-(5 zjdiv*y;+2e(GhCbCQoO!)|=&qwfp4x2P}7M#n)z%M5vfJ3@X{;X3Op3z71m^)dzI= z({5l-l`v~P`E7Ei6{Cz-wOU05hAVHyKBvA)VhR$NL4jrQf(}*?0q^3++svdl6A;*R zA3Zs|fEr|DzfUxp=6h;xt=PT%03%>26|o8aP3v`FJ|lBZjJf6dwDYYoW!3f&vtL@N zXV{gu(HB*IQ0`!rQk%t~2|1FP~mCY$dp#lRV6Mphveag-H z^HXjs8{kv!9+2FeWBDz?F&;FrQguLyqOx+1tCK}CoSMwHK~@OP{iZ`pg1T0$LSg!u zR?yo>jRc>>dU;5f8!qtv$7XJ&KTikS!&uqu6!wv7-nWuk<9@Y4!B zyJTKO;->bp@!i$WM#kM>SjM$x1$|!TD6ueIs?u;TQtJ9L6;jci-c1xGm~Ms9zmBIj zREI@G>r-W6HinXa&ERvin`3(RLFGj1EsNqvQEjKuBC$R#rCu$fq{I+ZU9c!6YZ?8a z3^J1}D=Z%o?`V7Iyyt2GhNc9K)VN4xUGSCFbwa#z2%&_{NgFg;SE@Ir9-Nb)?;#w8 zcv$gw@ZcpFsc?F#c${M4$Z?&!-Q9cU1CbO`Jd+gmlW|!-iPd4!5ZBpyOj0w9huo}; z-DoJ0a_p7VNj0CBtp0`G;7ABbpk7Hz{qp(muQIvz~SBhRp_P-mtOZnI;Bn7rGeZQufd7oROP-N~FPl=4x?F9brC5540Lu{=y?X2XJi zsxPUXQ*4r~{MM!kpY0i8*(^+g)RiSg-KU1|cXh>2DidmEOgM(_1>9j?=`93cI(@d_ z5aA2guVA)*ieMch*(zvoGWz<-QWrJ#(d`amc{q*u==mn^sQq^X&i0fnJl1j_=1nuX z#lg%|yWA&6_q4E8)e`aw{Cz6199Di3Y%&IX2o+CnI>j39;aRPj+qKw;eDt}V481e7 z3KYbB7LUFY0?NiXpY%cNVYSveyiLifnVq8ux$xscvy?aS-d!T?ZIpk0Ew9_jF^Akb zCOYNMe6O!-!UoSptfB1O|G^zm@*Y;R`xWJtl z?+DBRA3*WI_#X4 z9Xm(qvP%|F61;lO#ho}`dp?|8fIM!BZU%JPZf`I6?yuVTZjZ+EzKtV!-cQp#T$x<9 zwM`oNs%W4+NilpxV*#xSMage>kx5yuY6Jgq*t8 z^tiq{Y)d6K!%XuCdAM;&{GKOg^fU$T)sArEi%z(LG}%PL&e)s*s?dR=!V$R@$+kmS zIkdae?W^r^q?NG;c+7h~KFqUDkmqgM+YX)exoB~1nN7iW(j>l`XBI<@%aU!~f^4=Jv?@8TqG3Z@msGaoOV3qWEXqsHmL zD%|C7Vv~msGCjo>Lsd~u+{_p|k&Y7GNbnxy-@sH*qL>N3q|`=L_b%q2dVw23(~B9w z7J=VOum)xeZdMnl9cbvRspFxcBIHMUi5<0N^2+alLx^FHBWPtW{6rfw_9hM`w=%Ab^Ti)c36+-Tdl##6{Sx%hGnBM`+e1cSJBm^GK0#QPUg zMsnUOgFbCYNI||!ERQSQuyo>?S|$&=7E_ zW9$-v-iu@StPRxF~4D@xH95OOG_@SI2G_ z1g$9N=21ebC8SdN)wg5^30O1rTcH~pUF%vexVyKl%2nN-7H}?x`8FkX6Qm&;Yn$)+ z;tMHqvj{J~>UY1HFt&oK@xG~8$-7_J;T0FO5ny$=w^wRQkW$&%g#OS zpN8wdx${5q@X1{%m!uUtUv#BkD`6)<^0B_&(15h~gCZK9|0T z;z;ixUwDbz5yD_v!fMiu+w4=PcqQA!^+ly9L~TWhS@R84p)O7RfC#D69OjhC zy5aFlHzs=K@X)42y%S~xsPN(wX6=*9Opcd%p10f{*A=EIv=@YV_6yew;=R$DZXP6_ z59{He`!m2YZqLKhcx4D4YI$MqdE8p>Pfvtpls&CmxRvGB2h6U=+bS>ULT}2pU88l# z;ng`bBZp_J4hb0_?umjA2`g{!iHZ&hZ9VFQTE10R+>#*m+#Jq``nqOymVg$lVvISk z{zDds^6~j%&v`!OjhS-9`f$)EO0Me`c2PJZ=1NZ4r1}&@oyBkJ78>5Iaj+L2<0X?g zaA6ioIo79e4INt}%0gAi$%T@BWnh+Wmp@(E2R?eu*4^bEdTwbN;myZ8)XOQu^h}5O z=$wA7N3`N4LF>Ycsge5eEQkWVw^XC@8Wl_n!ABp0r9v6`h??1ypeS@Qz>?&2 z6qn3XUy_mBUWStB`$|tCGU_iOp#u{Y<&bKuz{qS=QT0rH6MFc`GYZNt$SM!HG{__`55hUVGGN+OgL_4Tw0oTIMGKoe5 zOr=Rzh7MKpqrf&VsFWlEPHxZ(NqevEB$d_+h{Se0*4JqZR+tBx3W)G;U$9`||z{Lx=2(n&SLxjpFv!YQ( zkpBS`oWfd}f5-y|B{Yy+Sdkd!Z7Ozt6!K=m2TB;*RP0R35qJ)T1S0OE)*h`+=foIX zoHRx4GBLh<84Y4%{~}4&`M(Dsamgd55d%?3>~ZMg@?g>8hnGI>TnY>7`;<4R8%-czI-Y&AkgqsNEGlI59`cB`q|7b;k7 zja3eW@G#gb`V7IdvdwhpO8Jz)*J8w(V1Kbste6XLeR!hwZksSj?sJ6k*l769)HFvW zA`v%ul~TUu?tlPGrcG+0Gl_oSYmWAWL`Ra1g2Xx!dD64p%t5%Bq2n6VDi5vao*HRn z8QxkSVQW*Vm9%$Mc8|7mJW92PA8_`0#vSwcCJjd9j^$X+HaAt|>k4~%{H4g6k7ljT zL#tv+DxF+BN;_Cm?pd^VZs(1iT`ZMLGTkV52B^%Nn}ThUb0!P5JDwXQuZw`}Xxpsf zdK#7a+PHamG2$)E78*)ht>XMQr-VMOQD}~?r?tjOxq*rj^00VfO7e)gOP~)&u5_}v z46;-ga~odo^h})y9essO>bcTcwOZ`|?gkgw;;(utIvHjvXa9l|)t3f5&$11t*r2?$ z-32n*KBEpf)zLHrAKTKhJg_|q{iHE2LyEPJO2dzqW~I5-Xlv|PK||cFh1v#PC3p)# zqc?}_q=kkQ|8Ch}?@Dr*t%>m9MYqy|z{DgLR{(>=2mCJNcTi@jFkAr+lzT5QM{Dkv zs6Y2ykaw-0LNi)EO`D|s+N-EYgEV_zC3z7#K7w=1SWWKvX?k^1o0fbnZ-nv#8?AAM ziKjWl6^CL^OWr#MDH=VmT3fMrvl18R@ROP<&iH5m#zNE z*Xm@G-C=d;&Z$bP@XiVlbMKZ@xA^TzVI|N{{Ieye7}Tb9d3??gSm|fJ>XP_`B48Z2 z)7p5%eIM&rk%(<BUVtgDO&U_=$DW<)kcmB- zY${Mq`Ua&WkX2Yiz?nFZ?v)%VKNsQx8h${SFj1uLeS~-~C*&?pu}OJrJ0v77j-_FF zMLRiU5)QR5FOx@5OC#5+YeZ(*!EnCRk!m36PKdDWPC|-XYdn$Zoz*_jFn+#LYLx{GW`2l?s5?>>W;$YB!a|50e2LW)+_Fs zn=yImL&mKQjvp#j|}Ef?IxwNh;t+=BS5 zsbX8JZUh-&xFaMJ?^c~Z@(ypJ?9?A|3leUgKszir5qz*draSi7FoP__S9Z;OHX8XV z8+(v&3|_rQSIg%No?J>6GujDJ-TvAc+`(+tXet$JGX=-exV)hq15yLW(x|+KKGyi# zF1@v?Y)OivI8!|0=*5^c=k>}7w2;vnw$PUwbO(;mk=wftPLu-`coYkXYwk_*%iEht zk`twRy}@qiP@g|=<8 zt~vlP@=!p`1FC7FZu8VSt~f_BRc>cyU2H?glK_KtU^-PaU%AeVHl~a>G@$e3Mk&3n z{=O=^k!0?NI_N!Xr|5+IQ}_~%UvZ&F7?`_*9+ZPiGLo%Ww$|R8& zFJLzkFEGUSaX^@2QUmEe^FcshWmKy->ag>#-m1DeEyzg1wzMwyZI6T0z_z53&Y5r; z5|!ksp#u@+Xg8*VqzbmT#3&|_u_;&zc|9;PN+BsGIZ+e}i5OFb^U*TAO;ey@SkA*u zbPU<=WP7(&Q;%VZzlIcYjCz|&R1?2JvkIv7K4$ioy=E(XFZ_p=pd>S9qf~~qH$v`W z7u%G7X!nD}{fTn9kWv|{=)$c_&)t*-vT1#Fl##P!b0U+sVZRkjUm=>UjWOP7<4B0{ zNs{>Wij(*SIU4VnM~D`q5rtwA^ZLKu6u_t$_Mt{~9Xg>#l}{D%GKTp2yNP22PRC+G ze|V2q|B@3KKTr^({gx;=!U2AYMQuda-3I}lm3gLD*T6>xo|Q!nwxyrgt%c%}GWd0T zM_Hx#L;-aa)1B+bjSJ!qgW$tkmX2}eO_hpM60JPYGL-8GF4CuX|{Tov@xA%6$9-#z$) zJ0c!3LZGPdYCw#Q0h-l;MtTB#bK!4P@F_0)>n3u(Q-L;87LLS9*4|vMv~kzG zx;~s68D~D9pO|*LtI$cOg*yK$EW(RCwle=Ffsdm-Y96%?o zSZy#cK&|uqnyH*m50~dBC|nn9K5%YEQ#d*Xx(NRz{H>L1#T7JxX~Ogr)S-Z1g&-PJ z(o6UE5j=OZINimOep-5=5f&R^0aAD=Fx{F1$lqNm1)O(UV$F^`Vn`= zdTpNT=M`osl%B-l~l#CJ8%Rb1n9H-|K7E!ehWnkgd+6gO(r(m_`JoytydY8K0}c2+yJas^ab{v1vD3FLET5nowYy?We^XA@OiK|DA{UZ5 zl>I^k!Q0B*WA) z5J`C9cS2`@-%rK6G~pU<6nFIR6Is;w?L^kq0vpe198etr70KVSfR&V4 z#tR%){Cxjm1qz!;$f=%{pQH%u)dVl+FSn0j)$CWzR$=r~nDSo^ljmCP_r2 z35XM>%48Y!Go^aO&A;~U%g5ug?K{Bp-JBk#{H=&sg)6Tsz$dqW$Bx9-a7^Ko16e3WfEwxnWg*k;b-OsKoreQj&SUm z7V@vw37k>for2PzKJ$2JtIkicG*hCzA^yMx#tc zs>$b&t$?#IYJ0ByM{4y52~ya9LxSevAG$~TMGG*!f_F4bJ~=Z~AlugGchZ1^I@ie3 zksKaq4c-CvyJ?1V(YF_$StvC@vV(^3hraEV*@?yYdPx2*YpGM;tx!|3>K`uA+a}b5 z!p8xg9A(6voCttAz&UKj=0C#XJJmFs&|M~C5UU`FRUgFa4Pwm%v37uDk5q5=o7!yD z7V~s=xMe!){xR=DovC|*s4~X-?;&^Qf1t1wcCi6{VEsAGX7s1W34a>eBMzfnEoJ(u^-|81kdgk}k%vBxw@c7=Zj)MVF!r=rz= z`<=F!cGBf*-dW((x+Mo|9(Qg~{E>%{>fIysimv(C6fo%%x&hPQ0n;no#@d_^Q0~v) zoJuM0#S`x!JN)8rFaXP@p&8FtX!SLho%}oe5!MM<3ivbj0sL(|<4=D}wsy^%zzO40 z8l4Y#I|H&u8^Vr6`e9?n;Cu@&aqko$A63b{PN%R@u5H2@_&N>aO-}x=cMsG6y3SeT z%ICQKu1JBc$So+pDR6mMJLxxI#uJIbGml5T+KecFocCq78p&~c9iBxO?;fy#QKTCh z2a5atI(d_coP%*Xf< z%V+So=fiWU$&2lHPPr_1so(E-s9&8}2`5PWr{DBu1fl*d=O(LiRUe7Zc4gvSu{MCK zv|HB@dMU5k%3_b|2o&Rq({84KSvP?Sit7d&1g#*?1C1O-hl1;$_Sz~kujpS$D<7UO z$NV!P1MoL9#|TIH%0ucu1E^d2QQW_QVgMxQ!t$qH0Wrcxbb8U<)K`g_Ne_!Ha!9F2 z0GL_w0IX1m&n$D3()!^V?i9}4uXBdSncaeG^AMGPy-osvNF-^1xiH2iBT=#Dm(Ufk zt7_*g^S`iScK+lMlFw;+BztRY3Zl~=%~lWakJkE{c0tX@G(EY$&1zLTezOnEYJT7P zZ#G-@Pn!kMnAN6`!!vR%^lwM>g<`(!rzv*h&xm}nUU#EcFU z*Nl(xVE@h0ue@OY~#E(w)H!m=h zWS(jBSC-;!!{GUyCIK990230uXC6RUs`Xf$0g8)V^&184#*j(4)DV0p+CiCm?n{o!dv@7n?1ie%Q zT){=(gv7#`JEMc*YNE-H{pwuBZHliv#-cP{RkG7R@T%(H@akMj1aJiacK()x%r_U1 zUt^f|eE6A{USga;fubZnKg##x4^e;pQG67&Oo&D5&$|nS@3A({OV2&lHFn0H(!05) zc@%sX${RWyLURac6z0j~9sL<#!U2hvM*-js9<}XnlzdFnHgf(>hJSMifCrHH`e;P} zOe(N3lsf;sQg}>!)}0kEfnY-l&Z`x{(|VP_J#5qL)SdA^-QHjw%KDwce?<5Hic+yQ z2*56{0F3zhqo@TGeYSPSaEZnOVF45P&rEXDIXNEoL5t8zuwy`THYKbd&|K9YzQKe%t*cPI|Q1 ze;CfchEI>~?zhk#(C5X8`nbpY8bG)=G$WB6kEr+t%+JRCPGKca`r&f(;r@G%TpEEJ z0^Y1}>&t%NA*KmD5?xs%%b-8WtQARWzH~Wtm+mJ&UaT`hyJC&9%ycc;>v{Ywuk?J_ z&6CS(Gd;EP#Nc&h(PIE{vlfGrdi=;-PiD#`ZSZfNV{8l=biQeJwp8aII(;_ z0Q7_!fprCz{s&R4dDw8g83mdEa{@$m@@8HK7?;OIWhUz{;@p4!B^r2hR+;&mI0s$$ z=DFxN^#jC1#|ie*H_uzgNfID_I!-|V2?BTk2?KanzIjmq44?(o;alfrv0BuPJwIBM341?e-Pfge#P-J zZuje0;4qx8|FMv?pPhbhX8yDFBa!=`y6pc~1am%dY5|D%|6gP`$^07lW0f15w!6u@ z^)elg`=9^u?vKBAowa@Z-YB~8YEQ@0iU_ctDR@>+^F*`Uc`h0OjF*~9Q9;SuYamw% zj$?8Y3+_;YdN9%eyMu-c%@pN~7FgC8BY%vc+Jljowv1d{A(^bj!!Hwa{bX~)d(;cB zBHwi?*jX-AFdK-aKA=xs-Oa#ZQl}8Qu9(EN@}4&v72x;e)zurDBsnPhx2iRpjTRQ% zTpha!zRdS*gV~I3tdO~*t=1Zy=p2r7PJ4)rhe+02;}3eOa3HtX+y)<<**^f&KTtWF zz*q)KmCJH58+{G7|xXC#gyQhbHc`}X3%q!u(o=I~!x?oMeVw`ZVpzJ`7!)URor709#vYLP0 zF6|h!6!RAMb!;1gDVFFH;xhu@-SQd4m4sS7MU3EPB-0efS7KW7Izj})TeDe&!Ypz774RY%(|Ff0+ z{GQ#~*$ksC46Aq8oD=^SckcjY$@2UUwr$(yw5@5|wrzXbwms9+n6_=(HfGwkySJy` zdtbiafB(CC&YnG6_uM)+vmzoRK9P}Cw<;?VUHKkzCq;Y42CNq%RD<~j=-ym3DA!du zI@!8Lowel=z$NEPgPw4&b2npH+AheI5JD-&&(u$Z{KE0rU>5EqZ)adGAnw2xkSwIS zk$Tam-Z?$4NvG8`w^${SB&j_vRfw2f;s!W(pXCW>9nWwL7D5>K-D6w`>a5X|2Z~&u zWs6gR*kPnLXIJ#P560wOosat<(phJY9Ixqs>z4<^eV zoN+*b{YxBwKJz@{s8%WCpc82R^@IMG8dgPmG948=(ftLQ(_rzv2TU zNtTdYs=R7h+6nt)b72Exk*F#405s`<@m2 z%h-_(3rh`DEPJ$W0jY$P=e0d>FRq4~&)5!}mTBj|4Y$k`tJO*`ls?V~D@td~6{~^B z!Av$E&l6rNbL0p9C`wmxmk;RaAv!?Th6ZSVK;VCkKMOn(##o5S(RnGjpo}PggV&z; z78h2EPGpD)<^X0{%`l%9S(QJGT@J|t!{`WqRqxkSK0S9l)=uS0FEa`$yT!k>^I`XvxEBEctNOwTx zT=X=I$V|wh9pK^q5!lpExa;b6VCtcurNEmDYvx$@V>tcKETSyew~i;s000oN|Ksbh zY=2Cn)qbBwixPZBe!{2LP9AopjD$$VJ71=tEUnp~jXi)+Vn1r7s5kTa6fFoO)~2Qc zDOTy2eV4hgXXM}+%i^)M3^9k2>INv%s$YyUR?xYTeJWxY8JRCFZaH@jgx}QFFmrcC z=9!-(-Pa_{ZzknOZQ0OthOJ^R9#vT1>X%hF9j|d;!q&cIAv3}%Ht&N0Qbb>5b{-ac zLQ!e!SJL&4|$;N>`3iVMPi$eqO*AxR1oaCY#{VC5h>j=P-5@{O(Mpn34|o52t63Ne@JUPBXow@o_a4hwLI zZdJL#f@^$2=G27|@6rz-h@W9uA5TRI@LxQCGT<^yI=(tn zlI^lb_hQn5UzaY!)8cBIjmZ5J8d~BLYcWrlnSvXj#lapb;8C(FeWtt{_lglL(79KS z;lS|x#&jV2C2tA?=4GJk;Uw-2^dE^NO0!;Uu$xf(bo=IXY2`?WZg3aDkbI;|0bQop z@LENl^avdH9Y$%jv3g0Hhv-4%o;cV)$3@?pVnlTK|RPiizV& zX?T(H@_W+7sNy=xWU&F(2}vWc>Z`X1>K3ZpmBrnrlo3ev#2ujsq<#*12`MfD3zDTc zdNe0#W>!j-F&Nrj&Ky46-ud)Wb8J=fg!$~!*a`SWMy&Ixiim zuPPWjCiSrgBv3+tQ~XjSX@@NaafTUJMCc05!w?4QBrY~%E!=C#eQ1pl*4Yim z?bDW;KUVkJ28W*ZuHqt!K zdwIhv@O8(io_#Gb_0Na_uc0TL(yoM#1kR8OI@Z~UnWKE(t!QvRwDgJNr78R zF(kTv_IwN>c3nK#s+Wl#xdQ}BA*?t7BSa3NwNM98Q6;e-K5>0E<#pJ3$XDquM?bU~ zrg@{3kk1ToHt74sFZ(_fq681Cwsd-W3s43}G`5Ne~fyD{`LU1M~y6lS>88%qY zhnpaO*mJBzV3}f-ug#5LEsQJ9g%uTu-_OKp*A=eC*iGz~o3c>ths}juC=g=ir_#Ea zNhlUELQofilV>9$T6WuN7D}XN6XTr@|jyaz3jHV{gw2N!rJo zF^p0MeaoH02?Lu7hV~-DBG_4gbHO4AD5D_?`GJjyXw8gA7mCIQI+e^a)yrM1qP2FS zcwB5D_%+>vQci)kk0YO5sovZQi9u@-c?p2hDjyM32rW)4cY6am3nI=@?5Zcd7x>U_B(Tq)nOKvH7$y`JKvVSVQl*^=$MC$`pT~<;( zM4{>KonxSCj14qrB?_XNi)!OtMBarfzNU z4%beyt~H7$WmE<?aMTtNz8ciWFu8NfabT%ozHo z>raInNSpz-ifzKgT*4?`;+a*H8zX$eN*_omCn=$Yf-?FU;`UPs{-YVGk7iN_f2D>_ zGk!E}3jwQVZSrIUV>W!4qrIe6)dR|rWJCxE!W6bYR zsuNJHGM9%%*7GC5#dfRwBThr@=$k*doTZH%q=n2gKDcV%xmf?=Y7cu8#&^LX_y>sH zFYtQ-KbqfuhIE18*%r9HW=X5?Af<65$)}UhgC5TKq53^r!=uKK^l=#5{}7o;C1Fel zFn0u0Sd{n^8}iU`2P{#6e(GIjNq#8JKZE`TBu<^Kpy`?$mC$Y5 z&dW>wvm3}FWbH7cySx@=U9N_S5l)A~5Je0U9zy2UWbRU#A(lMnk^WO<5C46d!X_iN z-gx#gq<`A~A$oQJy0ilEA7j@?9m;oT8j=5~Q?h|BUHuQWW_h7Yz5mbZjFLypEpo0t z)!zPdfV%;iQkPMDqN)1ty1)Tns6w!Rh9$C)DTnk)P46=J|C@Ehp)!>8PS1xS;0?OI z)JI51IDbJOO~CkFS!b4cVxJqT%={n5`|n3y0u^|RsCASA`~~LkI)nW8x{`md>&|!jf|Mz!7+ka=?&V8@bEIk+H{TIT|zbi%m zoiKN6j_I;|=YBc~^(ccg3R!0s$yU=4XCnQkED;y}sD%JK#2IY7Uq9=v+WuL5%Xv;| ze!;e5w;e~?yPS34=3!~s^`~QXQ^iEjZaeQ?`qQJA<>`@QX%jth1#4vM@~2CSp1~4W z;)?qB0^_B{$Y2TWzZTBH%IDh<*6rq2Q{q&)M08Ft+)>w)XE-;`dCPa(-+34=Ed~Zl zaEU8iJ_^Gf?Zw(845miOsZ0uzqnJ&kyOF<;97SBhIEdSNGvjm(#>GA{>=~)Ksfrz$ z^9QnN)Vl7zm%2N67|DCOe~zETabTk1y;#MJ4ppARXgU5m&r|j^l?e{olV2uwWTaV5 z*}zLn(BFFfbvu{|1MM1JFZ#~kI8nvn(CA&+#`G>^%;rOg&6ve+A$G*_o<{HdD>~`K zAuZy|T)%}pO@0VTdHfL4LEZ3M$i05;hY}OsV{tw7mM2;7n)uLv2sx(~`z-|2_Crno zy$u`=jF;a8^}9xk=?VIlGQnm4QRuHa=?hNK$Ce4UX2-1GGFp5u;9Tk0t$KD)L6(7cM{t2GDVcb*(t|K1COB9!|A`c z0v(t{#}U=Fqw(#K#Nx_lTb>Q|M`d<}xt~y??-!>RCZ5-m>$%F5}YIWAcq6_JJ zBA8c*nW(%m*C`kA(k^HzIkMYfDo!nUt$rW$jQ+seD)a-QiWajEkHiP<4*t<5W_GPD zpVe>2bg%q&40qq^2c~H&zZrhIJu-5;EqN{eZgBwQ4~p6O4+_N650Mk7ETX$^kMTbb zM$Yvlp7ejqu$lUxAoTxDp=r+;`SU>Xw=%d-W6=HoDS=FMgJ zBo55UyQ67oJ?f?}%MvT~z{P9j`1AoZsS`3PzfKMr8zmxirwP0a-dJeYGixLjC>;7b zq@dz5t1J~-d5>hnEBXbI_m0*LcChAhVB;aSO~|s- zyQysvA2^-p7$%Ihms+i0IL;V#6<)yK-0y=i;CWV_kuO{T-n`(lC9O#O zWX?7>3^+9nS7(dnk~(<`*2%2j!jB(~saDG+7NlN_CT;#Dllf>YR3yZTPlNBJ%4L1U zL+HHD$4VvY<~@-R4%8hTE;psKjB}8AAF|Yln&CH$9`SP26d|gtX>{=c9*vGm@W`0@ zgNZAOgZJ64#R|Dfkn^qasS*-)cmhpKNPC|P#6h`VRpn)c%^&UE5bi)dHZ*`sZ@wJt z0k=(B7}kIu25V~znzAia1`cOgc<}dY);jBfxyX7IJyjNw#O;Rbm{6 z4O8tU>Cpo}WgUFoRN1dtaj#{;tCzDXB)EAYP{t%R*D@~^O4KiA2EjB%F^xAL{~;$K zO5Z)!f;(!kUu0Qhixlbt3wb&bsJRB8qG;wRO;u{t|4F*2H*>FYI!upYj-zBTBJk;( zZNIJX!=q24kO~Qv;{IeP&{bL>YtZB;X)%>Uu|g>m#l)EYi%&V$0{rV(9X9;28ZG`| zSlVAyq#S=X;;p%8Tttd6jF|b{=L2dq+B>Z=!L!ZNlx^^l0BUehT>muT<7sO$e`LAr z(}{haV_ct5^5kmA>_3QhX$Q=YS12Sk#2jY=%xc}_FiRGz8a9@Be+4`DYu=Rg!mXe^ z_RNSLQ}hZEOo)de7n7Eg^vT+$%1_~w=E*V@Y3m++XzeB(*7;~{Y%=-85ckEj0`Reb z6qE@FmQHpb2!gk)v&EHVnKRiO-zWK_6%!0!{(af$Y*mtE1!J{-$XeB6Lz=HwRh#a@ zO+?C=f^B$u>qGa}s-?RfxI2#b2T5+i(2XQUXfiRIVCL?dd)t2l7Z#ESBY&og;jr$Ov9rUv)ez~G=2-~=C=CbW8 z`QP3mJnySD@q5oFudDq(-XdiG?|kwhIAYVVM5PcRF8LP9b+v7*^aXh@;ejT5BB1q9RX{^3;_L7w)!@KSbFDEl@x+PO z>8Z+*1o~h-#%?A>H*n~B5K6)U;elji+B!nG8rT#CiA*zX@$Whv6yfmdx3PV~@dgp* z>{!8X=HK;cKiPX#hWaUs4_xTQ8T&{!{0#Zh=FLJ@KlKzNGMgg|o%%}+ucJ<7gFWH= zSW(kpN{IbvM8D{!A2@q*Y|s+`sZmy{yVBDSvY6f+bx%#9gY(G8OMWjVJE?u1;Ygzn8Na;S4aSD1ahTCm*0rhe1gBM$QSTD(i-N;hehoo*?-Bzht{xU2#|$MEtU)YJUJ|bzwB5 znOssTmx{=+mxgY~QEo+7ouR>%@#_Q_N>Ja!Cy9o$eYvaxORgjXU`l%UtmE}@XQbh! z&^Cv+_3h`KZ^z@$T?6Nf!y`Vvms{t@4&C__^a`IB7sm^i$Fn_O@0Z&rzU!2Zw-XA* zSzncv_XvGB^1ah-_j$csF-oaeK*wMA<<0(e>z14madOj_LFMarY^tu!)4wVJ7V2*{ z$n$G*IOBlL``LLx_PIG@?daxobmRW#g%BJ1f+~7Nfr3{S)Wu%N+}zv~o3D@C+wN5n zO^iT{ahkF7gIb_>QUOgYU@n12^4QO?Gf(#GPq%s=l{}4jUckAN8Re4`ZCpR%Oa%=@o>rg3CY$b>@`{*&nn5rXbL__UKoZIET6A8S5|y&BfPG26&8tB z-mdB=mWgIBUV4JS-%-R>Ej0OZEYkbaQ3W<06-UhlKW%e^84$v4rx_3kD-angAd) zqKsoKf`~uiw1Iv-bMe+1lMGqAPVQ)3u4u_vJfXC37g|?ElJ1i*)Jr5fkg!(FSp;yl zeFev1`3%$h8K;-2k3T$5XgH5ZjP<6`<{olkv$YOkfj|Y@m3oq2fkeB=8hwHD==A0B z%Xg7bKef;Rw*m~YxJ0ouC6FN(+&eJ7Ev(E1c-z9e#9gdo{7_XEiE-u^Wcw(j6w+JV zKkR;b?lmdY9o_zcXz+m=CD>o6O$^}n%I;sa4yQhPc~~@RDKUXfS65;8j;3u({Mi&@vua3;aDq+jx+by=5Ci=n=xFt z4_H7~w@O>+cW~@xAs7&#?GYwWfGOjVC=D_(t#Pb`nN#gTC~;5 z?qG7@s|Nc60JO|o;*k=)m9t#?zcH(jm5k30aZWq571kvq^d-FoVfv$MpAfhbw)pTw z{ddoX{)Zldz5F!20^G<@d14ZIQdIs%T`A&Mq@a6wO*`b{ zf52@xE%Y}~*N~0Tl1u;5H)+|)r2hsMKFjG+-=jm* zPAdIxeC{*|9 z#c@;q)oYyjEH_u}H$ULX^PKi$j)xhF#~DiaN9Vt**&WB-llcwt|0Ljf)&BW^C7@vP zVB+#gROEk>k$&`Q@&IoCFS($c3`0{^Vo(~s3t)ptjAH* zD1P-sMu>&xJsDqQYWaB`THnRuvc~_uY+nlu_uve;1kEXv+C~1a%E6hwE064YJ}~RT z$DU6mw(uk|evA3VOqFMK;J;SrWEJl;?dYQ=5T{AR*l*Z^zAA*rqk$spH0o2MjdTnh ze)CaieUgQzQPJ ziS5+>*YsN*F6(kLoQF|pBEF_9guy}=8GPMXS{0V%Fckh4+D#L*0qR+Xaxzv%v{GY&nL6<4Ea9j?mOEt~abC$Hb7o6$x zotB>Hn;~ky{_QeoYT#@KGVlL6IthL+xc#w^qLZ1iwK4t2p5gaD)?@Xt2y8Z#4)jMp z7)RGzfl+32P)qS&2Ax^~drmOpNiZ*vLSn95)ISdHE@yZFv%>`GH~Eu45oc zY7g+I$j26m%XUaItRysCU?W6d+X@TsvVAjf*`O9HBqp>uB_@3aw`(q+%PyasYlw88Qa?*%O|f zAPcXO049JjyG;Fp#lOQ@u6wrdSeL{L%l{p*l)0{NUcJI80LJpmbOqd6n@5F4{dw@~ zVfxsKoHtD?SpH)G%d_4jD7}Uoti;6@7Vj}L7msEKSpNMoR=bYHoquz_ZUB))e9!yK zSf$D>BXi{h$Re(p=O!31he=ZI(f(Fy#wqCr-AGN83kFUp7k~gLu|(oXvUDbH{vxp* z+CoEs%SbtaEnV3ywTG<3&!^!TOmD{`PV&CG69U%9nR=F(J}Y}xF3Uuv!)bN^z?OoWhV466Png@CwV6}N z*sj84Km%XP4H(2avO#2%(660#Q?#LKTNA>wO~rk?GEHG^=2xHi^^NAZ7{u4ro--*t zyL}6f?a@D(%AGf&cE}dhgekblps;7yy>(R=gzOH%!jKPfnr5l8>?udRbyQfep6py{ z?6xLzR2Xa7>f+}m4~?Mzu)3s+IeqBG*5pP0e9*2X*GlcQAlivN<^~YZjGONnUxKzt z<6og3Fw`y0G0li)dg(~?{RLv|D~rvw1>{=u8FS3tdtNrD z|H#-DETh1c; zNm*g<>ye|v=KEk48>6U}1I(z%`>EQ%>&$BUVC3N%ne_{}^QzcOWDJe$7jI^o=dp1l zq+vNkkA!iVDO5Cr5U|)2T zG2iJ%gygN{P6&lZLT@vwQgsV?e_lsO#9et1m!h>$A9X3-T8rdld*Kv>=AvF=z zvwg|o3L;&`N+_}f57={SAdJbw#dj&S68492UTQD>E)vTyahgxN1By8HHlAj^ujI?P zO=C@bOf*V!Wu)2Cd>RGUE2;Q|XiF3h=g($|_L_I&j|k+m3VX3-)*9FmU}i3dXl4@o zj+jf?xv=Y`xqAFN&xNc5HdIUlXOPc4E(2DFN|nKTtIKD@D(FYXG_76i&v{mEO@mp*c`}wDZe_6TT+sUKgsNGG!GhB1K$#RzfjSl%A zNiA!i<)|sIu*W|0{7_mJXj|I{KLJ?l6E=5N5;JUa?vf=Ncq*5uP-H6`z>58fsrkk>l8(H46nrd&&-|mVr=}kzQjV&zKLgGV=i0KBBAVl*ntW# zh5%wSTx4qv_w%tRA3?)~3PNUc6hhRCa;`g{=KIet1LFb>y-RG`gB7)?Gj*Fu! ziomWIqwKEaj#|r7q}4~dJk@PIIU7~hF+wp%`)yh9#+fo{6Z0)iT|}w?#t`ZlkMSc1-4YSwNi+e!wDNNqkoGte5K8?bQeo^RFv=4gllGi;-^gB1O1uoW7*dD~ z^Hs35p&e;v8jCAZZwBnp=7?;GCis=NT759lm{$ILanf~M=)pd_MQ%yR7rf{)GG-WU zNPFkMAW)+H=1e0efpJSQ*)C^`ED#!`?TQbTjsO*pJ;NY0#sKw#sUx+ zh2}K1Cy}iabSpD6c1SPe7l97acNhncI1<^#?T+&VT`P>x@%diDK)D>-uCFthpN?P7 z1bSH%fMZ@fKn)zw7*xy`FA!Sn=(Y#|6X1B=={VOIh8yPMFzGqw{W2#D+#aTB!l||M zmg?L(#g4-}z!&*aK?j^2!){5U-i6>_Pg;r#J>3;Lon>5XG!Ga zq&btK!e1gPEdL^wG+qQ1Yv0e;-;#`P(`jkxU|YutV$xX4m7Z)NDdE-PnZ!A^dztE^ z-Vk&;lr%AF4;F~bOjX%XLkvE{J)&Na9x)c3oTl0;iiJ}_ zvlf=C1GUCuFC9Uu@FQ>Pu7&IsbS|-5h1@~}M?B1G3lux755sK%qPs;U5^Lzh){+yf z;1|$Kuf^MtVOJd|==yq^U!8RZC!9gbKkHgEt2zRSeB9knheA_62-Waar>@Nxo}KIk z;^YQ;xnL{9fr@5MXh6~+cb587`e%|X6X~^HZ=OIc%SyB;L5~T7p5iZ*LXbln z7exuek6k0NT$rQUCan#Ge;ow(sJXYmA1qu+ff| z&ecm{01-y()-DPnS-9ikRND0!t9d+DmBT;U%9TSMbvsx~_bBr@))MnOLP;O0Zn1KM zY$@fW5SqJe>8l~!b)K_-Tb;o|YGw*BRET3~wmSI=x}^n{xnl`8;x}y7N+L1(VGl=p zxuBo~tOmN0CQ;kOY_!mlSwaW_ElNl0(8|izG-Ns1;c|334fM;SZqz6ut)_#J?9dCO z{BxrlVujw)Dy7c9xeV#-CVj8JVviRS`HG;L0j$ls`8vmicb=Z=>4XKoRJ8q>B=I z0_xx4H|#LfY}t1x%MlHr$o!&Td>el_egJE+!-8IV7=S~Uyptx2;hS;f=>b(m+0=1w zz((Y!sSkNczFtYisTFrMIMw$vp`V;yZ@d_J9SQTge@55Xi~_%Kx|~&gM(a)N72@@J z{VY>3wGXIJY4RiqLf+r$YmU4f_Iy?t!gX{oBZVJ18#2||DE$8K13w$A;Nt%Lnz=?v z+xt0&>+~wJhxgzhuhLhZ>692f8U!|BoNO}({*H{%wQF+*Q~1l6A$iD_7c-0VrxxWp zKZaV-fT{C&oKY!hUo0&6oYAx)eKu@7sA8)0{%Ca4&9Ns8&%r()suHEo&)Nt`TG{)7 z@e-doa9%iHK4$Cx=c^_?YM90f&;S5b!~g&&e_j!o={p!3DLOfr+n9b_7|d#{ID8ku zYTqdK4xwA?m9a8fa&#DW>4pk~5K9ILkW5;Jj$BrlARu5Spq8zJuT*WJuh%6Wx;>W+ zQ)H>j$O@2n{nqmSfRL}D!pBXkzjV6^#oS@-(9D#!KY=1E%*bc$asN(+uQrvY+X$`S zyt_ivl1`Iv_4$TgRRImg5ZQfA14a1OyM^}q`>jL;Nv7=0A;EO|9w5HmtNKv~yzyWD zR|c336BFa>bt&J(G-xD7@)~Wlwc0JK7!f-XTU+8XUB@-qR25dWP}$lk41DJ3Y|57< zDiLqH^FtS`FzAMeC6&0Bo{SK}8#$%|Ll9Zj26qFz6~VP6WD4$6LvuNrGswc(i0;7Z zEj`8>PV!b7GCs4=3e-s%jxR^*so{CZ;dvn7WkN|ZSIy3_1>MX_>lYMQLmkzncXOx* zib)U+g_2mw2sRPM$BVh_3C|JGel2){XA=AAFr<#!Pr7t@i&>k#-$@}0O@~ySIG_(8 zE>ytSVx>lR=H4zUIIA_vnl9_rKI(>tX6yr?Grs}ABvQM-D14wG5p%kQdUki8MJba(W6-da z_Lb0#GiwA%721MYgJ1t9{#6G04?xE%$vOhwJRs|SImwXEr3B+ou~mVYF*O2Egd5e_V0r`|$cAz5V5|1O=sW;D#pv|f=x=T|l+Kd>3VhrP?x5{` z^^CaBat7ww!vL}0WH`g<-wDP(a(A6=3_qY}&y4e^IC9(X=LsIFGI2+X8+qU%yC5yc zV?jNlIJfTnJLK;?roR@-BgGsZsr%rCt5{^!Nv)B zv2Ds{3&KsK+pmkk%l(H>xDiouwB2gLPo}!Etx@!P6@0`t2qD$()hI)LsU3ID2)Lm+!jo$w5-NMEJg2^=ndIw5orH+=Ug7b?GQ{eEb^Oa0t z4i&k2Z~;b}dG|Yogb)a>_rrdjh(#XaBdmB88{!JpTZ-e3+1C?QNngK9!?b*kW+f_F zPd$p+pJ`U2#YJ&qXt~Z`&cuGoOd$wyKxQnP2&O8(U~dV&7C%Cm;ksy?WKiGuj6+#r zlCBs>pnk5q8?TKR85y~=-SBZ+Y2x+`c)J;Krw1Lm*|))nc+&boiN_k%rr}i%;;dVB zYM|8+tCin`RDaYLk&$m9jb`4yZuR8c**<>=eyp8!h3|Lu+R>?)PH7C^U|qonE-f4v z@l?IYq6u)=)Zs}XD9XbSP)Mi1NSQOI#`D9N4r$ENsUv| zCpDQc2?)dQ!o|x>S{arwSqIW@s^6o6QcH+l1bP{e!xSu4?kY(wt+y2->aw*wOX|<& z={oBcc|yAE>SZL8cg%YqqzrF?C8xI~6XjDW2-i*X1JlMN%0K1$sg~w+vLPQg&-34L zgY(Y0d1(77e%BU4WTNZiUc$J8biqJl(F=m~0Xw$V|FN!;T~5N)ELw4u z8WdmVhGSV;ft5@y#r?zH?PbXuYLz&T0|!Qf345;#zsFdGezdcRe}ZgGcF}?`HwdUe zEcL=2uX`zzy9>ZIDHV_w4v_Yf7B+XEiwpAvhio*VU9z-mAVXz>P}!BUC~wtL4vKM*h2`avV#j^mQ{T)? zpYf$~=iLhnPC!w3r3io8IJm@(7BC~MZf+Qqd5ax*w%9WCFEB_Id}+P@rdAYcO6EvX z-y(8E?S7A4farO@5$6S%i}`d zH^npx>^ZW>4o14bZdqFnGD%syFrOWc~uFPd6ExN-D0zg{K9LimlKsBSj`s@fW1o_Zbj^oUG4 zD}O_o4Ce%}as|UUY^R_no#gvMv2(2~rBmcZyvO2daihH{XBT#tbN+aXcaeF$3CD}b zK@@+f>?v|^ha})>OYQ7A)*ZP=9qE1MY%9L?=r!lyxgI?(%T<^c@4W=dtM9oxnNUY1 zDwl2rhYi>v)1S=(#%61dg-)~*r1C>P5CwU-Rv~Q66wm>&;V7aRbU#FfK)F+x#%4#! zB{&|U$uAtpEbC`M$9Vkd0*vbGp~p4gNoP%H zIVPhTwK5ckuGp;YpByF2B&3^qU@s+SD!SXjtYjH94weWexu+>$bV#|<2Vym-xXUVv zMCj(26FLgjLjvtn?eeV1#nb9Efa;epO>CnN&dl!%hY=|KYCJ$|oGLlN;PR2Ulw%w|Jy<&V*w`3cA8X?mLvP9#hpi8pygv6GYHrU%B+M(@|kX0OXiw11{ zTs|`9`?q)HUJlWNJKm3wzORk^ei;tnW<_u0pzr$o@|#}Q!Pv_2uj0pyPP*SUfiWZD zKnw`Ncm8h(7PiGJK`_(iY>b;OlkgPrhfcLu1Vb>7cVMfLpFWK=r+C7#;GFs(@?}Ou z2nf(~A>cSM)2V@`T*L)kq36OHe@VYRuqO?Wgge zVj_pkOEGvBpNyg*A7HEZTQ8h^dNb*~??)m3PLLx7zx^yW_RPm6lQ82I`MBcv!)QTsa%PAkOmC3ZhZ?c$FL9tf1i5C}dv>5_p zmn|oiySgWI8BRpLbznC7y5fdxj@BVcoXUHJ$aj(|mc`0?UQZN~t$yoNqtfK07`oes zX4_xey4yIdD5Ik*m<9xiE%-9Pb6A!YPQh5ZNBlkuC*q(Yru+ICO8&EN-qcjw2=T5U+3VKs#yeVe&oNv+_30 z_)nuN$uL)TS;xzSUdv|jN{$e2K8V||DS^J(_)Y}NJVX?+P9Vc)EGNBt1fcn5T@|Jxsvl-bq%_t~D4V}5(a!a}M2wjLR zHUzuqMNGxDH%{+tDBxo_+PIF=z3LSsv^?c4w}biKw<)i4k8~X=Fwo}BpTyuEkAl$7 zjHxQn5ahIZ-U+(ZTn3rsg_WzDNcYx9=cx(SjeR%CdespljhPQ|+e>zGL2z>(=OgWDceW1rnV-<(ZZrRM>fdZ^q8cJPFz(3O+0o?U%DR)4g#HK(D+i>g$nU_A<~8Z>1DCG+iL~{W_2iflO~`_uab~hJ$-D@ysAH~w(6`2 z3)mC@m||(~o9TXi6Yv5pU8Pbv@;nY-q;m9?hw7P_SbQlMjWQ};Mtq<;vMrmkMv^gV zg__4yy;if`TTVE-I&7}?)9ilXfWxF;At)1E2WVQ8b%dEzxF)7;Oom_;%1u2newH{sDMf0T2WLdM^S3{@w%q-avqV??FL8fI+}O!N5Mg z;E)ht;E>>8U=Yv{kWjz3_g^s3P%ys>zlHq43Iqxa38|ufDZrw2>PMk`-$R@4G;(z1QZPXT@C1Wf;xnE^?`xkl?Hv+_?_DO z{Wt&!A}A6eg8&$^ygoRQJqn{=+&2i~&sANh3RCAKOa>1AkWgso7?@b3WaJc-RLm@_ zZ0sDIfABzY@(T)o6ctz3)YjEEG&VJN_w@Gl4-5_sPtVNG%`Yr2EpKiA{I#>Yw|{VWad~xp zb9;CH@c7#!g!?OQ9!~FkmS@sXZ{%O}T01PnTyYqk%0r&u3 z?sLPbnfPjCb{$+ABs@ImIn&$AQfHvrJc_rrV^DH`}aFUrsOTiw3|t@8&}c9jOyNyi;uPeHv3 zSga-cupZa%Q`8!plXnkzr|ccMxa!q_#L3ATsSHVP(bs)8;@wE2Dg;!YBI?twnEYfW{OOKH z>bq%+cN|3XCQcaW~_1o+QDo=et}s^SOsD&q0JQvy?c94BjGuI;a4h#Dln%W`*tJ+p`eQV-8|cb`2Hq z(6llY*Y>t9`{wN2b2QDmJM@qJeQ3`@hwu}vh`ej9`bDbIkk>}?;tbOedx4$H+NpCK zdtp$-)k8YL%T+nxbom>Ep~h@TcMn6l5O*luKayDk?XxX%iJ&XAr3(uhGcGCz1SExP z`9;axqCB|B)|NfnZ!2VTx@_K{^E+D^516}nofP|^laW*v6C8Qw!_NPYKYL5vBvsm3 z7;uh8W(0tK0d&-4dsN|bYov*A>ipkXkHuG+$h4x17RR zInVc7Ob&EA!qXBG20Ti$`XpCa)-7r+<$mS2?nk}+;~P7&xsbPbU=!cPK~O7E#mIJy zm?c)bPs=3V7r0ZO^0-&jt;mk<-*e*So1jJsP+64vuSt#Mw-B zeqmJ@a}a3Bsi~GButQC#e54!QzP*O}Y?qiDUFHUE_jejRh(oIajdCa_20I(|cx69G zxiet7aIbF(RpRx>HkoNn`u3f&r12yH;zApQ#HDV{>D~P^CD*%obY8FgOn=xf3mg2c zyya8(65s#1Yxba6C-D@v2KG&Vc1AWkje~d$99`Jf`*fO%m3u>M1#qbgGvpu)tPp~JCm_G^J zp)&vmt6h};ZeSZfURDzzvYDCqXv@uqjm1YKA8`=-ku9(a%(DHE{m3R{G@2K>=qqRp zCemtJy{pH=KVPvc?LRl&`GspY-@rYI1F!cT4_1=>Y}<-^$U!ugkDno9a1ty7n%nqC zsZ{s0{GqXXqnby)bSQfky!5xb_Ffb3&(_hFZEd;35SY2SS;@M{5E3&XpMP5D`b?o! zl`t8pQD2_>SHrBWyugKTWO$^h@4@fi>USemgwGjJ5f?iq>lNr61WT};!AH}N$fb>^ z<%4N0NPEwC^xqMs@|yGNnwI*;Q|u4>v}2wFG%MmU-;gFW?dFQG$prh3>wN|Hb5C;P zg%6ZomFqV;Y3FT!$|O(9huH8Vs-NtD4$h4Tc{kcSN;BEeie6JECJ)Al7+4oMjMr4e z&kaGZNOl-dhJ#onG94EZd@UyQqm~OdzTM7(8V47lA0AS+`RyI|5i8{p;tj-%%!gBF zhlzi}8FF;_Dk=vtGBr_DH8G~=YL!iIOW{pBm}U@bls6T}TPmp(_xp$@dA(-m;thU+ z>B7CKFU3s*hH_)?Q%|8erXi(l`xAoD!K8AFrQ38##uqT#kIp}NC|^0Q?0dC4;Scg`rx+_QA%zM6NAX>^F^j}QO{Md3nXFRlZ#7|0{YJ8$29RfG`~>DT%H?|9 zAjggHm$fIZp6!@QA>&u_WpkkK5*>bZl#T;SRZ%+(P8*zAa zVy3bg&F5>_*TT@i8XZg19%$BAR>V`!UHE!vJaHb+L2&VaRqd$KrPrt?y}U7CC6zUb zNPm-keZfrl=h;q^6&-2e3CiB7VkM&0enA<{8r32;|Ml(gDTSq6rWVx0K^!4Xpy=eq zjn7WWY6*J>9BHIik}rP-RNa5*HMWfC_Gca8hrvg4{l!W3q3jEv-5UIuq$%4iP@C$UaKif9?N9cM z-}_jynY^!B&PIy;Y@bP&e#&)lx{8-fQ)a)Lk}CA>uOc{%=Lc#nKXF0PuJR6#8wpGP z!pVSbqDknnA08?NuX6kIf(%%#SS0fy)RC^jeqAq3*a0SOsBnwsec#q0irF8VKmHW= z;C%t_9?yVh!LplYI?5acwo2h}(o44p!?1LzD6Zij+%BnDwM{{%0=4#|Ifv8gvyspi z(Iv)!c`dC6dY->;^`aGKO~1iw6UjQ<4H=n4qZS{)Bd#9_K7FdL^1rtJ&1b2xy%cj< zy6opD!&?0*{60`s_Sq!isB<-DWXE9+!U?U(3)skiB5$$rPUBOzE5*p$d)XgZ6IE)=f&%f2uFa4V zjf03RghnR{ZMtt&t{qTmjrnyWDE!GMN#%3}dV45qf0pqiQqYy5;XrT`4u~4Nvh*lY zMJ)dQt6e)uTyRo|L(weIFDWz=%#d{ZxG25AN2EQ1G@-~uzr-pWOf&8?b~}>fINKF! zDOL=x9^Gk-^Ny6c;5fEK5ZgOSVT^v#e4X$xL=0{xQVRb@K= zy5#D|`pf%+)!U70s<3hBAa>GKFYy*5Wt39oRkm|)l~)H_ zmaYKpgNI>HFc_-PVy(tF#m>fBdlWctX9%%)i{{l%!OwFw+j^4ajnaCuS5i9hq2TLg z%u-_hUi?XIl8W!WXzd$v?glV;+KRm$Qxv)VvohD|SiFly-LxvBCugfj`t?b@%uiCZ zJrD6Q6s`^={W(i58tCz)a1c>MVc1cs+Dd>%HAoR7uEp)IFU}BwEE;b4LS_R&T~HO5 zyzBi@S18YQxJ_r3)D7)IeZhm)Brf3Z=l?dE=RngEsL4U-S~LToR>(i6ouVi^)Btcg zo12Ar={;a8K`QkDn9P;QG8WdHl#!TP;V@Yem7wXXlxe^ zZ$gruL;I<)oh}3WmFk|iD{+hY$ngJ#7m2b z{@pCye;l(ilwE< zMzpIF4t4bQDZxKo$n^RiKX3D^tGXS}?$_eloxmfN`k0yr`7nQ4MPSu5b<@Yq$n>iCLz ziUf66Uf$C?;RA7;xMxu5vlF#`kw?yb5 zof)Z&%I6zfx-Pq#hoJT$Go*dVf!?U~CVwAmnnD%=qN*0j)q%f#2G#CdRaW8(bGnx=x$E_1 zq2u`5=n6CqPR%TVm3E4V)+JIgeo1jMrQFR$R+Z2=ezHEzt99C=$gVu4Tj}~yck_#< z%$mi5-YKS7HTQYR)MS$YG)ggB*qOWrUmQ%22@6f%gui@kJ=7|A+#zKrm3o?z{443t z<)i0jzbx5Y)V{j3Z}0W(sd5L9&;|+7Y!X%LCYQXsZWLEW*OHSrjSf0x*8e$f(Mh7+ zC4pyGnlPX=vKbt_mr2(0D!9_#3>`D5h}RH}_{Mx4(&mw*bw>RZKtPYIFj#DuXu7Q& z>zXvd6OLkth1f}k#-4)0L+|Z}_EEXqFHL!L#SO&x3u#qX$c~R_a}XT@POYw+fE5mv zfXcv#z`@cPMSTnHtaU?KvWu`6Jd`SgpC_f#c)_D*y0-h%VRH)Zf{#+Jm$GTk0WpkH zT8qVzjuQ29=kzWQ?Thd4;>uZ->rWgKyf1B&Ke402D_b}S-c`0iU*!f&nTD3br;xn9 z>22ax&6agVA05w|3JkpO><|s<3A=N-Q0noRE+9iFR$v{CV&t$xY9C<=S>p7i@2N6h zDW7~zZl`4TtyoBU+e%M+YFvN&XjvWAOJebNF&N-|IJYA}E;oAe#AsST)}y_3AATHn zUhn#__wOhn#bn&Pp);;$npax*MPbOmf&>Tg$KsqFk)I+(>>z*_Z6Q76OZ3J<5%AaB zY`f#nevL!n0$XtUhbYui+fM@RER@WWos5xetr!17mk)X_|73$(ec8?Z zaBzvnS*1forL8%GT7ni#T5{?pd2Xn;8lq2p0{9l*4yQ7??J?&zq%w!a8;YOrp@ z*dg!&2Vpo#Y#d=v{>RPhtH7oo5Cywq#M(PE4nlGt5CqJbYIYCb0@`l>1I&t<`W(cs zA=hnp{Kswb+9~E)praS7wnh4b>jmK`3GZ?HXOE5>%V`^z3vhD~HQnU(t9cobt0s8| z&Sbnmy+e&Wn-uSEMUL>cArHIHtcl(wFFQsT{|&oZhTFBXmi2DUQb)4#YYAOortq)M z6Ce2!_k|j*L5~HSgSex>hanAR8hGzcPTf#ea)!b24?FcPWxPwTn!D>IF~B^4YfG17 zmqBnqYufd3oE?6%1a5P-Od6v&zI=D^(Bk#u7JvVwz^IdlolxH;R7(eL;LKRy1u(6xZ2o2!?@;v+&Uby4GSKH8`o7mEZ*v^QEhvycOfp49adHs zwyIK95qDoITB%FaooCD9rbx`$h$@%vKPyMS)L5#)?t`yC3i?c< zLkk>gDrx0Q4FiP}(WUwa7bH$KKmv-?ZTI!Pr1P@FO%qS)c%@j9ADH9S^850;&hzb$ z9aY2={QZZ${st;OgQJrNyJER;WEXvBEB8Sz{M8WIm2X4>3z*^{gjptZdva{8-=t`a z>D~I|z=4^*nY1BqGx43#2z4O={ED8Zl5ENOm)-_Ql#HQOMRWSb|01QJXFYtXV3=xj zIMc(~QE?o^U%IIkh}oVuLrp3ye4GJj-pMRq>>&;!z#1}F0XxF9Wf>Ug&@T=G&l^Np zaV2%Ok%ST5E}KfEO(84?q3Yc=2`F^z(=)l5xS_BJz?1F4t_9qzk06DxilDVb!o=un z+icImzh|isQ)VTWy?>asE?}&R)?$u1EB#)8N(H6<_%CPgrZJ*BzToT$@ z{QcSfM|PhYT?Uq+71HJQByym5;ifkBAEbu=!^`*$|JH#<&|geKCBYDSc+-eAEL2OS zJWjKrjel@=Tbi~FHSo#Mu%jIstD3ra+@i}i8@LD1ZkdFQsI{Vo(k7Ebu$Lc+(Z+lQ z&3u#YZ9e&GW#OB(YrxtpXnx;bQUcjJ)|8nmP;o!{Q)Jff&C90A&t0+F^!8Wv!oF*I zAbvu2vwT2V&T^cCF!_ovcy{$xko(qZb}dohBWGg?JGFl&M#G&bya` zn7D-k2LQdJ#}23|w)*)#@p^LZ!6UbT;P`p`EF9RVBP38J%e88qckdL`hKB~wD*ue7 zPaA1Sx^)}#LPv8xT?`r?I5#q{t#)l7rvLR7(H+xUh)eD2v(nDQxqQYbyHH0Q*GehH zzk+nIdiA$4S)-4eI!@h|V~=_W)IQvB0KVDBB2JT%&?8oi2oTRSW4Y70+JVT_QfpU< z<0R)9QG7B6c`f)nZqezhnM4RVl~KaFsURRNGn(k<-nHq6!7PyGHW})c3(!vNAutrq zDvx?_`>}Gp>C6Z8Lm!d`pXOG$p5szWj>oRu@SA#;5cIPLv6RY! zwX~3Ql-)HD%{2ZClq-a-x8aS!pvQ9M5l6-IKUtmppfgJ4Tc5YJ?O$V#A@^~WV>96} zk;aaH#QuVM#4GG8eY2R~b>vhfV>ayV6&sTZtDVpte_>mSAiIp1+Bli5f9$it^2Qd7 z$NIB=kD603zbMJyA@nGUC^4`N394HtX-gMpAgm|3U?_e=t;TD~PXvYYG8kAdfwXhYrC+ngM zZzv3bMDZ-Ae%9xu7izZNN;`JE(qYIR{?ae5N5l*aovg~nEL{BqYeh8oO4iZbNlGw( zTOX*!mz}BXzkaH(4i=y<0YY( z)Tvv)mWu=~`Ps@IEtd5Ul|8MkMzCCcdNJE&DEp=}TrB+BcH7$ur;|HnyzAn^R*%2M zFC^`HcM$0i$%zD>!88LeQ3C4%{bl0%x2sdPoAgddub%t!_1Y7!EA%sue%tvFJqvXW z)6)K?F{39WoX->$QT(1URN)AE755umc_;-LQP0OxiEVB!xv-CAJZXe4x&N)XM7&Un za92-wO3Ms28V>Eh%|yfgg>rNAqQvU(7Za}3zPpT>RNx&KO+%?iZ#^;0m$c29K~Slw zP^Q+!i5TvtRF$HjiT4uYZEZgVA_sr{5{Olg)7u$(3xV)JYXXfAal%f(Q4;kXQcyY2 zz3pOBdy|?*c8$iG*kH)gzOKJlub~dchSlTJJuL5q`WBi0sw5JgUHiZu*yJFrQ37Lx zu6w)rPdkMGjcLGn1+T-+PSx27W=JNJeq(hDX7^f^LpPbOZ>+Q<{^ied}tjNkUd?Z$I(dBF|9B@rQKpvdc-- z5o8Q%hmNQV@+f@Aq{v=yo=0M!NJVb%tdVME+bLm(m-!msFLjKriXBoDJHXaKgL0d! zBR}?XEd_mm^Kk_S!9m2$i(iGfJ>Zc1rKZx=f=zs`dVjCfE~EN37-XzA|EdpINU1FQ zGvmF~m77Cm8Q#eqz`=0+J&D^7`Q51C6;s$duGyU$$#jJF$uaHc(Iup%?vLPAvjGXz z0hVs6HkV~($B4X?TSWq|-u;xjmG*J@v%I6HfzVAtxlfC+2{or2ljm!=)+V@VBVJt^ z6R%p9CjsLlw0`7T5!V7b8BPi9tZ39e(gOJb2hp>bKMfPN&20e1K9!C>%&gM(8cpUP zZeC*5NbgeFkZ$D-<6~WcUEKn!0&Zmu|V^1oQf&o11j z3#pnpz4EqW$*K)|E1vzWzrWi4=@ogxnjJHk5~!L6?9x@KEfnjmo`?%--0gjwJdUJc za@%vkXUqpKXf9&Wz!R+3$C9R)aR&K$+!Qnn6B!$n*xFg0z5|qd3lI?c0|fXNFPv$u zlU`;saWV>NIVV>_ul3{UfKo3QL|)HuNYXi+{ke(EW(6yLa&3O<{d4OUr+u+izo ziTm38$n978ag$s0%xk-{_-}lGsh*XwX;aSj!s;C8x+Vdb{sLp3}eRf;qFyQ*{L=x@-Ijp2ZrdY`y+qo9!I(?(;7Oen}OwC}G87 zN8UUg3Ju2(MVoF^USN)rzW=ujz)eU0XBhy$74QpK7fodwYs)slDu2Dn%$DSm5_;?C zuXSMiED zlX173r6Sl2Fp*^dTP}>0GqerMlS-%(*zcn=L3eKs;yW8gf^$z)*lPMcY*&IRq_oby z2?=r#J_I8Cyd_*B2Q~yS~#Zb zBfGJoYD50`M77Y%6%_&DqR+R@0o+3WnT$x@FH)5$OEdiKlCm`I0{@%P!hbp%SFvp3;a?wihR5tVxN-1#E!REs5E`lwNT>^5aeFd}8@ zVP~mp!ng3D{ENE-4!dq(p#45@BM`fUKnVxEpC}+yR(eVuUXtH}3u5$$cs#ZVOz@`2qo!{Dd^4jsTlTw#Joq5+M znlnZ5^SG;1$IyxGq3oKMw&oWiqYR|;2b`-bDpsr3-DVfHnJ33bRNfIv+g}b?8y4er zBdlo0?U30xxCnX^WlJ~+b&~kk$4n;{YH{LpWm5xZN6BMMvEoFEkZruh?41h<9pd>6 zsprHW6i}WR#nKM^4DvQGDn07hsT6CQYtj27kR5lWygT$+F#&I^V(uoRS5a?dE$@y7 z%57z?t@Drn2mX%c`Se(+U1d}Hf7GQH|5bs$2xELcz?xSU4yI+Ksb;DVb7W<;nAmn1 zUHU)C{x{ybfD{X6v<{G_=}1QnsAq(ekn`_H%!4h(aA8F>S z&JGTOsBOwYTz4SOS=JUTu;)<|=(Lk4?hWA0O=(8-Ee-;~atVh*#bF`KAf5C&3J-z_ z>^0WHHpu?SK}?5$WT@5H2;ON&oR*k^bfh>4SXI!N`-T%CDD+nWhjic|KB^}I6_BWj zl+{>tFbBafc}`&;DQD%R{)er8WZI*JZSKW%wwX$yVYfkFcE6YKROGnO@Sk||19>m( z;!O}cQq#RU4qC-d4U*3MBVyt~nH82y_l^$c5v(Y=0?cd~3}QVBbXEMBmRkXM#Qid; zSxdxgVdq_&ntRhvmgGv1!rx8_)abzF&0v_48x^742_ph5ZW_fR0TQSTcDJkOv5mYs zGw&mO(r8e;amKd$gp%*LF7_%pQm(7Y^ZI81f3ugK`7ge91v9%}!y$ zD>PiK{%Vx3FeqVG?tBHy5rGlVcTd09@Wh_oidHn|qNp%oF^x+X>gWMC8U8fNlIcX9 z98gxvAIRWwx!3n6P-mv$&eMy-7ttRQV{m-@vCr0tU%D2U*mG86PHc;$elIv;_b-}4>wCaFW_caWQ}Mp&fpUnavF+RY)6yU9W9%+2Zmpny zbT7%!pWOyGn3uu6Db@TF7ktxN$f;q!o)t@_q#O=7`#N*TVuV7wi5yKug`jDM=n+?H z_C`=LX&5NaOaasKhUtXVCzw(L&_>yPSl?wa)uNySw>gM2Oc1_a zyKXBuvdOsq<}#%HQ!mtKWv)z_uoJXlNO3)zh|h$zb>jDzfb=>J2tDd3zOeifup$-P zy0PPM!i4SD>qPdcSdugxM;24y`+d1U{m#WkGi*w_pv^QF-c{lN2Ql=OgJ_e)Dj_#c z%%Qi9#Bpx$*D1nTy=Jjx}vSKD>iSoA5ePPt7W zL6tCy9*j3xf5Otwh}?FC_6t%;!;X`=OSvCdC)q_>qQ{CSx&^F$>}Fl?fgV)j zIS6Dn2k{C3sELGiH`12pJc@;@B`tkdSnXOyv*K*v(u*>%ih-^{PIEmmeR;dU@HOI` zD|75UYM24bmegn^ldKIVJ>Jt8h%U?^y7E_PSj*}e;}|>r?B*0`d{aI{a(hh z6P|_+(iZ<5@35&cL7$yg%at__5G!c7G_g+quw%U;giewwJhn6VEg>8qKrVs<#m8Zb z`Qm;0+te5zg82~n@^YcZvY=QmIbEAI+ek+Ir) zueUK?i-RajONREKivZeF%pz4s68GKGq}}aE2jLb?qOfA2>p{|&sYW zaoNh={Uac75P8o3FNt{dM$*gT;fzn(Zhj;y7?>m|v*ochaO9VP^I4N4?c*+Jg{fwK zw*F;Z5s;00M4p>viG6C1uIHx$-!H%u(6i*ac8Cb`SI_Y7HHV9vtk|<~5+QA0Gl889 zR84>`5d=sJD+ch9?yeik>%=aF|Fo4C?(O>r-jw|RDBWSr{=IZ(3f;s{kkDKI4c!0! z1KiION=dJjNe6H}HhbuLHNF)L5lnPhSN>@D+|k=(ZOiRLXHJuHt>qa!dYzg~1M}++ zx9HakUw7*7ty;rO>Gy4D9}=t_m{(8%iQvIv-J=%qftPOU9^H{Ji9hHxu1MRUgtD$a z5}%1-*ED-!PR`h<3Q4XKTM3|y35#F44Ox;L>0W=rm+NNQ9h&w=v%%3pdXk%R0^#iC z?oN%pbCK+7z8x&%_0N`@Vaf_eodrd>UOoSYIk%jt_}l7%p18Qlt;bNGOl=1DF<4mE+E>Qn2eKv9(o>r&VDGDk^-BTQ(YF^$0&Wm4 zq?_o|m)aXOm+mWTTZ(>l>`h)WP)nlH`2Q^Z-eu!lZKaij=9HZR^WBHCBlSD6_e#Jns-}tHh|_jh z>S|NQg2})+yUO(O2Rz?8=l9RnA$j&z$LMu+4c(#pWd_3bjjyk(x8`|7F5vhX~ zeLpLlSYP?-y^-4wX<2{kzkw!!@Ha%W%jFBQ%8gww2fcqgDJ z+ULkYoXTxOGUQ=eklBh=Z{bb*F7AQ1Wb?sE1c?==+q{F$g596y`mE;2Jy&y`f1I=1 z-&yP@9C%4n&)-oeQ6=>*Wuw1ZXG0f*`nI+CKMRx>SJ0&dn)h1{;tD8{&u07Ll2pL< zkRG{!s{hMx?EjtLB>y|VA^ypQcxI#_iA*Xo8G5i`!ak8o%63_OM%;wcS}5+xE0)3l zbX%P`f`qQ4Vn~a3`$_9bhS25Zo9qGCGbf~2JOxo1QXBUAXx8m3C)TZTsTZ%_4W`4NcfY{MM9E78&=1te2 zJeEMH14iN7U`poL>hhTLPi6louqLF`C!a@;!NRAaIf>w9vP^mM+MseY$lls&lj@NA)Z>_WQFnG2ppH zvoC5a)6p~WuX&~k-ywq~w)eh{c1+&}%7rv}4u!yPmC0Ff5C>kt*Y!gaI@v)}V2j8X z!qadKU^$SE(gM#kt{0&eYvI?KE3leVtzmnG^f&n7VT033@Ed0e?aoRlbR0~{z+R}L z)mk2^u6{Q9d!GBLz0RGEniGOzs*2r)+wVQOEdR9t$JAS4kw6y@;viDkN~opIv+TQ3 z%Z@5*zMUSKk#A0xU6u@IXX1E#T^TPy#Ys%?__@k8We$Sh$w$MBj7Yq1`%io7n|C2Y zLFf*k4HJqx1B%iyEdUqG(V@pBU1ZQ*d12@qq@H!=p8uz|%YQHL_98AGd0Hs{>*CZO zVgmqP%xAzZ5o*l5>x?X;gq3wG=z|ftuQp^PXDm!B%=EN%tZ7@%Td!+Dz#xQq{C-XG#o;dG)Q z8;?W4qF*_32}K27Xef33fjN&kBl*acnpDxi(VS%D;sNY-- zgsundsVwVTvaKksjCoqz_Uh;v2EvwB7zw&0p0do!*{(@84MgQT39!Dy5DEZhWGP2U z3;(xA6iUh8N`Yq*vV-?oKxbfAGFIRqjFZaerb#OpmcrT+I^v=3jp()O2_o89u<^ zWgWIf(KZO7FrZ8y$%Rsv7p5k8vjgD}x?30nj#M_)2CkI30NbwB#Jn~RqN<;R;AREm z=^y7w7q&gcWt-tFl#N`)lVVVe8yh6{$)vhQ|K~*Bf9zNlc*q-bhL_bRhe3h6)@(h=YQ zXybgPQrYL`pLlG!Fw4WYvMK!}O*&GAcQ;t0|Fv(!`1Gogv0mG}Qv7A*CuY4tf3NO5 zTl78;?JV+AqbS+$RNX*Xmt0+oyxCOTO|v(#FZo`(!tjyX9v+%2wd_w`vc!=9hDG0p z@b=rIjx7?%N%f5ZGod&k>Zyj?vA$3DUYC@nk=iA8({r2AM{PjKcIa4ruUCwYLm1Pz zztB?ngU7)Adpmgoas0wY0w$@N8`dPMw_T@JJ%PM|`SqRc&3-|m{)th$LJJIU21b*c z{j*zVqGfmMDEB*A`-Nz3>$40gaanQPdBllK1!) zG@rGV{*?I1S*BVmLv`Vc{`1fK5(P`Hr#*Q1dcS>lr|VWAN^!=I*bmpQnl{3O}vD&Oy9bG`Tkd( zMZXzyY<^q>bfufz_~nqM-&>?2DrY#U-X&L?jC6FWv|SE<^eCb2x_GOfFu>eUTi_tF z%6zxhAC&lac;hG3D>tQvw=~9NH=aQ}Fins1nXF_3&ggBPR@^N?^^P{)IvmX98>@f= zwfEsd;kXL;sbI($^Jvn|Wt>O)$4g>*#kbL{2OHME61xlBY{u=SzId)x{vk}`<0eKt z{R%{^WZ;tQ4%anjY&WT16|2xwuZ)$Y^EN5)kNOQtoa|jbC!g$nsN>eB;|$4*T*bsc zK9j`e?jzWfUBd`O%Pi zxaC$czj6Zot2<0tT%idPE2oV|*o)UC5nRRV-q#w1#!B7#{J|S>5GSzKy=V+O7LlC- zJeJeL2(nP+11cE4F{`&yG^QGNHda^eTuCcaNiYeitk=?>~QRj z|1qydPKK4=NYp)mI%2Z5lLe=GVjZlcT&^Pa_x&Qlq>wsF373%T(K!OHO_~$4J22T` z$i1@4UpaBt*Px&AThaBOMU1O9%-4y1yP}`jNNBQGarvwIL(`wy&t?%E!H)9HLX-bk zjsf74mlAkbXu2A-e`88cvQgt2nVjV2n5R;}o$ULtD%Rk-IHRp#NNnP!>=raWmfzpO zL5$5n3csX(dYG`HPe6M(h-@PkdHh9uVccMS8~Z(q`W0CbzPLjB(>)QI4+1SCxHOU0 zoF9{}7wx}RhTh#1g}u{WbxF*Z zV(&Hq)khgWcX3VNnwKYM{z5$gvCR*EW-({jf>xc?tqd_xtk_LUg@X^#XKvyn{SOdCMK!6_BU) z^1>C+v{@!nmsgfr>^alOQYSEI#~QeEH`!QYwD1c8XQhh~OfJbhf|I~l9xwPig}$lr{}8SN{o z6&48r7l4|DE2Afo$@sRcjNqy)eV*zoKF8bqsa~78Mu$^W`EOdT33Cw&C{sFO`$RI zdv%+_pdx0)X$yV{1DpxeaE-_kOdAhsiqHVdiJO)dugc0&&J|75_sle0mU4p|usb_F z3-l!;w_neS-PU!~NIYw}mVo(DxfN00p>QpkT3`=mHl<>swJrusxOr%GXOivgqNcGh58f8#_DJ$@$e);F7k#t@zc-<5f z1Iwl`fa8IW!IMYd+}5>xy zWAAXXgIHtN+&L7c{QlHv$hpziajRP%C9`?wH16uDcnHMTjjn9R>a5Le!q0oKD;rL5 zg$L>Y>kNcmJq;!l4L<+%=Z?zW?PaQ5a<=lTjVyKLsBdmdx+FYfX@md9yeMJsu1B50=P)lElT`OUfLo9nb zro9@~tPoy(a67%S$c68|bCT*pQmV7i*&s08CJ6-AU0=51H6gp*q*I&4jMq zZV+xWxu~+CD{$-6owQo1zEwAzu8dU%?h~rSe@vQk)ibF)DJ<&F(;`dI6YVgeg~uBp@S!zW_abi4gw8FEA+pj)gsDq1w2V% z@ozHFU{w~@1C*o1uNcu!hy7B0A0YjT=y2sH_zU7?oTjb zcC*^DGRq#5mWC+POCQc0e@ND*n@-?gLQ2?+WE}zD`PQN`G@tXcxsmdc&fXNaKhbRq zRoCr1i>D9kK36u^bcxV8Y4WcKdP{JVgjh+b119AA^&xUL22_JR+XSCLcW)UT z$C71@ikU2C$zoZ|j25HC%*@Qp%q)v6w3wNhEoNqB=C6GFc29Rt&-A>v*7w$1^P@7O zGP5$WRNAr6*(c&09?@5&mplQ>lk-jzs71KEq|0BwkJ|b)a~o;7og(m*E*+Lc7C>v$j#ZcuUjwF8%f4c_ zzhFK_@14Knyc%2$29L5T!-iR1~`mJ$N za*CBD;O77}Amh78f78uv>8xW2XFbpxd+pfSiCF@yo8<#M(E3}(#nu9Ib^zaHg1IeY zoqI^+dB?h3$me86F#dy#)1k_W+e}2+$ukt$>GHhB#wh20IEEla9eyAnr4g$10*Ryo zw}!W`>B=?4(cqEQ1pVWNk0)DzVFF;q>YsFb^IWb)SLbht7_`sa!73$VCEgq93Y3?8 zfp$Olth50<0AOyFzrBWQz&o-SVA|TE`p)5FMRwtmV71!fQdf092t}8o(iT5xfw`Q@m!vPA_BL~kPiZrGf>CdY#5flt z@tx)Ionzq4#eP~17zD(L}|xV7`l9*1KtEzUoz zYx)_p`c)lt*a1!h7{G}1w_C9o-Ny7Wc^n%hOc+kkXg7t%ixja6^e{lXQ$mv~me1}c zYsb-vOOoQnug_E!QC_~1Sx=GKASUnOg}L1Dy`_?cb>$MRpK)yGMGGF3t!`A!4Q9cF zDro}(w?M+QVwRIPS81t|Y?7{9QD+@8G#a9c)bB8V1PDi9&Vc^iUL~)11|zt|U-*^> zot!?qb=K5NmSQdq58KeLD@r8*G$-fqpT7#&Tv>lVMy5Km#lW0yek)*A$$r{3z=-k3 z@#$u(+v+eo8A?ya%Mx8|~HH zR9QihcfwxzoBv>R_6e4jY~Da;0ONrzpj#P0pz(C$(&pafGW-!^v(oR>ldBMNeg4^# zOR92ht>dOqMm3=yZB0(K(`_wNf+4&{Sqv}-2a zS`!N^I+5o2N|1oMaqcV$&~tQjzDv%xwhEnXKvI>U4%w~ z%`trEL-{Hq=xw%hbAai~DRFZ1C(mn4j}KpZ@L6Fn?63gh(8t*fWN{$%9gu+ z|CZMC19a4Ac-sE!phrc?dUTc^9E3^0%cXDZ*Wv@^FV zfgj1c(=9nM0$wQ%3YJzxYjC`Hr}UyQUUCS5VD3sxB2rdE)<@)GRNj2Fi@LHeMLHje zjALF9L;)#xqW33MAHTbq3%7LNte7%X?Gf<}GT<_20P!mAP;cZibQyS!PTt=Z_5BbX zX)0QXP_CB}mT_yXmQb0p1kC3${vG%M`d|J6{#g1Z2?~Y^1OWsE$h7tusA5XQ0^`5W zJ<0gHI8eUQAGs&ry{F$GcQ2@eQ&nh+k)f0d?ya3#UVya?&`W*e&ZOm)-Y)QP7JmXD z-0&2C70JWoonRw1m1E0UX+VJZBmSm@(zA&H#&`Fy92SDNAWLF2l;zf6W5UXwmnp?8cv6?$bGd+zV?E0&_#b^V@3-cizrx1kDE|p4@L|E#2dx zlFOZtM#0-r`1%S#oxMqX6+<5XB3(BsBe$$LMf;>L8zSEAYXExfzF@r?JnV8B?N3>3 zWOAO03%caweHyqjNeiBFuUtQGWx>A0-$NRq z;T>?XL%1&jmqVql>LI-4Gd>C;M6+}=L|zLQwH?r_@Ss0GqySDpz)@ASUO!15V8+6~ zRn}*yy+=2KfO#-ARjIED>~l2Cw@Y%T;3)yzOI_Auz7>Nykq-LB@u$g^AmNi4$d$xq z8UkrgWn3+xVcc~18|Wfvmo82}{7Lx|aBL~TkQX%jtPQ`0#4TKjcbjJ{O^!fzl%uXD z7x-6MSfKgVWK%4gT`v&EwZ-Lu3{!67UXn2vhPE&`);}ggVa@E6c{ry^9 zv_)^PYn~J;wk{&~4Tx5_JX9=~-`)yR;GO5IggUVpx+!v}EBn`9a1$I~*E*Y{16=kc zU^&o2SM_$U!iJTlWWk>=HU?zlir_QVIfue94p9~k$G0Z<0C{Xj=vw6QNm3mVMnUcd z#@vuh=WpVUxj1g1b2Al*S*jFe1xgRWElAWD`zyc9IPrzf|WlV(i!3ur%rY| z8PnG6_S$Bs(j^UQ=tZ~i+k&2GJvd54k6M$3fOa6BCY2pA`d+y#;0a2Jp?3C_jRqyP zS&Ei5KUro3LW?K--C&}3z0-rWZn89i7M(yMk$wGX@(XSZ9H_P#)pl89PQ9^w z%McVgh1&WFz9S|e6^FsM!qoZLXB8<&(m|aE6aUB zFdMFL4k)M=Il(Qdlb%OEBZ$0nbqD!T()=S8I0w2S0ZNpTQoQ*RWA876iSd=7?(GcN zc2XA;9!#JPv5CMCQ32WuWEG@uH)}Y~yhbf3p$cE@3$pFc4c~^uLoCHN*C#>^{s3N_ zqpl`rnBc5^pfVSlNyhb|7cj$?>iQ^-Dc7;!hg3t%bs-3xdkM#Rq*K4aR4R!?XoVsC0<0OX{wYq#Z+98N z|J5TTu}&nGda};@$~HIyE6X9c#m6O6JpMyf>r@FnokIySY{gKfXOb&5q1cNhU5XIc<&<@k2{y3@^4Mi&U z>Ml$i_*Y)Km4?zOz>$2<@0eTkB*PYCEt;ysquzb#trG*i6!5iyYESs!x_*k(KOlw)Qu(d*~m;Gv~a$N2+!D<*>=c zu^Xjt(ZC0PQ}aiwM%iDeS^qaR=NV?#v5lJN+%WMS1^q$IrvPe3_!~8|{6Wn#6v@hw ze^B$+EuHaE7yvbo_L*d5lt0nLs#*(4 z$Ob?Y_Md11SA27Pl6Llm@M4(uvpYkBIQ%m@iEhG+F zH(T#xPPI*Lm5P7dR8hjYYKA4WaJ5wU@=?YfyGPNYRiw_tr<8Y%t3khWxk6iEvjT!0 zzdb*&vSVDl2(fnut)B-Zyf8cI72M%g+jw>l>+lMwZ~5`@&vmZ0c2Cd$4K=a+gPkk? z0lLi<0gnJymoMR3{H4Bq?&uuSHA<}vM5KXDTxrecVzEm^sdf4;oepbak!k0^ZD6&t z{jb!-+wrwykep0|fd}oK&xfsh{ozkTx96j${^R~~Kjy`v^g5y<5fYj#v$y8b!(g8q zj^*S@>@G9o32aKHBo14(q^L^i7NmIab0m_4AP<#{#+rk53F&s_)8WSut31OKnyttjDsbkl01zsNewPBzA`N!n5Ga@%;oETebvt@2gsMR^y_-x=2D$#^pf63Lf) zV!Ui}iK|{^rer+tiTK0!U(I<jM(U2U8x{JxwCWWp#qNfWZ zw|8|su*v_zO z8uk*TA6|ZgiEvpO04AQ~fWLrAgAM>D!Eo_^O-=28QWJoH{xg`CYbMS!owIu>w?(I0^%dvvlH z)AoF;&5BXn7*3PjJj=%}_A79Q(GaGKb;s?2`av>VyInWOb5N+x{hl84F4zzkKFrqy za2u07F{A%<8|5y%n*7$Z3^+*#Nz;e7e9ymnkXp3B>AtQxg+S>^#bacz*<1g`ZS(#=OfLrd` zOWeiZEIoXPzjGU_ANbg$9m7w8!QfSa1;~*z%;O;eZsRe9)re_|XLXUCJpJaPZ`*o3 zP9r;jo8*3T(->ZY0YxjIUO_QbXzmMHj(1xsquzQ%2;(bD4n`Q2ukXC*admm-pM%gM5=YZtZK{K)~PY?@m~0Wgy)-kY4ZpxYz0;DIwB9+>V5zx*>1(y&z zocQbC6VnyFL=UrCG(TX{YO@V^R2v$Ck0yKX3-wELk6nBpfP#Y>?Q3-<*N$EZ7X#G4 zKc2kia8IF|hO~u6cU@};b6rgV?7Z}wQn$)+bGHcz)I*0Ep(3v}q)y;b@<*Xp1!>04 zFlRG7QfaKSZMu6$%mX-fR>De`vjHnipTTpA)OdC0{pewaSS@nQjad+NXz|V8SXwV= zWna3`=c5)sP1sj_T4Lz-7Q5d~jr~bk`V0$$@Zfji{o>N7s@kB^vF6?FzwbNYG0baj z6K^D2MD9JyWCF1d;=7~?!+ut7UcNGKTjLifiQf1Mu`wtx7KO>L!rXWt-t&>30v;++ za}XzMjD_6~8B%oKUl#XQYO?qTYD&as_?4TWb8ZLyN?PwTCbmu9Bm+ferW*WD)bxMB zYhoXx|1H6s0^Fznsn-OMU^GE#l=cX|$3NPkkiD3z0BV2yO9^K0A0-%)&VQ0%(Ed(> z!R`2$63kO^k7g?Z5D>TT-)iZ&*w|Y*m>L;5I?(;G`$K}rP*k&7p@;J(sQMs0cSmYmCfl&%&y6>39bLR&+i}?InRiKA#`?1yuuS z%`veY>u%m^-e@We7@~zKcb(y6!v?UjjBQ;gO3$p4;&!_dvW81I!z09MrYU&kh6*zq zCMh$goSjWr^vX#AuZ+bIy|rbS`A=0DHGxTP&Nm@418*6g)nFl?&YK2YF1t)}Q1dZw zJ)MmbtNV89^nT{{js99l6joDGG7)B=j{h=#C1J{qHR#bW+!V*o{zI*=r>ziU_|W0k za|Z8TYhe9KM2N?>dhNTe(T%vXuR`>T-||BaziXF0vV=EQ-UYadErzky7FKUr6#*py|SSg(j6iRkoCg7&3jY3Fw#d`nBYy+;bRV1Ap*4_&MCdN~hI z6gsa0Zx`*P_Do&NRP!bg4NMV}To1Y=d{TOPFKSfQ=6k{3^dgOe1@F_DU_Kd^OIW|0K&F$q=c&y@+?Hk3^DF&|>=Wf(gG{8E*H56r?&5W9YAnL_-Jhr9?@sIY)D7p*+i}tv48a zA_$4S_QZSQMe`O5B2d^WN}wO6St`x`U`tp^Ly|eA!tG*@;PMR{Mf^H>3UtiMgNE*3 zatlS<*F@aJEL$VFrY|`BG#yh=&W_Pja0H`)Wn!n1M&g9&-=mz>w!mKCByo`Ft!XK2 z*IJ5-VPe-`pfdK^RDLx;0lTP9<|t!2X0(#R#V5&rhq_|*_M8Judeli`Cvl!KQ{ma} z32jfpG^k>8ZHKvHbGOG0Gp`WMqxeexq~Mq28)X=a5nX+dO{drJB-}3?zc0-k1Oq?S zmU_F6+)ne<>72BWWyQ-VJ&HxgDLhPh6KY70d<;X=lg{!7MC-MW+h${?%l4jPv`O#Z z7U-WQjmeBG)bEj4s8+14G(ZK`(^BgXZbH3WXG#2+&f`&svRFrU(kdwm@D5m7q=vy z<o*sm;ezPjWUjn7wVg z|La)=WU5~lna-w9N^~ryPRluX3+Zc-1Z}gffLf7%d|A8`vw&osJ9!`FqPMi?_p$$Y z7NxnFck0gLg8MR=6{fqhv=nT*KmUp)B}HdT-%AnLmf~y&Ti2RfNpGZZpcoNbh-Hrj zADV`_4=e1_1}B|d0f%a&_XQThhq<>RT{RY%v2eIEcvv4ja$#)BehT=Z<${Yojou5<5?9fVOOEV@4K>lrDLm6QJuyOr&B#9Bb4`P(}69(Zrus`wj=4&fi1!6-3#WlBbn2It-x;G3wE_5+0%io!RkE-Znh)2 z16I|;ZaoMBbs+iEfo;L+Jqi+bAcfO`?Z9q53i5X##nXZ9!RkE;>UJQd(}5kpZaoS5 zb|B@_fgQo>Jxio^AQx5!9#Q>ndOyP3y}Q7XO6fq)sPx<>(R=;TTzIr-*Hr)U$3@sa zK1tcEn|jzjaEYCagcaC6>GAE1f81wa1827g-Zbb7VFlo>U+ggd>F&Qf62TSu`wsuE z@Bbe+KNZ>p9^vRc10Ma~Hsc;{qv*YeFaF_rH`xuS8MdB3&Pe@tP58GPj{k92|Mpq_ zuU>!=c!Z%Q^>Kgwf&C8qH!EQ*S;HoS9d)oXJmR|H+P7Pig$WsRQf979IegZu40ixd z8CYRwxIn4n1wVDnG2XJox-N+oaT9lE^x}2GC^>VIt6OL#`ltNMdKtBTc?vnzbgs5q z@pr=tqso-~hlz#JA9C&VHO~rp>UYMqT51(RV{e4Y%9W|dHi7sB$3;OJ){mm=60QMz zj>{`QE5xt9 zpJWc2YJBFVY+}@ zrh{e6(+=Iq31t}fH`^6Tm6z}H{**Y2h_7va>pVd~H;!E(;wMEs3ICH+9n(Gln>W|u zvwIyuKl++jbb~s)hSLfi?;1yRFJC76A_wH1Bpa;)fhd9`gOPwAv7jLCx8x`7KGpPt z&cK~Y5ugAOi9GGJv?6&gQun+A)2zUyVH`rvF9Fs~$@)Stj6hgRVg1mQe4<|>68pWg zzM^u%DIoK6yLTlG3h;XkfMA<+f*naXf2Fd32GPXt39(>4Kzk)T1c{ z-J@RbNYS~^Z5OqNeVswrIgPb@R*akgr~YN8wT+%8N`!k5>wx5iI%v1MiL5vVqYNR8 z^?|%BZ4-EI0<%suABvEwUdKV?E25zLF4=IMQ9eW@81~(OjSwt;Ox*6&4gc5Mpo%1h5)Y%A zPo7k_%+M<3Ng#B%?|%N=neL=x-u$2hfgSNWKavN~!J5JJOmxc21k6J1%&2F5->6XC z*7pN6)v|U}V`s5TKAMHe71HLu)1;k*?KjqJ{77)J{=EIm6LZ`h+NN%yYJqJaobb+z zLUIcgV?i!*h8va;R`s-+dAzO7)7O8#{w;O&Q%eoDL2zHgAWZ)54#@7TxnjMVVo9wM z{Aa3DJ73Gy=qRK@3#$b?eXa&BT92O>RpQqYqUl0BxM13EX%2l_r2B6H3obsE=H{5-f3cXLahl;>ynJ6e`Wxw_u&JK``U7Vd%NFF;?lz6$IKCbn@ zz@~Tg>MY+-w`I|#ag98;$JnRuUcx1K9(!Fr>FrnTx_x*YZGJ3*N6X@(3+{~xVx+65 zeadL2G|akSGPPuOfo87vaqJ#!#)!J0t%2rkb?qzu5!ER;VcG-ImmBy-Fxg8V4U+Ph z8WKZTubkXJQQVn^Th(m4rSdCgZvz)(S2TR0!y{Q?Q*P+G*Ws7j zi}KNggG9v#pgin~j%vkPD`pr+y8}j6&G^OXD5WEI6mni$IP; zNFWvyz*k5On6~`VcgoH~Rc5EjIJ;whz&L zf2>Ori2gf3izP2rKlvvumg*n0*yO*{VrBns29MLfoWTRvv{iS7==(i;n~XHoP!CNR z)+gU}9{1aiuRIYLAj7gKp(-E~jufA~qcXrhMX zeS@eg5Sqw29vp>S0>-{w5`!G5SE0YH1JZ4`2ur>a`8z3=6?cbz@OP9DX)yJ_lw$ub z=8k(HJ#Pq5kEVfWoX!ZA!ym z{lNt&GYjMl1oR2815_e+*4O)HZ)0v`;7F@)W__v!t*bcK%=_?5iV^yA8dx6^y(UOa z5=pI5JkSrOVUj=|Qp@=uDP5?zSZF3_k#a`hRdr8zbMTk4+&Nye;(>B~4Dh-nb)ATE zCkvha0wtXjs>PDJhJCM(<^$vNRVmhd`4!y9{fw7vua^sskEe^_sca+s)}8kZm9*|L zBeHur7Z}OuDbgnB)kVyNEqY)ACl?nBL-vsIqMzXJ(KYH*Zh62=y1+jt68umJVa32j zfXuqY2=Ru1EcwakVNzi-z!&|XyO#J_>CuOP2Y`3{9DFr>2O>c{h+-k7K*&H3Kooq< z_!;Q&Qh_}oQlWQ2!TCRL0#V?RTViZNgaaXdBYKqx;^C%1Y3yP|@99)7tdf|A;~JwC zj(}f}><*ohFRY%-F7}vqKiR3kAl=5ADli{PD$95ZPBie;rDBgy?#xm-`bs%7>skML z=j}Z|=Sh}Z5EyyfMX75u?c7vUSk7&tGiD=@al9zXadU_)dTxfMNh)fM5Vy_;L~g&4OC^IRQmA-tmK00h@x+ zLa>4)evmDW_pE_Ht*$Re&{s$nj$*4CnLpUU5bG zW9WU?oAGsrY(QkX!(i5+B&?e86eWK`uI)g7L|8@E`ScAArT{^hW#F5SRVaVj6ji7; z-*Qzl33lkM5E_w7rwGlEzN29oz53Q{PX`Er1QD0@{;|mv`Cj2C+S+Ad^BeK9`T3m| zaSM63=;P^h^`6JtJifEnY?MyYRPX{<-j8egG1|8}YHEXUa+MnlL6C+6GzJ=v7 zPtQIuEjj1E)JNY-T{ybipsZ0@rhBMsvfvVsuNK>A5glgVnLP-r?DRd@ zzDc2Q{Tk)E1Mao;tV^uz^c{qTrn_x+Y*u3w^wX2_%N{1Cb5VPrT>8d1+wXB-6`5e%Ha7N`_I$qIj>-WBvx(vQ@-BfycU03e;J)2e)QyvaUO7mEgR?Hz(7{wqj z*e~Ct*+-`_m0#(qJ2$G)mp}8nCESuQ&=l8>kfkcK|AZ=3Lb)%Ig5{>N!CM(jQ#NXq zrZ3+lD`YI!WiPjj;HIq2qnXAY;bkc-*s=S%t3#&?@20+>bM=C#E{-^^`!Q8(ns>#O zx>(n_a8GdcG(+n>^n~d4@s-i9?XNyuBm<(SnH!}K$Ue2ulZ)k(jn%eD$;OIl!sco8pXKf_ z=ph`fDxxoo;!oqnWK1@bA5TvPuhV9Bq8&IpiETNw*gib$l2k{7T~XqN6s6m9C8Q=6b!wfq)h{eOt(3-+CW+tA-nSH~Jl_ffXNaH+qep;~I7@)k6 zz?sxyvy~_caz7`#Pn04@hUZ>?kq?jxI4ELFY7;1|e?7CuSj|jE-E|P;1bR?yp1JNK zXl=DgiP=7iJ<>9x6WVCJDsmz1C#uZ}+r~|f*?C|<2{Mm0)2Rtjcqf#O%Zl$LNTC{b zuZh>EOxBe$qqG)dV4z6?r?@?{XGKV^N2aumNs<*K?Wy>551}U-)GoTH)x%44YS6<= zX^GP}leo^T=MmJdzDU#4p}go39<@ zDE;8u67sOM(`JRzm`Id1H89ILJ3ySDiB6T5m9sbtyL*#(DlE%7D0y|w~^l{pNvj@a186U6K}fip5rvTBqgaU1PT+n zRgdcIi>(xit@hi$Iw#Pjyup}(D;ThPjTv~4(C>Km}4T;Z20l=g)`$tfNqpK1JiVqO7K@{mFB+PnpkP)x#8JhmvKM zF~bz);9hw3#o-JkKQQ2kGr4#tC;og~pdF+(NybiZI_;G@p_~{lhP{6GM_v3{0E2)L zkwL$Z%H|eJ>4Apgz$Hv2y5iz;ZJdlcwV{6H_B#2;F|ZMfM}5(FF?S&+6PGpZXI2yw z3KmgWu{j3dWd?G0iF~(dXa+dEWqSu;5|NXq&d(!=8-2|l8L!{ye6U+?rIYyLc#)j2 zl`4u3-`LYPAMmya=st+gGJm8gO!+{4j_AAQo1om2P$#%IWE*rFcpLmH-KEDSVi#A}2e1!VH0W)GE5;+r zrO77Grq?FuCdnmWIZ;;#(A?97A!vr&&Yhr5s@~IRk;1#YBla#`owpdH0qSZb+GqGC z4%KQg*E}O2ogR%dYWLRON&Y3X4*Z+;kDEdCM}trv`_a%4vS*^0PM%U*P4kxvw9*!O zuAgKgFH7uSi#uOtsPJ3QAUdK<*>6zq=py0~WaOQM<{j*w5r!S8Og69DvX1!Lc#olaB(r^ZW6en-+ zP}JkVd2&VXh80z>1SRl{&Z}JqZ+luy$@%A-*oz3G^JFeX$UL7=9^)1&52=xiL2Uyc zaWN(qibQ_sv(oUMef_EPIHjefH9RYrbm-Tu3xU@>BF}IrS;t!>;$rADX1q7TLoMi@ zg&*&AqNI7U2kbpAWMYFb2*UQC4W3~RouCg%b5zK47JRK``8R;vok83a*$qIR@h8PA zjHqQX4oMyur(=9&>=}sPFb_%Cn5Jd@W$amq*MgfR?b(REu!nJwC&hb&?YRsd=W-G> zC&X-kGk3j3p6dZ`CdD>jIfvn+Zb1QWro{MQIEV3~ZX5Z@oAUu+A0cUEo~{)jZ!V0p zhRoc}5^-laB*9>rK1$my3_B#@`kY6QeJfRiYVhc{OMt4K5E1)*ztmZupGls{eB=w_ z?CNexs0=fmYf91$4-5D}f7Mv;%XVLMT6l3#&@lGGzF{N-t64PXtOu=tPUF>|v<(T5pX3-hi7#>(~6a`sz= zvPSl=jX;B_9_DrX2DfDmcVk#w@%Gp-%-mvok*~N#3(qW(H^fTcpAT$u?xHA>#y`rXx3m(vM`3H@Ioi(f6LTgR5cR}} z9S;u8TVLAZ^Getml_qn4RQXRI$$X+@%%$H{{+=;iH4|aHfwqH|9I-R{b-#+PEjhByT_Wy9C-9WMg)RVS6Q#Dv()iYz} zz(oi`TdC2_r+E${?Y_@Y<|t-0Pq`UMgc-((LY-{@TVRzzU>+_sI}0h;OF6fKeojwc zOcYVpoW?Zw)=y?@-Wn-Ilh3u1&8cj^nbpu4l2)u=vEYQ6CZj9wMzm zuES;w4*UL=78k7(%`8nH#c6sMQ$9lPzVsMacVD5BWL#?7S76D)hje92;xc#8b{-^)vlNKcwt+Z zl%Pt?wBf$btb=4TzCA>IUch^QzpQHqKD_hb?BL^8c%Fa^zJoNQ?(_NVL8bz)z8)~` zbN@Jt`@riP3d>F~#e#(lc`dLDb*+=FWkc|ypLsohO=P8uRC_jTY#IfRO! z6V$Cpd)x613P`qTNIFOrwh|Ez_5v4NBX+!N5(AuR5%B^!(kNmEbagt}=SKqH1DLC5 z(?td3i=Ph?v6vyx?a}eu+jveZMd2=rPwdTRccU+#tf%>xOM^q2f{*&Rj@9bE49GP` zr+;78ad5!z>*tCsm>vRr#4@G%dmk4?z;UoEq`j3uk!K#~v-TYP6@uYj$#;Sar()|C z0YUP00S*C`el7~~ps6sIXL|)iga|K1hHp}*U(0i0EcNwsd;%9kuCXE)LpU8M^s{$j z6EXXF&1DnHf;CC*k1SYy;vH?vOCeExP!S{eg8KfK8E&YR(PY zq{K=WSjrNlckqS7^2Qb;rIZC$KXv?~-gdIT_u*-Opx0Lh1FN-(Xu;62> zFMo9pvkx1E9n8GqN|gXMel0BaQ~tMERvgv`6`&H7j_CepC}5)!5e(wq`Vap_wT2B=*Ey z`39nF_e6VAL6KM)pb7R>KfEoYUOhxvm7`kpXV!L#Zp+-46itGicVy0G>P;GPn&*l6 zbkMt;`Hr^`g-0x!C@gTzLVQSTfk@yMmv0*ZDFg62K7zmYo>g7?rFv*!kB8m{>z&XD zVwx^;5*M>}b)qsi-2{kL3G$FuQ_o5J!a!b48zwVC3C}qv z4=eafLgw$ymzn)NiYjcTkF(I7wi{Z%;D$au(deRKwhO1CD2aV0;1MQ2-m^{W?L_AN z;&a)p(#|qQb11WlU)W#@ed;qX)f(2QS5|-=HC^y33A3%$CnuJoYr2z&P_gr&riQ*w zm*>a8&iM<%-uH^X!qNcdl)K^x%|oXI8!9M1rnvT^?L=xZt!{;ogUisn$?L@JE_sO(Di`S^%V6$ zDSd0}Q3EZbCI_`$ybNyjN}T2e39JX{kx<+r2p;2ohvd<=`1G9XfIO!=>5*W(V-YZx ze9}qYwsn@F4NcOywMr$)nppg-$~t6S)ATg$JoxAj#1v0b~B| zf+!_VTVg+Syyg^@IAVN$FD7HA7rEM40=0PTZi%)yI_k54RwgwBgY~StlMiM$&%K5 z)@KiE5vAP?mX@C;L{%0}#XKhB3#St1FZePXd;OPm+_p+?59Uvoi>8Lj#2ph6uRzSO zCF3Pdzln>NTI%3fhIb$TOeXal*^}9z$;7nc$t1Yh>7E53 zE~YL;Qe@f4B3EpCY>hC|-7A%;sVlK`=Gu>sj2PA5q|g>;iC%e)qI;|!S+OQdaLfgM z#rVpwSv_b)J&bLpg<%e}t}1$7pqX||9XKl0>lC+a6?beD_u#as3iD+O9xs_CNdrXM zYO-&{dw8JC>>Jz`TP@8??)k7e{K`+3YdS&x zwMO|vSN7O*@w4=-WJ{_w&3Ni~RstapnTr84A&{`8Py#5u9YI`jxnjTWSSiZvNF(?a zz~#=p$AUG&SDt#WC7T<-o8SZ|K+MrQc>|So zHCz1?sc?1j+Fae%RYT=#(7uU#Y_n=Hp_b38tkz0=D7K|%xiZa$2;#6A6Q8N(;XXr^ zf5vX}Z=6`j?iolR$-k9Wy5LBUMuX7q49M!N|Atyyjb@KLJ2#s&Z1}U%$wf9!{K1`b zy1H7)o>85UfHFom=yF^i;W1jDb_tGb10#EAx3N>Q1Wse`jHk0*g({m{_<0@_$;u&! z&UmAN|C|K<^XMFt{9^Z%_#7E>5Jf|=u_?^C4zxg6DuavqPi<`u7IB$3&$Ntm>X3q| z`TR0e@n7;O_GSkou=_*B2C0hJW=f{U<4J=ehw;Wvz@2PR&E4M4=b5gJ6HPhT4;agt zPR@<64;b5qIYem%BS-S+=XAHaVQ17;vNf_jzrLBi(nk)7ZEX+KQ{#pQ&NqHZiewi9 zuCO->Li=p`%DiK|&{JZotAONzG*;eI5b*^~2d6?UX%MX}h1x9Wn=nj$(27zyt<-3yoYvZRro^uY_<% z(pDOhk`!>&@OElOa(VIu2!S|x7OcY4Usq_`_Ls?xDG+1@Qnb|6eSTUEhDzqmP~}nQ zd6p(caZ;a^F~k_9X-8y7^`O1Ij%*JVhD|MRa^v=^spgTYV{?RhQJ$YS;wEC}ee!nd z%&vE>P8)4z=v8x58E}23LY>=--`VPAYwv5ZA2k|gto3a9h?X%!7Mb5ltTs00p#UtA z7SN>Pj9Ie1dD;!(DrCj$=>Np?FsOVmQU0PmF~0HSS#h(Zc_3?VLm1JX_0j`Aao|03 zXIWuk5NzQPY+*6b@$6r5&|uiaX41rFoF6|IFL3hUb&;smX(1^xwI7)qg{4DU%Jopc z%0_NE{8(t>5Nu)q@g{#889}fVFW1JA=V~wjQlrkOErWozOP*;t1{E7$Gqu`eJ3y88 zN@w@eL!6%OQXeMB@7EKyi75{)thRjE`xg2WTIUa8wn!C2{kov!<0K;0?1st3*6SN{ zPK|oT187lWSyB>h`?IT9vDBWxz)aao44q}x6**9U9!Za(KTtc8TFJxy`>V)}j4Q<1JLC>~Nc zblH(*481cYa5N!sR3UI|Nehl-c+2HI%;G)l$JSD?jw(Ssjy~&{zsW1NV08O{$E<+j0F#pJH?QKEkc(!6%6AomCOgXM z>=EHjQks7ETqb*1V||oVpB&L1BZ9Q!TdaXjb7A5{EK}MrkNn(5x^{SS%5)(tD!c!2 z_iEQb@QRLs^ypJ7Wr09r;}ns<=haC&uDX6)H-GR}LaV8g?bc~(s#VStxxs4TxN|Uv zz4mBTCo*wcTF>z_IY$B~dKm+WX9XZ;hM6<&@Jchod@z2MY#aIJ8aFUB^_os_*BY%l z&Qrp)MzRrO=0u_}2z}%Lk2x;sL%D`LJ{nJZg~+*0WKQ~2@Pj0u7NVAgcOp@18^z^1 z;vxP{n`m}k&Aebn8pWm-;n8mBlNStZo&0w`A+3bnCP6OYt>infbl(!vVex0OPb@eB z_fmziLIGn?HAiaY+2-)aY|bBXDuHavL=jnyZ|Gmi)QGfC%d;M}q`D#0wFakiyiD|o zgB8Nx-*P*@PtGgYh`$=4pkpX+WH@W7%E_)q7Gf(sR!x7?Fvz=i2Za}$#`mBheY}y~ zj@n~(ojOF)rVU7;+TUY!Z8p#rZr>f`?tWDGkhFzhVP;CNWHaDlNnLz$4QVF_$x5FW zpvDLlcqF*{pc`u;4Di z-QC?KxVr`o?gS^eL+}Kb;O_1a&IfDlpM;;a_B#7K_ndq8xx>TEeBIOURCU+XbWc@R z4|R2?X4+!6eZ$2j=~OChDVR{mzxY{J-z%ajdzz1*Lq7L@;dHGo|3~q)R9F*!Q^i-s zl{aJu(GxSW^2;HjCw^m9rk)1rh2w>!Nm6jYkW952Q=3KV>iSKM#cr-MH zh@Z3$>dWc_(*w2YKDQd4u_T=ev*-F4_w*iOWrbQb<&^zUF9bPuMAmi0Zp!IdJ3e@bc6Uc}rx61SxL6w=dGDiSQH?B@tMZBrYbntU7S>+ll7P9OG zVa&R2-HiTc5?ki&Q~WvPa`{;Kfw8mKQmb2F*WDqwNZX?ux~Ct72X6x-@|5h)xa?24 z>`%Dt<5<`QQ*N2ru-8PhGDp~@H@b6j!yN7&EnPlAuXzhpJUod2KPlE1bU%+*F8-Jn z@OVD*KMoagKga*SpQph;=Kp@S&VN7tqrQuLn*huQ+y<;ni}r`7#p8KO_i>k!qGm#; zs1bek$WLBT%=r=cW-{X!l0@5OO)4zenI-g2ZHyrC>>P%A~(d zSMH~;8U?D5BN{dA@bW!K2)&O{70bnl-GOEr3*T)?uv>>e2iN7d$f0^0V)Ap6gt zLV68XToZlLqL2+1__KY$Z=*Yn77m8Zc*d0w`I>~r@q*InN4Ob|MZa#d!%D{rxAuH( z@a;^+Lor%--&7#8^@g5uufoRMMd21~-5U=Rhz zSKCEsxXYZ@kg&)y`}j41pMHP!%2BuWyGNz_QYD8OZ-+x>B%d*LZoh4QJ@(SpDh+(HCLGe` zl?D{U8}+OSj;5<^=2z{um{i>A`3h$|L`|eL|6;be%w6;i2YuaO{j`;Q$uFfC6oaYIe<_$VLfolV$p? zXbDVG{xO!gA}rOlV2&Kc;-A`Bipd^tIYIZD!i&G&4AlQrDf`OImp)AiU6^?yAZX1;Yq(*w z6lIr1$r4mSK`S01sPs}n2s1Q%HBe`0=v52xjAlT0!Qb zXjyCWTA`{fo?%3sA3sjuv(AXh){yL_8}hX2+p^v`GmSMCWA!vDWVw$bXiP!at|W5I zA$9y?&`b%jAU=%|3OhDLlWv1{F?A_^u0A4CUwjn}j@h0 z59=Q&UO~rYexim6X_P6n5T25B5G>b9T!a&j(!FKV-ysK-5-$I?F46&=lL_bJXG2gn z8W~?f__6#HdDT=H4RyDTlw1ytZ|rOVFC@^!mW*geX0_1O$MFoQ6U;|iu8=yg5E*-@ z>8l*5_7J$wc zBD>DaoxY^X&(!7ytzSM-8ymVv6-y#)7#7P8rDTgcC$JdHYYHma1+mdzO4{H6sz}6A zP$EN_T`c*Ugmdr?F@-2txi}4>1KNFTcpZHrcnHzuaaCKnq}d>z9={72#nwsLGS zCgprSm`de`0u+l;kYc4~S(q zSr*~TCa^sFd_IIqO*NnJS@eB6c=IUG7YrbI(0L;u6}S%tz!nTZ#rKJk&>skqaYe{J z#L9f2%mY%90Vez#KRVE>a&qF7d`HHx|_RvQan*8O<_oB?)dWUpus9UZ*=bXf7?CR zRx{#O5QDU)azvg(YfnO59DpfZ^Ep4_hIP8q1!bOYPe)z+4nwoy^W~V^#0ih10TJNx zFHO~+kGePtL$l@c<%E0N3D2zou}#fio2tDGb#W4gX2<8tDYuC;USk8|lA6CYReLS! z;tUMUp3j#v?rmqhpACqh>i%9-?X9Sb3otYXK3~qcOcENLNMC4KT&!B1_LS5V-KRAwYxD;k{B}{2Vl28xG`P@D%|9f)n=Sg8W2taGe*mXuAQGxfxNSs@6e5-msYu9Y)A%xe z%D(27WJ-0yrB}8^B$Mw*%^IX|wbLJ1QD`qG{DPm-xvA3KWX`;cA8x2(We#K1h#FyZ zARUEvPN1e7JSJ~}Sywpz((DJVJy zMk5=VX!=L8;!(`+G7D(Nl{Q$Hs*#;m3DIpSZN|EPfV8>~)5G52l2MKu>ZYLMHUb&SHv0Lt@P7^^Z*5(|)=s>W>sN57F`L0ekl1BOc zy-hi9K7V$^IwX3;tGD^^_2GHsx8pxl)t=$m^I+9D2D7I+GKU<#v__Ij(NCh;WV=-< z4nti4vlt^`=tf>;tI+efR_(vUrh8ijBC8Y<^A?T?lyZZf=SiHy)uiBq&u*a)9#C(IF(^6 zLmkdG7bzl=O%%&>QXaKc7Iwy9&`87}6`PwJxtlrR{2iV;-$LjxwE4qZ6;R-n+ZO^U zA~mx(_3l@)8MSt_O}LUwd}Kpk1FTWB1}*V4+qId~Ia=xk(S@WpUlv!B3~?X%AthgB z&RWa1mLTZKj&gFayQC8+&hCz>-IUa`S8TSXI72n<)}p;(or4~Cx)w9yn)|dKcc$cY zm3cg@^zp|1evF z>}?wPq^a=bksGooX=$iEvbik;;fz-n>d|1T9;+#~3Ftf|(p%-B&YDI@9&!xHAE7n~ zuLee@NOt$fO}M8q=SNF~DmAhA6m!39uX{+wpHbVWiU5mHRzbhD|A1yt!*f#=(ZD_w z?SLR|c~r6knkF0OUulvxjUXu;O=8BF%;++sH7h}};>m{YqJ`Cc5RdnBm4MLayWF^$ z_wxRy3)4%-ct4dSLGvSbRNt&L4}lG;{op`OqJR*I!gE*=4#-|{YV|kLCc3giO(H0S z-J_%UUn56t!{4A3%+n_5aABzCJXaPYf?>Q7SSxQKo`dD0Ykei}0CDC5X9@#L{7Rk5 zrU1@zoiRz6)UwQ)Foa(yWi9H!;jNxy(xL`^(qJnpAd*aO{*Oc-pCQS|#MHSpYedl-JI2$SVr zRN1a+&|>Q6(_g6WHG2M_SD^C!-qOZbsqTq9A=BvJh3<-v!yTSz6;Xm z=RicOS3*=op!8KXIuGh}WhRvDW-EQrU zn5k^+l>`}?tTj15$Lz(lsCu#lsqkFH1}fejniS{ zH)nadn6`W?HravXx;iY-F5s5o2F>_{+DxmSN`bO?`LcG%Bm?ZQNb+S#$|s z?YSsNc zw*9Dn+ZEq*$L)fO`+IFvS!FMalgU)aYg_rov#q`Cix|o_l_+ZMlyb#UKOd!?=;E*W z44{5(Q~7?R$tqjhXzLTyC>i?@P*=sy-yJPtm+2z?9|8N zdDNVUxDH@P_4OO*#(XTf7y!+#mjK?Vbe*#X>KW-fj05*sSb8lhO-(GhRP?rrlHHgU zf(QM=V)KG%mYAtVT)|ye4tdTs><*5W6j(yer^2L4vAQ`_3@rQ3%wbN(2NYZ+{T%U{ z{3YHDtS!~c+>*L5(vafxiGp+Z46A5fzMLKG828O-b9=KhCtR8MK3Oj5@~CRjQZ0Y( zVo(o%g-kkPTrQiPUA=N|EbFG$MjX*fFa+lIc1yi__vO)o zZH@uLXV$v4ZyXXAShKs)-GCIV&|+ihQ{VCAL&o~u=+XsSu435bo_D|Ou$Ftcitl#` zh{3Cqf1ckbfGm@}D}J<_5^MW@MDnf}X_<@*u*;u`#kwiP@JILzV-H zb=j!)1w;LeotJ@4D*0Dgu$lz3($GD+yR&>;dF17MPnDf_#df&ztl5?)Llrd9mXSFEOm{|?1dCkl+n)*kA!h_rMSip6z9(UI<)Zxt03dM&5 z!pthXzFOcQ7mAPcCKXa}erZ`h2!M9Xxx0!~XyVwr_uTA7JQY8Z9)Tu562Cq+4 z4msA6GWZcS0AZ&Ww5?7|RQ*|SB%s{Xi@qgSBB&RU)DJL!-lnmFY5|@&IKHuBt`u#K zw#N7QulM?oi+&^Ezmk~hh72uAeoy~@rTD+tcf6|vavE2{?9c7TF@QJ$!}3~}!lLQ{ zPbGF+-(~%}|LwBKwf_VmZ~Wz&o5E`8P4T<7p=?TMA8;gAH_ROWwLAYW68^Y&a(v^9 zVSBAhanZSe4OSXg;_SWlD9AkxxvlGX+QRgcS9WhKbaW5_J4$ifDK}r8-ncA_T#8{H>6<+txF+M z&j0HY$!TtcMVpX@0ZQ}#?Wgb`fA&9&O@0~bRLE+YXD}n)kaJY1t2UzrzenoU2q!bO zA>P?&jA|Eh0qaAz7OUHIpYt#omWdNC7&YYpawMWVn(a%ZP|`)nmlUJ>RD{l2eH>q{ zq#~&^>b3zDDYSTT+u=xb0ml|bi$2r3B-&ZMPY~5jnWP&z(`rbx;eBPk@)@OWYSeu+ z#J7%d#s>k6V=qi{hJKaCd~;WG!v`B9boHQdOQ2e=O%i7WjG~C)6l1%{(D~cC#14i} zA2$2P@9AaEZbqY*bWCri9+?F{I*Uj4`FH)?$Y(Bdg`rBlNarY8hKC>OSxo@nj(A5ofdq-fD;kOI`X*TO8zFtgeD&})oC zbnux>Up}TQAkz{_+)98{Gz^hBOvsz3b1`13m6X_e#Tw#seTfoQ>ZdyCo`ube?Opt5 z2ooj=63$ItYrPe;k=_-MpcKQ@traBC#L;^#Nx{|(xnH+tu*?x&vS`8cse?q?KZ9IK z^S2Npk4MGGVWz?}dQOM*46K`leDGQE)=o>*))Y2PZeRT^a-EV$NTjg{&!P&v! zntddk?w@urmy!%Qnc4E4a<*;I91YBaoo_(klgixQn{B^W_p(zzrlSDg#nWbR&|&Nt z+6u9)8XMpdXikO0qAwfY*P2grkFnKAWtva#uE(;kavPah5X*DS%8R;U`!Wi$Yfyo> zVf;Qiz+c;!r58q&iL{G*6)LuVp1Kr2Oy>jyzgmn*Cnx+(Lx#2M>Q&om?v&FP!u=Gh%F>f9UPNkL$-l{cf&Z{8RFDO($~vN z>t9=J-Zbzd;4Vv0t@Tc{VuZ8>Mt^}73^i11krM_}U?-EtKB7f6ygW=^ot>~V*+dkq zo^&H@GT*OhXmYK+o<%e6ve6^>^*zaV@s2;BN zNYEwI+bDyu^W3{{Qln=G(Rf){&@rAhSmZ)WD0eA5N}8K-(#$57QQg7otZ`2l8oO>i z6JE`g!vT_rY27Tb==qma++KIzV~tmS8|2}^?-*tYw$N=~vzBGFzp{pl$ZBcQR8K*g z=3PHpJ_G0cLCAn5{L%h2Bf!YKYi;kzkAUpp6*>)o9CAQy|7}g*8^-^13FwDzrAGAL z^V~x`HIs5ijL2^ApO@VPrRY9|m?qF!nww4x`h@E+J*nIDF)yKuEdY}byJ5H_77Ws= zbNc%U#=wqdC0Gkoaz{7o&_020w%VKg7h>^;FA%gfB1l6SU`c(FrA)vRBC-&c53`Oe zJEL{CW#3u1q{t|~#6;#qmvpD;_-^DcPzU~||q-|Cs*%;N6+)q=^>=Iv#4tt}(aMXD%ja$BaJlm*)8zAOE7 zQq#FMuO_ccJ#H#@YZxU$&~oUDFB^y|hstgpQGNM(C@fR)I_>Jo7&oRe0VDrNGJbWI z>4yfPfxVLqNvmpAK3<(VHQs%)El_X9E3Z0J!_B$r>0VFIdCI78bG@D$YpnKU{Igj@ zg&vS+EK8<)N^o(PUnV@~y$2TOUl}?)Z);2#?4g4LNQS-Zy=2(jOU7G_KP2P8vOQYY z1Rxn5u_O5;jAU-KpDwimqec-W?4Z)!e73JscM`LiZ1z_fBSknVqC?KV_R}J1iwJo| z4~OPxQUWAHHm{LP&iqNq5T+@V{YTvY8kFQW?!ox}zstQ=d>Pz7;{Mk)m44F-?EZqo zcWr+H9IJEXWr|dGkYjHC2GI7V`f)dU*@daYB)cyi_r=?kP;kGZn?sBnexdIgg?~nD zgCeje*d_{VTd5MQk3q9SyzAGDFO6lqE)DIRHE~RjCxY{JMPzHqo3wW#@55@~t30vy zCbHK$?@l^i5*Og5Y-8}!`Q5esv>o+b+eiG;_5y&m-+R^MSJW55C7X4buW-lXzejiC zyNL__N8I0s2>+K({6+HFbHCc%>BKPzNYhgY`{|*Prt0cAFt8S7BD}f2=&Lnme^$O- zfKH6Q*NL;07;jE2OYe1J3qU90`?@lu#^_^E1GvBZgL^4x)~pE|di;CtmzMki+~)(h zr_7UmU-&EcNW3@DlNX%ROk(Ei^Zlj-ac&AEmfPKh6K$f zchezzI0n{l6tPt@hK2(93Oib}*L8LZpH+RB(l(U{SV~*lmj$WW(*+s7Dq={5NRbtV zId`21aNl&Nr1ZEAaNd{r@$N0~=ogJ~Xt{oz($50{rZ4JOsIhc3Z@ctv(YCOb!d@qMO$^Qg zYV+Tv>>oShJ@j$B!+HY&^~`tXd5dUdo<8}{-H{6{b~ zb#HB)Gdu&|bM)x~lMj6S< zMfm82NuXDihOtZ6Ke8jEzwjFqrE$*R=|g$3fvMPOI=(}FtJi$q`I0yTH&qm2@mjF| znv+#LYS<OKtJdkkm4KptlpHsSN zbf>uNI|?ZJ9?`)HNyuxPDb&s);sfcQ7mGxp{w>HF4Q)d80)gh`XL}=T=NO=vnSx5p z3GJAxPDuorObWmuymsl)95T(3zP5|KLk9I{mo?m7-LeU4#9y>+z)(jVgr+9Oi{Udq$Qao%H%E!+Uc#CA(o+@=nrMk(lVZxa0DsWoPZ`e_qUo4S zBHW^_Azi?gw=LVv(BH1Zufe>9)yViav%yMM zFGYUOV`019yb}-eRlmytXReo@@>>0b`&DsSx4RwFi7cEM6*rD6(=IXlXbmbFo5Sj{ zBqbwaNq9g*&L!vxt{qgBA??fuWo^q`M^bt+378!W{>l2}EZl(MGKN1gWz$Nm%NE`J_pE& z14@EwWA)l# z?2GQTR}nC=cb_F_DAX$2?gvd)r0>9_=l&*~Vl$x6x+Hl(dlaz*Xnr2Nr4G5VPLn4Z z;IDPvVtutJKIw_DxIU}Mf>AwfS|N6Y#^D}3CwDgJIx3mJD~BZ+0VQ4oyjnrJn?lQm zUN=12R~yr0MaZSH7ZkJ1udG@#pO#PHH{apey>Fh;bxH}&=-<4S&J&bzm@xYzRz!w? zAb=;*ySqMEI|1qK>pj)bsGB!y``@sJt|dgdBYl_igY`#v^if|dK9@YMk+|hQfO|?5 z7Yr;kJOHA&3|J))5m51fn0(rrCfYm(nuca~l4ue=BkuL?rT3ng3q;vj>~6j(LskPd z&4J+U2{5A#B|!;21FH9=84Q7`lpBi zgJI)!0gx(1J8ElL3=!uH;(hwnOvAiu-6HvPnCDPqeE3CMOV(($1PnfQUWW#S?uW8+ zKE*etwvaQWv`%|c+MDWoJsLItnN{o3&QFE>pR6v>A>hfcxSSa@6lT$wIzUs6NV#)Glav1Q-;4nG-@>?v_`Zpnb+uU3G`xsz=W^D z+J5JEoORrQW*@Sjbq(RsNFp5M`l{|{`}o213ErzlH12Uf$%37-@=_%(W-*dO*C66P|RVmzzGY0kz-6kcNv&xHBac|m~@5qt?p9IW}2jO_^tg-_rg zj>|2jLPwgSV10aSzt#xp^86fse-sPurkl;ta~Ud<80w8fE`c)+waMTbAi&R4%~cF@ z6Ho_eE(&BIAmTro%fiag%tqHrTGz(L&`jT&>d|l7`@o9P{lZIg+lcbsN9Z_;{)c++ywr> zOVUMtW~L-(j@_EI)t_ImU^w6r@p!|m{LxYuzMVZMurN=Sk`{Tjv;pfk_poNDUxzFZPJZ$9jtu3)0ZfBgUm;hc}%fwr=+&=`{ozQQM0q5I~vj z8s1aMVdgqFlmILi^nlmrA&E~iby;iGnZb>F`3h`_e*D<}E^7JAHgWchq)ktZrzk`GX#>0L1;b95M2J}?> z6BvmOBmi=#0ez`|*8Vhi?GLRls4EDv2n`Mfj_T{;tK%!>tAfiJmiCNf5%i^yjv(-1 z5LyW+KZ;%zD=c2$z#gUoIyy7Do@Js%CN(wfJ{>O&HLxM%##aqb9!{3lU`a9D1So&5 zV|UzlOuZe$R5Aez5Z`QJVb|U`=q{88ff~V!!o8l*A$#jIlFNkyQewjw%;OG(40h$~ z;4uPCU5`dn3J6yI#84p|2(Ba>Al@^87bC!7^-dd^>e^`PXxeDrDI=ZtA`+N1h>h}# zoC=NR^>{D2E9yujJbes+4WN)4I8@$1pCzsIOkJu9uy%?6kw1#FY zZ8!=@fr;x!%*KasBod8;gnE7mnbmv6!iTSm*`H>WhSw~AeDTa8FY79)EwGf}RKqdh z0tlY9N1&H3*0M{=zgc$*RL6M2QB|F`w=&~J>n836@yi0fN{g&Tew89Sd6{1TYZtC3iyI2M#d>1tS zXGjh`C5)@?2Yq4)xj2a^i}246Vm$%DMzzVDg^rud8ytTaGmN$Zg(Y?;(5hpbHB`glZTbSW43(T)>B8JCNbd?kM$rIB=wCX}Ei1AOpGCk7XGjGu@!+wlxaMZ4L! z(B?h~a0pO3B3s<3_V^o1dW=IFdo1?-@3r3Vdsx5Jq1|8cSHKl-N{S!40gR*nee~DL zo;d>q1(=G&^iL(0?p|Xl&4gjfBXcHJq@~HeB$J6jYJtX+ku{{Btz=3hktwymt~}`) z!D)Y%sX1mnj%{bBM~_Wam-Pu!)*r%~ELYO|T@O!6J_qiEADhfR0=4wt0yD&eGYckn*pc}KD*$>vNr5x3*&9c(jdC(^i$2>bR@RGZW&|?tr(q;8M z`B!3*p0y3*3P@F-SW6=Ru$nIM)ChE#c1@^|>S^gpQ0ZN>@?9(C`cN^T$PD=Oc}|Kb7ntnWfU!=?~;PRlCDgIKml|dPp*b0@q_|`<70R$9ZxdOD;R%r#vwjnuG z*UEKr|Bb2n)b?ohcdqDsQ=WP=)4&mYqu~^NWm7LqMwg5RU^wm>wVF>ce09pI>U#kn zkc7a*thnQyBQAVLH^5aoJebtNQi8vS`G@USWbMMuwG-A z>dcRehM0)Y5EQ88gmTOPD<)}6Yxb>3IeQ&0x7m=rwAh_m^d7pcU#?UpRp z27#5^+xB0$N5i7f(uUU`1z}S#dd3dWMQE}*~^?9SFeuOJ)cIgW! zS%hIzDhJiAS`X(8V=#PJjrQOaIw!8G9e&E?V7vKC)_et~OS^AD{@h_Sd!piaLa(g4 zCgf-W1I?7!wfp%aVLR86b()a3Kjar#Y_}PbZy~)NMv}nJ_MJAjr(;bLiM*)QcEBF& z3rUaGgzonzkW2u}G{DSym$xq*&MD6l>mC=9Ax;H%FJmZ5E; zkT4B1Rj*J|0~TNB;;8ZFd3HZwNn@q5%JxvgXgU0>&sg0ohGM?mV<=&5Q}O1P!c{|G z$I3R}qeY7oq4?5JkqMkxy@%gzywaOju@|T(f7PVL_yNugMPBquw!eolxcWIw~<${c6~!6|+Wt?xv$= zjgt~vj5 z9f>{1$;$?fY{fqnB2dq94tKcQWiJX5(Yf)ITV z3!3eLxt)o6pF8-QgK{EZZ8pKU(0Ja0U)wz!HAMLMTV87vUE2eWZ@@|51VfS>0F67_;`~jx90@xjO zzCxvEb0B6wemnLa%Fi!w&{J_L-N8%UUd5lJcIJV&Yx~!{z+v`ZpVPd~dw+H20iY76 z`7_@>p@l6>{0@1zt%rKpS98!kHzF;Bb8PCZxmHK`AB`_sQb8L}f4mEYA*I04I<-eX z_rhz0zaU#0gg;*M5S!O81u9%f_6-Z;V$E$3dc%=OV)*5BAKqs!0Z}$r2wPWjZRsL( z%WPgX5X#X$z2ey`zqb%Qvd7~*)0Pcb+qDL$-=K??%Tmi+(knix3xs_JdETFmdSX$9 z0;W(sZ;OhJH6{Y;;t1g+&HEDjM3Wda2);QMbxDgCUKdOl-iuCSxqbtk@+$PO-4eMBNMd90P^Q5AUzJBrc)U2?}P)){c zB(r|T<(!9p#y7YS<&`-4+DeIjYlI@xU+wWO%9abwJd1#h9jLs2d>m7UD)*I7wGTXUD%dVUKR{E^C% zOER``ZVcvbZN{t9ee5AC_q7;zj5SS!`mM>sT}_moZ>f{@pL@1Tbc_2|;pVy~z7{LG zkb3fgPN95B&3LI7I%N;+$_#;DRp0vY7lBLL^Y+F7^dl>&-UAaA zpFv}1IvC9d&s_vhV&EjeL zu|I4!$^i=;t80mRfQJo7ytDS$vIvIQm}6vx^#kMBn(f6LlJ&OQF|Uc$t+selg)3eP zL_K!L5pK#B4JZvL4ksv#g-7a4tncksaM$u}7_ggrtAN=#RO(vIn}Lu67Y&Zc1C@Zd zfOwCGKT_Czb0U{cfxhMptxv(~^;p-t?MI35>7LGTf_0`$r80EA#XlmeXD0oFnX^w9q(dpEya%iP@f?%q%0Xp6~5 zBLi+l37D6D*SCMzNB}7SoL>2L~+FA*p}nBm3R1uHYEPg;40tAnFLUle_yN?%wdO&G| z2fjo3*F*N}`byPaXq4UQ*_PEW{W0fWI#=^SJn5)8j<@H}pI> z0{u?_()|tKeU(4?)_fev<$*yb`g_19+uZO2NZwKCsBS;Ko5P8$IglmD6gd+ zqx{i+_iy9}v;JeU9{c1y0ES5a4d8>F{4wBTH@64CAb`E?cUk|1!oRNm$G%|?fH|^% z1Nheh^4Q(#0WeGMZvg-L33%+m^Z=M4|2Kett&JZ$1w8p{O0jx2Azbrt%_kNrN^gjUf CY5_d} diff --git a/examples/Basic example/My_Experiment.json b/examples/Basic example/My_Experiment.json deleted file mode 100644 index c2ada168..00000000 --- a/examples/Basic example/My_Experiment.json +++ /dev/null @@ -1,351 +0,0 @@ -{ - "name": "Experiment", - "level": 3, - "version": 2, - "creators": { - "a0": { - "given_name": "Max", - "family_name": "Mustermann", - "mail": "max@mustermann.de", - "id": "a0" - } - }, - "vessels": { - "v0": { - "name": "Eppendorf Tube", - "volume": 10.0, - "unit": "ml", - "constant": true, - "meta_id": "METAID_V0", - "id": "v0" - } - }, - "proteins": { - "p0": { - "name": "Enzyme", - "meta_id": "METAID_P0", - "id": "p0", - "vessel_id": "v0", - "constant": false, - "boundary": false, - "ontology": "SBO:0000252", - "sequence": "MAVKLT" - } - }, - "complexes": { - "c0": { - "name": "ES", - "meta_id": "METAID_C0", - "id": "c0", - "vessel_id": "v0", - "constant": false, - "boundary": false, - "ontology": "SBO:0000296", - "participants": [ - "p0", - "s0" - ] - }, - "c1": { - "name": "EP", - "meta_id": "METAID_C1", - "id": "c1", - "vessel_id": "v0", - "constant": false, - "boundary": false, - "ontology": "SBO:0000296", - "participants": [ - "p0", - "s1" - ] - } - }, - "reactants": { - "s0": { - "name": "Substrate", - "meta_id": "METAID_S0", - "id": "s0", - "vessel_id": "v0", - "constant": false, - "boundary": false, - "ontology": "SBO:0000247" - }, - "s1": { - "name": "Product", - "meta_id": "METAID_S1", - "id": "s1", - "vessel_id": "v0", - "constant": false, - "boundary": false, - "ontology": "SBO:0000247" - } - }, - "reactions": { - "r0": { - "name": "reaction-1", - "reversible": true, - "ontology": "SBO:0000176", - "meta_id": "METAID_R0", - "id": "r0", - "educts": [ - { - "species_id": "s0", - "stoichiometry": 1.0, - "constant": false, - "ontology": "SBO:0000015" - }, - { - "species_id": "p0", - "stoichiometry": 1.0, - "constant": false, - "ontology": "SBO:0000015" - }, - { - "species_id": "s1", - "stoichiometry": 1.0, - "constant": false, - "ontology": "SBO:0000015" - } - ], - "products": [], - "modifiers": [] - }, - "r1": { - "name": "reaction-2", - "reversible": true, - "ontology": "SBO:0000176", - "meta_id": "METAID_R1", - "id": "r1", - "educts": [ - { - "species_id": "c0", - "stoichiometry": 1.0, - "constant": false, - "ontology": "SBO:0000015" - } - ], - "products": [ - { - "species_id": "c1", - "stoichiometry": 1.0, - "constant": false, - "ontology": "SBO:0000011" - } - ], - "modifiers": [] - }, - "r2": { - "name": "reaction-3", - "reversible": true, - "ontology": "SBO:0000176", - "meta_id": "METAID_R2", - "id": "r2", - "educts": [ - { - "species_id": "c1", - "stoichiometry": 1.0, - "constant": false, - "ontology": "SBO:0000015" - } - ], - "products": [ - { - "species_id": "s1", - "stoichiometry": 1.0, - "constant": false, - "ontology": "SBO:0000011" - } - ], - "modifiers": [] - } - }, - "measurements": { - "m0": { - "name": "Run 1", - "temperature": 310.15, - "temperature_unit": "K", - "ph": 7.4, - "species_dict": { - "proteins": { - "p0": { - "init_conc": 20.0, - "unit": "fmole / l", - "measurement_id": "m0", - "protein_id": "p0", - "replicates": [] - } - }, - "reactants": { - "s0": { - "init_conc": 10.0, - "unit": "mmole / l", - "measurement_id": "m0", - "reactant_id": "s0", - "replicates": [ - { - "id": "repl_substrate_1", - "species_id": "s0", - "data_type": "conc", - "data_unit": "mmole / l", - "time_unit": "min", - "time": [ - 1.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0 - ], - "data": [ - 5.0, - 4.0, - 3.0, - 2.0, - 1.0, - 0.0 - ], - "is_calculated": false - } - ] - }, - "s1": { - "init_conc": 0.0, - "unit": "mmole / l", - "measurement_id": "m0", - "reactant_id": "s1", - "replicates": [ - { - "id": "repl_product_1", - "species_id": "s1", - "data_type": "conc", - "data_unit": "mmole / l", - "time_unit": "min", - "time": [ - 1.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0 - ], - "data": [ - 0.0, - 1.0, - 2.0, - 3.0, - 4.0, - 5.0 - ], - "is_calculated": false - } - ] - } - } - }, - "global_time": [ - 1.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0 - ], - "global_time_unit": "min", - "id": "m0" - }, - "m1": { - "name": "Run 2", - "temperature": 312.15, - "temperature_unit": "K", - "ph": 7.4, - "species_dict": { - "proteins": { - "p0": { - "init_conc": 40.0, - "unit": "fmole / l", - "measurement_id": "m1", - "protein_id": "p0", - "replicates": [] - } - }, - "reactants": { - "s0": { - "init_conc": 100.0, - "unit": "mmole / l", - "measurement_id": "m1", - "reactant_id": "s0", - "replicates": [ - { - "id": "repl_substrate_2", - "species_id": "s0", - "data_type": "conc", - "data_unit": "mmole / l", - "time_unit": "min", - "time": [ - 1.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0 - ], - "data": [ - 50.0, - 40.0, - 30.0, - 20.0, - 10.0, - 0.0 - ], - "is_calculated": false - } - ] - }, - "s1": { - "init_conc": 0.0, - "unit": "mmole / l", - "measurement_id": "m1", - "reactant_id": "s1", - "replicates": [ - { - "id": "repl_product_2", - "species_id": "s1", - "data_type": "conc", - "data_unit": "mmole / l", - "time_unit": "min", - "time": [ - 1.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0 - ], - "data": [ - 0.0, - 10.0, - 20.0, - 30.0, - 40.0, - 50.0 - ], - "is_calculated": false - } - ] - } - } - }, - "global_time": [ - 1.0, - 2.0, - 3.0, - 4.0, - 5.0, - 6.0 - ], - "global_time_unit": "min", - "id": "m1" - } - }, - "global_parameters": {} -} \ No newline at end of file diff --git a/examples/Basic example/My_Experiment.omex b/examples/Basic example/My_Experiment.omex deleted file mode 100644 index 4d65b71ee40d41bb748040885eb9db7f73acf9b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4196 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 diff --git a/examples/Dataverse/EnzymeML_Template_Example.xlsm b/examples/Dataverse/EnzymeML_Template_Example.xlsm deleted file mode 100644 index e3739bf39dfd09bf663ed60c707cae77aca078b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98309 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 CY5_d} diff --git a/examples/Dataverse/UploadToDataverse.ipynb b/examples/Dataverse/UploadToDataverse.ipynb deleted file mode 100644 index c7fc1d96..00000000 --- a/examples/Dataverse/UploadToDataverse.ipynb +++ /dev/null @@ -1,86 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "fdc272bd-5594-4b41-8c7e-2ba1af60db37", - "metadata": {}, - "source": [ - "# Upload to Dataverse\n", - "\n", - "PyEnzyme offers the upload to any Dataverse installation that supports the official [EnzymeML metadatablock](https://doi.org/10.18419/darus-2105) by utilizing the Dataverse API [PyDaRUS](https://github.com/JR-1991/pyDaRUS) to map all relevant fields and perform upload. The following steps will be done in this example:\n", - "\n", - "- Convert an EnzymeML spreadsheet to an `EnzymeMLDocument`\n", - "- Upload the dataset to Dataverse" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "0f8f8f98-4ff0-4c04-bf88-a3ffc43e27ca", - "metadata": {}, - "outputs": [], - "source": [ - "import pyenzyme as pe" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "943dc442-fa97-4ef6-89d6-bc4c7f1788b2", - "metadata": {}, - "outputs": [], - "source": [ - "# Load the EnzymeMLDocument\n", - "enzmldoc = pe.EnzymeMLDocument.fromTemplate(\"EnzymeML_Template_Example.xlsm\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "4119ab0f-6b4c-4b74-8a52-09f940684dae", - "metadata": {}, - "outputs": [], - "source": [ - "# Upload it to Dataverse (Dataset is private)\n", - "enzmldoc.uploadToDataverse(dataverse_name=\"playground\")" - ] - }, - { - "cell_type": "markdown", - "id": "c749b3af-3de0-429a-b23e-e474bb7e2f4c", - "metadata": {}, - "source": [ - "For reasons of data quality, the resulting dataset can't be viewed on the web. In order to visit examples that have utilized the method, see the [EnzymeML at Work](https://darus.uni-stuttgart.de/dataverse/enzymeml_at_work) collection." - ] - }, - { - "cell_type": "markdown", - "id": "9cff7bbb-9186-4c21-8bad-813291d29b33", - "metadata": {}, - "source": [ - "------" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "enzymeml", - "language": "python", - "name": "enzymeml" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.10" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/ThinLayers/3IZNOK_TEST.xml-sbml_conversion_errors.txt b/examples/ThinLayers/3IZNOK_TEST.xml-sbml_conversion_errors.txt deleted file mode 100644 index 79ffaee8..00000000 --- a/examples/ThinLayers/3IZNOK_TEST.xml-sbml_conversion_errors.txt +++ /dev/null @@ -1 +0,0 @@ -WARNING: Model is encoded as SBML Level 3, PySCeS only officially supports L2V5. diff --git a/examples/ThinLayers/BioCatNet/DMBA_selfligation.xlsx b/examples/ThinLayers/BioCatNet/DMBA_selfligation.xlsx deleted file mode 100644 index 3b262735ae696f942d44d36902c14116af2be572..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130158 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
2nf*6+}3;|l6eEjaljl7xlkZBnjVE;u54^e;5w zfb`{plahm8@>u@A=d!^O%7`u9dHUn$a>21f#1xde(YWR{Tn%Xf!kwgt@_lzh@iRwI z&-rwj;2@JB>J7!_jT+;*OmKww9{II<7OCZdW0U*s8O@M*PwXdd5z4ga5Y9b3nu$!z z#``LNrg`}8lAiCWwYyAk{AcH1%01h}L(2pQiJlksbS|ESCRH4939kuV&g1a#(eS>QzMD;wYADiF3})Y0(AzwuE+3rm z6p;jeX{hBHA58@vJuRlp`Q=khhJw|g;B0O|GDedTkGe0zJZ!Qgjwa&>FYJv|xIc9@ z7t(W+uuBPT8R5k4i;BymME@j7S2HokUl~*U0z;P-j$xKeQt=r*&U~nuQ0FnyVTTl0 zd6=5c-|+`&J@;?{$}cpOMX2jMcdqVf@=lWS-i^xwb|+B(ifXA$LPtWC9m zbeN;USw!hDklCp_9XFvS;*6qKrkVC^kVTXx1hy-3J9lvZSx8AWi+cH$_NGWPu}>qC zH^WmRO$4c+5hObDYl|rTiAPJ_?w@C}h%&bvYYpy}y#mTBe(m_GY6g;2L`g8_iMt)t z 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

(9tZ7j;YfI4 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 a|KBfDO%Wd9f6t-;*Ct@*3OAzwfBir0S%~uh diff --git a/examples/ThinLayers/COPASI/3IZNOK_TEST_init_values.yaml b/examples/ThinLayers/COPASI/3IZNOK_TEST_init_values.yaml deleted file mode 100644 index e8ae123c..00000000 --- a/examples/ThinLayers/COPASI/3IZNOK_TEST_init_values.yaml +++ /dev/null @@ -1,12 +0,0 @@ -global: {} -r0: - k_cat: - initial_value: 0.015 - constant: false - upper: 1.0 - lower: 0.00005 - k_m: - initial_value: 0.01 - constant: false - upper: 1.0 - lower: 0.00005 diff --git a/examples/ThinLayers/COPASI/Model_4.omex b/examples/ThinLayers/COPASI/Model_4.omex deleted file mode 100644 index b8cb1d2718e5393c1f6637a124a0d14fa46ba137..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9086 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 L0eDLFPw#&Ky%&i} diff --git a/examples/ThinLayers/COPASI/Model_4_init.yaml b/examples/ThinLayers/COPASI/Model_4_init.yaml deleted file mode 100644 index c496e761..00000000 --- a/examples/ThinLayers/COPASI/Model_4_init.yaml +++ /dev/null @@ -1,75 +0,0 @@ -global: - K_si: - initial_value: 20 - upper: 50 - lower: 0.01 - constant: false - K_n: - initial_value: 290 - upper: 1000 - lower: 0.01 - constant: false - v_r: - initial_value: 10000 - upper: null - lower: null - constant: true -r1: - K_s: - initial_value: 14 - upper: 1000 - lower: 0.01 - constant: false -r2: - k_2: - initial_value: 432 - upper: 1000000 - lower: 0.01 - constant: false -r5: - k_6: - initial_value: 1660 - upper: 1000000 - lower: 0.01 - constant: false -r6: - k_3: - initial_value: 417 - upper: 1000000 - lower: 0.01 - constant: false -r7: - K_pg: - initial_value: 12 - upper: 1000 - lower: 0.01 - constant: false -r9: - k_5: - initial_value: 491 - upper: 1000000 - lower: 0.01 - constant: false -r10: - k_4: - initial_value: 73600 - upper: 1000000 - lower: 0.01 - constant: false - k_4b: - initial_value: 9126 - upper: 1000000 - lower: 0.01 - constant: false -r11: - K_p: - initial_value: 39 - upper: 10000 - lower: 0.01 - constant: false -r12: - k_d: - initial_value: 0.000643 - upper: 0.5 - lower: 0.3 - constant: false diff --git a/examples/ThinLayers/COPASI/Modeled_r0_s1/3IZNOK_TEST.omex b/examples/ThinLayers/COPASI/Modeled_r0_s1/3IZNOK_TEST.omex deleted file mode 100644 index 0c5445056384e2ba94c7f913aa79eb6b77f47cb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9720 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 ahy5?ps3{^L|J959=dt)RsUW(){{9Dr(_tq7 diff --git a/examples/ThinLayers/COPASI/Modeled_r0_s1/3IZNOK_TEST.xml b/examples/ThinLayers/COPASI/Modeled_r0_s1/3IZNOK_TEST.xml deleted file mode 100644 index 888f8079..00000000 --- a/examples/ThinLayers/COPASI/Modeled_r0_s1/3IZNOK_TEST.xml +++ /dev/null @@ -1,246 +0,0 @@ - - - - - - 10.22011/strenda_db.3IZNOK_TEST - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - MAMRIRIDLPQDEIPAQWYNILPDLPEELPPPQDPTGKSLELLKEVLPSKVLELEFAKERYVKIPDEVLERYLQVGRPTPIIRAKRLEEYLGNNIKIYLKMESYTYTGSHKINSALAHVYYAKLDNAKFVTTETGAGQWGSSVALASALFRMKAHIFMVRTSYYAKPYRKYMMQMYGAEVHPSPSDLTEFGRQLLAKDSNHPGSLGIAISDAVEYAHKNGGKYVVGSVVNSDIMFKTIAGMEAKKQMELIGEDPDYIIGVVGGGSNYAALAYPFLGDELRSGKVRRKYIASGSSEVPKMTKGVYKYDYPDTAKLLPMLKMYTIGSDFVPPPVYAGGLRYHGVAPTLSLLISKGIVQARDYSQEESFKWAKLFSELEGYIPAPETSHALPILAEIAEEAKKSGERKTVLVSFSGHGLLDLGNYASVLFKEKLAAALEHHHHHH - Arabidopsis thaliana - - - - - - - InChI=1S/C8H7N/c1-2-4-8-7(3-1)5-6-9-8/h1-6,9H - C1=CC=C2C(=C1)C=CN2 - - - - - - - InChI=1S/C3H8NO6P/c4-2(3(5)6)1-10-11(7,8)9/h2H,1,4H2,(H,5,6)(H2,7,8,9)/t2-/m0/s1 - C(C(C(=O)O)N)OP(=O)(O)O - - - - - - - InChI=1S/C11H12N2O2/c12-9(11(14)15)5-7-6-13-10-4-2-1-3-8(7)10/h1-4,6,9,13H,5,12H2,(H,14,15)/t9-/m0/s1 - N[C@@H](Cc1c[nH]c2ccccc12)C(O)=O - CHEBI:16828 - - - - - - - InChI=1S/H3O4P/c1-5(2,3)4/h(H3,1,2,3,4)/p-2 - OP([O-])([O-])=O - CHEBI:43474 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - k_cat - p0 - s1 - - - - k_m - s1 - - - - - - - - 0.015 - 1.0 - 5e-05 - - - - - - - 0.01 - 1.0 - 5e-05 - - - - - - - - - diff --git a/examples/ThinLayers/COPASI/Modeled_r0_s1/3IZNOK_TEST.xml.psc b/examples/ThinLayers/COPASI/Modeled_r0_s1/3IZNOK_TEST.xml.psc deleted file mode 100644 index 58f4c6b0..00000000 --- a/examples/ThinLayers/COPASI/Modeled_r0_s1/3IZNOK_TEST.xml.psc +++ /dev/null @@ -1,40 +0,0 @@ -# Generated by PySCeS 1.0.1 (2022-03-17 22:47) - -# Keywords -Description: 3IZNOK_TEST -Modelname: 3IZNOK_TEST -Output_In_Conc: True -Species_In_Conc: True - -# GlobalUnitDefinitions -UnitSubstance: mole, 1.0, 0, 1 -UnitVolume: litre, 1.0, 0, 1 -UnitTime: second, 1.0, 0, 1 -UnitLength: metre, 1.0, 0, 1 -UnitArea: metre, 1.0, 0, 2 - -FIX: p0 - -# Compartments -Compartment: v0, nan, 3 - -# Reactions -r0@v0: - s0 + s1 > s2 + s3 - r0_k_cat*p0*s1/(r0_k_m+s1) -# r0 has modifier(s): p0 - -# Fixed species -p0@v0 = nan - -# Variable species -s0@v0 = nan -s1@v0 = nan -s2@v0 = nan -s3@v0 = nan - -# Parameters -r0_k_cat = 0.015 -r0_k_m = 0.01 - - diff --git a/examples/ThinLayers/COPASI/Modeled_r0_s1/3IZNOK_TEST/3IZNOK_TEST.cps b/examples/ThinLayers/COPASI/Modeled_r0_s1/3IZNOK_TEST/3IZNOK_TEST.cps deleted file mode 100644 index 4304ddf2..00000000 --- a/examples/ThinLayers/COPASI/Modeled_r0_s1/3IZNOK_TEST/3IZNOK_TEST.cps +++ /dev/null @@ -1,1079 +0,0 @@ - - - - - - - - - - - - - - k_cat*p0*s1/(k_m+s1)/v0 - - - - - - - - - - - - - - - - - 2022-03-17T21:53:24Z - - - - - - - - - - 10.22011/strenda_db.3IZNOK_TEST - - - - - - - - - - - - - - - - - - - - - - - - - - - MAMRIRIDLPQDEIPAQWYNILPDLPEELPPPQDPTGKSLELLKEVLPSKVLELEFAKERYVKIPDEVLERYLQVGRPTPIIRAKRLEEYLGNNIKIYLKMESYTYTGSHKINSALAHVYYAKLDNAKFVTTETGAGQWGSSVALASALFRMKAHIFMVRTSYYAKPYRKYMMQMYGAEVHPSPSDLTEFGRQLLAKDSNHPGSLGIAISDAVEYAHKNGGKYVVGSVVNSDIMFKTIAGMEAKKQMELIGEDPDYIIGVVGGGSNYAALAYPFLGDELRSGKVRRKYIASGSSEVPKMTKGVYKYDYPDTAKLLPMLKMYTIGSDFVPPPVYAGGLRYHGVAPTLSLLISKGIVQARDYSQEESFKWAKLFSELEGYIPAPETSHALPILAEIAEEAKKSGERKTVLVSFSGHGLLDLGNYASVLFKEKLAAALEHHHHHH - Arabidopsis thaliana - - - - - - - - - - - - - - - - - InChI=1S/C8H7N/c1-2-4-8-7(3-1)5-6-9-8/h1-6,9H - C1=CC=C2C(=C1)C=CN2 - - - - - - - - - - - - - - - - - InChI=1S/C3H8NO6P/c4-2(3(5)6)1-10-11(7,8)9/h2H,1,4H2,(H,5,6)(H2,7,8,9)/t2-/m0/s1 - C(C(C(=O)O)N)OP(=O)(O)O - - - - - - - - - - - - - - - - - InChI=1S/C11H12N2O2/c12-9(11(14)15)5-7-6-13-10-4-2-1-3-8(7)10/h1-4,6,9,13H,5,12H2,(H,14,15)/t9-/m0/s1 - N[C@@H](Cc1c[nH]c2ccccc12)C(O)=O - CHEBI:16828 - - - - - - - - - - - - - - - - - InChI=1S/H3O4P/c1-5(2,3)4/h(H3,1,2,3,4)/p-2 - OP([O-])([O-])=O - CHEBI:43474 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 6.0221417899999999e+23 6.0221417899999999e+23 6.0221417899999999e+23 6.0221417899999999e+23 6.0221417899999999e+23 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Automatically generated report. - -

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 v)X|r%Q@?oN2zElq@My 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%0DTiykWBuhhz*!)0aXk9r(1Abk1OMp{F6$xL=O- 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 z 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%0AqL^8*={bI0WZ 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 cB3n>EwBYeY`PC64s-czTdmW(j zO1*|;fKPMQgogt;(*KW?^dm8LVzvdSeo{F>RbPIt zECb2E7XS41=y#@sQ|X}T{+$F6*y%h>;(Rr#pb!FrDt3NeJTozovH6H{-!<{@cMr92 z(7DqjCGkE=DWRm)0z>re7bYn2bl=COqub8oZ_n@Vr_9VG^1pUkQQ#+IS(A!yk+OAi z?&}0_mL9|yk{!-!9B1)8x5~*~$zZGxOohZeo&Naw{mf>jc}I=bC(E)pj_R~0b@#Gq zGNo`0C?x)MMMY3GMf$V^D^1hGKzA^iP{j2Q9<4 z@`0Z|){gzJ(m|PYtMcHV9oArQG6u(UM6A0lCB^Q-p`S>E%4LgD^lM_Bf8Lh#=ie!d zr$VZyKW~%nQ`U&c$tK?1pRh?HV(?OwcAJW!vxNamlD{IrFbg6Z>H>S*#u zQtbySQ_BLAD2__)skR-pj<>ziOFK`1HPSx;v*8;a@d2W%y-RZ`(J!*m>87-4S@=oT z26q0H_~3d(FS;%c);RvpFj*y6q~^E#Vu}U(MBRU{viKJYD(4Mj1nV*@zi6h6%x=`P z*caNvZ8&M|KW7~}ZQ5{<#WkKRew*NVr8*b-C|(i?~!K@m`^ zV1x?@+uvntKQ^(IhDRrvBhJ&FB8&}!qf!`CX@ZDk{&L&aG`A#j& z(0WZO9InpLs|rwS`Q1hwJNb|7e};>lqXNJAEP$yv=dG`>zVHMvj9^1?q#yIBAjTM4 zE|6Aia8xS{#l>}=U^CL4JWbLTJJtVaCSGSjm|9$g}?S3c; zR6Kd#Nix)$(+w zqcoF2Bl}21Cmj~W=v;O8+cOx~Of_e2FeQpEuz0oG(LaSA=MB*`W0FIxT7;eIi zxoRm9|EWmbd-BdIwuS7E_2)XG!>YM&VJeo3Wr|!N7`;Ww?EWhF16|5-v0L zSL$l?X|*g(=2P}D4mF?W^EjbK)WZfWWO)coQ%1H~%Ig!)MnHn3D$6SKt7~;3w*u#4 zQdoW2FZDVH=OTH0h4r`m1W4*bGQyeuQodE}`T2uUdn!dwwMr2ay;JlpuQ#;V#2R*# zsK?(CYoP?_4$Mwy?G29U$$kn}*yR+B!)(&_!aD@G|0F|pox#E_Mkj+*y$hxr*vg9( z7N>aaud%Cdd_&8K>i&KT7cLKpe(l)$2`nQ1t_kBK1ssh!JwLw&4A?)W;Sm-^;8JXF zTET2-8l70E7H!_}>Y1lH&-6;Ne19=4QP(P#j1J>pLcc5fW~T#Nb0nMeBmN6YG2IU{ zbnD2Rx6-mbwL*%(qsP9@6X^F+A5#cpBfdsc2HV^ce|pF?!etTn4FWXCTq+9ET_Ki+ zIqq(O&UFSyfQ_4)^d{~QdwI5(R-{j*u=7LnIe-b-OLccL{w@PgEHJ$LEyd%q-Vr*6 zFx{Fr;_^ElAhd$@`80qX@{yh_@F!7Uk~q`q0PSi?#CQa2Q{Rl%qywm>NY+;ti+uMD zur%zRvEbS-+&^6$5E;7`Xnq9mh85k+4W#Y7hdLw$6Xb%A4bt6gUp1p zF$vQg!~>hAW968jp`>wO7tmGn2HES+bmJ9uSLpjqLm>zdZ#+nP=k%8qiErQFBB+K@ zp?i_lrwC0Y-ybby<}N-(8+`m;zy-9Z5=^SuiFDBdN@76sr?g1`Po9mojS~vR9)+i~ zJhk!@_$BYV%gY__*9`-SKto4{wh6M!BFl~8J7Pr}D*Dg*Uywm8_LF813t?mwFwQtp zFZV;z{mw+KVVFYsRR)vX=lF!aCei*J7@m7cbkA~yJ(m>6qwuav!r=lBw(LCX7|~-N zh>#F#tgXJ%{hI9!N&bi>cpSnbm^mLk1HZnM;mZ+(+93H%|8uYftn@LqErIoQE)!fJ zhkb6JdduldSPg}S_&d6zmAtV-JH!GC+Fd^kq}eQu#HN`}_P*N1#pj`^gi8n~dGPO+ zYtUqK)y#e6$4wc)0F#0Rws9(~Bl>^kZmVx_dSjYsFz+&M{22Am)&oeFetx_slz^2a z0IBXx(GYoR|0Pxm!yKISFpjg`5YuAF=4L1>_qI$`2cuU%O%wNDdcKGPtFqDX(zf<< zFnDaoyogXQ?gfrr-_lx>(x}C5d4MJOqe}hQGZzPL@W5N!akYZfv4Fra-G>}rUJ|4z zK-E*X^AFmRRCr3cWL0XL+!n~%j+d=RyO4SGwb}MXqnk2nkv6)p9FE^0phtZFZT(lZ zmwiyRF0{U?Rd5f5q^S*2LA-K~&#D3Lt%|U7&wpOuDec)NsjOdot(zu^bgKxI)rJly zs1lbqIS4e*8-{5@sQ}0qHi6R^dM(>uS)>LNeZoUxNkAvbP1j_xME5Puh$hM6_)eRnxQh3=*Km)Njbb=8^9G1_ z3!D6xe9-`SII~kq3{x}VT9c#)pH#rlHdwkmemr7Vl;aRqGYq1DpPZx}?IKF)POP0R z)N}aRY^)U^%PJb@dY`;+S%k(xP^M+E))fz6-LMx973|i>m@442*)Ss=e`0ta4Nl)p zt&Z{5h};y2?uI-r_uCq{bJeo0#n(uP@L&{x61|aOAgHknsp5O58^v6hWm#qb#Nos# zvVJ3ZC$#&>E{0E^lvn)zK-rY;RDdL&-(3OkK{T4UCqBF zD@0!%{JK+;gnPuHXcqX-YxI}9qMvjbRCQp6WJLPrAejN|*NwRIUD@=rwxxXJ#17DI6ydUJk;Vxh`-!WfpS7Br0UhJgPjteYzcz6gwCHTOBK6j_=LgPz#25 zM&u_s!_(YTD4`eS1|)=5`!xB6>;LTdiW@-_mk3ej zDWipPY?VrK4WR3rjZo4f^=#f=n;{!Nq2?eJm_ZiB!;@eFsYIk49ssI=FxIx;DQtl% zSd;*_tHoJ^i$)#;1&JWam+Vv{v;Rz5VJa0%?WYY#T?gCX87Z1sK(}y?vF=Ke#wk>h z@`^tY8dh^znixIpI;3-HBEFs;+QI6$b>W}x$|y|2-HKdP#GvE{JlTrUHFf*gEr2l; zDVn%%NMBgb-uUc@dn6TbsFxD>5)M(CISR4D zz6v(p#G69^la|BYd6nU;4&KfC{(Ya+q?2SPwoaFxUeZ(H8xV_1wvS4ZA!hwmy>O$A zEyPt)|DVUZwIYUv1^S)~U*{C#Sd{}F|{m7kVega+ab^#Jm&{fXggq-2H z!y&j!p2V5t#5U;Kb2?8@bPKAeL$U@xKEWnMm2b=!m-BVG!yZdg#?z8;w&fr>E&#Vl zjC}DS>h+X%hvcNWwIcw+qR|9YEjEI51xV{-vsF^JIme~(4h`9p4E`GOu-_I=2b1uUZ-Ac zH|Jv-Z}v*&*6GoO+=4TmmT`+mGVb0R%J(c4Ts@@~f^W9WKzg#TA7xI7EjwitDUbrk zt^K@SO%$Rheu%p1F*6!MS*MRowV%fWND?w3EnGUNQ`pQ;?=T992qKldZBJ=31KHlG zJpKxZ45~PJY`VsJ&0KM#jInMIF+jxjLG(2L)rx|?!b4nmr#xH2MVWOm3cBeb>|`9$ z;SDv@%PAbwV0T-YR+cMH8KpzZchKJ!mOulSB$XkR&;^9>4fwkoa2eESWkiKl2D zrnhQO=-w21r&VP`bitO?@quh<9o3Iq1&38eLz8}+I=ku7ka86G6z0OWWdcqT7@d8nO$Eyl9I;-0+gCJOGC*}BrK5gIQG7fP0()s;+G7cyN zEowOWmDC?@chL{cBXq~qA7Mv3!pD-_g=iqVQpPg=J^i=H($pw>ZXLrjSz<85g1N-z zr6e`i8NgJdB+*_lqyl@ETRa#3n6i?Rzzh_uQSOsJE&^;rD; z{Kp#KB4@A0re9koS;}hv6t&jSuDhes&o2pdA@8m4ZglA;O zvvxATFAU_*Li8#boqvkRiZgzf<$HA+`^!&$3wf~6qxUO##5X_aVZ>Ati1-%NWwjGk zv26=WBBN;}($HNdQRb{MwxPgv<*Ahx7E9BMpfX8vZC+sC(mz>+`*u|H7r@{{N`8jk z`96na(HMCC66v5h87_7Vj5@X<@ND}Vxwh}?()VaQGrSY2jffpnTlzsBIfE~Wh7#jy zgs~VoBl#j>Pkqqg|AbcD_&KRD9kymiemsqe62rHpk}P>_r0G-@>G#6gvhixya)GZ0d69oXj(k&s6C0u-tKmo<Na?|I~*f}waM!TalyjWujzZcD)-r(ahTLfM5n zt>_sX$8BNOJr$lI*4uMf=)}H8PcY5M>#mj87WO~9B3+5|a1y@B)ez?v| z)2f6pedhe~Q9(9>_PDt*eJg~2B$;&4=jY0wHqtDBDS@c6bO}d)E*L;_vFOgDdKhRT z&BboABqv{1SuH6ZkJy278zyuEP0Y#~+2#1yi!6@pGN?;VmEY7(^@j2=GH(O)iR8N1 z2Y5gfq@++OjmUG>Hjx^y9NPE#7QT&bBIQZUZZ=fIZ2&BsyhdXi!A7qE+MArTh~_Iw zEtANdS`H;g$13FF$Y@eaOEIzJhPKE_xSF|j1b#eo_U!TJhqPM@OEHn%$KeYk%FSzV z?c5FH@qJH27%B%ztJKNLTgnc*J?UgmwW}ACyR2XufHe*E$#lWhRCFR>=IvwyPM&J? z01EB<%$m+Ks}*RO|772!c+wG9X0cypyS4)^7&ke&*3m}Y6f8g%2u=BZ(ULX%gD-Lh znIcT#$3IPH4vs8_GCG+wzcye5*TK|Z5W6Kgv)4IlHn^gANXyBb4cx|~T3AJ#-zrQ` z?u?+c^|Uz(y48jWO2zvWO<#O;08!uKybEeF%hoA7f%mtY+qt(S`2U9^HD0E=gOC3Q zO~(isgEgO{yNm@QWQMaP=@|Do!1Q&h!iT%r#;Pa~L51X<2v>YPysrB|vdQ7?PFD>I zW~t8>y(MV)J{Td;zLJMgIS$!JVSI9PK0)a9lMBtxgMPk*wJ#+Y{kw`;8;ziqSJ%hg z2d1+!6hWx@6YIbqw?6f+%hI^k;9n<>Gi6nxE6jRRDTXJNUoeA~qWACq|Du|Ni#kGn zyRC!^4Zqk?+|z3(%LU&|3u>^74)UYuDL}ldHQi0$x0)k?NqGh*0>AUHaiAw7RhG(0 zHk?u3=`?@$*JJj8IHk|bTz~I#!IXi}!<~|9T*`T2z6@i1+F2(~sw}6C)Dh(A56n+0 zm25BVqi;q>>7QN74b$-P2j+TKvZcAS<& z_TQ7DiB1oCZe`bkMtB~^?ng>ieWuyJk~&g?c5H2e;;j)!OvI70wmJKttY5XPHb5*5 zocekRt7!ENCxb;~p#d@f zg;U~|#J-(kdzaB@cD>8OEZAU8#+dY0MCd+qejPpN8Ivme=fvZtld=i`_YfsZQ+w@xAqiw1vf0C_9*rO+^@^JBiLUoh z6?s8XV^hm~2&&<5-azoqT2Ay5>S%(st2E+MZ$51maN?YnfUEir{f>5xM4) z4e_Sc`l`I0MB>_@9`2~_CP@7G(lcEaiW45wu4p^!%}Eln_7)ZXY(SNrBq@hq@bx(# zC|F2p3s5J?5a0Hg#&)oJdQrH#X3jvxMr9am4=QmVQ))R`?aB91qMVmviVJNkyvixh zeF~SR{`M<|F(#ajFm2qpla0U6y&*KMpke5p)-EsyAYjDLrBqoMVuKxUJL$Y# z5a|uPz3<%e3oyD^-Qfm~!x&ZNUx|2!(!y<6ON_X&MoOJ$n#c;pPnl^vopP&`U9t(B z?6Wez@RxuaL>SZjP~yhy%}(~5f;@HzCpFiEoy>oVPJWOtYpePQI+(!cX3+F+*JEap z)=wKHKEzFSacBN=Y8CC27z@QNiSoXrV;p^(s4i+ROnYd{@0QQ8cHpF4!v_LG z$j6|myil~T2|zCSNJfwx?X+iOv?kNz`TN;wnmh*qS{bUf);UnGAs9=On;^s$%ght0 zT;OyIQe>P`@hsX%PuO`jLQ0hD7(i!8JW$tj5+6n%`qG`1A)ZF?V)bVp_$ zmA`nA%K|EiG$=;(maiMGng_H&^S;^WXQ@BP_1ZzAg;+ep@4oT{AqL zUJiNexR*&}ToAmIc#KG8AfT8FBwhhIf^)awgZE^^)6}HVN2g(XzZWqIvACBe%+l)L ztM1uJo@|14E-4`UHgP_$S@_srf!4c1;C%XV`o^VOGKLX(sSTp}vMM`~_fAOpTGEy9 zVFcl+qlL7IAEVYKm!_4SE1p<2QT9(135F%sxQD3k9GQB|NBCPIuF7NcpfSvv6APH; zgZWTV23`@XSXMm+e~4yke$o-~=Q&hM+nP=(=>(j8AtE0x$4dX+H{|>GI`X1c+y^z= zc%|8-7SOUm84pd8vK4p@hHxCjzIlG)7x$W>$Ov>o{`4bFz}y_DWik5TeAa8*4)8SFc_+~nEpn1O8y%>-R&0CU&pty*4+l7Dvp`tM({tg^t-?qg)L z`0&F1gU!r}nK*NBs7d325CuQGD~a|-q&BpARr2x0yYyY8 znKd(w5L2Xptbl(uGwZb8nTo{W;<;A%-;?*e^?JE!_%*eicm|8V$DU)Q4|pOJNWG>y zj{9BZNZ@nV#}G$d&HjHDc5idPm;I%|vX;l-H-&rtE7_pJeTNztgHq`X9fihvxDeJc zox0>=e~k8nIo^=HNSH7Rz!j-upCj1iz^~WjvEU3Zl_bt_yN z^WZ}^W$s#@GgC7iG2z3BiQ-}0N7Prph%e<`i^0jTky*ZT%Fiv<@@URImI?1j0S`tS zzR~zW!y9qd23PvyFzA(3o8;xbT81#a^j)7blJc)zDUfk zzQMDeM&qCyUS76f9^<}jerc1y!1$!X^Ul)u`l952sjZ)r!8#84?W!q|b5XK7-cB~H zMvV*z%6GlRxUgD2?T1ij@pgO*s!l?M+4+ge!Y(+1MPHNb z>6<=ZUNH7?oIP~aGc4S&B1IUCM?~k7M@~vQa8ZzuYoc>HCyP49@45@8Ud)mlmXnf~ z;*0YPAI+5jDjC8vaiV0?;{Fc=VdgDL&ZHTX?RR8wUitS<%MkJRHC#1WW7|8;P(del zG3Wl6CNHu2J2IANj*kSFG%1pY5kIOeE*Q$A8v~%CbK+VTa=k;>!$DUxe;pTi^2RJe zQdmWX^aSd!pbYHBacpBU$rd&>ROBSfjGy(q?cg-F8<8z3J!m|ISJ3Xkhgts(J;6zp zIZg@gZ{Dd2%66tG6ugm(3nh)X`{<6ant!ad$`08CSUF5BLRFChfetf%zzYK?6oWGI=K*@b!#m|-p8DCeFgbO^^tUJ0RTrJ#4eu+@ zk&xNO4J?uXmeK*trsY)l{L0M?oiB9#*cAV1U=T#$jD_+?-Hnn!;-|MbZGRZg{BB6cH;uhEqq zEiG(vZX_i94*p(x>BZXZ%vj^smq*|1ed`W>j*(!|GyAf%8CO)9(y_=&BA|Bfn^D-m zak1G&U}z&E|Hli}Yc#}eOIa3*B7vz+J0?R8clpbv9wnpX0BPX* z8)D3G0Ui-kiuBORdMbc$;f}BLMW4)p4g=C9ZGd!g}GK@oUq~kcbusSPVEu&4~bc) z?q^O#5ZP}~u@MV@071ydT9%2TKWzPa9@&9PeF1NuZ@cAT2!=jOnXB#h{$SLRzaF#q zX+e8Be$PhiEqj=-?#Yhe^fGPp;)t9&9Swv1>UKDERGZ@SIY`^c$o5|}y}xO{1v+lP z%Dg`xnlf5~vfw(jdu~(9aFe=VHsk<#<-fzhZGRz%4;>+DNd3bARwI0Wg-6?vL2^lo zNZM+BsKnsZCRmes-nLxN!d6J)^GM0(7gvcPdOU`+%l#3H>%y*m6JloUHG%K~?^NNV zJF@XAn$NrNu*N;GswZbAtV-?7Y)qtt^Cc(Ez4He6F5h=y4L@6qbV}RD?_zNbX3bRq zLZpA^TCh{#l6`vF?D5tzkfLhknv}eQZSVeh#zv6So^5yeb|`Nio$Y%VFS&S(nGrY6 z*(m5I71eENnR{t1?c0hya>{M-1&{I(En7+2)(kdpe+x2qsBj&yh`3K0Btv>9M{XV9ATsS8;86nOPAc4Xoc8QEZWzKH~mC}K6#xU z;vCo|MeVp5Sk~1H4eyTS$7zCotz_I$sz>pgi)T1^w~}xFTiww0fzY$oAYd)O_5mdU zX!q+2U*;4GFlcIiPIdi|i+>H6^b`n6F9H-*xh!mqtOPi6YmCmT2)zyP(>2i6Kk@H> zGg|T{x65+ul>tV!gxFo_-syU(7olq@jm7;J@20dX%9|7zj>~oRd>|)}oqzO5G~o+b zqYdkOy*3%7-j5M#p05SJ(j<(C9zsjB*N8$=807fl=&*bc2PgHeq1Fu+Y~D@bxcK%(amK{ zgd)-^-{Z51^WFhEs6cCuOI-X`O9%2Pk5p8$*e-X+02t`cU0QefI-!%LaDXy;e_pQA5a%fAub;mM>-OOa#FzWu20482TrB zFuh@x`x#d}I&CUb0j&C}vX!^}i}ZKhb+%OF6Z{09EbMDa>|BWPXUc*2u-^^ri}Ci$ z6d(g7b7oPjbHNSNNTB^fD0e2Dr3RzK^X{cfs^2!SIq;wkGHv=zeDbqv{Te(aypUqH z_WH5d3{>f}M4}C>4;LHm_CM<_%}kzuxL^-AVx}MY;MRp95Q>?oHt!(R(i@o0@~v_g z63#6)wb?(G;=6yX74LgqZz7s$qQ^6v_M$W>RhRRzk7T#5iF{Ss_);)*(Nph+9Z8ZL ztyV1kskDiF_mI`$qri!7KT{2t*vL+!kWK+$NA-Wl^T(xb2h3e@iJ@v#ZlIWH_h+E^ za~tT4H#l%AH%QBSOmFtzOi;Xs-Ab{5_T8e1*$=&kevX#L7*@Musj$VqkmUQm`;jamU%MCmn*+ z)#xR91{}b~`~=~Ay9ir090Y=f%YEI84@H2HU&3^h9ulvh{I*{@KzjE5A^3+X1uMS? zZE~@o#0Hhxg4jaht_y)DZ@(@HEw&0+45^s9e_ObKg%gVyHOU_3Be*BRc~lBKFU>4; zK@Nom7Cz3j#$VLWf7KM>{%jUt?MWYJtH`woE(NLr5PwLRNhJ{g@YtHmUKL5cE^D2` zbJ`ApMx7P3t6mHs;r)K^uKk;c&@1wy6h05}1D)^_p-N_2-#b9lcz&un4>@}W*g|U# z_>DRL`Xd+~0*xn+0;DB^sH~#Y9lEJrO<`H` zCNKNnpg`(9fq4${51C5w$B$sHX+e~K=XnwEr8F|NN^Pi+&16-W;f5S{a?)WX^*yL6 zp7LytLxT)Pfli|u)%EsMIJC~f8R^9aeceX|a3f_ZRQ*>Kt{RuTB3I}Bka6c!%ImDr z(_uUTq$7YXu(K;vj$~Cnm!9>=p! z&5H^tKuDkPLQWiOKmvGJzp6LAK-ZTApu_wiL2{BUK>74LN}Oa_gtegcq(d#0c$!wE zNEolkCFTT=McX7Et)>snl1{%iiLUMqRjD4Bhja=DTf7!tP_2guC?%ZbWTk|ExXK~2 zsz<-xhIbmsr|S9)DoL(eO&>|_jwuGe75VvCvOb zZzHL0tE(E3G2WaY41x{ zlwFua#Ygz0pdH(DJZ7{!s|QUq$QegW9I;%oNtwD%e44u!b4&0rm(UM4Q@1>+1^f;k z08>^$tAMb~KKNMXH;VhJ5B=Za-);;ctZ_K1j*nU1&LnL2Juaj;4NN-Xhb!{ya^J!Q zRUzaiV-%9XWq&B%x;s>Me^{s{BJ#9wkvvHc`>ulT*-MigNssQK2J;(bPzKZ<=U~rO zvzj+hEE0O9u92jOc~vq$j^3P>{%mQ~0ra2iE7OQ3 zZA+bfo%jqI%ys!<%>SQ2sh9)m-P(Q`fer_))Sg}q>Cr>U{lBsBSN{R%Ko`IH!Ow{Q zui70&{B^g)AVhdqYj%jJUZ>Hbvs(-P|Zb97o%pg>UKn5 zcUMb2GMt&e)nu&ri5j1dBJQf&(X#rW7!EcMHr=`%MK?bWyorU8D{M9pA5F2nyFv~# zbvv?RQH3~(Pf(s(bvx2TJ)(E7B$h-KekvZRz-^eeE1_m%W?NztYQGk0HmF5>wno-T zp=JXeo)b7b8lwcx+ZEq2|Jr4{i;GiYI@m zxgf5pIdsKePpG-@H4MaJ0OW5KetMuiy=R1nMVg8ci)VA_PA@`Dh2h>i4#2v@LQTa8 zJAXSe_?SP{RE&_1F7t~<%~#Eibh_1GJx$T#Sv5OCi@OXOTxYZ!g_;ai)}1seljVG2 zlR=gy&b*AT^My?Y9VknDEDNQu_>)>9;-TTf!-tALQ4SR`viV#5Yj(t$abP_}Su2lc z@#n>xm5bmVQAeRBL+^K^u&S5hZWVv(o*Ol%mYob1ei}ivbiO$AJq7u}#h)HzmX9VN z6eL%@jvQc|EOlB2eb`m6BUxte7HT$*m37H! zi&w*{+0nXUnE7spW^A(u6@co7SmiHZ-ZoydBL_qf&W3W|c^L{o9by!As1X?FTQxgc zSGw!(7R9YA%WeTEs^X!)rr4Tiw*V9k0-fYj$a94SpuAdQ&T41yJQaTuj?Hw|g}R#$ zH5q#ZYY+^<38DM{P^@4n^d`_$sEVRm?u<+1w(yg4f_}(*Fn2l-YAW_C1RDZEFmRoY za7l>W7=D1dg_?=|$jRH+`@0001FVRT_HZ8I)ob9O|XS&}Qcl0*Nsma;O=!~Qo`IEW;w z+xpq-^eZXo!2$FEDF2p!%D-)`{j2Z4u2sh<``oqqS-+OQw|36%bFSIXufIRfGkU-4 z?poUDzmdO>x$i!;*U`pr=FerfRd;E(to2*(&tvJUYhQD=eb;a2@4d9LPARqDxqs*V zz2CZy{yfhf`*-u_+3Ozn)U!OM5Ppi+pFq7N3Htd@v9kZ>wE1oTif-v zU(IOiz4er-!ScH`qpho~D}PP-=k#CAcx!8|YDh!oHGefDE~oD?dpS+d_Ny6j8FIlH zb(Sj+{%VF?o`b58Ha#rIa>*?Tvb#D{q`J&uo3@ z4YwHdJo?{ti@el&{#?hrr}VvR`?WXbx#hgAZ|ZC8^J_DI*FT(P=`*)({q7s`T=#bS z=j^M$@BDq0+jtja=%uxjzqiI4(7bDU2`vNGl&gA=a_nli|9VEuoa>EAdNd_}JtNkv z(@5uL4$txH8L|AJ_oCU@y1pnQ*0h`WuI{e4^y?XO*RSe#PdiI*@7FVE&AcZO>EouV>6n&K!5vJNl@{O8yT=1P&J~3 z_saZ@3|P;;@7-N*e%;^5c#DR=y?iu>*KcIRW$daMqp2~cz9<7O+e@z^u{}` zes5?g9L->@`jx-;rscG@Uc}MAf8!nJ_B%9t<=5Xh`7680(OdbAo4?8Fo4LXo`^`7j zvG* zZHBEc%AmDtpQ>SuQuu+4xyhyaj5Y}^!{5r7^>VcZ@s6~p^rRVdZLDIwHf_uL;f%TH zPg)s;L1=ERj9L5ZZAG8cPyKdATeXrI_`$o=AIolJ7N*4S?Od)KCTwfI+W zzuoiaqRni`8(PBp`x~$hHEkTD@rtyq?3ur}p%3VNX>ZoozX5B>&091ni&l8;zrAD7 zoYbV8{D=O2^7o>5*2RF{oF@a;q|+bdgss!}cQW9i?O)SZ ze$q;lAp`DfX~k$#Flr4TBi5#Siae+@s22TnhOA?LPwkggC!~CLGi2@TTPMwtO*{3? zm>UPR{NHrmkKfIh>-M26JRzU|ZpK{oQZ5Fzmfy{oH47&gK)ccDGGx$2qZ*)@(d5V9 z&8P)mru;c{Hfj6%-8brX58JY^gZ_)&!#y!*|7!BAAVjIZd-Hc~QLRsH;F{SwsmmL+ zj;1zQpxU4}h8lxkw2sRQ+$e9@fFX`Y?O)6@S$Zrwt+gp@IqTRF;wU2){iu#jxohaL zWqD(7ayM{6!_(d*!-`?BTeb;=;kz<+!5XdeDKs=151g@2;MdUcpkt7)%HV-C+6%@J zei5z-1mnQg{|YKFRy|fwnEbBq(VWwgY@oA@eh4V)oILtZJ(?^TefNRH2F1=VOGe+p z20|u!h>jtH*ZP%B=k#Q2lO?0)z!&0`U$iC2kkQMF6PTp6&rmXW=Imq&>BIoM1&g(+ z7ps50gc~NWK4^^XM!T8zK;bbQ6FAoN%ksT8H?0zWCwNRNRx3*HMlkCh88UnjowjU& zbbU@QETF7jo=TsS!}zM1zst*4Z$=APr)Lc)W0`9o(+oS?^C+-P+sM%;ju4RGs|+Uw zz16KHc9~-`ywNjsy=EOSI)7vcFw^Eahf$o4ISg;?RY#;CvX-zw79KFO z2B%dY*1AAxN9Uykr|C^=A?myqvg8sFpr)CoT}sPuY7613GI(8-Hi+glJqMPIUcWCm z*4ftUmTgoV$)!-Zfr5f~BgpB+3VY>Om8@yJvpc`lIVRi?*>8hjkz)>l9qj3bgl~ve+ z1;%wOb}oMz`{ep0l&gILrv$z+r!@^dH-Im0*U^A2dW1r;GgEj(_}fpLWcQtJS4$N5-;Q{n1^;l$ujhlaHEuVuK; zAdIRf)7b)w(sjMWpeuo91vdw-NcG`5S@iEcS$RJ)v}e#;nX+jX1Fz~sb~5Pf&|aYJ zyE5$`w3ESLS?^z`4WF3Lz#WgEgD~Y`mwf0>7Van7qzeFC{yG`_1aIp{^h=EKWboP_ zaXr8rKb{O;ua8;JF>T;*GkP7t!~dc4nb~qPdfjO7zUG%M1~O#y0{mbgAyRGDGGz2! zPs%RR+V@o%eRo7gFJBkoK}aOS=OW9cS&Mlv{F~uxht~Smbk#1yX?rt#9p##@xLCi< zXEJ_0u0V_K) zJ*X#(aPjr#s%=Jwj9$kLp@YJ^(O7B*Ke?9)tZAau-w{Q(2Ek+JJOqA_UQ3&LpIYa@dncWWLkV=?_bV;^j4 zIss~3L4>OVT}O@#89H0t9$cg}m1M}! zH5av0636(QGBftZ)m(loI#>0;Gh^4js54j|5fIT^oEf|R-M9dHJrSSC&?`ZaIe6=Y zP20@iA#^^A79L^hH+G_P+FJ)#<;pvGKu;DO zKm_)*C@OR1K|OBaok4KV=!CZ4;E9U>1hrPROt92gw0b~PY#I9f2lezWxDH(hy$Odu zq(}5Y;9kcB;ElEYke)1+Z{sN31V`J0dV1}LaJ3!^_sg(i;Q9y_>d^@D1S939V@zYgPp4 zu?6cRdYct2C`(4K<6S=^6t7RR7Y6Dr2iLTK!B!eepq`FqE^tL>F|pegq(>m@axKVbfZH^cd5ZG!a#3r<t^8)pz z$3fVdSd|QK^g2~{a}q*Wn~|It*zCQrHXj~=dfKErlZzx1>nli4Z$p=h&Xrjwz6>>n z3O>|C)tN7^1n99OG+jC~nPnfK$86y`tf@>KN0y9Tp44GbxqA}ZY(aYb%;8O44r3WI zcs=PQE2+y_$B@C3AJpF#Au4`8gCAfl%`aVi{9GA3F>-yKAEN$xV4eVwHq_45M;luY z%9{j#1i2?M;3-3fP6lTZC?JR;LxxT$zkpi@_lq8kCupe~*XH1GpuY#?O#-^QKyWEI zwq)qK=@Ajt?xO8Zh74WvgWDVbzLLHQ&eM|;H{1k@wM+ECJa!-^L?v{oPXy($3+e1_ zZ}8w`!i?+6Wjbhk zKpsI|y*;55k~lKFv1^YI(5iyh#4R=WfIQAJy+j?+m1!)?iG_$EF*9x6dMiPBWTmgR z6k-@d4;GX+oMAiKUvx%l@Bw*)JzO zNn}U|>K%mQWy$Edf$Np%q}T2yLq;zcp~Hkbx^7r9Wbi;}!4+Z>hfiee12g5$gg-|0x^O|1s(>p^#VcXA`Q;7a^PmW*6i171E6NbQ0>@J>^m7#o|K zlcRxmL#u?17U-{&efGkPI!a7d`8~@+r;1M_q&01X#cuBPz^<&n?0SKD1P6yUn9JSB z-`4P}>U3w{4bG$ThTT%vk196@V)% z>B$$I*R)Xd06g(wg9*+f0j||Yh0U#g;tapKMuUdF^kbdpk5==D|Zpk){ZXA8-Eo_n3P|T=4K-c*3*t8^aniFyTdSJ(9NCPv)oPW ztOx5=!ryw*QMj@2nH@{#`l(sCSueqQRZl9+K`B7z#?k}!2n=&dYtm$4P!I>%kdxi8AKuK%q@KrMg zF3RlFWD;a}W7jNTTPxgHH1a^bve^iaup5Ce8BPqkB5Kwjo`4A)tjC3?4YE7B`sp8Wh38#ad-A9%TeYr@a-LKq5mW+LpaFlno^HA?Ig7AzXJkY75qjG_LUmghJ;|wN* z;QA;T0{C=9+^y|K4?uy*2;QUGRm(v~yQTo8bOC&&QLaEa0ZB&veh^ z03TcZ@SUo##AM0%g|~#DIF>d~9K7e48n2oVmpm4{2S(5nXoYh-lHqUk1K>t+la{yu zA0N4~5YM}0Y&coR!+V3IliazEL6Qdf@ZMl2){|AX%fdQ-cuy9sIF4^EC_u`1fRB53 z;o_^SFDJGv<5_f%I@E}13F>Sc5Ah8$Ux$z}s6)VRJj91PbhJ`$GW=p5;?qnL+8{}P z0K-_~fJKniS8ahm88UuQi2m{By2nh1qYitJkmz8!~s;yP%gVQ)hMH0@j$1_qmnHftg{sd=*P9t3n-2x>R9nW zr&f?6+(w0_Eb#!qYY?^9%GOI;@j&A~J^9M5U*8!&fP-tX%NS(H@T+UJ2Jzs|``;OU zZ9XY$WsdM=89uLfQn^M95le=zwW@t$8e8h`8GIpzv?=N)W+lrT{kfc9+T_U63&D(s z`DD?5FC^gfv`wRbpbrOg?qAAFIa?p*)6^qZx5z)R$vwn3NQ;p^|8^8T*n@n7s6=%H zYY-BYcj!Myb)s2maToACx`>c<5DC}c@EXK8UN&HCoU)O!CX3V0O)4wOOwSuw-|B$IW#x)SbUi3cX-6>h)}FM-|=VTtZ9 ziwESY=>jIbH$2edfkFMd+(slyC}XyGpl`PaOyZ6DvK9w)LXWyu3FT?Z&X)0aN}%2e7Gp0($OXu|67JaWy$f86H>h0s7FK+AmiPZm8Gy)6{l`vG<=g-8t%bBCalmtKR_Yz+gMd^KmrJ!hg*zDH0mBlC zL&@**W$}Pe=DtooX}`x34>-+0Au8!74Rpi>+;6%0Xs{%U=7t24PY%;`89>z(8^&oZZ?BZuif`1E33@>;sIU4y6#*ow~C_!1OZ!x@6)dP-kU~i2*(54H0|u$B>9m8EW+bqJ1_yO4 zxG`s=@2OW-u$ezp8WXbRuV$+sNhlya-3KXRBrhb!3 zm|ljAUMIk%;)&w)#gk?9K$oJsI5G3d&%ELD0j`M4*=TtzSkOIVL|`|YB)@ZGp-+Sr zbG$cjZ!ablj~oX$Db%Tv9Dd@AA7IV0X%u$SKbY}PQth4P zujA&o0tGu|z7#%DI3={P0tE@0UW$;3IO)5B1i?VZClPImd|8IC8L+94bkl+7mbshrJ$J^9O!m#>QQI?`;`?7olrWawF_wLmSxAnhAH$y-4L%cK(Nu@M<^Kd zI{2L%i=+32+=#%(qpLlY20(!*WVW40m;!E_B26DEiKtXB}w&uSUb@xZ&0lIlO3Mgvi zL< zprp+vP_UYdfbD~PG!K1a0Um1um~0fZGd~Yd4KDv{mmFODSD;{}^0ZJpOHLKb^FU>1 zA`?uhnqFFvAREeZQWY`=c{50mT0_bPs7)9wf*`@_^&FJM$r29`-{VT=+qZ@jELfQZ)g%B~2r|S2{R^!C6^Mzi zU_n<6xDn`32O>*c(0#AiTvVv#UcrKHf}5^rC)6ZMT;O0zq162QnRoyUJgI%76ONyW z2eiq6Ubx0E%wR!~2$dN3IMg6Z98dujbfjpr(M4qk3)bSw961!I-erjg2o+yKZ3Ksw zEb##0sMDHxJ%$X=0XiXwR3Gzb@LeMY;IY;*aMiyuV{yNLCJqH)GQ9B@`Y5QG^SqW} z$M7XY1go^$^IUKI)Qer*PYLVf%Wf>oECzZ8LEhgE6okTsvSmEO%iMv2#l1r`X%Xq> zGc6X^lv7krVTCLizZ-Bl^>yOnvS7hN`$_RqKXl{=3sP@Dc10Ne((Sl|1&d=Py4SKt zYj@bef`!QRCP^nVEb!4{560fr4;% zxL%I3EM+C=eyz2+0|pB*W-8bw**O{h z#?OWKQtU&SWtaaS7L;N6s?(_B(QiB`NL6c@&J6I{AaEGZLWMS1v6;AFKPU(|)%Ao@ z7=k7|*NUZ4y-(O$xDLyHmVLijNXcmDkxwi%nsBO-F_huPKmvdwTKw?a4+wIiYpQZ+ zGj-(Sk>SG~(?G+Wk`!4oemd1??WDnS!AB7Xz`Mg;Na&faf<58@Hr`4D7M0pq;(TF#KjTB)2lk5*KJMb#V#vjPcC)fNq-Z zniGOtvcv~EnV8I^`wwey#s}@oSnz<GcKS=o?1}$2^|7^#s&28 zZ8$Y3ZIB@z_`HnQ4)L-*;{i=?t{c1fzseF16vD}aE>34h_KXKu8r0U1Rf1pSp+Q`9gjaB+X9Ec1A;{Oxs$tE&HKzlf}NHSR;lRMDH+ae(7k#LKDoks%HM2?6XW-RD>0fKGgmGNMkvQkFQNv%yYU z0t)R*`@{h{&$#r^szJr`KJftI!b)RwYee4mi3hmg>o+tzH?QWz0kmRQT9}1}@bifS zNJ~-&RH)n6XigkZIoHVxuzAUl@pIRp!N~kpGGzP(HmyP#`lRM`pE!UcjbTtzWJ?^N zU50WkVJX*Y?uP^6h460U>gxv6O^t;bD6o_Je_3-r>^# z4Z`0c%Z-KhFgA69pyzi=#=i(J=#XU|!snCW!@Wk00A+-Qk7WE4#yahT0#4c&Wr+h^ zUpkIksfP@408#Pf&%x<&O2$9FLZ0s)#jj-iJ~4T9I*FhHDj9#LHtRq(L&e%D8GrY6 z7}_y7a%9Q)JGn+K0bngXK+X6YUAB(zP#kn>#_yUvs2B?DW~XNO6tciy#A}{>SB4L# z+NCOX5k!$C#y>u%4AhK8IT0-+3^QRDk|2FOYK9tUV6~cIPt*m6-iN@A<*N&IMWE zMCYHA^|JI>2H9N7N`TR_j97}<0!V1H1)K*1JKNI4tNa?yc{s3hspHNKr_aK$V<@a} zh`&g}$?{xa0vzXuT-GQ{T(Dd_K#ji;mj>G70=8wJriIc2S>l38c^o~K@C53i0|l46 z1<0FiFxm+eTtWxjlOX=1+T{cay5W|z8J$x6N*v($WuIJX#H*Rfs0Kp>HY%_ zIl+Pi3W^CQAia~}xd76}LRk}ca$9aJlj)(Yo+5lbK%gK5T%ZsL9|-WAKtU>z8lh2F z4$IJDAYQykG!|m%CrFUgpVLBg-wFwxKtWJCIAqcL&2kSEB+EXa@@SAY%CKS}30%y9 zhG&8VCnd(9URur;PZkHj%|)&ek~{r9!`CD}^tyFOfb?C#fzxaN#J~Y{GGz3A`E;Ef z>f~g}@TYU*)3ijKDZzo0ONbfRbQbeq0fKY5>5ZG+ru*as2+rX`Jo1-hGi1s5xuIPW zbX?kbf;fPnELe1aljP=LK}z|LDZ-p!mnAM}KE7!Is@0h30g6)80sNC0`a7m?6yNV|w9wJHdh^ zhY1?f>*c*OV30<#-oD5nTwy0@kigb-LFS?EOqLsq90{ig2aX;sV307{Ek^xx7s&EF zK;2)Z;Fu^Vn@Yf-aYLQ%jpy_T7^IGD(l{be#wi^vIE1nZs1qwO0pE(dK~r zg9Hg}Qz=QB>%ia}DCp#j@ZYgszZm` z4I2ETx2sf&RsFr@@9cor{nmxw2paS~={k%`Wr-|r{L~_vNbzEZA9BQELMONH>2Q^0 z#^RzQqKQx*$nwU|!Q9Q=MEeMz$@s|tfeAswizmqV7Y*>52ii9@ZEnyYrycPVvq$N6 zdxHi!2*`87mpd@T1Jf;)be{W_1q=3JYN0wgL1DYh_^D`eI^~+*I!Le&S1J+7p`}Qc z4BsG(;3io=em=w3d>kBjv_kqb89oKcEL>{bs$N>4pxb)j)Z$X+QD*!s=ehVu96&pn3p!|**Y5`jYGJ@BN|`^b z0J6jbg<9C++#Gkv8!XrhHxV{dwmcc00~+hA8oaq-`UVO%Be(CA)P^U^jitdt03eXR ze>X_59fzy^D%iD z1k@TGSbqZp$-Fog2$PL==NlO4c0avqYJ6c4y1{{PS@{%OouEd7Wy2g>0e2g z+@L@xDXCQ_UQWUM4GOFrR#Y%ka>x7&3gldXKO6kQLk9%X4FqJQm50`&8x*KFLi02L zT3ee8BL=>UHVRVreA$cz&J9inM~7v39)JY}lm~;p&(nZFv&1z}$fWE~mUv)Msm)!$ zq)M{H1JeyO2gXk>TsJ5X839_j2#$7J;sKqF2YzSR5I9hS0xNwP4Z3K-8#s>x1M6^a zuRdxjM_J;7!OUglU=@+rr3z83l1R<9{ zkZ|Z;&h{82Sly4^s4Q$yAIAY^^=ajg8huvcwahac4a~ z2IUe^SSWBRU&~?hc!LTH;X!BXwlOA$>NDvbanGy>2vi&xT*w&?lQkEV4vBSeAu%oY z?{>JhcvAs}@FM}s-H!bIR9ry`jxdy)Tt6P~xB^v#OPCIl3|tX(sDDbtWqS<_o8k+i zO=XyLn1={HEY;wAnAGO@m*NUqEJ=V-3y6x<&flpZfC! z{1DJF5zr?Bis{5ec{d@J{V~jz2NT<0`~GAJd#XQ}Nal-rT+`AXKi~t3)ErZ5F{mus z{;7u)W#Xnjze1kIjCoj*fc^lL5s>emOb;wJvrB74^uy|MglWb^a+0?BOHC`L^-T1y z4l0xh7MpcF&M?gehcGpze)u?J@eDMz?^V8W#Tl@!QcJAP#CV4 zKQ!ZtMk>$kP$bnt~YzPJv1p3rMBGk zQTO2qADo2Fm*~JIP)HjWSNE8{3@1G~@B_-!VhWt>awQ;~yE?e-FS@8x1wC-3Xj_1dSH%#J9>onISUjL3a zNJ>(HPd{?ADc<;sJG;4EdB7cKcmt={h7w~e@dc40juHLBx3TW{g6M^5>^C+2nBoh{ zU}%;EG1J@)Vfji00HKIy-P$Vu~k(vI(A>*AnlYc!Jy-yD(+A-p)=uK@T4pFOqxyP#i(n z6#pUtfFW*hY49dt#*T(5elQ{Mg6Y*Ht0=Lz|7X--W)ux%>a|K~V%2Oy_EB5S-D=1H*+zJAm@2BF6^))05S{}NI zYE(rU+2(5MC1Rj9#TSr6(uOuS8YYugD@dmJ$paFgK#g7qhkXnbIhy=R@J4(D^r3DxD4=OWjR7RS! z_=~tU-Odd$k$8iM2DL(fCR^f+FWS*4Kd@>?jV}#j;tDHB z5%lAo*%Vi}1>C8UZl#kr!l5oiLKZ0tOmPJ4(^Rg)0|R`B-Uyp0dn^q;{j)qju+n@7 zG7~(~DJ2%_lPD>pRh}310B3`Q8!lSH^;T7Rc#|lR_GPI3OfOrbIMT>X6UXLC)Rs*n zroz^}4a@xu&ke*0-O~<53jijvBWC%c)k&|Ob%$xk#Fla)ZKWR_({sdHCYBji9`hmy z-qez(-jObCx}?yGi7O~$rIB0SIMp&TaRv33)okpBhtVHF66Tom`kDm~Q+zSG<~Oh3 z>JP;grs>h4jMCutL&O)bIkHb^%drSaR7hxQaDBYXwLB>TH_hoptzqRr#}ZetE7D?b z5eY2u1dYr(_bmPfxQP^r1&C0_gTiZA(k5V&dg-q$jXpvw@kH}sRgqk2(;tc_s+*A!L6E1%6Hci)y zsUD~~zrd3Npb(YRNRvSPP5`_>v2y%%GnPV>0GvV$8q@QHxyPY&8!mmXQ756jfRN1n zN|UjiSPFReLd?)S`+_uKj%GEv7X(XyCVb0e?GQ8bdk@Ye@IhEgH}UHGOjJtX_U)8D zlaH@FLty447Y*_&DA!?$8>V~ZHxxJqh0!T#pClno60m3b`{D$)pj0q+@?oAHz)o7T&e*&_x z{+)qlL`=*wLK1=k{PwAKotQel<*o>9!*pXZ<2fwE2vpVxnb7e?n1wtPC3BeKie+S= zyOygQFvS&YSDol6jaAH;0L?MKvSmtIzcVLDa}YCjOoF`!OI!hY+o5~H$x2M|1*AE{ zw=I~|A% z0eMg?>Q?!}6kpIaSYUpGH+N!+FW{=8hl4_YtEI&i&0$~idGN|(iZ3*IuFolV31W&b zh$NTqdhD-@EBHsI@S`E#pNT6Vc%djwA+==3=ozZiz(<}-mTk8bitVjXc6(EI{MlX z!I`c!ER@T^smMbFXm)f4uXD-TEqIC`O<29OYf~-&n=7VxVmeXh7DP|KAWduf>7qtT z_qb{lP_;fEfANTW&yys0?K1ZLa6|?oM4b9 znaFN#azv1@#1$32K(0~OY?(D8DCDQeFMNVFY{OAO`Eor31Yr`ce!%!b>yPGLQ{DIh z12s+Y27lXf?_7-(iX-S1S_0|^aA1&TGhaXQvV-djrXJHWMLk@_o|^%hL?MarA-& zJMe>-PO9GAZ8Xi29=bI)E?{O7Xh?G{vo~i7CFI8lhe*pL>T1 z+;mL4&`bdpAdeTg>3hrFbmVi`Vu~xAKcR5*I8j|AmqL0U3b|nc`{rklE6`ggWJ2k2 z#1cMHg}Z0Z8Y8r_s;Vg_(+ z`7(47PHA*x7AoYLDa>kwQ)p?RO%+Wj)+DAC6W3(8%wWW{>3Kq6ixOn=I(PY11#NQm zrCo`h9UKv?=?ElBam;>#r%_MQiDF`xL32v=HXN{7>9PjV!T@L#5U>e_juV``U4Q5~ zqCz4?D~Bb4Y>FpPZS5wahvOSlT(Qh4h|Y=2t7~Lbn$G~r3WqbKnBoewUw}O*%6yLz zS5R(6;TyZs^|Qwr1Lf4}Ou1)m(57YfI1nKJXVM02>PIXc@oB|ki6``8o28|fOWB+IBwrnrB2dx^XXa|ObAFOQz~WsQ`DSlbXUB`9@e`H8*GXzsQSB5c7F1^QC@M?1ab~$7v6rr z_=0SxWtoqKuOq&K5I8i19TkXAW;ig@iqPOE%ZT$+!I>tpbcmjaFqXKYT8t6K+)3wU zjR*@JV%)!Iiy?M|DXt)wE+kC38PYU0LM+6`0Q{yoJKQ58#R9t~Jauh4TgCKXRMC9YvD`+7Vp}tXS~(p%DwTguSKro3xa%f zPjf7Kf0^+GWlTEr=-``{*`D#m^!75{RO2Z);|ueWegMmx#f&d#7DfS_O%)s$iI#f* z_$-$B7yW>729bpd`z4iF{;4>FI$JG{uLl}Se1SL$Y6a|Y_;$t>?N}atyN`?UuDF7t zqffrkHBJ#~L70;!S9*(GH*?WPl7OxJBK>R52ni7O~jhh1?F2aclPLJYT9Z^<*zKNMFW zIYg0zT=boOC$1P4xLIh_8*ZFYf%S%e;|J;|k*uH{{n`{iSg78htN0;q96|n>%oa2@1_(EvFy`i8?B(<0#t{|a z^==+k7j8t&g$u!ePm+Se?O%!`h^f#B%00|$>c$f;Y7$taGl>^?;|T;QI!f;}>|==| zxZA8RT>#pSqDys^#kJNCbh(&nObc#86UM`DU8Ct@ny*eE{`j9@>M_xwODfryAWY8_ z9A2&{M?I`!nX!z@w~_yFnmf`iG#nP|dQk;E{Or#Y+eByd_E1)4(}_t}O&WVhYY!|p zmP%*uL{ATf*BXHrrz(aCe%S?WiZ2%3*Qm;A!gGm@$_p~y6e(Kg8-m3eofle-cqs%E zNJ2*Eg-k@TV3RJFzT`ych3lRx4~9R7YinFVexR6fh)xPjafQWrAvAUW6Q;NV%-F1I zq0jnL@dX-Vg9t8_^O#zE;dp1Yz%KED2)=MvCQ8Naw|ZlYu3%&HtF<3gT8! zC7{RzfQjr&CFlm}fa`AUz!qoN^Tf{Gy@@H#__QS<%rRd}jrz+chmCYDt#baU_<~3q zd0DdO0FLOtRFcwAuWU9AFN7Xn6qv~rU2}ZgPZN%DadNS3=VIGvtj4x&U)}?RnOl6BPmw|Z)* z;2p=}V^8|!R|ftMFE{v`6e{KNz8k;B%9=lQ@yL}}RzP#e_&W1w5YeKdEB!%BZaoP4Fk|;ahyml#JK&j_vUuz!RU#beJ<(X$~e@l8M2yk(7 zq0JdOpV7IKqSk*PO!2&mB>oERqRfz#N*~&zl_{T7_|VKwobpavyZC z+$vrctaxXWOAw~AZ4Ad_ivSDKF-h^nZGYJG5~CB8c_Mw^>4f4L3!$oSk+yz7jNOsf zfG_*oym-~fbzAPqFq6H1yN>}3lARs1E8+bHiRq}@f5~k=RYwr zNv+zJvG3C@$zpU{VL_&4$$^V_%8k<+Xx(2nT+Jh7#tVrXxY|8QD8BvP#@E%88Ta~+ z0|;@qpibE^n!hO}{y{xYSz)^zFi}(Tv_8|_Jw&2S*Z%)*6SuKR`Oy7W%V@V7d+O5J zEP<#d$G%$z+)U8`ai?+?x@;T}(BgRKrYG2o0&Fa8&z2!iV+owB zRbt_=K3ST!6RT27OBK#NI@`jPzUq}pODU#Xxu6}LZZdJSlpx8`pGp7SH1Rd3>XI>G zmSN--k+Y?WD8v_Taiv?Rp4ED$_lyZye!dvUx%lxw^Cb~l6-c6s)>dleol}MrD zh09N=$(Lmo$2?<0!6W@2yDP&t9xWlvfyZ6lpGe`{CEFGMLcR7c1^97(`@NYW!IaYL zQ7cOQj5QReuV>gU8^vAtI=h(oDHvMS+dh8 zG)Cn%Qou>=bIJe`nBq%Zeml!|0@LSeZVc1(*^w11fH9VYt8cUT=Al%6gIf_MDUyJe ziTr47R;JVzuCw~Fi*`Z zm=K6uK*O6!hLVrox`ZUjT|c(Se+GlSx{;g|!ZgJZvtIM?xl?(vsQxCR;t!2+`&c%L z&r`(TtDkv2KU-hZ_giOTmbXJmwk>+lk0n20a?)k?dxHQ z-gA{)->==_q3=<(SMjtB;t%=_Win7YZA70${*Ei|smKfsTXT$w+$lEQ{rM$%9|Q2oDUmWrHJY1{th}TINY8@%i05fyWG+dYF+c{qi$QcF z2OcJ78pDpZVl*b}S@8q6CjE44tDd3c<&%DQrjzD>O}Qi&a@TmwsX!{HLZiad_>GLo zE^IDZ?Om~q-*`RCuk31Jvjaavh3MFHP?L~%)JE`UJ{)a*ZD;ybpz}D2?q!9U#LQ;s zRJ>z?jT-hyW@g(;bP3;hu5{Cax6W#p8F1Z0(}xO#OEIo-jeC0C6DoU@v?cygnEf$shp904lO3a>{) zHu!JLR3+CKk;vrphdBKk?+wvRl8%x1c@9~&rtodtrhz85!8uU|aV)6w=wuRoIY{;}`mi*wll$eQ z!W7I55Kz%6Kv4_^N%CQ)70)Ur*WyCkr#k~^`hl+j`_Iz;zAeQ*BIU@iwE~zm-*&Vw_|0ZVi+#! z391B!dq`(k4C3W3^M>0=^qu0x{=-g-X|KaL`_yqirnYXP===I*C=~9n+J|vB0g_3T zotC_Vd|b0oBdERGuU>lqc|wu#3D0H4beHOXvhm_6FxdDZCPrpq{080C6;BYfDu%P3 z+fua9c6)|2EE7!xFmbvTyRDw7l8o?Z;d~wYf`*gKJ2qr?RdDtTYvi!?z=Je3{tb;4 znc+>lD0&%kR{Y+uOPbo3d_CEo5qFebR(dZuo*2p*N#`97%Lm-tf6uNitWxU8f6wt& zmTqUylk*ZW({cqkT6p5SP<0qhQRchv_;gOi z4B~~>j7Y~kMgI4*$C1N;AMP!#Hf_=>!-9xYpSq7ILY2i0L8S3K5LGp}?nULs5@h*b>hUo1gO^dWhUdYT*qZAW)cW3cOkw5 z+h!A}v5&%(WVf4Z@*Ys`rY?_*xy?o>T*TO5t9k|%9{;(#hpZ_*7BFuNLB7CeY+}#3 z-9qel{9LSXWyJJwVTEJ+>i?XeK`(bCKf$8tTyyFl?3!a}Vlu*EDKv-lH0V8IxVqWI z!J3R1CQJ~A=vN@as4_yK#u9Q3OVXNBYIb zt1#24l3ZQxqqs`5A5%9}QNiKScz+-riEAOOZn^JT-9zMsiVG7USUfb8+!>BNgqADw zJ&m2j?H5%@g%U!W;)Q4Gq(lx1`mXFdFeI5-{gN89zamtQ;1*5*M!K@!viBKF4ihRD zPb(Zqu1OL`1@lcN3hKLx8(fr!R>nNrp-nuwtwL3e-(S`tEWZBW>7QRaq|uMYj)2U+ z=FetW+4QON_K)zO-AI{-Zo|fo`Zv(_LAa*q#WK7x<1K+F{CA2{9JJWf3EIk+l9x7tP*bMj>f@Pl_Y!`&vd@(O=0XZ1 ze)VAvm{@=G0AdHxR%no9UGa(N5Ua}SGP?X)%*34l2cPT^h64 zBTv$;k z{}c99`|0}flG8V>0aed3ZW7mJcp&e}HX1YQJi*4`<|uN>kC2We293HyYCDreNO=w!P5}iPnJbT(0xUFw+KdEBwX@YLWT*R_iZZ$`wm{WPj+0R< zJnw8|$Q4R&!W7Q4W_iMx)H~}yk$9b+94--e;34>KKSGA$#5qWX{+mI9~uy3z^iwK?)ZQdMF z;^6y;QH;onI0w9CPq}Estwdx+I{O1tRZrjFuCM}t@dxNNEelE5y%fHta`{ATjLER| z4;{hm4Fm#KG9*!k^H8p$M1uL)xWZSph#mDv9DzdfDfAQ$>|)1Ftb<)--=X+je-(K9 zZd0q2+xIIJtbabhA*aKVPJf#f+v3Bhmo!tlIoM;IN4JTQ*F390lZDPG z9jC9Q^SZ7x&k~?0Mx54huXBD^sS1QLz}f=qu`@YG-(T6r7$KD7+a2+T3IVW)(HgWa z-uT{4yrD_k^R&MWNx zbd$Fek zu#&ANx)Q@d6vGr`=;Jw>L0Hcc-=}iwFa5DXOg_YGs&TcCbqk67$ell&Pgz?@UCE@k zV+s*}7n61nK)g--Ufq_?dHDf+1V_o|xM9#?N<_7ybTGxTI5(ypx+!kuOE}X|7m3{6 z@(6Auzj`1I->5TQNf8X~LghBVz5wD3QBeN93yIc3Nx=C~TWN$po`bnQvVakLOXU?5k;KMt;6^pwd2`cP3ECd5+<;GwI zvef?4`HQ{9V>sjcbx*N}i@{kUkIx$j3U7p}{PMRmW!w1PBrMm6xLQ}P{^2WxXIb)} z`PiO|P*Z0(jzqZH7{xcShmoH8d~v1SB;wg3Ns`EOpLb8x(${_A26!|1CjVSS`)*DQ z%6v&abT+^OO~Jy>`jPYd=a-MhjlQ$A-zf19KMNV4bapBGqv!-C_~84@clugCY} z6r#Vea2%lVj^N@%tJ|U-zt?oayd7CB4j!`dzlmuX00^;yav!%v_XV%TIokOT$A;a9{d zJ^0XIGWjEFzn*tU7+e;CxpS!!4A-tS^J(}eh>Q# zKi`#PZL>xbq9acR1g$?Nd>VyK`nCK^=F7@gMm28e#;2{X&`ag&yLMCzPy`J9|JA;g zp$xAA(g2<%8=H`#Y*;iq_{ZYNIu=6d-_b?h8@tYShB@&=i+uC=%FKBP%M90ZKP`|o zxEB{E;E6Xa*$$};9qtoeIGZLX*HD5Qg9al=-|t)0;sm{Gnkgf2QJJ3mn>0miBG?k~ z4DW==6vA-WJhx5f@bBaBZ3!&x9mRkd2Ft3uVIH}ldh$zCBZ)ewP@nta;jhZjAU&z- zkOpQA8$zgh!x#+yw4S=3HTEoSb!Uhr}kqsmNbxt1Ov{3++$7o)dt}^$>-~|Na7QYkr<%B}# z4KIT;HWd(CYGHU+({s4=xw9W zrSoHS9Wi9bwfWdpQ7(5!N-qQdR{PvlNo&{ek2vEl90l57O3r`g4wGX%Hh(l_QDVy0?jfgDcI5@ z^!89-W=wS9WO)92vW&8k z5nRe4B+-5$a@13b%+Bz9IHfOm{7LI+XoJ!wquxx&=pT@#^qOPrRb7nysUQdH;OKJ? z13sNiJTn97N&l<`?>giME5r<;mA94>P!P5Z#lLZ7YPx;U+&+MppnHf?u@gcJc_M3V zF^hV%*+WJrfAF#;W#+FL#a#>fj{2L@_!FYF3oDZ?dYN*I`v5#&PHMqMLI{KJyIs0} z|H=nzSFi<_+Sp%A5fgqz<@6IDhian`dtsAe;}D}VQ~`V!%hv3K(iqNMu?36M?UD4q zX@^BboLKWEZqVVdEYtX-uR;dc@?4y?P3EQ1Lmg6`WgM5;3_HX6JS^{3dno1Odf!Lw z!yweZZ^>_Ts#%v_pnVh?w6^^`^+Gsz0yhZ2oFB5!SWpvRr z(RsEg#s*U-t-2c9g--8Z_|bhQ7^y#<)VPr%1UwY3NDf%n=1~U^{E<{`Ex$qn=)g<6 z=ZJ)}yczDo6UlR${X7}*kV`uRvr^%7Wn$d4K>HEg6M@0Qh`pIc#=gef+0ekG3m%9T zVE4wnki3>Y(L}Joac-~%*?d-Bf|>h<8Sj(q>z{xT;(`wkj@!~*f~{2q54Sn2Lg&Hj zM_}fS)mh3gwkHUxdlK=(LA=gJL~peNha8 z_>!2DX5583(}P^*CG{@Y){hNcHmFat&^#*aZ=WP#fkJY^o&)PW8(W+b*c)a-0^8ZD zELsw?QKLaPY8S+sAa$zu)}PD;$8jp839rfQ{rH-Raf*<|9 z$PHmP-8^w_^&?y@pAvH{5zws9MSK~D;HCz}jfT=ef*wI^LQ&`Wop3xXnz1j%rUZ{F zs;4(=^Cg_WrGiYQa|xo@Ss51gW|gL&ee4Y!SRAKxoh!Z%#JZm6{t`zD(mzBdi_d;L z7nJk3xYIzQQBalz>KQc{kZ9}Dk9YYvP*Cvy7t4JFnsKbXpF@p1c7m|NZo<68le&#) zxa*WVY$H~&7);v`dZ^YphzL(mg5XLed|`<*xj7<+YXbDZ)i`U73uzLDFzySn^8HAqzTQzMD4x!MC zRg&UxSoXL)G&3&jsGvM`QDvx7gfR6%VHTOaX6~!OyLJO*nGqJdPc`6O@5VT;QgOwH zOBSJ2W6tz-NN_*2ZYrS!GTPQ&7(@0F;aunb!M+P=l7&a{)<%8ocKn(%O;6hYqFdLZI13cw!(RNT6@%f0_xELO?2 zK(0aGmTVFh(=$z8vWUN1TQH}Z@sGacOF~*JcUOEThsPRe5irH!Bv(Hy)_>q0!S%F+ z9u_dY1ox`|+jpnWD3H|3`zKEsu!wLT*6vDS_~>EW@!nydAY@KJ6)VHx%$9*?_d>sl z@2{O+3ayE27COdOUTNguB zFi}5ENEOAWMu=JkUf09qib}Qq53}tk{Ee>fZaInIt)Yz$#C)6c`wY5;tGn^|=B9?W zMsqIU%B-}3_+^F;tPKRHI{dJRqt6#4F!B|`eTTJi+zq}W6M@mDHU`9{6xFNcr3o46$d)P7Wcr?9+-zns%29H#_($ip==UrY1rUbt`Jg0|8v-H4i{4Q487lQzdC zwVNPe!&caBYV~Cx^mlkCDgi?huY7Vghp;?MQEz*%YMeVY$etANnKp6?F@5XJRZ7=fwtXJ5BSYy3&7p*yYK?NAjReZKfZy5$JQ20gmt zs_Jp$JxHIu=?QnbakScL3pxB6Y({Pe=3#h|1B~m8$mbo~@fsB(_^E!u-HSLxfGDp^ zs3YTIeI*jtlSwyLK;s0)#7kxI8u@T-+Cr4rP!M3qXM5U%E=8Rt2zy2F;i4BaAT%8=9D<;5(k zZwrnZ5%3+GXdfAtU&W4+UIWzgc>|qaK=b07$oSx$y@v|WuR%1btRDrsaL|2eo&WIs z4)5|s82-pUZ3Av^qsDHtt)HFsw zalQz`)K`UNhga@{?|@Q8^0ke%tbK7_gW=ztm8p%?`)9MpiIz!pK(3D0hSwXX^Jw{A zc{W}paYOeoA7w*<4rA{ykjEntR_eQ0fJ@T5`e$A#GnJLzu%kr?{R_C}Q6oq@AH@sueCiht*63uxH_wrk zhR$0=o2!;`KI!C4%uc~+7AF5rmu;==xu9YCdo}U!HGJit=RX(;vG)H$RR%+(gOX3< zn}+e%H%upz1poHEm=COn_M<)4|F;wYVw3|x58m-EMevMU=%XM+o6D|8fChxpqN{gB z4V2v?yIkXfp0xyR-KYeP(lhV>`w%CS|uKX)i0hjG1~9>dj{R zY{=#hg=mQ~sss6#!D$mw~tGR$5ho#%D5s5bE+SN~Cr~ z)*(n4pk++QPy|YoM1z9Z)1+%UgDihMUrIJ0yDU!*V}|8n)-cH;SYwE+99a`V!IP*y z*XB!#^(`U=is*Jc#!O@ov^76MfAi@;&LQ<5I_FKJZ?mvGrzcf!-@+H1Chp-@;%X7* zloqBt$nq8RGuC-_Lf=I}=HVcD`iA&wUvlW&DB^+TdLI(N31m>@G?V;D)eeqg5W^T;%(?nqZcXW>B2;;}cbrnda5@%-Yj=G|7O+|sF{maG z>kVVeS3OqgpY3yNO4p%lU@~^4eEhG-9kY_1m!Yw8`VGZK*_rA%GD5pc zUi=w3i%_OS7_my#;%PcPNn{*_n3XqPTEAyeoG##z24g5qES(X>?Q@Z|eMsG+m?lsH z8J=YbD0jggxYm#G6(p2YT<~}BWe^@)=_527;aKQ^sPKnSuqoBMAjSl3=8Kue)>ww! zOX)wYh!g77BzoW=+&Vd!d`B}{B-H=EtI>FJ`3ubh1!iWPi(!l*=^{+8na>2qLUG=W z#4l`^qd+xO`65zF=Oj_FO^W5E64V)$>C5NfJpdeVHK?ZGxm46mrem0`R(uqB{r|mp zAOtCSHmv|{JncUPjVFL47GQ35LJq%s{os50zEFfjs(P4llBu6=2>d~1xbh=HMcr=E z7F?eE5f83ciQIat^CPx}lY9-;(F-Yt*~RUUiBjHye+Wd1f6;VXoYsBwETNG^^+ZQG&yXp4q{@;5RMJ@Un{E;eye9jG{ z$jBX@7ymN}X-a243u{Dl$i$1kIvtU5<61zVuJIs+GyT8@kw*&UMgOhx<62fXgx|pQ z6U@@9|1+SS=HD;zivrgq^yIaJF8IfwA@dN44Ax4T^ZRc!p4qhXM9a`v3JmGBRW~yZ zW&fb{ZFvL>E}sCOt?iBTQ)`6nWcky)tL>X>@R~$6?{NH-2TOyhnh+8WZcMt9r27tg z0`o~lD$akUjv;4V=0i-yA!`2y9@H-N;5tnMH)!NPF6ilgTLv}qskI=2x=!&Yn(u1G zIn;z=*|e(-NOJSH%8I-(>6m7T>dko2%SzNJSrs&6QTXNOa=xWR2w z+p^3TU)yB6!PTXFGkW24iX*3}uaNCKH9szJ{Dr~upzewADb(>?TMs}8;$vzW!c^MhRf{GnE(5pw6m z&Rt01Zi2*RfKe{8Nx{;1mb36D^%&A>R6K|f^9<{?f;0?d;z7dFP^QcyijB8 z5i>RIX;E55g1;9K%xsz#eQ&P%arcZ3%ezd^7Arj9{yKxSV#EWSU!{}x{t2mG{UBt$ z%w9~!YV1-ro%G58hlt7cLf541o7D&Z)9D=;$x5_*b3~boObHuAE0z6xmp77lr5T7Y z%-1H8$VE}{O^i)KE8>IBoq)64$UgSrB!te@qGMZ;jFhfxQVKny+WpNNqn=g7u8zaX zZ4bH8NcMF#EVtY&=a9#$E6xngUXpJFe)8@{mMSclBvn0cR$}85V%GM+#?_ti5&`BS z&BCqF;3FxuLXS!_$Y-(aZB`|%L+Jzzd=BnaeQ&wNaT z7lq~7EES-*#|shoLRo6=dS?4xTP6(EBm*KsHg0>q9HXKLgTT$<1gUv=9)*N)<%L`ohN}UWyY2nS* z`uCTE`Gld!#-t<_&cnoiOJ2f;;!C@rvF|WOuo!@8juhnQ`oKtmN#tM7D3oGDXv5`E zxRjy##*0F*9MIQ!3p|gA{OnL^>!7_zoZmrer4-8ki(}zJlGD3l5gb_H{K}ghswv+H z4h=w53ON?)sHHU~-Gw*>)TPjnOgT4_2UpKzNid831G$<{7As@I5Y)?0U09l3n}5U( zqHanaQ^LvtXLwc=8jkvcI#`v3seUB^C~hXzH5{?^M=ntNW8{uZvIgDsUUEWHOoK)b znztcaQn+d57P#ioU#soj;4D6cbSUY%5Wh7Fy8Je-L*h2#mh`SnzW50#+GmgTy=U5$ zXorsf{bDT2?nN~z?W=SEX z2a+aETowkKi7ZfuvT`d@*V^^$F%8VIx=~~;)Y~)um68swF0d+AUhhUPDqC}!a&O3H zXPjv;e|6KM$L~0YwLf29Qn-L+_wHCn>RRj#`?s?X+n!^r{K30;nr5_zF6R-=BXKXd zoz|EMlmJK@#(B*;Fo4r}Cz1lQuO zpbFb2#p37<%t_x?_#$|6cvzPk|6E(s${IoKBf4mm{S`fwK8JNqEAShOZ-^FZR4(A> z7GYwa(3l^tRbLNiVvrhf6_UKJE1NPxH5$XO3cytb&GOd!6(`J^>PIiDsQ-fGeOluyE^`nxJOk;h>UDD0BbTD;@rcU0`-ZW_BW416uA96FOO7!7~!0O$}48C1cF3-PD6}dECoF z&b}Ta zuuquOS$J(jASCs-b7X7DZ@+`OT;%LRpI?NRaUrAnp{LMNG(t_JaJfh*p?t==13dwF zCjOh+vZosua(69I^L^q|#CLy+9LPK;oH|h#jeK@1@C5b!7cI>VM)d;~mX|o0)8UL) zT3+TdU5{7JTXWSwScL$ztAx2C_^b%CoXmLH$EyZ>g6;JF*xWo|# zp2@dMK%U(@@wylahg>=u!SIN!c6H8<+_0ucg<&w>SJ{9p)-gegcX!AzbJBMy57V0u zHFc%heWk^EV)F4#?H9SP%Gry$H}xaOrEnK?Ws8t;&2s(RY>Dme;w}<7Y+@5gpXz32 z)q%=C*X01CHqdl|4)$w)&z(5AXl7A8*+P$xEiYU{Zqzh0$#R}}CW3?n_hI{mMkbnW zXM`iNtj#HqG1feaa%e3tpNgTd2Z@HO$#x27%Vd2;z`>b9Q-D0@8nt<%J#6cwVKYmc zz88IyFNkADMwL*GtK2D124GLFzLnwPI5Hg7_pKpum$lp%m{SytXV-oX6wyshz$}8# zE<#sdDrBvbzOA^5ccv8UrRVE=`69y;jl< zlE_^B066s31j^(h&cpf@TWAI6!)Iab z1@6sQ#6VW8y;CUd10DH^rF~Y?rHiPNE(=0?ZN)+tKawvB^gGy328$EsK$89$}!!^xz^|a*l;^}au0z{z9gf|k2 z&A{PbJAK>vWLKi8aHS$w#eOEE*MLcBgS(J#p=5`p6A5FEoDCL|%nQ=_z|J2=Hg9=0 zyN7=>;Pn@%E0I7rXJ$PTY;aJo%)K;EA{Nm?S3H~$g()?!dV(=f(P`S7@a+!7bN12u z&j$L4tmbI!QXmHfgnwJu)fzt4yEKw@^p!IqwpN<(n5BP%8op1fU%49qB1}IMkqbCG zkyJr=LKf05=KZg>>!!2t!tx5k9KD+y1{^$+Wju8A*go)?yx-87Tx(&>F zqWZJx5XtJ(!s3b>mECiAmIU+qxQrB58sx|gNrjvsCnCI^?sZT~fFmKh8Tv_}^t{jXt32)-V=_`z5u{Iuzx4hQ zwJKDP$7+;pW_6^GvEvhO0`B$b95TloEg1)LzP{_F>q=DGi52!9w91Nl@?xW3pN8eW z{$aiVt8T~E4+nwrt?ArIYQnWNLNK{OYDq|WO5iM!&IiU#6p8I}{}Z`C&W+>yytQwSKfDHEU4yZii)+N#4`p)Fxf9%N zB;=>!xil8ABzY#v;yrM!WbKgJG$;4Rt8xMJ#^B{6K>qCym`SHYXLS*T;)X$GYgk^V z`oZ*%hQU9O_e*j4RCj;JbMaZ=nyH2KHH~Vg6HW(6XFbp0f1T6Lk2Cj?`}P2NBG7>@ zpV!6X$V|W(K8K^|t~BhsRbmf-Yr85*B70EgDZh?jzIQHFlvtZptcHNwFh<)W-u|09 zj+>=;kf5aD^$+tu)#+S?1D%bzUq`b0iKX`EH^AUu+6i5D!%<$Z4S6Z2+9|Jm_Z2H0 zG9E`vV;d*pT+{N5lI1mxX2jJz*8+ESxnLCm<}ET^0(D)DqwU#6JFA*%W0@R70&q3U zHBON{caxu6%GIDW@J%UdiFU(TQRw*zk&9jA?V0%swdb`-EMfdHYZ~+=e>|jQF{LEq zj~BKaP%wnjC>)oum6`}!ERBMafS@AWNWSmfdF%sq5GMI0@XQV=MlAx5W;h!l`MKOw_ic?ij`56FiREW(%a>JCWJ?t1`yeP zr7UTw**Sl6z7J?64i=S2P?}j^&LA_oT3D41bv>K8u6#lZHMpsp`0QcIaBCkv4r7{6FmPVu1ds(QVP%0*UQ zqJB%Q|4b@UNlT9ORLp2He2_+~sg_N0DXSZVR z>@HV8EB53}W?o);RHeN4JA?uU9_`b0Sj^xqm;eXvSEhDiz?|&oDlD>0cIwy@q9LSK z7lC)NC#mb^)&p@ae;l2h^OI*G_(@!nUMXy%(@c*@ETCAuqO{D7*mx5C7B)vWTWzWd z%;vWqOp#W*d_4S1Xc^}TQmx0$@uor~%T!poH($o7&B$9%3554xdJ$yb*ilp_} zoTnU4@L63|qaNt`E1AVhQbp$F2xWR9G+A9Uj32mkb{qNp?t!>Q-5I{eg(RHtF;Gd> z5QM}1_#64e27_kUx1jW{P`|rKC?)o;4YnjKmT^H#8kbslANRANNJQQG;+XKiSC47K zn-)ZD!M+&bEA=e(G){}<9jzY^lna&#Gm?Cty*#iX2ojQK=S#|+A&_juETIdOQ@#I* zg-}4JneP;pDFkb4?t;Y1j!Abv_m44v(k&s_#`g|lpQz!Hz4kdX+y9xg@!@;_y#z3d z9%d9t%#bBk(vPZI#{}PO8D;&Im%7b=x#Yo1(EZjT4h{+FZ8iE&N`jy>I}0tIvQ9Y79>qs*+YH7|THNhGzU4G0Ac*ync+)jHl1JaR z!!f-jrA8%3U81kA4T6c1m1;t2Rfqw4;ydjP$&lwcKc!-PkNzWGKu9*}_sF&;ZT2q~ zWWzhzV~X=fO3)}r4ERbb`I-DCn$?#-cNMM@98y`_TP9GkDU)YI;)Xy#K>U55ZB6(G zg<|-@O{=rXxoJI~`qPkzby6^?v1J`o|msdF`EN8;p+INNTBrz?!_+Etp>81-bdSnng zrd$yBvj)mH2q4J)D(*aDeksFx^zh-~5`rXKZzQdWC39ird2l_z3UM7JI|_V;(cVPi z3$CIKJTCAGz7&S5eyy&@EPROaE-5R)!pl&2VTcxiFPJDv_$pq@gZ$|p=8t5#PnE_V z1Qs9^saP0u;av9N#TJHHy)3yFi^@M|b{Ku#A?fNfVIvVYcXrJB2wt4W+}BI+7Dg)x zpYnotyLvP4>N8ihAXCdXR&G}*sg%Td)3Pfp?ornq==Z+Rf13XIX)Q^aJc1zT5v)yl z+-zhtU~Ly6ER)ZCS8l)jo9Q(`Wdw|Q#(@f?c>%gfektU7NTi6Zik)W}9L!T!PK~2d z{VrS4wTb498Uzs7o=4#A>9zp(s&UdA>^(xj2%CQaV1ea?j^B+sHbzH`N2oLFgP`DN z*=5~7ab@2kum!SH#a4`L^=hd0Z%anSK8ur`98K0Dh2c}U7C%YhcRq3Z>Wb$tFmBcQRJSMDPd+MP zwtE!XmXmIPo@@)R)RxLmrlXoOU0+?zf`XqDE(1zY1Z#@1I$HBBE1wuo5}dVZ*gGjZ2{Y~4PD3e8o8x2ZuFDF~5I(Y8mo3E8VMkY!VRjhC^(G!W$>0`%td7C9=Z zY0#IVIpg%^YxZj{5SsK5$Wl!oz)VLMFZ&J0zx5>4Q7(*dC;nyl5S1y=M7x+$zTt~_ z0eWGFd|B`n!(PtaXFSV~l(`~6wGzB#Jjq|Kl5MTBWSTQ_#nvz`r6@;!2YUE(u^)J= zlO&!p9+iXBu+?nCUbQ@SS+JMYCaM0bE#}TgD5DSTfy<4n*uPY`*G2~643DCE$fz3A z0R%LDw7XOu2ki*AN9E^+VqNY^pGrmL&o4-ZnhVmXVbPC61u_b=f6uN8)uatX;Zowf zW87-()!U!CF~YXTlkJv2^86t_Tji^{FRgNWhp^RkaWs%WS6Fkvjavzkh57~ch$T$j z;Xp8dVshV)+>pQEdPu7k8n6vD^slurstKep-%)G1xj%ufMD_mLb${-h`Y$#6?Wj9Z zL)?AeMHek?@lJLKRn>ER0sK{^@SdtZqDnGY$A4;=wZ~tLO+Cy;m->7kFf1EmHJgCm z?Tml^Z^yUqtMwHgeEhf1xRal6=e=(%ZDv^$n#K+#LdYSenW6?=#hS;w-uOR?t}-mD zE(p_|(kbQA2rMnNG|Ea#NDE7sbW2Kyh_Xv}NQbg?ce8-fozf+x-~IlbXP>=y_nv#s z%scPAGv`qnKOstw^&}nyE8|~j0H-z^wBx0oaIc6s{gwU9?k_5=-6VOs-uT1*&N_#G zskefZ$w*ae&E;`Oi}?n8K|cyC zJOWoZ&y0s{5m7ULLL_bsb_}x>pqkGP#aBAXUj-6~;ya{oYoj4AjAc+H~Y-7ze zYj?D~1ceoASm8j&p%t=sOHF6UmOcd9^qtBNZN%S%N<)u8;eG}@D+za}K15IV*!A4{ z<=9c_t7Ngi7gXkWg!(|U?>iZ*i?mvb^fLO`qo|`C2TB3JIB(6=9Ti^ zSA18jF=9@~*zX0*5FGU@%6u2u$Ko*P9}LOuQRy}y*h=E0kmG!u&`!!7Ng?(VKPNz* zTS1>;8#0FW*G!kHCQE*?Y45HW&n8_?(0Xm#E%1Y_L&;9yREBNKYb%35bhhUsl5jL` z9~d?|toEqV8YK=CP(u<&*kuMT)MmX=?0duM4|mx+(!t6I38Rz_k{5m0)b?!TE9U=} z9avF%7D=veRp@g}3*iz&vx7LaY1IxqYQp57f<4)uI0#S|WRlaM4O*hu_6Q_7>l@z| z*Q@e}u?>YE=bx+RxuV$ARu}oQG*|rO2t>#99lvL1?mX=%*8<0W&9>GdwFQ{J){Goh zZSN)9VD~&wOxlaPFx)Qi#SomatPi6&@>Yfe_C1Kd2?)7Rb!Y+{R!fg`YPBp1+?v{ zhlYF4eh5hcU9DYFZMbzrAPCXowo$0;m!(L-{c^UWUiU3hF&ZvFaG)F|p8{*`70rI< z%taB2FqwLjnIY!M0&s3tE=3aJgFGA}^xao=zACKRc4AwhLcbr|-7^L%d{gUkfUfsQ z?G$sKy+J{71-@Ie^=|0QRCvT`ThIh-YUl4f+8Ei%4OCMx@CgdzHtAMx3KoqGL$hK` zpIk|f1>1~Y*_7GM#6UDLbDXylco&umk{wu);F1>(Pdxo3(Z{l$TZ?_ohn_Q*veOXW z@J%UaoP5793UU6NDw7eJ(VxQfjjcD6&`IDmEQ~wm+ZeEzxfQbCNI5NVmT@iUnFp;` z?f0eK6j-D(iJ-*NW-Xpgf46<=wM z`0pxlqBJDRjIr_cGm)_{s|fY`6b}k}5N)^IaD0>ZZF#Ykg{0)^i+{IWeHl5a!-HKG z6H*4PNXLoM6D9ZEQ0|q7OVr9{Orw~l1^F&>s-zcvGybh!YUta_C+HMGc_8+D8VV@d zp+Aa)%k&d@{dd9?<5Hwr-y&{PFbB$7Y5xuUV@{%)N9es8E%@5cuc^GkDzL*bTvp9xh&@C;~D$l2M+-_Au5cu|DRGe*vRwHWzN?d&`cW|h6} zIwn%2jEJ_cgBWnx5CR_^zs6{(jbzEE$6Bvljbi-F^+U#dRwFknoS^0O69Z|dlQ`eV}7(^M`koFmKV)m?;9lCVWvo+_$CA~ zGxD{=bK|)3^+lZO0)g40JJY9i_WMC7oIB^h5 zKcxS;F#q+>thLFR=Ewt;*MN2g3kP8qIx)lVcX^=Ac(g+*Ljjs^NC`hX)8;)}l1(rC z?wb~{#S!_UG9s4IlO3bg_DVJbUzm`DjXWczupTZ?w~Jj=DR&MX!=kcB2C(gj9z0RH zW;6hWy;H5qiy4%ljOBVNoU+3j@5pv-NXrHdPj%{#8?E2&&iF{@T1~P4Z-^mKlvJ@T zhD=|jCK7>1+~EWF)1(8zA`vlppn}xTNb@`xM#aD13z=U4Qe%sgD?~}y7)U{#J{~)& zNKX`AI|wwajmCdlz3nsb=n{_9Lx%0Al8Vx$q=pVBob4`T#A}Q*Sz<0BuY6J=!988( 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�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